diff -Nru cfitsio-3.470/cfileio.c cfitsio-4.0.0/cfileio.c --- cfitsio-3.470/cfileio.c 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/cfileio.c 2021-05-20 01:18:54.000000000 +0000 @@ -54,6 +54,7 @@ static int find_paren(char **string); static int find_bracket(char **string); static int find_curlybracket(char **string); +static int standardize_path(char *fullpath, int *status); int comma2semicolon(char *string); #ifdef _REENTRANT @@ -278,6 +279,7 @@ ((*fptr)->Fptr)->curbuf = -1; /* undefined current IO buffer */ ((*fptr)->Fptr)->open_count = 1; /* structure is currently used once */ ((*fptr)->Fptr)->validcode = VALIDSTRUC; /* flag denoting valid structure */ + ((*fptr)->Fptr)->noextsyntax = 0; /* extended syntax can be used in filename */ ffldrc(*fptr, 0, REPORT_EOF, status); /* load first record */ @@ -414,7 +416,7 @@ none are found, then simply move to the 2nd extension. */ { - int hdunum, naxis, thdutype, gotext=0; + int hdunum, naxis = 0, thdutype, gotext=0; char *ext, *textlist; char *saveptr; @@ -424,11 +426,15 @@ if (ffopen(fptr, name, mode, status) > 0) return(*status); - fits_get_hdu_num(*fptr, &hdunum); - fits_get_img_dim(*fptr, &naxis, status); + fits_get_hdu_num(*fptr, &hdunum); + fits_get_hdu_type(*fptr, &thdutype, status); + if (hdunum == 1 && thdutype == IMAGE_HDU) { + fits_get_img_dim(*fptr, &naxis, status); + } + /* We are in the "default" primary extension */ + /* look through the extension list */ if( (hdunum == 1) && (naxis == 0) ){ - /* look through the extension list */ if( extlist ){ gotext = 0; textlist = malloc(strlen(extlist) + 1); @@ -455,7 +461,9 @@ fits_movabs_hdu(*fptr, 2, &thdutype, status); } } - fits_get_hdu_type(*fptr, hdutype, status); + if (hdutype) { + fits_get_hdu_type(*fptr, hdutype, status); + } return(*status); } /*--------------------------------------------------------------------------*/ @@ -724,7 +732,7 @@ FFLOCK; if (fits_already_open(fptr, url, urltype, infile, extspec, rowfilter, - binspec, colspec, mode, &isopen, status) > 0) + binspec, colspec, mode, open_disk_file, &isopen, status) > 0) { FFUNLOCK; return(*status); @@ -902,6 +910,7 @@ ((*fptr)->Fptr)->open_count = 1; /* structure is currently used once */ ((*fptr)->Fptr)->validcode = VALIDSTRUC; /* flag denoting valid structure */ ((*fptr)->Fptr)->only_one = only_one; /* flag denoting only copy single extension */ + ((*fptr)->Fptr)->noextsyntax = open_disk_file; /* true if extended syntax is disabled */ ffldrc(*fptr, 0, REPORT_EOF, status); /* load first record */ @@ -1092,7 +1101,7 @@ if (rownum == 0) { - ffpmsg("row statisfying this expression doesn't exist::"); + ffpmsg("row satisfying this expression doesn't exist::"); ffpmsg(rowexpress); ffpmsg("Could not open the following image in a table cell:"); ffpmsg(extspec); @@ -1461,6 +1470,7 @@ char *binspec, char *colspec, int mode, /* I - 0 = open readonly; 1 = read/write */ + int noextsyn, /* I - 0 = ext syntax may be used; 1 = ext syntax disabled */ int *isopen, /* O - 1 = file is already open */ int *status) /* IO - error status */ /* @@ -1483,7 +1493,7 @@ */ { FITSfile *oldFptr; - int ii; + int ii, iMatch=-1; char oldurltype[MAX_PREFIX_LEN], oldinfile[FLEN_FILENAME]; char oldextspec[FLEN_FILENAME], oldoutfile[FLEN_FILENAME]; char oldrowfilter[FLEN_FILENAME]; @@ -1491,7 +1501,7 @@ char cwd[FLEN_FILENAME]; char tmpStr[FLEN_FILENAME]; char tmpinfile[FLEN_FILENAME]; - + *isopen = 0; /* When opening a file with readonly access then we simply let @@ -1506,130 +1516,180 @@ if (mode == 0) return(*status); + strcpy(tmpinfile, infile); if(fits_strcasecmp(urltype,"FILE://") == 0) - { - if (fits_path2url(infile,FLEN_FILENAME,tmpinfile,status)) - return (*status); - - if(tmpinfile[0] != '/') - { - fits_get_cwd(cwd,status); - strcat(cwd,"/"); - - if (strlen(cwd) + strlen(tmpinfile) > FLEN_FILENAME-1) { - ffpmsg("File name is too long. (fits_already_open)"); - return(*status = FILE_NOT_OPENED); - } - - strcat(cwd,tmpinfile); - fits_clean_url(cwd,tmpinfile,status); - } - } - else - strcpy(tmpinfile,infile); + { + if (standardize_path(tmpinfile, status)) + return(*status); + } for (ii = 0; ii < NMAXFILES; ii++) /* check every buffer */ { if (FptrTable[ii] != 0) { oldFptr = FptrTable[ii]; - - fits_parse_input_url(oldFptr->filename, oldurltype, - oldinfile, oldoutfile, oldextspec, oldrowfilter, - oldbinspec, oldcolspec, status); - - if (*status > 0) + + if (oldFptr->noextsyntax) { - ffpmsg("could not parse the previously opened filename: (ffopen)"); - ffpmsg(oldFptr->filename); - return(*status); - } - - if(fits_strcasecmp(oldurltype,"FILE://") == 0) + /* old urltype must be "file://" */ + if (fits_strcasecmp(urltype,"FILE://") == 0) { - if(fits_path2url(oldinfile,FLEN_FILENAME,tmpStr,status)) - return(*status); - - if(tmpStr[0] != '/') - { - fits_get_cwd(cwd,status); - strcat(cwd,"/"); - + /* compare tmpinfile to adjusted oldFptr->filename */ + + /* This shouldn't be possible, but check anyway */ + if (strlen(oldFptr->filename) > FLEN_FILENAME-1) + { + ffpmsg("Name of old file is too long. (fits_already_open)"); + return (*status = FILE_NOT_OPENED); + } + strcpy(oldinfile, oldFptr->filename); + if (standardize_path(oldinfile, status)) + return(*status); + + if (!strcmp(tmpinfile, oldinfile)) + { + /* if infile is not noextsyn, must check that it is not + using filters of any kind */ + if (noextsyn || (!rowfilter[0] && !binspec[0] && !colspec[0])) + { + if (mode == READWRITE && oldFptr->writemode == READONLY) + { + /* + cannot assume that a file previously opened with READONLY + can now be written to (e.g., files on CDROM, or over the + the network, or STDIN), so return with an error. + */ + + ffpmsg( + "cannot reopen file READWRITE when previously opened READONLY"); + ffpmsg(url); + return(*status = FILE_NOT_OPENED); + } + iMatch = ii; + } + } + } + } /* end if old file has disabled extended syntax */ + else + { + fits_parse_input_url(oldFptr->filename, oldurltype, + oldinfile, oldoutfile, oldextspec, oldrowfilter, + oldbinspec, oldcolspec, status); - strcat(cwd,tmpStr); - fits_clean_url(cwd,tmpStr,status); - } + if (*status > 0) + { + ffpmsg("could not parse the previously opened filename: (ffopen)"); + ffpmsg(oldFptr->filename); + return(*status); + } + + if(fits_strcasecmp(oldurltype,"FILE://") == 0) + { + if (standardize_path(oldinfile, status)) + return(*status); + } - strcpy(oldinfile,tmpStr); - } + if (!strcmp(urltype, oldurltype) && !strcmp(tmpinfile, oldinfile) ) + { + /* identical type of file and root file name */ - if (!strcmp(urltype, oldurltype) && !strcmp(tmpinfile, oldinfile) ) - { - /* identical type of file and root file name */ + if ( (!rowfilter[0] && !oldrowfilter[0] && + !binspec[0] && !oldbinspec[0] && + !colspec[0] && !oldcolspec[0]) - if ( (!rowfilter[0] && !oldrowfilter[0] && - !binspec[0] && !oldbinspec[0] && - !colspec[0] && !oldcolspec[0]) + /* no filtering or binning specs for either file, so */ + /* this is a case where the same file is being reopened. */ + /* It doesn't matter if the extensions are different */ - /* no filtering or binning specs for either file, so */ - /* this is a case where the same file is being reopened. */ - /* It doesn't matter if the extensions are different */ + || /* or */ - || /* or */ + (!strcmp(rowfilter, oldrowfilter) && + !strcmp(binspec, oldbinspec) && + !strcmp(colspec, oldcolspec) && + !strcmp(extspec, oldextspec) ) ) - (!strcmp(rowfilter, oldrowfilter) && - !strcmp(binspec, oldbinspec) && - !strcmp(colspec, oldcolspec) && - !strcmp(extspec, oldextspec) ) ) + /* filtering specs are given and are identical, and */ + /* the same extension is specified */ - /* filtering specs are given and are identical, and */ - /* the same extension is specified */ + { + if (mode == READWRITE && oldFptr->writemode == READONLY) + { + /* + cannot assume that a file previously opened with READONLY + can now be written to (e.g., files on CDROM, or over the + the network, or STDIN), so return with an error. + */ + + ffpmsg( + "cannot reopen file READWRITE when previously opened READONLY"); + ffpmsg(url); + return(*status = FILE_NOT_OPENED); + } + iMatch = ii; - { - if (mode == READWRITE && oldFptr->writemode == READONLY) - { - /* - cannot assume that a file previously opened with READONLY - can now be written to (e.g., files on CDROM, or over the - the network, or STDIN), so return with an error. - */ - - ffpmsg( - "cannot reopen file READWRITE when previously opened READONLY"); - ffpmsg(url); - return(*status = FILE_NOT_OPENED); } + } + } /* end if old file recognizes extended syntax */ + } /* end if old fptr exists */ + } /* end loop over NMAXFILES */ + if (iMatch >= 0) + { + oldFptr = FptrTable[iMatch]; + *fptr = (fitsfile *) calloc(1, sizeof(fitsfile)); - *fptr = (fitsfile *) calloc(1, sizeof(fitsfile)); - - if (!(*fptr)) - { - ffpmsg( - "failed to allocate structure for following file: (ffopen)"); - ffpmsg(url); - return(*status = MEMORY_ALLOCATION); - } + if (!(*fptr)) + { + ffpmsg( + "failed to allocate structure for following file: (ffopen)"); + ffpmsg(url); + return(*status = MEMORY_ALLOCATION); + } - (*fptr)->Fptr = oldFptr; /* point to the structure */ - (*fptr)->HDUposition = 0; /* set initial position */ - (((*fptr)->Fptr)->open_count)++; /* increment usage counter */ - - if (binspec[0]) /* if binning specified, don't move */ - extspec[0] = '\0'; - - /* all the filtering has already been applied, so ignore */ - rowfilter[0] = '\0'; - binspec[0] = '\0'; - colspec[0] = '\0'; + (*fptr)->Fptr = oldFptr; /* point to the structure */ + (*fptr)->HDUposition = 0; /* set initial position */ + (((*fptr)->Fptr)->open_count)++; /* increment usage counter */ + + if (binspec[0]) /* if binning specified, don't move */ + extspec[0] = '\0'; + + /* all the filtering has already been applied, so ignore */ + rowfilter[0] = '\0'; + binspec[0] = '\0'; + colspec[0] = '\0'; - *isopen = 1; - } - } - } + *isopen = 1; } return(*status); } /*--------------------------------------------------------------------------*/ +int standardize_path(char *fullpath, int* status) +{ + /* Utility function for common operation in fits_already_open + fullpath: I/O string to be standardized. Assume len = FLEN_FILENAME */ + + char tmpPath[FLEN_FILENAME]; + char cwd [FLEN_FILENAME]; + + if (fits_path2url(fullpath, FLEN_FILENAME, tmpPath, status)) + return(*status); + + if (tmpPath[0] != '/') + { + fits_get_cwd(cwd,status); + if (strlen(cwd) + strlen(tmpPath) + 1 > FLEN_FILENAME-1) { + ffpmsg("Tile name is too long. (standardize_path)"); + return(*status = FILE_NOT_OPENED); + } + strcat(cwd,"/"); + strcat(cwd,tmpPath); + fits_clean_url(cwd,tmpPath,status); + } + + strcpy(fullpath, tmpPath); + + return (*status); +} +/*--------------------------------------------------------------------------*/ int fits_is_this_a_copy(char *urltype) /* I - type of file */ /* specialized routine that returns 1 if the file is known to be a temporary @@ -2021,9 +2081,11 @@ Note no leading '#' */ } else if (clause1[0] && clause1[0] != '#' && - ffgcno(*fptr, CASEINSEN, clause1, &colnum, status) <= 0) + ((ffgcno(*fptr, CASEINSEN, clause1, &colnum, status) <= 0) || + *status == COL_NOT_UNIQUE)) { /* a column with this name exists, so try to delete it */ + *status = 0; /* Clear potential status=COL_NOT_UNIQUE */ if (ffdcol(*fptr, colnum, status) > 0) { ffpmsg("failed to delete column in input file:"); @@ -2241,7 +2303,7 @@ /* look for matching column */ ffgcno(*fptr, CASEINSEN, colname, &testnum, status); - + while (*status == COL_NOT_UNIQUE) { /* the column name contained wild cards, and it */ @@ -4107,6 +4169,7 @@ ((*fptr)->Fptr)->curbuf = -1; /* undefined current IO buffer */ ((*fptr)->Fptr)->open_count = 1; /* structure is currently used once */ ((*fptr)->Fptr)->validcode = VALIDSTRUC; /* flag denoting valid structure */ + ((*fptr)->Fptr)->noextsyntax = create_disk_file; /* true if extended syntax is disabled */ ffldrc(*fptr, 0, IGNORE_EOF, status); /* initialize first record */ @@ -4258,6 +4321,7 @@ ((*fptr)->Fptr)->curbuf = -1; /* undefined current IO buffer */ ((*fptr)->Fptr)->open_count = 1; /* structure is currently used once */ ((*fptr)->Fptr)->validcode = VALIDSTRUC; /* flag denoting valid structure */ + ((*fptr)->Fptr)->noextsyntax = 0; /* extended syntax can be used in filename */ ffldrc(*fptr, 0, IGNORE_EOF, status); /* initialize first record */ fits_store_Fptr( (*fptr)->Fptr, status); /* store Fptr address */ @@ -5336,7 +5400,6 @@ int hasAt, hasDot, hasOper, followingOper, spaceTerm, rowFilter; int colStart, binStart, pixStart, compStart; - /* must have temporary variable for these, in case inputs are NULL */ char *infile; char *rowfilter; @@ -5529,6 +5592,20 @@ ptr2 = strchr(tmptr, '('); /* search for opening parenthesis ( */ ptr3 = strchr(tmptr, '['); /* search for opening bracket [ */ + if (ptr2) + { + ptr4 = strchr(ptr2, ')'); /* search for closing parenthesis ) */ + while (ptr4 && ptr2) + { + do { + ++ptr4; + } while (*ptr4 == ' '); /* find next non-blank char after ')' */ + if (*ptr4 == 0 || *ptr4 == '[') + break; + ptr2 = strchr(ptr2+1, '('); + ptr4 = strchr(ptr4, ')'); + } + } if (ptr2 == ptr3) /* simple case: no [ or ( in the file name */ { @@ -6082,11 +6159,17 @@ ptr1 = strstr(rowfilter, "[Col "); } - if (ptr1) - { /* find the end of the column specifier */ + hasAt = 0; + while (ptr1) { + + /* find the end of the column specifier */ ptr2 = ptr1 + 5; - while (*ptr2 != ']') - { + /* Scan past any whitespace and check for @filename */ + while (*ptr2 == ' ') ptr2++; + if (*ptr2 == '@') hasAt = 1; + + while (*ptr2 != ']') { + if (*ptr2 == '\0') { ffpmsg("input file URL is missing closing bracket ']'"); @@ -6123,16 +6206,32 @@ collen = ptr2 - ptr1 - 1; - if (colspec) /* copy the column specifier to output string */ - { - if (collen > FLEN_FILENAME - 1) { - free(infile); - return(*status = URL_PARSE_ERROR); + if (colspec) { /* copy the column specifier to output string */ + + if (collen + strlen(colspec) > FLEN_FILENAME - 1) { + free(infile); + return(*status = URL_PARSE_ERROR); } + + if (*colspec == 0) { + strncpy(colspec, ptr1 + 1, collen); + colspec[collen] = '\0'; + } else { /* Pre-existing colspec, append with ";" */ + strcat(colspec, ";"); + strncat(colspec, ptr1 + 5, collen-4); + /* Note that strncat always null-terminates the destination string */ + + /* Special error checking here. We can't allow there to be a + col @filename.txt includes if there are multiple col expressions */ + if (hasAt) { + ffpmsg("input URL multiple column filter cannot use @filename.txt"); + free(infile); + return(*status = URL_PARSE_ERROR); + } - strncpy(colspec, ptr1 + 1, collen); - colspec[collen] = '\0'; - + } + + collen = strlen(colspec); while (colspec[--collen] == ' ') colspec[collen] = '\0'; /* strip trailing blanks */ } @@ -6140,6 +6239,11 @@ /* delete the column selection spec from the row filter string */ strcpy(tmpstr, ptr2 + 1); /* copy any chars after the colspec */ strcpy(ptr1, tmpstr); /* overwrite binspec */ + + /* Check for additional column specifiers */ + ptr1 = strstr(rowfilter, "[col "); + if (!ptr1) ptr1 = strstr(rowfilter, "[COL "); + if (!ptr1) ptr1 = strstr(rowfilter, "[Col "); } /* --------------------------------------------------------- */ @@ -6283,17 +6387,75 @@ /* contain a rowfilter expression of the form "[expr]" */ if (rowfilterx && rowfilter[0]) { - ptr2 = rowfilter + strlen(rowfilter) - 1; - if( rowfilter[0]=='[' && *ptr2==']' ) { - *ptr2 = '\0'; + hasAt = 0; - if (strlen(rowfilter + 1) > FLEN_FILENAME - 1) - { - free(infile); - return(*status = URL_PARSE_ERROR); - } + /* Check for multiple expressions, which would appear as "[expr][expr]..." */ + ptr1 = rowfilter; + while((*ptr1 == '[') && (ptr2 = strstr(rowfilter,"]["))-ptr1 > 2) { + /* Advance past any white space */ + ptr3 = ptr1+1; + while (*ptr3 == ' ') ptr3++; + /* Check for @filename.txt */ + if (*ptr3 == '@') hasAt = 1; + + /* Add expression of the form "((expr))&&", note the addition of 6 characters */ + if ((strlen(rowfilterx) + (ptr2-ptr1) + 6) > FLEN_FILENAME - 1) { + free(infile); + return (*status = URL_PARSE_ERROR); + } + + /* Special error checking here. We can't allow there to be a + @filename.txt includes if there are multiple row expressions */ + if (*rowfilterx && hasAt) { + ffpmsg("input URL multiple row filter cannot use @filename.txt"); + free(infile); + return(*status = URL_PARSE_ERROR); + } + + /* Append the expression */ + strcat(rowfilterx, "(("); + strncat(rowfilterx, ptr1+1, (ptr2-ptr1-1)); + /* Note that strncat always null-terminates the destination string */ + strcat(rowfilterx, "))&&"); + + /* Advance to next expression */ + ptr1 = ptr2 + 1; + } + + /* At final iteration, ptr1 points to beginning [ and ptr2 to ending ] */ + ptr2 = rowfilter + strlen(rowfilter) - 1; + if( *ptr1=='[' && *ptr2==']' ) { + /* Check for @include in final position */ + ptr3 = ptr1 + 1; + while (*ptr3 == ' ') ptr3++; + if (*ptr3 == '@') hasAt = 1; + + /* Check for overflow; add extra 4 characters if we have pre-existing expression */ + if (strlen(rowfilterx) + (ptr2-ptr1 + (*rowfilterx)?4:0) > FLEN_FILENAME - 1) { + free(infile); + return(*status = URL_PARSE_ERROR); + } + + /* Special error checking here. We can't allow there to be a + @filename.txt includes if there are multiple row expressions */ + if (*rowfilterx && hasAt) { + ffpmsg("input URL multiple row filter cannot use @filename.txt"); + free(infile); + return(*status = URL_PARSE_ERROR); + } + + if (*rowfilterx) { + /* A pre-existing row filter: we bracket by ((expr)) to be sure */ + strcat(rowfilterx, "(("); + strncat(rowfilterx, ptr1+1, (ptr2-ptr1-1)); + strcat(rowfilterx, "))"); + + } else { + /* We have only one filter, so just copy the expression alone. + This will be the most typical case */ + strncat(rowfilterx, ptr1+1, (ptr2-ptr1-1)); + } - strcpy(rowfilterx, rowfilter+1); } else { ffpmsg("input file URL lacks valid row filter expression"); *status = URL_PARSE_ERROR; @@ -6370,7 +6532,7 @@ { int ii, jj, slen, infilelen; - char *ptr1, *ptr2, *ptr3; + char *ptr1, *ptr2, *ptr3, *ptr4; char urltype[MAX_PREFIX_LEN]; char infile[FLEN_FILENAME]; @@ -6452,6 +6614,20 @@ /* get the input file name */ ptr2 = strchr(ptr1, '('); /* search for opening parenthesis ( */ ptr3 = strchr(ptr1, '['); /* search for opening bracket [ */ + if (ptr2) + { + ptr4 = strchr(ptr2, ')'); + while (ptr4 && ptr2) + { + do { + ++ptr4; + } while (*ptr4 == ' '); + if (*ptr4 == 0 || *ptr4 == '[') + break; + ptr2 = strchr(ptr2+1, '('); + ptr4 = strchr(ptr4, ')'); + } + } if (ptr2 == ptr3) /* simple case: no [ or ( in the file name */ { @@ -6897,7 +7073,7 @@ ptr1 = strchr(ptr2, ')'); - if (!ptr2) + if (!ptr1) { ffpmsg("illegal specification of image in table cell in input URL:"); ffpmsg(" missing closing ')' character in row expression"); diff -Nru cfitsio-3.470/cfitsio.pc.cmake cfitsio-4.0.0/cfitsio.pc.cmake --- cfitsio-3.470/cfitsio.pc.cmake 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/cfitsio.pc.cmake 2021-05-20 01:18:54.000000000 +0000 @@ -1,12 +1,12 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@PKG_CONFIG_LIBDIR@ +libdir=@LIB_DESTINATION@ includedir=@INCLUDE_INSTALL_DIR@ Name: cfitsio Description: FITS File Subroutine Library URL: https://heasarc.gsfc.nasa.gov/fitsio/ -Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@ +Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@.@CFITSIO_MICRO@ Libs: -L${libdir} @PKG_CONFIG_LIBS@ Libs.private: -lm Cflags: -I${includedir} diff -Nru cfitsio-3.470/cfitsio.pc.in cfitsio-4.0.0/cfitsio.pc.in --- cfitsio-3.470/cfitsio.pc.in 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/cfitsio.pc.in 2021-05-20 01:18:54.000000000 +0000 @@ -6,7 +6,7 @@ Name: cfitsio Description: FITS File Subroutine Library URL: https://heasarc.gsfc.nasa.gov/fitsio/ -Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@ -Libs: -L${libdir} -lcfitsio @LIBS@ -Libs.private: -lm +Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@.@CFITSIO_MICRO@ +Libs: -L${libdir} -lcfitsio +Libs.private: -lm @LIBS@ Cflags: -I${includedir} diff -Nru cfitsio-3.470/cfortran.h cfitsio-4.0.0/cfortran.h --- cfitsio-3.470/cfortran.h 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/cfortran.h 2021-05-20 01:18:54.000000000 +0000 @@ -52,8 +52,17 @@ get rid of compiler warnings. Thanks to ROOT developers Jacek Holeczek and Rene Brun for these suggestions. (KMCCARTY) Dec 2008 Added typedef for LONGLONG to support Borland compiler (WDP) + Jan 2020 Added __attribute__((unused)) for GCC to prevent warnings (C. Markwardt) *******/ +#ifndef __CFORTRAN__PCTYPE__UNUSED__ +#ifdef __GNUC__ +#define __CFORTRAN__PCTYPE__UNUSED__ __attribute__ ((unused)) +#else +#define __CFORTRAN__PCTYPE__UNUSED__ +#endif +#endif + /* Avoid symbols already used by compilers and system *.h: __ - OSF1 zukal06 V3.0 347 alpha, cc -c -std1 cfortest.c @@ -704,11 +713,11 @@ /* This allows Pvariables for ARGS. ARGF machinery is above ARGFP. * B is not needed because the variable may be changed by the Fortran routine, * but because B is the only way to access an arbitrary macro argument. */ -#define PINT_cfVP(A,B) int B = (int)A; /* For ZSTRINGV_ARGS */ +#define PINT_cfVP(A,B) int B __CFORTRAN__PCTYPE__UNUSED__ = (int)A; /* For ZSTRINGV_ARGS */ #else #define PINT_cfVP(A,B) #endif -#define PLOGICAL_cfVP(A,B) int *B; /* Returning LOGICAL in FUNn and SUBn */ +#define PLOGICAL_cfVP(A,B) int *B __CFORTRAN__PCTYPE__UNUSED__ ; /* Returning LOGICAL in FUNn and SUBn */ #define PLONG_cfVP(A,B) PINT_cfVP(A,B) #define PSHORT_cfVP(A,B) PINT_cfVP(A,B) @@ -2521,5 +2530,4 @@ #endif - #endif /* __CFORTRAN_LOADED */ diff -Nru cfitsio-3.470/CMakeLists.txt cfitsio-4.0.0/CMakeLists.txt --- cfitsio-3.470/CMakeLists.txt 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/CMakeLists.txt 2021-05-20 01:18:54.000000000 +0000 @@ -1,10 +1,30 @@ +#============================================================================== # CFITSIO CMakeLists.txt +#============================================================================== + +# Ensure that build directory is not the source directory: +IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR + "Please create a separate directory for building CFITSIO." + ) +ENDIF() + +CMAKE_MINIMUM_REQUIRED(VERSION 3.1) # Suppress warning about WIN32 no longer being defined on Cygwin: SET(CMAKE_LEGACY_CYGWIN_WIN32 0) -PROJECT(CFITSIO) -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0) +PROJECT(CFITSIO + DESCRIPTION "Library of C and Fortran subroutines for reading and writing data files in FITS data format." + LANGUAGES C CXX + ) + +# Define project version +SET(${PROJECT_NAME}_MAJOR_VERSION 4) +SET(${PROJECT_NAME}_MINOR_VERSION 0) +SET(${PROJECT_NAME}_MICRO_VERSION 0) +SET(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_MICRO_VERSION}) +SET(LIB_NAME cfitsio) # Allow @rpath token in target install name on Macs. # See "cmake --help-policy CMP0042" for more information. @@ -12,24 +32,98 @@ CMAKE_POLICY(SET CMP0042 NEW) ENDIF() -INCLUDE (${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake) -INCLUDE (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake) +INCLUDE(CheckLibraryExists) +INCLUDE(CheckFunctionExists) +INCLUDE(CheckSymbolExists) +INCLUDE(CheckCSourceCompiles) + +#============================================================================== +# Build options: +#============================================================================== # Allow the developer to select if Dynamic or Static libraries are built -OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" ON) -OPTION (USE_PTHREADS "Thread-safe build (using pthreads)" OFF) +OPTION(BUILD_SHARED_LIBS "Build Shared Libraries" ON) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}") -set (LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}") -set (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/") +# Allow curl dependency to be disabled with "-DUSE_CURL=OFF": +OPTION(USE_CURL "USE_CURL" ON) -# Define project version -SET(${PROJECT_NAME}_MAJOR_VERSION 3) -SET(${PROJECT_NAME}_MINOR_VERSION 47) -SET(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}) -SET(LIB_NAME cfitsio) +OPTION(USE_PTHREADS "Thread-safe build (using pthreads)" OFF) + +OPTION(TESTS "Build test programs Testprog and cookbook" OFF) + +OPTION(UTILS "Build FPack, Funpack, and Fitscopy executables" OFF) + +OPTION(CFITSIO_USE_SSE2 "Enable use of instructions in the SSE2 extended instruction set" OFF) + +OPTION(CFITSIO_USE_SSSE3 "Enable use of instructions in the SSSE3 extended instruction set" OFF) + +IF(NOT WIN32) + OPTION(CFITSIO_USE_BZIP2 "Enable bzip2 support" OFF) +ENDIF() + +#============================================================================== + +FIND_PACKAGE(ZLIB REQUIRED) + +IF(BUILD_SHARED_LIBS) + SET (LIB_TYPE SHARED) +ELSE() + SET (LIB_TYPE STATIC) +ENDIF(BUILD_SHARED_LIBS) + +IF(NOT MSVC) + # Find curl library, for HTTPS support: + IF(USE_CURL) + FIND_PACKAGE(CURL) + IF(CURL_FOUND) + ADD_DEFINITIONS(-DCFITSIO_HAVE_CURL) + ENDIF() + ENDIF() +ENDIF(NOT MSVC) + +IF(USE_PTHREADS) + FIND_PACKAGE(Threads REQUIRED) + ADD_DEFINITIONS(-D_REENTRANT) +ENDIF(USE_PTHREADS) + +IF(CFITSIO_USE_BZIP2) + FIND_PACKAGE(BZip2 REQUIRED) + ADD_DEFINITIONS(-DHAVE_BZIP2=1) +ENDIF(CFITSIO_USE_BZIP2) + +# Math library (not available in MSVC or MINGW) +IF(MSVC OR MINGW) + SET(M_LIB "") +ELSE() + FIND_LIBRARY(M_LIB m) +ENDIF() + +# Support for remote file drivers is not implemented for native Windows: +IF (NOT MSVC) + + # Find library needed for gethostbyname: + CHECK_FUNCTION_EXISTS("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME) + IF (NOT CMAKE_HAVE_GETHOSTBYNAME) + CHECK_LIBRARY_EXISTS("nsl" "gethostbyname" "" CMAKE_HAVE_GETHOSTBYNAME) + ENDIF () + + # Find library needed for connect: + CHECK_FUNCTION_EXISTS("connect" CMAKE_HAVE_CONNECT) + IF (NOT CMAKE_HAVE_CONNECT) + CHECK_LIBRARY_EXISTS("socket" "connect" "" CMAKE_HAVE_CONNECT) + ENDIF () + + # Define HAVE_NET_SERVICES if gethostbyname & connect were found: + IF (CMAKE_HAVE_GETHOSTBYNAME AND CMAKE_HAVE_CONNECT) + ADD_DEFINITIONS(-DHAVE_NET_SERVICES) + CHECK_SYMBOL_EXISTS(fmemopen "stdio.h" HAVE_FMEMOPEN) + IF(HAVE_FMEMOPEN) + ADD_DEFINITIONS(-DHAVE_FMEMOPEN) + ENDIF() + ENDIF() + +ENDIF() -# Microsoft Visual Studio: IF(MSVC OR BORLAND) # Define ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE) @@ -47,59 +141,92 @@ ADD_DEFINITIONS(-w-csu) ENDIF() -#add_subdirectory (src) - -SET (LIB_TYPE STATIC) -IF (BUILD_SHARED_LIBS) - SET (LIB_TYPE SHARED) -ENDIF (BUILD_SHARED_LIBS) - - -FILE(GLOB H_FILES "*.h") +IF(CFITSIO_USE_SSE2) + IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + ADD_COMPILE_OPTIONS(-msse2) + ENDIF() + IF(MSVC) + ADD_DEFINITIONS(-D__SSE2__=1) + ENDIF() +ENDIF() -IF (USE_PTHREADS) - FIND_PACKAGE(pthreads REQUIRED) - INCLUDE_DIRECTORIES(${PTHREADS_INCLUDE_DIR}) - ADD_DEFINITIONS(-D_REENTRANT) +IF(CFITSIO_USE_SSSE3) + IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + ADD_COMPILE_OPTIONS(-mssse3) + ENDIF() + IF(MSVC) + ADD_DEFINITIONS(-D__SSE2__=1 -D__SSSE3__=1) + ENDIF() ENDIF() -# Math library (not available in MSVC or MINGW) -IF (MSVC OR MINGW) - SET(M_LIB "") -ELSE() - FIND_LIBRARY(M_LIB m) +# Test for the unix ftruncate function +CHECK_SYMBOL_EXISTS(ftruncate "unistd.h" HAVE_FTRUNCATE) +IF(HAVE_FTRUNCATE) + ADD_DEFINITIONS(-DHAVE_UNISTD_H -DHAVE_FTRUNCATE) ENDIF() -# Support for remote file drivers is not implemented for native Windows: -IF (NOT MSVC) - # Find library needed for gethostbyname: - CHECK_FUNCTION_EXISTS("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME) - IF(NOT CMAKE_HAVE_GETHOSTBYNAME) - CHECK_LIBRARY_EXISTS("nsl" "gethostbyname" "" CMAKE_HAVE_GETHOSTBYNAME) +# Check is System V IPC is supported on this machine +CHECK_C_SOURCE_COMPILES(" +#include +#include +#include +int main() { + shmat(0,0,0); + shmdt(0); + shmget(0, 0, 0); + semget(0, 0, 0); + return 0; +}" HAVE_SHMEM_SERVICES) +IF(HAVE_SHMEM_SERVICES) + ADD_DEFINITIONS(-DHAVE_SHMEM_SERVICES) + + # Some systems define flock_t, for others we have to define it ourselves + CHECK_C_SOURCE_COMPILES(" + #include + int main() { + flock_t filler; + return 0; + }" HAVE_FLOCK_T) + IF(HAVE_FLOCK_T) + ADD_DEFINITIONS(-DHAVE_FLOCK_T) ENDIF() - # Find library needed for connect: - CHECK_FUNCTION_EXISTS("connect" CMAKE_HAVE_CONNECT) - IF(NOT CMAKE_HAVE_CONNECT) - CHECK_LIBRARY_EXISTS("socket" "connect" "" CMAKE_HAVE_CONNECT) + # Check union semun + CHECK_C_SOURCE_COMPILES(" + #include + #include + #include + int main() { + union semun filler; + return 0; + }" HAVE_UNION_SEMUN) + IF(HAVE_UNION_SEMUN) + ADD_DEFINITIONS(-DHAVE_UNION_SEMUN) ENDIF() +ENDIF() - # Define HAVE_NET_SERVICES if gethostbyname & connect were found: - IF (CMAKE_HAVE_GETHOSTBYNAME AND CMAKE_HAVE_CONNECT) - ADD_DEFINITIONS(-DHAVE_NET_SERVICES) - ENDIF () - - # Find curl library, for HTTPS support: - FIND_PACKAGE(CURL) - IF (CURL_FOUND) - INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR}) - ADD_DEFINITIONS(-DCFITSIO_HAVE_CURL) - ENDIF() +IF(WIN32 AND BUILD_SHARED_LIBS) + ADD_DEFINITIONS(-Dcfitsio_EXPORTS) ENDIF() +#============================================================================== +# CFITSIO source code: +#============================================================================== + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}") +set (LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}") +set (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/") +set (BIN_DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") + +SET(H_FILES fitsio.h fitsio2.h longnam.h) + SET(SRC_FILES buffers.c cfileio.c checksum.c - drvrfile.c drvrmem.c drvrnet.c + drvrfile.c drvrmem.c drvrnet.c drvrsmem.c editcol.c edithdu.c eval_f.c eval_l.c eval_y.c f77_wrap1.c f77_wrap2.c f77_wrap3.c f77_wrap4.c fits_hcompress.c fits_hdecompress.c fitscore.c @@ -110,7 +237,7 @@ putcol.c putcolb.c putcold.c putcole.c putcoli.c putcolj.c putcolk.c putcoll.c putcols.c putcolsb.c putcolu.c putcolui.c putcoluj.c putcoluk.c putkey.c quantize.c region.c ricecomp.c scalnull.c simplerng.c swapproc.c - wcssub.c wcsutil.c zlib/zcompress.c zlib/zuncompress.c + wcssub.c wcsutil.c zcompress.c zuncompress.c ) # For future modifications: @@ -121,18 +248,31 @@ # drvrgsiftp.c is only usable if HAVE_NET_SERVICES & HAVE_GSIFTP are defined: #drvrgsiftp.c -# Only include zlib source files if we are building a shared library. -# Users will need to link their executable with zlib independently. -IF (BUILD_SHARED_LIBS) - set(SRC_FILES ${SRC_FILES} - zlib/adler32.c zlib/crc32.c zlib/deflate.c zlib/infback.c - zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c - zlib/uncompr.c zlib/zutil.c - ) -ENDIF() - +#============================================================================== +# Add libraries: +#============================================================================== ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${H_FILES} ${SRC_FILES}) -TARGET_LINK_LIBRARIES(${LIB_NAME} ${PTHREADS_LIBRARY} ${M_LIB} ${CURL_LIBRARIES}) +# Math: +TARGET_LINK_LIBRARIES(${LIB_NAME} ${M_LIB}) +# zlib: +IF (ZLIB_FOUND) + TARGET_INCLUDE_DIRECTORIES(${LIB_NAME} PUBLIC ${ZLIB_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ZLIB_LIBRARIES}) +ENDIF(ZLIB_FOUND) +# cURL: +IF (CURL_FOUND) + TARGET_INCLUDE_DIRECTORIES(${LIB_NAME} PUBLIC ${CURL_INCLUDE_DIRS}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${CURL_LIBRARIES}) +ENDIF(CURL_FOUND) +# PThreads: +IF (THREADS_FOUND) + TARGET_LINK_LIBRARIES(${LIB_NAME} Threads::Threads) +ENDIF(THREADS_FOUND) +# BZip2: +IF (BZIP2_FOUND) + TARGET_INCLUDE_DIRECTORIES(${LIB_NAME} PUBLIC ${BZIP2_INCLUDE_DIRS}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${BZIP2_LIBRARIES}) +ENDIF(BZIP2_FOUND) SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES VERSION ${${PROJECT_NAME}_VERSION} SOVERSION ${${PROJECT_NAME}_MAJOR_VERSION}) install(TARGETS ${LIB_NAME} DESTINATION ${LIB_DESTINATION}) @@ -142,8 +282,10 @@ ARCHIVE DESTINATION lib) install(FILES ${H_FILES} DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel) -# Only build test code and executables if building a shared library: -IF (BUILD_SHARED_LIBS) +#============================================================================== +# Optional test programs: +#============================================================================== +IF (TESTS) ENABLE_TESTING() @@ -158,6 +300,13 @@ TARGET_LINK_LIBRARIES(cookbook ${LIB_NAME}) ADD_TEST(cookbook cookbook) +ENDIF(TESTS) + +#============================================================================== +# Optional utilities: +#============================================================================== +IF (UTILS) + ADD_EXECUTABLE(FPack fpack.c fpackutil.c) TARGET_LINK_LIBRARIES(FPack ${LIB_NAME}) @@ -173,7 +322,12 @@ set_target_properties(FPack Funpack PROPERTIES LINK_FLAGS "setargv.obj") endif(MSVC) -ENDIF(BUILD_SHARED_LIBS) + install(TARGETS FPack Funpack Fitscopy RUNTIME DESTINATION bin) + +ENDIF(UTILS) +#============================================================================== +# cfitsio.pc +#============================================================================== configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cfitsio.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/cfitsio.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cfitsio.pc DESTINATION lib/pkgconfig/) diff -Nru cfitsio-3.470/configure cfitsio-4.0.0/configure --- cfitsio-3.470/configure 2019-05-21 19:42:17.000000000 +0000 +++ cfitsio-4.0.0/configure 2021-05-20 01:18:54.000000000 +0000 @@ -652,6 +652,7 @@ CFLAGS CC CFITSIO_SONAME +CFITSIO_MICRO CFITSIO_MINOR CFITSIO_MAJOR target_os @@ -2288,12 +2289,14 @@ #-------------------------------------------------------------------- # CFITSIO Version Numbers: #-------------------------------------------------------------------- -CFITSIO_MAJOR=3 +CFITSIO_MAJOR=4 -CFITSIO_MINOR=47 +CFITSIO_MINOR=0 + +CFITSIO_MICRO=0 # Increment soname each time the interface changes: -CFITSIO_SONAME=8 +CFITSIO_SONAME=9 #-------------------------------------------------------------------- @@ -3677,6 +3680,11 @@ ARCH="linux" EXT="lnx" ;; + *haiku*) + # Haiku can be arm, i386, or x86_64 + ARCH=`uname -p` + EXT="haiku" + ;; *hpux*) ARCH="hp" EXT="hpu" @@ -4614,6 +4622,8 @@ case $host in *cygwin*) CFLAGS="$CFLAGS -DHAVE_POSIX_SIGNALS" + # LDFLAGS used by utilities: + LDFLAGS_BIN="$LDFLAGS_BIN -Wl,-rpath,\${CFITSIO_LIB}" ;; *apple-darwin*) @@ -4641,6 +4651,13 @@ $as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h ;; + *haiku*) + # For large file support: + $as_echo "#define _LARGEFILE_SOURCE 1" >>confdefs.h + + $as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h + + ;; *hpux*) if test "x$CFORTRANFLAGS" = x ; then CFORTRANFLAGS="-Dappendus" @@ -4658,6 +4675,8 @@ $as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h + # LDFLAGS used by utilities: + LDFLAGS_BIN="$LDFLAGS_BIN -Wl,-rpath,\${CFITSIO_LIB}" ;; *mingw32*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for large file support" >&5 @@ -4808,28 +4827,33 @@ darwin) SHLIB_SUFFIX=".dylib" - CFITSIO_SHLIB="lib\${PACKAGE}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}\${SHLIB_SUFFIX}" + CFITSIO_SHLIB="lib\${PACKAGE}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}\${SHLIB_SUFFIX}" CFITSIO_SHLIB_SONAME="lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX}" case $host in *darwin[56789]*) - SHLIB_LD="$CC -dynamiclib -install_name lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}" + SHLIB_LD="$CC -dynamiclib -install_name lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" ;; *) # Build 'Universal' binaries (i386 & x86_64 architectures) and # use rpath token on Darwin 10.x or newer: - SHLIB_LD="$CC -dynamiclib $C_UNIV_SWITCH -headerpad_max_install_names -install_name @rpath/lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}" + SHLIB_LD="$CC -dynamiclib $C_UNIV_SWITCH -headerpad_max_install_names -install_name @rpath/lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" ;; esac lhea_shlib_cflags="-fPIC -fno-common" ;; + haiku) + SHLIB_LD=":" + CFITSIO_SHLIB="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" + CFITSIO_SHLIB_SONAME="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}" + ;; hpu) SHLIB_LD="ld -b" SHLIB_SUFFIX=".sl" ;; lnx) SHLIB_LD=":" - CFITSIO_SHLIB="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}" + CFITSIO_SHLIB="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" CFITSIO_SHLIB_SONAME="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}" ;; osf) @@ -4938,6 +4962,55 @@ fi +# ZLIB (required): +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 +$as_echo_n "checking for inflateEnd in -lz... " >&6; } +if ${ac_cv_lib_z_inflateEnd+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflateEnd (); +int +main () +{ +return inflateEnd (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_inflateEnd=yes +else + ac_cv_lib_z_inflateEnd=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 +$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } +if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + as_fn_error $? "Unable to locate zlib compression library" "$LINENO" 5 +fi + + # GSIFTP flags: if test "x$GSIFTP_PATH" != x -a "x$GSIFTP_FLAVOUR" != x; then CFLAGS="$CFLAGS -I${GSIFTP_PATH}/include/${GSIFTP_FLAVOUR}" @@ -5266,7 +5339,7 @@ return 0; } _ACEOF -for ac_lib in '' nsl; do +for ac_lib in '' nsl network; do if test -z "$ac_lib"; then ac_res="none required" else @@ -5324,7 +5397,7 @@ return 0; } _ACEOF -for ac_lib in '' socket; do +for ac_lib in '' socket network; do if test -z "$ac_lib"; then ac_res="none required" else diff -Nru cfitsio-3.470/configure.in cfitsio-4.0.0/configure.in --- cfitsio-3.470/configure.in 2019-05-21 19:42:37.000000000 +0000 +++ cfitsio-4.0.0/configure.in 2021-05-20 01:18:54.000000000 +0000 @@ -14,10 +14,11 @@ #-------------------------------------------------------------------- # CFITSIO Version Numbers: #-------------------------------------------------------------------- -AC_SUBST(CFITSIO_MAJOR,3) -AC_SUBST(CFITSIO_MINOR,47) +AC_SUBST(CFITSIO_MAJOR,4) +AC_SUBST(CFITSIO_MINOR,0) +AC_SUBST(CFITSIO_MICRO,0) # Increment soname each time the interface changes: -AC_SUBST(CFITSIO_SONAME,8) +AC_SUBST(CFITSIO_SONAME,9) #-------------------------------------------------------------------- # Command options @@ -142,6 +143,11 @@ ARCH="linux" EXT="lnx" ;; + *haiku*) + # Haiku can be arm, i386, or x86_64 + ARCH=`uname -p` + EXT="haiku" + ;; *hpux*) ARCH="hp" EXT="hpu" @@ -274,6 +280,8 @@ case $host in *cygwin*) CFLAGS="$CFLAGS -DHAVE_POSIX_SIGNALS" + # LDFLAGS used by utilities: + LDFLAGS_BIN="$LDFLAGS_BIN -Wl,-rpath,\${CFITSIO_LIB}" ;; *apple-darwin*) changequote(,) @@ -299,6 +307,11 @@ AC_DEFINE(_LARGEFILE_SOURCE) AC_DEFINE(_FILE_OFFSET_BITS,64) ;; + *haiku*) + # For large file support: + AC_DEFINE(_LARGEFILE_SOURCE) + AC_DEFINE(_FILE_OFFSET_BITS,64) + ;; *hpux*) if test "x$CFORTRANFLAGS" = x ; then CFORTRANFLAGS="-Dappendus" @@ -314,6 +327,8 @@ # For large file support: AC_DEFINE(_LARGEFILE_SOURCE) AC_DEFINE(_FILE_OFFSET_BITS,64) + # LDFLAGS used by utilities: + LDFLAGS_BIN="$LDFLAGS_BIN -Wl,-rpath,\${CFITSIO_LIB}" ;; *mingw32*) AC_MSG_CHECKING([for large file support]) @@ -397,28 +412,33 @@ darwin) changequote(,) SHLIB_SUFFIX=".dylib" - CFITSIO_SHLIB="lib\${PACKAGE}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}\${SHLIB_SUFFIX}" + CFITSIO_SHLIB="lib\${PACKAGE}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}\${SHLIB_SUFFIX}" CFITSIO_SHLIB_SONAME="lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX}" case $host in *darwin[56789]*) - SHLIB_LD="$CC -dynamiclib -install_name lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}" + SHLIB_LD="$CC -dynamiclib -install_name lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" ;; *) # Build 'Universal' binaries (i386 & x86_64 architectures) and # use rpath token on Darwin 10.x or newer: - SHLIB_LD="$CC -dynamiclib $C_UNIV_SWITCH -headerpad_max_install_names -install_name @rpath/lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}" + SHLIB_LD="$CC -dynamiclib $C_UNIV_SWITCH -headerpad_max_install_names -install_name @rpath/lib\${PACKAGE}.\${CFITSIO_SONAME}\${SHLIB_SUFFIX} -compatibility_version \${CFITSIO_SONAME} -current_version \${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" ;; esac changequote([,]) lhea_shlib_cflags="-fPIC -fno-common" ;; + haiku) + SHLIB_LD=":" + CFITSIO_SHLIB="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" + CFITSIO_SHLIB_SONAME="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}" + ;; hpu) SHLIB_LD="ld -b" SHLIB_SUFFIX=".sl" ;; lnx) SHLIB_LD=":" - CFITSIO_SHLIB="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}" + CFITSIO_SHLIB="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}.\${CFITSIO_MAJOR}.\${CFITSIO_MINOR}.\${CFITSIO_MICRO}" CFITSIO_SHLIB_SONAME="lib\${PACKAGE}\${SHLIB_SUFFIX}.\${CFITSIO_SONAME}" ;; osf) @@ -488,6 +508,9 @@ fi AC_SUBST(LIBS_CURL) +# ZLIB (required): +AC_CHECK_LIB([z], [inflateEnd], [],[AC_MSG_ERROR(Unable to locate zlib compression library)]) + # GSIFTP flags: if test "x$GSIFTP_PATH" != x -a "x$GSIFTP_FLAVOUR" != x; then CFLAGS="$CFLAGS -I${GSIFTP_PATH}/include/${GSIFTP_FLAVOUR}" @@ -628,8 +651,8 @@ # ==================== END OF SHARED MEMORY DRIVER SECTION ================ # ================= test for the unix networking functions ================ -AC_SEARCH_LIBS([gethostbyname], [nsl], cfitsio_have_nsl=1, cfitsio_have_nsl=0) -AC_SEARCH_LIBS([connect], [socket], cfitsio_have_socket=1, +AC_SEARCH_LIBS([gethostbyname], [nsl network], cfitsio_have_nsl=1, cfitsio_have_nsl=0) +AC_SEARCH_LIBS([connect], [socket network], cfitsio_have_socket=1, cfitsio_have_socket=0, [-lnsl]) if test "$cfitsio_have_nsl" = 1 -a "$cfitsio_have_socket" = 1; then diff -Nru cfitsio-3.470/debian/changelog cfitsio-4.0.0/debian/changelog --- cfitsio-3.470/debian/changelog 2020-08-23 01:17:41.000000000 +0000 +++ cfitsio-4.0.0/debian/changelog 2022-09-22 05:24:14.000000000 +0000 @@ -1,8 +1,71 @@ -cfitsio (3.470-3~16.04.sav0) xenial; urgency=medium +cfitsio (4.0.0-1~16.04.sav0) xenial; urgency=medium * Backport to Xenial + * debian/control: Set debhelper-compat (= 10) BD (LP highest for Xenial) + * debian/rules: Add override_dh_install{docs,examples} targets with options + -plibcfitsio-doc --doc-main-package=libcfitsio-dev (compat level < 11) - -- Rob Savoury Sat, 22 Aug 2020 18:17:41 -0700 + -- Rob Savoury Wed, 21 Sep 2022 22:24:14 -0700 + +cfitsio (4.0.0-1) unstable; urgency=medium + + * New upstream version with new versioning scheme: + - Refresh 04-pkgconfig-private.patch. + - Remove 05-system-zlib.patch, obsolete. + - Refresh 10-latex.diff. + * Bump Standards-Version to 4.6.0 (no changes). + + -- Aurelien Jarno Sat, 21 Aug 2021 20:37:02 +0200 + +cfitsio (3.490-3) unstable; urgency=medium + + * Fix autopkgtests: + - Redirect GCC warnings to stdout. + - Make sure to use the installed header file and not the sources one. + + -- Aurelien Jarno Sat, 22 Aug 2020 22:24:49 +0200 + +cfitsio (3.490-2) unstable; urgency=medium + + * Upload to unstable. + + -- Aurelien Jarno Sat, 22 Aug 2020 17:23:46 +0200 + +cfitsio (3.490-1) experimental; urgency=medium + + * New upstream version: + - Refresh 06-spelling-errors.diff. + - Refresh 08-hurd.diff. + - Drop 09-drvnet-format-security.diff. + * Switch to debhelper 13. + + -- Aurelien Jarno Fri, 21 Aug 2020 19:15:45 +0200 + +cfitsio (3.480-1) experimental; urgency=medium + + * Upload to experimental. + * New upstream version: + - Rename libcfitsio8 into libcfitsio9. + - Refresh 04-pkgconfig-private.patch. + - Drop debian/patches/06-riscv64.diff. + - Add 10-latex.diff to fix an issue to build latex documentation. + * Drop XS-Testsuite entry from debian/control. + * Add 06-spelling-errors.diff to fix a few spelling errors in library + messages. + * Drop debian/libcfitsio-doc.dirs as this is now handled by debhelper. + * Update 01-LDFLAGS.diff to avoid adding an runpath. + * Add a watch file. + + -- Aurelien Jarno Sat, 27 Jun 2020 12:56:06 +0200 + +cfitsio (3.470-4) unstable; urgency=medium + + * Switch to debhelper 12. + * Set Rules-Requires-Root: no. + * Bump Standards-Version to 4.5.0. + * Fix autopkgtests with recent GCC version, LDFLAGS needs to be last. + + -- Aurelien Jarno Tue, 31 Mar 2020 20:46:03 +0200 cfitsio (3.470-3) unstable; urgency=medium @@ -656,5 +719,3 @@ * Initial Release. -- Gopal Narayanan Mon, 27 Mar 2000 14:36:41 -0500 - - diff -Nru cfitsio-3.470/debian/compat cfitsio-4.0.0/debian/compat --- cfitsio-3.470/debian/compat 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -10 diff -Nru cfitsio-3.470/debian/control cfitsio-4.0.0/debian/control --- cfitsio-3.470/debian/control 2019-05-29 17:55:24.000000000 +0000 +++ cfitsio-4.0.0/debian/control 2022-09-22 05:12:11.000000000 +0000 @@ -3,16 +3,16 @@ Priority: optional Maintainer: Debian Astronomy Maintainers Uploaders: Aurelien Jarno -Build-Depends: debhelper (>= 10) +Build-Depends: debhelper-compat (= 10) Build-Depends-Arch: gfortran, cfortran, zlib1g-dev, libbz2-dev, libcurl4-gnutls-dev Build-Depends-Indep: hevea, latex2html, texlive -Standards-Version: 4.3.0 +Standards-Version: 4.6.0 Homepage: https://heasarc.gsfc.nasa.gov/fitsio/fitsio.html Vcs-Browser: https://salsa.debian.org/debian-astro-team/cfitsio Vcs-Git: https://salsa.debian.org/debian-astro-team/cfitsio.git -XS-Testsuite: autopkgtest +Rules-Requires-Root: no -Package: libcfitsio8 +Package: libcfitsio9 Architecture: any Section: libs Multi-Arch: same @@ -32,7 +32,7 @@ Section: libdevel Architecture: any Multi-Arch: same -Depends: libcfitsio8 (= ${binary:Version}), ${misc:Depends} +Depends: libcfitsio9 (= ${binary:Version}), ${misc:Depends} Replaces: libcfitsio3-dev (<< 3.340-3) Breaks: libcfitsio3-dev (<< 3.340-3) Recommends: libcfitsio-doc diff -Nru cfitsio-3.470/debian/libcfitsio8.install cfitsio-4.0.0/debian/libcfitsio8.install --- cfitsio-3.470/debian/libcfitsio8.install 2019-08-01 11:20:30.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio8.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/lib*.so.* diff -Nru cfitsio-3.470/debian/libcfitsio8.symbols cfitsio-4.0.0/debian/libcfitsio8.symbols --- cfitsio-3.470/debian/libcfitsio8.symbols 2019-08-01 11:20:30.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio8.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,1775 +0,0 @@ -libcfitsio.so.8 libcfitsio8 #MINVER# - CFITS2Unit@Base 3.470~ - CUnit2FITS@Base 3.470~ - Cdnan@Base 3.470~ - Cffclos@Base 3.470~ - Cffcrep@Base 3.470~ - Cffcsum@Base 3.470~ - Cffdelt@Base 3.470~ - Cffdkinit@Base 3.470~ - Cffdkopn@Base 3.470~ - Cffdopn@Base 3.470~ - Cffdsum@Base 3.470~ - Cffempty@Base 3.470~ - Cffesum@Base 3.470~ - Cfffiou@Base 3.470~ - Cffgcfc@Base 3.470~ - Cffgcfm@Base 3.470~ - Cffgcks@Base 3.470~ - Cffgcxui@Base 3.470~ - Cffgcxuk@Base 3.470~ - Cffgiou@Base 3.470~ - Cffgknl@Base 3.470~ - Cffgprh@Base 3.470~ - Cffgsfb@Base 3.470~ - Cffgsfd@Base 3.470~ - Cffgsfe@Base 3.470~ - Cffgsfi@Base 3.470~ - Cffgsfjj@Base 3.470~ - Cffgsfk@Base 3.470~ - Cffgtmo@Base 3.470~ - Cffinit@Base 3.470~ - Cffiopn@Base 3.470~ - Cffiter@Base 3.470~ - Cffnopn@Base 3.470~ - Cffopen@Base 3.470~ - Cffphpr@Base 3.470~ - Cffpknl@Base 3.470~ - Cffreopen@Base 3.470~ - Cffrprt@Base 3.470~ - Cfftopn@Base 3.470~ - Cfftplt@Base 3.470~ - Cfnan@Base 3.470~ - Cwork_fn@Base 3.470~ - Evaluate_Parser@Base 3.470~ - Fitsio_InitLock@Base 3.470~ - Fitsio_Lock@Base 3.470~ - Fitsio_Pthread_Status@Base 3.470~ - FptrTable@Base 3.470~ - STREAM_DRIVER@Base 3.470~ - angsep_calc@Base 3.470~ - block_mode@Base 3.470~ - bz_internal_error@Base 3.470~ - bzip2uncompress2mem@Base 3.470~ - comma2semicolon@Base 3.470~ - compress2file_from_mem@Base 3.470~ - compress2mem_from_mem@Base 3.470~ - driverTable@Base 3.470~ - ffGetVariable@Base 3.470~ - ff_create_buffer@Base 3.470~ - ff_delete_buffer@Base 3.470~ - ff_flex_debug@Base 3.470~ - ff_flush_buffer@Base 3.470~ - ff_scan_buffer@Base 3.470~ - ff_scan_bytes@Base 3.470~ - ff_scan_string@Base 3.470~ - ff_switch_to_buffer@Base 3.470~ - ffainit@Base 3.470~ - ffalloc@Base 3.470~ - ffasfm@Base 3.470~ - ffbfeof@Base 3.470~ - ffbfwt@Base 3.470~ - ffbinit@Base 3.470~ - ffbinr@Base 3.470~ - ffbins@Base 3.470~ - ffbnfm@Base 3.470~ - ffbnfmll@Base 3.470~ - ffc2d@Base 3.470~ - ffc2dd@Base 3.470~ - ffc2i@Base 3.470~ - ffc2ii@Base 3.470~ - ffc2j@Base 3.470~ - ffc2jj@Base 3.470~ - ffc2l@Base 3.470~ - ffc2ll@Base 3.470~ - ffc2r@Base 3.470~ - ffc2rr@Base 3.470~ - ffc2s@Base 3.470~ - ffc2uj@Base 3.470~ - ffc2ujj@Base 3.470~ - ffc2uxx@Base 3.470~ - ffc2x@Base 3.470~ - ffc2xx@Base 3.470~ - ffcalc@Base 3.470~ - ffcalc_rng@Base 3.470~ - ffcalchist@Base 3.470~ - ffccls@Base 3.470~ - ffcdel@Base 3.470~ - ffcdfl@Base 3.470~ - ffcdsp@Base 3.470~ - ffcfmt@Base 3.470~ - ffchar@Base 3.470~ - ffchdu@Base 3.470~ - ffchfl@Base 3.470~ - ffchtps@Base 3.470~ - ffcins@Base 3.470~ - ffclos@Base 3.470~ - ffcmph@Base 3.470~ - ffcmps@Base 3.470~ - ffcmrk@Base 3.470~ - ffcmsg@Base 3.470~ - ffcnvthdr2str@Base 3.470~ - ffcopy@Base 3.470~ - ffcpcl@Base 3.470~ - ffcpdt@Base 3.470~ - ffcpfl@Base 3.470~ - ffcphd@Base 3.470~ - ffcpky@Base 3.470~ - ffcprs@Base 3.470~ - ffcprw@Base 3.470~ - ffcrhd@Base 3.470~ - ffcrim@Base 3.470~ - ffcrimll@Base 3.470~ - ffcrow@Base 3.470~ - ffcrtb@Base 3.470~ - ffcsum@Base 3.470~ - ffcvtn@Base 3.470~ - ffd2e@Base 3.470~ - ffd2f@Base 3.470~ - ffdblk@Base 3.470~ - ffdcol@Base 3.470~ - ffdelt@Base 3.470~ - ffdhdu@Base 3.470~ - ffdkey@Base 3.470~ - ffdkinit@Base 3.470~ - ffdkopn@Base 3.470~ - ffdopn@Base 3.470~ - ffdrec@Base 3.470~ - ffdrow@Base 3.470~ - ffdrrg@Base 3.470~ - ffdrws@Base 3.470~ - ffdrwsll@Base 3.470~ - ffdstr@Base 3.470~ - ffdsum@Base 3.470~ - ffdt2s@Base 3.470~ - ffdtdm@Base 3.470~ - ffdtdmll@Base 3.470~ - ffdtyp@Base 3.470~ - ffedit_columns@Base 3.470~ - ffeopn@Base 3.470~ - ffeqty@Base 3.470~ - ffeqtyll@Base 3.470~ - ffesum@Base 3.470~ - ffexist@Base 3.470~ - ffextn@Base 3.470~ - ffexts@Base 3.470~ - ffffrw@Base 3.470~ - ffffrw_work@Base 3.470~ - fffi1i1@Base 3.470~ - fffi1i2@Base 3.470~ - fffi1i4@Base 3.470~ - fffi1i8@Base 3.470~ - fffi1int@Base 3.470~ - fffi1r4@Base 3.470~ - fffi1r8@Base 3.470~ - fffi1s1@Base 3.470~ - fffi1u2@Base 3.470~ - fffi1u4@Base 3.470~ - fffi1u8@Base 3.470~ - fffi1uint@Base 3.470~ - fffi2i1@Base 3.470~ - fffi2i2@Base 3.470~ - fffi2i4@Base 3.470~ - fffi2i8@Base 3.470~ - fffi2int@Base 3.470~ - fffi2r4@Base 3.470~ - fffi2r8@Base 3.470~ - fffi2s1@Base 3.470~ - fffi2u2@Base 3.470~ - fffi2u4@Base 3.470~ - fffi2u8@Base 3.470~ - fffi2uint@Base 3.470~ - fffi4i1@Base 3.470~ - fffi4i2@Base 3.470~ - fffi4i4@Base 3.470~ - fffi4i8@Base 3.470~ - fffi4int@Base 3.470~ - fffi4r4@Base 3.470~ - fffi4r8@Base 3.470~ - fffi4s1@Base 3.470~ - fffi4u2@Base 3.470~ - fffi4u4@Base 3.470~ - fffi4u8@Base 3.470~ - fffi4uint@Base 3.470~ - fffi8i1@Base 3.470~ - fffi8i2@Base 3.470~ - fffi8i4@Base 3.470~ - fffi8i8@Base 3.470~ - fffi8int@Base 3.470~ - fffi8r4@Base 3.470~ - fffi8r8@Base 3.470~ - fffi8s1@Base 3.470~ - fffi8u2@Base 3.470~ - fffi8u4@Base 3.470~ - fffi8u8@Base 3.470~ - fffi8uint@Base 3.470~ - ffflmd@Base 3.470~ - ffflnm@Base 3.470~ - ffflsh@Base 3.470~ - ffflus@Base 3.470~ - ffflushx@Base 3.470~ - fffr4i1@Base 3.470~ - fffr4i2@Base 3.470~ - fffr4i4@Base 3.470~ - fffr4i8@Base 3.470~ - fffr4int@Base 3.470~ - fffr4r4@Base 3.470~ - fffr4r8@Base 3.470~ - fffr4s1@Base 3.470~ - fffr4u2@Base 3.470~ - fffr4u4@Base 3.470~ - fffr4u8@Base 3.470~ - fffr4uint@Base 3.470~ - fffr8i1@Base 3.470~ - fffr8i2@Base 3.470~ - fffr8i4@Base 3.470~ - fffr8i8@Base 3.470~ - fffr8int@Base 3.470~ - fffr8r4@Base 3.470~ - fffr8r8@Base 3.470~ - fffr8s1@Base 3.470~ - fffr8u2@Base 3.470~ - fffr8u4@Base 3.470~ - fffr8u8@Base 3.470~ - fffr8uint@Base 3.470~ - fffree@Base 3.470~ - fffrow@Base 3.470~ - fffrwc@Base 3.470~ - fffstri1@Base 3.470~ - fffstri2@Base 3.470~ - fffstri4@Base 3.470~ - fffstri8@Base 3.470~ - fffstrint@Base 3.470~ - fffstrr4@Base 3.470~ - fffstrr8@Base 3.470~ - fffstrs1@Base 3.470~ - fffstru2@Base 3.470~ - fffstru4@Base 3.470~ - fffstru8@Base 3.470~ - fffstruint@Base 3.470~ - fffvcl@Base 3.470~ - ffg2db@Base 3.470~ - ffg2dd@Base 3.470~ - ffg2de@Base 3.470~ - ffg2di@Base 3.470~ - ffg2dj@Base 3.470~ - ffg2djj@Base 3.470~ - ffg2dk@Base 3.470~ - ffg2dsb@Base 3.470~ - ffg2dui@Base 3.470~ - ffg2duj@Base 3.470~ - ffg2dujj@Base 3.470~ - ffg2duk@Base 3.470~ - ffg3db@Base 3.470~ - ffg3dd@Base 3.470~ - ffg3de@Base 3.470~ - ffg3di@Base 3.470~ - ffg3dj@Base 3.470~ - ffg3djj@Base 3.470~ - ffg3dk@Base 3.470~ - ffg3dsb@Base 3.470~ - ffg3dui@Base 3.470~ - ffg3duj@Base 3.470~ - ffg3dujj@Base 3.470~ - ffg3duk@Base 3.470~ - ffgabc@Base 3.470~ - ffgacl@Base 3.470~ - ffgbcl@Base 3.470~ - ffgbclll@Base 3.470~ - ffgbyt@Base 3.470~ - ffgbytoff@Base 3.470~ - ffgcdw@Base 3.470~ - ffgcf@Base 3.470~ - ffgcfb@Base 3.470~ - ffgcfc@Base 3.470~ - ffgcfd@Base 3.470~ - ffgcfe@Base 3.470~ - ffgcfi@Base 3.470~ - ffgcfj@Base 3.470~ - ffgcfjj@Base 3.470~ - ffgcfk@Base 3.470~ - ffgcfl@Base 3.470~ - ffgcfm@Base 3.470~ - ffgcfs@Base 3.470~ - ffgcfsb@Base 3.470~ - ffgcfui@Base 3.470~ - ffgcfuj@Base 3.470~ - ffgcfujj@Base 3.470~ - ffgcfuk@Base 3.470~ - ffgcks@Base 3.470~ - ffgcl@Base 3.470~ - ffgclb@Base 3.470~ - ffgcld@Base 3.470~ - ffgcle@Base 3.470~ - ffgcli@Base 3.470~ - ffgclj@Base 3.470~ - ffgcljj@Base 3.470~ - ffgclk@Base 3.470~ - ffgcll@Base 3.470~ - ffgcls2@Base 3.470~ - ffgcls@Base 3.470~ - ffgclsb@Base 3.470~ - ffgclui@Base 3.470~ - ffgcluj@Base 3.470~ - ffgclujj@Base 3.470~ - ffgcluk@Base 3.470~ - ffgcnn@Base 3.470~ - ffgcno@Base 3.470~ - ffgcnt@Base 3.470~ - ffgcprll@Base 3.470~ - ffgcrd@Base 3.470~ - ffgcv@Base 3.470~ - ffgcvb@Base 3.470~ - ffgcvc@Base 3.470~ - ffgcvd@Base 3.470~ - ffgcve@Base 3.470~ - ffgcvi@Base 3.470~ - ffgcvj@Base 3.470~ - ffgcvjj@Base 3.470~ - ffgcvk@Base 3.470~ - ffgcvl@Base 3.470~ - ffgcvm@Base 3.470~ - ffgcvs@Base 3.470~ - ffgcvsb@Base 3.470~ - ffgcvui@Base 3.470~ - ffgcvuj@Base 3.470~ - ffgcvujj@Base 3.470~ - ffgcvuk@Base 3.470~ - ffgcx@Base 3.470~ - ffgcxui@Base 3.470~ - ffgcxuk@Base 3.470~ - ffgdes@Base 3.470~ - ffgdesll@Base 3.470~ - ffgdess@Base 3.470~ - ffgdessll@Base 3.470~ - ffgerr@Base 3.470~ - ffget_debug@Base 3.470~ - ffget_in@Base 3.470~ - ffget_leng@Base 3.470~ - ffget_lineno@Base 3.470~ - ffget_out@Base 3.470~ - ffget_text@Base 3.470~ - ffgext@Base 3.470~ - ffgextn@Base 3.470~ - ffggpb@Base 3.470~ - ffggpd@Base 3.470~ - ffggpe@Base 3.470~ - ffggpi@Base 3.470~ - ffggpj@Base 3.470~ - ffggpjj@Base 3.470~ - ffggpk@Base 3.470~ - ffggpsb@Base 3.470~ - ffggpui@Base 3.470~ - ffggpuj@Base 3.470~ - ffggpujj@Base 3.470~ - ffggpuk@Base 3.470~ - ffghad@Base 3.470~ - ffghadll@Base 3.470~ - ffghbn@Base 3.470~ - ffghbnll@Base 3.470~ - ffghdn@Base 3.470~ - ffghdt@Base 3.470~ - ffghof@Base 3.470~ - ffghpr@Base 3.470~ - ffghprll@Base 3.470~ - ffghps@Base 3.470~ - ffghsp@Base 3.470~ - ffghtb@Base 3.470~ - ffghtbll@Base 3.470~ - ffgi1b@Base 3.470~ - ffgi2b@Base 3.470~ - ffgi4b@Base 3.470~ - ffgi8b@Base 3.470~ - ffgics@Base 3.470~ - ffgicsa@Base 3.470~ - ffgidm@Base 3.470~ - ffgidt@Base 3.470~ - ffgiet@Base 3.470~ - ffgipr@Base 3.470~ - ffgiprll@Base 3.470~ - ffgisz@Base 3.470~ - ffgiszll@Base 3.470~ - ffgiwcs@Base 3.470~ - ffgkcl@Base 3.470~ - ffgkey@Base 3.470~ - ffgkls@Base 3.470~ - ffgknd@Base 3.470~ - ffgkne@Base 3.470~ - ffgknj@Base 3.470~ - ffgknjj@Base 3.470~ - ffgknl@Base 3.470~ - ffgknm@Base 3.470~ - ffgkns@Base 3.470~ - ffgksl@Base 3.470~ - ffgky@Base 3.470~ - ffgkyc@Base 3.470~ - ffgkyd@Base 3.470~ - ffgkye@Base 3.470~ - ffgkyj@Base 3.470~ - ffgkyjj@Base 3.470~ - ffgkyl@Base 3.470~ - ffgkym@Base 3.470~ - ffgkyn@Base 3.470~ - ffgkys@Base 3.470~ - ffgkyt@Base 3.470~ - ffgkyujj@Base 3.470~ - ffgmcp@Base 3.470~ - ffgmf@Base 3.470~ - ffgmng@Base 3.470~ - ffgmop@Base 3.470~ - ffgmrm@Base 3.470~ - ffgmsg@Base 3.470~ - ffgmtf@Base 3.470~ - ffgmul@Base 3.470~ - ffgncl@Base 3.470~ - ffgnky@Base 3.470~ - ffgnrw@Base 3.470~ - ffgnrwll@Base 3.470~ - ffgnxk@Base 3.470~ - ffgpf@Base 3.470~ - ffgpfb@Base 3.470~ - ffgpfd@Base 3.470~ - ffgpfe@Base 3.470~ - ffgpfi@Base 3.470~ - ffgpfj@Base 3.470~ - ffgpfjj@Base 3.470~ - ffgpfk@Base 3.470~ - ffgpfsb@Base 3.470~ - ffgpfui@Base 3.470~ - ffgpfuj@Base 3.470~ - ffgpfujj@Base 3.470~ - ffgpfuk@Base 3.470~ - ffgphd@Base 3.470~ - ffgpv@Base 3.470~ - ffgpvb@Base 3.470~ - ffgpvd@Base 3.470~ - ffgpve@Base 3.470~ - ffgpvi@Base 3.470~ - ffgpvj@Base 3.470~ - ffgpvjj@Base 3.470~ - ffgpvk@Base 3.470~ - ffgpvsb@Base 3.470~ - ffgpvui@Base 3.470~ - ffgpvuj@Base 3.470~ - ffgpvujj@Base 3.470~ - ffgpvuk@Base 3.470~ - ffgpxf@Base 3.470~ - ffgpxfll@Base 3.470~ - ffgpxv@Base 3.470~ - ffgpxvll@Base 3.470~ - ffgr4b@Base 3.470~ - ffgr8b@Base 3.470~ - ffgrec@Base 3.470~ - ffgrsz@Base 3.470~ - ffgsdt@Base 3.470~ - ffgsfb@Base 3.470~ - ffgsfd@Base 3.470~ - ffgsfe@Base 3.470~ - ffgsfi@Base 3.470~ - ffgsfj@Base 3.470~ - ffgsfjj@Base 3.470~ - ffgsfk@Base 3.470~ - ffgsfsb@Base 3.470~ - ffgsfui@Base 3.470~ - ffgsfuj@Base 3.470~ - ffgsfujj@Base 3.470~ - ffgsfuk@Base 3.470~ - ffgsky@Base 3.470~ - ffgstm@Base 3.470~ - ffgstr@Base 3.470~ - ffgsv@Base 3.470~ - ffgsvb@Base 3.470~ - ffgsvd@Base 3.470~ - ffgsve@Base 3.470~ - ffgsvi@Base 3.470~ - ffgsvj@Base 3.470~ - ffgsvjj@Base 3.470~ - ffgsvk@Base 3.470~ - ffgsvsb@Base 3.470~ - ffgsvui@Base 3.470~ - ffgsvuj@Base 3.470~ - ffgsvujj@Base 3.470~ - ffgsvuk@Base 3.470~ - ffgtam@Base 3.470~ - ffgtbb@Base 3.470~ - ffgtbc@Base 3.470~ - ffgtbp@Base 3.470~ - ffgtch@Base 3.470~ - ffgtcl@Base 3.470~ - ffgtclll@Base 3.470~ - ffgtcm@Base 3.470~ - ffgtcp@Base 3.470~ - ffgtcpr@Base 3.470~ - ffgtcr@Base 3.470~ - ffgtcs@Base 3.470~ - ffgtdc@Base 3.470~ - ffgtdm@Base 3.470~ - ffgtdmll@Base 3.470~ - ffgtgc@Base 3.470~ - ffgthd@Base 3.470~ - ffgtis@Base 3.470~ - ffgtkn@Base 3.470~ - ffgtknjj@Base 3.470~ - ffgtmg@Base 3.470~ - ffgtmo@Base 3.470~ - ffgtnm@Base 3.470~ - ffgtop@Base 3.470~ - ffgtrm@Base 3.470~ - ffgtrmr@Base 3.470~ - ffgttb@Base 3.470~ - ffgtvf@Base 3.470~ - ffgtwcs@Base 3.470~ - ffgunt@Base 3.470~ - ffh2st@Base 3.470~ - ffhdef@Base 3.470~ - ffhdr2str@Base 3.470~ - ffhist2@Base 3.470~ - ffhist3@Base 3.470~ - ffhist@Base 3.470~ - ffi1fi1@Base 3.470~ - ffi1fi2@Base 3.470~ - ffi1fi4@Base 3.470~ - ffi1fi8@Base 3.470~ - ffi1fr4@Base 3.470~ - ffi1fr8@Base 3.470~ - ffi1fstr@Base 3.470~ - ffi2c@Base 3.470~ - ffi2fi1@Base 3.470~ - ffi2fi2@Base 3.470~ - ffi2fi4@Base 3.470~ - ffi2fi8@Base 3.470~ - ffi2fr4@Base 3.470~ - ffi2fr8@Base 3.470~ - ffi2fstr@Base 3.470~ - ffi4fi1@Base 3.470~ - ffi4fi2@Base 3.470~ - ffi4fi4@Base 3.470~ - ffi4fi8@Base 3.470~ - ffi4fr4@Base 3.470~ - ffi4fr8@Base 3.470~ - ffi4fstr@Base 3.470~ - ffi8fi1@Base 3.470~ - ffi8fi2@Base 3.470~ - ffi8fi4@Base 3.470~ - ffi8fi8@Base 3.470~ - ffi8fr4@Base 3.470~ - ffi8fr8@Base 3.470~ - ffi8fstr@Base 3.470~ - ffibin@Base 3.470~ - ffiblk@Base 3.470~ - fficls@Base 3.470~ - fficol@Base 3.470~ - ffifile2@Base 3.470~ - ffifile@Base 3.470~ - ffihtps@Base 3.470~ - ffiimg@Base 3.470~ - ffiimgll@Base 3.470~ - ffikey@Base 3.470~ - ffikfc@Base 3.470~ - ffikfm@Base 3.470~ - ffikls@Base 3.470~ - ffikyc@Base 3.470~ - ffikyd@Base 3.470~ - ffikye@Base 3.470~ - ffikyf@Base 3.470~ - ffikyg@Base 3.470~ - ffikyj@Base 3.470~ - ffikyl@Base 3.470~ - ffikym@Base 3.470~ - ffikys@Base 3.470~ - ffikyu@Base 3.470~ - ffimem@Base 3.470~ - ffimport_file@Base 3.470~ - ffin@Base 3.470~ - ffinit@Base 3.470~ - ffintfi1@Base 3.470~ - ffintfi2@Base 3.470~ - ffintfi4@Base 3.470~ - ffintfi8@Base 3.470~ - ffintfr4@Base 3.470~ - ffintfr8@Base 3.470~ - ffintfstr@Base 3.470~ - ffinttyp@Base 3.470~ - ffiopn@Base 3.470~ - ffiprs@Base 3.470~ - ffirec@Base 3.470~ - ffirow@Base 3.470~ - ffitab@Base 3.470~ - ffiter@Base 3.470~ - ffiurl@Base 3.470~ - ffkeyn@Base 3.470~ - ffkshf@Base 3.470~ - ffl2c@Base 3.470~ - ffldrc@Base 3.470~ - ffleng@Base 3.470~ - fflex@Base 3.470~ - fflex_destroy@Base 3.470~ - fflineno@Base 3.470~ -#MISSING: 3.470~# fflongfi8@Base 3.470~ - fflval@Base 3.470~ - ffmahd@Base 3.470~ - ffmaky@Base 3.470~ - ffmbyt@Base 3.470~ - ffmcom@Base 3.470~ - ffmcrd@Base 3.470~ - ffmkey@Base 3.470~ - ffmkfc@Base 3.470~ - ffmkfm@Base 3.470~ - ffmkky@Base 3.470~ - ffmkls@Base 3.470~ - ffmkyc@Base 3.470~ - ffmkyd@Base 3.470~ - ffmkye@Base 3.470~ - ffmkyf@Base 3.470~ - ffmkyg@Base 3.470~ - ffmkyj@Base 3.470~ - ffmkyl@Base 3.470~ - ffmkym@Base 3.470~ - ffmkys@Base 3.470~ - ffmkyu@Base 3.470~ - ffmnam@Base 3.470~ - ffmnhd@Base 3.470~ - ffmrec@Base 3.470~ - ffmrhd@Base 3.470~ - ffmrky@Base 3.470~ - ffmvec@Base 3.470~ - ffnchk@Base 3.470~ - ffnerrs@Base 3.470~ - ffnkey@Base 3.470~ - ffomem@Base 3.470~ - ffopen@Base 3.470~ - ffopentest@Base 3.470~ - ffoptplt@Base 3.470~ - ffourl@Base 3.470~ - ffout@Base 3.470~ - ffp2db@Base 3.470~ - ffp2dd@Base 3.470~ - ffp2de@Base 3.470~ - ffp2di@Base 3.470~ - ffp2dj@Base 3.470~ - ffp2djj@Base 3.470~ - ffp2dk@Base 3.470~ - ffp2dsb@Base 3.470~ - ffp2dui@Base 3.470~ - ffp2duj@Base 3.470~ - ffp2dujj@Base 3.470~ - ffp2duk@Base 3.470~ - ffp3db@Base 3.470~ - ffp3dd@Base 3.470~ - ffp3de@Base 3.470~ - ffp3di@Base 3.470~ - ffp3dj@Base 3.470~ - ffp3djj@Base 3.470~ - ffp3dk@Base 3.470~ - ffp3dsb@Base 3.470~ - ffp3dui@Base 3.470~ - ffp3duj@Base 3.470~ - ffp3dujj@Base 3.470~ - ffp3duk@Base 3.470~ - ffparse@Base 3.470~ - ffparsecompspec@Base 3.470~ - ffpbyt@Base 3.470~ - ffpbytoff@Base 3.470~ - ffpcks@Base 3.470~ - ffpcl@Base 3.470~ - ffpclb@Base 3.470~ - ffpclc@Base 3.470~ - ffpcld@Base 3.470~ - ffpcle@Base 3.470~ - ffpcli@Base 3.470~ - ffpclj@Base 3.470~ - ffpcljj@Base 3.470~ - ffpclk@Base 3.470~ - ffpcll@Base 3.470~ - ffpclm@Base 3.470~ - ffpcls@Base 3.470~ - ffpclsb@Base 3.470~ - ffpclu@Base 3.470~ - ffpcluc@Base 3.470~ - ffpclui@Base 3.470~ - ffpcluj@Base 3.470~ - ffpclujj@Base 3.470~ - ffpcluk@Base 3.470~ - ffpclx@Base 3.470~ - ffpcn@Base 3.470~ - ffpcnb@Base 3.470~ - ffpcnd@Base 3.470~ - ffpcne@Base 3.470~ - ffpcni@Base 3.470~ - ffpcnj@Base 3.470~ - ffpcnjj@Base 3.470~ - ffpcnk@Base 3.470~ - ffpcnl@Base 3.470~ - ffpcns@Base 3.470~ - ffpcnsb@Base 3.470~ - ffpcnui@Base 3.470~ - ffpcnuj@Base 3.470~ - ffpcnujj@Base 3.470~ - ffpcnuk@Base 3.470~ - ffpcom@Base 3.470~ - ffpdat@Base 3.470~ - ffpdes@Base 3.470~ - ffpdfl@Base 3.470~ - ffpextn@Base 3.470~ - ffpgpb@Base 3.470~ - ffpgpd@Base 3.470~ - ffpgpe@Base 3.470~ - ffpgpi@Base 3.470~ - ffpgpj@Base 3.470~ - ffpgpjj@Base 3.470~ - ffpgpk@Base 3.470~ - ffpgpsb@Base 3.470~ - ffpgpui@Base 3.470~ - ffpgpuj@Base 3.470~ - ffpgpujj@Base 3.470~ - ffpgpuk@Base 3.470~ - ffphbn@Base 3.470~ - ffphext@Base 3.470~ - ffphis@Base 3.470~ - ffphpr@Base 3.470~ - ffphprll@Base 3.470~ - ffphps@Base 3.470~ - ffphpsll@Base 3.470~ - ffphtb@Base 3.470~ - ffpi1b@Base 3.470~ - ffpi2b@Base 3.470~ - ffpi4b@Base 3.470~ - ffpi8b@Base 3.470~ - ffpinit@Base 3.470~ - ffpkfc@Base 3.470~ - ffpkfm@Base 3.470~ - ffpkls@Base 3.470~ - ffpknd@Base 3.470~ - ffpkne@Base 3.470~ - ffpknf@Base 3.470~ - ffpkng@Base 3.470~ - ffpknj@Base 3.470~ - ffpknjj@Base 3.470~ - ffpknl@Base 3.470~ - ffpkns@Base 3.470~ - ffpktp@Base 3.470~ - ffpky@Base 3.470~ - ffpkyc@Base 3.470~ - ffpkyd@Base 3.470~ - ffpkye@Base 3.470~ - ffpkyf@Base 3.470~ - ffpkyg@Base 3.470~ - ffpkyj@Base 3.470~ - ffpkyl@Base 3.470~ - ffpkym@Base 3.470~ - ffpkys@Base 3.470~ - ffpkyt@Base 3.470~ - ffpkyu@Base 3.470~ - ffpkyuj@Base 3.470~ - ffplsw@Base 3.470~ - ffpmrk@Base 3.470~ - ffpmsg@Base 3.470~ - ffpnul@Base 3.470~ - ffpop_buffer_state@Base 3.470~ - ffppn@Base 3.470~ - ffppnb@Base 3.470~ - ffppnd@Base 3.470~ - ffppne@Base 3.470~ - ffppni@Base 3.470~ - ffppnj@Base 3.470~ - ffppnjj@Base 3.470~ - ffppnk@Base 3.470~ - ffppnsb@Base 3.470~ - ffppnui@Base 3.470~ - ffppnuj@Base 3.470~ - ffppnujj@Base 3.470~ - ffppnuk@Base 3.470~ - ffppr@Base 3.470~ - ffpprb@Base 3.470~ - ffpprd@Base 3.470~ - ffppre@Base 3.470~ - ffppri@Base 3.470~ - ffpprj@Base 3.470~ - ffpprjj@Base 3.470~ - ffpprk@Base 3.470~ - ffpprn@Base 3.470~ - ffpprsb@Base 3.470~ - ffppru@Base 3.470~ - ffpprui@Base 3.470~ - ffppruj@Base 3.470~ - ffpprujj@Base 3.470~ - ffppruk@Base 3.470~ - ffppx@Base 3.470~ - ffppxll@Base 3.470~ - ffppxn@Base 3.470~ - ffppxnll@Base 3.470~ - ffpr4b@Base 3.470~ - ffpr8b@Base 3.470~ - ffprec@Base 3.470~ - ffprwu@Base 3.470~ - ffpscl@Base 3.470~ - ffpss@Base 3.470~ - ffpssb@Base 3.470~ - ffpssd@Base 3.470~ - ffpsse@Base 3.470~ - ffpssi@Base 3.470~ - ffpssj@Base 3.470~ - ffpssjj@Base 3.470~ - ffpssk@Base 3.470~ - ffpsssb@Base 3.470~ - ffpssui@Base 3.470~ - ffpssuj@Base 3.470~ - ffpssujj@Base 3.470~ - ffpssuk@Base 3.470~ - ffpsvc@Base 3.470~ - ffptbb@Base 3.470~ - ffptdm@Base 3.470~ - ffptdmll@Base 3.470~ - ffpthp@Base 3.470~ - ffpunt@Base 3.470~ - ffpush_buffer_state@Base 3.470~ - ffpxsz@Base 3.470~ - ffr2e@Base 3.470~ - ffr2f@Base 3.470~ - ffr4fi1@Base 3.470~ - ffr4fi2@Base 3.470~ - ffr4fi4@Base 3.470~ - ffr4fi8@Base 3.470~ - ffr4fr4@Base 3.470~ - ffr4fr8@Base 3.470~ - ffr4fstr@Base 3.470~ - ffr8fi1@Base 3.470~ - ffr8fi2@Base 3.470~ - ffr8fi4@Base 3.470~ - ffr8fi8@Base 3.470~ - ffr8fr4@Base 3.470~ - ffr8fr8@Base 3.470~ - ffr8fstr@Base 3.470~ - ffrdef@Base 3.470~ - ffread@Base 3.470~ - ffrealloc@Base 3.470~ - ffreopen@Base 3.470~ - ffrestart@Base 3.470~ - ffrhdu@Base 3.470~ - ffrprt@Base 3.470~ - ffrsim@Base 3.470~ - ffrsimll@Base 3.470~ - ffrtnm@Base 3.470~ - ffrwrg@Base 3.470~ - ffrwrgll@Base 3.470~ - ffs1fi1@Base 3.470~ - ffs1fi2@Base 3.470~ - ffs1fi4@Base 3.470~ - ffs1fi8@Base 3.470~ - ffs1fr4@Base 3.470~ - ffs1fr8@Base 3.470~ - ffs1fstr@Base 3.470~ - ffs2c@Base 3.470~ - ffs2dt@Base 3.470~ - ffs2tm@Base 3.470~ - ffseek@Base 3.470~ - ffselect_table@Base 3.470~ - ffset_debug@Base 3.470~ - ffset_in@Base 3.470~ - ffset_lineno@Base 3.470~ - ffset_out@Base 3.470~ - ffshdwn@Base 3.470~ - ffshft@Base 3.470~ - ffsnul@Base 3.470~ - ffsrow@Base 3.470~ - ffstmo@Base 3.470~ - ffswap2@Base 3.470~ - ffswap4@Base 3.470~ - ffswap8@Base 3.470~ - fftexp@Base 3.470~ - fftext@Base 3.470~ - ffthdu@Base 3.470~ - fftheap@Base 3.470~ - fftkey@Base 3.470~ - fftkyn@Base 3.470~ - fftm2s@Base 3.470~ - fftnul@Base 3.470~ - fftopn@Base 3.470~ - fftplt@Base 3.470~ - fftrec@Base 3.470~ - fftrun@Base 3.470~ - fftsad@Base 3.470~ - fftscl@Base 3.470~ - fftsud@Base 3.470~ - ffu2c@Base 3.470~ - ffu2fi1@Base 3.470~ - ffu2fi2@Base 3.470~ - ffu2fi4@Base 3.470~ - ffu2fi8@Base 3.470~ - ffu2fr4@Base 3.470~ - ffu2fr8@Base 3.470~ - ffu2fstr@Base 3.470~ - ffu4fi1@Base 3.470~ - ffu4fi2@Base 3.470~ - ffu4fi4@Base 3.470~ - ffu4fi8@Base 3.470~ - ffu4fr4@Base 3.470~ - ffu4fr8@Base 3.470~ - ffu4fstr@Base 3.470~ - ffu8fi1@Base 3.470~ - ffu8fi2@Base 3.470~ - ffu8fi4@Base 3.470~ - ffu8fi8@Base 3.470~ - ffu8fr4@Base 3.470~ - ffu8fr8@Base 3.470~ - ffu8fstr@Base 3.470~ - ffucrd@Base 3.470~ - ffuintfi1@Base 3.470~ - ffuintfi2@Base 3.470~ - ffuintfi4@Base 3.470~ - ffuintfi8@Base 3.470~ - ffuintfr4@Base 3.470~ - ffuintfr8@Base 3.470~ - ffuintfstr@Base 3.470~ - ffukfc@Base 3.470~ - ffukfm@Base 3.470~ - ffukls@Base 3.470~ - ffuky@Base 3.470~ - ffukyc@Base 3.470~ - ffukyd@Base 3.470~ - ffukye@Base 3.470~ - ffukyf@Base 3.470~ - ffukyg@Base 3.470~ - ffukyj@Base 3.470~ - ffukyl@Base 3.470~ - ffukym@Base 3.470~ - ffukys@Base 3.470~ - ffukyu@Base 3.470~ - ffupch@Base 3.470~ - ffupck@Base 3.470~ - ffuptf@Base 3.470~ - ffurlt@Base 3.470~ - ffvcfm@Base 3.470~ - ffvcks@Base 3.470~ - ffverifydate@Base 3.470~ - ffvers@Base 3.470~ - ffvhtps@Base 3.470~ - ffwend@Base 3.470~ - ffwhbf@Base 3.470~ - ffwldp@Base 3.470~ - ffwrap@Base 3.470~ - ffwrhdu@Base 3.470~ - ffwrite@Base 3.470~ - ffwritehisto@Base 3.470~ - ffxmsg@Base 3.470~ - ffxypx@Base 3.470~ - file_checkfile@Base 3.470~ - file_close@Base 3.470~ - file_compress_open@Base 3.470~ - file_create@Base 3.470~ - file_flush@Base 3.470~ - file_getoptions@Base 3.470~ - file_getversion@Base 3.470~ - file_init@Base 3.470~ - file_is_compressed@Base 3.470~ - file_open@Base 3.470~ - file_openfile@Base 3.470~ - file_read@Base 3.470~ - file_remove@Base 3.470~ - file_seek@Base 3.470~ - file_setoptions@Base 3.470~ - file_shutdown@Base 3.470~ - file_size@Base 3.470~ - file_truncate@Base 3.470~ - file_write@Base 3.470~ - fits_already_open@Base 3.470~ - fits_calc_binning@Base 3.470~ - fits_calc_binningd@Base 3.470~ - fits_clean_url@Base 3.470~ - fits_clear_Fptr@Base 3.470~ - fits_compress_table@Base 3.470~ - fits_copy_cell2image@Base 3.470~ - fits_copy_image2cell@Base 3.470~ - fits_copy_image_section@Base 3.470~ - fits_copy_pixlist2image@Base 3.470~ - fits_decomp_img@Base 3.470~ - fits_delete_iraf_file@Base 3.470~ - fits_dwnld_prog_bar@Base 3.470~ - fits_encode_url@Base 3.470~ - fits_execute_template@Base 3.470~ - fits_free_region@Base 3.470~ - fits_get_col_minmax@Base 3.470~ - fits_get_compression_type@Base 3.470~ - fits_get_cwd@Base 3.470~ - fits_get_dither_seed@Base 3.470~ - fits_get_hcomp_scale@Base 3.470~ - fits_get_hcomp_smooth@Base 3.470~ - fits_get_noise_bits@Base 3.470~ - fits_get_quantize_level@Base 3.470~ - fits_get_section_range@Base 3.470~ - fits_get_tile_dim@Base 3.470~ - fits_get_token2@Base 3.470~ - fits_get_token@Base 3.470~ - fits_get_url@Base 3.470~ - fits_hcompress64@Base 3.470~ - fits_hcompress@Base 3.470~ - fits_hdecompress64@Base 3.470~ - fits_hdecompress@Base 3.470~ - fits_img_compress@Base 3.470~ - fits_img_decompress@Base 3.470~ - fits_img_decompress_header@Base 3.470~ - fits_img_stats_float@Base 3.470~ - fits_img_stats_int@Base 3.470~ - fits_img_stats_short@Base 3.470~ - fits_in_region@Base 3.470~ - fits_init_cfitsio@Base 3.470~ - fits_init_randoms@Base 3.470~ - fits_is_compressed_image@Base 3.470~ - fits_is_reentrant@Base 3.470~ - fits_is_this_a_copy@Base 3.470~ - fits_is_url_absolute@Base 3.470~ - fits_iter_get_array@Base 3.470~ - fits_iter_get_colname@Base 3.470~ - fits_iter_get_colnum@Base 3.470~ - fits_iter_get_datatype@Base 3.470~ - fits_iter_get_file@Base 3.470~ - fits_iter_get_iotype@Base 3.470~ - fits_iter_get_repeat@Base 3.470~ - fits_iter_get_tdisp@Base 3.470~ - fits_iter_get_tlmax@Base 3.470~ - fits_iter_get_tlmin@Base 3.470~ - fits_iter_get_tunit@Base 3.470~ - fits_iter_set_by_name@Base 3.470~ - fits_iter_set_by_num@Base 3.470~ - fits_iter_set_colname@Base 3.470~ - fits_iter_set_colnum@Base 3.470~ - fits_iter_set_datatype@Base 3.470~ - fits_iter_set_file@Base 3.470~ - fits_iter_set_iotype@Base 3.470~ - fits_make_hist@Base 3.470~ - fits_make_histd@Base 3.470~ - fits_net_timeout@Base 3.470~ - fits_path2url@Base 3.470~ - fits_pixel_filter@Base 3.470~ - fits_quantize_double@Base 3.470~ - fits_quantize_float@Base 3.470~ - fits_rand_value@Base 3.470~ - fits_rcomp@Base 3.470~ - fits_rcomp_byte@Base 3.470~ - fits_rcomp_short@Base 3.470~ - fits_rdecomp@Base 3.470~ - fits_rdecomp_byte@Base 3.470~ - fits_rdecomp_short@Base 3.470~ - fits_read_ascii_region@Base 3.470~ - fits_read_compressed_img@Base 3.470~ - fits_read_compressed_img_plane@Base 3.470~ - fits_read_compressed_pixels@Base 3.470~ - fits_read_fits_region@Base 3.470~ - fits_read_rgnfile@Base 3.470~ - fits_read_wcstab@Base 3.470~ - fits_rebin_wcs@Base 3.470~ - fits_rebin_wcsd@Base 3.470~ - fits_register_driver@Base 3.470~ - fits_relurl2url@Base 3.470~ - fits_select_image_section@Base 3.470~ - fits_set_compression_pref@Base 3.470~ - fits_set_compression_type@Base 3.470~ - fits_set_dither_offset@Base 3.470~ - fits_set_dither_seed@Base 3.470~ - fits_set_hcomp_scale@Base 3.470~ - fits_set_hcomp_smooth@Base 3.470~ - fits_set_huge_hdu@Base 3.470~ - fits_set_lossy_int@Base 3.470~ - fits_set_noise_bits@Base 3.470~ - fits_set_quantize_dither@Base 3.470~ - fits_set_quantize_level@Base 3.470~ - fits_set_quantize_method@Base 3.470~ - fits_set_region_components@Base 3.470~ - fits_set_tile_dim@Base 3.470~ - fits_setup_shape@Base 3.470~ - fits_split_names@Base 3.470~ - fits_store_Fptr@Base 3.470~ - fits_strcasecmp@Base 3.470~ - fits_strncasecmp@Base 3.470~ - fits_translate_keyword@Base 3.470~ - fits_translate_keywords@Base 3.470~ - fits_translate_pixkeyword@Base 3.470~ - fits_uncompress_table@Base 3.470~ - fits_unencode_url@Base 3.470~ - fits_unset_compression_param@Base 3.470~ - fits_unset_compression_request@Base 3.470~ - fits_url2path@Base 3.470~ - fits_url2relurl@Base 3.470~ - fits_write_compressed_img@Base 3.470~ - fits_write_compressed_img_plane@Base 3.470~ - fits_write_compressed_pixels@Base 3.470~ - fits_write_keys_histo@Base 3.470~ - fitsio_init_lock@Base 3.470~ - ftadef_@Base 3.470~ - ftasfm_@Base 3.470~ - ftbdef_@Base 3.470~ - ftbnfm_@Base 3.470~ - ftc2d_@Base 3.470~ - ftc2dd_@Base 3.470~ - ftc2i_@Base 3.470~ - ftc2ii_@Base 3.470~ - ftc2l_@Base 3.470~ - ftc2ll_@Base 3.470~ - ftc2r_@Base 3.470~ - ftc2rr_@Base 3.470~ - ftc2s_@Base 3.470~ - ftc2x_@Base 3.470~ - ftcalc_@Base 3.470~ - ftcalc_rng_@Base 3.470~ - ftcdfl_@Base 3.470~ - ftcell2im_@Base 3.470~ - ftchfl_@Base 3.470~ - ftclos_@Base 3.470~ - ftcmps_@Base 3.470~ - ftcmrk_@Base 3.470~ - ftcmsg_@Base 3.470~ - ftcopy_@Base 3.470~ - ftcpcl_@Base 3.470~ - ftcpdt_@Base 3.470~ - ftcpfl_@Base 3.470~ - ftcphd_@Base 3.470~ - ftcpky_@Base 3.470~ - ftcrep_@Base 3.470~ - ftcrhd_@Base 3.470~ - ftcrim_@Base 3.470~ - ftcrow_@Base 3.470~ - ftcrtb_@Base 3.470~ - ftcsum_@Base 3.470~ - ftd2e_@Base 3.470~ - ftd2f_@Base 3.470~ - ftdcol_@Base 3.470~ - ftddef_@Base 3.470~ - ftdelt_@Base 3.470~ - ftdhdu_@Base 3.470~ - ftdkey_@Base 3.470~ - ftdkinit_@Base 3.470~ - ftdkopn_@Base 3.470~ - ftdopn_@Base 3.470~ - ftdrec_@Base 3.470~ - ftdrow_@Base 3.470~ - ftdrowll_@Base 3.470~ - ftdrrg_@Base 3.470~ - ftdrws_@Base 3.470~ - ftdsum_@Base 3.470~ - ftdt2s_@Base 3.470~ - ftdtdm_@Base 3.470~ - ftdtyp_@Base 3.470~ - fteqty_@Base 3.470~ - ftesum_@Base 3.470~ - ftexist_@Base 3.470~ - ftextn_@Base 3.470~ - ftffrw_@Base 3.470~ - ftfiou_@Base 3.470~ - ftflmd_@Base 3.470~ - ftflnm_@Base 3.470~ - ftflsh_@Base 3.470~ - ftflus_@Base 3.470~ - ftfrow_@Base 3.470~ - ftfrwc_@Base 3.470~ - ftg2db_@Base 3.470~ - ftg2dd_@Base 3.470~ - ftg2de_@Base 3.470~ - ftg2di_@Base 3.470~ - ftg2dj_@Base 3.470~ - ftg2dk_@Base 3.470~ - ftg3db_@Base 3.470~ - ftg3dd_@Base 3.470~ - ftg3de_@Base 3.470~ - ftg3di_@Base 3.470~ - ftg3dj_@Base 3.470~ - ftg3dk_@Base 3.470~ - ftgabc_@Base 3.470~ - ftgacl_@Base 3.470~ - ftgbcl_@Base 3.470~ - ftgbnh_@Base 3.470~ - ftgbyt_@Base 3.470~ - ftgcbf_@Base 3.470~ - ftgcdw_@Base 3.470~ - ftgcfb_@Base 3.470~ - ftgcfbll_@Base 3.470~ - ftgcfc_@Base 3.470~ - ftgcfd_@Base 3.470~ - ftgcfdll_@Base 3.470~ - ftgcfe_@Base 3.470~ - ftgcfell_@Base 3.470~ - ftgcfi_@Base 3.470~ - ftgcfill_@Base 3.470~ - ftgcfj_@Base 3.470~ - ftgcfjll_@Base 3.470~ - ftgcfk_@Base 3.470~ - ftgcfkll_@Base 3.470~ - ftgcfl_@Base 3.470~ - ftgcfm_@Base 3.470~ - ftgcfs_@Base 3.470~ - ftgcks_@Base 3.470~ - ftgcl_@Base 3.470~ - ftgcnn_@Base 3.470~ - ftgcno_@Base 3.470~ - ftgcrd_@Base 3.470~ - ftgcvb_@Base 3.470~ - ftgcvbll_@Base 3.470~ - ftgcvc_@Base 3.470~ - ftgcvcll_@Base 3.470~ - ftgcvd_@Base 3.470~ - ftgcvdll_@Base 3.470~ - ftgcve_@Base 3.470~ - ftgcvell_@Base 3.470~ - ftgcvi_@Base 3.470~ - ftgcvill_@Base 3.470~ - ftgcvj_@Base 3.470~ - ftgcvjll_@Base 3.470~ - ftgcvk_@Base 3.470~ - ftgcvkll_@Base 3.470~ - ftgcvl_@Base 3.470~ - ftgcvlll_@Base 3.470~ - ftgcvm_@Base 3.470~ - ftgcvmll_@Base 3.470~ - ftgcvs_@Base 3.470~ - ftgcvsll_@Base 3.470~ - ftgcx_@Base 3.470~ - ftgcxi_@Base 3.470~ - ftgcxj_@Base 3.470~ - ftgdes_@Base 3.470~ - ftgdesll_@Base 3.470~ - ftgdess_@Base 3.470~ - ftgdessll_@Base 3.470~ - ftgerr_@Base 3.470~ - ftgextn_@Base 3.470~ - ftggpb_@Base 3.470~ - ftggpd_@Base 3.470~ - ftggpe_@Base 3.470~ - ftggpi_@Base 3.470~ - ftggpj_@Base 3.470~ - ftggpk_@Base 3.470~ - ftghad_@Base 3.470~ - ftghbn_@Base 3.470~ - ftghbnll_@Base 3.470~ - ftghdn_@Base 3.470~ - ftghdt_@Base 3.470~ - ftghpr_@Base 3.470~ - ftghps_@Base 3.470~ - ftghsp_@Base 3.470~ - ftghtb_@Base 3.470~ - ftgics_@Base 3.470~ - ftgicsa_@Base 3.470~ - ftgidm_@Base 3.470~ - ftgidt_@Base 3.470~ - ftgiet_@Base 3.470~ - ftgiou_@Base 3.470~ - ftgipr_@Base 3.470~ - ftgiprll_@Base 3.470~ - ftgisz_@Base 3.470~ - ftgiszll_@Base 3.470~ - ftgkcl_@Base 3.470~ - ftgkey_@Base 3.470~ - ftgkls_@Base 3.470~ - ftgknd_@Base 3.470~ - ftgkne_@Base 3.470~ - ftgknj_@Base 3.470~ - ftgknk_@Base 3.470~ - ftgknl_@Base 3.470~ - ftgknm_@Base 3.470~ - ftgkns_@Base 3.470~ - ftgksl_@Base 3.470~ - ftgkyc_@Base 3.470~ - ftgkyd_@Base 3.470~ - ftgkye_@Base 3.470~ - ftgkyj_@Base 3.470~ - ftgkyk_@Base 3.470~ - ftgkyl_@Base 3.470~ - ftgkym_@Base 3.470~ - ftgkyn_@Base 3.470~ - ftgkys_@Base 3.470~ - ftgkyt_@Base 3.470~ - ftgmcp_@Base 3.470~ - ftgmng_@Base 3.470~ - ftgmop_@Base 3.470~ - ftgmrm_@Base 3.470~ - ftgmsg_@Base 3.470~ - ftgmtf_@Base 3.470~ - ftgncl_@Base 3.470~ - ftgnrw_@Base 3.470~ - ftgnrwll_@Base 3.470~ - ftgnxk_@Base 3.470~ - ftgpfb_@Base 3.470~ - ftgpfd_@Base 3.470~ - ftgpfe_@Base 3.470~ - ftgpfi_@Base 3.470~ - ftgpfj_@Base 3.470~ - ftgpfk_@Base 3.470~ - ftgprh_@Base 3.470~ - ftgpvb_@Base 3.470~ - ftgpvd_@Base 3.470~ - ftgpve_@Base 3.470~ - ftgpvi_@Base 3.470~ - ftgpvj_@Base 3.470~ - ftgpvk_@Base 3.470~ - ftgrec_@Base 3.470~ - ftgrsz_@Base 3.470~ - ftgsdt_@Base 3.470~ - ftgsfb_@Base 3.470~ - ftgsfd_@Base 3.470~ - ftgsfe_@Base 3.470~ - ftgsfi_@Base 3.470~ - ftgsfj_@Base 3.470~ - ftgsfk_@Base 3.470~ - ftgsky_@Base 3.470~ - ftgstm_@Base 3.470~ - ftgsvb_@Base 3.470~ - ftgsvd_@Base 3.470~ - ftgsve_@Base 3.470~ - ftgsvi_@Base 3.470~ - ftgsvj_@Base 3.470~ - ftgsvk_@Base 3.470~ - ftgtam_@Base 3.470~ - ftgtbb_@Base 3.470~ - ftgtbh_@Base 3.470~ - ftgtbs_@Base 3.470~ - ftgtch_@Base 3.470~ - ftgtcl_@Base 3.470~ - ftgtcm_@Base 3.470~ - ftgtcp_@Base 3.470~ - ftgtcr_@Base 3.470~ - ftgtcs_@Base 3.470~ - ftgtdm_@Base 3.470~ - ftgthd_@Base 3.470~ - ftgtis_@Base 3.470~ - ftgtmg_@Base 3.470~ - ftgtmo_@Base 3.470~ - ftgtnm_@Base 3.470~ - ftgtop_@Base 3.470~ - ftgtrm_@Base 3.470~ - ftgtvf_@Base 3.470~ - ftgunt_@Base 3.470~ - fthdef_@Base 3.470~ - fti2c_@Base 3.470~ - ftibin_@Base 3.470~ - ftibinll_@Base 3.470~ - fticls_@Base 3.470~ - fticol_@Base 3.470~ - ftiimg_@Base 3.470~ - ftiimgll_@Base 3.470~ - ftikfc_@Base 3.470~ - ftikfm_@Base 3.470~ - ftikls_@Base 3.470~ - ftikyc_@Base 3.470~ - ftikyd_@Base 3.470~ - ftikye_@Base 3.470~ - ftikyf_@Base 3.470~ - ftikyg_@Base 3.470~ - ftikyj_@Base 3.470~ - ftikyk_@Base 3.470~ - ftikyl_@Base 3.470~ - ftikym_@Base 3.470~ - ftikys_@Base 3.470~ - ftikyu_@Base 3.470~ - ftim2cell_@Base 3.470~ - ftinit_@Base 3.470~ - ftiopn_@Base 3.470~ - ftirec_@Base 3.470~ - ftirow_@Base 3.470~ - ftirowll_@Base 3.470~ - ftitab_@Base 3.470~ - ftitabll_@Base 3.470~ - ftiter_@Base 3.470~ - ftiurl_@Base 3.470~ - ftkey_@Base 3.470~ - ftkeyn_@Base 3.470~ - ftl2c_@Base 3.470~ - ftmahd_@Base 3.470~ - ftmaky_@Base 3.470~ - ftmcom_@Base 3.470~ - ftmcrd_@Base 3.470~ - ftmkfc_@Base 3.470~ - ftmkfm_@Base 3.470~ - ftmkky_@Base 3.470~ - ftmkls_@Base 3.470~ - ftmkyc_@Base 3.470~ - ftmkyd_@Base 3.470~ - ftmkye_@Base 3.470~ - ftmkyf_@Base 3.470~ - ftmkyg_@Base 3.470~ - ftmkyj_@Base 3.470~ - ftmkyk_@Base 3.470~ - ftmkyl_@Base 3.470~ - ftmkym_@Base 3.470~ - ftmkys_@Base 3.470~ - ftmkyu_@Base 3.470~ - ftmnam_@Base 3.470~ - ftmnhd_@Base 3.470~ - ftmrec_@Base 3.470~ - ftmrhd_@Base 3.470~ - ftmrky_@Base 3.470~ - ftmvec_@Base 3.470~ - ftnchk_@Base 3.470~ - ftnkey_@Base 3.470~ - ftnopn_@Base 3.470~ - ftopen_@Base 3.470~ - ftp2db_@Base 3.470~ - ftp2dd_@Base 3.470~ - ftp2de_@Base 3.470~ - ftp2di_@Base 3.470~ - ftp2dj_@Base 3.470~ - ftp2dk_@Base 3.470~ - ftp3db_@Base 3.470~ - ftp3dd_@Base 3.470~ - ftp3de_@Base 3.470~ - ftp3di_@Base 3.470~ - ftp3dj_@Base 3.470~ - ftp3dk_@Base 3.470~ - ftp_checkfile@Base 3.470~ - ftp_compress_open@Base 3.470~ - ftp_file_open@Base 3.470~ - ftp_open@Base 3.470~ - ftpbnh_@Base 3.470~ - ftpbyt_@Base 3.470~ - ftpcbf_@Base 3.470~ - ftpcks_@Base 3.470~ - ftpclb_@Base 3.470~ - ftpclbll_@Base 3.470~ - ftpclc_@Base 3.470~ - ftpclcll_@Base 3.470~ - ftpcld_@Base 3.470~ - ftpcldll_@Base 3.470~ - ftpcle_@Base 3.470~ - ftpclell_@Base 3.470~ - ftpcli_@Base 3.470~ - ftpclill_@Base 3.470~ - ftpclj_@Base 3.470~ - ftpcljll_@Base 3.470~ - ftpclk_@Base 3.470~ - ftpclkll_@Base 3.470~ - ftpcll_@Base 3.470~ - ftpcllll_@Base 3.470~ - ftpclm_@Base 3.470~ - ftpclmll_@Base 3.470~ - ftpcls_@Base 3.470~ - ftpclsll_@Base 3.470~ - ftpclu_@Base 3.470~ - ftpclull_@Base 3.470~ - ftpclx_@Base 3.470~ - ftpcnb_@Base 3.470~ - ftpcnbll_@Base 3.470~ - ftpcnd_@Base 3.470~ - ftpcndll_@Base 3.470~ - ftpcne_@Base 3.470~ - ftpcnell_@Base 3.470~ - ftpcni_@Base 3.470~ - ftpcnill_@Base 3.470~ - ftpcnj_@Base 3.470~ - ftpcnjll_@Base 3.470~ - ftpcnk_@Base 3.470~ - ftpcnkll_@Base 3.470~ - ftpcns_@Base 3.470~ - ftpcnsll_@Base 3.470~ - ftpcom_@Base 3.470~ - ftpdat_@Base 3.470~ - ftpdef_@Base 3.470~ - ftpdes_@Base 3.470~ - ftpdesll_@Base 3.470~ - ftpextn_@Base 3.470~ - ftpgpb_@Base 3.470~ - ftpgpd_@Base 3.470~ - ftpgpe_@Base 3.470~ - ftpgpi_@Base 3.470~ - ftpgpj_@Base 3.470~ - ftpgpk_@Base 3.470~ - ftphbn_@Base 3.470~ - ftphext_@Base 3.470~ - ftphis_@Base 3.470~ - ftphpr_@Base 3.470~ - ftphps_@Base 3.470~ - ftphtb_@Base 3.470~ - ftpkfc_@Base 3.470~ - ftpkfm_@Base 3.470~ - ftpkls_@Base 3.470~ - ftpknd_@Base 3.470~ - ftpkne_@Base 3.470~ - ftpknf_@Base 3.470~ - ftpkng_@Base 3.470~ - ftpknj_@Base 3.470~ - ftpknk_@Base 3.470~ - ftpknl_@Base 3.470~ - ftpkns_@Base 3.470~ - ftpktp_@Base 3.470~ - ftpkyc_@Base 3.470~ - ftpkyd_@Base 3.470~ - ftpkye_@Base 3.470~ - ftpkyf_@Base 3.470~ - ftpkyg_@Base 3.470~ - ftpkyj_@Base 3.470~ - ftpkyk_@Base 3.470~ - ftpkyl_@Base 3.470~ - ftpkym_@Base 3.470~ - ftpkys_@Base 3.470~ - ftpkyt_@Base 3.470~ - ftpkyu_@Base 3.470~ - ftplsw_@Base 3.470~ - ftpmrk_@Base 3.470~ - ftpmsg_@Base 3.470~ - ftpnul_@Base 3.470~ - ftpnulll_@Base 3.470~ - ftppnb_@Base 3.470~ - ftppnd_@Base 3.470~ - ftppne_@Base 3.470~ - ftppni_@Base 3.470~ - ftppnj_@Base 3.470~ - ftppnk_@Base 3.470~ - ftpprb_@Base 3.470~ - ftpprd_@Base 3.470~ - ftppre_@Base 3.470~ - ftpprh_@Base 3.470~ - ftppri_@Base 3.470~ - ftpprj_@Base 3.470~ - ftpprk_@Base 3.470~ - ftpprn_@Base 3.470~ - ftppru_@Base 3.470~ - ftprec_@Base 3.470~ - ftprwu_@Base 3.470~ - ftps_checkfile@Base 3.470~ - ftps_compress_open@Base 3.470~ - ftps_file_open@Base 3.470~ - ftps_open@Base 3.470~ - ftpscl_@Base 3.470~ - ftpssb_@Base 3.470~ - ftpssd_@Base 3.470~ - ftpsse_@Base 3.470~ - ftpssi_@Base 3.470~ - ftpssj_@Base 3.470~ - ftpssk_@Base 3.470~ - ftpsvc_@Base 3.470~ - ftptbb_@Base 3.470~ - ftptbh_@Base 3.470~ - ftptbs_@Base 3.470~ - ftptdm_@Base 3.470~ - ftpthp_@Base 3.470~ - ftpunt_@Base 3.470~ - ftr2e_@Base 3.470~ - ftr2f_@Base 3.470~ - ftrdef_@Base 3.470~ - ftreopen_@Base 3.470~ - ftrprt_@Base 3.470~ - ftrsim_@Base 3.470~ - ftrtnm_@Base 3.470~ - ftrwrg_@Base 3.470~ - fts2c_@Base 3.470~ - fts2dt_@Base 3.470~ - fts2tm_@Base 3.470~ - ftshdwn_@Base 3.470~ - ftsnul_@Base 3.470~ - ftsrow_@Base 3.470~ - ftstmo_@Base 3.470~ - fttdnn_@Base 3.470~ - fttexp_@Base 3.470~ - ftthdu_@Base 3.470~ - fttkey_@Base 3.470~ - fttm2s_@Base 3.470~ - fttnul_@Base 3.470~ - fttopn_@Base 3.470~ - fttplt_@Base 3.470~ - fttrec_@Base 3.470~ - fttrnn_@Base 3.470~ - fttscl_@Base 3.470~ - ftucks_@Base 3.470~ - ftucrd_@Base 3.470~ - ftukfc_@Base 3.470~ - ftukfm_@Base 3.470~ - ftukls_@Base 3.470~ - ftukyc_@Base 3.470~ - ftukyd_@Base 3.470~ - ftukye_@Base 3.470~ - ftukyf_@Base 3.470~ - ftukyg_@Base 3.470~ - ftukyj_@Base 3.470~ - ftukyk_@Base 3.470~ - ftukyl_@Base 3.470~ - ftukym_@Base 3.470~ - ftukys_@Base 3.470~ - ftukyu_@Base 3.470~ - ftupch_@Base 3.470~ - ftupck_@Base 3.470~ - ftvcks_@Base 3.470~ - ftvers_@Base 3.470~ - ftvhtps_@Base 3.470~ - ftwldp_@Base 3.470~ - ftxypx_@Base 3.470~ - gFitsFiles@Base 3.470~ - gMinStrLen@Base 3.470~ - gParse@Base 3.470~ - http_checkfile@Base 3.470~ - http_compress_open@Base 3.470~ - http_file_open@Base 3.470~ - http_open@Base 3.470~ - https_checkfile@Base 3.470~ - https_file_open@Base 3.470~ - https_open@Base 3.470~ - https_set_verbose@Base 3.470~ - imcomp_calc_max_elem@Base 3.470~ - imcomp_compress_image@Base 3.470~ - imcomp_compress_tile@Base 3.470~ - imcomp_convert_tile_tbyte@Base 3.470~ - imcomp_convert_tile_tdouble@Base 3.470~ - imcomp_convert_tile_tfloat@Base 3.470~ - imcomp_convert_tile_tint@Base 3.470~ - imcomp_convert_tile_tsbyte@Base 3.470~ - imcomp_convert_tile_tshort@Base 3.470~ - imcomp_convert_tile_tuint@Base 3.470~ - imcomp_convert_tile_tushort@Base 3.470~ - imcomp_copy_comp2img@Base 3.470~ - imcomp_copy_img2comp@Base 3.470~ - imcomp_copy_imheader@Base 3.470~ - imcomp_copy_overlap@Base 3.470~ - imcomp_copy_prime2img@Base 3.470~ - imcomp_decompress_tile@Base 3.470~ - imcomp_get_compressed_image_par@Base 3.470~ - imcomp_init_table@Base 3.470~ - imcomp_merge_overlap@Base 3.470~ - imcomp_nulldoubles@Base 3.470~ - imcomp_nullfloats@Base 3.470~ - imcomp_nullscale@Base 3.470~ - imcomp_nullscaledoubles@Base 3.470~ - imcomp_nullscalefloats@Base 3.470~ - imcomp_nullscalei2@Base 3.470~ - imcomp_nullvalues@Base 3.470~ - imcomp_nullvaluesi2@Base 3.470~ - imcomp_scalevalues@Base 3.470~ - imcomp_scalevaluesi2@Base 3.470~ - imcomp_test_overlap@Base 3.470~ - imcomp_write_nocompress_tile@Base 3.470~ - iraf2mem@Base 3.470~ - lcxxx@Base 3.470~ - master_grp_idx@Base 3.470~ - mem_close_comp@Base 3.470~ - mem_close_free@Base 3.470~ - mem_close_keep@Base 3.470~ - mem_compress_open@Base 3.470~ - mem_compress_openrw@Base 3.470~ - mem_compress_stdin_open@Base 3.470~ - mem_create@Base 3.470~ - mem_create_comp@Base 3.470~ - mem_createmem@Base 3.470~ - mem_getoptions@Base 3.470~ - mem_getversion@Base 3.470~ - mem_init@Base 3.470~ - mem_iraf_open@Base 3.470~ - mem_openmem@Base 3.470~ - mem_rawfile_open@Base 3.470~ - mem_read@Base 3.470~ - mem_seek@Base 3.470~ - mem_setoptions@Base 3.470~ - mem_shutdown@Base 3.470~ - mem_size@Base 3.470~ - mem_truncate@Base 3.470~ - mem_uncompress2mem@Base 3.470~ - mem_write@Base 3.470~ - need_to_initialize@Base 3.470~ - ngp_append_columns@Base 3.470~ - ngp_curline@Base 3.470~ - ngp_delete_extver_tab@Base 3.470~ - ngp_extract_tokens@Base 3.470~ - ngp_extver_tab@Base 3.470~ - ngp_extver_tab_size@Base 3.470~ - ngp_fp@Base 3.470~ - ngp_free_line@Base 3.470~ - ngp_free_prevline@Base 3.470~ - ngp_get_extver@Base 3.470~ - ngp_grplevel@Base 3.470~ - ngp_hdu_clear@Base 3.470~ - ngp_hdu_init@Base 3.470~ - ngp_hdu_insert_token@Base 3.470~ - ngp_inclevel@Base 3.470~ - ngp_include_file@Base 3.470~ - ngp_keyidx@Base 3.470~ - ngp_keyword_all_write@Base 3.470~ - ngp_keyword_is_write@Base 3.470~ - ngp_line_from_file@Base 3.470~ - ngp_linkey@Base 3.470~ - ngp_master_dir@Base 3.470~ - ngp_prevline@Base 3.470~ - ngp_read_group@Base 3.470~ - ngp_read_line@Base 3.470~ - ngp_read_line_buffered@Base 3.470~ - ngp_read_xtension@Base 3.470~ - ngp_set_extver@Base 3.470~ - ngp_tkdef@Base 3.470~ - ngp_unread_line@Base 3.470~ - no_of_drivers@Base 3.470~ - parse_data@Base 3.470~ - pl_l2pi@Base 3.470~ - pl_p2li@Base 3.470~ - prepare_keyvalue@Base 3.470~ - qselect_median_dbl@Base 3.470~ - qselect_median_lng@Base 3.470~ - realloc_fn@Base 3.470~ - results@Base 3.470~ - root_close@Base 3.470~ - root_create@Base 3.470~ - root_flush@Base 3.470~ - root_getoptions@Base 3.470~ - root_getversion@Base 3.470~ - root_init@Base 3.470~ - root_open@Base 3.470~ - root_read@Base 3.470~ - root_seek@Base 3.470~ - root_setoptions@Base 3.470~ - root_shutdown@Base 3.470~ - root_size@Base 3.470~ - root_write@Base 3.470~ - shared_attach@Base 3.470~ - shared_attr@Base 3.470~ - shared_cleanup@Base 3.470~ - shared_free@Base 3.470~ - shared_getaddr@Base 3.470~ - shared_init@Base 3.470~ - shared_list@Base 3.470~ - shared_lock@Base 3.470~ - shared_malloc@Base 3.470~ - shared_realloc@Base 3.470~ - shared_recover@Base 3.470~ - shared_set_attr@Base 3.470~ - shared_set_createmode@Base 3.470~ - shared_set_debug@Base 3.470~ - shared_uncond_delete@Base 3.470~ - shared_unlock@Base 3.470~ - simplerng_getnorm@Base 3.470~ - simplerng_getpoisson@Base 3.470~ - simplerng_getstate@Base 3.470~ - simplerng_getuint@Base 3.470~ - simplerng_getuint_pr@Base 3.470~ - simplerng_getuniform@Base 3.470~ - simplerng_getuniform_pr@Base 3.470~ - simplerng_logfactorial@Base 3.470~ - simplerng_poisson_large@Base 3.470~ - simplerng_poisson_small@Base 3.470~ - simplerng_setstate@Base 3.470~ - simplerng_srand@Base 3.470~ - smem_close@Base 3.470~ - smem_create@Base 3.470~ - smem_flush@Base 3.470~ - smem_getoptions@Base 3.470~ - smem_getversion@Base 3.470~ - smem_init@Base 3.470~ - smem_open@Base 3.470~ - smem_read@Base 3.470~ - smem_remove@Base 3.470~ - smem_seek@Base 3.470~ - smem_setoptions@Base 3.470~ - smem_shutdown@Base 3.470~ - smem_size@Base 3.470~ - smem_write@Base 3.470~ - stdin2file@Base 3.470~ - stdin2mem@Base 3.470~ - stdin_checkfile@Base 3.470~ - stdin_open@Base 3.470~ - stdout_close@Base 3.470~ - stream_close@Base 3.470~ - stream_create@Base 3.470~ - stream_flush@Base 3.470~ - stream_open@Base 3.470~ - stream_read@Base 3.470~ - stream_seek@Base 3.470~ - stream_size@Base 3.470~ - stream_write@Base 3.470~ - uncompress2file@Base 3.470~ - uncompress2mem@Base 3.470~ - uncompress2mem_from_mem@Base 3.470~ - uncompress_hkdata@Base 3.470~ - urltype2driver@Base 3.470~ - work@Base 3.470~ - yyfffree@Base 3.470~ - zuncompress2mem@Base 3.470~ diff -Nru cfitsio-3.470/debian/libcfitsio9.install cfitsio-4.0.0/debian/libcfitsio9.install --- cfitsio-3.470/debian/libcfitsio9.install 1970-01-01 00:00:00.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio9.install 2021-08-21 16:43:48.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff -Nru cfitsio-3.470/debian/libcfitsio9.symbols cfitsio-4.0.0/debian/libcfitsio9.symbols --- cfitsio-3.470/debian/libcfitsio9.symbols 1970-01-01 00:00:00.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio9.symbols 2021-08-21 16:43:48.000000000 +0000 @@ -0,0 +1,1777 @@ +libcfitsio.so.9 libcfitsio9 #MINVER# +* Build-Depends-Package: libcfitsio-dev + CFITS2Unit@Base 3.480~ + CUnit2FITS@Base 3.480~ + Cdnan@Base 3.480~ + Cffclos@Base 3.480~ + Cffcrep@Base 3.480~ + Cffcsum@Base 3.480~ + Cffdelt@Base 3.480~ + Cffdkinit@Base 3.480~ + Cffdkopn@Base 3.480~ + Cffdopn@Base 3.480~ + Cffdsum@Base 3.480~ + Cffempty@Base 3.480~ + Cffesum@Base 3.480~ + Cfffiou@Base 3.480~ + Cffgcfc@Base 3.480~ + Cffgcfm@Base 3.480~ + Cffgcks@Base 3.480~ + Cffgcxui@Base 3.480~ + Cffgcxuk@Base 3.480~ + Cffgiou@Base 3.480~ + Cffgknl@Base 3.480~ + Cffgprh@Base 3.480~ + Cffgsfb@Base 3.480~ + Cffgsfd@Base 3.480~ + Cffgsfe@Base 3.480~ + Cffgsfi@Base 3.480~ + Cffgsfjj@Base 3.480~ + Cffgsfk@Base 3.480~ + Cffgtmo@Base 3.480~ + Cffinit@Base 3.480~ + Cffiopn@Base 3.480~ + Cffiter@Base 3.480~ + Cffnopn@Base 3.480~ + Cffopen@Base 3.480~ + Cffphpr@Base 3.480~ + Cffpknl@Base 3.480~ + Cffreopen@Base 3.480~ + Cffrprt@Base 3.480~ + Cfftopn@Base 3.480~ + Cfftplt@Base 3.480~ + Cfnan@Base 3.480~ + Cwork_fn@Base 3.480~ + Evaluate_Parser@Base 3.480~ + Fitsio_InitLock@Base 3.480~ + Fitsio_Lock@Base 3.480~ + Fitsio_Pthread_Status@Base 3.480~ + FptrTable@Base 3.480~ + STREAM_DRIVER@Base 3.480~ + angsep_calc@Base 3.480~ + block_mode@Base 3.480~ + bz_internal_error@Base 3.480~ + bzip2uncompress2mem@Base 3.480~ + comma2semicolon@Base 3.480~ + compress2file_from_mem@Base 3.480~ + compress2mem_from_mem@Base 3.480~ + driverTable@Base 3.480~ + ffGetVariable@Base 3.480~ + ff_create_buffer@Base 3.480~ + ff_delete_buffer@Base 3.480~ + ff_flex_debug@Base 3.480~ + ff_flush_buffer@Base 3.480~ + ff_scan_buffer@Base 3.480~ + ff_scan_bytes@Base 3.480~ + ff_scan_string@Base 3.480~ + ff_switch_to_buffer@Base 3.480~ + ffainit@Base 3.480~ + ffalloc@Base 3.480~ + ffasfm@Base 3.480~ + ffbfeof@Base 3.480~ + ffbfwt@Base 3.480~ + ffbinit@Base 3.480~ + ffbinr@Base 3.480~ + ffbins@Base 3.480~ + ffbnfm@Base 3.480~ + ffbnfmll@Base 3.480~ + ffc2d@Base 3.480~ + ffc2dd@Base 3.480~ + ffc2i@Base 3.480~ + ffc2ii@Base 3.480~ + ffc2j@Base 3.480~ + ffc2jj@Base 3.480~ + ffc2l@Base 3.480~ + ffc2ll@Base 3.480~ + ffc2r@Base 3.480~ + ffc2rr@Base 3.480~ + ffc2s@Base 3.480~ + ffc2uj@Base 3.480~ + ffc2ujj@Base 3.480~ + ffc2uxx@Base 3.480~ + ffc2x@Base 3.480~ + ffc2xx@Base 3.480~ + ffcalc@Base 3.480~ + ffcalc_rng@Base 3.480~ + ffcalchist@Base 3.480~ + ffccls@Base 3.480~ + ffcdel@Base 3.480~ + ffcdfl@Base 3.480~ + ffcdsp@Base 3.480~ + ffcfmt@Base 3.480~ + ffchar@Base 3.480~ + ffchdu@Base 3.480~ + ffchfl@Base 3.480~ + ffchtps@Base 3.480~ + ffcins@Base 3.480~ + ffclos@Base 3.480~ + ffcmph@Base 3.480~ + ffcmps@Base 3.480~ + ffcmrk@Base 3.480~ + ffcmsg@Base 3.480~ + ffcnvthdr2str@Base 3.480~ + ffcopy@Base 3.480~ + ffcpcl@Base 3.480~ + ffcpdt@Base 3.480~ + ffcpfl@Base 3.480~ + ffcphd@Base 3.480~ + ffcpht@Base 3.480~ + ffcpky@Base 3.480~ + ffcprs@Base 3.480~ + ffcprw@Base 3.480~ + ffcrhd@Base 3.480~ + ffcrim@Base 3.480~ + ffcrimll@Base 3.480~ + ffcrow@Base 3.480~ + ffcrtb@Base 3.480~ + ffcsum@Base 3.480~ + ffcvtn@Base 3.480~ + ffd2e@Base 3.480~ + ffd2f@Base 3.480~ + ffdblk@Base 3.480~ + ffdcol@Base 3.480~ + ffdelt@Base 3.480~ + ffdhdu@Base 3.480~ + ffdkey@Base 3.480~ + ffdkinit@Base 3.480~ + ffdkopn@Base 3.480~ + ffdopn@Base 3.480~ + ffdrec@Base 3.480~ + ffdrow@Base 3.480~ + ffdrrg@Base 3.480~ + ffdrws@Base 3.480~ + ffdrwsll@Base 3.480~ + ffdstr@Base 3.480~ + ffdsum@Base 3.480~ + ffdt2s@Base 3.480~ + ffdtdm@Base 3.480~ + ffdtdmll@Base 3.480~ + ffdtyp@Base 3.480~ + ffedit_columns@Base 3.480~ + ffeopn@Base 3.480~ + ffeqty@Base 3.480~ + ffeqtyll@Base 3.480~ + ffesum@Base 3.480~ + ffexist@Base 3.480~ + ffextn@Base 3.480~ + ffexts@Base 3.480~ + ffffrw@Base 3.480~ + ffffrw_work@Base 3.480~ + fffi1i1@Base 3.480~ + fffi1i2@Base 3.480~ + fffi1i4@Base 3.480~ + fffi1i8@Base 3.480~ + fffi1int@Base 3.480~ + fffi1r4@Base 3.480~ + fffi1r8@Base 3.480~ + fffi1s1@Base 3.480~ + fffi1u2@Base 3.480~ + fffi1u4@Base 3.480~ + fffi1u8@Base 3.480~ + fffi1uint@Base 3.480~ + fffi2i1@Base 3.480~ + fffi2i2@Base 3.480~ + fffi2i4@Base 3.480~ + fffi2i8@Base 3.480~ + fffi2int@Base 3.480~ + fffi2r4@Base 3.480~ + fffi2r8@Base 3.480~ + fffi2s1@Base 3.480~ + fffi2u2@Base 3.480~ + fffi2u4@Base 3.480~ + fffi2u8@Base 3.480~ + fffi2uint@Base 3.480~ + fffi4i1@Base 3.480~ + fffi4i2@Base 3.480~ + fffi4i4@Base 3.480~ + fffi4i8@Base 3.480~ + fffi4int@Base 3.480~ + fffi4r4@Base 3.480~ + fffi4r8@Base 3.480~ + fffi4s1@Base 3.480~ + fffi4u2@Base 3.480~ + fffi4u4@Base 3.480~ + fffi4u8@Base 3.480~ + fffi4uint@Base 3.480~ + fffi8i1@Base 3.480~ + fffi8i2@Base 3.480~ + fffi8i4@Base 3.480~ + fffi8i8@Base 3.480~ + fffi8int@Base 3.480~ + fffi8r4@Base 3.480~ + fffi8r8@Base 3.480~ + fffi8s1@Base 3.480~ + fffi8u2@Base 3.480~ + fffi8u4@Base 3.480~ + fffi8u8@Base 3.480~ + fffi8uint@Base 3.480~ + ffflmd@Base 3.480~ + ffflnm@Base 3.480~ + ffflsh@Base 3.480~ + ffflus@Base 3.480~ + ffflushx@Base 3.480~ + fffr4i1@Base 3.480~ + fffr4i2@Base 3.480~ + fffr4i4@Base 3.480~ + fffr4i8@Base 3.480~ + fffr4int@Base 3.480~ + fffr4r4@Base 3.480~ + fffr4r8@Base 3.480~ + fffr4s1@Base 3.480~ + fffr4u2@Base 3.480~ + fffr4u4@Base 3.480~ + fffr4u8@Base 3.480~ + fffr4uint@Base 3.480~ + fffr8i1@Base 3.480~ + fffr8i2@Base 3.480~ + fffr8i4@Base 3.480~ + fffr8i8@Base 3.480~ + fffr8int@Base 3.480~ + fffr8r4@Base 3.480~ + fffr8r8@Base 3.480~ + fffr8s1@Base 3.480~ + fffr8u2@Base 3.480~ + fffr8u4@Base 3.480~ + fffr8u8@Base 3.480~ + fffr8uint@Base 3.480~ + fffree@Base 3.480~ + fffrow@Base 3.480~ + fffrwc@Base 3.480~ + fffstri1@Base 3.480~ + fffstri2@Base 3.480~ + fffstri4@Base 3.480~ + fffstri8@Base 3.480~ + fffstrint@Base 3.480~ + fffstrr4@Base 3.480~ + fffstrr8@Base 3.480~ + fffstrs1@Base 3.480~ + fffstru2@Base 3.480~ + fffstru4@Base 3.480~ + fffstru8@Base 3.480~ + fffstruint@Base 3.480~ + fffvcl@Base 3.480~ + ffg2db@Base 3.480~ + ffg2dd@Base 3.480~ + ffg2de@Base 3.480~ + ffg2di@Base 3.480~ + ffg2dj@Base 3.480~ + ffg2djj@Base 3.480~ + ffg2dk@Base 3.480~ + ffg2dsb@Base 3.480~ + ffg2dui@Base 3.480~ + ffg2duj@Base 3.480~ + ffg2dujj@Base 3.480~ + ffg2duk@Base 3.480~ + ffg3db@Base 3.480~ + ffg3dd@Base 3.480~ + ffg3de@Base 3.480~ + ffg3di@Base 3.480~ + ffg3dj@Base 3.480~ + ffg3djj@Base 3.480~ + ffg3dk@Base 3.480~ + ffg3dsb@Base 3.480~ + ffg3dui@Base 3.480~ + ffg3duj@Base 3.480~ + ffg3dujj@Base 3.480~ + ffg3duk@Base 3.480~ + ffgabc@Base 3.480~ + ffgacl@Base 3.480~ + ffgbcl@Base 3.480~ + ffgbclll@Base 3.480~ + ffgbyt@Base 3.480~ + ffgbytoff@Base 3.480~ + ffgcdw@Base 3.480~ + ffgcf@Base 3.480~ + ffgcfb@Base 3.480~ + ffgcfc@Base 3.480~ + ffgcfd@Base 3.480~ + ffgcfe@Base 3.480~ + ffgcfi@Base 3.480~ + ffgcfj@Base 3.480~ + ffgcfjj@Base 3.480~ + ffgcfk@Base 3.480~ + ffgcfl@Base 3.480~ + ffgcfm@Base 3.480~ + ffgcfs@Base 3.480~ + ffgcfsb@Base 3.480~ + ffgcfui@Base 3.480~ + ffgcfuj@Base 3.480~ + ffgcfujj@Base 3.480~ + ffgcfuk@Base 3.480~ + ffgcks@Base 3.480~ + ffgcl@Base 3.480~ + ffgclb@Base 3.480~ + ffgcld@Base 3.480~ + ffgcle@Base 3.480~ + ffgcli@Base 3.480~ + ffgclj@Base 3.480~ + ffgcljj@Base 3.480~ + ffgclk@Base 3.480~ + ffgcll@Base 3.480~ + ffgcls2@Base 3.480~ + ffgcls@Base 3.480~ + ffgclsb@Base 3.480~ + ffgclui@Base 3.480~ + ffgcluj@Base 3.480~ + ffgclujj@Base 3.480~ + ffgcluk@Base 3.480~ + ffgcnn@Base 3.480~ + ffgcno@Base 3.480~ + ffgcnt@Base 3.480~ + ffgcprll@Base 3.480~ + ffgcrd@Base 3.480~ + ffgcv@Base 3.480~ + ffgcvb@Base 3.480~ + ffgcvc@Base 3.480~ + ffgcvd@Base 3.480~ + ffgcve@Base 3.480~ + ffgcvi@Base 3.480~ + ffgcvj@Base 3.480~ + ffgcvjj@Base 3.480~ + ffgcvk@Base 3.480~ + ffgcvl@Base 3.480~ + ffgcvm@Base 3.480~ + ffgcvs@Base 3.480~ + ffgcvsb@Base 3.480~ + ffgcvui@Base 3.480~ + ffgcvuj@Base 3.480~ + ffgcvujj@Base 3.480~ + ffgcvuk@Base 3.480~ + ffgcx@Base 3.480~ + ffgcxui@Base 3.480~ + ffgcxuk@Base 3.480~ + ffgdes@Base 3.480~ + ffgdesll@Base 3.480~ + ffgdess@Base 3.480~ + ffgdessll@Base 3.480~ + ffgerr@Base 3.480~ + ffget_debug@Base 3.480~ + ffget_in@Base 3.480~ + ffget_leng@Base 3.480~ + ffget_lineno@Base 3.480~ + ffget_out@Base 3.480~ + ffget_text@Base 3.480~ + ffgext@Base 3.480~ + ffgextn@Base 3.480~ + ffggpb@Base 3.480~ + ffggpd@Base 3.480~ + ffggpe@Base 3.480~ + ffggpi@Base 3.480~ + ffggpj@Base 3.480~ + ffggpjj@Base 3.480~ + ffggpk@Base 3.480~ + ffggpsb@Base 3.480~ + ffggpui@Base 3.480~ + ffggpuj@Base 3.480~ + ffggpujj@Base 3.480~ + ffggpuk@Base 3.480~ + ffghad@Base 3.480~ + ffghadll@Base 3.480~ + ffghbn@Base 3.480~ + ffghbnll@Base 3.480~ + ffghdn@Base 3.480~ + ffghdt@Base 3.480~ + ffghof@Base 3.480~ + ffghpr@Base 3.480~ + ffghprll@Base 3.480~ + ffghps@Base 3.480~ + ffghsp@Base 3.480~ + ffghtb@Base 3.480~ + ffghtbll@Base 3.480~ + ffgi1b@Base 3.480~ + ffgi2b@Base 3.480~ + ffgi4b@Base 3.480~ + ffgi8b@Base 3.480~ + ffgics@Base 3.480~ + ffgicsa@Base 3.480~ + ffgidm@Base 3.480~ + ffgidt@Base 3.480~ + ffgiet@Base 3.480~ + ffgipr@Base 3.480~ + ffgiprll@Base 3.480~ + ffgisz@Base 3.480~ + ffgiszll@Base 3.480~ + ffgiwcs@Base 3.480~ + ffgkcl@Base 3.480~ + ffgkey@Base 3.480~ + ffgkls@Base 3.480~ + ffgknd@Base 3.480~ + ffgkne@Base 3.480~ + ffgknj@Base 3.480~ + ffgknjj@Base 3.480~ + ffgknl@Base 3.480~ + ffgknm@Base 3.480~ + ffgkns@Base 3.480~ + ffgksl@Base 3.480~ + ffgky@Base 3.480~ + ffgkyc@Base 3.480~ + ffgkyd@Base 3.480~ + ffgkye@Base 3.480~ + ffgkyj@Base 3.480~ + ffgkyjj@Base 3.480~ + ffgkyl@Base 3.480~ + ffgkym@Base 3.480~ + ffgkyn@Base 3.480~ + ffgkys@Base 3.480~ + ffgkyt@Base 3.480~ + ffgkyujj@Base 3.480~ + ffgmcp@Base 3.480~ + ffgmf@Base 3.480~ + ffgmng@Base 3.480~ + ffgmop@Base 3.480~ + ffgmrm@Base 3.480~ + ffgmsg@Base 3.480~ + ffgmtf@Base 3.480~ + ffgmul@Base 3.480~ + ffgncl@Base 3.480~ + ffgnky@Base 3.480~ + ffgnrw@Base 3.480~ + ffgnrwll@Base 3.480~ + ffgnxk@Base 3.480~ + ffgpf@Base 3.480~ + ffgpfb@Base 3.480~ + ffgpfd@Base 3.480~ + ffgpfe@Base 3.480~ + ffgpfi@Base 3.480~ + ffgpfj@Base 3.480~ + ffgpfjj@Base 3.480~ + ffgpfk@Base 3.480~ + ffgpfsb@Base 3.480~ + ffgpfui@Base 3.480~ + ffgpfuj@Base 3.480~ + ffgpfujj@Base 3.480~ + ffgpfuk@Base 3.480~ + ffgphd@Base 3.480~ + ffgpv@Base 3.480~ + ffgpvb@Base 3.480~ + ffgpvd@Base 3.480~ + ffgpve@Base 3.480~ + ffgpvi@Base 3.480~ + ffgpvj@Base 3.480~ + ffgpvjj@Base 3.480~ + ffgpvk@Base 3.480~ + ffgpvsb@Base 3.480~ + ffgpvui@Base 3.480~ + ffgpvuj@Base 3.480~ + ffgpvujj@Base 3.480~ + ffgpvuk@Base 3.480~ + ffgpxf@Base 3.480~ + ffgpxfll@Base 3.480~ + ffgpxv@Base 3.480~ + ffgpxvll@Base 3.480~ + ffgr4b@Base 3.480~ + ffgr8b@Base 3.480~ + ffgrec@Base 3.480~ + ffgrsz@Base 3.480~ + ffgsdt@Base 3.480~ + ffgsfb@Base 3.480~ + ffgsfd@Base 3.480~ + ffgsfe@Base 3.480~ + ffgsfi@Base 3.480~ + ffgsfj@Base 3.480~ + ffgsfjj@Base 3.480~ + ffgsfk@Base 3.480~ + ffgsfsb@Base 3.480~ + ffgsfui@Base 3.480~ + ffgsfuj@Base 3.480~ + ffgsfujj@Base 3.480~ + ffgsfuk@Base 3.480~ + ffgsky@Base 3.480~ + ffgstm@Base 3.480~ + ffgstr@Base 3.480~ + ffgsv@Base 3.480~ + ffgsvb@Base 3.480~ + ffgsvd@Base 3.480~ + ffgsve@Base 3.480~ + ffgsvi@Base 3.480~ + ffgsvj@Base 3.480~ + ffgsvjj@Base 3.480~ + ffgsvk@Base 3.480~ + ffgsvsb@Base 3.480~ + ffgsvui@Base 3.480~ + ffgsvuj@Base 3.480~ + ffgsvujj@Base 3.480~ + ffgsvuk@Base 3.480~ + ffgtam@Base 3.480~ + ffgtbb@Base 3.480~ + ffgtbc@Base 3.480~ + ffgtbp@Base 3.480~ + ffgtch@Base 3.480~ + ffgtcl@Base 3.480~ + ffgtclll@Base 3.480~ + ffgtcm@Base 3.480~ + ffgtcp@Base 3.480~ + ffgtcpr@Base 3.480~ + ffgtcr@Base 3.480~ + ffgtcs@Base 3.480~ + ffgtdc@Base 3.480~ + ffgtdm@Base 3.480~ + ffgtdmll@Base 3.480~ + ffgtgc@Base 3.480~ + ffgthd@Base 3.480~ + ffgtis@Base 3.480~ + ffgtkn@Base 3.480~ + ffgtknjj@Base 3.480~ + ffgtmg@Base 3.480~ + ffgtmo@Base 3.480~ + ffgtnm@Base 3.480~ + ffgtop@Base 3.480~ + ffgtrm@Base 3.480~ + ffgtrmr@Base 3.480~ + ffgttb@Base 3.480~ + ffgtvf@Base 3.480~ + ffgtwcs@Base 3.480~ + ffgunt@Base 3.480~ + ffh2st@Base 3.480~ + ffhdef@Base 3.480~ + ffhdr2str@Base 3.480~ + ffhist2@Base 3.480~ + ffhist3@Base 3.480~ + ffhist@Base 3.480~ + ffi1fi1@Base 3.480~ + ffi1fi2@Base 3.480~ + ffi1fi4@Base 3.480~ + ffi1fi8@Base 3.480~ + ffi1fr4@Base 3.480~ + ffi1fr8@Base 3.480~ + ffi1fstr@Base 3.480~ + ffi2c@Base 3.480~ + ffi2fi1@Base 3.480~ + ffi2fi2@Base 3.480~ + ffi2fi4@Base 3.480~ + ffi2fi8@Base 3.480~ + ffi2fr4@Base 3.480~ + ffi2fr8@Base 3.480~ + ffi2fstr@Base 3.480~ + ffi4fi1@Base 3.480~ + ffi4fi2@Base 3.480~ + ffi4fi4@Base 3.480~ + ffi4fi8@Base 3.480~ + ffi4fr4@Base 3.480~ + ffi4fr8@Base 3.480~ + ffi4fstr@Base 3.480~ + ffi8fi1@Base 3.480~ + ffi8fi2@Base 3.480~ + ffi8fi4@Base 3.480~ + ffi8fi8@Base 3.480~ + ffi8fr4@Base 3.480~ + ffi8fr8@Base 3.480~ + ffi8fstr@Base 3.480~ + ffibin@Base 3.480~ + ffiblk@Base 3.480~ + fficls@Base 3.480~ + fficol@Base 3.480~ + ffifile2@Base 3.480~ + ffifile@Base 3.480~ + ffihtps@Base 3.480~ + ffiimg@Base 3.480~ + ffiimgll@Base 3.480~ + ffikey@Base 3.480~ + ffikfc@Base 3.480~ + ffikfm@Base 3.480~ + ffikls@Base 3.480~ + ffikyc@Base 3.480~ + ffikyd@Base 3.480~ + ffikye@Base 3.480~ + ffikyf@Base 3.480~ + ffikyg@Base 3.480~ + ffikyj@Base 3.480~ + ffikyl@Base 3.480~ + ffikym@Base 3.480~ + ffikys@Base 3.480~ + ffikyu@Base 3.480~ + ffimem@Base 3.480~ + ffimport_file@Base 3.480~ + ffin@Base 3.480~ + ffinit@Base 3.480~ + ffintfi1@Base 3.480~ + ffintfi2@Base 3.480~ + ffintfi4@Base 3.480~ + ffintfi8@Base 3.480~ + ffintfr4@Base 3.480~ + ffintfr8@Base 3.480~ + ffintfstr@Base 3.480~ + ffinttyp@Base 3.480~ + ffiopn@Base 3.480~ + ffiprs@Base 3.480~ + ffirec@Base 3.480~ + ffirow@Base 3.480~ + ffitab@Base 3.480~ + ffiter@Base 3.480~ + ffiurl@Base 3.480~ + ffkeyn@Base 3.480~ + ffkshf@Base 3.480~ + ffl2c@Base 3.480~ + ffldrc@Base 3.480~ + ffleng@Base 3.480~ + fflex@Base 3.480~ + fflex_destroy@Base 3.480~ + fflineno@Base 3.480~ +#MISSING: 3.480~# fflongfi8@Base 3.480~ + fflval@Base 3.480~ + ffmahd@Base 3.480~ + ffmaky@Base 3.480~ + ffmbyt@Base 3.480~ + ffmcom@Base 3.480~ + ffmcrd@Base 3.480~ + ffmkey@Base 3.480~ + ffmkfc@Base 3.480~ + ffmkfm@Base 3.480~ + ffmkky@Base 3.480~ + ffmkls@Base 3.480~ + ffmkyc@Base 3.480~ + ffmkyd@Base 3.480~ + ffmkye@Base 3.480~ + ffmkyf@Base 3.480~ + ffmkyg@Base 3.480~ + ffmkyj@Base 3.480~ + ffmkyl@Base 3.480~ + ffmkym@Base 3.480~ + ffmkys@Base 3.480~ + ffmkyu@Base 3.480~ + ffmnam@Base 3.480~ + ffmnhd@Base 3.480~ + ffmrec@Base 3.480~ + ffmrhd@Base 3.480~ + ffmrky@Base 3.480~ + ffmvec@Base 3.480~ + ffnchk@Base 3.480~ + ffnerrs@Base 3.480~ + ffnkey@Base 3.480~ + ffomem@Base 3.480~ + ffopen@Base 3.480~ + ffopentest@Base 3.480~ + ffoptplt@Base 3.480~ + ffourl@Base 3.480~ + ffout@Base 3.480~ + ffp2db@Base 3.480~ + ffp2dd@Base 3.480~ + ffp2de@Base 3.480~ + ffp2di@Base 3.480~ + ffp2dj@Base 3.480~ + ffp2djj@Base 3.480~ + ffp2dk@Base 3.480~ + ffp2dsb@Base 3.480~ + ffp2dui@Base 3.480~ + ffp2duj@Base 3.480~ + ffp2dujj@Base 3.480~ + ffp2duk@Base 3.480~ + ffp3db@Base 3.480~ + ffp3dd@Base 3.480~ + ffp3de@Base 3.480~ + ffp3di@Base 3.480~ + ffp3dj@Base 3.480~ + ffp3djj@Base 3.480~ + ffp3dk@Base 3.480~ + ffp3dsb@Base 3.480~ + ffp3dui@Base 3.480~ + ffp3duj@Base 3.480~ + ffp3dujj@Base 3.480~ + ffp3duk@Base 3.480~ + ffparse@Base 3.480~ + ffparsecompspec@Base 3.480~ + ffpbyt@Base 3.480~ + ffpbytoff@Base 3.480~ + ffpcks@Base 3.480~ + ffpcl@Base 3.480~ + ffpclb@Base 3.480~ + ffpclc@Base 3.480~ + ffpcld@Base 3.480~ + ffpcle@Base 3.480~ + ffpcli@Base 3.480~ + ffpclj@Base 3.480~ + ffpcljj@Base 3.480~ + ffpclk@Base 3.480~ + ffpcll@Base 3.480~ + ffpclm@Base 3.480~ + ffpcls@Base 3.480~ + ffpclsb@Base 3.480~ + ffpclu@Base 3.480~ + ffpcluc@Base 3.480~ + ffpclui@Base 3.480~ + ffpcluj@Base 3.480~ + ffpclujj@Base 3.480~ + ffpcluk@Base 3.480~ + ffpclx@Base 3.480~ + ffpcn@Base 3.480~ + ffpcnb@Base 3.480~ + ffpcnd@Base 3.480~ + ffpcne@Base 3.480~ + ffpcni@Base 3.480~ + ffpcnj@Base 3.480~ + ffpcnjj@Base 3.480~ + ffpcnk@Base 3.480~ + ffpcnl@Base 3.480~ + ffpcns@Base 3.480~ + ffpcnsb@Base 3.480~ + ffpcnui@Base 3.480~ + ffpcnuj@Base 3.480~ + ffpcnujj@Base 3.480~ + ffpcnuk@Base 3.480~ + ffpcom@Base 3.480~ + ffpdat@Base 3.480~ + ffpdes@Base 3.480~ + ffpdfl@Base 3.480~ + ffpextn@Base 3.480~ + ffpgpb@Base 3.480~ + ffpgpd@Base 3.480~ + ffpgpe@Base 3.480~ + ffpgpi@Base 3.480~ + ffpgpj@Base 3.480~ + ffpgpjj@Base 3.480~ + ffpgpk@Base 3.480~ + ffpgpsb@Base 3.480~ + ffpgpui@Base 3.480~ + ffpgpuj@Base 3.480~ + ffpgpujj@Base 3.480~ + ffpgpuk@Base 3.480~ + ffphbn@Base 3.480~ + ffphext@Base 3.480~ + ffphis@Base 3.480~ + ffphpr@Base 3.480~ + ffphprll@Base 3.480~ + ffphps@Base 3.480~ + ffphpsll@Base 3.480~ + ffphtb@Base 3.480~ + ffpi1b@Base 3.480~ + ffpi2b@Base 3.480~ + ffpi4b@Base 3.480~ + ffpi8b@Base 3.480~ + ffpinit@Base 3.480~ + ffpkfc@Base 3.480~ + ffpkfm@Base 3.480~ + ffpkls@Base 3.480~ + ffpknd@Base 3.480~ + ffpkne@Base 3.480~ + ffpknf@Base 3.480~ + ffpkng@Base 3.480~ + ffpknj@Base 3.480~ + ffpknjj@Base 3.480~ + ffpknl@Base 3.480~ + ffpkns@Base 3.480~ + ffpktp@Base 3.480~ + ffpky@Base 3.480~ + ffpkyc@Base 3.480~ + ffpkyd@Base 3.480~ + ffpkye@Base 3.480~ + ffpkyf@Base 3.480~ + ffpkyg@Base 3.480~ + ffpkyj@Base 3.480~ + ffpkyl@Base 3.480~ + ffpkym@Base 3.480~ + ffpkys@Base 3.480~ + ffpkyt@Base 3.480~ + ffpkyu@Base 3.480~ + ffpkyuj@Base 3.480~ + ffplsw@Base 3.480~ + ffpmrk@Base 3.480~ + ffpmsg@Base 3.480~ + ffpnul@Base 3.480~ + ffpop_buffer_state@Base 3.480~ + ffppn@Base 3.480~ + ffppnb@Base 3.480~ + ffppnd@Base 3.480~ + ffppne@Base 3.480~ + ffppni@Base 3.480~ + ffppnj@Base 3.480~ + ffppnjj@Base 3.480~ + ffppnk@Base 3.480~ + ffppnsb@Base 3.480~ + ffppnui@Base 3.480~ + ffppnuj@Base 3.480~ + ffppnujj@Base 3.480~ + ffppnuk@Base 3.480~ + ffppr@Base 3.480~ + ffpprb@Base 3.480~ + ffpprd@Base 3.480~ + ffppre@Base 3.480~ + ffppri@Base 3.480~ + ffpprj@Base 3.480~ + ffpprjj@Base 3.480~ + ffpprk@Base 3.480~ + ffpprn@Base 3.480~ + ffpprsb@Base 3.480~ + ffppru@Base 3.480~ + ffpprui@Base 3.480~ + ffppruj@Base 3.480~ + ffpprujj@Base 3.480~ + ffppruk@Base 3.480~ + ffppx@Base 3.480~ + ffppxll@Base 3.480~ + ffppxn@Base 3.480~ + ffppxnll@Base 3.480~ + ffpr4b@Base 3.480~ + ffpr8b@Base 3.480~ + ffprec@Base 3.480~ + ffprwu@Base 3.480~ + ffpscl@Base 3.480~ + ffpss@Base 3.480~ + ffpssb@Base 3.480~ + ffpssd@Base 3.480~ + ffpsse@Base 3.480~ + ffpssi@Base 3.480~ + ffpssj@Base 3.480~ + ffpssjj@Base 3.480~ + ffpssk@Base 3.480~ + ffpsssb@Base 3.480~ + ffpssui@Base 3.480~ + ffpssuj@Base 3.480~ + ffpssujj@Base 3.480~ + ffpssuk@Base 3.480~ + ffpsvc@Base 3.480~ + ffptbb@Base 3.480~ + ffptdm@Base 3.480~ + ffptdmll@Base 3.480~ + ffpthp@Base 3.480~ + ffpunt@Base 3.480~ + ffpush_buffer_state@Base 3.480~ + ffpxsz@Base 3.480~ + ffr2e@Base 3.480~ + ffr2f@Base 3.480~ + ffr4fi1@Base 3.480~ + ffr4fi2@Base 3.480~ + ffr4fi4@Base 3.480~ + ffr4fi8@Base 3.480~ + ffr4fr4@Base 3.480~ + ffr4fr8@Base 3.480~ + ffr4fstr@Base 3.480~ + ffr8fi1@Base 3.480~ + ffr8fi2@Base 3.480~ + ffr8fi4@Base 3.480~ + ffr8fi8@Base 3.480~ + ffr8fr4@Base 3.480~ + ffr8fr8@Base 3.480~ + ffr8fstr@Base 3.480~ + ffrdef@Base 3.480~ + ffread@Base 3.480~ + ffrealloc@Base 3.480~ + ffreopen@Base 3.480~ + ffrestart@Base 3.480~ + ffrhdu@Base 3.480~ + ffrprt@Base 3.480~ + ffrsim@Base 3.480~ + ffrsimll@Base 3.480~ + ffrtnm@Base 3.480~ + ffrwrg@Base 3.480~ + ffrwrgll@Base 3.480~ + ffs1fi1@Base 3.480~ + ffs1fi2@Base 3.480~ + ffs1fi4@Base 3.480~ + ffs1fi8@Base 3.480~ + ffs1fr4@Base 3.480~ + ffs1fr8@Base 3.480~ + ffs1fstr@Base 3.480~ + ffs2c@Base 3.480~ + ffs2dt@Base 3.480~ + ffs2tm@Base 3.480~ + ffseek@Base 3.480~ + ffselect_table@Base 3.480~ + ffset_debug@Base 3.480~ + ffset_in@Base 3.480~ + ffset_lineno@Base 3.480~ + ffset_out@Base 3.480~ + ffshdwn@Base 3.480~ + ffshft@Base 3.480~ + ffsnul@Base 3.480~ + ffsrow@Base 3.480~ + ffstmo@Base 3.480~ + ffswap2@Base 3.480~ + ffswap4@Base 3.480~ + ffswap8@Base 3.480~ + fftexp@Base 3.480~ + fftext@Base 3.480~ + ffthdu@Base 3.480~ + fftheap@Base 3.480~ + fftkey@Base 3.480~ + fftkyn@Base 3.480~ + fftm2s@Base 3.480~ + fftnul@Base 3.480~ + fftopn@Base 3.480~ + fftplt@Base 3.480~ + fftrec@Base 3.480~ + fftrun@Base 3.480~ + fftsad@Base 3.480~ + fftscl@Base 3.480~ + fftsud@Base 3.480~ + ffu2c@Base 3.480~ + ffu2fi1@Base 3.480~ + ffu2fi2@Base 3.480~ + ffu2fi4@Base 3.480~ + ffu2fi8@Base 3.480~ + ffu2fr4@Base 3.480~ + ffu2fr8@Base 3.480~ + ffu2fstr@Base 3.480~ + ffu4fi1@Base 3.480~ + ffu4fi2@Base 3.480~ + ffu4fi4@Base 3.480~ + ffu4fi8@Base 3.480~ + ffu4fr4@Base 3.480~ + ffu4fr8@Base 3.480~ + ffu4fstr@Base 3.480~ + ffu8fi1@Base 3.480~ + ffu8fi2@Base 3.480~ + ffu8fi4@Base 3.480~ + ffu8fi8@Base 3.480~ + ffu8fr4@Base 3.480~ + ffu8fr8@Base 3.480~ + ffu8fstr@Base 3.480~ + ffucrd@Base 3.480~ + ffuintfi1@Base 3.480~ + ffuintfi2@Base 3.480~ + ffuintfi4@Base 3.480~ + ffuintfi8@Base 3.480~ + ffuintfr4@Base 3.480~ + ffuintfr8@Base 3.480~ + ffuintfstr@Base 3.480~ + ffukfc@Base 3.480~ + ffukfm@Base 3.480~ + ffukls@Base 3.480~ + ffuky@Base 3.480~ + ffukyc@Base 3.480~ + ffukyd@Base 3.480~ + ffukye@Base 3.480~ + ffukyf@Base 3.480~ + ffukyg@Base 3.480~ + ffukyj@Base 3.480~ + ffukyl@Base 3.480~ + ffukym@Base 3.480~ + ffukys@Base 3.480~ + ffukyu@Base 3.480~ + ffupch@Base 3.480~ + ffupck@Base 3.480~ + ffuptf@Base 3.480~ + ffurlt@Base 3.480~ + ffvcfm@Base 3.480~ + ffvcks@Base 3.480~ + ffverifydate@Base 3.480~ + ffvers@Base 3.480~ + ffvhtps@Base 3.480~ + ffwend@Base 3.480~ + ffwhbf@Base 3.480~ + ffwldp@Base 3.480~ + ffwrap@Base 3.480~ + ffwrhdu@Base 3.480~ + ffwrite@Base 3.480~ + ffwritehisto@Base 3.480~ + ffxmsg@Base 3.480~ + ffxypx@Base 3.480~ + file_checkfile@Base 3.480~ + file_close@Base 3.480~ + file_compress_open@Base 3.480~ + file_create@Base 3.480~ + file_flush@Base 3.480~ + file_getoptions@Base 3.480~ + file_getversion@Base 3.480~ + file_init@Base 3.480~ + file_is_compressed@Base 3.480~ + file_open@Base 3.480~ + file_openfile@Base 3.480~ + file_read@Base 3.480~ + file_remove@Base 3.480~ + file_seek@Base 3.480~ + file_setoptions@Base 3.480~ + file_shutdown@Base 3.480~ + file_size@Base 3.480~ + file_truncate@Base 3.480~ + file_write@Base 3.480~ + fits_already_open@Base 3.480~ + fits_calc_binning@Base 3.480~ + fits_calc_binningd@Base 3.480~ + fits_clean_url@Base 3.480~ + fits_clear_Fptr@Base 3.480~ + fits_compress_table@Base 3.480~ + fits_copy_cell2image@Base 3.480~ + fits_copy_image2cell@Base 3.480~ + fits_copy_image_section@Base 3.480~ + fits_copy_pixlist2image@Base 3.480~ + fits_decomp_img@Base 3.480~ + fits_delete_iraf_file@Base 3.480~ + fits_dwnld_prog_bar@Base 3.480~ + fits_encode_url@Base 3.480~ + fits_execute_template@Base 3.480~ + fits_free_region@Base 3.480~ + fits_get_col_minmax@Base 3.480~ + fits_get_compression_type@Base 3.480~ + fits_get_cwd@Base 3.480~ + fits_get_dither_seed@Base 3.480~ + fits_get_hcomp_scale@Base 3.480~ + fits_get_hcomp_smooth@Base 3.480~ + fits_get_noise_bits@Base 3.480~ + fits_get_quantize_level@Base 3.480~ + fits_get_section_range@Base 3.480~ + fits_get_tile_dim@Base 3.480~ + fits_get_token2@Base 3.480~ + fits_get_token@Base 3.480~ + fits_get_url@Base 3.480~ + fits_hcompress64@Base 3.480~ + fits_hcompress@Base 3.480~ + fits_hdecompress64@Base 3.480~ + fits_hdecompress@Base 3.480~ + fits_img_compress@Base 3.480~ + fits_img_decompress@Base 3.480~ + fits_img_decompress_header@Base 3.480~ + fits_img_stats_float@Base 3.480~ + fits_img_stats_int@Base 3.480~ + fits_img_stats_short@Base 3.480~ + fits_in_region@Base 3.480~ + fits_init_cfitsio@Base 3.480~ + fits_init_randoms@Base 3.480~ + fits_is_compressed_image@Base 3.480~ + fits_is_reentrant@Base 3.480~ + fits_is_this_a_copy@Base 3.480~ + fits_is_url_absolute@Base 3.480~ + fits_iter_get_array@Base 3.480~ + fits_iter_get_colname@Base 3.480~ + fits_iter_get_colnum@Base 3.480~ + fits_iter_get_datatype@Base 3.480~ + fits_iter_get_file@Base 3.480~ + fits_iter_get_iotype@Base 3.480~ + fits_iter_get_repeat@Base 3.480~ + fits_iter_get_tdisp@Base 3.480~ + fits_iter_get_tlmax@Base 3.480~ + fits_iter_get_tlmin@Base 3.480~ + fits_iter_get_tunit@Base 3.480~ + fits_iter_set_by_name@Base 3.480~ + fits_iter_set_by_num@Base 3.480~ + fits_iter_set_colname@Base 3.480~ + fits_iter_set_colnum@Base 3.480~ + fits_iter_set_datatype@Base 3.480~ + fits_iter_set_file@Base 3.480~ + fits_iter_set_iotype@Base 3.480~ + fits_make_hist@Base 3.480~ + fits_make_histd@Base 3.480~ + fits_net_timeout@Base 3.480~ + fits_path2url@Base 3.480~ + fits_pixel_filter@Base 3.480~ + fits_quantize_double@Base 3.480~ + fits_quantize_float@Base 3.480~ + fits_rand_value@Base 3.480~ + fits_rcomp@Base 3.480~ + fits_rcomp_byte@Base 3.480~ + fits_rcomp_short@Base 3.480~ + fits_rdecomp@Base 3.480~ + fits_rdecomp_byte@Base 3.480~ + fits_rdecomp_short@Base 3.480~ + fits_read_ascii_region@Base 3.480~ + fits_read_compressed_img@Base 3.480~ + fits_read_compressed_img_plane@Base 3.480~ + fits_read_compressed_pixels@Base 3.480~ + fits_read_fits_region@Base 3.480~ + fits_read_rgnfile@Base 3.480~ + fits_read_wcstab@Base 3.480~ + fits_rebin_wcs@Base 3.480~ + fits_rebin_wcsd@Base 3.480~ + fits_register_driver@Base 3.480~ + fits_relurl2url@Base 3.480~ + fits_select_image_section@Base 3.480~ + fits_set_compression_pref@Base 3.480~ + fits_set_compression_type@Base 3.480~ + fits_set_dither_offset@Base 3.480~ + fits_set_dither_seed@Base 3.480~ + fits_set_hcomp_scale@Base 3.480~ + fits_set_hcomp_smooth@Base 3.480~ + fits_set_huge_hdu@Base 3.480~ + fits_set_lossy_int@Base 3.480~ + fits_set_noise_bits@Base 3.480~ + fits_set_quantize_dither@Base 3.480~ + fits_set_quantize_level@Base 3.480~ + fits_set_quantize_method@Base 3.480~ + fits_set_region_components@Base 3.480~ + fits_set_tile_dim@Base 3.480~ + fits_setup_shape@Base 3.480~ + fits_split_names@Base 3.480~ + fits_store_Fptr@Base 3.480~ + fits_strcasecmp@Base 3.480~ + fits_strncasecmp@Base 3.480~ + fits_translate_keyword@Base 3.480~ + fits_translate_keywords@Base 3.480~ + fits_translate_pixkeyword@Base 3.480~ + fits_uncompress_table@Base 3.480~ + fits_unencode_url@Base 3.480~ + fits_unset_compression_param@Base 3.480~ + fits_unset_compression_request@Base 3.480~ + fits_url2path@Base 3.480~ + fits_url2relurl@Base 3.480~ + fits_write_compressed_img@Base 3.480~ + fits_write_compressed_img_plane@Base 3.480~ + fits_write_compressed_pixels@Base 3.480~ + fits_write_keys_histo@Base 3.480~ + fitsio_init_lock@Base 3.480~ + ftadef_@Base 3.480~ + ftasfm_@Base 3.480~ + ftbdef_@Base 3.480~ + ftbnfm_@Base 3.480~ + ftc2d_@Base 3.480~ + ftc2dd_@Base 3.480~ + ftc2i_@Base 3.480~ + ftc2ii_@Base 3.480~ + ftc2l_@Base 3.480~ + ftc2ll_@Base 3.480~ + ftc2r_@Base 3.480~ + ftc2rr_@Base 3.480~ + ftc2s_@Base 3.480~ + ftc2x_@Base 3.480~ + ftcalc_@Base 3.480~ + ftcalc_rng_@Base 3.480~ + ftcdfl_@Base 3.480~ + ftcell2im_@Base 3.480~ + ftchfl_@Base 3.480~ + ftclos_@Base 3.480~ + ftcmps_@Base 3.480~ + ftcmrk_@Base 3.480~ + ftcmsg_@Base 3.480~ + ftcopy_@Base 3.480~ + ftcpcl_@Base 3.480~ + ftcpdt_@Base 3.480~ + ftcpfl_@Base 3.480~ + ftcphd_@Base 3.480~ + ftcpky_@Base 3.480~ + ftcrep_@Base 3.480~ + ftcrhd_@Base 3.480~ + ftcrim_@Base 3.480~ + ftcrow_@Base 3.480~ + ftcrtb_@Base 3.480~ + ftcsum_@Base 3.480~ + ftd2e_@Base 3.480~ + ftd2f_@Base 3.480~ + ftdcol_@Base 3.480~ + ftddef_@Base 3.480~ + ftdelt_@Base 3.480~ + ftdhdu_@Base 3.480~ + ftdkey_@Base 3.480~ + ftdkinit_@Base 3.480~ + ftdkopn_@Base 3.480~ + ftdopn_@Base 3.480~ + ftdrec_@Base 3.480~ + ftdrow_@Base 3.480~ + ftdrowll_@Base 3.480~ + ftdrrg_@Base 3.480~ + ftdrws_@Base 3.480~ + ftdsum_@Base 3.480~ + ftdt2s_@Base 3.480~ + ftdtdm_@Base 3.480~ + ftdtyp_@Base 3.480~ + fteqty_@Base 3.480~ + ftesum_@Base 3.480~ + ftexist_@Base 3.480~ + ftextn_@Base 3.480~ + ftffrw_@Base 3.480~ + ftfiou_@Base 3.480~ + ftflmd_@Base 3.480~ + ftflnm_@Base 3.480~ + ftflsh_@Base 3.480~ + ftflus_@Base 3.480~ + ftfrow_@Base 3.480~ + ftfrwc_@Base 3.480~ + ftg2db_@Base 3.480~ + ftg2dd_@Base 3.480~ + ftg2de_@Base 3.480~ + ftg2di_@Base 3.480~ + ftg2dj_@Base 3.480~ + ftg2dk_@Base 3.480~ + ftg3db_@Base 3.480~ + ftg3dd_@Base 3.480~ + ftg3de_@Base 3.480~ + ftg3di_@Base 3.480~ + ftg3dj_@Base 3.480~ + ftg3dk_@Base 3.480~ + ftgabc_@Base 3.480~ + ftgacl_@Base 3.480~ + ftgbcl_@Base 3.480~ + ftgbnh_@Base 3.480~ + ftgbyt_@Base 3.480~ + ftgcbf_@Base 3.480~ + ftgcdw_@Base 3.480~ + ftgcfb_@Base 3.480~ + ftgcfbll_@Base 3.480~ + ftgcfc_@Base 3.480~ + ftgcfd_@Base 3.480~ + ftgcfdll_@Base 3.480~ + ftgcfe_@Base 3.480~ + ftgcfell_@Base 3.480~ + ftgcfi_@Base 3.480~ + ftgcfill_@Base 3.480~ + ftgcfj_@Base 3.480~ + ftgcfjll_@Base 3.480~ + ftgcfk_@Base 3.480~ + ftgcfkll_@Base 3.480~ + ftgcfl_@Base 3.480~ + ftgcfm_@Base 3.480~ + ftgcfs_@Base 3.480~ + ftgcks_@Base 3.480~ + ftgcl_@Base 3.480~ + ftgcnn_@Base 3.480~ + ftgcno_@Base 3.480~ + ftgcrd_@Base 3.480~ + ftgcvb_@Base 3.480~ + ftgcvbll_@Base 3.480~ + ftgcvc_@Base 3.480~ + ftgcvcll_@Base 3.480~ + ftgcvd_@Base 3.480~ + ftgcvdll_@Base 3.480~ + ftgcve_@Base 3.480~ + ftgcvell_@Base 3.480~ + ftgcvi_@Base 3.480~ + ftgcvill_@Base 3.480~ + ftgcvj_@Base 3.480~ + ftgcvjll_@Base 3.480~ + ftgcvk_@Base 3.480~ + ftgcvkll_@Base 3.480~ + ftgcvl_@Base 3.480~ + ftgcvlll_@Base 3.480~ + ftgcvm_@Base 3.480~ + ftgcvmll_@Base 3.480~ + ftgcvs_@Base 3.480~ + ftgcvsll_@Base 3.480~ + ftgcx_@Base 3.480~ + ftgcxi_@Base 3.480~ + ftgcxj_@Base 3.480~ + ftgdes_@Base 3.480~ + ftgdesll_@Base 3.480~ + ftgdess_@Base 3.480~ + ftgdessll_@Base 3.480~ + ftgerr_@Base 3.480~ + ftgextn_@Base 3.480~ + ftggpb_@Base 3.480~ + ftggpd_@Base 3.480~ + ftggpe_@Base 3.480~ + ftggpi_@Base 3.480~ + ftggpj_@Base 3.480~ + ftggpk_@Base 3.480~ + ftghad_@Base 3.480~ + ftghbn_@Base 3.480~ + ftghbnll_@Base 3.480~ + ftghdn_@Base 3.480~ + ftghdt_@Base 3.480~ + ftghpr_@Base 3.480~ + ftghps_@Base 3.480~ + ftghsp_@Base 3.480~ + ftghtb_@Base 3.480~ + ftgics_@Base 3.480~ + ftgicsa_@Base 3.480~ + ftgidm_@Base 3.480~ + ftgidt_@Base 3.480~ + ftgiet_@Base 3.480~ + ftgiou_@Base 3.480~ + ftgipr_@Base 3.480~ + ftgiprll_@Base 3.480~ + ftgisz_@Base 3.480~ + ftgiszll_@Base 3.480~ + ftgkcl_@Base 3.480~ + ftgkey_@Base 3.480~ + ftgkls_@Base 3.480~ + ftgknd_@Base 3.480~ + ftgkne_@Base 3.480~ + ftgknj_@Base 3.480~ + ftgknk_@Base 3.480~ + ftgknl_@Base 3.480~ + ftgknm_@Base 3.480~ + ftgkns_@Base 3.480~ + ftgksl_@Base 3.480~ + ftgkyc_@Base 3.480~ + ftgkyd_@Base 3.480~ + ftgkye_@Base 3.480~ + ftgkyj_@Base 3.480~ + ftgkyk_@Base 3.480~ + ftgkyl_@Base 3.480~ + ftgkym_@Base 3.480~ + ftgkyn_@Base 3.480~ + ftgkys_@Base 3.480~ + ftgkyt_@Base 3.480~ + ftgmcp_@Base 3.480~ + ftgmng_@Base 3.480~ + ftgmop_@Base 3.480~ + ftgmrm_@Base 3.480~ + ftgmsg_@Base 3.480~ + ftgmtf_@Base 3.480~ + ftgncl_@Base 3.480~ + ftgnrw_@Base 3.480~ + ftgnrwll_@Base 3.480~ + ftgnxk_@Base 3.480~ + ftgpfb_@Base 3.480~ + ftgpfd_@Base 3.480~ + ftgpfe_@Base 3.480~ + ftgpfi_@Base 3.480~ + ftgpfj_@Base 3.480~ + ftgpfk_@Base 3.480~ + ftgprh_@Base 3.480~ + ftgpvb_@Base 3.480~ + ftgpvd_@Base 3.480~ + ftgpve_@Base 3.480~ + ftgpvi_@Base 3.480~ + ftgpvj_@Base 3.480~ + ftgpvk_@Base 3.480~ + ftgrec_@Base 3.480~ + ftgrsz_@Base 3.480~ + ftgsdt_@Base 3.480~ + ftgsfb_@Base 3.480~ + ftgsfd_@Base 3.480~ + ftgsfe_@Base 3.480~ + ftgsfi_@Base 3.480~ + ftgsfj_@Base 3.480~ + ftgsfk_@Base 3.480~ + ftgsky_@Base 3.480~ + ftgstm_@Base 3.480~ + ftgsvb_@Base 3.480~ + ftgsvd_@Base 3.480~ + ftgsve_@Base 3.480~ + ftgsvi_@Base 3.480~ + ftgsvj_@Base 3.480~ + ftgsvk_@Base 3.480~ + ftgtam_@Base 3.480~ + ftgtbb_@Base 3.480~ + ftgtbh_@Base 3.480~ + ftgtbs_@Base 3.480~ + ftgtch_@Base 3.480~ + ftgtcl_@Base 3.480~ + ftgtcm_@Base 3.480~ + ftgtcp_@Base 3.480~ + ftgtcr_@Base 3.480~ + ftgtcs_@Base 3.480~ + ftgtdm_@Base 3.480~ + ftgthd_@Base 3.480~ + ftgtis_@Base 3.480~ + ftgtmg_@Base 3.480~ + ftgtmo_@Base 3.480~ + ftgtnm_@Base 3.480~ + ftgtop_@Base 3.480~ + ftgtrm_@Base 3.480~ + ftgtvf_@Base 3.480~ + ftgunt_@Base 3.480~ + fthdef_@Base 3.480~ + fti2c_@Base 3.480~ + ftibin_@Base 3.480~ + ftibinll_@Base 3.480~ + fticls_@Base 3.480~ + fticol_@Base 3.480~ + ftiimg_@Base 3.480~ + ftiimgll_@Base 3.480~ + ftikfc_@Base 3.480~ + ftikfm_@Base 3.480~ + ftikls_@Base 3.480~ + ftikyc_@Base 3.480~ + ftikyd_@Base 3.480~ + ftikye_@Base 3.480~ + ftikyf_@Base 3.480~ + ftikyg_@Base 3.480~ + ftikyj_@Base 3.480~ + ftikyk_@Base 3.480~ + ftikyl_@Base 3.480~ + ftikym_@Base 3.480~ + ftikys_@Base 3.480~ + ftikyu_@Base 3.480~ + ftim2cell_@Base 3.480~ + ftinit_@Base 3.480~ + ftiopn_@Base 3.480~ + ftirec_@Base 3.480~ + ftirow_@Base 3.480~ + ftirowll_@Base 3.480~ + ftitab_@Base 3.480~ + ftitabll_@Base 3.480~ + ftiter_@Base 3.480~ + ftiurl_@Base 3.480~ + ftkey_@Base 3.480~ + ftkeyn_@Base 3.480~ + ftl2c_@Base 3.480~ + ftmahd_@Base 3.480~ + ftmaky_@Base 3.480~ + ftmcom_@Base 3.480~ + ftmcrd_@Base 3.480~ + ftmkfc_@Base 3.480~ + ftmkfm_@Base 3.480~ + ftmkky_@Base 3.480~ + ftmkls_@Base 3.480~ + ftmkyc_@Base 3.480~ + ftmkyd_@Base 3.480~ + ftmkye_@Base 3.480~ + ftmkyf_@Base 3.480~ + ftmkyg_@Base 3.480~ + ftmkyj_@Base 3.480~ + ftmkyk_@Base 3.480~ + ftmkyl_@Base 3.480~ + ftmkym_@Base 3.480~ + ftmkys_@Base 3.480~ + ftmkyu_@Base 3.480~ + ftmnam_@Base 3.480~ + ftmnhd_@Base 3.480~ + ftmrec_@Base 3.480~ + ftmrhd_@Base 3.480~ + ftmrky_@Base 3.480~ + ftmvec_@Base 3.480~ + ftnchk_@Base 3.480~ + ftnkey_@Base 3.480~ + ftnopn_@Base 3.480~ + ftopen_@Base 3.480~ + ftp2db_@Base 3.480~ + ftp2dd_@Base 3.480~ + ftp2de_@Base 3.480~ + ftp2di_@Base 3.480~ + ftp2dj_@Base 3.480~ + ftp2dk_@Base 3.480~ + ftp3db_@Base 3.480~ + ftp3dd_@Base 3.480~ + ftp3de_@Base 3.480~ + ftp3di_@Base 3.480~ + ftp3dj_@Base 3.480~ + ftp3dk_@Base 3.480~ + ftp_checkfile@Base 3.480~ + ftp_compress_open@Base 3.480~ + ftp_file_open@Base 3.480~ + ftp_open@Base 3.480~ + ftpbnh_@Base 3.480~ + ftpbyt_@Base 3.480~ + ftpcbf_@Base 3.480~ + ftpcks_@Base 3.480~ + ftpclb_@Base 3.480~ + ftpclbll_@Base 3.480~ + ftpclc_@Base 3.480~ + ftpclcll_@Base 3.480~ + ftpcld_@Base 3.480~ + ftpcldll_@Base 3.480~ + ftpcle_@Base 3.480~ + ftpclell_@Base 3.480~ + ftpcli_@Base 3.480~ + ftpclill_@Base 3.480~ + ftpclj_@Base 3.480~ + ftpcljll_@Base 3.480~ + ftpclk_@Base 3.480~ + ftpclkll_@Base 3.480~ + ftpcll_@Base 3.480~ + ftpcllll_@Base 3.480~ + ftpclm_@Base 3.480~ + ftpclmll_@Base 3.480~ + ftpcls_@Base 3.480~ + ftpclsll_@Base 3.480~ + ftpclu_@Base 3.480~ + ftpclull_@Base 3.480~ + ftpclx_@Base 3.480~ + ftpcnb_@Base 3.480~ + ftpcnbll_@Base 3.480~ + ftpcnd_@Base 3.480~ + ftpcndll_@Base 3.480~ + ftpcne_@Base 3.480~ + ftpcnell_@Base 3.480~ + ftpcni_@Base 3.480~ + ftpcnill_@Base 3.480~ + ftpcnj_@Base 3.480~ + ftpcnjll_@Base 3.480~ + ftpcnk_@Base 3.480~ + ftpcnkll_@Base 3.480~ + ftpcns_@Base 3.480~ + ftpcnsll_@Base 3.480~ + ftpcom_@Base 3.480~ + ftpdat_@Base 3.480~ + ftpdef_@Base 3.480~ + ftpdes_@Base 3.480~ + ftpdesll_@Base 3.480~ + ftpextn_@Base 3.480~ + ftpgpb_@Base 3.480~ + ftpgpd_@Base 3.480~ + ftpgpe_@Base 3.480~ + ftpgpi_@Base 3.480~ + ftpgpj_@Base 3.480~ + ftpgpk_@Base 3.480~ + ftphbn_@Base 3.480~ + ftphext_@Base 3.480~ + ftphis_@Base 3.480~ + ftphpr_@Base 3.480~ + ftphps_@Base 3.480~ + ftphtb_@Base 3.480~ + ftpkfc_@Base 3.480~ + ftpkfm_@Base 3.480~ + ftpkls_@Base 3.480~ + ftpknd_@Base 3.480~ + ftpkne_@Base 3.480~ + ftpknf_@Base 3.480~ + ftpkng_@Base 3.480~ + ftpknj_@Base 3.480~ + ftpknk_@Base 3.480~ + ftpknl_@Base 3.480~ + ftpkns_@Base 3.480~ + ftpktp_@Base 3.480~ + ftpkyc_@Base 3.480~ + ftpkyd_@Base 3.480~ + ftpkye_@Base 3.480~ + ftpkyf_@Base 3.480~ + ftpkyg_@Base 3.480~ + ftpkyj_@Base 3.480~ + ftpkyk_@Base 3.480~ + ftpkyl_@Base 3.480~ + ftpkym_@Base 3.480~ + ftpkys_@Base 3.480~ + ftpkyt_@Base 3.480~ + ftpkyu_@Base 3.480~ + ftplsw_@Base 3.480~ + ftpmrk_@Base 3.480~ + ftpmsg_@Base 3.480~ + ftpnul_@Base 3.480~ + ftpnulll_@Base 3.480~ + ftppnb_@Base 3.480~ + ftppnd_@Base 3.480~ + ftppne_@Base 3.480~ + ftppni_@Base 3.480~ + ftppnj_@Base 3.480~ + ftppnk_@Base 3.480~ + ftpprb_@Base 3.480~ + ftpprd_@Base 3.480~ + ftppre_@Base 3.480~ + ftpprh_@Base 3.480~ + ftppri_@Base 3.480~ + ftpprj_@Base 3.480~ + ftpprk_@Base 3.480~ + ftpprn_@Base 3.480~ + ftppru_@Base 3.480~ + ftprec_@Base 3.480~ + ftprwu_@Base 3.480~ + ftps_checkfile@Base 3.480~ + ftps_compress_open@Base 3.480~ + ftps_file_open@Base 3.480~ + ftps_open@Base 3.480~ + ftpscl_@Base 3.480~ + ftpssb_@Base 3.480~ + ftpssd_@Base 3.480~ + ftpsse_@Base 3.480~ + ftpssi_@Base 3.480~ + ftpssj_@Base 3.480~ + ftpssk_@Base 3.480~ + ftpsvc_@Base 3.480~ + ftptbb_@Base 3.480~ + ftptbh_@Base 3.480~ + ftptbs_@Base 3.480~ + ftptdm_@Base 3.480~ + ftpthp_@Base 3.480~ + ftpunt_@Base 3.480~ + ftr2e_@Base 3.480~ + ftr2f_@Base 3.480~ + ftrdef_@Base 3.480~ + ftreopen_@Base 3.480~ + ftrprt_@Base 3.480~ + ftrsim_@Base 3.480~ + ftrtnm_@Base 3.480~ + ftrwrg_@Base 3.480~ + fts2c_@Base 3.480~ + fts2dt_@Base 3.480~ + fts2tm_@Base 3.480~ + ftshdwn_@Base 3.480~ + ftsnul_@Base 3.480~ + ftsrow_@Base 3.480~ + ftstmo_@Base 3.480~ + fttdnn_@Base 3.480~ + fttexp_@Base 3.480~ + ftthdu_@Base 3.480~ + fttkey_@Base 3.480~ + fttm2s_@Base 3.480~ + fttnul_@Base 3.480~ + fttopn_@Base 3.480~ + fttplt_@Base 3.480~ + fttrec_@Base 3.480~ + fttrnn_@Base 3.480~ + fttscl_@Base 3.480~ + ftucks_@Base 3.480~ + ftucrd_@Base 3.480~ + ftukfc_@Base 3.480~ + ftukfm_@Base 3.480~ + ftukls_@Base 3.480~ + ftukyc_@Base 3.480~ + ftukyd_@Base 3.480~ + ftukye_@Base 3.480~ + ftukyf_@Base 3.480~ + ftukyg_@Base 3.480~ + ftukyj_@Base 3.480~ + ftukyk_@Base 3.480~ + ftukyl_@Base 3.480~ + ftukym_@Base 3.480~ + ftukys_@Base 3.480~ + ftukyu_@Base 3.480~ + ftupch_@Base 3.480~ + ftupck_@Base 3.480~ + ftvcks_@Base 3.480~ + ftvers_@Base 3.480~ + ftvhtps_@Base 3.480~ + ftwldp_@Base 3.480~ + ftxypx_@Base 3.480~ + gFitsFiles@Base 3.480~ + gMinStrLen@Base 3.480~ + gParse@Base 3.480~ + http_checkfile@Base 3.480~ + http_compress_open@Base 3.480~ + http_file_open@Base 3.480~ + http_open@Base 3.480~ + https_checkfile@Base 3.480~ + https_file_open@Base 3.480~ + https_open@Base 3.480~ + https_set_verbose@Base 3.480~ + imcomp_calc_max_elem@Base 3.480~ + imcomp_compress_image@Base 3.480~ + imcomp_compress_tile@Base 3.480~ + imcomp_convert_tile_tbyte@Base 3.480~ + imcomp_convert_tile_tdouble@Base 3.480~ + imcomp_convert_tile_tfloat@Base 3.480~ + imcomp_convert_tile_tint@Base 3.480~ + imcomp_convert_tile_tsbyte@Base 3.480~ + imcomp_convert_tile_tshort@Base 3.480~ + imcomp_convert_tile_tuint@Base 3.480~ + imcomp_convert_tile_tushort@Base 3.480~ + imcomp_copy_comp2img@Base 3.480~ + imcomp_copy_img2comp@Base 3.480~ + imcomp_copy_imheader@Base 3.480~ + imcomp_copy_overlap@Base 3.480~ + imcomp_copy_prime2img@Base 3.480~ + imcomp_decompress_tile@Base 3.480~ + imcomp_get_compressed_image_par@Base 3.480~ + imcomp_init_table@Base 3.480~ + imcomp_merge_overlap@Base 3.480~ + imcomp_nulldoubles@Base 3.480~ + imcomp_nullfloats@Base 3.480~ + imcomp_nullscale@Base 3.480~ + imcomp_nullscaledoubles@Base 3.480~ + imcomp_nullscalefloats@Base 3.480~ + imcomp_nullscalei2@Base 3.480~ + imcomp_nullvalues@Base 3.480~ + imcomp_nullvaluesi2@Base 3.480~ + imcomp_scalevalues@Base 3.480~ + imcomp_scalevaluesi2@Base 3.480~ + imcomp_test_overlap@Base 3.480~ + imcomp_write_nocompress_tile@Base 3.480~ + iraf2mem@Base 3.480~ + lcxxx@Base 3.480~ + master_grp_idx@Base 3.480~ + mem_close_comp@Base 3.480~ + mem_close_free@Base 3.480~ + mem_close_keep@Base 3.480~ + mem_compress_open@Base 3.480~ + mem_compress_openrw@Base 3.480~ + mem_compress_stdin_open@Base 3.480~ + mem_create@Base 3.480~ + mem_create_comp@Base 3.480~ + mem_createmem@Base 3.480~ + mem_getoptions@Base 3.480~ + mem_getversion@Base 3.480~ + mem_init@Base 3.480~ + mem_iraf_open@Base 3.480~ + mem_openmem@Base 3.480~ + mem_rawfile_open@Base 3.480~ + mem_read@Base 3.480~ + mem_seek@Base 3.480~ + mem_setoptions@Base 3.480~ + mem_shutdown@Base 3.480~ + mem_size@Base 3.480~ + mem_truncate@Base 3.480~ + mem_uncompress2mem@Base 3.480~ + mem_write@Base 3.480~ + need_to_initialize@Base 3.480~ + ngp_append_columns@Base 3.480~ + ngp_curline@Base 3.480~ + ngp_delete_extver_tab@Base 3.480~ + ngp_extract_tokens@Base 3.480~ + ngp_extver_tab@Base 3.480~ + ngp_extver_tab_size@Base 3.480~ + ngp_fp@Base 3.480~ + ngp_free_line@Base 3.480~ + ngp_free_prevline@Base 3.480~ + ngp_get_extver@Base 3.480~ + ngp_grplevel@Base 3.480~ + ngp_hdu_clear@Base 3.480~ + ngp_hdu_init@Base 3.480~ + ngp_hdu_insert_token@Base 3.480~ + ngp_inclevel@Base 3.480~ + ngp_include_file@Base 3.480~ + ngp_keyidx@Base 3.480~ + ngp_keyword_all_write@Base 3.480~ + ngp_keyword_is_write@Base 3.480~ + ngp_line_from_file@Base 3.480~ + ngp_linkey@Base 3.480~ + ngp_master_dir@Base 3.480~ + ngp_prevline@Base 3.480~ + ngp_read_group@Base 3.480~ + ngp_read_line@Base 3.480~ + ngp_read_line_buffered@Base 3.480~ + ngp_read_xtension@Base 3.480~ + ngp_set_extver@Base 3.480~ + ngp_tkdef@Base 3.480~ + ngp_unread_line@Base 3.480~ + no_of_drivers@Base 3.480~ + parse_data@Base 3.480~ + pl_l2pi@Base 3.480~ + pl_p2li@Base 3.480~ + prepare_keyvalue@Base 3.480~ + qselect_median_dbl@Base 3.480~ + qselect_median_lng@Base 3.480~ + realloc_fn@Base 3.480~ + results@Base 3.480~ + root_close@Base 3.480~ + root_create@Base 3.480~ + root_flush@Base 3.480~ + root_getoptions@Base 3.480~ + root_getversion@Base 3.480~ + root_init@Base 3.480~ + root_open@Base 3.480~ + root_read@Base 3.480~ + root_seek@Base 3.480~ + root_setoptions@Base 3.480~ + root_shutdown@Base 3.480~ + root_size@Base 3.480~ + root_write@Base 3.480~ + shared_attach@Base 3.480~ + shared_attr@Base 3.480~ + shared_cleanup@Base 3.480~ + shared_free@Base 3.480~ + shared_getaddr@Base 3.480~ + shared_init@Base 3.480~ + shared_list@Base 3.480~ + shared_lock@Base 3.480~ + shared_malloc@Base 3.480~ + shared_realloc@Base 3.480~ + shared_recover@Base 3.480~ + shared_set_attr@Base 3.480~ + shared_set_createmode@Base 3.480~ + shared_set_debug@Base 3.480~ + shared_uncond_delete@Base 3.480~ + shared_unlock@Base 3.480~ + simplerng_getnorm@Base 3.480~ + simplerng_getpoisson@Base 3.480~ + simplerng_getstate@Base 3.480~ + simplerng_getuint@Base 3.480~ + simplerng_getuint_pr@Base 3.480~ + simplerng_getuniform@Base 3.480~ + simplerng_getuniform_pr@Base 3.480~ + simplerng_logfactorial@Base 3.480~ + simplerng_poisson_large@Base 3.480~ + simplerng_poisson_small@Base 3.480~ + simplerng_setstate@Base 3.480~ + simplerng_srand@Base 3.480~ + smem_close@Base 3.480~ + smem_create@Base 3.480~ + smem_flush@Base 3.480~ + smem_getoptions@Base 3.480~ + smem_getversion@Base 3.480~ + smem_init@Base 3.480~ + smem_open@Base 3.480~ + smem_read@Base 3.480~ + smem_remove@Base 3.480~ + smem_seek@Base 3.480~ + smem_setoptions@Base 3.480~ + smem_shutdown@Base 3.480~ + smem_size@Base 3.480~ + smem_write@Base 3.480~ + stdin2file@Base 3.480~ + stdin2mem@Base 3.480~ + stdin_checkfile@Base 3.480~ + stdin_open@Base 3.480~ + stdout_close@Base 3.480~ + stream_close@Base 3.480~ + stream_create@Base 3.480~ + stream_flush@Base 3.480~ + stream_open@Base 3.480~ + stream_read@Base 3.480~ + stream_seek@Base 3.480~ + stream_size@Base 3.480~ + stream_write@Base 3.480~ + uncompress2file@Base 3.480~ + uncompress2mem@Base 3.480~ + uncompress2mem_from_mem@Base 3.480~ + uncompress_hkdata@Base 3.480~ + urltype2driver@Base 3.480~ + work@Base 3.480~ + yyfffree@Base 3.480~ + zuncompress2mem@Base 3.480~ diff -Nru cfitsio-3.470/debian/libcfitsio-doc.dirs cfitsio-4.0.0/debian/libcfitsio-doc.dirs --- cfitsio-3.470/debian/libcfitsio-doc.dirs 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio-doc.dirs 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -usr/share/doc/libcfitsio-doc -usr/share/doc/libcfitsio-doc/cfitsio -usr/share/doc/libcfitsio-doc/fitsio -usr/share/doc/libcfitsio-doc/quick diff -Nru cfitsio-3.470/debian/libcfitsio-doc.doc-base.cfitsio cfitsio-4.0.0/debian/libcfitsio-doc.doc-base.cfitsio --- cfitsio-3.470/debian/libcfitsio-doc.doc-base.cfitsio 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio-doc.doc-base.cfitsio 2021-08-21 16:43:48.000000000 +0000 @@ -8,8 +8,8 @@ Section: Programming Format: pdf -Files: /usr/share/doc/libcfitsio-doc/cfitsio.pdf.gz +Files: /usr/share/doc/libcfitsio-dev/cfitsio.pdf.gz Format: HTML -Index: /usr/share/doc/libcfitsio-doc/cfitsio/index.html -Files: /usr/share/doc/libcfitsio-doc/cfitsio/*.html +Index: /usr/share/doc/libcfitsio-dev/cfitsio/index.html +Files: /usr/share/doc/libcfitsio-dev/cfitsio/*.html diff -Nru cfitsio-3.470/debian/libcfitsio-doc.doc-base.cfitsio-quick cfitsio-4.0.0/debian/libcfitsio-doc.doc-base.cfitsio-quick --- cfitsio-3.470/debian/libcfitsio-doc.doc-base.cfitsio-quick 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio-doc.doc-base.cfitsio-quick 2021-08-21 16:43:48.000000000 +0000 @@ -7,8 +7,8 @@ Section: Programming Format: pdf -Files: /usr/share/doc/libcfitsio-doc/quick.pdf.gz +Files: /usr/share/doc/libcfitsio-dev/quick.pdf.gz Format: HTML -Index: /usr/share/doc/libcfitsio-doc/quick/index.html -Files: /usr/share/doc/libcfitsio-doc/quick/*.html +Index: /usr/share/doc/libcfitsio-dev/quick/index.html +Files: /usr/share/doc/libcfitsio-dev/quick/*.html diff -Nru cfitsio-3.470/debian/libcfitsio-doc.doc-base.fitsio cfitsio-4.0.0/debian/libcfitsio-doc.doc-base.fitsio --- cfitsio-3.470/debian/libcfitsio-doc.doc-base.fitsio 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/libcfitsio-doc.doc-base.fitsio 2021-08-21 16:43:48.000000000 +0000 @@ -11,8 +11,8 @@ Section: Programming Format: pdf -Files: /usr/share/doc/libcfitsio-doc/fitsio.pdf.gz +Files: /usr/share/doc/libcfitsio-dev/fitsio.pdf.gz Format: HTML -Index: /usr/share/doc/libcfitsio-doc/fitsio/index.html -Files: /usr/share/doc/libcfitsio-doc/fitsio/*.html +Index: /usr/share/doc/libcfitsio-dev/fitsio/index.html +Files: /usr/share/doc/libcfitsio-dev/fitsio/*.html diff -Nru cfitsio-3.470/debian/not-installed cfitsio-4.0.0/debian/not-installed --- cfitsio-3.470/debian/not-installed 1970-01-01 00:00:00.000000000 +0000 +++ cfitsio-4.0.0/debian/not-installed 2021-08-21 16:43:48.000000000 +0000 @@ -0,0 +1 @@ +usr/bin/testprog diff -Nru cfitsio-3.470/debian/patches/01-LDFLAGS.diff cfitsio-4.0.0/debian/patches/01-LDFLAGS.diff --- cfitsio-3.470/debian/patches/01-LDFLAGS.diff 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/01-LDFLAGS.diff 2021-08-21 16:43:48.000000000 +0000 @@ -1,5 +1,5 @@ ---- cfitsio-3.390.orig/configure.in -+++ cfitsio-3.390/configure.in +--- a/configure.in ++++ b/configure.in @@ -173,7 +173,7 @@ if test "x$EXT" != xcygwin && test "x$EX fi fi @@ -9,3 +9,12 @@ LDFLAGS_BIN="$LDFLAGS" if test "x$FC" = "xnone" ; then +@@ -317,7 +317,7 @@ case $host in + AC_DEFINE(_LARGEFILE_SOURCE) + AC_DEFINE(_FILE_OFFSET_BITS,64) + # LDFLAGS used by utilities: +- LDFLAGS_BIN="$LDFLAGS_BIN -Wl,-rpath,\${CFITSIO_LIB}" ++ #LDFLAGS_BIN="$LDFLAGS_BIN -Wl,-rpath,\${CFITSIO_LIB}" + ;; + *mingw32*) + AC_MSG_CHECKING([for large file support]) diff -Nru cfitsio-3.470/debian/patches/04-pkgconfig-private.patch cfitsio-4.0.0/debian/patches/04-pkgconfig-private.patch --- cfitsio-3.470/debian/patches/04-pkgconfig-private.patch 2019-05-29 07:55:11.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/04-pkgconfig-private.patch 2021-08-21 16:46:20.000000000 +0000 @@ -7,9 +7,8 @@ @@ -7,6 +7,6 @@ Description: FITS File Subroutine Library URL: https://heasarc.gsfc.nasa.gov/fitsio/ - Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@ --Libs: -L${libdir} -lcfitsio @LIBS@ --Libs.private: -lm + Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@.@CFITSIO_MICRO@ +-Libs: -L${libdir} -lcfitsio +Libs: -L${libdir} -lcfitsio -lpthread -+Libs.private: -lm @LIBS@ + Libs.private: -lm @LIBS@ Cflags: -I${includedir} diff -Nru cfitsio-3.470/debian/patches/05-system-zlib.patch cfitsio-4.0.0/debian/patches/05-system-zlib.patch --- cfitsio-3.470/debian/patches/05-system-zlib.patch 2019-05-29 08:27:11.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/05-system-zlib.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ ---- - Makefile.in | 6 ++---- - cfitsio.pc.in | 2 +- - zlib/zcompress.c | 2 +- - 3 files changed, 4 insertions(+), 6 deletions(-) - ---- a/Makefile.in -+++ b/Makefile.in -@@ -68,9 +68,7 @@ - pliocomp.c fits_hcompress.c fits_hdecompress.c \ - simplerng.c @GSIFTP_SRC@ - --ZLIB_SOURCES = zlib/adler32.c zlib/crc32.c zlib/deflate.c zlib/infback.c \ -- zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \ -- zlib/uncompr.c zlib/zcompress.c zlib/zuncompress.c zlib/zutil.c -+ZLIB_SOURCES = zlib/zcompress.c zlib/zuncompress.c - - SOURCES = ${CORE_SOURCES} ${ZLIB_SOURCES} @F77_WRAPPERS@ - -@@ -103,7 +101,7 @@ - shared: lib${PACKAGE}${SHLIB_SUFFIX} - - lib${PACKAGE}${SHLIB_SUFFIX}: ${OBJECTS} -- ${SHLIB_LD} ${LDFLAGS} -o ${CFITSIO_SHLIB} ${OBJECTS} -lm ${LIBS_CURL} ${LIBS} -+ ${SHLIB_LD} ${LDFLAGS} -o ${CFITSIO_SHLIB} ${OBJECTS} -lm -lz ${LIBS_CURL} ${LIBS} - @if [ "x${CFITSIO_SHLIB_SONAME}" != x ]; then \ - ln -sf ${CFITSIO_SHLIB} ${CFITSIO_SHLIB_SONAME}; \ - ln -sf ${CFITSIO_SHLIB_SONAME} $@; \ ---- a/cfitsio.pc.in -+++ b/cfitsio.pc.in -@@ -8,5 +8,5 @@ - URL: https://heasarc.gsfc.nasa.gov/fitsio/ - Version: @CFITSIO_MAJOR@.@CFITSIO_MINOR@ - Libs: -L${libdir} -lcfitsio -lpthread --Libs.private: -lm @LIBS@ -+Libs.private: -lm -lz @LIBS@ - Cflags: -I${includedir} ---- a/zlib/zcompress.c -+++ b/zlib/zcompress.c -@@ -3,7 +3,7 @@ - #include - #include - #include --#include "zlib.h" -+#include - - #define GZBUFSIZE 115200 /* 40 FITS blocks */ - #define BUFFINCR 28800 /* 10 FITS blocks */ diff -Nru cfitsio-3.470/debian/patches/06-riscv64.diff cfitsio-4.0.0/debian/patches/06-riscv64.diff --- cfitsio-3.470/debian/patches/06-riscv64.diff 2019-08-01 11:14:53.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/06-riscv64.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ ---- a/fitsio2.h -+++ b/fitsio2.h -@@ -137,6 +137,20 @@ extern int Fitsio_Pthread_Status; - # error "can't handle long size given by _MIPS_SZLONG" - # endif - -+#elif defined(__riscv) -+ -+/* RISC-V is little endian */ -+ -+#define BYTESWAPPED TRUE -+ -+# if __riscv_xlen == 32 -+# define LONGSIZE 32 -+# elif __riscv_xlen == 64 -+# define LONGSIZE 64 -+# else -+# error "can't handle long size given by __riscv_xlen" -+# endif -+ - /* ============================================================== */ - /* the following are all 32-bit byteswapped platforms */ - -@@ -204,12 +218,6 @@ extern int Fitsio_Pthread_Status; - #define BYTESWAPPED FALSE - #endif - --#elif defined(__riscv) -- --/* RISC-V is little endian */ -- --#define BYTESWAPPED TRUE -- - #else - - /* assume all other machine uses the same IEEE formats as used in FITS files */ diff -Nru cfitsio-3.470/debian/patches/06-spelling-errors.diff cfitsio-4.0.0/debian/patches/06-spelling-errors.diff --- cfitsio-3.470/debian/patches/06-spelling-errors.diff 1970-01-01 00:00:00.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/06-spelling-errors.diff 2021-08-21 16:43:48.000000000 +0000 @@ -0,0 +1,11 @@ +--- a/imcompress.c ++++ b/imcompress.c +@@ -8608,7 +8608,7 @@ int fits_compress_table(fitsfile *infptr, fitsfile *outfptr, int *status) + dlen = fits_rcomp_byte ((signed char *)(cm_buffer + cm_colstart[ii]), datasize, (unsigned char *) cvlamem, + datasize * 2, 32); + } else { /* this should not happen */ +- ffpmsg(" Error: cannot compress this column type with the RICE algorthm"); ++ ffpmsg(" Error: cannot compress this column type with the RICE algorithm"); + free(cvlamem); free(cm_buffer); + *status = DATA_COMPRESSION_ERR; + return(*status); diff -Nru cfitsio-3.470/debian/patches/08-hurd.diff cfitsio-4.0.0/debian/patches/08-hurd.diff --- cfitsio-3.470/debian/patches/08-hurd.diff 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/08-hurd.diff 2021-08-21 16:43:48.000000000 +0000 @@ -1,6 +1,10 @@ ---- cfitsio-3.370.orig/configure.in -+++ cfitsio-3.370/configure.in -@@ -130,6 +130,11 @@ case $host in +--- + configure.in | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/configure.in ++++ b/configure.in +@@ -159,6 +159,11 @@ ARCH="linux" EXT="lnx" ;; @@ -9,6 +13,6 @@ + ARCH="linux" + EXT="lnx" + ;; - *hpux*) - ARCH="hp" - EXT="hpu" + *mingw32*) + #ARCH="" + EXT="mingw32" diff -Nru cfitsio-3.470/debian/patches/09-drvnet-format-security.diff cfitsio-4.0.0/debian/patches/09-drvnet-format-security.diff --- cfitsio-3.470/debian/patches/09-drvnet-format-security.diff 2019-08-01 11:20:30.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/09-drvnet-format-security.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ ---- cfitsio-3.470.orig/drvrnet.c -+++ cfitsio-3.470/drvrnet.c -@@ -1257,9 +1257,7 @@ int curlProgressCallback(void *clientp, - urlname = (char *)clientp; - if (urlname) - { -- fprintf(stderr,"Downloading "); -- fprintf(stderr,urlname); -- fprintf(stderr,"...\n"); -+ fprintf(stderr,"Downloading %s...\n", urlname); - } - isFirst = 0; - } diff -Nru cfitsio-3.470/debian/patches/10-latex.diff cfitsio-4.0.0/debian/patches/10-latex.diff --- cfitsio-3.470/debian/patches/10-latex.diff 1970-01-01 00:00:00.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/10-latex.diff 2021-08-21 18:30:51.000000000 +0000 @@ -0,0 +1,40 @@ +--- a/docs/fitsio.tex ++++ b/docs/fitsio.tex +@@ -6269,7 +6269,7 @@ + 0b01001 binary integer + \end{verbatim} + Note that integer constants are only allowed to be 32-bit, i.e. +- between -2^(31) and +2^(31). Integer constants may be used in any ++ between -2\^(31) and +2\^(31). Integer constants may be used in any + arithmetic expression where an integer would be appropriate. Thus, + they are distinct from bitmasks (which may be of arbitrary length, + allow the "wildcard" bit, and may only be used in logical +@@ -6562,7 +6562,7 @@ + #EXPOSURE = gtioverlap('gtifile',#TSTART,#TSTOP) + \end{verbatim} + +- The \verb+#EXPOSURE+ syntax with a leading \+#+ ensures that the ++ The \verb+#EXPOSURE+ syntax with a leading \verb+#+ ensures that the + requested values are treated as keywords. Otherwise, a column + named EXPOSURE will be created with the (constant) exposure value + in each entry. +--- a/docs/cfitsio.tex ++++ b/docs/cfitsio.tex +@@ -3374,7 +3374,7 @@ + + For complex and double complex data types, \verb+nelements+ is the number + of numerical pairs; the number of floats or doubles stored by +-\+array+ must be \verb+2*nelements+. ++\verb+array+ must be \verb+2*nelements+. + + Numerical data values are automatically scaled by the TSCALn and TZEROn + keyword values (if they exist). +@@ -9138,7 +9138,7 @@ + #EXPOSURE = gtioverlap('gtifile',#TSTART,#TSTOP) + \end{verbatim} + +- The \verb+#EXPOSURE+ syntax with a leading \+#+ ensures that the ++ The \verb+#EXPOSURE+ syntax with a leading \verb+#+ ensures that the + requested values are treated as keywords. Otherwise, a column + named EXPOSURE will be created with the (constant) exposure value + in each entry. diff -Nru cfitsio-3.470/debian/patches/series cfitsio-4.0.0/debian/patches/series --- cfitsio-3.470/debian/patches/series 2019-08-01 11:14:53.000000000 +0000 +++ cfitsio-4.0.0/debian/patches/series 2021-08-21 17:01:30.000000000 +0000 @@ -2,7 +2,6 @@ 02-system-cfortran.patch 03-off_t.diff 04-pkgconfig-private.patch -05-system-zlib.patch -06-riscv64.diff +06-spelling-errors.diff 08-hurd.diff -09-drvnet-format-security.diff +10-latex.diff diff -Nru cfitsio-3.470/debian/rules cfitsio-4.0.0/debian/rules --- cfitsio-3.470/debian/rules 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/rules 2022-09-22 05:23:44.000000000 +0000 @@ -48,3 +48,10 @@ override_dh_auto_install-indep: # Nothing to do + +override_dh_installdocs: + dh_installdocs -plibcfitsio-doc --doc-main-package=libcfitsio-dev + dh_installdocs --remaining-packages + +override_dh_installexamples: + dh_installexamples -plibcfitsio-doc --doc-main-package=libcfitsio-dev diff -Nru cfitsio-3.470/debian/tests/testprog cfitsio-4.0.0/debian/tests/testprog --- cfitsio-3.470/debian/tests/testprog 2019-05-29 07:52:45.000000000 +0000 +++ cfitsio-4.0.0/debian/tests/testprog 2021-08-21 16:43:48.000000000 +0000 @@ -2,16 +2,16 @@ set -e -WORKDIR=$(mktemp -d) -trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM - CFLAGS="-O2 -Wall $(pkg-config --cflags cfitsio)" LDFLAGS=$(pkg-config --libs cfitsio) -cc $CFLAGS -o $WORKDIR/testprog.o -c testprog.c -cc $LDFLAGS -o $WORKDIR/testprog $WORKDIR/testprog.o +cp testprog.c $AUTOPKGTEST_TMP +cd $AUTOPKGTEST_TMP + +cc $CFLAGS -o testprog.o -c testprog.c 2>&1 +cc -o testprog testprog.o $LDFLAGS 2>&1 echo "build: OK" -[ -x $WORKDIR/testprog ] -$WORKDIR/testprog +[ -x ./testprog ] +./testprog echo "run: OK" diff -Nru cfitsio-3.470/debian/watch cfitsio-4.0.0/debian/watch --- cfitsio-3.470/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ cfitsio-4.0.0/debian/watch 2021-08-21 16:43:48.000000000 +0000 @@ -0,0 +1,3 @@ +version=4 +opts=dversionmangle=s/0$// \ + https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c cfitsio-(.+)\.tar\.gz Binary files /tmp/tmpuzcml21n/rX5xk5xYz1/cfitsio-3.470/docs/cfitsio.pdf and /tmp/tmpuzcml21n/UbpUyGy8Ex/cfitsio-4.0.0/docs/cfitsio.pdf differ diff -Nru cfitsio-3.470/docs/cfitsio.ps cfitsio-4.0.0/docs/cfitsio.ps --- cfitsio-3.470/docs/cfitsio.ps 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/cfitsio.ps 2021-07-13 17:45:10.000000000 +0000 @@ -1,18 +1,18 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.993 Copyright 2013 Radical Eye Software +%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software %%Title: cfitsio.dvi -%%CreationDate: Wed May 8 10:27:03 2019 -%%Pages: 196 +%%CreationDate: Tue Jun 29 01:24:12 2021 +%%Pages: 200 %%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 +%%BoundingBox: 0 0 596 842 %%DocumentFonts: CMBX12 CMR12 CMR10 CMBX10 CMSL10 CMTT10 CMSY10 CMMI10 %%+ CMTI10 -%%DocumentPaperSizes: Letter +%%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o cfitsio.ps cfitsio.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2019.05.08:1026 +%DVIPSSource: TeX output 2021.06.28:2119 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -78,85 +78,6 @@ end %%EndProcSet -%%BeginProcSet: special.pro 0 0 -%! -TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N -/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N -/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N -/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ -/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho -X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B -/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ -/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known -{userdict/md get type/dicttype eq{userdict begin md length 10 add md -maxlength ge{/md md dup length 20 add dict copy def}if end md begin -/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S -atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ -itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll -transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll -curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf -pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} -if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 --1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 -get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip -yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub -neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ -noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop -90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get -neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr -1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr -2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 --1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S -TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ -Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale -}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState -save N userdict maxlength dict begin/magscale true def normalscale -currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts -/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x -psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx -psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub -TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def -@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll -newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto -closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N -/@beginspecial{SDict begin/SpecialSave save N gsave normalscale -currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} -N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs -neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate -rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse -scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg -lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx -ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N -/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ -pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave -restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B -/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 -setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY -moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix -matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc -savematrix setmatrix}N end - -%%EndProcSet -TeXDict begin @defspecial - - systemdict /pdfmark known{userdict /?pdfmark systemdict /exec get -put}{userdict /?pdfmark systemdict /pop get put userdict /pdfmark systemdict -/cleartomark get put}ifelse - - /DvipsToPDF{72.27 mul Resolution div} def/PDFToDvips{72.27 div Resolution -mul} def/BPToDvips{72 div Resolution mul}def/BorderArrayPatch{[exch{dup -dup type/integertype eq exch type/realtype eq or{BPToDvips}if}forall]}def/HyperBorder -{1 PDFToDvips} def/H.V {pdf@hoff pdf@voff null} def/H.B {/Rect[pdf@llx -pdf@lly pdf@urx pdf@ury]} def/H.S {currentpoint HyperBorder add /pdf@lly -exch def dup DvipsToPDF 72 add /pdf@hoff exch def HyperBorder sub /pdf@llx -exch def} def/H.L {2 sub dup/HyperBasePt exch def PDFToDvips /HyperBaseDvips -exch def currentpoint HyperBaseDvips sub /pdf@ury exch def/pdf@urx -exch def} def/H.A {H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF -HyperBasePt sub sub /pdf@voff exch def} def/H.R {currentpoint HyperBorder -sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint -exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def} def - -@fedspecial end %%BeginFont: CMTI10 %!PS-AdobeFont-1.0: CMTI10 003.002 %%Title: CMTI10 @@ -177,7 +98,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTI10 def /FontBBox {-35 -250 1124 750 }readonly def -/UniqueID 5000828 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -581,7 +501,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def -/UniqueID 5087385 def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def @@ -819,7 +738,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def -/UniqueID 5096651 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -1076,7 +994,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def -/UniqueID 5000769 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -1733,7 +1650,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def -/UniqueID 5000832 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -2535,7 +2451,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def -/UniqueID 5000798 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -3046,7 +2961,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX10 def /FontBBox {-56 -250 1164 750 }readonly def -/UniqueID 5000768 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -3688,7 +3602,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def -/UniqueID 5000793 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -3767,6 +3680,7 @@ dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put +dup 94 /circumflex put dup 96 /quoteleft put dup 97 /a put dup 98 /b put @@ -4101,505 +4015,507 @@ 2D835C03642447F06B227A655D9A5CF45A637C56E7163CFBB15970D77B7F462A 5103E3DB92B0A781A1D977076377C1F7019EB0793711DA2406022BA0DCD47B47 523BC1FB5FCA2D7BA2800FCE8A18B5C5C6CE9E652E375CD20A5770E5077AA859 -3924F7ACFCAF40F5D477BF1D407BBB7CBC5A8B734CA1B778372E8030E2B5FA44 -6F46FFAADDCA84E9F96E70A194B98F12C792CE24D1E8CC2B838662D706B0CA8B -E12A92E0A15F4F4A6E7EFCB1F3268007D4A4C1C70C204399DB54EC1653043E29 -D35353E035710677AAAC9004B381DF4F2CD2D13EDDE6A265016C15A243D7BBEC -2E2682ED4B90BE9914F92D396EDF9104DCF3AEF6A806B382A0D8356B9F0BF543 -013B76298E975CF21DCEE81C27F091AFE2EC40AB92CF91FCC874C1AB8861B541 -16E8BFB4751A83E3676287A38B128FADB873031E5531132C609157955802BD70 -47F35E43D394247FF3FE6754AA3148F40E1140A4AADA335EA8E5B766B529884C -2262EC695865C049B26AAF393C3EFAEC9268861E672334DD6C5BF4CC72D96A93 -AB8EA53FBE134F4F9F84B30D7D4998956EC98AC2F766417B0491BD2774457FAF -26AA4AB1C22F1EEF8088F1C443E74FB70948A3CF8560981988C24B880BC92CCF -5F653E59AFB854449BDE7B1BA37436CE30800FB362954B249611BEAEE180092A -E3D238BD2553CBC6DA57D9BE769006DF36A2271E5F025EBF38D2F59AF73D0094 -CC691E60761391AF90E3ACC05638CEE7A7E49F1A8EB8ED99CBE15D887A107471 -3AE7B4779FCB8B78DEF600702E160312678AF2BE9F2853061E29ECAE989B94AC -553EF580FB1E99ED0A91FC11DB7751461806AB125FC300B21811471EA0E6C835 -6428D846FA91D68CA37FDE02C9DFA6A7E8CF2162BF564758B29383A88A406A97 -6AB76DA0A6164A59FC693303A52ACEF399AE9B8BCB8A7D6F2D2330E743EB2996 -AF49DEE7A861A8AB9D7A5D5EEAD264AABD8AA9A45886D212F4FED114DAD309C9 -3F15FF18972FA9C3A6EDC2F0821009F5684B9B1DFE2D82D8D96D6FB8A5B40449 -C8C87FD2003D8C1D10C4241A06E5B43DBF0EA83FEF44379013EA7F6F2B753DF9 -74A1FA929DAE1082856AA15ACED24796CB23244730C33942E4CF07B885C76531 -6A35CAAC15F4593034B77664B21E0E1013EA10630FB069FAD9F80601EB846211 -F44935226E557477A3A3FF012634C889E7E1A38436C8CD9AF115C681ED8426BA -44549DAA63EDE74318EFA439B5140092300406B498255AD295CFD3080F4FC6A4 -98A7925A5AAF228F976B459D8B422DC6F9499D4608AAF1FBBD8EF7B6D90994DB -207DC9D65077BF6E0C62CD484D1370457B76B26F710D6ABB2C179138F14CBF44 -B80F63C7B91FCF85FBAE57E2B3C7D2E6E5EABD4FDB2017F738B16C32411CCC82 -C08328B73F0B4A0D00B9B437FE42D96B63BF05BD60C5A3ECCCDA5DF0DA2E6A2B -7BC0AE9F05BDFC58ED311E51549EC6FB84970B03C698298323620E906E7D8BDC -8863DD13D1AB4E48559E0D7707D9585BB329CBB4BA87CE3EE8CF8CB7C87AAD18 -BACFC602BD7595EC6FED69D7D551F8586BD77AF5E2D9CA9EAD3700C566F855BA -0F713D96C37A533A4FFB94BAF4714696E398E37D83F7FDAD0C21096087A1DFCD -3F5E41C3F6587266AB616C9DA4847EB2A22D80EDBA245566FD24D13EF2AA07CB -A8DE5C2667456974DD28D364089782C198CD39F3BD9FDC6BA35A01E89826DBEA -D35F874A0D20E4C0CB0A300A68DB4B382646C65CAF16C321CD8DA8A99A2988F2 -84CBB9276C4E952497F169F0375EA7255DA1DDC7B7408C09B14F319238E58972 -56EF93E5F3958D79A405A35EF4A83AE29ED3A08FF1AD9516D05208759809CD32 -F4275C7B33DD61BD4D90091C8B8FD078229493E2638EFBD59E1491501F5991FD -F34C7C4E40DFDFFD3A1C97B6035835C8D4CD5AF3EB632D83A5AAD74814402113 -6D90EF5DA7EE961F3688F576F81D5D3B260CE7F7D1021F4B13A288C5FD47B8D6 -CB460028459572BE4141C5B8BF922C3715B13F224F5D24EE3457D3884286C2E9 -B17FF34D3B4A5B60FAFCFFD25B9C28EDE6CDEC3684865749876A5F920E891454 -9BB728FF14E011BA67948A71BD2867B06F0C1683DD59242EF0AE9A7950702AF7 -48A8A85AAB53F0760A944E3998A9A290D5E069220502BB515757BB02B656BF08 -297B84BF44DAAEDFAA9C1D61D1E5DB9ADE63720923BF96C86E0BC574516E10B2 -C9BB513BA802C790DB0D2448E27E655B7AC91100C6A84CEF86378C8A0D96B28A -64F1C954694E03D2E085E8303E923D9A7391B05C68E4EA240AAEEEF45889F648 -89394C9F7005C97D2FE9E4FC30F642AF82A39D9C3C4D408126C3306D38B2EEF8 -DBDCAE8A1403DC8DB4AC120CD70FCD2BC664DFE52D76ACBD92D1BA24E033E2D7 -8C5E2340D75A599E11FB3B0C511288706E29E467E26CBA5095A95009105422A8 -059A321A78539ECE65CAAD81B4CEDDB07AAC32148EC255681668F72E7C93D293 -F06A944379498DC6C6CF737DA42602AA12D9F790349DEAD05FE904F4961296BF -5308C2E801C7BFACB433FE45480F866EC8163EF77E743F5EB8C63DA91F57CC1B -5B8B9463A0C985368D4AD19521292E22A25A057EC8FE6FE6D834B8F2A97CE5ED -3A1F6A4F667E7FDA6FDC917689AC08CD7549E023E164B0DF05906B5A66A18E6D -98B4AB058A12183EF0EB64BA4E9989AAE44699F10B4FA5D309D458B3463D9F02 -B90846727F7B767257855827027F4E326E3A88035DA3EA3D325582A62ED23028 -CA4F300233404E63F53523FF61AFD79675B555B1E3F815C1CDCDA3B53DA183E2 -1EBE3F5B187D8321A0A2D5B99A304B78645C1FEB46EB87888679CA10AE235550 -0A92876B1DD0A29187F6B5E132D66BC76F02706B405E5C256F4881F4316653A0 -919F83FCDDC2CB7BF0F0976A74B55F0A426D482333C04D683D657B9AE1E56930 -ACE067B6F67B61351DF297AAD8110618C36F0D235171054C26E701927C6943D4 -2719350DFCA9999F31B42E71D5CA148F6A82A776A789E4FBAF707E22B22A7917 -EA90606546BBD00EB679D8546F1F2DD7D82A83E910C4A58DF353134259C54217 -D8C85BEAE5DF2147BC6706E2F3E7F9A16C01584B949D5DA97617A27763AE2285 -91455CF72DCA40EC930CE3EF41E27A9EF991960D17AC0B6AE275E2539E9FA23E -D5601668E49F0402A1FEC020E5754DA7DA71248FE0EBA43793492C9F2026D745 -0E25A4B7CFF56738FB939DB56ADE180E86180C0A149413CAEA99AA601466DA61 -B231506B9DA5D1E86C947F5E891E0915EDBDF677572C22C43574C80126CC9994 -689879DA6E3EC798170C743555FC311AD892156B5311DAAF17AB8A887ACE4996 -CD3C62D6B969E456DE214061B92F0325212DEB63C8D9AE8979C1E0A9AA3B8DD8 -C0D38EC43AF73D74C363949B51844B2221745BE956F0BC4307C6A4AA1D3B9478 -C5DB07D9D0983F54FA6E52EDDADED01927565369582360948D8E2FC49EFEB0DD -EFC5D21E28D334AA2710C3ABB734381126E86A066F06C6C88D9843ABDAEE2744 -42CE48E895F9160CCB9E8252A7382F132CCB9FABA0D56F64D5A301A4FEA845F4 -127AB0513DC75326C66FA6D451B49E45BDA5807F4979C97DDC2FB36371A00389 -5917714745683AA1C3B9782EC6323D06AB790092354A2ECAE62C6AE7C4177A0E -ADAC832CF79541011DCEB8A49AB562875E01DDAF6FB7E10200DDA269A21392F4 -6D29432FA4B27AB32FD492BFDECC025475580ABCB7A8A0143D6298AD1D340999 -85F32E7918B19C8A849D082AB88BD65692A7DE3E2B70C753F9BF427D1F9015B2 -B670129BCDF41B4382A8B1A236E754BAE6243961B292676536CF77FD467F4BEA -EAAEA5F1BB517C89A581B102A1BE1656FC87AA2B9C1D4C2E497B41F2DE8443A1 -5E2DC355CB690E4D9D6B445224B5CB490E8291BD2C1BAE3F75042350BC1E07BE -9A43F21B44444148715C921A2370B9CA18C2ECA90DDEE7A72121B38BDD5246DE -5EE7EC6020157188A0209D16538AFAFC8AEFCC433A4DDEE97B1A7A87E8F8625E -AA858D99AE5E0ECF11C35D7B746F2A8C7107384636B807E6F8A29D18DACDD07C -153EBB37BC12E2F6B422FDF15D2CA7386F38AC761D0DD379687A51B566857F56 -B532A90EBA99970A9C876E28D74BE19FD15E167FB19A1471AC7ECC2E11A0D6DD -16AAE71B8DB7DC76C262A39FA0F67CEC3ACAD88F13E2DEDB968CE04DB6A791D9 -99EEEFFACAAA7A663CD64D87F8B203F8E1C6C71B1F75E43B81387D90573DB8A5 -249E173A4757421323238C9163DF9C703536B0618ACD83473CD065BA73EDE7DD -3615D3444BECBB72CDC9DA6D1ACB666652ED9A0CFED124C5CD4E0EB1EA1B8305 -0B3780A7BD91F8D7AF00872A50E3BF105D1A2D5EE5FB2B694726CC34EC6A1E3E -E8C653CD1A5A2EFE0713D869949B6122C5DF5F57AAEB5AD44BB3EF8B5D708A4F -A001D471152EFA538948240EC786273BE0D6CF6A570E5027CBCEBEAF75FB2F4B -A9F78C88908E515A8806D9AB5614538FA737E3F188344EC16DACA5771BDD5AB3 -A15CA222B7527970E3A40ED9C2878DDEDA4C4832D85199BCB571E3B3C33D2285 -309852724C93E46FE2DF1C74F3AE90D6464BB36FE7B24CAEE87D37F008316766 -D919CBD337FC8FF74E241BF16DE30C65407EB69891A942657599470FF6B08C85 -036C8ADA3A9062B80F9C42F94BA189AD35F8B7F7B11C71AD11C54DCC04A26EC8 -633F520708FDACCFC2C397BC41070F7F952520F3153EFAB04141DC9AEB1E208D -63B45D052A750449E286AD059B04651AEE56065898A9155070CE86DE905F04E6 -40375A9CAA5245FB3583430BAD69F9C861CFA32B4B16FA34A37279DE9DB3EF25 -DE48A0417EF097227C85D1D1F0CF0362D0CF2E767E66134F2C943D9D3F3FCA54 -7CFEB8BAA22C5DBF15D12006684E292E99A4B6AD93AA86AE5733A0503FD4A70E -B152D0EAF839D6D2FD53852EE24BF1FC7528F75B4CB4916270C5DE7509076235 -109BE5CCF700F8D9147A722F0959C4560ACA2591A57168E04EA7BC74A1CFC498 -5489D584F71E1EA8D93C4F30EAB0C625914F2C2962B3BBBBD0A0F01E03EFC0D3 -60162B987D1C902AA342FA2B1EF958CE16C27249576B1C14AE3A18B795577B9E -A3B280712BF3B5B506F902EEDE93C1FC89DC89FCAE4219D32D2B6CB53C269D00 -CBC611A9B8AD6656B8255F21D1057B75265E1B8532FED07AEB16ED73E71EA9CF -3DDD473330760574B8C0825ED29D0F6A869C3ADFA9FB85B8544D8313B6933E83 -FDC9DC967CBC4A6714F0317449079864D5A46EC9948C85F3F5259F1969768C79 -B8E2DA43CE1A41E9C5258A153EB519890686412080FC284916B16CE6C5295D7C -AF9A38B91FD2B9E7560BF7DFEB03DF11CFF76C7CFACAB128CF66FFD2DDE4D504 -C8CCAF423E2CCA3E691EB544BA99B4C2CB7AD3DF81F3E26CFD00503879F75801 -0DA1B01681BDEAA65A66C5B7BFC826548C24AD0969154508CD6560CF48409F78 -8F80F7E41832C7B11A5085B662D6693B7536A9192F66E9069A7135DBCFBAA4FF -EB2D140BC2892F6E4CF53A2FE00C7316E26B2EC8BE5EE945C8729F30A0668E33 -A209889EFFE29BF206C41C5C358F03542035550CC065B97A1DE21C153CF36F61 -ABC1BD80B5BDAB722FA1F26ADB0404A70008A7B90061889D57FEA489603A9D23 -6D6A52DC0A5126B89CD6D65BF1D7150272CB5A5C0F7EA04E4DC4323DA05E4A92 -9CBEDDF1105F7B9AA16B5D3F89B7B9DE0C04F2A202B086FF687A72596DD27252 -7C8ABA15EEDACF85A3325DABC94520E4645C9CFB42B667D8BE3140E95EBCFA50 -2EBDF1CF7738EF7C58A18F8D15621C2FDA0E0BD823345F409FD6841AF5CE3CFF -9FA922E6E8254735B2AD5FB6084608C5A827A4DF70A406D941E90E15726529C5 -9E7E28D25B01E77B80A9643541BF0957EA5C8A0E2CB363028D01E155BFF6E70E -7C5F53C8432295D564170D4A51863D744ED8785B758AAFC079B681610D2E2EB4 -27C4608B7428E84BD6CDCB5C3DB686628AF0FBE1F9DE9FED1C1270CEBE299206 -ABBA0EF32BBB968FA149F548473ADFCC60FF3BF453C04C9ACD9F8B7DD4DD219F -B435740D1183AAC62E5DE6E285338C56A7DE72D60E209E70D84A5DC7F0BBC837 -06A752F86D5A8B2F487736B77B650685C08D1FF45BEC66D4D2D8351A07F90201 -24917F94A8A93AD36F66802C5765939B1932B86738F42738C29C1AA443E06438 -51AF7D985F39CCD46C26E7DA86A5411DC53E4395398DE3EBC8728355AFF1C4F8 -98B8BADB53A454010B90E9903D8051761DE761BA984D3E726AE61F7A52D7D5C5 -02E2F986B21DD6F36A84584297D71E30FE820F00C5856E7E1B290A61957B184F -D0E637D06009F7C90033DAA8AF57A5578B42341B415C1E25CDCA1C25A7284D71 -66F1CA34E95A7CAE5452CABD02AD41264991EEE452DEC552B94D3824EC524F70 -28359E7489F1E37889DE27A6D6CAF13BD78BC777317DFBD14624DA00D66546B4 -09CF66F7F0DF208A959B7819D8EA7971CB714B2D29A23A73B117D36093D371FA -8483FF2587007832E2B46DA28A7283F7637FED147769A0CE186FA4DBAD0723FD -A6FDBD7FE0AED2C101F8461B83F652FF7DD7BD0581D97D406A9C3ACD1A7D58BA -6E3E34677BEDD37690A103794E96D7946BC91FECC6BF995555ACE2A315FDF2D6 -F11B3E7B1F036BC1D443C54BD9CAA22334A79AA6BFBBA117D251F3822D6BDE09 -2EDCBC75E3D9CC9C627837ACA4B44C0E0A35E0DCFF81A66F1CBB32431EF1241F -607139605058F61B631A979B663A2220EC0DCD732D68CA443789626149CC5D08 -AF0A1D8A4E5DDEC60CF5608EDBEBEFF99C0852E51C94D9928885FADDE482A978 -9E117ECED05CE9F848E330B10ECF37CABB5EA5064F7023640D5175B1FD01834F -9DAA446A55B8A1419E9F7FC24729ACF51650772238E0FC37851DB971F80822D9 -E23BD72ACCDBDB27219E8C47594DB98A2E3E34ED80D0C0BD910BD3CF02DA009B -7C926DF09AEDEE2FA4273DFB95A3726C742CFE1DC8465F799C3BA9E680304A74 -A7A1B6C2F8176F7D91F11B9C825B40DCAC79C3B14C2223533E349348232F1DFA -A55C5721067F890CFDD1AE42E9A58312D91A4D4D87E305A07AD091BF2D5EC089 -B7D6B04A641B07EF3F74162C54B88C6AD6B6C56E12EBCC6AD0F2CCDFCA6458B4 -3D487D2A8543B7EA5D9B88C03FDDEE3FACABDB912A45524472BD000CA812A3D1 -FB37C1B2D22489D24CDEE01ACBA321E61B16DDFC21E456F370374729794A1D59 -D1C331C4988D614FBBC207DE43A12970A6EA1708C770303C294E04319BB2AB31 -D31BE5C587D864754B9D1742FD0B0AC36EA82C5810060167685E32F8AF002CE7 -2491DC5FACE715CA95DDFBD5EC5881A7AF3855C0F8987CDF2672DF629C2A8781 -7F81E69224986FB314B6181F3643232458991417543A5AAEE25E35A144CDC94D -6A0D4E892E66F2633EC481B58DC28F8EE697C07945F36F9070B052C0A8CD9314 -44722F594EDB0F3661F1D029550AF11BF7DBB6514D6A08BEA0FFDCF8A9CE855C -0D29679417F2076B114988972E0BBA258FCD390D420D8ECB0AA93996431541EF -A3C0073515081D6B79E8513B9B2E60483CFA4D1FF5FCD16449F6260DF820FEC7 -8AE311F50650910412752444024C4EFCE4B22B20D507C7006789C52B018E46EB -E6FE026EFC417B67EE01CF5C2859DD14C8B1D420FD390D81D82D668F6456FC10 -F5633BDE01C401FAED210B508E7F26F634E9E1545312E2F3E5F1E0B379758677 -DFBB4B9FDA7881358AC2CEE685A4845839F72057D485A47763B7F42D9E42109D -E0A6B06631FAE13FB5F523705495FACF48B2C6977DAE76EFB3687808123023B4 -0DF3F0945007962161503FDA82A07AF255FAB5B0D979D76351522E8241F1EB5D -676F3F3787AC31636A186CC7B04353D2F388581E723E176922EFD56852987E7D -CE6C9C68BFEE41F6F90A228DB7DF0036EBA4E00931D1A1A19F8B197DB7D290DE -67B6F07FE1FB9C835FC3519BA08922FA39510309EEB07AB537EDCB8FD8020CA3 -E607FDC574741FC77D838C41315FFF6EE25D698C5D1AB0080CA43821994A5A76 -87A1A4C05E144EED96433B5B0B4089FDBBF9C6BF7F7157DC120A6F27230EE68F -DE384C560192844F85930FA2192C22EE73086E32C7AD0C406C549DDF024A8D09 -65D316E895280DD9738E80626F430160B27721C98A969026C39853101B946154 -468B9E87F1B1DA540D51C2152CE8E83EE878B7591EDAE7200D539863937FEE22 -148B15E4D76A034DCB97B36ACA6433D4A43510E7A1B0B6D6585E69C87B8979B9 -3DDD5016A03987CF4893152A23E93B493F615C452F976093996A684F2226EF5B -AEEE21BF467EAD664532A1C3E989149E9882CF59F5DAF2ED2D930CB2A6972D1A -E6B625DF30AF635ED9A5783C017EA310344CE7E43D70E60AB6691E546D33B687 -C2C5B0734A2F6D8BB43C841E3C17F3B8FB07EF520ABCF4B34B85E9F6717C455F -2EEDF3F55A4F33167F949B2051A77C6F8B70271D2523705257F03DF774EBF474 -D0E7AD6B09C107AE462317A120FFDBF0B26E19A48E05C9B78AC686069295C684 -77223B6FEAC59D29670C3224636A0212041A111B18FA775B45C5FDCCDB5011E9 -27A26847366136EA7260979BEB5F1F74783C7C16E02A9330A03CFEE0EE625393 -7BCA3EFCF36B5F27E5AF9B261C1F7E5FF889304A42562C89A748A8F233758E22 -AE626E74DFD577F337DA8B99390216F0CB60C479B9E3E38360C024C5780B62E3 -AF8BEE68ABE4B5E5318688D34568D0E3EF4AFA5AA162A45228B30EDF6ADA377C -5720AD8583E953CA6E3C8F895B08AA2A5CE66B09F0B434DD209F868E69833D3A -6EB0D053711E48745CF495F517AE46E7BDB5AD7D3AC9825BF3D26151C4049054 -4F7E29184F2EB01280E08D17C1B8B87A6ED61861F7445C226284125367D1AACF -C9B9B1C00EF53905B5E0B28CD1BA4EC737EE6290E1D2F4484EE4CF51BE29A352 -E2EF6641E817BA676773F318B2793399E43A16076A01340A890DDA03414A927D -43EA11BC4D1D0A08696EC72B537E01E7C3C282A887E6F6BACC427A3A801924BC -0E0E09C27D30A9BD8841FC28DAAB4D2B43A6625C49CDC652414BEAAACB6E1659 -234A26E72CAF05ED7A1567A794264882940CBB07A729D6783F6FA2DC2F8D668C -27FC1F8D60CF0105B65391B4C567687E8D0315978E8210D0234BA3707CF410DB -4557083DC0E1C62E3DC9A28402EB0E873502B8F08A524ADDD20A2021255F39C2 -767D1468013FF5A0DEAF81FBEC60EEA473BA045C8FA39DF2B6E57DA772AC72A4 -02BC8D14BCF6CADE25DDFDAA972E280E24B2826B880D6A47AA0B8B0D63D32364 -891BE63CB3945CA9CD4EFCE47C27863CA07E14B092558AA2780A53286DE8A70A -7358D914023FE378D3B8C51B65E37C6399F1F4E7CFBFB8D63C4CCB9A51C98104 -312A1310C77228F457F3E78395E5C15F561F98C3BA34A6FC578943CD8FBF05FD -E0AF33F502EF4413EBB9129A87B4973103771C59B62B072A13F885328F3AC5B1 -1F0D2CA896F6E22EC773F71CCCB1076B5831096D45FB0BADBE0C7407FFDED225 -10AE5ADE0322DDBA9F2B82A2FA751D518FAB85AE4F7DC14B4DA856833A3E8B45 -DB33FD0C218FB1E2975924DA1D72692650EBDBE2BF6FAA12827EE7B8CF219F0B -0FA8517A6584481F482222B6BBEBFC8C9B3204C0B05BE4EC2DD8B856A5F79F81 -9CC99EF71712BF6646358CC9C6A9AC3542D8E6F56E118ABDBB04F32E6661F723 -435923AA31F3B1D2F2FB45C1BC044B6C0BBBD4901903B0163E9B311E2000218A -1A53D96BC002D4B0975E5F8BC822F6D2597B4B6D9D223266FBC967DD649A7675 -DBA06506D23BDC306ECD031E5F77A734F2E4721E7B00F530A1677566E9A80FAE -659787F01A5F4E015B3C75D6844AEB8B5494B4E513E51CCBCD94919EC834B6CB -C059C5B1C3C7611F6A7E46D34371CCCE19EE0EFAA40F597FDE8C9BA86FAC3CAE -7D9818D824235BAD2F1764A349E1A0C725770A687CD0A1732E6952D0AE1FC811 -A3723A649CABDF3D0166807A454833D646ADF2F149C9F5FA29FE7F4BB6A4D1F0 -3B5FCF799F6D3312A5133C587D2EF8B3ECF343BF716D79E26B7F37E68B2A12F1 -C008822F7A5D874D5D23480611277C10C8553E279CA1B318D70E64242A89D8DE -E09F3E2BD9A320E8EC73038D0063B8D046BF325BF7C7AB02D1F5192933B7C6E0 -E3F7E38E08E615F16F7D2956F24D399E3EFEA79378BDC090671A51806CFBC44F -04EA601C1A200AB535DF6F42CF02213326F2E3A7138D6A065B15A2F6A9E9807A -A20D929BAF627D6E6F127FDFB4BB6F51A33757FD8DCEA2E4A6FB32EF19E6E03D -E61C54BC6BF92CC133AF30FA68958F218F031FD35A369A3D410F3587F244F1BB -CF97BA23323F61BE1893A8152648A719B5BD63ACD46D6AFD18AE1EB42B2093F2 -12C473CD4DA1AC31D44427E4350E3FA08C5CDA8665FF6E98D3A914B83D4E5B74 -79D0827B36A7A9E74AECCF9F29CFCC49AE051FA4EF4555D9B16D905963A7DAB6 -14FC2644250DF4A344B55C7402C7AA36E341889D962337EF370AA99FEDD2330B -1D7D4405EF68872A682AB684C10281AEB8CC2996C8897781B4BCE7E29AEBF1AB -FF648F9885C83C7B3375C0F3B70745E44381549A1F3C88A13D1407E15070F138 -608F280B341630F4A598777F99D41FD2DC17B867238C2DC2F1CA2FD79B012FFF -FBC6943EBF63DED699A4E902DAA9C27DAF2EE4D54C24076230D30F70F9C40153 -503B552379F8855D2578B85BEBFBCF5D2766E4EF98EF4E790A79D8AD6723EDE8 -FA6FCEA027E3145F581619772BC6CBF036FF2B3BB3F7E3F6EC6F8A4F4B81A922 -71736CCBE1A283439B7A6CAB79847EF0A4193AB8BBF264984CEE5B776A657BAC -0FFBFBE8871F37768D960EDAFDAB7B58DA1D8D133765A8BED63389AEC51D490A -5B0424BC8A13C448F7913C2E1FC941BFDAC308A9C375CF5FDD1B5FD726DA410F -E7B50E26E33F9DFDEA2E64DCCE5C4FBAC270570D3CC42E21BBF8D3495BC0A336 -0ED0055032C52D4722BEB9B201738977AD5C929DF16801CC175D6CFF249F5464 -B0ACAE1691389250FDB44B1DE006AB17F7964C3340995AC49083C95B6C62C4FB -4C8518A1115D541CD780A66325D14FDF6DE91610E3F996F19BBC54B7174D1F06 -284D39ECA67C521E7EC560E16F240396819000AB4D2FB7C985FC805140C2538A -DAC32728A06D19EDFEC90F8BA8752186F91EE44DA1E52EB0B8AC3026EB1F35AC -8D426FC6B8CCE39A468B8959DEFB2F2C54FB7018D09AF19B186A21E815C94E78 -9CB2F0A9A863AB7B88F31940EEDCD26248E71205CF0A129F9007793F4031EB15 -6570DA7F5B4EDDC0CBA699EEC8AB73FC7A630964B2410588411F72F0075ADE11 -5F6B08215F853CEDF885329008FD423E0933715D58152EBEFAA5E75DA3DEC9EF -06ABBBEC61C45E146265539CF7A9B3A545467F5D28DE4EAD3AF23E35E3445FAA -77C78C3150A74E416372B150CD34B1A8DC1C81D8B4AB6EF7D111C73552CB4D27 -31FBF52232618E495DB14851336FF5F0C930F84E4B58477EC66AD6AF4745C41F -6786394E4818642A6A5AAFF78F31E55F94440BC7E10FA9B8C5D2E7397234BE3E -522053F0FF03CEC74AA6A246414AC09633E5FA377247D20741AF2EF56E5C0B26 -AE7E76ABF1FB4064E5F3737415A9A21F0944AB2FC7A931B6B760162CDD05413E -8B551E7E4D3B5C46490AFB5C74110FEBEC9355186155FC4FC27631FE2EEC4C80 -736BECBACEA0D86DF66857003511657BCF1457864A4ABEEC53BC085D6AE96503 -7346B6706C05A298F16CFA54D4184BA475121327FD4D20DB73DB48A906B49D29 -6C705B8EC088C579FBC6E2EB96C0AD024E800115B0CFE4B91748964659A96332 -E2D7B49C2FAEC1CE6A68804EAEB23498928AB92879497F3B19C9B5F78806CE1D -71D1311FFEBC6EF8774CAC0D1FC9E59F30837A5EE259486457FCC5FA83032D43 -ABBBF0CED95315B449ED6ED79C87101B12833996604CED80023BBAA7E17CB98D -64D2166E536DD19A8239A14AA6F75F7D33E31E6F2AD7B2E5E8A40AF52A433CC0 -CAD89CDE1244854F7D14299B685A32A15E288E98600D6434AE9D51ABB2716577 -CB993A33FCA6F1351E0F6D7F187CCE230CDD0E814081F890948B6B5F2F6D1712 -D22B3C589A3EF41E24EA201D65CFD58F12B34F695DF69937B2D9040BCED0C0F4 -F9BFB73C17E033BECA1721FA0997DB4946E86C7941AD758A7C7BE59C3BAAD4E9 -FFD107F7D5EC90174D15FF30EC573C54898659A1716E05DF8F665E0D2DBE73F5 -00920FCE50ED6A4543CEC538BE4061245F9658F232A67C6990E0C3F4E16624EE -A9845F3DA48A19DB26923DFEAA6EB89AA3F5A90B1749BF86F4ECCDE32F463C67 -3EAB0E71D9F361F18EFA7A88B1C12C26B88E6B791F61CE533A463474530D5AE3 -CFC1E4825BF7AF2185E3A7CE5C7200D2F7905C7EFD6A1B380F2B4E6C2B660148 -F857B32920AD49FD6C53359E188FA4345C0E8B38D631AFE41373782F0CD3134F -4E7D3E0A3522A04C1284542F6D8F972303E6B38868A2C078D4D9DA5ADA5BC9C3 -16302C1876D482F16DEDB4DEA5B94A708DB22FA06221B99D587A0A19F0ACC068 -096B1B79589C971300A87A517B8B1E41AF836C97830E814191E0D91061AA2D58 -9BCECED0EE5C28400FADDD1780EEE30455A4F32AE05333C6B07F1E6D3DDFBE83 -F24F56E14001D304A05E6129F9DFFD31F60E6A3F9F73BF67017CAF4DAD0D3671 -2FE8CF73ACDEA52C764E0B6B984498AF0306BBCB470862686789B5BD6C3FBE59 -2C5732682FA1579B82F42E3EA2AB297E7B682ACAB0C3E219AD0E8C652CD9D7D2 -742D2DF2627A2D151F474730BCDFBDDF7AC2919891B0557014A4BDDBEC7A28FD -38D2A4295E94795F3A5CF4DBADFF5BF62E9230E7A9090215789982195242F51D -FFB5AC9C45B463FF998AA822EE752890AE26B4B63D16DA29A627E6E897DFC8DD -388B79F18110A6BBC40A15A7B29461530A52E40C20BDFFDFCAD82BF8CFE5B746 -82F73B5E171DF97356EFABC70213F64EC4111F90B26C4BFF95B370F2203F6292 -3101FD2E377131F2BAD942471E70B6121246470EB8C957B60AE08D6E28689B63 -74FF4F0F5C0AACD1AAE2D7F52CB3B29A2120FB6E75045A9B6F60D28E79318A63 -D9E1F0453EB5853E5EEB0210013A98B16B4BF08A3055D41BAB2612373A32925E -B2C6A82B40A9D22E1CCAD70E8C3C6618B566B6BC1E3278932FE809567025E881 -B4678AF1146C89EE1C4A4EFB5FD3228AE24964FABD15B337BAF7A238C82FA558 -79FFDFE405D5907CA6C3B3D86F0661D626D5E6C8C7A13883C5E834D98767F284 -818C6F3A36D35E31698E7996BCFD63F07BAE732EAA795FE422F2452B97986AAC -0E7EE0EA09785BF8E7F0C6E125BB9399F85088D28312B61256DD7B6CE1D4911C -D11E8E7EEE175CE8671BD2905D223E9207E0F406E87BFB420873558DC222C1F4 -C125D9F6A9531C3E7700F72F80219D1B4689CC4684A82C40F9E589505614B993 -63B1B15194DD888291B16DDF14598C4A51D09E01743AB542D8DBA2BF0A8DD076 -88E1924ABDF47CF9F906EC3F638D11337EA844DD51276381821C3530B21D6AEF -A7AB07B5B86CAF98DE356B6286BCF3CB691FAD770C242394CD61F3D6972FFD8F -85EBB2AE29F22C17A215927231397C413384F8B28C889E2AC83200C7504C850C -FF98B7C24D0233AA1AD3CED288A60E34962DC5139B14117AAA547BD323F7E0DE -62B34D0400B298BB9F81E5F6234881F52AFC972E93633B64AD846151FFB6B097 -B9AC550DAF54BAE97E8660FC8BBF68C77D442804A6230C84CFB1D4F955D24157 -332BC0A21CE34726B68D7E6F04704413AF810F8C08A364B047C0BC9F251AED0C -60450012DE236A841C353EB7B543FFD540CE32FC5A7339099206EE05DB7E2141 -F3042D09F09D3BDF71131FFF47E453A883502D5CD3DCA15ACCD5C27FABEA2AF3 -734A704D8BDB74982DFC0734B7542F30EF201B46DFF33A05CC65B8F0E33DDC70 -13ED94814F13EC56AA45AF890DC9BECADA7F2386DE2FAA90EEF0E338541000A7 -96BD4A367C0DA13966C4D754BCBADC383DFFC442737236789BE2BEB7ADFBB170 -4576A1FC1134AED8B2AD1E7FB0B887317DE34228C2FEBD9041CA35FE2587A40B -22E9AF27CCFE32E557D5618966C1FFA4FEA9A494BEBDEF849A138EB6E849A008 -3387AF746556DA497A0F92AAF5314A956D2244A32AF30D02B23DC3469FF51138 -B8314E2FDBF8ABF72228354771E365832C4253BFE375C2BB9F677372C68BA937 -E4BD8186EEDF7F9204B6F0E03D0C3B4FCEABC7DDB9E258A2178C05FC1619F282 -AFE2542E25FD586DE1D889D16D74EDDCC45E2240077433076029E94D57954A91 -438DE75ADEB420D2B2CC5DD996067B5C870DF055CC8A992DC247CD8DE04C94A4 -4E00000CE66095E1C46B230CCA2363B45DFD28C678DDE5A95AFC749B743ABA2F -26D45FCC07BDD1B9CBE19FAC80AD17EF1306A6E362D7A52BC9C52636A532823D -0CB253569E5DFED87EC2C5C3B2AA12C9813C8673B09AC939A5675E88A9DDACF8 -47F5CB07FBA5C46D0149AEDB5033DD121EA002DF8BF12D3405DE91F990FBA782 -4B8CB09EF63DF013632FEF9EF012DE1C8A96593530EBBB20F952B691E0FDC5DD -AAF0D54F52B61B50CA6812CF67F8CBDFC446BF74DC285777CCF5C3BFBDA4BF72 -71427F4EC09900DCF3328A3D27C5483E51E7CE1C3986A50F7E6C9EB2F48375D2 -DCE4F4989810B5AFFF6B8860A5A70F9F41979360B0D9588395488B2F7BD81514 -480633B4DB840C5B0725E91EA94C06FBB2E5E0954F7B1F25FEE20EFAB5DE30C2 -C7B6F4A7ACC27F273FA88036A559A5BCB5C2B6BB4AB6AA37783F622545406C12 -F4BA3E807EE6635DEBE5D4E22E64684CA40938D3E95AB500AE1662B9BBAAA76F -3F1448663CB202561EAF1BCC8940D475E0F27BE5267D0DA5A8C08659011BA66E -2DB1421A813EB81B08EF8818E50937723CDC4B7D36A9E977215E7AD26ACD5B4B -A0F143B8EAD373BC9F91380D54D29581E33C083C90C361DE8600DD1AC0177C9E -7CD271E3B91A7ECDAE0E5C16DF983B77BCCC9B8EC0E91E029939C1FF7498713A -5612CDE76FCAA629A7DE101647558572B5A8797D3DF2179570FEB1BB44971F23 -B60B68C369B11B1AFC681CF064473F43E6295881A5A2660DC0611FF6969C624E -BF4B966BB1EAED446DEFEC0B6548F4B9F7ACD46DDCCBDBA7CBEA031CC826D5BB -CDEBC02A6E9A6057A20A9451239038172DC2A68007A24FB26E2D12069A513641 -5FB0E691B9A312C1EA2BD21EA173E65499740377A3EC4136D77F356D290159C1 -0C2575B8B965AFEA8AC4084E6F43AB141B65537C69CF9ECA56B93421286CF536 -4F8ABA4E705053C71BC9962603F30B292F094737AD8088AB2BEEF9E759BC8342 -579FAC30BB3B4BFCBAC1351D40CD70FE644F3D812183387984FFF134E6551600 -BCDC409051140986A8CAE572834F9C9B3FBD06C188FA680359CED9FE4CF22AA4 -51C4F6BFAD61B0C73C83D2E2D9DCE476B6CDC9C75B5671C075DD53A5A8E7FCBC -7E3A4F7E26414897FE90DC8E0C55E77C18BFBA85CB162A20E8236D52B3490B6C -13364CE8E12F151B1C07E11E735D0B6DA31319473A68B72BBF7BDDE4E46F113E -06E70610E68D0DF00DC79506F5E673E36FE77E40BE8EFA2D34CA81593E93F989 -5860D39E692948767F81D1731AD965EA2D08CF118382A92B9316226FB5538C44 -17A8C3B173CBA37B987EF0B29DCDA0E4F32199BF3249F7DF19757FDA24536BBC -564BF3B78114C67A157B09C6394D497A372EA5400DD215C4961B4BF5276C1D12 -EEC34A9E3008381B8F605592EFA9EED97A88E41B81D378DF6838FB4BA76BE865 -4DEFD950EC703A23B7AAF7BC50EF21935EE1A22D195DF85992A222E5431AD04E -E9B5862538439583D3DD6553F385C18DC917D046F70AB12102F88C9BCFB8511E -0C39400D081CB8AE33E9C8D19316B69B92AB2A7F1B588D31E16C18DD6D7CFEEE -1CE0B745D28D33BACD0F4D746442E45CA3D2016905F4B45048B1AD91F121F47F -4902552BAA713F4465FB7CA1E0C5D77C0101871CD6D01A58C9E3831CC02A36E8 -551920D4F90C55B06A1F07C104DDA1EB755A90609B549BB811E0344247397638 -9BA052FAA040913EA2F8AAFFE313E6446185DF94B145FA8BCB65E23311CB7C49 -133D8053F9E71B98B488D92EBB68440DBDC2E93017E18986D38C63B5FA5FC490 -1844C1D3E4CE540D91BC2DDD3909B3DA2A814D14DC1361604E3B429FF53A3F62 -8DE6E26555697C2258D603099EF2E1E75EC744BDCBD2C15A254D331168B57346 -81439BFE78C488BCBDCADA7C56B1482B4D229E44C13950657A7C4B5298C70E06 -29A1FA61289852883C4257C49EABB0F2470E01BE80FFA9A0E54788ED97FDD321 -BA1BA9D0A04C28F5DF10251FFB3EFCD7096651D3C8A64C5F41EAF1DBC5A46A37 -B4BDA4A8DD9426F105063B95E51AED9017F730E2239A3D41869FF4E4F36D4B25 -362F196959DE5A229C40872AE7B31003A9E713C87BFA0C37EDF57F6FCBDBB465 -6E72017755D26EF1B9A40B5F06C6EFE387FDD13F9B787529E4425E4D3C9AB983 -1585E33D2906EC0ADB9E2745A195E1B083BD650D95D3464EA3E8F5C6A98972CD -E790BC527B886842418E07B8E80282D91F53DFA77C8294B5E0DB5D1759DF2F5B -78A437A742D2446E977FDD6CD3D19360991161D5E1B81452D9FB07CB9AA8ABF6 -AC3A3B293CD9FA47C4EF19A58513FE5320D0C72DF2F88B803F5BB3A01CEB1F60 -9A4888F9FF2F585A37472E5BA2987DD380D36C2EBDC4097FFB4B3F444EB20573 -E8A91128533878A692D6C4D42AF65D895A22D3A672051BBF034AA19FB0A018A1 -D5AB85DEB10D66DF0A54F4564F393479FE7CF3C62AB1397486B2BA910915ACD8 -4DAC32DCC3B35E15C0A1BC231ACAA2C19F0C8F89085710B22E2741731D6A95A5 -573F9D57576DB1E55E4FDA7E1DB3FEEB3B4E29B142789D426CC4ECBF6F9B51BD -C5EC39B9AE0C1FF7FF135CAEAA257533B411AEDDF2BD3F8AFD1832AC295BB1D4 -EC7EE0CC367D7996B9281E3BDAC2E0EE319A9B4BDAC3B813B267A65FF95D7E66 -2B92E702B96FE8BAE06F0E6E2D82DED7D6D24955DE4E45C9E32B39D8F5A9881D -AD25B03A423B46A4CFA3B00A72F0AEB6B2234717E8D9F5DA9C1467061F7120FF -5B88D9DD3E855D875990599FBB65B3119B1722005A074E7FEF3707D9C6491770 -5E733033E7C9C7452488448F4FCA65465858DB121808210F9723F96AB0A7E8E6 -4891404A86B2085676EADB90FCF656877F135CAE377DABC217344FE7F678A1D5 -41C887C3743FC30EC9F588E656165C5B088FEF92482AE1F909BDAC9BCD077B2F -8EDF81C2FAC11B23E7ED2D2D8BB2DC28C365902252DFEB023F174966F9A07345 -C55BFF02F618C51C28D9CE34C7FDC6C7B04FE221CB3F8D8AE3E2FE9B9C6A4325 -3A78ECF3BBCEF8670B0BB83614B7351715FD37D7FE7F1C8FF5CA4C9303D0A844 -039FE8D2EF514E3495D1042B7492E899E741EC08205A3C5C674D123400FE2A7D -63A39F60AFE3A8A78B880EC014213DCD07F842B7DCD4B9F694C5E185E72A1A14 -F422B46C45B34E6DCE566F0CC977235793D259394762C5CDB4ECE18099CDE8F9 -93447678148E4BE93F8244978164069617F1D3C9FE99A7AD61ACB4F39014190C -9D9CB4AB23498B0FCC203E2FB23BFB90B5FA9B4E3BCDCB97A43A22DFDA6B5D28 -42B8C7489159857951AC19811368A22DC9843079FEE3A693897EAB6AEE18FB49 -C15EBF06752EE5681BCE110063528FC48663F5F48B5800A210FE5A912B54F694 -072F4714567D30C918275A952DA8C54E63EBD34DDA407E53B68C30F1E14B4D30 -DEC4EC1B320F91D8547CD8C9C93F65A91F344AE1CC98F3017775D3D1BD8A3B12 -8711A6396099EF8BCADC1D680CE86C81540C49A64FB6D0A09EF299FF90B582B1 -7751AB5F9D5F7E68FB07699CE818A3F7E7F8EF1A9805AF1A1107168EA3DA567A -3D46914C249537C1AFC696282D950493642AC65A3A47EEB547D84E784EF7605B -82852DF9FD983CD8821B3CD417A744BD6699271D8F9854B342B5B93DA33DB035 -50A145F36F5F5C2F25A54FE58749634B8080F7EA65E8B493D0669CA3151A2961 -3F2952DE8D7D23ADA70D126230E6072CE9C655BF65A148B85D54D14E757375B9 -671CB0E3DBD1BFF66EB4B2C42D8996EB414C55608211947376BE859C1F33A410 -2ACE69D2DD86EB061062CEAFB2FF9577415028114C82534FF90B9658F7615D3A -11B74ED400BAFB4A522C5D7438764E5107B8EE9FD49928B3E55AF6FD35EE245D -08622692C4E78046F5224CD13BE7B6C9D5D789748F7206E4B3A877F6558C1C33 -3B380EC862F4CBF2E33AA61B1C067D697113693C524D3AA15A8F267D65CAE646 -EB8A7106DCC6543540B1233294D9BE144F03E29CCFC41A52CA2BD14F63B24AB2 -93D3803660748896DCEEA8FAC3AC63BE3264CC5A8CB0BCBEA0BE229E49B5D231 -FE5E8166B5580FD57035660135EC10AC4AC6F2A6FEBFA0675F09989043E07707 -A51A2BE9EE086DB7D01FDCC2F78EC93BDDF5022018EC18838010887291E504E2 -2B1D62EE552C85E71664219A466701E55425C4B14B135E6B67B0D9AE69CFCC6B -6B7744E3AA09EA08B064202084603747B37F57441B9730903DA7CFB22832CD0D -E0619886E840BAA543782794D1A5CB5F92C6F1F0C6532F386A7D354AFACF9662 -6B7F3362651F6A18F98F2CA721C3C07E65FC4A1A53A54A5B614A8B6A987EA3F1 -142DF6F606005E9AD378B188279AFCC5BD05480045E6632A22C7260F64ACD03E -34DBA66422046C1A1B991FBAC470D7863F530767EBDFD87A445C934321DD6154 -C954973E1A6FB21B7D736A876DAD4C117F5A89FF9B491BE87D34D6B4A2B6A021 -C5DF9906BDECB494FC3815142969F19B96C7F3871D2AC0A042A407778D42C9BC -F5242499D3203839890DFAC8CDCAC244D67A70106976F9B6FCC01A118EED901A -CBB2954F66A902001BFB5FD110C0F3D1DA85D46F3C5445E10E794001EF344DAD -C016265DABEF706671B27A5634E58F54402D1D6B7ECAA233E36E3B29E60626CD -42E0FB9750AA649B04641CACDA1F31CD5733E94D9A22BF50EB19134655916A25 -230CA53E3609B78F2C16AB6278851D28775597F5C0C66286FA57A53A904AF4BC -EE12AE259132A3E49EBDC270B1FD711032A9FC502A2B1F79BA5070A95449A08D -09ACCBE03C339CDBD777C7212E773029C8F663A6F4EBA06B24170C99087B683B -B7F12D5EEC8F4A6F85C4C1FD91760F084543CF25A652BFCB976F7BF15AB5CF80 -617E93F7EF9946CE477CD06B1C0D5EB9963DE29C3BA73793A9E75BE1A5054F75 -C2C500B23FAC78994A0C7E751FA02514B05621A8943D92A0BC94D91A50B6E416 -8023DEFD7F7318B96B935ADF13ADD8704EB1B3C27AC75D34A0AC2FE4E681542A -E413E27A03FB50138FE5CF12A0C825472E48213308179F6D14EB312FB18E3D12 -C14B580D8FE7608EA2633AB1E2847BDFCD369A7116C1C6DE142E4947F5A2FF70 -1E9A49C5275E66B1BFB4FE0693E3C909DCD45AF79B49BABF0B61837B97C49444 -DE4A77B07B1B709F4155481142B838229CAC559E1834E0BE0814AA791D7D6F1C -8A1608A983688F902BEA614FB08E5FAD8DDC8C15B436894581E1743380BC54A2 -E4254ED0740471CCAD3A20017FD5B79C3ACF7DBF36BD74EE13EB7F2928753450 -EB2F48D0578826BCB380909A61EA9247EAE861E8F853289EFFC28EA645921BE8 -FE3E414A73A41DA07B1E1FA407C1C1ADF2D11FFB467D3D63D6D7E2B556BB4DD1 -B0EFDA50ADC9B4816570BD19FB4739458F738A8F6271C47AE550648230C0261F -557391372983474D9D6512080CEFCE3E410D457A0676707EA0B6A77C8A08E5C2 -1BFEC3239F873ECB053A9A62E93B3E642C110ED013F0DF380AFC528EC16AC731 -C95C8DB7B6AC4B66724C8631F55A63EF4EBE2CA0BFCC263B01B64428A3A6B930 -9FD26D4B07135305BECA52809373247D2A08469050A13B0C3A0B1A0087720E03 -28AD2AF77C8D0ECA9C5A1F80D025B7A765398F25D579AEFAFEB95C23F8BFDD51 -EA06B00A5571F57485445D9492F1A1C7B31A5A7DB1336CD60C9E64B3971B6FF0 -11423423792FE964C9F5BC0A3134019D286146D5D3E947903F4AAF40BEC1A6C1 -2E374075DAF3964C5DB10F32751B24E6E2D583581A700187C0037C898023478B -31F332553B4DAC247E727F9122AEC8F7CDF013AE97E8D0C7E92E80C94DD920D1 -D307B42EBA50BF43F765C725ADD7B0D3D18E48453F623CC5E7CE6DEC8D6DC30F -5636397BD0529DD4DF696B870850C3E14840A44F15FFEB36F6C08B3E2E65F479 -EAF572D4BB4AB35D774208DECF403F9CD76B3A2E91572FA2DC14EB7BA026AFD0 -7626C71C52AFED279916767BB2230B17C8DAD1174E2592CF7018FD37CDFC7952 -9E9F5C50996CFD56AE83337C214C03B7DE21A11B6BCE3BEAE6ACEED09DA748C8 -5E6A36CE9487EC263EEE2C3FCBEC55B643142891D730738057B4E4FD13C6CD53 -F66C43F5A7197281B7CF4A8E5DD47C3240B0D4A30AAD293002F32C659CE6EB33 -92899B3F08DFD649BDAE7652D82FE023CE69E545668808B73BD5642188EF9511 -942BD12F23B4585DBA2608621E4A70C3B9776A05786B30A695BF153DC3F11ADF -A8AD765B5262A284E473E3BB7931007A73FBB27E797FECB251C07A0CBFC3F667 -C383ED814F19C6ED7AC001A80E484FC2BE7A6D0748BB7CD500D31DB260654586 -904A7373A7B0E44389DEFFA42B47871CBE926D65735A92484488A7A6AD5A25AA -19A1787BFD0A8E68C75D7B61683E7F87DDA08DDD5C58038509C44B00EF3FE956 -1BDDBE618CC7DD6620680A6CD9F267ECDA9B990E62D4137CE23C9C27B377B66B -38A631C8CFF9794B179AFEA684CDF06541602A2BA24CEFD46936611C0D423BE9 -F20ABDAF438A998565810E7906185E8C8A1B141E00E2FD9242AE85FCEA64CB42 -56F6CAE446B80E363BFE9CCE952C42E7CB154D182D36C6520FF5F32E5F62942D -2B98882CE5F9D29623429D33AAFD501E5674842BD7C27D05F1BE05A2B7FD7C7E -9C3CCF04FAEB8800C6451654DA5C4CA4604C9FDCF4A1E3623003D44F8C91DA1D -3DE17EAF4F23C320DA51595CB73AC6DB83C3B9D7966553FD27C43728CF3ABF34 -EAB5DF30F534F778925D96CC29FF315682C7853EF2AB5E5FE06263183DFCE7F6 -9FF83714DAF6A27BDF06EBD068F8E9C99046D9C13E71914C01A35EBF29F900FF -71087FA7549F9773E6C720324860EDCB1CA8D3C83E81B521D42A95EC348F4509 -00EFD89460C35D4F1C5C7B96C4A0191EEBFD32B982949C0356D92A52408CA3F8 -4A8666A0F820C5BB1CE0634CA386ED8227206F8F6E434FD3B9CC1A503C09BE25 -DC3A020D70BCBA4346B6E3AA1B9CA380FFC73849A2C9D3076A1E16D44F5D2C61 -C743FDA7A54B26F39F6607D75568AF7A4A33E579E74BD0CD635330A79DD7D261 -8AF327973104A0600440C1837A98D36BFE05E603DC5FA3B6BF46E077DBBC7AF4 -3FFB90A6169F3986F9C9D8DCF9A5B5004FC9AB725721BFCCCBDE637F9F0FD055 -B6ABE8CCD1FB4D8DA2E83124215C84CFA1C0BD6DFA0AD8E98579A97AAB09C261 -A99726F14FB5252DD65F874C4D46FA675EA22307833295AAA6B02D59EBE20ED0 -A8E9201B3FB75D74AF32D0BAA88F520EACAE76DD0406042546A08B6C76A4FE2B -A8FCF85AA9B5D5ABE7147F4BE2CC69F15C99F5E0F74BA361D1799E818BFE93EB -668A7F4D434EA9162DAAC2A1FD549EDF7AB58417F04C8BA988B83569D9DB7829 -00493175B2835D1A21940643B2CA84EDC803AD8C129C7502E9C1691CB3054D96 -CFE4AE4D341C563B2F1ABEA50522553AAAC2D4FF14D0565BC5CAD8BB6F7FEB24 -BFCC7274B2D9A74F21EF1F7E1F918ED9AA4D4DE3371F130C3841D41BB68F93DB -B80643D715F329254DB2E5CEEA890FD7D4776A5D7F269382D300A4364ABEF9F1 -6C878F0D64AA312D37E1EF29EC1C7F2482D9E279E51D3912261564459BEE92ED -DDBF2522AA13F46D92F75DE8C9D07F1DC43E45F5314F648AAFD09897083C352B -590B33BF4573B505CEC728088C559204DD4F85131C32CFB9884F54F03C221F13 -11682070D5F259BA7347E7FC381E7C8852F1E45C88690B1762010023AC60B5CA -67293BE72D397D2313C96E60B42751E2B04EC2316BD9192B45A68563EB315D48 -04287FB247E2EA977CD31FC12F9522B560F10D015C7F1093DF2AA027BFA69CEE -365988BB06F4B3C72BD34FCAB5DC45D8832B9C45212C3764CEC46320B92C66F9 -21779CBE68EDF9CE6589DCD8A4308E35E7AF3345DBCDD8131E471271ADBFDA99 -C01EE990DF5A8A320B81F020CD8C7B6DAEE14A271F57E825EEE92FB9DDEA9A09 -9A1A96A0AB210FFE6617ED0227EE2FB7D4F2E64839D5BB037A60F1341948EAA7 -5238BFD356117A446EB742E517C1A48DA94ED52DF67B724D6BD8CAFBCFE0D6E2 -AEC5CD56D6BAA83EA1004FD07AF97A93E55BD85FD8458AC0F8759089FB30C57D -159E9DB5742E043A49C5F3F3D67A0521D7CA22943BD615C018A37B3BA5872830 -4A8955D0355971ECE595321082D5D48A9D07572B7099F0796BBCBD09BCDBAC1D -DB1AFBD1F8A884E9311C838122902D266D804C8949AAE6EE56EAA88682E31EF2 -BD4A00B922A69EA33FE124D61A7C86BB5CEF0BB877136226B84CE66D802AEA0B -AEA7C9E520863208E58F9ECEEECC2541694DC1305AF54ACE1D +3924F7ACFCAF40F5D477BF1D407BBB7CBC5A8B741A6AF13422ECD344B758AFEC +4F2868AF6AB5840305D1E2418C12DB4F97F8D526EB04E28EBE46EC37C2DD54F5 +A04E0FDCF1800DB8CAB2576764AD1491252174E4568E4492983FDE04C1B9E5E0 +69992EE28271F6B06858735FB7B599F56702AAC5DD867066189DA9F5C4FEB464 +2E75F55A41867C72D2BC94095A71B6494AB1F759FDFEEF6EDDFC889C377CE2C6 +84508BB9EC391E78279E529EE4B7031885F0BA10296951FBFEA1BA73B96B1D46 +1B349AF797999C357BCB2F7A2BF77A9AECD22E9201D1630A6ACB74355FD70729 +FD3667C5EDCF59D202A0B890AB7CC128D1F99BCBD0086EF77B2669F83E803DCB +319C298CCEABE4F40F4BE3C85E3406B70AD9750B37DF07EBAB3F540BDC8B8FED +B83CC70B6943AFBDE80781A8BB8C1BC9B608E110857C869470D6ADB7194E9645 +FF5C60735E1DED59151FAE925793215FEE83B75BD6E415168E505F05DDDF39CF +68CFF9EF7D1673F695D4D552199A30859E89DB375EE195A7DC4044F60BD20CAC +85DBF9D13477F914258511DDFA5AF3D3520E7B866E3E558CCCC8F8E8D1191D25 +1910F6C347410B6B85AF874D9BBC9539E058E7B847F1D1AFE847965BEEB6D704 +863AFA8D5908A0861BFB2D8CE195F17358B6294B991CABDD9B616E965FBA44A0 +96D728EEDD2E3658E74D4C933E0E74A06D4128D4B9DDD8F69697410357F5D445 +F1B9D3B75BD7B885AA3A88CEF0A296C23220255D8A71023AD5B00D7290BA7804 +6965EE09387923E235E47C80BD27157D799C20796629260C526382759D207732 +0420C4149F6EEB8E79CA3B56B72FD4D477985B8558F337D5DC2E5BE603C6AEED +A68BD892AB7C7773E13896A851344E2E55406EBF16E2FE98307245F89A503091 +8E1B7916120C7481FAD51C176BBE1D922E596A3A09121664C51C57B8C7DBC82D +3E9F870D5051258B24C606AE1CD8CB9A97999F9220BDB5CBE10E3CFF56D66685 +5CDFA82562F6D6EEFD5AD4B8DE8FC03F3048ACA1D917748A15DBF5E85F6356E4 +0060DFBCC82005CDFEF8A78535D8D5ABC256AD9F683D0420869778DC25EBF903 +9CD73FC8FE3AAEBB784F72D8B6D220E9594BB1AB2B32C9AB1D27F75857A617E5 +BC3506DEDC100BE726D06E3963572C574C20F8CDE8DAEC14FC13ECF358E5638D +43D8ED9E6217D831325C8EBB99AE19F26B38FA1F5B55A5D1422AC9C28A2D914C +D0B4C4243AE423415BB200F1272655C28E45EB80733D3CE0FA479B249596EC4B +4EFCE4C652BE6F73319A584D7A75ACA1A664B07AB102E5C3E795613C941C9B64 +69D6A353A0A12839E85F8A738AF62D6C8AE982412EC0721F2E6AA0AC28644C51 +D3D884B9A022E28D0D50826A405D24DEE0BBEEDF2866DB8420784A2086A54503 +3CBE8A431A7D3093CDBD8B2A97EA3103F4510CC0009F6F343A43B52A19043ADD +82CB77FBAEE64E365909583EE63161C5678DEE63D308C7C85050E0FF2E4D9F33 +9A6AC9F080B94A349E063687EC632899E6BB020195EAA60D61D606F9D071E972 +6393BDAE30F77676221BF1B8D87F69464536F8E025C7F3F14E9801337AEE4AFC +F8F3336BD0ADF859F116EF11536CE3BEFE0A4B7C08CF588DCEE08FF8BADEB0F7 +61862C9E5DB481B5076634C3E9A8C2843B3899DF4EC1B1BA0A7CD07EC2039467 +3D9DA9246E808A4B6997E8FB5ECE77731B4D8376B30FB8976831CC9F1A17DB58 +8A51103A65B5A10CB51B36C4DE319F40FB7183C975B82E4A0A688160590DB08C +E69835E045F689189F5611CD797956DF0F67BE1A2E580B21E18E6A97F1AC0BF8 +CA7B31E139DA17C16379D030F7FAC25C0CC59C3319C734432C4D66627B2C7CF0 +08BE7428801B0937F9EEC70087D18EF50E89A3A535CFF020A61E74109D9036A9 +DFDD9816C467879D8B847FB6DE81CB1D3AB81EF0CDD820C93E9924F4DD44CCDC +089327A3A029B2263A85E013550654EA780C7E31A64EDE06E26293E8168583D9 +BB21B7BE35B720B07D8A0935C996D562E87E6009B23BA58C07D501A383A1713B +CC9668A970FF84A029092E64B863FD3298A398B565F2B546101E15A0886F7A32 +66802CCD40528240D2A97641D8155A14F1FD17AD1CA6FB8AB76F460862FA0880 +7669C70075E0718A7EC0D09DFB5678ED496CA08EC75834E2D4954721C5E99C79 +68420B8B1E596D7D5A80EBD6B5D915E0F178EFCB7901E799FE7C7A6E82BB3F43 +442B2E0946F955D87FE9D758460BA12721FEDF6A55D01C722468DBB47237AB94 +5361BE85A2F10D1892797C8DD860E7589A78047A111FA00AEB0CCDEDD631D728 +646B94058876F522C889AA3F484AEDD5CF2E2C9C8A4EAC46B9CE8633344E9ECD +A1FF51C37FA59348C0041E0F8ABBE8107A3B9CDA402D2402C154336AB175BC62 +C5C4228072EA325D45CE7878413A7B0D02261217B2F1A7E79BB11E5BBC11F787 +7B1E9D2EA81A5A6B38812205B29B008C3CCF16D12FB1DEA28857F3EEB23F0E5D +D32C6D7ECB3FCC26F34DEEA4B0CBE763643B6F1D68373FBA6BBABE3B29C72C23 +8DFD6FAFE8A7710CFF935675D12F3670E25B954B4D7DEF13928174FD0E1198BF +B834688F207ED525C47C994B7AEB0CB3C5F7AE3354538A92D4ED7DD9E7772537 +F62C99C80ABF955057C83283C3CF2E939605D43A9902175893CA0D40299CA3D5 +7353670F92510ACA7AFDB9D826DB6064B184ED84EBFAFCF6380E7BF10494A5C4 +7B175AE24DDE2A03C73B2DC68A7E2B5F32A794EF3F8ADADEF2256AD30263CF6F +750F4B2B847BB385B3FECC93029DFC23EE30D654890D5AB477A2DB5BA48E9288 +2DDEA2E69CD9D2D176DA2F44E8922E0F5A3A12383C10B96501AE86FA39008DBD +F211C0423122A22E65E2268B60E15AEAA9BB58C5EA0FE8DAD3CA7335F1CAC380 +CE14337A1F699D06CC793CCF2A94713201268B541F7CF86399853012BAD437A9 +7F46C99F7A548D9307FAA6D1CC41D8041E7495D0C83794BBF2583055770EFF67 +81AB1798659CB97EE0050728F8B05807FEF753F268B92CE9272A381A157A7F82 +40CA9577F140347F45C45FC60F0AE06FFF55D81C5D6130027A2119A3F2B64CF5 +5A732396DAAD48CB6C6AE5FD53A0CDA8E3C2759FA2DD3C27DE372DCE530AE932 +21B8F84C126D0F06504F5075D87B31C8D7B4364F61485C894AD549B03C68D50E +C02F0E24391BDCA7219DDC48EFA064B5A4FDC60893F6483EC0B7D381FF24AF87 +292316963F8EBC04E8C38F00860D0F1CAD54A08816B213B05F38EB05F4A3405C +D59E17E74458703214BA564CF655CFC0608FC3BED7D1ED800D9835E67508EB65 +F5C26B825E5CA4EC0A344E02274D7B9C21E5E02E6CE2F4A073AD2CBFF832695A +C8B613C28EACCD6E20C1E07861DC6156BCECF805EFE55C99100CD502A1A3B910 +23FEC01C9F454E1D56E3AD9241C12DA45A17AD8964415137726E78FA882C3B26 +DA36925EC7D6264B53A9B7B2C0D57A3E5DAC9D7FAF15A7BFB981C75C2CA64F5C +C7E200CCC1B64C9274D7708AA84D9E5AEF98A3C0B49946BFF3730FAC885954E3 +AA8A1390E2BAE23E63EA0C00A3B11A94234727B9724D3895025DCE4E0EFDC14F +ED6E5DA394B55BC19CB910918A097064721A9A1C80A1824AD39ECEF031BA43A8 +6C201FE4A29A227B196F186151196283A6FB3C88C000765AA845973F0D4E3115 +56CB1DB4B4ECCF17E67CEF91B59EDCB8B65F40A21592832BFEBB74896C3B6ED2 +9920B9EA2B9288685F1EEA63F800348A1B1F85168BB999B9B2AA85658B3ED7F0 +AC99746B262623D6A60F543DF68928199844AEE91AA06C316ECFBE3CE26C8F65 +71D4E9CAB78DD25B707D89DF475660085F972F7EC9BEB4BBC40C0F934EDDA0A9 +DD797A3035C5C39E05C78F6101D49E2413AFC08C6FB9213FC7B945F8C84CA9DE +77254614497A5D57EB79A04F2AEA7061D94B93F1195432E2507C0ADF224ACB20 +A7018E3ADEEB9E0891A62B5B7990959D6A21659BD22C19E46AE1F711C9669496 +04C7CD792412D381BAB29CABB62E6945FE9AEA45064464C0C7EE9DABCEB53619 +AC4E32F2434C428F072645FC72DDD2CA0517FD6BDE03CE4F4DC2B8E89B18E9CC +C8E3597EA41BD498115F43181321A7501E1454C04CC939C174650D168EFB90E8 +B988327BB545FCF1D4CC290F83F8E540A1A4A6FB3B2880C515EBEBB02CFD4002 +C7D9F52D1E57CA96441C2FAD3D97E0A03FBFB90E79A576461DD134434AF2918D +051740829C2D30DD8D16AF80AF6F986D9391AEC5B6EDA9383E938C44DB1B0CC9 +AAD646CC36543EE8FC88EFEF0EC4FF6E47E1253016266DD2AB696DF2068B69E3 +9B5CD352B7F33AE152FC5D2A258207F014DC7F374A5BDE0A947C9792125F1AC3 +A4F3BF4374F445652AF17FBCB82E56F1989AE56D2357041FE5972F75FA7E60FD +83821BECBF33EBD89438FACC1CAE029766FCC6484376C29F75B893A2CEF3AFDD +F871E5554BE12A5FC76806840398C04CF982C6E5F3BCA55FA833E7913B89B997 +5BC10BAEEA945F6509A76FCDBACB38CFDAC38367E24EED989E4000ACBA9AF4CD +E73BA6315A3D9D3E3E559A5B4C4EF173D2AD77F142B2AE01DB1925BF248D469A +CD7137D001F8CBEA0F24AC4179A239DF08A91CE238818A4AE33DA93D9D759352 +DBE3B9865EDA9DCD2D4CB85BF80A5BDD94A8E5806B801939F86C3A9196448C5A +FB7AE91E3ABA2719E7118ADB43AD2C9E650126C094E4A858E9D1AA9A495AA02B +DBB890E89A6A0FD4AF0539291B9B8004F27525FA9F85112A48D32336C8FFF479 +63A4A068B50780645C1C2038753FC6CC7EF5541D20823040268B72299DA07D46 +F13C025473C19BADB18F9C83E79EC2A5B1FCB0E7F7B18E28A481C2817242D2A3 +04422186BAD0F0A1724E53E39B18BCB36893B04622C9B3F5278502B5007FEF9F +D0128FD123463E69702266FBCFBD7B0035DF97D31929103C8AEC2B3FC2D8D62E +A399239303FFE30987E4971C3A96C7207001A7E68C4EA0BA1FF1298411FA2321 +98EB045D61F4D1E8449190F0DDC51BAC5F0CA234E28A24802B5CC12E6F65036A +66AE366595AEC983C2E675AAEAF52F415A94B40C8A0E6A6D23912EFCC75E2879 +CB68EF6FC17D7B9829244F5CC0A420B7679FF3B74A47C5FD269BF2F5E7E28598 +74FAD9746F48789DA1EC7103BDE77ADE410C027F30F15C2B66C1AD88CF3E9FB3 +25A9466DF1CCDCAB04580397A095D81CD8F09D39B15784C68FE0B612240B683F +D856264D5B81E5D8B0D8BA356C8ABA3E5611ADF0D0C2CBA21C4B0F2E029950AA +9B81B900F4D54E2069E7E87A903172132F2E463824B601E7EBF73DDEB95CA85E +029D83E0EE66A4E64FC6437EDDD826F9490C8416AF6C39013B5CA3E7184E1B57 +A2B6036923F4E2B5EDB001D9345E7FCDA6AD291E30A73DAA23A4E1469FC59732 +0DDF5314BF081F7BF68838358492FB24CBC04E6EBD62DF0418BC28B65E71C5D0 +C771B093B1423764489EA75FD1932A9AE7D205CB7FCB8CFB68394C99F121F7F1 +083063B75AC218D4381F095A377335BBC4AC514C8C1B975D21AB2882F63A17F2 +4DE9EA152CD244696EFC6644C09BCD732068566C9E49CE74867C9C551A7FD9C6 +A4583151A654F9EC72F2910956D8131E5533D5B86FAB90BA2D21BF947FE9CF74 +D7B2598A23813A6DB138BCC4EB9E5F4C4C148B7572057DBEE66CFA190E68CA97 +0D6C5BA584DAEB2096A5899D06F22E8BAFFC5381CD98F8925EB22C58CF68156F +45020BEA5D3811EB3C96E0DDA8457D02BE0561BB587C75BE5F59D625D64FB1D3 +2AC2650ED3F5C0152DADAD834A4371B78D4E183E5F473A20A201E9CCA7B849BB +F59F0160BE277E40A2D32A561A52C90717A01E977D2B5316D72E08AA17598D47 +B97B2108F4C0E4D18A024B430F1712DDF359BC7058AD502F2353B47A6133B56D +F32037AD54307C7FF2F90802916210A4C194035B1B1335FC05B7C7C29CA215C3 +81612DC6120199434E7F6D99B690E9A325D2BC2B25001D50BEE1DE8F883047B9 +54010A9DF87C786F1D28231967DEB5D353A63D457F79F15EB46C30C3A33F25B2 +D575DB0F0376381DBEB0FFF36E36F9008774E14876656D55F301F38B2F6EE224 +73B06035584F2EC6E6AAC139B11E1323D441EC89D2EEA94698D60B961258C017 +FC2D1AE642EED8EA9C09FEA797AAABECF34D5B4E622D1DA425641BF598DF4ECE +DA9ABD48DB912DA3FDEC974F2116AA8EF4D80AB291B29938607D3EFE136F7D80 +48DE599F24603C4A103ADB925D23FB75E1CAEB1A547537156F61897F276D8F56 +B01D834667CB9761B828E48ECA9018B190A838E774CDD1765AD69FE15ABDDEBC +B89992EE34D77D308E65BA9A8E6BD6FDAB41D6851AFA4C068198A9BD63C5CA7C +E0285391CD25E18943D7A54D5DBA8CCDF1EF2A6613740383406BF2EC199D2B0D +56EE8B97B440B4BF7A5EF674002AE023AB4C42FC80CD3420C5DC77AB70E47850 +3FB83575CAEC98B880AD262DA529CB035080752271193281A6E7AD16C3A1A983 +097A7B3960958A0D2D473CA0540A1DFA5DBD6CA4827C2337A43523A1F1B56699 +D280B37499CEAEE60F9232957B17307C84453EA7C25C11B1895217D95AAE5506 +042D570C1D7378C4667102653E32E6946BD32C180E648924B494CD4617FDB20A +BDDA45BA74EDBBAC9961D64F9CDE456BCB59694531509629A0610900F42297AE +9CDBE0D7A1EBFDC10488B76BE38AB859A9A30684C67F73B1786DF4EDC11142D4 +5B8063B6D6A8097F22DF6CB23096F0DD533C8A031DA4CFC891CB10A1BC7F3891 +332FACDC661B6EE4598208A9F9A4F5E927DEA42B34DEEA97D08AE0270FB3229C +8E73945BC2C8C41EFCC4529FA4C6C054D23752C4F4A55CBE1D74042B44731B07 +5EBAAFD8E7F79D4BBCD60D9C643F108C9B6D750AC50C52E7818B9B8AE6B6E90D +FE9ADA41BF0DC33970CDA0840B86C197ECAAE22A01E65DAAE1DF4E6B29E378A9 +EF8A9C5ADEDEE4DAB238A1985AF5AC5BBBC4DF5A7BEC250817DD65F9CD76E319 +15A6D010A920A70BE94486BD8148463A624287E2017A335888C0243193E8EF9D +AA6AF434A12BF2BC7C9EBC0D062F5EE9DA12A8FC905413E4DE2BF9B0F7F95D5C +DC04C65B0BC591D7A5B3AB655CA7357A96E48A9AF74B0DB86A225F617BA7B43F +8CD01548A12E8373B7CE5FCA889E968291FEA4FD785BAAB74195287EF7B04323 +66A6075CD4784CB799A582CC03206D19ECFB2FB79403A0A0F8D5E9ED52FB5341 +4B387BA87C6E6FA5170FC3BE2E21F7ED13AF7544206F504F14DD921D8980016F +FB0A727F6C468483879C0B8AD39CEC224FB98D7E6351FEFE68E826ABFB69A0B6 +57A01C4ABBB245BAE6098B102B9B5AF2620BEAEF07609D82978C0C08D40D15BD +5F96451DEFEF8BB35134AE4283C50300BF7987CD89C1042A6C201B874889799C +EA531DD4A1318C486C83AE6E6CCAF749D1D9AF427CCBA42CF589FAD9598A2B2D +2A043B2E7B0EE1F18799B86FCA87DE46C28090FE3344EA6D83FC91FAC2D087C0 +E86921E8F0C55103CD5F93C8C6CD9746D59B4F163D7F5A49B730602EBDBB815D +B95D97FB3C6C2D5AC838705A5F2E3D63E19A5417FB1DD423DBC5DD2872523D2F +3CD2433E11437115BBDAED7114EBB02412C07C95FD4F5D5298D93E33DAA9CC2D +FA2BBC180E1CD045B65223EACA0F2A17D94AE2A452E21B82C7A0EFCB837CE70D +6406FF90414CDC00666001F9C3BE76794235BD35A36C5D25FE6FACB8503F6BC3 +EDAF80FAE390BBB6AE1BA4817799C4B59271AB8C73C0AEBB99991B0D6940E655 +3B52FEC6F3CEB5F0AA2E15E397DB73279257F4C970F5EC0967A011FF2663D844 +4882AD1C142039767368C743F8D284353FACCB59DD03ACEBBF8264BA97600BBD +F632BE01031AA26C9CE3E67EF354A1848BE02DC2F6EBECC29A4B09289229F655 +6C050CE3B2D7666C9EFA6837728BCE6719A9993E86A0A000F0A7579B899DE114 +61C061BD7F0532322926565E4D15E389C06D32902DCD5FD0941C69BB635CBB83 +1C6E4B77B45D25C00C83E41599DEA037A9EC82605A813195D185A59A71E7C44F +F805308E779AB55BE4193F03793A0C52A9CDB2D0751CB6F945E0A8B3D0BA3D16 +92867B62ACA97729378CE2F9A849813DD546A043D330186D090127EBC347F38B +E772EE47CA5C592CF7BBC03557F12B5857022FE5AD824D9A39AB2CD10DA3454F +1AD03B7F84F22C4B933300E0C1308A641E95A1BA9D469C21834A1A3CD0AB3F60 +5248A00CD2F035B8772B0E63047BE5FAE23F5CDD12642A54879A8213961A55AD +E70F735CB573FAFB358B9F48BCF02B325EFE2B62CDB2F68D461761378D324DB6 +63EC869238A5600A5EBC45326A6C498C80878A115040B1DC3211AC681AEE84BC +A90EB8F7701829BEAD6B9D1CBBE77431A8C5C7A8DD423C7942ED0508663E3813 +C47BE7E8632EC4D2575822D5D841552BF6727E65A4FDCC3F6169FA189D9820BC +74F0C7A861EF56F93065597FAE9B50D8645CBD199BBFE54D8EC7BF8A53E242AC +E04EC7F44702BC8FDB298E8013D9DF2DE48AE2385B8E1AC3B04242981719EC9E +91666D84C9F789C8A8DC976155B288252460BD1B88775041C145824EF438E300 +894BE85CB201A0284813B298DD1D7E3ED1330BC1CCFCB68A9B1A04F80D4DAE7A +1E5D5961CA78A283566C7223A1C5714887A933DE11E06865D139AEA4DBBE4E00 +7B2D3BF9CC99075530C783BA70A2AFCFFDFF65A9E57BFAA95C4CFE358163771E +073AE65C61DCFC5948F3A4426A747D6DB69CAB2A32ADEBB9F9B7924D967ED877 +04CBEF3B584EFC3F84AD620747FB2F9AB06BB79FD2CD22C8C1CA9703EF940889 +7607865A5EB3407178A48354694C9331C9AE9BF821C952A43CE5CA6DE317C660 +6FDFDAB37BA3E2F8E916B0C8B71B68D84E17F3AB13DF8EE606A7C30FAEAA458A +974A6164BF74FB0DC06DE11E499A0D055926A9BF6BC19824625130AE725AC840 +532D59F4565A033A160664CE9798999BFF16F9E18A42F914C6695D151E7BE06A +82A194601CCACF6A48657A57EA0D586414E317AAEFB125531BA1EA67E54E463E +79B93144C8F7DF602B41B247E68750E99865B7EADE60FABBD2F000C2A383086F +4B64787E2CD2F352862BBBA1843FCD428E728B4BAEFF3733F47AE3AD79E86FFD +1F51469CDA7720F2BAF97117A3C4A5FF99B3F57A4B88051282F20714C9601BCC +363272B3849BBD2A948E2DD9F27E40DACC127EA34B258D56D99953CE22B3A461 +291A6AD8D41C267872FF64C7AB74953110333CFA7DBA351A98FED9B535275331 +DAE004B9612809EF622FA0D1D3550BD96B118F665B3DD8E78F533568EC694E42 +47EB4E7B57CFE7C1643C49CAEA4A5EF675A9C2546622D1ED11A94250B89431DA +71DECCAB3886ECE1A8F2A85362C9952D7274DF53BC699C9C1807870F47B6725C +F43CA9920847C2FBDC8E86193E5401898BF602AC209F6F8B5EFCBFEBB68AF16F +3763736148F1808F1D35500556E4FA021548DD22EF27997488881ED68F0250E6 +D19F6C2F521624AC7C11280C2EA1A210232844FBA9151A4615D0BA73077E813A +6D606257B126BFD550F5D1B392CFCE3E0A0EC01AD033FEA96972EE7B91C4D8DA +8AAA4D1F915FD25DCEFD6949172C3F7463731F9D7EB340122FC370DBF944E110 +DE51727F999AC54E6FA355F731C470D0E555E32D9A87222A617E49232F94B30D +5FE7276F9389C39F0932311C2E636556FDFF95880ADA24FF55C27BD6691E5A24 +20ECF70A0584A6EF2F9A1ECEA6AC50A6507512690D2DF6A39B850DC5F9F68285 +6FF72A5F6E26F3AE0D45CE16C7252B0C41A64315BA5E932A5503499930DEE8CC +60A052B728EA0B0A8AD9B5CC69FA546071D307D12DEDF782F180EA03F2AED498 +3B8A72A16CC18D3FA5E9EAEDDD20EB7AB97A28D317BAC4A43076BAA337F5832C +7F9D4A77D661D18106A79F5E58D74C4AD8788CBDF322D72DA20FBAF242731287 +3F9B7FCD05450816C4A52BA2B728003C885BB2196C3DAE62B9A0EEC3BA8FF42D +659D610EA4764AD902AB4E6F59DE1CC4317893C41B6BB6676AAC34BC21617DB4 +5CD467E268D0C512199CB76BCDE343BC8F9FE4642663FA14566AE23159583744 +BDC5477D461CD6DA07ABD7E899E90643209F7AC2246C6D3412B41D62061CA8AA +3E8BD293A7C23512B1D4581B45BDC42D4A8F4909D2DD105B2B14A71B85058DBB +D7A999041A9BA6E2A74AC5EDA22E4A92B34FFB6273EF4F2D931C23BC116053A7 +7F0F4CEC599C5DA73B1AE3734BB3BD7708E46BDD4CAA9CED4627E24DB5E9F754 +32CBBC44FD0F6358240638490B2C35F35490FF19A15EE538D9B04C7706E5A7B1 +4AA35A21B1E50A937DFD1E06AEEA58A652D81F8067FB94A1DDB2B828CFB5F006 +C6D84DAB3BA7DA45296DC365B547F8002934B37688998BE6CC3A994EE7B5DB07 +38CF89619D639B93D08B91BD3B1BEE4A54BFBC43EBB535E069FC53F95B10FBDA +420169491B0FFC996FC80A35BEF59AF91CE28E3B45EA9BFD10EF8A6A779E9494 +9C352606772DEAECF95688CB95910AA2E37547DE3E71C34BFCB04CC4B08C84D3 +04341D3C5CF80E352C48B4DCB94C0409DB1B7C1BE82C9F36D70DBA3A3EA7B4CE +54D950B3FCC4FF9DD36DCBAD765E79190D10441D1DA45EE049DE1A133F19F265 +21891E95F61789821F0B12C35E3402F254927D3A4A14A3F738EC0C9FC235ABC7 +20E2FC92FE43BFAA64CC929A9AB82379DDBE313BB7B3163943A1F5418FB68106 +5EBD65F0DABD2D4FAB19752C73E77A7C01623E1DDFC2512CBC60E733D5A21C79 +1D2CD21F1246E3BBB8B8A153A76D6029A463667241CB491253355AC02D4BD4B7 +48F5E70134F7370B7CBDF0C7A68E56EF86ACFD5E5B9B166E69278BC9A4EA0121 +C0C369A3830F50356FB385592DB310B6F2F3728D7B32F48838F6E16A03EDDA3D +9F13251F8AA4F3CAD92D3C3A7B8942FDB5D62353E6CAA28F2C1DB0274A86A761 +40EFCD5C3788BD69F6BD0AB13FCD39CA575AD1D62CC04E39A5D25975F24BF83C +F374E8B80FD1441A2C8B0EFBFB20A0162288D410AF61B9750BC4ABE8330451CD +913E0A5F13A3B115ACB3A5EFB07561D3D214455A5C53F118C3DEBF69E12B8C3F +ACD25C3C9751FF788FDE15BCC395E456BFDC320CABFC5F1BCB933445CBF1AECD +B6FE6F1A7578AACCE5452F2F4661AB79699866861FCF72FD180F16232FA540A8 +104AAEE0B96B79649A8AE247E4BCF690611A70D6CABC843E4088CF5BAFF037E5 +61DEB4744E115A9CDC5EB743EBAD85AB467424615F0938477B633B767B0A5F44 +7CE9B4EC87659B1ADADEC7357987FF154B2CC0EF422531AB78669B15B19A1EC1 +59779117BC7879694E2C5B9378F6ED33ED6B25DE3745246C93DFF324FFD71D99 +B01EE9FD99564BB4EAC575DC68FE6630D4D0EEB3C9C1CB04316CD77ED4D54F78 +4060A0ECB0B66C5C9CE4E060AB295B37CAB264059008B17BF1AB2AFD8274E0D5 +93B3FD54A06F0E6E8B4C5C832D09C1225904FC086B0D6F3F86BC13E75C0A9E4C +D1611AB24F58CA37F1CBD19E7CD78366E829E87CB3B817125A0B558508C31CDC +1BF0EDBFCFB627190600805427390F155EDCF938033F18FC0200AD640FF0D8F1 +8605279649FF3C1E87C0B8C6429B8C90D7A06BB47468F77E8C88F978FC047755 +E90C1E85376681CA853DF212619A1D54E70C24F45E488000E18ADCEDE4428A03 +576C2CD08A17777A4C598230971DAF473AFB39E807B307A04783165C299C7070 +C34B2256601A51D52607EAFE7D6C819950A0B8D7E5FDAB4B6CCB4DFDBB8365F0 +66A7F23DB207E23E214C1E245D5229C64961E58107A91B7AD4EEA1E5D8AD3532 +EB2AA9AAC38CD19162EAE9456F039FB8F39FDEAF1167AE034E5C53DC5EBC04A2 +6BD1941199D7FC33189125025A030B43D7A0558B14C320C8406957484097BEEB +FA9EF240FCC0CAEE95439838D281EFC9DCB49F2F63AAB0583BCAFAA74CF72D1F +D51F930AC472B04D9B4D550D6A3CD8279DFB51770AB747F504AC8059F947ABE2 +90BCD8A13550090E423A30C79C5CFA48F2E01B59CAF7D4CBFFBBBEDDDEE4BA0E +24BD3EA73C9C09904C7D0BFA6E6992591468A61AAC2BBE7F86570C00C9D59A8C +5992735C102D5BF6497332095C47EBFCEEA7FE5D6DB3A2F97270CF2AA8EC0AEC +24B4741E265CDAEB5C2659ED2F132814C220AF46109BDCBFF4A0EB06B49F006D +9AE6AA322B268C9FF488CA7041B092DA3DAF847CA00B708E8C7EC030CCF0B461 +1743731507AAEBAB4B4493E4C273DD348CA21BDEBEB2F7A976D900329BFA6537 +6833904EE2FBB9CE98E8C2C775824F3B82734EFB3599A3317EE43399E142EFB3 +10EF53B36579CA3FB19E7C09B841E2F74764DFA34E635F0A58596847718E8A39 +8BD3EB1798CB9CB4ED71C09DCCF83427F45B7C94B0AAB4843B8F30F91E6371D8 +BEFD029EF8495372FF2E78DA3F3C1BD733D2E237C27FCAEE958F7B8E4F8A4564 +7245F4AF083CC23350263D50FD1394F1B0C79329D78AAB4AC47FC4FBA4607092 +D0D22A55BB52378F19407054E157A1B6CC8B970CB25146B50236C4A89396875C +5290B3E24BED82E7D9113C43DE9DFD464BB738644AB1B67AFCE859C4C40EDA23 +6FD48B009A41219C69378682BB40AF9F70592CAF12B5037F815AD3A3B13EC845 +B323C5B1B906AE194A2EB640F2E213ECE427A8386FE228C19A1A0B1D300E5702 +4662845EB7C4BC2B17E208F05DFB3A7AAF74195CF518D9DDFEB839D68B74D273 +5CBB9D520B9F5DAA28736574997B0ADA6D494E0B3A5F5860532DFA1B064FDF10 +8195890199E7E0983F44A58F63DF0751497344D5156E929FF43DF0AF6F4ED375 +7EAB82597D2E39E3524EB9B1D500CE9884C7F0F4D9B2D44FCB6C20988B93D60D +8CC296AE4F2DC10B0656E20CFA369045E4372C04B3DC6C56D27FFCC1470C654E +EE70427D4950ABBF5CF63812197F30C23C3C04401FE0A0F28034E9B6E7D8443A +83176C3937CB3D9D465558CD4970A471BCF403F1854F5CE3EB154A8D82213673 +0F7E8021F4C25FF65C0BEB5F50600A472F5F574F0255FED06F2504090BE8D5EE +00D41E9FE617BF06113EADD93DFE12E78AEC879B24215D62556C37A6B25D7A9E +16E761E674B7AB6BFF3881D48F0B61AF8209A82A3251B440EF888694E1AAA1C9 +6E4A823C16DD2ED27C4402E77325B8FA6FBD2652BA2E3057817DFBF6A81F44C7 +2997B243BA0214908AF19AFAB784219C436A6664E046617A35D131549FD5D7E3 +729DA7C96726D508E6C1151947057293CDD96FAE3902314352BA91EBEA37F68A +2F086A9AA6689BBE293616029CF172A756EFD7D0B0F470F45D1386FFB11B92F1 +F80C12CFD8342E756CF725E31343CDFEE5E9E90A920C15EF2914A4179FA2F486 +CA8D96EFD83693AEEFDBCAC372522CD4910157C31B8AB841FCBC129FA33685B2 +8876433BB7851AAFEB17C2CD7815916C981AC78405FB29E59A1B0CEF5CD288E3 +9B0868222721BBFEF7B228840DE2A979239F5C7911793421E967FAF247F614C4 +69933199130AED34F38815700EE07E58DF77BA661A99E3BB1BD135C22064FBC1 +D43E87346042166D587E6C30BCE854AF803FC6C6C0ED95E284857126E20BEC2D +750023C19C94FBCD6BE5957DA35ADF29844020D5BA22C551EC96C2F3CDE8687D +5DC6E6F3088AC773B9E096654B1DC5D75C8CFFB5328710DF8C04A7F8E0204C70 +4DA4F5606972235E2A3F25572A6FEF27974CCDD6BCEEECE3C6B57E83D0BC8929 +18F287AEE0012630E0A04080E848DC22283B57BB7B754C7DD1918109F778F559 +AE0FE733E7F5F6B80B0AE1147BC7A8E1BEE5217C2FDD410091734A0B7395FBC5 +A3D98F4962E3A6A1B8421E1C7672ABC3EFCB674526761461350E84AD9FC34C43 +3F181182B2CC095E0E4C546AC278EB6D4D1A54194267D062143FC0E867EB0504 +19895F9168E4E61F8EB148F736F958828756DB63678B61B989DFE75C85855F7A +1BB27E2EC7681435554E4FD64B74B5220408DD5DFFAF1821B7734E99B92AE516 +455F92F5C0A078ECE5CBBBD0D4089D029B90B6876BBA6E483B74F18A259FC117 +2B5BCEB48AF09BA4A43E697E2CB326F43F92833D71624923E4F6C7D1A630045B +C5F94B9CC2EDD1F2BABE5C773F5C6B03068EE85D8E9F27024CEC47C402F5792F +1399A01DD71FB66CF7EEC6863CB0C80DA827F5EC08380585825DD8335616C116 +37F7AD805613D374994306B2596BD39F426C89C7E6439E6F2BDFDC8F7B498B91 +FC7C2D5B855C1FCD730110DA575A14AB4E017D2ACABBE044BC55B4EB50B050C7 +BD021F2AB0D2BB1DE65248F21072FED8567AD203A0383D85BFED24AAF3C38B35 +58D5248E2E36095ABB1696F0128186E593F5A7533824DC8D5AF53137CB0514C4 +DBC250456F2C1550224D29ECF439DAAC289F57B901FC15B6A40E5D0210E1FDF2 +D711353719733FB95F820C8DFAACDD4E9333236F9D2FB179E4E7E1E9DFAA2FB7 +4470AE61EB250DF20EF82708A3719E3BC195DC182B637516146614AF5B577830 +7CEBA2D1E26827EEF49FCEFB8567E280B54A9CDE4147069019A300E1934E31C2 +EB0A0F3FEE3D3C85F39B757CA11233A368C6CE05B4EAFAD80F579B8C74C4A54C +E531E71001F73C9A1BE5022D496E01EB7998C86F5B046C74888C770610C55D06 +5611B2ABE837080960A307B08F20805130C0CFAA50729BA3ADF7389E1EF37CD1 +8C2D0E9CE65335FCBA42110AB621C4ABAF8429289827FED9FAEE3DCE646D38D9 +EADE090E1DBB490E2BC5A14ADB61DF9FD74541D0250F8936A3F9CDDDE7113F49 +B66A08E6335CAABFBC8EA44A12B24AE27F16E28ECF015E011878634965CF38B8 +F923BE1DD39B20D10277CFC0CACF038CE2DCDB0AD577FCCE397ED3FE97DF4F5D +C50DAE8569729A517B8D4B7ABEAC79ABBEC555BA59F1D2E0B236F35EE8FD8032 +8BE82D10A73C9B0D587682F2D226B00BCA7540AADF93F082895A966207191457 +CE23E0F874893041A9EAFA05DA1AE13C4154F506C4A83F5137ACB51940EEA0B2 +E6290C68FB2ADC728D06018DECA9743D476AA0AB1F29079D4E5EC315F53A4EC2 +2CCEDE2F02BE3E1EF3DCBF1A074FFF17A1226689CCD5B3D72D5418F4933EE333 +595510118CC5E0881E843E1703E60650DCD92677146FFBE0F9AB70F6ABB15B93 +C9BDD3A5F5990A3F3FCE518D7C04A3DE4371288A0D61A2D21B15CC800C418750 +3D21F53EADCA777617A9CE3CC80003496A8AAB45E90858C6BB021737624AD1AE +D19182423A00313495B4C10EDCCD165040FBB08DAA28FF353616E5CE7528579C +72AC14CFF63777EE9572D7579A146767718F4D98F1F6D5243D188895EAD44731 +040CD1943BABB3050DD87EAC400402E8F96A33062169E04474DF2EE118EEF60E +A1A9F82BCFCE9C6D8A267B125B1DEBACDA50025D91528946458988925BA81F10 +480D485D59CE434B73497D540BB59F6489CE3D60A641ED546BB25A11C243B088 +BFA13CEA8F57E6C53BC6869177F8FDB77350EDBFFF5E1E5CED9F628C78304214 +F3E1E690C68B70C4FA60BF8B226CD981B9BBA535D0D103BBF706E842FD4B55E1 +2F750C6CE762832313B93B453C59BF4D7BCC80661A59091821AFC6F8C077D4ED +FD02A45ABD1A4DD5FF30EBCD1292EDFFB383D33D3F49A370731A5DBF09A862D1 +E92F8E0BC90B9FBC3011815633CAFA59A54B2D9014F7CDACE5032DF12AFEFCE4 +5B1C635C5037114512BF8DAC59E260C8B45E20B97A00994F543BFDBC791167B6 +F8061541F84AF8F1B66A3E7D3276F1907ACA1EECC9DDFAE06ABBC9C26537236F +FAF589CBD2F3C596C6F28C2EE0AAA9A46C5CD5B007CA7902F1FE0FE665233750 +CE07C67D69568D666B821F23CDFD88F933FC498D4DDA29E682C87FC9DF269DFE +A274BA7EFA7E81448D5B0F13DCD591E02C393F98F896058F76E3B52E1FFC91D6 +7AA1A7C8FC4D9C74C311355B02A78A3E11C1560B53135ABE4AA5D998652DD293 +DF5A8BAA214135A36CA92DC028A438B9DFA001BFE5558A4E9ABD1520E07A73EB +0ABBB49FE2928B59AC6763A6075CD4784CB799F1EAAE4F7A66426BABC563B59F +471EA19A64EEDDED58B16E4ED5445CDD38C14E2E7F8BCA8D00D99BA42DE21674 +69F2D1FE7D089F62FB961A6490A55DBA2BCF5F65ADCC9654E1736690A31199A6 +81E68207EC965C2128DFC6C9539F7179AFF527FDFF1AD7B0C3D3E3E7C9D0416D +FE799F9179A0A10E5E638CC79620E3731D2EB8AF9EE611C6871FB770269509EF +59CD98E9F816D3BDF18FA1C65B94FE46B85AB0E4D41825336318DA00D2F497BE +4B565CC8C8BCDEC9EB1BD54DEE190196588038242156A18EFBB599BC9152E31A +CB6ABE7B8A74A00648D512B47969620BFAC1529BAF1A74F4842A00F139DE443A +71777C4F445277BFD3208F9591B6DD4C86299A1070D4B463BD6220CBA97B1C64 +B62B337C0E1E98653D91AD107AEF3E217E77279AEED1F5F7BCF4343E7A24529A +DED5FB06970A5B56C70B6BF390355A8DCBE0D0E6218801EA5D787B893EBE40D4 +13849A3F880539F7E7920EE8E79D0E4F62A71D031DAB49817DEE16C1B9DC61E5 +BE80DB8C3685AE8EE6002E359E8D1F3D41507B718A572B2F629D03E838B07EAA +E5C3B2CC8433E23807743060D7A3941E4A47536EDE2A95F13EDF93177DFC728E +433E05A72CE51745E399B20090DBB6AB5320F607A638312A2E814B728A49EAD3 +90A32F51521D865CA6DDFF41425DEF914177F1C47D16427D2651DB6D80ADF4BC +28D31E7ED95F4F96245377312D736FFB806902B0AFCC74EEB1DF9C38CBBCF080 +B5EF36F36AF876B26D29BFF236FC05B8A53C4F92E609FFC7ED431C9954472695 +D9D8A3A07179FE02C4E340B6A69C279C848D60F8A899049C6BAF564904F8F481 +B4F30D9C5D8E9FF435AFF83A7B52F6A42E038A757ECA4BA330ABE385D130BD57 +C40D9BAEB2CF4CE302732DA80BC676455AF5854DAF4A09A465A73BC51EAE4F9B +3B733B53790D8F84EC57F9ADA2399AFF6D87921C686CEBBB609AC94643774E15 +31EE601349C3E804F9182B6B3E084593816151E856CC6A7F06C0DC52D52A2A45 +F1B3D83C153C3C76139A71390BCA2327BEC5FAA018D9EE769908B3A055D7E90B +78D38FF6FE4C83467670F0A73D4396C2E4D9CCAC6B1A49664B5DD62C113E2C2C +1DDF67BB938441F9D875CB0A6938AB8461BAFED432362BB4383ACDBE2BFFBC26 +F3D5F9D4CC7E175C4776A99A6DD6112B190CE4F44C7561A1203437D3971943BD +DDF39727AB04A8540C14778903DBD5D0A73D8505A1BF7C7157A9AF2285A6C689 +CA556A3EE87A216435E52C48F732ACEF5D27A3828312A306EFAA1C83F6132A97 +BCA04100998B362A4F1FEE55EDFF7074C5F6A3C463B352540598E20EA2BB7299 +F42D3282CB1C0B4974602DC568AA056ECFF392759F5DAF76311C0415F4B68E92 +5047F5E7A4F384B785C91123ED0E455344675F7D8B5A58378DDB20750C00782C +7E204AE50AAFA96FBA09088CD6BB4512E922439182BD11B2E1DA6D2578F77D14 +A5EF91DE35398DBC2C9960F7953E032B35706D98A134AFA190D9E1F353A00330 +1F448816BAFA571C65B761548C5130FCD538374A079DD9D46C913BE0C609C678 +E9B2250091FC86EDC52EC1704A449A571822857B9BD860C708123D29E418DB32 +DA9005251479EF5C87D6B8DA5840139298877221F8AA92A99B7F50898FC6D4DD +141E3B31583E4D0E6B2C7072C367B070EF45AB0C400C57C787F82C65CB8FA87A +BC56A0C40A42F3ABBE260FA79C8254DFAF43A70114989A9BB7BE16D27E610D84 +4BD398CDAA53B30287AD6951DBC2D61BCA015D688B5C3A262B34395B0BB34833 +5CCD137D66D45AF6AFA0C57DB65FFD25D92687709A2FABB26A7D24A95D761986 +10DE1F19C3153AD36E5712E837C93726CC80F20F764056648BB435E63316371B +5464F813B8186D0B59A62D078736D9F2F63729BB0F8C3264BA455BD3C66B57B7 +0DC609B690298D06EFEE8EEBD35D29B339610D51715D0F6DDCBFD807B17254AF +9E19F26DE3A5289FFE22515FDB2D2E26258848AE93B2AB9BBB9CFECB2D00071D +B1A2F97270CF2AA8ECC73C5BB83E3B15961E204F371DF5105EBDCC6F38F62990 +67DE8418AB677E06BF8558246B146315851288C4B3079AD2E896FD5B72823C41 +C4F5665B35B0A4BAB17087A76DE9E9C96E0BB4DD5C38B9B5AA1E16CD4D0FDE64 +BA5CEED97E0EE626194C29F059DF39884DB2FB908213D6D15A7E151F89273460 +0CB93CBCB34E4F8B88F93C894BDF2ECF01346141EE96D43ACB028EBC38C1C5C4 +108453B67D5150E7DCB6C8321FEE231D0D5B90A866C6FEBD1F75B2C63A8064CA +667C3CE72C7419FCE65EBBF7A8BF938CC1CD6897E77C2DDD46CCFA7FD0B5F2F5 +50A14EE54F8F5728877AA088CDEC1515E6C37CA6BD894378079A2633C3624A38 +0CD34E49A09C975E5D8A665A8C1BEF23184700BAC3BB3B5D06248A1476879F01 +CDD0F5E316679573B86AFB75077DA4EB51791988DB90CCBE51CA7534150668A6 +5076EBF7BB068C3D6CA62E2FC6F956D35D777F69EAFFBD5696D74F3A341228CA +66C9E286591E38B6DDEF610971D9D1F711DEF544E433EC4745C1D14DDC381520 +BA29884834B90B4C285FEB9AD098449C4824375D6A17E147C5FDA303E1523CDD +C99A81BF5D44D4FE90FF4F19D301F8B76F97E3AE0BE6AAFE084266D3BBBB32FC +8D1C279167998A1816839A88A3D4D2FCDD33D9A49165A7CFBF46D3234D005B91 +C9791DB8EAD1B7B0D16BD7EBE986D8F92247954BB0C38385295FCE9152B02C1F +40074F171E8F9C392D9746E3D77D8C46DC7FCA00015EB1A15B14879C95814927 +B2ED9AFF5C611EB9417B0B501B96322F7EC5A877D9DBCBD5B27C34B1C4939AC3 +3A8DB1C022DFE023C7154271D4EEDD5FC6D59140DC64A1D7B0121BA080B86A68 +5A981D92D9E630560CE6D4BBA9AEF413A165CBC085AF494B5439028759B41938 +E2E3CA62E1C3C12D7C2D63609B6DF294B2C06868DF8B1D24F7AF20820B8016D5 +02A391358D26CE305CBB12FEED9F8E579CBE176349A92466113602021AA71EA1 +1AD0F11E6AECAB4559382D55FECAEDC26F5262F8BE7ECBC8A6F5483B5975E5FF +B3B2B474E3D47B9EA951924A342A90218DC9DB1C2A8E04A4B27FA09D97CD8B12 +582919236AD61D7BA88DBEA23AAE70E9CBDC091ADAFC992265CF1435525338CF +E6A3D7ED1A14CC5CC164E51536E25BE480346BE351A788B872BDE3FD175177DD +70E275891DE1759DFAAD0EAB9229D67994AFBE9C15C20392253C8E2BDF2F7FA6 +9BE6094D7583271C248DFEC5B4FD197147FA260636C769F160EA75F71B442FB2 +EC9491C840AACF92881CBCC42C2D8267C4A911B71D036B6974F0408B67B753D7 +472AD6652A1AD30C956C2ED929B6A4785251C206BDBB9549058F05709F24836A +1CA8AEB221BFCC548E77A584B0FEDB6F95B07316EDB3101F1B699C83E6E47FC8 +966B6ED96C91298EBDB2767679A3A1372C430B03BC0974C7F49A9E2F1FAEE509 +AE7A6B28180A132D04697F10D42B3241BED11F8ACB9C24802AB71BE75544C59A +21806A26533FF47AEB55E074E00BD3FCA07809310C3BD07E6DDE6A978154043C +5CAB655B7E0D8DC31843398C97CFC1D611761B4923B6F2BECEE22A7B1D8694A3 +8E55388F420E353115414768BFAC7DB0EC4A9459E079BDD374CF6E9E0C0CE5C6 +1B9D472BEE95A3F1351B034C4F561012185129540DB95EC415F36F48939E41D7 +B8408FFC1A0EBE6C9BF115CE275A8BCF66EC243C867E70074D52AC72774E159C +FA0C2D456A087C078E1AA583274D1DA7C39F677499C94E601EBBDE029BFB315D +2970DF345C37F3BE584E1854140C999A34E0FDB1E4344CA091081C72E9ADDC61 +E51E1E7356AE738DE3449738CEBD46839D564027006B16C6787BBFFD74EAD0FE +1DD37A0047E6CF135091B147EE977961ADF55EBADC3C8A0B27BA40DC9F48BEE6 +183AB7DF4A3FF555D0D50106B73A9D1AA6302EC43DB53EFD7CEA1DFBD0626455 +CA7F6440488B3FD916E6EB6835522BD9169418C7CFCE957035D0ED122CFC04D5 +D763FD9CA1D8876B9FCF7B4FEEEDC2875F4D6B2C1EA531FD8597DEEA3BECF729 +A8FC7E1130912229F70923A65A411E21C4185E67F416193E56F5F74A0C8BE24E +7C6DE4ACEE749F72106A45AE3107877FE478F253A8FA6E3CFEE11C50988C02BD +572BF568C829253F3563B4E470FB1BEBD67D54B2500BD8818D50736A27C959D4 +D2BEDA5585D9248FAB2A2B724FB9C64EE1F22CC9FD95F7E547D137BDE120B70F +6E5FE2253CCFE7E2508B23607D799EC63B8FD94FF57EB436168B2954A0D45D9F +A21921BFA6C2B74215E2966EA726031148553E30B0D2B430F72DE725C3D53D6A +5EA010DAABFA9D91BA2C22E56C706E01BB9EE2407441B18597F20552CAD64204 +EEF648D089FCE72951CE48B55A24FF7E22ED56C0CAD3DBE54F4F00948EADB312 +4EF1518BEB4F4D4E7DCF2C752A83BEF181F39ECEF2A1D8305FDFE3CFFE22B8BB +454E0F8179AEDF45E00FFCEED7427C15F99EB399AA2A992849D1D97640C3753F +7E4B1703F3F1A0FC1010D3EF2646DA4423C56F0AE84C83459C3C84F0A31B1F19 +877CB5568FCE0C37E49D0C8700AC31D70DAA6F297721E359871E452B03F135FE +F66BB7A39BEBECBDBFBCA98E364A6D80EBA20792F54FCC9814AE2A00031AFC73 +620BF3BF87C03A06346FF3C0D745064F575C6EA42EC8E6D74622FA57C0BDA324 +4FE481F9DED0D26A775DF548A9A327B95C102221253E25533C939E8ED52D9830 +78422CC904AE6AAEB2C9D60BDC86DBDC1F7E675E45301304BB3DB866C3422528 +751D657E8308C45D99A95B6DE948F8F3212A4C11D9126756DDBF61B424EA4016 +421720EF95CF47F56C5D0F76ADFAED8669A6A85BD25C3A8C3F65887D9E060157 +60FCBB7935E68E817C3E992AA290BE0F8ACC2372706DD0C7BB959FEEF05EC2AA +75020AC0156CA3934DE290AC0FE9C50BDC3326222AE7F80D1AA723F1677A9CD6 +6538238B4290881A47C67151437306F37D34457749AB0730F8EE813E5E30A378 +75E0A29E5E6FFB68ED7C13FAF68056E5D04BF0278FD6455604DE654B0B7D0DCB +1770301DE0DE626F63A0AA9ED81E91AE29AD493706B8AF48866079B88CD98CC1 +540A771609E992EF2A9D39AAFAFAD2194528E1F2ADC486385B92F16C3C0CEA56 +024D03A955CCF76B337E5F62A953DCBF132089E46829EC6A77D8303C4DC2E437 +B32134D8DF9EAADE281845C43D3C37135D33077FCAF7B3EE825DACE9BB801B35 +025438C52B264BB955EEC3951E38C20E3A7C78160FCBA5E532173CCE46C1C24E +9E7640011F12B196F9844D7CA63A3E6600A29E31AD95CD7FA12FED0B10FCF9A9 +0FE81AF02067608C15502D3FD6E598ABF676CC9BF5A69C9AC7D7AD5FEBE6F1AA +8301E9A139664B5BEA53C755CD45C70579D71F8DBCC20724D51101F87BA37D46 +2F3752CD5A96D58CA5634058C711BEE0B3D70F86E11FB6C6995516CE179E6FF2 +6632D9FE2B6E5863646EC391755A56CADC20701B404BCABAB2B57C209E083B3E +A058545FEE90F7E81D58AB8FBEC1090973961481E0D91D6D70AA96B30D9FEEAD +290CE6BB038861850E4DDE34B9B2692D5A49FFF527BB632A8F41972596404674 +9FADD1F7D69A496E6D0B663D4E6DE927D2E95D12A91CE3806640D64BB3A0F475 +856DA5772F31EAF64D686FC1748FD07420E3EA75D17CF60CE933A0263F069E30 +F66C9938065EFE94E913AF4EF0310CCB9F73FEA4BC65387EF19F92AAEFB93C78 +3F0A41450391033152DE8D995AA73F6724AD2FA101EFA67F0032601C92512704 +351CEE1AD33134D9BEB63448C0ACDF3DF3074CE10F4E9ABBFB9A87DCA6F76CF5 +EEC9D84E3F5C49C50BDB2E3E774954EBFBB607F24EB1EDBB4E170DD080A4E6E7 +06F06BC56AE52A69CEDDEE709A9FA231E18CFC480F50C772B8BF1F245B4C4F82 +C05DFB3B78F96B154491843A5957E85594236C02F54C3BEB84C9BD412BC08113 +E8AEA1EC49268A4DDD527984EA21A7B5017BDC93305C4D9DEB7FDB7D347A3488 +F10BEAE27EC7EE52CD612698D1213CCA102B5360A1FAB8CF0E009CC38FCBE9B4 +CC176BDFA6850B434A1BAD3B5AF1CE529A61910F757A4DDE0527F8E2072336D7 +0E3CB40218CB6C4B2F4D9AFFA809685CD265068B8EFF0E42205DD534E0AA8A86 +58CD5F0A69EF08F6284CFCB5BECBF3351AB1870042184E558319150EA03EECCD +8EC147370EC583641895A5CBAE71E7455648B33F16C855507B1DFF3399352C4F +13F2135EF94B10ED98565BDD10E99C8BDA017B48407DFF1E815EBCF27B13947D +10A9A545562A4E6D6E8C5BDDFA363250565A2B9E5D0E56ECA71C18785577B1BE +41A2A39F754B0B50E230028914B8BB54ACE5C0C7DAC6740A154C1515E57259EF +392002AE3F7E0DACC76D16F95A17A9025C1F443BDFB01D34AD898F080B3C6ABB +10C9C7F773E93BAB7B26A745B11733B888DCDE4BA060750B9971111BC8F9B446 +1D65474BDA32D0A3CBE52E027EFC9FD69AF587009C9F8AEA9C436D858A0BD3C0 +847EAB8D00A99ECBFF1D8831F58E16D2DC863C23FC88743378D61716B1B7D0E0 +5B7DA8C435A28E751BAED3384C39E4EF0C8D05FA03D1737ACEA08206603E464C +17E0783A8EA1F6225CD5216C2E8CC1E070C988EE1D663426B1B69FC297CB02A3 +A4A9DDF70A3FA3EA44CBFF0A608DCC5F94A8AD8E25467151732CFEFF4C1CF7AB +8E3B853271F9C28236CD5C4B8FB258AD53E534B0363185F351DE47916EEB 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4631,7 +4547,6 @@ /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR12 def /FontBBox {-34 -251 988 750 }readonly def -/UniqueID 5000794 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def @@ -4650,9 +4565,7 @@ dup 48 /zero put dup 49 /one put dup 50 /two put -dup 51 /three put dup 52 /four put -dup 57 /nine put dup 77 /M put dup 86 /V put dup 97 /a put @@ -4849,101 +4762,89 @@ 073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E 8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A012AD86D3 -A5FB886A4A9C2F39D61BCA53BF8E12C28FAE703C80CA9F7AD05C717514E523E0 -370A01839E7ACBCA79A17A10862A419D16D839113C2E7A8DF0AB9C72777CE63D -7262E3A0121D94735023D11DCFCA7F63E60C1522035FCCE62CC028F2A47AB4A1 -5817F83963EA12BAB4F7F7A4F3A6C218842DA58BD96F4421C1462507C1C1A306 -FE152A2D05F17FC1959CF0589439E183AEA012EBE630508F25FCBF5BCEDAFD8B -15A48F305835FDC3AC5658480F34B8CB3013CAE41D5794F8E13AE8B27319DA42 -F65DF1C3B96659A9EB6C877A4D4A2FC934EC297885712A5D8AE6D9C0A4679D07 -579D360BBCF1A6E23E08CC8DFA9DFF897088CC68B5D4F0DBA651F2C482F55F7E -BA48FB20B41C6EF57313F22DA51CCC14D5375B4C7F6811D3070E0C2C4D7CA11C -F4CFFD3A5D05F237B826A3B31FAA862D9B6FC87814CBAAE9A65D8A8436B435BB -C9E802E9059B6ECD00B8855B63131714B0A94D51DE7B26118CF17BAC4E4BA647 -CA1854406F04358C268C0F3D67B0790EDBC9A6169A3E93F6EB244B92505AF2C5 -07BA7BEF204EEE7DE594E6AD9267F24F1263B0D66A3C05307A835A02902382C0 -CFDAB41E802D96D49DCB379E56ADA6291D19BD53511E505786D0E392696AD713 -3FDB64DC8BA8730C6D068FA2D8907B87D0A09B928D408C176A281803EC06023A -E397CE2E50D6A4AD999CAAFD8DB6586DA8401CA8C844A17959846071CAD7A34B -8ED31E7ABA8D5A7F0721435EAD575C6F5A4DC59705034F69B14FF28B55E34DD2 -30D7CBA88E3BF7297286744B8CCCE26C75AC63DC723AF3AB1EA2B290DE432117 -BBE0CFA454E7CE42ED311F97669A1A7CECED0BD20C4876BB6485BCB638A503DF -F0BBF149EB6F89F8D41F55B16B7CB0D4BAEB8CDB09C0CECB2B7A7CCD57443109 -F9E2BF9318D3383753EC881BE7FE10FBCC7E752073C05D93BB9DE5110EF35511 -31054462265A33234E441FAF12E4DBA0F18E271775DD9F121F3C4D5A7446D72C -9E5CEB9A0AD53C35D5D2C30A719D76645F9AE5BF3220B84252B3FA5AB67B7BE9 -3CC9E7D404D73B8BC6991B38F1C2F63674F972DE07DB7797F92ADB0CA60C6D8A -FB0023AA3AB889C5225C0A825547BE2E621C19A3AB587261613EF0B17EC35B18 -D3D7D5DC2B34AB0B09CF7A9263174BFAAA41FABBF9910F27B0FD89CA576AAB1C -ACF0BBA1686FDAA4ABDEB259DB1413231B9CBC842EC6409CE7B04A808035A1B7 -2982530FDB0ABF45A0C3D4DAB183566C2B8C83D910799CD6C6E157B1794BDA1B -AD5E51EBD89DD3B412D2BA0A9C9ACBA7C579F7569F397BA1C9D750E1ACE16774 -F1A97494955E9CF7FBCFAAB06BF020A858AA9B7A2DD1A4E1F587D36D6988E667 -3C32FF600E9271F6F40DC4BF68FCEE412E9EF095A19A2EFB49B4164BF761290B -1B852335B71C3835842CC7B81054B21879331E478FDE46441E749B388816B043 -18961B8CB6A81421D731200727067BFC4673988A2DD5DBA2B18E7C2ECF8E1F96 -3B7783341DF93905F509FE05EDFD2DE9E51C3ABDA83BBB55D44616C5E37B3818 -208ACE647ECF8C0306CEE69081457D6C262C7C46DCA9C5F76FF7BF9DD33197BC -E1EAAF832FBCDBAC094D385E5DEA98431AE9590ACE01525B9DA83C31C9D69989 -FBBB6E795EC2D1F5ACCABDEFEDB987C80C61DF39F308E414C36581F89C9F31EA -BE0F05BA5673888758C7F7B94B0464B52633C579C6807509427834C4D64DAA6E -9C753066B2C04EBBF2D452C2AA29A74FB7BC93CD8F1817549476CE216BE179F0 -3245D620E734FDC14D05692C8866763307FDD24ADA5E242576E7DF33C1AA7A1B -24CFEAB55AF4044D400C9175A4E23FC6F4CCF82C666FA0A35C4C8500402822A3 -F3CF7605E25F517A38F30D7F71E7D72C44CA4F1999EFB94657CB36AD6CA2699F -F04434C068DA7171C8DD9F4F87FCCCCAF8A4038951D4DDC4A1CF18F915273A8C -5EA2CC66D0A94A1448A8631B241687C965302B60800AE0BDAD1DF5077289642B -AAB6F6BD2730B083EDD5BB4568972430305C81815654DC96A906830C616BF041 -08EF48F6FCCD9DE7E7BDFCC877FC43A2C3967DBDED2D9F481C92575E0D4CD0B0 -0197373D2688876B81229C08708A9E3682FC84C83F9890722EF6C4168E499ABA -4E30B7F299551C647102B5D9D3B9B34E142B73314AC6F9B84283FC7954D2860D -53A7D2A1A9E1AF8EFC7F18F1A8EFC27942A3D4FB04082840813A2FF1D6155D33 -934160BC7832776E15D29555432BCFD9337E0000D5919BAC9AB628559A8AA5C8 -CFF02E5D185973388212C545E37A680D791652FC914DF3F9522352354EA680CC -E1E78B100CA4A56D86B1BD450E528B77A487402A3B4436F093D39D2242F5B78F -02382948AF8DCE92C9F5FC27154DEAB154DFC2C08F8CB25E4A2315862E9919C7 -3EBBF7975D561E8F39E687AFC65A527F5156282DF3957BFE4202D0886B9DC00C -98308428F782F68958B0B17F79FA42F930E88D48FCEC7DFB0EDA3E41086905C3 -1B9096C243363F893E15EF0A1E338648FA9984E3BEA4DB93B3E2A53841742501 -AD0010E470C67197ADDF97D794D5E8EB01E9169E3494A9D55ABDC79E9AF3DEE2 -FB5B77C950DBF01A62074F79A7FD9F17213A1C01F96DD6A5D15EDAFE8E41D2C5 -4517776C40C90B2FAAC4D9F0224D35CCBD83E8EB16FDE743EBDE119A91604BBB -67CF9B42ECEE4F00C5978F88A6F2BD9145B5955CD8FA9DCFB9D4229DD84FF712 -E4CB4A8402BE43FB5B52314EE254F60617E91F00B0E6D203F271A9E25CDBDE2F -54866F5528DCEB1066A826023CE075A7A2E6AB9C7661FD7975E2FB08A0D8550A -0DFC3A7943CDD16C7FDCB2DCD896B0CB02A2B7283A5EF00CD24C02F667C1C1C8 -C2B9670114ADA8D17B4EE8CBA96F994E980B28DA5475B8CB632DD8E0C7D2419B -E2C80DEFF5E71F77A1FC965E63E62167B1AFBB04D21A2B66784EF2C8210DCFC0 -93E7EDBF314AF66AA17B4523570D5DC1E9C8326D0AC94FD09BC33A8355DF0A28 -F6DA836948FC69C034250DC1C5B66F340B44E93E2D8CD8A451F833A67740CCEE -CAEAA1CDC78A6CB4199F9A00690532AD19E82EA3D9E6576A30A9A90CE9290D53 -1F02F0E717CCDE0C9013A3BA719BABB73FC1A9C95757AD89447451FD3E48E2E4 -2E3468FA5D1B99A91E182BA805E5203D4EF8144CCC371691BFA36178E2CD384F -7743815E7DC47300D52854BF4D08F8E34817B297EFC43331E6A8A032303BD351 -E0F0E37BC92692C53307726C3F0A0181A529D1B630B7AF5F9FDA95549BEFA4C9 -3C5F529DBCC7B5A75EEC7C8B1A4153BBB53EF8FC51C2031226D73E3C7EF68536 -16C85338AC8CAD6625F447CE1C9449F6A38813D6BFADC034BB1063C50DD13C1F -6E1FA47095542AFB38D0A1FE379A27E0BD12FD782DA5973E2953C06D6FD2056D -497942950B1B8A0FE7FDA59F8791B9F51EEA5BCBDE2B7008EB5BE4B7CCD0594E -EF18F2DDB05E64CE15094281F0D1CE1E7DA6818C2CBC89726809BA1644C7BF6C -395923890660EEE9186F2424F014A5096DD38605CCFB39CCEF14E76A3AEC4D65 -EAED761FA024B3DDA82341B9E62545AA753D3BFB7F839931A324981331B2CDF2 -3DDAB9892415DA67C7B30939199FA37CE1F7A1BA75D2EDF5A5DF352C3B52E47E -D8CB61D48340A549E59F19C17ABACE6DC4D091B971F50B2E5293D20CAC2C2086 -7BB1F300BB3A9EBF450621B8F5D4F764026C52C3130EDD66E8EBAD2F7E2DCF53 -DF4BBA0A3AE30066A607A33AD26668126E070C281E5098E5466872ED60064A2D -4F9622D92706F5C42C194788D20AE7D5459B48F263045C294775C819AB23ABEA -E97F4A4D7296FC5BAD4846BC8370A2ED693CF3660C1F306F799ED4EE78C0F403 -1157C01B6C2157F950EFEC765427490648FDCFB3DC40232968DA24E27019DB01 -DE97418B89F48B4A17701C8DC4ABA5E6F18702A668E0D8BC3C19C883F8934F05 -47502319CCF736C3A7C2A782553BE69CBD67E1E15687942127C22F2917D66A4C -194C520B3A06955CD976FEE8C22AC00D71DBB5CE946F105A1E395890B9A9472C -C5827C3D10684F5506844E873166C9D033E3FFF339BE74DD9474A6D76A1F0690 -C72EEEA7EA073B786948828E7B076BB2E7A8D1982F9865CB83B5F2EFECCBE52E -7BCD61E20BD4B2E4085C237C3C37398618889D1E738EADEE4B7819661A00E520 -EF64812B5FAEA9DBD18851F2195CF5B6FEA5C5025679170AED4914F42723AE2C -5D623A3A5715EB6E +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A012A3B5F1 +9E59B54BABF9A72CF35A27CEF3AF07C2E4D6BF254DED2524F3068203896C931C +06398C1C3C2881CA864CFC4D243E945BFD8ACB9AD3AB8669A6912158FA150864 +D96E34BDCE3142610E8A2BDD2A7DF6A26B718471AEF042F641D019829AFE8637 +F8720D2DCC7342E0038D9B43B89953898AEBED5F09DEA465659EBCB83844DAAA +83C627DA47D46ED564CB5AF76309E2FD9E17724A0A893EA0A4329E978212DF25 +C0E27E49B63FFEE33D72E04BFCFD84E8A39BFA23D8E7AF6987C87EE06686EA04 +14FEE15429BAA6D979F242F4C431EEA7F8DE5A56B3CF11D1507DF22F7B2B4341 +D7E72BE1CA8BEB4711ABA2BD032463EC1109E10E12D62D1FFE94314167F2F663 +8EBDDED0DC98788D46CC1FCB379561F082534B0B8EBE982DC8F877C780200134 +0AB2E4816398A7E7869A7ACA2A3E0F0D3FD2D74C78019E07041CF26ABFA9FD56 +B52E6DE855ABA55DF840A94E884DB9361079D2957940FFAF910BCD62E44FB267 +403FA9966E92B9446993D0622F0E9FCBF20CB36564FC24EDEEB56045B2BAA3BE +27411C0744ADFD362CA07CED081C4BC5D750A8ADA52F42E6F5991BC1C867E8D8 +140192409FB30E42747EC9908640FF3E4072F115224E42246E38E3B3ADFD5906 +C11A97DA975A982217577A8A29383C385CF19EBB831B28C78318584971803150 +90C076770219EA454B74D77EE5178EBE34F1F4D73B9B38355046A6B61F84CB87 +FF76AADFCD4E00012D1F330207B273CE9FDE4FEED7A94AF93B4D5944EEFAC63D +50EA75662E70901643B0AEE95734D44F132AAD9288C2FDF7D31A4AEAFA7F185A +A7CAA302A876A7A344BA0CA73ACD3624A2F19153BF599515D9339A7A2AB7DA06 +755F12AF264E36CC35242255793CA870CF20E1DF581D4C63C942F777680FEDCB +AA97E4AB5A0B1BC1709D4E5EFC0B991DF4C6EFCE75E57F40FD14E076EE910845 +6FAF90139B5886CF89CC51F1EB3AD5A1FE45117AB027A029A5D7B0789E9AC717 +12713E362E4FC7B351715795D0D1EC3E58F0AEB668EA104D4E9A9BFFDFEC6F83 +5904B2641A46C05C09A4B8078327124D416871004102567FF24A760712A2802B +18DA4F90EF79A8DF37BDBBEABB99589181FD94F208B6D1E027E1D859C939895D +9B1482701746641DA7CE0F2E8275550BD99C4FC3E89B13F9053866B23F051317 +D511D5FFEEEDC1FF5C2E4F405080D4A72DB4B916E1F82C5B159CBDDB281C6621 +C19CFAFBF915D36959279BCADC3E8FB841596916721F532E002AE01000FD9B76 +EF05A623D67122002833528567A4B8025ED36BFEC9F05521FB05105A08FEC4CA +390BA9BD9CBC1F322A39791A8251C0E099EF81FB37049E5F1D2A907FD1B90021 +63E1FDECF419259312ABDED108874DDFCC2DD04E245B126F4DD331EE85621482 +7F00BEC6EE9FE998574433785411EED88058774EFD3EE3C7019DF36AECFED8BD +382937DDE61DE07E0738C7B9D93B4D744F49F275FC522421C7080AFDBF4AE295 +306D95EB94DE43830BC954EF68F20FF3A86027D90567B959681212F767248C16 +092906EF34A9AB3B4C249D989B2DA9D800FBC31A66FA57B2ABF18C3644593B83 +C83C8843AA7A7E5E7D33AF44E000F968C8E444AD667F9B6BDBB3217DE6B458A4 +86A0C850B3BAA4246B079F48D196EDA70AE9E80EF6EC4761B832AD492892BDD0 +198B16BB669A912EFC7DAEA2FC07C7BBED9166F6373B01429B87F3CF75476FB2 +D6D06DA7AA43BC479DDCEAC9DEDE9EC07F1B658FF45D175232D6E1ADAF85607B +12247BF3D7FF0CC5687FE41FBA69B33FA2C3DC6D4CACE03495AFE5CD8C64171A +E08D265335C78A5A6D1B3FE4FF6211B891A466E2DB0907ACBBCACD849501F8BC +3012053AF949408EA7AB215BF2A9BB61CB5A25D031C907A801037DD3C92C73D1 +36F7D9F0188E6FA4ABC8E2135F5ED9ED4BD5E0BF3E69807466EA432BF5135CE6 +9072086AF28A0A3786A0C3FB15729B89BD4FC909BFE0FE3D7E5C249E18077619 +C610AD8411C3B7C72F41427C17FBFBB2F6D53F0A7FCFFCCEACFF4484491532EC +A79ABC99BABBFEA1A3B913D57EA587964A2DCEFC211D37D878A477A741E78E56 +5D6AE91FB9CFF208058532CC4FBD913D5443703D949FF8B56CFE30BB6B8DA625 +AA1E671F53910E49DC07CB0FD91D4BD837466F63A9B0A333FBAD7FFBA509AB56 +DCFCC1E4C09B32ED92AEBF495825B9606857578F90510FE405FF8F85608075AB +B1655C94CA77FB7D927E36A2E4A653F0AAB74D6B84F00EE106D76A9F8BB176D3 +BEFE1CAA286E7A6EF54DE90BEC70C25DAB861DF635D4E9A1D624E373254BB878 +1265844FB1097D9030F5FB823B0BB6ED6CD6557D3B5F3C401DAAAECAF4A5EFEE +C7B9FF18030DD84A2BB01FF4A5D5A6C802C6B5D1AE7D81AB00196D07C8300838 +BA0C61E6BBD12D3FF46F347D807CCC95C5219AF20C29A8902AA0CB0D62D2685D +D76A3B0F6BB380831CFE0F54D1ADA7D2C7E6FA77291EBC40F8605E567DDA66C3 +DB9BF72F866C0E42415E33C27E7492FF591A825B36EDF39170D5C8203F058AAD +EBB6A8AE4DF986886CF0B7B081A52BB5F0A806CEB047ABFC4BF5EF690393E47B +5AE28C80F55420CE2BE61FDFBAD52E4873CBD14AAD1C52A7D1AD03C608820BE1 +4D8430AD84608DAE7635B5DEF0EF984E9738729C8A0C6807321C8FE2C7E4A4BB +22988E8E16DAA66BC5B54DD892FBA6CB7D4473614A96BB01412D5323388FCF92 +ADA5E2F136C02E5FC6659D37A070FA114CE0BE4D3D8B750B2124D6BB61BB92F4 +442E45600892C440148720570FD38031486D072CC3570A6CD091A30F1E43E5F8 +F980182BC9FED70CC47BC95FCA1BDD7B1C47CE29F7EAD6B08EA1D4350B0B41B5 +10ABAFAE6D196AF0F7807A88801B1027859473D8144F80461AFD3FAB87B46F10 +547B4135C7935BFFC811F55260BA095A9AA4E03F3BB8A5F11C271C26861658E7 +2E3F396A05F26D432299F879232E3F87D3982B37431E254CFD0E0501A5D15605 +7D084221B34A14EB93E01D739F83DD800586724B4DA51C701241C8906D9757C4 +D4FA8E13A9562F19ADBD36245B99584A48E0FACEF63B28E0C09BB5283D12C056 +8658B34CA6003A302C6174DF72B2D1FB8F6259C6160B821110FB882B0B02187B +A9F813C3A30F7B1E2EABCB4DAFEF04D60F0F4FDF3EF44AE9A914887E48C1CEBC +9CC1F0A416A99FA6A76F2FEA4A82D2E29D5DA23B44A9ABD8637866F72692920B +8E5924E0659B06D0A30F103F50122D54926D417567B2D94549A80ED356AEB6E0 +56B921924035B89DD4238AD0583CDD19D1FAE4E73100CE7D34F47182449093EC +62518B8AA81CB71F9213A3836D971737744546073DC21BC6CAF27B6D2C74463D +F95DCEA44DA8DC35B98469B528E236B31505DAC66174AAE6BD69758E41690A66 +1D3EAAB0160E79F2A130DF95037DAB1790FD48424787A3A6D306666A1D375C76 +CAC2F2203875798D1C7740199ACA888A6327D4DADCC2925594CAC1A8CBCD24E8 +936366C4FC10DE6BA938E47F00499A1EBB2FAB93F525C49DF1D844EE79FEB5EE +BA77C82E4031FA8077AE60214B79470D2EDF7C4C283FACBB634BF4ADC74A2C23 +8858561607D70858D384E544917480816E4BA7E442AB8C80CB0D5A5AE0C384DB +CFF4FAF504F3A6EE72F75F0AD14BEA716C41BDC36A7B8213E98A57D120D5CD3E +1009BC546EFFF690D73E026E7F32FDD60ABD6DC5057B11 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4955,7 +4856,7 @@ cleartomark {restore}if %%EndFont -TeXDict begin 40258437 52099151 1000 600 600 (cfitsio.dvi) +TeXDict begin 39158280 55380996 1000 600 600 (cfitsio.dvi) @start /Fa 133[37 4[49 30 37 38 1[46 46 51 74 23 2[28 1[42 1[42 2[42 46 11[68 12[68 3[69 55[51 12[{}19 90.9091 /CMTI10 rf /Fb 193[71 62[{}1 90.9091 /CMMI10 rf /Fc 149[25 @@ -4985,2015 +4886,410 @@ 80 76 74 79 1[49 5[52 52 52 52 52 52 52 52 52 52 2[35 32[58 12[{}52 90.9091 /CMBX10 rf /Fj 132[45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 -40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 -67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 -71 43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 -30 25 71 45 35 35 25 71 76 45 76 45 25 17[76 76 51 51 -53 11[{}92 90.9091 /CMR10 rf /Fk 134[62 5[46 46 2[59 -65 4[33 3[52 3[59 10[88 8[107 19[59 4[59 59 59 59 59 -1[33 46[{}17 119.552 /CMR12 rf /Fl 139[63 64 66 2[81 -90 134 45 2[45 1[81 49 74 1[72 1[78 12[112 90 2[110 6[60 -2[101 2[117 1[122 65[{}20 143.462 /CMBX12 rf /Fm 133[103 -123 123 1[123 129 90 92 95 1[129 116 129 194 65 2[65 -129 116 71 106 129 103 129 113 9[240 1[179 162 129 173 -1[159 175 182 1[140 2[87 182 183 146 153 178 168 165 -175 25[65 26[129 12[{}42 206.559 /CMBX12 rf end +40 51 40 51 45 25 1[45 25 45 25 56 68 68 93 68 68 66 +51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 +68 71 43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 +25 30 25 71 45 35 35 25 71 76 45 76 45 25 17[76 76 51 +51 53 11[{}93 90.9091 /CMR10 rf /Fk 134[62 5[46 46 2[59 +65 4[33 3[52 3[59 10[88 8[107 24[59 1[59 59 59 1[33 46[{}15 +119.552 /CMR12 rf /Fl 139[63 64 66 2[81 90 134 45 2[45 +1[81 49 74 1[72 1[78 12[112 90 2[110 6[60 2[101 2[117 +1[122 65[{}20 143.462 /CMBX12 rf /Fm 133[103 123 123 +1[123 129 90 92 95 1[129 116 129 194 65 2[65 129 116 +71 106 129 103 129 113 9[240 1[179 162 129 173 1[159 +175 182 1[140 2[87 182 183 146 153 178 168 165 175 25[65 +26[129 12[{}42 206.559 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin -%%BeginPaperSize: Letter +%%BeginPaperSize: a4 /setpagedevice where -{ pop << /PageSize [612 792] >> setpagedevice } -{ /letter where { pop letter } if } +{ pop << /PageSize [595 842] >> setpagedevice } +{ /a4 where { pop a4 } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 -TeXDict begin 1 0 bop 0 0 a -SDict begin [/Producer (dvips + Distiller)/Title ()/Subject ()/Creator -(LaTeX with hyperref package)/Author ()/Keywords () /DOCINFO pdfmark -end - 0 0 a 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 -a -SDict begin H.S end - -8 191 a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.i) cvn /DEST pdfmark end - -8 191 a 0 464 -a -SDict begin [/Count -4/Dest (chapter.1) cvn/Title (Introduction ) /OUT -pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.1.1) cvn/Title ( A Brief Overview) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.1.2) cvn/Title (Sources of FITS Software and Information) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.1.3) cvn/Title (Acknowledgments) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.1.4) cvn/Title (Legal Stuff) /OUT -pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -6/Dest (chapter.2) cvn/Title ( Creating the CFITSIO Library ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -4/Dest (section.2.1) cvn/Title (Building the Library) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.2.1.1) cvn/Title (Unix Systems) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.2.1.2) cvn/Title (VMS) /OUT -pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.2.1.3) cvn/Title (Windows PCs) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.2.1.4) cvn/Title (Macintosh PCs) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.2.2) cvn/Title (Testing the Library) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.2.3) cvn/Title (Linking Programs with CFITSIO) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.2.4) cvn/Title (Using CFITSIO in Multi-threaded Environments) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (section.2.5) cvn/Title (Getting Started with CFITSIO) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.2.6) cvn/Title (Example Program) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (chapter.3) cvn/Title ( A FITS Primer ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -13/Dest (chapter.4) cvn/Title ( Programming Guidelines ) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.4.1) cvn/Title (CFITSIO Definitions) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.2) cvn/Title (Current Header Data Unit \(CHDU\)) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.3) cvn/Title (Function Names and Variable Datatypes) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (section.4.4) cvn/Title (Support for Unsigned Integers and Signed Bytes) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.5) cvn/Title (Dealing with Character Strings) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.6) cvn/Title (Implicit Data Type Conversion) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.7) cvn/Title (Data Scaling) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.4.8) cvn/Title (Support for IEEE Special Values) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.9) cvn/Title (Error Status Values and the Error Message Stack) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.10) cvn/Title (Variable-Length Arrays in Binary Tables) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (section.4.11) cvn/Title (Multiple Access to the Same FITS File) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.12) cvn/Title (When the Final Size of the FITS HDU is Unknown) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.4.13) cvn/Title (CFITSIO Size Limitations) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -8/Dest (chapter.5) cvn/Title (Basic CFITSIO Interface Routines ) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.5.1) cvn/Title (CFITSIO Error Status Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.5.2) cvn/Title (FITS File Access Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.5.3) cvn/Title (HDU Access Routines) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -2/Dest (section.5.4) cvn/Title (Header Keyword Read/Write Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.4.1) cvn/Title (Keyword Reading Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.4.2) cvn/Title (Keyword Writing Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.5.5) cvn/Title (Primary Array or IMAGE Extension I/O Routines) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.5.6) cvn/Title (Image Compression) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -6/Dest (section.5.7) cvn/Title (ASCII and Binary Table Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.7.1) cvn/Title (Create New Table) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.5.7.2) cvn/Title (Column Information Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.7.3) cvn/Title (Routines to Edit Rows or Columns) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.7.4) cvn/Title (Read and Write Column Data Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.7.5) cvn/Title (Row Selection and Calculator Routines) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.7.6) cvn/Title (Column Binning or Histogramming Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -3/Dest (section.5.8) cvn/Title (Utility Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.8.1) cvn/Title (File Checksum Routines) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.5.8.2) cvn/Title (Date and Time Utility Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.5.8.3) cvn/Title (General Utility Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -4/Dest (chapter.6) cvn/Title ( The CFITSIO Iterator Function ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.6.1) cvn/Title (The Iterator Work Function) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.6.2) cvn/Title (The Iterator Driver Function) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.6.3) cvn/Title (Guidelines for Using the Iterator Function) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.6.4) cvn/Title (Complete List of Iterator Routines) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -1/Dest (chapter.7) cvn/Title ( World Coordinate System Routines ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.7.1) cvn/Title ( Self-contained WCS Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -2/Dest (chapter.8) cvn/Title ( Hierarchical Grouping Routines ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.8.1) cvn/Title (Grouping Table Routines) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.8.2) cvn/Title (Group Member Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -6/Dest (chapter.9) cvn/Title ( Specialized CFITSIO Interface Routines ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -2/Dest (section.9.1) cvn/Title (FITS File Access Routines) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.9.1.1) cvn/Title (File Access) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.1.2) cvn/Title (Download Utility Functions) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.9.2) cvn/Title (HDU Access Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -7/Dest (section.9.3) cvn/Title (Specialized Header Keyword Routines) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.3.1) cvn/Title (Header Information Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.3.2) cvn/Title (Read and Write the Required Keywords) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.3.3) cvn/Title (Write Keyword Routines) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.9.3.4) cvn/Title (Insert Keyword Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.3.5) cvn/Title (Read Keyword Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.3.6) cvn/Title (Modify Keyword Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.3.7) cvn/Title (Update Keyword Routines) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.9.4) cvn/Title (Define Data Scaling and Undefined Pixel Parameters) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.9.5) cvn/Title (Specialized FITS Primary Array or IMAGE Extension I/O Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -4/Dest (section.9.6) cvn/Title (Specialized FITS ASCII and Binary Table Routines) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.9.6.1) cvn/Title (General Column Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.6.2) cvn/Title (Low-Level Table Access Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.6.3) cvn/Title (Write Column Data Routines) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.9.6.4) cvn/Title (Read Column Data Routines) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -12/Dest (chapter.10) cvn/Title ( Extended File Name Syntax ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.1) cvn/Title (Overview) /OUT -pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -6/Dest (section.10.2) cvn/Title (Filetype) /OUT -pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.10.2.1) cvn/Title (Notes about HTTP proxy servers) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.2.2) cvn/Title (Notes about HTTPS and FTPS file access) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.2.3) cvn/Title (Notes about the stream filetype driver) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.2.4) cvn/Title (Notes about the gsiftp filetype) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.2.5) cvn/Title (Notes about the root filetype) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.2.6) cvn/Title (Notes about the shmem filetype:) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.3) cvn/Title (Base Filename) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (section.10.4) cvn/Title (Output File Name when Opening an Existing File) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.5) cvn/Title (Template File Name when Creating a New File) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.6) cvn/Title (Image Tile-Compression Specification) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.7) cvn/Title (HDU Location Specification) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.10.8) cvn/Title (Image Section) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.9) cvn/Title (Image Transform Filters) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.10) cvn/Title (Column and Keyword Filtering Specification) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -7/Dest (section.10.11) cvn/Title (Row Filtering Specification) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.11.1) cvn/Title (General Syntax) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.11.2) cvn/Title (Bit Masks) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.11.3) cvn/Title (Vector Columns) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.11.4) cvn/Title (Row Access) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.11.5) cvn/Title (Good Time Interval Filtering) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (subsection.10.11.6) cvn/Title (Spatial Region Filtering) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (subsection.10.11.7) cvn/Title (Example Row Filters) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.10.12) cvn/Title ( Binning or Histogramming Specification) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -6/Dest (chapter.11) cvn/Title (Template Files ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.11.1) cvn/Title (Detailed Template Line Format) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.11.2) cvn/Title (Auto-indexing of Keywords) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.11.3) cvn/Title (Template Parser Directives) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.11.4) cvn/Title (Formal Template Syntax) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (section.11.5) cvn/Title (Errors) /OUT -pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.11.6) cvn/Title (Examples) /OUT -pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -6/Dest (chapter.12) cvn/Title ( Local FITS Conventions ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.12.1) cvn/Title (64-Bit Long Integers) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.12.2) cvn/Title (Long String Keyword Values.) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.12.3) cvn/Title (Arrays of Fixed-Length Strings in Binary Tables) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.12.4) cvn/Title (Keyword Units Strings) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (section.12.5) cvn/Title (HIERARCH Convention for Extended Keyword Names) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.12.6) cvn/Title (Tile-Compressed Image Format) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -2/Dest (chapter.13) cvn/Title ( Optimizing Programs ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (section.13.1) cvn/Title (How CFITSIO Manages Data I/O) -/OUT pdfmark end - 0 464 -a 0 464 a -SDict begin [/Count -0/Dest (section.13.2) cvn/Title (Optimization Strategies) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (appendix.A) cvn/Title (Index of Routines ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/Count -0/Dest (appendix.B) cvn/Title (Parameter Definitions ) -/OUT pdfmark end - 0 464 a 0 464 -a -SDict begin [/Count -0/Dest (appendix.C) cvn/Title (CFITSIO Error Status Codes ) -/OUT pdfmark end - 0 464 a 0 464 a -SDict begin [/PageMode /UseOutlines/Page 1/View [/Fit] /DOCVIEW pdfmark -end - 0 464 a 0 464 a -SDict begin [ {Catalog}<<>> /PUT pdfmark end - 0 464 a 0 464 a -SDict begin H.S end - 0 464 -a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (Doc-Start) cvn /DEST pdfmark end - 0 464 a 0 464 a -SDict begin [ {Catalog} <>4<>]>>>> -/PUT pdfmark end - 0 464 a 240 -1799 a Fm(CFITSIO)76 b(User's)g(Reference)i(Guide)727 -2258 y Fl(An)53 b(In)l(terface)f(to)i(FITS)g(F)-13 b(ormat)54 -b(Files)1263 2518 y(for)g(C)f(Programmers)1667 3013 y -Fk(V)-10 b(ersion)38 b(3.4)1727 3916 y Fj(HEASAR)m(C)1764 +TeXDict begin 1 0 bop 240 1799 a Fm(CFITSIO)76 b(User's)g(Reference)i +(Guide)727 2258 y Fl(An)53 b(In)l(terface)f(to)i(FITS)g(F)-13 +b(ormat)54 b(Files)1263 2518 y(for)g(C)f(Programmers)1667 +3013 y Fk(V)-10 b(ersion)38 b(4.0)1727 3916 y Fj(HEASAR)m(C)1764 4029 y(Co)s(de)30 b(662)1363 4142 y(Go)s(ddard)f(Space)i(Fligh)m(t)h (Cen)m(ter)1522 4255 y(Green)m(b)s(elt,)f(MD)h(20771)1857 -4367 y(USA)1701 5227 y Fk(Ma)m(y)39 b(2019)p eop end +4367 y(USA)1701 5239 y Fk(Ma)m(y)39 b(2021)p eop end %%Page: 2 2 -TeXDict begin 2 1 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.ii) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(ii)p eop -end +TeXDict begin 2 1 bop 0 299 a Fj(ii)p eop end %%Page: 3 3 -TeXDict begin 3 2 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.iii) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 464 -a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter*.1) cvn /DEST pdfmark end - 0 464 a 803 x Fm(Con)-6 b(ten)g(ts)0 -1858 y -SDict begin H.S end - 0 1858 a Fi(1)84 b(In)m(tro)s(duction)748 1858 -y -SDict begin 13.6 H.L end - 748 1858 a 748 1858 a -SDict begin [/Subtype /Link/Dest (chapter.1) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 748 1858 a 3100 w Fi(1)136 2020 -y -SDict begin H.S end - 136 2020 a Fj(1.1)125 b(A)30 b(Brief)h(Ov)m(erview)1069 -2020 y -SDict begin 13.6 H.L end - 1069 2020 a 1069 2020 a -SDict begin [/Subtype /Link/Dest (section.1.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1069 2020 a 85 w Fj(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)131 b(1)136 2182 y -SDict begin H.S end - 136 2182 a Fj(1.2)94 b(Sources)30 -b(of)h(FITS)f(Soft)m(w)m(are)h(and)f(Information)2035 -2182 y -SDict begin 13.6 H.L end - 2035 2182 a 2035 2182 a -SDict begin [/Subtype /Link/Dest (section.1.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2035 2182 a 38 w Fj(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)131 b(1)136 2344 y -SDict begin H.S end - 136 2344 a -Fj(1.3)94 b(Ac)m(kno)m(wledgmen)m(ts)1053 2344 y -SDict begin 13.6 H.L end - 1053 -2344 a 1053 2344 a -SDict begin [/Subtype /Link/Dest (section.1.3) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1053 2344 a 30 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 -b(2)136 2506 y -SDict begin H.S end - 136 2506 a Fj(1.4)94 b(Legal)32 b(Stu\013)779 -2506 y -SDict begin 13.6 H.L end - 779 2506 a 779 2506 a -SDict begin [/Subtype /Link/Dest (section.1.4) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 779 2506 a 92 w Fj(.)46 +TeXDict begin 3 2 bop 0 1267 a Fm(Con)-6 b(ten)g(ts)0 +1858 y Fi(1)84 b(In)m(tro)s(duction)3136 b(1)136 2020 +y Fj(1.1)125 b(A)30 b(Brief)h(Ov)m(erview)85 b(.)46 b(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(1)136 2182 y(1.2)94 b(Sources)30 b(of)h(FITS)f(Soft)m(w)m(are)h(and)f +(Information)38 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(1)136 +2344 y(1.3)94 b(Ac)m(kno)m(wledgmen)m(ts)30 b(.)46 b(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(2)136 2506 y(1.4)94 b(Legal)32 b(Stu\013)92 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)131 b(4)0 2766 y -SDict begin H.S end - 0 2766 a Fi(2)119 -b(Creating)34 b(the)h(CFITSIO)e(Library)1627 2766 y -SDict begin 13.6 H.L end - 1627 -2766 a 1627 2766 a -SDict begin [/Subtype /Link/Dest (chapter.2) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 1627 2766 a 2221 w Fi(5)136 2928 y -SDict begin H.S end - -136 2928 a Fj(2.1)94 b(Building)31 b(the)f(Library)1167 -2928 y -SDict begin 13.6 H.L end - 1167 2928 a 1167 2928 a -SDict begin [/Subtype /Link/Dest (section.2.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1167 2928 a 58 w Fj(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -131 b(5)345 3090 y -SDict begin H.S end - 345 3090 a Fj(2.1.1)106 b(Unix)31 -b(Systems)1181 3090 y -SDict begin 13.6 H.L end - 1181 3090 a 1181 3090 a -SDict begin [/Subtype /Link/Dest (subsection.2.1.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1181 3090 -a 44 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)131 b(5)345 3252 y -SDict begin H.S end - 345 3252 a Fj(2.1.2)106 -b(VMS)838 3252 y -SDict begin 13.6 H.L end - 838 3252 a 838 3252 a -SDict begin [/Subtype /Link/Dest (subsection.2.1.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 838 3252 a 33 -w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)345 3413 y -SDict begin H.S end - 345 3413 -a Fj(2.1.3)106 b(Windo)m(ws)31 b(PCs)1195 3413 y -SDict begin 13.6 H.L end - 1195 -3413 a 1195 3413 a -SDict begin [/Subtype /Link/Dest (subsection.2.1.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1195 3413 a 30 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g +g(.)f(.)h(.)g(.)f(.)131 b(4)0 2766 y Fi(2)119 b(Creating)34 +b(the)h(CFITSIO)e(Library)2256 b(5)136 2928 y Fj(2.1)94 +b(Building)31 b(the)f(Library)58 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)345 3090 +y(2.1.1)106 b(Unix)31 b(Systems)44 b(.)h(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)345 3252 +y(2.1.2)106 b(VMS)33 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)345 +3413 y(2.1.3)106 b(Windo)m(ws)31 b(PCs)f(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)345 -3575 y -SDict begin H.S end - 345 3575 a Fj(2.1.4)106 b(Macin)m(tosh)32 b(PCs)1240 -3575 y -SDict begin 13.6 H.L end - 1240 3575 a 1240 3575 a -SDict begin [/Subtype /Link/Dest (subsection.2.1.4) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1240 3575 a 55 w Fj(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 -b(7)136 3737 y -SDict begin H.S end - 136 3737 a Fj(2.2)94 b(T)-8 b(esting)32 -b(the)e(Library)1121 3737 y -SDict begin 13.6 H.L end - 1121 3737 a 1121 3737 a -SDict begin [/Subtype /Link/Dest (section.2.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1121 -3737 a 33 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)136 3899 y -SDict begin H.S end - 136 3899 a -Fj(2.3)94 b(Linking)31 b(Programs)f(with)g(CFITSIO)1675 -3899 y -SDict begin 13.6 H.L end - 1675 3899 a 1675 3899 a -SDict begin [/Subtype /Link/Dest (section.2.3) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1675 3899 a 45 w Fj(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 -4061 y -SDict begin H.S end - 136 4061 a Fj(2.4)94 b(Using)31 b(CFITSIO)e(in)h(Multi-threaded) -h(En)m(vironmen)m(ts)2294 4061 y -SDict begin 13.6 H.L end - 2294 4061 a 2294 4061 -a -SDict begin [/Subtype /Link/Dest (section.2.4) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2294 4061 a 62 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 4223 y -SDict begin H.S end - 136 -4223 a Fj(2.5)94 b(Getting)32 b(Started)f(with)f(CFITSIO)1589 -4223 y -SDict begin 13.6 H.L end - 1589 4223 a 1589 4223 a -SDict begin [/Subtype /Link/Dest (section.2.5) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1589 4223 a 60 w Fj(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 -4385 y -SDict begin H.S end - 136 4385 a Fj(2.6)94 b(Example)31 b(Program)1068 -4385 y -SDict begin 13.6 H.L end - 1068 4385 a 1068 4385 a -SDict begin [/Subtype /Link/Dest (section.2.6) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1068 4385 a 86 w Fj(.)46 +3575 y(2.1.4)106 b(Macin)m(tosh)32 b(PCs)55 b(.)46 b(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)136 +3737 y(2.2)94 b(T)-8 b(esting)32 b(the)e(Library)j(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)85 b(10)0 4645 y -SDict begin H.S end - 0 4645 a Fi(3)119 b(A)35 b(FITS)f(Primer)913 -4645 y -SDict begin 13.6 H.L end - 913 4645 a 913 4645 a -SDict begin [/Subtype /Link/Dest (chapter.3) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 913 4645 a 2882 w Fi(13)0 -4904 y -SDict begin H.S end - 0 4904 a Fi(4)119 b(Programming)37 b(Guidelines)1348 -4904 y -SDict begin 13.6 H.L end - 1348 4904 a 1348 4904 a -SDict begin [/Subtype /Link/Dest (chapter.4) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 1348 4904 a 2447 w Fi(15)136 -5066 y -SDict begin H.S end - 136 5066 a Fj(4.1)94 b(CFITSIO)29 b(De\014nitions)1181 -5066 y -SDict begin 13.6 H.L end - 1181 5066 a 1181 5066 a -SDict begin [/Subtype /Link/Dest (section.4.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1181 5066 a 44 w Fj(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -85 b(15)136 5228 y -SDict begin H.S end - 136 5228 a Fj(4.2)94 b(Curren)m(t)30 -b(Header)h(Data)h(Unit)e(\(CHDU\))1774 5228 y -SDict begin 13.6 H.L end - 1774 5228 -a 1774 5228 a -SDict begin [/Subtype /Link/Dest (section.4.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1774 5228 a 87 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)85 b(18)136 5390 y -SDict begin H.S end - 136 5390 a Fj(4.3)94 b(F)-8 b(unction)32 -b(Names)e(and)g(V)-8 b(ariable)32 b(Datat)m(yp)s(es)1961 -5390 y -SDict begin 13.6 H.L end - 1961 5390 a 1961 5390 a -SDict begin [/Subtype /Link/Dest (section.4.3) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1961 5390 a 41 w Fj(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(18)136 5552 y -SDict begin H.S end - 136 5552 -a Fj(4.4)94 b(Supp)s(ort)29 b(for)h(Unsigned)g(In)m(tegers)h(and)f -(Signed)g(Bytes)2270 5552 y -SDict begin 13.6 H.L end - 2270 5552 a 2270 5552 a -SDict begin [/Subtype /Link/Dest (section.4.4) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2270 -5552 a 86 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(20)136 5714 y -SDict begin H.S end - 136 5714 -a Fj(4.5)94 b(Dealing)33 b(with)d(Character)g(Strings)1588 -5714 y -SDict begin 13.6 H.L end - 1588 5714 a 1588 5714 a -SDict begin [/Subtype /Link/Dest (section.4.5) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1588 5714 a 61 w Fj(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(22)1912 -5942 y(iii)p eop end +f(.)131 b(7)136 3899 y(2.3)94 b(Linking)31 b(Programs)f(with)g(CFITSIO) +45 b(.)g(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 +4061 y(2.4)94 b(Using)31 b(CFITSIO)e(in)h(Multi-threaded)h(En)m +(vironmen)m(ts)62 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 4223 y(2.5)94 +b(Getting)32 b(Started)f(with)f(CFITSIO)60 b(.)46 b(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 4385 y(2.6)94 b(Example)31 +b(Program)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 4645 y Fi(3)119 b(A)35 +b(FITS)f(Primer)2918 b(13)0 4904 y(4)119 b(Programming)37 +b(Guidelines)2482 b(15)136 5066 y Fj(4.1)94 b(CFITSIO)29 +b(De\014nitions)44 b(.)h(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)f(.)85 b(15)136 5228 y(4.2)94 b(Curren)m(t)30 +b(Header)h(Data)h(Unit)e(\(CHDU\))87 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)f(.)85 b(18)136 5390 y(4.3)94 b(F)-8 b(unction)32 +b(Names)e(and)g(V)-8 b(ariable)32 b(Datat)m(yp)s(es)41 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(18)136 5552 y(4.4)94 +b(Supp)s(ort)29 b(for)h(Unsigned)g(In)m(tegers)h(and)f(Signed)g(Bytes) +86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)85 b(20)136 5714 y(4.5)94 b(Dealing)33 +b(with)d(Character)g(Strings)61 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)85 b(22)1912 5942 y(iii)p eop end %%Page: 4 4 -TeXDict begin 4 3 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.iv) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(iv)3311 b -Fh(CONTENTS)136 555 y -SDict begin H.S end - 136 555 a Fj(4.6)94 b(Implicit)31 -b(Data)h(T)m(yp)s(e)e(Con)m(v)m(ersion)1584 555 y -SDict begin 13.6 H.L end - 1584 -555 a 1584 555 a -SDict begin [/Subtype /Link/Dest (section.4.6) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1584 555 a 65 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)85 b(23)136 716 y -SDict begin H.S end - 136 716 a Fj(4.7)94 -b(Data)32 b(Scaling)853 716 y -SDict begin 13.6 H.L end - 853 716 a 853 716 a -SDict begin [/Subtype /Link/Dest (section.4.7) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 853 -716 a 89 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(23)136 876 y -SDict begin H.S end - -136 876 a Fj(4.8)94 b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)g(V)-8 -b(alues)1652 876 y -SDict begin 13.6 H.L end - 1652 876 a 1652 876 a -SDict begin [/Subtype /Link/Dest (section.4.8) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1652 876 a 68 -w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(24)136 1037 y -SDict begin H.S end - 136 1037 a Fj(4.9)94 b(Error)30 b(Status)g(V)-8 -b(alues)32 b(and)d(the)i(Error)e(Message)j(Stac)m(k)2312 -1037 y -SDict begin 13.6 H.L end - 2312 1037 a 2312 1037 a -SDict begin [/Subtype /Link/Dest (section.4.9) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2312 1037 a 44 w Fj(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)85 b(24)136 1197 y -SDict begin H.S end - 136 1197 a Fj(4.10)49 b(V)-8 -b(ariable-Length)33 b(Arra)m(ys)d(in)g(Binary)h(T)-8 -b(ables)1971 1197 y -SDict begin 13.6 H.L end - 1971 1197 a 1971 1197 a -SDict begin [/Subtype /Link/Dest (section.4.10) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1971 1197 -a 31 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)136 1358 -y -SDict begin H.S end - 136 1358 a Fj(4.11)49 b(Multiple)32 b(Access)f(to)g(the)g(Same)f -(FITS)g(File)1901 1358 y -SDict begin 13.6 H.L end - 1901 1358 a 1901 1358 a -SDict begin [/Subtype /Link/Dest (section.4.11) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1901 -1358 a 31 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(27)136 1518 y -SDict begin H.S end - 136 1518 a Fj(4.12)49 b(When)31 b(the)f(Final)h(Size)g -(of)g(the)f(FITS)g(HDU)h(is)f(Unkno)m(wn)2393 1518 y -SDict begin 13.6 H.L end - -2393 1518 a 2393 1518 a -SDict begin [/Subtype /Link/Dest (section.4.12) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2393 1518 a 34 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h +TeXDict begin 4 3 bop 0 299 a Fj(iv)3311 b Fh(CONTENTS)136 +555 y Fj(4.6)94 b(Implicit)31 b(Data)h(T)m(yp)s(e)e(Con)m(v)m(ersion)65 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(23)136 716 y(4.7)94 b(Data)32 b(Scaling)89 b(.)46 b(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(23)136 876 y(4.8)94 b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)g(V)-8 +b(alues)68 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(24)136 1037 y(4.9)94 b(Error)30 b(Status)g(V)-8 b(alues)32 +b(and)d(the)i(Error)e(Message)j(Stac)m(k)44 b(.)i(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(25)136 1197 y(4.10)49 b(V)-8 b(ariable-Length)33 b(Arra)m(ys)d(in)g +(Binary)h(T)-8 b(ables)31 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(25)136 1358 y(4.11)49 b(Multiple)32 b(Access)f(to)g(the)g(Same)f +(FITS)g(File)h(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(27)136 1678 y -SDict begin H.S end - 136 1678 a Fj(4.13)49 b(CFITSIO)29 b(Size)i -(Limitations)1395 1678 y -SDict begin 13.6 H.L end - 1395 1678 a 1395 1678 a -SDict begin [/Subtype /Link/Dest (section.4.13) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1395 -1678 a 42 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +b(27)136 1518 y(4.12)49 b(When)31 b(the)f(Final)h(Size)g(of)g(the)f +(FITS)g(HDU)h(is)f(Unkno)m(wn)k(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(28)136 1678 +y(4.13)49 b(CFITSIO)29 b(Size)i(Limitations)42 b(.)k(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(28)0 1931 +y Fi(5)f(Basic)36 b(CFITSIO)d(In)m(terface)h(Routines)2074 +b(31)136 2092 y Fj(5.1)94 b(CFITSIO)29 b(Error)h(Status)g(Routines)89 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(31)136 +2252 y(5.2)94 b(FITS)30 b(File)i(Access)f(Routines)g(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(32)136 2412 y(5.3)94 b(HDU)32 b(Access)f(Routines)72 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)85 b(35)136 2573 y(5.4)94 b(Header)31 b(Keyw)m(ord)f(Read/W)-8 +b(rite)33 b(Routines)40 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(37)345 2733 y(5.4.1)106 b(Keyw)m(ord)30 b(Reading)h(Routines)65 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(38)345 +2894 y(5.4.2)106 b(Keyw)m(ord)30 b(W)-8 b(riting)32 b(Routines)86 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(41)136 +3054 y(5.5)94 b(Primary)30 b(Arra)m(y)h(or)f(IMA)m(GE)i(Extension)e +(I/O)g(Routines)54 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(43)136 3215 y(5.6)94 +b(Image)32 b(Compression)f(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)85 b(28)0 1931 y -SDict begin H.S end - 0 1931 a Fi(5)f(Basic)36 b(CFITSIO)d(In)m -(terface)h(Routines)1757 1931 y -SDict begin 13.6 H.L end - 1757 1931 a 1757 1931 -a -SDict begin [/Subtype /Link/Dest (chapter.5) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 1757 1931 a 2038 w Fi(31)136 2092 y -SDict begin H.S end - 136 2092 a Fj(5.1)94 -b(CFITSIO)29 b(Error)h(Status)g(Routines)1631 2092 y -SDict begin 13.6 H.L end - -1631 2092 a 1631 2092 a -SDict begin [/Subtype /Link/Dest (section.5.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1631 2092 a 89 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)85 b(31)136 2252 y -SDict begin H.S end - 136 2252 a Fj(5.2)94 -b(FITS)30 b(File)i(Access)f(Routines)1406 2252 y -SDict begin 13.6 H.L end - 1406 -2252 a 1406 2252 a -SDict begin [/Subtype /Link/Dest (section.5.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1406 2252 a 31 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(32)136 2412 y -SDict begin H.S end - 136 -2412 a Fj(5.3)94 b(HDU)32 b(Access)f(Routines)1223 2412 -y -SDict begin 13.6 H.L end - 1223 2412 a 1223 2412 a -SDict begin [/Subtype /Link/Dest (section.5.3) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1223 2412 a 72 w Fj(.)46 b(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(35)136 -2573 y -SDict begin H.S end - 136 2573 a Fj(5.4)94 b(Header)31 b(Keyw)m(ord)f(Read/W)-8 -b(rite)33 b(Routines)1892 2573 y -SDict begin 13.6 H.L end - 1892 2573 a 1892 2573 -a -SDict begin [/Subtype /Link/Dest (section.5.4) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1892 2573 a 40 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(37)345 2733 y -SDict begin H.S end - 345 2733 a Fj(5.4.1)106 b(Keyw)m(ord)30 -b(Reading)h(Routines)1725 2733 y -SDict begin 13.6 H.L end - 1725 2733 a 1725 2733 -a -SDict begin [/Subtype /Link/Dest (subsection.5.4.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1725 2733 a 65 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(47)136 3375 +y(5.7)94 b(ASCI)s(I)29 b(and)h(Binary)h(T)-8 b(able)31 +b(Routines)85 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(52)345 3536 y(5.7.1)106 b(Create)32 b(New)e(T)-8 b(able)84 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(38)345 2894 y -SDict begin H.S end - 345 2894 a Fj(5.4.2)106 b(Keyw)m(ord)30 -b(W)-8 b(riting)32 b(Routines)1704 2894 y -SDict begin 13.6 H.L end - 1704 2894 a -1704 2894 a -SDict begin [/Subtype /Link/Dest (subsection.5.4.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1704 2894 a 86 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +b(52)345 3696 y(5.7.2)106 b(Column)30 b(Information)g(Routines)h(.)46 +b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)345 3857 y(5.7.3)106 +b(Routines)31 b(to)g(Edit)f(Ro)m(ws)h(or)f(Columns)39 +b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(56)345 4017 y(5.7.4)106 +b(Read)31 b(and)f(W)-8 b(rite)31 b(Column)f(Data)i(Routines)66 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(58)345 4178 y(5.7.5)106 b(Ro)m(w)31 +b(Selection)h(and)e(Calculator)h(Routines)88 b(.)46 b(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(60)345 4338 y(5.7.6)106 b(Column)30 b(Binning)g(or)g(Histogramming)i +(Routines)74 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)f(.)85 b(62)136 4498 y(5.8)94 b(Utilit)m(y)33 +b(Routines)27 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)85 b(40)136 3054 y -SDict begin H.S end - 136 3054 a Fj(5.5)94 b(Primary)30 -b(Arra)m(y)h(or)f(IMA)m(GE)i(Extension)e(I/O)g(Routines)2373 -3054 y -SDict begin 13.6 H.L end - 2373 3054 a 2373 3054 a -SDict begin [/Subtype /Link/Dest (section.5.5) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2373 3054 a 54 w Fj(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)85 b(43)136 3215 y -SDict begin H.S end - 136 3215 a Fj(5.6)94 b(Image)32 -b(Compression)1123 3215 y -SDict begin 13.6 H.L end - 1123 3215 a 1123 3215 a -SDict begin [/Subtype /Link/Dest (section.5.6) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1123 -3215 a 31 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)85 b(47)136 3375 y -SDict begin H.S end - 136 3375 a -Fj(5.7)94 b(ASCI)s(I)29 b(and)h(Binary)h(T)-8 b(able)31 -b(Routines)1705 3375 y -SDict begin 13.6 H.L end - 1705 3375 a 1705 3375 a -SDict begin [/Subtype /Link/Dest (section.5.7) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1705 3375 -a 85 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(52)345 3536 y -SDict begin H.S end - 345 3536 a Fj(5.7.1)106 b(Create)32 b(New)e(T)-8 -b(able)1353 3536 y -SDict begin 13.6 H.L end - 1353 3536 a 1353 3536 a -SDict begin [/Subtype /Link/Dest (subsection.5.7.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1353 3536 -a 84 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(64)345 4659 y(5.8.1)106 +b(File)32 b(Chec)m(ksum)e(Routines)47 b(.)f(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(64)345 4819 y(5.8.2)106 b(Date)32 +b(and)e(Time)g(Utilit)m(y)j(Routines)90 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)85 b(52)345 3696 y -SDict begin H.S end - 345 3696 a Fj(5.7.2)106 b(Column)30 -b(Information)g(Routines)1830 3696 y -SDict begin 13.6 H.L end - 1830 3696 a 1830 -3696 a -SDict begin [/Subtype /Link/Dest (subsection.5.7.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1830 3696 a 31 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(53)345 3857 y -SDict begin H.S end - 345 3857 a Fj(5.7.3)106 b(Routines)31 -b(to)g(Edit)f(Ro)m(ws)h(or)f(Columns)2034 3857 y -SDict begin 13.6 H.L end - 2034 -3857 a 2034 3857 a -SDict begin [/Subtype /Link/Dest (subsection.5.7.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2034 3857 a 39 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(55)345 4017 y -SDict begin H.S end - 345 4017 a Fj(5.7.4)106 b(Read)31 b(and)f(W)-8 -b(rite)31 b(Column)f(Data)i(Routines)2219 4017 y -SDict begin 13.6 H.L end - 2219 -4017 a 2219 4017 a -SDict begin [/Subtype /Link/Dest (subsection.5.7.4) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2219 4017 a 66 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(57)345 4178 y -SDict begin H.S end - 345 4178 a Fj(5.7.5)106 b(Ro)m(w)31 b(Selection)h(and)e -(Calculator)h(Routines)2197 4178 y -SDict begin 13.6 H.L end - 2197 4178 a 2197 4178 -a -SDict begin [/Subtype /Link/Dest (subsection.5.7.5) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2197 4178 a 88 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(59)345 4338 -y -SDict begin H.S end - 345 4338 a Fj(5.7.6)106 b(Column)30 b(Binning)g(or)g(Histogramming)i -(Routines)2423 4338 y -SDict begin 13.6 H.L end - 2423 4338 a 2423 4338 a -SDict begin [/Subtype /Link/Dest (subsection.5.7.6) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2423 4338 -a 74 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)85 b(61)136 4498 y -SDict begin H.S end - 136 4498 a Fj(5.8)94 b(Utilit)m(y)33 -b(Routines)986 4498 y -SDict begin 13.6 H.L end - 986 4498 a 986 4498 a -SDict begin [/Subtype /Link/Dest (section.5.8) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 986 4498 -a 27 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(64)345 4659 y -SDict begin H.S end - 345 4659 -a Fj(5.8.1)106 b(File)32 b(Chec)m(ksum)e(Routines)1602 -4659 y -SDict begin 13.6 H.L end - 1602 4659 a 1602 4659 a -SDict begin [/Subtype /Link/Dest (subsection.5.8.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1602 4659 a 47 w Fj(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(64)345 -4819 y -SDict begin H.S end - 345 4819 a Fj(5.8.2)106 b(Date)32 b(and)e(Time)g(Utilit)m(y)j -(Routines)1912 4819 y -SDict begin 13.6 H.L end - 1912 4819 a 1912 4819 a -SDict begin [/Subtype /Link/Dest (subsection.5.8.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1912 4819 -a 90 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(65)345 4980 -y -SDict begin H.S end - 345 4980 a Fj(5.8.3)106 b(General)32 b(Utilit)m(y)g(Routines)1616 -4980 y -SDict begin 13.6 H.L end - 1616 4980 a 1616 4980 a -SDict begin [/Subtype /Link/Dest (subsection.5.8.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1616 4980 a 33 w Fj(.)46 -b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(66)0 -5232 y -SDict begin H.S end - 0 5232 a Fi(6)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 -b(unction)1677 5232 y -SDict begin 13.6 H.L end - 1677 5232 a 1677 5232 a -SDict begin [/Subtype /Link/Dest (chapter.6) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 1677 5232 -a 2118 w Fi(77)136 5393 y -SDict begin H.S end - 136 5393 a Fj(6.1)94 b(The)30 -b(Iterator)i(W)-8 b(ork)31 b(F)-8 b(unction)1463 5393 -y -SDict begin 13.6 H.L end - 1463 5393 a 1463 5393 a -SDict begin [/Subtype /Link/Dest (section.6.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1463 5393 a 45 w Fj(.)45 b(.)h(.)g(.)f(.)h(.) +(.)85 b(65)345 4980 y(5.8.3)106 b(General)32 b(Utilit)m(y)g(Routines)h +(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(67)0 5232 y Fi(6)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 +b(unction)2154 b(79)136 5393 y Fj(6.1)94 b(The)30 b(Iterator)i(W)-8 +b(ork)31 b(F)-8 b(unction)45 b(.)g(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(80)136 5553 y(6.2)94 b(The)30 b(Iterator)i(Driv)m +(er)f(F)-8 b(unction)78 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)85 b(82)136 5714 y(6.3)94 b(Guidelines)31 +b(for)f(Using)h(the)f(Iterator)i(F)-8 b(unction)45 b(.)h(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(78)136 5553 y -SDict begin H.S end - -136 5553 a Fj(6.2)94 b(The)30 b(Iterator)i(Driv)m(er)f(F)-8 -b(unction)1500 5553 y -SDict begin 13.6 H.L end - 1500 5553 a 1500 5553 a -SDict begin [/Subtype /Link/Dest (section.6.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1500 5553 -a 78 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(80)136 5714 y -SDict begin H.S end - 136 5714 a Fj(6.3)94 b(Guidelines)31 -b(for)f(Using)h(the)f(Iterator)i(F)-8 b(unction)2028 -5714 y -SDict begin 13.6 H.L end - 2028 5714 a 2028 5714 a -SDict begin [/Subtype /Link/Dest (section.6.3) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2028 5714 a 45 w Fj(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)85 b(81)p eop end +(.)f(.)85 b(83)p eop end %%Page: 5 5 -TeXDict begin 5 4 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.v) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(CONTENTS)3334 -b Fj(v)136 555 y -SDict begin H.S end - 136 555 a Fj(6.4)94 b(Complete)32 b(List)e(of)h -(Iterator)g(Routines)1728 555 y -SDict begin 13.6 H.L end - 1728 555 a 1728 555 a -SDict begin [/Subtype /Link/Dest (section.6.4) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - -1728 555 a 62 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(82)0 823 y -SDict begin H.S end - 0 823 a Fi(7)119 b(W)-9 b(orld)36 b(Co)s(ordinate)e -(System)h(Routines)1839 823 y -SDict begin 13.6 H.L end - 1839 823 a 1839 823 a -SDict begin [/Subtype /Link/Dest (chapter.7) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 1839 -823 a 1956 w Fi(85)136 986 y -SDict begin H.S end - 136 986 a Fj(7.1)125 b(Self-con)m(tained) -32 b(W)m(CS)e(Routines)1549 986 y -SDict begin 13.6 H.L end - 1549 986 a 1549 986 -a -SDict begin [/Subtype /Link/Dest (section.7.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1549 986 a 29 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)85 b(86)0 1254 y -SDict begin H.S end - 0 1254 a Fi(8)119 b(Hierarc)m(hical)36 -b(Grouping)g(Routines)1667 1254 y -SDict begin 13.6 H.L end - 1667 1254 a 1667 1254 -a -SDict begin [/Subtype /Link/Dest (chapter.8) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 1667 1254 a 2128 w Fi(89)136 1418 y -SDict begin H.S end - 136 1418 a Fj(8.1)94 -b(Grouping)30 b(T)-8 b(able)31 b(Routines)1350 1418 y -SDict begin 13.6 H.L end - -1350 1418 a 1350 1418 a -SDict begin [/Subtype /Link/Dest (section.8.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1350 1418 a 87 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(90)136 1581 -y -SDict begin H.S end - 136 1581 a Fj(8.2)94 b(Group)30 b(Mem)m(b)s(er)g(Routines)1335 -1581 y -SDict begin 13.6 H.L end - 1335 1581 a 1335 1581 a -SDict begin [/Subtype /Link/Dest (section.8.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1335 1581 a 31 w Fj(.)46 +TeXDict begin 5 4 bop 0 299 a Fh(CONTENTS)3334 b Fj(v)136 +555 y(6.4)94 b(Complete)32 b(List)e(of)h(Iterator)g(Routines)62 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)0 +823 y Fi(7)119 b(W)-9 b(orld)36 b(Co)s(ordinate)e(System)h(Routines) +1992 b(87)136 986 y Fj(7.1)125 b(Self-con)m(tained)32 +b(W)m(CS)e(Routines)f(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(88)0 1254 y Fi(8)119 b(Hierarc)m(hical)36 +b(Grouping)g(Routines)2163 b(91)136 1418 y Fj(8.1)94 +b(Grouping)30 b(T)-8 b(able)31 b(Routines)87 b(.)46 b(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(92)136 1581 +y(8.2)94 b(Group)30 b(Mem)m(b)s(er)g(Routines)h(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(92)0 1849 y -SDict begin H.S end - 0 1849 a Fi(9)119 b(Sp)s(ecialized)36 b(CFITSIO)d(In)m -(terface)h(Routines)2054 1849 y -SDict begin 13.6 H.L end - 2054 1849 a 2054 1849 -a -SDict begin [/Subtype /Link/Dest (chapter.9) cvn/H /I/Border [0 0 1]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 2054 1849 a 1741 w Fi(95)136 2013 y -SDict begin H.S end - 136 2013 a Fj(9.1)94 -b(FITS)30 b(File)i(Access)f(Routines)1406 2013 y -SDict begin 13.6 H.L end - 1406 -2013 a 1406 2013 a -SDict begin [/Subtype /Link/Dest (section.9.1) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1406 2013 a 31 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(95)345 2176 y -SDict begin H.S end - 345 -2176 a Fj(9.1.1)106 b(File)32 b(Access)1077 2176 y -SDict begin 13.6 H.L end - 1077 -2176 a 1077 2176 a -SDict begin [/Subtype /Link/Dest (subsection.9.1.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1077 2176 a 77 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(95)345 -2340 y -SDict begin H.S end - 345 2340 a Fj(9.1.2)106 b(Do)m(wnload)32 b(Utilit)m(y)g(F)-8 -b(unctions)1737 2340 y -SDict begin 13.6 H.L end - 1737 2340 a 1737 2340 a -SDict begin [/Subtype /Link/Dest (subsection.9.1.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1737 2340 -a 53 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(99)136 2503 y -SDict begin H.S end - 136 2503 a Fj(9.2)94 b(HDU)32 b(Access)f(Routines)1223 -2503 y -SDict begin 13.6 H.L end - 1223 2503 a 1223 2503 a -SDict begin [/Subtype /Link/Dest (section.9.2) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1223 2503 a 72 w Fj(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(100)136 2667 y -SDict begin H.S end - 136 2667 a Fj(9.3)94 b(Sp)s(ecialized)32 -b(Header)e(Keyw)m(ord)h(Routines)1858 2667 y -SDict begin 13.6 H.L end - 1858 2667 -a 1858 2667 a -SDict begin [/Subtype /Link/Dest (section.9.3) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1858 2667 a 74 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(102)345 2830 y -SDict begin H.S end - 345 2830 a Fj(9.3.1)106 b(Header)31 -b(Information)f(Routines)1797 2830 y -SDict begin 13.6 H.L end - 1797 2830 a 1797 -2830 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1797 2830 a 64 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(102)345 2994 y -SDict begin H.S end - 345 2994 a Fj(9.3.2)106 b(Read)31 b(and)f(W)-8 -b(rite)31 b(the)g(Required)f(Keyw)m(ords)2234 2994 y -SDict begin 13.6 H.L end - -2234 2994 a 2234 2994 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2234 2994 a 51 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(102)345 3157 y -SDict begin H.S end - 345 3157 a Fj(9.3.3)106 b(W)-8 b(rite)32 -b(Keyw)m(ord)e(Routines)1623 3157 y -SDict begin 13.6 H.L end - 1623 3157 a 1623 -3157 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1623 3157 a 26 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)40 b(104)345 3321 y -SDict begin H.S end - 345 3321 a Fj(9.3.4)106 b(Insert)30 -b(Keyw)m(ord)g(Routines)1631 3321 y -SDict begin 13.6 H.L end - 1631 3321 a 1631 -3321 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.4) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1631 3321 a 89 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +b(94)0 1849 y Fi(9)119 b(Sp)s(ecialized)36 b(CFITSIO)d(In)m(terface)h +(Routines)1777 b(97)136 2013 y Fj(9.1)94 b(FITS)30 b(File)i(Access)f +(Routines)g(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)40 b(106)345 3484 y -SDict begin H.S end - 345 3484 a Fj(9.3.5)106 b(Read)31 -b(Keyw)m(ord)f(Routines)1604 3484 y -SDict begin 13.6 H.L end - 1604 3484 a 1604 -3484 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.5) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1604 3484 a 45 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +f(.)85 b(97)345 2176 y(9.1.1)106 b(File)32 b(Access)77 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)85 b(97)345 2340 y(9.1.2)106 b(Do)m(wnload)32 +b(Utilit)m(y)g(F)-8 b(unctions)53 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)40 b(107)345 3648 y -SDict begin H.S end - 345 3648 a Fj(9.3.6)106 b(Mo)s(dify)30 -b(Keyw)m(ord)h(Routines)1684 3648 y -SDict begin 13.6 H.L end - 1684 3648 a 1684 -3648 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.6) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1684 3648 a 36 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)40 b(109)345 3811 y -SDict begin H.S end - 345 3811 a Fj(9.3.7)106 b(Up)s(date)31 -b(Keyw)m(ord)f(Routines)1694 3811 y -SDict begin 13.6 H.L end - 1694 3811 a 1694 -3811 a -SDict begin [/Subtype /Link/Dest (subsection.9.3.7) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1694 3811 a 26 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)40 b(110)136 3975 y -SDict begin H.S end - 136 3975 a Fj(9.4)94 b(De\014ne)31 -b(Data)h(Scaling)f(and)f(Unde\014ned)f(Pixel)i(P)m(arameters)2454 -3975 y -SDict begin 13.6 H.L end - 2454 3975 a 2454 3975 a -SDict begin [/Subtype /Link/Dest (section.9.4) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2454 3975 a 43 w Fj(.)46 -b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(111)136 4138 y -SDict begin H.S end - 136 4138 a Fj(9.5)94 b(Sp)s(ecialized)32 -b(FITS)d(Primary)h(Arra)m(y)h(or)f(IMA)m(GE)h(Extension)g(I/O)f -(Routines)3079 4138 y -SDict begin 13.6 H.L end - 3079 4138 a 3079 4138 a -SDict begin [/Subtype /Link/Dest (section.9.5) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 3079 4138 -a 55 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(112)136 -4302 y -SDict begin H.S end - 136 4302 a Fj(9.6)94 b(Sp)s(ecialized)32 b(FITS)d(ASCI)s(I)g -(and)h(Binary)g(T)-8 b(able)31 b(Routines)2410 4302 y -SDict begin 13.6 H.L end - -2410 4302 a 2410 4302 a -SDict begin [/Subtype /Link/Dest (section.9.6) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2410 4302 a 87 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(115)345 -4465 y -SDict begin H.S end - 345 4465 a Fj(9.6.1)106 b(General)32 b(Column)d(Routines)1669 -4465 y -SDict begin 13.6 H.L end - 1669 4465 a 1669 4465 a -SDict begin [/Subtype /Link/Dest (subsection.9.6.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1669 4465 a 51 w Fj(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(115)345 -4629 y -SDict begin H.S end - 345 4629 a Fj(9.6.2)106 b(Lo)m(w-Lev)m(el)33 b(T)-8 -b(able)31 b(Access)g(Routines)1962 4629 y -SDict begin 13.6 H.L end - 1962 4629 a -1962 4629 a -SDict begin [/Subtype /Link/Dest (subsection.9.6.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1962 4629 a 40 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +g(.)f(.)40 b(101)136 2503 y(9.2)94 b(HDU)32 b(Access)f(Routines)72 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)40 b(102)136 2667 y(9.3)94 b(Sp)s(ecialized)32 b(Header)e(Keyw)m +(ord)h(Routines)74 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(104)345 2830 y(9.3.1)106 b(Header)31 b(Information)f(Routines)64 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(104)345 +2994 y(9.3.2)106 b(Read)31 b(and)f(W)-8 b(rite)31 b(the)g(Required)f +(Keyw)m(ords)51 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(104)345 3157 y(9.3.3)106 +b(W)-8 b(rite)32 b(Keyw)m(ord)e(Routines)c(.)46 b(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)40 b(106)345 3321 y(9.3.4)106 +b(Insert)30 b(Keyw)m(ord)g(Routines)89 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)40 b(108)345 3484 y(9.3.5)106 b(Read)31 +b(Keyw)m(ord)f(Routines)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)40 b(109)345 3648 y(9.3.6)106 b(Mo)s(dify)30 b(Keyw)m(ord)h +(Routines)36 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(117)345 4792 y -SDict begin H.S end - 345 4792 a Fj(9.6.3)106 b(W)-8 b(rite)32 -b(Column)e(Data)i(Routines)1809 4792 y -SDict begin 13.6 H.L end - 1809 4792 a 1809 -4792 a -SDict begin [/Subtype /Link/Dest (subsection.9.6.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1809 4792 a 52 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(117)345 4956 y -SDict begin H.S end - 345 4956 a Fj(9.6.4)106 b(Read)31 b(Column)e(Data)j -(Routines)1789 4956 y -SDict begin 13.6 H.L end - 1789 4956 a 1789 4956 a -SDict begin [/Subtype /Link/Dest (subsection.9.6.4) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1789 4956 -a 72 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(118)0 -5223 y -SDict begin H.S end - 0 5223 a Fi(10)67 b(Extended)35 b(File)f(Name)h(Syn)m(tax)1500 -5223 y -SDict begin 13.6 H.L end - 1500 5223 a 1500 5223 a -SDict begin [/Subtype /Link/Dest (chapter.10) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1500 5223 a 2243 w Fi(123)136 -5387 y -SDict begin H.S end - 136 5387 a Fj(10.1)49 b(Ov)m(erview)716 5387 y -SDict begin 13.6 H.L end - -716 5387 a 716 5387 a -SDict begin [/Subtype /Link/Dest (section.10.1) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 716 5387 a 84 w Fj(.)d(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(123)136 5550 y -SDict begin H.S end - 136 5550 a Fj(10.2)49 b(Filet)m(yp)s(e)668 -5550 y -SDict begin 13.6 H.L end - 668 5550 a 668 5550 a -SDict begin [/Subtype /Link/Dest (section.10.2) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 668 5550 a 62 w Fj(.)c(.)h(.)g(.)g(.)f(.)h +b(111)345 3811 y(9.3.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Routines)c(.) +45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(112)136 +3975 y(9.4)94 b(De\014ne)31 b(Data)h(Scaling)f(and)f(Unde\014ned)f +(Pixel)i(P)m(arameters)43 b(.)j(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(113)136 4138 y(9.5)94 +b(Sp)s(ecialized)32 b(FITS)d(Primary)h(Arra)m(y)h(or)f(IMA)m(GE)h +(Extension)g(I/O)f(Routines)55 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) +40 b(114)136 4302 y(9.6)94 b(Sp)s(ecialized)32 b(FITS)d(ASCI)s(I)g(and) +h(Binary)g(T)-8 b(able)31 b(Routines)87 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(117)345 +4465 y(9.6.1)106 b(General)32 b(Column)d(Routines)51 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(117)345 +4629 y(9.6.2)106 b(Lo)m(w-Lev)m(el)33 b(T)-8 b(able)31 +b(Access)g(Routines)40 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(119)345 4792 y(9.6.3)106 b(W)-8 b(rite)32 b(Column)e(Data)i(Routines) +52 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(119)345 +4956 y(9.6.4)106 b(Read)31 b(Column)e(Data)j(Routines)72 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(120)0 5223 +y Fi(10)67 b(Extended)35 b(File)f(Name)h(Syn)m(tax)2278 +b(125)136 5387 y Fj(10.1)49 b(Ov)m(erview)84 b(.)46 b(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)40 b(126)345 5714 y -SDict begin H.S end - 345 5714 a Fj(10.2.1)61 b(Notes)32 -b(ab)s(out)e(HTTP)g(pro)m(xy)g(serv)m(ers)1968 5714 y -SDict begin 13.6 H.L end - -1968 5714 a 1968 5714 a -SDict begin [/Subtype /Link/Dest (subsection.10.2.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1968 5714 a 34 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)40 b(127)p eop end +(.)f(.)40 b(125)136 5550 y(10.2)49 b(Filet)m(yp)s(e)62 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(128)345 5714 +y(10.2.1)61 b(Notes)32 b(ab)s(out)e(HTTP)g(pro)m(xy)g(serv)m(ers)k(.)46 +b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(129)p eop end %%Page: 6 6 -TeXDict begin 6 5 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.vi) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(vi)3311 b -Fh(CONTENTS)345 555 y -SDict begin H.S end - 345 555 a Fj(10.2.2)61 b(Notes)32 -b(ab)s(out)e(HTTPS)f(and)h(FTPS)g(\014le)g(access)2322 -555 y -SDict begin 13.6 H.L end - 2322 555 a 2322 555 a -SDict begin [/Subtype /Link/Dest (subsection.10.2.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2322 555 a 34 w Fj(.)46 b(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(127)345 716 y -SDict begin H.S end - 345 716 a Fj(10.2.3)61 b(Notes)32 b(ab)s(out)e(the)h -(stream)f(\014let)m(yp)s(e)h(driv)m(er)2161 716 y -SDict begin 13.6 H.L end - 2161 -716 a 2161 716 a -SDict begin [/Subtype /Link/Dest (subsection.10.2.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2161 716 a 54 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(128)345 876 y -SDict begin H.S end - 345 876 a Fj(10.2.4)61 b(Notes)32 b(ab)s(out)e(the)h -(gsiftp)f(\014let)m(yp)s(e)1849 876 y -SDict begin 13.6 H.L end - 1849 876 a 1849 -876 a -SDict begin [/Subtype /Link/Dest (subsection.10.2.4) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1849 876 a 83 w Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(128)345 1037 y -SDict begin H.S end - 345 1037 a Fj(10.2.5)61 b(Notes)32 b(ab)s(out)e(the)h -(ro)s(ot)f(\014let)m(yp)s(e)1793 1037 y -SDict begin 13.6 H.L end - 1793 1037 a 1793 -1037 a -SDict begin [/Subtype /Link/Dest (subsection.10.2.5) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1793 1037 a 68 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(129)345 1197 y -SDict begin H.S end - 345 1197 a Fj(10.2.6)61 b(Notes)32 b(ab)s(out)e(the)h -(shmem)e(\014let)m(yp)s(e:)1932 1197 y -SDict begin 13.6 H.L end - 1932 1197 a 1932 -1197 a -SDict begin [/Subtype /Link/Dest (subsection.10.2.6) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1932 1197 a 70 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(131)136 1358 y -SDict begin H.S end - 136 1358 a Fj(10.3)49 b(Base)32 b(Filename)923 -1358 y -SDict begin 13.6 H.L end - 923 1358 a 923 1358 a -SDict begin [/Subtype /Link/Dest (section.10.3) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 923 1358 a 90 w Fj(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)40 b(131)136 1518 y -SDict begin H.S end - 136 1518 a Fj(10.4)49 -b(Output)30 b(File)h(Name)g(when)f(Op)s(ening)f(an)h(Existing)h(File) -2346 1518 y -SDict begin 13.6 H.L end - 2346 1518 a 2346 1518 a -SDict begin [/Subtype /Link/Dest (section.10.4) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2346 1518 a 81 w -Fj(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)40 b(133)136 1678 y -SDict begin H.S end - 136 1678 a Fj(10.5)49 -b(T)-8 b(emplate)32 b(File)g(Name)f(when)e(Creating)i(a)g(New)f(File) -2228 1678 y -SDict begin 13.6 H.L end - 2228 1678 a 2228 1678 a -SDict begin [/Subtype /Link/Dest (section.10.5) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2228 1678 a 57 w -Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)40 b(135)136 1839 y -SDict begin H.S end - 136 1839 a Fj(10.6)49 -b(Image)32 b(Tile-Compression)e(Sp)s(eci\014cation)1841 -1839 y -SDict begin 13.6 H.L end - 1841 1839 a 1841 1839 a -SDict begin [/Subtype /Link/Dest (section.10.6) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1841 1839 a 91 w Fj(.)45 +TeXDict begin 6 5 bop 0 299 a Fj(vi)3311 b Fh(CONTENTS)345 +555 y Fj(10.2.2)61 b(Notes)32 b(ab)s(out)e(HTTPS)f(and)h(FTPS)g(\014le) +g(access)k(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)f(.)40 b(129)345 716 y(10.2.3)61 b(Notes)32 +b(ab)s(out)e(the)h(stream)f(\014let)m(yp)s(e)h(driv)m(er)54 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)40 b(130)345 876 y(10.2.4)61 b(Notes)32 +b(ab)s(out)e(the)h(gsiftp)f(\014let)m(yp)s(e)83 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(135)136 1999 y -SDict begin H.S end - 136 -1999 a Fj(10.7)49 b(HDU)32 b(Lo)s(cation)f(Sp)s(eci\014cation)1461 -1999 y -SDict begin 13.6 H.L end - 1461 1999 a 1461 1999 a -SDict begin [/Subtype /Link/Dest (section.10.7) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1461 1999 a 47 w Fj(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(135)136 2160 y -SDict begin H.S end - 136 2160 a Fj(10.8)49 b(Image)32 b(Section)903 -2160 y -SDict begin 13.6 H.L end - 903 2160 a 903 2160 a -SDict begin [/Subtype /Link/Dest (section.10.8) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 903 2160 a 39 w Fj(.)46 +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(131)345 1037 y(10.2.5)61 +b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f(\014let)m(yp)s(e)68 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(131)345 +1197 y(10.2.6)61 b(Notes)32 b(ab)s(out)e(the)h(shmem)e(\014let)m(yp)s +(e:)70 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(133)136 1358 +y(10.3)49 b(Base)32 b(Filename)90 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(133)136 1518 y(10.4)49 b(Output)30 b(File)h(Name)g(when)f(Op)s(ening) +f(an)h(Existing)h(File)81 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(135)136 1678 +y(10.5)49 b(T)-8 b(emplate)32 b(File)g(Name)f(when)e(Creating)i(a)g +(New)f(File)57 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(137)136 1839 y(10.6)49 +b(Image)32 b(Tile-Compression)e(Sp)s(eci\014cation)91 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(137)136 1999 +y(10.7)49 b(HDU)32 b(Lo)s(cation)f(Sp)s(eci\014cation)47 +b(.)e(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(137)136 2160 y(10.8)49 b(Image)32 b(Section)39 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)40 b(137)136 2320 y -SDict begin H.S end - 136 2320 a Fj(10.9)49 -b(Image)32 b(T)-8 b(ransform)29 b(Filters)1312 2320 y -SDict begin 13.6 H.L end - -1312 2320 a 1312 2320 a -SDict begin [/Subtype /Link/Dest (section.10.9) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1312 2320 a 54 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(138)136 -2481 y -SDict begin H.S end - 136 2481 a Fj(10.10)t(Column)30 b(and)g(Keyw)m(ord)g(Filtering)h -(Sp)s(eci\014cation)2124 2481 y -SDict begin 13.6 H.L end - 2124 2481 a 2124 2481 -a -SDict begin [/Subtype /Link/Dest (section.10.10) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2124 2481 a 91 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(139)136 -2641 y -SDict begin H.S end - 136 2641 a Fj(10.11)t(Ro)m(w)31 b(Filtering)h(Sp)s -(eci\014cation)1426 2641 y -SDict begin 13.6 H.L end - 1426 2641 a 1426 2641 a -SDict begin [/Subtype /Link/Dest (section.10.11) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1426 -2641 a 82 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +f(.)h(.)g(.)f(.)40 b(139)136 2320 y(10.9)49 b(Image)32 +b(T)-8 b(ransform)29 b(Filters)54 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)40 b(142)345 2802 y -SDict begin H.S end - 345 2802 a Fj(10.11.1)16 b(General)32 -b(Syn)m(tax)1251 2802 y -SDict begin 13.6 H.L end - 1251 2802 a 1251 2802 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.1) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1251 -2802 a 44 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)40 b(143)345 2962 y -SDict begin H.S end - 345 2962 a Fj(10.11.2)16 -b(Bit)32 b(Masks)1040 2962 y -SDict begin 13.6 H.L end - 1040 2962 a 1040 2962 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.2) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - -1040 2962 a 43 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(140)136 2481 y(10.10)t(Column)30 +b(and)g(Keyw)m(ord)g(Filtering)h(Sp)s(eci\014cation)91 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)40 b(141)136 2641 y(10.11)t(Ro)m(w)31 +b(Filtering)h(Sp)s(eci\014cation)82 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(145)345 2802 y(10.11.1)16 +b(General)32 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(145)345 2962 y(10.11.2)16 +b(Bit)32 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(145)345 3123 y -SDict begin H.S end - 345 -3123 a Fj(10.11.3)16 b(V)-8 b(ector)32 b(Columns)1274 -3123 y -SDict begin 13.6 H.L end - 1274 3123 a 1274 3123 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.3) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1274 3123 a 92 w Fj(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(146)345 3283 y -SDict begin H.S end - 345 3283 a Fj(10.11.4)16 b(Ro)m(w)31 -b(Access)1102 3283 y -SDict begin 13.6 H.L end - 1102 3283 a 1102 3283 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.4) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1102 3283 -a 52 w Fj(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)f(.)40 b(148)345 3444 y -SDict begin H.S end - 345 3444 a Fj(10.11.5)16 -b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 b(Filtering)1799 -3444 y -SDict begin 13.6 H.L end - 1799 3444 a 1799 3444 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.5) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1799 3444 a 62 w Fj(.)46 -b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(148)345 3604 -y -SDict begin H.S end - 345 3604 a Fj(10.11.6)16 b(Spatial)31 b(Region)h(Filtering)1590 -3604 y -SDict begin 13.6 H.L end - 1590 3604 a 1590 3604 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.6) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1590 3604 a 59 w Fj(.)46 +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(148)345 3123 y(10.11.3)16 +b(V)-8 b(ector)32 b(Columns)92 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(149)345 3283 y(10.11.4)16 +b(Ro)m(w)31 b(Access)52 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(151)345 3444 +y(10.11.5)16 b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 +b(Filtering)h(and)d(Calculation)37 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(151)345 3604 +y(10.11.6)16 b(Spatial)31 b(Region)h(Filtering)59 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(149)345 -3764 y -SDict begin H.S end - 345 3764 a Fj(10.11.7)16 b(Example)31 b(Ro)m(w)g(Filters)1476 -3764 y -SDict begin 13.6 H.L end - 1476 3764 a 1476 3764 a -SDict begin [/Subtype /Link/Dest (subsection.10.11.7) cvn/H /I/Border -[0 0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1476 3764 a 32 w Fj(.)45 +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(153)345 +3764 y(10.11.7)16 b(Example)31 b(Ro)m(w)g(Filters)h(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(151)136 3925 y -SDict begin H.S end - 136 3925 a Fj(10.12)35 b(Binning)30 -b(or)g(Histogramming)i(Sp)s(eci\014cation)1971 3925 y -SDict begin 13.6 H.L end - -1971 3925 a 1971 3925 a -SDict begin [/Subtype /Link/Dest (section.10.12) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1971 3925 a 31 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g +b(155)136 3925 y(10.12)35 b(Binning)30 b(or)g(Histogramming)i(Sp)s +(eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(156)0 +4178 y Fi(11)32 b(T)-9 b(emplate)35 b(Files)2933 b(159)136 +4338 y Fj(11.1)49 b(Detailed)33 b(T)-8 b(emplate)31 b(Line)g(F)-8 +b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(159)136 4498 y(11.2)49 b(Auto-indexing)31 b(of)g(Keyw)m(ords)73 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(160)136 4659 y(11.3)49 b(T)-8 b(emplate)32 b(P)m(arser)f(Directiv)m +(es)87 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(161)136 4819 y(11.4)49 b(F)-8 b(ormal)32 b(T)-8 b(emplate)32 +b(Syn)m(tax)i(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)40 b(162)136 4980 y(11.5)49 b(Errors)63 b(.)46 +b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -f(.)40 b(152)0 4178 y -SDict begin H.S end - 0 4178 a Fi(11)32 b(T)-9 b(emplate)35 -b(Files)845 4178 y -SDict begin 13.6 H.L end - 845 4178 a 845 4178 a -SDict begin [/Subtype /Link/Dest (chapter.11) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 845 4178 a 2898 -w Fi(155)136 4338 y -SDict begin H.S end - 136 4338 a Fj(11.1)49 b(Detailed)33 -b(T)-8 b(emplate)31 b(Line)g(F)-8 b(ormat)1601 4338 y -SDict begin 13.6 H.L end - -1601 4338 a 1601 4338 a -SDict begin [/Subtype /Link/Dest (section.11.1) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1601 4338 a 48 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h -(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)f(.)40 b(155)136 4498 y -SDict begin H.S end - 136 4498 -a Fj(11.2)49 b(Auto-indexing)31 b(of)g(Keyw)m(ords)1435 -4498 y -SDict begin 13.6 H.L end - 1435 4498 a 1435 4498 a -SDict begin [/Subtype /Link/Dest (section.11.2) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1435 4498 a 73 w Fj(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(156)136 4659 y -SDict begin H.S end - 136 4659 a Fj(11.3)49 b(T)-8 b(emplate)32 -b(P)m(arser)f(Directiv)m(es)1421 4659 y -SDict begin 13.6 H.L end - 1421 4659 a 1421 -4659 a -SDict begin [/Subtype /Link/Dest (section.11.3) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1421 4659 a 87 w Fj(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(162)136 5140 y(11.6)49 +b(Examples)72 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)f(.)40 b(157)136 4819 y -SDict begin H.S end - 136 4819 a Fj(11.4)49 -b(F)-8 b(ormal)32 b(T)-8 b(emplate)32 b(Syn)m(tax)1332 -4819 y -SDict begin 13.6 H.L end - 1332 4819 a 1332 4819 a -SDict begin [/Subtype /Link/Dest (section.11.4) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1332 4819 a 34 w Fj(.)46 -b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(158)136 4980 y -SDict begin H.S end - 136 4980 a Fj(11.5)49 b(Errors)596 4980 -y -SDict begin 13.6 H.L end - 596 4980 a 596 4980 a -SDict begin [/Subtype /Link/Dest (section.11.5) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 596 4980 a 63 w Fj(.)d(.)f(.)h(.)g(.)g(.)f(.)h -(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(162)0 +5393 y Fi(12)67 b(Lo)s(cal)35 b(FITS)g(Con)m(v)m(en)m(tions)2462 +b(165)136 5553 y Fj(12.1)49 b(64-Bit)33 b(Long)e(In)m(tegers)61 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)40 b(158)136 5140 y -SDict begin H.S end - 136 5140 a Fj(11.6)49 b(Examples)728 -5140 y -SDict begin 13.6 H.L end - 728 5140 a 728 5140 a -SDict begin [/Subtype /Link/Dest (section.11.6) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 728 5140 a 72 w Fj(.)d(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)40 b(158)0 5393 y -SDict begin H.S end - 0 5393 a Fi(12)67 b(Lo)s(cal)35 -b(FITS)g(Con)m(v)m(en)m(tions)1316 5393 y -SDict begin 13.6 H.L end - 1316 5393 a -1316 5393 a -SDict begin [/Subtype /Link/Dest (chapter.12) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1316 5393 a 2427 w Fi(161)136 5553 y -SDict begin H.S end - 136 -5553 a Fj(12.1)49 b(64-Bit)33 b(Long)e(In)m(tegers)1164 -5553 y -SDict begin 13.6 H.L end - 1164 5553 a 1164 5553 a -SDict begin [/Subtype /Link/Dest (section.12.1) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1164 5553 a 61 w Fj(.)45 -b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)f(.)40 b(165)136 5714 y(12.2)49 b(Long)31 b(String)f(Keyw)m(ord)g(V) +-8 b(alues.)65 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -40 b(161)136 5714 y -SDict begin H.S end - 136 5714 a Fj(12.2)49 b(Long)31 b(String)f(Keyw)m -(ord)g(V)-8 b(alues.)1513 5714 y -SDict begin 13.6 H.L end - 1513 5714 a 1513 5714 -a -SDict begin [/Subtype /Link/Dest (section.12.2) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1513 5714 a 65 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)40 b(161)p eop end +40 b(165)p eop end %%Page: 7 7 -TeXDict begin 7 6 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.vii) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(CONTENTS)3284 -b Fj(vii)136 555 y -SDict begin H.S end - 136 555 a Fj(12.3)49 b(Arra)m(ys)31 -b(of)f(Fixed-Length)i(Strings)d(in)h(Binary)h(T)-8 b(ables)2278 -555 y -SDict begin 13.6 H.L end - 2278 555 a 2278 555 a -SDict begin [/Subtype /Link/Dest (section.12.3) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2278 555 a 78 w Fj(.)46 b(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(163)136 715 y -SDict begin H.S end - 136 715 a Fj(12.4)49 b(Keyw)m(ord)31 -b(Units)f(Strings)1254 715 y -SDict begin 13.6 H.L end - 1254 715 a 1254 715 a -SDict begin [/Subtype /Link/Dest (section.12.4) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1254 -715 a 41 w Fj(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)40 b(163)136 876 y -SDict begin H.S end - 136 876 a Fj(12.5)49 -b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)h(for)e(Extended)g(Keyw)m(ord)g -(Names)2548 876 y -SDict begin 13.6 H.L end - 2548 876 a 2548 876 a -SDict begin [/Subtype /Link/Dest (section.12.5) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 2548 876 a 91 -w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) -40 b(163)136 1036 y -SDict begin H.S end - 136 1036 a Fj(12.6)49 b(Tile-Compressed)31 -b(Image)g(F)-8 b(ormat)1597 1036 y -SDict begin 13.6 H.L end - 1597 1036 a 1597 1036 -a -SDict begin [/Subtype /Link/Dest (section.12.6) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1597 1036 a 52 w Fj(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f -(.)40 b(164)0 1287 y -SDict begin H.S end - 0 1287 a Fi(13)67 b(Optimizing)35 -b(Programs)1191 1287 y -SDict begin 13.6 H.L end - 1191 1287 a 1191 1287 a -SDict begin [/Subtype /Link/Dest (chapter.13) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1191 1287 -a 2552 w Fi(167)136 1447 y -SDict begin H.S end - 136 1447 a Fj(13.1)49 b(Ho)m(w)32 -b(CFITSIO)c(Manages)k(Data)g(I/O)1712 1447 y -SDict begin 13.6 H.L end - 1712 1447 -a 1712 1447 a -SDict begin [/Subtype /Link/Dest (section.13.1) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1712 1447 a 78 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)40 b(167)136 1607 y -SDict begin H.S end - 136 1607 a Fj(13.2)49 b(Optimization)32 -b(Strategies)1289 1607 y -SDict begin 13.6 H.L end - 1289 1607 a 1289 1607 a -SDict begin [/Subtype /Link/Dest (section.13.2) cvn/H /I/Border [0 -0 1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1289 -1607 a 77 w Fj(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)40 b(168)0 1858 y -SDict begin H.S end - 0 1858 a Fi(A)57 b(Index)35 -b(of)g(Routines)990 1858 y -SDict begin 13.6 H.L end - 990 1858 a 990 1858 a -SDict begin [/Subtype /Link/Dest (appendix.A) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 990 -1858 a 2753 w Fi(173)0 2109 y -SDict begin H.S end - 0 2109 a Fi(B)62 b(P)m(arameter)35 -b(De\014nitions)1181 2109 y -SDict begin 13.6 H.L end - 1181 2109 a 1181 2109 a -SDict begin [/Subtype /Link/Dest (appendix.B) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1181 -2109 a 2562 w Fi(179)0 2360 y -SDict begin H.S end - 0 2360 a Fi(C)60 b(CFITSIO)33 -b(Error)i(Status)f(Co)s(des)1523 2360 y -SDict begin 13.6 H.L end - 1523 2360 a 1523 -2360 a -SDict begin [/Subtype /Link/Dest (appendix.C) cvn/H /I/Border [0 0 -1]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 1523 2360 a 2220 w Fi(185)p eop end +TeXDict begin 7 6 bop 0 299 a Fh(CONTENTS)3284 b Fj(vii)136 +555 y(12.3)49 b(Arra)m(ys)31 b(of)f(Fixed-Length)i(Strings)d(in)h +(Binary)h(T)-8 b(ables)78 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(167)136 715 +y(12.4)49 b(Keyw)m(ord)31 b(Units)f(Strings)41 b(.)46 +b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(167)136 876 y(12.5)49 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)h(for)e +(Extended)g(Keyw)m(ord)g(Names)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(167)136 1036 y(12.6)49 +b(Tile-Compressed)31 b(Image)g(F)-8 b(ormat)52 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(168)0 +1287 y Fi(13)67 b(Optimizing)35 b(Programs)2589 b(171)136 +1447 y Fj(13.1)49 b(Ho)m(w)32 b(CFITSIO)c(Manages)k(Data)g(I/O)78 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(171)136 +1607 y(13.2)49 b(Optimization)32 b(Strategies)77 b(.)46 +b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(172)0 1858 y Fi(A)57 b(Index)35 b(of)g(Routines)2789 +b(177)0 2109 y(B)62 b(P)m(arameter)35 b(De\014nitions)2598 +b(183)0 2360 y(C)60 b(CFITSIO)33 b(Error)i(Status)f(Co)s(des)2255 +b(189)p eop end %%Page: 8 8 -TeXDict begin 8 7 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.viii) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(viii)3261 -b Fh(CONTENTS)p eop end +TeXDict begin 8 7 bop 0 299 a Fj(viii)3261 b Fh(CONTENTS)p +eop end %%Page: 1 9 -TeXDict begin 1 8 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.1) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 464 -a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.1) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(1)0 1687 -y Fm(In)-6 b(tro)6 b(duction)0 2020 y -SDict begin H.S end - 0 2020 a 0 2020 -a -SDict begin 13.6 H.A end - 0 2020 a 0 2020 a -SDict begin [/View [/XYZ H.V]/Dest (section.1.1) cvn /DEST pdfmark -end - 0 2020 a 196 x Ff(1.1)180 b(A)45 +TeXDict begin 1 8 bop 0 1225 a Fg(Chapter)65 b(1)0 1687 +y Fm(In)-6 b(tro)6 b(duction)0 2216 y Ff(1.1)180 b(A)45 b(Brief)g(Ov)l(erview)0 2495 y Fj(CFITSIO)22 b(is)h(a)g(mac)m (hine-indep)s(enden)m(t)g(library)g(of)g(routines)h(for)e(reading)i (and)e(writing)h(data)h(\014les)f(in)g(the)h(FITS)0 2608 @@ -7041,54 +5337,33 @@ b(ject)34 b(in)f(The)g(Netherlands)g(made)g(esp)s(ecially)i (signi\014can)m(t)f(con)m(tributions)g(that)0 4847 y(resulted)c(in)g (man)m(y)h(of)f(the)h(new)f(features)g(that)h(app)s(eared)f(in)g(v2.0)i -(of)e(CFITSIO.)0 5143 y -SDict begin H.S end - 0 5143 a 0 5143 a -SDict begin 13.6 H.A end - 0 5143 a 0 -5143 a -SDict begin [/View [/XYZ H.V]/Dest (section.1.2) cvn /DEST pdfmark -end - 0 5143 a 179 x Ff(1.2)135 b(Sources)45 b(of)g(FITS)f(Soft)l(w)l -(are)i(and)f(Information)0 5601 y Fj(The)22 b(latest)i(v)m(ersion)f(of) -g(the)f(CFITSIO)f(source)i(co)s(de,)h(do)s(cumen)m(tation,)i(and)21 +(of)e(CFITSIO.)0 5322 y Ff(1.2)135 b(Sources)45 b(of)g(FITS)f(Soft)l(w) +l(are)i(and)f(Information)0 5601 y Fj(The)22 b(latest)i(v)m(ersion)f +(of)g(the)f(CFITSIO)f(source)i(co)s(de,)h(do)s(cumen)m(tation,)i(and)21 b(example)j(programs)e(are)h(a)m(v)-5 b(ailable)0 5714 y(on)30 b(the)h(W)-8 b(eb)31 b(or)f(via)h(anon)m(ymous)g(ftp)e(from:) 1927 5942 y(1)p eop end %%Page: 2 10 -TeXDict begin 2 9 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a -8 -191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.2) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(2)2452 b -Fh(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)382 555 y Fe -(http://heasarc.gsfc.nasa)o(.go)o(v/fi)o(tsio)382 668 -y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/fi)o(tsio)o(/c)0 -933 y Fj(An)m(y)28 b(questions,)g(bug)f(rep)s(orts,)h(or)f(suggested)i -(enhancemen)m(ts)f(related)g(to)h(the)e(CFITSIO)f(pac)m(k)-5 -b(age)30 b(should)d(b)s(e)0 1045 y(sen)m(t)k(to)g(the)g(FTOOLS)e(Help)h -(Desk)h(at)g(the)g(HEASAR)m(C:)382 1310 y Fe(http://heasarc.gsfc.nasa)o -(.go)o(v/cg)o(i-bi)o(n/f)o(tool)o(shel)o(p)0 1574 y Fj(This)40 -b(User's)i(Guide)f(assumes)g(that)h(readers)f(already)g(ha)m(v)m(e)i(a) -f(general)g(understanding)d(of)j(the)f(de\014nition)0 -1687 y(and)31 b(structure)g(of)h(FITS)e(format)i(\014les.)44 -b(F)-8 b(urther)32 b(information)f(ab)s(out)h(FITS)f(formats)g(is)h(a)m -(v)-5 b(ailable)34 b(from)d(the)0 1800 y(FITS)37 b(Supp)s(ort)f -(O\016ce)i(at)h Fe(http://fits.gsfc.nasa.g)o(ov)p Fj(.)57 -b(In)37 b(particular,)j(the)e('FITS)g(Standard')f(giv)m(es)0 -1913 y(the)31 b(authoritativ)m(e)j(de\014nition)d(of)g(the)h(FITS)e -(data)i(format.)43 b(Other)31 b(do)s(cumen)m(ts)g(a)m(v)-5 -b(ailable)34 b(at)d(that)h(W)-8 b(eb)32 b(site)0 2026 -y(pro)m(vide)e(additional)i(historical)f(bac)m(kground)g(and)e -(practical)j(advice)g(on)e(using)g(FITS)f(\014les.)0 +TeXDict begin 2 9 bop 0 299 a Fj(2)2452 b Fh(CHAPTER)30 +b(1.)71 b(INTR)m(ODUCTION)382 555 y Fe(http://heasarc.gsfc.nasa)o(.go)o +(v/fi)o(tsio)382 668 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o +(/fi)o(tsio)o(/c)0 933 y Fj(An)m(y)28 b(questions,)g(bug)f(rep)s(orts,) +h(or)f(suggested)i(enhancemen)m(ts)f(related)g(to)h(the)e(CFITSIO)f +(pac)m(k)-5 b(age)30 b(should)d(b)s(e)0 1045 y(sen)m(t)k(to)g(the)g +(FTOOLS)e(Help)h(Desk)h(at)g(the)g(HEASAR)m(C:)382 1310 +y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/cg)o(i-bi)o(n/f)o(tool)o(shel)o +(p)0 1574 y Fj(This)40 b(User's)i(Guide)f(assumes)g(that)h(readers)f +(already)g(ha)m(v)m(e)i(a)f(general)g(understanding)d(of)j(the)f +(de\014nition)0 1687 y(and)31 b(structure)g(of)h(FITS)e(format)i +(\014les.)44 b(F)-8 b(urther)32 b(information)f(ab)s(out)h(FITS)f +(formats)g(is)h(a)m(v)-5 b(ailable)34 b(from)d(the)0 +1800 y(FITS)37 b(Supp)s(ort)f(O\016ce)i(at)h Fe +(http://fits.gsfc.nasa.g)o(ov)p Fj(.)57 b(In)37 b(particular,)j(the)e +('FITS)g(Standard')f(giv)m(es)0 1913 y(the)31 b(authoritativ)m(e)j +(de\014nition)d(of)g(the)h(FITS)e(data)i(format.)43 b(Other)31 +b(do)s(cumen)m(ts)g(a)m(v)-5 b(ailable)34 b(at)d(that)h(W)-8 +b(eb)32 b(site)0 2026 y(pro)m(vide)e(additional)i(historical)f(bac)m +(kground)g(and)e(practical)j(advice)g(on)e(using)g(FITS)f(\014les.)0 2186 y(The)d(HEASAR)m(C)f(also)i(pro)m(vides)f(a)h(v)m(ery)f (sophisticated)h(FITS)e(\014le)i(analysis)f(program)g(called)h(`Fv')g (whic)m(h)f(can)0 2299 y(b)s(e)31 b(used)f(to)i(displa)m(y)f(and)g @@ -7103,15 +5378,7 @@ b(and)g(FTOOLS)f(are)i(a)m(v)-5 b(ailable)32 b(from)e(their)h(resp)s (ectiv)m(e)g(W)-8 b(eb)31 b(sites)g(at:)382 2902 y Fe (http://fv.gsfc.nasa.gov)382 3015 y(http://heasarc.gsfc.nasa)o(.go)o -(v/ft)o(ools)0 3178 y -SDict begin H.S end - 0 3178 a 0 3178 a -SDict begin 13.6 H.A end - 0 3178 a 0 3178 -a -SDict begin [/View [/XYZ H.V]/Dest (section.1.3) cvn /DEST pdfmark -end - 0 3178 a 176 x Ff(1.3)135 b(Ac)l(kno)l(wledgmen)l(ts)0 +(v/ft)o(ools)0 3354 y Ff(1.3)135 b(Ac)l(kno)l(wledgmen)l(ts)0 3605 y Fj(The)27 b(dev)m(elopmen)m(t)h(of)g(the)f(man)m(y)g(p)s(o)m(w)m (erful)g(features)h(in)f(CFITSIO)e(w)m(as)j(made)f(p)s(ossible)g (through)f(collab)s(ora-)0 3718 y(tions)33 b(with)e(man)m(y)i(p)s @@ -7152,47 +5419,35 @@ (on-the-\015y)h(\014ltering)g(of)g(FITS)f(tables.)76 b(This)41 b(algorithm)i(essen)m(tially)p eop end %%Page: 3 11 -TeXDict begin 3 10 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.3) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(1.3.)72 -b(A)m(CKNO)m(WLEDGMENTS)2623 b Fj(3)0 555 y(pre-compiles)36 -b(the)g(user-supplied)e(selection)k(expression)d(in)m(to)i(a)f(form)g -(that)g(can)g(b)s(e)f(rapidly)g(ev)-5 b(aluated)37 b(for)0 -668 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 b(Wilson)f(\(RSTX,)f -(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)f(routines)g(used)g(b)m -(y)g(CFITSIO)0 781 y(based)i(on)f(Lammers')h(design,)g(com)m(bined)g -(with)g(other)g(tec)m(hniques)g(suc)m(h)g(as)g(the)g(CFITSIO)f -(iterator)i(routine)0 894 y(to)g(further)e(enhance)h(the)h(data)g(pro)s -(cessing)f(throughput.)42 b(This)31 b(e\013ort)h(also)g(b)s(ene\014ted) -e(from)h(a)h(m)m(uc)m(h)f(earlier)0 1007 y(lexical)25 -b(parsing)f(routine)f(that)h(w)m(as)g(dev)m(elop)s(ed)g(b)m(y)g(Ken)m -(t)g(Blac)m(kburn)f(\(NASA/GSF)m(C\).)i(More)g(recen)m(tly)-8 -b(,)27 b(Craig)0 1120 y(Markw)m(ardt)i(\(NASA/GSF)m(C\))g(implemen)m -(ted)g(additional)g(functions)f(\(median,)h(a)m(v)m(erage,)j(stddev\))c -(and)g(other)0 1233 y(enhancemen)m(ts)j(to)g(the)g(lexical)h(parser.)0 -1393 y(The)40 b(CFITSIO)g(iterator)i(function)e(is)h(lo)s(osely)h -(based)f(on)f(similar)i(ideas)f(dev)m(elop)s(ed)g(for)g(the)g(XMM)g -(Data)0 1506 y(Access)31 b(La)m(y)m(er.)0 1666 y(P)m(eter)25 -b(Wilson)g(\(RSTX,)f(NASA/GSF)m(C\))h(wrote)g(the)f(complete)i(set)e -(of)h(F)-8 b(ortran-callable)27 b(wrapp)s(ers)22 b(for)i(all)h(the)0 -1779 y(CFITSIO)k(routines,)h(whic)m(h)g(in)g(turn)g(rely)g(on)h(the)f -(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)g(b)m(y)f(Burkhard)f -(Buro)m(w.)0 1939 y(The)h(syn)m(tax)i(used)e(b)m(y)h(CFITSIO)f(for)g -(\014ltering)i(or)f(binning)e(input)h(FITS)h(\014les)g(is)g(based)f(on) -h(ideas)h(dev)m(elop)s(ed)0 2052 y(for)41 b(the)g(AXAF)h(Science)g(Cen) -m(ter)g(Data)h(Mo)s(del)e(b)m(y)g(Jonathan)g(McDo)m(w)m(ell,)47 -b(An)m(tonella)c(F)-8 b(ruscione,)45 b(Aneta)0 2165 y(Siemigino)m(wsk) --5 b(a)27 b(and)e(Bill)i(Jo)m(y)m(e.)41 b(See)26 b(h)m +TeXDict begin 3 10 bop 0 299 a Fh(1.3.)72 b(A)m(CKNO)m(WLEDGMENTS)2623 +b Fj(3)0 555 y(pre-compiles)36 b(the)g(user-supplied)e(selection)k +(expression)d(in)m(to)i(a)f(form)g(that)g(can)g(b)s(e)f(rapidly)g(ev)-5 +b(aluated)37 b(for)0 668 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 +b(Wilson)f(\(RSTX,)f(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)f +(routines)g(used)g(b)m(y)g(CFITSIO)0 781 y(based)i(on)f(Lammers')h +(design,)g(com)m(bined)g(with)g(other)g(tec)m(hniques)g(suc)m(h)g(as)g +(the)g(CFITSIO)f(iterator)i(routine)0 894 y(to)g(further)e(enhance)h +(the)h(data)g(pro)s(cessing)f(throughput.)42 b(This)31 +b(e\013ort)h(also)g(b)s(ene\014ted)e(from)h(a)h(m)m(uc)m(h)f(earlier)0 +1007 y(lexical)25 b(parsing)f(routine)f(that)h(w)m(as)g(dev)m(elop)s +(ed)g(b)m(y)g(Ken)m(t)g(Blac)m(kburn)f(\(NASA/GSF)m(C\).)i(More)g +(recen)m(tly)-8 b(,)27 b(Craig)0 1120 y(Markw)m(ardt)i(\(NASA/GSF)m +(C\))g(implemen)m(ted)g(additional)g(functions)f(\(median,)h(a)m(v)m +(erage,)j(stddev\))c(and)g(other)0 1233 y(enhancemen)m(ts)j(to)g(the)g +(lexical)h(parser.)0 1393 y(The)40 b(CFITSIO)g(iterator)i(function)e +(is)h(lo)s(osely)h(based)f(on)f(similar)i(ideas)f(dev)m(elop)s(ed)g +(for)g(the)g(XMM)g(Data)0 1506 y(Access)31 b(La)m(y)m(er.)0 +1666 y(P)m(eter)25 b(Wilson)g(\(RSTX,)f(NASA/GSF)m(C\))h(wrote)g(the)f +(complete)i(set)e(of)h(F)-8 b(ortran-callable)27 b(wrapp)s(ers)22 +b(for)i(all)h(the)0 1779 y(CFITSIO)k(routines,)h(whic)m(h)g(in)g(turn)g +(rely)g(on)h(the)f(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)g(b)m +(y)f(Burkhard)f(Buro)m(w.)0 1939 y(The)h(syn)m(tax)i(used)e(b)m(y)h +(CFITSIO)f(for)g(\014ltering)i(or)f(binning)e(input)h(FITS)h(\014les)g +(is)g(based)f(on)h(ideas)h(dev)m(elop)s(ed)0 2052 y(for)41 +b(the)g(AXAF)h(Science)g(Cen)m(ter)g(Data)h(Mo)s(del)e(b)m(y)g +(Jonathan)g(McDo)m(w)m(ell,)47 b(An)m(tonella)c(F)-8 +b(ruscione,)45 b(Aneta)0 2165 y(Siemigino)m(wsk)-5 b(a)27 +b(and)e(Bill)i(Jo)m(y)m(e.)41 b(See)26 b(h)m (ttp://heasarc.gsfc.nasa.go)m(v/do)s(cs/journal/axa)q(f7.h)m(t)q(ml)32 b(for)25 b(further)0 2278 y(description)30 b(of)h(the)g(AXAF)g(Data)h (Mo)s(del.)0 2438 y(The)j(\014le)g(decompression)g(co)s(de)g(w)m(ere)h @@ -7246,28 +5501,8 @@ b(P)m(eter)g(Y)-8 b(oung,)31 b(Jianjun)e(Xu,)h(and)g(Nelson)h(Zarate.)p eop end %%Page: 4 12 -TeXDict begin 4 11 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.4) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(4)2452 -b Fh(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)0 464 y -SDict begin H.S end - 0 464 -a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.1.4) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(1.4)135 b(Legal)46 +TeXDict begin 4 11 bop 0 299 a Fj(4)2452 b Fh(CHAPTER)30 +b(1.)71 b(INTR)m(ODUCTION)0 555 y Ff(1.4)135 b(Legal)46 b(Stu\013)0 805 y Fj(Cop)m(yrigh)m(t)37 b(\(Unpublished{all)g(righ)m (ts)g(reserv)m(ed)g(under)e(the)i(cop)m(yrigh)m(t)h(la)m(ws)f(of)g(the) g(United)g(States\),)j(U.S.)0 918 y(Go)m(v)m(ernmen)m(t)30 @@ -7311,55 +5546,20 @@ b(OR)g(SER-)0 3205 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")p eop end %%Page: 5 13 -TeXDict begin 5 12 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.5) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.2) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(2)0 -1687 y Fm(Creating)77 b(the)h(CFITSIO)e(Library)0 2060 -y -SDict begin H.S end - 0 2060 a 0 2060 a -SDict begin 13.6 H.A end - 0 2060 a 0 2060 a -SDict begin [/View [/XYZ H.V]/Dest (section.2.1) cvn /DEST pdfmark -end - 0 2060 a 156 x -Ff(2.1)135 b(Building)45 b(the)h(Library)0 2467 y Fj(The)h(CFITSIO)f -(co)s(de)h(is)h(con)m(tained)g(in)f(ab)s(out)g(40)h(C)f(source)h -(\014les)f(\(*.c\))i(and)e(header)g(\014les)g(\(*.h\).)93 -b(On)0 2580 y(V)-10 b(AX/VMS)31 b(systems)g(2)f(assem)m(bly-co)s(de)i -(\014les)e(\(vmsieeed.mar)h(and)f(vmsieeer.mar\))i(are)e(also)i -(needed.)0 2740 y(CFITSIO)22 b(is)h(written)g(in)g(ANCI)g(C)g(and)g -(should)f(b)s(e)g(compatible)j(with)e(most)g(existing)i(C)d(and)h(C++)f -(compilers.)0 2853 y(Cra)m(y)30 b(sup)s(ercomputers)f(are)i(curren)m -(tly)f(not)h(supp)s(orted.)0 3003 y -SDict begin H.S end - 0 3003 a 0 3003 a -SDict begin 13.6 H.A end - -0 3003 a 0 3003 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.1.1) cvn /DEST pdfmark -end - 0 3003 a 146 x Fd(2.1.1)112 b(Unix)39 -b(Systems)0 3369 y Fj(The)30 b(CFITSIO)f(library)h(is)g(built)g(on)h -(Unix)f(systems)g(b)m(y)g(t)m(yping:)48 3633 y Fe(>)95 -b(./configure)45 b([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])d +TeXDict begin 5 12 bop 0 1225 a Fg(Chapter)65 b(2)0 1687 +y Fm(Creating)77 b(the)h(CFITSIO)e(Library)0 2216 y Ff(2.1)135 +b(Building)45 b(the)h(Library)0 2467 y Fj(The)h(CFITSIO)f(co)s(de)h(is) +h(con)m(tained)g(in)f(ab)s(out)g(40)h(C)f(source)h(\014les)f(\(*.c\))i +(and)e(header)g(\014les)g(\(*.h\).)93 b(On)0 2580 y(V)-10 +b(AX/VMS)31 b(systems)g(2)f(assem)m(bly-co)s(de)i(\014les)e +(\(vmsieeed.mar)h(and)f(vmsieeer.mar\))i(are)e(also)i(needed.)0 +2740 y(CFITSIO)22 b(is)h(written)g(in)g(ANCI)g(C)g(and)g(should)f(b)s +(e)g(compatible)j(with)e(most)g(existing)i(C)d(and)h(C++)f(compilers.)0 +2853 y(Cra)m(y)30 b(sup)s(ercomputers)f(are)i(curren)m(tly)f(not)h +(supp)s(orted.)0 3149 y Fd(2.1.1)112 b(Unix)39 b(Systems)0 +3369 y Fj(The)30 b(CFITSIO)f(library)h(is)g(built)g(on)h(Unix)f +(systems)g(b)m(y)g(t)m(yping:)48 3633 y Fe(>)95 b(./configure)45 +b([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])d ([--enable-reentrant])764 3746 y([--enable-sse2])h([--enable-ssse3])48 3859 y(>)95 b(make)476 b(\(or)95 b('make)46 b(shared'\))48 3971 y(>)95 b(make)47 b(install)93 b(\(this)46 b(step)h(is)g @@ -7386,23 +5586,11 @@ (can)g(b)s(e)f(seen)g(b)m(y)g(en)m(tering)i(the)e(command)1927 5942 y(5)p eop end %%Page: 6 14 -TeXDict begin 6 13 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.6) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(6)1580 -b Fh(CHAPTER)30 b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR) --8 b(Y)143 555 y Fe(>)48 b(./configure)c(--help)0 830 -y Fj(Some)30 b(of)h(the)g(more)f(useful)g(options)g(are)h(describ)s(ed) -e(b)s(elo)m(w:)0 990 y(The)j({enable-reen)m(tran)m(t)j(option)f(will)f +TeXDict begin 6 13 bop 0 299 a Fj(6)1580 b Fh(CHAPTER)30 +b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 +b(Y)143 555 y Fe(>)48 b(./configure)c(--help)0 830 y +Fj(Some)30 b(of)h(the)g(more)f(useful)g(options)g(are)h(describ)s(ed)e +(b)s(elo)m(w:)0 990 y(The)j({enable-reen)m(tran)m(t)j(option)f(will)f (attempt)h(to)f(con\014gure)g(CFITSIO)e(so)i(that)g(it)g(can)h(b)s(e)e (used)g(in)g(m)m(ulti-)0 1103 y(threaded)c(programs.)39 b(See)29 b(the)f("Using)h(CFITSIO)d(in)i(Multi-threaded)h(En)m @@ -7464,51 +5652,31 @@ y(\014gure)h(to)h(enable)g("extended)g(ANSI")f(features.)p eop end %%Page: 7 15 -TeXDict begin 7 14 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.7) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(2.2.)72 -b(TESTING)29 b(THE)h(LIBRAR)-8 b(Y)2555 b Fj(7)0 555 -y(By)31 b(default,)h(a)f(set)h(of)f(F)-8 b(ortran-callable)34 -b(wrapp)s(er)29 b(routines)i(are)g(also)h(built)f(and)f(included)h(in)f -(the)h(CFITSIO)0 668 y(library)-8 b(.)70 b(If)40 b(these)g(wrapp)s(er)f -(routines)h(are)g(not)h(needed)e(\(i.e.,)45 b(the)40 -b(CFITSIO)f(library)g(will)i(not)f(b)s(e)g(link)m(ed)0 -781 y(to)d(an)m(y)f(F)-8 b(ortran)37 b(applications)g(whic)m(h)f(call)h -(FITSIO)e(subroutines\))g(then)h(they)g(ma)m(y)h(b)s(e)e(omitted)i -(from)f(the)0 894 y(build)28 b(b)m(y)i(t)m(yping)g('mak)m(e)g -(all-no\014tsio')i(instead)d(of)h(simply)f(t)m(yping)h('mak)m(e'.)42 -b(This)28 b(will)i(reduce)f(the)h(size)g(of)g(the)0 1007 -y(CFITSIO)f(library)h(sligh)m(tly)-8 b(.)0 1167 y(It)33 -b(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)g(to)h(statically)i(link)e -(programs)f(that)h(use)g(CFITSIO)e(on)h(some)h(platforms)g(\(namely)-8 -b(,)0 1280 y(on)28 b(Solaris)h(2.6\))h(due)e(to)h(the)g(net)m(w)m(ork)g -(driv)m(ers)f(\(whic)m(h)h(pro)m(vide)g(FTP)f(and)g(HTTP)g(access)h(to) -h(FITS)d(\014les\).)41 b(It)0 1393 y(is)33 b(p)s(ossible)f(to)i(mak)m -(e)f(b)s(oth)g(a)g(dynamic)f(and)g(a)i(static)g(v)m(ersion)f(of)g(the)g -(CFITSIO)e(library)-8 b(,)34 b(but)e(net)m(w)m(ork)i(\014le)0 -1506 y(access)e(will)e(not)h(b)s(e)f(p)s(ossible)g(using)g(the)g -(static)i(v)m(ersion.)0 1667 y -SDict begin H.S end - 0 1667 a 0 1667 a -SDict begin 13.6 H.A end - 0 1667 -a 0 1667 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.1.2) cvn /DEST pdfmark -end - 0 1667 a 146 x Fd(2.1.2)112 b(VMS)0 2035 y -Fj(On)28 b(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m -(e)p 2100 2035 28 4 v 34 w(g\015oat.com)h(command)e(\014le)g(ma)m(y)h -(b)s(e)f(executed)h(to)0 2148 y(build)35 b(the)i(c\014tsio.olb)g(ob)5 +TeXDict begin 7 14 bop 0 299 a Fh(2.2.)72 b(TESTING)29 +b(THE)h(LIBRAR)-8 b(Y)2555 b Fj(7)0 555 y(By)31 b(default,)h(a)f(set)h +(of)f(F)-8 b(ortran-callable)34 b(wrapp)s(er)29 b(routines)i(are)g +(also)h(built)f(and)f(included)h(in)f(the)h(CFITSIO)0 +668 y(library)-8 b(.)70 b(If)40 b(these)g(wrapp)s(er)f(routines)h(are)g +(not)h(needed)e(\(i.e.,)45 b(the)40 b(CFITSIO)f(library)g(will)i(not)f +(b)s(e)g(link)m(ed)0 781 y(to)d(an)m(y)f(F)-8 b(ortran)37 +b(applications)g(whic)m(h)f(call)h(FITSIO)e(subroutines\))g(then)h +(they)g(ma)m(y)h(b)s(e)e(omitted)i(from)f(the)0 894 y(build)28 +b(b)m(y)i(t)m(yping)g('mak)m(e)g(all-no\014tsio')i(instead)d(of)h +(simply)f(t)m(yping)h('mak)m(e'.)42 b(This)28 b(will)i(reduce)f(the)h +(size)g(of)g(the)0 1007 y(CFITSIO)f(library)h(sligh)m(tly)-8 +b(.)0 1167 y(It)33 b(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)g(to)h +(statically)i(link)e(programs)f(that)h(use)g(CFITSIO)e(on)h(some)h +(platforms)g(\(namely)-8 b(,)0 1280 y(on)28 b(Solaris)h(2.6\))h(due)e +(to)h(the)g(net)m(w)m(ork)g(driv)m(ers)f(\(whic)m(h)h(pro)m(vide)g(FTP) +f(and)g(HTTP)g(access)h(to)h(FITS)d(\014les\).)41 b(It)0 +1393 y(is)33 b(p)s(ossible)f(to)i(mak)m(e)f(b)s(oth)g(a)g(dynamic)f +(and)g(a)i(static)g(v)m(ersion)f(of)g(the)g(CFITSIO)e(library)-8 +b(,)34 b(but)e(net)m(w)m(ork)i(\014le)0 1506 y(access)e(will)e(not)h(b) +s(e)f(p)s(ossible)g(using)g(the)g(static)i(v)m(ersion.)0 +1813 y Fd(2.1.2)112 b(VMS)0 2035 y Fj(On)28 b(V)-10 b(AX/VMS)31 +b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m(e)p 2100 2035 +28 4 v 34 w(g\015oat.com)h(command)e(\014le)g(ma)m(y)h(b)s(e)f +(executed)h(to)0 2148 y(build)35 b(the)i(c\014tsio.olb)g(ob)5 b(ject)37 b(library)f(using)g(the)g(default)h(G-\015oating)g(p)s(oin)m (t)g(option)f(for)g(double)g(v)-5 b(ariables.)0 2261 y(The)37 b(mak)m(e)p 405 2261 V 33 w(d\015oat.com)i(and)d(mak)m(e)p @@ -7520,46 +5688,23 @@ (e)h(link)m(ed)i(with)e(the)h(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB) 0 2600 y(library)g(.)41 b(See)30 b(the)h(example)g(link)f(line)h(in)f (the)h(next)f(section)i(of)e(this)h(do)s(cumen)m(t.)0 -2761 y -SDict begin H.S end - 0 2761 a 0 2761 a -SDict begin 13.6 H.A end - 0 2761 a 0 2761 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.1.3) cvn /DEST pdfmark -end - 0 2761 a 146 -x Fd(2.1.3)112 b(Windo)m(ws)38 b(PCs)0 3129 y Fj(A)j(precompiled)f(DLL) -g(v)m(ersion)h(of)g(CFITSIO)e(\(not)i(necessarily)g(the)g(latest)h(v)m -(ersion\))f(is)g(a)m(v)-5 b(ailable)42 b(on)f(the)0 3242 -y(CFITSIO)26 b(w)m(eb)i(site.)41 b(The)27 b(CFITSIO)f(library)h(ma)m(y) -i(also)g(b)s(e)e(built)g(from)h(the)g(source)f(co)s(de)h(using)g(the)g -(CMak)m(e)0 3355 y(build)j(system.)44 b(See)32 b(the)g("README.win")h -(\014le)f(in)f(the)h(CFITSIO)e(source)i(distribution)f(for)g(more)h -(informa-)0 3468 y(tion.)0 3612 y -SDict begin H.S end - 0 3612 a 0 3612 a -SDict begin 13.6 H.A end - 0 -3612 a 0 3612 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.1.4) cvn /DEST pdfmark -end - 0 3612 a 163 x Fd(2.1.4)112 b(Macin)m(tosh)39 -b(PCs)0 3998 y Fj(When)20 b(building)f(on)i(Mac)g(OS-X,)f(users)g -(should)f(follo)m(w)i(the)g(Unix)f(instructions,)i(ab)s(o)m(v)m(e.)39 -b(See)20 b(the)h(README.MacOS)0 4111 y(\014le)30 b(for)h(instructions)f -(on)g(building)g(a)g(Univ)m(ersal)i(Binary)e(that)h(supp)s(orts)e(b)s -(oth)g(In)m(tel)i(and)f(P)m(o)m(w)m(erPC)h(CPUs.)0 4282 -y -SDict begin H.S end - 0 4282 a 0 4282 a -SDict begin 13.6 H.A end - 0 4282 a 0 4282 a -SDict begin [/View [/XYZ H.V]/Dest (section.2.2) cvn /DEST pdfmark -end - 0 4282 a 179 x -Ff(2.2)135 b(T)-11 b(esting)46 b(the)f(Library)0 4714 -y Fj(The)40 b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f -(building)f(and)g(running)g(the)h(testprog.c)h(program)f(that)h(is)0 +2907 y Fd(2.1.3)112 b(Windo)m(ws)38 b(PCs)0 3129 y Fj(A)j(precompiled)f +(DLL)g(v)m(ersion)h(of)g(CFITSIO)e(\(not)i(necessarily)g(the)g(latest)h +(v)m(ersion\))f(is)g(a)m(v)-5 b(ailable)42 b(on)f(the)0 +3242 y(CFITSIO)26 b(w)m(eb)i(site.)41 b(The)27 b(CFITSIO)f(library)h +(ma)m(y)i(also)g(b)s(e)e(built)g(from)h(the)g(source)f(co)s(de)h(using) +g(the)g(CMak)m(e)0 3355 y(build)j(system.)44 b(See)32 +b(the)g("README.win")h(\014le)f(in)f(the)h(CFITSIO)e(source)i +(distribution)f(for)g(more)h(informa-)0 3468 y(tion.)0 +3775 y Fd(2.1.4)112 b(Macin)m(tosh)39 b(PCs)0 3998 y +Fj(When)20 b(building)f(on)i(Mac)g(OS-X,)f(users)g(should)f(follo)m(w)i +(the)g(Unix)f(instructions,)i(ab)s(o)m(v)m(e.)39 b(See)20 +b(the)h(README.MacOS)0 4111 y(\014le)30 b(for)h(instructions)f(on)g +(building)g(a)g(Univ)m(ersal)i(Binary)e(that)h(supp)s(orts)e(b)s(oth)g +(In)m(tel)i(and)f(P)m(o)m(w)m(erPC)h(CPUs.)0 4461 y Ff(2.2)135 +b(T)-11 b(esting)46 b(the)f(Library)0 4714 y Fj(The)40 +b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f(building)f(and) +g(running)g(the)h(testprog.c)h(program)f(that)h(is)0 4827 y(included)30 b(with)g(the)g(release.)42 b(On)30 b(Unix)g(systems,)h(t)m(yp)s(e:)191 5101 y Fe(\045)47 b(make)g(testprog)191 5214 y(\045)g(testprog)f(>)h(testprog.lis)191 @@ -7569,23 +5714,11 @@ (the)f(C)g(compiler)h(command\),)g(t)m(yp)s(e:)p eop end %%Page: 8 16 -TeXDict begin 8 15 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.8) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(8)1580 -b Fh(CHAPTER)30 b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR) --8 b(Y)191 555 y Fe($)47 b(cc)h(testprog.c)191 668 y($)f(link)g -(testprog,)e(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 -781 y($)i(run)g(testprog)0 1047 y Fj(The)42 b(test)h(program)f(should)f +TeXDict begin 8 15 bop 0 299 a Fj(8)1580 b Fh(CHAPTER)30 +b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 +b(Y)191 555 y Fe($)47 b(cc)h(testprog.c)191 668 y($)f(link)g(testprog,) +e(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 781 +y($)i(run)g(testprog)0 1047 y Fj(The)42 b(test)h(program)f(should)f (pro)s(duce)g(a)i(FITS)e(\014le)i(called)g(`testprog.\014t')h(that)f (is)f(iden)m(tical)i(to)f(the)f(`test-)0 1160 y(prog.std')35 b(FITS)e(\014le)i(included)e(with)h(this)g(release.)54 @@ -7640,30 +5773,10 @@ (performs)e(common)i(read)f(and)811 5714 y(write)h(operations)e(on)i(a) g(FITS)g(file.)p eop end %%Page: 9 17 -TeXDict begin 9 16 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.9) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(2.3.)72 -b(LINKING)30 b(PR)m(OGRAMS)h(WITH)f(CFITSIO)1975 b Fj(9)191 -668 y Fe(iter_a,)46 b(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the)g -(CFITSIO)f(iterator)f(routine)0 841 y -SDict begin H.S end - 0 841 a 0 841 a -SDict begin 13.6 H.A end - -0 841 a 0 841 a -SDict begin [/View [/XYZ H.V]/Dest (section.2.3) cvn /DEST pdfmark -end - 0 841 a 176 x Ff(2.3)135 b(Linking)45 +TeXDict begin 9 16 bop 0 299 a Fh(2.3.)72 b(LINKING)30 +b(PR)m(OGRAMS)h(WITH)f(CFITSIO)1975 b Fj(9)191 668 y +Fe(iter_a,)46 b(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the)g(CFITSIO)f +(iterator)f(routine)0 1017 y Ff(2.3)135 b(Linking)45 b(Programs)h(with)f(CFITSIO)0 1271 y Fj(When)25 b(linking)h (applications)h(soft)m(w)m(are)g(with)e(the)h(CFITSIO)e(library)-8 b(,)27 b(sev)m(eral)g(system)f(libraries)g(usually)f(need)0 @@ -7683,15 +5796,7 @@ (usually)g(necessary)g(to)h(recompile,)h(as)0 2108 y(w)m(ell)d(as)g (relink,)g(the)f(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i(the)f (de\014nitions)g(in)g(\014tsio.h)h(often)f(c)m(hange.)0 -2279 y -SDict begin H.S end - 0 2279 a 0 2279 a -SDict begin 13.6 H.A end - 0 2279 a 0 2279 a -SDict begin [/View [/XYZ H.V]/Dest (section.2.4) cvn /DEST pdfmark -end - 0 2279 a 179 -x Ff(2.4)135 b(Using)46 b(CFITSIO)e(in)h(Multi-threaded)g(En)l +2458 y Ff(2.4)135 b(Using)46 b(CFITSIO)e(in)h(Multi-threaded)g(En)l (vironmen)l(ts)0 2711 y Fj(CFITSIO)d(can)h(b)s(e)g(used)f(either)i (with)e(the)i(POSIX)e(pthreads)g(in)m(terface)j(or)e(the)h(Op)s(enMP)d (in)m(terface)k(for)0 2824 y(m)m(ulti-threaded)g(parallel)g(programs.) @@ -7720,48 +5825,28 @@ b(\014le,)j(unless)d(lo)s(c)m(ks)h(are)g(placed)f(around)g(the)g(calls) i(to)f(the)g(CFITSIO)d(reading)j(routines.)71 b(Di\013eren)m(t)0 4499 y(threads)30 b(should)f(nev)m(er)i(try)f(to)h(write)g(to)g(the)g -(same)f(FITS)g(\014le.)0 4670 y -SDict begin H.S end - 0 4670 a 0 4670 a -SDict begin 13.6 H.A end - 0 4670 -a 0 4670 a -SDict begin [/View [/XYZ H.V]/Dest (section.2.5) cvn /DEST pdfmark -end - 0 4670 a 179 x Ff(2.5)135 b(Getting)46 b(Started)g(with)f -(CFITSIO)0 5102 y Fj(In)27 b(order)h(to)g(e\013ectiv)m(ely)j(use)d(the) -g(CFITSIO)e(library)i(it)g(is)g(recommended)g(that)g(new)f(users)h(b)s -(egin)f(b)m(y)h(reading)0 5215 y(the)g(\\CFITSIO)g(Quic)m(k)g(Start)g -(Guide".)41 b(It)28 b(con)m(tains)h(all)h(the)e(basic)h(information)f -(needed)g(to)h(write)f(programs)0 5328 y(that)c(p)s(erform)f(most)h(t)m -(yp)s(es)g(of)g(op)s(erations)g(on)g(FITS)f(\014les.)39 -b(The)23 b(set)i(of)f(example)g(FITS)g(utilit)m(y)h(programs)e(that)0 -5441 y(are)29 b(a)m(v)-5 b(ailable)31 b(from)d(the)g(CFITSIO)f(w)m(eb)i -(site)g(are)g(also)g(v)m(ery)g(useful)f(for)g(learning)h(ho)m(w)f(to)h -(use)f(CFITSIO.)f(T)-8 b(o)0 5554 y(learn)23 b(ev)m(en)g(more)g(ab)s -(out)f(the)h(capabilities)h(of)f(the)g(CFITSIO)e(library)h(the)h(follo) -m(wing)h(steps)e(are)h(recommended:)0 5714 y(1.)41 b(Read)31 -b(the)f(follo)m(wing)i(short)e(`FITS)g(Primer')g(c)m(hapter)h(for)f(an) -h(o)m(v)m(erview)h(of)e(the)h(structure)f(of)g(FITS)g(\014les.)p -eop end +(same)f(FITS)g(\014le.)0 4849 y Ff(2.5)135 b(Getting)46 +b(Started)g(with)f(CFITSIO)0 5102 y Fj(In)27 b(order)h(to)g(e\013ectiv) +m(ely)j(use)d(the)g(CFITSIO)e(library)i(it)g(is)g(recommended)g(that)g +(new)f(users)h(b)s(egin)f(b)m(y)h(reading)0 5215 y(the)g(\\CFITSIO)g +(Quic)m(k)g(Start)g(Guide".)41 b(It)28 b(con)m(tains)h(all)h(the)e +(basic)h(information)f(needed)g(to)h(write)f(programs)0 +5328 y(that)c(p)s(erform)f(most)h(t)m(yp)s(es)g(of)g(op)s(erations)g +(on)g(FITS)f(\014les.)39 b(The)23 b(set)i(of)f(example)g(FITS)g(utilit) +m(y)h(programs)e(that)0 5441 y(are)29 b(a)m(v)-5 b(ailable)31 +b(from)d(the)g(CFITSIO)f(w)m(eb)i(site)g(are)g(also)g(v)m(ery)g(useful) +f(for)g(learning)h(ho)m(w)f(to)h(use)f(CFITSIO.)f(T)-8 +b(o)0 5554 y(learn)23 b(ev)m(en)g(more)g(ab)s(out)f(the)h(capabilities) +h(of)f(the)g(CFITSIO)e(library)h(the)h(follo)m(wing)h(steps)e(are)h +(recommended:)0 5714 y(1.)41 b(Read)31 b(the)f(follo)m(wing)i(short)e +(`FITS)g(Primer')g(c)m(hapter)h(for)f(an)h(o)m(v)m(erview)h(of)e(the)h +(structure)f(of)g(FITS)g(\014les.)p eop end %%Page: 10 18 -TeXDict begin 10 17 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.10) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(10)1535 -b Fh(CHAPTER)30 b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR) --8 b(Y)0 555 y Fj(2.)40 b(Review)28 b(the)f(Programming)g(Guidelines)h -(in)f(Chapter)f(4)i(to)g(b)s(ecome)f(familiar)h(with)f(the)h(con)m(v)m -(en)m(tions)h(used)0 668 y(b)m(y)h(the)h(CFITSIO)e(in)m(terface.)0 +TeXDict begin 10 17 bop 0 299 a Fj(10)1535 b Fh(CHAPTER)30 +b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 +b(Y)0 555 y Fj(2.)40 b(Review)28 b(the)f(Programming)g(Guidelines)h(in) +f(Chapter)f(4)i(to)g(b)s(ecome)f(familiar)h(with)f(the)h(con)m(v)m(en)m +(tions)h(used)0 668 y(b)m(y)h(the)h(CFITSIO)e(in)m(terface.)0 828 y(3.)74 b(Refer)41 b(to)h(the)g(co)s(okb)s(o)s(ok.c,)j(listhead.c,) h(and)40 b(\014tscop)m(y)-8 b(.c)43 b(programs)e(that)h(are)g(included) e(with)h(this)h(re-)0 941 y(lease)g(for)e(examples)h(of)g(routines)f @@ -7775,22 +5860,14 @@ (more)g(sp)s(ecialized)i(routines)d(that)i(are)f(describ)s(ed)f(in)h (the)g(follo)m(wing)i(c)m(hapters)e(to)0 1600 y(b)s(ecome)31 b(familiar)g(with)f(the)h(functionalit)m(y)g(that)g(they)g(pro)m(vide.) -0 1785 y -SDict begin H.S end - 0 1785 a 0 1785 a -SDict begin 13.6 H.A end - 0 1785 a 0 1785 a -SDict begin [/View [/XYZ H.V]/Dest (section.2.6) cvn /DEST pdfmark -end - 0 1785 a -179 x Ff(2.6)135 b(Example)46 b(Program)0 2220 y Fj(The)c(follo)m(wing) -j(listing)f(sho)m(ws)e(an)h(example)h(of)f(ho)m(w)g(to)g(use)g(the)g -(CFITSIO)f(routines)g(in)h(a)g(C)g(program.)0 2333 y(Refer)26 -b(to)g(the)g(co)s(okb)s(o)s(ok.c)g(program)f(that)i(is)e(included)g -(with)g(the)h(CFITSIO)e(distribution)h(for)g(other)h(example)0 -2446 y(routines.)0 2606 y(This)38 b(program)h(creates)h(a)f(new)f(FITS) -g(\014le,)k(con)m(taining)e(a)f(FITS)f(image.)68 b(An)38 -b(`EXPOSURE')h(k)m(eyw)m(ord)g(is)0 2719 y(written)27 +0 1964 y Ff(2.6)135 b(Example)46 b(Program)0 2220 y Fj(The)c(follo)m +(wing)j(listing)f(sho)m(ws)e(an)h(example)h(of)f(ho)m(w)g(to)g(use)g +(the)g(CFITSIO)f(routines)g(in)h(a)g(C)g(program.)0 2333 +y(Refer)26 b(to)g(the)g(co)s(okb)s(o)s(ok.c)g(program)f(that)i(is)e +(included)g(with)g(the)h(CFITSIO)e(distribution)h(for)g(other)h +(example)0 2446 y(routines.)0 2606 y(This)38 b(program)h(creates)h(a)f +(new)f(FITS)g(\014le,)k(con)m(taining)e(a)f(FITS)f(image.)68 +b(An)38 b(`EXPOSURE')h(k)m(eyw)m(ord)g(is)0 2719 y(written)27 b(to)g(the)f(header,)i(then)e(the)h(image)g(data)h(are)f(written)f(to)h (the)g(FITS)f(\014le)g(b)s(efore)h(closing)g(the)g(FITS)f(\014le.)0 3004 y Fe(#include)46 b("fitsio.h")92 b(/*)47 b(required)f(by)h(every)g @@ -7817,65 +5894,22 @@ 5488 y(for)i(\(ii)g(=)g(0;)g(ii)g(<)h(naxes[0];)d(ii++\))573 5601 y(array[jj][ii])f(=)j(ii)h(+)f(jj;)p eop end %%Page: 11 19 -TeXDict begin 11 18 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.11) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(2.6.)72 -b(EXAMPLE)31 b(PR)m(OGRAM)2618 b Fj(11)191 555 y Fe(nelements)45 -b(=)j(naxes[0])d(*)j(naxes[1];)474 b(/*)48 b(number)e(of)h(pixels)f(to) -h(write)g(*/)191 781 y(/*)g(Write)f(the)h(array)g(of)g(integers)e(to)j -(the)f(image)f(*/)191 894 y(fits_write_img\(fptr,)c(TSHORT,)k(fpixel,)g -(nelements,)f(array[0],)g(&status\);)191 1120 y(fits_close_file\(fptr,) -d(&status\);)570 b(/*)47 b(close)g(the)g(file)f(*/)191 -1346 y(fits_report_error\(stderr)o(,)c(status\);)93 b(/*)47 +TeXDict begin 11 18 bop 0 299 a Fh(2.6.)72 b(EXAMPLE)31 +b(PR)m(OGRAM)2618 b Fj(11)191 555 y Fe(nelements)45 b(=)j(naxes[0])d(*) +j(naxes[1];)474 b(/*)48 b(number)e(of)h(pixels)f(to)h(write)g(*/)191 +781 y(/*)g(Write)f(the)h(array)g(of)g(integers)e(to)j(the)f(image)f(*/) +191 894 y(fits_write_img\(fptr,)c(TSHORT,)k(fpixel,)g(nelements,)f +(array[0],)g(&status\);)191 1120 y(fits_close_file\(fptr,)d(&status\);) +570 b(/*)47 b(close)g(the)g(file)f(*/)191 1346 y +(fits_report_error\(stderr)o(,)c(status\);)93 b(/*)47 b(print)g(out)g(any)f(error)h(messages)e(*/)191 1458 y(return\()h(status)g(\);)0 1571 y(})p eop end %%Page: 12 20 -TeXDict begin 12 19 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.12) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(12)1535 -b Fh(CHAPTER)30 b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR) --8 b(Y)p eop end +TeXDict begin 12 19 bop 0 299 a Fj(12)1535 b Fh(CHAPTER)30 +b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 +b(Y)p eop end %%Page: 13 21 -TeXDict begin 13 20 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.13) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.3) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(3)0 +TeXDict begin 13 20 bop 0 1225 a Fg(Chapter)65 b(3)0 1687 y Fm(A)78 b(FITS)f(Primer)0 2180 y Fj(This)36 b(section)h(giv)m (es)h(a)f(brief)f(o)m(v)m(erview)i(of)e(the)h(structure)f(of)h(FITS)e (\014les.)59 b(Users)36 b(should)g(refer)g(to)h(the)g(do)s(c-)0 @@ -7929,57 +5963,44 @@ 5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i (value)1905 5942 y Fj(13)p eop end %%Page: 14 22 -TeXDict begin 14 21 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.14) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(14)2398 -b Fh(CHAPTER)30 b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 -y Fj(The)35 b(k)m(eyw)m(ord)i(names)f(ma)m(y)g(b)s(e)g(up)f(to)h(8)h(c) -m(haracters)g(long)g(and)e(can)h(only)h(con)m(tain)g(upp)s(ercase)e -(letters,)k(the)0 668 y(digits)25 b(0-9,)i(the)e(h)m(yphen,)g(and)f -(the)h(underscore)e(c)m(haracter.)41 b(The)24 b(k)m(eyw)m(ord)h(name)g -(is)f(\(usually\))h(follo)m(w)m(ed)i(b)m(y)d(an)0 781 -y(equals)29 b(sign)g(and)f(a)g(space)i(c)m(haracter)g(\(=)e(\))h(in)f -(columns)h(9)g(-)f(10)i(of)f(the)f(record,)h(follo)m(w)m(ed)i(b)m(y)d -(the)h(v)-5 b(alue)29 b(of)g(the)0 894 y(k)m(eyw)m(ord)34 -b(whic)m(h)g(ma)m(y)g(b)s(e)f(either)h(an)g(in)m(teger,)i(a)e -(\015oating)g(p)s(oin)m(t)g(n)m(um)m(b)s(er,)g(a)g(c)m(haracter)h -(string)e(\(enclosed)i(in)0 1007 y(single)28 b(quotes\),)i(or)e(a)g(b)s -(o)s(olean)g(v)-5 b(alue)28 b(\(the)g(letter)h(T)f(or)f(F\).)i(A)f(k)m -(eyw)m(ord)g(ma)m(y)h(also)f(ha)m(v)m(e)h(a)g(n)m(ull)e(or)h -(unde\014ned)0 1120 y(v)-5 b(alue)31 b(if)f(there)h(is)f(no)g(sp)s -(eci\014ed)g(v)-5 b(alue)31 b(string,)g(as)f(in)g(the)h(second)f -(example,)i(ab)s(o)m(v)m(e)0 1280 y(The)26 b(last)h(k)m(eyw)m(ord)g(in) -g(the)f(header)h(is)f(alw)m(a)m(ys)i(the)f(`END')g(k)m(eyw)m(ord)g -(whic)m(h)g(has)f(no)g(v)-5 b(alue)27 b(or)g(commen)m(t)g(\014elds.)0 -1393 y(There)k(are)g(man)m(y)g(rules)g(go)m(v)m(erning)h(the)g(exact)g -(format)g(of)f(a)g(k)m(eyw)m(ord)h(record)f(\(see)h(the)f(FITS)f -(Standard\))h(so)0 1506 y(it)i(is)f(b)s(etter)h(to)g(rely)g(on)f -(standard)f(in)m(terface)j(soft)m(w)m(are)g(lik)m(e)g(CFITSIO)d(to)i -(correctly)h(construct)f(or)f(to)h(parse)0 1619 y(the)e(k)m(eyw)m(ord)f -(records)h(rather)f(than)g(try)g(to)h(deal)g(directly)g(with)f(the)h -(ra)m(w)f(FITS)g(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)f(b)s -(egins)g(with)g(a)g(series)h(of)f(required)g(k)m(eyw)m(ords)g(whic)m(h) -g(dep)s(end)f(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892 -y(These)31 b(required)g(k)m(eyw)m(ords)h(sp)s(ecify)g(the)f(size)i(and) -e(format)h(of)g(the)g(follo)m(wing)h(Data)g(Unit.)45 -b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)h(other)f(optional)g(k)m -(eyw)m(ords)g(to)h(describ)s(e)e(other)g(asp)s(ects)h(of)g(the)g(data,) -g(suc)m(h)g(as)g(the)f(units)g(or)h(scaling)0 2118 y(v)-5 -b(alues.)44 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30 -b(k)m(eyw)m(ords)i(are)g(also)g(frequen)m(tly)g(added)e(to)i(further)e -(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391 -y(The)36 b(optional)h(Data)h(Unit)f(immediately)g(follo)m(ws)h(the)e -(last)h(2880-b)m(yte)i(blo)s(c)m(k)e(in)f(the)g(Header)h(Unit.)59 +TeXDict begin 14 21 bop 0 299 a Fj(14)2398 b Fh(CHAPTER)30 +b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 y Fj(The)35 b(k)m(eyw)m(ord)i +(names)f(ma)m(y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)g(and)e +(can)h(only)h(con)m(tain)g(upp)s(ercase)e(letters,)k(the)0 +668 y(digits)25 b(0-9,)i(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c) +m(haracter.)41 b(The)24 b(k)m(eyw)m(ord)h(name)g(is)f(\(usually\))h +(follo)m(w)m(ed)i(b)m(y)d(an)0 781 y(equals)29 b(sign)g(and)f(a)g +(space)i(c)m(haracter)g(\(=)e(\))h(in)f(columns)h(9)g(-)f(10)i(of)f +(the)f(record,)h(follo)m(w)m(ed)i(b)m(y)d(the)h(v)-5 +b(alue)29 b(of)g(the)0 894 y(k)m(eyw)m(ord)34 b(whic)m(h)g(ma)m(y)g(b)s +(e)f(either)h(an)g(in)m(teger,)i(a)e(\015oating)g(p)s(oin)m(t)g(n)m(um) +m(b)s(er,)g(a)g(c)m(haracter)h(string)e(\(enclosed)i(in)0 +1007 y(single)28 b(quotes\),)i(or)e(a)g(b)s(o)s(olean)g(v)-5 +b(alue)28 b(\(the)g(letter)h(T)f(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m +(y)h(also)f(ha)m(v)m(e)h(a)g(n)m(ull)e(or)h(unde\014ned)0 +1120 y(v)-5 b(alue)31 b(if)f(there)h(is)f(no)g(sp)s(eci\014ed)g(v)-5 +b(alue)31 b(string,)g(as)f(in)g(the)h(second)f(example,)i(ab)s(o)m(v)m +(e)0 1280 y(The)26 b(last)h(k)m(eyw)m(ord)g(in)g(the)f(header)h(is)f +(alw)m(a)m(ys)i(the)f(`END')g(k)m(eyw)m(ord)g(whic)m(h)g(has)f(no)g(v) +-5 b(alue)27 b(or)g(commen)m(t)g(\014elds.)0 1393 y(There)k(are)g(man)m +(y)g(rules)g(go)m(v)m(erning)h(the)g(exact)g(format)g(of)f(a)g(k)m(eyw) +m(ord)h(record)f(\(see)h(the)f(FITS)f(Standard\))h(so)0 +1506 y(it)i(is)f(b)s(etter)h(to)g(rely)g(on)f(standard)f(in)m(terface)j +(soft)m(w)m(are)g(lik)m(e)g(CFITSIO)d(to)i(correctly)h(construct)f(or)f +(to)h(parse)0 1619 y(the)e(k)m(eyw)m(ord)f(records)h(rather)f(than)g +(try)g(to)h(deal)g(directly)g(with)f(the)h(ra)m(w)f(FITS)g(formats.)0 +1779 y(Eac)m(h)37 b(Header)g(Unit)f(b)s(egins)g(with)g(a)g(series)h(of) +f(required)g(k)m(eyw)m(ords)g(whic)m(h)g(dep)s(end)f(on)h(the)g(t)m(yp) +s(e)h(of)f(HDU.)0 1892 y(These)31 b(required)g(k)m(eyw)m(ords)h(sp)s +(ecify)g(the)f(size)i(and)e(format)h(of)g(the)g(follo)m(wing)h(Data)g +(Unit.)45 b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)h(other)f +(optional)g(k)m(eyw)m(ords)g(to)h(describ)s(e)e(other)g(asp)s(ects)h +(of)g(the)g(data,)g(suc)m(h)g(as)g(the)f(units)g(or)h(scaling)0 +2118 y(v)-5 b(alues.)44 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 +b(Y)30 b(k)m(eyw)m(ords)i(are)g(also)g(frequen)m(tly)g(added)e(to)i +(further)e(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 +2391 y(The)36 b(optional)h(Data)h(Unit)f(immediately)g(follo)m(ws)h +(the)e(last)h(2880-b)m(yte)i(blo)s(c)m(k)e(in)f(the)g(Header)h(Unit.)59 b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)f (and)f(only)g(consist)h(of)g(the)f(Header)h(Unit.)0 2664 y(If)24 b(there)i(is)f(more)g(than)f(one)h(HDU)h(in)f(the)g(FITS)f @@ -8017,35 +6038,8 @@ (FITS)e(format)i(and)f(related)h(soft)m(w)m(are)h(pac)m(k)-5 b(ages.)p eop end %%Page: 15 23 -TeXDict begin 15 22 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.15) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.4) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(4)0 -1687 y Fm(Programming)77 b(Guidelines)0 2060 y -SDict begin H.S end - 0 2060 -a 0 2060 a -SDict begin 13.6 H.A end - 0 2060 a 0 2060 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.1) cvn /DEST pdfmark -end - 0 2060 a 156 x Ff(4.1)135 +TeXDict begin 15 22 bop 0 1225 a Fg(Chapter)65 b(4)0 +1687 y Fm(Programming)77 b(Guidelines)0 2216 y Ff(4.1)135 b(CFITSIO)44 b(De\014nitions)0 2466 y Fj(An)m(y)30 b(program)g(that)h (uses)f(the)h(CFITSIO)d(in)m(terface)k(m)m(ust)e(include)g(the)h (\014tsio.h)f(header)g(\014le)h(with)f(the)g(state-)0 @@ -8096,30 +6090,18 @@ 5714 y(Note)g(that)g(FLEN_KEYWORD)d(is)j(longer)f(than)h(the)g(nominal) f(8-character)f(keyword)1905 5942 y Fj(15)p eop end %%Page: 16 24 -TeXDict begin 16 23 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.16) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(16)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)95 -555 y Fe(name)47 b(length)f(because)g(the)h(HIERARCH)e(convention)g -(supports)h(longer)g(keyword)g(names.)0 781 y(Access)g(modes)g(when)h -(opening)f(a)h(FITS)g(file:)95 1007 y(#define)f(READONLY)94 -b(0)95 1120 y(#define)46 b(READWRITE)g(1)0 1346 y(BITPIX)g(data)h(type) -f(code)h(values)f(for)h(FITS)g(images:)95 1571 y(#define)f(BYTE_IMG)284 -b(8)96 b(/*)f(8-bit)46 b(unsigned)f(integers)h(*/)95 -1684 y(#define)g(SHORT_IMG)189 b(16)95 b(/*)47 b(16-bit)141 -b(signed)46 b(integers)g(*/)95 1797 y(#define)g(LONG_IMG)237 -b(32)95 b(/*)47 b(32-bit)141 b(signed)46 b(integers)g(*/)95 -1910 y(#define)g(LONGLONG_IMG)f(64)95 b(/*)47 b(64-bit)141 +TeXDict begin 16 23 bop 0 299 a Fj(16)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)95 555 y Fe(name)47 +b(length)f(because)g(the)h(HIERARCH)e(convention)g(supports)h(longer)g +(keyword)g(names.)0 781 y(Access)g(modes)g(when)h(opening)f(a)h(FITS)g +(file:)95 1007 y(#define)f(READONLY)94 b(0)95 1120 y(#define)46 +b(READWRITE)g(1)0 1346 y(BITPIX)g(data)h(type)f(code)h(values)f(for)h +(FITS)g(images:)95 1571 y(#define)f(BYTE_IMG)284 b(8)96 +b(/*)f(8-bit)46 b(unsigned)f(integers)h(*/)95 1684 y(#define)g +(SHORT_IMG)189 b(16)95 b(/*)47 b(16-bit)141 b(signed)46 +b(integers)g(*/)95 1797 y(#define)g(LONG_IMG)237 b(32)95 +b(/*)47 b(32-bit)141 b(signed)46 b(integers)g(*/)95 1910 +y(#define)g(LONGLONG_IMG)f(64)95 b(/*)47 b(64-bit)141 b(signed)46 b(integers)g(*/)95 2023 y(#define)g(FLOAT_IMG)141 b(-32)95 b(/*)47 b(32-bit)f(single)g(precision)f(floating)h(point)g(*/) 95 2136 y(#define)g(DOUBLE_IMG)93 b(-64)i(/*)47 b(64-bit)f(double)g @@ -8164,30 +6146,18 @@ b(/*)47 b(8-bit)f(signed)g(byte,)428 b('S')47 b(*/)p eop end %%Page: 17 25 -TeXDict begin 17 24 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.17) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.1.)72 -b(CFITSIO)29 b(DEFINITIONS)2576 b Fj(17)95 555 y Fe(#define)46 -b(TUINT)381 b(30)95 b(/*)47 b(unsigned)e(int)715 b('V')47 -b(*/)95 668 y(#define)f(TUSHORT)285 b(20)95 b(/*)47 b(unsigned)e(short) -619 b('U')47 b(*/)95 781 y(#define)f(TULONG)333 b(40)95 -b(/*)47 b(unsigned)e(long)858 b(*/)95 894 y(#define)46 -b(TULONGLONG)141 b(80)95 b(/*)47 b(unsigned)e(long)i(long)428 -b('W')47 b(*/)95 1120 y(The)g(following)f(data)g(type)h(code)g(is)g -(only)f(for)h(use)g(with)g(fits\\_get\\_coltype)95 1233 -y(#define)f(TINT32BIT)189 b(41)95 b(/*)47 b(signed)f(32-bit)g(int,)428 -b('J')47 b(*/)0 1571 y(HDU)g(type)g(code)f(values)g(\(value)g(returned) -g(when)h(moving)f(to)h(new)g(HDU\):)95 1797 y(#define)f(IMAGE_HDU)93 +TeXDict begin 17 24 bop 0 299 a Fh(4.1.)72 b(CFITSIO)29 +b(DEFINITIONS)2576 b Fj(17)95 555 y Fe(#define)46 b(TUINT)381 +b(30)95 b(/*)47 b(unsigned)e(int)715 b('V')47 b(*/)95 +668 y(#define)f(TUSHORT)285 b(20)95 b(/*)47 b(unsigned)e(short)619 +b('U')47 b(*/)95 781 y(#define)f(TULONG)333 b(40)95 b(/*)47 +b(unsigned)e(long)858 b(*/)95 894 y(#define)46 b(TULONGLONG)141 +b(80)95 b(/*)47 b(unsigned)e(long)i(long)428 b('W')47 +b(*/)95 1120 y(The)g(following)f(data)g(type)h(code)g(is)g(only)f(for)h +(use)g(with)g(fits\\_get\\_coltype)95 1233 y(#define)f(TINT32BIT)189 +b(41)95 b(/*)47 b(signed)f(32-bit)g(int,)428 b('J')47 +b(*/)0 1571 y(HDU)g(type)g(code)f(values)g(\(value)g(returned)g(when)h +(moving)f(to)h(new)g(HDU\):)95 1797 y(#define)f(IMAGE_HDU)93 b(0)i(/*)48 b(Primary)d(Array)i(or)g(IMAGE)f(HDU)h(*/)95 1910 y(#define)f(ASCII_TBL)93 b(1)i(/*)48 b(ASCII)94 b(table)46 b(HDU)h(*/)95 2023 y(#define)f(BINARY_TBL)f(2)95 @@ -8211,28 +6181,8 @@ 5185 y(#define)g(SUBTRACTIVE_DITHER_1)d(1)95 5297 y(#define)j (SUBTRACTIVE_DITHER_2)d(2)p eop end %%Page: 18 26 -TeXDict begin 18 25 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.18) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(18)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 -464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.2) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(4.2)135 +TeXDict begin 18 25 bop 0 299 a Fj(18)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Ff(4.2)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g(\(CHDU\))0 811 y Fj(The)37 b(concept)h(of)g(the)f(Curren)m(t)g(Header)g(and)g(Data)i (Unit,)h(or)d(CHDU,)h(is)f(fundamen)m(tal)h(to)g(the)f(use)g(of)h(the)0 @@ -8257,16 +6207,8 @@ 1827 y(HDU,)32 b(Other)e(CFITSIO)f(routines)i(are)g(pro)m(vided)f(to)i (mo)m(v)m(e)g(to)f(and)f(op)s(en)g(an)m(y)h(other)g(existing)h(HDU)f (within)0 1940 y(the)g(FITS)e(\014le)i(or)f(to)h(app)s(end)e(or)h -(insert)g(new)g(HDUs)h(in)f(the)h(FITS)f(\014le.)0 2124 -y -SDict begin H.S end - 0 2124 a 0 2124 a -SDict begin 13.6 H.A end - 0 2124 a 0 2124 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.3) cvn /DEST pdfmark -end - 0 2124 a 179 x -Ff(4.3)135 b(F)-11 b(unction)44 b(Names)i(and)f(V)-11 +(insert)g(new)g(HDUs)h(in)f(the)h(FITS)f(\014le.)0 2303 +y Ff(4.3)135 b(F)-11 b(unction)44 b(Names)i(and)f(V)-11 b(ariable)46 b(Datat)l(yp)t(es)0 2559 y Fj(Most)33 b(of)f(the)g (CFITSIO)f(routines)h(ha)m(v)m(e)h(b)s(oth)e(a)i(short)e(name)h(as)h(w) m(ell)g(as)f(a)g(longer)h(descriptiv)m(e)g(name.)45 b(The)0 @@ -8307,54 +6249,42 @@ b(complex)46 b(reals)g(\(pairs)h(of)g(float)f(values\))p eop end %%Page: 19 27 -TeXDict begin 19 26 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.19) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.3.)72 -b(FUNCTION)30 b(NAMES)h(AND)g(V)-10 b(ARIABLE)30 b(D)m(A)-8 -b(T)g(A)g(TYPES)1409 b Fj(19)191 555 y Fe(_fixcmp)237 -b(fc)142 b(complex)46 b(reals,)g(fixed-format)f(floating)g(point)191 -668 y(_dblcmp)237 b(m)190 b(double)46 b(precision)g(complex)f(\(pairs)i -(of)g(double)f(values\))191 781 y(_fixdblcmp)93 b(fm)142 -b(double)46 b(precision)g(complex,)f(fixed-format)g(floating)g(point) -191 894 y(_log)381 b(l)190 b(logical)46 b(\(int\))191 -1007 y(_str)381 b(s)190 b(character)46 b(string)0 1273 -y Fj(The)32 b(logical)j(data)f(t)m(yp)s(e)f(corresp)s(onds)e(to)j(`in)m -(t')f(for)g(logical)i(k)m(eyw)m(ord)e(v)-5 b(alues,)34 -b(and)e(`b)m(yte')i(for)f(logical)i(binary)0 1386 y(table)40 -b(columns.)67 b(In)39 b(other)g(w)m(ords,)i(the)f(v)-5 -b(alue)39 b(when)g(writing)g(a)h(logical)h(k)m(eyw)m(ord)f(m)m(ust)f(b) -s(e)g(stored)g(in)g(an)0 1499 y(`in)m(t')g(v)-5 b(ariable,)40 -b(and)e(m)m(ust)f(b)s(e)g(stored)h(in)g(a)g(`c)m(har')h(arra)m(y)f -(when)f(reading)h(or)f(writing)h(to)h(`L')f(columns)f(in)h(a)0 -1612 y(binary)c(table.)56 b(Implicit)35 b(data)h(t)m(yp)s(e)f(con)m(v)m -(ersion)i(is)e(not)g(supp)s(orted)e(for)i(logical)j(table)e(columns,)g -(but)e(is)h(for)0 1725 y(k)m(eyw)m(ords,)30 b(so)f(a)h(logical)h(k)m -(eyw)m(ord)f(ma)m(y)f(b)s(e)g(read)f(and)h(cast)h(to)g(an)m(y)f(n)m -(umerical)h(data)f(t)m(yp)s(e;)h(a)g(returned)d(v)-5 -b(alue)0 1838 y(=)30 b(0)h(indicates)g(false,)g(and)f(an)m(y)h(other)f -(v)-5 b(alue)31 b(=)f(true.)0 1998 y(The)24 b(`in)m(t')i(data)g(t)m(yp) -s(e)f(ma)m(y)h(b)s(e)e(2)h(b)m(ytes)h(long)f(on)g(some)g(old)g(PC)g -(compilers,)h(but)f(otherwise)g(it)g(is)g(nearly)g(alw)m(a)m(ys)0 -2111 y(4)i(b)m(ytes)g(long.)40 b(Some)27 b(64-bit)h(mac)m(hines,)g(lik) -m(e)g(the)f(Alpha/OSF,)g(de\014ne)f(the)h(`short',)h(`in)m(t',)h(and)d -(`long')i(in)m(teger)0 2224 y(data)j(t)m(yp)s(es)f(to)i(b)s(e)d(2,)i -(4,)g(and)f(8)h(b)m(ytes)g(long,)g(resp)s(ectiv)m(ely)-8 -b(.)0 2384 y(Because)40 b(there)e(is)h(no)f(univ)m(ersal)h(C)f -(compiler)g(standard)g(for)g(the)h(name)f(of)h(the)f(8-b)m(yte)i(in)m -(teger)g(datat)m(yp)s(e,)0 2497 y(the)33 b(\014tsio.h)h(include)f -(\014le)g(t)m(yp)s(edef)7 b('s)33 b('LONGLONG')h(to)g(b)s(e)e(equiv)-5 -b(alen)m(t)35 b(to)f(an)f(appropriate)g(8-b)m(yte)i(in)m(teger)0 -2610 y(data)c(t)m(yp)s(e)g(on)f(eac)m(h)i(supp)s(orted)d(platform.)41 +TeXDict begin 19 26 bop 0 299 a Fh(4.3.)72 b(FUNCTION)30 +b(NAMES)h(AND)g(V)-10 b(ARIABLE)30 b(D)m(A)-8 b(T)g(A)g(TYPES)1409 +b Fj(19)191 555 y Fe(_fixcmp)237 b(fc)142 b(complex)46 +b(reals,)g(fixed-format)f(floating)g(point)191 668 y(_dblcmp)237 +b(m)190 b(double)46 b(precision)g(complex)f(\(pairs)i(of)g(double)f +(values\))191 781 y(_fixdblcmp)93 b(fm)142 b(double)46 +b(precision)g(complex,)f(fixed-format)g(floating)g(point)191 +894 y(_log)381 b(l)190 b(logical)46 b(\(int\))191 1007 +y(_str)381 b(s)190 b(character)46 b(string)0 1273 y Fj(The)32 +b(logical)j(data)f(t)m(yp)s(e)f(corresp)s(onds)e(to)j(`in)m(t')f(for)g +(logical)i(k)m(eyw)m(ord)e(v)-5 b(alues,)34 b(and)e(`b)m(yte')i(for)f +(logical)i(binary)0 1386 y(table)40 b(columns.)67 b(In)39 +b(other)g(w)m(ords,)i(the)f(v)-5 b(alue)39 b(when)g(writing)g(a)h +(logical)h(k)m(eyw)m(ord)f(m)m(ust)f(b)s(e)g(stored)g(in)g(an)0 +1499 y(`in)m(t')g(v)-5 b(ariable,)40 b(and)e(m)m(ust)f(b)s(e)g(stored)h +(in)g(a)g(`c)m(har')h(arra)m(y)f(when)f(reading)h(or)f(writing)h(to)h +(`L')f(columns)f(in)h(a)0 1612 y(binary)c(table.)56 b(Implicit)35 +b(data)h(t)m(yp)s(e)f(con)m(v)m(ersion)i(is)e(not)g(supp)s(orted)e(for) +i(logical)j(table)e(columns,)g(but)e(is)h(for)0 1725 +y(k)m(eyw)m(ords,)30 b(so)f(a)h(logical)h(k)m(eyw)m(ord)f(ma)m(y)f(b)s +(e)g(read)f(and)h(cast)h(to)g(an)m(y)f(n)m(umerical)h(data)f(t)m(yp)s +(e;)h(a)g(returned)d(v)-5 b(alue)0 1838 y(=)30 b(0)h(indicates)g +(false,)g(and)f(an)m(y)h(other)f(v)-5 b(alue)31 b(=)f(true.)0 +1998 y(The)24 b(`in)m(t')i(data)g(t)m(yp)s(e)f(ma)m(y)h(b)s(e)e(2)h(b)m +(ytes)h(long)f(on)g(some)g(old)g(PC)g(compilers,)h(but)f(otherwise)g +(it)g(is)g(nearly)g(alw)m(a)m(ys)0 2111 y(4)i(b)m(ytes)g(long.)40 +b(Some)27 b(64-bit)h(mac)m(hines,)g(lik)m(e)g(the)f(Alpha/OSF,)g +(de\014ne)f(the)h(`short',)h(`in)m(t',)h(and)d(`long')i(in)m(teger)0 +2224 y(data)j(t)m(yp)s(es)f(to)i(b)s(e)d(2,)i(4,)g(and)f(8)h(b)m(ytes)g +(long,)g(resp)s(ectiv)m(ely)-8 b(.)0 2384 y(Because)40 +b(there)e(is)h(no)f(univ)m(ersal)h(C)f(compiler)g(standard)g(for)g(the) +h(name)f(of)h(the)f(8-b)m(yte)i(in)m(teger)g(datat)m(yp)s(e,)0 +2497 y(the)33 b(\014tsio.h)h(include)f(\014le)g(t)m(yp)s(edef)7 +b('s)33 b('LONGLONG')h(to)g(b)s(e)e(equiv)-5 b(alen)m(t)35 +b(to)f(an)f(appropriate)g(8-b)m(yte)i(in)m(teger)0 2610 +y(data)c(t)m(yp)s(e)g(on)f(eac)m(h)i(supp)s(orted)d(platform.)41 b(F)-8 b(or)31 b(maxim)m(um)f(soft)m(w)m(are)i(p)s(ortabilit)m(y)g(it)f (is)f(recommended)g(that)0 2723 y(this)g(LONGLONG)g(datat)m(yp)s(e)h(b) s(e)e(used)g(to)i(de\014ne)e(8-b)m(yte)i(in)m(teger)h(v)-5 @@ -8394,28 +6324,16 @@ 286 5714 y(/*)i(VC++)e(6.0)h(does)g(not)g(seem)f(to)h(have)g(an)g (8-byte)f(conversion)f(routine)h(*/)p eop end %%Page: 20 28 -TeXDict begin 20 27 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.20) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(20)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 -668 y Fe(#elif)46 b(\(USE_LL_SUFFIX)e(==)j(1\))477 781 -y(longlongvalue)d(=)k(atoll\(*string\);)0 1007 y(#else)477 -1120 y(longlongvalue)c(=)k(atol\(*string\);)0 1233 y(#endif)0 -1475 y Fj(When)23 b(dealing)h(with)f(the)h(FITS)f(b)m(yte)h(data)g(t)m -(yp)s(e)f(it)h(is)g(imp)s(ortan)m(t)f(to)h(remem)m(b)s(er)f(that)h(the) -g(ra)m(w)f(v)-5 b(alues)24 b(\(b)s(efore)0 1588 y(an)m(y)h(scaling)g(b) -m(y)f(the)h(BSCALE)e(and)h(BZER)m(O,)g(or)h(TSCALn)d(and)i(TZER)m(On)f -(k)m(eyw)m(ord)i(v)-5 b(alues\))25 b(in)f(b)m(yte)h(arra)m(ys)0 +TeXDict begin 20 27 bop 0 299 a Fj(20)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 668 y Fe(#elif)46 +b(\(USE_LL_SUFFIX)e(==)j(1\))477 781 y(longlongvalue)d(=)k +(atoll\(*string\);)0 1007 y(#else)477 1120 y(longlongvalue)c(=)k +(atol\(*string\);)0 1233 y(#endif)0 1475 y Fj(When)23 +b(dealing)h(with)f(the)h(FITS)f(b)m(yte)h(data)g(t)m(yp)s(e)f(it)h(is)g +(imp)s(ortan)m(t)f(to)h(remem)m(b)s(er)f(that)h(the)g(ra)m(w)f(v)-5 +b(alues)24 b(\(b)s(efore)0 1588 y(an)m(y)h(scaling)g(b)m(y)f(the)h +(BSCALE)e(and)h(BZER)m(O,)g(or)h(TSCALn)d(and)i(TZER)m(On)f(k)m(eyw)m +(ord)i(v)-5 b(alues\))25 b(in)f(b)m(yte)h(arra)m(ys)0 1700 y(\(BITPIX)37 b(=)f(8\))h(or)f(b)m(yte)i(columns)e(\(TF)m(ORMn)h (=)f('B'\))h(are)g(in)m(terpreted)g(as)g(unsigned)e(b)m(ytes)i(with)g (v)-5 b(alues)0 1813 y(ranging)34 b(from)g(0)g(to)h(255.)53 @@ -8440,16 +6358,8 @@ b(alues,)38 b(resp)s(ectiv)m(ely)-8 b(,)40 b(where)c(the)0 2811 y(\014rst)30 b(v)-5 b(alue)30 b(in)h(eac)m(h)g(pair)f(is)h(the)f (real)h(part,)g(and)e(the)i(second)f(is)h(the)f(imaginary)h(part.)0 -2963 y -SDict begin H.S end - 0 2963 a 0 2963 a -SDict begin 13.6 H.A end - 0 2963 a 0 2963 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.4) cvn /DEST pdfmark -end - 0 2963 a 179 -x Ff(4.4)135 b(Supp)t(ort)44 b(for)h(Unsigned)h(In)l(tegers)g(and)f -(Signed)g(Bytes)0 3392 y Fj(Although)33 b(FITS)f(do)s(es)g(not)h +3142 y Ff(4.4)135 b(Supp)t(ort)44 b(for)h(Unsigned)h(In)l(tegers)g(and) +f(Signed)g(Bytes)0 3392 y Fj(Although)33 b(FITS)f(do)s(es)g(not)h (directly)h(supp)s(ort)d(unsigned)g(in)m(tegers)j(as)f(one)g(of)g(its)h (fundamen)m(tal)e(data)i(t)m(yp)s(es,)0 3505 y(FITS)27 b(can)h(still)h(b)s(e)e(used)g(to)i(e\016cien)m(tly)h(store)e(unsigned) @@ -8495,22 +6405,10 @@ Fe(unsigned)46 b(short)g(uarray[100];)286 5714 y(int)h(naxis,)f (status;)p eop end %%Page: 21 29 -TeXDict begin 21 28 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.21) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.4.)72 -b(SUPPOR)-8 b(T)30 b(F)m(OR)g(UNSIGNED)h(INTEGERS)f(AND)h(SIGNED)f -(BYTES)942 b Fj(21)286 555 y Fe(long)47 b(naxes[10],)e(group,)h -(firstelem,)f(nelements;)334 668 y(...)286 781 y(status)h(=)i(0;)286 +TeXDict begin 21 28 bop 0 299 a Fh(4.4.)72 b(SUPPOR)-8 +b(T)30 b(F)m(OR)g(UNSIGNED)h(INTEGERS)f(AND)h(SIGNED)f(BYTES)942 +b Fj(21)286 555 y Fe(long)47 b(naxes[10],)e(group,)h(firstelem,)f +(nelements;)334 668 y(...)286 781 y(status)h(=)i(0;)286 894 y(naxis)f(=)g(1;)286 1007 y(naxes[0])f(=)h(100;)286 1120 y(fits_create_img\(fptr,)42 b(USHORT_IMG,)j(naxis,)h(naxes,)g (&status\);)286 1346 y(firstelem)g(=)h(1;)286 1458 y(nelements)f(=)h @@ -8566,68 +6464,49 @@ 5601 y(status)94 b(=)48 b(0;)286 5714 y(nrows)142 b(=)48 b(1;)p eop end %%Page: 22 30 -TeXDict begin 22 29 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.22) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(22)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)286 -555 y Fe(tfields)46 b(=)i(3)286 668 y(pcount)94 b(=)48 -b(0;)286 781 y(fits_create_tbl\(fptr,)42 b(BINARY_TBL,)j(nrows,)h -(tfields,)g(ttype,)g(tform,)764 894 y(tunit,)g(extname,)f(&status\);) -525 1120 y(/*)i(write)g(the)f(unsigned)g(shorts)g(to)h(the)g(1st)g -(column)f(*/)286 1233 y(colnum)190 b(=)47 b(1;)286 1346 -y(firstrow)94 b(=)47 b(1;)286 1458 y(firstelem)f(=)h(1;)286 -1571 y(nelements)f(=)h(100;)286 1684 y(fits_write_col\(fptr,)c -(TUSHORT,)i(colnum,)h(firstrow,)f(firstelem,)668 1797 -y(nelements,)g(uarray,)h(&status\);)525 2023 y(/*)h(now)g(write)f(the)h -(unsigned)f(longs)g(to)h(the)g(2nd)g(column)f(*/)286 -2136 y(colnum)190 b(=)47 b(2;)286 2249 y(fits_write_col\(fptr,)c -(TUINT,)j(colnum,)g(firstrow,)f(firstelem,)668 2362 y(nelements,)g -(varray,)h(&status\);)334 2475 y(...)0 2752 y Fj(Note)34 -b(that)e(the)h(non-standard)e(TF)m(ORM)i(v)-5 b(alues)32 -b(for)g(the)h(3)f(columns,)h(`U',)g(`V',)g(and)f(`W')h(tell)g(CFITSIO)e -(to)0 2865 y(write)i(the)g(k)m(eyw)m(ords)g(appropriate)f(for)h -(unsigned)e(16-bit,)k(unsigned)c(32-bit)j(and)e(unsigned)g(64-bit)h(in) -m(tegers,)0 2978 y(resp)s(ectiv)m(ely)27 b(\(i.e.,)i(TF)m(ORMn)d(=)f -('1I')i(and)f(TZER)m(On)e(=)i(32768)i(for)e(unsigned)f(16-bit)i(in)m -(tegers,)h(TF)m(ORMn)e(=)0 3091 y('1J')j(and)g(TZER)m(On)e(=)h -(2147483648)34 b(for)28 b(unsigned)g(32-bit)i(in)m(tegers,)h(and)d(TF)m -(ORMn)g(=)h('1K')g(and)f(TZER)m(On)0 3204 y(=)34 b(92233720368547)q -(758)q(08)41 b(for)35 b(unsigned)e(64-bit)j(in)m(tegers\).)55 -b(The)34 b('S')g(TF)m(ORMn)h(v)-5 b(alue)35 b(tells)g(CFITSIO)e(to)0 +TeXDict begin 22 29 bop 0 299 a Fj(22)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)286 555 y Fe(tfields)46 +b(=)i(3)286 668 y(pcount)94 b(=)48 b(0;)286 781 y +(fits_create_tbl\(fptr,)42 b(BINARY_TBL,)j(nrows,)h(tfields,)g(ttype,)g +(tform,)764 894 y(tunit,)g(extname,)f(&status\);)525 +1120 y(/*)i(write)g(the)f(unsigned)g(shorts)g(to)h(the)g(1st)g(column)f +(*/)286 1233 y(colnum)190 b(=)47 b(1;)286 1346 y(firstrow)94 +b(=)47 b(1;)286 1458 y(firstelem)f(=)h(1;)286 1571 y(nelements)f(=)h +(100;)286 1684 y(fits_write_col\(fptr,)c(TUSHORT,)i(colnum,)h +(firstrow,)f(firstelem,)668 1797 y(nelements,)g(uarray,)h(&status\);) +525 2023 y(/*)h(now)g(write)f(the)h(unsigned)f(longs)g(to)h(the)g(2nd)g +(column)f(*/)286 2136 y(colnum)190 b(=)47 b(2;)286 2249 +y(fits_write_col\(fptr,)c(TUINT,)j(colnum,)g(firstrow,)f(firstelem,)668 +2362 y(nelements,)g(varray,)h(&status\);)334 2475 y(...)0 +2752 y Fj(Note)34 b(that)e(the)h(non-standard)e(TF)m(ORM)i(v)-5 +b(alues)32 b(for)g(the)h(3)f(columns,)h(`U',)g(`V',)g(and)f(`W')h(tell) +g(CFITSIO)e(to)0 2865 y(write)i(the)g(k)m(eyw)m(ords)g(appropriate)f +(for)h(unsigned)e(16-bit,)k(unsigned)c(32-bit)j(and)e(unsigned)g +(64-bit)h(in)m(tegers,)0 2978 y(resp)s(ectiv)m(ely)27 +b(\(i.e.,)i(TF)m(ORMn)d(=)f('1I')i(and)f(TZER)m(On)e(=)i(32768)i(for)e +(unsigned)f(16-bit)i(in)m(tegers,)h(TF)m(ORMn)e(=)0 3091 +y('1J')j(and)g(TZER)m(On)e(=)h(2147483648)34 b(for)28 +b(unsigned)g(32-bit)i(in)m(tegers,)h(and)d(TF)m(ORMn)g(=)h('1K')g(and)f +(TZER)m(On)0 3204 y(=)34 b(92233720368547)q(758)q(08)41 +b(for)35 b(unsigned)e(64-bit)j(in)m(tegers\).)55 b(The)34 +b('S')g(TF)m(ORMn)h(v)-5 b(alue)35 b(tells)g(CFITSIO)e(to)0 3317 y(write)26 b(the)f(k)m(eyw)m(ords)h(appropriate)g(for)f(a)h (signed)f(8-bit)i(b)m(yte)f(column)f(with)g(TF)m(ORMn)h(=)f('1B')h(and) f(TZER)m(On)0 3430 y(=)30 b(-128.)42 b(The)29 b(calls)j(to)e(\014ts)p 959 3430 28 4 v 33 w(write)p 1194 3430 V 33 w(col)h(then)e(write)i(the) f(arra)m(ys)g(of)g(unsigned)f(in)m(teger)j(v)-5 b(alues)30 -b(to)h(the)f(columns.)0 3605 y -SDict begin H.S end - 0 3605 a 0 3605 a -SDict begin 13.6 H.A end - 0 3605 -a 0 3605 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.5) cvn /DEST pdfmark -end - 0 3605 a 179 x Ff(4.5)135 b(Dealing)47 b(with)e(Character)h -(Strings)0 4039 y Fj(The)36 b(c)m(haracter)j(string)d(v)-5 -b(alues)38 b(in)e(a)h(FITS)f(header)h(or)g(in)f(an)h(ASCI)s(I)e(column) -i(in)f(a)i(FITS)e(table)h(extension)0 4152 y(are)i(generally)i(padded)d -(out)h(with)g(non-signi\014can)m(t)h(space)f(c)m(haracters)i(\(ASCI)s -(I)d(32\))i(to)g(\014ll)f(up)f(the)h(header)0 4264 y(record)33 -b(or)h(the)f(column)h(width.)49 b(When)33 b(reading)h(a)g(FITS)e -(string)i(v)-5 b(alue,)35 b(the)e(CFITSIO)f(routines)i(will)f(strip)0 -4377 y(o\013)38 b(these)f(non-signi\014can)m(t)h(trailing)g(spaces)f -(and)g(will)g(return)f(a)i(n)m(ull-terminated)g(string)f(v)-5 -b(alue)37 b(con)m(taining)0 4490 y(only)d(the)g(signi\014can)m(t)g(c)m +b(to)h(the)f(columns.)0 3784 y Ff(4.5)135 b(Dealing)47 +b(with)e(Character)h(Strings)0 4039 y Fj(The)36 b(c)m(haracter)j +(string)d(v)-5 b(alues)38 b(in)e(a)h(FITS)f(header)h(or)g(in)f(an)h +(ASCI)s(I)e(column)i(in)f(a)i(FITS)e(table)h(extension)0 +4152 y(are)i(generally)i(padded)d(out)h(with)g(non-signi\014can)m(t)h +(space)f(c)m(haracters)i(\(ASCI)s(I)d(32\))i(to)g(\014ll)f(up)f(the)h +(header)0 4264 y(record)33 b(or)h(the)f(column)h(width.)49 +b(When)33 b(reading)h(a)g(FITS)e(string)i(v)-5 b(alue,)35 +b(the)e(CFITSIO)f(routines)i(will)f(strip)0 4377 y(o\013)38 +b(these)f(non-signi\014can)m(t)h(trailing)g(spaces)f(and)g(will)g +(return)f(a)i(n)m(ull-terminated)g(string)f(v)-5 b(alue)37 +b(con)m(taining)0 4490 y(only)d(the)g(signi\014can)m(t)g(c)m (haracters.)52 b(Leading)34 b(spaces)g(in)g(a)g(FITS)f(string)g(are)h (considered)g(signi\014can)m(t.)52 b(If)33 b(the)0 4603 y(string)i(con)m(tains)h(all)g(blanks,)g(then)e(CFITSIO)g(will)h @@ -8640,773 +6519,609 @@ (\014le)h(the)g(CFITSIO)f(routines)h(exp)s(ect)g(to)h(get)g(a)g(n)m (ull-)0 5102 y(terminated)33 b(string)g(as)g(input;)g(CFITSIO)e(will)i (pad)f(the)h(string)g(with)f(blanks)g(if)h(necessary)g(when)f(writing)g -(it)0 5215 y(to)f(the)g(FITS)e(\014le.)0 5375 y(When)j(calling)i +(it)0 5215 y(to)f(the)g(FITS)e(\014le.)0 5375 y(The)k(FITS)f(standard)g +(do)s(es)h(not)g(require)g(trailing)h(spaces)f(to)h(b)s(e)e(treated)i +(in)f(this)g(w)m(a)m(y)-8 b(,)35 b(but)e(it)g(do)s(es)g(allo)m(w)i(a)0 +5488 y(more)d(seamless)h(transition)f(from)g(the)g(F)m(OR)-8 +b(TRAN)33 b(FITS)e(w)m(orld)h(where)g(trailing)h(spaces)f(are)g(often)h +(treated)0 5601 y(as)k(insigni\014can)m(t.)60 b(Users)36 +b(who)g(wish)g(the)h(greatest)h(\014delit)m(y)f(when)f(transferring)g +(strings)g(can)h(use)f(the)h Fe(_byt)0 5714 y Fj(v)-5 +b(arian)m(ts)40 b(of)f(column)g(readers)g(and)f(writers)h(\(functions)g +(\014ts)p 2176 5714 V 32 w Fc(f)p Fj(read,write)p Fc(g)p +2697 5714 V 35 w Fj(col)p 2842 5714 V 33 w(b)m(yt\).)68 +b(These)39 b(routines)g(will)p eop end +%%Page: 23 31 +TeXDict begin 23 30 bop 0 299 a Fh(4.6.)72 b(IMPLICIT)29 +b(D)m(A)-8 b(T)g(A)32 b(TYPE)e(CONVERSION)1938 b Fj(23)0 +555 y(transfer)26 b(the)g(ra)m(w)h(\014xed-length)f(v)m(ectors)i(of)f +(c)m(haracter)g(b)m(ytes)g(of)g(the)f(column,)h(including)f(an)m(y)h +(trailing)g(blanks)0 668 y(of)38 b(course.)62 b(The)37 +b Fe(_byt)f Fj(v)-5 b(arian)m(ts)38 b(mak)m(e)h(no)e(attempt)i(to)f(n)m +(ull-terminate)h(an)m(y)f(elemen)m(ts.)63 b(A)38 b(NULL)f(string)0 +781 y(w)m(ould)30 b(b)s(e)g(indicated)h(b)m(y)f(its)h(\014rst)e(c)m +(haracter)j(b)s(eing)e(a)h(NUL)g(b)m(yte.)0 941 y(When)h(calling)i (CFITSIO)d(routines)i(that)g(return)e(a)i(c)m(haracter)h(string)f(it)g (is)f(vital)i(that)f(the)g(size)g(of)g(the)g(c)m(har)0 -5488 y(arra)m(y)38 b(b)s(e)g(large)h(enough)e(to)i(hold)e(the)h(en)m +1054 y(arra)m(y)38 b(b)s(e)g(large)h(enough)e(to)i(hold)e(the)h(en)m (tire)h(string)f(of)g(c)m(haracters,)k(otherwise)c(CFITSIO)e(will)i(o)m -(v)m(erwrite)0 5601 y(whatev)m(er)d(memory)e(lo)s(cations)i(follo)m(w)g +(v)m(erwrite)0 1167 y(whatev)m(er)d(memory)e(lo)s(cations)i(follo)m(w)g (the)f(c)m(har)h(arra)m(y)-8 b(,)35 b(p)s(ossibly)e(causing)h(the)g -(program)g(to)g(execute)h(incor-)0 5714 y(rectly)-8 b(.)42 +(program)g(to)g(execute)h(incor-)0 1280 y(rectly)-8 b(.)42 b(This)30 b(t)m(yp)s(e)g(of)h(error)f(can)h(b)s(e)f(di\016cult)g(to)h (debug,)f(so)h(programmers)f(should)f(alw)m(a)m(ys)j(ensure)e(that)h -(the)p eop end -%%Page: 23 31 -TeXDict begin 23 30 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.23) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.6.)72 -b(IMPLICIT)29 b(D)m(A)-8 b(T)g(A)32 b(TYPE)e(CONVERSION)1938 -b Fj(23)0 555 y(c)m(har)27 b(arra)m(ys)g(are)g(allo)s(cated)i(enough)d +(the)0 1393 y(c)m(har)c(arra)m(ys)g(are)g(allo)s(cated)i(enough)d (space)i(to)f(hold)g(the)f(longest)i(p)s(ossible)f(string,)g -Fi(including)h Fj(the)f(terminat-)0 668 y(ing)k(NULL)g(c)m(haracter.)45 -b(The)30 b(\014tsio.h)h(\014le)h(con)m(tains)g(the)f(follo)m(wing)i +Fi(including)h Fj(the)f(terminat-)0 1506 y(ing)k(NULL)g(c)m(haracter.) +45 b(The)30 b(\014tsio.h)h(\014le)h(con)m(tains)g(the)f(follo)m(wing)i (de\014ned)d(constan)m(ts)i(whic)m(h)f(programmers)0 -781 y(are)g(strongly)g(encouraged)g(to)g(use)f(whenev)m(er)g(they)h +1619 y(are)g(strongly)g(encouraged)g(to)g(use)f(whenev)m(er)g(they)h (are)f(allo)s(cating)j(space)e(for)f(c)m(har)h(arra)m(ys:)0 -1025 y Fe(#define)46 b(FLEN_FILENAME)e(1025)j(/*)g(max)g(length)f(of)h -(a)g(filename)f(*/)0 1138 y(#define)g(FLEN_KEYWORD)140 +1834 y Fe(#define)46 b(FLEN_FILENAME)e(1025)j(/*)g(max)g(length)f(of)h +(a)g(filename)f(*/)0 1947 y(#define)g(FLEN_KEYWORD)140 b(72)95 b(/*)47 b(max)g(length)f(of)h(a)g(keyword)94 -b(*/)0 1251 y(#define)46 b(FLEN_CARD)284 b(81)95 b(/*)47 -b(length)f(of)h(a)h(FITS)e(header)g(card)h(*/)0 1364 +b(*/)0 2060 y(#define)46 b(FLEN_CARD)284 b(81)95 b(/*)47 +b(length)f(of)h(a)h(FITS)e(header)g(card)h(*/)0 2173 y(#define)f(FLEN_VALUE)236 b(71)95 b(/*)47 b(max)g(length)f(of)h(a)g -(keyword)f(value)h(string)f(*/)0 1477 y(#define)g(FLEN_COMMENT)140 +(keyword)f(value)h(string)f(*/)0 2286 y(#define)g(FLEN_COMMENT)140 b(73)95 b(/*)47 b(max)g(length)f(of)h(a)g(keyword)f(comment)g(string)g -(*/)0 1590 y(#define)g(FLEN_ERRMSG)188 b(81)95 b(/*)47 +(*/)0 2399 y(#define)g(FLEN_ERRMSG)188 b(81)95 b(/*)47 b(max)g(length)f(of)h(a)g(CFITSIO)f(error)h(message)e(*/)0 -1703 y(#define)h(FLEN_STATUS)188 b(31)95 b(/*)47 b(max)g(length)f(of)h -(a)g(CFITSIO)f(status)g(text)h(string)f(*/)0 1947 y Fj(F)-8 +2512 y(#define)h(FLEN_STATUS)188 b(31)95 b(/*)47 b(max)g(length)f(of)h +(a)g(CFITSIO)f(status)g(text)h(string)f(*/)0 2727 y Fj(F)-8 b(or)23 b(example,)h(when)d(declaring)i(a)f(c)m(har)g(arra)m(y)h(to)f (hold)g(the)g(v)-5 b(alue)22 b(string)g(of)g(FITS)f(k)m(eyw)m(ord,)k -(use)c(the)h(follo)m(wing)0 2060 y(statemen)m(t:)191 -2304 y Fe(char)47 b(value[FLEN_VALUE];)0 2548 y Fj(Note)41 -b(that)f(FLEN)p 686 2548 28 4 v 33 w(KEYW)m(ORD)g(is)f(longer)h(than)f +(use)c(the)h(follo)m(wing)0 2840 y(statemen)m(t:)191 +3055 y Fe(char)47 b(value[FLEN_VALUE];)0 3271 y Fj(Note)41 +b(that)f(FLEN)p 686 3271 28 4 v 33 w(KEYW)m(ORD)g(is)f(longer)h(than)f (needed)g(for)g(the)h(nominal)f(8-c)m(haracter)j(k)m(eyw)m(ord)e(name)0 -2661 y(b)s(ecause)30 b(the)h(HIERAR)m(CH)f(con)m(v)m(en)m(tion)j(supp)s -(orts)28 b(longer)j(k)m(eyw)m(ord)g(names.)0 2813 y -SDict begin H.S end - 0 -2813 a 0 2813 a -SDict begin 13.6 H.A end - 0 2813 a 0 2813 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.6) cvn /DEST pdfmark -end - 0 2813 a 179 x Ff(4.6)135 +3384 y(b)s(ecause)30 b(the)h(HIERAR)m(CH)f(con)m(v)m(en)m(tion)j(supp)s +(orts)28 b(longer)j(k)m(eyw)m(ord)g(names.)0 3710 y Ff(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)0 -3242 y Fj(The)29 b(CFITSIO)e(routines)i(that)h(read)f(and)f(write)i(n)m +3961 y Fj(The)29 b(CFITSIO)e(routines)i(that)h(read)f(and)f(write)i(n)m (umerical)f(data)h(can)g(p)s(erform)d(implicit)j(data)g(t)m(yp)s(e)f -(con)m(v)m(er-)0 3355 y(sion.)39 b(This)25 b(means)h(that)g(the)g(data) +(con)m(v)m(er-)0 4074 y(sion.)39 b(This)25 b(means)h(that)g(the)g(data) g(t)m(yp)s(e)g(of)g(the)g(v)-5 b(ariable)26 b(or)g(arra)m(y)g(in)f(the) h(program)g(do)s(es)f(not)h(need)f(to)i(b)s(e)e(the)0 -3468 y(same)g(as)f(the)h(data)g(t)m(yp)s(e)g(of)f(the)h(v)-5 +4186 y(same)g(as)f(the)h(data)g(t)m(yp)s(e)g(of)f(the)h(v)-5 b(alue)25 b(in)f(the)g(FITS)g(\014le.)39 b(Data)26 b(t)m(yp)s(e)f(con)m (v)m(ersion)g(is)g(supp)s(orted)d(for)i(n)m(umerical)0 -3581 y(and)37 b(string)g(data)g(t)m(yp)s(es)h(\(if)f(the)g(string)g +4299 y(and)37 b(string)g(data)g(t)m(yp)s(es)h(\(if)f(the)g(string)g (con)m(tains)i(a)e(v)-5 b(alid)38 b(n)m(um)m(b)s(er)e(enclosed)h(in)g -(quotes\))h(when)e(reading)i(a)0 3694 y(FITS)30 b(header)h(k)m(eyw)m +(quotes\))h(when)e(reading)i(a)0 4412 y(FITS)30 b(header)h(k)m(eyw)m (ord)g(v)-5 b(alue)31 b(and)f(for)h(n)m(umeric)g(v)-5 b(alues)31 b(when)f(reading)h(or)f(writing)h(v)-5 b(alues)31 -b(in)g(the)g(primary)0 3807 y(arra)m(y)24 b(or)g(a)h(table)f(column.)39 -b(CFITSIO)22 b(returns)h(status)h(=)f(NUM)p 2267 3807 -28 4 v 34 w(O)m(VERFLO)m(W)i(if)e(the)h(con)m(v)m(erted)i(data)e(v)-5 -b(alue)0 3920 y(exceeds)33 b(the)g(range)g(of)g(the)f(output)g(data)i +b(in)g(the)g(primary)0 4525 y(arra)m(y)24 b(or)g(a)h(table)f(column.)39 +b(CFITSIO)22 b(returns)h(status)h(=)f(NUM)p 2267 4525 +V 34 w(O)m(VERFLO)m(W)i(if)e(the)h(con)m(v)m(erted)i(data)e(v)-5 +b(alue)0 4638 y(exceeds)33 b(the)g(range)g(of)g(the)f(output)g(data)i (t)m(yp)s(e.)47 b(Implicit)33 b(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)h -(is)e(not)h(supp)s(orted)d(within)0 4032 y(binary)g(tables)h(for)f +(is)e(not)h(supp)s(orted)d(within)0 4751 y(binary)g(tables)h(for)f (string,)g(logical,)k(complex,)d(or)f(double)g(complex)h(data)g(t)m(yp) -s(es.)0 4193 y(In)g(addition,)h(an)m(y)f(table)h(column)f(ma)m(y)h(b)s +s(es.)0 4911 y(In)g(addition,)h(an)m(y)f(table)h(column)f(ma)m(y)h(b)s (e)f(read)g(as)h(if)f(it)h(con)m(tained)g(string)f(v)-5 b(alues.)44 b(In)31 b(the)g(case)i(of)e(n)m(umeric)0 -4306 y(columns)f(the)h(returned)e(string)h(will)h(b)s(e)f(formatted)h +5024 y(columns)f(the)h(returned)e(string)h(will)h(b)s(e)f(formatted)h (using)e(the)i(TDISPn)e(displa)m(y)i(format)f(if)h(it)g(exists.)0 -4458 y -SDict begin H.S end - 0 4458 a 0 4458 a -SDict begin 13.6 H.A end - 0 4458 a 0 4458 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.7) cvn /DEST pdfmark -end - 0 4458 a 179 -x Ff(4.7)135 b(Data)46 b(Scaling)0 4887 y Fj(When)38 +5351 y Ff(4.7)135 b(Data)46 b(Scaling)0 5601 y Fj(When)38 b(reading)f(n)m(umerical)i(data)f(v)-5 b(alues)38 b(in)f(the)h(primary) f(arra)m(y)h(or)g(a)g(table)h(column,)h(the)d(v)-5 b(alues)38 -b(will)h(b)s(e)0 5000 y(scaled)f(automatically)j(b)m(y)c(the)g(BSCALE)g +b(will)h(b)s(e)0 5714 y(scaled)f(automatically)j(b)m(y)c(the)g(BSCALE)g (and)g(BZER)m(O)g(\(or)h(TSCALn)e(and)h(TZER)m(On\))f(header)h(v)-5 -b(alues)38 b(if)0 5113 y(they)31 b(are)f(presen)m(t)h(in)f(the)g -(header.)41 b(The)30 b(scaled)h(data)g(that)g(is)f(returned)g(to)h(the) -f(reading)h(program)f(will)h(ha)m(v)m(e)382 5357 y Fe(output)46 -b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h(BZERO)0 -5601 y Fj(\(a)30 b(corresp)s(onding)e(form)m(ula)h(using)g(TSCALn)e -(and)i(TZER)m(On)e(is)i(used)g(when)f(reading)h(from)g(table)h -(columns\).)0 5714 y(In)h(the)i(case)g(of)f(in)m(teger)h(output)f(v)-5 -b(alues)32 b(the)h(\015oating)g(p)s(oin)m(t)f(scaled)g(v)-5 -b(alue)33 b(is)f(truncated)g(to)h(an)f(in)m(teger)h(\(not)p -eop end +b(alues)38 b(if)p eop end %%Page: 24 32 -TeXDict begin 24 31 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.24) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(24)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 -555 y Fj(rounded)j(to)j(the)f(nearest)h(in)m(teger\).)62 -b(The)36 b(\014ts)p 1673 555 28 4 v 32 w(set)p 1816 555 -V 34 w(bscale)i(and)e(\014ts)p 2430 555 V 32 w(set)p -2573 555 V 34 w(tscale)i(routines)f(\(describ)s(ed)f(in)h(the)0 -668 y(`Adv)-5 b(anced')29 b(c)m(hapter\))h(ma)m(y)g(b)s(e)e(used)h(to)g -(o)m(v)m(erride)i(the)e(scaling)h(parameters)f(de\014ned)f(in)h(the)g -(header)g(\(e.g.,)i(to)0 781 y(turn)e(o\013)i(the)g(scaling)g(so)g +TeXDict begin 24 31 bop 0 299 a Fj(24)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(they)f(are)f +(presen)m(t)h(in)f(the)g(header.)41 b(The)30 b(scaled)h(data)g(that)g +(is)f(returned)g(to)h(the)f(reading)h(program)f(will)h(ha)m(v)m(e)382 +875 y Fe(output)46 b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h +(BZERO)0 1196 y Fj(\(a)30 b(corresp)s(onding)e(form)m(ula)h(using)g +(TSCALn)e(and)i(TZER)m(On)e(is)i(used)g(when)f(reading)h(from)g(table)h +(columns\).)0 1308 y(In)h(the)i(case)g(of)f(in)m(teger)h(output)f(v)-5 +b(alues)32 b(the)h(\015oating)g(p)s(oin)m(t)f(scaled)g(v)-5 +b(alue)33 b(is)f(truncated)g(to)h(an)f(in)m(teger)h(\(not)0 +1421 y(rounded)i(to)j(the)f(nearest)h(in)m(teger\).)62 +b(The)36 b(\014ts)p 1673 1421 28 4 v 32 w(set)p 1816 +1421 V 34 w(bscale)i(and)e(\014ts)p 2430 1421 V 32 w(set)p +2573 1421 V 34 w(tscale)i(routines)f(\(describ)s(ed)f(in)h(the)0 +1534 y(`Adv)-5 b(anced')29 b(c)m(hapter\))h(ma)m(y)g(b)s(e)e(used)h(to) +g(o)m(v)m(erride)i(the)e(scaling)h(parameters)f(de\014ned)f(in)h(the)g +(header)g(\(e.g.,)i(to)0 1647 y(turn)e(o\013)i(the)g(scaling)g(so)g (that)g(the)f(program)g(can)h(read)f(the)h(ra)m(w)f(unscaled)h(v)-5 -b(alues)30 b(from)g(the)h(FITS)e(\014le\).)0 941 y(When)44 +b(alues)30 b(from)g(the)h(FITS)e(\014le\).)0 1807 y(When)44 b(writing)h(n)m(umerical)g(data)g(to)g(the)g(primary)f(arra)m(y)h(or)f (to)h(a)g(table)h(column)e(the)h(data)g(v)-5 b(alues)45 -b(will)0 1054 y(generally)29 b(b)s(e)f(automatically)j(in)m(v)m(ersely) +b(will)0 1920 y(generally)29 b(b)s(e)f(automatically)j(in)m(v)m(ersely) f(scaled)f(b)m(y)f(the)g(v)-5 b(alue)29 b(of)f(the)h(BSCALE)e(and)h -(BZER)m(O)g(\(or)h(TSCALn)0 1167 y(and)35 b(TZER)m(On\))f(k)m(eyw)m +(BZER)m(O)g(\(or)h(TSCALn)0 2033 y(and)35 b(TZER)m(On\))f(k)m(eyw)m (ord)i(v)-5 b(alues)35 b(if)h(they)f(they)g(exist)i(in)e(the)g(header.) 55 b(These)35 b(k)m(eyw)m(ords)h(m)m(ust)f(ha)m(v)m(e)i(b)s(een)0 -1280 y(written)31 b(to)h(the)g(header)f(b)s(efore)g(an)m(y)g(data)h(is) +2146 y(written)31 b(to)h(the)g(header)f(b)s(efore)g(an)m(y)g(data)h(is) g(written)f(for)g(them)g(to)h(ha)m(v)m(e)h(an)m(y)e(immediate)i -(e\013ect.)45 b(One)30 b(ma)m(y)0 1393 y(also)h(use)g(the)f(\014ts)p -623 1393 V 33 w(set)p 767 1393 V 33 w(bscale)i(and)d(\014ts)p -1367 1393 V 33 w(set)p 1511 1393 V 33 w(tscale)j(routines)f(to)g +(e\013ect.)45 b(One)30 b(ma)m(y)0 2259 y(also)h(use)g(the)f(\014ts)p +623 2259 V 33 w(set)p 767 2259 V 33 w(bscale)i(and)d(\014ts)p +1367 2259 V 33 w(set)p 1511 2259 V 33 w(tscale)j(routines)f(to)g (de\014ne)f(or)g(o)m(v)m(erride)i(the)f(scaling)g(k)m(eyw)m(ords)g(in)0 -1506 y(the)e(header)g(\(e.g.,)i(to)e(turn)f(o\013)h(the)g(scaling)h(so) +2372 y(the)e(header)g(\(e.g.,)i(to)e(turn)f(o\013)h(the)g(scaling)h(so) f(that)h(the)f(program)f(can)h(write)g(the)g(ra)m(w)g(unscaled)g(v)-5 -b(alues)29 b(in)m(to)0 1619 y(the)d(FITS)g(\014le\).)40 +b(alues)29 b(in)m(to)0 2485 y(the)d(FITS)g(\014le\).)40 b(If)25 b(scaling)i(is)g(p)s(erformed,)e(the)i(in)m(v)m(erse)g(scaled)g (output)e(v)-5 b(alue)27 b(that)g(is)f(written)g(in)m(to)h(the)g(FITS)0 -1732 y(\014le)j(will)h(ha)m(v)m(e)430 1958 y Fe(FITS)46 +2598 y(\014le)j(will)h(ha)m(v)m(e)430 2918 y Fe(FITS)46 b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0 -2185 y Fj(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e +3238 y Fj(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e (and)h(TZER)m(On)g(is)h(used)f(when)f(writing)i(to)h(table)g -(columns\).)0 2298 y(Rounding)34 b(to)i(the)g(nearest)g(in)m(teger,)i +(columns\).)0 3351 y(Rounding)34 b(to)i(the)g(nearest)g(in)m(teger,)i (rather)d(than)g(truncation,)j(is)d(p)s(erformed)f(when)g(writing)h(in) -m(teger)i(data)0 2411 y(t)m(yp)s(es)30 b(to)i(the)e(FITS)g(\014le.)0 -2560 y -SDict begin H.S end - 0 2560 a 0 2560 a -SDict begin 13.6 H.A end - 0 2560 a 0 2560 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.8) cvn /DEST pdfmark -end - 0 2560 a 179 -x Ff(4.8)135 b(Supp)t(ort)44 b(for)h(IEEE)h(Sp)t(ecial)f(V)-11 -b(alues)0 2989 y Fj(The)26 b(ANSI/IEEE-754)h(\015oating-p)s(oin)m(t)h +m(teger)i(data)0 3464 y(t)m(yp)s(es)30 b(to)i(the)e(FITS)g(\014le.)0 +3869 y Ff(4.8)135 b(Supp)t(ort)44 b(for)h(IEEE)h(Sp)t(ecial)f(V)-11 +b(alues)0 4133 y Fj(The)26 b(ANSI/IEEE-754)h(\015oating-p)s(oin)m(t)h (n)m(um)m(b)s(er)d(standard)g(de\014nes)h(certain)h(sp)s(ecial)g(v)-5 -b(alues)26 b(that)h(are)g(used)e(to)0 3102 y(represen)m(t)j(suc)m(h)g +b(alues)26 b(that)h(are)g(used)e(to)0 4246 y(represen)m(t)j(suc)m(h)g (quan)m(tities)h(as)f(Not-a-Num)m(b)s(er)h(\(NaN\),)h(denormalized,)f (under\015o)m(w,)e(o)m(v)m(er\015o)m(w,)j(and)d(in\014nit)m(y)-8 -b(.)0 3215 y(\(See)31 b(the)g(App)s(endix)d(in)j(the)f(FITS)g(standard) +b(.)0 4359 y(\(See)31 b(the)g(App)s(endix)d(in)j(the)f(FITS)g(standard) f(or)i(the)g(FITS)e(User's)i(Guide)f(for)g(a)h(list)g(of)g(these)g(v)-5 -b(alues\).)41 b(The)0 3328 y(CFITSIO)31 b(routines)i(that)g(read)f +b(alues\).)41 b(The)0 4472 y(CFITSIO)31 b(routines)i(that)g(read)f (\015oating)i(p)s(oin)m(t)f(data)g(in)f(FITS)g(\014les)h(recognize)h -(these)f(IEEE)f(sp)s(ecial)i(v)-5 b(alues)0 3441 y(and)27 +(these)f(IEEE)f(sp)s(ecial)i(v)-5 b(alues)0 4585 y(and)27 b(b)m(y)h(default)h(in)m(terpret)f(the)h(o)m(v)m(er\015o)m(w)g(and)f (in\014nit)m(y)f(v)-5 b(alues)29 b(as)f(b)s(eing)g(equiv)-5 b(alen)m(t)29 b(to)g(a)g(NaN,)g(and)e(con)m(v)m(ert)0 -3554 y(the)37 b(under\015o)m(w)e(and)i(denormalized)g(v)-5 +4698 y(the)37 b(under\015o)m(w)e(and)i(denormalized)g(v)-5 b(alues)37 b(in)m(to)h(zeros.)60 b(In)36 b(some)i(cases)f(programmers)g -(ma)m(y)g(w)m(an)m(t)h(access)0 3667 y(to)d(the)g(ra)m(w)f(IEEE)g(v)-5 +(ma)m(y)g(w)m(an)m(t)h(access)0 4811 y(to)d(the)g(ra)m(w)f(IEEE)g(v)-5 b(alues,)36 b(without)e(an)m(y)h(mo)s(di\014cation)g(b)m(y)f(CFITSIO.)f (This)h(can)h(b)s(e)e(done)i(b)m(y)f(calling)i(the)0 -3780 y(\014ts)p 127 3780 28 4 v 32 w(read)p 331 3780 -V 33 w(img)27 b(or)g(\014ts)p 767 3780 V 32 w(read)p -971 3780 V 33 w(col)g(routines)g(while)f(sp)s(ecifying)h(0.0)h(as)e -(the)h(v)-5 b(alue)27 b(of)g(the)g(NULL)-10 b(V)g(AL)26 -b(parameter.)0 3892 y(This)44 b(will)h(force)h(CFITSIO)d(to)i(simply)g -(pass)f(the)h(IEEE)f(v)-5 b(alues)45 b(through)f(to)i(the)f -(application)h(program)0 4005 y(without)38 b(an)m(y)h(mo)s -(di\014cation.)65 b(This)37 b(is)h(not)h(fully)f(supp)s(orted)e(on)i(V) --10 b(AX/VMS)40 b(mac)m(hines,)h(ho)m(w)m(ev)m(er,)g(where)0 -4118 y(there)34 b(is)f(no)g(easy)h(w)m(a)m(y)h(to)f(b)m(ypass)f(the)g -(default)h(in)m(terpretation)h(of)e(the)h(IEEE)f(sp)s(ecial)h(v)-5 -b(alues.)50 b(This)33 b(is)g(also)0 4231 y(not)e(supp)s(orted)e(when)h -(reading)g(\015oating-p)s(oin)m(t)i(images)g(that)g(ha)m(v)m(e)g(b)s -(een)e(compressed)g(with)g(the)h(FITS)f(tiled)0 4344 -y(image)i(compression)f(con)m(v)m(en)m(tion)j(that)d(is)g(discussed)g -(in)f(section)j(5.6;)f(the)g(pixels)f(v)-5 b(alues)31 -b(in)g(tile)h(compressed)0 4457 y(images)42 b(are)f(represen)m(ted)f(b) -m(y)h(scaled)h(in)m(tegers,)i(and)c(a)h(reserv)m(ed)g(in)m(teger)h(v)-5 -b(alue)41 b(\(not)h(a)f(NaN\))h(is)e(used)g(to)0 4570 -y(represen)m(t)30 b(unde\014ned)f(pixels.)0 4719 y -SDict begin H.S end - 0 -4719 a 0 4719 a -SDict begin 13.6 H.A end - 0 4719 a 0 4719 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.9) cvn /DEST pdfmark -end - 0 4719 a 179 x Ff(4.9)135 +4924 y(\014ts)p 127 4924 V 32 w(read)p 331 4924 V 33 +w(img)27 b(or)g(\014ts)p 767 4924 V 32 w(read)p 971 4924 +V 33 w(col)g(routines)g(while)f(sp)s(ecifying)h(0.0)h(as)e(the)h(v)-5 +b(alue)27 b(of)g(the)g(NULL)-10 b(V)g(AL)26 b(parameter.)0 +5036 y(This)44 b(will)h(force)h(CFITSIO)d(to)i(simply)g(pass)f(the)h +(IEEE)f(v)-5 b(alues)45 b(through)f(to)i(the)f(application)h(program)0 +5149 y(without)38 b(an)m(y)h(mo)s(di\014cation.)65 b(This)37 +b(is)h(not)h(fully)f(supp)s(orted)e(on)i(V)-10 b(AX/VMS)40 +b(mac)m(hines,)h(ho)m(w)m(ev)m(er,)g(where)0 5262 y(there)34 +b(is)f(no)g(easy)h(w)m(a)m(y)h(to)f(b)m(ypass)f(the)g(default)h(in)m +(terpretation)h(of)e(the)h(IEEE)f(sp)s(ecial)h(v)-5 b(alues.)50 +b(This)33 b(is)g(also)0 5375 y(not)e(supp)s(orted)e(when)h(reading)g +(\015oating-p)s(oin)m(t)i(images)g(that)g(ha)m(v)m(e)g(b)s(een)e +(compressed)g(with)g(the)h(FITS)f(tiled)0 5488 y(image)i(compression)f +(con)m(v)m(en)m(tion)j(that)d(is)g(discussed)g(in)f(section)j(5.6;)f +(the)g(pixels)f(v)-5 b(alues)31 b(in)g(tile)h(compressed)0 +5601 y(images)42 b(are)f(represen)m(ted)f(b)m(y)h(scaled)h(in)m +(tegers,)i(and)c(a)h(reserv)m(ed)g(in)m(teger)h(v)-5 +b(alue)41 b(\(not)h(a)f(NaN\))h(is)e(used)g(to)0 5714 +y(represen)m(t)30 b(unde\014ned)f(pixels.)p eop end +%%Page: 25 33 +TeXDict begin 25 32 bop 0 299 a Fh(4.9.)72 b(ERR)m(OR)30 +b(ST)-8 b(A)g(TUS)30 b(V)-10 b(ALUES)30 b(AND)h(THE)f(ERR)m(OR)g(MESSA) +m(GE)h(ST)-8 b(A)m(CK)848 b Fj(25)0 555 y Ff(4.9)135 b(Error)46 b(Status)f(V)-11 b(alues)45 b(and)g(the)g(Error)g(Message)h -(Stac)l(k)0 5149 y Fj(Nearly)36 b(all)g(the)g(CFITSIO)e(routines)h +(Stac)l(k)0 805 y Fj(Nearly)36 b(all)g(the)g(CFITSIO)e(routines)h (return)f(an)h(error)g(status)h(v)-5 b(alue)35 b(in)g(2)h(w)m(a)m(ys:) 51 b(as)36 b(the)f(v)-5 b(alue)36 b(of)g(the)f(last)0 -5261 y(parameter)29 b(in)f(the)g(function)g(call,)j(and)d(as)g(the)h +918 y(parameter)29 b(in)f(the)g(function)g(call,)j(and)d(as)g(the)h (returned)e(v)-5 b(alue)29 b(of)f(the)h(function)f(itself.)41 -b(This)27 b(pro)m(vides)i(some)0 5374 y(\015exibilit)m(y)37 +b(This)27 b(pro)m(vides)i(some)0 1031 y(\015exibilit)m(y)37 b(in)e(the)h(w)m(a)m(y)h(programmers)e(can)h(test)h(if)f(an)f(error)h (o)s(ccurred,)g(as)g(illustrated)h(in)e(the)h(follo)m(wing)i(2)0 -5487 y(co)s(de)31 b(fragmen)m(ts:)191 5714 y Fe(if)47 -b(\()h(fits_write_record\(fptr,)41 b(card,)46 b(&status\))g(\))p -eop end -%%Page: 25 33 -TeXDict begin 25 32 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.25) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.10.)73 -b(V)-10 b(ARIABLE-LENGTH)31 b(ARRA)-8 b(YS)30 b(IN)g(BINAR)-8 -b(Y)32 b(T)-8 b(ABLES)1327 b Fj(25)430 555 y Fe(printf\(")45 -b(Error)h(occurred)g(while)g(writing)g(keyword."\);)0 -781 y(or,)191 1007 y(fits_write_record\(fptr,)41 b(card,)47 -b(&status\);)191 1120 y(if)g(\()h(status)e(\))430 1233 +1144 y(co)s(de)31 b(fragmen)m(ts:)191 1397 y Fe(if)47 +b(\()h(fits_write_record\(fptr,)41 b(card,)46 b(&status\))g(\))430 +1510 y(printf\(")f(Error)h(occurred)g(while)g(writing)g(keyword."\);)0 +1735 y(or,)191 1961 y(fits_write_record\(fptr,)41 b(card,)47 +b(&status\);)191 2074 y(if)g(\()h(status)e(\))430 2187 y(printf\(")f(Error)h(occurred)g(while)g(writing)g(keyword."\);)0 -1489 y Fj(A)27 b(listing)h(of)g(all)g(the)f(CFITSIO)f(status)i(co)s(de) +2440 y Fj(A)27 b(listing)h(of)g(all)g(the)f(CFITSIO)f(status)i(co)s(de) f(v)-5 b(alues)28 b(is)f(giv)m(en)h(at)g(the)g(end)e(of)i(this)f(do)s -(cumen)m(t.)39 b(Programmers)0 1602 y(are)33 b(encouraged)g(to)g(use)f +(cumen)m(t.)39 b(Programmers)0 2553 y(are)33 b(encouraged)g(to)g(use)f (the)h(sym)m(b)s(olic)f(mnemonics)g(\(de\014ned)g(in)g(\014tsio.h\))h -(rather)f(than)g(the)h(actual)h(in)m(teger)0 1714 y(status)d(v)-5 +(rather)f(than)g(the)h(actual)h(in)m(teger)0 2666 y(status)d(v)-5 b(alues)30 b(to)i(impro)m(v)m(e)f(the)f(readabilit)m(y)i(of)f(their)f -(co)s(de.)0 1875 y(The)i(CFITSIO)f(library)g(uses)h(an)g(`inherited)h +(co)s(de.)0 2826 y(The)i(CFITSIO)f(library)g(uses)h(an)g(`inherited)h (status')g(con)m(v)m(en)m(tion)h(for)e(the)h(status)f(parameter)h(whic) -m(h)f(means)0 1988 y(that)37 b(if)f(a)h(routine)f(is)h(called)g(with)f +m(h)f(means)0 2939 y(that)37 b(if)f(a)h(routine)f(is)h(called)g(with)f (a)h(p)s(ositiv)m(e)g(input)f(v)-5 b(alue)36 b(of)h(the)g(status)f -(parameter)h(as)g(input,)g(then)f(the)0 2100 y(routine)j(will)f(exit)i +(parameter)h(as)g(input,)g(then)f(the)0 3052 y(routine)j(will)f(exit)i (immediately)g(without)e(c)m(hanging)i(the)e(v)-5 b(alue)39 b(of)g(the)g(status)g(parameter.)65 b(Th)m(us,)40 b(if)f(one)0 -2213 y(passes)24 b(the)h(status)g(v)-5 b(alue)25 b(returned)f(from)g +3164 y(passes)24 b(the)h(status)g(v)-5 b(alue)25 b(returned)f(from)g (eac)m(h)i(CFITSIO)d(routine)h(as)h(input)f(to)h(the)g(next)g(CFITSIO)e -(routine,)0 2326 y(then)28 b(whenev)m(er)g(an)g(error)g(is)h(detected)g +(routine,)0 3277 y(then)28 b(whenev)m(er)g(an)g(error)g(is)h(detected)g (all)h(further)d(CFITSIO)f(pro)s(cessing)i(will)h(cease.)42 -b(This)27 b(con)m(v)m(en)m(tion)k(can)0 2439 y(simplify)h(the)h(error)f +b(This)27 b(con)m(v)m(en)m(tion)k(can)0 3390 y(simplify)h(the)h(error)f (c)m(hec)m(king)j(in)d(application)i(programs)e(b)s(ecause)h(it)g(is)g (not)g(necessary)g(to)g(c)m(hec)m(k)i(the)d(v)-5 b(alue)0 -2552 y(of)30 b(the)g(status)h(parameter)f(after)h(ev)m(ery)g(single)f +3503 y(of)30 b(the)g(status)h(parameter)f(after)h(ev)m(ery)g(single)f (CFITSIO)f(routine)h(call.)42 b(If)30 b(a)g(program)g(con)m(tains)h(a)g -(sequence)0 2665 y(of)d(sev)m(eral)i(CFITSIO)d(calls,)j(one)e(can)h +(sequence)0 3616 y(of)d(sev)m(eral)i(CFITSIO)d(calls,)j(one)e(can)h (just)e(c)m(hec)m(k)j(the)f(status)f(v)-5 b(alue)29 b(after)g(the)f -(last)h(call.)41 b(Since)29 b(the)f(returned)0 2778 y(status)33 +(last)h(call.)41 b(Since)29 b(the)f(returned)0 3729 y(status)33 b(v)-5 b(alues)33 b(are)g(generally)h(distinctiv)m(e,)h(it)f(should)d (b)s(e)i(p)s(ossible)f(to)h(determine)g(whic)m(h)g(routine)g -(originally)0 2891 y(returned)c(the)i(error)f(status.)0 -3051 y(CFITSIO)c(also)i(main)m(tains)h(an)e(in)m(ternal)h(stac)m(k)h +(originally)0 3842 y(returned)c(the)i(error)f(status.)0 +4002 y(CFITSIO)c(also)i(main)m(tains)h(an)e(in)m(ternal)h(stac)m(k)h (of)f(error)f(messages)h(\(80-c)m(haracter)j(maxim)m(um)c(length\))h -(whic)m(h)0 3164 y(in)36 b(man)m(y)g(cases)h(pro)m(vide)f(a)g(more)g +(whic)m(h)0 4115 y(in)36 b(man)m(y)g(cases)h(pro)m(vide)f(a)g(more)g (detailed)i(explanation)f(of)f(the)g(cause)h(of)f(the)g(error)g(than)f -(is)h(pro)m(vided)g(b)m(y)0 3277 y(the)k(error)e(status)i(n)m(um)m(b)s +(is)h(pro)m(vided)g(b)m(y)0 4228 y(the)k(error)e(status)i(n)m(um)m(b)s (er)e(alone.)69 b(It)39 b(is)h(recommended)f(that)g(the)h(error)f -(message)h(stac)m(k)h(b)s(e)e(prin)m(ted)g(out)0 3390 +(message)h(stac)m(k)h(b)s(e)e(prin)m(ted)g(out)0 4341 y(whenev)m(er)g(a)g(program)g(detects)h(a)f(CFITSIO)e(error.)66 -b(The)38 b(function)h(\014ts)p 2653 3390 28 4 v 32 w(rep)s(ort)p -2931 3390 V 32 w(error)g(will)g(prin)m(t)g(out)g(the)0 -3503 y(en)m(tire)31 b(error)e(message)h(stac)m(k,)i(or)d(alternativ)m -(ely)k(one)d(ma)m(y)g(call)h(\014ts)p 2376 3503 V 32 -w(read)p 2580 3503 V 33 w(errmsg)e(to)h(get)h(the)f(error)f(messages)0 -3616 y(one)i(at)g(a)g(time.)0 3752 y -SDict begin H.S end - 0 3752 a 0 3752 -a -SDict begin 13.6 H.A end - 0 3752 a 0 3752 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.10) cvn /DEST pdfmark -end - 0 3752 a 197 x Ff(4.10)136 b(V)-11 +b(The)38 b(function)h(\014ts)p 2653 4341 28 4 v 32 w(rep)s(ort)p +2931 4341 V 32 w(error)g(will)g(prin)m(t)g(out)g(the)0 +4454 y(en)m(tire)31 b(error)e(message)h(stac)m(k,)i(or)d(alternativ)m +(ely)k(one)d(ma)m(y)g(call)h(\014ts)p 2376 4454 V 32 +w(read)p 2580 4454 V 33 w(errmsg)e(to)h(get)h(the)f(error)f(messages)0 +4567 y(one)i(at)g(a)g(time.)0 4899 y Ff(4.10)136 b(V)-11 b(ariable-Length)45 b(Arra)l(ys)g(in)g(Binary)g(T)-11 -b(ables)0 4199 y Fj(CFITSIO)33 b(pro)m(vides)i(easy-to-use)h(supp)s +b(ables)0 5149 y Fj(CFITSIO)33 b(pro)m(vides)i(easy-to-use)h(supp)s (ort)d(for)i(reading)g(and)f(writing)h(data)g(in)g(v)-5 -b(ariable)35 b(length)g(\014elds)g(of)g(a)0 4312 y(binary)27 +b(ariable)35 b(length)g(\014elds)g(of)g(a)0 5262 y(binary)27 b(table.)40 b(The)27 b(v)-5 b(ariable)29 b(length)f(columns)f(ha)m(v)m (e)i(TF)m(ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)28 b(of)g(the)f(form)g -(`1Pt\(len\)')j(or)0 4425 y(`1Qt\(len\)')36 b(where)d(`t')h(is)g(the)g +(`1Pt\(len\)')j(or)0 5375 y(`1Qt\(len\)')36 b(where)d(`t')h(is)g(the)g (data)g(t)m(yp)s(e)g(co)s(de)g(\(e.g.,)j(I,)c(J,)h(E,)g(D,)g(etc.\))52 b(and)33 b(`len')i(is)e(an)h(in)m(teger)h(sp)s(ecifying)0 -4538 y(the)g(maxim)m(um)g(length)h(of)f(the)h(v)m(ector)h(in)d(the)i +5488 y(the)g(maxim)m(um)g(length)h(of)f(the)h(v)m(ector)h(in)d(the)i (table.)56 b(The)35 b('P')g(t)m(yp)s(e)g(v)-5 b(ariable)36 -b(length)g(columns)f(use)g(32-bit)0 4650 y(arra)m(y)j(length)h(and)e(b) +b(length)g(columns)f(use)g(32-bit)0 5601 y(arra)m(y)j(length)h(and)e(b) m(yte)h(o\013set)h(v)-5 b(alues,)41 b(whereas)c(the)h('Q')g(t)m(yp)s(e) g(columns)g(use)f(64-bit)i(v)-5 b(alues,)41 b(whic)m(h)c(ma)m(y)0 -4763 y(b)s(e)31 b(required)h(when)f(dealing)i(with)f(large)h(arra)m +5714 y(b)s(e)31 b(required)h(when)f(dealing)i(with)f(large)h(arra)m (ys.)46 b(CFITSIO)31 b(supp)s(orts)f(a)i(lo)s(cal)i(con)m(v)m(en)m -(tion)g(that)f(in)m(terprets)0 4876 y(the)41 b('P')g(t)m(yp)s(e)g -(descriptors)g(as)g(unsigned)e(32-bit)j(in)m(tegers,)j(whic)m(h)c(pro)m -(vides)g(a)g(factor)g(of)g(2)h(greater)g(range)0 4989 -y(for)32 b(the)g(arra)m(y)h(length)g(or)f(heap)g(address)f(than)h(is)g -(p)s(ossible)g(with)g(32-bit)h('signed')g(in)m(tegers.)47 -b(Note,)34 b(ho)m(w)m(ev)m(er,)0 5102 y(that)i(other)g(soft)m(w)m(are)g +(tion)g(that)f(in)m(terprets)p eop end +%%Page: 26 34 +TeXDict begin 26 33 bop 0 299 a Fj(26)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(the)41 +b('P')g(t)m(yp)s(e)g(descriptors)g(as)g(unsigned)e(32-bit)j(in)m +(tegers,)j(whic)m(h)c(pro)m(vides)g(a)g(factor)g(of)g(2)h(greater)g +(range)0 668 y(for)32 b(the)g(arra)m(y)h(length)g(or)f(heap)g(address)f +(than)h(is)g(p)s(ossible)g(with)g(32-bit)h('signed')g(in)m(tegers.)47 +b(Note,)34 b(ho)m(w)m(ev)m(er,)0 781 y(that)i(other)g(soft)m(w)m(are)g (pac)m(k)-5 b(ages)38 b(ma)m(y)d(not)h(supp)s(ort)e(this)h(con)m(v)m (en)m(tion,)k(and)c(ma)m(y)h(b)s(e)e(unable)h(to)h(read)f(thees)0 -5215 y(extended)30 b(range)h(v)-5 b(ariable)31 b(length)g(records.)0 -5375 y(If)d(the)h(v)-5 b(alue)30 b(of)f(`len')g(is)g(not)g(sp)s +894 y(extended)30 b(range)h(v)-5 b(ariable)31 b(length)g(records.)0 +1054 y(If)d(the)h(v)-5 b(alue)30 b(of)f(`len')g(is)g(not)g(sp)s (eci\014ed)f(when)g(the)h(table)h(is)e(created)i(\(e.g.,)h(if)e(the)g -(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(is)0 5488 +(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(is)0 1167 y(simply)j(sp)s(eci\014ed)f(as)h('1PE')h(instead)g(of)f('1PE\(400\))i (\),)g(then)d(CFITSIO)g(will)h(automatically)j(scan)e(the)f(table)0 -5601 y(when)27 b(it)j(is)e(closed)h(to)h(determine)e(the)h(maxim)m(um)f +1280 y(when)27 b(it)j(is)e(closed)h(to)h(determine)e(the)h(maxim)m(um)f (length)h(of)g(the)f(v)m(ector)j(and)c(will)i(app)s(end)e(this)i(v)-5 -b(alue)29 b(to)g(the)0 5714 y(TF)m(ORMn)h(v)-5 b(alue.)p -eop end -%%Page: 26 34 -TeXDict begin 26 33 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.26) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(26)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 -555 y Fj(The)d(same)h(routines)g(that)g(read)f(and)g(write)h(data)g(in) -g(an)f(ordinary)g(\014xed)g(length)h(binary)f(table)h(extension)h(are)0 -668 y(also)41 b(used)d(for)i(v)-5 b(ariable)40 b(length)g(\014elds,)h -(ho)m(w)m(ev)m(er,)j(the)c(routine)f(parameters)h(tak)m(e)h(on)f(a)g -(sligh)m(tly)g(di\013eren)m(t)0 781 y(in)m(terpretation)32 -b(as)e(describ)s(ed)g(b)s(elo)m(w.)0 941 y(All)37 b(the)f(data)h(in)f -(a)h(v)-5 b(ariable)37 b(length)f(\014eld)g(is)g(written)h(in)m(to)g -(an)f(area)h(called)h(the)e(`heap')g(whic)m(h)g(follo)m(ws)i(the)0 -1054 y(main)31 b(\014xed-length)h(FITS)e(binary)h(table.)44 -b(The)31 b(size)h(of)f(the)h(heap,)f(in)g(b)m(ytes,)h(is)g(sp)s -(eci\014ed)e(b)m(y)h(the)h(PCOUNT)0 1167 y(k)m(eyw)m(ord)21 -b(in)f(the)h(FITS)f(header.)37 b(When)20 b(creating)i(a)f(new)f(binary) -g(table,)j(the)e(initial)h(v)-5 b(alue)21 b(of)f(PCOUNT)g(should)0 -1280 y(usually)27 b(b)s(e)h(set)g(to)g(zero.)41 b(CFITSIO)26 +b(alue)29 b(to)g(the)0 1393 y(TF)m(ORMn)h(v)-5 b(alue.)0 +1553 y(The)29 b(same)h(routines)g(that)g(read)f(and)g(write)h(data)g +(in)g(an)f(ordinary)g(\014xed)g(length)h(binary)f(table)h(extension)h +(are)0 1666 y(also)41 b(used)d(for)i(v)-5 b(ariable)40 +b(length)g(\014elds,)h(ho)m(w)m(ev)m(er,)j(the)c(routine)f(parameters)h +(tak)m(e)h(on)f(a)g(sligh)m(tly)g(di\013eren)m(t)0 1779 +y(in)m(terpretation)32 b(as)e(describ)s(ed)g(b)s(elo)m(w.)0 +1939 y(All)37 b(the)f(data)h(in)f(a)h(v)-5 b(ariable)37 +b(length)f(\014eld)g(is)g(written)h(in)m(to)g(an)f(area)h(called)h(the) +e(`heap')g(whic)m(h)g(follo)m(ws)i(the)0 2052 y(main)31 +b(\014xed-length)h(FITS)e(binary)h(table.)44 b(The)31 +b(size)h(of)f(the)h(heap,)f(in)g(b)m(ytes,)h(is)g(sp)s(eci\014ed)e(b)m +(y)h(the)h(PCOUNT)0 2165 y(k)m(eyw)m(ord)21 b(in)f(the)h(FITS)f +(header.)37 b(When)20 b(creating)i(a)f(new)f(binary)g(table,)j(the)e +(initial)h(v)-5 b(alue)21 b(of)f(PCOUNT)g(should)0 2278 +y(usually)27 b(b)s(e)h(set)g(to)g(zero.)41 b(CFITSIO)26 b(will)i(recompute)g(the)g(size)g(of)g(the)g(heap)g(as)g(the)g(data)g -(is)g(written)f(and)h(will)0 1393 y(automatically)g(up)s(date)c(the)i +(is)g(written)f(and)h(will)0 2391 y(automatically)g(up)s(date)c(the)i (PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)26 b(when)e(the)h(table)h(is)f -(closed.)40 b(When)25 b(writing)g(v)-5 b(ariable)0 1506 +(closed.)40 b(When)25 b(writing)g(v)-5 b(ariable)0 2503 y(length)34 b(data)g(to)g(a)g(table,)i(CFITSIO)c(will)h(automatically)k (extend)c(the)h(size)g(of)g(the)g(heap)f(area)h(if)g(necessary)-8 -b(,)0 1619 y(so)31 b(that)g(an)m(y)f(follo)m(wing)i(HDUs)f(do)f(not)h -(get)h(o)m(v)m(erwritten.)0 1779 y(By)e(default)f(the)h(heap)f(data)i +b(,)0 2616 y(so)31 b(that)g(an)m(y)f(follo)m(wing)i(HDUs)f(do)f(not)h +(get)h(o)m(v)m(erwritten.)0 2777 y(By)e(default)f(the)h(heap)f(data)i (area)f(starts)g(immediately)h(after)f(the)f(last)i(ro)m(w)e(of)h(the)g -(\014xed-length)f(table.)42 b(This)0 1892 y(default)27 +(\014xed-length)f(table.)42 b(This)0 2889 y(default)27 b(starting)g(lo)s(cation)i(ma)m(y)e(b)s(e)f(o)m(v)m(erridden)h(b)m(y)g (the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)f(is)h(not)g(recommended.)0 -2005 y(If)34 b(additional)h(ro)m(ws)f(of)g(data)h(are)g(added)e(to)i +3002 y(If)34 b(additional)h(ro)m(ws)f(of)g(data)h(are)g(added)e(to)i (the)f(table,)j(CFITSIO)32 b(will)j(automatically)i(shift)c(the)i(the)f -(heap)0 2118 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g(for)f(the)h(new)f(ro) +(heap)0 3115 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g(for)f(the)h(new)f(ro) m(ws,)i(but)e(it)i(is)e(ob)m(viously)i(b)s(e)e(more)h(e\016cien)m(t)h -(to)f(initially)h(create)h(the)0 2230 y(table)31 b(with)e(the)h +(to)f(initially)h(create)h(the)0 3228 y(table)31 b(with)e(the)h (necessary)g(n)m(um)m(b)s(er)f(of)h(blank)f(ro)m(ws,)h(so)g(that)g(the) g(heap)g(do)s(es)f(not)h(needed)g(to)g(b)s(e)f(constan)m(tly)0 -2343 y(mo)m(v)m(ed.)0 2503 y(When)36 b(writing)g(ro)m(w)g(of)h(data)f +3341 y(mo)m(v)m(ed.)0 3501 y(When)36 b(writing)g(ro)m(w)g(of)h(data)f (to)h(a)g(v)-5 b(ariable)37 b(length)f(\014eld)g(the)g(en)m(tire)i (arra)m(y)e(of)g(v)-5 b(alues)37 b(for)f(a)g(giv)m(en)i(ro)m(w)e(of)0 -2616 y(the)30 b(table)h(m)m(ust)e(b)s(e)h(written)g(with)f(a)h(single)h -(call)g(to)f(\014ts)p 1986 2616 28 4 v 33 w(write)p 2221 -2616 V 33 w(col.)42 b(The)29 b(total)i(length)g(of)f(the)g(arra)m(y)g -(is)g(giv)m(en)0 2729 y(b)m(y)j(nelemen)m(ts)h(+)f(\014rstelem)g(-)g +3614 y(the)30 b(table)h(m)m(ust)e(b)s(e)h(written)g(with)f(a)h(single)h +(call)g(to)f(\014ts)p 1986 3614 28 4 v 33 w(write)p 2221 +3614 V 33 w(col.)42 b(The)29 b(total)i(length)g(of)f(the)g(arra)m(y)g +(is)g(giv)m(en)0 3727 y(b)m(y)j(nelemen)m(ts)h(+)f(\014rstelem)g(-)g (1.)49 b(Additional)34 b(elemen)m(ts)h(cannot)e(b)s(e)g(app)s(ended)e -(to)j(an)f(existing)h(v)m(ector)h(at)f(a)0 2842 y(later)c(time)g(since) +(to)j(an)f(existing)h(v)m(ector)h(at)f(a)0 3840 y(later)c(time)g(since) g(an)m(y)g(attempt)g(to)g(do)g(so)f(will)h(simply)f(o)m(v)m(erwrite)i (all)f(the)f(previously)h(written)f(data)h(and)f(the)0 -2955 y(new)36 b(data)h(will)g(b)s(e)f(written)g(to)h(a)g(new)f(area)h -(of)g(the)g(heap.)58 b(The)36 b(\014ts)p 2496 2955 V -33 w(compress)p 2889 2955 V 32 w(heap)g(routine)h(is)f(pro)m(vided)0 -3068 y(to)h(compress)g(the)g(heap)g(and)f(reco)m(v)m(er)i(an)m(y)f(un)m +3953 y(new)36 b(data)h(will)g(b)s(e)f(written)g(to)h(a)g(new)f(area)h +(of)g(the)g(heap.)58 b(The)36 b(\014ts)p 2496 3953 V +33 w(compress)p 2889 3953 V 32 w(heap)g(routine)h(is)f(pro)m(vided)0 +4066 y(to)h(compress)g(the)g(heap)g(and)f(reco)m(v)m(er)i(an)m(y)f(un)m (used)f(space.)60 b(T)-8 b(o)37 b(a)m(v)m(oid)i(ha)m(ving)e(to)h(deal)f -(with)f(this)h(issue,)h(it)0 3181 y(is)31 b(recommended)h(that)g(ro)m +(with)f(this)h(issue,)h(it)0 4179 y(is)31 b(recommended)h(that)g(ro)m (ws)f(in)g(a)h(v)-5 b(ariable)32 b(length)g(\014eld)f(should)f(only)i (b)s(e)f(written)g(once.)45 b(An)31 b(exception)h(to)0 -3294 y(this)e(general)h(rule)f(o)s(ccurs)g(when)f(setting)i(elemen)m +4292 y(this)e(general)h(rule)f(o)s(ccurs)g(when)f(setting)i(elemen)m (ts)h(of)e(an)g(arra)m(y)g(as)h(unde\014ned.)38 b(It)30 -b(is)h(allo)m(w)m(ed)h(to)e(\014rst)g(write)0 3407 y(a)e(dumm)m(y)f(v) +b(is)h(allo)m(w)m(ed)h(to)e(\014rst)g(write)0 4405 y(a)e(dumm)m(y)f(v) -5 b(alue)28 b(in)m(to)h(the)f(arra)m(y)h(with)e(\014ts)p -1534 3407 V 33 w(write)p 1769 3407 V 33 w(col,)j(and)d(then)g(call)j -(\014ts)p 2632 3407 V 32 w(write)p 2866 3407 V 33 w(col)p -3009 3407 V 34 w(n)m(ul)d(to)i(\015ag)f(the)g(desired)0 -3520 y(elemen)m(ts)h(as)f(unde\014ned.)38 b(Note)29 b(that)g(the)f(ro)m +1534 4405 V 33 w(write)p 1769 4405 V 33 w(col,)j(and)d(then)g(call)j +(\014ts)p 2632 4405 V 32 w(write)p 2866 4405 V 33 w(col)p +3009 4405 V 34 w(n)m(ul)d(to)i(\015ag)f(the)g(desired)0 +4517 y(elemen)m(ts)h(as)f(unde\014ned.)38 b(Note)29 b(that)g(the)f(ro)m (ws)g(of)g(a)g(table,)i(whether)d(\014xed)g(or)h(v)-5 -b(ariable)29 b(length,)g(do)f(not)g(ha)m(v)m(e)0 3633 +b(ariable)29 b(length,)g(do)f(not)g(ha)m(v)m(e)0 4630 y(to)j(b)s(e)f(written)g(consecutiv)m(ely)j(and)d(ma)m(y)h(b)s(e)e -(written)i(in)f(an)m(y)h(order.)0 3793 y(When)40 b(writing)h(to)g(a)g +(written)i(in)f(an)m(y)h(order.)0 4791 y(When)40 b(writing)h(to)g(a)g (v)-5 b(ariable)41 b(length)g(ASCI)s(I)e(c)m(haracter)j(\014eld)e (\(e.g.,)45 b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)d(a)h(single)0 -3906 y(c)m(haracter)22 b(string)e(can)h(b)s(e)e(written.)38 +4903 y(c)m(haracter)22 b(string)e(can)h(b)s(e)e(written.)38 b(The)20 b(`\014rstelem')g(and)g(`nelemen)m(ts')i(parameter)e(v)-5 -b(alues)21 b(in)f(the)g(\014ts)p 3526 3906 V 33 w(write)p -3761 3906 V 33 w(col)0 4019 y(routine)35 b(are)h(ignored)f(and)f(the)i +b(alues)21 b(in)f(the)g(\014ts)p 3526 4903 V 33 w(write)p +3761 4903 V 33 w(col)0 5016 y(routine)35 b(are)h(ignored)f(and)f(the)i (n)m(um)m(b)s(er)d(of)j(c)m(haracters)g(to)g(write)f(is)h(simply)e -(determined)h(b)m(y)g(the)g(length)h(of)0 4131 y(the)31 +(determined)h(b)m(y)g(the)g(length)h(of)0 5129 y(the)31 b(input)e(n)m(ull-terminated)i(c)m(haracter)h(string.)0 -4292 y(The)21 b(\014ts)p 305 4292 V 33 w(write)p 540 -4292 V 33 w(descript)g(routine)h(is)f(useful)g(in)g(situations)i(where) +5289 y(The)21 b(\014ts)p 305 5289 V 33 w(write)p 540 +5289 V 33 w(descript)g(routine)h(is)f(useful)g(in)g(situations)i(where) e(m)m(ultiple)h(ro)m(ws)g(of)g(a)g(v)-5 b(ariable)22 -b(length)g(column)0 4405 y(ha)m(v)m(e)32 b(the)e(iden)m(tical)i(arra)m +b(length)g(column)0 5402 y(ha)m(v)m(e)32 b(the)e(iden)m(tical)i(arra)m (y)f(of)g(v)-5 b(alues.)41 b(One)30 b(can)g(simply)g(write)h(the)f (arra)m(y)h(once)g(for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0 -4517 y(use)c(\014ts)p 280 4517 V 32 w(write)p 514 4517 +5515 y(use)c(\014ts)p 280 5515 V 32 w(write)p 514 5515 V 33 w(descript)g(to)g(write)g(the)g(same)h(descriptor)e(v)-5 b(alues)27 b(in)m(to)g(the)f(other)g(ro)m(ws;)h(all)g(the)f(ro)m(ws)g -(will)g(then)0 4630 y(p)s(oin)m(t)k(to)h(the)g(same)g(storage)h(lo)s -(cation)g(th)m(us)e(sa)m(ving)h(disk)f(space.)0 4791 -y(When)35 b(reading)g(from)f(a)i(v)-5 b(ariable)35 b(length)h(arra)m(y) -f(\014eld)g(one)g(can)g(only)h(read)e(as)i(man)m(y)f(elemen)m(ts)h(as)f -(actually)0 4903 y(exist)i(in)e(that)i(ro)m(w)e(of)h(the)g(table;)k -(reading)c(do)s(es)g(not)g(automatically)i(con)m(tin)m(ue)f(with)f(the) -g(next)g(ro)m(w)g(of)g(the)0 5016 y(table)29 b(as)f(o)s(ccurs)g(when)f -(reading)h(an)g(ordinary)g(\014xed)f(length)h(table)h(\014eld.)40 -b(A)m(ttempts)29 b(to)g(read)f(more)g(than)g(this)0 5129 -y(will)k(cause)h(an)e(error)h(status)g(to)g(b)s(e)f(returned.)44 -b(One)32 b(can)g(determine)g(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h -(in)f(eac)m(h)h(ro)m(w)0 5242 y(of)e(a)f(v)-5 b(ariable)31 -b(column)g(with)f(the)g(\014ts)p 1329 5242 V 33 w(read)p -1534 5242 V 32 w(descript)h(routine.)p eop end +(will)g(then)0 5628 y(p)s(oin)m(t)k(to)h(the)g(same)g(storage)h(lo)s +(cation)g(th)m(us)e(sa)m(ving)h(disk)f(space.)p eop end %%Page: 27 35 -TeXDict begin 27 34 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.27) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.11.)73 -b(MUL)-8 b(TIPLE)30 b(A)m(CCESS)f(TO)g(THE)i(SAME)f(FITS)f(FILE)1515 -b Fj(27)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.11) cvn /DEST pdfmark -end - 0 464 -a 91 x Ff(4.11)136 b(Multiple)45 b(Access)g(to)g(the)g(Same)h(FITS)d -(File)0 807 y Fj(CFITSIO)29 b(supp)s(orts)g(sim)m(ultaneous)i(read)f -(and)g(write)h(access)h(to)f(di\013eren)m(t)g(HDUs)g(in)f(the)h(same)g -(FITS)f(\014le)g(in)0 920 y(some)h(circumstances,)g(as)g(describ)s(ed)e -(b)s(elo)m(w:)136 1185 y Fc(\017)46 b Fj(Multi-threaded)31 -b(programs)227 1339 y(When)f(CFITSIO)f(is)h(compiled)h(with)e(the)i(-D) -p 1842 1339 28 4 v 33 w(REENTRANT)f(directiv)m(e)h(\(as)g(can)f(b)s(e)g -(tested)h(with)f(the)227 1452 y(\014ts)p 354 1452 V 33 -w(is)p 448 1452 V 33 w(reen)m(tran)m(t)38 b(function\))f(di\013eren)m +TeXDict begin 27 34 bop 0 299 a Fh(4.11.)73 b(MUL)-8 +b(TIPLE)30 b(A)m(CCESS)f(TO)g(THE)i(SAME)f(FITS)f(FILE)1515 +b Fj(27)0 555 y(When)35 b(reading)g(from)f(a)i(v)-5 b(ariable)35 +b(length)h(arra)m(y)f(\014eld)g(one)g(can)g(only)h(read)e(as)i(man)m(y) +f(elemen)m(ts)h(as)f(actually)0 668 y(exist)i(in)e(that)i(ro)m(w)e(of)h +(the)g(table;)k(reading)c(do)s(es)g(not)g(automatically)i(con)m(tin)m +(ue)f(with)f(the)g(next)g(ro)m(w)g(of)g(the)0 781 y(table)29 +b(as)f(o)s(ccurs)g(when)f(reading)h(an)g(ordinary)g(\014xed)f(length)h +(table)h(\014eld.)40 b(A)m(ttempts)29 b(to)g(read)f(more)g(than)g(this) +0 894 y(will)k(cause)h(an)e(error)h(status)g(to)g(b)s(e)f(returned.)44 +b(One)32 b(can)g(determine)g(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h +(in)f(eac)m(h)h(ro)m(w)0 1007 y(of)e(a)f(v)-5 b(ariable)31 +b(column)g(with)f(the)g(\014ts)p 1329 1007 28 4 v 33 +w(read)p 1534 1007 V 32 w(descript)h(routine.)0 1337 +y Ff(4.11)136 b(Multiple)45 b(Access)g(to)g(the)g(Same)h(FITS)d(File)0 +1588 y Fj(CFITSIO)29 b(supp)s(orts)g(sim)m(ultaneous)i(read)f(and)g +(write)h(access)h(to)f(di\013eren)m(t)g(HDUs)g(in)f(the)h(same)g(FITS)f +(\014le)g(in)0 1701 y(some)h(circumstances,)g(as)g(describ)s(ed)e(b)s +(elo)m(w:)136 1941 y Fc(\017)46 b Fj(Multi-threaded)31 +b(programs)227 2088 y(When)f(CFITSIO)f(is)h(compiled)h(with)e(the)i(-D) +p 1842 2088 V 33 w(REENTRANT)f(directiv)m(e)h(\(as)g(can)f(b)s(e)g +(tested)h(with)f(the)227 2201 y(\014ts)p 354 2201 V 33 +w(is)p 448 2201 V 33 w(reen)m(tran)m(t)38 b(function\))f(di\013eren)m (t)h(threads)f(can)g(call)i(an)m(y)e(of)h(the)f(CFITSIO)f(routines)h -(to)h(sim)m(ul-)227 1565 y(taneously)g(read)g(or)f(write)h(separate)h +(to)h(sim)m(ul-)227 2314 y(taneously)g(read)g(or)f(write)h(separate)h (FITS)d(\014les.)62 b(Multiple)39 b(threads)e(can)h(also)g(read)f(data) -i(from)e(the)227 1677 y(same)32 b(FITS)f(\014le)g(sim)m(ultaneously)-8 +i(from)e(the)227 2427 y(same)32 b(FITS)f(\014le)g(sim)m(ultaneously)-8 b(,)33 b(as)f(long)g(as)f(the)h(\014le)f(w)m(as)h(op)s(ened)f(indep)s -(enden)m(tly)f(b)m(y)h(eac)m(h)i(thread.)227 1790 y(This)g(relies)h(on) +(enden)m(tly)f(b)m(y)h(eac)m(h)i(thread.)227 2539 y(This)g(relies)h(on) g(the)f(op)s(erating)h(system)g(to)g(correctly)h(deal)g(with)e(reading) -g(the)h(same)g(\014le)g(b)m(y)f(m)m(ultiple)227 1903 +g(the)h(same)g(\014le)g(b)m(y)f(m)m(ultiple)227 2652 y(pro)s(cesses.)64 b(Di\013eren)m(t)40 b(threads)e(should)f(not)i (share)f(the)g(same)h('\014ts\014le')f(p)s(oin)m(ter)g(to)h(read)g(an)f -(op)s(ened)227 2016 y(FITS)25 b(\014le,)i(unless)e(lo)s(c)m(ks)h(are)g +(op)s(ened)227 2765 y(FITS)25 b(\014le,)i(unless)e(lo)s(c)m(ks)h(are)g (placed)g(around)e(the)i(calls)g(to)g(the)g(CFITSIO)e(reading)i -(routines.)39 b(Di\013eren)m(t)227 2129 y(threads)30 +(routines.)39 b(Di\013eren)m(t)227 2878 y(threads)30 b(should)g(nev)m(er)g(try)h(to)g(write)f(to)h(the)g(same)g(FITS)e -(\014le.)136 2323 y Fc(\017)46 b Fj(Multiple)31 b(read)g(access)g(to)h +(\014le.)136 3059 y Fc(\017)46 b Fj(Multiple)31 b(read)g(access)g(to)h (the)e(same)h(FITS)e(\014le)i(within)f(a)h(single)g(program/thread)227 -2476 y(A)46 b(single)g(pro)s(cess)f(ma)m(y)h(op)s(en)f(the)g(same)h +3206 y(A)46 b(single)g(pro)s(cess)f(ma)m(y)h(op)s(en)f(the)g(same)h (FITS)f(\014le)g(with)g(READONL)-8 b(Y)46 b(access)h(m)m(ultiple)f -(times,)227 2589 y(and)32 b(th)m(us)f(create)j(m)m(ultiple)f +(times,)227 3319 y(and)32 b(th)m(us)f(create)j(m)m(ultiple)f ('\014ts\014le*')g(p)s(oin)m(ters)f(to)g(that)h(same)g(\014le)f(within) -f(CFITSIO.)g(This)g(relies)i(on)227 2702 y(the)h(op)s(erating)g +f(CFITSIO.)g(This)g(relies)i(on)227 3432 y(the)h(op)s(erating)g (system's)g(abilit)m(y)h(to)g(op)s(en)e(a)h(single)g(\014le)g(m)m (ultiple)g(times)g(and)f(correctly)i(manage)g(the)227 -2815 y(subsequen)m(t)24 b(read)g(requests)g(directed)g(to)h(the)f +3545 y(subsequen)m(t)24 b(read)g(requests)g(directed)g(to)h(the)f (di\013eren)m(t)h(C)f('\014le*')h(p)s(oin)m(ters,)g(whic)m(h)f -(actually)i(all)f(p)s(oin)m(t)f(to)227 2928 y(the)32 +(actually)i(all)f(p)s(oin)m(t)f(to)227 3658 y(the)32 b(same)h(\014le.)45 b(CFITSIO)30 b(simply)i(executes)h(the)f(read)g (requests)g(to)g(the)g(di\013ernet)g('\014ts\014le*')h(p)s(oin)m(ters) -227 3041 y(the)e(same)g(as)f(if)h(they)f(w)m(ere)h(ph)m(ysically)g -(di\013eren)m(t)g(\014les.)136 3234 y Fc(\017)46 b Fj(Multiple)31 +227 3771 y(the)e(same)g(as)f(if)h(they)f(w)m(ere)h(ph)m(ysically)g +(di\013eren)m(t)g(\014les.)136 3952 y Fc(\017)46 b Fj(Multiple)31 b(write)g(access)h(to)f(the)f(same)h(FITS)f(\014le)g(within)g(a)h -(single)g(program/thread)227 3388 y(CFITSIO)22 b(supp)s(orts)g(op)s +(single)g(program/thread)227 4099 y(CFITSIO)22 b(supp)s(orts)g(op)s (ening)h(the)g(same)h(FITS)f(\014le)g(m)m(ultiple)i(times)f(with)f -(WRITE)g(access,)j(but)d(it)h(only)227 3500 y(ph)m(ysically)j(op)s(ens) +(WRITE)g(access,)j(but)d(it)h(only)227 4212 y(ph)m(ysically)j(op)s(ens) f(the)g(\014le)h(\(at)g(the)g(op)s(erating)f(system)h(lev)m(el\))h (once,)g(on)e(the)h(\014rst)e(call)j(to)f(\014ts)p 3509 -3500 V 32 w(op)s(en)p 3731 3500 V 33 w(\014le.)227 3613 -y(If)38 b(\014ts)p 453 3613 V 32 w(op)s(en)p 675 3613 +4212 V 32 w(op)s(en)p 3731 4212 V 33 w(\014le.)227 4325 +y(If)38 b(\014ts)p 453 4325 V 32 w(op)s(en)p 675 4325 V 32 w(\014le)g(is)g(subsequen)m(tly)f(called)i(to)g(op)s(en)e(the)h (same)g(\014le)g(again,)j(CFITSIO)36 b(will)i(recognize)227 -3726 y(that)c(the)f(\014le)g(is)g(already)g(op)s(en,)h(and)e(will)h +4438 y(that)c(the)f(\014le)g(is)g(already)g(op)s(en,)h(and)e(will)h (return)f(a)h(new)g('\014ts\014le*')g(p)s(oin)m(ter)g(that)h(logically) -h(p)s(oin)m(ts)e(to)227 3839 y(the)i(\014rst)e('\014ts\014le*')i(p)s +h(p)s(oin)m(ts)e(to)227 4551 y(the)i(\014rst)e('\014ts\014le*')i(p)s (oin)m(ter,)h(without)e(actually)i(op)s(ening)e(the)g(\014le)h(a)f -(second)h(time.)53 b(The)34 b(application)227 3952 y(program)39 +(second)h(time.)53 b(The)34 b(application)227 4664 y(program)39 b(can)g(then)g(treat)h(the)f(2)g('\014ts\014le*')h(p)s(oin)m(ters)f(as) g(if)g(they)g(p)s(oin)m(t)g(to)h(di\013eren)m(t)f(\014les,)i(and)e(can) -227 4065 y(seemingly)c(mo)m(v)m(e)g(to)g(and)e(write)h(data)h(to)g(2)f +227 4776 y(seemingly)c(mo)m(v)m(e)g(to)g(and)e(write)h(data)h(to)g(2)f (di\013eren)m(t)g(HDUs)h(within)e(the)h(same)g(\014le.)52 -b(Ho)m(w)m(ev)m(er,)37 b(eac)m(h)227 4178 y(time)31 b(the)g +b(Ho)m(w)m(ev)m(er,)37 b(eac)m(h)227 4889 y(time)31 b(the)g (application)g(program)g(switc)m(hes)g(whic)m(h)f('\014ts\014le*')h(p)s (oin)m(ter)f(it)h(is)f(writing)h(to,)g(CFITSIO)e(will)227 -4291 y(\015ush)24 b(an)m(y)i(in)m(ternal)g(bu\013ers)e(that)i(con)m +5002 y(\015ush)24 b(an)m(y)i(in)m(ternal)g(bu\013ers)e(that)i(con)m (tain)h(data)f(written)g(to)g(the)g(\014rst)e('\014ts\014le*')i(p)s -(oin)m(ter,)h(then)e(mo)m(v)m(e)i(to)227 4404 y(the)j(HDU)g(that)g(the) +(oin)m(ter,)h(then)e(mo)m(v)m(e)i(to)227 5115 y(the)j(HDU)g(that)g(the) g(other)f('\014ts\014le*')h(p)s(oin)m(ter)g(is)f(writing)h(to.)41 b(Ob)m(viously)-8 b(,)30 b(this)f(ma)m(y)h(add)f(a)h(signi\014can)m(t) -227 4517 y(amoun)m(t)h(of)f(computational)i(o)m(v)m(erhead)f(if)f(the)g +227 5228 y(amoun)m(t)h(of)f(computational)i(o)m(v)m(erhead)f(if)f(the)g (application)h(program)f(uses)g(this)g(feature)g(to)h(frequen)m(tly)227 -4630 y(switc)m(h)25 b(bac)m(k)h(and)e(forth)g(b)s(et)m(w)m(een)i +5341 y(switc)m(h)25 b(bac)m(k)h(and)e(forth)g(b)s(et)m(w)m(een)i (writing)f(to)g(2)g(\(or)g(more\))g(HDUs)h(in)e(the)h(same)g(\014le,)h -(so)f(this)g(capabilit)m(y)227 4742 y(should)30 b(b)s(e)f(used)h -(judiciously)-8 b(.)227 4896 y(Note)26 b(that)f(CFITSIO)e(will)i(not)g +(so)f(this)g(capabilit)m(y)227 5454 y(should)30 b(b)s(e)f(used)h +(judiciously)-8 b(.)227 5601 y(Note)26 b(that)f(CFITSIO)e(will)i(not)g (allo)m(w)h(a)e(FITS)g(\014le)h(to)g(b)s(e)f(op)s(ened)g(a)g(second)h -(time)g(with)f(READ)m(WRITE)227 5009 y(access)32 b(if)e(it)h(w)m(as)g -(op)s(ened)f(previously)g(with)g(READONL)-8 b(Y)31 b(access.)0 -5170 y -SDict begin H.S end - 0 5170 a 0 5170 a -SDict begin 13.6 H.A end - 0 5170 a 0 5170 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.12) cvn /DEST pdfmark -end - 0 5170 a 179 -x Ff(4.12)136 b(When)44 b(the)h(Final)h(Size)f(of)g(the)g(FITS)f(HDU)h -(is)g(Unkno)l(wn)0 5601 y Fj(It)27 b(is)h(not)f(required)f(to)i(kno)m -(w)f(the)h(total)h(size)f(of)f(a)h(FITS)e(data)i(arra)m(y)g(or)f(table) -h(b)s(efore)f(b)s(eginning)f(to)i(write)g(the)0 5714 -y(data)k(to)f(the)g(FITS)f(\014le.)43 b(In)30 b(the)h(case)h(of)f(the)g -(primary)f(arra)m(y)h(or)g(an)f(image)j(extension,)e(one)h(should)d -(initially)p eop end +(time)g(with)f(READ)m(WRITE)227 5714 y(access)32 b(if)e(it)h(w)m(as)g +(op)s(ened)f(previously)g(with)g(READONL)-8 b(Y)31 b(access.)p +eop end %%Page: 28 36 -TeXDict begin 28 35 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.28) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(28)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 -555 y Fj(create)f(the)e(arra)m(y)h(with)e(the)i(size)g(of)f(the)g +TeXDict begin 28 35 bop 0 299 a Fj(28)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Ff(4.12)136 +b(When)44 b(the)h(Final)h(Size)f(of)g(the)g(FITS)f(HDU)h(is)g(Unkno)l +(wn)0 816 y Fj(It)27 b(is)h(not)f(required)f(to)i(kno)m(w)f(the)h +(total)h(size)f(of)f(a)h(FITS)e(data)i(arra)m(y)g(or)f(table)h(b)s +(efore)f(b)s(eginning)f(to)i(write)g(the)0 928 y(data)k(to)f(the)g +(FITS)f(\014le.)43 b(In)30 b(the)h(case)h(of)f(the)g(primary)f(arra)m +(y)h(or)g(an)f(image)j(extension,)e(one)h(should)d(initially)0 +1041 y(create)i(the)e(arra)m(y)h(with)e(the)i(size)g(of)f(the)g (highest)g(dimension)g(\(largest)i(NAXISn)d(k)m(eyw)m(ord\))i(set)g(to) -g(a)f(dumm)m(y)0 668 y(v)-5 b(alue,)26 b(suc)m(h)e(as)g(1.)39 +g(a)f(dumm)m(y)0 1154 y(v)-5 b(alue,)26 b(suc)m(h)e(as)g(1.)39 b(Then)23 b(after)i(all)g(the)g(data)f(ha)m(v)m(e)i(b)s(een)d(written)h (and)g(the)g(true)g(dimensions)g(are)g(kno)m(wn,)h(then)0 -781 y(the)33 b(NAXISn)f(v)-5 b(alue)33 b(should)f(b)s(e)g(up)s(dated)g -(using)g(the)h(\014ts)p 2069 781 28 4 v 33 w(up)s(date)p -2378 781 V 32 w(k)m(ey)g(routine)g(b)s(efore)g(mo)m(ving)g(to)h -(another)0 894 y(extension)d(or)f(closing)i(the)e(FITS)g(\014le.)0 -1054 y(When)f(writing)g(to)g(FITS)g(tables,)h(CFITSIO)d(automatically) +1267 y(the)33 b(NAXISn)f(v)-5 b(alue)33 b(should)f(b)s(e)g(up)s(dated)g +(using)g(the)h(\014ts)p 2069 1267 28 4 v 33 w(up)s(date)p +2378 1267 V 32 w(k)m(ey)g(routine)g(b)s(efore)g(mo)m(ving)g(to)h +(another)0 1380 y(extension)d(or)f(closing)i(the)e(FITS)g(\014le.)0 +1540 y(When)f(writing)g(to)g(FITS)g(tables,)h(CFITSIO)d(automatically) 32 b(k)m(eeps)e(trac)m(k)g(of)f(the)g(highest)h(ro)m(w)f(n)m(um)m(b)s -(er)e(that)0 1167 y(is)32 b(written)g(to,)h(and)e(will)h(increase)h +(er)e(that)0 1653 y(is)32 b(written)g(to,)h(and)e(will)h(increase)h (the)f(size)h(of)f(the)g(table)g(if)g(necessary)-8 b(.)46 -b(CFITSIO)30 b(will)i(also)h(automatically)0 1280 y(insert)j(space)h +b(CFITSIO)30 b(will)i(also)h(automatically)0 1766 y(insert)j(space)h (in)f(the)g(FITS)f(\014le)i(if)f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f(data)h('heap',)h(if)e(it)h(exists,)h -(and/or)f(an)m(y)0 1393 y(additional)29 b(HDUs)g(that)g(follo)m(w)g +(and/or)f(an)m(y)0 1879 y(additional)29 b(HDUs)g(that)g(follo)m(w)g (the)g(table)g(do)f(not)h(get)g(o)m(v)m(erwritten)h(as)e(new)g(ro)m(ws) -g(are)h(written)f(to)h(the)g(table.)0 1553 y(As)37 b(a)h(general)g +g(are)h(written)f(to)h(the)g(table.)0 2039 y(As)37 b(a)h(general)g (rule)f(it)h(is)f(b)s(est)g(to)h(sp)s(ecify)f(the)h(initial)g(n)m(um)m (b)s(er)e(of)i(ro)m(ws)f(=)g(0)g(when)g(the)g(table)h(is)g(created,)0 -1666 y(then)g(let)h(CFITSIO)e(k)m(eep)i(trac)m(k)g(of)g(the)f(n)m(um)m +2152 y(then)g(let)h(CFITSIO)e(k)m(eep)i(trac)m(k)g(of)g(the)f(n)m(um)m (b)s(er)f(of)i(ro)m(ws)f(that)h(are)f(actually)i(written.)65 -b(The)38 b(application)0 1779 y(program)e(should)f(not)i(man)m(ually)g +b(The)38 b(application)0 2265 y(program)e(should)f(not)i(man)m(ually)g (up)s(date)e(the)i(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(in)g(the)h(table)g -(\(as)g(giv)m(en)g(b)m(y)f(the)h(NAXIS2)0 1892 y(k)m(eyw)m(ord\))j +(\(as)g(giv)m(en)g(b)m(y)f(the)h(NAXIS2)0 2378 y(k)m(eyw)m(ord\))j (since)f(CFITSIO)e(do)s(es)i(this)g(automatically)-8 b(.)69 b(If)38 b(a)i(table)f(is)g(initially)i(created)f(with)e(more)h -(than)0 2005 y(zero)i(ro)m(ws,)j(then)c(this)h(will)f(usually)h(b)s(e)f +(than)0 2491 y(zero)i(ro)m(ws,)j(then)c(this)h(will)f(usually)h(b)s(e)f (considered)g(as)h(the)g(minim)m(um)f(size)h(of)g(the)g(table,)j(ev)m -(en)d(if)g(few)m(er)0 2118 y(ro)m(ws)30 b(are)g(actually)h(written)f +(en)d(if)g(few)m(er)0 2604 y(ro)m(ws)30 b(are)g(actually)h(written)f (to)h(the)f(table.)41 b(Th)m(us,)30 b(if)f(a)i(table)f(is)g(initially)h -(created)g(with)f(NAXIS2)g(=)g(20,)h(and)0 2230 y(CFITSIO)g(only)i +(created)g(with)f(NAXIS2)g(=)g(20,)h(and)0 2717 y(CFITSIO)g(only)i (writes)f(10)i(ro)m(ws)e(of)h(data)g(b)s(efore)f(closing)i(the)f (table,)h(then)e(NAXIS2)h(will)g(remain)f(equal)h(to)0 -2343 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)e(of)g(data)h +2829 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)e(of)g(data)h (are)g(written)f(to)h(this)f(table,)i(then)e(NAXIS2)h(will)f(b)s(e)g -(increased)g(from)g(20)0 2456 y(to)f(30.)44 b(The)31 +(increased)g(from)g(20)0 2942 y(to)f(30.)44 b(The)31 b(one)g(exception)i(to)f(this)f(automatic)i(up)s(dating)d(of)h(the)h (NAXIS2)f(k)m(eyw)m(ord)h(is)f(if)g(the)h(application)0 -2569 y(program)c(directly)g(mo)s(di\014es)f(the)i(v)-5 +3055 y(program)c(directly)g(mo)s(di\014es)f(the)i(v)-5 b(alue)28 b(of)g(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)h(just)e(b)s -(efore)h(closing)h(the)f(table.)41 b(In)0 2682 y(this)28 +(efore)h(closing)h(the)f(table.)41 b(In)0 3168 y(this)28 b(case,)i(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)h (since)f(it)g(assumes)f(that)h(the)f(application)i(program)0 -2795 y(m)m(ust)i(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f(c)m +3281 y(m)m(ust)i(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f(c)m (hanging)h(the)f(v)-5 b(alue)33 b(directly)-8 b(.)47 b(This)31 b(is)h(not)h(recommended,)f(ho)m(w)m(ev)m(er,)0 -2908 y(and)j(is)h(only)g(pro)m(vided)g(for)f(bac)m(kw)m(ard)h +3394 y(and)j(is)h(only)g(pro)m(vided)g(for)f(bac)m(kw)m(ard)h (compatibilit)m(y)i(with)e(soft)m(w)m(are)h(that)g(initially)g(creates) -g(a)f(table)h(with)0 3021 y(a)d(large)h(n)m(um)m(b)s(er)e(of)h(ro)m +g(a)f(table)h(with)0 3507 y(a)d(large)h(n)m(um)m(b)s(er)e(of)h(ro)m (ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 b(alue)34 b(to)h(the)f(actual)h(smaller)g(v)-5 b(alue)34 b(just)f(b)s(efore)0 -3134 y(closing)e(the)g(table.)0 3368 y -SDict begin H.S end - 0 3368 a 0 3368 -a -SDict begin 13.6 H.A end - 0 3368 a 0 3368 a -SDict begin [/View [/XYZ H.V]/Dest (section.4.13) cvn /DEST pdfmark -end - 0 3368 a 179 x Ff(4.13)136 b(CFITSIO)44 -b(Size)h(Limitations)0 3813 y Fj(CFITSIO)29 b(places)j(v)m(ery)f(few)g +3620 y(closing)e(the)g(table.)0 4004 y Ff(4.13)136 b(CFITSIO)44 +b(Size)h(Limitations)0 4264 y Fj(CFITSIO)29 b(places)j(v)m(ery)f(few)g (restrictions)g(on)g(the)g(size)g(of)g(FITS)f(\014les)h(that)g(it)h -(reads)e(or)h(writes.)42 b(There)30 b(are)i(a)0 3926 +(reads)e(or)h(writes.)42 b(There)30 b(are)i(a)0 4377 y(few)e(limits,)h(ho)m(w)m(ev)m(er,)h(that)f(ma)m(y)g(a\013ect)h(some)f -(extreme)g(cases:)0 4086 y(1.)43 b(The)31 b(maxim)m(um)g(n)m(um)m(b)s +(extreme)g(cases:)0 4538 y(1.)43 b(The)31 b(maxim)m(um)g(n)m(um)m(b)s (er)f(of)h(FITS)f(\014les)h(that)h(ma)m(y)g(b)s(e)e(sim)m(ultaneously)i -(op)s(ened)f(b)m(y)g(CFITSIO)e(is)i(set)h(b)m(y)0 4199 +(op)s(ened)f(b)m(y)g(CFITSIO)e(is)i(set)h(b)m(y)0 4650 y(NMAXFILES,)e(as)f(de\014ned)f(in)h(\014tsio2.h.)41 b(The)29 b(curren)m(t)g(default)g(v)-5 b(alue)30 b(is)f(1000,)j(but)c -(this)h(ma)m(y)h(b)s(e)f(increased)0 4312 y(if)40 b(necessary)-8 +(this)h(ma)m(y)h(b)s(e)f(increased)0 4763 y(if)40 b(necessary)-8 b(.)72 b(Note)42 b(that)f(CFITSIO)e(allo)s(cates)j(NIOBUF)f(*)g(2880)h (b)m(ytes)f(of)g(I/O)f(bu\013er)g(space)h(for)f(eac)m(h)0 -4425 y(\014le)d(that)h(is)f(op)s(ened.)61 b(The)37 b(default)g(v)-5 +4876 y(\014le)d(that)h(is)f(op)s(ened.)61 b(The)37 b(default)g(v)-5 b(alue)38 b(of)f(NIOBUF)h(is)f(40)h(\(de\014ned)f(in)f(\014tsio.h\),)k -(so)e(this)f(amoun)m(ts)g(to)0 4538 y(more)31 b(than)g(115K)i(of)e +(so)e(this)f(amoun)m(ts)g(to)0 4989 y(more)31 b(than)g(115K)i(of)e (memory)g(for)g(eac)m(h)i(op)s(ened)d(\014le)i(\(or)f(115)i(MB)f(for)f (1000)i(op)s(ened)d(\014les\).)44 b(Note)33 b(that)f(the)0 -4650 y(underlying)k(op)s(erating)i(system,)h(ma)m(y)e(ha)m(v)m(e)i(a)e +5102 y(underlying)k(op)s(erating)i(system,)h(ma)m(y)e(ha)m(v)m(e)i(a)e (lo)m(w)m(er)i(limit)f(on)f(the)g(n)m(um)m(b)s(er)f(of)h(\014les)g -(that)h(can)f(b)s(e)g(op)s(ened)0 4763 y(sim)m(ultaneously)-8 -b(.)0 4924 y(2.)67 b(It)40 b(used)e(to)i(b)s(e)e(common)i(for)f +(that)h(can)f(b)s(e)g(op)s(ened)0 5215 y(sim)m(ultaneously)-8 +b(.)0 5375 y(2.)67 b(It)40 b(used)e(to)i(b)s(e)e(common)i(for)f (computer)g(systems)g(to)h(only)f(supp)s(ort)f(disk)g(\014les)h(up)f -(to)i(2**31)i(b)m(ytes)d(=)0 5036 y(2.1)k(GB)g(in)f(size,)47 +(to)i(2**31)i(b)m(ytes)d(=)0 5488 y(2.1)k(GB)g(in)f(size,)47 b(but)41 b(most)i(systems)f(no)m(w)g(supp)s(ort)f(larger)i(\014les.)76 -b(CFITSIO)41 b(can)i(optionally)g(read)g(and)0 5149 y(write)37 +b(CFITSIO)41 b(can)i(optionally)g(read)g(and)0 5601 y(write)37 b(these)h(so-called)h('large)f(\014les')g(that)f(are)h(greater)g(than)f (2.1)h(GB)g(on)f(platforms)g(where)g(they)g(are)h(sup-)0 -5262 y(p)s(orted,)43 b(but)d(this)g(usually)h(requires)f(that)i(sp)s +5714 y(p)s(orted,)43 b(but)d(this)g(usually)h(requires)f(that)i(sp)s (ecial)f(compiler)g(option)g(\015ags)g(b)s(e)f(sp)s(eci\014ed)g(to)i -(turn)d(on)i(this)0 5375 y(option.)69 b(On)39 b(lin)m(ux)h(and)f -(solaris)i(systems)f(the)g(compiler)g(\015ags)g(are)g('-D)p -2617 5375 28 4 v 34 w(LAR)m(GEFILE)p 3184 5375 V 33 w(SOUR)m(CE')f(and) -g(`-)0 5488 y(D)p 74 5488 V 33 w(FILE)p 318 5488 V 33 -w(OFFSET)p 719 5488 V 32 w(BITS=64'.)i(These)29 b(\015ags)h(ma)m(y)g -(also)h(w)m(ork)f(on)g(other)g(platforms)f(but)g(this)h(has)g(not)g(b)s -(een)0 5601 y(tested.)43 b(Starting)31 b(with)f(v)m(ersion)h(3.0)h(of)f +(turn)d(on)i(this)p eop end +%%Page: 29 37 +TeXDict begin 29 36 bop 0 299 a Fh(4.13.)73 b(CFITSIO)28 +b(SIZE)h(LIMIT)-8 b(A)g(TIONS)2300 b Fj(29)0 555 y(option.)69 +b(On)39 b(lin)m(ux)h(and)f(solaris)i(systems)f(the)g(compiler)g +(\015ags)g(are)g('-D)p 2617 555 28 4 v 34 w(LAR)m(GEFILE)p +3184 555 V 33 w(SOUR)m(CE')f(and)g(`-)0 668 y(D)p 74 +668 V 33 w(FILE)p 318 668 V 33 w(OFFSET)p 719 668 V 32 +w(BITS=64'.)i(These)29 b(\015ags)h(ma)m(y)g(also)h(w)m(ork)f(on)g +(other)g(platforms)f(but)g(this)h(has)g(not)g(b)s(een)0 +781 y(tested.)43 b(Starting)31 b(with)f(v)m(ersion)h(3.0)h(of)f (CFITSIO,)f(the)h(default)f(Mak)m(e\014le)j(that)e(is)g(distributed)f -(with)g(CFIT-)0 5714 y(SIO)h(will)h(include)g(these)g(2)g(compiler)h +(with)g(CFIT-)0 894 y(SIO)h(will)h(include)g(these)g(2)g(compiler)h (\015ags)f(when)e(building)h(on)h(Solaris)g(and)g(Lin)m(ux)f(PC)g -(systems.)45 b(Users)32 b(on)p eop end -%%Page: 29 37 -TeXDict begin 29 36 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.29) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(4.13.)73 -b(CFITSIO)28 b(SIZE)h(LIMIT)-8 b(A)g(TIONS)2300 b Fj(29)0 -555 y(other)32 b(platforms)g(will)g(need)f(to)i(add)e(these)h(compiler) -h(\015ags)f(man)m(ually)g(if)g(they)g(w)m(an)m(t)g(to)h(supp)s(ort)d -(large)j(\014les.)0 668 y(In)j(most)i(cases)g(it)g(app)s(ears)e(that)i -(it)g(is)f(not)h(necessary)f(to)h(include)f(these)h(compiler)g(\015ags) -f(when)f(compiling)0 781 y(application)c(co)s(de)e(that)h(call)h(the)e -(CFITSIO)f(library)h(routines.)0 941 y(When)i(CFITSIO)e(is)i(built)g -(with)g(large)h(\014le)f(supp)s(ort)e(\(e.g.,)35 b(on)d(Solaris)g(and)f -(Lin)m(ux)h(PC)f(system)h(b)m(y)g(default\))0 1054 y(then)e(it)h(can)g -(read)f(and)g(write)g(FITS)g(data)h(\014les)f(on)h(disk)e(that)i(ha)m -(v)m(e)h(an)m(y)f(of)f(these)h(conditions:)136 1314 y -Fc(\017)46 b Fj(FITS)30 b(\014les)g(larger)h(than)f(2.1)i(GB)f(in)f -(size)136 1501 y Fc(\017)46 b Fj(FITS)30 b(images)h(con)m(taining)h -(greater)g(than)e(2.1)h(G)g(pixels)136 1689 y Fc(\017)46 -b Fj(FITS)34 b(images)i(that)g(ha)m(v)m(e)g(one)f(dimension)f(with)g -(more)h(than)g(2.1)h(G)f(pixels)g(\(as)g(giv)m(en)h(b)m(y)f(one)g(of)g -(the)227 1802 y(NAXISn)30 b(k)m(eyw)m(ord\))136 1990 -y Fc(\017)46 b Fj(FITS)26 b(tables)h(con)m(taining)g(more)g(than)f -(2.1E09)i(ro)m(ws)e(\(giv)m(en)i(b)m(y)e(the)g(NAXIS2)h(k)m(eyw)m -(ord\),)h(or)e(with)g(ro)m(ws)227 2103 y(that)31 b(are)g(more)g(than)f -(2.1)h(GB)g(wide)f(\(giv)m(en)i(b)m(y)e(the)h(NAXIS1)f(k)m(eyw)m(ord\)) -136 2290 y Fc(\017)46 b Fj(FITS)36 b(binary)f(tables)i(with)f(a)h(v)-5 +(systems.)45 b(Users)32 b(on)0 1007 y(other)g(platforms)g(will)g(need)f +(to)i(add)e(these)h(compiler)h(\015ags)f(man)m(ually)g(if)g(they)g(w)m +(an)m(t)g(to)h(supp)s(ort)d(large)j(\014les.)0 1120 y(In)j(most)i +(cases)g(it)g(app)s(ears)e(that)i(it)g(is)f(not)h(necessary)f(to)h +(include)f(these)h(compiler)g(\015ags)f(when)f(compiling)0 +1233 y(application)c(co)s(de)e(that)h(call)h(the)e(CFITSIO)f(library)h +(routines.)0 1393 y(When)i(CFITSIO)e(is)i(built)g(with)g(large)h +(\014le)f(supp)s(ort)e(\(e.g.,)35 b(on)d(Solaris)g(and)f(Lin)m(ux)h(PC) +f(system)h(b)m(y)g(default\))0 1506 y(then)e(it)h(can)g(read)f(and)g +(write)g(FITS)g(data)h(\014les)f(on)h(disk)e(that)i(ha)m(v)m(e)h(an)m +(y)f(of)f(these)h(conditions:)136 1766 y Fc(\017)46 b +Fj(FITS)30 b(\014les)g(larger)h(than)f(2.1)i(GB)f(in)f(size)136 +1953 y Fc(\017)46 b Fj(FITS)30 b(images)h(con)m(taining)h(greater)g +(than)e(2.1)h(G)g(pixels)136 2141 y Fc(\017)46 b Fj(FITS)34 +b(images)i(that)g(ha)m(v)m(e)g(one)f(dimension)f(with)g(more)h(than)g +(2.1)h(G)f(pixels)g(\(as)g(giv)m(en)h(b)m(y)f(one)g(of)g(the)227 +2254 y(NAXISn)30 b(k)m(eyw)m(ord\))136 2441 y Fc(\017)46 +b Fj(FITS)26 b(tables)h(con)m(taining)g(more)g(than)f(2.1E09)i(ro)m(ws) +e(\(giv)m(en)i(b)m(y)e(the)g(NAXIS2)h(k)m(eyw)m(ord\),)h(or)e(with)g +(ro)m(ws)227 2554 y(that)31 b(are)g(more)g(than)f(2.1)h(GB)g(wide)f +(\(giv)m(en)i(b)m(y)e(the)h(NAXIS1)f(k)m(eyw)m(ord\))136 +2742 y Fc(\017)46 b Fj(FITS)36 b(binary)f(tables)i(with)f(a)h(v)-5 b(ariable-length)38 b(arra)m(y)f(heap)f(that)h(is)f(larger)h(than)f -(2.1)h(GB)g(\(giv)m(en)h(b)m(y)227 2403 y(the)31 b(PCOUNT)e(k)m(eyw)m -(ord\))0 2663 y(The)c(curren)m(t)g(maxim)m(um)g(FITS)f(\014le)h(size)h +(2.1)h(GB)g(\(giv)m(en)h(b)m(y)227 2855 y(the)31 b(PCOUNT)e(k)m(eyw)m +(ord\))0 3115 y(The)c(curren)m(t)g(maxim)m(um)g(FITS)f(\014le)h(size)h (supp)s(orted)e(b)m(y)h(CFITSIO)e(is)j(ab)s(out)f(6)g(terab)m(ytes)i -(\(con)m(taining)g(2**31)0 2776 y(FITS)d(blo)s(c)m(ks,)i(eac)m(h)g +(\(con)m(taining)g(2**31)0 3227 y(FITS)d(blo)s(c)m(ks,)i(eac)m(h)g (2880)h(b)m(ytes)e(in)f(size\).)40 b(Curren)m(tly)-8 b(,)26 b(supp)s(ort)d(for)i(large)g(\014les)g(in)g(CFITSIO)e(has)h(b)s -(een)g(tested)0 2889 y(on)30 b(the)h(Lin)m(ux,)f(Solaris,)h(and)f(IBM)g -(AIX)h(op)s(erating)g(systems.)0 3049 y(Note)26 b(that)f(when)e +(een)g(tested)0 3340 y(on)30 b(the)h(Lin)m(ux,)f(Solaris,)h(and)f(IBM)g +(AIX)h(op)s(erating)g(systems.)0 3501 y(Note)26 b(that)f(when)e (writing)h(application)i(programs)e(that)h(are)f(in)m(tended)g(to)h (supp)s(ort)e(large)i(\014les)g(it)f(is)h(imp)s(ortan)m(t)0 -3162 y(to)31 b(use)g(64-bit)g(in)m(teger)h(v)-5 b(ariables)31 +3613 y(to)31 b(use)g(64-bit)g(in)m(teger)h(v)-5 b(ariables)31 b(to)h(store)f(quan)m(tities)h(suc)m(h)e(as)h(the)f(dimensions)g(of)h -(images,)h(or)f(the)f(n)m(um)m(b)s(er)0 3275 y(of)38 +(images,)h(or)f(the)f(n)m(um)m(b)s(er)0 3726 y(of)38 b(ro)m(ws)f(in)h(a)g(table.)63 b(These)38 b(programs)f(m)m(ust)g(also)i (call)g(the)f(sp)s(ecial)g(v)m(ersions)g(of)g(some)g(of)g(the)f -(CFITSIO)0 3388 y(routines)28 b(that)h(ha)m(v)m(e)h(b)s(een)d(adapted)i +(CFITSIO)0 3839 y(routines)28 b(that)h(ha)m(v)m(e)h(b)s(een)d(adapted)i (to)g(supp)s(ort)e(64-bit)i(in)m(tegers.)42 b(The)27 -b(names)i(of)f(these)h(routines)f(end)g(in)g('ll')0 3501 +b(names)i(of)f(these)h(routines)f(end)g(in)g('ll')0 3952 y(\('el')k('el'\))g(to)f(distinguish)e(them)i(from)f(the)g(32-bit)i(in) -m(teger)g(v)m(ersion)e(\(e.g.,)j(\014ts)p 2766 3501 28 -4 v 32 w(get)p 2918 3501 V 34 w(n)m(um)p 3127 3501 V -32 w(ro)m(wsll\).)p eop end -%%Page: 30 38 -TeXDict begin 30 37 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.30) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(30)1763 -b Fh(CHAPTER)29 b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)p +m(teger)g(v)m(ersion)e(\(e.g.,)j(\014ts)p 2766 3952 V +32 w(get)p 2918 3952 V 34 w(n)m(um)p 3127 3952 V 32 w(ro)m(wsll\).)p eop end +%%Page: 30 38 +TeXDict begin 30 37 bop 0 299 a Fj(30)1763 b Fh(CHAPTER)29 +b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)p eop end %%Page: 31 39 -TeXDict begin 31 38 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.31) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.5) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(5)0 +TeXDict begin 31 38 bop 0 1225 a Fg(Chapter)65 b(5)0 1687 y Fm(Basic)77 b(CFITSIO)f(In)-6 b(terface)77 b(Routines)0 2180 y Fj(This)30 b(c)m(hapter)i(describ)s(es)e(the)i(basic)f(routines) g(in)g(the)g(CFITSIO)e(user)i(in)m(terface)h(that)g(pro)m(vide)f(all)h @@ -9448,15 +7163,7 @@ b(v)-5 b(alue)27 b(indicates)i(that)e(an)g(error)g(o)s(ccurred)g(in)g (the)g(function.)39 b(In)27 b(most)g(cases)h(the)g(status)f(v)-5 b(alue)28 b(is)f(also)0 4608 y(returned)i(as)i(the)f(v)-5 -b(alue)31 b(of)g(the)f(function)g(itself.)0 4739 y -SDict begin H.S end - 0 -4739 a 0 4739 a -SDict begin 13.6 H.A end - 0 4739 a 0 4739 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.1) cvn /DEST pdfmark -end - 0 4739 a 196 x Ff(5.1)135 +b(alue)31 b(of)g(the)f(function)g(itself.)0 4935 y Ff(5.1)135 b(CFITSIO)44 b(Error)h(Status)h(Routines)0 5168 y Fi(1)81 b Fj(Return)27 b(a)j(descriptiv)m(e)f(text)h(string)e(\(30)i(c)m(har)f (max.\))41 b(corresp)s(onding)28 b(to)h(a)g(CFITSIO)e(error)h(status)h @@ -9468,24 +7175,12 @@ (on)f(the)g(stac)m(k)h(up)e(one)h(lev)m(el.)83 b(Call)44 b(this)g(routine)1905 5942 y(31)p eop end %%Page: 32 40 -TeXDict begin 32 39 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.32) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(32)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(rep)s(eatedly)c(to)h(get)g(eac)m -(h)g(message)f(in)g(sequence.)39 b(The)26 b(function)f(returns)g(a)h(v) --5 b(alue)26 b(=)f(0)h(and)g(a)g(n)m(ull)f(error)227 -668 y(message)32 b(when)d(the)i(error)f(stac)m(k)i(is)e(empt)m(y)-8 +TeXDict begin 32 39 bop 0 299 a Fj(32)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(rep)s(eatedly)c(to)h(get)g(eac)m(h)g +(message)f(in)g(sequence.)39 b(The)26 b(function)f(returns)g(a)h(v)-5 +b(alue)26 b(=)f(0)h(and)g(a)g(n)m(ull)f(error)227 668 +y(message)32 b(when)d(the)i(error)f(stac)m(k)i(is)e(empt)m(y)-8 b(.)95 940 y Fe(int)47 b(fits_read_errmsg)d(/)j(ffgmsg)f(\(char)h (*err_msg\))0 1211 y Fi(3)81 b Fj(Prin)m(t)30 b(out)h(the)g(error)f (message)i(corresp)s(onding)e(to)h(the)g(input)f(status)h(v)-5 @@ -9510,15 +7205,7 @@ (an)m(y)f(argumen)m(ts.)95 2704 y Fe(void)47 b(fits_write_errmark)c(/)k (ffpmrk)f(\(void\))95 2817 y(void)h(fits_clear_errmark)c(/)k(ffcmrk)f (\(void\))95 2930 y(void)h(fits_clear_errmsg)c(/)48 b(ffcmsg)e -(\(void\))0 3101 y -SDict begin H.S end - 0 3101 a 0 3101 a -SDict begin 13.6 H.A end - 0 3101 a 0 3101 -a -SDict begin [/View [/XYZ H.V]/Dest (section.5.2) cvn /DEST pdfmark -end - 0 3101 a 177 x Ff(5.2)135 b(FITS)44 b(File)i(Access)e(Routines)0 +(\(void\))0 3278 y Ff(5.2)135 b(FITS)44 b(File)i(Access)e(Routines)0 3527 y Fi(1)81 b Fj(Op)s(en)29 b(an)h(existing)h(data)g(\014le.)227 3794 y Fe(int)47 b(fits_open_file)d(/)k(ffopen)418 3907 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h(int)g @@ -9535,21 +7222,9 @@ (iomode,)f(char)g(*extlist,)418 5714 y(>)95 b(int)47 b(*hdutype,)f(int)g(*status\))p eop end %%Page: 33 41 -TeXDict begin 33 40 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.33) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.2.)72 -b(FITS)30 b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(33)227 -555 y(The)41 b(iomo)s(de)h(parameter)g(determines)g(the)f(read/write)h +TeXDict begin 33 40 bop 0 299 a Fh(5.2.)72 b(FITS)30 +b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(33)227 555 +y(The)41 b(iomo)s(de)h(parameter)g(determines)g(the)f(read/write)h (access)h(allo)m(w)m(ed)h(in)d(the)g(\014le)h(and)f(can)h(ha)m(v)m(e) 227 668 y(v)-5 b(alues)32 b(of)g(READONL)-8 b(Y)32 b(\(0\))g(or)g(READ) m(WRITE)g(\(1\).)44 b(The)31 b(\014lename)h(parameter)g(giv)m(es)h(the) @@ -9593,3654 +7268,3041 @@ m(t)h(table)h(HDU)f(or)g(image)h(HDU)f(in)f(the)h(\014le,)h(resp)s (ectiv)m(ely)-8 b(,)29 b(if)c(a)h(HDU)h(name)227 2718 y(or)k(n)m(um)m(b)s(er)e(is)h(not)h(sp)s(eci\014ed)e(as)i(part)f(of)h -(the)f(\014lename.)227 2874 y(The)40 b(\014ts)p 551 2874 -V 33 w(op)s(en)p 774 2874 V 32 w(extname)h(routine)g(op)s(ens)f(the)h -(\014le)g(and)f(attempts)h(to)h(mo)m(v)m(e)g(to)f(a)g('useful')g(HDU.)g -(If)227 2987 y(after)28 b(op)s(ening)f(the)h(\014le)f(CFITSIO)f(is)h(p) -s(oin)m(ting)h(to)g(n)m(ull)f(primary)g(arra)m(y)-8 b(,)29 -b(then)e(CFITSIO)f(will)i(attempt)227 3100 y(to)38 b(mo)m(v)m(e)g(to)f -(the)g(\014rst)f(extension)h(that)g(has)f(an)h(EXTNAME)g(or)f(HDUNAME)i -(k)m(eyw)m(ord)f(v)-5 b(alue)37 b(that)227 3213 y(matc)m(hes)28 -b(one)f(of)g(the)g(names)f(in)h(the)g(input)f(extlist)i -(space-delimited)g(list)f(of)g(names.)39 b(If)27 b(that)g(fails,)h -(then)227 3326 y(CFITSIO)h(simply)h(mo)m(v)m(es)i(to)f(the)f(2nd)g(HDU) -h(in)f(the)h(\014le.)227 3482 y(IRAF)26 b(images)g(\(.imh)g(format)g -(\014les\))f(and)g(ra)m(w)h(binary)e(data)j(arra)m(ys)e(ma)m(y)h(also)h -(b)s(e)e(op)s(ened)f(with)h(READ-)227 3595 y(ONL)-8 b(Y)37 -b(access.)60 b(CFITSIO)35 b(will)i(automatically)i(test)f(if)e(the)h -(input)e(\014le)i(is)f(an)h(IRAF)f(image,)k(and)c(if,)227 -3708 y(so)c(will)g(con)m(v)m(ert)h(it)f(on)f(the)h(\015y)f(in)m(to)i(a) -f(virtual)f(FITS)g(image)i(b)s(efore)e(it)h(is)g(op)s(ened)e(b)m(y)i -(the)g(application)227 3821 y(program.)64 b(If)37 b(the)h(input)g -(\014le)g(is)g(a)g(ra)m(w)g(binary)g(data)g(arra)m(y)h(of)f(n)m(um)m(b) -s(ers,)h(then)e(the)i(data)f(t)m(yp)s(e)h(and)227 3933 -y(dimensions)d(of)g(the)g(arra)m(y)h(m)m(ust)f(b)s(e)f(sp)s(eci\014ed)g -(in)h(square)g(brac)m(k)m(ets)h(follo)m(wing)h(the)e(name)g(of)h(the)f -(\014le)227 4046 y(\(e.g.)56 b('ra)m(w\014le.dat[i512,512]')40 -b(op)s(ens)34 b(a)i(512)g(x)f(512)h(short)e(in)m(teger)j(image\).)56 -b(See)35 b(the)g(`Extended)g(File)227 4159 y(Name)k(Syn)m(tax')g(c)m -(hapter)g(for)e(more)i(details)g(on)f(ho)m(w)g(to)h(sp)s(ecify)f(the)g -(ra)m(w)h(\014le)f(name.)64 b(The)38 b(ra)m(w)g(\014le)227 -4272 y(is)k(con)m(v)m(erted)g(on)f(the)h(\015y)f(in)m(to)h(a)f(virtual) -h(FITS)e(image)j(in)e(memory)g(that)h(is)f(then)g(op)s(ened)g(b)m(y)g -(the)227 4385 y(application)32 b(program)e(with)g(READONL)-8 -b(Y)31 b(access.)227 4541 y(Programs)g(can)g(read)f(the)h(input)e -(\014le)i(from)f(the)h('stdin')f(\014le)h(stream)g(if)f(a)h(dash)f(c)m -(haracter)i(\('-'\))g(is)f(giv)m(en)227 4654 y(as)36 -b(the)g(\014lename.)58 b(Files)37 b(can)f(also)h(b)s(e)e(op)s(ened)g(o) -m(v)m(er)i(the)f(net)m(w)m(ork)h(using)e(FTP)h(or)g(HTTP)f(proto)s -(cols)227 4767 y(b)m(y)j(supplying)f(the)h(appropriate)h(URL)e(as)i -(the)f(\014lename.)64 b(The)38 b(HTTPS)f(and)g(FTPS)h(proto)s(cols)h -(are)227 4880 y(also)29 b(supp)s(orted)d(if)i(the)g(CFITSIO)e(build)h -(includes)g(the)h(lib)s(curl)f(library)-8 b(.)40 b(\(If)27 -b(the)h(CFITSIO)f('con\014gure')227 4993 y(script)34 -b(\014nds)e(a)i(usable)f(lib)s(curl)g(library)h(on)f(y)m(our)h(system,) -h(it)f(will)g(automatically)i(b)s(e)d(included)g(in)h(the)227 -5106 y(build.\))227 5262 y(The)43 b(input)f(\014le)h(can)h(b)s(e)f(mo)s -(di\014ed)f(in)g(v)-5 b(arious)44 b(w)m(a)m(ys)g(to)g(create)g(a)g -(virtual)f(\014le)h(\(usually)f(stored)g(in)227 5375 -y(memory\))31 b(that)g(is)g(then)f(op)s(ened)f(b)m(y)i(the)f -(application)i(program)e(b)m(y)h(supplying)e(a)i(\014ltering)g(or)f -(binning)227 5488 y(sp)s(eci\014er)e(in)g(square)g(brac)m(k)m(ets)h -(follo)m(wing)h(the)e(\014lename.)40 b(Some)29 b(of)f(the)g(more)h -(common)f(\014ltering)h(meth-)227 5601 y(o)s(ds)j(are)h(illustrated)h -(in)e(the)h(follo)m(wing)i(paragraphs,)e(but)f(users)g(should)f(refer)i -(to)g(the)g('Extended)g(File)227 5714 y(Name)e(Syn)m(tax')g(c)m(hapter) -g(for)f(a)h(complete)h(description)e(of)h(the)f(full)h(\014le)f -(\014ltering)h(syn)m(tax.)p eop end +(the)f(\014lename.)227 2874 y(The)h(\014ts)p 542 2874 +V 33 w(op)s(en)p 765 2874 V 32 w(extlist)i(routine)f(op)s(ens)f(the)h +(\014le)f(and)g(attempts)i(to)f(mo)m(v)m(e)i(to)e(a)g('useful')g(HDU.)g +(If)f(after)227 2987 y(op)s(ening)43 b(the)h(\014le)g(CFITSIO)d(is)j(p) +s(oin)m(ting)g(to)g(n)m(ull)f(primary)g(arra)m(y)-8 b(,)48 +b(then)43 b(CFITSIO)f(will)i(attempt)227 3100 y(to)38 +b(mo)m(v)m(e)g(to)f(the)g(\014rst)f(extension)h(that)g(has)f(an)h +(EXTNAME)g(or)f(HDUNAME)i(k)m(eyw)m(ord)f(v)-5 b(alue)37 +b(that)227 3213 y(matc)m(hes)i(one)e(of)h(the)g(names)f(in)g(the)g +(input)g(extlist)i(space-delimited)g(list)f(of)f(names)g(\(wildcards)h +(are)227 3326 y(p)s(ermitted\).)g(If)19 b(that)i(fails,)j(then)c +(CFITSIO)e(simply)i(mo)m(v)m(es)i(to)f(the)g(2nd)e(HDU)i(in)f(the)h +(\014le.)37 b(Up)s(on)20 b(return,)227 3438 y(the)31 +b(t)m(yp)s(e)f(of)h(the)f(HDU)i(is)e(returned)f(in)h(*hdut)m(yp)s(e,)g +(as)h(describ)s(ed)e(in)h(5.3)h(HDU)h(Access)f(Routines.)227 +3595 y(IRAF)26 b(images)g(\(.imh)g(format)g(\014les\))f(and)g(ra)m(w)h +(binary)e(data)j(arra)m(ys)e(ma)m(y)h(also)h(b)s(e)e(op)s(ened)f(with)h +(READ-)227 3708 y(ONL)-8 b(Y)37 b(access.)60 b(CFITSIO)35 +b(will)i(automatically)i(test)f(if)e(the)h(input)e(\014le)i(is)f(an)h +(IRAF)f(image,)k(and)c(if,)227 3821 y(so)c(will)g(con)m(v)m(ert)h(it)f +(on)f(the)h(\015y)f(in)m(to)i(a)f(virtual)f(FITS)g(image)i(b)s(efore)e +(it)h(is)g(op)s(ened)e(b)m(y)i(the)g(application)227 +3933 y(program.)64 b(If)37 b(the)h(input)g(\014le)g(is)g(a)g(ra)m(w)g +(binary)g(data)g(arra)m(y)h(of)f(n)m(um)m(b)s(ers,)h(then)e(the)i(data) +f(t)m(yp)s(e)h(and)227 4046 y(dimensions)d(of)g(the)g(arra)m(y)h(m)m +(ust)f(b)s(e)f(sp)s(eci\014ed)g(in)h(square)g(brac)m(k)m(ets)h(follo)m +(wing)h(the)e(name)g(of)h(the)f(\014le)227 4159 y(\(e.g.)56 +b('ra)m(w\014le.dat[i512,512]')40 b(op)s(ens)34 b(a)i(512)g(x)f(512)h +(short)e(in)m(teger)j(image\).)56 b(See)35 b(the)g(`Extended)g(File)227 +4272 y(Name)k(Syn)m(tax')g(c)m(hapter)g(for)e(more)i(details)g(on)f(ho) +m(w)g(to)h(sp)s(ecify)f(the)g(ra)m(w)h(\014le)f(name.)64 +b(The)38 b(ra)m(w)g(\014le)227 4385 y(is)k(con)m(v)m(erted)g(on)f(the)h +(\015y)f(in)m(to)h(a)f(virtual)h(FITS)e(image)j(in)e(memory)g(that)h +(is)f(then)g(op)s(ened)g(b)m(y)g(the)227 4498 y(application)32 +b(program)e(with)g(READONL)-8 b(Y)31 b(access.)227 4654 +y(Programs)g(can)g(read)f(the)h(input)e(\014le)i(from)f(the)h('stdin')f +(\014le)h(stream)g(if)f(a)h(dash)f(c)m(haracter)i(\('-'\))g(is)f(giv)m +(en)227 4767 y(as)36 b(the)g(\014lename.)58 b(Files)37 +b(can)f(also)h(b)s(e)e(op)s(ened)g(o)m(v)m(er)i(the)f(net)m(w)m(ork)h +(using)e(FTP)h(or)g(HTTP)f(proto)s(cols)227 4880 y(b)m(y)j(supplying)f +(the)h(appropriate)h(URL)e(as)i(the)f(\014lename.)64 +b(The)38 b(HTTPS)f(and)g(FTPS)h(proto)s(cols)h(are)227 +4993 y(also)29 b(supp)s(orted)d(if)i(the)g(CFITSIO)e(build)h(includes)g +(the)h(lib)s(curl)f(library)-8 b(.)40 b(\(If)27 b(the)h(CFITSIO)f +('con\014gure')227 5106 y(script)34 b(\014nds)e(a)i(usable)f(lib)s +(curl)g(library)h(on)f(y)m(our)h(system,)h(it)f(will)g(automatically)i +(b)s(e)d(included)g(in)h(the)227 5219 y(build.\))227 +5375 y(The)43 b(input)f(\014le)h(can)h(b)s(e)f(mo)s(di\014ed)f(in)g(v) +-5 b(arious)44 b(w)m(a)m(ys)g(to)g(create)g(a)g(virtual)f(\014le)h +(\(usually)f(stored)g(in)227 5488 y(memory\))31 b(that)g(is)g(then)f +(op)s(ened)f(b)m(y)i(the)f(application)i(program)e(b)m(y)h(supplying)e +(a)i(\014ltering)g(or)f(binning)227 5601 y(sp)s(eci\014er)e(in)g +(square)g(brac)m(k)m(ets)h(follo)m(wing)h(the)e(\014lename.)40 +b(Some)29 b(of)f(the)g(more)h(common)f(\014ltering)h(meth-)227 +5714 y(o)s(ds)j(are)h(illustrated)h(in)e(the)h(follo)m(wing)i +(paragraphs,)e(but)f(users)g(should)f(refer)i(to)g(the)g('Extended)g +(File)p eop end %%Page: 34 42 -TeXDict begin 34 41 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.34) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(34)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(When)d(op)s(ening)f(an)h(image,) -h(a)g(rectangular)f(subset)f(of)h(the)g(ph)m(ysical)g(image)h(ma)m(y)g -(b)s(e)e(op)s(ened)f(b)m(y)i(listing)227 668 y(the)k(\014rst)e(and)h -(last)h(pixel)g(in)f(eac)m(h)i(dimension)e(\(and)g(optional)h(pixel)g -(skipping)f(factor\):)227 895 y Fe(myimage.fits[101:200,301:)o(400])227 -1123 y Fj(will)g(create)h(and)e(op)s(en)f(a)i(100x100)i(pixel)e -(virtual)g(image)g(of)g(that)g(section)g(of)g(the)f(ph)m(ysical)h -(image,)i(and)227 1235 y Fe(myimage.fits[*,-*])c Fj(op)s(ens)k(a)h -(virtual)g(image)h(that)f(is)g(the)g(same)g(size)h(as)e(the)h(ph)m -(ysical)h(image)g(but)227 1348 y(has)c(b)s(een)g(\015ipp)s(ed)f(in)h -(the)g(v)m(ertical)j(direction.)227 1495 y(When)28 b(op)s(ening)g(a)g -(table,)i(the)e(\014ltering)g(syn)m(tax)h(can)f(b)s(e)f(used)h(to)g -(add)g(or)g(delete)h(columns)f(or)g(k)m(eyw)m(ords)227 -1608 y(in)g(the)g(virtual)h(table:)40 b Fe(myfile.fits[events][col)i -(!time;)k(PI)h(=)h(PHA*1.2])26 b Fj(op)s(ens)h(a)h(virtual)h(ta-)227 -1721 y(ble)j(in)f(whic)m(h)g(the)h(TIME)f(column)g(has)g(b)s(een)g -(deleted)h(and)f(a)g(new)g(PI)g(column)h(has)f(b)s(een)g(added)f(with) -227 1834 y(a)41 b(v)-5 b(alue)40 b(1.2)i(times)e(that)h(of)f(the)h(PHA) -f(column.)70 b(Similarly)-8 b(,)43 b(one)e(can)f(\014lter)h(a)f(table)h -(to)g(k)m(eep)g(only)227 1947 y(those)35 b(ro)m(ws)e(that)i(satisfy)f -(a)g(selection)i(criterion:)48 b Fe(myfile.fits[events][pha)42 -b(>)47 b(50])33 b Fj(creates)j(and)227 2060 y(op)s(ens)31 +TeXDict begin 34 41 bop 0 299 a Fj(34)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(Name)h(Syn)m(tax')g(c)m(hapter)g(for)f(a)h +(complete)h(description)e(of)h(the)f(full)h(\014le)f(\014ltering)h(syn) +m(tax.)227 705 y(When)c(op)s(ening)f(an)h(image,)h(a)g(rectangular)f +(subset)f(of)h(the)g(ph)m(ysical)g(image)h(ma)m(y)g(b)s(e)e(op)s(ened)f +(b)m(y)i(listing)227 818 y(the)k(\014rst)e(and)h(last)h(pixel)g(in)f +(eac)m(h)i(dimension)e(\(and)g(optional)h(pixel)g(skipping)f(factor\):) +227 1066 y Fe(myimage.fits[101:200,301:)o(400])227 1313 +y Fj(will)g(create)h(and)e(op)s(en)f(a)i(100x100)i(pixel)e(virtual)g +(image)g(of)g(that)g(section)g(of)g(the)f(ph)m(ysical)h(image,)i(and) +227 1426 y Fe(myimage.fits[*,-*])c Fj(op)s(ens)k(a)h(virtual)g(image)h +(that)f(is)g(the)g(same)g(size)h(as)e(the)h(ph)m(ysical)h(image)g(but) +227 1539 y(has)c(b)s(een)g(\015ipp)s(ed)f(in)h(the)g(v)m(ertical)j +(direction.)227 1689 y(When)28 b(op)s(ening)g(a)g(table,)i(the)e +(\014ltering)g(syn)m(tax)h(can)f(b)s(e)f(used)h(to)g(add)g(or)g(delete) +h(columns)f(or)g(k)m(eyw)m(ords)227 1802 y(in)g(the)g(virtual)h(table:) +40 b Fe(myfile.fits[events][col)i(!time;)k(PI)h(=)h(PHA*1.2])26 +b Fj(op)s(ens)h(a)h(virtual)h(ta-)227 1915 y(ble)j(in)f(whic)m(h)g(the) +h(TIME)f(column)g(has)g(b)s(een)g(deleted)h(and)f(a)g(new)g(PI)g +(column)h(has)f(b)s(een)g(added)f(with)227 2027 y(a)41 +b(v)-5 b(alue)40 b(1.2)i(times)e(that)h(of)f(the)h(PHA)f(column.)70 +b(Similarly)-8 b(,)43 b(one)e(can)f(\014lter)h(a)f(table)h(to)g(k)m +(eep)g(only)227 2140 y(those)35 b(ro)m(ws)e(that)i(satisfy)f(a)g +(selection)i(criterion:)48 b Fe(myfile.fits[events][pha)42 +b(>)47 b(50])33 b Fj(creates)j(and)227 2253 y(op)s(ens)31 b(a)g(virtual)h(table)g(con)m(taining)h(only)e(those)h(ro)m(ws)f(with)g (a)g(PHA)h(v)-5 b(alue)31 b(greater)i(than)e(50.)44 b(A)31 -b(large)227 2173 y(n)m(um)m(b)s(er)d(of)h(b)s(o)s(olean)h(and)e +b(large)227 2366 y(n)m(um)m(b)s(er)d(of)h(b)s(o)s(olean)h(and)e (mathematical)k(op)s(erators)d(can)g(b)s(e)g(used)f(in)h(the)g -(selection)i(expression.)40 b(One)227 2286 y(can)25 b(also)g(\014lter)g +(selection)i(expression.)40 b(One)227 2479 y(can)25 b(also)g(\014lter)g (table)g(ro)m(ws)f(using)g('Go)s(o)s(d)h(Time)f(In)m(terv)-5 b(al')26 b(extensions,)g(and)e(spatial)h(region)g(\014lters)g(as)f(in) -227 2399 y Fe(myfile.fits[events][gtifi)o(lter)o(\(\)])14 +227 2592 y Fe(myfile.fits[events][gtifi)o(lter)o(\(\)])14 b Fj(and)19 b Fe(myfile.fits[events][regfil)o(ter)o(\()42 -b("stars.rng"\)])p Fj(.)227 2546 y(Finally)-8 b(,)34 +b("stars.rng"\)])p Fj(.)227 2742 y(Finally)-8 b(,)34 b(table)e(columns)f(ma)m(y)h(b)s(e)f(binned)f(or)h(histogrammed)h(to)g (generate)h(a)e(virtual)h(image.)45 b(F)-8 b(or)32 b(ex-)227 -2659 y(ample,)d Fe(myfile.fits[events][bin)41 b(\(X,Y\)=4])26 +2855 y(ample,)d Fe(myfile.fits[events][bin)41 b(\(X,Y\)=4])26 b Fj(will)h(result)h(in)f(a)h(2-dimensional)g(image)h(calculated)227 -2771 y(b)m(y)35 b(binning)e(the)i(X)f(and)g(Y)h(columns)f(in)g(the)h +2968 y(b)m(y)35 b(binning)e(the)i(X)f(and)g(Y)h(columns)f(in)g(the)h (ev)m(en)m(t)h(table)f(with)f(a)h(bin)f(size)h(of)g(4)f(in)h(eac)m(h)g -(dimension.)227 2884 y(The)30 b(TLMINn)g(and)f(TLMAXn)h(k)m(eyw)m(ords) +(dimension.)227 3081 y(The)30 b(TLMINn)g(and)f(TLMAXn)h(k)m(eyw)m(ords) h(will)g(b)s(e)e(used)h(b)m(y)g(default)h(to)g(determine)f(the)h(range) -f(of)h(the)227 2997 y(image.)227 3144 y(A)j(single)g(program)f(can)g +f(of)h(the)227 3194 y(image.)227 3343 y(A)j(single)g(program)f(can)g (op)s(en)g(the)h(same)f(FITS)g(\014le)g(more)h(than)f(once)h(and)f -(then)g(treat)h(the)g(resulting)227 3257 y(\014ts\014le)c(p)s(oin)m +(then)g(treat)h(the)g(resulting)227 3456 y(\014ts\014le)c(p)s(oin)m (ters)g(as)g(though)g(they)g(w)m(ere)h(completely)h(indep)s(enden)m(t)d (FITS)g(\014les.)40 b(Using)31 b(this)f(facilit)m(y)-8 -b(,)33 b(a)227 3370 y(program)f(can)f(op)s(en)g(a)h(FITS)f(\014le)g(t)m +b(,)33 b(a)227 3569 y(program)f(can)f(op)s(en)g(a)h(FITS)f(\014le)g(t)m (wice,)j(mo)m(v)m(e)f(to)f(2)g(di\013eren)m(t)g(extensions)g(within)f -(the)g(\014le,)h(and)f(then)227 3483 y(read)g(and)e(write)i(data)g(in)f -(those)h(extensions)g(in)f(an)m(y)h(order.)0 3723 y Fi(2)81 +(the)g(\014le,)h(and)f(then)227 3682 y(read)g(and)e(write)i(data)g(in)f +(those)h(extensions)g(in)f(an)m(y)h(order.)0 3940 y Fi(2)81 b Fj(Create)31 b(and)f(op)s(en)f(a)i(new)f(empt)m(y)h(output)f(FITS)f -(\014le.)227 3951 y Fe(int)47 b(fits_create_file)d(/)j(ffinit)418 -4064 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\)) -227 4289 y(int)g(fits_create_diskfile)42 b(/)48 b(ffdkinit)418 -4402 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\)) -227 4629 y Fj(An)36 b(error)h(will)g(b)s(e)f(returned)f(if)h(the)h(sp)s +(\014le.)227 4187 y Fe(int)47 b(fits_create_file)d(/)j(ffinit)418 +4300 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\)) +227 4526 y(int)g(fits_create_diskfile)42 b(/)48 b(ffdkinit)418 +4639 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\)) +227 4886 y Fj(An)36 b(error)h(will)g(b)s(e)f(returned)f(if)h(the)h(sp)s (eci\014ed)f(\014le)h(already)g(exists,)i(unless)d(the)h(\014lename)f -(is)h(pre\014xed)227 4742 y(with)30 b(an)g(exclamation)i(p)s(oin)m(t)e +(is)h(pre\014xed)227 4999 y(with)30 b(an)g(exclamation)i(p)s(oin)m(t)e (\(!\).)42 b(In)29 b(that)i(case)g(CFITSIO)d(will)j(o)m(v)m(erwrite)g -(\(delete\))h(an)m(y)f(existing)g(\014le)227 4855 y(with)36 +(\(delete\))h(an)m(y)f(existing)g(\014le)227 5112 y(with)36 b(the)g(same)h(name.)57 b(Note)38 b(that)e(the)h(exclamation)h(p)s(oin) m(t)e(is)g(a)h(sp)s(ecial)f(UNIX)g(c)m(haracter)i(so)e(if)g(it)227 -4968 y(is)d(used)e(on)h(the)h(command)f(line)h(it)g(m)m(ust)f(b)s(e)g +5225 y(is)d(used)e(on)h(the)h(command)f(line)h(it)g(m)m(ust)f(b)s(e)g (preceded)g(b)m(y)g(a)g(bac)m(kslash)h(to)h(force)e(the)h(UNIX)g(shell) -f(to)227 5081 y(accept)g(the)f(c)m(haracter)h(as)e(part)g(of)h(the)g -(\014lename.)227 5228 y(The)26 b(output)h(\014le)g(will)g(b)s(e)f +f(to)227 5338 y(accept)g(the)f(c)m(haracter)h(as)e(part)g(of)h(the)g +(\014lename.)227 5488 y(The)26 b(output)h(\014le)g(will)g(b)s(e)f (written)h(to)g(the)g('stdout')g(\014le)g(stream)g(if)g(a)g(dash)f(c)m -(haracter)i(\('-'\))g(or)f(the)g(string)227 5341 y('stdout')34 +(haracter)i(\('-'\))g(or)f(the)g(string)227 5601 y('stdout')34 b(is)f(giv)m(en)h(as)g(the)f(\014lename.)49 b(Similarly)-8 b(,)35 b('-.gz')g(or)e('stdout.gz')i(will)f(cause)f(the)h(\014le)f(to)h -(b)s(e)e(gzip)227 5454 y(compressed)e(b)s(efore)g(it)h(is)g(written)f -(out)h(to)g(the)f(stdout)h(stream.)227 5601 y(Optionally)-8 -b(,)41 b(the)c(name)h(of)f(a)h(template)h(\014le)e(that)h(is)f(used)g -(to)h(de\014ne)f(the)g(structure)g(of)g(the)h(new)f(\014le)227 -5714 y(ma)m(y)i(b)s(e)f(sp)s(eci\014ed)f(in)h(paren)m(theses)h(follo)m -(wing)g(the)g(output)e(\014le)i(name.)64 b(The)38 b(template)h(\014le)g -(ma)m(y)g(b)s(e)p eop end +(b)s(e)e(gzip)227 5714 y(compressed)e(b)s(efore)g(it)h(is)g(written)f +(out)h(to)g(the)f(stdout)h(stream.)p eop end %%Page: 35 43 -TeXDict begin 35 42 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.35) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.3.)72 -b(HDU)31 b(A)m(CCESS)e(R)m(OUTINES)2488 b Fj(35)227 555 -y(another)32 b(FITS)e(\014le,)i(in)f(whic)m(h)g(case)i(the)e(new)g -(\014le,)h(at)g(the)g(time)g(it)f(is)h(op)s(ened,)f(will)g(b)s(e)g(an)g -(exact)i(cop)m(y)227 668 y(of)38 b(the)g(template)i(\014le)e(except)g -(that)h(the)f(data)g(structures)g(\(images)h(and)e(tables\))i(will)f(b) -s(e)g(\014lled)f(with)227 781 y(zeros.)k(Alternativ)m(ely)-8 -b(,)32 b(the)d(template)i(\014le)e(ma)m(y)g(b)s(e)f(an)h(ASCI)s(I)e -(format)i(text)h(\014le)f(con)m(taining)i(directiv)m(es)227 -894 y(that)e(de\014ne)e(the)h(k)m(eyw)m(ords)g(to)g(b)s(e)g(created)h -(in)e(eac)m(h)i(HDU)g(of)f(the)g(\014le.)40 b(See)28 -b(the)g('Extended)f(File)i(Name)227 1007 y(Syn)m(tax')i(section)h(for)e -(a)h(complete)g(description)g(of)f(the)h(template)h(\014le)e(syn)m -(tax.)227 1156 y(The)f(\014ts)p 540 1156 28 4 v 33 w(create)p -809 1156 V 34 w(disk\014le)g(routine)h(is)g(similar)g(to)g(the)g -(\014ts)p 2238 1156 V 32 w(create)p 2506 1156 V 34 w(\014le)g(routine)g -(except)g(that)g(it)g(do)s(es)g(not)227 1269 y(supp)s(ort)36 -b(the)i(extended)g(\014lename)g(syn)m(tax)g(in)g(the)g(input)f(\014le)h -(name.)63 b(This)37 b(routine)h(simply)f(tries)h(to)227 -1382 y(create)e(the)e(sp)s(eci\014ed)f(\014le)h(on)f(magnetic)j(disk.) -50 b(This)33 b(routine)h(is)g(mainly)g(for)g(use)f(in)h(cases)g(where)g -(the)227 1495 y(\014lename)g(\(or)h(directory)f(path\))g(con)m(tains)h -(square)f(or)g(curly)f(brac)m(k)m(et)j(c)m(haracters)f(that)f(w)m(ould) -g(confuse)227 1608 y(the)d(extended)f(\014lename)h(parser.)0 -1861 y Fi(3)81 b Fj(Close)28 b(a)f(previously)g(op)s(ened)g(FITS)g -(\014le.)40 b(The)27 b(\014rst)f(routine)i(simply)f(closes)h(the)g -(\014le,)g(whereas)f(the)h(second)227 1974 y(one)g(also)h(DELETES)e -(the)g(\014le,)i(whic)m(h)e(can)h(b)s(e)g(useful)e(in)i(cases)g(where)g -(a)g(FITS)f(\014le)g(has)h(b)s(een)f(partially)227 2086 -y(created,)37 b(but)c(then)h(an)h(error)e(o)s(ccurs)h(whic)m(h)g(prev)m -(en)m(ts)h(it)g(from)f(b)s(eing)g(completed.)53 b(Note)36 -b(that)e(these)227 2199 y(routines)23 b(b)s(eha)m(v)m(e)g(di\013eren)m -(tly)h(than)e(most)h(other)g(CFITSIO)e(routines)i(if)f(the)h(input)f(v) --5 b(alue)23 b(of)g(the)g(`status')227 2312 y(parameter)43 -b(is)f(not)h(zero:)65 b(Instead)42 b(of)h(simply)f(returning)f(to)i -(the)g(calling)g(program)g(without)f(doing)227 2425 y(an)m(ything,)30 -b(these)f(routines)f(e\013ectiv)m(ely)k(ignore)d(the)f(input)g(status)h -(v)-5 b(alue)29 b(and)f(still)h(attempt)h(to)f(close)h(or)227 -2538 y(delete)i(the)e(\014le.)95 2791 y Fe(int)47 b(fits_close_file)d -(/)j(ffclos)g(\(fitsfile)e(*fptr,)h(>)h(int)g(*status\))95 -3017 y(int)g(fits_delete_file)d(/)j(ffdelt)f(\(fitsfile)g(*fptr,)g(>)h -(int)g(*status\))0 3270 y Fi(4)81 b Fj(Return)21 b(the)i(name,)h(I/O)e -(mo)s(de)g(\(READONL)-8 b(Y)24 b(or)e(READ)m(WRITE\),)i(and/or)e(the)g -(\014le)h(t)m(yp)s(e)f(\(e.g.)40 b('\014le://',)227 3383 +TeXDict begin 35 42 bop 0 299 a Fh(5.3.)72 b(HDU)31 b(A)m(CCESS)e(R)m +(OUTINES)2488 b Fj(35)227 555 y(Optionally)-8 b(,)41 +b(the)c(name)h(of)f(a)h(template)h(\014le)e(that)h(is)f(used)g(to)h +(de\014ne)f(the)g(structure)g(of)g(the)h(new)f(\014le)227 +668 y(ma)m(y)i(b)s(e)f(sp)s(eci\014ed)f(in)h(paren)m(theses)h(follo)m +(wing)g(the)g(output)e(\014le)i(name.)64 b(The)38 b(template)h(\014le)g +(ma)m(y)g(b)s(e)227 781 y(another)32 b(FITS)e(\014le,)i(in)f(whic)m(h)g +(case)i(the)e(new)g(\014le,)h(at)g(the)g(time)g(it)f(is)h(op)s(ened,)f +(will)g(b)s(e)g(an)g(exact)i(cop)m(y)227 894 y(of)38 +b(the)g(template)i(\014le)e(except)g(that)h(the)f(data)g(structures)g +(\(images)h(and)e(tables\))i(will)f(b)s(e)g(\014lled)f(with)227 +1007 y(zeros.)k(Alternativ)m(ely)-8 b(,)32 b(the)d(template)i(\014le)e +(ma)m(y)g(b)s(e)f(an)h(ASCI)s(I)e(format)i(text)h(\014le)f(con)m +(taining)i(directiv)m(es)227 1120 y(that)e(de\014ne)e(the)h(k)m(eyw)m +(ords)g(to)g(b)s(e)g(created)h(in)e(eac)m(h)i(HDU)g(of)f(the)g(\014le.) +40 b(See)28 b(the)g('Extended)f(File)i(Name)227 1233 +y(Syn)m(tax')i(section)h(for)e(a)h(complete)g(description)g(of)f(the)h +(template)h(\014le)e(syn)m(tax.)227 1382 y(The)f(\014ts)p +540 1382 28 4 v 33 w(create)p 809 1382 V 34 w(disk\014le)g(routine)h +(is)g(similar)g(to)g(the)g(\014ts)p 2238 1382 V 32 w(create)p +2506 1382 V 34 w(\014le)g(routine)g(except)g(that)g(it)g(do)s(es)g(not) +227 1495 y(supp)s(ort)36 b(the)i(extended)g(\014lename)g(syn)m(tax)g +(in)g(the)g(input)f(\014le)h(name.)63 b(This)37 b(routine)h(simply)f +(tries)h(to)227 1608 y(create)e(the)e(sp)s(eci\014ed)f(\014le)h(on)f +(magnetic)j(disk.)50 b(This)33 b(routine)h(is)g(mainly)g(for)g(use)f +(in)h(cases)g(where)g(the)227 1721 y(\014lename)g(\(or)h(directory)f +(path\))g(con)m(tains)h(square)f(or)g(curly)f(brac)m(k)m(et)j(c)m +(haracters)f(that)f(w)m(ould)g(confuse)227 1833 y(the)d(extended)f +(\014lename)h(parser.)0 2086 y Fi(3)81 b Fj(Close)28 +b(a)f(previously)g(op)s(ened)g(FITS)g(\014le.)40 b(The)27 +b(\014rst)f(routine)i(simply)f(closes)h(the)g(\014le,)g(whereas)f(the)h +(second)227 2199 y(one)g(also)h(DELETES)e(the)g(\014le,)i(whic)m(h)e +(can)h(b)s(e)g(useful)e(in)i(cases)g(where)g(a)g(FITS)f(\014le)g(has)h +(b)s(een)f(partially)227 2312 y(created,)37 b(but)c(then)h(an)h(error)e +(o)s(ccurs)h(whic)m(h)g(prev)m(en)m(ts)h(it)g(from)f(b)s(eing)g +(completed.)53 b(Note)36 b(that)e(these)227 2425 y(routines)23 +b(b)s(eha)m(v)m(e)g(di\013eren)m(tly)h(than)e(most)h(other)g(CFITSIO)e +(routines)i(if)f(the)h(input)f(v)-5 b(alue)23 b(of)g(the)g(`status')227 +2538 y(parameter)43 b(is)f(not)h(zero:)65 b(Instead)42 +b(of)h(simply)f(returning)f(to)i(the)g(calling)g(program)g(without)f +(doing)227 2651 y(an)m(ything,)30 b(these)f(routines)f(e\013ectiv)m +(ely)k(ignore)d(the)f(input)g(status)h(v)-5 b(alue)29 +b(and)f(still)h(attempt)h(to)f(close)h(or)227 2764 y(delete)i(the)e +(\014le.)95 3017 y Fe(int)47 b(fits_close_file)d(/)j(ffclos)g +(\(fitsfile)e(*fptr,)h(>)h(int)g(*status\))95 3243 y(int)g +(fits_delete_file)d(/)j(ffdelt)f(\(fitsfile)g(*fptr,)g(>)h(int)g +(*status\))0 3496 y Fi(4)81 b Fj(Return)21 b(the)i(name,)h(I/O)e(mo)s +(de)g(\(READONL)-8 b(Y)24 b(or)e(READ)m(WRITE\),)i(and/or)e(the)g +(\014le)h(t)m(yp)s(e)f(\(e.g.)40 b('\014le://',)227 3609 y('ftp://'\))32 b(of)f(the)f(op)s(ened)g(FITS)g(\014le.)95 -3636 y Fe(int)47 b(fits_file_name)d(/)k(ffflnm)e(\(fitsfile)f(*fptr,)h -(>)i(char)e(*filename,)f(int)i(*status\))95 3862 y(int)g +3862 y Fe(int)47 b(fits_file_name)d(/)k(ffflnm)e(\(fitsfile)f(*fptr,)h +(>)i(char)e(*filename,)f(int)i(*status\))95 4088 y(int)g (fits_file_mode)d(/)k(ffflmd)e(\(fitsfile)f(*fptr,)h(>)i(int)f -(*iomode,)e(int)i(*status\))95 4088 y(int)g(fits_url_type)e(/)i(ffurlt) +(*iomode,)e(int)i(*status\))95 4313 y(int)g(fits_url_type)e(/)i(ffurlt) f(\(fitsfile)f(*fptr,)h(>)i(char)f(*urltype,)e(int)i(*status\))0 -4244 y -SDict begin H.S end - 0 4244 a 0 4244 a -SDict begin 13.6 H.A end - 0 4244 a 0 4244 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.3) cvn /DEST pdfmark -end - 0 4244 a 176 -x Ff(5.3)135 b(HDU)46 b(Access)e(Routines)0 4670 y Fj(The)30 -b(follo)m(wing)i(functions)e(p)s(erform)f(op)s(erations)h(on)h -(Header-Data)h(Units)f(\(HDUs\))h(as)e(a)h(whole.)0 4924 -y Fi(1)81 b Fj(Mo)m(v)m(e)44 b(to)g(a)f(di\013eren)m(t)g(HDU)g(in)g -(the)g(\014le.)77 b(The)43 b(\014rst)f(routine)g(mo)m(v)m(es)i(to)g(a)f -(sp)s(eci\014ed)f(absolute)h(HDU)227 5036 y(n)m(um)m(b)s(er)f -(\(starting)h(with)g(1)f(for)h(the)g(primary)e(arra)m(y\))j(in)e(the)h -(FITS)f(\014le,)k(and)c(the)g(second)h(routine)227 5149 -y(mo)m(v)m(es)35 b(a)e(relativ)m(e)i(n)m(um)m(b)s(er)d(HDUs)i(forw)m -(ard)e(or)h(bac)m(kw)m(ard)h(from)f(the)g(curren)m(t)g(HDU.)h(A)f(n)m -(ull)g(p)s(oin)m(ter)227 5262 y(ma)m(y)e(b)s(e)f(giv)m(en)h(for)f(the)g -(hdut)m(yp)s(e)f(parameter)i(if)f(it's)h(v)-5 b(alue)31 -b(is)f(not)h(needed.)40 b(The)30 b(third)f(routine)i(mo)m(v)m(es)227 -5375 y(to)39 b(the)g(\(\014rst\))f(HDU)i(whic)m(h)e(has)g(the)h(sp)s -(eci\014ed)e(extension)i(t)m(yp)s(e)g(and)f(EXTNAME)g(and)g(EXTVER)227 -5488 y(k)m(eyw)m(ord)26 b(v)-5 b(alues)26 b(\(or)g(HDUNAME)h(and)e -(HDUVER)h(k)m(eyw)m(ords\).)40 b(The)24 b(hdut)m(yp)s(e)h(parameter)h -(ma)m(y)g(ha)m(v)m(e)227 5601 y(a)d(v)-5 b(alue)22 b(of)g(IMA)m(GE)p -935 5601 28 4 v 34 w(HDU,)h(ASCI)s(I)p 1476 5601 V 31 -w(TBL,)f(BINAR)-8 b(Y)p 2101 5601 V 34 w(TBL,)22 b(or)g(ANY)p -2676 5601 V 34 w(HDU)g(where)g(ANY)p 3396 5601 V 33 w(HDU)h(means)227 -5714 y(that)33 b(only)g(the)f(extname)i(and)d(extv)m(er)j(v)-5 -b(alues)33 b(will)f(b)s(e)g(used)g(to)h(lo)s(cate)h(the)f(correct)g -(extension.)48 b(If)32 b(the)p eop end +4646 y Ff(5.3)135 b(HDU)46 b(Access)e(Routines)0 4896 +y Fj(The)30 b(follo)m(wing)i(functions)e(p)s(erform)f(op)s(erations)h +(on)h(Header-Data)h(Units)f(\(HDUs\))h(as)e(a)h(whole.)0 +5149 y Fi(1)81 b Fj(Mo)m(v)m(e)25 b(to)g(a)f(di\013eren)m(t)g(HDU)g(in) +g(the)g(\014le.)38 b(The)23 b(\014rst)g(routine)h(mo)m(v)m(es)h(to)f(a) +g(sp)s(eci\014ed)f(absolute)i(HDU)f(n)m(um)m(b)s(er)227 +5262 y(\(starting)f(with)e(1)g(for)g(the)h(primary)e(arra)m(y\))i(in)f +(the)h(FITS)e(\014le,)k(and)c(the)i(second)f(routine)h(mo)m(v)m(es)g(a) +g(relativ)m(e)227 5375 y(n)m(um)m(b)s(er)30 b(HDUs)i(forw)m(ard)e(or)h +(bac)m(kw)m(ard)h(from)e(the)i(curren)m(t)f(HDU.)h(A)f(n)m(ull)g(p)s +(oin)m(ter)g(ma)m(y)h(b)s(e)e(giv)m(en)i(for)227 5488 +y(the)26 b(hdut)m(yp)s(e)f(parameter)i(if)f(it's)g(v)-5 +b(alue)27 b(is)f(not)g(needed.)39 b(The)26 b(third)f(routine)h(mo)m(v)m +(es)h(to)g(the)f(\(\014rst\))g(HDU)227 5601 y(whic)m(h)38 +b(has)g(the)g(sp)s(eci\014ed)f(extension)i(t)m(yp)s(e)f(and)f(EXTNAME)h +(and)f(EXTVER)h(k)m(eyw)m(ord)g(v)-5 b(alues)39 b(\(or)227 +5714 y(HDUNAME)e(and)e(HDUVER)h(k)m(eyw)m(ords\).)57 +b(The)35 b(extname)h(parameter)g(ma)m(y)g(con)m(tain)h(wildcards,)g(as) +p eop end %%Page: 36 44 -TeXDict begin 36 43 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.36) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(36)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(input)k(v)-5 b(alue)36 -b(of)f(extv)m(er)h(is)f(0)h(then)e(the)i(EXTVER)e(k)m(eyw)m(ord)i(is)f -(ignored)g(and)g(the)g(\014rst)f(HDU)i(with)f(a)227 668 -y(matc)m(hing)28 b(EXTNAME)g(\(or)f(HDUNAME\))i(k)m(eyw)m(ord)e(will)g -(b)s(e)g(found.)38 b(If)27 b(no)f(matc)m(hing)i(HDU)g(is)f(found)227 -781 y(in)f(the)g(\014le)g(then)g(the)g(curren)m(t)g(HDU)g(will)h -(remain)f(unc)m(hanged)f(and)h(a)g(status)g(=)g(BAD)p -3246 781 28 4 v 33 w(HDU)p 3484 781 V 34 w(NUM)h(will)227 -894 y(b)s(e)j(returned.)95 1141 y Fe(int)47 b(fits_movabs_hdu)d(/)j -(ffmahd)286 1254 y(\(fitsfile)f(*fptr,)g(int)h(hdunum,)e(>)j(int)f -(*hdutype,)e(int)i(*status\))95 1480 y(int)g(fits_movrel_hdu)d(/)j -(ffmrhd)286 1593 y(\(fitsfile)f(*fptr,)g(int)h(nmove,)f(>)h(int)g -(*hdutype,)e(int)i(*status\))95 1818 y(int)g(fits_movnam_hdu)d(/)j -(ffmnhd)286 1931 y(\(fitsfile)f(*fptr,)g(int)h(hdutype,)e(char)i -(*extname,)e(int)i(extver,)f(>)h(int)g(*status\))0 2178 -y Fi(2)81 b Fj(Return)38 b(the)i(total)h(n)m(um)m(b)s(er)d(of)i(HDUs)g -(in)f(the)h(FITS)f(\014le.)68 b(This)39 b(returns)f(the)h(n)m(um)m(b)s -(er)g(of)g(completely)227 2291 y(de\014ned)30 b(HDUs)h(in)f(the)h -(\014le.)42 b(If)30 b(a)h(new)f(HDU)h(has)g(just)f(b)s(een)g(added)f -(to)j(the)f(FITS)f(\014le,)h(then)f(that)h(last)227 2404 -y(HDU)f(will)f(only)g(b)s(e)g(coun)m(ted)g(if)g(it)h(has)e(b)s(een)h -(closed,)h(or)f(if)g(data)h(has)e(b)s(een)h(written)g(to)g(the)g(HDU.)h -(The)227 2517 y(curren)m(t)g(HDU)i(remains)e(unc)m(hanged)g(b)m(y)g -(this)g(routine.)95 2764 y Fe(int)47 b(fits_get_num_hdus)c(/)48 -b(ffthdu)286 2877 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdunum,)f(int)h -(*status\))0 3124 y Fi(3)81 b Fj(Return)31 b(the)h(n)m(um)m(b)s(er)f +TeXDict begin 36 43 bop 0 299 a Fj(36)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(accepted)k(b)m(y)f(\014ts)p +859 555 28 4 v 33 w(compare)p 1225 555 V 33 w(str\(\).)48 +b(The)33 b(hdut)m(yp)s(e)e(parameter)i(ma)m(y)h(ha)m(v)m(e)g(a)f(v)-5 +b(alue)33 b(of)g(IMA)m(GE)p 3640 555 V 34 w(HDU,)227 +668 y(ASCI)s(I)p 486 668 V 32 w(TBL,)f(BINAR)-8 b(Y)p +1122 668 V 34 w(TBL,)32 b(or)h(ANY)p 1718 668 V 33 w(HDU)g(where)f(ANY) +p 2458 668 V 33 w(HDU)i(means)e(that)h(only)g(the)f(extname)227 +781 y(and)k(extv)m(er)h(v)-5 b(alues)36 b(will)g(b)s(e)f(used)g(to)i +(lo)s(cate)h(the)e(correct)h(extension.)58 b(If)35 b(the)h(input)f(v)-5 +b(alue)37 b(of)f(extv)m(er)227 894 y(is)d(0)g(then)f(the)g(EXTVER)h(k)m +(eyw)m(ord)g(is)f(ignored)h(and)f(the)g(\014rst)g(HDU)h(with)f(a)h +(matc)m(hing)h(EXTNAME)227 1007 y(\(or)i(HDUNAME\))h(k)m(eyw)m(ord)f +(will)f(b)s(e)g(found.)55 b(If)34 b(no)i(matc)m(hing)g(HDU)g(is)g +(found)e(in)h(the)g(\014le)h(then)f(the)227 1120 y(curren)m(t)30 +b(HDU)i(will)e(remain)h(unc)m(hanged)f(and)f(a)i(status)g(=)f(BAD)p +2535 1120 V 34 w(HDU)p 2774 1120 V 33 w(NUM)h(will)g(b)s(e)f(returned.) +95 1398 y Fe(int)47 b(fits_movabs_hdu)d(/)j(ffmahd)286 +1511 y(\(fitsfile)f(*fptr,)g(int)h(hdunum,)e(>)j(int)f(*hdutype,)e(int) +i(*status\))95 1736 y(int)g(fits_movrel_hdu)d(/)j(ffmrhd)286 +1849 y(\(fitsfile)f(*fptr,)g(int)h(nmove,)f(>)h(int)g(*hdutype,)e(int)i +(*status\))95 2075 y(int)g(fits_movnam_hdu)d(/)j(ffmnhd)286 +2188 y(\(fitsfile)f(*fptr,)g(int)h(hdutype,)e(char)i(*extname,)e(int)i +(extver,)f(>)h(int)g(*status\))0 2466 y Fi(2)81 b Fj(Return)38 +b(the)i(total)h(n)m(um)m(b)s(er)d(of)i(HDUs)g(in)f(the)h(FITS)f +(\014le.)68 b(This)39 b(returns)f(the)h(n)m(um)m(b)s(er)g(of)g +(completely)227 2579 y(de\014ned)30 b(HDUs)h(in)f(the)h(\014le.)42 +b(If)30 b(a)h(new)f(HDU)h(has)g(just)f(b)s(een)g(added)f(to)j(the)f +(FITS)f(\014le,)h(then)f(that)h(last)227 2692 y(HDU)f(will)f(only)g(b)s +(e)g(coun)m(ted)g(if)g(it)h(has)e(b)s(een)h(closed,)h(or)f(if)g(data)h +(has)e(b)s(een)h(written)g(to)g(the)g(HDU.)h(The)227 +2805 y(curren)m(t)g(HDU)i(remains)e(unc)m(hanged)g(b)m(y)g(this)g +(routine.)95 3082 y Fe(int)47 b(fits_get_num_hdus)c(/)48 +b(ffthdu)286 3195 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdunum,)f(int)h +(*status\))0 3473 y Fi(3)81 b Fj(Return)31 b(the)h(n)m(um)m(b)s(er)f (of)h(the)h(curren)m(t)e(HDU)i(\(CHDU\))h(in)d(the)i(FITS)e(\014le)h -(\(where)g(the)g(primary)g(arra)m(y)g(=)227 3237 y(1\).)42 +(\(where)g(the)g(primary)g(arra)m(y)g(=)227 3586 y(1\).)42 b(This)29 b(function)h(returns)g(the)g(HDU)h(n)m(um)m(b)s(er)e(rather)h -(than)h(a)f(status)h(v)-5 b(alue.)95 3484 y Fe(int)47 -b(fits_get_hdu_num)d(/)j(ffghdn)286 3597 y(\(fitsfile)f(*fptr,)g(>)h -(int)g(*hdunum\))0 3844 y Fi(4)81 b Fj(Return)38 b(the)h(t)m(yp)s(e)h +(than)h(a)f(status)h(v)-5 b(alue.)95 3864 y Fe(int)47 +b(fits_get_hdu_num)d(/)j(ffghdn)286 3977 y(\(fitsfile)f(*fptr,)g(>)h +(int)g(*hdunum\))0 4255 y Fi(4)81 b Fj(Return)38 b(the)h(t)m(yp)s(e)h (of)f(the)h(curren)m(t)f(HDU)h(in)f(the)g(FITS)g(\014le.)67 b(The)39 b(p)s(ossible)g(v)-5 b(alues)39 b(for)g(hdut)m(yp)s(e)f(are:) -227 3957 y(IMA)m(GE)p 546 3957 V 34 w(HDU,)31 b(ASCI)s(I)p -1095 3957 V 32 w(TBL,)f(or)g(BINAR)-8 b(Y)p 1840 3957 -V 34 w(TBL.)95 4204 y Fe(int)47 b(fits_get_hdu_type)c(/)48 -b(ffghdt)286 4317 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdutype,)e(int)i -(*status\))0 4564 y Fi(5)81 b Fj(Cop)m(y)24 b(all)h(or)f(part)g(of)g +227 4368 y(IMA)m(GE)p 546 4368 V 34 w(HDU,)31 b(ASCI)s(I)p +1095 4368 V 32 w(TBL,)f(or)g(BINAR)-8 b(Y)p 1840 4368 +V 34 w(TBL.)95 4646 y Fe(int)47 b(fits_get_hdu_type)c(/)48 +b(ffghdt)286 4759 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdutype,)e(int)i +(*status\))0 5036 y Fi(5)81 b Fj(Cop)m(y)24 b(all)h(or)f(part)g(of)g (the)g(HDUs)h(in)f(the)g(FITS)g(\014le)g(asso)s(ciated)h(with)f(infptr) -f(and)h(app)s(end)e(them)i(to)h(the)g(end)227 4677 y(of)f(the)f(FITS)f +f(and)h(app)s(end)e(them)i(to)h(the)g(end)227 5149 y(of)f(the)f(FITS)f (\014le)i(asso)s(ciated)g(with)f(outfptr.)38 b(If)23 b('previous')g(is)g(true)g(\(not)h(0\),)i(then)d(an)m(y)g(HDUs)h -(preceding)227 4789 y(the)35 b(curren)m(t)f(HDU)g(in)g(the)h(input)e +(preceding)227 5262 y(the)35 b(curren)m(t)f(HDU)g(in)g(the)h(input)e (\014le)h(will)h(b)s(e)e(copied)i(to)g(the)f(output)g(\014le.)52 -b(Similarly)-8 b(,)36 b('curren)m(t')f(and)227 4902 y('follo)m(wing')c +b(Similarly)-8 b(,)36 b('curren)m(t')f(and)227 5375 y('follo)m(wing')c (determine)e(whether)f(the)h(curren)m(t)g(HDU,)g(and/or)g(an)m(y)g (follo)m(wing)h(HDUs)g(in)e(the)h(input)f(\014le)227 -5015 y(will)i(b)s(e)f(copied)i(to)f(the)g(output)f(\014le.)41 +5488 y(will)i(b)s(e)f(copied)i(to)f(the)g(output)f(\014le.)41 b(Th)m(us,)29 b(if)g(all)i(3)f(parameters)g(are)g(true,)g(then)g(the)f -(en)m(tire)i(input)e(\014le)227 5128 y(will)36 b(b)s(e)e(copied.)56 +(en)m(tire)i(input)e(\014le)227 5601 y(will)36 b(b)s(e)e(copied.)56 b(On)35 b(exit,)i(the)f(curren)m(t)f(HDU)h(in)e(the)i(input)e(\014le)i (will)f(b)s(e)g(unc)m(hanged,)h(and)f(the)g(last)227 -5241 y(HDU)c(in)f(the)h(output)f(\014le)g(will)h(b)s(e)f(the)g(curren)m -(t)h(HDU.)95 5488 y Fe(int)47 b(fits_copy_file)d(/)k(ffcpfl)286 -5601 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(previous,)e -(int)i(current,)477 5714 y(int)g(following,)e(>)j(int)f(*status\))p -eop end +5714 y(HDU)c(in)f(the)h(output)f(\014le)g(will)h(b)s(e)f(the)g(curren)m +(t)h(HDU.)p eop end %%Page: 37 45 -TeXDict begin 37 44 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.37) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.4.)72 -b(HEADER)31 b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 -b Fj(37)0 555 y Fi(6)81 b Fj(Cop)m(y)34 b(the)h(curren)m(t)f(HDU)h -(from)f(the)g(FITS)g(\014le)h(asso)s(ciated)g(with)g(infptr)e(and)h -(app)s(end)e(it)j(to)g(the)g(end)f(of)227 668 y(the)39 -b(FITS)e(\014le)h(asso)s(ciated)i(with)e(outfptr.)64 -b(Space)38 b(ma)m(y)h(b)s(e)e(reserv)m(ed)i(for)f(MOREKEYS)f -(additional)227 781 y(k)m(eyw)m(ords)31 b(in)f(the)h(output)f(header.) -95 1032 y Fe(int)47 b(fits_copy_hdu)e(/)i(ffcopy)286 -1144 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(morekeys,)e -(>)j(int)f(*status\))0 1395 y Fi(7)81 b Fj(W)-8 b(rite)31 +TeXDict begin 37 44 bop 0 299 a Fh(5.4.)72 b(HEADER)31 +b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 b Fj(37)95 +555 y Fe(int)47 b(fits_copy_file)d(/)k(ffcpfl)286 668 +y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(previous,)e(int) +i(current,)477 781 y(int)g(following,)e(>)j(int)f(*status\))0 +1042 y Fi(6)81 b Fj(Cop)m(y)34 b(the)h(curren)m(t)f(HDU)h(from)f(the)g +(FITS)g(\014le)h(asso)s(ciated)g(with)g(infptr)e(and)h(app)s(end)e(it)j +(to)g(the)g(end)f(of)227 1155 y(the)39 b(FITS)e(\014le)h(asso)s(ciated) +i(with)e(outfptr.)64 b(Space)38 b(ma)m(y)h(b)s(e)e(reserv)m(ed)i(for)f +(MOREKEYS)f(additional)227 1268 y(k)m(eyw)m(ords)31 b(in)f(the)h +(output)f(header.)95 1529 y Fe(int)47 b(fits_copy_hdu)e(/)i(ffcopy)286 +1642 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(morekeys,)e +(>)j(int)f(*status\))0 1903 y Fi(7)81 b Fj(W)-8 b(rite)31 b(the)g(curren)m(t)f(HDU)h(in)f(the)h(input)e(FITS)h(\014le)g(to)h(the) g(output)f(FILE)g(stream)h(\(e.g.,)h(to)f(stdout\).)95 -1645 y Fe(int)47 b(fits_write_hdu)d(/)k(ffwrhdu)286 1758 +2164 y Fe(int)47 b(fits_write_hdu)d(/)k(ffwrhdu)286 2277 y(\(fitsfile)e(*infptr,)f(FILE)i(*stream,)e(>)j(int)f(*status\))0 -2009 y Fi(8)81 b Fj(Cop)m(y)43 b(the)h(header)g(\(and)f(not)h(the)g +2538 y Fi(8)81 b Fj(Cop)m(y)43 b(the)h(header)g(\(and)f(not)h(the)g (data\))h(from)e(the)h(CHDU)g(asso)s(ciated)h(with)f(infptr)e(to)j(the) -f(CHDU)227 2122 y(asso)s(ciated)28 b(with)e(outfptr.)39 +f(CHDU)227 2651 y(asso)s(ciated)28 b(with)e(outfptr.)39 b(If)26 b(the)h(curren)m(t)f(output)g(HDU)h(is)g(not)f(completely)i -(empt)m(y)-8 b(,)29 b(then)d(the)h(CHDU)227 2235 y(will)35 +(empt)m(y)-8 b(,)29 b(then)d(the)h(CHDU)227 2764 y(will)35 b(b)s(e)f(closed)h(and)f(a)h(new)f(HDU)h(will)g(b)s(e)f(app)s(ended)e (to)j(the)g(output)f(\014le.)53 b(An)34 b(empt)m(y)h(output)f(data)227 -2348 y(unit)c(will)h(b)s(e)f(created)h(with)f(all)h(v)-5 -b(alues)31 b(initially)h(=)e(0\).)95 2598 y Fe(int)47 -b(fits_copy_header)d(/)j(ffcphd)286 2711 y(\(fitsfile)f(*infptr,)f -(fitsfile)h(*outfptr,)f(>)i(int)g(*status\))0 2962 y +2877 y(unit)c(will)h(b)s(e)f(created)h(with)f(all)h(v)-5 +b(alues)31 b(initially)h(=)e(0\).)95 3138 y Fe(int)47 +b(fits_copy_header)d(/)j(ffcphd)286 3251 y(\(fitsfile)f(*infptr,)f +(fitsfile)h(*outfptr,)f(>)i(int)g(*status\))0 3512 y Fi(9)81 b Fj(Delete)35 b(the)e(CHDU)h(in)f(the)g(FITS)f(\014le.)50 b(An)m(y)33 b(follo)m(wing)i(HDUs)e(will)h(b)s(e)e(shifted)h(forw)m -(ard)g(in)g(the)g(\014le,)h(to)227 3074 y(\014ll)k(in)f(the)g(gap)h +(ard)g(in)g(the)g(\014le,)h(to)227 3625 y(\014ll)k(in)f(the)g(gap)h (created)g(b)m(y)g(the)f(deleted)h(HDU.)h(In)d(the)i(case)g(of)g -(deleting)g(the)g(primary)e(arra)m(y)i(\(the)227 3187 +(deleting)g(the)g(primary)e(arra)m(y)i(\(the)227 3738 y(\014rst)30 b(HDU)h(in)f(the)h(\014le\))g(then)f(the)h(curren)m(t)f (primary)f(arra)m(y)i(will)g(b)s(e)f(replace)h(b)m(y)g(a)g(n)m(ull)f -(primary)f(arra)m(y)227 3300 y(con)m(taining)k(the)f(minim)m(um)e(set)i +(primary)f(arra)m(y)227 3851 y(con)m(taining)k(the)f(minim)m(um)e(set)i (of)g(required)e(k)m(eyw)m(ords)i(and)e(no)i(data.)44 -b(If)31 b(there)g(are)h(more)f(extensions)227 3413 y(in)f(the)g(\014le) +b(If)31 b(there)g(are)h(more)f(extensions)227 3964 y(in)f(the)g(\014le) g(follo)m(wing)i(the)e(one)g(that)h(is)f(deleted,)h(then)f(the)g(the)g (CHDU)h(will)f(b)s(e)g(rede\014ned)e(to)j(p)s(oin)m(t)f(to)227 -3526 y(the)d(follo)m(wing)h(extension.)41 b(If)26 b(there)h(are)g(no)g +4077 y(the)d(follo)m(wing)h(extension.)41 b(If)26 b(there)h(are)g(no)g (follo)m(wing)h(extensions)f(then)g(the)g(CHDU)g(will)g(b)s(e)f -(rede\014ned)227 3639 y(to)36 b(p)s(oin)m(t)f(to)g(the)g(previous)f +(rede\014ned)227 4190 y(to)36 b(p)s(oin)m(t)f(to)g(the)g(previous)f (HDU.)i(The)e(output)h(hdut)m(yp)s(e)e(parameter)i(returns)f(the)h(t)m -(yp)s(e)g(of)f(the)h(new)227 3752 y(CHDU.)c(A)g(n)m(ull)f(p)s(oin)m +(yp)s(e)g(of)f(the)h(new)227 4302 y(CHDU.)c(A)g(n)m(ull)f(p)s(oin)m (ter)g(ma)m(y)h(b)s(e)f(giv)m(en)i(for)e(hdut)m(yp)s(e)f(if)h(the)h -(returned)e(v)-5 b(alue)31 b(is)f(not)h(needed.)95 4002 -y Fe(int)47 b(fits_delete_hdu)d(/)j(ffdhdu)286 4115 y(\(fitsfile)f -(*fptr,)g(>)h(int)g(*hdutype,)e(int)i(*status\))0 4271 -y -SDict begin H.S end - 0 4271 a 0 4271 a -SDict begin 13.6 H.A end - 0 4271 a 0 4271 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.4) cvn /DEST pdfmark -end - 0 4271 a 177 x -Ff(5.4)135 b(Header)46 b(Keyw)l(ord)g(Read/W)-11 b(rite)46 -b(Routines)0 4698 y Fj(These)35 b(routines)g(read)f(or)h(write)h(k)m +(returned)e(v)-5 b(alue)31 b(is)f(not)h(needed.)95 4564 +y Fe(int)47 b(fits_delete_hdu)d(/)j(ffdhdu)286 4676 y(\(fitsfile)f +(*fptr,)g(>)h(int)g(*hdutype,)e(int)i(*status\))0 5012 +y Ff(5.4)135 b(Header)46 b(Keyw)l(ord)g(Read/W)-11 b(rite)46 +b(Routines)0 5262 y Fj(These)35 b(routines)g(read)f(or)h(write)h(k)m (eyw)m(ords)f(in)g(the)g(Curren)m(t)f(Header)h(Unit)g(\(CHU\).)h(Wild)g -(card)e(c)m(haracters)0 4811 y(\(*,)28 b(?,)g(or)e(#\))h(ma)m(y)g(b)s +(card)e(c)m(haracters)0 5375 y(\(*,)28 b(?,)g(or)e(#\))h(ma)m(y)g(b)s (e)f(used)g(when)f(sp)s(ecifying)i(the)g(name)f(of)h(the)g(k)m(eyw)m (ord)g(to)g(b)s(e)f(read:)39 b(a)27 b(')10 b(?')39 b(will)27 -b(matc)m(h)h(an)m(y)0 4924 y(single)35 b(c)m(haracter)g(at)g(that)f(p)s +b(matc)m(h)h(an)m(y)0 5488 y(single)35 b(c)m(haracter)g(at)g(that)f(p)s (osition)g(in)g(the)g(k)m(eyw)m(ord)h(name)f(and)f(a)h('*')h(will)g -(matc)m(h)f(an)m(y)h(length)f(\(including)0 5036 y(zero\))c(string)f +(matc)m(h)f(an)m(y)h(length)f(\(including)0 5601 y(zero\))c(string)f (of)g(c)m(haracters.)42 b(The)28 b('#')h(c)m(haracter)i(will)e(matc)m (h)h(an)m(y)f(consecutiv)m(e)i(string)e(of)g(decimal)h(digits)f(\(0)0 -5149 y(-)35 b(9\).)55 b(When)35 b(a)g(wild)g(card)g(is)g(used)f(the)h +5714 y(-)35 b(9\).)55 b(When)35 b(a)g(wild)g(card)g(is)g(used)f(the)h (routine)g(will)g(only)g(searc)m(h)h(for)f(a)g(matc)m(h)h(from)e(the)h -(curren)m(t)g(header)0 5262 y(p)s(osition)27 b(to)h(the)f(end)f(of)h -(the)g(header)g(and)f(will)h(not)g(resume)g(the)g(searc)m(h)g(from)g -(the)g(top)g(of)g(the)g(header)g(bac)m(k)g(to)0 5375 -y(the)k(original)i(header)e(p)s(osition)g(as)h(is)f(done)g(when)f(no)h -(wildcards)g(are)h(included)e(in)h(the)g(k)m(eyw)m(ord)h(name.)43 -b(The)0 5488 y(\014ts)p 127 5488 28 4 v 32 w(read)p 331 -5488 V 33 w(record)29 b(routine)h(ma)m(y)g(b)s(e)f(used)f(to)i(set)g -(the)g(starting)g(p)s(osition)f(when)g(doing)g(wild)g(card)h(searc)m -(hes.)41 b(A)0 5601 y(status)29 b(v)-5 b(alue)30 b(of)f(KEY)p -809 5601 V 32 w(NO)p 980 5601 V 33 w(EXIST)f(is)h(returned)e(if)i(the)g -(sp)s(eci\014ed)f(k)m(eyw)m(ord)i(to)f(b)s(e)g(read)f(is)h(not)h(found) -d(in)i(the)0 5714 y(header.)p eop end +(curren)m(t)g(header)p eop end %%Page: 38 46 -TeXDict begin 38 45 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.38) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(38)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 -a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.4.1) cvn /DEST pdfmark -end - 0 464 a 91 x Fd(5.4.1)112 b(Keyw)m(ord)38 b(Reading)g -(Routines)0 764 y Fi(1)81 b Fj(Return)33 b(the)h(n)m(um)m(b)s(er)e(of)i -(existing)h(k)m(eyw)m(ords)g(\(not)f(coun)m(ting)h(the)f(END)g(k)m(eyw) -m(ord\))h(and)e(the)h(amoun)m(t)h(of)227 877 y(space)e(curren)m(tly)f -(a)m(v)-5 b(ailable)34 b(for)e(more)g(k)m(eyw)m(ords.)46 -b(It)32 b(returns)e(morek)m(eys)j(=)f(-1)g(if)g(the)g(header)g(has)g -(not)227 990 y(y)m(et)27 b(b)s(een)d(closed.)40 b(Note)26 -b(that)g(CFITSIO)d(will)j(dynamically)g(add)e(space)i(if)f(required)f -(when)g(writing)h(new)227 1103 y(k)m(eyw)m(ords)32 b(to)g(a)f(header)g -(so)h(in)f(practice)h(there)g(is)f(no)g(limit)h(to)g(the)f(n)m(um)m(b)s -(er)f(of)i(k)m(eyw)m(ords)f(that)h(can)g(b)s(e)227 1216 -y(added)e(to)h(a)f(header.)41 b(A)30 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m -(y)f(b)s(e)g(en)m(tered)h(for)f(the)g(morek)m(eys)h(parameter)g(if)f -(it's)h(v)-5 b(alue)31 b(is)227 1329 y(not)g(needed.)95 -1588 y Fe(int)47 b(fits_get_hdrspace)c(/)48 b(ffghsp)286 -1701 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*keysexist,)e(int)i(*morekeys,)e -(int)i(*status\))0 1960 y Fi(2)81 b Fj(Return)28 b(the)h(sp)s -(eci\014ed)f(k)m(eyw)m(ord.)41 b(In)29 b(the)g(\014rst)f(routine,)i -(the)f(datat)m(yp)s(e)h(parameter)g(sp)s(eci\014es)e(the)h(desired)227 -2073 y(returned)e(data)h(t)m(yp)s(e)g(of)g(the)g(k)m(eyw)m(ord)h(v)-5 -b(alue)28 b(and)f(can)h(ha)m(v)m(e)h(one)f(of)g(the)g(follo)m(wing)h -(sym)m(b)s(olic)g(constan)m(t)227 2186 y(v)-5 b(alues:)47 -b(TSTRING,)33 b(TLOGICAL)f(\(==)h(in)m(t\),)j(TBYTE,)d(TSHOR)-8 -b(T,)33 b(TUSHOR)-8 b(T,)32 b(TINT,)h(TUINT,)227 2298 -y(TLONG,)24 b(TULONG,)g(TLONGLONG,)g(TFLO)m(A)-8 b(T,)25 -b(TDOUBLE,)f(TCOMPLEX,)f(and)h(TDBLCOM-)227 2411 y(PLEX.)j(Within)f -(the)h(con)m(text)h(of)f(this)g(routine,)g(TSTRING)f(corresp)s(onds)f -(to)i(a)g('c)m(har*')h(data)f(t)m(yp)s(e,)h(i.e.,)227 -2524 y(a)k(p)s(oin)m(ter)g(to)g(a)g(c)m(haracter)i(arra)m(y)-8 +TeXDict begin 38 45 bop 0 299 a Fj(38)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fj(p)s(osition)d(to)h(the)f(end)f(of)h(the)g +(header)g(and)f(will)h(not)g(resume)g(the)g(searc)m(h)g(from)g(the)g +(top)g(of)g(the)g(header)g(bac)m(k)g(to)0 668 y(the)k(original)i +(header)e(p)s(osition)g(as)h(is)f(done)g(when)f(no)h(wildcards)g(are)h +(included)e(in)h(the)g(k)m(eyw)m(ord)h(name.)43 b(The)0 +781 y(\014ts)p 127 781 28 4 v 32 w(read)p 331 781 V 33 +w(record)29 b(routine)h(ma)m(y)g(b)s(e)f(used)f(to)i(set)g(the)g +(starting)g(p)s(osition)f(when)g(doing)g(wild)g(card)h(searc)m(hes.)41 +b(A)0 894 y(status)29 b(v)-5 b(alue)30 b(of)f(KEY)p 809 +894 V 32 w(NO)p 980 894 V 33 w(EXIST)f(is)h(returned)e(if)i(the)g(sp)s +(eci\014ed)f(k)m(eyw)m(ord)i(to)f(b)s(e)g(read)f(is)h(not)h(found)d(in) +i(the)0 1007 y(header.)0 1291 y Fd(5.4.1)112 b(Keyw)m(ord)38 +b(Reading)g(Routines)0 1493 y Fi(1)81 b Fj(Return)33 +b(the)h(n)m(um)m(b)s(er)e(of)i(existing)h(k)m(eyw)m(ords)g(\(not)f +(coun)m(ting)h(the)f(END)g(k)m(eyw)m(ord\))h(and)e(the)h(amoun)m(t)h +(of)227 1606 y(space)e(curren)m(tly)f(a)m(v)-5 b(ailable)34 +b(for)e(more)g(k)m(eyw)m(ords.)46 b(It)32 b(returns)e(morek)m(eys)j(=)f +(-1)g(if)g(the)g(header)g(has)g(not)227 1719 y(y)m(et)27 +b(b)s(een)d(closed.)40 b(Note)26 b(that)g(CFITSIO)d(will)j(dynamically) +g(add)e(space)i(if)f(required)f(when)g(writing)h(new)227 +1832 y(k)m(eyw)m(ords)32 b(to)g(a)f(header)g(so)h(in)f(practice)h +(there)g(is)f(no)g(limit)h(to)g(the)f(n)m(um)m(b)s(er)f(of)i(k)m(eyw)m +(ords)f(that)h(can)g(b)s(e)227 1945 y(added)e(to)h(a)f(header.)41 +b(A)30 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)f(b)s(e)g(en)m(tered)h(for)f +(the)g(morek)m(eys)h(parameter)g(if)f(it's)h(v)-5 b(alue)31 +b(is)227 2058 y(not)g(needed.)95 2278 y Fe(int)47 b(fits_get_hdrspace)c +(/)48 b(ffghsp)286 2391 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*keysexist,)e +(int)i(*morekeys,)e(int)i(*status\))0 2610 y Fi(2)81 +b Fj(Return)28 b(the)h(sp)s(eci\014ed)f(k)m(eyw)m(ord.)41 +b(In)29 b(the)g(\014rst)f(routine,)i(the)f(datat)m(yp)s(e)h(parameter)g +(sp)s(eci\014es)e(the)h(desired)227 2723 y(returned)e(data)h(t)m(yp)s +(e)g(of)g(the)g(k)m(eyw)m(ord)h(v)-5 b(alue)28 b(and)f(can)h(ha)m(v)m +(e)h(one)f(of)g(the)g(follo)m(wing)h(sym)m(b)s(olic)g(constan)m(t)227 +2836 y(v)-5 b(alues:)47 b(TSTRING,)33 b(TLOGICAL)f(\(==)h(in)m(t\),)j +(TBYTE,)d(TSHOR)-8 b(T,)33 b(TUSHOR)-8 b(T,)32 b(TINT,)h(TUINT,)227 +2949 y(TLONG,)24 b(TULONG,)g(TLONGLONG,)g(TFLO)m(A)-8 +b(T,)25 b(TDOUBLE,)f(TCOMPLEX,)f(and)h(TDBLCOM-)227 3062 +y(PLEX.)j(Within)f(the)h(con)m(text)h(of)f(this)g(routine,)g(TSTRING)f +(corresp)s(onds)f(to)i(a)g('c)m(har*')h(data)f(t)m(yp)s(e,)h(i.e.,)227 +3175 y(a)k(p)s(oin)m(ter)g(to)g(a)g(c)m(haracter)i(arra)m(y)-8 b(.)45 b(Data)33 b(t)m(yp)s(e)f(con)m(v)m(ersion)h(will)f(b)s(e)f(p)s (erformed)f(for)i(n)m(umeric)f(v)-5 b(alues)32 b(if)227 -2637 y(the)27 b(k)m(eyw)m(ord)g(v)-5 b(alue)27 b(do)s(es)f(not)h(ha)m +3288 y(the)27 b(k)m(eyw)m(ord)g(v)-5 b(alue)27 b(do)s(es)f(not)h(ha)m (v)m(e)h(the)f(same)g(data)g(t)m(yp)s(e.)40 b(If)26 b(the)h(v)-5 b(alue)27 b(of)g(the)f(k)m(eyw)m(ord)i(is)e(unde\014ned)227 -2750 y(\(i.e.,)31 b(the)e(v)-5 b(alue)30 b(\014eld)e(is)h(blank\))g +3401 y(\(i.e.,)31 b(the)e(v)-5 b(alue)30 b(\014eld)e(is)h(blank\))g (then)f(an)h(error)g(status)g(=)f(V)-10 b(ALUE)p 2627 -2750 28 4 v 33 w(UNDEFINED)30 b(will)g(b)s(e)e(returned.)227 -2900 y(The)c(second)f(routine)h(returns)f(the)h(k)m(eyw)m(ord)g(v)-5 +3401 V 33 w(UNDEFINED)30 b(will)g(b)s(e)e(returned.)227 +3544 y(The)c(second)f(routine)h(returns)f(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)24 b(as)g(a)g(c)m(haracter)i(string)d(\(a)i(literal)g(cop)m(y)g -(of)f(what)f(is)h(in)227 3013 y(the)j(v)-5 b(alue)26 +(of)f(what)f(is)h(in)227 3657 y(the)j(v)-5 b(alue)26 b(\014eld\))g(regardless)h(of)f(the)g(in)m(trinsic)h(data)g(t)m(yp)s(e) f(of)g(the)g(k)m(eyw)m(ord.)40 b(The)26 b(third)f(routine)h(returns)227 -3126 y(the)45 b(en)m(tire)h(80-c)m(haracter)i(header)c(record)h(of)g +3770 y(the)45 b(en)m(tire)h(80-c)m(haracter)i(header)c(record)h(of)g (the)g(k)m(eyw)m(ord,)k(with)c(an)m(y)g(trailing)h(blank)e(c)m -(haracters)227 3239 y(stripp)s(ed)37 b(o\013.)64 b(The)38 +(haracters)227 3883 y(stripp)s(ed)37 b(o\013.)64 b(The)38 b(fourth)f(routine)h(returns)f(the)h(\(next\))h(header)f(record)g(that) -h(con)m(tains)g(the)f(literal)227 3352 y(string)31 b(of)f(c)m +h(con)m(tains)g(the)f(literal)227 3996 y(string)31 b(of)f(c)m (haracters)i(sp)s(eci\014ed)e(b)m(y)g(the)g('string')h(argumen)m(t.)227 -3502 y(If)f(a)h(NULL)f(commen)m(t)i(p)s(oin)m(ter)e(is)g(supplied)g +4139 y(If)f(a)h(NULL)f(commen)m(t)i(p)s(oin)m(ter)e(is)g(supplied)g (then)g(the)g(commen)m(t)i(string)e(will)h(not)f(b)s(e)g(returned.)95 -3761 y Fe(int)47 b(fits_read_key)e(/)i(ffgky)286 3874 +4359 y Fe(int)47 b(fits_read_key)e(/)i(ffgky)286 4472 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e(>)i(DTYPE) -g(*value,)334 3987 y(char)g(*comment,)e(int)i(*status\))95 -4213 y(int)g(fits_read_keyword)c(/)48 b(ffgkey)286 4326 +g(*value,)334 4585 y(char)g(*comment,)e(int)i(*status\))95 +4811 y(int)g(fits_read_keyword)c(/)48 b(ffgkey)286 4924 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(char)g(*value,)f(char)g -(*comment,)334 4439 y(int)h(*status\))95 4664 y(int)g(fits_read_card)d -(/)k(ffgcrd)286 4777 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h -(char)g(*card,)f(int)h(*status\))95 5003 y(int)g(fits_read_str)e(/)i -(ffgstr)286 5116 y(\(fitsfile)f(*fptr,)g(char)g(*string,)g(>)h(char)g -(*card,)f(int)h(*status\))0 5375 y Fi(3)81 b Fj(Read)22 -b(a)g(string-v)-5 b(alued)23 b(k)m(eyw)m(ord)f(and)g(return)e(the)j -(string)f(length,)i(the)e(v)-5 b(alue)23 b(string,)h(and/or)e(the)g -(commen)m(t)227 5488 y(\014eld.)48 b(The)33 b(\014rst)f(routine,)i -(\013gksl,)g(simply)e(returns)g(the)h(length)h(of)f(the)g(c)m(haracter) -h(string)f(v)-5 b(alue)34 b(of)f(the)227 5601 y(sp)s(eci\014ed)g(k)m -(eyw)m(ord.)50 b(The)32 b(second)i(routine,)g(\013gsky)-8 -b(,)35 b(also)f(returns)e(up)g(to)i(maxc)m(har)g(c)m(haracters)g(of)g -(the)227 5714 y(k)m(eyw)m(ord)d(v)-5 b(alue)31 b(string,)g(starting)g -(with)g(the)f(\014rstc)m(har)g(c)m(haracter,)j(and)d(the)g(k)m(eyw)m -(ord)h(commen)m(t)h(string)p eop end +(*comment,)334 5036 y(int)h(*status\))95 5262 y(int)g(fits_read_card)d +(/)k(ffgcrd)286 5375 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h +(char)g(*card,)f(int)h(*status\))95 5601 y(int)g(fits_read_str)e(/)i +(ffgstr)286 5714 y(\(fitsfile)f(*fptr,)g(char)g(*string,)g(>)h(char)g +(*card,)f(int)h(*status\))p eop end %%Page: 39 47 -TeXDict begin 39 46 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.39) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.4.)72 -b(HEADER)31 b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 -b Fj(39)227 555 y(\(unless)33 b(the)h(input)e(v)-5 b(alue)34 -b(of)g(comm)f(=)g(NULL\).)h(The)f(v)-5 b(aluelen)34 b(argumen)m(t)g -(returns)e(the)h(total)j(length)227 668 y(of)c(the)f(k)m(eyw)m(ord)h(v) --5 b(alue)32 b(string)f(regardless)h(of)f(ho)m(w)h(m)m(uc)m(h)f(of)h -(the)f(string)g(is)h(actually)h(returned)d(\(whic)m(h)227 -781 y(dep)s(ends)25 b(on)i(the)g(v)-5 b(alue)27 b(of)g(the)g(\014rstc)m -(har)g(and)f(maxc)m(har)h(argumen)m(ts\).)40 b(Note)29 -b(that)e(the)g(v)-5 b(alue)27 b(c)m(haracter)227 894 -y(string)33 b(argumen)m(t)h(m)m(ust)f(b)s(e)f(allo)s(cated)j(large)g -(enough)e(to)g(also)i(hold)d(the)i(n)m(ull)f(terminator)g(at)h(the)g -(end)227 1007 y(of)41 b(the)f(returned)f(string.)69 b(These)40 -b(routines)g(supp)s(ort)f(string)h(k)m(eyw)m(ords)g(that)h(use)e(the)i -(CONTINUE)227 1120 y(con)m(v)m(en)m(tion)25 b(to)e(con)m(tin)m(ue)g -(long)g(string)f(v)-5 b(alues)23 b(o)m(v)m(er)h(m)m(ultiple)f(FITS)e -(header)h(records.)38 b(Normally)-8 b(,)26 b(string-)227 -1233 y(v)-5 b(alued)40 b(k)m(eyw)m(ords)h(ha)m(v)m(e)g(a)g(maxim)m(um)f -(length)h(of)f(68)h(c)m(haracters,)k(ho)m(w)m(ev)m(er,)f(CONTINUE'd)39 -b(string)227 1346 y(k)m(eyw)m(ords)31 b(ma)m(y)g(b)s(e)f(arbitrarily)g -(long.)95 1630 y Fe(int)47 b(fits_get_key_strlen)c(/)k(ffgksl)286 -1742 y(\(fitsfile)f(*fptr,)g(const)g(char)h(*keyname,)e(int)i(*length,) -e(int)i(*status\);)95 1968 y(int)g(fits_read_string_key)c(/)k(ffgsky) -334 2081 y(\(fitsfile)e(*fptr,)h(const)h(char)f(*keyname,)g(int)h -(firstchar,)e(int)i(maxchar,)334 2194 y(char)g(*value,)f(int)g -(*valuelen,)f(char)i(*comm,)f(int)h(*status\);)0 2478 +TeXDict begin 39 46 bop 0 299 a Fh(5.4.)72 b(HEADER)31 +b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 b Fj(39)0 +555 y Fi(3)81 b Fj(Read)22 b(a)g(string-v)-5 b(alued)23 +b(k)m(eyw)m(ord)f(and)g(return)e(the)j(string)f(length,)i(the)e(v)-5 +b(alue)23 b(string,)h(and/or)e(the)g(commen)m(t)227 668 +y(\014eld.)48 b(The)33 b(\014rst)f(routine,)i(\013gksl,)g(simply)e +(returns)g(the)h(length)h(of)f(the)g(c)m(haracter)h(string)f(v)-5 +b(alue)34 b(of)f(the)227 781 y(sp)s(eci\014ed)g(k)m(eyw)m(ord.)50 +b(The)32 b(second)i(routine,)g(\013gsky)-8 b(,)35 b(also)f(returns)e +(up)g(to)i(maxc)m(har)g(c)m(haracters)g(of)g(the)227 +894 y(k)m(eyw)m(ord)d(v)-5 b(alue)31 b(string,)g(starting)g(with)g(the) +f(\014rstc)m(har)g(c)m(haracter,)j(and)d(the)g(k)m(eyw)m(ord)h(commen)m +(t)h(string)227 1007 y(\(unless)h(the)h(input)e(v)-5 +b(alue)34 b(of)g(comm)f(=)g(NULL\).)h(The)f(v)-5 b(aluelen)34 +b(argumen)m(t)g(returns)e(the)h(total)j(length)227 1120 +y(of)c(the)f(k)m(eyw)m(ord)h(v)-5 b(alue)32 b(string)f(regardless)h(of) +f(ho)m(w)h(m)m(uc)m(h)f(of)h(the)f(string)g(is)h(actually)h(returned)d +(\(whic)m(h)227 1233 y(dep)s(ends)25 b(on)i(the)g(v)-5 +b(alue)27 b(of)g(the)g(\014rstc)m(har)g(and)f(maxc)m(har)h(argumen)m +(ts\).)40 b(Note)29 b(that)e(the)g(v)-5 b(alue)27 b(c)m(haracter)227 +1346 y(string)33 b(argumen)m(t)h(m)m(ust)f(b)s(e)f(allo)s(cated)j +(large)g(enough)e(to)g(also)i(hold)d(the)i(n)m(ull)f(terminator)g(at)h +(the)g(end)227 1458 y(of)41 b(the)f(returned)f(string.)69 +b(These)40 b(routines)g(supp)s(ort)f(string)h(k)m(eyw)m(ords)g(that)h +(use)e(the)i(CONTINUE)227 1571 y(con)m(v)m(en)m(tion)25 +b(to)e(con)m(tin)m(ue)g(long)g(string)f(v)-5 b(alues)23 +b(o)m(v)m(er)h(m)m(ultiple)f(FITS)e(header)h(records.)38 +b(Normally)-8 b(,)26 b(string-)227 1684 y(v)-5 b(alued)40 +b(k)m(eyw)m(ords)h(ha)m(v)m(e)g(a)g(maxim)m(um)f(length)h(of)f(68)h(c)m +(haracters,)k(ho)m(w)m(ev)m(er,)f(CONTINUE'd)39 b(string)227 +1797 y(k)m(eyw)m(ords)31 b(ma)m(y)g(b)s(e)f(arbitrarily)g(long.)95 +2039 y Fe(int)47 b(fits_get_key_strlen)c(/)k(ffgksl)286 +2151 y(\(fitsfile)f(*fptr,)g(const)g(char)h(*keyname,)e(int)i(*length,) +e(int)i(*status\);)95 2377 y(int)g(fits_read_string_key)c(/)k(ffgsky) +334 2490 y(\(fitsfile)e(*fptr,)h(const)h(char)f(*keyname,)g(int)h +(firstchar,)e(int)i(maxchar,)334 2603 y(char)g(*value,)f(int)g +(*valuelen,)f(char)i(*comm,)f(int)h(*status\);)0 2844 y Fi(4)81 b Fj(Return)38 b(the)h(n)m(th)f(header)h(record)g(in)f(the)i (CHU.)f(The)f(\014rst)g(k)m(eyw)m(ord)i(in)e(the)h(header)g(is)g(at)g -(k)m(eyn)m(um)g(=)227 2591 y(1;)53 b(if)45 b(k)m(eyn)m(um)g(=)f(0)h +(k)m(eyn)m(um)g(=)227 2957 y(1;)53 b(if)45 b(k)m(eyn)m(um)g(=)f(0)h (then)g(these)g(routines)g(simply)f(reset)h(the)h(in)m(ternal)f -(CFITSIO)e(p)s(oin)m(ter)i(to)h(the)227 2704 y(b)s(eginning)35 +(CFITSIO)e(p)s(oin)m(ter)i(to)h(the)227 3070 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s (erations)g(will)g(start)g(at)g(the)g(top)g(of)g(the)227 -2817 y(header)26 b(\(e.g.,)j(prior)c(to)h(searc)m(hing)h(for)f(k)m(eyw) +3183 y(header)26 b(\(e.g.,)j(prior)c(to)h(searc)m(hing)h(for)f(k)m(eyw) m(ords)g(using)f(wild)g(cards)h(in)f(the)h(k)m(eyw)m(ord)h(name\).)39 -b(The)26 b(\014rst)227 2930 y(routine)32 b(returns)e(the)i(en)m(tire)h +b(The)26 b(\014rst)227 3296 y(routine)32 b(returns)e(the)i(en)m(tire)h (80-c)m(haracter)h(header)e(record)g(\(with)f(trailing)i(blanks)e -(truncated\),)i(while)227 3043 y(the)41 b(second)f(routine)g(parses)g +(truncated\),)i(while)227 3409 y(the)41 b(second)f(routine)g(parses)g (the)g(record)h(and)e(returns)g(the)i(name,)i(v)-5 b(alue,)43 -b(and)d(commen)m(t)h(\014elds)f(as)227 3156 y(separate)32 +b(and)d(commen)m(t)h(\014elds)f(as)227 3522 y(separate)32 b(\(blank)f(truncated\))g(c)m(haracter)i(strings.)42 b(If)30 b(a)h(NULL)g(commen)m(t)h(p)s(oin)m(ter)f(is)g(giv)m(en)h(on)f -(input,)227 3268 y(then)f(the)h(commen)m(t)g(string)g(will)f(not)h(b)s -(e)f(returned.)95 3553 y Fe(int)47 b(fits_read_record)d(/)j(ffgrec)286 -3665 y(\(fitsfile)f(*fptr,)g(int)h(keynum,)e(>)j(char)f(*card,)f(int)h -(*status\))95 3891 y(int)g(fits_read_keyn)d(/)k(ffgkyn)286 -4004 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(>)j(char)f(*keyname,)e -(char)h(*value,)334 4117 y(char)h(*comment,)e(int)i(*status\))0 -4401 y Fi(5)81 b Fj(Return)44 b(the)i(next)g(k)m(eyw)m(ord)g(whose)f +(input,)227 3635 y(then)f(the)h(commen)m(t)g(string)g(will)f(not)h(b)s +(e)f(returned.)95 3876 y Fe(int)47 b(fits_read_record)d(/)j(ffgrec)286 +3989 y(\(fitsfile)f(*fptr,)g(int)h(keynum,)e(>)j(char)f(*card,)f(int)h +(*status\))95 4215 y(int)g(fits_read_keyn)d(/)k(ffgkyn)286 +4328 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(>)j(char)f(*keyname,)e +(char)h(*value,)334 4441 y(char)h(*comment,)e(int)i(*status\))0 +4682 y Fi(5)81 b Fj(Return)44 b(the)i(next)g(k)m(eyw)m(ord)g(whose)f (name)h(matc)m(hes)g(one)g(of)g(the)f(strings)h(in)f('inclist')i(but)e -(do)s(es)g(not)227 4514 y(matc)m(h)31 b(an)m(y)g(of)g(the)f(strings)g +(do)s(es)g(not)227 4795 y(matc)m(h)31 b(an)m(y)g(of)g(the)f(strings)g (in)g('exclist'.)43 b(The)30 b(strings)g(in)g(inclist)h(and)f(exclist)i -(ma)m(y)e(con)m(tain)i(wild)e(card)227 4627 y(c)m(haracters)k(\(*,)f +(ma)m(y)e(con)m(tain)i(wild)e(card)227 4908 y(c)m(haracters)k(\(*,)f (?,)f(and)f(#\))h(as)g(describ)s(ed)f(at)i(the)f(b)s(eginning)f(of)h (this)g(section.)46 b(This)31 b(routine)h(searc)m(hes)227 -4740 y(from)j(the)g(curren)m(t)g(header)g(p)s(osition)g(to)h(the)f(end) +5021 y(from)j(the)g(curren)m(t)g(header)g(p)s(osition)g(to)h(the)f(end) f(of)h(the)h(header,)g(only)-8 b(,)37 b(and)d(do)s(es)h(not)g(con)m -(tin)m(ue)i(the)227 4853 y(searc)m(h)32 b(from)e(the)h(top)g(of)g(the)g +(tin)m(ue)i(the)227 5134 y(searc)m(h)32 b(from)e(the)h(top)g(of)g(the)g (header)g(bac)m(k)g(to)h(the)f(original)h(p)s(osition.)42 -b(The)31 b(curren)m(t)f(header)h(p)s(osition)227 4966 +b(The)31 b(curren)m(t)f(header)h(p)s(osition)227 5247 y(ma)m(y)e(b)s(e)e(reset)h(with)g(the)g(\013grec)g(routine.)40 b(Note)29 b(that)g(nexc)f(ma)m(y)g(b)s(e)f(set)h(=)g(0)g(if)g(there)g -(are)g(no)g(k)m(eyw)m(ords)227 5079 y(to)h(b)s(e)f(excluded.)39 +(are)g(no)g(k)m(eyw)m(ords)227 5360 y(to)h(b)s(e)f(excluded.)39 b(This)28 b(routine)g(returns)f(status)h(=)g(KEY)p 2268 -5079 28 4 v 32 w(NO)p 2439 5079 V 33 w(EXIST)f(if)h(a)h(matc)m(hing)g -(k)m(eyw)m(ord)g(is)f(not)227 5191 y(found.)95 5475 y -Fe(int)47 b(fits_find_nextkey)c(/)48 b(ffgnxk)286 5588 -y(\(fitsfile)e(*fptr,)g(char)g(**inclist,)f(int)i(ninc,)g(char)f -(**exclist,)334 5701 y(int)h(nexc,)f(>)i(char)e(*card,)h(int)94 -b(*status\))p eop end +5360 28 4 v 32 w(NO)p 2439 5360 V 33 w(EXIST)f(if)h(a)h(matc)m(hing)g +(k)m(eyw)m(ord)g(is)f(not)227 5473 y(found.)95 5714 y +Fe(int)47 b(fits_find_nextkey)c(/)48 b(ffgnxk)p eop end %%Page: 40 48 -TeXDict begin 40 47 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.40) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(40)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(6)81 b Fj(Return)25 +TeXDict begin 40 47 bop 0 299 a Fj(40)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(char)g(**inclist,)f +(int)i(ninc,)g(char)f(**exclist,)334 668 y(int)h(nexc,)f(>)i(char)e +(*card,)h(int)94 b(*status\))0 959 y Fi(6)81 b Fj(Return)25 b(the)h(ph)m(ysical)g(units)g(string)g(from)f(an)h(existing)h(k)m(eyw)m (ord.)39 b(This)26 b(routine)g(uses)f(a)h(lo)s(cal)i(con)m(v)m(en)m -(tion,)227 668 y(sho)m(wn)d(in)g(the)g(follo)m(wing)i(example,)g(in)e +(tion,)227 1071 y(sho)m(wn)d(in)g(the)g(follo)m(wing)i(example,)g(in)e (whic)m(h)g(the)h(k)m(eyw)m(ord)f(units)g(are)h(enclosed)g(in)f(square) -g(brac)m(k)m(ets)h(in)227 781 y(the)k(b)s(eginning)f(of)h(the)g(k)m +g(brac)m(k)m(ets)h(in)227 1184 y(the)k(b)s(eginning)f(of)h(the)g(k)m (eyw)m(ord)g(commen)m(t)g(\014eld.)40 b(A)30 b(n)m(ull)g(string)f(is)h -(returned)e(if)i(no)f(units)g(are)h(de\014ned)227 894 -y(for)g(the)h(k)m(eyw)m(ord.)239 1135 y Fe(VELOCITY=)809 -b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 1361 y(int)h -(fits_read_key_unit)c(/)48 b(ffgunt)286 1474 y(\(fitsfile)e(*fptr,)g +(returned)e(if)i(no)f(units)g(are)h(de\014ned)227 1297 +y(for)g(the)h(k)m(eyw)m(ord.)239 1588 y Fe(VELOCITY=)809 +b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 1814 y(int)h +(fits_read_key_unit)c(/)48 b(ffgunt)286 1926 y(\(fitsfile)e(*fptr,)g (char)g(*keyname,)g(>)h(char)g(*unit,)f(int)h(*status\))0 -1715 y Fi(7)81 b Fj(Concatenate)39 b(the)f(header)f(k)m(eyw)m(ords)h +2217 y Fi(7)81 b Fj(Concatenate)39 b(the)f(header)f(k)m(eyw)m(ords)h (in)g(the)f(CHDU)h(in)m(to)h(a)f(single)g(long)g(string)g(of)g(c)m -(haracters.)64 b(This)227 1828 y(pro)m(vides)28 b(a)h(con)m(v)m(enien)m +(haracters.)64 b(This)227 2330 y(pro)m(vides)28 b(a)h(con)m(v)m(enien)m (t)h(w)m(a)m(y)f(of)g(passing)f(all)h(or)f(part)g(of)g(the)h(header)f -(information)g(in)g(a)h(FITS)e(HDU)i(to)227 1941 y(other)i +(information)g(in)g(a)h(FITS)e(HDU)i(to)227 2443 y(other)i (subroutines.)39 b(Eac)m(h)31 b(80-c)m(haracter)h(\014xed-length)f(k)m (eyw)m(ord)f(record)g(is)g(app)s(ended)e(to)j(the)f(output)227 -2054 y(c)m(haracter)j(string,)f(in)f(order,)g(with)g(no)g(in)m(terv)m +2556 y(c)m(haracter)j(string,)f(in)f(order,)g(with)g(no)g(in)m(terv)m (ening)i(separator)f(or)f(terminating)h(c)m(haracters.)45 -b(The)31 b(last)227 2167 y(header)e(record)g(is)g(terminated)h(with)f +b(The)31 b(last)227 2668 y(header)e(record)g(is)g(terminated)h(with)f (a)g(NULL)g(c)m(haracter.)42 b(These)29 b(routine)g(allo)s(cates)j -(memory)d(for)g(the)227 2279 y(returned)k(c)m(haracter)j(arra)m(y)-8 +(memory)d(for)g(the)227 2781 y(returned)k(c)m(haracter)j(arra)m(y)-8 b(,)37 b(so)d(the)h(calling)h(program)e(m)m(ust)g(free)g(the)h(memory)f -(when)f(\014nished.)51 b(The)227 2392 y(cleanest)32 b(w)m(a)m(y)g(to)f -(do)f(this)g(is)h(to)g(call)g(the)g(\014ts)p 1823 2392 -28 4 v 32 w(free)p 1999 2392 V 33 w(memory)g(routine.)227 -2540 y(There)38 b(are)h(2)g(related)g(routines:)57 b(\014ts)p -1581 2540 V 32 w(hdr2str)37 b(simply)h(concatenates)j(all)f(the)e -(existing)i(k)m(eyw)m(ords)e(in)227 2652 y(the)44 b(header;)51 -b(\014ts)p 863 2652 V 33 w(con)m(v)m(ert)p 1185 2652 +(when)f(\014nished.)51 b(The)227 2894 y(cleanest)32 b(w)m(a)m(y)g(to)f +(do)f(this)g(is)h(to)g(call)g(the)g(\014ts)p 1823 2894 +28 4 v 32 w(free)p 1999 2894 V 33 w(memory)g(routine.)227 +3060 y(There)38 b(are)h(2)g(related)g(routines:)57 b(\014ts)p +1581 3060 V 32 w(hdr2str)37 b(simply)h(concatenates)j(all)f(the)e +(existing)i(k)m(eyw)m(ords)e(in)227 3173 y(the)44 b(header;)51 +b(\014ts)p 863 3173 V 33 w(con)m(v)m(ert)p 1185 3173 V 34 w(hdr2str)43 b(is)h(similar,)k(except)d(that)f(if)g(the)g(CHDU)h -(is)f(a)g(tile)h(compressed)227 2765 y(image)c(\(stored)f(in)f(a)h +(is)f(a)g(tile)h(compressed)227 3286 y(image)c(\(stored)f(in)f(a)h (binary)e(table\))j(then)e(it)h(will)f(\014rst)g(con)m(v)m(ert)i(that)f -(header)f(bac)m(k)h(to)g(that)g(of)g(the)227 2878 y(corresp)s(onding)30 +(header)f(bac)m(k)h(to)g(that)g(of)g(the)227 3399 y(corresp)s(onding)30 b(normal)g(FITS)g(image)h(b)s(efore)f(concatenating)j(the)e(k)m(eyw)m -(ords.)227 3025 y(Selected)f(k)m(eyw)m(ords)e(ma)m(y)h(b)s(e)e +(ords.)227 3564 y(Selected)f(k)m(eyw)m(ords)e(ma)m(y)h(b)s(e)e (excluded)h(from)g(the)g(returned)f(c)m(haracter)j(string.)40 -b(If)27 b(the)i(second)f(param-)227 3138 y(eter)h(\(no)s(commen)m(ts\)) +b(If)27 b(the)i(second)f(param-)227 3677 y(eter)h(\(no)s(commen)m(ts\)) g(is)f(TR)m(UE)g(\(nonzero\))h(then)e(an)m(y)i(COMMENT,)f(HISTOR)-8 -b(Y,)27 b(or)h(blank)g(k)m(eyw)m(ords)227 3251 y(in)i(the)h(header)f +b(Y,)27 b(or)h(blank)g(k)m(eyw)m(ords)227 3790 y(in)i(the)h(header)f (will)h(not)f(b)s(e)g(copied)h(to)g(the)g(output)f(string.)227 -3398 y(The)25 b('exclist')j(parameter)e(ma)m(y)g(b)s(e)f(used)g(to)h +3956 y(The)25 b('exclist')j(parameter)e(ma)m(y)g(b)s(e)f(used)g(to)h (supply)e(a)i(list)h(of)e(k)m(eyw)m(ords)h(that)h(are)f(to)g(b)s(e)f -(excluded)g(from)227 3511 y(the)k(output)g(c)m(haracter)h(string.)41 +(excluded)g(from)227 4069 y(the)k(output)g(c)m(haracter)h(string.)41 b(Wild)29 b(card)g(c)m(haracters)h(\(*,)g(?,)f(and)g(#\))g(ma)m(y)g(b)s -(e)f(used)g(in)h(the)g(excluded)227 3624 y(k)m(eyw)m(ord)h(names.)41 +(e)f(used)g(in)h(the)g(excluded)227 4181 y(k)m(eyw)m(ord)h(names.)41 b(If)29 b(no)g(additional)i(k)m(eyw)m(ords)f(are)g(to)g(b)s(e)f (excluded,)h(then)f(set)h(nexc)g(=)f(0)h(and)f(sp)s(ecify)227 -3737 y(NULL)i(for)f(the)g(the)h(**exclist)i(parameter.)95 -3978 y Fe(int)47 b(fits_hdr2str)e(/)i(ffhdr2str)286 4091 +4294 y(NULL)i(for)f(the)g(the)h(**exclist)i(parameter.)95 +4585 y Fe(int)47 b(fits_hdr2str)e(/)i(ffhdr2str)286 4698 y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e(int)i -(nexc,)286 4204 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i -(*status\))95 4430 y(int)g(fits_convert_hdr2str)c(/)k(ffcnvthdr2str)286 -4543 y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e -(int)i(nexc,)286 4656 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i -(*status\))95 4882 y(int)g(fits_free_memory)d(/)j(fffree)286 -4994 y(\(char)g(*header,)e(>)j(int)f(*status\);)0 5232 -y -SDict begin H.S end - 0 5232 a 0 5232 a -SDict begin 13.6 H.A end - 0 5232 a 0 5232 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.4.2) cvn /DEST pdfmark +(nexc,)286 4811 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i +(*status\))95 5036 y(int)g(fits_convert_hdr2str)c(/)k(ffcnvthdr2str)286 +5149 y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e +(int)i(nexc,)286 5262 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i +(*status\))95 5488 y(int)g(fits_free_memory)d(/)j(fffree)286 +5601 y(\(char)g(*header,)e(>)j(int)f(*status\);)p eop end - 0 5232 a 163 x -Fd(5.4.2)112 b(Keyw)m(ord)38 b(W)-9 b(riting)37 b(Routines)0 -5601 y Fi(1)81 b Fj(W)-8 b(rite)32 b(a)g(k)m(eyw)m(ord)g(of)f(the)h -(appropriate)f(data)h(t)m(yp)s(e)g(in)m(to)g(the)g(CHU.)f(The)g -(\014rst)g(routine)g(simply)g(app)s(ends)227 5714 y(a)j(new)f(k)m(eyw)m -(ord)h(whereas)f(the)g(second)h(routine)f(will)h(up)s(date)e(the)i(v)-5 -b(alue)33 b(and)g(commen)m(t)h(\014elds)f(of)h(the)p -eop end %%Page: 41 49 -TeXDict begin 41 48 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.41) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.4.)72 -b(HEADER)31 b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 -b Fj(41)227 555 y(k)m(eyw)m(ord)34 b(if)g(it)g(already)g(exists,)h +TeXDict begin 41 48 bop 0 299 a Fh(5.4.)72 b(HEADER)31 +b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 b Fj(41)0 +555 y Fd(5.4.2)112 b(Keyw)m(ord)38 b(W)-9 b(riting)37 +b(Routines)0 777 y Fi(1)81 b Fj(W)-8 b(rite)32 b(a)g(k)m(eyw)m(ord)g +(of)f(the)h(appropriate)f(data)h(t)m(yp)s(e)g(in)m(to)g(the)g(CHU.)f +(The)g(\014rst)g(routine)g(simply)g(app)s(ends)227 890 +y(a)j(new)f(k)m(eyw)m(ord)h(whereas)f(the)g(second)h(routine)f(will)h +(up)s(date)e(the)i(v)-5 b(alue)33 b(and)g(commen)m(t)h(\014elds)f(of)h +(the)227 1003 y(k)m(eyw)m(ord)g(if)g(it)g(already)g(exists,)h (otherwise)f(it)g(app)s(ends)e(a)i(new)f(k)m(eyw)m(ord.)51 -b(Note)35 b(that)f(the)g(address)e(to)227 668 y(the)37 +b(Note)35 b(that)f(the)g(address)e(to)227 1116 y(the)37 b(v)-5 b(alue,)38 b(and)d(not)i(the)f(v)-5 b(alue)36 b(itself,)j(m)m(ust)d(b)s(e)f(en)m(tered.)59 b(The)35 b(datat)m(yp)s(e)i(parameter)g(sp)s(eci\014es)f(the)227 -781 y(data)25 b(t)m(yp)s(e)f(of)g(the)g(k)m(eyw)m(ord)g(v)-5 +1229 y(data)25 b(t)m(yp)s(e)f(of)g(the)g(k)m(eyw)m(ord)g(v)-5 b(alue)25 b(with)e(one)h(of)g(the)g(follo)m(wing)i(v)-5 -b(alues:)37 b(TSTRING,)23 b(TLOGICAL)g(\(==)227 894 y(in)m(t\),)38 -b(TBYTE,)d(TSHOR)-8 b(T,)34 b(TUSHOR)-8 b(T,)35 b(TINT,)f(TUINT,)h -(TLONG,)g(TLONGLONG,)g(TULONG,)227 1007 y(TFLO)m(A)-8 -b(T,)24 b(TDOUBLE.)f(Within)h(the)f(con)m(text)i(of)f(this)f(routine,)i -(TSTRING)d(corresp)s(onds)g(to)i(a)g('c)m(har*')227 1120 -y(data)j(t)m(yp)s(e,)h(i.e.,)g(a)f(p)s(oin)m(ter)f(to)i(a)e(c)m +b(alues:)37 b(TSTRING,)23 b(TLOGICAL)g(\(==)227 1341 +y(in)m(t\),)38 b(TBYTE,)d(TSHOR)-8 b(T,)34 b(TUSHOR)-8 +b(T,)35 b(TINT,)f(TUINT,)h(TLONG,)g(TLONGLONG,)g(TULONG,)227 +1454 y(TFLO)m(A)-8 b(T,)24 b(TDOUBLE.)f(Within)h(the)f(con)m(text)i(of) +f(this)f(routine,)i(TSTRING)d(corresp)s(onds)g(to)i(a)g('c)m(har*')227 +1567 y(data)j(t)m(yp)s(e,)h(i.e.,)g(a)f(p)s(oin)m(ter)f(to)i(a)e(c)m (haracter)i(arra)m(y)-8 b(.)41 b(A)26 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m (y)g(b)s(e)e(en)m(tered)i(for)f(the)h(commen)m(t)227 -1233 y(parameter)k(in)f(whic)m(h)g(case)i(the)e(k)m(eyw)m(ord)h(commen) +1680 y(parameter)k(in)f(whic)m(h)g(case)i(the)e(k)m(eyw)m(ord)h(commen) m(t)h(\014eld)d(will)i(b)s(e)f(unmo)s(di\014ed)e(or)j(left)g(blank.)95 -1515 y Fe(int)47 b(fits_write_key)d(/)k(ffpky)286 1628 +1957 y Fe(int)47 b(fits_write_key)d(/)k(ffpky)286 2070 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e(DTYPE)h -(*value,)477 1741 y(char)h(*comment,)e(>)j(int)f(*status\))95 -1967 y(int)g(fits_update_key)d(/)j(ffuky)286 2080 y(\(fitsfile)f +(*value,)477 2183 y(char)h(*comment,)e(>)j(int)f(*status\))95 +2409 y(int)g(fits_update_key)d(/)j(ffuky)286 2522 y(\(fitsfile)f (*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e(DTYPE)h(*value,)477 -2193 y(char)h(*comment,)e(>)j(int)f(*status\))0 2475 +2635 y(char)h(*comment,)e(>)j(int)f(*status\))0 2912 y Fi(2)81 b Fj(W)-8 b(rite)44 b(a)g(k)m(eyw)m(ord)f(with)g(a)h(n)m(ull) f(or)g(unde\014ned)e(v)-5 b(alue)43 b(\(i.e.,)48 b(the)c(v)-5 b(alue)43 b(\014eld)g(in)g(the)g(k)m(eyw)m(ord)h(is)f(left)227 -2588 y(blank\).)70 b(The)40 b(\014rst)f(routine)h(simply)g(app)s(ends)e +3025 y(blank\).)70 b(The)40 b(\014rst)f(routine)h(simply)g(app)s(ends)e (a)j(new)e(k)m(eyw)m(ord)i(whereas)f(the)g(second)g(routine)h(will)227 -2701 y(up)s(date)27 b(the)h(v)-5 b(alue)29 b(and)e(commen)m(t)i +3138 y(up)s(date)27 b(the)h(v)-5 b(alue)29 b(and)e(commen)m(t)i (\014elds)e(of)h(the)g(k)m(eyw)m(ord)g(if)g(it)g(already)h(exists,)g -(otherwise)f(it)h(app)s(ends)227 2814 y(a)g(new)g(k)m(eyw)m(ord.)40 +(otherwise)f(it)h(app)s(ends)227 3251 y(a)g(new)g(k)m(eyw)m(ord.)40 b(A)29 b(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)g(b)s(e)g(en)m(tered)g(for)g (the)g(commen)m(t)g(parameter)h(in)e(whic)m(h)h(case)h(the)227 -2927 y(k)m(eyw)m(ord)h(commen)m(t)h(\014eld)d(will)i(b)s(e)f(unmo)s -(di\014ed)e(or)j(left)g(blank.)95 3209 y Fe(int)47 b -(fits_write_key_null)c(/)k(ffpkyu)286 3322 y(\(fitsfile)f(*fptr,)g +3363 y(k)m(eyw)m(ord)h(commen)m(t)h(\014eld)d(will)i(b)s(e)f(unmo)s +(di\014ed)e(or)j(left)g(blank.)95 3641 y Fe(int)47 b +(fits_write_key_null)c(/)k(ffpkyu)286 3753 y(\(fitsfile)f(*fptr,)g (char)g(*keyname,)g(char)g(*comment,)g(>)h(int)g(*status\))95 -3548 y(int)g(fits_update_key_null)c(/)k(ffukyu)286 3661 +3979 y(int)g(fits_update_key_null)c(/)k(ffukyu)286 4092 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h(int)g -(*status\))0 3943 y Fi(3)81 b Fj(W)-8 b(rite)40 b(\(app)s(end\))e(a)h +(*status\))0 4369 y Fi(3)81 b Fj(W)-8 b(rite)40 b(\(app)s(end\))e(a)h (COMMENT)g(or)g(HISTOR)-8 b(Y)38 b(k)m(eyw)m(ord)i(to)f(the)g(CHU.)h -(The)e(commen)m(t)i(or)f(history)227 4056 y(string)31 +(The)e(commen)m(t)i(or)f(history)227 4482 y(string)31 b(will)f(b)s(e)g(con)m(tin)m(ued)h(o)m(v)m(er)h(m)m(ultiple)f(k)m(eyw)m (ords)g(if)f(it)h(is)f(longer)h(than)f(70)i(c)m(haracters.)95 -4338 y Fe(int)47 b(fits_write_comment)c(/)48 b(ffpcom)286 -4451 y(\(fitsfile)e(*fptr,)g(char)g(*comment,)g(>)h(int)g(*status\))95 -4677 y(int)g(fits_write_history)c(/)48 b(ffphis)286 4790 +4759 y Fe(int)47 b(fits_write_comment)c(/)48 b(ffpcom)286 +4872 y(\(fitsfile)e(*fptr,)g(char)g(*comment,)g(>)h(int)g(*status\))95 +5098 y(int)g(fits_write_history)c(/)48 b(ffphis)286 5211 y(\(fitsfile)e(*fptr,)g(char)g(*history,)g(>)h(int)g(*status\))0 -5073 y Fi(4)81 b Fj(W)-8 b(rite)29 b(the)g(D)m(A)-8 b(TE)29 +5488 y Fi(4)81 b Fj(W)-8 b(rite)29 b(the)g(D)m(A)-8 b(TE)29 b(k)m(eyw)m(ord)g(to)g(the)g(CHU.)f(The)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(will)f(con)m(tain)i(the)f(curren)m(t)f(system)g(date)227 -5185 y(as)k(a)g(c)m(haracter)h(string)e(in)g('yyyy-mm-ddThh:mm:ss')e +5601 y(as)k(a)g(c)m(haracter)h(string)e(in)g('yyyy-mm-ddThh:mm:ss')e (format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32 b(k)m(eyw)m(ord)g(already)g -(exists)227 5298 y(in)c(the)f(header,)i(then)e(this)g(routine)h(will)g +(exists)227 5714 y(in)c(the)f(header,)i(then)e(this)g(routine)h(will)g (simply)f(up)s(date)g(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)28 -b(with)f(the)h(curren)m(t)g(date.)95 5581 y Fe(int)47 -b(fits_write_date)d(/)j(ffpdat)286 5694 y(\(fitsfile)f(*fptr,)g(>)h -(int)g(*status\))p eop end +b(with)f(the)h(curren)m(t)g(date.)p eop end %%Page: 42 50 -TeXDict begin 42 49 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.42) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(42)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(5)81 b Fj(W)-8 b(rite)34 -b(a)g(user)f(sp)s(eci\014ed)g(k)m(eyw)m(ord)h(record)f(in)m(to)h(the)g -(CHU.)g(This)e(is)i(a)g(lo)m(w{lev)m(el)i(routine)e(whic)m(h)f(can)h(b) -s(e)227 668 y(used)f(to)h(write)f(an)m(y)h(arbitrary)f(record)g(in)m -(to)i(the)e(header.)50 b(The)32 b(record)i(m)m(ust)f(conform)g(to)h -(the)g(all)g(the)227 781 y(FITS)c(format)h(requiremen)m(ts.)95 -1034 y Fe(int)47 b(fits_write_record)c(/)48 b(ffprec)286 -1147 y(\(fitsfile)e(*fptr,)g(char)g(*card,)g(>)i(int)f(*status\))0 -1401 y Fi(6)81 b Fj(Up)s(date)34 b(an)g(80-c)m(haracter)j(record)e(in)f -(the)g(CHU.)h(If)f(a)h(k)m(eyw)m(ord)f(with)h(the)f(input)g(name)g -(already)h(exists,)227 1514 y(then)e(it)h(is)f(o)m(v)m(erwritten)h(b)m -(y)f(the)g(v)-5 b(alue)34 b(of)f(card.)49 b(This)32 b(could)h(mo)s -(dify)f(the)i(k)m(eyw)m(ord)f(name)g(as)h(w)m(ell)g(as)227 -1627 y(the)c(v)-5 b(alue)30 b(and)e(commen)m(t)j(\014elds.)40 -b(If)29 b(the)g(k)m(eyw)m(ord)h(do)s(esn't)f(already)h(exist)g(then)g -(a)f(new)g(k)m(eyw)m(ord)h(card)227 1739 y(is)h(app)s(ended)d(to)j(the) -g(header.)95 1993 y Fe(int)47 b(fits_update_card)d(/)j(ffucrd)286 -2106 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*card,)g(>)i -(int)f(*status\))0 2359 y Fi(7)81 b Fj(Mo)s(dify)30 b(\(o)m(v)m +TeXDict begin 42 49 bop 0 299 a Fj(42)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_write_date)d(/)j(ffpdat)286 +668 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))0 932 +y Fi(5)81 b Fj(W)-8 b(rite)34 b(a)g(user)f(sp)s(eci\014ed)g(k)m(eyw)m +(ord)h(record)f(in)m(to)h(the)g(CHU.)g(This)e(is)i(a)g(lo)m(w{lev)m(el) +i(routine)e(whic)m(h)f(can)h(b)s(e)227 1045 y(used)f(to)h(write)f(an)m +(y)h(arbitrary)f(record)g(in)m(to)i(the)e(header.)50 +b(The)32 b(record)i(m)m(ust)f(conform)g(to)h(the)g(all)g(the)227 +1158 y(FITS)c(format)h(requiremen)m(ts.)95 1421 y Fe(int)47 +b(fits_write_record)c(/)48 b(ffprec)286 1534 y(\(fitsfile)e(*fptr,)g +(char)g(*card,)g(>)i(int)f(*status\))0 1798 y Fi(6)81 +b Fj(Up)s(date)34 b(an)g(80-c)m(haracter)j(record)e(in)f(the)g(CHU.)h +(If)f(a)h(k)m(eyw)m(ord)f(with)h(the)f(input)g(name)g(already)h +(exists,)227 1911 y(then)e(it)h(is)f(o)m(v)m(erwritten)h(b)m(y)f(the)g +(v)-5 b(alue)34 b(of)f(card.)49 b(This)32 b(could)h(mo)s(dify)f(the)i +(k)m(eyw)m(ord)f(name)g(as)h(w)m(ell)g(as)227 2024 y(the)c(v)-5 +b(alue)30 b(and)e(commen)m(t)j(\014elds.)40 b(If)29 b(the)g(k)m(eyw)m +(ord)h(do)s(esn't)f(already)h(exist)g(then)g(a)f(new)g(k)m(eyw)m(ord)h +(card)227 2137 y(is)h(app)s(ended)d(to)j(the)g(header.)95 +2400 y Fe(int)47 b(fits_update_card)d(/)j(ffucrd)286 +2513 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*card,)g(>)i +(int)f(*status\))0 2777 y Fi(7)81 b Fj(Mo)s(dify)30 b(\(o)m(v)m (erwrite\))i(the)f(commen)m(t)g(\014eld)f(of)h(an)f(existing)h(k)m(eyw) -m(ord.)95 2613 y Fe(int)47 b(fits_modify_comment)c(/)k(ffmcom)286 -2726 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h -(int)g(*status\))0 2979 y Fi(8)81 b Fj(W)-8 b(rite)33 +m(ord.)95 3041 y Fe(int)47 b(fits_modify_comment)c(/)k(ffmcom)286 +3153 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h +(int)g(*status\))0 3417 y Fi(8)81 b Fj(W)-8 b(rite)33 b(the)f(ph)m(ysical)h(units)f(string)g(in)m(to)h(an)f(existing)h(k)m (eyw)m(ord.)46 b(This)32 b(routine)g(uses)g(a)g(lo)s(cal)i(con)m(v)m -(en)m(tion,)227 3092 y(sho)m(wn)e(in)g(the)h(follo)m(wing)h(example,)g +(en)m(tion,)227 3530 y(sho)m(wn)e(in)g(the)h(follo)m(wing)h(example,)g (in)e(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)f -(square)g(brac)m(k)m(ets)227 3205 y(in)e(the)h(b)s(eginning)f(of)g(the) -h(k)m(eyw)m(ord)g(commen)m(t)g(\014eld.)239 3458 y Fe(VELOCITY=)809 -b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 3684 y(int)h -(fits_write_key_unit)c(/)k(ffpunt)286 3797 y(\(fitsfile)f(*fptr,)g +(square)g(brac)m(k)m(ets)227 3643 y(in)e(the)h(b)s(eginning)f(of)g(the) +h(k)m(eyw)m(ord)g(commen)m(t)g(\014eld.)239 3907 y Fe(VELOCITY=)809 +b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 4132 y(int)h +(fits_write_key_unit)c(/)k(ffpunt)286 4245 y(\(fitsfile)f(*fptr,)g (char)g(*keyname,)g(char)g(*unit,)g(>)i(int)f(*status\))0 -4050 y Fi(9)81 b Fj(Rename)30 b(an)h(existing)g(k)m(eyw)m(ord,)g +4509 y Fi(9)81 b Fj(Rename)30 b(an)h(existing)g(k)m(eyw)m(ord,)g (preserving)f(the)g(curren)m(t)h(v)-5 b(alue)30 b(and)g(commen)m(t)i -(\014elds.)95 4304 y Fe(int)47 b(fits_modify_name)d(/)j(ffmnam)286 -4417 y(\(fitsfile)f(*fptr,)g(char)g(*oldname,)g(char)g(*newname,)g(>)h -(int)g(*status\))0 4670 y Fi(10)f Fj(Delete)37 b(a)e(k)m(eyw)m(ord)g +(\014elds.)95 4773 y Fe(int)47 b(fits_modify_name)d(/)j(ffmnam)286 +4886 y(\(fitsfile)f(*fptr,)g(char)g(*oldname,)g(char)g(*newname,)g(>)h +(int)g(*status\))0 5149 y Fi(10)f Fj(Delete)37 b(a)e(k)m(eyw)m(ord)g (record.)54 b(The)34 b(space)i(o)s(ccupied)e(b)m(y)h(the)g(k)m(eyw)m (ord)g(is)g(reclaimed)h(b)m(y)e(mo)m(ving)i(all)g(the)227 -4783 y(follo)m(wing)e(header)f(records)f(up)g(one)h(ro)m(w)f(in)h(the)f +5262 y(follo)m(wing)e(header)f(records)f(up)g(one)h(ro)m(w)f(in)h(the)f (header.)48 b(The)32 b(\014rst)g(routine)g(deletes)i(a)f(k)m(eyw)m(ord) -g(at)h(a)227 4896 y(sp)s(eci\014ed)23 b(p)s(osition)h(in)g(the)g +g(at)h(a)227 5375 y(sp)s(eci\014ed)23 b(p)s(osition)h(in)g(the)g (header)f(\(the)i(\014rst)e(k)m(eyw)m(ord)h(is)g(at)g(p)s(osition)g -(1\),)i(whereas)e(the)g(second)g(routine)227 5009 y(deletes)30 +(1\),)i(whereas)e(the)g(second)g(routine)227 5488 y(deletes)30 b(a)f(sp)s(eci\014cally)g(named)f(k)m(eyw)m(ord.)41 b(Wild)29 b(card)f(c)m(haracters)i(ma)m(y)f(b)s(e)f(used)g(when)f(sp)s(ecifying)i -(the)227 5122 y(name)23 b(of)g(the)f(k)m(eyw)m(ord)h(to)h(b)s(e)e +(the)227 5601 y(name)23 b(of)g(the)f(k)m(eyw)m(ord)h(to)h(b)s(e)e (deleted.)38 b(The)22 b(third)g(routine)h(deletes)g(the)g(\(next\))h(k) -m(eyw)m(ord)f(that)g(con)m(tains)227 5235 y(the)31 b(literal)h(c)m +m(eyw)m(ord)f(that)g(con)m(tains)227 5714 y(the)31 b(literal)h(c)m (haracter)g(string)e(sp)s(eci\014ed)g(b)m(y)g(the)h('string')f(argumen) -m(t.)95 5488 y Fe(int)47 b(fits_delete_record)c(/)48 -b(ffdrec)286 5601 y(\(fitsfile)e(*fptr,)g(int)142 b(keynum,)94 -b(>)47 b(int)g(*status\))p eop end +m(t.)p eop end %%Page: 43 51 -TeXDict begin 43 50 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.43) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.5.)72 -b(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g -(R)m(OUTINES)1011 b Fj(43)95 555 y Fe(int)47 b(fits_delete_key)d(/)j -(ffdkey)286 668 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(int)g -(*status\))95 894 y(int)g(fits_delete_str)d(/)j(ffdstr)286 -1007 y(\(fitsfile)f(*fptr,)g(char)g(*string,)g(>)h(int)g(*status\))0 -1157 y -SDict begin H.S end - 0 1157 a 0 1157 a -SDict begin 13.6 H.A end - 0 1157 a 0 1157 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.5) cvn /DEST pdfmark -end - 0 1157 a 177 -x Ff(5.5)135 b(Primary)46 b(Arra)l(y)f(or)g(IMA)l(GE)f(Extension)i(I/O) -f(Routines)0 1584 y Fj(These)22 b(routines)g(read)h(or)f(write)h(data)g -(v)-5 b(alues)23 b(in)f(the)g(primary)g(data)h(arra)m(y)g(\(i.e.,)j -(the)c(\014rst)g(HDU)h(in)f(a)h(FITS)e(\014le\))0 1697 -y(or)32 b(an)g(IMA)m(GE)h(extension.)47 b(There)31 b(are)i(also)g -(routines)f(to)h(get)g(information)f(ab)s(out)g(the)g(data)h(t)m(yp)s -(e)g(and)e(size)0 1810 y(of)c(the)g(image.)41 b(Users)27 -b(should)f(also)i(read)f(the)g(follo)m(wing)h(c)m(hapter)g(on)f(the)g -(CFITSIO)e(iterator)k(function)d(whic)m(h)0 1923 y(pro)m(vides)33 -b(a)h(more)f(`ob)5 b(ject)35 b(orien)m(ted')f(metho)s(d)f(of)g(reading) -g(and)g(writing)g(images.)51 b(The)32 b(iterator)j(function)e(is)0 -2035 y(a)e(little)i(more)e(complicated)h(to)g(use,)f(but)f(the)h(adv)-5 -b(an)m(tages)32 b(are)f(that)h(it)f(usually)g(tak)m(es)h(less)f(co)s -(de)g(to)g(p)s(erform)0 2148 y(the)37 b(same)f(op)s(eration,)j(and)c -(the)i(resulting)f(program)g(often)h(runs)e(faster)i(b)s(ecause)f(the)g -(FITS)g(\014les)g(are)h(read)0 2261 y(and)30 b(written)g(using)g(the)h -(most)f(e\016cien)m(t)i(blo)s(c)m(k)f(size.)0 2421 y(C)25 -b(programmers)h(should)f(note)h(that)g(the)h(ordering)e(of)h(arra)m(ys) -g(in)g(FITS)f(\014les,)i(and)e(hence)h(in)g(all)g(the)g(CFITSIO)0 -2534 y(calls,)40 b(is)d(more)g(similar)h(to)f(the)h(dimensionalit)m(y)g -(of)f(arra)m(ys)g(in)g(F)-8 b(ortran)38 b(rather)f(than)f(C.)h(F)-8 -b(or)38 b(instance)g(if)f(a)0 2647 y(FITS)28 b(image)i(has)e(NAXIS1)h -(=)f(100)i(and)e(NAXIS2)h(=)f(50,)i(then)e(a)h(2-D)h(arra)m(y)f(just)f -(large)i(enough)e(to)i(hold)e(the)0 2760 y(image)k(should)d(b)s(e)h -(declared)h(as)f(arra)m(y[50][100])k(and)c(not)h(as)f(arra)m -(y[100][50].)0 2920 y(The)h(`datat)m(yp)s(e')h(parameter)g(sp)s -(eci\014es)e(the)i(data)g(t)m(yp)s(e)f(of)g(the)g(`n)m(ulv)-5 -b(al')32 b(and)f(`arra)m(y')h(p)s(oin)m(ters)f(and)f(can)i(ha)m(v)m(e)0 -3033 y(one)h(of)g(the)g(follo)m(wing)h(v)-5 b(alues:)46 +TeXDict begin 43 50 bop 0 299 a Fh(5.5.)72 b(PRIMAR)-8 +b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g(R)m +(OUTINES)1011 b Fj(43)95 555 y Fe(int)47 b(fits_delete_record)c(/)48 +b(ffdrec)286 668 y(\(fitsfile)e(*fptr,)g(int)142 b(keynum,)94 +b(>)47 b(int)g(*status\))95 894 y(int)g(fits_delete_key)d(/)j(ffdkey) +286 1007 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(int)g +(*status\))95 1233 y(int)g(fits_delete_str)d(/)j(ffdstr)286 +1346 y(\(fitsfile)f(*fptr,)g(char)g(*string,)g(>)h(int)g(*status\))0 +1682 y Ff(5.5)135 b(Primary)46 b(Arra)l(y)f(or)g(IMA)l(GE)f(Extension)i +(I/O)f(Routines)0 1933 y Fj(These)22 b(routines)g(read)h(or)f(write)h +(data)g(v)-5 b(alues)23 b(in)f(the)g(primary)g(data)h(arra)m(y)g +(\(i.e.,)j(the)c(\014rst)g(HDU)h(in)f(a)h(FITS)e(\014le\))0 +2046 y(or)32 b(an)g(IMA)m(GE)h(extension.)47 b(There)31 +b(are)i(also)g(routines)f(to)h(get)g(information)f(ab)s(out)g(the)g +(data)h(t)m(yp)s(e)g(and)e(size)0 2159 y(of)c(the)g(image.)41 +b(Users)27 b(should)f(also)i(read)f(the)g(follo)m(wing)h(c)m(hapter)g +(on)f(the)g(CFITSIO)e(iterator)k(function)d(whic)m(h)0 +2272 y(pro)m(vides)33 b(a)h(more)f(`ob)5 b(ject)35 b(orien)m(ted')f +(metho)s(d)f(of)g(reading)g(and)g(writing)g(images.)51 +b(The)32 b(iterator)j(function)e(is)0 2385 y(a)e(little)i(more)e +(complicated)h(to)g(use,)f(but)f(the)h(adv)-5 b(an)m(tages)32 +b(are)f(that)h(it)f(usually)g(tak)m(es)h(less)f(co)s(de)g(to)g(p)s +(erform)0 2498 y(the)37 b(same)f(op)s(eration,)j(and)c(the)i(resulting) +f(program)g(often)h(runs)e(faster)i(b)s(ecause)f(the)g(FITS)g(\014les)g +(are)h(read)0 2611 y(and)30 b(written)g(using)g(the)h(most)f(e\016cien) +m(t)i(blo)s(c)m(k)f(size.)0 2771 y(C)25 b(programmers)h(should)f(note)h +(that)g(the)h(ordering)e(of)h(arra)m(ys)g(in)g(FITS)f(\014les,)i(and)e +(hence)h(in)g(all)g(the)g(CFITSIO)0 2884 y(calls,)40 +b(is)d(more)g(similar)h(to)f(the)h(dimensionalit)m(y)g(of)f(arra)m(ys)g +(in)g(F)-8 b(ortran)38 b(rather)f(than)f(C.)h(F)-8 b(or)38 +b(instance)g(if)f(a)0 2997 y(FITS)28 b(image)i(has)e(NAXIS1)h(=)f(100)i +(and)e(NAXIS2)h(=)f(50,)i(then)e(a)h(2-D)h(arra)m(y)f(just)f(large)i +(enough)e(to)i(hold)e(the)0 3109 y(image)k(should)d(b)s(e)h(declared)h +(as)f(arra)m(y[50][100])k(and)c(not)h(as)f(arra)m(y[100][50].)0 +3270 y(The)h(`datat)m(yp)s(e')h(parameter)g(sp)s(eci\014es)e(the)i +(data)g(t)m(yp)s(e)f(of)g(the)g(`n)m(ulv)-5 b(al')32 +b(and)f(`arra)m(y')h(p)s(oin)m(ters)f(and)f(can)i(ha)m(v)m(e)0 +3383 y(one)h(of)g(the)g(follo)m(wing)h(v)-5 b(alues:)46 b(TBYTE,)33 b(TSBYTE,)f(TSHOR)-8 b(T,)32 b(TUSHOR)-8 -b(T,)32 b(TINT,)h(TUINT,)f(TLONG,)0 3146 y(TLONGLONG,)27 +b(T,)32 b(TINT,)h(TUINT,)f(TLONG,)0 3495 y(TLONGLONG,)27 b(TULONG,)g(TULONGLONG,)f(TFLO)m(A)-8 b(T,)28 b(TDOUBLE.)f(Automatic)h -(data)f(t)m(yp)s(e)g(con)m(v)m(er-)0 3259 y(sion)34 b(is)g(p)s +(data)f(t)m(yp)s(e)g(con)m(v)m(er-)0 3608 y(sion)34 b(is)g(p)s (erformed)f(if)h(the)g(data)h(t)m(yp)s(e)g(of)f(the)g(FITS)g(arra)m(y)g (\(as)h(de\014ned)e(b)m(y)h(the)h(BITPIX)e(k)m(eyw)m(ord\))i(di\013ers) -0 3372 y(from)d(that)i(sp)s(eci\014ed)e(b)m(y)g('datat)m(yp)s(e'.)49 +0 3721 y(from)d(that)i(sp)s(eci\014ed)e(b)m(y)g('datat)m(yp)s(e'.)49 b(The)33 b(data)g(v)-5 b(alues)33 b(are)g(also)h(automatically)i -(scaled)d(b)m(y)g(the)g(BSCALE)0 3485 y(and)d(BZER)m(O)g(k)m(eyw)m(ord) +(scaled)d(b)m(y)g(the)g(BSCALE)0 3834 y(and)d(BZER)m(O)g(k)m(eyw)m(ord) h(v)-5 b(alues)31 b(as)f(they)h(are)f(b)s(eing)g(read)h(or)f(written)g -(in)h(the)f(FITS)g(arra)m(y)-8 b(.)0 3701 y Fi(1)81 b +(in)h(the)f(FITS)g(arra)m(y)-8 b(.)0 4097 y Fi(1)81 b Fj(Get)33 b(the)f(data)h(t)m(yp)s(e)f(or)g(equiv)-5 b(alen)m(t)34 b(data)f(t)m(yp)s(e)f(of)g(the)h(image.)47 b(The)32 b(\014rst)f -(routine)h(returns)f(the)h(ph)m(ysical)227 3814 y(data)46 +(routine)h(returns)f(the)h(ph)m(ysical)227 4209 y(data)46 b(t)m(yp)s(e)f(of)h(the)f(FITS)f(image,)51 b(as)45 b(giv)m(en)h(b)m(y)f (the)g(BITPIX)g(k)m(eyw)m(ord,)50 b(with)44 b(allo)m(w)m(ed)j(v)-5 -b(alues)46 b(of)227 3927 y(BYTE)p 492 3927 28 4 v 33 -w(IMG)23 b(\(8\),)i(SHOR)-8 b(T)p 1215 3927 V 32 w(IMG)23 -b(\(16\),)i(LONG)p 1934 3927 V 33 w(IMG)e(\(32\),)i(LONGLONG)p -2921 3927 V 33 w(IMG)e(\(64\),)i(FLO)m(A)-8 b(T)p 3684 -3927 V 33 w(IMG)227 4040 y(\(-32\),)31 b(and)c(DOUBLE)p -1043 4040 V 33 w(IMG)h(\(-64\).)42 b(The)27 b(second)h(routine)f(is)h +b(alues)46 b(of)227 4322 y(BYTE)p 492 4322 28 4 v 33 +w(IMG)23 b(\(8\),)i(SHOR)-8 b(T)p 1215 4322 V 32 w(IMG)23 +b(\(16\),)i(LONG)p 1934 4322 V 33 w(IMG)e(\(32\),)i(LONGLONG)p +2921 4322 V 33 w(IMG)e(\(64\),)i(FLO)m(A)-8 b(T)p 3684 +4322 V 33 w(IMG)227 4435 y(\(-32\),)31 b(and)c(DOUBLE)p +1043 4435 V 33 w(IMG)h(\(-64\).)42 b(The)27 b(second)h(routine)f(is)h (similar,)h(except)g(that)f(if)g(the)g(image)h(pixel)227 -4153 y(v)-5 b(alues)33 b(are)g(scaled,)g(with)f(non-default)h(v)-5 +4548 y(v)-5 b(alues)33 b(are)g(scaled,)g(with)f(non-default)h(v)-5 b(alues)32 b(for)g(the)h(BZER)m(O)f(and)g(BSCALE)f(k)m(eyw)m(ords,)j -(then)e(the)227 4266 y(routine)j(will)g(return)e(the)i('equiv)-5 +(then)e(the)227 4661 y(routine)j(will)g(return)e(the)i('equiv)-5 b(alen)m(t')36 b(data)f(t)m(yp)s(e)g(that)g(is)f(needed)h(to)g(store)g -(the)g(scaled)g(v)-5 b(alues.)53 b(F)-8 b(or)227 4378 +(the)g(scaled)g(v)-5 b(alues.)53 b(F)-8 b(or)227 4774 y(example,)29 b(if)e(BITPIX)g(=)g(16)h(and)f(BSCALE)f(=)h(0.1)h(then)f (the)h(equiv)-5 b(alen)m(t)28 b(data)g(t)m(yp)s(e)g(is)f(FLO)m(A)-8 -b(T)p 3659 4378 V 33 w(IMG.)227 4491 y(Similarly)25 b(if)f(BITPIX)g(=)g +b(T)p 3659 4774 V 33 w(IMG.)227 4887 y(Similarly)25 b(if)f(BITPIX)g(=)g (16,)i(BSCALE)e(=)g(1,)i(and)d(BZER)m(O)h(=)g(32768,)k(then)c(the)g -(the)h(pixel)f(v)-5 b(alues)25 b(span)227 4604 y(the)31 +(the)h(pixel)f(v)-5 b(alues)25 b(span)227 5000 y(the)31 b(range)g(of)f(an)g(unsigned)g(short)g(in)m(teger)h(and)f(the)h (returned)e(data)i(t)m(yp)s(e)g(will)f(b)s(e)g(USHOR)-8 -b(T)p 3572 4604 V 32 w(IMG.)95 4820 y Fe(int)47 b(fits_get_img_type)c -(/)48 b(ffgidt)286 4933 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*bitpix,)f -(int)h(*status\))95 5159 y(int)g(fits_get_img_equivtype)42 -b(/)48 b(ffgiet)286 5272 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*bitpix,)f -(int)h(*status\))0 5488 y Fi(2)81 b Fj(Get)34 b(the)g(n)m(um)m(b)s(er)e -(of)i(dimensions,)g(and/or)g(the)g(size)g(of)g(eac)m(h)h(dimension)e -(in)g(the)h(image)h(.)50 b(The)33 b(n)m(um)m(b)s(er)227 -5601 y(of)h(axes)f(in)g(the)g(image)i(is)e(giv)m(en)h(b)m(y)f(naxis,)h -(and)f(the)g(size)h(of)f(eac)m(h)i(dimension)d(is)h(giv)m(en)h(b)m(y)f -(the)h(naxes)227 5714 y(arra)m(y)d(\(a)g(maxim)m(um)g(of)f(maxdim)g -(dimensions)g(will)g(b)s(e)g(returned\).)p eop end +b(T)p 3572 5000 V 32 w(IMG.)95 5262 y Fe(int)47 b(fits_get_img_type)c +(/)48 b(ffgidt)286 5375 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*bitpix,)f +(int)h(*status\))95 5601 y(int)g(fits_get_img_equivtype)42 +b(/)48 b(ffgiet)286 5714 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*bitpix,)f +(int)h(*status\))p eop end %%Page: 44 52 -TeXDict begin 44 51 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.44) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(44)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_get_img_dim)d(/)j -(ffgidm)286 668 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*naxis,)f(int)h -(*status\))95 894 y(int)g(fits_get_img_size)c(/)48 b(ffgisz)286 -1007 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(long)f(*naxes,)e(int)i -(*status\))95 1233 y(int)g(fits_get_img_sizell)c(/)k(ffgiszll)286 -1346 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(LONGLONG)d(*naxes,)h -(int)h(*status\))95 1571 y(int)g(fits_get_img_param)c(/)48 -b(ffgipr)286 1684 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(int)f -(*bitpix,)e(int)i(*naxis,)f(long)h(*naxes,)334 1797 y(int)g(*status\)) -95 2023 y(int)g(fits_get_img_paramll)c(/)k(ffgiprll)286 -2136 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(int)f(*bitpix,)e(int)i -(*naxis,)f(LONGLONG)g(*naxes,)334 2249 y(int)h(*status\))0 -2504 y Fi(3)81 b Fj(Create)23 b(a)f(new)g(primary)f(arra)m(y)i(or)f -(IMA)m(GE)i(extension)e(with)g(a)h(sp)s(eci\014ed)f(data)h(t)m(yp)s(e)f -(and)g(size.)38 b(If)22 b(the)h(FITS)227 2617 y(\014le)30 -b(is)g(curren)m(tly)f(empt)m(y)h(then)g(a)g(primary)f(arra)m(y)h(is)g -(created,)h(otherwise)f(a)g(new)f(IMA)m(GE)i(extension)f(is)227 -2730 y(app)s(ended)f(to)i(the)g(\014le.)95 2985 y Fe(int)47 -b(fits_create_img)d(/)j(ffcrim)286 3098 y(\()h(fitsfile)d(*fptr,)h(int) -h(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)f(>)h(int)g(*status\))95 -3324 y(int)g(fits_create_imgll)c(/)48 b(ffcrimll)286 -3437 y(\()g(fitsfile)d(*fptr,)h(int)h(bitpix,)f(int)h(naxis,)f -(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0 3692 y Fi(4)81 +TeXDict begin 44 51 bop 0 299 a Fj(44)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fi(2)81 b Fj(Get)34 b(the)g(n)m(um)m(b)s(er)e(of) +i(dimensions,)g(and/or)g(the)g(size)g(of)g(eac)m(h)h(dimension)e(in)g +(the)h(image)h(.)50 b(The)33 b(n)m(um)m(b)s(er)227 668 +y(of)h(axes)f(in)g(the)g(image)i(is)e(giv)m(en)h(b)m(y)f(naxis,)h(and)f +(the)g(size)h(of)f(eac)m(h)i(dimension)d(is)h(giv)m(en)h(b)m(y)f(the)h +(naxes)227 781 y(arra)m(y)d(\(a)g(maxim)m(um)g(of)f(maxdim)g +(dimensions)g(will)g(b)s(e)g(returned\).)95 1036 y Fe(int)47 +b(fits_get_img_dim)d(/)j(ffgidm)286 1149 y(\(fitsfile)f(*fptr,)g(>)h +(int)g(*naxis,)f(int)h(*status\))95 1375 y(int)g(fits_get_img_size)c(/) +48 b(ffgisz)286 1488 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(long)f +(*naxes,)e(int)i(*status\))95 1714 y(int)g(fits_get_img_sizell)c(/)k +(ffgiszll)286 1827 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j +(LONGLONG)d(*naxes,)h(int)h(*status\))95 2052 y(int)g +(fits_get_img_param)c(/)48 b(ffgipr)286 2165 y(\(fitsfile)e(*fptr,)g +(int)h(maxdim,)e(>)j(int)f(*bitpix,)e(int)i(*naxis,)f(long)h(*naxes,) +334 2278 y(int)g(*status\))95 2504 y(int)g(fits_get_img_paramll)c(/)k +(ffgiprll)286 2617 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(int)f +(*bitpix,)e(int)i(*naxis,)f(LONGLONG)g(*naxes,)334 2730 +y(int)h(*status\))0 2985 y Fi(3)81 b Fj(Create)23 b(a)f(new)g(primary)f +(arra)m(y)i(or)f(IMA)m(GE)i(extension)e(with)g(a)h(sp)s(eci\014ed)f +(data)h(t)m(yp)s(e)f(and)g(size.)38 b(If)22 b(the)h(FITS)227 +3098 y(\014le)30 b(is)g(curren)m(tly)f(empt)m(y)h(then)g(a)g(primary)f +(arra)m(y)h(is)g(created,)h(otherwise)f(a)g(new)f(IMA)m(GE)i(extension) +f(is)227 3211 y(app)s(ended)f(to)i(the)g(\014le.)95 3466 +y Fe(int)47 b(fits_create_img)d(/)j(ffcrim)286 3579 y(\()h(fitsfile)d +(*fptr,)h(int)h(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)f(>)h(int)g +(*status\))95 3805 y(int)g(fits_create_imgll)c(/)48 b(ffcrimll)286 +3918 y(\()g(fitsfile)d(*fptr,)h(int)h(bitpix,)f(int)h(naxis,)f +(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0 4173 y Fi(4)81 b Fj(Cop)m(y)39 b(an)f(n-dimensional)h(image)h(in)f(a)g(particular)h (ro)m(w)f(and)f(column)h(of)g(a)g(binary)f(table)i(\(in)f(a)g(v)m -(ector)227 3805 y(column\))31 b(to)g(or)f(from)g(a)h(primary)e(arra)m -(y)i(or)g(image)g(extension.)227 3954 y(The)c('cell2image')k(routine)d +(ector)227 4286 y(column\))31 b(to)g(or)f(from)g(a)h(primary)e(arra)m +(y)i(or)g(image)g(extension.)227 4435 y(The)c('cell2image')k(routine)d (will)g(app)s(end)e(a)i(new)f(image)i(extension)f(\(or)g(primary)f -(arra)m(y\))h(to)h(the)e(output)227 4067 y(\014le.)43 +(arra)m(y\))h(to)h(the)e(output)227 4548 y(\014le.)43 b(An)m(y)31 b(W)m(CS)g(k)m(eyw)m(ords)g(asso)s(ciated)h(with)f(the)g (input)f(column)h(image)h(will)f(b)s(e)f(translated)i(in)m(to)g(the)227 -4180 y(appropriate)j(form)g(for)g(an)f(image)j(extension.)55 +4661 y(appropriate)j(form)g(for)g(an)f(image)j(extension.)55 b(An)m(y)35 b(other)g(k)m(eyw)m(ords)g(in)g(the)g(table)h(header)f -(that)h(are)227 4293 y(not)28 b(sp)s(eci\014cally)h(related)f(to)h +(that)h(are)227 4774 y(not)28 b(sp)s(eci\014cally)h(related)f(to)h (de\014ning)e(the)g(binary)g(table)i(structure)e(or)h(to)g(other)g -(columns)g(in)f(the)h(table)227 4406 y(will)j(also)g(b)s(e)f(copied)h -(to)g(the)g(header)f(of)g(the)h(output)f(image.)227 4555 +(columns)g(in)f(the)h(table)227 4887 y(will)j(also)g(b)s(e)f(copied)h +(to)g(the)g(header)f(of)g(the)h(output)f(image.)227 5036 y(The)i('image2cell')k(routine)c(will)h(cop)m(y)g(the)g(input)e(image)j (in)m(to)f(the)g(sp)s(eci\014ed)f(ro)m(w)g(and)g(column)g(of)h(the)227 -4668 y(curren)m(t)e(binary)g(table)h(in)f(the)h(output)f(\014le.)44 +5149 y(curren)m(t)e(binary)g(table)h(in)f(the)h(output)f(\014le.)44 b(The)31 b(binary)f(table)j(HDU)f(m)m(ust)f(exist)h(b)s(efore)f -(calling)i(this)227 4781 y(routine,)h(but)f(it)h(ma)m(y)f(b)s(e)g(empt) +(calling)i(this)227 5262 y(routine,)h(but)f(it)h(ma)m(y)f(b)s(e)g(empt) m(y)-8 b(,)35 b(with)e(no)g(ro)m(ws)g(or)g(columns)g(of)g(data.)50 -b(The)33 b(sp)s(eci\014ed)f(column)h(\(and)227 4894 y(ro)m(w\))e(will)h +b(The)33 b(sp)s(eci\014ed)f(column)h(\(and)227 5375 y(ro)m(w\))e(will)h (b)s(e)e(created)h(if)g(it)g(do)s(es)g(not)g(already)g(exist.)43 b(The)30 b('cop)m(yk)m(ey\015ag')j(parameter)e(con)m(trols)h(whic)m(h) -227 5007 y(k)m(eyw)m(ords)26 b(are)g(copied)g(from)f(the)g(input)g +227 5488 y(k)m(eyw)m(ords)26 b(are)g(copied)g(from)f(the)g(input)g (image)h(to)g(the)g(header)f(of)h(the)f(output)g(table:)39 -b(0)26 b(=)f(no)h(k)m(eyw)m(ords)227 5120 y(will)k(b)s(e)g(copied,)g(1) +b(0)26 b(=)f(no)h(k)m(eyw)m(ords)227 5601 y(will)k(b)s(e)g(copied,)g(1) h(=)e(all)i(k)m(eyw)m(ords)f(will)g(b)s(e)f(copied)h(\(except)i(those)e (k)m(eyw)m(ords)g(that)h(w)m(ould)e(b)s(e)g(in)m(v)-5 -b(alid)227 5233 y(in)30 b(the)h(table)g(header\),)g(and)f(2)g(=)g(cop)m -(y)i(only)e(the)h(W)m(CS)f(k)m(eyw)m(ords.)95 5488 y -Fe(int)47 b(fits_copy_cell2image)286 5601 y(\(fitsfile)f(*infptr,)f -(fitsfile)h(*outfptr,)f(char)i(*colname,)e(long)i(rownum,)334 -5714 y(>)h(int)e(*status\))p eop end +b(alid)227 5714 y(in)30 b(the)h(table)g(header\),)g(and)f(2)g(=)g(cop)m +(y)i(only)e(the)h(W)m(CS)f(k)m(eyw)m(ords.)p eop end %%Page: 45 53 -TeXDict begin 45 52 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.45) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.5.)72 -b(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g -(R)m(OUTINES)1011 b Fj(45)95 668 y Fe(int)47 b(fits_copy_image2cell)286 -781 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(char)i(*colname,)e -(long)i(rownum,)334 894 y(int)g(copykeyflag)e(>)i(int)g(*status\))0 -1135 y Fi(5)81 b Fj(W)-8 b(rite)40 b(a)f(rectangular)g(subimage)g(\(or) -g(the)g(whole)g(image\))h(to)f(the)g(FITS)f(data)h(arra)m(y)-8 -b(.)67 b(The)38 b(fpixel)h(and)227 1248 y(lpixel)30 b(arra)m(ys)g(giv)m +TeXDict begin 45 52 bop 0 299 a Fh(5.5.)72 b(PRIMAR)-8 +b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g(R)m +(OUTINES)1011 b Fj(45)95 555 y Fe(int)47 b(fits_copy_cell2image)286 +668 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(char)i(*colname,)e +(long)i(rownum,)334 781 y(>)h(int)e(*status\))95 1007 +y(int)h(fits_copy_image2cell)286 1120 y(\(fitsfile)f(*infptr,)f +(fitsfile)h(*outfptr,)f(char)i(*colname,)e(long)i(rownum,)334 +1233 y(int)g(copykeyflag)e(>)i(int)g(*status\))0 1474 +y Fi(5)81 b Fj(W)-8 b(rite)40 b(a)f(rectangular)g(subimage)g(\(or)g +(the)g(whole)g(image\))h(to)f(the)g(FITS)f(data)h(arra)m(y)-8 +b(.)67 b(The)38 b(fpixel)h(and)227 1587 y(lpixel)30 b(arra)m(ys)g(giv)m (e)h(the)f(co)s(ordinates)g(of)f(the)h(\014rst)f(\(lo)m(w)m(er)i(left)f (corner\))g(and)f(last)h(\(upp)s(er)e(righ)m(t)i(corner\))227 -1361 y(pixels)h(in)f(FITS)g(image)h(to)g(b)s(e)f(written)g(to.)95 -1602 y Fe(int)47 b(fits_write_subset)c(/)48 b(ffpss)286 -1715 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(long)i -(*lpixel,)334 1828 y(DTYPE)f(*array,)g(>)i(int)f(*status\))0 -2070 y Fi(6)81 b Fj(W)-8 b(rite)39 b(pixels)g(in)m(to)g(the)g(FITS)f +1700 y(pixels)h(in)f(FITS)g(image)h(to)g(b)s(e)f(written)g(to.)95 +1941 y Fe(int)47 b(fits_write_subset)c(/)48 b(ffpss)286 +2054 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(long)i +(*lpixel,)334 2167 y(DTYPE)f(*array,)g(>)i(int)f(*status\))0 +2408 y Fi(6)81 b Fj(W)-8 b(rite)39 b(pixels)g(in)m(to)g(the)g(FITS)f (data)h(arra)m(y)-8 b(.)66 b('fpixel')39 b(is)f(an)g(arra)m(y)h(of)g -(length)g(NAXIS)f(whic)m(h)g(giv)m(es)i(the)227 2183 +(length)g(NAXIS)f(whic)m(h)g(giv)m(es)i(the)227 2521 y(co)s(ordinate)k(of)f(the)g(starting)g(pixel)g(to)h(b)s(e)e(written)h (to,)j(suc)m(h)d(that)g(fpixel[0])h(is)f(in)f(the)h(range)g(1)g(to)227 -2295 y(NAXIS1,)34 b(fpixel[1])f(is)g(in)f(the)g(range)h(1)g(to)g +2634 y(NAXIS1,)34 b(fpixel[1])f(is)g(in)f(the)g(range)h(1)g(to)g (NAXIS2,)g(etc.)48 b(The)32 b(\014rst)g(pair)g(of)h(routines)f(simply)g -(writes)227 2408 y(the)40 b(arra)m(y)g(of)g(pixels)f(to)i(the)e(FITS)g +(writes)227 2747 y(the)40 b(arra)m(y)g(of)g(pixels)f(to)i(the)e(FITS)g (\014le)h(\(doing)g(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)h(if)e -(necessary\))h(whereas)g(the)227 2521 y(second)c(routines)g(will)g +(necessary\))h(whereas)g(the)227 2860 y(second)c(routines)g(will)g (substitute)f(the)h(appropriate)g(FITS)f(n)m(ull)g(v)-5 b(alue)37 b(for)e(an)m(y)h(elemen)m(ts)h(whic)m(h)f(are)227 -2634 y(equal)41 b(to)g(the)f(input)g(v)-5 b(alue)40 b(of)h(n)m(ulv)-5 +2973 y(equal)41 b(to)g(the)f(input)g(v)-5 b(alue)40 b(of)h(n)m(ulv)-5 b(al)40 b(\(note)h(that)g(this)f(parameter)h(giv)m(es)h(the)e(address)f -(of)i(the)f(n)m(ull)227 2747 y(v)-5 b(alue,)36 b(not)f(the)f(n)m(ull)g +(of)i(the)f(n)m(ull)227 3086 y(v)-5 b(alue,)36 b(not)f(the)f(n)m(ull)g (v)-5 b(alue)35 b(itself)7 b(\).)53 b(F)-8 b(or)35 b(in)m(teger)h(FITS) d(arra)m(ys,)j(the)f(FITS)e(n)m(ull)h(v)-5 b(alue)35 -b(is)f(de\014ned)f(b)m(y)227 2860 y(the)26 b(BLANK)f(k)m(eyw)m(ord)h +b(is)f(de\014ned)f(b)m(y)227 3199 y(the)26 b(BLANK)f(k)m(eyw)m(ord)h (\(an)g(error)f(is)g(returned)f(if)i(the)f(BLANK)h(k)m(eyw)m(ord)g(do)s (esn't)f(exist\).)40 b(F)-8 b(or)26 b(\015oating)227 -2973 y(p)s(oin)m(t)g(FITS)f(arra)m(ys)h(the)g(sp)s(ecial)g(IEEE)f(NaN)i +3312 y(p)s(oin)m(t)g(FITS)f(arra)m(ys)h(the)g(sp)s(ecial)g(IEEE)f(NaN)i (\(Not-a-Num)m(b)s(er\))g(v)-5 b(alue)26 b(will)g(b)s(e)f(written)h(in) -m(to)h(the)f(FITS)227 3086 y(\014le.)66 b(If)38 b(a)h(n)m(ull)f(p)s +m(to)h(the)f(FITS)227 3425 y(\014le.)66 b(If)38 b(a)h(n)m(ull)f(p)s (oin)m(ter)h(is)f(en)m(tered)h(for)g(n)m(ulv)-5 b(al,)41 b(then)d(the)h(n)m(ull)f(v)-5 b(alue)39 b(is)g(ignored)g(and)e(this)i -(routine)227 3199 y(b)s(eha)m(v)m(es)31 b(the)g(same)g(as)f(\014ts)p -1189 3199 28 4 v 33 w(write)p 1424 3199 V 33 w(pix.)95 -3440 y Fe(int)47 b(fits_write_pix)d(/)k(ffppx)286 3553 +(routine)227 3537 y(b)s(eha)m(v)m(es)31 b(the)g(same)g(as)f(\014ts)p +1189 3537 28 4 v 33 w(write)p 1424 3537 V 33 w(pix.)95 +3779 y Fe(int)47 b(fits_write_pix)d(/)k(ffppx)286 3892 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(LONGLONG)h -(nelements,)334 3666 y(DTYPE)g(*array,)g(int)h(*status\);)95 -3892 y(int)g(fits_write_pixll)d(/)j(ffppxll)286 4005 +(nelements,)334 4005 y(DTYPE)g(*array,)g(int)h(*status\);)95 +4231 y(int)g(fits_write_pixll)d(/)j(ffppxll)286 4343 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(LONGLONG)g(*fpixel,)h -(LONGLONG)g(nelements,)334 4118 y(DTYPE)g(*array,)g(int)h(*status\);)95 -4343 y(int)g(fits_write_pixnull)c(/)48 b(ffppxn)286 4456 +(LONGLONG)g(nelements,)334 4456 y(DTYPE)g(*array,)g(int)h(*status\);)95 +4682 y(int)g(fits_write_pixnull)c(/)48 b(ffppxn)286 4795 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(LONGLONG)h -(nelements,)334 4569 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e(>)j(int)f -(*status\);)95 4795 y(int)g(fits_write_pixnullll)c(/)k(ffppxnll)286 -4908 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(LONGLONG)g(*fpixel,)h -(LONGLONG)g(nelements,)334 5021 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e -(>)j(int)f(*status\);)0 5262 y Fi(7)81 b Fj(Set)24 b(FITS)g(data)i +(nelements,)334 4908 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e(>)j(int)f +(*status\);)95 5134 y(int)g(fits_write_pixnullll)c(/)k(ffppxnll)286 +5247 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(LONGLONG)g(*fpixel,)h +(LONGLONG)g(nelements,)334 5360 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e +(>)j(int)f(*status\);)0 5601 y Fi(7)81 b Fj(Set)24 b(FITS)g(data)i (arra)m(y)f(elemen)m(ts)h(equal)f(to)g(the)g(appropriate)f(n)m(ull)h (pixel)g(v)-5 b(alue.)39 b(F)-8 b(or)25 b(in)m(teger)h(FITS)e(arra)m -(ys,)227 5375 y(the)34 b(FITS)e(n)m(ull)h(v)-5 b(alue)34 +(ys,)227 5714 y(the)34 b(FITS)e(n)m(ull)h(v)-5 b(alue)34 b(is)f(de\014ned)f(b)m(y)h(the)h(BLANK)f(k)m(eyw)m(ord)h(\(an)f(error)g -(is)g(returned)f(if)h(the)h(BLANK)227 5488 y(k)m(eyw)m(ord)23 -b(do)s(esn't)g(exist\).)39 b(F)-8 b(or)23 b(\015oating)g(p)s(oin)m(t)g -(FITS)f(arra)m(ys)g(the)h(sp)s(ecial)g(IEEE)f(NaN)h(\(Not-a-Num)m(b)s -(er\))227 5601 y(v)-5 b(alue)34 b(will)f(b)s(e)g(written)g(in)m(to)h -(the)g(FITS)e(\014le.)49 b(Note)34 b(that)g('\014rstelem')g(is)f(a)h -(scalar)g(giving)g(the)f(o\013set)h(to)227 5714 y(the)d(\014rst)e -(pixel)i(to)g(b)s(e)f(written)g(in)h(the)f(equiv)-5 b(alen)m(t)32 -b(1-dimensional)f(arra)m(y)g(of)g(image)g(pixels.)p eop -end +(is)g(returned)f(if)h(the)h(BLANK)p eop end %%Page: 46 54 -TeXDict begin 46 53 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.46) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(46)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_write_null_img)c(/) -k(ffpprn)286 668 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(firstelem,)g -(LONGLONG)h(nelements,)f(>)i(int)g(*status\))0 925 y -Fi(8)81 b Fj(Read)33 b(a)h(rectangular)h(subimage)f(\(or)g(the)g(whole) -g(image\))h(from)e(the)h(FITS)f(data)h(arra)m(y)-8 b(.)52 -b(The)33 b(fpixel)h(and)227 1038 y(lpixel)c(arra)m(ys)g(giv)m(e)h(the)f -(co)s(ordinates)g(of)f(the)h(\014rst)f(\(lo)m(w)m(er)i(left)f(corner\)) -g(and)f(last)h(\(upp)s(er)e(righ)m(t)i(corner\))227 1151 -y(pixels)d(to)h(b)s(e)e(read)h(from)g(the)g(FITS)f(image.)41 +TeXDict begin 46 53 bop 0 299 a Fj(46)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(k)m(eyw)m(ord)23 b(do)s(esn't)g(exist\).)39 +b(F)-8 b(or)23 b(\015oating)g(p)s(oin)m(t)g(FITS)f(arra)m(ys)g(the)h +(sp)s(ecial)g(IEEE)f(NaN)h(\(Not-a-Num)m(b)s(er\))227 +668 y(v)-5 b(alue)34 b(will)f(b)s(e)g(written)g(in)m(to)h(the)g(FITS)e +(\014le.)49 b(Note)34 b(that)g('\014rstelem')g(is)f(a)h(scalar)g +(giving)g(the)f(o\013set)h(to)227 781 y(the)d(\014rst)e(pixel)i(to)g(b) +s(e)f(written)g(in)h(the)f(equiv)-5 b(alen)m(t)32 b(1-dimensional)f +(arra)m(y)g(of)g(image)g(pixels.)95 1038 y Fe(int)47 +b(fits_write_null_img)c(/)k(ffpprn)286 1151 y(\(fitsfile)f(*fptr,)g +(LONGLONG)f(firstelem,)g(LONGLONG)h(nelements,)f(>)i(int)g(*status\))0 +1407 y Fi(8)81 b Fj(Read)33 b(a)h(rectangular)h(subimage)f(\(or)g(the)g +(whole)g(image\))h(from)e(the)h(FITS)f(data)h(arra)m(y)-8 +b(.)52 b(The)33 b(fpixel)h(and)227 1520 y(lpixel)c(arra)m(ys)g(giv)m(e) +h(the)f(co)s(ordinates)g(of)f(the)h(\014rst)f(\(lo)m(w)m(er)i(left)f +(corner\))g(and)f(last)h(\(upp)s(er)e(righ)m(t)i(corner\))227 +1633 y(pixels)d(to)h(b)s(e)e(read)h(from)g(the)g(FITS)f(image.)41 b(Unde\014ned)25 b(FITS)h(arra)m(y)i(elemen)m(ts)g(will)f(b)s(e)f -(returned)g(with)227 1263 y(a)k(v)-5 b(alue)30 b(=)e(*n)m(ullv)-5 +(returned)g(with)227 1746 y(a)k(v)-5 b(alue)30 b(=)e(*n)m(ullv)-5 b(al,)31 b(\(note)f(that)g(this)f(parameter)h(giv)m(es)g(the)g(address) e(of)h(the)h(n)m(ull)f(v)-5 b(alue,)30 b(not)g(the)f(n)m(ull)227 -1376 y(v)-5 b(alue)36 b(itself)7 b(\))37 b(unless)e(n)m(ulv)-5 +1859 y(v)-5 b(alue)36 b(itself)7 b(\))37 b(unless)e(n)m(ulv)-5 b(al)36 b(=)g(0)g(or)f(*n)m(ulv)-5 b(al)37 b(=)e(0,)j(in)d(whic)m(h)g (case)i(no)f(c)m(hec)m(ks)h(for)e(unde\014ned)f(pixels)227 -1489 y(will)d(b)s(e)f(p)s(erformed.)95 1746 y Fe(int)47 -b(fits_read_subset)d(/)j(ffgsv)286 1859 y(\(fitsfile)f(*fptr,)g(int)94 +1972 y(will)d(b)s(e)f(p)s(erformed.)95 2228 y Fe(int)47 +b(fits_read_subset)d(/)j(ffgsv)286 2341 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g(long)g(*lpixel,)g(long)h(*inc,)334 -1972 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h(*anynul,)e(int)i -(*status\))0 2228 y Fi(9)81 b Fj(Read)32 b(pixels)h(from)f(the)g(FITS)g +2454 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h(*anynul,)e(int)i +(*status\))0 2711 y Fi(9)81 b Fj(Read)32 b(pixels)h(from)f(the)g(FITS)g (data)h(arra)m(y)-8 b(.)48 b('fpixel')33 b(is)g(the)f(starting)h(pixel) -g(lo)s(cation)h(and)e(is)h(an)f(arra)m(y)h(of)227 2341 +g(lo)s(cation)h(and)e(is)h(an)f(arra)m(y)h(of)227 2824 y(length)h(NAXIS)f(suc)m(h)g(that)h(fpixel[0])g(is)f(in)g(the)h(range)f (1)h(to)g(NAXIS1,)g(fpixel[1])g(is)g(in)f(the)g(range)h(1)f(to)227 -2454 y(NAXIS2,)c(etc.)41 b(The)28 b(nelemen)m(ts)h(parameter)f(sp)s +2936 y(NAXIS2,)c(etc.)41 b(The)28 b(nelemen)m(ts)h(parameter)f(sp)s (eci\014es)g(the)g(n)m(um)m(b)s(er)f(of)h(pixels)h(to)g(read.)39 -b(If)28 b(fpixel)g(is)g(set)227 2567 y(to)36 b(the)f(\014rst)f(pixel,)j +b(If)28 b(fpixel)g(is)g(set)227 3049 y(to)36 b(the)f(\014rst)f(pixel,)j (and)e(nelemen)m(ts)g(is)g(set)h(equal)g(to)f(the)g(NAXIS1)h(v)-5 -b(alue,)37 b(then)d(this)h(routine)g(w)m(ould)227 2680 +b(alue,)37 b(then)d(this)h(routine)g(w)m(ould)227 3162 y(read)28 b(the)g(\014rst)f(ro)m(w)h(of)g(the)h(image.)41 b(Alternativ)m(ely)-8 b(,)31 b(if)d(nelemen)m(ts)h(is)f(set)g(equal)h -(to)f(NAXIS1)g(*)h(NAXIS2)227 2793 y(then)h(it)h(w)m(ould)f(read)h(an)f +(to)f(NAXIS1)g(*)h(NAXIS2)227 3275 y(then)h(it)h(w)m(ould)f(read)h(an)f (en)m(tire)h(2D)g(image,)h(or)f(the)f(\014rst)g(plane)g(of)h(a)g(3-D)g -(datacub)s(e.)227 2943 y(The)38 b(\014rst)g(2)h(routines)f(will)h +(datacub)s(e.)227 3425 y(The)38 b(\014rst)g(2)h(routines)f(will)h (return)f(an)m(y)h(unde\014ned)d(pixels)j(in)f(the)h(FITS)e(arra)m(y)i -(equal)g(to)h(the)e(v)-5 b(alue)227 3055 y(of)36 b(*n)m(ullv)-5 +(equal)g(to)h(the)e(v)-5 b(alue)227 3538 y(of)36 b(*n)m(ullv)-5 b(al)36 b(\(note)g(that)g(this)f(parameter)h(giv)m(es)g(the)g(address)e (of)i(the)f(n)m(ull)g(v)-5 b(alue,)37 b(not)f(the)f(n)m(ull)g(v)-5 -b(alue)227 3168 y(itself)7 b(\))34 b(unless)d(n)m(ulv)-5 +b(alue)227 3651 y(itself)7 b(\))34 b(unless)d(n)m(ulv)-5 b(al)32 b(=)g(0)g(or)h(*n)m(ulv)-5 b(al)32 b(=)g(0,)h(in)f(whic)m(h)g (case)h(no)f(c)m(hec)m(ks)h(for)f(unde\014ned)e(pixels)i(will)h(b)s(e) -227 3281 y(p)s(erformed.)42 b(The)31 b(second)h(2)f(routines)h(are)f +227 3764 y(p)s(erformed.)42 b(The)31 b(second)h(2)f(routines)h(are)f (similar)h(except)g(that)g(an)m(y)g(unde\014ned)d(pixels)i(will)h(ha)m -(v)m(e)h(the)227 3394 y(corresp)s(onding)d(n)m(ullarra)m(y)g(elemen)m -(t)i(set)f(equal)g(to)g(TR)m(UE)g(\(=)f(1\).)95 3651 -y Fe(int)47 b(fits_read_pix)e(/)i(ffgpxv)286 3764 y(\(fitsfile)f +(v)m(e)h(the)227 3877 y(corresp)s(onding)d(n)m(ullarra)m(y)g(elemen)m +(t)i(set)f(equal)g(to)g(TR)m(UE)g(\(=)f(1\).)95 4133 +y Fe(int)47 b(fits_read_pix)e(/)i(ffgpxv)286 4246 y(\(fitsfile)f (*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g(LONGLONG)f -(nelements,)334 3877 y(DTYPE)h(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h -(*anynul,)e(int)i(*status\))95 4102 y(int)g(fits_read_pixll)d(/)j -(ffgpxvll)286 4215 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 -b(LONGLONG)f(*fpixel,)h(LONGLONG)f(nelements,)334 4328 +(nelements,)334 4359 y(DTYPE)h(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h +(*anynul,)e(int)i(*status\))95 4585 y(int)g(fits_read_pixll)d(/)j +(ffgpxvll)286 4698 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 +b(LONGLONG)f(*fpixel,)h(LONGLONG)f(nelements,)334 4811 y(DTYPE)h(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h(*anynul,)e(int)i -(*status\))95 4554 y(int)g(fits_read_pixnull)c(/)48 b(ffgpxf)286 -4667 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g -(LONGLONG)f(nelements,)334 4780 y(>)j(DTYPE)e(*array,)g(char)g -(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))95 5006 -y(int)h(fits_read_pixnullll)c(/)k(ffgpxfll)286 5119 y(\(fitsfile)f +(*status\))95 5036 y(int)g(fits_read_pixnull)c(/)48 b(ffgpxf)286 +5149 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g +(LONGLONG)f(nelements,)334 5262 y(>)j(DTYPE)e(*array,)g(char)g +(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))95 5488 +y(int)h(fits_read_pixnullll)c(/)k(ffgpxfll)286 5601 y(\(fitsfile)f (*fptr,)g(int)94 b(datatype,)46 b(LONGLONG)f(*fpixel,)h(LONGLONG)f -(nelements,)334 5231 y(>)j(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i -(*anynul,)f(int)g(*status\))0 5488 y Fi(10)g Fj(Cop)m(y)36 +(nelements,)334 5714 y(>)j(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i +(*anynul,)f(int)g(*status\))p eop end +%%Page: 47 55 +TeXDict begin 47 54 bop 0 299 a Fh(5.6.)72 b(IMA)m(GE)31 +b(COMPRESSION)2567 b Fj(47)0 555 y Fi(10)46 b Fj(Cop)m(y)36 b(a)g(rectangular)h(section)g(of)g(an)e(image)j(and)d(write)h(it)h(to)f -(a)h(new)e(FITS)g(primary)g(image)j(or)e(image)227 5601 +(a)h(new)e(FITS)g(primary)g(image)j(or)e(image)227 668 y(extension.)49 b(The)32 b(new)g(image)i(HDU)g(is)e(app)s(ended)f(to)j (the)f(end)f(of)h(the)g(output)f(\014le;)i(all)g(the)f(k)m(eyw)m(ords) -227 5714 y(in)39 b(the)f(input)g(image)i(will)f(b)s(e)f(copied)h(to)g +227 781 y(in)39 b(the)f(input)g(image)i(will)f(b)s(e)f(copied)h(to)g (the)g(output)f(image.)66 b(The)38 b(common)h(W)m(CS)g(k)m(eyw)m(ords)g -(will)p eop end -%%Page: 47 55 -TeXDict begin 47 54 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.47) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.6.)72 -b(IMA)m(GE)31 b(COMPRESSION)2567 b Fj(47)227 555 y(b)s(e)34 -b(up)s(dated)f(if)i(necessary)g(to)g(corresp)s(ond)e(to)j(the)e(co)s -(ordinates)h(of)g(the)g(section.)54 b(The)34 b(format)h(of)g(the)227 -668 y(section)29 b(expression)e(is)g(same)g(as)h(sp)s(ecifying)f(an)g -(image)h(section)h(using)d(the)i(extended)f(\014le)g(name)g(syn)m(tax) -227 781 y(\(see)32 b("Image)f(Section")h(in)e(Chapter)g(10\).)42 -b(\(Examples:)f("1:100,1:200",)36 b("1:100:2,)d(1:*:2",)g("*,)f(-*"\).) -95 996 y Fe(int)47 b(fits_copy_image_section)42 b(/)47 -b(ffcpimg)286 1109 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f -(char)i(*section,)e(int)i(*status\))0 1259 y -SDict begin H.S end - 0 1259 a -0 1259 a -SDict begin 13.6 H.A end - 0 1259 a 0 1259 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.6) cvn /DEST pdfmark -end - 0 1259 a 177 x Ff(5.6)135 -b(Image)46 b(Compression)0 1686 y Fj(CFITSIO)29 b(transparen)m(tly)h +(will)227 894 y(b)s(e)34 b(up)s(dated)f(if)i(necessary)g(to)g(corresp)s +(ond)e(to)j(the)e(co)s(ordinates)h(of)g(the)g(section.)54 +b(The)34 b(format)h(of)g(the)227 1007 y(section)29 b(expression)e(is)g +(same)g(as)h(sp)s(ecifying)f(an)g(image)h(section)h(using)d(the)i +(extended)f(\014le)g(name)g(syn)m(tax)227 1120 y(\(see)32 +b("Image)f(Section")h(in)e(Chapter)g(10\).)42 b(\(Examples:)f +("1:100,1:200",)36 b("1:100:2,)d(1:*:2",)g("*,)f(-*"\).)95 +1376 y Fe(int)47 b(fits_copy_image_section)42 b(/)47 +b(ffcpimg)286 1489 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f +(char)i(*section,)e(int)i(*status\))0 1822 y Ff(5.6)135 +b(Image)46 b(Compression)0 2072 y Fj(CFITSIO)29 b(transparen)m(tly)h (supp)s(orts)f(the)h(2)h(metho)s(ds)f(of)g(image)i(compression)e -(describ)s(ed)g(b)s(elo)m(w.)0 1846 y(1\))45 b(The)f(en)m(tire)i(FITS)e +(describ)s(ed)g(b)s(elo)m(w.)0 2232 y(1\))45 b(The)f(en)m(tire)i(FITS)e (\014le)h(ma)m(y)g(b)s(e)f(externally)i(compressed)e(with)g(the)h(gzip) -g(or)g(Unix)f(compress)h(utilit)m(y)0 1959 y(programs,)37 +g(or)g(Unix)f(compress)h(utilit)m(y)0 2345 y(programs,)37 b(pro)s(ducing)d(a)j(*.gz)g(or)f(*.Z)g(\014le,)h(resp)s(ectiv)m(ely)-8 b(.)59 b(When)36 b(reading)g(compressed)f(\014les)h(of)g(this)g(t)m(yp) -s(e,)0 2072 y(CFITSIO)43 b(\014rst)h(uncompresses)f(the)i(en)m(tire)g +s(e,)0 2458 y(CFITSIO)43 b(\014rst)h(uncompresses)f(the)i(en)m(tire)g (\014le)g(in)m(to)g(memory)g(b)s(efore)f(p)s(erforming)f(the)i -(requested)f(read)0 2185 y(op)s(erations.)c(Output)28 +(requested)f(read)0 2571 y(op)s(erations.)c(Output)28 b(\014les)g(can)h(b)s(e)f(directly)i(written)e(in)g(the)h(gzip)g (compressed)g(format)g(if)f(the)h(user-sp)s(eci\014ed)0 -2298 y(\014lename)35 b(ends)e(with)i(`.gz'.)54 b(In)34 +2684 y(\014lename)35 b(ends)e(with)i(`.gz'.)54 b(In)34 b(this)g(case,)j(CFITSIO)c(initially)j(writes)e(the)h(uncompressed)e -(\014le)i(in)f(memory)0 2411 y(and)j(then)g(compresses)g(it)h(and)f +(\014le)i(in)f(memory)0 2797 y(and)j(then)g(compresses)g(it)h(and)f (writes)g(it)h(to)g(disk)f(when)f(the)i(FITS)f(\014le)g(is)g(closed,)k -(th)m(us)36 b(sa)m(ving)j(user)d(disk)0 2524 y(space.)59 +(th)m(us)36 b(sa)m(ving)j(user)d(disk)0 2910 y(space.)59 b(Read)36 b(and)g(write)h(access)g(to)g(these)g(compressed)f(FITS)g (\014les)g(is)g(generally)i(quite)e(fast)h(since)g(all)g(the)0 -2636 y(I/O)28 b(is)g(p)s(erformed)e(in)i(memory;)h(the)f(main)g +3022 y(I/O)28 b(is)g(p)s(erformed)e(in)i(memory;)h(the)f(main)g (limitation)i(with)e(this)f(tec)m(hnique)i(is)f(that)h(there)f(m)m(ust) -g(b)s(e)f(enough)0 2749 y(a)m(v)-5 b(ailable)33 b(memory)d(\(or)h(sw)m +g(b)s(e)f(enough)0 3135 y(a)m(v)-5 b(ailable)33 b(memory)d(\(or)h(sw)m (ap)f(space\))h(to)g(hold)f(the)h(en)m(tire)g(uncompressed)e(FITS)h -(\014le.)0 2910 y(2\))42 b(CFITSIO)d(also)j(supp)s(orts)d(the)j(FITS)e +(\014le.)0 3296 y(2\))42 b(CFITSIO)d(also)j(supp)s(orts)d(the)j(FITS)e (tiled)h(image)i(compression)e(con)m(v)m(en)m(tion)i(in)e(whic)m(h)f -(the)i(image)g(is)0 3022 y(sub)s(divided)30 b(in)m(to)j(a)f(grid)g(of)g +(the)i(image)g(is)0 3408 y(sub)s(divided)30 b(in)m(to)j(a)f(grid)g(of)g (rectangular)i(tiles,)f(and)f(eac)m(h)h(tile)g(of)g(pixels)f(is)g -(individually)g(compressed.)45 b(The)0 3135 y(details)c(of)f(this)g +(individually)g(compressed.)45 b(The)0 3521 y(details)c(of)f(this)g (FITS)g(compression)g(con)m(v)m(en)m(tion)i(are)e(describ)s(ed)f(at)i (the)g(FITS)e(Supp)s(ort)f(O\016ce)i(w)m(eb)g(site)0 -3248 y(at)c(h)m(ttp://\014ts.gsfc.nasa.go)m(v/\014ts)p -1230 3248 28 4 v 37 w(registry)-8 b(.h)m(tml,)38 b(and)d(in)g(the)g +3634 y(at)c(h)m(ttp://\014ts.gsfc.nasa.go)m(v/\014ts)p +1230 3634 28 4 v 37 w(registry)-8 b(.h)m(tml,)38 b(and)d(in)g(the)g (fpac)m(kguide)h(p)s(df)e(\014le)h(that)h(is)g(included)e(with)0 -3361 y(the)h(CFITSIO)f(source)h(\014le)h(distributions)e(Basically)-8 +3747 y(the)h(CFITSIO)f(source)h(\014le)h(distributions)e(Basically)-8 b(,)39 b(the)c(compressed)g(image)i(tiles)f(are)g(stored)f(in)g(ro)m -(ws)g(of)0 3474 y(a)42 b(v)-5 b(ariable)42 b(length)g(arra)m(y)h +(ws)g(of)0 3860 y(a)42 b(v)-5 b(ariable)42 b(length)g(arra)m(y)h (column)e(in)g(a)h(FITS)f(binary)g(table,)46 b(ho)m(w)m(ev)m(er)c -(CFITSIO)f(recognizes)i(that)f(this)0 3587 y(binary)37 +(CFITSIO)f(recognizes)i(that)f(this)0 3973 y(binary)37 b(table)i(extension)f(con)m(tains)h(an)e(image)i(and)e(treats)i(it)f (as)g(if)g(it)g(w)m(ere)g(an)g(IMA)m(GE)g(extension.)64 -b(This)0 3700 y(tile-compressed)37 b(format)f(is)f(esp)s(ecially)i(w)m +b(This)0 4086 y(tile-compressed)37 b(format)f(is)f(esp)s(ecially)i(w)m (ell)g(suited)e(for)h(compressing)f(v)m(ery)h(large)h(images)g(b)s -(ecause)e(a\))i(the)0 3813 y(FITS)28 b(header)h(k)m(eyw)m(ords)h +(ecause)e(a\))i(the)0 4199 y(FITS)28 b(header)h(k)m(eyw)m(ords)h (remain)f(uncompressed)e(for)i(rapid)g(read)g(access,)h(and)f(b)s -(ecause)g(b\))g(it)g(is)h(p)s(ossible)e(to)0 3926 y(extract)f(and)e +(ecause)g(b\))g(it)g(is)h(p)s(ossible)e(to)0 4312 y(extract)f(and)e (uncompress)g(sections)i(of)f(the)g(image)h(without)e(ha)m(ving)i(to)f -(uncompress)f(the)h(en)m(tire)g(image.)41 b(This)0 4039 +(uncompress)f(the)h(en)m(tire)g(image.)41 b(This)0 4425 y(format)34 b(is)g(also)h(m)m(uc)m(h)e(more)h(e\013ectiv)m(e)j(in)c (compressing)h(\015oating)h(p)s(oin)m(t)e(images)i(than)f(simply)f -(compressing)0 4152 y(the)39 b(image)i(using)d(gzip)i(or)f(compress)g +(compressing)0 4538 y(the)39 b(image)i(using)d(gzip)i(or)f(compress)g (b)s(ecause)g(it)h(appro)m(ximates)g(the)g(\015oating)g(p)s(oin)m(t)f -(v)-5 b(alues)39 b(with)g(scaled)0 4264 y(in)m(tegers)32 +(v)-5 b(alues)39 b(with)g(scaled)0 4650 y(in)m(tegers)32 b(whic)m(h)e(can)g(then)g(b)s(e)g(compressed)g(more)h(e\016cien)m(tly) --8 b(.)0 4425 y(Curren)m(tly)41 b(CFITSIO)e(supp)s(orts)h(3)h(general)i +-8 b(.)0 4811 y(Curren)m(tly)41 b(CFITSIO)e(supp)s(orts)h(3)h(general)i (purp)s(ose)c(compression)i(algorithms)i(plus)d(one)i(other)f(sp)s -(ecial-)0 4538 y(purp)s(ose)31 b(compression)i(tec)m(hnique)h(that)f +(ecial-)0 4924 y(purp)s(ose)31 b(compression)i(tec)m(hnique)h(that)f (is)g(designed)g(for)g(data)g(masks)g(with)g(p)s(ositiv)m(e)h(in)m -(teger)g(pixel)f(v)-5 b(alues.)0 4650 y(The)40 b(3)g(general)h(purp)s +(teger)g(pixel)f(v)-5 b(alues.)0 5036 y(The)40 b(3)g(general)h(purp)s (ose)e(algorithms)i(are)f(GZIP)-8 b(,)41 b(Rice,)j(and)39 b(HCOMPRESS,)g(and)h(the)g(sp)s(ecial)h(purp)s(ose)0 -4763 y(algorithm)33 b(is)f(the)g(IRAF)g(pixel)g(list)h(compression)f +5149 y(algorithm)33 b(is)f(the)g(IRAF)g(pixel)g(list)h(compression)f (tec)m(hnique)g(\(PLIO\).)g(There)g(are)g(2)g(v)-5 b(arian)m(ts)33 -b(of)f(the)g(GZIP)0 4876 y(algorithm:)46 b(GZIP)p 681 -4876 V 33 w(1)33 b(compresses)f(the)h(arra)m(y)g(of)g(image)h(pixel)f +b(of)f(the)g(GZIP)0 5262 y(algorithm:)46 b(GZIP)p 681 +5262 V 33 w(1)33 b(compresses)f(the)h(arra)m(y)g(of)g(image)h(pixel)f (v)-5 b(alue)33 b(normally)g(with)g(the)f(GZIP)h(algorithm,)0 -4989 y(while)26 b(GZIP)p 460 4989 V 32 w(2)g(\014rst)f(sh)m(u\017es)g +5375 y(while)26 b(GZIP)p 460 5375 V 32 w(2)g(\014rst)f(sh)m(u\017es)g (the)g(b)m(ytes)i(in)e(all)h(the)g(pixel)g(v)-5 b(alues)26 b(so)g(that)g(the)g(most-signi\014can)m(t)h(b)m(yte)f(of)g(ev)m(ery)0 -5102 y(pixel)h(app)s(ears)e(\014rst,)i(follo)m(w)m(ed)h(b)m(y)e(the)g +5488 y(pixel)h(app)s(ears)e(\014rst,)i(follo)m(w)m(ed)h(b)m(y)e(the)g (less)h(signi\014can)m(t)g(b)m(ytes)g(in)f(sequence.)39 -b(GZIP)p 2944 5102 V 33 w(2)26 b(ma)m(y)h(b)s(e)f(more)g(e\013ectiv)m -(e)0 5215 y(in)36 b(cases)h(where)e(the)h(most)h(signi\014can)m(t)f(b)m +b(GZIP)p 2944 5488 V 33 w(2)26 b(ma)m(y)h(b)s(e)f(more)g(e\013ectiv)m +(e)0 5601 y(in)36 b(cases)h(where)e(the)h(most)h(signi\014can)m(t)f(b)m (yte)h(in)f(most)g(of)g(the)g(image)i(pixel)e(v)-5 b(alues)36 -b(con)m(tains)h(the)g(same)f(bit)0 5328 y(pattern.)41 +b(con)m(tains)h(the)g(same)f(bit)0 5714 y(pattern.)41 b(In)29 b(principle,)h(an)m(y)g(n)m(um)m(b)s(er)f(of)h(other)g (compression)g(algorithms)h(could)f(also)h(b)s(e)e(supp)s(orted)f(b)m -(y)i(the)0 5441 y(FITS)g(tiled)h(image)g(compression)g(con)m(v)m(en)m -(tion.)0 5601 y(The)k(FITS)g(image)h(can)g(b)s(e)f(sub)s(divided)e(in)m -(to)k(an)m(y)f(desired)f(rectangular)h(grid)f(of)h(compression)f -(tiles.)57 b(With)0 5714 y(the)32 b(GZIP)-8 b(,)33 b(Rice,)h(and)e -(PLIO)f(algorithms,)j(the)e(default)h(is)f(to)h(tak)m(e)h(eac)m(h)g(ro) -m(w)e(of)h(the)f(image)i(as)e(a)h(tile.)47 b(The)p eop -end +(y)i(the)p eop end %%Page: 48 56 -TeXDict begin 48 55 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.48) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(48)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fj(HCOMPRESS)25 b(algorithm)i(is)g -(inheren)m(tly)f(2-dimensional)h(in)f(nature,)i(so)e(the)h(default)f -(in)g(this)g(case)i(is)e(to)h(tak)m(e)0 668 y(16)h(ro)m(ws)g(of)f(the)h -(image)h(p)s(er)d(tile.)41 b(In)27 b(most)h(cases)g(it)g(mak)m(es)h -(little)g(di\013erence)f(what)f(tiling)i(pattern)f(is)f(used,)h(so)0 -781 y(the)33 b(default)g(tiles)g(are)g(usually)g(adequate.)48 -b(In)32 b(the)h(case)g(of)g(v)m(ery)g(small)g(images,)i(it)e(could)g(b) -s(e)f(more)g(e\016cien)m(t)0 894 y(to)h(compress)f(the)h(whole)f(image) -i(as)e(a)h(single)g(tile.)48 b(Note)34 b(that)f(the)f(image)i -(dimensions)d(are)i(not)g(required)e(to)0 1007 y(b)s(e)d(an)g(in)m -(teger)i(m)m(ultiple)f(of)f(the)h(tile)g(dimensions;)g(if)f(not,)i -(then)e(the)g(tiles)i(at)f(the)f(edges)h(of)g(the)f(image)i(will)f(b)s -(e)0 1120 y(smaller)i(than)f(the)h(other)f(tiles.)0 1280 -y(The)41 b(4)g(supp)s(orted)f(image)i(compression)f(algorithms)h(are)g -(all)g('loss-less')h(when)d(applied)h(to)h(in)m(teger)h(FITS)0 -1393 y(images;)25 b(the)c(pixel)g(v)-5 b(alues)20 b(are)h(preserv)m(ed) -f(exactly)j(with)d(no)g(loss)h(of)f(information)h(during)e(the)i -(compression)g(and)0 1506 y(uncompression)34 b(pro)s(cess.)54 -b(In)34 b(addition,)j(the)e(HCOMPRESS)f(algorithm)i(supp)s(orts)d(a)i -('lossy')h(compression)0 1619 y(mo)s(de)41 b(that)h(will)g(pro)s(duce)f -(larger)h(amoun)m(t)g(of)g(image)h(compression.)74 b(This)41 -b(is)g(ac)m(hiev)m(ed)j(b)m(y)d(sp)s(ecifying)h(a)0 1732 -y(non-zero)32 b(v)-5 b(alue)32 b(for)f(the)g(HCOMPRESS)f(\\scale")k -(parameter.)44 b(Since)31 b(the)g(amoun)m(t)h(of)g(compression)f(that)h -(is)0 1844 y(ac)m(hiev)m(ed)g(dep)s(ends)d(directly)i(on)f(the)h(RMS)f -(noise)h(in)f(the)h(image,)h(it)f(is)g(usually)f(more)g(con)m(v)m(en)m -(tion)j(to)e(sp)s(ecify)0 1957 y(the)f(HCOMPRESS)e(scale)i(factor)h -(relativ)m(e)g(to)f(the)g(RMS)f(noise.)41 b(Setting)30 -b(s)f(=)g(2.5)i(means)e(use)g(a)h(scale)h(factor)0 2070 -y(that)h(is)f(2.5)i(times)e(the)h(calculated)h(RMS)e(noise)h(in)f(the)g -(image)i(tile.)44 b(In)31 b(some)g(cases)h(it)g(ma)m(y)g(b)s(e)f -(desirable)g(to)0 2183 y(sp)s(ecify)h(the)g(exact)i(scaling)f(to)g(b)s -(e)e(used,)h(instead)h(of)f(sp)s(ecifying)g(it)g(relativ)m(e)j(to)d -(the)h(calculated)h(noise)e(v)-5 b(alue.)0 2296 y(This)37 -b(ma)m(y)h(b)s(e)f(done)g(b)m(y)h(sp)s(ecifying)f(the)h(negativ)m(e)i -(of)d(desired)g(scale)i(v)-5 b(alue)38 b(\(t)m(ypically)i(in)d(the)h -(range)g(-2)g(to)0 2409 y(-100\).)0 2569 y(V)-8 b(ery)43 -b(high)g(compression)f(factors)i(\(of)f(100)h(or)f(more\))g(can)g(b)s -(e)f(ac)m(hiev)m(ed)j(b)m(y)d(using)h(large)g(HCOMPRESS)0 -2682 y(scale)31 b(v)-5 b(alues,)31 b(ho)m(w)m(ev)m(er,)h(this)e(can)g -(pro)s(duce)f(undesirable)g(\\blo)s(c)m(ky")j(artifacts)f(in)f(the)g -(compressed)g(image.)42 b(A)0 2795 y(v)-5 b(ariation)27 -b(of)g(the)f(HCOMPRESS)f(algorithm)i(\(called)h(HSCOMPRESS\))c(can)i(b) -s(e)g(used)f(in)h(this)g(case)h(to)g(apply)0 2908 y(a)f(small)h(amoun)m -(t)f(of)h(smo)s(othing)f(of)g(the)g(image)h(when)e(it)i(is)f -(uncompressed)f(to)h(help)g(co)m(v)m(er)i(up)d(these)h(artifacts.)0 -3021 y(This)36 b(smo)s(othing)h(is)g(purely)f(cosmetic)j(and)d(do)s(es) -h(not)g(cause)g(an)m(y)h(signi\014can)m(t)g(c)m(hange)g(to)f(the)g -(image)i(pixel)0 3134 y(v)-5 b(alues.)0 3294 y(Floating)34 -b(p)s(oin)m(t)f(FITS)e(images)j(\(whic)m(h)e(ha)m(v)m(e)i(BITPIX)e(=)g -(-32)h(or)g(-64\))g(usually)f(con)m(tain)i(to)s(o)f(m)m(uc)m(h)g -(\\noise")0 3407 y(in)k(the)g(least)i(signi\014can)m(t)f(bits)f(of)h -(the)f(man)m(tissa)h(of)g(the)f(pixel)h(v)-5 b(alues)37 -b(to)h(b)s(e)f(e\013ectiv)m(ely)j(compressed)d(with)0 -3520 y(an)m(y)d(lossless)g(algorithm.)52 b(Consequen)m(tly)-8 +TeXDict begin 48 55 bop 0 299 a Fj(48)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fj(FITS)g(tiled)h(image)g(compression)g(con)m(v)m +(en)m(tion.)0 715 y(The)k(FITS)g(image)h(can)g(b)s(e)f(sub)s(divided)e +(in)m(to)k(an)m(y)f(desired)f(rectangular)h(grid)f(of)h(compression)f +(tiles.)57 b(With)0 828 y(the)32 b(GZIP)-8 b(,)33 b(Rice,)h(and)e(PLIO) +f(algorithms,)j(the)e(default)h(is)f(to)h(tak)m(e)h(eac)m(h)g(ro)m(w)e +(of)h(the)f(image)i(as)e(a)h(tile.)47 b(The)0 941 y(HCOMPRESS)25 +b(algorithm)i(is)g(inheren)m(tly)f(2-dimensional)h(in)f(nature,)i(so)e +(the)h(default)f(in)g(this)g(case)i(is)e(to)h(tak)m(e)0 +1054 y(16)h(ro)m(ws)g(of)f(the)h(image)h(p)s(er)d(tile.)41 +b(In)27 b(most)h(cases)g(it)g(mak)m(es)h(little)g(di\013erence)f(what)f +(tiling)i(pattern)f(is)f(used,)h(so)0 1167 y(the)33 b(default)g(tiles)g +(are)g(usually)g(adequate.)48 b(In)32 b(the)h(case)g(of)g(v)m(ery)g +(small)g(images,)i(it)e(could)g(b)s(e)f(more)g(e\016cien)m(t)0 +1280 y(to)h(compress)f(the)h(whole)f(image)i(as)e(a)h(single)g(tile.)48 +b(Note)34 b(that)f(the)f(image)i(dimensions)d(are)i(not)g(required)e +(to)0 1393 y(b)s(e)d(an)g(in)m(teger)i(m)m(ultiple)f(of)f(the)h(tile)g +(dimensions;)g(if)f(not,)i(then)e(the)g(tiles)i(at)f(the)f(edges)h(of)g +(the)f(image)i(will)f(b)s(e)0 1506 y(smaller)i(than)f(the)h(other)f +(tiles.)0 1666 y(The)41 b(4)g(supp)s(orted)f(image)i(compression)f +(algorithms)h(are)g(all)g('loss-less')h(when)d(applied)h(to)h(in)m +(teger)h(FITS)0 1779 y(images;)25 b(the)c(pixel)g(v)-5 +b(alues)20 b(are)h(preserv)m(ed)f(exactly)j(with)d(no)g(loss)h(of)f +(information)h(during)e(the)i(compression)g(and)0 1892 +y(uncompression)34 b(pro)s(cess.)54 b(In)34 b(addition,)j(the)e +(HCOMPRESS)f(algorithm)i(supp)s(orts)d(a)i('lossy')h(compression)0 +2005 y(mo)s(de)41 b(that)h(will)g(pro)s(duce)f(larger)h(amoun)m(t)g(of) +g(image)h(compression.)74 b(This)41 b(is)g(ac)m(hiev)m(ed)j(b)m(y)d(sp) +s(ecifying)h(a)0 2118 y(non-zero)32 b(v)-5 b(alue)32 +b(for)f(the)g(HCOMPRESS)f(\\scale")k(parameter.)44 b(Since)31 +b(the)g(amoun)m(t)h(of)g(compression)f(that)h(is)0 2230 +y(ac)m(hiev)m(ed)g(dep)s(ends)d(directly)i(on)f(the)h(RMS)f(noise)h(in) +f(the)h(image,)h(it)f(is)g(usually)f(more)g(con)m(v)m(en)m(tion)j(to)e +(sp)s(ecify)0 2343 y(the)f(HCOMPRESS)e(scale)i(factor)h(relativ)m(e)g +(to)f(the)g(RMS)f(noise.)41 b(Setting)30 b(s)f(=)g(2.5)i(means)e(use)g +(a)h(scale)h(factor)0 2456 y(that)h(is)f(2.5)i(times)e(the)h +(calculated)h(RMS)e(noise)h(in)f(the)g(image)i(tile.)44 +b(In)31 b(some)g(cases)h(it)g(ma)m(y)g(b)s(e)f(desirable)g(to)0 +2569 y(sp)s(ecify)h(the)g(exact)i(scaling)f(to)g(b)s(e)e(used,)h +(instead)h(of)f(sp)s(ecifying)g(it)g(relativ)m(e)j(to)d(the)h +(calculated)h(noise)e(v)-5 b(alue.)0 2682 y(This)37 b(ma)m(y)h(b)s(e)f +(done)g(b)m(y)h(sp)s(ecifying)f(the)h(negativ)m(e)i(of)d(desired)g +(scale)i(v)-5 b(alue)38 b(\(t)m(ypically)i(in)d(the)h(range)g(-2)g(to)0 +2795 y(-100\).)0 2955 y(V)-8 b(ery)43 b(high)g(compression)f(factors)i +(\(of)f(100)h(or)f(more\))g(can)g(b)s(e)f(ac)m(hiev)m(ed)j(b)m(y)d +(using)h(large)g(HCOMPRESS)0 3068 y(scale)31 b(v)-5 b(alues,)31 +b(ho)m(w)m(ev)m(er,)h(this)e(can)g(pro)s(duce)f(undesirable)g(\\blo)s +(c)m(ky")j(artifacts)f(in)f(the)g(compressed)g(image.)42 +b(A)0 3181 y(v)-5 b(ariation)27 b(of)g(the)f(HCOMPRESS)f(algorithm)i +(\(called)h(HSCOMPRESS\))c(can)i(b)s(e)g(used)f(in)h(this)g(case)h(to)g +(apply)0 3294 y(a)f(small)h(amoun)m(t)f(of)h(smo)s(othing)f(of)g(the)g +(image)h(when)e(it)i(is)f(uncompressed)f(to)h(help)g(co)m(v)m(er)i(up)d +(these)h(artifacts.)0 3407 y(This)36 b(smo)s(othing)h(is)g(purely)f +(cosmetic)j(and)d(do)s(es)h(not)g(cause)g(an)m(y)h(signi\014can)m(t)g +(c)m(hange)g(to)f(the)g(image)i(pixel)0 3520 y(v)-5 b(alues.)0 +3680 y(Floating)34 b(p)s(oin)m(t)f(FITS)e(images)j(\(whic)m(h)e(ha)m(v) +m(e)i(BITPIX)e(=)g(-32)h(or)g(-64\))g(usually)f(con)m(tain)i(to)s(o)f +(m)m(uc)m(h)g(\\noise")0 3793 y(in)k(the)g(least)i(signi\014can)m(t)f +(bits)f(of)h(the)f(man)m(tissa)h(of)g(the)f(pixel)h(v)-5 +b(alues)37 b(to)h(b)s(e)f(e\013ectiv)m(ely)j(compressed)d(with)0 +3906 y(an)m(y)d(lossless)g(algorithm.)52 b(Consequen)m(tly)-8 b(,)35 b(\015oating)g(p)s(oin)m(t)e(images)i(are)f(\014rst)f(quan)m -(tized)h(in)m(to)h(scaled)g(in)m(teger)0 3633 y(pixel)26 +(tized)h(in)m(to)h(scaled)g(in)m(teger)0 4019 y(pixel)26 b(v)-5 b(alues)25 b(\(and)g(th)m(us)g(thro)m(wing)h(a)m(w)m(a)m(y)h(m)m (uc)m(h)e(of)h(the)f(noise\))h(b)s(efore)f(b)s(eing)g(compressed)g -(with)g(the)h(sp)s(eci\014ed)0 3745 y(algorithm)d(\(either)g(GZIP)-8 +(with)g(the)h(sp)s(eci\014ed)0 4131 y(algorithm)d(\(either)g(GZIP)-8 b(,)23 b(Rice,)i(or)d(HCOMPRESS\).)f(This)h(tec)m(hnique)h(pro)s(duces) -e(m)m(uc)m(h)h(higher)g(compression)0 3858 y(factors)33 +e(m)m(uc)m(h)h(higher)g(compression)0 4244 y(factors)33 b(than)e(simply)g(using)g(the)h(GZIP)g(utilit)m(y)h(to)f(externally)h (compress)f(the)f(whole)h(FITS)f(\014le,)i(but)e(it)h(also)0 -3971 y(means)d(that)h(the)g(original)g(\015oating)g(v)-5 +4357 y(means)d(that)h(the)g(original)g(\015oating)g(v)-5 b(alue)30 b(pixel)f(v)-5 b(alues)30 b(are)g(not)f(exactly)i(preserv)m -(ed.)40 b(When)29 b(done)g(prop)s(erly)-8 b(,)0 4084 +(ed.)40 b(When)29 b(done)g(prop)s(erly)-8 b(,)0 4470 y(this)33 b(in)m(teger)h(scaling)f(tec)m(hnique)h(will)f(only)f (discard)h(the)f(insigni\014can)m(t)i(noise)f(while)g(still)g -(preserving)f(all)i(the)0 4197 y(real)43 b(information)f(in)g(the)h +(preserving)f(all)i(the)0 4583 y(real)43 b(information)f(in)g(the)h (image.)77 b(The)42 b(amoun)m(t)g(of)h(precision)f(that)h(is)f (retained)h(in)e(the)i(pixel)f(v)-5 b(alues)43 b(is)0 -4310 y(con)m(trolled)37 b(b)m(y)d(the)i("quan)m(tization)h(lev)m(el")g +4696 y(con)m(trolled)37 b(b)m(y)d(the)i("quan)m(tization)h(lev)m(el")g (parameter,)g(q.)54 b(Larger)35 b(v)-5 b(alues)36 b(of)f(q)f(will)i -(result)f(in)f(compressed)0 4423 y(images)h(whose)e(pixels)h(more)f +(result)f(in)f(compressed)0 4809 y(images)h(whose)e(pixels)h(more)f (closely)i(matc)m(h)g(the)e(\015oating)i(p)s(oin)m(t)e(pixel)h(v)-5 -b(alues,)35 b(but)e(at)h(the)g(same)g(time)g(the)0 4536 +b(alues,)35 b(but)e(at)h(the)g(same)g(time)g(the)0 4922 y(amoun)m(t)j(of)f(compression)g(that)h(is)f(ac)m(hiev)m(ed)i(will)f(b) s(e)e(reduced.)58 b(Users)36 b(should)f(exp)s(erimen)m(t)i(with)e -(di\013eren)m(t)0 4649 y(v)-5 b(alues)25 b(for)g(this)g(parameter)g(to) +(di\013eren)m(t)0 5035 y(v)-5 b(alues)25 b(for)g(this)g(parameter)g(to) h(determine)f(the)g(optimal)h(v)-5 b(alue)25 b(that)h(preserv)m(es)f -(all)h(the)f(useful)f(information)h(in)0 4762 y(the)k(image,)h(without) +(all)h(the)f(useful)f(information)h(in)0 5148 y(the)k(image,)h(without) f(needlessly)g(preserving)f(all)h(the)g(\\noise")h(whic)m(h)e(will)h(h) -m(urt)f(the)h(compression)f(e\016ciency)-8 b(.)0 4922 +m(urt)f(the)h(compression)f(e\016ciency)-8 b(.)0 5308 y(The)38 b(default)g(v)-5 b(alue)38 b(for)g(the)g(quan)m(tization)i (scale)g(factor)f(is)f(4.0,)j(whic)m(h)d(means)g(that)g(scaled)h(in)m -(teger)h(pixel)0 5035 y(v)-5 b(alues)41 b(will)h(b)s(e)e(quan)m(tized)i +(teger)h(pixel)0 5421 y(v)-5 b(alues)41 b(will)h(b)s(e)e(quan)m(tized)i (suc)m(h)f(that)h(the)f(di\013erence)h(b)s(et)m(w)m(een)f(adjacen)m(t)i (in)m(teger)f(v)-5 b(alues)42 b(will)f(b)s(e)g(1/4th)0 -5148 y(of)35 b(the)h(noise)f(lev)m(el)i(in)e(the)g(image)h(bac)m +5534 y(of)35 b(the)h(noise)f(lev)m(el)i(in)e(the)g(image)h(bac)m (kground.)55 b(CFITSIO)34 b(uses)g(an)h(optimized)h(algorithm)g(to)g -(accurately)0 5261 y(estimate)41 b(the)e(noise)h(in)f(the)g(image.)68 +(accurately)0 5647 y(estimate)41 b(the)e(noise)h(in)f(the)g(image.)68 b(As)39 b(an)g(example,)k(if)c(the)g(RMS)g(noise)g(in)g(the)h(bac)m -(kground)e(pixels)i(of)0 5373 y(an)35 b(image)h(=)f(32.0,)j(then)d(the) -h(spacing)f(b)s(et)m(w)m(een)h(adjacen)m(t)g(scaled)g(in)m(teger)h +(kground)e(pixels)i(of)p eop end +%%Page: 49 57 +TeXDict begin 49 56 bop 0 299 a Fh(5.6.)72 b(IMA)m(GE)31 +b(COMPRESSION)2567 b Fj(49)0 555 y(an)35 b(image)h(=)f(32.0,)j(then)d +(the)h(spacing)f(b)s(et)m(w)m(een)h(adjacen)m(t)g(scaled)g(in)m(teger)h (pixel)e(v)-5 b(alues)36 b(will)f(equal)h(8.0)g(b)m(y)0 -5486 y(default.)63 b(Note)38 b(that)h(the)e(RMS)h(noise)g(is)f(indep)s +668 y(default.)63 b(Note)38 b(that)h(the)e(RMS)h(noise)g(is)f(indep)s (enden)m(tly)g(calculated)j(for)d(eac)m(h)i(tile)f(of)g(the)g(image,)j -(so)d(the)0 5599 y(resulting)24 b(in)m(teger)i(scaling)f(factor)g(ma)m +(so)d(the)0 781 y(resulting)24 b(in)m(teger)i(scaling)f(factor)g(ma)m (y)g(\015uctuate)g(sligh)m(tly)g(for)f(eac)m(h)i(tile.)40 b(In)23 b(some)i(cases)g(it)f(ma)m(y)h(b)s(e)f(desirable)0 -5712 y(to)29 b(sp)s(ecify)f(the)h(exact)h(quan)m(tization)h(lev)m(el)f +894 y(to)29 b(sp)s(ecify)f(the)h(exact)h(quan)m(tization)h(lev)m(el)f (to)f(b)s(e)f(used,)g(instead)h(of)g(sp)s(ecifying)f(it)h(relativ)m(e)i -(to)e(the)g(calculated)p eop end -%%Page: 49 57 -TeXDict begin 49 56 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.49) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.6.)72 -b(IMA)m(GE)31 b(COMPRESSION)2567 b Fj(49)0 555 y(noise)27 -b(v)-5 b(alue.)40 b(This)27 b(ma)m(y)g(b)s(e)g(done)f(b)m(y)h(sp)s -(ecifying)g(the)g(negativ)m(e)i(of)f(desired)e(quan)m(tization)j(lev)m -(el)g(for)d(the)h(v)-5 b(alue)0 668 y(of)29 b(q.)40 b(In)28 -b(the)i(previous)e(example,)i(one)f(could)g(sp)s(ecify)g(q)g(=)f(-8.0)j -(so)e(that)h(the)f(quan)m(tized)g(in)m(teger)i(lev)m(els)f(di\013er)0 -781 y(b)m(y)k(exactly)j(8.0.)54 b(Larger)35 b(negativ)m(e)i(v)-5 +(to)e(the)g(calculated)0 1007 y(noise)e(v)-5 b(alue.)40 +b(This)27 b(ma)m(y)g(b)s(e)g(done)f(b)m(y)h(sp)s(ecifying)g(the)g +(negativ)m(e)i(of)f(desired)e(quan)m(tization)j(lev)m(el)g(for)d(the)h +(v)-5 b(alue)0 1120 y(of)29 b(q.)40 b(In)28 b(the)i(previous)e +(example,)i(one)f(could)g(sp)s(ecify)g(q)g(=)f(-8.0)j(so)e(that)h(the)f +(quan)m(tized)g(in)m(teger)i(lev)m(els)f(di\013er)0 1233 +y(b)m(y)k(exactly)j(8.0.)54 b(Larger)35 b(negativ)m(e)i(v)-5 b(alues)35 b(for)f(q)h(means)f(that)h(the)g(lev)m(els)h(are)f(more)g -(coarsely)h(spaced,)g(and)0 894 y(will)31 b(pro)s(duce)e(higher)h -(compression)g(factors.)0 1054 y(When)h(\015oating)g(p)s(oin)m(t)g +(coarsely)h(spaced,)g(and)0 1346 y(will)31 b(pro)s(duce)e(higher)h +(compression)g(factors.)0 1506 y(When)h(\015oating)g(p)s(oin)m(t)g (images)h(are)f(b)s(eing)g(quan)m(tized,)h(one)f(m)m(ust)g(also)h(sp)s -(ecify)e(what)h(quan)m(tization)h(metho)s(d)0 1167 y(is)g(to)h(b)s(e)e +(ecify)e(what)h(quan)m(tization)h(metho)s(d)0 1619 y(is)g(to)h(b)s(e)e (used.)44 b(The)32 b(default)g(algorithm)g(is)g(called)h(\\SUBTRA)m -(CTIVE)p 2567 1167 28 4 v 33 w(DITHER)p 2965 1167 V 33 -w(1".)46 b(A)32 b(second)g(v)-5 b(ariation)0 1280 y(called)30 -b(\\SUBTRA)m(CTIVE)p 982 1280 V 33 w(DITHER)p 1380 1280 +(CTIVE)p 2567 1619 28 4 v 33 w(DITHER)p 2965 1619 V 33 +w(1".)46 b(A)32 b(second)g(v)-5 b(ariation)0 1732 y(called)30 +b(\\SUBTRA)m(CTIVE)p 982 1732 V 33 w(DITHER)p 1380 1732 V 33 w(2")g(is)f(also)h(a)m(v)-5 b(ailable,)32 b(whic)m(h)d(do)s(es)g -(the)h(same)f(thing)h(except)g(that)g(an)m(y)0 1393 y(pixels)g(with)g +(the)h(same)f(thing)h(except)g(that)g(an)m(y)0 1844 y(pixels)g(with)g (a)g(v)-5 b(alue)31 b(of)f(0.0)h(are)f(not)g(dithered)g(and)f(instead)h (the)g(zero)h(v)-5 b(alues)30 b(are)h(exactly)g(preserv)m(ed)f(in)g -(the)0 1506 y(compressed)35 b(image.)58 b(One)35 b(ma)m(y)h(also)h +(the)0 1957 y(compressed)35 b(image.)58 b(One)35 b(ma)m(y)h(also)h (turn)d(o\013)i(dithering)g(completely)h(with)e(the)h(\\NO)p -3148 1506 V 33 w(DITHER")g(option,)0 1619 y(but)30 b(this)g(is)g(not)h +3148 1957 V 33 w(DITHER")g(option,)0 2070 y(but)30 b(this)g(is)g(not)h (recommended)f(b)s(ecause)g(it)h(can)g(cause)g(larger)g(systematic)h -(errors)e(in)g(measuremen)m(ts)g(of)h(the)0 1732 y(p)s(osition)f(or)h +(errors)e(in)g(measuremen)m(ts)g(of)h(the)0 2183 y(p)s(osition)f(or)h (brigh)m(tness)f(of)g(ob)5 b(jects)32 b(in)e(the)g(compressed)g(image.) -0 1892 y(There)37 b(are)g(3)h(metho)s(ds)e(for)h(sp)s(ecifying)g(all)h +0 2343 y(There)37 b(are)g(3)h(metho)s(ds)e(for)h(sp)s(ecifying)g(all)h (the)g(parameters)f(needed)g(to)h(write)f(a)h(FITS)e(image)j(in)d(the)i -(tile)0 2005 y(compressed)28 b(format.)41 b(The)28 b(parameters)g(ma)m +(tile)0 2456 y(compressed)28 b(format.)41 b(The)28 b(parameters)g(ma)m (y)h(either)g(b)s(e)f(sp)s(eci\014ed)g(at)h(run)e(time)i(as)g(part)f -(of)h(the)g(\014le)f(name)h(of)0 2118 y(the)e(output)f(compressed)h +(of)h(the)g(\014le)f(name)h(of)0 2569 y(the)e(output)f(compressed)h (FITS)e(\014le,)j(or)f(the)g(writing)f(program)h(ma)m(y)g(call)h(a)f -(set)g(of)g(help)s(er)f(CFITSIO)f(subrou-)0 2230 y(tines)36 +(set)g(of)g(help)s(er)f(CFITSIO)f(subrou-)0 2682 y(tines)36 b(that)g(are)g(pro)m(vided)f(for)h(sp)s(ecifying)f(the)h(parameter)g(v) -5 b(alues,)37 b(or)f(\\compression)g(directiv)m(e")i(k)m(eyw)m(ords)0 -2343 y(ma)m(y)c(b)s(e)e(added)h(to)g(the)h(header)f(of)g(eac)m(h)h +2795 y(ma)m(y)c(b)s(e)e(added)h(to)g(the)h(header)f(of)g(eac)m(h)h (image)h(HDU)e(to)h(sp)s(ecify)f(the)g(compression)g(parameters.)50 -b(These)33 b(3)0 2456 y(metho)s(ds)d(are)g(describ)s(ed)g(b)s(elo)m(w.) -0 2616 y(1\))23 b(A)m(t)g(run)e(time,)k(when)c(sp)s(ecifying)h(the)h +b(These)33 b(3)0 2908 y(metho)s(ds)d(are)g(describ)s(ed)g(b)s(elo)m(w.) +0 3068 y(1\))23 b(A)m(t)g(run)e(time,)k(when)c(sp)s(ecifying)h(the)h (name)f(of)g(the)h(output)f(FITS)f(\014le)i(to)g(b)s(e)e(created,)k -(the)e(user)e(can)i(indicate)0 2729 y(that)32 b(images)g(should)e(b)s +(the)e(user)e(can)i(indicate)0 3181 y(that)32 b(images)g(should)e(b)s (e)h(written)g(in)g(tile-compressed)i(format)e(b)m(y)h(enclosing)g(the) -f(compression)h(parameters)0 2842 y(in)e(square)g(brac)m(k)m(ets)i +f(compression)h(parameters)0 3294 y(in)e(square)g(brac)m(k)m(ets)i (follo)m(wing)g(the)e(ro)s(ot)h(disk)f(\014le)g(name)h(in)f(the)h -(follo)m(wing)g(format:)191 3100 y Fe([compress)45 b(NAME)i(T1,T2;)f -(q[z])h(QLEVEL,)e(s)j(HSCALE])0 3359 y Fj(where)191 3617 +(follo)m(wing)g(format:)191 3552 y Fe([compress)45 b(NAME)i(T1,T2;)f +(q[z])h(QLEVEL,)e(s)j(HSCALE])0 3810 y Fj(where)191 4068 y Fe(NAME)142 b(=)47 b(algorithm)f(name:)94 b(GZIP,)46 -b(Rice,)h(HCOMPRESS,)e(HSCOMPRSS)g(or)i(PLIO)620 3730 +b(Rice,)h(HCOMPRESS,)e(HSCOMPRSS)g(or)i(PLIO)620 4181 y(may)g(be)h(abbreviated)c(to)j(the)g(first)g(letter)f(\(or)h(HS)g(for) -g(HSCOMPRESS\))191 3843 y(T1,T2)94 b(=)47 b(tile)g(dimension)e(\(e.g.)i +g(HSCOMPRESS\))191 4294 y(T1,T2)94 b(=)47 b(tile)g(dimension)e(\(e.g.)i (100,100)f(for)g(square)h(tiles)f(100)h(pixels)f(wide\))191 -3955 y(QLEVEL)g(=)h(quantization)e(level)h(for)h(floating)f(point)g -(FITS)h(images)191 4068 y(HSCALE)f(=)h(HCOMPRESS)f(scale)g(factor;)g -(default)g(=)h(0)h(which)e(is)h(lossless.)0 4327 y Fj(Here)31 +4407 y(QLEVEL)g(=)h(quantization)e(level)h(for)h(floating)f(point)g +(FITS)h(images)191 4520 y(HSCALE)f(=)h(HCOMPRESS)f(scale)g(factor;)g +(default)g(=)h(0)h(which)e(is)h(lossless.)0 4778 y Fj(Here)31 b(are)g(a)f(few)h(examples)f(of)h(this)f(extended)h(syn)m(tax:)191 -4585 y Fe(myfile.fit[compress])185 b(-)48 b(use)f(the)g(default)e -(compression)g(algorithm)g(\(Rice\))1432 4698 y(and)i(the)g(default)e -(tile)i(size)g(\(row)f(by)i(row\))191 4924 y(myfile.fit[compress)42 +5036 y Fe(myfile.fit[compress])185 b(-)48 b(use)f(the)g(default)e +(compression)g(algorithm)g(\(Rice\))1432 5149 y(and)i(the)g(default)e +(tile)i(size)g(\(row)f(by)i(row\))191 5375 y(myfile.fit[compress)42 b(G])48 b(-)f(use)g(the)g(specified)e(compression)g(algorithm;)191 -5036 y(myfile.fit[compress)d(R])239 b(only)46 b(the)h(first)f(letter)h -(of)g(the)g(algorithm)191 5149 y(myfile.fit[compress)42 -b(P])239 b(should)46 b(be)h(given.)191 5262 y(myfile.fit[compress)42 -b(H])191 5488 y(myfile.fit[compress)g(R)48 b(100,100])141 -b(-)47 b(use)g(Rice)g(and)g(100)g(x)g(100)g(pixel)f(tiles)191 -5714 y(myfile.fit[compress)c(R;)48 b(q)f(10.0])f(-)i(quantization)c -(level)j(=)g(\(RMS-noise\))e(/)i(10.)p eop end +5488 y(myfile.fit[compress)d(R])239 b(only)46 b(the)h(first)f(letter)h +(of)g(the)g(algorithm)191 5601 y(myfile.fit[compress)42 +b(P])239 b(should)46 b(be)h(given.)191 5714 y(myfile.fit[compress)42 +b(H])p eop end %%Page: 50 58 -TeXDict begin 50 57 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.50) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(50)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)191 555 y Fe(myfile.fit[compress)42 -b(R;)48 b(qz)f(10.0])f(-)i(quantization)c(level)i(=)i(\(RMS-noise\))d -(/)i(10.)1050 668 y(also)g(use)g(the)f(SUBTRACTIVE_DITHER_2)d -(quantization)h(method)191 781 y(myfile.fit[compress)e(HS;)47 -b(s)h(2.0])94 b(-)h(HSCOMPRESS)45 b(\(with)i(smoothing\))2005 -894 y(and)f(scale)h(=)g(2.0)g(*)h(RMS-noise)0 1116 y -Fj(2\))29 b(Before)g(calling)g(the)f(CFITSIO)e(routine)i(to)h(write)f -(the)g(image)h(header)f(k)m(eyw)m(ords)g(\(e.g.,)j(\014ts)p -3335 1116 28 4 v 32 w(create)p 3603 1116 V 34 w(image\))0 -1228 y(the)37 b(programmer)g(can)g(call)i(the)e(routines)g(describ)s -(ed)f(b)s(elo)m(w)h(to)h(sp)s(ecify)f(the)g(compression)g(algorithm)i -(and)0 1341 y(the)g(tiling)h(pattern)f(that)g(is)g(to)g(b)s(e)f(used.) -65 b(There)38 b(are)i(routines)e(for)h(sp)s(ecifying)f(the)h(v)-5 -b(arious)39 b(compression)0 1454 y(parameters)31 b(and)e(similar)i -(routines)f(to)i(return)d(the)h(curren)m(t)h(v)-5 b(alues)30 -b(of)h(the)f(parameters:)95 1676 y Fe(int)47 b -(fits_set_compression_type\()o(fit)o(sfil)o(e)42 b(*fptr,)k(int)h -(comptype,)e(int)i(*status\))95 1789 y(int)g -(fits_set_tile_dim\(fitsfile)41 b(*fptr,)46 b(int)h(ndim,)f(long)h -(*tilesize,)e(int)i(*status\))95 1902 y(int)g +TeXDict begin 50 57 bop 0 299 a Fj(50)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)191 668 y Fe(myfile.fit[compress)42 b(R)48 +b(100,100])141 b(-)47 b(use)g(Rice)g(and)g(100)g(x)g(100)g(pixel)f +(tiles)191 894 y(myfile.fit[compress)c(R;)48 b(q)f(10.0])f(-)i +(quantization)c(level)j(=)g(\(RMS-noise\))e(/)i(10.)191 +1007 y(myfile.fit[compress)42 b(R;)48 b(qz)f(10.0])f(-)i(quantization)c +(level)i(=)i(\(RMS-noise\))d(/)i(10.)1050 1120 y(also)g(use)g(the)f +(SUBTRACTIVE_DITHER_2)d(quantization)h(method)191 1233 +y(myfile.fit[compress)e(HS;)47 b(s)h(2.0])94 b(-)h(HSCOMPRESS)45 +b(\(with)i(smoothing\))2005 1346 y(and)f(scale)h(=)g(2.0)g(*)h +(RMS-noise)0 1595 y Fj(2\))29 b(Before)g(calling)g(the)f(CFITSIO)e +(routine)i(to)h(write)f(the)g(image)h(header)f(k)m(eyw)m(ords)g +(\(e.g.,)j(\014ts)p 3335 1595 28 4 v 32 w(create)p 3603 +1595 V 34 w(image\))0 1708 y(the)37 b(programmer)g(can)g(call)i(the)e +(routines)g(describ)s(ed)f(b)s(elo)m(w)h(to)h(sp)s(ecify)f(the)g +(compression)g(algorithm)i(and)0 1821 y(the)g(tiling)h(pattern)f(that)g +(is)g(to)g(b)s(e)f(used.)65 b(There)38 b(are)i(routines)e(for)h(sp)s +(ecifying)f(the)h(v)-5 b(arious)39 b(compression)0 1934 +y(parameters)31 b(and)e(similar)i(routines)f(to)i(return)d(the)h +(curren)m(t)h(v)-5 b(alues)30 b(of)h(the)f(parameters:)95 +2184 y Fe(int)47 b(fits_set_compression_type\()o(fit)o(sfil)o(e)42 +b(*fptr,)k(int)h(comptype,)e(int)i(*status\))95 2297 +y(int)g(fits_set_tile_dim\(fitsfile)41 b(*fptr,)46 b(int)h(ndim,)f +(long)h(*tilesize,)e(int)i(*status\))95 2410 y(int)g (fits_set_quantize_level\(fi)o(tsf)o(ile)41 b(*fptr,)46 -b(float)h(qlevel,)f(int)h(*status\))95 2015 y(int)g +b(float)h(qlevel,)f(int)h(*status\))95 2523 y(int)g (fits_set_quantize_method\(f)o(its)o(file)41 b(*fptr,)46 -b(int)h(method,)f(int)h(*status\))95 2128 y(int)g +b(int)h(method,)f(int)h(*status\))95 2636 y(int)g (fits_set_quantize_dither\(f)o(its)o(file)41 b(*fptr,)46 -b(int)h(dither,)f(int)h(*status\))95 2240 y(int)g +b(int)h(dither,)f(int)h(*status\))95 2749 y(int)g (fits_set_dither_seed\(fitsf)o(ile)41 b(*fptr,)46 b(int)h(seed,)g(int)f -(*status\))95 2353 y(int)h(fits_set_dither_offset\(fit)o(sfi)o(le)42 -b(*fptr,)k(int)h(offset,)e(int)i(*status\))95 2466 y(int)g +(*status\))95 2861 y(int)h(fits_set_dither_offset\(fit)o(sfi)o(le)42 +b(*fptr,)k(int)h(offset,)e(int)i(*status\))95 2974 y(int)g (fits_set_lossy_int\(fitsfil)o(e)42 b(*fptr,)k(int)h(lossy_int,)e(int)i -(*status\))286 2579 y(this)g(forces)f(integer)g(image)g(to)h(be)h -(converted)d(to)i(floats,)f(then)h(quantized)95 2692 +(*status\))286 3087 y(this)g(forces)f(integer)g(image)g(to)h(be)h +(converted)d(to)i(floats,)f(then)h(quantized)95 3200 y(int)g(fits_set_huge_hdu\(fitsfile)41 b(*fptr,)46 b(int)h(huge,)f(int) -h(*status\);)286 2805 y(this)g(should)f(be)h(called)f(when)h(the)g +h(*status\);)286 3313 y(this)g(should)f(be)h(called)f(when)h(the)g (compressed)e(image)h(size)h(is)g(more)g(than)f(4)i(GB.)95 -2918 y(int)f(fits_set_hcomp_scale\(fitsf)o(ile)41 b(*fptr,)46 -b(float)h(scale,)f(int)h(*status\))95 3031 y(int)g +3426 y(int)f(fits_set_hcomp_scale\(fitsf)o(ile)41 b(*fptr,)46 +b(float)h(scale,)f(int)h(*status\))95 3539 y(int)g (fits_set_hcomp_smooth\(fits)o(fil)o(e)42 b(*fptr,)k(int)h(smooth,)f -(int)h(*status\))668 3144 y(Set)g(smooth)f(=)i(1)f(to)g(apply)g -(smoothing)e(when)i(uncompressing)d(the)j(image)95 3370 +(int)h(*status\))668 3652 y(Set)g(smooth)f(=)i(1)f(to)g(apply)g +(smoothing)e(when)i(uncompressing)d(the)j(image)95 3878 y(int)g(fits_get_compression_type\()o(fit)o(sfil)o(e)42 -b(*fptr,)k(int)h(*comptype,)e(int)i(*status\))95 3482 +b(*fptr,)k(int)h(*comptype,)e(int)i(*status\))95 3991 y(int)g(fits_get_tile_dim\(fitsfile)41 b(*fptr,)46 b(int)h(ndim,)f -(long)h(*tilesize,)e(int)i(*status\))95 3595 y(int)g +(long)h(*tilesize,)e(int)i(*status\))95 4103 y(int)g (fits_get_quantize_level\(fi)o(tsf)o(ile)41 b(*fptr,)46 -b(float)h(*level,)f(int)h(*status\))95 3708 y(int)g +b(float)h(*level,)f(int)h(*status\))95 4216 y(int)g (fits_get_hcomp_scale\(fitsf)o(ile)41 b(*fptr,)46 b(float)h(*scale,)e -(int)i(*status\))0 3930 y Fj(Sev)m(eral)33 b(sym)m(b)s(olic)f(constan)m +(int)i(*status\))0 4466 y Fj(Sev)m(eral)33 b(sym)m(b)s(olic)f(constan)m (ts)h(are)f(de\014ned)e(for)i(use)f(as)h(the)g(v)-5 b(alue)33 b(of)f(the)f(`compt)m(yp)s(e')i(parameter:)44 b(GZIP)p -3802 3930 V 32 w(1,)0 4043 y(GZIP)p 227 4043 V 32 w(2,)j(RICE)p -604 4043 V 32 w(1,)f(HCOMPRESS)p 1333 4043 V 32 w(1)d(or)g(PLIO)p -1800 4043 V 32 w(1.)78 b(En)m(tering)43 b(NULL)g(for)g(compt)m(yp)s(e)g -(will)g(turn)f(o\013)h(the)0 4156 y(tile-compression)32 +3802 4466 V 32 w(1,)0 4579 y(GZIP)p 227 4579 V 32 w(2,)j(RICE)p +604 4579 V 32 w(1,)f(HCOMPRESS)p 1333 4579 V 32 w(1)d(or)g(PLIO)p +1800 4579 V 32 w(1.)78 b(En)m(tering)43 b(NULL)g(for)g(compt)m(yp)s(e)g +(will)g(turn)f(o\013)h(the)0 4692 y(tile-compression)32 b(and)e(cause)h(normal)f(FITS)g(images)h(to)g(b)s(e)f(written.)0 -4316 y(There)20 b(are)g(also)i(de\014ned)d(sym)m(b)s(olic)h(constan)m +4852 y(There)20 b(are)g(also)i(de\014ned)d(sym)m(b)s(olic)h(constan)m (ts)i(for)e(the)g(quan)m(tization)i(metho)s(d:)36 b(\\SUBTRA)m(CTIVE)p -3507 4316 V 32 w(DITHER)p 3904 4316 V 33 w(1",)0 4429 -y(\\SUBTRA)m(CTIVE)p 726 4429 V 33 w(DITHER)p 1124 4429 -V 32 w(2",)c(and)e(\\NO)p 1664 4429 V 33 w(DITHER".)0 -4589 y(3\))g(CFITSIO)e(will)i(uses)f(the)h(v)-5 b(alues)29 +3507 4852 V 32 w(DITHER)p 3904 4852 V 33 w(1",)0 4965 +y(\\SUBTRA)m(CTIVE)p 726 4965 V 33 w(DITHER)p 1124 4965 +V 32 w(2",)c(and)e(\\NO)p 1664 4965 V 33 w(DITHER".)0 +5125 y(3\))g(CFITSIO)e(will)i(uses)f(the)h(v)-5 b(alues)29 b(of)h(the)g(follo)m(wing)g(k)m(eyw)m(ords,)h(if)e(they)h(are)g(presen) -m(t)f(in)g(the)h(header)f(of)h(the)0 4702 y(image)k(HDU,)g(to)g +m(t)f(in)g(the)h(header)f(of)h(the)0 5238 y(image)k(HDU,)g(to)g (determine)f(ho)m(w)g(to)h(compress)f(that)g(HDU.)h(These)f(k)m(eyw)m -(ords)g(o)m(v)m(erride)i(an)m(y)e(compression)0 4815 +(ords)g(o)m(v)m(erride)i(an)m(y)e(compression)0 5351 y(parameters)e(that)g(w)m(ere)g(sp)s(eci\014ed)e(with)h(the)h(previous) -f(2)g(metho)s(ds.)95 5036 y Fe(FZALGOR)94 b(-)47 b('RICE_1')f(,)h +f(2)g(metho)s(ds.)95 5601 y Fe(FZALGOR)94 b(-)47 b('RICE_1')f(,)h ('GZIP_1',)f('GZIP_2',)f('HCOMPRESS_1',)f('PLIO_1',)h('NONE')95 -5149 y(FZTILE)142 b(-)47 b('ROW',)g('WHOLE',)e(or)i('\(n,m\)')95 -5262 y(FZQVALUE)f(-)h(float)g(value)f(\(default)g(=)h(4.0\))95 -5375 y(FZQMETHD)f(-)h('SUBTRACTIVE_DITHER_1',)42 b -('SUBTRACTIVE_DITHER_2',)f('NO_DITHER')95 5488 y(FZDTHRSD)46 -b(-)h('CLOCK',)f('CHECKSUM',)f(1)i(-)h(10000)95 5601 -y(FZINT2F)94 b(-)h(T,)47 b(or)h(F:)94 b(Convert)46 b(integers)g(to)h -(floats,)f(then)g(quantize?)95 5714 y(FZHSCALE)g(-)h(float)g(value)f -(\(default)g(=)h(0\).)95 b(Hcompress)45 b(scale)h(value.)p +5714 y(FZTILE)142 b(-)47 b('ROW',)g('WHOLE',)e(or)i('\(n,m\)')p eop end %%Page: 51 59 -TeXDict begin 51 58 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.51) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.6.)72 -b(IMA)m(GE)31 b(COMPRESSION)2567 b Fj(51)0 555 y(No)23 -b(sp)s(ecial)f(action)i(is)e(required)f(b)m(y)h(soft)m(w)m(are)i(when)d -(read)h(tile-compressed)h(images)g(b)s(ecause)f(all)h(the)f(CFITSIO)0 -668 y(routines)35 b(that)g(read)g(normal)g(uncompressed)f(FITS)g +TeXDict begin 51 58 bop 0 299 a Fh(5.6.)72 b(IMA)m(GE)31 +b(COMPRESSION)2567 b Fj(51)95 555 y Fe(FZQVALUE)46 b(-)h(float)g(value) +f(\(default)g(=)h(4.0\))95 668 y(FZQMETHD)f(-)h +('SUBTRACTIVE_DITHER_1',)42 b('SUBTRACTIVE_DITHER_2',)f('NO_DITHER')95 +781 y(FZDTHRSD)46 b(-)h('CLOCK',)f('CHECKSUM',)f(1)i(-)h(10000)95 +894 y(FZINT2F)94 b(-)h(T,)47 b(or)h(F:)94 b(Convert)46 +b(integers)g(to)h(floats,)f(then)g(quantize?)95 1007 +y(FZHSCALE)g(-)h(float)g(value)f(\(default)g(=)h(0\).)95 +b(Hcompress)45 b(scale)h(value.)0 1257 y Fj(No)23 b(sp)s(ecial)f +(action)i(is)e(required)f(b)m(y)h(soft)m(w)m(are)i(when)d(read)h +(tile-compressed)h(images)g(b)s(ecause)f(all)h(the)f(CFITSIO)0 +1369 y(routines)35 b(that)g(read)g(normal)g(uncompressed)f(FITS)g (images)i(also)g(transparen)m(tly)g(read)e(images)j(in)d(the)h(tile-)0 -781 y(compressed)28 b(format;)h(CFITSIO)e(essen)m(tially)j(treats)f +1482 y(compressed)28 b(format;)h(CFITSIO)e(essen)m(tially)j(treats)f (the)f(binary)g(table)h(that)f(con)m(tains)i(the)e(compressed)g(tiles)0 -894 y(as)j(if)f(it)h(w)m(ere)g(an)f(IMA)m(GE)h(extension.)0 -1054 y(The)f(follo)m(wing)i(2)e(routines)h(are)f(a)m(v)-5 +1595 y(as)j(if)f(it)h(w)m(ere)g(an)f(IMA)m(GE)h(extension.)0 +1755 y(The)f(follo)m(wing)i(2)e(routines)h(are)f(a)m(v)-5 b(ailable)33 b(for)d(compressing)h(or)f(or)g(decompressing)h(an)f -(image:)95 1309 y Fe(int)47 b(fits_img_compress\(fitsfile)41 +(image:)95 2005 y Fe(int)47 b(fits_img_compress\(fitsfile)41 b(*infptr,)46 b(fitsfile)f(*outfptr,)g(int)i(*status\);)95 -1421 y(int)g(fits_img_decompress)c(\(fitsfile)i(*infptr,)h(fitsfile)f -(*outfptr,)h(int)g(*status\);)0 1676 y Fj(Before)30 b(calling)h(the)f +2118 y(int)g(fits_img_decompress)c(\(fitsfile)i(*infptr,)h(fitsfile)f +(*outfptr,)h(int)g(*status\);)0 2368 y Fj(Before)30 b(calling)h(the)f (compression)f(routine,)h(the)g(compression)f(parameters)h(m)m(ust)f -(\014rst)g(b)s(e)g(de\014ned)f(in)h(one)h(of)0 1789 y(the)e(3)h(w)m(a)m +(\014rst)g(b)s(e)g(de\014ned)f(in)h(one)h(of)0 2481 y(the)e(3)h(w)m(a)m (y)g(describ)s(ed)e(in)h(the)g(previous)g(paragraphs.)39 b(There)28 b(is)g(also)h(a)f(routine)h(to)f(determine)h(if)f(the)g -(curren)m(t)0 1902 y(HDU)j(con)m(tains)h(a)e(tile)i(compressed)e(image) -i(\(it)f(returns)e(1)i(or)f(0\):)95 2156 y Fe(int)47 +(curren)m(t)0 2594 y(HDU)j(con)m(tains)h(a)e(tile)i(compressed)e(image) +i(\(it)f(returns)e(1)i(or)f(0\):)95 2843 y Fe(int)47 b(fits_is_compressed_image\(f)o(its)o(file)41 b(*fptr,)46 -b(int)h(*status\);)0 2411 y Fj(A)30 b(small)g(example)g(program)f +b(int)h(*status\);)0 3093 y Fj(A)30 b(small)g(example)g(program)f (called)i('imcop)m(y')f(is)g(included)f(with)g(CFITSIO)f(that)i(can)f -(b)s(e)g(used)g(to)h(compress)0 2524 y(\(or)44 b(uncompress\))g(an)m(y) +(b)s(e)g(used)g(to)h(compress)0 3206 y(\(or)44 b(uncompress\))g(an)m(y) g(FITS)g(image.)83 b(This)43 b(program)h(can)h(b)s(e)e(used)h(to)g(exp) -s(erimen)m(t)h(with)f(the)g(v)-5 b(arious)0 2637 y(compression)30 +s(erimen)m(t)h(with)f(the)g(v)-5 b(arious)0 3319 y(compression)30 b(options)h(on)f(existing)i(FITS)d(images)j(as)e(sho)m(wn)g(in)g(these) -h(examples:)0 2891 y Fe(1\))95 b(imcopy)46 b(infile.fit)f -('outfile.fit[compress]')334 3117 y(This)i(will)f(use)h(the)g(default)f -(compression)f(algorithm)g(\(Rice\))h(and)h(the)334 3230 -y(default)f(tile)h(size)f(\(row)h(by)g(row\))0 3456 y(2\))95 +h(examples:)0 3569 y Fe(1\))95 b(imcopy)46 b(infile.fit)f +('outfile.fit[compress]')334 3794 y(This)i(will)f(use)h(the)g(default)f +(compression)f(algorithm)g(\(Rice\))h(and)h(the)334 3907 +y(default)f(tile)h(size)f(\(row)h(by)g(row\))0 4133 y(2\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(GZIP]')334 -3681 y(This)47 b(will)f(use)h(the)g(GZIP)g(compression)e(algorithm)g -(and)i(the)g(default)334 3794 y(tile)g(size)f(\(row)h(by)g(row\).)94 +4359 y(This)47 b(will)f(use)h(the)g(GZIP)g(compression)e(algorithm)g +(and)i(the)g(default)334 4472 y(tile)g(size)f(\(row)h(by)g(row\).)94 b(The)47 b(allowed)f(compression)f(algorithms)g(are)334 -3907 y(Rice,)h(GZIP,)h(and)g(PLIO.)94 b(Only)46 b(the)h(first)g(letter) -f(of)h(the)g(algorithm)334 4020 y(name)g(needs)f(to)h(be)g(specified.)0 -4246 y(3\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(G)47 -b(100,100]')334 4472 y(This)g(will)f(use)h(the)g(GZIP)g(compression)e -(algorithm)g(and)i(100)g(X)g(100)g(pixel)334 4585 y(tiles.)0 -4811 y(4\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(R)47 -b(100,100;)f(qz)h(10.0]')334 5036 y(This)g(will)f(use)h(the)g(Rice)g -(compression)e(algorithm,)g(100)h(X)i(100)f(pixel)334 -5149 y(tiles,)f(and)h(quantization)e(level)h(=)h(RMSnoise)f(/)h(10.0)g -(\(assuming)e(the)334 5262 y(input)h(image)h(has)g(a)g(floating)f -(point)g(data)h(type\).)f(By)h(specifying)334 5375 y(qz)g(instead)f(of) -h(q,)g(this)g(means)f(use)h(the)g(subtractive)e(dither2)334 -5488 y(quantization)g(method.)0 5714 y(5\))95 b(imcopy)46 -b(infile.fit)f(outfile.fit)p eop end +4585 y(Rice,)h(GZIP,)h(and)g(PLIO.)94 b(Only)46 b(the)h(first)g(letter) +f(of)h(the)g(algorithm)334 4698 y(name)g(needs)f(to)h(be)g(specified.)0 +4924 y(3\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(G)47 +b(100,100]')334 5149 y(This)g(will)f(use)h(the)g(GZIP)g(compression)e +(algorithm)g(and)i(100)g(X)g(100)g(pixel)334 5262 y(tiles.)0 +5488 y(4\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(R)47 +b(100,100;)f(qz)h(10.0]')334 5714 y(This)g(will)f(use)h(the)g(Rice)g +(compression)e(algorithm,)g(100)h(X)i(100)f(pixel)p eop +end %%Page: 52 60 -TeXDict begin 52 59 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.52) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(52)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)334 668 y Fe(If)47 b(the)g(input)g(file)f(is) -h(in)h(tile-compressed)43 b(format,)j(then)h(it)g(will)f(be)334 -781 y(uncompressed)f(to)i(the)g(output)f(file.)94 b(Otherwise,)45 -b(it)i(simply)f(copies)334 894 y(the)h(input)f(image)h(to)g(the)g -(output)f(image.)0 1120 y(6\))95 b(imcopy)46 b -('infile.fit[1001:1500,20)o(01:2)o(500])o(')89 b(outfile.fit)334 -1346 y(This)47 b(extracts)e(a)j(500)f(X)g(500)g(pixel)f(section)g(of)h -(the)g(much)g(larger)334 1458 y(input)f(image)h(\(which)f(may)h(be)g -(in)g(tile-compressed)d(format\).)93 b(The)334 1571 y(output)46 -b(is)h(a)h(normal)e(uncompressed)e(FITS)j(image.)0 1797 +TeXDict begin 52 59 bop 0 299 a Fj(52)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)334 555 y Fe(tiles,)46 b(and)h(quantization)e(level)h(=)h +(RMSnoise)f(/)h(10.0)g(\(assuming)e(the)334 668 y(input)h(image)h(has)g +(a)g(floating)f(point)g(data)h(type\).)f(By)h(specifying)334 +781 y(qz)g(instead)f(of)h(q,)g(this)g(means)f(use)h(the)g(subtractive)e +(dither2)334 894 y(quantization)g(method.)0 1120 y(5\))95 +b(imcopy)46 b(infile.fit)f(outfile.fit)334 1346 y(If)i(the)g(input)g +(file)f(is)h(in)h(tile-compressed)43 b(format,)j(then)h(it)g(will)f(be) +334 1458 y(uncompressed)f(to)i(the)g(output)f(file.)94 +b(Otherwise,)45 b(it)i(simply)f(copies)334 1571 y(the)h(input)f(image)h +(to)g(the)g(output)f(image.)0 1797 y(6\))95 b(imcopy)46 +b('infile.fit[1001:1500,20)o(01:2)o(500])o(')89 b(outfile.fit)334 +2023 y(This)47 b(extracts)e(a)j(500)f(X)g(500)g(pixel)f(section)g(of)h +(the)g(much)g(larger)334 2136 y(input)f(image)h(\(which)f(may)h(be)g +(in)g(tile-compressed)d(format\).)93 b(The)334 2249 y(output)46 +b(is)h(a)h(normal)e(uncompressed)e(FITS)j(image.)0 2475 y(7\))95 b(imcopy)46 b('infile.fit[1001:1500,20)o(01:2)o(500])o(')89 -b(outfile.fit.gz)334 2023 y(Same)47 b(as)g(above,)f(except)g(the)h -(output)f(file)h(is)g(externally)e(compressed)334 2136 -y(using)h(the)h(gzip)g(algorithm.)0 2397 y -SDict begin H.S end - 0 2397 a 0 -2397 a -SDict begin 13.6 H.A end - 0 2397 a 0 2397 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.7) cvn /DEST pdfmark -end - 0 2397 a 197 x Ff(5.7)135 b(ASCI)t(I)45 -b(and)f(Binary)h(T)-11 b(able)45 b(Routines)0 2846 y -Fj(These)36 b(routines)g(p)s(erform)f(read)i(and)e(write)i(op)s +b(outfile.fit.gz)334 2700 y(Same)47 b(as)g(above,)f(except)g(the)h +(output)f(file)h(is)g(externally)e(compressed)334 2813 +y(using)h(the)h(gzip)g(algorithm.)0 3287 y Ff(5.7)135 +b(ASCI)t(I)45 b(and)f(Binary)h(T)-11 b(able)45 b(Routines)0 +3542 y Fj(These)36 b(routines)g(p)s(erform)f(read)i(and)e(write)i(op)s (erations)g(on)f(columns)g(of)h(data)g(in)f(FITS)g(ASCI)s(I)e(or)j -(Binary)0 2959 y(tables.)47 b(Note)33 b(that)g(in)e(the)i(follo)m(wing) +(Binary)0 3655 y(tables.)47 b(Note)33 b(that)g(in)e(the)i(follo)m(wing) g(discussions,)f(the)g(\014rst)g(ro)m(w)g(and)f(column)h(in)g(a)g -(table)h(is)g(at)f(p)s(osition)h(1)0 3072 y(not)e(0.)0 -3232 y(Users)k(should)g(also)i(read)e(the)h(follo)m(wing)h(c)m(hapter)g +(table)h(is)g(at)f(p)s(osition)h(1)0 3768 y(not)e(0.)0 +3928 y(Users)k(should)g(also)i(read)e(the)h(follo)m(wing)h(c)m(hapter)g (on)e(the)h(CFITSIO)e(iterator)j(function)f(whic)m(h)f(pro)m(vides)h(a) -0 3345 y(more)i(`ob)5 b(ject)39 b(orien)m(ted')g(metho)s(d)f(of)g +0 4041 y(more)i(`ob)5 b(ject)39 b(orien)m(ted')g(metho)s(d)f(of)g (reading)g(and)g(writing)g(table)h(columns.)63 b(The)37 -b(iterator)j(function)d(is)i(a)0 3458 y(little)e(more)f(complicated)h +b(iterator)j(function)d(is)i(a)0 4154 y(little)e(more)f(complicated)h (to)f(use,)h(but)e(the)g(adv)-5 b(an)m(tages)38 b(are)d(that)i(it)f (usually)f(tak)m(es)i(less)e(co)s(de)h(to)g(p)s(erform)0 -3571 y(the)h(same)f(op)s(eration,)j(and)c(the)i(resulting)f(program)g +4267 y(the)h(same)f(op)s(eration,)j(and)c(the)i(resulting)f(program)g (often)h(runs)e(faster)i(b)s(ecause)f(the)g(FITS)g(\014les)g(are)h -(read)0 3684 y(and)30 b(written)g(using)g(the)h(most)f(e\016cien)m(t)i -(blo)s(c)m(k)f(size.)0 3840 y -SDict begin H.S end - 0 3840 a 0 3840 a -SDict begin 13.6 H.A end - 0 3840 -a 0 3840 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.7.1) cvn /DEST pdfmark -end - 0 3840 a 146 x Fd(5.7.1)112 b(Create)38 b(New)f(T)-9 -b(able)0 4202 y Fi(1)81 b Fj(Create)40 b(a)f(new)g(ASCI)s(I)e(or)i(bin) -m(table)h(table)g(extension.)68 b(If)39 b(the)g(FITS)g(\014le)g(is)g -(curren)m(tly)g(empt)m(y)h(then)f(a)227 4315 y(dumm)m(y)25 -b(primary)f(arra)m(y)i(will)g(b)s(e)f(created)i(b)s(efore)e(app)s -(ending)f(the)i(table)g(extension)h(to)f(it.)40 b(The)25 -b(tblt)m(yp)s(e)227 4428 y(parameter)39 b(de\014nes)e(the)h(t)m(yp)s(e) -h(of)f(table)h(and)e(can)i(ha)m(v)m(e)g(v)-5 b(alues)39 -b(of)f(ASCI)s(I)p 2924 4428 28 4 v 31 w(TBL)g(or)g(BINAR)-8 -b(Y)p 3659 4428 V 34 w(TBL.)227 4541 y(The)29 b(naxis2)g(parameter)h +(read)0 4380 y(and)30 b(written)g(using)g(the)h(most)f(e\016cien)m(t)i +(blo)s(c)m(k)f(size.)0 4698 y Fd(5.7.1)112 b(Create)38 +b(New)f(T)-9 b(able)0 4924 y Fi(1)81 b Fj(Create)40 b(a)f(new)g(ASCI)s +(I)e(or)i(bin)m(table)h(table)g(extension.)68 b(If)39 +b(the)g(FITS)g(\014le)g(is)g(curren)m(tly)g(empt)m(y)h(then)f(a)227 +5036 y(dumm)m(y)25 b(primary)f(arra)m(y)i(will)g(b)s(e)f(created)i(b)s +(efore)e(app)s(ending)f(the)i(table)g(extension)h(to)f(it.)40 +b(The)25 b(tblt)m(yp)s(e)227 5149 y(parameter)39 b(de\014nes)e(the)h(t) +m(yp)s(e)h(of)f(table)h(and)e(can)i(ha)m(v)m(e)g(v)-5 +b(alues)39 b(of)f(ASCI)s(I)p 2924 5149 28 4 v 31 w(TBL)g(or)g(BINAR)-8 +b(Y)p 3659 5149 V 34 w(TBL.)227 5262 y(The)29 b(naxis2)g(parameter)h (giv)m(es)g(the)g(initial)g(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(to)h(b)s -(e)f(created)h(in)f(the)g(table,)h(and)f(should)227 4654 +(e)f(created)h(in)f(the)g(table,)h(and)f(should)227 5375 y(normally)h(b)s(e)f(set)h(=)g(0.)40 b(CFITSIO)29 b(will)h (automatically)i(increase)f(the)e(size)i(of)f(the)g(table)g(as)g -(additional)227 4767 y(ro)m(ws)d(are)g(written.)40 b(A)27 +(additional)227 5488 y(ro)m(ws)d(are)g(written.)40 b(A)27 b(non-zero)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(ma)m(y)g(b)s(e)f(sp)s (eci\014ed)g(to)i(reserv)m(e)f(space)h(for)e(that)i(man)m(y)227 -4880 y(ro)m(ws,)41 b(ev)m(en)e(if)g(a)g(few)m(er)g(n)m(um)m(b)s(er)e +5601 y(ro)m(ws,)41 b(ev)m(en)e(if)g(a)g(few)m(er)g(n)m(um)m(b)s(er)e (of)i(ro)m(ws)f(will)h(b)s(e)f(written.)66 b(The)38 b(tunit)g(and)g -(extname)i(parameters)227 4993 y(are)e(optional)g(and)f(a)h(n)m(ull)f +(extname)i(parameters)227 5714 y(are)e(optional)g(and)f(a)h(n)m(ull)f (p)s(oin)m(ter)g(ma)m(y)h(b)s(e)f(giv)m(en)h(if)g(they)f(are)h(not)f -(de\014ned.)61 b(The)37 b(FITS)f(Standard)227 5106 y(recommends)29 -b(that)h(only)g(letters,)h(digits,)g(and)e(the)g(underscore)g(c)m -(haracter)i(b)s(e)e(used)g(in)g(column)g(names)227 5219 -y(\(the)c(tt)m(yp)s(e)g(parameter\))g(with)e(no)h(em)m(b)s(edded)f -(spaces.)40 b(T)-8 b(railing)24 b(blank)g(c)m(haracters)i(are)e(not)h -(signi\014can)m(t.)95 5601 y Fe(int)47 b(fits_create_tbl)d(/)j(ffcrtb) -286 5714 y(\(fitsfile)f(*fptr,)g(int)h(tbltype,)e(LONGLONG)h(naxis2,)g -(int)g(tfields,)g(char)h(*ttype[],)p eop end +(de\014ned.)61 b(The)37 b(FITS)f(Standard)p eop end %%Page: 53 61 -TeXDict begin 53 60 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.53) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.7.)72 -b(ASCI)s(I)29 b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 -b(R)m(OUTINES)1864 b Fj(53)334 555 y Fe(char)47 b(*tform[],)e(char)i -(*tunit[],)e(char)i(*extname,)e(int)i(*status\))0 693 -y -SDict begin H.S end - 0 693 a 0 693 a -SDict begin 13.6 H.A end - 0 693 a 0 693 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.7.2) cvn /DEST pdfmark -end - 0 693 a 151 x Fd(5.7.2)112 -b(Column)39 b(Information)f(Routines)0 1050 y Fi(1)81 -b Fj(Get)30 b(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(or)f(columns)g(in) -h(the)g(curren)m(t)f(FITS)g(table.)41 b(The)29 b(n)m(um)m(b)s(er)f(of)i -(ro)m(ws)g(is)f(giv)m(en)i(b)m(y)227 1163 y(the)j(NAXIS2)f(k)m(eyw)m -(ord)h(and)e(the)i(n)m(um)m(b)s(er)e(of)h(columns)g(is)g(giv)m(en)h(b)m -(y)f(the)h(TFIELDS)e(k)m(eyw)m(ord)i(in)f(the)227 1276 -y(header)d(of)h(the)g(table.)95 1521 y Fe(int)47 b(fits_get_num_rows)c -(/)48 b(ffgnrw)286 1634 y(\(fitsfile)e(*fptr,)g(>)h(long)g(*nrows,)f -(int)h(*status\);)95 1860 y(int)g(fits_get_num_rowsll)c(/)k(ffgnrwll) -286 1973 y(\(fitsfile)f(*fptr,)g(>)h(LONGLONG)f(*nrows,)g(int)g -(*status\);)95 2199 y(int)h(fits_get_num_cols)c(/)48 -b(ffgncl)286 2312 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*ncols,)f(int)h -(*status\);)0 2557 y Fi(2)81 b Fj(Get)25 b(the)f(table)i(column)e(n)m -(um)m(b)s(er)f(\(and)h(name\))h(of)f(the)h(column)f(whose)g(name)g -(matc)m(hes)i(an)e(input)g(template)227 2670 y(name.)48 -b(If)32 b(casesen)i(=)e(CASESEN)g(then)g(the)h(column)f(name)h(matc)m -(h)h(will)f(b)s(e)f(case-sensitiv)m(e,)k(whereas)227 -2783 y(if)27 b(casesen)h(=)e(CASEINSEN)g(then)h(the)g(case)h(will)f(b)s -(e)f(ignored.)40 b(As)27 b(a)g(general)h(rule,)f(the)g(column)g(names) -227 2895 y(should)j(b)s(e)f(treated)j(as)e(case)i(INsensitiv)m(e.)227 -3043 y(The)26 b(input)g(column)g(name)g(template)i(ma)m(y)f(b)s(e)f -(either)h(the)g(exact)h(name)e(of)h(the)f(column)g(to)i(b)s(e)d(searc)m -(hed)227 3156 y(for,)k(or)f(it)h(ma)m(y)g(con)m(tain)h(wild)e(card)g(c) -m(haracters)i(\(*,)g(?,)f(or)f(#\),)h(or)f(it)h(ma)m(y)g(con)m(tain)h -(the)e(in)m(teger)i(n)m(um)m(b)s(er)227 3269 y(of)j(the)f(desired)f -(column)h(\(with)g(the)h(\014rst)e(column)h(=)g(1\).)46 -b(The)32 b(`*')h(wild)f(card)g(c)m(haracter)h(matc)m(hes)h(an)m(y)227 -3382 y(sequence)h(of)g(c)m(haracters)h(\(including)f(zero)g(c)m -(haracters\))i(and)d(the)h(`?')53 b(c)m(haracter)36 b(matc)m(hes)g(an)m -(y)f(single)227 3495 y(c)m(haracter.)42 b(The)29 b(#)h(wildcard)f(will) -h(matc)m(h)h(an)m(y)e(consecutiv)m(e)j(string)e(of)f(decimal)i(digits)f -(\(0-9\).)43 b(If)29 b(more)227 3608 y(than)43 b(one)f(column)h(name)f -(in)g(the)h(table)h(matc)m(hes)f(the)g(template)h(string,)i(then)c(the) -h(\014rst)e(matc)m(h)j(is)227 3721 y(returned)28 b(and)h(the)g(status)h -(v)-5 b(alue)30 b(will)f(b)s(e)g(set)h(to)g(COL)p 2171 -3721 28 4 v 32 w(NOT)p 2408 3721 V 32 w(UNIQUE)f(as)h(a)f(w)m(arning)g -(that)h(a)g(unique)227 3834 y(matc)m(h)e(w)m(as)g(not)f(found.)39 +TeXDict begin 53 60 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 +b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 +b Fj(53)227 555 y(recommends)29 b(that)h(only)g(letters,)h(digits,)g +(and)e(the)g(underscore)g(c)m(haracter)i(b)s(e)e(used)g(in)g(column)g +(names)227 668 y(\(the)c(tt)m(yp)s(e)g(parameter\))g(with)e(no)h(em)m +(b)s(edded)f(spaces.)40 b(T)-8 b(railing)24 b(blank)g(c)m(haracters)i +(are)e(not)h(signi\014can)m(t.)95 1029 y Fe(int)47 b(fits_create_tbl)d +(/)j(ffcrtb)286 1142 y(\(fitsfile)f(*fptr,)g(int)h(tbltype,)e(LONGLONG) +h(naxis2,)g(int)g(tfields,)g(char)h(*ttype[],)334 1255 +y(char)g(*tform[],)e(char)i(*tunit[],)e(char)i(*extname,)e(int)i +(*status\))0 1503 y Fi(2)81 b Fj(Cop)m(y)30 b(the)g(structure)f(of)i +(an)f(op)s(en)f(table)i(to)g(a)f(new)g(table,)h(optionally)g(cop)m +(ying)g(zero)g(or)f(more)g(ro)m(ws)g(from)227 1616 y(the)38 +b(input)e(table.)61 b(This)37 b(is)g(useful)f(in)h(cases)h(where)f(a)g +(task)h(will)f(\014lter)g(ro)m(ws)g(from)g(the)g(input)f(b)s(efore)227 +1729 y(transferring)25 b(to)h(the)g(output,)g(so)g(a)f(\\pristine")h +(output)f(table)i(with)e(zero)h(ro)m(ws)f(is)h(desired)f(to)h(start.)39 +b(The)227 1842 y(input)29 b(\014le)h(m)m(ust)g(b)s(e)g(op)s(en)f(and)g +(p)s(oin)m(t)i(to)f(a)h(binary)e(table)i(extension.)41 +b(The)30 b(output)f(\014le)h(m)m(ust)g(b)s(e)g(op)s(en)227 +1955 y(for)25 b(writing;)i(a)f(new)e(extension)i(is)f(created)i(with)d +(the)i(same)f(table)h(structure)f(as)g(the)h(input.)38 +b(Optionally)-8 b(,)227 2067 y(a)30 b(range)f(of)h(nro)m(ws)e(ma)m(y)i +(b)s(e)e(copied)i(starting)g(from)e(\014rstro)m(w,)i(similar)f(to)h +(\014ts)p 2952 2067 28 4 v 32 w(cop)m(y)p 3165 2067 V +34 w(ro)m(ws\(\).)41 b(The)28 b(v)-5 b(alue)227 2180 +y(nro)m(ws)30 b(ma)m(y)h(b)s(e)f(0.)41 b(Note)32 b(that)f(the)f +(\014rst)g(ro)m(w)g(in)g(a)h(table)g(is)g(at)g(ro)m(w)f(=)g(1.)95 +2428 y Fe(int)47 b(fits_copy_hdutab)d(/)j(ffcpht)286 +2541 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(LONGLONG)h +(firstrow,)334 2654 y(LONGLONG)g(nrows,)g(>)h(int)g(*status\))0 +2943 y Fd(5.7.2)112 b(Column)39 b(Information)f(Routines)0 +3150 y Fi(1)81 b Fj(Get)30 b(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(or) +f(columns)g(in)h(the)g(curren)m(t)f(FITS)g(table.)41 +b(The)29 b(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(is)f(giv)m(en)i(b)m(y)227 +3263 y(the)j(NAXIS2)f(k)m(eyw)m(ord)h(and)e(the)i(n)m(um)m(b)s(er)e(of) +h(columns)g(is)g(giv)m(en)h(b)m(y)f(the)h(TFIELDS)e(k)m(eyw)m(ord)i(in) +f(the)227 3376 y(header)d(of)h(the)g(table.)95 3624 y +Fe(int)47 b(fits_get_num_rows)c(/)48 b(ffgnrw)286 3737 +y(\(fitsfile)e(*fptr,)g(>)h(long)g(*nrows,)f(int)h(*status\);)95 +3963 y(int)g(fits_get_num_rowsll)c(/)k(ffgnrwll)286 4076 +y(\(fitsfile)f(*fptr,)g(>)h(LONGLONG)f(*nrows,)g(int)g(*status\);)95 +4301 y(int)h(fits_get_num_cols)c(/)48 b(ffgncl)286 4414 +y(\(fitsfile)e(*fptr,)g(>)h(int)g(*ncols,)f(int)h(*status\);)0 +4662 y Fi(2)81 b Fj(Get)25 b(the)f(table)i(column)e(n)m(um)m(b)s(er)f +(\(and)h(name\))h(of)f(the)h(column)f(whose)g(name)g(matc)m(hes)i(an)e +(input)g(template)227 4775 y(name.)48 b(If)32 b(casesen)i(=)e(CASESEN)g +(then)g(the)h(column)f(name)h(matc)m(h)h(will)f(b)s(e)f(case-sensitiv)m +(e,)k(whereas)227 4888 y(if)27 b(casesen)h(=)e(CASEINSEN)g(then)h(the)g +(case)h(will)f(b)s(e)f(ignored.)40 b(As)27 b(a)g(general)h(rule,)f(the) +g(column)g(names)227 5001 y(should)j(b)s(e)f(treated)j(as)e(case)i +(INsensitiv)m(e.)227 5149 y(The)26 b(input)g(column)g(name)g(template)i +(ma)m(y)f(b)s(e)f(either)h(the)g(exact)h(name)e(of)h(the)f(column)g(to) +i(b)s(e)d(searc)m(hed)227 5262 y(for,)k(or)f(it)h(ma)m(y)g(con)m(tain)h +(wild)e(card)g(c)m(haracters)i(\(*,)g(?,)f(or)f(#\),)h(or)f(it)h(ma)m +(y)g(con)m(tain)h(the)e(in)m(teger)i(n)m(um)m(b)s(er)227 +5375 y(of)j(the)f(desired)f(column)h(\(with)g(the)h(\014rst)e(column)h +(=)g(1\).)46 b(The)32 b(`*')h(wild)f(card)g(c)m(haracter)h(matc)m(hes)h +(an)m(y)227 5488 y(sequence)h(of)g(c)m(haracters)h(\(including)f(zero)g +(c)m(haracters\))i(and)d(the)h(`?')53 b(c)m(haracter)36 +b(matc)m(hes)g(an)m(y)f(single)227 5601 y(c)m(haracter.)42 +b(The)29 b(#)h(wildcard)f(will)h(matc)m(h)h(an)m(y)e(consecutiv)m(e)j +(string)e(of)f(decimal)i(digits)f(\(0-9\).)43 b(If)29 +b(more)227 5714 y(than)43 b(one)f(column)h(name)f(in)g(the)h(table)h +(matc)m(hes)f(the)g(template)h(string,)i(then)c(the)h(\014rst)e(matc)m +(h)j(is)p eop end +%%Page: 54 62 +TeXDict begin 54 61 bop 0 299 a Fj(54)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(returned)e(and)h(the)g(status)h(v)-5 +b(alue)30 b(will)f(b)s(e)g(set)h(to)g(COL)p 2171 555 +28 4 v 32 w(NOT)p 2408 555 V 32 w(UNIQUE)f(as)h(a)f(w)m(arning)g(that)h +(a)g(unique)227 668 y(matc)m(h)e(w)m(as)g(not)f(found.)39 b(T)-8 b(o)27 b(\014nd)f(the)h(other)g(cases)h(that)g(matc)m(h)g(the)g -(template,)h(call)f(the)g(routine)f(again)227 3947 y(lea)m(ving)g(the)e +(template,)h(call)f(the)g(routine)f(again)227 781 y(lea)m(ving)g(the)e (input)f(status)h(v)-5 b(alue)26 b(equal)f(to)h(COL)p -1950 3947 V 32 w(NOT)p 2187 3947 V 32 w(UNIQUE)f(and)f(the)h(next)h -(matc)m(hing)g(name)f(will)227 4059 y(then)30 b(b)s(e)g(returned.)40 +1950 781 V 32 w(NOT)p 2187 781 V 32 w(UNIQUE)f(and)f(the)h(next)h(matc) +m(hing)g(name)f(will)227 894 y(then)30 b(b)s(e)g(returned.)40 b(Rep)s(eat)30 b(this)h(pro)s(cess)f(un)m(til)g(a)h(status)g(=)f(COL)p -2628 4059 V 32 w(NOT)p 2865 4059 V 32 w(F)m(OUND)i(is)e(returned.)227 -4207 y(The)36 b(FITS)g(Standard)g(recommends)g(that)i(only)e(letters,)k +2628 894 V 32 w(NOT)p 2865 894 V 32 w(F)m(OUND)i(is)e(returned.)227 +1046 y(The)36 b(FITS)g(Standard)g(recommends)g(that)i(only)e(letters,)k (digits,)f(and)d(the)h(underscore)f(c)m(haracter)j(b)s(e)227 -4320 y(used)31 b(in)g(column)g(names)g(\(with)h(no)f(em)m(b)s(edded)f +1159 y(used)31 b(in)g(column)g(names)g(\(with)h(no)f(em)m(b)s(edded)f (spaces\).)45 b(T)-8 b(railing)32 b(blank)f(c)m(haracters)i(are)e(not)h -(signi\014-)227 4433 y(can)m(t.)95 4678 y Fe(int)47 b(fits_get_colnum)d -(/)j(ffgcno)286 4791 y(\(fitsfile)f(*fptr,)g(int)h(casesen,)e(char)i -(*templt,)e(>)j(int)f(*colnum,)334 4904 y(int)g(*status\))95 -5130 y(int)g(fits_get_colname)d(/)j(ffgcnn)286 5243 y(\(fitsfile)f +(signi\014-)227 1272 y(can)m(t.)95 1534 y Fe(int)47 b(fits_get_colnum)d +(/)j(ffgcno)286 1647 y(\(fitsfile)f(*fptr,)g(int)h(casesen,)e(char)i +(*templt,)e(>)j(int)f(*colnum,)334 1760 y(int)g(*status\))95 +1986 y(int)g(fits_get_colname)d(/)j(ffgcnn)286 2099 y(\(fitsfile)f (*fptr,)g(int)h(casesen,)e(char)i(*templt,)e(>)j(char)e(*colname,)334 -5356 y(int)h(*colnum,)f(int)g(*status\))0 5601 y Fi(3)81 +2212 y(int)h(*colnum,)f(int)g(*status\))0 2475 y Fi(3)81 b Fj(Return)30 b(the)i(data)g(t)m(yp)s(e,)h(v)m(ector)g(rep)s(eat)f(v) -5 b(alue,)32 b(and)f(the)h(width)f(in)g(b)m(ytes)h(of)g(a)g(column)f -(in)g(an)h(ASCI)s(I)e(or)227 5714 y(binary)35 b(table.)56 +(in)g(an)h(ASCI)s(I)e(or)227 2588 y(binary)35 b(table.)56 b(Allo)m(w)m(ed)37 b(v)-5 b(alues)36 b(for)f(the)h(data)g(t)m(yp)s(e)f (in)g(ASCI)s(I)f(tables)i(are:)51 b(TSTRING,)35 b(TSHOR)-8 -b(T,)p eop end -%%Page: 54 62 -TeXDict begin 54 61 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.54) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(54)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(TLONG,)36 b(TFLO)m(A)-8 -b(T,)36 b(and)f(TDOUBLE.)i(Binary)e(tables)i(also)g(supp)s(ort)d(these) -i(t)m(yp)s(es:)52 b(TLOGICAL,)227 668 y(TBIT,)37 b(TBYTE,)f(TLONGLONG,) -g(TCOMPLEX)g(and)g(TDBLCOMPLEX.)g(The)g(negativ)m(e)j(of)e(the)227 -781 y(data)29 b(t)m(yp)s(e)g(co)s(de)f(v)-5 b(alue)29 -b(is)f(returned)f(if)h(it)h(is)f(a)h(v)-5 b(ariable)29 -b(length)g(arra)m(y)f(column.)40 b(Note)30 b(that)f(in)e(the)i(case)227 -894 y(of)i(a)g('J')g(32-bit)i(in)m(teger)f(binary)e(table)h(column,)g -(this)g(routine)g(will)g(return)f(data)h(t)m(yp)s(e)g(=)g(TINT32BIT)227 -1007 y(\(whic)m(h)40 b(in)f(fact)h(is)f(equiv)-5 b(alen)m(t)41 +b(T,)227 2700 y(TLONG,)36 b(TFLO)m(A)-8 b(T,)36 b(and)f(TDOUBLE.)i +(Binary)e(tables)i(also)g(supp)s(ort)d(these)i(t)m(yp)s(es:)52 +b(TLOGICAL,)227 2813 y(TBIT,)37 b(TBYTE,)f(TLONGLONG,)g(TCOMPLEX)g(and) +g(TDBLCOMPLEX.)g(The)g(negativ)m(e)j(of)e(the)227 2926 +y(data)29 b(t)m(yp)s(e)g(co)s(de)f(v)-5 b(alue)29 b(is)f(returned)f(if) +h(it)h(is)f(a)h(v)-5 b(ariable)29 b(length)g(arra)m(y)f(column.)40 +b(Note)30 b(that)f(in)e(the)i(case)227 3039 y(of)i(a)g('J')g(32-bit)i +(in)m(teger)f(binary)e(table)h(column,)g(this)g(routine)g(will)g +(return)f(data)h(t)m(yp)s(e)g(=)g(TINT32BIT)227 3152 +y(\(whic)m(h)40 b(in)f(fact)h(is)f(equiv)-5 b(alen)m(t)41 b(to)f(TLONG\).)f(With)h(most)g(curren)m(t)f(C)g(compilers,)j(a)d(v)-5 -b(alue)40 b(in)f(a)h('J')227 1120 y(column)29 b(has)g(the)h(same)f +b(alue)40 b(in)f(a)h('J')227 3265 y(column)29 b(has)g(the)h(same)f (size)h(as)g(an)f('in)m(t')h(v)-5 b(ariable,)31 b(and)d(ma)m(y)i(not)g (b)s(e)e(equiv)-5 b(alen)m(t)31 b(to)f(a)g('long')g(v)-5 -b(ariable,)227 1233 y(whic)m(h)30 b(is)h(64-bits)g(long)g(on)g(an)f -(increasing)h(n)m(um)m(b)s(er)e(of)h(compilers.)227 1400 +b(ariable,)227 3378 y(whic)m(h)30 b(is)h(64-bits)g(long)g(on)g(an)f +(increasing)h(n)m(um)m(b)s(er)e(of)h(compilers.)227 3530 y(The)22 b('rep)s(eat')h(parameter)g(returns)f(the)g(v)m(ector)i(rep)s (eat)f(coun)m(t)g(on)f(the)h(binary)f(table)h(TF)m(ORMn)f(k)m(eyw)m -(ord)227 1513 y(v)-5 b(alue.)60 b(\(ASCI)s(I)35 b(table)j(columns)e +(ord)227 3643 y(v)-5 b(alue.)60 b(\(ASCI)s(I)35 b(table)j(columns)e (alw)m(a)m(ys)i(ha)m(v)m(e)g(rep)s(eat)e(=)g(1\).)60 -b(The)36 b('width')g(parameter)h(returns)f(the)227 1626 +b(The)36 b('width')g(parameter)h(returns)f(the)227 3756 y(width)30 b(in)g(b)m(ytes)h(of)g(a)f(single)h(column)g(elemen)m(t)h (\(e.g.,)g(a)f('10D')h(binary)e(table)h(column)f(will)h(ha)m(v)m(e)h -(width)227 1739 y(=)d(8,)i(an)e(ASCI)s(I)f(table)i('F12.2')i(column)e +(width)227 3868 y(=)d(8,)i(an)e(ASCI)s(I)f(table)i('F12.2')i(column)e (will)g(ha)m(v)m(e)g(width)f(=)g(12,)i(and)e(a)h(binary)e(table'60A')k -(c)m(haracter)227 1852 y(string)44 b(column)g(will)g(ha)m(v)m(e)h +(c)m(haracter)227 3981 y(string)44 b(column)g(will)g(ha)m(v)m(e)h (width)e(=)h(60\);)52 b(Note)45 b(that)f(CFITSIO)f(supp)s(orts)f(the)i -(lo)s(cal)h(con)m(v)m(en)m(tion)227 1965 y(for)d(sp)s(ecifying)f(arra)m +(lo)s(cal)h(con)m(v)m(en)m(tion)227 4094 y(for)d(sp)s(ecifying)f(arra)m (ys)i(of)f(\014xed)f(length)h(strings)f(within)h(a)g(binary)f(table)h -(c)m(haracter)i(column)d(using)227 2078 y(the)g(syn)m(tax)g(TF)m(ORM)g +(c)m(haracter)i(column)d(using)227 4207 y(the)g(syn)m(tax)g(TF)m(ORM)g (=)g('rAw')f(where)g('r')h(is)g(the)g(total)h(n)m(um)m(b)s(er)d(of)i(c) -m(haracters)h(\(=)f(the)g(width)f(of)227 2191 y(the)f(column\))g(and)e +m(haracters)h(\(=)f(the)g(width)f(of)227 4320 y(the)f(column\))g(and)e ('w')i(is)f(the)h(width)f(of)g(a)h(unit)f(string)g(within)g(the)h -(column.)65 b(Th)m(us)37 b(if)h(the)h(column)227 2304 +(column.)65 b(Th)m(us)37 b(if)h(the)h(column)227 4433 y(has)34 b(TF)m(ORM)h(=)f('60A12')j(then)d(this)g(means)g(that)h(eac)m (h)g(ro)m(w)g(of)f(the)h(table)g(con)m(tains)g(5)g(12-c)m(haracter)227 -2416 y(substrings)23 b(within)h(the)g(60-c)m(haracter)j(\014eld,)f(and) +4546 y(substrings)23 b(within)h(the)g(60-c)m(haracter)j(\014eld,)f(and) d(th)m(us)h(in)g(this)g(case)h(this)g(routine)f(will)g(return)f(t)m(yp) -s(eco)s(de)227 2529 y(=)f(TSTRING,)g(rep)s(eat)g(=)g(60,)j(and)d(width) +s(eco)s(de)227 4659 y(=)f(TSTRING,)g(rep)s(eat)g(=)g(60,)j(and)d(width) f(=)h(12.)39 b(\(The)22 b(TDIMn)g(k)m(eyw)m(ord)h(ma)m(y)g(also)g(b)s -(e)f(used)f(to)i(sp)s(ecify)227 2642 y(the)29 b(unit)e(string)h +(e)f(used)f(to)i(sp)s(ecify)227 4772 y(the)29 b(unit)e(string)h (length;)i(The)e(pair)g(of)g(k)m(eyw)m(ords)g(TF)m(ORMn)g(=)g('60A')i -(and)e(TDIMn)f(=)h('\(12,5\)')j(w)m(ould)227 2755 y(ha)m(v)m(e)g(the)f +(and)e(TDIMn)f(=)h('\(12,5\)')j(w)m(ould)227 4885 y(ha)m(v)m(e)g(the)f (same)g(e\013ect)h(as)e(TF)m(ORMn)h(=)f('60A12'\).)43 b(The)29 b(n)m(um)m(b)s(er)f(of)i(substrings)e(in)h(an)m(y)h(binary)f -(table)227 2868 y(c)m(haracter)36 b(string)e(\014eld)f(can)h(b)s(e)g +(table)227 4998 y(c)m(haracter)36 b(string)e(\014eld)f(can)h(b)s(e)g (calculated)i(b)m(y)d(\(rep)s(eat/width\).)53 b(A)34 b(n)m(ull)f(p)s(oin)m(ter)h(ma)m(y)h(b)s(e)e(giv)m(en)i(for)227 -2981 y(an)m(y)c(of)g(the)f(output)g(parameters)h(that)g(are)g(not)f -(needed.)227 3149 y(The)46 b(second)g(routine,)k(\014t)p -1188 3149 28 4 v 33 w(get)p 1341 3149 V 34 w(eqcolt)m(yp)s(e)d(is)f -(similar)h(except)g(that)f(in)g(the)g(case)i(of)e(scaled)h(in)m(teger) -227 3262 y(columns)35 b(it)g(returns)f(the)h('equiv)-5 -b(alen)m(t')37 b(data)f(t)m(yp)s(e)f(that)h(is)f(needed)f(to)i(store)g -(the)f(scaled)h(v)-5 b(alues,)37 b(and)227 3374 y(not)28 -b(necessarily)h(the)f(ph)m(ysical)g(data)g(t)m(yp)s(e)g(of)g(the)g -(unscaled)f(v)-5 b(alues)29 b(as)e(stored)h(in)g(the)f(FITS)g(table.)41 -b(F)-8 b(or)227 3487 y(example)38 b(if)g(a)g('1I')g(column)f(in)g(a)h +5110 y(an)m(y)c(of)g(the)f(output)g(parameters)h(that)g(are)g(not)f +(needed.)227 5262 y(The)46 b(second)g(routine,)k(\014t)p +1188 5262 V 33 w(get)p 1341 5262 V 34 w(eqcolt)m(yp)s(e)d(is)f(similar) +h(except)g(that)f(in)g(the)g(case)i(of)e(scaled)h(in)m(teger)227 +5375 y(columns)35 b(it)g(returns)f(the)h('equiv)-5 b(alen)m(t')37 +b(data)f(t)m(yp)s(e)f(that)h(is)f(needed)f(to)i(store)g(the)f(scaled)h +(v)-5 b(alues,)37 b(and)227 5488 y(not)28 b(necessarily)h(the)f(ph)m +(ysical)g(data)g(t)m(yp)s(e)g(of)g(the)g(unscaled)f(v)-5 +b(alues)29 b(as)e(stored)h(in)g(the)f(FITS)g(table.)41 +b(F)-8 b(or)227 5601 y(example)38 b(if)g(a)g('1I')g(column)f(in)g(a)h (binary)f(table)h(has)g(TSCALn)d(=)j(1)f(and)g(TZER)m(On)f(=)i(32768,)j -(then)227 3600 y(this)29 b(column)f(e\013ectiv)m(ely)k(con)m(tains)d +(then)227 5714 y(this)29 b(column)f(e\013ectiv)m(ely)k(con)m(tains)d (unsigned)f(short)g(in)m(teger)i(v)-5 b(alues,)29 b(and)f(th)m(us)h -(the)f(returned)g(v)-5 b(alue)29 b(of)227 3713 y(t)m(yp)s(eco)s(de)34 -b(will)f(b)s(e)g(TUSHOR)-8 b(T,)32 b(not)h(TSHOR)-8 b(T.)33 -b(Similarly)-8 b(,)34 b(if)f(a)h(column)f(has)f(TTYPEn)g(=)h('1I')h -(and)227 3826 y(TSCALn)29 b(=)h(0.12,)i(then)e(the)h(returned)e(t)m(yp) -s(eco)s(de)i(will)f(b)s(e)g(TFLO)m(A)-8 b(T.)95 4121 -y Fe(int)47 b(fits_get_coltype)d(/)j(ffgtcl)286 4233 -y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e(long)h -(*repeat,)334 4346 y(long)h(*width,)f(int)g(*status\))95 -4572 y(int)h(fits_get_coltypell)c(/)48 b(ffgtclll)286 -4685 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e -(LONGLONG)g(*repeat,)334 4798 y(LONGLONG)h(*width,)f(int)i(*status\))95 -5024 y(int)g(fits_get_eqcoltype)c(/)48 b(ffeqty)286 5137 -y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e(long)h -(*repeat,)334 5250 y(long)h(*width,)f(int)g(*status\))95 -5475 y(int)h(fits_get_eqcoltypell)c(/)k(ffeqtyll)286 -5588 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e -(LONGLONG)g(*repeat,)334 5701 y(LONGLONG)h(*width,)f(int)i(*status\))p -eop end +(the)f(returned)g(v)-5 b(alue)29 b(of)p eop end %%Page: 55 63 -TeXDict begin 55 62 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.55) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.7.)72 -b(ASCI)s(I)29 b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 -b(R)m(OUTINES)1864 b Fj(55)0 555 y Fi(4)81 b Fj(Return)29 -b(the)h(displa)m(y)g(width)f(of)h(a)h(column.)40 b(This)29 -b(is)h(the)g(length)h(of)f(the)g(string)g(that)h(will)f(b)s(e)f -(returned)g(b)m(y)227 668 y(the)34 b(\014ts)p 514 668 -28 4 v 32 w(read)p 718 668 V 33 w(col)g(routine)f(when)f(reading)h(the) -h(column)e(as)i(a)f(formatted)h(string.)49 b(The)32 b(displa)m(y)i -(width)227 781 y(is)29 b(determined)g(b)m(y)g(the)g(TDISPn)f(k)m(eyw)m -(ord,)i(if)f(presen)m(t,)h(otherwise)f(b)m(y)g(the)g(data)h(t)m(yp)s(e) -f(of)h(the)f(column.)95 1125 y Fe(int)47 b(fits_get_col_display_width) -41 b(/)47 b(ffgcdw)286 1238 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j -(int)f(*dispwidth,)e(int)h(*status\))0 1470 y Fi(5)81 -b Fj(Return)27 b(the)i(n)m(um)m(b)s(er)e(of)i(and)e(size)j(of)e(the)h -(dimensions)f(of)g(a)h(table)g(column)g(in)f(a)g(binary)g(table.)41 -b(Normally)227 1583 y(this)28 b(information)h(is)f(giv)m(en)h(b)m(y)f -(the)h(TDIMn)f(k)m(eyw)m(ord,)h(but)e(if)i(this)f(k)m(eyw)m(ord)g(is)g -(not)h(presen)m(t)f(then)g(this)227 1695 y(routine)j(returns)e(naxis)h -(=)g(1)h(and)f(naxes[0])h(equal)g(to)g(the)g(rep)s(eat)f(coun)m(t)h(in) -f(the)h(TF)m(ORM)g(k)m(eyw)m(ord.)95 1927 y Fe(int)47 -b(fits_read_tdim)d(/)k(ffgtdm)286 2040 y(\(fitsfile)e(*fptr,)g(int)h -(colnum,)e(int)i(maxdim,)f(>)i(int)f(*naxis,)334 2153 -y(long)g(*naxes,)f(int)g(*status\))95 2378 y(int)h(fits_read_tdimll)d -(/)j(ffgtdmll)286 2491 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i -(maxdim,)f(>)i(int)f(*naxis,)334 2604 y(LONGLONG)f(*naxes,)f(int)i -(*status\))0 2836 y Fi(6)81 b Fj(Deco)s(de)33 b(the)g(input)f(TDIMn)h -(k)m(eyw)m(ord)g(string)f(\(e.g.)50 b('\(100,200\)'\))37 -b(and)32 b(return)g(the)h(n)m(um)m(b)s(er)e(of)i(and)f(size)227 -2949 y(of)c(the)g(dimensions)f(of)h(a)g(binary)f(table)h(column.)40 -b(If)27 b(the)h(input)f(tdimstr)g(c)m(haracter)i(string)f(is)g(n)m -(ull,)g(then)227 3061 y(this)d(routine)f(returns)f(naxis)h(=)h(1)f(and) -g(naxes[0])i(equal)e(to)i(the)e(rep)s(eat)h(coun)m(t)g(in)f(the)g(TF)m -(ORM)h(k)m(eyw)m(ord.)227 3174 y(This)30 b(routine)g(is)h(called)g(b)m -(y)f(\014ts)p 1350 3174 V 33 w(read)p 1555 3174 V 33 -w(tdim.)95 3406 y Fe(int)47 b(fits_decode_tdim)d(/)j(ffdtdm)286 -3519 y(\(fitsfile)f(*fptr,)g(char)g(*tdimstr,)g(int)h(colnum,)e(int)i -(maxdim,)f(>)i(int)e(*naxis,)334 3632 y(long)h(*naxes,)f(int)g -(*status\))95 3857 y(int)h(fits_decode_tdimll)c(/)48 -b(ffdtdmll)286 3970 y(\(fitsfile)e(*fptr,)g(char)g(*tdimstr,)g(int)h -(colnum,)e(int)i(maxdim,)f(>)i(int)e(*naxis,)334 4083 -y(LONGLONG)g(*naxes,)f(int)i(*status\))0 4315 y Fi(7)81 -b Fj(W)-8 b(rite)23 b(a)g(TDIMn)f(k)m(eyw)m(ord)h(whose)f(v)-5 -b(alue)23 b(has)g(the)f(form)g('\(l,m,n...\)')40 b(where)22 -b(l,)i(m,)g(n...)38 b(are)23 b(the)g(dimensions)227 4427 +TeXDict begin 55 62 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 +b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 +b Fj(55)227 555 y(t)m(yp)s(eco)s(de)34 b(will)f(b)s(e)g(TUSHOR)-8 +b(T,)32 b(not)h(TSHOR)-8 b(T.)33 b(Similarly)-8 b(,)34 +b(if)f(a)h(column)f(has)f(TTYPEn)g(=)h('1I')h(and)227 +668 y(TSCALn)29 b(=)h(0.12,)i(then)e(the)h(returned)e(t)m(yp)s(eco)s +(de)i(will)f(b)s(e)g(TFLO)m(A)-8 b(T.)95 921 y Fe(int)47 +b(fits_get_coltype)d(/)j(ffgtcl)286 1034 y(\(fitsfile)f(*fptr,)g(int)h +(colnum,)e(>)j(int)f(*typecode,)e(long)h(*repeat,)334 +1147 y(long)h(*width,)f(int)g(*status\))95 1373 y(int)h +(fits_get_coltypell)c(/)48 b(ffgtclll)286 1486 y(\(fitsfile)e(*fptr,)g +(int)h(colnum,)e(>)j(int)f(*typecode,)e(LONGLONG)g(*repeat,)334 +1599 y(LONGLONG)h(*width,)f(int)i(*status\))95 1824 y(int)g +(fits_get_eqcoltype)c(/)48 b(ffeqty)286 1937 y(\(fitsfile)e(*fptr,)g +(int)h(colnum,)e(>)j(int)f(*typecode,)e(long)h(*repeat,)334 +2050 y(long)h(*width,)f(int)g(*status\))95 2276 y(int)h +(fits_get_eqcoltypell)c(/)k(ffeqtyll)286 2389 y(\(fitsfile)f(*fptr,)g +(int)h(colnum,)e(>)j(int)f(*typecode,)e(LONGLONG)g(*repeat,)334 +2502 y(LONGLONG)h(*width,)f(int)i(*status\))0 2755 y +Fi(4)81 b Fj(Return)29 b(the)h(displa)m(y)g(width)f(of)h(a)h(column.)40 +b(This)29 b(is)h(the)g(length)h(of)f(the)g(string)g(that)h(will)f(b)s +(e)f(returned)g(b)m(y)227 2868 y(the)34 b(\014ts)p 514 +2868 28 4 v 32 w(read)p 718 2868 V 33 w(col)g(routine)f(when)f(reading) +h(the)h(column)e(as)i(a)f(formatted)h(string.)49 b(The)32 +b(displa)m(y)i(width)227 2981 y(is)29 b(determined)g(b)m(y)g(the)g +(TDISPn)f(k)m(eyw)m(ord,)i(if)f(presen)m(t,)h(otherwise)f(b)m(y)g(the)g +(data)h(t)m(yp)s(e)f(of)h(the)f(column.)95 3347 y Fe(int)47 +b(fits_get_col_display_width)41 b(/)47 b(ffgcdw)286 3460 +y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*dispwidth,)e(int)h +(*status\))0 3713 y Fi(5)81 b Fj(Return)27 b(the)i(n)m(um)m(b)s(er)e +(of)i(and)e(size)j(of)e(the)h(dimensions)f(of)g(a)h(table)g(column)g +(in)f(a)g(binary)g(table.)41 b(Normally)227 3826 y(this)28 +b(information)h(is)f(giv)m(en)h(b)m(y)f(the)h(TDIMn)f(k)m(eyw)m(ord,)h +(but)e(if)i(this)f(k)m(eyw)m(ord)g(is)g(not)h(presen)m(t)f(then)g(this) +227 3939 y(routine)j(returns)e(naxis)h(=)g(1)h(and)f(naxes[0])h(equal)g +(to)g(the)g(rep)s(eat)f(coun)m(t)h(in)f(the)h(TF)m(ORM)g(k)m(eyw)m +(ord.)95 4192 y Fe(int)47 b(fits_read_tdim)d(/)k(ffgtdm)286 +4304 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(int)i(maxdim,)f(>)i(int)f +(*naxis,)334 4417 y(long)g(*naxes,)f(int)g(*status\))95 +4643 y(int)h(fits_read_tdimll)d(/)j(ffgtdmll)286 4756 +y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(maxdim,)f(>)i(int)f +(*naxis,)334 4869 y(LONGLONG)f(*naxes,)f(int)i(*status\))0 +5122 y Fi(6)81 b Fj(Deco)s(de)33 b(the)g(input)f(TDIMn)h(k)m(eyw)m(ord) +g(string)f(\(e.g.)50 b('\(100,200\)'\))37 b(and)32 b(return)g(the)h(n)m +(um)m(b)s(er)e(of)i(and)f(size)227 5235 y(of)c(the)g(dimensions)f(of)h +(a)g(binary)f(table)h(column.)40 b(If)27 b(the)h(input)f(tdimstr)g(c)m +(haracter)i(string)f(is)g(n)m(ull,)g(then)227 5348 y(this)d(routine)f +(returns)f(naxis)h(=)h(1)f(and)g(naxes[0])i(equal)e(to)i(the)e(rep)s +(eat)h(coun)m(t)g(in)f(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)227 +5461 y(This)30 b(routine)g(is)h(called)g(b)m(y)f(\014ts)p +1350 5461 V 33 w(read)p 1555 5461 V 33 w(tdim.)95 5714 +y Fe(int)47 b(fits_decode_tdim)d(/)j(ffdtdm)p eop end +%%Page: 56 64 +TeXDict begin 56 63 bop 0 299 a Fj(56)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(char)g(*tdimstr,)g +(int)h(colnum,)e(int)i(maxdim,)f(>)i(int)e(*naxis,)334 +668 y(long)h(*naxes,)f(int)g(*status\))95 894 y(int)h +(fits_decode_tdimll)c(/)48 b(ffdtdmll)286 1007 y(\(fitsfile)e(*fptr,)g +(char)g(*tdimstr,)g(int)h(colnum,)e(int)i(maxdim,)f(>)i(int)e(*naxis,) +334 1120 y(LONGLONG)g(*naxes,)f(int)i(*status\))0 1401 +y Fi(7)81 b Fj(W)-8 b(rite)23 b(a)g(TDIMn)f(k)m(eyw)m(ord)h(whose)f(v) +-5 b(alue)23 b(has)g(the)f(form)g('\(l,m,n...\)')40 b(where)22 +b(l,)i(m,)g(n...)38 b(are)23 b(the)g(dimensions)227 1514 y(of)31 b(a)g(m)m(ultidimensional)g(arra)m(y)g(column)f(in)g(a)h -(binary)e(table.)95 4659 y Fe(int)47 b(fits_write_tdim)d(/)j(ffptdm)286 -4772 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h -(*naxes,)f(>)h(int)g(*status\))95 4998 y(int)g(fits_write_tdimll)c(/)48 -b(ffptdmll)286 5110 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(int)i +(binary)e(table.)95 1795 y Fe(int)47 b(fits_write_tdim)d(/)j(ffptdm)286 +1908 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h +(*naxes,)f(>)h(int)g(*status\))95 2134 y(int)g(fits_write_tdimll)c(/)48 +b(ffptdmll)286 2247 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(int)i (naxis,)f(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0 -5253 y -SDict begin H.S end - 0 5253 a 0 5253 a -SDict begin 13.6 H.A end - 0 5253 a 0 5253 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.7.3) cvn /DEST pdfmark -end - 0 5253 a 144 -x Fd(5.7.3)112 b(Routines)38 b(to)f(Edit)g(Ro)m(ws)g(or)g(Columns)0 -5601 y Fi(1)81 b Fj(Insert)32 b(or)h(delete)i(ro)m(ws)e(in)g(an)g(ASCI) -s(I)f(or)h(binary)f(table.)50 b(When)33 b(inserting)h(ro)m(ws)f(all)h -(the)f(ro)m(ws)g(follo)m(wing)227 5714 y(ro)m(w)24 b(FR)m(O)m(W)i(are)e -(shifted)f(do)m(wn)h(b)m(y)g(NR)m(O)m(WS)g(ro)m(ws;)j(if)c(FR)m(O)m(W)j -(=)d(0)i(then)e(the)h(blank)g(ro)m(ws)g(are)g(inserted)p -eop end -%%Page: 56 64 -TeXDict begin 56 63 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.56) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(56)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(at)h(the)e(b)s(eginning)g(of)h -(the)f(table.)42 b(Note)31 b(that)f(it)g(is)f(*not*)i(necessary)f(to)g -(insert)f(ro)m(ws)h(in)f(a)h(table)g(b)s(efore)227 668 -y(writing)g(data)g(to)g(those)h(ro)m(ws)e(\(indeed,)h(it)g(w)m(ould)f -(b)s(e)g(ine\016cien)m(t)i(to)f(do)g(so\).)41 b(Instead)29 -b(one)h(ma)m(y)g(simply)227 781 y(write)h(data)g(to)g(an)m(y)g(ro)m(w)f -(of)h(the)f(table,)i(whether)e(that)h(ro)m(w)f(of)h(data)g(already)g -(exists)g(or)f(not.)227 933 y(The)40 b(\014rst)g(delete)i(routine)e -(deletes)i(NR)m(O)m(WS)f(consecutiv)m(e)h(ro)m(ws)f(starting)g(with)f -(ro)m(w)g(FIRSTR)m(O)m(W.)227 1046 y(The)d(second)g(delete)h(routine)f -(tak)m(es)h(an)f(input)f(string)h(that)h(lists)f(the)g(ro)m(ws)g(or)g -(ro)m(w)g(ranges)g(\(e.g.,)k('5-)227 1159 y(10,12,20-30'\),)32 -b(whereas)26 b(the)g(third)g(delete)h(routine)f(tak)m(es)h(an)f(input)f -(in)m(teger)j(arra)m(y)e(that)h(sp)s(eci\014es)f(eac)m(h)227 -1272 y(individual)35 b(ro)m(w)h(to)g(b)s(e)f(deleted.)58 -b(In)35 b(b)s(oth)f(latter)j(cases,)i(the)c(input)g(list)h(of)g(ro)m -(ws)g(to)g(delete)h(m)m(ust)f(b)s(e)227 1385 y(sorted)i(in)g(ascending) -g(order.)62 b(These)38 b(routines)f(up)s(date)g(the)h(NAXIS2)g(k)m(eyw) -m(ord)h(to)f(re\015ect)g(the)g(new)227 1498 y(n)m(um)m(b)s(er)29 -b(of)i(ro)m(ws)f(in)g(the)h(table.)95 1761 y Fe(int)47 -b(fits_insert_rows)d(/)j(ffirow)286 1874 y(\(fitsfile)f(*fptr,)g +2563 y Fd(5.7.3)112 b(Routines)38 b(to)f(Edit)g(Ro)m(ws)g(or)g(Columns) +0 2788 y Fi(1)81 b Fj(Insert)32 b(or)h(delete)i(ro)m(ws)e(in)g(an)g +(ASCI)s(I)f(or)h(binary)f(table.)50 b(When)33 b(inserting)h(ro)m(ws)f +(all)h(the)f(ro)m(ws)g(follo)m(wing)227 2901 y(ro)m(w)24 +b(FR)m(O)m(W)i(are)e(shifted)f(do)m(wn)h(b)m(y)g(NR)m(O)m(WS)g(ro)m +(ws;)j(if)c(FR)m(O)m(W)j(=)d(0)i(then)e(the)h(blank)g(ro)m(ws)g(are)g +(inserted)227 3013 y(at)31 b(the)e(b)s(eginning)g(of)h(the)f(table.)42 +b(Note)31 b(that)f(it)g(is)f(*not*)i(necessary)f(to)g(insert)f(ro)m(ws) +h(in)f(a)h(table)g(b)s(efore)227 3126 y(writing)g(data)g(to)g(those)h +(ro)m(ws)e(\(indeed,)h(it)g(w)m(ould)f(b)s(e)g(ine\016cien)m(t)i(to)f +(do)g(so\).)41 b(Instead)29 b(one)h(ma)m(y)g(simply)227 +3239 y(write)h(data)g(to)g(an)m(y)g(ro)m(w)f(of)h(the)f(table,)i +(whether)e(that)h(ro)m(w)f(of)h(data)g(already)g(exists)g(or)f(not.)227 +3400 y(The)40 b(\014rst)g(delete)i(routine)e(deletes)i(NR)m(O)m(WS)f +(consecutiv)m(e)h(ro)m(ws)f(starting)g(with)f(ro)m(w)g(FIRSTR)m(O)m(W.) +227 3513 y(The)d(second)g(delete)h(routine)f(tak)m(es)h(an)f(input)f +(string)h(that)h(lists)f(the)g(ro)m(ws)g(or)g(ro)m(w)g(ranges)g +(\(e.g.,)k('5-)227 3626 y(10,12,20-30'\),)32 b(whereas)26 +b(the)g(third)g(delete)h(routine)f(tak)m(es)h(an)f(input)f(in)m(teger)j +(arra)m(y)e(that)h(sp)s(eci\014es)f(eac)m(h)227 3739 +y(individual)35 b(ro)m(w)h(to)g(b)s(e)f(deleted.)58 b(In)35 +b(b)s(oth)f(latter)j(cases,)i(the)c(input)g(list)h(of)g(ro)m(ws)g(to)g +(delete)h(m)m(ust)f(b)s(e)227 3852 y(sorted)i(in)g(ascending)g(order.) +62 b(These)38 b(routines)f(up)s(date)g(the)h(NAXIS2)g(k)m(eyw)m(ord)h +(to)f(re\015ect)g(the)g(new)227 3965 y(n)m(um)m(b)s(er)29 +b(of)i(ro)m(ws)f(in)g(the)h(table.)95 4246 y Fe(int)47 +b(fits_insert_rows)d(/)j(ffirow)286 4359 y(\(fitsfile)f(*fptr,)g (LONGLONG)f(firstrow,)h(LONGLONG)f(nrows,)h(>)i(int)f(*status\))95 -2100 y(int)g(fits_delete_rows)d(/)j(ffdrow)286 2213 y(\(fitsfile)f +4585 y(int)g(fits_delete_rows)d(/)j(ffdrow)286 4698 y(\(fitsfile)f (*fptr,)g(LONGLONG)f(firstrow,)h(LONGLONG)f(nrows,)h(>)i(int)f -(*status\))95 2439 y(int)g(fits_delete_rowrange)c(/)k(ffdrrg)286 -2552 y(\(fitsfile)f(*fptr,)g(char)g(*rangelist,)f(>)j(int)e(*status\)) -95 2778 y(int)h(fits_delete_rowlist)c(/)k(ffdrws)286 -2891 y(\(fitsfile)f(*fptr,)g(long)g(*rowlist,)g(long)g(nrows,)g(>)i -(int)f(*status\))95 3116 y(int)g(fits_delete_rowlistll)42 -b(/)48 b(ffdrwsll)286 3229 y(\(fitsfile)e(*fptr,)g(LONGLONG)f -(*rowlist,)h(LONGLONG)f(nrows,)h(>)i(int)f(*status\))0 -3493 y Fi(2)81 b Fj(Insert)36 b(or)h(delete)i(column\(s\))e(in)g(an)g -(ASCI)s(I)f(or)h(binary)f(table.)62 b(When)37 b(inserting,)i(COLNUM)e -(sp)s(eci\014es)227 3606 y(the)28 b(column)g(n)m(um)m(b)s(er)f(that)h -(the)g(\(\014rst\))g(new)f(column)h(should)f(o)s(ccup)m(y)h(in)g(the)g -(table.)41 b(NCOLS)26 b(sp)s(eci\014es)227 3719 y(ho)m(w)35 -b(man)m(y)g(columns)f(are)h(to)g(b)s(e)f(inserted.)53 -b(An)m(y)35 b(existing)h(columns)e(from)g(this)h(p)s(osition)f(and)g -(higher)227 3832 y(are)c(shifted)f(o)m(v)m(er)h(to)g(allo)m(w)g(ro)s -(om)f(for)g(the)h(new)e(column\(s\).)41 b(The)29 b(index)f(n)m(um)m(b)s -(er)g(on)h(all)h(the)f(follo)m(wing)227 3945 y(k)m(eyw)m(ords)34 -b(will)f(b)s(e)g(incremen)m(ted)h(or)f(decremen)m(ted)h(if)f(necessary) -h(to)g(re\015ect)g(the)f(new)g(p)s(osition)g(of)h(the)227 -4057 y(column\(s\))26 b(in)f(the)h(table:)39 b(TBCOLn,)26 -b(TF)m(ORMn,)h(TTYPEn,)e(TUNITn,)h(TNULLn,)g(TSCALn,)f(TZE-)227 -4170 y(R)m(On,)43 b(TDISPn,)g(TDIMn,)g(TLMINn,)g(TLMAXn,)g(TDMINn,)g -(TDMAXn,)h(TCTYPn,)e(TCRPXn,)227 4283 y(TCR)-10 b(VLn,)29 -b(TCDL)-8 b(Tn,)30 b(TCR)m(OTn,)f(and)h(TCUNIn.)95 4547 -y Fe(int)47 b(fits_insert_col)d(/)j(fficol)286 4660 y(\(fitsfile)f -(*fptr,)g(int)h(colnum,)e(char)i(*ttype,)f(char)h(*tform,)334 -4773 y(>)h(int)e(*status\))95 4999 y(int)h(fits_insert_cols)d(/)j -(fficls)286 5111 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(ncols,)f -(char)h(**ttype,)334 5224 y(char)g(**tform,)e(>)j(int)f(*status\))95 -5450 y(int)g(fits_delete_col)d(/)j(ffdcol\(fitsfile)d(*fptr,)i(int)h -(colnum,)f(>)h(int)g(*status\))0 5714 y Fi(3)81 b Fj(Cop)m(y)29 -b(column\(s\))i(b)s(et)m(w)m(een)f(HDUs.)41 b(If)30 b(create)p -1783 5714 28 4 v 34 w(col)h(=)f(TR)m(UE,)g(then)f(new)h(column\(s\))g -(will)g(b)s(e)g(inserted)f(in)p eop end +(*status\))95 4924 y(int)g(fits_delete_rowrange)c(/)k(ffdrrg)286 +5036 y(\(fitsfile)f(*fptr,)g(char)g(*rangelist,)f(>)j(int)e(*status\)) +95 5262 y(int)h(fits_delete_rowlist)c(/)k(ffdrws)286 +5375 y(\(fitsfile)f(*fptr,)g(long)g(*rowlist,)g(long)g(nrows,)g(>)i +(int)f(*status\))95 5601 y(int)g(fits_delete_rowlistll)42 +b(/)48 b(ffdrwsll)286 5714 y(\(fitsfile)e(*fptr,)g(LONGLONG)f +(*rowlist,)h(LONGLONG)f(nrows,)h(>)i(int)f(*status\))p +eop end %%Page: 57 65 -TeXDict begin 57 64 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.57) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.7.)72 -b(ASCI)s(I)29 b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 -b(R)m(OUTINES)1864 b Fj(57)227 555 y(the)35 b(output)g(table,)i -(starting)f(at)g(p)s(osition)f(`outcolumn',)i(otherwise)f(the)f -(existing)h(output)f(column\(s\))227 668 y(will)c(b)s(e)f(o)m(v)m -(erwritten)i(\(in)e(whic)m(h)g(case)h(they)g(m)m(ust)f(ha)m(v)m(e)i(a)f -(compatible)g(data)g(t)m(yp)s(e\).)227 823 y(The)43 b(\014rst)f(form)g -(copies)i(a)f(single)h(column)e(incoln)m(um)h(to)h(outcoln)m(um.)79 -b(Cop)m(ying)43 b(within)f(the)i(same)227 936 y(HDU)29 -b(is)f(p)s(ermitted.)39 b(The)27 b(second)h(form)f(copies)i(ncols)f -(columns)f(from)h(the)g(input,)f(starting)i(at)f(column)227 -1049 y(incoln)m(um)34 b(to)h(the)f(output,)h(starting)g(at)g(outcoln)m -(um.)52 b(F)-8 b(or)35 b(the)g(second)f(form,)g(the)h(input)e(and)g -(output)227 1162 y(m)m(ust)e(b)s(e)e(di\013eren)m(t)i(HDUs.)227 -1316 y(If)21 b(outcoln)m(um)h(is)f(greater)i(than)d(the)i(n)m(um)m(b)s -(er)e(of)h(column)g(in)g(the)h(output)e(table,)25 b(then)20 -b(the)i(new)f(column\(s\))227 1429 y(will)32 b(b)s(e)f(app)s(ended)f +TeXDict begin 57 64 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 +b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 +b Fj(57)0 555 y Fi(2)81 b Fj(Insert)36 b(or)h(delete)i(column\(s\))e +(in)g(an)g(ASCI)s(I)f(or)h(binary)f(table.)62 b(When)37 +b(inserting,)i(COLNUM)e(sp)s(eci\014es)227 668 y(the)28 +b(column)g(n)m(um)m(b)s(er)f(that)h(the)g(\(\014rst\))g(new)f(column)h +(should)f(o)s(ccup)m(y)h(in)g(the)g(table.)41 b(NCOLS)26 +b(sp)s(eci\014es)227 781 y(ho)m(w)35 b(man)m(y)g(columns)f(are)h(to)g +(b)s(e)f(inserted.)53 b(An)m(y)35 b(existing)h(columns)e(from)g(this)h +(p)s(osition)f(and)g(higher)227 894 y(are)c(shifted)f(o)m(v)m(er)h(to)g +(allo)m(w)g(ro)s(om)f(for)g(the)h(new)e(column\(s\).)41 +b(The)29 b(index)f(n)m(um)m(b)s(er)g(on)h(all)h(the)f(follo)m(wing)227 +1007 y(k)m(eyw)m(ords)34 b(will)f(b)s(e)g(incremen)m(ted)h(or)f +(decremen)m(ted)h(if)f(necessary)h(to)g(re\015ect)g(the)f(new)g(p)s +(osition)g(of)h(the)227 1120 y(column\(s\))26 b(in)f(the)h(table:)39 +b(TBCOLn,)26 b(TF)m(ORMn,)h(TTYPEn,)e(TUNITn,)h(TNULLn,)g(TSCALn,)f +(TZE-)227 1233 y(R)m(On,)43 b(TDISPn,)g(TDIMn,)g(TLMINn,)g(TLMAXn,)g +(TDMINn,)g(TDMAXn,)h(TCTYPn,)e(TCRPXn,)227 1346 y(TCR)-10 +b(VLn,)29 b(TCDL)-8 b(Tn,)30 b(TCR)m(OTn,)f(and)h(TCUNIn.)95 +1574 y Fe(int)47 b(fits_insert_col)d(/)j(fficol)286 1687 +y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(char)i(*ttype,)f(char)h +(*tform,)334 1800 y(>)h(int)e(*status\))95 2026 y(int)h +(fits_insert_cols)d(/)j(fficls)286 2139 y(\(fitsfile)f(*fptr,)g(int)h +(colnum,)e(int)i(ncols,)f(char)h(**ttype,)334 2252 y(char)g(**tform,)e +(>)j(int)f(*status\))95 2477 y(int)g(fits_delete_col)d(/)j +(ffdcol\(fitsfile)d(*fptr,)i(int)h(colnum,)f(>)h(int)g(*status\))0 +2706 y Fi(3)81 b Fj(Cop)m(y)29 b(column\(s\))i(b)s(et)m(w)m(een)f +(HDUs.)41 b(If)30 b(create)p 1783 2706 28 4 v 34 w(col)h(=)f(TR)m(UE,)g +(then)f(new)h(column\(s\))g(will)g(b)s(e)g(inserted)f(in)227 +2819 y(the)35 b(output)g(table,)i(starting)f(at)g(p)s(osition)f +(`outcolumn',)i(otherwise)f(the)f(existing)h(output)f(column\(s\))227 +2932 y(will)c(b)s(e)f(o)m(v)m(erwritten)i(\(in)e(whic)m(h)g(case)h +(they)g(m)m(ust)f(ha)m(v)m(e)i(a)f(compatible)g(data)g(t)m(yp)s(e\).) +227 3077 y(The)43 b(\014rst)f(form)g(copies)i(a)f(single)h(column)e +(incoln)m(um)h(to)h(outcoln)m(um.)79 b(Cop)m(ying)43 +b(within)f(the)i(same)227 3190 y(HDU)29 b(is)f(p)s(ermitted.)39 +b(The)27 b(second)h(form)f(copies)i(ncols)f(columns)f(from)h(the)g +(input,)f(starting)i(at)f(column)227 3303 y(incoln)m(um)34 +b(to)h(the)f(output,)h(starting)g(at)g(outcoln)m(um.)52 +b(F)-8 b(or)35 b(the)g(second)f(form,)g(the)h(input)e(and)g(output)227 +3415 y(m)m(ust)e(b)s(e)e(di\013eren)m(t)i(HDUs.)227 3561 +y(If)21 b(outcoln)m(um)h(is)f(greater)i(than)d(the)i(n)m(um)m(b)s(er)e +(of)h(column)g(in)g(the)h(output)e(table,)25 b(then)20 +b(the)i(new)f(column\(s\))227 3673 y(will)32 b(b)s(e)f(app)s(ended)f (to)j(the)f(end)f(of)g(the)h(table.)46 b(Note)33 b(that)f(the)g (\014rst)f(column)g(in)h(a)g(table)g(is)g(at)h(coln)m(um)227 -1542 y(=)h(1.)51 b(The)33 b(standard)g(indexed)g(k)m(eyw)m(ords)h(that) +3786 y(=)h(1.)51 b(The)33 b(standard)g(indexed)g(k)m(eyw)m(ords)h(that) g(related)h(to)f(the)g(columns)g(\(e.g.,)i(TDISPn,)e(TUNITn,)227 -1655 y(TCRPXn,)c(TCDL)-8 b(Tn,)29 b(etc.\))43 b(will)30 -b(also)i(b)s(e)d(copied.)95 1924 y Fe(int)47 b(fits_copy_col)e(/)i -(ffcpcl)286 2037 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i -(incolnum,)e(int)i(outcolnum,)334 2150 y(int)g(create_col,)e(>)i(int)g -(*status\);)95 2376 y(int)g(fits_copy_cols)d(/)k(ffccls)286 -2488 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(incolnum,)e -(int)i(outcolnum,)334 2601 y(int)g(ncols,)f(int)h(create_col,)e(>)i -(int)g(*status\);)0 2870 y Fi(4)81 b Fj(Cop)m(y)30 b('nro)m(ws')g +3899 y(TCRPXn,)c(TCDL)-8 b(Tn,)29 b(etc.\))43 b(will)30 +b(also)i(b)s(e)d(copied.)95 4128 y Fe(int)47 b(fits_copy_col)e(/)i +(ffcpcl)286 4241 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i +(incolnum,)e(int)i(outcolnum,)334 4354 y(int)g(create_col,)e(>)i(int)g +(*status\);)95 4579 y(int)g(fits_copy_cols)d(/)k(ffccls)286 +4692 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(incolnum,)e +(int)i(outcolnum,)334 4805 y(int)g(ncols,)f(int)h(create_col,)e(>)i +(int)g(*status\);)0 5034 y Fi(4)81 b Fj(Cop)m(y)30 b('nro)m(ws')g (consecutiv)m(e)j(ro)m(ws)d(from)g(one)h(table)g(to)g(another,)g(b)s (eginning)f(with)g(ro)m(w)g('\014rstro)m(w'.)41 b(These)227 -2983 y(ro)m(ws)31 b(will)h(b)s(e)e(app)s(ended)g(to)i(an)m(y)f +5147 y(ro)m(ws)31 b(will)h(b)s(e)e(app)s(ended)g(to)i(an)m(y)f (existing)h(ro)m(ws)g(in)e(the)i(output)e(table.)44 b(Note)33 -b(that)f(the)f(\014rst)f(ro)m(w)i(in)f(a)227 3096 y(table)h(is)e(at)h -(ro)m(w)g(=)f(1.)95 3365 y Fe(int)47 b(fits_copy_rows)d(/)k(ffcprw)286 -3478 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(LONGLONG)h -(firstrow,)334 3591 y(LONGLONG)g(nrows,)g(>)h(int)g(*status\);)0 -3859 y Fi(5)81 b Fj(Mo)s(dify)37 b(the)g(v)m(ector)i(length)f(of)f(a)h -(binary)e(table)i(column)f(\(e.g.,)k(c)m(hange)e(a)e(column)g(from)g -(TF)m(ORMn)g(=)227 3972 y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i -(length)e(ma)m(y)h(b)s(e)f(increased)h(or)f(decreased)h(from)f(the)g -(curren)m(t)h(v)-5 b(alue.)95 4241 y Fe(int)47 b -(fits_modify_vector_len)42 b(/)48 b(ffmvec)286 4354 y(\(fitsfile)e -(*fptr,)g(int)h(colnum,)e(LONGLONG)h(newveclen,)f(>)i(int)g(*status\))0 -4512 y -SDict begin H.S end - 0 4512 a 0 4512 a -SDict begin 13.6 H.A end - 0 4512 a 0 4512 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.7.4) cvn /DEST pdfmark -end - 0 4512 a 143 -x Fd(5.7.4)112 b(Read)38 b(and)h(W)-9 b(rite)36 b(Column)j(Data)e -(Routines)0 4876 y Fj(The)e(follo)m(wing)h(routines)g(write)f(or)g -(read)g(data)h(v)-5 b(alues)36 b(in)f(the)g(curren)m(t)g(ASCI)s(I)f(or) -h(binary)g(table)h(extension.)0 4989 y(If)d(a)g(write)g(op)s(eration)h -(extends)f(b)s(ey)m(ond)f(the)h(curren)m(t)g(size)h(of)f(the)g(table,)i -(then)e(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(in)g(the)0 -5102 y(table)i(will)g(automatically)i(b)s(e)c(increased)i(and)e(the)i -(NAXIS2)f(k)m(eyw)m(ord)h(v)-5 b(alue)35 b(will)f(b)s(e)g(up)s(dated.) -51 b(A)m(ttempts)0 5215 y(to)31 b(read)f(b)s(ey)m(ond)g(the)h(end)e(of) -i(the)f(table)i(will)e(result)h(in)f(an)g(error.)0 5375 -y(Automatic)37 b(data)e(t)m(yp)s(e)g(con)m(v)m(ersion)i(is)e(p)s -(erformed)e(for)i(n)m(umerical)g(data)h(t)m(yp)s(es)f(\(only\))h(if)f -(the)g(data)h(t)m(yp)s(e)f(of)0 5488 y(the)43 b(column)f(\(de\014ned)f -(b)m(y)h(the)h(TF)m(ORMn)f(k)m(eyw)m(ord\))h(di\013ers)f(from)g(the)g -(data)h(t)m(yp)s(e)g(of)f(the)h(arra)m(y)g(in)f(the)0 -5601 y(calling)k(routine.)84 b(ASCI)s(I)43 b(and)h(binary)g(tables)h -(supp)s(ort)e(the)i(follo)m(wing)h(data)f(t)m(yp)s(e)g(v)-5 -b(alues:)70 b(TSTRING,)0 5714 y(TBYTE,)35 b(TSBYTE,)f(TSHOR)-8 -b(T,)33 b(TUSHOR)-8 b(T,)34 b(TINT,)h(TUINT,)f(TLONG,)g(TLONGLONG,)h -(TULONG,)p eop end +b(that)f(the)f(\014rst)f(ro)m(w)i(in)f(a)227 5260 y(table)h(is)e(at)h +(ro)m(w)g(=)f(1.)95 5488 y Fe(int)47 b(fits_copy_rows)d(/)k(ffcprw)286 +5601 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(LONGLONG)h +(firstrow,)334 5714 y(LONGLONG)g(nrows,)g(>)h(int)g(*status\);)p +eop end %%Page: 58 66 -TeXDict begin 58 65 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.58) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(58)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fj(TULONGLONG,)42 b(TFLO)m(A)-8 -b(T,)43 b(or)f(TDOUBLE.)h(Binary)f(tables)h(also)g(supp)s(ort)d -(TLOGICAL)i(\(in)m(ternally)0 668 y(mapp)s(ed)29 b(to)i(the)g(`c)m -(har')g(data)g(t)m(yp)s(e\),)g(TCOMPLEX,)f(and)g(TDBLCOMPLEX.)0 -828 y(Note)c(that)g(it)g(is)f(*not*)h(necessary)f(to)h(insert)f(ro)m -(ws)g(in)g(a)g(table)h(b)s(efore)f(writing)g(data)h(to)g(those)f(ro)m -(ws)g(\(indeed,)h(it)0 941 y(w)m(ould)h(b)s(e)g(ine\016cien)m(t)i(to)f -(do)f(so\).)41 b(Instead,)28 b(one)g(ma)m(y)g(simply)f(write)g(data)h -(to)h(an)m(y)e(ro)m(w)h(of)g(the)f(table,)j(whether)0 -1054 y(that)h(ro)m(w)f(of)h(data)g(already)g(exists)g(or)f(not.)0 -1214 y(Individual)g(bits)i(in)f(a)h(binary)e(table)i('X')g(or)g('B')g -(column)f(ma)m(y)h(b)s(e)f(read/written)h(to/from)g(a)g(*c)m(har)g -(arra)m(y)g(b)m(y)0 1327 y(sp)s(ecifying)k(the)f(TBIT)h(datat)m(yp)s -(e.)57 b(The)35 b(*c)m(har)i(arra)m(y)f(will)g(b)s(e)f(in)m(terpreted)h -(as)g(an)g(arra)m(y)g(of)g(logical)i(TR)m(UE)0 1440 y(\(1\))d(or)g(F) --10 b(ALSE)34 b(\(0\))h(v)-5 b(alues)35 b(that)g(corresp)s(ond)e(to)i -(the)g(v)-5 b(alue)35 b(of)f(eac)m(h)i(bit)e(in)g(the)h(FITS)e('X')i -(or)g('B')g(column.)0 1553 y(Alternativ)m(ely)-8 b(,)30 -b(the)c(v)-5 b(alues)27 b(in)e(a)i(binary)e(table)i('X')g(column)f(ma)m -(y)h(b)s(e)e(read/written)i(8)f(bits)g(at)h(a)f(time)h(to/from)0 -1666 y(an)j(arra)m(y)h(of)g(8-bit)g(in)m(tegers)g(b)m(y)g(sp)s -(ecifying)f(the)h(TBYTE)f(datat)m(yp)s(e.)0 1826 y(Note)25 +TeXDict begin 58 65 bop 0 299 a Fj(58)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fi(5)81 b Fj(Mo)s(dify)37 b(the)g(v)m(ector)i +(length)f(of)f(a)h(binary)e(table)i(column)f(\(e.g.,)k(c)m(hange)e(a)e +(column)g(from)g(TF)m(ORMn)g(=)227 668 y('1E')31 b(to)h('20E'\).)g(The) +e(v)m(ector)i(length)e(ma)m(y)h(b)s(e)f(increased)h(or)f(decreased)h +(from)f(the)g(curren)m(t)h(v)-5 b(alue.)95 972 y Fe(int)47 +b(fits_modify_vector_len)42 b(/)48 b(ffmvec)286 1085 +y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(newveclen,)f(>)i +(int)g(*status\))0 1428 y Fd(5.7.4)112 b(Read)38 b(and)h(W)-9 +b(rite)36 b(Column)j(Data)e(Routines)0 1657 y Fj(The)e(follo)m(wing)h +(routines)g(write)f(or)g(read)g(data)h(v)-5 b(alues)36 +b(in)f(the)g(curren)m(t)g(ASCI)s(I)f(or)h(binary)g(table)h(extension.)0 +1770 y(If)d(a)g(write)g(op)s(eration)h(extends)f(b)s(ey)m(ond)f(the)h +(curren)m(t)g(size)h(of)f(the)g(table,)i(then)e(the)g(n)m(um)m(b)s(er)f +(of)h(ro)m(ws)g(in)g(the)0 1883 y(table)i(will)g(automatically)i(b)s(e) +c(increased)i(and)e(the)i(NAXIS2)f(k)m(eyw)m(ord)h(v)-5 +b(alue)35 b(will)f(b)s(e)g(up)s(dated.)51 b(A)m(ttempts)0 +1996 y(to)31 b(read)f(b)s(ey)m(ond)g(the)h(end)e(of)i(the)f(table)i +(will)e(result)h(in)f(an)g(error.)0 2156 y(Automatic)37 +b(data)e(t)m(yp)s(e)g(con)m(v)m(ersion)i(is)e(p)s(erformed)e(for)i(n)m +(umerical)g(data)h(t)m(yp)s(es)f(\(only\))h(if)f(the)g(data)h(t)m(yp)s +(e)f(of)0 2269 y(the)43 b(column)f(\(de\014ned)f(b)m(y)h(the)h(TF)m +(ORMn)f(k)m(eyw)m(ord\))h(di\013ers)f(from)g(the)g(data)h(t)m(yp)s(e)g +(of)f(the)h(arra)m(y)g(in)f(the)0 2382 y(calling)k(routine.)84 +b(ASCI)s(I)43 b(and)h(binary)g(tables)h(supp)s(ort)e(the)i(follo)m +(wing)h(data)f(t)m(yp)s(e)g(v)-5 b(alues:)70 b(TSTRING,)0 +2495 y(TBYTE,)35 b(TSBYTE,)f(TSHOR)-8 b(T,)33 b(TUSHOR)-8 +b(T,)34 b(TINT,)h(TUINT,)f(TLONG,)g(TLONGLONG,)h(TULONG,)0 +2608 y(TULONGLONG,)42 b(TFLO)m(A)-8 b(T,)43 b(or)f(TDOUBLE.)h(Binary)f +(tables)h(also)g(supp)s(ort)d(TLOGICAL)i(\(in)m(ternally)0 +2721 y(mapp)s(ed)29 b(to)i(the)g(`c)m(har')g(data)g(t)m(yp)s(e\),)g +(TCOMPLEX,)f(and)g(TDBLCOMPLEX.)0 2881 y(Note)c(that)g(it)g(is)f(*not*) +h(necessary)f(to)h(insert)f(ro)m(ws)g(in)g(a)g(table)h(b)s(efore)f +(writing)g(data)h(to)g(those)f(ro)m(ws)g(\(indeed,)h(it)0 +2994 y(w)m(ould)h(b)s(e)g(ine\016cien)m(t)i(to)f(do)f(so\).)41 +b(Instead,)28 b(one)g(ma)m(y)g(simply)f(write)g(data)h(to)h(an)m(y)e +(ro)m(w)h(of)g(the)f(table,)j(whether)0 3107 y(that)h(ro)m(w)f(of)h +(data)g(already)g(exists)g(or)f(not.)0 3267 y(Individual)g(bits)i(in)f +(a)h(binary)e(table)i('X')g(or)g('B')g(column)f(ma)m(y)h(b)s(e)f +(read/written)h(to/from)g(a)g(*c)m(har)g(arra)m(y)g(b)m(y)0 +3380 y(sp)s(ecifying)k(the)f(TBIT)h(datat)m(yp)s(e.)57 +b(The)35 b(*c)m(har)i(arra)m(y)f(will)g(b)s(e)f(in)m(terpreted)h(as)g +(an)g(arra)m(y)g(of)g(logical)i(TR)m(UE)0 3493 y(\(1\))d(or)g(F)-10 +b(ALSE)34 b(\(0\))h(v)-5 b(alues)35 b(that)g(corresp)s(ond)e(to)i(the)g +(v)-5 b(alue)35 b(of)f(eac)m(h)i(bit)e(in)g(the)h(FITS)e('X')i(or)g +('B')g(column.)0 3605 y(Alternativ)m(ely)-8 b(,)30 b(the)c(v)-5 +b(alues)27 b(in)e(a)i(binary)e(table)i('X')g(column)f(ma)m(y)h(b)s(e)e +(read/written)i(8)f(bits)g(at)h(a)f(time)h(to/from)0 +3718 y(an)j(arra)m(y)h(of)g(8-bit)g(in)m(tegers)g(b)m(y)g(sp)s +(ecifying)f(the)h(TBYTE)f(datat)m(yp)s(e.)0 3878 y(Note)25 b(that)g(within)e(the)h(con)m(text)i(of)e(these)g(routines,)i(the)e (TSTRING)f(data)h(t)m(yp)s(e)g(corresp)s(onds)f(to)h(a)h(C)e('c)m -(har**')0 1939 y(data)35 b(t)m(yp)s(e,)h(i.e.,)h(a)e(p)s(oin)m(ter)f +(har**')0 3991 y(data)35 b(t)m(yp)s(e,)h(i.e.,)h(a)e(p)s(oin)m(ter)f (to)i(an)e(arra)m(y)h(of)g(p)s(oin)m(ters)f(to)h(an)g(arra)m(y)g(of)g (c)m(haracters.)54 b(This)34 b(is)g(di\013eren)m(t)h(from)0 -2052 y(the)d(k)m(eyw)m(ord)h(reading)f(and)f(writing)h(routines)g +4104 y(the)d(k)m(eyw)m(ord)h(reading)f(and)f(writing)h(routines)g (where)g(TSTRING)f(corresp)s(onds)g(to)h(a)h(C)e('c)m(har*')j(data)f(t) -m(yp)s(e,)0 2165 y(i.e.,)g(a)e(single)h(p)s(oin)m(ter)f(to)h(an)f(arra) +m(yp)s(e,)0 4217 y(i.e.,)g(a)e(single)h(p)s(oin)m(ter)f(to)h(an)f(arra) m(y)g(of)g(c)m(haracters.)45 b(When)30 b(reading)i(strings)e(from)h(a)g -(table,)i(the)e(c)m(har)h(arra)m(ys)0 2278 y(ob)m(viously)f(m)m(ust)f -(ha)m(v)m(e)i(b)s(een)e(allo)s(cated)i(long)f(enough)f(to)h(hold)f(the) -h(whole)f(FITS)g(table)h(string.)0 2438 y(Numerical)i(data)g(v)-5 +(table,)i(the)e(c)m(har)h(arra)m(ys)0 4330 y(ob)m(viously)h(m)m(ust)f +(ha)m(v)m(e)h(b)s(een)f(allo)s(cated)i(long)f(enough)e(to)i(hold)f(the) +h(whole)f(FITS)f(table)i(string.)46 b(See)33 b(section)0 +4443 y(4.5)e(\(\\Dealing)i(with)d(Character)h(Strings"\))g(for)f(more)g +(information.)0 4603 y(F)-8 b(or)41 b(complex)g(and)f(double)g(complex) +h(data)g(t)m(yp)s(es,)j Fe(nelements)38 b Fj(is)i(the)h(n)m(um)m(b)s +(er)e(of)h(n)m(umerical)h(pairs;)46 b(the)0 4716 y(n)m(um)m(b)s(er)29 +b(of)i(\015oats)g(or)f(doubles)g(stored)g(b)m(y)g(arra)m(y+)h(m)m(ust)f +(b)s(e)g Fe(2*nelements)p Fj(.)0 4876 y(Numerical)j(data)g(v)-5 b(alues)33 b(are)g(automatically)j(scaled)d(b)m(y)f(the)h(TSCALn)e(and) h(TZER)m(On)f(k)m(eyw)m(ord)i(v)-5 b(alues)33 b(\(if)0 -2551 y(they)e(exist\).)0 2711 y(In)25 b(the)g(case)i(of)e(binary)g -(tables)h(with)f(v)m(ector)i(elemen)m(ts,)h(the)e('felem')g(parameter)g -(de\014nes)f(the)g(starting)h(elemen)m(t)0 2824 y(\(b)s(eginning)h -(with)g(1,)h(not)g(0\))g(within)f(the)g(cell)i(\(a)f(cell)g(is)f -(de\014ned)f(as)i(the)f(in)m(tersection)i(of)f(a)f(ro)m(w)h(and)e(a)i -(column)0 2937 y(and)e(ma)m(y)h(con)m(tain)h(a)g(single)f(v)-5 -b(alue)27 b(or)g(a)g(v)m(ector)h(of)f(v)-5 b(alues\).)40 -b(The)26 b(felem)i(parameter)f(is)g(ignored)f(when)g(dealing)0 -3050 y(with)34 b(ASCI)s(I)e(tables.)52 b(Similarly)-8 -b(,)36 b(in)d(the)i(case)f(of)h(binary)e(tables)h(the)h('nelemen)m(ts') -g(parameter)f(sp)s(eci\014es)g(the)0 3163 y(total)28 -b(n)m(um)m(b)s(er)d(of)h(v)m(ector)i(v)-5 b(alues)27 -b(to)g(b)s(e)e(read)h(or)h(written)f(\(con)m(tin)m(uing)i(on)e -(subsequen)m(t)f(ro)m(ws)i(if)f(required\))g(and)0 3275 -y(not)31 b(the)f(n)m(um)m(b)s(er)f(of)i(table)g(cells.)0 -3524 y Fi(1)81 b Fj(W)-8 b(rite)31 b(elemen)m(ts)h(in)m(to)f(an)g(ASCI) -s(I)e(or)h(binary)f(table)j(column.)0 3772 y(The)38 b(\014rst)f -(routine)h(simply)g(writes)g(the)g(arra)m(y)h(of)f(v)-5 -b(alues)39 b(to)g(the)f(FITS)g(\014le)g(\(doing)g(data)h(t)m(yp)s(e)g -(con)m(v)m(ersion)0 3885 y(if)h(necessary\))h(whereas)f(the)h(second)f -(routine)h(will)f(substitute)h(the)f(appropriate)g(FITS)g(n)m(ull)g(v) --5 b(alue)41 b(for)f(all)0 3998 y(elemen)m(ts)34 b(whic)m(h)f(are)g -(equal)h(to)f(the)g(input)f(v)-5 b(alue)34 b(of)f(n)m(ulv)-5 -b(al)33 b(\(note)h(that)f(this)g(parameter)g(giv)m(es)i(the)e(address)0 -4111 y(of)40 b(n)m(ulv)-5 b(al,)44 b(not)c(the)g(n)m(ull)g(v)-5 -b(alue)41 b(itself)7 b(\).)72 b(F)-8 b(or)40 b(in)m(teger)i(columns)e -(the)g(FITS)g(n)m(ull)g(v)-5 b(alue)40 b(is)h(de\014ned)e(b)m(y)h(the)0 -4224 y(TNULLn)32 b(k)m(eyw)m(ord)i(\(an)g(error)e(is)i(returned)e(if)h -(the)h(k)m(eyw)m(ord)f(do)s(esn't)g(exist\).)51 b(F)-8 -b(or)34 b(\015oating)g(p)s(oin)m(t)f(columns)0 4337 y(the)h(sp)s(ecial) -h(IEEE)f(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)35 -b(will)f(b)s(e)g(written)g(in)m(to)i(the)e(FITS)g(\014le.)52 -b(If)34 b(a)h(n)m(ull)f(p)s(oin)m(ter)0 4449 y(is)f(en)m(tered)g(for)g -(n)m(ulv)-5 b(al,)34 b(then)f(the)g(n)m(ull)g(v)-5 b(alue)33 -b(is)g(ignored)g(and)g(this)g(routine)f(b)s(eha)m(v)m(es)i(the)f(same)g -(as)h(the)f(\014rst)0 4562 y(routine.)41 b(The)29 b(third)g(routine)h -(simply)f(writes)h(unde\014ned)d(pixel)k(v)-5 b(alues)30 -b(to)g(the)g(column.)41 b(The)29 b(fourth)g(routine)0 -4675 y(\014lls)e(ev)m(ery)i(column)e(in)h(the)g(table)g(with)g(n)m(ull) +4989 y(they)e(exist\).)0 5149 y(In)36 b(the)h(case)h(of)f(binary)f +(tables)i(with)f(v)m(ector)h(elemen)m(ts,)i(the)d Fe(firstelem)e +Fj(parameter)i(de\014nes)f(the)h(starting)0 5262 y(elemen)m(t)28 +b(\(b)s(eginning)e(with)g(1,)i(not)e(0\))h(within)f(the)h(cell)g(\(a)h +(cell)f(is)g(de\014ned)e(as)h(the)h(in)m(tersection)h(of)f(a)f(ro)m(w)h +(and)f(a)0 5375 y(column)h(and)g(ma)m(y)h(con)m(tain)g(a)g(single)g(v) +-5 b(alue)28 b(or)f(a)h(v)m(ector)g(of)g(v)-5 b(alues\).)40 +b(The)27 b Fe(firstelem)e Fj(parameter)i(is)h(ignored)0 +5488 y(when)i(dealing)i(with)f(ASCI)s(I)f(tables.)45 +b(Similarly)-8 b(,)32 b(in)f(the)h(case)g(of)g(binary)e(tables)i(the)g +('nelemen)m(ts')g(parameter)0 5601 y(sp)s(eci\014es)e(the)g(total)i(n)m +(um)m(b)s(er)c(of)i(v)m(ector)i(v)-5 b(alues)30 b(to)h(b)s(e)e(read)h +(or)g(written)g(\(con)m(tin)m(uing)i(on)e(subsequen)m(t)f(ro)m(ws)h(if) +0 5714 y(required\))g(and)g(not)g(the)h(n)m(um)m(b)s(er)e(of)h(table)i +(cells.)p eop end +%%Page: 59 67 +TeXDict begin 59 66 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 +b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 +b Fj(59)0 555 y Fi(1)81 b Fj(W)-8 b(rite)31 b(elemen)m(ts)h(in)m(to)f +(an)g(ASCI)s(I)e(or)h(binary)f(table)j(column.)0 788 +y(The)38 b(\014rst)f(routine)h(simply)g(writes)g(the)g(arra)m(y)h(of)f +(v)-5 b(alues)39 b(to)g(the)f(FITS)g(\014le)g(\(doing)g(data)h(t)m(yp)s +(e)g(con)m(v)m(ersion)0 901 y(if)h(necessary\))h(whereas)f(the)h +(second)f(routine)h(will)f(substitute)h(the)f(appropriate)g(FITS)g(n)m +(ull)g(v)-5 b(alue)41 b(for)f(all)0 1013 y(elemen)m(ts)34 +b(whic)m(h)f(are)g(equal)h(to)f(the)g(input)f(v)-5 b(alue)34 +b(of)f(n)m(ulv)-5 b(al)33 b(\(note)h(that)f(this)g(parameter)g(giv)m +(es)i(the)e(address)0 1126 y(of)40 b(n)m(ulv)-5 b(al,)44 +b(not)c(the)g(n)m(ull)g(v)-5 b(alue)41 b(itself)7 b(\).)72 +b(F)-8 b(or)40 b(in)m(teger)i(columns)e(the)g(FITS)g(n)m(ull)g(v)-5 +b(alue)40 b(is)h(de\014ned)e(b)m(y)h(the)0 1239 y(TNULLn)32 +b(k)m(eyw)m(ord)i(\(an)g(error)e(is)i(returned)e(if)h(the)h(k)m(eyw)m +(ord)f(do)s(esn't)g(exist\).)51 b(F)-8 b(or)34 b(\015oating)g(p)s(oin)m +(t)f(columns)0 1352 y(the)h(sp)s(ecial)h(IEEE)f(NaN)h(\(Not-a-Num)m(b)s +(er\))h(v)-5 b(alue)35 b(will)f(b)s(e)g(written)g(in)m(to)i(the)e(FITS) +g(\014le.)52 b(If)34 b(a)h(n)m(ull)f(p)s(oin)m(ter)0 +1465 y(is)f(en)m(tered)g(for)g(n)m(ulv)-5 b(al,)34 b(then)f(the)g(n)m +(ull)g(v)-5 b(alue)33 b(is)g(ignored)g(and)g(this)g(routine)f(b)s(eha)m +(v)m(es)i(the)f(same)g(as)h(the)f(\014rst)0 1578 y(routine.)41 +b(The)29 b(third)g(routine)h(simply)f(writes)h(unde\014ned)d(pixel)k(v) +-5 b(alues)30 b(to)g(the)g(column.)41 b(The)29 b(fourth)g(routine)0 +1691 y(\014lls)e(ev)m(ery)i(column)e(in)h(the)g(table)g(with)g(n)m(ull) f(v)-5 b(alues,)29 b(in)e(the)h(sp)s(eci\014ed)f(ro)m(ws)h(\(ignoring)g -(an)m(y)g(columns)g(that)g(do)0 4788 y(not)j(ha)m(v)m(e)g(a)g -(de\014ned)e(n)m(ull)h(v)-5 b(alue\).)95 5036 y Fe(int)47 -b(fits_write_col)d(/)k(ffpcl)286 5149 y(\(fitsfile)e(*fptr,)g(int)h +(an)m(y)g(columns)g(that)g(do)0 1804 y(not)j(ha)m(v)m(e)g(a)g +(de\014ned)e(n)m(ull)h(v)-5 b(alue\).)95 2036 y Fe(int)47 +b(fits_write_col)d(/)k(ffpcl)286 2149 y(\(fitsfile)e(*fptr,)g(int)h (datatype,)e(int)i(colnum,)f(LONGLONG)f(firstrow,)334 -5262 y(LONGLONG)h(firstelem,)f(LONGLONG)g(nelements,)g(DTYPE)i(*array,) -e(>)j(int)f(*status\))95 5488 y(int)g(fits_write_colnull)c(/)48 -b(ffpcn)286 5601 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i -(colnum,)f(LONGLONG)f(firstrow,)286 5714 y(LONGLONG)h(firstelem,)f -(LONGLONG)g(nelements,)g(DTYPE)i(*array,)f(DTYPE)g(*nulval,)p -eop end -%%Page: 59 67 -TeXDict begin 59 66 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.59) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.7.)72 -b(ASCI)s(I)29 b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 -b(R)m(OUTINES)1864 b Fj(59)286 555 y Fe(>)48 b(int)f(*status\))143 -781 y(int)g(fits_write_col_null)c(/)k(ffpclu)334 894 -y(\(fitsfile)e(*fptr,)h(int)h(colnum,)f(LONGLONG)g(firstrow,)f -(LONGLONG)h(firstelem,)382 1007 y(LONGLONG)f(nelements,)g(>)j(int)f -(*status\))143 1233 y(int)g(fits_write_nullrows)c(/)k(ffprwu)334 -1346 y(\(fitsfile)e(*fptr,)h(LONGLONG)g(firstrow,)f(LONGLONG)h -(nelements,)f(>)i(int)g(*status\))0 1577 y Fi(2)81 b +2262 y(LONGLONG)h(firstelem,)f(LONGLONG)g(nelements,)g(DTYPE)i(*array,) +e(>)j(int)f(*status\))95 2488 y(int)g(fits_write_colnull)c(/)48 +b(ffpcn)286 2601 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i +(colnum,)f(LONGLONG)f(firstrow,)286 2714 y(LONGLONG)h(firstelem,)f +(LONGLONG)g(nelements,)g(DTYPE)i(*array,)f(DTYPE)g(*nulval,)286 +2827 y(>)i(int)f(*status\))143 3052 y(int)g(fits_write_col_null)c(/)k +(ffpclu)334 3165 y(\(fitsfile)e(*fptr,)h(int)h(colnum,)f(LONGLONG)g +(firstrow,)f(LONGLONG)h(firstelem,)382 3278 y(LONGLONG)f(nelements,)g +(>)j(int)f(*status\))143 3504 y(int)g(fits_write_nullrows)c(/)k(ffprwu) +334 3617 y(\(fitsfile)e(*fptr,)h(LONGLONG)g(firstrow,)f(LONGLONG)h +(nelements,)f(>)i(int)g(*status\))0 3850 y Fi(2)81 b Fj(Read)33 b(elemen)m(ts)i(from)e(an)g(ASCI)s(I)f(or)i(binary)e(table)i (column.)50 b(The)33 b(data)h(t)m(yp)s(e)g(parameter)g(sp)s(eci\014es)f -(the)227 1690 y(data)28 b(t)m(yp)s(e)g(of)g(the)f(`n)m(ulv)-5 -b(al')29 b(and)e(`arra)m(y')h(p)s(oin)m(ters;)h(Unde\014ned)c(arra)m(y) -j(elemen)m(ts)h(will)f(b)s(e)f(returned)f(with)227 1802 -y(a)k(v)-5 b(alue)30 b(=)e(*n)m(ullv)-5 b(al,)31 b(\(note)f(that)g -(this)f(parameter)h(giv)m(es)g(the)g(address)e(of)h(the)h(n)m(ull)f(v) --5 b(alue,)30 b(not)g(the)f(n)m(ull)227 1915 y(v)-5 b(alue)31 -b(itself)7 b(\))32 b(unless)e(n)m(ulv)-5 b(al)32 b(=)e(0)h(or)g(*n)m -(ulv)-5 b(al)31 b(=)g(0,)g(in)f(whic)m(h)h(case)h(no)e(c)m(hec)m(king)j -(for)d(unde\014ned)f(pixels)227 2028 y(will)34 b(b)s(e)f(p)s(erformed.) -48 b(The)33 b(second)g(routine)h(is)f(similar)h(except)g(that)g(an)m(y) -g(unde\014ned)d(pixels)j(will)g(ha)m(v)m(e)227 2141 y(the)d(corresp)s -(onding)e(n)m(ullarra)m(y)i(elemen)m(t)h(set)f(equal)g(to)g(TR)m(UE)f -(\(=)h(1\).)227 2287 y(An)m(y)c(column,)g(regardless)f(of)g(it's)h(in)m -(trinsic)g(data)g(t)m(yp)s(e,)g(ma)m(y)g(b)s(e)e(read)i(as)f(a)g -(string.)40 b(It)26 b(should)f(b)s(e)h(noted)227 2400 -y(ho)m(w)m(ev)m(er)32 b(that)f(reading)f(a)h(n)m(umeric)f(column)g(as)h -(a)g(string)f(is)g(10)i(-)e(100)i(times)f(slo)m(w)m(er)g(than)f -(reading)h(the)227 2513 y(same)22 b(column)g(as)f(a)h(n)m(um)m(b)s(er)e -(due)h(to)i(the)e(large)i(o)m(v)m(erhead)g(in)e(constructing)h(the)g -(formatted)g(strings.)37 b(The)227 2625 y(displa)m(y)26 +(the)227 3962 y(data)i(t)m(yp)s(e)g(of)g(the)f(`n)m(ulv)-5 +b(al')35 b(and)f(`arra)m(y')i(p)s(oin)m(ters.)52 b(The)34 +b(caller)i(is)e(required)g(to)h(allo)s(cate)i(the)d(storage)227 +4075 y(of)g Fe(array)d Fj(b)s(efore)i(calling.)51 b(Unde\014ned)32 +b(arra)m(y)i(elemen)m(ts)g(will)g(b)s(e)e(returned)g(with)h(a)h(v)-5 +b(alue)34 b(=)f(*n)m(ullv)-5 b(al,)227 4188 y(\(note)31 +b(that)f(this)g(parameter)g(giv)m(es)h(the)f(address)f(of)h(the)g(n)m +(ull)f(v)-5 b(alue,)31 b(not)f(the)g(n)m(ull)f(v)-5 b(alue)31 +b(itself)7 b(\))31 b(unless)227 4301 y(n)m(ulv)-5 b(al)32 +b(=)f(0)h(or)f(*n)m(ulv)-5 b(al)32 b(=)f(0,)h(in)f(whic)m(h)g(case)i +(no)e(c)m(hec)m(king)i(for)e(unde\014ned)e(pixels)j(will)f(b)s(e)g(p)s +(erformed.)227 4414 y(The)36 b(second)g(routine)g(is)g(similar)g +(except)h(that)g(an)m(y)f(unde\014ned)e(pixels)i(will)h(ha)m(v)m(e)g +(the)f(corresp)s(onding)227 4527 y(n)m(ullarra)m(y)31 +b(elemen)m(t)h(set)f(equal)g(to)g(TR)m(UE)f(\(=)h(1\).)227 +4673 y(Reading)g(data)g(as)g(TSTRING)e(v)-5 b(alues)31 +b(is)f(di\013eren)m(t)h(than)f(for)g(other)h(data)g(t)m(yp)s(es)f(as)h +(describ)s(ed)e(ab)s(o)m(v)m(e.)227 4818 y(An)m(y)e(column,)g +(regardless)f(of)g(it's)h(in)m(trinsic)g(data)g(t)m(yp)s(e,)g(ma)m(y)g +(b)s(e)e(read)i(as)f(a)g(string.)40 b(It)26 b(should)f(b)s(e)h(noted) +227 4931 y(ho)m(w)m(ev)m(er)32 b(that)f(reading)f(a)h(n)m(umeric)f +(column)g(as)h(a)g(string)f(is)g(10)i(-)e(100)i(times)f(slo)m(w)m(er)g +(than)f(reading)h(the)227 5044 y(same)22 b(column)g(as)f(a)h(n)m(um)m +(b)s(er)e(due)h(to)i(the)e(large)i(o)m(v)m(erhead)g(in)e(constructing)h +(the)g(formatted)g(strings.)37 b(The)227 5157 y(displa)m(y)26 b(format)g(of)f(the)h(returned)e(strings)h(will)h(b)s(e)f(determined)g (b)m(y)g(the)h(TDISPn)e(k)m(eyw)m(ord,)j(if)e(it)h(exists,)227 -2738 y(otherwise)32 b(b)m(y)f(the)g(data)h(t)m(yp)s(e)f(of)g(the)g +5270 y(otherwise)32 b(b)m(y)f(the)g(data)h(t)m(yp)s(e)f(of)g(the)g (column.)43 b(The)30 b(length)i(of)f(the)g(returned)f(strings)h(\(not)g -(including)227 2851 y(the)26 b(n)m(ull)f(terminating)i(c)m(haracter\))g +(including)227 5383 y(the)26 b(n)m(ull)f(terminating)i(c)m(haracter\))g (can)f(b)s(e)f(determined)g(with)g(the)h(\014ts)p 2703 -2851 28 4 v 32 w(get)p 2855 2851 V 34 w(col)p 2999 2851 -V 34 w(displa)m(y)p 3311 2851 V 33 w(width)f(routine.)227 -2964 y(The)30 b(follo)m(wing)i(TDISPn)d(displa)m(y)i(formats)f(are)h -(curren)m(tly)f(supp)s(orted:)418 3181 y Fe(Iw.m)142 -b(Integer)418 3293 y(Ow.m)g(Octal)47 b(integer)418 3406 -y(Zw.m)142 b(Hexadecimal)45 b(integer)418 3519 y(Fw.d)142 -b(Fixed)47 b(floating)e(point)418 3632 y(Ew.d)142 b(Exponential)45 -b(floating)h(point)418 3745 y(Dw.d)142 b(Exponential)45 -b(floating)h(point)418 3858 y(Gw.d)142 b(General;)46 +5383 28 4 v 32 w(get)p 2855 5383 V 34 w(col)p 2999 5383 +V 34 w(displa)m(y)p 3311 5383 V 33 w(width)f(routine.)227 +5496 y(The)30 b(follo)m(wing)i(TDISPn)d(displa)m(y)i(formats)f(are)h +(curren)m(tly)f(supp)s(orted:)418 5714 y Fe(Iw.m)142 +b(Integer)p eop end +%%Page: 60 68 +TeXDict begin 60 67 bop 0 299 a Fj(60)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)418 555 y Fe(Ow.m)142 b(Octal)47 b(integer)418 +668 y(Zw.m)142 b(Hexadecimal)45 b(integer)418 781 y(Fw.d)142 +b(Fixed)47 b(floating)e(point)418 894 y(Ew.d)142 b(Exponential)45 +b(floating)h(point)418 1007 y(Dw.d)142 b(Exponential)45 +b(floating)h(point)418 1120 y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)e(not)i(lost,)f(else)h(Ew.d)227 -4074 y Fj(where)24 b(w)h(is)f(the)h(width)f(in)g(c)m(haracters)i(of)f +1354 y Fj(where)24 b(w)h(is)f(the)h(width)f(in)g(c)m(haracters)i(of)f (the)g(displa)m(y)m(ed)g(v)-5 b(alues,)27 b(m)d(is)h(the)f(minim)m(um)g -(n)m(um)m(b)s(er)g(of)g(digits)227 4187 y(displa)m(y)m(ed,)29 +(n)m(um)m(b)s(er)g(of)g(digits)227 1467 y(displa)m(y)m(ed,)29 b(and)e(d)g(is)h(the)f(n)m(um)m(b)s(er)g(of)g(digits)i(to)f(the)g(righ) m(t)g(of)f(the)h(decimal.)41 b(The)27 b(.m)g(\014eld)g(is)h(optional.) -95 4418 y Fe(int)47 b(fits_read_col)e(/)i(ffgcv)286 4531 +95 1714 y Fe(int)47 b(fits_read_col)e(/)i(ffgcv)286 1827 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f(LONGLONG)f -(firstrow,)g(LONGLONG)h(firstelem,)334 4644 y(LONGLONG)g(nelements,)f +(firstrow,)g(LONGLONG)h(firstelem,)334 1940 y(LONGLONG)g(nelements,)f (DTYPE)h(*nulval,)g(DTYPE)g(*array,)g(int)h(*anynul,)e(int)i(*status\)) -95 4870 y(int)g(fits_read_colnull)c(/)48 b(ffgcf)286 -4983 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f -(LONGLONG)f(firstrow,)g(LONGLONG)h(firstelem,)286 5096 +95 2166 y(int)g(fits_read_colnull)c(/)48 b(ffgcf)286 +2279 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f +(LONGLONG)f(firstrow,)g(LONGLONG)h(firstelem,)286 2392 y(LONGLONG)g(nelements,)f(DTYPE)h(*array,)g(char)h(*nullarray,)d(int)j -(*anynul,)f(int)h(*status\))0 5239 y -SDict begin H.S end - 0 5239 a 0 5239 -a -SDict begin 13.6 H.A end - 0 5239 a 0 5239 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.7.5) cvn /DEST pdfmark -end - 0 5239 a 143 x Fd(5.7.5)112 b(Ro)m(w)37 -b(Selection)h(and)h(Calculator)f(Routines)0 5601 y Fj(These)21 +(*anynul,)f(int)h(*status\))0 2680 y Fd(5.7.5)112 b(Ro)m(w)37 +b(Selection)h(and)h(Calculator)f(Routines)0 2899 y Fj(These)21 b(routines)f(all)i(parse)f(and)f(ev)-5 b(aluate)23 b(an)d(input)g (string)h(con)m(taining)i(a)e(user)f(de\014ned)g(arithmetic)i -(expression.)0 5714 y(The)29 b(\014rst)f(3)i(routines)f(select)i(ro)m +(expression.)0 3012 y(The)29 b(\014rst)f(3)i(routines)f(select)i(ro)m (ws)e(in)g(a)h(FITS)e(table,)j(based)e(on)g(whether)g(the)g(expression) -g(ev)-5 b(aluates)31 b(to)f(true)p eop end -%%Page: 60 68 -TeXDict begin 60 67 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.60) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(60)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fj(\(not)e(equal)f(to)h(zero\))g(or)f -(false)h(\(zero\).)41 b(The)27 b(other)g(routines)g(ev)-5 +g(ev)-5 b(aluates)31 b(to)f(true)0 3125 y(\(not)e(equal)f(to)h(zero\))g +(or)f(false)h(\(zero\).)41 b(The)27 b(other)g(routines)g(ev)-5 b(aluate)29 b(the)e(expression)g(and)f(calculate)k(a)d(v)-5 -b(alue)0 668 y(for)26 b(eac)m(h)i(ro)m(w)f(of)g(the)g(table.)40 +b(alue)0 3238 y(for)26 b(eac)m(h)i(ro)m(w)f(of)g(the)g(table.)40 b(The)26 b(allo)m(w)m(ed)j(expression)d(syn)m(tax)i(is)e(describ)s(ed)g (in)g(the)h(ro)m(w)g(\014lter)g(section)g(in)g(the)0 -781 y(`Extended)32 b(File)h(Name)g(Syn)m(tax')g(c)m(hapter)g(of)f(this) -g(do)s(cumen)m(t.)46 b(The)32 b(expression)g(ma)m(y)h(also)g(b)s(e)e -(written)i(to)g(a)0 894 y(text)h(\014le,)h(and)e(the)h(name)f(of)h(the) -f(\014le,)i(prep)s(ended)c(with)i(a)h('@')g(c)m(haracter)h(ma)m(y)f(b)s -(e)f(supplied)f(for)h(the)h('expr')0 1007 y(parameter)d(\(e.g.)42 +3351 y(`Extended)32 b(File)h(Name)g(Syn)m(tax')g(c)m(hapter)g(of)f +(this)g(do)s(cumen)m(t.)46 b(The)32 b(expression)g(ma)m(y)h(also)g(b)s +(e)e(written)i(to)g(a)0 3464 y(text)h(\014le,)h(and)e(the)h(name)f(of)h +(the)f(\014le,)i(prep)s(ended)c(with)i(a)h('@')g(c)m(haracter)h(ma)m(y) +f(b)s(e)f(supplied)f(for)h(the)h('expr')0 3577 y(parameter)d(\(e.g.)42 b('@\014lename.txt'\).)g(The)30 b(expression)g(in)g(the)g(\014le)h(can) -f(b)s(e)g(arbitrarily)g(complex)h(and)f(extend)0 1120 +f(b)s(e)g(arbitrarily)g(complex)h(and)f(extend)0 3690 y(o)m(v)m(er)35 b(m)m(ultiple)g(lines)g(of)f(the)g(\014le.)53 b(Lines)33 b(that)i(b)s(egin)f(with)g(2)g(slash)g(c)m(haracters)i -(\('//'\))g(will)f(b)s(e)e(ignored)i(and)0 1233 y(ma)m(y)c(b)s(e)f +(\('//'\))g(will)f(b)s(e)e(ignored)i(and)0 3802 y(ma)m(y)c(b)s(e)f (used)f(to)i(add)f(commen)m(ts)h(to)h(the)e(\014le.)0 -1492 y Fi(1)81 b Fj(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression) +4049 y Fi(1)81 b Fj(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression) g(o)m(v)m(er)h(the)g(indicated)f(ro)m(ws,)i(returning)d(an)h(arra)m(y)h -(of)f(\015ags)g(indicating)227 1605 y(whic)m(h)31 b(ro)m(ws)g(ev)-5 +(of)f(\015ags)g(indicating)227 4162 y(whic)m(h)31 b(ro)m(ws)g(ev)-5 b(aluated)32 b(to)f(TR)m(UE/F)-10 b(ALSE.)31 b(Up)s(on)f(return,)g(*n)p -2518 1605 28 4 v 33 w(go)s(o)s(d)p 2743 1605 V 33 w(ro)m(ws)g(con)m -(tains)i(the)f(n)m(um)m(b)s(er)f(of)227 1718 y(ro)m(ws)h(that)g(ev)-5 -b(aluate)32 b(to)f(TR)m(UE.)95 1978 y Fe(int)47 b(fits_find_rows)d(/)k -(fffrow)286 2090 y(\(fitsfile)e(*fptr,)93 b(char)47 b(*expr,)f(long)h -(firstrow,)e(long)i(nrows,)286 2203 y(>)h(long)e(*n_good_rows,)f(char)h -(*row_status,)92 b(int)47 b(*status\))0 2463 y Fi(2)81 +2518 4162 28 4 v 33 w(go)s(o)s(d)p 2743 4162 V 33 w(ro)m(ws)g(con)m +(tains)i(the)f(n)m(um)m(b)s(er)f(of)227 4275 y(ro)m(ws)h(that)g(ev)-5 +b(aluate)32 b(to)f(TR)m(UE.)95 4522 y Fe(int)47 b(fits_find_rows)d(/)k +(fffrow)286 4635 y(\(fitsfile)e(*fptr,)93 b(char)47 b(*expr,)f(long)h +(firstrow,)e(long)i(nrows,)286 4748 y(>)h(long)e(*n_good_rows,)f(char)h +(*row_status,)92 b(int)47 b(*status\))0 4994 y Fi(2)81 b Fj(Find)29 b(the)i(\014rst)f(ro)m(w)g(whic)m(h)g(satis\014es)h(the)g -(input)e(b)s(o)s(olean)h(expression)95 2722 y Fe(int)47 -b(fits_find_first_row)c(/)k(ffffrw)286 2835 y(\(fitsfile)f(*fptr,)93 +(input)e(b)s(o)s(olean)h(expression)95 5241 y Fe(int)47 +b(fits_find_first_row)c(/)k(ffffrw)286 5354 y(\(fitsfile)f(*fptr,)93 b(char)47 b(*expr,)f(>)i(long)e(*rownum,)g(int)h(*status\))0 -3095 y Fi(3)81 b Fj(Ev)-5 b(aluate)35 b(an)f(expression)h(on)f(all)h +5601 y Fi(3)81 b Fj(Ev)-5 b(aluate)35 b(an)f(expression)h(on)f(all)h (ro)m(ws)g(of)f(a)h(table.)54 b(If)34 b(the)g(input)g(and)g(output)g -(\014les)g(are)h(not)g(the)f(same,)227 3208 y(cop)m(y)i(the)g(TR)m(UE)f +(\014les)g(are)h(not)g(the)f(same,)227 5714 y(cop)m(y)i(the)g(TR)m(UE)f (ro)m(ws)g(to)h(the)f(output)g(\014le;)j(if)d(the)g(output)g(table)h -(is)f(not)h(empt)m(y)-8 b(,)37 b(then)e(this)g(routine)227 -3321 y(will)28 b(app)s(end)e(the)i(new)f(selected)i(ro)m(ws)e(after)h -(the)g(existing)h(ro)m(ws.)39 b(If)27 b(the)h(\014les)g(are)f(the)h -(same,)h(delete)g(the)227 3434 y(F)-10 b(ALSE)30 b(ro)m(ws)h(\(preserv) -m(e)f(the)h(TR)m(UE)f(ro)m(ws\).)95 3693 y Fe(int)47 -b(fits_select_rows)d(/)j(ffsrow)286 3806 y(\(fitsfile)f(*infptr,)f -(fitsfile)h(*outfptr,)93 b(char)46 b(*expr,)94 b(>)48 -b(int)f(*status)e(\))0 4066 y Fi(4)81 b Fj(Calculate)28 -b(an)f(expression)f(for)h(the)f(indicated)i(ro)m(ws)e(of)h(a)g(table,)i -(returning)d(the)h(results,)g(cast)h(as)f(datat)m(yp)s(e)227 -4179 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)e(arra)m(y)-8 -b(.)48 b(If)31 b(n)m(ulv)-5 b(al==NULL,)33 b(UNDEFs)g(will)f(b)s(e)g -(zero)s(ed)g(out.)47 b(F)-8 b(or)227 4292 y(v)m(ector)37 +(is)f(not)h(empt)m(y)-8 b(,)37 b(then)e(this)g(routine)p +eop end +%%Page: 61 69 +TeXDict begin 61 68 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 +b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 +b Fj(61)227 555 y(will)28 b(app)s(end)e(the)i(new)f(selected)i(ro)m(ws) +e(after)h(the)g(existing)h(ro)m(ws.)39 b(If)27 b(the)h(\014les)g(are)f +(the)h(same,)h(delete)g(the)227 668 y(F)-10 b(ALSE)30 +b(ro)m(ws)h(\(preserv)m(e)f(the)h(TR)m(UE)f(ro)m(ws\).)95 +918 y Fe(int)47 b(fits_select_rows)d(/)j(ffsrow)286 1031 +y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)93 b(char)46 +b(*expr,)94 b(>)48 b(int)f(*status)e(\))0 1280 y Fi(4)81 +b Fj(Calculate)28 b(an)f(expression)f(for)h(the)f(indicated)i(ro)m(ws)e +(of)h(a)g(table,)i(returning)d(the)h(results,)g(cast)h(as)f(datat)m(yp) +s(e)227 1393 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)e(arra)m(y) +-8 b(.)48 b(If)31 b(n)m(ulv)-5 b(al==NULL,)33 b(UNDEFs)g(will)f(b)s(e)g +(zero)s(ed)g(out.)47 b(F)-8 b(or)227 1506 y(v)m(ector)37 b(results,)f(the)f(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)i(returned)c(ma)m (y)j(b)s(e)e(less)h(than)g(nelemen)m(ts)g(if)g(nelemen)m(ts)h(is)227 -4404 y(not)c(an)g(ev)m(en)h(m)m(ultiple)f(of)g(the)g(result)g -(dimension.)44 b(Call)33 b(\014ts)p 2392 4404 V 32 w(test)p -2570 4404 V 34 w(expr)e(to)h(obtain)h(the)f(dimensions)f(of)227 -4517 y(the)g(results.)95 4777 y Fe(int)47 b(fits_calc_rows)d(/)k -(ffcrow)286 4890 y(\(fitsfile)e(*fptr,)93 b(int)47 b(datatype,)f(char)g -(*expr,)g(long)h(firstrow,)334 5003 y(long)g(nelements,)e(void)h +1619 y(not)c(an)g(ev)m(en)h(m)m(ultiple)f(of)g(the)g(result)g +(dimension.)44 b(Call)33 b(\014ts)p 2392 1619 28 4 v +32 w(test)p 2570 1619 V 34 w(expr)e(to)h(obtain)h(the)f(dimensions)f +(of)227 1732 y(the)g(results.)95 1982 y Fe(int)47 b(fits_calc_rows)d(/) +k(ffcrow)286 2095 y(\(fitsfile)e(*fptr,)93 b(int)47 b(datatype,)f(char) +g(*expr,)g(long)h(firstrow,)334 2207 y(long)g(nelements,)e(void)h (*nulval,)g(>)h(void)g(*array,)94 b(int)46 b(*anynul,)g(int)h -(*status\))0 5262 y Fi(5)81 b Fj(Ev)-5 b(aluate)33 b(an)g(expression)f +(*status\))0 2457 y Fi(5)81 b Fj(Ev)-5 b(aluate)33 b(an)g(expression)f (and)h(write)f(the)h(result)g(either)g(to)h(a)f(column)f(\(if)h(the)g -(expression)f(is)h(a)g(function)227 5375 y(of)d(other)g(columns)g(in)f +(expression)f(is)h(a)g(function)227 2570 y(of)d(other)g(columns)g(in)f (the)h(table\))h(or)f(to)g(a)h(k)m(eyw)m(ord)f(\(if)g(the)g(expression) f(ev)-5 b(aluates)32 b(to)e(a)g(constan)m(t)i(and)227 -5488 y(is)f(not)f(a)h(function)f(of)h(other)f(columns)h(in)f(the)g +2683 y(is)f(not)f(a)h(function)f(of)h(other)f(columns)h(in)f(the)g (table\).)42 b(In)30 b(the)h(former)e(case,)j(the)f(parName)f -(parameter)227 5601 y(is)40 b(the)g(name)f(of)h(the)g(column)f(\(whic)m +(parameter)227 2796 y(is)40 b(the)g(name)f(of)h(the)g(column)f(\(whic)m (h)h(ma)m(y)g(or)f(ma)m(y)h(not)g(already)g(exist\))h(in)m(to)f(whic)m -(h)g(to)g(write)g(the)227 5714 y(results,)e(and)f(parInfo)e(con)m +(h)g(to)g(write)g(the)227 2909 y(results,)e(and)f(parInfo)e(con)m (tains)j(an)f(optional)g(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 -b(alue)38 b(if)e(a)h(new)f(column)h(is)f(b)s(eing)p eop -end -%%Page: 61 69 -TeXDict begin 61 68 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.61) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.7.)72 -b(ASCI)s(I)29 b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 -b(R)m(OUTINES)1864 b Fj(61)227 555 y(created.)42 b(If)28 -b(a)h(TF)m(ORM)h(v)-5 b(alue)29 b(is)g(not)g(sp)s(eci\014ed)g(then)f(a) -i(default)f(format)g(will)h(b)s(e)e(used,)h(dep)s(ending)e(on)227 -668 y(the)35 b(expression.)54 b(If)34 b(the)h(expression)f(ev)-5 -b(aluates)37 b(to)e(a)g(constan)m(t,)i(then)e(the)g(result)f(will)h(b)s -(e)f(written)h(to)227 781 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m(en)h -(b)m(y)g(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e(parameter)i -(ma)m(y)g(b)s(e)f(used)227 894 y(to)k(supply)e(an)h(optional)i(commen)m -(t)f(for)f(the)g(k)m(eyw)m(ord.)42 b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s -(es)f(not)g(already)h(exist,)g(then)227 1007 y(the)f(name)f(of)h(the)g -(k)m(eyw)m(ord)g(m)m(ust)f(b)s(e)g(preceded)g(with)g(a)h('#')f(c)m -(haracter,)j(otherwise)e(the)f(result)h(will)g(b)s(e)227 -1120 y(written)h(to)g(a)g(column)f(with)g(that)h(name.)95 -1362 y Fe(int)47 b(fits_calculator)d(/)j(ffcalc)286 1475 -y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f(fitsfile)f(*outfptr,)h(char)g -(*parName,)334 1588 y(char)h(*parInfo,)e(>)95 b(int)47 -b(*status\))0 1831 y Fi(6)81 b Fj(This)38 b(calculator)k(routine)e(is)f -(similar)h(to)g(the)g(previous)f(routine,)j(except)f(that)f(the)g -(expression)f(is)h(only)227 1944 y(ev)-5 b(aluated)42 -b(o)m(v)m(er)f(the)f(sp)s(eci\014ed)g(ro)m(w)g(ranges.)70 -b(nranges)39 b(sp)s(eci\014es)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(w)h -(ranges,)i(and)227 2057 y(\014rstro)m(w)30 b(and)g(lastro)m(w)h(giv)m -(e)h(the)f(starting)g(and)f(ending)g(ro)m(w)g(n)m(um)m(b)s(er)f(of)i -(eac)m(h)g(range.)95 2299 y Fe(int)47 b(fits_calculator_rng)c(/)k -(ffcalc_rng)286 2412 y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f -(fitsfile)f(*outfptr,)h(char)g(*parName,)334 2525 y(char)h(*parInfo,)e -(int)i(nranges,)e(long)i(*firstrow,)e(long)i(*lastrow)334 -2638 y(>)95 b(int)47 b(*status\))0 2881 y Fi(7)81 b Fj(Ev)-5 -b(aluate)36 b(the)f(giv)m(en)h(expression)f(and)g(return)f(dimension)g -(and)h(t)m(yp)s(e)g(information)g(on)g(the)h(result.)54 -b(The)227 2994 y(returned)37 b(dimensions)f(corresp)s(ond)g(to)j(a)e -(single)i(ro)m(w)e(en)m(try)h(of)f(the)h(requested)f(expression,)j(and) -d(are)227 3106 y(equiv)-5 b(alen)m(t)26 b(to)f(the)g(result)f(of)g -(\014ts)p 1380 3106 28 4 v 33 w(read)p 1585 3106 V 32 -w(tdim\(\).)40 b(Note)25 b(that)g(strings)f(are)h(considered)f(to)h(b)s -(e)f(one)g(elemen)m(t)227 3219 y(regardless)31 b(of)g(string)f(length.) -41 b(If)30 b(maxdim)g(==)g(0,)h(then)f(naxes)g(is)h(optional.)95 -3462 y Fe(int)47 b(fits_test_expr)d(/)k(fftexp)286 3575 -y(\(fitsfile)e(*fptr,)g(char)g(*expr,)g(int)h(maxdim)f(>)i(int)f -(*datatype,)e(long)h(*nelem,)g(int)h(*naxis,)334 3688 -y(long)g(*naxes,)f(int)g(*status\))0 3833 y -SDict begin H.S end - 0 3833 a -0 3833 a -SDict begin 13.6 H.A end - 0 3833 a 0 3833 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.7.6) cvn /DEST pdfmark -end - 0 3833 a 143 x Fd(5.7.6)112 +b(alue)38 b(if)e(a)h(new)f(column)h(is)f(b)s(eing)227 +3022 y(created.)42 b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)29 +b(is)g(not)g(sp)s(eci\014ed)g(then)f(a)i(default)f(format)g(will)h(b)s +(e)e(used,)h(dep)s(ending)e(on)227 3135 y(the)35 b(expression.)54 +b(If)34 b(the)h(expression)f(ev)-5 b(aluates)37 b(to)e(a)g(constan)m +(t,)i(then)e(the)g(result)f(will)h(b)s(e)f(written)h(to)227 +3247 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m(en)h(b)m(y)g(the)f +(parName)h(parameter,)h(and)d(the)i(parInfo)e(parameter)i(ma)m(y)g(b)s +(e)f(used)227 3360 y(to)k(supply)e(an)h(optional)i(commen)m(t)f(for)f +(the)g(k)m(eyw)m(ord.)42 b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s(es)f(not) +g(already)h(exist,)g(then)227 3473 y(the)f(name)f(of)h(the)g(k)m(eyw)m +(ord)g(m)m(ust)f(b)s(e)g(preceded)g(with)g(a)h('#')f(c)m(haracter,)j +(otherwise)e(the)f(result)h(will)g(b)s(e)227 3586 y(written)h(to)g(a)g +(column)f(with)g(that)h(name.)95 3836 y Fe(int)47 b(fits_calculator)d +(/)j(ffcalc)286 3949 y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f +(fitsfile)f(*outfptr,)h(char)g(*parName,)334 4062 y(char)h(*parInfo,)e +(>)95 b(int)47 b(*status\))0 4311 y Fi(6)81 b Fj(This)38 +b(calculator)k(routine)e(is)f(similar)h(to)g(the)g(previous)f(routine,) +j(except)f(that)f(the)g(expression)f(is)h(only)227 4424 +y(ev)-5 b(aluated)42 b(o)m(v)m(er)f(the)f(sp)s(eci\014ed)g(ro)m(w)g +(ranges.)70 b(nranges)39 b(sp)s(eci\014es)h(the)g(n)m(um)m(b)s(er)f(of) +h(ro)m(w)h(ranges,)i(and)227 4537 y(\014rstro)m(w)30 +b(and)g(lastro)m(w)h(giv)m(e)h(the)f(starting)g(and)f(ending)g(ro)m(w)g +(n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)95 4787 y Fe(int)47 +b(fits_calculator_rng)c(/)k(ffcalc_rng)286 4900 y(\(fitsfile)f +(*infptr,)f(char)i(*expr,)f(fitsfile)f(*outfptr,)h(char)g(*parName,)334 +5013 y(char)h(*parInfo,)e(int)i(nranges,)e(long)i(*firstrow,)e(long)i +(*lastrow)334 5125 y(>)95 b(int)47 b(*status\))0 5375 +y Fi(7)81 b Fj(Ev)-5 b(aluate)36 b(the)f(giv)m(en)h(expression)f(and)g +(return)f(dimension)g(and)h(t)m(yp)s(e)g(information)g(on)g(the)h +(result.)54 b(The)227 5488 y(returned)37 b(dimensions)f(corresp)s(ond)g +(to)j(a)e(single)i(ro)m(w)e(en)m(try)h(of)f(the)h(requested)f +(expression,)j(and)d(are)227 5601 y(equiv)-5 b(alen)m(t)26 +b(to)f(the)g(result)f(of)g(\014ts)p 1380 5601 V 33 w(read)p +1585 5601 V 32 w(tdim\(\).)40 b(Note)25 b(that)g(strings)f(are)h +(considered)f(to)h(b)s(e)f(one)g(elemen)m(t)227 5714 +y(regardless)31 b(of)g(string)f(length.)41 b(If)30 b(maxdim)g(==)g(0,)h +(then)f(naxes)g(is)h(optional.)p eop end +%%Page: 62 70 +TeXDict begin 62 69 bop 0 299 a Fj(62)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_test_expr)d(/)k(fftexp)286 +668 y(\(fitsfile)e(*fptr,)g(char)g(*expr,)g(int)h(maxdim)f(>)i(int)f +(*datatype,)e(long)h(*nelem,)g(int)h(*naxis,)334 781 +y(long)g(*naxes,)f(int)g(*status\))0 1069 y Fd(5.7.6)112 b(Column)39 b(Binning)f(or)f(Histogramming)i(Routines)0 -4195 y Fj(The)30 b(follo)m(wing)j(routines)e(ma)m(y)g(b)s(e)g(useful)f +1288 y Fj(The)30 b(follo)m(wing)j(routines)e(ma)m(y)g(b)s(e)g(useful)f (when)g(p)s(erforming)g(histogramming)h(op)s(erations)h(on)e -(column\(s\))i(of)0 4308 y(a)f(table)g(to)g(generate)h(an)e(image)i(in) +(column\(s\))i(of)0 1401 y(a)f(table)g(to)g(generate)h(an)e(image)i(in) e(a)h(primary)e(arra)m(y)i(or)f(image)i(extension.)0 -4550 y Fi(1)81 b Fj(Calculate)27 b(the)e(histogramming)h(parameters)g +1643 y Fi(1)81 b Fj(Calculate)27 b(the)e(histogramming)h(parameters)g (\(min,)h(max,)f(and)f(bin)g(size)h(for)f(eac)m(h)i(axis)f(of)f(the)h -(histogram,)227 4663 y(based)38 b(on)g(a)g(v)-5 b(ariet)m(y)39 +(histogram,)227 1756 y(based)38 b(on)g(a)g(v)-5 b(ariet)m(y)39 b(of)f(p)s(ossible)g(input)f(parameters.)64 b(If)37 b(the)h(input)f -(names)h(of)g(the)g(columns)g(to)h(b)s(e)227 4776 y(binned)d(are)i(n)m +(names)h(of)g(the)g(columns)g(to)h(b)s(e)227 1868 y(binned)d(are)i(n)m (ull,)h(then)e(the)h(routine)f(will)h(\014rst)f(lo)s(ok)h(for)f(the)h -(CPREF)f(=)g("NAME1,)j(NAME2,)h(...")227 4889 y(k)m(eyw)m(ord)34 +(CPREF)f(=)g("NAME1,)j(NAME2,)h(...")227 1981 y(k)m(eyw)m(ord)34 b(whic)m(h)f(lists)h(the)g(preferred)e(columns.)50 b(If)32 b(not)i(presen)m(t,)h(then)e(the)g(routine)h(will)g(assume)f(the)227 -5002 y(column)d(names)h(X,)f(Y,)h(Z,)f(and)g(T)g(for)g(up)g(to)h(4)f +2094 y(column)d(names)h(X,)f(Y,)h(Z,)f(and)g(T)g(for)g(up)g(to)h(4)f (axes)h(\(as)g(sp)s(eci\014ed)f(b)m(y)g(the)h(NAXIS)f(parameter\).)227 -5149 y(MININ)39 b(and)f(MAXIN)h(are)g(input)e(arra)m(ys)i(that)g(giv)m +2242 y(MININ)39 b(and)f(MAXIN)h(are)g(input)e(arra)m(ys)i(that)g(giv)m (e)h(the)f(minim)m(um)e(and)h(maxim)m(um)h(v)-5 b(alue)39 -b(for)f(the)227 5262 y(histogram,)30 b(along)f(eac)m(h)g(axis.)40 +b(for)f(the)227 2355 y(histogram,)30 b(along)f(eac)m(h)g(axis.)40 b(Alternativ)m(ely)-8 b(,)32 b(the)c(name)g(of)h(k)m(eyw)m(ords)f(that) -h(giv)m(e)g(the)f(min,)h(max,)g(and)227 5375 y(binsize)f(ma)m(y)g(b)s +h(giv)m(e)g(the)f(min,)h(max,)g(and)227 2467 y(binsize)f(ma)m(y)g(b)s (e)f(giv)m(e)h(with)f(the)h(MINNAME,)h(MAXNAME,)f(and)f(BINNAME)h(arra) -m(y)g(parameters.)40 b(If)227 5488 y(the)33 b(v)-5 b(alue)34 +m(y)g(parameters.)40 b(If)227 2580 y(the)33 b(v)-5 b(alue)34 b(=)e(DOUBLENULL)-10 b(V)g(ALUE)33 b(and)g(no)f(k)m(eyw)m(ord)i(names)e -(are)h(giv)m(en,)i(then)e(the)g(routine)g(will)227 5601 +(are)h(giv)m(en,)i(then)e(the)g(routine)g(will)227 2693 y(use)i(the)f(TLMINn)g(and)g(TLMAXn)g(k)m(eyw)m(ords,)j(if)d(presen)m (t,)i(or)f(the)f(actual)i(min)e(and/or)h(max)g(v)-5 b(alues)227 -5714 y(in)30 b(the)h(column.)p eop end -%%Page: 62 70 -TeXDict begin 62 69 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.62) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(62)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(The)e(\\d")g(v)m(ersion)h(has)e +2806 y(in)30 b(the)h(column.)227 2953 y(The)d(\\d")g(v)m(ersion)h(has)e (double)h(precision)g(\015oating)h(p)s(oin)m(t)f(outputs)g(as)g(noted)g -(in)g(the)g(calling)h(signature.)227 668 y(The)h(v)m(ersion)h(without)f -(\\d")h(has)f(single)h(precision)g(\015oating)g(p)s(oin)m(t)f(outputs.) -227 818 y(BINSIZEIN)k(is)h(an)g(arra)m(y)g(giving)h(the)f(binsize)g -(along)h(eac)m(h)g(axis.)55 b(If)34 b(the)h(v)-5 b(alue)36 -b(=)e(DOUBLENULL-)227 931 y(V)-10 b(ALUE,)38 b(and)e(a)i(k)m(eyw)m(ord) -f(name)g(is)h(not)f(sp)s(eci\014ed)f(with)h(BINNAME,)h(then)f(this)g -(routine)g(will)h(\014rst)227 1044 y(lo)s(ok)d(for)f(the)g(TDBINn)g(k)m -(eyw)m(ord,)i(or)f(else)g(will)f(use)g(a)h(binsize)f(=)g(1,)h(or)g(a)f -(binsize)g(that)h(pro)s(duces)e(10)227 1157 y(histogram)e(bins,)f(whic) -m(h)g(ev)m(er)h(is)g(smaller.)95 1417 y Fe(int)47 b -(fits_calc_binning[d])143 1530 y(Input)g(parameters:)239 -1643 y(\(fitsfile)e(*fptr,)94 b(/*)47 b(IO)g(-)h(pointer)d(to)j(table)e -(to)h(be)g(binned)667 b(*/)286 1756 y(int)47 b(naxis,)333 -b(/*)47 b(I)g(-)h(number)e(of)h(axes/columns)e(in)i(the)g(binned)f -(image)94 b(*/)286 1868 y(char)47 b(colname[4][FLEN_VALUE],)137 -b(/*)47 b(I)h(-)f(optional)f(column)g(names)428 b(*/)286 -1981 y(double)46 b(*minin,)237 b(/*)47 b(I)h(-)f(optional)f(lower)g -(bound)h(value)f(for)h(each)f(axis)95 b(*/)286 2094 y(double)46 +(in)g(the)g(calling)h(signature.)227 3066 y(The)h(v)m(ersion)h(without) +f(\\d")h(has)f(single)h(precision)g(\015oating)g(p)s(oin)m(t)f +(outputs.)227 3214 y(BINSIZEIN)k(is)h(an)g(arra)m(y)g(giving)h(the)f +(binsize)g(along)h(eac)m(h)g(axis.)55 b(If)34 b(the)h(v)-5 +b(alue)36 b(=)e(DOUBLENULL-)227 3327 y(V)-10 b(ALUE,)38 +b(and)e(a)i(k)m(eyw)m(ord)f(name)g(is)h(not)f(sp)s(eci\014ed)f(with)h +(BINNAME,)h(then)f(this)g(routine)g(will)h(\014rst)227 +3440 y(lo)s(ok)d(for)f(the)g(TDBINn)g(k)m(eyw)m(ord,)i(or)f(else)g +(will)f(use)g(a)h(binsize)f(=)g(1,)h(or)g(a)f(binsize)g(that)h(pro)s +(duces)e(10)227 3552 y(histogram)e(bins,)f(whic)m(h)g(ev)m(er)h(is)g +(smaller.)95 3794 y Fe(int)47 b(fits_calc_binning[d])143 +3907 y(Input)g(parameters:)239 4020 y(\(fitsfile)e(*fptr,)94 +b(/*)47 b(IO)g(-)h(pointer)d(to)j(table)e(to)h(be)g(binned)667 +b(*/)286 4133 y(int)47 b(naxis,)333 b(/*)47 b(I)g(-)h(number)e(of)h +(axes/columns)e(in)i(the)g(binned)f(image)94 b(*/)286 +4246 y(char)47 b(colname[4][FLEN_VALUE],)137 b(/*)47 +b(I)h(-)f(optional)f(column)g(names)428 b(*/)286 4359 +y(double)46 b(*minin,)237 b(/*)47 b(I)h(-)f(optional)f(lower)g(bound)h +(value)f(for)h(each)f(axis)95 b(*/)286 4472 y(double)46 b(*maxin,)237 b(/*)47 b(I)h(-)f(optional)f(upper)g(bound)h(value,)f -(for)h(each)f(axis)h(*/)286 2207 y(double)f(*binsizein,)f(/*)i(I)h(-)f +(for)h(each)f(axis)h(*/)286 4585 y(double)f(*binsizein,)f(/*)i(I)h(-)f (optional)f(bin)h(size)f(along)h(each)f(axis)429 b(*/)286 -2320 y(char)47 b(minname[4][FLEN_VALUE],)41 b(/*)48 b(I)f(-)h(optional) -d(keywords)h(for)h(min)333 b(*/)286 2433 y(char)47 b +4698 y(char)47 b(minname[4][FLEN_VALUE],)41 b(/*)48 b(I)f(-)h(optional) +d(keywords)h(for)h(min)333 b(*/)286 4811 y(char)47 b (maxname[4][FLEN_VALUE],)41 b(/*)48 b(I)f(-)h(optional)d(keywords)h -(for)h(max)333 b(*/)286 2546 y(char)47 b(binname[4][FLEN_VALUE],)41 +(for)h(max)333 b(*/)286 4924 y(char)47 b(binname[4][FLEN_VALUE],)41 b(/*)48 b(I)f(-)h(optional)d(keywords)h(for)h(binsize)141 -b(*/)143 2659 y(Output)46 b(parameters:)286 2772 y(int)h(*colnum,)237 +b(*/)143 5036 y(Output)46 b(parameters:)286 5149 y(int)h(*colnum,)237 b(/*)47 b(O)g(-)h(column)e(numbers,)f(to)j(be)f(binned)f(*/)286 -2885 y(long)h(*naxes,)237 b(/*)47 b(O)g(-)h(number)e(of)h(bins)g(in)g -(each)g(histogram)e(axis)h(*/)286 2998 y(float[double])f(*amin,)237 +5262 y(long)h(*naxes,)237 b(/*)47 b(O)g(-)h(number)e(of)h(bins)g(in)g +(each)g(histogram)e(axis)h(*/)286 5375 y(float[double])f(*amin,)237 b(/*)47 b(O)g(-)h(lower)e(bound)g(of)i(the)e(histogram)g(axes)g(*/)286 -3110 y(float[double])f(*amax,)237 b(/*)47 b(O)g(-)h(upper)e(bound)g(of) -i(the)e(histogram)g(axes)g(*/)286 3223 y(float[double])f(*binsize,)93 +5488 y(float[double])f(*amax,)237 b(/*)47 b(O)g(-)h(upper)e(bound)g(of) +i(the)e(histogram)g(axes)g(*/)286 5601 y(float[double])f(*binsize,)93 b(/*)47 b(O)g(-)h(width)e(of)h(histogram)e(bins/pixels)g(on)i(each)g -(axis)g(*/)286 3336 y(int)g(*status\))0 3596 y Fi(2)81 -b Fj(Cop)m(y)26 b(the)h(relev)-5 b(an)m(t)28 b(k)m(eyw)m(ords)f(from)g -(the)g(header)f(of)h(the)g(table)h(that)f(is)g(b)s(eing)f(binned,)h(to) -g(the)g(the)g(header)227 3709 y(of)e(the)h(output)e(histogram)i(image.) -40 b(This)24 b(will)i(not)f(cop)m(y)h(the)f(table)h(structure)f(k)m -(eyw)m(ords)g(\(e.g.,)j(NAXIS,)227 3822 y(TF)m(ORMn,)j(TTYPEn,)f -(etc.\))44 b(nor)31 b(will)g(it)g(cop)m(y)h(the)f(k)m(eyw)m(ords)g -(that)h(apply)e(to)i(other)f(columns)g(of)g(the)227 3935 -y(table)g(that)g(are)f(not)h(used)e(to)i(create)g(the)f(histogram.)42 -b(This)29 b(routine)h(will)g(translate)h(the)g(names)f(of)g(the)227 -4048 y(W)-8 b(orld)27 b(Co)s(ordinate)e(System)h(\(W)m(CS\))g(k)m(eyw)m -(ords)g(for)g(the)g(binned)e(columns)h(in)m(to)i(the)f(form)f(that)h -(is)g(need)227 4161 y(for)h(a)g(FITS)g(image)h(\(e.g.,)h(the)e(TCTYPn)f -(table)i(k)m(eyw)m(ord)f(will)g(b)s(e)g(translated)g(to)h(the)f(CTYPEn) -f(image)227 4273 y(k)m(eyw)m(ord\).)95 4533 y Fe(int)47 -b(fits_copy_pixlist2image)286 4646 y(\(fitsfile)f(*infptr,)141 -b(/*)47 b(I)g(-)h(pointer)e(to)h(input)f(HDU)h(*/)334 -4759 y(fitsfile)f(*outfptr,)93 b(/*)47 b(I)g(-)h(pointer)e(to)h(output) -f(HDU)h(*/)334 4872 y(int)g(firstkey,)332 b(/*)47 b(I)g(-)h(first)e -(HDU)h(keyword)f(to)h(start)f(with)h(*/)334 4985 y(int)g(naxis,)476 -b(/*)47 b(I)g(-)h(number)e(of)h(axes)g(in)g(the)g(image)f(*/)334 -5098 y(int)h(*colnum,)380 b(/*)47 b(I)g(-)h(numbers)e(of)h(the)g -(columns)e(to)j(be)f(binned)94 b(*/)334 5211 y(int)47 +(axis)g(*/)286 5714 y(int)g(*status\))p eop end +%%Page: 63 71 +TeXDict begin 63 70 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 +b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 +b Fj(63)0 555 y Fi(2)81 b Fj(Cop)m(y)26 b(the)h(relev)-5 +b(an)m(t)28 b(k)m(eyw)m(ords)f(from)g(the)g(header)f(of)h(the)g(table)h +(that)f(is)g(b)s(eing)f(binned,)h(to)g(the)g(the)g(header)227 +668 y(of)e(the)h(output)e(histogram)i(image.)40 b(This)24 +b(will)i(not)f(cop)m(y)h(the)f(table)h(structure)f(k)m(eyw)m(ords)g +(\(e.g.,)j(NAXIS,)227 781 y(TF)m(ORMn,)j(TTYPEn,)f(etc.\))44 +b(nor)31 b(will)g(it)g(cop)m(y)h(the)f(k)m(eyw)m(ords)g(that)h(apply)e +(to)i(other)f(columns)g(of)g(the)227 894 y(table)g(that)g(are)f(not)h +(used)e(to)i(create)g(the)f(histogram.)42 b(This)29 b(routine)h(will)g +(translate)h(the)g(names)f(of)g(the)227 1007 y(W)-8 b(orld)27 +b(Co)s(ordinate)e(System)h(\(W)m(CS\))g(k)m(eyw)m(ords)g(for)g(the)g +(binned)e(columns)h(in)m(to)i(the)f(form)f(that)h(is)g(need)227 +1120 y(for)h(a)g(FITS)g(image)h(\(e.g.,)h(the)e(TCTYPn)f(table)i(k)m +(eyw)m(ord)f(will)g(b)s(e)g(translated)g(to)h(the)f(CTYPEn)f(image)227 +1233 y(k)m(eyw)m(ord\).)95 1512 y Fe(int)47 b(fits_copy_pixlist2image) +286 1625 y(\(fitsfile)f(*infptr,)141 b(/*)47 b(I)g(-)h(pointer)e(to)h +(input)f(HDU)h(*/)334 1738 y(fitsfile)f(*outfptr,)93 +b(/*)47 b(I)g(-)h(pointer)e(to)h(output)f(HDU)h(*/)334 +1851 y(int)g(firstkey,)332 b(/*)47 b(I)g(-)h(first)e(HDU)h(keyword)f +(to)h(start)f(with)h(*/)334 1964 y(int)g(naxis,)476 b(/*)47 +b(I)g(-)h(number)e(of)h(axes)g(in)g(the)g(image)f(*/)334 +2077 y(int)h(*colnum,)380 b(/*)47 b(I)g(-)h(numbers)e(of)h(the)g +(columns)e(to)j(be)f(binned)94 b(*/)334 2190 y(int)47 b(*status\))380 b(/*)47 b(IO)g(-)g(error)g(status)f(*/)0 -5470 y Fi(3)81 b Fj(W)-8 b(rite)36 b(a)f(set)h(of)f(default)h(W)m(CS)f +2469 y Fi(3)81 b Fj(W)-8 b(rite)36 b(a)f(set)h(of)f(default)h(W)m(CS)f (k)m(eyw)m(ords)g(to)h(the)f(histogram)h(header,)g(IF)f(the)g(W)m(CS)g -(k)m(eyw)m(ords)h(do)f(not)227 5583 y(already)40 b(exist.)69 +(k)m(eyw)m(ords)h(do)f(not)227 2582 y(already)40 b(exist.)69 b(This)38 b(will)i(create)h(a)e(linear)h(W)m(CS)f(where)g(the)h(co)s (ordinate)g(t)m(yp)s(es)f(are)h(equal)g(to)g(the)227 -5696 y(original)32 b(column)e(names.)p eop end -%%Page: 63 71 -TeXDict begin 63 70 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.63) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.7.)72 -b(ASCI)s(I)29 b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 -b(R)m(OUTINES)1864 b Fj(63)95 555 y Fe(int)47 b(fits_write_keys_histo) -239 668 y(\(fitsfile)e(*fptr,)237 b(/*)47 b(I)h(-)f(pointer)f(to)h -(table)f(to)i(be)f(binned)666 b(*/)286 781 y(fitsfile)46 -b(*histptr,)93 b(/*)47 b(I)h(-)f(pointer)f(to)h(output)f(histogram)f -(image)i(HDU)285 b(*/)286 894 y(int)47 b(naxis,)476 b(/*)47 -b(I)h(-)f(number)f(of)h(axes)g(in)g(the)g(histogram)e(image)285 -b(*/)286 1007 y(int)47 b(*colnum,)380 b(/*)47 b(I)h(-)f(column)f -(numbers)g(of)h(the)g(binned)f(columns)332 b(*/)286 1120 -y(int)47 b(*status\))0 1373 y Fi(4)81 b Fj(Up)s(date)29 -b(the)i(W)m(CS)f(k)m(eyw)m(ords)g(in)g(a)g(histogram)h(image)g(header)f -(that)h(giv)m(e)g(the)f(lo)s(cation)i(of)e(the)g(reference)227 -1486 y(pixel)h(\(CRPIXn\),)f(and)g(the)h(pixel)f(size)h(\(CDEL)-8 -b(Tn\),)31 b(in)f(the)h(binned)e(image.)227 1635 y(The)j(\\d")g(v)m -(ersion)h(has)e(double)h(precision)g(\015oating)h(p)s(oin)m(t)f(inputs) -f(as)h(noted)g(in)g(the)g(calling)h(signature.)227 1748 -y(The)d(v)m(ersion)h(without)f(\\d")h(has)f(single)h(precision)g -(\015oating)g(p)s(oin)m(t)f(inputs.)95 2002 y Fe(int)47 -b(fits_rebin_wcs[d])239 2115 y(\(fitsfile)e(*fptr,)237 +2695 y(original)32 b(column)e(names.)95 2974 y Fe(int)47 +b(fits_write_keys_histo)239 3087 y(\(fitsfile)e(*fptr,)237 +b(/*)47 b(I)h(-)f(pointer)f(to)h(table)f(to)i(be)f(binned)666 +b(*/)286 3200 y(fitsfile)46 b(*histptr,)93 b(/*)47 b(I)h(-)f(pointer)f +(to)h(output)f(histogram)f(image)i(HDU)285 b(*/)286 3313 +y(int)47 b(naxis,)476 b(/*)47 b(I)h(-)f(number)f(of)h(axes)g(in)g(the)g +(histogram)e(image)285 b(*/)286 3426 y(int)47 b(*colnum,)380 +b(/*)47 b(I)h(-)f(column)f(numbers)g(of)h(the)g(binned)f(columns)332 +b(*/)286 3539 y(int)47 b(*status\))0 3818 y Fi(4)81 b +Fj(Up)s(date)29 b(the)i(W)m(CS)f(k)m(eyw)m(ords)g(in)g(a)g(histogram)h +(image)g(header)f(that)h(giv)m(e)g(the)f(lo)s(cation)i(of)e(the)g +(reference)227 3931 y(pixel)h(\(CRPIXn\),)f(and)g(the)h(pixel)f(size)h +(\(CDEL)-8 b(Tn\),)31 b(in)f(the)h(binned)e(image.)227 +4091 y(The)j(\\d")g(v)m(ersion)h(has)e(double)h(precision)g(\015oating) +h(p)s(oin)m(t)f(inputs)f(as)h(noted)g(in)g(the)g(calling)h(signature.) +227 4204 y(The)d(v)m(ersion)h(without)f(\\d")h(has)f(single)h +(precision)g(\015oating)g(p)s(oin)m(t)f(inputs.)95 4484 +y Fe(int)47 b(fits_rebin_wcs[d])239 4597 y(\(fitsfile)e(*fptr,)237 b(/*)47 b(I)h(-)f(pointer)f(to)h(table)f(to)i(be)f(binned)523 -b(*/)286 2227 y(int)47 b(naxis,)476 b(/*)47 b(I)h(-)f(number)f(of)h -(axes)g(in)g(the)g(histogram)e(image)142 b(*/)286 2340 +b(*/)286 4710 y(int)47 b(naxis,)476 b(/*)47 b(I)h(-)f(number)f(of)h +(axes)g(in)g(the)g(histogram)e(image)142 b(*/)286 4823 y(float[double])45 b(*amin,)380 b(/*)47 b(I)g(-)h(first)e(pixel)h -(include)e(in)j(each)e(axis)381 b(*/)286 2453 y(float[double])45 +(include)e(in)j(each)e(axis)381 b(*/)286 4936 y(float[double])45 b(*binsize,)236 b(/*)47 b(I)g(-)h(binning)e(factor)g(for)h(each)f(axis) -572 b(*/)286 2566 y(int)47 b(*status\))0 2820 y Fi(5)81 +572 b(*/)286 5048 y(int)47 b(*status\))0 5328 y Fi(5)81 b Fj(Bin)33 b(the)h(v)-5 b(alues)35 b(in)e(the)h(input)f(table)h (columns,)h(and)e(write)h(the)g(histogram)h(arra)m(y)f(to)g(the)g -(output)g(FITS)227 2933 y(image)e(\(histptr\).)227 3082 +(output)g(FITS)227 5441 y(image)e(\(histptr\).)227 5601 y(The)g(\\d")g(v)m(ersion)h(has)e(double)h(precision)g(\015oating)h(p)s (oin)m(t)f(inputs)f(as)h(noted)g(in)g(the)g(calling)h(signature.)227 -3195 y(The)d(v)m(ersion)h(without)f(\\d")h(has)f(single)h(precision)g -(\015oating)g(p)s(oin)m(t)f(inputs.)95 3448 y Fe(int)47 -b(fits_make_hist[d])143 3561 y(\(fitsfile)e(*fptr,)190 -b(/*)47 b(I)g(-)h(pointer)e(to)h(table)f(with)h(X)g(and)g(Y)h(cols;)285 -b(*/)191 3674 y(fitsfile)45 b(*histptr,)h(/*)h(I)g(-)h(pointer)e(to)h -(output)f(FITS)h(image)619 b(*/)191 3787 y(int)47 b(bitpix,)380 -b(/*)47 b(I)g(-)h(datatype)d(for)i(image:)f(16,)h(32,)g(-32,)g(etc)238 -b(*/)191 3900 y(int)47 b(naxis,)428 b(/*)47 b(I)g(-)h(number)e(of)h -(axes)g(in)g(the)g(histogram)e(image)190 b(*/)191 4013 -y(long)47 b(*naxes,)332 b(/*)47 b(I)g(-)h(size)e(of)i(axes)e(in)h(the)g -(histogram)f(image)285 b(*/)191 4126 y(int)47 b(*colnum,)332 -b(/*)47 b(I)g(-)h(column)e(numbers)g(\(array)g(length)g(=)h(naxis\))190 -b(*/)191 4238 y(float[double])44 b(*amin,)333 b(/*)47 -b(I)g(-)h(minimum)d(histogram)h(value,)g(for)h(each)f(axis)142 -b(*/)191 4351 y(float[double])44 b(*amax,)333 b(/*)47 -b(I)g(-)h(maximum)d(histogram)h(value,)g(for)h(each)f(axis)142 -b(*/)191 4464 y(float[double])44 b(*binsize,)189 b(/*)47 -b(I)g(-)h(bin)f(size)f(along)h(each)f(axis)810 b(*/)191 -4577 y(float[double])44 b(weight,)285 b(/*)47 b(I)g(-)h(binning)d -(weighting)h(factor)g(\(FLOATNULLVALUE)d(*/)1098 4690 -y(/*)238 b(for)47 b(no)g(weighting\))1143 b(*/)191 4803 -y(int)47 b(wtcolnum,)284 b(/*)47 b(I)g(-)h(keyword)e(or)h(col)g(for)g -(weight)284 b(\(or)47 b(NULL\))g(*/)191 4916 y(int)g(recip,)428 -b(/*)47 b(I)g(-)h(use)f(reciprocal)e(of)i(the)g(weight?)f(0)h(or)g(1) -239 b(*/)191 5029 y(char)47 b(*selectrow,)140 b(/*)47 -b(I)g(-)h(optional)d(array)i(\(length)f(=)h(no.)g(of)477 -b(*/)1098 5142 y(/*)47 b(rows)g(in)g(the)g(table\).)93 -b(If)47 b(the)g(element)f(is)h(true)95 b(*/)1098 5255 -y(/*)47 b(then)g(the)f(corresponding)f(row)i(of)g(the)g(table)f(will)h -(*/)1098 5368 y(/*)g(be)g(included)f(in)h(the)g(histogram,)e(otherwise) -g(the)95 b(*/)1098 5480 y(/*)47 b(row)g(will)f(be)i(skipped.)93 -b(Ingnored)45 b(if)j(*selectrow)d(*/)1098 5593 y(/*)i(is)g(equal)f(to)i -(NULL.)1335 b(*/)191 5706 y(int)47 b(*status\))p eop -end +5714 y(The)d(v)m(ersion)h(without)f(\\d")h(has)f(single)h(precision)g +(\015oating)g(p)s(oin)m(t)f(inputs.)p eop end %%Page: 64 72 -TeXDict begin 64 71 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.64) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(64)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 -a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.5.8) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(5.8)135 b(Utilit)l(y)47 b(Routines)0 -668 y -SDict begin H.S end - 0 668 a 0 668 a -SDict begin 13.6 H.A end - 0 668 a 0 668 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.8.1) cvn /DEST pdfmark -end - 0 668 a 141 x Fd(5.8.1)112 -b(File)39 b(Chec)m(ksum)f(Routines)0 1028 y Fj(The)33 +TeXDict begin 64 71 bop 0 299 a Fj(64)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_make_hist[d])143 +668 y(\(fitsfile)e(*fptr,)190 b(/*)47 b(I)g(-)h(pointer)e(to)h(table)f +(with)h(X)g(and)g(Y)h(cols;)285 b(*/)191 781 y(fitsfile)45 +b(*histptr,)h(/*)h(I)g(-)h(pointer)e(to)h(output)f(FITS)h(image)619 +b(*/)191 894 y(int)47 b(bitpix,)380 b(/*)47 b(I)g(-)h(datatype)d(for)i +(image:)f(16,)h(32,)g(-32,)g(etc)238 b(*/)191 1007 y(int)47 +b(naxis,)428 b(/*)47 b(I)g(-)h(number)e(of)h(axes)g(in)g(the)g +(histogram)e(image)190 b(*/)191 1120 y(long)47 b(*naxes,)332 +b(/*)47 b(I)g(-)h(size)e(of)i(axes)e(in)h(the)g(histogram)f(image)285 +b(*/)191 1233 y(int)47 b(*colnum,)332 b(/*)47 b(I)g(-)h(column)e +(numbers)g(\(array)g(length)g(=)h(naxis\))190 b(*/)191 +1346 y(float[double])44 b(*amin,)333 b(/*)47 b(I)g(-)h(minimum)d +(histogram)h(value,)g(for)h(each)f(axis)142 b(*/)191 +1458 y(float[double])44 b(*amax,)333 b(/*)47 b(I)g(-)h(maximum)d +(histogram)h(value,)g(for)h(each)f(axis)142 b(*/)191 +1571 y(float[double])44 b(*binsize,)189 b(/*)47 b(I)g(-)h(bin)f(size)f +(along)h(each)f(axis)810 b(*/)191 1684 y(float[double])44 +b(weight,)285 b(/*)47 b(I)g(-)h(binning)d(weighting)h(factor)g +(\(FLOATNULLVALUE)d(*/)1098 1797 y(/*)238 b(for)47 b(no)g(weighting\)) +1143 b(*/)191 1910 y(int)47 b(wtcolnum,)284 b(/*)47 b(I)g(-)h(keyword)e +(or)h(col)g(for)g(weight)284 b(\(or)47 b(NULL\))g(*/)191 +2023 y(int)g(recip,)428 b(/*)47 b(I)g(-)h(use)f(reciprocal)e(of)i(the)g +(weight?)f(0)h(or)g(1)239 b(*/)191 2136 y(char)47 b(*selectrow,)140 +b(/*)47 b(I)g(-)h(optional)d(array)i(\(length)f(=)h(no.)g(of)477 +b(*/)1098 2249 y(/*)47 b(rows)g(in)g(the)g(table\).)93 +b(If)47 b(the)g(element)f(is)h(true)95 b(*/)1098 2362 +y(/*)47 b(then)g(the)f(corresponding)f(row)i(of)g(the)g(table)f(will)h +(*/)1098 2475 y(/*)g(be)g(included)f(in)h(the)g(histogram,)e(otherwise) +g(the)95 b(*/)1098 2588 y(/*)47 b(row)g(will)f(be)i(skipped.)93 +b(Ingnored)45 b(if)j(*selectrow)d(*/)1098 2700 y(/*)i(is)g(equal)f(to)i +(NULL.)1335 b(*/)191 2813 y(int)47 b(*status\))0 3182 +y Ff(5.8)135 b(Utilit)l(y)47 b(Routines)0 3442 y Fd(5.8.1)112 +b(File)39 b(Chec)m(ksum)f(Routines)0 3668 y Fj(The)33 b(follo)m(wing)h(routines)f(either)h(compute)f(or)h(v)-5 b(alidate)34 b(the)g(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A) --8 b(T)g(ASUM)0 1140 y(k)m(eyw)m(ord)33 b(is)f(used)f(to)i(store)f(the) +-8 b(T)g(ASUM)0 3781 y(k)m(eyw)m(ord)33 b(is)f(used)f(to)i(store)f(the) h(n)m(umerical)f(v)-5 b(alue)33 b(of)f(the)g(32-bit,)i(1's)f(complemen) -m(t)g(c)m(hec)m(ksum)g(for)f(the)g(data)0 1253 y(unit)26 +m(t)g(c)m(hec)m(ksum)g(for)f(the)g(data)0 3894 y(unit)26 b(alone.)40 b(If)25 b(there)h(is)h(no)e(data)i(unit)f(then)f(the)h(v)-5 b(alue)27 b(is)f(set)g(to)h(zero.)40 b(The)26 b(n)m(umerical)g(v)-5 -b(alue)27 b(is)f(stored)g(as)g(an)0 1366 y(ASCI)s(I)20 +b(alue)27 b(is)f(stored)g(as)g(an)0 4007 y(ASCI)s(I)20 b(string)i(of)h(digits,)h(enclosed)f(in)e(quotes,)k(b)s(ecause)d(the)g (v)-5 b(alue)23 b(ma)m(y)f(b)s(e)f(to)s(o)i(large)g(to)g(represen)m(t)f -(as)g(a)h(32-bit)0 1479 y(signed)28 b(in)m(teger.)41 +(as)g(a)h(32-bit)0 4119 y(signed)28 b(in)m(teger.)41 b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)f(used)f(to)h(store)h(the)f -(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)0 1592 y(the)f(c)m(hec)m(ksum) +(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)0 4232 y(the)f(c)m(hec)m(ksum) h(for)f(the)h(en)m(tire)g(HDU.)g(Storing)f(the)h(complemen)m(t,)h (rather)e(than)g(the)h(actual)g(c)m(hec)m(ksum,)h(forces)0 -1705 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)f(HDU)h(to)g(equal)g +4345 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)f(HDU)h(to)g(equal)g (zero.)47 b(If)31 b(the)i(\014le)f(has)g(b)s(een)f(mo)s(di\014ed)g -(since)i(the)f(c)m(hec)m(ksums)0 1818 y(w)m(ere)39 b(computed,)i(then)e +(since)i(the)f(c)m(hec)m(ksums)0 4458 y(w)m(ere)39 b(computed,)i(then)e (the)g(HDU)g(c)m(hec)m(ksum)h(will)f(usually)f(not)h(equal)h(zero.)66 -b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0 1931 y(con)m(v)m(en)m +b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0 4571 y(con)m(v)m(en)m (tions)34 b(are)f(based)f(on)g(a)g(pap)s(er)f(b)m(y)h(Rob)g(Seaman)g (published)f(in)h(the)g(pro)s(ceedings)g(of)g(the)h(AD)m(ASS)f(IV)0 -2044 y(conference)h(in)e(Baltimore)j(in)d(No)m(v)m(em)m(b)s(er)i(1994)h +4684 y(conference)h(in)e(Baltimore)j(in)d(No)m(v)m(em)m(b)s(er)i(1994)h (and)d(a)h(later)h(revision)f(in)f(June)g(1995.)47 b(See)32 -b(App)s(endix)e(B)i(for)0 2157 y(the)f(de\014nition)f(of)g(the)h -(parameters)f(used)g(in)g(these)h(routines.)0 2407 y +b(App)s(endix)e(B)i(for)0 4797 y(the)f(de\014nition)f(of)g(the)h +(parameters)f(used)g(in)g(these)h(routines.)0 5086 y Fi(1)81 b Fj(Compute)33 b(and)g(write)h(the)g(D)m(A)-8 b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5 -b(alues)34 b(for)f(the)h(CHDU)g(in)m(to)h(the)227 2520 +b(alues)34 b(for)f(the)h(CHDU)g(in)m(to)h(the)227 5199 y(curren)m(t)d(header.)46 b(If)32 b(the)g(k)m(eyw)m(ords)h(already)g (exist,)g(their)g(v)-5 b(alues)32 b(will)h(b)s(e)e(up)s(dated)g(only)h -(if)h(necessary)227 2633 y(\(i.e.,)f(if)f(the)f(\014le)h(has)f(b)s(een) +(if)h(necessary)227 5312 y(\(i.e.,)f(if)f(the)f(\014le)h(has)f(b)s(een) f(mo)s(di\014ed)h(since)g(the)h(original)h(k)m(eyw)m(ord)e(v)-5 -b(alues)31 b(w)m(ere)g(computed\).)95 2883 y Fe(int)47 -b(fits_write_chksum)c(/)48 b(ffpcks)286 2996 y(\(fitsfile)e(*fptr,)g(>) -h(int)g(*status\))0 3246 y Fi(2)81 b Fj(Up)s(date)28 +b(alues)31 b(w)m(ere)g(computed\).)95 5601 y Fe(int)47 +b(fits_write_chksum)c(/)48 b(ffpcks)286 5714 y(\(fitsfile)e(*fptr,)g(>) +h(int)g(*status\))p eop end +%%Page: 65 73 +TeXDict begin 65 72 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(65)0 555 y Fi(2)81 b Fj(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5 b(alue)29 b(in)f(the)h(CHDU,)g (assuming)f(that)h(the)f(D)m(A)-8 b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 -3359 y(exists)36 b(and)f(already)h(has)f(the)h(correct)g(v)-5 +668 y(exists)36 b(and)f(already)h(has)f(the)h(correct)g(v)-5 b(alue.)56 b(This)35 b(routine)g(calculates)j(the)e(new)f(c)m(hec)m -(ksum)h(for)f(the)227 3471 y(curren)m(t)40 b(header)g(unit,)j(adds)c -(it)i(to)g(the)f(data)h(unit)f(c)m(hec)m(ksum,)k(enco)s(des)c(the)g(v) --5 b(alue)41 b(in)m(to)g(an)f(ASCI)s(I)227 3584 y(string,)31 +(ksum)h(for)f(the)227 781 y(curren)m(t)40 b(header)g(unit,)j(adds)c(it) +i(to)g(the)f(data)h(unit)f(c)m(hec)m(ksum,)k(enco)s(des)c(the)g(v)-5 +b(alue)41 b(in)m(to)g(an)f(ASCI)s(I)227 894 y(string,)31 b(and)f(writes)g(the)h(string)f(to)h(the)g(CHECKSUM)e(k)m(eyw)m(ord.)95 -3834 y Fe(int)47 b(fits_update_chksum)c(/)48 b(ffupck)286 -3947 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0 4197 +1147 y Fe(int)47 b(fits_update_chksum)c(/)48 b(ffupck)286 +1260 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0 1513 y Fi(3)81 b Fj(V)-8 b(erify)35 b(the)f(CHDU)h(b)m(y)g(computing)f(the)h (c)m(hec)m(ksums)g(and)f(comparing)h(them)f(with)g(the)h(k)m(eyw)m -(ords.)53 b(The)227 4310 y(data)34 b(unit)f(is)g(v)m(eri\014ed)g +(ords.)53 b(The)227 1626 y(data)34 b(unit)f(is)g(v)m(eri\014ed)g (correctly)h(if)f(the)h(computed)f(c)m(hec)m(ksum)g(equals)h(the)f(v)-5 -b(alue)34 b(of)f(the)g(D)m(A)-8 b(T)g(ASUM)227 4423 y(k)m(eyw)m(ord.)64 +b(alue)34 b(of)f(the)g(D)m(A)-8 b(T)g(ASUM)227 1739 y(k)m(eyw)m(ord.)64 b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)g(HDU)h(\(header)f (plus)f(data)i(unit\))e(is)h(correct)h(if)f(it)h(equals)227 -4536 y(zero.)47 b(The)32 b(output)f(D)m(A)-8 b(T)g(A)m(OK)34 +1852 y(zero.)47 b(The)32 b(output)f(D)m(A)-8 b(T)g(A)m(OK)34 b(and)d(HDUOK)i(parameters)f(in)g(this)g(routine)g(are)g(in)m(tegers)i -(whic)m(h)e(will)227 4649 y(ha)m(v)m(e)k(a)f(v)-5 b(alue)35 +(whic)m(h)e(will)227 1965 y(ha)m(v)m(e)k(a)f(v)-5 b(alue)35 b(=)f(1)h(if)f(the)h(data)g(or)f(HDU)h(is)g(v)m(eri\014ed)f(correctly) -8 b(,)38 b(a)d(v)-5 b(alue)35 b(=)f(0)h(if)f(the)h(D)m(A)-8 -b(T)g(ASUM)36 b(or)227 4762 y(CHECKSUM)29 b(k)m(eyw)m(ord)g(is)h(not)f +b(T)g(ASUM)36 b(or)227 2078 y(CHECKSUM)29 b(k)m(eyw)m(ord)g(is)h(not)f (presen)m(t,)h(or)f(v)-5 b(alue)30 b(=)f(-1)h(if)f(the)h(computed)f(c)m -(hec)m(ksum)h(is)f(not)h(correct.)95 5125 y Fe(int)47 -b(fits_verify_chksum)c(/)48 b(ffvcks)286 5238 y(\(fitsfile)e(*fptr,)g +(hec)m(ksum)h(is)f(not)h(correct.)95 2444 y Fe(int)47 +b(fits_verify_chksum)c(/)48 b(ffvcks)286 2557 y(\(fitsfile)e(*fptr,)g (>)h(int)g(*dataok,)f(int)h(*hduok,)e(int)i(*status\))0 -5488 y Fi(4)81 b Fj(Compute)40 b(and)g(return)g(the)h(c)m(hec)m(ksum)g +2810 y Fi(4)81 b Fj(Compute)40 b(and)g(return)g(the)h(c)m(hec)m(ksum)g (v)-5 b(alues)41 b(for)g(the)g(CHDU)g(without)g(creating)h(or)f(mo)s -(difying)f(the)227 5601 y(CHECKSUM)33 b(and)h(D)m(A)-8 +(difying)f(the)227 2923 y(CHECKSUM)33 b(and)h(D)m(A)-8 b(T)g(ASUM)35 b(k)m(eyw)m(ords.)52 b(This)33 b(routine)h(is)g(used)f (in)m(ternally)i(b)m(y)f(\013v)m(c)m(ks,)i(but)d(ma)m(y)227 -5714 y(b)s(e)d(useful)g(in)g(other)g(situations)h(as)g(w)m(ell.)p +3036 y(b)s(e)d(useful)g(in)g(other)g(situations)h(as)g(w)m(ell.)95 +3289 y Fe(int)47 b(fits_get_chksum/)d(/ffgcks)286 3402 +y(\(fitsfile)i(*fptr,)g(>)h(unsigned)f(long)g(*datasum,)g(unsigned)f +(long)i(*hdusum,)334 3515 y(int)g(*status\))0 3768 y +Fi(5)81 b Fj(Enco)s(de)23 b(a)h(c)m(hec)m(ksum)g(v)-5 +b(alue)24 b(in)m(to)g(a)g(16-c)m(haracter)j(string.)38 +b(If)23 b(complm)h(is)f(non-zero)i(\(true\))f(then)f(the)h(32-bit)227 +3881 y(sum)30 b(v)-5 b(alue)31 b(will)f(b)s(e)g(complemen)m(ted)h(b)s +(efore)f(enco)s(ding.)95 4134 y Fe(int)47 b(fits_encode_chksum)c(/)48 +b(ffesum)286 4247 y(\(unsigned)e(long)g(sum,)h(int)g(complm,)f(>)h +(char)g(*ascii\);)0 4500 y Fi(6)81 b Fj(Deco)s(de)24 +b(a)f(16-c)m(haracter)j(c)m(hec)m(ksum)e(string)f(in)m(to)g(a)h +(unsigned)e(long)h(v)-5 b(alue.)39 b(If)23 b(is)g(non-zero)g(\(true\).) +39 b(then)23 b(the)227 4613 y(32-bit)33 b(sum)d(v)-5 +b(alue)32 b(will)g(b)s(e)f(complemen)m(ted)h(after)g(deco)s(ding.)44 +b(The)31 b(c)m(hec)m(ksum)h(v)-5 b(alue)32 b(is)g(also)g(returned)227 +4726 y(as)f(the)f(v)-5 b(alue)31 b(of)g(the)f(function.)95 +4980 y Fe(unsigned)46 b(long)h(fits_decode_chksum)42 +b(/)48 b(ffdsum)525 5092 y(\(char)e(*ascii,)g(int)h(complm,)f(>)h +(unsigned)f(long)h(*sum\);)0 5382 y Fd(5.8.2)112 b(Date)38 +b(and)g(Time)g(Utilit)m(y)f(Routines)0 5601 y Fj(The)29 +b(follo)m(wing)i(routines)f(help)f(to)i(construct)f(or)f(parse)h(the)g +(FITS)f(date/time)i(strings.)41 b(Starting)30 b(in)f(the)h(y)m(ear)0 +5714 y(2000,)k(the)d(FITS)g(D)m(A)-8 b(TE)32 b(k)m(eyw)m(ord)g(v)-5 +b(alues)31 b(\(and)h(the)f(v)-5 b(alues)32 b(of)f(other)h(`D)m(A)-8 +b(TE-')33 b(k)m(eyw)m(ords\))f(m)m(ust)f(ha)m(v)m(e)i(the)p eop end -%%Page: 65 73 -TeXDict begin 65 72 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.65) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.8.)72 -b(UTILITY)30 b(R)m(OUTINES)2693 b Fj(65)95 555 y Fe(int)47 -b(fits_get_chksum/)d(/ffgcks)286 668 y(\(fitsfile)i(*fptr,)g(>)h -(unsigned)f(long)g(*datasum,)g(unsigned)f(long)i(*hdusum,)334 -781 y(int)g(*status\))0 1022 y Fi(5)81 b Fj(Enco)s(de)23 -b(a)h(c)m(hec)m(ksum)g(v)-5 b(alue)24 b(in)m(to)g(a)g(16-c)m(haracter)j -(string.)38 b(If)23 b(complm)h(is)f(non-zero)i(\(true\))f(then)f(the)h -(32-bit)227 1135 y(sum)30 b(v)-5 b(alue)31 b(will)f(b)s(e)g(complemen)m -(ted)h(b)s(efore)f(enco)s(ding.)95 1376 y Fe(int)47 b -(fits_encode_chksum)c(/)48 b(ffesum)286 1489 y(\(unsigned)e(long)g -(sum,)h(int)g(complm,)f(>)h(char)g(*ascii\);)0 1730 y -Fi(6)81 b Fj(Deco)s(de)24 b(a)f(16-c)m(haracter)j(c)m(hec)m(ksum)e -(string)f(in)m(to)g(a)h(unsigned)e(long)h(v)-5 b(alue.)39 -b(If)23 b(is)g(non-zero)g(\(true\).)39 b(then)23 b(the)227 -1842 y(32-bit)33 b(sum)d(v)-5 b(alue)32 b(will)g(b)s(e)f(complemen)m -(ted)h(after)g(deco)s(ding.)44 b(The)31 b(c)m(hec)m(ksum)h(v)-5 -b(alue)32 b(is)g(also)g(returned)227 1955 y(as)f(the)f(v)-5 -b(alue)31 b(of)g(the)f(function.)95 2196 y Fe(unsigned)46 -b(long)h(fits_decode_chksum)42 b(/)48 b(ffdsum)525 2309 -y(\(char)e(*ascii,)g(int)h(complm,)f(>)h(unsigned)f(long)h(*sum\);)0 -2454 y -SDict begin H.S end - 0 2454 a 0 2454 a -SDict begin 13.6 H.A end - 0 2454 a 0 2454 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.8.2) cvn /DEST pdfmark -end - 0 2454 a 143 -x Fd(5.8.2)112 b(Date)38 b(and)g(Time)g(Utilit)m(y)f(Routines)0 -2816 y Fj(The)29 b(follo)m(wing)i(routines)f(help)f(to)i(construct)f -(or)f(parse)h(the)g(FITS)f(date/time)i(strings.)41 b(Starting)30 -b(in)f(the)h(y)m(ear)0 2929 y(2000,)k(the)d(FITS)g(D)m(A)-8 -b(TE)32 b(k)m(eyw)m(ord)g(v)-5 b(alues)31 b(\(and)h(the)f(v)-5 -b(alues)32 b(of)f(other)h(`D)m(A)-8 b(TE-')33 b(k)m(eyw)m(ords\))f(m)m -(ust)f(ha)m(v)m(e)i(the)0 3042 y(form)j('YYYY-MM-DD')k(\(date)e(only\)) -f(or)g('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))h -(where)0 3154 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)g(places)g(in)f -(the)g(seconds)g(v)-5 b(alue)31 b(is)f(optional.)42 b(These)30 -b(times)h(are)f(in)g(UTC.)g(The)g(older)0 3267 y('dd/mm/yy')d(date)g +%%Page: 66 74 +TeXDict begin 66 73 bop 0 299 a Fj(66)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fj(form)36 b('YYYY-MM-DD')k(\(date)e(only\))f(or) +g('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))h(where)0 +668 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)g(places)g(in)f(the)g +(seconds)g(v)-5 b(alue)31 b(is)f(optional.)42 b(These)30 +b(times)h(are)f(in)g(UTC.)g(The)g(older)0 781 y('dd/mm/yy')d(date)g (format)g(ma)m(y)h(not)f(b)s(e)f(used)g(for)h(dates)h(after)f(01)h(Jan) m(uary)e(2000.)42 b(See)27 b(App)s(endix)e(B)i(for)g(the)0 -3380 y(de\014nition)j(of)h(the)f(parameters)h(used)e(in)h(these)h -(routines.)0 3621 y Fi(1)81 b Fj(Get)23 b(the)f(curren)m(t)f(system)i +894 y(de\014nition)j(of)h(the)f(parameters)h(used)e(in)h(these)h +(routines.)0 1161 y Fi(1)81 b Fj(Get)23 b(the)f(curren)m(t)f(system)i (date.)38 b(C)22 b(already)g(pro)m(vides)g(standard)f(library)h -(routines)g(for)f(getting)j(the)e(curren)m(t)227 3734 +(routines)g(for)f(getting)j(the)e(curren)m(t)227 1274 y(date)k(and)e(time,)j(but)d(this)h(routine)g(is)g(pro)m(vided)g(for)f (compatibilit)m(y)k(with)c(the)h(F)-8 b(ortran)26 b(FITSIO)e(library)-8 -b(.)227 3847 y(The)30 b(returned)f(y)m(ear)j(has)e(4)g(digits)h -(\(1999,)i(2000,)g(etc.\))95 4088 y Fe(int)47 b -(fits_get_system_date/ffgsd)o(t)286 4201 y(\()h(>)f(int)g(*day,)g(int)f -(*month,)g(int)h(*year,)f(int)h(*status)f(\))0 4442 y +b(.)227 1387 y(The)30 b(returned)f(y)m(ear)j(has)e(4)g(digits)h +(\(1999,)i(2000,)g(etc.\))95 1655 y Fe(int)47 b +(fits_get_system_date/ffgsd)o(t)286 1768 y(\()h(>)f(int)g(*day,)g(int)f +(*month,)g(int)h(*year,)f(int)h(*status)f(\))0 2035 y Fi(2)81 b Fj(Get)34 b(the)g(curren)m(t)g(system)f(date)i(and)e(time)h (string)g(\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)i(will)f(b)s(e) -227 4555 y(in)26 b(UTC/GMT)g(if)g(a)m(v)-5 b(ailable,)29 +227 2148 y(in)26 b(UTC/GMT)g(if)g(a)m(v)-5 b(ailable,)29 b(as)e(indicated)f(b)m(y)g(a)g(returned)f(timeref)h(v)-5 b(alue)27 b(=)e(0.)40 b(If)26 b(the)g(returned)e(v)-5 -b(alue)227 4668 y(of)31 b(timeref)g(=)g(1)g(then)f(this)h(indicates)g +b(alue)227 2261 y(of)31 b(timeref)g(=)g(1)g(then)f(this)h(indicates)g (that)h(it)f(w)m(as)g(not)g(p)s(ossible)f(to)h(con)m(v)m(ert)i(the)d -(lo)s(cal)i(time)g(to)f(UTC,)227 4780 y(and)f(th)m(us)g(the)h(lo)s(cal) -g(time)g(w)m(as)g(returned.)95 5021 y Fe(int)47 b -(fits_get_system_time/ffgst)o(m)286 5134 y(\(>)h(char)e(*datestr,)f -(int)95 b(*timeref,)45 b(int)i(*status\))0 5375 y Fi(3)81 +(lo)s(cal)i(time)g(to)f(UTC,)227 2374 y(and)f(th)m(us)g(the)h(lo)s(cal) +g(time)g(w)m(as)g(returned.)95 2641 y Fe(int)47 b +(fits_get_system_time/ffgst)o(m)286 2754 y(\(>)h(char)e(*datestr,)f +(int)95 b(*timeref,)45 b(int)i(*status\))0 3022 y Fi(3)81 b Fj(Construct)26 b(a)i(date)g(string)f(from)g(the)g(input)f(date)i(v) -5 b(alues.)40 b(If)27 b(the)g(y)m(ear)h(is)g(b)s(et)m(w)m(een)f(1900)i -(and)e(1998,)j(inclu-)227 5488 y(siv)m(e,)38 b(then)c(the)i(returned)d +(and)e(1998,)j(inclu-)227 3135 y(siv)m(e,)38 b(then)c(the)i(returned)d (date)j(string)f(will)g(ha)m(v)m(e)i(the)e(old)g(FITS)f(format)i -(\('dd/mm/yy'\),)h(otherwise)227 5601 y(the)32 b(date)f(string)g(will)h +(\('dd/mm/yy'\),)h(otherwise)227 3247 y(the)32 b(date)f(string)g(will)h (ha)m(v)m(e)g(the)g(new)e(FITS)h(format)g(\('YYYY-MM-DD'\).)36 -b(Use)31 b(\014ts)p 3229 5601 28 4 v 33 w(time2str)h(instead)227 -5714 y(to)f(alw)m(a)m(ys)h(return)e(a)g(date)h(string)g(using)f(the)g -(new)g(FITS)g(format.)p eop end -%%Page: 66 74 -TeXDict begin 66 73 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.66) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(66)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_date2str/ffdt2s)286 -668 y(\(int)g(year,)f(int)h(month,)f(int)h(day,)g(>)g(char)g(*datestr,) -e(int)i(*status\))0 928 y Fi(4)81 b Fj(Construct)34 b(a)i(new-format)f -(date)h(+)f(time)h(string)f(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 -b(If)34 b(the)i(y)m(ear,)227 1041 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 -b(alues)32 b(all)h(=)e(0)h(then)g(only)g(the)g(time)g(is)g(enco)s(ded)f -(with)h(format)g('hh:mm:ss.ddd...'.)227 1154 y(The)j(decimals)h -(parameter)g(sp)s(eci\014es)e(ho)m(w)i(man)m(y)f(decimal)h(places)g(of) -f(fractional)i(seconds)e(to)h(include)227 1266 y(in)30 -b(the)h(string.)41 b(If)29 b(`decimals')j(is)f(negativ)m(e,)h(then)f -(only)f(the)h(date)g(will)f(b)s(e)g(return)f(\('YYYY-MM-DD'\).)95 -1526 y Fe(int)47 b(fits_time2str/fftm2s)286 1639 y(\(int)g(year,)f(int) -h(month,)f(int)h(day,)g(int)g(hour,)f(int)h(minute,)f(double)g(second,) -286 1752 y(int)h(decimals,)f(>)h(char)g(*datestr,)e(int)i(*status\))0 -2012 y Fi(5)81 b Fj(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g +b(Use)31 b(\014ts)p 3229 3247 28 4 v 33 w(time2str)h(instead)227 +3360 y(to)f(alw)m(a)m(ys)h(return)e(a)g(date)h(string)g(using)f(the)g +(new)g(FITS)g(format.)95 3628 y Fe(int)47 b(fits_date2str/ffdt2s)286 +3741 y(\(int)g(year,)f(int)h(month,)f(int)h(day,)g(>)g(char)g +(*datestr,)e(int)i(*status\))0 4008 y Fi(4)81 b Fj(Construct)34 +b(a)i(new-format)f(date)h(+)f(time)h(string)f +(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 b(If)34 b(the)i(y)m(ear,)227 +4121 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 b(alues)32 b(all)h(=)e(0)h(then) +g(only)g(the)g(time)g(is)g(enco)s(ded)f(with)h(format)g +('hh:mm:ss.ddd...'.)227 4234 y(The)j(decimals)h(parameter)g(sp)s +(eci\014es)e(ho)m(w)i(man)m(y)f(decimal)h(places)g(of)f(fractional)i +(seconds)e(to)h(include)227 4347 y(in)30 b(the)h(string.)41 +b(If)29 b(`decimals')j(is)f(negativ)m(e,)h(then)f(only)f(the)h(date)g +(will)f(b)s(e)g(return)f(\('YYYY-MM-DD'\).)95 4614 y +Fe(int)47 b(fits_time2str/fftm2s)286 4727 y(\(int)g(year,)f(int)h +(month,)f(int)h(day,)g(int)g(hour,)f(int)h(minute,)f(double)g(second,) +286 4840 y(int)h(decimals,)f(>)h(char)g(*datestr,)e(int)i(*status\))0 +5108 y Fi(5)81 b Fj(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g (input)e(string,)49 b(where)44 b(the)h(string)g(ma)m(y)g(b)s(e)f(in)h -(either)g(the)g(old)227 2125 y(\('dd/mm/yy'\))29 b(or)f(new)f +(either)g(the)g(old)227 5221 y(\('dd/mm/yy'\))29 b(or)f(new)f (\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))j(FITS)d(format.)40 -b(Null)227 2237 y(p)s(oin)m(ters)31 b(ma)m(y)f(b)s(e)g(supplied)f(for)h +b(Null)227 5333 y(p)s(oin)m(ters)31 b(ma)m(y)f(b)s(e)g(supplied)f(for)h (an)m(y)h(un)m(w)m(an)m(ted)g(output)f(date)h(parameters.)95 -2497 y Fe(int)47 b(fits_str2date/ffs2dt)286 2610 y(\(char)g(*datestr,)e -(>)i(int)g(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*status\))0 -2870 y Fi(6)81 b Fj(Return)30 b(the)h(date)h(and)f(time)h(as)f(read)g -(from)g(the)h(input)e(string,)h(where)g(the)h(string)f(ma)m(y)h(b)s(e)e -(in)h(either)h(the)227 2983 y(old)d(or)f(new)g(FITS)g(format.)40 -b(The)28 b(returned)f(hours,)h(min)m(utes,)h(and)f(seconds)g(v)-5 -b(alues)29 b(will)f(b)s(e)g(set)h(to)g(zero)227 3095 -y(if)k(the)h(input)e(string)h(do)s(es)g(not)h(include)f(the)g(time)h -(\('dd/mm/yy')f(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8 -b(,)227 3208 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i -(v)-5 b(alues)36 b(will)f(b)s(e)g(set)h(to)g(zero)g(if)f(the)g(date)h -(is)f(not)h(included)e(in)227 3321 y(the)29 b(input)f(string)h -(\('hh:mm:ss.ddd...'\).)40 b(Null)29 b(p)s(oin)m(ters)f(ma)m(y)i(b)s(e) -e(supplied)f(for)i(an)m(y)g(un)m(w)m(an)m(ted)g(output)227 -3434 y(date)i(and)f(time)h(parameters.)95 3694 y Fe(int)47 -b(fits_str2time/ffs2tm)286 3807 y(\(char)g(*datestr,)e(>)i(int)g -(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*hour,)286 -3920 y(int)g(*minute,)f(double)g(*second,)f(int)i(*status\))0 -4060 y -SDict begin H.S end - 0 4060 a 0 4060 a -SDict begin 13.6 H.A end - 0 4060 a 0 4060 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.5.8.3) cvn /DEST pdfmark -end - 0 4060 a 150 -x Fd(5.8.3)112 b(General)39 b(Utilit)m(y)e(Routines)0 -4429 y Fj(The)30 b(follo)m(wing)i(utilit)m(y)f(routines)g(ma)m(y)g(b)s -(e)e(useful)h(for)g(certain)h(applications.)0 4689 y +5601 y Fe(int)47 b(fits_str2date/ffs2dt)286 5714 y(\(char)g(*datestr,)e +(>)i(int)g(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*status\))p +eop end +%%Page: 67 75 +TeXDict begin 67 74 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(67)0 555 y Fi(6)81 b Fj(Return)30 +b(the)h(date)h(and)f(time)h(as)f(read)g(from)g(the)h(input)e(string,)h +(where)g(the)h(string)f(ma)m(y)h(b)s(e)e(in)h(either)h(the)227 +668 y(old)d(or)f(new)g(FITS)g(format.)40 b(The)28 b(returned)f(hours,)h +(min)m(utes,)h(and)f(seconds)g(v)-5 b(alues)29 b(will)f(b)s(e)g(set)h +(to)g(zero)227 781 y(if)k(the)h(input)e(string)h(do)s(es)g(not)h +(include)f(the)g(time)h(\('dd/mm/yy')f(or)h('YYYY-MM-DD'\))j(.)c +(Similarly)-8 b(,)227 894 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g +(and)d(date)i(v)-5 b(alues)36 b(will)f(b)s(e)g(set)h(to)g(zero)g(if)f +(the)g(date)h(is)f(not)h(included)e(in)227 1007 y(the)29 +b(input)f(string)h(\('hh:mm:ss.ddd...'\).)40 b(Null)29 +b(p)s(oin)m(ters)f(ma)m(y)i(b)s(e)e(supplied)f(for)i(an)m(y)g(un)m(w)m +(an)m(ted)g(output)227 1120 y(date)i(and)f(time)h(parameters.)95 +1370 y Fe(int)47 b(fits_str2time/ffs2tm)286 1483 y(\(char)g(*datestr,)e +(>)i(int)g(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*hour,)286 +1596 y(int)g(*minute,)f(double)g(*second,)f(int)i(*status\))0 +1885 y Fd(5.8.3)112 b(General)39 b(Utilit)m(y)e(Routines)0 +2104 y Fj(The)30 b(follo)m(wing)i(utilit)m(y)f(routines)g(ma)m(y)g(b)s +(e)e(useful)h(for)g(certain)h(applications.)0 2355 y Fi(1)81 b Fj(Return)30 b(the)h(revision)g(n)m(um)m(b)s(er)f(of)h(the)g (CFITSIO)f(library)-8 b(.)42 b(The)31 b(revision)g(n)m(um)m(b)s(er)f -(will)h(b)s(e)f(incremen)m(ted)227 4802 y(with)g(eac)m(h)i(new)e -(release)h(of)g(CFITSIO.)95 5061 y Fe(float)47 b(fits_get_version)c(/) -48 b(ffvers)e(\()h(>)h(float)e(*version\))0 5321 y Fi(2)81 +(will)h(b)s(e)f(incremen)m(ted)227 2468 y(with)g(eac)m(h)i(new)e +(release)h(of)g(CFITSIO.)95 2718 y Fe(float)47 b(fits_get_version)c(/) +48 b(ffvers)e(\()h(>)h(float)e(*version\))0 2969 y Fi(2)81 b Fj(W)-8 b(rite)34 b(an)g(80-c)m(haracter)i(message)e(to)g(the)g (CFITSIO)e(error)h(stac)m(k.)51 b(Application)34 b(programs)f(should)g -(not)227 5434 y(normally)e(write)f(to)i(the)e(stac)m(k,)i(but)e(there)g +(not)227 3082 y(normally)e(write)f(to)i(the)e(stac)m(k,)i(but)e(there)g (ma)m(y)h(b)s(e)f(some)h(situations)g(where)f(this)g(is)h(desirable.)95 -5694 y Fe(void)47 b(fits_write_errmsg)c(/)48 b(ffpmsg)e(\(char)g -(*err_msg\))p eop end -%%Page: 67 75 -TeXDict begin 67 74 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.67) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.8.)72 -b(UTILITY)30 b(R)m(OUTINES)2693 b Fj(67)0 555 y Fi(3)81 -b Fj(Con)m(v)m(ert)31 b(a)g(c)m(haracter)h(string)e(to)h(upp)s(ercase)e -(\(op)s(erates)j(in)e(place\).)95 817 y Fe(void)47 b(fits_uppercase)d -(/)j(ffupch)g(\(char)f(*string\))0 1079 y Fi(4)81 b Fj(Compare)43 -b(the)i(input)e(template)i(string)f(against)h(the)g(reference)f(string) -g(to)h(see)g(if)f(they)g(matc)m(h.)82 b(The)227 1192 -y(template)36 b(string)f(ma)m(y)g(con)m(tain)g(wildcard)f(c)m -(haracters:)51 b('*')35 b(will)g(matc)m(h)g(an)m(y)g(sequence)g(of)f(c) -m(haracters)227 1305 y(\(including)j(zero)h(c)m(haracters\))g(and)e(') -10 b(?')60 b(will)38 b(matc)m(h)f(an)m(y)g(single)h(c)m(haracter)g(in)f -(the)g(reference)g(string.)227 1418 y(The)e('#')h(c)m(haracter)h(will)f -(matc)m(h)g(an)m(y)g(consecutiv)m(e)h(string)f(of)f(decimal)i(digits)f -(\(0)g(-)f(9\).)57 b(If)35 b(casesen)h(=)227 1531 y(CASESEN)c(=)h(TR)m -(UE)h(then)f(the)g(matc)m(h)i(will)e(b)s(e)g(case)h(sensitiv)m(e,)i -(otherwise)e(the)f(case)i(of)e(the)h(letters)227 1644 -y(will)g(b)s(e)f(ignored)h(if)g(casesen)g(=)g(CASEINSEN)e(=)h(F)-10 -b(ALSE.)34 b(The)f(returned)f(MA)-8 b(TCH)34 b(parameter)h(will)227 -1757 y(b)s(e)30 b(TR)m(UE)g(if)g(the)g(2)h(strings)f(matc)m(h,)h(and)f -(EXA)m(CT)g(will)g(b)s(e)g(TR)m(UE)g(if)g(the)g(matc)m(h)h(is)f(exact)i -(\(i.e.,)g(if)e(no)227 1870 y(wildcard)k(c)m(haracters)i(w)m(ere)f -(used)e(in)h(the)h(matc)m(h\).)53 b(Both)35 b(strings)g(m)m(ust)f(b)s -(e)f(68)j(c)m(haracters)f(or)g(less)f(in)227 1983 y(length.)95 -2245 y Fe(void)47 b(fits_compare_str)c(/)48 b(ffcmps)334 -2358 y(\(char)e(*templt,)g(char)h(*string,)e(int)i(casesen,)f(>)h(int)g -(*match,)f(int)h(*exact\))0 2620 y Fi(5)81 b Fj(Split)30 -b(a)i(string)f(con)m(taining)h(a)g(list)f(of)g(names)g(\(t)m(ypically)j -(\014le)d(names)g(or)g(column)f(names\))i(in)m(to)g(individual)227 -2733 y(name)23 b(tok)m(ens)g(b)m(y)g(a)g(sequence)g(of)g(calls)g(to)h -(\014ts)p 1814 2733 28 4 v 32 w(split)p 2018 2733 V 33 -w(names.)38 b(The)22 b(names)h(in)f(the)h(list)g(m)m(ust)f(b)s(e)g -(delimited)227 2846 y(b)m(y)45 b(a)f(comma)i(and/or)e(spaces.)83 +3332 y Fe(void)47 b(fits_write_errmsg)c(/)48 b(ffpmsg)e(\(char)g +(*err_msg\))0 3583 y Fi(3)81 b Fj(Con)m(v)m(ert)31 b(a)g(c)m(haracter)h +(string)e(to)h(upp)s(ercase)e(\(op)s(erates)j(in)e(place\).)95 +3833 y Fe(void)47 b(fits_uppercase)d(/)j(ffupch)g(\(char)f(*string\))0 +4084 y Fi(4)81 b Fj(Compare)43 b(the)i(input)e(template)i(string)f +(against)h(the)g(reference)f(string)g(to)h(see)g(if)f(they)g(matc)m(h.) +82 b(The)227 4197 y(template)36 b(string)f(ma)m(y)g(con)m(tain)g +(wildcard)f(c)m(haracters:)51 b('*')35 b(will)g(matc)m(h)g(an)m(y)g +(sequence)g(of)f(c)m(haracters)227 4310 y(\(including)j(zero)h(c)m +(haracters\))g(and)e(')10 b(?')60 b(will)38 b(matc)m(h)f(an)m(y)g +(single)h(c)m(haracter)g(in)f(the)g(reference)g(string.)227 +4422 y(The)e('#')h(c)m(haracter)h(will)f(matc)m(h)g(an)m(y)g +(consecutiv)m(e)h(string)f(of)f(decimal)i(digits)f(\(0)g(-)f(9\).)57 +b(If)35 b(casesen)h(=)227 4535 y(CASESEN)c(=)h(TR)m(UE)h(then)f(the)g +(matc)m(h)i(will)e(b)s(e)g(case)h(sensitiv)m(e,)i(otherwise)e(the)f +(case)i(of)e(the)h(letters)227 4648 y(will)g(b)s(e)f(ignored)h(if)g +(casesen)g(=)g(CASEINSEN)e(=)h(F)-10 b(ALSE.)34 b(The)f(returned)f(MA) +-8 b(TCH)34 b(parameter)h(will)227 4761 y(b)s(e)30 b(TR)m(UE)g(if)g +(the)g(2)h(strings)f(matc)m(h,)h(and)f(EXA)m(CT)g(will)g(b)s(e)g(TR)m +(UE)g(if)g(the)g(matc)m(h)h(is)f(exact)i(\(i.e.,)g(if)e(no)227 +4874 y(wildcard)k(c)m(haracters)i(w)m(ere)f(used)e(in)h(the)h(matc)m +(h\).)53 b(Both)35 b(strings)g(m)m(ust)f(b)s(e)f(68)j(c)m(haracters)f +(or)g(less)f(in)227 4987 y(length.)95 5238 y Fe(void)47 +b(fits_compare_str)c(/)48 b(ffcmps)334 5350 y(\(char)e(*templt,)g(char) +h(*string,)e(int)i(casesen,)f(>)h(int)g(*match,)f(int)h(*exact\))0 +5601 y Fi(5)81 b Fj(Split)30 b(a)i(string)f(con)m(taining)h(a)g(list)f +(of)g(names)g(\(t)m(ypically)j(\014le)d(names)g(or)g(column)f(names\))i +(in)m(to)g(individual)227 5714 y(name)23 b(tok)m(ens)g(b)m(y)g(a)g +(sequence)g(of)g(calls)g(to)h(\014ts)p 1814 5714 28 4 +v 32 w(split)p 2018 5714 V 33 w(names.)38 b(The)22 b(names)h(in)f(the)h +(list)g(m)m(ust)f(b)s(e)g(delimited)p eop end +%%Page: 68 76 +TeXDict begin 68 75 bop 0 299 a Fj(68)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(b)m(y)45 b(a)f(comma)i(and/or)e(spaces.)83 b(This)44 b(routine)g(ignores)h(spaces)g(and)f(commas)h(that)g(o)s -(ccur)f(within)227 2959 y(paren)m(theses,)36 b(brac)m(k)m(ets,)h(or)e +(ccur)f(within)227 668 y(paren)m(theses,)36 b(brac)m(k)m(ets,)h(or)e (curly)f(brac)m(k)m(ets.)54 b(It)35 b(also)g(strips)f(an)m(y)h(leading) -g(and)f(trailing)h(blanks)f(from)227 3072 y(the)d(returned)e(name.)227 -3223 y(This)h(routine)g(is)h(similar)f(to)h(the)g(ANSI)f(C)g('strtok')h -(function:)227 3374 y(The)37 b(\014rst)f(call)i(to)g(\014ts)p -1033 3374 V 32 w(split)p 1237 3374 V 33 w(names)f(has)g(a)g(non-n)m -(ull)f(input)g(string.)61 b(It)37 b(\014nds)e(the)i(\014rst)f(name)h -(in)g(the)227 3487 y(string)26 b(and)f(terminates)h(it)h(b)m(y)e(o)m(v) +g(and)f(trailing)h(blanks)f(from)227 781 y(the)d(returned)e(name.)227 +939 y(This)h(routine)g(is)h(similar)f(to)h(the)g(ANSI)f(C)g('strtok')h +(function:)227 1096 y(The)37 b(\014rst)f(call)i(to)g(\014ts)p +1033 1096 28 4 v 32 w(split)p 1237 1096 V 33 w(names)f(has)g(a)g(non-n) +m(ull)f(input)g(string.)61 b(It)37 b(\014nds)e(the)i(\014rst)f(name)h +(in)g(the)227 1209 y(string)26 b(and)f(terminates)h(it)h(b)m(y)e(o)m(v) m(erwriting)i(the)f(next)g(c)m(haracter)h(of)f(the)g(string)f(with)h(a) -g(n)m(ull)f(terminator)227 3600 y(and)31 b(returns)g(a)h(p)s(oin)m(ter) +g(n)m(ull)f(terminator)227 1322 y(and)31 b(returns)g(a)h(p)s(oin)m(ter) f(to)i(the)e(name.)45 b(Eac)m(h)32 b(subsequen)m(t)f(call,)j(indicated) -e(b)m(y)f(a)h(NULL)g(v)-5 b(alue)32 b(of)g(the)227 3713 +e(b)m(y)f(a)h(NULL)g(v)-5 b(alue)32 b(of)g(the)227 1435 y(input)f(string,)i(returns)e(the)h(next)h(name,)f(searc)m(hing)h(from) f(just)g(past)g(the)g(end)f(of)i(the)f(previous)g(name.)227 -3826 y(It)f(returns)e(NULL)h(when)g(no)g(further)f(names)h(are)h -(found.)143 4088 y Fe(char)47 b(*fits_split_names\(char)42 -b(*namelist\))0 4350 y Fj(The)30 b(follo)m(wing)i(example)f(sho)m(ws)f +1548 y(It)f(returns)e(NULL)h(when)g(no)g(further)f(names)h(are)h +(found.)143 1823 y Fe(char)47 b(*fits_split_names\(char)42 +b(*namelist\))0 2097 y Fj(The)30 b(follo)m(wing)i(example)f(sho)m(ws)f (ho)m(w)g(a)h(string)f(w)m(ould)h(b)s(e)e(split)i(in)m(to)g(3)g(names:) -191 4612 y Fe(myfile[1][bin)44 b(\(x,y\)=4],)h(file2.fits)93 -b(file3.fits)191 4725 y(^^^^^^^^^^^^^^^^^^^^^^)c(^^^^^^^^^^)k -(^^^^^^^^^^)382 4838 y(1st)47 b(name)619 b(2nd)47 b(name)190 -b(3rd)47 b(name)0 5100 y Fi(6)81 b Fj(T)-8 b(est)34 b(that)g(the)g(k)m +191 2372 y Fe(myfile[1][bin)44 b(\(x,y\)=4],)h(file2.fits)93 +b(file3.fits)191 2485 y(^^^^^^^^^^^^^^^^^^^^^^)c(^^^^^^^^^^)k +(^^^^^^^^^^)382 2598 y(1st)47 b(name)619 b(2nd)47 b(name)190 +b(3rd)47 b(name)0 2873 y Fi(6)81 b Fj(T)-8 b(est)34 b(that)g(the)g(k)m (eyw)m(ord)g(name)f(con)m(tains)i(only)e(legal)j(c)m(haracters)f -(\(A-Z,0-9,)h(h)m(yphen,)d(and)g(underscore\))227 5213 +(\(A-Z,0-9,)h(h)m(yphen,)d(and)g(underscore\))227 2986 y(or)e(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains)i(only)e -(legal)i(prin)m(table)f(ASCI)s(I)e(c)m(haracters)95 5475 +(legal)i(prin)m(table)f(ASCI)s(I)e(c)m(haracters)95 3260 y Fe(int)47 b(fits_test_keyword)c(/)48 b(fftkey)e(\(char)g(*keyname,)g -(>)h(int)g(*status\))95 5701 y(int)g(fits_test_record)d(/)j(fftrec)f -(\(char)h(*card,)f(>)h(int)g(*status\))p eop end -%%Page: 68 76 -TeXDict begin 68 75 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.68) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(68)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(7)81 b Fj(T)-8 b(est)25 -b(whether)f(the)h(curren)m(t)f(header)h(con)m(tains)g(an)m(y)g(NULL)g -(\(ASCI)s(I)e(0\))j(c)m(haracters.)40 b(These)24 b(c)m(haracters)j(are) -227 668 y(illegal)37 b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g -(undetected)g(b)m(y)f(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i -(header)227 781 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in)m -(terpreted)g(as)h(the)f(normal)g(end-of-string)h(terminator.)41 -b(This)27 b(routine)227 894 y(returns)h(the)g(p)s(osition)h(of)g(the)g +(>)h(int)g(*status\))95 3486 y(int)g(fits_test_record)d(/)j(fftrec)f +(\(char)h(*card,)f(>)h(int)g(*status\))0 3761 y Fi(7)81 +b Fj(T)-8 b(est)25 b(whether)f(the)h(curren)m(t)f(header)h(con)m(tains) +g(an)m(y)g(NULL)g(\(ASCI)s(I)e(0\))j(c)m(haracters.)40 +b(These)24 b(c)m(haracters)j(are)227 3874 y(illegal)37 +b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g(undetected)g(b)m(y)f +(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i(header)227 +3987 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in)m(terpreted) +g(as)h(the)f(normal)g(end-of-string)h(terminator.)41 +b(This)27 b(routine)227 4099 y(returns)h(the)g(p)s(osition)h(of)g(the)g (\014rst)f(n)m(ull)g(c)m(haracter)i(in)f(the)f(header,)h(or)g(zero)g (if)g(there)g(are)g(no)f(n)m(ulls.)40 b(F)-8 b(or)227 -1007 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m +4212 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m (ould)f(indicate)h(that)g(the)f(\014rst)f(NULL)h(is)g(lo)s(cated)h(in)f -(the)g(30th)227 1120 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m +(the)g(30th)227 4325 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m (ord)h(in)f(the)h(header)f(\(recall)i(that)f(eac)m(h)h(header)e(record) -h(is)f(80)h(c)m(haracters)227 1233 y(long\).)45 b(Note)33 +h(is)f(80)h(c)m(haracters)227 4438 y(long\).)45 b(Note)33 b(that)f(this)g(is)f(one)h(of)g(the)g(few)f(CFITSIO)f(routines)h(in)h (whic)m(h)f(the)h(returned)e(v)-5 b(alue)32 b(is)g(not)227 -1346 y(necessarily)g(equal)e(to)i(the)e(status)h(v)-5 -b(alue\).)95 1613 y Fe(int)47 b(fits_null_check)d(/)j(ffnchk)g(\(char)f -(*card,)g(>)h(int)g(*status\))0 1881 y Fi(8)81 b Fj(P)m(arse)25 +4551 y(necessarily)g(equal)e(to)i(the)e(status)h(v)-5 +b(alue\).)95 4826 y Fe(int)47 b(fits_null_check)d(/)j(ffnchk)g(\(char)f +(*card,)g(>)h(int)g(*status\))0 5100 y Fi(8)81 b Fj(P)m(arse)25 b(a)g(header)g(k)m(eyw)m(ord)g(record)g(and)f(return)g(the)h(name)g(of) g(the)g(k)m(eyw)m(ord,)i(and)d(the)h(length)h(of)f(the)g(name.)227 -1993 y(The)34 b(k)m(eyw)m(ord)h(name)f(normally)h(o)s(ccupies)f(the)h +5213 y(The)34 b(k)m(eyw)m(ord)h(name)f(normally)h(o)s(ccupies)f(the)h (\014rst)e(8)i(c)m(haracters)g(of)g(the)f(record,)i(except)f(under)e -(the)227 2106 y(HIERAR)m(CH)e(con)m(v)m(en)m(tion)h(where)e(the)h(name) +(the)227 5326 y(HIERAR)m(CH)e(con)m(v)m(en)m(tion)h(where)e(the)h(name) f(can)h(b)s(e)f(up)f(to)i(70)g(c)m(haracters)h(in)e(length.)95 -2374 y Fe(int)47 b(fits_get_keyname)d(/)j(ffgknm)286 -2487 y(\(char)g(*card,)f(>)h(char)g(*keyname,)e(int)i(*keylength,)e -(int)i(*status\))0 2754 y Fi(9)81 b Fj(P)m(arse)29 b(a)h(header)f(k)m -(eyw)m(ord)h(record,)f(returning)g(the)g(v)-5 b(alue)30 -b(\(as)g(a)f(literal)i(c)m(haracter)g(string\))e(and)g(commen)m(t)227 -2867 y(strings.)40 b(If)27 b(the)g(k)m(eyw)m(ord)h(has)f(no)g(v)-5 -b(alue)28 b(\(columns)f(9-10)i(not)f(equal)f(to)h('=)g('\),)g(then)f(a) -h(n)m(ull)f(v)-5 b(alue)28 b(string)227 2980 y(is)j(returned)e(and)h -(the)g(commen)m(t)i(string)e(is)g(set)h(equal)g(to)g(column)f(9)h(-)g -(80)g(of)g(the)f(input)g(string.)95 3247 y Fe(int)47 -b(fits_parse_value)d(/)j(ffpsvc)286 3360 y(\(char)g(*card,)f(>)h(char)g -(*value,)f(char)g(*comment,)g(int)h(*status\))0 3628 -y Fi(10)f Fj(Construct)40 b(a)g(prop)s(erly)f(formated)i(80-c)m -(haracter)i(header)d(k)m(eyw)m(ord)g(record)g(from)g(the)g(input)f(k)m -(eyw)m(ord)227 3741 y(name,)25 b(k)m(eyw)m(ord)f(v)-5 +5601 y Fe(int)47 b(fits_get_keyname)d(/)j(ffgknm)286 +5714 y(\(char)g(*card,)f(>)h(char)g(*keyname,)e(int)i(*keylength,)e +(int)i(*status\))p eop end +%%Page: 69 77 +TeXDict begin 69 76 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(69)0 555 y Fi(9)81 b Fj(P)m(arse)29 +b(a)h(header)f(k)m(eyw)m(ord)h(record,)f(returning)g(the)g(v)-5 +b(alue)30 b(\(as)g(a)f(literal)i(c)m(haracter)g(string\))e(and)g +(commen)m(t)227 668 y(strings.)40 b(If)27 b(the)g(k)m(eyw)m(ord)h(has)f +(no)g(v)-5 b(alue)28 b(\(columns)f(9-10)i(not)f(equal)f(to)h('=)g('\),) +g(then)f(a)h(n)m(ull)f(v)-5 b(alue)28 b(string)227 781 +y(is)j(returned)e(and)h(the)g(commen)m(t)i(string)e(is)g(set)h(equal)g +(to)g(column)f(9)h(-)g(80)g(of)g(the)f(input)g(string.)95 +1034 y Fe(int)47 b(fits_parse_value)d(/)j(ffpsvc)286 +1147 y(\(char)g(*card,)f(>)h(char)g(*value,)f(char)g(*comment,)g(int)h +(*status\))0 1401 y Fi(10)f Fj(Construct)40 b(a)g(prop)s(erly)f +(formated)i(80-c)m(haracter)i(header)d(k)m(eyw)m(ord)g(record)g(from)g +(the)g(input)f(k)m(eyw)m(ord)227 1514 y(name,)25 b(k)m(eyw)m(ord)f(v)-5 b(alue,)25 b(and)e(k)m(eyw)m(ord)h(commen)m(t)g(strings.)38 b(Hierarc)m(hical)26 b(k)m(eyw)m(ord)e(names)f(\(e.g.,)j("ESO)227 -3854 y(TELE)e(CAM"\))i(are)f(supp)s(orted.)37 b(The)25 +1627 y(TELE)e(CAM"\))i(are)f(supp)s(orted.)37 b(The)25 b(v)-5 b(alue)25 b(string)g(ma)m(y)h(con)m(tain)g(an)f(in)m(teger,)i -(\015oating)f(p)s(oin)m(t,)g(logical,)227 3967 y(or)31 +(\015oating)f(p)s(oin)m(t,)g(logical,)227 1739 y(or)31 b(quoted)f(c)m(haracter)i(string)e(\(e.g.,)j("12",)f("15.7",)h("T",)e -(or)g("'NGC)g(1313'"\).)143 4234 y Fe(int)47 b(fits_make_key)d(/)k -(ffmkky)334 4347 y(\(const)e(char)h(*keyname,)e(const)h(char)h(*value,) -f(const)g(char)h(*comment,)430 4460 y(>)g(char)g(*card,)f(int)h -(*status\))0 4727 y Fi(11)f Fj(Construct)26 b(an)h(arra)m(y)g(indexed)f +(or)g("'NGC)g(1313'"\).)143 1993 y Fe(int)47 b(fits_make_key)d(/)k +(ffmkky)334 2106 y(\(const)e(char)h(*keyname,)e(const)h(char)h(*value,) +f(const)g(char)h(*comment,)430 2219 y(>)g(char)g(*card,)f(int)h +(*status\))0 2472 y Fi(11)f Fj(Construct)26 b(an)h(arra)m(y)g(indexed)f (k)m(eyw)m(ord)h(name)f(\(R)m(OOT)g(+)h(nnn\).)38 b(This)26 -b(routine)g(app)s(ends)f(the)i(sequence)227 4840 y(n)m(um)m(b)s(er)i +b(routine)g(app)s(ends)f(the)i(sequence)227 2585 y(n)m(um)m(b)s(er)i (to)i(the)g(ro)s(ot)g(string)f(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)f -(\(e.g.,)i('NAXIS')f(+)f(2)h(=)f('NAXIS2'\))95 5108 y -Fe(int)47 b(fits_make_keyn)d(/)k(ffkeyn)286 5221 y(\(char)f(*keyroot,)e +(\(e.g.,)i('NAXIS')f(+)f(2)h(=)f('NAXIS2'\))95 2838 y +Fe(int)47 b(fits_make_keyn)d(/)k(ffkeyn)286 2951 y(\(char)f(*keyroot,)e (int)i(value,)f(>)h(char)g(*keyname,)e(int)i(*status\))0 -5488 y Fi(12)f Fj(Construct)41 b(a)h(sequence)f(k)m(eyw)m(ord)h(name)g +3205 y Fi(12)f Fj(Construct)41 b(a)h(sequence)f(k)m(eyw)m(ord)h(name)g (\(n)f(+)g(R)m(OOT\).)g(This)g(routine)g(concatenates)j(the)e(sequence) -227 5601 y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g(the)f(ro)s +227 3318 y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g(the)f(ro)s (ot)h(string)g(to)g(create)h(a)f(k)m(eyw)m(ord)g(name)g(\(e.g.,)j(1)d -(+)f('CTYP')g(=)g('1CTYP'\))p eop end -%%Page: 69 77 -TeXDict begin 69 76 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.69) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.8.)72 -b(UTILITY)30 b(R)m(OUTINES)2693 b Fj(69)95 555 y Fe(int)47 -b(fits_make_nkey)d(/)k(ffnkey)286 668 y(\(int)f(value,)f(char)h -(*keyroot,)e(>)i(char)g(*keyname,)e(int)i(*status\))0 -932 y Fi(13)f Fj(Determine)41 b(the)g(data)f(t)m(yp)s(e)h(of)f(a)h(k)m -(eyw)m(ord)f(v)-5 b(alue)41 b(string.)70 b(This)39 b(routine)i(parses)e -(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)227 1045 y(string)28 -b(to)h(determine)f(its)g(data)h(t)m(yp)s(e.)40 b(Returns)27 -b('C',)h('L',)h('I',)f('F')h(or)f('X',)g(for)g(c)m(haracter)i(string,)e -(logical,)227 1158 y(in)m(teger,)k(\015oating)g(p)s(oin)m(t,)e(or)h -(complex,)g(resp)s(ectiv)m(ely)-8 b(.)95 1421 y Fe(int)47 -b(fits_get_keytype)d(/)j(ffdtyp)286 1534 y(\(char)g(*value,)f(>)h(char) -g(*dtype,)e(int)i(*status\))0 1798 y Fi(14)f Fj(Determine)39 -b(the)f(in)m(teger)h(data)g(t)m(yp)s(e)f(of)g(an)g(in)m(teger)h(k)m -(eyw)m(ord)f(v)-5 b(alue)39 b(string.)63 b(The)37 b(returned)g(datat)m -(yp)s(e)227 1911 y(v)-5 b(alue)36 b(is)f(the)g(minim)m(um)f(in)m(teger) -i(datat)m(yp)s(e)g(\(starting)g(from)f(top)g(of)g(the)g(follo)m(wing)i -(list)e(and)g(w)m(orking)227 2024 y(do)m(wn\))c(required)e(to)i(store)g -(the)g(in)m(teger)h(v)-5 b(alue:)191 2288 y Fe(Data)47 -b(Type)285 b(Range)239 2401 y(TSBYTE:)236 b(-128)47 b(to)g(127)239 -2514 y(TBYTE:)332 b(128)47 b(to)g(255)239 2626 y(TSHORT:)236 -b(-32768)46 b(to)i(32767)239 2739 y(TUSHORT:)236 b(32768)46 -b(to)i(65535)239 2852 y(TINT)380 b(-2147483648)45 b(to)i(2147483647)239 -2965 y(TUINT)380 b(2147483648)45 b(to)i(4294967295)239 -3078 y(TLONGLONG)140 b(-9223372036854775808)43 b(to)k -(9223372036854775807)80 3342 y Fj(The)30 b(*neg)h(parameter)g(returns)e +(+)f('CTYP')g(=)g('1CTYP'\))95 3684 y Fe(int)47 b(fits_make_nkey)d(/)k +(ffnkey)286 3797 y(\(int)f(value,)f(char)h(*keyroot,)e(>)i(char)g +(*keyname,)e(int)i(*status\))0 4050 y Fi(13)f Fj(Determine)41 +b(the)g(data)f(t)m(yp)s(e)h(of)f(a)h(k)m(eyw)m(ord)f(v)-5 +b(alue)41 b(string.)70 b(This)39 b(routine)i(parses)e(the)i(k)m(eyw)m +(ord)f(v)-5 b(alue)227 4163 y(string)28 b(to)h(determine)f(its)g(data)h +(t)m(yp)s(e.)40 b(Returns)27 b('C',)h('L',)h('I',)f('F')h(or)f('X',)g +(for)g(c)m(haracter)i(string,)e(logical,)227 4276 y(in)m(teger,)k +(\015oating)g(p)s(oin)m(t,)e(or)h(complex,)g(resp)s(ectiv)m(ely)-8 +b(.)95 4530 y Fe(int)47 b(fits_get_keytype)d(/)j(ffdtyp)286 +4642 y(\(char)g(*value,)f(>)h(char)g(*dtype,)e(int)i(*status\))0 +4896 y Fi(14)f Fj(Determine)39 b(the)f(in)m(teger)h(data)g(t)m(yp)s(e)f +(of)g(an)g(in)m(teger)h(k)m(eyw)m(ord)f(v)-5 b(alue)39 +b(string.)63 b(The)37 b(returned)g(datat)m(yp)s(e)227 +5009 y(v)-5 b(alue)36 b(is)f(the)g(minim)m(um)f(in)m(teger)i(datat)m +(yp)s(e)g(\(starting)g(from)f(top)g(of)g(the)g(follo)m(wing)i(list)e +(and)g(w)m(orking)227 5122 y(do)m(wn\))c(required)e(to)i(store)g(the)g +(in)m(teger)h(v)-5 b(alue:)191 5375 y Fe(Data)47 b(Type)285 +b(Range)239 5488 y(TSBYTE:)236 b(-128)47 b(to)g(127)239 +5601 y(TBYTE:)332 b(128)47 b(to)g(255)239 5714 y(TSHORT:)236 +b(-32768)46 b(to)i(32767)p eop end +%%Page: 70 78 +TeXDict begin 70 77 bop 0 299 a Fj(70)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)239 555 y Fe(TUSHORT:)236 b(32768)46 b(to)i(65535)239 +668 y(TINT)380 b(-2147483648)45 b(to)i(2147483647)239 +781 y(TUINT)380 b(2147483648)45 b(to)i(4294967295)239 +894 y(TLONGLONG)140 b(-9223372036854775808)43 b(to)k +(9223372036854775807)80 1167 y Fj(The)30 b(*neg)h(parameter)g(returns)e (1)i(if)f(the)h(input)e(v)-5 b(alue)31 b(is)g(negativ)m(e)h(and)e -(returns)f(0)i(if)f(it)h(is)g(non-negativ)m(e.)95 3606 -y Fe(int)47 b(fits_get_inttype)d(/)j(ffinttyp)286 3719 +(returns)f(0)i(if)f(it)h(is)g(non-negativ)m(e.)95 1441 +y Fe(int)47 b(fits_get_inttype)d(/)j(ffinttyp)286 1554 y(\(char)g(*value,)f(>)h(int)g(*datatype,)e(int)i(*neg,)f(int)h -(*status\))0 3982 y Fi(15)f Fj(Return)35 b(the)g(class)h(of)g(an)f +(*status\))0 1827 y Fi(15)f Fj(Return)35 b(the)g(class)h(of)g(an)f (input)g(header)g(record.)56 b(The)35 b(record)g(is)g(classi\014ed)h -(in)m(to)h(one)e(of)h(the)f(follo)m(wing)227 4095 y(categories)d(\(the) +(in)m(to)h(one)e(of)h(the)f(follo)m(wing)227 1940 y(categories)d(\(the) e(class)g(v)-5 b(alues)30 b(are)f(de\014ned)f(in)h(\014tsio.h\).)41 b(Note)31 b(that)e(this)h(is)f(one)h(of)f(the)g(few)g(CFITSIO)227 -4208 y(routines)i(that)f(do)s(es)h(not)f(return)f(a)i(status)g(v)-5 -b(alue.)334 4472 y Fe(Class)94 b(Value)619 b(Keywords)95 -4585 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,) -g(EXTEND,)g(BLOCKED,)1002 4698 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002 -4811 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002 -4924 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary) -f(array)1002 5036 y(that)h(define)f(the)h(FITS)g(format.)95 -5149 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(keywords)f(used)g(in)i(the)e -(compressed)f(image)i(or)g(table)1002 5262 y(format,)f(including)f -(ZIMAGE,)h(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 5375 y(ZTILEn,)g(ZBITPIX,) -g(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 5488 y(TYP_SCAL_KEY)140 -b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 5601 -y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 5714 -y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)p eop end -%%Page: 70 78 -TeXDict begin 70 77 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.70) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(70)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(TYP_RANG_KEY)140 +2053 y(routines)i(that)f(do)s(es)h(not)f(return)f(a)i(status)g(v)-5 +b(alue.)334 2327 y Fe(Class)94 b(Value)619 b(Keywords)95 +2439 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,) +g(EXTEND,)g(BLOCKED,)1002 2552 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002 +2665 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002 +2778 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary) +f(array)1002 2891 y(that)h(define)f(the)h(FITS)g(format.)95 +3004 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(keywords)f(used)g(in)i(the)e +(compressed)f(image)i(or)g(table)1002 3117 y(format,)f(including)f +(ZIMAGE,)h(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 3230 y(ZTILEn,)g(ZBITPIX,) +g(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 3343 y(TYP_SCAL_KEY)140 +b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 3456 +y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 3569 +y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 3681 y(TYP_RANG_KEY)140 b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f -(DATAMAX)95 668 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46 -b(TUNITn)95 781 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95 -894 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f -(HDUNAME,)g(HDUVER,)h(HDULEVEL)95 1007 y(TYP_CKSUM_KEY)f(100)94 -b(CHECKSUM,)46 b(DATASUM)95 1120 y(TYP_WCS_KEY)141 b(110)94 +(DATAMAX)95 3794 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46 +b(TUNITn)95 3907 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95 +4020 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f +(HDUNAME,)g(HDUVER,)h(HDULEVEL)95 4133 y(TYP_CKSUM_KEY)f(100)94 +b(CHECKSUM,)46 b(DATASUM)95 4246 y(TYP_WCS_KEY)141 b(110)94 b(WCS)47 b(keywords)f(defined)g(in)h(the)g(the)g(WCS)f(papers,)g -(including:)1002 1233 y(CTYPEn,)g(CUNITn,)g(CRVALn,)g(CRPIXn,)g -(CROTAn,)f(CDELTn)1002 1346 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f(LATPOLEs) -1002 1458 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f(TCRVns,)h -(TCRPXn,)1002 1571 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g(TPn_ms,)f -(TCDLTn,)h(TCROTn)1002 1684 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g(jCUNns,)g -(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 1797 y(iCRPns,)g(jiCDn,)94 +(including:)1002 4359 y(CTYPEn,)g(CUNITn,)g(CRVALn,)g(CRPIXn,)g +(CROTAn,)f(CDELTn)1002 4472 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f(LATPOLEs) +1002 4585 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f(TCRVns,)h +(TCRPXn,)1002 4698 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g(TPn_ms,)f +(TCDLTn,)h(TCROTn)1002 4811 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g(jCUNns,)g +(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 4924 y(iCRPns,)g(jiCDn,)94 b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002 -1910 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95 -2023 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f -(RADECSYS,)g(RADESYSs,)g(DATE-OBS)95 2136 y(TYP_COMM_KEY)140 +5036 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95 +5149 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f +(RADECSYS,)g(RADESYSs,)g(DATE-OBS)95 5262 y(TYP_COMM_KEY)140 b(130)47 b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 -2249 y(TYP_CONT_KEY)140 b(140)47 b(CONTINUE)95 2362 y(TYP_USER_KEY)140 -b(150)47 b(all)g(other)g(keywords)95 2588 y(int)g(fits_get_keyclass)c -(/)48 b(ffgkcl)e(\(char)g(*card\))0 2839 y Fi(16)g Fj(P)m(arse)28 +5375 y(TYP_CONT_KEY)140 b(140)47 b(CONTINUE)95 5488 y(TYP_USER_KEY)140 +b(150)47 b(all)g(other)g(keywords)95 5714 y(int)g(fits_get_keyclass)c +(/)48 b(ffgkcl)e(\(char)g(*card\))p eop end +%%Page: 71 79 +TeXDict begin 71 78 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(71)0 555 y Fi(16)46 b Fj(P)m(arse)28 b(the)g('TF)m(ORM')g(binary)f(table)h(column)g(format)f(string.)40 b(This)27 b(routine)g(parses)g(the)h(input)f(TF)m(ORM)227 -2952 y(c)m(haracter)38 b(string)d(and)g(returns)g(the)g(in)m(teger)i +668 y(c)m(haracter)38 b(string)d(and)g(returns)g(the)g(in)m(teger)i (data)g(t)m(yp)s(e)f(co)s(de,)h(the)f(rep)s(eat)g(coun)m(t)g(of)g(the)f -(\014eld,)i(and,)227 3065 y(in)e(the)f(case)i(of)f(c)m(haracter)h +(\014eld,)i(and,)227 781 y(in)e(the)f(case)i(of)f(c)m(haracter)h (string)f(\014elds,)g(the)g(length)g(of)g(the)g(unit)f(string.)54 -b(See)34 b(App)s(endix)f(B)i(for)g(the)227 3178 y(allo)m(w)m(ed)41 +b(See)34 b(App)s(endix)f(B)i(for)g(the)227 894 y(allo)m(w)m(ed)41 b(v)-5 b(alues)38 b(for)h(the)f(returned)g(t)m(yp)s(eco)s(de)h (parameter.)65 b(A)39 b(n)m(ull)f(p)s(oin)m(ter)h(ma)m(y)g(b)s(e)f(giv) -m(en)h(for)g(an)m(y)227 3291 y(output)30 b(parameters)h(that)g(are)g -(not)f(needed.)143 3543 y Fe(int)47 b(fits_binary_tform)c(/)48 -b(ffbnfm)334 3656 y(\(char)e(*tform,)g(>)i(int)f(*typecode,)e(long)h -(*repeat,)g(long)g(*width,)382 3768 y(int)h(*status\))143 -3994 y(int)g(fits_binary_tformll)c(/)k(ffbnfmll)334 4107 +m(en)h(for)g(an)m(y)227 1007 y(output)30 b(parameters)h(that)g(are)g +(not)f(needed.)143 1264 y Fe(int)47 b(fits_binary_tform)c(/)48 +b(ffbnfm)334 1377 y(\(char)e(*tform,)g(>)i(int)f(*typecode,)e(long)h +(*repeat,)g(long)g(*width,)382 1490 y(int)h(*status\))143 +1716 y(int)g(fits_binary_tformll)c(/)k(ffbnfmll)334 1829 y(\(char)f(*tform,)g(>)i(int)f(*typecode,)e(LONGLONG)g(*repeat,)h(long) -g(*width,)382 4220 y(int)h(*status\))0 4472 y Fi(17)f +g(*width,)382 1942 y(int)h(*status\))0 2199 y Fi(17)f Fj(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5 b(alue)37 b(that)h(de\014nes)e(the)h(column)g(format)h(in)e(an)h(ASCI)s -(I)f(table.)62 b(This)227 4585 y(routine)29 b(parses)g(the)g(input)f +(I)f(table.)62 b(This)227 2312 y(routine)29 b(parses)g(the)g(input)f (TF)m(ORM)h(c)m(haracter)h(string)f(and)g(returns)e(the)i(data)h(t)m -(yp)s(e)f(co)s(de,)h(the)f(width)227 4698 y(of)f(the)f(column,)h(and)f +(yp)s(e)f(co)s(de,)h(the)f(width)227 2425 y(of)f(the)f(column,)h(and)f (\(if)h(it)g(is)f(a)h(\015oating)g(p)s(oin)m(t)g(column\))f(the)h(n)m (um)m(b)s(er)e(of)h(decimal)i(places)f(to)g(the)f(righ)m(t)227 -4811 y(of)39 b(the)f(decimal)h(p)s(oin)m(t.)65 b(The)38 +2538 y(of)39 b(the)f(decimal)h(p)s(oin)m(t.)65 b(The)38 b(returned)f(data)i(t)m(yp)s(e)f(co)s(des)g(are)h(the)g(same)f(as)h -(for)f(the)g(binary)g(table,)227 4924 y(with)26 b(the)h(follo)m(wing)h +(for)f(the)g(binary)g(table,)227 2651 y(with)26 b(the)h(follo)m(wing)h (additional)f(rules:)38 b(in)m(teger)28 b(columns)e(that)h(are)f(b)s (et)m(w)m(een)h(1)g(and)f(4)g(c)m(haracters)i(wide)227 -5036 y(are)i(de\014ned)e(to)j(b)s(e)d(short)i(in)m(tegers)g(\(co)s(de)g +2764 y(are)i(de\014ned)e(to)j(b)s(e)d(short)i(in)m(tegers)g(\(co)s(de)g (=)g(TSHOR)-8 b(T\).)29 b(Wider)g(in)m(teger)i(columns)e(are)h -(de\014ned)e(to)j(b)s(e)227 5149 y(regular)39 b(in)m(tegers)g(\(co)s +(de\014ned)e(to)j(b)s(e)227 2877 y(regular)39 b(in)m(tegers)g(\(co)s (de)g(=)f(TLONG\).)h(Similarly)-8 b(,)41 b(Fixed)e(decimal)g(p)s(oin)m -(t)f(columns)g(\(with)h(TF)m(ORM)227 5262 y(=)c('Fw.d'\))g(are)h +(t)f(columns)g(\(with)h(TF)m(ORM)227 2990 y(=)c('Fw.d'\))g(are)h (de\014ned)d(to)j(b)s(e)e(single)i(precision)f(reals)h(\(co)s(de)f(=)g (TFLO)m(A)-8 b(T\))35 b(if)g(w)g(is)g(b)s(et)m(w)m(een)g(1)h(and)227 -5375 y(7)42 b(c)m(haracters)h(wide,)h(inclusiv)m(e.)75 +3103 y(7)42 b(c)m(haracters)h(wide,)h(inclusiv)m(e.)75 b(Wider)41 b('F')h(columns)f(will)h(return)e(a)i(double)f(precision)h -(data)g(co)s(de)227 5488 y(\(=)32 b(TDOUBLE\).)h('Ew.d')f(format)g +(data)g(co)s(de)227 3216 y(\(=)32 b(TDOUBLE\).)h('Ew.d')f(format)g (columns)g(will)g(ha)m(v)m(e)i(dataco)s(de)f(=)e(TFLO)m(A)-8 -b(T,)33 b(and)e('Dw.d')i(format)227 5601 y(columns)45 +b(T,)33 b(and)e('Dw.d')i(format)227 3329 y(columns)45 b(will)h(ha)m(v)m(e)h(dataco)s(de)f(=)f(TDOUBLE.)g(A)h(n)m(ull)f(p)s (oin)m(ter)h(ma)m(y)f(b)s(e)g(giv)m(en)i(for)e(an)m(y)g(output)227 -5714 y(parameters)31 b(that)g(are)g(not)f(needed.)p eop -end -%%Page: 71 79 -TeXDict begin 71 78 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.71) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.8.)72 -b(UTILITY)30 b(R)m(OUTINES)2693 b Fj(71)95 555 y Fe(int)47 -b(fits_ascii_tform)d(/)j(ffasfm)286 668 y(\(char)g(*tform,)f(>)h(int)g -(*typecode,)e(long)i(*width,)e(int)i(*decimals,)334 781 -y(int)g(*status\))0 1003 y Fi(18)f Fj(Calculate)32 b(the)f(starting)g -(column)g(p)s(ositions)f(and)g(total)i(ASCI)s(I)d(table)j(width)d -(based)i(on)f(the)h(input)e(arra)m(y)227 1116 y(of)e(ASCI)s(I)e(table)i -(TF)m(ORM)g(v)-5 b(alues.)40 b(The)26 b(SP)-8 b(A)m(CE)27 -b(input)e(parameter)i(de\014nes)f(ho)m(w)h(man)m(y)f(blank)h(spaces)227 -1229 y(to)40 b(lea)m(v)m(e)i(b)s(et)m(w)m(een)e(eac)m(h)g(column)g -(\(it)g(is)f(recommended)g(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m -(een)g(columns)f(for)227 1342 y(b)s(etter)31 b(h)m(uman)e(readabilit)m -(y\).)95 1564 y Fe(int)47 b(fits_get_tbcol)d(/)k(ffgabc)286 -1676 y(\(int)f(tfields,)f(char)g(**tform,)g(int)h(space,)f(>)h(long)g -(*rowlen,)334 1789 y(long)g(*tbcol,)f(int)g(*status\))0 -2011 y Fi(19)g Fj(P)m(arse)27 b(a)g(template)h(header)e(record)g(and)g -(return)g(a)g(formatted)h(80-c)m(haracter)j(string)c(suitable)h(for)f -(app)s(end-)227 2124 y(ing)40 b(to)f(\(or)h(deleting)g(from\))f(a)g -(FITS)g(header)g(\014le.)67 b(This)38 b(routine)h(is)g(useful)g(for)f -(parsing)h(lines)g(from)227 2237 y(an)33 b(ASCI)s(I)f(template)i -(\014le)f(and)g(reformatting)h(them)f(in)m(to)h(legal)h(FITS)d(header)h -(records.)49 b(The)32 b(format-)227 2350 y(ted)i(string)g(ma)m(y)g -(then)f(b)s(e)g(passed)h(to)g(the)g(\014ts)p 1880 2350 -28 4 v 32 w(write)p 2114 2350 V 33 w(record,)h(\013mcrd,)f(or)g(\014ts) -p 3007 2350 V 32 w(delete)p 3270 2350 V 34 w(k)m(ey)h(routines)e(to)227 -2463 y(app)s(end)c(or)h(mo)s(dify)g(a)h(FITS)e(header)h(record.)95 -2685 y Fe(int)47 b(fits_parse_template)c(/)k(ffgthd)286 -2798 y(\(char)g(*templt,)e(>)j(char)e(*card,)g(int)h(*keytype,)f(int)h -(*status\))0 3020 y Fj(The)31 b(input)g(templt)h(c)m(haracter)h(string) -f(generally)h(should)d(con)m(tain)j(3)f(tok)m(ens:)44 -b(\(1\))33 b(the)f(KEYNAME,)g(\(2\))h(the)0 3133 y(V)-10 +3441 y(parameters)31 b(that)g(are)g(not)f(needed.)95 +3699 y Fe(int)47 b(fits_ascii_tform)d(/)j(ffasfm)286 +3812 y(\(char)g(*tform,)f(>)h(int)g(*typecode,)e(long)i(*width,)e(int)i +(*decimals,)334 3925 y(int)g(*status\))0 4183 y Fi(18)f +Fj(Calculate)32 b(the)f(starting)g(column)g(p)s(ositions)f(and)g(total) +i(ASCI)s(I)d(table)j(width)d(based)i(on)f(the)h(input)e(arra)m(y)227 +4295 y(of)e(ASCI)s(I)e(table)i(TF)m(ORM)g(v)-5 b(alues.)40 +b(The)26 b(SP)-8 b(A)m(CE)27 b(input)e(parameter)i(de\014nes)f(ho)m(w)h +(man)m(y)f(blank)h(spaces)227 4408 y(to)40 b(lea)m(v)m(e)i(b)s(et)m(w)m +(een)e(eac)m(h)g(column)g(\(it)g(is)f(recommended)g(to)h(ha)m(v)m(e)h +(one)e(space)h(b)s(et)m(w)m(een)g(columns)f(for)227 4521 +y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).)95 4779 +y Fe(int)47 b(fits_get_tbcol)d(/)k(ffgabc)286 4892 y(\(int)f(tfields,)f +(char)g(**tform,)g(int)h(space,)f(>)h(long)g(*rowlen,)334 +5005 y(long)g(*tbcol,)f(int)g(*status\))0 5262 y Fi(19)g +Fj(P)m(arse)27 b(a)g(template)h(header)e(record)g(and)g(return)g(a)g +(formatted)h(80-c)m(haracter)j(string)c(suitable)h(for)f(app)s(end-)227 +5375 y(ing)40 b(to)f(\(or)h(deleting)g(from\))f(a)g(FITS)g(header)g +(\014le.)67 b(This)38 b(routine)h(is)g(useful)g(for)f(parsing)h(lines)g +(from)227 5488 y(an)33 b(ASCI)s(I)f(template)i(\014le)f(and)g +(reformatting)h(them)f(in)m(to)h(legal)h(FITS)d(header)h(records.)49 +b(The)32 b(format-)227 5601 y(ted)i(string)g(ma)m(y)g(then)f(b)s(e)g +(passed)h(to)g(the)g(\014ts)p 1880 5601 28 4 v 32 w(write)p +2114 5601 V 33 w(record,)h(\013mcrd,)f(or)g(\014ts)p +3007 5601 V 32 w(delete)p 3270 5601 V 34 w(k)m(ey)h(routines)e(to)227 +5714 y(app)s(end)c(or)h(mo)s(dify)g(a)h(FITS)e(header)h(record.)p +eop end +%%Page: 72 80 +TeXDict begin 72 79 bop 0 299 a Fj(72)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_parse_template)c(/)k(ffgthd)286 +668 y(\(char)g(*templt,)e(>)j(char)e(*card,)g(int)h(*keytype,)f(int)h +(*status\))0 932 y Fj(The)31 b(input)g(templt)h(c)m(haracter)h(string)f +(generally)h(should)d(con)m(tain)j(3)f(tok)m(ens:)44 +b(\(1\))33 b(the)f(KEYNAME,)g(\(2\))h(the)0 1045 y(V)-10 b(ALUE,)37 b(and)f(\(3\))i(the)f(COMMENT)g(string.)59 b(The)37 b(TEMPLA)-8 b(TE)36 b(string)h(m)m(ust)f(adhere)h(to)h(the)e -(follo)m(wing)0 3245 y(format:)0 3467 y Fi(-)80 b Fj(The)32 +(follo)m(wing)0 1158 y(format:)0 1421 y Fi(-)80 b Fj(The)32 b(KEYNAME)h(tok)m(en)h(m)m(ust)f(b)s(egin)f(in)h(columns)f(1-8)i(and)e (b)s(e)g(a)h(maxim)m(um)g(of)g(8)g(c)m(haracters)h(long.)49 -b(A)227 3580 y(legal)30 b(FITS)e(k)m(eyw)m(ord)h(name)f(ma)m(y)h(only)f +b(A)227 1534 y(legal)30 b(FITS)e(k)m(eyw)m(ord)h(name)f(ma)m(y)h(only)f (con)m(tain)i(the)f(c)m(haracters)g(A-Z,)g(0-9,)h(and)e('-')h(\(min)m -(us)f(sign\))h(and)227 3693 y(underscore.)40 b(This)27 +(us)f(sign\))h(and)227 1647 y(underscore.)40 b(This)27 b(routine)i(will)g(automatically)i(con)m(v)m(ert)f(an)m(y)f(lo)m(w)m (ercase)i(c)m(haracters)f(to)g(upp)s(ercase)d(in)227 -3806 y(the)k(output)f(string.)42 b(If)30 b(the)h(\014rst)f(8)h(c)m +1760 y(the)k(output)f(string.)42 b(If)30 b(the)h(\014rst)f(8)h(c)m (haracters)h(of)f(the)g(template)h(line)f(are)g(blank)f(then)h(the)g -(remainder)227 3919 y(of)g(the)f(line)h(is)g(considered)f(to)h(b)s(e)f +(remainder)227 1873 y(of)g(the)f(line)h(is)g(considered)f(to)h(b)s(e)f (a)g(FITS)g(commen)m(t)h(\(with)g(a)g(blank)f(k)m(eyw)m(ord)g(name\).)0 -4141 y Fi(-)80 b Fj(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s +2137 y Fi(-)80 b Fj(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s (e)h(separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g -(more)g(spaces)g(and/or)227 4254 y(an)g('=')g(c)m(haracter.)41 +(more)g(spaces)g(and/or)227 2250 y(an)g('=')g(c)m(haracter.)41 b(The)25 b(data)h(t)m(yp)s(e)g(of)g(the)g(V)-10 b(ALUE)26 b(tok)m(en)g(\(n)m(umeric,)h(logical,)j(or)c(c)m(haracter)h(string\))f -(is)227 4367 y(automatically)35 b(determined)c(and)h(the)g(output)f +(is)227 2363 y(automatically)35 b(determined)c(and)h(the)g(output)f (CARD)h(string)g(is)g(formatted)g(accordingly)-8 b(.)47 -b(The)31 b(v)-5 b(alue)227 4480 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f +b(The)31 b(v)-5 b(alue)227 2476 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f (forced)g(to)i(b)s(e)e(in)m(terpreted)g(as)h(a)g(string)g(\(e.g.)48 b(if)33 b(it)g(is)f(a)h(string)g(of)f(n)m(umeric)h(digits\))g(b)m(y)227 -4593 y(enclosing)g(it)f(in)f(single)h(quotes.)45 b(If)31 +2588 y(enclosing)g(it)f(in)f(single)h(quotes.)45 b(If)31 b(the)h(v)-5 b(alue)32 b(tok)m(en)g(is)g(a)g(c)m(haracter)h(string)e -(that)i(con)m(tains)f(1)g(or)g(more)227 4706 y(em)m(b)s(edded)39 +(that)i(con)m(tains)f(1)g(or)g(more)227 2701 y(em)m(b)s(edded)39 b(blank)g(space)h(c)m(haracters)h(or)e(slash)h(\('/'\))h(c)m(haracters) g(then)e(the)g(en)m(tire)i(c)m(haracter)g(string)227 -4818 y(m)m(ust)31 b(b)s(e)e(enclosed)i(in)f(single)h(quotes.)0 -5040 y Fi(-)80 b Fj(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but) +2814 y(m)m(ust)31 b(b)s(e)e(enclosed)i(in)f(single)h(quotes.)0 +3078 y Fi(-)80 b Fj(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but) e(if)g(presen)m(t)g(m)m(ust)g(b)s(e)g(separated)g(from)g(the)h(V)-10 -b(ALUE)28 b(tok)m(en)h(b)m(y)227 5153 y(a)i(blank)f(space)h(or)f(a)h -('/')g(c)m(haracter.)0 5375 y Fi(-)80 b Fj(One)29 b(exception)h(to)f +b(ALUE)28 b(tok)m(en)h(b)m(y)227 3191 y(a)i(blank)f(space)h(or)f(a)h +('/')g(c)m(haracter.)0 3455 y Fi(-)80 b Fj(One)29 b(exception)h(to)f (the)g(ab)s(o)m(v)m(e)i(rules)d(is)h(that)g(if)g(the)g(\014rst)g (non-blank)f(c)m(haracter)i(in)f(the)g(\014rst)f(8)h(c)m(haracters)227 -5488 y(of)24 b(the)h(template)g(string)f(is)g(a)g(min)m(us)g(sign)g +3568 y(of)24 b(the)h(template)g(string)f(is)g(a)g(min)m(us)g(sign)g (\('-'\))h(follo)m(w)m(ed)h(b)m(y)e(a)g(single)h(tok)m(en,)h(or)e(a)h -(single)f(tok)m(en)h(follo)m(w)m(ed)227 5601 y(b)m(y)k(an)g(equal)h +(single)f(tok)m(en)h(follo)m(w)m(ed)227 3681 y(b)m(y)k(an)g(equal)h (sign,)g(then)f(it)g(is)h(in)m(terpreted)f(as)h(the)f(name)g(of)h(a)f (k)m(eyw)m(ord)h(whic)m(h)f(is)g(to)h(b)s(e)e(deleted)i(from)227 -5714 y(the)h(FITS)e(header.)p eop end -%%Page: 72 80 -TeXDict begin 72 79 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.72) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(72)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(-)80 b Fj(The)32 +3793 y(the)h(FITS)e(header.)0 4057 y Fi(-)80 b Fj(The)32 b(second)g(exception)h(is)f(that)h(if)f(the)g(template)h(string)f (starts)h(with)e(a)i(min)m(us)e(sign)h(and)f(is)h(follo)m(w)m(ed)i(b)m -(y)227 668 y(2)f(tok)m(ens)g(\(without)g(an)f(equals)h(sign)g(b)s(et)m +(y)227 4170 y(2)f(tok)m(ens)g(\(without)g(an)f(equals)h(sign)g(b)s(et)m (w)m(een)g(them\))f(then)g(the)h(second)f(tok)m(en)i(is)e(in)m -(terpreted)h(as)g(the)227 781 y(new)f(name)h(for)f(the)h(k)m(eyw)m(ord) -g(sp)s(eci\014ed)f(b)m(y)h(\014rst)f(tok)m(en.)48 b(In)32 -b(this)g(case)i(the)f(old)g(k)m(eyw)m(ord)g(name)f(\(\014rst)227 -894 y(tok)m(en\))c(is)e(returned)e(in)i(c)m(haracters)h(1-8)g(of)g(the) -f(returned)e(CARD)j(string,)g(and)e(the)h(new)f(k)m(eyw)m(ord)i(name) -227 1007 y(\(the)35 b(second)e(tok)m(en\))j(is)e(returned)e(in)i(c)m -(haracters)h(41-48)h(of)e(the)g(returned)e(CARD)i(string.)51 -b(These)34 b(old)227 1120 y(and)i(new)f(names)h(ma)m(y)h(then)f(b)s(e)f +(terpreted)h(as)g(the)227 4283 y(new)f(name)h(for)f(the)h(k)m(eyw)m +(ord)g(sp)s(eci\014ed)f(b)m(y)h(\014rst)f(tok)m(en.)48 +b(In)32 b(this)g(case)i(the)f(old)g(k)m(eyw)m(ord)g(name)f(\(\014rst) +227 4396 y(tok)m(en\))c(is)e(returned)e(in)i(c)m(haracters)h(1-8)g(of)g +(the)f(returned)e(CARD)j(string,)g(and)e(the)h(new)f(k)m(eyw)m(ord)i +(name)227 4509 y(\(the)35 b(second)e(tok)m(en\))j(is)e(returned)e(in)i +(c)m(haracters)h(41-48)h(of)e(the)g(returned)e(CARD)i(string.)51 +b(These)34 b(old)227 4622 y(and)i(new)f(names)h(ma)m(y)h(then)f(b)s(e)f (passed)g(to)i(the)f(\013mnam)g(routine)g(whic)m(h)g(will)g(c)m(hange)h -(the)f(k)m(eyw)m(ord)227 1233 y(name.)0 1497 y(The)30 +(the)f(k)m(eyw)m(ord)227 4735 y(name.)0 4998 y(The)30 b(k)m(eyt)m(yp)s(e)h(output)f(parameter)h(indicates)g(ho)m(w)g(the)f (returned)g(CARD)g(string)g(should)g(b)s(e)f(in)m(terpreted:)382 -1761 y Fe(keytype)857 b(interpretation)382 1873 y(-------)475 +5262 y Fe(keytype)857 b(interpretation)382 5375 y(-------)475 b(-------------------------)o(----)o(---)o(----)o(----)o(---)o(----)o -(--)525 1986 y(-2)572 b(Rename)46 b(the)h(keyword)f(with)h(name)f(=)i -(the)f(first)f(8)h(characters)e(of)j(CARD)1193 2099 y(to)f(the)g(new)g -(name)g(given)f(in)h(characters)e(41)j(-)f(48)g(of)g(CARD.)525 -2325 y(-1)572 b(delete)46 b(the)h(keyword)f(with)h(this)f(name)h(from)g -(the)f(FITS)h(header.)573 2551 y(0)572 b(append)46 b(the)h(CARD)g -(string)f(to)h(the)g(FITS)g(header)f(if)h(the)1193 2664 -y(keyword)f(does)h(not)g(already)e(exist,)h(otherwise)g(update)1193 -2777 y(the)h(keyword)f(value)g(and/or)g(comment)g(field)h(if)g(is)g -(already)f(exists.)573 3003 y(1)572 b(This)47 b(is)g(a)g(HISTORY)f(or)h -(COMMENT)f(keyword;)g(append)g(it)h(to)g(the)g(header)573 -3228 y(2)572 b(END)47 b(record;)f(do)h(not)g(explicitly)e(write)h(it)i -(to)f(the)g(FITS)f(file.)0 3492 y Fj(EXAMPLES:)30 b(The)g(follo)m(wing) -i(lines)e(illustrate)i(v)-5 b(alid)31 b(input)e(template)j(strings:)286 -3756 y Fe(INTVAL)46 b(7)i(/)f(This)g(is)g(an)g(integer)f(keyword)286 -3869 y(RVAL)524 b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f -(point)g(keyword)286 3982 y(EVAL=-12.45E-03)92 b(/)47 +(--)525 5488 y(-2)572 b(Rename)46 b(the)h(keyword)f(with)h(name)f(=)i +(the)f(first)f(8)h(characters)e(of)j(CARD)1193 5601 y(to)f(the)g(new)g +(name)g(given)f(in)h(characters)e(41)j(-)f(48)g(of)g(CARD.)p +eop end +%%Page: 73 81 +TeXDict begin 73 80 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(73)525 555 y Fe(-1)572 b(delete)46 +b(the)h(keyword)f(with)h(this)f(name)h(from)g(the)f(FITS)h(header.)573 +781 y(0)572 b(append)46 b(the)h(CARD)g(string)f(to)h(the)g(FITS)g +(header)f(if)h(the)1193 894 y(keyword)f(does)h(not)g(already)e(exist,)h +(otherwise)g(update)1193 1007 y(the)h(keyword)f(value)g(and/or)g +(comment)g(field)h(if)g(is)g(already)f(exists.)573 1233 +y(1)572 b(This)47 b(is)g(a)g(HISTORY)f(or)h(COMMENT)f(keyword;)g +(append)g(it)h(to)g(the)g(header)573 1458 y(2)572 b(END)47 +b(record;)f(do)h(not)g(explicitly)e(write)h(it)i(to)f(the)g(FITS)f +(file.)0 1708 y Fj(EXAMPLES:)30 b(The)g(follo)m(wing)i(lines)e +(illustrate)i(v)-5 b(alid)31 b(input)e(template)j(strings:)286 +1958 y Fe(INTVAL)46 b(7)i(/)f(This)g(is)g(an)g(integer)f(keyword)286 +2071 y(RVAL)524 b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f +(point)g(keyword)286 2184 y(EVAL=-12.45E-03)92 b(/)47 b(This)g(is)g(a)g(floating)f(point)g(keyword)g(in)h(exponential)e -(notation)286 4095 y(lval)i(F)g(/)h(This)f(is)g(a)g(boolean)f(keyword) -859 4208 y(This)h(is)g(a)g(comment)f(keyword)g(with)h(a)g(blank)f -(keyword)g(name)286 4321 y(SVAL1)h(=)g('Hello)f(world')142 -b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 4434 +(notation)286 2296 y(lval)i(F)g(/)h(This)f(is)g(a)g(boolean)f(keyword) +859 2409 y(This)h(is)g(a)g(comment)f(keyword)g(with)h(a)g(blank)f +(keyword)g(name)286 2522 y(SVAL1)h(=)g('Hello)f(world')142 +b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 2635 y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword)286 -4547 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e -(keyword)g(with)g(the)h(value)g('123+)189 b(')286 4660 +2748 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e +(keyword)g(with)g(the)h(value)g('123+)189 b(')286 2861 y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g -(keyword)286 4772 y(-)h(DATE)286 4885 y(#)g(the)f(following)e(template) +(keyword)286 2974 y(-)h(DATE)286 3087 y(#)g(the)f(following)e(template) h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286 -4998 y(-)h(NAME)e(OBJECT)0 5262 y Fi(20)g Fj(T)-8 b(ranslate)32 +3200 y(-)h(NAME)e(OBJECT)0 3449 y Fi(20)g Fj(T)-8 b(ranslate)32 b(a)g(k)m(eyw)m(ord)g(name)f(in)m(to)h(a)g(new)f(name,)h(based)f(on)g (a)h(set)f(of)h(patterns.)43 b(This)31 b(routine)g(is)h(useful)227 -5375 y(for)j(translating)h(k)m(eyw)m(ords)g(in)e(cases)i(suc)m(h)f(as)h +3562 y(for)j(translating)h(k)m(eyw)m(ords)g(in)e(cases)i(suc)m(h)f(as)h (adding)e(or)h(deleting)h(columns)f(in)g(a)g(table,)j(or)d(cop)m(ying) -227 5488 y(a)41 b(column)g(from)f(one)h(table)g(to)g(another,)j(or)c +227 3675 y(a)41 b(column)g(from)f(one)h(table)g(to)g(another,)j(or)c (extracting)j(an)d(arra)m(y)h(from)f(a)h(cell)h(in)e(a)h(binary)f -(table)227 5601 y(column)31 b(in)m(to)g(an)g(image)g(extension.)42 +(table)227 3788 y(column)31 b(in)m(to)g(an)g(image)g(extension.)42 b(In)30 b(these)h(cases,)h(it)f(is)g(necessary)g(to)g(translate)h(the)f -(names)f(of)h(the)227 5714 y(k)m(eyw)m(ords)f(asso)s(ciated)i(with)d +(names)f(of)h(the)227 3901 y(k)m(eyw)m(ords)f(asso)s(ciated)i(with)d (the)h(original)h(table)g(column\(s\))f(in)m(to)g(the)g(appropriate)g -(k)m(eyw)m(ord)g(name)g(in)p eop end -%%Page: 73 81 -TeXDict begin 73 80 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.73) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.8.)72 -b(UTILITY)30 b(R)m(OUTINES)2693 b Fj(73)227 555 y(the)37 -b(\014nal)f(\014le.)58 b(F)-8 b(or)37 b(example,)i(if)d(column)h(2)f -(is)h(deleted)g(from)e(a)i(table,)i(then)d(the)h(v)-5 -b(alue)36 b(of)h('n')f(in)g(all)227 668 y(the)c(TF)m(ORMn)g(and)f -(TTYPEn)f(k)m(eyw)m(ords)i(for)g(columns)f(3)h(and)f(higher)h(m)m(ust)f -(b)s(e)g(decremen)m(ted)i(b)m(y)e(1.)227 781 y(Ev)m(en)j(more)g -(complex)h(translations)f(are)h(sometimes)f(needed)g(to)h(con)m(v)m -(ert)g(the)f(W)m(CS)g(k)m(eyw)m(ords)g(when)227 894 y(extracting)e(an)f -(image)g(out)g(of)f(a)h(table)g(column)g(cell)g(in)m(to)h(a)e(separate) -i(image)f(extension.)227 1044 y(The)g(user)f(passes)i(an)f(arra)m(y)g -(of)h(patterns)f(to)h(b)s(e)e(matc)m(hed.)44 b(Input)30 -b(pattern)h(n)m(um)m(b)s(er)f(i)i(is)f(pattern[i][0],)227 -1157 y(and)j(output)f(pattern)h(n)m(um)m(b)s(er)f(i)h(is)g -(pattern[i][1].)53 b(Keyw)m(ords)34 b(are)g(matc)m(hed)h(against)g(the) -f(input)f(pat-)227 1270 y(terns.)41 b(If)30 b(a)g(matc)m(h)i(is)e -(found)f(then)h(the)h(k)m(eyw)m(ord)g(is)f(re-written)h(according)g(to) -g(the)g(output)f(pattern.)227 1420 y(Order)41 b(is)h(imp)s(ortan)m(t.) -76 b(The)41 b(\014rst)h(matc)m(h)h(is)f(accepted.)77 -b(The)41 b(fastest)i(matc)m(h)g(will)f(b)s(e)g(made)g(when)227 -1533 y(templates)32 b(with)e(the)h(same)f(\014rst)g(c)m(haracter)i(are) -f(group)s(ed)e(together.)227 1683 y(Sev)m(eral)j(c)m(haracters)f(ha)m -(v)m(e)h(sp)s(ecial)f(meanings:)466 1933 y Fe(i,j)47 -b(-)g(single)f(digits,)g(preserved)f(in)j(output)e(template)466 -2046 y(n)h(-)h(column)e(number)g(of)h(one)g(or)g(more)g(digits,)f -(preserved)f(in)i(output)f(template)466 2159 y(m)h(-)h(generic)e -(number)g(of)h(one)g(or)g(more)g(digits,)e(preserved)h(in)h(output)f -(template)466 2271 y(a)h(-)h(coordinate)d(designator,)g(preserved)g(in) -i(output)f(template)466 2384 y(#)h(-)h(number)e(of)h(one)g(or)g(more)g -(digits)466 2497 y(?)g(-)h(any)f(character)466 2610 y(*)g(-)h(only)e +(k)m(eyw)m(ord)g(name)g(in)227 4014 y(the)37 b(\014nal)f(\014le.)58 +b(F)-8 b(or)37 b(example,)i(if)d(column)h(2)f(is)h(deleted)g(from)e(a)i +(table,)i(then)d(the)h(v)-5 b(alue)36 b(of)h('n')f(in)g(all)227 +4127 y(the)c(TF)m(ORMn)g(and)f(TTYPEn)f(k)m(eyw)m(ords)i(for)g(columns) +f(3)h(and)f(higher)h(m)m(ust)f(b)s(e)g(decremen)m(ted)i(b)m(y)e(1.)227 +4240 y(Ev)m(en)j(more)g(complex)h(translations)f(are)h(sometimes)f +(needed)g(to)h(con)m(v)m(ert)g(the)f(W)m(CS)g(k)m(eyw)m(ords)g(when)227 +4353 y(extracting)e(an)f(image)g(out)g(of)f(a)h(table)g(column)g(cell)g +(in)m(to)h(a)e(separate)i(image)f(extension.)227 4501 +y(The)g(user)f(passes)i(an)f(arra)m(y)g(of)h(patterns)f(to)h(b)s(e)e +(matc)m(hed.)44 b(Input)30 b(pattern)h(n)m(um)m(b)s(er)f(i)i(is)f +(pattern[i][0],)227 4614 y(and)j(output)f(pattern)h(n)m(um)m(b)s(er)f +(i)h(is)g(pattern[i][1].)53 b(Keyw)m(ords)34 b(are)g(matc)m(hed)h +(against)g(the)f(input)f(pat-)227 4727 y(terns.)41 b(If)30 +b(a)g(matc)m(h)i(is)e(found)f(then)h(the)h(k)m(eyw)m(ord)g(is)f +(re-written)h(according)g(to)g(the)g(output)f(pattern.)227 +4876 y(Order)41 b(is)h(imp)s(ortan)m(t.)76 b(The)41 b(\014rst)h(matc)m +(h)h(is)f(accepted.)77 b(The)41 b(fastest)i(matc)m(h)g(will)f(b)s(e)g +(made)g(when)227 4989 y(templates)32 b(with)e(the)h(same)f(\014rst)g(c) +m(haracter)i(are)f(group)s(ed)e(together.)227 5137 y(Sev)m(eral)j(c)m +(haracters)f(ha)m(v)m(e)h(sp)s(ecial)f(meanings:)466 +5375 y Fe(i,j)47 b(-)g(single)f(digits,)g(preserved)f(in)j(output)e +(template)466 5488 y(n)h(-)h(column)e(number)g(of)h(one)g(or)g(more)g +(digits,)f(preserved)f(in)i(output)f(template)466 5601 +y(m)h(-)h(generic)e(number)g(of)h(one)g(or)g(more)g(digits,)e +(preserved)h(in)h(output)f(template)466 5714 y(a)h(-)h(coordinate)d +(designator,)g(preserved)g(in)i(output)f(template)p eop +end +%%Page: 74 82 +TeXDict begin 74 81 bop 0 299 a Fj(74)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)466 555 y Fe(#)47 b(-)h(number)e(of)h(one)g(or)g(more)g +(digits)466 668 y(?)g(-)h(any)f(character)466 781 y(*)g(-)h(only)e (allowed)g(in)h(first)g(character)e(position,)g(to)j(match)e(all)657 -2723 y(keywords;)f(only)i(useful)f(as)h(last)g(pattern)e(in)j(the)f -(list)227 2973 y Fj(i,)31 b(j,)f(n,)g(and)g(m)g(are)h(returned)e(b)m(y) -i(the)f(routine.)227 3123 y(F)-8 b(or)27 b(example,)g(the)f(input)f +894 y(keywords;)f(only)i(useful)f(as)h(last)g(pattern)e(in)j(the)f +(list)227 1121 y Fj(i,)31 b(j,)f(n,)g(and)g(m)g(are)h(returned)e(b)m(y) +i(the)f(routine.)227 1268 y(F)-8 b(or)27 b(example,)g(the)f(input)f (pattern)h("iCTYPn")g(will)g(matc)m(h)h("1CTYP5")g(\(if)f(n)p -3003 3123 28 4 v 32 w(v)-5 b(alue)26 b(is)g(5\);)i(the)e(output)227 -3236 y(pattern)31 b("CTYPEi")f(will)h(b)s(e)f(re-written)h(as)f +3003 1268 28 4 v 32 w(v)-5 b(alue)26 b(is)g(5\);)i(the)e(output)227 +1381 y(pattern)31 b("CTYPEi")f(will)h(b)s(e)f(re-written)h(as)f ("CTYPE1".)42 b(Notice)32 b(that)f("i")g(is)g(preserv)m(ed.)227 -3386 y(The)f(follo)m(wing)i(output)e(patterns)g(are)h(sp)s(ecial:)227 -3536 y("-")h(-)e(do)h(not)f(cop)m(y)h(a)g(k)m(eyw)m(ord)g(that)g(matc)m -(hes)g(the)g(corresp)s(onding)e(input)h(pattern)227 3686 -y("+")h(-)g(cop)m(y)g(the)f(input)g(unc)m(hanged)227 -3836 y(The)f(inrec)h(string)g(could)g(b)s(e)f(just)g(the)h(8-c)m(har)h -(k)m(eyw)m(ord)f(name,)g(or)f(the)h(en)m(tire)h(80-c)m(har)g(header)f -(record.)227 3949 y(Characters)h(9)g(-)f(80)h(in)g(the)f(input)g -(string)g(simply)g(get)h(app)s(ended)e(to)i(the)g(translated)g(k)m(eyw) -m(ord)f(name.)227 4100 y(If)h(n)p 375 4100 V 33 w(range)g(=)g(0,)i -(then)e(only)h(k)m(eyw)m(ords)f(with)h('n')f(equal)h(to)g(n)p -2410 4100 V 32 w(v)-5 b(alue)32 b(will)g(b)s(e)f(considered)g(as)h(a)g -(pattern)227 4212 y(matc)m(h.)70 b(If)39 b(n)p 722 4212 -V 32 w(range)h(=)f(+1,)j(then)e(all)g(v)-5 b(alues)40 -b(of)g('n')f(greater)i(than)e(or)h(equal)g(to)g(n)p 3269 -4212 V 33 w(v)-5 b(alue)40 b(will)g(b)s(e)f(a)227 4325 -y(matc)m(h,)32 b(and)e(if)g(-1,)h(then)f(v)-5 b(alues)31 +1528 y(The)f(follo)m(wing)i(output)e(patterns)g(are)h(sp)s(ecial:)227 +1675 y("-")h(-)e(do)h(not)f(cop)m(y)h(a)g(k)m(eyw)m(ord)g(that)g(matc)m +(hes)g(the)g(corresp)s(onding)e(input)h(pattern)227 1822 +y("{")i(-)f(if)f(matc)m(h)h(o)s(ccurs,)f(outrec)h(will)g(ha)m(v)m(e)h +("-KEYNAME")227 1969 y("+")f(-)g(cop)m(y)g(the)f(input)g(unc)m(hanged) +227 2116 y(The)f(inrec)h(string)g(could)g(b)s(e)f(just)g(the)h(8-c)m +(har)h(k)m(eyw)m(ord)f(name,)g(or)f(the)h(en)m(tire)h(80-c)m(har)g +(header)f(record.)227 2229 y(Characters)h(9)g(-)f(80)h(in)g(the)f +(input)g(string)g(simply)g(get)h(app)s(ended)e(to)i(the)g(translated)g +(k)m(eyw)m(ord)f(name.)227 2376 y(Up)s(on)25 b(return,)g(outrec)h(will) +f(ha)m(v)m(e)i(the)e(con)m(v)m(erted)i(string,)f(starting)g(from)f(the) +g(pattern[i][1])i(pattern)f(and)227 2489 y(applying)36 +b(the)f(n)m(umerical)h(substitutions)f(as)h(describ)s(ed)e(ab)s(o)m(v)m +(e.)57 b(If)35 b(the)h(output)f(pattern)g(is)h("{")g(then)227 +2602 y(the)g(resulting)g(outrec)h(will)f(b)s(e)f("-KEYNAME",)k(whic)m +(h)d(ma)m(y)g(indicate)h(to)g(the)f(calling)h(routine)f(that)227 +2715 y(KEYNAME)31 b(is)f(to)h(b)s(e)f(deleted.)227 2862 +y(If)h(n)p 375 2862 V 33 w(range)g(=)g(0,)i(then)e(only)h(k)m(eyw)m +(ords)f(with)h('n')f(equal)h(to)g(n)p 2410 2862 V 32 +w(v)-5 b(alue)32 b(will)g(b)s(e)f(considered)g(as)h(a)g(pattern)227 +2975 y(matc)m(h.)70 b(If)39 b(n)p 722 2975 V 32 w(range)h(=)f(+1,)j +(then)e(all)g(v)-5 b(alues)40 b(of)g('n')f(greater)i(than)e(or)h(equal) +g(to)g(n)p 3269 2975 V 33 w(v)-5 b(alue)40 b(will)g(b)s(e)f(a)227 +3088 y(matc)m(h,)32 b(and)e(if)g(-1,)h(then)f(v)-5 b(alues)31 b(of)g('n')f(less)g(than)h(or)f(equal)h(to)g(n)p 2530 -4325 V 32 w(v)-5 b(alue)31 b(will)g(matc)m(h.)0 4585 -y Fe(int)47 b(fits_translate_keyword\()286 4698 y(char)g(*inrec,)380 -b(/*)47 b(I)h(-)f(input)f(string)g(*/)286 4811 y(char)h(*outrec,)332 +3088 V 32 w(v)-5 b(alue)31 b(will)g(matc)m(h.)0 3328 +y Fe(int)47 b(fits_translate_keyword\()286 3441 y(char)g(*inrec,)380 +b(/*)47 b(I)h(-)f(input)f(string)g(*/)286 3554 y(char)h(*outrec,)332 b(/*)47 b(O)h(-)f(output)f(converted)f(string,)h(or)h(*/)1241 -4924 y(/*)238 b(a)47 b(null)g(string)f(if)h(input)g(does)f(not)95 -b(*/)1241 5036 y(/*)238 b(match)46 b(any)h(of)g(the)g(patterns)f(*/)286 -5149 y(char)h(*patterns[][2],/*)c(I)48 b(-)f(pointer)f(to)h(input)f(/)i -(output)e(string)g(*/)1241 5262 y(/*)238 b(templates)45 -b(*/)286 5375 y(int)i(npat,)524 b(/*)47 b(I)h(-)f(number)f(of)h -(templates)f(passed)g(*/)286 5488 y(int)h(n_value,)380 +3667 y(/*)238 b(a)47 b(null)g(string)f(if)h(input)g(does)f(not)95 +b(*/)1241 3780 y(/*)238 b(match)46 b(any)h(of)g(the)g(patterns)f(*/)286 +3893 y(char)h(*patterns[][2],/*)c(I)48 b(-)f(pointer)f(to)h(input)f(/)i +(output)e(string)g(*/)1241 4006 y(/*)238 b(templates)45 +b(*/)286 4119 y(int)i(npat,)524 b(/*)47 b(I)h(-)f(number)f(of)h +(templates)f(passed)g(*/)286 4231 y(int)h(n_value,)380 b(/*)47 b(I)h(-)f(base)g('n')g(template)e(value)h(of)i(interest)d(*/) -286 5601 y(int)i(n_offset,)332 b(/*)47 b(I)h(-)f(offset)f(to)h(be)g -(applied)f(to)h(the)g('n')g(*/)1241 5714 y(/*)238 b(value)46 -b(in)i(the)e(output)h(string)f(*/)p eop end -%%Page: 74 82 -TeXDict begin 74 81 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.74) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(74)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)286 555 y Fe(int)47 b(n_range,)380 +286 4344 y(int)i(n_offset,)332 b(/*)47 b(I)h(-)f(offset)f(to)h(be)g +(applied)f(to)h(the)g('n')g(*/)1241 4457 y(/*)238 b(value)46 +b(in)i(the)e(output)h(string)f(*/)286 4570 y(int)h(n_range,)380 b(/*)47 b(I)h(-)f(controls)f(range)g(of)h('n')g(template)f(*/)1241 -668 y(/*)238 b(values)46 b(of)h(interest)f(\(-1,0,)g(or)h(+1\))g(*/)286 -781 y(int)g(*pat_num,)332 b(/*)47 b(O)h(-)f(matched)f(pattern)g(number) -g(\(0)h(based\))f(or)h(-1)g(*/)286 894 y(int)g(*i,)620 +4683 y(/*)238 b(values)46 b(of)h(interest)f(\(-1,0,)g(or)h(+1\))g(*/) +286 4796 y(int)g(*pat_num,)332 b(/*)47 b(O)h(-)f(matched)f(pattern)g +(number)g(\(0)h(based\))f(or)h(-1)g(*/)286 4909 y(int)g(*i,)620 b(/*)47 b(O)h(-)f(value)f(of)i(i,)f(if)g(any,)g(else)f(0)i(*/)286 -1007 y(int)f(*j,)620 b(/*)47 b(O)h(-)f(value)f(of)i(j,)f(if)g(any,)g -(else)f(0)i(*/)286 1120 y(int)f(*m,)620 b(/*)47 b(O)h(-)f(value)f(of)i -(m,)f(if)g(any,)g(else)f(0)i(*/)286 1233 y(int)f(*n,)620 +5022 y(int)f(*j,)620 b(/*)47 b(O)h(-)f(value)f(of)i(j,)f(if)g(any,)g +(else)f(0)i(*/)286 5135 y(int)f(*m,)620 b(/*)47 b(O)h(-)f(value)f(of)i +(m,)f(if)g(any,)g(else)f(0)i(*/)286 5248 y(int)f(*n,)620 b(/*)47 b(O)h(-)f(value)f(of)i(n,)f(if)g(any,)g(else)f(0)i(*/)286 -1346 y(int)f(*status\))380 b(/*)47 b(IO)g(-)h(error)e(status)g(*/)80 -1591 y Fj(Here)25 b(is)f(an)g(example)g(of)g(some)h(of)f(the)g +5361 y(int)f(*status\))380 b(/*)47 b(IO)g(-)h(error)e(status)g(*/)80 +5601 y Fj(Here)25 b(is)f(an)g(example)g(of)g(some)h(of)f(the)g (patterns)g(used)f(to)i(con)m(v)m(ert)g(the)f(k)m(eyw)m(ords)h(asso)s -(ciated)g(with)f(an)g(image)227 1704 y(in)30 b(a)h(cell)h(of)e(a)h +(ciated)g(with)f(an)g(image)227 5714 y(in)30 b(a)h(cell)h(of)e(a)h (table)g(column)f(in)m(to)i(the)e(k)m(eyw)m(ords)h(appropriate)f(for)h -(an)f(IMA)m(GE)h(extension:)191 1949 y Fe(char)47 b(*patterns[][2])c(=) -48 b({{"TSCALn",)92 b("BSCALE")i(},)h(/*)47 b(Standard)e(FITS)i -(keywords)e(*/)143 2062 y({"TZEROn",)93 b("BZERO")141 -b(},)143 2175 y({"TUNITn",)93 b("BUNIT")141 b(},)143 -2288 y({"TNULLn",)93 b("BLANK")141 b(},)143 2401 y({"TDMINn",)93 -b("DATAMIN")45 b(},)143 2514 y({"TDMAXn",)93 b("DATAMAX")45 -b(},)143 2626 y({"iCTYPn",)93 b("CTYPEi")g(},)i(/*)47 -b(Coordinate)e(labels)h(*/)143 2739 y({"iCTYna",)93 b("CTYPEia")45 -b(},)143 2852 y({"iCUNIn",)93 b("CUNITi")g(},)i(/*)47 -b(Coordinate)e(units)i(*/)143 2965 y({"iCUNna",)93 b("CUNITia")45 -b(},)143 3078 y({"iCRVLn",)93 b("CRVALi")g(},)i(/*)47 -b(WCS)g(keywords)f(*/)143 3191 y({"iCRVna",)93 b("CRVALia")45 -b(},)143 3304 y({"iCDLTn",)93 b("CDELTi")g(},)143 3417 -y({"iCDEna",)g("CDELTia")45 b(},)143 3530 y({"iCRPXn",)93 -b("CRPIXi")g(},)143 3643 y({"iCRPna",)g("CRPIXia")45 -b(},)143 3756 y({"ijPCna",)93 b("PCi_ja")g(},)143 3868 -y({"ijCDna",)g("CDi_ja")g(},)143 3981 y({"iVn_ma",)g("PVi_ma")g(},)143 -4094 y({"iSn_ma",)g("PSi_ma")g(},)143 4207 y({"iCRDna",)g("CRDERia")45 -b(},)143 4320 y({"iCSYna",)93 b("CSYERia")45 b(},)143 -4433 y({"iCROTn",)93 b("CROTAi")g(},)143 4546 y({"WCAXna",)g -("WCSAXESa"},)143 4659 y({"WCSNna",)g("WCSNAMEa"}};)0 -4904 y Fi(21)46 b Fj(T)-8 b(ranslate)26 b(the)f(k)m(eyw)m(ords)g(in)g -(the)g(input)e(HDU)j(in)m(to)g(the)f(k)m(eyw)m(ords)g(that)h(are)f -(appropriate)g(for)f(the)h(output)227 5017 y(HDU.)32 -b(This)d(is)i(a)f(driv)m(er)h(routine)f(that)h(calls)g(the)g -(previously)f(describ)s(ed)f(routine.)0 5262 y Fe(int)47 -b(fits_translate_keywords\()143 5375 y(fitsfile)f(*infptr,)141 +(an)f(IMA)m(GE)h(extension:)p eop end +%%Page: 75 83 +TeXDict begin 75 82 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(75)191 555 y Fe(char)47 b(*patterns[][2])c(=)48 +b({{"TSCALn",)92 b("BSCALE")i(},)h(/*)47 b(Standard)e(FITS)i(keywords)e +(*/)143 668 y({"TZEROn",)93 b("BZERO")141 b(},)143 781 +y({"TUNITn",)93 b("BUNIT")141 b(},)143 894 y({"TNULLn",)93 +b("BLANK")141 b(},)143 1007 y({"TDMINn",)93 b("DATAMIN")45 +b(},)143 1120 y({"TDMAXn",)93 b("DATAMAX")45 b(},)143 +1233 y({"iCTYPn",)93 b("CTYPEi")g(},)i(/*)47 b(Coordinate)e(labels)h +(*/)143 1346 y({"iCTYna",)93 b("CTYPEia")45 b(},)143 +1458 y({"iCUNIn",)93 b("CUNITi")g(},)i(/*)47 b(Coordinate)e(units)i(*/) +143 1571 y({"iCUNna",)93 b("CUNITia")45 b(},)143 1684 +y({"iCRVLn",)93 b("CRVALi")g(},)i(/*)47 b(WCS)g(keywords)f(*/)143 +1797 y({"iCRVna",)93 b("CRVALia")45 b(},)143 1910 y({"iCDLTn",)93 +b("CDELTi")g(},)143 2023 y({"iCDEna",)g("CDELTia")45 +b(},)143 2136 y({"iCRPXn",)93 b("CRPIXi")g(},)143 2249 +y({"iCRPna",)g("CRPIXia")45 b(},)143 2362 y({"ijPCna",)93 +b("PCi_ja")g(},)143 2475 y({"ijCDna",)g("CDi_ja")g(},)143 +2588 y({"iVn_ma",)g("PVi_ma")g(},)143 2700 y({"iSn_ma",)g("PSi_ma")g +(},)143 2813 y({"iCRDna",)g("CRDERia")45 b(},)143 2926 +y({"iCSYna",)93 b("CSYERia")45 b(},)143 3039 y({"iCROTn",)93 +b("CROTAi")g(},)143 3152 y({"WCAXna",)g("WCSAXESa"},)143 +3265 y({"WCSNna",)g("WCSNAMEa"}};)0 3497 y Fi(21)46 b +Fj(T)-8 b(ranslate)26 b(the)f(k)m(eyw)m(ords)g(in)g(the)g(input)e(HDU)j +(in)m(to)g(the)f(k)m(eyw)m(ords)g(that)h(are)f(appropriate)g(for)f(the) +h(output)227 3610 y(HDU.)33 b(This)e(is)g(a)h(driv)m(er)f(routine)h +(that)g(calls)h(the)e(previously)h(describ)s(ed)e(routine)i(for)f(all)h +(k)m(eyw)m(ords)g(in)227 3723 y(the)f(HDU.)227 3868 y(It)g(is)f(allo)m +(w)m(ed)i(for)f(infptr)e(and)h(outfptr)f(to)j(p)s(oin)m(t)e(to)h(the)g +(same)f(HDU.)227 4014 y(If)c(an)m(y)g(output)g(matc)m(hed)g(patterns)g +(are)h(of)f(the)g(form)g("-KEYNAME")h(then)f(this)g(routine)g(will)g +(attempt)227 4127 y(to)41 b(delete)f(the)g(k)m(eyw)m(ord)g(KEYNAME.)g +(It)g(is)g(not)f(an)h(error)f(if)h(KEYNAME)f(is)h(not)g(presen)m(t)f +(in)h(the)227 4240 y(output)30 b(HDU.)0 4472 y Fe(int)47 +b(fits_translate_keywords\()143 4585 y(fitsfile)f(*infptr,)141 b(/*)47 b(I)g(-)h(pointer)e(to)h(input)f(HDU)h(*/)143 -5488 y(fitsfile)f(*outfptr,)93 b(/*)47 b(I)g(-)h(pointer)e(to)h(output) -f(HDU)h(*/)143 5601 y(int)g(firstkey,)332 b(/*)47 b(I)g(-)h(first)e -(HDU)h(record)f(number)g(to)h(start)g(with)f(*/)143 5714 +4698 y(fitsfile)f(*outfptr,)93 b(/*)47 b(I)g(-)h(pointer)e(to)h(output) +f(HDU)h(*/)143 4811 y(int)g(firstkey,)332 b(/*)47 b(I)g(-)h(first)e +(HDU)h(record)f(number)g(to)h(start)g(with)f(*/)143 4924 y(char)h(*patterns[][2],/*)c(I)k(-)h(pointer)e(to)h(input)f(/)i(output) -e(keyword)g(templates)f(*/)p eop end -%%Page: 75 83 -TeXDict begin 75 82 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.75) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(5.8.)72 -b(UTILITY)30 b(R)m(OUTINES)2693 b Fj(75)143 555 y Fe(int)47 -b(npat,)524 b(/*)47 b(I)g(-)h(number)e(of)h(templates)e(passed)h(*/)143 -668 y(int)h(n_value,)380 b(/*)47 b(I)g(-)h(base)e('n')h(template)f -(value)g(of)h(interest)f(*/)143 781 y(int)h(n_offset,)332 +e(keyword)g(templates)f(*/)143 5036 y(int)i(npat,)524 +b(/*)47 b(I)g(-)h(number)e(of)h(templates)e(passed)h(*/)143 +5149 y(int)h(n_value,)380 b(/*)47 b(I)g(-)h(base)e('n')h(template)f +(value)g(of)h(interest)f(*/)143 5262 y(int)h(n_offset,)332 b(/*)47 b(I)g(-)h(offset)e(to)h(be)g(applied)f(to)h(the)g('n')g(*/)1193 -894 y(/*)238 b(value)47 b(in)g(the)g(output)f(string)g(*/)143 -1007 y(int)h(n_range,)380 b(/*)47 b(I)g(-)h(controls)d(range)i(of)g -('n')g(template)e(*/)1098 1120 y(/*)238 b(values)46 b(of)h(interest)f -(\(-1,0,)g(or)h(+1\))g(*/)143 1233 y(int)g(*status\))380 -b(/*)47 b(IO)g(-)h(error)e(status)g(*/)0 1499 y Fi(22)g -Fj(P)m(arse)35 b(the)g(input)f(string)h(con)m(taining)h(a)f(list)h(of)f -(ro)m(ws)f(or)h(ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)i(arra)m -(ys)f(con-)227 1612 y(taining)27 b(the)f(\014rst)f(and)g(last)i(ro)m(w) -f(in)f(eac)m(h)i(range.)40 b(F)-8 b(or)26 b(example,)i(if)d(ro)m(wlist) -i(=)e("3-5,)k(6,)e(8-9")h(then)d(it)i(will)227 1724 y(return)34 -b(n)m(umranges)h(=)g(3,)h(rangemin)f(=)g(3,)i(6,)g(8)e(and)g(rangemax)g -(=)g(5,)i(6,)g(9.)55 b(A)m(t)36 b(most,)h('maxranges')227 -1837 y(n)m(um)m(b)s(er)31 b(of)h(ranges)f(will)h(b)s(e)g(returned.)43 -b('maxro)m(ws')32 b(is)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i(ro)m -(ws)g(in)f(the)h(table;)227 1950 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g -(larger)h(than)f(this)g(will)g(b)s(e)g(ignored.)40 b(The)29 -b(ro)m(ws)g(m)m(ust)g(b)s(e)f(sp)s(eci\014ed)h(in)f(increasing)227 -2063 y(order,)33 b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.) -48 b(A)33 b(min)m(us)e(sign)i(ma)m(y)g(b)s(e)e(use)h(to)h(sp)s(ecify)f -(all)h(the)g(ro)m(ws)f(to)227 2176 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er) +5375 y(/*)238 b(value)47 b(in)g(the)g(output)f(string)g(*/)143 +5488 y(int)h(n_range,)380 b(/*)47 b(I)g(-)h(controls)d(range)i(of)g +('n')g(template)e(*/)1098 5601 y(/*)238 b(values)46 b(of)h(interest)f +(\(-1,0,)g(or)h(+1\))g(*/)143 5714 y(int)g(*status\))380 +b(/*)47 b(IO)g(-)h(error)e(status)g(*/)p eop end +%%Page: 76 84 +TeXDict begin 76 83 bop 0 299 a Fj(76)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fi(22)46 b Fj(P)m(arse)35 b(the)g(input)f(string) +h(con)m(taining)h(a)f(list)h(of)f(ro)m(ws)f(or)h(ro)m(w)g(ranges,)h +(and)e(return)g(in)m(teger)i(arra)m(ys)f(con-)227 668 +y(taining)27 b(the)f(\014rst)f(and)g(last)i(ro)m(w)f(in)f(eac)m(h)i +(range.)40 b(F)-8 b(or)26 b(example,)i(if)d(ro)m(wlist)i(=)e("3-5,)k +(6,)e(8-9")h(then)d(it)i(will)227 781 y(return)34 b(n)m(umranges)h(=)g +(3,)h(rangemin)f(=)g(3,)i(6,)g(8)e(and)g(rangemax)g(=)g(5,)i(6,)g(9.)55 +b(A)m(t)36 b(most,)h('maxranges')227 894 y(n)m(um)m(b)s(er)31 +b(of)h(ranges)f(will)h(b)s(e)g(returned.)43 b('maxro)m(ws')32 +b(is)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)f(the)h +(table;)227 1007 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)h(than)f +(this)g(will)g(b)s(e)g(ignored.)40 b(The)29 b(ro)m(ws)g(m)m(ust)g(b)s +(e)f(sp)s(eci\014ed)h(in)f(increasing)227 1120 y(order,)33 +b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)48 +b(A)33 b(min)m(us)e(sign)i(ma)m(y)g(b)s(e)e(use)h(to)h(sp)s(ecify)f +(all)h(the)g(ro)m(ws)f(to)227 1233 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er) h(b)s(ound,)d(so)i("50-")h(means)e(all)i(the)f(ro)m(ws)f(from)g(50)h -(to)h(the)e(end)g(of)h(the)f(table,)j(and)227 2289 y("-")d(means)e(all) +(to)h(the)e(end)g(of)h(the)f(table,)j(and)227 1346 y("-")d(means)e(all) h(the)g(ro)m(ws)f(in)g(the)h(table,)g(from)f(1)h(-)g(maxro)m(ws.)191 -2555 y Fe(int)47 b(fits_parse_range)c(/)48 b(ffrwrg\(char)c(*rowlist,)i -(LONGLONG)f(maxrows,)h(int)h(maxranges,)e(>)334 2668 +1581 y Fe(int)47 b(fits_parse_range)c(/)48 b(ffrwrg\(char)c(*rowlist,)i +(LONGLONG)f(maxrows,)h(int)h(maxranges,)e(>)334 1694 y(int)i(*numranges,)e(long)h(*rangemin,)f(long)i(*rangemax,)e(int)i -(*status\))191 2894 y(int)g(fits_parse_rangell)c(/)k(ffrwrgll\(char)d +(*status\))191 1920 y(int)g(fits_parse_rangell)c(/)k(ffrwrgll\(char)d (*rowlist,)i(LONGLONG)f(maxrows,)h(int)h(maxranges,)e(>)334 -3007 y(int)i(*numranges,)e(LONGLONG)g(*rangemin,)g(LONGLONG)h -(*rangemax,)f(int)i(*status\))0 3272 y Fi(23)f Fj(Chec)m(k)37 +2033 y(int)i(*numranges,)e(LONGLONG)g(*rangemin,)g(LONGLONG)h +(*rangemax,)f(int)i(*status\))0 2268 y Fi(23)f Fj(Chec)m(k)37 b(that)g(the)g(Header)g(\014ll)g(b)m(ytes)g(\(if)g(an)m(y\))g(are)g (all)h(blank.)59 b(These)36 b(are)h(the)g(b)m(ytes)g(that)g(ma)m(y)h -(follo)m(w)227 3385 y(END)e(k)m(eyw)m(ord)g(and)f(b)s(efore)g(the)h(b)s +(follo)m(w)227 2381 y(END)e(k)m(eyw)m(ord)g(and)f(b)s(efore)g(the)h(b)s (eginning)f(of)h(data)g(unit,)g(or)g(the)g(end)f(of)g(the)h(HDU)g(if)g -(there)f(is)h(no)227 3498 y(data)31 b(unit.)191 3764 +(there)f(is)h(no)227 2494 y(data)31 b(unit.)191 2730 y Fe(int)47 b(ffchfl\(fitsfile)c(*fptr,)k(>)g(int)g(*status\))0 -4030 y Fi(24)f Fj(Chec)m(k)30 b(that)g(the)f(Data)i(\014ll)e(b)m(ytes)h +2965 y Fi(24)f Fj(Chec)m(k)30 b(that)g(the)f(Data)i(\014ll)e(b)m(ytes)h (\(if)g(an)m(y\))g(are)g(all)g(zero)g(\(for)f(IMA)m(GE)i(or)e(BINAR)-8 -b(Y)30 b(T)-8 b(able)30 b(HDU\))h(or)e(all)227 4143 y(blanks)g(\(for)g +b(Y)30 b(T)-8 b(able)30 b(HDU\))h(or)e(all)227 3078 y(blanks)g(\(for)g (ASCI)s(I)f(table)i(HDU\).)g(These)f(\014le)g(b)m(ytes)h(ma)m(y)f(b)s (e)g(lo)s(cated)h(after)g(the)f(last)h(v)-5 b(alid)29 -b(data)h(b)m(yte)227 4256 y(in)g(the)h(HDU)g(and)f(b)s(efore)g(the)g -(ph)m(ysical)h(end)f(of)h(the)f(HDU.)191 4522 y Fe(int)47 -b(ffcdfl\(fitsfile)c(*fptr,)k(>)g(int)g(*status\))0 4788 +b(data)h(b)m(yte)227 3191 y(in)g(the)h(HDU)g(and)f(b)s(efore)g(the)g +(ph)m(ysical)h(end)f(of)h(the)f(HDU.)191 3427 y Fe(int)47 +b(ffcdfl\(fitsfile)c(*fptr,)k(>)g(int)g(*status\))0 3662 y Fi(25)f Fj(Estimate)35 b(the)e(ro)s(ot-mean-squared)h(\(RMS\))f (noise)h(in)f(an)g(image.)51 b(These)33 b(routines)g(are)h(mainly)f -(for)g(use)227 4901 y(with)25 b(the)g(Hcompress)g(image)i(compression)e +(for)g(use)227 3775 y(with)25 b(the)g(Hcompress)g(image)i(compression)e (algorithm.)40 b(They)24 b(return)g(an)h(estimate)i(of)e(the)h(RMS)f -(noise)227 5014 y(in)38 b(the)f(bac)m(kground)h(pixels)f(of)h(the)g +(noise)227 3888 y(in)38 b(the)f(bac)m(kground)h(pixels)f(of)h(the)g (image.)64 b(This)36 b(robust)h(algorithm)i(\(written)f(b)m(y)f(Ric)m -(hard)h(White,)227 5127 y(STScI\))e(\014rst)f(attempts)i(to)g(estimate) +(hard)h(White,)227 4001 y(STScI\))e(\014rst)f(attempts)i(to)g(estimate) h(the)f(RMS)e(v)-5 b(alue)37 b(as)g(1.68)g(times)g(the)f(median)g(of)h -(the)f(absolute)227 5240 y(di\013erences)26 b(b)s(et)m(w)m(een)h +(the)f(absolute)227 4114 y(di\013erences)26 b(b)s(et)m(w)m(een)h (successiv)m(e)g(pixels)f(in)g(the)g(image.)41 b(If)25 b(the)h(median)g(=)f(0,)j(then)d(the)h(algorithm)h(falls)227 -5352 y(bac)m(k)h(to)f(computing)g(the)g(RMS)f(of)h(the)g(di\013erence)g +4227 y(bac)m(k)h(to)f(computing)g(the)g(RMS)f(of)h(the)g(di\013erence)g (b)s(et)m(w)m(een)h(successiv)m(e)g(pixels,)f(after)h(sev)m(eral)g -(N-sigma)227 5465 y(rejection)e(cycles)g(to)g(remo)m(v)m(e)g(extreme)g +(N-sigma)227 4340 y(rejection)e(cycles)g(to)g(remo)m(v)m(e)g(extreme)g (v)-5 b(alues.)39 b(The)25 b(input)e(parameters)j(are:)38 -b(the)25 b(arra)m(y)g(of)g(image)i(pixel)227 5578 y(v)-5 +b(the)25 b(arra)m(y)g(of)g(image)i(pixel)227 4452 y(v)-5 b(alues)30 b(\(either)h(\015oat)f(or)g(short)f(v)-5 b(alues\),)31 b(the)f(n)m(um)m(b)s(er)e(of)i(v)-5 b(alues)30 b(in)g(the)g(arra)m(y)-8 b(,)31 b(the)f(v)-5 b(alue)30 b(that)g(is)g(used)227 -5691 y(to)h(represen)m(t)g(n)m(ull)f(pixels)h(\(en)m(ter)g(a)g(v)m(ery) +4565 y(to)h(represen)m(t)g(n)m(ull)f(pixels)h(\(en)m(ter)g(a)g(v)m(ery) g(large)g(n)m(um)m(b)s(er)e(if)h(there)h(are)g(no)f(n)m(ull)g -(pixels\).)p eop end -%%Page: 76 84 -TeXDict begin 76 83 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.76) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(76)1379 -b Fh(CHAPTER)30 b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)191 555 y Fe(int)47 b(fits_rms_float)d -(\(float)i(fdata[],)f(int)i(npix,)g(float)f(in_null_value,)907 -668 y(>)h(double)f(*rms,)h(int)g(*status\))191 781 y(int)g -(fits_rms_short)d(\(short)i(fdata[],)f(int)i(npix,)g(short)f -(in_null_value,)907 894 y(>)h(double)f(*rms,)h(int)g(*status\))0 -1154 y Fi(26)f Fj(W)-8 b(as)33 b(CFITSIO)d(compiled)h(with)h(the)f(-D)p -1612 1154 28 4 v 34 w(REENTRANT)g(directiv)m(e)i(so)e(that)h(it)g(ma)m -(y)h(b)s(e)d(safely)j(used)d(in)227 1267 y(m)m(ulti-threaded)d(en)m -(vironmen)m(ts?)40 b(The)26 b(follo)m(wing)i(function)e(returns)f(1)i -(if)f(y)m(es,)i(0)f(if)f(no.)40 b(Note,)28 b(ho)m(w)m(ev)m(er,)227 -1380 y(that)35 b(ev)m(en)g(if)g(the)f(-D)p 991 1380 V -34 w(REENTRANT)f(directiv)m(e)j(w)m(as)f(sp)s(eci\014ed,)g(this)f(do)s -(es)g(not)h(guaran)m(tee)h(that)f(the)227 1492 y(CFITSIO)29 -b(routines)h(are)h(thread-safe,)g(b)s(ecause)g(some)f(compilers)h(ma)m -(y)g(not)g(supp)s(ort)d(this)j(feature.)0 1752 y Fe(int)47 -b(fits_is_reentrant\(void\))p eop end +(pixels\).)191 4801 y Fe(int)47 b(fits_rms_float)d(\(float)i(fdata[],)f +(int)i(npix,)g(float)f(in_null_value,)907 4914 y(>)h(double)f(*rms,)h +(int)g(*status\))191 5027 y(int)g(fits_rms_short)d(\(short)i(fdata[],)f +(int)i(npix,)g(short)f(in_null_value,)907 5140 y(>)h(double)f(*rms,)h +(int)g(*status\))0 5375 y Fi(26)f Fj(W)-8 b(as)33 b(CFITSIO)d(compiled) +h(with)h(the)f(-D)p 1612 5375 28 4 v 34 w(REENTRANT)g(directiv)m(e)i +(so)e(that)h(it)g(ma)m(y)h(b)s(e)d(safely)j(used)d(in)227 +5488 y(m)m(ulti-threaded)d(en)m(vironmen)m(ts?)40 b(The)26 +b(follo)m(wing)i(function)e(returns)f(1)i(if)f(y)m(es,)i(0)f(if)f(no.) +40 b(Note,)28 b(ho)m(w)m(ev)m(er,)227 5601 y(that)35 +b(ev)m(en)g(if)g(the)f(-D)p 991 5601 V 34 w(REENTRANT)f(directiv)m(e)j +(w)m(as)f(sp)s(eci\014ed,)g(this)f(do)s(es)g(not)h(guaran)m(tee)h(that) +f(the)227 5714 y(CFITSIO)29 b(routines)h(are)h(thread-safe,)g(b)s +(ecause)g(some)f(compilers)h(ma)m(y)g(not)g(supp)s(ort)d(this)j +(feature.)p eop end %%Page: 77 85 -TeXDict begin 77 84 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.77) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.6) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(6)0 +TeXDict begin 77 84 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 +b(R)m(OUTINES)2693 b Fj(77)0 555 y Fe(int)47 b +(fits_is_reentrant\(void\))p eop end +%%Page: 78 86 +TeXDict begin 78 85 bop 0 299 a Fj(78)1379 b Fh(CHAPTER)30 +b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)p eop end +%%Page: 79 87 +TeXDict begin 79 86 bop 0 1225 a Fg(Chapter)65 b(6)0 1687 y Fm(The)77 b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 2180 y Fj(The)41 b(\014ts)p 325 2180 28 4 v 33 w(iterate)p 614 2180 V 34 w(data)i(function)e(in)h(CFITSIO)e(pro)m(vides)i(a)g @@ -13300,62 +10362,42 @@ b(The)30 b(\014rst)g(step)h(is)g(to)g(design)g(the)0 5714 y(w)m(ork)26 b(function)f(itself)h(whic)m(h)f(m)m(ust)h(ha)m(v)m (e)g(a)g(prescrib)s(ed)e(set)i(of)g(input)f(parameters.)39 -b(One)25 b(of)h(these)g(parameters)1905 5942 y(77)p eop -end -%%Page: 78 86 -TeXDict begin 78 85 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.78) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(78)1455 -b Fh(CHAPTER)30 b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 -b(TOR)30 b(FUNCTION)0 555 y Fj(is)f(a)g(structure)g(con)m(taining)i(p)s -(oin)m(ters)d(to)i(the)f(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h -(function)e(can)i(p)s(erform)d(an)m(y)i(desired)0 668 -y(op)s(erations)k(on)h(these)f(arra)m(ys)h(and)e(do)s(es)h(not)g(need)g -(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g(the)h(input)e(data)i(w)m(ere)f -(read)g(from)0 781 y(the)e(\014le)f(or)g(ho)m(w)h(the)f(output)g(data)h -(get)h(written)e(bac)m(k)h(to)h(the)e(\014le.)0 941 y(The)24 -b(second)h(step)g(is)f(to)i(design)e(the)h(driv)m(er)g(routine)f(that)i -(op)s(ens)e(all)h(the)g(necessary)g(FITS)f(\014les)h(and)f(initializes) -0 1054 y(the)41 b(input)g(parameters)g(to)h(the)g(iterator)g(function.) -73 b(The)41 b(driv)m(er)g(program)g(calls)h(the)g(CFITSIO)e(iterator)0 -1167 y(function)30 b(whic)m(h)g(then)g(reads)g(the)h(data)g(and)f -(passes)g(it)h(to)g(the)g(user's)e(w)m(ork)i(function.)0 -1327 y(The)20 b(follo)m(wing)i(2)f(sections)g(describ)s(e)f(these)h -(steps)g(in)f(more)g(detail.)39 b(There)20 b(are)h(also)g(sev)m(eral)h -(example)f(programs)0 1440 y(included)30 b(with)g(the)g(CFITSIO)f -(distribution)h(whic)m(h)g(illustrate)i(ho)m(w)e(to)h(use)f(the)h -(iterator)g(function.)0 1593 y -SDict begin H.S end - 0 1593 a 0 1593 a -SDict begin 13.6 H.A end - 0 1593 -a 0 1593 a -SDict begin [/View [/XYZ H.V]/Dest (section.6.1) cvn /DEST pdfmark +b(One)25 b(of)h(these)g(parameters)1905 5942 y(79)p eop end - 0 1593 a 196 x Ff(6.1)135 b(The)45 b(Iterator)h(W)-11 -b(ork)45 b(F)-11 b(unction)0 2043 y Fj(The)42 b(user-supplied)f -(iterator)j(w)m(ork)f(function)f(m)m(ust)g(ha)m(v)m(e)i(the)f(follo)m -(wing)h(set)f(of)g(input)e(parameters)i(\(the)0 2156 -y(function)30 b(can)h(b)s(e)e(giv)m(en)j(an)m(y)f(desired)e(name\):)95 -2429 y Fe(int)47 b(user_fn\()f(long)h(totaln,)e(long)i(offset,)f(long)g -(firstn,)g(long)h(nvalues,)716 2542 y(int)g(narrays,)e(iteratorCol)g -(*data,)94 b(void)47 b(*userPointer)d(\))136 2815 y Fc(\017)i -Fj(totaln)24 b({)f(the)f(total)j(n)m(um)m(b)s(er)c(of)h(table)i(ro)m -(ws)e(or)g(image)i(pixels)f(that)g(will)f(b)s(e)g(passed)g(to)h(the)g -(w)m(ork)f(function)227 2928 y(during)29 b(1)i(or)g(more)f(iterations.) -136 3129 y Fc(\017)46 b Fj(o\013set)d({)f(the)h(o\013set)f(applied)g -(to)h(the)f(\014rst)f(table)i(ro)m(w)f(or)g(image)h(pixel)f(to)h(b)s(e) -e(passed)g(to)i(the)f(w)m(ork)227 3241 y(function.)55 +%%Page: 80 88 +TeXDict begin 80 87 bop 0 299 a Fj(80)1455 b Fh(CHAPTER)30 +b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 +555 y Fj(is)f(a)g(structure)g(con)m(taining)i(p)s(oin)m(ters)d(to)i +(the)f(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)e(can)i(p)s +(erform)d(an)m(y)i(desired)0 668 y(op)s(erations)k(on)h(these)f(arra)m +(ys)h(and)e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g +(the)h(input)e(data)i(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)f(or)g +(ho)m(w)h(the)f(output)g(data)h(get)h(written)e(bac)m(k)h(to)h(the)e +(\014le.)0 941 y(The)24 b(second)h(step)g(is)f(to)i(design)e(the)h +(driv)m(er)g(routine)f(that)i(op)s(ens)e(all)h(the)g(necessary)g(FITS)f +(\014les)h(and)f(initializes)0 1054 y(the)41 b(input)g(parameters)g(to) +h(the)g(iterator)g(function.)73 b(The)41 b(driv)m(er)g(program)g(calls) +h(the)g(CFITSIO)e(iterator)0 1167 y(function)30 b(whic)m(h)g(then)g +(reads)g(the)h(data)g(and)f(passes)g(it)h(to)g(the)g(user's)e(w)m(ork)i +(function.)0 1327 y(The)20 b(follo)m(wing)i(2)f(sections)g(describ)s(e) +f(these)h(steps)g(in)f(more)g(detail.)39 b(There)20 b(are)h(also)g(sev) +m(eral)h(example)f(programs)0 1440 y(included)30 b(with)g(the)g +(CFITSIO)f(distribution)h(whic)m(h)g(illustrate)i(ho)m(w)e(to)h(use)f +(the)h(iterator)g(function.)0 1789 y Ff(6.1)135 b(The)45 +b(Iterator)h(W)-11 b(ork)45 b(F)-11 b(unction)0 2043 +y Fj(The)42 b(user-supplied)f(iterator)j(w)m(ork)f(function)f(m)m(ust)g +(ha)m(v)m(e)i(the)f(follo)m(wing)h(set)f(of)g(input)e(parameters)i +(\(the)0 2156 y(function)30 b(can)h(b)s(e)e(giv)m(en)j(an)m(y)f +(desired)e(name\):)95 2429 y Fe(int)47 b(user_fn\()f(long)h(totaln,)e +(long)i(offset,)f(long)g(firstn,)g(long)h(nvalues,)716 +2542 y(int)g(narrays,)e(iteratorCol)g(*data,)94 b(void)47 +b(*userPointer)d(\))136 2815 y Fc(\017)i Fj(totaln)24 +b({)f(the)f(total)j(n)m(um)m(b)s(er)c(of)h(table)i(ro)m(ws)e(or)g +(image)i(pixels)f(that)g(will)f(b)s(e)g(passed)g(to)h(the)g(w)m(ork)f +(function)227 2928 y(during)29 b(1)i(or)g(more)f(iterations.)136 +3129 y Fc(\017)46 b Fj(o\013set)d({)f(the)h(o\013set)f(applied)g(to)h +(the)f(\014rst)f(table)i(ro)m(w)f(or)g(image)h(pixel)f(to)h(b)s(e)e +(passed)g(to)i(the)f(w)m(ork)227 3241 y(function.)55 b(In)34 b(other)i(w)m(ords,)g(this)f(is)g(the)g(n)m(um)m(b)s(er)f(of)h (ro)m(ws)h(or)f(pixels)g(that)h(are)f(skipp)s(ed)f(o)m(v)m(er)i(b)s (efore)227 3354 y(starting)30 b(the)g(iterations.)42 @@ -13397,53 +10439,40 @@ (needed.)40 b(The)26 b(w)m(ork)h(function)g(m)m(ust)g(cast)227 5714 y(this)k(p)s(oin)m(ter)f(to)h(the)g(appropriate)f(data)h(t)m(yp)s (e)g(b)s(efore)f(using)f(it)i(it.)p eop end -%%Page: 79 87 -TeXDict begin 79 86 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.79) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(6.1.)72 -b(THE)30 b(ITERA)-8 b(TOR)30 b(W)m(ORK)g(FUNCTION)2021 -b Fj(79)0 555 y(The)23 b(totaln,)k(o\013set,)g(narra)m(ys,)e(data,)h -(and)d(userP)m(oin)m(ter)i(parameters)f(are)g(guaran)m(teed)h(to)g(ha)m -(v)m(e)g(the)f(same)g(v)-5 b(alue)0 668 y(on)35 b(eac)m(h)i(iteration.) -57 b(Only)34 b(\014rstn,)i(n)m(v)-5 b(alues,)37 b(and)d(the)i(arra)m -(ys)f(of)h(data)g(p)s(oin)m(ted)f(to)h(b)m(y)f(the)h(data)g(structures) -0 781 y(ma)m(y)31 b(c)m(hange)g(on)g(eac)m(h)g(iterativ)m(e)i(call)f -(to)f(the)f(w)m(ork)h(function.)0 941 y(Note)43 b(that)g(the)f -(iterator)h(treats)g(an)f(image)h(as)f(a)g(long)h(1-D)g(arra)m(y)f(of)h -(pixels)f(regardless)g(of)g(it's)h(in)m(trinsic)0 1054 -y(dimensionalit)m(y)-8 b(.)52 b(The)33 b(total)j(n)m(um)m(b)s(er)c(of)i -(pixels)g(is)g(just)f(the)h(pro)s(duct)e(of)i(the)g(size)h(of)e(eac)m -(h)i(dimension,)g(and)0 1167 y(the)e(order)g(of)g(the)g(pixels)g(is)g -(the)g(same)g(as)g(the)h(order)e(that)h(they)h(are)f(stored)g(in)g(the) -g(FITS)f(\014le.)48 b(If)33 b(the)g(w)m(ork)0 1280 y(function)27 -b(needs)g(to)h(kno)m(w)f(the)h(n)m(um)m(b)s(er)e(and)h(size)h(of)g(the) -f(image)i(dimensions)d(then)h(these)h(parameters)g(can)g(b)s(e)0 -1393 y(passed)i(via)h(the)f(userP)m(oin)m(ter)i(structure.)0 -1553 y(The)e(iteratorCol)i(structure)e(is)g(curren)m(tly)h(de\014ned)e -(as)h(follo)m(ws:)0 1780 y Fe(typedef)46 b(struct)94 -b(/*)47 b(structure)e(for)i(the)g(iterator)e(function)h(column)g -(information)f(*/)0 1893 y({)143 2005 y(/*)i(structure)f(elements)f -(required)h(as)h(input)f(to)h(fits_iterate_data:)c(*/)95 -2231 y(fitsfile)j(*fptr;)332 b(/*)48 b(pointer)d(to)j(the)f(HDU)f -(containing)f(the)i(column)f(or)i(image)e(*/)95 2344 -y(int)286 b(colnum;)e(/*)48 b(column)e(number)g(in)h(the)g(table;)f -(ignored)g(for)h(images)189 b(*/)95 2457 y(char)238 b(colname[70];)44 -b(/*)k(name)e(\(TTYPEn\))g(of)h(the)g(column;)f(null)g(for)h(images)285 -b(*/)95 2570 y(int)h(datatype;)188 b(/*)48 b(output)e(data)g(type)h -(\(converted)e(if)i(necessary\))e(*/)95 2683 y(int)286 -b(iotype;)e(/*)48 b(type:)e(InputCol,)f(InputOutputCol,)f(or)j -(OutputCol)e(*/)95 2909 y(/*)j(output)e(structure)f(elements)h(that)g -(may)h(be)g(useful)f(for)h(the)g(work)g(function:)e(*/)95 +%%Page: 81 89 +TeXDict begin 81 88 bop 0 299 a Fh(6.1.)72 b(THE)30 b(ITERA)-8 +b(TOR)30 b(W)m(ORK)g(FUNCTION)2021 b Fj(81)0 555 y(The)23 +b(totaln,)k(o\013set,)g(narra)m(ys,)e(data,)h(and)d(userP)m(oin)m(ter)i +(parameters)f(are)g(guaran)m(teed)h(to)g(ha)m(v)m(e)g(the)f(same)g(v)-5 +b(alue)0 668 y(on)35 b(eac)m(h)i(iteration.)57 b(Only)34 +b(\014rstn,)i(n)m(v)-5 b(alues,)37 b(and)d(the)i(arra)m(ys)f(of)h(data) +g(p)s(oin)m(ted)f(to)h(b)m(y)f(the)h(data)g(structures)0 +781 y(ma)m(y)31 b(c)m(hange)g(on)g(eac)m(h)g(iterativ)m(e)i(call)f(to)f +(the)f(w)m(ork)h(function.)0 941 y(Note)43 b(that)g(the)f(iterator)h +(treats)g(an)f(image)h(as)f(a)g(long)h(1-D)g(arra)m(y)f(of)h(pixels)f +(regardless)g(of)g(it's)h(in)m(trinsic)0 1054 y(dimensionalit)m(y)-8 +b(.)52 b(The)33 b(total)j(n)m(um)m(b)s(er)c(of)i(pixels)g(is)g(just)f +(the)h(pro)s(duct)e(of)i(the)g(size)h(of)e(eac)m(h)i(dimension,)g(and)0 +1167 y(the)e(order)g(of)g(the)g(pixels)g(is)g(the)g(same)g(as)g(the)h +(order)e(that)h(they)h(are)f(stored)g(in)g(the)g(FITS)f(\014le.)48 +b(If)33 b(the)g(w)m(ork)0 1280 y(function)27 b(needs)g(to)h(kno)m(w)f +(the)h(n)m(um)m(b)s(er)e(and)h(size)h(of)g(the)f(image)i(dimensions)d +(then)h(these)h(parameters)g(can)g(b)s(e)0 1393 y(passed)i(via)h(the)f +(userP)m(oin)m(ter)i(structure.)0 1553 y(The)e(iteratorCol)i(structure) +e(is)g(curren)m(tly)h(de\014ned)e(as)h(follo)m(ws:)0 +1780 y Fe(typedef)46 b(struct)94 b(/*)47 b(structure)e(for)i(the)g +(iterator)e(function)h(column)g(information)f(*/)0 1893 +y({)143 2005 y(/*)i(structure)f(elements)f(required)h(as)h(input)f(to)h +(fits_iterate_data:)c(*/)95 2231 y(fitsfile)j(*fptr;)332 +b(/*)48 b(pointer)d(to)j(the)f(HDU)f(containing)f(the)i(column)f(or)i +(image)e(*/)95 2344 y(int)286 b(colnum;)e(/*)48 b(column)e(number)g(in) +h(the)g(table;)f(ignored)g(for)h(images)189 b(*/)95 2457 +y(char)238 b(colname[70];)44 b(/*)k(name)e(\(TTYPEn\))g(of)h(the)g +(column;)f(null)g(for)h(images)285 b(*/)95 2570 y(int)h(datatype;)188 +b(/*)48 b(output)e(data)g(type)h(\(converted)e(if)i(necessary\))e(*/)95 +2683 y(int)286 b(iotype;)e(/*)48 b(type:)e(InputCol,)f(InputOutputCol,) +f(or)j(OutputCol)e(*/)95 2909 y(/*)j(output)e(structure)f(elements)h +(that)g(may)h(be)g(useful)f(for)h(the)g(work)g(function:)e(*/)95 3135 y(void)238 b(*array;)189 b(/*)47 b(pointer)f(to)h(the)g(array)f (\(and)h(the)g(null)g(value\))f(*/)95 3247 y(long)238 b(repeat;)189 b(/*)47 b(binary)f(table)h(vector)f(repeat)g(value;)g @@ -13486,31 +10515,19 @@ 5714 y(\(i.e.,)31 b(c)m(har)e(**arra)m(y\).)42 b(The)29 b(other)g(output)g(structure)f(elemen)m(ts)j(are)e(pro)m(vided)g(for)f (con)m(v)m(enience)k(in)c(case)i(that)p eop end -%%Page: 80 88 -TeXDict begin 80 87 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.80) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(80)1455 -b Fh(CHAPTER)30 b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 -b(TOR)30 b(FUNCTION)0 555 y Fj(information)36 b(is)g(needed)f(within)g -(the)h(w)m(ork)g(function.)56 b(An)m(y)35 b(other)h(information)g(ma)m -(y)g(b)s(e)f(passed)h(from)f(the)0 668 y(driv)m(er)30 -b(routine)h(to)g(the)f(w)m(ork)h(function)f(via)h(the)f(userP)m(oin)m -(ter)h(parameter.)0 828 y(Up)s(on)g(completion,)j(the)e(w)m(ork)h -(routine)f(m)m(ust)g(return)f(an)h(in)m(teger)h(status)f(v)-5 -b(alue,)34 b(with)d(0)i(indicating)g(success)0 941 y(and)e(an)m(y)g -(other)g(v)-5 b(alue)32 b(indicating)g(an)f(error)g(whic)m(h)g(will)g -(cause)h(the)f(iterator)i(function)e(to)h(immediately)g(exit)0 -1054 y(at)27 b(that)f(p)s(oin)m(t.)39 b(Return)25 b(status)i(v)-5 +%%Page: 82 90 +TeXDict begin 82 89 bop 0 299 a Fj(82)1455 b Fh(CHAPTER)30 +b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 +555 y Fj(information)36 b(is)g(needed)f(within)g(the)h(w)m(ork)g +(function.)56 b(An)m(y)35 b(other)h(information)g(ma)m(y)g(b)s(e)f +(passed)h(from)f(the)0 668 y(driv)m(er)30 b(routine)h(to)g(the)f(w)m +(ork)h(function)f(via)h(the)f(userP)m(oin)m(ter)h(parameter.)0 +828 y(Up)s(on)g(completion,)j(the)e(w)m(ork)h(routine)f(m)m(ust)g +(return)f(an)h(in)m(teger)h(status)f(v)-5 b(alue,)34 +b(with)d(0)i(indicating)g(success)0 941 y(and)e(an)m(y)g(other)g(v)-5 +b(alue)32 b(indicating)g(an)f(error)g(whic)m(h)g(will)g(cause)h(the)f +(iterator)i(function)e(to)h(immediately)g(exit)0 1054 +y(at)27 b(that)f(p)s(oin)m(t.)39 b(Return)25 b(status)i(v)-5 b(alues)26 b(in)f(the)h(range)h(1)f({)g(1000)i(should)c(b)s(e)i(a)m(v)m (oided)h(since)f(these)h(are)f(reserv)m(ed)0 1167 y(for)d(use)g(b)m(y)h (CFITSIO.)e(A)i(return)e(status)i(v)-5 b(alue)24 b(of)g(-1)g(ma)m(y)g @@ -13521,15 +10538,7 @@ b(do)s(es)g(not)i(considered)f(this)g(to)h(b)s(e)e(an)h(error)g (condition,)i(so)e(an)m(y)g(further)f(pro)s(cessing)h(b)m(y)0 1506 y(the)k(application)g(program)f(will)h(con)m(tin)m(ue)h(normally) --8 b(.)0 1658 y -SDict begin H.S end - 0 1658 a 0 1658 a -SDict begin 13.6 H.A end - 0 1658 a 0 1658 a -SDict begin [/View [/XYZ H.V]/Dest (section.6.2) cvn /DEST pdfmark -end - 0 -1658 a 179 x Ff(6.2)135 b(The)45 b(Iterator)h(Driv)l(er)g(F)-11 +-8 b(.)0 1837 y Ff(6.2)135 b(The)45 b(Iterator)h(Driv)l(er)g(F)-11 b(unction)0 2087 y Fj(The)33 b(iterator)h(driv)m(er)f(function)g(m)m (ust)h(op)s(en)e(the)i(necessary)f(FITS)g(\014les)g(and)g(p)s(osition)g (them)g(to)h(the)g(correct)0 2200 y(HDU.)23 b(It)f(m)m(ust)g(also)i @@ -13582,33 +10591,21 @@ Fj(narra)m(ys)31 b({)f(the)h(n)m(um)m(b)s(er)e(of)h(columns)g(or)h (images)g(that)g(are)g(to)g(b)s(e)f(passed)g(to)h(the)f(w)m(ork)h (function.)p eop end -%%Page: 81 89 -TeXDict begin 81 88 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.81) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(6.3.)72 -b(GUIDELINES)30 b(F)m(OR)h(USING)f(THE)g(ITERA)-8 b(TOR)30 -b(FUNCTION)1200 b Fj(81)136 555 y Fc(\017)46 b Fj(*data)32 -b({)f(p)s(oin)m(ter)f(to)h(arra)m(y)g(of)f(structures)g(con)m(taining)i -(information)f(ab)s(out)f(eac)m(h)h(column)g(or)f(image.)136 -736 y Fc(\017)46 b Fj(o\013set)31 b({)f(if)f(p)s(ositiv)m(e,)i(this)f -(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(at)h(the)g(b)s(eginning)f(of)h(the)f -(table)i(\(or)f(pixels)f(in)h(the)f(image\))227 849 y(will)i(b)s(e)f -(skipp)s(ed)f(and)g(will)i(not)g(b)s(e)e(passed)h(to)h(the)g(w)m(ork)f -(function.)136 1030 y Fc(\017)46 b Fj(nP)m(erLo)s(op)38 -b(-)h(sp)s(eci\014es)e(the)i(n)m(um)m(b)s(er)e(of)h(table)h(ro)m(ws)g -(\(or)f(n)m(um)m(b)s(er)f(of)i(image)g(pixels\))g(that)g(are)g(to)g(b)s -(e)227 1143 y(passed)29 b(to)h(the)f(w)m(ork)h(function)e(on)h(eac)m(h) -i(iteration.)42 b(If)28 b(nP)m(erLo)s(op)h(=)g(0)g(then)g(CFITSIO)f +%%Page: 83 91 +TeXDict begin 83 90 bop 0 299 a Fh(6.3.)72 b(GUIDELINES)30 +b(F)m(OR)h(USING)f(THE)g(ITERA)-8 b(TOR)30 b(FUNCTION)1200 +b Fj(83)136 555 y Fc(\017)46 b Fj(*data)32 b({)f(p)s(oin)m(ter)f(to)h +(arra)m(y)g(of)f(structures)g(con)m(taining)i(information)f(ab)s(out)f +(eac)m(h)h(column)g(or)f(image.)136 736 y Fc(\017)46 +b Fj(o\013set)31 b({)f(if)f(p)s(ositiv)m(e,)i(this)f(n)m(um)m(b)s(er)e +(of)i(ro)m(ws)f(at)h(the)g(b)s(eginning)f(of)h(the)f(table)i(\(or)f +(pixels)f(in)h(the)f(image\))227 849 y(will)i(b)s(e)f(skipp)s(ed)f(and) +g(will)i(not)g(b)s(e)e(passed)h(to)h(the)g(w)m(ork)f(function.)136 +1030 y Fc(\017)46 b Fj(nP)m(erLo)s(op)38 b(-)h(sp)s(eci\014es)e(the)i +(n)m(um)m(b)s(er)e(of)h(table)h(ro)m(ws)g(\(or)f(n)m(um)m(b)s(er)f(of)i +(image)g(pixels\))g(that)g(are)g(to)g(b)s(e)227 1143 +y(passed)29 b(to)h(the)f(w)m(ork)h(function)e(on)h(eac)m(h)i +(iteration.)42 b(If)28 b(nP)m(erLo)s(op)h(=)g(0)g(then)g(CFITSIO)f (will)i(calculate)227 1256 y(the)22 b(optim)m(um)g(n)m(um)m(b)s(er)e (for)h(greatest)j(e\016ciency)-8 b(.)39 b(If)21 b(nP)m(erLo)s(op)g(is)h (negativ)m(e,)k(then)21 b(all)i(the)f(ro)m(ws)f(or)h(pixels)227 @@ -13649,15 +10646,7 @@ (status)f(v)-5 b(alue.)40 b(The)0 3505 y(iterator)33 b(then)f(frees)g(the)h(memory)e(that)i(it)g(initially)g(allo)s(cated)h (and)e(returns)f(con)m(trol)i(to)g(the)f(driv)m(er)g(routine)0 -3618 y(that)f(called)h(it.)0 3752 y -SDict begin H.S end - 0 3752 a 0 3752 a -SDict begin 13.6 H.A end - -0 3752 a 0 3752 a -SDict begin [/View [/XYZ H.V]/Dest (section.6.3) cvn /DEST pdfmark -end - 0 3752 a 197 x Ff(6.3)135 b(Guidelines)46 +3618 y(that)f(called)h(it.)0 3949 y Ff(6.3)135 b(Guidelines)46 b(for)f(Using)h(the)f(Iterator)h(F)-11 b(unction)0 4199 y Fj(The)34 b(totaln,)i(o\013set,)h(\014rstn,)d(and)f(n)m(v)-5 b(alues)35 b(parameters)f(that)h(are)f(passed)g(to)h(the)f(w)m(ork)g @@ -13692,51 +10681,39 @@ (during)e(the)i(main)g(pro)s(cessing)g(lo)s(op)g(of)g(the)g(w)m(ork)g (function)g(can)g(seriously)0 5714 y(degrade)i(the)f(sp)s(eed)g(of)g (the)h(program.)p eop end -%%Page: 82 90 -TeXDict begin 82 89 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.82) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(82)1455 -b Fh(CHAPTER)30 b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 -b(TOR)30 b(FUNCTION)0 555 y Fj(If)i(v)-5 b(ariable-length)35 -b(arra)m(y)e(columns)g(are)g(b)s(eing)f(pro)s(cessed,)h(then)g(the)g -(iterator)h(will)f(op)s(erate)h(on)f(one)g(ro)m(w)g(of)0 -668 y(the)j(table)g(at)g(a)g(time.)57 b(In)34 b(this)i(case)g(the)g -(the)f(rep)s(eat)h(elemen)m(t)h(in)e(the)h(in)m(teratorCol)h(structure) -e(will)h(b)s(e)e(set)0 781 y(equal)d(to)g(the)g(n)m(um)m(b)s(er)e(of)h -(elemen)m(ts)i(in)e(the)h(curren)m(t)f(ro)m(w)g(that)h(is)g(b)s(eing)f -(pro)s(cessed.)0 941 y(One)j(imp)s(ortan)m(t)g(feature)h(of)f(the)h -(iterator)h(is)e(that)h(the)f(\014rst)g(elemen)m(t)i(in)e(eac)m(h)h -(arra)m(y)g(that)g(is)f(passed)g(to)h(the)0 1054 y(w)m(ork)f(function)g -(giv)m(es)h(the)f(v)-5 b(alue)33 b(that)h(is)f(used)f(to)h(represen)m -(t)g(n)m(ull)g(or)g(unde\014ned)d(v)-5 b(alues)34 b(in)e(the)h(arra)m -(y)-8 b(.)49 b(The)0 1167 y(real)41 b(data)g(then)g(b)s(egins)f(with)g -(the)g(second)h(elemen)m(t)h(of)f(the)f(arra)m(y)h(\(i.e.,)k(arra)m -(y[1],)g(not)c(arra)m(y[0]\).)73 b(If)40 b(the)0 1280 -y(\014rst)e(arra)m(y)h(elemen)m(t)h(is)f(equal)g(to)g(zero,)j(then)c -(this)g(indicates)i(that)f(all)h(the)e(arra)m(y)h(elemen)m(ts)h(ha)m(v) -m(e)g(de\014ned)0 1393 y(v)-5 b(alues)33 b(and)f(there)h(are)g(no)g -(unde\014ned)d(v)-5 b(alues.)48 b(If)33 b(arra)m(y[0])h(is)f(not)g -(equal)g(to)g(zero,)i(then)d(this)h(indicates)g(that)0 -1506 y(some)h(of)g(the)g(data)h(v)-5 b(alues)34 b(are)g(unde\014ned)d -(and)j(this)f(v)-5 b(alue)35 b(\(arra)m(y[0]\))h(is)d(used)g(to)i -(represen)m(t)f(them.)51 b(In)33 b(the)0 1619 y(case)i(of)e(output)g -(arra)m(ys)h(\(i.e.,)i(those)e(arra)m(ys)g(that)g(will)g(b)s(e)f -(written)g(bac)m(k)h(to)h(the)e(FITS)g(\014le)g(b)m(y)h(the)g(iterator) -0 1732 y(function)h(after)i(the)f(w)m(ork)f(function)h(exits\))h(the)f -(w)m(ork)g(function)f(m)m(ust)h(set)g(the)g(\014rst)f(arra)m(y)h -(elemen)m(t)h(to)g(the)0 1844 y(desired)g(n)m(ull)g(v)-5 -b(alue)37 b(if)g(necessary)-8 b(,)40 b(otherwise)e(the)f(\014rst)g -(elemen)m(t)h(should)e(b)s(e)h(set)g(to)h(zero)g(to)g(indicate)g(that)0 +%%Page: 84 92 +TeXDict begin 84 91 bop 0 299 a Fj(84)1455 b Fh(CHAPTER)30 +b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 +555 y Fj(If)i(v)-5 b(ariable-length)35 b(arra)m(y)e(columns)g(are)g(b)s +(eing)f(pro)s(cessed,)h(then)g(the)g(iterator)h(will)f(op)s(erate)h(on) +f(one)g(ro)m(w)g(of)0 668 y(the)j(table)g(at)g(a)g(time.)57 +b(In)34 b(this)i(case)g(the)g(the)f(rep)s(eat)h(elemen)m(t)h(in)e(the)h +(in)m(teratorCol)h(structure)e(will)h(b)s(e)e(set)0 781 +y(equal)d(to)g(the)g(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)i(in)e(the)h +(curren)m(t)f(ro)m(w)g(that)h(is)g(b)s(eing)f(pro)s(cessed.)0 +941 y(One)j(imp)s(ortan)m(t)g(feature)h(of)f(the)h(iterator)h(is)e +(that)h(the)f(\014rst)g(elemen)m(t)i(in)e(eac)m(h)h(arra)m(y)g(that)g +(is)f(passed)g(to)h(the)0 1054 y(w)m(ork)f(function)g(giv)m(es)h(the)f +(v)-5 b(alue)33 b(that)h(is)f(used)f(to)h(represen)m(t)g(n)m(ull)g(or)g +(unde\014ned)d(v)-5 b(alues)34 b(in)e(the)h(arra)m(y)-8 +b(.)49 b(The)0 1167 y(real)41 b(data)g(then)g(b)s(egins)f(with)g(the)g +(second)h(elemen)m(t)h(of)f(the)f(arra)m(y)h(\(i.e.,)k(arra)m(y[1],)g +(not)c(arra)m(y[0]\).)73 b(If)40 b(the)0 1280 y(\014rst)e(arra)m(y)h +(elemen)m(t)h(is)f(equal)g(to)g(zero,)j(then)c(this)g(indicates)i(that) +f(all)h(the)e(arra)m(y)h(elemen)m(ts)h(ha)m(v)m(e)g(de\014ned)0 +1393 y(v)-5 b(alues)33 b(and)f(there)h(are)g(no)g(unde\014ned)d(v)-5 +b(alues.)48 b(If)33 b(arra)m(y[0])h(is)f(not)g(equal)g(to)g(zero,)i +(then)d(this)h(indicates)g(that)0 1506 y(some)h(of)g(the)g(data)h(v)-5 +b(alues)34 b(are)g(unde\014ned)d(and)j(this)f(v)-5 b(alue)35 +b(\(arra)m(y[0]\))h(is)d(used)g(to)i(represen)m(t)f(them.)51 +b(In)33 b(the)0 1619 y(case)i(of)e(output)g(arra)m(ys)h(\(i.e.,)i +(those)e(arra)m(ys)g(that)g(will)g(b)s(e)f(written)g(bac)m(k)h(to)h +(the)e(FITS)g(\014le)g(b)m(y)h(the)g(iterator)0 1732 +y(function)h(after)i(the)f(w)m(ork)f(function)h(exits\))h(the)f(w)m +(ork)g(function)f(m)m(ust)h(set)g(the)g(\014rst)f(arra)m(y)h(elemen)m +(t)h(to)g(the)0 1844 y(desired)g(n)m(ull)g(v)-5 b(alue)37 +b(if)g(necessary)-8 b(,)40 b(otherwise)e(the)f(\014rst)g(elemen)m(t)h +(should)e(b)s(e)h(set)g(to)h(zero)g(to)g(indicate)g(that)0 1957 y(there)30 b(are)h(no)e(n)m(ull)h(v)-5 b(alues)31 b(in)e(the)h(output)g(arra)m(y)-8 b(.)42 b(CFITSIO)28 b(de\014nes)h(2)h(v)-5 b(alues,)31 b(FLO)m(A)-8 b(TNULL)e(V)g(ALUE)31 @@ -13768,15 +10745,7 @@ b(The)32 b(length)i(of)f(the)g(\014rst)f(table)i(column)f(or)0 3738 y(image)f(arra)m(y)f(is)f(used)f(b)m(y)i(the)f(iterator)i(if)e (they)h(do)f(not)h(all)g(ha)m(v)m(e)h(the)e(same)h(length.)0 -3890 y -SDict begin H.S end - 0 3890 a 0 3890 a -SDict begin 13.6 H.A end - 0 3890 a 0 3890 a -SDict begin [/View [/XYZ H.V]/Dest (section.6.4) cvn /DEST pdfmark -end - 0 3890 a 179 -x Ff(6.4)135 b(Complete)47 b(List)e(of)g(Iterator)i(Routines)0 +4069 y Ff(6.4)135 b(Complete)47 b(List)e(of)g(Iterator)i(Routines)0 4319 y Fj(All)36 b(of)f(the)g(iterator)h(routines)f(are)g(listed)h(b)s (elo)m(w.)54 b(Most)36 b(of)f(these)h(routines)e(do)h(not)g(ha)m(v)m(e) i(a)e(corresp)s(onding)0 4432 y(short)30 b(function)g(name.)0 @@ -13795,22 +10764,10 @@ (fits_iter_set_colname\(iter)o(ato)o(rCol)41 b(*col,)46 b(char)h(*colname\);)95 5714 y(int)g(fits_iter_set_colnum\(itera)o(tor) o(Col)41 b(*col,)47 b(int)g(colnum\);)p eop end -%%Page: 83 91 -TeXDict begin 83 90 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.83) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(6.4.)72 -b(COMPLETE)29 b(LIST)g(OF)i(ITERA)-8 b(TOR)29 b(R)m(OUTINES)1638 -b Fj(83)95 668 y Fe(int)47 b(fits_iter_set_datatype\(ite)o(rat)o(orCo)o +%%Page: 85 93 +TeXDict begin 85 92 bop 0 299 a Fh(6.4.)72 b(COMPLETE)29 +b(LIST)g(OF)i(ITERA)-8 b(TOR)29 b(R)m(OUTINES)1638 b +Fj(85)95 668 y Fe(int)47 b(fits_iter_set_datatype\(ite)o(rat)o(orCo)o (l)42 b(*col,)k(int)h(datatype\);)95 894 y(int)g (fits_iter_set_iotype\(itera)o(tor)o(Col)41 b(*col,)47 b(int)g(iotype\);)95 1120 y(int)g(fits_iter_set_by_name\(iter)o(ato)o @@ -13818,69 +10775,38 @@ (int)i(datatype,)93 b(int)47 b(iotype\);)95 1458 y(int)g (fits_iter_set_by_num\(itera)o(tor)o(Col)41 b(*col,)47 b(fitsfile)e(*fptr,)477 1571 y(int)i(colnum,)f(int)h(datatype,)93 -b(int)47 b(iotype\);)0 1820 y Fi(2)81 b Fj(Iterator)38 +b(int)47 b(iotype\);)0 1822 y Fi(2)81 b Fj(Iterator)38 b(`accessor')h(functions)e(that)g(return)g(the)g(v)-5 b(alue)38 b(of)f(the)g(elemen)m(t)i(in)e(the)g(iteratorCol)i(structure) -227 1933 y(that)31 b(describ)s(es)f(a)h(particular)f(data)h(column)g -(or)f(arra)m(y)95 2181 y Fe(fitsfile)46 b(*)h -(fits_iter_get_file\(iterato)o(rCol)41 b(*col\);)95 2407 +227 1935 y(that)31 b(describ)s(es)f(a)h(particular)f(data)h(column)g +(or)f(arra)m(y)95 2186 y Fe(fitsfile)46 b(*)h +(fits_iter_get_file\(iterato)o(rCol)41 b(*col\);)95 2412 y(char)47 b(*)h(fits_iter_get_colname\(i)o(ter)o(ator)o(Col)41 -b(*col\);)95 2633 y(int)47 b(fits_iter_get_colnum\(itera)o(tor)o(Col)41 -b(*col\);)95 2858 y(int)47 b(fits_iter_get_datatype\(ite)o(rat)o(orCo)o -(l)42 b(*col\);)95 3084 y(int)47 b(fits_iter_get_iotype\(itera)o(tor)o -(Col)41 b(*col\);)95 3310 y(void)47 b(*)h(fits_iter_get_array\(ite)o -(rat)o(orCo)o(l)42 b(*col\);)95 3536 y(long)47 b +b(*col\);)95 2638 y(int)47 b(fits_iter_get_colnum\(itera)o(tor)o(Col)41 +b(*col\);)95 2863 y(int)47 b(fits_iter_get_datatype\(ite)o(rat)o(orCo)o +(l)42 b(*col\);)95 3089 y(int)47 b(fits_iter_get_iotype\(itera)o(tor)o +(Col)41 b(*col\);)95 3315 y(void)47 b(*)h(fits_iter_get_array\(ite)o +(rat)o(orCo)o(l)42 b(*col\);)95 3541 y(long)47 b (fits_iter_get_tlmin\(itera)o(tor)o(Col)41 b(*col\);)95 -3762 y(long)47 b(fits_iter_get_tlmax\(itera)o(tor)o(Col)41 -b(*col\);)95 3987 y(long)47 b(fits_iter_get_repeat\(iter)o(ato)o(rCol) -41 b(*col\);)95 4213 y(char)47 b(*)h(fits_iter_get_tunit\(ite)o(rat)o -(orCo)o(l)42 b(*col\);)95 4439 y(char)47 b(*)h +3767 y(long)47 b(fits_iter_get_tlmax\(itera)o(tor)o(Col)41 +b(*col\);)95 3992 y(long)47 b(fits_iter_get_repeat\(iter)o(ato)o(rCol) +41 b(*col\);)95 4218 y(char)47 b(*)h(fits_iter_get_tunit\(ite)o(rat)o +(orCo)o(l)42 b(*col\);)95 4444 y(char)47 b(*)h (fits_iter_get_tdisp\(ite)o(rat)o(orCo)o(l)42 b(*col\);)0 -4687 y Fi(3)81 b Fj(The)29 b(CFITSIO)g(iterator)j(function)95 -4936 y Fe(int)47 b(fits_iterate_data\(int)42 b(narrays,)94 -b(iteratorCol)44 b(*data,)i(long)h(offset,)573 5049 y(long)f(nPerLoop,) -573 5161 y(int)h(\(*workFn\)\()e(long)h(totaln,)g(long)h(offset,)f -(long)g(firstn,)1289 5274 y(long)g(nvalues,)g(int)h(narrays,)e -(iteratorCol)g(*data,)1289 5387 y(void)h(*userPointer\),)573 -5500 y(void)g(*userPointer,)573 5613 y(int)h(*status\);)p +4695 y Fi(3)81 b Fj(The)29 b(CFITSIO)g(iterator)j(function)95 +4946 y Fe(int)47 b(fits_iterate_data\(int)42 b(narrays,)94 +b(iteratorCol)44 b(*data,)i(long)h(offset,)573 5059 y(long)f(nPerLoop,) +573 5172 y(int)h(\(*workFn\)\()e(long)h(totaln,)g(long)h(offset,)f +(long)g(firstn,)1289 5284 y(long)g(nvalues,)g(int)h(narrays,)e +(iteratorCol)g(*data,)1289 5397 y(void)h(*userPointer\),)573 +5510 y(void)g(*userPointer,)573 5623 y(int)h(*status\);)p eop end -%%Page: 84 92 -TeXDict begin 84 91 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.84) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(84)1455 -b Fh(CHAPTER)30 b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 -b(TOR)30 b(FUNCTION)p eop end -%%Page: 85 93 -TeXDict begin 85 92 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.85) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.7) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(7)0 +%%Page: 86 94 +TeXDict begin 86 93 bop 0 299 a Fj(86)1455 b Fh(CHAPTER)30 +b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)p +eop end +%%Page: 87 95 +TeXDict begin 87 94 bop 0 1225 a Fg(Chapter)65 b(7)0 1687 y Fm(W)-19 b(orld)77 b(Co)6 b(ordinate)78 b(System)f(Routines)0 2180 y Fj(The)36 b(FITS)g(comm)m(unit)m(y)h(has)f(adopted)h(a)g(set)g (of)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tions)h(that)f(de\014ne)f(the)h @@ -13939,40 +10865,28 @@ b(in)g(a)f(binary)g(table\))i(then)e(it)h(will)g(\014rst)f(con)m(v)m (ert)i(that)f(header)g(bac)m(k)g(to)g(that)g(of)g(a)g(normal)g(FITS)227 5714 y(image)k(b)s(efore)e(concatenating)j(the)d(k)m(eyw)m(ords.)1905 -5942 y(85)p eop end -%%Page: 86 94 -TeXDict begin 86 93 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.86) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(86)1169 -b Fh(CHAPTER)29 b(7.)112 b(W)m(ORLD)31 b(COORDINA)-8 -b(TE)30 b(SYSTEM)f(R)m(OUTINES)227 555 y Fj(Selected)h(k)m(eyw)m(ords)e -(ma)m(y)h(b)s(e)e(excluded)h(from)g(the)g(returned)f(c)m(haracter)j -(string.)40 b(If)27 b(the)i(second)f(param-)227 668 y(eter)h(\(no)s -(commen)m(ts\))g(is)f(TR)m(UE)g(\(nonzero\))h(then)e(an)m(y)i(COMMENT,) -f(HISTOR)-8 b(Y,)27 b(or)h(blank)g(k)m(eyw)m(ords)227 -781 y(in)i(the)h(header)f(will)h(not)f(b)s(e)g(copied)h(to)g(the)g -(output)f(string.)227 924 y(The)25 b('exclist')j(parameter)e(ma)m(y)g -(b)s(e)f(used)g(to)h(supply)e(a)i(list)h(of)e(k)m(eyw)m(ords)h(that)h -(are)f(to)g(b)s(e)f(excluded)g(from)227 1037 y(the)k(output)g(c)m -(haracter)h(string.)41 b(Wild)29 b(card)g(c)m(haracters)h(\(*,)g(?,)f -(and)g(#\))g(ma)m(y)g(b)s(e)f(used)g(in)h(the)g(excluded)227 -1150 y(k)m(eyw)m(ord)h(names.)41 b(If)29 b(no)g(additional)i(k)m(eyw)m -(ords)f(are)g(to)g(b)s(e)f(excluded,)h(then)f(set)h(nexc)g(=)f(0)h(and) -f(sp)s(ecify)227 1263 y(NULL)i(for)f(the)g(the)h(**exclist)i -(parameter.)95 1478 y Fe(int)47 b(fits_hdr2str)286 1591 -y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e(int)i -(nexc,)286 1704 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i -(*status\))95 1930 y(int)g(fits_convert_hdr2str)c(/)k(ffcnvthdr2str)286 +5942 y(87)p eop end +%%Page: 88 96 +TeXDict begin 88 95 bop 0 299 a Fj(88)1169 b Fh(CHAPTER)29 +b(7.)112 b(W)m(ORLD)31 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(R)m(OUTINES)227 +555 y Fj(Selected)h(k)m(eyw)m(ords)e(ma)m(y)h(b)s(e)e(excluded)h(from)g +(the)g(returned)f(c)m(haracter)j(string.)40 b(If)27 b(the)i(second)f +(param-)227 668 y(eter)h(\(no)s(commen)m(ts\))g(is)f(TR)m(UE)g +(\(nonzero\))h(then)e(an)m(y)i(COMMENT,)f(HISTOR)-8 b(Y,)27 +b(or)h(blank)g(k)m(eyw)m(ords)227 781 y(in)i(the)h(header)f(will)h(not) +f(b)s(e)g(copied)h(to)g(the)g(output)f(string.)227 924 +y(The)25 b('exclist')j(parameter)e(ma)m(y)g(b)s(e)f(used)g(to)h(supply) +e(a)i(list)h(of)e(k)m(eyw)m(ords)h(that)h(are)f(to)g(b)s(e)f(excluded)g +(from)227 1037 y(the)k(output)g(c)m(haracter)h(string.)41 +b(Wild)29 b(card)g(c)m(haracters)h(\(*,)g(?,)f(and)g(#\))g(ma)m(y)g(b)s +(e)f(used)g(in)h(the)g(excluded)227 1150 y(k)m(eyw)m(ord)h(names.)41 +b(If)29 b(no)g(additional)i(k)m(eyw)m(ords)f(are)g(to)g(b)s(e)f +(excluded,)h(then)f(set)h(nexc)g(=)f(0)h(and)f(sp)s(ecify)227 +1263 y(NULL)i(for)f(the)g(the)h(**exclist)i(parameter.)95 +1478 y Fe(int)47 b(fits_hdr2str)286 1591 y(\(fitsfile)f(*fptr,)g(int)h +(nocomments,)d(char)j(**exclist,)e(int)i(nexc,)286 1704 +y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i(*status\))95 +1930 y(int)g(fits_convert_hdr2str)c(/)k(ffcnvthdr2str)286 2043 y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e (int)i(nexc,)286 2155 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i (*status\))0 2371 y Fi(2)81 b Fj(The)24 b(follo)m(wing)j(CFITSIO)d @@ -13988,73 +10902,54 @@ 2822 y(pro)m(vided)c(with)g(the)h(W)m(CSLIB)f(library)g(for)g(more)h (information.)95 3038 y Fe(int)47 b(fits_read_wcstab)334 3151 y(\(fitsfile)e(*fptr,)h(int)h(nwtb,)g(wtbarr)f(*wtb,)g(int)h -(*status\);)0 3301 y -SDict begin H.S end - 0 3301 a 0 3301 a -SDict begin 13.6 H.A end - 0 3301 a 0 3301 -a -SDict begin [/View [/XYZ H.V]/Dest (section.7.1) cvn /DEST pdfmark -end - 0 3301 a 176 x Ff(7.1)180 b(Self-con)l(tained)46 b(W)l(CS)f(Routines) -0 3728 y Fj(The)21 b(follo)m(wing)i(routines)e(DO)g(NOT)g(supp)s(ort)f -(the)h(more)h(recen)m(t)g(W)m(CS)f(con)m(v)m(en)m(tions)j(that)d(ha)m -(v)m(e)i(b)s(een)e(appro)m(v)m(ed)0 3841 y(as)34 b(part)g(of)g(the)g -(FITS)f(standard.)50 b(Consequen)m(tly)-8 b(,)35 b(the)f(follo)m(wing)i -(routines)d(ARE)h(NO)m(W)h(DEPRECA)-8 b(TED.)0 3953 y(It)30 -b(is)g(STR)m(ONGL)-8 b(Y)30 b(RECOMMENDED)h(that)g(soft)m(w)m(are)g -(dev)m(elop)s(ers)f(not)h(use)f(these)g(routines,)g(and)g(instead)0 -4066 y(use)g(an)g(external)i(W)m(CS)e(library)-8 b(,)31 -b(as)f(describ)s(ed)f(in)i(the)f(previous)g(section.)0 -4227 y(These)21 b(routines)g(are)g(included)f(mainly)h(for)g(bac)m(kw)m -(ard)g(compatibilit)m(y)j(with)c(existing)i(soft)m(w)m(are.)39 -b(They)21 b(supp)s(ort)0 4339 y(the)30 b(follo)m(wing)i(standard)d(map) -g(pro)5 b(jections:)41 b(-SIN,)30 b(-T)-8 b(AN,)31 b(-AR)m(C,)g(-NCP)-8 -b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 4452 -y(are)f(the)g(legal)h(v)-5 b(alues)29 b(for)f(the)h(co)s(ordt)m(yp)s(e) -f(parameter\).)41 b(These)28 b(routines)h(are)g(based)f(on)g(similar)h -(functions)f(in)0 4565 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m -(tities)i(are)f(giv)m(en)g(in)f(units)g(of)g(degrees.)0 -4781 y Fi(1)81 b Fj(Get)41 b(the)f(v)-5 b(alues)41 b(of)g(the)f(basic)h -(set)g(of)f(standard)g(FITS)f(celestial)k(co)s(ordinate)e(system)g(k)m -(eyw)m(ords)f(from)227 4894 y(the)33 b(header)f(of)h(a)f(FITS)g(image)i -(\(i.e.,)g(the)f(primary)f(arra)m(y)g(or)h(an)f(IMA)m(GE)i -(extension\).)47 b(These)33 b(v)-5 b(alues)227 5006 y(ma)m(y)35 -b(then)f(b)s(e)g(passed)f(to)i(the)g(\014ts)p 1462 5006 -28 4 v 32 w(pix)p 1618 5006 V 32 w(to)p 1730 5006 V 34 -w(w)m(orld)f(and)g(\014ts)p 2321 5006 V 32 w(w)m(orld)p -2573 5006 V 33 w(to)p 2686 5006 V 33 w(pix)g(routines)g(that)h(p)s -(erform)e(the)227 5119 y(co)s(ordinate)f(transformations.)42 -b(If)30 b(an)m(y)h(or)f(all)i(of)f(the)g(W)m(CS)f(k)m(eyw)m(ords)h(are) -g(not)g(presen)m(t,)g(then)g(default)227 5232 y(v)-5 -b(alues)26 b(will)f(b)s(e)f(returned.)38 b(If)24 b(the)i(\014rst)e(co)s -(ordinate)i(axis)f(is)g(the)g(declination-lik)m(e)j(co)s(ordinate,)f -(then)e(this)227 5345 y(routine)31 b(will)f(sw)m(ap)h(them)f(so)h(that) -g(the)f(longitudinal-lik)m(e)j(co)s(ordinate)e(is)f(returned)g(as)g -(the)h(\014rst)e(axis.)227 5488 y(The)34 b(\014rst)g(routine)h -(\(\013gics\))h(returns)e(the)h(primary)f(W)m(CS,)g(whereas)h(the)g -(second)g(routine)f(returns)g(the)227 5601 y(particular)24 -b(v)m(ersion)h(of)f(the)g(W)m(CS)f(sp)s(eci\014ed)g(b)m(y)h(the)g('v)m -(ersion')h(parameter,)h(whic)m(h)d(m)m(uc)m(h)h(b)s(e)f(a)h(c)m -(haracter)227 5714 y(ranging)31 b(from)f('A')h(to)g('Z')f(\(or)h(a)g -(blank)f(c)m(haracter,)i(whic)m(h)e(is)g(equiv)-5 b(alen)m(t)32 -b(to)f(calling)h(\013gics\).)p eop end -%%Page: 87 95 -TeXDict begin 87 94 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.87) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(7.1.)113 -b(SELF-CONT)-8 b(AINED)30 b(W)m(CS)g(R)m(OUTINES)1984 -b Fj(87)227 555 y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p +(*status\);)0 3477 y Ff(7.1)180 b(Self-con)l(tained)46 +b(W)l(CS)f(Routines)0 3728 y Fj(The)21 b(follo)m(wing)i(routines)e(DO)g +(NOT)g(supp)s(ort)f(the)h(more)h(recen)m(t)g(W)m(CS)f(con)m(v)m(en)m +(tions)j(that)d(ha)m(v)m(e)i(b)s(een)e(appro)m(v)m(ed)0 +3841 y(as)34 b(part)g(of)g(the)g(FITS)f(standard.)50 +b(Consequen)m(tly)-8 b(,)35 b(the)f(follo)m(wing)i(routines)d(ARE)h(NO) +m(W)h(DEPRECA)-8 b(TED.)0 3953 y(It)30 b(is)g(STR)m(ONGL)-8 +b(Y)30 b(RECOMMENDED)h(that)g(soft)m(w)m(are)g(dev)m(elop)s(ers)f(not)h +(use)f(these)g(routines,)g(and)g(instead)0 4066 y(use)g(an)g(external)i +(W)m(CS)e(library)-8 b(,)31 b(as)f(describ)s(ed)f(in)i(the)f(previous)g +(section.)0 4227 y(These)21 b(routines)g(are)g(included)f(mainly)h(for) +g(bac)m(kw)m(ard)g(compatibilit)m(y)j(with)c(existing)i(soft)m(w)m +(are.)39 b(They)21 b(supp)s(ort)0 4339 y(the)30 b(follo)m(wing)i +(standard)d(map)g(pro)5 b(jections:)41 b(-SIN,)30 b(-T)-8 +b(AN,)31 b(-AR)m(C,)g(-NCP)-8 b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h +(\(these)0 4452 y(are)f(the)g(legal)h(v)-5 b(alues)29 +b(for)f(the)h(co)s(ordt)m(yp)s(e)f(parameter\).)41 b(These)28 +b(routines)h(are)g(based)f(on)g(similar)h(functions)f(in)0 +4565 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m(tities)i(are)f +(giv)m(en)g(in)f(units)g(of)g(degrees.)0 4781 y Fi(1)81 +b Fj(Get)41 b(the)f(v)-5 b(alues)41 b(of)g(the)f(basic)h(set)g(of)f +(standard)g(FITS)f(celestial)k(co)s(ordinate)e(system)g(k)m(eyw)m(ords) +f(from)227 4894 y(the)33 b(header)f(of)h(a)f(FITS)g(image)i(\(i.e.,)g +(the)f(primary)f(arra)m(y)g(or)h(an)f(IMA)m(GE)i(extension\).)47 +b(These)33 b(v)-5 b(alues)227 5006 y(ma)m(y)35 b(then)f(b)s(e)g(passed) +f(to)i(the)g(\014ts)p 1462 5006 28 4 v 32 w(pix)p 1618 +5006 V 32 w(to)p 1730 5006 V 34 w(w)m(orld)f(and)g(\014ts)p +2321 5006 V 32 w(w)m(orld)p 2573 5006 V 33 w(to)p 2686 +5006 V 33 w(pix)g(routines)g(that)h(p)s(erform)e(the)227 +5119 y(co)s(ordinate)f(transformations.)42 b(If)30 b(an)m(y)h(or)f(all) +i(of)f(the)g(W)m(CS)f(k)m(eyw)m(ords)h(are)g(not)g(presen)m(t,)g(then)g +(default)227 5232 y(v)-5 b(alues)26 b(will)f(b)s(e)f(returned.)38 +b(If)24 b(the)i(\014rst)e(co)s(ordinate)i(axis)f(is)g(the)g +(declination-lik)m(e)j(co)s(ordinate,)f(then)e(this)227 +5345 y(routine)31 b(will)f(sw)m(ap)h(them)f(so)h(that)g(the)f +(longitudinal-lik)m(e)j(co)s(ordinate)e(is)f(returned)g(as)g(the)h +(\014rst)e(axis.)227 5488 y(The)34 b(\014rst)g(routine)h(\(\013gics\))h +(returns)e(the)h(primary)f(W)m(CS,)g(whereas)h(the)g(second)g(routine)f +(returns)g(the)227 5601 y(particular)24 b(v)m(ersion)h(of)f(the)g(W)m +(CS)f(sp)s(eci\014ed)g(b)m(y)h(the)g('v)m(ersion')h(parameter,)h(whic)m +(h)d(m)m(uc)m(h)h(b)s(e)f(a)h(c)m(haracter)227 5714 y(ranging)31 +b(from)f('A')h(to)g('Z')f(\(or)h(a)g(blank)f(c)m(haracter,)i(whic)m(h)e +(is)g(equiv)-5 b(alen)m(t)32 b(to)f(calling)h(\013gics\).)p +eop end +%%Page: 89 97 +TeXDict begin 89 96 bop 0 299 a Fh(7.1.)113 b(SELF-CONT)-8 +b(AINED)30 b(W)m(CS)g(R)m(OUTINES)1984 b Fj(89)227 555 +y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p 1454 555 28 4 v 32 w(i')g(W)m(CS)f(transformation)h(matrix)g(k)m(eyw)m (ords)f(instead)h(of)f(old)h(st)m(yle)227 668 y('CDEL)-8 b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)f @@ -14115,48 +11010,16 @@ (cation)g(corresp)s(onding)e(to)i(the)f(input)f(celestial)k(co)s (ordinate)e(in)f(the)227 5461 y(image.)95 5714 y Fe(int)47 b(fits_world_to_pix)c(/)48 b(ffxypx)p eop end -%%Page: 88 96 -TeXDict begin 88 95 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.88) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(88)1169 -b Fh(CHAPTER)29 b(7.)112 b(W)m(ORLD)31 b(COORDINA)-8 -b(TE)30 b(SYSTEM)f(R)m(OUTINES)286 555 y Fe(\(double)46 -b(xpos,)h(double)f(ypos,)g(double)g(xrefval,)g(double)g(yrefval,)334 -668 y(double)g(xrefpix,)g(double)g(yrefpix,)f(double)h(xinc,)h(double)f -(yinc,)334 781 y(double)g(rot,)h(char)f(*coordtype,)f(>)j(double)e -(*xpix,)g(double)g(*ypix,)334 894 y(int)h(*status\))p -eop end -%%Page: 89 97 -TeXDict begin 89 96 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.89) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.8) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(8)0 +%%Page: 90 98 +TeXDict begin 90 97 bop 0 299 a Fj(90)1169 b Fh(CHAPTER)29 +b(7.)112 b(W)m(ORLD)31 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(R)m(OUTINES)286 +555 y Fe(\(double)46 b(xpos,)h(double)f(ypos,)g(double)g(xrefval,)g +(double)g(yrefval,)334 668 y(double)g(xrefpix,)g(double)g(yrefpix,)f +(double)h(xinc,)h(double)f(yinc,)334 781 y(double)g(rot,)h(char)f +(*coordtype,)f(>)j(double)e(*xpix,)g(double)g(*ypix,)334 +894 y(int)h(*status\))p eop end +%%Page: 91 99 +TeXDict begin 91 98 bop 0 1225 a Fg(Chapter)65 b(8)0 1687 y Fm(Hierarc)-6 b(hical)76 b(Grouping)h(Routines)0 2180 y Fj(These)34 b(functions)h(allo)m(w)h(for)e(the)h(creation)h(and) e(manipulation)h(of)g(FITS)f(HDU)h(Groups,)h(as)f(de\014ned)e(in)h("A)0 @@ -14220,178 +11083,146 @@ b(alue)27 b(of)g(zero)0 5625 y(\(0\).)41 b(Character)27 b(\014eld)f(columns)h(\(MEMBER)p 1607 5625 V 34 w(XTENSION,)f(MEMBER)p 2600 5625 V 33 w(NAME,)i(MEMBER)p 3388 5625 V 34 w(URI)p -3590 5625 V 32 w(TYPE,)1905 5942 y(89)p eop end -%%Page: 90 98 -TeXDict begin 90 97 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.90) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(90)1338 -b Fh(CHAPTER)29 b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m -(OUTINES)0 555 y Fj(MEMBER)p 426 555 28 4 v 33 w(LOCA)-8 -b(TION\))30 b(utilize)i(an)e(ASCI)s(I)f(n)m(ull)h(c)m(haracter)i(to)f -(denote)g(a)g(n)m(ull)f(\014eld)g(v)-5 b(alue.)0 715 -y(The)23 b(grouping)g(supp)s(ort)f(functions)h(b)s(elong)h(to)g(t)m(w)m -(o)h(basic)f(categories:)40 b(those)24 b(that)h(w)m(ork)e(with)h -(grouping)f(table)0 828 y(HDUs)j(\(\013gt**\))j(and)c(those)h(that)h(w) -m(ork)f(with)f(mem)m(b)s(er)h(HDUs)g(\(\013gm**\).)41 -b(Tw)m(o)26 b(functions,)h(\014ts)p 3360 828 V 32 w(cop)m(y)p -3573 828 V 34 w(group\(\))0 941 y(and)40 b(\014ts)p 314 -941 V 33 w(remo)m(v)m(e)p 626 941 V 34 w(group\(\),)k(ha)m(v)m(e)e(the) -f(option)g(to)h(recursiv)m(ely)f(cop)m(y/delete)j(en)m(tire)e(groups.) -71 b(Care)41 b(should)0 1054 y(b)s(e)33 b(tak)m(en)h(when)f(emplo)m -(ying)h(these)g(functions)f(in)g(recursiv)m(e)h(mo)s(de)f(as)g(p)s(o)s -(orly)g(de\014ned)f(groups)h(could)g(cause)0 1167 y(unpredictable)25 +3590 5625 V 32 w(TYPE,)1905 5942 y(91)p eop end +%%Page: 92 100 +TeXDict begin 92 99 bop 0 299 a Fj(92)1338 b Fh(CHAPTER)29 +b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)0 +555 y Fj(MEMBER)p 426 555 28 4 v 33 w(LOCA)-8 b(TION\))30 +b(utilize)i(an)e(ASCI)s(I)f(n)m(ull)h(c)m(haracter)i(to)f(denote)g(a)g +(n)m(ull)f(\014eld)g(v)-5 b(alue.)0 715 y(The)23 b(grouping)g(supp)s +(ort)f(functions)h(b)s(elong)h(to)g(t)m(w)m(o)h(basic)f(categories:)40 +b(those)24 b(that)h(w)m(ork)e(with)h(grouping)f(table)0 +828 y(HDUs)j(\(\013gt**\))j(and)c(those)h(that)h(w)m(ork)f(with)f(mem)m +(b)s(er)h(HDUs)g(\(\013gm**\).)41 b(Tw)m(o)26 b(functions,)h(\014ts)p +3360 828 V 32 w(cop)m(y)p 3573 828 V 34 w(group\(\))0 +941 y(and)40 b(\014ts)p 314 941 V 33 w(remo)m(v)m(e)p +626 941 V 34 w(group\(\),)k(ha)m(v)m(e)e(the)f(option)g(to)h(recursiv)m +(ely)f(cop)m(y/delete)j(en)m(tire)e(groups.)71 b(Care)41 +b(should)0 1054 y(b)s(e)33 b(tak)m(en)h(when)f(emplo)m(ying)h(these)g +(functions)f(in)g(recursiv)m(e)h(mo)s(de)f(as)g(p)s(o)s(orly)g +(de\014ned)f(groups)h(could)g(cause)0 1167 y(unpredictable)25 b(results.)39 b(The)25 b(problem)g(of)h(a)g(grouping)f(table)i (directly)f(or)g(indirectly)g(referencing)g(itself)g(\(th)m(us)0 1280 y(creating)41 b(an)f(in\014nite)f(lo)s(op\))i(is)e(protected)i (against;)46 b(in)39 b(fact,)44 b(neither)39 b(function)h(will)g (attempt)h(to)f(cop)m(y)h(or)0 1393 y(delete)32 b(an)e(HDU)h(t)m(wice.) -0 1548 y -SDict begin H.S end - 0 1548 a 0 1548 a -SDict begin 13.6 H.A end - 0 1548 a 0 1548 a -SDict begin [/View [/XYZ H.V]/Dest (section.8.1) cvn /DEST pdfmark -end - 0 1548 a -197 x Ff(8.1)135 b(Grouping)45 b(T)-11 b(able)45 b(Routines)0 -1997 y Fi(1)81 b Fj(Create)34 b(\(app)s(end\))f(a)h(grouping)f(table)i +0 1749 y Ff(8.1)135 b(Grouping)45 b(T)-11 b(able)45 b(Routines)0 +2003 y Fi(1)81 b Fj(Create)34 b(\(app)s(end\))f(a)h(grouping)f(table)i (at)f(the)g(end)f(of)h(the)g(curren)m(t)f(FITS)g(\014le)h(p)s(oin)m -(ted)g(to)g(b)m(y)g(fptr.)49 b(The)227 2110 y(grpname)28 +(ted)g(to)g(b)m(y)g(fptr.)49 b(The)227 2116 y(grpname)28 b(parameter)h(pro)m(vides)g(the)g(grouping)f(table)h(name)g(\(GRPNAME)g (k)m(eyw)m(ord)g(v)-5 b(alue\))29 b(and)f(ma)m(y)227 -2223 y(b)s(e)42 b(set)h(to)g(NULL)f(if)g(no)g(group)g(name)g(is)h(to)g +2229 y(b)s(e)42 b(set)h(to)g(NULL)f(if)g(no)g(group)g(name)g(is)h(to)g (b)s(e)e(sp)s(eci\014ed.)76 b(The)42 b(groupt)m(yp)s(e)g(parameter)g -(sp)s(eci\014es)227 2336 y(the)c(desired)g(structure)f(of)h(the)g +(sp)s(eci\014es)227 2341 y(the)c(desired)g(structure)f(of)h(the)g (grouping)f(table)i(and)e(ma)m(y)i(tak)m(e)g(on)f(the)g(v)-5 -b(alues:)56 b(GT)p 3355 2336 28 4 v 33 w(ID)p 3490 2336 -V 33 w(ALL)p 3705 2336 V 32 w(URI)227 2449 y(\(all)35 -b(columns)e(created\),)j(GT)p 1274 2449 V 33 w(ID)p 1409 -2449 V 33 w(REF)d(\(ID)h(b)m(y)g(reference)g(columns\),)g(GT)p -2904 2449 V 33 w(ID)p 3039 2449 V 33 w(POS)e(\(ID)i(b)m(y)g(p)s -(osition)227 2562 y(columns\),)48 b(GT)p 801 2562 V 32 -w(ID)p 935 2562 V 33 w(ALL)c(\(ID)g(b)m(y)f(reference)i(and)e(p)s -(osition)g(columns\),)48 b(GT)p 3028 2562 V 32 w(ID)p -3162 2562 V 33 w(REF)p 3383 2562 V 33 w(URI)c(\(ID)g(b)m(y)227 -2674 y(reference)35 b(and)e(FITS)g(\014le)i(URI)e(columns\),)j(and)d -(GT)p 2129 2674 V 33 w(ID)p 2264 2674 V 33 w(POS)p 2481 -2674 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s(osition)g(and)g(FITS)f(\014le)227 -2787 y(URI)e(columns\).)95 3063 y Fe(int)47 b(fits_create_group)c(/)48 -b(ffgtcr)286 3176 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h -(grouptype,)e(>)i(int)g(*status\))0 3451 y Fi(2)81 b +b(alues:)56 b(GT)p 3355 2341 V 33 w(ID)p 3490 2341 V +33 w(ALL)p 3705 2341 V 32 w(URI)227 2454 y(\(all)35 b(columns)e +(created\),)j(GT)p 1274 2454 V 33 w(ID)p 1409 2454 V +33 w(REF)d(\(ID)h(b)m(y)g(reference)g(columns\),)g(GT)p +2904 2454 V 33 w(ID)p 3039 2454 V 33 w(POS)e(\(ID)i(b)m(y)g(p)s +(osition)227 2567 y(columns\),)48 b(GT)p 801 2567 V 32 +w(ID)p 935 2567 V 33 w(ALL)c(\(ID)g(b)m(y)f(reference)i(and)e(p)s +(osition)g(columns\),)48 b(GT)p 3028 2567 V 32 w(ID)p +3162 2567 V 33 w(REF)p 3383 2567 V 33 w(URI)c(\(ID)g(b)m(y)227 +2680 y(reference)35 b(and)e(FITS)g(\014le)i(URI)e(columns\),)j(and)d +(GT)p 2129 2680 V 33 w(ID)p 2264 2680 V 33 w(POS)p 2481 +2680 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s(osition)g(and)g(FITS)f(\014le)227 +2793 y(URI)e(columns\).)95 3072 y Fe(int)47 b(fits_create_group)c(/)48 +b(ffgtcr)286 3185 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h +(grouptype,)e(>)i(int)g(*status\))0 3463 y Fi(2)81 b Fj(Create)26 b(\(insert\))g(a)f(grouping)g(table)h(just)f(after)h(the)f (CHDU)h(of)g(the)f(curren)m(t)g(FITS)g(\014le)g(p)s(oin)m(ted)g(to)h(b) -m(y)g(fptr.)227 3564 y(All)k(HDUs)f(b)s(elo)m(w)g(the)g(the)g +m(y)g(fptr.)227 3576 y(All)k(HDUs)f(b)s(elo)m(w)g(the)g(the)g (insertion)g(p)s(oin)m(t)f(will)i(b)s(e)e(shifted)g(do)m(wn)m(w)m(ards) -g(to)i(mak)m(e)g(ro)s(om)e(for)g(the)h(new)227 3677 y(HDU.)23 +g(to)i(mak)m(e)g(ro)s(om)e(for)g(the)h(new)227 3689 y(HDU.)23 b(The)e(grpname)h(parameter)g(pro)m(vides)f(the)h(grouping)g(table)g (name)g(\(GRPNAME)h(k)m(eyw)m(ord)f(v)-5 b(alue\))227 -3790 y(and)25 b(ma)m(y)i(b)s(e)e(set)h(to)h(NULL)e(if)h(no)g(group)f +3802 y(and)25 b(ma)m(y)i(b)s(e)e(set)h(to)h(NULL)e(if)h(no)g(group)f (name)h(is)g(to)g(b)s(e)f(sp)s(eci\014ed.)39 b(The)25 -b(groupt)m(yp)s(e)h(parameter)g(sp)s(eci-)227 3903 y(\014es)g(the)h +b(groupt)m(yp)s(e)h(parameter)g(sp)s(eci-)227 3915 y(\014es)g(the)h (desired)f(structure)g(of)h(the)f(grouping)g(table)i(and)e(ma)m(y)h -(tak)m(e)h(on)e(the)h(v)-5 b(alues:)39 b(GT)p 3355 3903 -V 33 w(ID)p 3490 3903 V 33 w(ALL)p 3705 3903 V 32 w(URI)227 -4016 y(\(all)c(columns)e(created\),)j(GT)p 1274 4016 -V 33 w(ID)p 1409 4016 V 33 w(REF)d(\(ID)h(b)m(y)g(reference)g -(columns\),)g(GT)p 2904 4016 V 33 w(ID)p 3039 4016 V -33 w(POS)e(\(ID)i(b)m(y)g(p)s(osition)227 4129 y(columns\),)29 -b(GT)p 782 4129 V 33 w(ID)p 917 4129 V 33 w(ALL)f(\(ID)g(b)m(y)g +(tak)m(e)h(on)e(the)h(v)-5 b(alues:)39 b(GT)p 3355 3915 +V 33 w(ID)p 3490 3915 V 33 w(ALL)p 3705 3915 V 32 w(URI)227 +4028 y(\(all)c(columns)e(created\),)j(GT)p 1274 4028 +V 33 w(ID)p 1409 4028 V 33 w(REF)d(\(ID)h(b)m(y)g(reference)g +(columns\),)g(GT)p 2904 4028 V 33 w(ID)p 3039 4028 V +33 w(POS)e(\(ID)i(b)m(y)g(p)s(osition)227 4141 y(columns\),)29 +b(GT)p 782 4141 V 33 w(ID)p 917 4141 V 33 w(ALL)f(\(ID)g(b)m(y)g (reference)h(and)e(p)s(osition)h(columns\),)h(GT)p 2897 -4129 V 33 w(ID)p 3032 4129 V 33 w(REF)p 3253 4129 V 32 -w(URI)f(\(ID)h(b)m(y)f(ref-)227 4242 y(erence)g(and)e(FITS)h(\014le)g -(URI)g(columns\),)h(and)e(GT)p 1976 4242 V 33 w(ID)p -2111 4242 V 33 w(POS)p 2328 4242 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s -(osition)g(and)g(FITS)f(\014le)h(URI)227 4355 y(columns\))k(.)95 -4630 y Fe(int)47 b(fits_insert_group)c(/)48 b(ffgtis)286 -4743 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h(grouptype,)e(>)i -(int)g(*status\))0 5019 y Fi(3)81 b Fj(Change)20 b(the)h(structure)f +4141 V 33 w(ID)p 3032 4141 V 33 w(REF)p 3253 4141 V 32 +w(URI)f(\(ID)h(b)m(y)f(ref-)227 4253 y(erence)g(and)e(FITS)h(\014le)g +(URI)g(columns\),)h(and)e(GT)p 1976 4253 V 33 w(ID)p +2111 4253 V 33 w(POS)p 2328 4253 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s +(osition)g(and)g(FITS)f(\014le)h(URI)227 4366 y(columns\))k(.)95 +4645 y Fe(int)47 b(fits_insert_group)c(/)48 b(ffgtis)286 +4758 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h(grouptype,)e(>)i +(int)g(*status\))0 5036 y Fi(3)81 b Fj(Change)20 b(the)h(structure)f (of)h(an)g(existing)g(grouping)g(table)g(p)s(oin)m(ted)g(to)g(b)m(y)g (gfptr.)37 b(The)20 b(groupt)m(yp)s(e)g(parameter)227 -5132 y(\(see)27 b(\014ts)p 532 5132 V 32 w(create)p 800 -5132 V 35 w(group\(\))e(for)h(v)-5 b(alid)26 b(parameter)g(v)-5 +5149 y(\(see)27 b(\014ts)p 532 5149 V 32 w(create)p 800 +5149 V 35 w(group\(\))e(for)h(v)-5 b(alid)26 b(parameter)g(v)-5 b(alues\))26 b(sp)s(eci\014es)g(the)f(new)g(structure)h(of)f(the)h -(grouping)227 5245 y(table.)44 b(This)30 b(function)h(only)g(adds)g(or) +(grouping)227 5262 y(table.)44 b(This)30 b(function)h(only)g(adds)g(or) g(remo)m(v)m(es)h(grouping)f(table)h(columns,)f(it)h(do)s(es)f(not)g -(add)g(or)g(delete)227 5357 y(group)26 b(mem)m(b)s(ers)f(\(i.e.,)k +(add)g(or)g(delete)227 5375 y(group)26 b(mem)m(b)s(ers)f(\(i.e.,)k (table)e(ro)m(ws\).)40 b(If)26 b(the)g(grouping)g(table)h(already)g -(has)f(the)h(desired)e(structure)h(then)227 5470 y(no)35 +(has)f(the)h(desired)e(structure)h(then)227 5488 y(no)35 b(op)s(erations)f(are)h(p)s(erformed)e(and)h(function)g(simply)h (returns)e(with)h(a)h(\(0\))g(success)g(status)g(co)s(de.)53 -b(If)227 5583 y(the)32 b(requested)g(structure)g(c)m(hange)h(creates)g +b(If)227 5601 y(the)32 b(requested)g(structure)g(c)m(hange)h(creates)g (new)f(grouping)g(table)h(columns,)f(then)g(the)g(column)g(v)-5 -b(alues)227 5696 y(for)30 b(all)i(existing)f(mem)m(b)s(ers)f(will)g(b)s +b(alues)227 5714 y(for)30 b(all)i(existing)f(mem)m(b)s(ers)f(will)g(b)s (e)g(\014lled)g(with)g(the)h(n)m(ull)f(v)-5 b(alues)31 b(appropriate)f(to)h(the)g(column)f(t)m(yp)s(e.)p eop end -%%Page: 91 99 -TeXDict begin 91 98 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.91) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(8.1.)72 -b(GR)m(OUPING)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)2235 -b Fj(91)95 555 y Fe(int)47 b(fits_change_group)c(/)48 -b(ffgtch)286 668 y(\(fitsfile)e(*gfptr,)f(int)i(grouptype,)e(>)j(int)f -(*status\))0 905 y Fi(4)81 b Fj(Remo)m(v)m(e)41 b(the)e(group)g -(de\014ned)f(b)m(y)h(the)h(grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m -(y)g(gfptr,)h(and)e(optionally)i(all)f(the)227 1018 y(group)29 -b(mem)m(b)s(er)f(HDUs.)41 b(The)28 b(rmopt)h(parameter)g(sp)s -(eci\014es)g(the)g(action)h(to)g(b)s(e)e(tak)m(en)i(for)f(all)h(mem)m -(b)s(ers)227 1131 y(of)d(the)g(group)g(de\014ned)e(b)m(y)i(the)g -(grouping)g(table.)40 b(V)-8 b(alid)28 b(v)-5 b(alues)27 -b(are:)40 b(OPT)p 2848 1131 28 4 v 32 w(RM)p 3030 1131 -V 33 w(GPT)26 b(\(delete)j(only)e(the)227 1244 y(grouping)33 -b(table\))i(and)e(OPT)p 1259 1244 V 32 w(RM)p 1441 1244 -V 33 w(ALL)g(\(recursiv)m(ely)h(delete)h(all)f(HDUs)g(that)g(b)s(elong) -f(to)h(the)g(group\).)227 1357 y(An)m(y)d(groups)g(con)m(taining)i(the) -e(grouping)g(table)h(gfptr)e(as)i(a)f(mem)m(b)s(er)g(are)g(up)s(dated,) -f(and)h(if)g(rmopt)g(==)227 1470 y(OPT)p 431 1470 V 32 -w(RM)p 613 1470 V 33 w(GPT)21 b(all)h(mem)m(b)s(ers)f(ha)m(v)m(e)h -(their)f(GRPIDn)g(and)g(GRPLCn)f(k)m(eyw)m(ords)h(up)s(dated)f -(accordingly)-8 b(.)227 1582 y(If)36 b(rmopt)g(==)g(OPT)p -985 1582 V 32 w(RM)p 1167 1582 V 33 w(ALL,)g(then)g(other)h(groups)e -(that)i(con)m(tain)h(the)e(deleted)h(mem)m(b)s(ers)f(of)g(gfptr)227 -1695 y(are)31 b(up)s(dated)e(to)i(re\015ect)g(the)g(deletion)g -(accordingly)-8 b(.)95 1932 y Fe(int)47 b(fits_remove_group)c(/)48 -b(ffgtrm)286 2045 y(\(fitsfile)e(*gfptr,)f(int)i(rmopt,)f(>)i(int)f -(*status\))0 2282 y Fi(5)81 b Fj(Cop)m(y)28 b(\(app)s(end\))g(the)h -(group)f(de\014ned)g(b)m(y)h(the)f(grouping)h(table)h(p)s(oin)m(ted)e -(to)i(b)m(y)e(infptr,)h(and)f(optionally)i(all)227 2395 -y(group)g(mem)m(b)s(er)h(HDUs,)g(to)h(the)f(FITS)f(\014le)g(p)s(oin)m -(ted)h(to)h(b)m(y)e(outfptr.)41 b(The)31 b(cp)s(opt)f(parameter)h(sp)s -(eci\014es)227 2508 y(the)c(action)h(to)f(b)s(e)f(tak)m(en)h(for)g(all) -g(mem)m(b)s(ers)f(of)g(the)h(group)f(infptr.)38 b(V)-8 -b(alid)28 b(v)-5 b(alues)26 b(are:)40 b(OPT)p 3443 2508 -V 32 w(GCP)p 3674 2508 V 32 w(GPT)227 2621 y(\(cop)m(y)d(only)g(the)f -(grouping)g(table\))h(and)e(OPT)p 1887 2621 V 32 w(GCP)p -2118 2621 V 33 w(ALL)h(\(recursiv)m(ely)h(cop)m(y)g(ALL)e(the)i(HDUs)f -(that)227 2734 y(b)s(elong)24 b(to)g(the)g(group)f(de\014ned)g(b)m(y)g -(infptr\).)38 b(If)23 b(the)h(cp)s(opt)g(==)f(OPT)p 2618 -2734 V 32 w(GCP)p 2849 2734 V 32 w(GPT)h(then)f(the)h(mem)m(b)s(ers)f -(of)227 2847 y(infptr)i(ha)m(v)m(e)h(their)g(GRPIDn)f(and)g(GRPLCn)g(k) -m(eyw)m(ords)h(up)s(dated)e(to)i(re\015ect)g(the)g(existence)h(of)f -(the)f(new)227 2960 y(grouping)f(table)g(outfptr,)h(since)f(they)g(no)m -(w)g(b)s(elong)g(to)g(the)g(new)g(group.)38 b(If)23 b(cp)s(opt)h(==)f -(OPT)p 3460 2960 V 32 w(GCP)p 3691 2960 V 32 w(ALL)227 -3073 y(then)29 b(the)g(new)g(grouping)g(table)h(outfptr)e(only)h(con)m +%%Page: 93 101 +TeXDict begin 93 100 bop 0 299 a Fh(8.1.)72 b(GR)m(OUPING)31 +b(T)-8 b(ABLE)31 b(R)m(OUTINES)2235 b Fj(93)95 555 y +Fe(int)47 b(fits_change_group)c(/)48 b(ffgtch)286 668 +y(\(fitsfile)e(*gfptr,)f(int)i(grouptype,)e(>)j(int)f(*status\))0 +905 y Fi(4)81 b Fj(Remo)m(v)m(e)41 b(the)e(group)g(de\014ned)f(b)m(y)h +(the)h(grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m(y)g(gfptr,)h(and)e +(optionally)i(all)f(the)227 1018 y(group)29 b(mem)m(b)s(er)f(HDUs.)41 +b(The)28 b(rmopt)h(parameter)g(sp)s(eci\014es)g(the)g(action)h(to)g(b)s +(e)e(tak)m(en)i(for)f(all)h(mem)m(b)s(ers)227 1131 y(of)d(the)g(group)g +(de\014ned)e(b)m(y)i(the)g(grouping)g(table.)40 b(V)-8 +b(alid)28 b(v)-5 b(alues)27 b(are:)40 b(OPT)p 2848 1131 +28 4 v 32 w(RM)p 3030 1131 V 33 w(GPT)26 b(\(delete)j(only)e(the)227 +1244 y(grouping)33 b(table\))i(and)e(OPT)p 1259 1244 +V 32 w(RM)p 1441 1244 V 33 w(ALL)g(\(recursiv)m(ely)h(delete)h(all)f +(HDUs)g(that)g(b)s(elong)f(to)h(the)g(group\).)227 1357 +y(An)m(y)d(groups)g(con)m(taining)i(the)e(grouping)g(table)h(gfptr)e +(as)i(a)f(mem)m(b)s(er)g(are)g(up)s(dated,)f(and)h(if)g(rmopt)g(==)227 +1470 y(OPT)p 431 1470 V 32 w(RM)p 613 1470 V 33 w(GPT)21 +b(all)h(mem)m(b)s(ers)f(ha)m(v)m(e)h(their)f(GRPIDn)g(and)g(GRPLCn)f(k) +m(eyw)m(ords)h(up)s(dated)f(accordingly)-8 b(.)227 1582 +y(If)36 b(rmopt)g(==)g(OPT)p 985 1582 V 32 w(RM)p 1167 +1582 V 33 w(ALL,)g(then)g(other)h(groups)e(that)i(con)m(tain)h(the)e +(deleted)h(mem)m(b)s(ers)f(of)g(gfptr)227 1695 y(are)31 +b(up)s(dated)e(to)i(re\015ect)g(the)g(deletion)g(accordingly)-8 +b(.)95 1932 y Fe(int)47 b(fits_remove_group)c(/)48 b(ffgtrm)286 +2045 y(\(fitsfile)e(*gfptr,)f(int)i(rmopt,)f(>)i(int)f(*status\))0 +2282 y Fi(5)81 b Fj(Cop)m(y)28 b(\(app)s(end\))g(the)h(group)f +(de\014ned)g(b)m(y)h(the)f(grouping)h(table)h(p)s(oin)m(ted)e(to)i(b)m +(y)e(infptr,)h(and)f(optionally)i(all)227 2395 y(group)g(mem)m(b)s(er)h +(HDUs,)g(to)h(the)f(FITS)f(\014le)g(p)s(oin)m(ted)h(to)h(b)m(y)e +(outfptr.)41 b(The)31 b(cp)s(opt)f(parameter)h(sp)s(eci\014es)227 +2508 y(the)c(action)h(to)f(b)s(e)f(tak)m(en)h(for)g(all)g(mem)m(b)s +(ers)f(of)g(the)h(group)f(infptr.)38 b(V)-8 b(alid)28 +b(v)-5 b(alues)26 b(are:)40 b(OPT)p 3443 2508 V 32 w(GCP)p +3674 2508 V 32 w(GPT)227 2621 y(\(cop)m(y)d(only)g(the)f(grouping)g +(table\))h(and)e(OPT)p 1887 2621 V 32 w(GCP)p 2118 2621 +V 33 w(ALL)h(\(recursiv)m(ely)h(cop)m(y)g(ALL)e(the)i(HDUs)f(that)227 +2734 y(b)s(elong)24 b(to)g(the)g(group)f(de\014ned)g(b)m(y)g(infptr\).) +38 b(If)23 b(the)h(cp)s(opt)g(==)f(OPT)p 2618 2734 V +32 w(GCP)p 2849 2734 V 32 w(GPT)h(then)f(the)h(mem)m(b)s(ers)f(of)227 +2847 y(infptr)i(ha)m(v)m(e)h(their)g(GRPIDn)f(and)g(GRPLCn)g(k)m(eyw)m +(ords)h(up)s(dated)e(to)i(re\015ect)g(the)g(existence)h(of)f(the)f(new) +227 2960 y(grouping)f(table)g(outfptr,)h(since)f(they)g(no)m(w)g(b)s +(elong)g(to)g(the)g(new)g(group.)38 b(If)23 b(cp)s(opt)h(==)f(OPT)p +3460 2960 V 32 w(GCP)p 3691 2960 V 32 w(ALL)227 3073 +y(then)29 b(the)g(new)g(grouping)g(table)h(outfptr)e(only)h(con)m (tains)i(p)s(oin)m(ters)e(to)h(the)f(copied)g(mem)m(b)s(er)g(HDUs)h (and)227 3185 y(not)38 b(the)g(original)g(mem)m(b)s(er)f(HDUs)h(of)g (infptr.)61 b(Note)39 b(that,)h(when)d(cp)s(opt)g(==)g(OPT)p @@ -14435,229 +11266,166 @@ b(Note)31 b(that)g(this)e(function)227 5714 y(is)i(not)f(recursiv)m(e,) h(i.e.,)h(only)f(the)f(direct)h(mem)m(b)s(er)f(HDUs)h(of)f(gfptr)g(are) h(considered)f(for)g(merging.)p eop end -%%Page: 92 100 -TeXDict begin 92 99 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 a --8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.92) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(92)1338 -b Fh(CHAPTER)29 b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m -(OUTINES)95 555 y Fe(int)47 b(fits_compact_group)c(/)48 -b(ffgtcm)286 668 y(\(fitsfile)e(*gfptr,)f(int)i(cmopt,)f(>)i(int)f -(*status\))0 945 y Fi(8)81 b Fj(V)-8 b(erify)21 b(the)h(in)m(tegrit)m -(y)h(of)e(the)g(grouping)g(table)h(p)s(oin)m(ted)f(to)h(b)m(y)f(gfptr)g -(to)h(mak)m(e)g(sure)e(that)i(all)g(group)f(mem)m(b)s(ers)227 -1058 y(are)31 b(accessible)i(and)d(that)h(all)g(links)g(to)g(other)g -(grouping)f(tables)i(are)f(v)-5 b(alid.)42 b(The)30 b(\014rstfailed)g -(parameter)227 1171 y(returns)c(the)i(mem)m(b)s(er)e(ID)h(\(ro)m(w)h(n) -m(um)m(b)s(er\))e(of)i(the)f(\014rst)f(mem)m(b)s(er)h(HDU)h(to)g(fail)g -(v)m(eri\014cation)g(\(if)g(p)s(ositiv)m(e)227 1284 y(v)-5 +%%Page: 94 102 +TeXDict begin 94 101 bop 0 299 a Fj(94)1338 b Fh(CHAPTER)29 +b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)95 +555 y Fe(int)47 b(fits_compact_group)c(/)48 b(ffgtcm)286 +668 y(\(fitsfile)e(*gfptr,)f(int)i(cmopt,)f(>)i(int)f(*status\))0 +900 y Fi(8)81 b Fj(V)-8 b(erify)21 b(the)h(in)m(tegrit)m(y)h(of)e(the)g +(grouping)g(table)h(p)s(oin)m(ted)f(to)h(b)m(y)f(gfptr)g(to)h(mak)m(e)g +(sure)e(that)i(all)g(group)f(mem)m(b)s(ers)227 1013 y(are)31 +b(accessible)i(and)d(that)h(all)g(links)g(to)g(other)g(grouping)f +(tables)i(are)f(v)-5 b(alid.)42 b(The)30 b(\014rstfailed)g(parameter) +227 1126 y(returns)c(the)i(mem)m(b)s(er)e(ID)h(\(ro)m(w)h(n)m(um)m(b)s +(er\))e(of)i(the)f(\014rst)f(mem)m(b)s(er)h(HDU)h(to)g(fail)g(v)m +(eri\014cation)g(\(if)g(p)s(ositiv)m(e)227 1239 y(v)-5 b(alue\))36 b(or)e(the)h(\014rst)e(group)h(link)g(to)i(fail)f(\(if)f (negativ)m(e)j(v)-5 b(alue\).)54 b(If)34 b(gfptr)g(is)g(successfully)h -(v)m(eri\014ed)f(then)227 1397 y(\014rstfailed)d(con)m(tains)g(a)g -(return)e(v)-5 b(alue)31 b(of)g(0.)95 1673 y Fe(int)47 -b(fits_verify_group)c(/)48 b(ffgtvf)286 1786 y(\(fitsfile)e(*gfptr,)f -(>)j(long)f(*firstfailed,)d(int)j(*status\))0 2063 y +(v)m(eri\014ed)f(then)227 1352 y(\014rstfailed)d(con)m(tains)g(a)g +(return)e(v)-5 b(alue)31 b(of)g(0.)95 1584 y Fe(int)47 +b(fits_verify_group)c(/)48 b(ffgtvf)286 1697 y(\(fitsfile)e(*gfptr,)f +(>)j(long)f(*firstfailed,)d(int)j(*status\))0 1929 y Fi(9)81 b Fj(Op)s(en)23 b(a)j(grouping)f(table)h(that)g(con)m(tains)g (the)g(mem)m(b)s(er)e(HDU)i(p)s(oin)m(ted)f(to)h(b)m(y)f(mfptr.)38 -b(The)25 b(grouping)g(table)227 2176 y(to)39 b(op)s(en)e(is)h +b(The)25 b(grouping)g(table)227 2042 y(to)39 b(op)s(en)e(is)h (de\014ned)f(b)m(y)h(the)g(grpid)f(parameter,)j(whic)m(h)e(con)m(tains) h(the)f(k)m(eyw)m(ord)h(index)e(v)-5 b(alue)39 b(of)f(the)227 -2289 y(GRPIDn/GRPLCn)d(k)m(eyw)m(ord\(s\))g(that)h(link)f(the)g(mem)m +2155 y(GRPIDn/GRPLCn)d(k)m(eyw)m(ord\(s\))g(that)h(link)f(the)g(mem)m (b)s(er)f(HDU)h(mfptr)f(to)i(the)f(grouping)f(table.)55 -b(If)227 2402 y(the)30 b(grouping)f(table)h(resides)f(in)h(a)f(\014le)h +b(If)227 2268 y(the)30 b(grouping)f(table)h(resides)f(in)h(a)f(\014le)h (other)f(than)h(the)f(mem)m(b)s(er)g(HDUs)h(\014le)f(then)g(an)h -(attempt)g(is)g(\014rst)227 2515 y(made)f(to)h(op)s(en)e(the)h(\014le)g +(attempt)g(is)g(\014rst)227 2381 y(made)f(to)h(op)s(en)e(the)h(\014le)g (readwrite,)h(and)e(failing)i(that)g(readonly)-8 b(.)40 b(A)29 b(p)s(oin)m(ter)g(to)h(the)f(op)s(ened)f(grouping)227 -2628 y(table)k(HDU)f(is)f(returned)f(in)h(gfptr.)227 -2786 y(Note)35 b(that)g(it)f(is)g(p)s(ossible,)g(although)h(unlik)m +2494 y(table)k(HDU)f(is)f(returned)f(in)h(gfptr.)227 +2639 y(Note)35 b(that)g(it)f(is)g(p)s(ossible,)g(although)h(unlik)m (ely)f(and)f(undesirable,)h(for)g(the)g(GRPIDn/GRPLCn)f(k)m(ey-)227 -2899 y(w)m(ords)k(in)g(a)g(mem)m(b)s(er)g(HDU)h(header)f(to)h(b)s(e)e +2752 y(w)m(ords)k(in)g(a)g(mem)m(b)s(er)g(HDU)h(header)f(to)h(b)s(e)e (non-con)m(tin)m(uous,)k(e.g.,)g(GRPID1,)g(GRPID2,)g(GRPID5,)227 -3012 y(GRPID6.)i(In)29 b(suc)m(h)g(cases,)i(the)f(grpid)f(index)g(v)-5 +2865 y(GRPID6.)i(In)29 b(suc)m(h)g(cases,)i(the)f(grpid)f(index)g(v)-5 b(alue)31 b(sp)s(eci\014ed)e(in)g(the)h(function)f(call)j(shall)e(iden) -m(tify)g(the)227 3125 y(\(grpid\)th)36 b(GRPID)f(v)-5 +m(tify)g(the)227 2978 y(\(grpid\)th)36 b(GRPID)f(v)-5 b(alue.)57 b(In)34 b(the)i(ab)s(o)m(v)m(e)h(example,)g(if)f(grpid)e(==) h(3,)j(then)d(the)g(group)g(sp)s(eci\014ed)g(b)m(y)227 -3238 y(GRPID5)c(w)m(ould)g(b)s(e)e(op)s(ened.)95 3515 -y Fe(int)47 b(fits_open_group)d(/)j(ffgtop)286 3628 y(\(fitsfile)f +3091 y(GRPID5)c(w)m(ould)g(b)s(e)e(op)s(ened.)95 3323 +y Fe(int)47 b(fits_open_group)d(/)j(ffgtop)286 3436 y(\(fitsfile)f (*mfptr,)f(int)i(grpid,)f(>)i(fitsfile)d(**gfptr,)h(int)h(*status\))0 -3905 y Fi(10)f Fj(Add)38 b(a)h(mem)m(b)s(er)f(HDU)i(to)f(an)g(existing) +3668 y Fi(10)f Fj(Add)38 b(a)h(mem)m(b)s(er)f(HDU)i(to)f(an)g(existing) g(grouping)g(table)h(p)s(oin)m(ted)e(to)i(b)m(y)e(gfptr.)66 -b(The)38 b(mem)m(b)s(er)g(HDU)227 4017 y(ma)m(y)30 b(either)g(b)s(e)f +b(The)38 b(mem)m(b)s(er)g(HDU)227 3781 y(ma)m(y)30 b(either)g(b)s(e)f (p)s(oin)m(ted)g(to)h(mfptr)f(\(whic)m(h)g(m)m(ust)h(b)s(e)e(p)s (ositioned)i(to)g(the)f(mem)m(b)s(er)g(HDU\))i(or,)f(if)f(mfptr)227 -4130 y(==)36 b(NULL,)g(iden)m(ti\014ed)g(b)m(y)g(the)g(hdup)s(os)e +3894 y(==)36 b(NULL,)g(iden)m(ti\014ed)g(b)m(y)g(the)g(hdup)s(os)e (parameter)i(\(the)h(HDU)g(p)s(osition)f(n)m(um)m(b)s(er,)g(Primary)f -(arra)m(y)227 4243 y(==)f(1\))i(if)f(b)s(oth)f(the)h(grouping)g(table)g +(arra)m(y)227 4007 y(==)f(1\))i(if)f(b)s(oth)f(the)h(grouping)g(table)g (and)g(the)g(mem)m(b)s(er)f(HDU)h(reside)g(in)g(the)g(same)g(FITS)f -(\014le.)54 b(The)227 4356 y(new)27 b(mem)m(b)s(er)f(HDU)h(shall)g(ha)m +(\014le.)54 b(The)227 4120 y(new)27 b(mem)m(b)s(er)f(HDU)h(shall)g(ha)m (v)m(e)h(the)f(appropriate)g(GRPIDn)f(and)g(GRPLCn)g(k)m(eyw)m(ords)h -(created)h(in)f(its)227 4469 y(header.)44 b(Note)33 b(that)f(if)g(the)g +(created)h(in)f(its)227 4233 y(header.)44 b(Note)33 b(that)f(if)g(the)g (mem)m(b)s(er)e(HDU)j(is)e(already)h(a)g(mem)m(b)s(er)f(of)h(the)g -(group)f(then)g(it)h(will)g(not)g(b)s(e)227 4582 y(added)e(a)h(second)f -(time.)95 4859 y Fe(int)47 b(fits_add_group_member)42 -b(/)48 b(ffgtam)286 4972 y(\(fitsfile)e(*gfptr,)f(fitsfile)h(*mfptr,)g -(int)h(hdupos,)f(>)h(int)g(*status\))0 5149 y -SDict begin H.S end - 0 5149 -a 0 5149 a -SDict begin 13.6 H.A end - 0 5149 a 0 5149 a -SDict begin [/View [/XYZ H.V]/Dest (section.8.2) cvn /DEST pdfmark -end - 0 5149 a 176 x Ff(8.2)135 -b(Group)45 b(Mem)l(b)t(er)f(Routines)0 5578 y Fi(1)81 +(group)f(then)g(it)h(will)g(not)g(b)s(e)227 4346 y(added)e(a)h(second)f +(time.)95 4578 y Fe(int)47 b(fits_add_group_member)42 +b(/)48 b(ffgtam)286 4691 y(\(fitsfile)e(*gfptr,)f(fitsfile)h(*mfptr,)g +(int)h(hdupos,)f(>)h(int)g(*status\))0 5020 y Ff(8.2)135 +b(Group)45 b(Mem)l(b)t(er)f(Routines)0 5256 y Fi(1)81 b Fj(Return)28 b(the)i(n)m(um)m(b)s(er)e(of)h(mem)m(b)s(er)g(HDUs)h(in) f(a)h(grouping)f(table)h(gfptr.)40 b(The)29 b(n)m(um)m(b)s(er)f(of)i -(mem)m(b)s(er)e(HDUs)227 5691 y(is)j(just)e(the)i(NAXIS2)g(v)-5 +(mem)m(b)s(er)e(HDUs)227 5369 y(is)j(just)e(the)i(NAXIS2)g(v)-5 b(alue)31 b(\(n)m(um)m(b)s(er)e(of)h(ro)m(ws\))h(of)g(the)f(grouping)g -(table.)p eop end -%%Page: 93 101 -TeXDict begin 93 100 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.93) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(8.2.)72 -b(GR)m(OUP)31 b(MEMBER)g(R)m(OUTINES)2295 b Fj(93)95 -555 y Fe(int)47 b(fits_get_num_members)c(/)k(ffgtnm)286 -668 y(\(fitsfile)f(*gfptr,)f(>)j(long)f(*nmembers,)e(int)h(*status\))0 -945 y Fi(2)81 b Fj(Return)34 b(the)h(n)m(um)m(b)s(er)f(of)i(groups)e -(to)i(whic)m(h)f(the)g(HDU)h(p)s(oin)m(ted)f(to)h(b)m(y)f(mfptr)f(is)i -(link)m(ed,)h(as)e(de\014ned)f(b)m(y)227 1058 y(the)27 -b(n)m(um)m(b)s(er)f(of)h(GRPIDn/GRPLCn)f(k)m(eyw)m(ord)i(records)e -(that)i(app)s(ear)e(in)g(its)i(header.)39 b(Note)28 b(that)g(eac)m(h) -227 1171 y(time)37 b(this)g(function)f(is)g(called,)k(the)c(indices)h -(of)g(the)f(GRPIDn/GRPLCn)g(k)m(eyw)m(ords)h(are)g(c)m(hec)m(k)m(ed)h -(to)227 1284 y(mak)m(e)29 b(sure)e(they)g(are)h(con)m(tin)m(uous)g -(\(ie)h(no)e(gaps\))h(and)f(are)h(re-en)m(umerated)g(to)h(eliminate)g -(gaps)f(if)f(found.)95 1674 y Fe(int)47 b(fits_get_num_groups)c(/)k -(ffgmng)286 1787 y(\(fitsfile)f(*mfptr,)f(>)j(long)f(*nmembers,)e(int)h -(*status\))0 2063 y Fi(3)81 b Fj(Op)s(en)26 b(a)i(mem)m(b)s(er)f(of)h -(the)f(grouping)h(table)g(p)s(oin)m(ted)g(to)g(b)m(y)g(gfptr.)39 +(table.)95 5601 y Fe(int)47 b(fits_get_num_members)c(/)k(ffgtnm)286 +5714 y(\(fitsfile)f(*gfptr,)f(>)j(long)f(*nmembers,)e(int)h(*status\))p +eop end +%%Page: 95 103 +TeXDict begin 95 102 bop 0 299 a Fh(8.2.)72 b(GR)m(OUP)31 +b(MEMBER)g(R)m(OUTINES)2295 b Fj(95)0 555 y Fi(2)81 b +Fj(Return)34 b(the)h(n)m(um)m(b)s(er)f(of)i(groups)e(to)i(whic)m(h)f +(the)g(HDU)h(p)s(oin)m(ted)f(to)h(b)m(y)f(mfptr)f(is)i(link)m(ed,)h(as) +e(de\014ned)f(b)m(y)227 668 y(the)27 b(n)m(um)m(b)s(er)f(of)h +(GRPIDn/GRPLCn)f(k)m(eyw)m(ord)i(records)e(that)i(app)s(ear)e(in)g(its) +i(header.)39 b(Note)28 b(that)g(eac)m(h)227 781 y(time)37 +b(this)g(function)f(is)g(called,)k(the)c(indices)h(of)g(the)f +(GRPIDn/GRPLCn)g(k)m(eyw)m(ords)h(are)g(c)m(hec)m(k)m(ed)h(to)227 +894 y(mak)m(e)29 b(sure)e(they)g(are)h(con)m(tin)m(uous)g(\(ie)h(no)e +(gaps\))h(and)f(are)h(re-en)m(umerated)g(to)h(eliminate)g(gaps)f(if)f +(found.)95 1228 y Fe(int)47 b(fits_get_num_groups)c(/)k(ffgmng)286 +1341 y(\(fitsfile)f(*mfptr,)f(>)j(long)f(*nmembers,)e(int)h(*status\))0 +1563 y Fi(3)81 b Fj(Op)s(en)26 b(a)i(mem)m(b)s(er)f(of)h(the)f +(grouping)h(table)g(p)s(oin)m(ted)g(to)g(b)m(y)g(gfptr.)39 b(The)27 b(mem)m(b)s(er)g(to)i(op)s(en)e(is)g(iden)m(ti\014ed)h(b)m(y) -227 2176 y(its)i(ro)m(w)g(n)m(um)m(b)s(er)e(within)h(the)g(grouping)h +227 1676 y(its)i(ro)m(w)g(n)m(um)m(b)s(er)e(within)h(the)g(grouping)h (table)g(as)g(giv)m(en)g(b)m(y)g(the)f(parameter)h('mem)m(b)s(er')f -(\(\014rst)h(mem)m(b)s(er)227 2289 y(==)g(1\))g(.)41 +(\(\014rst)h(mem)m(b)s(er)227 1788 y(==)g(1\))g(.)41 b(A)30 b(\014ts\014le)f(p)s(oin)m(ter)h(to)h(the)f(op)s(ened)f(mem)m(b) s(er)g(HDU)i(is)f(returned)f(as)h(mfptr.)39 b(Note)31 -b(that)g(if)f(the)227 2402 y(mem)m(b)s(er)e(HDU)h(resides)g(in)f(a)h +b(that)g(if)f(the)227 1901 y(mem)m(b)s(er)e(HDU)h(resides)g(in)f(a)h (FITS)f(\014le)g(di\013eren)m(t)h(from)f(the)h(grouping)f(table)h(HDU)h -(then)e(the)h(mem)m(b)s(er)227 2515 y(\014le)i(is)f(\014rst)g(op)s +(then)e(the)h(mem)m(b)s(er)227 2014 y(\014le)i(is)f(\014rst)g(op)s (ened)f(readwrite)i(and,)f(failing)h(this,)g(op)s(ened)e(readonly)-8 -b(.)95 2792 y Fe(int)47 b(fits_open_member)d(/)j(ffgmop)286 -2905 y(\(fitsfile)f(*gfptr,)f(long)i(member,)f(>)h(fitsfile)f(**mfptr,) -f(int)i(*status\))0 3182 y Fi(4)81 b Fj(Cop)m(y)27 b(\(app)s(end\))f(a) +b(.)95 2236 y Fe(int)47 b(fits_open_member)d(/)j(ffgmop)286 +2349 y(\(fitsfile)f(*gfptr,)f(long)i(member,)f(>)h(fitsfile)f(**mfptr,) +f(int)i(*status\))0 2570 y Fi(4)81 b Fj(Cop)m(y)27 b(\(app)s(end\))f(a) i(mem)m(b)s(er)f(HDU)h(of)f(the)h(grouping)e(table)j(p)s(oin)m(ted)e (to)h(b)m(y)f(gfptr.)39 b(The)27 b(mem)m(b)s(er)g(HDU)h(is)227 -3295 y(iden)m(ti\014ed)33 b(b)m(y)g(its)h(ro)m(w)f(n)m(um)m(b)s(er)e +2683 y(iden)m(ti\014ed)33 b(b)m(y)g(its)h(ro)m(w)f(n)m(um)m(b)s(er)e (within)i(the)g(grouping)g(table)g(as)h(giv)m(en)g(b)m(y)e(the)i -(parameter)f('mem)m(b)s(er')227 3408 y(\(\014rst)j(mem)m(b)s(er)f(==)g +(parameter)f('mem)m(b)s(er')227 2796 y(\(\014rst)j(mem)m(b)s(er)f(==)g (1\).)58 b(The)35 b(cop)m(y)i(of)f(the)g(group)f(mem)m(b)s(er)g(HDU)i -(will)f(b)s(e)f(app)s(ended)f(to)j(the)f(FITS)227 3521 +(will)f(b)s(e)f(app)s(ended)f(to)j(the)f(FITS)227 2909 y(\014le)29 b(p)s(oin)m(ted)g(to)g(b)m(y)f(mfptr,)h(and)f(up)s(on)f (return)g(mfptr)h(shall)h(p)s(oin)m(t)f(to)i(the)f(copied)g(mem)m(b)s -(er)f(HDU.)h(The)227 3633 y(cp)s(opt)e(parameter)h(ma)m(y)g(tak)m(e)h +(er)f(HDU.)h(The)227 3022 y(cp)s(opt)e(parameter)h(ma)m(y)g(tak)m(e)h (on)e(the)g(follo)m(wing)i(v)-5 b(alues:)40 b(OPT)p 2465 -3633 28 4 v 32 w(MCP)p 2708 3633 V 32 w(ADD)29 b(whic)m(h)e(adds)f(a)i -(new)f(en)m(try)227 3746 y(in)d(gfptr)g(for)f(the)i(copied)f(mem)m(b)s -(er)g(HDU,)h(OPT)p 1907 3746 V 31 w(MCP)p 2149 3746 V +3022 28 4 v 32 w(MCP)p 2708 3022 V 32 w(ADD)29 b(whic)m(h)e(adds)f(a)i +(new)f(en)m(try)227 3135 y(in)d(gfptr)g(for)f(the)i(copied)f(mem)m(b)s +(er)g(HDU,)h(OPT)p 1907 3135 V 31 w(MCP)p 2149 3135 V 33 w(NADD)g(whic)m(h)f(do)s(es)g(not)g(add)f(an)h(en)m(try)h(in)e -(gfptr)227 3859 y(for)i(the)h(copied)f(mem)m(b)s(er,)h(and)f(OPT)p -1536 3859 V 32 w(MCP)p 1779 3859 V 32 w(REPL)g(whic)m(h)g(replaces)h +(gfptr)227 3247 y(for)i(the)h(copied)f(mem)m(b)s(er,)h(and)f(OPT)p +1536 3247 V 32 w(MCP)p 1779 3247 V 32 w(REPL)g(whic)m(h)g(replaces)h (the)f(original)h(mem)m(b)s(er)f(en)m(try)g(with)227 -3972 y(the)31 b(copied)g(mem)m(b)s(er)e(en)m(try)-8 b(.)95 -4249 y Fe(int)47 b(fits_copy_member)d(/)j(ffgmcp)286 -4362 y(\(fitsfile)f(*gfptr,)f(fitsfile)h(*mfptr,)g(long)g(member,)g -(int)h(cpopt,)f(>)i(int)f(*status\))0 4639 y Fi(5)81 +3360 y(the)31 b(copied)g(mem)m(b)s(er)e(en)m(try)-8 b(.)95 +3582 y Fe(int)47 b(fits_copy_member)d(/)j(ffgmcp)286 +3695 y(\(fitsfile)f(*gfptr,)f(fitsfile)h(*mfptr,)g(long)g(member,)g +(int)h(cpopt,)f(>)i(int)f(*status\))0 3916 y Fi(5)81 b Fj(T)-8 b(ransfer)34 b(a)i(group)f(mem)m(b)s(er)f(HDU)i(from)f(the)h (grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m(y)f(infptr)g(to)h(the)f -(grouping)227 4752 y(table)i(p)s(oin)m(ted)f(to)h(b)m(y)f(outfptr.)58 +(grouping)227 4029 y(table)i(p)s(oin)m(ted)f(to)h(b)m(y)f(outfptr.)58 b(The)35 b(mem)m(b)s(er)h(HDU)h(to)f(transfer)g(is)g(iden)m(ti\014ed)g -(b)m(y)g(its)h(ro)m(w)f(n)m(um)m(b)s(er)227 4865 y(within)42 +(b)m(y)g(its)h(ro)m(w)f(n)m(um)m(b)s(er)227 4142 y(within)42 b(infptr)f(as)i(sp)s(eci\014ed)f(b)m(y)g(the)h(parameter)g('mem)m(b)s (er')f(\(\014rst)g(mem)m(b)s(er)g(==)f(1\).)78 b(If)42 -b(tfopt)h(==)227 4978 y(OPT)p 431 4978 V 32 w(MCP)p 674 -4978 V 33 w(ADD)26 b(then)f(the)h(mem)m(b)s(er)e(HDU)i(is)g(made)f(a)h +b(tfopt)h(==)227 4255 y(OPT)p 431 4255 V 32 w(MCP)p 674 +4255 V 33 w(ADD)26 b(then)f(the)h(mem)m(b)s(er)e(HDU)i(is)g(made)f(a)h (mem)m(b)s(er)f(of)g(outfptr)g(and)g(remains)g(a)h(mem)m(b)s(er)227 -5091 y(of)34 b(infptr.)51 b(If)34 b(tfopt)g(==)g(OPT)p -1339 5091 V 32 w(MCP)p 1582 5091 V 32 w(MO)m(V)h(then)f(the)g(mem)m(b)s +4368 y(of)34 b(infptr.)51 b(If)34 b(tfopt)g(==)g(OPT)p +1339 4368 V 32 w(MCP)p 1582 4368 V 32 w(MO)m(V)h(then)f(the)g(mem)m(b)s (er)f(HDU)i(is)f(deleted)h(from)e(infptr)g(after)227 -5204 y(the)e(transfer)f(to)h(outfptr.)95 5480 y Fe(int)47 -b(fits_transfer_member)c(/)k(ffgmtf)286 5593 y(\(fitsfile)f(*infptr,)f +4481 y(the)e(transfer)f(to)h(outfptr.)95 4702 y Fe(int)47 +b(fits_transfer_member)c(/)k(ffgmtf)286 4815 y(\(fitsfile)f(*infptr,)f (fitsfile)h(*outfptr,)f(long)i(member,)e(int)i(tfopt,)334 -5706 y(>)h(int)e(*status\))p eop end -%%Page: 94 102 -TeXDict begin 94 101 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.94) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(94)1338 -b Fh(CHAPTER)29 b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m -(OUTINES)0 555 y Fi(6)81 b Fj(Remo)m(v)m(e)31 b(a)e(mem)m(b)s(er)g(HDU) -h(from)f(the)h(grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m(y)g(gfptr.) -40 b(The)29 b(mem)m(b)s(er)f(HDU)i(to)h(b)s(e)227 668 -y(deleted)37 b(is)e(iden)m(ti\014ed)h(b)m(y)f(its)h(ro)m(w)g(n)m(um)m -(b)s(er)f(in)g(the)h(grouping)f(table)h(as)g(sp)s(eci\014ed)f(b)m(y)h -(the)f(parameter)227 781 y('mem)m(b)s(er')41 b(\(\014rst)g(mem)m(b)s -(er)g(==)f(1\).)74 b(The)41 b(rmopt)g(parameter)h(ma)m(y)f(tak)m(e)i -(on)e(the)h(follo)m(wing)g(v)-5 b(alues:)227 894 y(OPT)p -431 894 28 4 v 32 w(RM)p 613 894 V 33 w(ENTR)d(Y)34 b(whic)m(h)e(remo)m -(v)m(es)j(the)e(mem)m(b)s(er)g(HDU)h(en)m(try)f(from)g(the)g(grouping)g -(table)h(and)f(up-)227 1007 y(dates)40 b(the)f(mem)m(b)s(er's)f -(GRPIDn/GRPLCn)g(k)m(eyw)m(ords,)k(and)c(OPT)p 2687 1007 -V 32 w(RM)p 2869 1007 V 33 w(MBR)h(whic)m(h)g(remo)m(v)m(es)h(the)227 -1120 y(mem)m(b)s(er)30 b(HDU)h(en)m(try)g(from)f(the)g(grouping)g -(table)i(and)d(deletes)j(the)e(mem)m(b)s(er)g(HDU)h(itself.)95 -1380 y Fe(int)47 b(fits_remove_member)c(/)48 b(ffgmrm)286 -1492 y(\(fitsfile)e(*gfptr,)f(long)i(member,)f(int)h(rmopt,)f(>)h(int)g +4928 y(>)h(int)e(*status\))0 5149 y Fi(6)81 b Fj(Remo)m(v)m(e)31 +b(a)e(mem)m(b)s(er)g(HDU)h(from)f(the)h(grouping)f(table)h(p)s(oin)m +(ted)f(to)h(b)m(y)g(gfptr.)40 b(The)29 b(mem)m(b)s(er)f(HDU)i(to)h(b)s +(e)227 5262 y(deleted)37 b(is)e(iden)m(ti\014ed)h(b)m(y)f(its)h(ro)m(w) +g(n)m(um)m(b)s(er)f(in)g(the)h(grouping)f(table)h(as)g(sp)s(eci\014ed)f +(b)m(y)h(the)f(parameter)227 5375 y('mem)m(b)s(er')41 +b(\(\014rst)g(mem)m(b)s(er)g(==)f(1\).)74 b(The)41 b(rmopt)g(parameter) +h(ma)m(y)f(tak)m(e)i(on)e(the)h(follo)m(wing)g(v)-5 b(alues:)227 +5488 y(OPT)p 431 5488 V 32 w(RM)p 613 5488 V 33 w(ENTR)d(Y)34 +b(whic)m(h)e(remo)m(v)m(es)j(the)e(mem)m(b)s(er)g(HDU)h(en)m(try)f +(from)g(the)g(grouping)g(table)h(and)f(up-)227 5601 y(dates)40 +b(the)f(mem)m(b)s(er's)f(GRPIDn/GRPLCn)g(k)m(eyw)m(ords,)k(and)c(OPT)p +2687 5601 V 32 w(RM)p 2869 5601 V 33 w(MBR)h(whic)m(h)g(remo)m(v)m(es)h +(the)227 5714 y(mem)m(b)s(er)30 b(HDU)h(en)m(try)g(from)f(the)g +(grouping)g(table)i(and)d(deletes)j(the)e(mem)m(b)s(er)g(HDU)h(itself.) +p eop end +%%Page: 96 104 +TeXDict begin 96 103 bop 0 299 a Fj(96)1338 b Fh(CHAPTER)29 +b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)95 +555 y Fe(int)47 b(fits_remove_member)c(/)48 b(ffgmrm)286 +668 y(\(fitsfile)e(*gfptr,)f(long)i(member,)f(int)h(rmopt,)f(>)h(int)g (*status\))p eop end -%%Page: 95 103 -TeXDict begin 95 102 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.95) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.9) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(9)0 +%%Page: 97 105 +TeXDict begin 97 104 bop 0 1225 a Fg(Chapter)65 b(9)0 1687 y Fm(Sp)6 b(ecialized)77 b(CFITSIO)f(In)-6 b(terface)0 1937 y(Routines)0 2429 y Fj(The)28 b(basic)h(in)m(terface)i(routines)e (describ)s(ed)e(previously)i(are)g(recommended)f(for)h(most)g(uses,)g @@ -14670,83 +11438,55 @@ (routines)f(but)f(ha)m(v)m(e)i(a)g(sligh)m(tly)g(di\013eren)m(t)g (calling)g(sequence.)41 b(See)31 b(App)s(endix)0 2880 y(B)g(for)f(the)g(de\014nition)g(of)h(eac)m(h)h(function)e(parameter.)0 -3090 y -SDict begin H.S end - 0 3090 a 0 3090 a -SDict begin 13.6 H.A end - 0 3090 a 0 3090 a -SDict begin [/View [/XYZ H.V]/Dest (section.9.1) cvn /DEST pdfmark -end - 0 3090 a 179 -x Ff(9.1)135 b(FITS)44 b(File)i(Access)e(Routines)0 3370 -y -SDict begin H.S end - 0 3370 a 0 3370 a -SDict begin 13.6 H.A end - 0 3370 a 0 3370 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.1.1) cvn /DEST pdfmark -end - 0 3370 a 163 x -Fd(9.1.1)112 b(File)39 b(Access)0 3777 y Fi(1)81 b Fj(Op)s(en)37 -b(an)i(existing)i(FITS)d(\014le)h(residing)g(in)g(core)h(computer)f -(memory)-8 b(.)68 b(This)38 b(routine)h(is)h(analogous)g(to)227 -3890 y(\014ts)p 354 3890 28 4 v 33 w(op)s(en)p 577 3890 -V 32 w(\014le.)55 b(The)35 b('\014lename')g(is)g(curren)m(tly)h -(ignored)f(b)m(y)g(this)g(routine)g(and)g(ma)m(y)g(b)s(e)g(an)m(y)g -(arbitrary)227 4003 y(string.)78 b(In)42 b(general,)47 +3279 y Ff(9.1)135 b(FITS)44 b(File)i(Access)e(Routines)0 +3545 y Fd(9.1.1)112 b(File)39 b(Access)0 3794 y Fi(1)81 +b Fj(Op)s(en)37 b(an)i(existing)i(FITS)d(\014le)h(residing)g(in)g(core) +h(computer)f(memory)-8 b(.)68 b(This)38 b(routine)h(is)h(analogous)g +(to)227 3907 y(\014ts)p 354 3907 28 4 v 33 w(op)s(en)p +577 3907 V 32 w(\014le.)55 b(The)35 b('\014lename')g(is)g(curren)m(tly) +h(ignored)f(b)m(y)g(this)g(routine)g(and)g(ma)m(y)g(b)s(e)g(an)m(y)g +(arbitrary)227 4020 y(string.)78 b(In)42 b(general,)47 b(the)c(application)h(m)m(ust)f(ha)m(v)m(e)h(preallo)s(cated)g(an)e -(initial)i(blo)s(c)m(k)g(of)f(memory)f(to)227 4115 y(hold)i(the)h(FITS) +(initial)i(blo)s(c)m(k)g(of)f(memory)f(to)227 4133 y(hold)i(the)h(FITS) f(\014le)h(prior)f(to)h(calling)h(this)e(routine:)70 b('memptr')44 b(p)s(oin)m(ts)g(to)i(the)e(starting)i(address)227 -4228 y(and)39 b('memsize')i(giv)m(es)g(the)f(initial)h(size)f(of)g(the) -g(blo)s(c)m(k)g(of)g(memory)-8 b(.)69 b('mem)p 2958 4228 +4246 y(and)39 b('memsize')i(giv)m(es)g(the)f(initial)h(size)f(of)g(the) +g(blo)s(c)m(k)g(of)g(memory)-8 b(.)69 b('mem)p 2958 4246 V 33 w(reallo)s(c')41 b(is)f(a)g(p)s(oin)m(ter)f(to)227 -4341 y(an)c(optional)i(function)d(that)i(CFITSIO)e(can)h(call)h(to)g +4359 y(an)c(optional)i(function)d(that)i(CFITSIO)e(can)h(call)h(to)g (allo)s(cate)i(additional)e(memory)-8 b(,)37 b(if)e(needed)f(\(only)227 -4454 y(if)41 b(mo)s(de)e(=)h(READ)m(WRITE\),)i(and)e(is)g(mo)s(deled)g +4472 y(if)41 b(mo)s(de)e(=)h(READ)m(WRITE\),)i(and)e(is)g(mo)s(deled)g (after)h(the)f(standard)g(C)g('reallo)s(c')i(function;)j(a)c(n)m(ull) -227 4567 y(p)s(oin)m(ter)g(ma)m(y)g(b)s(e)f(giv)m(en)i(if)e(the)h +227 4585 y(p)s(oin)m(ter)g(ma)m(y)g(b)s(e)f(giv)m(en)i(if)e(the)h (initial)h(allo)s(cation)h(of)e(memory)f(is)h(all)g(that)g(will)g(b)s -(e)f(required)g(\(e.g.,)227 4680 y(if)35 b(the)g(\014le)g(is)g(op)s +(e)f(required)g(\(e.g.,)227 4698 y(if)35 b(the)g(\014le)g(is)g(op)s (ened)f(with)h(mo)s(de)f(=)h(READONL)-8 b(Y\).)36 b(The)e('deltasize')j -(parameter)e(ma)m(y)h(b)s(e)e(used)g(to)227 4793 y(suggest)g(a)f(minim) +(parameter)e(ma)m(y)h(b)s(e)e(used)g(to)227 4811 y(suggest)g(a)f(minim) m(um)f(amoun)m(t)h(of)g(additional)h(memory)f(that)g(should)f(b)s(e)g -(allo)s(cated)j(during)d(eac)m(h)i(call)227 4906 y(to)d(the)f(memory)f +(allo)s(cated)j(during)d(eac)m(h)i(call)227 4924 y(to)d(the)f(memory)f (reallo)s(cation)j(function.)40 b(By)30 b(default,)g(CFITSIO)e(will)i -(reallo)s(cate)j(enough)c(additional)227 5019 y(space)44 +(reallo)s(cate)j(enough)c(additional)227 5036 y(space)44 b(to)g(hold)f(the)h(en)m(tire)g(curren)m(tly)f(de\014ned)g(FITS)f (\014le)i(\(as)f(giv)m(en)i(b)m(y)e(the)h(NAXISn)e(k)m(eyw)m(ords\))227 -5132 y(or)g(1)f(FITS)g(blo)s(c)m(k)h(\(=)f(2880)i(b)m(ytes\),)i(whic)m +5149 y(or)g(1)f(FITS)g(blo)s(c)m(k)h(\(=)f(2880)i(b)m(ytes\),)i(whic)m (h)d(ev)m(er)g(is)f(larger.)74 b(V)-8 b(alues)43 b(of)e(deltasize)i -(less)f(than)f(2880)227 5245 y(will)31 b(b)s(e)f(ignored.)42 +(less)f(than)f(2880)227 5262 y(will)31 b(b)s(e)f(ignored.)42 b(Since)31 b(the)g(memory)g(reallo)s(cation)i(op)s(eration)e(can)g(b)s -(e)f(computationally)i(exp)s(ensiv)m(e,)227 5357 y(allo)s(cating)27 +(e)f(computationally)i(exp)s(ensiv)m(e,)227 5375 y(allo)s(cating)27 b(a)e(larger)g(initial)h(blo)s(c)m(k)f(of)g(memory)-8 b(,)26 b(and/or)f(sp)s(ecifying)f(a)h(larger)h(deltasize)g(v)-5 -b(alue)25 b(ma)m(y)g(help)227 5470 y(to)i(reduce)f(the)g(n)m(um)m(b)s +b(alue)25 b(ma)m(y)g(help)227 5488 y(to)i(reduce)f(the)g(n)m(um)m(b)s (er)e(of)i(reallo)s(cation)i(calls)f(and)f(mak)m(e)h(the)f(application) -h(program)f(run)e(faster.)40 b(Note)227 5583 y(that)29 +h(program)f(run)e(faster.)40 b(Note)227 5601 y(that)29 b(v)-5 b(alues)29 b(of)f(the)h(memptr)f(and)f(memsize)j(p)s(oin)m(ters) e(will)h(b)s(e)e(up)s(dated)g(b)m(y)i(CFITSIO)d(if)j(the)f(lo)s(cation) -227 5696 y(or)j(size)g(of)f(the)h(FITS)f(\014le)g(in)g(memory)g(should) +227 5714 y(or)j(size)g(of)f(the)h(FITS)f(\014le)g(in)g(memory)g(should) g(c)m(hange)h(as)g(a)g(result)f(of)g(allo)s(cating)j(more)e(memory)-8 -b(.)1905 5942 y(95)p eop end -%%Page: 96 104 -TeXDict begin 96 103 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.96) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(96)1003 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_open_memfile)c(/)48 +b(.)1905 5942 y(97)p eop end +%%Page: 98 106 +TeXDict begin 98 105 bop 0 299 a Fj(98)1003 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_open_memfile)c(/)48 b(ffomem)286 668 y(\(fitsfile)e(**fptr,)f(const)i(char)f(*filename,)f (int)i(mode,)g(void)f(**memptr,)334 781 y(size_t)g(*memsize,)f(size_t)i (deltasize,)334 894 y(void)g(*\(*mem_realloc\)\(void)42 @@ -14824,22 +11564,10 @@ 5714 y Fi(5)81 b Fj(P)m(arse)31 b(the)f(input)g(\014lename)g(or)g(URL)h (in)m(to)g(its)g(comp)s(onen)m(t)f(parts,)h(namely:)p eop end -%%Page: 97 105 -TeXDict begin 97 104 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.97) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.1.)72 -b(FITS)30 b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(97)336 -555 y Fc(\017)46 b Fj(the)31 b(\014le)f(t)m(yp)s(e)h(\(\014le://,)h +%%Page: 99 107 +TeXDict begin 99 106 bop 0 299 a Fh(9.1.)72 b(FITS)30 +b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(99)336 555 +y Fc(\017)46 b Fj(the)31 b(\014le)f(t)m(yp)s(e)h(\(\014le://,)h (ftp://,)f(h)m(ttp://,)h(etc\),)336 700 y Fc(\017)46 b Fj(the)31 b(base)f(input)g(\014le)g(name,)336 845 y Fc(\017)46 b Fj(the)31 b(name)f(of)h(the)f(output)g(\014le)h(that)g @@ -14914,24 +11642,12 @@ 5714 y(t)m(yp)s(e)35 b(if)g(sp)s(eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\))i(and)d(the)h(full)g(path)g(name,)h (to)g(the)f(exten)m(t)i(that)e(it)h(is)p eop end -%%Page: 98 106 -TeXDict begin 98 105 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.98) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(98)1003 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(sp)s(eci\014ed)c(in)f(the)i -(input)e(\014lename.)39 b(It)26 b(do)s(es)g(not)g(include)g(the)g(HDU)h -(name)f(or)g(n)m(um)m(b)s(er,)g(or)g(an)m(y)h(\014ltering)227 +%%Page: 100 108 +TeXDict begin 100 107 bop 0 299 a Fj(100)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(sp)s(eci\014ed)c(in)f(the)i(input)e +(\014lename.)39 b(It)26 b(do)s(es)g(not)g(include)g(the)g(HDU)h(name)f +(or)g(n)m(um)m(b)s(er,)g(or)g(an)m(y)h(\014ltering)227 668 y(sp)s(eci\014cations.)86 b(The)45 b(calling)h(routine)g(m)m(ust)f (allo)s(cate)i(su\016cien)m(t)f(memory)f(to)h(hold)f(the)g(returned)227 781 y(ro)s(otname)33 b(c)m(haracter)g(string.)46 b(Allo)s(cating)34 @@ -15000,22 +11716,10 @@ (fits_flush_buffer)c(/)48 b(ffflsh)286 5488 y(\(fitsfile)e(*fptr,)g(0,) h(>)g(int)g(*status\))286 5714 y(\(Note:)94 b(The)47 b(second)f(argument)g(must)g(be)i(0\).)p eop end -%%Page: 99 107 -TeXDict begin 99 106 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.99) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.1.)72 -b(FITS)30 b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(99)0 -555 y Fi(10)81 b Fj(W)-8 b(rapp)s(er)37 b(functions)h(for)g(global)h +%%Page: 101 109 +TeXDict begin 101 108 bop 0 299 a Fh(9.1.)72 b(FITS)30 +b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2199 b Fj(101)0 555 +y Fi(10)81 b Fj(W)-8 b(rapp)s(er)37 b(functions)h(for)g(global)h (initialization)i(and)c(clean)m(up)i(of)f(the)g(lib)s(curl)f(library)h (used)f(when)g(ac-)227 668 y(cessing)42 b(\014les)g(with)f(the)g(HTTPS) g(or)g(FTPS)g(proto)s(cols.)74 b(If)41 b(an)g(HTTPS/FTPS)f(\014le)i @@ -15028,77 +11732,49 @@ (accessing)g(is)g(completed,)h(and)d(after)i(all)h(threads)e(are)227 1120 y(completed.)40 b(The)24 b(functions)f(return)h(0)g(up)s(on)f (successful)h(initialization)j(and)d(clean)m(up.)39 b(These)24 -b(are)g(NOT)227 1233 y(THREAD-SAFE.)95 1505 y Fe(int)47 -b(fits_init_https)d(/)j(ffihtps)286 1618 y(\(\))95 1844 -y(int)g(fits_cleanup_https)c(/)48 b(ffchtps)286 1957 -y(\(\))0 2107 y -SDict begin H.S end - 0 2107 a 0 2107 a -SDict begin 13.6 H.A end - 0 2107 a 0 2107 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.1.2) cvn /DEST pdfmark -end - 0 -2107 a 156 x Fd(9.1.2)112 b(Do)m(wnload)39 b(Utilit)m(y)e(F)-9 -b(unctions)0 2485 y Fj(These)32 b(routines)h(do)f(not)h(need)g(to)g(b)s +b(are)g(NOT)227 1233 y(THREAD-SAFE.)95 1507 y Fe(int)47 +b(fits_init_https)d(/)j(ffihtps)286 1620 y(\(\))95 1846 +y(int)g(fits_cleanup_https)c(/)48 b(ffchtps)286 1958 +y(\(\))0 2266 y Fd(9.1.2)112 b(Do)m(wnload)39 b(Utilit)m(y)e(F)-9 +b(unctions)0 2488 y Fj(These)32 b(routines)h(do)f(not)h(need)g(to)g(b)s (e)f(called)i(for)e(normal)h(\014le)f(accessing.)49 b(They)33 -b(are)g(primarily)f(in)m(tended)g(to)0 2598 y(help)g(with)g(debugging)g +b(are)g(primarily)f(in)m(tended)g(to)0 2601 y(help)g(with)g(debugging)g (and)g(diagnosing)h(issues)f(whic)m(h)g(o)s(ccur)g(during)f(\014le)i -(do)m(wnloads.)46 b(These)32 b(routines)h(are)0 2710 -y(NOT)d(THREAD-SAFE.)0 2983 y Fi(1)81 b Fj(T)-8 b(oggle)23 +(do)m(wnloads.)46 b(These)32 b(routines)h(are)0 2714 +y(NOT)d(THREAD-SAFE.)0 2988 y Fi(1)81 b Fj(T)-8 b(oggle)23 b(the)f(v)m(erb)s(osit)m(y)g(of)f(the)h(lib)s(curl)e(library)h (diagnostic)i(output)e(when)f(accessing)j(\014les)f(with)f(the)g(HTTPS) -227 3096 y(or)31 b(FTPS)e(proto)s(col.)42 b(`\015ag')31 +227 3101 y(or)31 b(FTPS)e(proto)s(col.)42 b(`\015ag')31 b(=)f(1)h(turns)e(the)i(output)f(on,)g(0)h(turns)e(it)i(o\013)g(\(the)g -(default\).)143 3369 y Fe(void)47 b(fits_verbose_https)c(/)k(ffvhtps) -382 3482 y(\(int)f(flag\))0 3754 y Fi(2)g Fj(If)38 b(`\015ag')h(is)g +(default\).)143 3375 y Fe(void)47 b(fits_verbose_https)c(/)k(ffvhtps) +382 3488 y(\(int)f(flag\))0 3762 y Fi(2)g Fj(If)38 b(`\015ag')h(is)g (set)g(to)g(1,)j(this)c(will)h(displa)m(y)g(\(to)h(stderr\))e(a)h (progress)f(bar)g(during)g(an)g(h)m(ttps)h(\014le)f(do)m(wnload.)227 -3867 y(\(This)30 b(is)h(not)f(y)m(et)i(implemen)m(ted)f(for)f(other)g +3875 y(\(This)30 b(is)h(not)f(y)m(et)i(implemen)m(ted)f(for)f(other)g (\014le)h(transfer)f(proto)s(cols.\))42 b(`\015ag')31 -b(=)f(0)h(b)m(y)f(default.)143 4140 y Fe(void)47 b +b(=)f(0)h(b)m(y)f(default.)143 4149 y Fe(void)47 b (fits_show_download_progr)o(ess)41 b(/)48 b(ffshdwn)382 -4253 y(\(int)e(flag\))0 4525 y Fi(3)g Fj(The)33 b(timeout)h(setting)h +4262 y(\(int)e(flag\))0 4536 y Fi(3)g Fj(The)33 b(timeout)h(setting)h (\(in)e(seconds\))h(determines)f(the)h(maxim)m(um)f(time)h(allo)m(w)m -(ed)h(for)e(a)h(net)g(do)m(wnload)f(to)227 4638 y(complete.)42 +(ed)h(for)e(a)h(net)g(do)m(wnload)f(to)227 4649 y(complete.)42 b(If)28 b(a)h(do)m(wnload)f(has)h(not)f(\014nished)f(within)h(the)h (allo)m(w)m(ed)h(time,)g(the)f(\014le)f(transfer)g(will)h(termi-)227 -4751 y(nate)d(and)f(the)h(CFITSIO)e(calling)j(function)e(will)g(return) -g(with)g(an)g(error.)39 b(Use)26 b(\014ts)p 3102 4751 -28 4 v 32 w(get)p 3254 4751 V 34 w(timeout)h(will)e(see)227 -4864 y(the)30 b(curren)m(t)g(timeout)g(setting)h(and)e(\014ts)p -1637 4864 V 33 w(set)p 1781 4864 V 33 w(timeout)i(to)f(c)m(hange)h(the) +4762 y(nate)d(and)f(the)h(CFITSIO)e(calling)j(function)e(will)g(return) +g(with)g(an)g(error.)39 b(Use)26 b(\014ts)p 3102 4762 +V 32 w(get)p 3254 4762 V 34 w(timeout)h(will)e(see)227 +4875 y(the)30 b(curren)m(t)g(timeout)g(setting)h(and)e(\014ts)p +1637 4875 V 33 w(set)p 1781 4875 V 33 w(timeout)i(to)f(c)m(hange)h(the) f(setting.)42 b(This)29 b(adjustman)m(t)g(ma)m(y)227 -4977 y(b)s(e)h(particularly)h(useful)f(when)f(ha)m(ving)i(trouble)f(do) +4988 y(b)s(e)h(particularly)h(useful)f(when)f(ha)m(ving)i(trouble)f(do) m(wnloading)h(large)g(\014les)g(o)m(v)m(er)h(slo)m(w)f(connections.)143 -5250 y Fe(int)47 b(fits_get_timeout)c(/)48 b(ffgtmo)334 -5363 y(\(\))143 5588 y(int)f(fits_set_timeout)c(/)48 -b(ffstmo)334 5701 y(\(int)f(seconds,)e(>)j(int)f(*status\))p +5262 y Fe(int)47 b(fits_get_timeout)c(/)48 b(ffgtmo)334 +5375 y(\(\))143 5601 y(int)f(fits_set_timeout)c(/)48 +b(ffstmo)334 5714 y(\(int)f(seconds,)e(>)j(int)f(*status\))p eop end -%%Page: 100 108 -TeXDict begin 100 107 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.100) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(100)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 -a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.9.2) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(9.2)135 b(HDU)46 b(Access)e(Routines)0 +%%Page: 102 110 +TeXDict begin 102 109 bop 0 299 a Fj(102)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Ff(9.2)135 b(HDU)46 b(Access)e(Routines)0 795 y Fi(1)81 b Fj(Get)28 b(the)f(b)m(yte)h(o\013sets)g(in)f(the)g (FITS)f(\014le)i(to)f(the)h(start)g(of)f(the)g(header)g(and)g(the)g (start)h(and)e(end)h(of)g(the)g(data)227 908 y(in)34 @@ -15166,31 +11842,18 @@ f(table)i(with)e(\014ts)p 1847 5714 V 33 w(insert)p 2103 5714 V 33 w(atbl,)i(a)f(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)h(giv)m(en)g (for)f(the)g(*tb)s(col)p eop end -%%Page: 101 109 -TeXDict begin 101 108 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.101) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.2.)72 -b(HDU)31 b(A)m(CCESS)e(R)m(OUTINES)2443 b Fj(101)227 -555 y(parameter)23 b(in)f(whic)m(h)h(case)g(eac)m(h)h(column)e(of)h -(the)g(table)g(will)g(b)s(e)f(separated)h(b)m(y)f(a)h(single)g(space)g -(c)m(haracter.)227 668 y(Similarly)-8 b(,)29 b(if)d(the)h(input)f(v)-5 -b(alue)27 b(of)g(ro)m(wlen)g(is)f(0,)i(then)f(CFITSIO)e(will)i -(calculate)i(the)e(default)f(ro)m(wlength)227 781 y(based)39 -b(on)g(the)g(tb)s(col)h(and)e(tt)m(yp)s(e)h(v)-5 b(alues.)67 -b(Under)39 b(normal)g(circumstances,)j(the)d(nro)m(ws)f(paramen)m(ter) -227 894 y(should)31 b(ha)m(v)m(e)i(a)f(v)-5 b(alue)32 -b(of)f(0;)i(CFITSIO)d(will)i(automatically)j(up)s(date)30 -b(the)i(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(as)g(data)g(is)227 +%%Page: 103 111 +TeXDict begin 103 110 bop 0 299 a Fh(9.2.)72 b(HDU)31 +b(A)m(CCESS)e(R)m(OUTINES)2443 b Fj(103)227 555 y(parameter)23 +b(in)f(whic)m(h)h(case)g(eac)m(h)h(column)e(of)h(the)g(table)g(will)g +(b)s(e)f(separated)h(b)m(y)f(a)h(single)g(space)g(c)m(haracter.)227 +668 y(Similarly)-8 b(,)29 b(if)d(the)h(input)f(v)-5 b(alue)27 +b(of)g(ro)m(wlen)g(is)f(0,)i(then)f(CFITSIO)e(will)i(calculate)i(the)e +(default)f(ro)m(wlength)227 781 y(based)39 b(on)g(the)g(tb)s(col)h(and) +e(tt)m(yp)s(e)h(v)-5 b(alues.)67 b(Under)39 b(normal)g(circumstances,)j +(the)d(nro)m(ws)f(paramen)m(ter)227 894 y(should)31 b(ha)m(v)m(e)i(a)f +(v)-5 b(alue)32 b(of)f(0;)i(CFITSIO)d(will)i(automatically)j(up)s(date) +30 b(the)i(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(as)g(data)g(is)227 1007 y(written)26 b(to)h(the)f(table.)40 b(When)25 b(inserting)h(a)h (binary)e(table)h(with)g(\014ts)p 2596 1007 28 4 v 32 w(insert)p 2851 1007 V 33 w(btbl,)g(if)g(there)g(are)g(follo)m(wing)227 @@ -15253,95 +11916,59 @@ (e)g(used)f(for)g(standard)g(IMA)m(GE,)i(T)-8 b(ABLE,)227 5714 y(or)31 b(BINT)-8 b(ABLE)31 b(extensions.)p eop end -%%Page: 102 110 -TeXDict begin 102 109 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.102) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(102)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_read_ext)e(/)i -(ffgextn)286 668 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(offset,)h(LONGLONG) -g(nbytes,)f(void)i(*buffer\))95 781 y(int)g(fits_write_ext)d(/)k -(ffpextn)286 894 y(\(fitsfile)e(*fptr,)g(LONGLONG)f(offset,)h(LONGLONG) -g(nbytes,)f(void)i(*buffer\))0 1158 y Fi(8)81 b Fj(This)34 -b(routine)g(forces)h(CFITSIO)f(to)h(rescan)g(the)g(curren)m(t)g(header) -f(k)m(eyw)m(ords)h(that)g(de\014ne)f(the)h(structure)227 -1271 y(of)f(the)f(HDU)h(\(suc)m(h)g(as)f(the)h(NAXIS)f(and)g(BITPIX)g -(k)m(eyw)m(ords\))h(so)f(that)h(it)g(reinitializes)i(the)d(in)m(ternal) -227 1384 y(bu\013ers)26 b(that)h(describ)s(e)g(the)g(HDU)g(structure.) -39 b(This)26 b(routine)h(is)g(useful)f(for)g(reinitializing)j(the)e -(structure)227 1497 y(of)34 b(an)f(HDU)h(if)f(an)m(y)h(of)g(the)f -(required)g(k)m(eyw)m(ords)g(\(e.g.,)j(NAXISn\))d(ha)m(v)m(e)i(b)s(een) -e(mo)s(di\014ed.)48 b(In)33 b(practice)227 1610 y(it)e(should)e(rarely) -h(b)s(e)f(necessary)h(to)h(call)g(this)f(routine)g(b)s(ecause)f -(CFITSIO)g(in)m(ternally)i(calls)g(it)f(in)g(most)227 -1723 y(situations.)95 1987 y Fe(int)47 b(fits_set_hdustruc)c(/)48 -b(ffrdef)286 2100 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))141 -b(\(DEPRECATED\))0 2262 y -SDict begin H.S end - 0 2262 a 0 2262 a -SDict begin 13.6 H.A end - 0 2262 a -0 2262 a -SDict begin [/View [/XYZ H.V]/Dest (section.9.3) cvn /DEST pdfmark -end - 0 2262 a 177 x Ff(9.3)135 b(Sp)t(ecialized)46 -b(Header)g(Keyw)l(ord)f(Routines)0 2553 y -SDict begin H.S end - 0 2553 a 0 -2553 a -SDict begin 13.6 H.A end - 0 2553 a 0 2553 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.1) cvn /DEST pdfmark -end - 0 2553 a 140 x Fd(9.3.1)112 -b(Header)38 b(Information)h(Routines)0 2906 y Fi(1)81 -b Fj(Reserv)m(e)29 b(space)g(in)e(the)i(CHU)f(for)g(MOREKEYS)f(more)h -(header)g(k)m(eyw)m(ords.)41 b(This)27 b(routine)h(ma)m(y)h(b)s(e)f -(called)227 3018 y(to)34 b(allo)s(cate)h(space)e(for)f(additional)i(k)m -(eyw)m(ords)f(at)g(the)g(time)g(the)g(header)f(is)h(created)g(\(prior)g -(to)g(writing)227 3131 y(an)m(y)h(data\).)51 b(CFITSIO)32 -b(can)i(dynamically)g(add)f(more)g(space)h(to)g(the)g(header)f(when)f -(needed,)j(ho)m(w)m(ev)m(er)227 3244 y(it)c(is)g(more)f(e\016cien)m(t)i -(to)f(preallo)s(cate)h(the)f(required)f(space)h(if)f(the)g(size)i(is)e -(kno)m(wn)g(in)g(adv)-5 b(ance.)95 3509 y Fe(int)47 b(fits_set_hdrsize) -d(/)j(ffhdef)286 3621 y(\(fitsfile)f(*fptr,)g(int)h(morekeys,)e(>)i -(int)g(*status\))0 3886 y Fi(2)81 b Fj(Return)26 b(the)h(n)m(um)m(b)s -(er)e(of)j(k)m(eyw)m(ords)f(in)f(the)h(header)g(\(not)h(coun)m(ting)g -(the)f(END)g(k)m(eyw)m(ord\))h(and)e(the)h(curren)m(t)227 -3999 y(p)s(osition)34 b(in)g(the)g(header.)50 b(The)34 -b(p)s(osition)f(is)h(the)g(n)m(um)m(b)s(er)f(of)h(the)g(k)m(eyw)m(ord)g -(record)f(that)i(will)f(b)s(e)f(read)227 4112 y(next)k(\(or)g(one)f -(greater)i(than)e(the)h(p)s(osition)f(of)h(the)g(last)g(k)m(eyw)m(ord)g -(that)g(w)m(as)g(read\).)59 b(A)37 b(v)-5 b(alue)36 b(of)h(1)g(is)227 -4224 y(returned)29 b(if)i(the)f(p)s(oin)m(ter)h(is)f(p)s(ositioned)h -(at)g(the)f(b)s(eginning)g(of)g(the)h(header.)95 4489 -y Fe(int)47 b(fits_get_hdrpos)d(/)j(ffghps)286 4602 y(\(fitsfile)f -(*fptr,)g(>)h(int)g(*keysexist,)e(int)i(*keynum,)e(int)i(*status\))0 -4754 y -SDict begin H.S end - 0 4754 a 0 4754 a -SDict begin 13.6 H.A end - 0 4754 a 0 4754 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.2) cvn /DEST pdfmark -end - 0 4754 a 143 -x Fd(9.3.2)112 b(Read)38 b(and)h(W)-9 b(rite)36 b(the)h(Required)h -(Keyw)m(ords)0 5110 y Fi(1)81 b Fj(W)-8 b(rite)34 b(the)f(required)g -(extension)h(header)e(k)m(eyw)m(ords)i(in)m(to)g(the)f(CHU.)h(These)f -(routines)g(are)g(not)g(required,)227 5223 y(and)g(instead)g(the)g -(appropriate)g(header)g(ma)m(y)g(b)s(e)g(constructed)g(b)m(y)g(writing) -g(eac)m(h)h(individual)e(k)m(eyw)m(ord)227 5336 y(in)e(the)h(prop)s(er) -e(sequence.)227 5488 y(The)21 b(simpler)g(\014ts)p 842 +%%Page: 104 112 +TeXDict begin 104 111 bop 0 299 a Fj(104)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_read_ext)e(/)i(ffgextn)286 +668 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(offset,)h(LONGLONG)g(nbytes,)f +(void)i(*buffer\))95 781 y(int)g(fits_write_ext)d(/)k(ffpextn)286 +894 y(\(fitsfile)e(*fptr,)g(LONGLONG)f(offset,)h(LONGLONG)g(nbytes,)f +(void)i(*buffer\))0 1158 y Fi(8)81 b Fj(This)34 b(routine)g(forces)h +(CFITSIO)f(to)h(rescan)g(the)g(curren)m(t)g(header)f(k)m(eyw)m(ords)h +(that)g(de\014ne)f(the)h(structure)227 1271 y(of)f(the)f(HDU)h(\(suc)m +(h)g(as)f(the)h(NAXIS)f(and)g(BITPIX)g(k)m(eyw)m(ords\))h(so)f(that)h +(it)g(reinitializes)i(the)d(in)m(ternal)227 1384 y(bu\013ers)26 +b(that)h(describ)s(e)g(the)g(HDU)g(structure.)39 b(This)26 +b(routine)h(is)g(useful)f(for)g(reinitializing)j(the)e(structure)227 +1497 y(of)34 b(an)f(HDU)h(if)f(an)m(y)h(of)g(the)f(required)g(k)m(eyw)m +(ords)g(\(e.g.,)j(NAXISn\))d(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)48 +b(In)33 b(practice)227 1610 y(it)e(should)e(rarely)h(b)s(e)f(necessary) +h(to)h(call)g(this)f(routine)g(b)s(ecause)f(CFITSIO)g(in)m(ternally)i +(calls)g(it)f(in)g(most)227 1723 y(situations.)95 1987 +y Fe(int)47 b(fits_set_hdustruc)c(/)48 b(ffrdef)286 2100 +y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))141 b(\(DEPRECATED\))0 +2439 y Ff(9.3)135 b(Sp)t(ecialized)46 b(Header)g(Keyw)l(ord)f(Routines) +0 2693 y Fd(9.3.1)112 b(Header)38 b(Information)h(Routines)0 +2906 y Fi(1)81 b Fj(Reserv)m(e)29 b(space)g(in)e(the)i(CHU)f(for)g +(MOREKEYS)f(more)h(header)g(k)m(eyw)m(ords.)41 b(This)27 +b(routine)h(ma)m(y)h(b)s(e)f(called)227 3018 y(to)34 +b(allo)s(cate)h(space)e(for)f(additional)i(k)m(eyw)m(ords)f(at)g(the)g +(time)g(the)g(header)f(is)h(created)g(\(prior)g(to)g(writing)227 +3131 y(an)m(y)h(data\).)51 b(CFITSIO)32 b(can)i(dynamically)g(add)f +(more)g(space)h(to)g(the)g(header)f(when)f(needed,)j(ho)m(w)m(ev)m(er) +227 3244 y(it)c(is)g(more)f(e\016cien)m(t)i(to)f(preallo)s(cate)h(the)f +(required)f(space)h(if)f(the)g(size)i(is)e(kno)m(wn)g(in)g(adv)-5 +b(ance.)95 3509 y Fe(int)47 b(fits_set_hdrsize)d(/)j(ffhdef)286 +3621 y(\(fitsfile)f(*fptr,)g(int)h(morekeys,)e(>)i(int)g(*status\))0 +3886 y Fi(2)81 b Fj(Return)26 b(the)h(n)m(um)m(b)s(er)e(of)j(k)m(eyw)m +(ords)f(in)f(the)h(header)g(\(not)h(coun)m(ting)g(the)f(END)g(k)m(eyw)m +(ord\))h(and)e(the)h(curren)m(t)227 3999 y(p)s(osition)34 +b(in)g(the)g(header.)50 b(The)34 b(p)s(osition)f(is)h(the)g(n)m(um)m(b) +s(er)f(of)h(the)g(k)m(eyw)m(ord)g(record)f(that)i(will)f(b)s(e)f(read) +227 4112 y(next)k(\(or)g(one)f(greater)i(than)e(the)h(p)s(osition)f(of) +h(the)g(last)g(k)m(eyw)m(ord)g(that)g(w)m(as)g(read\).)59 +b(A)37 b(v)-5 b(alue)36 b(of)h(1)g(is)227 4224 y(returned)29 +b(if)i(the)f(p)s(oin)m(ter)h(is)f(p)s(ositioned)h(at)g(the)f(b)s +(eginning)g(of)g(the)h(header.)95 4489 y Fe(int)47 b(fits_get_hdrpos)d +(/)j(ffghps)286 4602 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*keysexist,)e +(int)i(*keynum,)e(int)i(*status\))0 4897 y Fd(9.3.2)112 +b(Read)38 b(and)h(W)-9 b(rite)36 b(the)h(Required)h(Keyw)m(ords)0 +5110 y Fi(1)81 b Fj(W)-8 b(rite)34 b(the)f(required)g(extension)h +(header)e(k)m(eyw)m(ords)i(in)m(to)g(the)f(CHU.)h(These)f(routines)g +(are)g(not)g(required,)227 5223 y(and)g(instead)g(the)g(appropriate)g +(header)g(ma)m(y)g(b)s(e)g(constructed)g(b)m(y)g(writing)g(eac)m(h)h +(individual)e(k)m(eyw)m(ord)227 5336 y(in)e(the)h(prop)s(er)e +(sequence.)227 5488 y(The)21 b(simpler)g(\014ts)p 842 5488 28 4 v 33 w(write)p 1077 5488 V 33 w(imghdr)f(routine)i(is)f (equiv)-5 b(alen)m(t)23 b(to)f(calling)h(\014ts)p 2727 5488 V 32 w(write)p 2961 5488 V 33 w(grphdr)d(with)h(the)h(default)227 @@ -15350,24 +11977,12 @@ (PCOUNT,)227 5714 y(GCOUNT)43 b(and)g(EXTEND)g(k)m(eyw)m(ords)g(are)h (not)f(required)f(in)h(the)h(primary)e(header)h(and)f(are)i(only)p eop end -%%Page: 103 111 -TeXDict begin 103 110 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.103) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.3.)72 -b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 -b Fj(103)227 555 y(written)38 b(if)f(p)s(coun)m(t)g(is)g(not)h(equal)f -(to)i(zero,)h(gcoun)m(t)e(is)f(not)h(equal)g(to)g(zero)g(or)f(one,)j -(and)c(if)i(extend)f(is)227 668 y(TR)m(UE,)k(resp)s(ectiv)m(ely)-8 +%%Page: 105 113 +TeXDict begin 105 112 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 +b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(105)227 +555 y(written)38 b(if)f(p)s(coun)m(t)g(is)g(not)h(equal)f(to)i(zero,)h +(gcoun)m(t)e(is)f(not)h(equal)g(to)g(zero)g(or)f(one,)j(and)c(if)i +(extend)f(is)227 668 y(TR)m(UE,)k(resp)s(ectiv)m(ely)-8 b(.)74 b(When)41 b(writing)g(to)h(an)e(IMA)m(GE)i(extension,)i(the)e (SIMPLE)e(and)g(EXTEND)227 781 y(parameters)c(are)f(ignored.)56 b(It)35 b(is)g(recommended)g(that)h(\014ts)p 2342 781 @@ -15435,44 +12050,31 @@ y(v)-5 b(alue.)41 b(Note)30 b(that)f(if)f(the)h(table)g(is)g(subsequen) m(tly)f(mo)s(di\014ed)f(to)j(increase)f(the)g(maxim)m(um)f(length)h(of) g(the)p eop end -%%Page: 104 112 -TeXDict begin 104 111 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.104) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(104)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(v)m(ectors)39 -b(then)e(the)g(mo)s(difying)g(program)g(is)g(resp)s(onsible)g(for)g -(also)h(up)s(dating)e(the)i(TF)m(ORM)f(k)m(eyw)m(ord)227 -668 y(v)-5 b(alue.)95 935 y Fe(int)47 b(fits_write_btblhdr)c(/)48 -b(ffphbn)286 1048 y(\(fitsfile)e(*fptr,)g(LONGLONG)f(nrows,)h(int)h -(tfields,)f(char)g(**ttype,)334 1161 y(char)h(**tform,)e(char)i -(**tunit,)e(char)i(*extname,)e(LONGLONG)h(pcount,)g(>)h(int)g -(*status\))0 1427 y Fi(4)81 b Fj(Read)30 b(the)h(required)e(k)m(eyw)m -(ords)i(from)f(the)h(CHDU)f(\(image)j(or)d(table\).)42 -b(When)30 b(reading)h(from)f(an)g(IMA)m(GE)227 1540 y(extension)24 -b(the)g(SIMPLE)e(and)h(EXTEND)g(parameters)h(are)f(ignored.)39 -b(A)23 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)g(b)s(e)e(supplied)227 -1653 y(for)30 b(an)m(y)h(of)g(the)f(returned)f(parameters)i(that)g(are) -g(not)f(needed.)95 1920 y Fe(int)47 b(fits_read_imghdr)d(/)j(ffghpr)286 -2033 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(int)f(*simple,)e(int)i -(*bitpix,)f(int)h(*naxis,)334 2146 y(long)g(*naxes,)f(long)g(*pcount,)g -(long)g(*gcount,)g(int)h(*extend,)e(int)i(*status\))95 -2372 y(int)g(fits_read_imghdrll)c(/)48 b(ffghprll)286 -2485 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(int)f(*simple,)e(int)i -(*bitpix,)f(int)h(*naxis,)334 2598 y(LONGLONG)f(*naxes,)f(long)i -(*pcount,)f(long)g(*gcount,)g(int)h(*extend,)e(int)i(*status\))95 -2823 y(int)g(fits_read_atblhdr)c(/)48 b(ffghtb)286 2936 -y(\(fitsfile)e(*fptr,int)f(maxdim,)h(>)h(long)g(*rowlen,)e(long)i +%%Page: 106 114 +TeXDict begin 106 113 bop 0 299 a Fj(106)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(v)m(ectors)39 b(then)e(the)g(mo)s(difying)g +(program)g(is)g(resp)s(onsible)g(for)g(also)h(up)s(dating)e(the)i(TF)m +(ORM)f(k)m(eyw)m(ord)227 668 y(v)-5 b(alue.)95 935 y +Fe(int)47 b(fits_write_btblhdr)c(/)48 b(ffphbn)286 1048 +y(\(fitsfile)e(*fptr,)g(LONGLONG)f(nrows,)h(int)h(tfields,)f(char)g +(**ttype,)334 1161 y(char)h(**tform,)e(char)i(**tunit,)e(char)i +(*extname,)e(LONGLONG)h(pcount,)g(>)h(int)g(*status\))0 +1427 y Fi(4)81 b Fj(Read)30 b(the)h(required)e(k)m(eyw)m(ords)i(from)f +(the)h(CHDU)f(\(image)j(or)d(table\).)42 b(When)30 b(reading)h(from)f +(an)g(IMA)m(GE)227 1540 y(extension)24 b(the)g(SIMPLE)e(and)h(EXTEND)g +(parameters)h(are)f(ignored.)39 b(A)23 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m +(y)g(b)s(e)e(supplied)227 1653 y(for)30 b(an)m(y)h(of)g(the)f(returned) +f(parameters)i(that)g(are)g(not)f(needed.)95 1920 y Fe(int)47 +b(fits_read_imghdr)d(/)j(ffghpr)286 2033 y(\(fitsfile)f(*fptr,)g(int)h +(maxdim,)e(>)j(int)f(*simple,)e(int)i(*bitpix,)f(int)h(*naxis,)334 +2146 y(long)g(*naxes,)f(long)g(*pcount,)g(long)g(*gcount,)g(int)h +(*extend,)e(int)i(*status\))95 2372 y(int)g(fits_read_imghdrll)c(/)48 +b(ffghprll)286 2485 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(int)f +(*simple,)e(int)i(*bitpix,)f(int)h(*naxis,)334 2598 y(LONGLONG)f +(*naxes,)f(long)i(*pcount,)f(long)g(*gcount,)g(int)h(*extend,)e(int)i +(*status\))95 2823 y(int)g(fits_read_atblhdr)c(/)48 b(ffghtb)286 +2936 y(\(fitsfile)e(*fptr,int)f(maxdim,)h(>)h(long)g(*rowlen,)e(long)i (*nrows,)334 3049 y(int)g(*tfields,)e(char)i(**ttype,)e(LONGLONG)h (*tbcol,)g(char)g(**tform,)g(char)h(**tunit,)334 3162 y(char)g(*extname,)93 b(int)47 b(*status\))95 3388 y(int)g @@ -15489,15 +12091,7 @@ (int)h(maxdim,)e(>)j(LONGLONG)d(*nrows,)h(int)h(*tfields,)334 4743 y(char)g(**ttype,)e(char)i(**tform,)e(char)i(**tunit,)f(char)g (*extname,)334 4856 y(long)h(*pcount,)e(int)i(*status\))0 -5011 y -SDict begin H.S end - 0 5011 a 0 5011 a -SDict begin 13.6 H.A end - 0 5011 a 0 5011 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.3) cvn /DEST pdfmark -end - 0 5011 a 144 -x Fd(9.3.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Routines)0 +5155 y Fd(9.3.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Routines)0 5375 y Fj(These)32 b(routines)h(simply)f(app)s(end)f(a)h(new)g(k)m(eyw) m(ord)h(to)h(the)e(header)h(and)f(do)g(not)h(c)m(hec)m(k)h(to)f(see)g (if)g(a)f(k)m(eyw)m(ord)0 5488 y(with)d(the)g(same)h(name)f(already)h @@ -15508,29 +12102,17 @@ (header.)54 b(See)34 b(App)s(endix)f(B)i(for)0 5714 y(the)c (de\014nition)f(of)g(the)h(parameters)f(used)g(in)g(these)h(routines.)p eop end -%%Page: 105 113 -TeXDict begin 105 112 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.105) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.3.)72 -b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 -b Fj(105)0 555 y Fi(1)81 b Fj(W)-8 b(rite)30 b(\(app)s(end\))f(a)g(new) -g(k)m(eyw)m(ord)h(of)g(the)f(appropriate)g(data)h(t)m(yp)s(e)g(in)m(to) -g(the)g(CHU.)f(A)h(n)m(ull)f(p)s(oin)m(ter)g(ma)m(y)227 -668 y(b)s(e)35 b(en)m(tered)h(for)f(the)h(commen)m(t)h(parameter,)g -(whic)m(h)e(will)h(cause)g(the)g(commen)m(t)g(\014eld)f(of)h(the)f(k)m -(eyw)m(ord)227 781 y(to)43 b(b)s(e)e(left)i(blank.)76 -b(The)41 b(\015t,)k(dbl,)f(cmp,)h(and)d(dblcmp)f(v)m(ersions)h(of)g -(this)g(routine)g(ha)m(v)m(e)h(the)g(added)227 894 y(feature)33 +%%Page: 107 115 +TeXDict begin 107 114 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 +b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(107)0 555 +y Fi(1)81 b Fj(W)-8 b(rite)30 b(\(app)s(end\))f(a)g(new)g(k)m(eyw)m +(ord)h(of)g(the)f(appropriate)g(data)h(t)m(yp)s(e)g(in)m(to)g(the)g +(CHU.)f(A)h(n)m(ull)f(p)s(oin)m(ter)g(ma)m(y)227 668 +y(b)s(e)35 b(en)m(tered)h(for)f(the)h(commen)m(t)h(parameter,)g(whic)m +(h)e(will)h(cause)g(the)g(commen)m(t)g(\014eld)f(of)h(the)f(k)m(eyw)m +(ord)227 781 y(to)43 b(b)s(e)e(left)i(blank.)76 b(The)41 +b(\015t,)k(dbl,)f(cmp,)h(and)d(dblcmp)f(v)m(ersions)h(of)g(this)g +(routine)g(ha)m(v)m(e)h(the)g(added)227 894 y(feature)33 b(that)g(if)g(the)f('decimals')i(parameter)f(is)g(negativ)m(e,)i(then)d (the)h('G')g(displa)m(y)g(format)g(rather)f(then)227 1007 y(the)i('E')f(format)h(will)f(b)s(e)g(used)f(when)g(constructing)i @@ -15592,22 +12174,10 @@ (eyw)m(ord\))g(b)m(y)227 5714 y(including)24 b(the)h(amp)s(ersand)e(c)m (haracter)j(as)e(the)h(last)g(non-blank)f(c)m(haracter)i(in)e(the)g (\(\014rst\))h(COMMENTS)p eop end -%%Page: 106 114 -TeXDict begin 106 113 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.106) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(106)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)227 555 y Fj(string)23 b(parameter.)38 +%%Page: 108 116 +TeXDict begin 108 115 bop 0 299 a Fj(108)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)227 555 y Fj(string)23 b(parameter.)38 b(This)22 b(same)h(string)f(will)h(then)f(b)s(e)g(used)f(for)h(the)h (commen)m(t)g(\014eld)f(in)g(all)i(the)e(k)m(eyw)m(ords.)227 668 y(One)32 b(ma)m(y)h(also)g(en)m(ter)f(a)h(n)m(ull)f(p)s(oin)m(ter)g @@ -15660,62 +12230,42 @@ 28 4 v 32 w(parse)p 2028 4659 V 33 w(template)g(routine.)95 4873 y Fe(int)47 b(fits_write_key_template)42 b(/)47 b(ffpktp)286 4986 y(\(fitsfile)f(*fptr,)g(const)g(char)h(*filename,)e -(>)i(int)g(*status\))0 5126 y -SDict begin H.S end - 0 5126 a 0 5126 a -SDict begin 13.6 H.A end - 0 5126 -a 0 5126 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.4) cvn /DEST pdfmark -end - 0 5126 a 143 x Fd(9.3.4)112 b(Insert)38 b(Keyw)m(ord)f -(Routines)0 5488 y Fj(These)42 b(insert)h(routines)f(are)h(somewhat)g -(less)f(e\016cien)m(t)i(than)f(the)f(`up)s(date')g(or)h(`write')g(k)m -(eyw)m(ord)g(routines)0 5601 y(b)s(ecause)30 b(the)g(follo)m(wing)i(k)m -(eyw)m(ords)e(in)g(the)g(header)g(m)m(ust)g(b)s(e)f(shifted)h(do)m(wn)f -(to)i(mak)m(e)g(ro)s(om)f(for)g(the)g(inserted)0 5714 -y(k)m(eyw)m(ord.)41 b(See)31 b(App)s(endix)d(B)j(for)f(the)h -(de\014nition)f(of)g(the)h(parameters)g(used)e(in)h(these)h(routines.)p -eop end -%%Page: 107 115 -TeXDict begin 107 114 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.107) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.3.)72 -b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 -b Fj(107)0 555 y Fi(1)81 b Fj(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h -(record)g(in)m(to)g(the)g(CHU)g(at)g(the)g(sp)s(eci\014ed)f(p)s -(osition)h(\(i.e.,)i(immediately)f(preceding)227 668 -y(the)j(\(k)m(eyn)m(um\)th)g(k)m(eyw)m(ord)g(in)f(the)g(header.\))95 -921 y Fe(int)47 b(fits_insert_record)c(/)48 b(ffirec)286 -1034 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(char)i(*card,)f(>)i(int)f -(*status\))0 1286 y Fi(2)81 b Fj(Insert)24 b(a)h(new)g(k)m(eyw)m(ord)g -(in)m(to)h(the)f(CHU.)g(The)g(new)f(k)m(eyw)m(ord)i(is)f(inserted)f -(immediately)j(follo)m(wing)f(the)f(last)227 1399 y(k)m(eyw)m(ord)i -(that)f(has)f(b)s(een)h(read)f(from)h(the)g(header.)39 -b(The)25 b(`longstr')i(v)m(ersion)f(has)f(the)h(same)g(functionalit)m -(y)227 1512 y(as)33 b(the)g(`str')f(v)m(ersion)h(except)h(that)f(it)g -(also)g(supp)s(orts)e(the)h(lo)s(cal)i(long)f(string)g(k)m(eyw)m(ord)g -(con)m(v)m(en)m(tion)h(for)227 1625 y(strings)29 b(longer)g(than)g(68)h -(c)m(haracters.)41 b(A)29 b(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)g(b)s(e)g -(en)m(tered)g(for)g(the)g(commen)m(t)g(parameter)227 -1738 y(whic)m(h)d(will)f(cause)h(the)g(commen)m(t)h(\014eld)e(to)h(b)s -(e)f(left)h(blank.)39 b(The)25 b(\015t,)h(dbl,)g(cmp,)h(and)e(dblcmp)f -(v)m(ersions)i(of)227 1851 y(this)k(routine)g(ha)m(v)m(e)h(the)e(added) -g(feature)i(that)f(if)g(the)g('decimals')h(parameter)f(is)g(negativ)m -(e,)i(then)d(the)h('G')227 1964 y(displa)m(y)g(format)g(rather)f(then)g -(the)h('E')f(format)h(will)g(b)s(e)f(used)f(when)h(constructing)h(the)f -(k)m(eyw)m(ord)h(v)-5 b(alue,)227 2077 y(taking)27 b(the)g(absolute)g -(v)-5 b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39 +(>)i(int)g(*status\))0 5269 y Fd(9.3.4)112 b(Insert)38 +b(Keyw)m(ord)f(Routines)0 5488 y Fj(These)42 b(insert)h(routines)f(are) +h(somewhat)g(less)f(e\016cien)m(t)i(than)f(the)f(`up)s(date')g(or)h +(`write')g(k)m(eyw)m(ord)g(routines)0 5601 y(b)s(ecause)30 +b(the)g(follo)m(wing)i(k)m(eyw)m(ords)e(in)g(the)g(header)g(m)m(ust)g +(b)s(e)f(shifted)h(do)m(wn)f(to)i(mak)m(e)g(ro)s(om)f(for)g(the)g +(inserted)0 5714 y(k)m(eyw)m(ord.)41 b(See)31 b(App)s(endix)d(B)j(for)f +(the)h(de\014nition)f(of)g(the)h(parameters)g(used)e(in)h(these)h +(routines.)p eop end +%%Page: 109 117 +TeXDict begin 109 116 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 +b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(109)0 555 +y Fi(1)81 b Fj(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m(to)g +(the)g(CHU)g(at)g(the)g(sp)s(eci\014ed)f(p)s(osition)h(\(i.e.,)i +(immediately)f(preceding)227 668 y(the)j(\(k)m(eyn)m(um\)th)g(k)m(eyw)m +(ord)g(in)f(the)g(header.\))95 921 y Fe(int)47 b(fits_insert_record)c +(/)48 b(ffirec)286 1034 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(char)i +(*card,)f(>)i(int)f(*status\))0 1286 y Fi(2)81 b Fj(Insert)24 +b(a)h(new)g(k)m(eyw)m(ord)g(in)m(to)h(the)f(CHU.)g(The)g(new)f(k)m(eyw) +m(ord)i(is)f(inserted)f(immediately)j(follo)m(wing)f(the)f(last)227 +1399 y(k)m(eyw)m(ord)i(that)f(has)f(b)s(een)h(read)f(from)h(the)g +(header.)39 b(The)25 b(`longstr')i(v)m(ersion)f(has)f(the)h(same)g +(functionalit)m(y)227 1512 y(as)33 b(the)g(`str')f(v)m(ersion)h(except) +h(that)f(it)g(also)g(supp)s(orts)e(the)h(lo)s(cal)i(long)f(string)g(k)m +(eyw)m(ord)g(con)m(v)m(en)m(tion)h(for)227 1625 y(strings)29 +b(longer)g(than)g(68)h(c)m(haracters.)41 b(A)29 b(n)m(ull)g(p)s(oin)m +(ter)g(ma)m(y)g(b)s(e)g(en)m(tered)g(for)g(the)g(commen)m(t)g +(parameter)227 1738 y(whic)m(h)d(will)f(cause)h(the)g(commen)m(t)h +(\014eld)e(to)h(b)s(e)f(left)h(blank.)39 b(The)25 b(\015t,)h(dbl,)g +(cmp,)h(and)e(dblcmp)f(v)m(ersions)i(of)227 1851 y(this)k(routine)g(ha) +m(v)m(e)h(the)e(added)g(feature)i(that)f(if)g(the)g('decimals')h +(parameter)f(is)g(negativ)m(e,)i(then)d(the)h('G')227 +1964 y(displa)m(y)g(format)g(rather)f(then)g(the)h('E')f(format)h(will) +g(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)-5 +b(alue,)227 2077 y(taking)27 b(the)g(absolute)g(v)-5 +b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39 b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227 2189 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227 @@ -15739,65 +12289,45 @@ b(alue)34 b(string)f(of)h(the)227 4840 y(k)m(eyw)m(ord)d(is)g(left)g (blank)f(in)g(this)g(case.)95 5093 y Fe(int)47 b(fits_insert_key_null)c (/)k(ffikyu)286 5205 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g -(*comment,)g(>)h(int)g(*status\))0 5352 y -SDict begin H.S end - 0 5352 a 0 -5352 a -SDict begin 13.6 H.A end - 0 5352 a 0 5352 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.5) cvn /DEST pdfmark -end - 0 5352 a 143 x Fd(9.3.5)112 +(*comment,)g(>)h(int)g(*status\))0 5495 y Fd(9.3.5)112 b(Read)38 b(Keyw)m(ord)g(Routines)0 5714 y Fj(Wild)31 b(card)f(c)m(haracters)i(ma)m(y)f(b)s(e)f(used)f(when)h(sp)s(ecifying)g (the)g(name)h(of)f(the)h(k)m(eyw)m(ord)g(to)g(b)s(e)f(read.)p eop end -%%Page: 108 116 -TeXDict begin 108 115 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.108) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(108)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(1)81 b Fj(Read)43 -b(a)h(k)m(eyw)m(ord)g(v)-5 b(alue)43 b(\(with)h(the)f(appropriate)h -(data)g(t)m(yp)s(e\))g(and)e(commen)m(t)j(from)e(the)g(CHU.)h(If)f(a) -227 668 y(NULL)32 b(commen)m(t)h(p)s(oin)m(ter)f(is)h(giv)m(en)g(on)f -(input,)f(then)h(the)g(commen)m(t)i(string)e(will)g(not)g(b)s(e)g -(returned.)44 b(If)227 781 y(the)32 b(v)-5 b(alue)33 -b(of)f(the)g(k)m(eyw)m(ord)g(is)g(not)h(de\014ned)d(\(i.e.,)k(the)e(v) --5 b(alue)33 b(\014eld)e(is)h(blank\))g(then)g(an)g(error)f(status)h(=) -227 894 y(V)-10 b(ALUE)p 545 894 28 4 v 33 w(UNDEFINED)29 -b(will)f(b)s(e)g(returned)e(and)h(the)h(input)f(v)-5 -b(alue)28 b(will)h(not)f(b)s(e)f(c)m(hanged)h(\(except)h(that)227 -1007 y(\013gkys)i(will)g(reset)g(the)f(v)-5 b(alue)31 -b(to)g(a)g(n)m(ull)f(string\).)95 1252 y Fe(int)47 b(fits_read_key_str) -c(/)48 b(ffgkys)286 1365 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h -(char)g(*value,)f(char)g(*comment,)334 1478 y(int)h(*status\);)95 -1704 y(NOTE:)g(after)f(calling)g(the)h(following)e(routine,)h(programs) -f(must)i(explicitly)e(free)382 1817 y(the)i(memory)f(allocated)f(for)i -('longstr')e(after)i(it)g(is)g(no)g(longer)f(needed)g(by)382 -1930 y(calling)g(fits_free_memory.)95 2155 y(int)h -(fits_read_key_longstr)42 b(/)48 b(ffgkls)286 2268 y(\(fitsfile)e -(*fptr,)g(char)g(*keyname,)g(>)h(char)g(**longstr,)e(char)h(*comment,) -620 2381 y(int)h(*status\))95 2607 y(int)g(fits_free_memory)d(/)j -(fffree)286 2720 y(\(char)g(*longstr,)e(>)i(int)g(*status\);)95 -2946 y(int)g(fits_read_key_[log,)c(lng,)k(flt,)f(dbl,)h(cmp,)f(dblcmp]) -g(/)i(ffgky[ljedcm])286 3059 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g -(>)h(DTYPE)f(*numval,)g(char)h(*comment,)334 3172 y(int)g(*status\))95 -3397 y(int)g(fits_read_key_lnglng)c(/)k(ffgkyjj)286 3510 -y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(LONGLONG)f(*numval,)f -(char)i(*comment,)334 3623 y(int)g(*status\))0 3868 y -Fi(2)81 b Fj(Read)36 b(a)h(sequence)f(of)h(indexed)e(k)m(eyw)m(ord)i(v) --5 b(alues)37 b(\(e.g.,)i(NAXIS1,)g(NAXIS2,)f(...\).)59 +%%Page: 110 118 +TeXDict begin 110 117 bop 0 299 a Fj(110)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fi(1)81 b Fj(Read)43 b(a)h(k)m(eyw)m(ord)g(v)-5 +b(alue)43 b(\(with)h(the)f(appropriate)h(data)g(t)m(yp)s(e\))g(and)e +(commen)m(t)j(from)e(the)g(CHU.)h(If)f(a)227 668 y(NULL)32 +b(commen)m(t)h(p)s(oin)m(ter)f(is)h(giv)m(en)g(on)f(input,)f(then)h +(the)g(commen)m(t)i(string)e(will)g(not)g(b)s(e)g(returned.)44 +b(If)227 781 y(the)32 b(v)-5 b(alue)33 b(of)f(the)g(k)m(eyw)m(ord)g(is) +g(not)h(de\014ned)d(\(i.e.,)k(the)e(v)-5 b(alue)33 b(\014eld)e(is)h +(blank\))g(then)g(an)g(error)f(status)h(=)227 894 y(V)-10 +b(ALUE)p 545 894 28 4 v 33 w(UNDEFINED)29 b(will)f(b)s(e)g(returned)e +(and)h(the)h(input)f(v)-5 b(alue)28 b(will)h(not)f(b)s(e)f(c)m(hanged)h +(\(except)h(that)227 1007 y(\013gkys)i(will)g(reset)g(the)f(v)-5 +b(alue)31 b(to)g(a)g(n)m(ull)f(string\).)95 1252 y Fe(int)47 +b(fits_read_key_str)c(/)48 b(ffgkys)286 1365 y(\(fitsfile)e(*fptr,)g +(char)g(*keyname,)g(>)h(char)g(*value,)f(char)g(*comment,)334 +1478 y(int)h(*status\);)95 1704 y(NOTE:)g(after)f(calling)g(the)h +(following)e(routine,)h(programs)f(must)i(explicitly)e(free)382 +1817 y(the)i(memory)f(allocated)f(for)i('longstr')e(after)i(it)g(is)g +(no)g(longer)f(needed)g(by)382 1930 y(calling)g(fits_free_memory.)95 +2155 y(int)h(fits_read_key_longstr)42 b(/)48 b(ffgkls)286 +2268 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(char)g(**longstr,)e +(char)h(*comment,)620 2381 y(int)h(*status\))95 2607 +y(int)g(fits_free_memory)d(/)j(fffree)286 2720 y(\(char)g(*longstr,)e +(>)i(int)g(*status\);)95 2946 y(int)g(fits_read_key_[log,)c(lng,)k +(flt,)f(dbl,)h(cmp,)f(dblcmp])g(/)i(ffgky[ljedcm])286 +3059 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(DTYPE)f(*numval,)g +(char)h(*comment,)334 3172 y(int)g(*status\))95 3397 +y(int)g(fits_read_key_lnglng)c(/)k(ffgkyjj)286 3510 y(\(fitsfile)f +(*fptr,)g(char)g(*keyname,)g(>)h(LONGLONG)f(*numval,)f(char)i +(*comment,)334 3623 y(int)g(*status\))0 3868 y Fi(2)81 +b Fj(Read)36 b(a)h(sequence)f(of)h(indexed)e(k)m(eyw)m(ord)i(v)-5 +b(alues)37 b(\(e.g.,)i(NAXIS1,)g(NAXIS2,)f(...\).)59 b(The)36 b(input)f(starting)227 3981 y(index)j(n)m(um)m(b)s(er)e (\(nstart\))j(m)m(ust)f(b)s(e)f(greater)i(than)e(0.)64 b(If)37 b(the)h(v)-5 b(alue)38 b(of)g(an)m(y)h(of)f(the)g(k)m(eyw)m @@ -15822,37 +12352,17 @@ Fi(3)81 b Fj(Read)37 b(the)h(v)-5 b(alue)38 b(of)g(a)g(\015oating)g(p)s (oin)m(t)g(k)m(eyw)m(ord,)i(returning)d(the)h(in)m(teger)h(and)e (fractional)i(parts)e(of)h(the)p eop end -%%Page: 109 117 -TeXDict begin 109 116 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.109) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.3.)72 -b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 -b Fj(109)227 555 y(v)-5 b(alue)35 b(in)e(separate)i(routine)f(argumen)m -(ts.)52 b(This)33 b(routine)h(ma)m(y)g(b)s(e)f(used)h(to)g(read)g(an)m -(y)g(k)m(eyw)m(ord)h(but)e(is)227 668 y(esp)s(ecially)f(useful)d(for)i -(reading)f(the)h('triple)g(precision')f(k)m(eyw)m(ords)h(written)g(b)m -(y)f(\013pkyt.)95 929 y Fe(int)47 b(fits_read_key_triple)c(/)k(ffgkyt) -286 1042 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(long)g -(*intval,)e(double)h(*frac,)334 1155 y(char)h(*comment,)e(int)i -(*status\))0 1296 y -SDict begin H.S end - 0 1296 a 0 1296 a -SDict begin 13.6 H.A end - 0 1296 a 0 1296 -a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.6) cvn /DEST pdfmark -end - 0 1296 a 150 x Fd(9.3.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e(Routines)0 +%%Page: 111 119 +TeXDict begin 111 118 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 +b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(111)227 +555 y(v)-5 b(alue)35 b(in)e(separate)i(routine)f(argumen)m(ts.)52 +b(This)33 b(routine)h(ma)m(y)g(b)s(e)f(used)h(to)g(read)g(an)m(y)g(k)m +(eyw)m(ord)h(but)e(is)227 668 y(esp)s(ecially)f(useful)d(for)i(reading) +f(the)h('triple)g(precision')f(k)m(eyw)m(ords)h(written)g(b)m(y)f +(\013pkyt.)95 929 y Fe(int)47 b(fits_read_key_triple)c(/)k(ffgkyt)286 +1042 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(long)g(*intval,)e +(double)h(*frac,)334 1155 y(char)h(*comment,)e(int)i(*status\))0 +1446 y Fd(9.3.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e(Routines)0 1666 y Fj(These)31 b(routines)h(mo)s(dify)f(the)h(v)-5 b(alue)32 b(of)g(an)g(existing)g(k)m(eyw)m(ord.)46 b(An)31 b(error)g(is)h(returned)e(if)i(the)g(k)m(eyw)m(ord)g(do)s(es)0 @@ -15903,109 +12413,69 @@ y(>)i(int)e(*status\))95 5714 y(int)h(fits_modify_key_[flt,)42 b(dbl,)47 b(fixflt,)f(fixdbl])g(/)h(ffmky[edfg])p eop end -%%Page: 110 118 -TeXDict begin 110 117 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.110) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(110)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)286 555 y Fe(\(fitsfile)46 -b(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(int)h(decimals,)334 -668 y(char)g(*comment,)e(>)i(int)g(*status\))95 894 y(int)g -(fits_modify_key_[cmp,)42 b(dblcmp,)k(fixcmp,)g(fixdblcmp])f(/)i -(ffmk[yc,ym,fc,fm])286 1007 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g -(DTYPE)g(*numval,)g(int)g(decimals,)334 1120 y(char)h(*comment,)e(>)i -(int)g(*status\))0 1431 y Fi(6)81 b Fj(Mo)s(dify)22 b(the)g(v)-5 -b(alue)23 b(of)f(an)g(existing)i(k)m(eyw)m(ord)e(to)h(b)s(e)f -(unde\014ned,)g(or)g(n)m(ull.)38 b(The)22 b(v)-5 b(alue)22 -b(string)h(of)f(the)g(k)m(eyw)m(ord)227 1544 y(is)30 -b(set)h(to)g(blank.)40 b(Optionally)-8 b(,)31 b(one)f(ma)m(y)h(lea)m(v) -m(e)h(the)f(commen)m(t)g(\014eld)e(unc)m(hanged)h(b)m(y)g(setting)h -(the)f(input)227 1657 y(COMMENT)f(parameter)g(equal)g(to)g(the)g(amp)s -(ersand)e(c)m(haracter)k(\(&\))e(or)f(b)m(y)h(en)m(tering)g(a)g(n)m -(ull)g(p)s(oin)m(ter.)95 1968 y Fe(int)47 b(fits_modify_key_null)c(/)k -(ffmkyu)286 2081 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g -(*comment,)g(>)h(int)g(*status\))0 2290 y -SDict begin H.S end - 0 2290 a 0 -2290 a -SDict begin 13.6 H.A end - 0 2290 a 0 2290 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.3.7) cvn /DEST pdfmark -end - 0 2290 a 143 x Fd(9.3.7)112 -b(Up)s(date)39 b(Keyw)m(ord)e(Routines)0 2680 y Fi(1)81 -b Fj(These)29 b(up)s(date)g(routines)h(mo)s(dify)f(the)g(v)-5 -b(alue,)31 b(and)e(optionally)i(the)f(commen)m(t)h(\014eld,)f(of)g(the) -g(k)m(eyw)m(ord)g(if)f(it)227 2793 y(already)34 b(exists,)g(otherwise)f -(the)g(new)f(k)m(eyw)m(ord)h(is)f(app)s(ended)f(to)j(the)f(header.)47 -b(A)33 b(separate)g(routine)g(is)227 2906 y(pro)m(vided)c(for)g(eac)m +%%Page: 112 120 +TeXDict begin 112 119 bop 0 299 a Fj(112)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(char)g(*keyname,)g +(DTYPE)g(numval,)g(int)h(decimals,)334 668 y(char)g(*comment,)e(>)i +(int)g(*status\))95 894 y(int)g(fits_modify_key_[cmp,)42 +b(dblcmp,)k(fixcmp,)g(fixdblcmp])f(/)i(ffmk[yc,ym,fc,fm])286 +1007 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(*numval,)g(int) +g(decimals,)334 1120 y(char)h(*comment,)e(>)i(int)g(*status\))0 +1434 y Fi(6)81 b Fj(Mo)s(dify)22 b(the)g(v)-5 b(alue)23 +b(of)f(an)g(existing)i(k)m(eyw)m(ord)e(to)h(b)s(e)f(unde\014ned,)g(or)g +(n)m(ull.)38 b(The)22 b(v)-5 b(alue)22 b(string)h(of)f(the)g(k)m(eyw)m +(ord)227 1547 y(is)30 b(set)h(to)g(blank.)40 b(Optionally)-8 +b(,)31 b(one)f(ma)m(y)h(lea)m(v)m(e)h(the)f(commen)m(t)g(\014eld)e(unc) +m(hanged)h(b)m(y)g(setting)h(the)f(input)227 1660 y(COMMENT)f +(parameter)g(equal)g(to)g(the)g(amp)s(ersand)e(c)m(haracter)k(\(&\))e +(or)f(b)m(y)h(en)m(tering)g(a)g(n)m(ull)g(p)s(oin)m(ter.)95 +1974 y Fe(int)47 b(fits_modify_key_null)c(/)k(ffmkyu)286 +2087 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h +(int)g(*status\))0 2441 y Fd(9.3.7)112 b(Up)s(date)39 +b(Keyw)m(ord)e(Routines)0 2690 y Fi(1)81 b Fj(These)29 +b(up)s(date)g(routines)h(mo)s(dify)f(the)g(v)-5 b(alue,)31 +b(and)e(optionally)i(the)f(commen)m(t)h(\014eld,)f(of)g(the)g(k)m(eyw)m +(ord)g(if)f(it)227 2803 y(already)34 b(exists,)g(otherwise)f(the)g(new) +f(k)m(eyw)m(ord)h(is)f(app)s(ended)f(to)j(the)f(header.)47 +b(A)33 b(separate)g(routine)g(is)227 2916 y(pro)m(vided)c(for)g(eac)m (h)h(k)m(eyw)m(ord)f(data)h(t)m(yp)s(e.)41 b(The)28 b(`longstr')i(v)m (ersion)g(has)e(the)i(same)f(functionalit)m(y)h(as)g(the)227 -3019 y(`str')h(v)m(ersion)g(except)h(that)g(it)f(also)h(supp)s(orts)c +3029 y(`str')h(v)m(ersion)g(except)h(that)g(it)f(also)h(supp)s(orts)c (the)j(lo)s(cal)h(long)g(string)e(k)m(eyw)m(ord)i(con)m(v)m(en)m(tion)h -(for)d(strings)227 3132 y(longer)i(than)f(68)h(c)m(haracters.)45 +(for)d(strings)227 3142 y(longer)i(than)f(68)h(c)m(haracters.)45 b(A)31 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)f(b)s(e)g(en)m(tered)h(for)f -(the)g(commen)m(t)i(parameter)e(whic)m(h)227 3245 y(will)i(lea)m(v)m(e) +(the)g(commen)m(t)i(parameter)e(whic)m(h)227 3255 y(will)i(lea)m(v)m(e) h(the)f(commen)m(t)g(\014eld)f(unc)m(hanged)g(or)g(blank.)46 b(The)31 b(\015t,)i(dbl,)f(cmp,)h(and)e(dblcmp)g(v)m(ersions)i(of)227 -3357 y(this)d(routine)g(ha)m(v)m(e)h(the)e(added)g(feature)i(that)f(if) +3367 y(this)d(routine)g(ha)m(v)m(e)h(the)e(added)g(feature)i(that)f(if) g(the)g('decimals')h(parameter)f(is)g(negativ)m(e,)i(then)d(the)h('G') -227 3470 y(displa)m(y)g(format)g(rather)f(then)g(the)h('E')f(format)h +227 3480 y(displa)m(y)g(format)g(rather)f(then)g(the)h('E')f(format)h (will)g(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)-5 -b(alue,)227 3583 y(taking)27 b(the)g(absolute)g(v)-5 +b(alue,)227 3593 y(taking)27 b(the)g(absolute)g(v)-5 b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39 b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227 -3696 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) +3706 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227 -3809 y(the)31 b(v)-5 b(alue.)95 4121 y Fe(int)47 b +3819 y(the)31 b(v)-5 b(alue.)95 4133 y Fe(int)47 b (fits_update_key_[str,)42 b(longstr])k(/)h(ffu[kys,)f(kls])286 -4233 y(\(fitsfile)g(*fptr,)g(char)g(*keyname,)g(char)g(*value,)g(char)h -(*comment,)334 4346 y(>)h(int)e(*status\))95 4572 y(int)h +4246 y(\(fitsfile)g(*fptr,)g(char)g(*keyname,)g(char)g(*value,)g(char)h +(*comment,)334 4359 y(>)h(int)e(*status\))95 4585 y(int)h (fits_update_key_[log,)42 b(lng])47 b(/)g(ffuky[lj])286 -4685 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(char) -g(*comment,)334 4798 y(>)i(int)e(*status\))95 5024 y(int)h +4698 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(char) +g(*comment,)334 4811 y(>)i(int)e(*status\))95 5036 y(int)h (fits_update_key_[flt,)42 b(dbl,)47 b(fixflt,)f(fixdbl])g(/)h -(ffuky[edfg])286 5137 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE) -g(numval,)g(int)h(decimals,)334 5250 y(char)g(*comment,)e(>)i(int)g -(*status\))95 5475 y(int)g(fits_update_key_[cmp,)42 b(dblcmp,)k -(fixcmp,)g(fixdblcmp])f(/)i(ffuk[yc,ym,fc,fm])286 5588 +(ffuky[edfg])286 5149 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE) +g(numval,)g(int)h(decimals,)334 5262 y(char)g(*comment,)e(>)i(int)g +(*status\))95 5488 y(int)g(fits_update_key_[cmp,)42 b(dblcmp,)k +(fixcmp,)g(fixdblcmp])f(/)i(ffuk[yc,ym,fc,fm])286 5601 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(*numval,)g(int)g -(decimals,)334 5701 y(char)h(*comment,)e(>)i(int)g(*status\))p +(decimals,)334 5714 y(char)h(*comment,)e(>)i(int)g(*status\))p eop end -%%Page: 111 119 -TeXDict begin 111 118 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.111) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.4.)72 -b(DEFINE)31 b(D)m(A)-8 b(T)g(A)32 b(SCALING)e(AND)h(UNDEFINED)h(PIXEL)d -(P)-8 b(ARAMETERS)655 b Fj(111)0 464 y -SDict begin H.S end - 0 464 a 0 464 -a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.9.4) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(9.4)135 b(De\014ne)45 +%%Page: 113 121 +TeXDict begin 113 120 bop 0 299 a Fh(9.4.)72 b(DEFINE)31 +b(D)m(A)-8 b(T)g(A)32 b(SCALING)e(AND)h(UNDEFINED)h(PIXEL)d(P)-8 +b(ARAMETERS)655 b Fj(113)0 555 y Ff(9.4)135 b(De\014ne)45 b(Data)h(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l(arameters)0 805 y Fj(These)37 b(routines)g(set)h(or)f(mo)s(dify)g(the)g(in)m (ternal)h(parameters)g(used)e(b)m(y)i(CFITSIO)d(to)j(either)g(scale)h @@ -16074,32 +12544,12 @@ (or)f('J'\).)i(This)d(do)s(es)i(not)f(create)j(or)d(c)m(hange)i(the)e (v)-5 b(alue)29 b(of)g(the)g(TNULLn)227 5714 y(k)m(eyw)m(ord.)p eop end -%%Page: 112 120 -TeXDict begin 112 119 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.112) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(112)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_set_btblnull)c(/)48 +%%Page: 114 122 +TeXDict begin 114 121 bop 0 299 a Fj(114)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_set_btblnull)c(/)48 b(fftnul)286 668 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h -(nulval,)g(>)h(int)g(*status\))0 818 y -SDict begin H.S end - 0 818 a 0 818 -a -SDict begin 13.6 H.A end - 0 818 a 0 818 a -SDict begin [/View [/XYZ H.V]/Dest (section.9.5) cvn /DEST pdfmark -end - 0 818 a 177 x Ff(9.5)135 b(Sp)t(ecialized)61 +(nulval,)g(>)h(int)g(*status\))0 995 y Ff(9.5)135 b(Sp)t(ecialized)61 b(FITS)e(Primary)i(Arra)l(y)f(or)h(IMA)l(GE)e(Extension)j(I/O)306 1144 y(Routines)0 1394 y Fj(These)27 b(routines)h(read)f(or)h(write)g (data)g(v)-5 b(alues)28 b(in)g(the)f(primary)g(data)h(arra)m(y)h @@ -16194,31 +12644,18 @@ 5714 y(dimension)30 b(and)g(ev)m(ery)h(3rd)f(pixel)g(in)g(the)h(second) f(dimension)g(will)h(b)s(e)f(returned)f(to)i(the)f('arra)m(y')i (parameter.)p eop end -%%Page: 113 121 -TeXDict begin 113 120 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.113) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.5.)72 -b(SPECIALIZED)29 b(FITS)g(PRIMAR)-8 b(Y)31 b(ARRA)-8 -b(Y)32 b(OR)d(IMA)m(GE)j(EXTENSION)d(I/O)h(R)m(OUTINES)80 -b Fj(113)0 555 y(Tw)m(o)29 b(t)m(yp)s(es)h(of)f(routines)g(are)h(pro)m -(vided)e(to)i(read)f(the)h(data)g(arra)m(y)f(whic)m(h)g(di\013er)g(in)g -(the)h(w)m(a)m(y)g(unde\014ned)d(pixels)0 668 y(are)38 -b(handled.)60 b(The)37 b(\014rst)g(t)m(yp)s(e)g(of)g(routines)h -(\(e.g.,)i(\013gp)m(v)p 2059 668 28 4 v 34 w(\))d(simply)g(return)f(an) -h(arra)m(y)h(of)g(data)g(elemen)m(ts)g(in)0 781 y(whic)m(h)30 -b(unde\014ned)f(pixels)h(are)h(set)g(equal)g(to)h(a)f(v)-5 -b(alue)31 b(sp)s(eci\014ed)e(b)m(y)i(the)g(user)e(in)i(the)f(`n)m(ulv) --5 b(al')32 b(parameter.)41 b(An)0 894 y(additional)30 +%%Page: 115 123 +TeXDict begin 115 122 bop 0 299 a Fh(9.5.)72 b(SPECIALIZED)29 +b(FITS)g(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)32 b(OR)d(IMA)m(GE)j(EXTENSION) +d(I/O)h(R)m(OUTINES)80 b Fj(115)0 555 y(Tw)m(o)29 b(t)m(yp)s(es)h(of)f +(routines)g(are)h(pro)m(vided)e(to)i(read)f(the)h(data)g(arra)m(y)f +(whic)m(h)g(di\013er)g(in)g(the)h(w)m(a)m(y)g(unde\014ned)d(pixels)0 +668 y(are)38 b(handled.)60 b(The)37 b(\014rst)g(t)m(yp)s(e)g(of)g +(routines)h(\(e.g.,)i(\013gp)m(v)p 2059 668 28 4 v 34 +w(\))d(simply)g(return)f(an)h(arra)m(y)h(of)g(data)g(elemen)m(ts)g(in)0 +781 y(whic)m(h)30 b(unde\014ned)f(pixels)h(are)h(set)g(equal)g(to)h(a)f +(v)-5 b(alue)31 b(sp)s(eci\014ed)e(b)m(y)i(the)g(user)e(in)i(the)f(`n)m +(ulv)-5 b(al')32 b(parameter.)41 b(An)0 894 y(additional)30 b(feature)f(of)g(these)h(routines)e(is)h(that)h(if)f(the)g(user)f(sets) h(n)m(ulv)-5 b(al)29 b(=)g(0,)h(then)e(no)h(c)m(hec)m(ks)h(for)f (unde\014ned)0 1007 y(pixels)c(will)g(b)s(e)g(p)s(erformed,)f(th)m(us)h @@ -16233,124 +12670,99 @@ (to)f(use)f(in)g(some)g(circumstances,)i(ho)m(w)m(ev)m(er,)g(it)e (requires)g(an)g(additional)0 1458 y(arra)m(y)g(of)f(logical)j(v)-5 b(alues)31 b(whic)m(h)f(can)h(b)s(e)e(un)m(wieldy)h(when)g(w)m(orking)g -(with)g(large)i(data)f(arra)m(ys.)0 1732 y Fi(1)81 b +(with)g(large)i(data)f(arra)m(ys.)0 1695 y Fi(1)81 b Fj(W)-8 b(rite)31 b(elemen)m(ts)h(in)m(to)f(the)g(FITS)f(data)h(arra)m -(y)-8 b(.)95 2005 y Fe(int)47 b(fits_write_img)d(/)k(ffppr)286 -2117 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(LONGLONG)g(firstelem,)g -(LONGLONG)h(nelements,)334 2230 y(DTYPE)g(*array,)g(int)h(*status\);)95 -2456 y(int)g(fits_write_img_[byt,)c(sht,)j(usht,)h(int,)f(uint,)h(lng,) -f(ulng,)h(lnglng,)e(ulnglng,)h(flt,)h(dbl])f(/)286 2569 -y(ffppr[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 2682 +(y)-8 b(.)95 1932 y Fe(int)47 b(fits_write_img)d(/)k(ffppr)286 +2045 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(LONGLONG)g(firstelem,)g +(LONGLONG)h(nelements,)334 2158 y(DTYPE)g(*array,)g(int)h(*status\);)95 +2384 y(int)g(fits_write_img_[byt,)c(sht,)j(usht,)h(int,)f(uint,)h(lng,) +f(ulng,)h(lnglng,)e(ulnglng,)h(flt,)h(dbl])f(/)286 2497 +y(ffppr[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 2610 y(\(fitsfile)g(*fptr,)g(long)g(group,)g(LONGLONG)g(firstelem,)f -(LONGLONG)h(nelements,)334 2795 y(DTYPE)g(*array,)g(>)i(int)f -(*status\);)95 3021 y(int)g(fits_write_imgnull)c(/)48 -b(ffppn)286 3134 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(LONGLONG)g -(firstelem,)g(LONGLONG)h(nelements,)334 3247 y(DTYPE)g(*array,)g(DTYPE) -h(*nulval,)e(>)j(int)f(*status\);)95 3472 y(int)g +(LONGLONG)h(nelements,)334 2723 y(DTYPE)g(*array,)g(>)i(int)f +(*status\);)95 2949 y(int)g(fits_write_imgnull)c(/)48 +b(ffppn)286 3061 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(LONGLONG)g +(firstelem,)g(LONGLONG)h(nelements,)334 3174 y(DTYPE)g(*array,)g(DTYPE) +h(*nulval,)e(>)j(int)f(*status\);)95 3400 y(int)g (fits_write_imgnull_[byt,)42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f -(ulng,)h(lnglng,)e(ulnglng,)h(flt,)h(dbl])f(/)286 3585 -y(ffppn[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 3698 +(ulng,)h(lnglng,)e(ulnglng,)h(flt,)h(dbl])f(/)286 3513 +y(ffppn[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 3626 y(\(fitsfile)g(*fptr,)g(long)g(group,)g(LONGLONG)g(firstelem,)525 -3811 y(LONGLONG)g(nelements,)f(DTYPE)h(*array,)g(DTYPE)g(nulval,)g(>)h -(int)g(*status\);)0 4084 y Fi(2)81 b Fj(Set)30 b(data)h(arra)m(y)g -(elemen)m(ts)h(as)e(unde\014ned.)95 4357 y Fe(int)47 -b(fits_write_img_null)c(/)k(ffppru)286 4470 y(\(fitsfile)f(*fptr,)g +3739 y(LONGLONG)g(nelements,)f(DTYPE)h(*array,)g(DTYPE)g(nulval,)g(>)h +(int)g(*status\);)0 3976 y Fi(2)81 b Fj(Set)30 b(data)h(arra)m(y)g +(elemen)m(ts)h(as)e(unde\014ned.)95 4213 y Fe(int)47 +b(fits_write_img_null)c(/)k(ffppru)286 4326 y(\(fitsfile)f(*fptr,)g (long)g(group,)g(LONGLONG)g(firstelem,)f(LONGLONG)h(nelements,)334 -4583 y(>)i(int)e(*status\))0 4856 y Fi(3)81 b Fj(W)-8 +4439 y(>)i(int)e(*status\))0 4675 y Fi(3)81 b Fj(W)-8 b(rite)32 b(v)-5 b(alues)30 b(in)m(to)i(group)e(parameters.)42 b(This)30 b(routine)g(only)h(applies)g(to)g(the)g(`Random)f(Group)s -(ed')g(FITS)227 4969 y(format)22 b(whic)m(h)f(has)g(b)s(een)f(used)h +(ed')g(FITS)227 4788 y(format)22 b(whic)m(h)f(has)g(b)s(een)f(used)h (for)g(applications)h(in)f(radio)h(in)m(terferometry)-8 -b(,)25 b(but)20 b(is)h(o\016cially)i(deprecated)227 5082 -y(for)30 b(future)g(use.)95 5355 y Fe(int)47 b(fits_write_grppar_[byt,) +b(,)25 b(but)20 b(is)h(o\016cially)i(deprecated)227 4901 +y(for)30 b(future)g(use.)95 5138 y Fe(int)47 b(fits_write_grppar_[byt,) 42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(ulnglng,)f -(flt,)i(dbl])f(/)286 5468 y(ffpgp[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o -(])286 5581 y(\(fitsfile)g(*fptr,)g(long)g(group,)g(long)h(firstelem,)e -(long)i(nelements,)334 5694 y(>)h(DTYPE)e(*array,)g(int)h(*status\))p -eop end -%%Page: 114 122 -TeXDict begin 114 121 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.114) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(114)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(4)81 b Fj(W)-8 b(rite)31 -b(a)g(2-D)h(or)e(3-D)h(image)h(in)m(to)f(the)g(data)g(arra)m(y)-8 -b(.)95 776 y Fe(int)47 b(fits_write_2d_[byt,)c(sht,)k(usht,)f(int,)h -(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f(flt,)i(dbl])g(/)286 -889 y(ffp2d[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 -1002 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(LONGLONG)g(dim1,)g -(LONGLONG)g(naxis1,)334 1115 y(LONGLONG)g(naxis2,)f(DTYPE)i(*array,)f -(>)h(int)g(*status\))95 1341 y(int)g(fits_write_3d_[byt,)c(sht,)k -(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f(flt,)i -(dbl])g(/)286 1453 y(ffp3d[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 -1566 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(LONGLONG)g(dim1,)g -(LONGLONG)g(dim2,)g(LONGLONG)g(naxis1,)334 1679 y(LONGLONG)g(naxis2,)f +(flt,)i(dbl])f(/)286 5251 y(ffpgp[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o +(])286 5364 y(\(fitsfile)g(*fptr,)g(long)g(group,)g(long)h(firstelem,)e +(long)i(nelements,)334 5477 y(>)h(DTYPE)e(*array,)g(int)h(*status\))0 +5714 y Fi(4)81 b Fj(W)-8 b(rite)31 b(a)g(2-D)h(or)e(3-D)h(image)h(in)m +(to)f(the)g(data)g(arra)m(y)-8 b(.)p eop end +%%Page: 116 124 +TeXDict begin 116 123 bop 0 299 a Fj(116)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_write_2d_[byt,)c(sht,)k(usht,)f +(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f(flt,)i(dbl])g(/)286 +668 y(ffp2d[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 +781 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(LONGLONG)g(dim1,)g +(LONGLONG)g(naxis1,)334 894 y(LONGLONG)g(naxis2,)f(DTYPE)i(*array,)f(>) +h(int)g(*status\))95 1120 y(int)g(fits_write_3d_[byt,)c(sht,)k(usht,)f +(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f(flt,)i(dbl])g(/)286 +1233 y(ffp3d[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 +1346 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(LONGLONG)g(dim1,)g +(LONGLONG)g(dim2,)g(LONGLONG)g(naxis1,)334 1458 y(LONGLONG)g(naxis2,)f (LONGLONG)h(naxis3,)g(DTYPE)g(*array,)g(>)h(int)g(*status\))0 -1900 y Fi(5)81 b Fj(W)-8 b(rite)31 b(an)g(arbitrary)f(data)h +1716 y Fi(5)81 b Fj(W)-8 b(rite)31 b(an)g(arbitrary)f(data)h (subsection)f(in)m(to)i(the)e(data)h(arra)m(y)-8 b(.)95 -2121 y Fe(int)47 b(fits_write_subset_[byt,)42 b(sht,)k(usht,)h(int,)f +1974 y Fe(int)47 b(fits_write_subset_[byt,)42 b(sht,)k(usht,)h(int,)f (uint,)h(lng,)f(ulng,)h(lnglng,)f(ulnglng,)f(flt,)i(dbl])f(/)286 -2234 y(ffpss[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 -2347 y(\(fitsfile)g(*fptr,)g(long)g(group,)g(long)h(naxis,)f(long)h -(*naxes,)334 2460 y(long)g(*fpixel,)e(long)i(*lpixel,)e(DTYPE)i -(*array,)f(>)h(int)g(*status\))0 2680 y Fi(6)81 b Fj(Read)30 +2087 y(ffpss[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o(])286 +2199 y(\(fitsfile)g(*fptr,)g(long)g(group,)g(long)h(naxis,)f(long)h +(*naxes,)334 2312 y(long)g(*fpixel,)e(long)i(*lpixel,)e(DTYPE)i +(*array,)f(>)h(int)g(*status\))0 2570 y Fi(6)81 b Fj(Read)30 b(elemen)m(ts)i(from)e(the)g(FITS)g(data)h(arra)m(y)-8 -b(.)95 2901 y Fe(int)47 b(fits_read_img)e(/)i(ffgpv)286 -3014 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 b(long)g(firstelem,) -f(long)i(nelements,)334 3127 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f -(int)h(*anynul,)e(int)i(*status\))95 3353 y(int)g(fits_read_img_[byt,)c +b(.)95 2828 y Fe(int)47 b(fits_read_img)e(/)i(ffgpv)286 +2940 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 b(long)g(firstelem,) +f(long)i(nelements,)334 3053 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f +(int)h(*anynul,)e(int)i(*status\))95 3279 y(int)g(fits_read_img_[byt,)c (sht,)k(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f -(flt,)i(dbl])g(/)286 3466 y(ffgpv[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o -(])286 3579 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(firstelem,)e -(long)i(nelements,)334 3692 y(DTYPE)f(nulval,)g(>)i(DTYPE)e(*array,)g -(int)h(*anynul,)e(int)i(*status\))95 3917 y(int)g(fits_read_imgnull)c -(/)48 b(ffgpf)286 4030 y(\(fitsfile)e(*fptr,)g(int)94 +(flt,)i(dbl])g(/)286 3392 y(ffgpv[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o +(])286 3505 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(firstelem,)e +(long)i(nelements,)334 3618 y(DTYPE)f(nulval,)g(>)i(DTYPE)e(*array,)g +(int)h(*anynul,)e(int)i(*status\))95 3844 y(int)g(fits_read_imgnull)c +(/)48 b(ffgpf)286 3957 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46 b(long)g(firstelem,)f(long)i(nelements,)334 -4143 y(>)h(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i(*anynul,)f(int) -g(*status\))95 4369 y(int)95 b(fits_read_imgnull_[byt,)42 +4070 y(>)h(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i(*anynul,)f(int) +g(*status\))95 4295 y(int)95 b(fits_read_imgnull_[byt,)42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)e(ulnglng,)h -(flt,)h(dbl])f(/)334 4482 y(ffgpf[b,i,ui,k,uk,j,uj,jj)o(,uj)o(j,e,)o -(d])334 4595 y(\(fitsfile)f(*fptr,)h(long)h(group,)f(long)h(firstelem,) -e(long)h(nelements,)334 4708 y(>)i(DTYPE)e(*array,)g(char)g -(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))0 4929 +(flt,)h(dbl])f(/)334 4408 y(ffgpf[b,i,ui,k,uk,j,uj,jj)o(,uj)o(j,e,)o +(d])334 4521 y(\(fitsfile)f(*fptr,)h(long)h(group,)f(long)h(firstelem,) +e(long)h(nelements,)334 4634 y(>)i(DTYPE)e(*array,)g(char)g +(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))0 4892 y Fi(7)81 b Fj(Read)29 b(v)-5 b(alues)31 b(from)e(group)g(parameters.) 41 b(This)29 b(routine)g(only)h(applies)g(to)h(the)e(`Random)h(Group)s -(ed')f(FITS)227 5041 y(format)22 b(whic)m(h)f(has)g(b)s(een)f(used)h +(ed')f(FITS)227 5005 y(format)22 b(whic)m(h)f(has)g(b)s(een)f(used)h (for)g(applications)h(in)f(radio)h(in)m(terferometry)-8 -b(,)25 b(but)20 b(is)h(o\016cially)i(deprecated)227 5154 +b(,)25 b(but)20 b(is)h(o\016cially)i(deprecated)227 5118 y(for)30 b(future)g(use.)95 5375 y Fe(int)95 b(fits_read_grppar_[byt,) 42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(ulnglng,)f (flt,)i(dbl])f(/)334 5488 y(ffggp[b,i,ui,k,uk,j,uj,jj)o(,uj)o(j,e,)o (d])334 5601 y(\(fitsfile)f(*fptr,)h(long)h(group,)f(long)h(firstelem,) e(long)h(nelements,)334 5714 y(>)i(DTYPE)e(*array,)g(int)h(*status\))p eop end -%%Page: 115 123 -TeXDict begin 115 122 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.115) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.6.)72 -b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 -b(T)-8 b(ABLE)30 b(R)m(OUTINES)933 b Fj(115)0 555 y Fi(8)81 -b Fj(Read)37 b(2-D)h(or)g(3-D)g(image)g(from)f(the)g(data)h(arra)m(y)-8 +%%Page: 117 125 +TeXDict begin 117 124 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 +b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 +b(R)m(OUTINES)933 b Fj(117)0 555 y Fi(8)81 b Fj(Read)37 +b(2-D)h(or)g(3-D)g(image)g(from)f(the)g(data)h(arra)m(y)-8 b(.)62 b(Unde\014ned)36 b(pixels)i(in)e(the)i(arra)m(y)g(will)f(b)s(e)g (set)g(equal)227 668 y(to)32 b(the)g(v)-5 b(alue)31 b(of)h('n)m(ulv)-5 b(al',)32 b(unless)f(n)m(ulv)-5 b(al=0)31 b(in)g(whic)m(h)g(case)h(no)f @@ -16382,24 +12794,8 @@ y(\(fitsfile)f(*fptr,)h(int)h(group,)f(int)h(naxis,)f(long)h(*naxes,) 334 3617 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f(>)i (DTYPE)e(*array,)334 3730 y(char)h(*nullarray,)d(int)j(*anynul,)f(int)h -(*status\))0 3896 y -SDict begin H.S end - 0 3896 a 0 3896 a -SDict begin 13.6 H.A end - 0 3896 a 0 3896 -a -SDict begin [/View [/XYZ H.V]/Dest (section.9.6) cvn /DEST pdfmark -end - 0 3896 a 177 x Ff(9.6)135 b(Sp)t(ecialized)46 b(FITS)e(ASCI)t(I)g -(and)g(Binary)h(T)-11 b(able)45 b(Routines)0 4188 y -SDict begin H.S end - 0 -4188 a 0 4188 a -SDict begin 13.6 H.A end - 0 4188 a 0 4188 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.6.1) cvn /DEST pdfmark -end - 0 4188 a 140 x Fd(9.6.1)112 +(*status\))0 4073 y Ff(9.6)135 b(Sp)t(ecialized)46 b(FITS)e(ASCI)t(I)g +(and)g(Binary)h(T)-11 b(able)45 b(Routines)0 4328 y Fd(9.6.1)112 b(General)39 b(Column)f(Routines)0 4543 y Fi(1)81 b Fj(Get)31 b(information)f(ab)s(out)g(an)g(existing)h(ASCI)s(I)d(or)i(binary)f (table)i(column.)41 b(A)30 b(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)h(b)s(e)e @@ -16420,38 +12816,26 @@ b(ffgacl)191 5601 y(\(fitsfile)d(*fptr,)h(int)h(colnum,)f(>)h(char)g (*ttype,)f(long)h(*tbcol,)239 5714 y(char)f(*tunit,)g(char)h(*tform,)f (double)g(*scale,)f(double)i(*zero,)p eop end -%%Page: 116 124 -TeXDict begin 116 123 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.116) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(116)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)239 555 y Fe(char)46 b(*nulstr,)g(char)g -(*tdisp,)g(int)h(*status\))95 781 y(int)g(fits_get_bcolparms)c(/)48 -b(ffgbcl)286 894 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(char)f -(*ttype,)e(char)i(*tunit,)334 1007 y(char)g(*typechar,)e(long)h -(*repeat,)g(double)g(*scale,)g(double)g(*zero,)334 1120 -y(long)h(*nulval,)e(char)i(*tdisp,)f(int)94 b(*status\))95 -1346 y(int)47 b(fits_get_bcolparmsll)c(/)k(ffgbclll)286 -1458 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(char)f(*ttype,)e(char) -i(*tunit,)334 1571 y(char)g(*typechar,)e(LONGLONG)g(*repeat,)h(double)g -(*scale,)g(double)g(*zero,)334 1684 y(LONGLONG)g(*nulval,)f(char)i -(*tdisp,)f(int)94 b(*status\))0 1937 y Fi(2)81 b Fj(Return)27 -b(optimal)i(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(to)h(read)f(or)g(write)g -(at)h(one)f(time)h(for)f(maxim)m(um)g(I/O)f(e\016ciency)-8 -b(.)42 b(Refer)227 2050 y(to)25 b(the)g(\\Optimizing)g(Co)s(de")f -(section)i(in)e(Chapter)g(5)g(for)g(more)h(discussion)f(on)g(ho)m(w)g -(to)h(use)f(this)h(routine.)95 2416 y Fe(int)47 b(fits_get_rowsize)d(/) -j(ffgrsz)286 2529 y(\(fitsfile)f(*fptr,)g(long)g(*nrows,)g(*status\))0 +%%Page: 118 126 +TeXDict begin 118 125 bop 0 299 a Fj(118)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)239 555 y Fe(char)46 b(*nulstr,)g(char)g(*tdisp,)g(int)h +(*status\))95 781 y(int)g(fits_get_bcolparms)c(/)48 b(ffgbcl)286 +894 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(char)f(*ttype,)e(char)i +(*tunit,)334 1007 y(char)g(*typechar,)e(long)h(*repeat,)g(double)g +(*scale,)g(double)g(*zero,)334 1120 y(long)h(*nulval,)e(char)i(*tdisp,) +f(int)94 b(*status\))95 1346 y(int)47 b(fits_get_bcolparmsll)c(/)k +(ffgbclll)286 1458 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(char)f +(*ttype,)e(char)i(*tunit,)334 1571 y(char)g(*typechar,)e(LONGLONG)g +(*repeat,)h(double)g(*scale,)g(double)g(*zero,)334 1684 +y(LONGLONG)g(*nulval,)f(char)i(*tdisp,)f(int)94 b(*status\))0 +1937 y Fi(2)81 b Fj(Return)27 b(optimal)i(n)m(um)m(b)s(er)e(of)h(ro)m +(ws)g(to)h(read)f(or)g(write)g(at)h(one)f(time)h(for)f(maxim)m(um)g +(I/O)f(e\016ciency)-8 b(.)42 b(Refer)227 2050 y(to)25 +b(the)g(\\Optimizing)g(Co)s(de")f(section)i(in)e(Chapter)g(5)g(for)g +(more)h(discussion)f(on)g(ho)m(w)g(to)h(use)f(this)h(routine.)95 +2416 y Fe(int)47 b(fits_get_rowsize)d(/)j(ffgrsz)286 +2529 y(\(fitsfile)f(*fptr,)g(long)g(*nrows,)g(*status\))0 2782 y Fi(3)81 b Fj(De\014ne)22 b(the)g(zero)i(indexed)d(b)m(yte)i (o\013set)g(of)g(the)f('heap')h(measured)e(from)h(the)h(start)g(of)f (the)g(binary)g(table)h(data.)227 2895 y(By)30 b(default)g(the)f(heap)h @@ -16497,117 +12881,76 @@ (duplicate)227 5714 y(copies)e(of)g(the)g(b)m(ytes)f(for)h(eac)m(h)g(v) m(ector,)h(whic)m(h)e(will)h(actually)h(expand)e(the)g(size)i(of)e(the) h(heap.)p eop end -%%Page: 117 125 -TeXDict begin 117 124 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.117) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.6.)72 -b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 -b(T)-8 b(ABLE)30 b(R)m(OUTINES)933 b Fj(117)95 555 y -Fe(int)47 b(fits_compress_heap)c(/)48 b(ffcmph)286 668 -y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0 833 y -SDict begin H.S end - 0 -833 a 0 833 a -SDict begin 13.6 H.A end - 0 833 a 0 833 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.6.2) cvn /DEST pdfmark -end - 0 833 a 143 x Fd(9.6.2)112 -b(Lo)m(w-Lev)m(el)39 b(T)-9 b(able)38 b(Access)f(Routines)0 -1198 y Fj(The)g(follo)m(wing)j(2)e(routines)f(pro)m(vide)h(lo)m(w-lev)m -(el)j(access)e(to)g(the)f(data)g(in)g(ASCI)s(I)e(or)i(binary)f(tables)h -(and)g(are)0 1311 y(mainly)29 b(useful)f(as)i(an)f(e\016cien)m(t)h(w)m -(a)m(y)g(to)g(cop)m(y)g(all)g(or)f(part)g(of)g(a)g(table)h(from)f(one)g -(lo)s(cation)i(to)f(another.)40 b(These)0 1424 y(routines)24 -b(simply)g(read)g(or)h(write)f(the)h(sp)s(eci\014ed)e(n)m(um)m(b)s(er)g -(of)i(consecutiv)m(e)h(b)m(ytes)f(in)f(an)g(ASCI)s(I)f(or)h(binary)g -(table,)0 1537 y(without)g(regard)g(for)f(column)h(b)s(oundaries)e(or)i -(the)g(ro)m(w)g(length)g(in)f(the)h(table.)40 b(These)23 -b(routines)h(do)f(not)h(p)s(erform)0 1650 y(an)m(y)36 -b(mac)m(hine)h(dep)s(enden)m(t)e(data)i(con)m(v)m(ersion)g(or)g(b)m -(yte)f(sw)m(apping.)58 b(See)36 b(App)s(endix)e(B)j(for)f(the)g -(de\014nition)g(of)0 1763 y(the)31 b(parameters)f(used)g(in)g(these)h -(routines.)0 2037 y Fi(1)81 b Fj(Read)30 b(or)h(write)f(a)h(consecutiv) -m(e)h(arra)m(y)f(of)g(b)m(ytes)f(from)g(an)h(ASCI)s(I)d(or)j(binary)e -(table)95 2311 y Fe(int)47 b(fits_read_tblbytes)c(/)48 -b(ffgtbb)286 2424 y(\(fitsfile)e(*fptr,)g(LONGLONG)f(firstrow,)h -(LONGLONG)f(firstchar,)g(LONGLONG)h(nchars,)334 2537 -y(>)i(unsigned)d(char)i(*values,)e(int)i(*status\))95 -2763 y(int)g(fits_write_tblbytes)c(/)k(ffptbb)286 2876 +%%Page: 119 127 +TeXDict begin 119 126 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 +b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 +b(R)m(OUTINES)933 b Fj(119)95 555 y Fe(int)47 b(fits_compress_heap)c(/) +48 b(ffcmph)286 668 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0 +979 y Fd(9.6.2)112 b(Lo)m(w-Lev)m(el)39 b(T)-9 b(able)38 +b(Access)f(Routines)0 1202 y Fj(The)g(follo)m(wing)j(2)e(routines)f +(pro)m(vide)h(lo)m(w-lev)m(el)j(access)e(to)g(the)f(data)g(in)g(ASCI)s +(I)e(or)i(binary)f(tables)h(and)g(are)0 1314 y(mainly)29 +b(useful)f(as)i(an)f(e\016cien)m(t)h(w)m(a)m(y)g(to)g(cop)m(y)g(all)g +(or)f(part)g(of)g(a)g(table)h(from)f(one)g(lo)s(cation)i(to)f(another.) +40 b(These)0 1427 y(routines)24 b(simply)g(read)g(or)h(write)f(the)h +(sp)s(eci\014ed)e(n)m(um)m(b)s(er)g(of)i(consecutiv)m(e)h(b)m(ytes)f +(in)f(an)g(ASCI)s(I)f(or)h(binary)g(table,)0 1540 y(without)g(regard)g +(for)f(column)h(b)s(oundaries)e(or)i(the)g(ro)m(w)g(length)g(in)f(the)h +(table.)40 b(These)23 b(routines)h(do)f(not)h(p)s(erform)0 +1653 y(an)m(y)36 b(mac)m(hine)h(dep)s(enden)m(t)e(data)i(con)m(v)m +(ersion)g(or)g(b)m(yte)f(sw)m(apping.)58 b(See)36 b(App)s(endix)e(B)j +(for)f(the)g(de\014nition)g(of)0 1766 y(the)31 b(parameters)f(used)g +(in)g(these)h(routines.)0 2043 y Fi(1)81 b Fj(Read)30 +b(or)h(write)f(a)h(consecutiv)m(e)h(arra)m(y)f(of)g(b)m(ytes)f(from)g +(an)h(ASCI)s(I)d(or)j(binary)e(table)95 2319 y Fe(int)47 +b(fits_read_tblbytes)c(/)48 b(ffgtbb)286 2432 y(\(fitsfile)e(*fptr,)g +(LONGLONG)f(firstrow,)h(LONGLONG)f(firstchar,)g(LONGLONG)h(nchars,)334 +2545 y(>)i(unsigned)d(char)i(*values,)e(int)i(*status\))95 +2771 y(int)g(fits_write_tblbytes)c(/)k(ffptbb)286 2884 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(firstrow,)h(LONGLONG)f(firstchar,)g -(LONGLONG)h(nchars,)334 2989 y(unsigned)g(char)g(*values,)g(>)h(int)g -(*status\))0 3153 y -SDict begin H.S end - 0 3153 a 0 3153 a -SDict begin 13.6 H.A end - 0 3153 a 0 3153 -a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.6.3) cvn /DEST pdfmark -end - 0 3153 a 143 x Fd(9.6.3)112 b(W)-9 b(rite)37 b(Column)h(Data)g -(Routines)0 3516 y Fi(1)81 b Fj(W)-8 b(rite)28 b(elemen)m(ts)h(in)m(to) +(LONGLONG)h(nchars,)334 2997 y(unsigned)g(char)g(*values,)g(>)h(int)g +(*status\))0 3308 y Fd(9.6.3)112 b(W)-9 b(rite)37 b(Column)h(Data)g +(Routines)0 3529 y Fi(1)81 b Fj(W)-8 b(rite)28 b(elemen)m(ts)h(in)m(to) f(an)g(ASCI)s(I)d(or)j(binary)e(table)j(column)e(\(in)g(the)h(CDU\).)g -(The)f(data)h(t)m(yp)s(e)f(of)h(the)f(arra)m(y)227 3629 +(The)f(data)h(t)m(yp)s(e)f(of)h(the)f(arra)m(y)227 3642 y(is)k(implied)f(b)m(y)g(the)h(su\016x)e(of)i(the)f(routine)h(name.)95 -3903 y Fe(int)47 b(fits_write_col_str)c(/)48 b(ffpcls)286 -4016 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f -(LONGLONG)h(firstelem,)334 4129 y(LONGLONG)g(nelements,)f(char)h -(**array,)g(>)h(int)g(*status\))95 4355 y(int)g +3919 y Fe(int)47 b(fits_write_col_str)c(/)48 b(ffpcls)286 +4031 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f +(LONGLONG)h(firstelem,)334 4144 y(LONGLONG)g(nelements,)f(char)h +(**array,)g(>)h(int)g(*status\))95 4370 y(int)g (fits_write_col_[log,byt,sh)o(t,u)o(sht,)o(int,)o(uin)o(t,ln)o(g,ul)o (ng,)o(lngl)o(ng,u)o(lng)o(lng,)o(flt,)o(dbl)o(,cmp)o(,dbl)o(cmp)o(])42 -b(/)286 4468 y(ffpcl[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d,c)o(,m])286 -4581 y(\(fitsfile)k(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)525 -4694 y(LONGLONG)g(firstelem,)f(LONGLONG)g(nelements,)g(DTYPE)h(*array,) -g(>)i(int)f(*status\))0 4968 y Fi(2)81 b Fj(W)-8 b(rite)36 +b(/)286 4483 y(ffpcl[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d,c)o(,m])286 +4596 y(\(fitsfile)k(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)525 +4709 y(LONGLONG)g(firstelem,)f(LONGLONG)g(nelements,)g(DTYPE)h(*array,) +g(>)i(int)f(*status\))0 4986 y Fi(2)81 b Fj(W)-8 b(rite)36 b(elemen)m(ts)h(in)m(to)g(an)e(ASCI)s(I)f(or)i(binary)e(table)j(column) e(substituting)g(the)h(appropriate)f(FITS)g(n)m(ull)227 -5081 y(v)-5 b(alue)31 b(for)f(an)m(y)h(elemen)m(ts)h(that)f(are)f +5098 y(v)-5 b(alue)31 b(for)f(an)m(y)h(elemen)m(ts)h(that)f(are)f (equal)h(to)g(the)g(n)m(ulv)-5 b(al)31 b(parameter.)95 -5355 y Fe(int)47 b(fits_write_colnull_[log,)42 b(byt,)k(sht,)h(usht,)f +5375 y Fe(int)47 b(fits_write_colnull_[log,)42 b(byt,)k(sht,)h(usht,)f (int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)g(flt,)g(dbl])h(/)286 -5468 y(ffpcn[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d])286 -5581 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f -(LONGLONG)h(firstelem,)334 5694 y(LONGLONG)g(nelements,)f(DTYPE)h +5488 y(ffpcn[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d])286 +5601 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f +(LONGLONG)h(firstelem,)334 5714 y(LONGLONG)g(nelements,)f(DTYPE)h (*array,)g(DTYPE)g(nulval,)g(>)h(int)g(*status\))p eop end -%%Page: 118 126 -TeXDict begin 118 125 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.118) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(118)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fi(3)81 b Fj(W)-8 b(rite)27 -b(string)g(elemen)m(ts)h(in)m(to)f(a)g(binary)f(table)h(column)f(\(in)h -(the)f(CDU\))i(substituting)e(the)g(FITS)g(n)m(ull)g(v)-5 -b(alue)227 668 y(for)30 b(an)m(y)h(elemen)m(ts)h(that)f(are)g(equal)f -(to)i(the)e(n)m(ulstr)g(string.)95 921 y Fe(int)47 b -(fits_write_colnull_str)42 b(/)48 b(ffpcns)286 1034 y(\(fitsfile)e -(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f(LONGLONG)h(firstelem,) -334 1147 y(LONGLONG)g(nelements,)f(char)h(**array,)g(char)g(*nulstr,)g -(>)h(int)g(*status\))0 1399 y Fi(4)81 b Fj(W)-8 b(rite)34 -b(bit)f(v)-5 b(alues)33 b(in)m(to)h(a)g(binary)e(b)m(yte)h(\('B'\))i -(or)e(bit)g(\('X'\))h(table)g(column)f(\(in)g(the)g(CDU\).)h(Larra)m(y) -f(is)g(an)227 1512 y(arra)m(y)25 b(of)g(c)m(haracters)h(corresp)s -(onding)e(to)h(the)g(sequence)g(of)f(bits)h(to)g(b)s(e)f(written.)39 +%%Page: 120 128 +TeXDict begin 120 127 bop 0 299 a Fj(120)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fi(3)81 b Fj(W)-8 b(rite)27 b(string)g(elemen)m +(ts)h(in)m(to)f(a)g(binary)f(table)h(column)f(\(in)h(the)f(CDU\))i +(substituting)e(the)g(FITS)g(n)m(ull)g(v)-5 b(alue)227 +668 y(for)30 b(an)m(y)h(elemen)m(ts)h(that)f(are)g(equal)f(to)i(the)e +(n)m(ulstr)g(string.)95 921 y Fe(int)47 b(fits_write_colnull_str)42 +b(/)48 b(ffpcns)286 1034 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e +(LONGLONG)h(firstrow,)f(LONGLONG)h(firstelem,)334 1147 +y(LONGLONG)g(nelements,)f(char)h(**array,)g(char)g(*nulstr,)g(>)h(int)g +(*status\))0 1399 y Fi(4)81 b Fj(W)-8 b(rite)34 b(bit)f(v)-5 +b(alues)33 b(in)m(to)h(a)g(binary)e(b)m(yte)h(\('B'\))i(or)e(bit)g +(\('X'\))h(table)g(column)f(\(in)g(the)g(CDU\).)h(Larra)m(y)f(is)g(an) +227 1512 y(arra)m(y)25 b(of)g(c)m(haracters)h(corresp)s(onding)e(to)h +(the)g(sequence)g(of)f(bits)h(to)g(b)s(e)f(written.)39 b(If)24 b(an)g(elemen)m(t)i(of)f(larra)m(y)227 1625 y(is)k(true)g (\(not)h(equal)f(to)h(zero\))g(then)f(the)g(corresp)s(onding)f(bit)h (in)g(the)g(FITS)f(table)i(is)f(set)h(to)g(1,)g(otherwise)227 @@ -16656,337 +12999,278 @@ (iden)m(tical.)191 4302 y Fe(int)47 b(fits_write_descript)42 b(/)48 b(ffpdes)382 4415 y(\(fitsfile)d(*fptr,)h(int)h(colnum,)f (LONGLONG)f(rownum,)h(LONGLONG)g(repeat,)430 4528 y(LONGLONG)f(offset,) -h(>)h(int)g(*status\))0 4667 y -SDict begin H.S end - 0 4667 a 0 4667 a -SDict begin 13.6 H.A end - 0 4667 -a 0 4667 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.9.6.4) cvn /DEST pdfmark -end - 0 4667 a 151 x Fd(9.6.4)112 b(Read)38 b(Column)h(Data)f -(Routines)0 5036 y Fj(Tw)m(o)28 b(t)m(yp)s(es)f(of)h(routines)f(are)h -(pro)m(vided)f(to)h(get)h(the)e(column)h(data)g(whic)m(h)f(di\013er)g -(in)g(the)h(w)m(a)m(y)h(unde\014ned)c(pixels)0 5149 y(are)40 -b(handled.)66 b(The)39 b(\014rst)g(set)h(of)f(routines)g(\(\013gcv\))i -(simply)e(return)f(an)h(arra)m(y)h(of)g(data)g(elemen)m(ts)g(in)f(whic) -m(h)0 5262 y(unde\014ned)28 b(pixels)j(are)g(set)g(equal)g(to)g(a)g(v) --5 b(alue)31 b(sp)s(eci\014ed)f(b)m(y)h(the)f(user)g(in)g(the)h('n)m -(ullv)-5 b(al')32 b(parameter.)41 b(If)30 b(n)m(ullv)-5 -b(al)0 5375 y(=)22 b(0,)j(then)d(no)g(c)m(hec)m(ks)i(for)e(unde\014ned) -e(pixels)j(will)g(b)s(e)f(p)s(erformed,)g(th)m(us)g(increasing)i(the)e -(sp)s(eed)g(of)g(the)h(program.)0 5488 y(The)36 b(second)g(set)g(of)h -(routines)e(\(\013gcf)7 b(\))38 b(returns)d(the)h(data)h(elemen)m(t)g -(arra)m(y)g(and)e(in)h(addition)g(a)h(logical)h(arra)m(y)0 -5601 y(of)33 b(\015ags)f(whic)m(h)g(de\014nes)g(whether)g(the)g -(corresp)s(onding)g(data)h(pixel)f(is)h(unde\014ned.)44 -b(See)33 b(App)s(endix)e(B)i(for)f(the)0 5714 y(de\014nition)e(of)h -(the)f(parameters)h(used)e(in)h(these)h(routines.)p eop -end -%%Page: 119 127 -TeXDict begin 119 126 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.119) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.6.)72 -b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 -b(T)-8 b(ABLE)30 b(R)m(OUTINES)933 b Fj(119)0 555 y(An)m(y)39 -b(column,)h(regardless)f(of)g(it's)g(in)m(trinsic)g(data)h(t)m(yp)s(e,) -h(ma)m(y)e(b)s(e)f(read)g(as)h(a)g(string.)66 b(It)38 -b(should)g(b)s(e)g(noted)0 668 y(ho)m(w)m(ev)m(er)32 -b(that)f(reading)f(a)h(n)m(umeric)f(column)g(as)h(a)f(string)h(is)f(10) -h(-)g(100)g(times)g(slo)m(w)m(er)h(than)e(reading)g(the)h(same)0 -781 y(column)g(as)h(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)h(o)m -(v)m(erhead)f(in)g(constructing)g(the)g(formatted)g(strings.)44 -b(The)31 b(displa)m(y)0 894 y(format)26 b(of)g(the)h(returned)d -(strings)i(will)g(b)s(e)g(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m -(ord,)j(if)d(it)i(exists,)h(otherwise)e(b)m(y)0 1007 -y(the)h(data)g(t)m(yp)s(e)f(of)h(the)f(column.)39 b(The)26 -b(length)h(of)g(the)f(returned)f(strings)h(\(not)h(including)f(the)h(n) -m(ull)f(terminating)0 1120 y(c)m(haracter\))38 b(can)e(b)s(e)g -(determined)f(with)h(the)g(\014ts)p 1722 1120 28 4 v -33 w(get)p 1875 1120 V 34 w(col)p 2019 1120 V 33 w(displa)m(y)p -2330 1120 V 33 w(width)g(routine.)57 b(The)36 b(follo)m(wing)h(TDISPn)0 -1233 y(displa)m(y)31 b(formats)f(are)h(curren)m(tly)f(supp)s(orted:)191 -1490 y Fe(Iw.m)142 b(Integer)191 1603 y(Ow.m)g(Octal)46 -b(integer)191 1716 y(Zw.m)142 b(Hexadecimal)45 b(integer)191 -1829 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 1942 -y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 2055 -y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 2168 -y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)d(not)j -(lost,)g(else)f(Ew.d)0 2425 y Fj(where)37 b(w)h(is)g(the)g(width)f(in)h -(c)m(haracters)h(of)f(the)h(displa)m(y)m(ed)f(v)-5 b(alues,)41 -b(m)c(is)h(the)g(minim)m(um)g(n)m(um)m(b)s(er)e(of)i(digits)0 -2538 y(displa)m(y)m(ed,)31 b(and)f(d)g(is)g(the)h(n)m(um)m(b)s(er)e(of) -h(digits)h(to)g(the)g(righ)m(t)g(of)g(the)f(decimal.)42 -b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 2796 y Fi(1)81 -b Fj(Read)29 b(elemen)m(ts)i(from)e(an)g(ASCI)s(I)f(or)i(binary)f -(table)h(column)f(\(in)h(the)f(CDU\).)i(These)e(routines)g(return)g -(the)227 2909 y(v)-5 b(alues)30 b(of)g(the)g(table)h(column)f(arra)m(y) -g(elemen)m(ts.)42 b(Unde\014ned)28 b(arra)m(y)j(elemen)m(ts)g(will)f(b) -s(e)f(returned)g(with)h(a)227 3022 y(v)-5 b(alue)30 b(=)e(n)m(ulv)-5 -b(al,)30 b(unless)e(n)m(ulv)-5 b(al)29 b(=)f(0)i(\(or)f(=)f(')h(')g -(for)g(\013gcvs\))g(in)g(whic)m(h)f(case)i(no)f(c)m(hec)m(king)i(for)d -(unde\014ned)227 3135 y(v)-5 b(alues)28 b(will)g(b)s(e)f(p)s(erformed.) -38 b(The)27 b(an)m(yn)m(ul)h(parameter)g(is)g(set)g(to)g(true)f(if)h -(an)m(y)g(of)f(the)h(returned)f(elemen)m(ts)227 3247 -y(are)k(unde\014ned.)95 3505 y Fe(int)47 b(fits_read_col_str)c(/)48 -b(ffgcvs)286 3618 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h -(firstrow,)f(LONGLONG)h(firstelem,)334 3731 y(LONGLONG)g(nelements,)f -(char)h(*nulstr,)g(>)h(char)g(**array,)e(int)i(*anynul,)334 -3844 y(int)g(*status\))95 4070 y(int)g(fits_read_col_[log,byt,sht)o +h(>)h(int)g(*status\))0 4818 y Fd(9.6.4)112 b(Read)38 +b(Column)h(Data)f(Routines)0 5036 y Fj(Tw)m(o)28 b(t)m(yp)s(es)f(of)h +(routines)f(are)h(pro)m(vided)f(to)h(get)h(the)e(column)h(data)g(whic)m +(h)f(di\013er)g(in)g(the)h(w)m(a)m(y)h(unde\014ned)c(pixels)0 +5149 y(are)40 b(handled.)66 b(The)39 b(\014rst)g(set)h(of)f(routines)g +(\(\013gcv\))i(simply)e(return)f(an)h(arra)m(y)h(of)g(data)g(elemen)m +(ts)g(in)f(whic)m(h)0 5262 y(unde\014ned)28 b(pixels)j(are)g(set)g +(equal)g(to)g(a)g(v)-5 b(alue)31 b(sp)s(eci\014ed)f(b)m(y)h(the)f(user) +g(in)g(the)h('n)m(ullv)-5 b(al')32 b(parameter.)41 b(If)30 +b(n)m(ullv)-5 b(al)0 5375 y(=)22 b(0,)j(then)d(no)g(c)m(hec)m(ks)i(for) +e(unde\014ned)e(pixels)j(will)g(b)s(e)f(p)s(erformed,)g(th)m(us)g +(increasing)i(the)e(sp)s(eed)g(of)g(the)h(program.)0 +5488 y(The)36 b(second)g(set)g(of)h(routines)e(\(\013gcf)7 +b(\))38 b(returns)d(the)h(data)h(elemen)m(t)g(arra)m(y)g(and)e(in)h +(addition)g(a)h(logical)h(arra)m(y)0 5601 y(of)33 b(\015ags)f(whic)m(h) +g(de\014nes)g(whether)g(the)g(corresp)s(onding)g(data)h(pixel)f(is)h +(unde\014ned.)44 b(See)33 b(App)s(endix)e(B)i(for)f(the)0 +5714 y(de\014nition)e(of)h(the)f(parameters)h(used)e(in)h(these)h +(routines.)p eop end +%%Page: 121 129 +TeXDict begin 121 128 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 +b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 +b(R)m(OUTINES)933 b Fj(121)0 555 y(An)m(y)39 b(column,)h(regardless)f +(of)g(it's)g(in)m(trinsic)g(data)h(t)m(yp)s(e,)h(ma)m(y)e(b)s(e)f(read) +g(as)h(a)g(string.)66 b(It)38 b(should)g(b)s(e)g(noted)0 +668 y(ho)m(w)m(ev)m(er)32 b(that)f(reading)f(a)h(n)m(umeric)f(column)g +(as)h(a)f(string)h(is)f(10)h(-)g(100)g(times)g(slo)m(w)m(er)h(than)e +(reading)g(the)h(same)0 781 y(column)g(as)h(a)g(n)m(um)m(b)s(er)e(due)h +(to)h(the)g(large)h(o)m(v)m(erhead)f(in)g(constructing)g(the)g +(formatted)g(strings.)44 b(The)31 b(displa)m(y)0 894 +y(format)26 b(of)g(the)h(returned)d(strings)i(will)g(b)s(e)g +(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m(ord,)j(if)d(it)i +(exists,)h(otherwise)e(b)m(y)0 1007 y(the)h(data)g(t)m(yp)s(e)f(of)h +(the)f(column.)39 b(The)26 b(length)h(of)g(the)f(returned)f(strings)h +(\(not)h(including)f(the)h(n)m(ull)f(terminating)0 1120 +y(c)m(haracter\))38 b(can)e(b)s(e)g(determined)f(with)h(the)g(\014ts)p +1722 1120 28 4 v 33 w(get)p 1875 1120 V 34 w(col)p 2019 +1120 V 33 w(displa)m(y)p 2330 1120 V 33 w(width)g(routine.)57 +b(The)36 b(follo)m(wing)h(TDISPn)0 1233 y(displa)m(y)31 +b(formats)f(are)h(curren)m(tly)f(supp)s(orted:)191 1488 +y Fe(Iw.m)142 b(Integer)191 1601 y(Ow.m)g(Octal)46 b(integer)191 +1714 y(Zw.m)142 b(Hexadecimal)45 b(integer)191 1827 y(Fw.d)142 +b(Fixed)46 b(floating)g(point)191 1939 y(Ew.d)142 b(Exponential)45 +b(floating)g(point)191 2052 y(Dw.d)142 b(Exponential)45 +b(floating)g(point)191 2165 y(Gw.d)142 b(General;)46 +b(uses)g(Fw.d)h(if)g(significance)d(not)j(lost,)g(else)f(Ew.d)0 +2420 y Fj(where)37 b(w)h(is)g(the)g(width)f(in)h(c)m(haracters)h(of)f +(the)h(displa)m(y)m(ed)f(v)-5 b(alues,)41 b(m)c(is)h(the)g(minim)m(um)g +(n)m(um)m(b)s(er)e(of)i(digits)0 2533 y(displa)m(y)m(ed,)31 +b(and)f(d)g(is)g(the)h(n)m(um)m(b)s(er)e(of)h(digits)h(to)g(the)g(righ) +m(t)g(of)g(the)f(decimal.)42 b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 +2789 y Fi(1)81 b Fj(Read)29 b(elemen)m(ts)i(from)e(an)g(ASCI)s(I)f(or)i +(binary)f(table)h(column)f(\(in)h(the)f(CDU\).)i(These)e(routines)g +(return)g(the)227 2901 y(v)-5 b(alues)25 b(of)g(the)g(table)g(column)g +(arra)m(y)g(elemen)m(ts.)40 b(The)24 b(caller)i(is)f(required)f(to)h +(allo)s(cate)i(the)e(storage)h Fe(array)227 3014 y Fj(b)s(efore)h +(calling.)41 b(Unde\014ned)25 b(arra)m(y)i(elemen)m(ts)h(will)f(b)s(e)g +(returned)e(with)i(a)g(v)-5 b(alue)27 b(=)f(n)m(ulv)-5 +b(al,)29 b(unless)d(n)m(ulv)-5 b(al)227 3127 y(=)36 b(0)h(\(or)g(=)f(') +h(')f(for)h(\013gcvs\))g(in)f(whic)m(h)g(case)i(no)e(c)m(hec)m(king)i +(for)f(unde\014ned)d(v)-5 b(alues)37 b(will)f(b)s(e)g(p)s(erformed.)227 +3240 y(The)30 b(an)m(yn)m(ul)h(parameter)f(is)h(set)g(to)g(true)f(if)g +(an)m(y)h(of)g(the)f(returned)f(elemen)m(ts)j(are)f(unde\014ned.)227 +3390 y(F)-8 b(or)30 b(the)g Fe(_str)e Fj(\(string\))i(v)-5 +b(arian)m(t)30 b(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)g(is)g(the)f +(n)m(um)m(b)s(er)f(of)i(strings,)f(and)g(the)h(caller)227 +3503 y(m)m(ust)44 b(allo)s(cate)i(storage)e(for)g(b)s(oth)e(the)i(arra) +m(y)g(of)g(p)s(oin)m(ters)f Fe(array)f Fj(and)h(the)g(c)m(haracter)i +(arra)m(y)f(data)227 3616 y(itself)30 b(\(use)f Fe +(fits_get_col_display_wid)o(th)23 b Fj(or)29 b Fe(fits_get_coltype)24 +b Fj(to)30 b(determine)f(the)g(n)m(um)m(b)s(er)f(of)227 +3728 y(c)m(haracters\).)49 b(See)32 b(section)h(4.5)h(\(\\Dealing)h +(with)d(Character)g(Strings"\))h(for)f(more)g(information.)47 +b(Also,)227 3841 y(when)33 b(the)h Fe(_byt)e Fj(v)-5 +b(arian)m(t)34 b(is)g(used)f(to)h(read)g(a)f(column)h(stored)g(in)f +(the)h(\014le)f(as)h(string)f(data)i(\(TF)m(ORMn)227 +3954 y(=)k('nA'\),)g(the)g(subroutine)f(will)h(read)f(the)h(c)m +(haracter)h(b)m(ytes)g(\(instead)f(of)g(attempting)h(to)f(p)s(erform)f +(a)227 4067 y(n)m(umerical)24 b(con)m(v)m(ersion)g(as)f(other)g(in)m +(teger)i(v)-5 b(arian)m(ts)23 b(w)m(ould)g(do\),)i(with)e(no)f(attempt) +i(at)g(n)m(ull)f(termination.)227 4217 y(F)-8 b(or)28 +b(the)g Fe(_cmp)e Fj(and)g Fe(_dblcmp)g Fj(\(complex)i(and)f(double)g +(complex\))h(v)-5 b(arian)m(ts,)29 b Fe(nelements)24 +b Fj(is)k(the)f(n)m(um)m(b)s(er)227 4330 y(of)c(n)m(umerical)h(pairs;)h +(the)e(n)m(um)m(b)s(er)f(of)h(\015oats)h(or)f(doubles)f(that)i(m)m(ust) +f(b)s(e)f(pre-allo)s(cated)j(is)e Fe(2*nelements)p Fj(.)95 +4698 y Fe(int)47 b(fits_read_col_str)c(/)48 b(ffgcvs)286 +4811 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f +(LONGLONG)h(firstelem,)334 4924 y(LONGLONG)g(nelements,)f(char)h +(*nulstr,)g(>)h(char)g(**array,)e(int)i(*anynul,)334 +5036 y(int)g(*status\))95 5262 y(int)g(fits_read_col_[log,byt,sht)o (,us)o(ht,i)o(nt,u)o(int)o(,lng)o(,uln)o(g,)41 b(lnglng,)46 -b(ulnglng,)g(flt,)g(dbl,)h(cmp,)g(dblcmp])e(/)286 4183 +b(ulnglng,)g(flt,)g(dbl,)h(cmp,)g(dblcmp])e(/)286 5375 y(ffgcv[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d,c)o(,m])286 -4295 y(\(fitsfile)h(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f -(LONGLONG)h(firstelem,)334 4408 y(LONGLONG)g(nelements,)f(DTYPE)h -(nulval,)g(>)h(DTYPE)g(*array,)e(int)i(*anynul,)334 4521 -y(int)g(*status\))0 4779 y Fi(2)81 b Fj(Read)39 b(elemen)m(ts)i(and)e -(n)m(ull)h(\015ags)g(from)f(an)g(ASCI)s(I)g(or)g(binary)g(table)i -(column)e(\(in)h(the)g(CHDU\).)g(These)227 4892 y(routines)29 -b(return)e(the)i(v)-5 b(alues)29 b(of)g(the)g(table)h(column)e(arra)m -(y)i(elemen)m(ts.)41 b(An)m(y)29 b(unde\014ned)d(arra)m(y)k(elemen)m -(ts)227 5005 y(will)k(ha)m(v)m(e)h(the)f(corresp)s(onding)e(n)m -(ullarra)m(y)i(elemen)m(t)h(set)f(equal)g(to)g(TR)m(UE.)g(The)f(an)m -(yn)m(ul)h(parameter)g(is)227 5118 y(set)d(to)g(true)f(if)h(an)m(y)g -(of)f(the)h(returned)e(elemen)m(ts)j(are)e(unde\014ned.)95 -5375 y Fe(int)47 b(fits_read_colnull_str)42 b(/)48 b(ffgcfs)286 -5488 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f -(LONGLONG)h(firstelem,)334 5601 y(LONGLONG)g(nelements,)f(>)i(char)g -(**array,)e(char)i(*nullarray,)e(int)i(*anynul,)334 5714 +5488 y(\(fitsfile)h(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f +(LONGLONG)h(firstelem,)334 5601 y(LONGLONG)g(nelements,)f(DTYPE)h +(nulval,)g(>)h(DTYPE)g(*array,)e(int)i(*anynul,)334 5714 y(int)g(*status\))p eop end -%%Page: 120 128 -TeXDict begin 120 127 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.120) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(120)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)95 668 y Fe(int)47 b -(fits_read_colnull_[log,byt)o(,sh)o(t,us)o(ht,i)o(nt,)o(uint)o(,lng)o -(,ul)o(ng,l)o(ngln)o(g,u)o(lngl)o(ng,f)o(lt,)o(dbl,)o(cmp,)o(dbl)o -(cmp])41 b(/)286 781 y(ffgcf[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d,c)o -(,m])286 894 y(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(LONGLONG)h -(firstrow,)334 1007 y(LONGLONG)g(firstelem,)f(LONGLONG)g(nelements,)g -(>)j(DTYPE)e(*array,)334 1120 y(char)h(*nullarray,)d(int)j(*anynul,)f -(int)h(*status\))0 1384 y Fi(3)81 b Fj(Read)24 b(an)g(arbitrary)g(data) -h(subsection)f(from)g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g -(table)h(v)m(ector)h(column.)227 1497 y(Unde\014ned)21 +%%Page: 122 130 +TeXDict begin 122 129 bop 0 299 a Fj(122)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)0 555 y Fi(2)81 b Fj(Read)39 b(elemen)m(ts)i(and)e(n)m +(ull)h(\015ags)g(from)f(an)g(ASCI)s(I)g(or)g(binary)g(table)i(column)e +(\(in)h(the)g(CHDU\).)g(These)227 668 y(routines)29 b(return)e(the)i(v) +-5 b(alues)29 b(of)g(the)g(table)h(column)e(arra)m(y)i(elemen)m(ts.)41 +b(An)m(y)29 b(unde\014ned)d(arra)m(y)k(elemen)m(ts)227 +781 y(will)k(ha)m(v)m(e)h(the)f(corresp)s(onding)e(n)m(ullarra)m(y)i +(elemen)m(t)h(set)f(equal)g(to)g(TR)m(UE.)g(The)f(an)m(yn)m(ul)h +(parameter)g(is)227 894 y(set)d(to)g(true)f(if)h(an)m(y)g(of)f(the)h +(returned)e(elemen)m(ts)j(are)e(unde\014ned.)95 1152 +y Fe(int)47 b(fits_read_colnull_str)42 b(/)48 b(ffgcfs)286 +1264 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f +(LONGLONG)h(firstelem,)334 1377 y(LONGLONG)g(nelements,)f(>)i(char)g +(**array,)e(char)i(*nullarray,)e(int)i(*anynul,)334 1490 +y(int)g(*status\))95 1716 y(int)g(fits_read_colnull_[log,byt)o(,sh)o +(t,us)o(ht,i)o(nt,)o(uint)o(,lng)o(,ul)o(ng,l)o(ngln)o(g,u)o(lngl)o +(ng,f)o(lt,)o(dbl,)o(cmp,)o(dbl)o(cmp])41 b(/)286 1829 +y(ffgcf[l,b,i,ui,k,uk,j,uj,j)o(j,u)o(jj,e)o(,d,c)o(,m])286 +1942 y(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,) +334 2055 y(LONGLONG)g(firstelem,)f(LONGLONG)g(nelements,)g(>)j(DTYPE)e +(*array,)334 2168 y(char)h(*nullarray,)d(int)j(*anynul,)f(int)h +(*status\))0 2425 y Fi(3)81 b Fj(Read)24 b(an)g(arbitrary)g(data)h +(subsection)f(from)g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g +(table)h(v)m(ector)h(column.)227 2538 y(Unde\014ned)21 b(pixels)i(in)f(the)h(arra)m(y)g(will)g(b)s(e)f(set)h(equal)h(to)f(the) g(v)-5 b(alue)23 b(of)g('n)m(ulv)-5 b(al',)25 b(unless)d(n)m(ulv)-5 -b(al=0)23 b(in)f(whic)m(h)227 1610 y(case)37 b(no)e(testing)h(for)f +b(al=0)23 b(in)f(whic)m(h)227 2651 y(case)37 b(no)e(testing)h(for)f (unde\014ned)e(pixels)i(will)h(b)s(e)f(p)s(erformed.)53 b(The)35 b(\014rst)g(and)f(last)i(ro)m(ws)g(in)f(the)g(table)227 -1722 y(to)30 b(b)s(e)e(read)h(are)g(sp)s(eci\014ed)g(b)m(y)g +2764 y(to)30 b(b)s(e)e(read)h(are)g(sp)s(eci\014ed)g(b)m(y)g (fpixel\(naxis+1\))g(and)g(lpixel\(naxis+1\),)i(and)d(hence)h(are)h -(treated)g(as)f(the)227 1835 y(next)38 b(higher)f(dimension)g(of)h(the) +(treated)g(as)f(the)227 2877 y(next)38 b(higher)f(dimension)g(of)h(the) f(FITS)g(N-dimensional)h(arra)m(y)-8 b(.)63 b(The)37 -b(INC)h(parameter)g(sp)s(eci\014es)f(the)227 1948 y(sampling)31 +b(INC)h(parameter)g(sp)s(eci\014es)f(the)227 2990 y(sampling)31 b(in)m(terv)-5 b(al)31 b(in)f(eac)m(h)i(dimension)e(b)s(et)m(w)m(een)h (the)f(data)h(elemen)m(ts)h(that)f(will)g(b)s(e)e(returned.)95 -2212 y Fe(int)47 b(fits_read_subset_[byt,)42 b(sht,)47 +3247 y Fe(int)47 b(fits_read_subset_[byt,)42 b(sht,)47 b(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f(flt,)i -(dbl])g(/)286 2325 y(ffgsv[b,i,ui,k,uk,j,uj,jj,)o(ull)o(,e,d)o(])286 -2438 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h -(*naxes,)f(long)h(*fpixel,)334 2551 y(long)g(*lpixel,)e(long)i(*inc,)f +(dbl])g(/)286 3360 y(ffgsv[b,i,ui,k,uk,j,uj,jj,)o(ull)o(,e,d)o(])286 +3473 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h +(*naxes,)f(long)h(*fpixel,)334 3586 y(long)g(*lpixel,)e(long)i(*inc,)f (DTYPE)h(nulval,)e(>)j(DTYPE)e(*array,)g(int)h(*anynul,)334 -2664 y(int)g(*status\))0 2928 y Fi(4)81 b Fj(Read)24 +3699 y(int)g(*status\))0 3957 y Fi(4)81 b Fj(Read)24 b(an)g(arbitrary)g(data)h(subsection)f(from)g(an)g(N-dimensional)h (arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h(column.)227 -3041 y(An)m(y)34 b(Unde\014ned)e(pixels)i(in)g(the)f(arra)m(y)i(will)f +4070 y(An)m(y)34 b(Unde\014ned)e(pixels)i(in)g(the)f(arra)m(y)i(will)f (ha)m(v)m(e)h(the)f(corresp)s(onding)e('n)m(ullarra)m(y')j(elemen)m(t)g -(set)f(equal)227 3154 y(to)40 b(TR)m(UE.)e(The)h(\014rst)e(and)h(last)i +(set)f(equal)227 4183 y(to)40 b(TR)m(UE.)e(The)h(\014rst)e(and)h(last)i (ro)m(ws)e(in)h(the)f(table)i(to)f(b)s(e)f(read)h(are)g(sp)s(eci\014ed) -e(b)m(y)i(fpixel\(naxis+1\))227 3267 y(and)i(lpixel\(naxis+1\),)47 +e(b)m(y)i(fpixel\(naxis+1\))227 4295 y(and)i(lpixel\(naxis+1\),)47 b(and)41 b(hence)h(are)g(treated)g(as)g(the)g(next)g(higher)g -(dimension)f(of)h(the)g(FITS)f(N-)227 3379 y(dimensional)i(arra)m(y)-8 +(dimension)f(of)h(the)g(FITS)f(N-)227 4408 y(dimensional)i(arra)m(y)-8 b(.)78 b(The)41 b(INC)h(parameter)h(sp)s(eci\014es)f(the)h(sampling)f (in)m(terv)-5 b(al)44 b(in)e(eac)m(h)i(dimension)227 -3492 y(b)s(et)m(w)m(een)31 b(the)g(data)g(elemen)m(ts)h(that)f(will)f -(b)s(e)g(returned.)95 3756 y Fe(int)47 b(fits_read_subsetnull_[byt,)41 +4521 y(b)s(et)m(w)m(een)31 b(the)g(data)g(elemen)m(ts)h(that)f(will)f +(b)s(e)g(returned.)95 4779 y Fe(int)47 b(fits_read_subsetnull_[byt,)41 b(sht,)47 b(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(ulnglng,)f -(flt,)i(dbl])g(/)286 3869 y(ffgsf[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o -(])286 3982 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f -(long)h(*naxes,)334 4095 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i -(*inc,)f(>)i(DTYPE)e(*array,)334 4208 y(char)h(*nullarray,)d(int)j -(*anynul,)f(int)h(*status\))0 4472 y Fi(5)81 b Fj(Read)35 +(flt,)i(dbl])g(/)286 4892 y(ffgsf[b,i,ui,k,uk,j,uj,jj,)o(ujj)o(,e,d)o +(])286 5005 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f +(long)h(*naxes,)334 5118 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i +(*inc,)f(>)i(DTYPE)e(*array,)334 5230 y(char)h(*nullarray,)d(int)j +(*anynul,)f(int)h(*status\))0 5488 y Fi(5)81 b Fj(Read)35 b(bit)g(v)-5 b(alues)35 b(from)g(a)g(b)m(yte)h(\('B'\))g(or)f(bit)g (\(`X`\))h(table)g(column)f(\(in)g(the)g(CDU\).)h(Larra)m(y)g(is)f(an)f -(arra)m(y)227 4585 y(of)g(logical)i(v)-5 b(alues)34 b(corresp)s(onding) +(arra)m(y)227 5601 y(of)g(logical)i(v)-5 b(alues)34 b(corresp)s(onding) f(to)h(the)g(sequence)g(of)g(bits)g(to)g(b)s(e)f(read.)51 -b(If)33 b(larra)m(y)h(is)g(true)f(then)h(the)227 4698 +b(If)33 b(larra)m(y)h(is)g(true)f(then)h(the)227 5714 y(corresp)s(onding)i(bit)h(w)m(as)g(set)h(to)f(1,)j(otherwise)d(the)g (bit)g(w)m(as)g(set)h(to)f(0.)61 b(The)37 b('X')g(column)g(in)f(a)i -(FITS)227 4811 y(table)e(is)e(alw)m(a)m(ys)i(padded)e(out)h(to)g(a)g(m) -m(ultiple)g(of)g(8)g(bits)f(where)g(the)h(bit)g(arra)m(y)g(starts)g -(with)f(the)h(most)227 4924 y(signi\014can)m(t)j(bit)e(of)h(the)g(b)m -(yte)g(and)f(w)m(orks)g(do)m(wn)h(to)m(w)m(ards)g(the)g(1's)g(bit.)59 -b(F)-8 b(or)37 b(example,)i(a)e('4X')h(arra)m(y)-8 b(,)227 -5036 y(with)33 b(the)h(\014rst)e(bit)i(=)f(1)h(and)e(the)i(remaining)f -(3)h(bits)f(=)g(0)h(is)f(equiv)-5 b(alen)m(t)35 b(to)f(the)g(8-bit)g -(unsigned)e(b)m(yte)227 5149 y(v)-5 b(alue)31 b(of)f(128.)42 -b(Note)31 b(that)g(in)e(the)i(case)g(of)f('X')g(columns,)g(CFITSIO)f -(can)h(read)g(all)h(8)f(bits)g(of)g(eac)m(h)h(b)m(yte)227 -5262 y(whether)h(they)h(are)g(formally)g(v)-5 b(alid)33 -b(or)f(not.)48 b(Th)m(us)31 b(if)i(the)f(column)h(is)f(de\014ned)f(as)i -('4X',)h(and)e(one)h(calls)227 5375 y(\013gcx)d(with)f(\014rstbit=1)f -(and)h(n)m(bits=8,)g(then)g(all)h(8)f(bits)g(will)g(b)s(e)g(read)g -(from)f(the)h(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)227 -5488 y(to)39 b(reading)f(the)g(\014rst)g(4)g(bits)g(from)g(the)g -(\014rst)f(ro)m(w)h(and)g(then)f(the)i(\014rst)e(4)h(bits)g(from)g(the) -g(next)g(ro)m(w\),)227 5601 y(ev)m(en)g(though)f(the)g(last)i(4)e(bits) -g(of)h(eac)m(h)g(b)m(yte)g(are)f(formally)h(not)g(de\014ned.)60 -b(It)37 b(should)f(also)i(b)s(e)f(noted)227 5714 y(that)f(it)f(is)h -(more)f(e\016cien)m(t)h(to)g(read)f('X')h(columns)e(an)h(en)m(tire)h(b) -m(yte)g(at)g(a)f(time,)i(instead)e(of)h(bit)f(b)m(y)g(bit.)p +(FITS)p eop end +%%Page: 123 131 +TeXDict begin 123 130 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 +b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 +b(R)m(OUTINES)933 b Fj(123)227 555 y(table)36 b(is)e(alw)m(a)m(ys)i +(padded)e(out)h(to)g(a)g(m)m(ultiple)g(of)g(8)g(bits)f(where)g(the)h +(bit)g(arra)m(y)g(starts)g(with)f(the)h(most)227 668 +y(signi\014can)m(t)j(bit)e(of)h(the)g(b)m(yte)g(and)f(w)m(orks)g(do)m +(wn)h(to)m(w)m(ards)g(the)g(1's)g(bit.)59 b(F)-8 b(or)37 +b(example,)i(a)e('4X')h(arra)m(y)-8 b(,)227 781 y(with)33 +b(the)h(\014rst)e(bit)i(=)f(1)h(and)e(the)i(remaining)f(3)h(bits)f(=)g +(0)h(is)f(equiv)-5 b(alen)m(t)35 b(to)f(the)g(8-bit)g(unsigned)e(b)m +(yte)227 894 y(v)-5 b(alue)31 b(of)f(128.)42 b(Note)31 +b(that)g(in)e(the)i(case)g(of)f('X')g(columns,)g(CFITSIO)f(can)h(read)g +(all)h(8)f(bits)g(of)g(eac)m(h)h(b)m(yte)227 1007 y(whether)h(they)h +(are)g(formally)g(v)-5 b(alid)33 b(or)f(not.)48 b(Th)m(us)31 +b(if)i(the)f(column)h(is)f(de\014ned)f(as)i('4X',)h(and)e(one)h(calls) +227 1120 y(\013gcx)d(with)f(\014rstbit=1)f(and)h(n)m(bits=8,)g(then)g +(all)h(8)f(bits)g(will)g(b)s(e)g(read)g(from)f(the)h(\014rst)g(b)m(yte) +g(\(as)h(opp)s(osed)227 1233 y(to)39 b(reading)f(the)g(\014rst)g(4)g +(bits)g(from)g(the)g(\014rst)f(ro)m(w)h(and)g(then)f(the)i(\014rst)e(4) +h(bits)g(from)g(the)g(next)g(ro)m(w\),)227 1346 y(ev)m(en)g(though)f +(the)g(last)i(4)e(bits)g(of)h(eac)m(h)g(b)m(yte)g(are)f(formally)h(not) +g(de\014ned.)60 b(It)37 b(should)f(also)i(b)s(e)f(noted)227 +1458 y(that)f(it)f(is)h(more)f(e\016cien)m(t)h(to)g(read)f('X')h +(columns)e(an)h(en)m(tire)h(b)m(yte)g(at)g(a)f(time,)i(instead)e(of)h +(bit)f(b)m(y)g(bit.)227 1571 y(An)m(y)29 b(of)g(the)h(CFITSIO)d +(routines)i(that)g(read)g(columns)g(\(e.g.)42 b(\014ts)p +2520 1571 28 4 v 32 w(read)p 2724 1571 V 33 w(col)p 2867 +1571 V 34 w(b)m(yt\))29 b(ma)m(y)h(b)s(e)e(used)g(for)h(this)227 +1684 y(purp)s(ose.)60 b(These)36 b(routines)i(will)f(in)m(terpret)h +('X')f(columns)g(as)g(though)g(they)h(w)m(ere)f('B')h(columns)f +(\(e.g.,)227 1797 y('8X')32 b(is)e(equiv)-5 b(alen)m(t)32 +b(to)f('1B',)h(and)e('16X')i(is)e(equiv)-5 b(alen)m(t)32 +b(to)f('2B'\).)95 2061 y Fe(int)47 b(fits_read_col_bit)c(/)48 +b(ffgcx)286 2174 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h +(firstrow,)f(LONGLONG)h(firstbit,)334 2287 y(LONGLONG)g(nbits,)g(>)h +(char)g(*larray,)e(int)i(*status\))0 2551 y Fi(6)81 b +Fj(Read)31 b(an)m(y)h(consecutiv)m(e)i(set)e(of)g(bits)f(from)h(an)f +('X')h(or)g('B')h(column)e(and)g(in)m(terpret)h(them)g(as)f(an)h +(unsigned)227 2664 y(n-bit)h(in)m(teger.)48 b(n)m(bits)33 +b(m)m(ust)f(b)s(e)g(less)h(than)g(16)g(or)g(32)g(in)f(\013gcxui)i(and)d +(\013gcxuk,)j(resp)s(ectiv)m(ely)-8 b(.)49 b(If)32 b(nro)m(ws)227 +2777 y(is)c(greater)h(than)f(1,)h(then)e(the)h(same)h(set)f(of)g(bits)g +(will)g(b)s(e)f(read)h(from)f(eac)m(h)i(ro)m(w,)g(starting)g(with)e +(\014rstro)m(w.)227 2890 y(The)j(bits)g(are)h(n)m(um)m(b)s(ered)e(with) +h(1)h(=)f(the)h(most)f(signi\014can)m(t)i(bit)e(of)h(the)f(\014rst)g +(elemen)m(t)i(of)e(the)h(column.)95 3154 y Fe(int)47 +b(fits_read_col_bit_[usht,)42 b(uint])k(/)h(ffgcx[ui,uk])286 +3267 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f +(LONGLONG,)h(nrows,)334 3379 y(long)h(firstbit,)e(long)i(nbits,)f(>)h +(DTYPE)g(*array,)e(int)i(*status\))0 3643 y Fi(7)81 b +Fj(Return)27 b(the)i(descriptor)f(for)h(a)g(v)-5 b(ariable)29 +b(length)g(column)f(in)h(a)g(binary)e(table.)41 b(The)28 +b(descriptor)h(consists)g(of)227 3756 y(2)j(in)m(teger)g(parameters:)42 +b(the)31 b(n)m(um)m(b)s(er)f(of)h(elemen)m(ts)i(in)d(the)h(arra)m(y)h +(and)e(the)h(starting)h(o\013set)g(relativ)m(e)h(to)227 +3869 y(the)c(start)h(of)e(the)h(heap.)40 b(The)29 b(\014rst)f(pair)g +(of)h(routine)g(returns)e(a)i(single)h(descriptor)e(whereas)h(the)g +(second)227 3982 y(pair)34 b(of)h(routine)f(returns)g(the)g +(descriptors)g(for)g(a)h(range)g(of)f(ro)m(ws)h(in)f(the)g(table.)54 +b(The)34 b(only)g(di\013erence)227 4095 y(b)s(et)m(w)m(een)42 +b(the)f(2)g(routines)f(in)h(eac)m(h)h(pair)e(is)h(that)g(one)g(returns) +f(the)h(parameters)g(as)g('long')g(in)m(tegers,)227 4208 +y(whereas)30 b(the)h(other)g(returns)e(the)h(v)-5 b(alues)31 +b(as)g(64-bit)g('LONGLONG')g(in)m(tegers.)95 4472 y Fe(int)47 +b(fits_read_descript)c(/)48 b(ffgdes)286 4585 y(\(fitsfile)e(*fptr,)g +(int)h(colnum,)e(LONGLONG)h(rownum,)g(>)h(long)g(*repeat,)525 +4698 y(long)g(*offset,)e(int)i(*status\))95 4924 y(int)g +(fits_read_descriptll)c(/)k(ffgdesll)286 5036 y(\(fitsfile)f(*fptr,)g +(int)h(colnum,)e(LONGLONG)h(rownum,)g(>)h(LONGLONG)f(*repeat,)525 +5149 y(LONGLONG)g(*offset,)f(int)i(*status\))95 5375 +y(int)g(fits_read_descripts)c(/)k(ffgdess)286 5488 y(\(fitsfile)f +(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f(LONGLONG)h(nrows)334 +5601 y(>)i(long)e(*repeat,)g(long)g(*offset,)g(int)h(*status\))p eop end -%%Page: 121 129 -TeXDict begin 121 128 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.121) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(9.6.)72 -b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 -b(T)-8 b(ABLE)30 b(R)m(OUTINES)933 b Fj(121)227 555 y(An)m(y)29 -b(of)g(the)h(CFITSIO)d(routines)i(that)g(read)g(columns)g(\(e.g.)42 -b(\014ts)p 2520 555 28 4 v 32 w(read)p 2724 555 V 33 -w(col)p 2867 555 V 34 w(b)m(yt\))29 b(ma)m(y)h(b)s(e)e(used)g(for)h -(this)227 668 y(purp)s(ose.)60 b(These)36 b(routines)i(will)f(in)m -(terpret)h('X')f(columns)g(as)g(though)g(they)h(w)m(ere)f('B')h -(columns)f(\(e.g.,)227 781 y('8X')32 b(is)e(equiv)-5 -b(alen)m(t)32 b(to)f('1B',)h(and)e('16X')i(is)e(equiv)-5 -b(alen)m(t)32 b(to)f('2B'\).)95 1041 y Fe(int)47 b(fits_read_col_bit)c -(/)48 b(ffgcx)286 1154 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e -(LONGLONG)h(firstrow,)f(LONGLONG)h(firstbit,)334 1267 -y(LONGLONG)g(nbits,)g(>)h(char)g(*larray,)e(int)i(*status\))0 -1526 y Fi(6)81 b Fj(Read)31 b(an)m(y)h(consecutiv)m(e)i(set)e(of)g -(bits)f(from)h(an)f('X')h(or)g('B')h(column)e(and)g(in)m(terpret)h -(them)g(as)f(an)h(unsigned)227 1639 y(n-bit)h(in)m(teger.)48 -b(n)m(bits)33 b(m)m(ust)f(b)s(e)g(less)h(than)g(16)g(or)g(32)g(in)f -(\013gcxui)i(and)d(\013gcxuk,)j(resp)s(ectiv)m(ely)-8 -b(.)49 b(If)32 b(nro)m(ws)227 1752 y(is)c(greater)h(than)f(1,)h(then)e -(the)h(same)h(set)f(of)g(bits)g(will)g(b)s(e)f(read)h(from)f(eac)m(h)i -(ro)m(w,)g(starting)g(with)e(\014rstro)m(w.)227 1865 -y(The)j(bits)g(are)h(n)m(um)m(b)s(ered)e(with)h(1)h(=)f(the)h(most)f -(signi\014can)m(t)i(bit)e(of)h(the)f(\014rst)g(elemen)m(t)i(of)e(the)h -(column.)95 2125 y Fe(int)47 b(fits_read_col_bit_[usht,)42 -b(uint])k(/)h(ffgcx[ui,uk])286 2238 y(\(fitsfile)f(*fptr,)g(int)h -(colnum,)e(LONGLONG)h(firstrow,)f(LONGLONG,)h(nrows,)334 -2351 y(long)h(firstbit,)e(long)i(nbits,)f(>)h(DTYPE)g(*array,)e(int)i -(*status\))0 2611 y Fi(7)81 b Fj(Return)27 b(the)i(descriptor)f(for)h -(a)g(v)-5 b(ariable)29 b(length)g(column)f(in)h(a)g(binary)e(table.)41 -b(The)28 b(descriptor)h(consists)g(of)227 2723 y(2)j(in)m(teger)g -(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of)h(elemen)m(ts)i(in)d -(the)h(arra)m(y)h(and)e(the)h(starting)h(o\013set)g(relativ)m(e)h(to) -227 2836 y(the)c(start)h(of)e(the)h(heap.)40 b(The)29 -b(\014rst)f(pair)g(of)h(routine)g(returns)e(a)i(single)h(descriptor)e -(whereas)h(the)g(second)227 2949 y(pair)34 b(of)h(routine)f(returns)g -(the)g(descriptors)g(for)g(a)h(range)g(of)f(ro)m(ws)h(in)f(the)g -(table.)54 b(The)34 b(only)g(di\013erence)227 3062 y(b)s(et)m(w)m(een) -42 b(the)f(2)g(routines)f(in)h(eac)m(h)h(pair)e(is)h(that)g(one)g -(returns)f(the)h(parameters)g(as)g('long')g(in)m(tegers,)227 -3175 y(whereas)30 b(the)h(other)g(returns)e(the)h(v)-5 -b(alues)31 b(as)g(64-bit)g('LONGLONG')g(in)m(tegers.)95 -3435 y Fe(int)47 b(fits_read_descript)c(/)48 b(ffgdes)286 -3548 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(rownum,)g(>)h -(long)g(*repeat,)525 3661 y(long)g(*offset,)e(int)i(*status\))95 -3886 y(int)g(fits_read_descriptll)c(/)k(ffgdesll)286 -3999 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(rownum,)g(>)h -(LONGLONG)f(*repeat,)525 4112 y(LONGLONG)g(*offset,)f(int)i(*status\)) -95 4338 y(int)g(fits_read_descripts)c(/)k(ffgdess)286 -4451 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f -(LONGLONG)h(nrows)334 4564 y(>)i(long)e(*repeat,)g(long)g(*offset,)g -(int)h(*status\))95 4790 y(int)g(fits_read_descriptsll)42 -b(/)48 b(ffgdessll)286 4903 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e -(LONGLONG)h(firstrow,)f(LONGLONG)h(nrows)334 5016 y(>)i(LONGLONG)d +%%Page: 124 132 +TeXDict begin 124 131 bop 0 299 a Fj(124)958 b Fh(CHAPTER)30 +b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 +b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_read_descriptsll)42 +b(/)48 b(ffgdessll)286 668 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e +(LONGLONG)h(firstrow,)f(LONGLONG)h(nrows)334 781 y(>)i(LONGLONG)d (*repeat,)h(LONGLONG)f(*offset,)h(int)h(*status\))p eop end -%%Page: 122 130 -TeXDict begin 122 129 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.122) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(122)958 -b Fh(CHAPTER)30 b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 -b(A)m(CE)30 b(R)m(OUTINES)p eop end -%%Page: 123 131 -TeXDict begin 123 130 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.123) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.10) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(10)0 +%%Page: 125 133 +TeXDict begin 125 132 bop 0 1225 a Fg(Chapter)65 b(10)0 1687 y Fm(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0 -2060 y -SDict begin H.S end - 0 2060 a 0 2060 a -SDict begin 13.6 H.A end - 0 2060 a 0 2060 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.1) cvn /DEST pdfmark -end - 0 2060 a 156 -x Ff(10.1)136 b(Ov)l(erview)0 2466 y Fj(CFITSIO)30 b(supp)s(orts)f(an)j -(extended)f(syn)m(tax)h(when)f(sp)s(ecifying)g(the)h(name)f(of)h(the)g -(data)g(\014le)f(to)h(b)s(e)f(op)s(ened)g(or)0 2579 y(created)g(that)g -(includes)f(the)h(follo)m(wing)h(features:)136 2813 y -Fc(\017)46 b Fj(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g(images)g -(whic)m(h)f(ha)m(v)m(e)i(header)e(\014le)h(names)f(that)h(end)f(with)g -(the)227 2926 y('.imh')d(extension,)i(as)e(w)m(ell)g(as)g(reading)f -(and)g(writing)g(FITS)g(\014les,)i(This)e(feature)h(is)f(implemen)m -(ted)h(in)227 3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v)m(erting)k -(the)d(IRAF)h(image)h(in)m(to)f(a)g(temp)s(orary)f(FITS)g(format)h -(\014le)f(in)g(memory)-8 b(,)227 3152 y(then)35 b(op)s(ening)f(the)h -(FITS)f(\014le.)54 b(An)m(y)35 b(of)g(the)g(usual)f(CFITSIO)g(routines) -g(then)h(ma)m(y)g(b)s(e)f(used)g(to)i(read)227 3265 y(the)31 -b(image)g(header)f(or)h(data.)41 b(Similarly)-8 b(,)31 -b(ra)m(w)f(binary)g(data)h(arra)m(ys)f(can)h(b)s(e)f(read)g(b)m(y)g -(con)m(v)m(erting)i(them)227 3378 y(on)f(the)f(\015y)g(in)m(to)h +2216 y Ff(10.1)136 b(Ov)l(erview)0 2466 y Fj(CFITSIO)30 +b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f(sp)s(ecifying)g(the) +h(name)f(of)h(the)g(data)g(\014le)f(to)h(b)s(e)f(op)s(ened)g(or)0 +2579 y(created)g(that)g(includes)f(the)h(follo)m(wing)h(features:)136 +2813 y Fc(\017)46 b Fj(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g +(images)g(whic)m(h)f(ha)m(v)m(e)i(header)e(\014le)h(names)f(that)h(end) +f(with)g(the)227 2926 y('.imh')d(extension,)i(as)e(w)m(ell)g(as)g +(reading)f(and)g(writing)g(FITS)g(\014les,)i(This)e(feature)h(is)f +(implemen)m(ted)h(in)227 3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v) +m(erting)k(the)d(IRAF)h(image)h(in)m(to)f(a)g(temp)s(orary)f(FITS)g +(format)h(\014le)f(in)g(memory)-8 b(,)227 3152 y(then)35 +b(op)s(ening)f(the)h(FITS)f(\014le.)54 b(An)m(y)35 b(of)g(the)g(usual)f +(CFITSIO)g(routines)g(then)h(ma)m(y)g(b)s(e)f(used)g(to)i(read)227 +3265 y(the)31 b(image)g(header)f(or)h(data.)41 b(Similarly)-8 +b(,)31 b(ra)m(w)f(binary)g(data)h(arra)m(ys)f(can)h(b)s(e)f(read)g(b)m +(y)g(con)m(v)m(erting)i(them)227 3378 y(on)f(the)f(\015y)g(in)m(to)h (virtual)g(FITS)f(images.)136 3557 y Fc(\017)46 b Fj(FITS)f(\014les)h (on)f(the)h(In)m(ternet)g(can)g(b)s(e)f(read)g(\(and)g(sometimes)i (written\))f(using)f(the)h(FTP)-8 b(,)46 b(HTTP)-8 b(,)227 @@ -17021,35 +13305,23 @@ 227 5601 y(in)36 b(a)g(virtual)h(N-dimensional)f(FITS)g(image.)59 b(The)35 b(application)i(program)f(then)g(only)g(sees)g(the)h(FITS)227 5714 y(image)32 b(\(in)e(the)h(primary)e(arra)m(y\))j(instead)e(of)h -(the)f(original)i(FITS)d(table.)1882 5942 y(123)p eop +(the)f(original)i(FITS)d(table.)1882 5942 y(125)p eop end -%%Page: 124 132 -TeXDict begin 124 131 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.124) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(124)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 555 y Fj(The)39 b(latter)i(3)f(table)h(\014ltering)f(features)g -(in)f(particular)h(add)f(v)m(ery)h(p)s(o)m(w)m(erful)f(data)i(pro)s -(cessing)e(capabilities)0 668 y(directly)33 b(in)m(to)g(CFITSIO,)e(and) -h(hence)h(in)m(to)g(ev)m(ery)g(task)g(that)g(uses)f(CFITSIO)f(to)i -(read)f(or)h(write)f(FITS)g(\014les.)0 781 y(F)-8 b(or)29 -b(example,)g(these)f(features)h(transform)e(a)h(v)m(ery)g(simple)g -(program)g(that)g(just)g(copies)g(an)g(input)f(FITS)g(\014le)h(to)0 -894 y(a)c(new)f(output)h(\014le)g(\(lik)m(e)h(the)f(`\014tscop)m(y')h -(program)e(that)i(is)e(distributed)g(with)h(CFITSIO\))e(in)m(to)j(a)f -(m)m(ultipurp)s(ose)0 1007 y(FITS)33 b(\014le)g(pro)s(cessing)g(to)s -(ol.)51 b(By)33 b(app)s(ending)f(fairly)i(simple)f(quali\014ers)g(on)m -(to)h(the)g(name)f(of)h(the)f(input)g(FITS)0 1120 y(\014le,)45 +%%Page: 126 134 +TeXDict begin 126 133 bop 0 299 a Fj(126)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(The)39 b(latter)i(3)f(table)h(\014ltering)f(features)g(in)f +(particular)h(add)f(v)m(ery)h(p)s(o)m(w)m(erful)f(data)i(pro)s(cessing) +e(capabilities)0 668 y(directly)33 b(in)m(to)g(CFITSIO,)e(and)h(hence)h +(in)m(to)g(ev)m(ery)g(task)g(that)g(uses)f(CFITSIO)f(to)i(read)f(or)h +(write)f(FITS)g(\014les.)0 781 y(F)-8 b(or)29 b(example,)g(these)f +(features)h(transform)e(a)h(v)m(ery)g(simple)g(program)g(that)g(just)g +(copies)g(an)g(input)f(FITS)g(\014le)h(to)0 894 y(a)c(new)f(output)h +(\014le)g(\(lik)m(e)h(the)f(`\014tscop)m(y')h(program)e(that)i(is)e +(distributed)g(with)h(CFITSIO\))e(in)m(to)j(a)f(m)m(ultipurp)s(ose)0 +1007 y(FITS)33 b(\014le)g(pro)s(cessing)g(to)s(ol.)51 +b(By)33 b(app)s(ending)f(fairly)i(simple)f(quali\014ers)g(on)m(to)h +(the)g(name)f(of)h(the)f(input)g(FITS)0 1120 y(\014le,)45 b(the)d(user)f(can)h(p)s(erform)e(quite)i(complex)h(table)f(editing)h (op)s(erations)f(\(e.g.,)k(create)d(new)e(columns,)k(or)0 1233 y(\014lter)32 b(out)h(ro)m(ws)f(in)g(a)g(table\))i(or)e(create)i @@ -17117,29 +13389,17 @@ (is)h(mainly)f(useful)g(for)g(testing)i(purp)s(oses)c(when)i(one)g(do)s (es)227 5714 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h (of)f(the)h(output)f(\014le.)p eop end -%%Page: 125 133 -TeXDict begin 125 132 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.125) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.1.)73 -b(O)m(VER)-10 b(VIEW)2995 b Fj(125)136 555 y Fc(\017)46 -b Fe(myfile.fits[3;)e(Images\(10\)])p Fj(:)c(op)s(ens)30 -b(a)i(cop)m(y)g(of)g(the)g(image)g(con)m(tained)h(in)e(the)h(10th)g(ro) -m(w)f(of)h(the)227 668 y('Images')38 b(column)f(in)g(the)g(binary)f -(table)i(in)e(the)h(3th)g(extension)h(of)f(the)g(FITS)f(\014le.)60 -b(The)37 b(virtual)g(\014le)227 781 y(that)31 b(is)g(op)s(ened)e(b)m(y) -i(the)f(application)i(just)e(con)m(tains)h(this)f(single)h(image)h(in)e -(the)h(primary)e(arra)m(y)-8 b(.)136 973 y Fc(\017)46 -b Fe(myfile.fits[1:512:2,)d(1:512:2])p Fj(:)c(op)s(ens)30 +%%Page: 127 135 +TeXDict begin 127 134 bop 0 299 a Fh(10.1.)73 b(O)m(VER)-10 +b(VIEW)2995 b Fj(127)136 555 y Fc(\017)46 b Fe(myfile.fits[3;)e +(Images\(10\)])p Fj(:)c(op)s(ens)30 b(a)i(cop)m(y)g(of)g(the)g(image)g +(con)m(tained)h(in)e(the)h(10th)g(ro)m(w)f(of)h(the)227 +668 y('Images')38 b(column)f(in)g(the)g(binary)f(table)i(in)e(the)h +(3th)g(extension)h(of)f(the)g(FITS)f(\014le.)60 b(The)37 +b(virtual)g(\014le)227 781 y(that)31 b(is)g(op)s(ened)e(b)m(y)i(the)f +(application)i(just)e(con)m(tains)h(this)f(single)h(image)h(in)e(the)h +(primary)e(arra)m(y)-8 b(.)136 973 y Fc(\017)46 b Fe +(myfile.fits[1:512:2,)d(1:512:2])p Fj(:)c(op)s(ens)30 b(a)h(section)h(of)g(the)f(input)f(image)i(ranging)f(from)f(the)h(1st) 227 1086 y(to)k(the)f(512th)h(pixel)f(in)g(X)g(and)g(Y,)g(and)f (selects)j(ev)m(ery)e(second)g(pixel)h(in)e(b)s(oth)g(dimensions,)i @@ -17204,603 +13464,462 @@ (image)e(HDU:)143 5714 y(filetype://BaseFilename\(o)o(utNa)o(me\))o ([HDU)o(loca)o(tio)o(n][I)o(mage)o(Sec)o(tion)o(][pi)o(xFi)o(lter)o(])p eop end -%%Page: 126 134 -TeXDict begin 126 133 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.126) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(126)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 668 y Fe(When)47 b(opening)e(an)j(existing)d(table)i(HDU:)143 +%%Page: 128 136 +TeXDict begin 128 135 bop 0 299 a Fj(128)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +668 y Fe(When)47 b(opening)e(an)j(existing)d(table)i(HDU:)143 781 y(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o(loca)o(tio)o (n][c)o(olFi)o(lte)o(r][r)o(owFi)o(lte)o(r][b)o(inSp)o(ec])0 -991 y Fj(The)35 b(\014let)m(yp)s(e,)j(BaseFilename,)h(outName,)g(HDUlo) -s(cation,)g(ImageSection,)g(and)c(pixFilter)i(comp)s(onen)m(ts,)g(if)0 -1104 y(presen)m(t,)27 b(m)m(ust)f(b)s(e)g(giv)m(en)h(in)f(that)g +1057 y Fj(The)35 b(\014let)m(yp)s(e,)j(BaseFilename,)h(outName,)g +(HDUlo)s(cation,)g(ImageSection,)g(and)c(pixFilter)i(comp)s(onen)m(ts,) +g(if)0 1170 y(presen)m(t,)27 b(m)m(ust)f(b)s(e)g(giv)m(en)h(in)f(that)g (order,)h(but)e(the)i(colFilter,)i(ro)m(wFilter,)g(and)c(binSp)s(ec)g -(sp)s(eci\014ers)g(ma)m(y)i(follo)m(w)0 1217 y(in)j(an)m(y)h(order.)42 +(sp)s(eci\014ers)g(ma)m(y)i(follo)m(w)0 1283 y(in)j(an)m(y)h(order.)42 b(Regardless)31 b(of)g(the)g(order,)f(ho)m(w)m(ev)m(er,)i(the)f (colFilter)i(sp)s(eci\014er,)e(if)f(presen)m(t,)h(will)g(b)s(e)f(pro)s -(cessed)0 1330 y(\014rst)g(b)m(y)g(CFITSIO,)f(follo)m(w)m(ed)j(b)m(y)e +(cessed)0 1396 y(\014rst)g(b)m(y)g(CFITSIO,)f(follo)m(w)m(ed)j(b)m(y)e (the)h(ro)m(wFilter)h(sp)s(eci\014er,)e(and)f(\014nally)i(b)m(y)f(the)g -(binSp)s(ec)f(sp)s(eci\014er.)0 1477 y -SDict begin H.S end - 0 1477 a 0 1477 -a -SDict begin 13.6 H.A end - 0 1477 a 0 1477 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.2) cvn /DEST pdfmark -end - 0 1477 a 179 x Ff(10.2)136 b(Filet)l(yp)t(e)0 -1906 y Fj(The)37 b(t)m(yp)s(e)g(of)g(\014le)g(determines)g(the)g -(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s(cated)g(\(e.g.,)i -(disk)d(or)g(net)m(w)m(ork\))h(and,)0 2019 y(hence,)f(whic)m(h)e(in)m -(ternal)h(device)g(driv)m(er)f(is)g(used)f(b)m(y)h(CFITSIO)f(to)i(read) -f(and/or)g(write)g(the)g(\014le.)56 b(Curren)m(tly)0 -2132 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 2342 y -Fe(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g -(\(default\))430 2455 y(ftp://)93 b(-)48 b(a)f(readonly)f(file)g +(binSp)s(ec)f(sp)s(eci\014er.)0 1556 y(Multiple)40 b(colFilter)i(or)e +(ro)m(wFilter)h(sp)s(eci\014cations)f(ma)m(y)g(app)s(ear)f(as)h +(separated)g(brac)m(k)m(eted)h(expressions,)h(in)0 1669 +y(an)m(y)c(order.)62 b(Multiple)39 b(colFilter)h(or)d(ro)m(wFilter)i +(expressions)f(are)g(treated)g(in)m(ternally)h(as)f(a)g(single)g +(e\013ectiv)m(e)0 1782 y(expression,)30 b(with)f(order)h(of)g(op)s +(erations)g(determined)f(from)h(left)g(to)h(righ)m(t.)41 +b(CFITSIO)28 b(do)s(es)i(not)g(supp)s(ort)e(the)0 1895 +y(@\014lename.txt)j(complex)g(syn)m(tax)g(option)g(if)f(m)m(ultiple)h +(expressions)f(are)h(also)h(used.)0 2248 y Ff(10.2)136 +b(Filet)l(yp)t(e)0 2502 y Fj(The)37 b(t)m(yp)s(e)g(of)g(\014le)g +(determines)g(the)g(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s +(cated)g(\(e.g.,)i(disk)d(or)g(net)m(w)m(ork\))h(and,)0 +2615 y(hence,)f(whic)m(h)e(in)m(ternal)h(device)g(driv)m(er)f(is)g +(used)f(b)m(y)h(CFITSIO)f(to)i(read)f(and/or)g(write)g(the)g(\014le.)56 +b(Curren)m(tly)0 2728 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 +3004 y Fe(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g +(\(default\))430 3117 y(ftp://)93 b(-)48 b(a)f(readonly)f(file)g (accessed)g(with)h(the)g(anonymous)e(FTP)i(protocol.)907 -2568 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam) -o(e/..)o(.)907 2681 y(for)47 b(accessing)e(password-protected)e(ftp)k -(sites.)382 2794 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g -(with)h(the)g(HTTP)f(protocol.)93 b(It)907 2907 y(supports)45 +3230 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam) +o(e/..)o(.)907 3343 y(for)47 b(accessing)e(password-protected)e(ftp)k +(sites.)382 3456 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g +(with)h(the)g(HTTP)f(protocol.)93 b(It)907 3569 y(supports)45 b(username:password)e(just)k(like)g(the)g(ftp)g(driver.)907 -3020 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h -(http_proxy)907 3133 y(environment)e(variable)g(\(see)i(following)e -(note\).)334 3245 y(https://)93 b(-)48 b(a)f(readonly)f(file)g +3681 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h +(http_proxy)907 3794 y(environment)e(variable)g(\(see)i(following)e +(note\).)334 3907 y(https://)93 b(-)48 b(a)f(readonly)f(file)g (accessed)g(with)h(the)g(HTTPS)f(protocol.)93 b(This)907 -3358 y(is)47 b(available)e(only)i(if)g(CFITSIO)f(was)h(built)f(with)h -(the)g(libcurl)907 3471 y(library)f(\(see)g(the)h(following)e(note\).) -334 3584 y(ftps://)94 b(-)h(a)47 b(readonly)f(file)g(accessed)g(with)h -(the)g(FTPS)f(protocol.)93 b(This)907 3697 y(is)47 b(available)e(only)i +4020 y(is)47 b(available)e(only)i(if)g(CFITSIO)f(was)h(built)f(with)h +(the)g(libcurl)907 4133 y(library)f(\(see)g(the)h(following)e(note\).) +334 4246 y(ftps://)94 b(-)h(a)47 b(readonly)f(file)g(accessed)g(with)h +(the)g(FTPS)f(protocol.)93 b(This)907 4359 y(is)47 b(available)e(only)i (if)g(CFITSIO)f(was)h(built)f(with)h(the)g(libcurl)907 -3810 y(library.)286 3923 y(stream://)93 b(-)48 b(special)e(driver)g(to) +4472 y(library.)286 4585 y(stream://)93 b(-)48 b(special)e(driver)g(to) h(read)g(an)g(input)f(FITS)h(file)f(from)h(the)g(stdin)907 -4036 y(stream,)f(and/or)g(write)g(an)h(output)f(FITS)h(file)g(to)g(the) -g(stdout)143 4149 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and) -i(has)g(limited)143 4262 y(functionality)d(\(see)j(the)g(following)e -(note\).)286 4375 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h -(computational)c(grid)j(using)f(the)h(gridftp)907 4487 +4698 y(stream,)f(and/or)g(write)g(an)h(output)f(FITS)h(file)g(to)g(the) +g(stdout)143 4811 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and) +i(has)g(limited)143 4924 y(functionality)d(\(see)j(the)g(following)e +(note\).)286 5036 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h +(computational)c(grid)j(using)f(the)h(gridftp)907 5149 y(protocol)e(in)j(the)e(Globus)h(toolkit)e(\(see)i(following)e(note\).) -382 4600 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e -(for)i(writing)f(as)h(well)g(as)907 4713 y(reading)f(files)g(over)h -(the)g(network)e(\(see)i(following)e(note\).)334 4826 +382 5262 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e +(for)i(writing)f(as)h(well)g(as)907 5375 y(reading)f(files)g(over)h +(the)g(network)e(\(see)i(following)e(note\).)334 5488 y(shmem://)93 b(-)48 b(opens)e(or)h(creates)f(a)i(file)e(which)h -(persists)e(in)i(the)g(computer's)907 4939 y(shared)f(memory)g(\(see)h -(following)e(note\).)430 5052 y(mem://)93 b(-)48 b(opens)e(a)i -(temporary)d(file)i(in)g(core)f(memory.)94 b(The)47 b(file)907 -5165 y(disappears)e(when)h(the)h(program)f(exits)h(so)g(this)f(is)i -(mainly)907 5278 y(useful)e(for)h(test)f(purposes)g(when)h(a)g -(permanent)e(output)h(file)907 5391 y(is)h(not)g(desired.)0 -5601 y Fj(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h +(persists)e(in)i(the)g(computer's)907 5601 y(shared)f(memory)g(\(see)h +(following)e(note\).)430 5714 y(mem://)93 b(-)48 b(opens)e(a)i +(temporary)d(file)i(in)g(core)f(memory.)94 b(The)47 b(file)p +eop end +%%Page: 129 137 +TeXDict begin 129 136 bop 0 299 a Fh(10.2.)73 b(FILETYPE)3037 +b Fj(129)907 555 y Fe(disappears)45 b(when)h(the)h(program)f(exits)h +(so)g(this)f(is)i(mainly)907 668 y(useful)e(for)h(test)f(purposes)g +(when)h(a)g(permanent)e(output)h(file)907 781 y(is)h(not)g(desired.)0 +1021 y Fj(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h (then)e(t)m(yp)s(e)h(\014le://)h(is)e(assumed.)56 b(The)35 -b(double)g(slashes)h('//')h(are)f(optional)0 5714 y(and)30 -b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)p eop -end -%%Page: 127 135 -TeXDict begin 127 134 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.127) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.2.)73 -b(FILETYPE)3037 b Fj(127)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 -a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.2.1) cvn /DEST pdfmark -end - 0 464 a 91 x Fd(10.2.1)113 b(Notes)36 b(ab)s(out)j(HTTP)d -(pro)m(xy)i(serv)m(ers)0 805 y Fj(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h -(ma)m(y)h(b)s(e)e(used)g(b)m(y)h(de\014ning)f(the)h(address)f(\(URL\))i -(and)e(p)s(ort)g(n)m(um)m(b)s(er)g(of)h(the)g(pro)m(xy)0 -918 y(serv)m(er)f(with)f(the)g(h)m(ttp)p 801 918 28 4 -v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5 b(ariable.)42 -b(F)-8 b(or)31 b(example)191 1311 y Fe(setenv)46 b(http_proxy)f -(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)0 1703 y -Fj(will)38 b(cause)g(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i(on)f(the)g -(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)g(a)g(FITS)f -(\014le)0 1816 y(with)30 b(HTTP)-8 b(.)0 2100 y -SDict begin H.S end - 0 2100 -a 0 2100 a -SDict begin 13.6 H.A end - 0 2100 a 0 2100 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.2.2) cvn /DEST pdfmark -end - 0 2100 a 163 x Fd(10.2.2)113 -b(Notes)36 b(ab)s(out)j(HTTPS)d(and)j(FTPS)e(\014le)h(access)0 -2513 y Fj(CFITSIO)33 b(dep)s(ends)g(up)s(on)g(the)h(a)m(v)-5 +b(double)g(slashes)h('//')h(are)f(optional)0 1134 y(and)30 +b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)0 1421 +y Fd(10.2.1)113 b(Notes)36 b(ab)s(out)j(HTTP)d(pro)m(xy)i(serv)m(ers)0 +1640 y Fj(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e(used)g +(b)m(y)h(de\014ning)f(the)h(address)f(\(URL\))i(and)e(p)s(ort)g(n)m(um) +m(b)s(er)g(of)h(the)g(pro)m(xy)0 1753 y(serv)m(er)f(with)f(the)g(h)m +(ttp)p 801 1753 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5 +b(ariable.)42 b(F)-8 b(or)31 b(example)191 1993 y Fe(setenv)46 +b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)0 +2233 y Fj(will)38 b(cause)g(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i(on)f +(the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)g(a)g +(FITS)f(\014le)0 2346 y(with)30 b(HTTP)-8 b(.)0 2633 +y Fd(10.2.2)113 b(Notes)36 b(ab)s(out)j(HTTPS)d(and)j(FTPS)e(\014le)h +(access)0 2852 y Fj(CFITSIO)33 b(dep)s(ends)g(up)s(on)g(the)h(a)m(v)-5 b(ailabilit)m(y)38 b(of)d(the)g(lib)s(curl)e(library)i(in)f(order)g(to) -h(p)s(erform)e(HTTPS/FTPS)0 2626 y(\014le)d(access.)42 +h(p)s(erform)e(HTTPS/FTPS)0 2965 y(\014le)d(access.)42 b(\(This)29 b(should)g(b)s(e)g(the)h(dev)m(elopmen)m(t)h(v)m(ersion)f (of)g(the)g(library)-8 b(,)31 b(as)f(it)g(con)m(tains)h(the)f(curl.h)f -(header)0 2739 y(\014le)g(required)g(b)m(y)g(the)g(CFITSIO)f(co)s +(header)0 3078 y(\014le)g(required)g(b)m(y)g(the)g(CFITSIO)f(co)s (de.\))40 b(The)29 b(CFITSIO)f('con\014gure')h(script)g(will)h(searc)m -(h)f(for)g(this)g(library)g(on)0 2852 y(y)m(our)h(system,)h(and)f(if)g +(h)f(for)g(this)g(library)g(on)0 3191 y(y)m(our)h(system,)h(and)f(if)g (it)h(\014nds)e(it)i(it)g(will)f(automatically)k(b)s(e)29 -b(incorp)s(orated)i(in)m(to)g(the)g(build.)0 3012 y(Note)43 +b(incorp)s(orated)i(in)m(to)g(the)g(build.)0 3351 y(Note)43 b(that)g(if)f(y)m(ou)g(ha)m(v)m(e)i(this)e(library)f(pac)m(k)-5 b(age)44 b(on)e(y)m(our)g(system,)k(y)m(ou)c(will)h(also)g(ha)m(v)m(e)g -(the)f('curl-con\014g')0 3125 y(executable.)i(Y)-8 b(ou)31 +(the)f('curl-con\014g')0 3464 y(executable.)i(Y)-8 b(ou)31 b(can)h(run)d(the)i('curl-con\014g')h(executable)g(with)f(v)-5 b(arious)31 b(options)g(to)h(learn)f(more)g(ab)s(out)g(the)0 -3238 y(features)g(of)f(y)m(our)h(lib)s(curl)e(installation.)0 -3398 y(If)20 b(the)g(CFITSIO)f('con\014gure')i(succeeded)f(in)g +3577 y(features)g(of)f(y)m(our)h(lib)s(curl)e(installation.)0 +3737 y(If)20 b(the)g(CFITSIO)f('con\014gure')i(succeeded)f(in)g (\014nding)f(a)i(usable)f(lib)s(curl,)i(y)m(ou)e(will)h(see)g(the)f -(\015ag)h('-DCFITSIO)p 3766 3398 28 4 v 32 w(HA)-10 b(VE)p -4054 3398 V 33 w(CURL=1')0 3511 y(in)34 b(the)g(CFITSIO)f(Mak)m +(\015ag)h('-DCFITSIO)p 3766 3737 V 32 w(HA)-10 b(VE)p +4054 3737 V 33 w(CURL=1')0 3850 y(in)34 b(the)g(CFITSIO)f(Mak)m (e\014le)j(and)e(in)f(the)i(compilation)h(output.)52 b(If)33 b('con\014gure')i(is)f(unable)g(to)h(\014nd)d(a)j(usable)0 -3624 y(lib)s(curl,)30 b(CFITSIO)f(will)h(still)i(build)d(but)h(it)h(w)m +3963 y(lib)s(curl,)30 b(CFITSIO)f(will)h(still)i(build)d(but)h(it)h(w)m (on't)g(ha)m(v)m(e)g(HTTPS/FTPS)e(capabilit)m(y)-8 b(.)0 -3784 y(The)32 b(lib)s(curl)g(pac)m(k)-5 b(age)34 b(is)f(normally)g +4123 y(The)32 b(lib)s(curl)g(pac)m(k)-5 b(age)34 b(is)f(normally)g (included)e(as)i(part)g(of)f(Xco)s(de)h(on)g(Macs.)48 -b(Ho)m(w)m(ev)m(er)35 b(on)d(Lin)m(ux)g(platforms)0 3897 +b(Ho)m(w)m(ev)m(er)35 b(on)d(Lin)m(ux)g(platforms)0 4236 y(y)m(ou)f(ma)m(y)g(need)f(to)h(man)m(ually)h(install)f(it.)42 b(This)29 b(can)i(b)s(e)f(easily)i(done)e(on)g(Ubun)m(tu)g(Lin)m(ux)g -(using)g(the)h('apt)g(get')0 4010 y(command)f(to)h(retriev)m(e)h(the)f +(using)g(the)h('apt)g(get')0 4349 y(command)f(to)h(retriev)m(e)h(the)f (lib)s(curl4-op)s(enssl-dev)f(or)g(the)g(lib)s(curl4-gn)m(utls-dev)h -(pac)m(k)-5 b(ages.)0 4170 y(When)27 b(accessing)h(a)f(\014le)g(with)g +(pac)m(k)-5 b(ages.)0 4509 y(When)27 b(accessing)h(a)f(\014le)g(with)g (HTTPS)e(or)i(FTPS,)f(the)h(default)g(CFITSIO)f(b)s(eha)m(vior)h(is)f -(to)i(attempt)g(to)g(v)m(erify)0 4283 y(b)s(oth)f(the)g(host)g(name)h +(to)i(attempt)g(to)g(v)m(erify)0 4622 y(b)s(oth)f(the)g(host)g(name)h (and)e(the)i(SSL)e(certi\014cate.)42 b(If)27 b(it)g(cannot,)i(it)f (will)g(still)g(p)s(erform)e(the)h(\014le)g(access)i(but)e(will)0 -4396 y(issue)j(a)h(w)m(arning)f(to)h(the)g(terminal)g(windo)m(w.)0 -4556 y(The)36 b(user)f(can)i(o)m(v)m(erride)g(this)f(b)s(eha)m(vior)h +4735 y(issue)j(a)h(w)m(arning)f(to)h(the)g(terminal)g(windo)m(w.)0 +4895 y(The)36 b(user)f(can)i(o)m(v)m(erride)g(this)f(b)s(eha)m(vior)h (to)g(force)f(CFITSIO)f(to)i(only)f(allo)m(w)i(\014le)f(transfers)e -(when)g(the)i(host)0 4669 y(name)47 b(and)e(SSL)h(certi\014cate)i(ha)m +(when)g(the)i(host)0 5008 y(name)47 b(and)e(SSL)h(certi\014cate)i(ha)m (v)m(e)g(b)s(een)e(successfully)g(v)m(eri\014ed.)89 b(This)46 -b(is)g(done)h(b)m(y)f(setting)i(the)e(CFIT-)0 4782 y(SIO)p -160 4782 V 32 w(VERIFY)p 549 4782 V 33 w(HTTPS)29 b(en)m(vironmen)m(t)i +b(is)g(done)h(b)m(y)f(setting)i(the)e(CFIT-)0 5121 y(SIO)p +160 5121 V 32 w(VERIFY)p 549 5121 V 33 w(HTTPS)29 b(en)m(vironmen)m(t)i (v)-5 b(ariable)31 b(to)g('T)-8 b(rue'.)41 b(ie.)g(in)30 -b(a)h(csh)f(shell:)0 4942 y(seten)m(v)h(CFITSIO)p 662 -4942 V 32 w(VERIFY)p 1051 4942 V 33 w(HTTPS)e(T)-8 b(rue)0 -5102 y(the)31 b(default)f(setting)i(for)e(this)g(is)g('F)-8 -b(alse'.)0 5262 y(CFITSIO)19 b(has)h(3)g(functions)g(whic)m(h)g(apply)g +b(a)h(csh)f(shell:)0 5281 y(seten)m(v)h(CFITSIO)p 662 +5281 V 32 w(VERIFY)p 1051 5281 V 33 w(HTTPS)e(T)-8 b(rue)0 +5441 y(the)31 b(default)f(setting)i(for)e(this)g(is)g('F)-8 +b(alse'.)0 5601 y(CFITSIO)19 b(has)h(3)g(functions)g(whic)m(h)g(apply)g (sp)s(eci\014cally)h(to)g(HTTPS/FTPS)e(access:)37 b(\014ts)p -3079 5262 V 32 w(init)p 3247 5262 V 34 w(h)m(ttps,)22 -b(\014ts)p 3655 5262 V 33 w(clean)m(up)p 3988 5262 V -33 w(h)m(ttps,)0 5375 y(and)37 b(\014ts)p 311 5375 V -33 w(v)m(erb)s(ose)p 640 5375 V 32 w(h)m(ttps.)63 b(It)38 +3079 5601 V 32 w(init)p 3247 5601 V 34 w(h)m(ttps,)22 +b(\014ts)p 3655 5601 V 33 w(clean)m(up)p 3988 5601 V +33 w(h)m(ttps,)0 5714 y(and)37 b(\014ts)p 311 5714 V +33 w(v)m(erb)s(ose)p 640 5714 V 32 w(h)m(ttps.)63 b(It)38 b(is)f(recommended)h(that)g(y)m(ou)g(call)h(the)f(init)g(and)f(clean)m -(up)h(functions)f(near)h(the)0 5488 y(b)s(eginning)k(and)g(end)g(of)h -(y)m(our)g(program)f(resp)s(ectiv)m(ely)-8 b(.)80 b(F)-8 -b(or)44 b(more)e(information)h(ab)s(out)g(these)g(functions,)0 -5601 y(please)30 b(see)f(the)g('FITS)f(File)i(Access)g(Routines')g -(section)f(in)g(the)g(preceding)g(c)m(hapter)g(\('Sp)s(ecialized)h -(CFITSIO)0 5714 y(In)m(terface)i(Routines'\).)p eop end -%%Page: 128 136 -TeXDict begin 128 135 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.128) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(128)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.2.3) cvn /DEST pdfmark -end - 0 464 a -91 x Fd(10.2.3)113 b(Notes)36 b(ab)s(out)j(the)e(stream)h(\014let)m(yp) -s(e)g(driv)m(er)0 774 y Fj(The)e(stream)h(driv)m(er)f(can)h(b)s(e)f -(used)g(to)h(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h(from)f(the)h -(stdin)f(\014le)g(stream)h(or)g(write)0 887 y(a)44 b(FITS)e(to)i(the)g +(up)h(functions)f(near)h(the)p eop end +%%Page: 130 138 +TeXDict begin 130 137 bop 0 299 a Fj(130)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(b)s(eginning)42 b(and)g(end)g(of)h(y)m(our)g(program)f(resp)s +(ectiv)m(ely)-8 b(.)80 b(F)-8 b(or)44 b(more)e(information)h(ab)s(out)g +(these)g(functions,)0 668 y(please)30 b(see)f(the)g('FITS)f(File)i +(Access)g(Routines')g(section)f(in)g(the)g(preceding)g(c)m(hapter)g +(\('Sp)s(ecialized)h(CFITSIO)0 781 y(In)m(terface)i(Routines'\).)0 +1085 y Fd(10.2.3)113 b(Notes)36 b(ab)s(out)j(the)e(stream)h(\014let)m +(yp)s(e)g(driv)m(er)0 1306 y Fj(The)e(stream)h(driv)m(er)f(can)h(b)s(e) +f(used)g(to)h(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h(from)f(the)h +(stdin)f(\014le)g(stream)h(or)g(write)0 1419 y(a)44 b(FITS)e(to)i(the)g (stdout)f(\014le)g(stream.)80 b(Ho)m(w)m(ev)m(er,)49 b(b)s(ecause)43 b(these)h(input)e(and)h(output)g(streams)g(m)m(ust)h(b) -s(e)0 1000 y(accessed)30 b(sequen)m(tially)-8 b(,)31 +s(e)0 1532 y(accessed)30 b(sequen)m(tially)-8 b(,)31 b(the)e(FITS)f(\014le)g(reading)h(or)f(writing)h(application)h(m)m(ust) -e(also)i(read)e(and)g(write)h(the)g(\014le)0 1113 y(sequen)m(tially)-8 +e(also)i(read)e(and)g(write)h(the)g(\014le)0 1645 y(sequen)m(tially)-8 b(,)33 b(at)e(least)g(within)f(the)h(tolerances)h(describ)s(ed)d(b)s -(elo)m(w.)0 1273 y(CFITSIO)34 b(supp)s(orts)f(2)j(di\013eren)m(t)f +(elo)m(w.)0 1805 y(CFITSIO)34 b(supp)s(orts)f(2)j(di\013eren)m(t)f (metho)s(ds)g(for)g(accessing)i(FITS)d(\014les)h(on)h(the)f(stdin)g -(and)f(stdout)h(streams.)0 1386 y(The)c(original)i(metho)s(d,)f(whic)m +(and)f(stdout)h(streams.)0 1918 y(The)c(original)i(metho)s(d,)f(whic)m (h)f(is)h(in)m(v)m(ok)m(ed)h(b)m(y)f(sp)s(ecifying)f(a)h(dash)f(c)m (haracter,)j("-",)g(as)d(the)h(name)g(of)g(the)g(\014le)0 -1499 y(when)g(op)s(ening)g(or)h(creating)h(it,)g(w)m(orks)e(b)m(y)h +2031 y(when)g(op)s(ening)g(or)h(creating)h(it,)g(w)m(orks)e(b)m(y)h (storing)g(a)g(complete)h(cop)m(y)g(of)f(the)g(en)m(tire)g(FITS)f -(\014le)h(in)f(memory)-8 b(.)0 1612 y(In)35 b(this)g(case,)k(when)34 +(\014le)h(in)f(memory)-8 b(.)0 2144 y(In)35 b(this)g(case,)k(when)34 b(reading)i(from)f(stdin,)i(CFITSIO)d(will)i(cop)m(y)h(the)e(en)m(tire) -i(stream)f(in)m(to)h(memory)e(b)s(efore)0 1725 y(doing)c(an)m(y)h(pro)s +i(stream)f(in)m(to)h(memory)e(b)s(efore)0 2257 y(doing)c(an)m(y)h(pro)s (cessing)f(of)h(the)f(\014le.)44 b(Similarly)-8 b(,)32 b(when)f(writing)g(to)h(stdout,)g(CFITSIO)d(will)j(create)h(a)f(cop)m -(y)g(of)0 1837 y(the)h(en)m(tire)g(FITS)f(\014le)g(in)h(memory)-8 +(y)g(of)0 2370 y(the)h(en)m(tire)g(FITS)f(\014le)g(in)h(memory)-8 b(,)33 b(b)s(efore)f(\014nally)h(\015ushing)e(it)i(out)f(to)i(the)e -(stdout)h(stream)g(when)e(the)i(FITS)0 1950 y(\014le)g(is)g(closed.)49 +(stdout)h(stream)g(when)e(the)i(FITS)0 2483 y(\014le)g(is)g(closed.)49 b(Bu\013ering)33 b(the)g(en)m(tire)h(FITS)e(\014le)h(in)g(this)f(w)m(a) m(y)i(allo)m(ws)g(the)f(application)i(to)e(randomly)g(access)0 -2063 y(an)m(y)h(part)f(of)h(the)f(FITS)g(\014le,)i(in)e(an)m(y)h +2596 y(an)m(y)h(part)f(of)h(the)f(FITS)g(\014le,)i(in)e(an)m(y)h (order,)f(but)g(it)h(also)h(requires)e(that)h(the)f(user)g(ha)m(v)m(e)i -(su\016cien)m(t)f(a)m(v)-5 b(ailable)0 2176 y(memory)30 +(su\016cien)m(t)f(a)m(v)-5 b(ailable)0 2708 y(memory)30 b(\(or)g(virtual)g(memory\))g(to)h(store)f(the)g(en)m(tire)h(\014le,)f (whic)m(h)f(ma)m(y)i(not)f(b)s(e)f(p)s(ossible)g(in)h(the)g(case)h(of)f -(v)m(ery)0 2289 y(large)h(\014les.)0 2449 y(The)e(new)m(er)g(stream)h +(v)m(ery)0 2821 y(large)h(\014les.)0 2981 y(The)e(new)m(er)g(stream)h (\014let)m(yp)s(e)g(pro)m(vides)f(a)h(more)f(memory-e\016cien)m(t)i (metho)s(d)e(of)h(accessing)h(FITS)d(\014les)h(on)h(the)0 -2562 y(stdin)37 b(or)h(stdout)g(streams.)64 b(Instead)38 +3094 y(stdin)37 b(or)h(stdout)g(streams.)64 b(Instead)38 b(of)g(storing)g(a)g(cop)m(y)h(of)f(the)g(en)m(tire)h(FITS)e(\014le)h -(in)g(memory)-8 b(,)40 b(CFITSIO)0 2675 y(only)32 b(uses)g(a)g(set)h +(in)g(memory)-8 b(,)40 b(CFITSIO)0 3207 y(only)32 b(uses)g(a)g(set)h (of)f(in)m(ternal)h(bu\013er)e(whic)m(h)h(b)m(y)g(default)g(can)g (store)h(40)g(FITS)e(blo)s(c)m(ks,)i(or)g(ab)s(out)e(100K)i(b)m(ytes)0 -2788 y(of)f(the)f(FITS)g(\014le.)43 b(The)31 b(application)i(program)e +3320 y(of)f(the)f(FITS)g(\014le.)43 b(The)31 b(application)i(program)e (m)m(ust)g(pro)s(cess)g(the)h(FITS)e(\014le)i(sequen)m(tially)h(from)e -(b)s(eginning)0 2901 y(to)h(end,)e(within)g(this)h(100K)h(bu\013er.)41 +(b)s(eginning)0 3433 y(to)h(end,)e(within)g(this)h(100K)h(bu\013er.)41 b(Generally)32 b(sp)s(eaking)f(the)g(application)h(program)f(m)m(ust)f -(conform)h(to)h(the)0 3014 y(follo)m(wing)g(restrictions:)136 -3265 y Fc(\017)46 b Fj(The)36 b(program)f(m)m(ust)h(\014nish)e(reading) +(conform)h(to)h(the)0 3546 y(follo)m(wing)g(restrictions:)136 +3817 y Fc(\017)46 b Fj(The)36 b(program)f(m)m(ust)h(\014nish)e(reading) i(or)g(writing)f(the)h(header)g(k)m(eyw)m(ords)g(b)s(efore)f(reading)h -(or)g(writing)227 3378 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136 -3563 y Fc(\017)46 b Fj(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h +(or)g(writing)227 3930 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136 +4129 y Fc(\017)46 b Fj(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h (ab)s(out)f(1400)h(header)f(k)m(eyw)m(ords.)39 b(This)24 -b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 3676 +b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 4241 y(in)g(the)g(nominal)h(40)g(FITS)e(blo)s(c)m(k)i(bu\013er.)37 b(In)24 b(principle,)h(this)f(limit)h(could)f(b)s(e)g(increased)g(b)m -(y)g(recompiling)227 3789 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e +(y)g(recompiling)227 4354 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e (limit,)j(whic)m(h)e(is)g(set)h(b)m(y)f(the)h(NIOBUF)g(parameter)g(in)f -(\014tsio2.h.)136 3974 y Fc(\017)46 b Fj(The)32 b(program)g(m)m(ust)f +(\014tsio2.h.)136 4553 y Fc(\017)46 b Fj(The)32 b(program)g(m)m(ust)f (read)h(or)g(write)h(the)f(data)g(in)g(a)g(sequen)m(tial)i(manner)d -(from)h(the)g(b)s(eginning)f(to)i(the)227 4087 y(end)26 +(from)h(the)g(b)s(eginning)f(to)i(the)227 4666 y(end)26 b(of)g(the)h(HDU.)g(Note)h(that)f(CFITSIO's)e(in)m(ternal)i(100K)g (bu\013er)e(allo)m(ws)j(a)e(little)j(latitude)e(in)f(meeting)227 -4199 y(this)31 b(requiremen)m(t.)136 4384 y Fc(\017)46 +4779 y(this)31 b(requiremen)m(t.)136 4978 y Fc(\017)46 b Fj(The)30 b(program)g(cannot)h(mo)m(v)m(e)h(bac)m(k)f(to)g(a)g -(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 4569 +(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 5176 y Fc(\017)46 b Fj(Reading)c(or)f(writing)f(of)h(v)-5 b(ariable)42 b(length)f(arra)m(y)h(columns)e(in)h(binary)f(tables)i(is) -f(not)g(supp)s(orted)e(on)227 4682 y(streams,)29 b(b)s(ecause)f(this)g +f(not)g(supp)s(orted)e(on)227 5289 y(streams,)29 b(b)s(ecause)f(this)g (requires)g(mo)m(ving)g(bac)m(k)h(and)f(forth)f(b)s(et)m(w)m(een)i(the) -f(\014xed-length)g(p)s(ortion)g(of)g(the)227 4795 y(binary)i(table)h +f(\014xed-length)g(p)s(ortion)g(of)g(the)227 5402 y(binary)i(table)h (and)f(the)g(follo)m(wing)i(heap)e(area)i(where)e(the)g(arra)m(ys)h -(are)g(actually)h(stored.)136 4980 y Fc(\017)46 b Fj(Reading)25 +(are)g(actually)h(stored.)136 5601 y Fc(\017)46 b Fj(Reading)25 b(or)g(writing)f(of)h(tile-compressed)h(images)g(is)e(not)h(supp)s (orted)e(on)h(streams,)i(b)s(ecause)f(the)g(images)227 -5093 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5 -b(ariable)31 b(length)g(arra)m(ys.)0 5236 y -SDict begin H.S end - 0 5236 a -0 5236 a -SDict begin 13.6 H.A end - 0 5236 a 0 5236 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.2.4) cvn /DEST pdfmark -end - 0 5236 a 146 x Fd(10.2.4)113 -b(Notes)36 b(ab)s(out)j(the)e(gsiftp)h(\014let)m(yp)s(e)0 -5601 y Fj(DEPENDENCIES:)c(Globus)h(to)s(olkit)h(\(2.4.3)g(or)f -(higher\))f(\(GT\))h(should)f(b)s(e)g(installed.)53 b(There)34 -b(are)h(t)m(w)m(o)h(dif-)0 5714 y(feren)m(t)31 b(w)m(a)m(ys)g(to)g -(install)g(GT:)p eop end -%%Page: 129 137 -TeXDict begin 129 136 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.129) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.2.)73 -b(FILETYPE)3037 b Fj(129)0 555 y(1\))43 b(goto)h(the)f(globus)f(to)s -(olkit)i(w)m(eb)e(page)i(www.globus.org)e(and)g(follo)m(w)h(the)g(do)m -(wnload)g(and)e(compilation)0 668 y(instructions;)0 828 -y(2\))j(goto)i(the)d(Virtual)i(Data)g(T)-8 b(o)s(olkit)45 +5714 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5 +b(ariable)31 b(length)g(arra)m(ys.)p eop end +%%Page: 131 139 +TeXDict begin 131 138 bop 0 299 a Fh(10.2.)73 b(FILETYPE)3037 +b Fj(131)0 555 y Fd(10.2.4)113 b(Notes)36 b(ab)s(out)j(the)e(gsiftp)h +(\014let)m(yp)s(e)0 774 y Fj(DEPENDENCIES:)c(Globus)h(to)s(olkit)h +(\(2.4.3)g(or)f(higher\))f(\(GT\))h(should)f(b)s(e)g(installed.)53 +b(There)34 b(are)h(t)m(w)m(o)h(dif-)0 887 y(feren)m(t)31 +b(w)m(a)m(ys)g(to)g(install)g(GT:)0 1047 y(1\))43 b(goto)h(the)f +(globus)f(to)s(olkit)i(w)m(eb)e(page)i(www.globus.org)e(and)g(follo)m +(w)h(the)g(do)m(wnload)g(and)e(compilation)0 1160 y(instructions;)0 +1320 y(2\))j(goto)i(the)d(Virtual)i(Data)g(T)-8 b(o)s(olkit)45 b(w)m(eb)e(page)i(h)m(ttp://vdt.cs.wisc.edu/)g(and)e(follo)m(w)i(the)f -(instructions)0 941 y(\(STR)m(ONGL)-8 b(Y)31 b(SUGGESTED\);)0 -1101 y(Once)23 b(a)h(globus)f(clien)m(t)h(has)f(b)s(een)g(installed)h +(instructions)0 1433 y(\(STR)m(ONGL)-8 b(Y)31 b(SUGGESTED\);)0 +1593 y(Once)23 b(a)h(globus)f(clien)m(t)h(has)f(b)s(een)g(installed)h (in)e(y)m(our)i(system)f(with)g(a)g(sp)s(eci\014c)g(\015a)m(v)m(our)h -(it)f(is)g(p)s(ossible)g(to)h(compile)0 1214 y(and)30 +(it)f(is)g(p)s(ossible)g(to)h(compile)0 1706 y(and)30 b(install)h(the)g(CFITSIO)d(libraries.)41 b(Sp)s(eci\014c)30 b(con\014guration)h(\015ags)f(m)m(ust)h(b)s(e)e(used:)0 -1374 y(1\))21 b({with-gsiftp[[=P)-8 b(A)g(TH]])22 b(Enable)f(Globus)f +1866 y(1\))21 b({with-gsiftp[[=P)-8 b(A)g(TH]])22 b(Enable)f(Globus)f (T)-8 b(o)s(olkit)21 b(gsiftp)g(proto)s(col)g(supp)s(ort)d(P)-8 -b(A)g(TH=GLOBUS)p 3532 1374 28 4 v 33 w(LOCA)g(TION)0 -1487 y(i.e.)42 b(the)30 b(lo)s(cation)i(of)f(y)m(our)f(globus)g -(installation)0 1647 y(2\))h({with-gsiftp-\015a)m(v)m(our[[=P)-8 +b(A)g(TH=GLOBUS)p 3532 1866 28 4 v 33 w(LOCA)g(TION)0 +1979 y(i.e.)42 b(the)30 b(lo)s(cation)i(of)f(y)m(our)f(globus)g +(installation)0 2139 y(2\))h({with-gsiftp-\015a)m(v)m(our[[=P)-8 b(A)g(TH])33 b(de\014nes)d(the)g(sp)s(eci\014c)g(Globus)h(\015a)m(v)m -(our)f(ex.)41 b(gcc32)0 1808 y(Both)31 b(the)g(\015ags)f(m)m(ust)g(b)s +(our)f(ex.)41 b(gcc32)0 2300 y(Both)31 b(the)g(\015ags)f(m)m(ust)g(b)s (e)g(used)g(and)f(it)i(is)g(mandatory)f(to)h(set)g(b)s(oth)f(the)g(P)-8 -b(A)g(TH)31 b(and)f(the)h(\015a)m(v)m(our.)0 1968 y(USA)m(GE:)g(T)-8 +b(A)g(TH)31 b(and)f(the)h(\015a)m(v)m(our.)0 2460 y(USA)m(GE:)g(T)-8 b(o)31 b(access)h(\014les)e(on)g(a)h(gridftp)f(serv)m(er)g(it)h(is)g -(necessary)f(to)i(use)e(a)g(gsiftp)h(pre\014x:)0 2128 -y(example:)41 b(gsiftp://remote)p 1003 2128 V 35 w(serv)m(er)p -1271 2128 V 34 w(fqhn/directory/\014lename)0 2288 y(The)f(gridftp)g +(necessary)f(to)i(use)e(a)g(gsiftp)h(pre\014x:)0 2620 +y(example:)41 b(gsiftp://remote)p 1003 2620 V 35 w(serv)m(er)p +1271 2620 V 34 w(fqhn/directory/\014lename)0 2780 y(The)f(gridftp)g (driv)m(er)g(uses)g(a)g(lo)s(cal)i(bu\013er)d(on)i(a)f(temp)s(orary)g (\014le)h(the)f(\014le)h(is)f(lo)s(cated)i(in)e(the)g(/tmp)h(direc-)0 -2401 y(tory)-8 b(.)73 b(If)40 b(y)m(ou)h(ha)m(v)m(e)h(sp)s(ecial)g(p)s +2893 y(tory)-8 b(.)73 b(If)40 b(y)m(ou)h(ha)m(v)m(e)h(sp)s(ecial)g(p)s (ermissions)d(on)i(/tmp)g(or)g(y)m(ou)g(do)f(not)i(ha)m(v)m(e)g(a)f -(/tmp)g(directory)-8 b(,)44 b(it)e(is)e(p)s(os-)0 2514 +(/tmp)g(directory)-8 b(,)44 b(it)e(is)e(p)s(os-)0 3006 y(sible)d(to)h(force)g(another)g(lo)s(cation)g(setting)h(the)e(GSIFTP)p -2068 2514 V 32 w(TMPFILE)g(en)m(vironmen)m(t)h(v)-5 b(ariable)38 -b(\(ex.)62 b(exp)s(ort)0 2627 y(GSIFTP)p 347 2627 V 32 +2068 3006 V 32 w(TMPFILE)g(en)m(vironmen)m(t)h(v)-5 b(ariable)38 +b(\(ex.)62 b(exp)s(ort)0 3119 y(GSIFTP)p 347 3119 V 32 w(TMPFILE=/y)m(our/lo)s(cation/y)m(ourtmp\014le\).)0 -2787 y(Grid)34 b(FTP)g(supp)s(orts)f(m)m(ulti)h(c)m(hannel)h(transfer.) +3279 y(Grid)34 b(FTP)g(supp)s(orts)f(m)m(ulti)h(c)m(hannel)h(transfer.) 52 b(By)35 b(default)f(a)h(single)g(c)m(hannel)g(transmission)f(is)g(a) -m(v)-5 b(ailable.)0 2900 y(Ho)m(w)m(ev)m(er,)34 b(it)d(is)h(p)s +m(v)-5 b(ailable.)0 3392 y(Ho)m(w)m(ev)m(er,)34 b(it)d(is)h(p)s (ossible)e(to)i(mo)s(dify)e(this)i(b)s(eha)m(vior)f(setting)h(the)f -(GSIFTP)p 2691 2900 V 33 w(STREAMS)f(en)m(vironmen)m(t)h(v)-5 -b(ari-)0 3013 y(able)31 b(\(ex.)41 b(exp)s(ort)30 b(GSIFTP)p -1016 3013 V 33 w(STREAMS=8\).)0 3182 y -SDict begin H.S end - 0 3182 a 0 3182 -a -SDict begin 13.6 H.A end - 0 3182 a 0 3182 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.2.5) cvn /DEST pdfmark -end - 0 3182 a 140 x Fd(10.2.5)113 b(Notes)36 -b(ab)s(out)j(the)e(ro)s(ot)g(\014let)m(yp)s(e)0 3545 -y Fj(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e(obtained) -h(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o(gz)15 -b Fj(but,)22 b(for)0 3658 y(it)33 b(to)h(w)m(ork)f(correctly)h(with)e -(CFITSIO)g(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)d(v)m(ersion)j -(whic)m(h)e(supp)s(orts)f(a)i(command)0 3771 y(to)41 -b(return)d(the)j(length)f(of)g(the)g(\014le.)70 b(This)39 -b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 b(ailable)42 -b(in)e(ro)s(otd)f(sub)s(directory)g(in)h(the)0 3884 y(CFITSIO)29 -b(ftp)h(area)h(at)286 4159 y Fe(ftp://legacy.gsfc.nasa.gov)o(/so)o -(ftwa)o(re/f)o(its)o(io/c)o(/roo)o(t/r)o(ootd)o(.tar)o(.gz)o(.)0 -4435 y Fj(This)j(small)g(serv)m(er)h(is)g(started)f(either)h(b)m(y)g -(inetd)f(when)f(a)i(clien)m(t)h(requests)e(a)h(connection)h(to)f(a)f -(ro)s(otd)h(serv)m(er)0 4548 y(or)30 b(b)m(y)g(hand)f(\(i.e.)42 -b(from)30 b(the)g(command)g(line\).)42 b(The)29 b(ro)s(otd)h(serv)m(er) -h(w)m(orks)f(with)g(the)g(R)m(OOT)g(TNetFile)i(class.)0 -4661 y(It)e(allo)m(ws)g(remote)h(access)f(to)h(R)m(OOT)e(database)h -(\014les)f(in)g(either)h(read)g(or)f(write)h(mo)s(de.)40 -b(By)30 b(default)f(TNetFile)0 4774 y(assumes)38 b(p)s(ort)g(432)h +(GSIFTP)p 2691 3392 V 33 w(STREAMS)f(en)m(vironmen)m(t)h(v)-5 +b(ari-)0 3505 y(able)31 b(\(ex.)41 b(exp)s(ort)30 b(GSIFTP)p +1016 3505 V 33 w(STREAMS=8\).)0 3790 y Fd(10.2.5)113 +b(Notes)36 b(ab)s(out)j(the)e(ro)s(ot)g(\014let)m(yp)s(e)0 +4009 y Fj(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e +(obtained)h(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o +(gz)15 b Fj(but,)22 b(for)0 4122 y(it)33 b(to)h(w)m(ork)f(correctly)h +(with)e(CFITSIO)g(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)d(v)m +(ersion)j(whic)m(h)e(supp)s(orts)f(a)i(command)0 4235 +y(to)41 b(return)d(the)j(length)f(of)g(the)g(\014le.)70 +b(This)39 b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 +b(ailable)42 b(in)e(ro)s(otd)f(sub)s(directory)g(in)h(the)0 +4348 y(CFITSIO)29 b(ftp)h(area)h(at)286 4577 y Fe +(ftp://legacy.gsfc.nasa.gov)o(/so)o(ftwa)o(re/f)o(its)o(io/c)o(/roo)o +(t/r)o(ootd)o(.tar)o(.gz)o(.)0 4805 y Fj(This)j(small)g(serv)m(er)h(is) +g(started)f(either)h(b)m(y)g(inetd)f(when)f(a)i(clien)m(t)h(requests)e +(a)h(connection)h(to)f(a)f(ro)s(otd)h(serv)m(er)0 4918 +y(or)30 b(b)m(y)g(hand)f(\(i.e.)42 b(from)30 b(the)g(command)g(line\).) +42 b(The)29 b(ro)s(otd)h(serv)m(er)h(w)m(orks)f(with)g(the)g(R)m(OOT)g +(TNetFile)i(class.)0 5031 y(It)e(allo)m(ws)g(remote)h(access)f(to)h(R)m +(OOT)e(database)h(\014les)f(in)g(either)h(read)g(or)f(write)h(mo)s(de.) +40 b(By)30 b(default)f(TNetFile)0 5144 y(assumes)38 b(p)s(ort)g(432)h (\(whic)m(h)f(requires)g(ro)s(otd)g(to)h(b)s(e)f(started)h(as)f(ro)s (ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)h(inetd)f(add)g(the)0 -4887 y(follo)m(wing)32 b(line)f(to)g(/etc/services:)95 -5162 y Fe(rootd)238 b(432/tcp)0 5438 y Fj(and)30 b(to)h -(/etc/inetd.conf,)i(add)d(the)g(follo)m(wing)i(line:)95 -5714 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h -(/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)p eop end -%%Page: 130 138 -TeXDict begin 130 137 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.130) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(130)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 555 y Fj(F)g(orce)30 b(inetd)e(to)h(reread)f(its)h(conf)f -(\014le)g(with)g Fe(kill)47 b(-HUP)g()p -Fj(.)39 b(Y)-8 b(ou)28 b(can)h(also)g(start)g(ro)s(otd)f(b)m(y)g(hand)0 -668 y(running)35 b(directly)i(under)d(y)m(our)j(priv)-5 -b(ate)37 b(accoun)m(t)g(\(no)g(ro)s(ot)g(system)f(privileges)h -(needed\).)59 b(F)-8 b(or)37 b(example)g(to)0 781 y(start)e(ro)s(otd)g -(listening)g(on)g(p)s(ort)f(5151)j(just)d(t)m(yp)s(e:)49 -b Fe(rootd)e(-p)g(5151)33 b Fj(Notice)k(that)f(no)e(&)h(is)f(needed.)54 -b(Ro)s(otd)0 894 y(will)31 b(go)g(in)m(to)g(bac)m(kground)f(b)m(y)h -(itself.)95 1139 y Fe(Rootd)47 b(arguments:)191 1252 -y(-i)763 b(says)47 b(we)g(were)f(started)g(by)h(inetd)191 -1365 y(-p)g(port#)476 b(specifies)45 b(a)j(different)d(port)i(to)g -(listen)f(on)191 1478 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h -(written)e(to)j(syslog)1050 1591 y(0)f(=)h(no)f(debug)f(\(default\)) -1050 1704 y(1)h(=)h(minimum)1050 1817 y(2)f(=)h(medium)1050 -1930 y(3)f(=)h(maximum)0 2175 y Fj(Ro)s(otd)29 b(can)f(also)h(b)s(e)f +5257 y(follo)m(wing)32 b(line)f(to)g(/etc/services:)95 +5485 y Fe(rootd)238 b(432/tcp)0 5714 y Fj(and)30 b(to)h +(/etc/inetd.conf,)i(add)d(the)g(follo)m(wing)i(line:)p +eop end +%%Page: 132 140 +TeXDict begin 132 139 bop 0 299 a Fj(132)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)95 +555 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h +(/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 829 y +Fj(F)-8 b(orce)30 b(inetd)e(to)h(reread)f(its)h(conf)f(\014le)g(with)g +Fe(kill)47 b(-HUP)g()p Fj(.)39 b(Y)-8 b(ou)28 +b(can)h(also)g(start)g(ro)s(otd)f(b)m(y)g(hand)0 942 +y(running)35 b(directly)i(under)d(y)m(our)j(priv)-5 b(ate)37 +b(accoun)m(t)g(\(no)g(ro)s(ot)g(system)f(privileges)h(needed\).)59 +b(F)-8 b(or)37 b(example)g(to)0 1054 y(start)e(ro)s(otd)g(listening)g +(on)g(p)s(ort)f(5151)j(just)d(t)m(yp)s(e:)49 b Fe(rootd)e(-p)g(5151)33 +b Fj(Notice)k(that)f(no)e(&)h(is)f(needed.)54 b(Ro)s(otd)0 +1167 y(will)31 b(go)g(in)m(to)g(bac)m(kground)f(b)m(y)h(itself.)95 +1441 y Fe(Rootd)47 b(arguments:)191 1554 y(-i)763 b(says)47 +b(we)g(were)f(started)g(by)h(inetd)191 1667 y(-p)g(port#)476 +b(specifies)45 b(a)j(different)d(port)i(to)g(listen)f(on)191 +1780 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h(written)e(to)j +(syslog)1050 1893 y(0)f(=)h(no)f(debug)f(\(default\))1050 +2005 y(1)h(=)h(minimum)1050 2118 y(2)f(=)h(medium)1050 +2231 y(3)f(=)h(maximum)0 2505 y Fj(Ro)s(otd)29 b(can)f(also)h(b)s(e)f (con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)h(anon)m(ymous)e (ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0 -2288 y(anon)m(ymous)h(logins)h(do)g(the)f(follo)m(wing)i(\(while)f(b)s -(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2533 y Fe(-)48 +2618 y(anon)m(ymous)h(logins)h(do)g(the)f(follo)m(wing)i(\(while)f(b)s +(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2891 y Fe(-)48 b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239 -2759 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o -(fals)o(e)239 2985 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h -(\(71,)g(72\))g(and)g(the)g(home)f(directory)239 3098 -y(to)h(suite)f(your)h(system.)143 3323 y(-)h(Add)f(the)f(following)g -(line)g(to)i(/etc/group:)239 3549 y(rootd:*:72:rootd)239 -3775 y(where)e(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g -(/etc/passwd.)143 4001 y(-)h(Create)e(the)h(directories:)239 -4227 y(mkdir)f(/var/spool/rootd)239 4340 y(mkdir)g -(/var/spool/rootd/tmp)239 4452 y(chmod)g(777)h(/var/spool/rootd/tmp)239 -4678 y(Where)f(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f -(directory)g(as)239 4791 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f -(entry.)143 5017 y(-)j(To)f(make)f(writeable)g(directories)e(for)j -(anonymous)f(do,)h(for)f(example:)239 5243 y(mkdir)g -(/var/spool/rootd/pub)239 5356 y(chown)g(rootd:rootd)f -(/var/spool/rootd/pub)0 5601 y Fj(That's)d(all.)76 b(Sev)m(eral)43 -b(additional)g(remarks:)64 b(y)m(ou)42 b(can)g(login)h(to)g(an)f(anon)m -(ymous)f(serv)m(er)i(either)f(with)g(the)0 5714 y(names)31 -b("anon)m(ymous")h(or)f("ro)s(otd".)43 b(The)31 b(passw)m(ord)f(should) -g(b)s(e)h(of)g(t)m(yp)s(e)g(user@host.do.main.)43 b(Only)30 -b(the)h(@)p eop end -%%Page: 131 139 -TeXDict begin 131 138 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.131) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.3.)73 -b(BASE)30 b(FILENAME)2739 b Fj(131)0 555 y(is)29 b(enforced)f(for)h -(the)f(time)i(b)s(eing.)39 b(In)28 b(anon)m(ymous)h(mo)s(de)f(the)g +3117 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o +(fals)o(e)239 3343 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h +(\(71,)g(72\))g(and)g(the)g(home)f(directory)239 3456 +y(to)h(suite)f(your)h(system.)143 3681 y(-)h(Add)f(the)f(following)g +(line)g(to)i(/etc/group:)239 3907 y(rootd:*:72:rootd)239 +4133 y(where)e(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g +(/etc/passwd.)143 4359 y(-)h(Create)e(the)h(directories:)239 +4585 y(mkdir)f(/var/spool/rootd)239 4698 y(mkdir)g +(/var/spool/rootd/tmp)239 4811 y(chmod)g(777)h(/var/spool/rootd/tmp)239 +5036 y(Where)f(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f +(directory)g(as)239 5149 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f +(entry.)143 5375 y(-)j(To)f(make)f(writeable)g(directories)e(for)j +(anonymous)f(do,)h(for)f(example:)239 5601 y(mkdir)g +(/var/spool/rootd/pub)239 5714 y(chown)g(rootd:rootd)f +(/var/spool/rootd/pub)p eop end +%%Page: 133 141 +TeXDict begin 133 140 bop 0 299 a Fh(10.3.)73 b(BASE)30 +b(FILENAME)2739 b Fj(133)0 555 y(That's)42 b(all.)76 +b(Sev)m(eral)43 b(additional)g(remarks:)64 b(y)m(ou)42 +b(can)g(login)h(to)g(an)f(anon)m(ymous)f(serv)m(er)i(either)f(with)g +(the)0 668 y(names)31 b("anon)m(ymous")h(or)f("ro)s(otd".)43 +b(The)31 b(passw)m(ord)f(should)g(b)s(e)h(of)g(t)m(yp)s(e)g +(user@host.do.main.)43 b(Only)30 b(the)h(@)0 781 y(is)e(enforced)f(for) +h(the)f(time)i(b)s(eing.)39 b(In)28 b(anon)m(ymous)h(mo)s(de)f(the)g (top)h(of)g(the)g(\014le)f(tree)i(is)e(set)h(to)h(the)e(ro)s(otd)h -(home)0 668 y(directory)-8 b(,)39 b(therefore)e(only)f(\014les)h(b)s +(home)0 894 y(directory)-8 b(,)39 b(therefore)e(only)f(\014les)h(b)s (elo)m(w)f(the)h(home)f(directory)h(can)f(b)s(e)g(accessed.)60 -b(Anon)m(ymous)36 b(mo)s(de)g(only)0 781 y(w)m(orks)30 +b(Anon)m(ymous)36 b(mo)s(de)g(only)0 1007 y(w)m(orks)30 b(when)g(the)g(serv)m(er)h(is)f(started)h(via)g(inetd.)0 -938 y -SDict begin H.S end - 0 938 a 0 938 a -SDict begin 13.6 H.A end - 0 938 a 0 938 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.2.6) cvn /DEST pdfmark -end - 0 938 a 164 x Fd(10.2.6)113 -b(Notes)36 b(ab)s(out)j(the)e(shmem)i(\014let)m(yp)s(e:)0 -1327 y Fj(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly)g(supp)s -(orted)e(on)i(most)h(Unix)f(platforms,)h(where)f(the)g(shared)f(memory) -0 1440 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s(erating)h -(system)g(k)m(ernel)f(and)g(`liv)m(e')i(indep)s(enden)m(tly)d(of)i(pro) -s(cesses.)40 b(They)0 1553 y(are)34 b(not)g(deleted)h(\(b)m(y)f -(default\))g(when)f(the)h(pro)s(cess)f(whic)m(h)h(created)h(them)f -(terminates,)h(although)g(they)f(will)0 1665 y(disapp)s(ear)e(if)h(the) +1296 y Fd(10.2.6)113 b(Notes)36 b(ab)s(out)j(the)e(shmem)i(\014let)m +(yp)s(e:)0 1515 y Fj(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly) +g(supp)s(orted)e(on)i(most)h(Unix)f(platforms,)h(where)f(the)g(shared)f +(memory)0 1627 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s +(erating)h(system)g(k)m(ernel)f(and)g(`liv)m(e')i(indep)s(enden)m(tly)d +(of)i(pro)s(cesses.)40 b(They)0 1740 y(are)34 b(not)g(deleted)h(\(b)m +(y)f(default\))g(when)f(the)h(pro)s(cess)f(whic)m(h)h(created)h(them)f +(terminates,)h(although)g(they)f(will)0 1853 y(disapp)s(ear)e(if)h(the) h(system)f(is)g(reb)s(o)s(oted.)49 b(Applications)34 b(can)g(create)h(shared)d(memory)h(\014les)g(in)g(CFITSIO)f(b)m(y)0 -1778 y(calling:)143 2064 y Fe(fit_create_file\(&fitsfile)o(ptr,)41 -b("shmem://h2",)j(&status\);)0 2349 y Fj(where)25 b(the)g(ro)s(ot)h +1966 y(calling:)143 2214 y Fe(fit_create_file\(&fitsfile)o(ptr,)41 +b("shmem://h2",)j(&status\);)0 2462 y Fj(where)25 b(the)g(ro)s(ot)h (`\014le')f(names)h(are)f(curren)m(tly)g(restricted)h(to)g(b)s(e)f ('h0',)i('h1',)g('h2',)g('h3',)f(etc.,)i(up)d(to)g(a)h(maxim)m(um)0 -2462 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5 -b(alue)22 b(of)f(SHARED)p 1746 2462 28 4 v 33 w(MAXSEG)g(\(equal)h(to)f +2575 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5 +b(alue)22 b(of)f(SHARED)p 1746 2575 28 4 v 33 w(MAXSEG)g(\(equal)h(to)f (16)h(b)m(y)f(default\).)38 b(This)20 b(is)h(a)g(protot)m(yp)s(e)0 -2575 y(implemen)m(tation)30 b(of)f(the)g(shared)f(memory)g(in)m +2688 y(implemen)m(tation)30 b(of)f(the)g(shared)f(memory)g(in)m (terface)i(and)e(a)h(more)g(robust)f(in)m(terface,)j(whic)m(h)d(will)h -(ha)m(v)m(e)h(few)m(er)0 2688 y(restrictions)h(on)f(the)h(n)m(um)m(b)s +(ha)m(v)m(e)h(few)m(er)0 2801 y(restrictions)h(on)f(the)h(n)m(um)m(b)s (er)e(of)i(\014les)f(and)g(on)g(their)g(names,)h(ma)m(y)g(b)s(e)f(dev)m -(elop)s(ed)g(in)g(the)h(future.)0 2848 y(When)23 b(op)s(ening)h(an)f +(elop)s(ed)g(in)g(the)h(future.)0 2961 y(When)23 b(op)s(ening)h(an)f (already)h(existing)h(FITS)e(\014le)h(in)f(shared)g(memory)h(one)g -(calls)g(the)g(usual)g(CFITSIO)e(routine:)143 3133 y +(calls)g(the)g(usual)g(CFITSIO)e(routine:)143 3209 y Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j -(&status\))0 3419 y Fj(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m +(&status\))0 3457 y Fj(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m (WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)f(disk)h(\014les.)39 -b(More)28 b(than)e(one)h(pro)s(cess)0 3532 y(can)35 b(op)s(erate)g(on)f +b(More)28 b(than)e(one)h(pro)s(cess)0 3570 y(can)35 b(op)s(erate)g(on)f (READONL)-8 b(Y)35 b(mo)s(de)f(\014les)h(at)g(the)f(same)h(time.)54 b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)i(lo)s(c)m(king)0 -3644 y(\(b)s(oth)27 b(in)h(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo) -s(des\),)h(so)f(calls)h(to)f(\014ts)p 2572 3644 V 33 -w(op)s(en)p 2795 3644 V 32 w(\014le)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed) -j(out)e(un)m(til)0 3757 y(another)j(other)f(pro)s(cess)g(closes)i(the)e -(\014le.)0 3918 y(When)g(an)g(application)i(is)e(\014nished)f +3682 y(\(b)s(oth)27 b(in)h(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo) +s(des\),)h(so)f(calls)h(to)f(\014ts)p 2572 3682 V 33 +w(op)s(en)p 2795 3682 V 32 w(\014le)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed) +j(out)e(un)m(til)0 3795 y(another)j(other)f(pro)s(cess)g(closes)i(the)e +(\014le.)0 3956 y(When)g(an)g(application)i(is)e(\014nished)f (accessing)j(a)e(FITS)g(\014le)g(in)g(a)h(shared)e(memory)h(segmen)m -(t,)i(it)f(ma)m(y)g(close)g(it)0 4030 y(\(and)j(the)g(\014le)g(will)g +(t,)i(it)f(ma)m(y)g(close)g(it)0 4068 y(\(and)j(the)g(\014le)g(will)g (remain)f(in)h(the)g(system\))g(with)g(\014ts)p 1955 -4030 V 32 w(close)p 2173 4030 V 34 w(\014le,)h(or)f(delete)h(it)g(with) -e(\014ts)p 3191 4030 V 33 w(delete)p 3455 4030 V 34 w(\014le.)51 -b(Ph)m(ys-)0 4143 y(ical)36 b(deletion)g(is)f(p)s(ostp)s(oned)e(un)m +4068 V 32 w(close)p 2173 4068 V 34 w(\014le,)h(or)f(delete)h(it)g(with) +e(\014ts)p 3191 4068 V 33 w(delete)p 3455 4068 V 34 w(\014le.)51 +b(Ph)m(ys-)0 4181 y(ical)36 b(deletion)g(is)f(p)s(ostp)s(oned)e(un)m (til)j(the)f(last)g(pro)s(cess)g(calls)h(\013clos/\013delt.)56 -b(\014ts)p 2801 4143 V 32 w(delete)p 3064 4143 V 34 w(\014le)35 -b(tries)h(to)f(obtain)h(a)0 4256 y(READ)m(WRITE)e(lo)s(c)m(k)g(on)f +b(\014ts)p 2801 4181 V 32 w(delete)p 3064 4181 V 34 w(\014le)35 +b(tries)h(to)f(obtain)h(a)0 4294 y(READ)m(WRITE)e(lo)s(c)m(k)g(on)f (the)g(\014le)h(to)g(b)s(e)e(deleted,)j(th)m(us)e(it)h(can)f(b)s(e)g (blo)s(c)m(k)m(ed)h(if)f(the)h(ob)5 b(ject)34 b(w)m(as)f(not)h(op)s -(ened)0 4369 y(in)c(READ)m(WRITE)h(mo)s(de.)0 4529 y(A)i(shared)f +(ened)0 4407 y(in)c(READ)m(WRITE)h(mo)s(de.)0 4567 y(A)i(shared)f (memory)h(managemen)m(t)h(utilit)m(y)g(program)f(called)h(`smem',)f(is) -g(included)f(with)h(the)g(CFITSIO)e(dis-)0 4642 y(tribution.)39 +g(included)f(with)h(the)g(CFITSIO)e(dis-)0 4680 y(tribution.)39 b(It)27 b(can)g(b)s(e)f(built)h(b)m(y)g(t)m(yping)g(`mak)m(e)h(smem';)g (then)f(t)m(yp)s(e)g(`smem)f(-h')h(to)h(get)g(a)f(list)g(of)g(v)-5 -b(alid)27 b(options.)0 4755 y(Executing)37 b(smem)f(without)g(an)m(y)h +b(alid)27 b(options.)0 4793 y(Executing)37 b(smem)f(without)g(an)m(y)h (options)g(causes)f(it)h(to)g(list)g(all)g(the)g(shared)e(memory)i -(segmen)m(ts)g(curren)m(tly)0 4868 y(residing)c(in)g(the)g(system)h +(segmen)m(ts)g(curren)m(tly)0 4906 y(residing)c(in)g(the)g(system)h (and)e(managed)i(b)m(y)f(the)h(shared)e(memory)h(driv)m(er.)49 b(T)-8 b(o)34 b(get)g(a)g(list)g(of)f(all)h(the)g(shared)0 -4981 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)g -(program)f(`ip)s(cs)h([-a]'.)0 5171 y -SDict begin H.S end - 0 5171 a 0 5171 -a -SDict begin 13.6 H.A end - 0 5171 a 0 5171 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.3) cvn /DEST pdfmark -end - 0 5171 a 174 x Ff(10.3)136 b(Base)45 +5019 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)g +(program)f(`ip)s(cs)h([-a]'.)0 5351 y Ff(10.3)136 b(Base)45 b(Filename)0 5601 y Fj(The)31 b(base)g(\014lename)h(is)f(the)h(name)f (of)h(the)f(\014le)h(optionally)g(including)f(the)h(director/sub)s (directory)f(path,)h(and)0 5714 y(in)e(the)h(case)g(of)g(`ftp',)f(`h)m (ttp',)i(and)d(`ro)s(ot')j(\014let)m(yp)s(es,)e(the)h(mac)m(hine)g (iden)m(ti\014er.)41 b(Examples:)p eop end -%%Page: 132 140 -TeXDict begin 132 139 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.132) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(132)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)191 555 y Fe(myfile.fits)191 668 y(!data.fits)191 -781 y(/data/myfile.fits)191 894 y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o -(eda)o(ta/m)o(yfil)o(e.f)o(its.)o(gz)0 1120 y Fj(When)29 -b(creating)h(a)f(new)f(output)h(\014le)g(on)g(magnetic)h(disk)e(\(of)i -(t)m(yp)s(e)f(\014le://\))h(if)f(the)g(base)g(\014lename)g(b)s(egins)f -(with)0 1233 y(an)34 b(exclamation)j(p)s(oin)m(t)d(\(!\))54 -b(then)34 b(an)m(y)g(existing)i(\014le)e(with)g(that)h(same)g(basename) -g(will)g(b)s(e)e(deleted)i(prior)f(to)0 1346 y(creating)h(the)f(new)g -(FITS)f(\014le.)51 b(Otherwise)34 b(if)g(the)g(\014le)g(to)g(b)s(e)g -(created)h(already)f(exists,)i(then)d(CFITSIO)g(will)0 -1459 y(return)g(an)h(error)f(and)g(will)i(not)f(o)m(v)m(erwrite)h(the)f -(existing)h(\014le.)52 b(Note)35 b(that)g(the)f(exclamation)i(p)s(oin)m -(t,)f(')10 b(!',)36 b(is)e(a)0 1572 y(sp)s(ecial)28 b(UNIX)g(c)m -(haracter,)j(so)d(if)f(it)i(is)f(used)f(on)g(the)h(command)g(line)g -(rather)g(than)f(en)m(tered)h(at)h(a)f(task)h(prompt,)0 -1685 y(it)j(m)m(ust)f(b)s(e)g(preceded)g(b)m(y)h(a)g(bac)m(kslash)g(to) -g(force)g(the)g(UNIX)g(shell)f(to)h(pass)f(it)i(v)m(erbatim)f(to)g(the) -g(application)0 1798 y(program.)0 1958 y(If)24 b(the)i(output)e(disk)h -(\014le)g(name)g(ends)f(with)g(the)h(su\016x)f('.gz',)k(then)d(CFITSIO) -e(will)i(compress)g(the)g(\014le)g(using)g(the)0 2071 -y(gzip)g(compression)f(algorithm)h(b)s(efore)f(writing)g(it)h(to)g -(disk.)38 b(This)23 b(can)i(reduce)f(the)g(amoun)m(t)h(of)f(disk)g -(space)h(used)0 2184 y(b)m(y)34 b(the)h(\014le.)53 b(Note)36 -b(that)f(this)g(feature)g(requires)f(that)h(the)f(uncompressed)g -(\014le)g(b)s(e)g(constructed)h(in)f(memory)0 2297 y(b)s(efore)c(it)h -(is)f(compressed)g(and)g(written)h(to)g(disk,)f(so)g(it)h(can)g(fail)g -(if)f(there)h(is)f(insu\016cien)m(t)h(a)m(v)-5 b(ailable)33 -b(memory)-8 b(.)0 2457 y(An)45 b(input)g(FITS)f(\014le)i(ma)m(y)g(b)s -(e)f(compressed)g(with)h(the)f(gzip)h(or)g(Unix)f(compress)h -(algorithms,)k(in)45 b(whic)m(h)0 2570 y(case)38 b(CFITSIO)e(will)i -(uncompress)e(the)i(\014le)g(on)f(the)h(\015y)e(in)m(to)j(a)f(temp)s -(orary)f(\014le)g(\(in)h(memory)f(or)g(on)h(disk\).)0 -2683 y(Compressed)32 b(\014les)i(ma)m(y)g(only)f(b)s(e)g(op)s(ened)f -(with)h(read-only)h(p)s(ermission.)49 b(When)33 b(sp)s(ecifying)g(the)h -(name)f(of)h(a)0 2796 y(compressed)h(FITS)g(\014le)h(it)g(is)g(not)g -(necessary)g(to)g(app)s(end)e(the)i(\014le)g(su\016x)e(\(e.g.,)39 -b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 2908 y(cannot)24 -b(\014nd)e(the)h(input)f(\014le)i(name)f(without)g(the)g(su\016x,)h -(then)f(it)h(will)g(automatically)i(searc)m(h)e(for)f(a)g(compressed)0 -3021 y(\014le)36 b(with)f(the)h(same)g(ro)s(ot)g(name.)57 -b(In)35 b(the)h(case)h(of)f(reading)g(ftp)f(and)g(h)m(ttp)h(t)m(yp)s(e) -g(\014les,)h(CFITSIO)e(generally)0 3134 y(lo)s(oks)j(for)g(a)g -(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(\014rst,)h(b)s(efore)e -(trying)h(to)h(op)s(en)e(the)h(uncompressed)e(\014le.)64 +%%Page: 134 142 +TeXDict begin 134 141 bop 0 299 a Fj(134)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 +555 y Fe(myfile.fits)191 668 y(!data.fits)191 781 y(/data/myfile.fits) +191 894 y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o(eda)o(ta/m)o(yfil)o(e.f)o +(its.)o(gz)0 1120 y Fj(When)29 b(creating)h(a)f(new)f(output)h(\014le)g +(on)g(magnetic)h(disk)e(\(of)i(t)m(yp)s(e)f(\014le://\))h(if)f(the)g +(base)g(\014lename)g(b)s(egins)f(with)0 1233 y(an)34 +b(exclamation)j(p)s(oin)m(t)d(\(!\))54 b(then)34 b(an)m(y)g(existing)i +(\014le)e(with)g(that)h(same)g(basename)g(will)g(b)s(e)e(deleted)i +(prior)f(to)0 1346 y(creating)h(the)f(new)g(FITS)f(\014le.)51 +b(Otherwise)34 b(if)g(the)g(\014le)g(to)g(b)s(e)g(created)h(already)f +(exists,)i(then)d(CFITSIO)g(will)0 1459 y(return)g(an)h(error)f(and)g +(will)i(not)f(o)m(v)m(erwrite)h(the)f(existing)h(\014le.)52 +b(Note)35 b(that)g(the)f(exclamation)i(p)s(oin)m(t,)f(')10 +b(!',)36 b(is)e(a)0 1572 y(sp)s(ecial)28 b(UNIX)g(c)m(haracter,)j(so)d +(if)f(it)i(is)f(used)f(on)g(the)h(command)g(line)g(rather)g(than)f(en)m +(tered)h(at)h(a)f(task)h(prompt,)0 1685 y(it)j(m)m(ust)f(b)s(e)g +(preceded)g(b)m(y)h(a)g(bac)m(kslash)g(to)g(force)g(the)g(UNIX)g(shell) +f(to)h(pass)f(it)i(v)m(erbatim)f(to)g(the)g(application)0 +1798 y(program.)0 1958 y(If)24 b(the)i(output)e(disk)h(\014le)g(name)g +(ends)f(with)g(the)h(su\016x)f('.gz',)k(then)d(CFITSIO)e(will)i +(compress)g(the)g(\014le)g(using)g(the)0 2071 y(gzip)g(compression)f +(algorithm)h(b)s(efore)f(writing)g(it)h(to)g(disk.)38 +b(This)23 b(can)i(reduce)f(the)g(amoun)m(t)h(of)f(disk)g(space)h(used)0 +2184 y(b)m(y)34 b(the)h(\014le.)53 b(Note)36 b(that)f(this)g(feature)g +(requires)f(that)h(the)f(uncompressed)g(\014le)g(b)s(e)g(constructed)h +(in)f(memory)0 2297 y(b)s(efore)c(it)h(is)f(compressed)g(and)g(written) +h(to)g(disk,)f(so)g(it)h(can)g(fail)g(if)f(there)h(is)f(insu\016cien)m +(t)h(a)m(v)-5 b(ailable)33 b(memory)-8 b(.)0 2457 y(An)45 +b(input)g(FITS)f(\014le)i(ma)m(y)g(b)s(e)f(compressed)g(with)h(the)f +(gzip)h(or)g(Unix)f(compress)h(algorithms,)k(in)45 b(whic)m(h)0 +2570 y(case)38 b(CFITSIO)e(will)i(uncompress)e(the)i(\014le)g(on)f(the) +h(\015y)e(in)m(to)j(a)f(temp)s(orary)f(\014le)g(\(in)h(memory)f(or)g +(on)h(disk\).)0 2683 y(Compressed)32 b(\014les)i(ma)m(y)g(only)f(b)s(e) +g(op)s(ened)f(with)h(read-only)h(p)s(ermission.)49 b(When)33 +b(sp)s(ecifying)g(the)h(name)f(of)h(a)0 2796 y(compressed)h(FITS)g +(\014le)h(it)g(is)g(not)g(necessary)g(to)g(app)s(end)e(the)i(\014le)g +(su\016x)e(\(e.g.,)39 b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 +2908 y(cannot)24 b(\014nd)e(the)h(input)f(\014le)i(name)f(without)g +(the)g(su\016x,)h(then)f(it)h(will)g(automatically)i(searc)m(h)e(for)f +(a)g(compressed)0 3021 y(\014le)36 b(with)f(the)h(same)g(ro)s(ot)g +(name.)57 b(In)35 b(the)h(case)h(of)f(reading)g(ftp)f(and)g(h)m(ttp)h +(t)m(yp)s(e)g(\014les,)h(CFITSIO)e(generally)0 3134 y(lo)s(oks)j(for)g +(a)g(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(\014rst,)h(b)s +(efore)e(trying)h(to)h(op)s(en)e(the)h(uncompressed)e(\014le.)64 b(By)0 3247 y(default,)37 b(CFITSIO)e(copies)h(\(and)g(uncompressed)e (if)i(necessary\))g(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)g(in)m(to) i(memory)0 3360 y(on)f(the)g(lo)s(cal)h(mac)m(hine)f(b)s(efore)g(op)s @@ -17839,22 +13958,10 @@ b(\(as)g(in)g(FITS)f(\014les)h(and)f(the)h(nativ)m(e)i(format)e(of)g (SUN)g(UNIX)g(w)m(orkstations)h(and)f(Mac)h(PCs\))e(and)h(l)g(or)p eop end -%%Page: 133 141 -TeXDict begin 133 140 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.133) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.4.)73 -b(OUTPUT)29 b(FILE)h(NAME)h(WHEN)g(OPENING)f(AN)h(EXISTING)f(FILE)876 -b Fj(133)0 555 y(L)27 b(indicates)i(little)g(endian)e(\(nativ)m(e)j +%%Page: 135 143 +TeXDict begin 135 142 bop 0 299 a Fh(10.4.)73 b(OUTPUT)29 +b(FILE)h(NAME)h(WHEN)g(OPENING)f(AN)h(EXISTING)f(FILE)876 +b Fj(135)0 555 y(L)27 b(indicates)i(little)g(endian)e(\(nativ)m(e)j (format)d(of)h(DEC)g(OSF)f(w)m(orkstations)h(and)f(IBM)h(PCs\).)40 b(If)27 b(this)g(c)m(haracter)0 668 y(is)f(omitted)g(then)f(the)h(arra) m(y)g(is)g(assumed)f(to)h(ha)m(v)m(e)h(the)f(nativ)m(e)g(b)m(yte)h @@ -17909,15 +14016,7 @@ b(the)h(v)m(ertical)i(bar)e(is)f(the)h(Unix)g(piping)f(sym)m(b)s(ol.)42 b(This)30 b(assumes)g(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0 4114 y(the)g(FITS)e(\014le)i(o\013)f(of)h(the)g(command)f(line.)0 -4251 y -SDict begin H.S end - 0 4251 a 0 4251 a -SDict begin 13.6 H.A end - 0 4251 a 0 4251 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.4) cvn /DEST pdfmark -end - 0 4251 a 197 -x Ff(10.4)136 b(Output)44 b(File)i(Name)f(when)g(Op)t(ening)g(an)g +4448 y Ff(10.4)136 b(Output)44 b(File)i(Name)f(when)g(Op)t(ening)g(an)g (Existing)h(File)0 4698 y Fj(An)36 b(optional)i(output)e(\014lename)h (ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(in)g(paren)m(theses)h(immediately)h (follo)m(wing)g(the)f(base)g(\014le)0 4811 y(name)28 @@ -17943,40 +14042,27 @@ (base)h(\014le)g(name.)0 5714 y(The)30 b(output)g(\014lename)g(can)h (include)f(the)h(')10 b(!')41 b(clobb)s(er)30 b(\015ag.)p eop end -%%Page: 134 142 -TeXDict begin 134 141 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.134) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(134)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 555 y Fj(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g -(CFITSIO)f(is:)70 b Fe(file1.fits.gz\(file2.fit)o(s\))39 -b Fj(then)44 b(CFITSIO)g(will)0 668 y(uncompress)39 b -(`\014le1.\014ts.gz')j(in)m(to)f(the)f(lo)s(cal)h(disk)e(\014le)h -(`\014le2.\014ts')h(b)s(efore)f(op)s(ening)f(it.)70 b(CFITSIO)38 -b(do)s(es)i(not)0 781 y(automatically)33 b(delete)f(the)e(output)g -(\014le,)h(so)g(it)g(will)f(still)i(exist)f(after)g(the)f(application)i -(program)e(exits.)0 941 y(The)i(output)h(\014lename)g("mem://")i(is)e -(also)h(allo)m(w)m(ed,)i(whic)m(h)c(will)i(write)f(the)g(output)f -(\014le)h(in)m(to)h(memory)-8 b(,)35 b(and)0 1054 y(also)28 -b(allo)m(w)g(write)f(access)h(to)g(the)f(\014le.)39 b(This)26 -b('\014le')i(will)f(disapp)s(ear)f(when)g(it)h(is)g(closed,)h(but)e -(this)h(ma)m(y)h(b)s(e)e(useful)0 1167 y(for)k(some)h(applications)g -(whic)m(h)g(only)f(need)g(to)h(mo)s(dify)f(a)h(temp)s(orary)f(cop)m(y)h -(of)f(the)h(\014le.)0 1327 y(In)k(some)i(cases,)h(sev)m(eral)f -(di\013eren)m(t)g(temp)s(orary)e(FITS)h(\014les)g(will)g(b)s(e)f -(created)i(in)f(sequence,)i(for)e(instance,)i(if)0 1440 -y(one)f(op)s(ens)g(a)g(remote)h(\014le)f(using)g(FTP)-8 -b(,)37 b(then)g(\014lters)g(ro)m(ws)g(in)g(a)h(binary)e(table)i +%%Page: 136 144 +TeXDict begin 136 143 bop 0 299 a Fj(136)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g(CFITSIO)f +(is:)70 b Fe(file1.fits.gz\(file2.fit)o(s\))39 b Fj(then)44 +b(CFITSIO)g(will)0 668 y(uncompress)39 b(`\014le1.\014ts.gz')j(in)m(to) +f(the)f(lo)s(cal)h(disk)e(\014le)h(`\014le2.\014ts')h(b)s(efore)f(op)s +(ening)f(it.)70 b(CFITSIO)38 b(do)s(es)i(not)0 781 y(automatically)33 +b(delete)f(the)e(output)g(\014le,)h(so)g(it)g(will)f(still)i(exist)f +(after)g(the)f(application)i(program)e(exits.)0 941 y(The)i(output)h +(\014lename)g("mem://")i(is)e(also)h(allo)m(w)m(ed,)i(whic)m(h)c(will)i +(write)f(the)g(output)f(\014le)h(in)m(to)h(memory)-8 +b(,)35 b(and)0 1054 y(also)28 b(allo)m(w)g(write)f(access)h(to)g(the)f +(\014le.)39 b(This)26 b('\014le')i(will)f(disapp)s(ear)f(when)g(it)h +(is)g(closed,)h(but)e(this)h(ma)m(y)h(b)s(e)e(useful)0 +1167 y(for)k(some)h(applications)g(whic)m(h)g(only)f(need)g(to)h(mo)s +(dify)f(a)h(temp)s(orary)f(cop)m(y)h(of)f(the)h(\014le.)0 +1327 y(In)k(some)i(cases,)h(sev)m(eral)f(di\013eren)m(t)g(temp)s(orary) +e(FITS)h(\014les)g(will)g(b)s(e)f(created)i(in)f(sequence,)i(for)e +(instance,)i(if)0 1440 y(one)f(op)s(ens)g(a)g(remote)h(\014le)f(using)g +(FTP)-8 b(,)37 b(then)g(\014lters)g(ro)m(ws)g(in)g(a)h(binary)e(table)i (extension,)i(then)c(create)j(an)0 1553 y(image)f(b)m(y)f(binning)f(a)h (pair)g(of)g(columns.)60 b(In)36 b(this)h(case,)j(the)d(remote)h (\014le)f(will)g(b)s(e)f(copied)h(to)h(a)f(temp)s(orary)0 @@ -18037,39 +14123,19 @@ 5714 y(remote)38 b(mac)m(hine,)h(then)e(the)g(serv)m(er)g(will)h(cop)m (y)f(it)h(to)f(the)h(lo)s(cal)g(mac)m(hine.)61 b(In)36 b(other)h(cases)h(the)f(ftp)g(serv)m(er)p eop end -%%Page: 135 143 -TeXDict begin 135 142 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.135) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.5.)73 -b(TEMPLA)-8 b(TE)30 b(FILE)g(NAME)h(WHEN)g(CREA)-8 b(TING)30 -b(A)g(NEW)h(FILE)997 b Fj(135)0 555 y(will)36 b(automatically)j(create) -e(and)f(transmit)g(a)g(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g -(if)g(only)g(the)g(uncompressed)0 668 y(v)m(ersion)27 -b(exists.)41 b(This)26 b(can)h(get)h(rather)f(confusing,)h(so)f(users)f -(should)g(use)h(a)g(certain)h(amoun)m(t)g(of)f(caution)h(when)0 -781 y(using)34 b(the)h(output)f(\014le)h(sp)s(eci\014er)f(with)h(FTP)f -(or)h(HTTP)f(\014le)h(t)m(yp)s(es,)h(to)f(mak)m(e)h(sure)e(they)h(get)h -(the)f(b)s(eha)m(vior)0 894 y(that)c(they)g(exp)s(ect.)0 -1071 y -SDict begin H.S end - 0 1071 a 0 1071 a -SDict begin 13.6 H.A end - 0 1071 a 0 1071 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.5) cvn /DEST pdfmark -end - 0 1071 a 179 -x Ff(10.5)136 b(T)-11 b(emplate)45 b(File)h(Name)g(when)e(Creating)j(a) -e(New)g(File)0 1504 y Fj(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g +%%Page: 137 145 +TeXDict begin 137 144 bop 0 299 a Fh(10.5.)73 b(TEMPLA)-8 +b(TE)30 b(FILE)g(NAME)h(WHEN)g(CREA)-8 b(TING)30 b(A)g(NEW)h(FILE)997 +b Fj(137)0 555 y(will)36 b(automatically)j(create)e(and)f(transmit)g(a) +g(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(if)g(only)g(the)g +(uncompressed)0 668 y(v)m(ersion)27 b(exists.)41 b(This)26 +b(can)h(get)h(rather)f(confusing,)h(so)f(users)f(should)g(use)h(a)g +(certain)h(amoun)m(t)g(of)f(caution)h(when)0 781 y(using)34 +b(the)h(output)f(\014le)h(sp)s(eci\014er)f(with)h(FTP)f(or)h(HTTP)f +(\014le)h(t)m(yp)s(es,)h(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s +(eha)m(vior)0 894 y(that)c(they)g(exp)s(ect.)0 1250 y +Ff(10.5)136 b(T)-11 b(emplate)45 b(File)h(Name)g(when)e(Creating)j(a)e +(New)g(File)0 1504 y Fj(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g (created)g(with)g(a)f(call)i(to)g(\014ts)p 2101 1504 28 4 v 32 w(create)p 2369 1504 V 35 w(\014le,)g(the)f(name)g(of)g(a)g (template)h(\014le)e(ma)m(y)0 1617 y(b)s(e)h(supplied)g(in)h(paren)m @@ -18086,16 +14152,8 @@ g(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h (FITS)f(k)m(eyw)m(ord)i(record.)0 2182 y(The)j(format)h(of)f(the)h (ASCI)s(I)e(template)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m -(wing)i(T)-8 b(emplate)31 b(Files)h(c)m(hapter.)0 2359 -y -SDict begin H.S end - 0 2359 a 0 2359 a -SDict begin 13.6 H.A end - 0 2359 a 0 2359 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.6) cvn /DEST pdfmark -end - 0 2359 a 179 x -Ff(10.6)136 b(Image)46 b(Tile-Compression)g(Sp)t(eci\014cation)0 +(wing)i(T)-8 b(emplate)31 b(Files)h(c)m(hapter.)0 2538 +y Ff(10.6)136 b(Image)46 b(Tile-Compression)g(Sp)t(eci\014cation)0 2792 y Fj(When)28 b(sp)s(ecifying)g(the)h(name)g(of)f(the)h(output)f (FITS)g(\014le)g(to)h(b)s(e)f(created,)i(the)f(user)f(can)g(indicate)i (that)f(images)0 2905 y(should)d(b)s(e)h(written)g(in)g @@ -18114,15 +14172,7 @@ 42 b(Rice)47 b(100,100])141 b(-)48 b(use)e(100)h(x)h(100)f(pixel)f (tile)h(size)191 4200 y(myfile.fit[compress)42 b(Rice)47 b(100,100;2])e(-)j(as)f(above,)f(and)h(use)g(noisebits)e(=)i(2)0 -4379 y -SDict begin H.S end - 0 4379 a 0 4379 a -SDict begin 13.6 H.A end - 0 4379 a 0 4379 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.7) cvn /DEST pdfmark -end - 0 4379 a 177 -x Ff(10.7)136 b(HDU)45 b(Lo)t(cation)g(Sp)t(eci\014cation)0 +4556 y Ff(10.7)136 b(HDU)45 b(Lo)t(cation)g(Sp)t(eci\014cation)0 4811 y Fj(The)c(optional)h(HDU)h(lo)s(cation)g(sp)s(eci\014er)d (de\014nes)h(whic)m(h)g(HDU)h(\(Header-Data)i(Unit,)h(also)d(kno)m(wn)f (as)h(an)0 4924 y(`extension'\))36 b(within)d(the)i(FITS)e(\014le)h(to) @@ -18144,24 +14194,12 @@ (image)i(within)d(a)i(single)f(cell)i(of)e(a)g(binary)g(table)h(ma)m(y) f(also)h(b)s(e)f(sp)s(eci\014ed,)g(as)g(describ)s(ed)0 5714 y(b)s(elo)m(w.)p eop end -%%Page: 136 144 -TeXDict begin 136 143 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.136) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(136)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 555 y Fj(The)26 b(absolute)h(p)s(osition)f(of)g(the)h(extension) -g(is)f(sp)s(eci\014ed)f(either)i(b)m(y)f(enclosed)h(the)g(n)m(um)m(b)s -(er)e(in)h(square)f(brac)m(k)m(ets)0 668 y(\(e.g.,)k(`[1]')g(=)d(the)h +%%Page: 138 146 +TeXDict begin 138 145 bop 0 299 a Fj(138)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(The)26 b(absolute)h(p)s(osition)f(of)g(the)h(extension)g(is)f +(sp)s(eci\014ed)f(either)i(b)m(y)f(enclosed)h(the)g(n)m(um)m(b)s(er)e +(in)h(square)f(brac)m(k)m(ets)0 668 y(\(e.g.,)k(`[1]')g(=)d(the)h (\014rst)f(extension)h(follo)m(wing)i(the)e(primary)e(arra)m(y\))j(or)f (b)m(y)f(preceded)h(the)g(n)m(um)m(b)s(er)e(with)i(a)g(plus)0 781 y(sign)37 b(\(`+1'\).)63 b(T)-8 b(o)38 b(sp)s(ecify)f(the)g(HDU)h @@ -18201,74 +14239,54 @@ (extension)g(name,)f(then)0 2409 y(only)34 b(that)g(extension,)i(and)d (none)h(of)g(the)g(other)g(extensions)g(in)f(the)h(\014le,)h(will)g(b)m (y)e(copied)h(to)h(memory)-8 b(,)35 b(as)f(in)0 2522 -y(the)d(follo)m(wing)g(example:)143 2773 y Fe(myfile.fit[events#][TIME) -41 b(>)48 b(10000])0 3024 y Fj(FITS)34 b(images)i(are)f(most)h +y(the)d(follo)m(wing)g(example:)143 2780 y Fe(myfile.fit[events#][TIME) +41 b(>)48 b(10000])0 3038 y Fj(FITS)34 b(images)i(are)f(most)h (commonly)f(stored)g(in)g(the)g(primary)f(arra)m(y)h(or)g(an)g(image)h -(extension,)h(but)d(images)0 3137 y(can)d(also)h(b)s(e)e(stored)h(as)h +(extension,)h(but)d(images)0 3151 y(can)d(also)h(b)s(e)e(stored)h(as)h (a)f(v)m(ector)h(in)f(a)g(single)h(cell)g(of)f(a)h(binary)e(table)i (\(i.e.)43 b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0 -3250 y(con)m(tains)d(a)g(di\013eren)m(t)f(image\).)42 +3263 y(con)m(tains)d(a)g(di\013eren)m(t)f(image\).)42 b(Suc)m(h)27 b(an)h(image)i(can)e(b)s(e)g(op)s(ened)f(with)h(CFITSIO)e -(b)m(y)i(sp)s(ecifying)g(the)g(desired)0 3363 y(column)k(name)g(and)f +(b)m(y)i(sp)s(ecifying)g(the)g(desired)0 3376 y(column)k(name)g(and)f (the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)f(table)i(HDU)g (sp)s(eci\014er)e(as)h(sho)m(wn)g(in)f(the)h(follo)m(wing)0 -3476 y(examples.)71 b(The)40 b(column)g(name)h(is)f(separated)h(from)f +3489 y(examples.)71 b(The)40 b(column)g(name)h(is)f(separated)h(from)f (the)h(HDU)g(sp)s(eci\014er)f(b)m(y)g(a)h(semicolon)g(and)f(the)h(ro)m -(w)0 3589 y(n)m(um)m(b)s(er)29 b(is)h(enclosed)h(in)e(paren)m(theses.) +(w)0 3602 y(n)m(um)m(b)s(er)29 b(is)h(enclosed)h(in)e(paren)m(theses.) 41 b(In)30 b(this)g(case)h(CFITSIO)d(copies)j(the)f(image)i(from)d(the) -i(table)g(cell)g(in)m(to)0 3702 y(a)h(temp)s(orary)e(primary)h(arra)m +i(table)g(cell)g(in)m(to)0 3715 y(a)h(temp)s(orary)e(primary)h(arra)m (y)g(b)s(efore)g(it)h(is)f(op)s(ened.)43 b(The)30 b(application)j -(program)e(then)g(just)g(sees)g(the)h(image)0 3815 y(in)i(the)h +(program)e(then)g(just)g(sees)g(the)h(image)0 3828 y(in)i(the)h (primary)e(arra)m(y)-8 b(,)37 b(without)d(an)m(y)h(extensions.)53 b(The)34 b(particular)g(ro)m(w)h(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s -(e)f(sp)s(eci\014ed)0 3927 y(either)28 b(b)m(y)f(giving)h(an)f +(e)f(sp)s(eci\014ed)0 3941 y(either)28 b(b)m(y)f(giving)h(an)f (absolute)h(in)m(teger)h(ro)m(w)f(n)m(um)m(b)s(er)e(\(starting)i(with)f (1)h(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0 -4040 y(a)33 b(b)s(o)s(olean)f(expression)g(that)h(ev)-5 +4054 y(a)33 b(b)s(o)s(olean)f(expression)g(that)h(ev)-5 b(aluates)34 b(to)f(TR)m(UE)g(for)f(the)g(desired)g(ro)m(w.)47 b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)g(the)0 -4153 y(expression)28 b(will)g(b)s(e)g(used.)39 b(The)28 +4167 y(expression)28 b(will)g(b)s(e)g(used.)39 b(The)28 b(ro)m(w)g(selection)i(expression)e(has)g(the)g(same)g(syn)m(tax)h(as)f -(describ)s(ed)f(in)h(the)g(Ro)m(w)0 4266 y(Filter)k(Sp)s(eci\014er)d -(section,)j(b)s(elo)m(w.)0 4426 y(Examples:)143 4677 +(describ)s(ed)f(in)h(the)g(Ro)m(w)0 4280 y(Filter)k(Sp)s(eci\014er)d +(section,)j(b)s(elo)m(w.)0 4440 y(Examples:)143 4698 y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i -(primary)f(array)143 4790 y(myfile.fits+3)92 b(-)48 b(same)e(as)h +(primary)f(array)143 4811 y(myfile.fits+3)92 b(-)48 b(same)e(as)h (above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143 -4903 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g -(EXTNAME)e(=)j('EVENTS')143 5016 y(myfile.fits[EVENTS,)43 +4924 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g +(EXTNAME)e(=)j('EVENTS')143 5036 y(myfile.fits[EVENTS,)43 b(2])95 b(-)47 b(same)g(as)g(above,)f(but)h(also)g(requires)e(EXTVER)h -(=)i(2)143 5129 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h -(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 5242 +(=)i(2)143 5149 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h +(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 5262 y(myfile.fits[3;)c(images\(17\)])h(-)i(opens)g(the)g(image)f(in)h(row)g -(17)g(of)g(the)g('images')1527 5355 y(column)f(in)i(the)e(3rd)h -(extension)f(of)h(the)g(file.)143 5468 y(myfile.fits[3;)d +(17)g(of)g(the)g('images')1527 5375 y(column)f(in)i(the)e(3rd)h +(extension)f(of)h(the)g(file.)143 5488 y(myfile.fits[3;)d (images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f -(image)907 5581 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g -('exposure')e(column)h(value)907 5694 y(greater)g(than)g(100.)p +(image)907 5601 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g +('exposure')e(column)h(value)907 5714 y(greater)g(than)g(100.)p eop end -%%Page: 137 145 -TeXDict begin 137 144 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.137) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.8.)73 -b(IMA)m(GE)31 b(SECTION)2744 b Fj(137)0 464 y -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.8) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(10.8)136 b(Image)46 +%%Page: 139 147 +TeXDict begin 139 146 bop 0 299 a Fh(10.8.)73 b(IMA)m(GE)31 +b(SECTION)2744 b Fj(139)0 555 y Ff(10.8)136 b(Image)46 b(Section)0 811 y Fj(A)41 b(virtual)g(\014le)f(con)m(taining)i(a)f (rectangular)h(subsection)e(of)h(an)g(image)g(can)g(b)s(e)f(extracted)i (and)e(op)s(ened)g(b)m(y)0 924 y(sp)s(ecifying)32 b(the)h(range)g(of)g @@ -18331,30 +14349,10 @@ (the)g(co)s(ordinate)h(asso)s(ciated)g(with)e(eac)m(h)i(pixel)f(in)g (the)g(image)h(section)g(will)f(b)s(e)0 5714 y(computed)h(correctly)-8 b(.)p eop end -%%Page: 138 146 -TeXDict begin 138 145 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.138) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(138)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.9) cvn /DEST pdfmark -end - 0 464 a -91 x Ff(10.9)136 b(Image)46 b(T)-11 b(ransform)44 b(Filters)0 +%%Page: 140 148 +TeXDict begin 140 147 bop 0 299 a Fj(140)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Ff(10.9)136 b(Image)46 b(T)-11 b(ransform)44 b(Filters)0 807 y Fj(CFITSIO)33 b(can)h(apply)g(a)h(user-sp)s(eci\014ed)e (mathematical)j(function)e(to)h(the)g(v)-5 b(alue)34 b(of)h(ev)m(ery)g(pixel)f(in)g(a)h(FITS)0 920 y(image,)29 @@ -18420,22 +14418,10 @@ (X{+1})286 5601 y(+)g(X{-#NAXIS1})d(+)i(X{-#NAXIS1)e(-)i(1})h(+)f (X{-#NAXIS1)e(+)j(1})286 5714 y(+)g(X{#NAXIS1})d(+)i(X{#NAXIS1)f(-)h (1})g(+)h(X{#NAXIS1)d(+)i(1}\))g(/)h(9.])p eop end -%%Page: 139 147 -TeXDict begin 139 146 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.139) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.10.)73 -b(COLUMN)30 b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)31 b(SPECIFICA)-8 -b(TION)984 b Fj(139)0 555 y(If)31 b(the)h(pixel)g(o\013set)h(extends)f +%%Page: 141 149 +TeXDict begin 141 148 bop 0 299 a Fh(10.10.)73 b(COLUMN)30 +b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)31 b(SPECIFICA)-8 +b(TION)984 b Fj(141)0 555 y(If)31 b(the)h(pixel)g(o\013set)h(extends)f (b)s(ey)m(ond)f(the)h(\014rst)f(or)h(last)h(pixel)f(in)f(the)h(image,)i (the)e(function)g(will)g(ev)-5 b(aluate)33 b(to)0 668 y(unde\014ned,)28 b(or)j(NULL.)0 828 y(F)-8 b(or)39 b(complex)g(or)g @@ -18473,15 +14459,7 @@ b(ha)m(v)m(e)h(a)f(v)-5 b(alue)30 b(equal)f(to)g(the)g(square)g(ro)s (ot)g(of)g(the)g(pixels)f(in)h(the)g(image)h(that)f(is)g(in)f(the)h (3rd)f(extension)i(of)0 3387 y(the)h('m)m(y\014le.\014ts')g(\014le.)0 -3537 y -SDict begin H.S end - 0 3537 a 0 3537 a -SDict begin 13.6 H.A end - 0 3537 a 0 3537 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.10) cvn /DEST pdfmark -end - 0 3537 a 179 -x Ff(10.10)136 b(Column)45 b(and)g(Keyw)l(ord)g(Filtering)h(Sp)t +3716 y Ff(10.10)136 b(Column)45 b(and)g(Keyw)l(ord)g(Filtering)h(Sp)t (eci\014cation)0 3966 y Fj(The)27 b(optional)i(column/k)m(eyw)m(ord)g (\014ltering)f(sp)s(eci\014er)f(is)h(used)f(to)i(mo)s(dify)e(the)h (column)g(structure)f(and/or)h(the)0 4079 y(header)38 @@ -18518,26 +14496,14 @@ (separated)i(b)m(y)f(commas)h(or)f(semi-colons.)72 b(Wild)41 b(card)f(c)m(haracters)h(ma)m(y)g(b)s(e)f(used)p eop end -%%Page: 140 148 -TeXDict begin 140 147 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.140) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(140)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)227 555 y Fj(in)38 b(the)f(column)h(names)g(to)g(matc)m(h)g(m)m -(ultiple)h(columns.)62 b(If)37 b(the)h(expression)g(con)m(tains)g(b)s -(oth)f(a)h(list)h(of)227 668 y(columns)29 b(to)h(b)s(e)f(included)g -(and)g(columns)g(to)h(b)s(e)e(deleted,)j(then)e(all)h(the)g(columns)f -(in)g(the)h(original)g(table)227 781 y(except)36 b(the)e(explicitly)i +%%Page: 142 150 +TeXDict begin 142 149 bop 0 299 a Fj(142)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)227 +555 y Fj(in)38 b(the)f(column)h(names)g(to)g(matc)m(h)g(m)m(ultiple)h +(columns.)62 b(If)37 b(the)h(expression)g(con)m(tains)g(b)s(oth)f(a)h +(list)h(of)227 668 y(columns)29 b(to)h(b)s(e)f(included)g(and)g +(columns)g(to)h(b)s(e)e(deleted,)j(then)e(all)h(the)g(columns)f(in)g +(the)h(original)g(table)227 781 y(except)36 b(the)e(explicitly)i (deleted)f(columns)f(will)h(app)s(ear)e(in)h(the)h(\014ltered)f(table)h (\(i.e.,)i(there)e(is)f(no)g(need)227 894 y(to)d(explicitly)h(list)f (the)g(columns)f(to)h(b)s(e)f(included)f(if)i(an)m(y)f(columns)h(are)f @@ -18614,598 +14580,539 @@ Fe('-')p Fj(.)46 b(Either)33 b(of)f(these)h(examples)227 5714 y(will)e(delete)h(the)e(k)m(eyw)m(ord)h(named)f Fe(VEL)p Fj(.)p eop end -%%Page: 141 149 -TeXDict begin 141 148 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.141) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.10.)73 -b(COLUMN)30 b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)31 b(SPECIFICA)-8 -b(TION)984 b Fj(141)323 555 y Fe(-VEL;)323 668 y(-#VEL;)136 -863 y Fc(\017)46 b Fj(Recompute)f(\(o)m(v)m(erwrite\))i(the)d(v)-5 +%%Page: 143 151 +TeXDict begin 143 150 bop 0 299 a Fh(10.10.)73 b(COLUMN)30 +b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)31 b(SPECIFICA)-8 +b(TION)984 b Fj(143)323 555 y Fe(-VEL;)323 668 y(-#VEL;)136 +910 y Fc(\017)46 b Fj(Recompute)f(\(o)m(v)m(erwrite\))i(the)d(v)-5 b(alues)44 b(in)g(an)g(existing)i(column)e(or)g(k)m(eyw)m(ord)g(b)m(y)g -(giving)i(the)e(name)227 976 y(follo)m(w)m(ed)32 b(b)m(y)f(an)f(equals) -h(sign)f(and)g(an)g(arithmetic)i(expression.)0 1205 y(The)23 -b(expression)g(that)i(is)e(used)g(when)g(app)s(ending)f(or)h -(recomputing)h(columns)f(or)h(k)m(eyw)m(ords)g(can)g(b)s(e)f -(arbitrarily)0 1318 y(complex)36 b(and)g(ma)m(y)g(b)s(e)f(a)h(function) +(giving)i(the)e(name)227 1023 y(follo)m(w)m(ed)32 b(b)m(y)f(an)f +(equals)h(sign)f(and)g(an)g(arithmetic)i(expression.)0 +1297 y(The)23 b(expression)g(that)i(is)e(used)g(when)g(app)s(ending)f +(or)h(recomputing)h(columns)f(or)h(k)m(eyw)m(ords)g(can)g(b)s(e)f +(arbitrarily)0 1410 y(complex)36 b(and)g(ma)m(y)g(b)s(e)f(a)h(function) g(of)g(other)g(header)g(k)m(eyw)m(ord)g(v)-5 b(alues)36 -b(and)f(other)h(columns)g(\(in)g(the)g(same)0 1431 y(ro)m(w\).)63 +b(and)f(other)h(columns)g(\(in)g(the)g(same)0 1523 y(ro)m(w\).)63 b(The)37 b(full)g(syn)m(tax)i(and)e(a)m(v)-5 b(ailable)40 b(functions)d(for)g(the)h(expression)f(are)h(describ)s(ed)f(b)s(elo)m -(w)h(in)f(the)h(ro)m(w)0 1544 y(\014lter)30 b(sp)s(eci\014cation)i -(section.)0 1704 y(If)27 b(the)h(expression)g(con)m(tains)g(b)s(oth)f +(w)h(in)f(the)h(ro)m(w)0 1635 y(\014lter)30 b(sp)s(eci\014cation)i +(section.)0 1796 y(If)27 b(the)h(expression)g(con)m(tains)g(b)s(oth)f (a)h(list)h(of)f(columns)f(to)h(b)s(e)g(included)e(and)i(columns)f(to)h -(b)s(e)f(deleted,)j(then)d(all)0 1817 y(the)34 b(columns)g(in)g(the)g +(b)s(e)f(deleted,)j(then)d(all)0 1909 y(the)34 b(columns)g(in)g(the)g (original)h(table)g(except)g(the)f(explicitly)i(deleted)f(columns)e -(will)i(app)s(ear)e(in)h(the)g(\014ltered)0 1930 y(table.)40 +(will)i(app)s(ear)e(in)h(the)g(\014ltered)0 2021 y(table.)40 b(If)26 b(no)g(columns)f(to)i(b)s(e)f(deleted)g(are)h(sp)s(eci\014ed,)f (then)g(only)g(the)h(columns)e(that)i(are)f(explicitly)i(listed)f(will) -0 2043 y(b)s(e)k(included)g(in)g(the)h(\014ltered)f(output)h(table.)45 +0 2134 y(b)s(e)k(included)g(in)g(the)h(\014ltered)f(output)h(table.)45 b(T)-8 b(o)32 b(include)f(all)i(the)e(columns,)h(add)f(the)h('*')g -(wildcard)g(sp)s(eci\014er)0 2156 y(at)f(the)g(end)e(of)i(the)f(list,)i -(as)e(sho)m(wn)g(in)g(the)h(examples.)0 2316 y(F)-8 b(or)33 +(wildcard)g(sp)s(eci\014er)0 2247 y(at)f(the)g(end)e(of)i(the)f(list,)i +(as)e(sho)m(wn)g(in)g(the)h(examples.)0 2407 y(F)-8 b(or)33 b(complex)f(or)g(commonly)h(used)e(op)s(erations,)i(one)f(can)h(place)g (the)f(op)s(erations)g(in)m(to)h(an)f(external)h(text)g(\014le)0 -2429 y(and)39 b(imp)s(ort)h(it)g(in)m(to)h(the)f(column)g(\014lter)g +2520 y(and)39 b(imp)s(ort)h(it)g(in)m(to)h(the)f(column)g(\014lter)g (using)f(the)h(syn)m(tax)h('[col)g(@\014lename.txt]'.)71 -b(The)39 b(op)s(erations)i(can)0 2541 y(extend)35 b(o)m(v)m(er)h(m)m +b(The)39 b(op)s(erations)i(can)0 2633 y(extend)35 b(o)m(v)m(er)h(m)m (ultiple)g(lines)f(of)g(the)g(\014le,)h(but)e(m)m(ultiple)i(op)s (erations)f(m)m(ust)f(still)i(b)s(e)e(separated)i(b)m(y)e(commas)0 -2654 y(or)e(semi-colons.)47 b(An)m(y)32 b(lines)h(in)f(the)g(external)h +2746 y(or)e(semi-colons.)47 b(An)m(y)32 b(lines)h(in)f(the)g(external)h (text)g(\014le)f(that)h(b)s(egin)e(with)h(2)h(slash)e(c)m(haracters)j -(\('//'\))g(will)f(b)s(e)0 2767 y(ignored)d(and)g(ma)m(y)h(b)s(e)f +(\('//'\))g(will)f(b)s(e)0 2859 y(ignored)d(and)g(ma)m(y)h(b)s(e)f (used)g(to)h(add)e(commen)m(ts)j(in)m(to)f(the)g(\014le.)0 -2927 y(It)36 b(is)f(p)s(ossible)g(to)h(use)g(wildcard)f(syn)m(tax)h(to) -g(delete)h(either)f(k)m(eyw)m(ords)g(or)f(columns)g(that)h(matc)m(h)h -(a)f(pattern.)0 3040 y(Recall)c(that)f(to)g(delete)h(either)f(a)f(k)m -(eyw)m(ord)h(or)f(a)h(column,)g(precede)f(its)h(name)f(with)g(a)h -Fe('-')f Fj(c)m(haracter.)0 3201 y(Wildcard)d(patterns)f(are:)39 +3019 y(When)39 b(using)f(column)h(\014ltering)h(to)g(op)s(en)e(a)h +(\014le)h(\\on)f(the)g(\015y)-8 b(,")42 b(it)e(is)f(p)s(ermitted)g(to)h +(use)e(m)m(ultiple)i(column)0 3132 y(\014ltering)31 b(expressions.)40 +b(F)-8 b(or)31 b(example,)g(the)g(syn)m(tax)95 3377 y +Fe(filename.fits[col)44 b(*][col)i(-Y][col)f(Z=X+1])0 +3622 y Fj(w)m(ould)30 b(b)s(e)g(treated)h(as)g(equiv)-5 +b(alen)m(t)32 b(to)f(joining)f(the)h(expressions)f(with)g(semicolons,)i +(or)95 3868 y Fe(filename.fits[col)44 b(*;)j(-Y;col)f(Z=X+1])0 +4113 y Fj(Please)37 b(note)e(that)h(if)g(m)m(ultiple)g(column)f +(\014ltering)g(expressions)g(are)h(used,)g(it)g(is)f(not)h(p)s +(ermitted)f(to)h(also)g(use)0 4226 y(the)31 b Fe([col)46 +b(@filename.txt])27 b Fj(syn)m(tax)k(in)f(an)m(y)g(of)h(the)f +(individual)g(expressions.)0 4386 y(It)36 b(is)f(p)s(ossible)g(to)h +(use)g(wildcard)f(syn)m(tax)h(to)g(delete)h(either)f(k)m(eyw)m(ords)g +(or)f(columns)g(that)h(matc)m(h)h(a)f(pattern.)0 4499 +y(Recall)c(that)f(to)g(delete)h(either)f(a)f(k)m(eyw)m(ord)h(or)f(a)h +(column,)g(precede)f(its)h(name)f(with)g(a)h Fe('-')f +Fj(c)m(haracter.)0 4659 y(Wildcard)d(patterns)f(are:)39 b Fe('*')p Fj(,)27 b(whic)m(h)f(matc)m(hes)i(an)m(y)f(string)f(of)h(c)m (haracters;)i Fe('?')p Fj(,)e(whic)m(h)f(matc)m(hes)h(an)m(y)g(single)0 -3313 y(c)m(haracter;)32 b(and)e Fe('#')f Fj(whic)m(h)i(matc)m(hes)g(an) +4772 y(c)m(haracter;)32 b(and)e Fe('#')f Fj(whic)m(h)i(matc)m(hes)g(an) m(y)g(n)m(umerical)g(string.)40 b(F)-8 b(or)32 b(example)f(these)f -(statemen)m(ts:)95 3523 y Fe(-VEL*;)333 b(#)47 b(remove)f(single)h +(statemen)m(ts:)95 5017 y Fe(-VEL*;)333 b(#)47 b(remove)f(single)h (column)f(\(or)h(keyword\))e(beginning)g(with)i(VEL)95 -3636 y(-VEL_?;)285 b(#)47 b(remove)f(single)h(column)f(\(or)h +5130 y(-VEL_?;)285 b(#)47 b(remove)f(single)h(column)f(\(or)h (keyword\))e(VEL_?)h(where)h(?)g(is)g(any)g(character)95 -3749 y(-#DEC_*;)237 b(#)47 b(remove)f(single)h(keyword)e(beginning)h -(with)g(DEC_)95 3862 y(-#TUNIT#;)189 b(#)47 b(remove)f(single)h -(keyword)e(TUNIT)i(ending)f(w.)h(number)0 4071 y Fj(will)28 +5243 y(-#DEC_*;)237 b(#)47 b(remove)f(single)h(keyword)e(beginning)h +(with)g(DEC_)95 5356 y(-#TUNIT#;)189 b(#)47 b(remove)f(single)h +(keyword)e(TUNIT)i(ending)f(w.)h(number)0 5601 y Fj(will)28 b(remo)m(v)m(e)h(the)e(columns)h(or)f(k)m(eyw)m(ords)h(as)f(noted.)40 b(Be)29 b(a)m(w)m(are)f(that)g(if)g(a)g Fe('#')e Fj(is)i(not)f(presen)m -(t,)i(the)e(CFITSIO)0 4184 y(engine)k(will)g(c)m(hec)m(k)g(for)g +(t,)i(the)e(CFITSIO)0 5714 y(engine)k(will)g(c)m(hec)m(k)g(for)g (columns)f(with)g(the)g(giv)m(en)i(name)e(\014rst,)g(follo)m(w)m(ed)i -(b)m(y)e(k)m(eyw)m(ords.)0 4344 y(The)21 b(ab)s(o)m(v)m(e)i -(expressions)e(will)g(only)h(delete)g(the)g Fa(\014rst)g -Fj(item)g(whic)m(h)f(matc)m(hes)i(the)f(pattern.)37 b(If)21 -b(follo)m(wing)i(columns)0 4457 y(or)38 b(k)m(eyw)m(ords)f(in)h(the)g -(same)g(CHDU)f(matc)m(h)i(the)f(pattern,)h(they)f(will)g(not)g(b)s(e)f -(deleted.)63 b(T)-8 b(o)38 b(delete)h Fa(zer)-5 b(o)40 -b(or)0 4570 y(mor)-5 b(e)32 b Fj(k)m(eyw)m(ords)e(that)h(matc)m(h)h -(the)e(pattern,)h(add)f(a)g(trailing)i Fe('+')p Fj(.)95 -4780 y Fe(-VEL*;)381 b(#)47 b(remove)f(all)h(columns)f(\(or)h -(keywords\))e(beginning)g(with)i(VEL)95 4893 y(-VEL_?;)333 +(b)m(y)e(k)m(eyw)m(ords.)p eop end +%%Page: 144 152 +TeXDict begin 144 151 bop 0 299 a Fj(144)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(The)21 b(ab)s(o)m(v)m(e)i(expressions)e(will)g(only)h(delete)g +(the)g Fa(\014rst)g Fj(item)g(whic)m(h)f(matc)m(hes)i(the)f(pattern.)37 +b(If)21 b(follo)m(wing)i(columns)0 668 y(or)38 b(k)m(eyw)m(ords)f(in)h +(the)g(same)g(CHDU)f(matc)m(h)i(the)f(pattern,)h(they)f(will)g(not)g(b) +s(e)f(deleted.)63 b(T)-8 b(o)38 b(delete)h Fa(zer)-5 +b(o)40 b(or)0 781 y(mor)-5 b(e)32 b Fj(k)m(eyw)m(ords)e(that)h(matc)m +(h)h(the)e(pattern,)h(add)f(a)g(trailing)i Fe('+')p Fj(.)95 +1077 y Fe(-VEL*+;)333 b(#)47 b(remove)f(all)h(columns)f(\(or)h +(keywords\))e(beginning)g(with)i(VEL)95 1190 y(-VEL_?+;)285 b(#)47 b(remove)f(all)h(columns)f(\(or)h(keyword\))e(VEL_?)i(where)f(?) -i(is)f(any)g(character)95 5005 y(-#DEC_*+;)237 b(#)47 +i(is)f(any)g(character)95 1303 y(-#DEC_*+;)237 b(#)47 b(remove)f(all)h(keywords)f(beginning)f(with)i(DEC_)95 -5118 y(-#TUNIT#+;)189 b(#)47 b(remove)f(all)h(keywords)f(TUNIT)g -(ending)g(w.)h(number)0 5328 y Fj(Note)c(that,)i(as)d(a)f(0-or-more)i +1416 y(-#TUNIT#+;)189 b(#)47 b(remove)f(all)h(keywords)f(TUNIT)g +(ending)g(w.)h(number)0 1712 y Fj(Note)c(that,)i(as)d(a)f(0-or-more)i (matc)m(hing)g(pattern,)h(this)e(form)f(will)g(succeed)h(if)g(the)f -(requested)h(column)f(or)0 5441 y(k)m(eyw)m(ord)32 b(is)f(not)g(presen) +(requested)h(column)f(or)0 1825 y(k)m(eyw)m(ord)32 b(is)f(not)g(presen) m(t.)43 b(In)31 b(that)g(case,)i(the)e(deletion)i(expression)e(will)g (silen)m(tly)h(pro)s(ceed)f(as)h(if)f(no)g(deletion)0 -5554 y(w)m(as)g(requested.)0 5714 y(Examples:)p eop end -%%Page: 142 150 -TeXDict begin 142 149 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.142) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(142)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)143 555 y Fe([col)47 b(Time,)f(rate])667 b(-)47 -b(only)g(the)g(Time)g(and)g(rate)f(columns)g(will)1670 -668 y(appear)h(in)g(the)g(filtered)e(input)i(file.)143 -894 y([col)g(Time,)f(*raw])667 b(-)47 b(include)f(the)h(Time)g(column)f -(and)h(any)g(other)1670 1007 y(columns)f(whose)h(name)f(ends)h(with)g -('raw'.)143 1233 y([col)g(-TIME,)f(Good)h(==)g(STATUS])141 -b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 1346 -y(renames)g(the)h(status)f(column)g(to)i('Good')143 1571 -y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2;)e(#TUNIT#\(column)e(units\))i(=)i -('counts';*])1575 1684 y(-)f(creates)f(new)h(PI)g(column)f(from)h(PHA)g -(values)1670 1797 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword)1670 -1910 y(for)h(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670 -2023 y(expression)f(means)i(preserve)e(all)i(the)1670 -2136 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670 -2249 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670 -2362 y(the)g(output)f(table)h(would)f(only)h(contain)1670 -2475 y(the)g(single)f('PI')h(column.)143 2700 y([col)g(rate)f(=)i +1938 y(w)m(as)g(requested.)0 2098 y(Examples:)143 2439 +y Fe([col)47 b(Time,)f(rate])667 b(-)47 b(only)g(the)g(Time)g(and)g +(rate)f(columns)g(will)1670 2552 y(appear)h(in)g(the)g(filtered)e +(input)i(file.)143 2778 y([col)g(Time,)f(*raw])667 b(-)47 +b(include)f(the)h(Time)g(column)f(and)h(any)g(other)1670 +2891 y(columns)f(whose)h(name)f(ends)h(with)g('raw'.)143 +3117 y([col)g(-TIME,)f(Good)h(==)g(STATUS])141 b(-)47 +b(deletes)f(the)h(TIME)g(column)f(and)1670 3230 y(renames)g(the)h +(status)f(column)g(to)i('Good')143 3456 y([col)f(PI=PHA)f(*)h(1.1)g(+)h +(0.2;)e(#TUNIT#\(column)e(units\))i(=)i('counts';*])1575 +3569 y(-)f(creates)f(new)h(PI)g(column)f(from)h(PHA)g(values)1670 +3681 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword)1670 +3794 y(for)h(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670 +3907 y(expression)f(means)i(preserve)e(all)i(the)1670 +4020 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670 +4133 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670 +4246 y(the)g(output)f(table)h(would)f(only)h(contain)1670 +4359 y(the)g(single)f('PI')h(column.)143 4585 y([col)g(rate)f(=)i (rate/exposure;)c(TUNIT#\(&\))h(=)j('counts/s';*])1575 -2813 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670 -2926 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670 -3039 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670 -3152 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670 -3265 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670 -3378 y(string)h(means)f(preserve)f(the)i(existing)1670 -3491 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670 -3604 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670 -3717 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670 -3830 y(output)g(table.)0 4035 y -SDict begin H.S end - 0 4035 a 0 4035 a -SDict begin 13.6 H.A end - 0 4035 -a 0 4035 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.11) cvn /DEST pdfmark -end - 0 4035 a 177 x Ff(10.11)136 b(Ro)l(w)46 b(Filtering)g(Sp)t -(eci\014cation)0 4472 y Fj(When)29 b(en)m(tering)h(the)f(name)g(of)g(a) -g(FITS)f(table)i(that)g(is)e(to)i(b)s(e)e(op)s(ened)h(b)m(y)f(a)i -(program,)f(an)g(optional)h(ro)m(w)f(\014lter)0 4585 -y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f(to)h(select)h(a)g(subset)e(of)h -(the)g(ro)m(ws)f(in)h(the)g(table.)43 b(A)31 b(temp)s(orary)f(new)g -(FITS)g(\014le)h(is)g(created)0 4698 y(on)40 b(the)f(\015y)g(whic)m(h)h -(con)m(tains)h(only)e(those)h(ro)m(ws)g(for)f(whic)m(h)h(the)g(ro)m(w)f -(\014lter)h(expression)f(ev)-5 b(aluates)42 b(to)e(true.)0 -4811 y(The)29 b(primary)f(arra)m(y)i(and)f(an)m(y)g(other)h(extensions) -g(in)f(the)g(input)g(\014le)g(are)h(also)g(copied)g(to)g(the)g(temp)s -(orary)f(\014le.)0 4924 y(\(If)35 b(a)h(`#')f(c)m(haracter)i(is)e(app)s -(ended)e(to)j(the)g(name)f(or)g(n)m(um)m(b)s(er)f(of)h(the)g(table)h -(HDU)g(then)f(only)g(the)h(primary)0 5036 y(arra)m(y)-8 -b(,)37 b(and)d(none)h(of)g(the)g(other)g(HDUs)h(in)e(the)i(input)e -(\014le)g(will)i(b)s(e)e(copied)h(in)m(to)h(the)f(temp)s(orary)g -(\014le\).)54 b(The)0 5149 y(original)30 b(FITS)f(\014le)g(is)g(closed) -h(and)e(the)i(new)e(virtual)i(\014le)f(is)g(op)s(ened)f(b)m(y)h(the)h -(application)g(program.)40 b(The)29 b(ro)m(w)0 5262 y(\014lter)37 -b(expression)g(is)h(enclosed)g(in)f(square)g(brac)m(k)m(ets)i(follo)m -(wing)g(the)e(\014le)h(name)f(and)g(extension)h(name)f(\(e.g.,)0 -5375 y('\014le.\014ts[ev)m(en)m(ts][GRADE==50]')29 b(selects)d(only)f -(those)h(ro)m(ws)f(where)f(the)h(GRADE)h(column)f(v)-5 -b(alue)25 b(equals)g(50\).)0 5488 y(When)33 b(dealing)h(with)f(tables)g -(where)g(eac)m(h)h(ro)m(w)f(has)g(an)g(asso)s(ciated)i(time)f(and/or)f -(2D)g(spatial)i(p)s(osition,)f(the)0 5601 y(ro)m(w)e(\014lter)h -(expression)e(can)i(also)g(b)s(e)f(used)f(to)i(select)h(ro)m(ws)e -(based)g(on)g(the)g(times)h(in)f(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5 -b(als)0 5714 y(\(GTI\))31 b(extension,)g(or)f(on)h(spatial)g(p)s -(osition)g(as)f(giv)m(en)i(in)e(a)g(SA)m(O-st)m(yle)i(region)f(\014le.) -p eop end -%%Page: 143 151 -TeXDict begin 143 150 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.143) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.11.)73 -b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 -b Fj(143)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.1) cvn /DEST pdfmark -end - 0 464 -a 91 x Fd(10.11.1)113 b(General)38 b(Syn)m(tax)0 774 -y Fj(The)32 b(ro)m(w)h(\014ltering)g(expression)g(can)g(b)s(e)f(an)h -(arbitrarily)g(complex)g(series)g(of)g(op)s(erations)g(p)s(erformed)f -(on)g(con-)0 887 y(stan)m(ts,)39 b(k)m(eyw)m(ord)e(v)-5 -b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f(from)f(the)h(sp)s -(eci\014ed)e(FITS)h(T)-8 b(ABLE)37 b(extension.)59 b(The)0 -1000 y(expression)37 b(m)m(ust)h(ev)-5 b(aluate)39 b(to)g(a)f(b)s(o)s -(olean)g(v)-5 b(alue)38 b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k -(where)c(a)h(v)-5 b(alue)39 b(of)e(F)-10 b(ALSE)0 1113 -y(means)30 b(that)h(the)g(ro)m(w)f(will)h(b)s(e)f(excluded.)0 -1273 y(F)-8 b(or)34 b(complex)g(or)g(commonly)f(used)g(\014lters,)h -(one)g(can)g(place)g(the)g(expression)f(in)m(to)h(a)g(text)g(\014le)g -(and)f(imp)s(ort)f(it)0 1386 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g -(using)f(the)h(syn)m(tax)g('[@\014lename.txt]'.)61 b(The)36 -b(expression)h(can)f(b)s(e)g(arbitrarily)h(complex)0 -1499 y(and)27 b(extend)i(o)m(v)m(er)g(m)m(ultiple)g(lines)f(of)g(the)h -(\014le.)40 b(An)m(y)28 b(lines)g(in)g(the)g(external)h(text)g(\014le)f -(that)h(b)s(egin)f(with)g(2)g(slash)0 1612 y(c)m(haracters)k(\('//'\))g -(will)f(b)s(e)f(ignored)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f -(commen)m(ts)h(in)m(to)h(the)e(\014le.)0 1772 y(Keyw)m(ord)37 -b(and)f(column)g(data)i(are)f(referenced)g(b)m(y)g(name.)60 -b(An)m(y)37 b(string)f(of)h(c)m(haracters)i(not)e(surrounded)d(b)m(y)0 -1885 y(quotes)41 b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w) -m(ed)i(b)m(y)f(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f -(name\))h(will)g(b)s(e)0 1998 y(initially)d(in)m(terpreted)e(as)h(a)g -(column)f(name)g(and)g(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f -(ro)m(w)g(inserted)g(in)m(to)i(the)e(ex-)0 2111 y(pression.)k(If)28 +4698 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670 +4811 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670 +4924 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670 +5036 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670 +5149 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670 +5262 y(string)h(means)f(preserve)f(the)i(existing)1670 +5375 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670 +5488 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670 +5601 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670 +5714 y(output)g(table.)p eop end +%%Page: 145 153 +TeXDict begin 145 152 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(145)0 +555 y Ff(10.11)136 b(Ro)l(w)46 b(Filtering)g(Sp)t(eci\014cation)0 +806 y Fj(When)29 b(en)m(tering)h(the)f(name)g(of)g(a)g(FITS)f(table)i +(that)g(is)e(to)i(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g +(optional)h(ro)m(w)f(\014lter)0 919 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f +(to)h(select)h(a)g(subset)e(of)h(the)g(ro)m(ws)f(in)h(the)g(table.)43 +b(A)31 b(temp)s(orary)f(new)g(FITS)g(\014le)h(is)g(created)0 +1032 y(on)40 b(the)f(\015y)g(whic)m(h)h(con)m(tains)h(only)e(those)h +(ro)m(ws)g(for)f(whic)m(h)h(the)g(ro)m(w)f(\014lter)h(expression)f(ev) +-5 b(aluates)42 b(to)e(true.)0 1145 y(The)29 b(primary)f(arra)m(y)i +(and)f(an)m(y)g(other)h(extensions)g(in)f(the)g(input)g(\014le)g(are)h +(also)g(copied)g(to)g(the)g(temp)s(orary)f(\014le.)0 +1258 y(\(If)35 b(a)h(`#')f(c)m(haracter)i(is)e(app)s(ended)e(to)j(the)g +(name)f(or)g(n)m(um)m(b)s(er)f(of)h(the)g(table)h(HDU)g(then)f(only)g +(the)h(primary)0 1371 y(arra)m(y)-8 b(,)37 b(and)d(none)h(of)g(the)g +(other)g(HDUs)h(in)e(the)i(input)e(\014le)g(will)i(b)s(e)e(copied)h(in) +m(to)h(the)f(temp)s(orary)g(\014le\).)54 b(The)0 1484 +y(original)30 b(FITS)f(\014le)g(is)g(closed)h(and)e(the)i(new)e +(virtual)i(\014le)f(is)g(op)s(ened)f(b)m(y)h(the)h(application)g +(program.)40 b(The)29 b(ro)m(w)0 1597 y(\014lter)37 b(expression)g(is)h +(enclosed)g(in)f(square)g(brac)m(k)m(ets)i(follo)m(wing)g(the)e(\014le) +h(name)f(and)g(extension)h(name)f(\(e.g.,)0 1710 y('\014le.\014ts[ev)m +(en)m(ts][GRADE==50]')29 b(selects)d(only)f(those)h(ro)m(ws)f(where)f +(the)h(GRADE)h(column)f(v)-5 b(alue)25 b(equals)g(50\).)0 +1823 y(When)33 b(dealing)h(with)f(tables)g(where)g(eac)m(h)h(ro)m(w)f +(has)g(an)g(asso)s(ciated)i(time)f(and/or)f(2D)g(spatial)i(p)s +(osition,)f(the)0 1936 y(ro)m(w)e(\014lter)h(expression)e(can)i(also)g +(b)s(e)f(used)f(to)i(select)h(ro)m(ws)e(based)g(on)g(the)g(times)h(in)f +(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5 b(als)0 2048 y(\(GTI\))31 +b(extension,)g(or)f(on)h(spatial)g(p)s(osition)g(as)f(giv)m(en)i(in)e +(a)g(SA)m(O-st)m(yle)i(region)f(\014le.)0 2344 y Fd(10.11.1)113 +b(General)38 b(Syn)m(tax)0 2564 y Fj(The)32 b(ro)m(w)h(\014ltering)g +(expression)g(can)g(b)s(e)f(an)h(arbitrarily)g(complex)g(series)g(of)g +(op)s(erations)g(p)s(erformed)f(on)g(con-)0 2677 y(stan)m(ts,)39 +b(k)m(eyw)m(ord)e(v)-5 b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f +(from)f(the)h(sp)s(eci\014ed)e(FITS)h(T)-8 b(ABLE)37 +b(extension.)59 b(The)0 2790 y(expression)37 b(m)m(ust)h(ev)-5 +b(aluate)39 b(to)g(a)f(b)s(o)s(olean)g(v)-5 b(alue)38 +b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k(where)c(a)h(v)-5 +b(alue)39 b(of)e(F)-10 b(ALSE)0 2903 y(means)30 b(that)h(the)g(ro)m(w)f +(will)h(b)s(e)f(excluded.)0 3063 y(F)-8 b(or)34 b(complex)g(or)g +(commonly)f(used)g(\014lters,)h(one)g(can)g(place)g(the)g(expression)f +(in)m(to)h(a)g(text)g(\014le)g(and)f(imp)s(ort)f(it)0 +3176 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g(using)f(the)h(syn)m(tax)g +('[@\014lename.txt]'.)61 b(The)36 b(expression)h(can)f(b)s(e)g +(arbitrarily)h(complex)0 3289 y(and)27 b(extend)i(o)m(v)m(er)g(m)m +(ultiple)g(lines)f(of)g(the)h(\014le.)40 b(An)m(y)28 +b(lines)g(in)g(the)g(external)h(text)g(\014le)f(that)h(b)s(egin)f(with) +g(2)g(slash)0 3402 y(c)m(haracters)k(\('//'\))g(will)f(b)s(e)f(ignored) +g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the) +e(\014le.)0 3562 y(Keyw)m(ord)37 b(and)f(column)g(data)i(are)f +(referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)f(of)h(c)m +(haracters)i(not)e(surrounded)d(b)m(y)0 3675 y(quotes)41 +b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w)m(ed)i(b)m(y)f +(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f(name\))h(will)g +(b)s(e)0 3788 y(initially)d(in)m(terpreted)e(as)h(a)g(column)f(name)g +(and)g(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f(ro)m(w)g +(inserted)g(in)m(to)i(the)e(ex-)0 3901 y(pression.)k(If)28 b(no)h(suc)m(h)g(column)g(exists,)h(a)g(k)m(eyw)m(ord)f(of)h(that)f (name)g(will)h(b)s(e)e(searc)m(hed)i(for)f(and)f(its)i(v)-5 -b(alue)29 b(used,)0 2223 y(if)36 b(found.)55 b(T)-8 b(o)36 +b(alue)29 b(used,)0 4014 y(if)36 b(found.)55 b(T)-8 b(o)36 b(force)g(the)g(name)g(to)h(b)s(e)e(in)m(terpreted)h(as)g(a)g(k)m(eyw)m (ord)g(\(in)g(case)g(there)g(is)g(b)s(oth)f(a)h(column)g(and)0 -2336 y(k)m(eyw)m(ord)41 b(with)e(the)i(same)f(name\),)j(precede)d(the)h +4127 y(k)m(eyw)m(ord)41 b(with)e(the)i(same)f(name\),)j(precede)d(the)h (k)m(eyw)m(ord)f(name)g(with)g(a)h(single)f(p)s(ound)e(sign,)43 -b('#',)g(as)d(in)0 2449 y('#NAXIS2'.)g(Due)27 b(to)g(the)f +b('#',)g(as)d(in)0 4240 y('#NAXIS2'.)g(Due)27 b(to)g(the)f (generalities)j(of)d(FITS)g(column)g(and)g(k)m(eyw)m(ord)h(names,)g(if) -f(the)h(column)f(or)g(k)m(eyw)m(ord)0 2562 y(name)33 +f(the)h(column)f(or)g(k)m(eyw)m(ord)0 4353 y(name)33 b(con)m(tains)h(a)f(space)h(or)f(a)g(c)m(haracter)h(whic)m(h)f(migh)m (t)h(app)s(ear)e(as)h(an)g(arithmetic)h(term)f(then)g(enclose)h(the)0 -2675 y(name)c(in)g('$')i(c)m(haracters)g(as)e(in)g($MAX)i(PHA$)f(or)f +4465 y(name)c(in)g('$')i(c)m(haracters)g(as)e(in)g($MAX)i(PHA$)f(or)f (#$MAX-PHA$.)43 b(Names)31 b(are)f(case)i(insensitiv)m(e.)0 -2835 y(T)-8 b(o)32 b(access)g(a)g(table)g(en)m(try)g(in)f(a)h(ro)m(w)f +4626 y(T)-8 b(o)32 b(access)g(a)g(table)g(en)m(try)g(in)f(a)h(ro)m(w)f (other)h(than)f(the)g(curren)m(t)g(one,)h(follo)m(w)h(the)e(column's)h -(name)f(with)g(a)h(ro)m(w)0 2948 y(o\013set)37 b(within)e(curly)g +(name)f(with)g(a)h(ro)m(w)0 4738 y(o\013set)37 b(within)e(curly)g (braces.)57 b(F)-8 b(or)36 b(example,)i('PHA)p Fc(f)p Fj(-3)p Fc(g)p Fj(')g(will)e(ev)-5 b(aluate)38 b(to)e(the)g(v)-5 -b(alue)36 b(of)g(column)f(PHA,)i(3)0 3061 y(ro)m(ws)28 +b(alue)36 b(of)g(column)f(PHA,)i(3)0 4851 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s(eing)g(pro)s (cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)f(an)g(absolute)h(ro)m(w)f -(n)m(um)m(b)s(er,)g(only)h(a)0 3174 y(relativ)m(e)j(o\013set.)42 +(n)m(um)m(b)s(er,)g(only)h(a)0 4964 y(relativ)m(e)j(o\013set.)42 b(Ro)m(ws)31 b(that)g(fall)g(outside)g(the)f(table)h(will)g(b)s(e)f -(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 3334 y(Bo)s(olean)h(op)s -(erators)f(can)g(b)s(e)f(used)f(in)i(the)f(expression)h(in)f(either)h -(their)g(F)-8 b(ortran)31 b(or)f(C)h(forms.)40 b(The)30 -b(follo)m(wing)0 3447 y(b)s(o)s(olean)g(op)s(erators)h(are)g(a)m(v)-5 -b(ailable:)191 3698 y Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 -b("not)46 b(equal")476 b(.ne.)94 b(.NE.)h(!=)191 3811 -y("less)46 b(than")238 b(.lt.)46 b(.LT.)h(<)143 b("less)46 -b(than/equal")188 b(.le.)94 b(.LE.)h(<=)47 b(=<)191 3923 -y("greater)e(than")95 b(.gt.)46 b(.GT.)h(>)143 b("greater)45 -b(than/equal")g(.ge.)94 b(.GE.)h(>=)47 b(=>)191 4036 -y("or")572 b(.or.)46 b(.OR.)h(||)95 b("and")762 b(.and.)46 -b(.AND.)h(&&)191 4149 y("negation")236 b(.not.)46 b(.NOT.)h(!)95 -b("approx.)45 b(equal\(1e-7\)")92 b(~)0 4400 y Fj(Note)32 -b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(')10 b(!',)33 -b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g(it)g(is)g -(used)f(on)h(the)g(command)0 4513 y(line)i(rather)f(than)h(en)m(tered)g -(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g(preceded)h(b)m(y)f(a) -h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0 4626 y(shell)e(to)g(ignore)g -(it.)0 4786 y(The)h(expression)g(ma)m(y)i(also)f(include)f(arithmetic)i -(op)s(erators)f(and)f(functions.)47 b(T)-8 b(rigonometric)34 -b(functions)e(use)0 4899 y(radians,)23 b(not)g(degrees.)38 -b(The)22 b(follo)m(wing)h(arithmetic)g(op)s(erators)g(and)e(functions)g -(can)i(b)s(e)e(used)g(in)h(the)g(expression)0 5012 y(\(function)38 -b(names)f(are)h(case)g(insensitiv)m(e\).)64 b(A)37 b(n)m(ull)h(v)-5 -b(alue)38 b(will)f(b)s(e)g(returned)g(in)g(case)h(of)g(illegal)i(op)s -(erations)0 5125 y(suc)m(h)30 b(as)h(divide)f(b)m(y)g(zero,)i -(sqrt\(negativ)m(e\))h(log\(negativ)m(e\),)h(log10\(negativ)m(e\),)i -(arccos\(.gt.)43 b(1\),)32 b(arcsin\(.gt.)42 b(1\).)191 -5375 y Fe("addition")474 b(+)j("subtraction")d(-)191 -5488 y("multiplication")186 b(*)477 b("division")618 -b(/)191 5601 y("negation")474 b(-)j("exponentiation")330 -b(**)143 b(^)191 5714 y("absolute)45 b(value")189 b(abs\(x\))237 -b("cosine")762 b(cos\(x\))p eop end -%%Page: 144 152 -TeXDict begin 144 151 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.144) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(144)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)191 555 y Fe("sine")666 b(sin\(x\))237 b("tangent")714 -b(tan\(x\))191 668 y("arc)47 b(cosine")379 b(arccos\(x\))93 -b("arc)47 b(sine")667 b(arcsin\(x\))191 781 y("arc)47 -b(tangent")331 b(arctan\(x\))93 b("arc)47 b(tangent")523 -b(arctan2\(y,x\))191 894 y("hyperbolic)45 b(cos")189 -b(cosh\(x\))g("hyperbolic)45 b(sin")381 b(sinh\(x\))191 -1007 y("hyperbolic)45 b(tan")189 b(tanh\(x\))g("round)47 -b(to)g(nearest)f(int")94 b(round\(x\))191 1120 y("round)46 -b(down)h(to)g(int")f(floor\(x\))141 b("round)47 b(up)g(to)g(int")333 -b(ceil\(x\))191 1233 y("exponential")d(exp\(x\))237 b("square)46 -b(root")524 b(sqrt\(x\))191 1346 y("natural)45 b(log")333 -b(log\(x\))237 b("common)46 b(log")572 b(log10\(x\))191 -1458 y("modulus")522 b(x)48 b(\045)f(y)286 b("random)46 -b(#)i([0.0,1.0\)")188 b(random\(\))191 1571 y("random)46 -b(Gaussian")140 b(randomn\(\))93 b("random)46 b(Poisson")380 -b(randomp\(x\))191 1684 y("minimum")522 b(min\(x,y\))141 -b("maximum")714 b(max\(x,y\))191 1797 y("cumulative)45 -b(sum")189 b(accum\(x\))141 b("sequential)45 b(difference")g -(seqdiff\(x\))191 1910 y("if-then-else")282 b(b?x:y)191 -2023 y("angular)45 b(separation")93 b(angsep\(ra1,dec1,ra2,de2\))41 -b(\(all)47 b(in)g(degrees\))191 2136 y("substring")283 -b(strmid\(s,p,n\))44 b("string)i(search")428 b(strstr\(s,r\))0 -2382 y Fj(Three)30 b(di\013eren)m(t)h(random)f(n)m(um)m(b)s(er)f -(functions)h(are)h(pro)m(vided:)41 b(random\(\),)30 b(with)h(no)f -(argumen)m(ts,)h(pro)s(duces)f(a)0 2495 y(uniform)g(random)f(deviate)k -(b)s(et)m(w)m(een)e(0)g(and)f(1;)i(randomn\(\),)e(also)i(with)e(no)h -(argumen)m(ts,)g(pro)s(duces)f(a)h(normal)0 2608 y(\(Gaussian\))k -(random)e(deviate)j(with)e(zero)h(mean)f(and)g(unit)f(standard)h -(deviation;)j(randomp\(x\))d(pro)s(duces)f(a)0 2721 y(P)m(oisson)27 -b(random)f(deviate)h(whose)f(exp)s(ected)h(n)m(um)m(b)s(er)e(of)h(coun) -m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s(e)e(an)m(y)i(p)s(ositiv)m(e)g(real)g -(n)m(um)m(b)s(er)0 2833 y(of)k(exp)s(ected)f(coun)m(ts,)h(including)f -(fractional)i(v)-5 b(alues,)31 b(but)f(the)g(return)g(v)-5 -b(alue)31 b(is)f(an)g(in)m(teger.)0 2994 y(When)d(the)g(random)g -(functions)f(are)i(used)e(in)h(a)h(v)m(ector)g(expression,)g(b)m(y)f -(default)h(the)f(same)h(random)e(v)-5 b(alue)28 b(will)0 -3107 y(b)s(e)g(used)f(when)h(ev)-5 b(aluating)30 b(eac)m(h)f(elemen)m -(t)h(of)f(the)g(v)m(ector.)41 b(If)28 b(di\013eren)m(t)h(random)f(n)m -(um)m(b)s(ers)f(are)i(desired,)f(then)0 3219 y(the)37 -b(name)g(of)g(a)g(v)m(ector)i(column)e(should)e(b)s(e)i(supplied)e(as)i -(the)h(single)f(argumen)m(t)g(to)h(the)f(random)f(function)0 -3332 y(\(e.g.,)31 b("\015ux)c(+)h(0.1)h(*)g(random\(\015ux\)",)f(where) -g("\015ux')g(is)g(the)g(name)h(of)f(a)h(v)m(ector)h(column\).)40 -b(This)27 b(will)i(create)h(a)0 3445 y(v)m(ector)d(of)f(random)f(n)m -(um)m(b)s(ers)f(that)i(will)g(b)s(e)f(used)f(in)i(sequence)g(when)e(ev) --5 b(aluating)27 b(eac)m(h)g(elemen)m(t)g(of)f(the)f(v)m(ector)0 -3558 y(expression.)0 3718 y(An)31 b(alternate)i(syn)m(tax)f(for)f(the)g -(min)g(and)g(max)g(functions)g(has)g(only)g(a)h(single)g(argumen)m(t)g -(whic)m(h)f(should)f(b)s(e)h(a)0 3831 y(v)m(ector)g(v)-5 -b(alue)30 b(\(see)g(b)s(elo)m(w\).)41 b(The)29 b(result)g(will)h(b)s(e) -e(the)i(minim)m(um/maxim)m(um)f(elemen)m(t)h(con)m(tained)h(within)e -(the)0 3944 y(v)m(ector.)0 4104 y(The)35 b(accum\(x\))i(function)f -(forms)f(the)h(cum)m(ulativ)m(e)i(sum)d(of)h(x,)h(elemen)m(t)h(b)m(y)e -(elemen)m(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 4217 -y(supp)s(orted)h(simply)h(b)m(y)g(p)s(erforming)f(the)i(summation)g -(pro)s(cess)f(through)f(all)j(the)f(v)-5 b(alues.)65 -b(Null)39 b(v)-5 b(alues)39 b(are)0 4330 y(treated)30 -b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))h(function)e(forms)h(the)g -(sequen)m(tial)i(di\013erence)e(of)h(x,)f(elemen)m(t)i(b)m(y)e(elemen)m -(t.)41 b(The)0 4443 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g -(is)g(the)g(\014rst)g(v)-5 b(alue)37 b(of)g(x.)61 b(A)37 -b(single)h(n)m(ull)f(v)-5 b(alue)38 b(in)e(x)h(causes)h(a)f(pair)g(of)g -(n)m(ulls)g(in)g(the)0 4556 y(output.)55 b(The)35 b(seqdi\013)g(and)g -(accum)g(functions)g(are)h(functional)f(in)m(v)m(erses,)j(i.e.,)g -(seqdi\013\(accum\(x\)\))f(==)e(x)g(as)0 4669 y(long)c(as)g(no)f(n)m -(ull)g(v)-5 b(alues)31 b(are)g(presen)m(t.)0 4829 y(In)36 -b(the)h(if-then-else)i(expression,)f("b?x:y",)i(b)c(is)h(an)g(explicit) -h(b)s(o)s(olean)f(v)-5 b(alue)37 b(or)g(expression.)61 -b(There)36 b(is)h(no)0 4942 y(automatic)d(t)m(yp)s(e)e(con)m(v)m -(ersion)h(from)e(n)m(umeric)h(to)g(b)s(o)s(olean)g(v)-5 -b(alues,)33 b(so)f(one)g(needs)f(to)i(use)e("iV)-8 b(al!=0")35 -b(instead)0 5055 y(of)30 b(merely)g("iV)-8 b(al")32 b(as)e(the)g(b)s(o) -s(olean)g(argumen)m(t.)41 b(x)30 b(and)f(y)h(can)g(b)s(e)f(an)m(y)h -(scalar)h(data)g(t)m(yp)s(e)f(\(including)f(string\).)0 -5215 y(The)22 b(angsep)g(function)f(computes)i(the)f(angular)g -(separation)h(in)e(degrees)i(b)s(et)m(w)m(een)g(2)f(celestial)j(p)s -(ositions,)e(where)0 5328 y(the)36 b(\014rst)f(2)h(parameters)g(giv)m -(e)h(the)f(RA-lik)m(e)i(and)d(Dec-lik)m(e)j(co)s(ordinates)f(\(in)f -(decimal)g(degrees\))h(of)f(the)g(\014rst)0 5441 y(p)s(osition,)31 -b(and)e(the)i(3rd)f(and)g(4th)g(parameters)h(giv)m(e)h(the)e(co)s -(ordinates)i(of)e(the)h(second)f(p)s(osition.)0 5601 -y(The)38 b(substring)f(function)i(strmid\(S,P)-8 b(,N\))39 -b(extracts)g(a)g(substring)f(from)g(S,)g(starting)h(at)g(string)g(p)s -(osition)f(P)-8 b(,)0 5714 y(with)33 b(a)h(substring)f(length)h(N.)g -(The)f(\014rst)g(c)m(haracter)j(p)s(osition)d(in)h(S)f(is)h(lab)s(eled) -g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to)p -eop end -%%Page: 145 153 -TeXDict begin 145 152 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.145) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.11.)73 -b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 -b Fj(145)0 555 y(a)35 b(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i -(S,)g(then)f(the)h(extracted)h(substring)d(will)i(b)s(e)f(NULL.)h(S,)f -(P)-8 b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 668 y(functions)30 -b(of)g(other)h(columns.)0 828 y(The)39 b(string)h(searc)m(h)h(function) -e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s(ccurrence)h -(of)g(the)g(substring)f(R)h(in)f(S.)0 941 y(The)c(result)h(is)f(an)h -(in)m(teger,)i(indicating)f(the)e(c)m(haracter)i(p)s(osition)f(of)g -(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h(is)g(the)g(\014rst)0 -1054 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f(If)g(no)h(matc)m(h)g -(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i(NULL)f(v)-5 -b(alue.)0 1214 y(The)38 b(follo)m(wing)i(t)m(yp)s(e)f(casting)h(op)s -(erators)f(are)g(a)m(v)-5 b(ailable,)44 b(where)38 b(the)h(inclosing)h -(paren)m(theses)f(are)g(required)0 1327 y(and)30 b(tak)m(en)h(from)f -(the)h(C)f(language)h(usage.)42 b(Also,)31 b(the)g(in)m(teger)g(to)h -(real)f(casts)g(v)-5 b(alues)30 b(to)i(double)e(precision:)764 -1593 y Fe("real)46 b(to)h(integer")189 b(\(int\))46 b(x)239 -b(\(INT\))46 b(x)764 1706 y("integer)f(to)i(real")190 -b(\(float\))46 b(i)143 b(\(FLOAT\))45 b(i)0 1972 y Fj(In)30 -b(addition,)g(sev)m(eral)i(constan)m(ts)g(are)f(built)f(in)g(for)g(use) -g(in)g(n)m(umerical)h(expressions:)382 2238 y Fe(#pi)667 -b(3.1415...)284 b(#e)620 b(2.7182...)382 2351 y(#deg)f(#pi/180)380 -b(#row)524 b(current)46 b(row)h(number)382 2464 y(#null)428 -b(undefined)45 b(value)142 b(#snull)428 b(undefined)45 -b(string)0 2730 y Fj(A)40 b(string)f(constan)m(t)i(m)m(ust)e(b)s(e)g -(enclosed)h(in)g(quotes)g(as)f(in)h('Crab'.)67 b(The)39 -b("n)m(ull")i(constan)m(ts)f(are)g(useful)f(for)0 2843 -y(conditionally)g(setting)g(table)g(v)-5 b(alues)38 b(to)g(a)g(NULL,)g -(or)g(unde\014ned,)f(v)-5 b(alue)39 b(\(eg.,)i("col1==-99)f(?)62 -b(#NULL)38 b(:)0 2955 y(col1"\).)0 3116 y(There)27 b(is)g(also)i(a)e -(function)g(for)h(testing)g(if)f(t)m(w)m(o)i(v)-5 b(alues)28 -b(are)g(close)g(to)h(eac)m(h)f(other,)h(i.e.,)g(if)e(they)h(are)g -("near")g(eac)m(h)0 3229 y(other)c(to)h(within)e(a)h(user)g(sp)s -(eci\014ed)f(tolerance.)40 b(The)24 b(argumen)m(ts,)h(v)-5 -b(alue)p 2502 3229 28 4 v 34 w(1)24 b(and)f(v)-5 b(alue)p -2979 3229 V 33 w(2)25 b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0 -3341 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 +(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 5124 y(When)36 +b(using)f(ro)m(w)h(\014ltering)g(to)g(op)s(en)g(a)g(\014le)g(\\on)g +(the)g(\015y)-8 b(,")38 b(it)e(is)g(p)s(ermitted)f(to)i(use)e(m)m +(ultiple)i(ro)m(w)f(\014ltering)0 5237 y(expressions.)k(F)-8 +b(or)31 b(example,)h(the)e(expression)95 5476 y Fe(filename.fits[#ROW) +43 b(>)48 b(5][X.gt.7])0 5714 y Fj(w)m(ould)30 b(b)s(e)g(treated)h(as)g +(equiv)-5 b(alen)m(t)32 b(to)f(joining)f(the)h(expressions)f(with)g +(logical)j(\\and")d(lik)m(e)i(this,)p eop end +%%Page: 146 154 +TeXDict begin 146 153 bop 0 299 a Fj(146)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)95 +555 y Fe(filename.fits[\(#ROW)43 b(>)k(5\)&&\(X.gt.7\)])0 +782 y Fj(Please)35 b(note)g(that)g(if)g(m)m(ultiple)g(ro)m(w)f +(\014ltering)h(expressions)e(are)i(used,)g(it)g(is)f(not)h(p)s +(ermitted)e(to)i(also)h(use)e(the)0 895 y Fe([@filename.txt])26 +b Fj(syn)m(tax)31 b(in)f(an)m(y)h(of)f(the)h(individual)f(expressions.) +0 1055 y(Bo)s(olean)i(op)s(erators)f(can)g(b)s(e)f(used)f(in)i(the)f +(expression)h(in)f(either)h(their)g(F)-8 b(ortran)31 +b(or)f(C)h(forms.)40 b(The)30 b(follo)m(wing)0 1168 y(b)s(o)s(olean)g +(op)s(erators)h(are)g(a)m(v)-5 b(ailable:)191 1417 y +Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 b("not)46 b(equal")476 +b(.ne.)94 b(.NE.)h(!=)191 1530 y("less)46 b(than")238 +b(.lt.)46 b(.LT.)h(<)143 b("less)46 b(than/equal")188 +b(.le.)94 b(.LE.)h(<=)47 b(=<)191 1643 y("greater)e(than")95 +b(.gt.)46 b(.GT.)h(>)143 b("greater)45 b(than/equal")g(.ge.)94 +b(.GE.)h(>=)47 b(=>)191 1756 y("or")572 b(.or.)46 b(.OR.)h(||)95 +b("and")762 b(.and.)46 b(.AND.)h(&&)191 1869 y("negation")236 +b(.not.)46 b(.NOT.)h(!)95 b("approx.)45 b(equal\(1e-7\)")92 +b(~)0 2119 y Fj(Note)32 b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(') +10 b(!',)33 b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g +(it)g(is)g(used)f(on)h(the)g(command)0 2232 y(line)i(rather)f(than)h +(en)m(tered)g(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g +(preceded)h(b)m(y)f(a)h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0 +2344 y(shell)e(to)g(ignore)g(it.)0 2505 y(The)h(expression)g(ma)m(y)i +(also)f(include)f(arithmetic)i(op)s(erators)f(and)f(functions.)47 +b(T)-8 b(rigonometric)34 b(functions)e(use)0 2618 y(radians,)23 +b(not)g(degrees.)38 b(The)22 b(follo)m(wing)h(arithmetic)g(op)s +(erators)g(and)e(functions)g(can)i(b)s(e)e(used)g(in)h(the)g +(expression)0 2730 y(\(function)38 b(names)f(are)h(case)g(insensitiv)m +(e\).)64 b(A)37 b(n)m(ull)h(v)-5 b(alue)38 b(will)f(b)s(e)g(returned)g +(in)g(case)h(of)g(illegal)i(op)s(erations)0 2843 y(suc)m(h)30 +b(as)h(divide)f(b)m(y)g(zero,)i(sqrt\(negativ)m(e\))h(log\(negativ)m +(e\),)h(log10\(negativ)m(e\),)i(arccos\(.gt.)43 b(1\),)32 +b(arcsin\(.gt.)42 b(1\).)191 3093 y Fe("addition")522 +b(+)477 b("subtraction")d(-)191 3206 y("multiplication")234 +b(*)477 b("division")618 b(/)191 3319 y("negation")522 +b(-)477 b("exponentiation")330 b(**)143 b(^)191 3432 +y("absolute)45 b(value")237 b(abs\(x\))g("cosine")714 +b(cos\(x\))191 3545 y("sine")g(sin\(x\))237 b("tangent")666 +b(tan\(x\))191 3658 y("arc)47 b(cosine")427 b(arccos\(x\))93 +b("arc)47 b(sine")619 b(arcsin\(x\))191 3771 y("arc)47 +b(tangent")379 b(arctan\(x\))93 b("arc)47 b(tangent")475 +b(arctan2\(y,x\))191 3883 y("hyperbolic)45 b(cos")237 +b(cosh\(x\))189 b("hyperbolic)45 b(sin")333 b(sinh\(x\))191 +3996 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189 b("round)46 +b(to)h(nearest)f(int")h(round\(x\))191 4109 y("round)f(down)h(to)g +(int")94 b(floor\(x\))141 b("round)46 b(up)h(to)h(int")285 +b(ceil\(x\))191 4222 y("exponential")378 b(exp\(x\))237 +b("square)46 b(root")476 b(sqrt\(x\))191 4335 y("natural)45 +b(log")381 b(log\(x\))237 b("common)46 b(log")524 b(log10\(x\))191 +4448 y("modulus")570 b(x)48 b(\045)f(y)191 4561 y("bitwise)e(AND")381 +b(x)48 b(&)f(y)286 b("bitwise)46 b(OR")524 b(x)47 b(|)h(y)191 +4674 y("bitwise)d(XOR")381 b(x)48 b(^^)f(y)238 b(\(bitwise)46 +b(operators)f(are)i(32-bit)f(int)h(only\))191 4787 y("random)f(#)h +([0.0,1.0\)")e(random\(\))191 4900 y("random)h(Gaussian")188 +b(randomn\(\))93 b("random)46 b(Poisson")332 b(randomp\(x\))191 +5013 y("minimum")570 b(min\(x,y\))141 b("maximum")666 +b(max\(x,y\))191 5125 y("cumulative)45 b(sum")237 b(accum\(x\))141 +b("sequential)45 b(difference")g(seqdiff\(x\))191 5238 +y("if-then-else")330 b(b?x:y)191 5351 y("angular)45 b(separation")g +(angsep\(ra1,dec1,ra2,de2\))c(\(all)47 b(in)g(degrees\))191 +5464 y("substring")474 b(strmid\(s,p,n\))44 b("string)i(search")237 +b(strstr\(s,r\))0 5714 y Fj(The)30 b(bit)m(wise)h(op)s(erators)f(for)h +(AND,)g(OR)f(and)g(X)m(OR)g(op)s(erate)h(up)s(on)e(32-bit)j(in)m(teger) +f(expressions)f(only)-8 b(.)p eop end +%%Page: 147 155 +TeXDict begin 147 154 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(147)0 +555 y(Three)30 b(di\013eren)m(t)h(random)f(n)m(um)m(b)s(er)f(functions) +h(are)h(pro)m(vided:)41 b(random\(\),)30 b(with)h(no)f(argumen)m(ts,)h +(pro)s(duces)f(a)0 668 y(uniform)g(random)f(deviate)k(b)s(et)m(w)m(een) +e(0)g(and)f(1;)i(randomn\(\),)e(also)i(with)e(no)h(argumen)m(ts,)g(pro) +s(duces)f(a)h(normal)0 781 y(\(Gaussian\))k(random)e(deviate)j(with)e +(zero)h(mean)f(and)g(unit)f(standard)h(deviation;)j(randomp\(x\))d(pro) +s(duces)f(a)0 894 y(P)m(oisson)27 b(random)f(deviate)h(whose)f(exp)s +(ected)h(n)m(um)m(b)s(er)e(of)h(coun)m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s +(e)e(an)m(y)i(p)s(ositiv)m(e)g(real)g(n)m(um)m(b)s(er)0 +1007 y(of)k(exp)s(ected)f(coun)m(ts,)h(including)f(fractional)i(v)-5 +b(alues,)31 b(but)f(the)g(return)g(v)-5 b(alue)31 b(is)f(an)g(in)m +(teger.)0 1167 y(When)d(the)g(random)g(functions)f(are)i(used)e(in)h(a) +h(v)m(ector)g(expression,)g(b)m(y)f(default)h(the)f(same)h(random)e(v) +-5 b(alue)28 b(will)0 1280 y(b)s(e)g(used)f(when)h(ev)-5 +b(aluating)30 b(eac)m(h)f(elemen)m(t)h(of)f(the)g(v)m(ector.)41 +b(If)28 b(di\013eren)m(t)h(random)f(n)m(um)m(b)s(ers)f(are)i(desired,)f +(then)0 1393 y(the)37 b(name)g(of)g(a)g(v)m(ector)i(column)e(should)e +(b)s(e)i(supplied)e(as)i(the)h(single)f(argumen)m(t)g(to)h(the)f +(random)f(function)0 1506 y(\(e.g.,)e("\015ux)c(+)h(0.1)i(*)e +(random\(\015ux\)",)h(where)f("\015ux")g(is)g(the)h(name)f(of)h(a)f(v)m +(ector)i(column\).)44 b(This)31 b(will)g(create)0 1619 +y(a)38 b(v)m(ector)i(of)e(random)f(n)m(um)m(b)s(ers)f(that)j(will)f(b)s +(e)f(used)g(in)h(sequence)g(when)f(ev)-5 b(aluating)39 +b(eac)m(h)g(elemen)m(t)h(of)e(the)0 1732 y(v)m(ector)32 +b(expression.)0 1892 y(An)f(alternate)i(syn)m(tax)f(for)f(the)g(min)g +(and)g(max)g(functions)g(has)g(only)g(a)h(single)g(argumen)m(t)g(whic)m +(h)f(should)f(b)s(e)h(a)0 2005 y(v)m(ector)g(v)-5 b(alue)30 +b(\(see)g(b)s(elo)m(w\).)41 b(The)29 b(result)g(will)h(b)s(e)e(the)i +(minim)m(um/maxim)m(um)f(elemen)m(t)h(con)m(tained)h(within)e(the)0 +2118 y(v)m(ector.)0 2278 y(The)35 b(accum\(x\))i(function)f(forms)f +(the)h(cum)m(ulativ)m(e)i(sum)d(of)h(x,)h(elemen)m(t)h(b)m(y)e(elemen)m +(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 2391 y(supp)s(orted)h +(simply)h(b)m(y)g(p)s(erforming)f(the)i(summation)g(pro)s(cess)f +(through)f(all)j(the)f(v)-5 b(alues.)65 b(Null)39 b(v)-5 +b(alues)39 b(are)0 2503 y(treated)30 b(as)f(0.)41 b(The)29 +b(seqdi\013\(x\))h(function)e(forms)h(the)g(sequen)m(tial)i +(di\013erence)e(of)h(x,)f(elemen)m(t)i(b)m(y)e(elemen)m(t.)41 +b(The)0 2616 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g(is)g(the) +g(\014rst)g(v)-5 b(alue)37 b(of)g(x.)61 b(A)37 b(single)h(n)m(ull)f(v) +-5 b(alue)38 b(in)e(x)h(causes)h(a)f(pair)g(of)g(n)m(ulls)g(in)g(the)0 +2729 y(output.)55 b(The)35 b(seqdi\013)g(and)g(accum)g(functions)g(are) +h(functional)f(in)m(v)m(erses,)j(i.e.,)g(seqdi\013\(accum\(x\)\))f(==)e +(x)g(as)0 2842 y(long)c(as)g(no)f(n)m(ull)g(v)-5 b(alues)31 +b(are)g(presen)m(t.)0 3002 y(In)36 b(the)h(if-then-else)i(expression,)f +("b?x:y",)i(b)c(is)h(an)g(explicit)h(b)s(o)s(olean)f(v)-5 +b(alue)37 b(or)g(expression.)61 b(There)36 b(is)h(no)0 +3115 y(automatic)d(t)m(yp)s(e)e(con)m(v)m(ersion)h(from)e(n)m(umeric)h +(to)g(b)s(o)s(olean)g(v)-5 b(alues,)33 b(so)f(one)g(needs)f(to)i(use)e +("iV)-8 b(al!=0")35 b(instead)0 3228 y(of)30 b(merely)g("iV)-8 +b(al")32 b(as)e(the)g(b)s(o)s(olean)g(argumen)m(t.)41 +b(x)30 b(and)f(y)h(can)g(b)s(e)f(an)m(y)h(scalar)h(data)g(t)m(yp)s(e)f +(\(including)f(string\).)0 3388 y(The)22 b(angsep)g(function)f +(computes)i(the)f(angular)g(separation)h(in)e(degrees)i(b)s(et)m(w)m +(een)g(2)f(celestial)j(p)s(ositions,)e(where)0 3501 y(the)36 +b(\014rst)f(2)h(parameters)g(giv)m(e)h(the)f(RA-lik)m(e)i(and)d +(Dec-lik)m(e)j(co)s(ordinates)f(\(in)f(decimal)g(degrees\))h(of)f(the)g +(\014rst)0 3614 y(p)s(osition,)31 b(and)e(the)i(3rd)f(and)g(4th)g +(parameters)h(giv)m(e)h(the)e(co)s(ordinates)i(of)e(the)h(second)f(p)s +(osition.)0 3774 y(The)38 b(substring)f(function)i(strmid\(S,P)-8 +b(,N\))39 b(extracts)g(a)g(substring)f(from)g(S,)g(starting)h(at)g +(string)g(p)s(osition)f(P)-8 b(,)0 3887 y(with)33 b(a)h(substring)f +(length)h(N.)g(The)f(\014rst)g(c)m(haracter)j(p)s(osition)d(in)h(S)f +(is)h(lab)s(eled)g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to) +0 4000 y(a)i(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i(S,)g(then)f +(the)h(extracted)h(substring)d(will)i(b)s(e)f(NULL.)h(S,)f(P)-8 +b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 4113 y(functions)30 +b(of)g(other)h(columns.)0 4273 y(The)39 b(string)h(searc)m(h)h +(function)e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s +(ccurrence)h(of)g(the)g(substring)f(R)h(in)f(S.)0 4386 +y(The)c(result)h(is)f(an)h(in)m(teger,)i(indicating)f(the)e(c)m +(haracter)i(p)s(osition)f(of)g(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h +(is)g(the)g(\014rst)0 4499 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f +(If)g(no)h(matc)m(h)g(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i +(NULL)f(v)-5 b(alue.)0 4659 y(The)37 b(follo)m(wing)i(t)m(yp)s(e)f +(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)42 +b(where)37 b(the)h(enclosing)g(paren)m(theses)g(are)g(required)0 +4772 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)h(usage.)42 +b(Also,)31 b(the)g(in)m(teger)g(to)h(real)f(casts)g(v)-5 +b(alues)30 b(to)i(double)e(precision:)764 5011 y Fe("real)46 +b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46 +b(x)764 5124 y("integer)f(to)i(real")190 b(\(float\))46 +b(i)143 b(\(FLOAT\))45 b(i)0 5362 y Fj(In)30 b(addition,)g(sev)m(eral)i +(constan)m(ts)g(are)f(built)f(in)g(for)g(use)g(in)g(n)m(umerical)h +(expressions:)382 5601 y Fe(#pi)667 b(3.1415...)284 b(#e)620 +b(2.7182...)382 5714 y(#deg)f(#pi/180)380 b(#row)524 +b(current)46 b(row)h(number)p eop end +%%Page: 148 156 +TeXDict begin 148 155 bop 0 299 a Fj(148)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)382 +555 y Fe(#null)428 b(undefined)45 b(value)142 b(#snull)428 +b(undefined)45 b(string)0 792 y Fj(A)40 b(string)f(constan)m(t)i(m)m +(ust)e(b)s(e)g(enclosed)h(in)g(quotes)g(as)f(in)h('Crab'.)67 +b(The)39 b("n)m(ull")i(constan)m(ts)f(are)g(useful)f(for)0 +904 y(conditionally)g(setting)g(table)g(v)-5 b(alues)38 +b(to)g(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5 b(alue)39 +b(\(eg.,)i("col1==-99)f(?)62 b(#NULL)38 b(:)0 1017 y(col1"\).)0 +1177 y(In)m(teger)31 b(constan)m(ts)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f +(using)h(the)h(follo)m(wing)h(notation,)525 1393 y Fe(13245)142 +b(decimal)46 b(integer)525 1506 y(0x12f3)94 b(hexidecimal)45 +b(integer)525 1619 y(0o1373)94 b(octal)46 b(integer)525 +1732 y(0b01001)g(binary)g(integer)0 1947 y Fj(Note)32 +b(that)g(in)m(teger)g(constan)m(ts)g(are)f(only)g(allo)m(w)m(ed)i(to)e +(b)s(e)g(32-bit,)h(i.e.)43 b(b)s(et)m(w)m(een)32 b(-2)2902 +1918 y(^)2907 1947 y(\(31\))h(and)d(+2)3388 1918 y(^)3393 +1947 y(\(31\).)44 b(In)m(teger)0 2060 y(constan)m(ts)30 +b(ma)m(y)g(b)s(e)f(used)f(in)h(an)m(y)g(arithmetic)i(expression)e +(where)f(an)h(in)m(teger)i(w)m(ould)e(b)s(e)f(appropriate.)41 +b(Th)m(us,)0 2173 y(they)33 b(are)h(distinct)g(from)e(bitmasks)h +(\(whic)m(h)h(ma)m(y)f(b)s(e)g(of)g(arbitrary)g(length,)i(allo)m(w)f +(the)g("wildcard")f(bit,)i(and)0 2286 y(ma)m(y)c(only)f(b)s(e)g(used)g +(in)g(logical)j(expressions;)d(see)h(b)s(elo)m(w\).)0 +2446 y(There)c(is)g(also)i(a)e(function)g(for)h(testing)g(if)f(t)m(w)m +(o)i(v)-5 b(alues)28 b(are)g(close)g(to)h(eac)m(h)f(other,)h(i.e.,)g +(if)e(they)h(are)g("near")g(eac)m(h)0 2559 y(other)c(to)h(within)e(a)h +(user)g(sp)s(eci\014ed)f(tolerance.)40 b(The)24 b(argumen)m(ts,)h(v)-5 +b(alue)p 2502 2559 28 4 v 34 w(1)24 b(and)f(v)-5 b(alue)p +2979 2559 V 33 w(2)25 b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0 +2672 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 b(alues)33 b(who's)f(pro)m(ximit)m(y)i(is)f(b)s(eing)f(tested)h(to)h(b) -s(e)e(within)g(the)h(sp)s(eci\014ed)f(tolerance,)0 3454 -y(also)f(an)g(in)m(teger)g(or)g(real:)955 3720 y Fe(near\(value_1,)44 -b(value_2,)h(tolerance\))0 3986 y Fj(When)24 b(a)i(NULL,)e(or)h +s(e)e(within)g(the)h(sp)s(eci\014ed)f(tolerance,)0 2784 +y(also)f(an)g(in)m(teger)g(or)g(real:)955 3021 y Fe(near\(value_1,)44 +b(value_2,)h(tolerance\))0 3257 y Fj(When)24 b(a)i(NULL,)e(or)h (unde\014ned,)f(v)-5 b(alue)25 b(is)g(encoun)m(tered)g(in)g(the)f(FITS) g(table,)j(the)e(expression)g(will)g(ev)-5 b(aluate)26 -b(to)0 4099 y(NULL)31 b(unless)f(the)h(unde\014ned)e(v)-5 +b(to)0 3370 y(NULL)31 b(unless)f(the)h(unde\014ned)e(v)-5 b(alue)31 b(is)g(not)g(actually)h(required)e(for)h(ev)-5 b(aluation,)33 b(e.g.)43 b("TR)m(UE)31 b(.or.)43 b(NULL")0 -4212 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f(follo)m(wing)h(t)m(w) +3483 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f(follo)m(wing)h(t)m(w) m(o)h(functions)e(allo)m(w)i(some)f(NULL)f(detection)i(and)e(handling:) -430 4478 y Fe("a)47 b(null)f(value?")667 b(ISNULL\(x\))430 -4591 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))0 -4857 y Fj(The)36 b(former)h(returns)e(a)i(b)s(o)s(olean)g(v)-5 -b(alue)37 b(of)g(TR)m(UE)g(if)g(the)g(argumen)m(t)g(x)g(is)g(NULL.)g -(The)f(later)i("de\014nes")f(a)0 4970 y(v)-5 b(alue)35 -b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5 b(alues;)37 -b(it)e(returns)e(the)h(v)-5 b(alue)35 b(of)f(x)g(if)g(x)h(is)f(not)g -(NULL,)h(otherwise)f(it)0 5083 y(returns)29 b(the)i(v)-5 -b(alue)31 b(of)f(y)-8 b(.)0 5235 y -SDict begin H.S end - 0 5235 a 0 5235 a -SDict begin 13.6 H.A end - -0 5235 a 0 5235 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.2) cvn /DEST pdfmark -end - 0 5235 a 146 x Fd(10.11.2)113 b(Bit)36 -b(Masks)0 5601 y Fj(Bit)g(masks)f(can)h(b)s(e)f(used)f(to)i(select)h -(out)e(ro)m(ws)h(from)e(bit)i(columns)f(\(TF)m(ORMn)g(=)g(#X\))h(in)f -(FITS)f(\014les.)55 b(T)-8 b(o)0 5714 y(represen)m(t)30 -b(the)h(mask,)g(binary)-8 b(,)30 b(o)s(ctal,)i(and)e(hex)g(formats)g -(are)h(allo)m(w)m(ed:)p eop end -%%Page: 146 154 -TeXDict begin 146 153 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.146) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(146)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)811 555 y Fe(binary:)142 b(b0110xx1010000101xxxx00)o(01)811 -668 y(octal:)190 b(o720x1)46 b(->)h(\(b111010000xxx001\))811 -781 y(hex:)286 b(h0FxD)94 b(->)47 b(\(b00001111xxxx1101\))0 -1016 y Fj(In)22 b(all)i(the)f(represen)m(tations,)j(an)c(x)h(or)g(X)g -(is)g(allo)m(w)m(ed)i(in)d(the)h(mask)g(as)g(a)h(wild)e(card.)38 -b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 1128 y(a)k(di\013eren)m(t) -h(n)m(um)m(b)s(er)e(of)h(wild)f(card)h(bits)g(in)g(eac)m(h)h(represen)m +430 3719 y Fe("a)47 b(null)f(value?")667 b(ISNULL\(x\))430 +3832 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))430 +3945 y("declare)45 b(certain)h(value)g(null")h(SETNULL\(x,y\))0 +4181 y Fj(ISNULL\(x\))24 b(returns)g(a)g(b)s(o)s(olean)h(v)-5 +b(alue)25 b(of)f(TR)m(UE)h(if)f(the)h(argumen)m(t)g(x)f(is)g(NULL.)h +(DEFNULL\(x,y\))h("de\014nes")0 4294 y(a)31 b(v)-5 b(alue)31 +b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5 b(alues;)31 +b(it)g(returns)e(the)i(v)-5 b(alue)31 b(of)f(x)h(if)f(x)g(is)h(not)f +(NULL,)h(otherwise)f(it)0 4407 y(returns)d(the)i(v)-5 +b(alue)28 b(of)h(y)-8 b(.)40 b(SETNULL\(x,y\))28 b(allo)m(ws)i(NULL)e +(v)-5 b(alues)29 b(to)g(b)s(e)f(inserted)g(in)m(to)h(a)g(v)-5 +b(ariable;)30 b(if)e(x==y)-8 b(,)0 4520 y(a)34 b(NULL)g(v)-5 +b(alue)35 b(is)f(returned;)g(otherwise)h(y)f(is)f(returned)g(\(x)h(and) +g(y)g(m)m(ust)f(b)s(e)h(n)m(umerical,)h(and)f(x)f(m)m(ust)h(b)s(e)g(a)0 +4633 y(scalar\).)0 4920 y Fd(10.11.2)113 b(Bit)36 b(Masks)0 +5139 y Fj(Bit)g(masks)f(can)h(b)s(e)f(used)f(to)i(select)h(out)e(ro)m +(ws)h(from)e(bit)i(columns)f(\(TF)m(ORMn)g(=)g(#X\))h(in)f(FITS)f +(\014les.)55 b(T)-8 b(o)0 5252 y(represen)m(t)30 b(the)h(mask,)g +(binary)-8 b(,)30 b(o)s(ctal,)i(and)e(hex)g(formats)g(are)h(allo)m(w)m +(ed:)811 5488 y Fe(binary:)142 b(b0110xx1010000101xxxx00)o(01)811 +5601 y(octal:)190 b(o720x1)46 b(->)h(\(b111010000xxx001\))811 +5714 y(hex:)286 b(h0FxD)94 b(->)47 b(\(b00001111xxxx1101\))p +eop end +%%Page: 149 157 +TeXDict begin 149 156 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(149)0 +555 y(In)22 b(all)i(the)f(represen)m(tations,)j(an)c(x)h(or)g(X)g(is)g +(allo)m(w)m(ed)i(in)d(the)h(mask)g(as)g(a)h(wild)e(card.)38 +b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 668 y(a)k(di\013eren)m(t)h +(n)m(um)m(b)s(er)e(of)h(wild)f(card)h(bits)g(in)g(eac)m(h)h(represen)m (tation.)41 b(All)27 b(represen)m(tations)h(are)g(case)g(insensitiv)m -(e.)0 1289 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f -(expression)h(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h -(op)s(erator)g(describ)s(ed)f(ab)s(o)m(v)m(e)0 1401 y(on)34 -b(a)h(bit)g(table)h(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou) -h(had)f(a)h(7)g(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table) -i(and)0 1514 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit) -h(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s -(e:)1336 1749 y Fe(flags)47 b(==)g(b0010011)191 1862 -y(or)1336 1975 y(flags)g(.eq.)f(b10011)0 2209 y Fj(It)35 -b(is)g(also)h(p)s(ossible)e(to)i(test)g(if)f(a)g(range)g(of)g(bits)g -(is)g(less)g(than,)h(less)f(than)g(equal,)i(greater)f(than)e(and)h -(greater)0 2322 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s -(olean)f(v)-5 b(alue:)1336 2557 y Fe(flags)47 b(<=)g(bxxx010xx)1336 -2669 y(flags)g(.gt.)f(bxxx100xx)1336 2782 y(flags)h(.le.)f(b1xxxxxxx)0 -3017 y Fj(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5 +(e.)0 781 y(Although)41 b(bitmasks)g(ma)m(y)g(b)s(e)f(of)h(arbitrary)f +(length)h(and)f(con)m(tain)i(a)g(wildcard,)h(they)e(ma)m(y)g(only)g(b)s +(e)f(used)0 894 y(in)c(logical)k(expressions,)e(unlik)m(e)f(in)m(teger) +h(constan)m(ts)g(\(see)f(ab)s(o)m(v)m(e\))i(whic)m(h)d(ma)m(y)h(b)s(e)f +(used)g(in)h(an)m(y)g(arithmetic)0 1007 y(expression.)0 +1167 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f(expression)h +(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h(op)s(erator)g +(describ)s(ed)f(ab)s(o)m(v)m(e)0 1280 y(on)34 b(a)h(bit)g(table)h +(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou)h(had)f(a)h(7)g +(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table)i(and)0 +1393 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit)h +(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s(e:) +1336 1621 y Fe(flags)47 b(==)g(b0010011)191 1734 y(or)1336 +1847 y(flags)g(.eq.)f(b10011)0 2075 y Fj(It)35 b(is)g(also)h(p)s +(ossible)e(to)i(test)g(if)f(a)g(range)g(of)g(bits)g(is)g(less)g(than,)h +(less)f(than)g(equal,)i(greater)f(than)e(and)h(greater)0 +2188 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s(olean)f(v)-5 +b(alue:)1336 2416 y Fe(flags)47 b(<=)g(bxxx010xx)1336 +2529 y(flags)g(.gt.)f(bxxx100xx)1336 2642 y(flags)h(.le.)f(b1xxxxxxx)0 +2870 y Fj(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5 b(alue)31 b(to)g(limit)g(the)f(range)h(of)g(bits)f(b)s(eing)g -(compared.)0 3177 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h +(compared.)0 3030 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h (leading)g(\(most)g(signi\014can)m(t\))h(zero)f(\(0\))g(bits)f(in)g -(the)h(mask,)g(as)g(sho)m(wn)e(in)0 3290 y(the)g(second)f(expression)g -(ab)s(o)m(v)m(e.)0 3450 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s +(the)h(mask,)g(as)g(sho)m(wn)e(in)0 3143 y(the)g(second)f(expression)g +(ab)s(o)m(v)m(e.)0 3303 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s (erations)g(are)g(also)h(p)s(ossible)e(on)h(t)m(w)m(o)h(or)f(more)g -(bit)g(\014elds)f(using)h(the)0 3563 y('&'\(AND\),)35 +(bit)g(\014elds)f(using)h(the)0 3416 y('&'\(AND\),)35 b(')p Fc(j)p Fj('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34 b(op)s(erators.)51 b(All)34 b(of)f(these)h(op)s(erators)g(result)f(in)h -(a)g(bit)f(\014eld)g(whic)m(h)0 3676 y(can)e(then)f(b)s(e)f(used)h +(a)g(bit)f(\014eld)g(whic)m(h)0 3529 y(can)e(then)f(b)s(e)f(used)h (with)g(the)h(equal)g(op)s(erator.)41 b(F)-8 b(or)31 -b(example:)1241 3910 y Fe(\(!flags\))45 b(==)j(b1101100)1241 -4023 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 4258 +b(example:)1241 3757 y Fe(\(!flags\))45 b(==)j(b1101100)1241 +3870 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 4099 y Fj(Bit)35 b(\014elds)f(can)g(b)s(e)f(app)s(ended)g(as)h(w)m(ell)h (using)f(the)g('+')g(op)s(erator.)53 b(Strings)33 b(can)i(b)s(e)e -(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 4371 y(to)s(o.)0 -4494 y -SDict begin H.S end - 0 4494 a 0 4494 a -SDict begin 13.6 H.A end - 0 4494 a 0 4494 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.3) cvn /DEST pdfmark -end - 0 4494 a 163 -x Fd(10.11.3)113 b(V)-9 b(ector)36 b(Columns)0 4876 y -Fj(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h +(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 4212 y(to)s(o.)0 +4497 y Fd(10.11.3)113 b(V)-9 b(ector)36 b(Columns)0 4716 +y Fj(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h (building)g(the)g(expression.)56 b(No)36 b(sp)s(ecial)g(syn)m(tax)f(is) -h(required)e(if)i(one)0 4989 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f +h(required)e(if)i(one)0 4829 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f (all)h(elemen)m(ts)g(of)f(the)h(v)m(ector.)86 b(Simply)44 b(use)h(the)g(column)g(name)g(as)g(for)g(a)g(scalar)0 -5102 y(column.)d(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h(in) +4942 y(column.)d(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h(in) m(termixed)h(with)e(scalar)i(columns)e(or)h(constan)m(ts)h(in)f -(virtually)g(all)0 5215 y(expressions.)40 b(The)29 b(result)g(will)g(b) +(virtually)g(all)0 5055 y(expressions.)40 b(The)29 b(result)g(will)g(b) s(e)g(of)g(the)g(same)h(dimension)e(as)i(the)f(v)m(ector.)42 -b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 5328 +b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 5168 y(though,)h(need)g(to)i(ha)m(v)m(e)f(the)g(same)g(n)m(um)m(b)s(er)e(of) h(elemen)m(ts)i(and)e(ha)m(v)m(e)h(the)g(same)g(dimensions.)0 -5488 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d(are)h(all)g(p)s +5328 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d(are)h(all)g(p)s (erformed)d(on)i(an)g(elemen)m(t)h(b)m(y)f(elemen)m(t)i(basis.)38 -b(Comparing)23 b(t)m(w)m(o)0 5601 y(v)m(ector)32 b(columns,)e(eg)h +b(Comparing)23 b(t)m(w)m(o)0 5441 y(v)m(ector)32 b(columns,)e(eg)h ("COL1)f(==)g(COL2",)g(th)m(us)g(results)g(in)g(another)g(v)m(ector)i (of)e(b)s(o)s(olean)h(v)-5 b(alues)30 b(indicating)0 -5714 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h(v)m(ectors)f -(are)g(equal.)p eop end -%%Page: 147 155 -TeXDict begin 147 154 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.147) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.11.)73 -b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 -b Fj(147)0 555 y(Eigh)m(t)31 b(functions)f(are)h(a)m(v)-5 +5554 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h(v)m(ectors)f +(are)g(equal.)0 5714 y(Eigh)m(t)g(functions)f(are)h(a)m(v)-5 b(ailable)33 b(that)e(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d(return)h -(a)g(scalar)i(result:)191 770 y Fe("minimum")284 b(MIN\(V\))475 -b("maximum")714 b(MAX\(V\))191 883 y("average")284 b(AVERAGE\(V\))f -("median")762 b(MEDIAN\(V\))191 995 y("summation")188 -b(SUM\(V\))475 b("standard)46 b(deviation")188 b(STDDEV\(V\))191 -1108 y("#)47 b(of)g(values")94 b(NELEM\(V\))379 b("#)48 -b(of)f(non-null)e(values")94 b(NVALID\(V\))0 1323 y Fj(where)40 -b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m(ector)h(column)f(or)g -(a)h(man)m(ually)f(constructed)g(v)m(ector)i(using)d(curly)0 -1436 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)e(b)s(elo)m(w.)39 -b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)f(ignore)h(an)m(y)g(n)m -(ull)f(v)-5 b(alues)26 b(in)f(the)h(v)m(ector)h(when)0 -1549 y(computing)k(the)f(result.)41 b(The)30 b(STDDEV\(\))h(function)g -(computes)f(the)h(sample)g(standard)e(deviation,)j(i.e.)42 -b(it)31 b(is)0 1662 y(prop)s(ortional)f(to)h(1/SQR)-8 -b(T\(N-1\))32 b(instead)f(of)g(1/SQR)-8 b(T\(N\),)31 -b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)0 1822 y(The)31 -b(SUM)h(function)f(literally)j(sums)d(all)h(the)g(elemen)m(ts)h(in)f -(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)45 b(If)31 -b(V)h(is)g(a)g(b)s(o)s(olean)0 1935 y(v)m(ector,)40 b(SUM)c(returns)f -(the)h(n)m(um)m(b)s(er)f(of)i(TR)m(UE)f(elemen)m(ts.)60 -b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0 -2047 y(of)h(elemen)m(ts)g(in)g(v)m(ector)h(V)e(whereas)h(NV)-10 +(a)g(scalar)i(result:)p eop end +%%Page: 150 158 +TeXDict begin 150 157 bop 0 299 a Fj(150)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 +555 y Fe("minimum")284 b(MIN\(V\))475 b("maximum")714 +b(MAX\(V\))191 668 y("average")284 b(AVERAGE\(V\))f("median")762 +b(MEDIAN\(V\))191 781 y("summation")188 b(SUM\(V\))475 +b("standard)46 b(deviation")188 b(STDDEV\(V\))191 894 +y("#)47 b(of)g(values")94 b(NELEM\(V\))379 b("#)48 b(of)f(non-null)e +(values")94 b(NVALID\(V\))0 1180 y Fj(where)40 b(V)h(represen)m(ts)g +(the)g(name)g(of)h(a)f(v)m(ector)h(column)f(or)g(a)h(man)m(ually)f +(constructed)g(v)m(ector)i(using)d(curly)0 1293 y(brac)m(k)m(ets)27 +b(as)f(describ)s(ed)e(b)s(elo)m(w.)39 b(The)25 b(\014rst)g(6)h(of)g +(these)g(functions)f(ignore)h(an)m(y)g(n)m(ull)f(v)-5 +b(alues)26 b(in)f(the)h(v)m(ector)h(when)0 1406 y(computing)k(the)f +(result.)41 b(The)30 b(STDDEV\(\))h(function)g(computes)f(the)h(sample) +g(standard)e(deviation,)j(i.e.)42 b(it)31 b(is)0 1519 +y(prop)s(ortional)f(to)h(1/SQR)-8 b(T\(N-1\))32 b(instead)f(of)g(1/SQR) +-8 b(T\(N\),)31 b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)0 +1679 y(The)31 b(SUM)h(function)f(literally)j(sums)d(all)h(the)g(elemen) +m(ts)h(in)f(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)45 +b(If)31 b(V)h(is)g(a)g(b)s(o)s(olean)0 1792 y(v)m(ector,)40 +b(SUM)c(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(TR)m(UE)f(elemen)m(ts.) +60 b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0 +1905 y(of)h(elemen)m(ts)g(in)g(v)m(ector)h(V)e(whereas)h(NV)-10 b(ALID)36 b(return)g(the)h(n)m(um)m(b)s(er)e(of)h(non-n)m(ull)g(elemen) -m(ts)i(in)e(the)h(v)m(ector.)0 2160 y(\(NELEM)28 b(also)h(op)s(erates)f +m(ts)i(in)e(the)h(v)m(ector.)0 2017 y(\(NELEM)28 b(also)h(op)s(erates)f (on)g(bit)f(and)g(string)h(columns,)g(returning)f(their)h(column)f -(widths.\))40 b(As)27 b(an)h(example,)0 2273 y(to)42 +(widths.\))40 b(As)27 b(an)h(example,)0 2130 y(to)42 b(test)g(whether)f(all)h(elemen)m(ts)h(of)f(t)m(w)m(o)g(v)m(ectors)h (satisfy)f(a)g(giv)m(en)g(logical)i(comparison,)g(one)e(can)g(use)f -(the)0 2386 y(expression)668 2601 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\)) +(the)0 2243 y(expression)668 2529 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\)) g(==)g(NELEM\()f(COL1)h(\))0 2815 y Fj(whic)m(h)32 b(will)g(return)f (TR)m(UE)h(if)g(all)h(elemen)m(ts)g(of)f(COL1)g(are)g(greater)h(than)f (their)g(corresp)s(onding)f(elemen)m(ts)i(in)0 2928 y(COL2.)0 @@ -19262,637 +15169,557 @@ y(v)m(ectors,)40 b(will)d(b)s(e)f(expanded)g(out)h(with)g(eac)m(h)g(of) g(its)g(elemen)m(ts)i(b)s(ecoming)d(an)h(elemen)m(t)h(in)f(the)g (constructed)0 5714 y(v)m(ector.)p eop end -%%Page: 148 156 -TeXDict begin 148 155 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.148) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(148)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.4) cvn /DEST pdfmark -end - 0 464 a -91 x Fd(10.11.4)113 b(Ro)m(w)36 b(Access)0 774 y Fj(T)-8 +%%Page: 151 159 +TeXDict begin 151 158 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(151)0 +555 y Fd(10.11.4)113 b(Ro)m(w)36 b(Access)0 777 y Fj(T)-8 b(o)32 b(access)g(a)g(table)g(en)m(try)g(in)f(a)h(ro)m(w)f(other)h (than)f(the)g(curren)m(t)g(one,)h(follo)m(w)h(the)e(column's)h(name)f -(with)g(a)h(ro)m(w)0 887 y(o\013set)41 b(within)f(curly)g(braces.)71 +(with)g(a)h(ro)m(w)0 890 y(o\013set)41 b(within)f(curly)g(braces.)71 b(F)-8 b(or)41 b(example,)j Fe(PHA{-3})39 b Fj(will)h(ev)-5 b(aluate)42 b(to)g(the)e(v)-5 b(alue)41 b(of)g(column)f(PHA,)h(3)0 -1000 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s +1003 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s (eing)g(pro)s(cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)f(an)g -(absolute)h(ro)m(w)f(n)m(um)m(b)s(er,)g(only)h(a)0 1113 +(absolute)h(ro)m(w)f(n)m(um)m(b)s(er,)g(only)h(a)0 1116 y(relativ)m(e)j(o\013set.)42 b(Ro)m(ws)31 b(that)g(fall)g(outside)g (the)f(table)h(will)g(b)s(e)f(treated)h(as)g(unde\014ned,)d(or)j -(NULLs.)0 1273 y(Using)22 b(the)g(same)g(column)g(name)g(on)g(the)g +(NULLs.)0 1276 y(Using)22 b(the)g(same)g(column)g(name)g(on)g(the)g (left)g(and)f(righ)m(t)i(side)e(of)h(the)h(equals)f(sign)g(while)f -(using)h(the)g Fe(COLUMN{-N})0 1386 y Fj(notation)32 +(using)h(the)g Fe(COLUMN{-N})0 1389 y Fj(notation)32 b(will)e(not)h(pro)s(duce)e(the)i(desired)f(result.)40 -b(F)-8 b(or)31 b(example,)668 1608 y Fe(COUNT)47 b(=)g(COUNT{-1})e(+)j -(1;)142 b(#)48 b(BAD)f(-)g(do)g(not)g(use)0 1830 y Fj(will)30 +b(F)-8 b(or)31 b(example,)668 1635 y Fe(COUNT)47 b(=)g(COUNT{-1})e(+)j +(1;)142 b(#)48 b(BAD)f(-)g(do)g(not)g(use)0 1880 y Fj(will)30 b(not)g(pro)s(duce)f(an)h(increasing)h(coun)m(ter.)41 b(Suc)m(h)29 b(recursiv)m(e)i(calculations)h(are)e(often)g(not)h(p)s -(ossible)e(with)h(the)0 1943 y(calculator)i(syn)m(tax.)0 -2085 y -SDict begin H.S end - 0 2085 a 0 2085 a -SDict begin 13.6 H.A end - 0 2085 a 0 2085 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.5) cvn /DEST pdfmark -end - 0 2085 a 146 -x Fd(10.11.5)113 b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 -b(al)37 b(Filtering)0 2450 y Fj(A)44 b(common)g(\014ltering)h(metho)s -(d)e(in)m(v)m(olv)m(es)j(selecting)g(ro)m(ws)e(whic)m(h)f(ha)m(v)m(e)j -(a)e(time)h(v)-5 b(alue)44 b(whic)m(h)g(lies)g(within)0 -2563 y(what)37 b(is)g(called)i(a)f(Go)s(o)s(d)f(Time)g(In)m(terv)-5 -b(al)38 b(or)f(GTI.)g(The)g(time)h(in)m(terv)-5 b(als)38 -b(are)g(de\014ned)e(in)h(a)g(separate)i(FITS)0 2676 y(table)i -(extension)g(whic)m(h)e(con)m(tains)i(2)g(columns)f(giving)g(the)h -(start)f(and)g(stop)g(time)g(of)g(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5 -b(al.)0 2789 y(The)34 b(\014ltering)h(op)s(eration)h(accepts)g(only)e -(those)i(ro)m(ws)e(of)h(the)g(input)f(table)i(whic)m(h)e(ha)m(v)m(e)i -(an)f(asso)s(ciated)h(time)0 2901 y(whic)m(h)f(falls)i(within)e(one)h -(of)g(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)e(in)g(the)h(GTI)g -(extension.)57 b(A)36 b(high)g(lev)m(el)h(function,)0 -3014 y(gti\014lter\(a,b,c,d\),)44 b(is)c(a)m(v)-5 b(ailable)42 -b(whic)m(h)d(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)e(of)h(the)f(input)g -(table)h(and)f(returns)f(TR)m(UE)i(or)0 3127 y(F)-10 -b(ALSE)30 b(dep)s(ending)f(whether)h(the)g(ro)m(w)h(is)f(inside)g(or)g -(outside)h(the)g(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42 -b(The)30 b(syn)m(tax)h(is)286 3372 y Fe(gtifilter\()45 -b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(]) -g(\))191 3484 y(or)286 3597 y(gtifilter\()e([)j('gtifile')d([,)i(expr)g -([,)g('STARTCOL',)e('STOPCOL')g(])j(])f(])g(\))0 3842 -y Fj(where)20 b(eac)m(h)h("[]")h(demarks)e(optional)h(parameters.)38 -b(Note)21 b(that)g(the)g(quotes)f(around)g(the)g(gti\014le)i(and)d(ST) --8 b(AR)g(T/STOP)0 3955 y(column)33 b(are)h(required.)50 -b(Either)34 b(single)g(or)g(double)f(quotes)h(ma)m(y)g(b)s(e)f(used.)50 -b(In)33 b(cases)h(where)g(this)f(expression)0 4067 y(is)d(en)m(tered)g -(on)g(the)g(Unix)g(command)g(line,)g(enclose)h(the)f(en)m(tire)h -(expression)f(in)f(double)h(quotes,)g(and)g(then)f(use)0 -4180 y(single)c(quotes)g(within)e(the)i(expression)f(to)h(enclose)g -(the)g('gti\014le')h(and)d(other)i(terms.)38 b(It)25 -b(is)f(also)h(usually)f(p)s(ossible)0 4293 y(to)38 b(do)e(the)h(rev)m -(erse,)j(and)c(enclose)i(the)f(whole)g(expression)g(in)f(single)i -(quotes)f(and)f(then)h(use)f(double)g(quotes)0 4406 y(within)d(the)g -(expression.)50 b(The)33 b(gti\014le,)i(if)f(sp)s(eci\014ed,)f(can)h(b) -s(e)f(blank)g(\(""\))i(whic)m(h)e(will)g(mean)h(to)g(use)f(the)h -(\014rst)0 4519 y(extension)g(with)g(the)f(name)h("*GTI*")h(in)f(the)f -(curren)m(t)h(\014le,)h(a)f(plain)f(extension)h(sp)s(eci\014er)f(\(eg,) -j("+2",)g("[2]",)0 4632 y(or)30 b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s -(e)f(used)f(to)j(select)g(an)e(extension)h(in)f(the)h(curren)m(t)f -(\014le,)h(or)f(a)h(regular)g(\014lename)0 4745 y(with)f(or)h(without)f -(an)h(extension)g(sp)s(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case) -f(will)g(mean)f(to)i(use)e(the)h(\014rst)e(extension)0 -4858 y(with)37 b(an)g(extension)g(name)h("*GTI*".)62 +(ossible)e(with)h(the)0 1993 y(calculator)41 b(syn)m(tax.)65 +b(Ho)m(w)m(ev)m(er,)43 b(for)38 b(cases)i(where)e(the)h(user)e(wishes)h +(a)h(ro)m(w)g(coun)m(ter,)i(the)e(sp)s(ecial)g(v)-5 b(ariable)0 +2106 y Fe(#ROW)29 b Fj(can)i(b)s(e)f(utilized.)0 2413 +y Fd(10.11.5)113 b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 +b(al)37 b(Filtering)h(and)g(Calculation)0 2635 y Fj(There)27 +b(are)h(t)m(w)m(o)g(functions)f(for)g(\014ltering)h(and)f(calculating)i +(based)e(on)g(Go)s(o)s(d)h(Time)f(In)m(terv)-5 b(als,)29 +b(or)e(GTIs.)39 b(GTIs)0 2748 y(are)c(commonly)g(used)f(to)h(express)f +(fragmen)m(ted)h(time)g(ranges)g(that)g(are)g(not)g(easy)g(to)g +(express)f(with)g(a)h(single)0 2861 y(start)j(and)f(stop)h(time.)63 +b(The)37 b(time)h(in)m(terv)-5 b(als)39 b(are)f(de\014ned)e(in)i(a)g +(FITS)f(table)h(extension)g(whic)m(h)g(con)m(tains)h(2)0 +2974 y(columns)30 b(giving)h(the)g(start)g(and)f(stop)g(time)h(of)g +(eac)m(h)g(go)s(o)s(d)f(in)m(terv)-5 b(al.)0 3134 y(A)32 +b(common)g(\014ltering)f(metho)s(d)h(in)m(v)m(olv)m(es)h(selecting)h +(ro)m(ws)d(whic)m(h)h(ha)m(v)m(e)g(a)g(time)h(v)-5 b(alue)32 +b(whic)m(h)f(lies)i(within)e(an)m(y)0 3247 y(GTI.)36 +b(The)g(gti\014lter\(\))i(\014ltering)e(op)s(eration)h(accepts)g(only)f +(those)h(ro)m(ws)f(of)g(the)h(input)e(table)i(whic)m(h)f(ha)m(v)m(e)h +(an)0 3360 y(asso)s(ciated)g(time)f(whic)m(h)g(falls)g(within)f(one)g +(of)h(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)d(in)h(a)h +(separate)h(GTI)e(extension.)0 3473 y(gti\014lter\(a,b,c,d\))43 +b(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)g(of)f(the)g(input)f(table)i +(and)f(returns)f(TR)m(UE)h(or)g(F)-10 b(ALSE)39 b(dep)s(ending)0 +3586 y(whether)30 b(the)g(ro)m(w)h(is)f(inside)g(or)h(outside)f(the)h +(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42 b(The)30 b(syn)m(tax)h(is) +286 3859 y Fe(gtifilter\()45 b([)j("gtifile")d([,)i(expr)g([,)g +("STARTCOL",)e("STOPCOL")g(])j(])f(])g(\))191 3972 y(or)286 +4085 y(gtifilter\()e([)j('gtifile')d([,)i(expr)g([,)g('STARTCOL',)e +('STOPCOL')g(])j(])f(])g(\))0 4359 y Fj(where)20 b(eac)m(h)h("[]")h +(demarks)e(optional)h(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f +(around)g(the)g(gti\014le)i(and)d(ST)-8 b(AR)g(T/STOP)0 +4472 y(column)33 b(are)h(required.)50 b(Either)34 b(single)g(or)g +(double)f(quotes)h(ma)m(y)g(b)s(e)f(used.)50 b(In)33 +b(cases)h(where)g(this)f(expression)0 4585 y(is)d(en)m(tered)g(on)g +(the)g(Unix)g(command)g(line,)g(enclose)h(the)f(en)m(tire)h(expression) +f(in)f(double)h(quotes,)g(and)g(then)f(use)0 4698 y(single)c(quotes)g +(within)e(the)i(expression)f(to)h(enclose)g(the)g('gti\014le')h(and)d +(other)i(terms.)38 b(It)25 b(is)f(also)h(usually)f(p)s(ossible)0 +4811 y(to)38 b(do)e(the)h(rev)m(erse,)j(and)c(enclose)i(the)f(whole)g +(expression)g(in)f(single)i(quotes)f(and)f(then)h(use)f(double)g +(quotes)0 4924 y(within)d(the)g(expression.)50 b(The)33 +b(gti\014le,)i(if)f(sp)s(eci\014ed,)f(can)h(b)s(e)f(blank)g(\(""\))i +(whic)m(h)e(will)g(mean)h(to)g(use)f(the)h(\014rst)0 +5036 y(extension)g(with)g(the)f(name)h("*GTI*")h(in)f(the)f(curren)m(t) +h(\014le,)h(a)f(plain)f(extension)h(sp)s(eci\014er)f(\(eg,)j("+2",)g +("[2]",)0 5149 y(or)30 b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s(e)f(used) +f(to)j(select)g(an)e(extension)h(in)f(the)h(curren)m(t)f(\014le,)h(or)f +(a)h(regular)g(\014lename)0 5262 y(with)f(or)h(without)f(an)h +(extension)g(sp)s(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case)f +(will)g(mean)f(to)i(use)e(the)h(\014rst)e(extension)0 +5375 y(with)37 b(an)g(extension)g(name)h("*GTI*".)62 b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)i(expression,)f -(including)f(simply)g(the)0 4971 y(time)f(column)g(name.)57 +(including)f(simply)g(the)0 5488 y(time)f(column)g(name.)57 b(A)36 b(v)m(ector)h(time)g(expression)e(will)h(pro)s(duce)f(a)h(v)m (ector)h(b)s(o)s(olean)f(result.)57 b(ST)-8 b(AR)g(TCOL)0 -5084 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8 +5601 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8 b(AR)g(T/STOP)26 b(columns)i(in)f(the)h(GTI)g(extension.)41 -b(If)27 b(one)h(of)g(them)0 5197 y(is)i(sp)s(eci\014ed,)g(they)h(b)s -(oth)f(m)m(ust)g(b)s(e.)0 5357 y(In)21 b(its)h(simplest)g(form,)i(no)d -(parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)g({)h(default)g(v)-5 -b(alues)22 b(will)h(b)s(e)e(used.)37 b(The)21 b(expression)0 -5470 y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31 -b(to)334 5714 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f -("*STOP*")h(\))p eop end -%%Page: 149 157 -TeXDict begin 149 156 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.149) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.11.)73 -b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 -b Fj(149)0 555 y(This)31 b(will)g(searc)m(h)h(the)g(curren)m(t)f +b(If)27 b(one)h(of)g(them)0 5714 y(is)i(sp)s(eci\014ed,)g(they)h(b)s +(oth)f(m)m(ust)g(b)s(e.)p eop end +%%Page: 152 160 +TeXDict begin 152 159 bop 0 299 a Fj(152)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(In)21 b(its)h(simplest)g(form,)i(no)d(parameters)h(need)g(to)h +(b)s(e)e(pro)m(vided)g({)h(default)g(v)-5 b(alues)22 +b(will)h(b)s(e)e(used.)37 b(The)21 b(expression)0 668 +y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31 +b(to)334 920 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f("*STOP*") +h(\))0 1172 y Fj(This)31 b(will)g(searc)m(h)h(the)g(curren)m(t)f (\014le)g(for)g(a)h(GTI)f(extension,)h(\014lter)g(the)f(TIME)g(column)g -(in)g(the)h(curren)m(t)f(table,)0 668 y(using)j(ST)-8 +(in)g(the)h(curren)m(t)f(table,)0 1285 y(using)j(ST)-8 b(AR)g(T/STOP)34 b(times)i(tak)m(en)f(from)g(columns)f(in)h(the)g(GTI)g -(extension)g(with)g(names)f(con)m(taining)j(the)0 781 +(extension)g(with)g(names)f(con)m(taining)j(the)0 1398 y(strings)32 b("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46 b(The)32 b(wildcards)f(\('*'\))j(allo)m(w)g(sligh)m(t)f(v)-5 b(ariations)33 b(in)f(naming)g(con)m(v)m(en)m(tions)0 -894 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8 +1511 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8 b(AR)g(TTIME".)65 b(The)37 b(same)i(default)g(v)-5 b(alues)38 -b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 1007 y(ters)f(when)f(the)h +b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 1624 y(ters)f(when)f(the)h (\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)56 b(The)36 b(function)f(automatically)k(searc)m(hes)e(for)0 -1120 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f(and)g +1737 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f(and)g (GTI)g(extensions,)i(applying)f(a)f(relativ)m(e)j(time)e(o\013set,)i -(if)0 1233 y(necessary)-8 b(.)0 1381 y -SDict begin H.S end - 0 1381 a 0 1381 -a -SDict begin 13.6 H.A end - 0 1381 a 0 1381 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.6) cvn /DEST pdfmark -end - 0 1381 a 146 x Fd(10.11.6)113 b(Spatial)38 -b(Region)g(Filtering)0 1746 y Fj(Another)g(common)g(\014ltering)g -(metho)s(d)f(selects)i(ro)m(ws)f(based)g(on)f(whether)h(the)g(spatial)h -(p)s(osition)e(asso)s(ciated)0 1859 y(with)32 b(eac)m(h)i(ro)m(w)e(is)h -(lo)s(cated)h(within)e(a)h(giv)m(en)g(2-dimensional)g(region.)48 -b(The)32 b(syn)m(tax)h(for)f(this)h(high-lev)m(el)h(\014lter)0 -1972 y(is)334 2235 y Fe(regfilter\()45 b("regfilename")f([)k(,)f -(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g(])g(\))0 -2497 y Fj(where)22 b(eac)m(h)i("[]")g(demarks)e(optional)i(parameters.) -38 b(The)22 b(region)h(\014le)g(name)f(is)h(required)f(and)g(m)m(ust)g -(b)s(e)g(enclosed)0 2610 y(in)34 b(quotes.)51 b(The)33 -b(remaining)h(parameters)h(are)f(optional.)52 b(There)33 -b(are)i(2)f(supp)s(orted)e(formats)i(for)f(the)h(region)0 -2723 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f(binary)g(table.) -73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f(list)g(of)g(one)g(or) -g(more)g(geometric)0 2836 y(shap)s(es)30 b(\(circle,)j(ellipse,)g(b)s -(o)m(x,)e(etc.\))44 b(whic)m(h)31 b(de\014nes)f(a)i(region)g(on)f(the)g -(celestial)j(sphere)c(or)h(an)g(area)h(within)f(a)0 2949 -y(particular)36 b(2D)g(image.)57 b(The)35 b(region)h(\014le)f(is)g(t)m -(ypically)j(generated)e(using)f(an)g(image)i(displa)m(y)e(program)g -(suc)m(h)0 3062 y(as)e(fv/PO)m(W)g(\(distribute)f(b)m(y)h(the)f(HEASAR) -m(C\),)h(or)g(ds9)f(\(distributed)g(b)m(y)g(the)h(Smithsonian)f -(Astroph)m(ysical)0 3175 y(Observ)-5 b(atory\).)69 b(Users)39 -b(should)g(refer)g(to)h(the)g(do)s(cumen)m(tation)h(pro)m(vided)e(with) -g(these)h(programs)f(for)h(more)0 3288 y(details)29 b(on)f(the)g(syn)m -(tax)h(used)e(in)h(the)h(region)f(\014les.)40 b(The)28 -b(FITS)f(region)i(\014le)f(format)h(is)f(de\014ned)f(in)h(a)g(do)s -(cumen)m(t)0 3401 y(a)m(v)-5 b(ailable)33 b(from)d(the)g(FITS)g(Supp)s -(ort)e(O\016ce)j(at)g(h)m(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c -(region.h)m(tml)0 3561 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h +(if)0 1849 y(necessary)-8 b(.)0 2010 y(A)43 b(separate)h(function,)j +(gtio)m(v)m(erlap\(a,b,c,d,e\),)k(computes)43 b(the)g(o)m(v)m(erlap)i +(b)s(et)m(w)m(een)f(a)f(user-requested)g(time)0 2123 +y(range)32 b(and)e(the)i(en)m(tries)g(in)f(a)g(GTI.)h(The)e(cases)i(of) +g(no)f(o)m(v)m(erlap,)i(partial)f(o)m(v)m(erlap,)i(or)d(o)m(v)m(erlap)i +(of)e(man)m(y)g(GTIs)0 2235 y(within)36 b(the)g(user)g(requested)g +(range)h(are)g(handled.)58 b(gtio)m(v)m(erlap\(\))39 +b(is)e(v)m(ery)f(useful)g(for)g(calculating)j(exp)s(osure)0 +2348 y(times)28 b(and)g(fractional)h(exp)s(osures)e(of)h(individual)f +(time)h(bins,)g(sa)m(y)h(for)e(a)h(ligh)m(t)h(curv)m(e.)41 +b(The)27 b(syn)m(tax)h(of)g(gtio)m(v)m(er-)0 2461 y(lap\(\))j(is)286 +2713 y Fe(gtioverlap\()45 b("gtifile")g(,)j(startExpr,)d(stopExpr)g([,) +j("STARTCOL",)c("STOPCOL")i(])h(\))191 2826 y(or)286 +2939 y(gtioverlap\()e('gtifile')g(,)j(startExpr,)d(stopExpr)g([,)j +('STARTCOL',)c('STOPCOL')i(])h(\))0 3191 y Fj(The)27 +b(requiremen)m(ts)g(for)h(sp)s(ecifying)f(the)h(gti\014le)g(are)g(the)g +(same)g(as)f(for)h(gti\014lter\(\))h(as)f(describ)s(ed)e(ab)s(o)m(v)m +(e.)41 b(Unlik)m(e)0 3304 y(gti\014lter\(\),)j(the)c(startExpr)f(and)f +(stopExpr)h(are)h(not)g(optional.)69 b(startExpr)39 b(pro)m(vides)g(a)h +(start)g(of)g(the)g(user)0 3417 y(requested)34 b(time)h(in)m(terv)-5 +b(al.)53 b(startExpr)34 b(is)g(t)m(ypically)i(TIME,)e(but)f(can)i(b)s +(e)e(an)m(y)h(v)-5 b(alid)35 b(expression.)52 b(Lik)m(ewise,)0 +3530 y(stopExpr)39 b(pro)m(vides)i(the)f(stop)h(of)f(the)h(user)f +(requested)g(time)h(in)m(terv)-5 b(al,)44 b(and)c(can)h(b)s(e)e(an)i +(expression.)70 b(F)-8 b(or)0 3643 y(example,)31 b(for)f(a)h(ligh)m(t)h +(curv)m(e)e(with)h(a)f(TIME)g(column)g(and)g(time)h(bin)f(size)h(of)g +(1.0)g(seconds,)g(the)f(expression)286 3895 y Fe +(gtioverlap\('gtifile',TIME,)o(TIM)o(E+1.)o(0\))0 4147 +y Fj(w)m(ould)36 b(calculate)i(the)e(amoun)m(t)g(of)g(o)m(v)m(erlap)h +(exp)s(osure)e(time)h(b)s(et)m(w)m(een)h(eac)m(h)f(one)g(second)g(time) +h(bin)e(and)g(the)0 4259 y(GTI)e(in)f('gti\014le'.)50 +b(In)32 b(this)h(case)h(the)f(time)g(bin)f(is)h(assumed)f(to)i(b)s +(egin)e(at)i(the)f(time)g(sp)s(eci\014ed)f(b)m(y)h(TIME)g(and)0 +4372 y(end)d(1)h(second)g(later.)43 b(Neither)31 b(startExpr)f(nor)h +(stopExpr)e(are)j(required)d(to)j(b)s(e)e(constan)m(t,)i(and)f(a)g +(ligh)m(t)h(curv)m(e)0 4485 y(is)h(not)h(required)f(to)h(ha)m(v)m(e)g +(a)g(constan)m(t)h(bin)e(size.)50 b(F)-8 b(or)34 b(tables,)i(the)d(o)m +(v)m(erlap)i(is)f(calculated)h(for)e(eac)m(h)i(en)m(try)e(in)0 +4598 y(the)e(table.)0 4758 y(It)d(is)f(also)i(p)s(ossible)e(to)h +(calculate)i(a)e(single)g(o)m(v)m(erlap)h(v)-5 b(alue,)29 +b(whic)m(h)e(w)m(ould)h(t)m(ypically)h(b)s(e)e(placed)h(in)f(a)h(k)m +(eyw)m(ord.)0 4871 y(F)-8 b(or)42 b(example,)j(a)d(w)m(a)m(y)g(to)g(to) +g(compute)g(the)f(total)i(o)m(v)m(erlap)g(exp)s(osure)d(of)i(a)f +(\014le)h(whose)f(TIME)g(column)g(is)0 4984 y(b)s(ounded)28 +b(b)m(y)i(the)h(k)m(eyw)m(ords)g(TST)-8 b(AR)g(T)29 b(and)h(TSTOP)-8 +b(,)30 b(o)m(v)m(erlapping)h(with)f(the)h(sp)s(eci\014ed)f(GTI,)g(w)m +(ould)g(b)s(e)286 5236 y Fe(#EXPOSURE)46 b(=)h +(gtioverlap\('gtifile',#TST)o(ART)o(,#TS)o(TOP\))0 5488 +y Fj(The)26 b Fe(#EXPOSURE)f Fj(syn)m(tax)i(with)g(a)g(leading)h(+)e +(ensures)g(that)i(the)f(requested)g(v)-5 b(alues)27 b(are)g(treated)h +(as)f(k)m(eyw)m(ords.)0 5601 y(Otherwise,)41 b(a)e(column)g(named)f +(EXPOSURE)g(will)h(b)s(e)g(created)g(with)g(the)g(\(constan)m(t\))i +(exp)s(osure)d(v)-5 b(alue)39 b(in)0 5714 y(eac)m(h)32 +b(en)m(try)-8 b(.)p eop end +%%Page: 153 161 +TeXDict begin 153 160 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(153)0 +555 y Fd(10.11.6)113 b(Spatial)38 b(Region)g(Filtering)0 +775 y Fj(Another)g(common)g(\014ltering)g(metho)s(d)f(selects)i(ro)m +(ws)f(based)g(on)f(whether)h(the)g(spatial)h(p)s(osition)e(asso)s +(ciated)0 887 y(with)32 b(eac)m(h)i(ro)m(w)e(is)h(lo)s(cated)h(within)e +(a)h(giv)m(en)g(2-dimensional)g(region.)48 b(The)32 b(syn)m(tax)h(for)f +(this)h(high-lev)m(el)h(\014lter)0 1000 y(is)334 1262 +y Fe(regfilter\()45 b("regfilename")f([)k(,)f(Xexpr,)f(Yexpr)h([)g(,)h +("wcs)e(cols")h(])g(])g(\))0 1524 y Fj(where)22 b(eac)m(h)i("[]")g +(demarks)e(optional)i(parameters.)38 b(The)22 b(region)h(\014le)g(name) +f(is)h(required)f(and)g(m)m(ust)g(b)s(e)g(enclosed)0 +1637 y(in)34 b(quotes.)51 b(The)33 b(remaining)h(parameters)h(are)f +(optional.)52 b(There)33 b(are)i(2)f(supp)s(orted)e(formats)i(for)f +(the)h(region)0 1750 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f +(binary)g(table.)73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f +(list)g(of)g(one)g(or)g(more)g(geometric)0 1863 y(shap)s(es)30 +b(\(circle,)j(ellipse,)g(b)s(o)m(x,)e(etc.\))44 b(whic)m(h)31 +b(de\014nes)f(a)i(region)g(on)f(the)g(celestial)j(sphere)c(or)h(an)g +(area)h(within)f(a)0 1975 y(particular)36 b(2D)g(image.)57 +b(The)35 b(region)h(\014le)f(is)g(t)m(ypically)j(generated)e(using)f +(an)g(image)i(displa)m(y)e(program)g(suc)m(h)0 2088 y(as)e(fv/PO)m(W)g +(\(distribute)f(b)m(y)h(the)f(HEASAR)m(C\),)h(or)g(ds9)f(\(distributed) +g(b)m(y)g(the)h(Smithsonian)f(Astroph)m(ysical)0 2201 +y(Observ)-5 b(atory\).)69 b(Users)39 b(should)g(refer)g(to)h(the)g(do)s +(cumen)m(tation)h(pro)m(vided)e(with)g(these)h(programs)f(for)h(more)0 +2314 y(details)29 b(on)f(the)g(syn)m(tax)h(used)e(in)h(the)h(region)f +(\014les.)40 b(The)28 b(FITS)f(region)i(\014le)f(format)h(is)f +(de\014ned)f(in)h(a)g(do)s(cumen)m(t)0 2427 y(a)m(v)-5 +b(ailable)33 b(from)d(the)g(FITS)g(Supp)s(ort)e(O\016ce)j(at)g(h)m +(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c(region.h)m(tml)0 +2587 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h (reg\014lter\("region.reg"\))h(\))c(the)g(co)s(ordinates)g(in)g(the)g -(default)g('X')h(and)e('Y')h(columns)0 3674 y(will)43 +(default)g('X')h(and)e('Y')h(columns)0 2700 y(will)43 b(b)s(e)g(used)f(to)i(determine)f(if)g(eac)m(h)h(ro)m(w)f(is)g(inside)g (or)g(outside)g(the)g(area)h(sp)s(eci\014ed)e(in)h(the)g(region)h -(\014le.)0 3786 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f +(\014le.)0 2813 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f (expressions,)h(ma)m(y)g(b)s(e)e(en)m(tered)i(if)g(needed,)f(as)h(in) -382 4049 y Fe(regfilter\("region.reg",)41 b(XPOS,)47 -b(YPOS\))0 4312 y Fj(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g +382 3075 y Fe(regfilter\("region.reg",)41 b(XPOS,)47 +b(YPOS\))0 3337 y Fj(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g (most)h(unam)m(biguously)f(if)h(the)g(p)s(ositions)g(in)f(the)h(region) -g(\014le)g(and)f(in)h(the)0 4425 y(table)g(to)g(b)s(e)e(\014ltered)h +g(\014le)g(and)f(in)h(the)0 3449 y(table)g(to)g(b)s(e)e(\014ltered)h (are)h(b)s(oth)e(giv)m(e)j(in)e(terms)g(of)g(absolute)h(celestial)i(co) s(ordinate)e(units.)54 b(In)35 b(this)g(case)h(the)0 -4538 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s +3562 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s (es)e(in)g(the)g(region)h(\014le)f(are)h(sp)s(eci\014ed)f(in)g(angular) -g(units)g(on)g(the)g(sky)0 4650 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en) +g(units)g(on)g(the)g(sky)0 3675 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en) i(in)e(R.A.)g(and)g(Dec.)42 b(and)30 b(sizes)h(in)f(arcseconds)g(or)h (arcmin)m(utes\).)41 b(Similarly)-8 b(,)31 b(eac)m(h)h(ro)m(w)0 -4763 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e +3788 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e (celestial)j(co)s(ordinate)e(asso)s(ciated)g(with)f(it.)50 -b(This)32 b(asso)s(ciation)j(is)e(usually)0 4876 y(implemen)m(ted)39 +b(This)32 b(asso)s(ciation)j(is)e(usually)0 3901 y(implemen)m(ted)39 b(using)e(a)i(set)g(of)f(so-called)i('W)-8 b(orld)39 b(Co)s(ordinate)g(System')f(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g -(that)0 4989 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g +(that)0 4014 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g (that)g(m)m(ust)f(b)s(e)f(applied)h(to)h(the)g(v)-5 b(alues)27 -b(in)g(the)h('X')g(and)e('Y')i(columns)0 5102 y(to)j(calculate)i(the)d -(co)s(ordinate.)0 5262 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s +b(in)g(the)h('X')g(and)e('Y')i(columns)0 4127 y(to)j(calculate)i(the)d +(co)s(ordinate.)0 4287 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s (erform)e(spatial)j(\014ltering)e(using)g(unitless)h('pixel')g(co)s -(ordinates)h(for)e(the)h(regions)g(and)0 5375 y(ro)m(w)33 +(ordinates)h(for)e(the)h(regions)g(and)0 4400 y(ro)m(w)33 b(p)s(ositions.)49 b(In)33 b(this)g(case)h(the)f(user)g(m)m(ust)g(b)s (e)f(careful)h(to)h(ensure)f(that)g(the)h(p)s(ositions)f(in)g(the)g(2)g -(\014les)h(are)0 5488 y(self-consisten)m(t.)54 b(A)34 +(\014les)h(are)0 4513 y(self-consisten)m(t.)54 b(A)34 b(t)m(ypical)i(problem)d(is)h(that)h(the)f(region)h(\014le)f(ma)m(y)h -(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 5601 +(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 4626 y(but)g(the)h(un)m(binned)e(co)s(ordinates)i(are)g(giv)m(en)h(in)e(the) h(ev)m(en)m(t)i(table.)48 b(The)32 b(R)m(OSA)-8 b(T)33 -b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 5714 y(ha)m(v)m(e)f(X)f +b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 4739 y(ha)m(v)m(e)f(X)f (and)f(Y)g(pixel)h(co)s(ordinates)g(that)h(range)f(from)f(1)h(-)g -(15360.)42 b(These)30 b(co)s(ordinates)g(are)g(t)m(ypically)h(binned)p -eop end -%%Page: 150 158 -TeXDict begin 150 157 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.150) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(150)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 555 y Fj(b)m(y)33 b(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i -(480x480)i(pixel)d(image.)51 b(If)32 b(one)i(then)f(uses)g(a)g(region)h -(\014le)f(generated)h(from)0 668 y(this)c(image)i(\(in)f(image)g(pixel) -g(units\))g(to)g(\014lter)f(the)h(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i +(15360.)42 b(These)30 b(co)s(ordinates)g(are)g(t)m(ypically)h(binned)0 +4852 y(b)m(y)i(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)i +(pixel)d(image.)51 b(If)32 b(one)i(then)f(uses)g(a)g(region)h(\014le)f +(generated)h(from)0 4965 y(this)c(image)i(\(in)f(image)g(pixel)g +(units\))g(to)g(\014lter)f(the)h(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i (\014le,)f(then)f(the)h(X)g(and)f(Y)g(column)h(v)-5 b(alues)0 -781 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e -(pixel)i(units)f(as)g(in:)382 1076 y Fe(regfilter\("rosat.reg",)42 -b(X/32.+.5,)j(Y/32.+.5\))0 1370 y Fj(Note)h(that)f(this)f(binning)f +5077 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e +(pixel)i(units)f(as)g(in:)382 5339 y Fe(regfilter\("rosat.reg",)42 +b(X/32.+.5,)j(Y/32.+.5\))0 5601 y Fj(Note)h(that)f(this)f(binning)f (con)m(v)m(ersion)j(is)e(not)h(necessary)g(if)f(the)h(region)g(\014le)f -(is)h(sp)s(eci\014ed)e(using)h(celestial)0 1483 y(co)s(ordinate)h +(is)h(sp)s(eci\014ed)e(using)h(celestial)0 5714 y(co)s(ordinate)h (units)f(instead)g(of)g(pixel)h(units)f(b)s(ecause)g(CFITSIO)e(is)j -(then)e(able)i(to)g(directly)g(compare)g(the)0 1596 y(celestial)30 -b(co)s(ordinate)f(of)e(eac)m(h)i(ro)m(w)f(in)f(the)h(table)g(with)g -(the)f(celestial)k(co)s(ordinates)d(in)f(the)h(region)g(\014le)g -(without)0 1709 y(ha)m(ving)j(to)g(kno)m(w)f(an)m(ything)h(ab)s(out)f -(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g(b)s(een)f(binned.)0 -1869 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f(should)e(rarely)h(b)s -(e)g(needed.)40 b(If)29 b(supplied,)f(this)i(string)f(con)m(tains)i -(the)e(names)0 1982 y(of)37 b(the)g(2)h(columns)f(\(space)h(or)f(comma) -g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g(asso)s(ciated)g(W)m(CS)f -(k)m(eyw)m(ords.)61 b(If)37 b(not)0 2095 y(supplied,)f(the)g(\014lter)g -(will)h(scan)f(the)g(X)g(and)f(Y)h(expressions)g(for)g(column)f(names.) -58 b(If)35 b(only)h(one)h(is)f(found)e(in)0 2208 y(eac)m(h)e -(expression,)e(those)h(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an) -f(error)g(will)h(b)s(e)f(returned.)0 2368 y(These)g(region)h(shap)s(es) -f(are)g(supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 -2662 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 -b(One)f(pixel)f(square)g(region)334 2775 y(Line)476 b(\()48 +(then)e(able)i(to)g(directly)g(compare)g(the)p eop end +%%Page: 154 162 +TeXDict begin 154 161 bop 0 299 a Fj(154)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(celestial)30 b(co)s(ordinate)f(of)e(eac)m(h)i(ro)m(w)f(in)f +(the)h(table)g(with)g(the)f(celestial)k(co)s(ordinates)d(in)f(the)h +(region)g(\014le)g(without)0 668 y(ha)m(ving)j(to)g(kno)m(w)f(an)m +(ything)h(ab)s(out)f(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g(b)s +(een)f(binned.)0 828 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f +(should)e(rarely)h(b)s(e)g(needed.)40 b(If)29 b(supplied,)f(this)i +(string)f(con)m(tains)i(the)e(names)0 941 y(of)37 b(the)g(2)h(columns)f +(\(space)h(or)f(comma)g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g +(asso)s(ciated)g(W)m(CS)f(k)m(eyw)m(ords.)61 b(If)37 +b(not)0 1054 y(supplied,)f(the)g(\014lter)g(will)h(scan)f(the)g(X)g +(and)f(Y)h(expressions)g(for)g(column)f(names.)58 b(If)35 +b(only)h(one)h(is)f(found)e(in)0 1167 y(eac)m(h)e(expression,)e(those)h +(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an)f(error)g(will)h(b)s +(e)f(returned.)0 1327 y(These)g(region)h(shap)s(es)f(are)g(supp)s +(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 +1591 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 +b(One)f(pixel)f(square)g(region)334 1704 y(Line)476 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region) -334 2888 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95 -b(<-)48 b(Rest)e(are)h(interiors)e(with)334 3001 y(Rectangle)236 +334 1817 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95 +b(<-)48 b(Rest)e(are)h(interiors)e(with)334 1930 y(Rectangle)236 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e -(considered)334 3114 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A) -i(\))143 b(V)47 b(within)f(the)h(region)334 3227 y(Diamond)332 -b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 3340 -y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 3453 y(Annulus)332 -b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 3566 y(Ellipse)332 -b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 3678 y(Elliptannulus)c(\() +(considered)334 2043 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A) +i(\))143 b(V)47 b(within)f(the)h(region)334 2156 y(Diamond)332 +b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 2269 +y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 2382 y(Annulus)332 +b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 2494 y(Ellipse)332 +b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 2607 y(Elliptannulus)c(\() k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334 -3791 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 -4086 y Fj(where)28 b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h +2720 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 +2984 y Fj(where)28 b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h (shap)s(e's)f(cen)m(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)g(of) -g(the)g(shap)s(e's)0 4199 y(edges;)39 b(Rxxx)c(are)g(the)h(shap)s(es')f +g(the)g(shap)s(e's)0 3097 y(edges;)39 b(Rxxx)c(are)g(the)h(shap)s(es')f (v)-5 b(arious)35 b(Radii)h(or)f(semima)5 b(jor/minor)36 -b(axes;)i(and)d(Axxx)g(are)h(the)g(angles)g(of)0 4312 +b(axes;)i(and)d(Axxx)g(are)h(the)g(angles)g(of)0 3210 y(rotation)d(\(or)e(b)s(ounding)f(angles)i(for)f(Sector\))h(in)f (degrees.)44 b(F)-8 b(or)32 b(rotated)h(shap)s(es,)e(the)g(rotation)i -(angle)f(can)g(b)s(e)0 4425 y(left)g(o\013,)h(indicating)f(no)f +(angle)f(can)g(b)s(e)0 3323 y(left)g(o\013,)h(indicating)f(no)f (rotation.)46 b(Common)31 b(alternate)i(names)e(for)h(the)f(regions)h -(can)g(also)h(b)s(e)d(used:)43 b(rotb)s(o)m(x)0 4538 +(can)g(also)h(b)s(e)d(used:)43 b(rotb)s(o)m(x)0 3436 y(=)29 b(b)s(o)m(x;)g(rotrectangle)i(=)e(rectangle;)i(\(rot\)rhom)m (bus)e(=)f(\(rot\)diamond;)j(and)d(pie)h(=)f(sector.)42 -b(When)28 b(a)i(shap)s(e's)0 4650 y(name)e(is)g(preceded)f(b)m(y)h(a)g +b(When)28 b(a)i(shap)s(e's)0 3549 y(name)e(is)g(preceded)f(b)m(y)h(a)g (min)m(us)g(sign,)g('-',)i(the)e(de\014ned)e(region)j(is)f(instead)g -(the)g(area)h(*outside*)g(its)f(b)s(oundary)0 4763 y(\(ie,)36 +(the)g(area)h(*outside*)g(its)f(b)s(oundary)0 3662 y(\(ie,)36 b(the)e(region)h(is)f(in)m(v)m(erted\).)53 b(All)34 b(the)g(shap)s(es)f (within)h(a)g(single)h(region)f(\014le)h(are)f(OR'd)f(together)j(to)e -(create)0 4876 y(the)29 b(region,)i(and)d(the)i(order)f(is)g +(create)0 3775 y(the)29 b(region,)i(and)d(the)i(order)f(is)g (signi\014can)m(t.)41 b(The)29 b(o)m(v)m(erall)i(w)m(a)m(y)g(of)e(lo)s (oking)h(at)g(region)g(\014les)f(is)g(that)h(if)f(the)h(\014rst)0 -4989 y(region)f(is)g(an)g(excluded)g(region)g(then)f(a)i(dumm)m(y)d +3888 y(region)f(is)g(an)g(excluded)g(region)g(then)f(a)i(dumm)m(y)d (included)h(region)i(of)f(the)g(whole)g(detector)h(is)f(inserted)f(in)h -(the)0 5102 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s +(the)0 4000 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s (eci\014cation)h(as)f(it)g(is)g(pro)s(cessed)f(o)m(v)m(errides)h(an)m -(y)g(selections)i(inside)d(of)h(that)g(region)0 5215 +(y)g(selections)i(inside)d(of)h(that)g(region)0 4113 y(sp)s(eci\014ed)36 b(b)m(y)g(previous)g(regions.)59 b(Another)37 b(w)m(a)m(y)g(of)g(thinking)f(ab)s(out)g(this)g(is)h(that) -g(if)f(a)h(previous)f(excluded)0 5328 y(region)31 b(is)f(completely)i +g(if)f(a)h(previous)f(excluded)0 4226 y(region)31 b(is)f(completely)i (inside)f(of)f(a)h(subsequen)m(t)e(included)h(region)h(the)g(excluded)f -(region)h(is)f(ignored.)0 5488 y(The)44 b(p)s(ositional)i(co)s +(region)h(is)f(ignored.)0 4386 y(The)44 b(p)s(ositional)i(co)s (ordinates)g(ma)m(y)f(b)s(e)g(giv)m(en)h(either)f(in)g(pixel)g(units,)j -(decimal)e(degrees)g(or)f(hh:mm:ss.s,)0 5601 y(dd:mm:ss.s)25 +(decimal)e(degrees)g(or)f(hh:mm:ss.s,)0 4499 y(dd:mm:ss.s)25 b(units.)38 b(The)26 b(shap)s(e)f(sizes)i(ma)m(y)f(b)s(e)g(giv)m(en)h (in)e(pixels,)j(degrees,)f(arcmin)m(utes,)h(or)e(arcseconds.)40 -b(Lo)s(ok)0 5714 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s +b(Lo)s(ok)0 4612 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s (duced)d(b)m(y)i(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)i(of)g -(the)f(region)h(\014le)f(format.)p eop end -%%Page: 151 159 -TeXDict begin 151 158 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.151) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.11.)73 -b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 -b Fj(151)0 555 y(There)31 b(are)g(three)h(lo)m(w-lev)m(el)i(functions)d -(that)g(are)h(primarily)f(for)g(use)g(with)g(reg\014lter)g(function,)h -(but)e(they)i(can)0 668 y(b)s(e)j(called)i(directly)-8 -b(.)59 b(They)35 b(return)g(a)h(b)s(o)s(olean)g(true)g(or)g(false)h -(dep)s(ending)d(on)i(whether)f(a)i(t)m(w)m(o)g(dimensional)0 -781 y(p)s(oin)m(t)30 b(is)h(in)f(the)g(region)h(or)g(not.)41 +(the)f(region)h(\014le)f(format.)0 4772 y(There)h(are)g(three)h(lo)m +(w-lev)m(el)i(functions)d(that)g(are)h(primarily)f(for)g(use)g(with)g +(reg\014lter)g(function,)h(but)e(they)i(can)0 4885 y(b)s(e)j(called)i +(directly)-8 b(.)59 b(They)35 b(return)g(a)h(b)s(o)s(olean)g(true)g(or) +g(false)h(dep)s(ending)d(on)i(whether)f(a)i(t)m(w)m(o)g(dimensional)0 +4998 y(p)s(oin)m(t)30 b(is)h(in)f(the)g(region)h(or)g(not.)41 b(The)30 b(p)s(ositional)h(co)s(ordinates)g(m)m(ust)f(b)s(e)g(giv)m(en) -h(in)f(pixel)h(units:)191 1029 y Fe("point)46 b(in)h(a)h(circular)d -(region")477 1141 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o -(olum)o(n\))191 1367 y("point)h(in)h(an)g(elliptical)e(region")430 -1480 y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o -(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 1706 -y("point)h(in)h(a)h(rectangular)c(region")620 1819 y -(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o(_wd)o(th,r)o(otat)o(ion)o(,Xco)o -(lumn)o(,Yc)o(olum)o(n\))191 2045 y(where)334 2158 y(\(xcntr,ycntr\))g -(are)j(the)g(\(x,y\))f(position)g(of)h(the)g(center)f(of)h(the)g -(region)334 2271 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 -b(the)g(\(x,y\))f(half)h(widths)f(of)h(the)g(region)334 -2383 y(\(xfll_wdth,yfll_wdth\))42 b(are)47 b(the)g(\(x,y\))f(full)h -(widths)f(of)h(the)g(region)334 2496 y(\(radius\))f(is)h(half)f(the)h -(diameter)f(of)h(the)g(circle)334 2609 y(\(rotation\))e(is)i(the)g +h(in)f(pixel)h(units:)191 5262 y Fe("point)46 b(in)h(a)h(circular)d +(region")477 5375 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o +(olum)o(n\))191 5601 y("point)h(in)h(an)g(elliptical)e(region")430 +5714 y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o +(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))p eop end +%%Page: 155 163 +TeXDict begin 155 162 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(155)191 +668 y Fe("point)46 b(in)h(a)h(rectangular)c(region")620 +781 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o(_wd)o(th,r)o(otat)o(ion)o +(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 1007 y(where)334 +1120 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f(position)g(of)h(the)g +(center)f(of)h(the)g(region)334 1233 y(\(xhlf_wdth,yhlf_wdth\))42 +b(are)47 b(the)g(\(x,y\))f(half)h(widths)f(of)h(the)g(region)334 +1346 y(\(xfll_wdth,yfll_wdth\))42 b(are)47 b(the)g(\(x,y\))f(full)h +(widths)f(of)h(the)g(region)334 1458 y(\(radius\))f(is)h(half)f(the)h +(diameter)f(of)h(the)g(circle)334 1571 y(\(rotation\))e(is)i(the)g (angle\(degrees\))d(that)j(the)g(region)f(is)h(rotated)f(with)620 -2722 y(respect)g(to)h(\(xcntr,ycntr\))334 2835 y(\(Xcoord,Ycoord\))d +1684 y(respect)g(to)h(\(xcntr,ycntr\))334 1797 y(\(Xcoord,Ycoord\))d (are)j(the)g(\(x,y\))f(coordinates)f(to)i(test,)f(usually)g(column)620 -2948 y(names)334 3061 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i -(an)f(expression,)d(not)j(merely)f(a)620 3174 y(column)h(name)f(or)h -(constant.)0 3299 y -SDict begin H.S end - 0 3299 a 0 3299 a -SDict begin 13.6 H.A end - 0 3299 a 0 3299 -a -SDict begin [/View [/XYZ H.V]/Dest (subsection.10.11.7) cvn /DEST pdfmark -end - 0 3299 a 164 x Fd(10.11.7)113 b(Example)38 b(Ro)m(w)f(Filters)191 -3681 y Fe([)47 b(binary)f(&&)i(mag)f(<=)g(5.0])380 b(-)48 -b(Extract)e(all)h(binary)f(stars)g(brighter)1766 3794 +1910 y(names)334 2023 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i +(an)f(expression,)d(not)j(merely)f(a)620 2136 y(column)h(name)f(or)h +(constant.)0 2443 y Fd(10.11.7)113 b(Example)38 b(Ro)m(w)f(Filters)191 +2665 y Fe([)47 b(binary)f(&&)i(mag)f(<=)g(5.0])380 b(-)48 +b(Extract)e(all)h(binary)f(stars)g(brighter)1766 2778 y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766 -3907 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 -4020 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 -4133 y(binning)f(specification\))191 4359 y([#row)g(>=)h(125)g(&&)h +2891 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 +3004 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 +3117 y(binning)f(specification\))191 3343 y([#row)g(>=)h(125)g(&&)h (#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through) -f(175)191 4585 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 -b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 4698 +f(175)191 3569 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 +b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 3681 y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766 -4811 y(greater)g(than)g(100)191 5036 y([abs\(sin\(theta)e(*)j(#deg\)\)) +3794 y(greater)g(than)g(100)191 4020 y([abs\(sin\(theta)e(*)j(#deg\)\)) f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766 -5149 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 -5262 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 -5375 y(are)g(tabulated)e(in)i(degrees)191 5601 y([SUM\()f(SPEC)h(>)g +4133 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 +4246 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 +4359 y(are)g(tabulated)e(in)i(degrees)191 4585 y([SUM\()f(SPEC)h(>)g (3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a) -1766 5714 y(spectrum,)g(held)i(in)g(vector)f(column)p +1766 4698 y(spectrum,)g(held)i(in)g(vector)f(column)1766 +4811 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766 +4924 y(times)f(greater)g(than)h(the)g(background)1766 +5036 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 +5262 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h +(vector)f(column)1766 5375 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i +(4,)g(and)1766 5488 y(2.)191 5714 y([@rowFilter.txt])711 +b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)p eop end -%%Page: 152 160 -TeXDict begin 152 159 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.152) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(152)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)1766 555 y Fe(SPEC,)46 b(with)h(at)g(least)f(one)h(value)g(3)1766 -668 y(times)f(greater)g(than)h(the)g(background)1766 -781 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 -1007 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h -(vector)f(column)1766 1120 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i -(4,)g(and)1766 1233 y(2.)191 1458 y([@rowFilter.txt])711 -b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766 -1571 y(contained)e(within)h(the)h(text)g(file)1766 1684 -y(rowFilter.txt)191 1910 y([gtifilter\(\)])855 b(-)48 -b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 2023 -y(extension,)92 b(filter)i(the)47 b(TIME)239 2136 y(column)f(in)h(the)g -(current)f(table,)g(using)239 2249 y(START/STOP)f(times)h(taken)g(from) -239 2362 y(columns)f(in)j(the)f(GTI)94 b(extension)191 -2588 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h -(have)f(a)i(coordinate)1766 2700 y(\(as)f(given)f(in)h(the)g(X)h(and)f -(Y)g(columns\))1766 2813 y(within)f(the)h(spatial)f(region)g(specified) -1766 2926 y(in)h(the)g(pow.reg)f(region)g(file.)191 3152 +%%Page: 156 164 +TeXDict begin 156 163 bop 0 299 a Fj(156)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1766 +555 y Fe(contained)45 b(within)h(the)h(text)g(file)1766 +668 y(rowFilter.txt)191 894 y([gtifilter\(\)])855 b(-)48 +b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 1007 +y(extension,)92 b(filter)i(the)47 b(TIME)239 1120 y(column)f(in)h(the)g +(current)f(table,)g(using)239 1233 y(START/STOP)f(times)h(taken)g(from) +239 1346 y(columns)f(in)j(the)f(GTI)94 b(extension)191 +1571 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h +(have)f(a)i(coordinate)1766 1684 y(\(as)f(given)f(in)h(the)g(X)h(and)f +(Y)g(columns\))1766 1797 y(within)f(the)h(spatial)f(region)g(specified) +1766 1910 y(in)h(the)g(pow.reg)f(region)g(file.)191 2136 y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f -(except)g(that)h(the)1766 3265 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g -(used)f(to)1766 3378 y(determine)f(the)i(coordinate)e(of)i(each)1766 -3491 y(row)g(in)g(the)g(table.)0 3637 y -SDict begin H.S end - 0 3637 a 0 3637 -a -SDict begin 13.6 H.A end - 0 3637 a 0 3637 a -SDict begin [/View [/XYZ H.V]/Dest (section.10.12) cvn /DEST pdfmark -end - 0 3637 a 197 x Ff(10.12)181 b(Binning)44 -b(or)h(Histogramming)i(Sp)t(eci\014cation)0 4086 y Fj(The)22 -b(optional)i(binning)e(sp)s(eci\014er)g(is)h(enclosed)h(in)f(square)f -(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)g(from)h(a)g -(general)0 4199 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation)g(b)m(y)f -(the)h(fact)g(that)g(it)g(b)s(egins)f(with)g(the)g(k)m(eyw)m(ord)h -('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 4312 y(b)m(y)41 -b(an)f(equals)i(sign.)72 b(When)41 b(binning)e(is)i(sp)s(eci\014ed,)i -(a)e(temp)s(orary)g(N-dimensional)g(FITS)f(primary)g(arra)m(y)0 -4425 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f(the)g -(v)-5 b(alues)44 b(in)e(the)i(sp)s(eci\014ed)e(columns)h(of)g(a)h(FITS) -e(table)0 4538 y(extension.)f(After)30 b(the)f(histogram)h(is)g +(except)g(that)h(the)1766 2249 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g +(used)f(to)1766 2362 y(determine)f(the)i(coordinate)e(of)i(each)1766 +2475 y(row)g(in)g(the)g(table.)0 2811 y Ff(10.12)181 +b(Binning)44 b(or)h(Histogramming)i(Sp)t(eci\014cation)0 +3062 y Fj(The)22 b(optional)i(binning)e(sp)s(eci\014er)g(is)h(enclosed) +h(in)f(square)f(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)g +(from)h(a)g(general)0 3175 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation) +g(b)m(y)f(the)h(fact)g(that)g(it)g(b)s(egins)f(with)g(the)g(k)m(eyw)m +(ord)h('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 3288 +y(b)m(y)41 b(an)f(equals)i(sign.)72 b(When)41 b(binning)e(is)i(sp)s +(eci\014ed,)i(a)e(temp)s(orary)g(N-dimensional)g(FITS)f(primary)g(arra) +m(y)0 3401 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f +(the)g(v)-5 b(alues)44 b(in)e(the)i(sp)s(eci\014ed)e(columns)h(of)g(a)h +(FITS)e(table)0 3514 y(extension.)f(After)30 b(the)f(histogram)h(is)g (computed)f(the)h(input)e(FITS)h(\014le)h(con)m(taining)h(the)e(table)i -(is)e(then)g(closed)0 4650 y(and)34 b(the)h(temp)s(orary)f(FITS)g +(is)e(then)g(closed)0 3627 y(and)34 b(the)h(temp)s(orary)f(FITS)g (primary)g(arra)m(y)h(is)g(op)s(ened)f(and)g(passed)g(to)h(the)g -(application)h(program.)54 b(Th)m(us,)0 4763 y(the)39 +(application)h(program.)54 b(Th)m(us,)0 3740 y(the)39 b(application)h(program)f(nev)m(er)g(sees)g(the)g(original)h(FITS)e (table)i(and)e(only)h(sees)h(the)f(image)h(in)e(the)h(new)0 -4876 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g +3853 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g (extensions\).)49 b(Ob)m(viously)-8 b(,)34 b(the)f(application)h -(program)e(m)m(ust)h(b)s(e)0 4989 y(exp)s(ecting)e(to)g(op)s(en)f(a)h +(program)e(m)m(ust)h(b)s(e)0 3966 y(exp)s(ecting)e(to)g(op)s(en)f(a)h (FITS)e(image)j(and)e(not)g(a)h(FITS)f(table)h(in)f(this)g(case.)0 -5149 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i +4126 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i (ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f(b)m(y)h(app)s(ending)f('b')h(\(for)h -(8-bit)g(b)m(yte\),)g('i')0 5262 y(\(for)g(16-bit)g(in)m(tegers\),)h +(8-bit)g(b)m(yte\),)g('i')0 4239 y(\(for)g(16-bit)g(in)m(tegers\),)h ('j')f(\(for)g(32-bit)g(in)m(teger\),)i('r')d(\(for)h(32-bit)g (\015oating)h(p)s(oin)m(ts\),)e(or)h('d')f(\(for)h(64-bit)g(double)0 -5375 y(precision)j(\015oating)i(p)s(oin)m(t\))e(to)h(the)g('bin')f(k)m +4351 y(precision)j(\015oating)i(p)s(oin)m(t\))e(to)h(the)g('bin')f(k)m (eyw)m(ord)h(\(e.g.)54 b('[binr)33 b(X]')i(creates)h(a)f(real)g -(\015oating)g(p)s(oin)m(t)f(image\).)0 5488 y(If)g(the)i(data)f(t)m(yp) +(\015oating)g(p)s(oin)m(t)f(image\).)0 4464 y(If)g(the)i(data)f(t)m(yp) s(e)g(is)g(not)h(explicitly)g(sp)s(eci\014ed)e(then)h(a)g(32-bit)i(in)m (teger)f(image)g(will)f(b)s(e)g(created)h(b)m(y)e(default,)0 -5601 y(unless)24 b(the)i(w)m(eigh)m(ting)g(option)g(is)f(also)h(sp)s +4577 y(unless)24 b(the)i(w)m(eigh)m(ting)g(option)g(is)f(also)h(sp)s (eci\014ed)e(in)h(whic)m(h)g(case)h(the)f(image)i(will)e(ha)m(v)m(e)h -(a)g(32-bit)g(\015oating)g(p)s(oin)m(t)0 5714 y(data)31 -b(t)m(yp)s(e)g(b)m(y)f(default.)p eop end -%%Page: 153 161 -TeXDict begin 153 160 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.153) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(10.12.)113 -b(BINNING)32 b(OR)e(HISTOGRAMMING)g(SPECIFICA)-8 b(TION)1223 -b Fj(153)0 555 y(The)24 b(histogram)g(image)i(ma)m(y)f(ha)m(v)m(e)g -(from)f(1)g(to)h(4)g(dimensions)e(\(axes\),)k(dep)s(ending)c(on)h(the)g -(n)m(um)m(b)s(er)f(of)h(columns)0 668 y(that)31 b(are)g(sp)s -(eci\014ed.)40 b(The)30 b(general)h(form)f(of)g(the)h(binning)e(sp)s -(eci\014cation)i(is:)48 921 y Fe([bin{bijrd})92 b -(Xcol=min:max:binsize,)42 b(Ycol=)47 b(...,)f(Zcol=...,)f(Tcol=...;)h -(weight])0 1174 y Fj(in)39 b(whic)m(h)g(up)f(to)i(4)g(columns,)h(eac)m -(h)f(corresp)s(onding)e(to)i(an)g(axis)f(of)h(the)f(image,)k(are)d -(listed.)67 b(The)39 b(column)0 1287 y(names)27 b(are)h(case)h -(insensitiv)m(e,)g(and)e(the)h(column)f(n)m(um)m(b)s(er)f(ma)m(y)i(b)s -(e)f(giv)m(en)h(instead)g(of)g(the)g(name,)g(preceded)f(b)m(y)0 -1400 y(a)32 b(p)s(ound)e(sign)i(\(e.g.,)i([bin)d(#4=1:512]\).)47 -b(If)31 b(the)h(column)g(name)g(is)f(not)h(sp)s(eci\014ed,)g(then)f -(CFITSIO)g(will)h(\014rst)0 1512 y(try)37 b(to)h(use)f(the)g -('preferred)f(column')i(as)f(sp)s(eci\014ed)g(b)m(y)g(the)g(CPREF)g(k)m -(eyw)m(ord)h(if)f(it)g(exists)h(\(e.g.,)j('CPREF)0 1625 -y(=)i('DETX,DETY'\),)h(otherwise)g(column)f(names)g('X',)h('Y',)g('Z',) -f(and)f('T')i(will)f(b)s(e)f(assumed)h(for)g(eac)m(h)h(of)0 -1738 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 b(.)62 -b(In)37 b(cases)h(where)e(the)i(column)f(name)g(could)g(b)s(e)f -(confused)h(with)g(an)g(arithmetic)0 1851 y(expression,)30 +(a)g(32-bit)g(\015oating)g(p)s(oin)m(t)0 4690 y(data)31 +b(t)m(yp)s(e)g(b)m(y)f(default.)0 4850 y(The)24 b(histogram)g(image)i +(ma)m(y)f(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)e(\(axes\),)k +(dep)s(ending)c(on)h(the)g(n)m(um)m(b)s(er)f(of)h(columns)0 +4963 y(that)31 b(are)g(sp)s(eci\014ed.)40 b(The)30 b(general)h(form)f +(of)g(the)h(binning)e(sp)s(eci\014cation)i(is:)48 5226 +y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47 +b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 5488 y Fj(in)39 +b(whic)m(h)g(up)f(to)i(4)g(columns,)h(eac)m(h)f(corresp)s(onding)e(to)i +(an)g(axis)f(of)h(the)f(image,)k(are)d(listed.)67 b(The)39 +b(column)0 5601 y(names)27 b(are)h(case)h(insensitiv)m(e,)g(and)e(the)h +(column)f(n)m(um)m(b)s(er)f(ma)m(y)i(b)s(e)f(giv)m(en)h(instead)g(of)g +(the)g(name,)g(preceded)f(b)m(y)0 5714 y(a)32 b(p)s(ound)e(sign)i +(\(e.g.,)i([bin)d(#4=1:512]\).)47 b(If)31 b(the)h(column)g(name)g(is)f +(not)h(sp)s(eci\014ed,)g(then)f(CFITSIO)g(will)h(\014rst)p +eop end +%%Page: 157 165 +TeXDict begin 157 164 bop 0 299 a Fh(10.12.)113 b(BINNING)32 +b(OR)e(HISTOGRAMMING)g(SPECIFICA)-8 b(TION)1223 b Fj(157)0 +555 y(try)37 b(to)h(use)f(the)g('preferred)f(column')i(as)f(sp)s +(eci\014ed)g(b)m(y)g(the)g(CPREF)g(k)m(eyw)m(ord)h(if)f(it)g(exists)h +(\(e.g.,)j('CPREF)0 668 y(=)i('DETX,DETY'\),)h(otherwise)g(column)f +(names)g('X',)h('Y',)g('Z',)f(and)f('T')i(will)f(b)s(e)f(assumed)h(for) +g(eac)m(h)h(of)0 781 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 +b(.)62 b(In)37 b(cases)h(where)e(the)i(column)f(name)g(could)g(b)s(e)f +(confused)h(with)g(an)g(arithmetic)0 894 y(expression,)30 b(enclose)i(the)f(column)f(name)g(in)g(paren)m(theses)h(to)g(force)g (the)f(name)h(to)g(b)s(e)f(in)m(terpreted)g(literally)-8 -b(.)0 2011 y(Eac)m(h)33 b(column)f(name)g(ma)m(y)h(b)s(e)f(follo)m(w)m +b(.)0 1054 y(Eac)m(h)33 b(column)f(name)g(ma)m(y)h(b)s(e)f(follo)m(w)m (ed)h(b)m(y)g(an)f(equals)g(sign)h(and)e(then)h(the)g(lo)m(w)m(er)i -(and)e(upp)s(er)e(range)i(of)h(the)0 2124 y(histogram,)f(and)e(the)h +(and)e(upp)s(er)e(range)i(of)h(the)0 1167 y(histogram,)f(and)e(the)h (size)h(of)f(the)g(histogram)h(bins,)e(separated)h(b)m(y)g(colons.)43 b(Spaces)31 b(are)g(allo)m(w)m(ed)i(b)s(efore)e(and)0 -2237 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)f(the)h +1280 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)f(the)h ('min:max:binsize')g(string.)40 b(The)29 b(min,)f(max)h(and)f(binsize)h -(v)-5 b(alues)0 2350 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f +(v)-5 b(alues)0 1393 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f (\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)f(or)h(they)g(ma)m(y)g(b) s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)g(the)g(header)g(of)0 -2463 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5 +1506 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5 b(alue)31 b(of)g(that)g(k)m(eyw)m(ord)f(is)h(substituted)f(in)m(to)h -(the)g(expression.)0 2623 y(Default)37 b(v)-5 b(alues)36 +(the)g(expression.)0 1666 y(Default)37 b(v)-5 b(alues)36 b(for)g(the)g(min,)h(max)f(and)g(binsize)g(quan)m(tities)h(will)f(b)s (e)f(used)h(if)f(not)i(explicitly)g(giv)m(en)g(in)f(the)0 -2736 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h -(examples:)191 2989 y Fe([bin)47 b(x)g(=)g(:512:2])94 -b(-)47 b(use)g(default)f(minimum)g(value)191 3102 y([bin)h(x)g(=)g +1779 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h +(examples:)191 2033 y Fe([bin)47 b(x)g(=)g(:512:2])94 +b(-)47 b(use)g(default)f(minimum)g(value)191 2146 y([bin)h(x)g(=)g (1::2])190 b(-)47 b(use)g(default)f(maximum)g(value)191 -3215 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size) -191 3328 y([bin)g(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g -(value)g(and)h(bin)g(size)191 3440 y([bin)g(x)g(=)g(:512])190 +2259 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size) +191 2372 y([bin)g(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g +(value)g(and)h(bin)g(size)191 2485 y([bin)g(x)g(=)g(:512])190 b(-)47 b(use)g(default)f(minimum)g(value)g(and)h(bin)g(size)191 -3553 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h -(maximum)f(values)191 3666 y([bin)h(x])524 b(-)47 b(use)g(default)f -(minimum,)g(maximum)g(and)g(bin)h(size)191 3779 y([bin)g(4])524 +2598 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h +(maximum)f(values)191 2711 y([bin)h(x])524 b(-)47 b(use)g(default)f +(minimum,)g(maximum)g(and)g(bin)h(size)191 2824 y([bin)g(4])524 b(-)47 b(default)f(2-D)h(image,)f(bin)h(size)g(=)g(4)h(in)f(both)g -(axes)191 3892 y([bin])619 b(-)47 b(default)f(2-D)h(image)0 -4145 y Fj(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33 +(axes)191 2937 y([bin])619 b(-)47 b(default)f(2-D)h(image)0 +3191 y Fj(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33 b(of)g(the)g(TLMINn,)f(TLMAXn,)h(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)e -(they)h(exist,)h(for)0 4258 y(the)j(default)f(min,)i(max,)g(and)e +(they)h(exist,)h(for)0 3304 y(the)j(default)f(min,)i(max,)g(and)e (binsize,)i(resp)s(ectiv)m(ely)-8 b(.)61 b(If)36 b(they)h(do)f(not)h -(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 4371 y(actual)d(minim)m +(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 3417 y(actual)d(minim)m (um)e(and)h(maxim)m(um)g(v)-5 b(alues)32 b(in)g(the)g(column)f(for)h (the)g(histogram)h(min)e(and)h(max)g(v)-5 b(alues.)45 -b(The)0 4484 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g +b(The)0 3530 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g (or)e(\(max)h(-)g(min\))f(/)h(10.,)i(whic)m(hev)m(er)e(is)g(smaller,)h -(so)e(that)i(the)e(histogram)0 4597 y(will)e(ha)m(v)m(e)g(at)g(least)h -(10)f(bins)f(along)h(eac)m(h)h(axis.)0 4757 y(A)41 b(shortcut)g +(so)e(that)i(the)e(histogram)0 3643 y(will)e(ha)m(v)m(e)g(at)g(least)h +(10)f(bins)f(along)h(eac)m(h)h(axis.)0 3803 y(A)41 b(shortcut)g (notation)h(is)f(allo)m(w)m(ed)i(if)e(all)h(the)f(columns/axes)h(ha)m (v)m(e)g(the)f(same)g(binning)f(sp)s(eci\014cation.)74 -b(In)0 4870 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b) +b(In)0 3916 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b) s(e)f(listed)h(within)f(paren)m(theses,)i(follo)m(w)m(ed)h(b)m(y)d(the) -h(\(single\))h(binning)0 4982 y(sp)s(eci\014cation,)d(as)g(in:)191 -5235 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 5348 y([bin)g(\(X,Y\))f(=)h -(5])0 5601 y Fj(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g +h(\(single\))h(binning)0 4029 y(sp)s(eci\014cation,)d(as)g(in:)191 +4283 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 4396 y([bin)g(\(X,Y\))f(=)h +(5])0 4650 y Fj(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g (the)g(last)g(item)h(in)e(the)h(binning)f(sp)s(eci\014er)g(and,)h(if)f -(presen)m(t,)i(is)e(separated)0 5714 y(from)38 b(the)g(list)h(of)f +(presen)m(t,)i(is)e(separated)0 4763 y(from)38 b(the)g(list)h(of)f (columns)g(b)m(y)g(a)h(semi-colon.)65 b(As)39 b(the)f(histogram)h(is)f -(accum)m(ulated,)k(this)c(w)m(eigh)m(t)i(is)e(used)p +(accum)m(ulated,)k(this)c(w)m(eigh)m(t)i(is)e(used)0 +4876 y(to)d(incremen)m(ted)f(the)g(v)-5 b(alue)35 b(of)f(the)g +(appropriated)f(bin)h(in)f(the)h(histogram.)52 b(If)34 +b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 4989 y(sp)s(eci\014ed,)24 +b(then)f(the)g(default)g(w)m(eigh)m(t)i(=)d(1)i(is)f(assumed.)37 +b(The)23 b(w)m(eigh)m(ting)i(factor)f(ma)m(y)f(b)s(e)g(a)g(constan)m(t) +i(in)m(teger)f(or)0 5102 y(\015oating)30 b(p)s(oin)m(t)f(n)m(um)m(b)s +(er,)f(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)h(con)m(taining)g(the)g +(w)m(eigh)m(ting)g(v)-5 b(alue.)41 b(Or)28 b(the)h(w)m(eigh)m(ting)0 +5215 y(factor)g(ma)m(y)g(b)s(e)e(the)h(name)g(of)h(a)f(table)h(column)f +(in)g(whic)m(h)f(case)j(the)e(v)-5 b(alue)28 b(in)g(that)h(column,)f +(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 5328 y(basis,)i(will)h(b)s(e)f +(used.)0 5488 y(In)35 b(some)h(cases,)i(the)d(column)h(or)f(k)m(eyw)m +(ord)h(ma)m(y)g(giv)m(e)h(the)f(recipro)s(cal)g(of)g(the)g(actual)h(w)m +(eigh)m(t)g(v)-5 b(alue)36 b(that)g(is)0 5601 y(needed.)49 +b(In)32 b(this)h(case,)i(precede)e(the)h(w)m(eigh)m(t)g(k)m(eyw)m(ord)g +(or)f(column)g(name)g(b)m(y)g(a)g(slash)g('/')h(to)g(tell)g(CFITSIO)0 +5714 y(to)d(use)f(the)h(recipro)s(cal)g(of)f(the)h(v)-5 +b(alue)31 b(when)e(constructing)i(the)g(histogram.)p eop end -%%Page: 154 162 -TeXDict begin 154 161 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.154) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(154)1528 -b Fh(CHAPTER)29 b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 -b(AX)0 555 y Fj(to)35 b(incremen)m(ted)f(the)g(v)-5 b(alue)35 -b(of)f(the)g(appropriated)f(bin)h(in)f(the)h(histogram.)52 -b(If)34 b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 -668 y(sp)s(eci\014ed,)24 b(then)f(the)g(default)g(w)m(eigh)m(t)i(=)d(1) -i(is)f(assumed.)37 b(The)23 b(w)m(eigh)m(ting)i(factor)f(ma)m(y)f(b)s -(e)g(a)g(constan)m(t)i(in)m(teger)f(or)0 781 y(\015oating)30 -b(p)s(oin)m(t)f(n)m(um)m(b)s(er,)f(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m -(ord)h(con)m(taining)g(the)g(w)m(eigh)m(ting)g(v)-5 b(alue.)41 -b(Or)28 b(the)h(w)m(eigh)m(ting)0 894 y(factor)g(ma)m(y)g(b)s(e)e(the)h -(name)g(of)h(a)f(table)h(column)f(in)g(whic)m(h)f(case)j(the)e(v)-5 -b(alue)28 b(in)g(that)h(column,)f(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 -1007 y(basis,)i(will)h(b)s(e)f(used.)0 1167 y(In)35 b(some)h(cases,)i -(the)d(column)h(or)f(k)m(eyw)m(ord)h(ma)m(y)g(giv)m(e)h(the)f(recipro)s -(cal)g(of)g(the)g(actual)h(w)m(eigh)m(t)g(v)-5 b(alue)36 -b(that)g(is)0 1280 y(needed.)49 b(In)32 b(this)h(case,)i(precede)e(the) -h(w)m(eigh)m(t)g(k)m(eyw)m(ord)g(or)f(column)g(name)g(b)m(y)g(a)g -(slash)g('/')h(to)g(tell)g(CFITSIO)0 1393 y(to)d(use)f(the)h(recipro)s -(cal)g(of)f(the)h(v)-5 b(alue)31 b(when)e(constructing)i(the)g -(histogram.)0 1553 y(F)-8 b(or)25 b(complex)g(or)f(commonly)g(used)g -(histograms,)i(one)e(can)h(also)g(place)g(its)f(description)g(in)m(to)h -(a)g(text)g(\014le)f(and)g(im-)0 1666 y(p)s(ort)e(it)g(in)m(to)h(the)g -(binning)e(sp)s(eci\014cation)i(using)e(the)i(syn)m(tax)f([bin)g +%%Page: 158 166 +TeXDict begin 158 165 bop 0 299 a Fj(158)1528 b Fh(CHAPTER)29 +b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(F)g(or)25 b(complex)g(or)f(commonly)g(used)g(histograms,)i +(one)e(can)h(also)g(place)g(its)f(description)g(in)m(to)h(a)g(text)g +(\014le)f(and)g(im-)0 668 y(p)s(ort)e(it)g(in)m(to)h(the)g(binning)e +(sp)s(eci\014cation)i(using)e(the)i(syn)m(tax)f([bin)g (@\014lename.txt].)39 b(The)22 b(\014le's)g(con)m(ten)m(ts)i(can)e(ex-) -0 1779 y(tend)h(o)m(v)m(er)i(m)m(ultiple)f(lines,)h(although)f(it)g(m)m +0 781 y(tend)h(o)m(v)m(er)i(m)m(ultiple)f(lines,)h(although)f(it)g(m)m (ust)f(still)h(conform)f(to)h(the)g(no-spaces)g(rule)f(for)g(the)h -(min:max:binsize)0 1892 y(syn)m(tax)35 b(and)f(eac)m(h)h(axis)g(sp)s +(min:max:binsize)0 894 y(syn)m(tax)35 b(and)f(eac)m(h)h(axis)g(sp)s (eci\014cation)h(m)m(ust)e(still)h(b)s(e)f(comma-separated.)55 -b(An)m(y)34 b(lines)h(in)f(the)h(external)g(text)0 2005 +b(An)m(y)34 b(lines)h(in)f(the)h(external)g(text)0 1007 y(\014le)27 b(that)g(b)s(egin)g(with)f(2)i(slash)e(c)m(haracters)j (\('//'\))g(will)e(b)s(e)f(ignored)h(and)f(ma)m(y)i(b)s(e)e(used)g(to)i -(add)e(commen)m(ts)i(in)m(to)0 2118 y(the)j(\014le.)0 -2278 y(Examples:)191 2537 y Fe([bini)46 b(detx,)h(dety])762 -b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 2650 -y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 2763 -y(default)h(values)g(for)h(the)g(histogram)1861 2876 -y(range)g(and)g(binsize)191 3102 y([bin)g(\(detx,)f(dety\)=16;)f +(add)e(commen)m(ts)i(in)m(to)0 1120 y(the)j(\014le.)0 +1280 y(Examples:)191 1540 y Fe([bini)46 b(detx,)h(dety])762 +b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 1653 +y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 1766 +y(default)h(values)g(for)h(the)g(histogram)1861 1878 +y(range)g(and)g(binsize)191 2104 y([bin)g(\(detx,)f(dety\)=16;)f (/exposure])g(-)i(2-D,)g(32-bit)f(real)h(histogram)e(of)i(DETX)1861 -3215 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)1861 -3328 y(in)g(both)e(axes.)h(The)f(histogram)g(values)1861 -3441 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 -3554 y(value.)191 3779 y([bin)h(time=TSTART:TSTOP:0.1])280 +2217 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)1861 +2330 y(in)g(both)e(axes.)h(The)f(histogram)g(values)1861 +2443 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 +2556 y(value.)191 2782 y([bin)h(time=TSTART:TSTOP:0.1])280 b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861 -3892 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 4005 -y(with)g(0.1)g(unit)g(size)f(bins.)191 4231 y([bin)h(pha,)f +2895 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 3008 +y(with)g(0.1)g(unit)g(size)f(bins.)191 3233 y([bin)h(pha,)f (time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g -(binning)1861 4344 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) -1861 4457 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 -4570 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 -4796 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h -(the)g(text)f(file)1861 4909 y(binFilter.txt)f(for)h(the)h(binning)1861 -5021 y(specifications.)p eop end -%%Page: 155 163 -TeXDict begin 155 162 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.155) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.11) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(11)0 +(binning)1861 3346 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) +1861 3459 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 +3572 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 +3798 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h +(the)g(text)f(file)1861 3911 y(binFilter.txt)f(for)h(the)h(binning)1861 +4024 y(specifications.)p eop end +%%Page: 159 167 +TeXDict begin 159 166 bop 0 1225 a Fg(Chapter)65 b(11)0 1687 y Fm(T)-19 b(emplate)76 b(Files)0 2180 y Fj(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g(created)g(with)g(a)f(call)i(to)g (\014ts)p 2101 2180 28 4 v 32 w(create)p 2369 2180 V @@ -19911,24 +15738,17 @@ (where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h(FITS) f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h(ASCI)s(I)e (template)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m(wing)i -(sections.)0 3009 y -SDict begin H.S end - 0 3009 a 0 3009 a -SDict begin 13.6 H.A end - 0 3009 a 0 3009 -a -SDict begin [/View [/XYZ H.V]/Dest (section.11.1) cvn /DEST pdfmark -end - 0 3009 a 179 x Ff(11.1)136 b(Detailed)46 b(T)-11 b(emplate)46 -b(Line)f(F)-11 b(ormat)0 3438 y Fj(The)30 b(format)h(of)f(eac)m(h)i -(ASCI)s(I)c(template)k(line)f(closely)h(follo)m(ws)f(the)g(format)g(of) -f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95 3682 y Fe(KEYWORD)46 -b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926 y Fj(except)22 b(that)g(free)g -(format)f(ma)m(y)h(b)s(e)f(used)f(\(e.g.,)25 b(the)d(equals)f(sign)h -(ma)m(y)f(app)s(ear)g(at)h(an)m(y)g(p)s(osition)f(in)g(the)h(line\))g -(and)0 4039 y(T)-8 b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)h(and) -e(are)g(treated)h(the)g(same)f(as)h(space)f(c)m(haracters.)51 -b(The)33 b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)g(are)h +(sections.)0 3188 y Ff(11.1)136 b(Detailed)46 b(T)-11 +b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fj(The)30 +b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)k(line)f(closely)h(follo) +m(ws)f(the)g(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95 +3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926 +y Fj(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f +(\(e.g.,)25 b(the)d(equals)f(sign)h(ma)m(y)f(app)s(ear)g(at)h(an)m(y)g +(p)s(osition)f(in)g(the)h(line\))g(and)0 4039 y(T)-8 +b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)h(and)e(are)g(treated)h +(the)g(same)f(as)h(space)f(c)m(haracters.)51 b(The)33 +b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)g(are)h (optional.)43 b(The)30 b(equals)h(sign)f(c)m(haracter)j(is)d(also)i (optional,)g(but)e(it)h(is)f(recommended)0 4264 y(that)42 b(it)f(b)s(e)g(included)f(for)h(clarit)m(y)-8 b(.)75 @@ -19959,28 +15779,16 @@ (long)g(in)m(tegers)g(with)f(a)g(range)h(from)e(-2147483648)0 5601 y(to)31 b(+2147483647,)k(whereas)30 b(other)h(C)f(compilers)h (supp)s(ort)e(8-b)m(yte)j(in)m(tegers)f(with)f(a)h(range)g(of)g(plus)e -(or)i(min)m(us)0 5714 y(2**63.)1882 5942 y(155)p eop +(or)i(min)m(us)0 5714 y(2**63.)1882 5942 y(159)p eop end -%%Page: 156 164 -TeXDict begin 156 163 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.156) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(156)2250 -b Fh(CHAPTER)29 b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)0 -555 y Fj(The)23 b(c)m(haracter)h(string)f(v)-5 b(alues)24 -b(need)f(not)g(b)s(e)g(enclosed)g(in)g(single)h(quote)g(c)m(haracters)g -(unless)f(they)g(are)h(necessary)0 668 y(to)37 b(distinguish)e(the)i -(string)f(from)f(a)i(di\013eren)m(t)g(data)f(t)m(yp)s(e)h(\(e.g.)59 -b(2.0)38 b(is)e(a)g(real)h(but)f('2.0')h(is)f(a)h(string\).)58 +%%Page: 160 168 +TeXDict begin 160 167 bop 0 299 a Fj(160)2250 b Fh(CHAPTER)29 +b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fj(The)23 +b(c)m(haracter)h(string)f(v)-5 b(alues)24 b(need)f(not)g(b)s(e)g +(enclosed)g(in)g(single)h(quote)g(c)m(haracters)g(unless)f(they)g(are)h +(necessary)0 668 y(to)37 b(distinguish)e(the)i(string)f(from)f(a)i +(di\013eren)m(t)g(data)f(t)m(yp)s(e)h(\(e.g.)59 b(2.0)38 +b(is)e(a)g(real)h(but)f('2.0')h(is)f(a)h(string\).)58 b(The)0 781 y(k)m(eyw)m(ord)38 b(has)g(an)g(unde\014ned)d(\(n)m(ull\))k (v)-5 b(alue)38 b(if)g(the)g(template)h(record)f(only)g(con)m(tains)h (blanks)e(follo)m(wing)j(the)0 894 y("=")31 b(or)f(b)s(et)m(w)m(een)h @@ -20022,15 +15830,7 @@ (a)h(new)e(extension)i(HDU)f(de\014nition.)52 b(The)33 b(previous)h(HDU)h(will)0 3578 y(b)s(e)30 b(closed)h(at)g(this)f(p)s (oin)m(t)h(and)e(pro)s(cessing)i(of)f(the)h(next)f(extension)h(b)s -(egins.)0 3739 y -SDict begin H.S end - 0 3739 a 0 3739 a -SDict begin 13.6 H.A end - 0 3739 a 0 3739 a -SDict begin [/View [/XYZ H.V]/Dest (section.11.2) cvn /DEST pdfmark -end - -0 3739 a 179 x Ff(11.2)136 b(Auto-indexing)45 b(of)g(Keyw)l(ords)0 +(egins.)0 3918 y Ff(11.2)136 b(Auto-indexing)45 b(of)g(Keyw)l(ords)0 4169 y Fj(If)31 b(a)h(template)g(k)m(eyw)m(ord)g(name)f(ends)g(with)g (a)g("#")h(c)m(haracter,)i(it)e(is)f(said)g(to)h(b)s(e)f ('auto-indexed'.)44 b(Eac)m(h)32 b("#")0 4282 y(c)m(haracter)i(will)f @@ -20052,34 +15852,14 @@ (ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40 b(But)26 b(if)g(the)g(template)h(lo)s(oks)f(lik)m(e,)p eop end -%%Page: 157 165 -TeXDict begin 157 164 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.157) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(11.3.)73 -b(TEMPLA)-8 b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)1982 -b Fj(157)95 555 y Fe(TTYPE#)47 b(=)g(TIME)95 668 y(TTYPE#)g(=)g(RATE)95 +%%Page: 161 169 +TeXDict begin 161 168 bop 0 299 a Fh(11.3.)73 b(TEMPLA)-8 +b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)1982 b Fj(161)95 +555 y Fe(TTYPE#)47 b(=)g(TIME)95 668 y(TTYPE#)g(=)g(RATE)95 781 y(TFORM#)g(=)g(1D)95 894 y(TFORM#)g(=)g(1E)0 1202 y Fj(this)31 b(results)f(in)h(a)g(FITS)f(\014les)h(with)f(TTYPE1,)h (TTYPE2,)g(TF)m(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)f(is)g(probably)0 -1315 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1509 y -SDict begin H.S end - 0 -1509 a 0 1509 a -SDict begin 13.6 H.A end - 0 1509 a 0 1509 a -SDict begin [/View [/XYZ H.V]/Dest (section.11.3) cvn /DEST pdfmark -end - 0 1509 a 197 x Ff(11.3)136 +1315 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1706 y Ff(11.3)136 b(T)-11 b(emplate)45 b(P)l(arser)h(Directiv)l(es)0 1968 y Fj(In)29 b(addition)i(to)f(the)g(template)i(lines)e(whic)m(h)g (de\014ne)f(individual)h(k)m(eyw)m(ords,)g(the)g(template)i(parser)d @@ -20123,29 +15903,9 @@ (template)g(\014le)f(using)f(the)h(group)f(directiv)m(es,)k(lo)s(ok)d (at)g(the)g(sample.tpl)0 5714 y(\014le)30 b(that)h(is)g(included)e(in)i (the)f(CFITSIO)f(distribution.)p eop end -%%Page: 158 166 -TeXDict begin 158 165 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.158) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(158)2250 -b Fh(CHAPTER)29 b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)0 -464 y -SDict begin H.S end - 0 464 a 0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.11.4) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(11.4)136 +%%Page: 162 170 +TeXDict begin 162 169 bop 0 299 a Fj(162)2250 b Fh(CHAPTER)29 +b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Ff(11.4)136 b(F)-11 b(ormal)45 b(T)-11 b(emplate)46 b(Syn)l(tax)0 805 y Fj(The)30 b(template)i(syn)m(tax)f(can)f(formally)h(b)s(e)f (de\014ned)f(as)i(follo)m(ws:)191 1063 y Fe(TEMPLATE)45 @@ -20163,16 +15923,8 @@ y(\(Header)27 b(Data)h(Unit\))g(or)e(a)h(GR)m(OUP)-8 b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)g(the)g(parser)f(creates) i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 2902 y(\014le)j(HDUs.)0 -3039 y -SDict begin H.S end - 0 3039 a 0 3039 a -SDict begin 13.6 H.A end - 0 3039 a 0 3039 a -SDict begin [/View [/XYZ H.V]/Dest (section.11.5) cvn /DEST pdfmark -end - 0 3039 a 196 -x Ff(11.5)136 b(Errors)0 3485 y Fj(In)24 b(general)h(the)f(\014ts)p -692 3485 28 4 v 33 w(execute)p 1019 3485 V 34 w(template\(\))i +3235 y Ff(11.5)136 b(Errors)0 3485 y Fj(In)24 b(general)h(the)f(\014ts) +p 692 3485 28 4 v 33 w(execute)p 1019 3485 V 34 w(template\(\))i (function)e(tries)h(to)g(b)s(e)f(as)g(atomic)i(as)f(p)s(ossible,)g(so)f (either)h(ev)m(erything)0 3598 y(is)f(done)g(or)g(nothing)f(is)h(done.) 39 b(If)23 b(an)h(error)f(o)s(ccurs)h(during)f(parsing)g(of)h(the)g @@ -20181,15 +15933,7 @@ (top)g(lev)m(el)h(BLOCK)e(\(with)h(all)g(its)h(c)m(hildren)e(if)h(an)m (y\))g(in)g(whic)m(h)f(the)h(error)f(o)s(ccurred,)0 3824 y(then)g(it)h(will)g(stop)f(reading)h(the)f(template)i(\014le)e(and)g -(it)h(will)g(return)e(with)h(an)g(error.)0 3979 y -SDict begin H.S end - 0 3979 -a 0 3979 a -SDict begin 13.6 H.A end - 0 3979 a 0 3979 a -SDict begin [/View [/XYZ H.V]/Dest (section.11.6) cvn /DEST pdfmark -end - 0 3979 a 179 x Ff(11.6)136 +(it)h(will)g(return)e(with)h(an)g(error.)0 4158 y Ff(11.6)136 b(Examples)0 4408 y Fj(1.)54 b(This)34 b(template)i(\014le)f(will)g (create)h(a)f(200)h(x)e(300)i(pixel)f(image,)j(with)c(4-b)m(yte)i(in)m (teger)g(pixel)f(v)-5 b(alues,)36 b(in)f(the)0 4521 y(primary)29 @@ -20203,30 +15947,17 @@ (ely)-8 b(,)39 b(8-bit)d(in)m(teger,)0 5714 y(16-bit)c(in)m(teger,)g (32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)f(64)h (bit)g(\015oating)g(p)s(oin)m(t)f(pixels.)p eop end -%%Page: 159 167 -TeXDict begin 159 166 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.159) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(11.6.)73 -b(EXAMPLES)2993 b Fj(159)0 555 y(2.)39 b(T)-8 b(o)23 -b(create)h(a)f(FITS)e(table,)26 b(the)c(template)i(\014rst)e(needs)g -(to)i(include)e(XTENSION)g(=)g(T)-8 b(ABLE)23 b(or)f(BINT)-8 -b(ABLE)0 668 y(to)31 b(de\014ne)e(whether)g(it)h(is)g(an)f(ASCI)s(I)g -(or)g(binary)g(table,)i(and)f(NAXIS2)g(to)g(de\014ne)f(the)h(n)m(um)m -(b)s(er)f(of)h(ro)m(ws)f(in)h(the)0 781 y(table.)50 b(Tw)m(o)34 -b(template)g(lines)g(are)g(then)f(needed)f(to)i(de\014ne)f(the)g(name)h -(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0 894 y(\(TF)m(ORMn\))d(of)f -(the)h(columns,)f(as)h(in)f(this)g(example:)95 1154 y -Fe(xtension)46 b(=)h(bintable)95 1267 y(naxis2)g(=)g(40)95 +%%Page: 163 171 +TeXDict begin 163 170 bop 0 299 a Fh(11.6.)73 b(EXAMPLES)2993 +b Fj(163)0 555 y(2.)39 b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)26 +b(the)c(template)i(\014rst)e(needs)g(to)i(include)e(XTENSION)g(=)g(T)-8 +b(ABLE)23 b(or)f(BINT)-8 b(ABLE)0 668 y(to)31 b(de\014ne)e(whether)g +(it)h(is)g(an)f(ASCI)s(I)g(or)g(binary)g(table,)i(and)f(NAXIS2)g(to)g +(de\014ne)f(the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)h(the)0 +781 y(table.)50 b(Tw)m(o)34 b(template)g(lines)g(are)g(then)f(needed)f +(to)i(de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0 +894 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)f(as)h(in)f(this)g(example:) +95 1154 y Fe(xtension)46 b(=)h(bintable)95 1267 y(naxis2)g(=)g(40)95 1380 y(ttype#)g(=)g(Name)95 1492 y(tform#)g(=)g(10a)95 1605 y(ttype#)g(=)g(Npoints)95 1718 y(tform#)g(=)g(j)95 1831 y(ttype#)g(=)g(Rate)95 1944 y(tunit#)g(=)g(counts/s)95 @@ -20249,43 +15980,11 @@ (to)e(upp)s(er-case)g(in)f(the)h(FITS)g(\014le\))g(and)f(that)i(string) 0 3107 y(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(generally)g(do)f(not)h(need) f(to)h(b)s(e)f(enclosed)h(in)f(quotes.)p eop end -%%Page: 160 168 -TeXDict begin 160 167 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.160) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(160)2250 -b Fh(CHAPTER)29 b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)p -eop end -%%Page: 161 169 -TeXDict begin 161 168 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.161) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.12) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(12)0 +%%Page: 164 172 +TeXDict begin 164 171 bop 0 299 a Fj(164)2250 b Fh(CHAPTER)29 +b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)p eop end +%%Page: 165 173 +TeXDict begin 165 172 bop 0 1225 a Fg(Chapter)65 b(12)0 1687 y Fm(Lo)6 b(cal)78 b(FITS)e(Con)-6 b(v)g(en)g(tions)0 2180 y Fj(CFITSIO)29 b(supp)s(orts)g(sev)m(eral)j(lo)s(cal)g(FITS)e (con)m(v)m(en)m(tions)i(whic)m(h)f(are)g(not)g(de\014ned)e(in)i(the)f @@ -20296,15 +15995,7 @@ (esp)s(ecially)f(if)f(the)g(FITS)f(\014les)h(that)h(are)0 2518 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to)g(b)s(e)f(pro)s(cessed)g (b)m(y)h(other)f(soft)m(w)m(are)i(systems)f(whic)m(h)f(do)h(not)f(use)h -(the)f(CFITSIO)0 2631 y(in)m(terface.)0 2794 y -SDict begin H.S end - 0 2794 -a 0 2794 a -SDict begin 13.6 H.A end - 0 2794 a 0 2794 a -SDict begin [/View [/XYZ H.V]/Dest (section.12.1) cvn /DEST pdfmark -end - 0 2794 a 196 x Ff(12.1)136 +(the)f(CFITSIO)0 2631 y(in)m(terface.)0 2990 y Ff(12.1)136 b(64-Bit)45 b(Long)g(In)l(tegers)0 3246 y Fj(CFITSIO)37 b(supp)s(orts)g(reading)i(and)f(writing)h(FITS)f(images)i(or)f(table)h (columns)e(con)m(taining)i(64-bit)h(in)m(teger)0 3359 @@ -20338,145 +16029,104 @@ (di\013eren)m(t)h(in)m(teger)g(or)f(\015oating)h(p)s(oin)m(t)f(datat)m (yp)s(e,)k(but)c(there)g(is)g(an)g(increased)g(risk)g(of)g(loss)h(of)0 4761 y(n)m(umerical)31 b(precision)f(or)h(n)m(umerical)g(o)m(v)m -(er\015o)m(w)h(in)e(this)g(case.)0 4941 y -SDict begin H.S end - 0 4941 a 0 -4941 a -SDict begin 13.6 H.A end - 0 4941 a 0 4941 a -SDict begin [/View [/XYZ H.V]/Dest (section.12.2) cvn /DEST pdfmark -end - 0 4941 a 179 x Ff(12.2)136 b(Long)44 -b(String)i(Keyw)l(ord)f(V)-11 b(alues.)0 5375 y Fj(The)43 -b(length)i(of)f(a)g(standard)g(FITS)f(string)h(k)m(eyw)m(ord)g(is)g -(limited)h(to)g(68)f(c)m(haracters)i(b)s(ecause)e(it)g(m)m(ust)g(\014t) -0 5488 y(en)m(tirely)35 b(within)e(a)h(single)h(FITS)e(header)g(k)m -(eyw)m(ord)i(record.)50 b(In)33 b(some)i(instances)f(it)g(is)g -(necessary)g(to)h(enco)s(de)0 5601 y(strings)29 b(longer)i(than)e(this) -g(limit,)i(so)f(CFITSIO)e(supp)s(orts)g(a)h(lo)s(cal)i(con)m(v)m(en)m -(tion)h(in)d(whic)m(h)h(the)f(string)h(v)-5 b(alue)30 -b(is)0 5714 y(con)m(tin)m(ued)36 b(o)m(v)m(er)g(m)m(ultiple)f(k)m(eyw)m -(ords.)55 b(This)34 b(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)h(uses)e -(an)f(amp)s(ersand)g(c)m(haracter)i(at)1882 5942 y(161)p -eop end -%%Page: 162 170 -TeXDict begin 162 169 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.162) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(162)1741 -b Fh(CHAPTER)30 b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)0 -555 y Fj(the)c(end)f(of)h(eac)m(h)g(substring)f(to)h(indicate)h(that)f -(it)h(is)e(con)m(tin)m(ued)i(on)e(the)h(next)g(k)m(eyw)m(ord,)h(and)e -(the)h(con)m(tin)m(uation)0 668 y(k)m(eyw)m(ords)40 b(all)h(ha)m(v)m(e) -g(the)f(name)g(CONTINUE)f(without)h(an)g(equal)g(sign)g(in)g(column)g -(9.)69 b(The)40 b(string)f(v)-5 b(alue)0 781 y(ma)m(y)33 -b(b)s(e)f(con)m(tin)m(ued)h(in)g(this)f(w)m(a)m(y)h(o)m(v)m(er)h(as)f -(man)m(y)g(additional)g(CONTINUE)f(k)m(eyw)m(ords)h(as)f(is)h -(required.)46 b(The)0 894 y(follo)m(wing)37 b(lines)e(illustrate)h -(this)f(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)h(whic)m(h)c(is)i -(used)e(in)h(the)g(v)-5 b(alue)36 b(of)f(the)g(STRKEY)0 -1007 y(k)m(eyw)m(ord:)0 1297 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')189 -b(/)48 b(The)f(OGIP)f(Long)h(String)f(Convention)f(may)i(be)g(used.)0 -1410 y(STRKEY)94 b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f -(keyword&')93 b(/)47 b(Optional)f(Comment)0 1523 y(CONTINUE)93 -b(')48 b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h -(the)g(&)95 b(')0 1636 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e -(is)h(another)f(optional)g(comment.)0 1926 y Fj(It)29 -b(is)g(recommended)f(that)h(the)g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho) -m(wn)f(here,)h(alw)m(a)m(ys)i(b)s(e)d(included)g(in)g(an)m(y)h(HDU)0 -2039 y(that)i(uses)f(this)g(longstring)h(con)m(v)m(en)m(tion)i(as)e(a)f -(w)m(arning)h(to)g(an)m(y)g(soft)m(w)m(are)g(that)g(m)m(ust)g(read)f -(the)h(k)m(eyw)m(ords.)41 b(A)0 2152 y(routine)d(called)g(\014ts)p -712 2152 28 4 v 33 w(write)p 947 2152 V 33 w(k)m(ey)p -1113 2152 V 33 w(longw)m(arn)g(has)f(b)s(een)g(pro)m(vided)g(in)h -(CFITSIO)d(to)k(write)e(this)h(k)m(eyw)m(ord)g(if)f(it)0 -2265 y(do)s(es)30 b(not)h(already)g(exist.)0 2425 y(This)f(long)h -(string)f(con)m(v)m(en)m(tion)i(is)f(supp)s(orted)d(b)m(y)j(the)f -(follo)m(wing)i(CFITSIO)d(routines:)191 2716 y Fe -(fits_write_key_longstr)89 b(-)48 b(write)e(a)i(long)e(string)g -(keyword)g(value)191 2829 y(fits_insert_key_longstr)41 -b(-)48 b(insert)e(a)h(long)g(string)f(keyword)g(value)191 -2942 y(fits_modify_key_longstr)41 b(-)48 b(modify)e(a)h(long)g(string)f -(keyword)g(value)191 3054 y(fits_update_key_longstr)41 +(er\015o)m(w)h(in)e(this)g(case.)0 5120 y Ff(12.2)136 +b(Long)44 b(String)i(Keyw)l(ord)f(V)-11 b(alues.)0 5375 +y Fj(The)43 b(length)i(of)f(a)g(standard)g(FITS)f(string)h(k)m(eyw)m +(ord)g(is)g(limited)h(to)g(68)f(c)m(haracters)i(b)s(ecause)e(it)g(m)m +(ust)g(\014t)0 5488 y(en)m(tirely)35 b(within)e(a)h(single)h(FITS)e +(header)g(k)m(eyw)m(ord)i(record.)50 b(In)33 b(some)i(instances)f(it)g +(is)g(necessary)g(to)h(enco)s(de)0 5601 y(strings)29 +b(longer)i(than)e(this)g(limit,)i(so)f(CFITSIO)e(supp)s(orts)g(a)h(lo)s +(cal)i(con)m(v)m(en)m(tion)h(in)d(whic)m(h)h(the)f(string)h(v)-5 +b(alue)30 b(is)0 5714 y(con)m(tin)m(ued)36 b(o)m(v)m(er)g(m)m(ultiple)f +(k)m(eyw)m(ords.)55 b(This)34 b(con)m(tin)m(uation)i(con)m(v)m(en)m +(tion)h(uses)e(an)f(amp)s(ersand)g(c)m(haracter)i(at)1882 +5942 y(165)p eop end +%%Page: 166 174 +TeXDict begin 166 173 bop 0 299 a Fj(166)1741 b Fh(CHAPTER)30 +b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)0 555 y Fj(the)c(end)f(of)h +(eac)m(h)g(substring)f(to)h(indicate)h(that)f(it)h(is)e(con)m(tin)m +(ued)i(on)e(the)h(next)g(k)m(eyw)m(ord,)h(and)e(the)h(con)m(tin)m +(uation)0 668 y(k)m(eyw)m(ords)40 b(all)h(ha)m(v)m(e)g(the)f(name)g +(CONTINUE)f(without)h(an)g(equal)g(sign)g(in)g(column)g(9.)69 +b(The)40 b(string)f(v)-5 b(alue)0 781 y(ma)m(y)33 b(b)s(e)f(con)m(tin)m +(ued)h(in)g(this)f(w)m(a)m(y)h(o)m(v)m(er)h(as)f(man)m(y)g(additional)g +(CONTINUE)f(k)m(eyw)m(ords)h(as)f(is)h(required.)46 b(The)0 +894 y(follo)m(wing)37 b(lines)e(illustrate)h(this)f(con)m(tin)m(uation) +i(con)m(v)m(en)m(tion)h(whic)m(h)c(is)i(used)e(in)h(the)g(v)-5 +b(alue)36 b(of)f(the)g(STRKEY)0 1007 y(k)m(eyw)m(ord:)0 +1297 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')189 b(/)48 b(The)f(OGIP)f(Long)h +(String)f(Convention)f(may)i(be)g(used.)0 1410 y(STRKEY)94 +b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93 +b(/)47 b(Optional)f(Comment)0 1523 y(CONTINUE)93 b(')48 +b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95 +b(')0 1636 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f +(optional)g(comment.)0 1926 y Fj(It)29 b(is)g(recommended)f(that)h(the) +g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)i(b) +s(e)d(included)g(in)g(an)m(y)h(HDU)0 2039 y(that)i(uses)f(this)g +(longstring)h(con)m(v)m(en)m(tion)i(as)e(a)f(w)m(arning)h(to)g(an)m(y)g +(soft)m(w)m(are)g(that)g(m)m(ust)g(read)f(the)h(k)m(eyw)m(ords.)41 +b(A)0 2152 y(routine)d(called)g(\014ts)p 712 2152 28 +4 v 33 w(write)p 947 2152 V 33 w(k)m(ey)p 1113 2152 V +33 w(longw)m(arn)g(has)f(b)s(een)g(pro)m(vided)g(in)h(CFITSIO)d(to)k +(write)e(this)h(k)m(eyw)m(ord)g(if)f(it)0 2265 y(do)s(es)30 +b(not)h(already)g(exist.)0 2425 y(This)f(long)h(string)f(con)m(v)m(en)m +(tion)i(is)f(supp)s(orted)d(b)m(y)j(the)f(follo)m(wing)i(CFITSIO)d +(routines:)191 2716 y Fe(fits_write_key_longstr)89 b(-)48 +b(write)e(a)i(long)e(string)g(keyword)g(value)191 2829 +y(fits_insert_key_longstr)41 b(-)48 b(insert)e(a)h(long)g(string)f +(keyword)g(value)191 2942 y(fits_modify_key_longstr)41 b(-)48 b(modify)e(a)h(long)g(string)f(keyword)g(value)191 -3167 y(fits_read_key_longstr)137 b(-)48 b(read)94 b(a)48 -b(long)e(string)g(keyword)g(value)191 3280 y(fits_delete_key)425 -b(-)48 b(delete)e(a)h(keyword)0 3571 y Fj(The)36 b(\014ts)p -320 3571 V 32 w(read)p 524 3571 V 33 w(k)m(ey)p 690 3571 -V 34 w(longstr)g(routine)h(is)f(unique)f(among)i(all)h(the)e(CFITSIO)f -(routines)h(in)g(that)h(it)g(in)m(ternally)0 3684 y(allo)s(cates)f -(memory)d(for)h(the)f(long)h(string)g(v)-5 b(alue;)36 -b(all)e(the)g(other)g(CFITSIO)e(routines)h(that)h(deal)g(with)g(arra)m -(ys)0 3797 y(require)39 b(that)h(the)g(calling)h(program)e(pre-allo)s -(cate)j(adequate)e(space)g(to)g(hold)f(the)h(arra)m(y)g(of)f(data.)69 -b(Conse-)0 3909 y(quen)m(tly)-8 b(,)31 b(programs)f(whic)m(h)g(use)g -(the)g(\014ts)p 1443 3909 V 32 w(read)p 1647 3909 V 33 -w(k)m(ey)p 1813 3909 V 34 w(longstr)g(routine)g(m)m(ust)g(b)s(e)g -(careful)g(to)h(free)g(the)f(allo)s(cated)0 4022 y(memory)g(for)g(the)h -(string)f(when)g(it)h(is)f(no)g(longer)h(needed.)0 4183 -y(The)f(follo)m(wing)i(2)e(routines)h(also)g(ha)m(v)m(e)h(limited)f -(supp)s(ort)d(for)i(this)h(long)g(string)f(con)m(v)m(en)m(tion,)286 -4473 y Fe(fits_modify_key_str)43 b(-)k(modify)f(an)i(existing)d(string) -h(keyword)g(value)286 4586 y(fits_update_key_str)d(-)k(update)f(a)i -(string)e(keyword)g(value)0 4876 y Fj(in)24 b(that)h(they)f(will)h -(correctly)g(o)m(v)m(erwrite)h(an)e(existing)h(long)g(string)f(v)-5 -b(alue,)27 b(but)c(the)h(new)g(string)g(v)-5 b(alue)25 -b(is)f(limited)0 4989 y(to)31 b(a)g(maxim)m(um)f(of)h(68)g(c)m -(haracters)h(in)e(length.)0 5149 y(The)f(more)h(commonly)h(used)e -(CFITSIO)f(routines)i(to)g(write)g(string)g(v)-5 b(alued)30 -b(k)m(eyw)m(ords)g(\(\014ts)p 3254 5149 V 33 w(up)s(date)p -3563 5149 V 32 w(k)m(ey)h(and)0 5262 y(\014ts)p 127 5262 -V 32 w(write)p 361 5262 V 33 w(k)m(ey\))j(do)e(not)h(supp)s(ort)d(this) -i(long)h(string)g(con)m(v)m(en)m(tion)h(and)e(only)g(supp)s(ort)f -(strings)h(up)f(to)i(68)g(c)m(har-)0 5375 y(acters)g(in)f(length.)48 -b(This)31 b(has)h(b)s(een)g(done)g(delib)s(erately)h(to)g(prev)m(en)m -(t)g(programs)f(from)g(inadv)m(erten)m(tly)i(writing)0 -5488 y(k)m(eyw)m(ords)25 b(using)f(this)h(non-standard)e(con)m(v)m(en)m -(tion)k(without)e(the)g(explicit)h(in)m(ten)m(t)g(of)f(the)f -(programmer)h(or)f(user.)0 5601 y(The)36 b(\014ts)p 320 -5601 V 32 w(write)p 554 5601 V 33 w(k)m(ey)p 720 5601 -V 34 w(longstr)h(routine)f(m)m(ust)h(b)s(e)f(called)i(instead)e(to)i -(write)e(long)h(strings.)59 b(This)36 b(routine)h(can)0 -5714 y(also)31 b(b)s(e)f(used)g(to)h(write)f(ordinary)g(string)g(v)-5 -b(alues)31 b(less)g(than)f(68)h(c)m(haracters)h(in)e(length.)p -eop end -%%Page: 163 171 -TeXDict begin 163 170 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.163) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(12.3.)73 -b(ARRA)-8 b(YS)30 b(OF)h(FIXED-LENGTH)g(STRINGS)e(IN)h(BINAR)-8 -b(Y)32 b(T)-8 b(ABLES)871 b Fj(163)0 464 y -SDict begin H.S end - 0 464 a 0 -464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (section.12.3) cvn /DEST pdfmark -end - 0 464 a 91 x Ff(12.3)136 b(Arra)l(ys)45 -b(of)g(Fixed-Length)g(Strings)g(in)g(Binary)f(T)-11 b(ables)0 -807 y Fj(CFITSIO)25 b(supp)s(orts)g(2)i(w)m(a)m(ys)g(to)g(sp)s(ecify)f -(that)i(a)f(c)m(haracter)h(column)e(in)g(a)h(binary)f(table)i(con)m -(tains)f(an)g(arra)m(y)g(of)0 920 y(\014xed-length)32 +3054 y(fits_update_key_longstr)41 b(-)48 b(modify)e(a)h(long)g(string)f +(keyword)g(value)191 3167 y(fits_read_key_longstr)137 +b(-)48 b(read)94 b(a)48 b(long)e(string)g(keyword)g(value)191 +3280 y(fits_delete_key)425 b(-)48 b(delete)e(a)h(keyword)0 +3571 y Fj(The)36 b(\014ts)p 320 3571 V 32 w(read)p 524 +3571 V 33 w(k)m(ey)p 690 3571 V 34 w(longstr)g(routine)h(is)f(unique)f +(among)i(all)h(the)e(CFITSIO)f(routines)h(in)g(that)h(it)g(in)m +(ternally)0 3684 y(allo)s(cates)f(memory)d(for)h(the)f(long)h(string)g +(v)-5 b(alue;)36 b(all)e(the)g(other)g(CFITSIO)e(routines)h(that)h +(deal)g(with)g(arra)m(ys)0 3797 y(require)39 b(that)h(the)g(calling)h +(program)e(pre-allo)s(cate)j(adequate)e(space)g(to)g(hold)f(the)h(arra) +m(y)g(of)f(data.)69 b(Conse-)0 3909 y(quen)m(tly)-8 b(,)31 +b(programs)f(whic)m(h)g(use)g(the)g(\014ts)p 1443 3909 +V 32 w(read)p 1647 3909 V 33 w(k)m(ey)p 1813 3909 V 34 +w(longstr)g(routine)g(m)m(ust)g(b)s(e)g(careful)g(to)h(free)g(the)f +(allo)s(cated)0 4022 y(memory)g(for)g(the)h(string)f(when)g(it)h(is)f +(no)g(longer)h(needed.)0 4183 y(The)f(follo)m(wing)i(2)e(routines)h +(also)g(ha)m(v)m(e)h(limited)f(supp)s(ort)d(for)i(this)h(long)g(string) +f(con)m(v)m(en)m(tion,)286 4473 y Fe(fits_modify_key_str)43 +b(-)k(modify)f(an)i(existing)d(string)h(keyword)g(value)286 +4586 y(fits_update_key_str)d(-)k(update)f(a)i(string)e(keyword)g(value) +0 4876 y Fj(in)24 b(that)h(they)f(will)h(correctly)g(o)m(v)m(erwrite)h +(an)e(existing)h(long)g(string)f(v)-5 b(alue,)27 b(but)c(the)h(new)g +(string)g(v)-5 b(alue)25 b(is)f(limited)0 4989 y(to)31 +b(a)g(maxim)m(um)f(of)h(68)g(c)m(haracters)h(in)e(length.)0 +5149 y(The)f(more)h(commonly)h(used)e(CFITSIO)f(routines)i(to)g(write)g +(string)g(v)-5 b(alued)30 b(k)m(eyw)m(ords)g(\(\014ts)p +3254 5149 V 33 w(up)s(date)p 3563 5149 V 32 w(k)m(ey)h(and)0 +5262 y(\014ts)p 127 5262 V 32 w(write)p 361 5262 V 33 +w(k)m(ey\))j(do)e(not)h(supp)s(ort)d(this)i(long)h(string)g(con)m(v)m +(en)m(tion)h(and)e(only)g(supp)s(ort)f(strings)h(up)f(to)i(68)g(c)m +(har-)0 5375 y(acters)g(in)f(length.)48 b(This)31 b(has)h(b)s(een)g +(done)g(delib)s(erately)h(to)g(prev)m(en)m(t)g(programs)f(from)g(inadv) +m(erten)m(tly)i(writing)0 5488 y(k)m(eyw)m(ords)25 b(using)f(this)h +(non-standard)e(con)m(v)m(en)m(tion)k(without)e(the)g(explicit)h(in)m +(ten)m(t)g(of)f(the)f(programmer)h(or)f(user.)0 5601 +y(The)36 b(\014ts)p 320 5601 V 32 w(write)p 554 5601 +V 33 w(k)m(ey)p 720 5601 V 34 w(longstr)h(routine)f(m)m(ust)h(b)s(e)f +(called)i(instead)e(to)i(write)e(long)h(strings.)59 b(This)36 +b(routine)h(can)0 5714 y(also)31 b(b)s(e)f(used)g(to)h(write)f +(ordinary)g(string)g(v)-5 b(alues)31 b(less)g(than)f(68)h(c)m +(haracters)h(in)e(length.)p eop end +%%Page: 167 175 +TeXDict begin 167 174 bop 0 299 a Fh(12.3.)73 b(ARRA)-8 +b(YS)30 b(OF)h(FIXED-LENGTH)g(STRINGS)e(IN)h(BINAR)-8 +b(Y)32 b(T)-8 b(ABLES)871 b Fj(167)0 555 y Ff(12.3)136 +b(Arra)l(ys)45 b(of)g(Fixed-Length)g(Strings)g(in)g(Binary)f(T)-11 +b(ables)0 807 y Fj(CFITSIO)25 b(supp)s(orts)g(2)i(w)m(a)m(ys)g(to)g(sp) +s(ecify)f(that)i(a)f(c)m(haracter)h(column)e(in)g(a)h(binary)f(table)i +(con)m(tains)f(an)g(arra)m(y)g(of)0 920 y(\014xed-length)32 b(strings.)46 b(The)32 b(\014rst)f(w)m(a)m(y)-8 b(,)34 b(whic)m(h)e(is)g(o\016cially)i(supp)s(orted)c(b)m(y)i(the)h(FITS)e (Standard)g(do)s(cumen)m(t,)0 1033 y(uses)38 b(the)g(TDIMn)g(k)m(eyw)m @@ -20503,15 +16153,7 @@ (ORM)h(k)m(eyw)m(ord,)g(so)g(this)f(lo)s(cal)0 2096 y(con)m(v)m(en)m (tion)f(is)d(in)h(compliance)h(with)e(the)h(FITS)e(standard)h(although) h(other)g(FITS)f(readers)g(ma)m(y)h(not)g(recognize)0 -2209 y(this)30 b(con)m(v)m(en)m(tion.)0 2353 y -SDict begin H.S end - 0 2353 -a 0 2353 a -SDict begin 13.6 H.A end - 0 2353 a 0 2353 a -SDict begin [/View [/XYZ H.V]/Dest (section.12.4) cvn /DEST pdfmark -end - 0 2353 a 197 x Ff(12.4)136 +2209 y(this)30 b(con)m(v)m(en)m(tion.)0 2550 y Ff(12.4)136 b(Keyw)l(ord)45 b(Units)h(Strings)0 2801 y Fj(One)37 b(limitation)j(of)d(the)h(curren)m(t)g(FITS)e(Standard)h(is)h(that)g (it)g(do)s(es)f(not)h(de\014ne)f(a)h(sp)s(eci\014c)f(con)m(v)m(en)m @@ -20548,41 +16190,21 @@ 4896 V 32 w(write)p 1468 4896 V 33 w(k)m(ey)p 1634 4896 V 34 w(unit)g(routines)h(in)g(CFITSIO)e(read)i(and)f(write,)k(resp)s (ectiv)m(ely)-8 b(,)0 5008 y(the)31 b(k)m(eyw)m(ord)f(unit)g(strings)h -(in)f(an)g(existing)h(k)m(eyw)m(ord.)0 5170 y -SDict begin H.S end - 0 5170 -a 0 5170 a -SDict begin 13.6 H.A end - 0 5170 a 0 5170 a -SDict begin [/View [/XYZ H.V]/Dest (section.12.5) cvn /DEST pdfmark -end - 0 5170 a 179 x Ff(12.5)136 +(in)f(an)g(existing)h(k)m(eyw)m(ord.)0 5349 y Ff(12.5)136 b(HIERAR)l(CH)46 b(Con)l(v)l(en)l(tion)g(for)f(Extended)h(Keyw)l(ord)f (Names)0 5601 y Fj(CFITSIO)c(supp)s(orts)g(the)i(HIERAR)m(CH)g(k)m(eyw) m(ord)g(con)m(v)m(en)m(tion)i(whic)m(h)e(allo)m(ws)h(k)m(eyw)m(ord)f (names)g(that)h(are)0 5714 y(longer)35 b(than)f(8)h(c)m(haracters.)54 b(This)34 b(con)m(v)m(en)m(tion)i(w)m(as)f(dev)m(elop)s(ed)g(at)g(the)g (Europ)s(ean)e(Southern)g(Observ)-5 b(atory)p eop end -%%Page: 164 172 -TeXDict begin 164 171 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.164) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(164)1741 -b Fh(CHAPTER)30 b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)0 -555 y Fj(\(ESO\))k(and)g(allo)m(ws)h(c)m(haracters)h(consisting)f(of)f -(digits)h(0-9,)i(upp)s(er)32 b(case)j(letters)h(A-Z,)e(the)h(dash)e -('-')i(and)f(the)0 668 y(underscore)j(')p 493 668 28 -4 v 33 w('.)63 b(The)37 b(comp)s(onen)m(ts)h(of)g(hierarc)m(hical)h(k)m -(eyw)m(ords)f(are)g(separated)g(b)m(y)g(a)g(single)g(ASCI)s(I)e(space)0 +%%Page: 168 176 +TeXDict begin 168 175 bop 0 299 a Fj(168)1741 b Fh(CHAPTER)30 +b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)0 555 y Fj(\(ESO\))k(and)g +(allo)m(ws)h(c)m(haracters)h(consisting)f(of)f(digits)h(0-9,)i(upp)s +(er)32 b(case)j(letters)h(A-Z,)e(the)h(dash)e('-')i(and)f(the)0 +668 y(underscore)j(')p 493 668 28 4 v 33 w('.)63 b(The)37 +b(comp)s(onen)m(ts)h(of)g(hierarc)m(hical)h(k)m(eyw)m(ords)f(are)g +(separated)g(b)m(y)g(a)g(single)g(ASCI)s(I)e(space)0 781 y(c)m(harater.)42 b(F)-8 b(or)31 b(instance:)0 1038 y Fe(HIERARCH)46 b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j (Focus)e(position)0 1295 y Fj(Basically)-8 b(,)42 b(this)c(con)m(v)m @@ -20639,17 +16261,9 @@ (simply)e(truncated)i(so)f(that)h(the)f(closing)i(quote)f(c)m(haracter) h(falls)e(in)g(column)g(80.)45 b(A)31 b(space)h(is)f(also)0 4340 y(required)f(on)g(either)h(side)f(of)h(the)f(equal)h(sign.)0 -4494 y -SDict begin H.S end - 0 4494 a 0 4494 a -SDict begin 13.6 H.A end - 0 4494 a 0 4494 a -SDict begin [/View [/XYZ H.V]/Dest (section.12.6) cvn /DEST pdfmark -end - 0 4494 a 179 -x Ff(12.6)136 b(Tile-Compressed)46 b(Image)g(F)-11 b(ormat)0 -4924 y Fj(CFITSIO)36 b(supp)s(orts)f(a)j(con)m(v)m(en)m(tion)i(for)d -(compressing)h(n-dimensional)f(images)h(and)f(storing)h(the)g +4673 y Ff(12.6)136 b(Tile-Compressed)46 b(Image)g(F)-11 +b(ormat)0 4924 y Fj(CFITSIO)36 b(supp)s(orts)f(a)j(con)m(v)m(en)m(tion) +i(for)d(compressing)h(n-dimensional)f(images)h(and)f(storing)h(the)g (resulting)0 5036 y(b)m(yte)i(stream)g(in)f(a)h(v)-5 b(ariable-length)41 b(column)e(in)g(a)h(FITS)f(binary)f(table.)69 b(The)39 b(general)i(principle)e(used)f(in)0 5149 y(this)c(con)m(v)m @@ -20667,25 +16281,13 @@ h(a)0 5714 y(2-dimensional)e(image)g(\(or)f(higher)f(dimensional)h(cub) s(e\))g(as)g(a)g(tile,)j(suc)m(h)c(that)i(eac)m(h)g(tile)g(con)m(tains) g(NAXIS1)p eop end -%%Page: 165 173 -TeXDict begin 165 172 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.165) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(12.6.)73 -b(TILE-COMPRESSED)28 b(IMA)m(GE)j(F)m(ORMA)-8 b(T)1838 -b Fj(165)0 555 y(pixels)29 b(\(except)h(the)f(default)g(with)g(the)g -(HCOMPRESS)e(algorithm)j(is)f(to)h(compress)f(the)g(whole)g(2D)h(image) -g(as)0 668 y(a)35 b(single)g(tile\).)56 b(An)m(y)34 b(other)h -(rectangular)h(tiling)g(pattern)f(ma)m(y)g(also)h(b)s(e)e(de\014ned.)52 +%%Page: 169 177 +TeXDict begin 169 176 bop 0 299 a Fh(12.6.)73 b(TILE-COMPRESSED)28 +b(IMA)m(GE)j(F)m(ORMA)-8 b(T)1838 b Fj(169)0 555 y(pixels)29 +b(\(except)h(the)f(default)g(with)g(the)g(HCOMPRESS)e(algorithm)j(is)f +(to)h(compress)f(the)g(whole)g(2D)h(image)g(as)0 668 +y(a)35 b(single)g(tile\).)56 b(An)m(y)34 b(other)h(rectangular)h +(tiling)g(pattern)f(ma)m(y)g(also)h(b)s(e)e(de\014ned.)52 b(In)34 b(the)h(case)h(of)f(relativ)m(ely)0 781 y(small)25 b(images)h(it)f(ma)m(y)g(b)s(e)f(su\016cien)m(t)h(to)h(compress)e(the)h (en)m(tire)g(image)h(as)f(a)g(single)h(tile,)h(resulting)d(in)h(an)f @@ -20698,43 +16300,11 @@ (basis.)0 1280 y(See)41 b(section)g(5.6)h(\\Image)f(Compression")f(for) g(more)h(information)g(on)f(using)g(this)g(tile-compressed)i(image)0 1393 y(format.)p eop end -%%Page: 166 174 -TeXDict begin 166 173 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.166) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(166)1741 -b Fh(CHAPTER)30 b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)p -eop end -%%Page: 167 175 -TeXDict begin 167 174 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.167) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (chapter.13) cvn /DEST pdfmark end - 0 464 a 761 x Fg(Chapter)65 b(13)0 +%%Page: 170 178 +TeXDict begin 170 177 bop 0 299 a Fj(170)1741 b Fh(CHAPTER)30 +b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)p eop end +%%Page: 171 179 +TeXDict begin 171 178 bop 0 1225 a Fg(Chapter)65 b(13)0 1687 y Fm(Optimizing)76 b(Programs)0 2180 y Fj(CFITSIO)22 b(has)h(b)s(een)f(carefully)i(designed)f(to)h(obtain)g(the)f(highest)h (p)s(ossible)e(sp)s(eed)h(when)f(reading)h(and)g(writing)0 @@ -20760,15 +16330,7 @@ (data)0 3403 y(I/O)g(and)g(describ)s(es)f(some)i(strategies)h(that)f (ma)m(y)g(b)s(e)e(used)h(to)h(optimize)g(the)g(pro)s(cessing)f(sp)s (eed)f(of)h(soft)m(w)m(are)0 3516 y(that)e(uses)f(CFITSIO.)0 -3735 y -SDict begin H.S end - 0 3735 a 0 3735 a -SDict begin 13.6 H.A end - 0 3735 a 0 3735 a -SDict begin [/View [/XYZ H.V]/Dest (section.13.1) cvn /DEST pdfmark -end - 0 3735 a 197 -x Ff(13.1)136 b(Ho)l(w)45 b(CFITSIO)f(Manages)i(Data)g(I/O)0 +3932 y Ff(13.1)136 b(Ho)l(w)45 b(CFITSIO)f(Manages)i(Data)g(I/O)0 4199 y Fj(Man)m(y)22 b(CFITSIO)e(op)s(erations)i(in)m(v)m(olv)m(e)i (transferring)d(only)h(a)g(small)g(n)m(um)m(b)s(er)f(of)h(b)m(ytes)g (to)g(or)g(from)f(the)h(FITS)f(\014le)0 4312 y(\(e.g,)31 @@ -20803,39 +16365,27 @@ (full,)h(it)f(m)m(ust)g(decide)f(whic)m(h)g(one)h(to)g(reuse)0 5714 y(\(generally)c(the)f(one)g(that)g(has)f(b)s(een)g(accessed)i (least)f(recen)m(tly\),)i(and)d(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m -(k)g(to)f(disk)f(if)g(it)1882 5942 y(167)p eop end -%%Page: 168 176 -TeXDict begin 168 175 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.168) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(168)1876 -b Fh(CHAPTER)30 b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)0 -555 y Fj(has)h(b)s(een)g(mo)s(di\014ed)f(b)s(efore)h(loading)h(the)g -(new)f(blo)s(c)m(k.)0 715 y(The)g(one)g(ma)5 b(jor)30 -b(exception)i(to)f(the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g -(whenev)m(er)g(a)g(large)i(con)m(tiguous)f(set)g(of)f(b)m(ytes)h(are)0 -828 y(accessed,)37 b(as)d(migh)m(t)i(o)s(ccur)e(when)f(reading)i(or)f -(writing)g(a)h(FITS)f(image.)54 b(In)34 b(this)g(case)h(CFITSIO)e(b)m -(ypasses)0 941 y(the)i(in)m(ternal)h(IO)f(bu\013ers)f(and)g(simply)h -(reads)g(or)g(writes)h(the)f(desired)g(b)m(ytes)g(directly)h(in)f(the)g -(disk)g(\014le)g(with)0 1054 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev) -m(el)i(\014le)d(read)g(or)h(write)f(routine.)58 b(The)36 -b(minim)m(um)g(threshold)f(for)h(the)h(n)m(um)m(b)s(er)e(of)0 -1167 y(b)m(ytes)27 b(to)g(read)f(or)g(write)g(this)g(w)m(a)m(y)i(is)e -(set)g(b)m(y)h(the)f(MINDIRECT)g(parameter)g(and)g(is)g(curren)m(tly)g -(set)h(to)g(3)g(FITS)0 1280 y(blo)s(c)m(ks)36 b(=)g(8640)i(b)m(ytes.)58 -b(This)35 b(is)h(the)g(most)g(e\016cien)m(t)i(w)m(a)m(y)f(to)g(read)e -(or)h(write)h(large)g(c)m(h)m(unks)e(of)h(data.)59 b(Note)0 -1393 y(that)34 b(this)f(fast)h(direct)g(IO)f(pro)s(cess)f(is)i(not)f +(k)g(to)f(disk)f(if)g(it)1882 5942 y(171)p eop end +%%Page: 172 180 +TeXDict begin 172 179 bop 0 299 a Fj(172)1876 b Fh(CHAPTER)30 +b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)0 555 y Fj(has)h(b)s(een)g(mo)s +(di\014ed)f(b)s(efore)h(loading)h(the)g(new)f(blo)s(c)m(k.)0 +715 y(The)g(one)g(ma)5 b(jor)30 b(exception)i(to)f(the)f(ab)s(o)m(v)m +(e)h(pro)s(cess)f(o)s(ccurs)g(whenev)m(er)g(a)g(large)i(con)m(tiguous)f +(set)g(of)f(b)m(ytes)h(are)0 828 y(accessed,)37 b(as)d(migh)m(t)i(o)s +(ccur)e(when)f(reading)i(or)f(writing)g(a)h(FITS)f(image.)54 +b(In)34 b(this)g(case)h(CFITSIO)e(b)m(ypasses)0 941 y(the)i(in)m +(ternal)h(IO)f(bu\013ers)f(and)g(simply)h(reads)g(or)g(writes)h(the)f +(desired)g(b)m(ytes)g(directly)h(in)f(the)g(disk)g(\014le)g(with)0 +1054 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev)m(el)i(\014le)d(read)g +(or)h(write)f(routine.)58 b(The)36 b(minim)m(um)g(threshold)f(for)h +(the)h(n)m(um)m(b)s(er)e(of)0 1167 y(b)m(ytes)27 b(to)g(read)f(or)g +(write)g(this)g(w)m(a)m(y)i(is)e(set)g(b)m(y)h(the)f(MINDIRECT)g +(parameter)g(and)g(is)g(curren)m(tly)g(set)h(to)g(3)g(FITS)0 +1280 y(blo)s(c)m(ks)36 b(=)g(8640)i(b)m(ytes.)58 b(This)35 +b(is)h(the)g(most)g(e\016cien)m(t)i(w)m(a)m(y)f(to)g(read)e(or)h(write) +h(large)g(c)m(h)m(unks)e(of)h(data.)59 b(Note)0 1393 +y(that)34 b(this)f(fast)h(direct)g(IO)f(pro)s(cess)f(is)i(not)f (applicable)i(when)d(accessing)j(columns)e(of)h(data)g(in)f(a)g(FITS)g (table)0 1506 y(b)s(ecause)f(the)h(b)m(ytes)g(are)g(generally)g(not)g (con)m(tiguous)g(since)g(they)g(are)f(in)m(terlea)m(v)m(ed)j(b)m(y)e @@ -20859,46 +16409,38 @@ (read)g(then)g(\015ushed)f(from)h(a)h(IO)f(bu\013er)f(m)m(ultiple)0 2569 y(times.)0 2729 y(The)30 b(follo)m(wing)i(section)f(giv)m(es)h (more)e(sp)s(eci\014c)h(suggestions)g(for)f(optimizing)i(the)e(use)g -(of)h(CFITSIO.)0 2916 y -SDict begin H.S end - 0 2916 a 0 2916 a -SDict begin 13.6 H.A end - 0 2916 a 0 -2916 a -SDict begin [/View [/XYZ H.V]/Dest (section.13.2) cvn /DEST pdfmark -end - 0 2916 a 179 x Ff(13.2)136 b(Optimization)46 b(Strategies)0 -3352 y Fj(1.)d(Because)32 b(the)f(data)g(in)g(FITS)f(\014les)h(is)g -(alw)m(a)m(ys)h(stored)f(in)g("big-endian")h(b)m(yte)f(order,)g(where)f -(the)h(\014rst)f(b)m(yte)0 3465 y(of)g(n)m(umeric)h(v)-5 -b(alues)30 b(con)m(tains)i(the)e(most)h(signi\014can)m(t)g(bits)f(and)g -(the)g(last)i(b)m(yte)e(con)m(tains)i(the)e(least)i(signi\014can)m(t)0 -3578 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h(the)h -(b)m(ytes)f(when)f(reading)h(or)g(writing)g(FITS)g(\014les)g(when)f -(running)0 3690 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i(Lin)m -(ux)d(and)g(Microsoft)i(Windo)m(ws)e(op)s(erating)h(systems)g(running)d -(on)j(PCs)0 3803 y(with)c(x86)h(CPUs\).)0 3963 y(On)21 -b(relativ)m(ely)k(new)d(CPUs)g(that)h(supp)s(ort)d("SSSE3")i(mac)m -(hine)h(instructions)f(\(e.g.,)k(starting)d(with)f(In)m(tel)h(Core)g(2) -0 4076 y(CPUs)e(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s(eginning)g(in) -h(2011\))i(signi\014can)m(tly)f(faster)f(4-b)m(yte)h(and)e(8-b)m(yte)i -(sw)m(apping)0 4189 y(algorithms)k(are)g(a)m(v)-5 b(ailable.)42 -b(These)26 b(faster)h(b)m(yte)g(sw)m(apping)f(functions)g(are)h(not)g -(used)e(b)m(y)i(default)f(in)g(CFITSIO)0 4302 y(\(b)s(ecause)33 -b(of)g(p)s(oten)m(tial)h(co)s(de)f(p)s(ortablilit)m(y)h(issues\),)g -(but)e(users)g(can)h(enable)g(them)f(on)h(supp)s(orted)e(platforms)0 -4415 y(b)m(y)38 b(adding)f(the)h(appropriate)f(compiler)i(\015ags)e -(\(-mssse3)i(with)e(gcc)i(or)f(icc)g(on)g(lin)m(ux\))g(when)e -(compiling)j(the)0 4528 y(sw)m(appro)s(c.c)30 b(source)g(\014le,)g -(whic)m(h)g(will)g(allo)m(w)i(the)e(compiler)g(to)h(generate)h(co)s(de) -e(using)f(the)h(SSSE3)f(instruction)0 4641 y(set.)41 -b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(do)g(this)f(is)g(to)h -(con\014gure)f(the)g(CFITSIO)f(library)h(with)g(the)g(follo)m(wing)i -(command:)95 4928 y Fe(>)96 b(./configure)44 b(--enable-ssse3)0 -5215 y Fj(Note,)37 b(ho)m(w)m(ev)m(er,)h(that)d(a)g(binary)f -(executable)j(\014le)e(that)g(is)g(created)h(using)e(these)h(faster)g -(functions)g(will)g(only)0 5328 y(run)29 b(on)h(mac)m(hines)h(that)g -(supp)s(ort)e(the)h(SSSE3)f(mac)m(hine)i(instructions.)0 +(of)h(CFITSIO.)0 3095 y Ff(13.2)136 b(Optimization)46 +b(Strategies)0 3352 y Fj(1.)d(Because)32 b(the)f(data)g(in)g(FITS)f +(\014les)h(is)g(alw)m(a)m(ys)h(stored)f(in)g("big-endian")h(b)m(yte)f +(order,)g(where)f(the)h(\014rst)f(b)m(yte)0 3465 y(of)g(n)m(umeric)h(v) +-5 b(alues)30 b(con)m(tains)i(the)e(most)h(signi\014can)m(t)g(bits)f +(and)g(the)g(last)i(b)m(yte)e(con)m(tains)i(the)e(least)i(signi\014can) +m(t)0 3578 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h +(the)h(b)m(ytes)f(when)f(reading)h(or)g(writing)g(FITS)g(\014les)g +(when)f(running)0 3690 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i +(Lin)m(ux)d(and)g(Microsoft)i(Windo)m(ws)e(op)s(erating)h(systems)g +(running)d(on)j(PCs)0 3803 y(with)c(x86)h(CPUs\).)0 3963 +y(On)21 b(relativ)m(ely)k(new)d(CPUs)g(that)h(supp)s(ort)d("SSSE3")i +(mac)m(hine)h(instructions)f(\(e.g.,)k(starting)d(with)f(In)m(tel)h +(Core)g(2)0 4076 y(CPUs)e(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s +(eginning)g(in)h(2011\))i(signi\014can)m(tly)f(faster)f(4-b)m(yte)h +(and)e(8-b)m(yte)i(sw)m(apping)0 4189 y(algorithms)k(are)g(a)m(v)-5 +b(ailable.)42 b(These)26 b(faster)h(b)m(yte)g(sw)m(apping)f(functions)g +(are)h(not)g(used)e(b)m(y)i(default)f(in)g(CFITSIO)0 +4302 y(\(b)s(ecause)33 b(of)g(p)s(oten)m(tial)h(co)s(de)f(p)s +(ortablilit)m(y)h(issues\),)g(but)e(users)g(can)h(enable)g(them)f(on)h +(supp)s(orted)e(platforms)0 4415 y(b)m(y)38 b(adding)f(the)h +(appropriate)f(compiler)i(\015ags)e(\(-mssse3)i(with)e(gcc)i(or)f(icc)g +(on)g(lin)m(ux\))g(when)e(compiling)j(the)0 4528 y(sw)m(appro)s(c.c)30 +b(source)g(\014le,)g(whic)m(h)g(will)g(allo)m(w)i(the)e(compiler)g(to)h +(generate)h(co)s(de)e(using)f(the)h(SSSE3)f(instruction)0 +4641 y(set.)41 b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(do)g +(this)f(is)g(to)h(con\014gure)f(the)g(CFITSIO)f(library)h(with)g(the)g +(follo)m(wing)i(command:)95 4928 y Fe(>)96 b(./configure)44 +b(--enable-ssse3)0 5215 y Fj(Note,)37 b(ho)m(w)m(ev)m(er,)h(that)d(a)g +(binary)f(executable)j(\014le)e(that)g(is)g(created)h(using)e(these)h +(faster)g(functions)g(will)g(only)0 5328 y(run)29 b(on)h(mac)m(hines)h +(that)g(supp)s(ort)e(the)h(SSSE3)f(mac)m(hine)i(instructions.)0 5488 y(F)-8 b(or)36 b(faster)f(2-b)m(yte)i(sw)m(aps)e(on)g(virtually)g (all)h(x86-64)h(CPUs)e(\(ev)m(en)h(those)g(that)f(do)g(not)h(supp)s (ort)d(SSSE3\),)j(a)0 5601 y(v)-5 b(arian)m(t)26 b(using)e(only)g(SSE2) @@ -20907,45 +16449,32 @@ 5714 y(op)s(erating)30 b(systems)f(\(and)g(is)g(also)i(automatically)h (enabled)d(b)m(y)g(the)g({enable-ssse3)i(\015ag\).)41 b(When)30 b(running)d(on)p eop end -%%Page: 169 177 -TeXDict begin 169 176 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.169) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(13.2.)73 -b(OPTIMIZA)-8 b(TION)29 b(STRA)-8 b(TEGIES)2186 b Fj(169)0 -555 y(x86)p 143 555 28 4 v 34 w(64)31 b(CPUs)g(with)f(32-bit)i(op)s -(erating)g(systems,)f(these)g(faster)h(2-b)m(yte)g(sw)m(apping)f -(algorithms)g(are)h(not)f(used)0 668 y(b)m(y)f(default)h(in)f(CFITSIO,) -f(but)h(can)g(b)s(e)g(enabled)g(explicitly)i(with:)0 -951 y Fe(./configure)45 b(--enable-sse2)0 1234 y Fj(Preliminary)f -(testing)h(indicates)g(that)g(these)f(SSSE3)f(and)g(SSE2)g(based)h(b)m -(yte-sw)m(apping)h(algorithms)g(can)0 1347 y(b)s(o)s(ost)31 -b(the)h(CFITSIO)e(p)s(erformance)h(when)f(reading)i(or)f(writing)h -(FITS)f(images)h(b)m(y)g(20\045)g(-)g(30\045)g(or)f(more.)45 -b(It)0 1460 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho)m(w)m(ev)m(er,) -h(that)d(compiler)g(optimization)i(m)m(ust)e(b)s(e)f(turned)f(on)i -(\(e.g.,)j(b)m(y)d(using)f(the)0 1573 y(-O1)f(or)g(-O2)g(\015ags)g(in)g -(gcc\))h(when)e(building)g(programs)h(that)g(use)g(these)g(fast)g(b)m -(yte-sw)m(apping)h(algorithms)f(in)0 1686 y(order)d(to)h(reap)f(the)h -(full)f(b)s(ene\014t)g(of)g(the)h(SSSE3)e(and)h(SSE2)g(instructions;)h -(without)f(optimization,)j(the)e(co)s(de)0 1799 y(ma)m(y)f(actually)h -(run)d(slo)m(w)m(er)i(than)f(when)g(using)g(more)g(traditional)i(b)m -(yte-sw)m(apping)f(tec)m(hniques.)0 1959 y(2.)54 b(When)34 -b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m(y)h(or)g(IMA)m(GE)g -(extension,)i(it)e(is)f(more)h(e\016cien)m(t)h(to)f(read)g(or)0 -2072 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g(at)h(a)e(time) -h(\(at)h(least)f(3)g(FITS)f(blo)s(c)m(ks)g(=)g(8640)i(b)m(ytes\))f(so)g -(that)g(the)f(direct)0 2185 y(IO)j(mec)m(hanism)h(will)f(b)s(e)g(used)g -(as)g(describ)s(ed)g(in)g(the)g(previous)g(section.)51 +%%Page: 173 181 +TeXDict begin 173 180 bop 0 299 a Fh(13.2.)73 b(OPTIMIZA)-8 +b(TION)29 b(STRA)-8 b(TEGIES)2186 b Fj(173)0 555 y(x86)p +143 555 28 4 v 34 w(64)31 b(CPUs)g(with)f(32-bit)i(op)s(erating)g +(systems,)f(these)g(faster)h(2-b)m(yte)g(sw)m(apping)f(algorithms)g +(are)h(not)f(used)0 668 y(b)m(y)f(default)h(in)f(CFITSIO,)f(but)h(can)g +(b)s(e)g(enabled)g(explicitly)i(with:)0 951 y Fe(./configure)45 +b(--enable-sse2)0 1234 y Fj(Preliminary)f(testing)h(indicates)g(that)g +(these)f(SSSE3)f(and)g(SSE2)g(based)h(b)m(yte-sw)m(apping)h(algorithms) +g(can)0 1347 y(b)s(o)s(ost)31 b(the)h(CFITSIO)e(p)s(erformance)h(when)f +(reading)i(or)f(writing)h(FITS)f(images)h(b)m(y)g(20\045)g(-)g(30\045)g +(or)f(more.)45 b(It)0 1460 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho) +m(w)m(ev)m(er,)h(that)d(compiler)g(optimization)i(m)m(ust)e(b)s(e)f +(turned)f(on)i(\(e.g.,)j(b)m(y)d(using)f(the)0 1573 y(-O1)f(or)g(-O2)g +(\015ags)g(in)g(gcc\))h(when)e(building)g(programs)h(that)g(use)g +(these)g(fast)g(b)m(yte-sw)m(apping)h(algorithms)f(in)0 +1686 y(order)d(to)h(reap)f(the)h(full)f(b)s(ene\014t)g(of)g(the)h +(SSSE3)e(and)h(SSE2)g(instructions;)h(without)f(optimization,)j(the)e +(co)s(de)0 1799 y(ma)m(y)f(actually)h(run)d(slo)m(w)m(er)i(than)f(when) +g(using)g(more)g(traditional)i(b)m(yte-sw)m(apping)f(tec)m(hniques.)0 +1959 y(2.)54 b(When)34 b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m +(y)h(or)g(IMA)m(GE)g(extension,)i(it)e(is)f(more)h(e\016cien)m(t)h(to)f +(read)g(or)0 2072 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g +(at)h(a)e(time)h(\(at)h(least)f(3)g(FITS)f(blo)s(c)m(ks)g(=)g(8640)i(b) +m(ytes\))f(so)g(that)g(the)f(direct)0 2185 y(IO)j(mec)m(hanism)h(will)f +(b)s(e)g(used)g(as)g(describ)s(ed)g(in)g(the)g(previous)g(section.)51 b(Smaller)34 b(c)m(h)m(unks)f(of)g(data)h(are)g(read)0 2298 y(or)d(written)g(via)h(the)f(IO)f(bu\013ers,)g(whic)m(h)h(is)g (somewhat)g(less)g(e\016cien)m(t)i(b)s(ecause)e(of)g(the)g(extra)h(cop) @@ -21016,140 +16545,116 @@ (should)f(b)s(e)h(a)m(v)m(oided)i(during)e(the)h(critical)h(p)s(erio)s (d)e(while)g(the)h(table)h(is)e(b)s(eing)0 5714 y(read)c(or)h(written.) p eop end -%%Page: 170 178 -TeXDict begin 170 177 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.170) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(170)1876 -b Fh(CHAPTER)30 b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)0 -555 y Fj(4.)39 b(Use)25 b(the)g(CFITSIO)e(Iterator)j(routine.)39 -b(This)24 b(routine)h(pro)m(vides)f(a)i(more)e(`ob)5 -b(ject)26 b(orien)m(ted')g(w)m(a)m(y)g(of)f(reading)0 -668 y(and)34 b(writing)g(FITS)g(\014les)g(whic)m(h)h(automatically)i -(uses)d(the)g(most)h(appropriate)g(data)g(bu\013er)e(size)i(to)h(ac)m -(hiev)m(e)0 781 y(the)31 b(maxim)m(um)f(I/O)g(throughput.)0 -941 y(5.)39 b(Use)24 b(binary)f(table)h(extensions)g(rather)f(than)h -(ASCI)s(I)e(table)i(extensions)g(for)f(b)s(etter)h(e\016ciency)h(when)d -(dealing)0 1054 y(with)37 b(tabular)h(data.)62 b(The)37 -b(I/O)g(to)h(ASCI)s(I)e(tables)i(is)g(slo)m(w)m(er)g(b)s(ecause)g(of)f -(the)h(o)m(v)m(erhead)h(in)e(formatting)h(or)0 1167 y(parsing)32 -b(the)g(ASCI)s(I)f(data)i(\014elds)f(and)g(b)s(ecause)g(ASCI)s(I)f -(tables)i(are)g(ab)s(out)f(t)m(wice)i(as)f(large)g(as)g(binary)e -(tables)0 1280 y(that)g(ha)m(v)m(e)h(the)e(same)h(information)g(con)m -(ten)m(t.)0 1440 y(6.)64 b(Design)39 b(soft)m(w)m(are)g(so)g(that)f(it) -h(reads)f(the)g(FITS)f(header)h(k)m(eyw)m(ords)g(in)g(the)g(same)h -(order)e(in)h(whic)m(h)g(they)0 1553 y(o)s(ccur)28 b(in)h(the)g -(\014le.)40 b(When)28 b(reading)h(k)m(eyw)m(ords,)h(CFITSIO)d(searc)m -(hes)i(forw)m(ard)g(starting)g(from)f(the)h(p)s(osition)g(of)0 -1666 y(the)g(last)i(k)m(eyw)m(ord)e(that)h(w)m(as)g(read.)40 -b(If)29 b(it)g(reac)m(hes)i(the)e(end)g(of)g(the)h(header)f(without)g -(\014nding)f(the)h(k)m(eyw)m(ord,)h(it)0 1779 y(then)j(go)s(es)h(bac)m -(k)g(to)h(the)e(start)h(of)g(the)g(header)f(and)g(con)m(tin)m(ues)h -(the)g(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s(osition)f(where)g(it)0 -1892 y(started.)41 b(In)30 b(practice,)i(as)e(long)h(as)g(the)f(en)m -(tire)i(FITS)d(header)h(can)h(\014t)f(at)h(one)g(time)g(in)f(the)g(a)m -(v)-5 b(ailable)33 b(in)m(ternal)0 2005 y(IO)23 b(bu\013ers,)i(then)e -(the)i(header)e(k)m(eyw)m(ord)i(access)g(will)f(b)s(e)g(relativ)m(ely)i -(fast)e(and)g(it)g(mak)m(es)h(little)h(di\013erence)e(whic)m(h)0 -2118 y(order)30 b(they)g(are)h(accessed.)0 2278 y(7.)40 -b(Av)m(oid)29 b(the)e(use)h(of)f(scaling)i(\(b)m(y)f(using)f(the)h -(BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)m -(ords\))0 2391 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s -(erations)f(add)f(to)i(the)f(pro)s(cessing)f(time)i(needed)e(to)i(read) -f(or)g(write)g(the)0 2503 y(data.)k(In)24 b(some)h(cases)h(it)f(ma)m(y) -g(b)s(e)f(more)g(e\016cien)m(t)i(to)g(temp)s(orarily)e(turn)g(o\013)h -(the)f(scaling)i(\(using)e(\014ts)p 3490 2503 28 4 v -33 w(set)p 3634 2503 V 33 w(bscale)0 2616 y(or)30 b(\014ts)p -238 2616 V 33 w(set)p 382 2616 V 33 w(tscale\))j(and)c(then)h(read)h -(or)f(write)h(the)f(ra)m(w)h(unscaled)f(v)-5 b(alues)31 -b(in)f(the)g(FITS)g(\014le.)0 2777 y(8.)77 b(Av)m(oid)43 -b(using)f(the)h(`implicit)g(data)h(t)m(yp)s(e)e(con)m(v)m(ersion')i -(capabilit)m(y)g(in)e(CFITSIO.)f(F)-8 b(or)44 b(instance,)i(when)0 -2889 y(reading)28 b(a)g(FITS)f(image)i(with)e(BITPIX)h(=)f(-32)i -(\(32-bit)g(\015oating)g(p)s(oin)m(t)f(pixels\),)h(read)e(the)h(data)g -(in)m(to)h(a)f(single)0 3002 y(precision)40 b(\015oating)h(p)s(oin)m(t) -f(data)h(arra)m(y)f(in)g(the)g(program.)69 b(F)-8 b(orcing)41 -b(CFITSIO)e(to)i(con)m(v)m(ert)g(the)f(data)h(to)g(a)0 -3115 y(di\013eren)m(t)31 b(data)g(t)m(yp)s(e)f(can)h(slo)m(w)g(the)g -(program.)0 3275 y(9.)57 b(Where)36 b(feasible,)i(design)e(FITS)f -(binary)g(tables)h(using)f(v)m(ector)j(column)d(elemen)m(ts)i(so)f -(that)g(the)g(data)h(are)0 3388 y(written)30 b(as)g(a)g(con)m(tiguous)h -(set)f(of)g(b)m(ytes,)g(rather)g(than)f(as)h(single)g(elemen)m(ts)h(in) -f(m)m(ultiple)g(ro)m(ws.)41 b(F)-8 b(or)30 b(example,)0 -3501 y(it)36 b(is)g(faster)g(to)g(access)h(the)f(data)h(in)e(a)h(table) -h(that)f(con)m(tains)h(a)f(single)g(ro)m(w)g(and)f(2)h(columns)f(with)h -(TF)m(ORM)0 3614 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e -('10000J',)j(than)d(it)g(is)g(to)h(access)g(the)g(same)f(amoun)m(t)h -(of)f(data)h(in)f(a)g(table)0 3727 y(with)40 b(10000)j(ro)m(ws)d(whic)m -(h)h(has)f(columns)g(with)g(the)h(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)g -(to)g('1E')h(and)e('1J'.)h(In)f(the)0 3840 y(former)27 -b(case)i(the)f(10000)i(\015oating)f(p)s(oin)m(t)f(v)-5 -b(alues)28 b(in)g(the)g(\014rst)f(column)h(are)g(all)h(written)f(in)f -(a)h(con)m(tiguous)h(blo)s(c)m(k)0 3953 y(of)d(the)f(\014le)h(whic)m(h) -f(can)h(b)s(e)f(read)g(or)g(written)h(quic)m(kly)-8 b(,)28 -b(whereas)d(in)g(the)h(second)f(case)i(eac)m(h)g(\015oating)f(p)s(oin)m -(t)f(v)-5 b(alue)0 4066 y(in)34 b(the)g(\014rst)f(column)g(is)h(in)m -(terlea)m(v)m(ed)j(with)c(the)h(in)m(teger)i(v)-5 b(alue)34 -b(in)g(the)g(second)g(column)f(of)h(the)g(same)h(ro)m(w)f(so)0 -4179 y(CFITSIO)29 b(has)h(to)h(explicitly)h(mo)m(v)m(e)g(to)f(the)g(p)s -(osition)f(of)h(eac)m(h)g(elemen)m(t)h(to)f(b)s(e)f(read)g(or)g -(written.)0 4339 y(10.)45 b(Av)m(oid)33 b(the)f(use)f(of)h(v)-5 -b(ariable)32 b(length)g(v)m(ector)h(columns)f(in)f(binary)g(tables,)i -(since)f(an)m(y)g(reading)f(or)h(writing)0 4452 y(of)h(these)g(data)g -(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s(ok)j(up)d(or)i(compute)g -(the)f(starting)i(address)e(of)g(eac)m(h)i(ro)m(w)f(of)0 -4565 y(data)e(in)f(the)h(heap.)40 b(In)30 b(practice,)i(this)e(is)g -(probably)g(not)h(a)f(signi\014can)m(t)i(e\016ciency)f(issue.)0 -4725 y(11.)73 b(When)40 b(cop)m(ying)i(data)g(from)e(one)h(FITS)f -(table)i(to)f(another,)j(it)e(is)e(faster)i(to)f(transfer)g(the)f(ra)m -(w)h(b)m(ytes)0 4838 y(instead)28 b(of)h(reading)f(then)g(writing)g -(eac)m(h)h(column)f(of)g(the)g(table.)41 b(The)28 b(CFITSIO)e(routines) -i(\014ts)p 3349 4838 V 33 w(read)p 3554 4838 V 32 w(tblb)m(ytes)0 -4951 y(and)36 b(\014ts)p 310 4951 V 32 w(write)p 544 -4951 V 33 w(tblb)m(ytes)i(will)f(p)s(erform)e(lo)m(w-lev)m(el)k(reads)e -(or)f(writes)h(of)g(an)m(y)g(con)m(tiguous)g(range)g(of)g(b)m(ytes)g -(in)0 5064 y(a)d(table)g(extension.)51 b(These)33 b(routines)h(can)f(b) -s(e)g(used)g(to)h(read)f(or)h(write)g(a)f(whole)h(ro)m(w)g(\(or)g(m)m -(ultiple)g(ro)m(ws)f(for)0 5176 y(ev)m(en)e(greater)h(e\016ciency\))h -(of)e(a)g(table)h(with)e(a)h(single)h(function)e(call.)43 -b(These)31 b(routines)g(are)g(fast)g(b)s(ecause)g(they)0 -5289 y(b)m(ypass)36 b(all)h(the)g(usual)f(data)h(scaling,)i(error)d(c)m -(hec)m(king)i(and)e(mac)m(hine)h(dep)s(enden)m(t)e(data)i(con)m(v)m -(ersion)h(that)f(is)0 5402 y(normally)g(done)g(b)m(y)f(CFITSIO,)g(and)g -(they)h(allo)m(w)h(the)g(program)e(to)i(write)f(the)g(data)g(to)h(the)f -(output)f(\014le)h(in)0 5515 y(exactly)30 b(the)e(same)h(b)m(yte)g -(order.)40 b(F)-8 b(or)29 b(these)f(same)h(reasons,)g(these)g(routines) -f(can)g(corrupt)g(the)g(FITS)g(data)h(\014le)0 5628 y(if)36 -b(used)e(incorrectly)j(b)s(ecause)f(no)f(v)-5 b(alidation)37 -b(or)f(mac)m(hine)g(dep)s(enden)m(t)e(con)m(v)m(ersion)j(is)f(p)s -(erformed)e(b)m(y)h(these)p eop end -%%Page: 171 179 -TeXDict begin 171 178 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.171) cvn /DEST pdfmark end - -8 191 a 0 299 a Fh(13.2.)73 -b(OPTIMIZA)-8 b(TION)29 b(STRA)-8 b(TEGIES)2186 b Fj(171)0 -555 y(routines.)55 b(These)35 b(routines)g(are)h(only)f(recommended)g -(for)g(optimizing)h(critical)h(pieces)f(of)g(co)s(de)f(and)g(should)0 -668 y(only)e(b)s(e)g(used)g(b)m(y)g(programmers)g(who)g(thoroughly)g +%%Page: 174 182 +TeXDict begin 174 181 bop 0 299 a Fj(174)1876 b Fh(CHAPTER)30 +b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)0 555 y Fj(4.)39 +b(Use)25 b(the)g(CFITSIO)e(Iterator)j(routine.)39 b(This)24 +b(routine)h(pro)m(vides)f(a)i(more)e(`ob)5 b(ject)26 +b(orien)m(ted')g(w)m(a)m(y)g(of)f(reading)0 668 y(and)34 +b(writing)g(FITS)g(\014les)g(whic)m(h)h(automatically)i(uses)d(the)g +(most)h(appropriate)g(data)g(bu\013er)e(size)i(to)h(ac)m(hiev)m(e)0 +781 y(the)31 b(maxim)m(um)f(I/O)g(throughput.)0 941 y(5.)39 +b(Use)24 b(binary)f(table)h(extensions)g(rather)f(than)h(ASCI)s(I)e +(table)i(extensions)g(for)f(b)s(etter)h(e\016ciency)h(when)d(dealing)0 +1054 y(with)37 b(tabular)h(data.)62 b(The)37 b(I/O)g(to)h(ASCI)s(I)e +(tables)i(is)g(slo)m(w)m(er)g(b)s(ecause)g(of)f(the)h(o)m(v)m(erhead)h +(in)e(formatting)h(or)0 1167 y(parsing)32 b(the)g(ASCI)s(I)f(data)i +(\014elds)f(and)g(b)s(ecause)g(ASCI)s(I)f(tables)i(are)g(ab)s(out)f(t)m +(wice)i(as)f(large)g(as)g(binary)e(tables)0 1280 y(that)g(ha)m(v)m(e)h +(the)e(same)h(information)g(con)m(ten)m(t.)0 1440 y(6.)64 +b(Design)39 b(soft)m(w)m(are)g(so)g(that)f(it)h(reads)f(the)g(FITS)f +(header)h(k)m(eyw)m(ords)g(in)g(the)g(same)h(order)e(in)h(whic)m(h)g +(they)0 1553 y(o)s(ccur)28 b(in)h(the)g(\014le.)40 b(When)28 +b(reading)h(k)m(eyw)m(ords,)h(CFITSIO)d(searc)m(hes)i(forw)m(ard)g +(starting)g(from)f(the)h(p)s(osition)g(of)0 1666 y(the)g(last)i(k)m +(eyw)m(ord)e(that)h(w)m(as)g(read.)40 b(If)29 b(it)g(reac)m(hes)i(the)e +(end)g(of)g(the)h(header)f(without)g(\014nding)f(the)h(k)m(eyw)m(ord,)h +(it)0 1779 y(then)j(go)s(es)h(bac)m(k)g(to)h(the)e(start)h(of)g(the)g +(header)f(and)g(con)m(tin)m(ues)h(the)g(searc)m(h)g(do)m(wn)f(to)h(the) +g(p)s(osition)f(where)g(it)0 1892 y(started.)41 b(In)30 +b(practice,)i(as)e(long)h(as)g(the)f(en)m(tire)i(FITS)d(header)h(can)h +(\014t)f(at)h(one)g(time)g(in)f(the)g(a)m(v)-5 b(ailable)33 +b(in)m(ternal)0 2005 y(IO)23 b(bu\013ers,)i(then)e(the)i(header)e(k)m +(eyw)m(ord)i(access)g(will)f(b)s(e)g(relativ)m(ely)i(fast)e(and)g(it)g +(mak)m(es)h(little)h(di\013erence)e(whic)m(h)0 2118 y(order)30 +b(they)g(are)h(accessed.)0 2278 y(7.)40 b(Av)m(oid)29 +b(the)e(use)h(of)f(scaling)i(\(b)m(y)f(using)f(the)h(BSCALE)e(and)h +(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)m(ords\))0 +2391 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s(erations)f +(add)f(to)i(the)f(pro)s(cessing)f(time)i(needed)e(to)i(read)f(or)g +(write)g(the)0 2503 y(data.)k(In)24 b(some)h(cases)h(it)f(ma)m(y)g(b)s +(e)f(more)g(e\016cien)m(t)i(to)g(temp)s(orarily)e(turn)g(o\013)h(the)f +(scaling)i(\(using)e(\014ts)p 3490 2503 28 4 v 33 w(set)p +3634 2503 V 33 w(bscale)0 2616 y(or)30 b(\014ts)p 238 +2616 V 33 w(set)p 382 2616 V 33 w(tscale\))j(and)c(then)h(read)h(or)f +(write)h(the)f(ra)m(w)h(unscaled)f(v)-5 b(alues)31 b(in)f(the)g(FITS)g +(\014le.)0 2777 y(8.)77 b(Av)m(oid)43 b(using)f(the)h(`implicit)g(data) +h(t)m(yp)s(e)e(con)m(v)m(ersion')i(capabilit)m(y)g(in)e(CFITSIO.)f(F)-8 +b(or)44 b(instance,)i(when)0 2889 y(reading)28 b(a)g(FITS)f(image)i +(with)e(BITPIX)h(=)f(-32)i(\(32-bit)g(\015oating)g(p)s(oin)m(t)f +(pixels\),)h(read)e(the)h(data)g(in)m(to)h(a)f(single)0 +3002 y(precision)40 b(\015oating)h(p)s(oin)m(t)f(data)h(arra)m(y)f(in)g +(the)g(program.)69 b(F)-8 b(orcing)41 b(CFITSIO)e(to)i(con)m(v)m(ert)g +(the)f(data)h(to)g(a)0 3115 y(di\013eren)m(t)31 b(data)g(t)m(yp)s(e)f +(can)h(slo)m(w)g(the)g(program.)0 3275 y(9.)57 b(Where)36 +b(feasible,)i(design)e(FITS)f(binary)g(tables)h(using)f(v)m(ector)j +(column)d(elemen)m(ts)i(so)f(that)g(the)g(data)h(are)0 +3388 y(written)30 b(as)g(a)g(con)m(tiguous)h(set)f(of)g(b)m(ytes,)g +(rather)g(than)f(as)h(single)g(elemen)m(ts)h(in)f(m)m(ultiple)g(ro)m +(ws.)41 b(F)-8 b(or)30 b(example,)0 3501 y(it)36 b(is)g(faster)g(to)g +(access)h(the)f(data)h(in)e(a)h(table)h(that)f(con)m(tains)h(a)f +(single)g(ro)m(w)g(and)f(2)h(columns)f(with)h(TF)m(ORM)0 +3614 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e('10000J',)j(than) +d(it)g(is)g(to)h(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)f(a)g +(table)0 3727 y(with)40 b(10000)j(ro)m(ws)d(whic)m(h)h(has)f(columns)g +(with)g(the)h(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)g(to)g('1E')h(and)e +('1J'.)h(In)f(the)0 3840 y(former)27 b(case)i(the)f(10000)i(\015oating) +f(p)s(oin)m(t)f(v)-5 b(alues)28 b(in)g(the)g(\014rst)f(column)h(are)g +(all)h(written)f(in)f(a)h(con)m(tiguous)h(blo)s(c)m(k)0 +3953 y(of)d(the)f(\014le)h(whic)m(h)f(can)h(b)s(e)f(read)g(or)g +(written)h(quic)m(kly)-8 b(,)28 b(whereas)d(in)g(the)h(second)f(case)i +(eac)m(h)g(\015oating)f(p)s(oin)m(t)f(v)-5 b(alue)0 4066 +y(in)34 b(the)g(\014rst)f(column)g(is)h(in)m(terlea)m(v)m(ed)j(with)c +(the)h(in)m(teger)i(v)-5 b(alue)34 b(in)g(the)g(second)g(column)f(of)h +(the)g(same)h(ro)m(w)f(so)0 4179 y(CFITSIO)29 b(has)h(to)h(explicitly)h +(mo)m(v)m(e)g(to)f(the)g(p)s(osition)f(of)h(eac)m(h)g(elemen)m(t)h(to)f +(b)s(e)f(read)g(or)g(written.)0 4339 y(10.)45 b(Av)m(oid)33 +b(the)f(use)f(of)h(v)-5 b(ariable)32 b(length)g(v)m(ector)h(columns)f +(in)f(binary)g(tables,)i(since)f(an)m(y)g(reading)f(or)h(writing)0 +4452 y(of)h(these)g(data)g(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s +(ok)j(up)d(or)i(compute)g(the)f(starting)i(address)e(of)g(eac)m(h)i(ro) +m(w)f(of)0 4565 y(data)e(in)f(the)h(heap.)40 b(In)30 +b(practice,)i(this)e(is)g(probably)g(not)h(a)f(signi\014can)m(t)i +(e\016ciency)f(issue.)0 4725 y(11.)73 b(When)40 b(cop)m(ying)i(data)g +(from)e(one)h(FITS)f(table)i(to)f(another,)j(it)e(is)e(faster)i(to)f +(transfer)g(the)f(ra)m(w)h(b)m(ytes)0 4838 y(instead)28 +b(of)h(reading)f(then)g(writing)g(eac)m(h)h(column)f(of)g(the)g(table.) +41 b(The)28 b(CFITSIO)e(routines)i(\014ts)p 3349 4838 +V 33 w(read)p 3554 4838 V 32 w(tblb)m(ytes)0 4951 y(and)36 +b(\014ts)p 310 4951 V 32 w(write)p 544 4951 V 33 w(tblb)m(ytes)i(will)f +(p)s(erform)e(lo)m(w-lev)m(el)k(reads)e(or)f(writes)h(of)g(an)m(y)g +(con)m(tiguous)g(range)g(of)g(b)m(ytes)g(in)0 5064 y(a)d(table)g +(extension.)51 b(These)33 b(routines)h(can)f(b)s(e)g(used)g(to)h(read)f +(or)h(write)g(a)f(whole)h(ro)m(w)g(\(or)g(m)m(ultiple)g(ro)m(ws)f(for)0 +5176 y(ev)m(en)e(greater)h(e\016ciency\))h(of)e(a)g(table)h(with)e(a)h +(single)h(function)e(call.)43 b(These)31 b(routines)g(are)g(fast)g(b)s +(ecause)g(they)0 5289 y(b)m(ypass)36 b(all)h(the)g(usual)f(data)h +(scaling,)i(error)d(c)m(hec)m(king)i(and)e(mac)m(hine)h(dep)s(enden)m +(t)e(data)i(con)m(v)m(ersion)h(that)f(is)0 5402 y(normally)g(done)g(b)m +(y)f(CFITSIO,)g(and)g(they)h(allo)m(w)h(the)g(program)e(to)i(write)f +(the)g(data)g(to)h(the)f(output)f(\014le)h(in)0 5515 +y(exactly)30 b(the)e(same)h(b)m(yte)g(order.)40 b(F)-8 +b(or)29 b(these)f(same)h(reasons,)g(these)g(routines)f(can)g(corrupt)g +(the)g(FITS)g(data)h(\014le)0 5628 y(if)36 b(used)e(incorrectly)j(b)s +(ecause)f(no)f(v)-5 b(alidation)37 b(or)f(mac)m(hine)g(dep)s(enden)m(t) +e(con)m(v)m(ersion)j(is)f(p)s(erformed)e(b)m(y)h(these)p +eop end +%%Page: 175 183 +TeXDict begin 175 182 bop 0 299 a Fh(13.2.)73 b(OPTIMIZA)-8 +b(TION)29 b(STRA)-8 b(TEGIES)2186 b Fj(175)0 555 y(routines.)55 +b(These)35 b(routines)g(are)h(only)f(recommended)g(for)g(optimizing)h +(critical)h(pieces)f(of)g(co)s(de)f(and)g(should)0 668 +y(only)e(b)s(e)g(used)g(b)m(y)g(programmers)g(who)g(thoroughly)g (understand)e(the)j(in)m(ternal)g(format)g(of)f(the)h(FITS)e(tables)0 781 y(they)f(are)f(reading)h(or)f(writing.)0 941 y(12.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving)f(the)h(sp)s(eed)e(of)i @@ -21178,5221 +16683,588 @@ c(en)m(tire)i(hardw)m(are)e(and)0 2118 y(soft)m(w)m(are)32 b(system)e(should)g(b)s(e)f(review)m(ed)i(to)h(iden)m(tify)e(an)m(y)h (p)s(oten)m(tial)h(I/O)e(b)s(ottlenec)m(ks.)p eop end -%%Page: 172 180 -TeXDict begin 172 179 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.172) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(172)1876 -b Fh(CHAPTER)30 b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)p -eop end -%%Page: 173 181 -TeXDict begin 173 180 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.173) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (appendix.A) cvn /DEST pdfmark end - 0 464 a 761 x Fg(App)5 b(endix)64 -b(A)0 1687 y Fm(Index)77 b(of)h(Routines)50 2154 y Fj(\014ts)p -177 2154 28 4 v 32 w(add)p 356 2154 V 32 w(group)p 616 -2154 V 33 w(mem)m(b)s(er)1208 2154 y -SDict begin H.S end - 1208 2154 a Fj(92)1299 -2096 y -SDict begin H.R end - 1299 2096 a 1299 2154 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 1299 2154 a 50 2267 a -Fj(\014ts)p 177 2267 28 4 v 32 w(ascii)p 380 2267 V 34 -w(tform)1208 2267 y -SDict begin H.S end - 1208 2267 a Fj(70)1299 2208 y -SDict begin H.R end - 1299 -2208 a 1299 2267 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1299 2267 a 50 2380 a Fj(\014ts)p -177 2380 28 4 v 32 w(binary)p 465 2380 V 32 w(tform)1208 -2380 y -SDict begin H.S end - 1208 2380 a Fj(70)1299 2321 y -SDict begin H.R end - 1299 2321 a 1299 -2380 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1299 2380 a 50 2493 a Fj(\014ts)p 177 2493 28 -4 v 32 w(calculator)1208 2493 y -SDict begin H.S end - 1208 2493 a Fj(61)1299 -2434 y -SDict begin H.R end - 1299 2434 a 1299 2493 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 1299 2493 a 50 2606 a -Fj(\014ts)p 177 2606 28 4 v 32 w(calculator)p 596 2606 -V 35 w(rng)1208 2606 y -SDict begin H.S end - 1208 2606 a Fj(61)1299 2547 y -SDict begin H.R end - -1299 2547 a 1299 2606 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 1299 2606 a 50 2719 a Fj(\014ts)p -177 2719 28 4 v 32 w(calc)p 359 2719 V 35 w(binning[d])1208 -2719 y -SDict begin H.S end - 1208 2719 a Fj(62)1299 2660 y -SDict begin H.R end - 1299 2660 a 1299 -2719 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.6) cvn H.B /ANN pdfmark end - 1299 2719 a 50 2832 a Fj(\014ts)p 177 2832 28 -4 v 32 w(calc)p 359 2832 V 35 w(ro)m(ws)1208 2832 y -SDict begin H.S end - 1208 -2832 a Fj(60)1299 2773 y -SDict begin H.R end - 1299 2773 a 1299 2832 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 1299 -2832 a 50 2945 a Fj(\014ts)p 177 2945 28 4 v 32 w(c)m(hange)p -478 2945 V 34 w(group)1208 2945 y -SDict begin H.S end - 1208 2945 a Fj(90)1299 -2886 y -SDict begin H.R end - 1299 2886 a 1299 2945 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 1299 2945 a 50 3057 a -Fj(\014ts)p 177 3057 28 4 v 32 w(clean)m(up)p 509 3057 -V 33 w(h)m(ttps)1208 3057 y -SDict begin H.S end - 1208 3057 a Fj(99)1299 2999 -y -SDict begin H.R end - 1299 2999 a 1299 3057 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1299 3057 a 50 3170 a Fj(\014ts)p -177 3170 28 4 v 32 w(clear)p 395 3170 V 34 w(errmark)1208 -3170 y -SDict begin H.S end - 1208 3170 a Fj(32)1299 3112 y -SDict begin H.R end - 1299 3112 a 1299 -3170 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 1299 3170 a 50 3283 a Fj(\014ts)p 177 3283 28 -4 v 32 w(clear)p 395 3283 V 34 w(errmsg)1208 3283 y -SDict begin H.S end - 1208 -3283 a Fj(32)1299 3225 y -SDict begin H.R end - 1299 3225 a 1299 3283 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 1299 -3283 a 50 3396 a Fj(\014ts)p 177 3396 28 4 v 32 w(close)p -395 3396 V 34 w(\014le)1208 3396 y -SDict begin H.S end - 1208 3396 a Fj(35)1299 -3338 y -SDict begin H.R end - 1299 3338 a 1299 3396 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1299 3396 a 50 3509 a -Fj(\014ts)p 177 3509 28 4 v 32 w(compact)p 541 3509 V -34 w(group)1208 3509 y -SDict begin H.S end - 1208 3509 a Fj(91)1299 3450 y -SDict begin H.R end - -1299 3450 a 1299 3509 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 1299 3509 a 50 3622 a Fj(\014ts)p -177 3622 28 4 v 32 w(compare)p 542 3622 V 34 w(str)1208 -3622 y -SDict begin H.S end - 1208 3622 a Fj(67)1299 3563 y -SDict begin H.R end - 1299 3563 a 1299 -3622 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1299 3622 a 50 3735 a Fj(\014ts)p 177 3735 28 -4 v 32 w(compress)p 569 3735 V 33 w(heap)1163 3735 y -SDict begin H.S end - -1163 3735 a Fj(116)1299 3676 y -SDict begin H.R end - 1299 3676 a 1299 3735 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 1299 3735 a 50 3848 a Fj(\014ts)p 177 3848 28 4 v 32 -w(con)m(v)m(ert)p 498 3848 V 35 w(hdr2str)1062 3848 y -SDict begin H.S end - -1062 3848 a Fj(40)1153 3789 y -SDict begin H.R end - 1153 3789 a 1153 3848 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - -1153 3848 a Fj(,)1208 3848 y -SDict begin H.S end - 1208 3848 a Fj(86)1299 3789 -y -SDict begin H.R end - 1299 3789 a 1299 3848 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (chapter.7) cvn H.B /ANN pdfmark end - 1299 3848 a 50 3961 a Fj(\014ts)p -177 3961 28 4 v 32 w(cop)m(y)p 390 3961 V 34 w(cell2image)1208 -3961 y -SDict begin H.S end - 1208 3961 a Fj(44)1299 3902 y -SDict begin H.R end - 1299 3902 a 1299 -3961 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1299 3961 a 50 4074 a Fj(\014ts)p 177 4074 28 -4 v 32 w(cop)m(y)p 390 4074 V 34 w(col)1208 4074 y -SDict begin H.S end - 1208 -4074 a Fj(57)1299 4015 y -SDict begin H.R end - 1299 4015 a 1299 4074 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1299 -4074 a 50 4187 a Fj(\014ts)p 177 4187 28 4 v 32 w(cop)m(y)p -390 4187 V 34 w(cols)1208 4187 y -SDict begin H.S end - 1208 4187 a Fj(57)1299 -4128 y -SDict begin H.R end - 1299 4128 a 1299 4187 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1299 4187 a 50 4299 a -Fj(\014ts)p 177 4299 28 4 v 32 w(cop)m(y)p 390 4299 V -34 w(data)1163 4299 y -SDict begin H.S end - 1163 4299 a Fj(101)1299 4241 y -SDict begin H.R end - -1299 4241 a 1299 4299 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1299 4299 a 50 4412 a Fj(\014ts)p -177 4412 28 4 v 32 w(cop)m(y)p 390 4412 V 34 w(\014le)1208 -4412 y -SDict begin H.S end - 1208 4412 a Fj(36)1299 4354 y -SDict begin H.R end - 1299 4354 a 1299 -4412 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1299 4412 a 50 4525 a Fj(\014ts)p 177 4525 28 -4 v 32 w(cop)m(y)p 390 4525 V 34 w(group)1208 4525 y -SDict begin H.S end - -1208 4525 a Fj(91)1299 4467 y -SDict begin H.R end - 1299 4467 a 1299 4525 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - -1299 4525 a 50 4638 a Fj(\014ts)p 177 4638 28 4 v 32 -w(cop)m(y)p 390 4638 V 34 w(hdu)1208 4638 y -SDict begin H.S end - 1208 4638 -a Fj(37)1299 4580 y -SDict begin H.R end - 1299 4580 a 1299 4638 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1299 4638 -a 50 4751 a Fj(\014ts)p 177 4751 28 4 v 32 w(cop)m(y)p -390 4751 V 34 w(header)1208 4751 y -SDict begin H.S end - 1208 4751 a Fj(37)1299 -4692 y -SDict begin H.R end - 1299 4692 a 1299 4751 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1299 4751 a 50 4864 a -Fj(\014ts)p 177 4864 28 4 v 32 w(cop)m(y)p 390 4864 V -34 w(image2cell)1208 4864 y -SDict begin H.S end - 1208 4864 a Fj(44)1299 4805 -y -SDict begin H.R end - 1299 4805 a 1299 4864 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1299 4864 a 50 4977 a Fj(\014ts)p -177 4977 28 4 v 32 w(cop)m(y)p 390 4977 V 34 w(image)p -655 4977 V 34 w(section)1208 4977 y -SDict begin H.S end - 1208 4977 a Fj(47)1299 -4918 y -SDict begin H.R end - 1299 4918 a 1299 4977 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1299 4977 a 50 5090 a -Fj(\014ts)p 177 5090 28 4 v 32 w(cop)m(y)p 390 5090 V -34 w(k)m(ey)1163 5090 y -SDict begin H.S end - 1163 5090 a Fj(106)1299 5031 -y -SDict begin H.R end - 1299 5031 a 1299 5090 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1299 5090 a 50 5203 a Fj(\014ts)p -177 5203 28 4 v 32 w(cop)m(y)p 390 5203 V 34 w(mem)m(b)s(er)1208 -5203 y -SDict begin H.S end - 1208 5203 a Fj(93)1299 5144 y -SDict begin H.R end - 1299 5144 a 1299 -5203 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 1299 5203 a 50 5316 a Fj(\014ts)p 177 5316 28 -4 v 32 w(cop)m(y)p 390 5316 V 34 w(pixlist2image)1208 -5316 y -SDict begin H.S end - 1208 5316 a Fj(62)1299 5257 y -SDict begin H.R end - 1299 5257 a 1299 -5316 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.6) cvn H.B /ANN pdfmark end - 1299 5316 a 50 5429 a Fj(\014ts)p 177 5429 28 -4 v 32 w(cop)m(y)p 390 5429 V 34 w(ro)m(ws)1208 5429 -y -SDict begin H.S end - 1208 5429 a Fj(57)1299 5370 y -SDict begin H.R end - 1299 5370 a 1299 5429 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1299 5429 a 50 5541 a Fj(\014ts)p 177 5541 28 4 v 32 -w(create)p 445 5541 V 35 w(disk\014le)1208 5541 y -SDict begin H.S end - 1208 -5541 a Fj(34)1299 5483 y -SDict begin H.R end - 1299 5483 a 1299 5541 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1299 -5541 a 50 5654 a Fj(\014ts)p 177 5654 28 4 v 32 w(create)p -445 5654 V 35 w(\014le)1208 5654 y -SDict begin H.S end - 1208 5654 a Fj(34)1299 -5596 y -SDict begin H.R end - 1299 5596 a 1299 5654 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1299 5654 a 1419 2154 -a Fj(\014ts)p 1546 2154 28 4 v 32 w(create)p 1814 2154 -V 35 w(group)2701 2154 y -SDict begin H.S end - 2701 2154 a Fj(90)2792 2096 -y -SDict begin H.R end - 2792 2096 a 2792 2154 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2792 2154 a 1419 2267 a Fj(\014ts)p -1546 2267 28 4 v 32 w(create)p 1814 2267 V 35 w(hdu)2656 -2267 y -SDict begin H.S end - 2656 2267 a Fj(100)2792 2208 y -SDict begin H.R end - 2792 2208 a 2792 -2267 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2792 2267 a 1419 2380 a Fj(\014ts)p 1546 2380 -28 4 v 32 w(create)p 1814 2380 V 35 w(img)2701 2380 y -SDict begin H.S end - -2701 2380 a Fj(44)2792 2321 y -SDict begin H.R end - 2792 2321 a 2792 2380 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - -2792 2380 a 1419 2493 a Fj(\014ts)p 1546 2493 28 4 v -32 w(create)p 1814 2493 V 35 w(mem\014le)2701 2493 y -SDict begin H.S end - -2701 2493 a Fj(96)2792 2434 y -SDict begin H.R end - 2792 2434 a 2792 2493 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - -2792 2493 a 1419 2606 a Fj(\014ts)p 1546 2606 28 4 v -32 w(create)p 1814 2606 V 35 w(tbl)2701 2606 y -SDict begin H.S end - 2701 2606 -a Fj(52)2792 2547 y -SDict begin H.R end - 2792 2547 a 2792 2606 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.1) cvn H.B /ANN pdfmark end - 2792 2606 -a 1419 2719 a Fj(\014ts)p 1546 2719 28 4 v 32 w(create)p -1814 2719 V 35 w(template)2701 2719 y -SDict begin H.S end - 2701 2719 a Fj(96)2792 -2660 y -SDict begin H.R end - 2792 2660 a 2792 2719 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2792 2719 a 1419 2832 -a Fj(\014ts)p 1546 2832 28 4 v 32 w(date2str)2701 2832 -y -SDict begin H.S end - 2701 2832 a Fj(65)2792 2773 y -SDict begin H.R end - 2792 2773 a 2792 2832 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 2792 2832 a 1419 2945 a Fj(\014ts)p 1546 2945 28 4 -v 32 w(deco)s(de)p 1848 2945 V 33 w(c)m(hksum)2701 2945 -y -SDict begin H.S end - 2701 2945 a Fj(65)2792 2886 y -SDict begin H.R end - 2792 2886 a 2792 2945 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 2792 2945 a 1419 3057 a Fj(\014ts)p 1546 3057 28 4 -v 32 w(deco)s(de)p 1848 3057 V 33 w(tdim)2701 3057 y -SDict begin H.S end - -2701 3057 a Fj(55)2792 2999 y -SDict begin H.R end - 2792 2999 a 2792 3057 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - -2792 3057 a 1419 3170 a Fj(\014ts)p 1546 3170 28 4 v -32 w(delete)p 1809 3170 V 34 w(col)2701 3170 y -SDict begin H.S end - 2701 3170 -a Fj(56)2792 3112 y -SDict begin H.R end - 2792 3112 a 2792 3170 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 2792 3170 -a 1419 3283 a Fj(\014ts)p 1546 3283 28 4 v 32 w(delete)p -1809 3283 V 34 w(\014le)2701 3283 y -SDict begin H.S end - 2701 3283 a Fj(35)2792 -3225 y -SDict begin H.R end - 2792 3225 a 2792 3283 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 2792 3283 a 1419 3396 -a Fj(\014ts)p 1546 3396 28 4 v 32 w(delete)p 1809 3396 -V 34 w(hdu)2701 3396 y -SDict begin H.S end - 2701 3396 a Fj(37)2792 3338 y -SDict begin H.R end - -2792 3338 a 2792 3396 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 2792 3396 a 1419 3509 a Fj(\014ts)p -1546 3509 28 4 v 32 w(delete)p 1809 3509 V 34 w(k)m(ey)2701 -3509 y -SDict begin H.S end - 2701 3509 a Fj(42)2792 3450 y -SDict begin H.R end - 2792 3450 a 2792 -3509 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2792 3509 a 1419 3622 a Fj(\014ts)p 1546 3622 -28 4 v 32 w(delete)p 1809 3622 V 34 w(record)2701 3622 -y -SDict begin H.S end - 2701 3622 a Fj(42)2792 3563 y -SDict begin H.R end - 2792 3563 a 2792 3622 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2792 3622 a 1419 3735 a Fj(\014ts)p 1546 3735 28 4 -v 32 w(delete)p 1809 3735 V 34 w(ro)m(wlist)2701 3735 -y -SDict begin H.S end - 2701 3735 a Fj(56)2792 3676 y -SDict begin H.R end - 2792 3676 a 2792 3735 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 2792 3735 a 1419 3848 a Fj(\014ts)p 1546 3848 28 4 -v 32 w(delete)p 1809 3848 V 34 w(ro)m(wrange)2701 3848 -y -SDict begin H.S end - 2701 3848 a Fj(56)2792 3789 y -SDict begin H.R end - 2792 3789 a 2792 3848 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 2792 3848 a 1419 3961 a Fj(\014ts)p 1546 3961 28 4 -v 32 w(delete)p 1809 3961 V 34 w(ro)m(ws)2701 3961 y -SDict begin H.S end - -2701 3961 a Fj(56)2792 3902 y -SDict begin H.R end - 2792 3902 a 2792 3961 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - -2792 3961 a 1419 4074 a Fj(\014ts)p 1546 4074 28 4 v -32 w(delete)p 1809 4074 V 34 w(str)2701 4074 y -SDict begin H.S end - 2701 4074 -a Fj(42)2792 4015 y -SDict begin H.R end - 2792 4015 a 2792 4074 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2792 4074 -a 1419 4187 a Fj(\014ts)p 1546 4187 28 4 v 32 w(enco)s(de)p -1848 4187 V 33 w(c)m(hksum)2701 4187 y -SDict begin H.S end - 2701 4187 a Fj(65)2792 -4128 y -SDict begin H.R end - 2792 4128 a 2792 4187 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 2792 4187 a 1419 4299 -a Fj(\014ts)p 1546 4299 28 4 v 32 w(\014le)p 1694 4299 -V 33 w(exists)2701 4299 y -SDict begin H.S end - 2701 4299 a Fj(98)2792 4241 -y -SDict begin H.R end - 2792 4241 a 2792 4299 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2792 4299 a 1419 4412 a Fj(\014ts)p -1546 4412 28 4 v 32 w(\014le)p 1694 4412 V 33 w(mo)s(de)2701 -4412 y -SDict begin H.S end - 2701 4412 a Fj(35)2792 4354 y -SDict begin H.R end - 2792 4354 a 2792 -4412 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 2792 4412 a 1419 4525 a Fj(\014ts)p 1546 4525 -28 4 v 32 w(\014le)p 1694 4525 V 33 w(name)2701 4525 -y -SDict begin H.S end - 2701 4525 a Fj(35)2792 4467 y -SDict begin H.R end - 2792 4467 a 2792 4525 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 2792 4525 a 1419 4638 a Fj(\014ts)p 1546 4638 28 4 -v 32 w(\014nd)p 1731 4638 V 32 w(\014rst)p 1921 4638 -V 32 w(ro)m(w)2701 4638 y -SDict begin H.S end - 2701 4638 a Fj(60)2792 4580 -y -SDict begin H.R end - 2792 4580 a 2792 4638 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 2792 4638 a 1419 4751 a Fj(\014ts)p -1546 4751 28 4 v 32 w(\014nd)p 1731 4751 V 32 w(nextk)m(ey)2701 -4751 y -SDict begin H.S end - 2701 4751 a Fj(39)2792 4692 y -SDict begin H.R end - 2792 4692 a 2792 -4751 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2792 4751 a 1419 4864 a Fj(\014ts)p 1546 4864 -28 4 v 32 w(\014nd)p 1731 4864 V 32 w(ro)m(ws)2701 4864 -y -SDict begin H.S end - 2701 4864 a Fj(60)2792 4805 y -SDict begin H.R end - 2792 4805 a 2792 4864 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 2792 4864 a 1419 4977 a Fj(\014ts)p 1546 4977 28 4 -v 32 w(\015ush)p 1767 4977 V 32 w(bu\013er)2701 4977 -y -SDict begin H.S end - 2701 4977 a Fj(98)2792 4918 y -SDict begin H.R end - 2792 4918 a 2792 4977 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2792 4977 a 1419 5090 a Fj(\014ts)p 1546 5090 28 4 -v 32 w(\015ush)p 1767 5090 V 32 w(\014le)2701 5090 y -SDict begin H.S end - -2701 5090 a Fj(98)2792 5031 y -SDict begin H.R end - 2792 5031 a 2792 5090 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - -2792 5090 a 1419 5203 a Fj(\014ts)p 1546 5203 28 4 v -32 w(free)p 1722 5203 V 33 w(memory)2509 5203 y -SDict begin H.S end - 2509 -5203 a Fj(108)2645 5144 y -SDict begin H.R end - 2645 5144 a 2645 5203 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 2645 -5203 a Fj(,)2701 5203 y -SDict begin H.S end - 2701 5203 a Fj(40)2792 5144 y -SDict begin H.R end - -2792 5144 a 2792 5203 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2792 5203 a 1419 5316 a Fj(\014ts)p -1546 5316 28 4 v 32 w(get)p 1698 5316 V 34 w(acolparms)2656 -5316 y -SDict begin H.S end - 2656 5316 a Fj(115)2792 5257 y -SDict begin H.R end - 2792 5257 a 2792 -5316 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 2792 5316 a 1419 5429 a Fj(\014ts)p 1546 5429 -28 4 v 32 w(get)p 1698 5429 V 34 w(b)s(colparms)2656 -5429 y -SDict begin H.S end - 2656 5429 a Fj(115)2792 5370 y -SDict begin H.R end - 2792 5370 a 2792 -5429 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 2792 5429 a 1419 5541 a Fj(\014ts)p 1546 5541 -28 4 v 32 w(get)p 1698 5541 V 34 w(c)m(hksum)2701 5541 -y -SDict begin H.S end - 2701 5541 a Fj(64)2792 5483 y -SDict begin H.R end - 2792 5483 a 2792 5541 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 2792 5541 a 1419 5654 a Fj(\014ts)p 1546 5654 28 4 -v 32 w(get)p 1698 5654 V 34 w(col)p 1842 5654 V 34 w(displa)m(y)p -2154 5654 V 33 w(width)2701 5654 y -SDict begin H.S end - 2701 5654 a Fj(55)2792 -5596 y -SDict begin H.R end - 2792 5596 a 2792 5654 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 2792 5654 a 2912 2154 -a Fj(\014ts)p 3039 2154 28 4 v 32 w(get)p 3191 2154 V -34 w(colname)4053 2154 y -SDict begin H.S end - 4053 2154 a Fj(53)4144 2096 -y -SDict begin H.R end - 4144 2096 a 4144 2154 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 4144 2154 a 2912 2267 a Fj(\014ts)p -3039 2267 28 4 v 32 w(get)p 3191 2267 V 34 w(coln)m(um)4053 -2267 y -SDict begin H.S end - 4053 2267 a Fj(53)4144 2208 y -SDict begin H.R end - 4144 2208 a 4144 -2267 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 4144 2267 a 2912 2380 a Fj(\014ts)p 3039 2380 -28 4 v 32 w(get)p 3191 2380 V 34 w(colt)m(yp)s(e)4053 -2380 y -SDict begin H.S end - 4053 2380 a Fj(54)4144 2321 y -SDict begin H.R end - 4144 2321 a 4144 -2380 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 4144 2380 a 2912 2493 a Fj(\014ts)p 3039 2493 -28 4 v 32 w(get)p 3191 2493 V 34 w(compression)p 3706 -2493 V 33 w(t)m(yp)s(e)4053 2493 y -SDict begin H.S end - 4053 2493 a Fj(50)4144 -2434 y -SDict begin H.R end - 4144 2434 a 4144 2493 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.6) cvn H.B /ANN pdfmark end - 4144 2493 a 2912 2606 -a Fj(\014ts)p 3039 2606 28 4 v 32 w(get)p 3191 2606 V -34 w(eqcolt)m(yp)s(e)4053 2606 y -SDict begin H.S end - 4053 2606 a Fj(54)4144 -2547 y -SDict begin H.R end - 4144 2547 a 4144 2606 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 4144 2606 a 2912 2719 -a Fj(\014ts)p 3039 2719 28 4 v 32 w(get)p 3191 2719 V -34 w(errstatus)4053 2719 y -SDict begin H.S end - 4053 2719 a Fj(31)4144 2660 -y -SDict begin H.R end - 4144 2660 a 4144 2719 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 4144 2719 a 2912 2832 a Fj(\014ts)p -3039 2832 28 4 v 32 w(get)p 3191 2832 V 34 w(hdrp)s(os)4008 -2832 y -SDict begin H.S end - 4008 2832 a Fj(102)4144 2773 y -SDict begin H.R end - 4144 2773 a 4144 -2832 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.1) cvn H.B /ANN pdfmark end - 4144 2832 a 2912 2945 a Fj(\014ts)p 3039 2945 -28 4 v 32 w(get)p 3191 2945 V 34 w(hdrspace)4053 2945 -y -SDict begin H.S end - 4053 2945 a Fj(38)4144 2886 y -SDict begin H.R end - 4144 2886 a 4144 2945 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 4144 2945 a 2912 3057 a Fj(\014ts)p 3039 3057 28 4 -v 32 w(get)p 3191 3057 V 34 w(hdu)p 3378 3057 V 31 w(n)m(um)4053 -3057 y -SDict begin H.S end - 4053 3057 a Fj(36)4144 2999 y -SDict begin H.R end - 4144 2999 a 4144 -3057 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 4144 3057 a 2912 3170 a Fj(\014ts)p 3039 3170 -28 4 v 32 w(get)p 3191 3170 V 34 w(hdu)p 3378 3170 V -31 w(t)m(yp)s(e)4053 3170 y -SDict begin H.S end - 4053 3170 a Fj(36)4144 3112 -y -SDict begin H.R end - 4144 3112 a 4144 3170 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 4144 3170 a 2912 3283 a Fj(\014ts)p -3039 3283 28 4 v 32 w(get)p 3191 3283 V 34 w(hduaddr)4008 -3283 y -SDict begin H.S end - 4008 3283 a Fj(100)4144 3225 y -SDict begin H.R end - 4144 3225 a 4144 -3283 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 4144 3283 a 2912 3396 a Fj(\014ts)p 3039 3396 -28 4 v 32 w(get)p 3191 3396 V 34 w(hduaddrll)4008 3396 -y -SDict begin H.S end - 4008 3396 a Fj(100)4144 3338 y -SDict begin H.R end - 4144 3338 a 4144 3396 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 4144 3396 a 2912 3509 a Fj(\014ts)p 3039 3509 28 4 -v 32 w(get)p 3191 3509 V 34 w(img)p 3371 3509 V 33 w(dim)4053 -3509 y -SDict begin H.S end - 4053 3509 a Fj(43)4144 3450 y -SDict begin H.R end - 4144 3450 a 4144 -3509 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 4144 3509 a 2912 3622 a Fj(\014ts)p 3039 3622 -28 4 v 32 w(get)p 3191 3622 V 34 w(img)p 3371 3622 V -33 w(equivt)m(yp)s(e)4053 3622 y -SDict begin H.S end - 4053 3622 a Fj(43)4144 -3563 y -SDict begin H.R end - 4144 3563 a 4144 3622 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 4144 3622 a 2912 3735 -a Fj(\014ts)p 3039 3735 28 4 v 32 w(get)p 3191 3735 V -34 w(img)p 3371 3735 V 33 w(param)4053 3735 y -SDict begin H.S end - 4053 3735 -a Fj(43)4144 3676 y -SDict begin H.R end - 4144 3676 a 4144 3735 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 4144 3735 -a 2912 3848 a Fj(\014ts)p 3039 3848 28 4 v 32 w(get)p -3191 3848 V 34 w(img)p 3371 3848 V 33 w(size)4053 3848 -y -SDict begin H.S end - 4053 3848 a Fj(43)4144 3789 y -SDict begin H.R end - 4144 3789 a 4144 3848 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 4144 3848 a 2912 3961 a Fj(\014ts)p 3039 3961 28 4 -v 32 w(get)p 3191 3961 V 34 w(img)p 3371 3961 V 33 w(t)m(yp)s(e)4053 -3961 y -SDict begin H.S end - 4053 3961 a Fj(43)4144 3902 y -SDict begin H.R end - 4144 3902 a 4144 -3961 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 4144 3961 a 2912 4074 a Fj(\014ts)p 3039 4074 -28 4 v 32 w(get)p 3191 4074 V 34 w(in)m(tt)m(yp)s(e)4053 -4074 y -SDict begin H.S end - 4053 4074 a Fj(69)4144 4015 y -SDict begin H.R end - 4144 4015 a 4144 -4074 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4144 4074 a 2912 4187 a Fj(\014ts)p 3039 4187 -28 4 v 32 w(get)p 3191 4187 V 34 w(k)m(ey)p 3358 4187 -V 34 w(strlen)4053 4187 y -SDict begin H.S end - 4053 4187 a Fj(39)4144 4128 -y -SDict begin H.R end - 4144 4128 a 4144 4187 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 4144 4187 a 2912 4299 a Fj(\014ts)p -3039 4299 28 4 v 32 w(get)p 3191 4299 V 34 w(k)m(eyclass)4053 -4299 y -SDict begin H.S end - 4053 4299 a Fj(69)4144 4241 y -SDict begin H.R end - 4144 4241 a 4144 -4299 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4144 4299 a 2912 4412 a Fj(\014ts)p 3039 4412 -28 4 v 32 w(get)p 3191 4412 V 34 w(k)m(eyname)4053 4412 -y -SDict begin H.S end - 4053 4412 a Fj(68)4144 4354 y -SDict begin H.R end - 4144 4354 a 4144 4412 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4144 4412 a 2912 4525 a Fj(\014ts)p 3039 4525 28 4 -v 32 w(get)p 3191 4525 V 34 w(k)m(eyt)m(yp)s(e)4053 4525 -y -SDict begin H.S end - 4053 4525 a Fj(69)4144 4467 y -SDict begin H.R end - 4144 4467 a 4144 4525 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4144 4525 a 2912 4638 a Fj(\014ts)p 3039 4638 28 4 -v 32 w(get)p 3191 4638 V 34 w(noise)p 3422 4638 V 33 -w(bits)4053 4638 y -SDict begin H.S end - 4053 4638 a Fj(50)4144 4580 y -SDict begin H.R end - 4144 -4580 a 4144 4638 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.6) cvn H.B /ANN pdfmark end - 4144 4638 a 2912 4751 a Fj(\014ts)p -3039 4751 28 4 v 32 w(get)p 3191 4751 V 34 w(n)m(um)p -3400 4751 V 32 w(cols)4053 4751 y -SDict begin H.S end - 4053 4751 a Fj(53)4144 -4692 y -SDict begin H.R end - 4144 4692 a 4144 4751 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 4144 4751 a 2912 4864 -a Fj(\014ts)p 3039 4864 28 4 v 32 w(get)p 3191 4864 V -34 w(n)m(um)p 3400 4864 V 32 w(groups)4053 4864 y -SDict begin H.S end - 4053 -4864 a Fj(93)4144 4805 y -SDict begin H.R end - 4144 4805 a 4144 4864 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 4144 -4864 a 2912 4977 a Fj(\014ts)p 3039 4977 28 4 v 32 w(get)p -3191 4977 V 34 w(n)m(um)p 3400 4977 V 32 w(hdus)4053 -4977 y -SDict begin H.S end - 4053 4977 a Fj(36)4144 4918 y -SDict begin H.R end - 4144 4918 a 4144 -4977 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 4144 4977 a 2912 5090 a Fj(\014ts)p 3039 5090 -28 4 v 32 w(get)p 3191 5090 V 34 w(n)m(um)p 3400 5090 -V 32 w(mem)m(b)s(ers)4053 5090 y -SDict begin H.S end - 4053 5090 a Fj(92)4144 -5031 y -SDict begin H.R end - 4144 5031 a 4144 5090 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 4144 5090 a 2912 5203 -a Fj(\014ts)p 3039 5203 28 4 v 32 w(get)p 3191 5203 V -34 w(n)m(um)p 3400 5203 V 32 w(ro)m(ws)4053 5203 y -SDict begin H.S end - 4053 -5203 a Fj(53)4144 5144 y -SDict begin H.R end - 4144 5144 a 4144 5203 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 4144 -5203 a 2912 5316 a Fj(\014ts)p 3039 5316 28 4 v 32 w(get)p -3191 5316 V 34 w(ro)m(wsize)4008 5316 y -SDict begin H.S end - 4008 5316 a Fj(116)4144 -5257 y -SDict begin H.R end - 4144 5257 a 4144 5316 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 4144 5316 a 2912 5429 -a Fj(\014ts)p 3039 5429 28 4 v 32 w(get)p 3191 5429 V -34 w(system)p 3496 5429 V 33 w(time)4053 5429 y -SDict begin H.S end - 4053 -5429 a Fj(65)4144 5370 y -SDict begin H.R end - 4144 5370 a 4144 5429 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 4144 -5429 a 2912 5541 a Fj(\014ts)p 3039 5541 28 4 v 32 w(get)p -3191 5541 V 34 w(tb)s(col)4053 5541 y -SDict begin H.S end - 4053 5541 a Fj(71)4144 -5483 y -SDict begin H.R end - 4144 5483 a 4144 5541 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4144 5541 a 2912 5654 -a Fj(\014ts)p 3039 5654 28 4 v 32 w(get)p 3191 5654 V -34 w(tile)p 3350 5654 V 34 w(dim)4053 5654 y -SDict begin H.S end - 4053 5654 -a Fj(50)4144 5596 y -SDict begin H.R end - 4144 5596 a 4144 5654 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.6) cvn H.B /ANN pdfmark end - 4144 5654 -a 1882 5942 a Fj(173)p eop end -%%Page: 174 182 -TeXDict begin 174 181 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.174) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(174)2084 -b Fh(APPENDIX)31 b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)50 -543 y Fj(\014ts)p 177 543 28 4 v 32 w(get)p 329 543 V -34 w(timeout)1264 543 y -SDict begin H.S end - 1264 543 a Fj(99)1355 484 y -SDict begin H.R end - 1355 -484 a 1355 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 1355 543 a 50 656 a Fj(\014ts)p 177 -656 28 4 v 32 w(get)p 329 656 V 34 w(v)m(ersion)1264 -656 y -SDict begin H.S end - 1264 656 a Fj(66)1355 597 y -SDict begin H.R end - 1355 597 a 1355 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 656 a 50 769 a Fj(\014ts)p 177 769 28 4 v 32 w(hdr2str)1118 -769 y -SDict begin H.S end - 1118 769 a Fj(40)1208 710 y -SDict begin H.R end - 1208 710 a 1208 769 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1208 769 a Fj(,)1264 769 y -SDict begin H.S end - 1264 769 a Fj(86)1355 710 -y -SDict begin H.R end - 1355 710 a 1355 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (chapter.7) cvn H.B /ANN pdfmark end - 1355 769 a 50 882 a Fj(\014ts)p -177 882 28 4 v 32 w(init)p 345 882 V 33 w(h)m(ttps)1264 -882 y -SDict begin H.S end - 1264 882 a Fj(99)1355 823 y -SDict begin H.R end - 1355 823 a 1355 882 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1355 882 a 50 995 a Fj(\014ts)p 177 995 28 4 v 32 w(insert)p -432 995 V 33 w(atbl)1219 995 y -SDict begin H.S end - 1219 995 a Fj(101)1355 -936 y -SDict begin H.R end - 1355 936 a 1355 995 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1355 995 a 50 1107 a Fj(\014ts)p -177 1107 28 4 v 32 w(insert)p 432 1107 V 33 w(btbl)1219 -1107 y -SDict begin H.S end - 1219 1107 a Fj(101)1355 1049 y -SDict begin H.R end - 1355 1049 a 1355 -1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1355 1107 a 50 1220 a Fj(\014ts)p 177 1220 28 -4 v 32 w(insert)p 432 1220 V 33 w(col)1264 1220 y -SDict begin H.S end - 1264 -1220 a Fj(56)1355 1162 y -SDict begin H.R end - 1355 1162 a 1355 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1355 -1220 a 50 1333 a Fj(\014ts)p 177 1333 28 4 v 32 w(insert)p -432 1333 V 33 w(cols)1264 1333 y -SDict begin H.S end - 1264 1333 a Fj(56)1355 -1275 y -SDict begin H.R end - 1355 1275 a 1355 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1355 1333 a 50 1446 a -Fj(\014ts)p 177 1446 28 4 v 32 w(insert)p 432 1446 V -33 w(group)1264 1446 y -SDict begin H.S end - 1264 1446 a Fj(90)1355 1388 y -SDict begin H.R end - -1355 1388 a 1355 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 1355 1446 a 50 1559 a Fj(\014ts)p -177 1559 28 4 v 32 w(insert)p 432 1559 V 33 w(img)1219 -1559 y -SDict begin H.S end - 1219 1559 a Fj(100)1355 1501 y -SDict begin H.R end - 1355 1501 a 1355 -1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1355 1559 a 50 1672 a Fj(\014ts)p 177 1672 28 -4 v 32 w(insert)p 432 1672 V 33 w(k)m(ey)p 598 1672 V -34 w(n)m(ull)1219 1672 y -SDict begin H.S end - 1219 1672 a Fj(107)1355 1613 -y -SDict begin H.R end - 1355 1613 a 1355 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 1355 1672 a 50 1785 a Fj(\014ts)p -177 1785 28 4 v 32 w(insert)p 432 1785 V 33 w(k)m(ey)p -598 1785 V 34 w(TYP)1219 1785 y -SDict begin H.S end - 1219 1785 a Fj(107)1355 -1726 y -SDict begin H.R end - 1355 1726 a 1355 1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 1355 1785 a 50 1898 a -Fj(\014ts)p 177 1898 28 4 v 32 w(insert)p 432 1898 V -33 w(record)1219 1898 y -SDict begin H.S end - 1219 1898 a Fj(107)1355 1839 -y -SDict begin H.R end - 1355 1839 a 1355 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 1355 1898 a 50 2011 a Fj(\014ts)p -177 2011 28 4 v 32 w(insert)p 432 2011 V 33 w(ro)m(ws)1264 -2011 y -SDict begin H.S end - 1264 2011 a Fj(56)1355 1952 y -SDict begin H.R end - 1355 1952 a 1355 -2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1355 2011 a 50 2124 a Fj(\014ts)p 177 2124 28 -4 v 32 w(is)p 270 2124 V 33 w(reen)m(tran)m(t)1264 2124 -y -SDict begin H.S end - 1264 2124 a Fj(76)1355 2065 y -SDict begin H.R end - 1355 2065 a 1355 2124 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 2124 a 50 2237 a Fj(\014ts)p 177 2237 28 4 v 32 -w(iterate)p 465 2237 V 35 w(data)1264 2237 y -SDict begin H.S end - 1264 2237 -a Fj(83)1355 2178 y -SDict begin H.R end - 1355 2178 a 1355 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.6.4) cvn H.B /ANN pdfmark end - 1355 2237 -a 50 2349 a Fj(\014ts)p 177 2349 28 4 v 32 w(mak)m(e)p -415 2349 V 34 w(hist[d])1264 2349 y -SDict begin H.S end - 1264 2349 a Fj(63)1355 -2291 y -SDict begin H.R end - 1355 2291 a 1355 2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.6) cvn H.B /ANN pdfmark end - 1355 2349 a 50 2462 a -Fj(\014ts)p 177 2462 28 4 v 32 w(mak)m(e)p 415 2462 V -34 w(k)m(ey)1264 2462 y -SDict begin H.S end - 1264 2462 a Fj(68)1355 2404 y -SDict begin H.R end - -1355 2404 a 1355 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 2462 a 50 2575 a Fj(\014ts)p -177 2575 28 4 v 32 w(mak)m(e)p 415 2575 V 34 w(k)m(eyn)1264 -2575 y -SDict begin H.S end - 1264 2575 a Fj(68)1355 2517 y -SDict begin H.R end - 1355 2517 a 1355 -2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 2575 a 50 2688 a Fj(\014ts)p 177 2688 28 -4 v 32 w(mak)m(e)p 415 2688 V 34 w(nk)m(ey)1264 2688 -y -SDict begin H.S end - 1264 2688 a Fj(68)1355 2630 y -SDict begin H.R end - 1355 2630 a 1355 2688 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 2688 a 50 2801 a Fj(\014ts)p 177 2801 28 4 v 32 -w(merge)p 446 2801 V 34 w(groups)1264 2801 y -SDict begin H.S end - 1264 2801 -a Fj(91)1355 2743 y -SDict begin H.R end - 1355 2743 a 1355 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 1355 2801 -a 50 2914 a Fj(\014ts)p 177 2914 28 4 v 32 w(mo)s(dify)p -485 2914 V 32 w(card)1219 2914 y -SDict begin H.S end - 1219 2914 a Fj(109)1355 -2855 y -SDict begin H.R end - 1355 2855 a 1355 2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 1355 2914 a 50 3027 a -Fj(\014ts)p 177 3027 28 4 v 32 w(mo)s(dify)p 485 3027 -V 32 w(commen)m(t)1264 3027 y -SDict begin H.S end - 1264 3027 a Fj(42)1355 -2968 y -SDict begin H.R end - 1355 2968 a 1355 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1355 3027 a 50 3140 a -Fj(\014ts)p 177 3140 28 4 v 32 w(mo)s(dify)p 485 3140 -V 32 w(k)m(ey)p 650 3140 V 34 w(n)m(ull)1219 3140 y -SDict begin H.S end - 1219 -3140 a Fj(110)1355 3081 y -SDict begin H.R end - 1355 3081 a 1355 3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 1355 -3140 a 50 3253 a Fj(\014ts)p 177 3253 28 4 v 32 w(mo)s(dify)p -485 3253 V 32 w(k)m(ey)p 650 3253 V 34 w(TYP)1219 3253 -y -SDict begin H.S end - 1219 3253 a Fj(109)1355 3194 y -SDict begin H.R end - 1355 3194 a 1355 3253 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 1355 3253 a 50 3366 a Fj(\014ts)p 177 3366 28 4 v 32 -w(mo)s(dify)p 485 3366 V 32 w(name)1264 3366 y -SDict begin H.S end - 1264 3366 -a Fj(42)1355 3307 y -SDict begin H.R end - 1355 3307 a 1355 3366 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1355 3366 -a 50 3479 a Fj(\014ts)p 177 3479 28 4 v 32 w(mo)s(dify)p -485 3479 V 32 w(record)1219 3479 y -SDict begin H.S end - 1219 3479 a Fj(109)1355 -3420 y -SDict begin H.R end - 1355 3420 a 1355 3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 1355 3479 a 50 3591 a -Fj(\014ts)p 177 3591 28 4 v 32 w(mo)s(dify)p 485 3591 -V 32 w(v)m(ector)p 758 3591 V 35 w(len)1264 3591 y -SDict begin H.S end - 1264 -3591 a Fj(57)1355 3533 y -SDict begin H.R end - 1355 3533 a 1355 3591 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 1355 -3591 a 50 3704 a Fj(\014ts)p 177 3704 28 4 v 32 w(mo)m(v)-5 -b(abs)p 502 3704 V 33 w(hdu)1264 3704 y -SDict begin H.S end - 1264 3704 a Fj(36)1355 -3646 y -SDict begin H.R end - 1355 3646 a 1355 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1355 3704 a 50 3817 a -Fj(\014ts)p 177 3817 28 4 v 32 w(mo)m(vnam)p 547 3817 -V 33 w(hdu)1264 3817 y -SDict begin H.S end - 1264 3817 a Fj(36)1355 3759 y -SDict begin H.R end - -1355 3759 a 1355 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1355 3817 a 50 3930 a Fj(\014ts)p -177 3930 28 4 v 32 w(mo)m(vrel)p 476 3930 V 34 w(hdu)1264 -3930 y -SDict begin H.S end - 1264 3930 a Fj(36)1355 3872 y -SDict begin H.R end - 1355 3872 a 1355 -3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1355 3930 a 50 4043 a Fj(\014ts)p 177 4043 28 -4 v 32 w(n)m(ull)p 358 4043 V 33 w(c)m(hec)m(k)1264 4043 -y -SDict begin H.S end - 1264 4043 a Fj(68)1355 3985 y -SDict begin H.R end - 1355 3985 a 1355 4043 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 4043 a 50 4156 a Fj(\014ts)p 177 4156 28 4 v 32 -w(op)s(en)p 399 4156 V 32 w(data)1264 4156 y -SDict begin H.S end - 1264 4156 -a Fj(32)1355 4097 y -SDict begin H.R end - 1355 4097 a 1355 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1355 4156 -a 50 4269 a Fj(\014ts)p 177 4269 28 4 v 32 w(op)s(en)p -399 4269 V 32 w(disk\014le)1264 4269 y -SDict begin H.S end - 1264 4269 a Fj(32)1355 -4210 y -SDict begin H.R end - 1355 4210 a 1355 4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1355 4269 a 50 4382 a -Fj(\014ts)p 177 4382 28 4 v 32 w(op)s(en)p 399 4382 V -32 w(extlist)1264 4382 y -SDict begin H.S end - 1264 4382 a Fj(32)1355 4323 -y -SDict begin H.R end - 1355 4323 a 1355 4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1355 4382 a 50 4495 a Fj(\014ts)p -177 4495 28 4 v 32 w(op)s(en)p 399 4495 V 32 w(\014le)1264 -4495 y -SDict begin H.S end - 1264 4495 a Fj(32)1355 4436 y -SDict begin H.R end - 1355 4436 a 1355 -4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1355 4495 a 50 4608 a Fj(\014ts)p 177 4608 28 -4 v 32 w(op)s(en)p 399 4608 V 32 w(image)1264 4608 y -SDict begin H.S end - -1264 4608 a Fj(32)1355 4549 y -SDict begin H.R end - 1355 4549 a 1355 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - -1355 4608 a 50 4721 a Fj(\014ts)p 177 4721 28 4 v 32 -w(op)s(en)p 399 4721 V 32 w(table)1264 4721 y -SDict begin H.S end - 1264 4721 -a Fj(32)1355 4662 y -SDict begin H.R end - 1355 4662 a 1355 4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 1355 4721 -a 50 4833 a Fj(\014ts)p 177 4833 28 4 v 32 w(op)s(en)p -399 4833 V 32 w(group)1264 4833 y -SDict begin H.S end - 1264 4833 a Fj(92)1355 -4775 y -SDict begin H.R end - 1355 4775 a 1355 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 1355 4833 a 50 4946 a -Fj(\014ts)p 177 4946 28 4 v 32 w(op)s(en)p 399 4946 V -32 w(mem)m(b)s(er)1264 4946 y -SDict begin H.S end - 1264 4946 a Fj(93)1355 -4888 y -SDict begin H.R end - 1355 4888 a 1355 4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 1355 4946 a 50 5059 a -Fj(\014ts)p 177 5059 28 4 v 32 w(op)s(en)p 399 5059 V -32 w(mem\014le)1264 5059 y -SDict begin H.S end - 1264 5059 a Fj(95)1355 5001 -y -SDict begin H.R end - 1355 5001 a 1355 5059 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1355 5059 a 50 5172 a Fj(\014ts)p -177 5172 28 4 v 32 w(parse)p 417 5172 V 33 w(extn)m(um)1264 -5172 y -SDict begin H.S end - 1264 5172 a Fj(97)1355 5114 y -SDict begin H.R end - 1355 5114 a 1355 -5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1355 5172 a 50 5285 a Fj(\014ts)p 177 5285 28 -4 v 32 w(parse)p 417 5285 V 33 w(input)p 663 5285 V 32 -w(\014lename)1264 5285 y -SDict begin H.S end - 1264 5285 a Fj(97)1355 5227 -y -SDict begin H.R end - 1355 5227 a 1355 5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1355 5285 a 50 5398 a Fj(\014ts)p -177 5398 28 4 v 32 w(parse)p 417 5398 V 33 w(input)p -663 5398 V 32 w(url)1264 5398 y -SDict begin H.S end - 1264 5398 a Fj(97)1355 -5339 y -SDict begin H.R end - 1355 5339 a 1355 5398 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1355 5398 a 50 5511 a -Fj(\014ts)p 177 5511 28 4 v 32 w(parse)p 417 5511 V 33 -w(range)1264 5511 y -SDict begin H.S end - 1264 5511 a Fj(75)1355 5452 y -SDict begin H.R end - 1355 -5452 a 1355 5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 5511 a 50 5624 a Fj(\014ts)p -177 5624 28 4 v 32 w(parse)p 417 5624 V 33 w(ro)s(otname)1264 -5624 y -SDict begin H.S end - 1264 5624 a Fj(98)1355 5565 y -SDict begin H.R end - 1355 5565 a 1355 -5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1355 5624 a 50 5737 a Fj(\014ts)p 177 5737 28 -4 v 32 w(parse)p 417 5737 V 33 w(template)1264 5737 y -SDict begin H.S end - -1264 5737 a Fj(71)1355 5678 y -SDict begin H.R end - 1355 5678 a 1355 5737 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - -1355 5737 a 50 5850 a Fj(\014ts)p 177 5850 28 4 v 32 -w(parse)p 417 5850 V 33 w(v)g(alue)1264 5850 y -SDict begin H.S end - 1264 5850 -a Fj(68)1355 5791 y -SDict begin H.R end - 1355 5791 a 1355 5850 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1355 5850 -a 1475 543 a Fj(\014ts)p 1602 543 28 4 v 32 w(pix)p 1758 -543 V 33 w(to)p 1871 543 V 33 w(w)m(orld)2772 543 y -SDict begin H.S end - 2772 -543 a Fj(87)2862 484 y -SDict begin H.R end - 2862 484 a 2862 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 2862 543 -a 1475 656 a Fj(\014ts)p 1602 656 28 4 v 32 w(read)p -1806 656 V 33 w(2d)p 1935 656 V 33 w(TYP)2726 656 y -SDict begin H.S end - 2726 -656 a Fj(115)2862 597 y -SDict begin H.R end - 2862 597 a 2862 656 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 656 -a 1475 769 a Fj(\014ts)p 1602 769 28 4 v 32 w(read)p -1806 769 V 33 w(3d)p 1935 769 V 33 w(TYP)2726 769 y -SDict begin H.S end - 2726 -769 a Fj(115)2862 710 y -SDict begin H.R end - 2862 710 a 2862 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 769 -a 1475 882 a Fj(\014ts)p 1602 882 28 4 v 32 w(read)p -1806 882 V 33 w(atblhdr)2726 882 y -SDict begin H.S end - 2726 882 a Fj(104)2862 -823 y -SDict begin H.R end - 2862 823 a 2862 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2862 882 a 1475 995 a Fj(\014ts)p -1602 995 28 4 v 32 w(read)p 1806 995 V 33 w(btblhdr)2726 -995 y -SDict begin H.S end - 2726 995 a Fj(104)2862 936 y -SDict begin H.R end - 2862 936 a 2862 995 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2862 995 a 1475 1107 a Fj(\014ts)p 1602 1107 28 4 v -32 w(read)p 1806 1107 V 33 w(card)2772 1107 y -SDict begin H.S end - 2772 1107 -a Fj(38)2862 1049 y -SDict begin H.R end - 2862 1049 a 2862 1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 1107 -a 1475 1220 a Fj(\014ts)p 1602 1220 28 4 v 32 w(read)p -1806 1220 V 33 w(col)2772 1220 y -SDict begin H.S end - 2772 1220 a Fj(59)2862 -1162 y -SDict begin H.R end - 2862 1162 a 2862 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 2862 1220 a 1475 1333 -a Fj(\014ts)p 1602 1333 28 4 v 32 w(read)p 1806 1333 -V 33 w(col)p 1949 1333 V 34 w(bit)p 2094 1333 V 2726 -1333 a -SDict begin H.S end - 2726 1333 a Fj(121)2862 1275 y -SDict begin H.R end - 2862 1275 a 2862 -1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 1333 a 1475 1446 a Fj(\014ts)p 1602 1446 -28 4 v 32 w(read)p 1806 1446 V 33 w(col)p 1949 1446 V -34 w(TYP)2726 1446 y -SDict begin H.S end - 2726 1446 a Fj(119)2862 1388 y -SDict begin H.R end - 2862 -1388 a 2862 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 1446 a 1475 1559 a Fj(\014ts)p -1602 1559 28 4 v 32 w(read)p 1806 1559 V 33 w(coln)m(ull)2772 -1559 y -SDict begin H.S end - 2772 1559 a Fj(59)2862 1501 y -SDict begin H.R end - 2862 1501 a 2862 -1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 2862 1559 a 1475 1672 a Fj(\014ts)p 1602 1672 -28 4 v 32 w(read)p 1806 1672 V 33 w(coln)m(ull)p 2098 -1672 V 34 w(TYP)2726 1672 y -SDict begin H.S end - 2726 1672 a Fj(119)2862 1613 -y -SDict begin H.R end - 2862 1613 a 2862 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 1672 a 1475 1785 a Fj(\014ts)p -1602 1785 28 4 v 32 w(read)p 1806 1785 V 33 w(descript)2726 -1785 y -SDict begin H.S end - 2726 1785 a Fj(121)2862 1726 y -SDict begin H.R end - 2862 1726 a 2862 -1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 1785 a 1475 1898 a Fj(\014ts)p 1602 1898 -28 4 v 32 w(read)p 1806 1898 V 33 w(descripts)2726 1898 -y -SDict begin H.S end - 2726 1898 a Fj(121)2862 1839 y -SDict begin H.R end - 2862 1839 a 2862 1898 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 1898 a 1475 2011 a Fj(\014ts)p 1602 2011 28 4 -v 32 w(read)p 1806 2011 V 33 w(errmsg)2772 2011 y -SDict begin H.S end - 2772 -2011 a Fj(32)2862 1952 y -SDict begin H.R end - 2862 1952 a 2862 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 2862 -2011 a 1475 2124 a Fj(\014ts)p 1602 2124 28 4 v 32 w(read)p -1806 2124 V 33 w(ext)2726 2124 y -SDict begin H.S end - 2726 2124 a Fj(101)2862 -2065 y -SDict begin H.R end - 2862 2065 a 2862 2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2862 2124 a 1475 2237 -a Fj(\014ts)p 1602 2237 28 4 v 32 w(read)p 1806 2237 -V 33 w(grppar)p 2103 2237 V 32 w(TYP)2726 2237 y -SDict begin H.S end - 2726 -2237 a Fj(114)2862 2178 y -SDict begin H.R end - 2862 2178 a 2862 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 -2237 a 1475 2349 a Fj(\014ts)p 1602 2349 28 4 v 32 w(read)p -1806 2349 V 33 w(img)2726 2349 y -SDict begin H.S end - 2726 2349 a Fj(114)2862 -2291 y -SDict begin H.R end - 2862 2291 a 2862 2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 2349 a 1475 2462 -a Fj(\014ts)p 1602 2462 28 4 v 32 w(read)p 1806 2462 -V 33 w(img)p 1985 2462 V 33 w(co)s(ord)2772 2462 y -SDict begin H.S end - 2772 -2462 a Fj(87)2862 2404 y -SDict begin H.R end - 2862 2404 a 2862 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 2862 -2462 a 1475 2575 a Fj(\014ts)p 1602 2575 28 4 v 32 w(read)p -1806 2575 V 33 w(img)p 1985 2575 V 33 w(TYP)2726 2575 -y -SDict begin H.S end - 2726 2575 a Fj(114)2862 2517 y -SDict begin H.R end - 2862 2517 a 2862 2575 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 2575 a 1475 2688 a Fj(\014ts)p 1602 2688 28 4 -v 32 w(read)p 1806 2688 V 33 w(imghdr)2726 2688 y -SDict begin H.S end - 2726 -2688 a Fj(104)2862 2630 y -SDict begin H.R end - 2862 2630 a 2862 2688 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2862 -2688 a 1475 2801 a Fj(\014ts)p 1602 2801 28 4 v 32 w(read)p -1806 2801 V 33 w(imgn)m(ull)2726 2801 y -SDict begin H.S end - 2726 2801 a Fj(114)2862 -2743 y -SDict begin H.R end - 2862 2743 a 2862 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 2801 a 1475 2914 -a Fj(\014ts)p 1602 2914 28 4 v 32 w(read)p 1806 2914 -V 33 w(imgn)m(ull)p 2134 2914 V 33 w(TYP)2726 2914 y -SDict begin H.S end - -2726 2914 a Fj(114)2862 2855 y -SDict begin H.R end - 2862 2855 a 2862 2914 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2862 2914 a 1475 3027 a Fj(\014ts)p 1602 3027 28 4 -v 32 w(read)p 1806 3027 V 33 w(k)m(ey)2772 3027 y -SDict begin H.S end - 2772 -3027 a Fj(38)2862 2968 y -SDict begin H.R end - 2862 2968 a 2862 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 -3027 a 1475 3140 a Fj(\014ts)p 1602 3140 28 4 v 32 w(read)p -1806 3140 V 33 w(k)m(ey)p 1972 3140 V 33 w(longstr)2726 -3140 y -SDict begin H.S end - 2726 3140 a Fj(108)2862 3081 y -SDict begin H.R end - 2862 3081 a 2862 -3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 2862 3140 a 1475 3253 a Fj(\014ts)p 1602 3253 -28 4 v 32 w(read)p 1806 3253 V 33 w(k)m(ey)p 1972 3253 -V 33 w(triple)2726 3253 y -SDict begin H.S end - 2726 3253 a Fj(109)2862 3194 -y -SDict begin H.R end - 2862 3194 a 2862 3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 2862 3253 a 1475 3366 a Fj(\014ts)p -1602 3366 28 4 v 32 w(read)p 1806 3366 V 33 w(k)m(ey)p -1972 3366 V 33 w(unit)2772 3366 y -SDict begin H.S end - 2772 3366 a Fj(40)2862 -3307 y -SDict begin H.R end - 2862 3307 a 2862 3366 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 3366 a 1475 3479 -a Fj(\014ts)p 1602 3479 28 4 v 32 w(read)p 1806 3479 -V 33 w(k)m(ey)p 1972 3479 V 33 w(TYP)2726 3479 y -SDict begin H.S end - 2726 -3479 a Fj(108)2862 3420 y -SDict begin H.R end - 2862 3420 a 2862 3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 2862 -3479 a 1475 3591 a Fj(\014ts)p 1602 3591 28 4 v 32 w(read)p -1806 3591 V 33 w(k)m(eyn)2772 3591 y -SDict begin H.S end - 2772 3591 a Fj(39)2862 -3533 y -SDict begin H.R end - 2862 3533 a 2862 3591 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 3591 a 1475 3704 -a Fj(\014ts)p 1602 3704 28 4 v 32 w(read)p 1806 3704 -V 33 w(k)m(eys)p 2008 3704 V 33 w(TYP)2726 3704 y -SDict begin H.S end - 2726 -3704 a Fj(108)2862 3646 y -SDict begin H.R end - 2862 3646 a 2862 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 2862 -3704 a 1475 3817 a Fj(\014ts)p 1602 3817 28 4 v 32 w(read)p -1806 3817 V 33 w(k)m(eyw)m(ord)2772 3817 y -SDict begin H.S end - 2772 3817 -a Fj(38)2862 3759 y -SDict begin H.R end - 2862 3759 a 2862 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 3817 -a 1475 3930 a Fj(\014ts)p 1602 3930 28 4 v 32 w(read)p -1806 3930 V 33 w(pix)2772 3930 y -SDict begin H.S end - 2772 3930 a Fj(46)2862 -3872 y -SDict begin H.R end - 2862 3872 a 2862 3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 2862 3930 a 1475 4043 -a Fj(\014ts)p 1602 4043 28 4 v 32 w(read)p 1806 4043 -V 33 w(pixn)m(ull)2772 4043 y -SDict begin H.S end - 2772 4043 a Fj(46)2862 -3985 y -SDict begin H.R end - 2862 3985 a 2862 4043 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 2862 4043 a 1475 4156 -a Fj(\014ts)p 1602 4156 28 4 v 32 w(read)p 1806 4156 -V 33 w(record)2772 4156 y -SDict begin H.S end - 2772 4156 a Fj(39)2862 4097 -y -SDict begin H.R end - 2862 4097 a 2862 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 4156 a 1475 4269 a Fj(\014ts)p -1602 4269 28 4 v 32 w(read)p 1806 4269 V 33 w(str)2772 -4269 y -SDict begin H.S end - 2772 4269 a Fj(38)2862 4210 y -SDict begin H.R end - 2862 4210 a 2862 -4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 4269 a 1475 4382 a Fj(\014ts)p 1602 4382 -28 4 v 32 w(read)p 1806 4382 V 33 w(string)p 2067 4382 -V 33 w(k)m(ey)2772 4382 y -SDict begin H.S end - 2772 4382 a Fj(39)2862 4323 -y -SDict begin H.R end - 2862 4323 a 2862 4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2862 4382 a 1475 4495 a Fj(\014ts)p -1602 4495 28 4 v 32 w(read)p 1806 4495 V 33 w(subset)2772 -4495 y -SDict begin H.S end - 2772 4495 a Fj(46)2862 4436 y -SDict begin H.R end - 2862 4436 a 2862 -4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 2862 4495 a 1475 4608 a Fj(\014ts)p 1602 4608 -28 4 v 32 w(read)p 1806 4608 V 33 w(subset)p 2088 4608 -V 32 w(TYP)2559 4608 y -SDict begin H.S end - 2559 4608 a Fj(115)2696 4549 y -SDict begin H.R end - -2696 4549 a 2696 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2696 4608 a 2726 4608 a -SDict begin H.S end - 2726 -4608 a Fj(120)2862 4549 y -SDict begin H.R end - 2862 4549 a 2862 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 -4608 a 1475 4721 a Fj(\014ts)p 1602 4721 28 4 v 32 w(read)p -1806 4721 V 33 w(subsetn)m(ull)p 2237 4721 V 32 w(TYP)2559 -4721 y -SDict begin H.S end - 2559 4721 a Fj(115)2696 4662 y -SDict begin H.R end - 2696 4662 a 2696 -4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2696 4721 a 2726 4721 a -SDict begin H.S end - 2726 4721 a Fj(120)2862 -4662 y -SDict begin H.R end - 2862 4662 a 2862 4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2862 4721 a 1475 4833 -a Fj(\014ts)p 1602 4833 28 4 v 32 w(read)p 1806 4833 -V 33 w(tbl)p 1950 4833 V 33 w(co)s(ord)2772 4833 y -SDict begin H.S end - 2772 -4833 a Fj(87)2862 4775 y -SDict begin H.R end - 2862 4775 a 2862 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 2862 -4833 a 1475 4946 a Fj(\014ts)p 1602 4946 28 4 v 32 w(read)p -1806 4946 V 33 w(tblb)m(ytes)2726 4946 y -SDict begin H.S end - 2726 4946 a -Fj(117)2862 4888 y -SDict begin H.R end - 2862 4888 a 2862 4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.2) cvn H.B /ANN pdfmark end - 2862 4946 -a 1475 5059 a Fj(\014ts)p 1602 5059 28 4 v 32 w(read)p -1806 5059 V 33 w(tdim)2772 5059 y -SDict begin H.S end - 2772 5059 a Fj(55)2862 -5001 y -SDict begin H.R end - 2862 5001 a 2862 5059 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 2862 5059 a 1475 5172 -a Fj(\014ts)p 1602 5172 28 4 v 32 w(read)p 1806 5172 -V 33 w(w)m(cstab)2772 5172 y -SDict begin H.S end - 2772 5172 a Fj(86)2862 5114 -y -SDict begin H.R end - 2862 5114 a 2862 5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (chapter.7) cvn H.B /ANN pdfmark end - 2862 5172 a 1475 5285 a Fj(\014ts)p -1602 5285 28 4 v 32 w(rebin)p 1837 5285 V 32 w(w)m(cs[d])2772 -5285 y -SDict begin H.S end - 2772 5285 a Fj(63)2862 5227 y -SDict begin H.R end - 2862 5227 a 2862 -5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.6) cvn H.B /ANN pdfmark end - 2862 5285 a 1475 5398 a Fj(\014ts)p 1602 5398 -28 4 v 32 w(remo)m(v)m(e)p 1913 5398 V 35 w(group)2772 -5398 y -SDict begin H.S end - 2772 5398 a Fj(91)2862 5339 y -SDict begin H.R end - 2862 5339 a 2862 -5398 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2862 5398 a 1475 5511 a Fj(\014ts)p 1602 5511 -28 4 v 32 w(remo)m(v)m(e)p 1913 5511 V 35 w(mem)m(b)s(er)2772 -5511 y -SDict begin H.S end - 2772 5511 a Fj(94)2862 5452 y -SDict begin H.R end - 2862 5452 a 2862 -5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 2862 5511 a 1475 5624 a Fj(\014ts)p 1602 5624 -28 4 v 32 w(reop)s(en)p 1900 5624 V 32 w(\014le)2772 -5624 y -SDict begin H.S end - 2772 5624 a Fj(96)2862 5565 y -SDict begin H.R end - 2862 5565 a 2862 -5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2862 5624 a 1475 5737 a Fj(\014ts)p 1602 5737 -28 4 v 32 w(rep)s(ort)p 1880 5737 V 32 w(error)2772 5737 -y -SDict begin H.S end - 2772 5737 a Fj(32)2862 5678 y -SDict begin H.R end - 2862 5678 a 2862 5737 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 2862 5737 a 1475 5850 a Fj(\014ts)p 1602 5850 28 4 -v 32 w(resize)p 1851 5850 V 34 w(img)2726 5850 y -SDict begin H.S end - 2726 -5850 a Fj(101)2862 5791 y -SDict begin H.R end - 2862 5791 a 2862 5850 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2862 -5850 a 2982 543 a Fj(\014ts)p 3109 543 28 4 v 33 w(rms)p -3290 543 V 32 w(\015oat)4243 543 y -SDict begin H.S end - 4243 543 a Fj(75)4334 -484 y -SDict begin H.R end - 4334 484 a 4334 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 543 a 2982 656 a Fj(\014ts)p -3109 656 28 4 v 33 w(rms)p 3290 656 V 32 w(short)4243 -656 y -SDict begin H.S end - 4243 656 a Fj(75)4334 597 y -SDict begin H.R end - 4334 597 a 4334 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 656 a 2982 769 a Fj(\014ts)p 3109 769 28 4 v 33 -w(select)p 3358 769 V 34 w(ro)m(ws)4243 769 y -SDict begin H.S end - 4243 769 -a Fj(60)4334 710 y -SDict begin H.R end - 4334 710 a 4334 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 4334 769 a 2982 -882 a Fj(\014ts)p 3109 882 28 4 v 33 w(set)p 3253 882 -V 33 w(atbln)m(ull)4198 882 y -SDict begin H.S end - 4198 882 a Fj(111)4334 -823 y -SDict begin H.R end - 4334 823 a 4334 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 4334 882 a 2982 995 a Fj(\014ts)p -3109 995 28 4 v 33 w(set)p 3253 995 V 33 w(bscale)4198 -995 y -SDict begin H.S end - 4198 995 a Fj(111)4334 936 y -SDict begin H.R end - 4334 936 a 4334 995 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 4334 995 a 2982 1107 a Fj(\014ts)p 3109 1107 28 4 v -33 w(set)p 3253 1107 V 33 w(btbln)m(ull)4198 1107 y -SDict begin H.S end - 4198 -1107 a Fj(111)4334 1049 y -SDict begin H.R end - 4334 1049 a 4334 1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 4334 -1107 a 2982 1220 a Fj(\014ts)p 3109 1220 28 4 v 33 w(set)p -3253 1220 V 33 w(compression)p 3767 1220 V 33 w(t)m(yp)s(e)4243 -1220 y -SDict begin H.S end - 4243 1220 a Fj(50)4334 1162 y -SDict begin H.R end - 4334 1162 a 4334 -1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.6) cvn H.B /ANN pdfmark end - 4334 1220 a 2982 1333 a Fj(\014ts)p 3109 1333 -28 4 v 33 w(set)p 3253 1333 V 33 w(hdrsize)4198 1333 -y -SDict begin H.S end - 4198 1333 a Fj(102)4334 1275 y -SDict begin H.R end - 4334 1275 a 4334 1333 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.1) cvn H.B /ANN pdfmark end - 4334 1333 a 2982 1446 a Fj(\014ts)p 3109 1446 28 4 -v 33 w(set)p 3253 1446 V 33 w(hdustruc)4198 1446 y -SDict begin H.S end - 4198 -1446 a Fj(102)4334 1388 y -SDict begin H.R end - 4334 1388 a 4334 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 4334 -1446 a 2982 1559 a Fj(\014ts)p 3109 1559 28 4 v 33 w(set)p -3253 1559 V 33 w(imgn)m(ull)4198 1559 y -SDict begin H.S end - 4198 1559 a Fj(111)4334 -1501 y -SDict begin H.R end - 4334 1501 a 4334 1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 4334 1559 a 2982 1672 -a Fj(\014ts)p 3109 1672 28 4 v 33 w(set)p 3253 1672 V -33 w(noise)p 3483 1672 V 33 w(bits)4243 1672 y -SDict begin H.S end - 4243 1672 -a Fj(50)4334 1613 y -SDict begin H.R end - 4334 1613 a 4334 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.6) cvn H.B /ANN pdfmark end - 4334 1672 -a 2982 1785 a Fj(\014ts)p 3109 1785 28 4 v 33 w(set)p -3253 1785 V 33 w(tile)p 3411 1785 V 34 w(dim)4243 1785 -y -SDict begin H.S end - 4243 1785 a Fj(50)4334 1726 y -SDict begin H.R end - 4334 1726 a 4334 1785 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.6) cvn H.B /ANN pdfmark end - 4334 1785 a 2982 1898 a Fj(\014ts)p 3109 1898 28 4 -v 33 w(set)p 3253 1898 V 33 w(timeout)4243 1898 y -SDict begin H.S end - 4243 -1898 a Fj(99)4334 1839 y -SDict begin H.R end - 4334 1839 a 4334 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 4334 -1898 a 2982 2011 a Fj(\014ts)p 3109 2011 28 4 v 33 w(set)p -3253 2011 V 33 w(tscale)4198 2011 y -SDict begin H.S end - 4198 2011 a Fj(111)4334 -1952 y -SDict begin H.R end - 4334 1952 a 4334 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 4334 2011 a 2982 2124 -a Fj(\014ts)p 3109 2124 28 4 v 33 w(sho)m(w)p 3337 2124 -V 32 w(do)m(wnload)p 3745 2124 V 33 w(progress)4243 2124 -y -SDict begin H.S end - 4243 2124 a Fj(99)4334 2065 y -SDict begin H.R end - 4334 2065 a 4334 2124 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 4334 2124 a 2982 2237 a Fj(\014ts)p 3109 2237 28 4 -v 33 w(split)p 3314 2237 V 33 w(names)4243 2237 y -SDict begin H.S end - 4243 -2237 a Fj(67)4334 2178 y -SDict begin H.R end - 4334 2178 a 4334 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 -2237 a 2982 2349 a Fj(\014ts)p 3109 2349 28 4 v 33 w(str2date)4243 -2349 y -SDict begin H.S end - 4243 2349 a Fj(65)4334 2291 y -SDict begin H.R end - 4334 2291 a 4334 -2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 4334 2349 a 2982 2462 a Fj(\014ts)p 3109 2462 -28 4 v 33 w(str2time)4243 2462 y -SDict begin H.S end - 4243 2462 a Fj(65)4334 -2404 y -SDict begin H.R end - 4334 2404 a 4334 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 4334 2462 a 2982 2575 -a Fj(\014ts)p 3109 2575 28 4 v 33 w(test)p 3288 2575 -V 33 w(expr)4243 2575 y -SDict begin H.S end - 4243 2575 a Fj(61)4334 2517 y -SDict begin H.R end - -4334 2517 a 4334 2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 4334 2575 a 2982 2688 a Fj(\014ts)p -3109 2688 28 4 v 33 w(test)p 3288 2688 V 33 w(heap)4198 -2688 y -SDict begin H.S end - 4198 2688 a Fj(116)4334 2630 y -SDict begin H.R end - 4334 2630 a 4334 -2688 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 4334 2688 a 2982 2801 a Fj(\014ts)p 3109 2801 -28 4 v 33 w(test)p 3288 2801 V 33 w(k)m(eyw)m(ord)4243 -2801 y -SDict begin H.S end - 4243 2801 a Fj(67)4334 2743 y -SDict begin H.R end - 4334 2743 a 4334 -2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 2801 a 2982 2914 a Fj(\014ts)p 3109 2914 -28 4 v 33 w(test)p 3288 2914 V 33 w(record)4243 2914 -y -SDict begin H.S end - 4243 2914 a Fj(67)4334 2855 y -SDict begin H.R end - 4334 2855 a 4334 2914 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 2914 a 2982 3027 a Fj(\014ts)p 3109 3027 28 4 -v 33 w(time2str)4243 3027 y -SDict begin H.S end - 4243 3027 a Fj(65)4334 2968 -y -SDict begin H.R end - 4334 2968 a 4334 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 4334 3027 a 2982 3140 a Fj(\014ts)p -3109 3140 28 4 v 33 w(transfer)p 3449 3140 V 32 w(mem)m(b)s(er)4243 -3140 y -SDict begin H.S end - 4243 3140 a Fj(93)4334 3081 y -SDict begin H.R end - 4334 3081 a 4334 -3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 4334 3140 a 2982 3253 a Fj(\014ts)p 3109 3253 -28 4 v 33 w(translate)p 3490 3253 V 34 w(k)m(eyw)m(ord)4243 -3253 y -SDict begin H.S end - 4243 3253 a Fj(73)4334 3194 y -SDict begin H.R end - 4334 3194 a 4334 -3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 3253 a 2982 3366 a Fj(\014ts)p 3109 3366 -28 4 v 33 w(up)s(date)p 3418 3366 V 32 w(card)4243 3366 -y -SDict begin H.S end - 4243 3366 a Fj(42)4334 3307 y -SDict begin H.R end - 4334 3307 a 4334 3366 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 4334 3366 a 2982 3479 a Fj(\014ts)p 3109 3479 28 4 -v 33 w(up)s(date)p 3418 3479 V 32 w(c)m(hksum)4243 3479 -y -SDict begin H.S end - 4243 3479 a Fj(64)4334 3420 y -SDict begin H.R end - 4334 3420 a 4334 3479 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 4334 3479 a 2982 3591 a Fj(\014ts)p 3109 3591 28 4 -v 33 w(up)s(date)p 3418 3591 V 32 w(k)m(ey)4243 3591 -y -SDict begin H.S end - 4243 3591 a Fj(41)4334 3533 y -SDict begin H.R end - 4334 3533 a 4334 3591 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 4334 3591 a 2982 3704 a Fj(\014ts)p 3109 3704 28 4 -v 33 w(up)s(date)p 3418 3704 V 32 w(k)m(ey)p 3583 3704 -V 33 w(longstr)4198 3704 y -SDict begin H.S end - 4198 3704 a Fj(110)4334 3646 -y -SDict begin H.R end - 4334 3646 a 4334 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.7) cvn H.B /ANN pdfmark end - 4334 3704 a 2982 3817 a Fj(\014ts)p -3109 3817 28 4 v 33 w(up)s(date)p 3418 3817 V 32 w(k)m(ey)p -3583 3817 V 33 w(n)m(ull)4243 3817 y -SDict begin H.S end - 4243 3817 a Fj(41)4334 -3759 y -SDict begin H.R end - 4334 3759 a 4334 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 4334 3817 a 2982 3930 -a Fj(\014ts)p 3109 3930 28 4 v 33 w(up)s(date)p 3418 -3930 V 32 w(k)m(ey)p 3583 3930 V 33 w(TYP)4198 3930 y -SDict begin H.S end - -4198 3930 a Fj(110)4334 3872 y -SDict begin H.R end - 4334 3872 a 4334 3930 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.7) cvn H.B /ANN pdfmark end - 4334 3930 a 2982 4043 a Fj(\014ts)p 3109 4043 28 4 -v 33 w(upp)s(ercase)4243 4043 y -SDict begin H.S end - 4243 4043 a Fj(67)4334 -3985 y -SDict begin H.R end - 4334 3985 a 4334 4043 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 4334 4043 a 2982 4156 -a Fj(\014ts)p 3109 4156 28 4 v 33 w(url)p 3254 4156 V -32 w(t)m(yp)s(e)4243 4156 y -SDict begin H.S end - 4243 4156 a Fj(35)4334 4097 -y -SDict begin H.R end - 4334 4097 a 4334 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 4334 4156 a 2982 4269 a Fj(\014ts)p -3109 4269 28 4 v 33 w(v)m(erb)s(ose)p 3438 4269 V 33 -w(h)m(ttps)4243 4269 y -SDict begin H.S end - 4243 4269 a Fj(99)4334 4210 y -SDict begin H.R end - -4334 4210 a 4334 4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 4334 4269 a 2982 4382 a Fj(\014ts)p -3109 4382 28 4 v 33 w(v)m(erify)p 3364 4382 V 33 w(c)m(hksum)4243 -4382 y -SDict begin H.S end - 4243 4382 a Fj(64)4334 4323 y -SDict begin H.R end - 4334 4323 a 4334 -4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 4334 4382 a 2982 4495 a Fj(\014ts)p 3109 4495 -28 4 v 33 w(v)m(erify)p 3364 4495 V 33 w(group)4243 4495 -y -SDict begin H.S end - 4243 4495 a Fj(92)4334 4436 y -SDict begin H.R end - 4334 4436 a 4334 4495 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 4334 4495 a 2982 4608 a Fj(\014ts)p 3109 4608 28 4 -v 33 w(w)m(orld)p 3362 4608 V 32 w(to)p 3474 4608 V 34 -w(pix)4243 4608 y -SDict begin H.S end - 4243 4608 a Fj(87)4334 4549 y -SDict begin H.R end - 4334 -4549 a 4334 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 4334 4608 a 2982 4721 a Fj(\014ts)p -3109 4721 28 4 v 33 w(write)p 3344 4721 V 33 w(2d)p 3473 -4721 V 32 w(TYP)4198 4721 y -SDict begin H.S end - 4198 4721 a Fj(114)4334 4662 -y -SDict begin H.R end - 4334 4662 a 4334 4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 4334 4721 a 2982 4833 a Fj(\014ts)p -3109 4833 28 4 v 33 w(write)p 3344 4833 V 33 w(3d)p 3473 -4833 V 32 w(TYP)4198 4833 y -SDict begin H.S end - 4198 4833 a Fj(114)4334 4775 -y -SDict begin H.R end - 4334 4775 a 4334 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 4334 4833 a 2982 4946 a Fj(\014ts)p -3109 4946 28 4 v 33 w(write)p 3344 4946 V 33 w(atblhdr)4198 -4946 y -SDict begin H.S end - 4198 4946 a Fj(103)4334 4888 y -SDict begin H.R end - 4334 4888 a 4334 -4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 4334 4946 a 2982 5059 a Fj(\014ts)p 3109 5059 -28 4 v 33 w(write)p 3344 5059 V 33 w(btblhdr)4198 5059 -y -SDict begin H.S end - 4198 5059 a Fj(104)4334 5001 y -SDict begin H.R end - 4334 5001 a 4334 5059 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 4334 5059 a 2982 5172 a Fj(\014ts)p 3109 5172 28 4 -v 33 w(write)p 3344 5172 V 33 w(c)m(hksum)4243 5172 y -SDict begin H.S end - -4243 5172 a Fj(64)4334 5114 y -SDict begin H.R end - 4334 5114 a 4334 5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - -4334 5172 a 2982 5285 a Fj(\014ts)p 3109 5285 28 4 v -33 w(write)p 3344 5285 V 33 w(col)4243 5285 y -SDict begin H.S end - 4243 5285 -a Fj(58)4334 5227 y -SDict begin H.R end - 4334 5227 a 4334 5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 4334 5285 -a 2982 5398 a Fj(\014ts)p 3109 5398 28 4 v 33 w(write)p -3344 5398 V 33 w(col)p 3487 5398 V 34 w(bit)4198 5398 -y -SDict begin H.S end - 4198 5398 a Fj(118)4334 5339 y -SDict begin H.R end - 4334 5339 a 4334 5398 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 4334 5398 a 2982 5511 a Fj(\014ts)p 3109 5511 28 4 -v 33 w(write)p 3344 5511 V 33 w(col)p 3487 5511 V 34 -w(TYP)4198 5511 y -SDict begin H.S end - 4198 5511 a Fj(117)4334 5452 y -SDict begin H.R end - 4334 -5452 a 4334 5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 4334 5511 a 2982 5624 a Fj(\014ts)p -3109 5624 28 4 v 33 w(write)p 3344 5624 V 33 w(col)p -3487 5624 V 34 w(n)m(ull)4243 5624 y -SDict begin H.S end - 4243 5624 a Fj(58)4334 -5565 y -SDict begin H.R end - 4334 5565 a 4334 5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 4334 5624 a 2982 5737 -a Fj(\014ts)p 3109 5737 28 4 v 33 w(write)p 3344 5737 -V 33 w(coln)m(ull)4243 5737 y -SDict begin H.S end - 4243 5737 a Fj(58)4334 -5678 y -SDict begin H.R end - 4334 5678 a 4334 5737 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 4334 5737 a 2982 5850 -a Fj(\014ts)p 3109 5850 28 4 v 33 w(write)p 3344 5850 -V 33 w(coln)m(ull)p 3636 5850 V 34 w(TYP)4198 5850 y -SDict begin H.S end - -4198 5850 a Fj(117)4334 5791 y -SDict begin H.R end - 4334 5791 a 4334 5850 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 4334 5850 a eop end -%%Page: 175 183 -TeXDict begin 175 182 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.175) cvn /DEST pdfmark end - -8 191 a 3764 299 a Fj(175)50 -543 y(\014ts)p 177 543 28 4 v 32 w(write)p 411 543 V -33 w(commen)m(t)1112 543 y -SDict begin H.S end - 1112 543 a Fj(41)1203 484 -y -SDict begin H.R end - 1203 484 a 1203 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 543 a 50 656 a Fj(\014ts)p -177 656 28 4 v 32 w(write)p 411 656 V 33 w(date)1112 -656 y -SDict begin H.S end - 1112 656 a Fj(41)1203 597 y -SDict begin H.R end - 1203 597 a 1203 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 656 a 50 769 a Fj(\014ts)p 177 769 28 4 v 32 w(write)p -411 769 V 33 w(descript)1067 769 y -SDict begin H.S end - 1067 769 a Fj(118)1203 -710 y -SDict begin H.R end - 1203 710 a 1203 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 1203 769 a 50 882 a Fj(\014ts)p -177 882 28 4 v 32 w(write)p 411 882 V 33 w(errmark)1112 -882 y -SDict begin H.S end - 1112 882 a Fj(32)1203 823 y -SDict begin H.R end - 1203 823 a 1203 882 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 1203 882 a 50 995 a Fj(\014ts)p 177 995 28 4 v 32 w(write)p -411 995 V 33 w(errmsg)1112 995 y -SDict begin H.S end - 1112 995 a Fj(66)1203 -936 y -SDict begin H.R end - 1203 936 a 1203 995 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1203 995 a 50 1107 a Fj(\014ts)p -177 1107 28 4 v 32 w(write)p 411 1107 V 33 w(ext)1067 -1107 y -SDict begin H.S end - 1067 1107 a Fj(101)1203 1049 y -SDict begin H.R end - 1203 1049 a 1203 -1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1203 1107 a 50 1220 a Fj(\014ts)p 177 1220 28 -4 v 32 w(write)p 411 1220 V 33 w(exthdr)1067 1220 y -SDict begin H.S end - 1067 -1220 a Fj(103)1203 1162 y -SDict begin H.R end - 1203 1162 a 1203 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 1203 -1220 a 50 1333 a Fj(\014ts)p 177 1333 28 4 v 32 w(write)p -411 1333 V 33 w(grphdr)1067 1333 y -SDict begin H.S end - 1067 1333 a Fj(103)1203 -1275 y -SDict begin H.R end - 1203 1275 a 1203 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 1203 1333 a 50 1446 a -Fj(\014ts)p 177 1446 28 4 v 32 w(write)p 411 1446 V 33 -w(grppar)p 708 1446 V 32 w(TYP)1067 1446 y -SDict begin H.S end - 1067 1446 -a Fj(113)1203 1388 y -SDict begin H.R end - 1203 1388 a 1203 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 1446 -a 50 1559 a Fj(\014ts)p 177 1559 28 4 v 32 w(write)p -411 1559 V 33 w(hdu)1112 1559 y -SDict begin H.S end - 1112 1559 a Fj(37)1203 -1501 y -SDict begin H.R end - 1203 1501 a 1203 1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1203 1559 a 50 1672 a -Fj(\014ts)p 177 1672 28 4 v 32 w(write)p 411 1672 V 33 -w(history)1112 1672 y -SDict begin H.S end - 1112 1672 a Fj(41)1203 1613 y -SDict begin H.R end - 1203 -1613 a 1203 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 1672 a 50 1785 a Fj(\014ts)p -177 1785 28 4 v 32 w(write)p 411 1785 V 33 w(img)1067 -1785 y -SDict begin H.S end - 1067 1785 a Fj(113)1203 1726 y -SDict begin H.R end - 1203 1726 a 1203 -1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 1785 a 50 1898 a Fj(\014ts)p 177 1898 28 -4 v 32 w(write)p 411 1898 V 33 w(img)p 590 1898 V 33 -w(n)m(ull)1067 1898 y -SDict begin H.S end - 1067 1898 a Fj(113)1203 1839 y -SDict begin H.R end - -1203 1839 a 1203 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 1898 a 50 2011 a Fj(\014ts)p -177 2011 28 4 v 32 w(write)p 411 2011 V 33 w(img)p 590 -2011 V 33 w(TYP)1067 2011 y -SDict begin H.S end - 1067 2011 a Fj(113)1203 1952 -y -SDict begin H.R end - 1203 1952 a 1203 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 2011 a 50 2124 a Fj(\014ts)p -177 2124 28 4 v 32 w(write)p 411 2124 V 33 w(imghdr)1067 -2124 y -SDict begin H.S end - 1067 2124 a Fj(103)1203 2065 y -SDict begin H.R end - 1203 2065 a 1203 -2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 1203 2124 a 50 2237 a Fj(\014ts)p 177 2237 28 -4 v 32 w(write)p 411 2237 V 33 w(imgn)m(ull)1067 2237 -y -SDict begin H.S end - 1067 2237 a Fj(113)1203 2178 y -SDict begin H.R end - 1203 2178 a 1203 2237 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 2237 a 50 2349 a Fj(\014ts)p 177 2349 28 4 v 32 -w(write)p 411 2349 V 33 w(imgn)m(ull)p 739 2349 V 33 -w(TYP)1067 2349 y -SDict begin H.S end - 1067 2349 a Fj(113)1203 2291 y -SDict begin H.R end - 1203 -2291 a 1203 2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 2349 a 50 2462 a Fj(\014ts)p -177 2462 28 4 v 32 w(write)p 411 2462 V 33 w(k)m(ey)1112 -2462 y -SDict begin H.S end - 1112 2462 a Fj(41)1203 2404 y -SDict begin H.R end - 1203 2404 a 1203 -2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 2462 a 50 2575 a Fj(\014ts)p 177 2575 28 -4 v 32 w(write)p 411 2575 V 33 w(k)m(ey)p 577 2575 V -34 w(longstr)1067 2575 y -SDict begin H.S end - 1067 2575 a Fj(105)1203 2517 -y -SDict begin H.R end - 1203 2517 a 1203 2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1203 2575 a 50 2688 a Fj(\014ts)p -177 2688 28 4 v 32 w(write)p 411 2688 V 33 w(k)m(ey)p -577 2688 V 34 w(longw)m(arn)1067 2688 y -SDict begin H.S end - 1067 2688 a Fj(105)1203 -2630 y -SDict begin H.R end - 1203 2630 a 1203 2688 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1203 2688 a 50 2801 a -Fj(\014ts)p 177 2801 28 4 v 32 w(write)p 411 2801 V 33 -w(k)m(ey)p 577 2801 V 34 w(n)m(ull)1112 2801 y -SDict begin H.S end - 1112 2801 -a Fj(41)1203 2743 y -SDict begin H.R end - 1203 2743 a 1203 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 2801 -a 50 2914 a Fj(\014ts)p 177 2914 28 4 v 32 w(write)p -411 2914 V 33 w(k)m(ey)p 577 2914 V 34 w(template)1067 -2914 y -SDict begin H.S end - 1067 2914 a Fj(106)1203 2855 y -SDict begin H.R end - 1203 2855 a 1203 -2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1203 2914 a 50 3027 a Fj(\014ts)p 177 3027 28 -4 v 32 w(write)p 411 3027 V 33 w(k)m(ey)p 577 3027 V -34 w(triple)1067 3027 y -SDict begin H.S end - 1067 3027 a Fj(106)1203 2968 -y -SDict begin H.R end - 1203 2968 a 1203 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1203 3027 a 50 3140 a Fj(\014ts)p -177 3140 28 4 v 32 w(write)p 411 3140 V 33 w(k)m(ey)p -577 3140 V 34 w(unit)1112 3140 y -SDict begin H.S end - 1112 3140 a Fj(42)1203 -3081 y -SDict begin H.R end - 1203 3081 a 1203 3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 3140 a 50 3253 a -Fj(\014ts)p 177 3253 28 4 v 32 w(write)p 411 3253 V 33 -w(k)m(ey)p 577 3253 V 34 w(TYP)1067 3253 y -SDict begin H.S end - 1067 3253 -a Fj(105)1203 3194 y -SDict begin H.R end - 1203 3194 a 1203 3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1203 3253 -a 50 3366 a Fj(\014ts)p 177 3366 28 4 v 32 w(write)p -411 3366 V 33 w(k)m(eys)p 613 3366 V 34 w(TYP)1067 3366 -y -SDict begin H.S end - 1067 3366 a Fj(106)1203 3307 y -SDict begin H.R end - 1203 3307 a 1203 3366 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 1203 3366 a 50 3479 a Fj(\014ts)p 177 3479 28 4 v 32 -w(write)p 411 3479 V 33 w(k)m(eys)p 613 3479 V 34 w(histo)1112 -3479 y -SDict begin H.S end - 1112 3479 a Fj(62)1203 3420 y -SDict begin H.R end - 1203 3420 a 1203 -3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.6) cvn H.B /ANN pdfmark end - 1203 3479 a 50 3591 a Fj(\014ts)p 177 3591 28 -4 v 32 w(write)p 411 3591 V 33 w(n)m(ull)p 593 3591 V -33 w(img)1112 3591 y -SDict begin H.S end - 1112 3591 a Fj(45)1203 3533 y -SDict begin H.R end - 1203 -3533 a 1203 3591 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1203 3591 a 50 3704 a Fj(\014ts)p -177 3704 28 4 v 32 w(write)p 411 3704 V 33 w(n)m(ullro)m(ws)1112 -3704 y -SDict begin H.S end - 1112 3704 a Fj(58)1203 3646 y -SDict begin H.R end - 1203 3646 a 1203 -3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 1203 3704 a 50 3817 a Fj(\014ts)p 177 3817 28 -4 v 32 w(write)p 411 3817 V 33 w(pix)1112 3817 y -SDict begin H.S end - 1112 -3817 a Fj(45)1203 3759 y -SDict begin H.R end - 1203 3759 a 1203 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1203 -3817 a 50 3930 a Fj(\014ts)p 177 3930 28 4 v 32 w(write)p -411 3930 V 33 w(pixn)m(ull)1112 3930 y -SDict begin H.S end - 1112 3930 a Fj(45)1203 -3872 y -SDict begin H.R end - 1203 3872 a 1203 3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1203 3930 a 50 4043 a -Fj(\014ts)p 177 4043 28 4 v 32 w(write)p 411 4043 V 33 -w(record)1112 4043 y -SDict begin H.S end - 1112 4043 a Fj(42)1203 3985 y -SDict begin H.R end - 1203 -3985 a 1203 4043 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 1203 4043 a 50 4156 a Fj(\014ts)p -177 4156 28 4 v 32 w(write)p 411 4156 V 33 w(subset)1112 -4156 y -SDict begin H.S end - 1112 4156 a Fj(45)1203 4097 y -SDict begin H.R end - 1203 4097 a 1203 -4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1203 4156 a 50 4269 a Fj(\014ts)p 177 4269 28 -4 v 32 w(write)p 411 4269 V 33 w(subset)p 693 4269 V -32 w(TYP)1067 4269 y -SDict begin H.S end - 1067 4269 a Fj(114)1203 4210 y -SDict begin H.R end - 1203 -4210 a 1203 4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1203 4269 a 50 4382 a Fj(\014ts)p -177 4382 28 4 v 32 w(write)p 411 4382 V 33 w(tblb)m(ytes)1067 -4382 y -SDict begin H.S end - 1067 4382 a Fj(117)1203 4323 y -SDict begin H.R end - 1203 4323 a 1203 -4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.2) cvn H.B /ANN pdfmark end - 1203 4382 a 50 4495 a Fj(\014ts)p 177 4495 28 -4 v 32 w(write)p 411 4495 V 33 w(tdim)1112 4495 y -SDict begin H.S end - 1112 -4495 a Fj(55)1203 4436 y -SDict begin H.R end - 1203 4436 a 1203 4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 1203 -4495 a 50 4608 a Fj(\014ts)p 177 4608 28 4 v 32 w(write)p -411 4608 V 33 w(theap)1067 4608 y -SDict begin H.S end - 1067 4608 a Fj(116)1203 -4549 y -SDict begin H.R end - 1203 4549 a 1203 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 1203 4608 a eop end %%Page: 176 184 -TeXDict begin 176 183 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.176) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(176)2084 -b Fh(APPENDIX)31 b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)50 -543 y Fj(\013asfm)564 543 y -SDict begin H.S end - 564 543 a Fj(70)655 484 y -SDict begin H.R end - -655 484 a 655 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 655 543 a 50 656 a Fj(\013bnfm)564 -656 y -SDict begin H.S end - 564 656 a Fj(70)655 597 y -SDict begin H.R end - 655 597 a 655 656 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 655 -656 a 50 769 a Fj(\013calc)564 769 y -SDict begin H.S end - 564 769 a Fj(61)655 -710 y -SDict begin H.R end - 655 710 a 655 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 655 769 a 50 882 a Fj(\013calc)p -258 882 28 4 v 34 w(rng)564 882 y -SDict begin H.S end - 564 882 a Fj(61)655 -823 y -SDict begin H.R end - 655 823 a 655 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 655 882 a 50 995 a Fj(\013ccls)564 -995 y -SDict begin H.S end - 564 995 a Fj(57)655 936 y -SDict begin H.R end - 655 936 a 655 995 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 -995 a 50 1107 a Fj(\013c)m(h)m(tps)246 b Fi(??)50 1220 -y Fj(\013clos)564 1220 y -SDict begin H.S end - 564 1220 a Fj(35)655 1162 y -SDict begin H.R end - -655 1162 a 655 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 1220 a 50 1333 a Fj(\013cmph)518 -1333 y -SDict begin H.S end - 518 1333 a Fj(116)655 1275 y -SDict begin H.R end - 655 1275 a 655 1333 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 655 1333 a 50 1446 a Fj(\013cmps)564 1446 y -SDict begin H.S end - 564 1446 -a Fj(67)655 1388 y -SDict begin H.R end - 655 1388 a 655 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 655 1446 a 50 -1559 a Fj(\013cmrk)564 1559 y -SDict begin H.S end - 564 1559 a Fj(32)655 1501 -y -SDict begin H.R end - 655 1501 a 655 1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 655 1559 a 50 1672 a Fj(\013cmsg)564 -1672 y -SDict begin H.S end - 564 1672 a Fj(32)655 1613 y -SDict begin H.R end - 655 1613 a 655 1672 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 655 1672 a 50 1785 a Fj(\013cop)m(y)564 1785 y -SDict begin H.S end - 564 -1785 a Fj(37)655 1726 y -SDict begin H.R end - 655 1726 a 655 1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 655 1785 -a 50 1898 a Fj(\013cp)s(cl)564 1898 y -SDict begin H.S end - 564 1898 a Fj(57)655 -1839 y -SDict begin H.R end - 655 1839 a 655 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 1898 a 50 2011 a Fj(\013cp)s(dt)518 -2011 y -SDict begin H.S end - 518 2011 a Fj(101)655 1952 y -SDict begin H.R end - 655 1952 a 655 2011 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 655 2011 a 50 2124 a Fj(\013cp\015)564 2124 y -SDict begin H.S end - 564 2124 -a Fj(36)655 2065 y -SDict begin H.R end - 655 2065 a 655 2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 655 2124 a 50 -2237 a Fj(\013cphd)564 2237 y -SDict begin H.S end - 564 2237 a Fj(37)655 2178 -y -SDict begin H.R end - 655 2178 a 655 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 655 2237 a 50 2349 a Fj(\013cpimg)564 -2349 y -SDict begin H.S end - 564 2349 a Fj(47)655 2291 y -SDict begin H.R end - 655 2291 a 655 2349 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 655 2349 a 50 2462 a Fj(\013cpky)518 2462 y -SDict begin H.S end - 518 2462 -a Fj(106)655 2404 y -SDict begin H.R end - 655 2404 a 655 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 655 2462 a -50 2575 a Fj(\013cprw)564 2575 y -SDict begin H.S end - 564 2575 a Fj(57)655 -2517 y -SDict begin H.R end - 655 2517 a 655 2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 2575 a 50 2688 a Fj(\013crhd)518 -2688 y -SDict begin H.S end - 518 2688 a Fj(100)655 2630 y -SDict begin H.R end - 655 2630 a 655 2688 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 655 2688 a 50 2801 a Fj(\013crim)564 2801 y -SDict begin H.S end - 564 2801 -a Fj(44)655 2743 y -SDict begin H.R end - 655 2743 a 655 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 655 2801 a 50 -2914 a Fj(\013cro)m(w)564 2914 y -SDict begin H.S end - 564 2914 a Fj(60)655 -2855 y -SDict begin H.R end - 655 2855 a 655 2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 655 2914 a 50 3027 a Fj(\013crtb)564 -3027 y -SDict begin H.S end - 564 3027 a Fj(52)655 2968 y -SDict begin H.R end - 655 2968 a 655 3027 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.1) cvn H.B /ANN pdfmark end - 655 3027 a 50 3140 a Fj(\013dcol)564 3140 y -SDict begin H.S end - 564 3140 -a Fj(56)655 3081 y -SDict begin H.R end - 655 3081 a 655 3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 3140 a 50 -3253 a Fj(\013delt)564 3253 y -SDict begin H.S end - 564 3253 a Fj(35)655 3194 -y -SDict begin H.R end - 655 3194 a 655 3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 3253 a 50 3366 a Fj(\013dhdu)564 -3366 y -SDict begin H.S end - 564 3366 a Fj(37)655 3307 y -SDict begin H.R end - 655 3307 a 655 3366 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 655 3366 a 50 3479 a Fj(\013dk)m(ey)564 3479 y -SDict begin H.S end - 564 -3479 a Fj(42)655 3420 y -SDict begin H.R end - 655 3420 a 655 3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 655 3479 -a 50 3591 a Fj(\013dkinit)564 3591 y -SDict begin H.S end - 564 3591 a Fj(34)655 -3533 y -SDict begin H.R end - 655 3533 a 655 3591 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 3591 a 50 3704 a Fj(\013dk)m(op)s(en) -564 3704 y -SDict begin H.S end - 564 3704 a Fj(32)655 3646 y -SDict begin H.R end - 655 3646 a 655 -3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 3704 a 50 3817 a Fj(\013dopn)564 3817 y -SDict begin H.S end - 564 -3817 a Fj(32)655 3759 y -SDict begin H.R end - 655 3759 a 655 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 3817 -a 50 3930 a Fj(\013drec)564 3930 y -SDict begin H.S end - 564 3930 a Fj(42)655 -3872 y -SDict begin H.R end - 655 3872 a 655 3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 655 3930 a 50 4043 a Fj(\013dro)m(w)564 -4043 y -SDict begin H.S end - 564 4043 a Fj(56)655 3985 y -SDict begin H.R end - 655 3985 a 655 4043 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 4043 a 50 4156 a Fj(\013drrg)564 4156 y -SDict begin H.S end - 564 4156 -a Fj(56)655 4097 y -SDict begin H.R end - 655 4097 a 655 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 4156 a 50 -4269 a Fj(\013drws)564 4269 y -SDict begin H.S end - 564 4269 a Fj(56)655 4210 -y -SDict begin H.R end - 655 4210 a 655 4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 655 4269 a 50 4382 a Fj(\013dstr)564 -4382 y -SDict begin H.S end - 564 4382 a Fj(42)655 4323 y -SDict begin H.R end - 655 4323 a 655 4382 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 655 4382 a 50 4495 a Fj(\013dsum)564 4495 y -SDict begin H.S end - 564 4495 -a Fj(65)655 4436 y -SDict begin H.R end - 655 4436 a 655 4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 655 4495 a 50 -4608 a Fj(\013dt2s)564 4608 y -SDict begin H.S end - 564 4608 a Fj(65)655 4549 -y -SDict begin H.R end - 655 4549 a 655 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 655 4608 a 50 4721 a Fj(\013dtdm)564 -4721 y -SDict begin H.S end - 564 4721 a Fj(55)655 4662 y -SDict begin H.R end - 655 4662 a 655 4721 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 655 4721 a 50 4833 a Fj(\013dt)m(yp)564 4833 y -SDict begin H.S end - 564 -4833 a Fj(69)655 4775 y -SDict begin H.R end - 655 4775 a 655 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 655 4833 -a 50 4946 a Fj(\013eopn)564 4946 y -SDict begin H.S end - 564 4946 a Fj(32)655 -4888 y -SDict begin H.R end - 655 4888 a 655 4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 4946 a 50 5059 a Fj(\013eqt)m(y)564 -5059 y -SDict begin H.S end - 564 5059 a Fj(54)655 5001 y -SDict begin H.R end - 655 5001 a 655 5059 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 655 5059 a 50 5172 a Fj(\013esum)564 5172 y -SDict begin H.S end - 564 5172 -a Fj(65)655 5114 y -SDict begin H.R end - 655 5114 a 655 5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 655 5172 a 50 -5285 a Fj(\013exest)564 5285 y -SDict begin H.S end - 564 5285 a Fj(98)655 5227 -y -SDict begin H.R end - 655 5227 a 655 5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 655 5285 a 50 5398 a Fj(\013extn)564 -5398 y -SDict begin H.S end - 564 5398 a Fj(97)655 5339 y -SDict begin H.R end - 655 5339 a 655 5398 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 655 5398 a 50 5511 a Fj(\013\013rw)564 5511 y -SDict begin H.S end - 564 5511 -a Fj(60)655 5452 y -SDict begin H.R end - 655 5452 a 655 5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 655 5511 a 50 -5624 a Fj(\013\015md)564 5624 y -SDict begin H.S end - 564 5624 a Fj(35)655 -5565 y -SDict begin H.R end - 655 5565 a 655 5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 5624 a 50 5737 a Fj(\013\015nm)564 -5737 y -SDict begin H.S end - 564 5737 a Fj(35)655 5678 y -SDict begin H.R end - 655 5678 a 655 5737 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 655 5737 a 50 5850 a Fj(\013\015sh)564 5850 y -SDict begin H.S end - 564 5850 -a Fj(98)655 5791 y -SDict begin H.R end - 655 5791 a 655 5850 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 655 5850 a 785 -543 a Fj(\013\015us)1349 543 y -SDict begin H.S end - 1349 543 a Fj(98)1440 -484 y -SDict begin H.R end - 1440 484 a 1440 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 1440 543 a 785 656 a Fj(\013free)1157 -656 y -SDict begin H.S end - 1157 656 a Fj(108)1293 597 y -SDict begin H.R end - 1293 597 a 1293 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 1293 656 a Fj(,)1349 656 y -SDict begin H.S end - 1349 656 a Fj(40)1440 597 -y -SDict begin H.R end - 1440 597 a 1440 656 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1440 656 a 785 769 a Fj(\013fro)m(w)1349 -769 y -SDict begin H.S end - 1349 769 a Fj(60)1440 710 y -SDict begin H.R end - 1440 710 a 1440 769 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 1440 769 a 785 882 a Fj(\013g2d)p 984 882 28 4 v 1303 -882 a -SDict begin H.S end - 1303 882 a Fj(115)1440 823 y -SDict begin H.R end - 1440 823 a 1440 882 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1440 882 a 785 995 a Fj(\013g3d)p 984 995 28 4 v 1303 -995 a -SDict begin H.S end - 1303 995 a Fj(115)1440 936 y -SDict begin H.R end - 1440 936 a 1440 995 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1440 995 a 785 1107 a Fj(\013gab)s(c)1349 1107 y -SDict begin H.S end - 1349 -1107 a Fj(71)1440 1049 y -SDict begin H.R end - 1440 1049 a 1440 1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1440 -1107 a 785 1220 a Fj(\013gacl)1303 1220 y -SDict begin H.S end - 1303 1220 a -Fj(115)1440 1162 y -SDict begin H.R end - 1440 1162 a 1440 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 1440 1220 -a 785 1333 a Fj(\013gb)s(cl)1303 1333 y -SDict begin H.S end - 1303 1333 a Fj(115)1440 -1275 y -SDict begin H.R end - 1440 1275 a 1440 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 1440 1333 a 785 1446 a -Fj(\013gcdw)1349 1446 y -SDict begin H.S end - 1349 1446 a Fj(55)1440 1388 y -SDict begin H.R end - -1440 1388 a 1440 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 1440 1446 a 785 1559 a Fj(\013gcf)1349 -1559 y -SDict begin H.S end - 1349 1559 a Fj(59)1440 1501 y -SDict begin H.R end - 1440 1501 a 1440 -1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 1440 1559 a 785 1672 a Fj(\013gcf)p 956 1672 28 -4 v 1303 1672 a -SDict begin H.S end - 1303 1672 a Fj(119)1440 1613 y -SDict begin H.R end - 1440 1613 -a 1440 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 1440 1672 a 785 1785 a Fj(\013gc)m(ks)1349 -1785 y -SDict begin H.S end - 1349 1785 a Fj(64)1440 1726 y -SDict begin H.R end - 1440 1726 a 1440 -1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 1440 1785 a 785 1898 a Fj(\013gcnn)1349 1898 y -SDict begin H.S end - -1349 1898 a Fj(53)1440 1839 y -SDict begin H.R end - 1440 1839 a 1440 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - -1440 1898 a 785 2011 a Fj(\013gcno)1349 2011 y -SDict begin H.S end - 1349 2011 -a Fj(53)1440 1952 y -SDict begin H.R end - 1440 1952 a 1440 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 1440 2011 -a 785 2124 a Fj(\013gcrd)1349 2124 y -SDict begin H.S end - 1349 2124 a Fj(38)1440 -2065 y -SDict begin H.R end - 1440 2065 a 1440 2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1440 2124 a 785 2237 a -Fj(\013gcv)1349 2237 y -SDict begin H.S end - 1349 2237 a Fj(59)1440 2178 y -SDict begin H.R end - -1440 2178 a 1440 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 1440 2237 a 785 2349 a Fj(\013gcv)p -976 2349 28 4 v 1303 2349 a -SDict begin H.S end - 1303 2349 a Fj(119)1440 2291 -y -SDict begin H.R end - 1440 2291 a 1440 2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 1440 2349 a 785 2462 a Fj(\013gcx)1303 -2462 y -SDict begin H.S end - 1303 2462 a Fj(121)1440 2404 y -SDict begin H.R end - 1440 2404 a 1440 -2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 1440 2462 a 785 2575 a Fj(\013gdes)1303 2575 y -SDict begin H.S end - -1303 2575 a Fj(121)1440 2517 y -SDict begin H.R end - 1440 2517 a 1440 2575 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 1440 2575 a 785 2688 a Fj(\013gdess)1303 2688 y -SDict begin H.S end - 1303 -2688 a Fj(121)1440 2630 y -SDict begin H.R end - 1440 2630 a 1440 2688 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 1440 -2688 a 785 2801 a Fj(\013gerr)1349 2801 y -SDict begin H.S end - 1349 2801 a -Fj(31)1440 2743 y -SDict begin H.R end - 1440 2743 a 1440 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 1440 2801 a -785 2914 a Fj(\013gextn)1303 2914 y -SDict begin H.S end - 1303 2914 a Fj(101)1440 -2855 y -SDict begin H.R end - 1440 2855 a 1440 2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1440 2914 a 785 3027 a -Fj(\013ggp)p 984 3027 28 4 v 1303 3027 a -SDict begin H.S end - 1303 3027 a -Fj(114)1440 2968 y -SDict begin H.R end - 1440 2968 a 1440 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 1440 3027 -a 785 3140 a Fj(\013ghad)1303 3140 y -SDict begin H.S end - 1303 3140 a Fj(100)1440 -3081 y -SDict begin H.R end - 1440 3081 a 1440 3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 1440 3140 a 785 3253 a -Fj(\013gh)m(bn)1303 3253 y -SDict begin H.S end - 1303 3253 a Fj(104)1440 3194 -y -SDict begin H.R end - 1440 3194 a 1440 3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 1440 3253 a 785 3366 a Fj(\013ghdn)1349 -3366 y -SDict begin H.S end - 1349 3366 a Fj(36)1440 3307 y -SDict begin H.R end - 1440 3307 a 1440 -3366 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 1440 3366 a 785 3479 a Fj(\013ghdt)1349 3479 y -SDict begin H.S end - -1349 3479 a Fj(36)1440 3420 y -SDict begin H.R end - 1440 3420 a 1440 3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - -1440 3479 a 785 3591 a Fj(\013ghpr)1303 3591 y -SDict begin H.S end - 1303 3591 -a Fj(104)1440 3533 y -SDict begin H.R end - 1440 3533 a 1440 3591 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 1440 3591 -a 785 3704 a Fj(\013ghps)1303 3704 y -SDict begin H.S end - 1303 3704 a Fj(102)1440 -3646 y -SDict begin H.R end - 1440 3646 a 1440 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.1) cvn H.B /ANN pdfmark end - 1440 3704 a 785 3817 a -Fj(\013ghsp)1349 3817 y -SDict begin H.S end - 1349 3817 a Fj(38)1440 3759 y -SDict begin H.R end - -1440 3759 a 1440 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1440 3817 a 785 3930 a Fj(\013gh)m(tb)1303 -3930 y -SDict begin H.S end - 1303 3930 a Fj(104)1440 3872 y -SDict begin H.R end - 1440 3872 a 1440 -3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 1440 3930 a 785 4043 a Fj(\013gics)1349 4043 y -SDict begin H.S end - -1349 4043 a Fj(87)1440 3985 y -SDict begin H.R end - 1440 3985 a 1440 4043 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - -1440 4043 a 785 4156 a Fj(\013gidm)1349 4156 y -SDict begin H.S end - 1349 4156 -a Fj(43)1440 4097 y -SDict begin H.R end - 1440 4097 a 1440 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1440 4156 -a 785 4269 a Fj(\013gidt)1349 4269 y -SDict begin H.S end - 1349 4269 a Fj(43)1440 -4210 y -SDict begin H.R end - 1440 4210 a 1440 4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1440 4269 a 785 4382 a -Fj(\013giet)1349 4382 y -SDict begin H.S end - 1349 4382 a Fj(43)1440 4323 y -SDict begin H.R end - -1440 4323 a 1440 4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1440 4382 a 785 4495 a Fj(\013gipr)1349 -4495 y -SDict begin H.S end - 1349 4495 a Fj(43)1440 4436 y -SDict begin H.R end - 1440 4436 a 1440 -4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 1440 4495 a 785 4608 a Fj(\013gisz)1349 4608 y -SDict begin H.S end - -1349 4608 a Fj(43)1440 4549 y -SDict begin H.R end - 1440 4549 a 1440 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - -1440 4608 a 785 4721 a Fj(\013gk)m(cl)1349 4721 y -SDict begin H.S end - 1349 -4721 a Fj(69)1440 4662 y -SDict begin H.R end - 1440 4662 a 1440 4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1440 -4721 a 785 4833 a Fj(\013gk)m(ey)1349 4833 y -SDict begin H.S end - 1349 4833 -a Fj(38)1440 4775 y -SDict begin H.R end - 1440 4775 a 1440 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1440 4833 -a 785 4946 a Fj(\013gkls)1303 4946 y -SDict begin H.S end - 1303 4946 a Fj(108)1440 -4888 y -SDict begin H.R end - 1440 4888 a 1440 4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 1440 4946 a 785 5059 a -Fj(\013gksl)1349 5059 y -SDict begin H.S end - 1349 5059 a Fj(39)1440 5001 y -SDict begin H.R end - -1440 5001 a 1440 5059 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1440 5059 a 785 5172 a Fj(\013gkn)p -987 5172 28 4 v 1303 5172 a -SDict begin H.S end - 1303 5172 a Fj(108)1440 5114 -y -SDict begin H.R end - 1440 5114 a 1440 5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 1440 5172 a 785 5285 a Fj(\013gknm)1349 -5285 y -SDict begin H.S end - 1349 5285 a Fj(68)1440 5227 y -SDict begin H.R end - 1440 5227 a 1440 -5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 1440 5285 a 785 5398 a Fj(\013gky)1349 5398 y -SDict begin H.S end - -1349 5398 a Fj(38)1440 5339 y -SDict begin H.R end - 1440 5339 a 1440 5398 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - -1440 5398 a 785 5511 a Fj(\013gkyn)1349 5511 y -SDict begin H.S end - 1349 5511 -a Fj(39)1440 5452 y -SDict begin H.R end - 1440 5452 a 1440 5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 1440 5511 -a 785 5624 a Fj(\013gkyt)1303 5624 y -SDict begin H.S end - 1303 5624 a Fj(109)1440 -5565 y -SDict begin H.R end - 1440 5565 a 1440 5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 1440 5624 a 785 5737 a -Fj(\013gky)p 984 5737 28 4 v 1303 5737 a -SDict begin H.S end - 1303 5737 a -Fj(108)1440 5678 y -SDict begin H.R end - 1440 5678 a 1440 5737 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.5) cvn H.B /ANN pdfmark end - 1440 5737 -a 785 5850 a Fj(\013gmcp)1349 5850 y -SDict begin H.S end - 1349 5850 a Fj(93)1440 -5791 y -SDict begin H.R end - 1440 5791 a 1440 5850 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 1440 5850 a 1570 543 a -Fj(\013gmng)2167 543 y -SDict begin H.S end - 2167 543 a Fj(93)2258 484 y -SDict begin H.R end - 2258 -484 a 2258 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 2258 543 a 1570 656 a Fj(\013gmop)2167 -656 y -SDict begin H.S end - 2167 656 a Fj(93)2258 597 y -SDict begin H.R end - 2258 597 a 2258 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 2258 656 a 1570 769 a Fj(\013gmrm)2167 769 y -SDict begin H.S end - 2167 769 -a Fj(94)2258 710 y -SDict begin H.R end - 2258 710 a 2258 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 2258 769 a 1570 -882 a Fj(\013gmsg)2167 882 y -SDict begin H.S end - 2167 882 a Fj(32)2258 823 -y -SDict begin H.R end - 2258 823 a 2258 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 2258 882 a 1570 995 a Fj(\013gm)m(tf)2167 -995 y -SDict begin H.S end - 2167 995 a Fj(93)2258 936 y -SDict begin H.R end - 2258 936 a 2258 995 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 2258 995 a 1570 1107 a Fj(\013gncl)2167 1107 y -SDict begin H.S end - 2167 -1107 a Fj(53)2258 1049 y -SDict begin H.R end - 2258 1049 a 2258 1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 2258 -1107 a 1570 1220 a Fj(\013gnrw)2167 1220 y -SDict begin H.S end - 2167 1220 -a Fj(53)2258 1162 y -SDict begin H.R end - 2258 1162 a 2258 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 2258 1220 -a 1570 1333 a Fj(\013gnxk)2167 1333 y -SDict begin H.S end - 2167 1333 a Fj(39)2258 -1275 y -SDict begin H.R end - 2258 1275 a 2258 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2258 1333 a 1570 1446 -a Fj(\013gpf)2122 1446 y -SDict begin H.S end - 2122 1446 a Fj(114)2258 1388 -y -SDict begin H.R end - 2258 1388 a 2258 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2258 1446 a 1570 1559 a Fj(\013gpf)p -1752 1559 28 4 v 2122 1559 a -SDict begin H.S end - 2122 1559 a Fj(114)2258 -1501 y -SDict begin H.R end - 2258 1501 a 2258 1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2258 1559 a 1570 1672 -a Fj(\013gp)m(v)2122 1672 y -SDict begin H.S end - 2122 1672 a Fj(114)2258 1613 -y -SDict begin H.R end - 2258 1613 a 2258 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2258 1672 a 1570 1785 a Fj(\013gp)m(v)p -1769 1785 28 4 v 2122 1785 a -SDict begin H.S end - 2122 1785 a Fj(114)2258 -1726 y -SDict begin H.R end - 2258 1726 a 2258 1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2258 1785 a 1570 1898 -a Fj(\013gp)m(xv)2167 1898 y -SDict begin H.S end - 2167 1898 a Fj(46)2258 1839 -y -SDict begin H.R end - 2258 1839 a 2258 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 2258 1898 a 1570 2011 a Fj(\013gp)m(xf)2167 -2011 y -SDict begin H.S end - 2167 2011 a Fj(46)2258 1952 y -SDict begin H.R end - 2258 1952 a 2258 -2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 2258 2011 a 1570 2124 a Fj(\013grec)2167 2124 -y -SDict begin H.S end - 2167 2124 a Fj(39)2258 2065 y -SDict begin H.R end - 2258 2065 a 2258 2124 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2258 2124 a 1570 2237 a Fj(\013grsz)2122 2237 y -SDict begin H.S end - 2122 -2237 a Fj(116)2258 2178 y -SDict begin H.R end - 2258 2178 a 2258 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 2258 -2237 a 1570 2349 a Fj(\013gsdt)2167 2349 y -SDict begin H.S end - 2167 2349 -a Fj(65)2258 2291 y -SDict begin H.R end - 2258 2291 a 2258 2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 2258 2349 -a 1570 2462 a Fj(\013gsf)p 1737 2462 28 4 v 1955 2462 -a -SDict begin H.S end - 1955 2462 a Fj(115)2091 2404 y -SDict begin H.R end - 2091 2404 a 2091 2462 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2091 2462 a 2122 2462 a -SDict begin H.S end - 2122 2462 a Fj(120)2258 2404 -y -SDict begin H.R end - 2258 2404 a 2258 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2258 2462 a 1570 2575 a Fj(\013gsky)2167 -2575 y -SDict begin H.S end - 2167 2575 a Fj(39)2258 2517 y -SDict begin H.R end - 2258 2517 a 2258 -2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2258 2575 a 1570 2688 a Fj(\013gstm)2167 2688 -y -SDict begin H.S end - 2167 2688 a Fj(65)2258 2630 y -SDict begin H.R end - 2258 2630 a 2258 2688 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 2258 2688 a 1570 2801 a Fj(\013gstr)2167 2801 y -SDict begin H.S end - 2167 -2801 a Fj(38)2258 2743 y -SDict begin H.R end - 2258 2743 a 2258 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2258 -2801 a 1570 2914 a Fj(\013gsv)2167 2914 y -SDict begin H.S end - 2167 2914 a -Fj(46)2258 2855 y -SDict begin H.R end - 2258 2855 a 2258 2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 2258 2914 a -1570 3027 a Fj(\013gsv)p 1757 3027 28 4 v 1955 3027 a -SDict begin H.S end - -1955 3027 a Fj(115)2091 2968 y -SDict begin H.R end - 2091 2968 a 2091 3027 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2091 3027 a 2122 3027 a -SDict begin H.S end - 2122 3027 a Fj(120)2258 2968 -y -SDict begin H.R end - 2258 2968 a 2258 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.4) cvn H.B /ANN pdfmark end - 2258 3027 a 1570 3140 a Fj(\013gtam)2167 -3140 y -SDict begin H.S end - 2167 3140 a Fj(92)2258 3081 y -SDict begin H.R end - 2258 3081 a 2258 -3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 3140 a 1570 3253 a Fj(\013gtbb)2122 3253 -y -SDict begin H.S end - 2122 3253 a Fj(117)2258 3194 y -SDict begin H.R end - 2258 3194 a 2258 3253 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.2) cvn H.B /ANN pdfmark end - 2258 3253 a 1570 3366 a Fj(\013gtc)m(h)2167 3366 y -SDict begin H.S end - -2167 3366 a Fj(90)2258 3307 y -SDict begin H.R end - 2258 3307 a 2258 3366 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - -2258 3366 a 1570 3479 a Fj(\013gtcl)2167 3479 y -SDict begin H.S end - 2167 -3479 a Fj(54)2258 3420 y -SDict begin H.R end - 2258 3420 a 2258 3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 2258 -3479 a 1570 3591 a Fj(\013gtcm)2167 3591 y -SDict begin H.S end - 2167 3591 -a Fj(91)2258 3533 y -SDict begin H.R end - 2258 3533 a 2258 3591 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 3591 -a 1570 3704 a Fj(\013gtcp)2167 3704 y -SDict begin H.S end - 2167 3704 a Fj(91)2258 -3646 y -SDict begin H.R end - 2258 3646 a 2258 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 3704 a 1570 3817 -a Fj(\013gtcr)2167 3817 y -SDict begin H.S end - 2167 3817 a Fj(90)2258 3759 -y -SDict begin H.R end - 2258 3759 a 2258 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 3817 a 1570 3930 a Fj(\013gtcs)2167 -3930 y -SDict begin H.S end - 2167 3930 a Fj(87)2258 3872 y -SDict begin H.R end - 2258 3872 a 2258 -3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 2258 3930 a 1570 4043 a Fj(\013gtdm)2167 4043 -y -SDict begin H.S end - 2167 4043 a Fj(55)2258 3985 y -SDict begin H.R end - 2258 3985 a 2258 4043 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 2258 4043 a 1570 4156 a Fj(\013gthd)2167 4156 y -SDict begin H.S end - 2167 -4156 a Fj(71)2258 4097 y -SDict begin H.R end - 2258 4097 a 2258 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 2258 -4156 a 1570 4269 a Fj(\013gtis)2167 4269 y -SDict begin H.S end - 2167 4269 -a Fj(90)2258 4210 y -SDict begin H.R end - 2258 4210 a 2258 4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 4269 -a 1570 4382 a Fj(\013gtmg)2167 4382 y -SDict begin H.S end - 2167 4382 a Fj(91)2258 -4323 y -SDict begin H.R end - 2258 4323 a 2258 4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 4382 a 1570 4495 -a Fj(\013gtmo)2167 4495 y -SDict begin H.S end - 2167 4495 a Fj(99)2258 4436 -y -SDict begin H.R end - 2258 4436 a 2258 4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 2258 4495 a 1570 4608 a Fj(\013gtnm)2167 -4608 y -SDict begin H.S end - 2167 4608 a Fj(92)2258 4549 y -SDict begin H.R end - 2258 4549 a 2258 -4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.2) cvn H.B /ANN pdfmark end - 2258 4608 a 1570 4721 a Fj(\013gtop)2167 4721 -y -SDict begin H.S end - 2167 4721 a Fj(92)2258 4662 y -SDict begin H.R end - 2258 4662 a 2258 4721 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 4721 a 1570 4833 a Fj(\013gtrm)2167 4833 y -SDict begin H.S end - 2167 -4833 a Fj(91)2258 4775 y -SDict begin H.R end - 2258 4775 a 2258 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 -4833 a 1570 4946 a Fj(\013gtvf)2167 4946 y -SDict begin H.S end - 2167 4946 -a Fj(92)2258 4888 y -SDict begin H.R end - 2258 4888 a 2258 4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.8.1) cvn H.B /ANN pdfmark end - 2258 4946 -a 1570 5059 a Fj(\013gun)m(t)2167 5059 y -SDict begin H.S end - 2167 5059 a -Fj(40)2258 5001 y -SDict begin H.R end - 2258 5001 a 2258 5059 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.1) cvn H.B /ANN pdfmark end - 2258 5059 a -1570 5172 a Fj(\013hdef)2122 5172 y -SDict begin H.S end - 2122 5172 a Fj(102)2258 -5114 y -SDict begin H.R end - 2258 5114 a 2258 5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.1) cvn H.B /ANN pdfmark end - 2258 5172 a 1570 5285 -a Fj(\016bin)2122 5285 y -SDict begin H.S end - 2122 5285 a Fj(101)2258 5227 -y -SDict begin H.R end - 2258 5227 a 2258 5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2258 5285 a 1570 5398 a Fj(\016cls)2167 -5398 y -SDict begin H.S end - 2167 5398 a Fj(56)2258 5339 y -SDict begin H.R end - 2258 5339 a 2258 -5398 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 2258 5398 a 1570 5511 a Fj(\016col)2167 5511 y -SDict begin H.S end - -2167 5511 a Fj(56)2258 5452 y -SDict begin H.R end - 2258 5452 a 2258 5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - -2258 5511 a 1570 5624 a Fj(\016\014le)2167 5624 y -SDict begin H.S end - 2167 -5624 a Fj(97)2258 5565 y -SDict begin H.R end - 2258 5565 a 2258 5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2258 -5624 a 1570 5737 a Fj(\016h)m(tps)2167 5737 y -SDict begin H.S end - 2167 5737 -a Fj(99)2258 5678 y -SDict begin H.R end - 2258 5678 a 2258 5737 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2258 5737 -a 1570 5850 a Fj(\016img)2122 5850 y -SDict begin H.S end - 2122 5850 a Fj(100)2258 -5791 y -SDict begin H.R end - 2258 5791 a 2258 5850 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2258 5850 a 2388 543 a -Fj(\016kls)2788 543 y -SDict begin H.S end - 2788 543 a Fj(107)2924 484 y -SDict begin H.R end - 2924 -484 a 2924 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 2924 543 a 2388 656 a Fj(\016kyu)2788 -656 y -SDict begin H.S end - 2788 656 a Fj(107)2924 597 y -SDict begin H.R end - 2924 597 a 2924 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 2924 656 a 2388 769 a Fj(\016ky)p 2565 769 28 4 v 2788 -769 a -SDict begin H.S end - 2788 769 a Fj(107)2924 710 y -SDict begin H.R end - 2924 710 a 2924 769 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 2924 769 a 2388 882 a Fj(\016mem)2833 882 y -SDict begin H.S end - 2833 882 -a Fj(96)2924 823 y -SDict begin H.R end - 2924 823 a 2924 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2924 882 a 2388 -995 a Fj(\016nit)2833 995 y -SDict begin H.S end - 2833 995 a Fj(34)2924 936 -y -SDict begin H.R end - 2924 936 a 2924 995 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 2924 995 a 2388 1107 a Fj(\016n)m(tt)m(yp)2833 -1107 y -SDict begin H.S end - 2833 1107 a Fj(69)2924 1049 y -SDict begin H.R end - 2924 1049 a 2924 -1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 2924 1107 a 2388 1220 a Fj(\016opn)2833 1220 y -SDict begin H.S end - -2833 1220 a Fj(32)2924 1162 y -SDict begin H.R end - 2924 1162 a 2924 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - -2924 1220 a 2388 1333 a Fj(\016rec)2788 1333 y -SDict begin H.S end - 2788 1333 -a Fj(107)2924 1275 y -SDict begin H.R end - 2924 1275 a 2924 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.4) cvn H.B /ANN pdfmark end - 2924 1333 -a 2388 1446 a Fj(\016ro)m(w)2833 1446 y -SDict begin H.S end - 2833 1446 a Fj(56)2924 -1388 y -SDict begin H.R end - 2924 1388 a 2924 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 2924 1446 a 2388 1559 -a Fj(\016tab)2788 1559 y -SDict begin H.S end - 2788 1559 a Fj(101)2924 1501 -y -SDict begin H.R end - 2924 1501 a 2924 1559 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2924 1559 a 2388 1672 a Fj(\016ter)2833 -1672 y -SDict begin H.S end - 2833 1672 a Fj(83)2924 1613 y -SDict begin H.R end - 2924 1613 a 2924 -1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.6.4) cvn H.B /ANN pdfmark end - 2924 1672 a 2388 1785 a Fj(\016url)2833 1785 y -SDict begin H.S end - -2833 1785 a Fj(97)2924 1726 y -SDict begin H.R end - 2924 1726 a 2924 1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - -2924 1785 a 2388 1898 a Fj(\013k)m(eyn)2833 1898 y -SDict begin H.S end - 2833 -1898 a Fj(68)2924 1839 y -SDict begin H.R end - 2924 1839 a 2924 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 2924 -1898 a 2388 2011 a Fj(\013mahd)2833 2011 y -SDict begin H.S end - 2833 2011 -a Fj(36)2924 1952 y -SDict begin H.R end - 2924 1952 a 2924 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 2924 2011 -a 2388 2124 a Fj(\013mcom)2833 2124 y -SDict begin H.S end - 2833 2124 a Fj(42)2924 -2065 y -SDict begin H.R end - 2924 2065 a 2924 2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2924 2124 a 2388 2237 -a Fj(\013mcrd)2788 2237 y -SDict begin H.S end - 2788 2237 a Fj(109)2924 2178 -y -SDict begin H.R end - 2924 2178 a 2924 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 2924 2237 a 2388 2349 a Fj(\013mkky)2833 -2349 y -SDict begin H.S end - 2833 2349 a Fj(68)2924 2291 y -SDict begin H.R end - 2924 2291 a 2924 -2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 2924 2349 a 2388 2462 a Fj(\013mkls)2788 2462 -y -SDict begin H.S end - 2788 2462 a Fj(109)2924 2404 y -SDict begin H.R end - 2924 2404 a 2924 2462 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 2924 2462 a 2388 2575 a Fj(\013mkyu)2788 2575 y -SDict begin H.S end - 2788 -2575 a Fj(110)2924 2517 y -SDict begin H.R end - 2924 2517 a 2924 2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 2924 -2575 a 2388 2688 a Fj(\013mky)p 2618 2688 28 4 v 2788 -2688 a -SDict begin H.S end - 2788 2688 a Fj(109)2924 2630 y -SDict begin H.R end - 2924 2630 a 2924 -2688 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 2924 2688 a 2388 2801 a Fj(\013mnam)2833 2801 -y -SDict begin H.S end - 2833 2801 a Fj(42)2924 2743 y -SDict begin H.R end - 2924 2743 a 2924 2801 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2924 2801 a 2388 2914 a Fj(\013mnhd)2833 2914 y -SDict begin H.S end - 2833 -2914 a Fj(36)2924 2855 y -SDict begin H.R end - 2924 2855 a 2924 2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 2924 -2914 a 2388 3027 a Fj(\013mrec)2788 3027 y -SDict begin H.S end - 2788 3027 -a Fj(109)2924 2968 y -SDict begin H.R end - 2924 2968 a 2924 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.6) cvn H.B /ANN pdfmark end - 2924 3027 -a 2388 3140 a Fj(\013mrhd)2833 3140 y -SDict begin H.S end - 2833 3140 a Fj(36)2924 -3081 y -SDict begin H.R end - 2924 3081 a 2924 3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 2924 3140 a 2388 3253 -a Fj(\013m)m(v)m(ec)2833 3253 y -SDict begin H.S end - 2833 3253 a Fj(57)2924 -3194 y -SDict begin H.R end - 2924 3194 a 2924 3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.3) cvn H.B /ANN pdfmark end - 2924 3253 a 2388 3366 -a Fj(\013nc)m(hk)2833 3366 y -SDict begin H.S end - 2833 3366 a Fj(68)2924 3307 -y -SDict begin H.R end - 2924 3307 a 2924 3366 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 2924 3366 a 2388 3479 a Fj(\013nk)m(ey)2833 -3479 y -SDict begin H.S end - 2833 3479 a Fj(68)2924 3420 y -SDict begin H.R end - 2924 3420 a 2924 -3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 2924 3479 a 2388 3591 a Fj(\013omem)2833 3591 -y -SDict begin H.S end - 2833 3591 a Fj(95)2924 3533 y -SDict begin H.R end - 2924 3533 a 2924 3591 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 2924 3591 a 2388 3704 a Fj(\013op)s(en)2833 3704 y -SDict begin H.S end - -2833 3704 a Fj(32)2924 3646 y -SDict begin H.R end - 2924 3646 a 2924 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - -2924 3704 a 2388 3817 a Fj(\013p2d)p 2593 3817 28 4 v -2788 3817 a -SDict begin H.S end - 2788 3817 a Fj(114)2924 3759 y -SDict begin H.R end - 2924 3759 -a 2924 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2924 3817 a 2388 3930 a Fj(\013p3d)p 2593 -3930 28 4 v 2788 3930 a -SDict begin H.S end - 2788 3930 a Fj(114)2924 3872 -y -SDict begin H.R end - 2924 3872 a 2924 3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2924 3930 a 2388 4043 a Fj(\013p)s(c)m(ks) -2833 4043 y -SDict begin H.S end - 2833 4043 a Fj(64)2924 3985 y -SDict begin H.R end - 2924 3985 a -2924 4043 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 2924 4043 a 2388 4156 a Fj(\013p)s(cl)2833 -4156 y -SDict begin H.S end - 2833 4156 a Fj(58)2924 4097 y -SDict begin H.R end - 2924 4097 a 2924 -4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 2924 4156 a 2388 4269 a Fj(\013p)s(cls)2788 4269 -y -SDict begin H.S end - 2788 4269 a Fj(117)2924 4210 y -SDict begin H.R end - 2924 4210 a 2924 4269 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 2924 4269 a 2388 4382 a Fj(\013p)s(cl)p 2565 4382 28 -4 v 2788 4382 a -SDict begin H.S end - 2788 4382 a Fj(118)2924 4323 y -SDict begin H.R end - 2924 4323 -a 2924 4382 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 2924 4382 a 2388 4495 a Fj(\013p)s(clu)2833 -4495 y -SDict begin H.S end - 2833 4495 a Fj(58)2924 4436 y -SDict begin H.R end - 2924 4436 a 2924 -4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 2924 4495 a 2388 4608 a Fj(\013p)s(cn)2833 4608 -y -SDict begin H.S end - 2833 4608 a Fj(58)2924 4549 y -SDict begin H.R end - 2924 4549 a 2924 4608 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 2924 4608 a 2388 4721 a Fj(\013p)s(cn)p 2591 4721 28 -4 v 2788 4721 a -SDict begin H.S end - 2788 4721 a Fj(117)2924 4662 y -SDict begin H.R end - 2924 4662 -a 2924 4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 2924 4721 a 2388 4833 a Fj(\013p)s(com)2833 -4833 y -SDict begin H.S end - 2833 4833 a Fj(41)2924 4775 y -SDict begin H.R end - 2924 4775 a 2924 -4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2924 4833 a 2388 4946 a Fj(\013p)s(dat)2833 4946 -y -SDict begin H.S end - 2833 4946 a Fj(41)2924 4888 y -SDict begin H.R end - 2924 4888 a 2924 4946 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2924 4946 a 2388 5059 a Fj(\013p)s(des)2788 5059 y -SDict begin H.S end - -2788 5059 a Fj(118)2924 5001 y -SDict begin H.R end - 2924 5001 a 2924 5059 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.3) cvn H.B /ANN pdfmark end - 2924 5059 a 2388 5172 a Fj(\013p)s(extn)2788 5172 y -SDict begin H.S end - -2788 5172 a Fj(101)2924 5114 y -SDict begin H.R end - 2924 5114 a 2924 5172 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 2924 5172 a 2388 5285 a Fj(\013pgp)p 2593 5285 28 4 -v 2788 5285 a -SDict begin H.S end - 2788 5285 a Fj(113)2924 5227 y -SDict begin H.R end - 2924 5227 -a 2924 5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 2924 5285 a 2388 5398 a Fj(\013ph)m(bn)2788 -5398 y -SDict begin H.S end - 2788 5398 a Fj(104)2924 5339 y -SDict begin H.R end - 2924 5339 a 2924 -5398 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2924 5398 a 2388 5511 a Fj(\013phext)2788 5511 -y -SDict begin H.S end - 2788 5511 a Fj(103)2924 5452 y -SDict begin H.R end - 2924 5452 a 2924 5511 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2924 5511 a 2388 5624 a Fj(\013phis)2833 5624 y -SDict begin H.S end - 2833 -5624 a Fj(41)2924 5565 y -SDict begin H.R end - 2924 5565 a 2924 5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 2924 -5624 a 2388 5737 a Fj(\013phpr)2788 5737 y -SDict begin H.S end - 2788 5737 -a Fj(103)2924 5678 y -SDict begin H.R end - 2924 5678 a 2924 5737 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2924 5737 -a 2388 5850 a Fj(\013phps)2788 5850 y -SDict begin H.S end - 2788 5850 a Fj(103)2924 -5791 y -SDict begin H.R end - 2924 5791 a 2924 5850 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 2924 5850 a 3054 543 a -Fj(\013ph)m(tb)3472 543 y -SDict begin H.S end - 3472 543 a Fj(103)3609 484 -y -SDict begin H.R end - 3609 484 a 3609 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.2) cvn H.B /ANN pdfmark end - 3609 543 a 3054 656 a Fj(\013pkls)3472 -656 y -SDict begin H.S end - 3472 656 a Fj(105)3609 597 y -SDict begin H.R end - 3609 597 a 3609 656 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 3609 656 a 3054 769 a Fj(\013pkn)p 3262 769 28 4 v -3472 769 a -SDict begin H.S end - 3472 769 a Fj(106)3609 710 y -SDict begin H.R end - 3609 710 a 3609 -769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 3609 769 a 3054 882 a Fj(\013pktp)3472 882 y -SDict begin H.S end - 3472 -882 a Fj(106)3609 823 y -SDict begin H.R end - 3609 823 a 3609 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 3609 882 -a 3054 995 a Fj(\013pky)3518 995 y -SDict begin H.S end - 3518 995 a Fj(41)3609 -936 y -SDict begin H.R end - 3609 936 a 3609 995 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 3609 995 a 3054 1107 a Fj(\013pkyt)3472 -1107 y -SDict begin H.S end - 3472 1107 a Fj(106)3609 1049 y -SDict begin H.R end - 3609 1049 a 3609 -1107 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 3609 1107 a 3054 1220 a Fj(\013pkyu)3518 1220 -y -SDict begin H.S end - 3518 1220 a Fj(41)3609 1162 y -SDict begin H.R end - 3609 1162 a 3609 1220 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 3609 1220 a 3054 1333 a Fj(\013pky)p 3259 1333 28 4 -v 3472 1333 a -SDict begin H.S end - 3472 1333 a Fj(105)3609 1275 y -SDict begin H.R end - 3609 1275 -a 3609 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 3609 1333 a 3054 1446 a Fj(\013plsw)3472 -1446 y -SDict begin H.S end - 3472 1446 a Fj(105)3609 1388 y -SDict begin H.R end - 3609 1388 a 3609 -1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.3) cvn H.B /ANN pdfmark end - 3609 1446 a 3054 1559 a Fj(\013pmrk)3518 1559 -y -SDict begin H.S end - 3518 1559 a Fj(32)3609 1501 y -SDict begin H.R end - 3609 1501 a 3609 1559 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 3609 1559 a 3054 1672 a Fj(\013pmsg)3518 1672 y -SDict begin H.S end - 3518 -1672 a Fj(66)3609 1613 y -SDict begin H.R end - 3609 1613 a 3609 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 3609 -1672 a 3054 1785 a Fj(\013pn)m(ul)3472 1785 y -SDict begin H.S end - 3472 1785 -a Fj(111)3609 1726 y -SDict begin H.R end - 3609 1726 a 3609 1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 3609 1785 -a 3054 1898 a Fj(\013ppn)3472 1898 y -SDict begin H.S end - 3472 1898 a Fj(113)3609 -1839 y -SDict begin H.R end - 3609 1839 a 3609 1898 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 3609 1898 a 3054 2011 -a Fj(\013ppn)p 3265 2011 28 4 v 3472 2011 a -SDict begin H.S end - 3472 2011 -a Fj(113)3609 1952 y -SDict begin H.R end - 3609 1952 a 3609 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 3609 2011 -a 3054 2124 a Fj(\013ppr)3472 2124 y -SDict begin H.S end - 3472 2124 a Fj(113)3609 -2065 y -SDict begin H.R end - 3609 2065 a 3609 2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 3609 2124 a 3054 2237 -a Fj(\013pprn)3518 2237 y -SDict begin H.S end - 3518 2237 a Fj(45)3609 2178 -y -SDict begin H.R end - 3609 2178 a 3609 2237 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 3609 2237 a 3054 2349 a Fj(\013ppru)3472 -2349 y -SDict begin H.S end - 3472 2349 a Fj(113)3609 2291 y -SDict begin H.R end - 3609 2291 a 3609 -2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 3609 2349 a 3054 2462 a Fj(\013ppr)p 3250 2462 -28 4 v 3472 2462 a -SDict begin H.S end - 3472 2462 a Fj(113)3609 2404 y -SDict begin H.R end - 3609 -2404 a 3609 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 3609 2462 a 3054 2575 a Fj(\013pp)m(x)3518 -2575 y -SDict begin H.S end - 3518 2575 a Fj(45)3609 2517 y -SDict begin H.R end - 3609 2517 a 3609 -2575 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 3609 2575 a 3054 2688 a Fj(\013pp)m(xn)3518 2688 -y -SDict begin H.S end - 3518 2688 a Fj(45)3609 2630 y -SDict begin H.R end - 3609 2630 a 3609 2688 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 3609 2688 a 3054 2801 a Fj(\013prec)3518 2801 y -SDict begin H.S end - 3518 -2801 a Fj(42)3609 2743 y -SDict begin H.R end - 3609 2743 a 3609 2801 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 3609 -2801 a 3054 2914 a Fj(\013prwu)3518 2914 y -SDict begin H.S end - 3518 2914 -a Fj(58)3609 2855 y -SDict begin H.R end - 3609 2855 a 3609 2914 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.4) cvn H.B /ANN pdfmark end - 3609 2914 -a 3054 3027 a Fj(\013pscl)3472 3027 y -SDict begin H.S end - 3472 3027 a Fj(111)3609 -2968 y -SDict begin H.R end - 3609 2968 a 3609 3027 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 3609 3027 a 3054 3140 -a Fj(\013pss)3518 3140 y -SDict begin H.S end - 3518 3140 a Fj(45)3609 3081 -y -SDict begin H.R end - 3609 3081 a 3609 3140 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.5) cvn H.B /ANN pdfmark end - 3609 3140 a 3054 3253 a Fj(\013pss)p -3235 3253 28 4 v 3472 3253 a -SDict begin H.S end - 3472 3253 a Fj(114)3609 -3194 y -SDict begin H.R end - 3609 3194 a 3609 3253 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.5) cvn H.B /ANN pdfmark end - 3609 3253 a 3054 3366 -a Fj(\013psv)m(c)3518 3366 y -SDict begin H.S end - 3518 3366 a Fj(68)3609 3307 -y -SDict begin H.R end - 3609 3307 a 3609 3366 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 3609 3366 a 3054 3479 a Fj(\013ptbb)3472 -3479 y -SDict begin H.S end - 3472 3479 a Fj(117)3609 3420 y -SDict begin H.R end - 3609 3420 a 3609 -3479 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.2) cvn H.B /ANN pdfmark end - 3609 3479 a 3054 3591 a Fj(\013ptdm)3518 3591 -y -SDict begin H.S end - 3518 3591 a Fj(55)3609 3533 y -SDict begin H.R end - 3609 3533 a 3609 3591 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.2) cvn H.B /ANN pdfmark end - 3609 3591 a 3054 3704 a Fj(\013pthp)3472 3704 y -SDict begin H.S end - 3472 -3704 a Fj(116)3609 3646 y -SDict begin H.R end - 3609 3646 a 3609 3704 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 3609 -3704 a 3054 3817 a Fj(\013pun)m(t)3518 3817 y -SDict begin H.S end - 3518 3817 -a Fj(42)3609 3759 y -SDict begin H.R end - 3609 3759 a 3609 3817 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 3609 3817 -a 3054 3930 a Fj(\013rdef)3472 3930 y -SDict begin H.S end - 3472 3930 a Fj(102)3609 -3872 y -SDict begin H.R end - 3609 3872 a 3609 3930 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 3609 3930 a 3054 4043 -a Fj(\013reop)s(en)3518 4043 y -SDict begin H.S end - 3518 4043 a Fj(96)3609 -3985 y -SDict begin H.R end - 3609 3985 a 3609 4043 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 3609 4043 a 3054 4156 -a Fj(\013rprt)3518 4156 y -SDict begin H.S end - 3518 4156 a Fj(32)3609 4097 -y -SDict begin H.R end - 3609 4097 a 3609 4156 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.1) cvn H.B /ANN pdfmark end - 3609 4156 a 3054 4269 a Fj(\013rsim)3472 -4269 y -SDict begin H.S end - 3472 4269 a Fj(101)3609 4210 y -SDict begin H.R end - 3609 4210 a 3609 -4269 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.2) cvn H.B /ANN pdfmark end - 3609 4269 a 3054 4382 a Fj(\013rtnm)3518 4382 -y -SDict begin H.S end - 3518 4382 a Fj(98)3609 4323 y -SDict begin H.R end - 3609 4323 a 3609 4382 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 3609 4382 a 3054 4495 a Fj(\013rwrg)3518 4495 y -SDict begin H.S end - 3518 -4495 a Fj(75)3609 4436 y -SDict begin H.R end - 3609 4436 a 3609 4495 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 3609 -4495 a 3054 4608 a Fj(\013s2dt)3518 4608 y -SDict begin H.S end - 3518 4608 -a Fj(65)3609 4549 y -SDict begin H.R end - 3609 4549 a 3609 4608 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 3609 4608 -a 3054 4721 a Fj(\013s2tm)3518 4721 y -SDict begin H.S end - 3518 4721 a Fj(65)3609 -4662 y -SDict begin H.R end - 3609 4662 a 3609 4721 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 3609 4721 a 3054 4833 -a Fj(\013shdwn)3518 4833 y -SDict begin H.S end - 3518 4833 a Fj(99)3609 4775 -y -SDict begin H.R end - 3609 4775 a 3609 4833 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 3609 4833 a 3054 4946 a Fj(\013sn)m(ul)3472 -4946 y -SDict begin H.S end - 3472 4946 a Fj(111)3609 4888 y -SDict begin H.R end - 3609 4888 a 3609 -4946 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 3609 4946 a 3054 5059 a Fj(\013sro)m(w)3518 5059 -y -SDict begin H.S end - 3518 5059 a Fj(60)3609 5001 y -SDict begin H.R end - 3609 5001 a 3609 5059 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 3609 5059 a 3054 5172 a Fj(\013stmo)3518 5172 y -SDict begin H.S end - 3518 -5172 a Fj(99)3609 5114 y -SDict begin H.R end - 3609 5114 a 3609 5172 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 3609 -5172 a 3054 5285 a Fj(\013texp)3518 5285 y -SDict begin H.S end - 3518 5285 -a Fj(61)3609 5227 y -SDict begin H.R end - 3609 5227 a 3609 5285 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.7.5) cvn H.B /ANN pdfmark end - 3609 5285 -a 3054 5398 a Fj(\013thdu)3518 5398 y -SDict begin H.S end - 3518 5398 a Fj(36)3609 -5339 y -SDict begin H.R end - 3609 5339 a 3609 5398 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 3609 5398 a 3054 5511 -a Fj(\013theap)3472 5511 y -SDict begin H.S end - 3472 5511 a Fj(116)3609 5452 -y -SDict begin H.R end - 3609 5452 a 3609 5511 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.6.1) cvn H.B /ANN pdfmark end - 3609 5511 a 3054 5624 a Fj(\013tk)m(ey)3518 -5624 y -SDict begin H.S end - 3518 5624 a Fj(67)3609 5565 y -SDict begin H.R end - 3609 5565 a 3609 -5624 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 3609 5624 a 3054 5737 a Fj(\013tm2s)3518 5737 -y -SDict begin H.S end - 3518 5737 a Fj(65)3609 5678 y -SDict begin H.R end - 3609 5678 a 3609 5737 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.2) cvn H.B /ANN pdfmark end - 3609 5737 a 3054 5850 a Fj(\013tn)m(ul)3472 5850 y -SDict begin H.S end - -3472 5850 a Fj(111)3609 5791 y -SDict begin H.R end - 3609 5791 a 3609 5850 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - 3609 5850 a eop end +TeXDict begin 176 183 bop 0 299 a Fj(176)1876 b Fh(CHAPTER)30 +b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)p eop end %%Page: 177 185 -TeXDict begin 177 184 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.177) cvn /DEST pdfmark end - -8 191 a 3764 299 a Fj(177)50 -543 y(\013topn)501 543 y -SDict begin H.S end - 501 543 a Fj(32)592 484 y -SDict begin H.R end - 592 -484 a 592 543 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 592 543 a 50 656 a Fj(\013tplt)501 656 -y -SDict begin H.S end - 501 656 a Fj(96)592 597 y -SDict begin H.R end - 592 597 a 592 656 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.1) cvn H.B /ANN pdfmark end - 592 656 -a 50 769 a Fj(\013trec)501 769 y -SDict begin H.S end - 501 769 a Fj(67)592 -710 y -SDict begin H.R end - 592 710 a 592 769 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 592 769 a 50 882 a Fj(\013tscl)455 -882 y -SDict begin H.S end - 455 882 a Fj(111)592 823 y -SDict begin H.R end - 592 823 a 592 882 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.9.4) cvn H.B /ANN pdfmark end - -592 882 a 50 995 a Fj(\013ucrd)501 995 y -SDict begin H.S end - 501 995 a Fj(42)592 -936 y -SDict begin H.R end - 592 936 a 592 995 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 592 995 a 50 1107 a Fj(\013ukls)455 -1107 y -SDict begin H.S end - 455 1107 a Fj(110)592 1049 y -SDict begin H.R end - 592 1049 a 592 1107 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.7) cvn H.B /ANN pdfmark end - 592 1107 a 50 1220 a Fj(\013uky)501 1220 y -SDict begin H.S end - 501 1220 -a Fj(41)592 1162 y -SDict begin H.R end - 592 1162 a 592 1220 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 592 1220 a 50 -1333 a Fj(\013ukyu)501 1333 y -SDict begin H.S end - 501 1333 a Fj(41)592 1275 -y -SDict begin H.R end - 592 1275 a 592 1333 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.4.2) cvn H.B /ANN pdfmark end - 592 1333 a 50 1446 a Fj(\013uky)p -255 1446 28 4 v 455 1446 a -SDict begin H.S end - 455 1446 a Fj(110)592 1388 -y -SDict begin H.R end - 592 1388 a 592 1446 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.3.7) cvn H.B /ANN pdfmark end - 592 1446 a 50 1559 a Fj(\013up)s(c)m(h)501 -1559 y -SDict begin H.S end - 501 1559 a Fj(67)592 1501 y -SDict begin H.R end - 592 1501 a 592 1559 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 592 1559 a 50 1672 a Fj(\013up)s(c)m(k)501 1672 y -SDict begin H.S end - 501 -1672 a Fj(64)592 1613 y -SDict begin H.R end - 592 1613 a 592 1672 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 592 1672 -a 50 1785 a Fj(\013urlt)501 1785 y -SDict begin H.S end - 501 1785 a Fj(35)592 -1726 y -SDict begin H.R end - 592 1726 a 592 1785 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.2) cvn H.B /ANN pdfmark end - 592 1785 a 50 1898 a Fj(\013v)m(c)m(ks)501 -1898 y -SDict begin H.S end - 501 1898 a Fj(64)592 1839 y -SDict begin H.R end - 592 1839 a 592 1898 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.1) cvn H.B /ANN pdfmark end - 592 1898 a 50 2011 a Fj(\013v)m(ers)501 2011 y -SDict begin H.S end - 501 -2011 a Fj(66)592 1952 y -SDict begin H.R end - 592 1952 a 592 2011 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.5.8.3) cvn H.B /ANN pdfmark end - 592 2011 -a 50 2124 a Fj(\013vh)m(tps)501 2124 y -SDict begin H.S end - 501 2124 a Fj(99)592 -2065 y -SDict begin H.R end - 592 2065 a 592 2124 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (subsection.9.1.2) cvn H.B /ANN pdfmark end - 592 2124 a 50 2237 a Fj(\013wldp)501 -2237 y -SDict begin H.S end - 501 2237 a Fj(87)592 2178 y -SDict begin H.R end - 592 2178 a 592 2237 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 592 2237 a 50 2349 a Fj(\013wrhdu)501 2349 y -SDict begin H.S end - 501 2349 -a Fj(37)592 2291 y -SDict begin H.R end - 592 2291 a 592 2349 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.5.3) cvn H.B /ANN pdfmark end - 592 2349 a 50 -2462 a Fj(\013xyp)m(x)501 2462 y -SDict begin H.S end - 501 2462 a Fj(87)592 -2404 y -SDict begin H.R end - 592 2404 a 592 2462 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype -/Link/Dest (section.7.1) cvn H.B /ANN pdfmark end - 592 2462 a eop end +TeXDict begin 177 184 bop 1882 5942 a Fj(177)p eop end %%Page: 178 186 -TeXDict begin 178 185 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.178) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(178)2084 -b Fh(APPENDIX)31 b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)p -eop end +TeXDict begin 178 185 bop 0 299 a Fj(178)2084 b Fh(APPENDIX)31 +b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)0 1225 y Fg(App)5 +b(endix)64 b(A)0 1687 y Fm(Index)77 b(of)h(Routines)50 +2154 y Fj(\014ts)p 177 2154 28 4 v 32 w(add)p 356 2154 +V 32 w(group)p 616 2154 V 33 w(mem)m(b)s(er)245 b(94)50 +2267 y(\014ts)p 177 2267 V 32 w(ascii)p 380 2267 V 34 +w(tform)579 b(71)50 2380 y(\014ts)p 177 2380 V 32 w(binary)p +465 2380 V 32 w(tform)496 b(71)50 2493 y(\014ts)p 177 +2493 V 32 w(calculator)617 b(61)50 2606 y(\014ts)p 177 +2606 V 32 w(calculator)p 596 2606 V 35 w(rng)450 b(61)50 +2719 y(\014ts)p 177 2719 V 32 w(calc)p 359 2719 V 35 +w(binning[d])419 b(62)50 2832 y(\014ts)p 177 2832 V 32 +w(calc)p 359 2832 V 35 w(ro)m(ws)639 b(61)50 2945 y(\014ts)p +177 2945 V 32 w(c)m(hange)p 478 2945 V 34 w(group)473 +b(92)50 3057 y(\014ts)p 177 3057 V 32 w(clean)m(up)p +509 3057 V 33 w(h)m(ttps)421 b(101)50 3170 y(\014ts)p +177 3170 V 32 w(clear)p 395 3170 V 34 w(errmark)467 b(32)50 +3283 y(\014ts)p 177 3283 V 32 w(clear)p 395 3283 V 34 +w(errmsg)515 b(32)50 3396 y(\014ts)p 177 3396 V 32 w(close)p +395 3396 V 34 w(\014le)668 b(35)50 3509 y(\014ts)p 177 +3509 V 32 w(compact)p 541 3509 V 34 w(group)410 b(93)50 +3622 y(\014ts)p 177 3622 V 32 w(compare)p 542 3622 V +34 w(str)530 b(67)50 3735 y(\014ts)p 177 3735 V 32 w(compress)p +569 3735 V 33 w(heap)379 b(118)50 3848 y(\014ts)p 177 +3848 V 32 w(con)m(v)m(ert)p 498 3848 V 35 w(hdr2str)244 +b(40,)31 b(88)50 3961 y(\014ts)p 177 3961 V 32 w(cop)m(y)p +390 3961 V 34 w(cell2image)383 b(44)50 4074 y(\014ts)p +177 4074 V 32 w(cop)m(y)p 390 4074 V 34 w(col)679 b(57)50 +4187 y(\014ts)p 177 4187 V 32 w(cop)m(y)p 390 4187 V +34 w(cols)643 b(57)50 4299 y(\014ts)p 177 4299 V 32 w(cop)m(y)p +390 4299 V 34 w(data)568 b(103)50 4412 y(\014ts)p 177 +4412 V 32 w(cop)m(y)p 390 4412 V 34 w(\014le)673 b(36)50 +4525 y(\014ts)p 177 4525 V 32 w(cop)m(y)p 390 4525 V +34 w(group)561 b(93)50 4638 y(\014ts)p 177 4638 V 32 +w(cop)m(y)p 390 4638 V 34 w(hdu)636 b(37)50 4751 y(\014ts)p +177 4751 V 32 w(cop)m(y)p 390 4751 V 34 w(hdutab)505 +b(53)50 4864 y(\014ts)p 177 4864 V 32 w(cop)m(y)p 390 +4864 V 34 w(header)526 b(37)50 4977 y(\014ts)p 177 4977 +V 32 w(cop)m(y)p 390 4977 V 34 w(image2cell)383 b(44)50 +5090 y(\014ts)p 177 5090 V 32 w(cop)m(y)p 390 5090 V +34 w(image)p 655 5090 V 34 w(section)252 b(47)50 5203 +y(\014ts)p 177 5203 V 32 w(cop)m(y)p 390 5203 V 34 w(k)m(ey)611 +b(108)50 5316 y(\014ts)p 177 5316 V 32 w(cop)m(y)p 390 +5316 V 34 w(mem)m(b)s(er)470 b(95)50 5429 y(\014ts)p +177 5429 V 32 w(cop)m(y)p 390 5429 V 34 w(pixlist2image)268 +b(63)50 5541 y(\014ts)p 177 5541 V 32 w(cop)m(y)p 390 +5541 V 34 w(ro)m(ws)609 b(57)50 5654 y(\014ts)p 177 5654 +V 32 w(create)p 445 5654 V 35 w(disk\014le)457 b(34)50 +5767 y(\014ts)p 177 5767 V 32 w(create)p 445 5767 V 35 +w(\014le)617 b(34)1419 2211 y(\014ts)p 1546 2211 V 32 +w(create)p 1814 2211 V 35 w(group)629 b(92)1419 2323 +y(\014ts)p 1546 2323 V 32 w(create)p 1814 2323 V 35 w(hdu)659 +b(102)1419 2436 y(\014ts)p 1546 2436 V 32 w(create)p +1814 2436 V 35 w(img)711 b(44)1419 2549 y(\014ts)p 1546 +2549 V 32 w(create)p 1814 2549 V 35 w(mem\014le)549 b(98)1419 +2662 y(\014ts)p 1546 2662 V 32 w(create)p 1814 2662 V +35 w(tbl)746 b(53)1419 2775 y(\014ts)p 1546 2775 V 32 +w(create)p 1814 2775 V 35 w(template)510 b(98)1419 2888 +y(\014ts)p 1546 2888 V 32 w(date2str)805 b(66)1419 3001 +y(\014ts)p 1546 3001 V 32 w(deco)s(de)p 1848 3001 V 33 +w(c)m(hksum)526 b(65)1419 3114 y(\014ts)p 1546 3114 V +32 w(deco)s(de)p 1848 3114 V 33 w(tdim)638 b(55)1419 +3227 y(\014ts)p 1546 3227 V 32 w(delete)p 1809 3227 V +34 w(col)753 b(57)1419 3340 y(\014ts)p 1546 3340 V 32 +w(delete)p 1809 3340 V 34 w(\014le)747 b(35)1419 3453 +y(\014ts)p 1546 3453 V 32 w(delete)p 1809 3453 V 34 w(hdu)710 +b(37)1419 3566 y(\014ts)p 1546 3566 V 32 w(delete)p 1809 +3566 V 34 w(k)m(ey)730 b(42)1419 3678 y(\014ts)p 1546 +3678 V 32 w(delete)p 1809 3678 V 34 w(record)615 b(42)1419 +3791 y(\014ts)p 1546 3791 V 32 w(delete)p 1809 3791 V +34 w(ro)m(wlist)598 b(56)1419 3904 y(\014ts)p 1546 3904 +V 32 w(delete)p 1809 3904 V 34 w(ro)m(wrange)502 b(56)1419 +4017 y(\014ts)p 1546 4017 V 32 w(delete)p 1809 4017 V +34 w(ro)m(ws)683 b(56)1419 4130 y(\014ts)p 1546 4130 +V 32 w(delete)p 1809 4130 V 34 w(str)756 b(42)1419 4243 +y(\014ts)p 1546 4243 V 32 w(enco)s(de)p 1848 4243 V 33 +w(c)m(hksum)526 b(65)1419 4356 y(\014ts)p 1546 4356 V +32 w(\014le)p 1694 4356 V 33 w(exists)714 b(100)1419 +4469 y(\014ts)p 1546 4469 V 32 w(\014le)p 1694 4469 V +33 w(mo)s(de)764 b(35)1419 4582 y(\014ts)p 1546 4582 +V 32 w(\014le)p 1694 4582 V 33 w(name)j(35)1419 4695 +y(\014ts)p 1546 4695 V 32 w(\014nd)p 1731 4695 V 32 w(\014rst)p +1921 4695 V 32 w(ro)m(w)609 b(60)1419 4808 y(\014ts)p +1546 4808 V 32 w(\014nd)p 1731 4808 V 32 w(nextk)m(ey)636 +b(39)1419 4920 y(\014ts)p 1546 4920 V 32 w(\014nd)p 1731 +4920 V 32 w(ro)m(ws)763 b(60)1419 5033 y(\014ts)p 1546 +5033 V 32 w(\015ush)p 1767 5033 V 32 w(bu\013er)631 b(100)1419 +5146 y(\014ts)p 1546 5146 V 32 w(\015ush)p 1767 5146 +V 32 w(\014le)746 b(100)1419 5259 y(\014ts)p 1546 5259 +V 32 w(free)p 1722 5259 V 33 w(memory)438 b(110,)32 b(40)1419 +5372 y(\014ts)p 1546 5372 V 32 w(get)p 1698 5372 V 34 +w(acolparms)530 b(117)1419 5485 y(\014ts)p 1546 5485 +V 32 w(get)p 1698 5485 V 34 w(b)s(colparms)521 b(117)1419 +5598 y(\014ts)p 1546 5598 V 32 w(get)p 1698 5598 V 34 +w(c)m(hksum)675 b(65)1419 5711 y(\014ts)p 1546 5711 V +32 w(get)p 1698 5711 V 34 w(col)p 1842 5711 V 34 w(displa)m(y)p +2154 5711 V 33 w(width)291 b(55)2912 2211 y(\014ts)p +3039 2211 V 32 w(get)p 3191 2211 V 34 w(colname)511 b(54)2912 +2323 y(\014ts)p 3039 2323 V 32 w(get)p 3191 2323 V 34 +w(coln)m(um)548 b(54)2912 2436 y(\014ts)p 3039 2436 V +32 w(get)p 3191 2436 V 34 w(colt)m(yp)s(e)h(55)2912 2549 +y(\014ts)p 3039 2549 V 32 w(get)p 3191 2549 V 34 w(compression)p +3706 2549 V 33 w(t)m(yp)s(e)145 b(50)2912 2662 y(\014ts)p +3039 2662 V 32 w(get)p 3191 2662 V 34 w(eqcolt)m(yp)s(e)461 +b(55)2912 2775 y(\014ts)p 3039 2775 V 32 w(get)p 3191 +2775 V 34 w(errstatus)483 b(31)2912 2888 y(\014ts)p 3039 +2888 V 32 w(get)p 3191 2888 V 34 w(hdrp)s(os)515 b(104)2912 +3001 y(\014ts)p 3039 3001 V 32 w(get)p 3191 3001 V 34 +w(hdrspace)483 b(38)2912 3114 y(\014ts)p 3039 3114 V +32 w(get)p 3191 3114 V 34 w(hdu)p 3378 3114 V 31 w(n)m(um)474 +b(36)2912 3227 y(\014ts)p 3039 3227 V 32 w(get)p 3191 +3227 V 34 w(hdu)p 3378 3227 V 31 w(t)m(yp)s(e)h(36)2912 +3340 y(\014ts)p 3039 3340 V 32 w(get)p 3191 3340 V 34 +w(hduaddr)452 b(102)2912 3453 y(\014ts)p 3039 3453 V +32 w(get)p 3191 3453 V 34 w(hduaddrll)402 b(102)2912 +3566 y(\014ts)p 3039 3566 V 32 w(get)p 3191 3566 V 34 +w(img)p 3371 3566 V 33 w(dim)502 b(44)2912 3678 y(\014ts)p +3039 3678 V 32 w(get)p 3191 3678 V 34 w(img)p 3371 3678 +V 33 w(equivt)m(yp)s(e)268 b(43)2912 3791 y(\014ts)p +3039 3791 V 32 w(get)p 3191 3791 V 34 w(img)p 3371 3791 +V 33 w(param)401 b(44)2912 3904 y(\014ts)p 3039 3904 +V 32 w(get)p 3191 3904 V 34 w(img)p 3371 3904 V 33 w(size)513 +b(44)2912 4017 y(\014ts)p 3039 4017 V 32 w(get)p 3191 +4017 V 34 w(img)p 3371 4017 V 33 w(t)m(yp)s(e)480 b(43)2912 +4130 y(\014ts)p 3039 4130 V 32 w(get)p 3191 4130 V 34 +w(in)m(tt)m(yp)s(e)551 b(70)2912 4243 y(\014ts)p 3039 +4243 V 32 w(get)p 3191 4243 V 34 w(k)m(ey)p 3358 4243 +V 34 w(strlen)443 b(39)2912 4356 y(\014ts)p 3039 4356 +V 32 w(get)p 3191 4356 V 34 w(k)m(eyclass)518 b(70)2912 +4469 y(\014ts)p 3039 4469 V 32 w(get)p 3191 4469 V 34 +w(k)m(eyname)488 b(68)2912 4582 y(\014ts)p 3039 4582 +V 32 w(get)p 3191 4582 V 34 w(k)m(eyt)m(yp)s(e)526 b(69)2912 +4695 y(\014ts)p 3039 4695 V 32 w(get)p 3191 4695 V 34 +w(noise)p 3422 4695 V 33 w(bits)456 b(50)2912 4808 y(\014ts)p +3039 4808 V 32 w(get)p 3191 4808 V 34 w(n)m(um)p 3400 +4808 V 32 w(cols)480 b(53)2912 4920 y(\014ts)p 3039 4920 +V 32 w(get)p 3191 4920 V 34 w(n)m(um)p 3400 4920 V 32 +w(groups)362 b(95)2912 5033 y(\014ts)p 3039 5033 V 32 +w(get)p 3191 5033 V 34 w(n)m(um)p 3400 5033 V 32 w(hdus)437 +b(36)2912 5146 y(\014ts)p 3039 5146 V 32 w(get)p 3191 +5146 V 34 w(n)m(um)p 3400 5146 V 32 w(mem)m(b)s(ers)271 +b(94)2912 5259 y(\014ts)p 3039 5259 V 32 w(get)p 3191 +5259 V 34 w(n)m(um)p 3400 5259 V 32 w(ro)m(ws)446 b(53)2912 +5372 y(\014ts)p 3039 5372 V 32 w(get)p 3191 5372 V 34 +w(ro)m(wsize)503 b(118)2912 5485 y(\014ts)p 3039 5485 +V 32 w(get)p 3191 5485 V 34 w(system)p 3496 5485 V 33 +w(time)353 b(66)2912 5598 y(\014ts)p 3039 5598 V 32 w(get)p +3191 5598 V 34 w(tb)s(col)634 b(71)2912 5711 y(\014ts)p +3039 5711 V 32 w(get)p 3191 5711 V 34 w(tile)p 3350 5711 +V 34 w(dim)522 b(50)p eop end %%Page: 179 187 -TeXDict begin 179 186 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.179) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (appendix.B) cvn /DEST pdfmark end - 0 464 a 761 x Fg(App)5 b(endix)64 +TeXDict begin 179 186 bop 3764 299 a Fj(179)50 543 y(\014ts)p +177 543 28 4 v 32 w(get)p 329 543 V 34 w(timeout)554 +b(101)50 656 y(\014ts)p 177 656 V 32 w(get)p 329 656 +V 34 w(v)m(ersion)628 b(67)50 769 y(\014ts)p 177 769 +V 32 w(hdr2str)c(40,)31 b(88)50 882 y(\014ts)p 177 882 +V 32 w(init)p 345 882 V 33 w(h)m(ttps)641 b(101)50 995 +y(\014ts)p 177 995 V 32 w(insert)p 432 995 V 33 w(atbl)603 +b(103)50 1107 y(\014ts)p 177 1107 V 32 w(insert)p 432 +1107 V 33 w(btbl)597 b(103)50 1220 y(\014ts)p 177 1220 +V 32 w(insert)p 432 1220 V 33 w(col)694 b(57)50 1333 +y(\014ts)p 177 1333 V 32 w(insert)p 432 1333 V 33 w(cols)658 +b(57)50 1446 y(\014ts)p 177 1446 V 32 w(insert)p 432 +1446 V 33 w(group)576 b(92)50 1559 y(\014ts)p 177 1559 +V 32 w(insert)p 432 1559 V 33 w(img)613 b(102)50 1672 +y(\014ts)p 177 1672 V 32 w(insert)p 432 1672 V 33 w(k)m(ey)p +598 1672 V 34 w(n)m(ull)443 b(109)50 1785 y(\014ts)p +177 1785 V 32 w(insert)p 432 1785 V 33 w(k)m(ey)p 598 +1785 V 34 w(TYP)396 b(109)50 1898 y(\014ts)p 177 1898 +V 32 w(insert)p 432 1898 V 33 w(record)511 b(109)50 2011 +y(\014ts)p 177 2011 V 32 w(insert)p 432 2011 V 33 w(ro)m(ws)624 +b(56)50 2124 y(\014ts)p 177 2124 V 32 w(is)p 270 2124 +V 33 w(reen)m(tran)m(t)603 b(76)50 2237 y(\014ts)p 177 +2237 V 32 w(iterate)p 465 2237 V 35 w(data)593 b(85)50 +2349 y(\014ts)p 177 2349 V 32 w(mak)m(e)p 415 2349 V +34 w(hist[d])572 b(63)50 2462 y(\014ts)p 177 2462 V 32 +w(mak)m(e)p 415 2462 V 34 w(k)m(ey)687 b(69)50 2575 y(\014ts)p +177 2575 V 32 w(mak)m(e)p 415 2575 V 34 w(k)m(eyn)636 +b(69)50 2688 y(\014ts)p 177 2688 V 32 w(mak)m(e)p 415 +2688 V 34 w(nk)m(ey)g(69)50 2801 y(\014ts)p 177 2801 +V 32 w(merge)p 446 2801 V 34 w(groups)525 b(93)50 2914 +y(\014ts)p 177 2914 V 32 w(mo)s(dify)p 485 2914 V 32 +w(card)535 b(111)50 3027 y(\014ts)p 177 3027 V 32 w(mo)s(dify)p +485 3027 V 32 w(commen)m(t)392 b(42)50 3140 y(\014ts)p +177 3140 V 32 w(mo)s(dify)p 485 3140 V 32 w(k)m(ey)p +650 3140 V 34 w(n)m(ull)f(112)50 3253 y(\014ts)p 177 +3253 V 32 w(mo)s(dify)p 485 3253 V 32 w(k)m(ey)p 650 +3253 V 34 w(TYP)344 b(111)50 3366 y(\014ts)p 177 3366 +V 32 w(mo)s(dify)p 485 3366 V 32 w(name)540 b(42)50 3479 +y(\014ts)p 177 3479 V 32 w(mo)s(dify)p 485 3479 V 32 +w(record)459 b(111)50 3591 y(\014ts)p 177 3591 V 32 w(mo)s(dify)p +485 3591 V 32 w(v)m(ector)p 758 3591 V 35 w(len)360 b(58)50 +3704 y(\014ts)p 177 3704 V 32 w(mo)m(v)-5 b(abs)p 502 +3704 V 33 w(hdu)581 b(36)50 3817 y(\014ts)p 177 3817 +V 32 w(mo)m(vnam)p 547 3817 V 33 w(hdu)536 b(36)50 3930 +y(\014ts)p 177 3930 V 32 w(mo)m(vrel)p 476 3930 V 34 +w(hdu)606 b(36)50 4043 y(\014ts)p 177 4043 V 32 w(n)m(ull)p +358 4043 V 33 w(c)m(hec)m(k)665 b(68)50 4156 y(\014ts)p +177 4156 V 32 w(op)s(en)p 399 4156 V 32 w(data)d(32)50 +4269 y(\014ts)p 177 4269 V 32 w(op)s(en)p 399 4269 V +32 w(disk\014le)562 b(32)50 4382 y(\014ts)p 177 4382 +V 32 w(op)s(en)p 399 4382 V 32 w(extlist)594 b(32)50 +4495 y(\014ts)p 177 4495 V 32 w(op)s(en)p 399 4495 V +32 w(\014le)722 b(32)50 4608 y(\014ts)p 177 4608 V 32 +w(op)s(en)p 399 4608 V 32 w(image)607 b(32)50 4721 y(\014ts)p +177 4721 V 32 w(op)s(en)p 399 4721 V 32 w(table)642 b(32)50 +4833 y(\014ts)p 177 4833 V 32 w(op)s(en)p 399 4833 V +32 w(group)610 b(94)50 4946 y(\014ts)p 177 4946 V 32 +w(op)s(en)p 399 4946 V 32 w(mem)m(b)s(er)519 b(95)50 +5059 y(\014ts)p 177 5059 V 32 w(op)s(en)p 399 5059 V +32 w(mem\014le)530 b(97)50 5172 y(\014ts)p 177 5172 V +32 w(parse)p 417 5172 V 33 w(extn)m(um)521 b(99)50 5285 +y(\014ts)p 177 5285 V 32 w(parse)p 417 5285 V 33 w(input)p +663 5285 V 32 w(\014lename)246 b(99)50 5398 y(\014ts)p +177 5398 V 32 w(parse)p 417 5398 V 33 w(input)p 663 5398 +V 32 w(url)462 b(99)50 5511 y(\014ts)p 177 5511 V 32 +w(parse)p 417 5511 V 33 w(range)602 b(76)50 5624 y(\014ts)p +177 5624 V 32 w(parse)p 417 5624 V 33 w(ro)s(otname)398 +b(100)50 5737 y(\014ts)p 177 5737 V 32 w(parse)p 417 +5737 V 33 w(template)472 b(71)50 5850 y(\014ts)p 177 +5850 V 32 w(parse)p 417 5850 V 33 w(v)-5 b(alue)615 b(69)1475 +543 y(\014ts)p 1602 543 V 32 w(pix)p 1758 543 V 33 w(to)p +1871 543 V 33 w(w)m(orld)653 b(89)1475 656 y(\014ts)p +1602 656 V 32 w(read)p 1806 656 V 33 w(2d)p 1935 656 +V 33 w(TYP)567 b(117)1475 769 y(\014ts)p 1602 769 V 32 +w(read)p 1806 769 V 33 w(3d)p 1935 769 V 33 w(TYP)g(117)1475 +882 y(\014ts)p 1602 882 V 32 w(read)p 1806 882 V 33 w(atblhdr)598 +b(106)1475 995 y(\014ts)p 1602 995 V 32 w(read)p 1806 +995 V 33 w(btblhdr)592 b(106)1475 1107 y(\014ts)p 1602 +1107 V 32 w(read)p 1806 1107 V 33 w(card)766 b(38)1475 +1220 y(\014ts)p 1602 1220 V 32 w(read)p 1806 1220 V 33 +w(col)828 b(60)1475 1333 y(\014ts)p 1602 1333 V 32 w(read)p +1806 1333 V 33 w(col)p 1949 1333 V 34 w(bit)p 2094 1333 +V 637 w(123)1475 1446 y(\014ts)p 1602 1446 V 32 w(read)p +1806 1446 V 33 w(col)p 1949 1446 V 34 w(TYP)552 b(121)1475 +1559 y(\014ts)p 1602 1559 V 32 w(read)p 1806 1559 V 33 +w(coln)m(ull)679 b(60)1475 1672 y(\014ts)p 1602 1672 +V 32 w(read)p 1806 1672 V 33 w(coln)m(ull)p 2098 1672 +V 34 w(TYP)403 b(122)1475 1785 y(\014ts)p 1602 1785 V +32 w(read)p 1806 1785 V 33 w(descript)578 b(123)1475 +1898 y(\014ts)p 1602 1898 V 32 w(read)p 1806 1898 V 33 +w(descripts)542 b(123)1475 2011 y(\014ts)p 1602 2011 +V 32 w(read)p 1806 2011 V 33 w(errmsg)669 b(32)1475 2124 +y(\014ts)p 1602 2124 V 32 w(read)p 1806 2124 V 33 w(ext)769 +b(103)1475 2237 y(\014ts)p 1602 2237 V 32 w(read)p 1806 +2237 V 33 w(grppar)p 2103 2237 V 32 w(TYP)400 b(116)1475 +2349 y(\014ts)p 1602 2349 V 32 w(read)p 1806 2349 V 33 +w(img)746 b(116)1475 2462 y(\014ts)p 1602 2462 V 32 w(read)p +1806 2462 V 33 w(img)p 1985 2462 V 33 w(co)s(ord)539 +b(89)1475 2575 y(\014ts)p 1602 2575 V 32 w(read)p 1806 +2575 V 33 w(img)p 1985 2575 V 33 w(TYP)517 b(116)1475 +2688 y(\014ts)p 1602 2688 V 32 w(read)p 1806 2688 V 33 +w(imghdr)608 b(106)1475 2801 y(\014ts)p 1602 2801 V 32 +w(read)p 1806 2801 V 33 w(imgn)m(ull)597 b(116)1475 2914 +y(\014ts)p 1602 2914 V 32 w(read)p 1806 2914 V 33 w(imgn)m(ull)p +2134 2914 V 33 w(TYP)368 b(116)1475 3027 y(\014ts)p 1602 +3027 V 32 w(read)p 1806 3027 V 33 w(k)m(ey)805 b(38)1475 +3140 y(\014ts)p 1602 3140 V 32 w(read)p 1806 3140 V 33 +w(k)m(ey)p 1972 3140 V 33 w(longstr)453 b(110)1475 3253 +y(\014ts)p 1602 3253 V 32 w(read)p 1806 3253 V 33 w(k)m(ey)p +1972 3253 V 33 w(triple)514 b(111)1475 3366 y(\014ts)p +1602 3366 V 32 w(read)p 1806 3366 V 33 w(k)m(ey)p 1972 +3366 V 33 w(unit)610 b(40)1475 3479 y(\014ts)p 1602 3479 +V 32 w(read)p 1806 3479 V 33 w(k)m(ey)p 1972 3479 V 33 +w(TYP)530 b(110)1475 3591 y(\014ts)p 1602 3591 V 32 w(read)p +1806 3591 V 33 w(k)m(eyn)754 b(39)1475 3704 y(\014ts)p +1602 3704 V 32 w(read)p 1806 3704 V 33 w(k)m(eys)p 2008 +3704 V 33 w(TYP)494 b(110)1475 3817 y(\014ts)p 1602 3817 +V 32 w(read)p 1806 3817 V 33 w(k)m(eyw)m(ord)610 b(38)1475 +3930 y(\014ts)p 1602 3930 V 32 w(read)p 1806 3930 V 33 +w(pix)814 b(46)1475 4043 y(\014ts)p 1602 4043 V 32 w(read)p +1806 4043 V 33 w(pixn)m(ull)665 b(46)1475 4156 y(\014ts)p +1602 4156 V 32 w(read)p 1806 4156 V 33 w(record)690 b(39)1475 +4269 y(\014ts)p 1602 4269 V 32 w(read)p 1806 4269 V 33 +w(str)831 b(38)1475 4382 y(\014ts)p 1602 4382 V 32 w(read)p +1806 4382 V 33 w(string)p 2067 4382 V 33 w(k)m(ey)544 +b(39)1475 4495 y(\014ts)p 1602 4495 V 32 w(read)p 1806 +4495 V 33 w(subset)689 b(46)1475 4608 y(\014ts)p 1602 +4608 V 32 w(read)p 1806 4608 V 33 w(subset)p 2088 4608 +V 32 w(TYP)248 b(117)32 b(122)1475 4721 y(\014ts)p 1602 +4721 V 32 w(read)p 1806 4721 V 33 w(subsetn)m(ull)p 2237 +4721 V 32 w(TYP)99 b(117)32 b(122)1475 4833 y(\014ts)p +1602 4833 V 32 w(read)p 1806 4833 V 33 w(tbl)p 1950 4833 +V 33 w(co)s(ord)574 b(89)1475 4946 y(\014ts)p 1602 4946 +V 32 w(read)p 1806 4946 V 33 w(tblb)m(ytes)g(119)1475 +5059 y(\014ts)p 1602 5059 V 32 w(read)p 1806 5059 V 33 +w(tdim)751 b(55)1475 5172 y(\014ts)p 1602 5172 V 32 w(read)p +1806 5172 V 33 w(w)m(cstab)668 b(88)1475 5285 y(\014ts)p +1602 5285 V 32 w(rebin)p 1837 5285 V 32 w(w)m(cs[d])g(63)1475 +5398 y(\014ts)p 1602 5398 V 32 w(remo)m(v)m(e)p 1913 +5398 V 35 w(group)601 b(93)1475 5511 y(\014ts)p 1602 +5511 V 32 w(remo)m(v)m(e)p 1913 5511 V 35 w(mem)m(b)s(er)510 +b(95)1475 5624 y(\014ts)p 1602 5624 V 32 w(reop)s(en)p +1900 5624 V 32 w(\014le)729 b(98)1475 5737 y(\014ts)p +1602 5737 V 32 w(rep)s(ort)p 1880 5737 V 32 w(error)672 +b(32)1475 5850 y(\014ts)p 1602 5850 V 32 w(resize)p 1851 +5850 V 34 w(img)700 b(103)2982 543 y(\014ts)p 3109 543 +V 33 w(rms)p 3290 543 V 32 w(\015oat)750 b(76)2982 656 +y(\014ts)p 3109 656 V 33 w(rms)p 3290 656 V 32 w(short)723 +b(76)2982 769 y(\014ts)p 3109 769 V 33 w(select)p 3358 +769 V 34 w(ro)m(ws)676 b(61)2982 882 y(\014ts)p 3109 +882 V 33 w(set)p 3253 882 V 33 w(atbln)m(ull)612 b(113)2982 +995 y(\014ts)p 3109 995 V 33 w(set)p 3253 995 V 33 w(bscale)680 +b(113)2982 1107 y(\014ts)p 3109 1107 V 33 w(set)p 3253 +1107 V 33 w(btbln)m(ull)606 b(113)2982 1220 y(\014ts)p +3109 1220 V 33 w(set)p 3253 1220 V 33 w(compression)p +3767 1220 V 33 w(t)m(yp)s(e)274 b(50)2982 1333 y(\014ts)p +3109 1333 V 33 w(set)p 3253 1333 V 33 w(hdrsize)638 b(104)2982 +1446 y(\014ts)p 3109 1446 V 33 w(set)p 3253 1446 V 33 +w(hdustruc)566 b(104)2982 1559 y(\014ts)p 3109 1559 V +33 w(set)p 3253 1559 V 33 w(imgn)m(ull)622 b(113)2982 +1672 y(\014ts)p 3109 1672 V 33 w(set)p 3253 1672 V 33 +w(noise)p 3483 1672 V 33 w(bits)585 b(50)2982 1785 y(\014ts)p +3109 1785 V 33 w(set)p 3253 1785 V 33 w(tile)p 3411 1785 +V 34 w(dim)651 b(50)2982 1898 y(\014ts)p 3109 1898 V +33 w(set)p 3253 1898 V 33 w(timeout)610 b(101)2982 2011 +y(\014ts)p 3109 2011 V 33 w(set)p 3253 2011 V 33 w(tscale)696 +b(113)2982 2124 y(\014ts)p 3109 2124 V 33 w(sho)m(w)p +3337 2124 V 32 w(do)m(wnload)p 3745 2124 V 33 w(progress)100 +b(101)2982 2237 y(\014ts)p 3109 2237 V 33 w(split)p 3314 +2237 V 33 w(names)653 b(68)2982 2349 y(\014ts)p 3109 +2349 V 33 w(str2date)783 b(66)2982 2462 y(\014ts)p 3109 +2462 V 33 w(str2time)778 b(66)2982 2575 y(\014ts)p 3109 +2575 V 33 w(test)p 3288 2575 V 33 w(expr)752 b(61)2982 +2688 y(\014ts)p 3109 2688 V 33 w(test)p 3288 2688 V 33 +w(heap)695 b(118)2982 2801 y(\014ts)p 3109 2801 V 33 +w(test)p 3288 2801 V 33 w(k)m(eyw)m(ord)599 b(68)2982 +2914 y(\014ts)p 3109 2914 V 33 w(test)p 3288 2914 V 33 +w(record)679 b(68)2982 3027 y(\014ts)p 3109 3027 V 33 +w(time2str)778 b(66)2982 3140 y(\014ts)p 3109 3140 V +33 w(transfer)p 3449 3140 V 32 w(mem)m(b)s(er)448 b(95)2982 +3253 y(\014ts)p 3109 3253 V 33 w(translate)p 3490 3253 +V 34 w(k)m(eyw)m(ord)396 b(74)2982 3366 y(\014ts)p 3109 +3366 V 33 w(up)s(date)p 3418 3366 V 32 w(card)626 b(42)2982 +3479 y(\014ts)p 3109 3479 V 33 w(up)s(date)p 3418 3479 +V 32 w(c)m(hksum)499 b(65)2982 3591 y(\014ts)p 3109 3591 +V 33 w(up)s(date)p 3418 3591 V 32 w(k)m(ey)665 b(41)2982 +3704 y(\014ts)p 3109 3704 V 33 w(up)s(date)p 3418 3704 +V 32 w(k)m(ey)p 3583 3704 V 33 w(longstr)314 b(112)2982 +3817 y(\014ts)p 3109 3817 V 33 w(up)s(date)p 3418 3817 +V 32 w(k)m(ey)p 3583 3817 V 33 w(n)m(ull)483 b(41)2982 +3930 y(\014ts)p 3109 3930 V 33 w(up)s(date)p 3418 3930 +V 32 w(k)m(ey)p 3583 3930 V 33 w(TYP)391 b(112)2982 4043 +y(\014ts)p 3109 4043 V 33 w(upp)s(ercase)713 b(67)2982 +4156 y(\014ts)p 3109 4156 V 33 w(url)p 3254 4156 V 32 +w(t)m(yp)s(e)788 b(35)2982 4269 y(\014ts)p 3109 4269 +V 33 w(v)m(erb)s(ose)p 3438 4269 V 33 w(h)m(ttps)527 +b(101)2982 4382 y(\014ts)p 3109 4382 V 33 w(v)m(erify)p +3364 4382 V 33 w(c)m(hksum)552 b(65)2982 4495 y(\014ts)p +3109 4495 V 33 w(v)m(erify)p 3364 4495 V 33 w(group)623 +b(94)2982 4608 y(\014ts)p 3109 4608 V 33 w(w)m(orld)p +3362 4608 V 32 w(to)p 3474 4608 V 34 w(pix)616 b(89)2982 +4721 y(\014ts)p 3109 4721 V 33 w(write)p 3344 4721 V +33 w(2d)p 3473 4721 V 32 w(TYP)502 b(115)2982 4833 y(\014ts)p +3109 4833 V 33 w(write)p 3344 4833 V 33 w(3d)p 3473 4833 +V 32 w(TYP)g(115)2982 4946 y(\014ts)p 3109 4946 V 33 +w(write)p 3344 4946 V 33 w(atblhdr)532 b(105)2982 5059 +y(\014ts)p 3109 5059 V 33 w(write)p 3344 5059 V 33 w(btblhdr)526 +b(106)2982 5172 y(\014ts)p 3109 5172 V 33 w(write)p 3344 +5172 V 33 w(c)m(hksum)572 b(64)2982 5285 y(\014ts)p 3109 +5285 V 33 w(write)p 3344 5285 V 33 w(col)761 b(59)2982 +5398 y(\014ts)p 3109 5398 V 33 w(write)p 3344 5398 V +33 w(col)p 3487 5398 V 34 w(bit)571 b(120)2982 5511 y(\014ts)p +3109 5511 V 33 w(write)p 3344 5511 V 33 w(col)p 3487 +5511 V 34 w(TYP)486 b(119)2982 5624 y(\014ts)p 3109 5624 +V 33 w(write)p 3344 5624 V 33 w(col)p 3487 5624 V 34 +w(n)m(ull)578 b(59)2982 5737 y(\014ts)p 3109 5737 V 33 +w(write)p 3344 5737 V 33 w(coln)m(ull)612 b(59)2982 5850 +y(\014ts)p 3109 5850 V 33 w(write)p 3344 5850 V 33 w(coln)m(ull)p +3636 5850 V 34 w(TYP)337 b(119)p eop end +%%Page: 180 188 +TeXDict begin 180 187 bop 0 299 a Fj(180)2084 b Fh(APPENDIX)31 +b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)50 543 y Fj(\014ts)p +177 543 28 4 v 32 w(write)p 411 543 V 33 w(commen)m(t)313 +b(41)50 656 y(\014ts)p 177 656 V 32 w(write)p 411 656 +V 33 w(date)502 b(41)50 769 y(\014ts)p 177 769 V 32 w(write)p +411 769 V 33 w(descript)314 b(120)50 882 y(\014ts)p 177 +882 V 32 w(write)p 411 882 V 33 w(errmark)356 b(32)50 +995 y(\014ts)p 177 995 V 32 w(write)p 411 995 V 33 w(errmsg)404 +b(67)50 1107 y(\014ts)p 177 1107 V 32 w(write)p 411 1107 +V 33 w(ext)505 b(103)50 1220 y(\014ts)p 177 1220 V 32 +w(write)p 411 1220 V 33 w(exthdr)367 b(105)50 1333 y(\014ts)p +177 1333 V 32 w(write)p 411 1333 V 33 w(grphdr)358 b(105)50 +1446 y(\014ts)p 177 1446 V 32 w(write)p 411 1446 V 33 +w(grppar)p 708 1446 V 32 w(TYP)136 b(115)50 1559 y(\014ts)p +177 1559 V 32 w(write)p 411 1559 V 33 w(hdu)520 b(37)50 +1672 y(\014ts)p 177 1672 V 32 w(write)p 411 1672 V 33 +w(history)397 b(41)50 1785 y(\014ts)p 177 1785 V 32 w(write)p +411 1785 V 33 w(img)482 b(115)50 1898 y(\014ts)p 177 +1898 V 32 w(write)p 411 1898 V 33 w(img)p 590 1898 V +33 w(n)m(ull)300 b(115)50 2011 y(\014ts)p 177 2011 V +32 w(write)p 411 2011 V 33 w(img)p 590 2011 V 33 w(TYP)253 +b(115)50 2124 y(\014ts)p 177 2124 V 32 w(write)p 411 +2124 V 33 w(imghdr)344 b(105)50 2237 y(\014ts)p 177 2237 +V 32 w(write)p 411 2237 V 33 w(imgn)m(ull)333 b(115)50 +2349 y(\014ts)p 177 2349 V 32 w(write)p 411 2349 V 33 +w(imgn)m(ull)p 739 2349 V 33 w(TYP)104 b(115)50 2462 +y(\014ts)p 177 2462 V 32 w(write)p 411 2462 V 33 w(k)m(ey)540 +b(41)50 2575 y(\014ts)p 177 2575 V 32 w(write)p 411 2575 +V 33 w(k)m(ey)p 577 2575 V 34 w(longstr)188 b(107)50 +2688 y(\014ts)p 177 2688 V 32 w(write)p 411 2688 V 33 +w(k)m(ey)p 577 2688 V 34 w(longw)m(arn)100 b(107)50 2801 +y(\014ts)p 177 2801 V 32 w(write)p 411 2801 V 33 w(k)m(ey)p +577 2801 V 34 w(n)m(ull)357 b(41)50 2914 y(\014ts)p 177 +2914 V 32 w(write)p 411 2914 V 33 w(k)m(ey)p 577 2914 +V 34 w(template)114 b(108)50 3027 y(\014ts)p 177 3027 +V 32 w(write)p 411 3027 V 33 w(k)m(ey)p 577 3027 V 34 +w(triple)249 b(108)50 3140 y(\014ts)p 177 3140 V 32 w(write)p +411 3140 V 33 w(k)m(ey)p 577 3140 V 34 w(unit)344 b(42)50 +3253 y(\014ts)p 177 3253 V 32 w(write)p 411 3253 V 33 +w(k)m(ey)p 577 3253 V 34 w(TYP)265 b(107)50 3366 y(\014ts)p +177 3366 V 32 w(write)p 411 3366 V 33 w(k)m(eys)p 613 +3366 V 34 w(TYP)229 b(108)50 3479 y(\014ts)p 177 3479 +V 32 w(write)p 411 3479 V 33 w(k)m(eys)p 613 3479 V 34 +w(histo)278 b(63)50 3591 y(\014ts)p 177 3591 V 32 w(write)p +411 3591 V 33 w(n)m(ull)p 593 3591 V 33 w(img)345 b(46)50 +3704 y(\014ts)p 177 3704 V 32 w(write)p 411 3704 V 33 +w(n)m(ullro)m(ws)f(59)50 3817 y(\014ts)p 177 3817 V 32 +w(write)p 411 3817 V 33 w(pix)549 b(45)50 3930 y(\014ts)p +177 3930 V 32 w(write)p 411 3930 V 33 w(pixn)m(ull)400 +b(45)50 4043 y(\014ts)p 177 4043 V 32 w(write)p 411 4043 +V 33 w(record)425 b(42)50 4156 y(\014ts)p 177 4156 V +32 w(write)p 411 4156 V 33 w(subset)f(45)50 4269 y(\014ts)p +177 4269 V 32 w(write)p 411 4269 V 33 w(subset)p 693 +4269 V 32 w(TYP)151 b(116)50 4382 y(\014ts)p 177 4382 +V 32 w(write)p 411 4382 V 33 w(tblb)m(ytes)310 b(119)50 +4495 y(\014ts)p 177 4495 V 32 w(write)p 411 4495 V 33 +w(tdim)486 b(56)50 4608 y(\014ts)p 177 4608 V 32 w(write)p +411 4608 V 33 w(theap)406 b(118)p eop end +%%Page: 181 189 +TeXDict begin 181 188 bop 3764 299 a Fj(181)50 543 y(\013asfm)276 +b(71)50 656 y(\013bnfm)255 b(71)50 769 y(\013calc)311 +b(61)50 882 y(\013calc)p 258 882 28 4 v 34 w(rng)145 +b(61)50 995 y(\013ccls)320 b(57)50 1107 y(\013c)m(h)m(tps)246 +b Fi(??)50 1220 y Fj(\013clos)315 b(35)50 1333 y(\013cmph)197 +b(118)50 1446 y(\013cmps)258 b(67)50 1559 y(\013cmrk)j(32)50 +1672 y(\013cmsg)j(32)50 1785 y(\013cop)m(y)280 b(37)50 +1898 y(\013cp)s(cl)302 b(57)50 2011 y(\013cp)s(dt)235 +b(103)50 2124 y(\013cp\015)319 b(36)50 2237 y(\013cphd)268 +b(37)50 2349 y(\013cph)m(t)287 b(53)50 2462 y(\013cpimg)224 +b(47)50 2575 y(\013cpky)k(108)50 2688 y(\013cprw)268 +b(57)50 2801 y(\013crhd)237 b(102)50 2914 y(\013crim)284 +b(44)50 3027 y(\013cro)m(w)277 b(61)50 3140 y(\013crtb)299 +b(53)50 3253 y(\013dcol)h(57)50 3366 y(\013delt)310 b(35)50 +3479 y(\013dhdu)257 b(37)50 3591 y(\013dk)m(ey)277 b(42)50 +3704 y(\013dkinit)226 b(34)50 3817 y(\013dk)m(op)s(en)175 +b(32)50 3930 y(\013dopn)263 b(32)50 4043 y(\013drec)294 +b(42)50 4156 y(\013dro)m(w)266 b(56)50 4269 y(\013drrg)293 +b(56)50 4382 y(\013drws)272 b(56)50 4495 y(\013dstr)303 +b(42)50 4608 y(\013dsum)247 b(65)50 4721 y(\013dt2s)294 +b(66)50 4833 y(\013dtdm)248 b(55)50 4946 y(\013dt)m(yp)279 +b(69)50 5059 y(\013eopn)274 b(32)50 5172 y(\013eqt)m(y)293 +b(55)50 5285 y(\013esum)258 b(65)50 5398 y(\013exest)216 +b(100)50 5511 y(\013extn)287 b(99)50 5624 y(\013\013rw)306 +b(60)50 5737 y(\013\015md)283 b(35)50 5850 y(\013\015nm)g(35)50 +5963 y(\013\015sh)277 b(100)785 599 y(\013\015us)327 +b(100)785 712 y(\013free)175 b(110,)32 b(40)785 825 y(\013fro)m(w)339 +b(60)785 938 y(\013g2d)p 984 938 V 324 w(117)785 1051 +y(\013g3d)p 984 1051 V 324 w(117)785 1164 y(\013gab)s(c)327 +b(71)785 1277 y(\013gacl)310 b(117)785 1390 y(\013gb)s(cl)301 +b(117)785 1503 y(\013gcdw)309 b(55)785 1616 y(\013gcf)398 +b(60)785 1728 y(\013gcf)p 956 1728 V 352 w(122)785 1841 +y(\013gc)m(ks)345 b(65)785 1954 y(\013gcnn)324 b(54)785 +2067 y(\013gcno)330 b(54)785 2180 y(\013gcrd)339 b(38)785 +2293 y(\013gcv)378 b(60)785 2406 y(\013gcv)p 976 2406 +V 332 w(121)785 2519 y(\013gcx)332 b(123)785 2632 y(\013gdes)293 +b(123)785 2745 y(\013gdess)257 b(123)785 2858 y(\013gerr)354 +b(31)785 2970 y(\013gextn)246 b(103)785 3083 y(\013ggp)p +984 3083 V 324 w(116)785 3196 y(\013ghad)273 b(102)785 +3309 y(\013gh)m(bn)d(106)785 3422 y(\013ghdn)313 b(36)785 +3535 y(\013ghdt)329 b(36)785 3648 y(\013ghpr)282 b(106)785 +3761 y(\013ghps)g(104)785 3874 y(\013ghsp)328 b(38)785 +3987 y(\013gh)m(tb)286 b(106)785 4100 y(\013gics)365 +b(89)785 4212 y(\013gidm)314 b(44)785 4325 y(\013gidt)355 +b(43)785 4438 y(\013giet)366 b(43)785 4551 y(\013gipr)354 +b(44)785 4664 y(\013gisz)365 b(44)785 4777 y(\013gk)m(cl)356 +b(70)785 4890 y(\013gk)m(ey)333 b(38)785 5003 y(\013gkls)311 +b(110)785 5116 y(\013gksl)357 b(39)785 5229 y(\013gkn)p +987 5229 V 321 w(110)785 5342 y(\013gknm)291 b(68)785 +5454 y(\013gky)370 b(38)785 5567 y(\013gkyn)319 b(39)785 +5680 y(\013gkyt)289 b(111)785 5793 y(\013gky)p 984 5793 +V 324 w(110)785 5906 y(\013gmcp)299 b(95)1570 599 y(\013gmng)327 +b(95)1570 712 y(\013gmop)g(95)1570 825 y(\013gmrm)311 +b(95)1570 938 y(\013gmsg)342 b(32)1570 1051 y(\013gm)m(tf)363 +b(95)1570 1164 y(\013gncl)383 b(53)1570 1277 y(\013gnrw)346 +b(53)1570 1390 y(\013gnxk)352 b(39)1570 1503 y(\013gpf)375 +b(116)1570 1616 y(\013gpf)p 1752 1616 V 375 w(116)1570 +1728 y(\013gp)m(v)358 b(116)1570 1841 y(\013gp)m(v)p +1769 1841 V 358 w(116)1570 1954 y(\013gp)m(xv)d(46)1570 +2067 y(\013gp)m(xf)375 b(46)1570 2180 y(\013grec)383 +b(39)1570 2293 y(\013grsz)342 b(118)1570 2406 y(\013gsdt)377 +b(66)1570 2519 y(\013gsf)p 1737 2519 V 223 w(117)32 b(122)1570 +2632 y(\013gsky)367 b(39)1570 2745 y(\013gstm)352 b(66)1570 +2858 y(\013gstr)392 b(38)1570 2970 y(\013gsv)415 b(46)1570 +3083 y(\013gsv)p 1757 3083 V 203 w(117)32 b(122)1570 +3196 y(\013gtam)343 b(94)1570 3309 y(\013gtbb)317 b(119)1570 +3422 y(\013gtc)m(h)376 b(92)1570 3535 y(\013gtcl)399 +b(55)1570 3648 y(\013gtcm)348 b(93)1570 3761 y(\013gtcp)373 +b(93)1570 3874 y(\013gtcr)388 b(92)1570 3987 y(\013gtcs)g(89)1570 +4100 y(\013gtdm)337 b(55)1570 4212 y(\013gthd)362 b(71)1570 +4325 y(\013gtis)403 b(92)1570 4438 y(\013gtmg)343 b(93)1570 +4551 y(\013gtmo)298 b(101)1570 4664 y(\013gtnm)337 b(94)1570 +4777 y(\013gtop)368 b(94)1570 4890 y(\013gtrm)352 b(93)1570 +5003 y(\013gtvf)388 b(94)1570 5116 y(\013gun)m(t)365 +b(40)1570 5229 y(\013hdef)329 b(104)1570 5342 y(\016bin)349 +b(103)1570 5454 y(\016cls)420 b(57)1570 5567 y(\016col)411 +b(57)1570 5680 y(\016\014le)405 b(99)1570 5793 y(\016h)m(tps)306 +b(101)1570 5906 y(\016img)330 b(102)2388 599 y(\016kls)215 +b(109)2388 712 y(\016kyu)177 b(109)2388 825 y(\016ky)p +2565 825 V 228 w(109)2388 938 y(\016mem)g(98)2388 1051 +y(\016nit)258 b(34)2388 1164 y(\016n)m(tt)m(yp)155 b(70)2388 +1277 y(\016opn)222 b(32)2388 1390 y(\016rec)208 b(109)2388 +1503 y(\016ro)m(w)225 b(56)2388 1616 y(\016tab)193 b(103)2388 +1728 y(\016ter)258 b(85)2388 1841 y(\016url)f(99)2388 +1954 y(\013k)m(eyn)208 b(69)2388 2067 y(\013mahd)169 +b(36)2388 2180 y(\013mcom)155 b(42)2388 2293 y(\013mcrd)144 +b(111)2388 2406 y(\013mkky)172 b(69)2388 2519 y(\013mkls)162 +b(111)2388 2632 y(\013mkyu)124 b(112)2388 2745 y(\013mky)p +2618 2745 V 175 w(111)2388 2858 y(\013mnam)144 b(42)2388 +2970 y(\013mnhd)163 b(36)2388 3083 y(\013mrec)155 b(111)2388 +3196 y(\013mrhd)178 b(36)2388 3309 y(\013m)m(v)m(ec)194 +b(58)2388 3422 y(\013nc)m(hk)205 b(68)2388 3535 y(\013nk)m(ey)j(69)2388 +3648 y(\013omem)155 b(97)2388 3761 y(\013op)s(en)202 +b(32)2388 3874 y(\013p2d)p 2593 3874 V 200 w(115)2388 +3987 y(\013p3d)p 2593 3987 V 200 w(115)2388 4100 y(\013p)s(c)m(ks)217 +b(64)2388 4212 y(\013p)s(cl)273 b(59)2388 4325 y(\013p)s(cls)192 +b(119)2388 4438 y(\013p)s(cl)p 2565 4438 V 228 w(120)2388 +4551 y(\013p)s(clu)222 b(59)2388 4664 y(\013p)s(cn)247 +b(59)2388 4777 y(\013p)s(cn)p 2591 4777 V 202 w(119)2388 +4890 y(\013p)s(com)177 b(41)2388 5003 y(\013p)s(dat)207 +b(41)2388 5116 y(\013p)s(des)166 b(120)2388 5229 y(\013p)s(extn)119 +b(103)2388 5342 y(\013pgp)p 2593 5342 V 200 w(115)2388 +5454 y(\013ph)m(bn)146 b(106)2388 5567 y(\013phext)122 +b(105)2388 5680 y(\013phis)229 b(41)2388 5793 y(\013phpr)158 +b(105)2388 5906 y(\013phps)g(105)3054 599 y(\013ph)m(tb)180 +b(105)3054 712 y(\013pkls)205 b(107)3054 825 y(\013pkn)p +3262 825 V 215 w(108)3054 938 y(\013pktp)180 b(108)3054 +1051 y(\013pky)264 b(41)3054 1164 y(\013pkyt)183 b(108)3054 +1277 y(\013pkyu)213 b(41)3054 1390 y(\013pky)p 3259 1390 +V 218 w(107)3054 1503 y(\013plsw)187 b(107)3054 1616 +y(\013pmrk)200 b(32)3054 1728 y(\013pmsg)j(67)3054 1841 +y(\013pn)m(ul)190 b(113)3054 1954 y(\013ppn)212 b(115)3054 +2067 y(\013ppn)p 3265 2067 V 212 w(115)3054 2180 y(\013ppr)227 +b(115)3054 2293 y(\013pprn)222 b(46)3054 2406 y(\013ppru)176 +b(115)3054 2519 y(\013ppr)p 3250 2519 V 227 w(115)3054 +2632 y(\013pp)m(x)264 b(45)3054 2745 y(\013pp)m(xn)213 +b(45)3054 2858 y(\013prec)244 b(42)3054 2970 y(\013prwu)207 +b(59)3054 3083 y(\013pscl)213 b(113)3054 3196 y(\013pss)288 +b(45)3054 3309 y(\013pss)p 3235 3309 V 242 w(116)3054 +3422 y(\013psv)m(c)239 b(69)3054 3535 y(\013ptbb)177 +b(119)3054 3648 y(\013ptdm)198 b(56)3054 3761 y(\013pthp)177 +b(118)3054 3874 y(\013pun)m(t)226 b(42)3054 3987 y(\013rdef)210 +b(104)3054 4100 y(\013reop)s(en)145 b(98)3054 4212 y(\013rprt)253 +b(32)3054 4325 y(\013rsim)192 b(103)3054 4438 y(\013rtnm)167 +b(100)3054 4551 y(\013rwrg)228 b(76)3054 4664 y(\013s2dt)244 +b(66)3054 4777 y(\013s2tm)219 b(66)3054 4890 y(\013shdwn)110 +b(101)3054 5003 y(\013sn)m(ul)205 b(113)3054 5116 y(\013sro)m(w)231 +b(61)3054 5229 y(\013stmo)173 b(101)3054 5342 y(\013texp)237 +b(61)3054 5454 y(\013thdu)223 b(36)3054 5567 y(\013theap)143 +b(118)3054 5680 y(\013tk)m(ey)243 b(68)3054 5793 y(\013tm2s)219 +b(66)3054 5906 y(\013tn)m(ul)206 b(113)p eop end +%%Page: 182 190 +TeXDict begin 182 189 bop 0 299 a Fj(182)2084 b Fh(APPENDIX)31 +b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)50 543 y Fj(\013topn)216 +b(32)50 656 y(\013tplt)252 b(98)50 769 y(\013trec)247 +b(68)50 882 y(\013tscl)216 b(113)50 995 y(\013ucrd)k(42)50 +1107 y(\013ukls)192 b(112)50 1220 y(\013uky)251 b(41)50 +1333 y(\013ukyu)200 b(41)50 1446 y(\013uky)p 255 1446 +28 4 v 205 w(112)50 1559 y(\013up)s(c)m(h)205 b(67)50 +1672 y(\013up)s(c)m(k)j(65)50 1785 y(\013urlt)251 b(35)50 +1898 y(\013v)m(c)m(ks)232 b(65)50 2011 y(\013v)m(ers)241 +b(67)50 2124 y(\013vh)m(tps)134 b(101)50 2237 y(\013wldp)205 +b(89)50 2349 y(\013wrhdu)143 b(37)50 2462 y(\013xyp)m(x)206 +b(89)p eop end +%%Page: 183 191 +TeXDict begin 183 190 bop 0 1225 a Fg(App)5 b(endix)64 b(B)0 1687 y Fm(P)-6 b(arameter)77 b(De\014nitions)0 2180 y Fe(anynul)142 b(-)47 b(set)g(to)g(TRUE)g(\(=1\))f(if)i(any)e (returned)g(values)g(are)h(undefined,)e(else)i(FALSE)0 @@ -26434,33 +17306,21 @@ b(-)47 b(grouping)f(table)g(copy)h(option)f(parameter.)f(Allowed)g (values)i(are:)525 5567 y(OPT_GCP_GPT,)d(OPT_GCP_MBR,)h(OPT_GCP_ALL,)f (OPT_MCP_ADD,)h(OPT_MCP_NADD,)525 5680 y(OPT_MCP_REPL,)f(amd)j -(OPT_MCP_MOV.)1882 5942 y Fj(179)p eop end -%%Page: 180 188 -TeXDict begin 180 187 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.180) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(180)1822 -b Fh(APPENDIX)31 b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 -555 y Fe(create_col-)45 b(If)i(TRUE,)f(then)h(insert)f(a)h(new)g -(column)f(in)i(the)f(table,)f(otherwise)525 668 y(overwrite)f(the)i -(existing)f(column.)0 781 y(current)94 b(-)47 b(if)g(TRUE,)g(then)f -(the)h(current)f(HDU)h(will)f(be)i(copied)0 894 y(dataok)142 -b(-)47 b(was)g(the)g(data)f(unit)h(verification)e(successful)g(\(=1\))h -(or)525 1007 y(not)h(\(=)g(-1\).)94 b(Equals)47 b(zero)f(if)h(the)g -(DATASUM)f(keyword)g(is)h(not)g(present.)0 1120 y(datasum)94 -b(-)47 b(32-bit)f(1's)h(complement)e(checksum)h(for)g(the)h(data)g -(unit)0 1233 y(dataend)94 b(-)47 b(address)f(\(in)h(bytes\))f(of)h(the) -g(end)g(of)g(the)g(HDU)0 1346 y(datastart-)e(address)h(\(in)h(bytes\))f -(of)h(the)g(start)f(of)h(the)g(data)g(unit)0 1458 y(datatype)f(-)h +(OPT_MCP_MOV.)1882 5942 y Fj(183)p eop end +%%Page: 184 192 +TeXDict begin 184 191 bop 0 299 a Fj(184)1822 b Fh(APPENDIX)31 +b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(create_col-)45 +b(If)i(TRUE,)f(then)h(insert)f(a)h(new)g(column)f(in)i(the)f(table,)f +(otherwise)525 668 y(overwrite)f(the)i(existing)f(column.)0 +781 y(current)94 b(-)47 b(if)g(TRUE,)g(then)f(the)h(current)f(HDU)h +(will)f(be)i(copied)0 894 y(dataok)142 b(-)47 b(was)g(the)g(data)f +(unit)h(verification)e(successful)g(\(=1\))h(or)525 1007 +y(not)h(\(=)g(-1\).)94 b(Equals)47 b(zero)f(if)h(the)g(DATASUM)f +(keyword)g(is)h(not)g(present.)0 1120 y(datasum)94 b(-)47 +b(32-bit)f(1's)h(complement)e(checksum)h(for)g(the)h(data)g(unit)0 +1233 y(dataend)94 b(-)47 b(address)f(\(in)h(bytes\))f(of)h(the)g(end)g +(of)g(the)g(HDU)0 1346 y(datastart-)e(address)h(\(in)h(bytes\))f(of)h +(the)g(start)f(of)h(the)g(data)g(unit)0 1458 y(datatype)f(-)h (specifies)e(the)i(data)g(type)f(of)i(the)f(value.)93 b(Allowed)46 b(value)h(are:)94 b(TSTRING,)525 1571 y(TLOGICAL,)45 b(TBYTE,)h(TSBYTE,)g(TSHORT,)g(TUSHORT,)g(TINT,)g(TUINT,)g(TLONG,)g @@ -26512,63 +17372,51 @@ (HDU)h(will)g(be)g(copied)0 5636 y(fpixel)142 b(-)47 b(coordinate)e(of)i(the)g(first)f(pixel)h(to)g(be)g(read)g(or)g (written)f(in)h(the)p eop end -%%Page: 181 189 -TeXDict begin 181 188 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.181) cvn /DEST pdfmark end - -8 191 a 3764 299 a Fj(181)525 -555 y Fe(FITS)47 b(array.)93 b(The)47 b(array)g(must)f(be)i(of)f -(length)f(NAXIS)g(and)h(have)g(values)f(such)525 668 -y(that)h(fpixel[0])e(is)i(in)g(the)g(range)g(1)g(to)g(NAXIS1,)f -(fpixel[1])f(is)i(in)h(the)525 781 y(range)e(1)i(to)f(NAXIS2,)f(etc.)0 -894 y(fptr)238 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h -(describing)f(the)i(FITS)f(file.)0 1007 y(frac)238 b(-)47 -b(factional)e(part)i(of)g(the)g(keyword)f(value)0 1120 -y(gcount)142 b(-)47 b(number)f(of)h(groups)f(in)i(the)e(primary)g -(array)h(\(usually)e(=)j(1\))0 1233 y(gfptr)190 b(-)47 -b(fitsfile*)e(pointer)h(to)h(a)h(grouping)d(table)i(HDU.)0 -1346 y(group)190 b(-)47 b(GRPIDn/GRPLCn)d(index)j(value)f(identifying)f -(a)i(grouping)f(table)g(HDU,)h(or)525 1458 y(data)g(group)f(number)g -(\(=0)h(for)g(non-grouped)e(data\))0 1571 y(grouptype)g(-)j(Grouping)d -(table)i(parameter)e(that)i(specifies)e(the)i(columns)f(to)h(be)525 -1684 y(created)f(in)h(a)g(grouping)f(table)g(HDU.)h(Allowed)f(values)g -(are:)h(GT_ID_ALL_URI,)525 1797 y(GT_ID_REF,)e(GT_ID_POS,)g(GT_ID_ALL,) -g(GT_ID_REF_URI,)f(and)j(GT_ID_POS_URI.)0 1910 y(grpname)94 -b(-)47 b(value)f(to)i(use)e(for)h(the)g(GRPNAME)f(keyword)g(value.)0 -2023 y(hdunum)142 b(-)47 b(sequence)f(number)g(of)h(the)g(HDU)g -(\(Primary)e(array)i(=)g(1\))0 2136 y(hduok)190 b(-)47 -b(was)g(the)g(HDU)g(verification)d(successful)h(\(=1\))i(or)525 -2249 y(not)g(\(=)g(-1\).)94 b(Equals)47 b(zero)f(if)h(the)g(CHECKSUM)f -(keyword)g(is)h(not)g(present.)0 2362 y(hdusum)142 b(-)47 -b(32)g(bit)g(1's)g(complement)e(checksum)h(for)g(the)h(entire)f(CHDU)0 -2475 y(hdutype)94 b(-)47 b(HDU)g(type:)f(IMAGE_HDU)g(\(0\),)g -(ASCII_TBL)f(\(1\),)i(BINARY_TBL)e(\(2\),)i(ANY_HDU)f(\(-1\))0 -2588 y(header)142 b(-)47 b(returned)f(character)f(string)h(containing)f -(all)i(the)g(keyword)f(records)0 2700 y(headstart-)f(starting)h -(address)f(\(in)i(bytes\))f(of)i(the)e(CHDU)0 2813 y(heapsize)g(-)h -(size)g(of)g(the)g(binary)f(table)g(heap,)h(in)g(bytes)0 -2926 y(history)94 b(-)47 b(the)g(HISTORY)f(keyword)g(comment)f(string)h -(\(70)h(char)g(max,)g(null-terminated\))0 3039 y(hour)238 -b(-)47 b(hour)g(within)f(day)h(\(UTC\))f(\(0)h(-)h(23\))0 -3152 y(inc)286 b(-)47 b(sampling)f(interval)f(for)i(pixels)f(in)h(each) -g(FITS)g(dimension)0 3265 y(inclist)94 b(-)47 b(array)f(of)i(pointers)d -(to)i(matching)f(keyword)g(names)0 3378 y(incolnum)g(-)h(input)f -(column)g(number;)g(range)h(=)g(1)h(to)f(TFIELDS)0 3491 -y(infile)142 b(-)47 b(the)g(input)f(filename,)g(including)f(path)h(if)i -(specified)0 3604 y(infptr)142 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e -(structure)h(describing)f(the)i(input)f(FITS)h(file.)0 -3717 y(intval)142 b(-)47 b(integer)f(part)g(of)i(the)f(keyword)e(value) -0 3830 y(iomode)142 b(-)47 b(file)g(access)f(mode:)g(either)g(READONLY) -g(\(=0\))g(or)i(READWRITE)d(\(=1\))0 3942 y(keyname)94 +%%Page: 185 193 +TeXDict begin 185 192 bop 3764 299 a Fj(185)525 555 y +Fe(FITS)47 b(array.)93 b(The)47 b(array)g(must)f(be)i(of)f(length)f +(NAXIS)g(and)h(have)g(values)f(such)525 668 y(that)h(fpixel[0])e(is)i +(in)g(the)g(range)g(1)g(to)g(NAXIS1,)f(fpixel[1])f(is)i(in)h(the)525 +781 y(range)e(1)i(to)f(NAXIS2,)f(etc.)0 894 y(fptr)238 +b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h(describing)f(the)i +(FITS)f(file.)0 1007 y(frac)238 b(-)47 b(factional)e(part)i(of)g(the)g +(keyword)f(value)0 1120 y(gcount)142 b(-)47 b(number)f(of)h(groups)f +(in)i(the)e(primary)g(array)h(\(usually)e(=)j(1\))0 1233 +y(gfptr)190 b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h(grouping)d(table)i +(HDU.)0 1346 y(group)190 b(-)47 b(GRPIDn/GRPLCn)d(index)j(value)f +(identifying)f(a)i(grouping)f(table)g(HDU,)h(or)525 1458 +y(data)g(group)f(number)g(\(=0)h(for)g(non-grouped)e(data\))0 +1571 y(grouptype)g(-)j(Grouping)d(table)i(parameter)e(that)i(specifies) +e(the)i(columns)f(to)h(be)525 1684 y(created)f(in)h(a)g(grouping)f +(table)g(HDU.)h(Allowed)f(values)g(are:)h(GT_ID_ALL_URI,)525 +1797 y(GT_ID_REF,)e(GT_ID_POS,)g(GT_ID_ALL,)g(GT_ID_REF_URI,)f(and)j +(GT_ID_POS_URI.)0 1910 y(grpname)94 b(-)47 b(value)f(to)i(use)e(for)h +(the)g(GRPNAME)f(keyword)g(value.)0 2023 y(hdunum)142 +b(-)47 b(sequence)f(number)g(of)h(the)g(HDU)g(\(Primary)e(array)i(=)g +(1\))0 2136 y(hduok)190 b(-)47 b(was)g(the)g(HDU)g(verification)d +(successful)h(\(=1\))i(or)525 2249 y(not)g(\(=)g(-1\).)94 +b(Equals)47 b(zero)f(if)h(the)g(CHECKSUM)f(keyword)g(is)h(not)g +(present.)0 2362 y(hdusum)142 b(-)47 b(32)g(bit)g(1's)g(complement)e +(checksum)h(for)g(the)h(entire)f(CHDU)0 2475 y(hdutype)94 +b(-)47 b(HDU)g(type:)f(IMAGE_HDU)g(\(0\),)g(ASCII_TBL)f(\(1\),)i +(BINARY_TBL)e(\(2\),)i(ANY_HDU)f(\(-1\))0 2588 y(header)142 +b(-)47 b(returned)f(character)f(string)h(containing)f(all)i(the)g +(keyword)f(records)0 2700 y(headstart-)f(starting)h(address)f(\(in)i +(bytes\))f(of)i(the)e(CHDU)0 2813 y(heapsize)g(-)h(size)g(of)g(the)g +(binary)f(table)g(heap,)h(in)g(bytes)0 2926 y(history)94 +b(-)47 b(the)g(HISTORY)f(keyword)g(comment)f(string)h(\(70)h(char)g +(max,)g(null-terminated\))0 3039 y(hour)238 b(-)47 b(hour)g(within)f +(day)h(\(UTC\))f(\(0)h(-)h(23\))0 3152 y(inc)286 b(-)47 +b(sampling)f(interval)f(for)i(pixels)f(in)h(each)g(FITS)g(dimension)0 +3265 y(inclist)94 b(-)47 b(array)f(of)i(pointers)d(to)i(matching)f +(keyword)g(names)0 3378 y(incolnum)g(-)h(input)f(column)g(number;)g +(range)h(=)g(1)h(to)f(TFIELDS)0 3491 y(infile)142 b(-)47 +b(the)g(input)f(filename,)g(including)f(path)h(if)i(specified)0 +3604 y(infptr)142 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h +(describing)f(the)i(input)f(FITS)h(file.)0 3717 y(intval)142 +b(-)47 b(integer)f(part)g(of)i(the)f(keyword)e(value)0 +3830 y(iomode)142 b(-)47 b(file)g(access)f(mode:)g(either)g(READONLY)g +(\(=0\))g(or)i(READWRITE)d(\(=1\))0 3942 y(keyname)94 b(-)47 b(name)g(of)g(a)g(keyword)f(\(8)h(char)g(max,)g (null-terminated\))0 4055 y(keynum)142 b(-)47 b(position)f(of)h (keyword)f(in)h(header)f(\(1st)g(keyword)g(=)i(1\))0 @@ -26592,53 +17440,40 @@ (FITS)g(file)g(in)g(memory)0 5636 y(mem_realloc)e(-)i(pointer)f(to)h(a) h(function)d(for)i(reallocating)e(more)h(memory)p eop end -%%Page: 182 190 -TeXDict begin 182 189 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.182) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(182)1822 -b Fh(APPENDIX)31 b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 -555 y Fe(memsize)94 b(-)47 b(size)g(of)g(the)g(memory)f(block)g -(allocated)f(for)i(the)g(FITS)g(file)0 668 y(mfptr)190 -b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h(grouping)d(table)i(member)f -(HDU.)0 781 y(mgopt)190 b(-)47 b(grouping)f(table)g(merge)g(option)g -(parameter.)f(Allowed)h(values)g(are:)525 894 y(OPT_MRG_COPY,)e(and)j -(OPT_MRG_MOV.)0 1007 y(minute)142 b(-)47 b(minute)f(within)g(hour)h -(\(UTC\))f(\(0)h(-)h(59\))0 1120 y(month)190 b(-)47 b(calendar)f(month) -g(\(UTC\))g(\(1)h(-)h(12\))0 1233 y(morekeys)e(-)h(space)f(in)i(the)e -(header)h(for)f(this)h(many)g(more)f(keywords)0 1346 -y(n_good_rows)f(-)i(number)f(of)h(rows)g(evaluating)e(to)i(TRUE)0 -1458 y(namelist)f(-)h(string)f(containing)f(a)j(comma)e(or)h(space)f -(delimited)g(list)g(of)i(names)0 1571 y(naxes)190 b(-)47 -b(size)g(of)g(each)f(dimension)g(in)h(the)g(FITS)f(array)0 -1684 y(naxis)190 b(-)47 b(number)f(of)h(dimensions)e(in)i(the)g(FITS)g -(array)0 1797 y(naxis1)142 b(-)47 b(length)f(of)h(the)g(X/first)f(axis) -h(of)g(the)g(FITS)f(array)0 1910 y(naxis2)142 b(-)47 -b(length)f(of)h(the)g(Y/second)f(axis)g(of)i(the)e(FITS)h(array)0 -2023 y(naxis3)142 b(-)47 b(length)f(of)h(the)g(Z/third)f(axis)h(of)g -(the)g(FITS)f(array)0 2136 y(nbytes)142 b(-)47 b(number)f(of)h(bytes)g -(or)g(characters)e(to)i(read)g(or)g(write)0 2249 y(nchars)142 -b(-)47 b(number)f(of)h(characters)e(to)i(read)g(or)g(write)0 -2362 y(nelements-)e(number)h(of)h(data)g(elements)e(to)j(read)e(or)h -(write)0 2475 y(newfptr)94 b(-)47 b(returned)f(pointer)f(to)j(the)e -(reopened)g(file)0 2588 y(newveclen-)f(new)i(value)f(for)h(the)g -(column)f(vector)g(repeat)g(parameter)0 2700 y(nexc)238 -b(-)47 b(number)f(of)h(names)g(in)g(the)g(exclusion)e(list)i(\(may)f(=) -i(0\))0 2813 y(nfound)142 b(-)47 b(number)f(of)h(keywords)f(found)g -(\(highest)g(keyword)g(number\))0 2926 y(nkeys)190 b(-)47 -b(number)f(of)h(keywords)f(in)h(the)g(sequence)0 3039 -y(ninc)238 b(-)47 b(number)f(of)h(names)g(in)g(the)g(inclusion)e(list)0 -3152 y(nmembers)h(-)h(Number)f(of)h(grouping)f(table)g(members)g -(\(NAXIS2)g(value\).)0 3265 y(nmove)190 b(-)47 b(number)f(of)h(HDUs)g +%%Page: 186 194 +TeXDict begin 186 193 bop 0 299 a Fj(186)1822 b Fh(APPENDIX)31 +b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(memsize)94 +b(-)47 b(size)g(of)g(the)g(memory)f(block)g(allocated)f(for)i(the)g +(FITS)g(file)0 668 y(mfptr)190 b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h +(grouping)d(table)i(member)f(HDU.)0 781 y(mgopt)190 b(-)47 +b(grouping)f(table)g(merge)g(option)g(parameter.)f(Allowed)h(values)g +(are:)525 894 y(OPT_MRG_COPY,)e(and)j(OPT_MRG_MOV.)0 +1007 y(minute)142 b(-)47 b(minute)f(within)g(hour)h(\(UTC\))f(\(0)h(-)h +(59\))0 1120 y(month)190 b(-)47 b(calendar)f(month)g(\(UTC\))g(\(1)h(-) +h(12\))0 1233 y(morekeys)e(-)h(space)f(in)i(the)e(header)h(for)f(this)h +(many)g(more)f(keywords)0 1346 y(n_good_rows)f(-)i(number)f(of)h(rows)g +(evaluating)e(to)i(TRUE)0 1458 y(namelist)f(-)h(string)f(containing)f +(a)j(comma)e(or)h(space)f(delimited)g(list)g(of)i(names)0 +1571 y(naxes)190 b(-)47 b(size)g(of)g(each)f(dimension)g(in)h(the)g +(FITS)f(array)0 1684 y(naxis)190 b(-)47 b(number)f(of)h(dimensions)e +(in)i(the)g(FITS)g(array)0 1797 y(naxis1)142 b(-)47 b(length)f(of)h +(the)g(X/first)f(axis)h(of)g(the)g(FITS)f(array)0 1910 +y(naxis2)142 b(-)47 b(length)f(of)h(the)g(Y/second)f(axis)g(of)i(the)e +(FITS)h(array)0 2023 y(naxis3)142 b(-)47 b(length)f(of)h(the)g(Z/third) +f(axis)h(of)g(the)g(FITS)f(array)0 2136 y(nbytes)142 +b(-)47 b(number)f(of)h(bytes)g(or)g(characters)e(to)i(read)g(or)g +(write)0 2249 y(nchars)142 b(-)47 b(number)f(of)h(characters)e(to)i +(read)g(or)g(write)0 2362 y(nelements-)e(number)h(of)h(data)g(elements) +e(to)j(read)e(or)h(write)0 2475 y(newfptr)94 b(-)47 b(returned)f +(pointer)f(to)j(the)e(reopened)g(file)0 2588 y(newveclen-)f(new)i +(value)f(for)h(the)g(column)f(vector)g(repeat)g(parameter)0 +2700 y(nexc)238 b(-)47 b(number)f(of)h(names)g(in)g(the)g(exclusion)e +(list)i(\(may)f(=)i(0\))0 2813 y(nfound)142 b(-)47 b(number)f(of)h +(keywords)f(found)g(\(highest)g(keyword)g(number\))0 +2926 y(nkeys)190 b(-)47 b(number)f(of)h(keywords)f(in)h(the)g(sequence) +0 3039 y(ninc)238 b(-)47 b(number)f(of)h(names)g(in)g(the)g(inclusion)e +(list)0 3152 y(nmembers)h(-)h(Number)f(of)h(grouping)f(table)g(members) +g(\(NAXIS2)g(value\).)0 3265 y(nmove)190 b(-)47 b(number)f(of)h(HDUs)g (to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f(position)0 3378 y(nocomments)f(-)i(if)h(equal)e(to)h(TRUE,)g(then)f(no)h (commentary)e(keywords)h(will)h(be)g(copied)0 3491 y(noisebits-)e @@ -26670,28 +17505,16 @@ b(-)47 b(grouping)f(table)g(remove)g(option)g(parameter.)f(Allowed)h (values)g(are:)525 5636 y(OPT_RM_GPT,)f(OPT_RM_ENTRY,)f(OPT_RM_MBR,)h (and)i(OPT_RM_ALL.)p eop end -%%Page: 183 191 -TeXDict begin 183 190 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.183) cvn /DEST pdfmark end - -8 191 a 3764 299 a Fj(183)0 -555 y Fe(rootname)46 b(-)h(root)g(filename,)e(minus)h(any)h(extension)e -(or)j(filtering)d(specifications)0 668 y(rot)286 b(-)47 -b(celestial)e(coordinate)g(rotation)h(angle)g(\(degrees\))0 -781 y(rowlen)142 b(-)47 b(length)f(of)h(a)h(table)e(row,)h(in)g -(characters)e(or)i(bytes)0 894 y(rowlist)94 b(-)47 b(sorted)f(list)h -(of)g(row)g(numbers)f(to)h(be)g(deleted)f(from)g(the)h(table)0 -1007 y(rownum)142 b(-)47 b(number)f(of)h(the)g(row)g(\(first)f(row)h(=) -h(1\))0 1120 y(rowrange)e(-)h(list)g(of)g(rows)f(or)i(row)f(ranges:)e +%%Page: 187 195 +TeXDict begin 187 194 bop 3764 299 a Fj(187)0 555 y Fe(rootname)46 +b(-)h(root)g(filename,)e(minus)h(any)h(extension)e(or)j(filtering)d +(specifications)0 668 y(rot)286 b(-)47 b(celestial)e(coordinate)g +(rotation)h(angle)g(\(degrees\))0 781 y(rowlen)142 b(-)47 +b(length)f(of)h(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)0 +894 y(rowlist)94 b(-)47 b(sorted)f(list)h(of)g(row)g(numbers)f(to)h(be) +g(deleted)f(from)g(the)h(table)0 1007 y(rownum)142 b(-)47 +b(number)f(of)h(the)g(row)g(\(first)f(row)h(=)h(1\))0 +1120 y(rowrange)e(-)h(list)g(of)g(rows)f(or)i(row)f(ranges:)e ('3,6-8,12,56-80')f(or)j('500-')0 1233 y(row_status)e(-)i(array)g(of)g (True/False)e(results)h(for)h(each)f(row)h(that)g(was)g(evaluated)0 1346 y(scale)190 b(-)47 b(linear)f(scaling)g(factor;)g(true)g(value)h @@ -26745,22 +17568,10 @@ 5523 y(short)46 b(integer,)g(I)381 b(21)g(TSHORT)764 5636 y(integer,)45 b(J)668 b(41)381 b(TINT32BIT)46 b(\(same)g(as)h (TLONG\))p eop end -%%Page: 184 192 -TeXDict begin 184 191 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.184) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(184)1822 -b Fh(APPENDIX)31 b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)764 -555 y Fe(long)46 b(long)h(integer,)e(K)191 b(81)381 b(TLONGLONG)764 +%%Page: 188 196 +TeXDict begin 188 195 bop 0 299 a Fj(188)1822 b Fh(APPENDIX)31 +b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)764 555 y +Fe(long)46 b(long)h(integer,)e(K)191 b(81)381 b(TLONGLONG)764 668 y(real,)46 b(E)811 b(42)381 b(TFLOAT)764 781 y(double)46 b(precision,)f(D)238 b(82)381 b(TDOUBLE)764 894 y(complex,)45 b(C)668 b(83)381 b(TCOMPLEX)764 1007 y(double)46 b(complex,)f(M)286 @@ -26796,27 +17607,8 @@ (at)i(the)f(reference)e(pixel)h(\(deg\))0 3491 y(zero)238 b(-)47 b(scaling)f(offset;)g(true)g(value)h(=)g(\(FITS)f(value\))h(*)g (scale)f(+)i(zero)p eop end -%%Page: 185 193 -TeXDict begin 185 192 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.185) cvn /DEST pdfmark end - -8 191 a 0 464 a -SDict begin H.S end - 0 464 a -0 464 a -SDict begin 13.6 H.A end - 0 464 a 0 464 a -SDict begin [/View [/XYZ H.V]/Dest (appendix.C) cvn /DEST pdfmark end - 0 464 a 761 x Fg(App)5 b(endix)64 +%%Page: 189 197 +TeXDict begin 189 196 bop 0 1225 a Fg(App)5 b(endix)64 b(C)0 1687 y Fm(CFITSIO)76 b(Error)h(Status)h(Co)6 b(des)0 2180 y Fj(The)28 b(follo)m(wing)h(table)g(lists)g(all)g(the)f(error)g (status)g(co)s(des)g(used)f(b)m(y)h(CFITSIO.)f(Programmers)h(are)g @@ -26858,23 +17650,11 @@ y(SHARED_BADARG)235 b(151)190 b(bad)47 b(argument)e(in)j(shared)e (memory)g(driver)48 5714 y(SHARED_NULPTR)235 b(152)190 b(null)47 b(pointer)e(passed)h(as)i(an)f(argument)1882 -5942 y Fj(185)p eop end -%%Page: 186 194 -TeXDict begin 186 193 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.186) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(186)1589 -b Fh(APPENDIX)31 b(C.)61 b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 -b(A)g(TUS)30 b(CODES)48 555 y Fe(SHARED_TABFULL)187 b(153)j(no)47 +5942 y Fj(189)p eop end +%%Page: 190 198 +TeXDict begin 190 197 bop 0 299 a Fj(190)1589 b Fh(APPENDIX)31 +b(C.)61 b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 b(A)g(TUS)30 +b(CODES)48 555 y Fe(SHARED_TABFULL)187 b(153)j(no)47 b(more)g(free)f(shared)g(memory)h(handles)48 668 y(SHARED_NOTINIT)187 b(154)j(shared)46 b(memory)g(driver)g(is)h(not)g(initialized)48 781 y(SHARED_IPCERR)235 b(155)190 b(IPC)47 b(error)f(returned)g(by)h(a) @@ -26935,25 +17715,13 @@ b(than)f(1)i(column)e(name)g(matches)g(template)48 5636 y(BAD_ROW_WIDTH)235 b(241)190 b(sum)47 b(of)g(column)f(widths)g(not)h (=)h(NAXIS1)p eop end -%%Page: 187 195 -TeXDict begin 187 194 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.187) cvn /DEST pdfmark end - -8 191 a 3764 299 a Fj(187)48 -555 y Fe(UNKNOWN_EXT)331 b(251)190 b(unrecognizable)44 -b(FITS)i(extension)g(type)48 668 y(UNKNOWN_REC)331 b(252)190 -b(unknown)46 b(record;)g(1st)g(keyword)g(not)h(SIMPLE)f(or)h(XTENSION) -48 781 y(END_JUNK)475 b(253)190 b(END)47 b(keyword)f(is)h(not)g(blank) -48 894 y(BAD_HEADER_FILL)139 b(254)190 b(Header)46 b(fill)h(area)f +%%Page: 191 199 +TeXDict begin 191 198 bop 3764 299 a Fj(191)48 555 y +Fe(UNKNOWN_EXT)331 b(251)190 b(unrecognizable)44 b(FITS)i(extension)g +(type)48 668 y(UNKNOWN_REC)331 b(252)190 b(unknown)46 +b(record;)g(1st)g(keyword)g(not)h(SIMPLE)f(or)h(XTENSION)48 +781 y(END_JUNK)475 b(253)190 b(END)47 b(keyword)f(is)h(not)g(blank)48 +894 y(BAD_HEADER_FILL)139 b(254)190 b(Header)46 b(fill)h(area)f (contains)g(non-blank)f(chars)48 1007 y(BAD_DATA_FILL)235 b(255)190 b(Illegal)46 b(data)g(fill)h(bytes)f(\(not)h(zero)g(or)g (blank\))48 1120 y(BAD_TFORM)427 b(261)190 b(illegal)46 @@ -26998,25 +17766,13 @@ (of)1575 5410 y(template)f(file)g(raises)g(this)h(error)48 5523 y(NGP_EMPTY_CURLINE)234 b(363)k(line)46 b(read)h(seems)f(to)h(be)h (empty)e(\(used)1575 5636 y(internally\))p eop end -%%Page: 188 196 -TeXDict begin 188 195 bop 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a -8 191 a -SDict begin H.S end - -8 191 -a -8 191 a -SDict begin H.R end - -8 191 a -8 191 a -SDict begin [/View [/XYZ H.V]/Dest (page.188) cvn /DEST pdfmark end - -8 191 a 0 299 a Fj(188)1589 -b Fh(APPENDIX)31 b(C.)61 b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 -b(A)g(TUS)30 b(CODES)48 555 y Fe(NGP_UNREAD_QUEUE_FULL)42 -b(364)238 b(cannot)46 b(unread)g(more)g(then)h(1)g(line)g(\(or)g -(single)1575 668 y(line)g(twice\))48 781 y(NGP_INC_NESTING)330 -b(365)238 b(too)46 b(deep)h(include)f(file)h(nesting)e(\(infinite)1575 +%%Page: 192 200 +TeXDict begin 192 199 bop 0 299 a Fj(192)1589 b Fh(APPENDIX)31 +b(C.)61 b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 b(A)g(TUS)30 +b(CODES)48 555 y Fe(NGP_UNREAD_QUEUE_FULL)42 b(364)238 +b(cannot)46 b(unread)g(more)g(then)h(1)g(line)g(\(or)g(single)1575 +668 y(line)g(twice\))48 781 y(NGP_INC_NESTING)330 b(365)238 +b(too)46 b(deep)h(include)f(file)h(nesting)e(\(infinite)1575 894 y(loop,)h(template)g(includes)f(itself)i(?\))48 1007 y(NGP_ERR_FOPEN)426 b(366)238 b(fopen\(\))45 b(failed,)h(cannot)g(open) h(template)e(file)48 1120 y(NGP_EOF)714 b(367)238 b(end)46 diff -Nru cfitsio-3.470/docs/cfitsio.tex cfitsio-4.0.0/docs/cfitsio.tex --- cfitsio-3.470/docs/cfitsio.tex 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/cfitsio.tex 2021-07-13 17:48:05.000000000 +0000 @@ -31,7 +31,7 @@ \medskip \medskip \begin{center} -{\Large Version 3.4 \\} +{\Large Version 4.0 \\} \end{center} \bigskip \vskip 2.5cm @@ -46,7 +46,7 @@ \vfill \bigskip \begin{center} -{\Large May 2019\\} +{\Large May 2021\\} \end{center} \vfill \end{titlepage} @@ -1110,7 +1110,7 @@ then write the arrays of unsigned integer values to the columns. -\section{Dealing with Character Strings} +\section{Dealing with Character Strings \label{character-strings}} The character string values in a FITS header or in an ASCII column in a FITS table extension are generally padded out with non-significant @@ -1130,6 +1130,17 @@ CFITSIO will pad the string with blanks if necessary when writing it to the FITS file. +The FITS standard does not require trailing spaces to be treated in +this way, but it does allow a more seamless transition from the +FORTRAN FITS world where trailing spaces are often treated as +insignificant. Users who wish the greatest fidelity when transferring +strings can use the \verb+_byt+ variants of column readers and writers +(functions fits\_\{read,write\}\_col\_byt). These routines will +transfer the raw fixed-length vectors of character bytes of the +column, including any trailing blanks of course. The \verb+_byt+ +variants make no attempt to null-terminate any elements. A NULL +string would be indicated by its first character being a NUL byte. + When calling CFITSIO routines that return a character string it is vital that the size of the char array be large enough to hold the entire string of characters, otherwise CFITSIO will overwrite whatever @@ -1707,12 +1718,14 @@ HDU or image HDU in the file, respectively, if a HDU name or number is not specified as part of the filename. -The fits\_open\_extname routine opens the file and attempts to move to a 'useful' -HDU. If after opening the file CFITSIO is pointing to null primary array, -then CFITSIO will attempt to move to the first extension that has an EXTNAME or -HDUNAME keyword value that matches one of the names in the input extlist -space-delimited list of names. If that fails, then CFITSIO simply moves to the -2nd HDU in the file. +The fits\_open\_extlist routine opens the file and attempts to move to +a 'useful' HDU. If after opening the file CFITSIO is pointing to null +primary array, then CFITSIO will attempt to move to the first +extension that has an EXTNAME or HDUNAME keyword value that matches +one of the names in the input extlist space-delimited list of names +(wildcards are permitted). If that fails, then CFITSIO simply moves +to the 2nd HDU in the file. Upon return, the type of the HDU is +returned in *hdutype, as described in \ref{ffmahd} HDU Access Routines. IRAF images (.imh format files) and raw binary data arrays may also be opened with READONLY access. CFITSIO will automatically test if the @@ -1871,17 +1884,19 @@ specified absolute HDU number (starting with 1 for the primary array) in the FITS file, and the second routine moves a relative number HDUs forward or backward from the current HDU. A null - pointer may be given for the hdutype parameter if it's value is not - needed. The third routine moves to the (first) HDU which has the - specified extension type and EXTNAME and EXTVER keyword values (or - HDUNAME and HDUVER keywords). The hdutype parameter may have a - value of IMAGE\_HDU, ASCII\_TBL, BINARY\_TBL, or ANY\_HDU where - ANY\_HDU means that only the extname and extver values will be used - to locate the correct extension. If the input value of extver is 0 - then the EXTVER keyword is ignored and the first HDU with a - matching EXTNAME (or HDUNAME) keyword will be found. If no - matching HDU is found in the file then the current HDU will remain - unchanged and a status = BAD\_HDU\_NUM will be returned. + pointer may be given for the hdutype parameter if it's value is + not needed. The third routine moves to the (first) HDU which has + the specified extension type and EXTNAME and EXTVER keyword values + (or HDUNAME and HDUVER keywords). The extname parameter may + contain wildcards, as accepted by fits\_compare\_str(). The + hdutype parameter may have a value of IMAGE\_HDU, ASCII\_TBL, + BINARY\_TBL, or ANY\_HDU where ANY\_HDU means that only the + extname and extver values will be used to locate the correct + extension. If the input value of extver is 0 then the EXTVER + keyword is ignored and the first HDU with a matching EXTNAME (or + HDUNAME) keyword will be found. If no matching HDU is found in + the file then the current HDU will remain unchanged and a status = + BAD\_HDU\_NUM will be returned. \label{ffmahd} \label{ffmrhd} \label{ffmnhd} \end{description} @@ -2985,6 +3000,28 @@ char *tform[], char *tunit[], char *extname, int *status) \end{verbatim} +\begin{description} +\item[2 ] Copy the structure of an open table to a new table, optionally + copying zero or more rows from the input table. This is useful in + cases where a task will filter rows from the input before transferring + to the output, so a ``pristine'' output table with zero rows is + desired to start. The input file must be open and point to a binary table + extension. The output file must be open for writing; a new + extension is created with the same table structure as the input. + Optionally, a range of nrows may be copied starting from firstrow, + similar to fits\_copy\_rows(). The value nrows may be 0. Note that + the first row in a table is at row = 1. + \label{ffcpht} +\end{description} + +\begin{verbatim} + int fits_copy_hdutab / ffcpht + (fitsfile *infptr, fitsfile *outfptr, LONGLONG firstrow, + LONGLONG nrows, > int *status) +\end{verbatim} + + + \subsection{Column Information Routines} @@ -3332,14 +3369,20 @@ data type, i.e., a single pointer to an array of characters. When reading strings from a table, the char arrays obviously must have been allocated long enough to hold the whole FITS table string. +See section \ref{character-strings} +(``Dealing with Character Strings'') for more information. + +For complex and double complex data types, \verb+nelements+ is the number +of numerical pairs; the number of floats or doubles stored by +\+array+ must be \verb+2*nelements+. Numerical data values are automatically scaled by the TSCALn and TZEROn keyword values (if they exist). -In the case of binary tables with vector elements, the 'felem' +In the case of binary tables with vector elements, the \verb+firstelem+ parameter defines the starting element (beginning with 1, not 0) within the cell (a cell is defined as the intersection of a row and a column -and may contain a single value or a vector of values). The felem +and may contain a single value or a vector of values). The \verb+firstelem+ parameter is ignored when dealing with ASCII tables. Similarly, in the case of binary tables the 'nelements' parameter specifies the total number of vector values to be read or written (continuing on subsequent @@ -3385,7 +3428,8 @@ \begin{description} \item[2 ] Read elements from an ASCII or binary table column. The data type - parameter specifies the data type of the `nulval' and `array' pointers; + parameter specifies the data type of the `nulval' and `array' pointers. + The caller is required to allocate the storage of \verb+array+ before calling. Undefined array elements will be returned with a value = *nullval, (note that this parameter gives the address of the null value, not the null value itself) unless nulval = 0 or *nulval = 0, in which case @@ -3393,6 +3437,9 @@ routine is similar except that any undefined pixels will have the corresponding nullarray element set equal to TRUE (= 1). + Reading data as TSTRING values is different than for other data types + as described above. + Any column, regardless of it's intrinsic data type, may be read as a string. It should be noted however that reading a numeric column as a string is 10 - 100 times slower than reading the same column @@ -4373,12 +4420,20 @@ "-" - do not copy a keyword that matches the corresponding input pattern + "--" - if match occurs, outrec will have "-KEYNAME" + "+" - copy the input unchanged The inrec string could be just the 8-char keyword name, or the entire 80-char header record. Characters 9 - 80 in the input string simply get appended to the translated keyword name. +Upon return, outrec will have the converted string, starting from the +pattern[i][1] pattern and applying the numerical substitutions as +described above. If the output pattern is "--" then the resulting +outrec will be "-KEYNAME", which may indicate to the calling +routine that KEYNAME is to be deleted. + If n\_range = 0, then only keywords with 'n' equal to n\_value will be considered as a pattern match. If n\_range = +1, then all values of 'n' greater than or equal to n\_value will be a match, and if -1, @@ -4444,7 +4499,13 @@ \begin{description} \item[21] Translate the keywords in the input HDU into the keywords that are appropriate for the output HDU. This is a driver routine that calls -the previously described routine. +the previously described routine for all keywords in the HDU. + +It is allowed for infptr and outfptr to point to the same HDU. + +If any output matched patterns are of the form "-KEYNAME" then +this routine will attempt to delete the keyword KEYNAME. It is +not an error if KEYNAME is not present in the output HDU. \end{description} \begin{verbatim} @@ -7142,11 +7203,29 @@ \begin{description} \item[1 ] Read elements from an ASCII or binary table column (in the CDU). These - routines return the values of the table column array elements. Undefined + routines return the values of the table column array elements. The caller + is required to allocate the storage \verb+array+ before calling. Undefined array elements will be returned with a value = nulval, unless nulval = 0 (or = ' ' for ffgcvs) in which case no checking for undefined values will be performed. The anynul parameter is set to true if any of the returned - elements are undefined. \label{ffgcvx} + elements are undefined. + + For the \verb+_str+ (string) variant the number + of elements is the number of strings, and the caller must allocate storage + for both the array of pointers \verb+array+ and the character array data + itself (use \verb+fits_get_col_display_width+ or \verb+fits_get_coltype+ to + determine the number of characters). See section \ref{character-strings} + (``Dealing with Character Strings'') for more information. Also, when + the \verb+_byt+ variant is used to read a column stored in the file as + string data (TFORMn = 'nA'), the subroutine will read the character + bytes (instead of attempting to perform a numerical conversion as other + integer variants would do), with no attempt at null termination. + + For the \verb+_cmp+ and \verb+_dblcmp+ + (complex and double complex) variants, \verb+nelements+ is the number + of numerical pairs; the number of floats or doubles that must be + pre-allocated is \verb+2*nelements+. +\label{ffgcvx} \end{description} \begin{verbatim} @@ -7505,8 +7584,14 @@ rowFilter, and binSpec specifiers may follow in any order. Regardless of the order, however, the colFilter specifier, if present, will be processed first by CFITSIO, followed by the rowFilter specifier, and -finally by the binSpec specifier. +finally by the binSpec specifier. +Multiple colFilter or rowFilter specifications may appear as separated +bracketed expressions, in any order. Multiple colFilter or rowFilter +expressions are treated internally as a single effective expression, +with order of operations determined from left to right. CFITSIO does +not support the @filename.txt complex syntax option if multiple +expressions are also used. \section{Filetype} @@ -8330,6 +8415,7 @@ operations. More than one operation may be specified by separating them with commas or semi-colons. + \begin{itemize} \item @@ -8433,6 +8519,21 @@ that begin with 2 slash characters ('//') will be ignored and may be used to add comments into the file. +When using column filtering to open a file ``on the fly,'' it is permitted +to use multiple column filtering expressions. For example, the +syntax +\begin{verbatim} + filename.fits[col *][col -Y][col Z=X+1] +\end{verbatim} +would be treated as equivalent to joining the expressions with semicolons, +or +\begin{verbatim} + filename.fits[col *; -Y;col Z=X+1] +\end{verbatim} +Please note that if multiple column filtering expressions are used, it is +not permitted to also use the \verb+[col @filename.txt]+ syntax in any +of the individual expressions. + It is possible to use wildcard syntax to delete either keywords or columns that match a pattern. Recall that to delete either a keyword or a column, precede its name with a \verb+'-'+ character. @@ -8457,8 +8558,8 @@ To delete {\it zero or more} keywords that match the pattern, add a trailing \verb|'+'|. \begin{verbatim} - -VEL*; # remove all columns (or keywords) beginning with VEL - -VEL_?; # remove all columns (or keyword) VEL_? where ? is any character + -VEL*+; # remove all columns (or keywords) beginning with VEL + -VEL_?+; # remove all columns (or keyword) VEL_? where ? is any character -#DEC_*+; # remove all keywords beginning with DEC_ -#TUNIT#+; # remove all keywords TUNIT ending w. number \end{verbatim} @@ -8561,6 +8662,37 @@ absolute row number, only a relative offset. Rows that fall outside the table will be treated as undefined, or NULLs. + When using row filtering to open a file ``on the fly,'' it is permitted + to use multiple row filtering expressions. For example, the expression +\begin{verbatim} + filename.fits[#ROW > 5][X.gt.7] +\end{verbatim} +would be treated as equivalent to joining the expressions with logical ``and'' +like this, +\begin{verbatim} + filename.fits[(#ROW > 5)&&(X.gt.7)] +\end{verbatim} +Please note that if multiple row filtering expressions are used, it is +not permitted to also use the \verb+[@filename.txt]+ syntax in any +of the individual expressions. + + +%% +%% + Boolean operators can be used in the expression in either their Fortran or C forms. The following boolean operators are available: @@ -8572,69 +8704,74 @@ "negation" .not. .NOT. ! "approx. equal(1e-7)" ~ \end{verbatim} -Note that the exclamation -point, '!', is a special UNIX character, so if it is used on the -command line rather than entered at a task prompt, it must be preceded -by a backslash to force the UNIX shell to ignore it. - - The expression may also include arithmetic operators and functions. - Trigonometric functions use radians, not degrees. The following - arithmetic operators and functions can be used in the expression - (function names are case insensitive). A null value will be returned - in case of illegal operations such as divide by zero, sqrt(negative) - log(negative), log10(negative), arccos(.gt. 1), arcsin(.gt. 1). - - -\begin{verbatim} - "addition" + "subtraction" - - "multiplication" * "division" / - "negation" - "exponentiation" ** ^ - "absolute value" abs(x) "cosine" cos(x) - "sine" sin(x) "tangent" tan(x) - "arc cosine" arccos(x) "arc sine" arcsin(x) - "arc tangent" arctan(x) "arc tangent" arctan2(y,x) - "hyperbolic cos" cosh(x) "hyperbolic sin" sinh(x) - "hyperbolic tan" tanh(x) "round to nearest int" round(x) - "round down to int" floor(x) "round up to int" ceil(x) - "exponential" exp(x) "square root" sqrt(x) - "natural log" log(x) "common log" log10(x) - "modulus" x % y "random # [0.0,1.0)" random() - "random Gaussian" randomn() "random Poisson" randomp(x) - "minimum" min(x,y) "maximum" max(x,y) - "cumulative sum" accum(x) "sequential difference" seqdiff(x) - "if-then-else" b?x:y - "angular separation" angsep(ra1,dec1,ra2,de2) (all in degrees) - "substring" strmid(s,p,n) "string search" strstr(s,r) +Note that the exclamation point, '!', is a special UNIX character, so +if it is used on the command line rather than entered at a task +prompt, it must be preceded by a backslash to force the UNIX shell to +ignore it. + +The expression may also include arithmetic operators and functions. +Trigonometric functions use radians, not degrees. The following +arithmetic operators and functions can be used in the expression +(function names are case insensitive). A null value will be returned +in case of illegal operations such as divide by zero, sqrt(negative) +log(negative), log10(negative), arccos(.gt. 1), arcsin(.gt. 1). + +\begin{verbatim} + "addition" + "subtraction" - + "multiplication" * "division" / + "negation" - "exponentiation" ** ^ + "absolute value" abs(x) "cosine" cos(x) + "sine" sin(x) "tangent" tan(x) + "arc cosine" arccos(x) "arc sine" arcsin(x) + "arc tangent" arctan(x) "arc tangent" arctan2(y,x) + "hyperbolic cos" cosh(x) "hyperbolic sin" sinh(x) + "hyperbolic tan" tanh(x) "round to nearest int" round(x) + "round down to int" floor(x) "round up to int" ceil(x) + "exponential" exp(x) "square root" sqrt(x) + "natural log" log(x) "common log" log10(x) + "modulus" x % y + "bitwise AND" x & y "bitwise OR" x | y + "bitwise XOR" x ^^ y (bitwise operators are 32-bit int only) + "random # [0.0,1.0)" random() + "random Gaussian" randomn() "random Poisson" randomp(x) + "minimum" min(x,y) "maximum" max(x,y) + "cumulative sum" accum(x) "sequential difference" seqdiff(x) + "if-then-else" b?x:y + "angular separation" angsep(ra1,dec1,ra2,de2) (all in degrees) + "substring" strmid(s,p,n) "string search" strstr(s,r) \end{verbatim} -Three different random number functions are provided: random(), with +The bitwise operators for AND, OR and XOR operate upon 32-bit integer +expressions only. + +Three different random number functions are provided: random(), with no arguments, produces a uniform random deviate between 0 and 1; randomn(), also with no arguments, produces a normal (Gaussian) random -deviate with zero mean and unit standard deviation; randomp(x) +deviate with zero mean and unit standard deviation; randomp(x) produces a Poisson random deviate whose expected number of counts is X. X may be any positive real number of expected counts, including fractional values, but the return value is an integer. When the random functions are used in a vector expression, by default -the same random value will be used when evaluating each element of the vector. -If different random numbers are desired, then the name of a vector -column should be supplied as the single argument to the random -function (e.g., "flux + 0.1 * random(flux)", where "flux' is the -name of a vector column). This will create a vector of -random numbers that will be used in sequence when evaluating each -element of the vector expression. +the same random value will be used when evaluating each element of the +vector. If different random numbers are desired, then the name of a +vector column should be supplied as the single argument to the random +function (e.g., "flux + 0.1 * random(flux)", where "flux" is the name +of a vector column). This will create a vector of random numbers that +will be used in sequence when evaluating each element of the vector +expression. An alternate syntax for the min and max functions has only a single argument which should be a vector value (see below). The result will be the minimum/maximum element contained within the vector. -The accum(x) function forms the cumulative sum of x, element by element. -Vector columns are supported simply by performing the summation process -through all the values. Null values are treated as 0. The seqdiff(x) -function forms the sequential difference of x, element by element. -The first value of seqdiff is the first value of x. A single null -value in x causes a pair of nulls in the output. The seqdiff and -accum functions are functional inverses, i.e., seqdiff(accum(x)) == x -as long as no null values are present. +The accum(x) function forms the cumulative sum of x, element by +element. Vector columns are supported simply by performing the +summation process through all the values. Null values are treated as +0. The seqdiff(x) function forms the sequential difference of x, +element by element. The first value of seqdiff is the first value of +x. A single null value in x causes a pair of nulls in the output. +The seqdiff and accum functions are functional inverses, i.e., +seqdiff(accum(x)) == x as long as no null values are present. In the if-then-else expression, "b?x:y", b is an explicit boolean value or expression. There is no automatic type conversion from @@ -8642,11 +8779,11 @@ merely "iVal" as the boolean argument. x and y can be any scalar data type (including string). -The angsep function computes the angular separation in degrees -between 2 celestial positions, where the first 2 parameters -give the RA-like and Dec-like coordinates (in decimal degrees) -of the first position, and the 3rd and 4th parameters give the -coordinates of the second position. +The angsep function computes the angular separation in degrees between +2 celestial positions, where the first 2 parameters give the RA-like +and Dec-like coordinates (in decimal degrees) of the first position, +and the 3rd and 4th parameters give the coordinates of the second +position. The substring function strmid(S,P,N) extracts a substring from S, starting at string position P, with a substring length N. The first @@ -8654,14 +8791,14 @@ position beyond the end of S, then the extracted substring will be NULL. S, P, and N may be functions of other columns. -The string search function strstr(S,R) searches for the first occurrence -of the substring R in S. The result is an integer, indicating the -character position of the first match (where 1 is the first character -position of S). If no match is found, then strstr() returns a NULL -value. +The string search function strstr(S,R) searches for the first +occurrence of the substring R in S. The result is an integer, +indicating the character position of the first match (where 1 is the +first character position of S). If no match is found, then strstr() +returns a NULL value. -The following type casting operators are available, where the -inclosing parentheses are required and taken from the C language +The following type casting operators are available, where the +enclosing parentheses are required and taken from the C language usage. Also, the integer to real casts values to double precision: \begin{verbatim} @@ -8683,6 +8820,20 @@ "null" constants are useful for conditionally setting table values to a NULL, or undefined, value (eg., "col1==-99 ? \#NULL : col1"). + Integer constants may be specified using the following notation, +\begin{verbatim} + 13245 decimal integer + 0x12f3 hexidecimal integer + 0o1373 octal integer + 0b01001 binary integer +\end{verbatim} + Note that integer constants are only allowed to be 32-bit, i.e. + between -2\^(31) and +2\^(31). Integer constants may be used in any + arithmetic expression where an integer would be appropriate. Thus, + they are distinct from bitmasks (which may be of arbitrary length, + allow the "wildcard" bit, and may only be used in logical + expressions; see below). + There is also a function for testing if two values are close to each other, i.e., if they are "near" each other to within a user specified tolerance. The arguments, value\_1 and value\_2 can be @@ -8702,15 +8853,15 @@ \begin{verbatim} "a null value?" ISNULL(x) "define a value for null" DEFNULL(x,y) + "declare certain value null" SETNULL(x,y) \end{verbatim} - The former - returns a boolean value of TRUE if the argument x is NULL. The - later "defines" a value to be substituted for NULL values; it + ISNULL(x) + returns a boolean value of TRUE if the argument x is NULL. DEFNULL(x,y) + "defines" a value to be substituted for NULL values; it returns the value of x if x is not NULL, otherwise it returns the - value of y. - - - + value of y. SETNULL(x,y) allows NULL values to be inserted into + a variable; if x==y, a NULL value is returned; otherwise y is returned + (x and y must be numerical, and x must be a scalar). \subsection{Bit Masks} @@ -8728,7 +8879,10 @@ In all the representations, an x or X is allowed in the mask as a wild card. Note that the x represents a different number of wild card bits in each representation. All representations are case - insensitive. + insensitive. Although bitmasks may be of arbitrary length and contain + a wildcard, they may only be used in logical expressions, unlike + integer constants (see above) which may be used in any arithmetic + expression. To construct the boolean expression using the mask as the boolean equal operator described above on a bit table column. For example, @@ -8876,20 +9030,26 @@ COUNT = COUNT{-1} + 1; # BAD - do not use \end{verbatim} will not produce an increasing counter. Such recursive - calculations are often not possible with the calculator syntax. - -\subsection{Good Time Interval Filtering} - - A common filtering method involves selecting rows which have a time - value which lies within what is called a Good Time Interval or GTI. - The time intervals are defined in a separate FITS table extension - which contains 2 columns giving the start and stop time of each - good interval. The filtering operation accepts only those rows of - the input table which have an associated time which falls within - one of the time intervals defined in the GTI extension. A high - level function, gtifilter(a,b,c,d), is available which evaluates - each row of the input table and returns TRUE or FALSE depending - whether the row is inside or outside the good time interval. The + calculations are often not possible with the calculator syntax. + However, for cases where the user wishes a row counter, the special + variable \verb+#ROW+ can be utilized. + +\subsection{Good Time Interval Filtering and Calculation} + + There are two functions for filtering and calculating based + on Good Time Intervals, or GTIs. GTIs are commonly used to + express fragmented time ranges that are not easy to express with a + single start and stop time. The time intervals are defined in a + FITS table extension which contains 2 columns giving the + start and stop time of each good interval. + + A common filtering method involves selecting rows which have a + time value which lies within any GTI. The gtifilter() filtering + operation accepts only those rows of the input table which have an + associated time which falls within one of the time intervals + defined in a separate GTI extension. gtifilter(a,b,c,d) evaluates + each row of the input table and returns TRUE or FALSE depending + whether the row is inside or outside the good time interval. The syntax is \begin{verbatim} @@ -8933,6 +9093,56 @@ searches for TIMEZERO/I/F keywords in the current and GTI extensions, applying a relative time offset, if necessary. + A separate function, gtioverlap(a,b,c,d,e), computes the overlap + between a user-requested time range and the entries in a GTI. The + cases of no overlap, partial overlap, or overlap of many GTIs + within the user requested range are handled. gtioverlap() is very + useful for calculating exposure times and fractional exposures of + individual time bins, say for a light curve. The syntax of + gtioverlap() is + +\begin{verbatim} + gtioverlap( "gtifile" , startExpr, stopExpr [, "STARTCOL", "STOPCOL" ] ) + or + gtioverlap( 'gtifile' , startExpr, stopExpr [, 'STARTCOL', 'STOPCOL' ] ) +\end{verbatim} + + The requirements for specifying the gtifile are the same as for + gtifilter() as described above. Unlike gtifilter(), the startExpr + and stopExpr are not optional. startExpr provides a start of the + user requested time interval. startExpr is typically TIME, but + can be any valid expression. Likewise, stopExpr provides the stop + of the user requested time interval, and can be an expression. + For example, for a light curve with a TIME column and time bin + size of 1.0 seconds, the expression + +\begin{verbatim} + gtioverlap('gtifile',TIME,TIME+1.0) +\end{verbatim} + + would calculate the amount of overlap exposure time between each + one second time bin and the GTI in 'gtifile'. In this case the + time bin is assumed to begin at the time specified by TIME and end + 1 second later. Neither startExpr nor stopExpr are required to be + constant, and a light curve is not required to have a constant bin + size. For tables, the overlap is calculated for each entry in the + table. + + It is also possible to calculate a single overlap value, which + would typically be placed in a keyword. For example, a way to to + compute the total overlap exposure of a file whose TIME column is + bounded by the keywords TSTART and TSTOP, overlapping with the + specified GTI, would be + +\begin{verbatim} + #EXPOSURE = gtioverlap('gtifile',#TSTART,#TSTOP) +\end{verbatim} + + The \verb+#EXPOSURE+ syntax with a leading \+#+ ensures that the + requested values are treated as keywords. Otherwise, a column + named EXPOSURE will be created with the (constant) exposure value + in each entry. + \subsection{Spatial Region Filtering} @@ -10041,6 +10251,7 @@ fits\_copy\_file & \pageref{ffcpfl} \\ fits\_copy\_group & \pageref{ffgtcp} \\ fits\_copy\_hdu & \pageref{ffcopy} \\ +fits\_copy\_hdutab & \pageref{ffcpht} \\ fits\_copy\_header & \pageref{ffcphd} \\ fits\_copy\_image2cell & \pageref{copycell} \\ fits\_copy\_image\_section & \pageref{ffcpimg} \\ @@ -10329,6 +10540,7 @@ ffcpdt & \pageref{ffcpdt} \\ ffcpfl & \pageref{ffcpfl} \\ ffcphd & \pageref{ffcphd} \\ +ffcpht & \pageref{ffcpht} \\ ffcpimg & \pageref{ffcpimg} \\ ffcpky & \pageref{ffcpky} \\ ffcprw & \pageref{ffcprw} \\ diff -Nru cfitsio-3.470/docs/cfitsio.toc cfitsio-4.0.0/docs/cfitsio.toc --- cfitsio-3.470/docs/cfitsio.toc 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/cfitsio.toc 2021-05-20 01:18:54.000000000 +0000 @@ -1,127 +1,127 @@ -\contentsline {chapter}{\numberline {1}Introduction }{1}{chapter.1} -\contentsline {section}{\numberline {1.1} A Brief Overview}{1}{section.1.1} -\contentsline {section}{\numberline {1.2}Sources of FITS Software and Information}{1}{section.1.2} -\contentsline {section}{\numberline {1.3}Acknowledgments}{2}{section.1.3} -\contentsline {section}{\numberline {1.4}Legal Stuff}{4}{section.1.4} -\contentsline {chapter}{\numberline {2} Creating the CFITSIO Library }{5}{chapter.2} -\contentsline {section}{\numberline {2.1}Building the Library}{5}{section.2.1} -\contentsline {subsection}{\numberline {2.1.1}Unix Systems}{5}{subsection.2.1.1} -\contentsline {subsection}{\numberline {2.1.2}VMS}{7}{subsection.2.1.2} -\contentsline {subsection}{\numberline {2.1.3}Windows PCs}{7}{subsection.2.1.3} -\contentsline {subsection}{\numberline {2.1.4}Macintosh PCs}{7}{subsection.2.1.4} -\contentsline {section}{\numberline {2.2}Testing the Library}{7}{section.2.2} -\contentsline {section}{\numberline {2.3}Linking Programs with CFITSIO}{9}{section.2.3} -\contentsline {section}{\numberline {2.4}Using CFITSIO in Multi-threaded Environments}{9}{section.2.4} -\contentsline {section}{\numberline {2.5}Getting Started with CFITSIO}{9}{section.2.5} -\contentsline {section}{\numberline {2.6}Example Program}{10}{section.2.6} -\contentsline {chapter}{\numberline {3} A FITS Primer }{13}{chapter.3} -\contentsline {chapter}{\numberline {4} Programming Guidelines }{15}{chapter.4} -\contentsline {section}{\numberline {4.1}CFITSIO Definitions}{15}{section.4.1} -\contentsline {section}{\numberline {4.2}Current Header Data Unit (CHDU)}{18}{section.4.2} -\contentsline {section}{\numberline {4.3}Function Names and Variable Datatypes}{18}{section.4.3} -\contentsline {section}{\numberline {4.4}Support for Unsigned Integers and Signed Bytes}{20}{section.4.4} -\contentsline {section}{\numberline {4.5}Dealing with Character Strings}{22}{section.4.5} -\contentsline {section}{\numberline {4.6}Implicit Data Type Conversion}{23}{section.4.6} -\contentsline {section}{\numberline {4.7}Data Scaling}{23}{section.4.7} -\contentsline {section}{\numberline {4.8}Support for IEEE Special Values}{24}{section.4.8} -\contentsline {section}{\numberline {4.9}Error Status Values and the Error Message Stack}{24}{section.4.9} -\contentsline {section}{\numberline {4.10}Variable-Length Arrays in Binary Tables}{25}{section.4.10} -\contentsline {section}{\numberline {4.11}Multiple Access to the Same FITS File}{27}{section.4.11} -\contentsline {section}{\numberline {4.12}When the Final Size of the FITS HDU is Unknown}{27}{section.4.12} -\contentsline {section}{\numberline {4.13}CFITSIO Size Limitations}{28}{section.4.13} -\contentsline {chapter}{\numberline {5}Basic CFITSIO Interface Routines }{31}{chapter.5} -\contentsline {section}{\numberline {5.1}CFITSIO Error Status Routines}{31}{section.5.1} -\contentsline {section}{\numberline {5.2}FITS File Access Routines}{32}{section.5.2} -\contentsline {section}{\numberline {5.3}HDU Access Routines}{35}{section.5.3} -\contentsline {section}{\numberline {5.4}Header Keyword Read/Write Routines}{37}{section.5.4} -\contentsline {subsection}{\numberline {5.4.1}Keyword Reading Routines}{38}{subsection.5.4.1} -\contentsline {subsection}{\numberline {5.4.2}Keyword Writing Routines}{40}{subsection.5.4.2} -\contentsline {section}{\numberline {5.5}Primary Array or IMAGE Extension I/O Routines}{43}{section.5.5} -\contentsline {section}{\numberline {5.6}Image Compression}{47}{section.5.6} -\contentsline {section}{\numberline {5.7}ASCII and Binary Table Routines}{52}{section.5.7} -\contentsline {subsection}{\numberline {5.7.1}Create New Table}{52}{subsection.5.7.1} -\contentsline {subsection}{\numberline {5.7.2}Column Information Routines}{53}{subsection.5.7.2} -\contentsline {subsection}{\numberline {5.7.3}Routines to Edit Rows or Columns}{55}{subsection.5.7.3} -\contentsline {subsection}{\numberline {5.7.4}Read and Write Column Data Routines}{57}{subsection.5.7.4} -\contentsline {subsection}{\numberline {5.7.5}Row Selection and Calculator Routines}{59}{subsection.5.7.5} -\contentsline {subsection}{\numberline {5.7.6}Column Binning or Histogramming Routines}{61}{subsection.5.7.6} -\contentsline {section}{\numberline {5.8}Utility Routines}{64}{section.5.8} -\contentsline {subsection}{\numberline {5.8.1}File Checksum Routines}{64}{subsection.5.8.1} -\contentsline {subsection}{\numberline {5.8.2}Date and Time Utility Routines}{65}{subsection.5.8.2} -\contentsline {subsection}{\numberline {5.8.3}General Utility Routines}{66}{subsection.5.8.3} -\contentsline {chapter}{\numberline {6} The CFITSIO Iterator Function }{77}{chapter.6} -\contentsline {section}{\numberline {6.1}The Iterator Work Function}{78}{section.6.1} -\contentsline {section}{\numberline {6.2}The Iterator Driver Function}{80}{section.6.2} -\contentsline {section}{\numberline {6.3}Guidelines for Using the Iterator Function}{81}{section.6.3} -\contentsline {section}{\numberline {6.4}Complete List of Iterator Routines}{82}{section.6.4} -\contentsline {chapter}{\numberline {7} World Coordinate System Routines }{85}{chapter.7} -\contentsline {section}{\numberline {7.1} Self-contained WCS Routines}{86}{section.7.1} -\contentsline {chapter}{\numberline {8} Hierarchical Grouping Routines }{89}{chapter.8} -\contentsline {section}{\numberline {8.1}Grouping Table Routines}{90}{section.8.1} -\contentsline {section}{\numberline {8.2}Group Member Routines}{92}{section.8.2} -\contentsline {chapter}{\numberline {9} Specialized CFITSIO Interface Routines }{95}{chapter.9} -\contentsline {section}{\numberline {9.1}FITS File Access Routines}{95}{section.9.1} -\contentsline {subsection}{\numberline {9.1.1}File Access}{95}{subsection.9.1.1} -\contentsline {subsection}{\numberline {9.1.2}Download Utility Functions}{99}{subsection.9.1.2} -\contentsline {section}{\numberline {9.2}HDU Access Routines}{100}{section.9.2} -\contentsline {section}{\numberline {9.3}Specialized Header Keyword Routines}{102}{section.9.3} -\contentsline {subsection}{\numberline {9.3.1}Header Information Routines}{102}{subsection.9.3.1} -\contentsline {subsection}{\numberline {9.3.2}Read and Write the Required Keywords}{102}{subsection.9.3.2} -\contentsline {subsection}{\numberline {9.3.3}Write Keyword Routines}{104}{subsection.9.3.3} -\contentsline {subsection}{\numberline {9.3.4}Insert Keyword Routines}{106}{subsection.9.3.4} -\contentsline {subsection}{\numberline {9.3.5}Read Keyword Routines}{107}{subsection.9.3.5} -\contentsline {subsection}{\numberline {9.3.6}Modify Keyword Routines}{109}{subsection.9.3.6} -\contentsline {subsection}{\numberline {9.3.7}Update Keyword Routines}{110}{subsection.9.3.7} -\contentsline {section}{\numberline {9.4}Define Data Scaling and Undefined Pixel Parameters}{111}{section.9.4} -\contentsline {section}{\numberline {9.5}Specialized FITS Primary Array or IMAGE Extension I/O Routines}{112}{section.9.5} -\contentsline {section}{\numberline {9.6}Specialized FITS ASCII and Binary Table Routines}{115}{section.9.6} -\contentsline {subsection}{\numberline {9.6.1}General Column Routines}{115}{subsection.9.6.1} -\contentsline {subsection}{\numberline {9.6.2}Low-Level Table Access Routines}{117}{subsection.9.6.2} -\contentsline {subsection}{\numberline {9.6.3}Write Column Data Routines}{117}{subsection.9.6.3} -\contentsline {subsection}{\numberline {9.6.4}Read Column Data Routines}{118}{subsection.9.6.4} -\contentsline {chapter}{\numberline {10} Extended File Name Syntax }{123}{chapter.10} -\contentsline {section}{\numberline {10.1}Overview}{123}{section.10.1} -\contentsline {section}{\numberline {10.2}Filetype}{126}{section.10.2} -\contentsline {subsection}{\numberline {10.2.1}Notes about HTTP proxy servers}{127}{subsection.10.2.1} -\contentsline {subsection}{\numberline {10.2.2}Notes about HTTPS and FTPS file access}{127}{subsection.10.2.2} -\contentsline {subsection}{\numberline {10.2.3}Notes about the stream filetype driver}{128}{subsection.10.2.3} -\contentsline {subsection}{\numberline {10.2.4}Notes about the gsiftp filetype}{128}{subsection.10.2.4} -\contentsline {subsection}{\numberline {10.2.5}Notes about the root filetype}{129}{subsection.10.2.5} -\contentsline {subsection}{\numberline {10.2.6}Notes about the shmem filetype:}{131}{subsection.10.2.6} -\contentsline {section}{\numberline {10.3}Base Filename}{131}{section.10.3} -\contentsline {section}{\numberline {10.4}Output File Name when Opening an Existing File}{133}{section.10.4} -\contentsline {section}{\numberline {10.5}Template File Name when Creating a New File}{135}{section.10.5} -\contentsline {section}{\numberline {10.6}Image Tile-Compression Specification}{135}{section.10.6} -\contentsline {section}{\numberline {10.7}HDU Location Specification}{135}{section.10.7} -\contentsline {section}{\numberline {10.8}Image Section}{137}{section.10.8} -\contentsline {section}{\numberline {10.9}Image Transform Filters}{138}{section.10.9} -\contentsline {section}{\numberline {10.10}Column and Keyword Filtering Specification}{139}{section.10.10} -\contentsline {section}{\numberline {10.11}Row Filtering Specification}{142}{section.10.11} -\contentsline {subsection}{\numberline {10.11.1}General Syntax}{143}{subsection.10.11.1} -\contentsline {subsection}{\numberline {10.11.2}Bit Masks}{145}{subsection.10.11.2} -\contentsline {subsection}{\numberline {10.11.3}Vector Columns}{146}{subsection.10.11.3} -\contentsline {subsection}{\numberline {10.11.4}Row Access}{148}{subsection.10.11.4} -\contentsline {subsection}{\numberline {10.11.5}Good Time Interval Filtering}{148}{subsection.10.11.5} -\contentsline {subsection}{\numberline {10.11.6}Spatial Region Filtering}{149}{subsection.10.11.6} -\contentsline {subsection}{\numberline {10.11.7}Example Row Filters}{151}{subsection.10.11.7} -\contentsline {section}{\numberline {10.12} Binning or Histogramming Specification}{152}{section.10.12} -\contentsline {chapter}{\numberline {11}Template Files }{155}{chapter.11} -\contentsline {section}{\numberline {11.1}Detailed Template Line Format}{155}{section.11.1} -\contentsline {section}{\numberline {11.2}Auto-indexing of Keywords}{156}{section.11.2} -\contentsline {section}{\numberline {11.3}Template Parser Directives}{157}{section.11.3} -\contentsline {section}{\numberline {11.4}Formal Template Syntax}{158}{section.11.4} -\contentsline {section}{\numberline {11.5}Errors}{158}{section.11.5} -\contentsline {section}{\numberline {11.6}Examples}{158}{section.11.6} -\contentsline {chapter}{\numberline {12} Local FITS Conventions }{161}{chapter.12} -\contentsline {section}{\numberline {12.1}64-Bit Long Integers}{161}{section.12.1} -\contentsline {section}{\numberline {12.2}Long String Keyword Values.}{161}{section.12.2} -\contentsline {section}{\numberline {12.3}Arrays of Fixed-Length Strings in Binary Tables}{163}{section.12.3} -\contentsline {section}{\numberline {12.4}Keyword Units Strings}{163}{section.12.4} -\contentsline {section}{\numberline {12.5}HIERARCH Convention for Extended Keyword Names}{163}{section.12.5} -\contentsline {section}{\numberline {12.6}Tile-Compressed Image Format}{164}{section.12.6} -\contentsline {chapter}{\numberline {13} Optimizing Programs }{167}{chapter.13} -\contentsline {section}{\numberline {13.1}How CFITSIO Manages Data I/O}{167}{section.13.1} -\contentsline {section}{\numberline {13.2}Optimization Strategies}{168}{section.13.2} -\contentsline {chapter}{\numberline {A}Index of Routines }{173}{appendix.A} -\contentsline {chapter}{\numberline {B}Parameter Definitions }{179}{appendix.B} -\contentsline {chapter}{\numberline {C}CFITSIO Error Status Codes }{185}{appendix.C} +\contentsline {chapter}{\numberline {1}Introduction }{1} +\contentsline {section}{\numberline {1.1} A Brief Overview}{1} +\contentsline {section}{\numberline {1.2}Sources of FITS Software and Information}{1} +\contentsline {section}{\numberline {1.3}Acknowledgments}{2} +\contentsline {section}{\numberline {1.4}Legal Stuff}{4} +\contentsline {chapter}{\numberline {2} Creating the CFITSIO Library }{5} +\contentsline {section}{\numberline {2.1}Building the Library}{5} +\contentsline {subsection}{\numberline {2.1.1}Unix Systems}{5} +\contentsline {subsection}{\numberline {2.1.2}VMS}{7} +\contentsline {subsection}{\numberline {2.1.3}Windows PCs}{7} +\contentsline {subsection}{\numberline {2.1.4}Macintosh PCs}{7} +\contentsline {section}{\numberline {2.2}Testing the Library}{7} +\contentsline {section}{\numberline {2.3}Linking Programs with CFITSIO}{9} +\contentsline {section}{\numberline {2.4}Using CFITSIO in Multi-threaded Environments}{9} +\contentsline {section}{\numberline {2.5}Getting Started with CFITSIO}{9} +\contentsline {section}{\numberline {2.6}Example Program}{10} +\contentsline {chapter}{\numberline {3} A FITS Primer }{13} +\contentsline {chapter}{\numberline {4} Programming Guidelines }{15} +\contentsline {section}{\numberline {4.1}CFITSIO Definitions}{15} +\contentsline {section}{\numberline {4.2}Current Header Data Unit (CHDU)}{18} +\contentsline {section}{\numberline {4.3}Function Names and Variable Datatypes}{18} +\contentsline {section}{\numberline {4.4}Support for Unsigned Integers and Signed Bytes}{20} +\contentsline {section}{\numberline {4.5}Dealing with Character Strings }{22} +\contentsline {section}{\numberline {4.6}Implicit Data Type Conversion}{23} +\contentsline {section}{\numberline {4.7}Data Scaling}{23} +\contentsline {section}{\numberline {4.8}Support for IEEE Special Values}{24} +\contentsline {section}{\numberline {4.9}Error Status Values and the Error Message Stack}{25} +\contentsline {section}{\numberline {4.10}Variable-Length Arrays in Binary Tables}{25} +\contentsline {section}{\numberline {4.11}Multiple Access to the Same FITS File}{27} +\contentsline {section}{\numberline {4.12}When the Final Size of the FITS HDU is Unknown}{28} +\contentsline {section}{\numberline {4.13}CFITSIO Size Limitations}{28} +\contentsline {chapter}{\numberline {5}Basic CFITSIO Interface Routines }{31} +\contentsline {section}{\numberline {5.1}CFITSIO Error Status Routines}{31} +\contentsline {section}{\numberline {5.2}FITS File Access Routines}{32} +\contentsline {section}{\numberline {5.3}HDU Access Routines}{35} +\contentsline {section}{\numberline {5.4}Header Keyword Read/Write Routines}{37} +\contentsline {subsection}{\numberline {5.4.1}Keyword Reading Routines}{38} +\contentsline {subsection}{\numberline {5.4.2}Keyword Writing Routines}{41} +\contentsline {section}{\numberline {5.5}Primary Array or IMAGE Extension I/O Routines}{43} +\contentsline {section}{\numberline {5.6}Image Compression}{47} +\contentsline {section}{\numberline {5.7}ASCII and Binary Table Routines}{52} +\contentsline {subsection}{\numberline {5.7.1}Create New Table}{52} +\contentsline {subsection}{\numberline {5.7.2}Column Information Routines}{53} +\contentsline {subsection}{\numberline {5.7.3}Routines to Edit Rows or Columns}{56} +\contentsline {subsection}{\numberline {5.7.4}Read and Write Column Data Routines}{58} +\contentsline {subsection}{\numberline {5.7.5}Row Selection and Calculator Routines}{60} +\contentsline {subsection}{\numberline {5.7.6}Column Binning or Histogramming Routines}{62} +\contentsline {section}{\numberline {5.8}Utility Routines}{64} +\contentsline {subsection}{\numberline {5.8.1}File Checksum Routines}{64} +\contentsline {subsection}{\numberline {5.8.2}Date and Time Utility Routines}{65} +\contentsline {subsection}{\numberline {5.8.3}General Utility Routines}{67} +\contentsline {chapter}{\numberline {6} The CFITSIO Iterator Function }{79} +\contentsline {section}{\numberline {6.1}The Iterator Work Function}{80} +\contentsline {section}{\numberline {6.2}The Iterator Driver Function}{82} +\contentsline {section}{\numberline {6.3}Guidelines for Using the Iterator Function}{83} +\contentsline {section}{\numberline {6.4}Complete List of Iterator Routines}{84} +\contentsline {chapter}{\numberline {7} World Coordinate System Routines }{87} +\contentsline {section}{\numberline {7.1} Self-contained WCS Routines}{88} +\contentsline {chapter}{\numberline {8} Hierarchical Grouping Routines }{91} +\contentsline {section}{\numberline {8.1}Grouping Table Routines}{92} +\contentsline {section}{\numberline {8.2}Group Member Routines}{94} +\contentsline {chapter}{\numberline {9} Specialized CFITSIO Interface Routines }{97} +\contentsline {section}{\numberline {9.1}FITS File Access Routines}{97} +\contentsline {subsection}{\numberline {9.1.1}File Access}{97} +\contentsline {subsection}{\numberline {9.1.2}Download Utility Functions}{101} +\contentsline {section}{\numberline {9.2}HDU Access Routines}{102} +\contentsline {section}{\numberline {9.3}Specialized Header Keyword Routines}{104} +\contentsline {subsection}{\numberline {9.3.1}Header Information Routines}{104} +\contentsline {subsection}{\numberline {9.3.2}Read and Write the Required Keywords}{104} +\contentsline {subsection}{\numberline {9.3.3}Write Keyword Routines}{106} +\contentsline {subsection}{\numberline {9.3.4}Insert Keyword Routines}{108} +\contentsline {subsection}{\numberline {9.3.5}Read Keyword Routines}{109} +\contentsline {subsection}{\numberline {9.3.6}Modify Keyword Routines}{111} +\contentsline {subsection}{\numberline {9.3.7}Update Keyword Routines}{112} +\contentsline {section}{\numberline {9.4}Define Data Scaling and Undefined Pixel Parameters}{113} +\contentsline {section}{\numberline {9.5}Specialized FITS Primary Array or IMAGE Extension I/O Routines}{114} +\contentsline {section}{\numberline {9.6}Specialized FITS ASCII and Binary Table Routines}{117} +\contentsline {subsection}{\numberline {9.6.1}General Column Routines}{117} +\contentsline {subsection}{\numberline {9.6.2}Low-Level Table Access Routines}{119} +\contentsline {subsection}{\numberline {9.6.3}Write Column Data Routines}{119} +\contentsline {subsection}{\numberline {9.6.4}Read Column Data Routines}{120} +\contentsline {chapter}{\numberline {10} Extended File Name Syntax }{125} +\contentsline {section}{\numberline {10.1}Overview}{125} +\contentsline {section}{\numberline {10.2}Filetype}{128} +\contentsline {subsection}{\numberline {10.2.1}Notes about HTTP proxy servers}{129} +\contentsline {subsection}{\numberline {10.2.2}Notes about HTTPS and FTPS file access}{129} +\contentsline {subsection}{\numberline {10.2.3}Notes about the stream filetype driver}{130} +\contentsline {subsection}{\numberline {10.2.4}Notes about the gsiftp filetype}{131} +\contentsline {subsection}{\numberline {10.2.5}Notes about the root filetype}{131} +\contentsline {subsection}{\numberline {10.2.6}Notes about the shmem filetype:}{133} +\contentsline {section}{\numberline {10.3}Base Filename}{133} +\contentsline {section}{\numberline {10.4}Output File Name when Opening an Existing File}{135} +\contentsline {section}{\numberline {10.5}Template File Name when Creating a New File}{137} +\contentsline {section}{\numberline {10.6}Image Tile-Compression Specification}{137} +\contentsline {section}{\numberline {10.7}HDU Location Specification}{137} +\contentsline {section}{\numberline {10.8}Image Section}{139} +\contentsline {section}{\numberline {10.9}Image Transform Filters}{140} +\contentsline {section}{\numberline {10.10}Column and Keyword Filtering Specification}{141} +\contentsline {section}{\numberline {10.11}Row Filtering Specification}{145} +\contentsline {subsection}{\numberline {10.11.1}General Syntax}{145} +\contentsline {subsection}{\numberline {10.11.2}Bit Masks}{148} +\contentsline {subsection}{\numberline {10.11.3}Vector Columns}{149} +\contentsline {subsection}{\numberline {10.11.4}Row Access}{151} +\contentsline {subsection}{\numberline {10.11.5}Good Time Interval Filtering and Calculation}{151} +\contentsline {subsection}{\numberline {10.11.6}Spatial Region Filtering}{153} +\contentsline {subsection}{\numberline {10.11.7}Example Row Filters}{155} +\contentsline {section}{\numberline {10.12} Binning or Histogramming Specification}{156} +\contentsline {chapter}{\numberline {11}Template Files }{159} +\contentsline {section}{\numberline {11.1}Detailed Template Line Format}{159} +\contentsline {section}{\numberline {11.2}Auto-indexing of Keywords}{160} +\contentsline {section}{\numberline {11.3}Template Parser Directives}{161} +\contentsline {section}{\numberline {11.4}Formal Template Syntax}{162} +\contentsline {section}{\numberline {11.5}Errors}{162} +\contentsline {section}{\numberline {11.6}Examples}{162} +\contentsline {chapter}{\numberline {12} Local FITS Conventions }{165} +\contentsline {section}{\numberline {12.1}64-Bit Long Integers}{165} +\contentsline {section}{\numberline {12.2}Long String Keyword Values.}{165} +\contentsline {section}{\numberline {12.3}Arrays of Fixed-Length Strings in Binary Tables}{167} +\contentsline {section}{\numberline {12.4}Keyword Units Strings}{167} +\contentsline {section}{\numberline {12.5}HIERARCH Convention for Extended Keyword Names}{167} +\contentsline {section}{\numberline {12.6}Tile-Compressed Image Format}{168} +\contentsline {chapter}{\numberline {13} Optimizing Programs }{171} +\contentsline {section}{\numberline {13.1}How CFITSIO Manages Data I/O}{171} +\contentsline {section}{\numberline {13.2}Optimization Strategies}{172} +\contentsline {chapter}{\numberline {A}Index of Routines }{177} +\contentsline {chapter}{\numberline {B}Parameter Definitions }{183} +\contentsline {chapter}{\numberline {C}CFITSIO Error Status Codes }{189} diff -Nru cfitsio-3.470/docs/changes.txt cfitsio-4.0.0/docs/changes.txt --- cfitsio-3.470/docs/changes.txt 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/changes.txt 2021-07-13 17:45:36.000000000 +0000 @@ -1,4 +1,102 @@ Log of Changes Made to CFITSIO + +Version 4.0.0 - May 2021 + + - Removed separate directory for zlib/gzip code, and updated + configuration to check for zlib on the user's system (required). + When use of cURL is enabled, it may also pull in zlib such + that user applications may not need to link with it separately. + + - Changed version numbering to 3-field format. + + - Added new calculator functions SETNULL(x,y) to allow substitution of + NULL values into tables, and GTIOVERLAP() for calculating the amount + of GTI overlap exposure for a time bin. + + - Fix added for proper handling of string columns with zero repeat + count. + + - Fix to column filtering expressions which write #NULL values to + columns of type (J) format. + + - Fix to memory clearing when using polygon shapes in region files. + + - Fix to fits_str2time function so that it now flags a particular case + of bad syntax which was previously getting through. + + - In ffgclb and ffpclb (read/write byte columns), the "undocumented" + feature of being able to transfer columns 'A' string columnss as + byte arrays is now handled correctly, with improved error checking + via updates to ffgcprll. More documentation on string handling is + in cfitsio.tex. + + - Fix bug in 'colfilter' functionality. When performing a + column deletion of the form -COLNAM*, and multiple matches + existed, then none of the matches got deleted. Now the + first is deleted as expected. + + - Improved handling of corner case in ffpkn functions. + + - In ffgky, modified TULONG case to allow it to read unsigned + values greater than the 8-byte signed limit. + + - Fix to parsing of corner case of extended file syntax. + + - Major updates to CMake configuration. + +Version 3.49 - Aug 2020 + + - Fix to imcompress.c. It now turns off quantization if ZSCALE + and ZZERO columns are missing. Treatment will be the same as + if ZQUANTIZ were set to 'NONE', even if ZQUANTIZ is present + and set to something else. + + - Added mutex to fits_execute_template() function so that the + creation of files using ASCII templates will be thread safe. + + - In fpack when using -table flag, replaced warning message with a + more detailed description mentioning FITS format update. + + - Added flag to CMake builds to disable curl dependency. Also + only add CURL_LIBRARIES to CMake link target if curl is found. + + - Minor adjustment to download progress output. + +Version 3.48 - Mar 2020 + + - Now can handle parentheses in path names rather than automatically + interpreting them as output file specifiers. + + - Fixed bug in imcompress.c that wasn't properly handling conversion + between float and double types when reading from a gzip compressed + float or double image. + + - Fixed bug that was preventing use of bracket and parentheses symbols + in pathnames when opening multiple READWRITE files, even when + requesting no-extended-syntax usage. *This fix necessitates a + library interface version number change. + + - Fixed bug in ffmnhd / fits_movnam_hdu to properly handle wildcard + syntax. + + - Fixed bug in fits_open_extlist to handle filename[EXT] syntax + properly. The hdutype parameter may now be null. More documentaion + for this function is in cfitsio.tex. + + - Added new function fits_copy_hdutab to create a new table with the same + structure as an existing table. + + - fits_copy_col / ffcpcl handles long long integer data types more + natively to prevent precision loss. + + - histo.c routines now recognize integer columns that have been scaled by + TSCALn keywords and may be closer to floating point type. + + - Added backward compatibility for very old Rice compressed files which + were not using the ZVAL2 keyword in the way that later became standard. + + - Change made to cfitsio.pc.in to prevent forcing downstream libraries + to link against cfitsio's dependencies when using pkgconfig. Version 3.47 - May 2019 Binary files /tmp/tmpuzcml21n/rX5xk5xYz1/cfitsio-3.470/docs/fitsio.pdf and /tmp/tmpuzcml21n/UbpUyGy8Ex/cfitsio-4.0.0/docs/fitsio.pdf differ diff -Nru cfitsio-3.470/docs/fitsio.ps cfitsio-4.0.0/docs/fitsio.ps --- cfitsio-3.470/docs/fitsio.ps 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/fitsio.ps 2021-05-20 01:18:54.000000000 +0000 @@ -1,17 +1,18 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software +%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software %%Title: fitsio.dvi -%%CreationDate: Mon Jun 13 15:51:07 2016 -%%Pages: 138 +%%CreationDate: Wed May 19 20:39:48 2021 +%%Pages: 140 %%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 +%%BoundingBox: 0 0 596 842 %%DocumentFonts: CMBX12 CMR12 CMR10 CMBX10 CMSL10 CMTT10 CMSY10 CMMI10 -%%DocumentPaperSizes: Letter +%%+ CMR8 +%%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o fitsio.ps fitsio.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2016.06.13:1550 +%DVIPSSource: TeX output 2021.05.19:1639 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -43,19 +44,21 @@ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end +/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 +def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 +rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 +N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop +false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A +length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} +forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ +BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat +{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch +round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 +rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B +/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} +B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p +-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ +0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 @@ -75,64 +78,652 @@ end %%EndProcSet +%%BeginFont: CMR8 +%!PS-AdobeFont-1.0: CMR8 003.002 +%%Title: CMR8 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR8. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR8 known{/CMR8 findfont dup/UniqueID known{dup +/UniqueID get 5000791 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR8 def +/FontBBox {-36 -250 1070 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR8.) readonly def +/FullName (CMR8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 40 /parenleft put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9928A7C95D3A6E9B +8E92F84CA0AA44461D2F4FA0F8B81C6F5B7BE98C9712BE166610465CF689DFAF +27C875C029C0116DE61C21DA0092D029E7DBEDFDDEE3D67E6936623AB53FA2AF +18BEDDD7AC19A19CADB6ED6CA7A26E6044BE414FFF59C0B98D5819A6B881F9AB +7AD0D03BDD5CD309C67811D5CF0B93F6FDC9AE64F74ED4E81F2E18D880BD842A +DAFD0BDF06300201C6946087FC0B999447BC370200BFB8CA420B668B32EBC242 +6DB1546A7164CF55B332FE9D239B65F532B69EF9F4F93828A44C8F5C526126F8 +B7A369114CA68D4F98638121F4E17F351723D9F1A902FCF087F94AFD23876517 +2D15B482AF2D68C3F31FFA864E031596E597882578AC7FB0DAE2A713B065B374 +3E2E72519ED6D50CBCA40A7275A7109A4F3ED8A4566AD8832890D3D1F4899850 +9B757442B7EA355175CD5D6D8B4152ED2D7EEB4CE30F174FF672140354046A45 +7098EC45B9DF3DF5CF7B417E201DA88308CEF4CED8E8903AF24FB8DD0187352D +25738519ECBC70304F8F620CC45D2586619205DA3955696FAFFE2082402B3502 +CB682F410DE5FFE80A4DA3D3BCF02E35BD577D0DE55E7B8A33B7A2FD5136B5DD +A0BCB61F8E7F4363C21F890CF287304DDB8FCE7FE207C0D160B81E7EA662BED2 +DFF8C444E19C91E72254257CD87240A70F1A964FA54ED9ECF27E27A57DACC3DE +EABB92C085030870C6CF5C40B6E47F5C0AEB30E84A73ECDABB2D754EF6EA28BB +16EBD6636BC288E62F4A38BFB55F5F4DD20FDD77D767F6CB52F9513E8EB75413 +07F1877B2C01278675177499E4E8EB09F2657821613F5C7643FC064293EC6E9E +B519FFAEEA36B19C9D1302CF91FCBF87FCB57C5F995CB6712BB3D8681EB6F05B +B2A4195A3C73CB4ABCCFB958EAC533BD89560D2790CDE1444C0F2E4EF27A529C +F01052964E56F6D76A190E5FF45934BB711A3406284AF130D4DC0D8112BB3752 +762CA0200CA262359D4F54C0CCFA9A50DE18C7DB14419E2990ADDC4A54B94978 +D9174CA39434022FA77FB30179EF805E2189C35919F5EBE215EE2A00B4407826 +CE56329C5586D8B414770BA5D45513C3AF1931D632FCE69B4CA504944E03362C +74A1177C6398A61A12DAA0F156543E2A8E9969C4308B7ACC21A5ECAC8F172541 +1B1316A88C0C163E574FFD3CD22FF08488662FCF2F9344BC25D02146F36CA6F9 +E2D0130C654B7485EEA9A110A33AA0C769121F81821E9A2BD062FAC158359D44 +3F9D9947200EF1EDDD5860F10438B162A69683957300C75AF7546C70C97AB2EE +37EAAF0089E2623F787F252569B06C665FDB45EC9681C0774ACFBA76B98C4E89 +7EB12AA5F8798FFC110B49C25E3A483ABE83B0BCC6DF0578403ADC369E013762 +C9D08FC94D949BAE636ACA9F36F4E3F02296775A062077B011A705B6F1784D36 +A926622CB3847533D7ACB24A4EBABB14593B5D8E1DAE2BFEF8A51835C8D4E76D +7543C126A4271C59A5881A5AF89331694F84489CA66725995DC3070F306EA447 +CF30F63CD476A46D528EC1FFBFB8EACFA2BEEDCF54C92CE2BD26DEA5827186BD +3A4D1709415CEE7D51D671357B4A5D11E835F63521B9824EE5282E58F05A8ACC +FD249461181A38C2F47BAC4E79BE368D64F886AA493C61CBCB2ED401C8AFBA61 +59CA6F6216D941A92AC52ACB3D7ECC28D6A58EF4CC70BA6DE23E80937AB38E89 +6F05FDD15B954C0826636267EDAF9F2BB466BF79D2E10EED9B04297E6BC93069 +79581ADD1A9D9FAE9306F46AC95B98C60A2E53D60CF1AA4069BE301E17E25070 +F98DD67BD8642B1D07571A32766072E48BF27E1576FFEED300D7313A358A823B +49C8F135961B7E259095C9BB67F996CE0B90E95344F203922F47E11753F70D38 +2ECB615403490310CEE6C03AFA97DA2F47ED47125D110FA69725BA0018F6A40B +29A307FDB3E52322A77A0102E6F57654CF1E96A134D13860D83AFA0A41112D3F +2247A09ACF7D06713BE443FA27C7E7220E875965D53030FE7D2D62EFD2F1DB87 +5FB091FEAF599BA8C5167525899E578AB341BFE2BC4E53A047093168AE189237 +EA55F055514EFA939DAE9E859CB5FBCF37D99484F44FE5AA5FA386B28BB642F5 +5DBAF059A50FE96C7C6D834531D64F1F2E99AB2E96EE74D149178B1C0618495E +293973D9A03E1790654B67C0882376ABEC17D74785B3737D81644F28B3BC6FFF +F92FE29126995A07E0BC5EF3A4B93789A103C428943E045B8D1A5063AE71E806 +568D48072E53DEA85253B01DF0BB7367A6BE4DD7BE514AD74E3F77C825ABA405 +64DAFA25EAFF8F63344B5F6B523629776CEB090B546469F6A6008DE43072DD3C +DEF51F62731037D1FBD0C038A1E9B669849EB3BEBA281624F13D20B61917A109 +A0A7871A73F7BAA18077360B38A4625C5DB9AB9E43BDEEB856FD0E2D3AA2E075 +267B978B9EB47F2369302E87DBD5D5B422830BEC32411FE75D584C58650EFB1D +136FEB92B94BF8939FD63AFB7349C7511E5E46AA7324F8B1FFCA9C2A9E9720C0 +A720918E8E860F137567D386AC29870FD990BD69465B3A3D2A0ECF2753578AD7 +80DC87EBB319EB5AFE0B6F6FF8616EA30C51425FE3ECBC5F8D0B0BEFDEF32FA7 +D168B4E85C804B7326A0942CFDE732B1171C643452B7099B31649CA2C38B62FB +46EBDF7180004C549B53F88021D029452C2B37D8C565BCDB0B11541039A13C0A +E45D4B68C7907B8BF08C6F41F564B62BB554235D50330E78DD02795516D969C9 +66119D718798120442CB7EB9877FF84EC69DAE25F8559DCE3BD8042959F695F8 +2F99845B1B5680DDCF181D806CC4903E077D1FF5E60918EB34C0B1E028422B71 +CA63EFBF3F4F3CD813CE831EB54265A555BDD35AD7D723F9CFBDAB29C54F8AFF +2D35C6A3299E0A2DB470C7B141B1E3E10DABB7873AE302926BA8743278FAA8C0 +DC6174501D6A289CF980A3F55F2DD5C3A514E7E7F13133C35D2697D64C25130C +DB78FC997968D6B3BC929E8A31B6D212C5128E4412632BC52B3A1049F7F2F61B +C74AE9A6AD19B9E2E240617E2882F7D29ED3A4279439107AF9AEBEE47CE85DE5 +CE9595A96A118ACF1EB1F5929930321AF7732E351E18C6AD378508E37B4C327B +0E06AAE21278AFA9255AFE5C022034DA2968D260879B4B38E7EE2E11A593DC3F +CE71ABA050C004473324CAB6F3C50E85DEDA3E9A27388D8FD3A8F6E42A79670E +F7549CFAD4CCB337A6E0BAA4846ABCA059F1E1933CF11DC0FFBFF550CC4A1B47 +CF7BCE0875FA747AA854534960F757884505A5AEE0330179A9547A4AE3E68479 +7A457DE83326DC30B67F27CFD4AB697601CEE352F72F0966B3CEE3EA24683BEF +6D23AD51B8432C3F0DD0D0F80791E1091F38988B7A54E466A9AC7810DE8B7893 +6B0AA6356597891D56190A7660BC7F657BC559E0525D41EC228078F2FBF89C6C +72D666DAD838CBF0861FBF0A1D4ECC069AA49DFBAE5C56B781A1D5D79DAAC256 +13E3F9B928A2394FC71691E4355642764459714412D6F8EF803FC5F7353822DE +6CCBB8FBE5AA1F2C7F4D384039D85E7728527DF9FE0239E2CF8BCB7411C000B7 +1FE660AE6A2A19229E5E8776CC83EFF3C27403935756463EB4721C51FE0B1197 +86C2F17842A0FB639F28083DFD4F1E86D7D3BEFA922514ABF489C5CCE93D6F72 +D2EAAE14F6CBA2BE4BBE7D7EA8EA19DB3A87350D4A52064137C3D15A5B05B03B +70B1DA7328D10713B83974C390C3270AF5A9A47C0BFBFABB9F31063B0CCFBB10 +0F236C74446688198EFF039110F6FF42FA9F82D463AD3958B5FD205BDF85DE20 +FE3F0C7AEEF350AEE6DBC1DE2E2DA4F4599956F59D6F121F7086DC120416E180 +52DBBC4E56C09746938698860F30007091E1CC0351B43990E47208ED495310F5 +7BA9C6AB3CA10A3F1B318FD47C1CE3B9FF1304321F9623E32D315AA9CE64B35B +F841E6C62B5B2488A311C94937879E5E0E170FA77AF0AC75C5E6E9F3E8F825AA +09C1702682E14FDFA72D27901C5BDE009B1E52E8C4511C6F6336251BD45261F7 +401CA3DAE7C4B0CAEB91B9954BF4A97C48ECE7FAD401351D59DDAE9DA94E2335 +74A2B880E4749D3D7026CB5299F16C204B6E00A20A6619C34922C7D3FB50F127 +3157CFC08DCC5164C8023CD1B6C3556C73CB8E4ADA845339CA9BABA1457ECEE6 +ECB9849DF1F0FEBC89E5F97C92978A500196520839CEBA6C0FD2E3D27BB4B4F0 +93CB2BB565F4627C6DB62DD0E084E627D69B5DEF42EF094381B62C0D67EFD197 +301B132420F51A41561E6106870147E0D597078435BE3819ACF0DE28AD779847 +F3D2CF667DA06955D53E0204CEA2935E9E984E76963D3079EC092031E2A10E61 +1227E5EE6770DD4D745A52655369EBA06A19BD7D95BBA271E488241199D1008E +36EA99F8DFD2A9F87B06B070158B466AA4C6EA3BA77DB0F853F0BF9A304EA291 +34069714368E0B94DFCBA3BE5EDB6C8204DFA7EAF5C3406F60A7056407D1BF6C +CB85C1F432F97D821F5518BBA79AF8453A568FB2C2D025A70CEC75F46C545011 +ACE3A99B2582793BA1DC655230AE2EFD24DE20A01D4A441AFFAB7771F223FA6B +9169849E727E494247F67D6E1EA9DCA06A082FE2094BD548AD7F08B565145634 +E7ED832FEC1378306DDC796303392ADB0CBA130B63B38ED57B7828B47732853A +893E8836FE19CCF27002AE92C2B2CACFDF8A42F1B8066E033B965D2E9157FDF8 +E1264B40813C1A4CE424274AA3528A4F09B3B53DD4D23789A68B3D17BC1398AE +0ADA2C2168427A49846DE0216908C2FFFEF4F13C1ECA12AD341E238EE46E6DC2 +B71B54C52659632911F901660261E493AE2483D64E119D9924489779B62BC9FB +A052E822FD8D83178E09ADC825DF0DA07FCE7AD68EEB29FAA275A13691B4A5A5 +B0BC0499CD6307610CD6209583C1152C559A2760823F8DC0B9B990BFFE7B7E9F +3969B968AFEAADB9FC0F1410EBBAA0DB979CF153F0B8C978405F8E6F2B6406D7 +AAFBF4A655A15DD6D1E9A7EAE10EF89264659B09283F50B734236885FC09FBE5 +98D780012FA77FCB19F15BDC522CC7312546C0730EF5225DEA8C22A3BC6554EF +4FE73B9AEB5C2F7DBD474221760E5F539A064AC450591BCF3499E3968F2CBD6B +F15BA2B37080A4129B66D4C2188524F025414F14DB3F96049A8B0E5EB2BBE7A1 +AD64A988FE875FE4FE5186BB4F5DDA16983CB052D474B7D72F3E8965663EB50E +015C72407C3437142D3D7DBC055FA627139488DBC5A0F98D805C2143D99F491A +167E07AF60EC9F17C36289368D740B632CB919A0E74C412B76CE7A5906D5200F +9E79CEB9C65ADA3A0F23E8947E834AE7A329A9F0AA7A6BF545B1D7B4666C6522 +CFF268634EA06DB3A82D91A4C0A9B227E79961212881A54A6762C335DE7E0831 +130C45D94394D21C049B9D189ED955438C2151514F17BFC67E431DD9A8349202 +2F616AEC1C7B19F63D5000EB4771370924BD4B9053FE78B5E4A244B9A149D66D +A8BF3B398396D2233E92E4A5FDC70FAADEADAFD255193D688842DBA865CF6154 +C9348D590F3FEB135D4B7BD4D76A52CB140888247CAFAB25ED51F4D187041CA0 +ABD956F83A5661CEC171B52AF92F9ADE27973B560C802E1E0FF51C4003D1289A +CDD09F8EDA8AFDFF666D35418CEADF3B0BE298F0D1E5C8E024D6A2017A7E71F3 +3A9FEC9930F1118101E040339F9D41379170928DDF5B5875212B271DC843F612 +E0C21C67263186E3D6929160464D4D5C8928E14D0845762C36FFBDE548188E20 +3B6BAFE5EECA0385142F01216FB8A90C43A472C1D4447FE5C7C78CC088FC72E7 +3FAFA062C338BDE8A430FDF1951B107D8D73FF9376FACDE5900BA362C66F8C1D +947F9545C5C13A53E4479B1C1A50472C05E8F8C266C6D4F4EB08E97B3B1BA972 +26973B844545089C5732322BCC9A5A8FC972FA0D7DB8BD85D2F515ADE65DA479 +0224F7EA2276CFED0B75B2C23AE7377F86F1F6F205D6FE19377D87E782143697 +984E731F83CA888199CEB425643C259D4FB8B58DD69A96085198306494BB497E +FE7C9954EF35B679BBE3847A9C73507874F71FC97665E2A58BA41407A1745247 +44A79B588D969D11CE4B863CDA655DAA53CEA5C3C263B345E782006CE9831D49 +603D2D95DE9E370D617F5928BA416C362BB2B4DEF16A5D44BD24B34257765F3B +6223B3F9B54DAED69A90C7050AB97B06693D253C6894CBD7B497DA449F1D9B7C +D91B421891EC0724F59C82B9CB288DC42F2D2D7A7F22EE3D910E15953D7766AE +276DABED3820390BAF2700C4653E1C77FE63DB71A66D93ED293E25B8412A1EFF +809554BF04ED0DE83F7F190883ED793803CAD2C34A66524D3A580ACDF3C13B22 +08F18905E7A4A16DA9ED2A112462FB9FFE481EC2069E484E8BBFC19D594153B7 +3DED4C11762223B7586483B06BC164D824D1A6FCAE80A35DE0DB8B33396771DF +76DC5C05578EF1BE00A70BAF3D951A01C87328DB2B0DAD6E1B4C21F37D1BC0C5 +A929BDE5EADF20DA60C4DE2E3C151005814F24824D33B95F700E09A0207EB602 +3EF60DEB1622B91DB99A855A8F1DA96358F05CFCEDBDDDFC8446AE3391BEEC41 +966E594E28D052DD5ADA49DFF65E79540EBE5329DFD86C23CC800F95221B9C18 +CBBF941D2FA47EF1EF59A89DB5DD188E75EE94AD2A79E2221107E5992C00D531 +2E00B544895A9204656867E3DE9D4CDB64B920B5CCA9A73E6514B36CABAE01BF +94C15603B86780190595560F792E5EF01650074EA4A9BBC6ED284B9AC2020641 +DCBCEE0ED27FE58171DFE104EEE4202759E594159DF45113C00236127A46FB35 +9EC705F21C0E456C1F0F924594C09AC64D4377C5FEEF764BA4A09ABA8D09DEB1 +FC13B0CD202B2F04CF5D73DEAB65C36C2FA7C0DC236BEEF6D23BFFC9C493DC8E +1831F19EEF81EEDD976E43BAC6B5CED13F901DE59835FC75490EA528A72CEB77 +24C38B258EC38B9E6B97F85CA8C10D8809BBE55A6FAA12456FCAC786942E123C +06D1E55F7ED04400088BEC968BC5081DC7A1B1B65166E7821679F76694F235FC +6854C8776AF855B83445D9FF919B1D80E98DE0741D06D6C5EEDB3E3EA6392530 +F1BA817737D8162F7B3A36AC2A03190CDEC654383E31934C3E0A012B639532C6 +26FEBE9B412F1C92D1943B7C18CEF510729D501349644C97F087F2F840074AE6 +D8CD0FB2E620FFC908BFCD938B675A0A4A687F7FBE8F3DD06A62D7B6DE7DF3E2 +49D367D60B10061EA86CD512F5A1BE8950D83C62695E130128E0037B62552D17 +064319BBB9B1FAB9D79705E5D68AAE9B36EA14BF1A59A863BDB8DAD9AB5D7B8A +E30E2B499F952D65877C8E38EDD7DB29F9579D09E629AC188DB6A6403AB4BA3A +D358B3770D727A2B77D84B6C9EC17E29D88E3421F9B7D2D822EB78BB8BB50692 +8C46DD6F9BBEF2E848A2B5669B200019802AD19661537A84D3514AEC5AA47445 +2C791E01DCEDF18D9506367241255FFADEEA6183F51A9F42448A7DE413C08359 +52DAD2A60FD606AFE14702BD3B0EC448720FE63438D020DEDFCDE3582FC31DF1 +17B25FC152789D2F17FD60B8209D292D2152DCF8D28B5ADC04F6659BBB746CDF +145163361823CA343763AA951C640B5D4A99B7787105A1609EDD6A596EFC3F6F +2FC33D0D499DBE56C6668E137715D435D6B683E0113647B2765AB0F3D98AC717 +5B33C3EDDE18506E73B4E392B022F30480BD30F59B2E3A59D93017296C3156B4 +B5722E1955777716388AA987B2665669716F866FE6BDAD5E74A523CC03915F26 +9B7B231F5D9B1F61DF7CB01ED3F27070E36547B263855DF5B2E3ABD2ACC440B9 +0826E1DF4743FAE6668B61F72C8700992755522AB11C765981A9BEE0D040039D +6C2D64ABED527082C97CA606127AF5C0CD4A423CFD22E135E3FC281A1DFB8B5A +A27428BD620E6D9AD648463A82FED0129AFCD5D0DA54F9A6F694250450E05CC9 +0C22953EA70B8E53901964DE19A3F17485855FE390BD5271ACF3B6B9F800D465 +E6F0C0032262CD73C5AFFF2D0ACA39CD806718F3617BC009F9CAB5E5CB6616A4 +BCAA8A5C4BF77FD7B641AB79F6D8F3630B503FF6193F8462C6E08C0E62ECEE01 +BF644803F2030D7D7F0F4C7C20AE6897A5152F896389B74F939A8123A7A2494F +301D07706B01600ACD60D84236E6D2CDB1E5D02AC300216DB172A026C49AD933 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont %%BeginFont: CMMI10 -%!PS-AdobeFont-1.1: CMMI10 1.100 -%%CreationDate: 1996 Jul 23 07:53:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMMI10 003.002 +%%Title: CMMI10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMMI10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup +/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMMI10 def +/FontBBox {-32 -250 1048 750 }readonly def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def end readonly def -/FontName /CMMI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for +dup 58 /period put +dup 59 /comma put dup 62 /greater put +dup 73 /I put +dup 84 /T put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 119 /w put +dup 120 /x put +dup 121 /y put readonly def -/FontBBox{-32 -250 1048 750}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 -990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E -6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB -DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 -59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 -D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF -8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 -6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 -1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE -03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 -95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 -74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 -3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 -47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 -AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 -42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 -40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 -B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 -9560176676ABB71BBD0EE56B4CC492C0652750227CEC7B86E4740EB7B8775564 -332769DD30794E501BBB0E4E5CB665F3628E10B1137CC8BC5C0A64A310B5E27E -5FD6E3B04DA3914C15987E638A72790AF4073CE9CDBF6E3C749CB4DFF9C54951 -A58C386C54BC4E98B102B5E91E8567D2EEEF048F2CBD5D243701D20909290B4B -A3083F632D8552D42DEE0C69A4B14D8B15AA082DECC12B2ECAE6F663E6D09F81 -EE2979EF41FBF12C9D8BF23B77E0A20088EBD107C5BF9DD6F03FFC3AB65B69A7 -54953327E1D4AEF5A146273392BBDB321D4CC9A8FFFCFE5C515B466E21546CC7 -C6209E5A76F916B03DB98BC6CED334F33E7B373D42761696F5A876CA6F93F16E -15A07E2E102148CA4F62A99C +D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 +45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 +7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 +72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E +BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 +974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 +11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 +1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C +7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B +0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 +EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 +404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 +78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF +A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE +88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 +C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC +BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 +98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 +E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 +143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 +981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 +88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 +4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 +FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F +347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F +FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB +C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 +B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 +F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA +29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 +36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 +048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 +80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C +9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B +75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E +4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC +74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B +D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 +E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 +EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D +543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 +710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 +EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F +7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 +03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 +01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 +500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F +F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 +AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE +1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 +85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C +4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 +6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F +55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 +085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 +BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 +2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D +CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E +BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E +D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 +991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 +6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 +E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 +E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 +B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 +4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 +1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB +B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 +8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA +FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 +AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E +BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 +E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD +38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 +7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 +2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 +DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D +22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 +8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB +44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 +D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A +42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF +C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E +0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE +66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 +E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 +6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E +1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 +B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B +897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E +EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 +A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 +F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA +A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 +2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 +51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 +598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F +87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE +178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 +4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 +7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 +AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 +3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 +337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 +C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 +DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA +7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD +6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC +98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 +821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 +C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 +7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 +B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 +A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 +23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF +C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 +969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 +3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B +9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 +1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 +B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 +95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 +FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE +44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 +FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 +E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA +633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D +6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F +FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD +375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 +6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 +EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C +E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D +F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 +DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 +D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 +D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 +9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B +9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 +B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 +D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF +8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 +FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 +B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F +00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 +909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 +5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF +7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA +BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 +C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 +BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 +BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D +4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 +94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 +F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 +E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA +92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 +63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A +CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 +B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 +5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E +86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 +AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 +3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC +35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD +155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 +AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 +E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F +226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 +9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B +8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B +919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE +A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 +9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 +523BFF5E279508A98568CD5CFD18FABBE9D17265A9042537872831BF5F1F340A +8D3E6DEA1D9675E87B3425FAA0172DBEFD7C28E30906B9FBA65517C9B58FB6BD +E0D474E69BB90B0D130A32C4130974A1C961CF064A5BE8EC1056858553FFCF7C +0D78627BDE04E5D0B9F6F72F92B61A915DFF7AFE7DC3807891D039AECEAC3F50 +0A09579E661D3DC3022206061E0250B09A05CF198DF82D4F28FCD2A85F717630 +90740F78F242019C349B65C2A455597DEE127E914C372C6EA0E250402117B903 +1D7D6FC7153D77458569B2E0E6FB978B06AAD616BBEB70B58E0BCAE1013D4405 +873D2AA3C41309993563E652BCF2B244451D8FA1305BD9BC2C57BCEA7F065670 +A5059B0B17303312E8B787E02152FA92480CDED118924A9D490B2BCBF9A560A0 +D4B55DC4968ACE1019CC2840E1AA0596F8E8D4BF7119B047E55B0FA01C69B9A9 +F79DA6C9C9B49EAD94943613151247423679B7A29AD2C71BD077306FB9EE0AAF +9AE4B268C8BEDF3CAE8CE885ED53184F9BF2F55AA05933071F536B7180F6301C +A04438DB5BE00037A8145A4476A817526E0890BF693AD4BAABE7DEF8EFD91F84 +A5CE71D987EFBE47F1A081B8EA09254B0494FA0635D1BB6C788ED879ECA1BA50 +4163FFD0618B20A0D5107746B8B37D349DD891CF3D5D5E6A39264561C1520337 +3AD02F33854BD550D8DED71ACC6A9E29A0DF2079E7F0EE2BC997B7B8DC1405B3 +239085C647255F199016CAD211409DC8D791B4138D1EEEC4D9E93B56FCC84BB7 +3B181ED10567C2475CA6AA48E0C1B28F1FA2BE9FC1F785C0D8780162C9E2DE2F +4448A086E2070BDA2CA69A7F238C06815770A69E21E9482E3CD58E237264E4EA +63622EDFA8E6EDE9A4A8D2DF2426CC6F2C8DCC26A25D945AC8E54496D569B641 +2B7C1115F177F2FE0805B042DE14235A9BFC49CA54D16EA27C7BAAAFE065ADB7 +43E3A7534E02F326C00BD568AE608C4C17C1AD3BBC14D5FBA2D984E1A62CB5AC +3B03FB3834F1D856350D3050613FD2C27A6FF7D3A835D2A71CB1156853635D1F +236E3406731B7F56BB321475D1125143C50E9C8CE3F589778F33E8669B8D2267 +1BDBA5447B670BDEFFB87DD409BB78DDF18368083E4730C5BC2B6D2657669BBC +228072D17DF0DB5996968F5F727BAF117B5019A332C10D46957C4D7F5A7280CA +29D82891BA138C6ADC9CCC4EEC7B88BA7AD98B16C36B9B66175D56583EF8292F +66373F62A354BE84117F423B4A542DAEEFD989AC1CB1A351C28B964FA715515E +DA0F573D284B64ED8499B7E1A6E96C2F978BF070F2C9583543C5449406CE6514 +B07BD070D9B5321EE18DD2A0B1F614C25B3731DE0E6F94726928514FF82A1138 +F54B4BF8728C85AF1194738855119B2721132E6DCC532FF977CC0B55349C39D2 +AE68FE04A5261E481BC0E1BCC38B35A557143792A55C9F8034468424576ADBC2 +38351962E5E3B8572D234ACDBC6AF90F4D95406BF34479D9EED1DD9D47373EDA +43CC478DA097B062CAEFA56C829E090137092FF012A72BC1A7C5AA2770213E4E +B3610625AFCCB621FDD5020DC9F042D9FF25E2852D671D43174F73E26043ED31 +24D73BA74B9AC8AD7B55BBC7A3D6C7D684AF5B64BA81C614F39882639E04A1A1 +8D4267C8464EFA420A38EFE83138AB3AA350558FDE6B4851BF456C23E9D9FF45 +4CC274E3451413FDB9CEC4756523C67BD10AE64D047CBC4AE66A231C135D73E8 +D3ED67D5219FC766838B45FCEC12D6B50A23A678FA9BE112092C49499D599E70 +5A882AF83CB88A882146BF8629C8D8489BFC68FEB4DC881FF6A14F58FD4BC0DD +AC5BD35A21132D03BEE9A54E85CC1F92CD6DF750786B3599297395BD119A0049 +06E8E4DAAE290F458729639C0DD07ECA3795EDB3760872CBAB248A2B5BA2264E +9F7B0173A2C4F2491BE959F1418F54C1A74FFC743EE3895E1F5866C55F93546F +7CA28D7EF631F41853605D89AA54B825735B89EB837ECA8EE067953E300CCA44 +FA66182901AC8DD788DD068D3ECA6F193D7918C2630943DA8E4E99A786717706 +09F0F08CAFF3ECBE6A7FB5C8F0AF2E1D0E254841657A0889B3C9272AD5997A04 +112410C138CFDAD7CBE315AFFB8C7716E0504C413A677AC15E7E7E0BAE11630B +D9139F4D68F13ED2C2A15D00566600478BFD668F97C05F88DAEF073AE438DD74 +42F0C55AAB5708FD952D93AECC8C5E5446980376B66A737D092A27FDF6BB46DB +5B8CE851B9807C903920F1CCADA19DEB31626729FAF0E54BC9E7BC45E15245DA +24767FDF0C6628952DD6EB94587DAA025B4C3C7E2F18066BAA441DF177B14C44 +FBAB1CDE758892C7D28CE1B98499999D881602EF0A71EA12F6BC4074701C6553 +7E178406C351731500436CB1586E0F41FF52A860F6B3563F4D5D45279F3A4D48 +0196EB1FE855E05AF253A1A370E2CBAC0B6A7DB01F50F8E6AF172B6D7A23A33C +DB14B6E03D892DB4941B680F8A435546631B6AD807847B69144E44E683BD092E +A909ED98282CA5C2B1FD677DC823A811141A5926F28EF76119F821F6F90F86AB +4C862AD62BEB640DA79CDEF394D744C5A306D084D116512D373CFBE41718B0CF +42967980FBB4B9D56121926570228B956DC575FC7EF8D02230746FD2689D5928 +247C2BF48F81B7B6AD5532EFAB4362F65E8EAA47413CD3EB936E61A40E2A16A1 +EE68D2AC5F57AEA25676B0ADE4EBB4206634648E6DC5F5F3819642EF83F23404 +EE218A29CC170AEC36AA6947EAD97AE98163E286293627A9DD053B0428720BC2 +32B0E8D6BB156410478FA51E90BB10595E35671969AD367F63D1360263CB5277 +EA9EB8CE749F444CFCA0D708EE1ADCD00C268AB52FB9764EE2DCAA880476D311 +CD7E992FA4914E5EE3054E1BF43914F8DAD9039B594FAD2BDF3E309411FC9DCF +B570D1F681CEE038C01B2EF9851D96F087607D7746C591457763CE457147F6AF +E536FA02B200A0A713D5272EDD6B512C407B1CAAA36335C00C6DEBD71C8BDAB6 +FFAFBCB2858E65BD6AF4143AF8F74A09F0CA5B0369A97F28FE122197B4C72014 +1C1D6DBED5FB1D2CD524A99C64D532F25F6FCEDE22EC7F048E5DA26AC7D0ABD2 +1328B289DAB11E4C39E5A7FBCCB52DABF0D77DED007B7F8E0274C7C56FC349FF +EA4A23B62F9D89EC7E1AE3254D3208D806541477F324EBCEDE34A6B086F3D767 +2FBB9045F10702251EFDCB2F11505CB36F4CA94FA85F47F152C7261D9A48AFF0 +5F43DF3D8BCF89544C2EDDBB4AD2ADC8D00550BD7A804C3D4E5EAC6A3FE3EACB +60D54A37525993DA26CE1E71B59D77ED5ACF8D9D492643D120BCFD808C48D9E4 +DE9794CADFF971D482F726C99375A04FFEA5869C73598A2537746863E2FF5E69 +C1D5C2AADF0E96CC425558D27E9A29FC41DBE06B65AA7DA948B855FEB1A0C182 +207B4077E7F5CCDD8248638BF9860F1FBC2111A7094D4580F5BAE7484DB497B0 +BC605C6DB73D2F8CEE83C4997DECC46F1894AAE93F2905246DCCB66D7DE4B3EE +57CF0224CF7627CD31A1BF5DA887F72AD474C8BCB1BE3433079487426D714F89 +3DC3E9CD1702891B290BFF56EEA49E4DD48C3717771B7BFC827B6AF4A539261E +2B719CA9D0A8380801C3F5791A377DA998C1BF4258C2EE59DDC293255F4898D0 +E0010C61FD469683443AC8EAC74155D3FCE2A5FEC3BD8AFF49065930150D0AB4 +682B86E95782D76238A0F9770DEBB0AC240B08BADCC5AC565D6B797CCC4D56EF +7077D6CE9AF19C52E999E081FACE576BE59CD1AE2493DD0DB31C419135FBA15C +B515424C828D7FF50D459F7F24845FB5592140219EC645A2AE5884A19D67ABE5 +DF02A203CE5C27438A50A697CD25C38E73040A66D8C9DBF9C6CC63FCB0FB3D09 +79E9E80C058D7EE2A385BEA3AD351D8ED2526968ABD125D26941BFC0173EBA1B +36C2F94B72CE50231191A111046F04DA385EA2C3A8D022829EBE9E5A12CD151A +C3C95FBB13CB7BF787892B15CF6BEBB1803C810C555FCE446C62BCF47B7334A9 +0E96864158523C655807B81C8C85D8B72D427BE8B1DA9F8BE926D43EAFC8CF5B +B9D2AC2D581A981DA012CBDE1112603C939C614E4466FDC826FD4BE4A6A6DEA9 +BA0858E536EB2BC55919C67D4FA0636E06157A6922F35E217133CFBD3B808B7F +4F16B6369231CF78166A662448CFEA903AED4C63AFD716088B6E8F5CC8F5C4F2 +692D3B063EFDC5E31F16B00810D129674A3CB185D00C68067D8A4653AB6DEA12 +7D7CBB2D199BE7E826569CAB3523678EEF72061F79335DD1F37253386713905E +51F1283641C19F38720DE4734D2AC87C4524C537238F11FFF00797CE487BF4F8 +467EC942952A39469F040FA091E314FAC9631C35722BF81A08623163ED2DB636 +198B256DA0908E25B7D845C58094B9BB8CCBDF41828C578EAF501BBC100A43F6 +4B86F61FF336486EDDE3DCAEC806327F932FD238AF7B0427FA8D1E070601822F +9F82AB994BBE77FD22040E1E404F7941B883140579B05DF2BCD673A5DF5E707F +165630A0CD0CE3857EC2F5AF334BF78BF1CB670D3C08B88D4B6B3362F50FF03E +479B228F502D3B21D24938917E0C0779B0B25F209C43DC8925E8FA899E7AEEA5 +094C0856A5199BC810845EA03CA5164A60220D1ECC8866BD0B867FD8762BF2A2 +1E9CA76103B19064CA769F3DF65A6CF556889624CE695D0D1DB483A0CACE7FA7 +DABF7BE77380D2821B9BFF47A778EF5DB89C97B370FF6F83543FF7F8DE17FDEA +89CAA5FD789E686D99296F758B3F2C030C54DD76EB4273BDF9C6D0C639CD9335 +FC9035E447BEA327BD3E7CADD2656C807368DFD911A447BB15D24042A123D483 +71A82BF008A80763E09843ED94C83FEF6585E9A2D77C35381BD9C117A85C68BE +5A219BC17DFC77BCF3E5FE0E66F8E76BC68479419E8726457E7E9A12A7E4F36C +1731883C506BD906056F7D244B8A169979E4CA492FE7F82054B498E5227829F3 +A87C9FFCB46A51D01D8D64C2789A0B08CB24197D740A75141703CA8DF65FE870 +F554F63AA4F414F98F5EB617B2AEE29C11F01C2F392BC2E6B426010C43811038 +1B7EE7748494BC33FF331AFFBAF4596F0BAECDB0319EB442C6D7F13B427D332F +52ADB1D583FA4D89D2EDD5640F536A583774FA05D913CEB2D229C60CCD45AEDB +1A6829D0984D6CEFA4CAF6B3ABFB7800FE9D5CEEA1E9E4845FA8910A7FD2DFE7 +5E5B07482D91ACFB11C53552451527C9ADBE6F636E04F53974E31EA0F860D58C +88130003B2AFC887C132CDACFDFF0A7414A7A6AC1559A0A2C6D0FD881B06DCA5 +48D41AC5E8DF18F9B67E5020841C8FDBA92AF916916AEFC3D0676AF33E04CE53 +8F8C2147FFF2AFD2228CF7ACDE33C7B1C2F3E2C202FE87B5783487A3D071E450 +C13E28929E219C2EAF776A906BF3F0BD12F216A4C861AAC23D94F97A4E4240F1 +4BAA7DC6620F8AA1F6CA4B22F31275D704C7F11DEBDF6F3899F721F78882C530 +0B9C5B0AFF25ACAC4F2C05776886D2993C2C9852070A485CCE7372DAC3BBB955 +4D40796D093DC2ECFED304729B7D56FCBF12DD9B9E3153BB60780E85801AD450 +8C8CC6516630D5D2399B255104A34CCD11E9A901D808B1EF323F8BA751F6F96A +4F8BFC3FFFE90166FACFBC056F00FED251B6CF7FA5DDC5CCA10A63970755A9A1 +03406D8CCC5AD21EC0018A9E7C0DD859C281C425B2A01EEC518FF40C0E984199 +32F3691D57DB28660649298CC84EFF31E437046643777DF4D82BE2EA43E46CFA +D2CA217729977291BCD016C9D7C1EFC45EB7FABE348B161FE41251E3BBF936B9 +A9336575410585ED1CA7178B32633139AD0DD0F364DDEE3C80F899F13A5C405C +3DD7BF3CA427B3D281DCA792B0554847A7573098333A4B7FB8E09989B350E97C +9549C3E3C65721497AB38FCD62855904DDB4B27952C374EFE0D948D905EBECDE +0761A0658830AE2C078975DE7F5247E977E01458910D1B656318F95C63475D4A +9B01F0CE00BD0856DF65EA549224DAD7190E0E2ACB9271723101F937518C09F8 +44AD70E78ACE820B7AB6CFA00E3A558D83E1E2144212F5CF18AD1255FC795452 +5E3C53FB83F41174869E0AB9A07C0AFF1412FDB8F016E6B1DA5504B4645B8EFA +701D1CDFA7100CF7607F9142E81053CE3AA731890F7278E69728C89FB9F140B9 +061574873E7BC950B4FD27CC32A8043998D75CA967ABD0F1A218AD2CC8F57172 +6B8D0812EEEBCADACEC955898F20A7B0143E2376B2BCE81E7B64290556155855 +9F13A3B7A3212A5E5EB8BD69859C9D362AB4C04989D63D543D53B8C5132F7890 +E350BCDD3ECC568A1999098FF975FAA15163B3769B8645363A50275D913B28AA +8F7191E2B97462889DF510CDE4EE309F16F083E5DA58CC904207A98B6F8A615C +5B0C60DF1E3AF537B2DBA25BDE00BA193B32531484F2FFE25EA1C586FBE47956 +C456A0175F30D2585693E648E421FAF3745FE532C7A6A14935EFBEB54F2B0262 +26B3D2429BCDBFBB2BF4BDBC8E4596F2A2E5F766C1169BD793B1F301389F36C3 +0BA3A97B019EDC0712D301F44C8B3442208FF1FF81A494148A2FD4D2BA6AB21B +F4CD27B606ED0F174DEA1E902A9C3E39F2BD4FE86DB1E35F8574C39F6F39B876 +26EA056846D1E9A36DD8DAEDEF1A5E4CC33371F2BCA775B6CB9BAD9503F2CE70 +97346240D95D5216E6AFC6058339943EF533BECD43926FE12C1270465CD98892 +8E0F29F47E685AF910D49817A84D698F53FAFD127845D137C078374BB4F21526 +C00498FD71A897DBA030864AA22CDA370B0E5D0A9166720B074EE0729E815FC7 +D8CDC3D6EC5E76C7472A7CB2D31083DD1F59DD5650417FB79D3D2FB3E38FC82A +7A1149E6A39C0A5F19D7189490A4048E40A0BADDDA9974C32873E0DD6CFC6414 +F933F76A67DCFD5E92980047FF18DCBCF16EF96A36CCCF22D075C9B21942A71A +D554F268019F48E3519C953AB13949B74448452665257AC288F88A997761508E +8E97F94A431E8811260C6573D9641B9816B92A7FE36043C3E1717B5BEFECD0A1 +51152979A54605B9C415F868DF4993905236C243E2DF460AFAE9E0CA4E2C7D8B +C37F915F37B2E6A089AE3C05BDEF09ACCE70BD6C86E6300ACC56D898A09B412C +932C749D47DF16CDD337A931B41E51B6E119DC041DF735E6AA4E486EE826BE5C +B8EF449F569415ACCA57CDFBE6F00DA1A82145BCE2F8747461A8B1EC4BD2B0D5 +A4E818A3E25E64AC3521750EA70D861401E8205E2C291191C16473904C425793 +9FE813AE893CF9DAF0DF56C0E6C31BB367C8324E3E47354813F5FBDDD61C9743 +900008D87A6BF0C38CF56C87E22A7130021BE284535A18FF54E58EA96BDA27B8 +BDE678D0712508C2777C2FCBE097F0142D6609FA4C66DE3D8525A28F6AEF5011 +E6167706CCC81D3BEACF22FA47E6AD0AD501FE6AC5A7C546BBC7ECD3ACAF8D66 +7E08559C07207D15E96E42A987D9EBB88EFC080F52A82C17AB3D09659FDB04A2 +C952E4323E81B249BF28748A15B4C4914CB47EBCFFDD3CAB97C91905B65D66AF +2D54C1DB47E0626B18FD1499F69E993C22F24083D4A750EFC936175DC8DD9640 +5C5046356C20AE3B80D7FEF2BAB8A8646E33CC376CD5CF0C64FBF9B98ADD5B0F +5E1E85028067A89DF272EC73D3678E98D32E7A4485C01C546FDD0F76404D2B0D +70D409FB486828864E87FD997E17250BCA8EA1675789EF9FF715390B5232FF20 +F75571315347745931EFD45FE1EFFAFE7525FA6C5F3E2DDED8FAF25B918EAC25 +B2049A501AAB579957D3E4F250FCB2A656ACF7EBDB75F878D7F72B79 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -142,25 +733,40 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMBX12 003.002 +%%Title: CMBX12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMBX12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup +/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMBX12 def +/FontBBox {-53 -251 1139 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put @@ -228,337 +834,546 @@ dup 121 /y put dup 122 /z put readonly def -/FontBBox{-53 -251 1139 750}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 -B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 -AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 -7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF -20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 -B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D -68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 -D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E -26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D -F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 -77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 -BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E -C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 -30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 -148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C -E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D -E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 -337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 -0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 -472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E -A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -30F40A9C74C8E7773BE601C0E245E7FC10C02939848C3D28D823057B3EA23EC9 -E2BFF7851FB65FB12A4318A21D2C88EF9245D4C7BF21C81C4FC4CE0149E96278 -48F7BF97A5C3691E6CE038033AF54DE91D320EABF2B2E98617FD4145BFE5EBBF -1A5634DA07B00257A51966FFC009CA416D37AD30F4BEE6D72AB64CB2D62466F0 -42D66D6D33EF9107272835EA9C1C8FA04562864BE684FD5F8E6DF19916FF8346 -F39F3E1FA2975B5CED24EB160FEF6149954F76C359E9D15A209EDD7445BB6303 -6AFF9E1373CDD50B93DB137F3896D282F5C04AF0AC84AA02D5421A73E3AFB735 -80EBE676C2870822BA89F4BA85034D6431BC4A44CC264DDD10EA146913E9063B -038BD787A659C6A88C42FD5FBC51234664A8A1621A38C73ACB7199592AA5EA84 -B78BB5DBA7CA43E30CA8D3957CFF478712556EEAB1990C97B9BAB47ADB75E327 -B361D3039A3629B09EB84CF814773858F1D354AD8D526E85EAFD50944CBCE042 -367D1153D7B4EC4DD597DB0F57379DD63304869DEA4FA008D411E30ECFD62E41 -29F51841A9E07E066F06BB4829F87B7722562686FB801D6690F73233053B2EEC -473B9899F284296BB634358A22DBF361C2A57C59438C429EFB04B80BE083E238 -A6749D6AAD1F17F318B880D26D230B86F80A99C27B87F7605DE40A0848543DE2 -4AF7D5BF61CA6B00FA156DBB9ABE7BB0EC79CE8FD5A2FC5BE17050F2A74E8905 -75A9982E12698B289E2213DAFAAE40DD22B424562D7417E8B82A5E3DDA814669 -D4CC949397B0DD2B0787016CB8FDFD09318719D7C47DB72E094C12C6DF3EDE88 -663D6357CE7BFE51FD4A93887F022E3A22DCBE39CA86E104CE54C05AA0B5E469 -0AB9DA29D19ED5E783225ECD1122BFFF5E4E63488FF215A9F555C190ECDAF130 -B34E6BFC66AB1F7D000CC09CA9872299E23EC9B0A8ED04135C982978B9D7C4E5 -F9C7968B540837CC667196C7B40F579E8258C8C7AC569AB787BB112C046D0068 -86AEC034183A3DE02FB82C2CD3E252746C012F2385493F59DDEFD5AA95A26C61 -BA64D85CE90339A0C19F538C6E0516513B9E7661505AB81F45AEA04618CEB379 -12F6BB94E2812F2B3C69BAFC9135B439D74C6A94C0317E1B2A2EA514536AA990 -7B94105AF7DA13148A807CB2F679DBDEE10B09BDCC8BDC7365166C910AA450C7 -4FD88CA8BB639F1BA53A4B108D2E1633C5DB38E64DF4881E0FC1118559A078E8 -52A0E2A87F98461EE7B0B56DFB6C3F340430E3D5C41C12141E4332951B4DF03A -6824E8CEEA4AE8AC9F51981184287EC2710E4A51DB5E09DCFF4DFCE6B82A0B5C -D2E658D38FA7B2854778650A78AF230E97A4C195865C404EC18A5FA99EA30FE8 -755EE5B11397D3CCAECD81EE3F3D1EE1A1B1FD6B669270912948134ECBA3D5B3 -011CD3286DD6729DBCFC9A8FC93356BC70A876AB636E5C8EFA89881D3A6E0592 -D4CDDBBD21A67033AB3354BA1333206874D2F7D0E571AAD845A96057F005F730 -C98EBDFB006EF8874CC386A0B611389F9CF5204C65AD951306B0E090BB287EF9 -CB7DB38F2A58E2ED6813F2138922E28FA44792E5C57A70C6152B4A6E73462F8C -869886D1E5718C85F1CD5E7EC4BD73C6A4E3218A7118D42CFE42BB83A6B72729 -0E096EA902F81330771203309DEA91A560B56DE63911EBB6147600BB9B6A5166 -A818B7B8CE58279E22D776B2CF423897110CFF24807319C84A2063CA464C7616 -8260B36124AFE08188795E334864712574CC3DE12C3F0962D51734A44289BFE2 -2525F5D641EF82F25C1EAEA56C621525EC86FB6D09D99941D18094B7D77719E0 -3957294DBF2D221A49807B44323098D816A21C8F1BB888BC1075E2D6FD770014 -829050B6F8E297853701C467BFE76C1E52E8AFD5AF67B3FAD5A608C23E925F0A -87E7F56B0D05F4D4276CE619190A983BB19417E280B53060AF777BCEA0D1F4D1 -B803687D9C2050D0B2EBF3EFCB9FE42E02AFFA5233A49D27550BF8B32B1A3A3D -A8F58FC0FEC58439D12CC87CEEBED10BB6D9BE84DDDA7FE7A7283D2639212CEE -2DA539DE06298BF452F896FE103A4BF864E5399C3F220FFFD82AF1975FCFA69B -8C9782842F016682EFAE7269A34FDC5ED188E3E6E24FAA0345D9558B19521D16 -9FB47306CD1D15F36C9386347FCC9906A5420F4F6E030B007DF4D311B8E102DA -A653AB0BA300D9467B092165B016C6F28E8D417E1B93A6A176329A67C5E0FF79 -167F9CD8E2EDD33D5B11348EC7BF4C88C3226377DBA6C4723CBE67A7118F3CBA -34EF78E08A4211C39205325D138840E3F3FAA9CCEE74569B8F59CCE7E7D35D3A -0999DB04EC83483BA245883D764A3CF556949BE4B121C6483ED26D192405EBFF -089A97C4BA9649916F1A922F48CD04B7338EABDAEADAC52F42CF48272EAB9192 -C17906F59CD98D5A54443BD474385AF6B51B9C14EA8AEA27AE3473DC12DE901B -42DC378872B001B2C929C54117E6EDAC6202BF1028AD2793FEA3620935539071 -9BA89FBFB98229EF30B0382D9D603BB451634BFD08901432F16B31C9245D3645 -28456E44DC8B6C9C052B9446107116AFCC2EC0F39F0CC7B5E146FD9E995594A2 -DDDE2BD3DDAE13B9659969623BDE57219731BD3893B63B77D5218B94FF535FAF -2595C30EB0A003B144461C8115C5EC93595B4FAC2BC0D084E326E1F2CD14AC0D -D9B4C1467961E2FFC04BD2DCDC1A16E9582653B1CECD98AEB6ABF1E88086FD2F -347774D628A4E70B6803EA481996C07D6D84661D003CF3C92D32791A06405C2D -BDDED14EA55744AA956D04CADD4B2F5A0FBA5D29CFC84CC54CBCA53B19FBB69B -6199174100938FC1E16E7EC73BF85B058E235E282B17116250CC9965706D80F4 -EAE76E2F7E96E901CE29AFBDE9CF9E19CC2432DE75B4E67DBB7BF62C6A3A0C4A -1800F457B745F18AAAACAB8DEA973869EFED9464631EA2CBE95F78133B4DA06D -394AB1CB50B6EED8E868AEA0EABDB783EFB7F0431A450D9C48492A04BFE3A0A7 -9BFDE3B9DB2235EE46EF0D3E754F95819B6FD407E974856C83228A3C2A076966 -02E3F0F2F27CAE5C820FCF3AC5FF38C715B3DC3CE9AC77FB13382D2B606F469F -768D1B82CE3D66F1AB552902B3BFC8E1B3A5A45D3C3D914D304070AAB6C49393 -028CD984C44C2D8DEDEB61AB45A4B2237A236C0D3088AAC5A7F89EDFF9A09639 -8B1887E2CB29D9E9B5630A45879069E58DA52E5603D026339E637D7B83E6550E -CBD4349FB018A01749E171C987C30F8C36651501653A4421869F04A9B8BF792F -41B8D1E9F9101B658EF726DE26BA616A20A667FE7B571F68FF3BC77B127EF315 -64D1D39C07799B45A40CA2D4FD81633368EC9654282A91B8F38066B3D781E8EF -3DCF9CB050096E84E8DE000568251ADFB56AB4AECF2D29BB47110D277E5A1634 -D2813F9239951645D505C53CA91481C2B0F9DB72CC4C3EBB12D2BEB7B4201C23 -BE8EFE99CCC6A0D520F6282F0876E6A69CF5ED38AAA9066196A9456C5DEC58F3 -341797EFFF3040BB65E2479165581DD67AD36EDF24DA29DE341106F258C5FEA2 -D538201FBB6C0C3A132487E01488FAF2EE5A61E7079547278DFA812C5D822454 -F5B0E67620BEBAED135E63C8A55B29F685CA3CCCCBA06E2AEEECBD92E29B985A -23B93078BF8A6F41125529C1C171D7A8C1AFD9017CC089570E45E873E74D7FEA -7193C263492D4A6E73C65531C324FEA1CF9C4EBB6E501562EAA0EC4DA6C5FF7C -49DAFA4DA93D9F35F06616002A66468D7ABF3B3CAFE293A7CE0D1034B971B063 -EF162C62E480D259E5AD6383DDCCB0F2CE0059E7E04681106CA6378D59F3EEE7 -0AF84F11FCB538E4155CEB05D48678FBADF22F99B9D6589629FAAA181F78BD79 -9D97F53E9FC10919970EF6CECCC6464540FB4A8EAD144B5662A4B0BAD31DEFA4 -9C1F280C18BBB0FB005896075E3F4C52C9F11A2C0DD60CFE581C771A72273053 -796AB48AD2500600E3355CE0C91E26DBF8C135C6B12FB3B2E89B9011CCAA3D2C -AF8E2F38BE8D2BD82966B0037DA0B64A955AFC5181D3F2DA0F4FAE47875B5D3B -ABCF48A2C3D1ADF69F5A3BB51D456B19085363318C3D371221A7319EDA644EA0 -C30EB56AF819CAE5DEA47A7495B463E388562FB76C94621CA7F0DF9FA6C080EC -9F8AFC21AAAEAE2359869EFEFC8BCC433B683EE1DBE927463CEB19CCBE08ACA5 -B925E88AB69BF8EB7A0781F57FADC2111659F9A480B8B4158806CDBFD950C4A7 -0D792235486658CF8A96B0FDA2EE36468788225B794AE541683D2F5568B1239B -2956E585AE96E5C0FEF1D632895B3A0E0FCC57EEDBAF40F395547F77D7F4F6D5 -23066F8B08FD44B1F26E89083C70FF24CE2AA2168AA8B09BDFD763286A243BC3 -0431A22C8CC88A524E2C3DB01F1B65A1540A8C2EF5CEA9303DFC3F3CDB20EA23 -600F870EC83EF9992A976ABA1D086EE4018DD3F7004301A7A431694DAAB46B29 -538000BA28F999C70C3F72C1DB5CD7B1A4FDE6A0A87BA98332EDD260D30CE677 -7176F2FE3D12C3434985AB6CC12AB6BD4872F5376AE6E6CA9C4871007D6DEF15 -6D15C96C0433ACFD3AD8DB22100ED3D696FFA7DEDDA0449A14F435E9868DC2CB -8C1306330A68C38FCC010442A51DDC47BBFC474BCBA5A404A5705A0812B1DDB6 -CDE7EFD4D833C7DB0D4C91561C7369AEF96E849D23FBC55429427FDAF7E2DEFD -18E2BA193293C0BF21F7241626E30573F2BB36C0BDF9A1065B2AE02DCE822156 -0AD58921ED46E65C40FE54C0F9C58AD8531536208F5A6F538836B74090AD8191 -486F29CED44DF9C4A547FDE7C40F833887845BDDCC68D84F2F445CD4D871FE87 -52681595A6D0DC3FE1E2B00C53AD686E866FEFC39F6C7FFCAFF8191C13F7598D -3EBDCD33CA548FE31C67AA26568BE071A4D5750F9246695A4184042DB2FB0680 -C0E1FF57CF2E9E360828CCE1C7F22D5CC921A995DBAE0D2469D4C5147D607923 -455D9390580E120416B814A310E5588A0D54160728CCE53712D266C090F7175D -96725CE1CF85B0E3772347D9DB0CB282F04A2CE1A1358675ADAB4F5504554189 -B141B5FA5BE5D2DD4FD88C91AE99E6504365853F95620C378657DBC98D06A4F0 -38DAC9CB25A11D8A9D224C9CAD1369245B4A8E19AA55523BA8402CF056FA7818 -DA762A53F9A2F02F17E23C97A38C14ECC34B985B1EABF9900698E122F11EB4AA -E5524C3DA713271DAB8969B693A7CBD313F28120C7A68F4B3037AC043C992D7E -F5829F11930CA70B580A161635228ECF20C5BA4D3B1587FD7A1D52C2530FAF7D -C2C9431C7B4521296D391A3436642230E0E5D74E6D5E94277373513DC443B09C -0BC80C1EA1F22A7F2F4CE3627E852B5A636DEC22ECE7FE76F53FFC41AAF1B490 -15E8060C6448F07997AE8D012B640630D72B11D77FBFF41F65B6EE2D70345A6D -E6137355349A55DEA19D1DF5551B54F1E2F57E85568954AF23B2CA6D60859F11 -2BCF6FB935BC106B9BBCD8E8DD551D82C7D348E03B71BD4E052686F1A0D59091 -EE647EC64FBF77F558358129B938993D0F75673B45F41D2EDE54FACD6DDEF68A -A8D55C257CEFC0E0D382C60A73C49DEC67AC68E5066749A1C00AE616A2C71A4E -14A95123F58FB1D940E2A0E51EFA67C2F2BDEFF85376D211DD8F15D43F2CCE7B -47B0CE25CEF1D450EFE17476BC3CFF661C1EFFC82E80E0A69FCCB25F39E51454 -E53912FF49EBFB3CD9593F6FAE81F1F0A9E167282286F8407F9F0023538D75E5 -76171E5A7005F053ECA82809C7073A1A480198BAE0085BA9BD1EF107D4324B24 -F96E24BB4FDD80B195546854618282F770631B5F3FEFDC035E6954AE76304038 -9ED525495644EA353E32F65140DEDEF41CD343B5333954D3A4C413BC3365B0B7 -3ED0DB1A27C60237A0E82407753C1F9817C4A0D7F07D328FE2216B34CB8A233D -FC5A420704C8F1D42B57E69424267E5BFA8C2AE65BA324262DDA2812D893050F -7D50D4487A5BBE53D7CF041DA6EF76A659DE8EE07DE413E940AC2160C994648A -6D0D0A59860B4080977C18CF6540B5F5B3B4DB52EE9CDE105D965E9FE5999208 -02CFC8639767B033A3EBC2C42066F6E7CE3B8D6E2F25030D14957F7FA8E59A7A -5685A8A8479545C373DE7778A5A65D7ED6139A2C8FADBE8AACD08D56C42D11E2 -CF01E2D78D4301556A8D7AFFF7642B10A36E93546EC8B2059870C472F5CD463C -DE1DBB211CFF689095891B9980D9C9438FF7EC687DA72C548502B5EA0FFDFEE8 -D982B934E7A9F4D62428FC6719894C0ED4B0040BBA5D0FCBD0E3D80F2E245513 -4C78489DB71F2EDF17CEF7784370D080B75122290F59D4B4CAA0484A809CAD27 -94FE9EDD79994079695C3DC4440C6B2FE4AB0129F2514EFFD8615425F7E74567 -D93EADD0FB68FD8C6B9E3C1275F4FD32B8CFF3D8D04B185E2D702E46289456E7 -F6A2A0D83DCF29862BD08AD7AF05E3380AEE207F44E5B8C11A89E954AE0BAB81 -C5A8D1449693A0E5AE02D0AC8D1BF1CD96DBA29A747CF41292027ED8C05DD325 -8B92300CFA2FD33F14CEE073F8CA93E33BB952B2E58E666B1E12CB5634136777 -6D155B1855064842120EF87ED8B1CB6C95D74EF97C0B85DE90E266DD14793F70 -27038C774A64E5757DE6FFFDE5CCB2BFA4B771BD7D02FCF0530E0768DB74FA39 -2BE1C80A37A77AAC1B4972AA0335A6E51787781D482D01CCE8CD8FC732BFB1CD -69E5BF80E44F7F484277E5D8B9611B8614ABB9C8865F26DA08108D355EA7B451 -2364F41F4EA9BA074CFD14377B092F4274F18F42B30C83ACFAF87513E8CC9716 -7ADFE45917E3B9D034F4ECE1455318BA74C68CD534B7DA3E3C1C94A10E7F5738 -46EF5ABAA7F58C0CB25A1F78F8FCF83DC2FA4F74B7F01E3141E1886C457FD285 -A44A1A57E968358BC29CAC2BC79CD14FEF92F522C9873ECFE82A01BC4191BAA4 -5D5212A7AFACEF600F738F4E6C691BD5D8D6F494187F43D42B1E876E6B12A02E -8357B376CA901EF9945D7703E28549C291731B78BC185AB2D3EA810CAB3A500E -2D2DF7934A616B3B0705F0928D97A742DB11392C51901CAB772C44113F1A5873 -54C74B49EA48DE55089AFFB75B288185955DFEF25610BEFF0789A40381A1ADFB -95628B44B810062EF1AE97D6101B13B020276040FD886422F69A92254B222986 -500384843D82F4A706D5160CE4E35556253C2B73B539D101F166873974CB1819 -26D751F2E4DDA3D93FC7128C2515A75C676ACCAF8C07E2863951ACED319EB268 -87C5802B7C54317A414BF9DA26EA1B53C5A8A9536F54FBA1699E1FEC82403359 -66741ED2B98756BD5DE594C8CB2E0C24BB372EB2EE6F7910940CE6EE8D2770DE -6343C52B4065B6AC1B3DE9C4575B8061DE6F05961E68FE6527BA66EC51AF4948 -8CEEC967F6E376BAA1DCCC8D50DC72C76DEE3644F890D4DFAD6E4B9115F43F9F -25CB66AE9E46331F5233609A390523BFD6D642F6BEA65B7500C3F7C28D03C2D8 -A3B5C7ACCEB8147C62865F8DD2F844F294E8AA932F5D9482FE0A1461EF74BA57 -BF1848B7CE0CD572A583A6837F9D27B6844E62DB08DF1AC678861485877454E2 -FADCD5C87B57340824621B978982092C1334625551D36494A1E0246336B4104C -B823C8ECEB49EAC4F8360867BA86FA2929918ABFEBC195C559BAF28B2396DE2C -5A550C3A17CDB40C4E2A4683590B0BBE2031F525216083CA6D9DE3247D0B77A7 -7348225427CBD78F4C8DD795D010D66B5D16F513066C021F54DB36BC6902190E -53470B96270C8DCE6AA8F836F926EC56E5A4C69BA37EEAAF22AB1D09860279BF -97935068A4D11319146344CA8CA2B87E81D08345C699A81F0F4BAF56E39969AF -A8094449E595CFFAF5CEC0540940DBBF79273B13D1A884BB2C354509CA95E582 -34284D9EE6992D5F3D2FCC09F99D1B8B31B59E651C17A174D98E2AE214332D44 -9F3769402AE4D2E6707450545C6A5322637648488BDE496DFA32BEBA617BDE88 -D07982B6948B94C91247FAAE6AC69A8727FD4AF3154C5F6B435379119898DC8C -3110AC36907AA6653E28D292D7AFE2C3E54B6D29800BC7176B4F0D00E09904D2 -F5DF5805E4C8E4348F017ACB5C62DD8EE155F56AB87315F95BF1A7AF147B71B6 -AE4952942EE6676E491E9CA622504DCE2ADC678AABB16886ED89B6309EEEEE6E -08D8133000ECFE0BE713E5D144DF17E98DDFC61C688E9A89302773835DDF9254 -A4985D6567AF8DFEB4335E1CD6B9D7DE23B009A7BEEED3BE0D7F77BEFB5BF2A1 -07A44B1F9CEF1EEB6D3F49804D6BC47AE26DF2F878E8ED4861FA691AF085A254 -688418486DAF652BE04054A8A8CE7EB42C5B30146C3ACC47502AD1BFB1A92DEE -B3D317D4D2FB276BF7C4F11678AC10CBB01C3DA178A5C101BA5B995D18136261 -EE1EDCBF883B6BA4335CC33BCBB116EE70B1372E01E64DCFD534672D9C84FBDD -79C8D2BDDE8D5C55F852E41FB5C1076D91B0D5C0E13F70B66904E08243EB3287 -C6257181962EF755E7A603AA23D63BCABF36F18684582182CC20CEA4F1DA0665 -1A8F1A4AF7C09F0351460919B10537E19A0ECA06DD9C00368137115979D3058F -635AEB09C1C561D020B5E19358F216B8D17582A518FDEB4AD7735FFA2C746D5F -163CA092531649865A1DA92CC8FDA32490826FAF4A9BA50653C2C3667F61D880 -D6523745251E5BADE8DB233EF3A62E7C92F21AA31618EB0A08D47F406FC07C54 -FC04404F5BF9DF6D2D53334DC93138323AE39E95F9CB2260995970E173C997B3 -414701687EFD2B2088E50ECBDF14FBCC612AEF323683D2800DC9B9EB054B8CF9 -3295728A29DFA6E22A98540806D6C89C34B188C29723DF52C50BBD4EF02C887B -335A72FCC0F7C358AE98D26FF44F1632CAA1774AE6F8852EE8BC262FF77A2E24 -8B8833B7C9F9C65F94C889A06095776BC75361EA184FB5C5C8BA401A8D2D9771 -D0D71BEADEDFD70EF617B92FE12FEAEAFA5F6013A28DA3C666BEE78D103C8947 -3901E3B368BEE322935020EEE395B9701F65615D510809D8AF431537805E0B5A -908D1B2C659582D0E54294B5BAFDF5FF482712179CE8F6820C3E72A73EE0A4C2 -43F792139AE3F8AB7A8D22A6D4C222B2B63CE37F0431157AD317A63E05067704 -85F00AD9B822B1506DA0551ED23099D53CF6E5127B5AB291B33EFBD26C21E9AA -4096BA233B76B87EEFBBF8721EA8C37B933C5D901C4E451C1B05A5920CDAC618 -F9431CEED497EA77D36CDF497354E158B9016CC888DDE52EF00302C140B29C1E -392F5974EF8EB272C054F3906F5D0B493C2478AEB0A83E469850BF76AE766B4C -884B10B49EDB704B33AA96020522C5218D7258210572E8B274FBB05B51380F5F -DD14C84263128C4D037314263E8B1ED48C816F06B39E32D5A894E114F9B1A2EA -F255A824E41E768E70ABBB14964CA00C9C3EC281D14BCFB681BDC943BCF320C3 -0DB0B18DB7FDE42A3A2DEBF1746BE74E18BC0A8081DFAFDBCD64050ABBBF3A66 -72D0D7CA15E88ADD7F0A1E1F70D397D838AFECE3352FAF0B149D5DA940B518FA -9594FF7171A2A6B77CD9CF96143DF0B708EF569CC135A2240343B3B50633437B -BFCB0416AE4AADA1A480CFC134C1DBB9472279C4966B99B473272AF27150B683 -09C57E73A83E7339B022F0388640EF9561C518AF312EBF0EF120CDFFF9F193AC -FD6FCCCC337922405224C8015431BA7610EDE19CE9176A6C1F552AC7413ABFCF -EAE1FC65D1F56917B125E498E37D2E7AD170F0DB13DFD8D430523B774DF5B2B9 -971F0F78F0931E81A848B1E2D901BA1A011957B56831AA755DE617F8A40B843B -470D96140340CA72B45C2BF0C0CB635A6D7B25A084AAD2830288ACFA119C3AF9 -5ACBEE18F38B244B7FD29210A7BF1D3A5EBD17E2B268C36CF439120B1947EBC2 -CF769AD003B5C178F5FBC3AB5D901682CAF6AEC1D66B3F3DF730C27F09430EF3 -81F32BE8B781338BCA00F8BB26B89804E750BEB587E558F48AE34A0516B1B4F8 -342A97EEE51D352EB39C2819A200790E5BEBBC50EF4FC2DB326FB61F969EC2C0 -98CD4F78F741C11D2744F26B443302392316A5C80A9ED122C7D27C1C89D098E3 -ED365F63F5F2DB3889A4EF86587722E0059123D95D3C471751D8D8E84941BB5A -D14766DF319F648FB6FC6B39E94450BBAD6F83E43B92B72B5D4F6804031782D9 -9E40AAF10A291F048E4A0B6E726B1E81942615DD0A862087048BD3B261E8F8A4 -25D82D60D90E58A9F3C03CCF9593F0A8738F397E058AC523438F58B2AD206B85 -98B61EB8536BDEE0219867CD40F10F622EABC2D52297B257EA0DD929B0BB7938 -158C6A6BA70514C27CAD1F310C493FEFC4EBCA10CE4F77686C374E1125F69855 -9869DB3887046E82DA5EDDBDECABBEF1E050B26A91A6CF23D3F06B4206D5573F -EDC6CB4DA302A355CD3CF80B54B270FA1844FB5DA988D08A754D30CC5F8DB71A -5AFF8F08A67CF1DF916E3370D961EBC802E2AE36B25F0B2BD2F01DDC9D52E45E -18D579D5C4A750F27262D2364A1CB2BB36B116626A9C1B6E35E22E81FF695E1F -713B9461726F5427EBABD116AF543A84981796A6FB49F72BB7AEAB3ED5E771EC -D1823DCED5EE170126069B5369BFBE2C1225EF0E5757B2ECC2360F8EB34EE3F2 -5F39660B7F714A82EFF3A61B7C9D26A32FD4C6EEEFABDB9914BF7DD6FB240198 -81F121394D0C2386738E343645A9CE8585145ED6957EB06466D5037B1FB3210D -CF0E79E0920167C5DBD605FDF8A66F96CE741DA7DD85D629280681BFFCEF027D -C9390E2EE59F24B714AE30A802F112BCA54AB3FCF419F65B4B27CB7A543B55ED -350D9BE596B15AD6F79730DC86D82DD075390869201CD6FA2D22F77FEF7619AE -6FB42C939079757BDD06BE3B8A7CE60AEA6D1B753658F858AA2584D4A4CBAF7F -0D701BBC0379973E5753B848BCB7CF56FF30E5AC9D2E83F33B4D87DA222F1306 -1877A2D810123D951F5CE12B17862EFDD5A86DA3A3987D973F70541D70B0CB3D -0F214AD4B1FFFA21A29E5C7856CE49FA93528E6D53570E3D8D6B17FA27B28AB3 -FD2BBCC63139FD7F86DE6A84A2204CB30FD14080D45EA14EA784A5471ADE8A70 -2864A204F10AA5B2A2C870521B97AD75CE3F6C078F1BACC99BBFC0E2F2387022 -6F72BF44DDB62051E1B81A1419CF2F033B77FE46C2208E7DA22F83392EC97328 -9A5E3DEF8BD6323E16D1D14FCFC890BEFAAC9F879198703CC9FD0FEEAA639EC1 -B787D77B325A213B71ED56F1ED09DAB41AD4F8E314FA8154BAACF480F110B939 -86477401D4ADE8FB386CE8959027A8B91C56C53028C7AD7EEB61DD986D303572 -86324689E1AFF282E10F789421EC2BBFC5637C18936B1F2B4D02C8C8D5039503 -D425992185042BA95E50C1ADD6563F3C661AAAF32E29F9A4BD3ADBA7A55962F9 -ADD1CA560CDF1D0BEF0C57E4EA11587CD17CAB65D9DD830CB738549C6F614612 -FACA8E3031BBF29682324D9E12BD792F9F3A24D7250D2AB55FC984C6CDBE070F -5F6282F51C4DEAD075EFA1820E044174FDBFE9AABB68E6254F4B59E8F442DBCF -D2AE8ED7ACAFDD486DD36530A71F9A0D9FF91B19FAF723B4909C9F99D5CB29F6 -2CB6384D6A3544359AE23E09770F82FF7C9327BD392BD0F6B607897B6D826C50 -B84B2E0722B0E27ADD479E5607B4500B8ED238B99C40B2BB47F02352BDACAD22 -262DBFBD38A9D4D1BAB79053F4F172397F8F7C00CBD37164A0C89B7E31EDB3C2 -25D32798F7F83582CCA56EC0F419316EDB2F3299E40BFFFE63C5C2A0ACDE3C9A -414C2BF9F341F40FD4C8A5B1950EA05A26DD6CE187E181E6AA167F26AF6A4E5D -6E4AE9430E0069749299D2B9D8ED6A3E647BF2707948B8F6D16D4DFBBC71BF61 -5EBDC349EAA9EC847880990795B75B118423D9153B05D5D6BF0D20E909F8B22D -0DC9A8CD8CA5B43D92F4CB54344B375926EEFA5BF058B7BAB54B5C97BD5653FC -F05BB1A5991B068C26B0420DECA3F1943D093997A3A8BB061BB25CFFC0CA1DCD -D85CB203491D176C4C183BB124F22D57678841F08419028F250C30D1237A0213 -E5A392E60B27D2BE5240346B99EAFF9B57F108DA66B6AB826546C6411864F7CD -FE404BEE7D58F28580C448AAB599D12B00A3FDB2BB93737971A5E13FD7CFA970 -656D45145A54DB1BDD0701097445ACF73861FEEB01835F35790E98EF162D5F37 -E1A5617CB2BC22074305FBDC8024E741C7BB0FA0E17F123AF953742E01AF56A0 -AFF35515ED55F9621AAA309D36964B0187F56FE1F02662B7DFD745F2F3BCCC43 -23C8FFD86F382E99DFF681A7D22CD133153C40C3FCBDF86DBED11FD36F9B6B3F -C5FDBEFB72496F3C209BD61EB9558CB2BB1672CAD20F8086DF3492147770C0F5 -95444F8731D0A1F6036C3099DAC1993B2C838794554E8A3B96614090077BAB84 -A5954FF123B90550E1D1A4AB2CA6E8214C473B3CF56746959C062AB6C28EC09B -F22096BF7FB6321338085C726C42745088742C6C55D4EA9854CAA71E7BAFEC70 -A29302F3C909A6E193ACDC6496F7929713DDD1F4B813D73E794377CC0B956B9C -2D07F5AF8C01D7D9F932F114547E4EBB953ADCED8B20E83FF41B1F4FA5A02915 -0C63DC0619BD7E3B5E6FA60157A21794D7299C5774C0FF7D929FE9BC1EABB7F3 -193E83584567271D2123E6B069DC23889B93CBF2ECE77CD8CCD649AE853784CE -A79337DC93FB835373CAB6E183F5CFEDCE41C418E8C0C48D02BDDDC0CD3D3B4B -285195948E36529F28A6F925FDF16248F9331CBF5A08DC0ECDE2C36FB0A0AB89 -2DC0EA84D93C834DDC1BF962D89153901ED7784D9E68BD06357F279CCB7C602B -CCF4F389CD7CB4197D2A9271D65097AC31DC2FFEF76884D0910639237DD0C020 -F0DDBBAD4C2883ED7313DFA0539D989C1FABB6A5ED54FC791B196AFE787363DE -6688123AAD777F27E4DD19C32B7FAFB9E8E0552DE8DA00570B1AC3E8CA4C7866 -6CDE42B4CB89FA30F0AC964EC7F2F77D3F1980313330F26E545BC7A8F5072AA3 -2FB0329361BC8BE2C2B48FD060C89CAED6DD9BF6462BEE5FBA59C569D8EEEEFD -8C1BBEA3B73A537D1256C7D6CC73A9CFA3DDB34252A3A4509536D62802A615DA -4AC07C441743B45A15D85181482717316C5B12F6E52BF9A1C287801F3677CFEA -6B60F505F9234792D6E82DCE04C72C308C0D17B80B14B291AA4B437DB7CE5E35 -436CC41F868ED6162F25BE5C9FE406FE656FAAA39A72CD5DE07569F21C55198E -54678E869AB6959798013ED6CB2D9CAF568F43D2624ED5F602B7F16F9D27C12D -48EE40743E1DA97E6702FC3634CEE0AF9E6FB3C4587346219C4CDC0B6CCF7F99 -E40B48B6C7F5BB21DA0656B683E71A4CC310B001A180D9E00BE05215B170D2B5 -C93C2636B61BA3A840076A5F41B8DB3E0B2A38C3848DB0CCD419E5E14DCD1397 -AD9811172CE82D7CC7D825B6722205E0072FC807FB647E0442333D42CF799579 -C7B7406D147A69C59E03536C8D2EF372AD9C374B977CE1A0784C83073742008E -480EC148196F146C5278FF1EC8252E708B9042389C11547351F093CA8488DC3E -1D5126DF92EB568240BBBDD84B2129B6E8FD6999651566BFB632984240E14F4A -E8F5BC9C04ACFB19B327E5246E5BA5B73A0A308D930A588E57174574ED2FE506 -9512E3CD02D75AFDC1A36BFB585493E4164F3894679FA602BEDD8CE9E821D187 -47CD38794364E336B65126F61CD3CA861F9919F24CDD410E5F03AAFC4E45E30A -486F6CB28CE7A6A2125C55CCCC11BA659E72234CE9D5F6 +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE +0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D +2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 +1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C +42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 +FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE +78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 +22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE +A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 +4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 +4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 +95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D +9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC +5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF +9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 +CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 +BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 +9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 +EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A +D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE +2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE +947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B +0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 +4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C +BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 +F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 +6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 +D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 +F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 +481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 +FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D +419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 +7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B +70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 +2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE +0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC +9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A +C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D +1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 +A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 +21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 +7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 +17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 +30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F +3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 +96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 +B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 +1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B +57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE +B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC +8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 +8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 +B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E +BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC +21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 +D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 +FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F +A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 +A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 +A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA +DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 +7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F +07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 +BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E +8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 +E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C +B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 +45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 +2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 +5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF +A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 +5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 +E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 +5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 +6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 +8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB +BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 +9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB +B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B +B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E +8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD +595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E +FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 +13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A +FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 +DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB +313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 +C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 +F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD +DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 +8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 +E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 +A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 +C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 +417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 +19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 +9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 +12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 +3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 +A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 +90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 +3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 +B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B +82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 +1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 +AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D +9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 +2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 +99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A +31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 +3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 +F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 +70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E +5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 +84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 +BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 +8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 +5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 +9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B +F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E +94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE +0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC +E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 +7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 +596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 +F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E +7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 +1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 +AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE +4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F +744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D +67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA +054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA +6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B +8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE +CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 +EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 +C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 +57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 +5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F +C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 +CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 +848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C +B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB +77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 +87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 +3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 +409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 +A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B +72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D +99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD +8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB +E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C +82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 +C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 +EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 +23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A +59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F +C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 +1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C +403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 +1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 +75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E +0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 +82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 +C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 +A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC +9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 +0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C +5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 +62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D +6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E +1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 +648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 +FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 +754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A +E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE +E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4 +0537D461EF019E046DB8A6F08DC7B007337B688E610C55A35496196C01E6F8C3 +C7ACEA49F6AFA7FD9CC809E9916813F64BB5704664DD21422F8F32477EB874E4 +D86593B4D4050C116B8861EFDC6BE1ABCBF942F0BBBF4E4241C418DD1263F252 +B16F904E5B650CFC5763390916625B28ECE4C39C55CA937E28093E66A9837BBD +98666F090E8E06F1934736F800CDD0E78706E3F1CE6D2EE55CC48D1302770DDB +A139EEEFCF8353D4473D89EAD552B810E0F1737A6636D15265E0FA2699BA04F5 +2CE3D02727B4A66137C2C074C9858FCB9B06A9EE669FD1178067FA9D85C9CB04 +14FAFBA40AB77645D00ADCEE277F011A5E886E7C7CF2E2432A651867549E25B6 +E0DA6FFE0F5EACC8BCD48526BA17221EAEFF14E706659482333C68E66FCEFC2D +945BE2F64734419B4B5B233184DC3D3DB275D097D34A58DAEE5F3D174B36B094 +85A0437DA0D00DC95090CE531DB1344024273F9A2435F36FD0326B554B3FB1AD +A38E82E43D3D6B1540E67EB20A97E7409AB7CA2FACF9877F22AEA53B4D2C3CB2 +69933A6BF33E7A2C84745FCACE2017C95204C9230B383D6B24707FA0CC2DDD86 +B8DB5218F20EBF95FA203E3C1E084F9FAB2ED40D31E3B26D7437365ACF4739DC +5F85781CFC2FEB6A67C0B2DAA2C780921D5ED3F2E706E1DAB2AB5958D1A3190F +9C60BE732222CE992A89184231D0D86CDDE024CD77B71A8971D439EA47A344A8 +85AB2BE014A66F045D9B46D72880716E925D1EADA7D107CCC0DC489D1799B6EC +F88F5BA0087D32BAF62299803498F475356474A21FABD36D0D0E40868C49E638 +A35E375E28D44E06D90162FAFC98DE2EA17166ADC7571C7B2B66251A6294EAE9 +1B8B3028103718BB60A09CF6B5B60956A3CABDEFD78069489FA1F43C51EE0447 +A6A0569DF666889D9C69E8B5E9F35D81498ABEADFC0F01E0C745720A473131B2 +7C55EBB2A773823AF7127AA81C0F7A776884BA075A2460D0767789F5E4A4714E +39D5A1955DAA03CEDBC5AF8A1AF8CC99C0511040CC0D0D571E30B461C313DE40 +ACC7C6536D5D32E7A0002DF52F555F8257E0CF00AF2F97B285CBFF920DE6E737 +051C55625AD12D06651D0682D5DBF2F4B96EA0999D027D19D9E8C29C2BD222AC +3F7419450287D7B5C97A66143F6AC6542252F2B9E896549C80ACA384169F0F72 +FEA5F35E03CD2475E31C4067DF5CDB18158C7915CC321E58BEC4AD86154558D8 +E4DC400252B20E3F3E62D0E9C4D50503D2C58D661B0F0CB9B06B02FC0FE4EC0B +42E9A539A05A2D7031E404AAFA86D9A7AAEE57A2A359D5A431139FC7912B89AC +FEA1B03E56B0669F8F3786E0D05A732085FFE8E74B631F40083B8B89D3A7D835 +6A5AF9A4B801F953F7208787C42C82C16861918E0B3506CAD6E675EF2899769B +0927CB347A56D26488CF2354A70466FB24A516A3CF7B367F83223D84D7F01933 +993EBF0E8F6D3B3D166C20D702C5FBBEB68CD71F1ADB13503F0A034F222D3C44 +CBE4414509E6DBDCB7E9B31101E00667D88C9CB76B4DDCE39F3E5908BFB39AA4 +9CD99C766B6AE6203F9996BBC7E9207F44C420A6F155CD66211D93886CA31648 +F3E80D344B5FA96B74048C3467988F5D6CA1373960359425968AE53D96D504BF +BB0FA3D22DB7BB7E47EA7CF33DB1E9FD0F8660466F72793270A5CD65F4FCBA35 +B386E88B724C9A926D823D7F98A0BC36D7475E8334C7D75B57F082EF2D1E747F +29E256F974A3DC142CD32194D03E6D76E82A6E7C2151F8F637952C034E7C7FF6 +9DAB764D52A24A1A405E816B53975DE902383E1184966CC56D94E9322085C8DF +BF4DE55A0B6328A458580980EC2C74F5678C5C652F531B7273B8706DB863C057 +91D66907DD4F2DA8055208046BADE0A44E7D26F36BB89091A95EE18BE89BEAB3 +FFA1CEA79C59CA85C113BBBFE3F1092BA3F5B94FC6D14AB51F7B70F09F1693D4 +F7CD40281BE53E7ED5B36C3AD33E1B31E92C89A8D90BECB5CF73F4372867A63C +38D5B24C7AC47C45837634C0EDE9C4575693F826F53AF8531E533B1A4E494A63 +D6DCAF1446F54C82961CFB98AB72117E9D0B57CBC254FB02D65C43927199287A +4FECCBB1989158A0BAFA1F6738750F255E158711DB24978A4C8BA835512AA0C6 +108A4C47433A70F0823D4DD165CE4103019F381DDEE8127D1AC75368D118ACB6 +CF340F59F9D31A2D8FF25955C9CC48F763359CA264FC96B075B33FF002FD11B1 +BCB3CC7B0827B387623B54B21F508D59F581EEB3DAED3110CA3271A30ED5BC95 +2B75169E35B7EDC21772506294F6C4B81B54E5910942FF36D92655DF27159B90 +81FC64854BFBE265A9D5D4DB8B5714A12E297CBB42A1EE12032E12EA7831B44E +A689536D51AE0E1ED55B70BC00797D5394372B5B6C342A30F4B9A88EEACBE203 +B6AA13E118454D3596BCBD4538E59105189BBB63345CDAEADD61F10707492EA3 +BFD28C0F0689EB4C4075FD018FE99AB4E5B8053204EAF7B52B59713BBC64FAC3 +D02536D3E35B88C0150189992FAA4A22954C90F0476314308994E7EB7130D84E +4110E6317A93D862F2CA67A8DFFF49F9C0ABB8C33D3A49D6D436D9D853EEF72C +9C25DF16BA4EB748DDEABF04C6DBFC384ABED4453E7F3E886537FDBBFD359098 +68A652C28E336A248A36422238D350F86FA328369CB9E3FDB79469F70901FDC3 +2C7E605A81197EFB62AB21CFF008E1BD3221FF7868248044A39EB5809DE0C59B +99B9F2BBE46440866C5047557F3248EF0E045FACDBFC4040A3686EED2824C998 +1B8471A58FE24FC37A8ABDE457922CB775F348AB4A5A797E87B93D5E8F86C12A +54EFA4A7E3410E1DBB3189B16E5AA18733C32ADC61EF6AA4528D02CF8F933ED9 +58D3C0E6C6C3C349A1EA0C2CF8B969F6A5578D4E15B53F419AE0398810CC4C54 +FBEF3D6AD0AB24B6286B3763E9F27797F32C1C7F201D28778B4D79E33E4F0D15 +CEDD01628C100D2BE27834C1AC19BE9AAF9292CF9246E13128FB2085AA3906B7 +AA716D606D811EFC061643BA71993D110DFBE5A472B1BEDC9D70F9E2E67B9AB8 +F7993578454C5FCB3269E065AD66167E95E9DC8F503BE6FF3FF70D9FEDF0E4A1 +A01F2AA0F25E684510704E73333E8D59E5D869CD5DB9865B25AE17554CDA8062 +562A47057925DEE742311FE4BE2626D1A7C597910AF3B70AE2756DCBEF452FD8 +C4A4108223A6FD9A222909AAD466981E839223FBCBCA5495CBBD5A9235FC4A4F +C061E6CBBE25321F3D02358B39AFDD92651373EECD368335A1F37653A138FC84 +162669220700D8B560CBA3B9F89C95BF06B842E9F6B753F61486875EBCF7BF2C +7388FD0AD9DD182C293A00CAB24E72FA5EF90F0272C951DAE63E70BA09537AE7 +FE68C6B98BEB1830624440DA215786B56F61FD92F5323C48054E47E3340527D1 +DBB83DE31CB28BD997D0E63749146B1C2412CDAAF4C4CB3B8B9D663838CF112B +1468671A0B11615CEC1E0DCD65751E41B4231DE7A612F442734CCA51017ABB77 +AE2E38A88D50818AF69716569FBC0138449B3D6F4DA80D6A4857FE84968A3841 +CB35F49FFBDBF88F41990C98FFEAF4261EAEC23551CC754C85225A1CF8584AFB +3B6765E9959656F1A784A3120556A56563B4E5CC0FC6C00EA2C46E661FDA6FCC +56FEFC379B4B36C42EDD8F0D25B5D8CCB0E3FB5C99C8689CB2802036294C55F9 +AEF9796BBF9F925939C1CF46C86C41EDA1D8C36F65D75C8D00719A783B5954FC +36AE64F531C9BF1C472836D51387F5687EA431869433842ADA68D0DC2FA24A77 +59C0C49574EDC6B53DB6E12B7D7D9D1CC471D0B9853AECB584E75C40E99DADAB +ABE058EAB8100F629AF59281F5D884990D2371EB1CDCDC00B46AB32EB5BBB301 +E5BF28539D7474DD1D37E1547AC6DBE0928CB2F8345E659754BD51C3AF5FEE15 +7C3E963D634BC7FC21BF7B5CB5F0CB273FE82F5681E81A1687F28D1403EC85D4 +349250F4D69C9FC376875DD2FD4CE1D5F275002B97C55151F20BA162FF007223 +A3DE99A5B51060ED8172A49B2CF548E1918C7D0191C001141FEE64D3BAF67A2A +1B5476B6BDB121EE863A655072248E99459975768D146F2D8D7321F9A64131A6 +CA8473712F70ACF347522E8D21AD027C11AA42CE9CDAA2BCFA9ED5CADF9A1648 +7327DC3C1566EB2F25F0C21F1B6D63919DB6A80211C559EE723B8B8CDCC905AB +FD7F3E83BB83D2CBEEDEB02C81C5A04DC66B00FF724CFFE941077945A9E1C536 +0E96FE72862D6495BF27CA0415EEFB677959F00C256EA5863E83B2A5FB18183C +B498CDE6A3BA4BB60A727BEBD800E2A40078291DDA7B3B637ECD67AF123E188B +2BA400F311F7BD2E857FF045BE283478BD103041561B4D3A610462CF3449E13C +E84CF455D370575572678B29F41752AE89831F9385B2BAC74A2E58E921A53EF8 +3B9235D6EE560D3C7D771529EA818E40527C36448C09073A73F51FC784F88177 +C6D5B5AFB0FF137F1D5BE1F8E81F82A520639E9712B73EAC440938FDC16D0988 +D7FB1695B5840F6F35135A81932AEB27C4F4E571A61D597F8CA417226F2E9FC7 +A640639109AB9F8A0388ED9D2B2C80A33EC32B59D9BDA484D201388D9EA03A62 +04B1298BAF98B37666E1FEA3C4EB185EAB68D5B2DF6B6300338AC419A70C352D +CBD07B10B1DECD2A79F061C19444C3B828C1366D1E29A726D05797EC265F7CC3 +26BF389AB365E2643B2D3359514B48EB259C4A6D0CFAA8BDA8A24A0BF6F1B81E +2E2EB787845526CF835F99087A6B579A562498127C1E49D036887385D4024F18 +03C769B00C5DC1099A33446FC9D29B92002977D23C7BA31C2A7270BDDE64F690 +4DBFC721E3FDD4354BEE8A0FBB6E2BF11AD20474E6CD62B8F780B4C1C2EB9CDC +6571E3C1D4269EF71AEDE942F7F543F69B881D92FE99CC40037D8A445193490C +82B5012ABFF56ABA917802DADF0291150EBFB1617446A540941D7F7C225827FE +9140DDCCC943FD94CA72A3DA706047B9404292FA5AA7C6EC76FC93A082BC5DE6 +06EC9D22524256B6A1D5384ADC5C517F0E539B95D98C596FC8F4FEB2C582B87A +593823D9DC872037EC919FBCD1AC6CF1B975B20D6E911A2E54B7E1D0111CFFF0 +508CF98E31F38FF180298C6165C774AA8B790711A4F1D89AE5EDDA73F9F5331E +4A84B25452DBBD16E80237ECB49E7EC5D7E373B211E9E6480733EFB093995856 +E9660A8B28CFC5650C075A1FE0C3B50B8E7212C7BDF4AC84CC38B73959CD6365 +518548929AD9590CC9C45852417BF8AF2598DA89B3946AC44216A9FF41C8667A +E7203D5C4A6BC2527C223BFAC13278D013A364B17B4C8EF8088B96FE8AA07C0D +1F11372130109B521BE08A44B91CF77CC75A318BBDA5812A2EE35A06A3FDEEFF +AAB52D112BF1D26F128626FB6E6618473689584871CD7B22707E9884A1D5B48D +213C5086B9261F589E9659EEBD74CCA2B9BFB1232DEF37336AFA5AC56978AD10 +A8DA769D4A0C6E0D261AB9F326CBC50B5E828AB8A17DB154E874723FFE2F51C5 +373E76253BA4F45DF19AF54BE2AA35539159FD5B79EEEEEA1FD8DE3A9022C068 +D4FD720775A2C5AF8C853FB08F688B57B1460927CA7D3B763851F6B6A007DAA5 +9DC0D0A25218A0F2C2A2602595C009D8949985AF80C083F5DFEBA569DA23A7F7 +06A9D207CB920F57CCE183BFE6144C367D545BC984701A866960F4A5690F5A4F +DBE4B4EBA241AF941EBC9E41BCAC4AB5659FDDE4A3BB131312E6D3484A4FF8B8 +B5E3B0189FFC37FE4A0723020180F2197A5002738F234E383F2B20B66910BB02 +03E8975DA320BDC4A7DEAB908B294B466FF2923C7115B8D2EDB318B40E896044 +95ABE4813FB12C9418D5014EB4569287B8CD08F06637882EE3CF2E5FAEE0E709 +62C81C1FBBBDD615E44CCEC58A810703AE8DB9BC0B0FCBEE64907DE1EF9EABF1 +1CE334E64A048D92576382E3C229B980D3A8F031719BA4ADAC09C21829CF93A8 +515203A07C2AC85EFC67E0F1938F7B83FE35F8450F276680D631E025B91B45E6 +CDFE5EB3109915C4D3E52088C3DC8030AD2427CDEBAAAC19E821856C995B9285 +C287B1F8E07B3A2C95737E28F433B3EB16B85DE26C2658C821479E1ECC298015 +FAA546328937239A2191405579CE080B22CA96E5599FC0DA8EC0F3B37ABF0EE1 +DD1915BAF9D53A2FD969B0353ACDECB5232A9E31AA24E9CCD3C543BD2DEBC642 +C8973EC0C50BF6E1184AF1B056BBEB6B2A57C31CFE46CFCA2D91BE7DA76E01AC +B8D6D5B8D19754C451611C9A80D5BB3D23A6D6F04D113D005D9292B21E764EBF +83D739141DF5256459289B99AB01DE0BFFC79630B044D664D123FA1599C43A32 +7E9E396B46D667F554A4F89C44883B61BF3D8D1993C45D79780EC2EA47539EC4 +CCE9690F901A50B844417ED6581CDD8EC4A20FF50F6DD3EAB642DF7746E791BC +7B73A20892CCB998CD6CC090BDE0F63D1B046CF2EEAC42DAF62B050C0A2C58FC +3B24960AD4226A4B5067934219BE58005C628F18390FC12550993750A5915F6E +9FCD54A8B130AA13A5FDBFE775F6B48D1FE672B4CB5C3A88B2D9913DDC083ECF +6BABCAED2AE09E4EBB0C127C099F915494213CAFE7FB86EB63B0078175B0DEBB +BED4B09B739780E9C9F8EAE3FDA3828ADCDACCFCBDB18524CC3D10E7008FF502 +ACA74DD1DE021E67D65110E20DEE68F89752C91A497D061384AAD49CAAEC816C +B1A4B9DA93A0EB57B062E8DD9DBD7F2F6E16DEC412F38AA4B19DF06F4B2927DC +82FCEE882F0D603279EACC9F56B96E8189F06D5CB85DF66DF9164D8F4D321F2F +83ED0CAA62E069A43519C7A9A09F37AA76794140CE04960E6059F6BE2651F706 +D56BB531BD642C43FB5AF96858CC7A67B687C649B74D5980697649585A288237 +FC97AABCC5302C0D977465F61DDD4FD826B10CC459BED21C3D915DFEB552712A +A979AE8A6642476E7A0F88413453FB921EC002C86720FD62D4207953577C882D +5D1428BBE9B513D171E50DA2646B40C512BF9AFB028A68EE4F9C9D1C06428F9A +11858B7BB4CF9D181B1FC0ACF5E5B9646CCF5904C4B86EBFD1FC5F9E12CA5C26 +585CA657D34E93D64B5A53DD846D458D26DD1FAB7B23B3DFDED56C921D1E906E +1021C93979D42336C3900672C2B04B8A2624F15B93CA7CBA94CE306D6EF45FCB +0E8ADAA16E22D8C50A6FBDCE1036C4BDA0ACD256DCA1011BC20B0D3E240EB4FA +F216166BE301CEF730706E45E8E6A3EC346131DFA897FB55B8898D6C48BC49E8 +F0B3ED1F5E7831A2DD2A3CB9171A58BA5F88384D27456AFC8E79B3B0172793A3 +5A3CF51B5CA21252C5C5DB2CFF832FC9CE4BBF22641B59D6D3F3FD9A6E64DF86 +75F8F28C17744945EABB7A1644586449F14C0B09D036CE60E0F2EC8AC51617B0 +95EF1BDA930F2D179F8CD34D8FD61B33D90A9769779067B38510F45873E2C874 +A387E97971845E2F442C3D9BA206595009C6881053D303F3A00FBEE07D9A23B8 +556586598F509A3DF054FE77C25FCA9C6454E5DD0B0D796873B148D5F581A176 +0B8487951F49013BEA9FFA16A072946F13CBC4430967741F4ECD06CAEDDA8889 +AFD705BC587826D7F1CC662904CEA2D724322D81B8A8BF88791206BF4BA89441 +6FF682C3EEEB22853587D6558C9CCD568B552A10B512D5EF118DD5FBE94E4463 +EE476534600A8799DE90F3DD1689B2A601F5E88A4B77FF83BA8DAE8709BD4218 +1568A10B536F6875837B2BB4511DCA237FC8EC74403D883326C8F1A8786E8F16 +64D742FEA43F36242DA81CB494369CF7D8F69723CBC7BDFF287741596DD26D56 +58A7FCCA56F4E84FC0AAB8147BA66F9C98B2734B791E0BBA5FFF10CBF56609A6 +8F4275FE8C0961232FB6C51C0D1F8A6206CDA3FE159E501574132789E04B9DAA +9A84D052015C8D77B50CC3F9071E408AD290A34B2C9C7A3854210DA6C34F254C +D48AE4A44C5D5C9B20E73ABE13D03320EBDCA2AD9C5054FED8A4C7A122C02044 +E7919853A4FB21A6527231436BE769CB695EBF2BC0327B23A01CF039DFF41F18 +BA5D458D000894CE80890815D8F8CD841A024756266D700DBD7DB71D59A65B09 +6A027263819E80AE155B2A792361B6E398A6DABAA53469AC988FF0B0214BCE0E +6A5FEB06660A119E286225A20062EE28AB515135A84526A896DC125456294C11 +4C3BC08FA1E563B9358E3145B3CB41885F7B9A48C871A9205A41EF8153D9BE77 +5D7A8C4EDB996E3A15CBBF5B9B8C50FB3C2A23E06C16C2E98B8CD5D34D59C088 +7F14616BF270985463FBF59775E327A3E8C04D410B8C2411D2B24B4B76C98C59 +58730D6106E02AA0ED44E1010AA5283AA54FFEF9A1BB68AA5C805A1C78CBC31D +2D34D695B9D8F6DE93EB6E0F10158E735CD0E6DC2E89A295A166ADE734A04D88 +B3B87C8120B0371B41D89226D1AF2F04C4AA12673789EBA451B36F754534463F +25D7CB282365ED5F3AF9792C4E65900C23A6B31DCB3322DF2CB3C4CECEBD0A35 +05C414DD4E19C454F4B37F261F130290607F292FFFF4B7CEC75616450D4EA534 +D9707676F910AA9AF13D99F061D843F93BDA4B9AE03A4B8BBA9B414A251DD6D7 +A852A7E27B02A7419703CD2E6F1E3874B88987708CE7F390B2FEBBF999D26539 +809768C989C198FD5E166327861B13AAAFD4C5F113C5EEFE2F2EDECBC5E53101 +0B935DA530F570DD3FA78CF3BF7AFA77968C4B1D0991B46AF2F6ABDC2CA6B9D0 +8DE830B6273A185BDC197EA627089D71EA1BA1323550254ECE807F8CF2E1329D +FC155B45B59AA3F2BBDFABE575217F423494A676CEF94EA11BFDCE72F74FBA29 +F478C8D02FD4BC5FBA21C7D3A007648467389FEA7D020BA8D6ED4AF570360ED2 +82FBE4B0D53FDD06DCAB5D5F01BD0B608362E30F2B9C150345857C06246150CB +18A538ABBFD6E42362F9B45DF5B3EB8BEBEFA61BA82047BD968088D95A86CE60 +60519B5FDC433BC8B9D4A6A197AF4911FE35E5CB2709D534CF9D338BC64E56C0 +177F1B609002AA8B4DB1776AE0A8A62572DF1B98EC8114AC2260036A41AF02CE +CC121A1FCFF525D1555EB4AB02573700EE03EAE32FF7152363682C26B2D94155 +A2E471DCA8857A1A630065F8F4BB75DCDE79F3C3FD56929549ADE0012CB9596A +29039ACE95C1D431CB981536BDD77ED295EAD4A486386243CF5D6BDDBE62ED88 +A912BED3BBBA140880B19D99FA350CE01E6EE53BD1AA263098B76DFF94F4F7B4 +5C00A80839805180444A1CDCF5A561849F58C9BE1003A3B51F602C9BCAF633E3 +B28416242B1E7D4965D11B99A8D0E370C5651675F8CF6F36F254F8BB27703842 +5BAD6E9AFFD59451AA18E834FE353FB581BBD1EC3DB769AC7C1EAF4730C6A5CA +5BA380E7BB6F1AE51736E16213A7365DB4BC88608B845805C397B926D8CE41F4 +55CE512214891704B953D0C4FE55410F951FA599E7A07D68042592DB3571760B +9934FE4FC64680A33D40340DD11FDB7683D22180A7E564A2430D8B218FF77AF3 +50A58FCBE0D0E6218801EA517FD1020207318A51E85B0D78BB0ACFD15BEE2851 +40160E05D0FDA677BB43D662DCE9410FCFC0F510144D87E12ECA850D396AB703 +B3FA7BF6ECABDA802A18B23DCE287CD844C308A2C88AD5F39EF9CF47E78AAD5C +EBE220C64405C2D8F6FEE3196D67A920FF3511380ED2830EB4C5D094FCEB4EA2 +9945C29F6B9189E3CB3BE64555B36CDA01005435EC1A9C512F18FFF4057E5C52 +45C906A3037B8A983233C3D3E7D18BD7CD2AD2FED9BDA402D7597C697DFD1146 +ED8CFB9C05E077D01D4EFE26A1601880BB0DC889E820321A313EAEE4171693EF +2A317C6D51539F097376A8A6DF0A960658E525BAE9BED1137CFD0D984C15C2D4 +59002A142641ACF554D1A58B2DDDD885F1E8FECD5E34FA2B8FB1B86E9D154648 +8B7E05AB0C3CD6B5BC0A7DFC21CC07E0C32FB85D84889E5D20CBE36EAA91A458 +F539B7A2C4BA66790300F7C9A54C7CCB0C5B3B8103D7569B7A97682F88A4D249 +7AD44F1AF19CA9E535D63E0FDDE3567D4190225826879150A78EAE095D9DA739 +83A3750AD778618242A9E025AB29CF4030A7C4D5947F3747A8A3FBF3C2B2752C +D78AB22255FAFC66EACC985BE2AA8AFF53E537515580E55B9070AEA104F1DFCC +0578C3210743B6027E1C11655F31052D3860817B8898CF81EA1D36D2023B58F5 +237BB7C7B7C58C87698CEFD85CA1D5F93C7C802CC3988158B3B6BE5D9D5C87DE +3E451BB6B6BD57A0E0A92AAC57C307953F28ABF4C28D58F8ED6EC3D1D092BB27 +9A44501C27C80BF2FF97B22E9CB0B3C1B5F1A80E78C7D315252DFEABDFDCE703 +A412C8C9C85E346AD0BCB540FF5D87833E68CD941D47B763C624A5221B5327B0 +E897351A5F65D074CC584C1C51794672AB55902314A17FB2556C664E438C19E8 +3B1253399A8F3295DA212864B45996FFEFCA19DF66CB663B354470B5A670345E +FD3F83C11EB83F78A7A28126DC64FE9B6F4BF31F625AA79669B0A9D365F2F837 +D9C6A3B474210A0C82F54F627AACB989416E6AA9FABD193A8B929FF571AA603E +48273E8AC43C1D3D5D120552DB49DD5235875656EBA4FD4EED8B003CB0977418 +30A3EFB2A357ED091EB552433721BF97D46293861670A577F59E8877E434AAFE +3F97200AE924775E3EC9CA761EE33BE85179C93D1ABD400B985ED4E6213A0448 +B109C167157605548C14F906F98BC7B927B04E127D8B0ADCE344874CD6A24C78 +2DDC0930594092197D5A4DAB064FBB08C68C542B790CFEFF9F4D79EE607F4207 +FA53868F302DD609331F4CE448CEDE1C98C20D920CBF73F9941F52BF911FC935 +BD7D773F4D177047068B69BE03F1F0BEB3AE8EB8650E657D9EF19AC35D6C815E +870E73DD910BE853BD6A992F138F492950BA040E1A6018BD1A2CB7AA08CAAAF9 +F0DD3E07E4B79792A04A4332AE7D03BC19708863892E08C0E1C63F07B9BAD1BA +9A50582E200FDB0C6E93E65F2ABB91DB5B6314932394161816A7DFB8C530619C +13856E232756B8BC7A74581C050AD9E429F995989D84BF01097A189FCE99BE4D +FE68BC922E76D4B2CB5DB693F5128297018FCF735C5F474CAD251B51E9CF4438 +6DFF6311B636022BF8B77971995E3ECC74026C87D58DB9C72D758CCA71661509 +C5870981E6B746850A1CC7E1EB73071EF8F29E953E7CE9FFC00E147BC5327169 +8A2F9E19E120038321271AF0D697BBA78DDC61EC0848F9898E4BC02FDACC4D71 +519E0417C847D01AC930C6B4CE292BE655116BF55271E310757F7FCA1AB209D3 +8DD38B08E987EDA95D847EBE2D32304476EBDA0378C7038B1E9DC7DC5093A966 +A82C89C0D1B460EEB08E3F6D3D95E24B9D043A9914D7D01045A5FD58CE26E4FF +87A84E0F9E8D10517D907648A66493682EFCC62BA6A62433999E987B1F8E7C1D +5CB1187C852402AAEA6ADB3B0AA43F17BC3099B5C764AB2F17D4ECC434F7058C +94E86DDED33EEFB1D1DFE2D3F725F8051F687EE44952D0872A2DB2E08BA576E8 +0D39CCCCD81D28BEDE22CD982FAE7BAAE2A0DFFD5DC93231F7E98AD5CF6ADCB1 +59F657FF4D70D7C7128BB9030292A696467698D0FA1337F496EE5019564A7C7E +C36122245FDCC748D8B45314279A63EBF27F20B6982E85C4E6185AFA995760AF +75C88B0D89A6EC77F1B15EB623A1E1F73F925E5DFD91343938AB2DE907DF4CB2 +B063B72A235D24D985497342656E48CDFB0CD254ADFA05503E20E550B2318251 +2D0BCDD68C7EA4E129907B0D7353692E8FCE296CCCFA2EE7A699F0373AB9BD7C +A95DCA5516FAD517F19A518CEBF98E8EF876D73AB1650FE77D03691D05183229 +87A88585DFBD317CD65B2686683DBF4A1961F2A31819B243BED008541A6D7F7A +0027FC303202A3EE7F7D0E45BFB48364FE411BCA5B5999DD3A19EBFAD94B00FC +1779555E182D34011D02314ADEF66DCFCFFDD84F53C7151DF8458F9A3B619E8A +9737FDE81E2389314828BA0C78793A67B242CB084D63BF187D8A93FE3A0DCF4F +C27111BBDA4D80A8A9F5240391E6E5C67E120FF879A9BB5842FCD41DA2F2599A +8E9E9CA33A437D16E7B49F024035B12B78C5A4B4CC9DAFB17A5C84C1F67B5E18 +F873B96FB8D18C3E5D30B1260E277F0EB9EA42814894F98B64D8C5E564E8D3C4 +D8377BDC9EA5AEC87846D550021DE093EB32F7F9A4DC24F6FD8386F6BA883630 +7B73142D3A6860CB6B78031CBE266E65AD3811EFDBD1FEE23DFA0F6E25C64BA5 +63E2435D29EE1169910751A0FBDD7626BFE1B0A076B47FBC89963AB9729708C3 +A9B36D7D69CDF0F8C0C8668B19AADBF3FF316B1FFC44BEF969657F79E5E263B5 +144A61FF11B69B0670E0024AD99DBD73C86F324267F2D6742CC38AE0D83A0E6C +57C82A49EB81BD2386B324FADE61413713ECD0A4A360791B3E6B81E191B89298 +A7CEE8B8B492F29127A4F98C5569AAAC7F25FABE8469EF90129C016933A6B73C +157F2F15CE47B00CE92CBBB393E46752532D44A77747F53C428A6B632236277C +D7B9A4F19F15830DF7B27F32F6D0E312C6DEFCBB8937EE5BED27FE67BEF27282 +8BF36B199F2BBC1671551C9E40717351FD606B742DE039E29108E251BEDF969C +E45B281363D657E4A11F3CE54FC663F9AA6FE5EF0E00F8DE402ECD4FBA57D6A0 +B87E9D34D0AAA2D993B8E5EEB652AC345DE657BD258EE9E41DE71B4D6CD1EB47 +8C6FB859B8501931E1CEE0BB36CC117F68FF309CF1BF17DAC80A8CAEC96C13C1 +6051C6388A586ABC104FE83C388E0852A499893BDB0F8FBFF9F6EA2E292D2A6A +463BFD7512D515030F620F2933A369A70FE7C92F62DE254576D87DF67AA7B46A +B9EB64253262F4F630AF2D06DC7A911815F31D34F13E166F8E64D562A0FE74D0 +6A8BE94FA27CB5E9A8B4E3DC779E1F18CC690845D82B0B32DD4CC4797548741C +3B85355C90E01187EFC798078B4470CF6C8FDB960B9C78C255AA3EFA6C8A753E +002A89BA14637EA765BAC054AA33CBB54A19B36F195C15792821A7AB212DDD6E +4CC7D8897EC3A6047E835D7F07DD3AC215B30A0781E2A1770D7F474C275F9448 +37C3B206EC15BA70468ED8F1191E0465B8CD3BA55CD3724F5F80D6DEB419F33F +67364769C514493F0B101C438FE442FAB3F3D45DCDC6A5AC10EB9CFCA26CD37B +1CEB9A95B8DADE0855F62C5E5601AFC030F78415E3A5A74C7EB82B3C48E779AA +EBD8C5622A9B5BB1710631AB796062007CE0B8AA31F8D98B9A1E9FE07613E420 +A488E8B5683F6670C85A1DFDDD8D7729ADB53DFC0BE477EE79A7DB93AAF51A15 +0D231B80D5D4B218A53C180D18117145D367B40CB779689405BF249B7B1E2B1E +A041F6BEEDD77650B9107094A13066492293568F83451532D851AC79A56EA450 +5F331578BEA76C2B31B484E02D131CCFA722266A13D85EF3E077E2D7E1A25920 +93E555168EA668FAE1AD5B562F102A5E6B0539AF2AF2DAF88FCCB30E8B3B76D1 +FF22ACB2E0161F364E488948A72E3C383B6498FAFB544D82AAEE41588800C21B +2415EBEACD6E0D598C74BC860BEF8977D690B54670984114440E279B5B45B58C +2E334C8CA160DEE724D6831D068FC83F1B421B71A584B30890C2C650C4FD6740 +1DDA3E022D4C6E274EB881EC464EDE590EA5223B8C88DC69BF64F86A80317F12 +16539DCB188A53E13B0C78F76671363A7C3E7461E0FC1F2C0B2C1344078ACFA3 +5B487F86015CE9B6593019186C50AEE0E4A5E0B0E23951A681EDE8E480FEF19A +95B579C4F4442406AA4B33AE60548B50081801DE995FD426C0F8C437DA355595 +09C9C098CAE938AD0BA2A25E13C12DDF84B3346A93D8EB7C9F401D8314055482 +3D572700DFF0F430091EB2ED92A726B5C74C99B2D7E58A7D3D06321D6DB8B657 +D8EACEBE9DCC92A8247A792B65A83F0B447847C5F52C31B00E09352A13B9A616 +12A26C0BDAB90C97CC0A10ED8A93C384D9E045B45A5B0FCF938C23C94442457E +7D410D9DBA50728D08331BE676369DEEF3ABF182C67D2200AE4ABAFA620D8A58 +E89FE34AB03570AF159A0B5B5D17A6D41C0760656164C93574EDC5A4FF59166D +CCEA3F6043FD28134961CEEE56E25A6FF6EFBF13697656046CE73C2FEE3BDFDB +C754D272EF6ED4AC91A2822E1D2EABC411AC00D81E2F3D3C9A049399776ACB34 +4238EDD9856FF01F5CBF9D858C73A13ED3DD6EE4BB5882D611E02D50A1CC5041 +B0F9D82524BC5E437C0518B6A7CC9B24ECCBB081643D5D40BF1BF4E3779417BD +4858D8C79AFE226F180A16EBB922B60D87FDE2A2610DECA951255259FE2C1B0B +7A3FF3E432D45103C7E477450BCE74FDDBC4A089283BF6052DE66388BC195EFF +BE92AEC207E080EF7640A3D86FF0F5339FD097D46325DED93B3EB44C41F55376 +ED3ADE9CDF48D66B76519EBA58BB96EC20A72A5DDB370031F990B6283ADABD0D +78DFADC9ED71506F7959584BEFEB34D8F787632F9A1000E25EDE7CDCC515E604 +D6B69FF0AC35B47B0DB3865F3B876028B1F46FD03D5EC063D73CE5FA8739CFF3 +B1B9848AF6D9AE337052181E33B1A412B0E6E053BA70595C91709384C3970D40 +FCBA42BBB2770D81DA410ACF15CCED52DDF4A25BDFD675EB2B3A24DCF00B0AB2 +173911CACAB635F751C950A1EAED8BB5B10F49E9536EFADC117074A92745F15D +E324C0342D15AEC4B9135FA441BCAD8F5BEA5ACF9B788034AF2DED00DB1D8A56 +1BD52289D4300F64210D0CF4B7C375321CF2EEB31BCDAEA5BA2EB94FEF21F61B +8C474E12F5BD58A6EC330ED4505A738B470F6DEAEE44FFF3CF4E5A12EDB76236 +D0768EF832794754E309F70E14F698045EB67BE2B179080D529859EFB4BC4CA4 +F3C449214A781C6F1A5F3F48ADB5C7147C1C4D6DB3CF58B4668FC211E38F3512 +A271FD6A4221F80670BEB6502465633C1D8419DDDD6FC8FCF176A6FA1FF08AA5 +133D6D20C7244E4271E51C5CFEC3878622B2C1A6A6E205CE490CE18E53E706C9 +B01F6928B70BD78C67CDE665F5DD0CE0C1D6944B64E70AD71FD208B7F2C3B18F +DF15C9700EBD43633921D75DF06087829FC0DFAE046CE3D33368031C9CE323F8 +928BD6F765C26B492CDB926EADA4832EF2D403ED9696CEB09F7EEA632C3E069B +52733D4A6A0FD66D1F16AA5661B56674CB044BB0377D1ECDF25D3129A1DAA4C1 +11240C4908A7EC799EE8E1EB174B7145F2FD1FCB9C7ACD2EEEE13A76A50F61CB +C4DCE2A163F2E3F969DDA510A235668825248EF47921BA2351E611D3968613FD +2BDB84EF2E67364D75A07383C1A3E7BFC4F401D169AC92C99AB2658509B3B307 +5284D80A26F0EFC109C321387A3A59DD15A374DB14E1C84050E54361ADD4001D +DB6EA0D44B2135BFD71794256D99E4BB3D918AFEEAD0C034029F35F2B0F370A8 +F7C3FE3E90B5CA1CFA6C00B80F7803D50D1AA963B2B41A0370F41A4E884E5F94 +219C47A5D29BC2F321DA2F7EFFC80DC81B571E6E07869C36A99C44BB1D288D01 +C4974340F648B500FEB8255354DB31323F29D0F2D8E82A58402BFAE96C4FB4C1 +5089E9086BB963E73B84FC370F22FA3EC845B323EE80F1B7E60A1DBEF5C74BB5 +154CA647377A390367590029DDC23BF2C8EB093AD5121541A3D65DFC96D915CD +0328D91CC80D7F85267A3E80F352EDCB48BEA545F15C58B1746D9295E83CA809 +232EE639EF34D62EAC12242495A4C700123C063C0B79D5CEFCB6E8399110D21E +E9EDCA21C8014370EE3029AEEE45D534B806CBCBE92A69EC4A4DD824EBEB81A1 +56F4E76B8E84AEFA71B2EDEC781D7EEE9B630EFDCA19B266C9478DAF39335175 +0F3D6ADEC2D006A6041DFBBE81A4342943FA431CF480D72847A4E352F2172024 +5170B296B8F9DD81FAF24778649039799AD577C28D42A9C862E6957AEEF5C17D +83825165B14A55A087284A82788AA3D785CE9F2A0B5098BF7FCEEE02BB05060C +BFBBCCC4297204D8120DDC74F113B1F943D571A173D013B2AB12CD4BC9905ED3 +38B61979C7ACD74D21CCED0F20CECA258427E51020F11D659F8127453A29467C +233182A6205DD213BC6A4934ADD6CC1EBAD7D466D7D9B3233B9398E107D07B3F +34670026B3984F8DC5099D18CD79620EBD8FDD80071734C1FB5B5682BA00B358 +5B58625AD6B743096EBA6A1064050AB9E2ACC5C526F4C2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -568,25 +1383,40 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSY10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def -/ItalicAngle -14.035 def +/ItalicAngle -14.04 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 15 /bullet put @@ -594,42 +1424,212 @@ dup 103 /braceright put dup 106 /bar put readonly def -/FontBBox{-29 -960 1116 775}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78 -253AB321023D15FF7F55A3CE81514C1E7E76240C1FB36CD4874DDB761CC325F5 -D588700B294849D690F93526EF438A42B9B5B0508584EA3766D35F5B8D51C458 -ECB9FBD23A49576EAB06BACB7EA6D300985500835F4FE597D4A1110C8EABE6FC -CE3E1F95CFD3A42446F25355381D476B2FFB6EF247BF58A6FFC5EC0E4CC207BE -46485F8E07350B37DCA8C1864E62614332A1D3C9DEDDD6492181949A2C3498C9 -EC2A81C1F4FF989A4654E375F509D24D969B97D2A9940FAF43BBB286E08559C0 -F8D9674B0A294B36D3A050F7DED8C80E1D230812F6B8387B17948FD29FF050E2 -AAC5EBE5D96AFD0879534E2F4BB81613A1571750F9CF4215199F93813D815B5D -1C79E11A0FCBB627CDE569F88C741CD502627777BB058ECAC09B6ACCFACA69B9 -8F8168B0B5A1A6EB13E884B348FBB2ACF9EB180F6E27D57F8503710CE037A34A -F8B157201657C825E2A4B4A7696B58B7A988C05E43E66F0FF277A7694C555C54 -AFB1D32F6DE102136FC810E1F3B5CEA42476EAC7AAFB390E3252B2169DCDEE6E -328507BD0E24734A85AAA263E0D2F64BE1607455BC855785BC27F8B30FE917B4 -23AB3C812975355942E955501AF85A3C0CE836911AF679EA44AD6A7D042A6549 -0C471FE294E8490024D93ADCADED460FAB7FBCDC29EFEBD2A9A127E11869E659 -961B29206CE63944B6FA4B9315BCC528EB1E0223CE94C795A5D5231A7FC8545D -6B287B965F8EEDDB67A6774129DD01D5A21694ABE320BB2553043D4C42ACFF91 -1009372CB03381035BEEEEFD05631E026A0980A72A67B3703323A4E7C94FFCEE -8D0B7407F9CCC043D3D184BEA4728385D6AB2FB0641DD8F5BA7E04035D30D628 -7E97D31C1486DFD5B1D076B84B4ABA4829ED4310321F1F24B847C44E00185A69 -37711A +D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 +7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 +DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 +511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 +1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD +028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 +1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 +3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 +91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 +E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A +11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 +C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 +D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 +B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 +93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F +10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D +7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF +B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B +491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB +F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 +019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 +915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 +356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 +5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D +9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 +3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 +FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 +720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 +D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 +BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 +7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 +DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 +AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 +A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E +0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 +AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 +CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 +0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD +5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B +5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F +E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB +54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 +E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F +A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 +4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 +4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 +038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 +B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 +5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC +B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 +A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD +2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D +CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 +455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE +FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 +16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C +16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F +483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 +67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 +3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 +1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 +93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA +051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B +8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 +8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 +6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 +06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 +84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 +D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 +DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB +0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD +8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC +C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 +754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 +1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 +CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 +1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F +153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 +905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 +617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 +8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A +98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 +53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B +888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D +052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A +CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 +A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F +07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 +B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 +10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 +CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D +3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 +D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F +849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 +648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE +84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA +2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD +2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 +9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 +B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B +D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 +135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE +EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 +C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 +7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 +4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 +9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 +050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 +3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 +C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 +843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 +CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B +B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 +3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 +19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 +FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 +17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 +8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B +CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 +F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 +1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E +4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 +2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 +9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 +E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB +8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB +BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 +04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 +C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 +ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C +4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 +84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 +C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 +09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 +D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 +56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF +035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB +FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 +CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 +B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A +F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD +CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B +0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C +B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 +33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 +4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D +F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E +2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A +CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 +88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 +17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 +55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A +A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 +2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 +406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 +AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B +60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 +C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 +5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 +822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E +94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 +D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA +343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE +894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 +DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 +DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F +8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 +A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA +DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 +E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 +DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC +4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 +5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 +02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 +88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 +657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE +D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 +AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 +3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E +7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B +A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 +2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 +CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D +9E592159338E1293F449380E13C21AE42E6E371B75D78AA87381B96012E722B1 +3E1628DC89D9009FB38D9984AECC3367A8436F03DD58F85DD4971868D7949185 +A1073DA64020E32F61C371D29A74A3D9B70EE7F05073531287B2243D355F2FA2 +FCAE099817F63A3235CF8AD47382886B3DCC93B9E205EC405ADD22C031A21714 +FE178378C5E228BAB7950F3FF40CB589F4BB895CB7D6320A1E7D608276EFC3F3 +148DA7EE00DC79E33F1B3D13C0FC26E0424C441C55AE7E3153411881C628B7DB +E25EB59D686887F5F66117D601DD8B5EFED15B387372AD0BDB339C9A3D9DB135 +F53F30B68802D99EA4ED900E6A375018BD9109755FCF8B4D07E1F717FD46AC4C +CE5D401AA5635BA4F8BFBD4488691BAFD8B51A85A2F0180FB9CC06A6C5DAEFFA +CAF15F4D81ED657F9A8D619150A2C87A20879403F7E9469AE85911988ACCD635 +72599A7AA62EBDA42439FEDBC602E0698318FFEEC8EFE7DCA381A7F2E21145FF +A5549BF6B3BBABD08760336875BA183FF4FA92D4569087FDE0AB50E0B2DD97D4 +DCE9D3D6EBF5A1FAF7C0C4CA715A6A6BA67A7A08145F3D9545265B3862776E4D +179F3FA9B1AE033885A84C8F91F20615521D85E69BD951B98580E3873206DF82 +AF43C6F1C8D14BA99D15F71E588FC5439AE3E6B1545591BCCB19B119AF4F4362 +4E93255B5034ED730A5B3E6C42C7862662D49A8A4E41FD9740AE6766863D5CD5 +2D8E54C0CD96F5A70B88B015C76E25FE4017A9F55256D3E7B3F0F4F94C90EBB9 +0D67CAC1F26311AE82B804F8A2426910C18253743ED4FE97B183F3F04471D7AA +8FA7CDFBE63BEFF13C451E52F0137E2D0079D4DD39A80BF5A1E253CD09AD807D +171B398CB6A28E9B6B7953ED5077897E1D740360E8FE61328BF8AF332205ABF8 +C5F7964B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -639,25 +1639,40 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMTT10 003.002 +%%Title: CMTT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup +/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMTT10 def +/FontBBox {-4 -233 537 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put @@ -754,483 +1769,668 @@ dup 125 /braceright put dup 126 /asciitilde put readonly def -/FontBBox{-4 -235 731 800}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA -726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 -CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B -7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 -7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 -EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 -DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437 -ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53 -B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7 -48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081 -B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B -D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943 -A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141 -E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A -814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575 -C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E -EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D -11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF -DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE -087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF -87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C -4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B -C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897 -ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD -33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04 -0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C -E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555 -A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408 -637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC -B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04 -A2D8AC44DDE818C4E3CBD2A5FA0FE49750886CD7CFAAF8B780255F89DF7F4F5C -BB594FE7C1597DA71813C2952AD3E811524459EB71D29696B450C924B6A5C843 -8F36A0F1D7DFE796FB9564333666D74AE614D0D698FAFF20F83C86524C894BB0 -272221C060544F3B653CB0E4E4F82B20D7530B3806E6A5830852C58070177815 -E287C847F19F64E854F1463C23DDD80093D6FEB8BAA22C5F05C21F99FBA7193A -EB7CD49CFDF4308C6C68CC955A45FCFB54FCADA9A3BFBDE086B057DE88BE335D -280F5338D7E66AD39FD08F9B55884F1F377FB6869FBABE3EAA4B7ACCD85BE672 -724B4B8F236B0889B6E7049CBA558A89F17863E82DF145DB8C7ED1F36332DE23 -3C0053B74E850FA14F9EC9EFC23AF18E153CC96FB0FFD910347370E57F0D81E9 -4A83E2D189EE5635E85A2BEAB5B1CB974546BFB2FC2ABA1E15DC0EC1BB3AF1DB -B2F93538B92F504CBD7AAFE36F5F3AD45EB16378F169B17869FE81464CB826CB -400D2F5441A496B6C60A4F15FD20ECCAC1F8F91015E7E1C1A10B7992A1554E52 -9FBEE905A3005336E49CB04BA7223F1674C0BBDFA06ACA34F7BFDA56906E04A7 -4DD79EC7E79B021A5008F3B1E04712D689366F520B0FA66A558F957011992728 -561BF4B75C2BE07C4024C172085E51CCC5CFA439F570297154CDDBB3AA25CD6A -3004B936488851BA1E814260C06CD5479DCAB1A6AE21A5F4563024F973D738B4 -0DDB6C6DD2E3AC21B4F6D95CF9AACA782919F5D3E613D61F3224A982AF485C8D -EA0037410EB70AB7D3EC174C6D5DE5C9C5A1220EF7C2B74499ADCEEFF077D1D3 -50C1124535F88C3C3F66477E42F1932665AD323E06B398D2805B9CEA632F5B1E -50FA587B102A35E2F15EC22DD66E4DF06A3F4BB717A3ED7FBBE2458EB4D896DD -AF00D1BC71FE1CCA27890ECBF9F0AF01D3E65CAA29427FAF06B3BE1E640522E0 -73B213D04491B93DB29113EF72211E31F4C5A7FD58451946CFC15FD805112FE2 -547D1131A46710DFB75659A33695FFAF3CDD40AE5260AD6766DA81DAB0A6E96B -E89D57AAEF32B5EDBBE9F7CC033BB2595CA3FEDA2ABAC8E5395EBC35BC112FE9 -67EAF1F123228538091483050847F8FB5194203609502D3A09CDE811EADC18B9 -F039593782C27EFA7697182D6367E88E326AD5622C5A457FE2644FEADA88615D -9DE3E483BFD9329667953CDB86F9D2F0D4F02DAB8A98FDEB1D17CAAED9B6E2E6 -0C55C1FEE25AB98FF59FC235876029CE03E4A713B75B3163BE3B2DC0D4472DBC -473E10400C0F57E627AE97FD0C1CB0F78FD8E2FA831A3D2B1C2BB3F2D4E812A4 -194C8732B0C525361DC8480CB27C30CD4DCFF01318D2EB4F5234B4A42EA8C23E -7B3EECA41B8E4F54D5458B37EF0FB2F49EB19F4EA8AD2B53820FA36E93DD309E -48847F5C01B1118ECE7D0186E6B8953344EB775D655AAAD7BCDA642EA2E39A15 -855C027CBC0E3FA752900EEB464E2D39404D1B85072B40834748C6F9C74C5B6C -3CEDE988343FD984CFE4B856A481E60E2E65D3BB41BAF2FA80AC0BFE381071C4 -573C6ED65C524FF777F34D82E9661E4A75E3878CC77BC59218244612219C5A92 -E95B90EC2C38614665550026F1730D11162F19D841681C04C401E102C047541B -97B9264D86F47E25A347696AE5EF0FF3ECD9BA32C92901DEDD816F7D73ED1216 -0A98771892472CD625A8F7F19DEFCF5CA2AE57F8AD3898F2C1005B187DEC6F2A -A31C32720EBC934178E0E9979013B3C9AEDA4051DF63D8C903A399DC88F83DCB -A73F1B2083819D1BBEA5235F8FE1D098F32A2BA6274424A99A4975FE4BFD59AD -79B40A8003CC0AA728EA79D6BDCBBD73DF45B7918BC099C5BE4A068BF64A30B1 -C39442CED98AAE1BD495F6CA32D564A72E3BF753B49E4178927E4BBC0F06048F -96DE7C30AF580B0BFFDB330B3B87D7F6532A24F403680BD9F15E758CDF04EB94 -E83C7E644FDE5BEE7CE73EFAC75669E41BDFB20A5B8ADE1137378DD8102A0DBE -19499A623770417CBF5211395A6BA9F4490F4707A46F1F9B3FBE642DEA0CA053 -9ABC307B1E71DC2B069DDDBB4EAE378BCC75AD61DA900AF8BA6DF0E27A8D2258 -DC80205305AB6ABFE3726703E60869BFAFF1874F3C0E05FAD9C05D7D89ECECA9 -DD2AF5F777D7514208697E712B52448B364D3ECEFD8127043DDC9D0757B7CC37 -5CDE8001D007A6E961EA24D7FFC92410F3B13A32946F12A50DFFA256249BC8D7 -C1842FB84AD51B41008EC4604F6B70990510EE13E6DA34F864A572D99A13FFC7 -3609EF2BB1FCDEDF37A6018248C545E086EAD1BA1143E74AC60B684E755E59E7 -36557B915F92EF78FC177621D49F777A2AF39F3C2AA6EC74750AAAE08BCC21CA -A71CCDC91DD45E6050D83ABA49ECE425B55EEE137C55619037F1C30530BD0A6E -CD2004B6A040405064D7E87C55536680364E09248BFAA3FDF95CDA0708E55F4C -F7D0A92A93DEE0C7B69638F171B28B7F854CCC6EBC6AEE14864BF5144EA36D46 -A9C297225AB0325E28EF6BD06D7E40E3A724EA1E50C4C6163B195CFFD5DD291D -D7BBE9AF4324A69394117EFD62F08D6BA6A8F0AC3E2353492999AF28FBA758C3 -A50B6840CC72054355E6CBDBD86F683537A4115049BC1616BA35C2B0B6F5CC32 -3F6831DE4E6029310738DE23D36D2C6E82F04EB675FB89789F74AFE3B8854250 -51812FBEFBCF162947554324FADAB765C74B6DA89F60A734076D44BBE45263B1 -3FEFEEA90EC7948F23F34D4049087AF6563692417DDBCDD5A9552A373C2528F8 -0318D3C0669279F292127CBA40B0ABE08A1476BC9EBFA8BD5D622BC5CE7DBA20 -C689BDAF50D5B1EAA89E296787CC53845DB2BA54FDE363DCC98A7BA256663869 -E9E02E09077884DF1A2A41AA698B7EDE8DAFA621B552DDA91AD1E671D636FB36 -91C62B4D2D4112F2C169E0023EB7521F570CECC54ECA5EBA462049AABBE2ADEF -E3234BFD71B26DFDD9D34DFA69E5E80FD90406E6505A6798F030A4B5172A7BC2 -C9B765A86ED55C0590E0432719BCD7BDE7CCC7F6B33BD467063D886276C8879D -E04897A4623111C14A1EDBBF69E2FEDDFEAEB2A785C6D2F0711DF4B93AAA291E -7F4E0CF9CC3FF0D31953C594DAD014097DA02CBD5AE8828C7E7B5BDA09188B05 -0D7263F164E1E78CC430ACAD1E8FA71001E9BCEFAE47C79846916A5F819CA366 -5734089BCDD458CA1A9E8E17BFF357A91F9A7A8A6E1DEFB121353AA80F1906A5 -AF7CD2E59EE6776FC0DA6574DA0DE522918CAC4E566F13FB9B64EFE79F3A3BC0 -689E3B0676741C90FF3BF85C7A0FA9716F4ED0E329512B66BFB8AEB56C3DD6B2 -24F8D6E23751A8485F7EB46719E9D22618FEE86D5E01ECCF4C6E74368A8E9B49 -245D80E7484DFBC916FB2447852B36EF3F99A82B6C106F786707D7689DCD7AEC -A0C51AC1A3F67034C16B74994403FAE7743BF02149BEBEF554814BEF31B79184 -3FAB4D2C887E1BEE81B465D12DCDDAD03DE5ABE9E763C440B2CFD42FD16D96EB -C21FE788C8C2688F79F148AA7090BE64B0EA710D376222FD1590301BA9A2E715 -D33B8C1D95F2589AB0EE476F7046537E27DBBCDADEA1E7357C9D7FA92C2F93A6 -7BDDF58A44966590821023380C97CDE37EF6D449E35EF32BCA6E69DC8458511E -8DC8AB63171A6018AC9A334829E5978484C4C6E917A5F1C254E6669F4037C691 -36980250A80673E0F18C9E0FBA1E5CCA3BE30B8E7B7188062B25F8E1E16528A2 -F217C18D6A1955482E5463FBF097ABAF7314E449C6FEE56E2695407A8AA9648C -61AC2BF3B2D9CB6317A9B16CE931D318C8BC9676CD908505568C197D90C2BB46 -06431C999EB68C8216409E4CABACB2BB34A05B697B9DD1E91471A404B4969519 -E25209EF4EDD420944BED17B18DB3566FCB8059699FE416789191EC2B35086AA -2E10C139E3C9FA0A535DEE9255A867A26656213E85851DE5F51F9780D3A6E572 -F1F5CE64DA176CA810799DC1C60A8FD2A5ED42E613021A19928EC4572059B2C1 -EE441E79CDF7DD4AF7B6E3D3230419ACAED329388044B107DCB4DE91B71EB838 -904B1F969738BBDA064FFE75C6623639BE9924602DDF0C166B433B9D54ACDA5E -018680477FB8F10621FF32319E58DB672D744959A33E7314A1B3CDE0C038F7D6 -0C8A195AF191E36B0325334A711CD8E25D9C1D257E46A734779E486567481108 -E0281DE96907D460546578DE83A0A01A9ABF64402B48DEF739F4308E14145753 -719CEF720FE5CF8DAD7845E74D502B69DC18D172C3A27411259B8042F3FF82C3 -B157BE242C351830255CF0EDA96577375A70657BD9A2E9FFC54AF0AE563D73F2 -E510279FEF48D79F5F7745DBB492F1D74DA738E6A4FE4364799B5BEC93B4CAF6 -B06B9B8C8D164F8FA1FBBA693204064F2C1806C39910910E02ECA8D092558CB8 -33338B359D56483B7B99A1D8137204EC1AE70ED3D75881FC3B00BB9349AD934C -81A9F285312FDDC77FA923B18B1873D288C2AAF2E6D0AF90BF25A982B843789D -5662D6A2DD58E065026885601ABED4B09CAAA3116DEE6B430B15BE0A121FC1BB -FDEA5A501F0798CFFFFEAB5101E707F1A00C8E014A3561FD39972EA9AB108EBB -960AEA7FF60C301AD6CBFCAA7D35CBF6F8462A4D76C4FBA6F3DF6BB762DF7900 -9F69529AB4EAF96C2866444B257160E8822533A7A1240C83EC18C364F577407B -4CB314678D2511735308A1660AD94B8B818CEA4A3DC00C5A1C978F8BB4E0491C -49328F6CDF95BF620AE53056364423841D84418B23C2A447B0CCF8D8633FE2E8 -4A4AC1C6C74627EECDC994059F1BAE9E6B10FA80D767B3FE97BFFAD413DCB0A8 -495039744B48266278194D60422D6E7C74D0DB45ACF217797D0C0678EEB60759 -6231438CFEFB346553A7A447B50807EBB6E885B5A49CA9A350EC4A8C76EDFBB3 -A4DA1C9E3EFA193CDF08553302998F20055C84420A4C5252F764CC4B7A4BEF6A -A09170EC417B296DD9E2301CD8EABE4A087E648E0525A9FFAF26374C47FDC123 -82F18C9884843864F418ACB08041E7896FDD395225532460A8194A8DB4DBD824 -1C68C6665F85059E365EC0972EC6465E2D8867449907DA6692A021F026F437BD -D02654BC11381BB6557663E0B0B8C4F2FF69E4776F4EABA69311BC1AF8155F7D -6D3A418BDC912CC7CF1A4BBC8A1376D8B4DEEB6585416959BCA4AA08D4520C33 -EB054DE53140992D0707210593BE62B3659E3E493C4562C2E99CECA143791DAC -679896BCDA0699E405957E17DDBD243E65CDD7C9C8629F29A2078658746A7779 -0F75BE24E2DDBB672B95F26366BAF036B3C23BE4132D7362E76D4183A469E0F7 -29174711ECAF4FD9A923E72FE58DF2854C5537E3626317D471D1E8A922C9BBA4 -CE9163A4086AC4A231C2BF35FBC39A5BBCFE41843CAC7D81A054509D31572BE1 -596E0B0B563DF2BF0E57DB4943DAEE35CA26C8433FEE4FC61145C77F65DADE75 -62DA18DFABC7F4194906F53884E62E77D8AB3E099776AB93B2B4D0C98FA44C71 -597202A2643942795EE8CE098FE26F1AF8134F1E75FAE18D563B1FF43A511C9E -EAFB9EFCF61490A1A4FD2CF354927B72C5EDD5D62B2F3F5006D6130562A13BCB -1B988A994A8D68B051A5A821CCD5D0F8D9D49FE7CD04EECCFD7A554CCDFFD77E -27AC4AB5BF9FE40F90EBD066C483796CE1A364E95C5E0CF2154834760522F128 -B2DBD1F4F73347D42635B2875A23597C35A0823CC6F71E49598125411BC9B2C2 -72470D36DD967C947AFB031BFCF770FE50551A134DF8C5D1AB1F09819569A57E -E23D4E87C0B52CD02B0A2E3FAA7D27A94359E82AF047756BB769BC5950A75207 -78ABD49D174F2F69810AFFA9336A52D6B93B004DCA5CDE58475C0210E0BA1D20 -FD4FFD6838EC56A0922472D4C4EE0CC481574BC30618179E733EA40A48847E14 -A75BE7717CC5DDCB5B0718074EAB6FF07CFFE794D335B3A13EB968EA8FC5B08A -13B38AD1C2C964E4B07E90B9732C458216B028E07DD593A5B767A2B415EFE7DA -951FC07800F11C7E2EF9BDD152BC6815B7F32117F49FE08BD79BEB949003512A -327F3F8FAE1767E7842348BA4373649F1A21DB2C56C081BCF9FA4EA86C8DFF00 -FF45C4F1386CF8C2C4120F3F6019CEBB639F2D272D08C1763A470D4BF6330DC8 -43C069A6333113C3A0C93471486EFE9BFC02B760C7CBB2E9156087D09EE8A178 -5EF50B34994094C3F0015EA2ADB6C920F4302FDEF128711994875551C4E883E2 -DDEFFAAE11F2234AFDD96400BB69C1B4E6EFD75734C586A10A54A98E7D790F28 -DEF7C7DF61FB23BF91AA700AE585EBDE74E215DA49F4ED466F46129022722086 -8884D8E026F35C4BEE7E866DF8E0846D5EC3534069B713FAB02D4B4EE3B44E1B -656F30D629D40AA1337786C1FDA08EA1217AFA4A6E2498B334DAB5461A70DFBB -5AA5686C89FFA4EE82D81CE2B28334DC5C032487CCE998616F48150BA1281911 -076E626E5BFCC56A0A4CDC559F878F14C2BD7A5148C1D8CC303FF9EC473354D2 -D4FB0F0F2AD0CF182A28074ED6552E179222570DE0E0D44E8FF4DB36C3AD6487 -C4BA53C8548714A69FCF8E3E5202F09469D7447C6519AE902C1D611A720BAFB5 -59E27A6DBA73624F44B4ABE0988BA3450F82E03521CCE8EDE8BE7EE1223B575A -DF9A52650E85545525E6F121FF2D1531F156EA9D5594239AEA2CD09EE28ACB15 -A445E11FD1C031188DB61881F474D49425C084489A88A47D681EA68E7FC4B1F9 -DBB552063A02A0EB51125E9B2CC646B940D46FF457415F9565892DEAC030F08B -E4C10DC38D825C7597394C844CB863CE6C843F67F2E1C42C4EF86AC7FB727BF0 -224B5E91BAD99CC6638AB2C64469A81D8B1789981872ED037B3A34BDF3130137 -80FE80FDA65EFBC11A08B98A1AE595F980B577E22D3CB7FED1D4016F5290ADF5 -47D7D9BAFE39F294582F2C084003E9C83FDB9EBC87C8B477CB8BB359EDD9BBC9 -9368D6605E1468A20909831BF602EFCEC0D5EBA99A2223E5A269275C8B221B3A -F9226654185929F794E1979ED18B4CD36152F973433AC67BE24B9D953254FBBD -B644CDF3BF0E29A2C72113DC486E46DED2CE8F8DFA8B0F8478D1F18C9AA8E054 -A31C3DBE84ECEDD85DF6AF9467AC2990ECAA3384FBCA1BBE598AA0D6813C859E -1520B88BF30ADA910A6AC3068A5B8CFD76B7F0F6F4AF4C32450D628B5320C384 -F23A2B5E8756895584155226A30F8B0437E028978491DCD00E79C0ED58DF261E -79B9DA17E57AEE03EE92102EAB2D63E69A88EE0B1E2087ED0C0CF6475EBDC3BE -0324D1FC8F7B90D8D807533E5436F2C2583B9629EC390403437FDAC908557894 -03054A6DD6A3586043A9C8BFD0C7EDE1229DBB9F69F7A5D20F55664D061F6517 -0051C6B3CD7338241FB403F2AF77DAB1A8EBE1650156D40863EC1957372BFDEA -BA8D0BB1193CC5BEB5A68C8274802E14FFA3ADCEBE19070325B1BDB960CF2988 -C0F5A9BFD843C515ADEC8B8AB02B2891EDD7502D9F28F4E58D8F67D1ACAFD0C3 -3531E0C7D1554344CCF90AC8696E83A3F968252981CAC09653956F4343B99D3D -4F17CB8BBE4506B354439B70F2024871D16668F9DECD8EDB872BE5E6ACC406F1 -1DF4E3ADF60EFED57D1C426292970199BB663405236C6A907B6891C6190E87F2 -78D9142220FF295C7BF44AF61470798FB8CFBEE6973C69DA1CC24ECB058AA753 -DDBFD92FBB15560EA19D5D92F0005B74F06F0EA5901D231996E0866389DCA433 -E62BE48479687084C1D67BC592E592939F806FA8BF5F0D3F644B1FA6F056DE0D -51D3F212C6818CB6166317058C2A0C07AE2E324CD90D4EC83CF4819B10CC348C -6DBABA024A5FCDAE6E288F82DA060BCD16437F07DCA43BF1E5A1B402F16C78FC -075BEE900B4021A1019C4A5ADC33230047FF11FDE8FB775DDA267040A22B4E5D -6012F7E72B8BC8DD3A81369A08FB81C6C4873C2147D03D4181D6D8032DD2B610 -9C44CAB50C5BD8F489EBF01C72D4198B66EEA4E976462F8874143640B82AE57C -A51EDEDE75A9A55D31587C14F8DEFFE69F75EA7B95BF725CE9991FB2F07AF568 -5AFEB39447B728B99BE0502BF28DE1D92B15926BE4E3DA2E7BB44A24836A97C6 -EE3A2080E01DC6514180DAF9C055F4C94929D34F193920020505E62804461630 -9F42C652F9D5681C91BE23DCB0C634247E739135F925EF3D5424767D5F5C5879 -C46F2E32C7B3BE9E90FD6ABE693A6016AB77670129B58B8FE719FA97FE320842 -6488CB85B6BCC0012975D22E75A2E086131DE676AB825A386C086FBE1B65DDDD -A19F06AA4C1D3EC84751C649F4A62CFDC48A7CF88CFEC68B959C211B60DCB045 -6BFF922FD7349B98E1769394E6CEA4F764AC4B6536AAE4E6BE69099A39A6A33C -97671C3AB4E7A94DCB829FBA97DFE5F71B1728FC81F826699DFDB0ACE9BC60E0 -6EC15D35EC479F3F53EE4D0398BAC138FED504A84A13B78568E3F9C86BAE8B88 -61830A80F8B994D0D66A8FA3FCD6C5099C29FC285ABF096EF9A3BFDBB522157C -DCE9F0D6AAFB1F8D7B0A3C573D0C170357175DD56EAF37BAAEF4C92FBE17E26C -7D2BDAACB9B8F33D09651FBE0D49A8BE66B78D075485BCD38DED5056FCE48A12 -D28E9670EC7CF4E9A277D6ABC2F7AB30BFF290B5452582F372FC9DE6CEA9EC0B -84328269F14FE7F47620B1042B283C54161AFCF84B46E6B1410587295E4F8958 -C1800F120B59639C85D46D46A4C64309931A8C91F138EB52F779189EF75B9157 -D624045F4B8846856ADF0AD735FC6FA41F7B6C002E9D1EBD92468E86C843AFB7 -4D78E3D54D866029DE5DF865EE3F7313AC358EDA70A792E22F2F806EF86A6B57 -64AAD565C57E64B1A6635B7394B4B5729189319FCAC8529ADE30633B9BDEE0D2 -AF1F8944EFDC7C408FD8FC270822CC01E7BA355C856219B3AC5D05CA37EB0EF1 -6766D62383AEDDA1F7CDAD1DF0172E766BB46C5FCCDDD61BB019D283EDEF312A -B2DBA38C9BB0928FB93F50E8516AB353BE04403D132805B5AAAA17163AB9C847 -F1B54946B0775FD21325C82E4EC7F2186C54B4396BC4B0B913A59E4444D11B39 -8AB56F2FD5788A9BA45DA5499A50BA74D28707F62086907BF8342E0C753A31A8 -DE293B592F51D74DECA52858CCF76C69BAF2224F640069BEF2604983FB478173 -792D68030D7A6E3FE083AFFE9488D872897ABFC88CA8BFE484A75201D73058D4 -72A8A26A50BA1F2B50CBF98D46DFED0BA057619BF370E435A0400147928D7C06 -28DF2A03527E3BE925D6A664E4640E63BD22D54A038D934B3DB5B500E075B8AB -06DB5279274E65FF870F1E5106E190AB0FD8849EEE2D605FD4F0DED2C3F86831 -4EECBFAAD8B2A895F08DBA692A8176F9080045519CC6C46B52F0F31DF112AD79 -8E46B9899C5527A011AB63FA443ACE90F09434C295A5D9E6753AF2645407488E -D29E7711546F87265C130B76B4632242E43962A5C886D4DB6316A2F3420FCAEA -3055AB5A9E1325EA870CE87F34BB2B3110E4919E1AFEE67606B00B03DD6824F0 -20BA42968B81DAE198C88057438E36056D46C550E3E5E03A99BD4B07E66A2179 -BBC5B3FB06D5D72022C53A3F3A1B759472D5A50D7F7A1F4E31D3F7A30EDC1D45 -4B00AEB5DF680145A123CCA3BBD801CA64B2CBEEA99842720F8DCE432909AE78 -5AD3F29AC69D302C62256CC4D47AC92EE11D2A3E1C666CEA24876491BB167548 -9E3A990252DF8254CB5E7141F57B78FD1FEB38BE135815C6FC86EF81B5994711 -E43083C3234C55DAD97CCCE4FF3F55C5A6C22ADD2C549513A465CFA3D8A9AEB6 -331374DC05A4F496BE33F9263172FB6FE1CCD19EE9515C5155ABECA9492DC743 -BE4142D63FB5E17D55C9FE642F07995502AECD9D555603D15B5BE420A65A6E98 -4F341BA13E44DBBC1DC8CF0D561198A2B40FAF35F7ED5FEB4429BF71F5C88637 -CB114F1377FD3227EDF592733EC68F4EFEAB14FE7C26DA7031075E04289FA6DC -8A79F81E4E18CAE8380CC585E7DA3DCDA3FCB53929AA8D772D53FC6D821EBB14 -EB472017FB56CE9410FEEFF14EA69C188993922DAFEC805F4C8028537A9D6365 -AE1A6BEF37CE8E02B995C41382984802AD3D12AA9FAA36837F9F9F8F60D16B81 -474238F136F442CA9B14620F83E4046E41EB0FD02BD04DA7863DF26624B5489A -B8BA35B0B3A8D128FA10E01DC9B622C26CC57CA79CCDEEB7E174698EFDCC0CBE -879AE1434B3EC5AF48E6C2EC5652DEFE0ECD7415FA46BC0C80FCC57CC808B3DE -CBE4CC7B62AD3B092487F7A23C38A2D9102DEBB1CF4C1EE7FEDE1E8BBCDF7F73 -54CAB1E591F9B3B3159D879A9492394B32F2CC43EE7EBA6E293AF12D7FC4ADF4 -DAF8F2F48A777E927A915DE1FD9125B52D406BACB0BEA149F6F6D79D92D06413 -5D68461A772D531F2E76D1947D2ED5BFFCD758E062B5435BFD180F7E3734D5DD -ABD86A1C2BA643955A36C482BEBAC608F588C43E6EA7EA2AE01D0346D28F50CD -BA8F9FD23674AB19A2B879E0DD19029EAC5D74D16B186CF4BE3382E74E361427 -536A00347E536701808C1D31A617D1F9269110B76A0D59C7B84D98C8FE308733 -C9497B807A77D244FEE03ED7FB5EB4D6ABB74A7129F23AF628BC01BEC6C43ED2 -D62F4E2133006FDB94D33CD31F9FFE57C8C9E31DC6D7A81A2C6ABF1D971EE222 -96A4D79F7232190EB796A43ECEB88F1C64A88A10C3AE8E98711EFDF984BF270B -55C5B9082D54DA7D32B168CE573597DC5A453D76953DBDDDBC1798F8A645AEB3 -78B6B5BAF60C9AFA9D5F818740EDAA977EBEA0F68E531550E607E6FCB04F3E22 -BC9D6440E1E153C8D780213DAB08CF8CFEB03018942AF980642745D711C7DB1D -BEFD825627798897ED8185D80234B6C087FBB602ADB1263C2A2A0F59AFCA7B09 -EA4ED3BCF936C2DAEA9C8DDAA90130C24AD1A1BA47711CC760FF72EB3F27C165 -CA1FDCF1250C6CA4A788AAEEE08902AB4EB03C6EDF281CA2F5B074C859DE3963 -27F7CFC53CC91C80F779ABB25F7A6601453DF5606B72EC562F615A92C1DCED58 -3911BE7784B6E8B17F8993E4D5693A327F9C289701F39ADCF583BB4EFDE1F835 -1A59BBC2E6B73CF422D877B0B423E4E8FD116F5C66A4BEB706A3D42E7EFBB5E5 -E73CD03D7A91719337CC8E13F9D8DA255185FBE3F4FB6DBE8EA90AF036A09BE3 -5047B59BC18C1C3658ACE003B6535E42043E4D7E6D79E0B48B3D0DCA36C046D1 -D5ACE0B6F91CB78BCBD144F3FAA3D9D711C9D11EC30B6CCDBF43CD490E9AC229 -9ED2CFAC4F53927040CC8FD26004450889A1167FA34247B7C283A46E4C0A8C20 -AB43314A34EF0BC02C5558746D35F2315624FB9D4A8ED13E3D1A8B80B872798E -CCB9775F985E31E8228B03949B4E35DCF7A41C834E53CE3C163EEECE81A8278C -FEA3A9E3264627D33738170C12F4EB23EF8F00811723FA4FE56A0EFE8ED5EBE4 -90455B690EAE1E8F1092C1AAC07FC418A6790C2DDA6DF739B9B586B68263EB63 -718EAD2B11037C5D26FF31FB2E56AB82773921B00EF07DECAEE2A8FD71AB232C -86865012F1FCC80CBDC4B0E881819601CE2FC5AC36875F2FB5C088436BB11159 -813020F0433EDF6D96FD162F5E3241F88BA7025F2B010208DD1DF737FFF1185B -812864C3049CE325E06610404C8DE9322187DAA7FD90FFDF2DF3C86D94E8E792 -377C1C1F10FDC78E1FDEAF718A2857C4922FA300C8D3FAC136BA2957C675FBDD -21E3A9E29C797142BA6D30FABB0D5E97AABB49D113A55C4838B253AB8D7443E7 -15596B3BDF01C88C17135A74AF78551CEB6B0041BD17ECAF89321E6948E1C531 -B227A1F071FC3558501BFFC842A4F8B80C14D9213E0633485A66F899BCB473D7 -3C72329610575B6279C781714761468C785E426DC9393564979B1D6A6D55AE9B -4954010208883EC964F35E8363129682AAFA2D40E1ED08A4A1DF27F3DB5474E2 -92B917B45D9473AC94EE40662DF06AC9D004541B6F88DF5AA4A36756620CBE83 -1254ED1C3C9CA39B09E0D4148DA552B00FC60FF68E7159F556998EB8A66C8EC3 -3B7842ACEE888BCBD1FA183BAB95B06B245ACEA49F8CC51A2EB01053E99E9A87 -A5198C2FC26E270961FFF61A093A084594E6C0298CF96B251C5F8395ACDA26FC -461E6DB774F6220F8FA04C68519E19CF69EFA73E9A1BDFFE833B228DC19571BA -34B7AC21EB2BF8B1876BD11E128F002AC9AD6A9785CBBFE2D5FBAC307BE7CE5B -DDA7C12820028FBDBEF1343638CE166E43B95E6518A83828AA3C3628779FB2E4 -CE32DED584715FD18C95D38FA85772DC8650EFC42F980A1ADC012ACD93B7E1E5 -FA6453179ADC6F17C94FEA1F4CC2EF6A2A975C687ED81DEB7111F0897742B373 -30720766409C534C5E0A42D7221337FF3C4C59BBD239518F3976DC55FDBB8C1C -8DB9CB4B05B1D9AFBAF0FA1D82B1564AD7FC92B6CB3582F7DA309403EB78916B -BFDC6F918E26A39755E5AD6394D985C92F7927FB1287FAFF2F60248236F918DC -2E8557C6805B01090A037E8D5C529E2D70976A9CBF3785F4BAFAF9923DB40756 -7B6CE8EE83559893E3930790E5917EC3421FEB042C0CBF6CE74F16C44FA08025 -82EDA0833C0486CDA66ACB450094BB65F54C83829B47DAAAC9E4CF115FC275C8 -6BE583008180F2E2C9B003712ECE32333199BBF9772A471EADE59355FF264DD7 -ADFD42FECCD00892FB545DFE555AAA4B273B82BD2740CB8C9ACD144DEEA94188 -D1AFEDFA1FC63557F9E527C00AE7D14762FEC2814487CB60E406F8D4A47365B1 -F7B0E0A56CEF011CC11345674611EBFB5A7C587C34F786498FEE4F0F999AF42F -D955CF2ECC5B64BB1C100310DE5B6C7D106A80FA4ACE0184A6E18FAC544EEDCF -307334E1C2A0CB6E488B21DA3BDDC5B593D5ABD6006D1E2BB56336EA88D56DAA -62DAFDDC379B06EF80E9F3661C6B7AA6787ADD06155F3DBCABAB6BA3A46C9047 -5D295774447BC007D5423B9840E2ABACB5B811B30ABFF547A8A6E2C18A92DEF5 -D30890D49388E80E6EC7626FE3236AABBF64B21E5525FFB7C802511129EBFAD3 -D1E19814500A465DA92054F93FF77864698288510AB599237D0DBE1EECF81C46 -F706515DF10A1D0FB06939473BC72429A42CE6E15BA2C97720756D80DDDC171E -7E8202D385C2E5B4A5A011933CE920E98A09527DDBF49FB4DAF2E736B1E42F57 -354C91CAACB68BEE8FDD10F4DECF25ABA4EFFC4588DFDB9E98640737C015EA04 -A33D5AAAF9AC4A7D288BC9D4A8AAB9B852516E215DF7614B10BEF003EE1D0572 -E4654DBA4D71959D403B936339D41C381FC1A206BFA6505DF3082D9FF767EF67 -437E8C2A14A8B6F0FB98C80DCC42A30C57C8AC3FE83570A1B4AB404374B85F45 -A1056E389A7148CAF714CF6DC26A04E3DE8E2E7FD26F6CDE3E836AE65E593A9D -3FA7A24A32E3E99A152009C8713FF8960FC93A2E49B8F442B81A90F98B99E140 -5F0E0253DE8ACE69F1248040510DEAEE069307FBD02B821D1DAEADE6C41111E8 -37A80AB702B8D79977DD73429695C13DF81ED3B562FF4C168AE03ECD24909A41 -22C579987CBB22700D1D34BB16E5D0B4BEDB4660D34EF5CF0A4FE507198EE14D -9FAF7C97CF769EA9159E1D8210B063141913DD402BAFD515CD746A7CBC061A74 -CD6D6DF78AA722FF543C5379A1AF5102B75C06F73E075BD8531353892E1733D5 -8143315C0C780BBB21D6954119C0AB1D4C89EA67C0AFDD4607AF07D509F481A9 -9045776F08003CB429316307E66E1F9490E8547FE0336BDD8B070290558E0DCE -DB08FCF371A8A9FE905E9C3BA4CBD4F12BB2F512838D395BBCAB1488C58122C0 -CD6D3634C0F6E193E2F2E8C632BB9185B20D94503E02244938D4400F0DD8FB81 -3AB0CBCF32E462A223F9680A14AC8876917ADEDCC9B181D584AA307CFF3B66B6 -F59FC840A9E8D1BE101AA1DE41934C22A1017A8AF69D257433C2D2C5A0474F9D -362A669B4044B3990BF83E8906C5B7E2B45D688CF12CC1FF38F2EA47743676CB -55FCD3C6261C6F5AF002869128882E39E089A6FA108195A8B86CB07913FFFA6F -6D8F8D5C9E897D63C174825286953B9DCB09B8475D0675E09C1D26286107E89C -C75F92D14002B1289A5E11F059F28FA27DF23FF395EEDFD5F22374FF67F0B60E -81D249898A228A6A89141B23918E977BA79C5F5E6CE84FD35F51B136D81428E4 -E4D205612F6DEEC1CE6AE571B30A33DE004A8F096656A3BFAF8BAE8A2C73AA53 -D7984D6777540082F3674304D2C3F17775BDF86A27563CC2BF95F190DB3E28E9 -FBD0716C0F1B0D56A96E2E870882F03A3E160621FB469355859954858C9CC2AB -06EA8F87EA163B9ABC176D704D3C17A37508864381659070B071B80C79D6D60C -7858A32F5DE87B1F818E78048CE81E229FD7BD91286ECD773147F94E7A184450 -D1060F0FBC5A8DB06BB4009B3F5F50EFEECEF8FE970E3FBFEB5ADEDE9EAC6A49 -AECCEB5378A9CE274BC7F25D03CF477C2054D313FD988A4D913D20ED3981CE47 -8674501E487FEFE5DD91CB0E5ED24BE1D2D45C88DBE1378B11F6B7076FE56BF4 -8E8925E65FBF23330B9C4A943CD96EEC06A6073AED304CDF520CD2AC1CFFAC7A -6B8D8FFB7327834C9DADF578F250A51BE64D27A2B65A16DD0204635560B47075 -3A054F7159EE483CA06345D3D55EFACD47AD32A9D7D7404ED0CB742A3AB8C47C -2C5CC71EA3E1405D6E114DD53D85C2350D46A8E4BDFD1667C65A8152D9F3331D -6235F40AE36EDB507325E21496725F3351C239207C0C4BBAEE2DC7D2797B8818 -BEBAFCA4FEDBBBBBF3FDB633A0C21A8BBA856D4A3119394FB00AD092E314558B -99CD5B138D4A42BB7B621DFCC2A2E2AD262479E878D8F26195A643BA0D13F9C9 -FCF3B6BE5774DE6F4564FB82BA3B2B9BA29A5F406F1A135D46DB10C80CA11E1C -39C9A74A18D8EEE86C85556F8B9203E00DE0B1A164134E48FCE7F37AAB98A79B -EAD809EA81192ADD3D3C6B35E521AC99E190262E5454C7170B081CB8AE338D09 -D489BB694D228CE9C05DA95297BF106A3B71A99A5F199F122971F5C4B0B9C53A -4344FD111B92AF456697E0B85142B71FA56802C392C886A408558A297EC3C717 -FB803CA1002361034D40420699FFE3C149800137EBA3AD99AAAD74B471038675 -8B073F692D278E0A088D3F51360C2C79A83FCDABE9963A4D636631310E7C6D35 -EF02828CD45CEBF9892C2761D934E07AF32BE74852C13FE63BD3DFF3619CEFA1 -25F5FAC01306FD99A573F0F5F29116967FFA22C9236EE8EB052488C4CC204855 -EEDB80B30838AEF66DD960389684231FAAB83750575E4C9BAE860D9B0F838927 -791AE22921BAF254FE561771B7A9164362D6BD462A82763F6D19737ADA1C2B92 -BD72443D7521795F9D3702F83B04BCF992667CA255A3AA539CB71F25F2D0ED57 -9E0B180D1C199211FBC17EE282E7CA9E078593E6340BA651AB949482A0760790 -E4C3F1446653CFF964B9A3142FF4FBE8C75CFBAEFFEEE1810D38033CBDA2FE9F -B42BBD97740EF0C118C7954FBE81FDDDC74608D036A3BBB75EEED4E1A4A56381 -0F57C993C4651E4753A27684D170EBC495D09202AC0CDC5F10267EF26EF4E7D0 -908F4524C91AD27F43737253BF0617559F2EB99EB26643D8C28B61F8968CEE7A -A79A818887ED9BC3AECE4A35AB15752A368D09594F93B7A741282DB5C6E42144 -EAD79AADE23733A43500563C3AD34E0421D1E3B4642EC1D70F0054E3DB6CC218 -FF930B11B1CCC3E4C90BC523D4635161C89CD9FF8F2C4F6E4127ABF479914610 -4D95589775902AE3993E1CE3D4868A1055BFF961CCB244AE25C76C4CE556B8AF -98129765EA10B35FFF3D24DE1CA68BA55E133084CD2562832630E302C3823EB2 -5D7293D0C760EC1788BA6BC9ADB7AF6DA83C951E0A23AD98EFAD64AD387F7764 -21320EAA8DD04EFC4C2BC011185DAC3DC1FEF1461F3F9ED515E2240433D855E2 -0229E1D5269092D0FF790539D2946A608E82E1FCA5E3A1254B27AA134C300FFE -C7C724824AE8B8436577129608078274BB69FB6A026D0CA48B97314F596EB375 -390574158057D3E1C3EA4AC61BEC73F81C706A6C7A9B42EEACD6A4B5C4E69FD2 -C68AB11CF02CE3D9B7148BAEC69F92FD7DAF6C9D772BE60AD4579BCE18396E4B -60EED65E6E2E62B283F135675C188F58C831B3A7ADCACACD39871EF8905B3264 -567AEEE25FB31D64C6596D60597315F1AD8F74E5577E6C966F8F65B001850D1F -39F0234F0478F6DB136F17F20262CC072B25202BCC8A67EECB03A2834136EE5E -8FDF55397F3572922DF82D25376DA73083419420003E99A020198ED0ECA44A72 -DCFF31392F59E14720BA027A5A5E81B3C32BE7DBEE039CEA50AFD5CF9CB9080B -3952949A3165C5AE1EF9D8C76E0C901DF5013469D55C8AFE1554A74D6C565533 -FD00D77FAA0311910C9C191ECBE1A0FE30A4FCDC3909D4F6322DE2DE90865099 -ABAA1A087DE9B4642DB649ECA28D40631EBA0B3902EA6D70F9260EA9DACBCE35 -8EFFA26B2E8BF4567406788443950D8A71339F595C83E28111FC90181AF60EC8 -9A7EDDE1989A2678B8C570F5D0BC178C4018626B9AC851604F03C98469EFDFCB -BC34589B59973E918756A2C1BB7D1811BEAA17D193DEA92EB273D50AE5C0FC30 -661B330B083311E5D971D70DE46E2239532FAC9A6D8FD913E6DD03F42ED6148C -4F04E6D136D41C24BD9B973109A9B63233E51176EE64D247DE1C5CBB43F568BC -DBD5A6AEDFB68E5A0C8DC465E9949A96665AB78F41132F96F3680B5A9A79DC44 -828FBDA04368F277C40F629961EAA9F3B253276EE252478A9F409C2FB6447C65 -37AB9FC9A216970D7BF6912FAFC92BA0C000A58950291FB3E47F0DFD493EC7CC -A99555CACEB7EC87F4250AB92E7136500138087A19053E9152B6F007B8D3DE8C -96224FF8D464BD3289C08AD1E05B9D063375F38FD42CE97ADAC4E5B83B8A88D2 -B2634B95A0DC0AE6A407E62D153BFC434B42680FD0F62F5FCF0818182F182D1D -6B9EBD47149F8506CF38BA61D8AE460A8B660F40DEFBC9243154E5683EA8D574 -8D48276FE5128F972D96E42D89E374F7D8C72E70F84F028263507BC96F6B2B92 -EF4B992CA46361BA3EDB888A6E5C57688198EF10A616F7DCCA55B4E1645FFBEA -C2201D5503101C400B147CA23A805AA95FF059120C677C32ADC486DCA6E775EC -23BB704624D3755E09505C395CC3AB83D68F10E2D6E1497BC179F3CA82A3DFC2 -38275D10D3253264BA9C32DA47C0088660037C7A789C1DAF75D0476BA9ED5B62 -CD30BA0E268DF3537F8298BDDCA16B1C970C2863B21CD839FF6B713438447A4C -C58C1F0ECE39E126AAC2353E31B6FB808253501CF26AA3AC48433D4CE5A946BF -10347C814A195929213655345791FAEB7986B1DD4F2B0C9E7116B11A4F1157CB -933B48B488B7DFE700423AD4FAA7E26F003B87B6255BB607A3A639830D68D663 -A3350CDD992B528E3D2176DAF79AC03F6455B1BD626ED15299042B46F03BB46B -992109329C6F67F1CD92A620FB4D806558D6CFDD75DE4F7D6C558CD5325302BF -ABBF40001F90CC940511F63F32F112EB958944E37A603642C0CDFC7941D9EC65 -F1F5B2805EC17A6662FABEAC3F1A7CE8A4958D64FCD57759F5CA294236B5834B -0071972DBCFAE0D89A1BA76FA1EEF2C8ACB12E45C8D8939B3EF1DA3970ECD2A3 -30AE415757A89E44CED997FFF9F6378FDB532ADAFB25872A690137609D91405F -4FDA7B432D432325F1467A7C85363A9E2825F86D5B9F9523E53FC5B58D82CB28 -90D43D172B2CBABDA71E5B83928A6271468C197108584BE45647AF5C9BD930E4 -18E321AE20B3D28980B1CA53F8B2696043BCC4C925F218B0AFF8E8C2BC1B85A9 -134BD28FC51E5F4E803761720601C5D9D87921116C342D832BB14EFA08032E5D -7C0C4F14F118883DBB1CA0313B6658E3BB5A7ABBA4970CAB64E66515031BEEA7 -F0311CD7DF8CCADCB38103DBB1D60CE59FEF567B2755D0A65100C8F8EA622025 -4AFEC5D179796C4F87808A76B3F420A228544CC12427AE7A5E2FB6CD76D4668D -BD5A22FF8161EF3FB20EE9FE64EFC4D1E466DEF81D20A395B020BDB7358E80D0 -6CCBBB8725B9AB973B060770E4CB902F429D75295D1E5ADA0BDC01D0DA7A4ED2 -A21346CC735F3E6662B87BCDED41C39EB2174C5ABD9C89A4A6554B3523E08BAD -F208FFE1095E6641C548DC0B7116851695AE8813E691347526DA61EC59DB43E1 -03BD503968825F7EA207E22EA04656780C15E1E9D0A00CF8CEEC4D3FD48A4E93 -7E82A2D0F952F5ED616618739ADDA48480DA4665526260E4269F135C89C2F28C -28B435A1A40C924B79934D6CC536A58D2F102CB46E4C3F6F5390008A7C7B5E28 -4044E385A5D6FBE641B6FB074C4E15DB9D25152E503EB7DB52F45913FBD962C4 -550310BC3592CF1C56A7E19A73261219812CA9A818856901E9F0FC46FA53FD67 -20A7AF35375DC845C8A9BC82F46C061F46233CE3F963C6AC49CCE0936A1813CC -F7904CBE756A07106AC3D9B58C28EB405FE50A12710C7FA7B4F6900E163125DC -43672E2C565C6959C412F7CC333F49E0FF5B1AE666E0770255C43E1779A67D7A -BD794057140D8D1478B7B3C43C84C2C2E56DCA12A1A536F80B16BF9C5244FFB6 -906F2729E0D6C3A6AE9A837CF39F81668CE7B299F4EC9825892A961935E4C81D -7A9FE5D9431283C53770E41DB77A70500A9B21D63B2F073D75D8E11579FF7C63 -3D1BD1D11EA3C49A594D1D83A733ADB8D887AABCB81C32E3913FC4B2DD1DFF11 -10C193CD5D5D5FDC8080F9B99C9B29A86ACFD94EAC9E052790D6A46E5A5E946F -6AB9541056CC23323C09CBA556F1B0F28BA2C30E039B3552DDBAC17B9311BF1F -648D3527E8650B3FC89CF81256E9A4A9054D9F1A9839BF7E0B875D25EAC8AFA8 -2B5663DAD7CC7DED3206BF5957291DF837535DB23BA63F9F7ACA7141E1490A68 -327E35FB7888C160C2D47BC4A7CD84194FF52646DF43AC83A51489481CBA4D20 -1E5094E7AC3EE66A5828BF1D87A530D7786577F164AC3D5C0D624FC6CF1DDFFF -C2 +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 +7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 +6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 +14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 +0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 +3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 +BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F +D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 +FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB +556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F +8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E +F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB +B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 +125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 +A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 +4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC +56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 +E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F +15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 +2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 +05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 +6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD +04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 +C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 +70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA +4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A +A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 +62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 +240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D +69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 +ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 +121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 +0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB +D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A +0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 +D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C +550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 +CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A +9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 +FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F +7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 +E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 +50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A +2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 +9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 +44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE +49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 +385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 +8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 +6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C +EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 +E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB +C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE +484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 +4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 +0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C +6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F +5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C +1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 +909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 +BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 +CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 +2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 +CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 +EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 +0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 +9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A +D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 +21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 +7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F +52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A +FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD +AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 +F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 +067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E +E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 +C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 +5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B +0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD +CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC +2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD +E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 +56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 +F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F +E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F +0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D +67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 +EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 +CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 +9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 +9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 +C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 +327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 +F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC +60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD +A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 +B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 +0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F +1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 +DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D +55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C +7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E +75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 +E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 +8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E +F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB +8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F +D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 +54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 +49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 +CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 +34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 +1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA +6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A +DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 +E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD +4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD +2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC +ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 +3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE +97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C +FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 +A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF +639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 +D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 +E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 +1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E +A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 +F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 +5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 +4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 +664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 +4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 +35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 +1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 +01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A +5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 +2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 +DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C +BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 +39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 +C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 +99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 +7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE +D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 +6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 +5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 +6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B +F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 +E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 +39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 +7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 +ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 +6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 +2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 +1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 +06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE +5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A +288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E +7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F +759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF +E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E +03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A +6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 +314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 +74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D +906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 +673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E +A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 +931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B +CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 +E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 +4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 +2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE +F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B +E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE +E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE +251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 +7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 +46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C +E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 +DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 +F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 +507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 +46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 +2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C +C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 +CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 +57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 +788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B +A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C +C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505 +27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA +1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7 +4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46 +F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F +2FD466826D4E666E3A835B98A1D4AE5D17053A6A648E26E77BD08F9A3E02956A +AE82C4929E9666F539079846527D0E326FE7CBBF86E3722BA3E53F8A5121080B +ACF8D3C67A2A1DF624B9DB92105D3C833F5A6ECEC108E026E1D3D968967A1447 +15CEFDD09123D56606134BC3449404ADAB1330C9238DE48F3CDFBC91EB86D7B3 +8B85B5BA97376A0673E434DBFF19798EA90BFBD94493E2D21976F8106FC0C276 +C81C9B9F7D4A68120DDA56FC6EC65FFA40DB78A60A05EC270A106DEEBD2CB92B +F0622BD2B1D43771DF39AAD3ECB655F317AB483F7290C148690903AAA636583C +99DE3DBA99EFE20773D3D8DDD816A28D7BD8881DE570BAF5C7A30679179E1214 +FCFED81605FE56AEA21C1894167F93D648B474352A65C0756F812F97AB435ADD +22C031A21714A626DE35308AC51CD676DB1748DD2773532294FA77CFB2AAFD32 +A72BB7A045F12B4934A768F89217233DBBD69B900B28492A26713CA5D61A9042 +A982CB071F1F875718FAC168E4E275860DB6369B8114E1BDD4801110B62C3E3E +CF140554C826967A99F4E9726526E87D57BF845CE38E33893E5F9788769B6A4B +A4577C38C8D45AF2EDC9F4FA7DD9979AB8E14FF5D8956233AB4C02982BE8E561 +C63B7BC314793F634DB6F086E1A60D9FC3B69D3A7C20A99FBF3CB028CDBCEB60 +E803C8DC3C5F0CCAC030905E72BBAC052520CB0E40E23B46B2150DE67F61E4B1 +8C4D55904B7F90DDE4A4A78B11AE1009DE46DA396791B1C0EA63FB6897FDFA0F +42474042E7E9B06A703A7C6E672AC6705506F3C0B6861BC85CEBB9DC9CE89372 +88DBC4F96661C812D31312FDBD0E6AFA59D5E0D41E963C93AE5F9D6562A5BDB2 +EF35BEAF99FC9B83D0F6E963F0BBE59633708BABA1C0C474D507E7DD8C3FC2A0 +0E05F058D68121D18C24FD704053E9568C1E110FF28D77255EF61C590A82774A +36F918A82ABEA5D650537545756AF0D00E5531E48A9EF82A048F9ABF657FD6E6 +7A86F4EC045CF79F55472FC309009C30F1C3566B750DD4192CF586DE51D718CE +4E3203A1196B6C1B2C006DA31157A6A6DD46B4D1B3339108E2D9247B3769DE84 +CA991F28D39B289A4F3AA3556BA6774225E83D3E036A9C7CF02AFF6ED9D3947E +C669D9690A6B0607463E910C0D29608F8FACDD5CC249BAC915531365E910E062 +8C0916C9A80195D4C3A837B0242CC141677B2C582F9C1085BC3584B742F6A17A +C122BD3C37CD6584C8D40E7F673FB8B37B3D86A625B0F2987083E14E0E85B2B4 +4CB39E84CCE637E8414538034A2B8DDD282DB19BB49971CBB107D16C3B6E8641 +129AAF973C7B5548E265975B0F2A90CFA0BDCDB9800F9F13D7AE2DE432FD56FE +F121AFD9D4146B47DEDA2CFC1099B1C9DAB8E89FE32554EAED0738F19E704157 +D1A34793E173D032F16245239666AD054A9D6942EDC98B21EB7BF54F5C2B1EBD +CE86CDC4D01C9D05ED97A4A38F3F28273DF70C21DB2925BCA2B4E479414E99F7 +5FCFF8E6AF113C0C43B061AA6CB3FBDFD957BEAF2BFDC1947F8A69DD669AFF10 +99E3D76DD5A4945962C6B1B9D8AB6640504BE4A5D372ECEFF0B5C6F4457709CB +0C0B62B3A7A743AFE1C00B37934F1ED8A45FC5AC174336A3F6F0D4386F3DB83C +CF9143F3A1A431342A27B66A287D2BA92A6CE6C7DBBF62CD6792231B90603D75 +10079164273D164E13868F7442FD4D56DF7C21D7CDACD60B6DAEE2521AB9B4F8 +2C1E5EF603450BC562A195E9F1CC903DBB5EDD926DED61EB7DAD9A91018ACD85 +8E992234AC9D62CF763D2629F7CF9DCB210F48CDD474BC04C426E2CECCDCBBDD +D02819085642CC479A7551AC5123CCEBA6C81DB91F6A27E49ADC764433697176 +4C8F6A20247B49CE410988A3940B5A7593797D8A4F67CCA9C991D6790A819B52 +AAAD0CE9206955843D46ECE2BFAB537F81BE41B6B6B86D86D1979AB37E177D41 +6C865EDEBE02288055452DA705EBAC5D4AFE97D78954E3B28DFF4D0BA7F68091 +844E7E681A3282F7FC211E13A7C644170B7CC7787D549409C688B1419D3454DE +BF570A46CB6F67CA472BDD5A7B8E16D11A40B488136291D57736A445C9C25EAC +A42686BD3320E18FD75743B0B3C78EA9652D67879F3C114B8A5E8B6E99DE9C6D +9A6CBD0990E3CFB656D0A3750533B6406B6E4F61160966AD4165B00477B8B501 +D4F5B5588C9C4F88668DA9986CF0A4655707C0E19F4369AD260BA4E5F609BD30 +646213E8AD59DC1FC6C35CA80607ED028EF33FDAFB8101F25522059EBA068ECB +55D5B090D680EA3CF483FFBF44E686EE3924694FD82DFF58B3F228223DF2B2AD +AEDB5CC749C4B2F54C33425A5B674C0A3C4911728B598303CE6A18A4D5D85DBA +9094E105CAAD0F7391273F4E0FA93AE99076AF27F0B2A858284EB11050DF759A +B7FDEA1FC7B70491FAB93D6E15AC08C38D8F20F5F793C089AB91123A01080548 +802256F9B2667F310CBBE92862923F3119B8DC47A3D0E704AA7C37E63715D5F0 +01EB120BF36C723F0F77FB88A2FC7AD0509BD6DB28E2E057E05A99D9969F3913 +787C334514D0136514B9C8364ABD5E890FB400B34650D6B02C13601F6E733390 +1B8625E9528AA3E4A8496813687BB411670B10C94E35AB1661B14E8877CDEDD1 +1680D5A7F7A701EE281D40A90AAB6D00D30539E1B0D9EDEC9711F4EDFE7E4BF6 +43E63A8CFFC8027A67E904BA587A0B33795352B8057E8F3D4D3EDFF75891A1A6 +B9B23604BD9F35A475A2BEBFAB5153D461C07824578B1B5370926C4ECA10ED72 +B8AA80104B4E0A36030309B41C4DAC2B4ECBB370B685B687EA872452C1956802 +8F08AA0313E0BF5E84B7D4E07907787E83DB7DEBE0A07E40969EBFF6D397E0AC +30205649C933A94C5CF53A7AE7AE268BA379FAB7929975425DF74660B49E571C +1BDE7D5E9A26CC7107E99558F90AC41F7D7A2AEBA96ECF1173CC7E8A9C109802 +186AC9C475950B058CB249FEAE07E1C10CB6420412C672FEE56262D0BD65048C +AB5EB395752344A096B4C8A969075E5097220816ADFE6796A4713EF7A3E40DB1 +FA5DAD6FCB4AF346C1FF3752585854C18C871EAEBA8B1BDBB21A0E912CF4F75D +566F9123E268E792144FE20B24436949E390AC737DC9BE22D70C47C5C68B55CC +6B9BD17AAA6E4774F79C579E31310F35084808F6F1115CA55BDEAF26E630E5D1 +0C7D7281C405CFD48C478C457CF37D5D21D8CFAC0022154E1325ED7E7D9A238D +B6937066FC0F884F0C8A2E52A40C234EA3666415B37E79DF04C373C5E98DC38F +2458BC03E20A874C61E9C65CBE5BB0CBB09845F475EE91D3A789CC4D1E3F74B8 +16DB60C84DF6C7804457B00128944046044230C8B030AA6D8BBEC3C886399E7C +DC62884EC2652F2428F6955AB676DF8518E1D75ADFEB9C29EB4D9A4C7942212C +07203BB13E465F42EB5E8F516F4F18B9C177FE7D536B4D467A147297996B9063 +1029DF29E739D1A9DB992C1B98FB6EE5479E68779E5A24BB4C05C70C79223CC9 +B85EE37408A99D9A7403D0D24CF484919A5BC731A13BE98B56CC23394F9F3DDC +47323EEA5B227BBE9312E2074193AC1DED29E570950AF946A09D12F52C841721 +27B0CAEC834A391C1E2DB2D736FDC92B3DCBB1FC128034E8A2381145C6426AC0 +317E796BFE0ED1459EF793864DADFAF394DC051DCB5F1E409050E41B3D90D821 +94447BF370C7CCE0A391899D08B9CEB3673274A23EED41CB5575C8896C8D3EF9 +9F2DA10F70DFAA9BC0356ECEC7CCBB9EDED943EB85F3998786CB1A305920B7C5 +0F7F154C0F22A6B53C186C3225BD58863FE1D9DF38FE913EF330CE80EFBBC43E +DEE10A0DC03F64F0E4CA387130D5783E8A1D74EC5E65D8691708D655B69B0D75 +7063B34BE04A4423C0514D6D7E8AC8A8CA198E5DDE9FE491A846BAC77C8CB95A +39BD4A352A12C62DF10F9D4EB04305EB2C683AC3B4A9EC143167C7A506DF61EA +AFBF31298EF5100910F62F31F50185F8000EAB4825599225DD33ECA9005C4CC2 +042016FB9C02418CFEFDE691DDDAF317A96F4AAFF639DF1EEAA31A84A5DEA1B0 +4540B756B0B4FCC4F51D80EF8CD0DA91E38D2FC1121054E9732A0A0ACE182624 +166722D9D6384AEEDCD7E6F3DC49987BA683180D8424ED60C600D143EC9B3803 +E12459BE9A3563AFBE340864EDE14D416EC3D3F4BD0D3261E4C3DDB32922D953 +3229BE070175C21FC6F94A9B0AE96AB31605BBAEE010D939EE89AB91738C8F45 +10CE2906877AFD2E5F39E7C45CE1454D1C167BA90C2CF192AC834A4D1605BD94 +6D9EFA985E106984CBB4ED442042586391FBF386F79999855B4812C437458063 +12660E29DA28D77760EDE77C45D84E758EF3D265D2AB232A7F63F86DC8DD3534 +01CFC76BEE8425B16131F483104ECBB582FC38DE857F05AC7D8FA2428962BA07 +2FF35FC1FE7EE7E2D1A6CE661CAAB28D906E17D9918648D16339B87792FDF8D3 +B04EFBB83861FF4610343298BE567E5A97B8E41911E88CCDB6710E29F24D1FAC +22F85455B4B17D6CCB61DE8E639E0667E46DCD004F5ADFC2F6CABA1B4180A25D +E36C1A57DA64335544DAC4F790634C28C10F6AC8DBA8B6B0143FB00E7E3273F7 +1D221F65291473CDFC71BB4F3C911DB6F5B02DD38A296934DCC471EA9DEF3941 +9861D6F9D72FA13168DF02CB8880043139329C14B0D93DB8752C4E006C8FAAAB +7434BF31F2EE305EEC12A2F8581D86A2F93A22C6A16E7255B84937A97541F875 +3A6737AEEAD8CC05C55278CD05A93FF79A573F08EE662D1451B7C29293FD3219 +FF1F07B5EDD449F95D802AE6EE9461525B57B47AD676226CB0AF3C6C0E23CA49 +8FE6744C36AA9A45F26B4E891691FFC7680B32B0F6C4422584579C7A13444C38 +4C9067787825B07042E63B9C6FCBDE652C60D5D8574423A43CCA948E5B638CA7 +813E94BB204CEE5BD7257B98D25F0207709974F33A9635621C3464137BE43708 +97921345C6FAE91B6E974413EE5F3AD54966FEC1930A04A06B170EC02D88C95E +74FC4791588B9C5E8325DBA166CD541AC0148BF212BA9B24171312DFA9D8D946 +B413C86FDEB625C874A94B986CA795379CD5B4061D2FE3C3A44355629714EE5A +3E6681C38B6C63557220661C4F7C6B38DD78B2D53021E9C3AAC3ECD21293590F +E10CB86944EDAB1FFE5380E71276C60EAB7E9F1DAF306CB780BFC491511FFF59 +EFCF82AF7044F013A1FDE387B201745FCC384A1744B16A299F59BCBAF2746733 +C66F9D61CACD3AFF06739F388BF17F8292B8D7CA97C74386C93517AD89CDD358 +18F35429A323958C0A528989A483DC1C8283F934AD2D560FAC2BC019A171E538 +8AE1FA57FBAB7E9DFCE6483A0FB077A3A9EF1B9A39AA6B40211BEC3A46F1FEA6 +11304E85DE80D20B8F155A2EE61B251535B10F4125F42E96F7E69CF3842F626E +A34211CD49F42E03C74C1847E4DAF520D1A63FE74CB64B9D8314B8D1EF27DA97 +E9FA4832346E86C1A47229298B3BBB52D079539970EFB2D13C85A1FDDB9DB567 +0FDF672B9F3D74BB0798233CDC7A5057B697A11FFEBAFCBDC096A3AD9FBEDC38 +8D8DDE21EE771251614E6540F835B394D80A2AEF21B41B6BFB1B762366DD8795 +96EE306285FCA61F798F7C5A42C6E8A030BA7EECB8EC0BD769645FA3CC20DE1A +9107BD487278F660E74259BAB36599164D75D76C85777BA55226FDAF8D0D5204 +0E030A10E035D32A32CCAB9F4C9D5C29ED4054CED2C59E5AC4177C736158B095 +E800D8FF594A7E58589188F31AE61C754621CF48BF115F9DC62DB1D2C8807075 +8F0955CEFA77F9E16A142D71DB3B36D27C78D824C85FD1B6E73566EC486937FE +85441BC81737AE4594EA4BA70404081783D86D7F782E996047C8C2333E1C00D5 +260BCB452CD4F41A18368E2450F45F77C849DBF780D527C972FF1CB1D90E2155 +B034450732E836A304C0C65A22DA2D3DC0DEFB51C62E5CF24A63F38CA9A7B725 +6CF94CD6F2DEBC79AFC90912E05169B17C27CC63FE88C586A3039B246F6DFBEA +C4DEAAEE8D94B91A3AE29A0F60470725430073E555AB6B69E97A1CECAF416959 +EA671A353EEB40353A74C4397056796C948CAD4E34AA5649843F549DFC47F07E +A46A2640A04E9E88F84803551A1858AD3C491CE4262EA7DE5CBC624CF9EDB79E +D7649BBEAE2207CB7EF264D13487BAE1C05B47BE48EF0A1E423D52D626969F19 +9BAF6C36A5F7ACA1EC5146751538C74BBC3A33408E950907D84A85745CB3C619 +30890699C822D7FA30E4CE63A4B53C442D9BE56A99AC2EDD02C799E611050018 +C6B95DFAA9355B146B1E3077C44DFFD62E1ADA32C5C21BAAA41D38C7782C1CF5 +10ED256CE14FF1576E8BCAC3DAB51D9FC8035628C1B503D16659B2B761BB63B5 +755C01509EE4433750EE5B0994E956B1567D5F1E9E0B7DB27681799299FEF9C8 +C2AD946019AFC351D190BFA2C1B801DB3536BE9721DF544D11F39EA4D9F1DEC3 +462E608F9CE48AB37F16A1874FE5F4AD980EBE76A345A50B2428C3DA1925ECC9 +DF68179939E4EF14C760B1EA2E4212BCE7C0CDA8B34CF2990637829E8E951ECC +0AFC95875DB4F44B7703547C1D3CED8227C3F7AE582111EBC86A8908515FE091 +2D12733064E9D215D4A4EB350DE11D3D3BBBF8AB4C628CDC2A8FB41FBFBC4048 +AF83E702287BFD3D16F6FFE56CE24008B735B517D364E7BA4B02300B594DA978 +0937CD3FFC89CECFAB77CE33651B05F18E56EAEC5779687619FC1878825B3776 +89AE6FBE36BC60341E2AB511079FE8C9CFC57029CA387E28E78382CB0F318B8D +3FBDF6F5D8C097BF895955BAE8591CE021CCC49976EACA720179B72B68EC6AA2 +427CA0A8808552F93676CD7156CC445787A052A784EA597E3E557B1141E32EA7 +9758E599D3AC3A4A33A7ED2282B39DEB413CF1E63555953037FC11D9774E8281 +E13DEE841B104551889CBBAFD08BA6485BD850957CC7D8355064C23CCFC09B86 +15A1A2666DB274D772064661AD58CCF8B04336371080E88695461B7E0526CE77 +0EB7596E6DBD17274E021441A6932317D5024AB0240C4944AAB762613A5DFC8D +BBAFCC8C2A09C204E0558F49B3B9044BEBC0987548D105028693DC68DBB0A9E6 +600C9045FF964A418772CF8D73808A59C278A9FE1825AF4EE6884E4E91216179 +05E79DD583FFD06888AFCFD95E0CFAAFE51737076845363AAA1E59E1EDAD9D6A +0B392522EE77BDDCB6D191C7B797D203FDCF2DCDA4B6D4B74EBC6372A48B13E6 +6D33C4973CABF2A3D8B91BD71421748308FA2147849025FBD2F1866908910C79 +59635A0615DEA01BA7890B3AAD778D109AB6A785FF83E8734FA6AC6F7ECC990D +6DC1108D7D15164E248C6D1F0BC962C52AD2777B96487CE582456B2BB1BC33C3 +3425403557E92A95DE74A982EA07396D0E7C5FF16C7BB1A54124A0DFC6FBFAF2 +DBCBC7A2E723EE5B661FC62C2C396A3E3341DFE5031DE0E15E5BFE6C8305C555 +728B93DDB0D2F998EB3D6E8526A25D77AFDB89149FDB6CBC03B80C71182E0393 +E451562E199E075C5311A3674F372E6F0F2DE8954F04429B27A448442F0CA5D5 +2404F4537FE01C9736A786163FDD429EEE672A60D52D5F58188549D9E9E5ED41 +6C25FF8E53A97D859B18F91025B5501E09638D04DBEF22AA1D160B9CD4C94876 +9EB9D8BB838455E647B8D4F4E5ADAC207E9C1F373C63B3987A07E0BEFE97EC54 +4E24C1C0B953F3DAC89D066DC66CFCD3AF8AB505E6559BB8E9664C0647EA2030 +65BB8F35D639EEFD9C0471BF83B8CE583C5288B12E164CCF57C31C326245A528 +E45943DB79E305DCA23A2EFB82D1C752C7499CA8A01A7ECF7BF6B287350609F0 +A2DC4FB958868D298978EB2FFDCDC4A0C8DCEF7066287EC7A53F7B350D5C37C4 +E7C92A0D8232006FE5C7E3C22EB590C93A4096104BDF5117AE70DE4EDE2EF87C +11602CB8D4C3AF679D17FD5167C1AB635AE508EE90B912656E9121BDC481E2AC +E7273B5576EF99038F2F07C7A23B5926DB6D9DEE504AB75DE45666AF661932EA +75AF60F39A6456EC731E53452B9BBDD951DF4E4FB7374B0F9371EAA6D4671432 +461357C0C60F46C22A1A2B643CCAFCE21C74ED943AF4F5BA2478860F56042F0D +F85BE9A9E810FB96E5A9D8A979CCFEFCBF1603F25AF1837A9191759387053011 +7CDF0BD12C3417EF376F8E3DF06B3C48DB995618F372DA8705C9D04297D1B832 +93C0316D8FAD1AA1F284BE4901E4B81079D76A018F871E3EA3B5BB46493652D2 +5F7BDEE050F252308FCE5FFE339AE2230C3F5C9A28B875B2BF2A915EB1E23F2B +C38B3A78F3E5DAC5B295BF326EE53B9BEA7D505F4CC01C6A8D06B90ABBFECF7C +E71CDD427000179311C9D3BC851E294F95BE11F2F85A6BA3C217EBBB22761BEE +D503CCB29BB09393917EB2F87567B4CEFC4024CD88761DBF9CEFBDCAACB1CDC2 +AD3EC0B833F79B10FF2D912BCDA6C65E957ACFAE5D63ED379FF131919BCCF1E5 +E88C26463F5B9587BCD7E153A12C696D8023B2E49A103C0C61560784A4FC0DC2 +9A075F00072064FFC2C341DB19D82E11EED2648C7F6CD06270F93F4A2F5F8B75 +858AD309A6D5E63B583A0E835D210F60FD71B9E159A8D639FE5E774D3754D41D +B4B495EC984DA4AB7B831D13EB891A9C93150F3F50FCBBCCF047879CD4CE8F0A +0D8C9A90B89F14ADA6644B83E6D0B0890BDC8BCDC5EE6DB85CE8FA5F02DCF259 +9DA572E0FBE9B2D9E2517667366B415441C6A1E56BBC5D0E6F88B2C03A17C2EF +B13A2166C34D3C4C7D17DB62BAF7FDC49FB301D1AE0524D87D96955A2B38782B +62AACDE5B43E8D6646DDEE92C2C7EE93E4D892594C1D1BC58DB5E503F9A6E1F8 +83165C19669F866924DCE4CDB53DF78E3A38177AB1507DA65916AF2A6F7CF34E +E327C51527BA6E8358094F9EBA9957914BF0195E58ABC869E79A2E68C2BAB04D +75267D48E998F36CCA9A94117D1187146355E5E65A15A3D9C123F9199352D5E8 +7AF96F0FD88C897A13A810DD3960B517462057C0463955471ADECC244B82A0D7 +A93F3AA163855DBF547F7824231630C255F50311CBC7A48273A5FF91722480F6 +782337A984344897E888C830DEB079EE3E7DA1312C95AD5E5078B63D1731102F +C928820255CE8742C2A4B412AB6D662E40C7A767D06C73AFFF8C6336053078D1 +7FCCAD175C7174016B054B3D09008D01D00D6D7FFBF6B39A053AF0181B718B90 +ABC6DB0070BBF8B26D51D46599D8C2DD46A6F4A033FCB04E9EA807D3F3E9C45D +99FDC21412065FC11E2C9A0108B61BBDB87C9FB92CC6D4D32B254A45E391051B +9A9D77F5B2AB5452AE72B97B458B02742D74B5A946A9B778F28492F3CC5F3524 +6645C9DC75BCC4FB2C994C86F91BCA6E3B20579C2219BFE0428668AED62D8470 +92FAD9574363420F7F118A93ECC35F6FC174C74C016B503AD35710EFCF4C5CF9 +02C7FD683D964E60A96FC687F611C496120255E3BD59EE81177B5AE8B6F69B41 +BDBDFA0FCC571214D1F0DEFC52F9E41FF24747D2909AB62FDC59B498A76FB399 +BF2B8F46AECA0FD74BA98994C540264997CC5615A0B601ADBE602E43ED5EFE81 +9468A132227B985905AB5E0C8146B860B8E4D4CD3B33816377E08410ED37E146 +803D54A10974EFD818ABE474DB1B187171D344AE88A717A333ECD8E45AB5FDCE +5E9F1DEF736B4B401C38C499FB8D374FA3BEC0931AB7A1AC2ED1CA55EE08D4D5 +84D4D75043CDDC6F11795AD6C2765DE8E46324A8E32568903AF16EB7F7D42D6F +9EB34675EDDB76BBC74B8C66D9EAF9923844EE39FC4F8F36D444BDCCB32D5987 +9E1A34023A8389C07A8A54BCFF045E57C596D9CBB7234F3D32CEF39A207C35C5 +2EC594BC6D6F4D421DC37320E387499BAF6FF135F251328367021C8D48392B80 +9CCE1B2FAD718580B126C50B243284A47C22D8F32C5F28F184E0D6A657EB6013 +9BC8D85309A05A9A9302A61B9A49E8CC329F7E54AEB59BE426CA133C792FAAA4 +C01FA639598C7B21A85E441636E19BC9CEA795158ECE11889F41D325BCD4EEBC +4AFEF80879C543CF28FE5E965E110C0322CFFF655A0C1D596A5ED2E2F831AD10 +28219C8C0B7902D50E09C2D0041A2934A08A995E9171709ACE5B14B308B6D3E5 +052A17FD842FA9ABCD527C53261FF5D874C5B805D1523FCFF4262F6E92112153 +213154DBCBAC2959B6E5676A1735C26E2D174368745A1C8ECC5919AE8236BF03 +CD207928040A8C5315B450948EA4D23B99F184137F464150D390E697E182B6CE +96ABEF0CB4125C8AD5D39081DE8A63FFC4F738FF4148E264BAC0F8890627DCE7 +33BAA239C09323BACBFED301A71131799FDA54B04DB83697F29AB1CCB8FA6E01 +DA5872D91E04392C1E635753DEA9C107357DB99D502CEDE64B65AAC691DFA7D6 +53D366EACCC105D0BF34A4B6439AEE68BE5861A9F2F8B553F836B73D0B49EC4B +3E2AA6A55A026FD2258DD2E17BE18ED3AE93168243710DEE4C351D3568E39A5C +DFA3ACE49BE65A86B2653BD63618B3BD1BD365BA7462140B4B9B2A81E0786410 +46ABF80BF6DBA2E07503107A82A7DBC0B05A3005DF475E1BCA6417866555174F +08D6E401CC5EF31D8E2F2E89231D374AAD3467594BA95798DC4BB19A15A98FD4 +D02EB96DEDE561B6A448F6772028022595A1C944D8EB4C9C0C04D3EBE1467157 +99D8C5C72AD625DCD92856C1D793373784060513E260B587F3DC364C484C36AA +07BEE82A0E0BBE6F80D3467F02FE6635F508A6EE90FD293E81CF99CB3E52FA0A +763DE6CC0114A74458F738FAD91A088C9D25976F6286C8E0D2DD61A71643FB69 +1415F21D1F6A95462F889DD443DEEF30D118FC756F917A5714C893CCDD7FE3A7 +57286E3A15D5E87931196D64A026DA4A4C907C38BF95BDA599DC7A4F1967746E +4473ABBE80A5DD49CEA25B2BB8A9DFFC3537A1F5D4477EBF142103787818E09A +E5D50417F82BA1C422B33BB66FC018C007987ACC6AAA798524FB776D7550E3DE +95B496B761D2B1EDB6B2BB0134A039D4BAAA83614B0058AEEF40A693D24AFE9E +7F97A02DBD8119651CE48E196A6F60043B34DC444DFE2ADC6E833E34E52B3455 +A2A035DD0BA864612EB104C0C0D5E83D631BA37F10A7AAD7F630C19C6E8F6AC0 +DDF3BD600808041AEA7CA46BC360F5DC1A8001FB2C962237E77ADFD7AE114290 +F18B5DBD7456F3FA921B36CB4A6E90AAD8D12B27CDFEA15A81A590C1F3988660 +BE432900B58B1CE7492672946CC32523CFDEA14777B4596330C7E93FE4C6E4C3 +139C7EF73A4863A2A76863438CB15A31019289896D48AF13DD320428271374CD +E901035EE605AB95C0033DD699D58B49129B0AB9C535E8CE5CE9F84389B3CBEF +33FEED3C1ED80371098ADAE53FC2B9A06515194632D184B8124C6BE8A25A5E16 +9F23EFC9D3568513DACA3A97D8030E10D0DB62A117F573443D78994B623D7D39 +0172E22566EED959B56B93A51AD64D9B36708881A2598C9422463D8BB16D5A78 +94FB7535DD5E3BA93E6D2006789586C2441831522B2A87620835926DCA369367 +F96E54DD0783CB5E0760E92B2119BF1EFB1B7CF18A70B87E5332CC6DFCF10CA3 +F62A22A8E4E6818FC045B1B0FB0EDEFB230BE1834CA846F7C5E099A4C54C5F65 +FA029ED16F0BC09AC2654C7A9B4114BE54DE04889A2EF322327817FBC8E6D0A6 +F5F115A28A2759CEDE0CDA907192854912F402C9CE5790512F3B4B85DF290C6F +964EEC7BA3A5D2AF19417660F9FABBACD29CD3F1D0112E40C23C02D8A906CCDB +2757C309D8B89B88C3D3967D4BFC45472BF2FC58E888956C503F2774EDBC8C00 +1E50E35497A0FA5131383AFB3CB8CC1DA2BD99C85AAF3A2346EA3DB89BC877B5 +D37832226452483339333B2E4EF87E4B2985916DE138BC548D06CF247FD3BBF9 +DC5BED8B1AB435814998EC910F71D300069C1EDED83E9346A85A3AEF295AF7D6 +06C98C6454415056C21395D6FE6D636A1F316BA3E3AC963F9064532090840548 +A62D1E3CAA038509C44B2762D363BA88C32EE1E82A65849278077875340644D3 +38E445E3BF798205E90D6C19501246A2A77B93A65A82C21F763F7FB4AAC73823 +FB377164F0E7683A8C143AE37F95D424C60C503640565ED52C9E79F720038392 +5AAF1075DA2D9648C691139F1531F212B9BA66085AF612C0A6FCCBC49AD9A1AC +ABD7BDE6998EE089283450DB280D71078671CE182F5C8D6B5BC6FD1EFA3D23FE +66C5FA9F47C81C84B81065B3AF067E617C2A49FA234EB71739D885EE2A088D60 +F95439492707E02658BD498EBBF56F0435955718607D56B524345DD34292879D +FB035E52B4E5C232771F6975285A56B6B3808C608B5408809069305E1DB194FE +33A29E71F16FDD2681288216A1A284919271D497D73E7F52A1A73788764063C9 +44BD46F1E6F60A2A1709A06D653336A7845898E65524ABB1DD3EEAD1554B68C7 +722AB41316562032D231946B27B2D809CB3AFEBB2D37B6BA50578A7F817B73FC +FABCB63DF361EF5C24A607CD352757EEB7FE6EDF7BD7C1C0671B67064BC272C1 +28F775A8012234BDF543AD5DFB86F64FDEB355F1D649AFBCF651BE1ED1DCA962 +EF1F3235005A3CD6DC0B78DB6CA65A0373E1893114D6D4E5A5EF1FA6BE38E9AD +AB6C62AB892E9AAD121AE50D5B185651FBA345909078FFE9FE7492EE182FC5C3 +3F9717CE10169438F0FFFC3A84A84FF562B8D2F825E305891758D6B7E096C298 +BD344F4BE443E423A0CE11E2428000032E06DEF85E3A5BCB9FFB8AE4687A539A +F6B24E35385B10758D3CB03B34020341C9FDA67403C2298AE94C70A18FDC8BBF +E7E0843F4BACE6D4F3A484B1C425084252E81A99414FE78175B23985846B1564 +D02B333BD8209D16F89BF12970EBF251F32CC45D0D59737AA3C416EA61B74D23 +75CD0040F8A289F1566CCA6B3B09ACC51AFD4BE9037483134687EE187C41E571 +EF828AF4827ADC11BE88B28A0CA4E38F27DCFD55873CED7381EB4ED80A99524C +165FC25B21A0D982C650927023B246A122426C45ED4A730B66F160851B24F703 +CCCA8BDFA289B0F957B87906EEA88F714497A11912D71355304483765ACF958B +3D114C33B1A78D3C2E667C7F12A3E345AD365CC31F8955AA214A4741E0AD8B06 +40BB42258A561A5404402E6DD847A49621D5EB06FFD366EB14EB05E6140567B6 +A3174BFBB7951F65248622426E41630FA9CE9782F77754CFF68E1D3BBDA2F8FF +D00D99D23CB38F14645776BA3EAA34992055677E2FB4DF057A823548FB0C52AC +8A9511048C13F0B50FB20ECD37743D56F55379353FA48DDFF43D1C712C74476C +20391932824690F5EFC14869AB68DD533FE00F382469C1CF841B1E3C91285E47 +CFD5B77615C6B710E9EEC208F90E27A363F41C4F0499935074B528682F33C1B3 +7AA5C2F16CBA2FC1E0F87A0AAA3DC8BF4A6FBB91CDBE978062BAA77CC4B41F57 +FFC2C9160AFF5DC1EFFF988ABB619D198CA98B2F9BBC97A34F86E0F7CC245AAD +91867351F98D6E93813BAD63F3557F1277F311B80E2E8DE6F16E34E0F5FF5FD4 +10B68D52F11DD15EE620C15C64CD8392072419F74F8AF6FF61AB288E2807CFC6 +6AC4603430B5424CE3F8DA182464DE9588169350908D368D15ECF34E90D8FE2B +85EF8FB0318A8CFB8EAAFB422EE66436DB534884A79348EDAF9A2AAB5DBC6B4D +224F6D0D41C718F86B83EB6807D3DF277BF391A95EFDDCFA4C2DD49E6FCE3A94 +E4C4CA7A8363A8610A5CA5B7B13BDF3E4B5E95940C84D3699C7DD8C69CE3BC8F +1F513D39C25406A42FBC0D4F7926F5074D750B7929BCCC74B2A5A8D9326EA944 +72768AD4DF13263D3D329FFCB2989A21A5BAE9C46EB0F28A5A5F2329F95797E4 +A6A291DCECB13244146B8A1180C029610DA9B5C5242046D5C3BAD2AC9686F236 +70B6B81AAF86F15D54AE46E75D39EE2548264452BC220416E57EBDEC45017949 +2DC6718A3D14B931F38A389BFB88B14334447EF414D803100C3916FDF4F0A8D7 +B68BE36F7B5AC9FEBB78162214DC349D6BA4F22D98A2FD90B9EF3A3038FB534D +D6EB70EEEF1CD91A0487E88B1C0227FA7D1BADFC30DF34FB81E35DEDA1306C10 +73CEBB33B7DA3C897752947CDED15C68243F7E1E9716D751B5CF68D32E9433EC +8317B6910DEDF297A1CFBF95C2FBB92EDA7CC2A5B853A5B3DBB1E2C869A13F8E +08FD2ECA621A75EFD69E2FE9CB5B10026901F535BF4E7F30C7A6AE3B00F55696 +72FA49ED6B7A28F31DB28D2DF9CA1121E34036C6227BC244A8F22A48F29B7F3C +6FD319F8D8C398BF6D1DAF886FA3023C4B88777F963E74AA0C55B6EC65A38431 +5E49F222F81AFD66DACA0F874E2FE897985C6C25347758A0D8608E6388D0EB1B +18FB22015E33B436CAF97804234749254718090DBD3C1801DB22823D0E172E45 +978F25643F19AB284BB5A9E7BB776B37107C1BAD20BEADAC0E373254B3ED740E +4D0A32A6D2E8677F28970A49609FCBD876D5B8667ABCE147754178FC558D24C7 +6FCD30FEF074372FB3FCE00DDB5B18A56300910F204C63E811985F5A3EBEC7F4 +7A654939C8C2FCD6B3EFF62720368FC1264335DFF72C3A9B0E2D7B48E457941F +5DA2170F5448D870487D127779BDA70EC0DB3F1867C24561DDDE4DFF123D8551 +280657FD211EFC9046FDFC083B03C04A7235EDFC207A00EFD54B962C94596101 +8CFD7E202167DF4DB18E58919A83AA00A2678C370AE5F17623FD28D5158B8542 +E5A28FFBC292BF1D2D236030187ED2838DC53B5E7E7536D898D88799418D9CAB +6C8C9EBAB0F089FFF4E2182AB7035FB6DC7A1DD60DD708728E65E7180CFD7B11 +1E5C3A1B59B424931EB0854E08A29AE3B8FA326BD2EDE7AD52CAB7BD80F2074B +0054D51693EB90200F8D80BA4E00BD079DD54E311625373FF739251160E44EC3 +6DA82F68B5F4A2B2CDFB8210F6577C22DC2B8800414F9F2ED2DEC8B5515D9D7E +9B11C9AD0101A0A5831C53AC007048D0DB8A377815595CF63B2F9B4AA6CD10AF +D6802D71A97035F1B3C253CCD06A931F5B6A1BB87C05CF18332783033FB6A09A +1E92D5A657DD5F95969AB7BFF0C1A213843B1C247392E2316F3E4E85A8DA8048 +F67CDBA7067FD19D3E6AE0268118AF722EE59FADE9624050D4DFDA25797C55D0 +2E2C4C345DCB184D0706B2B3326CE2875FB12AB338892AC5054B51DBA189B2D3 +780A6FE08E8E5A729C44D241FDD9074CF2869982E5ED9C80A77E57D90BED86D1 +A49DF3D189EB13D2B25B1C176680304FE6FBD3FCBF4D37DFEF135B5CA76DF4AE +34F56E08926B653B76AB1D769CED9E41A017B3C6F6AE2F5DB2228DB4B476C11D +05C67986BC0FE0BA77E1B57A2B0B6DE4BFF8DF20DD19DC52CAC77C9A457685C2 +3F255B5BEFB482136AF381FB2B52786A055F847141BC5292735A255AE3AFCCE2 +62248B00DC1BBBC9D87799A72691D56D737C9143EB92D779470BBFB4150E5B8E +7CB3DB69B383352211F2BBBF0362F1F654F351E58B4CC642BCF4726E3BBFC4F9 +EA7186583E117D73673905CBDD7B33127B3BE3F979031B6E0A858B205C4BD450 +46FB47FE7EE3F6662FB9D6AF3484032AACF368E23E16AB67AAEF5D21EABDF65D +8B4414B902EFFF9B67701B836D91C20D92B5C18D980342E9BD9C834A4266FF14 +DACEB9CDB91ADBC8377446B07192AB3401CFE6A35920ED5089720409E1951474 +C33B5F87E617EAE9FA1B7C315335042A614794895DB545BAADF0939746DE346E +08258E8481F9A02A854E3773394C58FA1130E59128A3D9B229AAC8FC0D7F029A +4C2354983CF6985A495983CCAD4B00C8B22F818E49122CA60F34434BC713ECE5 +27F7DE27339B9A46F0D9DE2A36056CE04B185760E8A43C4D61CDA9C9618010B3 +E6B7B3A033A872EC36B3E67CBE583F1897F406AE6E08AC02BFEDD4BBA87897F8 +BC3262A26AAB01EC30F482139EBD866859219D64F66D6755E26C2ACFE07A94FC +9D93C3E4761B8B9A37901611FA55FE882D9DF38787A488E9731057DE5DA081B7 +D3052817F5BDAD299734960179E370A954FC694EE1CCDB9221AB1CD47F5D8317 +ADF41385B22374FEB8697742F87E473E2D47DF10F793514C5CE04BE2C5C07984 +BF6D9A16778EBF7C9E2DE1AFCAF44E45E0F419E94042DFBE37677D0BDFCA47F9 +3D6B72642FD35B6568ED554D2CC8B4341F8FB81C33763C77EA401513125A5554 +4C091EAFAFAFA7C19CEC41FFF244F013D8C6298EE0B9EBB7932E14541B4BC8CC +C3F080415A8F016E2535780BA2FABB5753AFCBCB13DA8327317334D9E5605AFF +E696E2879992B8F01C19227B3B31E923C14499ACFF83B5D8B73B300593EABC9A +892C6A90B66A0C492953E53D75CC57F8D9B8BBB6E19994FD03140DC1C868B51D +BE73A61F7C685A3A9ACD538BF020C5363B1A146A83CB93E7B8637100DC6EAF1C +9B9422C4C0EBDC5181621AF1C3DF04F9F25730C40C3738D864F4089FF310B532 +AC3E34974D87DF814F62F18C9766F2FCC22F2E8E2D1345AD1031D25FA6E379AA +4AFD6923CC92B3DB7880A7DCD2125B9AC32731E3FA2C3DAC501C85993E3BFC6E +3CB069A860FB2BD2F47E9A9A8F5AA5D90926A7D5B1AFA4AE370C650C18287C6E +4340DE71CC7027B28E54F398EBE74B101ACF563C54DF227F5857E435E9B332B1 +A2CAB0E8D157F6BED371EA19CDBA98188697838808AB64F6AD8B8C0B611312A4 +C52284A1D3BB62649934F3AF83E8680C4298107A9BA4937BC5DFC6E02B38D840 +93798BE30797112D44C9AA9CF4E9437D11A8908D440743F16048B8F01E4DD644 +8437F01748A496F0E1E95F1BF0A8A68CC3EC5D5687E8AB253207702CB2FB20AC +7A98D2D9ABD7156A270285E95138E27431FF37807872075A8E4B81988D59AB9B +F4BA0E52D4B1D19047CBF5F66274B572A28BE387F4B580630F0C6199B63992DC +7C53B6E7B1CF6CCAF045CF09C8F7A0951921667A93C1493D749C2265ABD7F562 +F595D537479000E76F5821EFE62FD197113165DF4289D5E1CBE9B05625A5F995 +BB20409586D632BF2757C067AE77693E83A8921E04D3BAA94382B93A3E3693ED +CA5A6C71D0073B78371D58BA0D2F016A43350F00343D6BEB95B49B7226ADEE5E +BFBE8E2DEE5184187949A7CA9849127CA4E99CCDC1C550352D370567C62593CF +9DEA6F587EADAF2F04EE4F661D8FD7AE380827082C9AE060182AE0C63A3009E0 +E1BEF1550620A0E462A0B8918BF60E06B61D3E435B428D615304AC3023E83772 +C6B048A55AF204D70609174535E26D0E6B3A271D40AE1C2E5D73E0BF2ACB1C98 +FD29B84C316F7496A482095BA784958039B6B7D2E9BE4FCC3FF4AD97B3CF54BE +7BDE581049257BA31BC9AABE7ECAA5701B91820A36C62FF7573346B9B30976F0 +A43383030B52BAA6C11DC6C8B745414D41D4BDB61CB97F40BAD09BB4EB0D7209 +2CBE2F02E4D808AFBA930C0BB8C106C5E59C922B770648FF3A3687FE55BD4ACF +F0EF66BC4A2099BE15B16EB32ACF3A27497DA2E6142A2B9F13EA2A3A82EA7934 +627D3971EFA6AC61B42599CB1FA51AB0DD8F4F7998B3CB5E543CE620E159D1A9 +1B8121B319C0C3620C1355BD1F9F290174CD1D2AA05ADD70D60918BED9FA0A18 +BB918CE247F51AF1B246A6515D62796B98F4F84D0F10F7234C1E6CDC520C5561 +3C3D984560364932AA1AE0E2452FE7753916DC8B043F43EA00C2BFE47C868308 +F390F7450AA754830F10AC9FEE0F230FAE46DC5CB40CA7E2B6E5CC8B22D64BA2 +E82D011DE86FF52F012539ED02C4F58EF348976964AE729B949B77DF7ECEE7F3 +F51E4202E26E21DCE18DC0FB0D31EFCFB0C188A52699AB1F0DC1CE623258DF54 +B0332C84EEDA53BDF58809283A55C1B090503E2E1A0DA3E647832CF3231BB54D +0D6D6E4BB80425136FE1727EF3DC39205D1079C6414BB18C87AD7D3B445FADD1 +ABFE8BE5E9B857942BA11EAA62316CD74848CC89E92D8697F20486F55EAB7468 +FA49D3687C78B8C1A65C6D1D28860779F86A4068427E4BA5D8D5D4035B6FCA10 +363AC21D2D9FA6CF465327CC19350184EB823B37AF8BF7501228FA813D9F022F +2FC12A96865C7AD4E799760C395A3FE61B5BA1369D12B045A8457FC32BB3CE24 +2EE58564A0EA57A09F0EDC7223DB08C10951D4CC603E0F71859C4F05312FC832 +5A2E34621E31787B0C9C762427803B6DD882EC59B545AB3CD8EE4700BF7E1834 +C9431827E3C2A98DB9D2DD1E525EF0387BECA6CA7FA349040509E0C4D552BD3D +DF1EA3E3B35C0BC7079A2C2ABE6C0DAE9EBEED559B413E34461642640A640244 +A10E8F7A82506DB94CF83D2D44754FA3C2160821A7AD460762CDDF64D0960980 +FC341EC9ACA3BFCA0600665311BAA75675E1D99CB2F24AC2DE674F06C03C6825 +6B37946C533EB12A38FC2B31C52A60CBBB09B41BE98646966A43F0AF2402F4AA +57C0361DB95B1CCA33E4DF4E2EC2B42BF6DD85988CDA7E05BE6D949404DC878A +6B3B926A3A7ABDCB84836DEFBF5CAAF9EBD136B7CBC274729C142AA96FA6F20A +12010DBEE9AE0F53D568358ABAAA78477C9553F6C499188BCF09F0DDA2153035 +2A47445EEC484F2A6BECB882E2CF121A04BAFA1A96FFED21ABF2903EBCE81DE7 +DFE2787FCE858FAD5A9DC9F6BB6C520715C942D2A79D8EC549108474E00AF2D4 +D466F695FF681F548F2829868172F14950E42CC66F826A3A6924A889C7AD044D +DA06BDB19B3A49E60CBE7E9392DC77D06DC6600FC191717833206EBC349E3C64 +AD0A7A3AA8EFB80C40A3B1CD93FBECA377367D539C0A0E91E2E6932BA2F50840 +1FCB806459D2B4A164F7CA0FDADB88D91A4C3EA388FF62A402155A0E16B03435 +F678283A1F28A5035804D3AE65019F31CB048D95BE60A97A6494F32BA9E17941 +596545162A04FF0171A36F277F49DE998A3CBEB8F8C598AA96308CEF78ABB2C9 +D8F3729FFCC82D8F529F017AE00AE9F8E5B02C8C1C687BC945059D72720C9716 +9DD15F79C992F558874E9DA253B01B26F75F9F0ADB384B919F5A8427457B2EE9 +7CBBC543066CB01F02276F0FA20A12FE9CE7E69DF74BB456A417588C22F82CD3 +8AE7913A959E7D27B759C94D67FC55BC4D1FCFE739C50E5509B6F272B174A7AF +688A45DDF72B398B6B41A3D0BD3820791C943656C77FA49AE2447079BB4A61B3 +397CE8F180621778693642D8493D2A3A1F2C54D475643671B1AA972F87902C62 +8EA53B3EC372FFAE46CDA4DD79243DF892B2B49A3238028F41FDF9A1D904661A +5C89806C6E564789443F774A0D8F39D1925367747E62FF8F69279157D18DF644 +A49318E7BD4F836ED366963BD57A5F704A55795567F23D2C1B07975A82B76EED +75ADCA889839536193CDE285933BB2495252D7B33C438D28349F30D71E5B9910 +BBBFAA5D5F894E02EBB4F9076179115E5C082B34EED18535304B12ACAF3A5D77 +C10AAACB24BF7CD17ADC52666EE8D730EBDF4659EA89EA088C1CB7D4CA4CED36 +8A99AED7F997CE967808A477315F4919506B28C71805BB5AD4C797F5F98C81B5 +3BD861F9F57D65662034C1D4E88F23A8092BB709FCF1D2F481534A4BBA20A18C +6BF85598FDF6480AEC0989533CD11BD25DF8C28ED16E6E8F75B91CCB41400602 +DB164070B89F38B4FAD6867886DF305D45B8FD57C72489096E0CC2153D26AE41 +7498546C6964461FD455441EF6BE1AE922D0E2A62253067BEBB65E926AE232EB +D76AA7976EC599E9835E21E1D9EDABC53081E80F7F1B338F5A5F7D4E619FD6C8 +2CDD33A1299C5DB13E7F5BB3765BE54EF46A2A5E4DB5A00D30609A085920C7EB +68DE604375D37EB9A0622783F2332E6FBB4262D268B79F5E939A99572214F969 +C63AF218A2C6AD6180E819E880D9A78B0128E93E004B6510769015A724F64DF8 +0E37A8DA8E541E836CFA5EFF5692585AE779045D6D4E2EDC8580502A5557AA7C +7C21EB7DD58225EF9676F2134E0B1D6038CD9CC41AA0BFE88DB3E2F1C8360576 +3FF3557F29EEE84D0D14DFA2801DD9E8BC3AB5DCBBBFEC020FAB62671845574D +46C4BCF1455888C25EC9DCE45EA37E89DC6CF152503F9D118B9280A89C8A0C29 +5E83F0DA2851A04DEC6AB0AF04B0EC40D17470605A874778D089F5150A19DC33 +E29CD339F738111CAD30E1C542749C2CF8C23AF56212429CEC5F369D8D7EF956 +5E3B00E83062875E4CBB17185D672241E2CE4B0E5CDAF8820F8B3D0B999CA50C +995EE9678A23B8E00AD23D18482C30DE5425384E2F7E68A8D7A1FB279B9B0502 +D6C40FF8DF5137E9AC0FE1300EA255AE4D6B39AEED6F9E15711AF84C1E913D79 +8F3A0095B43C875CC40262D707A05BFBAFABCBAB5071834CAA3678C5FF44BD45 +6E11A024FA94D01981BE7AA5FB84450F7052E60006BA5CBCF8E11D7C859B464B +98FF90852E1B3AA5BE061C3A827B015EF5C7289C4D0D291B5BCA7E532F57ED10 +48075D98290BAC772D84B07B1F7502B4DB59BF49EEE890EE61DDA21CFFDE7220 +AEADC068CD3936952CC4735D59EE4747DB9E4DC5AED7F8B096B96D94FF5504B7 +503CC1545182BDFF265410169208710DB4B7AAC094271076F36B90BB64202084 +603747B336927227B88B4E036C6E359FD01838625A62F8D790C782A738D11AC9 +624F0D4E1C3958B7FB28833B83CC9F54FF98EFC2D10674171B50335BFEFDB342 +AD1344F973335E8F8AB6D483A8C75BC8B33DB9C49506DA009813979E6C9F5BF0 +1885290C2B7F622EAD2B998CCCA6FD5818B6F9596A8087C73D95DBB1ECC3F414 +8B2807A89C2734B2740E518A59ADC20ECCF98CE1C9803855A750C180B6E2B354 +80D8ACD8F95FE36C1218E851258DDA90704E43F4366EC0D1A519A8685078CD28 +B258F3DD351EA10519F0383F0A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1240,25 +2440,40 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMSL10 -%!PS-AdobeFont-1.1: CMSL10 1.0 -%%CreationDate: 1991 Aug 20 16:40:20 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMSL10 003.002 +%%Title: CMSL10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSL10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup +/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSL10 def +/FontBBox {-62 -250 1123 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMSL10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put @@ -1300,248 +2515,436 @@ dup 89 /Y put dup 90 /Z put readonly def -/FontBBox{-62 -250 1123 750}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 -08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C -30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF -C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A -BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 -5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D -43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 -374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 -DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 -B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 -63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B -89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A -5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 -C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 -7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B -EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 -4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 -7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 -30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 -2E080C10DE923C1F7BD11CA700DA95F7E94C4C77EB24EFB7D5DD39CF43896343 -AD32237117AD4B4C24EF2B9AAB4228720C9F9EDA61ECC327D71641E9657DB045 -3E35C6ED9AFD4B88FBBC287F2B08E20CD064866D01062364E81E3594D85A3216 -396597A1DFC0BE35873C5BF3B12F115AE64354DE66EACD29A904A98FB23A530A -64D6DBD4198DF302D6EC7460A65E40609374E2031E0A3E8A3CB33C9823F1CEDA -6857069DCB4384BD963FE143AB8C46C2A6953B5EE8CA955E084517BDEB8A6EAE -7004A47347A65802F42FB1C3E2BCDFEED75859F600C521207B1F12360D8B5B5E -BCDDD9A8B43BE2886777EAB5A7006AB74FE08677A20579E5E0B6B949759F8346 -347F3AF2C105AF9A10341270B338AB4FDC2288B79D98A54F8457205DF24ED632 -B28F3773A7D9B85113CB50A9C472C537EC2F2AEC0243B6211664D78DE60EB3C9 -717285D76DD931E6BFC44864BFC7F99BFDB8A2954BF0C5712F21B490CD7E416F -12EBFE13341161A9053FF78435759B60B0F54888463C4B456CBAC7490988317F -17CCF703B1298BFF7B8F1002A86171BD2B7E9D8C4E20D426C132E7A9A1020653 -B82A9B932ADB1C912AB90997600AF5D56DBCE887D79EB994466A78D9040C2034 -1E537DA15822B32E17DA808628519B5D964B961125D6CE8158FD72D84EC1021C -68FB5F28CCC9FC14CA321D290B9A2F8A9196B06F787DC618E6C1957AE2DD8C3F -C2D2BE2A46B8A2CB9BA13255AA74ECFAAB942328B176D6E13C3810CF28B976BA -58E89F16B00B2BE618A07955CC9C46A95F5A07FB240D95452CE799C8709D45A1 -85994D7BAB6792B58694594B881C240F3C36129EFBFA4AC5B5074E390AB2E39F -CE9E366EA4E95A5DFF8CA2E144E2F0050F512414FBDA7A7EA24D2804D22FAA04 -C2261EE07DD605953453B94243250098753EC7FAF186A2BB5FD481DE92D3A6B1 -E03DCF5C2E2EB80A30D0569ED52550B5ACB2BBF67A86D4F4E65D868B2178AC94 -14C344582F4ADB60E79ED161C0B7DB7CC6FF8C391FC1B2A290B33DEAB127C200 -C309335A5601E10DA4BE03730AF8297EF872B08C54110804CE0FAD959F416B9D -5E13E390C820F540C109F6D0F71AF41B0587CA7450810019F8CAEC40CFC3C617 -5D0163AAAF368C1DDC966CAE0BC65A31083D01CA513CAA2A5D3FDD301A557CAD -148344C2463CD950F033DF4686BC452D6206760EDB2EB00026F5318440AC8795 -D1F9C0595F392BC030B70806C8FEE3DE6C140547CA3CAE9B4B3F1663CFDB5519 -6F2790055E57B004E48FDCEC080F8C8417FCB849E34D5C85CDE82D435089956A -C0F3E924EB2C4328CBFDA7D115BDBC58716D98B4F49A6F2E841AD8B31F2148D1 -34A68D8E23ED7AF5D891A520ADE49714ACD727EE708BCB6668939DCE322AF08E -53F071980E0077FC9BA5A10B3BF911664F61327233022B59E72F38B2A64E90AA -C858FEFC4476C42C6398128D10F889CB7E0B96E4D13EFE60CD99998388CCB554 -C7561FCCE0BC98152D9E4FB1D7AB69A5BBB87CE684CB2795F90A682210E75F9A -539CADFF715672E0122236E42A8F54DD833D4F99E672B390CB63849D911943E4 -CB0C6C9693751380E7ED446DADB9C7CD98E042FEA6E76E473AB981D8A5CED403 -9A06577BF4960204938151DACE2CB21BA653A580DC8E57500B172839CBDE3751 -8A48345DD78508B4D5B35083973E026272994D3D58C6BC0F505BFCF708388ECA -514F0DB510FF93CF4673EF0A19A89B0E08F3235BABE22638A843CD1B92DC72F6 -7EF613DCA9053AE8177BF3650C44CCCE8F1B7CCE6EE269F54F8857B5576BA1D7 -8403538A00B1675276C38CD38CBC7B73906FAA9A34DE35A9F03CE84A0E60B499 -CFBA23F6C2EB6580B07EF12D68446359FF50E039E0AC2186499E9B589B6DD483 -0D432890F26241863A182314369ABE41338B2883A7CCA07439FE96465A5DE153 -490D3DDFEC94DFE203CA50520AB3553F6FF5630404C2A2BCA0E65935210CFDDD -433842A96E7646942824D43D0F9F5DDA9195850737EDE2D65B769292D5427023 -AEB225160606F8D821F08AB9B33E8C30D492E1C57A3259B1CFC1C56C5747EFE4 -792D365BD95A08758383C496F6D2729EDD5297E8C1571C2711F65FD6D6BA0126 -BCC6FCADF50C3075B9339D9194E79A4377D728EFD1E597635425407FD3BF22E1 -062866AC4580ED0DCE3329BD884F5E022385FB0D020CAD3ACBB9B0F696C4C911 -8C26C714194A606A95441101F427247208E296212B4FDF1E68CD054122C64CD6 -C0CD1EE077F2630FC30DA75EA8C3DEB388418C004557EBE97A136308B2E8F079 -2A225D5684449EC17A1A288265CDC0A0FAE05DF0F03AC4C61B13C2AF9C5AEB97 -4E63BB904FC564A28601A9F79E43155F3560A67B2B49EBDB1399962A2C0F55ED -73FC547D024FE86F65FE2AB8EE5B65377F9458077B0C6D31BE033B258B87E1DE -2C9646601F49B17A69341E8064F6DF881046488C2FA69AA0F9BD635057256127 -C4DC77D9D71C895D3040F9E6EF7653BE1F904978749D5F98F531C5564FE02F4D -000DB6DF12C17EB6B9C13726B0DD1D8A23F5CA8B984A350DE453F808963140E4 -3248089231E94E9B298DC62B46610176ECF3B8A1C77064CA3E90480C27FB8B01 -5E06A2CC70485242DE5CAD12DBE8037433E39E978DCA6D59923C557FDEBCBAFA -48B435C528845F0B7BEED2323CB3622C19816F2AAD6BC7027E36BE571A1C8FF9 -F2090A806CCA9B4A869E5E15EB363C608EDFD82C88A11E6644978790A0AD0647 -A786BDC3B6F0531B1D5F01AD551C3C759EFAF72E146CC7BB125ACD1DD6197DC5 -2B3AAA053519F55E433569CEECBA8009C20B4AAFDE97B8EA362C8639ADB0F771 -0D7AFD709E4E16C1CCAC746A2307505A462F77B1B977F4EF3BC32CD87968D463 -C7B02975D3269F1E3AB3CB1565CBE061F928AB2943B43408891B9D3C6FF864B8 -FD69D33E79951101FACE7C635F8B2BD3F45C27F4E2F119C969F552EC2C5D047D -EC3D0C212AA56F51240DB8861DF7398C3897B8DD8F1B2400FB49197AED7803AA -FC07426EF806A7CB2DD05B8978996754E72BD2A3078E578191221EC40C71F050 -79257CA1E7B0EAACB2C0DEEF23C4B2BCA93AF1BB58D94BCA90BC12A50FF9FC32 -253C51DC821ED1FA42318788342A8C1812EB45E1A1AA66D9CCFE0D7A107638CD -EFB007C6A6BE3D58B81AA688D787F7D0553677EFE62A3E59C2874A88D5719E8F -9F1E12B507D39FF42589C1475DC5F0974B423DB8DBCBA2C04075518EF5CD747D -C582F0DEFE4F674617DE189EF2030FB38194C08D3FF6D0CC1969494D86A74342 -337F5A3EAB685175FCF927B27E00F69A3F0B5B65E6FCB9C310ABBD731CA8D647 -F87D8B2BAC0D46E4CB24290D064B536CC0FEE46BE2E0982DC832F17A8668A78D -313F9943C5CE466123BC3B80122B69278A3B61FD4C5ACEFFA8B62EB6A1DA2AEC -7A7FB0D4B1A5D3B59235430FA156F45CA682AD86F3FF33D94C0867AD1E1D7AD8 -7439A4E3ABE919C6E3DE041175E0E3A1F2A878CF7144ADD7091DC52E5BE98830 -0AB8869740D57C6013C92CF23FE175EBD5C26330CA8B83F1B3EA50228085651E -64F36D1E8B1FEC84FE96CD2BC8AF45198C9CD8388301B1BAE9926BD8A014CEAC -3F8D5AA5C6DD2232A3F2FEB58E86F2835FB055ABA8567A3E53D0D7DD404E0D99 -7F2D19678CF28BBC35AFDD80DA0F1F47060CBCEA4EC5358FA8B000C570169AA7 -6718FF6DD3EA7622AB8725FD764C2EC14E2DCDA0548EB94981931C0A2FBFE083 -37D342A73ADF7BD3282E25390EA45D5AE7052C058AD6780ED90AA5007669AD9D -839B78DBC708D312C5E109E7756AE6D7D6BB2191FE1B6EC56B0721E6A53C8CB1 -6519FB1F37A8F38EC33E4A5766672E4785475A0F8431CEE6D66FDFA4680BCB28 -4EFAAC29A37BC21D9B884F508738D5F0225ABCDF34CEBD4D173321E328F877E8 -590DA7057B8EC485BC92A14DFAA31A63A6244D1AF09F29F0E36C6F9CFF260EED -10CC0D2730237B4C7D32BFDD509B6E3502A463284271A3991982887CF56DD662 -0654E725CE1642E0816092D6EA59CB60244DE99E733C2C8E990EF76B70B20B00 -734092F47103AE3ADD001D19F588546D8F9E8405290CA23BB3D3FA81F034EE89 -EEC731F922E6F28BBF12798A0A4D6856DC7D1987829310C32CB81B5F85B92FA4 -3DBA34BD1950E4E4ADD08B54F12F923A36195790A7D91447E91C75DB1D17F351 -D2FE11A9158534ADF9D06E2CA4BC2F11E9914AE70550D52C5667DE9DCDDEEF24 -E57C9F372DE435F3FFBB3BD498BD0B56B1B53534CE9F74BDF113E06268AA1050 -CC6D925F17CE2F7AF499C5DA843EFE205E640079F47F5B5BA0F8FA27FB30DBBC -3D3F95DE3D72DA6E726F7D599AB903EA90506732D051B5541C5952D522F354EB -F8B4E8C34660F9A53F9299DABF9C0CB5EE6F0685E522042814F58A0C5B54E0CE -58BB142FF89520E7DCD0321598AEEBB393008EFC4774E2B3BAA16C714BA68DE0 -C8814BDE1B37E87B1F7D4E8177A23C793F8D3F6CBC6833848CCC0885D01F20C2 -479E8F80CD07715EDB2BA7139837DB3E090F2FF71A66016E6805C6CACB18BA97 -035C6F33D8CB3CEB57D55B07AB10FBD469B14933299737F2535C97643662868E -41B46920C640A039A4DCE141371BCA56E66A2A6C0FF74A4CF52A851291B7B674 -8B7B676307320B1DE482A28741FE51E8FCCCB79DF636DDD2CCD73F2B46C29C2B -6B32C6C58AD847A41486323E5B75AB58BCF81FAB2E7D794191D6C66F1DD1F742 -6B0D0356D9460AE3287B98D3613E576238C10B6D18D4FC4FF25ED3A7A85EEDD7 -5FACEAB91FB2F0E6ABB6499AE02C3B1E6D2032BDF5E1ACC575620FD8199058DD -499B758C1B5C0B69F930F3A4C73E2E363168FD7E03352DBAA3FAEB32B29C34EB -7DB8B049FE0C20AE7B36DA2F783F8AF72CFBDFC698CEC9362FB188DE13CF08B4 -830993A117A1F06996B000787DDFBEDA484266BF6956FB0B27CF5613CF11DF1C -2BB3677E8CD75742BE2DF91F646817E1EC1F60EE24AC8B116CA297F57CF6317D -0F098301800B7664C0C19D12BC6C85688F105D3C91F18C6166EB9E586980FD40 -1928B4190E3DFCFB858DCFB0B8A536D14B9AF13BA62BD71969E9141ADEEDAB35 -1DA0931BF97D7749C4F93577D4DFFE52B373D4E88D85BE4F9E87B858AB32C26F -D4417FCA56EA2EBD9C96D3596D09781E09AFFFB1B4441293EA965FE8F78487A0 -5B327A789E1104D30C62248A62660C3F5710E0DE61F6F5DF848507F1CB7DCCDA -5F4D645939ABBAE1472F2704FEBF7AE27D7075946A02E322D43DB7A48F75A467 -5E081127E8CC6C1F4E674A6A8883E67BF4CD67DC016F0734DB7D2D1CA01FCEE6 -DD0B05A18A0FE8D678524A936B4AC20E512606DC99F412B589DE60841A0B67D0 -82F5F8202C1C561A60CD6779FB9DB36D5C210973BC6460EF7A01271CDB1F1D63 -FADD31E847C3B1EB0B9D4803A59CF6101D2178B0C68660E5078DCE5079FCCEEE -1DBE1E9FB0ACC7C973CD013E06A8D0D99B73E863987676E852F08756EE0DC548 -D2ACE7C12532CF8A53253722C0AC57FAA8E9B95916E30B46A8481C6607CC8979 -012E32098D7BF25586677CF9349456D708D37D676AB9E72877A4AA616389EACC -D4568F515BFDA5F56938455FD44F42AED19E9933930F0BE06B999D82C9A1A37E -BBB23B6F155C8DF5CD9374D76DE34F099B42DD6DE794BF68684DB697EA5ACDED -49880D90DBEC3E5E2F5EC08F1EA04B29174D918F6DA252FDF531D7873BF74871 -224BCB8A5AD6D87583AEEB673FB02EADFE76CFB7D08ADD021FC30DDE27E77D7F -50F3B5D09196AB64CE919D4E991D84D1D583763D5ED14EF6B106399908DBAED0 -D3900D1E15205C0F4B5AFF9104926FEAF219FEB0690552827DC496C10556441F -60FB15A6D64B52B2F84C6E49DFDF59816D67553AD81ED5573B000FDD6519864D -C384B3D60EEF2B1BB5C1141764AD6807DBF37BE031D670AF8632BE22A7076AA9 -99555DE31320B458C792EBD69279F58EC7317B1A52D0E51E950D76FB2C254C11 -CF91B8EB98EA650ACCE188585E642D17A211DA2574E509EB4E87EBFE313CBFDE -51F501C45B182D75EBFEA3EC9B95691E097E46D792BC095C6B0BD266B097BAB7 -9B8ED5797C17FDDB538AA00DB25482823B875CCD6E5EE55A76FCECAFFE8631B5 -3E4C3E9EC1E5408A2A2010FF96502D1CB940350524C797A89A5FF8E6AB47E4D2 -80BBE24B89EC689BFB00B9C5B469620DBB2F0281B757FF3AD2E84EFD0CA3D456 -A481978D788B40C8EF363A41B2C85E0AE198216E29A17D67D0FB19919879EA31 -57B62FA6123AC99A36840C6432895DC4528BE0D2FB5FE4F24F5DE3DFC5CE5E57 -CA4BE5EC998712BE30C680B8DD1F730CED756221598A0A8E5C448800491D8907 -A80C58E0D78D4A53C7B651177453802785A39C887AD73E87908D1E6AF244C67A -9A5029E17CA9F1BAFCC5802E842C33B39275F046C809F2AC427279361B3FCA39 -154E1175EFDB43DCD748DC7ABC240C8AED3F4FD78FF4C7AA684AADCEDC564AED -B35CF787921E74B51F4BAF2A8EC4BB2C3A78D2CD697BBAF16A14236BF7607F81 -6093A211924ECEBC1AA68511F7D9963DEC9689E801CA25DB41B89782A6471A62 -92965E950E21D5E41CE5496D95553FE6B9BDD94424914A3DA9F878A28BCF77B3 -BDA77E647D03250DFF74A2D17CD59BCC2763171F0EFA759C453A435F0AFC814E -D64E3EDD354A334150402AC48A6F84693B2C10E91C67537B45A5308502E96460 -871481EB917739EB412DC4262012D9ADED07CA03BABCACDD04A6C3A87F4938CD -6EE57009BB556DBCAA1E208D1B2C03F01E47EC0826C99C8A8DFB89212193E8A0 -2B2865539F8B7888664DE8CD3E5A193E6320EE7E111EF5A3EB73DF7ED921E4E7 -A26B1B1D18D92D78858086F7133DF3ECC8A80E499C576DAFFA25DA530769829D -FC01632F7E18C5F481DB0006621F7DD4320ACEF939AEF57A41A11E6BF8A183DC -6B2380A390E5F3568AAA53ED30292C6B28EC7EC45C17F471229E37FB8C1E5582 -B480FA1B647B69280035A0823C512F4AA0286201B2C9B7CA85D5FA65648F1479 -C86882D06BAFC16E0BE7EF0F4E16FBC4ADED7F49A2DCC9E151E26F1502748B2C -0BC4FECC8B11398034491060133041AF08BF8EF5B1103852F3834F6DD659494D -4AFD896D3E85560664B0F1F031ADACC315BC6140CF38668BBDEC82C202890144 -64BB345B4866F14CABC63D744F3E158AEEB004AC1A550502C2AD5F9595170EC0 -BE4A0A8D1232E0DEDA7F829B0D1A599BAD2007F9111EC24F1E08022168C2C34A -B1DBC6A844531D7A8D21731C042A7B380A1FB1D6B82E6EA341B123F8CC078324 -95A5049CC0C46392EB9116A03FE0F1B6168D272D96D8281A1527CA80A16A7449 -F31C1948E9D6A0E6550B686D985786CB6AC7B58DB428755875CFAE0572D2FD6F -7AA794CEC2AF0B7099AFC1DA5B3ABB479A7530B8EB9BCE9688BCE0276BA736BA -E88737ACD9E781828D687114ED67DCAFD4E7404C7C0E924A9141CC27692BEBE9 -5E8660B935A6F18F321E0AFA5B606F67A4D8CDDE5B424E504D52B2CB8E831A5D -F77DCCA96FC7D75E24F2D44D897FBBC3E35C98EFC52875E149E2C583AF6C10CA -BEDDD89A099F97D70AD5CA26C0CCF9E65352819C2FA1174C157E69D48AB817FC -007ED04651DDEB2FF2D8D7D405B401DAEBCE6151353441860A41731CE520F75F -6FA578EAFE5631925738B325F8AF2B0E15A5B84E9E1E203119ADF574989F3B33 -84404AF0FF3EF287A226E8C9877DAAFB358E5F1A5F5420767C0B6836FFE901F7 -CD1DF68CA5778B4649759E1F3F9FB5C5748E295ACD163EBF1EFB64785625ECB7 -A5060407B009B0CBEF3FF5935CB10233BD332B73F9C69AF4ADF799CFA08EF25C -A6CCCA840FAEBBC99C8639A75667BF652CF3FC25542FA6D873AEDC7AE369BB1E -C15BEB51ACB928C61F97E45559FDC572003885B999B4B91F66459BA96082C763 -A9F7A5C7C7F27B9CFAE1E80ADA4570300158A71016DA3600579434AF7F35AE65 -8B267F947E13216E437A98485CCBC940389CFDB05BA3E663DACF32F21978FDB5 -18528E1CB7AE189E007FA0778D62B9D05592E25559747E578C17156BB507D6DF -4B4198BED9F33ABD6E93F7D084DB0824F0C351F8D820BD9530CBC821CBDB276A -8C58D133DB076D9BB5689DCA2257FBC741C5F59AECB0BAFF81E0B899291B6F72 -5CAF3CE6A729BABE19AD5E6C31A790ACE92E952E82638B6AE9C0F61FF3A30003 -22F75DD843E2317CBA51FEC548525A4C8EDE18D2FEA0F6D8FC00B33E44938D2E -88663593AC4D1652680D51F1DACC46413C43902F77790B1C2E266293EBFB9C78 -833A274EDBF9BC80D19212D2635532B935766D0006697A7EC775AA3657152D72 -53540266F89330E3E19671E73E4BBB5F9A716EB13CD23FEC5B5358C7E004F101 -6100FEBFBE124B765BE98D24BF2E89AAD4A27C75A3549CD3907BD582E577B1C9 -1543C1AA7625E5AC9AFFCA8BEB637E5EA8C2BEAA30C8A7741D954422171D5086 -07E87A41204D0CCBD3A22E2D5184764921F19ED5981C52B539B06EDFF7A3EC02 -DF85F0132F038BE6CA49DB6A4F5A17CD5FA0AEC05478BE9605A3F7BA1159A76F -03A38668E6F2C72AA7E4DDE730641216CF7B9A61BFEA6EF937A54F2A2962A320 -9498FD339342ECD80A0FB71DE820AE65B80A5B7A8E9196D2530B8DEB0A1FB8C7 -15EAAD601F6836A6C8C0605BBB6A336A523A6CAF13B064D04F48F002B579266A -A46A47426ADB627668386804EB7AA726E1D65249F6440447BEC02306368C6B9B -0C736C4E5BD2362B7C9F0F7540B5DEBF391141BAE24EE7995303C1967B3DA371 -E0E052DB1D5259725163265BDFEAD1798D71912B4C7AE63BA1CEF08FB8A15E3A -25D67D9E3A70A040AFC254086D02FCDA5BCC1EF37450BA967EA9AA5C952AB4F2 -64F3D7487617B261CB8DDA5AD34429E3474A5C12D7DABD9F7053B22935909AE7 -D1D554D0C24436476ED68B1D209DD7AA80A6A547E045178D1763D596A5CA7AC6 -4E38DFD247A13D54EE7F2FF5A3442EDDF7F4894CA301A05ADD6E9C5020076497 -F2BF7F15BC210DFCE1A8DB7DB5ECA33EC5A7D635C089620177BD3E1F981D9CBA -B1299C0CFB41F53253A367F7B05C110C3702C570EE29503EFCAB28EAE54FC81C -922A0A80EC12E1A5D7C191603CCEB1FC7F41B06F2D91DADB13716D2D1F6BBB2F -927AB0F59DEA31F198D5422989AF7AE03D5F4AEF146323F8977F79540DC4200A -89615E702B72127B7FAFEA8152B53EA8ED9BE3BE7EE935B61ABD0B9C3DFE96E5 -B1A47626E4B62D96A9AEA785524FE73F68FA218DD58918D55E8338000DF0F5AC -6ECC8E6ED15AF45B45E74AED4F06C132E8076E21C79F6D313494BA23EAC84742 -2F778B9948CAD5BA1D589A3EA21516EC56A5E40D4CC0A5919180C2736D6570CC -FC03087BB9333C11310C8E5D814CB9AE8EC2D2973437F8B80C8CF48930E228B1 -4B35BFF4A7423DFD51D881829038D15AA5E3AC6AB976D3549CCBBD59034F1E7B -A539B629EB8C2FD450677510A7056C1D6184C20AE04B8BE7525526C9B19BC64B -1B3F6BFFB675B7D218D58C8D87F4EB1A28082A923D404CC58859AE55F0F8F433 -3063E52630170B2CB806BC95469581FB149AC66F00C26466ED3E1BA6459309DF -AE6050F36FEF2453D0CDB3DDAED0FD1E5C7B21A9469E62E9CC09 +D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 +5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 +8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 +EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C +02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D +46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A +4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D +DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 +7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 +C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 +25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 +7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 +299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 +80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB +5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 +8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 +5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F +F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B +966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E +A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 +9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 +A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD +94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A +DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 +E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 +5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 +8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 +155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E +4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 +44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D +8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 +04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC +A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F +F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 +111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 +8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C +567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 +C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 +C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 +51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 +66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 +9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 +2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 +4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 +5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 +0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 +233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D +BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF +62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 +B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 +DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 +C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA +CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC +38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D +FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 +303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 +8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 +8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 +C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 +9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 +4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 +03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 +93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 +91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 +FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 +06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 +95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 +9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 +7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 +6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 +5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 +3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 +CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 +797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 +DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 +CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 +8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 +04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 +78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE +730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F +021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 +CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 +90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD +97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 +F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 +4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 +40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 +3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B +362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 +DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 +7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 +04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 +DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B +C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 +B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F +9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 +3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE +D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 +B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 +74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A +44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 +A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 +3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 +BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 +01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 +6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD +DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A +CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C +683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D +87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF +550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 +2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB +17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB +3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E +F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F +B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B +1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 +61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 +124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 +ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 +0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 +D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 +F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 +BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 +75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A +8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 +B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E +7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD +F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F +F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 +322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E +523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 +6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 +66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 +B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 +5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 +093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 +B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 +6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 +EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF +A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 +8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE +144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 +7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F +172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 +254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 +5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 +011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 +B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC +0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E +3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB +E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E +993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E +0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 +18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 +ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F +CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 +1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 +A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A +6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B +BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 +DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 +1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 +93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 +E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 +4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB +F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 +4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 +361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 +95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C +AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 +50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 +88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 +AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B +A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B +DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F +988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 +5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E +848C586A3C6883B9E80168018E04A8BA99621D80DC7A610C3D0373172253EFC7 +39D756DF796BEBCF86194A56E68366D6B183B9D280D500A2507D68D4F087873C +9696261BA4B1504F28F2E2081983545DB432BC23B3E4DE6BD05255B88DBA72E3 +B7790CA90ECEA5CD733A8B4DFB8275386B0DC0984C1383635675696AECECD71E +9E1C957D9C75A7C96112FD17B755519A6DCB7B3ADF5FA30F144B7E90C100E54E +C0AF02BBBF04D8B240F822BA1ECC933993B92DA4B46114BE8A1D8A5B37E4714E +D45185324D9E12D44D1CB1926C66A16A038163C98C54B75F5A8F269108DB7CCE +04D6EFC59FAC6770C806A6864D4577AC6B2EE3FF22DFA9A5C980821F07BEE4F6 +939F8F56077400E80789EEF1C8A1776BC9B57D116744856E689AD1DA36F6326E +F6FFE6A20AF9B7C58604922C7D98550E2E5C7CF1823BB2FA0835133950FB8A86 +76CAC230274F91682F11435254D75908EF4251372FBAB9ED419507150F035CF3 +AB2AE67F6945C89051008793259254CC43D46C45D744FC121E107E5CA701FE17 +E935235429BDE4AB9E1586F4C8E49778021BE157D3A2E2DA8E66D8C8285EC811 +A30D3D401B387D3CA28EF41678A073BA8AFE225A949C411187F90522641B90EC +1E538080594E49B12A8D329B1E5DDBC7A4DE7AD271ACFEA0148A0C57BC39CC21 +1ED81070A6BE322F6EBC3B7C18FD250368869528EF9A767B0102669CB93FADC0 +4B5C8E7768856136FC1542CB71205AC63A7F0BD45402FE649B656A2CA86CFB8E +E2224982645D5509DE91A96BBF82EFEF01E287251EC22DAEA7943EBAA65E5D97 +BBAF684BFB41CFF8E7D2EC1381DF32EEF9FFC18F5EAE87DFCA9B5CB7E78AED9C +1C48EF88D6C7D0B7D9F08F3B01D0B5DEFF9F2F427020E7CF6FA7EA9ECDBC80F8 +86D4AF0942835D5C06243810EA2C6830EF971AF3BA2AC7A8B04CA2D32CDD53F0 +0DA973D0F18957A6B9689AA16751F62F8A8FA7049B25338B9586AFCADE266ED0 +1C2AD6A2DEEC2B8EC0A2CB679320A21F8DDBC628F804B0AD85D30F4F948E345B +EFA63C31A42245A4BED2FCD2AAAE835070AD3E39135C5087D0AC3A24E905E27A +870B25385590DCA9A135D20D823595D422B6DC084EFBFBF3210EBD6D1AA33B5F +7AD7BCAC4C95FEB7730CA65190E0AFE96EEA6C7AB7A276209DDF8F2525A1B493 +6A5FC42D07AFDD285FA8135360822C71DE151417E015AC9ADD37CA6A8D20F5FD +8DCD69EA6B778FC1650BA5B7469F6930CA3B237A4718757CC8F702D0DCAE0AC7 +176DAA317BDA09905AD25803F4A047C0A475875AF9590433F944B6C6E2C4FDBD +62957D5F092D19ADFBDD135738857976C161F7848B84CCC55BE7C24394510D0C +AA023A87BD023429ADE96747844EA76C0991B66D0D163AB8D0957EEE688278C4 +2FDA841E4FFC49C57DB26975DB027D9FA5B56C8EC15B4871F88689A7E58B37A6 +DFCE971911C88DC88FFB06B3005B8C3600BC7698DD62E4CAB19C19ACE1595A47 +13D1B1A8D41EB58A27390225ADEB8330B4C25FE6C77BED3E2F9800A20A50E973 +5B25D8EC7C976A34B38856BCF159E5BEDB50117E8375D80C8B85877F7341BA6D +6B46B8A934648AE27BFF055FE544BC0D3C1A2146CDFD254FEF939593C092EFC7 +C4D05776D259E59AA9817084459636F751E0846E52335A980F5EFD40634AA6C4 +49F4D9DF674D28C633E617EE78C02C818654A6A70D32630FCDFAD9458A9DE983 +7D710A56F17FA5C54166CC454B3D99B2B109F2FD59AD220AD364D965CA47BA05 +3A411BA3582DFBBB7C4BEB3A07A455F32C17BF7F51E5545F06B6E72ED65871D7 +D550007EDDC088CF3E6371A9428DFDA59273027DA2B58C38BB8577C7DD6835F5 +89045B89E7DAB46D20927B2E08C5462DFEF30227124B285F7BA5F78507C548DB +F056D5086ED0DB7A2F293D6BFD6715FC5E9324EB49CE4628CA18305A926D42BD +2D6C266CA3255E23373A0FADCDEE4BA5F9BBC6231491F8EFA8E42BC6AEDCB95E +A28AA2AA0BBAA1155188F6953088BA23C0470F6799DF92F05CA2B9F36ADE5160 +CC6032DC70E509F508B495C138D9AE10EC4CB2219F65FF5851D076029DC7D0B5 +9A54E00E26EA9DF2D97184E209D950FDFB089B8A0D4286A602096E350601EF43 +9D5EEF291FC3715C59F212055416DBF35C2B10E67623ED53EEF063DD8C0F0008 +2E1F9B387E4F94D5036BEE5B31274735A23E4CFFA7DBF5E19ABC5C35F780BB1C +5AADD189303A2BB4EA00161103317A22DE28BD349CFD9A296506D4CEEC92F1F4 +E993F5879824764E40D4C339884A2B27A0B865510896B0133C61E678CB5916F2 +B22AC7F8DE5321F46ECED7DA1922A72BB000AE520759A99C77F48B6B394288DA +C1589BA5AC353FE06DA88DEF453E4DCE0461C1179346649C815FBE5C7C055644 +1B52C03015686130AC4B974ED6B8F5280B4326D555149DA5C84380E74A2F9FCB +489F16E097DBF900C6F922B1A8B6A239F0F4DE5605AC35BD4A479527BB9306AD +5F29B155E0EB7357075AC442FAC6C5915CB6C0E3E240674D4BF87F1EC6838E23 +A3FB983B9122538D39FA410C70CA3E81ABF906C9ACD2CBB1B63E7D2CEFE9151D +61A0D1F64B1FAD736E28F27737F5AAEE9A7E93C2210017CBCD810A7B6E2C6F38 +07DA9F1C7AC5ACF360714CA057A390B990B28C818D789DBDAE93EC5541482F87 +20296D5C5CD8A68D6649CEDA29FD7CC1A25450D822AFA6004AF2E5AF45B06594 +DA6A60F780925A9118B2DA2D9BCE9BB40044FF724ED49B8CFA22A3631915DE3A +C60444155147F75FE659CEBB151B042618F35B87064A257FD10B2E30F673063B +7825D751371D9DBD2B7D33BCC5A84870CAF1C8FA18D0B137CDC2C1B94A92CC06 +29CE27FAFF06F8FAC047C0DCF3E0EF19AEF7B203077C37DE7CD355EB30183A28 +0301ED3ED5620913F7558EBF646C3E28A6EDBC968C25E1916289E6910398FF69 +E2123C6745CB86A2F30523C4755D6A1F78749A1713F0EAE7D1A8E9E3DD72BFAF +E92DCD33C7DD73FB4D147959CB5B521C64614365A25FA9D30CDF632AAB6E0E30 +E480876DD288CE9D059B533318C4C05777C5F9FCE908FC42AD040C29146C56D9 +EF4BEC59A4B05A63402EE43782418C570BBB507038C1660FCFC9C4DC20F160B3 +CD5335D79E612D23C653273A590750F336F3962DFAF45C6AF979E9D2A9F76D2E +CE22C94CC32A636CC9F58028F2B7892DCF8F803A5F36DBF74228B1D08DC378E4 +232C585E558630CAEDBFEE9EDC14EE68E4CBF4A3A4C6E96A30895836833B46F7 +83AC7D0DF5D0DBA7429BC64C00B9B56E9CAF91C02E9A305D2EB320E79E30050D +606049B6B86170E76E296BBA3E4DFC3F407D73C0A0FCC5D2462975D8AF3CDC9B +84C72C182649DCEA78CC18DCF33A0341A21AA19D92B975A3AE1B2B3E34A48C54 +6610F58CEEC2E489FDD5B46198B145DEB94E923D62F6AD18AAEAEB57DEB60382 +A3BDB02E5E2B3A1E2C25BA5B75C38531D1E3923280B52CC141272024BA5B655E +E678C1AB4972FB4B1AED5094C31A3FBC28ADDD62EEC788A474B5278FDDC7D208 +CAE6B6EA378FCD29C31371F4AF52AEBE7E38DF51786309621E882AA0528EE1F6 +F0CB43160A3517BBFEBADD7715E2B4AAB170B1BB2514A1088095561646C65CED +84CD5B5C5A5558ADB8BB5DF2B3CF9A53A3E4E83826BA124AB021516A4350D296 +BC19825244F92699F12339028699C7806FC3AB824F6B060CCE2E9180528E3560 +64997EDA3ABA1C6434F76BFC2DB8FBF00C67E6DDF06C0E1B73AEAEE317FFC764 +2ADC87DA9B9C0E8A0C5F665C67F8F7ED387BF754F97C8658AE9187D53D87D1A6 +69FF5F49AE9DE8BD120611BB48CDAB440F567DF400404808668DFA7F8197E907 +05EE14E69167CB30AD0AC0DCAED93780F132AAA20508A11910BEFDE24A1FD5BB +4781686F1445DBE4C5A3C4795C7A06B98EAC79CF77F0018FB5CFD531967AEF5E +1D41A87EE3D81A804ECB8E3597CBF050B9AEEBD707CD7BC3A4958F1629643081 +68D050ED87B7B26FA6149E0F8594DA4E0017DB57178469C949EE416508649AFD +EC5148B594D59625201BCBE112C5C8CEF1394D9CC69E94F2B8BAB1992287425D +41250C8B25FC0289FE83D7725C3DCFEA5435335DB38A3B74780E9677222EF4EF +8C1CD98FE322DF899F11C518926C606D276F148AA0600D610E32BDC6393F987D +0897F215FFF2C923593895A79677CE4748C75C905C0757F8440DF75012237B13 +E8F9F6189218BBFE66A7FF168DCFD7C20637614F1714FB418BF472F25898B187 +8D84F1DE9DEF38451149F8F1C4CDB2307D0C0AB286507FFC79C25084A8EB0AF7 +1AD914A3B07230012A5CCF8258B5AE6337BD537D3B2854C6EDC72CCC515933D1 +FF8E3B179EB1A4BD95A42EB75D7A9F22F5B233F79549A208925032C47E049600 +87127CF7DFD138FBDF82253E235930A6084624DB556B9FA958D7B71622059EC0 +7851A45A21BA746166D311A8F7E079B5217B4056BC822EE75EEA939D657E27FB +B595DC6D075968DF593902C15F5AA2AB8DF1A770C93AED09F39914C46DDDF942 +A95D4BD79386FDAC1604741C714B98DC554F3BE6A7510C4B18E240955186DF66 +891165D83D45C97FD187680C49100F35B9B86B9649CAA98B4281F4273B2547FA +FFA14DB49C2705C5E655BA33C50322A95FB0D36AB88906B70CC6F65FF351CD28 +D71204961E55E2EEE3DC268CAF47A979132D9D5A63A84EE16EE0D3DA44AFAF9D +A7C63D5F7FBDF42500835F9CD769A73D7A6CC248B7BE273EB0FF781B3FAE27D6 +612136D581AFCF791E6B403E2D7031DEEC8644033FAECC0966A6A4ADB3D9020B +524B534B858B8F5A66E026CBA3004465D31511A1002E8298B722029B0FE77B55 +61B6D2C475AD715F849783FEC956D192DA66C884A85F21430C057D881C5FEB5A +656EB691A0C0A8A853791D59D01A95D89EDA88DC768811F01134092B4617A90F +45294EB793A43346E2ABDD1BB8C51AC2B937D6F3F8B5D8ABBDA54CF46F71FB02 +58CA2C53016C7447E76AE9D8D85DC4F5223723BAA0D4A7A659C822B7A93C8004 +B2A84B88CABAA15B7D6C05FAAFA1EF47EEBE58CDC78FC18768043E6DB4E43E5C +2C887033D7D1FF741DE33BC73D1CC445103CE0FCFCF4BE9317D5FED10D58A644 +E27F8C3024F30B2BE9D13DF984B34D13C75839257334FD20EF43B67BFF6041DE +518D5D4CFB778BA08B742D8D37C0E7C6A6A78F0D9729C4E634394353ED36C3E1 +38312D560DD42478D707E5C9D409D43C5C35679C756CE85174E57B40FD17364E +BDE1B7D23FE760C8605E3AE03DB86F6261E7B246A14F4A4C2224BD4384589443 +C729DD3D509E43E13E0B7F3D9EE853C07E5A7D7B3DDBEAD04A929DA76DC61DE0 +52F07E635AB6168E1F1528FB7ED5EE76BCD08936B758ED818AB756369CFE9FEC +4EB46C2939F862D42705968009D997F3D618DB10174E09B24660CEB404A0FEA9 +4294B3B55055B8897767E879966860E956AB15684D6669E36D894CA538F395B9 +438444AFC3B00DF7B2465FB5F01FA3041EFD5EDD39BD1DF30C6963548BB63BE2 +9DD4B665D72FFCF5840D303656785D012C06295BBB5FDFC7AC37A6D9E49FEAF6 +F830D385E6D312022BC885A95B07343095EE7A0B76FC3FFAAF8CCF13B6DC4D8C +2277BD3B1E0B80635CB637259EAF9FE9333BC2309343ECFFBA369624C9C5A612 +FAF0DE89EB4E33A0A82B72655E0DC87DEEF56F33F844CF8E067B1C6A1BF0A0F3 +84DA8E696DC8202BA8DA518D3DDBFA9D798DCA1F9EDDFCD12D577DF5A86E3BCD +6FF8A9EE0F904570C9D2F00C572840EBFB84AFEDB543E10A7BDBDA2635E3B396 +3EBC7D05A8A683024A1A7D3E7D6D254A75A4569305594C0B18298C4974E594CB +FAA9A695DB48624A10FDB1C56A0DAC9002A5AB14699EE1F7199FDB1D0687721F +0E2A10DD36F27059E6290AECEFB86A318BA32EB817A8FFC5D5EB2BC923AFB5CA +8D7BF6FB0AD7B9F53A3C605B096C9C325981407A40AB1545FE7B02C13469C8F1 +5F7ABFE8964BDF65BFC9D19AA07D907DDB3E6B11E29C60B5E9C40F0B69E8A674 +AA55FBDA72140E81B0394E34DD9335BE16DB23ADCB922B6D614E715396579C41 +84C0E621ADAB89AB6226D22D3D11F6997FCD8BC84B717877386BCC4752817411 +ED68269FA1E65480006F89F51DCA36418944CE09E7A49CFB104BC1C7A390E2B6 +A3A1DE9367185BC5EA7FD9780E2EFE3A194761184A31F3E121DB398623DB240E +1727F701C94C4360704FFBEB51F66C8FBD92C9D9B258308A9FA624B8C2F7B3C4 +EB0B9A607923FCE56C81D51E94C01159180E470E6487CDDBFB5949439BF85616 +0D2485F62EAAE430D668D965AFD0A733C9696A75EF2CBED9F50511B7A7441D32 +B7948CE4D34F2AD4E1F6FEA60C4B7132F5ACF691077FA7D258A88FA8343E176B +85D6804A460D7B433D6671654DC2A9B3A78FDAD73E7C1AFD1F175EEF77E1DA85 +2BFFBF3FBD121B1AF1AAB57E0EACE2C5D4535AD9E1043F4411BD3866201935A6 +87EE72345D5F6D55006AD67B987CE7A53748F2FF0C23DF2000ECA03355BE6DA7 +8FFF1D18B9C00D3215F7D94C5AC8EACD956ABB743DA4D99981F9921AD9150CD1 +9CB9FBD855ABBC2E48D59AD4F0C7358CF427748EFFF4A73E627DE3C67B62C534 +7DB36E37C91AE61E871BFBF412C817CE5F239AC1FEA2741208993BA98FF119A6 +623ED908FDE1BE539D48B1442279C676C32CB65D5690B6B9E76946147A9273A4 +13BF7D4B1066CF3B5B599FF5882BE94D73E995E1E77B381017AA13306FD0C40A +B02E72C85214DE5978E8BE273F2A96C9F1629BE9C76BB8BCAA2CFDF5C7FCF3AF +ECA77A779B71F0E4F946B9E8267FE7B6A74CDE3CC04F33704C72E80186616617 +6B21655365C266D1ACB6AAFED2401B81CF0ED851D2E08B11391BE4F1D3F940AE +EDB1928242786D8B4F67FBADAE077634DBA6B22F813FDF675558BC68DA1A1C61 +4BCB4344E8787F0F2446673CE7023DB7FBDB080EC4797CE6603A7ABEA640663F +E64C0E33716A47083CEFAA1A132FBF8731E9B97B95797E66859F50BEC599A492 +046A05D9481EB5B6CD754227A5B335BDF88FC4FE77481274B40130BDC1CCEDA1 +F5B88A48BCE7E309A9659F8C737D75732968C5C37369E81931607683FDDBD815 +4DB7AEB89F3E4555B21BEC3F0E2DB87F0CC7EF5F955687C56AF1E7234D1EFDE9 +4D744AAD98C03184A1E24772DEA9D2DE06F56F0C9BC5DDE183FD8D0785650169 +6640685D57A3B34A93041461F68E6BC016EAC14BC3ACEB7FFCCF86D4668259ED +E51E975718A710985CFD52C8C060D3AA85B96A5858EF8F55F353D6411C0143ED +FA896146A089CD3167E7F503756BC12ECA6DFEF1566BA66CC2D840BC2B349BA5 +D63E8BE4455BC86FA8A2296EC0827583390D0A51F62530A28E9A1ED830C9AB33 +C3EE3015F3EC9AF8F044195613D3E057BCD2DE83902FF5C46334C103D057F6CD +3B78B51ABE00A0DEC990A27275F11393C1E16C035BB7AEA9022F62372DDBEE44 +AA952C01A1053D9A32B17FFE3E9AE0B1106FC26B7A14F472D973BB912FCCD3B5 +5B7DE1467DB6CAC9860673DC18F332425B970C7394405CECE9102AF258C7005D +3156E4780B33975EABC0C18CB87DE0BB50772C399BD829FC592C7C1CB35103BD +0D62C37CC036C6BE60275E49529CB12F5995F6B56680D18C8824C9C27AE4B75A +DD3D4967DF24C0A016184292D4A5F9834DF0223E06D37289E75B61976ACEE71C +E8A5EB96B247D5A3922C4BEBC3E1B5D3E2B1513BEB1544B7E062AC04071CEB57 +9B042DE6FDC13CBAADD93DE69871B46F02B301EA3EB3DEA9F1E8E70C8F8C51CD +53FA659CBCACB4119664E07B46B76D75B78AB813A638C4D4612A3907BBC12CF7 +DECA9E36C585572CB579FF4ED231B438123FEBE72C772629993589C35E6F5721 +6756CF67259FAE3C57383F6B3C3C96A61F37EBA9B9EEF71566AE0C8226CCA95B +3BE2B1304F0F27C5F0E0F526598F0BE2995B9CA1B9C0BB2FA1B12A420D377758 +26C9BBA85816111DDBBE8BE56B1BB348FF298D43DD366CA74581EC55F75F201F +3AA23E042F07451FB8CA31FDF5E92BCA9B89E8AFD7FE80D4F8635853662F5AD2 +54FF17EB29DD6DC86642F4F268B9CA0E9644FB04F8E222C58D16E4988E403581 +F508C15179FE9E9EC79640EC4E38C1ABC1297D45DF1B15370F49DEA0E8E82BD5 +6639668C6CD6A23816ED332A7BF64780F03EF4904E473EA3E170363185615787 +8047BA5B1053F6574F793B084C51390B9C6A32B15B2AA1A48F3CC87DDD5019A5 +D231FECE2B02938A6D1F20C33835EAAA1541B1AC7767674FC75C9CDBB5A1C795 +1B5C93D37FA03622444959EF388620D0B13D9F6A31954D048926A667EFB41029 +F12667DDD8169211B4C4ABC51987D95DEEF76CB098ADFA4E935FCFADB97E5CB7 +CBA188FDAC8FFBDCDDFF14D1EB633AE81AD6B65CC31361B3078772A522ABF9C6 +6B37171B5390E37E17DF5790E1FF121B0BC8AE7592BF44A4454D3D902896B289 +72DE53EA0BE83D8AAB025DD3810AE31F41D7713B6A6393DE1F30CCD5334FBF2F +AEF6C3942FB365CAF0A18A57CE7D50D9E8C6BBB4C1BC1F0444054C552AE1B9EF +DF2A4B35A9E7E6D8F3B0E585E4FE608C4B73483ED8371FFF652A5E1EEA27C3A1 +AC8033E02E02690B823DC1BD5B3538CC4BE94E9CE8500B8D36F3A53DF0B6862B +DCB9C6AEB6CA77969038EEB8DE0EA0E470C19158FBCEFE04600DDE7D6E19346F +91F3D587FB51817CBE1B898832903C3B0F5D74B3F7E667C871202B7A38223F47 +B5B8E13E3EE85BABDDD9EE13B91BE44860BB02CA20CC639A78219BA9908370E8 +0C2D9AC7146A2EFF4175AB5A2E50689097CF2D5D6787ABA678793FFACD389DB5 +807AA70D42C2B4897CF78A86D80E1F6736EB30D3A1E787631324748C32560091 +472542ED62AD2ADD9F00EF8D5609CF1F3D4EE16D502B281DDD59A2EDC2523318 +2017C7C1BE7E06F182BB05F743D1521A07F5AB97E3515C1D9DAF73E743CC5B30 +977CC0D1E364E8A74FFA78877DD0B7637039576102D7BF022A81836E4BE571C6 +4F4AAE21F9875D30277AF3D4EC36D09BB412097B30D45DC758194E85F0F473AE +2039F97ACEFB9EFD245E010618ABEB396A804DB958AD3EFF6E8E2F8D9A41620C +233BD26AA6A06EBCC22E6BADF3FA2C389944429612085CE276A7571D75D3C521 +69A03AF226C9141A8B21B55E680F93E7AB33212CFE6D6A340DF6F1844C084FFD +0D78178D3554C9653CF8E0F64361790CB87ED45D2BA985678003529C2854AFD1 +A0EB66D7D126C878F381A767DB0101F50EABA4B10D84F0AF528FDEBA941A5D48 +3551F75F324EFB3A57DEC364F86FAFD5745DFFD95EC9A5CEFBC61B26645F7305 +59C85468180CC0959413A240A457399B77E57EFDAB737460CB2D595356DAEED4 +8B31292C2A4129AC49B3B7BC2DFD4E30184E13CC9BB3A415335E290F6156B0B9 +F38EBA44B98FB950ED23A07B2D1A98DD8796DF33F478D2A5C4EEEC9D9E65FF23 +82EE9E67C5E990FEC7B4B08D40C5A49E58714817BBCF81B828BE72F6EA890729 +53805F3A4B75BDE44F3DB678CF015B9933D8049B5654D9AF09052086D92355D2 +13EF97F41BF2326BBD0D96F56BA0B08E04F93FDAE71B873D7BC06840CDABCA7B +6D880A9219E96F75D75FB43AFFBEFB4E8EED986C89ADB933D1E501BD8DF6FDC2 +36E4972E1979C2ED0E15C4BA9AB077DF0A16A7C19839BE759D99ACC6226B821C +EF05BA86364378947140FABA907FB735B0E7F747EE7DF8450ED66BA73AFA43EA +74AB9CEA6B4C5A96CBDA7404C6681BA0F9D26AEEC46DE3DA47506837055EA157 +D6BD20F292B46D9CDC3363E8C19B20913C1662EE39425D64724741D7DCF0F0C5 +B7C66DCA9CF27501DB6A7DC3DBFB464844F97E87A09B0ED04172F6D337407651 +A836F1F4302FCE29BD3CA5952A923F5D37647C665095285A3DC76BC27AB33EE5 +DC5BF1715DCE10234BBF282BB942959331088A6ED62C7F0F609E442BE14FF5FC +6587EFDB4F8F09CA08D043096004063A8A4DF6464AD680E64B0616439D3932E1 +9944DBFEB50B9B57B3DD83EA0537BE48E95CAB49BFF62F42AEDB8E03632F2645 +FE6A209CD56EC57BFEAF030273E6FE30A5C73C955DA7B1C2F9153F964C3D353F +976D7D00241580C47EED180C2C7DB761F29E69090751420C32FF34843550C10B +5B33119FD60198474895097C2B8EE5EBEB5B99CDBA9E78963B0E181136544BDD +B4AE3A44B517A81BABF52811AD81BB9152B2E931C1907E83E7831C760B2A244B +FBA480587ADC20E4BC0F806E4B14D624FAC23F13E291B3277FB8E01AB176BE75 +E5402A583A87AC22D93BDA6EEA8E00A9EF239A3E557335AA399A751A55D0B032 +B4857BA6EABF0C249C575C01ACBA6CED4D3586160E9930F09354479BFAA6B62E +504558A33285C25F59AEA2CB2F6AE27902A5728F9AEFC32752EA396CC16C9637 +BD4E8AB0CD680014888232BBB26FEA212B01553B4286C332CFC6F3F49F17BDB0 +AC61CF6CB0A86C031C4637A5C59FDE46C2C03D72B5DD479784EF72B6E42D8F58 +82644DB88991868AD115453E6247E60B97822183F0FA787BE34AB52BF47DEFBE +E0B4478CABB904FEF0274D27CD4BEC672825A27069DFADD477758FD6F7791E2E +F132CED89946E9FC285EE083FEC0E8DF0FDB2DCC38DB7FB0A339F5FFC540B55A +0AD1CAC62E62C94EA2950B43877D415E2E351F277AF8CE984837A69EC315D27C +2EA3A90EC649919DFAEC9E5DE86F73FB84AA3E429200914634F2F5A275E41D57 +E7C990347EA41654581A2DBF8D1EA09FA343513AECA8A58D4A08CD0B40C61693 +2DA04D62F5978EA98E3056F3497932C5795ABB3E0B74D89D72773DB8382B2A02 +51FEBDC10F44B370DEDB3A3FF5EB452B2AF5B4980F5C925F4883D3A81DE06C1B +5D76CE0A385B880FF141760D5AC354A6668D35A3F8B852A25DD5527E80AAB16B +88B01168D2DD80CB477C3C3A135BF04E71A4FD2921AEB03D681CF72E8BA193BC +CCD7A9184B78E671B8F12DF97AF2CCC9E0535B3AC4949BB4BF6791BACA26FEE3 +17FBCA563A56F769C4E73011AC56F7B26AF3D28D7BDED3BA49F075B9BBA26EA3 +8EE4738CC78670306BF6249432E786BDE4A4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1551,25 +2954,40 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMBX10 003.002 +%%Title: CMBX10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMBX10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup +/UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMBX10 def +/FontBBox {-56 -250 1164 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX10.) readonly def /FullName (CMBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put @@ -1622,313 +3040,527 @@ dup 120 /x put dup 121 /y put readonly def -/FontBBox{-301 -250 1164 946}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 -FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F -DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 -7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 -9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 -CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D -6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 -E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E -8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E -3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 -EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 -0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 -4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF -1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 -757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E -0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 -6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED -E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B -61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 -92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C -EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F -43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 -FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733 -4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA -55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822 -C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741 -5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B -D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1 -08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C -318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A -173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260 -5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870 -CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A -53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE -69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC086CFB6BB5179BC3 -A5469A1CFBC8620BC711F42D0D3139BCE4E38698D9C574450DB43B5A19FA6D54 -0368BA9F7A8DBF96DCD0B8968CD194264E6DD10A958846C278B8C2BAFE7AAF8B -44C84C955F1A89A13E62A054BC76CABBBF6296DE00A79CD7C8C61C70F127618E -9975B59A880685E126F57AD80F8F4D376E1B476BDFDAC868FB6AFAD9D694B561 -001623C4D9F55366D053B52F2B09EC08B81901AE0986C5350312E626006038AD -AC15FE313FCEE1A2E61F8992AC00CA7BB7F997707EA377D37EA6FF35BFBC2866 -A572B31491F9B80445685DBA5E62F166E80589F768FC95BBC79158C23B2F1BD1 -25816F1486A64F76D99A638AC0DC101FDF390811B3C118C2D972B2E7587F6F24 -7F1DB2DD922D237A7D18FF08FD665355CFBBEE799D3BFF11CD94CFFDBA3E725E -DCF4CDE4307E3B199D91893A365D04F43A5305BDD2538E28A0788E061F3A621A -B4A04E5063B47F0109C1693A284FA43E8F1EA9B68145FF51C005D3FA40713BA8 -1879BFC3CAA881B9D885A0C1AA8BB9A8C848963020A5B15F862E7DCC78F25D7C -56437215999EB78142C128C6CB1E6E75EBCBB1E4614E8516FEB1E68400C61326 -D9F9E8A41216901F77D9466455E2A0B45FF50B27B55A1E1DD4F243C92BA6B175 -8F7695CFA1E91CDD8651AEBA3D258FFABA6280BF2420A98FA7CECD552D152CFD -A8CCC94C032087A28D68332769DD2CB4ECECB15717C245BA305CB616CC72644D -C78326E77FA602364A7B1630CA0BD0282FA781E14282982C1AD13479B6178D28 -1CAA541FD3F4316F4FF81C53496DCDF5F86E0D7C870FFCD85B36C936B1E08D78 -CEF3823546BE4329B97EFA4E2880AF3361C0DD67F77C8BA6F1CE3822B7FBE567 -064ED0477949BDA06483F8DD04F891473C8FBF73A61F7C06B20FB8B5F0BF4B77 -1429190979A4BDB29D77E94D5FB486A93B8B61DBC84AE06B4E06CBDA3A942043 -9F9926F541DDE4E9B734A985F9054493508C5F7EF9ADE372C520840F15F705D2 -51826A537FD158C4105443E38116307A1D4608E9C6FEC3353F57E65E150EAC0D -B923BA82331D83E41C97ECAD6F8F32242DFB52EAFE2209B9F41DE483C8549B97 -407186E3A04011C8301B6C9A6D36D8170F40523FEBA5E498B8E5B7BB28581B5A -08892C2894316068537336338E46F5113462AEA9DA7102ADD13EFD2EBFBC27EF -00B38C25E4E23843C50C888B22BE1C76AC3F85CE148B7EA0F47D72E56726D13C -ADE5A5D539A8379887352298B7ED202D909C8BBFAA0BBE7CD378B80488333B88 -E38B1C3C8DD17F32583A642A1D0A4408B0C244185C1376364E723D83803813BF -106524811B9116A47F0A3205513EB80A4F798B330C9C4560F98FC3A2FA181680 -C83D6BA02AEB9E57310A60C39D31D5BC8AE28BB3171F90B69C11688521BA0845 -3F7D6E4CDB496E3F8B46D080156669BE81DE017A70B3B7D5EFD202F26514335E -E06DF49F24576733B1BC191480D8C4E613537A80FBB7C408E7562D31833E3405 -2C16297EFEA28E55E929640DDC8D9C12D15A89A03C8637336BDD0D712AD5A2EE -34012D38FD1AC70D13C3833B0A055B545F9EE98A463A2B3B424CC138AF6CA929 -A7BD80C3A804D5F80153DCA086B862A7D621B47F109EB93D67A73934B066B546 -BF15F27517D10CB8C83F7B319F423C16B42AA435231B9C4A05053D7109715804 -660B7052FAC3EF49E66AA763DCF07FD1AEFB5ADBC9913D3329AF36A7C5359038 -963383D68357C48B254DC2508706B1D5B71B66E2589214A336ACB11EA0E4070E -3F993DACD86186718E488D4734F024DB314643A9488841654924DF275A1A2221 -2FCDFDB677FC3FB49409A644CEB01B260A4210613C0AB3FA3BBA7CFD4CF2867B -B261875B9C592124D8A5609FCE7B376A39F6AC86E94F40587F69BE0E8B4C2E64 -DDBFADD699BCAA66A856556CDE4620A3C104EE29F9523D0ECBE6552A1B8211CF -66D12AFAA3E9611858D51B46039B5EF0F3E9A020A6370B34E80F83195A643F15 -86934B5BA8B60ECCD0D3C9496F8D32E70ABE513FCBB85A77D992E73AF8B955DD -5AE1FDC1CD972E81DF6816DBBDB583FC1410D2486F7479F1A466182482EFFE44 -DAC31E1F059370329DE19FE4629F33433576C1E3E6B49F122F2F7333C36AC744 -BA663E209AB384C9AC13B5AF8E9D0D7182D5F4D1EA874AE24DBA41DDB6586535 -8CA487EE4084602F3F2A7A46A1DEF17DE9B98728FB8113FD1BC2A62D3EAF7F83 -EEB13A260689B6BC369064D027601C48AF68CF0B507BD5AA8426833B11D5F086 -E0759BF00A3044F0719679D27D8D8AFA8FC303917255FBE6C1317702DAAB2C88 -4669AE63FDC111F7FDF28CDBADD14E9D82CB39340F567FFDFA4716CB99CED1C5 -871E005ED9EF2A8C3BD948CAD403F180EC8649FA7C4258DB0E1CA5F1ACA24DBD -B59A2D1D7D920103457822D0F03F7D4CA5FA2D944B13FAFE51C031FC9416E5E3 -4987815ABCD52F279B7E1A86F659576B57860004E6E22A6FF097760138E683C0 -638CA1E808E4B88CE859772171D8F864F99FA82FBB5909E75603C5010D49C62F -256EF48E28DB392A15716DCDEE0993D3C8B9D7A8DEE99AF3401FA9A39521767B -F04344EBC10A08F880FE13DB7E11AFE3372B8691EA9807B11BAE3C4B7536B7CC -B58A3DED042A85AE55ADA24E74A0A50BC5747F9C8E816A132CBB3987FAEBF451 -22FE85DD817E8E6B9DA980F189103C5E972614AE92FD7506CC61589B2284BC84 -A4486A73B619585F82FDE4410A3841729C2A26E7E6FD5052FEEAEFF792EC1B58 -0131564B3C5FF80F3FDB1132BC1D83FD8D0B4961AA68000BFB9A0989036BB0E2 -CDDB585566EADC55623BDEA1F218DFD343324776DD201CDC9AEE023DF5B98195 -AD23DE4BB8EC522DDC094D15A76FD38B85964AAAD1E2DF9513B87281F7106032 -D833B6E2019EA1E9D05C7AB6CB34DA376FD9BA187E8BDA5DF7EE06134DA2F577 -115F6E891601CAE2BFDB23FEB902E2B1A43F7A834632B6A7784EF9E9A659DE56 -5E7E66BD19DC11ED276BC0E117C8968E955629700B639BAE108F342BF38220BC -A4C110641D1F70F6843206711275F5C33A6100CD20825B2ECE39EBA78631E349 -FAAB77A671146B5A712B40F644B86BB1BF3EE8F75E49ABBC757485C1A53BD9B9 -34BCFF603FFF6AE40A641E9626B0F9259F79B06BA573D6A42DCFA21A7D69BF63 -E1BCCFE3816EB1247C9F6DFC07A59656D89D69DB5DAB731BC84B77EFE8860EE2 -AD317C5F30763FF2C1B9C00C0FD480282FC591C84D7E5AB2A795B1D2B3E50E5D -6061F96ADC97AA2DA0B04E96F8E3961CCE37109474963F05E9C15FDF55214DD5 -210DD9C43391D12018AE5480429C9D0738CCB2B0178A8824968536C99CB0BE77 -B649AB272EDCF07F46DE28AC2DB08DEABD47C1EADB1B2193EB614BC26FF58583 -B4543394A1C8DCB80606EE803B273D8E313179922EA334B26E58EDA4C2BDFF7D -3A7D83E0EE66A4FC9C6BC9863F8F9752D66CD473F28194B9F26D624F30FF8DBC -77A700D39436E16839628F46B0F3637AA4E8BF1B6F5B95CFECD5626B13634939 -C46CE51287BCD099E31DADA771D251961E311640C0623956B2AADBD1F18A5F74 -8DAFFBD0C0AD49F4EF2880A60AE0DF30AD1425B79DB0CDCF9472D2EA009E9829 -56EA40DF5941215E176B1AF92C6374AF78D9E6622CB915537EB9F5DD807EFE7C -9749B43CD46272AE2101C1172A5210A4F71421E75C874046540050485E27FC7E -C4A5DF6E3679343F161F3BDEDE5BF274D8B052224E987F4A135D2D8FE7F84EE1 -E0BF07ACF7C40DC3A9C50CEDFB0EB5EDE8FE341E696ADC8710EFA61526629305 -AC390632DE1B80CBE8B55B2A9600D8B94CBB43F4E0728C08B250A8F4FE484720 -E6A260E226D420DE06A87617A3264792743639A0FE4A2ED4D9627E78B0222991 -A583A5A87AEA5D695EBEF083D770C5771D7304E17ED5FDA30485E82FC8C41B86 -4D68C82CC51D87AF64B277E0DF3E97BD5887C7E1D913185D2FA7F29FF0BEC2BE -14A3E6D029DEA2D9DB4A08B5B3ED8157FEDA81F552EF0918ADCDE7580C48FD58 -B0FC972EE053225A5B2264685C7A14AFF0706B13EA016721DAE4F8525B8C1E80 -A3213A33114A3007B7EA5CD2B1AF43487F191D22A5C106D3BA83A22673131EE2 -5B370CC9430E2FCA3B5E3D181FF1FE29DF3A9E6823F243708D19260EC2BF31CB -BCBF8684B4E663F3B93AE10A636CC9E2F075C29F2AC4951E85DEE75B87FE2438 -C389B91443C821D4183C0C35E916FF970B51856FB04B61FF8A265206898EA5AB -CF60214736A9A0A9C320F462E7B6F7CB43C084589B88DF4217C69434107D8DFB -A9F3D9C248D26EC0F1225F842581F27265516AFCD19B9FDB23A18ACBEDA6AE5B -0C8445E30DA6F2611E3173B7E7A6C2BE8BCEE2FC8D688AE82CA35AA85B47C48D -A64FDC522636F50ABFC0B2EA41EA35D67B308CBF6C2A86B0CCB58A025DEF703B -FD186ED17A94B64DE3F9830621D11F0D94F518030A232D7C5927625B2B61F414 -ECEC88EC56CE35BD4AC7F7D4257BA661D2856B8043F236CE60FBAC9186E0B245 -9CA6DAA942CB5E4D5A4A59A48AEDE5EB78FE118F766FA9A16ECBB6CDEB641421 -7267F61338AEC49F83A9DEA6DD1F7FBC53ECF8DF0C6C2EB871518A94CD832E53 -1DA38A4390638D9115136C9D7E3FF7494DD7C2033D39D21FAC65512164664997 -785058E339CBD84ADC911F1FF4633667B7C172748F83235C241EF9083A29B907 -AC96C96B45CB517099E62B7E1DFC89390DBF51D02F1BF2A1AFD3AE38E3026990 -5E9F5A6FA9746C9E61DB1A6EB4F484C4EFCEC8F915F46E196ADBA0D2FDB82E3B -1A97DA40A76874B349BA4D480C360FEC74B1CC187C76128624D1C063D077BB8D -F3E50D3CB072C7ACA0F3346BFB1D112EBED706BC035F8C8A6A23474BC914E551 -1CA4FA8B354772352F7A0EEBDBCE9CBD523CC03E2C5C03084FD372DC9F7113A8 -8ACEBCDA2378AD0570714AD3879C7A05F120D18DC6C0AC7C5950117B9C8D24A1 -D59CBFEAAC8E439E52FE8438B59A7164CAF45C78E8396FE323FF38EA05B2107C -F20D2000F220EDF53987710F0C0E2DF4230391E545C2D21CC810A8E902323A2B -BA82A938A9221298D214BA068ACA55C690B7B7A508BD6595860E880F7AA9F030 -27E4243410CAFFD55BA49F5CA06A8FF416F194D3E3AB7192ACF871C7478DF987 -16540ABBB52520CBAEEB922BF441D940E813995D4ED3D8DD707A631707D5F553 -D73223CDE27A4699C2B377C319C1A0896AA544018FE978F5E65B24B278A108B9 -8F3D7FAEFB97C51F9AC0CC60BD9CC620B315C91027B83F0153BA8F7CF627934D -6D44536CE65F562ABF7A46DD66401FA9158F3B603ED6EE02C14B1919613FEC58 -8243E4215173307F4EAE1FDAB515F26419DE06FF2DF62D0E0E60563BCA2A7634 -4B58344AFFA0F104229A6BBAAB5CC149573A19C5903CBC58009807EB095ED97F -BFC664A073337252DFCF946620B1679778D6EEA5C1015B0F73E4DBC798F90AE1 -5CC47F90690314CDAAF1FA54C47C9DA655DAD56FE577468C6199C346CE0D5C14 -F3190325FEE8CD9F9545625F5F00EBA1B449F55FDD4E53FAE7C5286468677ED6 -2F324DB5A9C804C8A2BEA08625C37E2341E5C5A49C06C15F23BBBD08D56FA07D -2E6FDF1CCB9143BDD8EF3C48079B16324FA502C29DB5120878BDAD0A783CFF92 -19AF72D3844B77A18BF1D2BCE1C41134761176794957AF3B8634D9C5A269671F -5676B9D71F99E56EF7F84374F15099EB73515268827EAE0B114A10FDA6171656 -249A963A32C88761299004EC6848BD76B6D8D68379EB302D2528ABBEB85CA4DB -DCB6B0C376D86530F4FE8E17B93952C50D2136CDFB1E217748CEBF8AA6B46BAB -73034165C62F02628CA60EACBEE01864323CD45EAC63832BDACEE0C39BF6952C -A07095AD3D82C80E2875ED7B998F8D9F5D26D7416AA70E53760C04D2F07CF734 -E9AC0CBE98C1642B93075D96E35AF27717A52EEB4898F148BCD6F792194681E5 -F0A396D7E2FC5676FA380A34EFC2085A7D0A5DDBA1476D0823BB77CEF027B833 -A144BC9D0DDD83A6986D4153664226DEEA70796247B400AB0C53148D61BC69C6 -BA4C4A288ABD172909EDEDB5CE6494B4F86A42572D0BCBCF857A64A13503EC6E -4B495640064B9C4299C0B6AE174DEEB07DB173AB3CD0A00F03E9545386A3AE24 -717387668FD6EDFB94402E3512A7A6F14ED8F079ABD4E161D42B40BE5027E3E4 -22D8EFD20D83D85AEDA43557FC14973ABDA50ED56948FAC97B44BF6EBBB6DAB2 -E05C768D80E843837DAAFE5F4781812CE3364155672C77AB66301A94E2A9E6DB -85EF7C07FA61CB474C2CFC6A2F7D90962B4C0D9B95F391420EA0938BFA21461F -B979C547DD7144D2C73A0DB184D4E1152F82A559F09EBF4620BC1B9313E03FEC -0CA4C8D1EBDE10514F3ED772C73E76E67E3B20805A93BBC4E9646827276C758F -B57CEE6AF20227134072637C357683DE58A7830FA2227FA344860C2E4B332268 -22E6346071A229CA44AF26E180BA8AF72645D356C8AC2DD443F8C9E4775316D4 -F832981E22EBCC3D707DF08F12114D104341F83E27734D81A56005E5C0AA55F9 -DBF4FB0D4B17BDBBDDB80B3EAA35925C70B846BC4C49D0ACFDDAAB55280E838E -A962BB1FB63870089E1670EA0F1E6F810830E100D00759E16688AF88C5E832A7 -01EBEAB36927754AD34FBCF10F6B787B6CB1F90EE1C119A62E88B81BA82E71B2 -97ED389F742FEF4B76CE6A17D0516BCFBEFE6F7185A54397B3538E190CC19E2E -4CCB233AD9126D64977FF2E89C12CBA5EB2ABF6E91289728CEB3CF67950765BD -B6CB85DDBC55A6F452561F0AF5350DFEFAC063CE5F25C6F00C7D2CEF0B880324 -A82CBFF49C6796AA0C943440218E59C2A98E43C2D2764CAD05C0C5C4EA10F598 -F97288CCEE303179D86191444516A79AE6C4FD1E9E60615E3B547CAB7D471F32 -0CD1AF2B3F69C8C047FE1A01845D1F1A6EFED268601F87F8A92211BAB650913A -0A2D98053C511FA63A8B3813E2E2B3FEDC870C5E6206101C4DD70AD1CA223A32 -FB276691EDF2421D12A4B330C4BC655A1218AAF015A384B8057A71B8696FBC73 -CFA6A9CCEC4AD7B0789E290F483E96E741325E6062C5F0B37C50F75A81D00344 -966F1FFDB35329F1653AC58EEE4C4B9E97F89EE4A3DAC15D67B6FA4C814A0995 -7460E20953FBD68438F0FCC139724701242D7C45AD30C72141A695453D003D72 -AFC26291C1F4BF991BEA7404DD85C825B840301B9215060870B1E5177D0AF621 -83FE4365ADF6FF293B7F9627ABA242F0A3E4A608570E46682A0CCF1284961F63 -B3E68FAD31F3452B5ACE03F95505B3BC194C783DE0F8BF66CAB795BAC0544191 -4D98F68ED7E13FA2A535722B667F6DA5E91E74A01D815F8F3CCFB5B4820E0797 -3553604F9341EC1B735D9F96457879D61A216A449D7B8A94C928154358253459 -AF775289AD8E86DA52D05A2C58387ADC92B18E1F0D1C04CFBEE4877F49953FF2 -42A7654DC8812CB057B305A68B6C22C8BAAE86855EC1ADFF0B3E00D60C853807 -20B98B49E7B0A9E1583E685716F6C2CC58162127FC8558AB128B53554A679763 -512DC6999BE36C0110423659F580491D0071B4AC2374D5D305AB506B24E63E44 -BBD84371A903BF4CC762A0E0D3142BAF794A332B629C0C8F87366F0130FB6E7B -84BF4D812759F2AC831D1E3703177215908039D66CF07D17258BA2B34EBC5D68 -E86A5F0252A7FD1EDACB59639A56C710049D5612818EBEE157A773D8AF209CD4 -4A6816A6BA050D5C23B85C53E6C50CD2ACE0B218C8F87A54671E271EA0A8477F -4A1DD5D223C0C644580373A57CD67EF1CCF7FADAFCD53843526AA357F666B835 -4BB78097E85D4D9211DD8F506380056F03D9C9DD9EF63EE9AE3A5FF0F74C654A -EDB34C3E9894E6248A583032501A0C4B3816262300859EDDEFC8B4B095130B91 -A0E583759F16CB9E5B38C42CE172DE2DE760A9E994233F006CD772964A621DDD -686F4DE3DAA62A937ADCE746FADF3BEF3FC2F90C3661FCCCFAD07CD4C22A2F8C -4DF29BEC9C4ED7FB3006301DE829E18EC81C8B7F27EE3AEBE4292548C844523D -A6F07705F4F16891D5C310B62BC698014846F9887925163C732666B6595A19CF -4344B5391DC011EDA337BB0D00891E6CAA8A6DC61C87C467181950BDCF13A7E7 -BECB71FBD2BFCD3D93135D5A508D172C3F63394A741E1F6764735A61B90353F7 -B67797C681A1AB28131E8E29CD12906A9EE1E2844451FE9DD9B0228AB93C7310 -F2FC310DDABB8418B1C29DB475E42233826FD9D0800196D6A825F380165E27EB -EE33F99FCEC55AB289E5D5BC4B02DE34008BA722EF503608673CAEEFC884E36B -2D2BF1B6410DE582CE243523ACDBBBDF75A886CA62C634F99A8216AAC0B762BC -4312371C42DF685CD54923B02A5C7610CFBC2F1AA39F0FB7EEE423B787308DE5 -634071E08F7659C70A6EBB94826EFF8C817AD6A01B13E91F0F15F43100B0DB6D -052DB9CED475535E482A58E3528B50D66BF785454A17DA4E4280AAF58F6441FF -0D18F744E745FCD33024713DA26FD532E640E9BAB1195BCA469E9FF2476E9008 -AEF4A4A68B5114A7C2A29448DB7A9E93AD6B06429D760AAD16B48FD9D5395480 -36315FE778F795CD7B4F4F5081F8636FE81681E643BBE83740B8393E22293B6D -008C845E6B3B5F518B34337644792AC0169B793093D308641F4A4DD3DE51AABE -95E16160C170D0DCA01374D0EF9C0C1138AB40F2DF6E4E7E5C45C8707182F8DD -DD59586336662C831FD0228595D89E5818A85E6D2C461A252BC1A2DC5895D28F -C2CF0BCE8DE71A094B7BFB56A0640AF9274CDF166B0AA5F9E32C5F595ED7CECE -10F6DE434D4CE74211A93C88625E508546DD3715A18800E4829D27A0F1067F0A -31BF17B596F13E728FBCC9FC0EA5D01AA51B5CD8B76258FC9A283D7E7B8CF14C -80D2EAE16E5F6BFE3F773B6609BA7473B9431C7DF9560AD9FC6E4D64DCE17C7E -9AA26089E18C5AD0FCB8F1838E58124B0028B2C2E4D5CDE965D02195C16E968C -51714CCF9206576B6D07128DE08529C4D94A1E2986E9060CCBF3AD61C605035B -F78A0F954F3E1E5227526C47631375202CE7B71F014053C68652EC5DD89001E2 -780310E4BDBE74B38CDABB12B604CA278AF003A951F7361A607A3AF0E1CD8C8D -065668CB80022EB608FFD13A49FFF3DDE556B4F8BB7D8B379120AAB86D71AD8E -64CFFB848D698536EF379DF427309125FDCAF1F521A767B8722DDC88A64F50AF -EA8043686A2BF63A8B447B6B588ED2985C773661881ABC98E09DE56F7F1FA305 -78055AB3C1C99FB40A4FAA548BD9CA0B95C29D74E6A32F3058EBD42AC47B427B -98D24AEEBDC0F957EB5887100659B402AB542EB5EC0A4CD278ACAC36BD87798C -C41B89E8888E23552B06434635D39D6E4011F9E155D648029FBB2D9F8837774D -BB8A7D722A8EBAF520E0CCB55EF124E5E189BD7332E0EA5A90B10AB63FE405A1 -6A40F4B356482ABADD9EFE8E7D2876F5BEE9405EAA684BEFCD179271C29AF089 -097C485E4D7911EDA8997D29A67B9C225D592EE5B3B79C3F8931FD7B1A6E3960 -328E1E2718E7F999714A6439F2DD59B5FA553106F3CA3F82D7247F61020C7440 -F88FE379239A75D25FE3B3F20EAADEE28864FE249EE86664C792D92FB6E0EB6A -9D3F154EE8B06501A347761BEAE8929E122790A718E2389AF824728904A8D449 -8DC150E294B5C9F4607019120F7255944A9A8D269ADB25FA6CF19FC52B50FE7C -B86962C94561EC3386D0D54E476AE255B82A242DF5676D26242C59391D0796E8 -63039DC728F0787DAD489F3DD3F7DE89561892A5E8A38A3B28B7E942CD331E9C -DA010D80EE13169C73F055F2941462B954C1602E2BA63DAD5578DA5ED29F68C5 -50A869EBA6FCE2683FBF6A22EC68D25B306A27B79AAF8E889E82E2986A8088DA -7934ACB4168DF49CB75BDA561940C8DD8A7800E4D0A7C1DA6A23C48AA319FFC9 -3AD59846534F647DA0263EAB436564B6A501473795D2E5B5BD1E071292F958F0 -909A4247E8714F06A959A5FD8407A4B5D701CAAA3D7AA7931E091EADA1821DB9 -A795A21744000A01933981BC2C3382CC6C2878BE0F3C91DAD353C9182ECD3DE0 -C8A7B8921F87CEF6A6124BEA3D7F77A4AE68731C0AA996A9BFD86D7E78BC99F7 -E6B1BA1CB38EB0F4F36CE7537C3476E85123D3DCFE3B925BD5564705E204B101 -FD0DBF5377E44978B52DBA6BCA2780DC42620ADB6EFCB026C148EFDE93DAE351 -9388DCF162AD385FD4F9F3A671FB07570878A52DE86C00255E93B45D928449A0 -36A0E59C8881CC43A72ABF81819AE18FBBACECB668E0F062591EE485CEEEE60D -F4F218CB633F7A0260B4884CF2EECF06E5705A197D2990DA5D9A7456129FB40F -C0C6B3B6B2FC22D4264BB48337A98C375DFCBF80080DF4AA0753293E91C96FA5 -12A0B8136C7C4C80FB032C68EA75660EBD1FFB27491B7A6D984054D35FECA9D1 -5FCCE108B2F3C4C23202CBF5B85BEE7F0F420FCD74CC5D558A016874EEE3B5D7 -8E046B303D46468BEAB588ED948712DE467C5ED1F42DF22C9B402C596D24B72D -2F609E7CACDD293B5BF0C9553D22C47EA88339AFD06EB3AE466EC2333C1C85A1 -00CA808A4264FFC89A485AAD982CE70C5EB9070BE28B380BC239FEE14C455994 -726DD99D74920AFA174CE979BF410E72A22D151FD7BAC732B7BDD1A4142BDB99 -70B521BAFCA51DED5829A9A36F7FAE6E41BFA981FF2F209C9F3DDD617890BA28 -E2CDAB7E51D49C22F338ECAE92B418855FC59577F8F199F5E372AF73701CD030 -273B84196E718BA54284A26D724ABF7E698A94A47CE3917467540AEC57B31E4D -3B8691B200EAEE8444AD5BA8C24A602B7EFAFDE2EF05BE950222229FE68CF9D2 -7B5F40456B0C5A884385AE655B9AA57095B4A0B0199E7C787CCE1E0C1CAB4E18 -506587C792DC259D0EA306972DB6170F008FC9582D4930BEC21D5DEED3670071 -85EB62A3BA27A30C9245F0380F3FD20A085DD77661C3408378172F830AE09837 -8380D1C07DA549314DFA349E9566259888581E212CCABA00BBAFF7FEABD4F848 -6672980B30A1968293CC7E8A6D7DE4A5CFC7BA3708A76122A3D2552F69B6E79C -0D6C120A098404EC2B2B67E80DE56BE7BAC2A05FA3EE6B68596E98E3A997303A -D0A072D846360D0321F3F856A8C7007F489B82BE253435DE87C8163ECD0489E7 -585ECEC657A0E040A9C1FF28C94BE2B2471AE2C5966778FAA120DB1DE340E3BB -9164EB236F63D8663566C306F263A79D03FA3C26F0A3A6DA8D0AA119EF05A515 -CECB66F7D06EE72C00E2AE1363D5DA802AE6FDD5DC07F994B332332FC17A7AB7 -258A0328BEC8F828CD3833F6066DADB4B62C42FE93F07E35D1C8483D12D52954 -42795EB0130CF2A6A2600FEDED32D288DFFEB25FBA5EB70E4B78601A0A653162 -5F6A3D4DB999E0AE48E8CAB9E332048EDE4ED293CC62B7867F3159C28D6D73B1 -3A951C22096D1A77A68E37C2F6CDF58FBA5CE7D6B4E5E3FA78AC2B0845F7CE15 -A27B284DEEAB751B1088C9E190F4B90D3D9E068AFE56EB07ED0C8E332A49E8B4 -65570124F18665724A3E52A204BDB06D68B452A4D63F4B0CA4DFA3CED2FEEA1A -D86ABA5D4B3EC7943FA2DDB74F93D3D4A1CF559D2EB3CBA0B986E939137EE099 -42CB3160219BB791799DDB079A10836EC5AC37E12137FC33266A7A6273987E57 -C97EC1F6207AE4517CA2D4E08CA90A5DD27015C65D22DADC6D06DEBC6BA5989E -F64BB70FC214E1536882F72ECCF238CB5BE51A261CE55661ABA44D00DBDAE487 -ABFE21C5178A131B5CB3 +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43B233BABF23DF8DB +B6C2BD2F04672F9A3B7FE430263E962F16A948319C51B8ADE6E8A80D3D88023A +6DEA4D271676C2C8615C4A0EA7DC8F6601610F398673A4D4B905F49EA868FEF6 +39BE073001A36DEA6C08ED51452F062B971740019692E221F4455EDE46AF24B8 +407A98B791F6AD525C72C09776247E194043281D04FE1CD1D8AD8DCEEC3045B4 +F95B3B41CD3300768D8A049815348BD7AC1004F5500817E3A267D694AE108BAF +285B288FC5F28A03E9D34FE5D9B2F9A9BB26ADE66B1CF8EB5BE606E83D213C33 +DE083C20D636EF780E761944FCE3B8A950B1E6E7568F33B557C6D59E0CEAF185 +53E609A4F58AC4D5269116F958C4D115C44B5A6DABAB79D3BB6E60BDFCECE108 +74CFBE258779F32C80CD7D9A7CEBA50A0966BD9961F71560119668C4A0C30A5D +ED91ACB30940502B24F33906D6E0F16F81DA87EB6D7FC8B7853BE388C40D75C2 +2CA8F94713AAA1561F5321CE97997CB4AF0E37F44E25B0F73CF4986422B1CD89 +8F861CA623004ADB1C28268D7F8C484AA10C9519B6AEADC95AFAA3304D60E85D +718B2F67D2B734095E5A92C90785252C98067DC05137BE735220BBCB7C341D61 +C4B98BFB1EAF883D38D7A93195A059EF82B42027F23B6CD633231D704B891A9B +03D11A646F13898F20321D7BC150C63FD6DC6BF9CAFD8DA759E95384B729A0B2 +767B9F3E55C682F7A248BC1184F7D294CFFAE0B246DFCC8F215625DDD4F49F09 +FA8D41CBF4A06152FEB152C61539ADF7E70A4D23AF8267D25CE3B12D39D62377 +547E2528D18DC4134FA3BE0437EE0B3509223D71F06D44C6227D62BD01AC0A2A +3EDA975E894371C07CA1027B102549A7D552FFD25ED2DCC68E29E71BBAB43C62 +57B0BFC6A953ABC2EF703F35D112F6B5460018CDCEAD17F149DBE5B52C2B9E10 +9818EA6D97C8AC884F6841C9B600A7D868F59C1D80E98DE0741D06D69858EC84 +1B33C6C9938B7E8A6FF6C12AD456EECBD3EBAF0D7331536B9F6422019FAFFFA4 +822E79D6D89D6366DA636CB708894FEF904F366E295F1CB808E78E883913C4FB +1631248ED6A7CF1095C0C61C4F05E4B9DFC47533A5FD24540AD71A0E2907B98B +28085EB88ABFC3478C9644594C7DC4244ED5A7C1CA8D960B65497D56D174645A +B88F12C2CF0A807DA314017984CF3C4FB7F47392A651EB9CFA961B28E2989893 +9FC4D97171BD5338673F5D1CE2C3C08D48A1B77769F01D5058236C655FFD864B +80E28F900191D4EB349AA5E400A7B0A0FCA0F3E79D7A7C69775BF754329397B7 +D18B20B2683CBC4A19729BA878B3C17EBA0A7E9EE297A5B67E915CAD92C8F356 +582B8299DE6A58E73408F525F7EA895C48A8F0D626A06A96A50348DFBE479D89 +4272576FBB0CD332193D28A8F11503BAE98F8E1D73CF5BCADF23DCD4E6586ABB +323568F5A34E359661074D50CD8D9DF27191FCE24F10225A5D721EFDE2547E1D +CA998077D2340B1A4ADFFF570AA677CDF3305D5E3A394BB1626EB35074D4EEAC +2F037CA2EA389F7683FD17A8E07C12B4CB3BA8C249C9B12D297C618009F76717 +0EBF5F2DD39A6BDA10A2E5A811D4E190660F5FDDBA29201B6F8042620397AB2C +E59267A7247B0463891831A6F40582BC3F614E5167B646A8F53D8A31717DD9A1 +9034034E705BA7884F0E0738307AF69D3517147C282747F2788462FDC4336A4F +9CD222908401A25F0A1F7B13B8DAE622DC965AD0BE62497420B70C04AF432237 +E0FDD043456187658ED93B0F9822A3998511DF05E59CC85B7B9992CA0CE3B814 +9723BAE70D2631F32B4BF93511F67179FFAD2075E1591CA5907A4C67701B56CF +A5E5B02EB4A842BA1F18D6864E5677359C2FB4AF5BCBABAFB053F230CC129B45 +8D15413F736EB07C571521C7DE2A13F2AC1C133D491B0A607197BE9AA1231D96 +BED7968788246B2E4D2BD330F802810F5BDA3760FEA5210CFC6F54748FB1D921 +5CC3624BBA5B8962AA7D94159651589540B17CF7A785F297264F9C1006D36928 +6E2756D3B623A6087E4B106FBA76255903C624C07E18A1AF4E185A533C640711 +86BB477A906ADD36EB6C8F4A12BC2F01B2B98412E4E105977640930CD998D990 +0254A1E5E9843B7A8ADE0AF6D5871E6D3D666465AE69813A2E26333213FF6713 +6F08D55A90C079A56E1B9AC655F720FC22B5AD8550FFF26DA7B0C5A0B60DDB05 +64E8FAF684F3A455BA9BC9278043D79537D201D520E38750335A4C8FEA887377 +879331B68DAD6B253F4FF9981D0F9B9550ED5179B15EEEB00E560A3DB6E5973B +63403E4E2F40A3D0B937246E9652000B917B1369741E0F913C14C2D2D6D1FCBE +2CEC4422177C58523715BD070002EC2E13D383A1DC8C84228862B6C5D3B65667 +9FA97E175239BB7FE7E37E14B96DD7960A8AD49DF428CFC13B5D3CC22E245317 +47B5244DA97F1DF954CED2D552477237CB23D037C0DE728E26C82738954EEA1F +F34FE497DA005AF03746DD2ACF77F6E6F2C224862A1D18AF6F7A5DAF34564387 +9E01DBFF49F8621C058C04C2B3F4F3033FF3E8A977B2CD6B2A3CA4A6C569B19F +C5AC457AE9AF334DA66A730960C7565E93A2D373C0E3DE14646FFDA05DF4C6EB +6D4CA8ACCA3C3115764F77B842581760BFB9E5C0EBE55308B0577A8F4D968CE2 +BA3361D79378D451DD150C34D7E901397AC63B33BD7DB13C50D678F5DE999238 +4B4EA15BD449C46F262D931478F5685CDEEC4C4201FC3EFA607AFB8F27AF6751 +125DE42D2FE2D31DE769B7E7FD8CC8C5D91343B537139A822A5BC4160BB5314E +37501F65B4FC35475FE9E03E34CBF6795AE86CE409500BD0799DE39FA69978B6 +EC74D2197C03632D3F59B85F404DB31240968FA75059B2581B101E028CDECC2E +7E5E25DFA106E9B8ADB81E82BE9ED3BAA9D03EEB22B7B67AB1262DF6AF5F5EFD +A5627EFEB84F3A5F92EF2557EDA2843D7D18C592635623CEAB14CC3620F33986 +410D6DBAEF9F86E4E6682054540E2B01D8FF2161F10E66851A188BC15BD6666E +8D3F21709F196A31EE676D28A2D12639CC2E7020A52910F052E61A0710DF09B0 +064171D05611451BD24FAD64716F141E1C41D3218A8115A3D73CA041D02B46D9 +28C3D07DF0FB668E8E91409C8D0A26A65CD737C075E026AC0A974C9BE658199B +3B9D82ED95E4646977D8F60717DA4C68767DBD7E8320D5AA1D5DEB2E6B009759 +8282F27D64F1F904830AAB501CDA4D9233FC2F12F77F0FBCC46E6B729C71F6D5 +E6F3EA02EC35D1048394F4EF2177FC5EB726DE5EF2DE7997166B8BE5B5105D08 +EAAC3481FC612665CA112D3F889A0E5B7843EFFCEFACA24A01B6AC2B7DDE02F4 +A9295AA2409A3756BAAB44608DACBB56840060037869455BEBA46F10AFC68DD0 +0563843DF111C6D34911CF13AA6023E5E899060B5EC60D0F78FDEF3E981151A9 +24903EB13ED1A67EA1977449716D1A5A7EDE1A2E9465C9C2B20A58AF02D9F373 +73E627CBF296B3A6A4670C39F3B5EA30D76F0362C81020A1777F0ADDBC6B52F7 +213FEE1718214087837049CF2AF00407639657428B9E8B532F68B631611A3501 +3D9DCA38090E227BD0D6D0FB4130EE866DB6B195C873AFD18DDB3B1E40F740C6 +B3B375ADCBBF628A07A5FACED539FEDA3379D3B60216C2EA6629BE2F65199D82 +FE3AE627D7C67270F3497AE75F7A9514968B5950E2D63C38DA240AF4E6CAE88E +E25167D179108679876E7C80C85FE1D2BCC2EC9B88BE76A8F5736E8E6B3A9CF9 +42E58A4ECB7914865E67C1468CF66D658206830B9380FE346DC2DC4BB56A92CE +4B5E4EA9036C177869315A2D9E6CFE97E3BFD7CBE0747D40CE5E8A3A0988576B +8AD2B1E4314C0D8A0CBCA08844A49F7E054D31BA7543730C0A7390BC4A288D10 +CE29E389A4791305D3AC1BB6F77C805F1032787306F78FF76A20A9E629899F6D +13356768D33D7B9E294E8CD50CBFB9CA02A193922BD9B4372C912D1689B6644D +52CAA30F7421E8114D077288119AD9514EF21E5B9989CCE2ABA0C12549FDF493 +FFB39736AC9EB72DAF45E4EA6057527FA9F5AA0A1A3F03C12F7482E465C766D3 +760DA7714D56C91BDAED507A5572BEB51A895F8DD3BD5AAB042650154FC7E4E5 +5EEA6194DF73AC5EE2CBD4EE26E29B1D2D0C458B4850BFE842DDF2EBB4E2A25D +C6A11CA2D8F346E2B736DF88A3D57BC0380B52396A6C039212699F5D3342EB58 +0C3DD5D01D5078479BD9FD10C07925556C0AB0F03606F33796BA72074549EDA6 +E33644F62CA35207D7421D2727AD8419AD1772789D33405FCDDC9286BC34C974 +A52297F5BBD2E541E8BB473F733AE5097BBC9D5FACF18DE4173B4711E28B23ED +16E0A6746A60F6FF903026A3900169EDA87D98396E762C2EC963D89197B8CD0C +25244806BE7CBF46BE60A8F9171731EADFC969C28679B025371E5572E52A0EF8 +B3FD9B4638D03E20BFDEC9345E70B8166D38846DCA68E0D0B4B53629C7E7620B +45E0A610BCD07FEF8814CF915CFB11119F42407D1C6DC1E6353451D40A382C2E +C74DF2A4889ED5A3495C3E973565F7178CA190D22C9693C10EB12C1E7A8679CE +4AFECFC964CC98111BA4ED2BA9B10292A71D5B11870EB08EB483922CE8628A06 +05E7CF6DF93E112B60EF888AA8DB52994EC33DC7277D7B7A4F913AD30257261A +D6EE80476A9A8D316D190BE6CE0046CBBCED365AB305495284FA921BE0638E00 +63DB2AA4C5F163340BCCD1061B469504DEE350B82FBE1689C1B65D095405614B +35997D6F0DACA7190D64ABA351705B17B23FE2EE5996FCD607F49F54392463EC +DD5B944A4B82FA2BE3E75E2946D483060DF99277340B0AB65A2042AD088E2B75 +BBDAB869D1940F64B50D25078519D18748AD64AC5615EFAAF4F3105B0111AD40 +70EE173ABE6A4ACE486B4E5999158A4377FDA6922FAA6E9305F48570D14BC81F +BFF4C663E1EA9D1E050534F9315A663C4C5DA52CB02EA6408AA473C32CB0CD71 +169BB43C0508A842F400240F0063243B4C459A1FCB3312C41C32ED0EE87F591A +BCB6D5D3830AE4645CB4D40336DB4AB6540B52E70E1EA415CC6D886827EBC5B3 +EC35CC5C136243B0C20B3C603B648B132B99D05F9B48263ACFA59A856BE74441 +FECF5C6D1FE9D1F4F9942F460961901E16017144C37E83C6822177B2A6C47ECC +6C47A1104460665E5BCFCF08874008302750EB991CD98D0D8D22B921F90B99B9 +05EE7C39F2BC2A7798157503743C9F2F267BDBE2E8A4CDA7317F81DBF8962E1C +EC02822CC7F770FD4D08D335904375BF0C6DAA0510771627ECB9EE69C0F47D30 +69A87052989DF80D9F4F19F75B070C3689AB3BE0966453F9D56CED6C1745B50D +813AE6D7E44B73423AB3778ABE4CD2C4DF40E14C5A426043F7057E2DFA2DAA70 +EA6723F1C7967FECB1E7C1C0CA283334163FBE31C32254490170C3513580A552 +19A5DD75E6C4ADCB12D33517A03318A6BBC7E4214266E125140D8C40F78A0340 +1F95D9FBEC4DCC55B71E89375AA94B0D55646F6C069561480407D0A3AC127024 +D7D1E9ED6B599A2A8766B8792F46D35508B66F302D289405B101A3C6BADA680D +8C56E2A00B766A4CB155446F862FCF17537A2BE85418E20CD77C4F1F69F70BC6 +17BB5DA8FAA876D0E8BABE273A19C04A8697B3E3CF4725E2C77C8761A9243F24 +96F8AE96399996001A57FD75106745AB4646FB9C6421F1D4EBF3BE533BD11AE8 +14BFBD6D308376B26E08E4ADA490DDCCA94BE8240403D5EB0FE3549061DFB668 +4105B4FE77189546619B6BCF3F9723E278E98D50A17DB8A4C46744FA21760635 +5B332689316BD17C966D466AE737FE3ED7ABC443ADD88D4823A10BC9747ABDEE +027515AC353A420523F85298029475D8BFD83A2CD00C02CA07974BAA581D2215 +A850E6E4C0A5E17E0EDF91C63FAC18C70093F40FEEAF0350B403E2806F4EAE96 +BF616A805616EE55C4657418C26CAF54187A6684821B86A76F15088AC4D5B551 +66C3CA8DC61E9810858D1204F899C7E3A1754F483134609F6EEE6364B1CC04FD +92C86EF194FA3249601AD722D75D1D395CD15A93C768EC60A486AE885683364F +93DA00A865C1035F913FDA69E7D9A0422880FB81EC23C00427F07A5EA3CCB613 +83C859958AC53FAEA26A6BB39ABA068863CCE3D447720BC31A5136E08EE58963 +093AF587A72112D55853A1048A2B1695DB2D7F13CC924F2F0902071260C33ED6 +30893A04577C0ACF0681C0FEC23E5404F844A83BB5A2F8DE1F0792196139993C +1152094BC36A6AE5BAB4B8281E506F485F0BAEEBBE71E174B7CED1E52A8242F9 +DBDF3E0FBA296538D964EB5B7A4E23B1BB0F59872C9D4FE8498203E3AC08B71E +D2B965AA6CD5D20DA6C83FDC86F4A5D68A58A72C5BB9BFE9BC755C56B24025CE +6F24443D3CF32CD711D3D94C7C1DC275DDAE3341D840090F97CB6CAEF274C94F +9F3BD3AAB3F98BA8A7B5CE5E48D1462DAAB37BEB1C10B410E8D33FA42D898183 +BD4F807112D78AA94509E33C179BF7C9E82E55AA7D09E128A0DA06A330CF4AF8 +5DC861498CE029CE8C1BD15C923A708F2E7AF98E4F7B34212A0CB417553C86EB +6DD46B0466F1A21D29FC5111226794ECFCA5DD4240C0B8D106CCD7EA6F03E133 +BB7733F055D6FFA04EF5C6F872B4FDA3E42F0F036C4825543D75682ACF71B548 +DED160ACD05625274799D0AE201305DA526E01A3D2A719B1B15C05CC09467F3A +5627860C0F36C503EE392E1786620F3F2287AFE56634E03566B9B1F537FD92A2 +913166228791871A8F8CBA1A1DA634E8224058052A10FE1E67CBD3FD21A6C07E +243CBF58BDC78577847664EEA5225EB8D6679AB17C563848A9D4D58995EA3609 +51C1443B752A070D9872FE1643F0677019235AC25DC2B29169D38308F2170A1A +A0FDCC59E6602197D2815B914041FFC7106DAAAF30CD97400C6D0826A40385A4 +C8520119A065CF32CF2FC5FBD8DFD29222528A7F96FDA533145846B3428F8239 +E50277C366418D713F84B12A5FD4F904DC13DB1844A391FDAEB97643A6FD2945 +942FD4FC5A4A35E184F23304B8B4D93D0C37EFCC4E106D4FCD0DA3E5D2117589 +3FFC2BD1D121026562C55C455C3585050B9460891B006F62D9D9B66695C3D348 +A467C14C0256FA9621CB056E7CD389505194FF463BCC4010897F9A690EA87D9D +BB3ED4C174FBADB8A4744C6E4A44D773967FD703EC37672F9993DC48BCC8A060 +6CEFE8E6B8F10886E15BA0466AF410B90DF0020FAB88BE493606B6A734EA85BB +926950EB10D2F2CFDBD182B0F133809612CCF6ACCAD049C8005A42FAF78368B9 +E7684F98DE421BE0A3BC0FAEE024A7BE67E15C8394F17FE84DFD8156C2A3E94D +08259E15CC657E8CE3088395BF6B5F825764E141AE15EBD186DC049261623D26 +8636705E06C6E4A1F8ACAEA59F91B042DF5DB9C2AB986A784384706A43E5F18E +42C29CC1CA86D4F247B3BBBC89F3633EE074DCA4AC15B1E33EE4822812A62E88 +C32B0AA57249980EE17AFC1346074800FA529445D18649A0475246A25CF325A0 +BDA06AAF392FD455218B13D9ED577D51A9500B9FB7860716A8E2FB3A8C4BE3B3 +6656C6A5653AEF00184020ACA0BCCBF48BE3BF91E11C8658686C89848E714E6D +DC158DCD1C1BC03B83FF94C60B1DC71CE8A86B46DBE661C9F8F4677F8A2C7CF1 +E41A91EBDA2304735147BE66CDFF2673F09D408297302124C127F0B35690CAE9 +CE1679120CC4D582FB69550AD34A047DDFCD9D411724554CCED753DB52D6AA7B +22B0C55EB698ADDBB0F8ED15C971AEF113C74B9E25DA29199237B98DA4023665 +C2A63A837E4CAB38F8DF37DBAB5DC80C0AB25B56BCA5D899F1575E61ADF75676 +F48EE26C054AD9A75FD88A3E17498AC26FD4DC8000A125D6DD423540B8A98779 +B28CE97C9CAFAC45693FF43249E4B559E7F19FB349F94B60AAAAF05B5FBF244E +982B4B51D997DA5811CD43E1917DA885DD96133A5CE1A290DBBFD88AF285A879 +D3136C41C839FD2276760A7B4F21F4026AADCDAB3F113FCCCA9588C7FB72643E +AB8F6D8AEAD1DC3DCA6E436B3DF24E7DC6AD37137B49327871EA80F3B8AEE932 +D20D9A5B4779DFFAD7B3E5D447023D6433575F8F5AF589D7E094DA3786555D0C +046A427ADF128E00AC7B458D5A131A130D6F49A7ABF47833791F172D69FE6393 +EAE0E90E7FF7BC2333D4E0215D5201E4B209591782F8A664335F67B9DDE36DBA +793EC77E5EB405862D14EAB6A99218B3F66F11EA2F345629C402BD8FD9CA0AC8 +FB5A2E119DAA9F80083C9BC54F4586C44320993CB5D9CBDC8F8522001F82A16C +E307F175B794F4426E5D273581A6D2844444D82093FB03482B270D693391DEA7 +CB26D4A418E48A2989167B7DCE251F0D53D5C9B29D359A568FEDB965DF31CBF3 +900392FE739A2B43BFA2363CA74FA72668FC761D1A17B9C0B56D6172499CDDCC +90EA538A5526FD5AFF81D04BFEA703E5DA963B11042723106704021C1B90557C +B7AA96E076842E2C5F929FDA6D05E0B91B5548006EB4A6EB262077411083C2EE +D51D0D237A85D6480DA41A9D8DC24EAEC0C849E0D53D9FE1E54ECD82C957B8B9 +ED68D7B29A43F369C28272083B7B4E700546D293DEDAC7E74EEC946B4412B0B2 +0639AB78E79402C787F50C4F78991DBC12D73F5B371BBA2CD9535EEF0550084F +40A4B2C4D178C0C001E63E08DAF15D064426F6F24C49E02AF5417D18BB7997D1 +46CD6476615EE2F496EF2D2E5A6DE68ACABAEC2033F9F3689D9F8CA23483C81F +8E9CC42B7AF2BC3FA80B68FD37E3B87FC27AEB7AF6D2DFF9B4B7A60D26292AB2 +36461A349D3BEFAAB8918729204873D7793A647387156252B5A1B975639E02C8 +9715F8B4853B592ED9E467BA41B32363ED0D7557EA0AFB8EB093B4CB1FB3CCD9 +3369A67A60448575C7CE305DE7C1B59DC21DB0132F2B67B7B31EA068C5942DBD +7D1BE9CBA33107AA60AD033EA5B3618B83BEBA01BC0DB592BCB0796AF520E8EF +BAE6CBAA5DAB5897040D6CB1E3EEE78A98B59897138A084E64E116446EDAB213 +46AF2FED3E303F05D7EE630434645AD21B410AF8C1808A79F96CFC56741F62B4 +431AD2FD90CCF0A876EDDE18506E73B4E390C752DB45A2E8BB824F2E0310C59E +864A74877AB522D1B477F5A3D7ABF80CC031C2F2BE5D633E49E6D10EB6EB8434 +F17B15274840BEB842587F3B9AED05B97DD603AAF94D5FA688675B55D40FA43C +6D97741D9FE5F54C7D441AA62D48801769531ED7EFB3C438EFB1B513E93686D7 +1738FE955FD7C67F11323E059BCD0C4BEB275C26835080FD2AC78DE88BF65298 +A8EB4181F48C420D219CED950E4C0FC0330B49547E593F961B2BA33F375B75AD +3EC510349E6F496EBDCD1206243547DEC26F9A61DA31D6CD94A54CC54EC81B0B +176D21AC6779041F73E5DBC0A2107B612B9B89E20C373A057CD51327757DF12D +01742E9AAFACF24F24D18733EAE10725F5FC08EF5B42BB4E018CBD983733DF08 +E018AB3151658D98F325882A033464895EA4D374541DCC18D8A4547FEC9B7206 +07AC80FBE732ECCE672D5A6EC117F5436B0C476C504EF844C1AC7D50EEA75A40 +7543DB4109218B12EDCA321C46FAF5AB028343B05EC8749D3D46AA18834BE53E +378EABE227B936313A58950A110572C54D1B9B2BCD7F7B73A72A6BE8C328275C +93F92B93FFD7928C8F6D24B6C471BE685A850C35B267F877AD20CD6E242F7A13 +FF7D796EAF445F8870E9593BE39DED366EBD62A2D5FB232390D7239CA97F447C +5617AEE05875422520CA2FE3B70D654CBA4A65F197A31ED82CC4A183ED86D278 +180D66D97CE9B52FE24705604D6B61E916B27ACC7B6562FB568CFE3D6FF8324A +E04AB88D33935FBAE571328911AA8D16133C85EEB531EC88BEF7F2FF559F1254 +6E62683AA3563663F85CB5155A9563A3B3009F37669FADB586A6D968C773ED08 +6ACF3526A8C9DAD081BD0A6803D8B14E755112D54CA969F0A1407C8FEDABE940 +3B185234B1255A2F85ED31CAD545CBA80D61955FE1307D53A8436606D292CD1F +827CF41845BE0BF82132A47E66A414693E8968DD6F70752A9C9733F76ABF6CC1 +4F198DBA7A8AEEFE81A9770813DF2B1B539CDA88BB644A361F830748415DF4D1 +19CB70C9D8E4CB2646351A7610E9D59C2CBECDE4BC324C436303E25F8FA11403 +FB104D2296B4AD009FFD8BB2E34ECAB2928659E5ECE5F23D716709150B83E66A +3A161EED1F9948A462A82B6F295F739B353C56CBFE28C0F991395F0B491A9A4C +1663424FA8C066B5436D54BDB9BB02BE12E2F6B422FDF15D13F0BD20EFFEC7CF +9F0B9DCD5BE324C611B087AE5DC680F5A10C5007ADBE32E24FDEE45D8A0C9C49 +4449C69BC13B83065F0926787A6AF51D620A4B08C52DC55AFC5016FB2C4F72E6 +59F9282B79BC3FA1308A6448B424DFC50A6AADA2C7458D8857AA53CC3FF0A4FC +B3B2F24E2A1F06187FBBA32F88BCB54AA8B1B656C22E2E5B660AC80C94AF55F5 +F1CFF40A298F1BCC155CDC51FEF9DD5444CA233093AAFA54FFA58AD89069E96C +E2BB377DE0868240DE3669ED25ED90842B8F58CDB75221E9F052EE20C44470BA +5BFECD087218EA5ED31B1CACDCEA8E30C002ACC4D42E652543B0B5C900A42D12 +4B6983B5CC389BA8A1038D30AA554490DBAAEE24C8A66F08FD91715C7A942BD5 +229ECEC9A0453DF6B52822258F20C4027148117C547B60FE9F65A58D52BE0AF3 +5C5806FE3370710F1A72D8C3318221BCF935CFDA487CBF3147024D6B823DF7D9 +17260B670507BFB43E6ED108330754F4DADC600746F71F36010C9AC4EE4945CB +DCBE85A8854D90E173A1EA4CE2AE7FD0C31167CF26116575F4B3D64B9BC13B77 +48AEFC72ADCD6196E6FDF82F6D92A3F11C7EA1FEE81E086B9D705B1AA8697A50 +0C943F702F820CCE6181B6120BCFA6668A5411221B1CE3D803AC542FEC3DE652 +158637B3D9075BD4AEB1076EF38DF09636DEBC6974B464932404F3017E135ED1 +0E446B4CCEA5FB269B7EB5AFE4321123A5E341E6E376A63E8F435E7B82AA62D3 +616BC1FB3BF299EF2B4A66134050B3E102DEA12BCA028F402E9602317E39F759 +D7ECB4262E8BBFE62567F2827FBB1272331F2F4F92BB942E126A927C59A5807D +25EB01581027815484BA6E80A7054DE61ED28EE040D6A19B05B2E385073E6A85 +E1184C2837691CAB4D92D5704A37090340AAD3E186CFA193FB31F5EBE578D011 +F2B3392400F7C8894D369A474082A2889BB0DE1E2E0D0646A3CB0E5628BF6C8D +599EB62602E25624AE69AEF32464B022ACFB8955443965DB567840FD9AD944D0 +46BEFE04213E45FCA5D05382B5B600008196B72DDC410B43C22384EA190779DB +850E1F0C8DCB696CE529465BD1D261690E87B765C82C8EC81E00439C6D686215 +CAE8D2A6759B3BA43B9BDA541D3F3F74BDCC5EA35F7C4AF039C7D12B6BA91692 +18D70EF8769875B524F1A064F5474731EBA0B687076CCD14323034D9063CF404 +AC2E77E5E3CA28061F91EBC607F70F182AE7219BFE341207F12B03968966A34F +5891EA3C22A09D010E11E6D49C77FC969D1EC519EE0EEA3AB47942F05174AEC1 +2CDA3F68A6FC53FC2D2763963AA6485EB66391B6C8D23674B4813E517542ABE9 +52D159905D49892B70588D7E33DE3D9F0ABC08466DD6A28B69ACB887498DCFA8 +924BF2FA4EE3DFF22FAD630959393CDF7A777F4A675282381019B265EBF6E4DC +9D1DB2764AC374B8DD7552C7AA8AF24C247EA95D919FC5E16E564660A5BA95D0 +E2154DBF74BBF68040C8C8FEB1EF2B5340A411BF5CF5CC741EE44851BC050EF5 +7D02F7D384E448E4B5EAA0937EF2E8DDC7E29431FDA1ACB8B15DB19E9BC6775F +9F33A354F39792A7CE14BC4C7BB2AEE4D4C8D12A7AFE49E0E6F2A99A9B7E9291 +2B573B7A605F448B2B9C9F0A7A5EA6E86E68589CEDE6537B6A314E14C3380F88 +211D6263BC46395FC6C1F6F6E52CB85EE1F6E9EABFEEDE551CA7D54BFEC8A5A5 +3660E975E20932FB0A42AB5ABECFFAD450BD2B9FB089EA0163863D8F1EB972E1 +C4C4A341B7B15C3A53D5BCD1AE0160750BC3F280190480080AE5DDD8716B7193 +431459C8E2D28704C118EE201D1489EB37F4E77BB3E1E2A3624FE3B54562EC92 +A7F85D422DAEA4EE79A32C52FBE92DDE6FBC8C8FE71533C9CC4F5AD5EE87665B +4A9A9E06210D051B4E1CBE457FC66034DC0C98C6065A1D5CD5FCE14D6A06026F +A30AFE8725F5CB0721391907737F7A14F73C8D1F0261BE1CB97D2394342AC118 +40FFE4316F351AA77599F248781D02DD71535DB854C81E31DC424E008D85A929 +F1F79782CE6F12FB25D94A4DA01F9E9EA19C80F8A06091474ADC9CF785BD74DA +723D89A0AD388572A582749A8497AFE8854B5FF31BD796C906398024E381D64E +02480F51B7C82A5CB73E94C999538CBC2AABE5097D32F82072AC9161C0FD404F +DBB67285ED21580DDE5251430348CC31727021890B5F2DF3A242B730176F04B6 +9FB1E640A4C07AFCFD6E9E7B3B124883777A75999EC0EB363B843B494C893F39 +0995BF8720BE94E8731E75613E690BF94A09CEE3FF9E093B9E30DA99354D958D +49B86BDAE7C31461537BBF04435D61F06096B6EF7CCCB8A085E27EA8D1DDADD6 +BB90E60B7EDD1C50F4CC8F669F66E1348700AD3535C2BD8696D484481C5F9C6C +810F6C4A2EAE4C85C73135133A1C8409C1FB94952BC33B5363F18FBF7EBF36A9 +9CEC9EB1E01E30F806BB6D7A51DFADD25F98CA1F23F99613171B47F58F9A82B5 +DAB61F7B64362FEED0084D2010400FD9D55AAF21022518C90D6BD0BCD92115E8 +05280FCBC0A0F35816832182E1BD9D95FEC6166FFDF50B33758643F6E550D8B4 +B2295A08F8BF6C8310144B6CD0179172C57272E5B4DA5BF152A0BFF3100B247B +A47094088DC50A1C1FC1FA9E3A777879B20F6BF8494EAF7F94A1926B4D256C8F +73687C24CDC51ECC8D3E3F13FC162FE73AE0ED041D869242741A6EAC01E51B1F +1B135D8B20594AFAEE8394A16DD4971E63DEA454797F1B4C7C3C43186E6222F1 +EEC1484EC1101EE50288D997E812262E430C238E15B8B9982CB48EB30854071D +2F1B782088F3264F27C3BEC9C1D103B38D44AE37826A16BA6D39F28528DFC4C6 +E641B45D24E0F07405FE5441C2CC497B332E904266FCB2D943365CF7E5DE0883 +F2C09E3C2AE5888FC0C6C48867A4F68D75929C922EF52A5A3DE0C2659ED0C8C6 +526FDA570E25840141A9EBB16CC34DC0B3669E802C79875176CB8633A27097D4 +78F2C4EF029145FD2BA152B209AEB3160C443A23373352DB3AB46E3177DDB1C5 +28556ABED758A7730B052739631B8D77D595A551349495D32B7C4548402AC327 +AE4FDB04E5DC9063F4DFF450CFE98939B157D8D8FBCBFB73C0D4FA5DA0CC4AB9 +694E82F241015BA4D941E869D478D5B3FFD9EA7A53E89884BC9B1D802B2396CE +869B0039CC4384832400EA435474AD459BA2F911D46085F85763C25DAC75B58C +D2DA83830BDC5D53A8718920894BCD5CAD7847C79E923873F4658D30C6483902 +07A0A2DC2486BA43F96EECB74C466265BC8DC0D824FEF328A2D4413B7BED19A0 +964BD86C79D167E08DC7D1CA2AAD009B2798C1D1E0785A9B7B2433B6BD77628D +CDEF5C2CB68020A768E83A52A37EFA958C855ED3071A6DDCA0116997B939C599 +3F36DAB2D5FB298BF97DA2BE167182120B8D189756678E58897586CE44E42163 +21E247395C248DD04BF10264C178464F0BF3B472C1DD3FFA83653A23BBF8FC13 +E90C2A0C7F687501D3C7EAAA1BFBEB3B791A81F56FEFC37FFF8417DC0EF0E44B +9B69965FE647DA22B9F411DE439C381143B3721DFA96F4DE812F6186A731D4FF +67A04277EE7ECE059637F1935A659917CEF1962D8CE52BDDF85641F095EF330C +E2EDA9885829D4516C6AE6A4F0167F6CAFC19359F9E2D398374931C08D974584 +8931734892825DBA73C1145309B4DCDDE1108324AA810AF6B9DCF2D977DC1211 +934241B6E38E788F946221BF83E3418F0578F9002E110B1DBCED0568F4808826 +42F545D9AC8F6DA8C0B12C70FFED1806A1060FFA58050C3B55C36BCCBB791FA2 +915BC02F500C3DDB2BC7C394187699A474119C7E7DE5537FCFA57D2B57D1141B +5C00B97BE5F1527B0D45D2CB7B12937E31465D53D15C9B27835266E4EFD3E48D +5E9BBA0D152479B4066D7C3ECF066D2AA7EB3C8B059EEE6D191051A49A91D877 +0613CCDAC78D5EC3FF5A626BC58697C2223BF8797A90B6DF06EFF82E7E526EA6 +D8F829020ACF6C311D84D4D071C1F6E3D23C58339E906816108EFE733FD07320 +57930A679AEC5A208E83E4CBFD52F13F2CED976136517B99F9914221614AD6A9 +D5A502F255E73F9295A50493A9C69FF2B608EEE0DFA43A69AF97397C54D0AC64 +B807BEEE8B12C59B43867CF78426F4C890D4E98D9DE885B074587B60902C509D +70195138B30259B4FF4CCA4BD972516A2404E6934710DCF368F1F5E480117028 +E4D277E12829BC465BD4F0A64E3BC7DAD26CA50B13A576B6CFBD098FD3A078B4 +19D275595D2F3EE7E09B6263D58BDEF302ED9D5381AD0FC97471C306D5B1DBB7 +3531DB23F2EFF0686B56C534EAB2D77D7667B0308E39A41D26E06380AE07A67C +933044A653F865595750028EBB94EB9AAF42151A81FBB41458AA75F8DB653755 +C0BC616894E63DC3EC7EF042C98C42E6B4BC9DB13F960BF3100D5E21458511D7 +D21CF53E5D07F80AE205D24B39AA948665549A69AF5CE99E5302EBD7D424C8D3 +33D6EF060E8122A639D94B0178EAA7061357BCC6E8078A53B445158DA67A1195 +3DD0506811AD74C4122FFF915DE5E36D4AFB0B0212CDD740305DC8B9B3BEF169 +A206B05F8295538E6FFF93D768DB71FAB6912244971A4350B8FF6D1AE31E9577 +A660315296356F01307BB7F524E8E00F00B5971F639E84E2207BA0EB32B7C267 +CBCAF9F0B4D3A1A598F19A8856869E81BA7C0F36776B54EAA86327FFF40BD9C5 +A8652C95E47778F4E006F56AC5BDC4B4CD8C39AF81C028C777E7C72499BE60A3 +0F3299F101C87EF0C4516F2FB377809532E4658E977FEACC5E6FE4AF15657843 +058717A650EFEDC9F861F0527591413FD441A260F09D07C8897EF2C3941DF580 +656C3AD9EC1F1F1ED68C0E54B18A54D87A600A67C30820BC4881D4A107A8264B +940ADBB05EB1D5EB60F8CCD51C344A009D30B12AF99120652505F6C4D35A9A72 +2B10B0E40E1640748AC38FF56A5DC127421EB6B243B65BDE5BD382F6E073DFDE +87CCD38C00F26DD2ED3B1ACF00006DDEE953CA9B7E0339A52599E0028AD0649B +9A2B7689ACC0DDE6A7BA4A8F3EDF82BC53A8CA5656F79B42852F49E1BA71C639 +C8F9BADE025391A40E7DA5F77B2C9BF050C817F067D6A88F30517CDB9A1FFAB8 +1677496C26BA0746FABCE226FB1A1235ACEEDA29E28B621BF3EE1B548D4DE72A +17D1764BC3D1253089C680148067E832D08D6223939DB5BB12545F7250BFDFD8 +59FD7CBFE909D3C086CF43FD63EBC772DA489C7B8330AC036C95E9D4C51798F8 +F56671A76C7E942933FC49EC69C8A28410201A73770D02B515F0C8D4F478D007 +7754D1644C6C6093A0825F85299FBF003F3B020B0D3997A4BF0D642D34E2D53A +DE9D5A7155499BED1D5399F1A3073C3FCAB568EFCAACD991E61E6F1B91BECA3A +F89CFC8934B144E78FB6FFCCFDA700F4631B64142998B25793E7F25CBE883A84 +2A03009F6B3DA97A504A75E9B9FCAFE95FFCB65E6F486E7D9D2A4B11F77D119E +7C34F72D2B345E1C2443B4C44AF4BEC5187B153C0E9B86BB0068355C2007E893 +3393800BAA45D3F5B381DAEA675D637B1668E155842DA8DD6CA9C42715E74BA8 +DA94356F2FA11144262552EF847FB073583A473EF3FF5A9BEDCAC77F1CEA8CDF +7DD65D9E5FBC561D3795F57C9415783E22DC1DE08EFCFE07C0BB7D02CA45E378 +3ED8617634263063A6471C5B63EE6ACF73F149D83FF3910A01B5628D1F9E95BB +25B6E3F1B692892174B29C9ABEAA60488E2C22C995A70F3F93A344352F82E0A4 +DDCB7ED99937824D3569DC3477A2893F1FAA4A5A19A57138BE111CC31964F8B5 +3D703E07D02B8E618E4FBA0A55E9C1AC11BBE12156AD7421155B13ED556A5AF6 +B37FF508F11380957913A201EB8FA55432A23FAC88D7759DE8C6FE9001E8668C +2D63CE71C0E0490D98ECB83C353DF60BA0B711C265F674CEF628EB2897B685A1 +BC6CB3E54EFC1901FAD8EBCEA33AD4AF382C828B77D9AD4E39E2A06EB7F405E7 +E1CE6B18DFCD7249C24C3B63C5EE3F027CE76E77A23B16606F7C6994B00CD696 +94F5E5AFEB9D67290B664D66F1AEAE9FCDE5BBCAB3731366C30EDAB09E9D9322 +16389F4ED434AFC786DF8442A38E695E291D6DE44E49035B1AEED09C69C0F177 +40DB6C3C0A804B8C3002E212AB2EB1F036C0051648B3097BC39C01A4D8FDFFA2 +3102B185ADA83A25DADC21F526C954CFD354109B77C80E3739EEBAE40E98932D +C1186EC1F9D0B5D532F032FDEAFE50B41D47D42B127D47EBEE46243B41808A4B +8E1EA9BBB7F545E2226F4469D151D0072FF8C190497BD9E69F439DBBDAA1F238 +7F88B1FAC8099A67D9590F62B0FF8A1E143F4EBC2F610DE345E00F2462AD91CD +DC55493CF4C3E7022D48BB036CFFA2C8C2443C0565DB51A50513E4C26FD93B80 +F52027F415D59F0753EB916C69D015E9FB97A5B3344B654BFF1D4A7A54F868AC +4560F0354FFF37C768EECC0939025DE9E887B674E93CD2324742F026C9D12D21 +CE234B38558EDA432E63AA3AF95912448F116386D887433404982CDA4BF3E3C1 +9B509244046041CA85C051BB516776E4DE0853E899E5DDF3670D22AD5D968D7D +ABD4C0113DE640EFD3E54464060D8EF87D1EA41FA78AD34CEEFC2FD37984B6B4 +4A6CD31948EA28E817E7B9892545D2A5D351C88B9812213F8D7F3AB997078A0B +BCADFDF34096CE7FA7626FF493A18137E1103238D9BACA1CD7F926DBD96208B2 +766AD375EE6BE13EC62978F9AD2C98679D95E721CF196FFA6A0883F66EFE7766 +E222207ED8B2B370B93AF2EA2F6DFFB48A1C09FF7DBBB8667E435C9FE2D95098 +4F43E8AA3D9E2DEC06CA13F04739EB37D1324AE3C672C7F56DFCEAFD48E19682 +0A06D04B81378C2251F532C35BB050DC727A672714BC8A4438D5C2E389F0AAD8 +C9A4D3358A383AF79DD011B6C588B37FC0509544D9218AE84B5FFC2DC50E8680 +B8F2C4955F7382AF43AFB8BC7D410888A4B8663C683A021BAFAE20AEDF094D8D +953B5DC77CD700EF7B271F8A8E8BDD06E60A6EC5F29CA105356268F6A970ABED +AAEEFBB543A6D3929FD6A7F83F872DD862708ADF3AA492876950F4ABC81DDAF1 +F96E4C8AA6F9297D04FE8BE5B9D2717D73465D1913E946E666C7C1753AE32685 +B6258A1A1C4029A394FCF03135C91B19BDC4CA3F95555805F13A4633ACE1C03B +E373015D0163D04C28FD794028EAC9FDB42C13DB45E7A3B8FE3F42AF850C0E62 +A41D2EF3FBB2CA136B8D0B4B2A5AF36C564C89D2EC18285185BE550411CBB844 +C639DA99B7814551D7D933D27169229B7553313F5EE126E1FABE2C8E7E015F63 +0D384B502D41331AC1DE929A3B9FDB074E0A8781BF5C7A3590A1244B95DE2E28 +D05A74C1DB02662E52C75BCDC4101D176CB0B889E33DF92F9AB6CCCEA9FBE268 +E8988862B7FB935FFA7800C0F171D9EE640B37943069CA576894D8E45917DE8D +D30CBAC75F15868621C135C494761F57F22766A8E815A21CC1428BD49D13B4BF +7185FDF23592E07E539E99565F3F545505F2C396F2EE4A38620DC64400FABFF5 +423FC1A6D158F7FB0F307D40506408FCC0B0AFB547F7E9F02BE1CEC1F9128C3C +17D34ABB6F5E905DDA7274651CD7F7D30B381159820C69B17A0F0BD26D6E9199 +D1115B82B5601AF711AF663287CEC69C9E0775F7D9B5595A8E2716AD6FB08665 +03087CF360A26229C26A9D52DFBA89A67C96312B1DCCC88C5930231BE1C4D74E +09C097C6A0B71870066C66D7294E21DCD1C79D9EFEC345650D45F4C929A8655C +8FAB0E68F2097AEC3E5EAED04D21CF58D9D735787B892679C0A017FF8A7AFE39 +202E51E33E029007AC9A3ED579BBD8F5B9BEE44C70B026D9BC7094F9C07EAC24 +F0B65FACD576F8210A7797CCD7CC1F9DDE5153BA8FE51B3D4F237C8B31CD285B +312AB9239B853698A1AF8069CBCF0BD3B14E71A4CEB7F8B2602D8F8871FE1056 +330C2C7EE34DB2E9BA60285284FEBC79674B6F837C1B5BBC2075FB5FDD5FD14B +DE393D962C1FFD1DC3CACC9B6BAD366877BA86D3D3BE5E6423BD423D093888D7 +8CB5E7DFB9F772BA19D33C83C332375BB57952D12E7193118188B8697EACC2CA +8F1F91EB73125B57DAE84822B0E0C4161CC4AD593103131B88DBE2E264ABA63F +75E1F2F5DC855B604D6C9EE8D2DACA9403FA53BCB4A42D7E40D79BCC68B5D4F0 +D6E0C46866F0916BDD424F82B55BDE1CEB426EEAD40714823B3C1524F421BE10 +DBC812BF9B17E520EE6F493064327A23DD095BA672CF9D7972B5FAA11B1F88B9 +7179681258B4905FCBFA4FCE65179BEBCB0F43CF449F3DA6CD9F0F03245769F0 +A14EB72AAD4B232549881873F13173099CC9AB0E570531C2977A673628DC44D1 +FC27CD1A028213109C49E305763F08DA936707176E0EBF4E8E7CA2C6304AB2FC +AA69424AC17CC4E401C86F3F29258C86C31983A87427B4C0A5068C8C7A16D7C7 +3CE86F97D2D5D278ADA517F24C9B2547218BAC57E584FA3DEF25D866D6E5AEE9 +16B21381F44F7B04D03F07C2C42322FB182C0AC7F2CA9B18C37267E1C901E8BB +AA954828A59EE4FD0A2252A1F976B7A48101A6F9D7D7DE6A6E13D11DD0B4B209 +16DAC303345C559599382C4E24760FCAB30E7BF44DBBA39DF4C6BE62CEA6A35B +2F2A3E98616AA3918A157FCE610C4B679EE367439DDCD20E3333F93C39123D22 +7683F987A96CDEE59B6FC2B1C2CAB4C53916EF0F3449EE6C1EE230DB49EB50E1 +F459D318348CBFAA3A2E4CC4AE7CE86697974F9E45AE5468512B4A490D02D638 +2FE7D9DE30D0E5F15CE8D6CA9550A11077F72F4A0416289657B2913B5CFCFA2D +C46F5E194E6E5BC07CA5215A7A83492D281D03D1DC047C030A3D505C6505F23B +2D429799034C9F278F8B12B70F09B088EFF4ECCF4CD63F9F7EBD9F4ACFCFA793 +7A2E482C519C2F5EB5D7FC7C533DDCEAF07A10FD15B3674298A1B0B06151CD26 +1B5EE00CAE37F25A7A06D2A2E2A775483039FBDDCC05BB8AC560E2AF4B13549D +B06BA039F058AB6791FD78FC69136561DA75FC0E58D7F3FF47BC3589F04F1C9F +A4935EA75AB4FFC48117CD8806B481616AB22E0AC6601932D966E142D6AAC5BF +F1DCF39A7FE860CE9B4983321E19BBEEC9B6CFCABCEE39D01BE5D1E674B9A167 +F1A69CD2BAA861D3A51CF6A1CFD84EC28D57E04A594BB41D8D168F17B58B8DB8 +E3628A5A5725E20047A0FE1F6504C489979DA837BE45072F85E2BB93308806A0 +A362CC6461AE606FD134C04177D2DB7289B1475725761EDBDC7B0A567C58E873 +7EB1AF6F77962DCBE577B740B2F60A5595137D4B62EC2375C0CB7983029BA772 +7E04BF1111214DCB1D1B7097830C4EC705AF71C3094CE30ACCD4E39AB90A436F +065D259B8213F929ED805E8E7EC17B8D4E73729A6AB34C9A7F67AA5CC6888AEC +55F4D8A963B565B32DBD3C36D81249E7BE1AA98B36C9F88A8F6F4E2D35E11203 +B8F9848D34FB9D92737A57A75932A8DC78B123F1CCC3E38D9C991DF4D82AA8DA +F796A63C0A1B66EF9B8F8DEE22702BE0D79C81597DFAEAF643BBF0E44366DDBF +77CBE0664B3E676CD464788B28A3A743D97D66C703A8CD444EB5BF0B7AA8EBD7 +1E3DE4C2E1CB089BA4C9CB4D80BACF4BFC3B4EAED1DFE0B9F184096D6B739507 +38E987BB27D0D284D232D4E0519A677A7568CB785CB30CAC3D4963EE8F0A1F05 +BF185A9A1EB3D46EDB6100CC10E5B77B3DC3FE650157D380918B987C1682458B +5881F2910FA664F64725E098436CBFCEBCE71D93720ED179C913D282BB1D484C +2DD72FC4E8B17825F3170F874EE44908BF7E0F9B25F3B83258E6FFB1974A88EB +1D7342BE1039B992E51303B6F192984C31775625F72C8ACC31425F0E0431BCD6 +ADF5A7B7D9DF817F76AD8F957377CB5EB50F0CCEDB66C548876206BE5950D6DF +9F3891C5AD3B6E6B00F5F583C9432C727E0F9CDFD53E36EF05ADE5F77BC8F976 +9EDC2921629C9C8783F9989C05845F05AA61D5B8F562B5E802E02C8B885979A8 +38DBF443494043A1982D0B357EC3816CB558BF60E2E7C4203062681DFB3A2B58 +FC7CB77AB2A86E32A77F804B4240A3811911ED0C2CC81D10AB5D53A4F76BF778 +4B6EF37E2F0D6AD0A5925845205D39F9BB05A7A1B93B6BDEFE500F5A392B1338 +22398EEA9C0CE08C72D0E7402053ADD412017BA603BEA44CE46FE4D5F00C79EA +B4F233B02DC96F1F12A706920D935007B9BB5C6C7101D3984B528E8CA4852708 +E428BC51752537FD85CC027AD0D4A2B0CB06137AB6813C39B50ADC6E048EECFF +265619E546E1FD64D5D32A928FF6FC99D38476348844E688A0C9DB11E3F92DDE +3BAA26E55873E6C351C3F7A9C11E6DC7D7C52AF6B29C3ECF44450A358FB1EA2A +50F4E02B8DC51388B4A88264E2C97E1507323F0FBF85AD460166FEDDC7E8F002 +495E18A3501C33AF14402836570D22C1F91AC9C83B5E0E7C92FCA1E7A6E05D04 +6EE4520F4E3D7D4399339BADBD307E310B643597F65F616C687A14E86ACF636E +B95A64CB80B8533BC5B0219EB7B749D1818D0C76B42297E28FE6C56796EAA440 +933E5831B58E7B97DF6C65BD4AC1AC898B382598D1FE4D89400B6F34393B98A2 +9DD34642ED9D3ABA2A9547A8860B1136F73C5781FFE679A3894BAE60B37FC2BC +FB7AB41A5CCF5B2166CF436A3362F36ADAF8843390C47BB5605AB38637ED07E3 +FB463F5530449AB024974AA3E378C058AB0C7C76E2853C84F3AFF51274359C0D +B704D1156F3B60EB11E2304B8E55C7E2A90737E2989D530F93DD22E4F8F8AEBE +F6DFC3972A79511125B1EB81EB754787EE58D4B6F2A04CC375D2EAF20E442C74 +7E597363927BFD987AC23E3B50B16E4645A33F45DF6684D3DC06743E4858906E +7D8BEC5DB7798ADBF1917F6C9FEC3805869482B6EC62336A4CE004CEC7369017 +676644FCAB5B3E3E97DDCEBBD7DEA5222623DE989FB09746BD3F36E2722B91F8 +1527E986BD486B25F627079694A3DBA8FFB31D09A73C4BBF062B9C06A4B648EB +2546486D7050D1AC054C472E1E2A360D3F004EEC29D7B43E0A81274BB539326E +522C68D0A717A7A713CC3E6E7C7B4D6D2B1E26812670CEE639ECED6904489526 +C2C2489D209D78E0194A0EF5ADEBD6EBBAC01236A0A5BC87AE8F4ED6E682034F +2F965F98D4D2324B2302220EEF854F149A36409E50224D693DA9C6DD5D17CFAF +109F3CED040B9C74149FECB5E7A0577273D85E2D2716BDE45CBDDCF1A9768E09 +0AA9BB33E8B2D084F92C9E2140F0ABD9D1F543C68AFEDA97B52AA9881C9C3EBB +FF6A7F0999145A84165A2E7AC1442640D51E5170AE081644B09050A12209954B +0E9E479716E04A8FD6918FDF52231C44816BE11856E2CC9BC42D7B33DB604F21 +D96F8E171DDC4FC383E756F5A6EED0DF3851C0C4BDAA686DE983D32224CA8792 +0ECEA96B56EBBC58742B40B67C4ACDA4AEF69EEE9F6F5F543DD5E04E989C9A0D +C0959ABDFD64B074BDDC4BFB3002C70D794942ED3FF295C7D0435CEB5D20D260 +78EF768EA9559DFC14737DE7310D2D22145951B51AFD36D507A7D80F20C562C8 +72DD3F73B7BB8AD7A9C4973E52BA99007244F058645DA3D7F7A653655D65D48F +D59770D5E99884DA1CA211D587CB2C374FEB6DDC63FC32E304D807B5D8E58639 +11D76A90744ADE60CA9775754A700951AE362BA7D00082D3B2600875D6583684 +DC1D8F9096CDE0FE56547BF15EF1EEAC0F0016D79D98769F099C8FF9025D24B7 +9C5E3543340D3589143C020C4E18DEE3F3DA59530806E40EDC66A8BF9DC0B08C +890A359F0EAF2AA2595B616A463EE2DD9E49CBE5978A20B5B0B0BF4C8AF467C8 +2D5687A3F7AECE772E4F9F7834934ED509325A11FDE5CD7E1BF42464C6C71B40 +7842090E3499C67FD1A1E623B1881406C41CC303E5B33E39AD451195DA862B50 +0C28833C639A0BD7482B4F350C907D052CE84CFBA42615768D66596818E63F0E +78D9FB0BA87B2740CACC6B8CA87EF3743777BD74BCE730A7A0C4EB72308B7FC6 +66436D172F8CBE9AC3AFCB9A9156C23DE047367862A6F77C88F8E860F855BDAF +274684AFA6B55226FE789E699263CB770183BFF20FF5F6FC2EA525ECA5912861 +36EED3E59167E3DCC2E86852F7741DAE620649B47AEA91E381391DCCF42389A2 +60FBE186E5261AFF84D2EF65FB201832D3374FA9F4214F6F72F85BA7D0C7E16B +ABDB29A020588E46D2D77E3D9D2868706266A88B6027F61C5C25F2653785ABBB +3AFB09ABFBA39F482A7913A338030563BA7C65062A394684FE612BB4E0DBC9A0 +59CFFFA0CA4EDE04B29456A4EA4CBF1BCE8CD018D66F989EF6FC3C63E817C31D +79CA7F2CB15C3F53B583512D74DB04B5B812C77F9C005ED62514BB544DB19FE4 +F4532BC9F5B6F87BFE6A8E776B49184B630FA426B7DB66A956F6C4B1A4DAB8EA +CC8F29AB60355F943179B62FD17186BA210148ED9719D4A6C76BD3FCB3414818 +EBEB19C9B16ED1E3241D016F27692315E7BA0BD093ECF27521CC2E02D789B536 +E4151D18FB3A76A377EFB75E9128D293AD0E23C72B5B483FDE6F0E28EE1C8577 +4E12E0DAAE1389AB289D5CA0DA09BAC694C795ECF17CAA963D54CDEBE7189A58 +8F7DCFABA64075FEF45C7132CEB407600BBBE43F3A7404D33EF13A1D1D95A86D +7323ADE49D03DE0CD1D8F39F583A8849BF09859396C0900D1E1BB26347DD4719 +3D23AAF91A509796D6DBDB0CA3751D44CAF67172D75FA53F5628673C4C7C501F +94159877838977BA1699E5F4F78CAC3DEC8E48D32BFB59842F443826302DA2B8 +CC154C522B9930207F2E226DD015398181DA5497DA4655364DF39EFE671CD47D +7EF052413EB797805096266BADE2BAD26A9FFE54642D534664DB5F9C6C748BCE +61654D5417630E41CE49649A50CB3CB0659773AE7C4973201D782316C5606FCB +41F763F3BFB6E3B2DB2AACE06E17512953425AF6EC6C5E24BF5EE1E61CF396B7 +1811F60319BB091F101237CE40AA34C8A7F4F5F1390A46C4BC404BC84ABC103C + 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1938,25 +3570,40 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR10 def +/FontBBox {-40 -250 1009 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put @@ -2053,554 +3700,808 @@ dup 122 /z put dup 123 /endash put readonly def -/FontBBox{-251 -250 1009 969}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 -0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD -F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 -3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 -A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 -5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA -2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9 -0E172209FBE3857AF495A7F2B34BC895A39A30F903DC6E3202D29AC110D868F4 -7184CB78407B8B9D42F6375F67FD4B828592E4A977B9E71854D143CD1A9EDCD1 -767CC2929E071FBA4C3D17500E28A23F697B5D5CC68D5F56EAD14BD504E07182 -3FDC12F5404E74EC1C02AF00C1A6A17F958770ED4A024F5B3644DEFB61F2578E -56013D0B4E7CA3AD255E23DD63369A921D427EEE0E098E8148B16E8A5613A8F8 -A5F1099E15AD16EC554B644DF306F0CF3571055A81F1B464529DB49E919F88E7 -581066BEC4765E31BBE28C245BBF0B74610DBA30C63A71A4F3B60593A6B41C6C -636C980828CFE9A3362FBC02F1967F0F770A4790F90DEF9D56E0A76B0703FC58 -2841E6E8D984FB476D4FEB960FFB6B386EC6CBB9EB83704B0AF63F38C77090A8 -DAA165E6C6BC86601B14F8E9F504A9D578AF05128D8C1BCEA9D21057958D5DCF -653026524A2D101334AA3DF02A3CFA410836E6001561C00FB34AB04FF97302F0 -7CCD024F8C61577E82FF229A45F7FE22ACEDD95AE8052044A41EDF46B8F84346 -7275F5423171DF88188EE93BCFE0A84AE5C999E9C774A32B7A2826CEA8A8560B -2F61A42F967BCBE2081DCA5547D9EC53467ACF8A6AADFC54CEDB7305DD661ECC -3FE33D8C93D2425ED57BA83F360A384F6B94023EF8938DC136ED1F66CDB618EA -F40377CDEE0F17653E011F5CDE11C81A3FA5F7168681C02167B275AC0F73EF89 -521A152823FCFC811C71E5D05D99094EB69E5724B34217D101BAA302B5BFDDF1 -4DE66F7887BFD458C2A97A835C72E7A6EC2500577B0B057BA1B4773094EA1954 -589FE5B1D1B4520FFBEFB6ECD015B606A244E605E78D39EDC316D97D99862CCE -898341583D28F141A02877B76050B07694737E9F107F153E5A5C7393CD479A09 -114F07D12DE0185B971BD526301914EBAE20A38DC804C2319EFF3C8C4186630D -C91141528F408EEB02C718A0A3E0D39D1C9853F71113AC07DD209828B4873031 -3E7A4E45D95025D9C558CC0C313BA3333EFCEB2D95B7BDA88C062E5243DFBD99 -744C678DF4AE3478C68B4F7BF5C52DFD8A81DA0BD2C95229BA43D15986717CB8 -A925638049C2A15A6913B9819B3642F68A07C4FDB2552C97D29211FAE2F16E40 -076342D4C5A72E0D5185CE8EFB7A8D87D7F345E776512E8B41609794052B9A08 -87EE0DECF203189379B9DEFB8DEC9585DEF2B44C7F64B4DEE827C74B975BD1F0 -82D7E511A5A0FEBD52702F7E68157B509F303378B191BAFFB4229495AE65C558 -D72D9AC8286E61633B29CF90917E4A01030D6B82CBF263751BCA8AB219284B04 -80A8F4B34D0592EEAB82D64F9A5EB6A08A6CC5A7F3D3EE2B61710DB386AEA658 -7A059E9633123EFEC39FADEA37C4205112063F7BD3D2F8319A30DA796E55BA23 -00DE2B3C15511F87044ABDD9DDA9247B5E785A01A05B39F1A395E36AEA4D3D4E -ACACCB99E99DDB1AD1329069714FF050311B274E495FFE43D33DB3BE958098AC -61150EBC4F9DB7BFC8F6C81047DF0BABBBE67970D14524C82334B693724A0818 -0007E4E848CE4AC8F07E72F02D74CC5C06DE0A67A63156F9567DEB913E874E56 -B993FF1EF6774A9C582D8DABECD1EE1D1731457305A989E9BCCE8CCA4872B3C7 -7635D840A0FC8FD9A40CB7B2FAAAFAE3274A2BD0CF7F681E877830103D2DD3DB -761F3D925AED45E0427BCCF205201BF0DFC16C0109A4389F37F25AC6E4E70C85 -1BF6A47B91F62079EAD1D983BDD249D0EF82B21F89FE58CCF2612BA50EA48901 -6757149BA3C3FE22E61F80F62CCB355082A71F1C85E8819E71E8997CAD75ABB6 -070F0CEE40E3A9CDBCDE24D59F2DDEA887568EBE585EA8D40BB4D0677097E73C -1C76DE3BD95B2BD843B1522540C5CDBBE4E1E6FA4A77F93E724F4942757B50C4 -40E316CA4DAD1D9D36823BDAA73E3BEC72B03F6DB2E99C89D2C3F840C15CBBAA -0EC7330D23A3EC2780813F0C1F56C891FC040B958C7861DCA654743DB8FFCE0C -EF4EDF238CD820A3EC97CA497B2C2504E43B9F29707D7F92114E8053CE90C494 -4C3E681028257FAE5E2C60C3E1A33E40A7C5920A8E6FBCD4686135296590D866 -1359BCA5B650EF33AB7582BC61158A573F93C4ACD4BE3D0E36EF1A7683B85438 -1FFA47955F8C1EBB80BEBC9427F239EFB50BA42D8C72AC0F77A511AF3832F819 -FC3576C4A28B6154B8B14B9B88A84B2E9DD9AECEC59A9CD717151FAA26CACA64 -FF6B2A5F561F77E9DBD2285695F0B1DD8D1D174EC5ED48DA7324EE88698105B1 -E28FB0EDB30067AAAB1AE5EF6527DD1A83DA04B50E5E2B7F2A63F0E8F924B2B3 -734ED216DFF4E41E2C074741FEBDBB01A103B5A68961A12C571A0A35CEDB11E7 -DB6C9046AA97B45F756EF5B32CD3E1446C9616BB8A7F57308679AD7E5368648C -37F5CB0CB4C95D49C8DF2D30A8C17D8870BE3C4D9A077BAC5EDF794050C793D8 -D26A5DBAB2025FBE4841308D5FFCD592C37514D1EA9F7286EE8789D41BD9E38A -905038AD5FA8405AA7568F9B34F43DD17FD575EAB5067147CAD8E9C0A454B292 -74635B10585CE8D8F891A07360DEED0DAFE9836B006C3ED2B6E10674CC17CD8C -9A862C5C51EFEFB1AA02F313DB95969B90714C62F32BBE3062E2D805989EDA55 -0684402A5FFD3B330B194B1EE4490D05044859619A7A6A7AFEB4909B63CBE907 -34CA9F2B19D27DC59F737344E1298EF87FD4210D08FF55E143319DDDF5E94582 -1FD4C58EFB00CB9C840ACF598F300B9F6BBC4C83A89E7CBDE9F37C0EBC924777 -9337FD42AE2B208FC6CA3E0D9FF9AA07BF7BB68ED07EE307267BE7547020AF1B -B3D65F802A95A69A2CC366B51AD5771EC679B23253F21CDF12E8584ABEA58D92 -38F3B4710D434F5F967A9868BCAB5C4B57F5E1650356F9509050F03FAD247F06 -607D717C4C183CE793BA995DCC37C836BC994465C1785517466DED4A2CCA2AB3 -32F2D92C7DA918D720341298C650B4ECC780A457CF6CFB2120313BEE25A34AD9 -3B2C2B587AA791104E38D27C117C3B4255791862E6750FEC3C32A5B965D72FB6 -E333DBAA452661F88B7CFBF442A9CF467D01B1AEFE817317BE81CE3479E17E71 -6C24D0A6C08978B3DB9EA09567FFD14118259E858E88648222DFEB2A655E0A0A -98F08F3D13539005E85DDFD0B1CA60E48C0DC80FE0AF9550344B07548E9B3039 -E9ACAE903B7A3AB6FE24324319DD792FC5140A2A368D233140DA5690D5A8DE57 -A42AB04F6E9D167CC3D0348FA7CB3EB537AEF89B99C7C93F398C9360A0B1E2CB -CC7E403B1E439CE040F958BAA50E36980FB3EA7F789FDA23F4292E566BCBB731 -38BCA4A234E2A205D815FE2A450DB6586D56E8C1AC62A50DCA49CB76E122D050 -E1A3413CE5BA8BF96F34990DCA2668FCA06BA66D9031AD98650EFF39D881929A -28D99CFCA94FDB163F970F29F3A2617F83F4894EB997EA7AFB67A6293A08E00F -37D5A50FC0C360BC4B7F9C876A6351F9D4B3279C1083D6DC79F5A63EA48CD5F7 -02FB3C581F446AA9F19603AC165BAEE2EAA7B2574268947479540B5801FFB122 -AEA27CE208AE86BFE14B8D139C16ADFD5D7ECED40EB0E258B38E509A8A1E07F6 -EFEED540300ED1EF27AEA5A9B1B0FCF027F626B7258F4485B8A17399188CEDB4 -8CCD037D55F8EE4BA5D2E876DF7083409DCD95F644F43778567B61F3A41894B5 -485A87B1381E9E98C713E2BDE4594977B85C7A4F58D542C634F9F76B9403E23A -87D1091723B30E53CBB97A1406EBB78A7E06DA949505FA40F0D5CD0675EC4B6B -207B7210210E7145ED707377A9A1534FF7ABD8395083EC23928A03E3016F636D -1697B161377879568A752DDBE939BECABDE106790248103F1C6D75D474584F85 -33DD684D3E4927EAE6DA1C2020EB78B226A43708351B8844E4A491E82D018AA5 -AB46821A444373FF2CF81F996193D0C6AC98E2302BD0D7909BE77D97F1A6CC58 -959CDBFE69014EA8F95224F2D2EC70DFCF8A38EDFA77581CABF0921B863A6544 -24740A40AC91E315E97FAAB8D490AD44AE6805A9C7471AE945A40886A2DA1F03 -7B94629ACBFD5C307ECACB6DE6FDD477F439CDBAC935A94679F037F1FD6DEDA4 -F4EABA6C9837CD7679DCF343E823FE70D065D0379ED0EA0C51DF0700B7F97775 -4EEDBD920782FF119223FAA23689358F35C8A68566DA0D9097C6D0FBF163EE2F -656EEE4291F0DF40C5F4910DBBF3A9A33A0B349A2FF1D01811857F9335FF04B6 -EDDCEDA0172528348FED69047FFA80E2EEDB6A612082134CED2E167A061EB226 -CAB50190F731B40DAB9650D4BC581BFEE93A2CEB9E9BBF5860760405127A1E3E -7FBEC40343D0D2E8EB80083B354C095C483A8405B7BC144FCC23E8F25E745A4E -8C527635AC995A1065A7FCFD805C6CA7CF611C06845EEE14D07B81E3B404E727 -20CCC5BD3657D1575949FF993A71F5F8C5236135963F13D8C09B1F3B08CAB6B3 -58460385AE220AE727B0CB9C05020EB678240921E0735D7A28E6C17CE22AE05E -6C9DE888DC5D3E24C60BB94289910B3723F60A74A8B48ADD5E03B6886044DE90 -69236204BB7411A3D9119333D328F3A7BC446AE7C2C4C529D5E3D501EB99C900 -D040D670DA581CF03FE6243093192F5E91A13B79BEF60D605A2EF3BB93B569A6 -9C533A1AAE2CC70151A0BB5992A5B8269472E626D299F66D3DC25952AD9CC205 -25572F56F774E156EB78B0406C4DE584660E1AC7E629DADC0BC41E725BACEE76 -FE217A7B0190A4CB69E9F32F4F7A184BF53EED2B1659DAC33A2EE695A88D9F07 -D076E3ABCEA448A576DB7B0C5549A5A2D63710141F4E539DECF167EFAD871552 -7BC24AE52DF04152173D6E4CA827DEEDEFB7E9C3E72B5934C5DF97BC1EB23749 -F776539AD43E9200A04341EC0594EAB62A0C7050DCA43945E58C4890350F3ECE -5BA67C3D716D5360A5C1FCB6EAE1EC00D59B46402B16B14B821EEAB4758701D4 -4CECA59735D67B099AD9CC4BFF50B846CFE14E35E4D3D1F5A3ED2641ED940775 -0067986ABE6AA117DA321122636AF7FA88AF53A473BDC12A4844F46F43D94ED9 -CBB72CF2CCB37469C2E63661BCA5A298D5E9C6BD3D41853FB4867DF938DF0391 -2F7ADC04FD1B0D6B0D5478581D4A2E51BDA015A4FAA53378696FB50A3297DD3D -20C365B963BBEAC22789E0073AA921F0640F63DE0833764999F02B66E800991A -438223368F1AD8FADC75E2C5130F76148FBB0ABCE3B1270C6F1CAB55259B5290 -A10A1CD5419F9254ACE5834A4B8A71B8068EC21E6C4AFE9E790C74EDF7411289 -3AEF976BB7A42A7CC1AABE4634CC1700272E6B272BC6CA5F1549F3172537FED6 -C4047BBA4FE5776BEB53E8AA82BB17AB4796C1F91264A7B7E95EC14C0F74710F -9E9CFD51DB71C3CFA152D6BAD9E60B38D688C7CC5B587F37BC2301C2938DE2E7 -88E1607E5B0CE6AFD63989315A9AE3BACA1E0C0E0F6CBAFF02685282033A7532 -3E5B0AFB7AF6F4E3FB5801D175D02551F9746503A2E50AE9AA8AB56DE79BDE79 -74B4550F3890818AE801957A3B6A822614EB8D12FCA584EA8C41B814D30856A5 -97C3ABB9F665D1B72B8D19C4D2BEA46AE1332F8BD2A6FD2C2A1183E48F62C4DF -4175B4CD65A9B145D400D1CAD7E00D0D154182126764BFD3A267F85BC623A575 -92FFC5A063A9205A02C89CA4B40C4D489F17D383FAF081A3C0B2C94E21BAED8B -1D06A4495F917C37F8B04070E9A90F60AFE3A8F0073086F00C5A707A96D4E1D2 -BE5A637EC1C614997446262573426452FA5872FF661B519E24A34E3C58D4A07E -BBB6C294D4DED3EE01A853EF8E153D905B0598241F97301CA600C09B7D116901 -77EA1F6C40CBF7CAD5991EAF92890305BC710270FBD575B626A59EBEBE2A9A21 -D02700440C57557225CEAD5FC1EBA1763746A061A7F4DFF5558F6CF9160F7CD8 -7C84BE7407ED508BEB2338DE3C5207A7804FF21C4E0FEED254C0DE812FC8DFF3 -4B5B890B24BE5AC7C00DC1C193C88A6B33A442E184B4F5EFF79F4CACB8A56DC4 -05098C620D63A0135F8FE2959A396398A421FC16F8AFF99F702C1B10F92ECFC2 -2D86DB2489887879926E2AD34DB4F7A9CC460E12812C24FAB08ED0F2C3DF3FCF -AB41034C07225F20ADA5B5AD6AF5349319D3F937DD64B2E0A0887B880BE636CD -F814C498584F19BBB3FC146035E4EB4A3B7EB436E7713D968B24840EE00C019E -D08263764CF0839260BE71F875E5408AF4A8AB1603F7F694C2DB705F6E13E1C9 -4CCB224D0E2B610FDC729EE8E33366D0AFB0A014C3AAC6B915C2268C27A65624 -261E38226363108AB1C12BA960649782D0A02F87404350EB7F58C6C54463C1B1 -334F936DDA18C96B577D4409F18E63A79F708A816096A6FA1071B1FBBA3DD470 -C00F032534140440012988D81DBFFEDD0F6B02827CF76A92F638A685BB1686E5 -D0624C445A765E6527B4D2FA2B8BBF035D9B0BEAA0CA35D937FA9B4A79224387 -CD974CC0A052A5C78C4CA12379413303DBFD11DC6B78507875E6643D36679EC8 -3CBB213B5116E5A262300890D85018D550C69365D717BD3AD5579C906F8BA35F -1C07EE6B17F394FDEEDFF5340A86E28FDA9ABD8803D832117A74BA868326A1D3 -4004DE8942437EC0123075F2C6B97B306AA3C806FBCE7CAFC83C2CBC77E25C3A -082DFAD7D69D36ACE654CD17916062449BDA3C3AF3806416B16C718128326DDB -062CC9FFDE6FEC2D0451C4994F5C681A18D7E5310917B2994756AC8FD055F7D6 -92FBD23FF685754DC09F36AD98201040626C381FBC63217DDDF511ADE6D13101 -0043EFEBFB8C49652EF4FED438B5322D83C6B998BB46BD5B5F31BA2DADD76B78 -ECB3D44A2AD40518C22914CF53AC408E8015F2E828F6F4908FE0C85DFE30B8AF -7A1E91B6AC7E25BE17F971DEE8271DF880E440EC95E45A6C909AB0DD6259AFAE -35B3AF9B04936FCE351DA6D244D34EF22D0B8156A583845423E93A3E5C827287 -EEB8E89E19E4FA0D6406506B73285484A75082DF8E0219FB5543B57AAF63C47A -0C5616682F22DEE96A8CBC70BEB556DF3E719CE0E70FEAB87448B0FBF45EA6E0 -2006416E39CAAC51A4568736D8F0270144CEAA8CFF832AD16907E09E49444BC2 -80306B769125A50595838E76514A7FB0F1392AFE209D8817FDBCA2DBC8CBF8C8 -5948F7E471B6B94D7FAFC382B02824888D3C5860D1AF18F729678899932A1AB6 -A6A7A3FAC08BFFEC6FFA3CD9543D36AECD2AED91B0D8674EBD6A9728FE8BAB6B -4D3E8E175D0941775B3F96144DEA873B48F3F6B7B6A30D2FAB960AB555AA441E -69DA76ACF6894AEFF47BE6BCC094E42D735EC1B9D65474C31F0468FDD3CEAAF4 -333F60053CFEEAABF43569FD1C216FFD77EDD13C344A0024CBDBFAB9CEDEC95C -115192A65A818C166A5C4441FBC0A1379D0F3FE58922EE49BB91857A03BCA8F4 -0067F324EFA67755AC0943EA80D0EED33A817BCE9D5676F9963844F6A2DDA48E -C9B3D9B1E9F8CA3FF805CEE70807B028510D0AC5B13259280021D06260FAB24A -0143CFCEE0C3FDDD6D817C717DF925DF5022C37A19FF63F77D464F699F585E93 -CF29D5AC1F2CD04E992E5E714C1EEA2FD56400E45A42813E4BBF87BF0849834C -F54A730E4B399FF3BB4E14D9CBAAACD79CF06AF35C128CEFCA1C43C8A5ADC1BC -3AB187E52F70A2562F7A705C58396C3B9198C78AFB0BCAD890956F7D463C70FC -0DD0AD6AF96D778AEE93A3A79A514A16C0324421D5DD3F7BD1002252E0F24DDA -3EDB1856E47B979C235BCFE8D6B2FF68864FBAF0CCBC3BCA811760643E0B2E73 -551BA0BCDC4037F497911B8A5CCEA5AC79B2C8229F317B690108ED2C52E7429C -01DFA8C97FD5FF794EA69BCE240C02A9640CB5194CA6AE598C605AA92086AC82 -C983661FE88DB62A3B732F78F43B93E9C22A09B29FCD79E41053D4E27CE6F3EA -FF365338B03B87AA0D48063D02B8E4C88075FB2354A05EC177E3FC76FE4E4DB7 -7337F0AA30608A6775C928A39A515C20A285D0C4541A2A6F06E6844A6CA428B1 -68D522A3EA084A2EFD17E3FE423F2F55C9F19E842D2E30CB79026C2D2DA9CAEB -8C4DE6394771D9C2D071F1B17047FC66A2ADA0FDEFECD6FAD63EA5F2196CCBEA -A4DB2C62A0948DD2A8A0D30E7F6808FCB912704E647E1FCB8E54D27039F67009 -4E995339D198156D3F6522EC70AEB3F22ABD6699C36386B98E0992A57FD9BED5 -D9EBCD492CE373E46A35A906C17AD2C4C490A9F74039075C8AFD8EB52C9631F4 -0CAFAAF50E8C6B4C565D859F6DEB844846D560318367C21967D6100DBE5D3A1B -DD12DF6B8A3633BBD59EE865445D2F1E8814D8D64C3BC913183B59DF20361B66 -6F3DC614B9AC2C2CA4C30E1A01C1C2A2054FB4BE7D58C6BFFEFAA4E13087C434 -ADC6D8F1185F68B2003E7EA12A991128037E54D2A88EEA2E794D89BF531E107C -54278EE82F49454FC13638CD0B83C142BA3E0F5462CF92FDF0FA223EBF69D12F -3D99BA804FC467F40945B1B0AC23DF88BE1BDE21E296A82870F6322630C06823 -27629EA02637E6E3E10F16747B3EB3E479AB8A347FD46D581608D453684278A4 -AA58BC490F673269CBE7356CA4F9E523CDC3F5D98EA1B95CB686BCD17366B609 -72BB6B2167EAA0D66E36EF6A1170EA56A8485A659E55C8D50108F6455F1C4227 -6CB5DED36763E54089C6C04BE71D5B762254EA4374C136F98900F25B239652FA -71A14A43F046EC8171C490A5755F90DE4ED09F8AE5EA1A6A98EC026B612BCC35 -6879F1942C6B45DF7A50F4E49B8C8013164CA04DAC46F1D799071BA6402EDCD8 -F55BC6B064A2264A37D4BFE59754703B2C13BC4C2586A61EE4A9F9915F00FC13 -05072451125EB001CE97BE3933239DF6501A664B45FFB5E63467CDA463A5AA14 -504AFA4C8D4A976B459D8B41046615E06DD43760FFB72488397A34C4648C8B4F -C56454126529C50AB1D3B328136D31F79EFA1EA011C8C6FD6AC27FF2D4218B34 -3F99304558FE4B1C81BBF4807AA89ACF653EB74E9A2C85D8DEAE86F1A7B3B5F4 -077D09031A32E48C069539410F68EEE2A7ACE7B200CA099BE59009268219DB52 -27A2D68DE15C91ADBB30775AD1701708749754BC4F0BADF52540EFEBCEEA9FC0 -E00ED70078142201E897E93EEB6B8C033B2B21617162BB54060D3A14BA41D481 -9B2BCBFA81A176BF324C8425310DE6C313113A9DA8A950C6439996C957ECD22A -BEC6631437954D043A5F0F83508A7EB24EBE9058841DC13E42E5A817928965A1 -0566C3B7A4593733E519AB17F3995C6702E3378822FA575A537E720BF26BD14E -D08755D999FA4AF6D0BBC2A54CBC279C8E75514733DF7F2C19B84F043A4C9A03 -979FEF3A622C92ADC58FE94C3C6C6ED45472D1E48290173613F991036368E036 -1F8A871A66BE125074CAC7887A69AD92D96F157BE10A6604CE0647E5D2F6E4B0 -8E3CB6AD0E830C18B4C239094238357D1D371F643F50E81CAF234EC88E0CD6C7 -BF0B0626895B812E489153B01F94C0D86769A239879CEDBCF2402894B6E79566 -1AA9B48033407926F18C7399C641C3B0C898AC99AE6595E865726374CCE03954 -92D48AD6A336888DC372676F0E1BB9821F638924976163976175D2A687324741 -912DF146F8C7F6EA428814DF6F235728386BD3558CD588BB1699B43C1DD6B4E5 -CC4E75E69FE0158E8666CD4E86BE2E79148680287615041E559DF70923831A27 -63D40F0F873B3DCFCE27E0BA3F396EF61417E77DE37C0D11902FD961CF5174EE -8EB1DBC17A1B0FED2BB385C9475096D7EF37BE12B0D75F6C1883229F3A62A679 -828645A2E71DC2818B037613531463FFB0F84EBC614F6A9C3BDD29807805E580 -0200984E41C66B9C99A62EED7E91DF58C72EEA135B03B08292FF4532728086CB -5ADD2170758529CCFD0E652138B55D545DBFB5C1DD4FFEFFA87DB31F24DCECDC -203A0B9D242B8F0ABFA7484545FA7BC22CC5F30C28629086ABD681555FD8C060 -00F4B5444B0C79EA2F1EBA2CBF0C45689B6D4B09A1292DE9F6E92A9C52A4F601 -924EBAEDC0F478330826DC36A3E3AC35DE0B82145E378108A75D4DB79B78A713 -4A54643465AB3D1127B69467DF7AAB30EA92ECF0B5C475FD5922EE8310F8913B -7B1AD24A93EE946C8E6DAF09C3697934E94DD0074D8DB4582D26F9807786CD8C -D8CF959020822AA23D57077A73126BC5716FCFBFC6271C9F1BBEE9730198EDDC -41BF84898B24CD5A42D6D060C281B1810B323C5AC6032870041F007EFF54BD07 -63F24FED3250E1F67F98E4B73678A5BEFAB99103F09E59E5E80D4BC9A2977FE4 -3AE53E66D4185F52A001E6CFE374CB6A934187664F782F63E3C3359C66017383 -99693E9A5AF425BE05A681BF7073A3108C77C2A31A9ABFCB24384010E36CDAB1 -86219786B68AB2A6A7065167EF57C5EB79D790824A459A137E7CAE466F1EFF55 -8BA7CF2E9382C1BDBBEDB381E7BFF677DF252886AF2BF19B2E2D8C44E0C35957 -A0491E4723DA85E67BC6182EA0803EDF4BAFE302BFD52D84BB888A70232F7D64 -3CA598EF660B77E88A6A8A4A4D63AAEBB88E400D20581F2DB42ED3B2B184DF15 -6DC8E586726B5074EE71F347494C84B2365830A932A4F05F3EF70FAD933EE655 -12834498F3A58AC270D74CBAEF756CB8A499D3EA9B99C37DBD8D84970B188530 -82AFCAE63D692E6A72777CB1BB9523C75F9EBD4DC7F6E5D6F39862BB1D7AE93E -5BBD3E135E919421C3DE94A2EF81914B6EC5224906F83EF47292301C59C3836C -3F359945C40C61D9FC0AEA5A88A9A93DE5CB8DD195725FE145E79B7DF33B1FAA -F14A457C39D12AA5881FE5607251BADC4CA3A1FD901BEB971C765D568803D1D9 -832D5444A1D8332E125B7D865D5B28CD78C7043D8A86AB4DCFA769A183FB4B05 -749DFD67A669B7DBF6A6283CA516B94704D74F64C3FBEEAC15CD1A2D939CCF23 -3A7837791AA06E6167291EC2DB0C34846D7D158EF594C6499288ECB69EDFD50B -4AA7F1E37993781A3933174BDB9F8EA0D41BDF7896BECC4BD9E6FE17738AE1F5 -FC0B9D80D6247E861AA03A36B3BC648FC8610203AB27DB18B48BD494A5798406 -BD74B5D1631C2844DE39ABECFC6518C45A89E117D7C498348FAB6C512DE91210 -1C07826D1D6131AFC8B138B595641D80C8753C45ABA3EA94D2B175F382508B1D -B85D1133FAB93F41187C9399ECA60142A1356B1E5CFD821108C347CEA7ADBF08 -0B124290E9D736E2043039D49D7D297ECF51BB2D2A9BF589761AB8C1E7249722 -BB558C01661AFF993684BEEBD24DA09D0184440581B53FF4BF3C0129422E8F94 -F214FD0FE66F14DE284435437600C6B9CBB80CF7CBD3CECB34757BAC210DA30A -2DE252E3DE81792D101F032EFD210853B4D37CCAF643D71C4733C81202D5212E -4E75DE6E19A3F1905A22B668DEED9A8BCABC2365A1B2C6DA539FFC709B85038F -99A65DE1C6782F0C757D402F59F11968695061FD1EB1293BD54FC33E1C2CA4BB -AEA897043AA9FE619649D835D131E18DF17A9D1ED6163BBA1A9DD12B9BB42A74 -F67DEBE8DAED8AEA55A7F022159138F97FF379566A42354358FD09DC88FA9EAA -5CF2ED8B4D13C1339C07D398E96D0287FFCECA5C5C32218BB43BFE08196D3D1E -23973D34833CD9BACE28436A5FFD4816542473B7CEAAE489D7FC0F5012BCE6F8 -4D28102E67187E50603942FE7514770BB9157E67F1459F77B2D8FBAAE9A4C987 -295D1DACC6AD96A0818C9E875FEB5354BC2A1D28E2A1F45C8628D8D5B0C58651 -5083D10F070C42724CB17BD93D598ACE9762EB5060E2687FF9EFB1F58A95A5CA -1AF7B72010131F0618EF48E9BFD21C17B297812190CC427B569313B025C39843 -57E25E37934EA128680771B49E7A3F1978B3A6238EA54D83CFB84EC2A296791E -3990AC7AA99A9A5EC4A560E59F27DE1680C81E5930C136A83E8E7B4ACE6AAAB5 -57DFB10D605F501081A8808BBE3F6E297A90F5E09A3CDF26FC387399EF4D5C70 -E7A3E9AD46B0305E86DA98263A7F44357D4E950A63D7BEEB9D2E3DF3D066A6B7 -9E940CC10E8007B2CEA1C11521D2095EED15F3152F92B10E0B4E9AB74138F241 -4303245DED32F590E1FA35275F2A0A26FC74F9A04F1CE9280B9A5F136644B77E -9F4A7CD818309F8FF436B07EECB4E6D4168501F32B348446AB6D693C81FBA667 -80FCA9390E36759B14F7A406E66F7BFE7E91BCD495A53097E55EEAD39F8A89DC -FB4CFB345F075FA37C763528DCC7D80FAD8F674B107E60FA76597DE95BAEB3C9 -A3BA95633F1A44F20A2679BAC5D867A8ADE1270B3A87CF973424372BAF552056 -C9C37ED61E8A791D32997F15AA52A1F259FD02267DD7F43A218224DA371093A2 -2945C99A06AE36A43107BEA63FE56A9A2FC0EFDB46DF08C2752AF493035A5595 -EA90BD9847126368DF8E22FE380E50A893FB21914E78BAED3AE5F9F03F7027DC -D10B91264F4459B8D0136A8C4139C416C64E304128104B6EBB0F3978C69FBF5B -E090B5C295B98578A79FAD2AF4233821A08C375DF4C4429C93623C43907B99D4 -527E67CE7A73786E4D2F817A612AAC7B4D9E3F4A79BF382F15008DE76A9A8DF3 -47C60F100B09D971EC4690B1A04173A1CB66A2269BE80708FC29D82C552151CC -385F1F179889059D5D70D252C99D0F84D12FDC13FFDFADC11A731262BC8E2AAC -FD8FA176352F9D114322CAAC7278113C9B48C869D5EACE4215CD50A125EFAC99 -88312CF4E12FC1DA63029140E8EB1BFE1D79A7A338BA2188B599A1C224A0FBA1 -3CF40EFC11D7D3333FF371DED67318D2F6DC8B5F34A5728233AC9BB2EF214D67 -B3F2D0FDAA10F2C932F7AAC4EF557E31909175A3F61B0804CA0C762C53F20A83 -53A8A6FFC37E002EFC441614A8E540921635FE855CBF1338431AC8F66FB1E17E -6770C99ACCE479A366F00211F8915AEF2940F44E43FBDAB05FE2D64565BD2584 -59F65129BD9695C4787C6CEF7FBA70E2E0FE4FB7051F65AA824782F9887E5F96 -DF2527C15E39CD1D5BDDD48765BC0C528037F69F8C5F168810DFC2D974AA0E62 -20104E3F291DB79BFE816FAAC5765BA298797EA491EF82AF07769675D60F4E4D -F088426BF9CF41B0DF5D840BEA5ACFB5382015DD26ABB0851AC610B12553BBD1 -788032FDFAF98C64AF5E2FD0B08FDB9582CDBCCFDA38F256930349697AF7566D -F980076F5E072279EF92BE37DB65AC1D702B0E85C856482A8BA9B44CC43BF3EB -BB7504F1F2696B597A0FB8085E3F6E3BF178837363F750679CF2CCF7B01027F8 -747E1DA4597C8F93CE8F07D304FA72C64972CF08CD8B8F3331285EB0ECEDF8B0 -64B53AD633C6D90340797802DFB81D424DB73D68BADB7811765D83C2C57E3BAB -F543E327CB8B0356D4A84CA1BF0AAAD57FB9EA0E5C70090A04745C916A3EA2E9 -2AEFBFC64AECCA2DDA387A3A8AE1D27C6B031A28E8FB3F871576BBBBF7217CB5 -4ECD354B391D4661B278B1DAD9B3AA0F39883F31537E158075D73A5C4D37FAD0 -4181846C724986DA122D84914611B7C50DC964E21B40ECBCDE2FBCCA5A30E11C -5AF792173E502843DB785CD34583FF25251C712087589EA26D73257EB7B9D484 -72FCB8988317B1F886C5EB9791F4688F087DC8D2D0B82B5EC38CC026C45C406F -F0BDC2C47011AAAFC765C2E520BF3C90C85E0D4AD3D59E75585FA2AD70B3C527 -2383D7582779217F435224718C04EC8467BA8C9319F99F3F033B148B24CA80C8 -C2A35C0B3BB874DE6AA03D3DBED072A45DBC5C8A746F83ABB578F872D535EC21 -D16BE93537193CD36DFCAA9BC9FA95033EECDB3853532452385A71D1E92D12A3 -9AE044E7142F0911125B2C2C881678886AA4E924B5718172A3161C790E2E6F04 -9A28709CB38269D8D460A8415E68F64D6BD3C9ED9D9744DB7AE04B9F19B8DB63 -EF85CEF8DA88F8442E2AC150FDD3A15BCF9740CAE7FFA1DE92E2571CF2C0E0F6 -90F13F5ECB3CB88FE13D4B8963B51ABFB9040A25ACC10B08166441D7275106C7 -D5F58C5A80F4F5472181D985237B431B8DED88BFBE1215B6DB506B7838A26C4E -C129AADF9C36C4177C76930CF6008104E0B5E3A387A13CBBBB8109AEA38FC35B -E7DF40B4734AAF9A7CB819D94DFE944E994DD21EE7E9BC4014BA7F0A1FD7C098 -6F7A699E77867DA25507D723B6CF9174782B58AB59D89BAE119F145D61F83687 -2C2A1653B501E71415A0978D2FF39468686E2481CE4F06B981FC398F93555A87 -E93A098C9FF28BDCBAF0637CD63BEE7FA448538FACC04B11C068A16E687BAF4B -5D722363F7E1EF39B8DDCE5C947DC2A69DF4A4FCF40C397FB446A37E74502E49 -571846E8951AED1102A7B67B7038EA1C7ED210A077D83222E988C0E5D2B88BF2 -C71DF6C9F4400104F2E8DEA364D3A45CA1C1E6651C3972E89E5CF31881322FFE -AED481E2602E19D31A735C14F3C7A8D585C46ABF0C5C64BDD64EDD35D0ACF67A -5C91C26E2D53C47EEE126FCCAC1F7E9A67A0A02DBAC2C3EDFC15F55DD73EE385 -A7A32431AE18BD4F2C612FD5F5AF4380A259C0C38D22FEEE403A7B9CCC4EF62A -6CCFE803F270AA5FB5C4DF8419CCBF6AC611A721688ED51B82C1E5647F2B988E -2B84B5343C26D8495A23908A6EAB2D2376DB03F96D493A892B6548E0369988CA -A2ABCECD47663BFE45F4F3F910952056A5314843DBF4A8862ECF20B9C6427E86 -E90CF8132B2A03E1A0109C2C1973B5830B9AADC952F41D92EC44FA3E79C77155 -AD89D10EA1E3B30126889BA190C86ADD788045D0F933226A4AC2FF91A9406F6F -976F337400FF3921D372AD11C929109E7F2D7C2A494888CD85BD790C8119681D -83B11275991898106C693C0EDF1C19B8731A84A94470D2BF52F0123E5BB89E56 -39D5CCA023BF0625DA16DE7DB7611108CEA00E3CD4B8C03F31787EE00A94B542 -A88B4369139836FAFCFDA51CDD5ACCD351C567663F1140357C1414E3301174F9 -0FAAF917EC9C19DDA2F41C671B3175F49DA30593FA6C93A067560053822D9A9D -0A440C3DE6C4422E0EB2F7E86082F7734BA83D02C30EDA9A22354D1DCBC8D186 -6A43BF3DDC5209DD661A87CEDF97BA43262C6D418DAFFD943846120FC5E1A06A -5C7D847154E41CDBE66B0538189C130DC4094D7F1709F15460AA982DC438F380 -766D6937A65D1E01B70FC903E2D906FC31448FEBDB937051BD538019D849F81D -9C28FD74ADCA7996C9F319EA011A00AD195FFB5149F1B0B550ACB239D6D161A9 -E45FC9F9018F471885D62869831C55EBC118920B864BE49244DAE14794EACD02 -A096A5D16B4800B0A1AF3EAD075EA2476743425FE2214BDE468A20749C6FA35C -9CAC2363798D17891339B28F8BB6D0BE628DB425FAE39D65D3C034D041BBF7CF -4EF74A6AB6F656144930C034E57F02C528E054F65828BDE71083109F43FAF0FF -E520EB4BF5D92932BDE44D54797E58DFAFCBF5C819474A7B9282D087F819AFA7 -F13B47F2CDD0BDDA2D8ABE8D6A0886407EB8550B96844FEE859BB61C799975C7 -056361974EBA586DB2D3DDC859CFA0FF493C5C8DA81B2673AE6C94CAEECE4B0B -498E9F060E9948D0CB5C47040265075BBF6B40382EC26C5822DF3632F1F24973 -DE14BBECF72DD8535F05BF15276DBCD457432FDA386EA8131FE695CF61F11B37 -1C917751B54637348823C481D4C2B0DD4C98671BF1EB42919C6E11554D86490B -8E2823073B9F1DB5B04EE262840352032E1B9E4B688FCFB1144E43BFE455AE25 -F914AD37E6A694900C5CEA010A04631BA180B9D126989E46566101B868EF178B -6BDE396797925C90780A1840369DD3F7AFA7C6A2D46FFC8024B12C356D5FEEA7 -9270B37CD936AF7AA2F041836B00D3DA2F190F4E8C97FB7E9903446F8847BE6D -32A1772991AB24ADD997BB3B97452F21A25591459AA9F15A0B5395DE1D23B038 -07D3B35338E4BA1214570B83D730F9FE2F0C0695A331B8E391D1FD879FA2174D -3F83FCAE5E1441C51B7CC7AE625CE6F6EE29604FAFF1DD5C1FFA48599AA073E4 -E54E56028BD64FDACB47C715566D193332542E7A45F27F87F9BD0E7CFEC8EDD0 -C604549AA0831EE8CA7C68A8A4A6549B1E7C0BF2B6EEA70AFE13024C41557568 -D11E69C2F8D7962F5FFB6367016D93125A92DA39E25F30D5E4B85F66D34B0528 -DCD0D71BB767B7EC0A58272DBB90D0D0D0F661B783F724929CAAD9843E044752 -C5D1F2F6DBA6CBC67410623EC23D7C7EF15B18484315CEA679FC1526B576F54E -D1DFDD0E8ED5F2B1449A05501D0110DB989F62F815A30E84BCB0042A0FA14855 -77D07A326FA8F2B85E67E20935F9DF0068B107572BA80DCFFD90F922B79A85C9 -821363FF5AD881CF7C0212B2E6238B49813FEDCE319FC0FE40A42797235DFCA2 -0F1B939645B97D26A23CC5D1ED56CA253AA1E5C8E88E93C74F410835E3D5C2C9 -731649584619ECCBF3A50F95DD7EF36A8C1B5F63222863F0D8223CB787B88027 -54835558B8E4CD6FA1BD7E4024B6C7267C1266AE9E7D7CACD4448342BEDE1EA2 -717FD60DE846878BA67710AF4508F33E2D8D1827B7AD0A8C94531079BF2550BB -87B73A3848857F32B5D7AF2CC07DF0590D6090B7D820D701E669ACA06BA8F194 -02672D01ECD7E2BD4E29FE18176D8317BF9523D2900B7CCACE98E9B46DEDE394 -0CB3B65538418147C93E77FADEB94B66FD048E47A0F1C3BC92A51633F83E68EE -D239C0F2F5EB9EC68A048EB809B5B9F2DFE41F815CD33623CC2F6AA0C06C9F53 -ADF903E40B50945A7A288A016839EBA12CA78156F617ECF3BFC8AC106A0B1CD9 -9E2474C0DE1B88B5B18117CC68187DF5EF78C5B1AAE36D39946EEE1D931E704A -9D0A315054F5362FDE90A0C04F159F93715B4082554A6FBBC03AC4C2BB6E3A33 -8563FB20B664A350BE0CED555FF8DCF2AEF4FADEE74A09522BC31CF7E4FFA014 -DCA45475437866FAD01AAC47DA6951197066B69E6E850D4076C0F8B3F04355B0 -E26711458BA45DA22AB577B6D71C8697816ACCDCA0C59E1BD92FA8C730D09863 -ACFA216600EEE43FC54E9BBBCB873C64D0C9FE41DDCC573AEDA8A699F780950E -A63B8EA80A78E89724BC77DE5F7ED67FA860EE16D7E847FCFC198CFACF6FD4F5 -7A25146DD526769E6A4080E908C16F7CEB0EBEC4778A6A888414FD67BC2593FA -6D0111E37BE74CA96748A43A7345622CEDA9D1DD5482E8119DBA73E73A35FA0D -ADA16A14CDDB54D76DE1D407BB39C00AB23EA1CECAC9C4DBD64DB5AEC80AC9D7 -FAB6A1A3C4CA84F630A8D3A143A3490818A7BF0C8F16F6220BBEC2B8CCD528A3 -4A5F899039BB3E21B9554E3BD873E2C1DAE37F0700B43CD1939CE5D16773520E -7A915895E74BB21222996FB5623FC6F077F44AAB49FD6E8B6AE3C8A9A93DA0C3 -445FCFA9EC73F98378C5B4EF3E67978B7FED5FED1EDA85BBD4D0108D3E059E63 -28E11EC677315B68DD63C517853C1A65967BF1B859A9203DBC2F03C4AF6A20AA -E17C7103917CDB42303D88E4A1997B34201FCC208C941249624D039D069C2977 -B28AB8D215B245CC115024E3FD2ACB74184C8548DCE81F4D65D4CE268E360C03 -FB719F335050EFE6B13EAB0B9580437C6067F0251660588FB519409390F94326 -97C1C7A485E28C199DFB746BFD1CECE61C6F66D20946A54D9F05CC7F14BC7BE5 -9F0C229CD87F1A35D1AB547EBE307B0A5CB61F8E7661DFE503FF2EB3344EF7B1 -FED24165DAC30B5B6F39D1D1FA414A19E7FFEFCDF93808EDD4493AFDCA0BE31D -03EC07BBF75FFF1654E5D3AA64DAA505454A499E398C2F53DCB93BF548451764 -3E4D7004D97DEA315CB51588F654CDF6FEABADA788D6DCABAC86E3DC9BB7E42B -FBC1381C47277801E353B58400F9B9AA4DE2E1BF4E6433688C8569182F0F4568 -6D5E7931C695A5CC181A815B3D3252AFE7F25EAFCD8B07FB7B127731A25D951F -51506723A896F8DA4027296D11DD4123FE93BCC81914409D2E6381F1F2840852 -4214BDD7C2671B85AB24BF24F895E67A91DF23E21C5663797F049467329F3DB0 -A74763B8C6458A5C9FF1157F9DD08C37351A6F074E1E5A05F9827AC15FFF4A68 -93E1D010E02D82B63C1661BBF9113D415052C4C5070E6542E5E07223745355F7 -3DD76EDECF1C5328A29473B07BDEB0D4223C5D3DAA6BF3E639C2FF860AADA0EF -05A9BBEAABD8389112937B0F282A0D6C50A7CFFB0D214523EB8618583DF0EFBB -D98086ABDF5EC23F57F1101E86AFFD2CE314B4240380C6FFBE4530E6576180C2 -3A3695E4D70DAC730C2057578AA0CF3E8E464500C0F2C7ADFADCB41E1DB62D83 -86DAD27D800C797B01D3A701C62A3A1D0E1C18D76CEE1AC9F581CC1C697A6E50 -62053E7EB21754BA9D9763654CD7FC08B53A12408A4CD4B99F4061C41FD06922 -ADCD8518DFA056B825A24965B576EF1DE31E3A4E2E54AEFBAFC8BDF5E833AE8C -929405416A91A45AF0977E396ACE32C969C87FC93DEA7888A35B7C9E8ECCC350 -C9388F9953925A208E63514E9BCBDB99BD47D146DE4EEF08810C81DD6DC06EBB -DC1F0035A6DA0D99F32696E8B4A226435376E26C0ADC8846D28C8B875BD03663 -73592B3FB5D5A0C927140F27B6CFC0FE2A8DBDC77CBEE70C0E2005EBBAFB8BD0 -5B24447CEC27AD4225DB0DC1CBBBE69AE423F9622A4A8BBD9466962FB54B64AE -726060F18B3EC8D945009E8FB6C2ECA462758A78BE369F00AA4FB8534468F700 -A9376FB42130ED96EF9DA17B7B9589474D1427D0D8FF5152F6306527B12D4329 -3CF929105E04AF564DE552C4F06B466F16A8724945CDA9E098AB31A032CB2D05 -BBC3CD225A51D818A9695D6E32DA429E702632B32FECC25722652F67165695E6 -D9819D5B200EB3626FAE8FF7376DED2B1720CABD8AE2BC1A0A39B7BA427BCEFA -936F934DC88685CAAC7DE19929C9F99984CA938BE0044FB341AED41B19F97F41 -2C31E2C4DB232FF90BC0D15F1991DB60E7E944D90F7FF591136E1F260D3764C8 -8BA791589D455192A19ECEB8A9E80FB5506A479EE444322C4E8E8FF0DD9BCB8F -749C69C488E816625DF57EF673DB1A85BFB19D960461EA8E6718A1325D878D37 -FC7BC693F15D8A85AAF4C42216490BEA3D1638BE006CA2EC9D4DDEBE3C641754 -A78F6EB4B71D7517351A91A711CEE1FFC4FD57B0EF71E2959EAF82AB5494234D -FAAB49B1EC4DA7A2F3657458CC1CF6229901C2AF5339E2E36F92197762A8E446 -5F8F9D24A57B80850DE4264FA9F23C947C35801C2B557CFF02B15637D5B9B059 -9994ACD938E826E4DAAF9581A63EE82995E793ADE573CB2B9628BD7B899A1C1F -D437749137278A36B921206B70495E0DF379B7B7315FC02058EAC7F9128A3B4A -30E20BCFEEE17A99CFC9795F193E4356AEF6DB94A7CAC8880FAC9227A0BF78D8 -B7BC18F6DAC8E5CBA63996CFD5E4F78461AFECE7EF62C585B5E5DD40789AEAD2 -597E24874B3BA77799D67DF746E70FC9DA4CCD9BF40F9897092352B3A12682E9 -4A5A92795C8B52E212FBE7323349E867ED8FE78B8B42325C6AD4BEC036BC891F -0AFDCBDA2A75DB64EDD020A39A4AF0387B68D64BFED1C5FC11C58919C6FA0C96 -F617CA7860D5C10188376F31F1E323A95AB36138D4C8AEABFFF46CB6A3618ED2 -88C3BEC6184BDC2522388424FCAC44EC1DCF68E6B0A19B01A223BD7193EED9C3 -F5B838BE944E6C4CFEE7742EEFCCCF9F60EF632849E3306B990B2CA74B8F6AF3 -465A0BF22E1E59798302338B06682323B19C4E44FEFE84C0A210031F132E015E -E74264B3B0DA6E09E116572E707C45FE7010C8D291BE49657248E416B4F244F6 -E557295AC3633C4B84B5638EDA1B2767D0FD770654C2667EBE9494B1DC28825E -C12B1244900CF0F45EDD038BD90A98497250F897F1221A1733DBD4540D1B374F -827C8C10FA84F5A1F6A4C921426BCD3EAFB1B8C654131F15B4BA3E8D489F00EA -9BCECF58E9D15BFC1B16E4A08F0D5459D26559144278DD721DAC117E4C0F6EE3 -19930DF91DEDD9664287F11ADAD823DBAB597729C554DA905BC72A6686481108 -7FA7B78D41FFEDE9830955C6309749DE1ABD705BD346019D4ABC4C340C9A2A9D -CA7D20D6CEB59E8B7836043C49D33C86469D27CA62851DBB00E6B8F4E28714C4 -B5F277CC2CFF502F0E47352F296EE242318D73197E754E4620A9B7DBD075C93E -5225C68C47BAC50FCB58A6D33E1B55A39D131DBDD4E014C126DD320293BA9748 -4712E66FBBA2BA24BC8F4B1A285AA123F7B8146F4684CD922EBD333A7B493CE4 -F9C7BDE8FEC45429EC26DF8569130F0898C3D43F7CA90C210B103117911B27C1 -A14E0068595867748609ED646B5E08485E7467C36A528C738C1B7CFA362CA720 -C088CB808926A1D895DDFA944468AB702AA7F91D8A4BFA372E6D7640A8E24273 -75C1C8466DA13AC7BC57CC6ADAEC27CDCCB29BFA5473CED983B9E2EC94132E18 -6D77798D59EDAA1BA98A0618A1066374D655D55066BCF81FAB2E4511E1928ED7 -C77FB148D57D8EA24EE0720AB527AA3A76285B696FD2FF3546901E849A5B3802 -F21F7205C80F9A4A102DFE192C5C5A5403C6A8AE106C10746A550F7CDFC992DB -E3A64BE4A2726AF22D403EAD6AC921F48D6535E9E850BEC1E5B0AC79AF04502A -1FBD5043391104C6DD0B09CAA3654A7A21A52D6164FA2E7A4FDBE9CB328C3A53 -05406F4A2F45A1FD4B2CF998E94B7DAF2E3CB584A8AD83CB32844979EA560E0F -6EB5215F705141320F1BAF1504E210D3690FBC58830BACA500624F7A7ED3EEA2 -789738814E197DAAF6DA815029368B28818561F044171ADDCB73B6DE459C3E9B -64196B66F8A12A1BE100124EF86CAB8B7A10822DF4951766AF568D826E0B91E5 -E640EB8D3D8B188912C510D456231E46972B177019A807DA6AE89E76400E82B4 -EF3EC27BCD8F879A5A7A04BB4D5E290514EF7ED3A976A5B2D5B4F9359B283DE1 -1D7BFB356B3F3F02BB45FA93F0B442330A9AA29F8680260D1071BC27829EA312 -0ED69BFF2730E0F550F35CF2CF16AEC7D8CFDECE336F95789FA1C76B4C6BECB4 -D6400166ECB6FA2A44C587F15DD55F55A1F7FFD8F07CA99EDD2052218828B191 -D52CFD56538ECE62E946AF57C39CDAED30DE6FE58491181ED84E700092A061BC -821B6A5C32A0F436DA74826E0790EBC7D55F14223DDA0234680D41A5BAC55EBD -8D657911A3C10F9537AC9D3388EBBD5856F043A544AF4E60CA7243DA6D38BB28 -4646E77BF92BFA763150C7E4543E844B01097CEA61AF0CA802CD8055BEDD63C0 -6D91EE700452A400496DCAB0632DBC58C5285E8722F9BEB4860842B48B1D9FAE -B266B6381548CA943B5EEF047A6805D99AF761A42AA6850CC458E1C147E3ACC4 -E41653EE36F6BF8C938DF808E8DF9220690A1E36BF5C7924DE8944C261955F25 -A7976C3FF10C79A10D8EACBEE51C00E961588131E35B08BD2B07962EF33769D8 -8A7FA9BA8EA90C38B846963030FB463511992396C25B4F83D6E6842BB7408064 -B979DF1E0A1C20719C8F9430C1F46B36DAD548471A37B4328DDA480F3274900C -E33879F1C6AE71A76437DA0F6712297CE10B14552768C06315EB48500514BC14 -AD86EF94E5AE2390B6D9ABC097BF1A9CB666988EC3797A3464930867433F7F95 -D26D8DED9791F0C49EE8AEB9017CCBA02B4B68D639B58C864EAD6067B3D1FD22 -E989551D11DB9BF2A8D833391D25109F007D9E3F7ECDE5F21C64AAE0B0D4C4CC -C511D9E7251286551308E976F1C69422457B9F6544A768188EC36C7964D158C5 -09ED5CF20C62955EEBFB0C4A851943CB1BEDEFC216A5F11051C9074C8971A13C -59EF979D9C6C90E545E7569F16A202E0488548C6AAD14AA2D3F5C15E5807F39A -00752DDE0B2537CEF6F67A921342CD30B85CD65841BA2B92156F2ABA110F9193 -1D8F5C3E7BC15D1F2A1B45FC37DA6EB07B9D77EC0C8F507F49599A3CFFA76C0F -4EE4037576BE710FD8D22424899D80D389FF23B8760FFDCB88B5BBB17345D278 -42286B59AFC25036261678551AF7CB98432D66CB6C49E3ABE73B47B0568839B0 -9820B34D98B0B2312CE07F438A94F7DC4C5D50066AF6FC3399BB9D58AF4E4F7B -8271B178FB44B6C9A286FF4925C920DBC35D5AF5E24B60C5637C4D1343312EE2 -FA5625B6AD5ED764EA7D670761365EFDB46FB8153E23072885C3225ED394EFAE -6B319D543ABA7005821D8B857D06235F83FED9697FDB48074BE3E797D96811F0 -10BC6392B1B9D4A896B3993C0A77E94B57CBBE264C12463687BCEAE30C575B1E -16DE09B2D92E58155BC5AF9339C62F48DC0C66831B7F519B236A7F1AD6E2EF6C -7216A0304F415B8C95E46AC28A0C2EED00A5E22B193338BA67F78735D8C26F7A -994D25DD5FBD72BD3B1DCA1E2B0F7151439313824FA3811C01FEDE345439CC7D -604ED31A684426939CB3F2B9DB05D509A7B0EAAB0583662991FC3ADB4C50A515 -3B881A40DB960A9D6226C4B8BE7DE1CE38363BBF3537A68E269787913EF43FE0 -AEFBCFA0C199AD0337F48564CCA04DBB0442A4C8BC13B0072BE782817F59C8D7 -4A052705029F8986F888C498825819171C12E4CD2A33BEF7FAFC3447FB5CE42B -B3BC34F3F2B61E0E43048E32522CE84FBFD8B7E36F9C83320D5C8692AED52588 -A2359603E13A2F2E43B310D433B83713F94D77557C9C8EFBA9B5E5419B75BE5C -25E87490EFF8A2C54734079826AC3CC2B77B982F3D11141FEA98B417603EFE94 -240F453DD6E62737EFCD0A104ED9009B009C4A62A2188A7FAAA0778F36E3CC25 -D3E6D192B338E69B6C6A63ECB42EB981B08D2B65646EBF09DBCE03940135D76A -E22D04BA3C8293534A9BEC2969B54A12B346AD976FACA36C07376C9A8F2A198E -BF0BE85F63EE43845F761274E0D9CB7531C451516EF085BDF6A02833E38B8B87 -D141D8C9F39F6F032880A6E39022707C2D318613A800E1F5A312B300115EF120 -744D58CFF4C7BD46757945D541C1349225F2C0BB4ED39A2457B7D8E3DBE1C5D1 -D150794D5EB2081B8F4C13F73ED220A7FCF5E2DAB5CD77926FB66CE3063A21DB -1B76BDC2C8B2AA374B9F362404AA707E3E4751848540E83B712DEA3423FE49B6 -0AE4D96AAFCB9D6198918EF460E585BBC2A37B3318643CECF4D3F865E14692D9 -74267716BA6CC117B13CF185717F6FA0C8602041CE79E696CCA1FECA4AA4CD31 -A06916B369B7FAEA1F66AE081DF3D44236F012C557C8076772576CB116783153 -C2DEAB8CD542F0B08C75E00AC57C816B372E20C2660374BF09AC498FB3AC9A3E -1BE52953FA41686599DC7213845478725D54DA531A0375CEC8BA1827C27DBAFD -6555A364CD1AEDA1A5DB57 +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 +569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 +24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A +2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 +8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E +3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 +D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 +D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B +03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 +767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A +8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B +DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E +94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 +22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 +72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C +8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 +344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A +64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B +07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC +1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 +78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 +CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 +7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 +BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 +4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A +5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D +EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE +EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 +4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE +0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 +C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 +314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E +DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 +EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 +DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E +DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 +7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 +1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 +69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE +EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 +7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 +CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D +38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 +22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C +0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 +BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D +4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F +3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD +B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE +15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 +849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 +FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 +4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 +1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 +84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF +7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 +CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA +4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B +3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 +F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D +F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 +DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 +D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 +56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 +8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 +59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED +49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 +87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B +8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 +C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 +D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 +D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 +F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 +0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B +5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 +229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC +17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 +01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 +F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 +3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 +689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 +4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F +A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 +DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D +364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F +7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F +26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 +43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD +8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 +C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 +94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 +C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 +B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 +4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 +7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 +204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE +B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 +7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 +279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB +E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 +CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A +65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 +BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 +6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 +B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 +63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 +4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A +A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 +67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C +DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A +5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 +C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C +9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D +B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 +963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 +D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB +B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B +72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE +B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 +8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB +3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 +668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 +ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 +69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 +C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 +3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 +407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 +11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF +2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 +4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 +2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF +9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 +CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 +DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 +0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 +5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 +9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A +EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 +09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A +2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 +AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 +324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 +486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A +EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 +52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 +9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 +4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D +B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 +BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 +6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 +B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 +16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED +E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 +546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED +6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 +559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B +C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A +ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 +04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B +7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A +8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B +A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 +94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB +C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC +41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 +7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 +18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 +9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD +E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 +5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F +4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F +E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF +9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 +89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 +7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 +AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 +3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E +61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B +F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F +D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 +652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA +07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 +6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB +EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 +BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 +2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3 +9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B +B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E +CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E0009760E9470F037FDD15E649 +93E9C8FCD9436AF02447C7F5AC380FBE69D1405189E8DBFDACF0E7DAECFA095F +E6AE1A2E9ACFC032BA9A5DEDE9DDEE22A88D9A1F1E0FD9BAE2D88FA168386D43 +4B93EFF3AD84A9C05A80462BB3A940B2F7311CF7054F501BDD4F1347213C9327 +5653B73E9D78866901235C66B0C49CBDE3A1BA3A11991E6B8443117745D96020 +38F4A74D9676E4E99291D4420C57ADE4A8D5214D07B14916D83DF15114393048 +FBE0DB83223F609ABE120AB877FEF549B6E2389487BB7ECF1979BCB0785DAD1A +2916961A1DA60AB491FC90BCD6578571226B4DFD204E75FF18FB5E72DFE8A028 +C66F8576254930567A877DBD22F8372E7BA4F23F9497ED653906F5F67A66A1B2 +51957AEB8D443550161075E5523F3D2AFF386E2640B276C3EC5EDAB74AC0DC94 +7D975D7F5781A652BD13AA7F97ADDBE68847167997ACDD038E74E930D8248F0C +2CCBC094031C7147BD8D4DD664184695CF8C474845692540FE2B8A72CDF9DB62 +BE05E15A05F59D56E5EDBE7C371BE5CB3B276FC7A03B5942057EC3136591A1B9 +15E504DC497B663A9DD1729EFD1478C233B9317351D000DC0982F061BFF25A3A +8983E560AE31E321DFB137C77C0AEC704F8DA99024232F26AA6920D58CB17DE3 +C1BC8E20988FBC4705E594569BEFC3F6666785B2FFA49367E3CC695F2A1EB846 +DEB37E120B0F4C0783C0D54655C143C4F74DA0690C6D08D07ED225F361BC0F86 +572D79540730791DCAC15823991FD5DF1AB8F25F84EF40C085B17C9070C59EE6 +31DCE45AFA78440BDE4C69A4D954C2006070A2C310179851F2D39B1B5D3EDBAA +289570BE80F25D75116BBDA61F002B832F9EF2C32B53258B15A1174225168B28 +EC3324C6EC61E5711811E658A1BA65C8D2D47CEC6071CD88DBCDE9CFD2BC34DF +1ECD2226AD588B50AF2399D171E99D8086DDE33E24640A767F249797B1B742CC +F4E95A64E1AF8D88FB128194673CDEFD6A1672DD1D03B6749E729587C0CB7C6D +13BFC785759F35578D611E924CD89FF87DFBC5C93FA7BE150624825F7D137CBB +FBFB1238C1A397826B8D1DF0A39EBDABA5F10B37FE8C27568E1C088F279A0E28 +020DFD377694024FA154AB5C06EDC3CAAC3CB5A69297E1079F5C2F351D81614C +D73ED708907A96F6F8FB0994D3247045E8D41028432E91C7ADB2F22061DD6BBF +5B9EB427971B1D2345F00273D3C40E7E5CBA521064BEDF90AE868789380DC127 +C1A0158765DA54953C19A2E022CEF25DD7453272F2B7032D94FFB31DB5C7003E +DAC0A5126F4B529BDF92550235270EA6787A4FC1CA67350CB7B552FFB89F111A +CB176ED7AE7F92347CD6691BEE8B501930B0020327B371FFA17A8196187D1364 +EB31556C24109CC4DF9E4ADEA85D9F8CF7F3725ED8FB8BE1784E12218319FF81 +0F9F1DC085A1D1E767B8B0A8A28EB491FD849174B334C07A95206B16E8AF5B41 +EB0926BB02ED897315FF9E96C3F7920BC73E5769AC791BD6624673711FB26D09 +C83B0872B455F649BE708825C7BA991FB681A7A7C6EF675CA9936EBFC3B9D716 +6876FF4ECA2EABD1ED2BB6C04679022D577AD0616D09DDA22195C4DDAE2ABCC6 +9C34D3F1829CC39CE35C0622A779D7D816629D181B4473B3DA775D909B05A0FB +EBC3637BA97F60349F62319612E284770432D63B1C903E50ABAD11D611E15D13 +5E7C59933914DA968E467EB448368363CAF78B3B4FAB0D4D6E8DE5D2DC7EB0A2 +484C7191BC0D321376590A4B3F66BE85057ACB94B7122C2587B942C189C8EAA6 +59E2FAE89979DC4A1488C4D37BF9F6ECEE74B4C97E87EBBE81C83D74BE65567B +897147205B7C98854899BDB0024646C7E5688D0EBEACFF49D41B268840602CF8 +66B59A47FB9AABCDA7CE8C08EBC35CEFE54A57F2F693E46822B22B9CC8A0E122 +50DD51F60131BC8969A7E52B0C8783ADBD590AA5BE29A35A588D8C034D8F860F +B59E6C2CAB886123919E6939C970D1FBB4CDEB59205FC60B33ED035D6E315495 +C2252170A9637AC8D95A5BCEFAA9B540FD2F8AAD8D5078B388D27A6DEC10E752 +92EA51550E89FF6276532271E10649FC4877240975AF7277961C6F077AC8B034 +CE6C39121B9ACFC6BCDFD9A438C10DB2B8BD50C169AFD69C818410DF17A8898C +89F03C5FE16F44736C7C15FBF8489EDF6E2BA4BA6FB6E2057A8A193850B5C562 +3DA087036A275AF573F4AAE1A864A7FC58DCC2F00B5F24401F96EF855732DD7D +C86ADDD20D6B46D8E69E958B9B9B14B8D75C4BF0BF90C0C07E471D77C7D30E6C +BF0C8089E81DFB3BE95EF7F5470A2501C6831C247034A9F3F0EE5526E98226A5 +A37EB5DDC7A03F01C74FA1A72772A2D308CFC6BC4562A34C0FE0BB79A2DC3F72 +529A51840828778E04AE9DB90DB883CE55D0BC85B15928408D23437FDA41EE93 +515ABB8DD300CD6C99DABBD711F6443FB8190814994064908E4B11E74438E691 +432F01EF8CDF5F4425C341CD7E1CF880F99229AB89E1F3C2A7034BD05D83CFC2 +C4BDADF07095ADCF88A475AFE999BC600215894686001ADF08CCB343DA0BF7F9 +36B049CC836C9758FB9ED3FA4E4999FA5413EEF693312CC83E48B77E53B02B22 +244FD5004FFAB44507DFE77A4B16D18406A30531A5F0CF8BDA7DD8DC095AC79D +3D1E712C827516C1A6B493506AA80896FEA179E6AC2EAC2B346A76AF5570DE3E +AE951A2D526B1C105215624881E11AB9F1CC61D772930FD330AB8C79E320B141 +EEEB844EB92DFB848B2480C5EAACF126187DC786BF45182CD5488E3C4C053482 +A25F7DA6404DCE15E7FCAF96E8CAD417C652C16B0FC62A9784F9985B662126CF +97B8EB2E3E6C224D04BAD22B19A6E4A92F0B87F288180C642BDA9DF253BDF562 +28F8C0424BFCCC27C5DADC560AFA5C4701C91398605EF946FC808A155D779341 +E9E55BE6A17AF80D1A37E2BA54D4C2D3463B820648DF71FCB2E7E8FE43EA25BA +69F691598F7481871C644A32BB54160B6BB10855A61851FEF1E34A2E868BBDAB +D12521952D879A2D4EC5F788E46EFB2E4F8AA205A8802558ACC9C2D427E802FF +DD048EE483EBD8B95AA1BB44B6BDCB3D86A8CDAA80463BCC001CB369A9ED8B4D +0FD2F2AC342A44198F426C64FECF383AB03CD1129F3AA81F21C287925BF53DB2 +42EE35964913D132013F04FC1D88CEA61ED898C571006204AAEB8B857CB544E0 +1D0385CC5A5F8FBBB402D1BFC270CB64AC696167685F9119C2718358A59944E5 +FA8B3C8F48733359D5E05B7DA8C435A28E0502B2EC9965B506E2CEFCD57659C1 +D82C95FF195AE80950D45FA840D36272C1B416EBD9FB9C5A32E9E1806EFC1D99 +A530563D113F8BD2435B1B7DFB3532244FA23261C8E39A8F907FFE624B1AED5A +A201548A2D29F95E29C1670C4C3A6F5474CBB4102ABD63608A121B7AAA86BFCF +EDE7E81CDEC1DBA0B6B4C0BE77B742F66729E4796D517374188D449C867D7B28 +D3BC8EE433BD69C55EB49363EFF7591511C808D758C9E86A55097551010C4230 +0837F93F3E7EE4D11C6DC3B27ECC2018FDDB9C664B8C617742012A71D6CCBCBD +5ED3C665A977889F923426DCA37D652C3338755F135C333B872398270C65545F +99C9E634D4E7F41D7C255D50496A9FCFAC13492DF755A5A4E18EB9C6F21B2E82 +D16E79B41025EB906A1392E4CA7D9B549B594C930E3EA1DCF804353D50277B73 +7119F6BF954D1E7C034086D9D0ABB0E1343F742E8BC0904D58D90DA4A1E99E39 +BE7E1118787A1272C059ABDC30CF9725C7E77758317B9B9DE5F20BEF25D1CDA4 +D0510F06A63566E4EB2AC6CBB9EBE3EBA0C7901A36A94D6AD7EAA5544A1923D8 +0EBCF885F400D54B000D43063FE89D2CE63263C3BF8ADA61A8CB29C913D8016C +F281ADA1D1077FD50E78AF892C68B624879A8597F0A41F34B777DA7174CB3D7C +7A3B5924C52DB8A3F395400A3B080E5FCF828E0C0013B761D0226EB2B9642779 +4F3AC345ADDC3E51E088286DD5DF48BAD53F1E9C3734B81C219EC91017462AD7 +40B4CB60702A4959DF6B65296CA9C2086D6B4D2ACB389BC5900C4305D3CAD797 +7A09FAB0C4870C8E6F613285A713A005746C49A595948D3CD79461408ED2E422 +A9F2CD7DDEDF71DF510F10BE7D59AE43CA100B0588D5C5B3190939AAC4E33242 +F66ED1D568C0F77F30F59EB176EDB222DFE6AA02F37B2F668A9D4B7BD1BC1C4A +0AA77C36DC34C69DF1F30C9EEA44AE2E34B6EDDC3CD0C8D39B370A97921FC7E4 +16D29B1161BFEE78051A6C198C74F39BA3A0313A1EABFB4208896E4B107206F4 +A15D810D4FC8E434FAAF3ABE21AC7C71862734E2062F24A09DE0145E7D101338 +DB26219DDCD138C5490EA6EFA678894D2A65986A53FB65D4BED1EF2EC09D42FD +75CE506353494BF07E81764507E20F0DD56D530AAB80D294E64F0534ABBE7AB9 +1AB7DB8A6E6CEF68A46FCC60A0C7896EB6135E602FE798C362F4A3148466CC74 +4EE7F2654275C4771B8904EEEBCC2C0EDF00FCF17756073A09ABFA792C31C37A +C9C62DCFDFD3084508A524C4F1A64173F51524F6A8252A4D8E545F5CCAB02E80 +37B0380EEA857EDB7DD9DC1B256129412E936A628A9B0EA9AF81B603FE045441 +4D54B03ACF1D9613DC02CCEA16C6214278CAB93C8822496F6B36B95233A97455 +FD6B72E1EDE5E7EDDA6CA352DE7AFA79AB3C850B1A7B9B15C951E0B6FC5784C0 +6E02CE497726992399F7151E5B2ACC53E63C1CA7AEE576DA5AB610015553C8B6 +CBA6558F51CD5F7C9A433ABB0C95BA8A3D07B6195C0B9D8AA2604D8AC45225F0 +FF4FA79AFE383E29ACFF6841AE45CB75CE8BFC7E107366EB90BF3DD04F0B85E3 +93C1C5D27B0628E39F8376EDB6F6599C4EEA10133D4D90296EC338B5466AEA85 +0672FE7CF41AE7F71727D7C1F0679C84ED5EA50C8799143FEB9090CCFA94F29D +6A004919D731D0DE9DB8BD45B3EB53DE34144417D786915E21A636A4B43428C0 +D8613B1FCB93909AD6ECD8D13A38BE00353DCACB7F2DFAD339AADF797F33C85A +376B76C13415AE46CE10E5D2C6D27B9EB2020C908E115A8FE6B6131D6CEED0C0 +2DF5AC2A6B2BCD4D19F6D700597E3DCBC09383A0F0ED2BC2AF34CE4239BCA460 +CE12F7BF71ED2F4CDAAAF886D5D5A39CEABEFF8F6AB3F460AABE941AF86BAAB0 +FE7F1AE459746F0E2AD096A85D28EEBB67813015B4508FCB8EE6AE105F2E003A +5AEC3E87839F9BC210FFD3A55AC270E339DC1C5ED4E23263F060236CEA575E07 +0FB697D82FDA59D9E6F0A45D5CA84A4F2DD08FC513E834851A7C068B511DD5AD +347B7F3E82A454D26AECB0B2C59FB1492B030D00B86965F8882658A97D91D32D +824C0D088A06FC1FEF6249F3621058D47F835B17B52D59328050DF62DC4B348D +9372155D19DDD68E05948D06832620172BA8392E82738EEDDC0E090448B87713 +D8E1F5A34F58422A71C82EA3566C08824368D7DFB08C7F23641191166E26BF7E +43EBC54CDF534D3623FC0DE3D84B42297802A7E2ADFFE140672C644575C35BC0 +86D47E91CBF5027AC2D5CFFE395968526B8B6C9E21E5A11DA1F7F4533B40B692 +3A64DFD1117817EE0F71D816E8AD7AED5D7A35F3A63F2DE2AD038ED53C5E7236 +527517B57DD462C10BD9FE341461C61B6F00A263DE052224A64588B82DD7B032 +EE9F84BDD752DB0463605C7AC29AA9F82FB2230C21DB0E099C46D346C9318519 +217B261E26E9663C4CB3FB329EF522C36F878497FD3D51588A93BF7D159BCC73 +F0654E8D8DC8EE4F06921F63C8C8CF208B999F9F0A88D124D51D9DC5F477D5E1 +3B9CB1B47FCDBC6E5E67919DC204AD4827A122F2ECCA21900A626CDB130B36C7 +7B1DE00AF950CC6BD1D202871BC2B15E436E6E81656F3515F91FD6FFA9D5D01B +B4A84C6CB8BD1EDD728A4B9D07852E1620E099407A696A377D14DB576BBB7E22 +D911A5F3C815ECD3C658A43625FEF951B7CF9EDA1A31D2AB7E9A6B2C30338C73 +C2266420E17F95441D7F0F9A3A6D4FED74A8119142CE87D5B45D4D0D7294034C +12958B433DBB030F7B3F6AA9C69CCACF2E11B03E63A57AD6E973152E91C807D5 +6093867DA27EF8E8275669DC138FD185D632E54B8BACA444F0A1F0482D4512E4 +26BBD3E9514936A6C33B69BFA069F22DC3E7729C83BEDAB386C9B1927579FEC5 +321D869E925A86273F9AA06931B10838AE33D1DA0C63B25017E9F22BDE449D65 +F8CBF9CD2F48D8F71A0FECBF15E9B3F9F3B12C3DAABB1E2FFBADC23D99C28A2E +0B3C18CF82A9088F62AD66F6E0C02AE18A7BBF8F87B69017AF8FAC001683C729 +D5B509325FA0517DDD01B57F7DA8F8402ABAE8A4330B5BE3234E5FCC03858ECC +28F48003E9C8CBBDF1C1489D6F3F7E4C01E847350BB8317995AFA912774E2BEC +C1CC35C7A4EB2B5409535A82A12B83963DE4E9E0DD73A9A968F24557868F2D3F +35889CCCB7954504DA62AB5A814A132F9C1AE8E319AF5363953D316E43E4698D +58E4B158ACCAFA03CF1478E0579B5A6C09F6B99FDDD487182C29A206A6E7834B +AA860C43185A50C20EEB168AEA77D29FCCB31643A5638BE9770112B42F1AD141 +AAACEF16DD0645C018824ACCDE6228E99EFDE69F88526248445B017496E0B643 +C6AB23C170508E30A0A01128599E35396409352FF10180AB63CE8D454594EF9D +879BB2E5DF9B83C57712AF2F1DACC09BC1EBC049F4EF1C96B1216E2C7BDB8F5C +D929133B1F7A11B5FE197D87333D0347B8480F8A7D988371A1016D089DE6CC77 +F846851316CBFB5E3476072300BB35995950CB00A54B71D543021D1F792EB071 +9EC73ED5B33B415D7CDB60D4A219B282AF1AB7BEBB4546B9E2D3D563250E0BA6 +B7C62773DCB0EA7DD3800E0F7C0DB031AE36B76E4162C494CF5002062780D703 +4013E126A4533A83C852F3470C6944FEBA18AD546D9735E26A84C8B0E24C6D5B +85B26BA8AC9675939807F453F36D58B4DA385795A9BCA869EEDCA5BACA359698 +F38CB1688A882DD6307EB5915BF5D013D3FCEB17BD5500D189A4D964780062A7 +7406057E06100C8D5518316AC7A1B295726B65E960724072CC3A3DA3D41CF74C +E1D0E744C866691C56DE01481368ADB4BD7AA9379DD21626CE05BBD0F83A3981 +6DE15FD55D4303BC0EB3D5EA4FAD98DAA1A08C9262A6070F34DED9565834E17A +424FF151AE030EEDD3F122243805CF13F8ECA5C58B0C0A53E7514EA09DDB39AF +C5DD0BF1D8B77BB189E10FFE4794589EAB4DE6021F0504FAE084A608DC8A00C2 +E04D2D10BF00A362F41D16123C11F483570EE44EFF771BF530544921B6EAF5EE +DB274F53F0B7DBFC5A52DEEA958250EBA553583102507D8D01E35B86A21744A1 +BDD34B0135F0B2034244AAB4061FCEBEFDE9AE0E65E12AD6E49C8BEBFCCE28E8 +918AF3B269EA09DC093D21B576DEE3132DBDFE285AEAA6964BD451010DBA91EA +B28A99292E61375AA7980F681C750E467A0CD5A0D5D77D61C43D7EA08B96906E +755CE61A0956B7ECF2DFC7DB956C794ADF4A633D9A25779B2BA00FFFC14C15BA +7EDEFD7C176E2C76B49DDA472F77433003D18FAF1F95F0525C241E770CBDFF50 +E34917E592D760D9BD5DB7B5240C17BFFFFA257E96DDA88FB205049FA006C3DC +676A9C4F985B435F00061075CA21034772696CC7D5EF546BAB2374429463CB8A +950E041EBB32287DE8026BFC0A1073E782B20F016372C0FC308746FEE438F9AF +97D74E83BD64065F546E872976C2BF2FBE1470D9B908567BC96E7D0E9F4AE814 +DD1185ACB778B122368C85463C4974DAF2538CAC84FA0907F2E8455469EBEE59 +F75B660BAC703815C25E7FA5DF50A35A7075E019BCBEB5A8B43329D5494F371D +3DEDACE54DB076C881896FC6E5B11B16C418B41C92092D567F1D1672ED846D15 +3CF3C82A923423AA372F694465282F395EE9663EB412C6A7F39399054AA8204B +12E3DEE4A06A52F7FAE582ECE7B3DC0A4D0808B497ECBC21B4186BAAD7064515 +EA4ECD8733EE0B20456E7B4B1FEAE49A291032463FBAC0EDEC8D26C8340D1711 +F58E2A333D986CB0332F7E0CDABC01B327394AEBFCB0B0EF335541DBF0EB94CE +4F1B78DD2E4FA94A4BBC749008A871ECC0F45F114ADC911CC9E8DF67293E9087 +8E23DBE188E7646F46F43BEB5FB779DF867C9A406A1D8E6CD8B6A828046D478A +AB3C7CBFA6C8DC133DBCCE48B57FD462BB80C3E90F1E3BEBCB3C5AC835F13554 +F080F7625224BB73585D50B63D8FDE633A6504608760D111F446CFA00D88F778 +168F6AC31DE77B40AD1CB590120D53EF551F8F28B76CE11EBF49755F5755F019 +E3F198177A106F25AF3E23DC8614627D8D696603D0019787046479ECB4598E7C +16BAAB5E9BB445674A0D9D9931D0A3F57F0B5EE618DF90B087A77EAA880FFAEB +6BD9BC4CA1B72A63D8E684054E5F5524E1B443011146AC6A86D79DFA50B8537F +FFA1AB67E5122A0C6EEA5C418CB84F3C03D88CE39C6181422A4F2371E117F0F7 +E213BA799EA44E051090C0DCC84E59CEE3D6546923A6DA991A368A18937D8285 +14A85727DE95242BEB1C05E8273EAE74F573F745398AECCB2EA9792CBBFB9F79 +768C6F235187C775B03FBE0D98087A5F740FE7270DFA76C70350D1B46E56992D +69FD0335E66DE06C5AF6531E5D841C465D718DD8AC144A789C1BF8D5244699A2 +C7A1D6D42EB4D1BD879BE67EEC5B7093F59410005D91299E249404EEBD333BD5 +CAF6111BEA76518418185635E85F267E3E6E1F2CE3F79FA15338045F9D1DECE7 +0CDE2BB5DE09E826474FEC9BA85FCF21EAF02BC45BAB1435319556A795ADDE90 +6055969E398B7605161A95D3DEA8EAC7D3536B483B7E435EBDB9632C600691C6 +6774EE9447D90B509CDD74A983E1CB40E93F4C005FFDBF09C30EFECEC626FC4F +180CA47DA972FC0619DFC6A90D5AD2D8838F9D7E350B1DA554D8825F6A1DD6C4 +4FF9D2589E4B36D49E1B67F41965F19741963189D7BA19E1888B0FADFB2E4471 +74B08D5B533E46AB4B685E7A3930EA0A95D145DA21F184DE4A210980129D01CF +00AE2010BAB49921D9C50024374C124645AB26FC9132FA795E719F6CB0E37BB2 +22FB8F4EB52E44CD27FDFC5FC464A1598912CDF85D1EAD58F0D72BAB0096D71B +3D7A5E1790FEF3B8E94039890907A689A66B1696B91E0FCCD087254AE16BED75 +88B45F51DFB8A69E341C123C2E0E44F6A73C1F730F440370E650B2F47F1787A4 +8413326179D08051EE4F5F091557D9592474ED9FACD9617B413C9443F6DBDC37 +8970333D68C7090EAFE5B95D8D248A8458B1AAE5ECA028EA5D6DBD52D96102C0 +3AD177251FEBBBCE6AA12178CACE7F4860EED94DD44761C555C7BE32A36E5141 +07F6774584463A93FF85A984EB3744A2028F68A917178B9879880EABFAEBCD66 +158902062C32CDCD97CAF39F957327D3AC5B18DAA723C7A816160C1A74C2CD4D +57CDD31B91F237D9AE56F675682EB3C03FE8804840346CC7AE23FE9EF829F6F1 +647D33AA0E46931AD37BDC5B7861FF68C1CB2FF5B0F76353986EE815A935A344 +D15BE8596F9935E47288F8F9FD7DD657EC61E602ED292961BDFAC55344417887 +3D4D78E311E808621E1414E7AB8BE3AC0E1FE8FB45DB51E6557E949526D9F8D8 +72A9ACFBC4D93BC3DFA1F82AB82DBBDAB9CA667D2A599130D2BD16253621931E +349D897BCAA28FFD12D823E2B9C5A3AF74438F0AB304E0BDFF636412EC50956D +DDEFC5D31D3495FBBF26AE2AD8B5CB34D1717713835A62134B422BBB62A4D824 +112E2923C7B43CA2CB0F50D4EE8A5367E6E2A8D22B5A6C35646E7E585DFD9669 +F854C2EE58DA16B66EE91DC660F151C76940486722DB450B59ED0B2155C824B9 +EC9EF520C4F3F69F041C7D00EEF293D33017A4C3669973CF2EAF18FD24F9E916 +A934E4AFB565D273207090FD24F33AD9006D8ECC5C7C62D7CA6F3AEEC111EF9D +51CEB7761207D081E905B2C7259DE0DD10AE42C3BA73C70C746037C2271C886B +6FED288934C10E851AA4601E943AB565FE35829FEA3B21286580BD3806867982 +D19A8970D8D1F433730A30F29A5697605F8A120A04A3E033924E7A4736ECB8DF +E9F065FAF3B992CA917751F797B713AD8ADB28A4C5918199B7B94B7F72B17C37 +E53BC7E0F1ACE3742822C6C962BFCC87C922EE3DC1F329F19BD1D8ABB57EF234 +64A48C4ECE50A4A2D70047E05FC922EBB2F00F13443463074AF62A67654E9EF6 +0224F588D71CE52D1FBF470BAFD45A81F3F35AD4085E77F0DB0B26482218EB8E +FD5CF6A58A5D5C14F1E77AC0B0E8C77109DC42C2A02AC2C205174A056D40CB83 +87218CD94E5D61F02C01AD7727D2B30FEEC310C124C2D906AC12A5B133F8F756 +B0BDEF206D3585B71236BB5DB70DA9255B678B6FDD5E091D8A2E89E988E7690D +AD92F8D4E24FB333ED97D744920F6EB444A75B6369A06A5A94F1DBB7A6310A36 +F5BFC5E05128ED66294C20CB206BCB9EF5A4782129E55D1E6EBAEBD9840E09E1 +633EF56FEF608F407538827A38452E0803D81C91FB63FAB8F5C0596D7DCAE8F3 +15F13FF4EB95B84967A174F12733F3DB78D1431D551AFB7AD510D91FEF3FBC4A +1C76BC788ECE89C2BC644456689BABFAF9395D5768BE231D8BF9CF25D5544D45 +7F1FA8A90C5EB635F0AF07D005D5C7EAFAC1F091F2BF355B84C143A8AF284D2E +438E9BDDE97716D1756A64FF6DADB68FAA8F4A9DF2D10A5F3DCC7EA24483B41C +062E80C7219695AFD10B694C457D2663271E544CD1CC0C98A8AF2A708DBD9ADD +3F26ED9DB69920DC044270174BC9590025D2F79E51D8B4A5AA089D297C7089DA +8A80553F052F9726E7F0FB30EEC18F89F1C4A70296146119510877E10F81FC60 +BEC90742E6A43DB7F18912DE5125AD8CB5CA5FA925D4C034DB9DE74B686B0049 +C6CB1EF9F20B2923AB3CFDC298EAD2AEC3D447A79F7724E90D790288769E02EC +C3CEA6C1DBC9E82B4673D21F7CC59CEB5124B4C9735D42DBC7E84374AE813BBD +076B932F91E4C429280977D3333D4BA5EDF1E6884749898877231D5AF951E91F +C9A978BBF4B727A71B84639777F9FEE83C400C6DF6B0771B32CCA2C9A7AC4DDC +A023DF4362BAE745A31DE4A827CDBD450BB2141BB2A963153C8F5B6F6F750C12 +2B5AF9A808918FF97F726355FDD822471FFD3DF1CEE92183CB6754D669509312 +BF9B48F1F9725050D5117F4F2A398784C30EBA27202835EB30769F8161F871A2 +A339FDDBA12E49F8D3BE82FAC01F1A052E2320B072FA9C67AF6586573D223A2E +F10156C9E6B85FC076178A11175E9B0D29B63ABE2A19C7B06B4FD617AFC7CCF9 +880C41B44CDB50C6D2C46A68203228382AA9FB1BB02F2AC33D89ADDE049A2986 +A472EA0526B2A26C67FE9A1FE5D0BA2452CA8FF31B9F47281BC1B8FC37926437 +86ED0093473E3F9930C36F774D364AA58037B275434400D98C4A598FB59E36E8 +A614936BD1ADD894E42E2461C348B445B13B0F6C41A7D6B16A72F1A4D6672EBE +EB4768A7C853F65124EAEC33385B289E4B740D45A16B7CB37AC3BAB926068D6F +5044B7EACE2A6D2EC912B33DEF840AB7AD7D37F4919469B325E05B33927735DD +C8B3429239BEC3BF407DAB638111D8A4DD13C66060E1FEC412469E817AF0AE58 +A82D9E203D354A1574B37B5499245903346FFD2D6B192E2F20934752A7BCB2D3 +DAEF9103170F46E1DD8D7FA6C8957ACFFAE9AA1CF3B66CB369C8E4378C777769 +003F2C86F0FEFEAFCD8D7779349EE3D73DCFEFDC3EADD57B4A3B291F8C16AF1C +9ACDC2F7E4FC35C5C4C1148B40FE0E15AD22D7D816B06B2DB9A6FCBAE33E0C72 +7BF4088EC59FAC1488B6627227A44CD09539361CCC7BAC0FE3B5EC6266B8370B +9ADA0A6A47C4843FBB386C8A2CA6829F3CEEA2494A7276B336099D5398BA7FB3 +7422163E2B9638BAD2E09118803D1979A9A62296A2D3EE7B2B9391CBB2966A2E +5CFD5BB8F283E4F584C6050BC43B35FE60F62A582DF2ED39C802EAA0DA02CBB0 +5F580B003B64E33BE279CC760A59F7C0DA3029B0BF6EB1BFAFA8C0D2EFBEF207 +03E60E40E9759604448980CDCA69F533C1B9D843AC49786819B8B1BD0507E683 +BAAEBEC2E0EC805DF8721D6782C0DCE1AC5B0EF2735254AE1329972F0B9CA609 +67EE7AE6EAB3CE4C76FC0F292E0A6285296B4358E31114790A7ED8F0A1A63DE9 +261DD7DD623E52C75659ACB2EC3936690B638E452D2FDC6902BBEA6247D6F97E +B55B130CB5C8B7F8F9B38EBFA9BA98BB9BBB31639D057002B8B5F5CE399E65A3 +7B27DFB8FF190813FB6808C7BDF186AEDC629B877D86AC5B4F30270E34A996E0 +94F8C45F7FC70C692030330F9DE0AF8D8B49E33C5B9E6DB53BD808A7590038C0 +480C2542300CBA463409FABE1BD3C04DB990F20BEC2B61612EA100D983E87348 +47449976704A0FCED0A544860187F078CC71E2E6ABBC276D7951979D5B2E7A9F +D04A3E9C29A9AB227242F4EEED9DCE9112D1DFC51CE6CF8E5C5B28E323A4C1F6 +2D203DFD0193E6163219507E55560F26EE8D03ACCAC7C5A31EC0C13473DDA456 +E1B85458CBF01596327DE2DBE73061C8AF1345BD8DEFBF728A2FF532962B4006 +12D4DA4E4304389E363F03BF43D43F4DB7AE8844D3BFDD64AB0D8D71FD70C321 +6CE0FB4CC781A33C4CFFE22EC37CD113FC10731AD08E1D645C31FB43385CD4F3 +3406E22D4320AE407BD6F0CB8CE2C7E5CF031D0DF0E5F7A928B399BD1398EA72 +1C3D36FDDB497D942EEDBCDB438241C7BEE219F685EFB714C2C5E91FF444C273 +7B6FCE88FF148458373DE20E2D6EB0894542005273AAA61DF7CDB25D638B1741 +F48BF951623760998C4B2CE7C7204DEB037153F1363D729484ED98CE83C4E18D +FB4D1251B607B306A3AE60672185575690A66F2F2F5802D813030499CA6E5EC3 +EEF54C4625875B7292A9E1D0215DFCCBE83293F709A8C8B823EC7E9578027554 +45B537A491A8FF07C15D9325D2BE3E972E8042FE4808EC9547A5E7B2BC6887DB +F748472D61647155CFFDDAEBE99E45117AD82A11AB731EA398C027FE3B22B6DA +0D60F3F0372E4F8A137FBFE2AEFF6DAB49224A0733BC5AC88E51AC0F9E162CD8 +F82CA7F8DE08AC67E999E2C7EF833B0F58A6F24C5D81E3D759E6C14DEFA6A2B9 +793E248B3C9F02E311C42E1D99F4A86934135A2A388E3606429A247A7AAD84AB +B2733C2F5E6A8BD1186B4C8B8B13603295507C74D1B16887998D0783A07744CA +D769E90877555B1E9A52131D8E361DAE2977CF3CAC6917FF78863FA8D3C8B0A3 +4F45C667F46759D70296BC2683C007D66F9C33F6C2C0D5833D29EF6E80D8D449 +C3831B5474CADDEA0033DB80B531B8D98C3F06B198E922D844A72459027AC955 +A2CBF10100E28E48F7CA4CF4E8A481D5603E3E756E28DC06D43D5C3F341F736D +62CF28F31F63CCB7CB0E8FFDD87A9F1AD2031EA1CAE763E41A3B9A7D08A57C50 +91F2C36BBE448EC1FE91E574BAC1C128C2ADECC1C28FD934EA982A2CBFE18E30 +070B83E72FC5C7F592A27901F11CF1592EA00F77FA68CD35822AA6E06842AD13 +871B1C4ECF96FB5A2CCF62F04DAB8A95A35D176230A903EDE7C46F8DB92B3C30 +E92DC73F1C65F9CD8DBBB42E22BE75E27AB51A4522F2755A902AAF29B39FD7DD +FF296038CBA5719CB2B7620E847E088DD62EA351155124A3071B5BB2DB0CC215 +AA08A81A5FA664913F0D0DFB12F53DCBC795B3F138EA9DAEBBEA085F7EE7CB30 +6F25563F1A02B245F6D34B944B1252E3749286EB83D53A2796D2B2D059AE8C29 +623D354563B863A657FE09CEA1E527B149E8627209AF424A89298B463CE9D658 +CFBC77849E8FF63151BB62BB3E35050844A2C19282731D45356F298AB72322D9 +35CE7F0A0D261D80CAE36CB1B35992300BB23403CF677C87BDB4A0D7FDD5EBBF +D585A85D90208F9FA2F464BB6720F55735FFCF149B9EBA39C0BA64E4EA140E5E +11242E96ABBB3A9949E7B455044DE3476FECA4CF36223D177F0FC2F9E55B279B +A7D94B299E5D55DD792AF710D518A16B8043BECB57D11586AB99694929EE7C9D +C63EA85ECF73C70D0C31D381AE841A7074DC1622C573D17E673CDC5EE21279A0 +65F1FD64376AA067A6A4C70456BFD4578348583AA4B478168AD253815BB32AC7 +3F3FF5667B0744F897CD2D945D185207D26C4CF35449D20AA602EA406A785704 +B04CE304935DDCAA6391AA3910B62E6796E4EE96B74676D5DF1ADF7FB03AB5F0 +2A17F79FB544C8D7C940AA3BD6E8900F1E35E57274250275D84864FC5FB4AA3B +B6FB8E7E8F6F399629A4782B16BFCA397609BCE9F55AA1B31F109C0F5A8C3810 +1C3D492647F5C03194CDDEC3BA526B261373503BE767E935514A861D54517555 +714C8095809B14DEF9A2F800138531AB5472D3A4661E915E231BC6D8BE0463E6 +7B1A414495E8AEA435913BE0A1B6345D6D63B877957F2A54754C2088E3211346 +8BB4C63C39018CE4C87BD848AC4DAF11A15011FAE7DF1A817D2868E6766689E4 +E6A9B1F20EF89643221AE7E5D042E3DE2986C3B3835DF0838805FE663E82E734 +EB0BBCF6A422BC08F305F2DC5AB8D76F61CA9ABD7655C583FD61322F1FB69E5C +FA4462443D7BE0B7F783488CB88D374217F62007E13D621299D5974174E7E318 +B63A7CE169EE74D06B48D2108B6B35B46146D9C23944E4C2D047784FADE2C089 +F6EE999E0360FCFD88B09D28601A175FE92021A4A595D773C0542C5A6B478BC6 +DB3C56AFDF2987126C66951A135CB715543501309518080774B7268C632B1731 +3AF603FA8EE308D9E279A8C5647C1CAA7CC6A538460D805E7D2187C9A88DE760 +5B4DD8B60AA812934DDDBEC2F6E59E7A82E2DABA553976286056E5A3BCAFB813 +EFDB84C0010777BDB517CB45E78626ED818D225A88CD14B8F5AA4E22598343CA +661D20AA69578F3196EFEA87F9504AF02ACA71067397F3D5421F9F7B6CB32D0B +1EC45A237119DBCE537555D2367DA7A20DF23F168A3CC8715348961AAE880C6F +B2B7BFDD862EF4FD149B457AE624E4E5046BD86145C690F5BE6E4DD3C751E3FD +6A0483585724ACCACD957E7C4716DB8FDDD40670A79711FB8E228B3C52C3AAF1 +06FFCF358BA81088AA3778B4431BE87E72F72A21CEB70F6CBBBE4DE5BA7F4D91 +2FF8C30F97A7E3B7831EAB0D1E08A8D4A9E2B5744402D426A57BA54064504ADE +5EE649AF5EA1BABDDA96B4D2C23333EAB6CB20DC8147A4D567B974DF00E53376 +0B4000462EBA329B19A9CDE9521DDB9753C13707BB5AD045C01D26D6706C7A02 +316281260345756E793AD78E80AA41DBB03ED78CC796469AC209CCDD31A6D24C +2CC41B3B7287591ABE3C1D6778CD14B4115889F0FE1C7DF7616E588B3342A080 +42FF84470BF34723442E307A516E2392F897CBB76C79A3FB90868AFFE2921116 +A7B1FF6974722C259C8B3B637854D3A444EE6032173F606903AC6BB850CE5D8C +E2682001A3CD14D545A4B5A648C890BCB32458FEC0D85D273217FADF6666C8A3 +B8BB3F6165335C2E8AF0DF728A879E31B15AE539A11C3DD78779607B5D03ABCE +37A25656DE8B90C9249A8E00EB6DEF64E8788C3CCE86EF8CACD0912666AA64F7 +CD06405C9EE624EE8A56AA0B61700A223893DB17D3B868E664674A59D1C6033C +5BEA4BE55DD3F9BEC4F347FEA35AA14F9347B0F470E0319EBC8C7EEE2782B9CB +48E1EED48E7FACAD54B488ACE76022BCCA0F281EF9D65EFEEC2BEDED578908F5 +2D02D6A8ECF2F22EB5349FC10CC67D51F185251498CC608E41A7909F0C52FCEB +F091B6353449F630AB4C5BCAE6B55BC34C02A2E44225EC36D016D0E1D26EFB3B +C026F28C3C1FE1E45A7616F0FD6CA94FF7ACBB452C34B0CA13FB40605B2646F4 +9A8056ED9E31FF5443F773E01DB1B06D766EA0FB3602E67FD51107E4D3549EE0 +075A3FF38CBE775B94018C82CBD58B3FF00B343C955F1209E88E66B0E08E5FE5 +738D42A886FA5E6DE916ED4515043C4180499099EC7FAAEB3105B1E1FE65C8FF +D95AF78C1A8CCE2BB08605E676895A7C384A80EF069F455BD9B69E72B7BFDF29 +616BD3C66E1CC8862D0D535C386BCA9182C22E547DE059FC4B7103C520CB68F7 +56624B014ED363599676EA043D2BE99B1E3A7777FC3EBACCE6EEA603618A170E +4D7A324C7BDEE3312A1811A049476910D5E6BB5B1246CA2EA664A1F4FB456E5C +BE116BC3DF7D50F418BB818D2FA37B726F77AE8FAA7D8FEBBF684C344985C79F +5E77534681A44E7B71A959265DEFDDECCB5153733845EFEF36D5C484D82CA93F +DCBF2E3ADE33C14BF242DD4146542B929086945D12993ED66A1D8A930D98343D +3A85C596B0D70124A54A7A09C80D3A63A56B1C61C25AF80C24634FAA6751CD90 +4FC84A684884330AFB7E73F31F7DF6F56C7857392C4FE209D3F98CE63313ACF6 +F07E45B73DC8CE2D75B18F62847E6CB49545BED416BDF9204D06DE3FFAEFF8DC +F95FF3081EB4B3004B58DF44CC00CFED32D5609352EB3474ED11487DBD29CA3A +CC2D6A6CBF81B09E5D6420A6797C336B118825A59CA55A1C877B2357A105CA7A +CD6291C23E39BE2B7170FC0E491D4428C100D89C82345114A390A184DC90B0E7 +C5FB15F95BE43E92DD7350ACAC42D42FF1674E2B7DE3DC24895C6F987ED85FF0 +4D1FEA29D8120C3D645AE5B769B816E9A33B241D5A5C833BA9552807C5D83F57 +D8B01D9620A4918265C978128CF2E949A4D118FFD55BEEC3DB30047555EBA131 +E1F4E3D9C7AD4F53548076422ECCCAFBC1C58E0D71780484BEF55648DDC76DE6 +F21F3E4A69666A88460700E4D1EB98AEA218B5B86E93B5D9C3F0B960364F4EAC +CB95520C1C22C06FCDDC228E5000AA54FFB852823D2261AA9B3FBBC0EAE38328 +5D436A623276AF425FF50F54DD6C51E8B8A19E38C5E7DA31E4FF531529C5FA9B +B393D16807B759901BB19EEB3C174C65D412E71B2F44552BC4CCCD0AE645CCB1 +07BBF43CDEF5D2A4BEDB485D940F3BA15D3D6E039AC7B4E2FE1BDDDBB101146F +9C29B5096E928FF3131162B6286814051F6BE3BB620559524CA9BBD54F2DEA39 +DE945621914F84467B96B3528813EA5450BC834F818EEEFD8346A3C3EEA3AE92 +590CFB69DE004D8E1A9C4719C3BAF54FF1D047B1C80773CF4F7BEDA178F3DDA2 +FFD1F0B19234B0610ADDF0E3679D311871D54A89542A2A423EC6179D4EA77B57 +3C4CB75904256F19A8D09D5C3E33AFFCF279EC48CA2DFEF4D0D38243095E0F91 +75E45029497D92F1C31EF868C464CCB2D56C524D8FA1801DA0B23629A643A11F +292918B7565D930DF437F42B77F8089B8F8AE3262438965C3C117CA8D7C1DD42 +3C5B50A803EA40F0CAAA05D08F8D10C706E360F2D54899DE872B73F829B94853 +3EFDF0821943947494C9CC0D93AC9CBEBD8567C867FD80CE73589C5BB67E22DF +EC66E5ED0BA9543CDB9404B4E03BB7C989097668BD081480678EA5DA7F275E92 +23D3274A2F7D031F810AEDE3FB24352505A7E8AF3DB7E22D4DF34FCBFFD7DADE +8C677AFCB5830B617925B3726AF0DA17F0C04316A21B361CB9357546615E9958 +E71A3B65652DC5129B61D0FAE2EA9380A4E632763C4EA5C6647446C77AE36B7B +E5329054BE12790C09381593430328AA70E04DE8AE33F7311EEDBEE76928A35B +F3ACFC67752CAA93B814B412D4B0C5FD2AE1B133BAE3D84D44D12B638D8E0B30 +D8AF93DDE5F4B7A4D4A3190E714C8EDBACC740D32E4084278940F195041F076E +5608FD8C647874A56B6980DB67F2C41420875C23990DA228FB9330EBAE096F92 +0D4BC27135BEB5579D6940F6EAF1957601BE9A11D40023D7AE8CF94D5FF9428B +6B265A63F4937D69907393EE09BDDEECE757DE74E08FBEA44DAA45D4D0D7EBFA +35A8A6D626C3192B7711279322AC3A7294E5083F0AE1DEB77B52CDFAD7917E37 +4DB9F206B763EF8673365505FBAAAF00EA2E5F13205BA97BF580E5C9D31C6A34 +00FCBE067E2A77C1E53E5E75A10667341A6B6738BB67A5D7ECCC0772CD1F9012 +825E55A4E2F1E5D2B1E04039A1C1853F1D3E337A477C0BC578EE5D90D414F1C0 +66D1616935BF02749D4619774651E769E9CF694D71B0ACC5EACCB2BF4113FDA5 +B2B5F72F4568CF140FB03040A45701BB16F608B9145CF5B923AAC1D63BE49953 +F068BCC25AC7919FAC49DAC681F56358AD27DFD337B41C48D7D0F2A339D2C872 +C6AC7CD65374F495FC75F487F4D55475E686CF2F992E10F163D772A89DACBCEB +2EE2256D61BD6730D8C54DE0CECDD32647CD282D8DF96C46A3A52BC64F5F200C +92C09C543EDEA94B9141F25829394FFFD9949ACA7C392104154F948FC7BDF309 +E1A648D9D547BB55B856D5519239638BA26F529B8FE4C3A4516BC922C9806587 +1D95F47905DDEC00E1D51DE90B0CA187C2EF5616C3601E8A5CB70CC44A3D9317 +A63623B6D0C8C6364F4A9AA4DC4765B06407E28CAB2FB368ADCE9D6F53FD33A2 +6628065322ECC10BB3E43CEE447695DA3A65DF1F7F3F9C238DD59F8E494AAE69 +7E93FE96DF910A7272ABEFBC9CDD88F9670D638726A8E21DEC7203B1D79DAFD0 +19A93BCEB3AD60722779400E5EF564C51D0B8933B8011621BDE258D315791C1C +B70C506A40A4350894D76B82F5B61CA873D616F385AD04E43486A73FC4ACA173 +C2C2ACD61275E5A7CCCCFF029ECC47DA6A5BCDC33EFFFD3929B13A7AB95B4BD9 +900C6E2E5D1B79BC77C6032D3F161705B07CF102372D534EBDA199598AFB6900 +A9E60D191C320EA67E9B639DD5DE27C8D5F3EA3083CF55329F522FB82839F080 +5749D72BE907173152F99F5D6E49748CD05281A20F649A17CA44AFDA39CD812D +F176558844EF288BFEA39075372CC0041FE4BA125E9541C215AA3FFB225623CA +4996C145C4970FAE966769C4194E89A218FCE9B117460BAFEFE7F36131A73359 +5854060789E6B204BA33D2E4C8B006DFC1F0088E4038031C3ACDB933B6FFB256 +0AD582DB1537E41D0A1389EB6406B1E02CA8815AE96FB2219218A4741D6AC935 +49BD86F5FBF1D5889688946D3E07555D67D3C4FE9F6A0825A8F16AD35697F07B +6CDA477934086C44FFC45402C9C4CDFBC21E737EE05E00D9A5D82203580A3DE8 +F64C892632A6BB7D97CEAD41AD558E79218FB52181B064DEA990117F4C47A788 +4B2EE05F12D49844839A5276044AAD7119B26B5439882144C229FED99C95C5F6 +8E6713E7B52C7470359AB5BD89C0494AA2C2A7D4F13D8E8CD15C0DC433A5E892 +838CB42695C8F9505F6C638B1D39A8EA48A9508030286A8B54B1C6DDD3C63AF5 +484A2FE3EB3C33C20FB5C337EAB9D21FE34CD80A03FFF1CF56AEF65416FE7E54 +A1F79947A8EDB771AEA90A0B548B9C73E38BAD47F016E2BDFC595DB4FF0B92A4 +8E9CB1F11B1EEE03CBF6AC4E19C143506866CC07CB8E601B345BF60BCC09F701 +A9AFA2E561A31D34EABB9A0A256B40C554879197D5206244ECF05E001ABE6573 +A73C963C3D95225B093D614093C13A512EE5CC76E278D6C33AAFCFF10A4A7B02 +C22BAAE4ABA3727516215436379E47BB875CD8674E2036FC0A727ABD48EF38BB +63462F70265E5F037214A9FBE2CCB624F973D09F443F38FF378A4A914F84ECFB +27D88F2C195D45CFCC94FF5F573FB23B97F4916EEC2EE48E81F987F95032DA85 +FD867E49DC7F2BCAED085E2F7A98CBF24A2BCCE5BB71328527D15DEAC49C8A7D +DFE0A8E40185FAF3B56C85DF90FF7D94B6EDD52EA47B47E992B6080A0C0D1583 +36B651ED68AFC992A5D2AD2784F11F60BACE112A6DD4F23825851AFEC8286147 +E56B09E8C6B2FAFF37928FDDD6F21513F9267A1644CC7470E7C339586A2D3645 +6D24921A61AA6ACDE55B427C2C6449EC7C9A9AE204496E4BB951E244E9075E3F +4D5D9F3405924A391F1A182D04B30E5C9F836D20FCAA01476C20D6BC79EA3A19 +63B9D6772D390A8D7020FDD4CBB7AF6559008F3A641EC47C8C3AE320FCC10908 +A8DBA0796A6471339B95DF5CCC87B7AB65B1DACBA17BB43F65C34E87748212DD +6876FB2D44E6CA59B2DAC949ED962C4EA7EA640D7226547FF293DCE32E8F7A7B +FA776D17F376AEA3DFA9F6CA60B90E9AE40480BEFBFE4D5EB1A9ECFD37837C75 +74641DFAFF3A19BFE5CE53F27030C109F6DC853CE280807B99E888637F66AFCC +65053A8F007620A5384AE07C1B071A5BB05436A1606A914298F973883FF8AD21 +97D531AE9D9E825BC5046DB8E75D0DE5C0ECAD582CC6CF03152EFB7AE4AF0B37 +9EAFB60E6CCFBB396649B0561221ED130BAFD1659B7864FE3D13FE4CD4F0DD5D +052DC85A500806A0F86760FD20F4546E026FAAE6C104AEF2F42CAE1DA3EBEABD +D557979350CB188E6B08D0AF9184DE85852C2BC19AC8DF103A74CBBC149B0489 +B79A158F1A00E3D6A683E145C200A05808A7366C4023193CBA7305AB87D132C4 +D216D904AC3DBD682D66F5C5CB272CB96086A5A6E2E6E31D10EFEDFAAC035ED7 +33BB27AFB00E11AB3BC80051BBC3429DE12A2F0421BE5D36325B453D8DCC0D76 +33BF39D39AADE018877574831FA0EE9114E0BE13242B5D1D37E8E0D9847629ED +DFD33475FBC1416108E80932F53358EF7499F16A1BC23A84E99E95709274E8C0 +DAA5B09E7F8D86A5E67D80513B19348C2718FD61DD12AE18DE4BD7050B73C3CD +901B299187E5D034F2DE65C1CFDBEEFC3FF9A43B693745E577F23CBF16FD6954 +F8E6EDBB6F34C48183E28302B112C99395762E2CA39FC922B40F0A35F5111F53 +A5E99B418B1C79B434DBF7241993B9EEEF8DC018E388F3C94872C3A4E962C980 +C6830E9E96817730031EABD390ED320746CBE9771E7FA6A081484D7B6BA9D126 +4A3CBCB8DF50946EF8A5D1EDB0F4C7075E73F7BFDBE729BF11F086E559F881A9 +FA00620187A734BC055C90DF4257A4C2260FDD5F3240CAB8CE54270B7895D683 +8B074348A3C249A1A417CA6A0BD8BC4A80F2BD48BC5EB62124BDDA4D572DE578 +3CCB40DFDF0F49C50245834E4FFB0684D833938709AFC225F327309125949CBC +1D16564AE909C159EC53E615183797D6DB59C319007D5E362DD5B10902CFC86E +9DA92D5EFC1C4AE0035B4358BF003B6DE617029AC2290A76D591C107C5E6AB41 +9751C82ECEEE79B0AA4191EC82A090AD9105C6A83E2A67FD2001BDFC2ABCAFA5 +65BAA032895B5C0C9177E8AA04FF029D406CD93D7885E90C42D92955BB04ED95 +F1E28F1C4B401300281F9AEEAB96F7F8B9FDA9DAF2D0B770F7DC166C85E64019 +C93CA67FCB8FB1BE048B64AA6385BFE2EEE133B886AD15713CA4ECCC179152E1 +B3B3E138C88CBB02603E35975FFB022CB03F23BE7208B439A3BDA34FA0EA1F24 +54B049CBF27826FC966F569FA31CCC86EF835CF24324FB80A9ADC1FCD37BA450 +EA44361A16E6DC1E249632D8B23E06267D9AB048A8E75BE05E7BD66A81D0B3EC +9200E9E47AFAAAFF3FF6E86128AB57AF6411791487A7E808BE1F245B9B96AD5E +3C9DF731E24D5CB30AC2C89B0AD3E256AE9BC5B2CE0385E1852556EA004B281D +D10082ABA1A5659065AF65D9AC4B3A89FC38D9E00CF56D7303A9A49DEC34ACF0 +D82A70E5D531DDD156E4A1BFAFEED96872F51BC820FE11B6A0DADE7C11DB6E09 +258B457E821A5E975463D9AF69A47DF33A783310110D3344303FC715FFD495F3 +715672B5146B4491E453F622152E79B7C89B0E2B6ADD3A86B7F6FD8B35F855D4 +097E0717D903ABDA7A45A80F3ED847C8BEB637C348F670C1C78421D321BD63F4 +BB3917E09F4940F62CDA612B9925DD4F3DE389214E2E6622A039B12C03E1CFA8 +6327F6B2E17F6874422629677DCD558CA803102FB527FE08C3AECC32C7341949 +C85BC49FCE9679549A4C512BF8131E89A6D723E935302CDE839D8ABBD40FB42B +CC76A5FB6DD96F3F9BBE556A384B9BC90D38C500F4BA577C3C230FCBD0EAF513 +F6A7365682358DCABAF97A9BE23F89665C5F6A73A7F7E46A3C4DD179AE564EDC +261BD255933AA52F0EC29DF0A6D9CFDB728981054C2EB522D3D83607B46771C5 +ED2E642BE240B15EB821F4E4D4B606670253A72E63479DBF4C5514CAB52B8C39 +0ADE9AD697112DF5805851350C45D65E40245DD70C079F17C746FFC46824CD4C +97ADEB4D7307570EFC44BF0BD89083497442F8830221A96B6B5711FD63BF7D49 +8DADCB82E3AA9A07D057B13B56B8F1E85375CAB473C52E4B28A8BDB7E8CFE5E2 +B4CCCB37DB473B89F217794733C377863580C8B40AAD4B0F885C95F4411DE634 +C63EF8213DED0B9BE65CF4BB8A2D28013B99B731800E95A9B2FD5C3F2B46439B +6214E3402FF055B0AF704ACDC6C89DC4BD82FBDE5A73821F23AD619A83C1E295 +427F85AE522B3A70277FBDCCE3280BF9262F8A4180EBD0A5979124260E04CBF2 +AD858DDA2FE7D88301250BE8DB25E59CE84B8CA16AD3B4194DCB72E81241A7A3 +DB9900DB3531971B5CE88AD94458726A803F2BAC4E19FB8E20966CC3F75AA8C0 +375265C3B0DA9A78531D4BB582ECDB5F5AD0B9D189E02FB9EA561137C95E8876 +6DD0C82BAA5830E5F24593577FC00BAF210FD4F58445118A7DB834DFD4BFE69C +3409F89FF32D7801775BF4E5C8A09066108455158AF639C66FA3EDF4CA0E5B73 +2EC160C60DF679A3799CF94793A3B7FEC8E85A2B39CCE51FB7668D99E9B7227F +4CA0A50F86B5B967B464FF0C8CB7ACDAEF3889720A6E7364ECDBD0C44C591B55 +AAE5C4C2F2C8169452CD64BD2BB65C137CA225DCBFD7A0D392624323D17FFCAE +1277CEACDB50B82C231B3B73BDB08C2FF328FD504977562F41901ACE1ACE41FA +72386C5D20BB643D9B7EC3B35E1F523DEA28987AB444FF130B2464867C9B4191 +9562EFC07BA27E74AD8A952BE8B36ED60A7386846C94004BB3EEA02B69FFEF9D +0A3CDA1EF50461DC3B041E5E358888B8EE620C5FD8D3B80DD48375A3FEA039E2 +24118677B2D3F66BE505D5B7C6105B283696E9BFEA31F59BB4EA6E1BF44D74B1 +6D829C31F9A6EF52490EE906D200574965DA01B88377BC9FEBC6D02B76C30250 +23E6E484CAF803DAD212F6763E6C3A7EC2D7A1E35D0C234E571D1EA7ED29B527 +647CCBBBBEA5DCF178038A588340AD803A571D70D2145A9A1A3F05CD03831C4F +7FC840EE7E43C875B66435133FD1AD2A651EC44A9DCA955EC77ADD91C9820B8A +F325E1B39C585B66A65AA174ECEC994AC71EBE522EABF8C76CE8E310C4C1A037 +E56530F68EF3A08A402FAADB4AC5018C897B0446664DF426A0F8F42E1AE16AA0 +10A1DA307932D9B3AF9DFAD44EF097FBBDBA2C44BC0A9F73E643D9E501067E05 +9CF71D670DA1903B36A2A3702511DD2DFF3FB30B9C74741BFE4F04896603B8CB +4D0F4564613DD8C3D5416A8569DA9A563E566FACE73069CABBF3503029E12736 +7422CACC3A8899D438DA21764155BE9D434CA8B18EF4517870CDDE8941DBE737 +1AD1BD6ED62D7247102FEE7D58F8E273655AC1A9A4A7259E22F58E2BC3174FED +BE8281CD054B619816187AFC0981B8434E8D1A62109AF7903F8FE5ED306582BB +32A439C2D8D9126B0EB143F02B970BBB2ABAE6984484F64DDF79789665C05A38 +A6D3AB22E6C2264174FF0A607804B1ADC7755768DE8BD9A0E9DB243CF85DB5E1 +BDEB37385FEF70EED662A7C72874D85E57BF596BE8028E6F35F1468E5C76E306 +38665BD39CB12DDBF2CC779E6295BFBC784F491B8C62524F0DAF245C5E6581C2 +10566939421E9E1EECAACC80C3D3654467926BD04A9657BF5D77F0FAE31B4201 +32BF29E244FD8B44C0008D4ACB695CB6B6569C4F0999D9D9A291133FFB096F90 +C7E5EFD91B9751C62596ABC6640B4F042FC83388DD096A0DA61C15F46FD36A71 +79DD95C436E85F861F4866453589329352A5A75B589391A3BEDED04B4AE32435 +8D6A5EAE4F67D7F6F4911316114469D79AD9E730ED40831105F19593F44D8599 +19F7396D59FD8D30796241B41B482A343F1DB4D07DA0F935E9903A47062F701D +5AF7A1357BB8AE3CEB3FDE02C48DC63C1301B6B65A5BBE5C03DFB9A948FF4723 +51657A479AD4DF66117DA9101C85AB27DFFD85903D72318F97D296E478AB6530 +42EBFA3046ACF7CF3A2147379A2FA451582A49D8B71432B277E7AB4BB0575335 +A33E3D5062B12274346D1DE15465327251A242CC2D8A77F3A525D606ECB3BA3C +B1286C8ABADDE0F436625B2A1747AC3DDA87492F61FC45C21EF1C3FC60D8DBA6 +DFFB5B9A45C50192973820FF63926AD7B7998180DD825F9D1B345DC39B58F56A +51CED5A69BE3191CD51BB4BD01F58E01D30133B4053BB151038FD90CF168090D +3900B42D7486F516FF46339955325265C0D5C45650E3BFB3B2D32782F149A5B0 +38152F13F32ECFC68D0A0D9957BB36FF6BF06420BC3359E351A3F437EB2C58BF +F85DCE93D853001ACDCEA6DE5514CF0776E64D6F1668A6D6359CF7FDDE2218F2 +CAA8FCD74E74C7DCF5919912428F7AB777F6A1BA00C9E6FCBCE1B2B2DCBA4CDE +D53443AE41B6F93674D4CC91DA0E40A6CF3AECC82D6E18D89612161B5BC0B415 +8856452080435A73B97CAA25DAFB9B50DDED4CA49BAD6376D46AB68A56D0ECE4 +5A53276251CD261B5EE00CAE37EA3E7C5BE9C6382399D4FB56D88F0BBF39A1DE +B7DE9464D4AB5543455048B50AC970C827AABB85931E0782ED578F5C8D2F1C10 +5B6314500C22370314EFBCE5B32880B8F96F5EDC538FC51490FF7E1CCAF72A19 +E3FB992B02287204B83148440911B20B33C48810C94555542661920DD1E48E8F +0B128BE3FC378296BC09F8CCF45128E25237DFA2588072812CD45F65E84D6BF3 +7824E95D07236F2B9E620C3E918A210DFA654B61218B4D73F8A977D4591216F6 +774CAA4157591807F8BC29369D014AB9BB552185AB477011AA707C0619C566BF +6F0F7BF8D87A989B4C405EADE2B166B2A0EA5A3D0961E38A0811CE3958BC6C47 +EA193492B3C988F63F6CAA8AAE39889623BA541C09EC420B3ED863126CFD9915 +9F7195C0122DC0388EC27B6B6B731DD236B1EB68363B580FF068E561E4987B2F +37A873DB5D0EFFB7D41C16E4DE5DE62366BD568943DE1A68599E887075C95C33 +3434AE78288B90B92F03A8080FAD87DAADEED67A16C7ED99A082D5436077E550 +8B118B18CB6C654A152BC342ADF90B4683EC1A5987F4FE6F773CA51585B83EE5 +A8C47C1E57551D0A827EF5E3242DB558B96CA0C0312782276B2BFA9988EF1B9B +7FF7F1A34594BEDE4BC27906061B299F4121A0DF6EF839A988B5006EDBD3673E +7BCF8D9506C61E749A0F4082007C2673B3A1F7D10F62DDD2F7547446D8D14467 +96CD210D42BED4AA33233B10B5A727C07ECDCD2D92162881EAECB37AB7665683 +BF024A46A686DCB2BCCD28CD3E4BE66706B9B7D287410CFC0E61802E8D9E3AFD +443AD79EC1AAC4A2AB1D1E96110C67F7FA95673440BA0F1184B76C0F29E03F9C +4D57C53F23892AAE7B017437DD3641E097CA75F991C16EBF16C1EF62DE5CE4AB +57F8B4CE5CEEB7E89DD0E1B1F079F3136EA8B4FDFF7FD2C43B2A1CB099B06535 +7615E919884475C3F5F150C23FC7F84A5E86C6A230906D429D725482145E8A36 +CD98B491AB15CFD994D480F411BC4119B291D6DF152B5E43464B9A9FFD81108E +EB15AC532B923DC8B16CD2C9016445144AC2F41C3583D19D3ED38B50D89D703D +2CA83714A4DF1468F73475D92E5D5876BF37D67E8AAFEFB2120016A46A408315 +F381B802A1DF551E2BE528D58172DE923C1F789EEB17A079850BFD0D95AC62B4 +070899976473876C3D96BAC49306D858EEE3EDD34DD2B99FEF0EC830A9007D62 +9B283F1103647472AABBA8AE7182D5C2DF390EF79B87CB789EEB6D5BA013273A +CC94B562DA88A2BB4BB9BD46017BBB8C1EB1608A6E76B01DEFC40734E35C84AC +95FF9B90D6D5DD28461C0399FF4C2A8DAC7F179D4815FA42C53DC7E39ED54953 +B9D3FDB68059981E4423277666056BE2FD8311F5B70C24787629B9F9466C783C +63CD96DE244B59F41917F8C53ADE5F1756B2547367FD76FC0E98B0C7801BDA5F +FA1D7AA550D5A72AAD535402482B38F8E8E5EE50643A95CBFC146E8B12ED1A08 +5F07461E03A45C1BDEEF9B010EBA7A9D68F745ACD93B33290683E4A1279047B4 +9806355D6683319DB86E4E1518FCF8F38F0DBC37DCE2C4788C665BD30940874C +075A9B52448CC474490BA9B93420D0285F68DA9EA4FB1E3FC04FB99A6EC8BED2 +08EB495911FBA7935E2A8769021BA56C62AA03C6DAFB6B6BF21FD140F1C468CF +60459A7E76A3FDD90A4FED60020B635A91A497F0D9AF1782CBFA923A75D0EACB +C7134FB2ABEAABE2B12492069253B7827EF821C631F8FFF152DB464C3B289857 +4F2ADFBA72DDACF1B23DD4EB3E437DA8C07DF42FD26E9286A985B468D4DD937F +3AB82CB0E7FD2C15C7A18E3D7CFE370D0EE4D2A0A575052D0D0EEAE44C2F14EA +DD1488641D9E03084E22871DDC46711E7DCEAE5A0EF5CC0B70AC0D8E9ED1223D +5E0F01A91D11BFC039629B99FC2D7E9D934CBED2E4549416481F538683A73A1B +6DC0EA2DFF64691F69BFC2AD6FE742B1E55CBF58B3A15AFDED5DFFC20A72A532 +FA0F6B6CDFCCEF72689B46CC595CB26F70DFB18158396DC485C5456C1758CC16 +89590E191514729A441A4C756C4C1E3F2C709D1CDE88594E0423791B3B2CD13B +5BA235C4D615ECCB46670764D6B64BE57D9DD6D8DAEC77B1C787961138208DEE +F8FFD35B3EB0ABFADB456BAACA834CC207B8259BE97A969E7F7ADDD62F056E62 +597029FE5FC5F2B8BBB48C838AD9182C556504CAC2C368D598E25680D3A00F51 +0EDBAFA60ADD08FE561AC14003B9CE8270855757AA6771A206A3F77E31B05420 +0C90A4B1C99E73486C1EAB2FF496755EAA51C70AE02E602FDF209344376DEF5A +916F3913B12D3A0A8E92EB749EA89DB6BE24463910F07AD61832B4FB5E93A68E +0B1BAF8FB029AC1C702456DED94114BA5BE42D1D789523BB3A52EAF236851C0B +853E4E03C588361BD2109024ABEF62BD5DB65601A4649648DE8B90C748732356 +A23AA02F1983A34A6975537706F5471357A42298576D7F6973C161BD4A7EFEEE +06213D5ED10444236C428B80350B46160DF9FEA41D04BF1177C9BA7D227890BD +0E371B30AFC5DD7DEE929EF07CA044A8E71F3EC11A7762DEA36D6D771C73F581 +928AEC8C3628F254075159496B33F38AD3D0959B08F66B25BE9AEB828B9DA08F +B4C7B87A609DB89A77BCED886BC3160593AC3C4461500B65B2F71CD533BF12B3 +9FB764ED9C19E5677790B51231801BC689C33A4557CC647D8A1880DEE5B4032B +D28ACB76B8FA6522B37BB6160CB0B23ECD79A7003BD83B27112E3A219ED9B99D +EE66CB39ADC84DA9CE87D81DCFF2480BBDD812E3E6C5232ED771247369EDF53A +C8E23D85F2F400DD864DBC1488AB3821273D63B8D416716A9F2A17B701503C4E +A753420C20FABB60D4980891998BD1470E21C11F0535191844C82CAB54E58C8C +C6237BD47833523A55CD9DD44AD6E6954DED4877E465AE6455882D3CF76B54D6 +1E5B00 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -2610,150 +4511,326 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont %%BeginFont: CMR12 -%!PS-AdobeFont-1.1: CMR12 1.0 -%%CreationDate: 1991 Aug 20 16:38:05 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +%!PS-AdobeFont-1.0: CMR12 003.002 +%%Title: CMR12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup +/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse 11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR12 def +/FontBBox {-34 -251 988 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR12.) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def end readonly def -/FontName /CMR12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put -dup 51 /three put -dup 54 /six put -dup 65 /A put +dup 52 /four put +dup 77 /M put dup 86 /V put +dup 97 /a put dup 101 /e put dup 105 /i put -dup 108 /l put dup 110 /n put dup 111 /o put -dup 112 /p put dup 114 /r put dup 115 /s put +dup 121 /y put readonly def -/FontBBox{-34 -251 988 750}readonly def currentdict end currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C -68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 -3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E -59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 -51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 -DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A -AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F -45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 -821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE -96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D -9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 -26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 -140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 -1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 -1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB -377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A -0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 -5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 -ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 -FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CEBE01C1B982 -4B1CF704E817814FF9C921A7DF86627623F382208EB0CCEC832D35D9B936CFA7 -3946FA2494DBC51325D4330866D33DD3E546B774EB8ACC089E62AFEE8955A55F -F2B6F74FD94C06C5C71F87938D5295A2ACF34830CD5242B56841A2B4137544A1 -32D98E64AD37F790574845703C739F5BDFB05BFA53B0F4389B0FCCFF03D25AE7 -09DDC79EAB0178EF14D67282335F3AB8B2AFACE2E06433376B2007DEE8B60624 -AE40AA85E30531E640E128CD5F89EBA045D173D10E50C8C0522099DA01F1B00C -542D6FBFA1D372D43C55305F01D70BEC886B96806AC7BA30B76FA28E75717FC8 -AB91CB77949111B50B8566C1C0242A6F73E444877F0A39CC1EA349594E7540FF -AD34A14D43FC327A1517B6B034B322B09347BA663558256046DC0D66DE0099EA -1B33A960B7A3C37FEE174795CA3C975F9D16DD114308ADD38F203B7DE2E8A220 -885A7E036E768FBB3B599E5A76C8E7CE0B75820B269EEE63EEC8156098D183A8 -A6D20104A15BE6558EFD1C9C4F5D230827E102D33E5D96C9522AD0D46B430943 -3B64D20F701A7B064FEA4EA6E28DE141C2BEF2FC6C9F3237694002B9B18789C6 -D157AD81136E8E951CBD0366A5206F05F4A68C7C1017E49F254ED437707E87B6 -6AAD86C83DBC17FBC5FCF9E51DE92CEAE5C6818967AC83A26B3AE2E54AE34218 -0D5C577A0F56115705ADADCE83D89735A71D69E8CAF93A20A22616047C498A1A -0092BC92641DF088AC0C591572F8D719394C19585CD1F03DF4D35F627AFBC502 -A2C36CB17EB20E23835F6E0CB42B1C18532DFFBF0840666FED39C99BDE7DC317 -974DC1D34097CC7B71ACDBCDED56E7EB088B4E7D2AAF4F761745DEE6D371852D -4F51756C97363F7D9AE57D19341CF566C531110F8F04197B207A4BCADA5199D4 -CB86798A5059690E4F1C18A9ADBF9BD3E54AC6BC7B0908DBE211F4E7964CD594 -1C3AD1AA5536E4BF9A0586DDC944D99238E2A3ED0F178F49B1A45BCEB385BC68 -98AEE8041EDF3243ECE88920C04B609A7373E661B0E5ACDB0FD366CC417615B8 -6C35D5FEED5EB88FE43D4688A7ECAB9D1FF5A44DFB75FE133A5C243E2B9F7F77 -B33F05A19C616A5ED4634EEAC2B9E6F9A344ADF85759070E7083FA255EC10296 -E3DEBEC97364554F8CDF3BE4E5E2EEE9E4E45FB96E677F01FA938D0CDA3F5471 -AE69BCF62A767784279F56790C0789646DF52978F125488EDCD6B73EDBB489AF -F811E568EDD1F7CD8B5BF7EBC228245BF2C62A06EB195D8741C76F5DCFE74F80 -FED9A7B976104C0CA2536A4412B89AF59686278B858584AAF32B674E90412EE2 -1C8D0463194B58C61671161578E69FC7CC0FCC62B280055D4FC3043304E9E2CD -5F3318799C0EA5F28EED6D3504E96DFAFAFC4F543F230712C706DE7C45CC9787 -A069D4DF2A2C2FBD6EAA437DF7516A3E4FD3DA89419CC9BCCD2A73AD0FA50294 -CDE5E44A9165E301B5F704365678E92FBDC4510A5DB07FD9AE33D4C84C9FE155 -E37BD11BE772DC9251386845B7BEC43C24C189FFF8BDB7273F62220AE14B1A60 -0AFE4E34818E562F410E77821E76B484F1115BD553DCB16AA903852003EF08F2 -E0F957413F700296B101646D527B5B310F1B91D0BD9E89E6A775A580201E80B8 -7CF3C74957B2A3D1570A2A4916B8A0975F0A81716DBC3951ED697869EBC156E3 -F0A23EEBD4FC396012828EFF16B54612A009DD4995F130D37BE4807F8B245CE2 -BB5A38299450E19188E0C466A7797AB2C212116ACFAEAB012AB7107AA6A2FA37 -728C28CC379BFF030365AC36905415B2DBD212248390F79B7191F2F1DA344F0E -9619C0FA65A2F476272B03C5B796D926B1790F641EB6ADD5D4442C7CA34FD39F -0F07EF7837C5C9E4DBF477CED9AADBFDED496AFF3F1C45F23D7158A56CAF97EF -92C1C497C5A01F715F7E78E0254121B30DC4524D6D5F973A4B57FBF5DB7AEBE6 -9E8434BBFF5AF266ACD0AF8BBD187FCA81C2281F0C91A034F65F1D817C719C5B -0AE0A10EDB2710CC595B4573B65B1B8E98D763439902375896EE49506856F5E2 -51038BBE4FA692FE726887E9A5E065BCB4DA264DF7CD16D67B7ED0996CC4396C -B24053DCAD500585E333CA028CAE126BFB0377D0E8366EA01F735371E3EF5190 -50F0C3BDB1D32BE74968588ECE292B2F5012586265E55AAEBECD3951AE2C9C5F -3D64EAD776C7A4DEF14290037DF2ADE3A2810143A58AB50F5AB48232FF2B1A98 -982CFCFE7A9A52A774E0D9A624BAEEFEE43CF556BAB6ADFBCA7BCDD3F05778BD -F0FBD6EDB44CE80341CFE098F908A099EE3010C7BAF55C5582B053EB0CF5C34E -991FA08EBA1FC5D3B893F8545CC37AABC686FECA16646D81EA85D25F2AA8EA77 -5E8B2FBFF81D86B7C64925E42F9FF75655AA2DC7B5BEECF8BEC424A4C236A415 -6127438B84B02A8BF4D492512634F3AD4992201D7D6C6AE703A7809A77E7767A -3511588FB5B93013A1FCD2B0380C2321B19EE90EDA17B12A0D790E5DAE925B3A -4E026D2B52866C779C83EF5F31F4F54D7A289480C2FAE03138709E503ED81204 -D6287D1711497562A0E28416E75D65D3425560F1CB61104F2A733F15AA0BEF31 -D7308DD1846D6B9B5921D36F994344441189785075F9FF2EE79207AA0E82B5AD -609C387B86EB0ABACD9CEA427B981C30006ECE05BAADF7592F74DED5907FE422 -7D316876A7DEEA4B4053702EFDA2F861490C7034E7A929F0492535503C0837EE -BC80417EAC6704D64B693819FCC0BBBEC2B9BCBD2F5FD6B5FEC468E13BF720CE -EB0BA928A7A92CD4705CA1BF67B3B395148E434029714A75CAF4AED10E45D5DC -163EBCB40CF5C9066CC946B6310B505F8FE89D7F610C9EA4E542BDCC188353CE -90D7BB66398EB5B153AA09A62ECBAD0C8B40BCC4E30280E57B47418FA66A2347 -0CAACE2201AB788595D5B74EFE9BADF5679C6A97E7E714DA8D1E7C50271E072C -AE75962CA72981F6ED551C2C9D322C007234D5DBB570E3C1EBE06DDA2E011B20 -55DD67C1D3E9B3E7AC47C1D15DFE921E8F1FBB6843BBF37D669E637D201B84F0 -9D49E981C6F1A803C1B40FE4DB82C3A53D138795B3816D4B07DE20621D5A644A -57E86C30E7A8096880A02E4723AA31EDB8DB7E95E373F96CE6E41EEC9EF06020 -E11CB902AD80E02892F6733FC715C0957238158AAB70D6FAEF073D0259DC24FD -4B3DC7F0DE52D04B1F479806E7714B73EB1D225E1A83B9BC4177EB0C672BFBFA -CF4CD8EE1C5D8639434D7951537923AB79CB195181019DB1935B705EF6DD9A3D -3F15F7E634554208F4E8E7D775BB4A6E1E0EC05DF40B444B3B8D00A528E80B09 -ED50BCB1407B90D5CB7C3FE49C4420B51FA0DF45436FF5071FDE0E17F14C650A -0785E6CBFF8E6C6A79BB002AED449A16BE91458BF2DFAE96D887DBE264B45C86 -89DD114648E6626197C1D181F63141634346FBC14CF4BB310FBCED5657CDBD54 -D86C098E7A52D9D8A829BF4C700992862434F2FAEFBD7104CE221E8D985A2AA0 -B659BE12D8CFD0BFC998A2CF7409A90690A65D20E3C909B2073D336CAEAD +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651 +F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224 +FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B +8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0 +B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A +966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E +CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4 +2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E +56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295 +EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277 +E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973 +5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F +847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000 +72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6 +3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2 +57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB +B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7 +547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88 +F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535 +47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444 +24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7 +64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204 +49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7 +FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD +F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A +DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97 +CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1 +7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5 +459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918 +1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1 +6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846 +67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5 +71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED +C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345 +2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E +3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF +CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801 +F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8 +16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542 +29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327 +0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02 +A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E +DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346 +39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254 +28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56 +FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9 +D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8 +116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F +59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74 +482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45 +4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A +323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17 +C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB +5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179 +46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1 +E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C +C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3 +4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C +BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32 +5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735 +9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117 +52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B +E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2 +655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC +F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42 +FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442 +87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107 +5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6 +6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366 +B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03 +3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A +A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34 +343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046 +BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D +775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5 +8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0 +7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5 +E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584 +397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65 +7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689 +37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257 +2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E +37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817 +DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F +89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08 +90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1 +EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7 +FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C +5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B +8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665 +54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6 +4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8 +86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B +08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E +D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B +B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54 +6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC +3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1 +DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C +A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98 +DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E +748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A +C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879 +0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA +1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D +6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422 +E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6 +F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76 +FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016 +E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D +903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B +6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21 +2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66 +139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4 +0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9 +E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1 +2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6 +585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8 +D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E +51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E +B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3 +A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E +512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5 +F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D +E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5 +1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB +F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407 +1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF +BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55 +BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578 +43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E +AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A +2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51 +D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65 +8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991 +9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8 +BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925 +969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A +3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A +845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31 +E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D +6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407 +E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93 +3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733 +52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6 +F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F +95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149 +AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8 +39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4 +8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3 +957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07 +55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F +53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C +D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106 +CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E +CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46 +BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1 +B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5 +218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521 +3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86 +31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9 +7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 +196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 +1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 +ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 +82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 +E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D +F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A +BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753 +A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA +34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 +F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC +AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 +DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 +073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 +EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E +8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A012A3B5F1 +9E59B54BABF9A72CF35A27CEF3AF07C2E4D6BF254DED2524F3068203896C931C +06398C1C3C2881CA864CFC4D243E945BFD8ACB9AD3AB8669A6912158FA150864 +D96E34BDCE3142610E8A2BDD2A7DF6A26B718471AEF042F641D019829AFE8637 +F8720D2DCC7342E0038D9B43B89953898AEBED5F09DEA465659EBCB83844DAAA +83C627DA47D46ED564CB5AF76309E2FD9E17724A0A893EA0A4329E978212DF25 +C0E27E49B63FFEE33D72E04BFCFD84E8A39BFA23D8E7AF6987C87EE06686EA04 +14FEE15429BAA6D979F242F4C431EEA7F8DE5A56B3CF11D1507DF22F7B2B4341 +D7E72BE1CA8BEB4711ABA2BD032463EC1109E10E12D62D1FFE94314167F2F663 +8EBDDED0DC98788D46CC1FCB379561F082534B0B8EBE982DC8F877C780200134 +0AB2E4816398A7E7869A7ACA2A3E0F0D3FD2D74C78019E07041CF26ABFA9FD56 +B52E6DE855ABA55DF840A94E884DB9361079D2957940FFAF910BCD62E44FB267 +403FA9966E92B9446993D0622F0E9FCBF20CB36564FC24EDEEB56045B2BAA3BE +27411C0744ADFD362CA07CED081C4BC5D750A8ADA52F42E6F5991BC1C867E8D8 +140192409FB30E42747EC9908640FF3E4072F115224E42246E38E3B3ADFD5906 +C11A97DA975A982217577A8A29383C385CF19EBB831B28C78318584971803150 +90C076770219EA454B74D77EE5178EBE34F1F4D73B9B38355046A6B61F84CB87 +FF76AADFCD4E00012D1F330207B273CE9FDE4FEED7A94AF93B4D5944EEFAC63D +50EA75662E70901643B0AEE95734D44F132AAD9288C2FDF7D31A4AEAFA7F185A +A7CAA302A876A7A344BA0CA73ACD3624A2F19153BF599515D9339A7A2AB7DA06 +755F12AF264E36CC35242255793CA870CF20E1DF581D4C63C942F777680FEDCB +AA97E4AB5A0B1BC1709D4E5EFC0B991DF4C6EFCE75E57F40FD14E076EE910845 +6FAF90139B5886CF89CC51F1EB3AD5A1FE45117AB027A029A5D7B0789E9AC717 +12713E362E4FC7B351715795D0D1EC3E58F0AEB668EA104D4E9A9BFFDFEC6F83 +5904B2641A46C05C09A4B8078327124D416871004102567FF24A760712A2802B +18DA4F90EF79A8DF37BDBBEABB99589181FD94F208B6D1E027E1D859C939895D +9B1482701746641DA7CE0F2E8275550BD99C4FC3E89B13F9053866B23F051317 +D511D5FFEEEDC1FF5C2E4F405080D4A72DB4B916E1F82C5B159CBDDB281C6621 +C19CFAFBF915D36959279BCADC3E8FB841596916721F532E002AE01000FD9B76 +EF05A623D67122002833528567A4B8025ED36BFEC9F05521FB05105A08FEC4CA +390BA9BD9CBC1F322A39791A8251C0E099EF81FB37049E5F1D2A907FD1B90021 +63E1FDECF419259312ABDED108874DDFCC2DD04E245B126F4DD331EE85621482 +7F00BEC6EE9FE998574433785411EED88058774EFD3EE3C7019DF36AECFED8BD +382937DDE61DE07E0738C7B9D93B4D744F49F275FC522421C7080AFDBF4AE295 +306D95EB94DE43830BC954EF68F20FF3A86027D90567B959681212F767248C16 +092906EF34A9AB3B4C249D989B2DA9D800FBC31A66FA57B2ABF18C3644593B83 +C83C8843AA7A7E5E7D33AF44E000F968C8E444AD667F9B6BDBB3217DE6B458A4 +86A0C850B3BAA4246B079F48D196EDA70AE9E80EF6EC4761B832AD492892BDD0 +198B16BB669A912EFC7DAEA2FC07C7BBED9166F6373B01429B87F3CF75476FB2 +D6D06DA7AA43BC479DDCEAC9DEDE9EC07F1B658FF45D175232D6E1ADAF85607B +12247BF3D7FF0CC5687FE41FBA69B33FA2C3DC6D4CACE03495AFE5CD8C64171A +E08D265335C78A5A6D1B3FE4FF6211B891A466E2DB0907ACBBCACD849501F8BC +3012053AF949408EA7AB215BF2A9BB61CB5A25D031C907A801037DD3C92C73D1 +36F7D9F0188E6FA4ABC8E2135F5ED9ED4BD5E0BF3E69807466EA432BF5135CE6 +9072086AF28A0A3786A0C3FB15729B89BD4FC909BFE0FE3D7E5C249E18077619 +C610AD8411C3B7C72F41427C17FBFBB2F6D53F0A7FCFFCCEACFF4484491532EC +A79ABC99BABBFEA1A3B913D57EA587964A2DCEFC211D37D878A477A741E78E56 +5D6AE91FB9CFF208058532CC4FBD913D5443703D949FF8B56CFE30BB6B8DA625 +AA1E671F53910E49DC07CB0FD91D4BD837466F63A9B0A333FBAD7FFBA509AB56 +DCFCC1E4C09B32ED92AEBF495825B9606857578F90510FE405FF8F85608075AB +B1655C94CA77FB7D927E36A2E4A653F0AAB74D6B84F00EE106D76A9F8BB176D3 +BEFE1CAA286E7A6EF54DE90BEC70C25DAB861DF635D4E9A1D624E373254BB878 +1265844FB1097D9030F5FB823B0BB6ED6CD6557D3B5F3C401DAAAECAF4A5EFEE +C7B9FF18030DD84A2BB01FF4A5D5A6C802C6B5D1AE7D81AB00196D07C8300838 +BA0C61E6BBD12D3FF46F347D807CCC95C5219AF20C29A8902AA0CB0D62D2685D +D76A3B0F6BB380831CFE0F54D1ADA7D2C7E6FA77291EBC40F8605E567DDA66C3 +DB9BF72F866C0E42415E33C27E7492FF591A825B36EDF39170D5C8203F058AAD +EBB6A8AE4DF986886CF0B7B081A52BB5F0A806CEB047ABFC4BF5EF690393E47B +5AE28C80F55420CE2BE61FDFBAD52E4873CBD14AAD1C52A7D1AD03C608820BE1 +4D8430AD84608DAE7635B5DEF0EF984E9738729C8A0C6807321C8FE2C7E4A4BB +22988E8E16DAA66BC5B54DD892FBA6CB7D4473614A96BB01412D5323388FCF92 +ADA5E2F136C02E5FC6659D37A070FA114CE0BE4D3D8B750B2124D6BB61BB92F4 +442E45600892C440148720570FD38031486D072CC3570A6CD091A30F1E43E5F8 +F980182BC9FED70CC47BC95FCA1BDD7B1C47CE29F7EAD6B08EA1D4350B0B41B5 +10ABAFAE6D196AF0F7807A88801B1027859473D8144F80461AFD3FAB87B46F10 +547B4135C7935BFFC811F55260BA095A9AA4E03F3BB8A5F11C271C26861658E7 +2E3F396A05F26D432299F879232E3F87D3982B37431E254CFD0E0501A5D15605 +7D084221B34A14EB93E01D739F83DD800586724B4DA51C701241C8906D9757C4 +D4FA8E13A9562F19ADBD36245B99584A48E0FACEF63B28E0C09BB5283D12C056 +8658B34CA6003A302C6174DF72B2D1FB8F6259C6160B821110FB882B0B02187B +A9F813C3A30F7B1E2EABCB4DAFEF04D60F0F4FDF3EF44AE9A914887E48C1CEBC +9CC1F0A416A99FA6A76F2FEA4A82D2E29D5DA23B44A9ABD8637866F72692920B +8E5924E0659B06D0A30F103F50122D54926D417567B2D94549A80ED356AEB6E0 +56B921924035B89DD4238AD0583CDD19D1FAE4E73100CE7D34F47182449093EC +62518B8AA81CB71F9213A3836D971737744546073DC21BC6CAF27B6D2C74463D +F95DCEA44DA8DC35B98469B528E236B31505DAC66174AAE6BD69758E41690A66 +1D3EAAB0160E79F2A130DF95037DAB1790FD48424787A3A6D306666A1D375C76 +CAC2F2203875798D1C7740199ACA888A6327D4DADCC2925594CAC1A8CBCD24E8 +936366C4FC10DE6BA938E47F00499A1EBB2FAB93F525C49DF1D844EE79FEB5EE +BA77C82E4031FA8077AE60214B79470D2EDF7C4C283FACBB634BF4ADC74A2C23 +8858561607D70858D384E544917480816E4BA7E442AB8C80CB0D5A5AE0C384DB +CFF4FAF504F3A6EE72F75F0AD14BEA716C41BDC36A7B8213E98A57D120D5CD3E +1009BC546EFFF690D73E026E7F32FDD60ABD6DC5057B11 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -2763,71 +4840,78 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark +{restore}if %%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (fitsio.dvi) -@start /Fa 193[71 62[{}1 90.9091 /CMMI10 rf /Fb 133[50 -59 59 81 59 62 44 44 46 1[62 56 62 93 31 59 1[31 62 56 -34 51 62 50 62 54 9[116 85 86 78 62 84 1[77 84 88 106 -67 88 1[42 88 88 70 74 86 81 80 85 6[31 1[56 56 56 56 -56 56 56 56 1[56 31 37 32[62 12[{}58 99.6264 /CMBX12 -rf /Fc 149[25 2[45 45 86[45 15[{}4 90.9091 /CMSY10 rf -/Fd 133[60 71 71 97 71 75 52 53 55 1[75 67 75 112 37 -71 1[37 75 67 41 61 75 60 75 65 9[139 102 103 94 75 100 -1[92 101 105 128 81 105 1[50 105 106 85 88 103 97 96 -102 6[37 67 67 67 67 67 67 67 67 67 67 67 37 45 3[52 -52 27[75 78 11[{}63 119.552 /CMBX12 rf /Fe 129[48 48 +TeXDict begin 39158280 55380996 1000 600 600 (fitsio.dvi) +@start /Fa 215[27 40[{}1 66.4176 /CMR8 rf /Fb 134[45 +52 65 1[52 33 43 41 1[46 44 55 80 27 47 1[31 52 43 45 +42 47 39 39 48 12[53 10[40 10[71 2[25 25 58[{}27 90.9091 +/CMMI10 rf /Fc 133[50 59 59 81 59 62 44 44 46 1[62 56 +62 93 31 59 1[31 62 56 34 51 62 50 62 54 9[116 85 86 +78 62 84 1[77 84 88 106 67 88 1[42 88 88 70 74 86 81 +80 85 6[31 1[56 56 56 56 56 56 56 56 1[56 31 37 32[62 +12[{}58 99.6264 /CMBX12 rf /Fd 149[25 2[45 45 86[45 15[{}4 +90.9091 /CMSY10 rf /Fe 133[60 71 71 97 71 75 52 53 55 +1[75 67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 9[139 +102 103 94 75 100 1[92 101 105 128 81 105 1[50 105 106 +85 88 103 97 96 102 6[37 67 67 67 67 67 67 67 67 67 67 +67 37 45 3[52 52 27[75 78 11[{}63 119.552 /CMBX12 rf +/Ff 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 33[{}93 90.9091 /CMTT10 rf /Ff 139[75 1[79 1[108 -7[108 2[88 3[94 29[140 9[97 97 97 97 97 97 97 97 97 97 -48[{}17 172.188 /CMBX12 rf /Fg 165[56 68 68 93 68 68 -66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 62 69 66 64 -68 6[25 45 45 45 45 45 45 45 45 45 45 45 25 30 45[{}38 -90.9091 /CMSL10 rf /Fh 134[55 55 1[55 58 41 41 43 1[58 -52 58 87 29 2[29 58 52 32 48 58 46 58 51 11[80 73 58 -78 1[71 79 82 4[40 1[82 66 69 80 76 74 79 7[52 52 52 -52 52 52 52 52 52 52 52 1[35 32[58 12[{}49 90.9091 /CMBX10 -rf /Fi 132[45 40 48 48 66 48 51 35 36 36 48 51 45 51 -76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 -56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 -68 71 59 62 69 66 64 68 71 43 43 71 25 25 25 45 45 45 -45 45 45 45 45 45 45 45 25 30 25 71 45 35 35 25 71 76 -45 76 45 25 18[76 51 51 53 11[{}93 90.9091 /CMR10 rf -/Fj 140[46 46 1[65 59 65 1[33 2[33 3[52 14[88 20[88 10[59 -2[59 59 59 59 1[33 46[{}16 119.552 /CMR12 rf /Fk 138[90 -63 64 66 2[81 90 134 45 2[45 1[81 49 74 1[72 90 78 12[112 -90 2[110 6[60 2[101 4[122 65[{}21 143.462 /CMBX12 rf -/Fl 134[123 123 1[123 129 90 92 95 1[129 116 129 194 -65 2[65 129 116 71 106 129 103 129 113 11[179 162 129 -173 1[159 175 182 4[87 1[183 146 153 178 168 165 175 -17[116 1[77 5[65 26[129 12[{}40 206.559 /CMBX12 rf end +48 48 48 48 48 48 48 33[{}93 90.9091 /CMTT10 rf /Fg 139[75 +1[79 1[108 7[108 2[88 3[94 29[140 9[97 97 97 97 97 97 +97 97 97 97 48[{}17 172.188 /CMBX12 rf /Fh 165[56 68 +68 93 68 68 66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 +62 69 66 64 68 6[25 45 45 45 45 45 45 45 45 45 45 45 +25 30 45[{}38 90.9091 /CMSL10 rf /Fi 134[55 55 1[55 58 +41 41 43 1[58 52 58 87 29 2[29 58 52 32 48 58 46 58 51 +11[80 73 58 78 1[71 79 82 4[40 1[82 66 69 80 76 74 79 +7[52 52 52 52 52 52 52 52 52 52 52 1[35 32[58 12[{}49 +90.9091 /CMBX10 rf /Fj 132[45 40 48 48 66 48 51 35 36 +36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 +25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 +83 57 71 47 33 68 71 59 62 69 66 64 68 71 43 43 71 25 +25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 71 45 +35 35 25 71 76 45 76 45 25 18[76 51 51 53 11[{}93 90.9091 +/CMR10 rf /Fk 134[62 5[46 46 2[59 65 4[33 3[52 3[59 10[88 +8[107 24[59 1[59 59 59 1[33 46[{}15 119.552 /CMR12 rf +/Fl 138[90 63 64 66 2[81 90 134 45 2[45 1[81 49 74 1[72 +90 78 12[112 90 2[110 6[60 2[101 4[122 65[{}21 143.462 +/CMBX12 rf /Fm 134[123 123 1[123 129 90 92 95 1[129 116 +129 194 65 2[65 129 116 71 106 129 103 129 113 11[179 +162 129 173 1[159 175 182 4[87 1[183 146 153 178 168 +165 175 17[116 1[77 5[65 26[129 12[{}40 206.559 /CMBX12 +rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin -%%BeginPaperSize: Letter -letter +%%BeginPaperSize: a4 +/setpagedevice where +{ pop << /PageSize [595 842] >> setpagedevice } +{ /a4 where { pop a4 } if } +ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 -TeXDict begin 1 0 bop 861 1940 a Fl(FITSIO)76 b(User's)g(Guide)356 -2399 y Fk(A)54 b(Subroutine)d(In)l(terface)i(to)g(FITS)h(F)-13 +TeXDict begin 1 0 bop 861 1940 a Fm(FITSIO)76 b(User's)g(Guide)356 +2399 y Fl(A)54 b(Subroutine)d(In)l(terface)i(to)g(FITS)h(F)-13 b(ormat)54 b(Files)1055 2659 y(for)g(F)-13 b(ortran)53 -b(Programmers)1667 3155 y Fj(V)-10 b(ersion)38 b(3.0)1727 -4058 y Fi(HEASAR)m(C)1764 4170 y(Co)s(de)30 b(662)1363 +b(Programmers)1667 3155 y Fk(V)-10 b(ersion)38 b(4.0)1727 +4058 y Fj(HEASAR)m(C)1764 4170 y(Co)s(de)30 b(662)1363 4283 y(Go)s(ddard)f(Space)i(Fligh)m(t)h(Cen)m(ter)1522 -4396 y(Green)m(b)s(elt,)f(MD)h(20771)1857 4509 y(USA)1682 -5298 y Fj(April)37 b(2016)p eop end +4396 y(Green)m(b)s(elt,)f(MD)h(20771)1857 4509 y(USA)1701 +5309 y Fk(Ma)m(y)39 b(2021)p eop end %%Page: 2 2 -TeXDict begin 2 1 bop 0 299 a Fi(ii)p eop end +TeXDict begin 2 1 bop 0 299 a Fj(ii)p eop end %%Page: 3 3 -TeXDict begin 3 2 bop 0 1267 a Fl(Con)-6 b(ten)g(ts)0 -1858 y Fh(1)84 b(In)m(tro)s(duction)3136 b(1)0 2118 y(2)119 -b(Creating)34 b(FITSIO/CFITSIO)2405 b(3)136 2280 y Fi(2.1)94 +TeXDict begin 3 2 bop 0 1267 a Fm(Con)-6 b(ten)g(ts)0 +1858 y Fi(1)84 b(In)m(tro)s(duction)3136 b(1)0 2118 y(2)119 +b(Creating)34 b(FITSIO/CFITSIO)2405 b(3)136 2280 y Fj(2.1)94 b(Building)31 b(the)f(Library)58 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(3)136 2442 @@ -2850,9 +4934,9 @@ b(Ac)m(kno)m(wledgmen)m(ts)30 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 -3511 y Fh(3)119 b(A)35 b(FITS)f(Primer)2918 b(13)0 3771 +3511 y Fi(3)119 b(A)35 b(FITS)f(Primer)2918 b(13)0 3771 y(4)84 b(FITSIO)34 b(Con)m(v)m(en)m(tions)h(and)g(Guidelines)1993 -b(15)136 3933 y Fi(4.1)94 b(CFITSIO)29 b(Size)i(Limitations)42 +b(15)136 3933 y Fj(4.1)94 b(CFITSIO)29 b(Size)i(Limitations)42 b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(15)136 4095 y(4.2)94 b(Multiple)32 b(Access)f(to)g(the)g(Same)f(FITS) @@ -2891,8 +4975,8 @@ (.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)1912 5942 y(iii)p eop end %%Page: 4 4 -TeXDict begin 4 3 bop 0 299 a Fi(iv)3311 b Fg(CONTENTS)345 -555 y Fi(4.12.1)61 b(Supp)s(ort)29 b(for)h(Long)g(String)g(Keyw)m(ord)g +TeXDict begin 4 3 bop 0 299 a Fj(iv)3311 b Fh(CONTENTS)345 +555 y Fj(4.12.1)61 b(Supp)s(ort)29 b(for)h(Long)g(String)g(Keyw)m(ord)g (V)-8 b(alues.)62 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)345 716 y(4.12.2)61 b(Arra)m(ys)31 b(of)f(Fixed-Length)h(Strings)f(in)g(Binary)h(T)-8 @@ -2911,8 +4995,8 @@ y(4.13.2)61 b(Optimization)32 b(Strategies)69 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)0 -1771 y Fh(5)119 b(Basic)36 b(In)m(terface)e(Routines)2504 -b(29)136 1931 y Fi(5.1)94 b(FITSIO)30 b(Error)f(Status)h(Routines)84 +1771 y Fi(5)119 b(Basic)36 b(In)m(terface)e(Routines)2504 +b(29)136 1931 y Fj(5.1)94 b(FITSIO)30 b(Error)f(Status)h(Routines)84 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(29)136 2092 y(5.2)94 b(File)32 b(I/O)e(Routines)e(.)46 @@ -2924,8 +5008,8 @@ (.)85 b(32)136 2412 y(5.4)94 b(Data)32 b(I/O)f(Routines)53 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)85 b(33)0 2665 y Fh(6)119 b(Adv)-6 b(anced)36 -b(In)m(terface)e(Subroutines)2159 b(35)136 2826 y Fi(6.1)94 +(.)g(.)f(.)85 b(33)0 2665 y Fi(6)119 b(Adv)-6 b(anced)36 +b(In)m(terface)e(Subroutines)2159 b(35)136 2826 y Fj(6.1)94 b(FITS)30 b(File)i(Op)s(en)d(and)g(Close)i(Subroutines:)76 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(35)136 2986 y(6.2)94 @@ -2982,7 +5066,7 @@ b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)f(.)85 b(60)p eop end %%Page: 5 5 -TeXDict begin 5 4 bop 0 299 a Fg(CONTENTS)3334 b Fi(v)136 +TeXDict begin 5 4 bop 0 299 a Fh(CONTENTS)3334 b Fj(v)136 555 y(6.8)94 b(Ro)m(w)31 b(Selection)h(and)e(Calculator)i(Routines)95 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(64)136 717 y(6.9)94 @@ -2998,9 +5082,9 @@ 1204 y(6.12)49 b(General)32 b(Utilit)m(y)g(Subroutines)61 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 -b(69)0 1464 y Fh(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 +b(69)0 1464 y Fi(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 b(unction)2154 b(77)0 1725 y(8)119 b(Extended)35 b(File)f(Name)h(Syn)m -(tax)2330 b(79)136 1887 y Fi(8.1)94 b(Ov)m(erview)84 +(tax)2330 b(79)136 1887 y Fj(8.1)94 b(Ov)m(erview)84 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(79)136 2049 y(8.2)94 @@ -3048,58 +5132,57 @@ g(.)f(.)h(.)g(.)f(.)85 b(94)136 4318 y(8.11)49 b(Ro)m(w)31 b(Filtering)h(Sp)s(eci\014cation)82 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(96)345 4481 y(8.11.1)61 +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(97)345 4481 y(8.11.1)61 b(General)32 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(97)345 4643 y(8.11.2)61 b(Bit)32 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(99)345 4805 y(8.11.3)61 +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(100)345 4805 y(8.11.3)61 b(V)-8 b(ector)32 b(Columns)92 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(100)345 4967 y(8.11.4)61 -b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 b(Filtering)62 -b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(102)345 -5129 y(8.11.5)61 b(Spatial)31 b(Region)h(Filtering)59 -b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(103)345 5291 y(8.11.6)61 b(Example)31 b(Ro)m(w)g(Filters)h(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(105)136 5453 y(8.12)80 b(Binning)30 b(or)g(Histogramming)i(Sp)s +f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(101)345 4967 y(8.11.4)61 +b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 b(Filtering)h(and)d +(Calculation)37 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)40 b(103)345 5129 y(8.11.5)61 b(Spatial)31 +b(Region)h(Filtering)59 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)40 b(104)345 5291 y(8.11.6)61 b(Example)31 b(Ro)m(w)g(Filters)h +(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(107)136 5453 y(8.12)80 b(Binning)30 b(or)g(Histogramming)i(Sp)s (eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(106)0 -5714 y Fh(9)84 b(T)-9 b(emplate)35 b(Files)2933 b(109)p +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(108)0 +5714 y Fi(9)84 b(T)-9 b(emplate)35 b(Files)2933 b(111)p eop end %%Page: 6 6 -TeXDict begin 6 5 bop 0 299 a Fi(vi)3311 b Fg(CONTENTS)136 -555 y Fi(9.1)94 b(Detailed)33 b(T)-8 b(emplate)31 b(Line)g(F)-8 +TeXDict begin 6 5 bop 0 299 a Fj(vi)3311 b Fh(CONTENTS)136 +555 y Fj(9.1)94 b(Detailed)33 b(T)-8 b(emplate)31 b(Line)g(F)-8 b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(109)136 715 y(9.2)94 b(Auto-indexing)31 b(of)g(Keyw)m(ords)73 +b(111)136 715 y(9.2)94 b(Auto-indexing)31 b(of)g(Keyw)m(ords)73 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(110)136 876 y(9.3)94 b(T)-8 b(emplate)32 b(P)m(arser)f(Directiv)m(es) +b(112)136 876 y(9.3)94 b(T)-8 b(emplate)32 b(P)m(arser)f(Directiv)m(es) 87 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 -b(111)136 1036 y(9.4)94 b(F)-8 b(ormal)32 b(T)-8 b(emplate)32 +b(113)136 1036 y(9.4)94 b(F)-8 b(ormal)32 b(T)-8 b(emplate)32 b(Syn)m(tax)i(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h -(.)g(.)f(.)40 b(112)136 1196 y(9.5)94 b(Errors)63 b(.)46 +(.)g(.)f(.)40 b(114)136 1196 y(9.5)94 b(Errors)63 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(112)136 1356 y(9.6)94 +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(114)136 1356 y(9.6)94 b(Examples)72 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(112)0 -1607 y Fh(10)67 b(Summary)36 b(of)f(all)f(FITSIO)g(User-In)m(terface)h -(Subroutines)1215 b(115)0 1858 y(11)67 b(P)m(arameter)35 -b(De\014nitions)2563 b(123)0 2109 y(12)67 b(FITSIO)33 -b(Error)i(Status)g(Co)s(des)2295 b(129)p eop end +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(114)0 +1607 y Fi(10)67 b(Summary)36 b(of)f(all)f(FITSIO)g(User-In)m(terface)h +(Subroutines)1215 b(117)0 1858 y(11)67 b(P)m(arameter)35 +b(De\014nitions)2563 b(125)0 2109 y(12)67 b(FITSIO)33 +b(Error)i(Status)g(Co)s(des)2295 b(131)p eop end %%Page: 1 7 -TeXDict begin 1 6 bop 0 1225 a Ff(Chapter)65 b(1)0 1687 -y Fl(In)-6 b(tro)6 b(duction)0 2180 y Fi(This)33 b(do)s(cumen)m(t)i +TeXDict begin 1 6 bop 0 1225 a Fg(Chapter)65 b(1)0 1687 +y Fm(In)-6 b(tro)6 b(duction)0 2180 y Fj(This)33 b(do)s(cumen)m(t)i (describ)s(es)e(the)h(F)-8 b(ortran-callable)38 b(subroutine)33 b(in)m(terface)j(that)f(is)f(pro)m(vided)g(as)g(part)g(of)h(the)0 2293 y(CFITSIO)f(library)h(\(whic)m(h)h(is)g(written)g(in)f(ANSI)g @@ -3151,23 +5234,23 @@ (CFITSIO)f(source)i(co)s(de,)h(do)s(cumen)m(tation,)i(and)21 b(example)j(programs)e(are)h(a)m(v)-5 b(ailable)0 4918 y(on)30 b(the)h(W)-8 b(orld-Wide)32 b(W)-8 b(eb)31 b(or)f(via)h(anon)m -(ymous)f(ftp)g(from:)382 5178 y Fe(http://heasarc.gsfc.nasa)o(.go)o +(ymous)f(ftp)g(from:)382 5178 y Ff(http://heasarc.gsfc.nasa)o(.go)o (v/fi)o(tsio)382 5291 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o -(/fi)o(tsio)o(/c)1927 5942 y Fi(1)p eop end +(/fi)o(tsio)o(/c)1927 5942 y Fj(1)p eop end %%Page: 2 8 -TeXDict begin 2 7 bop 0 299 a Fi(2)2452 b Fg(CHAPTER)30 -b(1.)71 b(INTR)m(ODUCTION)0 555 y Fi(An)m(y)28 b(questions,)g(bug)f +TeXDict begin 2 7 bop 0 299 a Fj(2)2452 b Fh(CHAPTER)30 +b(1.)71 b(INTR)m(ODUCTION)0 555 y Fj(An)m(y)28 b(questions,)g(bug)f (rep)s(orts,)h(or)f(suggested)i(enhancemen)m(ts)f(related)g(to)h(the)e (CFITSIO)f(pac)m(k)-5 b(age)30 b(should)d(b)s(e)0 668 y(sen)m(t)k(to)g(the)g(FTOOLS)e(Help)h(Desk)h(at)g(the)g(HEASAR)m(C:) -382 928 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/cg)o(i-bi)o(n/f)o(tool) -o(shel)o(p)0 1188 y Fi(This)40 b(User's)i(Guide)f(assumes)g(that)h +382 928 y Ff(http://heasarc.gsfc.nasa)o(.go)o(v/cg)o(i-bi)o(n/f)o(tool) +o(shel)o(p)0 1188 y Fj(This)40 b(User's)i(Guide)f(assumes)g(that)h (readers)f(already)g(ha)m(v)m(e)i(a)f(general)g(understanding)d(of)j (the)f(de\014nition)0 1301 y(and)31 b(structure)g(of)h(FITS)e(format)i (\014les.)44 b(F)-8 b(urther)32 b(information)f(ab)s(out)h(FITS)f (formats)g(is)h(a)m(v)-5 b(ailable)34 b(from)d(the)0 -1413 y(FITS)37 b(Supp)s(ort)f(O\016ce)i(at)h Fe -(http://fits.gsfc.nasa.g)o(ov)p Fi(.)57 b(In)37 b(particular,)j(the)e +1413 y(FITS)37 b(Supp)s(ort)f(O\016ce)i(at)h Ff +(http://fits.gsfc.nasa.g)o(ov)p Fj(.)57 b(In)37 b(particular,)j(the)e ('FITS)g(Standard')f(giv)m(es)0 1526 y(the)31 b(authoritativ)m(e)j (de\014nition)d(of)g(the)h(FITS)e(data)i(format.)43 b(Other)31 b(do)s(cumen)m(ts)g(a)m(v)-5 b(ailable)34 b(at)d(that)h(W)-8 @@ -3185,13 +5268,13 @@ b(of)g(programs)e(that)h(can)h(b)s(e)e(used)g(to)i(manipulate)0 2251 y(and)f(analyze)i(FITS)d(format)i(\014les.)41 b(Fv)30 b(and)g(FTOOLS)f(are)i(a)m(v)-5 b(ailable)32 b(from)e(their)h(resp)s -(ectiv)m(e)g(W)-8 b(eb)31 b(sites)g(at:)382 2511 y Fe +(ectiv)m(e)g(W)-8 b(eb)31 b(sites)g(at:)382 2511 y Ff (http://fv.gsfc.nasa.gov)382 2624 y(http://heasarc.gsfc.nasa)o(.go)o (v/ft)o(ools)p eop end %%Page: 3 9 -TeXDict begin 3 8 bop 0 1225 a Ff(Chapter)65 b(2)0 1687 -y Fl(Creating)77 b(FITSIO/CFITSIO)0 2216 y Fd(2.1)135 -b(Building)45 b(the)h(Library)0 2467 y Fi(T)-8 b(o)43 +TeXDict begin 3 8 bop 0 1225 a Fg(Chapter)65 b(2)0 1687 +y Fm(Creating)77 b(FITSIO/CFITSIO)0 2216 y Fe(2.1)135 +b(Building)45 b(the)h(Library)0 2467 y Fj(T)-8 b(o)43 b(use)g(the)g(FITSIO)f(subroutines)f(one)j(m)m(ust)e(\014rst)g(build)g (the)h(CFITSIO)f(library)-8 b(,)46 b(whic)m(h)d(requires)f(a)h(C)0 2580 y(compiler.)73 b(gcc)43 b(is)e(ideal,)j(or)d(most)h(other)f @@ -3218,32 +5301,32 @@ 3690 y(A)f(standard)f(com)m(bination)j(of)e(C)f(and)h(F)-8 b(ortran)30 b(compilers)h(will)f(b)s(e)f(assumed)h(b)m(y)f(default,)i (but)e(one)h(ma)m(y)h(also)0 3803 y(sp)s(ecify)f(a)h(particular)f(F)-8 -b(ortran)32 b(compiler)e(b)m(y)h(doing:)48 4064 y Fe(>)95 -b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fi(\(where)33 +b(ortran)32 b(compiler)e(b)m(y)h(doing:)48 4064 y Ff(>)95 +b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fj(\(where)33 b('compilerName')h(is)f(the)g(name)f(of)h(the)g(compiler\))h(b)s(efore) e(running)f(the)i(con\014gure)f(command.)47 b(The)0 4437 y(curren)m(tly)30 b(recognized)i(compiler)f(names)f(are:)48 -4698 y Fe(g77Fortran)48 4811 y(IBMR2Fortran)48 4924 y(CLIPPERFortran)48 +4698 y Ff(g77Fortran)48 4811 y(IBMR2Fortran)48 4924 y(CLIPPERFortran)48 5036 y(pgiFortran)48 5149 y(NAGf90Fortran)48 5262 y(f2cFortran)48 5375 y(hpuxFortran)48 5488 y(apolloFortran)48 5601 y(sunFortran)48 -5714 y(CRAYFortran)1927 5942 y Fi(3)p eop end +5714 y(CRAYFortran)1927 5942 y Fj(3)p eop end %%Page: 4 10 -TeXDict begin 4 9 bop 0 299 a Fi(4)1896 b Fg(CHAPTER)30 +TeXDict begin 4 9 bop 0 299 a Fj(4)1896 b Fh(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)48 555 -y Fe(mipsFortran)48 668 y(DECFortran)48 781 y(vmsFortran)48 +y Ff(mipsFortran)48 668 y(DECFortran)48 781 y(vmsFortran)48 894 y(CONVEXFortran)48 1007 y(PowerStationFortran)48 1120 y(AbsoftUNIXFortran)48 1233 y(AbsoftProFortran)48 -1346 y(SXFortran)0 1609 y Fi(Alternativ)m(ely)-8 b(,)42 +1346 y(SXFortran)0 1609 y Fj(Alternativ)m(ely)-8 b(,)42 b(one)c(ma)m(y)g(edit)g(the)f(CFLA)m(GS)h(line)f(in)h(the)f(Mak)m (e\014le)i(to)f(add)f(the)h('-DcompilerName')i(\015ag)0 1722 y(after)31 b(running)e(the)h('./con\014gure')h(command.)0 1882 y(The)f(CFITSIO)f(library)h(is)g(built)g(on)h(Unix)f(systems)g(b)m -(y)g(t)m(yping:)48 2146 y Fe(>)95 b(./configure)45 b +(y)g(t)m(yping:)48 2146 y Ff(>)95 b(./configure)45 b ([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])764 2259 y([--enable-sse2])e([--enable-ssse3])48 2372 y(>)95 b(make)476 b(\(or)95 b('make)46 b(shared'\))48 2485 y(>)95 b(make)47 b(install)93 b(\(this)46 b(step)h(is)g(optional\))0 -2749 y Fi(at)24 b(the)g(op)s(erating)g(system)g(prompt.)38 +2749 y Fj(at)24 b(the)g(op)s(erating)g(system)g(prompt.)38 b(The)23 b(con\014gure)g(command)g(customizes)i(the)f(Mak)m(e\014le)h (for)f(the)g(particular)0 2861 y(system,)g(then)d(the)g(`mak)m(e')i (command)e(compiles)h(the)f(source)h(\014les)f(and)g(builds)f(the)h @@ -3255,8 +5338,8 @@ (con\014gure)g(giv)m(es)h(the)0 3200 y(path)e(to)i(the)f(directory)g (where)f(the)h(CFITSIO)f(library)g(and)g(include)h(\014les)f(should)g (b)s(e)g(installed)i(via)f(the)g(later)0 3313 y('mak)m(e)j(install')f -(command.)41 b(F)-8 b(or)31 b(example,)143 3577 y Fe(>)48 -b(./configure)c(--prefix=/usr1/local)0 3841 y Fi(will)25 +(command.)41 b(F)-8 b(or)31 b(example,)143 3577 y Ff(>)48 +b(./configure)c(--prefix=/usr1/local)0 3841 y Fj(will)25 b(cause)h(the)f('mak)m(e)h(install')g(command)f(to)h(cop)m(y)g(the)f (CFITSIO)e(lib)s(c\014tsio)i(\014le)h(to)f(/usr1/lo)s(cal/lib)i(and)e (the)0 3953 y(necessary)33 b(include)e(\014les)i(to)f(/usr1/lo)s @@ -3281,29 +5364,29 @@ 4 v 33 w(LIBRAR)-8 b(Y)p 3514 5111 V 34 w(P)g(A)g(TH)28 b(or)0 5224 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5 b(an)m(tages)33 b(of)d(using)g(a)h(shared)e(library)h(are:)143 -5488 y Fe(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h +5488 y Ff(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h (than)f(1)i(program)143 5601 y(2.)95 b(Less)47 b(memory)f(if)h(more)g (than)f(one)h(copy)g(of)g(a)g(program)f(using)h(the)g(shared)334 5714 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g (system)f(is)h(smart)p eop end %%Page: 5 11 -TeXDict begin 5 10 bop 0 299 a Fg(2.1.)72 b(BUILDING)31 -b(THE)f(LIBRAR)-8 b(Y)2507 b Fi(5)334 555 y Fe(enough)46 +TeXDict begin 5 10 bop 0 299 a Fh(2.1.)72 b(BUILDING)31 +b(THE)f(LIBRAR)-8 b(Y)2507 b Fj(5)334 555 y Ff(enough)46 b(to)h(share)g(copies)f(of)h(the)g(shared)f(library)g(at)h(run)g(time.) 143 668 y(3.)95 b(Possibly)46 b(easier)g(maintenance)e(since)j(a)g(new) g(version)f(of)h(the)g(shared)334 781 y(library)f(can)h(be)g(installed) e(without)h(relinking)f(all)i(the)g(software)334 894 y(that)g(uses)f(it)i(\(as)e(long)h(as)g(the)g(subroutine)e(names)i(and) f(calling)334 1007 y(sequences)f(remain)h(unchanged\).)143 -1120 y(4.)95 b(No)47 b(run-time)f(penalty.)0 1534 y Fi(The)30 -b(disadv)-5 b(an)m(tages)32 b(are:)143 1949 y Fe(1.)47 +1120 y(4.)95 b(No)47 b(run-time)f(penalty.)0 1534 y Fj(The)30 +b(disadv)-5 b(an)m(tages)32 b(are:)143 1949 y Ff(1.)47 b(More)g(hassle)f(at)h(runtime.)94 b(You)46 b(have)h(to)g(either)f (build)h(the)g(programs)286 2062 y(specially)f(or)h(have)f (LD_LIBRARY_PATH)e(set)j(right.)143 2175 y(2.)g(There)g(may)g(be)g(a)g (slight)f(start)h(up)g(penalty,)e(depending)h(on)h(where)f(you)h(are) 286 2288 y(reading)f(the)h(shared)f(library)g(and)h(the)g(program)f (from)g(and)h(if)g(your)g(CPU)g(is)286 2401 y(either)f(really)h(slow)f -(or)h(really)f(heavily)g(loaded.)0 2815 y Fi(On)30 b(HP/UX)i(systems,)g +(or)h(really)f(heavily)g(loaded.)0 2815 y Fj(On)30 b(HP/UX)i(systems,)g (the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)32 b(CFLA)m(GS)f(should)f(b)s (e)h(set)g(to)h(-Ae)g(b)s(efore)f(running)e(con-)0 2928 y(\014gure)h(to)h(enable)g("extended)g(ANSI")f(features.)0 @@ -3363,21 +5446,21 @@ b(sup)s(ercom-)0 5714 y(puters)d(are)g(curren)m(tly)h(not)f(supp)s (orted.)p eop end %%Page: 6 12 -TeXDict begin 6 11 bop 0 299 a Fi(6)1896 b Fg(CHAPTER)30 +TeXDict begin 6 11 bop 0 299 a Fj(6)1896 b Fh(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y -Fd(2.2)135 b(T)-11 b(esting)46 b(the)f(Library)0 805 -y Fi(The)40 b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f +Fe(2.2)135 b(T)-11 b(esting)46 b(the)f(Library)0 805 +y Fj(The)40 b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f (building)f(and)g(running)g(the)h(testprog.c)h(program)f(that)h(is)0 918 y(included)30 b(with)g(the)g(release.)42 b(On)30 -b(Unix)g(systems)g(t)m(yp)s(e:)191 1156 y Fe(\045)47 +b(Unix)g(systems)g(t)m(yp)s(e:)191 1156 y Ff(\045)47 b(make)g(testprog)191 1269 y(\045)g(testprog)f(>)h(testprog.lis)191 1382 y(\045)g(diff)g(testprog.lis)d(testprog.out)191 1495 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 1733 -y Fi(On)30 b(VMS)g(systems,)g(\(assuming)h(cc)g(is)f(the)h(name)f(of)h +y Fj(On)30 b(VMS)g(systems,)g(\(assuming)h(cc)g(is)f(the)h(name)f(of)h (the)f(C)g(compiler)h(command\),)g(t)m(yp)s(e:)191 1970 -y Fe($)47 b(cc)h(testprog.c)191 2083 y($)f(link)g(testprog,)e +y Ff($)47 b(cc)h(testprog.c)191 2083 y($)f(link)g(testprog,)e (cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 2196 -y($)i(run)g(testprog)0 2434 y Fi(The)30 b(testprog)h(program)g(should)e +y($)i(run)g(testprog)0 2434 y Fj(The)30 b(testprog)h(program)g(should)e (pro)s(duce)g(a)i(FITS)f(\014le)g(called)i(`testprog.\014t')g(that)f (is)f(iden)m(tical)j(to)e(the)f(`test-)0 2547 y(prog.std')25 b(FITS)f(\014le)g(included)g(with)g(this)h(release.)40 @@ -3395,7 +5478,7 @@ (b)s(e)e(tested)h(with)g(the)g(testf77)h(program.)40 b(On)29 b(Unix)h(systems)g(the)0 3272 y(fortran)g(compilation)i(and)e (link)g(command)g(ma)m(y)h(b)s(e)f(called)h('f77')h(or)e('g77',)j(dep)s -(ending)c(on)h(the)g(system.)143 3509 y Fe(\045)48 b(f77)f(-o)g +(ending)c(on)h(the)g(system.)143 3509 y Ff(\045)48 b(f77)f(-o)g (testf77)f(testf77.f)f(-L.)i(-lcfitsio)e(-lnsl)h(-lsocket)48 3622 y(or)143 3735 y(\045)i(f77)f(-f)g(-o)g(testf77)f(testf77.f)f(-L.)i (-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))48 3848 y(or)143 @@ -3405,7 +5488,7 @@ (-lcc_dynamic)g(-lncurses)g(\(Mac)i(OS-X\))143 4413 y(\045)h(testf77)d (>)j(testf77.lis)143 4526 y(\045)g(diff)e(testf77.lis)f(testf77.out)143 4638 y(\045)j(cmp)f(testf77.fit)d(testf77.std)0 4876 -y Fi(On)31 b(mac)m(hines)h(running)f(SUN)g(O/S,)h(F)-8 +y Fj(On)31 b(mac)m(hines)h(running)f(SUN)g(O/S,)h(F)-8 b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)h(with)g(the)g('-f) 7 b(')32 b(option)h(to)f(force)0 4989 y(double)24 b(precision)g(v)-5 b(ariables)25 b(to)g(b)s(e)e(aligned)i(on)f(8-b)m(yte)i(b)s(oundaries)c @@ -3422,18 +5505,18 @@ d(w)m(ork)h(when)f(using)g(the)h(In)m(tel)0 5714 y(F)-8 b(ortran)31 b(compiler:)p eop end %%Page: 7 13 -TeXDict begin 7 12 bop 0 299 a Fg(2.3.)72 b(LINKING)30 -b(PR)m(OGRAMS)h(WITH)f(FITSIO)2041 b Fi(7)0 555 y Fe(ifort)46 +TeXDict begin 7 12 bop 0 299 a Fh(2.3.)72 b(LINKING)30 +b(PR)m(OGRAMS)h(WITH)f(FITSIO)2041 b Fj(7)0 555 y Ff(ifort)46 b(/libs.dll)g(cfitsio.lib)e(/MD)j(testf77.f)f(/Gm)0 781 y(or)h(possibly,)0 1007 y(ifort)f(/libs:dll)g(cfitsio.lib)e(/MD)j(/fpp) g(/extfpp:cfortran.h,fitsi)o(o.h)191 1120 y(/iface:cvf)e(testf77.f)0 -1335 y Fi(Also)32 b(note)h(that)f(on)g(some)g(systems)f(the)h(output)g +1335 y Fj(Also)32 b(note)h(that)f(on)g(some)g(systems)f(the)h(output)g (listing)g(of)g(the)g(testf77)h(program)f(ma)m(y)g(di\013er)f(sligh)m (tly)i(from)0 1448 y(the)f(testf77.std)i(template)g(if)e(leading)h (zeros)g(are)g(not)g(prin)m(ted)e(b)m(y)i(default)f(b)s(efore)g(the)g (decimal)i(p)s(oin)m(t)e(when)0 1561 y(using)e(F)h(format.)0 1721 y(A)f(few)h(other)f(utilit)m(y)i(programs)e(are)h(included)e(with) -h(CFITSIO:)191 1937 y Fe(speed)46 b(-)i(measures)d(the)i(maximum)f +h(CFITSIO:)191 1937 y Ff(speed)46 b(-)i(measures)d(the)i(maximum)f (throughput)f(\(in)i(MB)g(per)g(second\))668 2050 y(for)g(writing)f (and)h(reading)f(FITS)g(files)h(with)f(CFITSIO)191 2275 y(listhead)f(-)j(lists)e(all)h(the)g(header)f(keywords)g(in)h(any)g @@ -3443,11 +5526,11 @@ 2840 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h(performs)e(common)i (read)f(and)811 2953 y(write)h(operations)e(on)i(a)g(FITS)g(file.)191 3179 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the)g(CFITSIO)f -(iterator)f(routine)0 3394 y Fi(The)30 b(\014rst)f(4)i(of)g(these)g +(iterator)f(routine)0 3394 y Fj(The)30 b(\014rst)f(4)i(of)g(these)g (utilit)m(y)g(programs)f(can)h(b)s(e)f(compiled)h(and)e(link)m(ed)i(b)m -(y)f(t)m(yping)143 3610 y Fe(\045)95 b(make)47 b(program_name)0 -3936 y Fd(2.3)135 b(Linking)45 b(Programs)h(with)f(FITSIO)0 -4186 y Fi(When)31 b(linking)g(applications)i(soft)m(w)m(are)f(with)f +(y)f(t)m(yping)143 3610 y Ff(\045)95 b(make)47 b(program_name)0 +3936 y Fe(2.3)135 b(Linking)45 b(Programs)h(with)f(FITSIO)0 +4186 y Fj(When)31 b(linking)g(applications)i(soft)m(w)m(are)f(with)f (the)g(FITSIO)f(library)-8 b(,)32 b(sev)m(eral)h(system)e(libraries)g (usually)g(need)0 4299 y(to)26 b(b)s(e)f(sp)s(eci\014ed)g(on)g(the)h (link)g(comman)f(Unix)h(systems,)h(the)e(most)h(reliable)h(w)m(a)m(y)f @@ -3465,15 +5548,15 @@ (usually)g(necessary)g(to)h(recompile,)h(as)0 5024 y(w)m(ell)d(as)g (relink,)g(the)f(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i(the)f (de\014nitions)g(in)g(\014tsio.h)h(often)f(c)m(hange.)0 -5351 y Fd(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0 -5601 y Fi(In)32 b(order)h(to)h(e\013ectiv)m(ely)i(use)d(the)g(FITSIO)f +5351 y Fe(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0 +5601 y Fj(In)32 b(order)h(to)h(e\013ectiv)m(ely)i(use)d(the)g(FITSIO)f (library)h(as)h(quic)m(kly)g(as)f(p)s(ossible,)h(it)g(is)f(recommended) g(that)g(new)0 5714 y(users)d(follo)m(w)h(these)g(steps:)p eop end %%Page: 8 14 -TeXDict begin 8 13 bop 0 299 a Fi(8)1896 b Fg(CHAPTER)30 +TeXDict begin 8 13 bop 0 299 a Fj(8)1896 b Fh(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y -Fi(1.)62 b(Read)38 b(the)f(follo)m(wing)i(`FITS)e(Primer')g(c)m(hapter) +Fj(1.)62 b(Read)38 b(the)f(follo)m(wing)i(`FITS)e(Primer')g(c)m(hapter) h(for)g(a)f(brief)g(o)m(v)m(erview)i(of)f(the)g(structure)e(of)i(FITS)f (\014les.)0 668 y(This)25 b(is)h(esp)s(ecially)h(imp)s(ortan)m(t)g(for) e(users)h(who)f(ha)m(v)m(e)i(not)g(previously)e(dealt)i(with)f(the)g @@ -3491,13 +5574,13 @@ (of)g(routines)f(that)g(are)h(pro)m(vided)f(in)g(the)g(`Adv)-5 b(anced)32 b(In)m(terface'.)0 1760 y(These)22 b(routines)f(p)s(erform)g (more)h(sp)s(ecialized)h(functions)e(than)g(are)i(pro)m(vided)e(b)m(y)h -(the)g(Basic)h(In)m(terface)g(routines.)0 2124 y Fd(2.5)135 -b(Example)46 b(Program)0 2380 y Fi(The)32 b(follo)m(wing)i(listing)f +(the)g(Basic)h(In)m(terface)g(routines.)0 2124 y Fe(2.5)135 +b(Example)46 b(Program)0 2380 y Fj(The)32 b(follo)m(wing)i(listing)f (sho)m(ws)f(an)g(example)i(of)e(ho)m(w)h(to)g(use)f(the)g(FITSIO)g (routines)g(in)g(a)h(F)-8 b(ortran)33 b(program.)0 2493 y(Refer)38 b(to)h(the)g(co)s(okb)s(o)s(ok.f)f(program)g(that)h(is)f (included)f(with)h(the)h(FITSIO)e(distribution)g(for)h(examples)h(of)0 -2606 y(other)31 b(FITS)e(programs.)286 2891 y Fe(program)46 +2606 y(other)31 b(FITS)e(programs.)286 2891 y Ff(program)46 b(writeimage)0 3117 y(C)238 b(Create)46 b(a)i(FITS)f(primary)e(array)i (containing)e(a)i(2-D)g(image)286 3343 y(integer)f (status,unit,blocksize,bit)o(pix,)o(nax)o(is,n)o(axes)o(\(2\))286 @@ -3516,8 +5599,8 @@ 5601 y(naxes\(1\)=300)286 5714 y(naxes\(2\)=200)p eop end %%Page: 9 15 -TeXDict begin 9 14 bop 0 299 a Fg(2.6.)72 b(LEGAL)30 -b(STUFF)2995 b Fi(9)286 555 y Fe(extend=.true.)0 781 +TeXDict begin 9 14 bop 0 299 a Fh(2.6.)72 b(LEGAL)30 +b(STUFF)2995 b Fj(9)286 555 y Ff(extend=.true.)0 781 y(C)238 b(write)47 b(the)g(required)e(header)h(keywords)286 894 y(call)h(ftphpr\(unit,simple,bitpi)o(x,na)o(xis,)o(nax)o(es,0)o (,1,e)o(xte)o(nd,s)o(tatu)o(s\))0 1120 y(C)238 b(initialize)45 @@ -3534,7 +5617,7 @@ b(Time',status\))0 2926 y(C)238 b(close)47 b(the)g(file)f(and)h(free)g (the)g(unit)f(number)286 3039 y(call)h(ftclos\(unit,)d(status\))286 3152 y(call)j(ftfiou\(unit,)d(status\))286 3265 y(end)0 -3623 y Fd(2.6)135 b(Legal)46 b(Stu\013)0 3878 y Fi(Cop)m(yrigh)m(t)37 +3623 y Fe(2.6)135 b(Legal)46 b(Stu\013)0 3878 y Fj(Cop)m(yrigh)m(t)37 b(\(Unpublished{all)g(righ)m(ts)g(reserv)m(ed)g(under)e(the)i(cop)m (yrigh)m(t)h(la)m(ws)f(of)g(the)g(United)g(States\),)j(U.S.)0 3991 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m(ted)e(b)m(y)h(the)g @@ -3567,9 +5650,9 @@ b(FR)m(OM,)h(OR)f(IN)h(ANY)g(W)-10 b(A)i(Y)30 b(CON-)p eop end %%Page: 10 16 -TeXDict begin 10 15 bop 0 299 a Fi(10)1851 b Fg(CHAPTER)30 +TeXDict begin 10 15 bop 0 299 a Fj(10)1851 b Fh(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y -Fi(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25 b(WHETHER)g(OR)g(NOT)g +Fj(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25 b(WHETHER)g(OR)g(NOT)g (BASED)g(UPON)g(W)-10 b(ARRANTY,)26 b(CON-)0 668 y(TRA)m(CT,)d(TOR)-8 b(T)23 b(,)g(OR)g(OTHER)-10 b(WISE,)22 b(WHETHER)i(OR)f(NOT)f(INJUR)-8 b(Y)24 b(W)-10 b(AS)23 b(SUST)-8 b(AINED)23 b(BY)h(PER-)0 @@ -3578,8 +5661,8 @@ b(AS)26 b(SUST)-8 b(AINED)0 894 y(FR)m(OM,)37 b(OR)e(AR)m(OSE)h(OUT)f (OF)h(THE)g(RESUL)-8 b(TS)35 b(OF,)h(OR)f(USE)h(OF,)g(THE)g(SOFTW)-10 b(ARE)35 b(OR)g(SER-)0 1007 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0 -1451 y Fd(2.7)135 b(Ac)l(kno)l(wledgmen)l(ts)0 1723 y -Fi(The)29 b(dev)m(elopmen)m(t)h(of)g(man)m(y)f(of)h(the)f(p)s(o)m(w)m +1451 y Fe(2.7)135 b(Ac)l(kno)l(wledgmen)l(ts)0 1723 y +Fj(The)29 b(dev)m(elopmen)m(t)h(of)g(man)m(y)f(of)h(the)f(p)s(o)m(w)m (erful)g(features)g(in)g(CFITSIO)f(w)m(as)i(made)f(p)s(ossible)g (through)f(collab-)0 1836 y(orations)35 b(with)f(man)m(y)h(p)s(eople)f (or)h(organizations)h(from)e(around)f(the)i(w)m(orld.)52 @@ -3647,8 +5730,8 @@ (routines)f(for)g(con)m(v)m(erting)i(IRAF)f(format)g(images)g(in)m(to)g (FITS)f(format.)p eop end %%Page: 11 17 -TeXDict begin 11 16 bop 0 299 a Fg(2.7.)72 b(A)m(CKNO)m(WLEDGMENTS)2577 -b Fi(11)0 555 y(Martin)33 b(Reinec)m(k)m(e)i(\(Max)f(Planc)m(k)f +TeXDict begin 11 16 bop 0 299 a Fh(2.7.)72 b(A)m(CKNO)m(WLEDGMENTS)2577 +b Fj(11)0 555 y(Martin)33 b(Reinec)m(k)m(e)i(\(Max)f(Planc)m(k)f (Institute,)h(Garc)m(hing\)\))g(pro)m(vided)f(the)g(mo)s(di\014cations) f(to)i(cfortran.h)e(that)0 668 y(are)d(necessary)h(to)f(supp)s(ort)e (64-bit)k(in)m(teger)f(v)-5 b(alues)29 b(when)f(calling)i(C)f(routines) @@ -3686,11 +5769,11 @@ m(eter)g(Y)-8 b(oung,)31 b(Jianjun)e(Xu,)h(and)g(Nelson)h(Zarate.)p eop end %%Page: 12 18 -TeXDict begin 12 17 bop 0 299 a Fi(12)1851 b Fg(CHAPTER)30 +TeXDict begin 12 17 bop 0 299 a Fj(12)1851 b Fh(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)p eop end %%Page: 13 19 -TeXDict begin 13 18 bop 0 1225 a Ff(Chapter)65 b(3)0 -1687 y Fl(A)78 b(FITS)f(Primer)0 2180 y Fi(This)23 b(section)j(giv)m +TeXDict begin 13 18 bop 0 1225 a Fg(Chapter)65 b(3)0 +1687 y Fm(A)78 b(FITS)f(Primer)0 2180 y Fj(This)23 b(section)j(giv)m (es)f(a)g(brief)e(o)m(v)m(erview)j(of)e(the)h(structure)e(of)i(FITS)e (\014les.)38 b(Users)24 b(should)g(refer)f(to)i(the)g(do)s(cumen-)0 2293 y(tation)33 b(a)m(v)-5 b(ailable)33 b(from)e(the)g(FITS)g(Supp)s @@ -3722,11 +5805,11 @@ (additional)h(HDUs)f(are)g(called)0 3902 y(FITS)d(`extensions'.)41 b(There)30 b(are)h(curren)m(tly)f(3)h(t)m(yp)s(es)g(of)f(extensions)h (de\014ned)e(b)m(y)h(the)h(FITS)f(standard:)136 4171 -y Fc(\017)46 b Fi(Image)31 b(Extension)g(-)g(a)f(N-dimensional)h(arra)m +y Fd(\017)46 b Fj(Image)31 b(Extension)g(-)g(a)f(N-dimensional)h(arra)m (y)g(of)g(pixels,)g(lik)m(e)g(in)f(a)h(primary)e(arra)m(y)136 -4368 y Fc(\017)46 b Fi(ASCI)s(I)29 b(T)-8 b(able)31 b(Extension)g(-)f +4368 y Fd(\017)46 b Fj(ASCI)s(I)29 b(T)-8 b(able)31 b(Extension)g(-)f (ro)m(ws)h(and)e(columns)h(of)h(data)g(in)f(ASCI)s(I)f(c)m(haracter)j -(format)136 4564 y Fc(\017)46 b Fi(Binary)31 b(T)-8 b(able)31 +(format)136 4564 y Fd(\017)46 b Fj(Binary)31 b(T)-8 b(able)31 b(Extension)f(-)h(ro)m(ws)f(and)g(columns)g(of)h(data)g(in)f(binary)f (represen)m(tation)0 4833 y(In)k(eac)m(h)i(case)g(the)f(HDU)h(consists) g(of)f(an)g(ASCI)s(I)e(Header)i(Unit)h(follo)m(w)m(ed)g(b)m(y)f(an)g @@ -3738,12 +5821,12 @@ y(Eac)m(h)i(Header)f(Unit)h(consists)g(of)f(an)m(y)g(n)m(um)m(b)s(er)f (of)i(80-c)m(haracter)i(k)m(eyw)m(ord)d(records)g(or)g(`card)h(images') g(whic)m(h)0 5332 y(ha)m(v)m(e)f(the)e(general)i(form:)95 -5601 y Fe(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95 +5601 y Ff(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95 5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i -(value)1905 5942 y Fi(13)p eop end +(value)1905 5942 y Fj(13)p eop end %%Page: 14 20 -TeXDict begin 14 19 bop 0 299 a Fi(14)2398 b Fg(CHAPTER)30 -b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 y Fi(The)35 b(k)m(eyw)m(ord)i +TeXDict begin 14 19 bop 0 299 a Fj(14)2398 b Fh(CHAPTER)30 +b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 y Fj(The)35 b(k)m(eyw)m(ord)i (names)f(ma)m(y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)g(and)e (can)h(only)h(con)m(tain)g(upp)s(ercase)e(letters,)k(the)0 668 y(digits)25 b(0-9,)i(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c) @@ -3788,39 +5871,39 @@ m(k)e(of)g(the)f(previous)g(Data)j(Unit)d(\(or)h(Header)g(Unit)g(if)f (there)h(is)g(no)f(Data)i(Unit\).)0 2937 y(The)k(main)g(required)g(k)m (eyw)m(ords)g(in)g(FITS)g(primary)g(arra)m(ys)g(or)h(image)g -(extensions)g(are:)136 3172 y Fc(\017)46 b Fi(BITPIX)33 +(extensions)g(are:)136 3172 y Fd(\017)46 b Fj(BITPIX)33 b({)h(de\014nes)e(the)i(datat)m(yp)s(e)g(of)f(the)g(arra)m(y:)47 b(8,)35 b(16,)g(32,)g(64,)g(-32,)g(-64)g(for)e(unsigned)f(8{bit)i(b)m (yte,)227 3284 y(16{bit)27 b(signed)e(in)m(teger,)i(32{bit)g(signed)e (in)m(teger,)j(64{bit)e(signed)f(in)m(teger,)j(32{bit)e(IEEE)f (\015oating)h(p)s(oin)m(t,)227 3397 y(and)k(64{bit)i(IEEE)e(double)f (precision)i(\015oating)g(p)s(oin)m(t,)g(resp)s(ectiv)m(ely)-8 -b(.)136 3585 y Fc(\017)46 b Fi(NAXIS)30 b({)h(the)g(n)m(um)m(b)s(er)e +b(.)136 3585 y Fd(\017)46 b Fj(NAXIS)30 b({)h(the)g(n)m(um)m(b)s(er)e (of)h(dimensions)g(in)g(the)h(arra)m(y)-8 b(,)31 b(usually)f(0,)h(1,)g -(2,)g(3,)g(or)g(4.)136 3773 y Fc(\017)46 b Fi(NAXISn)30 +(2,)g(3,)g(or)g(4.)136 3773 y Fd(\017)46 b Fj(NAXISn)30 b({)h(\(n)f(ranges)g(from)g(1)h(to)g(NAXIS\))g(de\014nes)e(the)i(size)g (of)g(eac)m(h)g(dimension.)0 4008 y(FITS)e(tables)i(start)g(with)f(the) g(k)m(eyw)m(ord)g(XTENSION)g(=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f (tables\))i(or)f(XTENSION)f(=)0 4120 y(`BINT)-8 b(ABLE')32 b(\(for)e(binary)g(tables\))h(and)f(ha)m(v)m(e)i(the)e(follo)m(wing)i -(main)e(k)m(eyw)m(ords:)136 4355 y Fc(\017)46 b Fi(TFIELDS)30 +(main)e(k)m(eyw)m(ords:)136 4355 y Fd(\017)46 b Fj(TFIELDS)30 b({)h(n)m(um)m(b)s(er)e(of)h(\014elds)g(or)h(columns)f(in)g(the)g -(table)136 4543 y Fc(\017)46 b Fi(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of) -h(ro)m(ws)h(in)f(the)g(table)136 4731 y Fc(\017)46 b -Fi(TTYPEn)29 b({)i(for)f(eac)m(h)i(column)e(\(n)g(ranges)h(from)f(1)g +(table)136 4543 y Fd(\017)46 b Fj(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of) +h(ro)m(ws)h(in)f(the)g(table)136 4731 y Fd(\017)46 b +Fj(TTYPEn)29 b({)i(for)f(eac)m(h)i(column)e(\(n)g(ranges)h(from)f(1)g (to)h(TFIELDS\))g(giv)m(es)g(the)g(name)f(of)h(the)f(column)136 -4918 y Fc(\017)46 b Fi(TF)m(ORMn)31 b({)f(the)h(datat)m(yp)s(e)g(of)g -(the)f(column)136 5106 y Fc(\017)46 b Fi(TUNITn)30 b({)g(the)h(ph)m +4918 y Fd(\017)46 b Fj(TF)m(ORMn)31 b({)f(the)h(datat)m(yp)s(e)g(of)g +(the)f(column)136 5106 y Fd(\017)46 b Fj(TUNITn)30 b({)g(the)h(ph)m (ysical)g(units)f(of)g(the)h(column)f(\(optional\))0 5341 y(Users)k(should)f(refer)h(to)h(the)f(FITS)g(Supp)s(ort)e(O\016ce) -i(at)h Fe(http://fits.gsfc.nasa.gov)27 b Fi(for)34 b(further)f(infor-)0 +i(at)h Ff(http://fits.gsfc.nasa.gov)27 b Fj(for)34 b(further)f(infor-)0 5454 y(mation)e(ab)s(out)f(the)h(FITS)e(format)i(and)f(related)h(soft)m (w)m(are)h(pac)m(k)-5 b(ages.)p eop end %%Page: 15 21 -TeXDict begin 15 20 bop 0 1225 a Ff(Chapter)65 b(4)0 -1687 y Fl(FITSIO)76 b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0 -2216 y Fd(4.1)135 b(CFITSIO)44 b(Size)h(Limitations)0 -2524 y Fi(CFITSIO)31 b(places)i(few)g(restrictions)g(on)g(the)f(size)i +TeXDict begin 15 20 bop 0 1225 a Fg(Chapter)65 b(4)0 +1687 y Fm(FITSIO)76 b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0 +2216 y Fe(4.1)135 b(CFITSIO)44 b(Size)h(Limitations)0 +2524 y Fj(CFITSIO)31 b(places)i(few)g(restrictions)g(on)g(the)f(size)i (of)e(FITS)g(\014les)h(that)g(it)g(reads)f(or)h(writes.)47 b(There)32 b(are)h(a)g(few)0 2636 y(limits,)e(ho)m(w)m(ev)m(er,)h(whic) m(h)e(ma)m(y)h(a\013ect)h(some)f(extreme)g(cases:)0 2797 @@ -3888,13 +5971,13 @@ 5714 y(m)m(ust)30 b(b)s(e)g(less)h(than)f(this)g(limit.)1905 5942 y(15)p eop end %%Page: 16 22 -TeXDict begin 16 21 bop 0 299 a Fi(16)1277 b Fg(CHAPTER)29 +TeXDict begin 16 21 bop 0 299 a Fj(16)1277 b Fh(CHAPTER)29 b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(Curren)m(tly)-8 b(,)31 b(supp)s(ort)e(for)i(large)h(\014les)f +555 y Fj(Curren)m(tly)-8 b(,)31 b(supp)s(ort)e(for)i(large)h(\014les)f (within)f(CFITSIO)f(has)i(b)s(een)f(tested)i(on)f(the)g(Lin)m(ux,)g (Solaris,)g(and)f(IBM)0 668 y(AIX)g(op)s(erating)h(systems.)0 -1133 y Fd(4.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f -(File)0 1409 y Fi(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)i(read)f +1133 y Fe(4.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f +(File)0 1409 y Fj(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)i(read)f (and)g(write)h(access)g(to)h(m)m(ultiple)f(HDUs)g(in)f(the)h(same)g (FITS)f(\014le.)0 1522 y(Th)m(us,)43 b(one)e(can)h(op)s(en)e(the)h (same)h(FITS)e(\014le)h(t)m(wice)i(within)d(a)i(single)f(program)g(and) @@ -3934,8 +6017,8 @@ (pruden)m(t)f(to)i(minimize)g(the)f(n)m(um)m(b)s(er)f(of)i(times)f(one) h(switc)m(hes)g(bac)m(k)g(and)e(forth)h(b)s(et)m(w)m(een)0 3216 y(doing)g(I/O)h(to)g(di\013eren)m(t)g(HDUs)g(in)f(the)g(same)h -(\014le.)0 3680 y Fd(4.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g -(\(CHDU\))0 3957 y Fi(In)32 b(general,)j(a)f(FITS)e(\014le)i(can)f(con) +(\014le.)0 3680 y Fe(4.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g +(\(CHDU\))0 3957 y Fj(In)32 b(general,)j(a)f(FITS)e(\014le)i(can)f(con) m(tain)h(m)m(ultiple)g(Header)g(Data)h(Units,)f(also)g(called)g (extensions.)49 b(CFITSIO)0 4070 y(only)38 b(op)s(erates)h(within)f (one)g(HDU)h(at)g(an)m(y)g(giv)m(en)g(time,)i(and)d(the)g(curren)m(tly) @@ -3948,7 +6031,7 @@ (existing)g(HDU)h(within)e(the)h(FITS)f(\014le)g(or)h(to)g(app)s(end)e (or)i(insert)f(a)h(new)0 4521 y(HDU)31 b(in)f(the)h(FITS)e(\014le)i (whic)m(h)f(then)g(b)s(ecomes)h(the)f(CHDU.)0 4986 y -Fd(4.4)135 b(Subroutine)45 b(Names)0 5262 y Fi(All)26 +Fe(4.4)135 b(Subroutine)45 b(Names)0 5262 y Fj(All)26 b(FITSIO)f(subroutine)g(names)h(b)s(egin)f(with)h(the)g(letters)h('ft') f(to)h(distinguish)e(them)h(from)f(other)h(subroutines)0 5375 y(and)34 b(are)h(5)g(or)f(6)h(c)m(haracters)h(long.)54 @@ -3962,16 +6045,16 @@ (FITS)e(\014le)i(ha)m(v)m(e)g(names)g(b)s(eginning)e(with)h('ftp...'.)p eop end %%Page: 17 23 -TeXDict begin 17 22 bop 0 299 a Fg(4.5.)72 b(SUBR)m(OUTINE)30 +TeXDict begin 17 22 bop 0 299 a Fh(4.5.)72 b(SUBR)m(OUTINE)30 b(F)-10 b(AMILIES)30 b(AND)h(D)m(A)-8 b(T)g(A)g(TYPES)1697 -b Fi(17)0 555 y Fd(4.5)135 b(Subroutine)45 b(F)-11 b(amilies)46 -b(and)f(Datat)l(yp)t(es)0 805 y Fi(Man)m(y)h(of)g(the)g(subroutines)e +b Fj(17)0 555 y Fe(4.5)135 b(Subroutine)45 b(F)-11 b(amilies)46 +b(and)f(Datat)l(yp)t(es)0 805 y Fj(Man)m(y)h(of)g(the)g(subroutines)e (come)j(in)e(families)h(whic)m(h)g(di\013er)f(only)h(in)f(the)h(datat)m (yp)s(e)g(of)g(the)f(asso)s(ciated)0 918 y(parameter\(s\))34 b(.)47 b(The)32 b(datat)m(yp)s(e)i(of)f(these)g(subroutines)e(is)i (indicated)g(b)m(y)g(the)g(last)g(letter)h(of)f(the)g(subroutine)0 1031 y(name)d(\(e.g.,)j('j')d(in)g('ftpkyj'\))h(as)f(follo)m(ws:)382 -1284 y Fe(x)47 b(-)h(bit)382 1397 y(b)f(-)h(character*1)c(\(unsigned)i +1284 y Ff(x)47 b(-)h(bit)382 1397 y(b)f(-)h(character*1)c(\(unsigned)i (byte\))382 1510 y(i)h(-)h(short)e(integer)g(\(I*2\))382 1623 y(j)h(-)h(integer)e(\(I*4,)g(32-bit)g(integer\))382 1735 y(k)h(-)h(long)e(long)h(integer)f(\(I*8,)g(64-bit)g(integer\))382 @@ -3982,7 +6065,7 @@ (\(R*8\))382 2300 y(c)h(-)h(complex)e(reals)g(\(pairs)g(of)h(R*4)g (values\))382 2413 y(m)g(-)h(double)e(precision)f(complex)h(\(pairs)g (of)h(R*8)g(values\))382 2526 y(l)g(-)h(logical)e(\(L*4\))382 -2639 y(s)h(-)h(character)d(string)0 2891 y Fi(When)23 +2639 y(s)h(-)h(character)d(string)0 2891 y Fj(When)23 b(dealing)h(with)f(the)g(FITS)g(b)m(yte)g(datat)m(yp)s(e,)j(it)e(is)f (imp)s(ortan)m(t)h(to)f(remem)m(b)s(er)g(that)h(the)f(ra)m(w)g(v)-5 b(alues)24 b(\(b)s(efore)0 3004 y(an)m(y)h(scaling)g(b)m(y)f(the)h @@ -4022,8 +6105,8 @@ b(alues)32 b(to)i(these)f(subroutines.)45 b(The)33 b(\014rst)e(v)-5 b(alue)33 b(in)f(eac)m(h)i(pair)e(is)h(the)g(real)g(part,)0 4792 y(and)d(the)g(second)h(is)f(the)h(imaginary)g(part.)0 -5125 y Fd(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion) -0 5375 y Fi(The)22 b(FITSIO)g(routines)h(that)h(read)e(and)h(write)g(n) +5125 y Fe(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion) +0 5375 y Fj(The)22 b(FITSIO)g(routines)h(that)h(read)e(and)h(write)g(n) m(umerical)g(data)h(can)f(p)s(erform)f(implicit)i(data)f(t)m(yp)s(e)g (con)m(v)m(ersion.)0 5488 y(This)i(means)g(that)h(the)g(data)g(t)m(yp)s (e)g(of)g(the)g(v)-5 b(ariable)26 b(or)g(arra)m(y)g(in)f(the)h(program) @@ -4035,9 +6118,9 @@ (tains)h(a)g(v)-5 b(alid)33 b(n)m(um)m(b)s(er)f(enclosed)i(in)f (quotes\))h(when)f(reading)g(a)h(FITS)p eop end %%Page: 18 24 -TeXDict begin 18 23 bop 0 299 a Fi(18)1277 b Fg(CHAPTER)29 +TeXDict begin 18 23 bop 0 299 a Fj(18)1277 b Fh(CHAPTER)29 b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(header)g(k)m(eyw)m(ord)g(v)-5 b(alue)31 b(and)g(for)f(n)m +555 y Fj(header)g(k)m(eyw)m(ord)g(v)-5 b(alue)31 b(and)g(for)f(n)m (umeric)h(v)-5 b(alues)31 b(when)f(reading)h(or)g(writing)g(v)-5 b(alues)31 b(in)f(the)h(primary)f(arra)m(y)0 668 y(or)40 b(a)h(table)h(column.)70 b(CFITSIO)39 b(returns)h(status)g(=)h(NUM)p @@ -4051,16 +6134,16 @@ (tained)g(string)f(v)-5 b(alues.)44 b(In)31 b(the)g(case)i(of)e(n)m (umeric)0 1167 y(columns)f(the)h(returned)e(string)h(will)h(b)s(e)f (formatted)h(using)e(the)i(TDISPn)e(displa)m(y)i(format)f(if)h(it)g -(exists.)0 1496 y Fd(4.7)135 b(Data)46 b(Scaling)0 1746 -y Fi(When)38 b(reading)f(n)m(umerical)i(data)f(v)-5 b(alues)38 +(exists.)0 1496 y Fe(4.7)135 b(Data)46 b(Scaling)0 1746 +y Fj(When)38 b(reading)f(n)m(umerical)i(data)f(v)-5 b(alues)38 b(in)f(the)h(primary)f(arra)m(y)h(or)g(a)g(table)h(column,)h(the)d(v)-5 b(alues)38 b(will)h(b)s(e)0 1859 y(scaled)f(automatically)j(b)m(y)c (the)h(BSCALE)f(and)g(BZER)m(O)h(\(or)g(TSCALn)d(and)i(TZER)m(On\))g (header)g(k)m(eyw)m(ord)0 1972 y(v)-5 b(alues)33 b(if)f(they)g(are)h (presen)m(t)g(in)f(the)g(header.)47 b(The)31 b(scaled)j(data)f(that)g (is)f(returned)f(to)i(the)g(reading)f(program)0 2085 -y(will)f(ha)m(v)m(e)382 2316 y Fe(output)46 b(value)g(=)i(\(FITS)e -(value\))g(*)i(BSCALE)e(+)h(BZERO)0 2546 y Fi(\(a)30 +y(will)f(ha)m(v)m(e)382 2316 y Ff(output)46 b(value)g(=)i(\(FITS)e +(value\))g(*)i(BSCALE)e(+)h(BZERO)0 2546 y Fj(\(a)30 b(corresp)s(onding)e(form)m(ula)h(using)g(TSCALn)e(and)i(TZER)m(On)e (is)i(used)g(when)f(reading)h(from)g(table)h(columns\).)0 2659 y(In)h(the)i(case)g(of)f(in)m(teger)h(output)f(v)-5 @@ -4089,15 +6172,15 @@ b(alues)32 b(in)m(to)h(the)f(FITS)0 3836 y(\014le\).)43 b(If)30 b(scaling)i(is)f(p)s(erformed,)e(the)i(in)m(v)m(erse)h(scaled)g (output)e(v)-5 b(alue)32 b(that)f(is)g(written)g(in)m(to)h(the)f(FITS)f -(\014le)h(will)0 3949 y(ha)m(v)m(e)430 4179 y Fe(FITS)46 +(\014le)h(will)0 3949 y(ha)m(v)m(e)430 4179 y Ff(FITS)46 b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0 -4410 y Fi(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e +4410 y Fj(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e (and)h(TZER)m(On)g(is)h(used)f(when)f(writing)i(to)h(table)g (columns\).)0 4523 y(Rounding)19 b(to)i(the)g(nearest)g(in)m(teger,)i (rather)e(than)f(truncation,)j(is)d(p)s(erformed)f(when)g(writing)h(in) m(teger)i(datat)m(yp)s(es)0 4636 y(to)31 b(the)g(FITS)e(\014le.)0 -4965 y Fd(4.8)135 b(Error)46 b(Status)f(V)-11 b(alues)45 -b(and)g(the)g(Error)g(Message)h(Stac)l(k)0 5215 y Fi(The)33 +4965 y Fe(4.8)135 b(Error)46 b(Status)f(V)-11 b(alues)45 +b(and)g(the)g(Error)g(Message)h(Stac)l(k)0 5215 y Fj(The)33 b(last)i(parameter)f(in)g(nearly)g(ev)m(ery)g(FITSIO)f(subroutine)g(is) h(the)g(error)f(status)h(v)-5 b(alue)35 b(whic)m(h)e(is)h(b)s(oth)f(an) 0 5328 y(input)j(and)f(an)i(output)f(parameter.)60 b(A)36 @@ -4111,9 +6194,9 @@ (a)h(p)s(ositiv)m(e)g(input)f(v)-5 b(alue)25 b(of)g(the)f(status)h (parameter,)h(then)f(the)f(subroutine)g(will)p eop end %%Page: 19 25 -TeXDict begin 19 24 bop 0 299 a Fg(4.9.)72 b(V)-10 b(ARIABLE-LENGTH)31 +TeXDict begin 19 24 bop 0 299 a Fh(4.9.)72 b(V)-10 b(ARIABLE-LENGTH)31 b(ARRA)-8 b(Y)31 b(F)-10 b(A)m(CILITY)30 b(IN)h(BINAR)-8 -b(Y)31 b(T)-8 b(ABLES)956 b Fi(19)0 555 y(exit)26 b(immediately)f +b(Y)31 b(T)-8 b(ABLES)956 b Fj(19)0 555 y(exit)26 b(immediately)f (without)g(c)m(hanging)h(the)e(v)-5 b(alue)25 b(of)g(the)g(status)g (parameter.)39 b(Th)m(us,)25 b(if)g(one)f(passes)h(the)g(status)0 668 y(v)-5 b(alue)31 b(returned)e(from)h(eac)m(h)i(FITSIO)d(routine)h @@ -4145,9 +6228,9 @@ (return)e(a)h(blank)0 2070 y(string.)41 b(Note)31 b(that)g(this)f(is)g (a)g(`First)h(In)e({)i(First)f(Out')g(stac)m(k,)i(so)e(the)h(oldest)g (error)e(message)j(is)e(returned)f(\014rst)0 2183 y(b)m(y)h(ftgmsg.)0 -2557 y Fd(4.9)135 b(V)-11 b(ariable-Length)46 b(Arra)l(y)f(F)-11 +2557 y Fe(4.9)135 b(V)-11 b(ariable-Length)46 b(Arra)l(y)f(F)-11 b(acilit)l(y)46 b(in)f(Binary)g(T)-11 b(ables)0 2815 -y Fi(FITSIO)38 b(pro)m(vides)i(easy-to-use)h(supp)s(ort)d(for)h +y Fj(FITSIO)38 b(pro)m(vides)i(easy-to-use)h(supp)s(ort)d(for)h (reading)g(and)g(writing)h(data)g(in)f(v)-5 b(ariable)40 b(length)g(\014elds)f(of)h(a)0 2928 y(binary)35 b(table.)56 b(The)35 b(v)-5 b(ariable)36 b(length)f(columns)g(ha)m(v)m(e)i(TF)m @@ -4204,9 +6287,9 @@ (FTPCLx.)57 b(The)36 b(total)i(length)f(of)f(the)g(arra)m(y)h(is)f (calculated)i(from)p eop end %%Page: 20 26 -TeXDict begin 20 25 bop 0 299 a Fi(20)1277 b Fg(CHAPTER)29 +TeXDict begin 20 25 bop 0 299 a Fj(20)1277 b Fh(CHAPTER)29 b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(\(NELEM+FELEM-1\).)44 b(One)30 b(cannot)i(app)s(end)d(more)i +555 y Fj(\(NELEM+FELEM-1\).)44 b(One)30 b(cannot)i(app)s(end)d(more)i (elemen)m(ts)h(to)g(an)e(existing)i(\014eld)f(at)g(a)h(later)g(time;)g (an)m(y)0 668 y(attempt)j(to)f(do)g(so)g(will)g(simply)f(o)m(v)m (erwrite)j(all)e(the)g(data)h(whic)m(h)e(w)m(as)h(previously)g @@ -4262,8 +6345,8 @@ (status)g(to)g(b)s(e)f(returned.)44 b(One)32 b(can)g(determine)g(the)g (n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h(in)f(eac)m(h)h(ro)m(w)0 3407 y(of)e(a)f(v)-5 b(ariable)31 b(column)g(with)f(the)g(FTGDES)h -(subroutine.)0 3859 y Fd(4.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t -(ecial)h(V)-11 b(alues)0 4133 y Fi(The)26 b(ANSI/IEEE-754)h +(subroutine.)0 3859 y Fe(4.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t +(ecial)h(V)-11 b(alues)0 4133 y Fj(The)26 b(ANSI/IEEE-754)h (\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(er)d(standard)g(de\014nes)h (certain)h(sp)s(ecial)g(v)-5 b(alues)26 b(that)h(are)g(used)e(to)0 4246 y(represen)m(t)j(suc)m(h)g(quan)m(tities)h(as)f(Not-a-Num)m(b)s @@ -4301,10 +6384,10 @@ b(alue)31 b(\(not)g(a)g(NaN\))h(is)0 5714 y(used)e(to)h(represen)m(t)f (unde\014ned)e(pixels.)p eop end %%Page: 21 27 -TeXDict begin 21 26 bop 0 299 a Fg(4.11.)73 b(WHEN)31 +TeXDict begin 21 26 bop 0 299 a Fh(4.11.)73 b(WHEN)31 b(THE)f(FINAL)g(SIZE)f(OF)i(THE)f(FITS)f(HDU)i(IS)f(UNKNO)m(WN)978 -b Fi(21)0 555 y Fd(4.11)136 b(When)44 b(the)h(Final)h(Size)f(of)g(the)g -(FITS)f(HDU)h(is)g(Unkno)l(wn)0 805 y Fi(It)27 b(is)h(not)f(required)f +b Fj(21)0 555 y Fe(4.11)136 b(When)44 b(the)h(Final)h(Size)f(of)g(the)g +(FITS)f(HDU)h(is)g(Unkno)l(wn)0 805 y Fj(It)27 b(is)h(not)f(required)f (to)i(kno)m(w)f(the)h(total)h(size)f(of)f(a)h(FITS)e(data)i(arra)m(y)g (or)f(table)h(b)s(efore)f(b)s(eginning)f(to)i(write)g(the)0 918 y(data)k(to)f(the)g(FITS)f(\014le.)43 b(In)30 b(the)h(case)h(of)f @@ -4362,9 +6445,9 @@ g(a)f(table)h(with)0 3497 y(a)d(large)h(n)m(um)m(b)s(er)e(of)h(ro)m (ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 b(alue)34 b(to)h(the)f(actual)h(smaller)g(v)-5 b(alue)34 b(just)f(b)s(efore)0 -3610 y(closing)e(the)g(table.)0 3941 y Fd(4.12)136 b(Lo)t(cal)45 +3610 y(closing)e(the)g(table.)0 3941 y Fe(4.12)136 b(Lo)t(cal)45 b(FITS)e(Con)l(v)l(en)l(tions)k(supp)t(orted)d(b)l(y)h(FITSIO)0 -4191 y Fi(CFITSIO)29 b(supp)s(orts)g(sev)m(eral)j(lo)s(cal)g(FITS)e +4191 y Fj(CFITSIO)29 b(supp)s(orts)g(sev)m(eral)j(lo)s(cal)g(FITS)e (con)m(v)m(en)m(tions)i(whic)m(h)f(are)g(not)g(de\014ned)e(in)i(the)f (o\016cial)j(FITS)d(stan-)0 4304 y(dard)43 b(and)g(whic)m(h)g(are)h (not)g(necessarily)g(recognized)h(or)f(supp)s(orted)e(b)m(y)h(other)h @@ -4373,9 +6456,9 @@ (esp)s(ecially)f(if)f(the)g(FITS)f(\014les)h(that)h(are)0 4530 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to)g(b)s(e)f(pro)s(cessed)g (b)m(y)h(other)f(soft)m(w)m(are)i(systems)f(whic)m(h)f(do)h(not)f(use)h -(the)f(CFITSIO)0 4642 y(in)m(terface.)0 4930 y Fb(4.12.1)113 +(the)f(CFITSIO)0 4642 y(in)m(terface.)0 4930 y Fc(4.12.1)113 b(Supp)s(ort)37 b(for)h(Long)g(String)f(Keyw)m(ord)h(V)-9 -b(alues.)0 5149 y Fi(The)23 b(length)i(of)f(a)g(standard)f(FITS)g +b(alues.)0 5149 y Fj(The)23 b(length)i(of)f(a)g(standard)f(FITS)g (string)h(k)m(eyw)m(ord)g(is)g(limited)h(to)f(68)h(c)m(haracters)g(b)s (ecause)f(it)g(m)m(ust)g(\014t)g(en)m(tirely)0 5262 y(within)35 b(a)h(single)h(FITS)e(header)h(k)m(eyw)m(ord)g(record.)57 @@ -4393,20 +6476,20 @@ b(The)43 b(string)h(v)-5 b(alue)43 b(ma)m(y)i(b)s(e)p eop end %%Page: 22 28 -TeXDict begin 22 27 bop 0 299 a Fi(22)1277 b Fg(CHAPTER)29 +TeXDict begin 22 27 bop 0 299 a Fj(22)1277 b Fh(CHAPTER)29 b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(con)m(tin)m(ued)e(in)f(this)h(w)m(a)m(y)g(o)m(v)m(er)h(as)e +555 y Fj(con)m(tin)m(ued)e(in)f(this)h(w)m(a)m(y)g(o)m(v)m(er)h(as)e (man)m(y)h(additional)g(CONTINUE)f(k)m(eyw)m(ords)g(as)h(is)f (required.)40 b(The)27 b(follo)m(wing)0 668 y(lines)k(illustrate)g (this)f(con)m(tin)m(uation)j(con)m(v)m(en)m(tion)f(whic)m(h)e(is)h (used)e(in)h(the)h(v)-5 b(alue)31 b(of)f(the)h(STRKEY)e(k)m(eyw)m(ord:) -0 920 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')524 b(/)47 b(The)g(OGIP)g(Long)f +0 920 y Ff(LONGSTRN=)45 b('OGIP)i(1.0')524 b(/)47 b(The)g(OGIP)g(Long)f (String)g(Convention)f(may)i(be)g(used.)0 1033 y(STRKEY)94 b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93 b(/)47 b(Optional)f(Comment)0 1146 y(CONTINUE)93 b(')48 b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95 b(')0 1259 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f -(optional)g(comment.)0 1511 y Fi(It)29 b(is)g(recommended)f(that)h(the) +(optional)g(comment.)0 1511 y Fj(It)29 b(is)g(recommended)f(that)h(the) g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)i(b) s(e)d(included)g(in)g(an)m(y)h(HDU)0 1624 y(that)f(uses)e(this)h (longstring)h(con)m(v)m(en)m(tion.)42 b(A)27 b(subroutine)f(called)i @@ -4415,13 +6498,13 @@ (already)g(exist.)0 1897 y(This)23 b(long)i(string)g(con)m(v)m(en)m (tion)h(is)e(supp)s(orted)f(b)m(y)h(the)g(follo)m(wing)i(FITSIO)d (subroutines)g(that)i(deal)g(with)f(string-)0 2010 y(v)-5 -b(alued)30 b(k)m(eyw)m(ords:)286 2262 y Fe(ftgkys)46 +b(alued)30 b(k)m(eyw)m(ords:)286 2262 y Ff(ftgkys)46 b(-)i(read)f(a)g(string)f(keyword)286 2375 y(ftpkls)g(-)i(write)e (\(append\))g(a)h(string)f(keyword)286 2488 y(ftikls)g(-)i(insert)e(a)h (string)g(keyword)286 2601 y(ftmkls)f(-)i(modify)e(the)h(value)f(of)h (an)h(existing)d(string)h(keyword)286 2714 y(ftukls)g(-)i(update)e(an)h (existing)f(keyword,)f(or)i(write)g(a)g(new)g(keyword)286 -2827 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3079 y Fi(These)41 +2827 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3079 y Fj(These)41 b(routines)f(will)h(transparen)m(tly)g(read,)j(write,)g(or)d(delete)h (a)f(long)g(string)g(v)-5 b(alue)41 b(in)g(the)g(FITS)f(\014le,)k(so)0 3192 y(programmers)36 b(in)g(general)h(do)f(not)h(ha)m(v)m(e)g(to)g(b)s @@ -4446,8 +6529,8 @@ (instead)g(to)g(write)f(long)h(strings.)40 b(This)28 b(routine)i(can)f(also)h(b)s(e)f(used)f(to)0 4255 y(write)j(ordinary)e (string)i(v)-5 b(alues)30 b(less)h(than)f(68)h(c)m(haracters)h(in)e -(length.)0 4544 y Fb(4.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)j -(Strings)e(in)f(Binary)h(T)-9 b(ables)0 4763 y Fi(CFITSIO)25 +(length.)0 4544 y Fc(4.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)j +(Strings)e(in)f(Binary)h(T)-9 b(ables)0 4763 y Fj(CFITSIO)25 b(supp)s(orts)g(2)i(w)m(a)m(ys)g(to)g(sp)s(ecify)f(that)i(a)f(c)m (haracter)h(column)e(in)g(a)h(binary)f(table)i(con)m(tains)f(an)g(arra) m(y)g(of)0 4876 y(\014xed-length)32 b(strings.)46 b(The)32 @@ -4471,9 +6554,9 @@ (strings.)47 b(This)31 b(con)m(v)m(en)m(tion)k(is)d(recognized)i(b)m(y) e(the)h(FITSIO)p eop end %%Page: 23 29 -TeXDict begin 23 28 bop 0 299 a Fg(4.12.)73 b(LOCAL)29 +TeXDict begin 23 28 bop 0 299 a Fh(4.12.)73 b(LOCAL)29 b(FITS)h(CONVENTIONS)f(SUPPOR)-8 b(TED)29 b(BY)i(FITSIO)1168 -b Fi(23)0 555 y(subroutines)40 b(that)h(read)g(or)g(write)g(strings)f +b Fj(23)0 555 y(subroutines)40 b(that)h(read)g(or)g(write)g(strings)f (in)h(binary)f(tables.)73 b(The)40 b(Binary)h(T)-8 b(able)42 b(de\014nition)e(do)s(cumen)m(t)0 668 y(sp)s(eci\014es)31 b(that)i(other)e(optional)i(c)m(haracters)g(ma)m(y)g(follo)m(w)g(the)e @@ -4481,8 +6564,8 @@ 781 y(this)j(lo)s(cal)i(con)m(v)m(en)m(tion)h(is)e(in)f(compliance)i (with)e(the)h(FITS)f(standard,)h(although)g(other)g(FITS)f(readers)h (are)0 894 y(not)31 b(required)e(to)i(recognize)h(this)f(con)m(v)m(en)m -(tion.)0 1183 y Fb(4.12.3)113 b(Keyw)m(ord)37 b(Units)h(Strings)0 -1402 y Fi(One)f(de\014ciency)h(of)g(the)g(curren)m(t)g(FITS)f(Standard) +(tion.)0 1183 y Fc(4.12.3)113 b(Keyw)m(ord)37 b(Units)h(Strings)0 +1402 y Fj(One)f(de\014ciency)h(of)g(the)g(curren)m(t)g(FITS)f(Standard) f(is)i(that)h(it)f(do)s(es)f(not)h(de\014ne)f(a)i(sp)s(eci\014c)e(con)m (v)m(en)m(tion)j(for)0 1515 y(recording)30 b(the)g(ph)m(ysical)h(units) f(of)g(a)g(k)m(eyw)m(ord)h(v)-5 b(alue.)41 b(The)30 b(TUNITn)f(k)m(eyw) @@ -4504,60 +6587,59 @@ h(commen)m(t)h(\014eld)e(delimiter)h(and)f(a)g(single)h(space)g(c)m (haracter.)41 b(The)0 2352 y(follo)m(wing)32 b(examples)f(illustrate)g (k)m(eyw)m(ords)g(that)g(use)f(this)g(con)m(v)m(en)m(tion:)0 -2602 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f +2602 y Ff(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f (time)0 2715 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e (heliocentric)g(velocity)0 2828 y(LAMBDA)94 b(=)763 b(5400.)47 b(/)g([angstrom])e(central)h(wavelength)0 2941 y(FLUX)190 b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h -(flux)0 3191 y Fi(In)28 b(general,)h(the)g(units)e(named)h(in)g(the)h +(flux)0 3191 y Fj(In)28 b(general,)h(the)g(units)e(named)h(in)g(the)h (IA)m(U\(1988\))i(St)m(yle)e(Guide)f(are)h(recommended,)f(with)g(the)h (main)f(excep-)0 3304 y(tion)j(that)g(the)f(preferred)g(unit)f(for)i (angle)g(is)f('deg')i(for)e(degrees.)0 3464 y(The)24 b(FTPUNT)g(and)g(FTGUNT)h(subroutines)f(in)g(FITSIO)f(write)i(and)f (read,)i(resp)s(ectiv)m(ely)-8 b(,)28 b(the)c(k)m(eyw)m(ord)h(unit)0 3577 y(strings)30 b(in)g(an)h(existing)g(k)m(eyw)m(ord.)0 -3866 y Fb(4.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)k(for)f -(Extended)h(Keyw)m(ord)f(Names)0 4085 y Fi(CFITSIO)k(supp)s(orts)g(the) +3866 y Fc(4.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)k(for)f +(Extended)h(Keyw)m(ord)f(Names)0 4085 y Fj(CFITSIO)k(supp)s(orts)g(the) i(HIERAR)m(CH)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tion)i(whic)m(h)e(allo)m -(ws)h(k)m(eyw)m(ord)f(names)g(that)h(are)0 4198 y(longer)34 -b(then)e(8)i(c)m(haracters)g(and)f(ma)m(y)h(con)m(tain)g(the)f(full)g -(range)g(of)h(prin)m(table)f(ASCI)s(I)e(text)j(c)m(haracters.)51 -b(This)0 4311 y(con)m(v)m(en)m(tion)39 b(w)m(as)f(dev)m(elop)s(ed)f(at) -h(the)f(Europ)s(ean)f(Southern)g(Observ)-5 b(atory)37 -b(\(ESO\))f(to)i(supp)s(ort)d(hierarc)m(hical)0 4424 -y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 4674 y Fe(HIERARCH)46 -b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j(Focus)e(position)0 -4924 y Fi(Basically)-8 b(,)55 b(this)47 b(con)m(v)m(en)m(tion)j(uses)d -(the)h(FITS)f(k)m(eyw)m(ord)h('HIERAR)m(CH')h(to)f(indicate)h(that)f -(this)f(con)m(v)m(en-)0 5036 y(tion)e(is)f(b)s(eing)g(used,)j(then)d -(the)g(actual)i(k)m(eyw)m(ord)e(name)h(\()p Fe('ESO)i(INS)f(FOCU)h -(POS')c Fi(in)h(this)g(example\))h(b)s(e-)0 5149 y(gins)40 -b(in)f(column)g(10)i(and)e(can)h(con)m(tain)g(an)m(y)g(prin)m(table)g -(ASCI)s(I)e(text)j(c)m(haracters,)i(including)d(spaces.)68 -b(The)0 5262 y(equals)44 b(sign)h(marks)e(the)h(end)g(of)g(the)g(k)m -(eyw)m(ord)h(name)f(and)f(is)i(follo)m(w)m(ed)g(b)m(y)f(the)g(usual)g -(v)-5 b(alue)45 b(and)e(com-)0 5375 y(men)m(t)31 b(\014elds)f(just)g -(as)h(in)f(standard)g(FITS)g(k)m(eyw)m(ords.)41 b(F)-8 -b(urther)30 b(details)i(of)f(this)f(con)m(v)m(en)m(tion)j(are)e -(describ)s(ed)e(at)0 5488 y(h)m(ttp://\014ts.gsfc.nasa.go)m -(v/registry/hierarc)m(h)p 1659 5488 28 4 v 38 w(k)m(eyw)m(ord.h)m(tml)f -(and)f(in)g(Section)g(4.4)h(of)g(the)f(ESO)f(Data)j(In)m(ter-)0 -5601 y(face)c(Con)m(trol)f(Do)s(cumen)m(t)h(that)g(is)f(link)m(ed)g(to) -g(from)g(h)m(ttp://arc)m(hiv)m(e.eso.org/cms/to)s(ols-)q(do)s(cumen)m -(tati)q(on/eso)q(-)0 5714 y(data-in)m(terface-con)m(trol.h)m(tml.)p +(ws)h(k)m(eyw)m(ord)f(names)g(that)h(are)0 4198 y(longer)35 +b(than)f(8)h(c)m(haracters.)54 b(This)34 b(con)m(v)m(en)m(tion)i(w)m +(as)f(dev)m(elop)s(ed)g(at)g(the)g(Europ)s(ean)e(Southern)g(Observ)-5 +b(atory)0 4311 y(\(ESO\))34 b(and)g(allo)m(ws)h(c)m(haracters)h +(consisting)f(of)f(digits)h(0-9,)i(upp)s(er)32 b(case)j(letters)h(A-Z,) +e(the)h(dash)e('-')i(and)f(the)0 4424 y(underscore)j(')p +493 4424 28 4 v 33 w('.)63 b(The)37 b(comp)s(onen)m(ts)h(of)g(hierarc)m +(hical)h(k)m(eyw)m(ords)f(are)g(separated)g(b)m(y)g(a)g(single)g(ASCI)s +(I)e(space)0 4537 y(c)m(harater.)42 b(F)-8 b(or)31 b(instance:)0 +4787 y Ff(HIERARCH)46 b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j +(Focus)e(position)0 5036 y Fj(Basically)-8 b(,)42 b(this)c(con)m(v)m +(en)m(tion)h(uses)f(the)f(FITS)g(k)m(eyw)m(ord)h('HIERAR)m(CH')g(to)h +(indicate)f(that)g(this)g(con)m(v)m(en)m(tion)0 5149 +y(is)j(b)s(eing)f(used,)j(then)d(the)h(actual)h(k)m(eyw)m(ord)f(name)g +(\()p Ff('ESO)47 b(INS)g(FOCU)g(POS')39 b Fj(in)i(this)f(example\))i(b) +s(egins)e(in)0 5262 y(column)h(10.)74 b(The)41 b(equals)g(sign)g(marks) +g(the)g(end)g(of)g(the)h(k)m(eyw)m(ord)f(name)g(and)g(is)g(follo)m(w)m +(ed)i(b)m(y)e(the)g(usual)0 5375 y(v)-5 b(alue)37 b(and)e(commen)m(t)j +(\014elds)e(just)f(as)i(in)f(standard)f(FITS)h(k)m(eyw)m(ords.)59 +b(F)-8 b(urther)36 b(details)h(of)g(this)f(con)m(v)m(en)m(tion)0 +5488 y(are)30 b(describ)s(ed)f(at)i(h)m(ttp://\014ts.gsfc.nasa.go)m +(v/registry/hierarc)m(h)p 2323 5488 V 38 w(k)m(eyw)m(ord.h)m(tml)g(and) +f(in)g(Section)g(4.4)i(of)e(the)0 5601 y(ESO)40 b(Data)i(In)m(terface)g +(Con)m(trol)g(Do)s(cumen)m(t)g(that)f(is)g(link)m(ed)g(to)h(from)e(h)m +(ttp://arc)m(hiv)m(e.eso.org/cms/to)t(ols-)0 5714 y(do)s(cumen)m +(tation/eso-data-in)m(terface-con)m(t)q(rol.h)m(tml.)p eop end %%Page: 24 30 -TeXDict begin 24 29 bop 0 299 a Fi(24)1277 b Fg(CHAPTER)29 +TeXDict begin 24 29 bop 0 299 a Fj(24)1277 b Fh(CHAPTER)29 b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(This)43 b(con)m(v)m(en)m(tion)k(allo)m(ws)f(a)e(m)m(uc)m(h)h -(broader)e(range)i(of)f(k)m(eyw)m(ord)h(names)f(than)h(is)f(allo)m(w)m -(ed)i(b)m(y)e(the)h(FITS)0 668 y(Standard.)40 b(Here)30 -b(are)h(more)g(examples)g(of)f(suc)m(h)g(k)m(eyw)m(ords:)0 -941 y Fe(HIERARCH)46 b(LongKeyword)e(=)k(47.5)e(/)i(Keyword)e(has)h(>)g -(8)g(characters,)e(and)i(mixed)f(case)0 1054 y(HIERARCH)g(XTE$TEMP)f(=) -j(98.6)e(/)i(Keyword)d(contains)h(the)h('$')g(character)0 -1167 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/)h(Keyword)d -(contains)h(embedded)f(spaces)0 1440 y Fi(CFITSIO)40 +555 y Fj(This)h(con)m(v)m(en)m(tion)i(allo)m(ws)g(a)f(broader)f(range)h +(of)g(k)m(eyw)m(ord)f(names)h(than)f(is)h(allo)m(w)m(ed)h(b)m(y)e(the)h +(FITS)f(Standard.)0 668 y(Here)f(are)g(more)f(examples)h(of)g(suc)m(h)f +(k)m(eyw)m(ords:)0 941 y Ff(HIERARCH)46 b(LONGKEYWORD)e(=)k(47.5)e(/)i +(Keyword)e(has)h(>)g(8)g(characters)0 1054 y(HIERARCH)f(LONG-KEY_WORD2) +d(=)48 b(52.3)f(/)g(Long)g(keyword)e(with)i(hyphen,)f(underscore)f(and) +i(digit)0 1167 y(HIERARCH)f(EARTH)g(IS)h(A)h(STAR)e(=)i(F)f(/)h +(Keyword)d(contains)h(embedded)f(spaces)0 1440 y Fj(CFITSIO)40 b(will)i(transparen)m(tly)g(read)g(and)f(write)g(these)i(k)m(eyw)m (ords,)i(so)d(application)h(programs)e(do)g(not)h(in)0 1553 y(general)33 b(need)f(to)h(kno)m(w)f(an)m(ything)h(ab)s(out)f(the) @@ -4584,396 +6666,391 @@ (ro)s(om)h(for)f(b)s(oth)g(the)0 2569 y(k)m(eyw)m(ord)k(name)f(and)f (the)i(k)m(eyw)m(ord)f(v)-5 b(alue)32 b(on)f(the)h(80-c)m(haracter)h (card,)f(except)g(for)f(string-v)-5 b(alued)32 b(k)m(eyw)m(ords)0 -2682 y(whic)m(h)h(are)g(simply)f(truncated)h(so)g(that)h(the)f(closing) -h(quote)g(c)m(haracter)g(falls)f(in)g(column)g(80.)49 -b(In)32 b(the)h(curren)m(t)0 2795 y(implemen)m(tation,)e(CFITSIO)c -(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)h(when)e(writing)h(the) -g(k)m(eyw)m(ord)g(name,)g(but)f(it)0 2908 y(is)d(case-insensitiv)m(e)i -(when)d(reading)h(or)g(searc)m(hing)h(for)f(a)g(k)m(eyw)m(ord.)40 -b(The)24 b(curren)m(t)h(implemen)m(tation)h(allo)m(ws)h(an)m(y)0 -3021 y(ASCI)s(I)i(text)j(c)m(haracter)h(\(ASCI)s(I)c(32)j(to)f(ASCI)s -(I)f(126\))i(in)f(the)g(k)m(eyw)m(ord)g(name)g(except)h(for)e(the)h -('=')g(c)m(haracter.)0 3134 y(A)f(space)h(is)g(also)g(required)f(on)g -(either)h(side)f(of)h(the)f(equal)h(sign.)0 3483 y Fd(4.13)136 -b(Optimizing)45 b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t(cessing)g(Sp)t -(eed)0 3736 y Fi(CFITSIO)22 b(has)h(b)s(een)f(carefully)i(designed)f -(to)h(obtain)g(the)f(highest)h(p)s(ossible)e(sp)s(eed)h(when)f(reading) -h(and)g(writing)0 3849 y(FITS)33 b(\014les.)51 b(In)33 +2682 y(whic)m(h)f(are)h(simply)e(truncated)i(so)f(that)h(the)f(closing) +i(quote)f(c)m(haracter)h(falls)e(in)g(column)g(80.)45 +b(A)31 b(space)h(is)f(also)0 2795 y(required)f(on)g(either)h(side)f(of) +h(the)f(equal)h(sign.)0 3144 y Fe(4.13)136 b(Optimizing)45 +b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t(cessing)g(Sp)t(eed)0 +3397 y Fj(CFITSIO)22 b(has)h(b)s(een)f(carefully)i(designed)f(to)h +(obtain)g(the)f(highest)h(p)s(ossible)e(sp)s(eed)h(when)f(reading)h +(and)g(writing)0 3510 y(FITS)33 b(\014les.)51 b(In)33 b(order)h(to)g(ac)m(hiev)m(e)i(the)e(b)s(est)g(p)s(erformance,)g(ho)m (w)m(ev)m(er,)i(application)g(programmers)d(m)m(ust)h(b)s(e)0 -3962 y(careful)24 b(to)h(call)g(the)f(CFITSIO)f(routines)g +3623 y(careful)24 b(to)h(call)g(the)f(CFITSIO)f(routines)g (appropriately)i(and)e(in)h(an)f(e\016cien)m(t)j(sequence;)h -(inappropriate)c(usage)0 4075 y(of)31 b(CFITSIO)d(routines)j(can)f +(inappropriate)c(usage)0 3736 y(of)31 b(CFITSIO)d(routines)j(can)f (greatly)i(slo)m(w)f(do)m(wn)f(the)h(execution)g(sp)s(eed)f(of)g(a)h -(program.)0 4235 y(The)f(maxim)m(um)h(p)s(ossible)f(I/O)h(sp)s(eed)f +(program.)0 3896 y(The)f(maxim)m(um)h(p)s(ossible)f(I/O)h(sp)s(eed)f (of)h(CFITSIO)e(dep)s(ends)g(of)i(course)g(on)f(the)h(t)m(yp)s(e)g(of)g -(computer)g(system)0 4348 y(that)j(it)g(is)g(running)d(on.)50 +(computer)g(system)0 4009 y(that)j(it)g(is)g(running)d(on.)50 b(T)-8 b(o)34 b(get)h(a)f(general)g(idea)g(of)g(what)f(data)i(I/O)e(sp) -s(eeds)f(are)i(p)s(ossible)f(on)h(a)g(particular)0 4461 +s(eeds)f(are)i(p)s(ossible)f(on)h(a)g(particular)0 4122 y(mac)m(hine,)j(build)e(the)g(sp)s(eed.c)g(program)g(that)h(is)g (distributed)e(with)h(CFITSIO)f(\(t)m(yp)s(e)i('mak)m(e)g(sp)s(eed')f -(in)g(the)0 4574 y(CFITSIO)e(directory\).)54 b(This)33 +(in)g(the)0 4235 y(CFITSIO)e(directory\).)54 b(This)33 b(diagnostic)j(program)e(measures)h(the)f(sp)s(eed)g(of)g(writing)h -(and)f(reading)g(bac)m(k)i(a)0 4687 y(test)31 b(FITS)f(image,)i(a)f -(binary)e(table,)j(and)d(an)i(ASCI)s(I)e(table.)0 4847 +(and)f(reading)g(bac)m(k)i(a)0 4348 y(test)31 b(FITS)f(image,)i(a)f +(binary)e(table,)j(and)d(an)i(ASCI)s(I)e(table.)0 4508 y(The)k(follo)m(wing)h(2)g(sections)g(pro)m(vide)g(some)f(bac)m (kground)g(on)h(ho)m(w)f(CFITSIO)f(in)m(ternally)i(manages)g(the)f -(data)0 4960 y(I/O)g(and)g(describ)s(es)f(some)i(strategies)h(that)f +(data)0 4621 y(I/O)g(and)g(describ)s(es)f(some)i(strategies)h(that)f (ma)m(y)g(b)s(e)e(used)h(to)h(optimize)g(the)g(pro)s(cessing)f(sp)s -(eed)f(of)h(soft)m(w)m(are)0 5073 y(that)e(uses)f(CFITSIO.)0 -5379 y Fb(4.13.1)113 b(Bac)m(kground)38 b(Information:)50 -b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 5601 y -Fi(Man)m(y)22 b(CFITSIO)e(op)s(erations)i(in)m(v)m(olv)m(e)i +(eed)f(of)h(soft)m(w)m(are)0 4734 y(that)e(uses)f(CFITSIO.)0 +5040 y Fc(4.13.1)113 b(Bac)m(kground)38 b(Information:)50 +b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 5262 y +Fj(Man)m(y)22 b(CFITSIO)e(op)s(erations)i(in)m(v)m(olv)m(e)i (transferring)d(only)h(a)g(small)g(n)m(um)m(b)s(er)f(of)h(b)m(ytes)g -(to)g(or)g(from)f(the)h(FITS)f(\014le)0 5714 y(\(e.g,)31 +(to)g(or)g(from)f(the)h(FITS)f(\014le)0 5375 y(\(e.g,)31 b(reading)e(a)g(k)m(eyw)m(ord,)h(or)f(writing)g(a)g(ro)m(w)g(in)f(a)h (table\);)i(it)f(w)m(ould)e(b)s(e)g(v)m(ery)i(ine\016cien)m(t)g(to)f -(ph)m(ysically)h(read)p eop end +(ph)m(ysically)h(read)0 5488 y(or)i(write)h(suc)m(h)f(small)g(blo)s(c)m +(ks)h(of)f(data)h(directly)g(in)f(the)g(FITS)g(\014le)g(on)g(disk,)h +(therefore)f(CFITSIO)f(main)m(tains)0 5601 y(a)38 b(set)g(of)g(in)m +(ternal)h(Input{Output)c(\(IO\))j(bu\013ers)f(in)g(RAM)h(memory)g(that) +g(eac)m(h)h(con)m(tain)g(one)f(FITS)f(blo)s(c)m(k)0 5714 +y(\(2880)27 b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25 +b(CFITSIO)f(needs)g(to)i(access)g(data)g(in)f(the)g(FITS)f(\014le,)j +(it)e(\014rst)f(transfers)h(the)p eop end %%Page: 25 31 -TeXDict begin 25 30 bop 0 299 a Fg(4.13.)73 b(OPTIMIZING)29 +TeXDict begin 25 30 bop 0 299 a Fh(4.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 -b Fi(25)0 555 y(or)32 b(write)h(suc)m(h)f(small)g(blo)s(c)m(ks)h(of)f -(data)h(directly)g(in)f(the)g(FITS)g(\014le)g(on)g(disk,)h(therefore)f -(CFITSIO)f(main)m(tains)0 668 y(a)38 b(set)g(of)g(in)m(ternal)h -(Input{Output)c(\(IO\))j(bu\013ers)f(in)g(RAM)h(memory)g(that)g(eac)m -(h)h(con)m(tain)g(one)f(FITS)f(blo)s(c)m(k)0 781 y(\(2880)27 -b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25 b(CFITSIO)f(needs)g(to)i -(access)g(data)g(in)f(the)g(FITS)f(\014le,)j(it)e(\014rst)f(transfers)h -(the)0 894 y(FITS)30 b(blo)s(c)m(k)h(con)m(taining)h(those)f(b)m(ytes)g -(in)m(to)g(one)g(of)f(the)h(IO)f(bu\013ers)f(in)h(memory)-8 -b(.)42 b(The)30 b(next)g(time)h(CFITSIO)0 1007 y(needs)36 +b Fj(25)0 555 y(FITS)30 b(blo)s(c)m(k)h(con)m(taining)h(those)f(b)m +(ytes)g(in)m(to)g(one)g(of)f(the)h(IO)f(bu\013ers)f(in)h(memory)-8 +b(.)42 b(The)30 b(next)g(time)h(CFITSIO)0 668 y(needs)36 b(to)g(access)i(b)m(ytes)e(in)g(the)g(same)h(blo)s(c)m(k)f(it)h(can)f (then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h(than)g(using)g -(a)0 1120 y(m)m(uc)m(h)c(slo)m(w)m(er)i(system)e(disk)g(access)h +(a)0 781 y(m)m(uc)m(h)c(slo)m(w)m(er)i(system)e(disk)g(access)h (routine.)46 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5 b(ailable)35 b(IO)d(bu\013ers)f(is)h(determined)g(b)m(y)g(the)0 -1233 y(NIOBUF)f(parameter)g(\(in)f(\014tsio2.h\))h(and)f(is)h(curren)m -(tly)f(set)h(to)g(40.)0 1393 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h +894 y(NIOBUF)f(parameter)g(\(in)f(\014tsio2.h\))h(and)f(is)h(curren)m +(tly)f(set)h(to)g(40.)0 1054 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h (writes)g(data)g(it)h(\014rst)e(c)m(hec)m(ks)i(to)g(see)f(if)g(that)g (blo)s(c)m(k)h(of)f(the)g(FITS)f(\014le)g(is)h(already)0 -1506 y(loaded)33 b(in)m(to)g(one)f(of)g(the)g(IO)g(bu\013ers.)44 +1167 y(loaded)33 b(in)m(to)g(one)f(of)g(the)g(IO)g(bu\013ers.)44 b(If)32 b(not,)h(and)e(if)h(there)g(is)g(an)g(empt)m(y)h(IO)e(bu\013er) -g(a)m(v)-5 b(ailable,)35 b(then)d(it)h(will)0 1619 y(load)g(that)h(blo) +g(a)m(v)-5 b(ailable,)35 b(then)d(it)h(will)0 1280 y(load)g(that)h(blo) s(c)m(k)f(in)m(to)g(the)g(IO)g(bu\013er)e(\(when)h(reading)h(a)g(FITS)f (\014le\))h(or)g(will)g(initialize)i(a)e(new)f(blo)s(c)m(k)i(\(when)0 -1732 y(writing)j(to)h(a)g(FITS)f(\014le\).)62 b(If)37 +1393 y(writing)j(to)h(a)g(FITS)f(\014le\).)62 b(If)37 b(all)h(the)g(IO)e(bu\013ers)h(are)g(already)h(full,)h(it)f(m)m(ust)g -(decide)f(whic)m(h)g(one)h(to)g(reuse)0 1844 y(\(generally)c(the)f(one) +(decide)f(whic)m(h)g(one)h(to)g(reuse)0 1506 y(\(generally)c(the)f(one) g(that)g(has)f(b)s(een)g(accessed)i(least)f(recen)m(tly\),)i(and)d (\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)f(if)g(it)0 -1957 y(has)e(b)s(een)g(mo)s(di\014ed)f(b)s(efore)h(loading)h(the)g(new) -f(blo)s(c)m(k.)0 2118 y(The)g(one)g(ma)5 b(jor)30 b(exception)i(to)f +1619 y(has)e(b)s(een)g(mo)s(di\014ed)f(b)s(efore)h(loading)h(the)g(new) +f(blo)s(c)m(k.)0 1779 y(The)g(one)g(ma)5 b(jor)30 b(exception)i(to)f (the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g(whenev)m(er)g(a)g (large)i(con)m(tiguous)f(set)g(of)f(b)m(ytes)h(are)0 -2230 y(accessed,)37 b(as)d(migh)m(t)i(o)s(ccur)e(when)f(reading)i(or)f +1892 y(accessed,)37 b(as)d(migh)m(t)i(o)s(ccur)e(when)f(reading)i(or)f (writing)g(a)h(FITS)f(image.)54 b(In)34 b(this)g(case)h(CFITSIO)e(b)m -(ypasses)0 2343 y(the)i(in)m(ternal)h(IO)f(bu\013ers)f(and)g(simply)h +(ypasses)0 2005 y(the)i(in)m(ternal)h(IO)f(bu\013ers)f(and)g(simply)h (reads)g(or)g(writes)h(the)f(desired)g(b)m(ytes)g(directly)h(in)f(the)g -(disk)g(\014le)g(with)0 2456 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev) +(disk)g(\014le)g(with)0 2118 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev) m(el)i(\014le)d(read)g(or)h(write)f(routine.)58 b(The)36 b(minim)m(um)g(threshold)f(for)h(the)h(n)m(um)m(b)s(er)e(of)0 -2569 y(b)m(ytes)27 b(to)g(read)f(or)g(write)g(this)g(w)m(a)m(y)i(is)e +2230 y(b)m(ytes)27 b(to)g(read)f(or)g(write)g(this)g(w)m(a)m(y)i(is)e (set)g(b)m(y)h(the)f(MINDIRECT)g(parameter)g(and)g(is)g(curren)m(tly)g -(set)h(to)g(3)g(FITS)0 2682 y(blo)s(c)m(ks)36 b(=)g(8640)i(b)m(ytes.)58 +(set)h(to)g(3)g(FITS)0 2343 y(blo)s(c)m(ks)36 b(=)g(8640)i(b)m(ytes.)58 b(This)35 b(is)h(the)g(most)g(e\016cien)m(t)i(w)m(a)m(y)f(to)g(read)e (or)h(write)h(large)g(c)m(h)m(unks)e(of)h(data.)59 b(Note)0 -2795 y(that)34 b(this)f(fast)h(direct)g(IO)f(pro)s(cess)f(is)i(not)f +2456 y(that)34 b(this)f(fast)h(direct)g(IO)f(pro)s(cess)f(is)i(not)f (applicable)i(when)d(accessing)j(columns)e(of)h(data)g(in)f(a)g(FITS)g -(table)0 2908 y(b)s(ecause)f(the)h(b)m(ytes)g(are)g(generally)g(not)g +(table)0 2569 y(b)s(ecause)f(the)h(b)m(ytes)g(are)g(generally)g(not)g (con)m(tiguous)g(since)g(they)g(are)f(in)m(terlea)m(v)m(ed)j(b)m(y)e -(the)f(other)h(columns)f(of)0 3021 y(data)i(in)e(the)h(table.)49 +(the)f(other)h(columns)f(of)0 2682 y(data)i(in)e(the)h(table.)49 b(This)33 b(explains)g(wh)m(y)f(the)h(sp)s(eed)f(for)h(accessing)h (FITS)e(tables)i(is)f(generally)h(slo)m(w)m(er)g(than)0 -3134 y(accessing)e(FITS)e(images.)0 3294 y(Giv)m(en)i(this)g(bac)m +2795 y(accessing)e(FITS)e(images.)0 2955 y(Giv)m(en)i(this)g(bac)m (kground)f(information,)h(the)g(general)g(strategy)h(for)e(e\016cien)m -(tly)i(accessing)g(FITS)e(\014les)g(should)0 3407 y(no)m(w)36 +(tly)i(accessing)g(FITS)e(\014les)g(should)0 3068 y(no)m(w)36 b(b)s(e)g(apparen)m(t:)52 b(when)35 b(dealing)i(with)f(FITS)g(images,)j (read)d(or)g(write)g(large)i(c)m(h)m(unks)e(of)g(data)h(at)g(a)f(time)0 -3520 y(so)30 b(that)h(the)f(direct)h(IO)e(mec)m(hanism)h(will)h(b)s(e)e +3181 y(so)30 b(that)h(the)f(direct)h(IO)e(mec)m(hanism)h(will)h(b)s(e)e (in)m(v)m(ok)m(ed;)j(when)d(accessing)j(FITS)d(headers)h(or)g(FITS)f -(tables,)i(on)0 3633 y(the)k(other)g(hand,)g(once)g(a)g(particular)h +(tables,)i(on)0 3294 y(the)k(other)g(hand,)g(once)g(a)g(particular)h (FITS)e(blo)s(c)m(k)h(has)f(b)s(een)g(loading)i(in)m(to)g(one)f(of)g -(the)f(IO)h(bu\013ers,)g(try)f(to)0 3745 y(access)39 +(the)f(IO)h(bu\013ers,)g(try)f(to)0 3407 y(access)39 b(all)f(the)f(needed)g(information)h(in)f(that)h(blo)s(c)m(k)g(b)s (efore)f(it)h(gets)g(\015ushed)d(out)j(of)g(the)f(IO)g(bu\013er.)60 -b(It)38 b(is)0 3858 y(imp)s(ortan)m(t)31 b(to)h(a)m(v)m(oid)g(the)f +b(It)38 b(is)0 3520 y(imp)s(ortan)m(t)31 b(to)h(a)m(v)m(oid)g(the)f (situation)h(where)f(the)g(same)g(FITS)f(blo)s(c)m(k)i(is)f(b)s(eing)f -(read)h(then)g(\015ushed)e(from)h(a)h(IO)0 3971 y(bu\013er)e(m)m -(ultiple)i(times.)0 4131 y(The)f(follo)m(wing)i(section)f(giv)m(es)h +(read)h(then)g(\015ushed)e(from)h(a)h(IO)0 3633 y(bu\013er)e(m)m +(ultiple)i(times.)0 3793 y(The)f(follo)m(wing)i(section)f(giv)m(es)h (more)e(sp)s(eci\014c)h(suggestions)g(for)f(optimizing)i(the)e(use)g -(of)h(CFITSIO.)0 4430 y Fb(4.13.2)113 b(Optimization)38 -b(Strategies)0 4650 y Fi(1.)43 b(Because)32 b(the)f(data)g(in)g(FITS)f +(of)h(CFITSIO.)0 4185 y Fc(4.13.2)113 b(Optimization)38 +b(Strategies)0 4425 y Fj(1.)43 b(Because)32 b(the)f(data)g(in)g(FITS)f (\014les)h(is)g(alw)m(a)m(ys)h(stored)f(in)g("big-endian")h(b)m(yte)f -(order,)g(where)f(the)h(\014rst)f(b)m(yte)0 4763 y(of)g(n)m(umeric)h(v) +(order,)g(where)f(the)h(\014rst)f(b)m(yte)0 4538 y(of)g(n)m(umeric)h(v) -5 b(alues)30 b(con)m(tains)i(the)e(most)h(signi\014can)m(t)g(bits)f (and)g(the)g(last)i(b)m(yte)e(con)m(tains)i(the)e(least)i(signi\014can) -m(t)0 4876 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h +m(t)0 4650 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h (the)h(b)m(ytes)f(when)f(reading)h(or)g(writing)g(FITS)g(\014les)g -(when)f(running)0 4989 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i +(when)f(running)0 4763 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i (Lin)m(ux)d(and)g(Microsoft)i(Windo)m(ws)e(op)s(erating)h(systems)g -(running)d(on)j(PCs)0 5102 y(with)c(x86)h(CPUs\).)0 5262 +(running)d(on)j(PCs)0 4876 y(with)c(x86)h(CPUs\).)0 5036 y(On)i(fairly)h(new)f(CPUs)g(that)i(supp)s(ort)d("SSSE3")h(mac)m(hine)h (instructions)g(\(e.g.,)i(starting)f(with)e(In)m(tel)i(Core)f(2)0 -5375 y(CPUs)21 b(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s(eginning)g +5149 y(CPUs)21 b(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s(eginning)g (in)h(2011\))i(signi\014can)m(tly)f(faster)f(4-b)m(yte)h(and)e(8-b)m -(yte)i(sw)m(apping)0 5488 y(algorithms)k(are)g(a)m(v)-5 +(yte)i(sw)m(apping)0 5262 y(algorithms)k(are)g(a)m(v)-5 b(ailable.)42 b(These)26 b(faster)h(b)m(yte)g(sw)m(apping)f(functions)g (are)h(not)g(used)e(b)m(y)i(default)f(in)g(CFITSIO)0 -5601 y(\(b)s(ecause)c(of)f(the)h(p)s(oten)m(tial)g(co)s(de)g(p)s +5375 y(\(b)s(ecause)c(of)f(the)h(p)s(oten)m(tial)g(co)s(de)g(p)s (ortablilit)m(y)g(issues\),)i(but)c(users)h(can)g(enable)h(them)f(on)h -(supp)s(orted)d(platforms)0 5714 y(b)m(y)38 b(adding)f(the)h +(supp)s(orted)d(platforms)0 5488 y(b)m(y)38 b(adding)f(the)h (appropriate)f(compiler)i(\015ags)e(\(-mssse3)i(with)e(gcc)i(or)f(icc)g -(on)g(lin)m(ux\))g(when)e(compiling)j(the)p eop end +(on)g(lin)m(ux\))g(when)e(compiling)j(the)0 5601 y(sw)m(appro)s(c.c)30 +b(source)g(\014le,)g(whic)m(h)g(will)g(allo)m(w)i(the)e(compiler)g(to)h +(generate)h(co)s(de)e(using)f(the)h(SSSE3)f(instruction)0 +5714 y(set.)41 b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(do)g +(this)f(is)g(to)h(con\014gure)f(the)g(CFITSIO)f(library)h(with)g(the)g +(follo)m(wing)i(command:)p eop end %%Page: 26 32 -TeXDict begin 26 31 bop 0 299 a Fi(26)1277 b Fg(CHAPTER)29 -b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(sw)m(appro)s(c.c)f(source)g(\014le,)g(whic)m(h)g(will)g(allo)m -(w)i(the)e(compiler)g(to)h(generate)h(co)s(de)e(using)f(the)h(SSSE3)f -(instruction)0 668 y(set.)41 b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f -(to)g(do)g(this)f(is)g(to)h(con\014gure)f(the)g(CFITSIO)f(library)h -(with)g(the)g(follo)m(wing)i(command:)95 894 y Fe(>)96 -b(./configure)44 b(--enable-ssse3)0 1121 y Fi(Note,)37 -b(ho)m(w)m(ev)m(er,)h(that)d(a)g(binary)f(executable)j(\014le)e(that)g -(is)g(created)h(using)e(these)h(faster)g(functions)g(will)g(only)0 -1233 y(run)c(on)h(mac)m(hines)g(that)h(supp)s(ort)d(the)i(SSSE3)f(mac)m -(hine)i(instructions.)45 b(It)33 b(will)f(crash)g(on)g(mac)m(hines)g -(that)h(do)0 1346 y(not)e(supp)s(ort)d(them.)0 1507 y(F)-8 -b(or)36 b(faster)f(2-b)m(yte)i(sw)m(aps)e(on)g(virtually)g(all)h -(x86-64)h(CPUs)e(\(ev)m(en)h(those)g(that)f(do)g(not)h(supp)s(ort)d -(SSSE3\),)j(a)0 1619 y(v)-5 b(arian)m(t)26 b(using)e(only)g(SSE2)g -(instructions)h(exists.)39 b(SSE2)24 b(is)h(enabled)f(b)m(y)h(default)g -(on)f(x86)p 3066 1619 28 4 v 34 w(64)h(CPUs)f(with)h(64-bit)0 -1732 y(op)s(erating)30 b(systems)f(\(and)g(is)g(also)i(automatically)h +TeXDict begin 26 31 bop 0 299 a Fj(26)1277 b Fh(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)95 +555 y Ff(>)96 b(./configure)44 b(--enable-ssse3)0 819 +y Fj(Note,)37 b(ho)m(w)m(ev)m(er,)h(that)d(a)g(binary)f(executable)j +(\014le)e(that)g(is)g(created)h(using)e(these)h(faster)g(functions)g +(will)g(only)0 932 y(run)c(on)h(mac)m(hines)g(that)h(supp)s(ort)d(the)i +(SSSE3)f(mac)m(hine)i(instructions.)45 b(It)33 b(will)f(crash)g(on)g +(mac)m(hines)g(that)h(do)0 1045 y(not)e(supp)s(ort)d(them.)0 +1205 y(F)-8 b(or)36 b(faster)f(2-b)m(yte)i(sw)m(aps)e(on)g(virtually)g +(all)h(x86-64)h(CPUs)e(\(ev)m(en)h(those)g(that)f(do)g(not)h(supp)s +(ort)d(SSSE3\),)j(a)0 1318 y(v)-5 b(arian)m(t)26 b(using)e(only)g(SSE2) +g(instructions)h(exists.)39 b(SSE2)24 b(is)h(enabled)f(b)m(y)h(default) +g(on)f(x86)p 3066 1318 28 4 v 34 w(64)h(CPUs)f(with)h(64-bit)0 +1431 y(op)s(erating)30 b(systems)f(\(and)g(is)g(also)i(automatically)h (enabled)d(b)m(y)g(the)g({enable-ssse3)i(\015ag\).)41 -b(When)30 b(running)d(on)0 1845 y(x86)p 143 1845 V 34 +b(When)30 b(running)d(on)0 1544 y(x86)p 143 1544 V 34 w(64)k(CPUs)g(with)f(32-bit)i(op)s(erating)g(systems,)f(these)g(faster) h(2-b)m(yte)g(sw)m(apping)f(algorithms)g(are)h(not)f(used)0 -1958 y(b)m(y)f(default)h(in)f(CFITSIO,)f(but)h(can)g(b)s(e)g(enabled)g -(explicitly)i(with:)0 2184 y Fe(./configure)45 b(--enable-sse2)0 -2411 y Fi(Preliminary)f(testing)h(indicates)g(that)g(these)f(SSSE3)f +1657 y(b)m(y)f(default)h(in)f(CFITSIO,)f(but)h(can)g(b)s(e)g(enabled)g +(explicitly)i(with:)0 1921 y Ff(./configure)45 b(--enable-sse2)0 +2185 y Fj(Preliminary)f(testing)h(indicates)g(that)g(these)f(SSSE3)f (and)g(SSE2)g(based)h(b)m(yte-sw)m(apping)h(algorithms)g(can)0 -2524 y(b)s(o)s(ost)31 b(the)h(CFITSIO)e(p)s(erformance)h(when)f +2298 y(b)s(o)s(ost)31 b(the)h(CFITSIO)e(p)s(erformance)h(when)f (reading)i(or)f(writing)h(FITS)f(images)h(b)m(y)g(20\045)g(-)g(30\045)g -(or)f(more.)45 b(It)0 2636 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho) +(or)f(more.)45 b(It)0 2411 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho) m(w)m(ev)m(er,)h(that)d(compiler)g(optimization)i(m)m(ust)e(b)s(e)f -(turned)f(on)i(\(e.g.,)j(b)m(y)d(using)f(the)0 2749 y(-O1)f(or)g(-O2)g +(turned)f(on)i(\(e.g.,)j(b)m(y)d(using)f(the)0 2524 y(-O1)f(or)g(-O2)g (\015ags)g(in)g(gcc\))h(when)e(building)g(programs)h(that)g(use)g (these)g(fast)g(b)m(yte-sw)m(apping)h(algorithms)f(in)0 -2862 y(order)d(to)h(reap)f(the)h(full)f(b)s(ene\014t)g(of)g(the)h +2636 y(order)d(to)h(reap)f(the)h(full)f(b)s(ene\014t)g(of)g(the)h (SSSE3)e(and)h(SSE2)g(instructions;)h(without)f(optimization,)j(the)e -(co)s(de)0 2975 y(ma)m(y)f(actually)h(run)d(slo)m(w)m(er)i(than)f(when) +(co)s(de)0 2749 y(ma)m(y)f(actually)h(run)d(slo)m(w)m(er)i(than)f(when) g(using)g(more)g(traditional)i(b)m(yte-sw)m(apping)f(tec)m(hniques.)0 -3135 y(2.)54 b(When)34 b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m +2910 y(2.)54 b(When)34 b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m (y)h(or)g(IMA)m(GE)g(extension,)i(it)e(is)f(more)h(e\016cien)m(t)h(to)f -(read)g(or)0 3248 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g +(read)g(or)0 3022 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g (at)h(a)e(time)h(\(at)h(least)f(3)g(FITS)f(blo)s(c)m(ks)g(=)g(8640)i(b) -m(ytes\))f(so)g(that)g(the)f(direct)0 3361 y(IO)j(mec)m(hanism)h(will)f +m(ytes\))f(so)g(that)g(the)f(direct)0 3135 y(IO)j(mec)m(hanism)h(will)f (b)s(e)g(used)g(as)g(describ)s(ed)g(in)g(the)g(previous)g(section.)51 b(Smaller)34 b(c)m(h)m(unks)f(of)g(data)h(are)g(read)0 -3474 y(or)d(written)g(via)h(the)f(IO)f(bu\013ers,)g(whic)m(h)h(is)g +3248 y(or)d(written)g(via)h(the)f(IO)f(bu\013ers,)g(whic)m(h)h(is)g (somewhat)g(less)g(e\016cien)m(t)i(b)s(ecause)e(of)g(the)g(extra)h(cop) -m(y)f(op)s(eration)0 3587 y(and)26 b(additional)h(b)s(o)s(okk)m(eeping) +m(y)f(op)s(eration)0 3361 y(and)26 b(additional)h(b)s(o)s(okk)m(eeping) g(steps)g(that)g(are)g(required.)39 b(In)26 b(principle)g(it)h(is)g -(more)f(e\016cien)m(t)i(to)g(read)e(or)h(write)0 3700 +(more)f(e\016cien)m(t)i(to)g(read)e(or)h(write)0 3474 y(as)i(big)g(an)g(arra)m(y)h(of)f(image)h(pixels)f(at)h(one)f(time)g (as)h(p)s(ossible,)f(ho)m(w)m(ev)m(er,)h(if)f(the)h(arra)m(y)f(b)s -(ecomes)g(so)g(large)h(that)0 3813 y(the)i(op)s(erating)g(system)f +(ecomes)g(so)g(large)h(that)0 3587 y(the)i(op)s(erating)g(system)f (cannot)h(store)g(it)g(all)h(in)e(RAM,)h(then)f(the)h(p)s(erformance)f -(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 3926 y(of)g(the)f(increased)h -(sw)m(apping)f(of)g(virtual)h(memory)f(to)h(disk.)0 4086 +(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 3700 y(of)g(the)f(increased)h +(sw)m(apping)f(of)g(virtual)h(memory)f(to)h(disk.)0 3860 y(3.)51 b(When)33 b(dealing)i(with)e(FITS)g(tables,)j(the)e(most)g(imp) s(ortan)m(t)g(e\016ciency)g(factor)h(in)e(the)h(soft)m(w)m(are)h -(design)f(is)0 4199 y(to)j(read)f(or)g(write)g(the)g(data)h(in)f(the)g +(design)f(is)0 3973 y(to)j(read)f(or)g(write)g(the)g(data)h(in)f(the)g (FITS)g(\014le)g(in)g(a)g(single)h(pass)f(through)f(the)h(\014le.)58 -b(An)36 b(example)h(of)f(p)s(o)s(or)0 4312 y(program)g(design)h(w)m +b(An)36 b(example)h(of)f(p)s(o)s(or)0 4086 y(program)g(design)h(w)m (ould)f(b)s(e)g(to)h(read)g(a)f(large,)k(3-column)d(table)g(b)m(y)g (sequen)m(tially)h(reading)f(the)f(en)m(tire)i(\014rst)0 -4425 y(column,)25 b(then)f(going)h(bac)m(k)f(to)h(read)e(the)h(2nd)g +4199 y(column,)25 b(then)f(going)h(bac)m(k)f(to)h(read)e(the)h(2nd)g (column,)h(and)e(\014nally)h(the)g(3rd)f(column;)j(this)e(ob)m(viously) -g(requires)0 4538 y(3)h(passes)f(through)f(the)i(\014le)f(whic)m(h)g +g(requires)0 4312 y(3)h(passes)f(through)f(the)i(\014le)f(whic)m(h)g (could)h(triple)f(the)h(execution)g(time)g(of)g(an)f(I/O)g(limited)h -(program.)38 b(F)-8 b(or)25 b(small)0 4650 y(tables)31 +(program.)38 b(F)-8 b(or)25 b(small)0 4425 y(tables)31 b(this)f(is)h(not)f(imp)s(ortan)m(t,)h(but)f(when)f(reading)h(m)m (ulti-megab)m(yte)j(sized)e(tables)g(these)g(ine\016ciencies)h(can)0 -4763 y(b)s(ecome)d(signi\014can)m(t.)41 b(The)28 b(more)h(e\016cien)m +4538 y(b)s(ecome)d(signi\014can)m(t.)41 b(The)28 b(more)h(e\016cien)m (t)h(pro)s(cedure)d(in)i(this)f(case)i(is)e(to)i(read)e(or)h(write)g -(only)f(as)h(man)m(y)g(ro)m(ws)0 4876 y(of)g(the)g(table)h(as)f(will)h +(only)f(as)h(man)m(y)g(ro)m(ws)0 4650 y(of)g(the)g(table)h(as)f(will)h (\014t)e(in)m(to)i(the)g(a)m(v)-5 b(ailable)31 b(in)m(ternal)f(I/O)f (bu\013ers,)f(then)h(access)h(all)g(the)f(necessary)g(columns)0 -4989 y(of)i(data)h(within)e(that)i(range)f(of)g(ro)m(ws.)43 +4763 y(of)i(data)h(within)e(that)i(range)f(of)g(ro)m(ws.)43 b(Then)29 b(after)j(the)f(program)g(is)g(completely)h(\014nished)e -(with)g(the)i(data)f(in)0 5102 y(those)i(ro)m(ws)e(it)i(can)f(mo)m(v)m +(with)g(the)i(data)f(in)0 4876 y(those)i(ro)m(ws)e(it)i(can)f(mo)m(v)m (e)i(on)e(to)g(the)h(next)f(range)g(of)g(ro)m(ws)g(that)h(will)f(\014t) g(in)g(the)g(bu\013ers,)f(con)m(tin)m(uing)i(in)f(this)0 -5215 y(w)m(a)m(y)c(un)m(til)f(the)f(en)m(tire)i(\014le)f(has)f(b)s(een) +4989 y(w)m(a)m(y)c(un)m(til)f(the)f(en)m(tire)i(\014le)f(has)f(b)s(een) g(pro)s(cessed.)39 b(By)27 b(using)f(this)h(pro)s(cedure)e(of)i -(accessing)h(all)g(the)e(columns)h(of)0 5328 y(a)j(table)g(in)f +(accessing)h(all)g(the)e(columns)h(of)0 5102 y(a)j(table)g(in)f (parallel)h(rather)f(than)g(sequen)m(tially)-8 b(,)32 b(eac)m(h)e(blo)s(c)m(k)g(of)g(the)f(FITS)g(\014le)g(will)g(only)h(b)s -(e)e(read)i(or)f(written)0 5441 y(once.)0 5601 y(The)g(optimal)h(n)m +(e)e(read)i(or)f(written)0 5215 y(once.)0 5375 y(The)g(optimal)h(n)m (um)m(b)s(er)e(of)i(ro)m(ws)f(to)i(read)e(or)g(write)h(at)g(one)g(time) g(in)f(a)h(giv)m(en)g(table)h(dep)s(ends)c(on)j(the)f(width)g(of)0 -5714 y(the)j(table)h(ro)m(w,)g(on)f(the)g(n)m(um)m(b)s(er)f(of)h(I/O)g +5488 y(the)j(table)h(ro)m(w,)g(on)f(the)g(n)m(um)m(b)s(er)f(of)h(I/O)g (bu\013ers)f(that)i(ha)m(v)m(e)g(b)s(een)e(allo)s(cated)j(in)e(FITSIO,) -f(and)h(also)h(on)f(the)p eop end +f(and)h(also)h(on)f(the)0 5601 y(n)m(um)m(b)s(er)27 b(of)i(other)f +(FITS)g(\014les)g(that)h(are)g(op)s(en)f(at)h(the)g(same)g(time)g +(\(since)g(one)g(I/O)f(bu\013er)f(is)i(alw)m(a)m(ys)h(reserv)m(ed)0 +5714 y(for)k(eac)m(h)h(op)s(en)f(FITS)f(\014le\).)53 +b(F)-8 b(ortunately)g(,)37 b(a)e(FITSIO)e(routine)h(is)h(a)m(v)-5 +b(ailable)36 b(that)f(will)f(return)g(the)g(optimal)p +eop end %%Page: 27 33 -TeXDict begin 27 32 bop 0 299 a Fg(4.13.)73 b(OPTIMIZING)29 +TeXDict begin 27 32 bop 0 299 a Fh(4.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 -b Fi(27)0 555 y(n)m(um)m(b)s(er)27 b(of)i(other)f(FITS)g(\014les)g -(that)h(are)g(op)s(en)f(at)h(the)g(same)g(time)g(\(since)g(one)g(I/O)f -(bu\013er)f(is)i(alw)m(a)m(ys)h(reserv)m(ed)0 668 y(for)k(eac)m(h)h(op) -s(en)f(FITS)f(\014le\).)53 b(F)-8 b(ortunately)g(,)37 -b(a)e(FITSIO)e(routine)h(is)h(a)m(v)-5 b(ailable)36 b(that)f(will)f -(return)g(the)g(optimal)0 781 y(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(for)g -(a)g(giv)m(en)g(table:)49 b(call)35 b(ftgrsz\(unit,)g(nro)m(ws,)f -(status\).)52 b(It)34 b(is)g(not)g(critical)h(to)g(use)e(exactly)0 -894 y(the)f(v)-5 b(alue)32 b(of)f(nro)m(ws)g(returned)g(b)m(y)g(this)g +b Fj(27)0 555 y(n)m(um)m(b)s(er)32 b(of)i(ro)m(ws)g(for)g(a)g(giv)m(en) +g(table:)49 b(call)35 b(ftgrsz\(unit,)g(nro)m(ws,)f(status\).)52 +b(It)34 b(is)g(not)g(critical)h(to)g(use)e(exactly)0 +668 y(the)f(v)-5 b(alue)32 b(of)f(nro)m(ws)g(returned)g(b)m(y)g(this)g (routine,)h(as)g(long)g(as)g(one)g(do)s(es)f(not)h(exceed)g(it.)45 -b(Using)32 b(a)g(v)m(ery)f(small)0 1007 y(v)-5 b(alue)32 +b(Using)32 b(a)g(v)m(ery)f(small)0 781 y(v)-5 b(alue)32 b(ho)m(w)m(ev)m(er)i(can)e(also)h(lead)f(to)h(p)s(o)s(or)e(p)s (erformance)g(b)s(ecause)h(of)g(the)g(o)m(v)m(erhead)h(from)f(the)g -(larger)g(n)m(um)m(b)s(er)0 1120 y(of)f(subroutine)e(calls.)0 -1280 y(The)36 b(optimal)h(n)m(um)m(b)s(er)f(of)g(ro)m(ws)h(returned)e +(larger)g(n)m(um)m(b)s(er)0 894 y(of)f(subroutine)e(calls.)0 +1054 y(The)36 b(optimal)h(n)m(um)m(b)s(er)f(of)g(ro)m(ws)h(returned)e (b)m(y)h(ftgrsz)h(is)g(v)-5 b(alid)37 b(only)f(as)h(long)g(as)g(the)f -(application)i(program)0 1393 y(is)c(only)h(reading)g(or)f(writing)g +(application)i(program)0 1167 y(is)c(only)h(reading)g(or)f(writing)g (data)h(in)g(the)f(sp)s(eci\014ed)g(table.)54 b(An)m(y)34 b(other)h(calls)g(to)g(access)h(data)f(in)f(the)h(table)0 -1506 y(header)26 b(w)m(ould)f(cause)i(additional)f(blo)s(c)m(ks)h(of)f +1280 y(header)26 b(w)m(ould)f(cause)i(additional)f(blo)s(c)m(ks)h(of)f (data)g(to)h(b)s(e)e(loaded)h(in)m(to)h(the)f(I/O)g(bu\013ers)f -(displacing)h(data)g(from)0 1619 y(the)j(original)h(table,)g(and)e +(displacing)h(data)g(from)0 1393 y(the)j(original)h(table,)g(and)e (should)f(b)s(e)h(a)m(v)m(oided)i(during)e(the)h(critical)h(p)s(erio)s (d)e(while)g(the)h(table)h(is)e(b)s(eing)g(read)h(or)0 -1732 y(written.)0 1892 y(4.)39 b(Use)24 b(binary)f(table)h(extensions)g +1506 y(written.)0 1666 y(4.)39 b(Use)24 b(binary)f(table)h(extensions)g (rather)f(than)h(ASCI)s(I)e(table)i(extensions)g(for)f(b)s(etter)h -(e\016ciency)h(when)d(dealing)0 2005 y(with)37 b(tabular)h(data.)62 +(e\016ciency)h(when)d(dealing)0 1779 y(with)37 b(tabular)h(data.)62 b(The)37 b(I/O)g(to)h(ASCI)s(I)e(tables)i(is)g(slo)m(w)m(er)g(b)s (ecause)g(of)f(the)h(o)m(v)m(erhead)h(in)e(formatting)h(or)0 -2118 y(parsing)30 b(the)h(ASCI)s(I)f(data)h(\014elds,)g(and)f(b)s +1892 y(parsing)30 b(the)h(ASCI)s(I)f(data)h(\014elds,)g(and)f(b)s (ecause)h(ASCI)s(I)e(tables)i(are)g(ab)s(out)g(t)m(wice)h(as)f(large)h -(as)f(binary)f(tables)0 2230 y(with)g(the)h(same)f(information)h(con)m -(ten)m(t.)0 2391 y(5.)64 b(Design)39 b(soft)m(w)m(are)g(so)g(that)f(it) +(as)f(binary)f(tables)0 2005 y(with)g(the)h(same)f(information)h(con)m +(ten)m(t.)0 2165 y(5.)64 b(Design)39 b(soft)m(w)m(are)g(so)g(that)f(it) h(reads)f(the)g(FITS)f(header)h(k)m(eyw)m(ords)g(in)g(the)g(same)h -(order)e(in)h(whic)m(h)g(they)0 2503 y(o)s(ccur)33 b(in)g(the)g +(order)e(in)h(whic)m(h)g(they)0 2278 y(o)s(ccur)33 b(in)g(the)g (\014le.)49 b(When)32 b(reading)i(k)m(eyw)m(ords,)g(FITSIO)e(searc)m (hes)i(forw)m(ard)e(starting)i(from)e(the)i(p)s(osition)f(of)0 -2616 y(the)c(last)i(k)m(eyw)m(ord)e(that)h(w)m(as)g(read.)40 +2391 y(the)c(last)i(k)m(eyw)m(ord)e(that)h(w)m(as)g(read.)40 b(If)29 b(it)g(reac)m(hes)i(the)e(end)g(of)g(the)h(header)f(without)g -(\014nding)f(the)h(k)m(eyw)m(ord,)h(it)0 2729 y(then)j(go)s(es)h(bac)m +(\014nding)f(the)h(k)m(eyw)m(ord,)h(it)0 2503 y(then)j(go)s(es)h(bac)m (k)g(to)h(the)e(start)h(of)g(the)g(header)f(and)g(con)m(tin)m(ues)h (the)g(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s(osition)f(where)g(it)0 -2842 y(started.)41 b(In)30 b(practice,)i(as)e(long)h(as)g(the)f(en)m +2616 y(started.)41 b(In)30 b(practice,)i(as)e(long)h(as)g(the)f(en)m (tire)i(FITS)d(header)h(can)h(\014t)f(at)h(one)g(time)g(in)f(the)g(a)m -(v)-5 b(ailable)33 b(in)m(ternal)0 2955 y(I/O)g(bu\013ers,)h(then)f +(v)-5 b(ailable)33 b(in)m(ternal)0 2729 y(I/O)g(bu\013ers,)h(then)f (the)h(header)f(k)m(eyw)m(ord)h(access)h(will)e(b)s(e)g(v)m(ery)h(fast) g(and)f(it)h(mak)m(es)g(little)h(di\013erence)f(whic)m(h)0 -3068 y(order)c(they)g(are)h(accessed.)0 3228 y(6.)40 +2842 y(order)c(they)g(are)h(accessed.)0 3002 y(6.)40 b(Av)m(oid)29 b(the)e(use)h(of)f(scaling)i(\(b)m(y)f(using)f(the)h (BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)m -(ords\))0 3341 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s +(ords\))0 3115 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s (erations)f(add)f(to)i(the)f(pro)s(cessing)f(time)i(needed)e(to)i(read) -f(or)g(write)g(the)0 3454 y(data.)60 b(In)36 b(some)i(cases)f(it)g(ma)m +f(or)g(write)g(the)0 3228 y(data.)60 b(In)36 b(some)i(cases)f(it)g(ma)m (y)h(b)s(e)e(more)h(e\016cien)m(t)h(to)f(temp)s(orarily)g(turn)f(o\013) -h(the)g(scaling)h(\(using)e(ftpscl)h(or)0 3567 y(fttscl\))32 +h(the)g(scaling)h(\(using)e(ftpscl)h(or)0 3341 y(fttscl\))32 b(and)d(then)h(read)h(or)f(write)h(the)f(ra)m(w)h(unscaled)f(v)-5 -b(alues)31 b(in)f(the)g(FITS)g(\014le.)0 3727 y(7.)40 +b(alues)31 b(in)f(the)g(FITS)g(\014le.)0 3501 y(7.)40 b(Av)m(oid)27 b(using)g(the)g('implicit)h(datat)m(yp)s(e)f(con)m(v)m (ersion')h(capabilit)m(y)h(in)d(FITSIO.)g(F)-8 b(or)28 -b(instance,)g(when)e(reading)0 3840 y(a)f(FITS)e(image)j(with)e(BITPIX) +b(instance,)g(when)e(reading)0 3614 y(a)f(FITS)e(image)j(with)e(BITPIX) g(=)g(-32)i(\(32-bit)g(\015oating)f(p)s(oin)m(t)f(pixels\),)j(read)d -(the)h(data)g(in)m(to)g(a)g(single)g(precision)0 3953 +(the)h(data)g(in)m(to)g(a)g(single)g(precision)0 3727 y(\015oating)e(p)s(oin)m(t)e(data)i(arra)m(y)f(in)g(the)g(program.)37 b(F)-8 b(orcing)23 b(FITSIO)e(to)h(con)m(v)m(ert)i(the)e(data)g(to)h(a) -f(di\013eren)m(t)g(datat)m(yp)s(e)0 4066 y(can)31 b(signi\014can)m(tly) -g(slo)m(w)g(the)g(program.)0 4226 y(8.)57 b(Where)36 +f(di\013eren)m(t)g(datat)m(yp)s(e)0 3840 y(can)31 b(signi\014can)m(tly) +g(slo)m(w)g(the)g(program.)0 4000 y(8.)57 b(Where)36 b(feasible,)i(design)e(FITS)f(binary)g(tables)h(using)f(v)m(ector)j (column)d(elemen)m(ts)i(so)f(that)g(the)g(data)h(are)0 -4339 y(written)30 b(as)g(a)g(con)m(tiguous)h(set)f(of)g(b)m(ytes,)g +4113 y(written)30 b(as)g(a)g(con)m(tiguous)h(set)f(of)g(b)m(ytes,)g (rather)g(than)f(as)h(single)g(elemen)m(ts)h(in)f(m)m(ultiple)g(ro)m -(ws.)41 b(F)-8 b(or)30 b(example,)0 4452 y(it)36 b(is)g(faster)g(to)g +(ws.)41 b(F)-8 b(or)30 b(example,)0 4226 y(it)36 b(is)g(faster)g(to)g (access)h(the)f(data)h(in)e(a)h(table)h(that)f(con)m(tains)h(a)f (single)g(ro)m(w)g(and)f(2)h(columns)f(with)h(TF)m(ORM)0 -4565 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e('10000J',)j(than) +4339 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e('10000J',)j(than) d(it)g(is)g(to)h(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)f(a)g -(table)0 4678 y(with)40 b(10000)j(ro)m(ws)d(whic)m(h)h(has)f(columns)g +(table)0 4452 y(with)40 b(10000)j(ro)m(ws)d(whic)m(h)h(has)f(columns)g (with)g(the)h(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)g(to)g('1E')h(and)e -('1J'.)h(In)f(the)0 4791 y(former)27 b(case)i(the)f(10000)i(\015oating) +('1J'.)h(In)f(the)0 4565 y(former)27 b(case)i(the)f(10000)i(\015oating) f(p)s(oin)m(t)f(v)-5 b(alues)28 b(in)g(the)g(\014rst)f(column)h(are)g (all)h(written)f(in)f(a)h(con)m(tiguous)h(blo)s(c)m(k)0 -4903 y(of)d(the)f(\014le)h(whic)m(h)f(can)h(b)s(e)f(read)g(or)g +4678 y(of)d(the)f(\014le)h(whic)m(h)f(can)h(b)s(e)f(read)g(or)g (written)h(quic)m(kly)-8 b(,)28 b(whereas)d(in)g(the)h(second)f(case)i -(eac)m(h)g(\015oating)f(p)s(oin)m(t)f(v)-5 b(alue)0 5016 +(eac)m(h)g(\015oating)f(p)s(oin)m(t)f(v)-5 b(alue)0 4791 y(in)34 b(the)g(\014rst)f(column)g(is)h(in)m(terlea)m(v)m(ed)j(with)c (the)h(in)m(teger)i(v)-5 b(alue)34 b(in)g(the)g(second)g(column)f(of)h -(the)g(same)h(ro)m(w)f(so)0 5129 y(CFITSIO)29 b(has)h(to)h(explicitly)h +(the)g(same)h(ro)m(w)f(so)0 4903 y(CFITSIO)29 b(has)h(to)h(explicitly)h (mo)m(v)m(e)g(to)f(the)g(p)s(osition)f(of)h(eac)m(h)g(elemen)m(t)h(to)f -(b)s(e)f(read)g(or)g(written.)0 5289 y(9.)52 b(Av)m(oid)35 +(b)s(e)f(read)g(or)g(written.)0 5064 y(9.)52 b(Av)m(oid)35 b(the)g(use)e(of)i(v)-5 b(ariable)34 b(length)h(v)m(ector)h(columns)d (in)h(binary)g(tables,)i(since)e(an)m(y)h(reading)f(or)g(writing)0 -5402 y(of)f(these)g(data)g(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s +5176 y(of)f(these)g(data)g(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s (ok)j(up)d(or)i(compute)g(the)f(starting)i(address)e(of)g(eac)m(h)i(ro) -m(w)f(of)0 5515 y(data)e(in)f(the)h(heap.)40 b(In)30 +m(w)f(of)0 5289 y(data)e(in)f(the)h(heap.)40 b(In)30 b(practice,)i(this)e(is)g(probably)g(not)h(a)f(signi\014can)m(t)i -(e\016ciency)f(issue.)0 5675 y(10.)39 b(When)24 b(cop)m(ying)h(data)f +(e\016ciency)f(issue.)0 5450 y(10.)39 b(When)24 b(cop)m(ying)h(data)f (from)f(one)i(FITS)e(table)h(to)h(another,)g(it)g(is)f(faster)g(to)g -(transfer)f(the)h(ra)m(w)g(b)m(ytes)h(instead)p eop end +(transfer)f(the)h(ra)m(w)g(b)m(ytes)h(instead)0 5562 +y(of)h(reading)g(then)g(writing)g(eac)m(h)h(column)e(of)i(the)f(table.) +40 b(The)25 b(FITSIO)g(subroutines)g(FTGTBS)g(and)h(FTPTBS)0 +5675 y(\(for)i(ASCI)s(I)f(tables\),)j(and)d(FTGTBB)i(and)e(FTPTBB)i +(\(for)f(binary)f(tables\))i(will)g(p)s(erform)d(lo)m(w-lev)m(el)31 +b(reads)d(or)p eop end %%Page: 28 34 -TeXDict begin 28 33 bop 0 299 a Fi(28)1277 b Fg(CHAPTER)29 +TeXDict begin 28 33 bop 0 299 a Fj(28)1277 b Fh(CHAPTER)29 b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 -555 y Fi(of)26 b(reading)g(then)g(writing)g(eac)m(h)h(column)e(of)i -(the)f(table.)40 b(The)25 b(FITSIO)g(subroutines)g(FTGTBS)g(and)h -(FTPTBS)0 668 y(\(for)i(ASCI)s(I)f(tables\),)j(and)d(FTGTBB)i(and)e -(FTPTBB)i(\(for)f(binary)f(tables\))i(will)g(p)s(erform)d(lo)m(w-lev)m -(el)31 b(reads)d(or)0 781 y(writes)34 b(of)h(an)m(y)f(con)m(tiguous)i -(range)f(of)f(b)m(ytes)h(in)f(a)h(table)g(extension.)53 -b(These)34 b(routines)g(can)h(b)s(e)e(used)h(to)h(read)0 -894 y(or)29 b(write)g(a)g(whole)g(ro)m(w)f(\(or)i(m)m(ultiple)f(ro)m -(ws\))g(of)g(a)g(table)h(with)e(a)h(single)g(subroutine)f(call.)41 -b(These)29 b(routines)g(are)0 1007 y(fast)38 b(b)s(ecause)f(they)h(b)m -(ypass)f(all)h(the)g(usual)f(data)h(scaling,)j(error)c(c)m(hec)m(king)i -(and)e(mac)m(hine)h(dep)s(enden)m(t)e(data)0 1120 y(con)m(v)m(ersion)41 -b(that)g(is)e(normally)i(done)e(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m -(w)h(the)f(program)g(to)h(write)f(the)g(data)g(to)0 1233 -y(the)34 b(output)g(\014le)g(in)g(exactly)i(the)e(same)h(b)m(yte)g -(order.)51 b(F)-8 b(or)35 b(these)g(same)f(reasons,)i(use)e(of)g(these) -h(routines)f(can)0 1346 y(b)s(e)f(somewhat)h(risky)f(b)s(ecause)g(no)g -(v)-5 b(alidation)35 b(or)f(mac)m(hine)g(dep)s(enden)m(t)e(con)m(v)m -(ersion)j(is)e(p)s(erformed)f(b)m(y)h(these)0 1458 y(routines.)40 +555 y Fj(writes)j(of)h(an)m(y)f(con)m(tiguous)i(range)f(of)f(b)m(ytes)h +(in)f(a)h(table)g(extension.)53 b(These)34 b(routines)g(can)h(b)s(e)e +(used)h(to)h(read)0 668 y(or)29 b(write)g(a)g(whole)g(ro)m(w)f(\(or)i +(m)m(ultiple)f(ro)m(ws\))g(of)g(a)g(table)h(with)e(a)h(single)g +(subroutine)f(call.)41 b(These)29 b(routines)g(are)0 +781 y(fast)38 b(b)s(ecause)f(they)h(b)m(ypass)f(all)h(the)g(usual)f +(data)h(scaling,)j(error)c(c)m(hec)m(king)i(and)e(mac)m(hine)h(dep)s +(enden)m(t)e(data)0 894 y(con)m(v)m(ersion)41 b(that)g(is)e(normally)i +(done)e(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m(w)h(the)f(program)g(to)h +(write)f(the)g(data)g(to)0 1007 y(the)34 b(output)g(\014le)g(in)g +(exactly)i(the)e(same)h(b)m(yte)g(order.)51 b(F)-8 b(or)35 +b(these)g(same)f(reasons,)i(use)e(of)g(these)h(routines)f(can)0 +1120 y(b)s(e)f(somewhat)h(risky)f(b)s(ecause)g(no)g(v)-5 +b(alidation)35 b(or)f(mac)m(hine)g(dep)s(enden)m(t)e(con)m(v)m(ersion)j +(is)e(p)s(erformed)f(b)m(y)h(these)0 1233 y(routines.)40 b(In)27 b(general)h(these)h(routines)e(are)h(only)g(recommended)f(for)h (optimizing)h(critical)g(pieces)g(of)f(co)s(de)g(and)0 -1571 y(should)e(only)i(b)s(e)f(used)f(b)m(y)i(programmers)e(who)h +1346 y(should)e(only)i(b)s(e)f(used)f(b)m(y)i(programmers)e(who)h (thoroughly)h(understand)d(the)j(in)m(ternal)g(b)m(yte)g(structure)f -(of)h(the)0 1684 y(FITS)i(tables)h(they)f(are)h(reading)g(or)f -(writing.)0 1844 y(11.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving) +(of)h(the)0 1458 y(FITS)i(tables)h(they)f(are)h(reading)g(or)f +(writing.)0 1619 y(11.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving) f(the)h(sp)s(eed)e(of)i(writing)g(a)f(FITS)g(table,)i(similar)f(to)g -(the)f(previous)g(one,)0 1957 y(is)j(to)g(directly)h(construct)f(the)f +(the)f(previous)g(one,)0 1732 y(is)j(to)g(directly)h(construct)f(the)f (en)m(tire)i(b)m(yte)f(stream)g(for)g(a)g(whole)g(table)g(ro)m(w)g -(\(or)g(m)m(ultiple)h(ro)m(ws\))f(within)f(the)0 2070 +(\(or)g(m)m(ultiple)h(ro)m(ws\))f(within)f(the)0 1844 y(application)k(program)f(and)g(then)f(write)i(it)f(to)h(the)f(FITS)f (\014le)i(with)e(ftptbb.)51 b(This)33 b(a)m(v)m(oids)j(all)f(the)f(o)m -(v)m(erhead)0 2183 y(normally)g(presen)m(t)g(in)f(the)h(column-orien)m +(v)m(erhead)0 1957 y(normally)g(presen)m(t)g(in)f(the)h(column-orien)m (ted)h(CFITSIO)d(write)i(routines.)51 b(This)33 b(tec)m(hnique)h -(should)f(only)h(b)s(e)0 2296 y(used)26 b(for)h(critical)i +(should)f(only)h(b)s(e)0 2070 y(used)26 b(for)h(critical)i (applications,)g(b)s(ecause)d(it)i(mak)m(es)g(the)f(co)s(de)g(more)g (di\016cult)g(to)g(understand)e(and)i(main)m(tain,)0 -2409 y(and)d(it)h(mak)m(es)h(the)f(co)s(de)g(more)f(system)h(dep)s +2183 y(and)d(it)h(mak)m(es)h(the)f(co)s(de)g(more)f(system)h(dep)s (enden)m(t)f(\(e.g.,)k(do)c(the)h(b)m(ytes)g(need)g(to)g(b)s(e)f(sw)m -(app)s(ed)g(b)s(efore)g(writing)0 2522 y(to)31 b(the)g(FITS)e -(\014le?\).)0 2682 y(12.)53 b(Finally)-8 b(,)37 b(external)e(factors)h +(app)s(ed)g(b)s(efore)g(writing)0 2296 y(to)31 b(the)g(FITS)e +(\014le?\).)0 2456 y(12.)53 b(Finally)-8 b(,)37 b(external)e(factors)h (suc)m(h)e(as)g(the)h(t)m(yp)s(e)f(of)h(magnetic)g(disk)f(con)m -(troller)i(\(SCSI)d(or)i(IDE\),)g(the)f(size)0 2795 y(of)h(the)g(disk)g +(troller)i(\(SCSI)d(or)i(IDE\),)g(the)f(size)0 2569 y(of)h(the)g(disk)g (cac)m(he,)j(the)d(a)m(v)m(erage)i(seek)f(sp)s(eed)e(of)h(the)g(disk,)h (the)f(amoun)m(t)h(of)f(disk)f(fragmen)m(tation,)k(and)d(the)0 -2908 y(amoun)m(t)29 b(of)g(RAM)f(a)m(v)-5 b(ailable)31 +2682 y(amoun)m(t)29 b(of)g(RAM)f(a)m(v)-5 b(ailable)31 b(on)e(the)f(system)h(can)g(all)g(ha)m(v)m(e)h(a)f(signi\014can)m(t)g (impact)h(on)e(o)m(v)m(erall)j(I/O)d(e\016ciency)-8 b(.)0 -3021 y(F)g(or)36 b(critical)h(applications,)g(a)f(system)f +2795 y(F)g(or)36 b(critical)h(applications,)g(a)f(system)f (administrator)g(should)f(review)h(the)h(prop)s(osed)d(system)j(hardw)m -(are)e(to)0 3134 y(iden)m(tify)d(an)m(y)g(p)s(oten)m(tial)g(I/O)g(b)s +(are)e(to)0 2908 y(iden)m(tify)d(an)m(y)g(p)s(oten)m(tial)g(I/O)g(b)s (ottlenec)m(ks.)p eop end %%Page: 29 35 -TeXDict begin 29 34 bop 0 1225 a Ff(Chapter)65 b(5)0 -1687 y Fl(Basic)77 b(In)-6 b(terface)77 b(Routines)0 -2180 y Fi(This)27 b(section)h(de\014nes)f(a)h(basic)g(set)g(of)g +TeXDict begin 29 34 bop 0 1225 a Fg(Chapter)65 b(5)0 +1687 y Fm(Basic)77 b(In)-6 b(terface)77 b(Routines)0 +2180 y Fj(This)27 b(section)h(de\014nes)f(a)h(basic)g(set)g(of)g (subroutines)e(that)i(can)g(b)s(e)f(used)g(to)h(p)s(erform)e(the)i (most)g(common)g(t)m(yp)s(es)0 2293 y(of)d(read)g(and)f(write)h(op)s (erations)g(on)g(FITS)f(\014les.)39 b(New)25 b(users)f(should)g(start)h @@ -4982,7 +7059,7 @@ (describ)s(ed)f(in)h(the)g(follo)m(wing)i(c)m(hapter)e(to)h(p)s(erform) e(more)0 2518 y(complex)f(or)f(sp)s(ecialized)i(op)s(erations.)0 2679 y(A)e(righ)m(t)g(arro)m(w)g(sym)m(b)s(ol)f(\()p -Fa(>)p Fi(\))h(is)g(used)f(to)h(separate)h(the)e(input)g(parameters)h +Fb(>)p Fj(\))h(is)g(used)f(to)h(separate)h(the)e(input)g(parameters)h (from)f(the)h(output)f(parameters)h(in)0 2791 y(the)i(de\014nition)f (of)g(eac)m(h)i(routine.)44 b(This)30 b(sym)m(b)s(ol)i(is)f(not)h (actually)h(part)e(of)h(the)f(calling)i(sequence.)45 @@ -4991,32 +7068,32 @@ (initialized)i(=)e(0)h(prior)0 3017 y(to)f(calling)h(the)f(FITSIO)e (subroutines.)0 3177 y(Refer)h(to)i(Chapter)d(9)i(for)f(the)h (de\014nition)f(of)g(all)i(the)e(parameters)h(used)e(b)m(y)i(these)g -(in)m(terface)g(routines.)0 3525 y Fd(5.1)135 b(FITSIO)44 -b(Error)h(Status)h(Routines)0 3773 y Fh(1)81 b Fi(Return)24 +(in)m(terface)g(routines.)0 3528 y Fe(5.1)135 b(FITSIO)44 +b(Error)h(Status)h(Routines)0 3779 y Fi(1)81 b Fj(Return)24 b(the)i(curren)m(t)f(v)m(ersion)h(n)m(um)m(b)s(er)e(of)i(the)f (\014tsio)h(library)-8 b(.)39 b(The)25 b(v)m(ersion)h(n)m(um)m(b)s(er)e -(will)i(b)s(e)e(incremen)m(ted)227 3886 y(with)30 b(eac)m(h)i(new)e -(release)h(of)g(CFITSIO.)382 4157 y Fe(FTVERS\()46 b(>)h(version\))0 -4429 y Fh(2)81 b Fi(Return)45 b(the)i(descriptiv)m(e)g(text)g(string)g +(will)i(b)s(e)e(incremen)m(ted)227 3892 y(with)30 b(eac)m(h)i(new)e +(release)h(of)g(CFITSIO.)382 4166 y Ff(FTVERS\()46 b(>)h(version\))0 +4440 y Fi(2)81 b Fj(Return)45 b(the)i(descriptiv)m(e)g(text)g(string)g (corresp)s(onding)e(to)i(a)g(FITSIO)e(error)h(status)h(co)s(de.)89 -b(The)46 b(30-)227 4541 y(c)m(haracter)32 b(length)f(string)f(con)m +b(The)46 b(30-)227 4553 y(c)m(haracter)32 b(length)f(string)f(con)m (tains)i(a)f(brief)f(description)g(of)g(the)h(cause)g(of)f(the)h -(error.)382 4813 y Fe(FTGERR\(status,)44 b(>)j(errtext\))0 -5084 y Fh(3)81 b Fi(Return)40 b(the)h(top)g(\(oldest\))h(80-c)m +(error.)382 4827 y Ff(FTGERR\(status,)44 b(>)j(errtext\))0 +5101 y Fi(3)81 b Fj(Return)40 b(the)h(top)g(\(oldest\))h(80-c)m (haracter)i(error)c(message)i(from)f(the)g(in)m(ternal)g(FITSIO)f(stac) -m(k)i(of)f(error)227 5197 y(messages)29 b(and)f(shift)g(an)m(y)g +m(k)i(of)f(error)227 5214 y(messages)29 b(and)f(shift)g(an)m(y)g (remaining)g(messages)h(on)f(the)g(stac)m(k)i(up)d(one)h(lev)m(el.)42 -b(An)m(y)28 b(FITSIO)f(error)h(will)227 5310 y(generate)h(one)e(or)g +b(An)m(y)28 b(FITSIO)f(error)h(will)227 5327 y(generate)h(one)e(or)g (more)h(messages)g(on)f(the)g(stac)m(k.)41 b(Call)28 b(this)f(routine)g(rep)s(eatedly)g(to)h(get)h(eac)m(h)f(message)227 -5422 y(in)i(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)f(empt)m(y)f -(when)g(a)g(blank)g(string)h(is)f(returned.)382 5694 -y Fe(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fi(29)p eop +5440 y(in)i(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)f(empt)m(y)f +(when)g(a)g(blank)g(string)h(is)f(returned.)382 5714 +y Ff(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fj(29)p eop end %%Page: 30 36 -TeXDict begin 30 35 bop 0 299 a Fi(30)1747 b Fg(CHAPTER)30 +TeXDict begin 30 35 bop 0 299 a Fj(30)1747 b Fh(CHAPTER)30 b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 -555 y Fh(4)81 b Fi(The)33 b(FTPMRK)h(routine)g(puts)g(an)g(in)m +555 y Fi(4)81 b Fj(The)33 b(FTPMRK)h(routine)g(puts)g(an)g(in)m (visible)h(mark)m(er)f(on)g(the)h(CFITSIO)d(error)i(stac)m(k.)54 b(The)33 b(FTCMRK)227 668 y(routine)41 b(can)g(then)g(b)s(e)f(used)g (to)h(delete)h(an)m(y)f(more)g(recen)m(t)h(error)e(messages)i(on)f(the) @@ -5025,22 +7102,22 @@ (messages)i(on)f(the)h(stac)m(k.)44 b(FTCMSG)227 894 y(simply)23 b(clears)g(the)g(en)m(tire)h(error)e(message)i(stac)m(k.)40 b(These)23 b(routines)f(are)h(called)h(without)f(an)m(y)g(argumen)m -(ts.)382 1152 y Fe(FTPMRK)382 1265 y(FTCMRK)382 1378 -y(FTCMSG)0 1637 y Fh(5)81 b Fi(Prin)m(t)30 b(out)h(the)g(error)f +(ts.)382 1152 y Ff(FTPMRK)382 1265 y(FTCMRK)382 1378 +y(FTCMSG)0 1637 y Fi(5)81 b Fj(Prin)m(t)30 b(out)h(the)g(error)f (message)i(corresp)s(onding)e(to)h(the)g(input)f(status)h(v)-5 b(alue)31 b(and)f(all)i(the)f(error)f(messages)227 1750 y(on)g(the)h(FITSIO)e(stac)m(k)i(to)g(the)g(sp)s(eci\014ed)e(\014le)i (stream)f(\(stream)h(can)g(b)s(e)e(either)i(the)f(string)g('STDOUT')227 1863 y(or)h('STDERR'\).)f(If)g(the)h(input)e(status)i(v)-5 b(alue)31 b(=)f(0)h(then)f(this)g(routine)g(do)s(es)g(nothing.)334 -2121 y Fe(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380 -y Fh(6)81 b Fi(W)-8 b(rite)39 b(an)f(80-c)m(haracter)j(message)e(to)g +2121 y Ff(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380 +y Fi(6)81 b Fj(W)-8 b(rite)39 b(an)f(80-c)m(haracter)j(message)e(to)g (the)f(FITSIO)f(error)h(stac)m(k.)65 b(Application)39 b(programs)f(should)f(not)227 2493 y(normally)31 b(write)f(to)i(the)e (stac)m(k,)i(but)e(there)g(ma)m(y)h(b)s(e)f(some)h(situations)g(where)f -(this)g(is)h(desirable.)382 2751 y Fe(FTPMSG\(errmsg\))0 -3085 y Fd(5.2)135 b(File)46 b(I/O)f(Routines)0 3325 y -Fh(1)81 b Fi(Op)s(en)34 b(an)h(existing)i(FITS)d(\014le)i(with)f +(this)g(is)h(desirable.)382 2751 y Ff(FTPMSG\(errmsg\))0 +3085 y Fe(5.2)135 b(File)46 b(I/O)f(Routines)0 3325 y +Fi(1)81 b Fj(Op)s(en)34 b(an)h(existing)i(FITS)d(\014le)i(with)f (readonly)h(or)f(readwrite)h(access.)58 b(This)34 b(routine)i(alw)m(a)m (ys)h(op)s(ens)e(the)227 3438 y(primary)30 b(arra)m(y)i(\(the)f (\014rst)f(HDU\))i(of)f(the)h(\014le,)f(and)f(do)s(es)h(not)g(mo)m(v)m @@ -5057,9 +7134,9 @@ 4002 y(simply)37 b(op)s(ens)g(the)h(sp)s(eci\014ed)f(\014le)h(without)f (trying)h(to)g(in)m(terpret)g(the)g(\014lename)g(using)f(the)h (extended)227 4115 y(\014lename)31 b(syn)m(tax.)382 4374 -y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b +y Ff(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b (blocksize,status\))382 4487 y(FTDKOPN\(unit,filename,rw)o(mod)o(e,)42 -b(>)47 b(blocksize,status\))0 4745 y Fh(2)81 b Fi(Op)s(en)24 +b(>)47 b(blocksize,status\))0 4745 y Fi(2)81 b Fj(Op)s(en)24 b(an)i(existing)h(FITS)e(\014le)h(with)f(readonly)h(or)g(readwrite)g (access)h(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)g(extension,)227 4858 y(if)38 b(one)g(w)m(as)g(sp)s(eci\014ed)g(as)g(part)f(of)h(the)h @@ -5068,16 +7145,16 @@ (HDU)i(in)e(the)h(\014le\).)60 b(Note)37 b(that)h(this)e(routine)h (di\013ers)f(from)g(FTOPEN)g(in)g(that)h(it)227 5084 y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize) -j(argumen)m(t.)382 5342 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 -b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Op)s(en)31 b(an)h(existing)h +j(argumen)m(t.)382 5342 y Ff(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 5601 y Fi(3)81 b Fj(Op)s(en)31 b(an)h(existing)h (FITS)f(\014le)g(with)g(readonly)h(or)f(readwrite)h(access)g(and)f (then)g(mo)m(v)m(e)i(to)f(the)g(\014rst)e(HDU)227 5714 y(con)m(taining)c(signi\014can)m(t)g(data,)g(if)e(a\))i(an)e(HDU)h (name)g(or)f(n)m(um)m(b)s(er)f(to)i(op)s(en)f(w)m(as)h(not)g (explicitly)h(sp)s(eci\014ed)p eop end %%Page: 31 37 -TeXDict begin 31 36 bop 0 299 a Fg(5.2.)72 b(FILE)30 -b(I/O)h(R)m(OUTINES)2693 b Fi(31)227 555 y(as)31 b(part)g(of)g(the)g +TeXDict begin 31 36 bop 0 299 a Fh(5.2.)72 b(FILE)30 +b(I/O)h(R)m(OUTINES)2693 b Fj(31)227 555 y(as)31 b(part)g(of)g(the)g (\014lename,)h(and)e(b\))h(if)g(the)g(FITS)f(\014le)h(con)m(tains)h(a)g (n)m(ull)e(primary)g(arra)m(y)i(\(i.e.,)h(NAXIS)d(=)227 668 y(0\).)41 b(In)26 b(this)i(case,)h(it)f(will)g(lo)s(ok)g(for)f(the) @@ -5092,25 +7169,25 @@ (sp)s(eci\014c)g(HDU)g(name)g(or)g(n)m(um)m(b)s(er)e(is)i(not)f(sp)s (eci\014ed.)227 1120 y(FTIOPN)30 b(will)h(mo)m(v)m(e)h(to)f(the)f (\014rst)g(non-n)m(ull)g(image)i(HDU,)f(skipping)f(o)m(v)m(er)h(an)m(y) -g(tables.)382 1376 y Fe(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 +g(tables.)382 1376 y Ff(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 1489 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 1602 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 -b(>)47 b(status\))0 1858 y Fh(4)81 b Fi(Op)s(en)38 b(and)i(initialize)j +b(>)47 b(status\))0 1858 y Fi(4)81 b Fj(Op)s(en)38 b(and)i(initialize)j (a)e(new)e(empt)m(y)i(FITS)f(\014le.)70 b(A)41 b(template)h(\014le)e (ma)m(y)h(also)g(b)s(e)f(sp)s(eci\014ed)g(to)h(de\014ne)227 1971 y(the)34 b(structure)e(of)h(the)h(new)e(\014le)h(\(see)h(section)g (4.2.4\).)51 b(The)33 b(FTDKINIT)g(routine)g(simply)f(creates)j(the)227 2084 y(sp)s(eci\014ed)30 b(\014le)g(without)h(trying)f(to)h(in)m (terpret)g(the)g(\014lename)f(using)g(the)h(extended)f(\014lename)h -(syn)m(tax.)382 2340 y Fe(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 +(syn)m(tax.)382 2340 y Ff(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 b(>)48 b(status\))382 2453 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o -(e,)42 b(>)47 b(status\))0 2709 y Fh(5)81 b Fi(Close)31 +(e,)42 b(>)47 b(status\))0 2709 y Fi(5)81 b Fj(Close)31 b(a)f(FITS)g(\014le)g(previously)g(op)s(ened)g(with)g(ftop)s(en)g(or)g -(ftinit)382 2965 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0 -3221 y Fh(6)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f +(ftinit)382 2965 y Ff(FTCLOS\(unit,)44 b(>)k(status\))0 +3221 y Fi(6)81 b Fj(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f (\(absolute\))h(HDU)g(in)g(the)f(FITS)g(\014le)g(\(nhdu)f(=)h(1)h(for)f -(the)g(FITS)g(primary)f(arra)m(y\))382 3478 y Fe(FTMAHD\(unit,nhdu,)43 -b(>)k(hdutype,status\))0 3734 y Fh(7)81 b Fi(Create)30 +(the)g(FITS)g(primary)f(arra)m(y\))382 3478 y Ff(FTMAHD\(unit,nhdu,)43 +b(>)k(hdutype,status\))0 3734 y Fi(7)81 b Fj(Create)30 b(a)f(primary)f(arra)m(y)i(\(if)g(none)f(already)g(exists\),)i(or)e (insert)g(a)h(new)f(IMA)m(GE)h(extension)g(immediately)227 3847 y(follo)m(wing)25 b(the)e(CHDU,)g(or)g(insert)g(a)g(new)g(Primary) @@ -5132,9 +7209,9 @@ h(that)f(the)h(4th)227 4637 y(parameter)25 b(\(the)g(length)g(of)f(eac) m(h)h(axis\))g(is)g(an)f(arra)m(y)h(of)f(64-bit)i(in)m(tegers)f(rather) f(than)g(an)g(arra)m(y)h(of)g(32-bit)227 4750 y(in)m(tegers.)382 -5006 y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 +5006 y Ff(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 5119 y(FTIIMGLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)41 -b(>)47 b(status\))0 5375 y Fh(8)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I) +b(>)47 b(status\))0 5375 y Fi(8)81 b Fj(Insert)30 b(a)i(new)f(ASCI)s(I) f(T)-8 b(ABLE)31 b(extension)h(immediately)h(follo)m(wing)f(the)g (CHDU.)g(An)m(y)f(follo)m(wing)i(exten-)227 5488 y(sions)26 b(will)g(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e(for)h @@ -5145,92 +7222,92 @@ (the)f(CHDU.)h(The)f(FTIT)-8 b(ABLL)33 b(routine)g(is)g(iden)m(tical)i (to)f(the)g(FTIT)-8 b(AB)p eop end %%Page: 32 38 -TeXDict begin 32 37 bop 0 299 a Fi(32)1747 b Fg(CHAPTER)30 +TeXDict begin 32 37 bop 0 299 a Fj(32)1747 b Fh(CHAPTER)30 b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227 -555 y Fi(routine)36 b(except)g(that)g(the)f(2nd)g(and)g(3rd)g +555 y Fj(routine)36 b(except)g(that)g(the)f(2nd)g(and)g(3rd)g (parameters)g(\(that)i(giv)m(e)g(the)e(size)h(of)g(the)f(table\))i(are) f(64-bit)227 668 y(in)m(tegers)43 b(rather)f(than)f(32-bit)i(in)m (tegers.)76 b(Under)41 b(normal)g(circumstances,)46 b(the)c(nro)m(ws)f (and)g(nro)m(wsll)227 781 y(paramen)m(ters)f(should)e(ha)m(v)m(e)j(a)f (v)-5 b(alue)40 b(of)f(0;)45 b(CFITSIO)38 b(will)h(automatically)k(up)s (date)38 b(the)i(n)m(um)m(b)s(er)e(of)227 894 y(ro)m(ws)31 -b(as)f(data)h(is)g(written)f(to)h(the)g(table.)382 1158 -y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o(ol,t) -o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 1271 -y(status\))382 1384 y(FTITABLL\(unit,rowlenll,n)o(row)o(sll,)o(tfie)o +b(as)f(data)h(is)g(written)f(to)h(the)g(table.)382 1160 +y Ff(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o(ol,t) +o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 1273 +y(status\))382 1386 y(FTITABLL\(unit,rowlenll,n)o(row)o(sll,)o(tfie)o (lds)o(,tty)o(pe,t)o(bco)o(l,tf)o(orm,)o(tun)o(it,e)o(xtna)o(me,)f(>) -716 1497 y(status\))0 1761 y Fh(9)81 b Fi(Insert)26 b(a)h(new)g(binary) +716 1499 y(status\))0 1765 y Fi(9)81 b Fj(Insert)26 b(a)h(new)g(binary) f(table)h(extension)h(immediately)g(follo)m(wing)h(the)e(CHDU.)g(An)m -(y)g(follo)m(wing)h(extensions)227 1874 y(will)39 b(b)s(e)f(shifted)g +(y)g(follo)m(wing)h(extensions)227 1878 y(will)39 b(b)s(e)f(shifted)g (do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g(for)f(the)g(new)g(extension.)66 b(If)38 b(there)h(are)f(no)h(other)f(follo)m(wing)227 -1987 y(extensions)f(then)g(the)f(new)g(bin)m(table)h(extension)h(will)f +1991 y(extensions)f(then)g(the)f(new)g(bin)m(table)h(extension)h(will)f (simply)f(b)s(e)g(app)s(ended)e(to)k(the)e(end)g(of)h(the)g(\014le.)227 -2100 y(The)23 b(new)g(extension)h(will)f(b)s(ecome)h(the)f(CHDU.)h(The) +2104 y(The)23 b(new)g(extension)h(will)f(b)s(ecome)h(the)f(CHDU.)h(The) f(FTIBINLL)g(routine)g(is)g(iden)m(tical)i(to)f(the)g(FTIBIN)227 -2213 y(routine)30 b(except)i(that)e(the)h(2nd)e(parameter)i(\(that)g +2217 y(routine)30 b(except)i(that)e(the)h(2nd)e(parameter)i(\(that)g (giv)m(es)g(the)g(length)f(of)h(the)f(table\))h(is)g(a)f(64-bit)i(in)m -(teger)227 2325 y(rather)24 b(than)g(a)g(32-bit)h(in)m(teger.)40 +(teger)227 2329 y(rather)24 b(than)g(a)g(32-bit)h(in)m(teger.)40 b(Under)23 b(normal)h(circumstances,)i(the)e(nro)m(ws)f(and)h(nro)m -(wsll)g(paramen)m(ters)227 2438 y(should)31 b(ha)m(v)m(e)i(a)f(v)-5 +(wsll)g(paramen)m(ters)227 2442 y(should)31 b(ha)m(v)m(e)i(a)f(v)-5 b(alue)32 b(of)f(0;)i(CFITSIO)d(will)i(automatically)j(up)s(date)30 b(the)i(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(as)g(data)g(is)227 -2551 y(written)f(to)g(the)f(table.)382 2815 y Fe +2555 y(written)f(to)g(the)f(table.)382 2821 y Ff (FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o(t,ex)o -(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))382 2928 +(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))382 2934 y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o(type)o(,tf)o(orm,)o(tuni)o (t,e)o(xtna)o(me,v)o(ari)o(dat)41 b(>)48 b(status\))0 -3380 y Fd(5.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0 -3624 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j -(record)e(in)m(to)g(the)g(CHU.)382 3888 y Fe(FTPREC\(unit,card,)43 -b(>)k(status\))0 4152 y Fh(2)81 b Fi(Put)28 b(\(app)s(end\))g(a)h(new)g +3388 y Fe(5.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0 +3633 y Fi(1)81 b Fj(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j +(record)e(in)m(to)g(the)g(CHU.)382 3899 y Ff(FTPREC\(unit,card,)43 +b(>)k(status\))0 4165 y Fi(2)81 b Fj(Put)28 b(\(app)s(end\))g(a)h(new)g (k)m(eyw)m(ord)g(of)g(the)g(appropriate)g(datat)m(yp)s(e)h(in)m(to)g -(the)f(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 4265 +(the)f(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 4278 y(of)24 b(this)f(routine)g(ha)m(v)m(e)h(the)g(added)e(feature)i(that)g (if)f(the)g('decimals')i(parameter)f(is)f(negativ)m(e,)k(then)c(the)g -('G')227 4378 y(displa)m(y)30 b(format)g(rather)f(then)g(the)h('E')f +('G')227 4391 y(displa)m(y)30 b(format)g(rather)f(then)g(the)h('E')f (format)h(will)g(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m -(ord)h(v)-5 b(alue,)227 4490 y(taking)27 b(the)g(absolute)g(v)-5 +(ord)h(v)-5 b(alue,)227 4504 y(taking)27 b(the)g(absolute)g(v)-5 b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39 b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227 -4603 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) +4617 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227 -4716 y(the)31 b(v)-5 b(alue.)382 4980 y Fe(FTPKY[JKLS]\(unit,keyword)o +4730 y(the)31 b(v)-5 b(alue.)382 4996 y Ff(FTPKY[JKLS]\(unit,keyword)o (,ke)o(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382 -5093 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o -(omme)o(nt,)41 b(>)48 b(status\))0 5357 y Fh(3)81 b Fi(Get)37 +5109 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o +(omme)o(nt,)41 b(>)48 b(status\))0 5375 y Fi(3)81 b Fj(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f(the)h(CHU.) h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)e(the)h(header)g(is)g(at)227 -5470 y(k)m(ey)p 365 5470 28 4 v 34 w(no)42 b(=)f(1;)49 -b(if)42 b(k)m(ey)p 996 5470 V 34 w(no)g(=)f(0)i(then)e(this)h +5488 y(k)m(ey)p 365 5488 28 4 v 34 w(no)42 b(=)f(1;)49 +b(if)42 b(k)m(ey)p 996 5488 V 34 w(no)g(=)f(0)i(then)e(this)h (subroutine)f(simple)h(mo)m(v)m(es)i(the)e(in)m(ternal)h(p)s(oin)m(ter) -f(to)h(the)227 5583 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g +f(to)h(the)227 5601 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g (subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g -(the)g(top)g(of)g(the)227 5696 y(header;)31 b(it)g(also)g(returns)e(a)i +(the)g(top)g(of)g(the)227 5714 y(header;)31 b(it)g(also)g(returns)e(a)i (blank)f(card)g(v)-5 b(alue)31 b(in)f(this)g(case.)p eop end %%Page: 33 39 -TeXDict begin 33 38 bop 0 299 a Fg(5.4.)72 b(D)m(A)-8 -b(T)g(A)32 b(I/O)f(R)m(OUTINES)2650 b Fi(33)382 555 y -Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 804 -y Fh(4)81 b Fi(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 +TeXDict begin 33 38 bop 0 299 a Fh(5.4.)72 b(D)m(A)-8 +b(T)g(A)32 b(I/O)f(R)m(OUTINES)2650 b Fj(33)382 555 y +Ff(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 804 +y Fi(4)81 b Fj(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(\(with)h(the)f(appropriate)h(datat)m(yp)s(e\))g(and)f(commen)m(t)i -(from)e(the)g(CHU)382 1052 y Fe(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 -b(>)48 b(keyval,comment,status\))0 1301 y Fh(5)81 b Fi(Delete)32 +(from)e(the)g(CHU)382 1052 y Ff(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 +b(>)48 b(keyval,comment,status\))0 1301 y Fi(5)81 b Fj(Delete)32 b(an)e(existing)i(k)m(eyw)m(ord)f(record.)382 1550 y -Fe(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 1881 -y Fd(5.4)135 b(Data)46 b(I/O)g(Routines)0 2132 y Fi(The)32 +Ff(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 1881 +y Fe(5.4)135 b(Data)46 b(I/O)g(Routines)0 2132 y Fj(The)32 b(follo)m(wing)i(routines)e(read)h(or)f(write)h(data)g(v)-5 b(alues)33 b(in)f(the)h(curren)m(t)f(HDU)i(of)e(the)h(FITS)f(\014le.)47 b(Automatic)0 2245 y(datat)m(yp)s(e)28 b(con)m(v)m(ersion)h(will)e(b)s (e)g(attempted)h(for)g(n)m(umerical)f(datat)m(yp)s(es)i(if)e(the)g(sp)s (eci\014ed)g(datat)m(yp)s(e)h(is)f(di\013eren)m(t)0 2357 y(from)j(the)g(actual)i(datat)m(yp)s(e)g(of)e(the)h(FITS)e(arra)m(y)i -(or)f(table)i(column.)0 2606 y Fh(1)81 b Fi(W)-8 b(rite)31 +(or)f(table)i(column.)0 2606 y Fi(1)81 b Fj(W)-8 b(rite)31 b(elemen)m(ts)h(in)m(to)f(the)g(primary)e(data)j(arra)m(y)e(or)h(image) -g(extension.)382 2855 y Fe(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o +g(extension.)382 2855 y Ff(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o (,nel)o(eme)o(nts,)o(valu)o(es,)41 b(>)48 b(status\))0 -3103 y Fh(2)81 b Fi(Read)30 b(elemen)m(ts)j(from)d(the)h(primary)e +3103 y Fi(2)81 b Fj(Read)30 b(elemen)m(ts)j(from)d(the)h(primary)e (data)j(arra)m(y)f(or)g(image)h(extension.)42 b(Unde\014ned)29 b(arra)m(y)j(elemen)m(ts)g(will)227 3216 y(b)s(e)f(returned)f(with)h(a) h(v)-5 b(alue)31 b(=)g(n)m(ullv)-5 b(al,)33 b(unless)d(n)m(ullv)-5 @@ -5238,16 +7315,16 @@ (unde\014ned)227 3329 y(pixels)h(will)f(b)s(e)f(p)s(erformed.)42 b(The)30 b(an)m(yf)i(parameter)f(is)g(set)h(to)g(true)f(\(=)g(.true.\)) 43 b(if)31 b(an)m(y)h(of)f(the)g(returned)227 3442 y(elemen)m(ts)h(w)m -(ere)f(unde\014ned.)382 3691 y Fe(FTGPV[BIJKED]\(unit,group)o(,fp)o +(ere)f(unde\014ned.)382 3691 y Ff(FTGPV[BIJKED]\(unit,group)o(,fp)o (ixel)o(,nel)o(eme)o(nts,)o(null)o(val)o(,)42 b(>)47 -b(values,anyf,status\))0 3939 y Fh(3)81 b Fi(W)-8 b(rite)36 +b(values,anyf,status\))0 3939 y Fi(3)81 b Fj(W)-8 b(rite)36 b(elemen)m(ts)h(in)m(to)f(an)f(ASCI)s(I)e(or)i(binary)g(table)h (column.)54 b(The)35 b(`felem')h(parameter)g(applies)f(only)g(to)227 4052 y(v)m(ector)d(columns)e(in)g(binary)g(tables)h(and)f(is)g(ignored) h(when)e(writing)i(to)g(ASCI)s(I)d(tables.)382 4301 y -Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o +Ff(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o (ent)o(s,va)o(lues)o(,)42 b(>)47 b(status\))0 4549 y -Fh(4)81 b Fi(Read)22 b(elemen)m(ts)h(from)e(an)g(ASCI)s(I)g(or)g +Fi(4)81 b Fj(Read)22 b(elemen)m(ts)h(from)e(an)g(ASCI)s(I)g(or)g (binary)g(table)i(column.)38 b(Unde\014ned)20 b(arra)m(y)i(elemen)m(ts) h(will)f(b)s(e)f(returned)227 4662 y(with)32 b(a)h(v)-5 b(alue)33 b(=)f(n)m(ullv)-5 b(al,)34 b(unless)e(n)m(ullv)-5 @@ -5272,33 +7349,33 @@ (y)j(formats)f(are)g(curren)m(tly)227 5714 y(supp)s(orted:)p eop end %%Page: 34 40 -TeXDict begin 34 39 bop 0 299 a Fi(34)1747 b Fg(CHAPTER)30 +TeXDict begin 34 39 bop 0 299 a Fj(34)1747 b Fh(CHAPTER)30 b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)418 -555 y Fe(Iw.m)142 b(Integer)418 668 y(Ow.m)g(Octal)47 +555 y Ff(Iw.m)142 b(Integer)418 668 y(Ow.m)g(Octal)47 b(integer)418 781 y(Zw.m)142 b(Hexadecimal)45 b(integer)418 894 y(Fw.d)142 b(Fixed)47 b(floating)e(point)418 1007 y(Ew.d)142 b(Exponential)45 b(floating)h(point)418 1120 y(Dw.d)142 b(Exponential)45 b(floating)h(point)418 1233 y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)e(not)i -(lost,)f(else)h(Ew.d)227 1483 y Fi(where)24 b(w)h(is)f(the)h(width)f +(lost,)f(else)h(Ew.d)227 1483 y Fj(where)24 b(w)h(is)f(the)h(width)f (in)g(c)m(haracters)i(of)f(the)g(displa)m(y)m(ed)g(v)-5 b(alues,)27 b(m)d(is)h(the)f(minim)m(um)g(n)m(um)m(b)s(er)g(of)g (digits)227 1595 y(displa)m(y)m(ed,)31 b(and)e(d)h(is)f(the)i(n)m(um)m (b)s(er)d(of)i(digits)g(to)h(the)f(righ)m(t)h(of)f(the)g(decimal.)41 -b(The)29 b(.m)h(\014eld)g(is)g(optional.)382 1855 y Fe +b(The)29 b(.m)h(\014eld)g(is)g(optional.)382 1855 y Ff (FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o (nts)o(,nul)o(lval)o(,)42 b(>)1098 1968 y(values,anyf,status\))0 -2228 y Fh(5)81 b Fi(Get)42 b(the)g(table)h(column)e(n)m(um)m(b)s(er)g +2228 y Fi(5)81 b Fj(Get)42 b(the)g(table)h(column)e(n)m(um)m(b)s(er)g (and)g(full)g(name)h(of)g(the)f(column)h(whose)f(name)h(matc)m(hes)h (the)f(input)227 2341 y(template)35 b(string.)48 b(See)33 b(the)h(`Adv)-5 b(anced)33 b(In)m(terface)h(Routines')f(c)m(hapter)h (for)f(a)g(full)g(description)g(of)g(this)227 2454 y(routine.)382 -2714 y Fe(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42 +2714 y Ff(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42 b(>)47 b(colname,colnum,status\))p eop end %%Page: 35 41 -TeXDict begin 35 40 bop 0 1225 a Ff(Chapter)65 b(6)0 -1687 y Fl(Adv)-13 b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0 -2180 y Fi(This)31 b(c)m(hapter)h(de\014nes)f(all)h(the)g(a)m(v)-5 +TeXDict begin 35 40 bop 0 1225 a Fg(Chapter)65 b(6)0 +1687 y Fm(Adv)-13 b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0 +2180 y Fj(This)31 b(c)m(hapter)h(de\014nes)f(all)h(the)g(a)m(v)-5 b(ailable)34 b(subroutines)d(in)g(the)h(FITSIO)e(user)h(in)m(terface.) 46 b(F)-8 b(or)33 b(completeness,)0 2293 y(the)43 b(basic)g (subroutines)e(describ)s(ed)g(in)i(the)f(previous)h(c)m(hapter)g(are)g @@ -5310,8 +7387,8 @@ (calling)g(sequence.)49 b(An)32 b(alphab)s(etical)i(list)0 2631 y(and)c(de\014nition)g(of)g(all)i(the)e(parameters)h(is)f(giv)m (en)i(at)f(the)f(end)g(of)h(this)f(section.)0 2961 y -Fd(6.1)135 b(FITS)44 b(File)i(Op)t(en)e(and)h(Close)h(Subroutines:)0 -3197 y Fh(1)81 b Fi(Op)s(en)30 b(an)i(existing)g(FITS)g(\014le)f(with)h +Fe(6.1)135 b(FITS)44 b(File)i(Op)t(en)e(and)h(Close)h(Subroutines:)0 +3197 y Fi(1)81 b Fj(Op)s(en)30 b(an)i(existing)g(FITS)g(\014le)f(with)h (readonly)g(or)g(readwrite)g(access.)46 b(The)31 b(FTDK)m(OPN)i (routine)e(simply)227 3310 y(op)s(ens)h(the)g(sp)s(eci\014ed)g(\014le)h (without)f(trying)h(to)g(in)m(terpret)g(the)f(\014lename)h(using)f(the) @@ -5324,12 +7401,12 @@ (the)f(\014rst)f(table)h(HDU)h(or)e(image)i(HDU,)g(resp)s(ectiv)m(ely) -8 b(,)28 b(if)c(a)h(HDU)h(name)227 3762 y(or)31 b(n)m(um)m(b)s(er)e (is)h(not)h(sp)s(eci\014ed)e(as)i(part)f(of)h(the)f(\014lename.)382 -3996 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 +3996 y Ff(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382 4108 y(FTDKOPN\(unit,filename,rw)o(mod)o(e,)42 b(>)47 b(blocksize,status\))382 4334 y(FTDOPN\(unit,filename,rwm)o(ode) o(,)42 b(>)47 b(status\))382 4447 y(FTTOPN\(unit,filename,rwm)o(ode)o (,)42 b(>)47 b(status\))382 4560 y(FTIOPN\(unit,filename,rwm)o(ode)o(,) -42 b(>)47 b(status\))0 4794 y Fh(2)81 b Fi(Op)s(en)24 +42 b(>)47 b(status\))0 4794 y Fi(2)81 b Fj(Op)s(en)24 b(an)i(existing)h(FITS)e(\014le)h(with)f(readonly)h(or)g(readwrite)g (access)h(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)g(extension,)227 4907 y(if)38 b(one)g(w)m(as)g(sp)s(eci\014ed)g(as)g(part)f(of)h(the)h @@ -5338,31 +7415,31 @@ (HDU)i(in)e(the)h(\014le\).)60 b(Note)37 b(that)h(this)e(routine)h (di\013ers)f(from)g(FTOPEN)g(in)g(that)h(it)227 5133 y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize) -j(argumen)m(t.)382 5367 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 -b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Reop)s(en)38 +j(argumen)m(t.)382 5367 y Ff(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 5601 y Fi(3)81 b Fj(Reop)s(en)38 b(a)i(FITS)e(\014le)i(that)f(w)m(as)h(previously)f(op)s(ened)f(with)h (FTOPEN,)g(FTNOPN,)g(or)h(FTINIT.)e(The)227 5714 y(newunit)f(n)m(um)m (b)s(er)f(ma)m(y)j(then)e(b)s(e)g(treated)i(as)f(a)g(separate)g (\014le,)i(and)d(one)h(ma)m(y)h(sim)m(ultaneously)f(read)1905 5942 y(35)p eop end %%Page: 36 42 -TeXDict begin 36 41 bop 0 299 a Fi(36)1319 b Fg(CHAPTER)29 +TeXDict begin 36 41 bop 0 299 a Fj(36)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)227 555 y Fi(or)36 b(write)g(to)g(2)g(\(or)g(more\))g +b(SUBR)m(OUTINES)227 555 y Fj(or)36 b(write)g(to)g(2)g(\(or)g(more\))g (di\013eren)m(t)g(extensions)g(in)f(the)h(same)g(\014le.)56 b(The)35 b(FTOPEN)g(and)g(FTNOPN)227 668 y(routines)f(\(ab)s(o)m(v)m (e\))h(automatically)h(detects)f(cases)g(where)e(a)g(previously)h(op)s (ened)e(\014le)i(is)g(b)s(eing)f(op)s(ened)227 781 y(again,)c(and)e (then)g(in)m(ternally)h(call)g(FTREOPEN,)f(so)h(programs)e(should)h (rarely)g(need)g(to)h(explicitly)h(call)227 894 y(this)i(routine.)334 -1136 y Fe(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0 -1377 y Fh(4)81 b Fi(Op)s(en)24 b(and)g(initialize)k(a)e(new)f(empt)m(y) +1136 y Ff(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0 +1377 y Fi(4)81 b Fj(Op)s(en)24 b(and)g(initialize)k(a)e(new)f(empt)m(y) g(FITS)g(\014le.)39 b(The)25 b(FTDKINIT)g(routine)g(simply)g(creates)i (the)f(sp)s(eci\014ed)227 1490 y(\014le)31 b(without)f(trying)h(to)g (in)m(terpret)f(the)h(\014lename)g(using)e(the)i(extended)f(\014lename) -h(syn)m(tax.)334 1732 y Fe(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41 +h(syn)m(tax.)334 1732 y Ff(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41 b(>)48 b(status\))334 1845 y(FTDKINIT\(unit,filename,bl)o(ock)o(size)o -(,)42 b(>)47 b(status\))0 2087 y Fh(5)81 b Fi(Create)24 +(,)42 b(>)47 b(status\))0 2087 y Fi(5)81 b Fj(Create)24 b(a)g(new)f(FITS)g(\014le,)i(using)e(a)h(template)h(\014le)e(to)i (de\014ne)d(its)i(initial)h(size)g(and)e(structure.)37 b(The)24 b(template)227 2199 y(ma)m(y)39 b(b)s(e)f(another)h(FITS)e @@ -5374,25 +7451,25 @@ (the)i(\014ts)p 2037 2425 28 4 v 32 w(parse)p 2277 2425 V 33 w(template)g(routine)g(\(in)g(the)f(general)i(Utilities)227 2538 y(section\),)32 b(but)e(this)g(ma)m(y)h(c)m(hange)h(sligh)m(tly)g -(later)f(releases)g(of)g(CFITSIO.)334 2780 y Fe(FTTPLT\(unit,)45 -b(filename,)g(tplfilename,)f(>)k(status\))0 3022 y Fh(6)81 -b Fi(Flush)33 b(in)m(ternal)h(bu\013ers)f(of)h(data)g(to)g(the)g +(later)f(releases)g(of)g(CFITSIO.)334 2780 y Ff(FTTPLT\(unit,)45 +b(filename,)g(tplfilename,)f(>)k(status\))0 3022 y Fi(6)81 +b Fj(Flush)33 b(in)m(ternal)h(bu\013ers)f(of)h(data)g(to)g(the)g (output)g(FITS)f(\014le)h(previously)f(op)s(ened)g(with)g(ftop)s(en)h (or)f(ftinit.)227 3135 y(The)j(routine)h(usually)f(nev)m(er)h(needs)f (to)i(b)s(e)e(called,)j(but)d(doing)h(so)g(will)g(ensure)f(that)h(if)f (the)h(program)227 3247 y(subsequen)m(tly)30 b(ab)s(orts,)g(then)h(the) f(FITS)g(\014le)g(will)h(ha)m(v)m(e)h(at)f(least)g(b)s(een)f(closed)h -(prop)s(erly)-8 b(.)382 3489 y Fe(FTFLUS\(unit,)44 b(>)k(status\))0 -3731 y Fh(7)81 b Fi(Close)31 b(a)f(FITS)g(\014le)g(previously)g(op)s -(ened)g(with)g(ftop)s(en)g(or)g(ftinit)382 3973 y Fe(FTCLOS\(unit,)44 -b(>)k(status\))0 4214 y Fh(8)81 b Fi(Close)34 b(and)f(DELETE)g(a)h +(prop)s(erly)-8 b(.)382 3489 y Ff(FTFLUS\(unit,)44 b(>)k(status\))0 +3731 y Fi(7)81 b Fj(Close)31 b(a)f(FITS)g(\014le)g(previously)g(op)s +(ened)g(with)g(ftop)s(en)g(or)g(ftinit)382 3973 y Ff(FTCLOS\(unit,)44 +b(>)k(status\))0 4214 y Fi(8)81 b Fj(Close)34 b(and)f(DELETE)g(a)h (FITS)f(\014le)h(previously)f(op)s(ened)g(with)g(ftop)s(en)g(or)h (ftinit.)51 b(This)33 b(routine)g(ma)m(y)i(b)s(e)227 4327 y(useful)29 b(in)h(cases)g(where)g(a)g(FITS)f(\014le)g(is)h (created,)h(but)e(an)h(error)f(o)s(ccurs)h(whic)m(h)f(prev)m(en)m(ts)i (the)e(complete)227 4440 y(\014le)i(from)f(b)s(eing)g(written.)382 -4682 y Fe(FTDELT\(unit,)44 b(>)k(status\))0 4924 y Fh(9)81 -b Fi(Get)31 b(the)g(v)-5 b(alue)31 b(of)f(an)g(un)m(used)g(I/O)g(unit)g +4682 y Ff(FTDELT\(unit,)44 b(>)k(status\))0 4924 y Fi(9)81 +b Fj(Get)31 b(the)g(v)-5 b(alue)31 b(of)f(an)g(un)m(used)g(I/O)g(unit)g (n)m(um)m(b)s(er)f(whic)m(h)h(ma)m(y)h(then)f(b)s(e)g(used)g(as)g (input)g(to)h(FTOPEN)f(or)227 5036 y(FTINIT.)36 b(This)f(routine)h (searc)m(hes)h(for)f(the)g(\014rst)f(un)m(used)g(unit)g(n)m(um)m(b)s @@ -5411,131 +7488,131 @@ (n)m(um)m(b)s(ers)f(used)g(b)m(y)h(FITSIO)f(b)s(e)h(allo)s(cated)227 5714 y(b)m(y)g(this)f(routine.)p eop end %%Page: 37 43 -TeXDict begin 37 42 bop 0 299 a Fg(6.1.)72 b(FITS)30 +TeXDict begin 37 42 bop 0 299 a Fh(6.1.)72 b(FITS)30 b(FILE)g(OPEN)g(AND)h(CLOSE)e(SUBR)m(OUTINES:)1561 b -Fi(37)382 555 y Fe(FTGIOU\()46 b(>)h(iounit,)f(status\))0 -807 y Fh(10)g Fi(F)-8 b(ree)34 b(\(deallo)s(cate\))i(an)d(I/O)g(unit)f +Fj(37)382 555 y Ff(FTGIOU\()46 b(>)h(iounit,)f(status\))0 +809 y Fi(10)g Fj(F)-8 b(ree)34 b(\(deallo)s(cate\))i(an)d(I/O)g(unit)f (n)m(um)m(b)s(er)g(whic)m(h)g(w)m(as)h(previously)g(allo)s(cated)i -(with)e(FTGIOU.)g(All)g(pre-)227 919 y(viously)28 b(allo)s(cated)i +(with)e(FTGIOU.)g(All)g(pre-)227 922 y(viously)28 b(allo)s(cated)i (unit)d(n)m(um)m(b)s(ers)f(ma)m(y)i(b)s(e)f(deallo)s(cated)j(at)e(once) -h(b)m(y)e(calling)i(FTFIOU)f(with)f(iounit)h(=)227 1032 -y(-1.)382 1284 y Fe(FTFIOU\(iounit,)44 b(>)j(status\))0 -1535 y Fh(11)f Fi(Return)30 b(the)h(F)-8 b(ortran)31 +h(b)m(y)e(calling)i(FTFIOU)f(with)f(iounit)h(=)227 1034 +y(-1.)382 1288 y Ff(FTFIOU\(iounit,)44 b(>)j(status\))0 +1541 y Fi(11)f Fj(Return)30 b(the)h(F)-8 b(ortran)31 b(unit)g(n)m(um)m(b)s(er)e(that)i(corresp)s(onds)f(to)h(the)g(C)g (\014ts\014le)f(p)s(oin)m(ter)h(v)-5 b(alue,)32 b(or)e(vice)i(v)m -(ersa.)227 1648 y(These)37 b(2)h(C)f(routines)g(ma)m(y)g(b)s(e)g +(ersa.)227 1654 y(These)37 b(2)h(C)f(routines)g(ma)m(y)g(b)s(e)g (useful)f(in)h(mixed)g(language)i(programs)e(where)f(b)s(oth)h(C)g(and) -f(F)-8 b(ortran)227 1761 y(subroutines)25 b(need)g(to)i(access)g(the)f +f(F)-8 b(ortran)227 1767 y(subroutines)25 b(need)g(to)i(access)g(the)f (same)g(\014le.)40 b(F)-8 b(or)26 b(example,)i(if)e(a)g(FITS)f(\014le)h -(is)g(op)s(ened)f(with)g(unit)g(12)i(b)m(y)227 1874 y(a)k(F)-8 +(is)g(op)s(ened)f(with)g(unit)g(12)i(b)m(y)227 1880 y(a)k(F)-8 b(ortran)31 b(subroutine,)f(then)g(a)h(C)f(routine)h(within)f(the)g (same)h(program)g(could)f(get)i(the)e(\014t\014le)h(p)s(oin)m(ter)227 -1987 y(v)-5 b(alue)39 b(to)f(access)h(the)f(same)h(\014le)f(b)m(y)f +1993 y(v)-5 b(alue)39 b(to)f(access)h(the)f(same)h(\014le)f(b)m(y)f (calling)j('fptr)d(=)h(CUnit2FITS\(12\)'.)64 b(These)38 -b(routines)g(return)f(a)227 2100 y(v)-5 b(alue)31 b(of)g(zero)g(if)f -(an)g(error)g(o)s(ccurs.)286 2351 y Fe(int)334 b(CFITS2Unit\(fitsfile) -42 b(*ptr\);)286 2464 y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0 -2715 y Fh(11)i Fi(P)m(arse)32 b(the)g(input)e(\014lename)i(and)f +b(routines)g(return)f(a)227 2106 y(v)-5 b(alue)31 b(of)g(zero)g(if)f +(an)g(error)g(o)s(ccurs.)286 2359 y Ff(int)334 b(CFITS2Unit\(fitsfile) +42 b(*ptr\);)286 2472 y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0 +2726 y Fi(11)i Fj(P)m(arse)32 b(the)g(input)e(\014lename)i(and)f (return)f(the)i(HDU)g(n)m(um)m(b)s(er)e(that)i(w)m(ould)f(b)s(e)g(mo)m -(v)m(ed)i(to)f(if)f(the)h(\014le)f(w)m(ere)227 2828 y(op)s(ened)i(with) +(v)m(ed)i(to)f(if)f(the)h(\014le)f(w)m(ere)227 2838 y(op)s(ened)i(with) g(FTNOPN.)g(The)f(returned)g(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)h(with)g (1)g(for)g(the)g(primary)g(arra)m(y)-8 b(,)35 b(so)227 -2941 y(for)d(example,)g(if)g(the)g(input)f(\014lename)g(=)h(`m)m +2951 y(for)d(example,)g(if)g(the)g(input)f(\014lename)g(=)h(`m)m (y\014le.\014ts[2]')h(then)e(hdun)m(um)e(=)j(3)g(will)g(b)s(e)f -(returned.)43 b(FIT-)227 3054 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the) +(returned.)43 b(FIT-)227 3064 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the) g(\014le)g(to)h(c)m(hec)m(k)h(if)e(the)g(extension)h(actually)h(exists) -e(if)h(an)e(extension)i(n)m(um)m(b)s(er)227 3167 y(is)43 +e(if)h(an)e(extension)i(n)m(um)m(b)s(er)227 3177 y(is)43 b(sp)s(eci\014ed.)75 b(If)42 b(an)g(extension)h(*name*)g(is)f(included) g(in)g(the)g(\014le)g(name)h(sp)s(eci\014cation)g(\(e.g.)77 -b(`m)m(y-)227 3280 y(\014le.\014ts[EVENTS]')30 b(then)f(this)h(routine) +b(`m)m(y-)227 3290 y(\014le.\014ts[EVENTS]')30 b(then)f(this)h(routine) g(will)g(ha)m(v)m(e)h(to)f(op)s(en)f(the)h(FITS)f(\014le)h(and)f(lo)s -(ok)h(for)g(the)g(p)s(osition)227 3393 y(of)38 b(the)h(named)e +(ok)h(for)g(the)g(p)s(osition)227 3403 y(of)38 b(the)h(named)e (extension,)k(then)d(close)h(\014le)f(again.)64 b(This)38 b(is)g(not)g(p)s(ossible)f(if)h(the)g(\014le)g(is)g(b)s(eing)g(read)227 -3506 y(from)e(the)g(stdin)f(stream,)j(and)d(an)h(error)f(will)h(b)s(e)g +3516 y(from)e(the)g(stdin)f(stream,)j(and)d(an)h(error)f(will)h(b)s(e)g (returned)e(in)i(this)g(case.)58 b(If)35 b(the)h(\014lename)g(do)s(es)g -(not)227 3619 y(sp)s(ecify)29 b(an)g(explicit)h(extension)g(\(e.g.)42 +(not)227 3629 y(sp)s(ecify)29 b(an)g(explicit)h(extension)g(\(e.g.)42 b('m)m(y\014le.\014ts'\))30 b(then)f(hdun)m(um)e(=)h(-99)j(will)e(b)s -(e)g(returned,)f(whic)m(h)h(is)227 3731 y(functionally)34 +(e)g(returned,)f(whic)m(h)h(is)227 3742 y(functionally)34 b(equiv)-5 b(alen)m(t)35 b(to)g(hdun)m(um)c(=)i(1.)50 b(This)33 b(routine)g(is)h(mainly)g(used)e(for)i(bac)m(kw)m(ard)g -(compati-)227 3844 y(bilit)m(y)g(in)e(the)g(fto)s(ols)h(soft)m(w)m(are) +(compati-)227 3855 y(bilit)m(y)g(in)e(the)g(fto)s(ols)h(soft)m(w)m(are) h(pac)m(k)-5 b(age)34 b(and)e(is)g(not)g(recommended)g(for)g(general)i -(use.)46 b(It)32 b(is)h(generally)227 3957 y(b)s(etter)i(and)g(more)g +(use.)46 b(It)32 b(is)h(generally)227 3968 y(b)s(etter)i(and)g(more)g (e\016cien)m(t)h(to)g(\014rst)e(op)s(en)g(the)h(FITS)f(\014le)h(with)g -(FTNOPN,)g(then)g(use)f(FTGHDN)i(to)227 4070 y(determine)30 +(FTNOPN,)g(then)g(use)f(FTGHDN)i(to)227 4080 y(determine)30 b(whic)m(h)g(HDU)g(in)f(the)h(\014le)g(has)g(b)s(een)f(op)s(ened,)g (rather)g(than)h(calling)h(FTEXTN)f(follo)m(w)m(ed)h(b)m(y)227 -4183 y(a)g(call)h(to)f(FTNOPN.)382 4434 y Fe(FTEXTN\(filename,)43 -b(>)48 b(nhdu,)e(status\))0 4686 y Fh(12)g Fi(Return)30 +4193 y(a)g(call)h(to)f(FTNOPN.)382 4447 y Ff(FTEXTN\(filename,)43 +b(>)48 b(nhdu,)e(status\))0 4700 y Fi(12)g Fj(Return)30 b(the)g(name)h(of)f(the)h(op)s(ened)e(FITS)h(\014le.)382 -4937 y Fe(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0 -5188 y Fh(13)h Fi(Return)30 b(the)g(I/O)g(mo)s(de)g(of)h(the)g(op)s(en) +4954 y Ff(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0 +5207 y Fi(13)h Fj(Return)30 b(the)g(I/O)g(mo)s(de)g(of)h(the)g(op)s(en) e(FITS)h(\014le)g(\(READONL)-8 b(Y)32 b(=)e(0,)h(READ)m(WRITE)g(=)f -(1\).)382 5440 y Fe(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0 -5691 y Fh(14)g Fi(Return)30 b(the)g(\014le)h(t)m(yp)s(e)f(of)h(the)f +(1\).)382 5460 y Ff(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0 +5714 y Fi(14)g Fj(Return)30 b(the)g(\014le)h(t)m(yp)s(e)f(of)h(the)f (op)s(ened)g(FITS)g(\014le)g(\(e.g.)42 b('\014le://',)32 b('ftp://',)g(etc.\).)p eop end %%Page: 38 44 -TeXDict begin 38 43 bop 0 299 a Fi(38)1319 b Fg(CHAPTER)29 +TeXDict begin 38 43 bop 0 299 a Fj(38)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTURLT\(unit,)44 b(>)k(urltype,)d -(status\))0 819 y Fh(15)h Fi(P)m(arse)27 b(the)f(input)f(\014lename)i +b(SUBR)m(OUTINES)382 555 y Ff(FTURLT\(unit,)44 b(>)k(urltype,)d +(status\))0 821 y Fi(15)h Fj(P)m(arse)27 b(the)f(input)f(\014lename)i (or)f(URL)g(in)m(to)h(its)g(comp)s(onen)m(t)f(parts:)39 b(the)26 b(\014le)g(t)m(yp)s(e)h(\(\014le://,)h(ftp://,)g(h)m(ttp://,) -227 932 y(etc\),)34 b(the)e(base)g(input)e(\014le)i(name,)g(the)g(name) +227 934 y(etc\),)34 b(the)e(base)g(input)e(\014le)i(name,)g(the)g(name) g(of)g(the)g(output)f(\014le)h(that)g(the)g(input)f(\014le)g(is)h(to)g -(b)s(e)f(copied)227 1045 y(to)38 b(prior)e(to)h(op)s(ening,)h(the)f +(b)s(e)f(copied)227 1046 y(to)38 b(prior)e(to)h(op)s(ening,)h(the)f (HDU)g(or)f(extension)i(sp)s(eci\014cation,)h(the)e(\014ltering)f(sp)s -(eci\014er,)i(the)f(binning)227 1157 y(sp)s(eci\014er,)e(and)e(the)i +(eci\014er,)i(the)f(binning)227 1159 y(sp)s(eci\014er,)e(and)e(the)i (column)f(sp)s(eci\014er.)51 b(Blank)34 b(strings)g(will)h(b)s(e)e (returned)g(for)h(an)m(y)g(comp)s(onen)m(ts)g(that)227 -1270 y(are)d(not)g(presen)m(t)f(in)g(the)h(input)e(\014le)i(name.)334 -1534 y Fe(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,) -g(extspec,)f(filter,)716 1647 y(binspec,)g(colspec,)h(status\))0 -1910 y Fh(16)g Fi(P)m(arse)e(the)g(input)f(\014le)h(name)f(and)g +1272 y(are)d(not)g(presen)m(t)f(in)g(the)h(input)e(\014le)i(name.)334 +1538 y Ff(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,) +g(extspec,)f(filter,)716 1651 y(binspec,)g(colspec,)h(status\))0 +1916 y Fi(16)g Fj(P)m(arse)e(the)g(input)f(\014le)h(name)f(and)g (return)g(the)h(ro)s(ot)g(\014le)f(name.)81 b(The)43 -b(ro)s(ot)h(name)g(includes)f(the)h(\014le)227 2023 y(t)m(yp)s(e)35 +b(ro)s(ot)h(name)g(includes)f(the)h(\014le)227 2029 y(t)m(yp)s(e)35 b(if)g(sp)s(eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\)) i(and)d(the)h(full)g(path)g(name,)h(to)g(the)f(exten)m(t)i(that)e(it)h -(is)227 2136 y(sp)s(eci\014ed)26 b(in)f(the)i(input)e(\014lename.)39 +(is)227 2142 y(sp)s(eci\014ed)26 b(in)f(the)i(input)e(\014lename.)39 b(It)26 b(do)s(es)g(not)g(include)g(the)g(HDU)h(name)f(or)g(n)m(um)m(b) -s(er,)g(or)g(an)m(y)h(\014ltering)227 2249 y(sp)s(eci\014cations.)334 -2513 y Fe(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0 -2776 y Fh(16)h Fi(T)-8 b(est)36 b(if)g(the)g(input)f(\014le)h(or)f(a)i +s(er,)g(or)g(an)m(y)h(\014ltering)227 2255 y(sp)s(eci\014cations.)334 +2520 y Ff(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0 +2786 y Fi(16)h Fj(T)-8 b(est)36 b(if)g(the)g(input)f(\014le)h(or)f(a)i (compressed)e(v)m(ersion)h(of)g(the)g(\014le)g(\(with)g(a)g(.gz,)i(.Z,) -e(.z,)i(or)e(.zip)g(extension\))227 2889 y(exists)j(on)f(disk.)63 +e(.z,)i(or)e(.zip)g(extension\))227 2899 y(exists)j(on)f(disk.)63 b(The)37 b(returned)g(v)-5 b(alue)38 b(of)g(the)h('exists')g(parameter) f(will)g(ha)m(v)m(e)i(1)e(of)g(the)g(4)g(follo)m(wing)227 -3002 y(v)-5 b(alues:)370 3257 y Fe(2:)95 b(the)47 b(file)g(does)g(not)f +3011 y(v)-5 b(alues:)370 3270 y Ff(2:)95 b(the)47 b(file)g(does)g(not)f (exist,)h(but)f(a)i(compressed)d(version)h(does)g(exist)370 -3370 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370 -3483 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e -(version)h(of)h(the)g(file)g(exist)323 3596 y(-1:)94 +3383 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370 +3496 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e +(version)h(of)h(the)g(file)g(exist)323 3609 y(-1:)94 b(the)47 b(input)g(file)f(name)h(is)g(not)g(a)g(disk)g(file)g(\(could)f -(be)h(a)g(ftp,)g(http,)561 3709 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h +(be)h(a)g(ftp,)g(http,)561 3722 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h (file)e(piped)h(in)g(on)g(the)g(STDIN)f(stream\))286 -3973 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0 -4311 y Fd(6.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0 -4562 y Fi(When)30 b(a)h(FITS)f(\014le)g(is)h(\014rst)e(op)s(ened)h(or)g +3987 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0 +4327 y Fe(6.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0 +4579 y Fj(When)30 b(a)h(FITS)f(\014le)g(is)h(\014rst)e(op)s(ened)h(or)g (created,)i(the)f(in)m(ternal)g(bu\013ers)e(in)h(FITSIO)f -(automatically)34 b(p)s(oin)m(t)c(to)0 4675 y(the)g(\014rst)g(HDU)h(in) +(automatically)34 b(p)s(oin)m(t)c(to)0 4692 y(the)g(\014rst)g(HDU)h(in) f(the)g(\014le.)41 b(The)29 b(follo)m(wing)j(routines)e(ma)m(y)h(b)s(e) e(used)h(to)h(mo)m(v)m(e)g(to)g(another)f(HDU)h(in)f(the)h(\014le.)0 -4788 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)f(con)m(v)m(en)m +4805 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)f(con)m(v)m(en)m (tion)i(used)e(in)g(FITSIO)g(denotes)h(the)f(primary)g(arra)m(y)h(as)g -(the)g(\014rst)0 4901 y(HDU,)e(the)g(\014rst)f(extension)h(in)f(a)g +(the)g(\014rst)0 4918 y(HDU,)e(the)g(\014rst)f(extension)h(in)f(a)g (FITS)g(\014le)g(is)h(the)f(second)h(HDU,)g(and)f(so)h(on.)0 -5164 y Fh(1)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f +5183 y Fi(1)81 b Fj(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f (\(absolute\))h(HDU)g(in)g(the)f(FITS)g(\014le)g(\(nhdu)f(=)h(1)h(for)f -(the)g(FITS)g(primary)f(arra)m(y\))382 5428 y Fe(FTMAHD\(unit,nhdu,)43 -b(>)k(hdutype,status\))0 5691 y Fh(2)81 b Fi(Mo)m(v)m(e)32 +(the)g(FITS)g(primary)f(arra)m(y\))382 5448 y Ff(FTMAHD\(unit,nhdu,)43 +b(>)k(hdutype,status\))0 5714 y Fi(2)81 b Fj(Mo)m(v)m(e)32 b(to)f(a)g(new)f(\(existing\))i(HDU)f(forw)m(ard)f(or)g(bac)m(kw)m (ards)h(relativ)m(e)h(to)f(the)g(CHDU)p eop end %%Page: 39 45 -TeXDict begin 39 44 bop 0 299 a Fg(6.2.)72 b(HDU-LEVEL)31 -b(OPERA)-8 b(TIONS)2414 b Fi(39)382 555 y Fe(FTMRHD\(unit,nmove,)43 -b(>)k(hdutype,status\))0 797 y Fh(3)81 b Fi(Mo)m(v)m(e)22 +TeXDict begin 39 44 bop 0 299 a Fh(6.2.)72 b(HDU-LEVEL)31 +b(OPERA)-8 b(TIONS)2414 b Fj(39)382 555 y Ff(FTMRHD\(unit,nmove,)43 +b(>)k(hdutype,status\))0 797 y Fi(3)81 b Fj(Mo)m(v)m(e)22 b(to)f(the)f(\(\014rst\))h(HDU)g(whic)m(h)f(has)g(the)g(sp)s(eci\014ed) g(extension)h(t)m(yp)s(e)f(and)g(EXTNAME)g(\(or)h(HDUNAME\))227 910 y(and)34 b(EXTVER)g(k)m(eyw)m(ord)h(v)-5 b(alues.)53 @@ -5554,29 +7631,29 @@ (found)e(in)h(the)h(\014le)227 1474 y(then)i(the)g(curren)m(t)g(HDU)h (will)f(remain)g(unc)m(hanged)g(and)g(a)g(status)g(=)g(BAD)p 2884 1474 V 34 w(HDU)p 3123 1474 V 33 w(NUM)h(\(301\))h(will)f(b)s(e) -227 1587 y(returned.)382 1829 y Fe(FTMNHD\(unit,)44 b(hdutype,)i -(extname,)f(extver,)h(>)i(status\))0 2071 y Fh(4)81 b -Fi(Get)31 b(the)g(n)m(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(HDU)h(in)f +227 1587 y(returned.)382 1829 y Ff(FTMNHD\(unit,)44 b(hdutype,)i +(extname,)f(extver,)h(>)i(status\))0 2071 y Fi(4)81 b +Fj(Get)31 b(the)g(n)m(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(HDU)h(in)f (the)h(FITS)e(\014le)i(\(primary)f(arra)m(y)g(=)g(1\))382 -2312 y Fe(FTGHDN\(unit,)44 b(>)k(nhdu\))0 2554 y Fh(5)81 -b Fi(Return)39 b(the)i(t)m(yp)s(e)g(of)g(the)g(curren)m(t)f(HDU)i(in)e +2312 y Ff(FTGHDN\(unit,)44 b(>)k(nhdu\))0 2554 y Fi(5)81 +b Fj(Return)39 b(the)i(t)m(yp)s(e)g(of)g(the)g(curren)m(t)f(HDU)i(in)e (the)h(FITS)f(\014le.)71 b(The)41 b(p)s(ossible)f(v)-5 b(alues)41 b(for)f(hdut)m(yp)s(e)g(are)227 2667 y(IMA)m(GE)p 546 2667 V 34 w(HDU)31 b(\(0\),)h(ASCI)s(I)p 1242 2667 V 31 w(TBL)e(\(1\),)i(or)e(BINAR)-8 b(Y)p 2133 2667 V -34 w(TBL)30 b(\(2\).)382 2909 y Fe(FTGHDT\(unit,)44 b(>)k(hdutype,)d -(status\))0 3150 y Fh(6)81 b Fi(Return)29 b(the)i(total)h(n)m(um)m(b)s +34 w(TBL)30 b(\(2\).)382 2909 y Ff(FTGHDT\(unit,)44 b(>)k(hdutype,)d +(status\))0 3150 y Fi(6)81 b Fj(Return)29 b(the)i(total)h(n)m(um)m(b)s (er)d(of)i(HDUs)f(in)h(the)f(FITS)g(\014le.)41 b(The)29 -b(CHDU)i(remains)f(unc)m(hanged.)382 3392 y Fe(FTTHDU\(unit,)44 -b(>)k(hdunum,)e(status\))0 3634 y Fh(7)81 b Fi(Create)34 +b(CHDU)i(remains)f(unc)m(hanged.)382 3392 y Ff(FTTHDU\(unit,)44 +b(>)k(hdunum,)e(status\))0 3634 y Fi(7)81 b Fj(Create)34 b(\(app)s(end\))f(a)i(new)e(empt)m(y)h(HDU)h(at)g(the)f(end)f(of)h(the) h(FITS)e(\014le.)51 b(This)33 b(new)h(HDU)h(b)s(ecomes)f(the)227 3747 y(Curren)m(t)j(HDU,)i(but)e(it)h(is)g(completely)h(empt)m(y)f(and) g(con)m(tains)h(no)e(header)h(k)m(eyw)m(ords)g(or)g(data.)63 b(It)38 b(is)227 3860 y(recommended)30 b(that)h(FTI)s(IMG,)g(FTIT)-8 b(AB)30 b(or)h(FTIBIN)f(b)s(e)g(used)g(instead)g(of)h(this)f(routine.) -382 4101 y Fe(FTCRHD\(unit,)44 b(>)k(status\))0 4343 -y Fh(8)81 b Fi(Create)30 b(a)f(primary)f(arra)m(y)i(\(if)g(none)f +382 4101 y Ff(FTCRHD\(unit,)44 b(>)k(status\))0 4343 +y Fi(8)81 b Fj(Create)30 b(a)f(primary)f(arra)m(y)i(\(if)g(none)f (already)g(exists\),)i(or)e(insert)g(a)h(new)f(IMA)m(GE)h(extension)g (immediately)227 4456 y(follo)m(wing)25 b(the)e(CHDU,)g(or)g(insert)g (a)g(new)g(Primary)f(Arra)m(y)h(at)h(the)f(b)s(eginning)f(of)h(the)g @@ -5597,13 +7674,13 @@ h(that)f(the)h(4th)227 5246 y(parameter)25 b(\(the)g(length)g(of)f(eac) m(h)h(axis\))g(is)g(an)f(arra)m(y)h(of)f(64-bit)i(in)m(tegers)f(rather) f(than)g(an)g(arra)m(y)h(of)g(32-bit)227 5359 y(in)m(tegers.)382 -5601 y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 +5601 y Ff(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 5714 y(FTIIMGLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)41 b(>)47 b(status\))p eop end %%Page: 40 46 -TeXDict begin 40 45 bop 0 299 a Fi(40)1319 b Fg(CHAPTER)29 +TeXDict begin 40 45 bop 0 299 a Fj(40)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fh(9)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I)f +b(SUBR)m(OUTINES)0 555 y Fi(9)81 b Fj(Insert)30 b(a)i(new)f(ASCI)s(I)f (T)-8 b(ABLE)31 b(extension)h(immediately)h(follo)m(wing)f(the)g(CHDU.) g(An)m(y)f(follo)m(wing)i(exten-)227 668 y(sions)26 b(will)g(b)s(e)f (shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e(for)h(the)f(new)g @@ -5615,73 +7692,73 @@ (FTIT)-8 b(AB)227 1007 y(routine)36 b(except)g(that)g(the)f(2nd)g(and)g (3rd)g(parameters)g(\(that)i(giv)m(e)g(the)e(size)h(of)g(the)f(table\)) i(are)f(64-bit)227 1120 y(in)m(tegers)c(rather)e(than)g(32-bit)i(in)m -(tegers.)382 1374 y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o +(tegers.)382 1377 y Ff(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o (ype)o(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 -b(>)716 1487 y(status\))382 1600 y(FTITABLL\(unit,rowlenll,n)o(row)o +b(>)716 1490 y(status\))382 1603 y(FTITABLL\(unit,rowlenll,n)o(row)o (sll,)o(tfie)o(lds)o(,tty)o(pe,t)o(bco)o(l,tf)o(orm,)o(tun)o(it,e)o -(xtna)o(me,)f(>)716 1713 y(status\))0 1968 y Fh(10)46 -b Fi(Insert)25 b(a)h(new)f(binary)f(table)j(extension)f(immediately)g +(xtna)o(me,)f(>)716 1716 y(status\))0 1974 y Fi(10)46 +b Fj(Insert)25 b(a)h(new)f(binary)f(table)j(extension)f(immediately)g (follo)m(wing)h(the)f(CHDU.)g(An)m(y)g(follo)m(wing)g(extensions)227 -2081 y(will)39 b(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g +2087 y(will)39 b(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g (for)f(the)g(new)g(extension.)66 b(If)38 b(there)h(are)f(no)h(other)f -(follo)m(wing)227 2194 y(extensions)f(then)g(the)f(new)g(bin)m(table)h +(follo)m(wing)227 2199 y(extensions)f(then)g(the)f(new)g(bin)m(table)h (extension)h(will)f(simply)f(b)s(e)g(app)s(ended)e(to)k(the)e(end)g(of) -h(the)g(\014le.)227 2307 y(The)23 b(new)g(extension)h(will)f(b)s(ecome) +h(the)g(\014le.)227 2312 y(The)23 b(new)g(extension)h(will)f(b)s(ecome) h(the)f(CHDU.)h(The)f(FTIBINLL)g(routine)g(is)g(iden)m(tical)i(to)f -(the)g(FTIBIN)227 2419 y(routine)30 b(except)i(that)e(the)h(2nd)e +(the)g(FTIBIN)227 2425 y(routine)30 b(except)i(that)e(the)h(2nd)e (parameter)i(\(that)g(giv)m(es)g(the)g(length)f(of)h(the)f(table\))h -(is)g(a)f(64-bit)i(in)m(teger)227 2532 y(rather)f(than)f(a)g(32-bit)i -(in)m(teger.)382 2787 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o +(is)g(a)f(64-bit)i(in)m(teger)227 2538 y(rather)f(than)f(a)g(32-bit)i +(in)m(teger.)382 2796 y Ff(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o (,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41 -b(>)48 b(status\))382 2900 y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o +b(>)48 b(status\))382 2909 y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o (type)o(,tf)o(orm,)o(tuni)o(t,e)o(xtna)o(me,v)o(ari)o(dat)41 -b(>)48 b(status\))0 3267 y Fh(11)e Fi(Resize)26 b(an)e(image)i(b)m(y)e +b(>)48 b(status\))0 3279 y Fi(11)e Fj(Resize)26 b(an)e(image)i(b)m(y)e (mo)s(di\014ng)f(the)i(size,)i(dimensions,)e(and/or)f(datat)m(yp)s(e)h -(of)g(the)g(curren)m(t)f(primary)f(arra)m(y)227 3380 +(of)g(the)g(curren)m(t)f(primary)f(arra)m(y)227 3392 y(or)29 b(image)i(extension.)40 b(If)29 b(the)g(new)g(image,)i(as)e(sp) s(eci\014ed)f(b)m(y)h(the)g(input)f(argumen)m(ts,)i(is)f(larger)h(than) -f(the)227 3493 y(curren)m(t)34 b(existing)h(image)g(in)f(the)g(FITS)f +f(the)227 3505 y(curren)m(t)34 b(existing)h(image)g(in)f(the)g(FITS)f (\014le)h(then)f(zero)i(\014ll)f(data)h(will)f(b)s(e)f(inserted)h(at)g -(the)g(end)g(of)g(the)227 3606 y(curren)m(t)25 b(image)h(and)e(an)m(y)i +(the)g(end)g(of)g(the)227 3618 y(curren)m(t)25 b(image)h(and)e(an)m(y)i (follo)m(wing)g(extensions)g(will)f(b)s(e)f(mo)m(v)m(ed)i(further)e (bac)m(k)h(in)g(the)g(\014le.)39 b(Similarly)-8 b(,)27 -b(if)227 3719 y(the)h(new)e(image)j(is)e(smaller)h(than)f(the)g(curren) +b(if)227 3731 y(the)h(new)e(image)j(is)e(smaller)h(than)f(the)g(curren) m(t)g(image)h(then)f(an)m(y)h(follo)m(wing)h(extensions)e(will)h(b)s(e) -e(shifted)227 3832 y(up)32 b(to)m(w)m(ards)i(the)g(b)s(eginning)e(of)h +e(shifted)227 3844 y(up)32 b(to)m(w)m(ards)i(the)g(b)s(eginning)e(of)h (the)h(FITS)e(\014le)h(and)g(the)g(image)h(data)g(will)g(b)s(e)e -(truncated)h(to)h(the)f(new)227 3945 y(size.)41 b(This)25 +(truncated)h(to)h(the)f(new)227 3957 y(size.)41 b(This)25 b(routine)h(rewrites)h(the)f(BITPIX,)h(NAXIS,)f(and)g(NAXISn)g(k)m(eyw) -m(ords)g(with)g(the)h(appropriate)227 4058 y(v)-5 b(alues)37 +m(ords)g(with)g(the)h(appropriate)227 4070 y(v)-5 b(alues)37 b(for)f(new)h(image.)60 b(The)36 b(FTRSIMLL)g(routine)g(is)h(iden)m -(tical)h(to)g(the)e(FTRSIM)g(routine)h(except)227 4171 +(tical)h(to)g(the)e(FTRSIM)g(routine)h(except)227 4183 y(that)30 b(the)g(4th)g(parameter)g(\(the)g(length)g(of)f(eac)m(h)i (axis\))f(is)g(an)f(arra)m(y)h(of)g(64-bit)h(in)m(tegers)f(rather)g -(than)f(an)227 4284 y(arra)m(y)i(of)g(32-bit)g(in)m(tegers.)382 -4538 y Fe(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))382 -4651 y(FTRSIMLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)o(sta)o(tus\))0 -4906 y Fh(12)46 b Fi(Delete)34 b(the)f(CHDU)g(in)f(the)g(FITS)f +(than)f(an)227 4295 y(arra)m(y)i(of)g(32-bit)g(in)m(tegers.)382 +4553 y Ff(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))382 +4666 y(FTRSIMLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)o(sta)o(tus\))0 +4924 y Fi(12)46 b Fj(Delete)34 b(the)f(CHDU)g(in)f(the)g(FITS)f (\014le.)47 b(An)m(y)32 b(follo)m(wing)i(HDUs)f(will)g(b)s(e)e(shifted) -h(forw)m(ard)g(in)g(the)g(\014le,)h(to)227 5019 y(\014ll)38 +h(forw)m(ard)g(in)g(the)g(\014le,)h(to)227 5036 y(\014ll)38 b(in)f(the)g(gap)h(created)g(b)m(y)g(the)f(deleted)h(HDU.)h(In)d(the)i (case)g(of)g(deleting)g(the)g(primary)e(arra)m(y)i(\(the)227 -5132 y(\014rst)30 b(HDU)h(in)f(the)h(\014le\))g(then)f(the)h(curren)m +5149 y(\014rst)30 b(HDU)h(in)f(the)h(\014le\))g(then)f(the)h(curren)m (t)f(primary)f(arra)m(y)i(will)g(b)s(e)f(replace)h(b)m(y)g(a)g(n)m(ull) -f(primary)f(arra)m(y)227 5245 y(con)m(taining)k(the)f(minim)m(um)e(set) +f(primary)f(arra)m(y)227 5262 y(con)m(taining)k(the)f(minim)m(um)e(set) i(of)g(required)e(k)m(eyw)m(ords)i(and)e(no)i(data.)44 -b(If)31 b(there)g(are)h(more)f(extensions)227 5357 y(in)f(the)g(\014le) +b(If)31 b(there)g(are)h(more)f(extensions)227 5375 y(in)f(the)g(\014le) g(follo)m(wing)i(the)e(one)g(that)h(is)f(deleted,)h(then)f(the)g(the)g (CHDU)h(will)f(b)s(e)g(rede\014ned)e(to)j(p)s(oin)m(t)f(to)227 -5470 y(the)d(follo)m(wing)h(extension.)41 b(If)26 b(there)h(are)g(no)g +5488 y(the)d(follo)m(wing)h(extension.)41 b(If)26 b(there)h(are)g(no)g (follo)m(wing)h(extensions)f(then)g(the)g(CHDU)g(will)g(b)s(e)f -(rede\014ned)227 5583 y(to)35 b(p)s(oin)m(t)f(to)h(the)f(previous)f +(rede\014ned)227 5601 y(to)35 b(p)s(oin)m(t)f(to)h(the)f(previous)f (HDU.)i(The)e(output)h(HDUTYPE)g(parameter)h(indicates)f(the)h(t)m(yp)s -(e)f(of)g(the)227 5696 y(new)c(CHDU)h(after)g(the)f(previous)g(CHDU)h +(e)f(of)g(the)227 5714 y(new)c(CHDU)h(after)g(the)f(previous)g(CHDU)h (has)f(b)s(een)g(deleted.)p eop end %%Page: 41 47 -TeXDict begin 41 46 bop 0 299 a Fg(6.3.)72 b(DEFINE)31 +TeXDict begin 41 46 bop 0 299 a Fh(6.3.)72 b(DEFINE)31 b(OR)f(REDEFINE)h(THE)f(STR)m(UCTURE)f(OF)h(THE)g(CHDU)1042 -b Fi(41)382 555 y Fe(FTDHDU\(unit,)44 b(>)k(hdutype,status\))0 -828 y Fh(13)e Fi(Cop)m(y)36 b(all)h(or)f(part)g(of)g(the)g(input)f +b Fj(41)382 555 y Ff(FTDHDU\(unit,)44 b(>)k(hdutype,status\))0 +828 y Fi(13)e Fj(Cop)m(y)36 b(all)h(or)f(part)g(of)g(the)g(input)f (FITS)g(\014le)h(and)g(app)s(end)e(it)i(to)h(the)f(end)g(of)g(the)g (output)g(FITS)f(\014le.)57 b(If)227 941 y('previous')39 b(\(an)g(in)m(teger)h(parameter\))g(is)f(not)g(equal)g(to)h(0,)h(then)e @@ -5696,17 +7773,17 @@ 1393 y(will)g(b)s(e)e(copied.)41 b(On)30 b(return,)f(the)h(curren)m(t)g (HDU)h(in)f(the)g(input)f(\014le)h(will)h(b)s(e)e(unc)m(hanged,)h(and)g (the)g(last)227 1506 y(copied)h(HDU)g(will)g(b)s(e)f(the)g(curren)m(t)g -(HDU)i(in)e(the)g(output)g(\014le.)382 1779 y Fe(FTCPFL\(iunit,)44 +(HDU)i(in)e(the)g(output)g(\014le.)382 1779 y Ff(FTCPFL\(iunit,)44 b(ounit,)i(previous,)f(current,)h(following,)f(>)i(status\))0 -2052 y Fh(14)f Fi(Cop)m(y)35 b(the)f(en)m(tire)i(CHDU)f(from)f(the)g +2052 y Fi(14)f Fj(Cop)m(y)35 b(the)f(en)m(tire)i(CHDU)f(from)f(the)g (FITS)g(\014le)h(asso)s(ciated)h(with)e(IUNIT)g(to)i(the)e(CHDU)h(of)g (the)g(FITS)227 2165 y(\014le)g(asso)s(ciated)h(with)e(OUNIT.)g(The)g (output)g(HDU)h(m)m(ust)f(b)s(e)g(empt)m(y)h(and)e(not)i(already)g(con) m(tain)h(an)m(y)227 2278 y(k)m(eyw)m(ords.)41 b(Space)29 b(will)g(b)s(e)g(reserv)m(ed)g(for)g(MOREKEYS)f(additional)h(k)m(eyw)m (ords)h(in)e(the)i(output)e(header)227 2391 y(if)j(there)f(is)h(not)f -(already)h(enough)f(space.)382 2664 y Fe(FTCOPY\(iunit,ounit,morek)o -(eys)o(,)42 b(>)47 b(status\))0 2937 y Fh(15)f Fi(Cop)m(y)27 +(already)h(enough)f(space.)382 2664 y Ff(FTCOPY\(iunit,ounit,morek)o +(eys)o(,)42 b(>)47 b(status\))0 2937 y Fi(15)f Fj(Cop)m(y)27 b(the)h(header)f(\(and)g(not)g(the)g(data\))i(from)d(the)i(CHDU)g(asso) s(ciated)g(with)f(in)m(unit)g(to)h(the)f(CHDU)h(asso-)227 3050 y(ciated)f(with)e(outunit.)39 b(If)25 b(the)g(curren)m(t)h(output) @@ -5719,8 +7796,8 @@ y(an)27 b(image)h(extension)f(to)g(a)h(primary)d(arra)m(y)-8 b(.)41 b(An)26 b(empt)m(y)h(output)f(data)i(unit)e(will)h(b)s(e)f (created)i(\(all)g(v)-5 b(alues)227 3501 y(=)30 b(0\).)382 -3775 y Fe(FTCPHD\(inunit,)44 b(outunit,)h(>)j(status\))0 -4048 y Fh(16)e Fi(Cop)m(y)d(just)g(the)g(data)h(from)f(the)g(CHDU)h +3775 y Ff(FTCPHD\(inunit,)44 b(outunit,)h(>)j(status\))0 +4048 y Fi(16)e Fj(Cop)m(y)d(just)g(the)g(data)h(from)f(the)g(CHDU)h (asso)s(ciated)g(with)f(IUNIT)g(to)h(the)f(CHDU)h(asso)s(ciated)g(with) 227 4161 y(OUNIT.)26 b(This)f(will)h(o)m(v)m(erwrite)h(an)m(y)f(data)g (previously)g(in)f(the)h(OUNIT)f(CHDU.)h(This)f(lo)m(w)i(lev)m(el)g @@ -5731,18 +7808,18 @@ (dify)e(the)h(header)g(k)m(eyw)m(ords)g(in)227 4499 y(the)j(pro)s (cess.)44 b(all)33 b(the)f(required)f(header)g(k)m(eyw)m(ords)h(m)m (ust)g(b)s(e)f(written)h(to)g(the)g(OUNIT)f(CHDU)h(b)s(efore)227 -4612 y(calling)g(this)e(routine)382 4885 y Fe(FTCPDT\(iunit,ounit,)42 -b(>)48 b(status\))0 5235 y Fd(6.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h -(the)f(structure)g(of)g(the)g(CHDU)0 5488 y Fi(It)32 +4612 y(calling)g(this)e(routine)382 4885 y Ff(FTCPDT\(iunit,ounit,)42 +b(>)48 b(status\))0 5235 y Fe(6.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h +(the)f(structure)g(of)g(the)g(CHDU)0 5488 y Fj(It)32 b(should)f(rarely)h(b)s(e)g(necessary)g(to)h(call)g(the)f(subroutines)f (in)g(this)h(section.)47 b(FITSIO)30 b(in)m(ternally)j(calls)g(these)0 5601 y(routines)h(whenev)m(er)g(necessary)-8 b(,)36 b(so)e(an)m(y)g (calls)h(to)g(these)f(routines)g(b)m(y)g(application)h(programs)f(will) g(lik)m(ely)i(b)s(e)0 5714 y(redundan)m(t.)p eop end %%Page: 42 48 -TeXDict begin 42 47 bop 0 299 a Fi(42)1319 b Fg(CHAPTER)29 +TeXDict begin 42 47 bop 0 299 a Fj(42)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fh(1)81 b Fi(This)36 b(routine)h(forces)h +b(SUBR)m(OUTINES)0 555 y Fi(1)81 b Fj(This)36 b(routine)h(forces)h (FITSIO)e(to)i(scan)f(the)g(curren)m(t)g(header)g(k)m(eyw)m(ords)h (that)f(de\014ne)g(the)g(structure)g(of)227 668 y(the)31 b(HDU)f(\(suc)m(h)g(as)h(the)f(NAXISn,)g(PCOUNT)f(and)g(GCOUNT)h(k)m @@ -5755,418 +7832,418 @@ (of)g(an)f(HDU,)i(if)f(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)g(a)g (table,)i(as)e(sp)s(eci\014ed)f(b)m(y)h(the)227 1120 y(NAXIS2)d(k)m(eyw)m(ord,)g(has)f(b)s(een)g(mo)s(di\014ed)f(from)h(its) -h(initial)g(v)-5 b(alue.)382 1361 y Fe(FTRDEF\(unit,)44 -b(>)k(status\))141 b(\(DEPRECATED\))0 1602 y Fh(2)81 -b Fi(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)f(arra)m(y)i +h(initial)g(v)-5 b(alue.)382 1363 y Ff(FTRDEF\(unit,)44 +b(>)k(status\))141 b(\(DEPRECATED\))0 1606 y Fi(2)81 +b Fj(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)f(arra)m(y)i (or)f(IMA)m(GE)h(extension.)40 b(When)27 b(writing)g(GR)m(OUP)m(ed)h -(FITS)227 1715 y(\014les)43 b(that)h(b)m(y)e(con)m(v)m(en)m(tion)k(set) +(FITS)227 1719 y(\014les)43 b(that)h(b)m(y)e(con)m(v)m(en)m(tion)k(set) d(the)g(NAXIS1)g(k)m(eyw)m(ord)h(equal)f(to)h(0,)i(ftp)s(def)c(m)m(ust) -h(b)s(e)f(called)i(with)227 1828 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i +h(b)s(e)f(called)i(with)227 1832 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i (otherwise)f(FITSIO)e(will)i(rep)s(ort)f(an)g(error)g(status=308)i -(when)d(trying)i(to)g(write)227 1941 y(data)31 b(to)g(a)g(group.)40 +(when)d(trying)i(to)g(write)227 1945 y(data)31 b(to)g(a)g(group.)40 b(Note:)i(it)31 b(is)g(usually)f(simpler)g(to)h(call)h(FTRDEF)e(rather) -h(than)f(this)g(routine.)382 2182 y Fe(FTPDEF\(unit,bitpix,naxis)o(,na) +h(than)f(this)g(routine.)382 2188 y Ff(FTPDEF\(unit,bitpix,naxis)o(,na) o(xes,)o(pcou)o(nt,)o(gcou)o(nt,)41 b(>)48 b(status\))93 -b(\(DEPRECATED\))0 2424 y Fh(3)81 b Fi(De\014ne)32 b(the)h(structure)f +b(\(DEPRECATED\))0 2431 y Fi(3)81 b Fj(De\014ne)32 b(the)h(structure)f (of)g(an)h(ASCI)s(I)e(table)i(\(T)-8 b(ABLE\))33 b(extension.)48 b(Note:)e(it)33 b(is)f(usually)g(simpler)g(to)i(call)227 -2537 y(FTRDEF)d(rather)f(than)h(this)f(routine.)382 2778 -y Fe(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 -b(>)47 b(status\))f(\(DEPRECATED\))0 3019 y Fh(4)81 b -Fi(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)f(table)h(\(BINT)-8 +2544 y(FTRDEF)d(rather)f(than)h(this)f(routine.)382 2787 +y Ff(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 +b(>)47 b(status\))f(\(DEPRECATED\))0 3030 y Fi(4)81 b +Fj(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)f(table)h(\(BINT)-8 b(ABLE\))37 b(extension.)56 b(Note:)d(it)36 b(is)f(usually)g(simpler)g -(to)227 3132 y(call)d(FTRDEF)f(rather)f(than)g(this)g(routine.)382 -3373 y Fe(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 -b(>)47 b(status\))f(\(DEPRECATED\))0 3615 y Fh(5)81 b -Fi(De\014ne)34 b(the)g(size)h(of)f(the)g(Curren)m(t)f(Data)i(Unit,)h(o) +(to)227 3143 y(call)d(FTRDEF)f(rather)f(than)g(this)g(routine.)382 +3386 y Ff(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 +b(>)47 b(status\))f(\(DEPRECATED\))0 3630 y Fi(5)81 b +Fj(De\014ne)34 b(the)g(size)h(of)f(the)g(Curren)m(t)f(Data)i(Unit,)h(o) m(v)m(erriding)e(the)g(length)h(of)f(the)g(data)h(unit)e(as)h -(previously)227 3728 y(de\014ned)e(b)m(y)h(ftp)s(def,)g(ftadef,)i(or)e +(previously)227 3742 y(de\014ned)e(b)m(y)h(ftp)s(def,)g(ftadef,)i(or)e (ftb)s(def.)48 b(This)33 b(is)g(useful)f(if)i(one)f(do)s(es)g(not)h -(kno)m(w)f(the)g(total)i(size)f(of)g(the)227 3841 y(data)f(unit)f(un)m +(kno)m(w)f(the)g(total)i(size)f(of)g(the)227 3855 y(data)f(unit)f(un)m (til)h(after)f(the)h(data)g(ha)m(v)m(e)g(b)s(een)f(written.)46 b(The)32 b(size)h(\(in)f(b)m(ytes\))h(of)g(an)f(ASCI)s(I)f(or)h(Binary) -227 3954 y(table)27 b(is)f(giv)m(en)g(b)m(y)g(NAXIS1)g(*)g(NAXIS2.)40 +227 3968 y(table)27 b(is)f(giv)m(en)g(b)m(y)g(NAXIS1)g(*)g(NAXIS2.)40 b(\(Note)27 b(that)f(to)h(determine)f(the)f(v)-5 b(alue)27 -b(of)f(NAXIS1)f(it)i(is)f(often)227 4066 y(more)32 b(con)m(v)m(enien)m +b(of)f(NAXIS1)f(it)i(is)f(often)227 4081 y(more)32 b(con)m(v)m(enien)m (t)h(to)f(read)f(the)g(v)-5 b(alue)32 b(of)f(the)h(NAXIS1)f(k)m(eyw)m (ord)h(from)e(the)i(output)e(\014le,)i(rather)f(than)227 -4179 y(computing)f(the)g(ro)m(w)g(length)h(directly)f(from)f(all)i(the) +4194 y(computing)f(the)g(ro)m(w)g(length)h(directly)f(from)f(all)i(the) f(TF)m(ORM)h(k)m(eyw)m(ord)f(v)-5 b(alues\).)41 b(Note:)h(it)30 -b(is)g(usually)227 4292 y(simpler)g(to)h(call)h(FTRDEF)f(rather)f(than) -g(this)g(routine.)382 4534 y Fe(FTDDEF\(unit,bytlen,)42 -b(>)48 b(status\))e(\(DEPRECATED\))0 4775 y Fh(6)81 b -Fi(De\014ne)22 b(the)g(zero)i(indexed)d(b)m(yte)i(o\013set)g(of)g(the)f +b(is)g(usually)227 4307 y(simpler)g(to)h(call)h(FTRDEF)f(rather)f(than) +g(this)g(routine.)382 4550 y Ff(FTDDEF\(unit,bytlen,)42 +b(>)48 b(status\))e(\(DEPRECATED\))0 4793 y Fi(6)81 b +Fj(De\014ne)22 b(the)g(zero)i(indexed)d(b)m(yte)i(o\013set)g(of)g(the)f ('heap')h(measured)e(from)h(the)h(start)g(of)f(the)g(binary)g(table)h -(data.)227 4888 y(By)30 b(default)g(the)f(heap)h(is)f(assumed)g(to)h +(data.)227 4906 y(By)30 b(default)g(the)f(heap)h(is)f(assumed)g(to)h (start)g(immediately)h(follo)m(wing)g(the)f(regular)f(table)i(data,)f -(i.e.,)h(at)227 5001 y(lo)s(cation)38 b(NAXIS1)f(x)g(NAXIS2.)59 +(i.e.,)h(at)227 5019 y(lo)s(cation)38 b(NAXIS1)f(x)g(NAXIS2.)59 b(This)36 b(routine)g(is)h(only)f(relev)-5 b(an)m(t)38 -b(for)e(binary)g(tables)h(whic)m(h)g(con)m(tain)227 5114 +b(for)e(binary)g(tables)h(whic)m(h)g(con)m(tain)227 5132 y(v)-5 b(ariable)36 b(length)g(arra)m(y)f(columns)g(\(with)h(TF)m(ORMn) f(=)f('Pt'\).)57 b(This)34 b(subroutine)g(also)i(automatically)227 -5227 y(writes)23 b(the)g(v)-5 b(alue)23 b(of)g(theap)g(to)h(a)f(k)m +5245 y(writes)23 b(the)g(v)-5 b(alue)23 b(of)g(theap)g(to)h(a)f(k)m (eyw)m(ord)g(in)g(the)g(extension)g(header.)38 b(This)22 -b(subroutine)g(m)m(ust)h(b)s(e)f(called)227 5339 y(after)27 +b(subroutine)g(m)m(ust)h(b)s(e)f(called)227 5358 y(after)27 b(the)f(required)f(k)m(eyw)m(ords)i(ha)m(v)m(e)g(b)s(een)e(written)h (\(with)g(ftph)m(bn\))f(and)h(after)g(the)h(table)g(structure)e(has)227 -5452 y(b)s(een)30 b(de\014ned)f(\(with)h(ftb)s(def)7 +5471 y(b)s(een)30 b(de\014ned)f(\(with)h(ftb)s(def)7 b(\))30 b(but)g(b)s(efore)g(an)m(y)g(data)h(is)g(written)f(to)h(the)g -(table.)382 5694 y Fe(FTPTHP\(unit,theap,)43 b(>)k(status\))p +(table.)382 5714 y Ff(FTPTHP\(unit,theap,)43 b(>)k(status\))p eop end %%Page: 43 49 -TeXDict begin 43 48 bop 0 299 a Fg(6.4.)72 b(FITS)30 -b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(43)0 555 y -Fd(6.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0 809 -y Fb(6.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)f(Routines)0 -1019 y Fh(1)81 b Fi(Reserv)m(e)37 b(space)g(in)f(the)h(CHU)f(for)h +TeXDict begin 43 48 bop 0 299 a Fh(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fj(43)0 555 y +Fe(6.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0 810 +y Fc(6.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)f(Routines)0 +1021 y Fi(1)81 b Fj(Reserv)m(e)37 b(space)g(in)f(the)h(CHU)f(for)h (MOREKEYS)e(more)i(header)f(k)m(eyw)m(ords.)59 b(This)36 -b(subroutine)f(ma)m(y)j(b)s(e)227 1132 y(called)e(to)g(reserv)m(e)g +b(subroutine)f(ma)m(y)j(b)s(e)227 1134 y(called)e(to)g(reserv)m(e)g (space)f(for)g(k)m(eyw)m(ords)g(whic)m(h)g(are)g(to)h(b)s(e)e(written)h -(at)g(a)h(later)g(time,)h(after)e(the)g(data)227 1245 +(at)g(a)h(later)g(time,)h(after)e(the)g(data)227 1247 y(unit)h(or)g(subsequen)m(t)f(extensions)h(ha)m(v)m(e)h(b)s(een)e (written)h(to)h(the)f(FITS)f(\014le.)58 b(If)35 b(this)h(subroutine)f -(is)h(not)227 1358 y(explicitly)29 b(called,)g(then)e(the)g(initial)i +(is)h(not)227 1360 y(explicitly)29 b(called,)g(then)e(the)g(initial)i (size)e(of)h(the)f(FITS)f(header)h(will)h(b)s(e)e(limited)i(to)g(the)f -(space)h(a)m(v)-5 b(ailable)227 1471 y(at)24 b(the)g(time)g(that)g(the) +(space)h(a)m(v)-5 b(ailable)227 1473 y(at)24 b(the)g(time)g(that)g(the) g(\014rst)f(data)h(is)g(written)f(to)h(the)g(asso)s(ciated)h(data)f (unit.)38 b(FITSIO)22 b(has)i(the)f(abilit)m(y)i(to)227 -1584 y(dynamically)g(add)e(more)h(space)h(to)g(the)f(header)g(if)g +1586 y(dynamically)g(add)e(more)h(space)h(to)g(the)f(header)g(if)g (needed,)h(ho)m(w)m(ev)m(er)g(it)g(is)f(more)g(e\016cien)m(t)h(to)g -(preallo)s(cate)227 1697 y(the)31 b(required)e(space)i(if)g(the)f(size) -h(is)g(kno)m(wn)f(in)g(adv)-5 b(ance.)382 1958 y Fe -(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 2219 y -Fh(2)81 b Fi(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)i(k)m +(preallo)s(cate)227 1699 y(the)31 b(required)e(space)i(if)g(the)f(size) +h(is)g(kno)m(wn)f(in)g(adv)-5 b(ance.)382 1962 y Ff +(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 2226 y +Fi(2)81 b Fj(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)i(k)m (eyw)m(ords)e(in)h(the)f(CHU)g(\(NOT)h(including)f(the)g(END)h(k)m(eyw) -m(ord)g(whic)m(h)f(is)227 2332 y(not)g(considered)f(a)g(real)h(k)m(eyw) +m(ord)g(whic)m(h)f(is)227 2339 y(not)g(considered)f(a)g(real)h(k)m(eyw) m(ord\))g(and)f(the)g(remaining)h(space)f(a)m(v)-5 b(ailable)26 -b(to)e(write)f(additional)i(k)m(eyw)m(ords)227 2445 y(in)39 +b(to)e(write)f(additional)i(k)m(eyw)m(ords)227 2452 y(in)39 b(the)h(CHU.)f(\(returns)f(KEYSADD)i(=)f(-1)h(if)f(the)g(header)g(has)g (not)h(y)m(et)g(b)s(een)e(closed\).)69 b(Note)40 b(that)227 -2558 y(FITSIO)23 b(will)i(attempt)g(to)g(dynamically)g(add)e(space)i +2564 y(FITSIO)23 b(will)i(attempt)g(to)g(dynamically)g(add)e(space)i (for)f(more)g(k)m(eyw)m(ords)h(if)f(required)f(when)g(app)s(ending)227 -2671 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382 -2932 y Fe(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0 -3194 y Fh(3)81 b Fi(Return)38 b(the)i(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m +2677 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382 +2941 y Ff(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0 +3204 y Fi(3)81 b Fj(Return)38 b(the)i(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m (ords)h(in)f(the)g(header)g(and)g(the)g(curren)m(t)h(p)s(osition)f(in)g -(the)g(header.)68 b(This)227 3307 y(returns)37 b(the)g(n)m(um)m(b)s(er) +(the)g(header.)68 b(This)227 3317 y(returns)37 b(the)g(n)m(um)m(b)s(er) f(of)i(the)g(k)m(eyw)m(ord)g(record)f(that)h(will)g(b)s(e)f(read)g -(next)h(\(or)g(one)g(greater)g(than)g(the)227 3420 y(p)s(osition)29 +(next)h(\(or)g(one)g(greater)g(than)g(the)227 3430 y(p)s(osition)29 b(of)f(the)h(last)g(k)m(eyw)m(ord)g(that)g(w)m(as)f(read)g(or)h (written\).)40 b(A)29 b(v)-5 b(alue)28 b(of)h(1)g(is)f(returned)f(if)h -(the)h(p)s(oin)m(ter)227 3533 y(is)i(p)s(ositioned)f(at)h(the)g(b)s -(eginning)e(of)i(the)g(header.)382 3794 y Fe(FTGHPS\(iunit,)44 -b(>)j(keysexist,key_no,status\))0 4086 y Fb(6.4.2)112 +(the)h(p)s(oin)m(ter)227 3543 y(is)i(p)s(ositioned)f(at)h(the)g(b)s +(eginning)e(of)i(the)g(header.)382 3807 y Ff(FTGHPS\(iunit,)44 +b(>)j(keysexist,key_no,status\))0 4102 y Fc(6.4.2)112 b(Read)38 b(or)f(W)-9 b(rite)37 b(Standard)i(Header)e(Routines)0 -4306 y Fi(These)31 b(subroutines)e(pro)m(vide)i(a)g(simple)g(metho)s(d) +4321 y Fj(These)31 b(subroutines)e(pro)m(vide)i(a)g(simple)g(metho)s(d) f(of)h(reading)g(or)g(writing)g(most)g(of)g(the)g(k)m(eyw)m(ord)g(v)-5 -b(alues)31 b(that)0 4419 y(are)d(normally)g(required)f(in)h(a)g(FITS)f +b(alues)31 b(that)0 4434 y(are)d(normally)g(required)f(in)h(a)g(FITS)f (\014les.)40 b(These)27 b(subroutines)g(are)h(pro)m(vided)f(for)h(con)m -(v)m(enience)h(only)f(and)g(are)0 4532 y(not)36 b(required)e(to)i(b)s +(v)m(enience)h(only)f(and)g(are)0 4547 y(not)36 b(required)e(to)i(b)s (e)f(used.)55 b(If)35 b(preferred,)h(users)e(ma)m(y)i(call)h(the)f(lo)m (w)m(er-lev)m(el)i(subroutines)c(describ)s(ed)h(in)g(the)0 -4644 y(previous)30 b(section)i(to)g(individually)f(read)f(or)h(write)g +4660 y(previous)30 b(section)i(to)g(individually)f(read)f(or)h(write)g (the)g(required)f(k)m(eyw)m(ords.)43 b(Note)32 b(that)g(in)e(most)i -(cases,)g(the)0 4757 y(required)26 b(k)m(eyw)m(ords)h(suc)m(h)g(as)g +(cases,)g(the)0 4773 y(required)26 b(k)m(eyw)m(ords)h(suc)m(h)g(as)g (NAXIS,)f(TFIELD,)h(TTYPEn,)g(etc,)i(whic)m(h)d(de\014ne)g(the)h -(structure)f(of)h(the)g(HDU)0 4870 y(m)m(ust)j(b)s(e)g(written)g(to)i +(structure)f(of)h(the)g(HDU)0 4886 y(m)m(ust)j(b)s(e)g(written)g(to)i (the)e(header)g(b)s(efore)g(an)m(y)h(data)g(can)g(b)s(e)e(written)i(to) -g(the)g(image)g(or)g(table.)0 5132 y Fh(1)81 b Fi(Put)37 +g(the)g(image)g(or)g(table.)0 5149 y Fi(1)81 b Fj(Put)37 b(the)i(primary)e(header)h(or)g(IMA)m(GE)h(extension)f(k)m(eyw)m(ords)h (in)m(to)g(the)f(CHU.)g(There)g(are)g(2)h(a)m(v)-5 b(ailable)227 -5245 y(routines:)39 b(The)27 b(simpler)f(FTPHPS)h(routine)g(is)g(equiv) +5262 y(routines:)39 b(The)27 b(simpler)f(FTPHPS)h(routine)g(is)g(equiv) -5 b(alen)m(t)29 b(to)e(calling)i(ftphpr)c(with)i(the)g(default)h(v)-5 -b(alues)227 5357 y(of)35 b(SIMPLE)f(=)g(true,)i(p)s(coun)m(t)e(=)g(0,)i +b(alues)227 5375 y(of)35 b(SIMPLE)f(=)g(true,)i(p)s(coun)m(t)e(=)g(0,)i (gcoun)m(t)g(=)e(1,)i(and)e(EXTEND)h(=)f(true.)53 b(PCOUNT,)34 -b(GCOUNT)227 5470 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f +b(GCOUNT)227 5488 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f (required)f(in)g(the)h(primary)f(header)g(and)h(are)g(only)g(written)g -(if)f(p)s(coun)m(t)227 5583 y(is)31 b(not)g(equal)h(to)g(zero,)g(gcoun) +(if)f(p)s(coun)m(t)227 5601 y(is)31 b(not)g(equal)h(to)g(zero,)g(gcoun) m(t)g(is)f(not)g(equal)g(to)h(zero)g(or)f(one,)g(and)g(if)g(extend)g -(is)g(TR)m(UE,)g(resp)s(ectiv)m(ely)-8 b(.)227 5696 y(When)30 +(is)g(TR)m(UE,)g(resp)s(ectiv)m(ely)-8 b(.)227 5714 y(When)30 b(writing)h(to)g(an)f(IMA)m(GE)i(extension,)f(the)f(SIMPLE)g(and)g (EXTEND)g(parameters)h(are)g(ignored.)p eop end %%Page: 44 50 -TeXDict begin 44 49 bop 0 299 a Fi(44)1319 b Fg(CHAPTER)29 +TeXDict begin 44 49 bop 0 299 a Fj(44)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 +b(SUBR)m(OUTINES)382 555 y Ff(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 781 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o (,nax)o(es,)o(pcou)o(nt,g)o(cou)o(nt,e)o(xten)o(d,)41 -b(>)48 b(status\))0 1082 y Fh(2)81 b Fi(Get)44 b(primary)e(header)h(or) +b(>)48 b(status\))0 1082 y Fi(2)81 b Fj(Get)44 b(primary)e(header)h(or) h(IMA)m(GE)g(extension)g(k)m(eyw)m(ords)g(from)f(the)g(CHU.)h(When)f (reading)g(from)g(an)227 1195 y(IMA)m(GE)32 b(extension)f(the)f(SIMPLE) -g(and)f(EXTEND)i(parameters)g(are)f(ignored.)382 1495 -y Fe(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o -(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 1608 y(status\))0 -1909 y Fh(3)81 b Fi(Put)34 b(the)h(ASCI)s(I)f(table)i(header)f(k)m(eyw) +g(and)f(EXTEND)i(parameters)g(are)f(ignored.)382 1497 +y Ff(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o +(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 1610 y(status\))0 +1911 y Fi(3)81 b Fj(Put)34 b(the)h(ASCI)s(I)f(table)i(header)f(k)m(eyw) m(ords)g(in)m(to)h(the)f(CHU.)h(The)e(optional)i(TUNITn)e(and)h -(EXTNAME)227 2021 y(k)m(eyw)m(ords)c(are)g(written)f(only)h(if)f(the)h +(EXTNAME)227 2024 y(k)m(eyw)m(ords)c(are)g(written)f(only)h(if)f(the)h (input)e(string)h(v)-5 b(alues)31 b(are)g(not)f(blank.)382 -2322 y Fe(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o +2325 y Ff(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o (ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 -2435 y(status\))0 2736 y Fh(4)81 b Fi(Get)31 b(the)g(ASCI)s(I)d(table)k -(header)e(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 3036 -y Fe(FTGHTB\(unit,maxdim,)42 b(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o -(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 3149 y(extname,status\))0 -3450 y Fh(5)81 b Fi(Put)34 b(the)h(binary)f(table)i(header)e(k)m(eyw)m +2438 y(status\))0 2739 y Fi(4)81 b Fj(Get)31 b(the)g(ASCI)s(I)d(table)k +(header)e(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 3041 +y Ff(FTGHTB\(unit,maxdim,)42 b(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o +(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 3154 y(extname,status\))0 +3455 y Fi(5)81 b Fj(Put)34 b(the)h(binary)f(table)i(header)e(k)m(eyw)m (ords)i(in)m(to)f(the)g(CHU.)g(The)g(optional)h(TUNITn)e(and)g(EXTNAME) -227 3563 y(k)m(eyw)m(ords)i(are)g(written)f(only)g(if)h(the)f(input)f +227 3568 y(k)m(eyw)m(ords)i(are)g(written)f(only)g(if)h(the)f(input)f (string)i(v)-5 b(alues)35 b(are)h(not)f(blank.)55 b(The)35 -b(p)s(coun)m(t)g(parameter,)227 3675 y(whic)m(h)f(sp)s(eci\014es)g(the) +b(p)s(coun)m(t)g(parameter,)227 3681 y(whic)m(h)f(sp)s(eci\014es)g(the) h(size)g(of)g(the)f(v)-5 b(ariable)35 b(length)g(arra)m(y)g(heap,)g -(should)f(initially)h(=)f(0;)j(FITSIO)d(will)227 3788 +(should)f(initially)h(=)f(0;)j(FITSIO)d(will)227 3794 y(automatically)27 b(up)s(date)c(the)h(PCOUNT)f(k)m(eyw)m(ord)h(v)-5 b(alue)24 b(if)g(an)m(y)g(v)-5 b(ariable)25 b(length)f(arra)m(y)h(data) -f(is)g(written)227 3901 y(to)31 b(the)e(heap.)41 b(The)29 +f(is)g(written)227 3907 y(to)31 b(the)e(heap.)41 b(The)29 b(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)30 b(for)g(v)-5 b(ariable)30 b(length)g(v)m(ector)h(columns)e(should)g(ha)m(v)m(e)i -(the)227 4014 y(form)c('Pt\(len\)')j(or)d('1Pt\(len\)')j(where)d(`t')h +(the)227 4019 y(form)c('Pt\(len\)')j(or)d('1Pt\(len\)')j(where)d(`t')h (is)g(the)g(data)g(t)m(yp)s(e)g(co)s(de)f(letter)i(\(A,I,J,E,D,)g -(etc.\))42 b(and)27 b(`len')h(is)227 4127 y(an)g(in)m(teger)i(sp)s +(etc.\))42 b(and)27 b(`len')h(is)227 4132 y(an)g(in)m(teger)i(sp)s (ecifying)e(the)g(maxim)m(um)g(length)g(of)h(the)f(v)m(ectors)h(in)f (that)h(column)f(\(len)g(m)m(ust)g(b)s(e)g(greater)227 -4240 y(than)j(or)h(equal)f(to)i(the)e(longest)i(v)m(ector)f(in)f(the)h +4245 y(than)j(or)h(equal)f(to)i(the)e(longest)i(v)m(ector)f(in)f(the)h (column\).)44 b(If)30 b(`len')i(is)g(not)f(sp)s(eci\014ed)g(when)f(the) -i(table)g(is)227 4353 y(created)27 b(\(e.g.,)i(the)d(input)f(TF)m(ORMn) +i(table)g(is)227 4358 y(created)27 b(\(e.g.,)i(the)d(input)f(TF)m(ORMn) h(v)-5 b(alue)26 b(is)g(just)f('1Pt'\))j(then)d(FITSIO)g(will)h(scan)g -(the)g(column)g(when)227 4466 y(the)k(table)g(is)f(\014rst)g(closed)h +(the)g(column)g(when)227 4471 y(the)k(table)g(is)f(\014rst)g(closed)h (and)f(will)g(app)s(end)f(the)h(maxim)m(um)h(length)f(to)h(the)g(TF)m -(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue.)227 4579 y(Note)28 +(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue.)227 4584 y(Note)28 b(that)e(if)g(the)g(table)h(is)f(subsequen)m(tly)g(mo)s(di\014ed)f(to)i (increase)f(the)h(maxim)m(um)f(length)g(of)g(the)g(v)m(ectors)227 -4692 y(then)k(the)h(mo)s(difying)f(program)g(is)g(resp)s(onsible)g(for) +4697 y(then)k(the)h(mo)s(difying)f(program)g(is)g(resp)s(onsible)g(for) g(also)h(up)s(dating)e(the)i(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 -b(alue.)382 4992 y Fe(FTPHBN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o +b(alue.)382 4998 y Ff(FTPHBN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o (rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at,)41 b(>)48 -b(status\))0 5293 y Fh(6)81 b Fi(Get)31 b(the)g(binary)e(table)i -(header)g(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 5593 -y Fe(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o -(unit)o(,ext)o(nam)o(e,va)o(rida)o(t,)716 5706 y(status\))p +b(status\))0 5300 y Fi(6)81 b Fj(Get)31 b(the)g(binary)e(table)i +(header)g(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 5601 +y Ff(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o +(unit)o(,ext)o(nam)o(e,va)o(rida)o(t,)716 5714 y(status\))p eop end %%Page: 45 51 -TeXDict begin 45 50 bop 0 299 a Fg(6.4.)72 b(FITS)30 -b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(45)0 555 y -Fb(6.4.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Subroutines)0 -764 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j -(record)e(in)m(to)g(the)g(CHU.)382 1020 y Fe(FTPREC\(unit,card,)43 -b(>)k(status\))0 1276 y Fh(2)81 b Fi(Put)36 b(\(app)s(end\))g(a)i +TeXDict begin 45 50 bop 0 299 a Fh(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fj(45)0 555 y +Fc(6.4.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Subroutines)0 +764 y Fi(1)81 b Fj(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j +(record)e(in)m(to)g(the)g(CHU.)382 1022 y Ff(FTPREC\(unit,card,)43 +b(>)k(status\))0 1280 y Fi(2)81 b Fj(Put)36 b(\(app)s(end\))g(a)i (COMMENT)f(k)m(eyw)m(ord)g(in)m(to)h(the)g(CHU.)f(Multiple)h(COMMENT)f -(k)m(eyw)m(ords)g(will)h(b)s(e)227 1389 y(written)31 +(k)m(eyw)m(ords)g(will)h(b)s(e)227 1393 y(written)31 b(if)f(the)h(input)e(commen)m(t)i(string)g(is)f(longer)h(than)f(72)i(c) -m(haracters.)382 1645 y Fe(FTPCOM\(unit,comment,)42 b(>)48 -b(status\))0 1901 y Fh(3)81 b Fi(Put)24 b(\(app)s(end\))g(a)h(HISTOR)-8 +m(haracters.)382 1650 y Ff(FTPCOM\(unit,comment,)42 b(>)48 +b(status\))0 1908 y Fi(3)81 b Fj(Put)24 b(\(app)s(end\))g(a)h(HISTOR)-8 b(Y)25 b(k)m(eyw)m(ord)g(in)m(to)h(the)f(CHU.)g(Multiple)h(HISTOR)-8 b(Y)24 b(k)m(eyw)m(ords)h(will)h(b)s(e)e(written)227 -2014 y(if)31 b(the)f(input)g(history)g(string)g(is)h(longer)g(than)f -(72)h(c)m(haracters.)382 2270 y Fe(FTPHIS\(unit,history,)42 -b(>)48 b(status\))0 2526 y Fh(4)81 b Fi(Put)36 b(\(app)s(end\))f(the)h +2021 y(if)31 b(the)f(input)g(history)g(string)g(is)h(longer)g(than)f +(72)h(c)m(haracters.)382 2279 y Ff(FTPHIS\(unit,history,)42 +b(>)48 b(status\))0 2537 y Fi(4)81 b Fj(Put)36 b(\(app)s(end\))f(the)h (D)m(A)-8 b(TE)38 b(k)m(eyw)m(ord)f(in)m(to)g(the)f(CHU.)h(The)f(k)m (eyw)m(ord)g(v)-5 b(alue)37 b(will)g(con)m(tain)h(the)e(curren)m(t)227 -2639 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)f(in)f +2650 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)f(in)f ('dd/mm/yy')g(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32 -b(k)m(eyw)m(ord)g(already)g(exists)227 2752 y(in)j(the)g(header,)i +b(k)m(eyw)m(ord)g(already)g(exists)227 2763 y(in)j(the)g(header,)i (then)d(this)h(subroutine)f(will)i(simply)e(up)s(date)h(the)g(k)m(eyw)m -(ord)g(v)-5 b(alue)36 b(in-place)g(with)f(the)227 2865 -y(curren)m(t)30 b(date.)382 3121 y Fe(FTPDAT\(unit,)44 -b(>)k(status\))0 3377 y Fh(5)81 b Fi(Put)22 b(\(app)s(end\))f(a)i(new)f +(ord)g(v)-5 b(alue)36 b(in-place)g(with)f(the)227 2876 +y(curren)m(t)30 b(date.)382 3134 y Ff(FTPDAT\(unit,)44 +b(>)k(status\))0 3392 y Fi(5)81 b Fj(Put)22 b(\(app)s(end\))f(a)i(new)f (k)m(eyw)m(ord)h(of)g(the)f(appropriate)h(datat)m(yp)s(e)g(in)m(to)h -(the)e(CHU.)h(Note)h(that)f(FTPKYS)f(will)227 3490 y(only)33 +(the)e(CHU.)h(Note)h(that)f(FTPKYS)f(will)227 3504 y(only)33 b(write)g(string)f(v)-5 b(alues)33 b(up)e(to)j(68)f(c)m(haracters)h(in) e(length;)i(longer)f(strings)g(will)f(b)s(e)g(truncated.)47 -b(The)227 3603 y(FTPKLS)27 b(routine)h(can)h(b)s(e)f(used)f(to)i(write) +b(The)227 3617 y(FTPKLS)27 b(routine)h(can)h(b)s(e)f(used)f(to)i(write) f(longer)h(strings,)g(using)e(a)i(non-standard)e(FITS)h(con)m(v)m(en)m -(tion.)227 3716 y(The)23 b(E)h(and)f(D)h(v)m(ersions)g(of)g(this)f +(tion.)227 3730 y(The)23 b(E)h(and)f(D)h(v)m(ersions)g(of)g(this)f (routine)h(ha)m(v)m(e)h(the)f(added)f(feature)h(that)g(if)g(the)g -('decimals')h(parameter)f(is)227 3829 y(negativ)m(e,)i(then)20 +('decimals')h(parameter)f(is)227 3843 y(negativ)m(e,)i(then)20 b(the)i('G')g(displa)m(y)f(format)g(rather)g(then)g(the)g('E')h(format) -f(will)h(b)s(e)e(used)g(when)g(constructing)227 3942 +f(will)h(b)s(e)e(used)g(when)g(constructing)227 3956 y(the)25 b(k)m(eyw)m(ord)f(v)-5 b(alue,)26 b(taking)f(the)g(absolute)g (v)-5 b(alue)24 b(of)h('decimals')g(for)f(the)g(precision.)39 -b(This)23 b(will)i(suppress)227 4055 y(trailing)35 b(zeros,)h(and)d +b(This)23 b(will)i(suppress)227 4069 y(trailing)35 b(zeros,)h(and)d (will)i(use)e(a)i(\014xed)e(format)h(rather)g(than)f(an)h(exp)s(onen)m -(tial)h(format,)h(dep)s(ending)c(on)227 4168 y(the)f(magnitude)f(of)h -(the)f(v)-5 b(alue.)382 4424 y Fe(FTPKY[JKLS]\(unit,keyword)o(,ke)o -(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382 4537 +(tial)h(format,)h(dep)s(ending)c(on)227 4182 y(the)f(magnitude)f(of)h +(the)f(v)-5 b(alue.)382 4440 y Ff(FTPKY[JKLS]\(unit,keyword)o(,ke)o +(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382 4553 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o -(nt,)41 b(>)48 b(status\))0 4793 y Fh(6)81 b Fi(Put)33 +(nt,)41 b(>)48 b(status\))0 4811 y Fi(6)81 b Fj(Put)33 b(\(app)s(end\))h(a)g(string)g(v)-5 b(alued)34 b(k)m(eyw)m(ord)h(in)m (to)g(the)g(CHU)f(whic)m(h)g(ma)m(y)g(b)s(e)g(longer)h(than)e(68)i(c)m -(haracters)227 4906 y(in)j(length.)64 b(This)37 b(uses)h(the)g(Long)g +(haracters)227 4924 y(in)j(length.)64 b(This)37 b(uses)h(the)g(Long)g (String)g(Keyw)m(ord)g(con)m(v)m(en)m(tion)i(that)e(is)g(describ)s(ed)f -(in)h(the)g("Usage)227 5019 y(Guidelines)33 b(and)e(Suggestions")j +(in)h(the)g("Usage)227 5036 y(Guidelines)33 b(and)e(Suggestions")j (section)f(of)g(this)f(do)s(cumen)m(t.)46 b(Since)33 -b(this)f(uses)g(a)g(non-standard)g(FITS)227 5132 y(con)m(v)m(en)m(tion) +b(this)f(uses)g(a)g(non-standard)g(FITS)227 5149 y(con)m(v)m(en)m(tion) 38 b(to)d(enco)s(de)h(the)f(long)h(k)m(eyw)m(ord)f(string,)i(programs)d (whic)m(h)h(use)g(this)g(routine)g(should)f(also)227 -5245 y(call)e(the)e(FTPLSW)g(routine)h(to)g(add)e(some)i(COMMENT)f(k)m +5262 y(call)e(the)e(FTPLSW)g(routine)h(to)g(add)e(some)i(COMMENT)f(k)m (eyw)m(ords)h(to)g(w)m(arn)f(users)f(of)i(the)f(FITS)g(\014le)227 -5357 y(that)36 b(this)f(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55 +5375 y(that)36 b(this)f(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55 b(FTPLSW)35 b(also)h(writes)g(a)f(k)m(eyw)m(ord)h(called)h(LONGSTRN)d -(to)227 5470 y(record)c(the)h(v)m(ersion)f(of)h(the)f(longstring)h(con) +(to)227 5488 y(record)c(the)h(v)m(ersion)f(of)h(the)f(longstring)h(con) m(v)m(en)m(tion)h(that)f(has)f(b)s(een)g(used,)f(in)h(case)h(a)g(new)f -(con)m(v)m(en)m(tion)227 5583 y(is)f(adopted)g(at)g(some)g(p)s(oin)m(t) +(con)m(v)m(en)m(tion)227 5601 y(is)f(adopted)g(at)g(some)g(p)s(oin)m(t) f(in)h(the)f(future.)40 b(If)28 b(the)g(LONGSTRN)g(k)m(eyw)m(ord)h(is)g -(already)g(presen)m(t)f(in)h(the)227 5696 y(header,)i(then)f(FTPLSW)g +(already)g(presen)m(t)f(in)h(the)227 5714 y(header,)i(then)f(FTPLSW)g (will)g(simply)g(return)g(and)f(will)i(not)g(write)f(duplicate)h(k)m (eyw)m(ords.)p eop end %%Page: 46 52 -TeXDict begin 46 51 bop 0 299 a Fi(46)1319 b Fg(CHAPTER)29 +TeXDict begin 46 51 bop 0 299 a Fj(46)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o +b(SUBR)m(OUTINES)382 555 y Ff(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o (ent,)41 b(>)47 b(status\))382 668 y(FTPLSW\(unit,)d(>)k(status\))0 -889 y Fh(7)81 b Fi(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h +891 y Fi(7)81 b Fj(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h (with)f(an)h(unde\014ned,)e(or)h(n)m(ull,)h(v)-5 b(alue)31 b(in)m(to)h(the)f(CHU.)g(The)f(v)-5 b(alue)31 b(string)227 -1002 y(of)g(the)f(k)m(eyw)m(ord)h(is)g(left)g(blank)f(in)g(this)g -(case.)382 1223 y Fe(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 -b(>)47 b(status\))0 1445 y Fh(8)81 b Fi(Put)41 b(\(app)s(end\))g(a)i(n) +1004 y(of)g(the)f(k)m(eyw)m(ord)h(is)g(left)g(blank)f(in)g(this)g +(case.)382 1227 y Ff(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 +b(>)47 b(status\))0 1450 y Fi(8)81 b Fj(Put)41 b(\(app)s(end\))g(a)i(n) m(um)m(b)s(ered)d(sequence)j(of)f(k)m(eyw)m(ords)g(in)m(to)h(the)g -(CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 1558 +(CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 1563 y(commen)m(t)37 b(to)g(ev)m(ery)g(k)m(eyw)m(ord)g(\(and)f(eliminate)h (the)g(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h(of)f(iden)m(tical)i -(commen)m(t)227 1670 y(strings,)g(one)e(for)g(eac)m(h)h(k)m(eyw)m +(commen)m(t)227 1676 y(strings,)g(one)e(for)g(eac)m(h)h(k)m(eyw)m (ord\))g(b)m(y)f(including)g(the)g(amp)s(ersand)e(c)m(haracter)k(as)e -(the)h(last)g(non-blank)227 1783 y(c)m(haracter)g(in)e(the)h +(the)h(last)g(non-blank)227 1788 y(c)m(haracter)g(in)e(the)h (\(\014rst\))f(COMMENTS)f(string)h(parameter.)56 b(This)35 -b(same)g(string)h(will)f(then)g(b)s(e)g(used)227 1896 +b(same)g(string)h(will)f(then)g(b)s(e)g(used)227 1901 y(for)30 b(the)g(commen)m(t)h(\014eld)f(in)f(all)i(the)f(k)m(eyw)m (ords.)41 b(\(Note)32 b(that)e(the)g(SPP)f(v)m(ersion)i(of)f(these)g -(routines)g(only)227 2009 y(supp)s(orts)f(a)i(single)g(commen)m(t)g -(string\).)382 2230 y Fe(FTPKN[JKLS]\(unit,keyroot)o(,st)o(artn)o(o,no) +(routines)g(only)227 2014 y(supp)s(orts)f(a)i(single)g(commen)m(t)g +(string\).)382 2237 y Ff(FTPKN[JKLS]\(unit,keyroot)o(,st)o(artn)o(o,no) o(_ke)o(ys,k)o(eyva)o(ls,)o(comm)o(ents)o(,)42 b(>)47 -b(status\))382 2343 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o +b(status\))382 2350 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o (_ke)o(ys,k)o(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41 -b(>)907 2456 y(status\))0 2677 y Fh(9)81 b Fi(Cop)m(y)21 +b(>)907 2463 y(status\))0 2686 y Fi(9)81 b Fj(Cop)m(y)21 b(an)h(indexed)f(k)m(eyw)m(ord)i(from)e(one)h(HDU)h(to)f(another,)i(mo) s(difying)e(the)g(index)f(n)m(um)m(b)s(er)f(of)i(the)g(k)m(eyw)m(ord) -227 2790 y(name)37 b(in)f(the)g(pro)s(cess.)58 b(F)-8 +227 2799 y(name)37 b(in)f(the)g(pro)s(cess.)58 b(F)-8 b(or)37 b(example,)i(this)d(routine)h(could)f(read)g(the)h(TLMIN3)f(k)m -(eyw)m(ord)h(from)f(the)227 2903 y(input)28 b(HDU)h(\(b)m(y)f(giving)h +(eyw)m(ord)h(from)f(the)227 2912 y(input)28 b(HDU)h(\(b)m(y)f(giving)h (k)m(eyro)s(ot)h(=)d("TLMIN")i(and)f(inn)m(um)f(=)h(3\))h(and)f(write)g -(it)h(to)g(the)f(output)g(HDU)227 3016 y(with)36 b(the)g(k)m(eyw)m(ord) +(it)h(to)g(the)f(output)g(HDU)227 3025 y(with)36 b(the)g(k)m(eyw)m(ord) h(name)f(TLMIN4)g(\(b)m(y)g(setting)i(outn)m(um)d(=)h(4\).)58 b(If)36 b(the)g(input)f(k)m(eyw)m(ord)i(do)s(es)f(not)227 -3129 y(exist,)c(then)e(this)g(routine)g(simply)g(returns)f(without)i -(indicating)g(an)f(error.)382 3350 y Fe(FTCPKY\(inunit,)44 +3137 y(exist,)c(then)e(this)g(routine)g(simply)g(returns)f(without)i +(indicating)g(an)f(error.)382 3360 y Ff(FTCPKY\(inunit,)44 b(outunit,)h(innum,)h(outnum,)g(keyroot,)g(>)h(status\))0 -3571 y Fh(10)f Fi(Put)33 b(\(app)s(end\))f(a)h('triple)h(precision')g +3583 y Fi(10)f Fj(Put)33 b(\(app)s(end\))f(a)h('triple)h(precision')g (k)m(eyw)m(ord)f(in)m(to)h(the)g(CHU)f(in)g(F28.16)i(format.)49 -b(The)33 b(\015oating)h(p)s(oin)m(t)227 3684 y(k)m(eyw)m(ord)c(v)-5 +b(The)33 b(\015oating)h(p)s(oin)m(t)227 3696 y(k)m(eyw)m(ord)c(v)-5 b(alue)30 b(is)f(constructed)h(b)m(y)f(concatenating)j(the)d(input)g (in)m(teger)i(v)-5 b(alue)29 b(with)g(the)h(input)e(double)227 -3797 y(precision)22 b(fraction)h(v)-5 b(alue)23 b(\(whic)m(h)f(m)m(ust) +3809 y(precision)22 b(fraction)h(v)-5 b(alue)23 b(\(whic)m(h)f(m)m(ust) g(ha)m(v)m(e)h(a)f(v)-5 b(alue)23 b(b)s(et)m(w)m(een)g(0.0)g(and)e -(1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 3910 y(should)35 +(1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 3922 y(should)35 b(b)s(e)h(used)f(to)i(read)f(this)f(k)m(eyw)m(ord)i(v)-5 b(alue,)38 b(b)s(ecause)e(the)g(other)h(k)m(eyw)m(ord)f(reading)g -(subroutines)227 4023 y(will)31 b(not)g(preserv)m(e)f(the)h(full)f -(precision)g(of)h(the)f(v)-5 b(alue.)382 4244 y Fe +(subroutines)227 4035 y(will)31 b(not)g(preserv)m(e)f(the)h(full)f +(precision)g(of)h(the)f(v)-5 b(alue.)382 4258 y Ff (FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 -b(>)48 b(status\))0 4466 y Fh(11)e Fi(W)-8 b(rite)36 +b(>)48 b(status\))0 4481 y Fi(11)e Fj(W)-8 b(rite)36 b(k)m(eyw)m(ords)g(to)f(the)h(CHDU)f(that)h(are)f(de\014ned)f(in)g(an)h (ASCI)s(I)f(template)i(\014le.)55 b(The)34 b(format)i(of)f(the)227 -4578 y(template)d(\014le)f(is)f(describ)s(ed)f(under)g(the)i(ftgthd)f -(routine)g(b)s(elo)m(w.)382 4800 y Fe(FTPKTP\(unit,)44 -b(filename,)i(>)h(status\))0 5021 y Fh(12)f Fi(App)s(end)28 +4594 y(template)d(\014le)f(is)f(describ)s(ed)f(under)g(the)i(ftgthd)f +(routine)g(b)s(elo)m(w.)382 4816 y Ff(FTPKTP\(unit,)44 +b(filename,)i(>)h(status\))0 5039 y Fi(12)f Fj(App)s(end)28 b(the)i(ph)m(ysical)g(units)g(string)g(to)g(an)g(existing)h(k)m(eyw)m (ord.)41 b(This)29 b(routine)h(uses)f(a)h(lo)s(cal)i(con)m(v)m(en)m -(tion,)227 5134 y(sho)m(wn)g(in)g(the)h(follo)m(wing)h(example,)g(in)e +(tion,)227 5152 y(sho)m(wn)g(in)g(the)h(follo)m(wing)h(example,)g(in)e (whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)f(square) -g(brac)m(k)m(ets)227 5247 y(in)e(the)h(b)s(eginning)f(of)g(the)h(k)m -(eyw)m(ord)g(commen)m(t)g(\014eld.)239 5468 y Fe(VELOCITY=)809 -b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 5694 y +g(brac)m(k)m(ets)227 5265 y(in)e(the)h(b)s(eginning)f(of)g(the)h(k)m +(eyw)m(ord)g(commen)m(t)g(\014eld.)239 5488 y Ff(VELOCITY=)809 +b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 5714 y (FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))p eop end %%Page: 47 53 -TeXDict begin 47 52 bop 0 299 a Fg(6.4.)72 b(FITS)30 -b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(47)0 555 y -Fb(6.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0 -762 y Fh(1)81 b Fi(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m +TeXDict begin 47 52 bop 0 299 a Fh(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fj(47)0 555 y +Fc(6.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0 +763 y Fi(1)81 b Fj(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m (to)g(the)g(CHU)g(at)g(the)g(sp)s(eci\014ed)f(p)s(osition)h(\(i.e.,)i -(immediately)f(preceding)227 875 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m +(immediately)f(preceding)227 876 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m (ord)g(in)f(the)h(header.\))49 b(This)33 b('insert)g(record')h -(subroutine)e(is)h(somewhat)h(less)g(e\016-)227 988 y(cien)m(t)28 +(subroutine)e(is)h(somewhat)h(less)g(e\016-)227 989 y(cien)m(t)28 b(then)f(the)g('app)s(end)e(record')i(subroutine)f(\(FTPREC\))g (describ)s(ed)g(ab)s(o)m(v)m(e)i(b)s(ecause)f(the)g(remaining)227 1101 y(k)m(eyw)m(ords)k(in)f(the)h(header)f(ha)m(v)m(e)h(to)g(b)s(e)f -(shifted)g(do)m(wn)g(one)h(slot.)382 1349 y Fe -(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0 1598 -y Fh(2)81 b Fi(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)g(the)f +(shifted)g(do)m(wn)g(one)h(slot.)382 1353 y Ff +(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0 1604 +y Fi(2)81 b Fj(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)g(the)f (CHU.)g(The)f(new)g(k)m(eyw)m(ord)i(is)f(inserted)f(immediately)i -(follo)m(wing)h(the)227 1711 y(last)27 b(k)m(eyw)m(ord)g(that)f(has)g +(follo)m(wing)h(the)227 1717 y(last)27 b(k)m(eyw)m(ord)g(that)f(has)g (b)s(een)g(read)g(from)f(the)h(header.)40 b(The)25 b(FTIKLS)g -(subroutine)g(w)m(orks)h(the)g(same)h(as)227 1824 y(the)h(FTIKYS)e +(subroutine)g(w)m(orks)h(the)g(same)h(as)227 1830 y(the)h(FTIKYS)e (subroutine,)h(except)i(it)f(also)g(supp)s(orts)e(long)i(string)f(v)-5 b(alues)28 b(greater)g(than)f(68)h(c)m(haracters)227 -1937 y(in)36 b(length.)59 b(These)36 b('insert)g(k)m(eyw)m(ord')h +1943 y(in)36 b(length.)59 b(These)36 b('insert)g(k)m(eyw)m(ord')h (subroutines)e(are)i(somewhat)g(less)f(e\016cien)m(t)i(then)e(the)g -('app)s(end)227 2049 y(k)m(eyw)m(ord')30 b(subroutines)e(describ)s(ed)g +('app)s(end)227 2056 y(k)m(eyw)m(ord')30 b(subroutines)e(describ)s(ed)g (ab)s(o)m(v)m(e)i(b)s(ecause)f(the)g(remaining)h(k)m(eyw)m(ords)f(in)g -(the)g(header)g(ha)m(v)m(e)h(to)227 2162 y(b)s(e)g(shifted)g(do)m(wn)g -(one)h(slot.)382 2411 y Fe(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382 -2524 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o(men)o(t,)42 -b(>)47 b(status\))382 2637 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o -(ent,)41 b(>)47 b(status\))382 2750 y(FTIKY[EDFG]\(unit,keyword)o(,ke)o +(the)g(header)g(ha)m(v)m(e)h(to)227 2168 y(b)s(e)g(shifted)g(do)m(wn)g +(one)h(slot.)382 2420 y Ff(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382 +2533 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o(men)o(t,)42 +b(>)47 b(status\))382 2645 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o +(ent,)41 b(>)47 b(status\))382 2758 y(FTIKY[EDFG]\(unit,keyword)o(,ke)o (yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 -2998 y Fh(3)81 b Fi(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)f(an)h +3010 y Fi(3)81 b Fj(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)f(an)h (unde\014ned,)e(or)h(n)m(ull,)h(v)-5 b(alue)34 b(in)m(to)h(the)e(CHU.)h -(The)f(v)-5 b(alue)34 b(string)f(of)h(the)227 3111 y(k)m(eyw)m(ord)d -(is)g(left)g(blank)f(in)g(this)g(case.)382 3359 y Fe +(The)f(v)-5 b(alue)34 b(string)f(of)h(the)227 3123 y(k)m(eyw)m(ord)d +(is)g(left)g(blank)f(in)g(this)g(case.)382 3374 y Ff (FTIKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 -3648 y Fb(6.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines)0 -3867 y Fi(These)29 b(routines)f(return)g(the)h(v)-5 b(alue)29 +3663 y Fc(6.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines)0 +3882 y Fj(These)29 b(routines)f(return)g(the)h(v)-5 b(alue)29 b(of)g(the)g(sp)s(eci\014ed)f(k)m(eyw)m(ord\(s\).)41 b(Wild)30 b(card)e(c)m(haracters)i(\(*,)h(?,)e(or)g(#\))f(ma)m(y)0 -3980 y(b)s(e)f(used)h(when)f(sp)s(ecifying)h(the)g(name)g(of)g(the)g(k) +3995 y(b)s(e)f(used)h(when)f(sp)s(ecifying)h(the)g(name)g(of)g(the)g(k) m(eyw)m(ord)h(to)g(b)s(e)e(read:)39 b(a)29 b(')10 b(?')40 b(will)28 b(matc)m(h)h(an)m(y)g(single)f(c)m(haracter)0 -4093 y(at)38 b(that)g(p)s(osition)f(in)g(the)h(k)m(eyw)m(ord)g(name)f +4108 y(at)38 b(that)g(p)s(osition)f(in)g(the)h(k)m(eyw)m(ord)g(name)f (and)g(a)g('*')i(will)e(matc)m(h)h(an)m(y)g(length)g(\(including)f -(zero\))h(string)g(of)0 4206 y(c)m(haracters.)65 b(The)37 +(zero\))h(string)g(of)0 4221 y(c)m(haracters.)65 b(The)37 b('#')h(c)m(haracter)h(will)f(matc)m(h)h(an)m(y)f(consecutiv)m(e)i (string)e(of)g(decimal)h(digits)f(\(0)h(-)f(9\).)64 b(Note)0 -4319 y(that)30 b(when)f(a)g(wild)g(card)h(is)f(used)g(in)g(the)h(input) +4334 y(that)30 b(when)f(a)g(wild)g(card)h(is)f(used)g(in)g(the)h(input) e(k)m(eyw)m(ord)i(name,)g(the)g(routine)f(will)h(only)g(searc)m(h)g -(for)f(a)h(matc)m(h)0 4432 y(from)h(the)h(curren)m(t)g(header)g(p)s +(for)f(a)h(matc)m(h)0 4446 y(from)h(the)h(curren)m(t)g(header)g(p)s (osition)g(to)g(the)h(end)e(of)h(the)g(header.)45 b(It)32 b(will)g(not)g(resume)g(the)g(searc)m(h)g(from)g(the)0 -4545 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)h +4559 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)h (header)f(p)s(osition)g(as)h(is)f(done)g(when)f(no)h(wildcards)f(are)i -(included)0 4657 y(in)f(the)g(k)m(eyw)m(ord)h(name.)52 +(included)0 4672 y(in)f(the)g(k)m(eyw)m(ord)h(name.)52 b(If)33 b(the)h(desired)g(k)m(eyw)m(ord)h(string)f(is)g(8-c)m (haracters)i(long)f(\(the)f(maxim)m(um)g(length)h(of)0 -4770 y(a)h(k)m(eyw)m(ord)g(name\))g(then)g(a)g('*')g(ma)m(y)h(b)s(e)e +4785 y(a)h(k)m(eyw)m(ord)g(name\))g(then)g(a)g('*')g(ma)m(y)h(b)s(e)e (app)s(ended)f(as)h(the)h(nin)m(th)g(c)m(haracter)h(of)f(the)f(input)g -(name)h(to)g(force)0 4883 y(the)31 b(k)m(eyw)m(ord)g(searc)m(h)h(to)f +(name)h(to)g(force)0 4898 y(the)31 b(k)m(eyw)m(ord)g(searc)m(h)h(to)f (stop)g(at)g(the)g(end)f(of)h(the)g(header)g(\(e.g.,)i('COMMENT)d(*')i -(will)f(searc)m(h)g(for)g(the)g(next)0 4996 y(COMMENT)37 +(will)f(searc)m(h)g(for)g(the)g(next)0 5011 y(COMMENT)37 b(k)m(eyw)m(ord\).)64 b(The)37 b(\013grec)i(routine)f(ma)m(y)g(b)s(e)f (used)g(to)i(set)f(the)g(starting)g(p)s(osition)g(when)f(doing)0 -5109 y(wild)30 b(card)g(searc)m(hes.)0 5357 y Fh(1)81 -b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f +5124 y(wild)30 b(card)g(searc)m(hes.)0 5375 y Fi(1)81 +b Fj(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f (the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)e(the)h(header)g(is)g -(at)227 5470 y(k)m(ey)p 365 5470 28 4 v 34 w(no)42 b(=)f(1;)49 -b(if)42 b(k)m(ey)p 996 5470 V 34 w(no)g(=)f(0)i(then)e(this)h +(at)227 5488 y(k)m(ey)p 365 5488 28 4 v 34 w(no)42 b(=)f(1;)49 +b(if)42 b(k)m(ey)p 996 5488 V 34 w(no)g(=)f(0)i(then)e(this)h (subroutine)f(simple)h(mo)m(v)m(es)i(the)e(in)m(ternal)h(p)s(oin)m(ter) -f(to)h(the)227 5583 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g +f(to)h(the)227 5601 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g (subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g -(the)g(top)g(of)g(the)227 5696 y(header;)31 b(it)g(also)g(returns)e(a)i +(the)g(top)g(of)g(the)227 5714 y(header;)31 b(it)g(also)g(returns)e(a)i (blank)f(card)g(v)-5 b(alue)31 b(in)f(this)g(case.)p eop end %%Page: 48 54 -TeXDict begin 48 53 bop 0 299 a Fi(48)1319 b Fg(CHAPTER)29 +TeXDict begin 48 53 bop 0 299 a Fj(48)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTGREC\(unit,key_no,)42 -b(>)48 b(card,status\))0 797 y Fh(2)81 b Fi(Get)31 b(the)g(name,)f(v)-5 +b(SUBR)m(OUTINES)382 555 y Ff(FTGREC\(unit,key_no,)42 +b(>)48 b(card,status\))0 797 y Fi(2)81 b Fj(Get)31 b(the)g(name,)f(v)-5 b(alue)31 b(\(as)g(a)g(string\),)g(and)f(commen)m(t)i(of)e(the)h(n)m (th)f(k)m(eyw)m(ord)h(in)f(CHU.)h(This)f(routine)g(also)227 910 y(c)m(hec)m(ks)h(that)f(the)g(returned)e(k)m(eyw)m(ord)i(name)f (\(KEYW)m(ORD\))i(con)m(tains)g(only)e(legal)i(ASCI)s(I)d(c)m (haracters.)227 1023 y(Call)j(FTGREC)f(and)g(FTPSV)m(C)g(to)h(b)m -(ypass)f(this)g(error)g(c)m(hec)m(k.)382 1264 y Fe +(ypass)f(this)g(error)g(c)m(hec)m(k.)382 1264 y Ff (FTGKYN\(unit,key_no,)42 b(>)48 b(keyword,value,comment,st)o(atu)o(s\)) -0 1506 y Fh(3)81 b Fi(Get)31 b(the)g(80-c)m(haracter)i(header)d(record) -g(for)g(the)h(named)f(k)m(eyw)m(ord)382 1748 y Fe +0 1506 y Fi(3)81 b Fj(Get)31 b(the)g(80-c)m(haracter)i(header)d(record) +g(for)g(the)h(named)f(k)m(eyw)m(ord)382 1748 y Ff (FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))0 1990 -y Fh(4)81 b Fi(Get)26 b(the)f(next)h(k)m(eyw)m(ord)f(whose)g(name)h +y Fi(4)81 b Fj(Get)26 b(the)f(next)h(k)m(eyw)m(ord)f(whose)g(name)h (matc)m(hes)g(one)f(of)h(the)f(strings)g(in)g('inclist')i(but)d(do)s (es)h(not)g(matc)m(h)i(an)m(y)227 2102 y(of)32 b(the)f(strings)g(in)g ('exclist'.)45 b(The)30 b(strings)h(in)g(inclist)h(and)f(exclist)h(ma)m @@ -6183,19 +8260,19 @@ (are)g(no)g(k)m(eyw)m(ords)g(to)h(b)s(e)227 2667 y(excluded.)41 b(This)29 b(routine)i(returns)e(status)i(=)f(202)h(if)g(a)f(matc)m (hing)i(k)m(eyw)m(ord)f(is)f(not)h(found.)382 2909 y -Fe(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 -b(>)48 b(card,status\))0 3150 y Fh(5)81 b Fi(Get)30 b(the)g(literal)i +Ff(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 +b(>)48 b(card,status\))0 3150 y Fi(5)81 b Fj(Get)30 b(the)g(literal)i (k)m(eyw)m(ord)e(v)-5 b(alue)30 b(as)g(a)g(c)m(haracter)i(string.)40 b(Regardless)31 b(of)f(the)g(datat)m(yp)s(e)g(of)g(the)g(k)m(eyw)m (ord,)227 3263 y(this)37 b(routine)g(simply)g(returns)f(the)h(string)g (of)g(c)m(haracters)i(in)d(the)i(v)-5 b(alue)37 b(\014eld)g(of)g(the)g (k)m(eyw)m(ord)h(along)227 3376 y(with)30 b(the)h(commen)m(t)g -(\014eld.)382 3618 y Fe(FTGKEY\(unit,keyword,)42 b(>)48 -b(value,comment,status\))0 3860 y Fh(6)81 b Fi(Get)31 +(\014eld.)382 3618 y Ff(FTGKEY\(unit,keyword,)42 b(>)48 +b(value,comment,status\))0 3860 y Fi(6)81 b Fj(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(\(with)h(the)f(appropriate)h (datat)m(yp)s(e\))g(and)f(commen)m(t)i(from)e(the)g(CHU)382 -4101 y Fe(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 b(>)48 b -(keyval,comment,status\))0 4343 y Fh(7)81 b Fi(Read)22 +4101 y Ff(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 b(>)48 b +(keyval,comment,status\))0 4343 y Fi(7)81 b Fj(Read)22 b(a)g(string-v)-5 b(alued)23 b(k)m(eyw)m(ord)f(and)g(return)e(the)j (string)f(length,)i(the)e(v)-5 b(alue)23 b(string,)h(and/or)e(the)g (commen)m(t)227 4456 y(\014eld.)47 b(The)32 b(\014rst)g(routine,)h @@ -6218,64 +8295,64 @@ 5246 y(v)-5 b(alued)40 b(k)m(eyw)m(ords)h(ha)m(v)m(e)g(a)g(maxim)m(um)f (length)h(of)f(68)h(c)m(haracters,)k(ho)m(w)m(ev)m(er,)f(CONTINUE'd)39 b(string)227 5359 y(k)m(eyw)m(ords)31 b(ma)m(y)g(b)s(e)f(arbitrarily)g -(long.)334 5601 y Fe(FTGKSL\(unit,keyword,)42 b(>)48 +(long.)334 5601 y Ff(FTGKSL\(unit,keyword,)42 b(>)48 b(length,status\))334 5714 y(FTGSKY\(unit,keyword,first)o(cha)o(r,ma)o (xcha)o(r,>)41 b(keyval,length,comment,sta)o(tus\))p eop end %%Page: 49 55 -TeXDict begin 49 54 bop 0 299 a Fg(6.4.)72 b(FITS)30 -b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(49)0 555 y -Fh(8)81 b Fi(Get)24 b(a)g(sequence)g(of)g(n)m(um)m(b)s(ered)e(k)m(eyw)m +TeXDict begin 49 54 bop 0 299 a Fh(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fj(49)0 555 y +Fi(8)81 b Fj(Get)24 b(a)g(sequence)g(of)g(n)m(um)m(b)s(ered)e(k)m(eyw)m (ord)i(v)-5 b(alues.)38 b(These)24 b(routines)f(do)g(not)h(supp)s(ort)e (wild)h(card)g(c)m(haracters)227 668 y(in)30 b(the)h(ro)s(ot)g(name.) -382 929 y Fe(FTGKN[EDJKLS]\(unit,keyro)o(ot,)o(star)o(tno,)o(max)o -(_key)o(s,)42 b(>)47 b(keyvals,nfound,status\))0 1189 -y Fh(9)81 b Fi(Get)27 b(the)f(v)-5 b(alue)26 b(of)h(a)f(\015oating)h(p) +382 930 y Ff(FTGKN[EDJKLS]\(unit,keyro)o(ot,)o(star)o(tno,)o(max)o +(_key)o(s,)42 b(>)47 b(keyvals,nfound,status\))0 1192 +y Fi(9)81 b Fj(Get)27 b(the)f(v)-5 b(alue)26 b(of)h(a)f(\015oating)h(p) s(oin)m(t)f(k)m(eyw)m(ord,)i(returning)d(the)h(in)m(teger)h(and)f -(fractional)h(parts)f(of)g(the)g(v)-5 b(alue)227 1302 +(fractional)h(parts)f(of)g(the)g(v)-5 b(alue)227 1305 y(in)32 b(separate)g(subroutine)f(argumen)m(ts.)45 b(This)31 b(subroutine)f(ma)m(y)j(b)s(e)e(used)g(to)h(read)g(an)m(y)g(k)m(eyw)m -(ord)g(but)f(is)227 1415 y(esp)s(ecially)h(useful)d(for)i(reading)f +(ord)g(but)f(is)227 1418 y(esp)s(ecially)h(useful)d(for)i(reading)f (the)h('triple)g(precision')f(k)m(eyw)m(ords)h(written)g(b)m(y)f -(FTPKYT.)382 1675 y Fe(FTGKYT\(unit,keyword,)42 b(>)48 -b(intval,dblval,comment,s)o(tat)o(us\))0 1936 y Fh(10)e -Fi(Get)c(the)e(ph)m(ysical)i(units)e(string)g(in)h(an)f(existing)i(k)m +(FTPKYT.)382 1680 y Ff(FTGKYT\(unit,keyword,)42 b(>)48 +b(intval,dblval,comment,s)o(tat)o(us\))0 1941 y Fi(10)e +Fj(Get)c(the)e(ph)m(ysical)i(units)e(string)g(in)h(an)f(existing)i(k)m (eyw)m(ord.)72 b(This)40 b(routine)g(uses)h(a)g(lo)s(cal)h(con)m(v)m -(en)m(tion,)227 2049 y(sho)m(wn)32 b(in)g(the)h(follo)m(wing)h +(en)m(tion,)227 2054 y(sho)m(wn)32 b(in)g(the)h(follo)m(wing)h (example,)g(in)e(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h -(enclosed)g(in)f(square)g(brac)m(k)m(ets)227 2162 y(in)37 +(enclosed)g(in)f(square)g(brac)m(k)m(ets)227 2167 y(in)37 b(the)h(b)s(eginning)e(of)i(the)f(k)m(eyw)m(ord)h(commen)m(t)g (\014eld.)61 b(A)38 b(blank)f(string)g(is)g(returned)f(if)i(no)f(units) -g(are)227 2274 y(de\014ned)29 b(for)i(the)f(k)m(eyw)m(ord.)191 -2535 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 -2761 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0 -3052 y Fb(6.4.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e(Subroutines)0 -3271 y Fi(Wild)32 b(card)f(c)m(haracters,)j(as)e(describ)s(ed)e(in)h +g(are)227 2280 y(de\014ned)29 b(for)i(the)f(k)m(eyw)m(ord.)191 +2542 y Ff(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 +2768 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0 +3061 y Fc(6.4.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e(Subroutines)0 +3280 y Fj(Wild)32 b(card)f(c)m(haracters,)j(as)e(describ)s(ed)e(in)h (the)h(Read)g(Keyw)m(ord)f(section,)i(ab)s(o)m(v)m(e,)g(ma)m(y)g(b)s(e) -d(used)h(when)g(sp)s(eci-)0 3384 y(fying)f(the)h(name)f(of)h(the)f(k)m -(eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 3645 y Fh(1)81 -b Fi(Mo)s(dify)30 b(\(o)m(v)m(erwrite\))i(the)f(n)m(th)f(80-c)m -(haracter)j(header)d(record)h(in)f(the)g(CHU)382 3905 -y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0 -4166 y Fh(2)81 b Fi(Mo)s(dify)37 b(\(o)m(v)m(erwrite\))j(the)e(80-c)m +d(used)h(when)g(sp)s(eci-)0 3393 y(fying)f(the)h(name)f(of)h(the)f(k)m +(eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 3655 y Fi(1)81 +b Fj(Mo)s(dify)30 b(\(o)m(v)m(erwrite\))i(the)f(n)m(th)f(80-c)m +(haracter)j(header)d(record)h(in)f(the)g(CHU)382 3917 +y Ff(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0 +4179 y Fi(2)81 b Fj(Mo)s(dify)37 b(\(o)m(v)m(erwrite\))j(the)e(80-c)m (haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)m(ord)h(in)g -(the)g(CHU.)g(This)227 4278 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m +(the)g(CHU.)g(This)227 4292 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m (erwrite)h(the)f(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m(ell)g(as)g (its)g(v)-5 b(alue)30 b(and)g(commen)m(t)i(\014elds.)382 -4539 y Fe(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0 -4799 y Fh(3)81 b Fi(Mo)s(dify)33 b(\(o)m(v)m(erwrite\))k(the)d(name)g +4554 y Ff(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0 +4815 y Fi(3)81 b Fj(Mo)s(dify)33 b(\(o)m(v)m(erwrite\))k(the)d(name)g (of)h(an)f(existing)h(k)m(eyw)m(ord)f(in)g(the)h(CHU)f(preserving)f -(the)i(curren)m(t)e(v)-5 b(alue)227 4912 y(and)30 b(commen)m(t)h -(\014elds.)382 5173 y Fe(FTMNAM\(unit,oldkey,keywo)o(rd,)41 -b(>)48 b(status\))0 5433 y Fh(4)81 b Fi(Mo)s(dify)30 +(the)i(curren)m(t)e(v)-5 b(alue)227 4928 y(and)30 b(commen)m(t)h +(\014elds.)382 5190 y Ff(FTMNAM\(unit,oldkey,keywo)o(rd,)41 +b(>)48 b(status\))0 5452 y Fi(4)81 b Fj(Mo)s(dify)30 b(\(o)m(v)m(erwrite\))i(the)f(commen)m(t)g(\014eld)f(of)h(an)f -(existing)h(k)m(eyw)m(ord)g(in)f(the)h(CHU)382 5694 y -Fe(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))p +(existing)h(k)m(eyw)m(ord)g(in)f(the)h(CHU)382 5714 y +Ff(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))p eop end %%Page: 50 56 -TeXDict begin 50 55 bop 0 299 a Fi(50)1319 b Fg(CHAPTER)29 +TeXDict begin 50 55 bop 0 299 a Fj(50)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fh(5)81 b Fi(Mo)s(dify)24 b(the)h(v)-5 +b(SUBR)m(OUTINES)0 555 y Fi(5)81 b Fj(Mo)s(dify)24 b(the)h(v)-5 b(alue)25 b(and)f(commen)m(t)i(\014elds)e(of)h(an)f(existing)i(k)m(eyw) m(ord)f(in)f(the)h(CHU.)g(The)f(FTMKLS)g(subrou-)227 668 y(tine)35 b(w)m(orks)e(the)h(same)h(as)f(the)g(FTMKYS)f @@ -6295,146 +8372,146 @@ b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a) g(\014xed)e(format)i(rather)g(than)f(an)227 1458 y(exp)s(onen)m(tial)c (format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5 -b(alue.)382 1687 y Fe(FTMKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o -(men)o(t,)42 b(>)47 b(status\))382 1800 y(FTMKLS\(unit,keyword,keyv)o -(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 1913 y +b(alue.)382 1689 y Ff(FTMKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o +(men)o(t,)42 b(>)47 b(status\))382 1802 y(FTMKLS\(unit,keyword,keyv)o +(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 1915 y (FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o -(nt,)41 b(>)48 b(status\))0 2141 y Fh(6)81 b Fi(Mo)s(dify)22 +(nt,)41 b(>)48 b(status\))0 2146 y Fi(6)81 b Fj(Mo)s(dify)22 b(the)g(v)-5 b(alue)23 b(of)f(an)g(existing)i(k)m(eyw)m(ord)e(to)h(b)s (e)f(unde\014ned,)g(or)g(n)m(ull.)38 b(The)22 b(v)-5 -b(alue)22 b(string)h(of)f(the)g(k)m(eyw)m(ord)227 2254 +b(alue)22 b(string)h(of)f(the)g(k)m(eyw)m(ord)227 2259 y(is)30 b(set)h(to)g(blank.)40 b(Optionally)-8 b(,)31 b(one)f(ma)m(y)h(lea)m(v)m(e)h(the)f(commen)m(t)g(\014eld)e(unc)m -(hanged)h(b)m(y)g(setting)h(the)f(input)227 2367 y(COMMENT)g(parameter) +(hanged)h(b)m(y)g(setting)h(the)f(input)227 2372 y(COMMENT)g(parameter) h(equal)g(to)g(the)g(amp)s(ersand)e(c)m(haracter)j(\(&\).)382 -2595 y Fe(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 -b(status\))0 2881 y Fb(6.4.7)112 b(Up)s(date)39 b(Keyw)m(ord)e -(Subroutines)0 3084 y Fh(1)81 b Fi(Up)s(date)36 b(an)g(80-c)m(haracter) +2602 y Ff(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 +b(status\))0 2888 y Fc(6.4.7)112 b(Up)s(date)39 b(Keyw)m(ord)e +(Subroutines)0 3092 y Fi(1)81 b Fj(Up)s(date)36 b(an)g(80-c)m(haracter) j(record)d(in)g(the)h(CHU.)f(If)g(the)g(sp)s(eci\014ed)g(k)m(eyw)m(ord) -h(already)f(exists)h(then)f(that)227 3197 y(header)j(record)f(will)h(b) +h(already)f(exists)h(then)f(that)227 3205 y(header)j(record)f(will)h(b) s(e)f(replaced)i(with)e(the)h(input)f(CARD)g(string.)66 b(If)38 b(it)i(do)s(es)e(not)h(exist)g(then)g(the)227 -3310 y(new)f(record)g(will)g(b)s(e)f(added)h(to)g(the)g(header.)64 +3318 y(new)f(record)g(will)g(b)s(e)f(added)h(to)g(the)g(header.)64 b(The)37 b(FTUKLS)g(subroutine)g(w)m(orks)h(the)g(same)h(as)f(the)227 -3423 y(FTUKYS)28 b(subroutine,)g(except)i(it)f(also)h(supp)s(orts)c +3431 y(FTUKYS)28 b(subroutine,)g(except)i(it)f(also)h(supp)s(orts)c (long)j(string)g(v)-5 b(alues)29 b(greater)h(than)e(68)h(c)m(haracters) -h(in)227 3536 y(length.)382 3764 y Fe(FTUCRD\(unit,keyword,card)o(,)42 -b(>)47 b(status\))0 3993 y Fh(2)81 b Fi(Up)s(date)44 +h(in)227 3544 y(length.)382 3775 y Ff(FTUCRD\(unit,keyword,card)o(,)42 +b(>)47 b(status\))0 4006 y Fi(2)81 b Fj(Up)s(date)44 b(the)i(v)-5 b(alue)45 b(and)g(commen)m(t)h(\014elds)e(of)h(a)h(k)m (eyw)m(ord)f(in)g(the)g(CHU.)h(The)e(sp)s(eci\014ed)g(k)m(eyw)m(ord)i -(is)227 4106 y(mo)s(di\014ed)38 b(if)g(it)h(already)g(exists)g(\(b)m(y) +(is)227 4118 y(mo)s(di\014ed)38 b(if)g(it)h(already)g(exists)g(\(b)m(y) g(calling)h(FTMKYx\))f(otherwise)f(a)h(new)f(k)m(eyw)m(ord)h(is)g -(created)g(b)m(y)227 4218 y(calling)f(FTPKYx.)58 b(The)36 +(created)g(b)m(y)227 4231 y(calling)f(FTPKYx.)58 b(The)36 b(E)g(and)f(D)i(v)m(ersions)f(of)h(this)f(routine)g(ha)m(v)m(e)h(the)g -(added)e(feature)i(that)g(if)f(the)227 4331 y('decimals')c(parameter)g +(added)e(feature)i(that)g(if)f(the)227 4344 y('decimals')c(parameter)g (is)f(negativ)m(e,)i(then)d(the)h('G')h(displa)m(y)f(format)g(rather)g -(then)f(the)h('E')g(format)h(will)227 4444 y(b)s(e)41 +(then)f(the)h('E')g(format)h(will)227 4457 y(b)s(e)41 b(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)-5 b(alue,)45 b(taking)d(the)f(absolute)h(v)-5 b(alue)42 -b(of)g('decimals')g(for)227 4557 y(the)37 b(precision.)60 +b(of)g('decimals')g(for)227 4570 y(the)37 b(precision.)60 b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a) -g(\014xed)e(format)i(rather)g(than)f(an)227 4670 y(exp)s(onen)m(tial)c +g(\014xed)e(format)i(rather)g(than)f(an)227 4683 y(exp)s(onen)m(tial)c (format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5 -b(alue.)382 4898 y Fe(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o -(men)o(t,)42 b(>)47 b(status\))382 5011 y(FTUKLS\(unit,keyword,keyv)o -(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 5124 y +b(alue.)382 4914 y Ff(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o +(men)o(t,)42 b(>)47 b(status\))382 5027 y(FTUKLS\(unit,keyword,keyv)o +(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 5140 y (FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o -(nt,)41 b(>)48 b(status\))0 5352 y Fh(3)81 b Fi(Up)s(date)23 +(nt,)41 b(>)48 b(status\))0 5370 y Fi(3)81 b Fj(Up)s(date)23 b(the)g(v)-5 b(alue)24 b(of)g(an)f(existing)i(k)m(eyw)m(ord)f(to)g(b)s (e)f(unde\014ned,)f(or)i(n)m(ull,)h(or)e(insert)h(a)f(new)g -(unde\014ned-v)-5 b(alue)227 5465 y(k)m(eyw)m(ord)30 +(unde\014ned-v)-5 b(alue)227 5483 y(k)m(eyw)m(ord)30 b(if)f(it)h(do)s(esn't)f(already)h(exist.)41 b(The)29 b(v)-5 b(alue)30 b(string)f(of)g(the)h(k)m(eyw)m(ord)f(is)h(left)g -(blank)f(in)f(this)i(case.)382 5694 y Fe(FTUKYU\(unit,keyword,comm)o +(blank)f(in)f(this)i(case.)382 5714 y Ff(FTUKYU\(unit,keyword,comm)o (ent)o(,)42 b(>)47 b(status\))p eop end %%Page: 51 57 -TeXDict begin 51 56 bop 0 299 a Fg(6.5.)72 b(D)m(A)-8 +TeXDict begin 51 56 bop 0 299 a Fh(6.5.)72 b(D)m(A)-8 b(T)g(A)32 b(SCALING)e(AND)h(UNDEFINED)h(PIXEL)e(P)-8 -b(ARAMETERS)1083 b Fi(51)0 555 y Fb(6.4.8)112 b(Delete)38 -b(Keyw)m(ord)f(Subroutines)0 763 y Fh(1)81 b Fi(Delete)32 +b(ARAMETERS)1083 b Fj(51)0 555 y Fc(6.4.8)112 b(Delete)38 +b(Keyw)m(ord)f(Subroutines)0 764 y Fi(1)81 b Fj(Delete)32 b(an)e(existing)h(k)m(eyw)m(ord)g(record.)40 b(The)30 b(space)h(previously)f(o)s(ccupied)g(b)m(y)g(the)g(k)m(eyw)m(ord)h(is)f -(reclaimed)227 876 y(b)m(y)c(mo)m(ving)h(all)g(the)f(follo)m(wing)i +(reclaimed)227 877 y(b)m(y)c(mo)m(ving)h(all)g(the)f(follo)m(wing)i (header)e(records)g(up)f(one)h(ro)m(w)h(in)e(the)i(header.)39 -b(The)25 b(\014rst)h(routine)g(deletes)227 989 y(a)34 +b(The)25 b(\014rst)h(routine)g(deletes)227 990 y(a)34 b(k)m(eyw)m(ord)f(at)h(a)g(sp)s(eci\014ed)e(p)s(osition)h(in)g(the)g (header)g(\(the)h(\014rst)e(k)m(eyw)m(ord)i(is)f(at)h(p)s(osition)f -(1\),)i(whereas)227 1102 y(the)d(second)g(routine)g(deletes)h(a)f(sp)s +(1\),)i(whereas)227 1103 y(the)d(second)g(routine)g(deletes)h(a)f(sp)s (eci\014cally)g(named)f(k)m(eyw)m(ord.)46 b(Wild)32 b(card)f(c)m (haracters,)j(as)e(describ)s(ed)227 1215 y(in)f(the)g(Read)g(Keyw)m (ord)f(section,)i(ab)s(o)m(v)m(e,)g(ma)m(y)g(b)s(e)e(used)g(when)f(sp)s (ecifying)i(the)g(name)g(of)g(the)f(k)m(eyw)m(ord)227 1328 y(to)h(b)s(e)f(deleted)h(\(b)s(e)f(careful!\).)382 -1582 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 -1695 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 2028 -y Fd(6.5)135 b(Data)46 b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l -(arameters)0 2278 y Fi(These)24 b(subroutines)f(de\014ne)h(or)h(mo)s +1586 y Ff(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 +1699 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 2032 +y Fe(6.5)135 b(Data)46 b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l +(arameters)0 2282 y Fj(These)24 b(subroutines)f(de\014ne)h(or)h(mo)s (dify)e(the)i(in)m(ternal)g(parameters)g(used)f(b)m(y)g(FITSIO)g(to)h -(either)g(scale)h(the)e(data)0 2391 y(or)33 b(to)i(represen)m(t)e +(either)g(scale)h(the)e(data)0 2395 y(or)33 b(to)i(represen)m(t)e (unde\014ned)e(pixels.)50 b(Generally)35 b(FITSIO)d(will)i(scale)g(the) g(data)g(according)g(to)g(the)g(v)-5 b(alues)34 b(of)0 -2504 y(the)e(BSCALE)g(and)f(BZER)m(O)h(\(or)h(TSCALn)d(and)i(TZER)m +2508 y(the)e(BSCALE)g(and)f(BZER)m(O)h(\(or)h(TSCALn)d(and)i(TZER)m (On\))f(k)m(eyw)m(ords,)i(ho)m(w)m(ev)m(er)h(these)e(subroutines)f(ma)m -(y)0 2617 y(b)s(e)h(used)h(to)h(o)m(v)m(erride)g(the)f(k)m(eyw)m(ord)h +(y)0 2621 y(b)s(e)h(used)h(to)h(o)m(v)m(erride)g(the)f(k)m(eyw)m(ord)h (v)-5 b(alues.)49 b(This)32 b(ma)m(y)i(b)s(e)f(useful)f(when)g(one)i(w) -m(an)m(ts)f(to)h(read)f(or)g(write)h(the)0 2730 y(ra)m(w)c(unscaled)f +m(an)m(ts)f(to)h(read)f(or)g(write)h(the)0 2734 y(ra)m(w)c(unscaled)f (v)-5 b(alues)29 b(in)h(the)f(FITS)g(\014le.)40 b(Similarly)-8 b(,)31 b(FITSIO)d(generally)j(uses)e(the)g(v)-5 b(alue)30 -b(of)g(the)f(BLANK)h(or)0 2843 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g +b(of)g(the)f(BLANK)h(or)0 2847 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g (signify)f(an)h(unde\014ned)d(pixel,)k(but)e(these)h(routines)g(ma)m(y) -g(b)s(e)e(used)h(to)h(o)m(v)m(erride)h(this)0 2956 y(v)-5 +g(b)s(e)e(used)h(to)h(o)m(v)m(erride)h(this)0 2959 y(v)-5 b(alue.)41 b(These)30 b(subroutines)f(do)i(not)f(create)i(or)f(mo)s (dify)e(the)i(corresp)s(onding)e(header)h(k)m(eyw)m(ord)h(v)-5 -b(alues.)0 3210 y Fh(1)81 b Fi(Reset)26 b(the)g(scaling)g(factors)g(in) +b(alues.)0 3217 y Fi(1)81 b Fj(Reset)26 b(the)g(scaling)g(factors)g(in) f(the)h(primary)f(arra)m(y)h(or)f(image)i(extension;)h(do)s(es)d(not)g -(c)m(hange)i(the)f(BSCALE)227 3323 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h +(c)m(hange)i(the)f(BSCALE)227 3330 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h (v)-5 b(alues)28 b(and)g(only)g(a\013ects)i(the)e(automatic)j(scaling)e -(p)s(erformed)e(when)g(the)h(data)227 3436 y(elemen)m(ts)f(are)f +(p)s(erformed)e(when)g(the)h(data)227 3443 y(elemen)m(ts)f(are)f (written/read)g(to/from)g(the)g(FITS)f(\014le.)39 b(When)25 b(reading)h(from)f(a)h(FITS)f(\014le)g(the)h(returned)227 -3549 y(data)i(v)-5 b(alue)28 b(=)f(\(the)h(v)-5 b(alue)28 +3556 y(data)i(v)-5 b(alue)28 b(=)f(\(the)h(v)-5 b(alue)28 b(giv)m(en)h(in)e(the)g(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.) -g(The)g(in)m(v)m(erse)i(form)m(ula)227 3662 y(is)34 b(used)f(when)g +g(The)g(in)m(v)m(erse)i(form)m(ula)227 3668 y(is)34 b(used)f(when)g (writing)h(data)h(v)-5 b(alues)34 b(to)g(the)g(FITS)g(\014le.)51 b(\(NOTE:)34 b(BSCALE)f(and)g(BZER)m(O)h(m)m(ust)g(b)s(e)227 -3775 y(declared)d(as)g(Double)g(Precision)g(v)-5 b(ariables\).)382 -4029 y Fe(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0 -4284 y Fh(2)81 b Fi(Reset)39 b(the)f(scaling)i(parameters)e(for)h(a)f +3781 y(declared)d(as)g(Double)g(Precision)g(v)-5 b(ariables\).)382 +4039 y Ff(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0 +4296 y Fi(2)81 b Fj(Reset)39 b(the)f(scaling)i(parameters)e(for)h(a)f (table)h(column;)k(do)s(es)38 b(not)g(c)m(hange)i(the)e(TSCALn)f(or)h -(TZER)m(On)227 4397 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)29 +(TZER)m(On)227 4409 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)29 b(and)e(only)i(a\013ects)g(the)g(automatic)h(scaling)f(p)s(erformed)e -(when)g(the)i(data)g(elemen)m(ts)h(are)227 4510 y(written/read)i +(when)g(the)i(data)g(elemen)m(ts)h(are)227 4522 y(written/read)i (to/from)g(the)g(FITS)f(\014le.)44 b(When)31 b(reading)g(from)g(a)h (FITS)f(\014le)g(the)h(returned)e(data)i(v)-5 b(alue)227 -4623 y(=)40 b(\(the)h(v)-5 b(alue)40 b(giv)m(en)h(in)f(the)g(FITS)g +4635 y(=)40 b(\(the)h(v)-5 b(alue)40 b(giv)m(en)h(in)f(the)g(FITS)g (arra)m(y\))g(*)h(TSCAL)e(+)g(TZER)m(O.)h(The)f(in)m(v)m(erse)i(form)m -(ula)g(is)f(used)227 4736 y(when)33 b(writing)h(data)h(v)-5 +(ula)g(is)f(used)227 4748 y(when)33 b(writing)h(data)h(v)-5 b(alues)35 b(to)f(the)h(FITS)e(\014le.)52 b(\(NOTE:)34 b(TSCAL)f(and)g(TZER)m(O)g(m)m(ust)h(b)s(e)f(declared)227 -4848 y(as)e(Double)g(Precision)g(v)-5 b(ariables\).)382 -5103 y Fe(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 -b(status\))0 5357 y Fh(3)81 b Fi(De\014ne)36 b(the)g(in)m(teger)i(v)-5 +4861 y(as)e(Double)g(Precision)g(v)-5 b(ariables\).)382 +5118 y Ff(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 +b(status\))0 5375 y Fi(3)81 b Fj(De\014ne)36 b(the)g(in)m(teger)i(v)-5 b(alue)36 b(to)h(b)s(e)e(used)h(to)h(signify)f(unde\014ned)e(pixels)i -(in)g(the)g(primary)f(arra)m(y)i(or)f(image)227 5470 +(in)g(the)g(primary)f(arra)m(y)i(or)f(image)227 5488 y(extension.)59 b(This)35 b(is)h(only)g(used)g(if)g(BITPIX)g(=)f(8,)j (16,)h(32.)59 b(or)36 b(64)h(This)e(do)s(es)h(not)g(create)i(or)e(c)m -(hange)227 5583 y(the)27 b(v)-5 b(alue)28 b(of)f(the)g(BLANK)g(k)m(eyw) +(hange)227 5601 y(the)27 b(v)-5 b(alue)28 b(of)f(the)g(BLANK)g(k)m(eyw) m(ord)h(in)e(the)i(header.)39 b(FTPNULLL)27 b(is)g(iden)m(tical)h(to)g -(FTPNUL)f(except)227 5696 y(that)k(the)g(blank)f(v)-5 +(FTPNUL)f(except)227 5714 y(that)k(the)g(blank)f(v)-5 b(alue)31 b(is)f(a)h(64-bit)g(in)m(teger)h(instead)f(of)f(a)h(32-bit)h (in)m(teger.)p eop end %%Page: 52 58 -TeXDict begin 52 57 bop 0 299 a Fi(52)1319 b Fg(CHAPTER)29 +TeXDict begin 52 57 bop 0 299 a Fj(52)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTPNUL\(unit,blank,)43 +b(SUBR)m(OUTINES)382 555 y Ff(FTPNUL\(unit,blank,)43 b(>)k(status\))382 668 y(FTPNULLL\(unit,blankll,)42 b(>)47 -b(status\))0 919 y Fh(4)81 b Fi(De\014ne)36 b(the)g(string)g(to)g(b)s +b(status\))0 919 y Fi(4)81 b Fj(De\014ne)36 b(the)g(string)g(to)g(b)s (e)f(used)g(to)i(signify)f(unde\014ned)e(pixels)i(in)f(a)h(column)g(in) g(an)f(ASCI)s(I)g(table.)58 b(This)227 1032 y(do)s(es)30 b(not)h(create)h(or)e(c)m(hange)i(the)e(v)-5 b(alue)31 -b(of)g(the)f(TNULLn)g(k)m(eyw)m(ord.)382 1283 y Fe +b(of)g(the)f(TNULLn)g(k)m(eyw)m(ord.)382 1283 y Ff (FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))0 1534 -y Fh(5)81 b Fi(De\014ne)34 b(the)h(v)-5 b(alue)34 b(to)h(b)s(e)f(used)g +y Fi(5)81 b Fj(De\014ne)34 b(the)h(v)-5 b(alue)34 b(to)h(b)s(e)f(used)g (to)h(signify)f(unde\014ned)e(pixels)j(in)f(an)g(in)m(teger)i(column)e (in)g(a)g(binary)g(table)227 1647 y(\(where)42 b(TF)m(ORMn)f(=)g('B',)i ('I',)f('J',)f(or)h('K'\).)g(This)f(do)s(es)g(not)h(create)h(or)e(c)m @@ -6442,11 +8519,11 @@ (ord.)71 b(FTTNULLL)39 b(is)i(iden)m(tical)h(to)e(FTTNUL)g(except)h (that)g(the)f(tn)m(ull)h(v)-5 b(alue)40 b(is)h(a)227 1872 y(64-bit)32 b(in)m(teger)g(instead)e(of)h(a)g(32-bit)g(in)m -(teger.)382 2123 y Fe(FTTNUL\(unit,colnum,tnull)41 b(>)47 +(teger.)382 2123 y Ff(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))382 2236 y(FTTNULLL\(unit,colnum,tnu)o(lll)o(l)42 -b(>)47 b(status\))0 2569 y Fd(6.6)135 b(FITS)44 b(Primary)h(Arra)l(y)g +b(>)47 b(status\))0 2569 y Fe(6.6)135 b(FITS)44 b(Primary)h(Arra)l(y)g (or)g(IMA)l(GE)g(Extension)h(I/O)f(Subroutines)0 2819 -y Fi(These)26 b(subroutines)f(put)h(or)h(get)g(data)h(v)-5 +y Fj(These)26 b(subroutines)f(put)h(or)h(get)g(data)h(v)-5 b(alues)26 b(in)h(the)f(primary)g(data)h(arra)m(y)g(\(i.e.,)i(the)e (\014rst)f(HDU)h(in)f(the)h(FITS)0 2932 y(\014le\))35 b(or)g(an)f(IMA)m(GE)i(extension.)54 b(The)34 b(data)i(arra)m(y)f(is)f @@ -6496,8 +8573,8 @@ (e)h(b)s(een)e(pro)m(vided,)j(as)0 5124 y(w)m(ell)31 b(as)f(a)g(set)g(of)g(subroutines)e(to)i(read)g(or)g(write)f(an)m(y)h (con)m(tiguous)h(rectangular)g(subset)e(of)h(pixels)g(within)f(the)0 -5237 y(n-dimensional)h(arra)m(y)-8 b(.)0 5488 y Fh(1)81 -b Fi(Get)39 b(the)g(data)h(t)m(yp)s(e)e(of)h(the)g(image)h(\(=)f +5237 y(n-dimensional)h(arra)m(y)-8 b(.)0 5488 y Fi(1)81 +b Fj(Get)39 b(the)g(data)h(t)m(yp)s(e)e(of)h(the)g(image)h(\(=)f (BITPIX)f(v)-5 b(alue\).)67 b(P)m(ossible)39 b(returned)f(v)-5 b(alues)39 b(are:)58 b(8,)41 b(16,)h(32,)227 5601 y(64,)36 b(-32,)h(or)d(-64)h(corresp)s(onding)e(to)h(unsigned)f(b)m(yte,)j @@ -6505,9 +8582,9 @@ 227 5714 y(signed)c(8-b)m(yte)g(in)m(teger,)h(real,)g(and)d(double.)p eop end %%Page: 53 59 -TeXDict begin 53 58 bop 0 299 a Fg(6.6.)72 b(FITS)30 +TeXDict begin 53 58 bop 0 299 a Fh(6.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i -(SUBR)m(OUTINES)589 b Fi(53)227 555 y(The)26 b(second)f(subroutine)g +(SUBR)m(OUTINES)589 b Fj(53)227 555 y(The)26 b(second)f(subroutine)g (is)h(similar)g(to)g(FTGIDT,)h(except)f(that)h(if)f(the)f(image)j (pixel)e(v)-5 b(alues)26 b(are)g(scaled,)227 668 y(with)h(non-default)g (v)-5 b(alues)27 b(for)g(the)h(BZER)m(O)f(and)f(BSCALE)g(k)m(eyw)m @@ -6526,66 +8603,66 @@ g(v)-5 b(alue.)40 b(Similarly)27 b(if)f(the)i(image)g(con)m(tains)g (unsigned)e(4-b)m(yte)227 1346 y(in)m(tegers,)32 b(then)e(bitpix)g (will)h(b)s(e)f(returned)f(with)h(a)h(v)-5 b(alue)31 -b(of)f(40.)382 1602 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 -1715 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 1971 y Fh(2)81 -b Fi(Get)31 b(the)g(dimension)e(\(n)m(um)m(b)s(er)h(of)g(axes)h(=)f -(NAXIS\))h(of)f(the)h(image)382 2227 y Fe(FTGIDM\(unit,)44 -b(>)k(naxis,status\))0 2484 y Fh(3)81 b Fi(Get)38 b(the)f(size)h(of)f +b(of)f(40.)382 1603 y Ff(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 +1716 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 1974 y Fi(2)81 +b Fj(Get)31 b(the)g(dimension)e(\(n)m(um)m(b)s(er)h(of)g(axes)h(=)f +(NAXIS\))h(of)f(the)h(image)382 2232 y Ff(FTGIDM\(unit,)44 +b(>)k(naxis,status\))0 2490 y Fi(3)81 b Fj(Get)38 b(the)f(size)h(of)f (all)h(the)f(dimensions)g(of)g(the)g(image.)62 b(The)37 b(FTGISZLL)e(routine)i(returns)f(an)h(arra)m(y)h(of)227 -2597 y(64-bit)32 b(in)m(tegers)g(instead)e(of)h(32-bit)g(in)m(tegers.) -382 2853 y Fe(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))382 -2966 y(FTGISZLL\(unit,)c(maxdim,)i(>)h(naxesll,status\))0 -3222 y Fh(4)81 b Fi(Get)35 b(the)f(parameters)g(that)h(de\014ne)e(the)h +2603 y(64-bit)32 b(in)m(tegers)g(instead)e(of)h(32-bit)g(in)m(tegers.) +382 2861 y Ff(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))382 +2974 y(FTGISZLL\(unit,)c(maxdim,)i(>)h(naxesll,status\))0 +3231 y Fi(4)81 b Fj(Get)35 b(the)f(parameters)g(that)h(de\014ne)e(the)h (t)m(yp)s(e)g(and)g(size)g(of)h(the)f(image.)53 b(This)33 -b(routine)h(simply)f(com)m(bines)227 3335 y(calls)40 +b(routine)h(simply)f(com)m(bines)227 3344 y(calls)40 b(to)f(the)g(ab)s(o)m(v)m(e)h(3)f(routines.)65 b(The)38 b(FTGIPRLL)g(routine)h(returns)e(an)i(arra)m(y)g(of)g(64-bit)h(in)m -(tegers)227 3448 y(instead)31 b(of)f(32-bit)i(in)m(tegers.)382 -3704 y Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h -(int)f(*status\))382 3817 y(FTGIPRLL\(unit,)e(maxdim,)i(>)h(bitpix,)f -(naxis,)g(naxesll,)f(int)i(*status\))0 4073 y Fh(5)81 -b Fi(Put)30 b(elemen)m(ts)h(in)m(to)h(the)e(data)h(arra)m(y)382 -4330 y Fe(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o -(valu)o(es,)41 b(>)48 b(status\))0 4586 y Fh(6)81 b Fi(Put)30 +(tegers)227 3457 y(instead)31 b(of)f(32-bit)i(in)m(tegers.)382 +3715 y Ff(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h +(int)f(*status\))382 3828 y(FTGIPRLL\(unit,)e(maxdim,)i(>)h(bitpix,)f +(naxis,)g(naxesll,)f(int)i(*status\))0 4086 y Fi(5)81 +b Fj(Put)30 b(elemen)m(ts)h(in)m(to)h(the)e(data)h(arra)m(y)382 +4344 y Ff(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o +(valu)o(es,)41 b(>)48 b(status\))0 4602 y Fi(6)81 b Fj(Put)30 b(elemen)m(ts)i(in)m(to)f(the)g(data)g(arra)m(y)-8 b(,)32 b(substituting)e(the)g(appropriate)h(FITS)f(n)m(ull)g(v)-5 -b(alue)31 b(for)f(all)i(elemen)m(ts)227 4699 y(whic)m(h)c(are)f(equal)i +b(alue)31 b(for)f(all)i(elemen)m(ts)227 4714 y(whic)m(h)c(are)f(equal)i (to)f(the)f(v)-5 b(alue)28 b(of)g(NULL)-10 b(V)g(AL.)28 b(F)-8 b(or)28 b(in)m(teger)h(FITS)e(arra)m(ys,)i(the)e(n)m(ull)h(v)-5 -b(alue)28 b(de\014ned)e(b)m(y)227 4812 y(the)k(previous)f(call)i(to)g +b(alue)28 b(de\014ned)e(b)m(y)227 4827 y(the)k(previous)f(call)i(to)g (FTPNUL)e(will)h(b)s(e)f(substituted;)h(for)f(\015oating)i(p)s(oin)m(t) -f(FITS)f(arra)m(ys)h(\(BITPIX)f(=)227 4925 y(-32)j(or)e(-64\))i(then)e +f(FITS)f(arra)m(ys)h(\(BITPIX)f(=)227 4940 y(-32)j(or)e(-64\))i(then)e (the)h(sp)s(ecial)g(IEEE)e(NaN)i(\(Not-a-Num)m(b)s(er\))h(v)-5 -b(alue)31 b(will)g(b)s(e)f(substituted.)382 5181 y Fe +b(alue)31 b(will)g(b)s(e)f(substituted.)382 5198 y Ff (FTPPN[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o(valu)o -(es,)o(null)o(val)41 b(>)48 b(status\))0 5437 y Fh(7)81 -b Fi(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)h(as)e(unde\014ned)382 -5694 y Fe(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o(nts,)41 +(es,)o(null)o(val)41 b(>)48 b(status\))0 5456 y Fi(7)81 +b Fj(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)h(as)e(unde\014ned)382 +5714 y Ff(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o(nts,)41 b(>)47 b(status\))p eop end %%Page: 54 60 -TeXDict begin 54 59 bop 0 299 a Fi(54)1319 b Fg(CHAPTER)29 +TeXDict begin 54 59 bop 0 299 a Fj(54)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fh(8)81 b Fi(Get)36 b(elemen)m(ts)g(from)f +b(SUBR)m(OUTINES)0 555 y Fi(8)81 b Fj(Get)36 b(elemen)m(ts)g(from)f (the)g(data)h(arra)m(y)-8 b(.)55 b(Unde\014ned)34 b(arra)m(y)h(elemen)m (ts)i(will)e(b)s(e)g(returned)f(with)g(a)i(v)-5 b(alue)35 b(=)227 668 y(n)m(ullv)-5 b(al,)31 b(unless)f(n)m(ullv)-5 b(al)31 b(=)f(0)h(in)f(whic)m(h)g(case)h(no)g(c)m(hec)m(ks)g(for)g (unde\014ned)d(pixels)i(will)h(b)s(e)f(p)s(erformed.)382 -914 y Fe(FTGPV[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o +914 y Ff(FTGPV[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o (null)o(val)o(,)42 b(>)47 b(values,anyf,status\))0 1160 -y Fh(9)81 b Fi(Get)32 b(elemen)m(ts)g(and)f(n)m(ull\015ags)g(from)g +y Fi(9)81 b Fj(Get)32 b(elemen)m(ts)g(and)f(n)m(ull\015ags)g(from)g (data)h(arra)m(y)-8 b(.)44 b(An)m(y)32 b(unde\014ned)d(arra)m(y)i (elemen)m(ts)i(will)e(ha)m(v)m(e)i(the)e(corre-)227 1273 y(sp)s(onding)e(\015agv)-5 b(als)31 b(elemen)m(t)h(set)f(equal)g(to)g -(.TR)m(UE.)382 1519 y Fe(FTGPF[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel) +(.TR)m(UE.)382 1519 y Ff(FTGPF[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel) o(eme)o(nts,)41 b(>)48 b(values,flagvals,anyf,st)o(atu)o(s\))0 -1765 y Fh(10)e Fi(Put)30 b(v)-5 b(alues)31 b(in)m(to)g(group)f -(parameters)382 2011 y Fe(FTPGP[BIJKED]\(unit,group)o(,fp)o(arm,)o +1765 y Fi(10)e Fj(Put)30 b(v)-5 b(alues)31 b(in)m(to)g(group)f +(parameters)382 2011 y Ff(FTPGP[BIJKED]\(unit,group)o(,fp)o(arm,)o (npar)o(m,v)o(alue)o(s,)42 b(>)47 b(status\))0 2257 y -Fh(11)f Fi(Get)31 b(v)-5 b(alues)31 b(from)f(group)g(parameters)382 -2503 y Fe(FTGGP[BIJKED]\(unit,group)o(,fp)o(arm,)o(npar)o(m,)41 -b(>)48 b(values,status\))0 2749 y Fi(The)32 b(follo)m(wing)h(4)g +Fi(11)f Fj(Get)31 b(v)-5 b(alues)31 b(from)f(group)g(parameters)382 +2503 y Ff(FTGGP[BIJKED]\(unit,group)o(,fp)o(arm,)o(npar)o(m,)41 +b(>)48 b(values,status\))0 2749 y Fj(The)32 b(follo)m(wing)h(4)g (subroutines)e(transfer)g(FITS)h(images)h(with)f(2)g(or)g(3)h (dimensions)e(to)i(or)f(from)g(a)h(data)f(arra)m(y)0 2862 y(whic)m(h)h(has)g(b)s(een)g(declared)g(in)g(the)h(calling)h @@ -6608,21 +8685,21 @@ (arra)m(y)0 3653 y(and)k(writing)g(them)g(to)h(a)g(non-con)m(tiguous)g (arra)m(y)f(in)g(program)g(memory)g(\(i.e.,)j(there)e(are)f(no)m(w)h (some)f(blank)0 3766 y(pixels)c(around)e(the)h(edge)i(of)e(the)h(image) -g(in)f(the)h(program)f(arra)m(y\).)0 4012 y Fh(11)46 -b Fi(Put)30 b(2-D)i(image)f(in)m(to)h(the)e(data)h(arra)m(y)382 -4258 y Fe(FTP2D[BIJKED]\(unit,group)o(,di)o(m1,n)o(axis)o(1,n)o(axis)o -(2,im)o(age)o(,)42 b(>)47 b(status\))0 4504 y Fh(12)f -Fi(Put)30 b(3-D)i(cub)s(e)d(in)m(to)j(the)e(data)h(arra)m(y)382 -4750 y Fe(FTP3D[BIJKED]\(unit,group)o(,di)o(m1,d)o(im2,)o(nax)o(is1,)o +g(in)f(the)h(program)f(arra)m(y\).)0 4012 y Fi(11)46 +b Fj(Put)30 b(2-D)i(image)f(in)m(to)h(the)e(data)h(arra)m(y)382 +4258 y Ff(FTP2D[BIJKED]\(unit,group)o(,di)o(m1,n)o(axis)o(1,n)o(axis)o +(2,im)o(age)o(,)42 b(>)47 b(status\))0 4504 y Fi(12)f +Fj(Put)30 b(3-D)i(cub)s(e)d(in)m(to)j(the)e(data)h(arra)m(y)382 +4750 y Ff(FTP3D[BIJKED]\(unit,group)o(,di)o(m1,d)o(im2,)o(nax)o(is1,)o (naxi)o(s2,)o(naxi)o(s3,c)o(ube)o(,)42 b(>)47 b(status\))0 -4996 y Fh(13)f Fi(Get)29 b(2-D)f(image)h(from)f(the)f(data)i(arra)m(y) +4996 y Fi(13)f Fj(Get)29 b(2-D)f(image)h(from)f(the)f(data)i(arra)m(y) -8 b(.)41 b(Unde\014ned)26 b(pixels)h(in)h(the)g(arra)m(y)g(will)g(b)s (e)f(set)h(equal)g(to)h(the)e(v)-5 b(alue)227 5109 y(of)31 b('n)m(ullv)-5 b(al',)31 b(unless)f(n)m(ullv)-5 b(al=0)31 b(in)f(whic)m(h)g(case)i(no)e(testing)i(for)e(unde\014ned)e(pixels)i -(will)h(b)s(e)f(p)s(erformed.)382 5355 y Fe(FTG2D[BIJKED]\(unit,group)o +(will)h(b)s(e)f(p)s(erformed.)382 5355 y Ff(FTG2D[BIJKED]\(unit,group)o (,nu)o(llva)o(l,di)o(m1,)o(naxi)o(s1,n)o(axi)o(s2,)41 -b(>)48 b(image,anyf,status\))0 5601 y Fh(14)e Fi(Get)31 +b(>)48 b(image,anyf,status\))0 5601 y Fi(14)e Fj(Get)31 b(3-D)h(cub)s(e)e(from)g(the)g(data)h(arra)m(y)-8 b(.)42 b(Unde\014ned)29 b(pixels)i(in)f(the)g(arra)m(y)h(will)g(b)s(e)f(set)h (equal)g(to)g(the)f(v)-5 b(alue)227 5714 y(of)31 b('n)m(ullv)-5 @@ -6630,83 +8707,83 @@ e(testing)i(for)e(unde\014ned)e(pixels)i(will)h(b)s(e)f(p)s(erformed.)p eop end %%Page: 55 61 -TeXDict begin 55 60 bop 0 299 a Fg(6.7.)72 b(FITS)30 +TeXDict begin 55 60 bop 0 299 a Fh(6.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 -b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(55)382 555 -y Fe(FTG3D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o(dim2)o(,nax) +b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fj(55)382 555 +y Ff(FTG3D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o(dim2)o(,nax) o(is1)o(,nax)o(is2,)o(nax)o(is3,)41 b(>)1002 668 y(cube,anyf,status\))0 -933 y Fi(The)i(follo)m(wing)h(subroutines)e(transfer)h(a)h(rectangular) +934 y Fj(The)i(follo)m(wing)h(subroutines)e(transfer)h(a)h(rectangular) g(subset)e(of)i(the)f(pixels)g(in)g(a)h(FITS)e(N-dimensional)0 -1045 y(image)31 b(to)g(or)f(from)f(an)h(arra)m(y)g(whic)m(h)g(has)g(b)s +1047 y(image)31 b(to)g(or)f(from)f(an)h(arra)m(y)g(whic)m(h)g(has)g(b)s (een)f(declared)h(in)g(the)g(calling)i(program.)40 b(The)29 -b(fpixels)h(and)f(lpixels)0 1158 y(parameters)e(are)h(in)m(teger)g +b(fpixels)h(and)f(lpixels)0 1160 y(parameters)e(are)h(in)m(teger)g (arra)m(ys)g(whic)m(h)f(sp)s(ecify)f(the)i(starting)g(and)e(ending)h -(pixels)g(in)g(eac)m(h)h(dimension)e(of)i(the)0 1271 +(pixels)g(in)g(eac)m(h)h(dimension)e(of)i(the)0 1273 y(FITS)36 b(image)i(that)f(are)g(to)h(b)s(e)e(read)g(or)h(written.)60 b(\(Note)38 b(that)g(these)f(are)g(the)g(starting)g(and)f(ending)h -(pixels)0 1384 y(in)d(the)h(FITS)f(image,)k(not)d(in)f(the)h(declared)g +(pixels)0 1386 y(in)d(the)h(FITS)f(image,)k(not)d(in)f(the)h(declared)g (arra)m(y\).)55 b(The)34 b(arra)m(y)i(parameter)f(is)g(treated)g -(simply)g(as)g(a)g(large)0 1497 y(one-dimensional)c(arra)m(y)f(of)h +(simply)g(as)g(a)g(large)0 1499 y(one-dimensional)c(arra)m(y)f(of)h (the)f(appropriate)g(datat)m(yp)s(e)h(con)m(taining)h(the)e(pixel)g(v) -5 b(alues;)31 b(The)e(pixel)i(v)-5 b(alues)30 b(in)0 -1610 y(the)c(FITS)f(arra)m(y)i(are)f(read/written)g(from/to)h(this)f +1612 y(the)c(FITS)f(arra)m(y)i(are)f(read/written)g(from/to)h(this)f (program)f(arra)m(y)i(in)e(strict)i(sequence)f(without)g(an)m(y)h -(gaps;)g(it)0 1723 y(is)i(up)e(to)j(the)f(calling)h(routine)f(to)g +(gaps;)g(it)0 1725 y(is)i(up)e(to)j(the)f(calling)h(routine)f(to)g (correctly)h(in)m(terpret)f(the)g(dimensionalit)m(y)h(of)f(this)g(arra) -m(y)-8 b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 1836 +m(y)-8 b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 1838 y(of)d(FITS)g(reading)g(routines)g(\(FTGSVx)g(and)g(FTGSFx)g (subroutines\))f(also)j(ha)m(v)m(e)f(an)f('incs')h(parameter)f(whic)m -(h)0 1949 y(de\014nes)j(the)h(data)h(sampling)e(in)m(terv)-5 +(h)0 1951 y(de\014nes)j(the)h(data)h(sampling)e(in)m(terv)-5 b(al)32 b(in)f(eac)m(h)h(dimension)e(of)h(the)g(FITS)f(arra)m(y)-8 b(.)43 b(F)-8 b(or)32 b(example,)g(if)f(incs\(1\)=2)0 -2062 y(and)i(incs\(2\)=3)h(when)f(reading)g(a)h(2-dimensional)g(FITS)f +2064 y(and)i(incs\(2\)=3)h(when)f(reading)g(a)h(2-dimensional)g(FITS)f (image,)i(then)e(only)h(ev)m(ery)g(other)f(pixel)h(in)f(the)h(\014rst)0 -2175 y(dimension)e(and)h(ev)m(ery)h(3rd)e(pixel)i(in)f(the)g(second)g +2176 y(dimension)e(and)h(ev)m(ery)h(3rd)e(pixel)i(in)f(the)g(second)g (dimension)f(will)i(b)s(e)e(returned)g(in)h(the)g('arra)m(y')h -(parameter.)0 2287 y([Note:)39 b(the)25 b(FTGSSx)f(family)i(of)e +(parameter.)0 2289 y([Note:)39 b(the)25 b(FTGSSx)f(family)i(of)e (routines)h(whic)m(h)g(w)m(ere)g(presen)m(t)g(in)f(previous)g(v)m -(ersions)h(of)g(FITSIO)f(ha)m(v)m(e)i(b)s(een)0 2400 +(ersions)h(of)g(FITSIO)f(ha)m(v)m(e)i(b)s(een)0 2402 y(sup)s(erseded)i(b)m(y)j(the)f(more)h(general)g(FTGSVx)f(family)h(of)g -(routines.])0 2665 y Fh(15)46 b Fi(Put)30 b(an)g(arbitrary)g(data)h +(routines.])0 2669 y Fi(15)46 b Fj(Put)30 b(an)g(arbitrary)g(data)h (subsection)g(in)m(to)g(the)g(data)g(arra)m(y)-8 b(.)382 -2929 y Fe(FTPSS[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o +2935 y Ff(FTPSS[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o (ls,l)o(pix)o(els,)o(arra)o(y,)41 b(>)48 b(status\))0 -3194 y Fh(16)e Fi(Get)30 b(an)e(arbitrary)g(data)i(subsection)e(from)g +3201 y Fi(16)e Fj(Get)30 b(an)e(arbitrary)g(data)i(subsection)e(from)g (the)h(data)g(arra)m(y)-8 b(.)42 b(Unde\014ned)27 b(pixels)h(in)h(the)f -(arra)m(y)i(will)e(b)s(e)g(set)227 3306 y(equal)k(to)h(the)e(v)-5 +(arra)m(y)i(will)e(b)s(e)g(set)227 3314 y(equal)k(to)h(the)e(v)-5 b(alue)33 b(of)e('n)m(ullv)-5 b(al',)33 b(unless)e(n)m(ullv)-5 b(al=0)33 b(in)e(whic)m(h)g(case)i(no)e(testing)i(for)e(unde\014ned)f -(pixels)227 3419 y(will)h(b)s(e)f(p)s(erformed.)382 3684 -y Fe(FTGSV[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l) -o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)42 b(>)1002 3797 -y(array,anyf,status\))0 4061 y Fh(17)k Fi(Get)34 b(an)f(arbitrary)g +(pixels)227 3427 y(will)h(b)s(e)f(p)s(erformed.)382 3693 +y Ff(FTGSV[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l) +o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)42 b(>)1002 3806 +y(array,anyf,status\))0 4073 y Fi(17)k Fj(Get)34 b(an)f(arbitrary)g (data)g(subsection)g(from)g(the)g(data)g(arra)m(y)-8 b(.)50 b(An)m(y)33 b(Unde\014ned)e(pixels)i(in)g(the)g(arra)m(y)h(will) -227 4174 y(ha)m(v)m(e)e(the)e(corresp)s(onding)g('\015agv)-5 +227 4186 y(ha)m(v)m(e)e(the)e(corresp)s(onding)g('\015agv)-5 b(als')31 b(elemen)m(t)h(set)f(equal)g(to)g(.TR)m(UE.)382 -4438 y Fe(FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o -(ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 4551 y -(array,flagvals,anyf,statu)o(s\))0 4890 y Fd(6.7)135 +4452 y Ff(FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o +(ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 4565 y +(array,flagvals,anyf,statu)o(s\))0 4906 y Fe(6.7)135 b(FITS)44 b(ASCI)t(I)g(and)h(Binary)g(T)-11 b(able)45 -b(Data)h(I/O)f(Subroutines)0 5145 y Fb(6.7.1)112 b(Column)39 -b(Information)f(Subroutines)0 5357 y Fh(1)81 b Fi(Get)37 +b(Data)h(I/O)f(Subroutines)0 5161 y Fc(6.7.1)112 b(Column)39 +b(Information)f(Subroutines)0 5375 y Fi(1)81 b Fj(Get)37 b(the)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(or)g(columns)g(in)g(the)h (curren)m(t)f(FITS)g(table.)59 b(The)36 b(n)m(um)m(b)s(er)f(of)h(ro)m -(ws)h(is)f(giv)m(en)227 5470 y(b)m(y)f(the)h(NAXIS2)f(k)m(eyw)m(ord)h +(ws)h(is)f(giv)m(en)227 5488 y(b)m(y)f(the)h(NAXIS2)f(k)m(eyw)m(ord)h (and)f(the)g(n)m(um)m(b)s(er)f(of)h(columns)g(is)g(giv)m(en)h(b)m(y)g -(the)f(TFIELDS)g(k)m(eyw)m(ord)g(in)227 5583 y(the)d(header)f(of)h(the) +(the)f(TFIELDS)g(k)m(eyw)m(ord)g(in)227 5601 y(the)d(header)f(of)h(the) g(table.)45 b(The)31 b(FTGNR)-10 b(WLL)32 b(routine)g(is)f(iden)m (tical)i(to)g(FTGNR)-10 b(W)32 b(except)h(that)f(the)227 -5696 y(n)m(um)m(b)s(er)d(of)i(ro)m(ws)f(is)h(returned)e(as)h(a)h +5714 y(n)m(um)m(b)s(er)d(of)i(ro)m(ws)f(is)h(returned)e(as)h(a)h (64-bit)h(in)m(teger)g(rather)e(than)g(a)h(32-bit)g(in)m(teger.)p eop end %%Page: 56 62 -TeXDict begin 56 61 bop 0 299 a Fi(56)1319 b Fg(CHAPTER)29 +TeXDict begin 56 61 bop 0 299 a Fj(56)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\)) +b(SUBR)m(OUTINES)382 555 y Ff(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\)) 382 668 y(FTGNRWLL\(unit,)e(>)j(nrowsll,)f(status\))382 781 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))0 1044 y -Fh(2)81 b Fi(Get)25 b(the)f(table)i(column)e(n)m(um)m(b)s(er)f(\(and)h +Fi(2)81 b Fj(Get)25 b(the)f(table)i(column)e(n)m(um)m(b)s(er)f(\(and)h (name\))h(of)f(the)h(column)f(whose)g(name)g(matc)m(hes)i(an)e(input)g (template)227 1157 y(name.)38 b(The)21 b(table)i(column)e(names)h(are)g (de\014ned)e(b)m(y)i(the)g(TTYPEn)e(k)m(eyw)m(ords)i(in)f(the)h(FITS)f @@ -6759,11 +8836,11 @@ f(the)g(underscore)f(c)m(har-)227 3719 y(acter)44 b(b)s(e)e(used)g(in)h (column)f(names)h(\(with)g(no)f(em)m(b)s(edded)g(spaces)h(in)g(the)g (name\).)78 b(T)-8 b(railing)43 b(blank)227 3832 y(c)m(haracters)32 -b(are)f(not)f(signi\014can)m(t.)382 4096 y Fe +b(are)f(not)f(signi\014can)m(t.)382 4096 y Ff (FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)42 b(>)47 b(colnum,status\))382 4209 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o -(,)42 b(>)47 b(colname,colnum,status\))0 4472 y Fh(3)81 -b Fi(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)g(in)f(an)g(ASCI)s +(,)42 b(>)47 b(colname,colnum,status\))0 4472 y Fi(3)81 +b Fj(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)g(in)f(an)g(ASCI)s (I)g(or)g(binary)g(table.)66 b(This)38 b(routine)h(returns)e(an)i(in)m (teger)227 4585 y(co)s(de)34 b(v)-5 b(alue)33 b(corresp)s(onding)f(to)i (the)g(datat)m(yp)s(e)g(of)f(the)g(column.)49 b(\(See)34 @@ -6793,9 +8870,9 @@ (the)g(same)g(e\013ect)g(as)g(TF)m(ORMn)f(=)g('60A12'\).)p eop end %%Page: 57 63 -TeXDict begin 57 62 bop 0 299 a Fg(6.7.)72 b(FITS)30 +TeXDict begin 57 62 bop 0 299 a Fh(6.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 -b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(57)227 555 +b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fj(57)227 555 y(The)31 b(second)h(routine,)g(FTEQTY)f(is)g(similar)h(except)h(that)f (in)f(the)h(case)g(of)g(scaled)g(in)m(teger)h(columns)e(it)227 668 y(returns)23 b(the)h('equiv)-5 b(alen)m(t')25 b(data)f(t)m(yp)s(e)g @@ -6813,60 +8890,60 @@ (in)m(teger.)49 b(Similarly)-8 b(,)34 b(if)f(a)g(column)227 1233 y(has)d(TTYPEn)g(=)g('1I')h(and)f(TSCALn)e(=)i(0.12,)j(then)d(the) g(returned)g(t)m(yp)s(eco)s(de)g(will)h(b)s(e)f(the)h(co)s(de)f(for)h -(a)227 1346 y('real')h(column.)382 1611 y Fe(FTGTCL\(unit,colnum,)42 -b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 1724 +(a)227 1346 y('real')h(column.)382 1613 y Ff(FTGTCL\(unit,colnum,)42 +b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 1726 y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o -(s\))0 1989 y Fh(4)81 b Fi(Return)22 b(the)i(displa)m(y)g(width)f(of)g +(s\))0 1993 y Fi(4)81 b Fj(Return)22 b(the)i(displa)m(y)g(width)f(of)g (a)h(column.)39 b(This)22 b(is)i(the)g(length)g(of)f(the)h(string)g -(that)g(will)g(b)s(e)f(returned)f(when)227 2102 y(reading)33 +(that)g(will)g(b)s(e)f(returned)f(when)227 2106 y(reading)33 b(the)g(column)g(as)g(a)g(formatted)g(string.)48 b(The)32 b(displa)m(y)h(width)f(is)h(determined)g(b)m(y)f(the)h(TDISPn)227 -2215 y(k)m(eyw)m(ord,)e(if)g(presen)m(t,)f(otherwise)h(b)m(y)f(the)h -(data)g(t)m(yp)s(e)g(of)f(the)h(column.)382 2480 y Fe(FTGCDW\(unit,)44 -b(colnum,)i(>)i(dispwidth,)d(status\))0 2745 y Fh(5)81 -b Fi(Get)29 b(information)f(ab)s(out)g(an)g(existing)h(ASCI)s(I)e +2219 y(k)m(eyw)m(ord,)e(if)g(presen)m(t,)f(otherwise)h(b)m(y)f(the)h +(data)g(t)m(yp)s(e)g(of)f(the)h(column.)382 2487 y Ff(FTGCDW\(unit,)44 +b(colnum,)i(>)i(dispwidth,)d(status\))0 2754 y Fi(5)81 +b Fj(Get)29 b(information)f(ab)s(out)g(an)g(existing)h(ASCI)s(I)e (table)i(column.)40 b(\(NOTE:)28 b(TSCAL)f(and)g(TZER)m(O)h(m)m(ust)g -(b)s(e)227 2858 y(declared)j(as)g(Double)g(Precision)g(v)-5 +(b)s(e)227 2867 y(declared)j(as)g(Double)g(Precision)g(v)-5 b(ariables\).)41 b(All)31 b(the)g(returned)e(parameters)i(are)f(scalar) -i(quan)m(tities.)382 3123 y Fe(FTGACL\(unit,colnum,)42 -b(>)716 3236 y(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o -(ll,)o(tdis)o(p,st)o(atu)o(s\))0 3501 y Fh(6)81 b Fi(Get)29 +i(quan)m(tities.)382 3135 y Ff(FTGACL\(unit,colnum,)42 +b(>)716 3247 y(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o +(ll,)o(tdis)o(p,st)o(atu)o(s\))0 3515 y Fi(6)81 b Fj(Get)29 b(information)f(ab)s(out)f(an)h(existing)h(binary)e(table)i(column.)40 b(\(NOTE:)28 b(TSCAL)e(and)i(TZER)m(O)f(m)m(ust)h(b)s(e)227 -3614 y(declared)j(as)f(Double)g(Precision)h(v)-5 b(ariables\).)41 +3628 y(declared)j(as)f(Double)g(Precision)h(v)-5 b(ariables\).)41 b(D)m(A)-8 b(T)g(A)g(TYPE)32 b(is)e(a)g(c)m(haracter)i(string)d(whic)m -(h)h(returns)f(the)227 3727 y(datat)m(yp)s(e)35 b(of)g(the)f(column)g +(h)h(returns)f(the)227 3741 y(datat)m(yp)s(e)35 b(of)g(the)f(column)g (as)g(de\014ned)f(b)m(y)h(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)h(\(e.g.,)i -('I',)e('J','E',)g('D',)g(etc.\).)54 b(In)227 3840 y(the)27 +('I',)e('J','E',)g('D',)g(etc.\).)54 b(In)227 3854 y(the)27 b(case)g(of)g(an)f(ASCI)s(I)f(c)m(haracter)j(column,)f(D)m(A)-8 b(T)g(A)g(TYPE)29 b(will)d(ha)m(v)m(e)i(a)f(v)-5 b(alue)27 -b(of)f(the)h(form)f('An')g(where)227 3953 y('n')34 b(is)g(an)g(in)m +b(of)f(the)h(form)f('An')g(where)227 3967 y('n')34 b(is)g(an)g(in)m (teger)i(expressing)e(the)g(width)f(of)h(the)h(\014eld)e(in)h(c)m (haracters.)53 b(F)-8 b(or)35 b(example,)h(if)e(TF)m(ORM)g(=)227 -4066 y('160A8')39 b(then)e(FTGBCL)f(will)h(return)f(D)m(A)-8 +4079 y('160A8')39 b(then)e(FTGBCL)f(will)h(return)f(D)m(A)-8 b(T)g(A)g(TYPE='A8')39 b(and)d(REPEA)-8 b(T=20.)60 b(All)37 -b(the)g(returned)227 4179 y(parameters)31 b(are)g(scalar)g(quan)m -(tities.)382 4444 y Fe(FTGBCL\(unit,colnum,)42 b(>)716 -4557 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o -(ull,)o(tdis)o(p,s)o(tatu)o(s\))0 4822 y Fh(7)81 b Fi(Put)31 +b(the)g(returned)227 4192 y(parameters)31 b(are)g(scalar)g(quan)m +(tities.)382 4460 y Ff(FTGBCL\(unit,colnum,)42 b(>)716 +4573 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o +(ull,)o(tdis)o(p,s)o(tatu)o(s\))0 4840 y Fi(7)81 b Fj(Put)31 b(\(app)s(end\))g(a)i(TDIMn)f(k)m(eyw)m(ord)g(whose)g(v)-5 b(alue)33 b(has)f(the)g(form)g('\(l,m,n...\)')47 b(where)32 -b(l,)h(m,)f(n...)46 b(are)33 b(the)227 4935 y(dimensions)d(of)g(a)h(m)m +b(l,)h(m,)f(n...)46 b(are)33 b(the)227 4953 y(dimensions)d(of)g(a)h(m)m (ultidimensional)g(arra)m(y)g(column)f(in)g(a)h(binary)f(table.)382 -5200 y Fe(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41 b(>)48 -b(status\))0 5465 y Fh(8)81 b Fi(Return)29 b(the)h(n)m(um)m(b)s(er)e +5221 y Ff(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41 b(>)48 +b(status\))0 5488 y Fi(8)81 b Fj(Return)29 b(the)h(n)m(um)m(b)s(er)e (of)i(and)g(size)g(of)g(the)g(dimensions)g(of)g(a)g(table)h(column.)40 -b(Normally)31 b(this)f(information)227 5578 y(is)h(giv)m(en)h(b)m(y)f +b(Normally)31 b(this)f(information)227 5601 y(is)h(giv)m(en)h(b)m(y)f (the)g(TDIMn)f(k)m(eyw)m(ord,)i(but)e(if)h(this)g(k)m(eyw)m(ord)g(is)g (not)g(presen)m(t)g(then)g(this)f(routine)h(returns)227 -5691 y(NAXIS)f(=)g(1)h(and)f(NAXES\(1\))h(equal)g(to)g(the)g(rep)s(eat) +5714 y(NAXIS)f(=)g(1)h(and)f(NAXES\(1\))h(equal)g(to)g(the)g(rep)s(eat) g(coun)m(t)g(in)f(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)p eop end %%Page: 58 64 -TeXDict begin 58 63 bop 0 299 a Fi(58)1319 b Fg(CHAPTER)29 +TeXDict begin 58 63 bop 0 299 a Fj(58)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTGTDM\(unit,colnum,maxdi)o(m,)41 -b(>)48 b(naxis,naxes,status\))0 808 y Fh(9)81 b Fi(Deco)s(de)33 +b(SUBR)m(OUTINES)382 555 y Ff(FTGTDM\(unit,colnum,maxdi)o(m,)41 +b(>)48 b(naxis,naxes,status\))0 808 y Fi(9)81 b Fj(Deco)s(de)33 b(the)g(input)f(TDIMn)h(k)m(eyw)m(ord)g(string)f(\(e.g.)50 b('\(100,200\)'\))37 b(and)32 b(return)g(the)h(n)m(um)m(b)s(er)e(of)i (and)f(size)227 921 y(of)c(the)g(dimensions)f(of)h(a)g(binary)f(table)h @@ -6874,16 +8951,16 @@ (is)g(n)m(ull,)g(then)227 1034 y(this)d(routine)f(returns)f(naxis)h(=)h (1)f(and)g(naxes[0])i(equal)e(to)i(the)e(rep)s(eat)h(coun)m(t)g(in)f (the)g(TF)m(ORM)h(k)m(eyw)m(ord.)227 1147 y(This)30 b(routine)g(is)h -(called)g(b)m(y)f(FTGTDM.)382 1400 y Fe(FTDTDM\(unit,tdimstr,coln)o +(called)g(b)m(y)f(FTGTDM.)382 1400 y Ff(FTDTDM\(unit,tdimstr,coln)o (um,)o(maxd)o(im,)41 b(>)48 b(naxis,naxes,)c(status\))0 -1654 y Fh(10)i Fi(Return)32 b(the)h(optimal)h(n)m(um)m(b)s(er)e(of)h +1654 y Fi(10)i Fj(Return)32 b(the)h(optimal)h(n)m(um)m(b)s(er)e(of)h (ro)m(ws)g(to)h(read)f(or)g(write)g(at)h(one)f(time)h(for)e(maxim)m(um) h(I/O)g(e\016ciency)-8 b(.)227 1767 y(Refer)31 b(to)g(the)g (\\Optimizing)g(Co)s(de")f(section)i(in)e(Chapter)g(5)g(for)h(more)f (discussion)g(on)g(ho)m(w)h(to)g(use)f(this)227 1879 -y(routine.)382 2133 y Fe(FTGRSZ\(unit,)44 b(>)k(nrows,status\))0 -2422 y Fb(6.7.2)112 b(Lo)m(w-Lev)m(el)39 b(T)-9 b(able)38 -b(Access)f(Subroutines)0 2641 y Fi(The)d(follo)m(wing)h(subroutines)e +y(routine.)382 2133 y Ff(FTGRSZ\(unit,)44 b(>)k(nrows,status\))0 +2422 y Fc(6.7.2)112 b(Lo)m(w-Lev)m(el)39 b(T)-9 b(able)38 +b(Access)f(Subroutines)0 2641 y Fj(The)d(follo)m(wing)h(subroutines)e (pro)m(vide)i(lo)m(w-lev)m(el)i(access)e(to)g(the)g(data)g(in)f(ASCI)s (I)e(or)i(binary)g(tables)h(and)f(are)0 2754 y(mainly)29 b(useful)f(as)i(an)f(e\016cien)m(t)h(w)m(a)m(y)g(to)g(cop)m(y)g(all)g @@ -6906,24 +8983,24 @@ (FTGTBS)f(and)g(FTPTBS)g(routines)h(on)f(mac)m(hines)h(whic)m(h)g(do)f (not)h(use)f(ASCI)s(I)0 3657 y(c)m(haracter)j(co)s(des)e(in)g(the)h(in) m(ternal)g(data)g(represen)m(tations)h(\(e.g.,)g(on)e(IBM)h(mainframe)f -(computers\).)0 3911 y Fh(1)81 b Fi(Read)26 b(a)h(consecutiv)m(e)h +(computers\).)0 3911 y Fi(1)81 b Fj(Read)26 b(a)h(consecutiv)m(e)h (string)f(of)f(c)m(haracters)i(from)e(an)g(ASCI)s(I)f(table)i(in)m(to)h (a)e(c)m(haracter)i(v)-5 b(ariable)28 b(\(spanning)227 4024 y(columns)k(and)g(m)m(ultiple)h(ro)m(ws)f(if)g(necessary\))h(This) f(routine)g(should)f(not)i(b)s(e)e(used)h(with)g(binary)f(tables)227 4136 y(b)s(ecause)g(of)f(complications)i(related)g(to)f(passing)f (string)g(v)-5 b(ariables)31 b(b)s(et)m(w)m(een)g(C)f(and)g(F)-8 -b(ortran.)382 4390 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 -b(>)48 b(string,status\))0 4643 y Fh(2)81 b Fi(W)-8 b(rite)31 +b(ortran.)382 4390 y Ff(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 +b(>)48 b(string,status\))0 4643 y Fi(2)81 b Fj(W)-8 b(rite)31 b(a)g(consecutiv)m(e)h(string)e(of)h(c)m(haracters)g(to)g(an)f(ASCI)s (I)f(table)i(from)f(a)h(c)m(haracter)h(v)-5 b(ariable)31 b(\(spanning)227 4756 y(columns)h(and)g(m)m(ultiple)h(ro)m(ws)f(if)g (necessary\))h(This)f(routine)g(should)f(not)i(b)s(e)e(used)h(with)g (binary)f(tables)227 4869 y(b)s(ecause)g(of)f(complications)i(related)g (to)f(passing)f(string)g(v)-5 b(ariables)31 b(b)s(et)m(w)m(een)g(C)f -(and)g(F)-8 b(ortran.)382 5122 y Fe(FTPTBS\(unit,frow,startch)o(ar,)o +(and)g(F)-8 b(ortran.)382 5122 y Ff(FTPTBS\(unit,frow,startch)o(ar,)o (ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))0 5375 -y Fh(3)81 b Fi(Read)27 b(a)h(consecutiv)m(e)i(arra)m(y)e(of)g(b)m(ytes) +y Fi(3)81 b Fj(Read)27 b(a)h(consecutiv)m(e)i(arra)m(y)e(of)g(b)m(ytes) g(from)f(an)g(ASCI)s(I)f(or)i(binary)e(table)j(in)m(to)f(a)g(n)m (umeric)g(v)-5 b(ariable)28 b(\(span-)227 5488 y(ning)k(columns)f(and)h (m)m(ultiple)g(ro)m(ws)g(if)g(necessary\).)46 b(The)32 @@ -6933,11 +9010,11 @@ (hars)f(=)g(17,)227 5714 y(then)c(declare)i(the)e(arra)m(y)h(as)g (INTEGER*4)g(ARRA)-8 b(Y\(5\).)p eop end %%Page: 59 65 -TeXDict begin 59 64 bop 0 299 a Fg(6.7.)72 b(FITS)30 +TeXDict begin 59 64 bop 0 299 a Fh(6.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 -b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(59)382 555 -y Fe(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 -b(>)48 b(array,status\))0 813 y Fh(4)81 b Fi(W)-8 b(rite)32 +b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fj(59)382 555 +y Ff(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 +b(>)48 b(array,status\))0 813 y Fi(4)81 b Fj(W)-8 b(rite)32 b(a)f(consecutiv)m(e)i(arra)m(y)f(of)f(b)m(ytes)g(to)h(an)e(ASCI)s(I)g (or)h(binary)f(table)i(from)e(a)i(n)m(umeric)e(v)-5 b(ariable)32 b(\(span-)227 926 y(ning)j(columns)f(and)g(m)m(ultiple)h(ro)m(ws)g(if)f @@ -6946,9 +9023,9 @@ g(the)f(arra)m(y)h(is)f(at)h(least)h('nc)m(hars')f(b)m(ytes)f(long,)j (e.g.,)f(if)f(nc)m(hars)f(=)g(17,)227 1152 y(then)c(declare)i(the)e (arra)m(y)h(as)g(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 1410 -y Fe(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o(rra)o(y,)42 -b(>)47 b(status\))0 1700 y Fb(6.7.3)112 b(Edit)37 b(Ro)m(ws)g(or)h -(Columns)0 1909 y Fh(1)81 b Fi(Insert)26 b(blank)h(ro)m(ws)h(in)m(to)g +y Ff(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o(rra)o(y,)42 +b(>)47 b(status\))0 1700 y Fc(6.7.3)112 b(Edit)37 b(Ro)m(ws)g(or)h +(Columns)0 1909 y Fi(1)81 b Fj(Insert)26 b(blank)h(ro)m(ws)h(in)m(to)g (an)f(existing)h(ASCI)s(I)e(or)h(binary)g(table)h(\(in)g(the)f(CDU\).)h (All)g(the)g(ro)m(ws)f(F)m(OLLO)m(W-)227 2022 y(ING)35 b(ro)m(w)g(FR)m(O)m(W)g(are)g(shifted)f(do)m(wn)g(b)m(y)h(NR)m(O)m(WS)g @@ -6963,10 +9040,10 @@ (ine\016cien)m(t)j(to)f(do)227 2473 y(so\).)54 b(Instead,)35 b(one)g(ma)m(y)g(simply)f(write)h(data)g(to)g(an)m(y)g(ro)m(w)f(of)h (the)g(table,)h(whether)e(that)h(ro)m(w)g(of)f(data)227 -2586 y(already)d(exists)g(or)g(not.)382 2844 y Fe +2586 y(already)d(exists)g(or)g(not.)382 2844 y Ff (FTIROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 2957 y(FTIROWLL\(unit,frowll,nro)o(wsl)o(l,)42 b(>)47 b(status\))0 -3215 y Fh(2)81 b Fi(Delete)25 b(ro)m(ws)f(from)f(an)g(existing)i(ASCI)s +3215 y Fi(2)81 b Fj(Delete)25 b(ro)m(ws)f(from)f(an)g(existing)i(ASCI)s (I)c(or)j(binary)f(table)h(\(in)f(the)h(CDU\).)g(The)f(NR)m(O)m(WS)h (\(or)g(NR)m(O)m(WSLL\))227 3328 y(is)e(the)g(n)m(um)m(b)s(er)f(of)h (ro)m(ws)g(are)g(deleted,)i(starting)f(with)f(ro)m(w)g(FR)m(O)m(W)h @@ -6974,10 +9051,10 @@ 3441 y(ro)m(ws)f(in)g(the)f(table)i(are)f(shifted)g(up)e(to)j(\014ll)f (in)f(the)h(space.)38 b(These)21 b(routines)f(mo)s(dify)g(the)h(NAXIS2) g(k)m(eyw)m(ord)227 3553 y(to)31 b(re\015ect)g(the)g(new)f(n)m(um)m(b)s -(er)f(of)h(ro)m(ws)h(in)f(the)g(table.)382 3811 y Fe +(er)f(of)h(ro)m(ws)h(in)f(the)g(table.)382 3811 y Ff (FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 3924 y(FTDROWLL\(unit,frowll,nro)o(wsl)o(l,)42 b(>)47 b(status\))0 -4182 y Fh(3)81 b Fi(Delete)26 b(a)f(list)g(of)g(ro)m(ws)f(from)g(an)h +4182 y Fi(3)81 b Fj(Delete)26 b(a)f(list)g(of)g(ro)m(ws)f(from)g(an)h (ASCI)s(I)e(or)h(binary)g(table)h(\(in)g(the)f(CDU\).)i(In)e(the)g (\014rst)g(routine,)i('ro)m(wrange')227 4295 y(is)i(a)g(c)m(haracter)h (string)f(listing)h(the)f(ro)m(ws)f(or)h(ro)m(w)g(ranges)g(to)g(delete) @@ -6989,9 +9066,9 @@ b(\014rst)f(ro)m(w)i(in)f(the)g(table)i(is)e(1)h(not)f(0.)44 b(The)31 b(list)h(of)g(ro)m(w)227 4634 y(n)m(um)m(b)s(ers)d(m)m(ust)h (b)s(e)g(sorted)h(in)f(ascending)g(order.)382 4891 y -Fe(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 5004 +Ff(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 5004 y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))0 -5262 y Fh(4)81 b Fi(Insert)43 b(a)i(blank)f(column)h(\(or)f(columns\))h +5262 y Fi(4)81 b Fj(Insert)43 b(a)i(blank)f(column)h(\(or)f(columns\))h (in)m(to)g(an)f(existing)i(ASCI)s(I)d(or)h(binary)g(table)h(\(in)g(the) f(CDU\).)227 5375 y(COLNUM)c(sp)s(eci\014es)g(the)h(column)f(n)m(um)m (b)s(er)f(that)i(the)f(\(\014rst\))g(new)g(column)g(should)f(o)s(ccup)m @@ -7004,22 +9081,22 @@ (ords)g(will)f(b)s(e)f(incremen)m(ted)i(if)f(necessary)g(to)h (re\015ect)f(the)g(new)p eop end %%Page: 60 66 -TeXDict begin 60 65 bop 0 299 a Fi(60)1319 b Fg(CHAPTER)29 +TeXDict begin 60 65 bop 0 299 a Fj(60)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)227 555 y Fi(p)s(osition)i(of)f(the)g(column\(s\))h +b(SUBR)m(OUTINES)227 555 y Fj(p)s(osition)i(of)f(the)g(column\(s\))h (in)f(the)g(table:)43 b(TBCOLn,)30 b(TF)m(ORMn,)i(TTYPEn,)e(TUNITn,)h (TNULLn,)227 668 y(TSCALn,)22 b(TZER)m(On,)g(TDISPn,)g(TDIMn,)h (TLMINn,)g(TLMAXn,)f(TDMINn,)i(TDMAXn,)f(TCTYPn,)227 781 y(TCRPXn,)30 b(TCR)-10 b(VLn,)29 b(TCDL)-8 b(Tn,)30 -b(TCR)m(OTn,)f(and)g(TCUNIn.)382 1035 y Fe(FTICOL\(unit,colnum,ttype)o +b(TCR)m(OTn,)f(and)g(TCUNIn.)382 1035 y Ff(FTICOL\(unit,colnum,ttype)o (,tf)o(orm,)41 b(>)48 b(status\))382 1148 y(FTICLS\(unit,colnum,ncols)o (,tt)o(ype,)o(tfor)o(m,)41 b(>)48 b(status\))0 1403 y -Fh(5)81 b Fi(Mo)s(dify)37 b(the)g(v)m(ector)i(length)f(of)f(a)h(binary) +Fi(5)81 b Fj(Mo)s(dify)37 b(the)g(v)m(ector)i(length)f(of)f(a)h(binary) e(table)i(column)f(\(e.g.,)k(c)m(hange)e(a)e(column)g(from)g(TF)m(ORMn) g(=)227 1515 y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)e(ma) m(y)h(b)s(e)f(increased)h(or)f(decreased)h(from)f(the)g(curren)m(t)h(v) --5 b(alue.)382 1770 y Fe(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42 -b(>)47 b(status\))0 2024 y Fh(6)81 b Fi(Delete)29 b(a)f(column)g(from)f +-5 b(alue.)382 1770 y Ff(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42 +b(>)47 b(status\))0 2024 y Fi(6)81 b Fj(Delete)29 b(a)f(column)g(from)f (an)g(existing)i(ASCI)s(I)d(or)i(binary)e(table)j(\(in)f(the)f(CDU\).)i (The)e(index)g(n)m(um)m(b)s(er)f(of)i(all)227 2137 y(the)k(k)m(eyw)m (ords)h(listed)f(ab)s(o)m(v)m(e)i(\(for)e(FTICOL\))f(will)h(b)s(e)g @@ -7031,8 +9108,8 @@ i(will)f(not)h(b)s(e)e(reduced)h(b)m(y)g(this)227 2476 y(op)s(eration,)e(and)e(the)h(empt)m(y)g(FITS)f(blo)s(c)m(ks)h(if)g(an) m(y)g(at)g(the)g(end)f(of)h(the)g(\014le)g(will)g(b)s(e)f(padded)g -(with)g(zeros.)382 2730 y Fe(FTDCOL\(unit,colnum,)42 -b(>)48 b(status\))0 2984 y Fh(7)81 b Fi(Cop)m(y)30 b(a)g(column)g(from) +(with)g(zeros.)382 2730 y Ff(FTDCOL\(unit,colnum,)42 +b(>)48 b(status\))0 2984 y Fi(7)81 b Fj(Cop)m(y)30 b(a)g(column)g(from) g(one)g(HDU)h(to)g(another)f(\(or)h(to)g(the)f(same)h(HDU\).)g(If)f (createcol)j(=)c(TR)m(UE,)i(then)f(a)227 3097 y(new)20 b(column)g(will)h(b)s(e)f(inserted)g(in)g(the)h(output)f(table,)k(at)d @@ -7041,10 +9118,10 @@ (whic)m(h)f(case)i(it)f(m)m(ust)f(ha)m(v)m(e)i(a)f(compatible)h(datat)m (yp)s(e\).)42 b(Note)227 3323 y(that)31 b(the)g(\014rst)e(column)i(in)f (a)g(table)i(is)e(at)h(coln)m(um)g(=)f(1.)382 3577 y -Fe(FTCPCL\(inunit,outunit,in)o(col)o(num,)o(outc)o(oln)o(um,c)o(reat)o -(eco)o(l,)42 b(>)47 b(status\);)0 3867 y Fb(6.7.4)112 +Ff(FTCPCL\(inunit,outunit,in)o(col)o(num,)o(outc)o(oln)o(um,c)o(reat)o +(eco)o(l,)42 b(>)47 b(status\);)0 3867 y Fc(6.7.4)112 b(Read)38 b(and)h(W)-9 b(rite)36 b(Column)j(Data)e(Routines)0 -4086 y Fi(These)22 b(subroutines)f(put)h(or)g(get)i(data)f(v)-5 +4086 y Fj(These)22 b(subroutines)f(put)h(or)g(get)i(data)f(v)-5 b(alues)22 b(in)g(the)h(curren)m(t)f(ASCI)s(I)f(or)h(Binary)g(table)i (extension.)38 b(Automatic)0 4199 y(data)21 b(t)m(yp)s(e)g(con)m(v)m (ersion)g(is)f(p)s(erformed)f(for)h(n)m(umerical)h(data)g(t)m(yp)s(es)g @@ -7083,9 +9160,9 @@ (arra)m(y)h(of)f(data)h(elemen)m(ts)h(in)e(whic)m(h)p eop end %%Page: 61 67 -TeXDict begin 61 66 bop 0 299 a Fg(6.7.)72 b(FITS)30 +TeXDict begin 61 66 bop 0 299 a Fh(6.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 -b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(61)0 555 y(unde\014ned)41 +b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fj(61)0 555 y(unde\014ned)41 b(pixels)j(are)g(set)g(equal)g(to)h(a)f(v)-5 b(alue)44 b(sp)s(eci\014ed)f(b)m(y)g(the)h(user)f(in)g(the)h('n)m(ullv)-5 b(al')44 b(parameter.)81 b(An)0 668 y(additional)44 b(feature)g(of)g @@ -7111,19 +9188,19 @@ b(length)g(of)h(the)f(returned)f(strings)h(can)g(b)s(e)g(determined)g (with)f(the)i(ftgcdw)0 1732 y(routine.)41 b(The)30 b(follo)m(wing)h (TDISPn)f(displa)m(y)g(formats)h(are)f(curren)m(tly)h(supp)s(orted:)191 -1952 y Fe(Iw.m)142 b(Integer)191 2065 y(Ow.m)g(Octal)46 +1952 y Ff(Iw.m)142 b(Integer)191 2065 y(Ow.m)g(Octal)46 b(integer)191 2178 y(Zw.m)142 b(Hexadecimal)45 b(integer)191 2291 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 2404 y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 2517 y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 2630 y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)d(not)j -(lost,)g(else)f(Ew.d)0 2850 y Fi(where)37 b(w)h(is)g(the)g(width)f(in)h +(lost,)g(else)f(Ew.d)0 2850 y Fj(where)37 b(w)h(is)g(the)g(width)f(in)h (c)m(haracters)h(of)f(the)h(displa)m(y)m(ed)f(v)-5 b(alues,)41 b(m)c(is)h(the)g(minim)m(um)g(n)m(um)m(b)s(er)e(of)i(digits)0 2963 y(displa)m(y)m(ed,)31 b(and)f(d)g(is)g(the)h(n)m(um)m(b)s(er)e(of) h(digits)h(to)g(the)g(righ)m(t)g(of)g(the)f(decimal.)42 -b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 3184 y Fh(1)81 -b Fi(Put)30 b(elemen)m(ts)i(in)m(to)g(an)e(ASCI)s(I)f(or)i(binary)f +b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 3184 y Fi(1)81 +b Fj(Put)30 b(elemen)m(ts)i(in)m(to)g(an)e(ASCI)s(I)f(or)i(binary)f (table)i(column)e(\(in)h(the)g(CDU\).)g(\(The)g(SPP)f(FSPCLS)f(routine) 227 3297 y(has)38 b(an)f(additional)i(in)m(teger)g(argumen)m(t)f(after) h(the)f(V)-10 b(ALUES)37 b(c)m(haracter)i(string)f(whic)m(h)f(sp)s @@ -7135,11 +9212,11 @@ (ws.)57 b(When)35 b(calling)i(these)f(routines,)h(the)f(fro)m(w)g(and) 227 3779 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s(e)f(64-bit)h(in)m (teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g(normal)f(4-b)m(yte)i -(in)m(tegers.)382 4000 y Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o +(in)m(tegers.)382 4000 y Ff(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o (row,)o(fel)o(em,n)o(elem)o(ent)o(s,va)o(lues)o(,)42 b(>)47 b(status\))382 4113 y(FTPCL[LBIJKEDCM]LL\(unit,)o(col)o(num,)o (frow)o(,fe)o(lem,)o(nele)o(men)o(ts,v)o(alue)o(s,)41 -b(>)48 b(status\))0 4333 y Fh(2)81 b Fi(Put)29 b(elemen)m(ts)i(in)m(to) +b(>)48 b(status\))0 4333 y Fi(2)81 b Fj(Put)29 b(elemen)m(ts)i(in)m(to) g(an)f(ASCI)s(I)e(or)i(binary)f(table)i(column)e(\(in)h(the)g(CDU\))g (substituting)g(the)g(appropriate)227 4446 y(FITS)c(n)m(ull)g(v)-5 b(alue)26 b(for)g(an)m(y)h(elemen)m(ts)g(that)g(are)f(equal)h(to)g @@ -7159,15 +9236,15 @@ b(When)35 b(calling)i(these)f(routines,)h(the)f(fro)m(w)g(and)227 5267 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s(e)f(64-bit)h(in)m (teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g(normal)f(4-b)m(yte)i -(in)m(tegers.)382 5488 y Fe(FTPCN[SBIJKED]\(unit,coln)o(um,)o(frow)o +(in)m(tegers.)382 5488 y Ff(FTPCN[SBIJKED]\(unit,coln)o(um,)o(frow)o (,fel)o(em,)o(nele)o(ment)o(s,v)o(alue)o(s,nu)o(llv)o(al)42 b(>)47 b(status\))382 5601 y(FTPCN[SBIJKED]LL\(unit,co)o(lnu)o(m,\(I)o (*8\))41 b(frow,\(I*8\))k(felem,nelements,values,)764 5714 y(nullval)g(>)j(status\))p eop end %%Page: 62 68 -TeXDict begin 62 67 bop 0 299 a Fi(62)1319 b Fg(CHAPTER)29 +TeXDict begin 62 67 bop 0 299 a Fj(62)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fh(3)81 b Fi(Put)37 b(bit)h(v)-5 +b(SUBR)m(OUTINES)0 555 y Fi(3)81 b Fj(Put)37 b(bit)h(v)-5 b(alues)38 b(in)m(to)h(a)f(binary)f(b)m(yte)h(\('B'\))i(or)d(bit)h (\('X'\))h(table)g(column)f(\(in)f(the)h(CDU\).)h(LRA)-8 b(Y)38 b(is)g(an)227 668 y(arra)m(y)c(of)g(logical)h(v)-5 @@ -7186,11 +9263,11 @@ (then)g(the)h(next)f(4)h(bits)f(in)m(to)i(the)e(next)h(ro)m(w\),)g(ev)m (en)g(though)f(the)h(last)g(4)g(bits)f(of)h(eac)m(h)227 1346 y(b)m(yte)g(are)g(formally)g(not)g(de\014ned.)382 -1604 y Fe(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 -b(>)47 b(status\))0 1863 y Fh(4)81 b Fi(Set)30 b(table)h(elemen)m(ts)h -(in)e(a)h(column)f(as)h(unde\014ned)382 2121 y Fe +1604 y Ff(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 +b(>)47 b(status\))0 1863 y Fi(4)81 b Fj(Set)30 b(table)h(elemen)m(ts)h +(in)e(a)h(column)f(as)h(unde\014ned)382 2121 y Ff (FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o(elem)o(ent)o(s,)42 -b(>)47 b(status\))0 2380 y Fh(5)81 b Fi(Get)34 b(elemen)m(ts)g(from)f +b(>)47 b(status\))0 2380 y Fi(5)81 b Fj(Get)34 b(elemen)m(ts)g(from)f (an)g(ASCI)s(I)f(or)h(binary)g(table)h(column)f(\(in)g(the)g(CDU\).)i (These)e(routines)g(return)f(the)227 2493 y(v)-5 b(alues)30 b(of)g(the)g(table)h(column)f(arra)m(y)g(elemen)m(ts.)42 @@ -7216,14 +9293,14 @@ (then)h(2*31)h(ro)m(ws.)57 b(When)35 b(calling)i(these)f(routines,)h (the)f(fro)m(w)g(and)227 3546 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s (e)f(64-bit)h(in)m(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g -(normal)f(4-b)m(yte)i(in)m(tegers.)382 3805 y Fe +(normal)f(4-b)m(yte)i(in)m(tegers.)382 3805 y Ff (FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 b(>)47 b(values,status\))382 3918 y(FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o (m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,nul)o(lval)o(,)42 b(>)1098 4030 y(values,anyf,status\))382 4143 y (FTGCV[BIJKEDCM]LL\(unit,c)o(oln)o(um,\()o(I*8\))f(frow,)46 b(\(I*8\))h(felem,)f(nelements,)716 4256 y(nullval,)f(>)j -(values,anyf,status\))0 4515 y Fh(6)81 b Fi(Get)44 b(elemen)m(ts)h(and) +(values,anyf,status\))0 4515 y Fi(6)81 b Fj(Get)44 b(elemen)m(ts)h(and) d(n)m(ull)i(\015ags)f(from)g(an)h(ASCI)s(I)d(or)j(binary)e(table)j (column)e(\(in)g(the)h(CHDU\).)g(These)227 4628 y(routines)29 b(return)e(the)i(v)-5 b(alues)29 b(of)g(the)g(table)h(column)e(arra)m @@ -7242,17 +9319,17 @@ (then)h(2*31)h(ro)m(ws.)57 b(When)35 b(calling)i(these)f(routines,)h (the)f(fro)m(w)g(and)227 5455 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s (e)f(64-bit)h(in)m(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g -(normal)f(4-b)m(yte)i(in)m(tegers.)382 5714 y Fe +(normal)f(4-b)m(yte)i(in)m(tegers.)382 5714 y Ff (FTGCF[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o (ent)o(s,)42 b(>)p eop end %%Page: 63 69 -TeXDict begin 63 68 bop 0 299 a Fg(6.7.)72 b(FITS)30 +TeXDict begin 63 68 bop 0 299 a Fh(6.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 -b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(63)1193 555 -y Fe(values,flagvals,anyf,stat)o(us\))382 668 y +b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fj(63)1193 555 +y Ff(values,flagvals,anyf,stat)o(us\))382 668 y (FTGCF[BIJKED]LL\(unit,col)o(num)o(,)42 b(\(I*8\))k(frow,)h(\(I*8\))f (felem,nelements,)d(>)1193 781 y(values,flagvals,anyf,stat)o(us\))0 -1034 y Fh(7)81 b Fi(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from) +1034 y Fi(7)81 b Fj(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from) g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h (column.)227 1147 y(Unde\014ned)k(pixels)h(in)g(the)h(arra)m(y)g(will)f (b)s(e)g(set)h(equal)f(to)h(the)g(v)-5 b(alue)36 b(of)f('n)m(ullv)-5 @@ -7266,10 +9343,10 @@ b(.)40 b(The)25 b(INCS)f(parameter)i(sp)s(eci\014es)227 1599 y(the)31 b(sampling)f(in)m(terv)-5 b(al)32 b(in)e(eac)m(h)h (dimension)f(b)s(et)m(w)m(een)h(the)g(data)g(elemen)m(ts)g(that)g(will) -g(b)s(e)f(returned.)382 1852 y Fe(FTGSV[BIJKED]\(unit,colnu)o(m,n)o +g(b)s(e)f(returned.)382 1852 y Ff(FTGSV[BIJKED]\(unit,colnu)o(m,n)o (axis)o(,nax)o(es,)o(fpix)o(els,)o(lpi)o(xels)o(,inc)o(s,n)o(ullv)o (al,)41 b(>)1002 1965 y(array,anyf,status\))0 2218 y -Fh(8)81 b Fi(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from)g(an)g +Fi(8)81 b Fj(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from)g(an)g (N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h (column.)227 2331 y(An)m(y)39 b(Unde\014ned)e(pixels)i(in)g(the)g(arra) m(y)g(will)g(ha)m(v)m(e)h(the)f(corresp)s(onding)f('\015agv)-5 @@ -7282,9 +9359,9 @@ (sp)s(eci\014es)f(the)g(sampling)h(in)m(terv)-5 b(al)40 b(in)e(eac)m(h)i(dimension)227 2782 y(b)s(et)m(w)m(een)31 b(the)g(data)g(elemen)m(ts)h(that)f(will)f(b)s(e)g(returned.)382 -3035 y Fe(FTGSF[BIJKED]\(unit,colnu)o(m,n)o(axis)o(,nax)o(es,)o(fpix)o +3035 y Ff(FTGSF[BIJKED]\(unit,colnu)o(m,n)o(axis)o(,nax)o(es,)o(fpix)o (els,)o(lpi)o(xels)o(,inc)o(s,)41 b(>)1002 3148 y -(array,flagvals,anyf,statu)o(s\))0 3401 y Fh(9)81 b Fi(Get)33 +(array,flagvals,anyf,statu)o(s\))0 3401 y Fi(9)81 b Fj(Get)33 b(bit)g(v)-5 b(alues)34 b(from)e(a)h(b)m(yte)h(\('B'\))g(or)f(bit)g (\(`X`\))h(table)g(column)f(\(in)g(the)g(CDU\).)g(LRA)-8 b(Y)34 b(is)f(an)f(arra)m(y)i(of)227 3514 y(logical)41 @@ -7302,9 +9379,9 @@ f(from)f(the)i(\014rst)227 4079 y(ro)m(w)g(and)e(then)h(the)h(\014rst)e (4)i(bits)f(from)g(the)g(next)g(ro)m(w\),)i(ev)m(en)f(though)f(the)g (last)h(4)g(bits)f(of)g(eac)m(h)i(b)m(yte)f(are)227 4192 -y(formally)h(not)g(de\014ned.)382 4445 y Fe(FTGCX\(unit,colnum,frow,f)o -(bit)o(,nbi)o(t,)42 b(>)47 b(lray,status\))0 4698 y Fh(10)f -Fi(Read)31 b(an)m(y)g(consecutiv)m(e)h(set)f(of)g(bits)g(from)f(an)g +y(formally)h(not)g(de\014ned.)382 4445 y Ff(FTGCX\(unit,colnum,frow,f)o +(bit)o(,nbi)o(t,)42 b(>)47 b(lray,status\))0 4698 y Fi(10)f +Fj(Read)31 b(an)m(y)g(consecutiv)m(e)h(set)f(of)g(bits)g(from)f(an)g ('X')i(or)e('B')i(column)e(and)g(in)m(terpret)h(them)g(as)g(an)f (unsigned)227 4811 y(n-bit)k(in)m(teger.)54 b(NBIT)35 b(m)m(ust)f(b)s(e)f(less)i(than)f(or)g(equal)h(to)g(16)g(when)f @@ -7328,11 +9405,11 @@ (t)g(Bit)g(of)g(the)f(in)m(teger)i(v)-5 b(alue.)p eop end %%Page: 64 70 -TeXDict begin 64 69 bop 0 299 a Fi(64)1319 b Fg(CHAPTER)29 +TeXDict begin 64 69 bop 0 299 a Fj(64)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o +b(SUBR)m(OUTINES)382 555 y Ff(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o (ws,f)o(bit)o(,nbi)o(t,)42 b(>)47 b(array,status\))0 -788 y Fh(11)f Fi(Get)37 b(the)e(descriptor)h(for)f(a)h(v)-5 +788 y Fi(11)f Fj(Get)37 b(the)e(descriptor)h(for)f(a)h(v)-5 b(ariable)37 b(length)f(column)f(in)g(a)h(binary)f(table.)57 b(The)35 b(descriptor)h(consists)g(of)227 901 y(2)c(in)m(teger)g (parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of)h(elemen)m(ts)i(in)d @@ -7341,24 +9418,24 @@ b(\014rst)f(routine)h(returns)f(a)h(single)h(descriptor)f(whereas)g (the)g(second)g(routine)227 1127 y(returns)i(the)i(descriptors)f(for)g (a)h(range)g(of)f(ro)m(ws)h(in)f(the)g(table.)382 1359 -y Fe(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b +y Ff(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b (nelements,offset,status\))382 1472 y(FTGDESLL\(unit,colnum,row)o(num)o (,)42 b(>)47 b(nelementsll,offsetll,statu)o(s\))382 1698 y(FTGDESS\(unit,colnum,firs)o(tro)o(w,nr)o(ows)41 b(>)48 b(nelements,offset,)43 b(status\))382 1811 y(FTGDESSLL\(unit,colnum,fi) o(rst)o(row,)o(nrow)o(s)f(>)47 b(nelementsll,offsetll,)42 -b(status\))0 2044 y Fh(12)k Fi(W)-8 b(rite)33 b(the)f(descriptor)g(for) +b(status\))0 2044 y Fi(12)k Fj(W)-8 b(rite)33 b(the)f(descriptor)g(for) f(a)i(v)-5 b(ariable)32 b(length)g(column)g(in)f(a)i(binary)e(table.)45 b(These)32 b(subroutines)e(can)j(b)s(e)227 2157 y(used)f(in)h (conjunction)g(with)g(FTGDES)g(to)g(enable)h(2)f(or)g(more)g(arra)m(ys) h(to)f(p)s(oin)m(t)g(to)h(the)f(same)g(storage)227 2270 y(lo)s(cation)f(to)f(sa)m(v)m(e)h(storage)g(space)f(if)f(the)h(arra)m -(ys)g(are)g(iden)m(tical.)382 2503 y Fe(FTPDES\(unit,colnum,rownu)o +(ys)g(are)g(iden)m(tical.)382 2503 y Ff(FTPDES\(unit,colnum,rownu)o (m,n)o(elem)o(ents)o(,of)o(fset)o(,)42 b(>)47 b(status\))382 2615 y(FTPDESLL\(unit,colnum,row)o(num)o(,nel)o(emen)o(tsl)o(l,of)o -(fset)o(ll,)41 b(>)48 b(status\))0 2945 y Fd(6.8)135 +(fset)o(ll,)41 b(>)48 b(status\))0 2945 y Fe(6.8)135 b(Ro)l(w)46 b(Selection)g(and)f(Calculator)h(Routines)0 -3195 y Fi(These)21 b(routines)f(all)i(parse)f(and)f(ev)-5 +3195 y Fj(These)21 b(routines)f(all)i(parse)f(and)f(ev)-5 b(aluate)23 b(an)d(input)g(string)h(con)m(taining)i(a)e(user)f (de\014ned)g(arithmetic)i(expression.)0 3308 y(The)29 b(\014rst)f(3)i(routines)f(select)i(ro)m(ws)e(in)g(a)h(FITS)e(table,)j @@ -7379,16 +9456,16 @@ (er)h(m)m(ultiple)f(lines)g(of)g(the)f(\014le.)57 b(Lines)36 b(that)g(b)s(egin)f(with)g(2)h(slash)g(c)m(haracters)h(\('//'\))h(will) e(b)s(e)0 4098 y(ignored)30 b(and)g(ma)m(y)h(b)s(e)f(used)g(to)h(add)e -(commen)m(ts)j(to)f(the)f(\014le.)0 4331 y Fh(1)81 b -Fi(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression)g(o)m(v)m(er)h +(commen)m(ts)j(to)f(the)f(\014le.)0 4331 y Fi(1)81 b +Fj(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression)g(o)m(v)m(er)h (the)g(indicated)f(ro)m(ws,)i(returning)d(an)h(arra)m(y)h(of)f(\015ags) g(indicating)227 4444 y(whic)m(h)30 b(ro)m(ws)h(ev)-5 -b(aluated)31 b(to)g(TR)m(UE/F)-10 b(ALSE)430 4677 y Fe +b(aluated)31 b(to)g(TR)m(UE/F)-10 b(ALSE)430 4677 y Ff (FTFROW\(unit,expr,firstr)o(ow,)41 b(nrows,)46 b(>)i(n_good_rows,)c -(row_status,)h(status\))0 4910 y Fh(2)81 b Fi(Find)29 +(row_status,)h(status\))0 4910 y Fi(2)81 b Fj(Find)29 b(the)i(\014rst)f(ro)m(w)g(whic)m(h)g(satis\014es)h(the)g(input)e(b)s -(o)s(olean)h(expression)430 5142 y Fe(FTFFRW\(unit,)44 -b(expr,)i(>)i(rownum,)e(status\))0 5375 y Fh(3)81 b Fi(Ev)-5 +(o)s(olean)h(expression)430 5142 y Ff(FTFFRW\(unit,)44 +b(expr,)i(>)i(rownum,)e(status\))0 5375 y Fi(3)81 b Fj(Ev)-5 b(aluate)35 b(an)f(expression)h(on)f(all)h(ro)m(ws)g(of)f(a)h(table.)54 b(If)34 b(the)g(input)g(and)g(output)g(\014les)g(are)h(not)g(the)f (same,)227 5488 y(cop)m(y)i(the)g(TR)m(UE)f(ro)m(ws)g(to)h(the)f @@ -7399,10 +9476,10 @@ 5714 y(F)-10 b(ALSE)30 b(ro)m(ws)h(\(preserv)m(e)f(the)h(TR)m(UE)f(ro)m (ws\).)p eop end %%Page: 65 71 -TeXDict begin 65 70 bop 0 299 a Fg(6.9.)72 b(CELESTIAL)29 +TeXDict begin 65 70 bop 0 299 a Fh(6.9.)72 b(CELESTIAL)29 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(SUBR)m(OUTINES)1307 -b Fi(65)430 555 y Fe(FTSROW\(inunit,)43 b(outunit,)j(expr,)g(>)i -(status\))0 816 y Fh(4)81 b Fi(Calculate)28 b(an)f(expression)f(for)h +b Fj(65)430 555 y Ff(FTSROW\(inunit,)43 b(outunit,)j(expr,)g(>)i +(status\))0 816 y Fi(4)81 b Fj(Calculate)28 b(an)f(expression)f(for)h (the)f(indicated)i(ro)m(ws)e(of)h(a)g(table,)i(returning)d(the)h (results,)g(cast)h(as)f(datat)m(yp)s(e)227 929 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)e(arra)m(y)-8 b(.)48 @@ -7412,9 +9489,9 @@ (than)g(nelemen)m(ts)g(if)g(nelemen)m(ts)h(is)227 1155 y(not)30 b(an)g(ev)m(en)h(m)m(ultiple)f(of)g(the)g(result)g(dimension.) 40 b(Call)30 b(FTTEXP)g(to)g(obtain)h(the)f(dimensions)f(of)h(the)227 -1268 y(results.)430 1529 y Fe(FTCROW\(unit,datatype,ex)o(pr,)o(firs)o +1268 y(results.)430 1529 y Ff(FTCROW\(unit,datatype,ex)o(pr,)o(firs)o (trow)o(,ne)o(leme)o(nts,)o(nul)o(val,)41 b(>)620 1642 -y(array,anynul,status\))0 1903 y Fh(5)81 b Fi(Ev)-5 b(aluate)33 +y(array,anynul,status\))0 1903 y Fi(5)81 b Fj(Ev)-5 b(aluate)33 b(an)g(expression)f(and)h(write)f(the)h(result)g(either)g(to)h(a)f (column)f(\(if)h(the)g(expression)f(is)h(a)g(function)227 2016 y(of)d(other)g(columns)g(in)f(the)h(table\))h(or)f(to)g(a)h(k)m @@ -7438,18 +9515,18 @@ g(already)h(exist,)g(then)227 2919 y(the)f(name)f(of)h(the)g(k)m(eyw)m (ord)g(m)m(ust)f(b)s(e)g(preceded)g(with)g(a)h('#')f(c)m(haracter,)j (otherwise)e(the)f(result)h(will)g(b)s(e)227 3032 y(written)h(to)g(a)g -(column)f(with)g(that)h(name.)430 3293 y Fe(FTCALC\(inunit,)43 +(column)f(with)g(that)h(name.)430 3293 y Ff(FTCALC\(inunit,)43 b(expr,)k(outunit,)e(parName,)h(parInfo,)f(>)j(status\))0 -3554 y Fh(6)81 b Fi(This)38 b(calculator)k(routine)e(is)f(similar)h(to) +3554 y Fi(6)81 b Fj(This)38 b(calculator)k(routine)e(is)f(similar)h(to) g(the)g(previous)f(routine,)j(except)f(that)f(the)g(expression)f(is)h (only)227 3667 y(ev)-5 b(aluated)42 b(o)m(v)m(er)f(the)f(sp)s (eci\014ed)g(ro)m(w)g(ranges.)70 b(nranges)39 b(sp)s(eci\014es)h(the)g (n)m(um)m(b)s(er)f(of)h(ro)m(w)h(ranges,)i(and)227 3780 y(\014rstro)m(w)30 b(and)g(lastro)m(w)h(giv)m(e)h(the)f(starting)g(and) f(ending)g(ro)m(w)g(n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)430 -4041 y Fe(FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h +4041 y Ff(FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h (parInfo,)573 4154 y(nranges,)f(firstrow,)h(lastrow,)f(>)j(status\))0 -4415 y Fh(7)81 b Fi(Ev)-5 b(aluate)36 b(the)f(giv)m(en)h(expression)f +4415 y Fi(7)81 b Fj(Ev)-5 b(aluate)36 b(the)f(giv)m(en)h(expression)f (and)g(return)f(dimension)g(and)h(t)m(yp)s(e)g(information)g(on)g(the)h (result.)54 b(The)227 4528 y(returned)37 b(dimensions)f(corresp)s(ond)g (to)j(a)e(single)i(ro)m(w)e(en)m(try)h(of)f(the)h(requested)f @@ -7459,18 +9536,18 @@ (are)h(considered)f(to)h(b)s(e)f(one)g(elemen)m(t)227 4754 y(regardless)31 b(of)g(string)f(length.)41 b(If)30 b(maxdim)g(==)g(0,)h(then)f(naxes)g(is)h(optional.)430 -5015 y Fe(FTTEXP\(unit,)44 b(expr,)i(maxdim)g(>)i(datatype,)d(nelem,)h -(naxis,)g(naxes,)g(status\))0 5350 y Fd(6.9)135 b(Celestial)48 -b(Co)t(ordinate)e(System)f(Subroutines)0 5601 y Fi(The)36 +5015 y Ff(FTTEXP\(unit,)44 b(expr,)i(maxdim)g(>)i(datatype,)d(nelem,)h +(naxis,)g(naxes,)g(status\))0 5350 y Fe(6.9)135 b(Celestial)48 +b(Co)t(ordinate)e(System)f(Subroutines)0 5601 y Fj(The)36 b(FITS)g(comm)m(unit)m(y)h(has)f(adopted)h(a)g(set)g(of)g(k)m(eyw)m (ord)g(con)m(v)m(en)m(tions)h(that)f(de\014ne)f(the)h(transformations)0 5714 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m(een)f(pixel)g(lo)s (cations)h(in)e(an)h(image)h(and)e(the)g(corresp)s(onding)g(celestial)j (co)s(ordinates)p eop end %%Page: 66 72 -TeXDict begin 66 71 bop 0 299 a Fi(66)1319 b Fg(CHAPTER)29 +TeXDict begin 66 71 bop 0 299 a Fj(66)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fi(on)25 b(the)h(sky)-8 b(,)27 +b(SUBR)m(OUTINES)0 555 y Fj(on)25 b(the)h(sky)-8 b(,)27 b(or)e(more)g(generally)-8 b(,)29 b(that)d(de\014ne)e(w)m(orld)h(co)s (ordinates)i(that)e(are)h(to)g(b)s(e)f(asso)s(ciated)i(with)e(an)m(y)h (pixel)0 668 y(lo)s(cation)36 b(in)e(an)h(n-dimensional)f(FITS)g(arra)m @@ -7482,104 +9559,104 @@ b(Y)38 b(RECOMMENDED)h(that)f(soft)m(w)m(are)i(dev)m(elop)s(ers)e(use)g (a)h(more)0 1007 y(robust)30 b(external)h(W)m(CS)f(library)-8 b(.)41 b(Sev)m(eral)31 b(recommended)f(libraries)h(are:)95 -1285 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95 -1398 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95 -1511 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e -(project)0 1788 y Fi(More)30 b(information)f(ab)s(out)g(the)g(W)m(CS)g +1289 y Ff(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95 +1402 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95 +1515 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e +(project)0 1797 y Fj(More)30 b(information)f(ab)s(out)g(the)g(W)m(CS)g (k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)h(and)d(links)h(to)h(all)g(of)f -(these)g(W)m(CS)g(libraries)h(can)0 1901 y(b)s(e)g(found)f(on)h(the)h +(these)g(W)m(CS)g(libraries)h(can)0 1910 y(b)s(e)g(found)f(on)h(the)h (FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)i(at)f(h)m (ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0 -2061 y(The)i(functions)h(pro)m(vided)g(in)f(these)i(external)f(W)m(CS)g +2070 y(The)i(functions)h(pro)m(vided)g(in)f(these)i(external)f(W)m(CS)g (libraries)h(will)f(need)g(access)h(to)g(the)f(W)m(CS)g(information)0 -2174 y(con)m(tained)i(in)f(the)h(FITS)e(\014le)i(headers.)55 +2183 y(con)m(tained)i(in)f(the)h(FITS)e(\014le)i(headers.)55 b(One)35 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(pass)f(this)g -(information)h(to)g(the)f(external)0 2287 y(library)k(is)h(to)h(use)e +(information)h(to)g(the)f(external)0 2296 y(library)k(is)h(to)h(use)e (FITSIO)g(to)h(cop)m(y)h(the)f(header)f(k)m(eyw)m(ords)h(in)m(to)h(one) -f(long)g(c)m(haracter)i(string,)g(and)d(then)0 2400 y(pass)29 +f(long)g(c)m(haracter)i(string,)g(and)d(then)0 2409 y(pass)29 b(this)h(string)g(to)g(an)g(in)m(terface)h(routine)f(in)g(the)g (external)g(library)g(that)g(will)g(extract)i(the)e(necessary)g(W)m(CS) -0 2513 y(information)h(\(e.g.,)h(see)f(the)f(astFitsChan)h(and)f +0 2522 y(information)h(\(e.g.,)h(see)f(the)f(astFitsChan)h(and)f (astPutCards)g(routines)g(in)g(the)h(Starlink)f(AST)g(library\).)0 -2673 y(The)24 b(follo)m(wing)j(FITSIO)c(routines)i(DO)g(NOT)f(supp)s +2682 y(The)24 b(follo)m(wing)j(FITSIO)c(routines)i(DO)g(NOT)f(supp)s (ort)f(the)i(more)g(recen)m(t)h(W)m(CS)f(con)m(v)m(en)m(tions)i(that)f -(ha)m(v)m(e)g(b)s(een)0 2786 y(appro)m(v)m(ed)37 b(as)h(part)f(of)g +(ha)m(v)m(e)g(b)s(een)0 2795 y(appro)m(v)m(ed)37 b(as)h(part)f(of)g (the)h(FITS)e(standard.)61 b(Consequen)m(tly)-8 b(,)39 b(the)f(follo)m(wing)g(routines)g(ARE)f(NO)m(W)h(DEP-)0 -2899 y(RECA)-8 b(TED.)29 b(It)f(is)h(STR)m(ONGL)-8 b(Y)28 +2908 y(RECA)-8 b(TED.)29 b(It)f(is)h(STR)m(ONGL)-8 b(Y)28 b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)f(not)g(use)f -(these)h(routines,)0 3012 y(and)h(instead)g(use)g(an)h(external)g(W)m +(these)h(routines,)0 3021 y(and)h(instead)g(use)g(an)h(external)g(W)m (CS)f(library)-8 b(,)31 b(as)g(describ)s(ed)e(ab)s(o)m(v)m(e.)0 -3172 y(These)21 b(routines)g(are)g(included)f(mainly)h(for)g(bac)m(kw)m +3181 y(These)21 b(routines)g(are)g(included)f(mainly)h(for)g(bac)m(kw)m (ard)g(compatibilit)m(y)j(with)c(existing)i(soft)m(w)m(are.)39 -b(They)21 b(supp)s(ort)0 3285 y(the)30 b(follo)m(wing)i(standard)d(map) +b(They)21 b(supp)s(ort)0 3294 y(the)30 b(follo)m(wing)i(standard)d(map) g(pro)5 b(jections:)41 b(-SIN,)30 b(-T)-8 b(AN,)31 b(-AR)m(C,)g(-NCP)-8 -b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 3398 +b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 3407 y(are)f(the)g(legal)h(v)-5 b(alues)29 b(for)f(the)h(co)s(ordt)m(yp)s(e) f(parameter\).)41 b(These)28 b(routines)h(are)g(based)f(on)g(similar)h -(functions)f(in)0 3511 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m +(functions)f(in)0 3520 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m (tities)i(are)f(giv)m(en)g(in)f(units)g(of)g(degrees.)0 -3789 y Fh(1)81 b Fi(Get)22 b(the)g(v)-5 b(alues)21 b(of)h(all)g(the)g +3802 y Fi(1)81 b Fj(Get)22 b(the)g(v)-5 b(alues)21 b(of)h(all)g(the)g (standard)f(FITS)f(celestial)k(co)s(ordinate)f(system)e(k)m(eyw)m(ords) -h(from)f(the)h(header)f(of)h(a)227 3902 y(FITS)j(image)i(\(i.e.,)h(the) +h(from)f(the)h(header)f(of)h(a)227 3915 y(FITS)j(image)i(\(i.e.,)h(the) d(primary)g(arra)m(y)h(or)f(an)h(image)g(extension\).)40 b(These)26 b(v)-5 b(alues)25 b(ma)m(y)h(then)g(b)s(e)e(passed)227 -4015 y(to)39 b(the)e(subroutines)g(that)h(p)s(erform)e(the)i(co)s +4028 y(to)39 b(the)e(subroutines)g(that)h(p)s(erform)e(the)i(co)s (ordinate)g(transformations.)63 b(If)37 b(an)m(y)h(or)g(all)g(of)g(the) -g(W)m(CS)227 4127 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m(t,)h(then) +g(W)m(CS)227 4141 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m(t,)h(then) f(default)g(v)-5 b(alues)31 b(will)h(b)s(e)e(returned.)41 b(If)31 b(the)g(\014rst)g(co)s(ordinate)g(axis)h(is)227 -4240 y(the)d(declination-lik)m(e)j(co)s(ordinate,)e(then)e(this)g +4254 y(the)d(declination-lik)m(e)j(co)s(ordinate,)e(then)e(this)g (routine)h(will)g(sw)m(ap)f(them)h(so)g(that)g(the)g(longitudinal-lik)m -(e)227 4353 y(co)s(ordinate)i(is)g(returned)e(as)i(the)f(\014rst)g -(axis.)227 4513 y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p -1454 4513 28 4 v 32 w(i')g(W)m(CS)f(transformation)h(matrix)g(k)m(eyw)m -(ords)f(instead)h(of)f(old)h(st)m(yle)227 4625 y('CDEL)-8 +(e)227 4367 y(co)s(ordinate)i(is)g(returned)e(as)i(the)f(\014rst)g +(axis.)227 4528 y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p +1454 4528 28 4 v 32 w(i')g(W)m(CS)f(transformation)h(matrix)g(k)m(eyw)m +(ords)f(instead)h(of)f(old)h(st)m(yle)227 4641 y('CDEL)-8 b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)f (routine)h(will)g(calculate)j(and)c(return)g(the)h(v)-5 -b(alues)227 4738 y(of)33 b(the)g(equiv)-5 b(alen)m(t)35 +b(alues)227 4754 y(of)33 b(the)g(equiv)-5 b(alen)m(t)35 b(old-st)m(yle)f(k)m(eyw)m(ords.)49 b(Note)34 b(that)g(the)f(con)m(v)m (ersion)h(from)e(the)i(new-st)m(yle)g(k)m(eyw)m(ords)227 -4851 y(to)e(the)f(old-st)m(yle)h(v)-5 b(alues)31 b(is)g(sometimes)g +4867 y(to)e(the)f(old-st)m(yle)h(v)-5 b(alues)31 b(is)g(sometimes)g (only)g(an)g(appro)m(ximation,)h(so)e(if)h(the)g(appro)m(ximation)h(is) -e(larger)227 4964 y(than)37 b(an)h(in)m(ternally)g(de\014ned)e +e(larger)227 4980 y(than)37 b(an)h(in)m(ternally)g(de\014ned)e (threshold)h(lev)m(el,)k(then)c(CFITSIO)f(will)i(still)g(return)e(the)i -(appro)m(ximate)227 5077 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5 +(appro)m(ximate)227 5093 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5 b(alues,)39 b(but)d(will)h(also)h(return)d(with)i(status)g(=)f(506,)k -(to)e(w)m(arn)e(the)h(calling)h(program)227 5190 y(that)30 +(to)e(w)m(arn)e(the)h(calling)h(program)227 5206 y(that)30 b(appro)m(ximations)f(ha)m(v)m(e)h(b)s(een)e(made.)40 b(It)29 b(is)g(then)f(up)g(to)h(the)g(calling)i(program)d(to)h(decide)h -(whether)227 5303 y(the)k(appro)m(ximations)g(are)g(su\016cien)m(tly)g +(whether)227 5319 y(the)k(appro)m(ximations)g(are)g(su\016cien)m(tly)g (accurate)i(for)d(the)h(particular)f(application,)j(or)e(whether)f -(more)227 5416 y(precise)e(W)m(CS)f(transformations)h(m)m(ust)f(b)s(e)g +(more)227 5432 y(precise)e(W)m(CS)f(transformations)h(m)m(ust)f(b)s(e)g (p)s(erformed)f(using)h(new-st)m(yle)h(W)m(CS)g(k)m(eyw)m(ords)f -(directly)-8 b(.)382 5694 y Fe(FTGICS\(unit,)44 b(>)k +(directly)-8 b(.)382 5714 y Ff(FTGICS\(unit,)44 b(>)k (xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o (pe,s)o(tatu)o(s\))p eop end %%Page: 67 73 -TeXDict begin 67 72 bop 0 299 a Fg(6.10.)73 b(FILE)30 -b(CHECKSUM)f(SUBR)m(OUTINES)2080 b Fi(67)0 555 y Fh(2)81 -b Fi(Get)34 b(the)f(v)-5 b(alues)33 b(of)g(all)h(the)f(standard)f(FITS) +TeXDict begin 67 72 bop 0 299 a Fh(6.10.)73 b(FILE)30 +b(CHECKSUM)f(SUBR)m(OUTINES)2080 b Fj(67)0 555 y Fi(2)81 +b Fj(Get)34 b(the)f(v)-5 b(alues)33 b(of)g(all)h(the)f(standard)f(FITS) h(celestial)i(co)s(ordinate)f(system)f(k)m(eyw)m(ords)g(from)g(the)g (header)227 668 y(of)j(a)h(FITS)e(table)h(where)g(the)g(X)g(and)f(Y)h (\(or)g(RA)g(and)g(DEC)f(co)s(ordinates)i(are)f(stored)g(in)g(2)g (separate)227 781 y(columns)c(of)g(the)g(table.)46 b(These)31 b(v)-5 b(alues)32 b(ma)m(y)h(then)e(b)s(e)h(passed)f(to)h(the)g (subroutines)f(that)h(p)s(erform)f(the)227 894 y(co)s(ordinate)g -(transformations.)382 1114 y Fe(FTGTCS\(unit,xcol,ycol,)42 +(transformations.)382 1114 y Ff(FTGTCS\(unit,xcol,ycol,)42 b(>)716 1227 y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o -(oor)o(dtyp)o(e,st)o(atu)o(s\))0 1446 y Fh(3)81 b Fi(Calculate)42 +(oor)o(dtyp)o(e,st)o(atu)o(s\))0 1446 y Fi(3)81 b Fj(Calculate)42 b(the)g(celestial)h(co)s(ordinate)f(corresp)s(onding)e(to)i(the)f (input)f(X)h(and)g(Y)g(pixel)g(lo)s(cation)i(in)e(the)227 -1559 y(image.)382 1779 y Fe(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o +1559 y(image.)382 1779 y Ff(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o (pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 1892 -y(coordtype,)k(>)i(xpos,ypos,status\))0 2112 y Fh(4)81 -b Fi(Calculate)42 b(the)g(X)f(and)f(Y)h(pixel)h(lo)s(cation)g(corresp)s +y(coordtype,)k(>)i(xpos,ypos,status\))0 2112 y Fi(4)81 +b Fj(Calculate)42 b(the)g(X)f(and)f(Y)h(pixel)h(lo)s(cation)g(corresp)s (onding)e(to)i(the)f(input)f(celestial)k(co)s(ordinate)e(in)f(the)227 -2225 y(image.)382 2445 y Fe(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o +2225 y(image.)382 2445 y Ff(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o (pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 2557 -y(coordtype,)k(>)i(xpix,ypix,status\))0 2885 y Fd(6.10)136 -b(File)45 b(Chec)l(ksum)g(Subroutines)0 3135 y Fi(The)33 +y(coordtype,)k(>)i(xpix,ypix,status\))0 2885 y Fe(6.10)136 +b(File)45 b(Chec)l(ksum)g(Subroutines)0 3135 y Fj(The)33 b(follo)m(wing)h(routines)f(either)h(compute)f(or)h(v)-5 b(alidate)34 b(the)g(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A) -8 b(T)g(ASUM)0 3248 y(k)m(eyw)m(ord)33 b(is)f(used)f(to)i(store)f(the) @@ -7604,7 +9681,7 @@ (published)f(in)h(the)g(pro)s(ceedings)g(of)g(the)h(AD)m(ASS)f(IV)0 4151 y(conference)f(in)f(Baltimore)i(in)f(No)m(v)m(em)m(b)s(er)g(1994)h (and)e(a)h(later)g(revision)g(in)f(June)f(1995.)0 4371 -y Fh(1)81 b Fi(Compute)33 b(and)g(write)h(the)g(D)m(A)-8 +y Fi(1)81 b Fj(Compute)33 b(and)g(write)h(the)g(D)m(A)-8 b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5 b(alues)34 b(for)f(the)h(CHDU)g(in)m(to)h(the)227 4484 y(curren)m(t)25 b(header.)38 b(The)24 b(D)m(A)-8 b(T)g(ASUM)27 @@ -7619,8 +9696,8 @@ (dated)f(only)h(if)g(necessary)h(\(i.e.,)i(if)227 4936 y(the)31 b(\014le)f(has)g(b)s(een)g(mo)s(di\014ed)f(since)i(the)g (original)g(k)m(eyw)m(ord)g(v)-5 b(alues)31 b(w)m(ere)g(computed\).)382 -5155 y Fe(FTPCKS\(unit,)44 b(>)k(status\))0 5375 y Fh(2)81 -b Fi(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5 +5155 y Ff(FTPCKS\(unit,)44 b(>)k(status\))0 5375 y Fi(2)81 +b Fj(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5 b(alue)29 b(in)f(the)h(CHDU,)g(assuming)f(that)h(the)f(D)m(A)-8 b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 5488 y(exists)36 b(and)f(already)h (has)f(the)h(correct)g(v)-5 b(alue.)56 b(This)35 b(routine)g @@ -7631,10 +9708,10 @@ (string)f(to)h(the)g(CHECKSUM)e(k)m(eyw)m(ord.)p eop end %%Page: 68 74 -TeXDict begin 68 73 bop 0 299 a Fi(68)1319 b Fg(CHAPTER)29 +TeXDict begin 68 73 bop 0 299 a Fj(68)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)382 555 y Fe(FTUCKS\(unit,)44 b(>)k(status\))0 -807 y Fh(3)81 b Fi(V)-8 b(erify)35 b(the)f(CHDU)h(b)m(y)g(computing)f +b(SUBR)m(OUTINES)382 555 y Ff(FTUCKS\(unit,)44 b(>)k(status\))0 +807 y Fi(3)81 b Fj(V)-8 b(erify)35 b(the)f(CHDU)h(b)m(y)g(computing)f (the)h(c)m(hec)m(ksums)g(and)f(comparing)h(them)f(with)g(the)h(k)m(eyw) m(ords.)53 b(The)227 920 y(data)34 b(unit)f(is)g(v)m(eri\014ed)g (correctly)h(if)f(the)h(computed)f(c)m(hec)m(ksum)g(equals)h(the)f(v)-5 @@ -7648,29 +9725,29 @@ (correctly)-8 b(,)29 b(a)d(v)-5 b(alue)27 b(=)e(0)i(if)f(the)g(D)m(A)-8 b(T)g(ASUM)28 b(or)227 1372 y(CHECKSUM)h(k)m(eyw)m(ord)g(is)h(not)f (presen)m(t,)h(or)f(v)-5 b(alue)30 b(=)f(-1)h(if)f(the)h(computed)f(c)m -(hec)m(ksum)h(is)f(not)h(correct.)382 1623 y Fe(FTVCKS\(unit,)44 -b(>)k(dataok,hduok,status\))0 1875 y Fh(4)81 b Fi(Compute)25 +(hec)m(ksum)h(is)f(not)h(correct.)382 1623 y Ff(FTVCKS\(unit,)44 +b(>)k(dataok,hduok,status\))0 1875 y Fi(4)81 b Fj(Compute)25 b(and)h(return)f(the)i(c)m(hec)m(ksum)g(v)-5 b(alues)26 b(for)g(the)h(CHDU)f(\(as)h(double)f(precision)h(v)-5 b(ariables\))27 b(without)227 1988 y(creating)46 b(or)e(mo)s(difying)g (the)h(CHECKSUM)e(and)h(D)m(A)-8 b(T)g(ASUM)46 b(k)m(eyw)m(ords.)83 b(This)44 b(routine)g(is)h(used)227 2101 y(in)m(ternally)32 b(b)m(y)e(FTV)m(CKS,)g(but)g(ma)m(y)h(b)s(e)e(useful)h(in)g(other)h -(situations)g(as)f(w)m(ell.)382 2353 y Fe(FTGCKS\(unit,)44 -b(>)k(datasum,hdusum,status\))0 2604 y Fh(5)81 b Fi(Enco)s(de)33 +(situations)g(as)f(w)m(ell.)382 2353 y Ff(FTGCKS\(unit,)44 +b(>)k(datasum,hdusum,status\))0 2604 y Fi(5)81 b Fj(Enco)s(de)33 b(a)h(c)m(hec)m(ksum)h(v)-5 b(alue)34 b(\(stored)g(in)g(a)g(double)g (precision)g(v)-5 b(ariable\))35 b(in)m(to)f(a)h(16-c)m(haracter)h (string.)51 b(If)227 2717 y(COMPLEMENT)30 b(=)g(.true.)41 b(then)30 b(the)g(32-bit)i(sum)d(v)-5 b(alue)31 b(will)g(b)s(e)f (complemen)m(ted)h(b)s(efore)f(enco)s(ding.)382 2969 -y Fe(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))0 -3221 y Fh(6)81 b Fi(Deco)s(de)39 b(a)f(16)h(c)m(haracter)h(c)m(hec)m +y Ff(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))0 +3221 y Fi(6)81 b Fj(Deco)s(de)39 b(a)f(16)h(c)m(haracter)h(c)m(hec)m (ksum)e(string)g(in)m(to)h(a)g(double)e(precision)h(v)-5 b(alue.)65 b(If)37 b(COMPLEMENT)g(=)227 3334 y(.true.)k(then)30 b(the)h(32-bit)g(sum)f(v)-5 b(alue)31 b(will)f(b)s(e)g(complemen)m(ted) -i(after)e(deco)s(ding.)382 3586 y Fe(FTDSUM\(checksum,compleme)o(nt,)41 -b(>)48 b(sum\))0 3918 y Fd(6.11)180 b(Date)46 b(and)f(Time)g(Utilit)l -(y)i(Routines)0 4168 y Fi(The)29 b(follo)m(wing)i(routines)f(help)f(to) +i(after)e(deco)s(ding.)382 3586 y Ff(FTDSUM\(checksum,compleme)o(nt,)41 +b(>)48 b(sum\))0 3918 y Fe(6.11)180 b(Date)46 b(and)f(Time)g(Utilit)l +(y)i(Routines)0 4168 y Fj(The)29 b(follo)m(wing)i(routines)f(help)f(to) i(construct)f(or)f(parse)h(the)g(FITS)f(date/time)i(strings.)41 b(Starting)30 b(in)f(the)h(y)m(ear)0 4281 y(2000,)k(the)d(FITS)g(D)m(A) -8 b(TE)32 b(k)m(eyw)m(ord)g(v)-5 b(alues)31 b(\(and)h(the)f(v)-5 @@ -7681,10 +9758,10 @@ (the)g(seconds)g(v)-5 b(alue)31 b(is)f(optional.)42 b(These)30 b(times)h(are)f(in)g(UTC.)g(The)g(older)0 4620 y('dd/mm/yy')g(date)h (format)g(ma)m(y)g(not)g(b)s(e)e(used)h(for)g(dates)h(after)g(01)g(Jan) -m(uary)f(2000.)0 4872 y Fh(1)81 b Fi(Get)31 b(the)g(curren)m(t)f +m(uary)f(2000.)0 4872 y Fi(1)81 b Fj(Get)31 b(the)g(curren)m(t)f (system)g(date.)42 b(The)29 b(returned)h(y)m(ear)h(has)f(4)h(digits)g -(\(1999,)h(2000,)h(etc.\))382 5123 y Fe(FTGSDT\()46 b(>)h(day,)g -(month,)f(year,)g(status)g(\))0 5375 y Fh(2)81 b Fi(Get)34 +(\(1999,)h(2000,)h(etc.\))382 5123 y Ff(FTGSDT\()46 b(>)h(day,)g +(month,)f(year,)g(status)g(\))0 5375 y Fi(2)81 b Fj(Get)34 b(the)g(curren)m(t)g(system)f(date)i(and)e(time)h(string)g (\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)i(will)f(b)s(e)227 5488 y(in)26 b(UTC/GMT)g(if)g(a)m(v)-5 b(ailable,)29 @@ -7695,58 +9772,58 @@ (lo)s(cal)i(time)g(to)f(UTC,)227 5714 y(and)f(th)m(us)g(the)h(lo)s(cal) g(time)g(w)m(as)g(returned.)p eop end %%Page: 69 75 -TeXDict begin 69 74 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 -b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(69)382 555 y Fe(FTGSTM\(>)45 -b(datestr,)h(timeref,)f(status\))0 821 y Fh(3)81 b Fi(Construct)26 +TeXDict begin 69 74 bop 0 299 a Fh(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fj(69)382 555 y Ff(FTGSTM\(>)45 +b(datestr,)h(timeref,)f(status\))0 823 y Fi(3)81 b Fj(Construct)26 b(a)i(date)g(string)f(from)g(the)g(input)f(date)i(v)-5 b(alues.)40 b(If)27 b(the)g(y)m(ear)h(is)g(b)s(et)m(w)m(een)f(1900)i -(and)e(1998,)j(inclu-)227 934 y(siv)m(e,)38 b(then)c(the)i(returned)d +(and)e(1998,)j(inclu-)227 936 y(siv)m(e,)38 b(then)c(the)i(returned)d (date)j(string)f(will)g(ha)m(v)m(e)i(the)e(old)g(FITS)f(format)i -(\('dd/mm/yy'\),)h(otherwise)227 1047 y(the)32 b(date)g(string)f(will)g +(\('dd/mm/yy'\),)h(otherwise)227 1048 y(the)32 b(date)g(string)f(will)g (ha)m(v)m(e)i(the)e(new)g(FITS)g(format)g(\('YYYY-MM-DD'\).)36 -b(Use)c(FTTM2S)f(instead)g(to)227 1160 y(alw)m(a)m(ys)h(return)d(a)i +b(Use)c(FTTM2S)f(instead)g(to)227 1161 y(alw)m(a)m(ys)h(return)d(a)i (date)g(string)g(using)e(the)i(new)f(FITS)g(format.)382 -1426 y Fe(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f -(status\))0 1692 y Fh(4)81 b Fi(Construct)34 b(a)i(new-format)f(date)h +1429 y Ff(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f +(status\))0 1696 y Fi(4)81 b Fj(Construct)34 b(a)i(new-format)f(date)h (+)f(time)h(string)f(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 -b(If)34 b(the)i(y)m(ear,)227 1805 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 +b(If)34 b(the)i(y)m(ear,)227 1809 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 b(alues)32 b(all)h(=)e(0)h(then)g(only)g(the)g(time)g(is)g(enco)s(ded)f -(with)h(format)g('hh:mm:ss.ddd...'.)227 1918 y(The)j(decimals)h +(with)h(format)g('hh:mm:ss.ddd...'.)227 1922 y(The)j(decimals)h (parameter)g(sp)s(eci\014es)e(ho)m(w)i(man)m(y)f(decimal)h(places)g(of) -f(fractional)i(seconds)e(to)h(include)227 2030 y(in)30 +f(fractional)i(seconds)e(to)h(include)227 2035 y(in)30 b(the)h(string.)41 b(If)29 b(`decimals')j(is)f(negativ)m(e,)h(then)f (only)f(the)h(date)g(will)f(b)s(e)g(return)f(\('YYYY-MM-DD'\).)382 -2296 y Fe(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g -(second,)g(decimals,)764 2409 y(>)h(datestr,)f(status\))0 -2675 y Fh(5)81 b Fi(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g +2302 y Ff(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g +(second,)g(decimals,)764 2415 y(>)h(datestr,)f(status\))0 +2683 y Fi(5)81 b Fj(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g (input)e(string,)49 b(where)44 b(the)h(string)g(ma)m(y)g(b)s(e)f(in)h -(either)g(the)g(old)227 2788 y(\('dd/mm/yy'\))31 b(or)g(new)e +(either)g(the)g(old)227 2796 y(\('dd/mm/yy'\))31 b(or)g(new)e (\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))k(FITS)c(format.)382 -3054 y Fe(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h -(status\))0 3320 y Fh(6)81 b Fi(Return)30 b(the)h(date)h(and)f(time)h +3063 y Ff(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h +(status\))0 3330 y Fi(6)81 b Fj(Return)30 b(the)h(date)h(and)f(time)h (as)f(read)g(from)g(the)h(input)e(string,)h(where)g(the)h(string)f(ma)m -(y)h(b)s(e)e(in)h(either)h(the)227 3433 y(old)d(or)f(new)g(FITS)g +(y)h(b)s(e)e(in)h(either)h(the)227 3443 y(old)d(or)f(new)g(FITS)g (format.)40 b(The)28 b(returned)f(hours,)h(min)m(utes,)h(and)f(seconds) g(v)-5 b(alues)29 b(will)f(b)s(e)g(set)h(to)g(zero)227 -3546 y(if)k(the)h(input)e(string)h(do)s(es)g(not)h(include)f(the)g +3556 y(if)k(the)h(input)e(string)h(do)s(es)g(not)h(include)f(the)g (time)h(\('dd/mm/yy')f(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8 -b(,)227 3659 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i +b(,)227 3669 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i (v)-5 b(alues)36 b(will)f(b)s(e)g(set)h(to)g(zero)g(if)f(the)g(date)h -(is)f(not)h(included)e(in)227 3772 y(the)d(input)e(string)i -(\('hh:mm:ss.ddd...'\).)382 4037 y Fe(FTS2TM\(datestr,)43 +(is)f(not)h(included)e(in)227 3782 y(the)d(input)e(string)i +(\('hh:mm:ss.ddd...'\).)382 4050 y Ff(FTS2TM\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0 -4378 y Fd(6.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0 -4630 y Fi(The)30 b(follo)m(wing)i(utilit)m(y)f(subroutines)f(ma)m(y)h -(b)s(e)e(useful)h(for)g(certain)h(applications:)0 4896 -y Fh(1)81 b Fi(Return)29 b(the)i(starting)g(b)m(yte)g(address)e(of)i -(the)f(CHDU)h(and)f(the)h(next)f(HDU.)382 5162 y Fe(FTGHAD\(iunit,)44 -b(>)j(curaddr,)f(nextaddr\))0 5428 y Fh(2)81 b Fi(Con)m(v)m(ert)31 +4392 y Fe(6.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0 +4644 y Fj(The)30 b(follo)m(wing)i(utilit)m(y)f(subroutines)f(ma)m(y)h +(b)s(e)e(useful)h(for)g(certain)h(applications:)0 4912 +y Fi(1)81 b Fj(Return)29 b(the)i(starting)g(b)m(yte)g(address)e(of)i +(the)f(CHDU)h(and)f(the)h(next)f(HDU.)382 5179 y Ff(FTGHAD\(iunit,)44 +b(>)j(curaddr,)f(nextaddr\))0 5446 y Fi(2)81 b Fj(Con)m(v)m(ert)31 b(a)g(c)m(haracter)h(string)e(to)h(upp)s(ercase)e(\(op)s(erates)j(in)e -(place\).)382 5694 y Fe(FTUPCH\(string\))p eop end +(place\).)382 5714 y Ff(FTUPCH\(string\))p eop end %%Page: 70 76 -TeXDict begin 70 75 bop 0 299 a Fi(70)1319 b Fg(CHAPTER)29 +TeXDict begin 70 75 bop 0 299 a Fj(70)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)0 555 y Fh(3)81 b Fi(Compare)43 b(the)i(input)e +b(SUBR)m(OUTINES)0 555 y Fi(3)81 b Fj(Compare)43 b(the)i(input)e (template)i(string)f(against)h(the)g(reference)f(string)g(to)h(see)g (if)f(they)g(matc)m(h.)82 b(The)227 668 y(template)36 b(string)f(ma)m(y)g(con)m(tain)g(wildcard)f(c)m(haracters:)51 @@ -7763,57 +9840,57 @@ b(if)34 b(the)g(matc)m(h)h(is)g(exact)g(\(i.e.,)i(if)d(no)g(wildcard) 227 1233 y(c)m(haracters)e(w)m(ere)f(used)f(in)g(the)g(matc)m(h\).)42 b(Both)31 b(strings)f(m)m(ust)h(b)s(e)e(68)j(c)m(haracters)f(or)g(less) -f(in)g(length.)382 1505 y Fe(FTCMPS\(str_template,)42 -b(string,)k(casesen,)f(>)j(match,)e(exact\))0 1778 y -Fh(4)81 b Fi(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(name)f(con)m +f(in)g(length.)382 1507 y Ff(FTCMPS\(str_template,)42 +b(string,)k(casesen,)f(>)j(match,)e(exact\))0 1781 y +Fi(4)81 b Fj(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(name)f(con)m (tains)i(only)e(legal)j(c)m(haracters:)42 b(A-Z,0-9,)32 -b(h)m(yphen,)d(and)h(underscore.)382 2051 y Fe(FTTKEY\(keyword,)43 -b(>)48 b(status\))0 2324 y Fh(5)81 b Fi(T)-8 b(est)31 +b(h)m(yphen,)d(and)h(underscore.)382 2054 y Ff(FTTKEY\(keyword,)43 +b(>)48 b(status\))0 2328 y Fi(5)81 b Fj(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains)i(only)e(legal)i -(prin)m(table)f(ASCI)s(I)e(c)m(haracters)382 2597 y Fe(FTTREC\(card,)44 -b(>)k(status\))0 2869 y Fh(6)81 b Fi(T)-8 b(est)25 b(whether)f(the)h +(prin)m(table)f(ASCI)s(I)e(c)m(haracters)382 2602 y Ff(FTTREC\(card,)44 +b(>)k(status\))0 2876 y Fi(6)81 b Fj(T)-8 b(est)25 b(whether)f(the)h (curren)m(t)f(header)h(con)m(tains)g(an)m(y)g(NULL)g(\(ASCI)s(I)e(0\))j (c)m(haracters.)40 b(These)24 b(c)m(haracters)j(are)227 -2982 y(illegal)37 b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g +2989 y(illegal)37 b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g (undetected)g(b)m(y)f(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i -(header)227 3095 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in) +(header)227 3102 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in) m(terpreted)g(as)h(the)f(normal)g(end-of-string)h(terminator.)41 -b(This)27 b(routine)227 3208 y(returns)h(the)g(p)s(osition)h(of)g(the)g +b(This)27 b(routine)227 3215 y(returns)h(the)g(p)s(osition)h(of)g(the)g (\014rst)f(n)m(ull)g(c)m(haracter)i(in)f(the)f(header,)h(or)g(zero)g (if)g(there)g(are)g(no)f(n)m(ulls.)40 b(F)-8 b(or)227 -3321 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m +3328 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m (ould)f(indicate)h(that)g(the)f(\014rst)f(NULL)h(is)g(lo)s(cated)h(in)f -(the)g(30th)227 3434 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m +(the)g(30th)227 3441 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m (ord)h(in)f(the)h(header)f(\(recall)i(that)f(eac)m(h)h(header)e(record) -h(is)f(80)h(c)m(haracters)227 3547 y(long\).)56 b(Note)36 +h(is)f(80)h(c)m(haracters)227 3554 y(long\).)56 b(Note)36 b(that)g(this)f(is)g(one)g(of)g(the)g(few)g(FITSIO)f(routines)h(in)f (whic)m(h)h(the)g(returned)f(v)-5 b(alue)36 b(is)f(not)227 -3660 y(necessarily)d(equal)e(to)i(the)e(status)h(v)-5 -b(alue\).)382 3933 y Fe(FTNCHK\(unit,)44 b(>)k(status\))0 -4205 y Fh(7)81 b Fi(P)m(arse)27 b(a)f(header)h(k)m(eyw)m(ord)g(record)f +3667 y(necessarily)d(equal)e(to)i(the)e(status)h(v)-5 +b(alue\).)382 3941 y Ff(FTNCHK\(unit,)44 b(>)k(status\))0 +4215 y Fi(7)81 b Fj(P)m(arse)27 b(a)f(header)h(k)m(eyw)m(ord)g(record)f (and)g(return)f(the)i(name)f(of)h(the)f(k)m(eyw)m(ord)h(and)f(the)h -(length)f(of)h(the)g(name.)227 4318 y(The)34 b(k)m(eyw)m(ord)h(name)f +(length)f(of)h(the)g(name.)227 4327 y(The)34 b(k)m(eyw)m(ord)h(name)f (normally)h(o)s(ccupies)f(the)h(\014rst)e(8)i(c)m(haracters)g(of)g(the) -f(record,)i(except)f(under)e(the)227 4431 y(HIERAR)m(CH)e(con)m(v)m(en) +f(record,)i(except)f(under)e(the)227 4440 y(HIERAR)m(CH)e(con)m(v)m(en) m(tion)h(where)e(the)h(name)f(can)h(b)s(e)f(up)f(to)i(70)g(c)m -(haracters)h(in)e(length.)382 4704 y Fe(FTGKNM\(card,)44 +(haracters)h(in)e(length.)382 4714 y Ff(FTGKNM\(card,)44 b(>)k(keyname,)d(keylength,)g(staThe)h('\\#')h(character)e(will)i -(match)f(any)h(consecutive)e(string)191 4817 y(of)i(decimal)f(digits)g -(\(0)h(-)h(9\).)f(tus\))0 5090 y Fh(8)81 b Fi(P)m(arse)34 +(match)f(any)h(consecutive)e(string)191 4827 y(of)i(decimal)f(digits)g +(\(0)h(-)h(9\).)f(tus\))0 5101 y Fi(8)81 b Fj(P)m(arse)34 b(a)h(header)f(k)m(eyw)m(ord)h(record.)52 b(This)33 b(subroutine)g (parses)h(the)g(input)g(header)g(record)g(to)h(return)e(the)227 -5203 y(v)-5 b(alue)27 b(\(as)g(a)g(c)m(haracter)g(string\))g(and)f +5214 y(v)-5 b(alue)27 b(\(as)g(a)g(c)m(haracter)g(string\))g(and)f (commen)m(t)h(strings.)39 b(If)26 b(the)g(k)m(eyw)m(ord)h(has)f(no)g(v) --5 b(alue)27 b(\(columns)f(9-10)227 5316 y(not)h(equal)f(to)h('=)f +-5 b(alue)27 b(\(columns)f(9-10)227 5327 y(not)h(equal)f(to)h('=)f ('\),)i(then)e(the)g(v)-5 b(alue)27 b(string)f(is)g(returned)f(blank)h (and)f(the)h(commen)m(t)i(string)e(is)g(set)g(equal)227 -5428 y(to)31 b(column)g(9)f(-)h(80)g(of)g(the)f(input)g(string.)382 -5701 y Fe(FTPSVC\(card,)44 b(>)k(value,comment,status\))p +5440 y(to)31 b(column)g(9)f(-)h(80)g(of)g(the)f(input)g(string.)382 +5714 y Ff(FTPSVC\(card,)44 b(>)k(value,comment,status\))p eop end %%Page: 71 77 -TeXDict begin 71 76 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 -b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(71)0 555 y Fh(9)81 -b Fi(Construct)41 b(a)h(prop)s(erly)f(formated)h(80-c)m(haracter)i +TeXDict begin 71 76 bop 0 299 a Fh(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fj(71)0 555 y Fi(9)81 +b Fj(Construct)41 b(a)h(prop)s(erly)f(formated)h(80-c)m(haracter)i (header)e(k)m(eyw)m(ord)g(record)f(from)h(the)g(input)e(k)m(eyw)m(ord) 227 668 y(name,)25 b(k)m(eyw)m(ord)f(v)-5 b(alue,)25 b(and)e(k)m(eyw)m(ord)h(commen)m(t)g(strings.)38 b(Hierarc)m(hical)26 @@ -7821,32 +9898,32 @@ f(supp)s(orted.)37 b(The)25 b(v)-5 b(alue)25 b(string)g(ma)m(y)h(con)m (tain)g(an)f(in)m(teger,)i(\015oating)f(p)s(oin)m(t,)g(logical,)227 894 y(or)31 b(quoted)f(c)m(haracter)i(string)e(\(e.g.,)j("12",)f -("15.7",)h("T",)e(or)g("'NGC)g(1313'"\).)382 1153 y Fe +("15.7",)h("T",)e(or)g("'NGC)g(1313'"\).)382 1153 y Ff (FTMKKY\(keyname,)43 b(value,)k(comment,)e(>)j(card,)e(status\))0 -1413 y Fh(10)g Fi(Construct)35 b(a)g(sequence)g(k)m(eyw)m(ord)g(name)g +1413 y Fi(10)g Fj(Construct)35 b(a)g(sequence)g(k)m(eyw)m(ord)g(name)g (\(R)m(OOT)g(+)f(nnn\).)54 b(This)34 b(subroutine)f(app)s(ends)g(the)j (sequence)227 1526 y(n)m(um)m(b)s(er)29 b(to)i(the)g(ro)s(ot)g(string)f (to)h(create)h(a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f(+)f(2)h -(=)f('NAXIS2'\))382 1785 y Fe(FTKEYN\(keyroot,seq_no,)42 -b(>)47 b(keyword,status\))0 2045 y Fh(11)f Fi(Construct)30 +(=)f('NAXIS2'\))382 1785 y Ff(FTKEYN\(keyroot,seq_no,)42 +b(>)47 b(keyword,status\))0 2045 y Fi(11)f Fj(Construct)30 b(a)g(sequence)g(k)m(eyw)m(ord)h(name)f(\(n)f(+)h(R)m(OOT\).)g(This)f (subroutine)g(concatenates)j(the)f(sequence)227 2158 y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g(the)f(ro)s(ot)h (string)g(to)g(create)h(a)f(k)m(eyw)m(ord)g(name)g(\(e.g.,)j(1)d(+)f -('CTYP')g(=)g('1CTYP'\))382 2417 y Fe(FTNKEY\(seq_no,keyroot,)42 -b(>)47 b(keyword,status\))0 2677 y Fh(12)f Fi(Determine)35 +('CTYP')g(=)g('1CTYP'\))382 2417 y Ff(FTNKEY\(seq_no,keyroot,)42 +b(>)47 b(keyword,status\))0 2677 y Fi(12)f Fj(Determine)35 b(the)f(datat)m(yp)s(e)g(of)g(a)g(k)m(eyw)m(ord)h(v)-5 b(alue)34 b(string.)50 b(This)33 b(subroutine)g(parses)g(the)h(k)m(eyw) m(ord)g(v)-5 b(alue)227 2790 y(string)31 b(\(usually)f(columns)g(11-30) j(of)d(the)h(header)f(record\))g(to)i(determine)e(its)h(datat)m(yp)s -(e.)382 3049 y Fe(FTDTYP\(value,)44 b(>)j(dtype,status\))0 -3309 y Fh(13)f Fi(Return)c(the)i(class)g(of)f(input)f(header)h(record.) +(e.)382 3049 y Ff(FTDTYP\(value,)44 b(>)j(dtype,status\))0 +3309 y Fi(13)f Fj(Return)c(the)i(class)g(of)f(input)f(header)h(record.) 79 b(The)43 b(record)g(is)g(classi\014ed)g(in)m(to)h(one)g(of)f(the)g (follo)m(wing)227 3422 y(categories)36 b(\(the)e(class)f(v)-5 b(alues)34 b(are)f(de\014ned)f(in)h(\014tsio.h\).)49 b(Note)35 b(that)e(this)g(is)g(one)h(of)f(the)g(few)g(FITSIO)227 3535 y(routines)e(that)f(do)s(es)h(not)f(return)f(a)i(status)g(v)-5 -b(alue.)334 3794 y Fe(Class)94 b(Value)619 b(Keywords)95 +b(alue.)334 3794 y Ff(Class)94 b(Value)619 b(Keywords)95 3907 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,) g(EXTEND,)g(BLOCKED,)1002 4020 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002 4133 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002 @@ -7868,9 +9945,9 @@ b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g(CRPIXn,)g(CROTAn,)f(CDELTn)p eop end %%Page: 72 78 -TeXDict begin 72 77 bop 0 299 a Fi(72)1319 b Fg(CHAPTER)29 +TeXDict begin 72 77 bop 0 299 a Fj(72)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)1002 555 y Fe(CDj_is,)46 b(PVj_ms,)g(LONPOLEs,)f +b(SUBR)m(OUTINES)1002 555 y Ff(CDj_is,)46 b(PVj_ms,)g(LONPOLEs,)f (LATPOLEs)1002 668 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f (TCRVns,)h(TCRPXn,)1002 781 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g (TPn_ms,)f(TCDLTn,)h(TCROTn)1002 894 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g @@ -7882,7 +9959,7 @@ b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 1458 y(TYP_CONT_KEY)140 b(140)47 b(CONTINUE)95 1571 y(TYP_USER_KEY)140 b(150)47 b(all)g(other)g(keywords)430 1797 y(class)f(=)h(FTGKCL)f(\(char)h -(*card\))0 2042 y Fh(14)f Fi(P)m(arse)f(the)g('TF)m(ORM')h(binary)e +(*card\))0 2042 y Fi(14)f Fj(P)m(arse)f(the)g('TF)m(ORM')h(binary)e (table)i(column)e(format)h(string.)84 b(This)44 b(subroutine)g(parses)g (the)h(input)227 2155 y(TF)m(ORM)27 b(c)m(haracter)g(string)f(and)g (returns)f(the)h(in)m(teger)h(datat)m(yp)s(e)g(co)s(de,)h(the)e(rep)s @@ -7891,7 +9968,7 @@ (the)g(unit)f(string.)38 b(The)23 b(follo)m(wing)i(datat)m(yp)s(e)227 2381 y(co)s(des)e(are)h(returned)e(\(the)h(negativ)m(e)i(of)f(the)f(v) -5 b(alue)23 b(is)g(returned)f(if)h(the)g(column)g(con)m(tains)h(v)-5 -b(ariable-length)227 2494 y(arra)m(ys\):)764 2739 y Fe(Datatype)761 +b(ariable-length)227 2494 y(arra)m(ys\):)764 2739 y Ff(Datatype)761 b(DATACODE)46 b(value)764 2852 y(bit,)g(X)907 b(1)764 2965 y(byte,)46 b(B)811 b(11)764 3078 y(logical,)45 b(L)668 b(14)764 3191 y(ASCII)46 b(character,)f(A)286 b(16)764 @@ -7900,7 +9977,7 @@ y(double)46 b(precision,)f(D)238 b(82)764 3756 y(complex)809 b(83)764 3868 y(double)46 b(complex)475 b(163)382 4094 y(FTBNFM\(tform,)44 b(>)j(datacode,repeat,width,stat)o(us\))0 -4340 y Fh(15)f Fi(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5 +4340 y Fi(15)f Fj(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5 b(alue)37 b(that)h(de\014nes)e(the)h(column)g(format)h(in)e(an)h(ASCI)s (I)f(table.)62 b(This)227 4452 y(routine)31 b(parses)g(the)g(input)g (TF)m(ORM)g(c)m(haracter)i(string)e(and)f(returns)g(the)i(datat)m(yp)s @@ -7924,12 +10001,12 @@ (double)f(precision)g(data)h(co)s(de)g(\(=)227 5356 y(82\).)54 b('Ew.d')34 b(format)g(columns)g(will)h(ha)m(v)m(e)g(dataco)s(de)g(=)f (42,)j(and)c('Dw.d')i(format)f(columns)g(will)h(ha)m(v)m(e)227 -5469 y(dataco)s(de)d(=)e(82.)382 5714 y Fe(FTASFM\(tform,)44 +5469 y(dataco)s(de)d(=)e(82.)382 5714 y Ff(FTASFM\(tform,)44 b(>)j(datacode,width,decimals,st)o(atus)o(\))p eop end %%Page: 73 79 -TeXDict begin 73 78 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 -b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(73)0 555 y Fh(16)46 -b Fi(Calculate)32 b(the)f(starting)g(column)g(p)s(ositions)f(and)g +TeXDict begin 73 78 bop 0 299 a Fh(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fj(73)0 555 y Fi(16)46 +b Fj(Calculate)32 b(the)f(starting)g(column)g(p)s(ositions)f(and)g (total)i(ASCI)s(I)d(table)j(width)d(based)i(on)f(the)h(input)e(arra)m (y)227 668 y(of)e(ASCI)s(I)e(table)i(TF)m(ORM)g(v)-5 b(alues.)40 b(The)26 b(SP)-8 b(A)m(CE)27 b(input)e(parameter)i @@ -7937,8 +10014,8 @@ y(to)40 b(lea)m(v)m(e)i(b)s(et)m(w)m(een)e(eac)m(h)g(column)g(\(it)g (is)f(recommended)g(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m(een)g (columns)f(for)227 894 y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).) -382 1153 y Fe(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 -b(rowlen,tbcol,status\))0 1413 y Fh(17)e Fi(P)m(arse)36 +382 1153 y Ff(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 +b(rowlen,tbcol,status\))0 1413 y Fi(17)e Fj(P)m(arse)36 b(a)f(template)h(string)f(and)g(return)f(a)h(formatted)h(80-c)m (haracter)h(string)e(suitable)h(for)f(app)s(ending)e(to)227 1526 y(\(or)40 b(deleting)h(from\))e(a)h(FITS)f(header)h(\014le.)68 @@ -7948,13 +10025,13 @@ b(The)35 b(formatted)227 1752 y(string)c(ma)m(y)g(then)f(b)s(e)g (passed)g(to)i(the)e(FTPREC,)h(FTMCRD,)g(or)f(FTDKEY)h(subroutines)e (to)j(app)s(end)227 1865 y(or)f(mo)s(dify)e(a)i(FITS)f(header)g -(record.)382 2124 y Fe(FTGTHD\(template,)43 b(>)48 b -(card,hdtype,status\))0 2384 y Fi(The)23 b(input)h(TEMPLA)-8 +(record.)382 2124 y Ff(FTGTHD\(template,)43 b(>)48 b +(card,hdtype,status\))0 2384 y Fj(The)23 b(input)h(TEMPLA)-8 b(TE)23 b(c)m(haracter)j(string)e(generally)h(should)e(con)m(tain)i(3)g (tok)m(ens:)38 b(\(1\))25 b(the)f(KEYNAME,)h(\(2\))0 2497 y(the)h(V)-10 b(ALUE,)26 b(and)f(\(3\))i(the)f(COMMENT)g(string.) 39 b(The)25 b(TEMPLA)-8 b(TE)26 b(string)g(m)m(ust)f(adhere)h(to)g(the) -g(follo)m(wing)0 2610 y(format:)0 2869 y Fh(-)80 b Fi(The)24 +g(follo)m(wing)0 2610 y(format:)0 2869 y Fi(-)80 b Fj(The)24 b(KEYNAME)g(tok)m(en)h(m)m(ust)e(b)s(egin)h(in)f(columns)h(1-8)h(and)e (b)s(e)h(a)g(maxim)m(um)g(of)g(8)g(c)m(haracters)h(long.)39 b(If)24 b(the)227 2982 y(\014rst)32 b(8)h(c)m(haracters)h(of)e(the)h @@ -7970,7 +10047,7 @@ ('HISTOR)-8 b(Y')32 b(then)h(the)f(remainder)g(of)h(the)g(line)g(is)g (considered)f(to)227 3547 y(b)s(e)e(a)h(FITS)e(COMMENT)h(or)h(HISTOR)-8 b(Y)30 b(record,)g(resp)s(ectiv)m(ely)-8 b(.)0 3806 y -Fh(-)80 b Fi(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s(e)h +Fi(-)80 b Fj(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s(e)h (separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g(more) g(spaces)g(and/or)227 3919 y(an)i('=')g(c)m(haracter.)41 b(The)27 b(datat)m(yp)s(e)i(of)f(the)g(V)-10 b(ALUE)27 @@ -7986,26 +10063,26 @@ b(blank)g(space)h(c)m(haracters)h(or)e(slash)h(\('/'\))h(c)m(haracters) g(then)e(the)g(en)m(tire)i(c)m(haracter)g(string)227 4484 y(m)m(ust)31 b(b)s(e)e(enclosed)i(in)f(single)h(quotes.)0 -4743 y Fh(-)80 b Fi(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but) +4743 y Fi(-)80 b Fj(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but) e(if)g(presen)m(t)g(m)m(ust)g(b)s(e)g(separated)g(from)g(the)h(V)-10 b(ALUE)28 b(tok)m(en)h(b)m(y)227 4856 y(a)i(blank)f(space)h(or)f(a)h -('/')g(c)m(haracter.)0 5116 y Fh(-)80 b Fi(One)32 b(exception)i(to)f +('/')g(c)m(haracter.)0 5116 y Fi(-)80 b Fj(One)32 b(exception)i(to)f (the)g(ab)s(o)m(v)m(e)h(rules)e(is)g(that)h(if)g(the)f(\014rst)g (non-blank)g(c)m(haracter)i(in)e(the)h(template)h(string)227 5229 y(is)h(a)g(min)m(us)f(sign)h(\('-'\))h(follo)m(w)m(ed)g(b)m(y)f(a) g(single)g(tok)m(en,)i(or)e(a)g(single)g(tok)m(en)h(follo)m(w)m(ed)g(b) m(y)f(an)f(equal)i(sign,)227 5341 y(then)29 b(it)g(is)g(in)m(terpreted) f(as)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)g(whic)m(h)f(is)h(to)g(b)s -(e)f(deleted)i(from)e(the)h(FITS)f(header.)0 5601 y Fh(-)80 -b Fi(The)40 b(second)g(exception)h(is)f(that)h(if)f(the)g(template)h +(e)f(deleted)i(from)e(the)h(FITS)f(header.)0 5601 y Fi(-)80 +b Fj(The)40 b(second)g(exception)h(is)f(that)h(if)f(the)g(template)h (string)f(starts)g(with)g(a)h(min)m(us)e(sign)h(and)f(is)h(follo)m(w)m (ed)227 5714 y(b)m(y)33 b(2)g(tok)m(ens)g(then)g(the)f(second)h(tok)m (en)h(is)e(in)m(terpreted)h(as)g(the)g(new)f(name)g(for)h(the)g(k)m (eyw)m(ord)g(sp)s(eci\014ed)p eop end %%Page: 74 80 -TeXDict begin 74 79 bop 0 299 a Fi(74)1319 b Fg(CHAPTER)29 +TeXDict begin 74 79 bop 0 299 a Fj(74)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 -b(SUBR)m(OUTINES)227 555 y Fi(b)m(y)k(\014rst)e(tok)m(en.)52 +b(SUBR)m(OUTINES)227 555 y Fj(b)m(y)k(\014rst)e(tok)m(en.)52 b(In)33 b(this)g(case)i(the)e(old)h(k)m(eyw)m(ord)g(name)g(\(\014rst)f (tok)m(en\))i(is)e(returned)g(in)g(c)m(haracters)i(1-8)227 668 y(of)e(the)g(returned)e(CARD)i(string,)g(and)f(the)h(new)f(k)m(eyw) @@ -8015,7 +10092,7 @@ 227 894 y(to)31 b(the)g(FTMNAM)g(subroutine)f(whic)m(h)g(will)g(c)m (hange)i(the)e(k)m(eyw)m(ord)h(name.)0 1158 y(The)f(HDTYPE)g(output)g (parameter)h(indicates)g(ho)m(w)g(the)f(returned)g(CARD)g(string)g -(should)g(b)s(e)g(in)m(terpreted:)382 1422 y Fe(hdtype)857 +(should)g(b)s(e)g(in)m(terpreted:)382 1422 y Ff(hdtype)857 b(interpretation)382 1535 y(------)523 b(-------------------------)o (----)o(---)o(----)o(----)o(---)o(----)o(--)525 1648 y(-2)572 b(Modify)46 b(the)h(name)g(of)g(the)g(keyword)f(given)g(in)h @@ -8033,8 +10110,8 @@ f(it)h(should)f(not)h(be)g(written)1193 3341 y(to)g(the)g(FITS)g (header)f(because)g(FITSIO)g(automatically)1193 3454 y(appends)g(the)h(END)g(record)f(when)h(the)f(header)h(is)g(closed.)0 -3718 y Fi(EXAMPLES:)30 b(The)g(follo)m(wing)i(lines)e(illustrate)i(v)-5 -b(alid)31 b(input)e(template)j(strings:)286 3982 y Fe(INTVAL)46 +3718 y Fj(EXAMPLES:)30 b(The)g(follo)m(wing)i(lines)e(illustrate)i(v)-5 +b(alid)31 b(input)e(template)j(strings:)286 3982 y Ff(INTVAL)46 b(7)i(This)f(is)g(an)g(integer)f(keyword)286 4095 y(RVAL)524 b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f(point)g(keyword)286 4208 y(EVAL=-12.45E-03)92 b(This)46 b(is)i(a)f(floating)f(point)g @@ -8048,7 +10125,7 @@ y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g (keyword)286 4998 y(-)h(DATE)286 5111 y(#)g(the)f(following)e(template) h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286 -5224 y(-)h(NAME)e(OBJECT)0 5488 y Fh(18)g Fi(P)m(arse)35 +5224 y(-)h(NAME)e(OBJECT)0 5488 y Fi(18)g Fj(P)m(arse)35 b(the)g(input)f(string)h(con)m(taining)h(a)f(list)h(of)f(ro)m(ws)f(or)h (ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)i(arra)m(ys)f(con-)227 5601 y(taining)27 b(the)f(\014rst)f(and)g(last)i(ro)m(w)f(in)f(eac)m(h) @@ -8057,8 +10134,8 @@ (3,)h(rangemin)f(=)g(3,)i(6,)g(8)e(and)g(rangemax)g(=)g(5,)i(6,)g(9.)55 b(A)m(t)36 b(most,)h('maxranges')p eop end %%Page: 75 81 -TeXDict begin 75 80 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 -b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(75)227 555 y(n)m(um)m(b)s(er)31 +TeXDict begin 75 80 bop 0 299 a Fh(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fj(75)227 555 y(n)m(um)m(b)s(er)31 b(of)h(ranges)f(will)h(b)s(e)g(returned.)43 b('maxro)m(ws')32 b(is)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)f(the)h (table;)227 668 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)h(than)f @@ -8070,17 +10147,17 @@ (b)s(ound,)d(so)i("50-")h(means)e(all)i(the)f(ro)m(ws)f(from)g(50)h(to) h(the)e(end)g(of)h(the)f(table,)j(and)227 1007 y("-")d(means)e(all)h (the)g(ro)m(ws)f(in)g(the)h(table,)g(from)f(1)h(-)g(maxro)m(ws.)191 -1267 y Fe(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525 +1267 y Ff(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525 1380 y(numranges,)g(rangemin,)g(rangemax,)h(status\))p eop end %%Page: 76 82 -TeXDict begin 76 81 bop 0 299 a Fi(76)1319 b Fg(CHAPTER)29 +TeXDict begin 76 81 bop 0 299 a Fj(76)1319 b Fh(CHAPTER)29 b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)p eop end %%Page: 77 83 -TeXDict begin 77 82 bop 0 1225 a Ff(Chapter)65 b(7)0 -1687 y Fl(The)77 b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 -2180 y Fi(The)41 b(\014ts)p 325 2180 28 4 v 33 w(iterate)p +TeXDict begin 77 82 bop 0 1225 a Fg(Chapter)65 b(7)0 +1687 y Fm(The)77 b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 +2180 y Fj(The)41 b(\014ts)p 325 2180 28 4 v 33 w(iterate)p 614 2180 V 34 w(data)i(function)e(in)h(CFITSIO)e(pro)m(vides)i(a)g (unique)e(metho)s(d)i(of)g(executing)h(an)e(arbitrary)0 2293 y(user-supplied)35 b(`w)m(ork')i(function)f(that)h(op)s(erates)g @@ -8111,17 +10188,17 @@ g(images)i(or)e(tables.)64 b(Using)37 b(the)h(iterator)h(has)0 3695 y(sev)m(eral)32 b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32 b(o)m(v)m(er)g(the)f(traditional)g(metho)s(d)f(of)h(reading)f(and)g -(writing)g(FITS)g(data)h(\014les:)136 3961 y Fc(\017)46 -b Fi(It)33 b(cleanly)h(separates)g(the)f(data)h(I/O)f(from)f(the)h +(writing)g(FITS)g(data)h(\014les:)136 3961 y Fd(\017)46 +b Fj(It)33 b(cleanly)h(separates)g(the)f(data)h(I/O)f(from)f(the)h (routine)g(that)h(op)s(erates)f(on)g(the)g(data.)49 b(This)32 b(leads)h(to)227 4074 y(a)e(more)g(mo)s(dular)e(and)h(`ob)5 b(ject)31 b(orien)m(ted')h(programming)e(st)m(yle.)136 -4268 y Fc(\017)46 b Fi(It)27 b(simpli\014es)f(the)h(application)h +4268 y Fd(\017)46 b Fj(It)27 b(simpli\014es)f(the)h(application)h (program)f(b)m(y)f(eliminating)i(the)f(need)g(to)g(allo)s(cate)i (memory)e(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)i (most)e(of)h(the)f(calls)i(to)f(the)g(CFITSIO)d(routines)j(that)g (explicitly)h(read)e(and)g(write)227 4494 y(the)31 b(data.)136 -4689 y Fc(\017)46 b Fi(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro) +4689 y Fd(\017)46 b Fj(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro) s(cessed)f(as)h(e\016cien)m(tly)h(as)e(p)s(ossible.)44 b(This)31 b(is)g(esp)s(ecially)i(imp)s(ortan)m(t)227 4801 y(when)44 b(pro)s(cessing)g(tabular)h(data)h(since)f(the)g @@ -8129,7 +10206,7 @@ 227 4914 y(n)m(um)m(b)s(er)36 b(of)i(ro)m(ws)g(in)f(the)h(table)g(to)g (b)s(e)f(passed)g(at)i(one)e(time)i(to)f(the)g(user's)e(w)m(ork)i (function)f(on)h(eac)m(h)227 5027 y(iteration.)136 5222 -y Fc(\017)46 b Fi(Mak)m(es)39 b(it)e(p)s(ossible)g(for)g(larger)h(pro)5 +y Fd(\017)46 b Fj(Mak)m(es)39 b(it)e(p)s(ossible)g(for)g(larger)h(pro)5 b(jects)37 b(to)h(dev)m(elop)g(a)g(library)e(of)i(w)m(ork)f(functions)f (that)i(all)g(ha)m(v)m(e)h(a)227 5335 y(uniform)29 b(calling)j (sequence)f(and)f(are)h(all)g(indep)s(enden)m(t)e(of)i(the)f(details)i @@ -8141,9 +10218,9 @@ b(One)25 b(of)h(these)g(parameters)1905 5942 y(77)p eop end %%Page: 78 84 -TeXDict begin 78 83 bop 0 299 a Fi(78)1455 b Fg(CHAPTER)30 +TeXDict begin 78 83 bop 0 299 a Fj(78)1455 b Fh(CHAPTER)30 b(7.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 -555 y Fi(is)f(a)g(structure)g(con)m(taining)i(p)s(oin)m(ters)d(to)i +555 y Fj(is)f(a)g(structure)g(con)m(taining)i(p)s(oin)m(ters)d(to)i (the)f(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)e(can)i(p)s (erform)d(an)m(y)i(desired)0 668 y(op)s(erations)k(on)h(these)f(arra)m (ys)h(and)e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g @@ -8161,13 +10238,13 @@ 874 1440 28 4 v 33 w(a.f,)g(iter)p 1197 1440 V 34 w(b.f)f(and)f(iter)p 1677 1440 V 34 w(c.f)h(example)h(programs.)p eop end %%Page: 79 85 -TeXDict begin 79 84 bop 0 1225 a Ff(Chapter)65 b(8)0 -1687 y Fl(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0 -2216 y Fd(8.1)135 b(Ov)l(erview)0 2466 y Fi(CFITSIO)30 +TeXDict begin 79 84 bop 0 1225 a Fg(Chapter)65 b(8)0 +1687 y Fm(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0 +2216 y Fe(8.1)135 b(Ov)l(erview)0 2466 y Fj(CFITSIO)30 b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f(sp)s(ecifying)g(the) h(name)f(of)h(the)g(data)g(\014le)f(to)h(b)s(e)f(op)s(ened)g(or)0 2579 y(created)g(that)g(includes)f(the)h(follo)m(wing)h(features:)136 -2813 y Fc(\017)46 b Fi(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g +2813 y Fd(\017)46 b Fj(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g (images)g(whic)m(h)f(ha)m(v)m(e)i(header)e(\014le)h(names)f(that)h(end) f(with)g(the)227 2926 y('.imh')d(extension,)i(as)e(w)m(ell)g(as)g (reading)f(and)g(writing)g(FITS)g(\014les,)i(This)e(feature)h(is)f @@ -8179,35 +10256,35 @@ 3265 y(the)31 b(image)g(header)f(or)h(data.)41 b(Similarly)-8 b(,)31 b(ra)m(w)f(binary)g(data)h(arra)m(ys)f(can)h(b)s(e)f(read)g(b)m (y)g(con)m(v)m(erting)i(them)227 3378 y(on)f(the)f(\015y)g(in)m(to)h -(virtual)g(FITS)f(images.)136 3557 y Fc(\017)46 b Fi(FITS)37 +(virtual)g(FITS)f(images.)136 3557 y Fd(\017)46 b Fj(FITS)37 b(\014les)g(on)g(the)g(In)m(ternet)h(can)f(b)s(e)g(read)g(\(and)g (sometimes)h(written\))f(using)g(the)g(FTP)-8 b(,)38 b(HTTP)-8 b(,)37 b(or)227 3670 y(R)m(OOT)30 b(proto)s(cols.)136 -3849 y Fc(\017)46 b Fi(FITS)30 b(\014les)g(can)h(b)s(e)f(pip)s(ed)f(b)s +3849 y Fd(\017)46 b Fj(FITS)30 b(\014les)g(can)h(b)s(e)f(pip)s(ed)f(b)s (et)m(w)m(een)i(tasks)f(on)h(the)f(stdin)g(and)g(stdout)g(streams.)136 -4028 y Fc(\017)46 b Fi(FITS)20 b(\014les)h(can)g(b)s(e)f(read)g(and)g +4028 y Fd(\017)46 b Fj(FITS)20 b(\014les)h(can)g(b)s(e)f(read)g(and)g (written)h(in)f(shared)g(memory)-8 b(.)38 b(This)20 b(can)h(p)s(oten)m (tially)h(ac)m(hiev)m(e)h(m)m(uc)m(h)e(b)s(etter)227 4141 y(data)26 b(I/O)e(p)s(erformance)g(compared)h(to)h(reading)f(and)f (writing)g(the)h(same)h(FITS)e(\014les)g(on)h(magnetic)h(disk.)136 -4320 y Fc(\017)46 b Fi(Compressed)30 b(FITS)f(\014les)i(in)f(gzip)h(or) +4320 y Fd(\017)46 b Fj(Compressed)30 b(FITS)f(\014les)i(in)f(gzip)h(or) f(Unix)g(COMPRESS)f(format)h(can)h(b)s(e)f(directly)h(read.)136 -4499 y Fc(\017)46 b Fi(Output)28 b(FITS)h(\014les)g(can)g(b)s(e)g +4499 y Fd(\017)46 b Fj(Output)28 b(FITS)h(\014les)g(can)g(b)s(e)g (written)g(directly)h(in)e(compressed)h(gzip)h(format,)g(th)m(us)e(sa)m -(ving)i(disk)f(space.)136 4678 y Fc(\017)46 b Fi(FITS)26 +(ving)i(disk)f(space.)136 4678 y Fd(\017)46 b Fj(FITS)26 b(table)h(columns)f(can)h(b)s(e)f(created,)i(mo)s(di\014ed,)f(or)f (deleted)h('on-the-\015y')g(as)g(the)g(table)g(is)f(op)s(ened)g(b)m(y) 227 4791 y(CFITSIO.)32 b(This)h(creates)i(a)e(virtual)h(FITS)f(\014le)g (con)m(taining)i(the)f(mo)s(di\014cations)f(that)h(is)g(then)f(op)s (ened)227 4904 y(b)m(y)e(the)f(application)i(program.)136 -5083 y Fc(\017)46 b Fi(T)-8 b(able)29 b(ro)m(ws)e(ma)m(y)i(b)s(e)e +5083 y Fd(\017)46 b Fj(T)-8 b(able)29 b(ro)m(ws)e(ma)m(y)i(b)s(e)e (selected,)j(or)e(\014ltered)g(out,)g(on)g(the)g(\015y)f(when)g(the)h (table)h(is)f(op)s(ened)f(b)m(y)g(CFITSIO,)227 5196 y(based)f(on)h(an)f (arbitrary)h(user-sp)s(eci\014ed)e(expression.)39 b(Only)26 b(ro)m(ws)h(for)f(whic)m(h)g(the)h(expression)f(ev)-5 b(aluates)227 5309 y(to)31 b('TR)m(UE')g(are)g(retained)g(in)f(the)g (cop)m(y)i(of)e(the)h(table)g(that)g(is)f(op)s(ened)g(b)m(y)g(the)h -(application)g(program.)136 5488 y Fc(\017)46 b Fi(Histogram)28 +(application)g(program.)136 5488 y Fd(\017)46 b Fj(Histogram)28 b(images)g(ma)m(y)f(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g (binning)g(the)g(v)-5 b(alues)27 b(in)f(table)i(columns,)f(resulting) 227 5601 y(in)36 b(a)g(virtual)h(N-dimensional)f(FITS)g(image.)59 @@ -8216,9 +10293,9 @@ (the)f(original)i(FITS)d(table.)1905 5942 y(79)p eop end %%Page: 80 86 -TeXDict begin 80 85 bop 0 299 a Fi(80)1618 b Fg(CHAPTER)30 +TeXDict begin 80 85 bop 0 299 a Fj(80)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(The)43 b(latter)i(3)f(features)g(in)f(particular)h(add)f(v)m +555 y Fj(The)43 b(latter)i(3)f(features)g(in)f(particular)h(add)f(v)m (ery)h(p)s(o)m(w)m(erful)f(data)h(pro)s(cessing)f(capabilities)j (directly)e(in)m(to)0 668 y(CFITSIO,)29 b(and)g(hence)h(in)m(to)h(ev)m (ery)f(task)h(that)f(uses)g(CFITSIO)e(to)j(read)f(or)g(write)g(FITS)f @@ -8243,72 +10320,72 @@ (names)g(in)g(the)h(next)g(section,)h(here)0 1732 y(are)c(a)g(few)f (examples)h(of)f(FITS)g(\014le)g(names)h(that)f(giv)m(e)i(a)f(quic)m(k) g(o)m(v)m(erview)h(of)f(the)f(allo)m(w)m(ed)i(syn)m(tax:)136 -1960 y Fc(\017)46 b Fe('myfile.fits')p Fi(:)37 b(the)31 +1960 y Fd(\017)46 b Ff('myfile.fits')p Fj(:)37 b(the)31 b(simplest)f(case)i(of)e(a)h(FITS)f(\014le)g(on)h(disk)e(in)i(the)f -(curren)m(t)g(directory)-8 b(.)136 2137 y Fc(\017)46 -b Fe('myfile.imh')p Fi(:)37 b(op)s(ens)28 b(an)h(IRAF)g(format)g(image) +(curren)m(t)g(directory)-8 b(.)136 2137 y Fd(\017)46 +b Ff('myfile.imh')p Fj(:)37 b(op)s(ens)28 b(an)h(IRAF)g(format)g(image) i(\014le)e(and)f(con)m(v)m(erts)i(it)g(on)f(the)g(\015y)f(in)m(to)i(a)f (temp)s(orary)227 2250 y(FITS)h(format)h(image)g(in)f(memory)h(whic)m (h)f(can)g(then)g(b)s(e)g(read)g(with)g(an)m(y)h(other)g(CFITSIO)e -(routine.)136 2427 y Fc(\017)46 b Fe(rawfile.dat[i512,512])p -Fi(:)35 b(op)s(ens)30 b(a)g(ra)m(w)h(binary)e(data)i(arra)m(y)g(\(a)g +(routine.)136 2427 y Fd(\017)46 b Ff(rawfile.dat[i512,512])p +Fj(:)35 b(op)s(ens)30 b(a)g(ra)m(w)h(binary)e(data)i(arra)m(y)g(\(a)g (512)g(x)f(512)i(short)e(in)m(teger)h(arra)m(y)g(in)227 2540 y(this)i(case\))i(and)d(con)m(v)m(erts)j(it)e(on)g(the)g(\015y)g (in)m(to)h(a)f(temp)s(orary)g(FITS)f(format)h(image)i(in)d(memory)h (whic)m(h)227 2652 y(can)e(then)f(b)s(e)g(read)g(with)g(an)m(y)h(other) -f(CFITSIO)f(routine.)136 2830 y Fc(\017)46 b Fe(myfile.fits.gz)p -Fi(:)d(if)33 b(this)g(is)g(the)g(name)g(of)h(a)f(new)g(output)g +f(CFITSIO)f(routine.)136 2830 y Fd(\017)46 b Ff(myfile.fits.gz)p +Fj(:)d(if)33 b(this)g(is)g(the)g(name)g(of)h(a)f(new)g(output)g (\014le,)h(the)f('.gz')i(su\016x)d(will)h(cause)h(it)g(to)g(b)s(e)227 2942 y(compressed)c(in)g(gzip)h(format)g(when)e(it)i(is)g(written)f(to) -h(disk.)136 3120 y Fc(\017)46 b Fe('myfile.fits.gz[events,)c(2]')p -Fi(:)59 b(op)s(ens)40 b(and)f(uncompresses)g(the)i(gzipp)s(ed)e(\014le) +h(disk.)136 3120 y Fd(\017)46 b Ff('myfile.fits.gz[events,)c(2]')p +Fj(:)59 b(op)s(ens)40 b(and)f(uncompresses)g(the)i(gzipp)s(ed)e(\014le) i(m)m(y\014le.\014ts)f(then)227 3232 y(mo)m(v)m(es)34 b(to)f(the)f(extension)h(whic)m(h)f(has)f(the)i(k)m(eyw)m(ords)f (EXTNAME)g(=)g('EVENTS')g(and)g(EXTVER)f(=)227 3345 y(2.)136 -3522 y Fc(\017)46 b Fe('-')p Fi(:)40 b(a)31 b(dash)f(\(min)m(us)g +3522 y Fd(\017)46 b Ff('-')p Fj(:)40 b(a)31 b(dash)f(\(min)m(us)g (sign\))h(signi\014es)f(that)h(the)g(input)f(\014le)g(is)h(to)g(b)s(e)f (read)g(from)g(the)h(stdin)f(\014le)g(stream,)227 3635 y(or)h(that)g(the)f(output)g(\014le)h(is)f(to)h(b)s(e)f(written)g(to)h -(the)g(stdout)f(stream.)136 3812 y Fc(\017)46 b Fe +(the)g(stdout)f(stream.)136 3812 y Fd(\017)46 b Ff ('ftp://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o(a.fi)o(ts')p -Fi(:)33 b(FITS)28 b(\014les)g(in)g(an)m(y)g(ftp)g(arc)m(hiv)m(e)i(site) +Fj(:)33 b(FITS)28 b(\014les)g(in)g(an)m(y)g(ftp)g(arc)m(hiv)m(e)i(site) f(on)f(the)227 3925 y(In)m(ternet)j(ma)m(y)g(b)s(e)f(directly)h(op)s -(ened)e(with)h(read-only)h(access.)136 4102 y Fc(\017)46 -b Fe('http://legacy.gsfc.nasa.)o(gov/)o(soft)o(war)o(e/te)o(st.f)o(its) -o(')p Fi(:)d(an)m(y)34 b(v)-5 b(alid)35 b(URL)f(to)h(a)f(FITS)g(\014le) +(ened)e(with)h(read-only)h(access.)136 4102 y Fd(\017)46 +b Ff('http://legacy.gsfc.nasa.)o(gov/)o(soft)o(war)o(e/te)o(st.f)o(its) +o(')p Fj(:)d(an)m(y)34 b(v)-5 b(alid)35 b(URL)f(to)h(a)f(FITS)g(\014le) g(on)227 4215 y(the)d(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)f(with) -h(read-only)h(access.)136 4392 y Fc(\017)46 b Fe +h(read-only)h(access.)136 4392 y Fd(\017)46 b Ff ('root://legacy.gsfc.nasa.)o(gov/)o(test)o(/ve)o(la.f)o(its')o -Fi(:)32 b(similar)24 b(to)g(ftp)f(access)i(except)g(that)f(it)g(pro-) +Fj(:)32 b(similar)24 b(to)g(ftp)f(access)i(except)g(that)f(it)g(pro-) 227 4505 y(vides)30 b(write)h(as)f(w)m(ell)h(as)g(read)f(access)h(to)g (the)f(\014les)h(across)f(the)h(net)m(w)m(ork.)41 b(This)29 b(uses)h(the)h(ro)s(ot)f(proto)s(col)227 4618 y(dev)m(elop)s(ed)h(at)g -(CERN.)136 4795 y Fc(\017)46 b Fe('shmem://h2[events]')p -Fi(:)35 b(op)s(ens)30 b(the)g(FITS)f(\014le)i(in)f(a)g(shared)f(memory) +(CERN.)136 4795 y Fd(\017)46 b Ff('shmem://h2[events]')p +Fj(:)35 b(op)s(ens)30 b(the)g(FITS)f(\014le)i(in)f(a)g(shared)f(memory) i(segmen)m(t)g(and)e(mo)m(v)m(es)j(to)f(the)227 4908 -y(EVENTS)f(extension.)136 5085 y Fc(\017)46 b Fe('mem://')p -Fi(:)52 b(creates)39 b(a)e(scratc)m(h)i(output)d(\014le)i(in)e(core)i +y(EVENTS)f(extension.)136 5085 y Fd(\017)46 b Ff('mem://')p +Fj(:)52 b(creates)39 b(a)e(scratc)m(h)i(output)d(\014le)i(in)e(core)i (computer)f(memory)-8 b(.)62 b(The)37 b(resulting)g('\014le')h(will)227 5198 y(disapp)s(ear)25 b(when)f(the)i(program)f(exits,)i(so)f(this)f (is)h(mainly)f(useful)g(for)g(testing)i(purp)s(oses)c(when)i(one)g(do)s (es)227 5311 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h -(of)f(the)h(output)f(\014le.)136 5488 y Fc(\017)46 b -Fe('myfile.fits[3;)e(Images\(10\)]')p Fi(:)49 b(op)s(ens)35 +(of)f(the)h(output)f(\014le.)136 5488 y Fd(\017)46 b +Ff('myfile.fits[3;)e(Images\(10\)]')p Fj(:)49 b(op)s(ens)35 b(a)i(cop)m(y)g(of)f(the)g(image)i(con)m(tained)f(in)f(the)h(10th)f(ro) m(w)h(of)227 5601 y(the)26 b('Images')i(column)d(in)h(the)g(binary)g (table)g(in)g(the)g(3th)h(extension)f(of)g(the)h(FITS)e(\014le.)39 b(The)26 b(application)227 5714 y(just)k(sees)h(this)f(single)h(image)h (as)e(the)h(primary)e(arra)m(y)-8 b(.)p eop end %%Page: 81 87 -TeXDict begin 81 86 bop 0 299 a Fg(8.1.)72 b(O)m(VER)-10 -b(VIEW)3086 b Fi(81)136 555 y Fc(\017)46 b Fe('myfile.fits[1:512:2,)c -(1:512:2]')p Fi(:)49 b(op)s(ens)35 b(a)h(section)h(of)e(the)h(input)f +TeXDict begin 81 86 bop 0 299 a Fh(8.1.)72 b(O)m(VER)-10 +b(VIEW)3086 b Fj(81)136 555 y Fd(\017)46 b Ff('myfile.fits[1:512:2,)c +(1:512:2]')p Fj(:)49 b(op)s(ens)35 b(a)h(section)h(of)e(the)h(input)f (image)i(ranging)f(from)f(the)227 668 y(1st)26 b(to)g(the)f(512th)h (pixel)g(in)e(X)i(and)e(Y,)i(and)e(selects)j(ev)m(ery)e(second)h(pixel) f(in)g(b)s(oth)f(dimensions,)i(resulting)227 781 y(in)k(a)h(256)h(x)e -(256)i(pixel)e(image)i(in)e(this)g(case.)136 981 y Fc(\017)46 -b Fe('myfile.fits[EVENTS][col)41 b(Rad)47 b(=)h(sqrt\(X**2)d(+)j -(Y**2\)]')p Fi(:)38 b(creates)30 b(and)f(op)s(ens)f(a)h(temp)s(orary) +(256)i(pixel)e(image)i(in)e(this)g(case.)136 981 y Fd(\017)46 +b Ff('myfile.fits[EVENTS][col)41 b(Rad)47 b(=)h(sqrt\(X**2)d(+)j +(Y**2\)]')p Fj(:)38 b(creates)30 b(and)f(op)s(ens)f(a)h(temp)s(orary) 227 1094 y(\014le)f(on)f(the)g(\015y)g(\(in)g(memory)g(or)g(on)h (disk\))f(that)g(is)h(iden)m(tical)h(to)f(m)m(y\014le.\014ts)f(except)h (that)g(it)g(will)g(con)m(tain)227 1207 y(a)41 b(new)f(column)g(in)h @@ -8316,8 +10393,8 @@ b(alue)41 b(is)f(computed)h(using)f(the)227 1320 y(indicated)31 b(expression)f(whic)m(h)g(is)h(a)g(function)f(of)g(the)h(v)-5 b(alues)30 b(in)h(the)f(X)h(and)e(Y)i(columns.)136 1520 -y Fc(\017)46 b Fe('myfile.fits[EVENTS][PHA)41 b(>)48 -b(5]')p Fi(:)37 b(creates)27 b(and)e(op)s(ens)g(a)h(temp)s(orary)f +y Fd(\017)46 b Ff('myfile.fits[EVENTS][PHA)41 b(>)48 +b(5]')p Fj(:)37 b(creates)27 b(and)e(op)s(ens)g(a)h(temp)s(orary)f (FITS)g(\014les)g(that)h(is)g(iden)m(ti-)227 1633 y(cal)k(to)g('m)m (y\014le.\014ts')f(except)h(that)f(the)g(EVENTS)f(table)i(will)f(only)g (con)m(tain)h(the)f(ro)m(ws)g(that)h(ha)m(v)m(e)g(v)-5 @@ -8326,8 +10403,8 @@ (using)g(a)h(C)f(or)227 1859 y(F)-8 b(ortran-lik)m(e)31 b(syn)m(tax,)e(whic)m(h)f(ma)m(y)h(com)m(bine)g(AND)g(and)f(OR)f(op)s (erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)h(ro)m(ws)227 -1972 y(from)g(a)h(table.)136 2172 y Fc(\017)46 b Fe -('myfile.fits[EVENTS][bin)41 b(\(X,Y\)=1,2048,4]')p Fi(:)46 +1972 y(from)g(a)h(table.)136 2172 y Fd(\017)46 b Ff +('myfile.fits[EVENTS][bin)41 b(\(X,Y\)=1,2048,4]')p Fj(:)46 b(creates)37 b(a)e(temp)s(orary)g(FITS)f(primary)g(arra)m(y)227 2285 y(image)c(whic)m(h)f(is)g(computed)f(on)h(the)g(\015y)f(b)m(y)g (binning)g(\(i.e,)j(computing)d(the)h(2-dimensional)h(histogram\))227 @@ -8336,14 +10413,14 @@ (and)f(Y)227 2511 y(co)s(ordinates)h(range)g(from)f(1)h(to)g(2048)h (and)e(the)h(image)g(pixel)g(size)g(is)g(4)f(units)g(in)g(b)s(oth)g (dimensions,)h(so)227 2624 y(the)d(resulting)f(image)i(is)e(512)i(x)e -(512)i(pixels)f(in)f(size.)136 2824 y Fc(\017)46 b Fi(The)31 +(512)i(pixels)f(in)f(size.)136 2824 y Fd(\017)46 b Fj(The)31 b(\014nal)g(example)i(com)m(bines)f(man)m(y)f(of)h(these)g(feature)g (in)m(to)g(one)g(complex)g(expression)f(\(it)i(is)e(brok)m(en)227 2937 y(in)m(to)h(sev)m(eral)f(lines)g(for)f(clarit)m(y\):)323 -3206 y Fe('ftp://legacy.gsfc.nasa)o(.gov)o(/dat)o(a/s)o(ampl)o(e.fi)o +3206 y Ff('ftp://legacy.gsfc.nasa)o(.gov)o(/dat)o(a/s)o(ampl)o(e.fi)o (ts.)o(gz[E)o(VENT)o(S])370 3319 y([col)47 b(phacorr)f(=)h(pha)g(*)h (1.1)f(-)g(0.3][phacorr)e(>=)i(5.0)g(&&)g(phacorr)f(<=)h(14.0])370 -3432 y([bin)g(\(X,Y\)=32]')227 3701 y Fi(In)37 b(this)h(case,)j +3432 y([bin)g(\(X,Y\)=32]')227 3701 y Fj(In)37 b(this)h(case,)j (CFITSIO)36 b(\(1\))j(copies)g(and)e(uncompresses)g(the)h(FITS)f (\014le)h(from)f(the)h(ftp)f(site)i(on)f(the)227 3814 y(legacy)g(mac)m(hine,)h(\(2\))e(mo)m(v)m(es)g(to)g(the)g('EVENTS')f @@ -8360,7 +10437,7 @@ (FITS)h(\014le)h(name)g(can)g(con)m(tain)h(sev)m(eral)g(di\013eren)m(t) g(comp)s(onen)m(ts)f(dep)s(ending)e(on)0 4651 y(the)31 b(con)m(text.)42 b(These)30 b(comp)s(onen)m(ts)h(are)g(describ)s(ed)e -(in)h(the)g(follo)m(wing)i(sections:)0 4924 y Fe(When)47 +(in)h(the)g(follo)m(wing)i(sections:)0 4924 y Ff(When)47 b(creating)e(a)j(new)f(file:)143 5036 y(filetype://BaseFilename\(t)o (empl)o(ate)o(Name)o(\))0 5262 y(When)g(opening)e(an)j(existing)d (primary)h(array)g(or)i(image)e(HDU:)143 5375 y @@ -8370,9 +10447,9 @@ (loca)o(tio)o(n][c)o(olFi)o(lte)o(r][r)o(owFi)o(lte)o(r][b)o(inSp)o (ec])p eop end %%Page: 82 88 -TeXDict begin 82 87 bop 0 299 a Fi(82)1618 b Fg(CHAPTER)30 +TeXDict begin 82 87 bop 0 299 a Fj(82)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(The)41 b(\014let)m(yp)s(e,)k(BaseFilename,)i(outName,)e(HDUlo) +555 y Fj(The)41 b(\014let)m(yp)s(e,)k(BaseFilename,)i(outName,)e(HDUlo) s(cation,)i(and)41 b(ImageSection)i(comp)s(onen)m(ts,)i(if)d(presen)m (t,)0 668 y(m)m(ust)30 b(b)s(e)g(giv)m(en)i(in)e(that)h(order,)g(but)f (the)g(colFilter,)j(ro)m(wFilter,)g(and)c(binSp)s(ec)h(sp)s(eci\014ers) @@ -8381,136 +10458,145 @@ (colFilter)h(sp)s(eci\014er,)e(if)g(presen)m(t,)h(will)g(b)s(e)e(pro)s (cessed)h(\014rst)f(b)m(y)0 894 y(CFITSIO,)i(follo)m(w)m(ed)j(b)m(y)e (the)h(ro)m(wFilter)h(sp)s(eci\014er,)e(and)f(\014nally)i(b)m(y)f(the)g -(binSp)s(ec)f(sp)s(eci\014er.)0 1253 y Fd(8.2)135 b(Filet)l(yp)t(e)0 -1508 y Fi(The)37 b(t)m(yp)s(e)g(of)g(\014le)g(determines)g(the)g -(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s(cated)g(\(e.g.,)i -(disk)d(or)g(net)m(w)m(ork\))h(and,)0 1621 y(hence,)f(whic)m(h)e(in)m -(ternal)h(device)g(driv)m(er)f(is)g(used)f(b)m(y)h(CFITSIO)f(to)i(read) -f(and/or)g(write)g(the)g(\014le.)56 b(Curren)m(tly)0 -1734 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 2015 y -Fe(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g -(\(default\))382 2128 y(ftp://)141 b(-)48 b(a)f(readonly)f(file)g +(binSp)s(ec)f(sp)s(eci\014er.)0 1054 y(Multiple)40 b(colFilter)i(or)e +(ro)m(wFilter)h(sp)s(eci\014cations)f(ma)m(y)g(app)s(ear)f(as)h +(separated)g(brac)m(k)m(eted)h(expressions,)h(in)0 1167 +y(an)m(y)c(order.)62 b(Multiple)39 b(colFilter)h(or)d(ro)m(wFilter)i +(expressions)f(are)g(treated)g(in)m(ternally)h(as)f(a)g(single)g +(e\013ectiv)m(e)0 1280 y(expression,)30 b(with)f(order)h(of)g(op)s +(erations)g(determined)f(from)h(left)g(to)h(righ)m(t.)41 +b(CFITSIO)28 b(do)s(es)i(not)g(supp)s(ort)e(the)0 1393 +y(@\014lename.txt)j(complex)g(syn)m(tax)g(option)g(if)f(m)m(ultiple)h +(expressions)f(are)h(also)h(used.)0 1719 y Fe(8.2)135 +b(Filet)l(yp)t(e)0 1969 y Fj(The)37 b(t)m(yp)s(e)g(of)g(\014le)g +(determines)g(the)g(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s +(cated)g(\(e.g.,)i(disk)d(or)g(net)m(w)m(ork\))h(and,)0 +2082 y(hence,)f(whic)m(h)e(in)m(ternal)h(device)g(driv)m(er)f(is)g +(used)f(b)m(y)h(CFITSIO)f(to)i(read)f(and/or)g(write)g(the)g(\014le.)56 +b(Curren)m(tly)0 2195 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 +2405 y Ff(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g +(\(default\))382 2518 y(ftp://)141 b(-)48 b(a)f(readonly)f(file)g (accessed)g(with)h(the)g(anonymous)e(FTP)i(protocol.)907 -2241 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam) -o(e/..)o(.)907 2354 y(for)47 b(accessing)e(password-protected)e(ftp)k -(sites.)382 2467 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g -(with)h(the)g(HTTP)f(protocol.)93 b(It)907 2579 y(supports)45 +2631 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam) +o(e/..)o(.)907 2744 y(for)47 b(accessing)e(password-protected)e(ftp)k +(sites.)382 2857 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g +(with)h(the)g(HTTP)f(protocol.)93 b(It)907 2969 y(supports)45 b(username:password)e(just)k(like)g(the)g(ftp)g(driver.)907 -2692 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h -(http_proxy)907 2805 y(environment)e(variable)g(\(see)i(following)e -(note\).)286 2918 y(stream://)93 b(-)48 b(special)e(driver)g(to)h(read) -g(an)g(input)f(FITS)h(file)f(from)h(the)g(stdin)907 3031 +3082 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h +(http_proxy)907 3195 y(environment)e(variable)g(\(see)i(following)e +(note\).)286 3308 y(stream://)93 b(-)48 b(special)e(driver)g(to)h(read) +g(an)g(input)f(FITS)h(file)f(from)h(the)g(stdin)907 3421 y(stream,)f(and/or)g(write)g(an)h(output)f(FITS)h(file)g(to)g(the)g -(stdout)143 3144 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and)i -(has)g(limited)143 3257 y(functionality)d(\(see)j(the)g(following)e -(note\).)286 3370 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h -(computational)c(grid)j(using)f(the)h(gridftp)907 3483 +(stdout)143 3534 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and)i +(has)g(limited)143 3647 y(functionality)d(\(see)j(the)g(following)e +(note\).)286 3760 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h +(computational)c(grid)j(using)f(the)h(gridftp)907 3873 y(protocol)e(in)j(the)e(Globus)h(toolkit)e(\(see)i(following)e(note\).) -382 3596 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e -(for)i(writing)f(as)h(well)g(as)907 3709 y(reading)f(files)g(over)h -(the)g(network.)382 3821 y(shmem://)e(-)j(opens)e(or)h(creates)f(a)i +382 3986 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e +(for)i(writing)f(as)h(well)g(as)907 4099 y(reading)f(files)g(over)h +(the)g(network.)382 4212 y(shmem://)e(-)j(opens)e(or)h(creates)f(a)i (file)e(which)h(persists)e(in)i(the)g(computer's)907 -3934 y(shared)f(memory.)382 4047 y(mem://)141 b(-)48 +4324 y(shared)f(memory.)382 4437 y(mem://)141 b(-)48 b(opens)e(a)i(temporary)d(file)i(in)g(core)f(memory.)94 -b(The)47 b(file)907 4160 y(disappears)e(when)h(the)h(program)f(exits)h -(so)g(this)f(is)i(mainly)907 4273 y(useful)e(for)h(test)f(purposes)g -(when)h(a)g(permanent)e(output)h(file)907 4386 y(is)h(not)g(desired.)0 -4667 y Fi(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h +b(The)47 b(file)907 4550 y(disappears)e(when)h(the)h(program)f(exits)h +(so)g(this)f(is)i(mainly)907 4663 y(useful)e(for)h(test)f(purposes)g +(when)h(a)g(permanent)e(output)h(file)907 4776 y(is)h(not)g(desired.)0 +4986 y Fj(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h (then)e(t)m(yp)s(e)h(\014le://)h(is)e(assumed.)56 b(The)35 -b(double)g(slashes)h('//')h(are)f(optional)0 4780 y(and)30 -b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)0 5096 -y Fb(8.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m(ers)0 -5320 y Fi(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e(used)g +b(double)g(slashes)h('//')h(are)f(optional)0 5099 y(and)30 +b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)0 5382 +y Fc(8.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m(ers)0 +5601 y Fj(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e(used)g (b)m(y)h(de\014ning)f(the)h(address)f(\(URL\))i(and)e(p)s(ort)g(n)m(um) -m(b)s(er)g(of)h(the)g(pro)m(xy)0 5433 y(serv)m(er)f(with)f(the)g(h)m -(ttp)p 801 5433 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5 -b(ariable.)42 b(F)-8 b(or)31 b(example)191 5714 y Fe(setenv)46 -b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)p -eop end +m(b)s(er)g(of)h(the)g(pro)m(xy)0 5714 y(serv)m(er)f(with)f(the)g(h)m +(ttp)p 801 5714 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5 +b(ariable.)42 b(F)-8 b(or)31 b(example)p eop end %%Page: 83 89 -TeXDict begin 83 88 bop 0 299 a Fg(8.2.)72 b(FILETYPE)3128 -b Fi(83)0 555 y(will)38 b(cause)g(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i -(on)f(the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)g(a) -g(FITS)f(\014le)0 668 y(with)30 b(HTTP)-8 b(.)0 987 y -Fb(8.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(stream)h(\014let)m(yp)s(e)g -(driv)m(er)0 1212 y Fi(The)e(stream)h(driv)m(er)f(can)h(b)s(e)f(used)g -(to)h(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h(from)f(the)h(stdin)f -(\014le)g(stream)h(or)g(write)0 1324 y(a)44 b(FITS)e(to)i(the)g(stdout) -f(\014le)g(stream.)80 b(Ho)m(w)m(ev)m(er,)49 b(b)s(ecause)43 -b(these)h(input)e(and)h(output)g(streams)g(m)m(ust)h(b)s(e)0 -1437 y(accessed)30 b(sequen)m(tially)-8 b(,)31 b(the)e(FITS)f(\014le)g -(reading)h(or)f(writing)h(application)h(m)m(ust)e(also)i(read)e(and)g -(write)h(the)g(\014le)0 1550 y(sequen)m(tially)-8 b(,)33 -b(at)e(least)g(within)f(the)h(tolerances)h(describ)s(ed)d(b)s(elo)m(w.) -0 1710 y(CFITSIO)34 b(supp)s(orts)f(2)j(di\013eren)m(t)f(metho)s(ds)g -(for)g(accessing)i(FITS)d(\014les)h(on)h(the)f(stdin)g(and)f(stdout)h -(streams.)0 1823 y(The)c(original)i(metho)s(d,)f(whic)m(h)f(is)h(in)m -(v)m(ok)m(ed)h(b)m(y)f(sp)s(ecifying)f(a)h(dash)f(c)m(haracter,)j("-",) -g(as)d(the)h(name)g(of)g(the)g(\014le)0 1936 y(when)g(op)s(ening)g(or)h -(creating)h(it,)g(w)m(orks)e(b)m(y)h(storing)g(a)g(complete)h(cop)m(y)g -(of)f(the)g(en)m(tire)g(FITS)f(\014le)h(in)f(memory)-8 -b(.)0 2049 y(In)35 b(this)g(case,)k(when)34 b(reading)i(from)f(stdin,)i -(CFITSIO)d(will)i(cop)m(y)h(the)e(en)m(tire)i(stream)f(in)m(to)h -(memory)e(b)s(efore)0 2162 y(doing)c(an)m(y)h(pro)s(cessing)f(of)h(the) -f(\014le.)44 b(Similarly)-8 b(,)32 b(when)f(writing)g(to)h(stdout,)g -(CFITSIO)d(will)j(create)h(a)f(cop)m(y)g(of)0 2275 y(the)h(en)m(tire)g -(FITS)f(\014le)g(in)h(memory)-8 b(,)33 b(b)s(efore)f(\014nally)h -(\015ushing)e(it)i(out)f(to)i(the)e(stdout)h(stream)g(when)e(the)i -(FITS)0 2388 y(\014le)g(is)g(closed.)49 b(Bu\013ering)33 -b(the)g(en)m(tire)h(FITS)e(\014le)h(in)g(this)f(w)m(a)m(y)i(allo)m(ws)g -(the)f(application)i(to)e(randomly)g(access)0 2501 y(an)m(y)h(part)f -(of)h(the)f(FITS)g(\014le,)i(in)e(an)m(y)h(order,)f(but)g(it)h(also)h -(requires)e(that)h(the)f(user)g(ha)m(v)m(e)i(su\016cien)m(t)f(a)m(v)-5 -b(ailable)0 2614 y(memory)30 b(\(or)g(virtual)g(memory\))g(to)h(store)f -(the)g(en)m(tire)h(\014le,)f(whic)m(h)f(ma)m(y)i(not)f(b)s(e)f(p)s -(ossible)g(in)h(the)g(case)h(of)f(v)m(ery)0 2727 y(large)h(\014les.)0 -2887 y(The)e(new)m(er)g(stream)h(\014let)m(yp)s(e)g(pro)m(vides)f(a)h +TeXDict begin 83 88 bop 0 299 a Fh(8.2.)72 b(FILETYPE)3128 +b Fj(83)191 555 y Ff(setenv)46 b(http_proxy)f(http://heasarc.gsfc.nasa) +o(.gov)o(:312)o(8)0 798 y Fj(will)38 b(cause)g(CFITSIO)f(to)h(use)g(p)s +(ort)f(3128)i(on)f(the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g +(reading)g(a)g(FITS)f(\014le)0 911 y(with)30 b(HTTP)-8 +b(.)0 1199 y Fc(8.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(stream)h +(\014let)m(yp)s(e)g(driv)m(er)0 1418 y Fj(The)e(stream)h(driv)m(er)f +(can)h(b)s(e)f(used)g(to)h(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h +(from)f(the)h(stdin)f(\014le)g(stream)h(or)g(write)0 +1531 y(a)44 b(FITS)e(to)i(the)g(stdout)f(\014le)g(stream.)80 +b(Ho)m(w)m(ev)m(er,)49 b(b)s(ecause)43 b(these)h(input)e(and)h(output)g +(streams)g(m)m(ust)h(b)s(e)0 1644 y(accessed)30 b(sequen)m(tially)-8 +b(,)31 b(the)e(FITS)f(\014le)g(reading)h(or)f(writing)h(application)h +(m)m(ust)e(also)i(read)e(and)g(write)h(the)g(\014le)0 +1757 y(sequen)m(tially)-8 b(,)33 b(at)e(least)g(within)f(the)h +(tolerances)h(describ)s(ed)d(b)s(elo)m(w.)0 1917 y(CFITSIO)34 +b(supp)s(orts)f(2)j(di\013eren)m(t)f(metho)s(ds)g(for)g(accessing)i +(FITS)d(\014les)h(on)h(the)f(stdin)g(and)f(stdout)h(streams.)0 +2030 y(The)c(original)i(metho)s(d,)f(whic)m(h)f(is)h(in)m(v)m(ok)m(ed)h +(b)m(y)f(sp)s(ecifying)f(a)h(dash)f(c)m(haracter,)j("-",)g(as)d(the)h +(name)g(of)g(the)g(\014le)0 2143 y(when)g(op)s(ening)g(or)h(creating)h +(it,)g(w)m(orks)e(b)m(y)h(storing)g(a)g(complete)h(cop)m(y)g(of)f(the)g +(en)m(tire)g(FITS)f(\014le)h(in)f(memory)-8 b(.)0 2256 +y(In)35 b(this)g(case,)k(when)34 b(reading)i(from)f(stdin,)i(CFITSIO)d +(will)i(cop)m(y)h(the)e(en)m(tire)i(stream)f(in)m(to)h(memory)e(b)s +(efore)0 2368 y(doing)c(an)m(y)h(pro)s(cessing)f(of)h(the)f(\014le.)44 +b(Similarly)-8 b(,)32 b(when)f(writing)g(to)h(stdout,)g(CFITSIO)d(will) +j(create)h(a)f(cop)m(y)g(of)0 2481 y(the)h(en)m(tire)g(FITS)f(\014le)g +(in)h(memory)-8 b(,)33 b(b)s(efore)f(\014nally)h(\015ushing)e(it)i(out) +f(to)i(the)e(stdout)h(stream)g(when)e(the)i(FITS)0 2594 +y(\014le)g(is)g(closed.)49 b(Bu\013ering)33 b(the)g(en)m(tire)h(FITS)e +(\014le)h(in)g(this)f(w)m(a)m(y)i(allo)m(ws)g(the)f(application)i(to)e +(randomly)g(access)0 2707 y(an)m(y)h(part)f(of)h(the)f(FITS)g(\014le,)i +(in)e(an)m(y)h(order,)f(but)g(it)h(also)h(requires)e(that)h(the)f(user) +g(ha)m(v)m(e)i(su\016cien)m(t)f(a)m(v)-5 b(ailable)0 +2820 y(memory)30 b(\(or)g(virtual)g(memory\))g(to)h(store)f(the)g(en)m +(tire)h(\014le,)f(whic)m(h)f(ma)m(y)i(not)f(b)s(e)f(p)s(ossible)g(in)h +(the)g(case)h(of)f(v)m(ery)0 2933 y(large)h(\014les.)0 +3093 y(The)e(new)m(er)g(stream)h(\014let)m(yp)s(e)g(pro)m(vides)f(a)h (more)f(memory-e\016cien)m(t)i(metho)s(d)e(of)h(accessing)h(FITS)d -(\014les)h(on)h(the)0 3000 y(stdin)37 b(or)h(stdout)g(streams.)64 +(\014les)h(on)h(the)0 3206 y(stdin)37 b(or)h(stdout)g(streams.)64 b(Instead)38 b(of)g(storing)g(a)g(cop)m(y)h(of)f(the)g(en)m(tire)h -(FITS)e(\014le)h(in)g(memory)-8 b(,)40 b(CFITSIO)0 3113 +(FITS)e(\014le)h(in)g(memory)-8 b(,)40 b(CFITSIO)0 3319 y(only)32 b(uses)g(a)g(set)h(of)f(in)m(ternal)h(bu\013er)e(whic)m(h)h (b)m(y)g(default)g(can)g(store)h(40)g(FITS)e(blo)s(c)m(ks,)i(or)g(ab)s -(out)e(100K)i(b)m(ytes)0 3225 y(of)f(the)f(FITS)g(\014le.)43 +(out)e(100K)i(b)m(ytes)0 3432 y(of)f(the)f(FITS)g(\014le.)43 b(The)31 b(application)i(program)e(m)m(ust)g(pro)s(cess)g(the)h(FITS)e -(\014le)i(sequen)m(tially)h(from)e(b)s(eginning)0 3338 +(\014le)i(sequen)m(tially)h(from)e(b)s(eginning)0 3545 y(to)h(end,)e(within)g(this)h(100K)h(bu\013er.)41 b(Generally)32 b(sp)s(eaking)f(the)g(application)h(program)f(m)m(ust)f(conform)h(to)h -(the)0 3451 y(follo)m(wing)g(restrictions:)136 3735 y -Fc(\017)46 b Fi(The)36 b(program)f(m)m(ust)h(\014nish)e(reading)i(or)g +(the)0 3658 y(follo)m(wing)g(restrictions:)136 3901 y +Fd(\017)46 b Fj(The)36 b(program)f(m)m(ust)h(\014nish)e(reading)i(or)g (writing)f(the)h(header)g(k)m(eyw)m(ords)g(b)s(efore)f(reading)h(or)g -(writing)227 3848 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136 -4060 y Fc(\017)46 b Fi(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h +(writing)227 4013 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136 +4195 y Fd(\017)46 b Fj(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h (ab)s(out)f(1400)h(header)f(k)m(eyw)m(ords.)39 b(This)24 -b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 4172 +b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 4308 y(in)g(the)g(nominal)h(40)g(FITS)e(blo)s(c)m(k)i(bu\013er.)37 b(In)24 b(principle,)h(this)f(limit)h(could)f(b)s(e)g(increased)g(b)m -(y)g(recompiling)227 4285 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e +(y)g(recompiling)227 4421 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e (limit,)j(whic)m(h)e(is)g(set)h(b)m(y)f(the)h(NIOBUF)g(parameter)g(in)f -(\014tsio2.h.)136 4497 y Fc(\017)46 b Fi(The)32 b(program)g(m)m(ust)f +(\014tsio2.h.)136 4603 y Fd(\017)46 b Fj(The)32 b(program)g(m)m(ust)f (read)h(or)g(write)h(the)f(data)g(in)g(a)g(sequen)m(tial)i(manner)d -(from)h(the)g(b)s(eginning)f(to)i(the)227 4610 y(end)26 +(from)h(the)g(b)s(eginning)f(to)i(the)227 4716 y(end)26 b(of)g(the)h(HDU.)g(Note)h(that)f(CFITSIO's)e(in)m(ternal)i(100K)g (bu\013er)e(allo)m(ws)j(a)e(little)j(latitude)e(in)f(meeting)227 -4723 y(this)31 b(requiremen)m(t.)136 4934 y Fc(\017)46 -b Fi(The)30 b(program)g(cannot)h(mo)m(v)m(e)h(bac)m(k)f(to)g(a)g -(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 5146 -y Fc(\017)46 b Fi(Reading)c(or)f(writing)f(of)h(v)-5 +4829 y(this)31 b(requiremen)m(t.)136 5011 y Fd(\017)46 +b Fj(The)30 b(program)g(cannot)h(mo)m(v)m(e)h(bac)m(k)f(to)g(a)g +(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 5193 +y Fd(\017)46 b Fj(Reading)c(or)f(writing)f(of)h(v)-5 b(ariable)42 b(length)f(arra)m(y)h(columns)e(in)h(binary)f(tables)i(is) -f(not)g(supp)s(orted)e(on)227 5259 y(streams,)29 b(b)s(ecause)f(this)g +f(not)g(supp)s(orted)e(on)227 5306 y(streams,)29 b(b)s(ecause)f(this)g (requires)g(mo)m(ving)g(bac)m(k)h(and)f(forth)f(b)s(et)m(w)m(een)i(the) -f(\014xed-length)g(p)s(ortion)g(of)g(the)227 5372 y(binary)i(table)h +f(\014xed-length)g(p)s(ortion)g(of)g(the)227 5419 y(binary)i(table)h (and)f(the)g(follo)m(wing)i(heap)e(area)i(where)e(the)g(arra)m(ys)h -(are)g(actually)h(stored.)136 5583 y Fc(\017)46 b Fi(Reading)25 +(are)g(actually)h(stored.)136 5601 y Fd(\017)46 b Fj(Reading)25 b(or)g(writing)f(of)h(tile-compressed)h(images)g(is)e(not)h(supp)s (orted)e(on)h(streams,)i(b)s(ecause)f(the)g(images)227 -5696 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5 +5714 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5 b(ariable)31 b(length)g(arra)m(ys.)p eop end %%Page: 84 90 -TeXDict begin 84 89 bop 0 299 a Fi(84)1618 b Fg(CHAPTER)30 +TeXDict begin 84 89 bop 0 299 a Fj(84)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fb(8.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(gsiftp)h(\014let)m(yp) -s(e)0 774 y Fi(DEPENDENCIES:)c(Globus)h(to)s(olkit)h(\(2.4.3)g(or)f +555 y Fc(8.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(gsiftp)h(\014let)m(yp) +s(e)0 774 y Fj(DEPENDENCIES:)c(Globus)h(to)s(olkit)h(\(2.4.3)g(or)f (higher\))f(\(GT\))h(should)f(b)s(e)g(installed.)53 b(There)34 b(are)h(t)m(w)m(o)h(dif-)0 887 y(feren)m(t)31 b(w)m(a)m(ys)g(to)g (install)g(GT:)0 1047 y(1\))43 b(goto)h(the)f(globus)f(to)s(olkit)i(w)m @@ -8552,19 +10638,19 @@ (ossible)e(to)i(mo)s(dify)e(this)i(b)s(eha)m(vior)f(setting)h(the)f (GSIFTP)p 2691 3392 V 33 w(STREAMS)f(en)m(vironmen)m(t)h(v)-5 b(ari-)0 3505 y(able)31 b(\(ex.)41 b(exp)s(ort)30 b(GSIFTP)p -1016 3505 V 33 w(STREAMS=8\).)0 3790 y Fb(8.2.4)112 b(Notes)37 +1016 3505 V 33 w(STREAMS=8\).)0 3790 y Fc(8.2.4)112 b(Notes)37 b(ab)s(out)i(the)e(ro)s(ot)g(\014let)m(yp)s(e)0 4009 -y Fi(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e(obtained) -h(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o(gz)15 -b Fi(but,)22 b(for)0 4122 y(it)33 b(to)h(w)m(ork)f(correctly)h(with)e +y Fj(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e(obtained) +h(from:)36 b Ff(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o(gz)15 +b Fj(but,)22 b(for)0 4122 y(it)33 b(to)h(w)m(ork)f(correctly)h(with)e (CFITSIO)g(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)d(v)m(ersion)j (whic)m(h)e(supp)s(orts)f(a)i(command)0 4235 y(to)41 b(return)d(the)j(length)f(of)g(the)g(\014le.)70 b(This)39 b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 b(ailable)42 b(in)e(ro)s(otd)f(sub)s(directory)g(in)h(the)0 4348 y(CFITSIO)29 -b(ftp)h(area)h(at)286 4577 y Fe(ftp://legacy.gsfc.nasa.gov)o(/so)o +b(ftp)h(area)h(at)286 4577 y Ff(ftp://legacy.gsfc.nasa.gov)o(/so)o (ftwa)o(re/f)o(its)o(io/c)o(/roo)o(t/r)o(ootd)o(.tar)o(.gz)o(.)0 -4805 y Fi(This)j(small)g(serv)m(er)h(is)g(started)f(either)h(b)m(y)g +4805 y Fj(This)j(small)g(serv)m(er)h(is)g(started)f(either)h(b)m(y)g (inetd)f(when)f(a)i(clien)m(t)h(requests)e(a)h(connection)h(to)f(a)f (ro)s(otd)h(serv)m(er)0 4918 y(or)30 b(b)m(y)g(hand)f(\(i.e.)42 b(from)30 b(the)g(command)g(line\).)42 b(The)29 b(ro)s(otd)h(serv)m(er) @@ -8575,32 +10661,32 @@ (\(whic)m(h)f(requires)g(ro)s(otd)g(to)h(b)s(e)f(started)h(as)f(ro)s (ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)h(inetd)f(add)g(the)0 5257 y(follo)m(wing)32 b(line)f(to)g(/etc/services:)95 -5485 y Fe(rootd)238 b(432/tcp)0 5714 y Fi(and)30 b(to)h +5485 y Ff(rootd)238 b(432/tcp)0 5714 y Fj(and)30 b(to)h (/etc/inetd.conf,)i(add)d(the)g(follo)m(wing)i(line:)p eop end %%Page: 85 91 -TeXDict begin 85 90 bop 0 299 a Fg(8.2.)72 b(FILETYPE)3128 -b Fi(85)95 555 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h +TeXDict begin 85 90 bop 0 299 a Fh(8.2.)72 b(FILETYPE)3128 +b Fj(85)95 555 y Ff(rootd)47 b(stream)f(tcp)h(nowait)f(root)h (/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 829 y -Fi(F)-8 b(orce)34 b(inetd)e(to)i(reread)e(its)h(conf)f(\014le)h(with)f +Fj(F)-8 b(orce)34 b(inetd)e(to)i(reread)e(its)h(conf)f(\014le)h(with)f ("kill)h(-HUP)g(".)47 b(Y)-8 b(ou)33 b(can)g(also)g(start) g(ro)s(otd)g(b)m(y)f(hand)0 942 y(running)j(directly)i(under)d(y)m(our) j(priv)-5 b(ate)37 b(accoun)m(t)g(\(no)g(ro)s(ot)g(system)f(privileges) h(needed\).)59 b(F)-8 b(or)37 b(example)g(to)0 1054 y(start)e(ro)s(otd) e(listening)i(on)f(p)s(ort)f(5151)j(just)d(t)m(yp)s(e:)49 -b Fe(rootd)d(-p)h(5151)33 b Fi(Notice:)50 b(no)34 b(&)f(is)h(needed.)51 +b Ff(rootd)d(-p)h(5151)33 b Fj(Notice:)50 b(no)34 b(&)f(is)h(needed.)51 b(Ro)s(otd)35 b(will)0 1167 y(go)c(in)m(to)h(bac)m(kground)e(b)m(y)g -(itself.)95 1441 y Fe(Rootd)47 b(arguments:)191 1554 +(itself.)95 1441 y Ff(Rootd)47 b(arguments:)191 1554 y(-i)763 b(says)47 b(we)g(were)f(started)g(by)h(inetd)191 1667 y(-p)g(port#)476 b(specifies)45 b(a)j(different)d(port)i(to)g (listen)f(on)191 1780 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h (written)e(to)j(syslog)1050 1893 y(0)f(=)h(no)f(debug)f(\(default\)) 1050 2005 y(1)h(=)h(minimum)1050 2118 y(2)f(=)h(medium)1050 -2231 y(3)f(=)h(maximum)0 2505 y Fi(Ro)s(otd)29 b(can)f(also)h(b)s(e)f +2231 y(3)f(=)h(maximum)0 2505 y Fj(Ro)s(otd)29 b(can)f(also)h(b)s(e)f (con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)h(anon)m(ymous)e (ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0 2618 y(anon)m(ymous)h(logins)h(do)g(the)f(follo)m(wing)i(\(while)f(b)s -(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2891 y Fe(-)48 +(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2891 y Ff(-)48 b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239 3117 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o (fals)o(e)239 3343 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h @@ -8618,9 +10704,9 @@ (/var/spool/rootd/pub)239 5714 y(chown)g(rootd:rootd)f (/var/spool/rootd/pub)p eop end %%Page: 86 92 -TeXDict begin 86 91 bop 0 299 a Fi(86)1618 b Fg(CHAPTER)30 +TeXDict begin 86 91 bop 0 299 a Fj(86)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(That's)42 b(all.)76 b(Sev)m(eral)43 b(additional)g(remarks:)64 +555 y Fj(That's)42 b(all.)76 b(Sev)m(eral)43 b(additional)g(remarks:)64 b(y)m(ou)42 b(can)g(login)h(to)g(an)f(anon)m(ymous)f(serv)m(er)i (either)f(with)g(the)0 668 y(names)31 b("anon)m(ymous")h(or)f("ro)s (otd".)43 b(The)31 b(passw)m(ord)f(should)g(b)s(e)h(of)g(t)m(yp)s(e)g @@ -8631,8 +10717,8 @@ (elo)m(w)f(the)h(home)f(directory)h(can)f(b)s(e)g(accessed.)60 b(Anon)m(ymous)36 b(mo)s(de)g(only)0 1007 y(w)m(orks)30 b(when)g(the)g(serv)m(er)h(is)f(started)h(via)g(inetd.)0 -1296 y Fb(8.2.5)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)i(\014let)m(yp) -s(e:)0 1515 y Fi(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly)g +1296 y Fc(8.2.5)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)i(\014let)m(yp) +s(e:)0 1515 y Fj(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly)g (supp)s(orted)e(on)i(most)h(Unix)f(platforms,)h(where)f(the)g(shared)f (memory)0 1627 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s (erating)h(system)g(k)m(ernel)f(and)g(`liv)m(e')i(indep)s(enden)m(tly)d @@ -8641,8 +10727,8 @@ (terminates,)h(although)g(they)f(will)0 1853 y(disapp)s(ear)e(if)h(the) h(system)f(is)g(reb)s(o)s(oted.)49 b(Applications)34 b(can)g(create)h(shared)d(memory)h(\014les)g(in)g(CFITSIO)f(b)m(y)0 -1966 y(calling:)143 2214 y Fe(fit_create_file\(&fitsfile)o(ptr,)41 -b("shmem://h2",)j(&status\);)0 2462 y Fi(where)25 b(the)g(ro)s(ot)h +1966 y(calling:)143 2214 y Ff(fit_create_file\(&fitsfile)o(ptr,)41 +b("shmem://h2",)j(&status\);)0 2462 y Fj(where)25 b(the)g(ro)s(ot)h (`\014le')f(names)h(are)f(curren)m(tly)g(restricted)h(to)g(b)s(e)f ('h0',)i('h1',)g('h2',)g('h3',)f(etc.,)i(up)d(to)g(a)h(maxim)m(um)0 2575 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5 @@ -8655,8 +10741,8 @@ (elop)s(ed)g(in)g(the)h(future.)0 2961 y(When)23 b(op)s(ening)h(an)f (already)h(existing)h(FITS)e(\014le)h(in)f(shared)g(memory)h(one)g (calls)g(the)g(usual)g(CFITSIO)e(routine:)143 3209 y -Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j -(&status\))0 3457 y Fi(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m +Ff(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j +(&status\))0 3457 y Fj(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m (WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)f(disk)h(\014les.)39 b(More)28 b(than)e(one)h(pro)s(cess)0 3570 y(can)35 b(op)s(erate)g(on)f (READONL)-8 b(Y)35 b(mo)s(de)f(\014les)h(at)g(the)f(same)h(time.)54 @@ -8688,18 +10774,18 @@ (and)e(managed)i(b)m(y)f(the)h(shared)e(memory)h(driv)m(er.)49 b(T)-8 b(o)34 b(get)g(a)g(list)g(of)f(all)h(the)g(shared)0 5019 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)g -(program)f(`ip)s(cs)h([-a]'.)0 5351 y Fd(8.3)135 b(Base)46 -b(Filename)0 5601 y Fi(The)31 b(base)g(\014lename)h(is)f(the)h(name)f +(program)f(`ip)s(cs)h([-a]'.)0 5351 y Fe(8.3)135 b(Base)46 +b(Filename)0 5601 y Fj(The)31 b(base)g(\014lename)h(is)f(the)h(name)f (of)h(the)f(\014le)h(optionally)g(including)f(the)h(director/sub)s (directory)f(path,)h(and)0 5714 y(in)e(the)h(case)g(of)g(`ftp',)f(`h)m (ttp',)i(and)d(`ro)s(ot')j(\014let)m(yp)s(es,)e(the)h(mac)m(hine)g (iden)m(ti\014er.)41 b(Examples:)p eop end %%Page: 87 93 -TeXDict begin 87 92 bop 0 299 a Fg(8.3.)72 b(BASE)30 -b(FILENAME)2830 b Fi(87)191 555 y Fe(myfile.fits)191 +TeXDict begin 87 92 bop 0 299 a Fh(8.3.)72 b(BASE)30 +b(FILENAME)2830 b Fj(87)191 555 y Ff(myfile.fits)191 668 y(!data.fits)191 781 y(/data/myfile.fits)191 894 y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o(eda)o(ta/m)o(yfil)o(e.f)o(its.)o -(gz)0 1120 y Fi(When)29 b(creating)h(a)f(new)f(output)h(\014le)g(on)g +(gz)0 1120 y Fj(When)29 b(creating)h(a)f(new)f(output)h(\014le)g(on)g (magnetic)h(disk)e(\(of)i(t)m(yp)s(e)f(\014le://\))h(if)f(the)g(base)g (\014lename)g(b)s(egins)f(with)0 1233 y(an)34 b(exclamation)j(p)s(oin)m (t)d(\(!\))54 b(then)34 b(an)m(y)g(existing)i(\014le)e(with)g(that)h @@ -8767,20 +10853,20 @@ (\014lename)g(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)j(The)0 4584 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))h (de\014nes)e(the)g(datat)m(yp)s(e)h(of)g(the)g(arra)m(y:)239 -4810 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 4923 +4810 y Ff(b)429 b(8-bit)46 b(unsigned)g(byte)239 4923 y(i)381 b(16-bit)46 b(signed)g(integer)239 5036 y(u)381 b(16-bit)46 b(unsigned)g(integer)239 5149 y(j)381 b(32-bit)46 b(signed)g(integer)239 5262 y(r)h(or)g(f)143 b(32-bit)46 b(floating)g(point)239 5375 y(d)381 b(64-bit)46 b(floating)g(point)0 -5601 y Fi(An)40 b(optional)h(second)f(c)m(haracter)i(sp)s(eci\014es)e +5601 y Fj(An)40 b(optional)h(second)f(c)m(haracter)i(sp)s(eci\014es)e (the)h(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)60 b(b)40 b(or)g(B)h(indicates)g(big)0 5714 y(endian)f(\(as)h(in)f(FITS)f (\014les)i(and)f(the)g(nativ)m(e)i(format)e(of)h(SUN)f(UNIX)h(w)m (orkstations)g(and)f(Mac)i(PCs\))e(and)p eop end %%Page: 88 94 -TeXDict begin 88 93 bop 0 299 a Fi(88)1618 b Fg(CHAPTER)30 +TeXDict begin 88 93 bop 0 299 a Fj(88)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(l)41 b(or)g(L)g(indicates)g(little)i(endian)e(\(nativ)m(e)h +555 y Fj(l)41 b(or)g(L)g(indicates)g(little)i(endian)e(\(nativ)m(e)h (format)g(of)f(DEC)f(OSF)h(w)m(orkstations)h(and)e(IBM)i(PCs\).)72 b(If)40 b(this)0 668 y(c)m(haracter)32 b(is)e(omitted)i(then)e(the)g (arra)m(y)h(is)g(assumed)e(to)i(ha)m(v)m(e)h(the)f(nativ)m(e)g(b)m(yte) @@ -8799,13 +10885,13 @@ y(the)35 b(o\013set)h(=)f(0.)54 b(This)35 b(parameter)g(ma)m(y)h(b)s(e) e(used)g(to)i(skip)e(o)m(v)m(er)i(an)m(y)g(header)e(information)i(in)e (the)h(\014le)g(that)0 1346 y(precedes)30 b(the)h(binary)f(data.)41 -b(F)-8 b(urther)30 b(examples:)95 1603 y Fe(raw.dat[b10000])521 +b(F)-8 b(urther)30 b(examples:)95 1603 y Ff(raw.dat[b10000])521 b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95 1715 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point) h(big-endian)f(array)95 1828 y(img.fits[ib512,512:2880])89 b(reads)47 b(the)g(512)g(x)g(512)g(short)f(integer)g(array)g(in)1336 1941 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header) -0 2198 y Fi(One)25 b(sp)s(ecial)g(case)h(of)f(input)f(\014le)h(is)g +0 2198 y Fj(One)25 b(sp)s(ecial)g(case)h(of)f(input)f(\014le)h(is)g (where)g(the)g(\014lename)g(=)g(`-')h(\(a)f(dash)g(or)g(min)m(us)f (sign\))h(or)g('stdin')g(or)g('stdout',)0 2311 y(whic)m(h)d (signi\014es)h(that)h(the)f(input)e(\014le)i(is)g(to)h(b)s(e)e(read)g @@ -8831,12 +10917,12 @@ (output)f(FITS)g(\014le,)i(and)f(task2)g(reads)g(an)g(input)f(FITS)g (\014le,)i(the)f(FITS)f(\014le)h(ma)m(y)0 3487 y(b)s(e)j(pip)s(ed)f(b)s (et)m(w)m(een)i(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)143 -3744 y Fe(task1)47 b(-)g(|)g(task2)g(-)0 4001 y Fi(where)30 +3744 y Ff(task1)47 b(-)g(|)g(task2)g(-)0 4001 y Fj(where)30 b(the)h(v)m(ertical)i(bar)e(is)f(the)h(Unix)g(piping)f(sym)m(b)s(ol.)42 b(This)30 b(assumes)g(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0 4114 y(the)g(FITS)e(\014le)i(o\013)f(of)h(the)g(command)f(line.)0 -4448 y Fd(8.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g -(Existing)h(File)0 4698 y Fi(An)36 b(optional)i(output)e(\014lename)h +4448 y Fe(8.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g +(Existing)h(File)0 4698 y Fj(An)36 b(optional)i(output)e(\014lename)h (ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(in)g(paren)m(theses)h(immediately)h (follo)m(wing)g(the)f(base)g(\014le)0 4811 y(name)28 b(to)h(b)s(e)f(op)s(ened.)39 b(This)28 b(is)g(mainly)g(useful)g(in)g @@ -8862,11 +10948,11 @@ (include)f(the)h(')10 b(!')41 b(clobb)s(er)30 b(\015ag.)p eop end %%Page: 89 95 -TeXDict begin 89 94 bop 0 299 a Fg(8.4.)72 b(OUTPUT)30 +TeXDict begin 89 94 bop 0 299 a Fh(8.4.)72 b(OUTPUT)30 b(FILE)g(NAME)h(WHEN)g(OPENING)f(AN)h(EXISTING)e(FILE)967 -b Fi(89)0 555 y(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g -(CFITSIO)f(is:)70 b Fe(file1.fits.gz\(file2.fit)o(s\))39 -b Fi(then)44 b(CFITSIO)g(will)0 668 y(uncompress)39 b +b Fj(89)0 555 y(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g +(CFITSIO)f(is:)70 b Ff(file1.fits.gz\(file2.fit)o(s\))39 +b Fj(then)44 b(CFITSIO)g(will)0 668 y(uncompress)39 b (`\014le1.\014ts.gz')j(in)m(to)f(the)f(lo)s(cal)h(disk)e(\014le)h (`\014le2.\014ts')h(b)s(efore)f(op)s(ening)f(it.)70 b(CFITSIO)38 b(do)s(es)i(not)0 781 y(automatically)33 b(delete)f(the)e(output)g @@ -8887,20 +10973,20 @@ y(where)28 b(m)m(ultiple)h(\014les)f(are)h(created,)h(the)e(out\014le)h (sp)s(eci\014er)f(will)g(b)s(e)g(in)m(terpreted)h(the)f(name)g(of)h (the)f(\014nal)g(\014le)h(as)0 1619 y(describ)s(ed)g(b)s(elo)m(w,)i(in) -f(descending)g(priorit)m(y:)136 1869 y Fc(\017)46 b Fi(as)29 +f(descending)g(priorit)m(y:)136 1869 y Fd(\017)46 b Fj(as)29 b(the)g(name)g(of)g(the)g(\014nal)f(image)i(\014le)f(if)f(an)h(image)h (within)e(a)h(single)g(binary)f(table)i(cell)g(is)e(op)s(ened)g(or)h (if)227 1982 y(an)i(image)g(is)g(created)g(b)m(y)f(binning)g(a)g(table) -i(column.)136 2167 y Fc(\017)46 b Fi(as)33 b(the)f(name)h(of)f(the)h +i(column.)136 2167 y Fd(\017)46 b Fj(as)33 b(the)f(name)h(of)f(the)h (\014le)f(con)m(taining)i(the)e(\014ltered)g(table)i(if)e(a)h(column)f (\014lter)g(and/or)g(a)h(ro)m(w)f(\014lter)h(are)227 -2280 y(sp)s(eci\014ed.)136 2464 y Fc(\017)46 b Fi(as)31 +2280 y(sp)s(eci\014ed.)136 2464 y Fd(\017)46 b Fj(as)31 b(the)f(name)h(of)f(the)h(lo)s(cal)h(cop)m(y)f(of)f(the)h(remote)g(FTP) -f(or)h(HTTP)e(\014le.)136 2649 y Fc(\017)46 b Fi(as)31 +f(or)h(HTTP)e(\014le.)136 2649 y Fd(\017)46 b Fj(as)31 b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)h(of)g(the)f(FITS)g (\014le,)h(if)g(a)g(compressed)f(FITS)g(\014le)h(on)g(lo)s(cal)227 -2762 y(disk)f(has)g(b)s(een)g(op)s(ened.)136 2946 y Fc(\017)46 -b Fi(otherwise,)31 b(the)g(output)f(\014lename)g(is)h(ignored.)0 +2762 y(disk)f(has)g(b)s(een)g(op)s(ened.)136 2946 y Fd(\017)46 +b Fj(otherwise,)31 b(the)g(output)f(\014lename)g(is)h(ignored.)0 3197 y(The)e(output)f(\014le)h(sp)s(eci\014er)g(is)g(useful)f(when)g (reading)h(FTP)g(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)h(since)g(it)h (can)f(b)s(e)g(used)0 3310 y(to)34 b(create)i(a)e(lo)s(cal)h(disk)e @@ -8911,20 +10997,20 @@ b(Note)36 b(that)f(CFITSIO)0 3535 y(will)30 b(b)s(eha)m(v)m(e)g (di\013eren)m(tly)h(dep)s(ending)d(on)i(whether)f(the)h(remote)g (\014le)g(is)g(compressed)f(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0 -3648 y(follo)m(wing)i(examples:)136 3876 y Fc(\017)46 -b Fi(`ftp://remote.mac)m(hine/tmp/m)m(y\014le.\014ts.gz\(*\)')k(-)43 +3648 y(follo)m(wing)i(examples:)136 3876 y Fd(\017)46 +b Fj(`ftp://remote.mac)m(hine/tmp/m)m(y\014le.\014ts.gz\(*\)')k(-)43 b(the)g(remote)h(compressed)f(\014le)g(is)g(copied)h(to)g(the)227 3988 y(lo)s(cal)26 b(compressed)e(\014le)g(`m)m(y\014le.\014ts.gz',)k (whic)m(h)c(is)g(then)h(uncompressed)e(in)h(lo)s(cal)h(memory)f(b)s (efore)g(b)s(eing)227 4101 y(op)s(ened)30 b(and)g(passed)g(to)h(the)f -(application)i(program.)136 4286 y Fc(\017)46 b Fi(`ftp://remote.mac)m +(application)i(program.)136 4286 y Fd(\017)46 b Fj(`ftp://remote.mac)m (hine/tmp/m)m(y\014le.\014ts.gz\(m)m(y\014le.\014ts\)')d(-)37 b(the)g(remote)g(compressed)f(\014le)h(is)f(copied)227 4399 y(and)h(uncompressed)g(in)m(to)h(the)g(lo)s(cal)h(\014le)f(`m)m (y\014le.\014ts'.)64 b(This)36 b(example)j(requires)e(less)h(lo)s(cal)h (memory)227 4512 y(than)30 b(the)h(previous)f(example)h(since)g(the)f (\014le)h(is)f(uncompressed)f(on)h(disk)g(instead)h(of)f(in)h(memory)-8 -b(.)136 4696 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m +b(.)136 4696 y Fd(\017)46 b Fj(`ftp://remote.mac)m(hine/tmp/m)m (y\014le.\014ts\(m)m(y\014le.\014ts.gz\)')28 b(-)21 b(this)g(will)h (usually)f(pro)s(duce)f(an)h(error)g(since)227 4809 y(CFITSIO)29 b(itself)i(cannot)g(compress)f(\014les.)0 5036 y(The)36 @@ -8944,10 +11030,10 @@ (\014le)h(t)m(yp)s(es,)h(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s (eha)m(vior)0 5714 y(that)c(they)g(exp)s(ect.)p eop end %%Page: 90 96 -TeXDict begin 90 95 bop 0 299 a Fi(90)1618 b Fg(CHAPTER)30 +TeXDict begin 90 95 bop 0 299 a Fj(90)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fd(8.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h -(a)g(New)f(File)0 808 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g +555 y Fe(8.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h +(a)g(New)f(File)0 808 y Fj(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g (created)g(with)g(a)f(call)i(to)g(\014ts)p 2101 808 28 4 v 32 w(create)p 2369 808 V 35 w(\014le,)g(the)f(name)g(of)g(a)g (template)h(\014le)e(ma)m(y)0 921 y(b)s(e)h(supplied)g(in)h(paren)m @@ -8964,8 +11050,8 @@ g(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h (FITS)f(k)m(eyw)m(ord)i(record.)0 1486 y(The)j(format)h(of)f(the)h (ASCI)s(I)e(template)i(\014le)g(is)f(describ)s(ed)f(b)s(elo)m(w.)0 -1833 y Fd(8.6)135 b(Image)46 b(Tile-Compression)h(Sp)t(eci\014cation)0 -2086 y Fi(When)28 b(sp)s(ecifying)g(the)h(name)g(of)f(the)h(output)f +1833 y Fe(8.6)135 b(Image)46 b(Tile-Compression)h(Sp)t(eci\014cation)0 +2086 y Fj(When)28 b(sp)s(ecifying)g(the)h(name)g(of)f(the)h(output)f (FITS)g(\014le)g(to)h(b)s(e)f(created,)i(the)f(user)f(can)g(indicate)i (that)f(images)0 2198 y(should)d(b)s(e)h(written)g(in)g (tile-compressed)h(format)g(\(see)g(section)g(5.5,)h(\\Primary)e(Arra)m @@ -8974,7 +11060,7 @@ (ets)i(follo)m(wing)g(the)f(ro)s(ot)f(disk)0 2424 y(\014le)j(name.)41 b(Here)31 b(are)g(some)g(examples)g(of)f(the)h(syn)m(tax)g(for)f(sp)s (ecifying)g(tile-compressed)i(output)e(images:)191 2695 -y Fe(myfile.fit[compress])185 b(-)48 b(use)f(Rice)f(algorithm)g(and)h +y Ff(myfile.fit[compress])185 b(-)48 b(use)f(Rice)f(algorithm)g(and)h (default)e(tile)i(size)191 2921 y(myfile.fit[compress)42 b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191 3034 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g @@ -8983,8 +11069,8 @@ 42 b(Rice)47 b(100,100])141 b(-)48 b(use)e(100)h(x)h(100)f(pixel)f (tile)h(size)191 3486 y(myfile.fit[compress)42 b(Rice)47 b(100,100;2])e(-)j(as)f(above,)f(and)h(use)g(noisebits)e(=)i(2)0 -3833 y Fd(8.7)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0 -4086 y Fi(The)c(optional)h(HDU)h(lo)s(cation)g(sp)s(eci\014er)d +3833 y Fe(8.7)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0 +4086 y Fj(The)c(optional)h(HDU)h(lo)s(cation)g(sp)s(eci\014er)d (de\014nes)h(whic)m(h)g(HDU)h(\(Header-Data)i(Unit,)h(also)d(kno)m(wn)f (as)h(an)0 4199 y(`extension'\))36 b(within)d(the)i(FITS)e(\014le)h(to) h(initially)h(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)i(follo)m(w)f @@ -9021,8 +11107,8 @@ (commas)h(and)e(all)i(enclosed)g(in)f(square)g(brac)m(k)m(ets.)56 b(If)34 b(the)h(v)-5 b(alue)p eop end %%Page: 91 97 -TeXDict begin 91 96 bop 0 299 a Fg(8.8.)72 b(IMA)m(GE)31 -b(SECTION)2835 b Fi(91)0 555 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h +TeXDict begin 91 96 bop 0 299 a Fh(8.8.)72 b(IMA)m(GE)31 +b(SECTION)2835 b Fj(91)0 555 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h (not)f(sp)s(eci\014ed,)h(then)f(the)h(\014rst)e(extension)j(with)e(the) g(correct)i(v)-5 b(alue)34 b(of)0 668 y(EXTNAME)39 b(is)g(op)s(ened.)67 b(The)38 b(extension)i(name)f(and)f(t)m(yp)s(e)i(are)f(not)h(case)g @@ -9063,7 +11149,7 @@ b(ro)m(w)g(selection)i(expression)e(has)g(the)g(same)g(syn)m(tax)h(as)f (describ)s(ed)f(in)h(the)g(Ro)m(w)0 2409 y(Filter)k(Sp)s(eci\014er)d (section,)j(b)s(elo)m(w.)0 2569 y(Examples:)143 2811 -y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i +y Ff(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i (primary)f(array)143 2924 y(myfile.fits+3)92 b(-)48 b(same)e(as)h (above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143 3037 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g @@ -9077,7 +11163,7 @@ (images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f (image)907 3714 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g ('exposure')e(column)h(value)907 3827 y(greater)g(than)g(100.)0 -4158 y Fd(8.8)135 b(Image)46 b(Section)0 4408 y Fi(A)41 +4158 y Fe(8.8)135 b(Image)46 b(Section)0 4408 y Fj(A)41 b(virtual)g(\014le)f(con)m(taining)i(a)f(rectangular)h(subsection)e(of) h(an)g(image)g(can)g(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0 4521 y(sp)s(ecifying)32 b(the)h(range)g(of)g(pixels)g(\(start:end\))g @@ -9098,12 +11184,12 @@ b(In)25 b(the)h(later)h(2)f(cases)h(the)f(extension)h(name)f(or)f(n)m (um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)g(b)s(efore)h(the)g (image)h(section)0 5312 y(sp)s(eci\014er.)0 5472 y(Examples:)95 -5714 y Fe(myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47 +5714 y Ff(myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47 b(a)h(256x256)d(pixel)i(image)p eop end %%Page: 92 98 -TeXDict begin 92 97 bop 0 299 a Fi(92)1618 b Fg(CHAPTER)30 +TeXDict begin 92 97 bop 0 299 a Fj(92)1618 b Fh(CHAPTER)30 b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)668 -555 y Fe(consisting)45 b(of)i(the)g(odd)g(numbered)f(columns)g(\(1st)g +555 y Ff(consisting)45 b(of)i(the)g(odd)g(numbered)f(columns)g(\(1st)g (axis\))h(and)668 668 y(the)g(even)g(numbered)e(rows)i(\(2nd)g(axis\))f (of)h(the)g(image)f(in)i(the)668 781 y(primary)e(array)g(of)i(the)e (file.)95 1007 y(myfile.fits[*,)e(512:256])i(-)h(open)g(an)g(image)g @@ -9123,7 +11209,7 @@ (pixels)f(in)h(both)g(dimensions.)e(The)i(original)286 2813 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f (vector)286 2926 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g -(extension)e(of)i(the)g(file.)0 3203 y Fi(When)23 b(CFITSIO)f(op)s(ens) +(extension)e(of)i(the)g(file.)0 3203 y Fj(When)23 b(CFITSIO)f(op)s(ens) h(an)g(image)h(section)h(it)f(\014rst)f(creates)h(a)g(temp)s(orary)f (\014le)h(con)m(taining)h(the)e(image)i(section)0 3315 y(plus)32 b(a)i(cop)m(y)g(of)g(an)m(y)g(other)f(HDUs)h(in)f(the)h @@ -9136,8 +11222,8 @@ 3654 y(of)33 b(the)h(image)g(section,)h(if)e(they)h(exist,)h(so)e(that) h(the)f(co)s(ordinate)h(asso)s(ciated)h(with)e(eac)m(h)h(pixel)f(in)g (the)h(image)0 3767 y(section)e(will)e(b)s(e)g(computed)g(correctly)-8 -b(.)0 4120 y Fd(8.9)135 b(Image)46 b(T)-11 b(ransform)45 -b(Filters)0 4374 y Fi(CFITSIO)33 b(can)h(apply)g(a)h(user-sp)s +b(.)0 4120 y Fe(8.9)135 b(Image)46 b(T)-11 b(ransform)45 +b(Filters)0 4374 y Fj(CFITSIO)33 b(can)h(apply)g(a)h(user-sp)s (eci\014ed)e(mathematical)j(function)e(to)h(the)g(v)-5 b(alue)34 b(of)h(ev)m(ery)g(pixel)f(in)g(a)h(FITS)0 4487 y(image,)29 b(th)m(us)e(creating)h(a)g(new)e(virtual)h(image)i(in)d @@ -9155,1161 +11241,1284 @@ (wing)h('Ro)m(w)f(Filtering)g(Sp)s(eci\014cation')g(section)h(of)e (this)h(do)s(cumen)m(t.)82 b(Some)0 5212 y(examples)31 b(of)f(image)i(transform)e(\014lters)g(are:)48 5488 y -Fe([pix)46 b(X)i(*)f(2.0])715 b(-)48 b(multiply)d(each)i(pixel)f(by)h +Ff([pix)46 b(X)i(*)f(2.0])715 b(-)48 b(multiply)d(each)i(pixel)f(by)h (2.0)48 5601 y([pix)f(sqrt\(X\)])714 b(-)48 b(take)e(the)h(square)f (root)h(of)g(each)g(pixel)48 5714 y([pix)f(X)i(+)f(#ZEROPT)571 b(-)48 b(add)e(the)h(value)g(of)g(the)g(ZEROPT)f(keyword)p eop end %%Page: 93 99 -TeXDict begin 93 98 bop 0 299 a Fg(8.9.)72 b(IMA)m(GE)31 -b(TRANSF)m(ORM)g(FIL)-8 b(TERS)2237 b Fi(93)48 555 y -Fe([pix)46 b(X>0)h(?)h(log10\(X\))d(:)j(-99.])e(-)i(if)f(the)g(pixel)f +TeXDict begin 93 98 bop 0 299 a Fh(8.9.)72 b(IMA)m(GE)31 +b(TRANSF)m(ORM)g(FIL)-8 b(TERS)2237 b Fj(93)48 555 y +Ff([pix)46 b(X>0)h(?)h(log10\(X\))d(:)j(-99.])e(-)i(if)f(the)g(pixel)f (value)g(is)i(greater)1480 668 y(than)e(0,)h(compute)f(the)h(base)g(10) g(log,)1480 781 y(else)f(set)h(the)g(pixel)f(=)i(-99.)0 -1013 y Fi(Use)24 b(the)g(letter)h('X')f(in)f(the)h(expression)g(to)g +1043 y Fj(Use)24 b(the)g(letter)h('X')f(in)f(the)h(expression)g(to)g (represen)m(t)g(the)g(curren)m(t)f(pixel)h(v)-5 b(alue)24 -b(in)f(the)h(image.)40 b(The)23 b(expression)0 1126 y(is)38 +b(in)f(the)h(image.)40 b(The)23 b(expression)0 1156 y(is)38 b(ev)-5 b(aluated)39 b(indep)s(enden)m(tly)e(for)g(eac)m(h)i(pixel)f (in)g(the)g(image)h(and)e(ma)m(y)h(b)s(e)g(a)g(function)f(of)h(1\))h -(the)f(original)0 1239 y(pixel)32 b(v)-5 b(alue,)32 b(2\))g(the)f(v)-5 +(the)f(original)0 1269 y(pixel)32 b(v)-5 b(alue,)32 b(2\))g(the)f(v)-5 b(alue)32 b(of)f(other)h(pixels)f(in)g(the)g(image)i(at)f(a)f(giv)m(en) i(relativ)m(e)g(o\013set)f(from)f(the)g(p)s(osition)h(of)0 -1352 y(the)d(pixel)f(that)h(is)g(b)s(eing)f(ev)-5 b(aluated,)30 +1382 y(the)d(pixel)f(that)h(is)g(b)s(eing)f(ev)-5 b(aluated,)30 b(and)e(3\))h(the)g(v)-5 b(alue)29 b(of)f(an)m(y)h(header)f(k)m(eyw)m (ords.)41 b(Header)29 b(k)m(eyw)m(ord)g(v)-5 b(alues)0 -1465 y(are)31 b(represen)m(ted)f(b)m(y)g(the)h(name)f(of)h(the)f(k)m -(eyw)m(ord)h(preceded)f(b)m(y)h(the)f('#')h(sign.)0 1625 +1495 y(are)31 b(represen)m(ted)f(b)m(y)g(the)h(name)f(of)h(the)f(k)m +(eyw)m(ord)h(preceded)f(b)m(y)h(the)f('#')h(sign.)0 1655 y(T)-8 b(o)35 b(access)h(the)f(the)g(v)-5 b(alue)35 b(of)g(adjacen)m(t) h(pixels)f(in)f(the)h(image,)i(sp)s(ecify)e(the)g(\(1-D\))h(o\013set)g -(from)e(the)h(curren)m(t)0 1738 y(pixel)c(in)f(curly)g(brac)m(k)m(ets.) -42 b(F)-8 b(or)31 b(example)48 1970 y Fe([pix)94 b(\(x{-1})46 -b(+)i(x)f(+)h(x{+1}\))e(/)h(3])0 2202 y Fi(will)25 b(replace)g(eac)m(h) +(from)e(the)h(curren)m(t)0 1768 y(pixel)c(in)f(curly)g(brac)m(k)m(ets.) +42 b(F)-8 b(or)31 b(example)48 2030 y Ff([pix)94 b(\(x{-1})46 +b(+)i(x)f(+)h(x{+1}\))e(/)h(3])0 2292 y Fj(will)25 b(replace)g(eac)m(h) h(pixel)f(v)-5 b(alue)25 b(with)f(the)h(running)e(mean)i(of)f(the)h(v) -5 b(alues)25 b(of)g(that)g(pixel)g(and)f(it's)h(2)g(neigh)m(b)s(oring) -0 2314 y(pixels.)40 b(Note)30 b(that)g(in)e(this)g(notation)i(the)f +0 2405 y(pixels.)40 b(Note)30 b(that)g(in)e(this)g(notation)i(the)f (image)h(is)f(treated)g(as)g(a)g(1-D)h(arra)m(y)-8 b(,)30 -b(where)e(eac)m(h)i(ro)m(w)f(of)g(the)g(image)0 2427 +b(where)e(eac)m(h)i(ro)m(w)f(of)g(the)g(image)0 2518 y(\(or)c(higher)f(dimensional)g(cub)s(e\))h(is)f(app)s(ended)f(one)h (after)h(another)g(in)f(one)h(long)g(arra)m(y)g(of)f(pixels.)39 -b(It)25 b(is)f(p)s(ossible)0 2540 y(to)35 b(refer)f(to)h(pixels)f(in)g +b(It)25 b(is)f(p)s(ossible)0 2630 y(to)35 b(refer)f(to)h(pixels)f(in)g (the)g(ro)m(ws)g(ab)s(o)m(v)m(e)h(or)g(b)s(elo)m(w)f(the)g(curren)m(t)g (pixel)h(b)m(y)f(using)f(the)h(v)-5 b(alue)35 b(of)f(the)h(NAXIS1)0 -2653 y(header)30 b(k)m(eyw)m(ord.)41 b(F)-8 b(or)32 b(example)48 -2885 y Fe([pix)46 b(\(x{-#NAXIS1})f(+)i(x)h(+)f(x{#NAXIS1}\))e(/)i(3])0 -3117 y Fi(will)34 b(compute)f(the)h(mean)f(of)g(eac)m(h)i(image)f +2743 y(header)30 b(k)m(eyw)m(ord.)41 b(F)-8 b(or)32 b(example)48 +3005 y Ff([pix)46 b(\(x{-#NAXIS1})f(+)i(x)h(+)f(x{#NAXIS1}\))e(/)i(3])0 +3267 y Fj(will)34 b(compute)f(the)h(mean)f(of)g(eac)m(h)i(image)f (pixel)g(and)e(the)i(pixels)f(immediately)i(ab)s(o)m(v)m(e)f(and)f(b)s -(elo)m(w)g(it)h(in)f(the)0 3230 y(adjacen)m(t)27 b(ro)m(ws)f(of)g(the)f +(elo)m(w)g(it)h(in)f(the)0 3380 y(adjacen)m(t)27 b(ro)m(ws)f(of)g(the)f (image.)41 b(The)25 b(follo)m(wing)i(more)f(complex)h(example)f -(creates)h(a)f(smo)s(othed)g(virtual)g(image)0 3343 y(where)k(eac)m(h)h +(creates)h(a)f(smo)s(othed)g(virtual)g(image)0 3493 y(where)k(eac)m(h)h (pixel)g(is)g(a)f(3)h(x)f(3)h(b)s(o)m(xcar)g(a)m(v)m(erage)i(of)d(the)h -(input)e(image)j(pixels:)95 3575 y Fe([pix)47 b(\(X)g(+)h(X{-1})e(+)i -(X{+1})286 3688 y(+)g(X{-#NAXIS1})d(+)i(X{-#NAXIS1)e(-)i(1})h(+)f -(X{-#NAXIS1)e(+)j(1})286 3801 y(+)g(X{#NAXIS1})d(+)i(X{#NAXIS1)f(-)h -(1})g(+)h(X{#NAXIS1)d(+)i(1}\))g(/)h(9.])0 4033 y Fi(If)31 +(input)e(image)j(pixels:)95 3755 y Ff([pix)47 b(\(X)g(+)h(X{-1})e(+)i +(X{+1})286 3868 y(+)g(X{-#NAXIS1})d(+)i(X{-#NAXIS1)e(-)i(1})h(+)f +(X{-#NAXIS1)e(+)j(1})286 3981 y(+)g(X{#NAXIS1})d(+)i(X{#NAXIS1)f(-)h +(1})g(+)h(X{#NAXIS1)d(+)i(1}\))g(/)h(9.])0 4243 y Fj(If)31 b(the)h(pixel)g(o\013set)h(extends)f(b)s(ey)m(ond)f(the)h(\014rst)f(or) h(last)h(pixel)f(in)f(the)h(image,)i(the)e(function)g(will)g(ev)-5 -b(aluate)33 b(to)0 4145 y(unde\014ned,)28 b(or)j(NULL.)0 -4306 y(F)-8 b(or)39 b(complex)g(or)g(commonly)g(used)e(image)j +b(aluate)33 b(to)0 4356 y(unde\014ned,)28 b(or)j(NULL.)0 +4516 y(F)-8 b(or)39 b(complex)g(or)g(commonly)g(used)e(image)j (\014ltering)f(op)s(erations,)i(one)d(can)h(write)g(the)f(expression)h -(in)m(to)g(an)0 4419 y(external)i(text)h(\014le)f(and)f(then)g(imp)s +(in)m(to)g(an)0 4629 y(external)i(text)h(\014le)f(and)f(then)g(imp)s (ort)g(it)h(in)m(to)h(the)e(\014lter)h(using)f(the)h(syn)m(tax)g('[pix) -g(@\014lename.txt]'.)72 b(The)0 4531 y(mathematical)29 +g(@\014lename.txt]'.)72 b(The)0 4742 y(mathematical)29 b(expression)e(can)g(extend)g(o)m(v)m(er)i(m)m(ultiple)e(lines)g(of)h (text)g(in)e(the)h(\014le.)40 b(An)m(y)27 b(lines)g(in)g(the)g -(external)0 4644 y(text)h(\014le)e(that)i(b)s(egin)e(with)g(2)h(slash)f +(external)0 4855 y(text)h(\014le)e(that)i(b)s(egin)e(with)g(2)h(slash)f (c)m(haracters)i(\('//'\))h(will)e(b)s(e)f(ignored)h(and)f(ma)m(y)h(b)s -(e)f(used)g(to)h(add)f(commen)m(ts)0 4757 y(in)m(to)31 -b(the)g(\014le.)0 4917 y(By)c(default,)g(the)f(datat)m(yp)s(e)i(of)e -(the)g(resulting)h(image)g(will)g(b)s(e)e(the)i(same)f(as)h(the)f -(original)i(image,)g(but)e(one)g(ma)m(y)0 5030 y(force)31 -b(a)g(di\013eren)m(t)g(datat)m(yp)s(e)g(b)m(y)f(app)s(ended)f(a)h(co)s -(de)h(letter)h(to)f(the)f('pix')h(k)m(eyw)m(ord:)286 -5262 y Fe(pixb)95 b(-)g(8-bit)46 b(byte)190 b(image)46 -b(with)h(BITPIX)f(=)143 b(8)286 5375 y(pixi)95 b(-)47 -b(16-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 b(16)286 -5488 y(pixj)g(-)47 b(32-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 -b(32)286 5601 y(pixr)g(-)47 b(32-bit)f(float)142 b(image)46 -b(with)h(BITPIX)f(=)i(-32)286 5714 y(pixd)95 b(-)47 b(64-bit)f(float) -142 b(image)46 b(with)h(BITPIX)f(=)i(-64)p eop end +(e)f(used)g(to)h(add)f(commen)m(ts)0 4968 y(in)m(to)31 +b(the)g(\014le.)0 5128 y(When)39 b(using)f(column)h(\014ltering)h(to)g +(op)s(en)e(a)h(\014le)h(\\on)f(the)g(\015y)-8 b(,")42 +b(it)e(is)f(p)s(ermitted)g(to)h(use)e(m)m(ultiple)i(column)0 +5241 y(\014ltering)31 b(expressions.)40 b(F)-8 b(or)31 +b(example,)g(the)g(syn)m(tax)95 5477 y Ff(filename.fits[col)44 +b(*][col)i(-Y][col)f(Z=X+1])0 5714 y Fj(w)m(ould)30 b(b)s(e)g(treated)h +(as)g(equiv)-5 b(alen)m(t)32 b(to)f(joining)f(the)h(expressions)f(with) +g(semicolons,)i(or)p eop end %%Page: 94 100 -TeXDict begin 94 99 bop 0 299 a Fi(94)1618 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(Also)23 b(b)m(y)f(default,)j(an)m(y)d(other)h(HDUs)g(in)f(the) -g(input)g(\014le)g(will)h(b)s(e)e(copied)i(without)g(c)m(hange)g(to)g -(the)g(output)f(virtual)0 668 y(FITS)k(\014le,)h(but)f(one)g(ma)m(y)h -(discard)f(the)h(other)f(HDUs)h(b)m(y)f(adding)g(the)h(n)m(um)m(b)s(er) -e('1')i(to)g(the)g('pix')f(k)m(eyw)m(ord)h(\(and)0 781 -y(follo)m(wing)32 b(an)m(y)f(optional)g(datat)m(yp)s(e)g(co)s(de)g -(letter\).)42 b(F)-8 b(or)32 b(example:)239 1044 y Fe -(myfile.fits[3][pixr1)90 b(sqrt\(X\)])0 1307 y Fi(will)23 -b(create)i(a)e(virtual)g(FITS)f(\014le)h(con)m(taining)h(only)f(a)g -(primary)f(arra)m(y)i(image)g(with)e(32-bit)i(\015oating)g(p)s(oin)m(t) -f(pixels)0 1420 y(that)29 b(ha)m(v)m(e)h(a)f(v)-5 b(alue)30 -b(equal)f(to)g(the)g(square)g(ro)s(ot)g(of)g(the)g(pixels)f(in)h(the)g -(image)h(that)f(is)g(in)f(the)h(3rd)f(extension)i(of)0 -1533 y(the)h('m)m(y\014le.\014ts')g(\014le.)0 1870 y -Fd(8.10)136 b(Column)45 b(and)f(Keyw)l(ord)i(Filtering)g(Sp)t -(eci\014cation)0 2121 y Fi(The)27 b(optional)i(column/k)m(eyw)m(ord)g +TeXDict begin 94 99 bop 0 299 a Fj(94)1618 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)95 +555 y Ff(filename.fits[col)44 b(*;)j(-Y;col)f(Z=X+1])0 +791 y Fj(Please)37 b(note)e(that)h(if)g(m)m(ultiple)g(column)f +(\014ltering)g(expressions)g(are)h(used,)g(it)g(is)f(not)h(p)s +(ermitted)f(to)h(also)g(use)0 904 y(the)31 b Ff([col)46 +b(@filename.txt])27 b Fj(syn)m(tax)k(in)f(an)m(y)g(of)h(the)f +(individual)g(expressions.)0 1064 y(By)d(default,)g(the)f(datat)m(yp)s +(e)i(of)e(the)g(resulting)h(image)g(will)g(b)s(e)e(the)i(same)f(as)h +(the)f(original)i(image,)g(but)e(one)g(ma)m(y)0 1177 +y(force)31 b(a)g(di\013eren)m(t)g(datat)m(yp)s(e)g(b)m(y)f(app)s(ended) +f(a)h(co)s(de)h(letter)h(to)f(the)f('pix')h(k)m(eyw)m(ord:)286 +1438 y Ff(pixb)95 b(-)g(8-bit)46 b(byte)190 b(image)46 +b(with)h(BITPIX)f(=)143 b(8)286 1551 y(pixi)95 b(-)47 +b(16-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 b(16)286 +1664 y(pixj)g(-)47 b(32-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 +b(32)286 1777 y(pixr)g(-)47 b(32-bit)f(float)142 b(image)46 +b(with)h(BITPIX)f(=)i(-32)286 1890 y(pixd)95 b(-)47 b(64-bit)f(float) +142 b(image)46 b(with)h(BITPIX)f(=)i(-64)0 2151 y Fj(Also)23 +b(b)m(y)f(default,)j(an)m(y)d(other)h(HDUs)g(in)f(the)g(input)g(\014le) +g(will)h(b)s(e)e(copied)i(without)g(c)m(hange)g(to)g(the)g(output)f +(virtual)0 2264 y(FITS)k(\014le,)h(but)f(one)g(ma)m(y)h(discard)f(the)h +(other)f(HDUs)h(b)m(y)f(adding)g(the)h(n)m(um)m(b)s(er)e('1')i(to)g +(the)g('pix')f(k)m(eyw)m(ord)h(\(and)0 2377 y(follo)m(wing)32 +b(an)m(y)f(optional)g(datat)m(yp)s(e)g(co)s(de)g(letter\).)42 +b(F)-8 b(or)32 b(example:)239 2639 y Ff(myfile.fits[3][pixr1)90 +b(sqrt\(X\)])0 2900 y Fj(will)23 b(create)i(a)e(virtual)g(FITS)f +(\014le)h(con)m(taining)h(only)f(a)g(primary)f(arra)m(y)i(image)g(with) +e(32-bit)i(\015oating)g(p)s(oin)m(t)f(pixels)0 3013 y(that)29 +b(ha)m(v)m(e)h(a)f(v)-5 b(alue)30 b(equal)f(to)g(the)g(square)g(ro)s +(ot)g(of)g(the)g(pixels)f(in)h(the)g(image)h(that)f(is)g(in)f(the)h +(3rd)f(extension)i(of)0 3126 y(the)h('m)m(y\014le.\014ts')g(\014le.)0 +3461 y Fe(8.10)136 b(Column)45 b(and)f(Keyw)l(ord)i(Filtering)g(Sp)t +(eci\014cation)0 3712 y Fj(The)27 b(optional)i(column/k)m(eyw)m(ord)g (\014ltering)f(sp)s(eci\014er)f(is)h(used)f(to)i(mo)s(dify)e(the)h -(column)g(structure)f(and/or)h(the)0 2234 y(header)38 +(column)g(structure)f(and/or)h(the)0 3825 y(header)38 b(k)m(eyw)m(ords)h(in)f(the)h(HDU)g(that)h(w)m(as)f(selected)h(with)e (the)h(previous)f(HDU)h(lo)s(cation)h(sp)s(eci\014er.)65 -b(This)0 2347 y(\014ltering)42 b(sp)s(eci\014er)f(m)m(ust)h(b)s(e)f +b(This)0 3938 y(\014ltering)42 b(sp)s(eci\014er)f(m)m(ust)h(b)s(e)f (enclosed)i(in)e(square)h(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f -(distinguished)g(from)h(a)g(general)0 2460 y(ro)m(w)d(\014lter)g(sp)s +(distinguished)g(from)h(a)g(general)0 4050 y(ro)m(w)d(\014lter)g(sp)s (eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)g(the)g(fact)h (that)f(it)g(b)s(egins)f(with)h(the)g(string)g('col)h(')f(and)f(is)h -(not)0 2573 y(immediately)30 b(follo)m(w)m(ed)g(b)m(y)e(an)g(equals)h +(not)0 4163 y(immediately)30 b(follo)m(w)m(ed)g(b)m(y)e(an)g(equals)h (sign.)40 b(The)28 b(original)h(\014le)f(is)h(not)f(c)m(hanged)h(b)m(y) -f(this)h(\014ltering)f(op)s(eration,)0 2686 y(and)40 +f(this)h(\014ltering)f(op)s(eration,)0 4276 y(and)40 b(instead)h(the)g(mo)s(di\014cations)g(are)g(made)f(on)h(a)g(cop)m(y)g (of)g(the)g(input)f(FITS)g(\014le)g(\(usually)h(in)f(memory\),)0 -2799 y(whic)m(h)33 b(also)h(con)m(tains)g(a)f(cop)m(y)h(of)f(all)h(the) +4389 y(whic)m(h)33 b(also)h(con)m(tains)g(a)f(cop)m(y)h(of)f(all)h(the) g(other)f(HDUs)h(in)e(the)h(\014le.)49 b(This)33 b(temp)s(orary)f -(\014le)h(is)g(passed)g(to)h(the)0 2912 y(application)f(program)f(and)f +(\014le)h(is)g(passed)g(to)h(the)0 4502 y(application)f(program)f(and)f (will)h(p)s(ersist)f(only)h(un)m(til)g(the)g(\014le)g(is)g(closed)h(or) -f(un)m(til)g(the)g(program)f(exits,)j(unless)0 3025 y(the)d(out\014le)f +f(un)m(til)g(the)g(program)f(exits,)j(unless)0 4615 y(the)d(out\014le)f (sp)s(eci\014er)g(\(see)h(ab)s(o)m(v)m(e\))h(is)f(also)g(supplied.)0 -3185 y(The)g(column/k)m(eyw)m(ord)h(\014lter)f(can)g(b)s(e)g(used)f(to) +4775 y(The)g(column/k)m(eyw)m(ord)h(\014lter)f(can)g(b)s(e)g(used)f(to) i(p)s(erform)e(the)i(follo)m(wing)g(op)s(erations.)44 -b(More)32 b(than)f(one)g(op)s(er-)0 3298 y(ation)g(ma)m(y)g(b)s(e)f(sp) +b(More)32 b(than)f(one)g(op)s(er-)0 4888 y(ation)g(ma)m(y)g(b)s(e)f(sp) s(eci\014ed)g(b)m(y)g(separating)h(them)f(with)h(commas)f(or)h -(semi-colons.)136 3561 y Fc(\017)46 b Fi(Cop)m(y)36 b(only)g(a)g(sp)s +(semi-colons.)136 5149 y Fd(\017)46 b Fj(Cop)m(y)36 b(only)g(a)g(sp)s (eci\014ed)g(list)g(of)g(columns)g(columns)f(to)i(the)f(\014ltered)g (input)f(\014le.)57 b(The)36 b(list)g(of)g(column)227 -3673 y(name)41 b(should)e(b)s(e)g(separated)i(b)m(y)f(commas)h(or)f +5262 y(name)41 b(should)e(b)s(e)g(separated)i(b)m(y)f(commas)h(or)f (semi-colons.)72 b(Wild)41 b(card)f(c)m(haracters)h(ma)m(y)g(b)s(e)f -(used)227 3786 y(in)e(the)f(column)h(names)g(to)g(matc)m(h)g(m)m +(used)227 5375 y(in)e(the)f(column)h(names)g(to)g(matc)m(h)g(m)m (ultiple)h(columns.)62 b(If)37 b(the)h(expression)g(con)m(tains)g(b)s -(oth)f(a)h(list)h(of)227 3899 y(columns)29 b(to)h(b)s(e)f(included)g +(oth)f(a)h(list)h(of)227 5488 y(columns)29 b(to)h(b)s(e)f(included)g (and)g(columns)g(to)h(b)s(e)e(deleted,)j(then)e(all)h(the)g(columns)f -(in)g(the)h(original)g(table)227 4012 y(except)36 b(the)e(explicitly)i +(in)g(the)h(original)g(table)227 5601 y(except)36 b(the)e(explicitly)i (deleted)f(columns)f(will)h(app)s(ear)e(in)h(the)h(\014ltered)f(table)h -(\(i.e.,)i(there)e(is)f(no)g(need)227 4125 y(to)d(explicitly)h(list)f +(\(i.e.,)i(there)e(is)f(no)g(need)227 5714 y(to)d(explicitly)h(list)f (the)g(columns)f(to)h(b)s(e)f(included)f(if)i(an)m(y)f(columns)h(are)f -(b)s(eing)g(deleted\).)136 4316 y Fc(\017)46 b Fi(Delete)32 +(b)s(eing)g(deleted\).)p eop end +%%Page: 95 101 +TeXDict begin 95 100 bop 0 299 a Fh(8.10.)73 b(COLUMN)30 +b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)30 b(SPECIFICA)-8 +b(TION)1075 b Fj(95)136 555 y Fd(\017)46 b Fj(Delete)32 b(a)d(column)g(or)g(k)m(eyw)m(ord)h(b)m(y)f(listing)h(the)f(name)g (preceded)g(b)m(y)g(a)g(min)m(us)g(sign)g(or)g(an)g(exclamation)227 -4429 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d(will)g(delete)h(the)e(TIME)h +668 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d(will)g(delete)h(the)e(TIME)h (column)f(if)g(it)i(exists,)g(otherwise)f(the)g(TIME)f(k)m(eyw)m(ord.) -227 4542 y(An)35 b(error)f(is)h(returned)e(if)i(neither)f(a)i(column)e +227 781 y(An)35 b(error)f(is)h(returned)e(if)i(neither)f(a)i(column)e (nor)g(k)m(eyw)m(ord)h(with)g(this)f(name)h(exists.)54 -b(Note)36 b(that)g(the)227 4655 y(exclamation)27 b(p)s(oin)m(t,)g(')10 +b(Note)36 b(that)g(the)227 894 y(exclamation)27 b(p)s(oin)m(t,)g(')10 b(!',)27 b(is)e(a)g(sp)s(ecial)h(UNIX)f(c)m(haracter,)j(so)d(if)g(it)h -(is)f(used)f(on)h(the)g(command)g(line)g(rather)227 4768 +(is)f(used)f(on)h(the)g(command)g(line)g(rather)227 1007 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it)h(m)m(ust)f(b)s (e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)g(to)g(force)g(the)f(UNIX)h -(shell)227 4881 y(to)d(ignore)g(it.)136 5071 y Fc(\017)46 -b Fi(Rename)29 b(an)g(existing)g(column)f(or)h(k)m(eyw)m(ord)g(with)f +(shell)227 1120 y(to)d(ignore)g(it.)136 1307 y Fd(\017)46 +b Fj(Rename)29 b(an)g(existing)g(column)f(or)h(k)m(eyw)m(ord)g(with)f (the)h(syn)m(tax)g('NewName)h(==)e(OldName'.)40 b(An)28 -b(error)227 5184 y(is)j(returned)e(if)h(neither)h(a)f(column)g(nor)g(k) -m(eyw)m(ord)h(with)f(this)h(name)f(exists.)136 5375 y -Fc(\017)46 b Fi(App)s(end)37 b(a)j(new)f(column)f(or)i(k)m(eyw)m(ord)f +b(error)227 1420 y(is)j(returned)e(if)h(neither)h(a)f(column)g(nor)g(k) +m(eyw)m(ord)h(with)f(this)h(name)f(exists.)136 1607 y +Fd(\017)46 b Fj(App)s(end)37 b(a)j(new)f(column)f(or)i(k)m(eyw)m(ord)f (to)h(the)f(table.)68 b(T)-8 b(o)40 b(create)g(a)g(column,)h(giv)m(e)g -(the)e(new)g(name,)227 5488 y(optionally)e(follo)m(w)m(ed)g(b)m(y)e +(the)e(new)g(name,)227 1720 y(optionally)e(follo)m(w)m(ed)g(b)m(y)e (the)g(datat)m(yp)s(e)h(in)f(paren)m(theses,)i(follo)m(w)m(ed)g(b)m(y)e -(a)h(single)g(equals)f(sign)g(and)g(an)227 5601 y(expression)g(to)h(b)s +(a)h(single)g(equals)f(sign)g(and)g(an)227 1833 y(expression)g(to)h(b)s (e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)35 b(\(e.g.,)j('new)m (col\(1J\))f(=)e(0')g(will)h(create)g(a)f(new)g(32-bit)227 -5714 y(in)m(teger)k(column)e(called)i('new)m(col')f(\014lled)g(with)f +1945 y(in)m(teger)k(column)e(called)i('new)m(col')f(\014lled)g(with)f (zeros\).)62 b(The)37 b(datat)m(yp)s(e)h(is)g(sp)s(eci\014ed)e(using)h -(the)h(same)p eop end -%%Page: 95 101 -TeXDict begin 95 100 bop 0 299 a Fg(8.10.)73 b(COLUMN)30 -b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)30 b(SPECIFICA)-8 -b(TION)1075 b Fi(95)227 555 y(syn)m(tax)28 b(that)h(is)e(allo)m(w)m(ed) -j(for)d(the)h(v)-5 b(alue)28 b(of)g(the)g(FITS)f(TF)m(ORMn)g(k)m(eyw)m -(ord)h(\(e.g.,)i('I',)f('J',)f('E',)g('D',)h(etc.)227 -668 y(for)37 b(binary)f(tables,)k(and)c('I8',)k(F12.3',)h('E20.12',)g -(etc.)62 b(for)37 b(ASCI)s(I)e(tables\).)62 b(If)37 b(the)g(datat)m(yp) -s(e)h(is)f(not)227 781 y(sp)s(eci\014ed)24 b(then)f(an)h(appropriate)h +(the)h(same)227 2058 y(syn)m(tax)28 b(that)h(is)e(allo)m(w)m(ed)j(for)d +(the)h(v)-5 b(alue)28 b(of)g(the)g(FITS)f(TF)m(ORMn)g(k)m(eyw)m(ord)h +(\(e.g.,)i('I',)f('J',)f('E',)g('D',)h(etc.)227 2171 +y(for)37 b(binary)f(tables,)k(and)c('I8',)k(F12.3',)h('E20.12',)g(etc.) +62 b(for)37 b(ASCI)s(I)e(tables\).)62 b(If)37 b(the)g(datat)m(yp)s(e)h +(is)f(not)227 2284 y(sp)s(eci\014ed)24 b(then)f(an)h(appropriate)h (datat)m(yp)s(e)g(will)f(b)s(e)g(c)m(hosen)g(dep)s(ending)f(on)h(the)g -(form)g(of)g(the)g(expression)227 894 y(\(ma)m(y)f(b)s(e)d(a)i(c)m +(form)g(of)g(the)g(expression)227 2397 y(\(ma)m(y)f(b)s(e)d(a)i(c)m (haracter)h(string,)h(logical,)h(bit,)f(long)e(in)m(teger,)j(or)c (double)g(column\).)38 b(An)21 b(appropriate)g(v)m(ector)227 -1007 y(coun)m(t)31 b(\(in)g(the)f(case)i(of)e(binary)g(tables\))h(will) +2510 y(coun)m(t)31 b(\(in)g(the)f(case)i(of)e(binary)g(tables\))h(will) g(also)g(b)s(e)f(added)g(if)g(not)h(explicitly)h(sp)s(eci\014ed.)227 -1154 y(When)26 b(creating)h(a)f(new)f(k)m(eyw)m(ord,)j(the)e(k)m(eyw)m +2660 y(When)26 b(creating)h(a)f(new)f(k)m(eyw)m(ord,)j(the)e(k)m(eyw)m (ord)g(name)g(m)m(ust)g(b)s(e)f(preceded)g(b)m(y)h(a)g(p)s(ound)e(sign) -h('#',)j(and)227 1267 y(the)h(expression)f(m)m(ust)g(ev)-5 +h('#',)j(and)227 2773 y(the)h(expression)f(m)m(ust)g(ev)-5 b(aluate)30 b(to)f(a)g(scalar)g(\(i.e.,)h(cannot)f(ha)m(v)m(e)h(a)f -(column)f(name)g(in)g(the)h(expression\).)227 1380 y(The)j(commen)m(t)i +(column)f(name)g(in)g(the)h(expression\).)227 2886 y(The)j(commen)m(t)i (string)f(for)f(the)h(k)m(eyw)m(ord)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)g (in)g(paren)m(theses)h(immediately)h(follo)m(wing)227 -1493 y(the)29 b(k)m(eyw)m(ord)f(name)g(\(instead)h(of)f(supplying)f(a)h +2999 y(the)29 b(k)m(eyw)m(ord)f(name)g(\(instead)h(of)f(supplying)f(a)h (datat)m(yp)s(e)h(as)g(in)e(the)i(case)g(of)f(creating)h(a)g(new)f -(column\).)227 1606 y(If)c(the)h(k)m(eyw)m(ord)g(name)f(ends)g(with)g +(column\).)227 3112 y(If)c(the)h(k)m(eyw)m(ord)g(name)f(ends)g(with)g (a)h(p)s(ound)d(sign)i('#',)i(then)e(c\014tsio)i(will)e(substitute)h -(the)f(n)m(um)m(b)s(er)f(of)i(the)227 1719 y(most)31 +(the)f(n)m(um)m(b)s(er)f(of)i(the)227 3225 y(most)31 b(recen)m(tly)h(referenced)e(column)h(for)f(the)h(#)f(c)m(haracter)i(.) 41 b(This)29 b(is)i(esp)s(ecially)h(useful)d(when)h(writing)227 -1831 y(a)c(column-related)g(k)m(eyw)m(ord)g(lik)m(e)g(TUNITn)e(for)h(a) +3337 y(a)c(column-related)g(k)m(eyw)m(ord)g(lik)m(e)g(TUNITn)e(for)h(a) h(newly)f(created)h(column,)g(as)g(sho)m(wn)e(in)h(the)g(follo)m(wing) -227 1944 y(examples.)227 2092 y(COMMENT)30 b(and)g(HISTOR)-8 +227 3450 y(examples.)227 3600 y(COMMENT)30 b(and)g(HISTOR)-8 b(Y)30 b(k)m(eyw)m(ords)g(ma)m(y)h(also)h(b)s(e)e(created)h(with)f(the) -h(follo)m(wing)g(syn)m(tax:)370 2320 y Fe(#COMMENT)46 -b(=)h('This)g(is)g(a)g(comment)f(keyword')370 2433 y(#HISTORY)g(=)h -('This)g(is)g(a)g(history)f(keyword')227 2661 y Fi(Note)d(that)f(the)f +h(follo)m(wing)g(syn)m(tax:)370 3848 y Ff(#COMMENT)46 +b(=)h('This)g(is)g(a)g(comment)f(keyword')370 3961 y(#HISTORY)g(=)h +('This)g(is)g(a)g(history)f(keyword')227 4209 y Fj(Note)d(that)f(the)f (equal)h(sign)f(and)f(the)i(quote)f(c)m(haracters)i(will)f(b)s(e)e (remo)m(v)m(ed,)45 b(so)d(that)f(the)h(resulting)227 -2774 y(header)30 b(k)m(eyw)m(ords)h(in)f(these)h(cases)g(will)g(lo)s -(ok)g(lik)m(e)h(this:)370 3002 y Fe(COMMENT)46 b(This)h(is)g(a)h -(comment)d(keyword)370 3115 y(HISTORY)h(This)h(is)g(a)h(history)d -(keyword)227 3343 y Fi(These)29 b(t)m(w)m(o)h(sp)s(ecial)f(k)m(eyw)m +4322 y(header)30 b(k)m(eyw)m(ords)h(in)f(these)h(cases)g(will)g(lo)s +(ok)g(lik)m(e)h(this:)370 4569 y Ff(COMMENT)46 b(This)h(is)g(a)h +(comment)d(keyword)370 4682 y(HISTORY)h(This)h(is)g(a)h(history)d +(keyword)227 4930 y Fj(These)29 b(t)m(w)m(o)h(sp)s(ecial)f(k)m(eyw)m (ords)h(are)f(alw)m(a)m(ys)h(app)s(ended)d(to)j(the)f(end)f(of)h(the)g -(header)g(and)f(will)h(not)g(a\013ect)227 3456 y(an)m(y)i(previously)f +(header)g(and)f(will)h(not)g(a\013ect)227 5043 y(an)m(y)i(previously)f (existing)h(COMMENT)f(or)h(HISTOR)-8 b(Y)30 b(k)m(eyw)m(ords.)136 -3637 y Fc(\017)46 b Fi(Recompute)f(\(o)m(v)m(erwrite\))i(the)d(v)-5 +5230 y Fd(\017)46 b Fj(Recompute)f(\(o)m(v)m(erwrite\))i(the)d(v)-5 b(alues)44 b(in)g(an)g(existing)i(column)e(or)g(k)m(eyw)m(ord)g(b)m(y)g -(giving)i(the)e(name)227 3750 y(follo)m(w)m(ed)32 b(b)m(y)f(an)f +(giving)i(the)e(name)227 5343 y(follo)m(w)m(ed)32 b(b)m(y)f(an)f (equals)h(sign)f(and)g(an)g(arithmetic)i(expression.)0 -3991 y(The)23 b(expression)g(that)i(is)e(used)g(when)g(app)s(ending)f +5601 y(The)23 b(expression)g(that)i(is)e(used)g(when)g(app)s(ending)f (or)h(recomputing)h(columns)f(or)h(k)m(eyw)m(ords)g(can)g(b)s(e)f -(arbitrarily)0 4104 y(complex)36 b(and)g(ma)m(y)g(b)s(e)f(a)h(function) +(arbitrarily)0 5714 y(complex)36 b(and)g(ma)m(y)g(b)s(e)f(a)h(function) g(of)g(other)g(header)g(k)m(eyw)m(ord)g(v)-5 b(alues)36 -b(and)f(other)h(columns)g(\(in)g(the)g(same)0 4217 y(ro)m(w\).)63 -b(The)37 b(full)g(syn)m(tax)i(and)e(a)m(v)-5 b(ailable)40 -b(functions)d(for)g(the)h(expression)f(are)h(describ)s(ed)f(b)s(elo)m -(w)h(in)f(the)h(ro)m(w)0 4330 y(\014lter)30 b(sp)s(eci\014cation)i -(section.)0 4490 y(If)27 b(the)h(expression)g(con)m(tains)g(b)s(oth)f -(a)h(list)h(of)f(columns)f(to)h(b)s(e)g(included)e(and)i(columns)f(to)h -(b)s(e)f(deleted,)j(then)d(all)0 4603 y(the)34 b(columns)g(in)g(the)g -(original)h(table)g(except)g(the)f(explicitly)i(deleted)f(columns)e -(will)i(app)s(ear)e(in)h(the)g(\014ltered)0 4716 y(table.)40 -b(If)26 b(no)g(columns)f(to)i(b)s(e)f(deleted)g(are)h(sp)s(eci\014ed,)f -(then)g(only)g(the)h(columns)e(that)i(are)f(explicitly)i(listed)f(will) -0 4829 y(b)s(e)k(included)g(in)g(the)h(\014ltered)f(output)h(table.)45 -b(T)-8 b(o)32 b(include)f(all)i(the)e(columns,)h(add)f(the)h('*')g -(wildcard)g(sp)s(eci\014er)0 4942 y(at)f(the)g(end)e(of)i(the)f(list,)i -(as)e(sho)m(wn)g(in)g(the)h(examples.)0 5102 y(F)-8 b(or)30 -b(complex)h(or)e(commonly)h(used)f(op)s(erations,)i(one)e(can)h(also)h -(place)g(the)e(op)s(erations)h(in)m(to)h(an)e(external)i(text)0 -5215 y(\014le)g(and)f(imp)s(ort)g(it)h(in)m(to)h(the)f(column)g -(\014lter)f(using)h(the)g(syn)m(tax)g('[col)h(@\014lename.txt]'.)43 -b(The)31 b(op)s(erations)g(can)0 5328 y(extend)k(o)m(v)m(er)h(m)m -(ultiple)g(lines)f(of)g(the)g(\014le,)h(but)e(m)m(ultiple)i(op)s -(erations)f(m)m(ust)f(still)i(b)s(e)e(separated)i(b)m(y)e(commas)0 -5441 y(or)e(semi-colons.)47 b(An)m(y)32 b(lines)h(in)f(the)g(external)h -(text)g(\014le)f(that)h(b)s(egin)e(with)h(2)h(slash)e(c)m(haracters)j -(\('//'\))g(will)f(b)s(e)0 5554 y(ignored)d(and)g(ma)m(y)h(b)s(e)f -(used)g(to)h(add)e(commen)m(ts)j(in)m(to)f(the)g(\014le.)0 -5714 y(Examples:)p eop end +b(and)f(other)h(columns)g(\(in)g(the)g(same)p eop end %%Page: 96 102 -TeXDict begin 96 101 bop 0 299 a Fi(96)1618 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)143 -555 y Fe([col)47 b(Time,)f(rate])667 b(-)47 b(only)g(the)g(Time)g(and)g -(rate)f(columns)g(will)1670 668 y(appear)h(in)g(the)g(filtered)e(input) -i(file.)143 894 y([col)g(Time,)f(*raw])667 b(-)47 b(include)f(the)h -(Time)g(column)f(and)h(any)g(other)1670 1007 y(columns)f(whose)h(name)f -(ends)h(with)g('raw'.)143 1233 y([col)g(-TIME;)f(Good)h(==)g(STATUS]) -141 b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 -1346 y(renames)g(the)h(status)f(column)g(to)i('Good')143 -1571 y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2;)e(#TUNIT#\(column)e(units\))i -(=)i('counts';*])1575 1684 y(-)f(creates)f(new)h(PI)g(column)f(from)h -(PHA)g(values)1670 1797 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword) -1670 1910 y(for)h(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670 -2023 y(expression)f(means)i(preserve)e(all)i(the)1670 -2136 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670 -2249 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670 -2362 y(the)g(output)f(table)h(would)f(only)h(contain)1670 -2475 y(the)g(single)f('PI')h(column.)143 2700 y([col)g(rate)f(=)i +TeXDict begin 96 101 bop 0 299 a Fj(96)1618 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(ro)m(w\).)63 b(The)37 b(full)g(syn)m(tax)i(and)e(a)m(v)-5 +b(ailable)40 b(functions)d(for)g(the)h(expression)f(are)h(describ)s(ed) +f(b)s(elo)m(w)h(in)f(the)h(ro)m(w)0 668 y(\014lter)30 +b(sp)s(eci\014cation)i(section.)0 828 y(If)27 b(the)h(expression)g(con) +m(tains)g(b)s(oth)f(a)h(list)h(of)f(columns)f(to)h(b)s(e)g(included)e +(and)i(columns)f(to)h(b)s(e)f(deleted,)j(then)d(all)0 +941 y(the)34 b(columns)g(in)g(the)g(original)h(table)g(except)g(the)f +(explicitly)i(deleted)f(columns)e(will)i(app)s(ear)e(in)h(the)g +(\014ltered)0 1054 y(table.)40 b(If)26 b(no)g(columns)f(to)i(b)s(e)f +(deleted)g(are)h(sp)s(eci\014ed,)f(then)g(only)g(the)h(columns)e(that)i +(are)f(explicitly)i(listed)f(will)0 1167 y(b)s(e)k(included)g(in)g(the) +h(\014ltered)f(output)h(table.)45 b(T)-8 b(o)32 b(include)f(all)i(the)e +(columns,)h(add)f(the)h('*')g(wildcard)g(sp)s(eci\014er)0 +1280 y(at)f(the)g(end)e(of)i(the)f(list,)i(as)e(sho)m(wn)g(in)g(the)h +(examples.)0 1440 y(F)-8 b(or)30 b(complex)h(or)e(commonly)h(used)f(op) +s(erations,)i(one)e(can)h(also)h(place)g(the)e(op)s(erations)h(in)m(to) +h(an)e(external)i(text)0 1553 y(\014le)g(and)f(imp)s(ort)g(it)h(in)m +(to)h(the)f(column)g(\014lter)f(using)h(the)g(syn)m(tax)g('[col)h +(@\014lename.txt]'.)43 b(The)31 b(op)s(erations)g(can)0 +1666 y(extend)k(o)m(v)m(er)h(m)m(ultiple)g(lines)f(of)g(the)g(\014le,)h +(but)e(m)m(ultiple)i(op)s(erations)f(m)m(ust)f(still)i(b)s(e)e +(separated)i(b)m(y)e(commas)0 1779 y(or)e(semi-colons.)47 +b(An)m(y)32 b(lines)h(in)f(the)g(external)h(text)g(\014le)f(that)h(b)s +(egin)e(with)h(2)h(slash)e(c)m(haracters)j(\('//'\))g(will)f(b)s(e)0 +1892 y(ignored)d(and)g(ma)m(y)h(b)s(e)f(used)g(to)h(add)e(commen)m(ts)j +(in)m(to)f(the)g(\014le.)0 2052 y(Examples:)143 2439 +y Ff([col)47 b(Time,)f(rate])667 b(-)47 b(only)g(the)g(Time)g(and)g +(rate)f(columns)g(will)1670 2552 y(appear)h(in)g(the)g(filtered)e +(input)i(file.)143 2778 y([col)g(Time,)f(*raw])667 b(-)47 +b(include)f(the)h(Time)g(column)f(and)h(any)g(other)1670 +2891 y(columns)f(whose)h(name)f(ends)h(with)g('raw'.)143 +3117 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141 b(-)47 +b(deletes)f(the)h(TIME)g(column)f(and)1670 3230 y(renames)g(the)h +(status)f(column)g(to)i('Good')143 3456 y([col)f(PI=PHA)f(*)h(1.1)g(+)h +(0.2;)e(#TUNIT#\(column)e(units\))i(=)i('counts';*])1575 +3569 y(-)f(creates)f(new)h(PI)g(column)f(from)h(PHA)g(values)1670 +3681 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword)1670 +3794 y(for)h(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670 +3907 y(expression)f(means)i(preserve)e(all)i(the)1670 +4020 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670 +4133 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670 +4246 y(the)g(output)f(table)h(would)f(only)h(contain)1670 +4359 y(the)g(single)f('PI')h(column.)143 4585 y([col)g(rate)f(=)i (rate/exposure,)c(TUNIT#\(&\))h(=)j('counts/s';*])1575 -2813 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670 -2926 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670 -3039 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670 -3152 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670 -3265 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670 -3378 y(string)h(means)f(preserve)f(the)i(existing)1670 -3491 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670 -3604 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670 -3717 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670 -3830 y(output)g(table.)0 4400 y Fd(8.11)136 b(Ro)l(w)45 -b(Filtering)h(Sp)t(eci\014cation)0 4698 y Fi(When)29 -b(en)m(tering)h(the)f(name)g(of)g(a)g(FITS)f(table)i(that)g(is)e(to)i -(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g(optional)h(ro)m(w)f -(\014lter)0 4811 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f(to)h(select)h(a)g -(subset)e(of)h(the)g(ro)m(ws)f(in)h(the)g(table.)43 b(A)31 -b(temp)s(orary)f(new)g(FITS)g(\014le)h(is)g(created)0 -4924 y(on)25 b(the)h(\015y)e(whic)m(h)h(con)m(tains)h(only)g(those)g +4698 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670 +4811 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670 +4924 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670 +5036 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670 +5149 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670 +5262 y(string)h(means)f(preserve)f(the)i(existing)1670 +5375 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670 +5488 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670 +5601 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670 +5714 y(output)g(table.)p eop end +%%Page: 97 103 +TeXDict begin 97 102 bop 0 299 a Fh(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fj(97)0 +555 y Fe(8.11)136 b(Ro)l(w)45 b(Filtering)h(Sp)t(eci\014cation)0 +806 y Fj(When)29 b(en)m(tering)h(the)f(name)g(of)g(a)g(FITS)f(table)i +(that)g(is)e(to)i(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g +(optional)h(ro)m(w)f(\014lter)0 919 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f +(to)h(select)h(a)g(subset)e(of)h(the)g(ro)m(ws)f(in)h(the)g(table.)43 +b(A)31 b(temp)s(orary)f(new)g(FITS)g(\014le)h(is)g(created)0 +1032 y(on)25 b(the)h(\015y)e(whic)m(h)h(con)m(tains)h(only)g(those)g (ro)m(ws)f(for)g(whic)m(h)g(the)g(ro)m(w)g(\014lter)h(expression)f(ev) --5 b(aluates)26 b(to)g(true.)39 b(\(The)0 5036 y(primary)26 +-5 b(aluates)26 b(to)g(true.)39 b(\(The)0 1144 y(primary)26 b(arra)m(y)h(and)f(an)m(y)g(other)h(extensions)g(in)f(the)h(input)f (\014le)g(are)h(also)h(copied)f(to)g(the)f(temp)s(orary)h(\014le\).)39 -b(The)0 5149 y(original)30 b(FITS)f(\014le)g(is)g(closed)h(and)e(the)i +b(The)0 1257 y(original)30 b(FITS)f(\014le)g(is)g(closed)h(and)e(the)i (new)e(virtual)i(\014le)f(is)g(op)s(ened)f(b)m(y)h(the)h(application)g -(program.)40 b(The)29 b(ro)m(w)0 5262 y(\014lter)37 b(expression)g(is)h +(program.)40 b(The)29 b(ro)m(w)0 1370 y(\014lter)37 b(expression)g(is)h (enclosed)g(in)f(square)g(brac)m(k)m(ets)i(follo)m(wing)g(the)e(\014le) -h(name)f(and)g(extension)h(name)f(\(e.g.,)0 5375 y('\014le.\014ts[ev)m +h(name)f(and)g(extension)h(name)f(\(e.g.,)0 1483 y('\014le.\014ts[ev)m (en)m(ts][GRADE==50]')29 b(selects)d(only)f(those)h(ro)m(ws)f(where)f (the)h(GRADE)h(column)f(v)-5 b(alue)25 b(equals)g(50\).)0 -5488 y(When)33 b(dealing)h(with)f(tables)g(where)g(eac)m(h)h(ro)m(w)f +1596 y(When)33 b(dealing)h(with)f(tables)g(where)g(eac)m(h)h(ro)m(w)f (has)g(an)g(asso)s(ciated)i(time)f(and/or)f(2D)g(spatial)i(p)s -(osition,)f(the)0 5601 y(ro)m(w)e(\014lter)h(expression)e(can)i(also)g +(osition,)f(the)0 1709 y(ro)m(w)e(\014lter)h(expression)e(can)i(also)g (b)s(e)f(used)f(to)i(select)h(ro)m(ws)e(based)g(on)g(the)g(times)h(in)f -(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5 b(als)0 5714 y(\(GTI\))31 +(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5 b(als)0 1822 y(\(GTI\))31 b(extension,)g(or)f(on)h(spatial)g(p)s(osition)g(as)f(giv)m(en)i(in)e -(a)g(SA)m(O-st)m(yle)i(region)f(\014le.)p eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 -b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(97)0 -555 y Fb(8.11.1)113 b(General)38 b(Syn)m(tax)0 774 y -Fi(The)32 b(ro)m(w)h(\014ltering)g(expression)g(can)g(b)s(e)f(an)h -(arbitrarily)g(complex)g(series)g(of)g(op)s(erations)g(p)s(erformed)f -(on)g(con-)0 887 y(stan)m(ts,)39 b(k)m(eyw)m(ord)e(v)-5 -b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f(from)f(the)h(sp)s -(eci\014ed)e(FITS)h(T)-8 b(ABLE)37 b(extension.)59 b(The)0 -1000 y(expression)37 b(m)m(ust)h(ev)-5 b(aluate)39 b(to)g(a)f(b)s(o)s -(olean)g(v)-5 b(alue)38 b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k -(where)c(a)h(v)-5 b(alue)39 b(of)e(F)-10 b(ALSE)0 1113 -y(means)30 b(that)h(the)g(ro)m(w)f(will)h(b)s(e)f(excluded.)0 -1273 y(F)-8 b(or)34 b(complex)g(or)g(commonly)f(used)g(\014lters,)h -(one)g(can)g(place)g(the)g(expression)f(in)m(to)h(a)g(text)g(\014le)g -(and)f(imp)s(ort)f(it)0 1386 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g -(using)f(the)h(syn)m(tax)g('[@\014lename.txt]'.)61 b(The)36 -b(expression)h(can)f(b)s(e)g(arbitrarily)h(complex)0 -1499 y(and)27 b(extend)i(o)m(v)m(er)g(m)m(ultiple)g(lines)f(of)g(the)h -(\014le.)40 b(An)m(y)28 b(lines)g(in)g(the)g(external)h(text)g(\014le)f -(that)h(b)s(egin)f(with)g(2)g(slash)0 1612 y(c)m(haracters)k(\('//'\))g -(will)f(b)s(e)f(ignored)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f -(commen)m(ts)h(in)m(to)h(the)e(\014le.)0 1772 y(Keyw)m(ord)37 -b(and)f(column)g(data)i(are)f(referenced)g(b)m(y)g(name.)60 -b(An)m(y)37 b(string)f(of)h(c)m(haracters)i(not)e(surrounded)d(b)m(y)0 -1885 y(quotes)41 b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w) -m(ed)i(b)m(y)f(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f -(name\))h(will)g(b)s(e)0 1998 y(initially)d(in)m(terpreted)e(as)h(a)g -(column)f(name)g(and)g(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f -(ro)m(w)g(inserted)g(in)m(to)i(the)e(ex-)0 2111 y(pression.)k(If)28 +(a)g(SA)m(O-st)m(yle)i(region)f(\014le.)0 2114 y Fc(8.11.1)113 +b(General)38 b(Syn)m(tax)0 2333 y Fj(The)32 b(ro)m(w)h(\014ltering)g +(expression)g(can)g(b)s(e)f(an)h(arbitrarily)g(complex)g(series)g(of)g +(op)s(erations)g(p)s(erformed)f(on)g(con-)0 2446 y(stan)m(ts,)39 +b(k)m(eyw)m(ord)e(v)-5 b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f +(from)f(the)h(sp)s(eci\014ed)e(FITS)h(T)-8 b(ABLE)37 +b(extension.)59 b(The)0 2559 y(expression)37 b(m)m(ust)h(ev)-5 +b(aluate)39 b(to)g(a)f(b)s(o)s(olean)g(v)-5 b(alue)38 +b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k(where)c(a)h(v)-5 +b(alue)39 b(of)e(F)-10 b(ALSE)0 2672 y(means)30 b(that)h(the)g(ro)m(w)f +(will)h(b)s(e)f(excluded.)0 2832 y(F)-8 b(or)34 b(complex)g(or)g +(commonly)f(used)g(\014lters,)h(one)g(can)g(place)g(the)g(expression)f +(in)m(to)h(a)g(text)g(\014le)g(and)f(imp)s(ort)f(it)0 +2945 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g(using)f(the)h(syn)m(tax)g +('[@\014lename.txt]'.)61 b(The)36 b(expression)h(can)f(b)s(e)g +(arbitrarily)h(complex)0 3058 y(and)27 b(extend)i(o)m(v)m(er)g(m)m +(ultiple)g(lines)f(of)g(the)h(\014le.)40 b(An)m(y)28 +b(lines)g(in)g(the)g(external)h(text)g(\014le)f(that)h(b)s(egin)f(with) +g(2)g(slash)0 3171 y(c)m(haracters)k(\('//'\))g(will)f(b)s(e)f(ignored) +g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the) +e(\014le.)0 3331 y(Keyw)m(ord)37 b(and)f(column)g(data)i(are)f +(referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)f(of)h(c)m +(haracters)i(not)e(surrounded)d(b)m(y)0 3444 y(quotes)41 +b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w)m(ed)i(b)m(y)f +(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f(name\))h(will)g +(b)s(e)0 3557 y(initially)d(in)m(terpreted)e(as)h(a)g(column)f(name)g +(and)g(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f(ro)m(w)g +(inserted)g(in)m(to)i(the)e(ex-)0 3670 y(pression.)k(If)28 b(no)h(suc)m(h)g(column)g(exists,)h(a)g(k)m(eyw)m(ord)f(of)h(that)f (name)g(will)h(b)s(e)e(searc)m(hed)i(for)f(and)f(its)i(v)-5 -b(alue)29 b(used,)0 2223 y(if)36 b(found.)55 b(T)-8 b(o)36 +b(alue)29 b(used,)0 3783 y(if)36 b(found.)55 b(T)-8 b(o)36 b(force)g(the)g(name)g(to)h(b)s(e)e(in)m(terpreted)h(as)g(a)g(k)m(eyw)m (ord)g(\(in)g(case)g(there)g(is)g(b)s(oth)f(a)h(column)g(and)0 -2336 y(k)m(eyw)m(ord)41 b(with)e(the)i(same)f(name\),)j(precede)d(the)h +3896 y(k)m(eyw)m(ord)41 b(with)e(the)i(same)f(name\),)j(precede)d(the)h (k)m(eyw)m(ord)f(name)g(with)g(a)h(single)f(p)s(ound)e(sign,)43 -b('#',)g(as)d(in)0 2449 y('#NAXIS2'.)g(Due)27 b(to)g(the)f +b('#',)g(as)d(in)0 4009 y('#NAXIS2'.)g(Due)27 b(to)g(the)f (generalities)j(of)d(FITS)g(column)g(and)g(k)m(eyw)m(ord)h(names,)g(if) -f(the)h(column)f(or)g(k)m(eyw)m(ord)0 2562 y(name)33 +f(the)h(column)f(or)g(k)m(eyw)m(ord)0 4121 y(name)33 b(con)m(tains)h(a)f(space)h(or)f(a)g(c)m(haracter)h(whic)m(h)f(migh)m (t)h(app)s(ear)e(as)h(an)g(arithmetic)h(term)f(then)g(enclose)h(the)0 -2675 y(name)c(in)g('$')i(c)m(haracters)g(as)e(in)g($MAX)i(PHA$)f(or)f +4234 y(name)c(in)g('$')i(c)m(haracters)g(as)e(in)g($MAX)i(PHA$)f(or)f (#$MAX-PHA$.)43 b(Names)31 b(are)f(case)i(insensitiv)m(e.)0 -2835 y(T)-8 b(o)32 b(access)g(a)g(table)g(en)m(try)g(in)f(a)h(ro)m(w)f +4394 y(T)-8 b(o)32 b(access)g(a)g(table)g(en)m(try)g(in)f(a)h(ro)m(w)f (other)h(than)f(the)g(curren)m(t)g(one,)h(follo)m(w)h(the)e(column's)h -(name)f(with)g(a)h(ro)m(w)0 2948 y(o\013set)37 b(within)e(curly)g -(braces.)57 b(F)-8 b(or)36 b(example,)i('PHA)p Fc(f)p -Fi(-3)p Fc(g)p Fi(')g(will)e(ev)-5 b(aluate)38 b(to)e(the)g(v)-5 -b(alue)36 b(of)g(column)f(PHA,)i(3)0 3061 y(ro)m(ws)28 +(name)f(with)g(a)h(ro)m(w)0 4507 y(o\013set)37 b(within)e(curly)g +(braces.)57 b(F)-8 b(or)36 b(example,)i('PHA)p Fd(f)p +Fj(-3)p Fd(g)p Fj(')g(will)e(ev)-5 b(aluate)38 b(to)e(the)g(v)-5 +b(alue)36 b(of)g(column)f(PHA,)i(3)0 4620 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s(eing)g(pro)s (cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)f(an)g(absolute)h(ro)m(w)f -(n)m(um)m(b)s(er,)g(only)h(a)0 3174 y(relativ)m(e)j(o\013set.)42 +(n)m(um)m(b)s(er,)g(only)h(a)0 4733 y(relativ)m(e)j(o\013set.)42 b(Ro)m(ws)31 b(that)g(fall)g(outside)g(the)f(table)h(will)g(b)s(e)f -(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 3334 y(Bo)s(olean)h(op)s -(erators)f(can)g(b)s(e)f(used)f(in)i(the)f(expression)h(in)f(either)h -(their)g(F)-8 b(ortran)31 b(or)f(C)h(forms.)40 b(The)30 -b(follo)m(wing)0 3447 y(b)s(o)s(olean)g(op)s(erators)h(are)g(a)m(v)-5 -b(ailable:)191 3698 y Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 -b("not)46 b(equal")476 b(.ne.)94 b(.NE.)h(!=)191 3811 -y("less)46 b(than")238 b(.lt.)46 b(.LT.)h(<)143 b("less)46 -b(than/equal")188 b(.le.)94 b(.LE.)h(<=)47 b(=<)191 3923 -y("greater)e(than")95 b(.gt.)46 b(.GT.)h(>)143 b("greater)45 -b(than/equal")g(.ge.)94 b(.GE.)h(>=)47 b(=>)191 4036 -y("or")572 b(.or.)46 b(.OR.)h(||)95 b("and")762 b(.and.)46 -b(.AND.)h(&&)191 4149 y("negation")236 b(.not.)46 b(.NOT.)h(!)95 -b("approx.)45 b(equal\(1e-7\)")92 b(~)0 4400 y Fi(Note)32 -b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(')10 b(!',)33 -b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g(it)g(is)g -(used)f(on)h(the)g(command)0 4513 y(line)i(rather)f(than)h(en)m(tered)g -(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g(preceded)h(b)m(y)f(a) -h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0 4626 y(shell)e(to)g(ignore)g -(it.)0 4786 y(The)h(expression)g(ma)m(y)i(also)f(include)f(arithmetic)i -(op)s(erators)f(and)f(functions.)47 b(T)-8 b(rigonometric)34 -b(functions)e(use)0 4899 y(radians,)23 b(not)g(degrees.)38 -b(The)22 b(follo)m(wing)h(arithmetic)g(op)s(erators)g(and)e(functions)g -(can)i(b)s(e)e(used)g(in)h(the)g(expression)0 5012 y(\(function)38 -b(names)f(are)h(case)g(insensitiv)m(e\).)64 b(A)37 b(n)m(ull)h(v)-5 -b(alue)38 b(will)f(b)s(e)g(returned)g(in)g(case)h(of)g(illegal)i(op)s -(erations)0 5125 y(suc)m(h)30 b(as)h(divide)f(b)m(y)g(zero,)i -(sqrt\(negativ)m(e\))h(log\(negativ)m(e\),)h(log10\(negativ)m(e\),)i -(arccos\(.gt.)43 b(1\),)32 b(arcsin\(.gt.)42 b(1\).)191 -5375 y Fe("addition")522 b(+)477 b("subtraction")d(-)191 -5488 y("multiplication")234 b(*)477 b("division")618 -b(/)191 5601 y("negation")522 b(-)477 b("exponentiation")330 -b(**)143 b(^)191 5714 y("absolute)45 b(value")237 b(abs\(x\))g -("cosine")714 b(cos\(x\))p eop end +(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 4893 y(When)36 +b(using)f(ro)m(w)h(\014ltering)g(to)g(op)s(en)g(a)g(\014le)g(\\on)g +(the)g(\015y)-8 b(,")38 b(it)e(is)g(p)s(ermitted)f(to)i(use)e(m)m +(ultiple)i(ro)m(w)f(\014ltering)0 5006 y(expressions.)k(F)-8 +b(or)31 b(example,)h(the)e(expression)95 5242 y Ff(filename.fits[#ROW) +43 b(>)48 b(5][X.gt.7])0 5478 y Fj(w)m(ould)30 b(b)s(e)g(treated)h(as)g +(equiv)-5 b(alen)m(t)32 b(to)f(joining)f(the)h(expressions)f(with)g +(logical)j(\\and")d(lik)m(e)i(this,)95 5714 y Ff(filename.fits[\(#ROW) +43 b(>)k(5\)&&\(X.gt.7\)])p eop end %%Page: 98 104 -TeXDict begin 98 103 bop 0 299 a Fi(98)1618 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 -555 y Fe("sine")714 b(sin\(x\))237 b("tangent")666 b(tan\(x\))191 -668 y("arc)47 b(cosine")427 b(arccos\(x\))93 b("arc)47 -b(sine")619 b(arcsin\(x\))191 781 y("arc)47 b(tangent")379 -b(arctan\(x\))93 b("arc)47 b(tangent")475 b(arctan2\(y,x\))191 -894 y("hyperbolic)45 b(cos")237 b(cosh\(x\))189 b("hyperbolic)45 -b(sin")333 b(sinh\(x\))191 1007 y("hyperbolic)45 b(tan")237 -b(tanh\(x\))189 b("round)46 b(to)h(nearest)f(int")h(round\(x\))191 -1120 y("round)f(down)h(to)g(int")94 b(floor\(x\))141 -b("round)46 b(up)h(to)h(int")285 b(ceil\(x\))191 1233 -y("exponential")378 b(exp\(x\))237 b("square)46 b(root")476 -b(sqrt\(x\))191 1346 y("natural)45 b(log")381 b(log\(x\))237 -b("common)46 b(log")524 b(log10\(x\))191 1458 y("modulus")570 -b(x)48 b(\045)f(y)286 b("random)46 b(#)h([0.0,1.0\)")141 -b(random\(\))191 1571 y("random)46 b(Gaussian")188 b(randomn\(\))93 -b("random)46 b(Poisson")332 b(randomp\(x\))191 1684 y("minimum")570 -b(min\(x,y\))141 b("maximum")666 b(max\(x,y\))191 1797 -y("cumulative)45 b(sum")237 b(accum\(x\))93 b("sequential)45 -b(difference")g(seqdiff\(x\))191 1910 y("if-then-else")330 -b(b?x:y)191 2023 y("angular)45 b(separation")93 b -(angsep\(ra1,dec1,ra2,de2\))41 b(\(all)47 b(in)g(degrees\))191 -2136 y("substring")283 b(strmid\(s,p,n\))44 b("string)i(search")428 -b(strstr\(s,r\))0 2382 y Fi(Three)30 b(di\013eren)m(t)h(random)f(n)m -(um)m(b)s(er)f(functions)h(are)h(pro)m(vided:)41 b(random\(\),)30 -b(with)h(no)f(argumen)m(ts,)h(pro)s(duces)f(a)0 2495 -y(uniform)g(random)f(deviate)k(b)s(et)m(w)m(een)e(0)g(and)f(1;)i +TeXDict begin 98 103 bop 0 299 a Fj(98)1618 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(Please)35 b(note)g(that)g(if)g(m)m(ultiple)g(ro)m(w)f +(\014ltering)h(expressions)e(are)i(used,)g(it)g(is)f(not)h(p)s +(ermitted)e(to)i(also)h(use)e(the)0 668 y Ff([@filename.txt])26 +b Fj(syn)m(tax)31 b(in)f(an)m(y)h(of)f(the)h(individual)f(expressions.) +0 828 y(Bo)s(olean)i(op)s(erators)f(can)g(b)s(e)f(used)f(in)i(the)f +(expression)h(in)f(either)h(their)g(F)-8 b(ortran)31 +b(or)f(C)h(forms.)40 b(The)30 b(follo)m(wing)0 941 y(b)s(o)s(olean)g +(op)s(erators)h(are)g(a)m(v)-5 b(ailable:)191 1179 y +Ff("equal")428 b(.eq.)46 b(.EQ.)h(==)95 b("not)46 b(equal")476 +b(.ne.)94 b(.NE.)h(!=)191 1292 y("less)46 b(than")238 +b(.lt.)46 b(.LT.)h(<)143 b("less)46 b(than/equal")188 +b(.le.)94 b(.LE.)h(<=)47 b(=<)191 1405 y("greater)e(than")95 +b(.gt.)46 b(.GT.)h(>)143 b("greater)45 b(than/equal")g(.ge.)94 +b(.GE.)h(>=)47 b(=>)191 1518 y("or")572 b(.or.)46 b(.OR.)h(||)95 +b("and")762 b(.and.)46 b(.AND.)h(&&)191 1631 y("negation")236 +b(.not.)46 b(.NOT.)h(!)95 b("approx.)45 b(equal\(1e-7\)")92 +b(~)0 1869 y Fj(Note)32 b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(') +10 b(!',)33 b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g +(it)g(is)g(used)f(on)h(the)g(command)0 1982 y(line)i(rather)f(than)h +(en)m(tered)g(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g +(preceded)h(b)m(y)f(a)h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0 +2095 y(shell)e(to)g(ignore)g(it.)0 2255 y(The)h(expression)g(ma)m(y)i +(also)f(include)f(arithmetic)i(op)s(erators)f(and)f(functions.)47 +b(T)-8 b(rigonometric)34 b(functions)e(use)0 2368 y(radians,)23 +b(not)g(degrees.)38 b(The)22 b(follo)m(wing)h(arithmetic)g(op)s +(erators)g(and)e(functions)g(can)i(b)s(e)e(used)g(in)h(the)g +(expression)0 2481 y(\(function)38 b(names)f(are)h(case)g(insensitiv)m +(e\).)64 b(A)37 b(n)m(ull)h(v)-5 b(alue)38 b(will)f(b)s(e)g(returned)g +(in)g(case)h(of)g(illegal)i(op)s(erations)0 2594 y(suc)m(h)30 +b(as)h(divide)f(b)m(y)g(zero,)i(sqrt\(negativ)m(e\))h(log\(negativ)m +(e\),)h(log10\(negativ)m(e\),)i(arccos\(.gt.)43 b(1\),)32 +b(arcsin\(.gt.)42 b(1\).)191 2832 y Ff("addition")522 +b(+)477 b("subtraction")d(-)191 2945 y("multiplication")234 +b(*)477 b("division")618 b(/)191 3057 y("negation")522 +b(-)477 b("exponentiation")330 b(**)143 b(^)191 3170 +y("absolute)45 b(value")237 b(abs\(x\))g("cosine")714 +b(cos\(x\))191 3283 y("sine")g(sin\(x\))237 b("tangent")666 +b(tan\(x\))191 3396 y("arc)47 b(cosine")427 b(arccos\(x\))93 +b("arc)47 b(sine")619 b(arcsin\(x\))191 3509 y("arc)47 +b(tangent")379 b(arctan\(x\))93 b("arc)47 b(tangent")475 +b(arctan2\(y,x\))191 3622 y("hyperbolic)45 b(cos")237 +b(cosh\(x\))189 b("hyperbolic)45 b(sin")333 b(sinh\(x\))191 +3735 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189 b("round)46 +b(to)h(nearest)f(int")h(round\(x\))191 3848 y("round)f(down)h(to)g +(int")94 b(floor\(x\))141 b("round)46 b(up)h(to)h(int")285 +b(ceil\(x\))191 3961 y("exponential")378 b(exp\(x\))237 +b("square)46 b(root")476 b(sqrt\(x\))191 4074 y("natural)45 +b(log")381 b(log\(x\))237 b("common)46 b(log")524 b(log10\(x\))191 +4187 y("modulus")570 b(x)48 b(\045)f(y)191 4299 y("bitwise)e(AND")381 +b(x)48 b(&)f(y)286 b("bitwise)46 b(OR")524 b(x)47 b(|)h(y)191 +4412 y("bitwise)d(XOR")381 b(x)48 b(^^)f(y)238 b(\(bitwise)46 +b(operators)f(are)i(32-bit)f(int)h(only\))191 4525 y("random)f(#)h +([0.0,1.0\)")e(random\(\))191 4638 y("random)h(Gaussian")188 +b(randomn\(\))93 b("random)46 b(Poisson")332 b(randomp\(x\))191 +4751 y("minimum")570 b(min\(x,y\))141 b("maximum")666 +b(max\(x,y\))191 4864 y("cumulative)45 b(sum")237 b(accum\(x\))141 +b("sequential)45 b(difference")g(seqdiff\(x\))191 4977 +y("if-then-else")330 b(b?x:y)191 5090 y("angular)45 b(separation")g +(angsep\(ra1,dec1,ra2,de2\))c(\(all)47 b(in)g(degrees\))191 +5203 y("substring")474 b(strmid\(s,p,n\))44 b("string)i(search")237 +b(strstr\(s,r\))0 5441 y Fj(The)30 b(bit)m(wise)h(op)s(erators)f(for)h +(AND,)g(OR)f(and)g(X)m(OR)g(op)s(erate)h(up)s(on)e(32-bit)j(in)m(teger) +f(expressions)f(only)-8 b(.)0 5601 y(Three)30 b(di\013eren)m(t)h +(random)f(n)m(um)m(b)s(er)f(functions)h(are)h(pro)m(vided:)41 +b(random\(\),)30 b(with)h(no)f(argumen)m(ts,)h(pro)s(duces)f(a)0 +5714 y(uniform)g(random)f(deviate)k(b)s(et)m(w)m(een)e(0)g(and)f(1;)i (randomn\(\),)e(also)i(with)e(no)h(argumen)m(ts,)g(pro)s(duces)f(a)h -(normal)0 2608 y(\(Gaussian\))k(random)e(deviate)j(with)e(zero)h(mean)f -(and)g(unit)f(standard)h(deviation;)j(randomp\(x\))d(pro)s(duces)f(a)0 -2721 y(P)m(oisson)27 b(random)f(deviate)h(whose)f(exp)s(ected)h(n)m(um) -m(b)s(er)e(of)h(coun)m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s(e)e(an)m(y)i(p)s -(ositiv)m(e)g(real)g(n)m(um)m(b)s(er)0 2833 y(of)k(exp)s(ected)f(coun)m +(normal)p eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 0 299 a Fh(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fj(99)0 +555 y(\(Gaussian\))35 b(random)e(deviate)j(with)e(zero)h(mean)f(and)g +(unit)f(standard)h(deviation;)j(randomp\(x\))d(pro)s(duces)f(a)0 +668 y(P)m(oisson)27 b(random)f(deviate)h(whose)f(exp)s(ected)h(n)m(um)m +(b)s(er)e(of)h(coun)m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s(e)e(an)m(y)i(p)s +(ositiv)m(e)g(real)g(n)m(um)m(b)s(er)0 781 y(of)k(exp)s(ected)f(coun)m (ts,)h(including)f(fractional)i(v)-5 b(alues,)31 b(but)f(the)g(return)g -(v)-5 b(alue)31 b(is)f(an)g(in)m(teger.)0 2994 y(When)d(the)g(random)g +(v)-5 b(alue)31 b(is)f(an)g(in)m(teger.)0 941 y(When)d(the)g(random)g (functions)f(are)i(used)e(in)h(a)h(v)m(ector)g(expression,)g(b)m(y)f (default)h(the)f(same)h(random)e(v)-5 b(alue)28 b(will)0 -3107 y(b)s(e)g(used)f(when)h(ev)-5 b(aluating)30 b(eac)m(h)f(elemen)m +1054 y(b)s(e)g(used)f(when)h(ev)-5 b(aluating)30 b(eac)m(h)f(elemen)m (t)h(of)f(the)g(v)m(ector.)41 b(If)28 b(di\013eren)m(t)h(random)f(n)m -(um)m(b)s(ers)f(are)i(desired,)f(then)0 3219 y(the)37 +(um)m(b)s(ers)f(are)i(desired,)f(then)0 1167 y(the)37 b(name)g(of)g(a)g(v)m(ector)i(column)e(should)e(b)s(e)i(supplied)e(as)i (the)h(single)f(argumen)m(t)g(to)h(the)f(random)f(function)0 -3332 y(\(e.g.,)31 b("\015ux)c(+)h(0.1)h(*)g(random\(\015ux\)",)f(where) -g("\015ux')g(is)g(the)g(name)h(of)f(a)h(v)m(ector)h(column\).)40 -b(This)27 b(will)i(create)h(a)0 3445 y(v)m(ector)d(of)f(random)f(n)m -(um)m(b)s(ers)f(that)i(will)g(b)s(e)f(used)f(in)i(sequence)g(when)e(ev) --5 b(aluating)27 b(eac)m(h)g(elemen)m(t)g(of)f(the)f(v)m(ector)0 -3558 y(expression.)0 3718 y(An)31 b(alternate)i(syn)m(tax)f(for)f(the)g -(min)g(and)g(max)g(functions)g(has)g(only)g(a)h(single)g(argumen)m(t)g -(whic)m(h)f(should)f(b)s(e)h(a)0 3831 y(v)m(ector)g(v)-5 +1280 y(\(e.g.,)e("\015ux)c(+)h(0.1)i(*)e(random\(\015ux\)",)h(where)f +("\015ux")g(is)g(the)h(name)f(of)h(a)f(v)m(ector)i(column\).)44 +b(This)31 b(will)g(create)0 1393 y(a)38 b(v)m(ector)i(of)e(random)f(n)m +(um)m(b)s(ers)f(that)j(will)f(b)s(e)f(used)g(in)h(sequence)g(when)f(ev) +-5 b(aluating)39 b(eac)m(h)g(elemen)m(t)h(of)e(the)0 +1506 y(v)m(ector)32 b(expression.)0 1666 y(An)f(alternate)i(syn)m(tax)f +(for)f(the)g(min)g(and)g(max)g(functions)g(has)g(only)g(a)h(single)g +(argumen)m(t)g(whic)m(h)f(should)f(b)s(e)h(a)0 1779 y(v)m(ector)g(v)-5 b(alue)30 b(\(see)g(b)s(elo)m(w\).)41 b(The)29 b(result)g(will)h(b)s(e) e(the)i(minim)m(um/maxim)m(um)f(elemen)m(t)h(con)m(tained)h(within)e -(the)0 3944 y(v)m(ector.)0 4104 y(The)35 b(accum\(x\))i(function)f +(the)0 1892 y(v)m(ector.)0 2052 y(The)35 b(accum\(x\))i(function)f (forms)f(the)h(cum)m(ulativ)m(e)i(sum)d(of)h(x,)h(elemen)m(t)h(b)m(y)e -(elemen)m(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 4217 +(elemen)m(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 2165 y(supp)s(orted)h(simply)h(b)m(y)g(p)s(erforming)f(the)i(summation)g (pro)s(cess)f(through)f(all)j(the)f(v)-5 b(alues.)65 -b(Null)39 b(v)-5 b(alues)39 b(are)0 4330 y(treated)30 +b(Null)39 b(v)-5 b(alues)39 b(are)0 2278 y(treated)30 b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))h(function)e(forms)h(the)g (sequen)m(tial)i(di\013erence)e(of)h(x,)f(elemen)m(t)i(b)m(y)e(elemen)m -(t.)41 b(The)0 4443 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g +(t.)41 b(The)0 2391 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g (is)g(the)g(\014rst)g(v)-5 b(alue)37 b(of)g(x.)61 b(A)37 b(single)h(n)m(ull)f(v)-5 b(alue)38 b(in)e(x)h(causes)h(a)f(pair)g(of)g -(n)m(ulls)g(in)g(the)0 4556 y(output.)55 b(The)35 b(seqdi\013)g(and)g +(n)m(ulls)g(in)g(the)0 2503 y(output.)55 b(The)35 b(seqdi\013)g(and)g (accum)g(functions)g(are)h(functional)f(in)m(v)m(erses,)j(i.e.,)g -(seqdi\013\(accum\(x\)\))f(==)e(x)g(as)0 4669 y(long)c(as)g(no)f(n)m -(ull)g(v)-5 b(alues)31 b(are)g(presen)m(t.)0 4829 y(In)36 +(seqdi\013\(accum\(x\)\))f(==)e(x)g(as)0 2616 y(long)c(as)g(no)f(n)m +(ull)g(v)-5 b(alues)31 b(are)g(presen)m(t.)0 2777 y(In)36 b(the)h(if-then-else)i(expression,)f("b?x:y",)i(b)c(is)h(an)g(explicit) h(b)s(o)s(olean)f(v)-5 b(alue)37 b(or)g(expression.)61 -b(There)36 b(is)h(no)0 4942 y(automatic)d(t)m(yp)s(e)e(con)m(v)m +b(There)36 b(is)h(no)0 2889 y(automatic)d(t)m(yp)s(e)e(con)m(v)m (ersion)h(from)e(n)m(umeric)h(to)g(b)s(o)s(olean)g(v)-5 b(alues,)33 b(so)f(one)g(needs)f(to)i(use)e("iV)-8 b(al!=0")35 -b(instead)0 5055 y(of)30 b(merely)g("iV)-8 b(al")32 b(as)e(the)g(b)s(o) +b(instead)0 3002 y(of)30 b(merely)g("iV)-8 b(al")32 b(as)e(the)g(b)s(o) s(olean)g(argumen)m(t.)41 b(x)30 b(and)f(y)h(can)g(b)s(e)f(an)m(y)h (scalar)h(data)g(t)m(yp)s(e)f(\(including)f(string\).)0 -5215 y(The)22 b(angsep)g(function)f(computes)i(the)f(angular)g +3163 y(The)22 b(angsep)g(function)f(computes)i(the)f(angular)g (separation)h(in)e(degrees)i(b)s(et)m(w)m(een)g(2)f(celestial)j(p)s -(ositions,)e(where)0 5328 y(the)36 b(\014rst)f(2)h(parameters)g(giv)m +(ositions,)e(where)0 3275 y(the)36 b(\014rst)f(2)h(parameters)g(giv)m (e)h(the)f(RA-lik)m(e)i(and)d(Dec-lik)m(e)j(co)s(ordinates)f(\(in)f -(decimal)g(degrees\))h(of)f(the)g(\014rst)0 5441 y(p)s(osition,)31 +(decimal)g(degrees\))h(of)f(the)g(\014rst)0 3388 y(p)s(osition,)31 b(and)e(the)i(3rd)f(and)g(4th)g(parameters)h(giv)m(e)h(the)e(co)s -(ordinates)i(of)e(the)h(second)f(p)s(osition.)0 5601 +(ordinates)i(of)e(the)h(second)f(p)s(osition.)0 3548 y(The)38 b(substring)f(function)i(strmid\(S,P)-8 b(,N\))39 b(extracts)g(a)g(substring)f(from)g(S,)g(starting)h(at)g(string)g(p)s -(osition)f(P)-8 b(,)0 5714 y(with)33 b(a)h(substring)f(length)h(N.)g +(osition)f(P)-8 b(,)0 3661 y(with)33 b(a)h(substring)f(length)h(N.)g (The)f(\014rst)g(c)m(haracter)j(p)s(osition)d(in)h(S)f(is)h(lab)s(eled) -g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to)p -eop end -%%Page: 99 105 -TeXDict begin 99 104 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 -b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(99)0 -555 y(a)35 b(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i(S,)g(then)f +g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to)0 +3774 y(a)i(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i(S,)g(then)f (the)h(extracted)h(substring)d(will)i(b)s(e)f(NULL.)h(S,)f(P)-8 -b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 668 y(functions)30 -b(of)g(other)h(columns.)0 828 y(The)39 b(string)h(searc)m(h)h(function) -e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s(ccurrence)h -(of)g(the)g(substring)f(R)h(in)f(S.)0 941 y(The)c(result)h(is)f(an)h -(in)m(teger,)i(indicating)f(the)e(c)m(haracter)i(p)s(osition)f(of)g -(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h(is)g(the)g(\014rst)0 -1054 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f(If)g(no)h(matc)m(h)g -(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i(NULL)f(v)-5 -b(alue.)0 1214 y(The)37 b(follo)m(wing)i(t)m(yp)s(e)f(casting)g(op)s -(erators)g(are)g(a)m(v)-5 b(ailable,)42 b(where)37 b(the)h(enclosing)g -(paren)m(theses)g(are)g(required)0 1327 y(and)30 b(tak)m(en)h(from)f -(the)h(C)f(language)h(usage.)42 b(Also,)31 b(the)g(in)m(teger)g(to)h -(real)f(casts)g(v)-5 b(alues)30 b(to)i(double)e(precision:)764 -1593 y Fe("real)46 b(to)h(integer")189 b(\(int\))46 b(x)239 -b(\(INT\))46 b(x)764 1706 y("integer)f(to)i(real")190 -b(\(float\))46 b(i)143 b(\(FLOAT\))45 b(i)0 1972 y Fi(In)30 -b(addition,)g(sev)m(eral)i(constan)m(ts)g(are)f(built)f(in)g(for)g(use) -g(in)g(n)m(umerical)h(expressions:)382 2238 y Fe(#pi)667 -b(3.1415...)284 b(#e)620 b(2.7182...)382 2351 y(#deg)f(#pi/180)380 -b(#row)524 b(current)46 b(row)h(number)382 2464 y(#null)428 -b(undefined)45 b(value)142 b(#snull)428 b(undefined)45 -b(string)0 2730 y Fi(A)40 b(string)f(constan)m(t)i(m)m(ust)e(b)s(e)g -(enclosed)h(in)g(quotes)g(as)f(in)h('Crab'.)67 b(The)39 -b("n)m(ull")i(constan)m(ts)f(are)g(useful)f(for)0 2843 -y(conditionally)g(setting)g(table)g(v)-5 b(alues)38 b(to)g(a)g(NULL,)g -(or)g(unde\014ned,)f(v)-5 b(alue)39 b(\(eg.,)i("col1==-99)f(?)62 -b(#NULL)38 b(:)0 2955 y(col1"\).)0 3116 y(There)27 b(is)g(also)i(a)e -(function)g(for)h(testing)g(if)f(t)m(w)m(o)i(v)-5 b(alues)28 -b(are)g(close)g(to)h(eac)m(h)f(other,)h(i.e.,)g(if)e(they)h(are)g -("near")g(eac)m(h)0 3229 y(other)c(to)h(within)e(a)h(user)g(sp)s +b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 3887 y(functions)30 +b(of)g(other)h(columns.)0 4047 y(The)39 b(string)h(searc)m(h)h +(function)e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s +(ccurrence)h(of)g(the)g(substring)f(R)h(in)f(S.)0 4160 +y(The)c(result)h(is)f(an)h(in)m(teger,)i(indicating)f(the)e(c)m +(haracter)i(p)s(osition)f(of)g(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h +(is)g(the)g(\014rst)0 4273 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f +(If)g(no)h(matc)m(h)g(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i +(NULL)f(v)-5 b(alue.)0 4433 y(The)37 b(follo)m(wing)i(t)m(yp)s(e)f +(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)42 +b(where)37 b(the)h(enclosing)g(paren)m(theses)g(are)g(required)0 +4546 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)h(usage.)42 +b(Also,)31 b(the)g(in)m(teger)g(to)h(real)f(casts)g(v)-5 +b(alues)30 b(to)i(double)e(precision:)764 4823 y Ff("real)46 +b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46 +b(x)764 4935 y("integer)f(to)i(real")190 b(\(float\))46 +b(i)143 b(\(FLOAT\))45 b(i)0 5212 y Fj(In)30 b(addition,)g(sev)m(eral)i +(constan)m(ts)g(are)f(built)f(in)g(for)g(use)g(in)g(n)m(umerical)h +(expressions:)382 5488 y Ff(#pi)667 b(3.1415...)284 b(#e)620 +b(2.7182...)382 5601 y(#deg)f(#pi/180)380 b(#row)524 +b(current)46 b(row)h(number)382 5714 y(#null)428 b(undefined)45 +b(value)142 b(#snull)428 b(undefined)45 b(string)p eop +end +%%Page: 100 106 +TeXDict begin 100 105 bop 0 299 a Fj(100)1573 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(A)40 b(string)f(constan)m(t)i(m)m(ust)e(b)s(e)g(enclosed)h(in) +g(quotes)g(as)f(in)h('Crab'.)67 b(The)39 b("n)m(ull")i(constan)m(ts)f +(are)g(useful)f(for)0 668 y(conditionally)g(setting)g(table)g(v)-5 +b(alues)38 b(to)g(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5 +b(alue)39 b(\(eg.,)i("col1==-99)f(?)62 b(#NULL)38 b(:)0 +781 y(col1"\).)0 941 y(In)m(teger)31 b(constan)m(ts)h(ma)m(y)f(b)s(e)f +(sp)s(eci\014ed)f(using)h(the)h(follo)m(wing)h(notation,)525 +1180 y Ff(13245)142 b(decimal)46 b(integer)525 1293 y(0x12f3)94 +b(hexidecimal)45 b(integer)525 1405 y(0o1373)94 b(octal)46 +b(integer)525 1518 y(0b01001)g(binary)g(integer)0 1757 +y Fj(Note)22 b(that)e(in)m(teger)i(constan)m(ts)g(are)e(only)h(allo)m +(w)m(ed)h(to)f(b)s(e)e(32-bit,)24 b(i.e.)38 b(b)s(et)m(w)m(een)21 +b(-2)2787 1724 y Fa(\()2820 1757 y Fj(31\))p Fb(and)p +Fj(+2)3211 1724 y Fa(\()3244 1757 y Fj(31\))p Fb(:I)7 +b(nteg)s(er)s(constantsmay)s(beusedinany)s(ar)s(ithmeticexpr)s(essionw) +r(her)s(eaninteg)s(er)s(w)r(oul)r(dbeappr)s(opr)s(iate:T)13 +b(hus;)i(they)s(ar)s(edistinctf)10 b(r)s(ombitmask)s(s)p +Fj(\()p Fb(w)r(hichmay)s(beof)g(ar)s(bitr)s(ar)s(y)s(l)r(eng)s(th;)15 +b(al)r(l)r(ow)r(the)p Fj(")p Fb(w)r(il)r(dcar)s(d)p Fj(")p +Fb(bit;)g(andmay)s(onl)r(y)s(beusedinl)r(og)s(ical)r(expr)s(essions)p +Fj(;)g Fb(seebel)r(ow)r Fj(\))q Fb(:)0 1917 y Fj(There)27 +b(is)g(also)i(a)e(function)g(for)h(testing)g(if)f(t)m(w)m(o)i(v)-5 +b(alues)28 b(are)g(close)g(to)h(eac)m(h)f(other,)h(i.e.,)g(if)e(they)h +(are)g("near")g(eac)m(h)0 2030 y(other)c(to)h(within)e(a)h(user)g(sp)s (eci\014ed)f(tolerance.)40 b(The)24 b(argumen)m(ts,)h(v)-5 -b(alue)p 2502 3229 28 4 v 34 w(1)24 b(and)f(v)-5 b(alue)p -2979 3229 V 33 w(2)25 b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0 -3341 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 +b(alue)p 2502 2030 28 4 v 34 w(1)24 b(and)f(v)-5 b(alue)p +2979 2030 V 33 w(2)25 b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0 +2143 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 b(alues)33 b(who's)f(pro)m(ximit)m(y)i(is)f(b)s(eing)f(tested)h(to)h(b) -s(e)e(within)g(the)h(sp)s(eci\014ed)f(tolerance,)0 3454 -y(also)f(an)g(in)m(teger)g(or)g(real:)955 3720 y Fe(near\(value_1,)44 -b(value_2,)h(tolerance\))0 3986 y Fi(When)24 b(a)i(NULL,)e(or)h +s(e)e(within)g(the)h(sp)s(eci\014ed)f(tolerance,)0 2256 +y(also)f(an)g(in)m(teger)g(or)g(real:)955 2520 y Ff(near\(value_1,)44 +b(value_2,)h(tolerance\))0 2785 y Fj(When)24 b(a)i(NULL,)e(or)h (unde\014ned,)f(v)-5 b(alue)25 b(is)g(encoun)m(tered)g(in)g(the)f(FITS) g(table,)j(the)e(expression)g(will)g(ev)-5 b(aluate)26 -b(to)0 4099 y(NULL)31 b(unless)f(the)h(unde\014ned)e(v)-5 +b(to)0 2898 y(NULL)31 b(unless)f(the)h(unde\014ned)e(v)-5 b(alue)31 b(is)g(not)g(actually)h(required)e(for)h(ev)-5 b(aluation,)33 b(e.g.)43 b("TR)m(UE)31 b(.or.)43 b(NULL")0 -4212 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f(follo)m(wing)h(t)m(w) +3010 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f(follo)m(wing)h(t)m(w) m(o)h(functions)e(allo)m(w)i(some)f(NULL)f(detection)i(and)e(handling:) -430 4478 y Fe("a)47 b(null)f(value?")667 b(ISNULL\(x\))430 -4591 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))0 -4857 y Fi(The)36 b(former)h(returns)e(a)i(b)s(o)s(olean)g(v)-5 -b(alue)37 b(of)g(TR)m(UE)g(if)g(the)g(argumen)m(t)g(x)g(is)g(NULL.)g -(The)f(later)i("de\014nes")f(a)0 4970 y(v)-5 b(alue)35 -b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5 b(alues;)37 -b(it)e(returns)e(the)h(v)-5 b(alue)35 b(of)f(x)g(if)g(x)h(is)f(not)g -(NULL,)h(otherwise)f(it)0 5083 y(returns)29 b(the)i(v)-5 -b(alue)31 b(of)f(y)-8 b(.)0 5381 y Fb(8.11.2)113 b(Bit)36 -b(Masks)0 5601 y Fi(Bit)g(masks)f(can)h(b)s(e)f(used)f(to)i(select)h -(out)e(ro)m(ws)h(from)e(bit)i(columns)f(\(TF)m(ORMn)g(=)g(#X\))h(in)f -(FITS)f(\014les.)55 b(T)-8 b(o)0 5714 y(represen)m(t)30 -b(the)h(mask,)g(binary)-8 b(,)30 b(o)s(ctal,)i(and)e(hex)g(formats)g -(are)h(allo)m(w)m(ed:)p eop end -%%Page: 100 106 -TeXDict begin 100 105 bop 0 299 a Fi(100)1573 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)811 -555 y Fe(binary:)142 b(b0110xx1010000101xxxx00)o(01)811 -668 y(octal:)190 b(o720x1)46 b(->)h(\(b111010000xxx001\))811 -781 y(hex:)286 b(h0FxD)94 b(->)47 b(\(b00001111xxxx1101\))0 -1038 y Fi(In)22 b(all)i(the)f(represen)m(tations,)j(an)c(x)h(or)g(X)g +430 3275 y Ff("a)47 b(null)f(value?")667 b(ISNULL\(x\))430 +3388 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))430 +3501 y("declare)45 b(certain)h(value)g(null")h(SETNULL\(x,y\))0 +3765 y Fj(ISNULL\(x\))24 b(returns)g(a)g(b)s(o)s(olean)h(v)-5 +b(alue)25 b(of)f(TR)m(UE)h(if)f(the)h(argumen)m(t)g(x)f(is)g(NULL.)h +(DEFNULL\(x,y\))h("de\014nes")0 3878 y(a)31 b(v)-5 b(alue)31 +b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5 b(alues;)31 +b(it)g(returns)e(the)i(v)-5 b(alue)31 b(of)f(x)h(if)f(x)g(is)h(not)f +(NULL,)h(otherwise)f(it)0 3991 y(returns)d(the)i(v)-5 +b(alue)28 b(of)h(y)-8 b(.)40 b(SETNULL\(x,y\))28 b(allo)m(ws)i(NULL)e +(v)-5 b(alues)29 b(to)g(b)s(e)f(inserted)g(in)m(to)h(a)g(v)-5 +b(ariable;)30 b(if)e(x==y)-8 b(,)0 4104 y(a)34 b(NULL)g(v)-5 +b(alue)35 b(is)f(returned;)g(otherwise)h(y)f(is)f(returned)g(\(x)h(and) +g(y)g(m)m(ust)f(b)s(e)h(n)m(umerical,)h(and)f(x)f(m)m(ust)h(b)s(e)g(a)0 +4217 y(scalar\).)0 4513 y Fc(8.11.2)113 b(Bit)36 b(Masks)0 +4733 y Fj(Bit)g(masks)f(can)h(b)s(e)f(used)f(to)i(select)h(out)e(ro)m +(ws)h(from)e(bit)i(columns)f(\(TF)m(ORMn)g(=)g(#X\))h(in)f(FITS)f +(\014les.)55 b(T)-8 b(o)0 4846 y(represen)m(t)30 b(the)h(mask,)g +(binary)-8 b(,)30 b(o)s(ctal,)i(and)e(hex)g(formats)g(are)h(allo)m(w)m +(ed:)811 5111 y Ff(binary:)142 b(b0110xx1010000101xxxx00)o(01)811 +5224 y(octal:)190 b(o720x1)46 b(->)h(\(b111010000xxx001\))811 +5336 y(hex:)286 b(h0FxD)94 b(->)47 b(\(b00001111xxxx1101\))0 +5601 y Fj(In)22 b(all)i(the)f(represen)m(tations,)j(an)c(x)h(or)g(X)g (is)g(allo)m(w)m(ed)i(in)d(the)h(mask)g(as)g(a)h(wild)e(card.)38 -b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 1151 y(a)k(di\013eren)m(t) +b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 5714 y(a)k(di\013eren)m(t) h(n)m(um)m(b)s(er)e(of)h(wild)f(card)h(bits)g(in)g(eac)m(h)h(represen)m (tation.)41 b(All)27 b(represen)m(tations)h(are)g(case)g(insensitiv)m -(e.)0 1311 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f -(expression)h(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h -(op)s(erator)g(describ)s(ed)f(ab)s(o)m(v)m(e)0 1424 y(on)34 -b(a)h(bit)g(table)h(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou) -h(had)f(a)h(7)g(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table) -i(and)0 1537 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit) -h(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s -(e:)1336 1794 y Fe(flags)47 b(==)g(b0010011)191 1907 -y(or)1336 2019 y(flags)g(.eq.)f(b10011)0 2276 y Fi(It)35 -b(is)g(also)h(p)s(ossible)e(to)i(test)g(if)f(a)g(range)g(of)g(bits)g -(is)g(less)g(than,)h(less)f(than)g(equal,)i(greater)f(than)e(and)h -(greater)0 2389 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s -(olean)f(v)-5 b(alue:)1336 2646 y Fe(flags)47 b(<=)g(bxxx010xx)1336 -2759 y(flags)g(.gt.)f(bxxx100xx)1336 2872 y(flags)h(.le.)f(b1xxxxxxx)0 -3129 y Fi(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5 +(e.)p eop end +%%Page: 101 107 +TeXDict begin 101 106 bop 0 299 a Fh(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fj(101)0 +555 y(Although)41 b(bitmasks)g(ma)m(y)g(b)s(e)f(of)h(arbitrary)f +(length)h(and)f(con)m(tain)i(a)g(wildcard,)h(they)e(ma)m(y)g(only)g(b)s +(e)f(used)0 668 y(in)c(logical)k(expressions,)e(unlik)m(e)f(in)m(teger) +h(constan)m(ts)g(\(see)f(ab)s(o)m(v)m(e\))i(whic)m(h)d(ma)m(y)h(b)s(e)f +(used)g(in)h(an)m(y)g(arithmetic)0 781 y(expression.)0 +941 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f(expression)h +(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h(op)s(erator)g +(describ)s(ed)f(ab)s(o)m(v)m(e)0 1054 y(on)34 b(a)h(bit)g(table)h +(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou)h(had)f(a)h(7)g +(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table)i(and)0 +1167 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit)h +(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s(e:) +1336 1395 y Ff(flags)47 b(==)g(b0010011)191 1508 y(or)1336 +1621 y(flags)g(.eq.)f(b10011)0 1849 y Fj(It)35 b(is)g(also)h(p)s +(ossible)e(to)i(test)g(if)f(a)g(range)g(of)g(bits)g(is)g(less)g(than,)h +(less)f(than)g(equal,)i(greater)f(than)e(and)h(greater)0 +1962 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s(olean)f(v)-5 +b(alue:)1336 2190 y Ff(flags)47 b(<=)g(bxxx010xx)1336 +2303 y(flags)g(.gt.)f(bxxx100xx)1336 2416 y(flags)h(.le.)f(b1xxxxxxx)0 +2644 y Fj(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5 b(alue)31 b(to)g(limit)g(the)f(range)h(of)g(bits)f(b)s(eing)g -(compared.)0 3289 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h +(compared.)0 2805 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h (leading)g(\(most)g(signi\014can)m(t\))h(zero)f(\(0\))g(bits)f(in)g -(the)h(mask,)g(as)g(sho)m(wn)e(in)0 3402 y(the)g(second)f(expression)g -(ab)s(o)m(v)m(e.)0 3562 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s +(the)h(mask,)g(as)g(sho)m(wn)e(in)0 2917 y(the)g(second)f(expression)g +(ab)s(o)m(v)m(e.)0 3078 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s (erations)g(are)g(also)h(p)s(ossible)e(on)h(t)m(w)m(o)h(or)f(more)g -(bit)g(\014elds)f(using)h(the)0 3675 y('&'\(AND\),)35 -b(')p Fc(j)p Fi('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34 +(bit)g(\014elds)f(using)h(the)0 3191 y('&'\(AND\),)35 +b(')p Fd(j)p Fj('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34 b(op)s(erators.)51 b(All)34 b(of)f(these)h(op)s(erators)g(result)f(in)h -(a)g(bit)f(\014eld)g(whic)m(h)0 3788 y(can)e(then)f(b)s(e)f(used)h +(a)g(bit)f(\014eld)g(whic)m(h)0 3303 y(can)e(then)f(b)s(e)f(used)h (with)g(the)h(equal)g(op)s(erator.)41 b(F)-8 b(or)31 -b(example:)1241 4045 y Fe(\(!flags\))45 b(==)j(b1101100)1241 -4158 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 4414 -y Fi(Bit)35 b(\014elds)f(can)g(b)s(e)f(app)s(ended)g(as)h(w)m(ell)h +b(example:)1241 3532 y Ff(\(!flags\))45 b(==)j(b1101100)1241 +3645 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 3873 +y Fj(Bit)35 b(\014elds)f(can)g(b)s(e)f(app)s(ended)g(as)h(w)m(ell)h (using)f(the)g('+')g(op)s(erator.)53 b(Strings)33 b(can)i(b)s(e)e -(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 4527 y(to)s(o.)0 -4818 y Fb(8.11.3)113 b(V)-9 b(ector)36 b(Columns)0 5036 -y Fi(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h +(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 3986 y(to)s(o.)0 +4271 y Fc(8.11.3)113 b(V)-9 b(ector)36 b(Columns)0 4490 +y Fj(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h (building)g(the)g(expression.)56 b(No)36 b(sp)s(ecial)g(syn)m(tax)f(is) -h(required)e(if)i(one)0 5149 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f +h(required)e(if)i(one)0 4603 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f (all)h(elemen)m(ts)g(of)f(the)h(v)m(ector.)86 b(Simply)44 b(use)h(the)g(column)g(name)g(as)g(for)g(a)g(scalar)0 -5262 y(column.)d(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h(in) +4716 y(column.)d(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h(in) m(termixed)h(with)e(scalar)i(columns)e(or)h(constan)m(ts)h(in)f -(virtually)g(all)0 5375 y(expressions.)40 b(The)29 b(result)g(will)g(b) +(virtually)g(all)0 4829 y(expressions.)40 b(The)29 b(result)g(will)g(b) s(e)g(of)g(the)g(same)h(dimension)e(as)i(the)f(v)m(ector.)42 -b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 5488 +b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 4942 y(though,)f(need)e(to)i(ha)m(v)m(e)g(the)f(same)g(n)m(um)m(b)s(er)f(of) h(elemen)m(ts)h(and)e(ha)m(v)m(e)j(the)e(same)g(dimensions.)39 -b(The)26 b(only)h(places)0 5601 y(a)35 b(v)m(ector)h(column)e(cannot)h +b(The)26 b(only)h(places)0 5055 y(a)35 b(v)m(ector)h(column)e(cannot)h (b)s(e)f(used)f(\(for)i(no)m(w,)g(an)m(yw)m(a)m(y\))h(are)f(the)g(SA)m -(O)f(region)h(functions)f(and)f(the)i(NEAR)0 5714 y(b)s(o)s(olean)30 -b(function.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 -b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(101)0 -555 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d(are)h(all)g(p)s -(erformed)d(on)i(an)g(elemen)m(t)h(b)m(y)f(elemen)m(t)i(basis.)38 -b(Comparing)23 b(t)m(w)m(o)0 668 y(v)m(ector)32 b(columns,)e(eg)h -("COL1)f(==)g(COL2",)g(th)m(us)g(results)g(in)g(another)g(v)m(ector)i -(of)e(b)s(o)s(olean)h(v)-5 b(alues)30 b(indicating)0 -781 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h(v)m(ectors)f(are) -g(equal.)0 941 y(Eigh)m(t)g(functions)f(are)h(a)m(v)-5 -b(ailable)33 b(that)e(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d(return)h -(a)g(scalar)i(result:)191 1172 y Fe("minimum")284 b(MIN\(V\))475 -b("maximum")714 b(MAX\(V\))191 1285 y("average")284 b(AVERAGE\(V\))f -("median")762 b(MEDIAN\(V\))191 1398 y("summation")188 -b(SUM\(V\))475 b("standard)46 b(deviation")188 b(STDDEV\(V\))191 -1511 y("#)47 b(of)g(values")94 b(NELEM\(V\))379 b("#)48 -b(of)f(non-null)e(values")94 b(NVALID\(V\))0 1742 y Fi(where)40 -b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m(ector)h(column)f(or)g -(a)h(man)m(ually)f(constructed)g(v)m(ector)i(using)d(curly)0 -1854 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)e(b)s(elo)m(w.)39 -b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)f(ignore)h(an)m(y)g(n)m -(ull)f(v)-5 b(alues)26 b(in)f(the)h(v)m(ector)h(when)0 -1967 y(computing)k(the)f(result.)41 b(The)30 b(STDDEV\(\))h(function)g -(computes)f(the)h(sample)g(standard)e(deviation,)j(i.e.)42 -b(it)31 b(is)0 2080 y(prop)s(ortional)f(to)h(1/SQR)-8 -b(T\(N-1\))32 b(instead)f(of)g(1/SQR)-8 b(T\(N\),)31 -b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)0 2240 y(The)32 -b(SUM)h(function)f(literally)j(sums)c(all)j(the)f(elemen)m(ts)h(in)f -(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)48 b(If)32 -b(x)h(is)g(a)g(b)s(o)s(olean)0 2353 y(v)m(ector,)40 b(SUM)c(returns)f -(the)h(n)m(um)m(b)s(er)f(of)i(TR)m(UE)f(elemen)m(ts.)60 -b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0 -2466 y(of)i(elemen)m(ts)h(in)f(v)m(ector)h(x)f(whereas)f(NV)-10 +(O)f(region)h(functions)f(and)f(the)i(NEAR)0 5168 y(b)s(o)s(olean)30 +b(function.)0 5328 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d +(are)h(all)g(p)s(erformed)d(on)i(an)g(elemen)m(t)h(b)m(y)f(elemen)m(t)i +(basis.)38 b(Comparing)23 b(t)m(w)m(o)0 5441 y(v)m(ector)32 +b(columns,)e(eg)h("COL1)f(==)g(COL2",)g(th)m(us)g(results)g(in)g +(another)g(v)m(ector)i(of)e(b)s(o)s(olean)h(v)-5 b(alues)30 +b(indicating)0 5554 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h +(v)m(ectors)f(are)g(equal.)0 5714 y(Eigh)m(t)g(functions)f(are)h(a)m(v) +-5 b(ailable)33 b(that)e(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d +(return)h(a)g(scalar)i(result:)p eop end +%%Page: 102 108 +TeXDict begin 102 107 bop 0 299 a Fj(102)1573 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 +555 y Ff("minimum")284 b(MIN\(V\))475 b("maximum")714 +b(MAX\(V\))191 668 y("average")284 b(AVERAGE\(V\))f("median")762 +b(MEDIAN\(V\))191 781 y("summation")188 b(SUM\(V\))475 +b("standard)46 b(deviation")188 b(STDDEV\(V\))191 894 +y("#)47 b(of)g(values")94 b(NELEM\(V\))379 b("#)48 b(of)f(non-null)e +(values")94 b(NVALID\(V\))0 1180 y Fj(where)40 b(V)h(represen)m(ts)g +(the)g(name)g(of)h(a)f(v)m(ector)h(column)f(or)g(a)h(man)m(ually)f +(constructed)g(v)m(ector)i(using)d(curly)0 1293 y(brac)m(k)m(ets)27 +b(as)f(describ)s(ed)e(b)s(elo)m(w.)39 b(The)25 b(\014rst)g(6)h(of)g +(these)g(functions)f(ignore)h(an)m(y)g(n)m(ull)f(v)-5 +b(alues)26 b(in)f(the)h(v)m(ector)h(when)0 1406 y(computing)k(the)f +(result.)41 b(The)30 b(STDDEV\(\))h(function)g(computes)f(the)h(sample) +g(standard)e(deviation,)j(i.e.)42 b(it)31 b(is)0 1519 +y(prop)s(ortional)f(to)h(1/SQR)-8 b(T\(N-1\))32 b(instead)f(of)g(1/SQR) +-8 b(T\(N\),)31 b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)0 +1679 y(The)32 b(SUM)h(function)f(literally)j(sums)c(all)j(the)f(elemen) +m(ts)h(in)f(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)48 +b(If)32 b(x)h(is)g(a)g(b)s(o)s(olean)0 1792 y(v)m(ector,)40 +b(SUM)c(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(TR)m(UE)f(elemen)m(ts.) +60 b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0 +1905 y(of)i(elemen)m(ts)h(in)f(v)m(ector)h(x)f(whereas)f(NV)-10 b(ALID)39 b(return)d(the)i(n)m(um)m(b)s(er)f(of)h(non-n)m(ull)f(elemen) -m(ts)j(in)d(the)h(v)m(ector.)0 2579 y(\(NELEM)28 b(also)h(op)s(erates)f +m(ts)j(in)d(the)h(v)m(ector.)0 2017 y(\(NELEM)28 b(also)h(op)s(erates)f (on)g(bit)f(and)g(string)h(columns,)g(returning)f(their)h(column)f -(widths.\))40 b(As)27 b(an)h(example,)0 2692 y(to)42 +(widths.\))40 b(As)27 b(an)h(example,)0 2130 y(to)42 b(test)g(whether)f(all)h(elemen)m(ts)h(of)f(t)m(w)m(o)g(v)m(ectors)h (satisfy)f(a)g(giv)m(en)g(logical)i(comparison,)g(one)e(can)g(use)f -(the)0 2805 y(expression)668 3036 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\)) -g(==)g(NELEM\()f(COL1)h(\))0 3267 y Fi(whic)m(h)32 b(will)g(return)f +(the)0 2243 y(expression)668 2529 y Ff(SUM\()47 b(COL1)f(>)i(COL2)f(\)) +g(==)g(NELEM\()f(COL1)h(\))0 2815 y Fj(whic)m(h)32 b(will)g(return)f (TR)m(UE)h(if)g(all)h(elemen)m(ts)g(of)f(COL1)g(are)g(greater)h(than)f -(their)g(corresp)s(onding)f(elemen)m(ts)i(in)0 3380 y(COL2.)0 -3540 y(T)-8 b(o)32 b(sp)s(ecify)f(a)i(single)f(elemen)m(t)h(of)f(a)g(v) +(their)g(corresp)s(onding)f(elemen)m(ts)i(in)0 2928 y(COL2.)0 +3088 y(T)-8 b(o)32 b(sp)s(ecify)f(a)i(single)f(elemen)m(t)h(of)f(a)g(v) m(ector,)i(giv)m(e)f(the)f(column)f(name)h(follo)m(w)m(ed)h(b)m(y)f(a)g -(comma-separated)h(list)0 3653 y(of)c(co)s(ordinates)g(enclosed)h(in)e +(comma-separated)h(list)0 3201 y(of)c(co)s(ordinates)g(enclosed)h(in)e (square)h(brac)m(k)m(ets.)41 b(F)-8 b(or)30 b(example,)g(if)e(a)h(v)m -(ector)i(column)d(named)h(PHAS)f(exists)h(in)0 3766 y(the)e(table)g(as) +(ector)i(column)d(named)h(PHAS)f(exists)h(in)0 3314 y(the)e(table)g(as) g(a)g(one)g(dimensional,)h(256)g(comp)s(onen)m(t)f(list)g(of)g(n)m(um)m (b)s(ers)e(from)h(whic)m(h)h(y)m(ou)g(w)m(an)m(ted)g(to)g(select)i(the) -0 3878 y(57th)j(comp)s(onen)m(t)g(for)f(use)g(in)g(the)h(expression,)f +0 3427 y(57th)j(comp)s(onen)m(t)g(for)f(use)g(in)g(the)h(expression,)f (then)h(PHAS[57])g(w)m(ould)f(do)h(the)f(tric)m(k.)45 -b(Higher)32 b(dimensional)0 3991 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h +b(Higher)32 b(dimensional)0 3540 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h (app)s(ear)f(in)f(a)i(column.)73 b(But)41 b(in)g(order)f(to)i(in)m -(terpret)f(them,)j(the)e(TDIMn)e(k)m(eyw)m(ord)0 4104 +(terpret)f(them,)j(the)e(TDIMn)e(k)m(eyw)m(ord)0 3653 y(m)m(ust)34 b(app)s(ear)g(in)g(the)g(header.)52 b(Assuming)34 b(that)h(a)f(\(4,4,4,4\))k(arra)m(y)c(is)h(pac)m(k)m(ed)g(in)m(to)g -(eac)m(h)h(ro)m(w)e(of)g(a)h(column)0 4217 y(named)26 +(eac)m(h)h(ro)m(w)e(of)g(a)h(column)0 3766 y(named)26 b(ARRA)-8 b(Y4D,)28 b(the)f(\(1,2,3,4\))i(comp)s(onen)m(t)e(elemen)m(t) g(of)g(eac)m(h)g(ro)m(w)g(is)f(accessed)i(b)m(y)e(ARRA)-8 -b(Y4D[1,2,3,4].)0 4330 y(Arra)m(ys)33 b(up)e(to)j(dimension)e(5)h(are)f +b(Y4D[1,2,3,4].)0 3878 y(Arra)m(ys)33 b(up)e(to)j(dimension)e(5)h(are)f (curren)m(tly)h(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h(index)e -(can)h(itself)g(b)s(e)f(an)h(expression,)0 4443 y(although)39 +(can)h(itself)g(b)s(e)f(an)h(expression,)0 3991 y(although)39 b(it)g(m)m(ust)g(ev)-5 b(aluate)40 b(to)f(an)g(in)m(teger)h(v)-5 b(alue)39 b(within)f(the)h(b)s(ounds)d(of)j(the)g(v)m(ector.)67 -b(V)-8 b(ector)40 b(columns)0 4556 y(whic)m(h)31 b(con)m(tain)h(spaces) +b(V)-8 b(ector)40 b(columns)0 4104 y(whic)m(h)31 b(con)m(tain)h(spaces) g(or)f(arithmetic)h(op)s(erators)g(m)m(ust)f(ha)m(v)m(e)h(their)f -(names)g(enclosed)h(in)f("$")h(c)m(haracters)h(as)0 4669 -y(with)d($ARRA)-8 b(Y-4D$[1,2,3,4].)0 4829 y(A)45 b(more)f(C-lik)m(e)i +(names)g(enclosed)h(in)f("$")h(c)m(haracters)h(as)0 4217 +y(with)d($ARRA)-8 b(Y-4D$[1,2,3,4].)0 4377 y(A)45 b(more)f(C-lik)m(e)i (syn)m(tax)g(for)e(sp)s(ecifying)g(v)m(ector)j(indices)d(is)h(also)h(a) m(v)-5 b(ailable.)85 b(The)45 b(elemen)m(t)h(used)d(in)i(the)0 -4942 y(preceding)28 b(example)h(alternativ)m(ely)i(could)d(b)s(e)g(sp)s +4490 y(preceding)28 b(example)h(alternativ)m(ely)i(could)d(b)s(e)g(sp)s (eci\014ed)g(with)f(the)i(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45 -b(Note)30 b(the)0 5055 y(rev)m(erse)40 b(order)f(of)h(indices)f(\(as)h +b(Note)30 b(the)0 4603 y(rev)m(erse)40 b(order)f(of)h(indices)f(\(as)h (in)f(C\),)h(as)f(w)m(ell)i(as)e(the)h(fact)g(that)g(the)g(v)-5 -b(alues)40 b(are)f(still)i(ones-based)e(\(as)h(in)0 5168 +b(alues)40 b(are)f(still)i(ones-based)e(\(as)h(in)0 4716 y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)h(am)m(biguit)m(y)g (for)f(1D)g(v)m(ectors\).)67 b(With)39 b(this)g(syn)m(tax,)i(one)e(do)s -(es)f(not)h(need)f(to)0 5281 y(sp)s(ecify)30 b(all)h(of)g(the)f +(es)f(not)h(need)f(to)0 4829 y(sp)s(ecify)30 b(all)h(of)g(the)f (indices.)41 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)g(of)g(this)f(4D) -h(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 5441 +h(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 4989 y(V)g(ariable-length)33 b(v)m(ector)f(columns)e(are)g(not)h(supp)s -(orted.)0 5601 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)h +(orted.)0 5149 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)h (constructed)h(within)e(the)h(expression)g(using)f(a)h(comma-separated) -i(list)f(of)f(elemen)m(ts)0 5714 y(surrounded)35 b(b)m(y)j(curly)g -(braces)h(\(')p Fc(fg)p Fi('\).)66 b(F)-8 b(or)38 b(example,)j(')p -Fc(f)p Fi(1,3,6,1)p Fc(g)p Fi(')h(is)d(a)f(4-elemen)m(t)i(v)m(ector)g -(con)m(taining)g(the)p eop end -%%Page: 102 108 -TeXDict begin 102 107 bop 0 299 a Fi(102)1573 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(v)j(alues)26 b(1,)h(3,)g(6,)g(and)e(1.)40 b(The)25 -b(v)m(ector)i(can)f(con)m(tain)h(only)f(b)s(o)s(olean,)g(in)m(teger,)j -(and)c(real)h(v)-5 b(alues)26 b(\(or)g(expressions\).)0 -668 y(The)e(elemen)m(ts)h(will)g(b)s(e)f(promoted)g(to)h(the)g(highest) -f(datat)m(yp)s(e)h(presen)m(t.)39 b(An)m(y)24 b(elemen)m(ts)i(whic)m(h) -e(are)h(themselv)m(es)0 781 y(v)m(ectors,)40 b(will)d(b)s(e)f(expanded) -g(out)h(with)g(eac)m(h)g(of)g(its)g(elemen)m(ts)i(b)s(ecoming)d(an)h -(elemen)m(t)h(in)f(the)g(constructed)0 894 y(v)m(ector.)0 -1247 y Fb(8.11.4)113 b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 -b(al)37 b(Filtering)0 1479 y Fi(A)44 b(common)g(\014ltering)h(metho)s -(d)e(in)m(v)m(olv)m(es)j(selecting)g(ro)m(ws)e(whic)m(h)f(ha)m(v)m(e)j -(a)e(time)h(v)-5 b(alue)44 b(whic)m(h)g(lies)g(within)0 -1592 y(what)37 b(is)g(called)i(a)f(Go)s(o)s(d)f(Time)g(In)m(terv)-5 -b(al)38 b(or)f(GTI.)g(The)g(time)h(in)m(terv)-5 b(als)38 -b(are)g(de\014ned)e(in)h(a)g(separate)i(FITS)0 1705 y(table)i -(extension)g(whic)m(h)e(con)m(tains)i(2)g(columns)f(giving)g(the)h -(start)f(and)g(stop)g(time)g(of)g(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5 -b(al.)0 1818 y(The)34 b(\014ltering)h(op)s(eration)h(accepts)g(only)e -(those)i(ro)m(ws)e(of)h(the)g(input)f(table)i(whic)m(h)e(ha)m(v)m(e)i -(an)f(asso)s(ciated)h(time)0 1930 y(whic)m(h)f(falls)i(within)e(one)h -(of)g(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)e(in)g(the)h(GTI)g -(extension.)57 b(A)36 b(high)g(lev)m(el)h(function,)0 -2043 y(gti\014lter\(a,b,c,d\),)44 b(is)c(a)m(v)-5 b(ailable)42 -b(whic)m(h)d(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)e(of)h(the)f(input)g -(table)h(and)f(returns)f(TR)m(UE)i(or)0 2156 y(F)-10 -b(ALSE)30 b(dep)s(ending)f(whether)h(the)g(ro)m(w)h(is)f(inside)g(or)g -(outside)h(the)g(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42 -b(The)30 b(syn)m(tax)h(is)286 2469 y Fe(gtifilter\()45 -b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(]) -g(\))0 2782 y Fi(where)20 b(eac)m(h)h("[]")h(demarks)e(optional)h -(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f(around)g(the)g -(gti\014le)i(and)d(ST)-8 b(AR)g(T/STOP)0 2895 y(column)33 -b(are)h(required.)50 b(Either)34 b(single)g(or)g(double)f(quotes)h(ma)m -(y)g(b)s(e)f(used.)50 b(In)33 b(cases)h(where)g(this)f(expression)0 -3008 y(is)d(en)m(tered)g(on)g(the)g(Unix)g(command)g(line,)g(enclose)h -(the)f(en)m(tire)h(expression)f(in)f(double)h(quotes,)g(and)g(then)f -(use)0 3121 y(single)c(quotes)g(within)e(the)i(expression)f(to)h -(enclose)g(the)g('gti\014le')h(and)d(other)i(terms.)38 -b(It)25 b(is)f(also)h(usually)f(p)s(ossible)0 3234 y(to)38 -b(do)e(the)h(rev)m(erse,)j(and)c(enclose)i(the)f(whole)g(expression)g -(in)f(single)i(quotes)f(and)f(then)h(use)f(double)g(quotes)0 -3347 y(within)d(the)g(expression.)50 b(The)33 b(gti\014le,)i(if)f(sp)s -(eci\014ed,)f(can)h(b)s(e)f(blank)g(\(""\))i(whic)m(h)e(will)g(mean)h -(to)g(use)f(the)h(\014rst)0 3460 y(extension)g(with)g(the)f(name)h -("*GTI*")h(in)f(the)f(curren)m(t)h(\014le,)h(a)f(plain)f(extension)h -(sp)s(eci\014er)f(\(eg,)j("+2",)g("[2]",)0 3573 y(or)30 -b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s(e)f(used)f(to)j(select)g(an)e -(extension)h(in)f(the)h(curren)m(t)f(\014le,)h(or)f(a)h(regular)g -(\014lename)0 3686 y(with)f(or)h(without)f(an)h(extension)g(sp)s -(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case)f(will)g(mean)f(to)i -(use)e(the)h(\014rst)e(extension)0 3799 y(with)37 b(an)g(extension)g -(name)h("*GTI*".)62 b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)i -(expression,)f(including)f(simply)g(the)0 3911 y(time)f(column)g(name.) -57 b(A)36 b(v)m(ector)h(time)g(expression)e(will)h(pro)s(duce)f(a)h(v)m +i(list)f(of)f(elemen)m(ts)0 5262 y(surrounded)35 b(b)m(y)j(curly)g +(braces)h(\(')p Fd(fg)p Fj('\).)66 b(F)-8 b(or)38 b(example,)j(')p +Fd(f)p Fj(1,3,6,1)p Fd(g)p Fj(')h(is)d(a)f(4-elemen)m(t)i(v)m(ector)g +(con)m(taining)g(the)0 5375 y(v)-5 b(alues)26 b(1,)h(3,)g(6,)g(and)e +(1.)40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)h(only)f(b)s(o)s(olean,) +g(in)m(teger,)j(and)c(real)h(v)-5 b(alues)26 b(\(or)g(expressions\).)0 +5488 y(The)e(elemen)m(ts)h(will)g(b)s(e)f(promoted)g(to)h(the)g +(highest)f(datat)m(yp)s(e)h(presen)m(t.)39 b(An)m(y)24 +b(elemen)m(ts)i(whic)m(h)e(are)h(themselv)m(es)0 5601 +y(v)m(ectors,)40 b(will)d(b)s(e)f(expanded)g(out)h(with)g(eac)m(h)g(of) +g(its)g(elemen)m(ts)i(b)s(ecoming)d(an)h(elemen)m(t)h(in)f(the)g +(constructed)0 5714 y(v)m(ector.)p eop end +%%Page: 103 109 +TeXDict begin 103 108 bop 0 299 a Fh(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fj(103)0 +555 y Fc(8.11.4)113 b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 +b(al)37 b(Filtering)h(and)g(Calculation)0 776 y Fj(There)27 +b(are)h(t)m(w)m(o)g(functions)f(for)g(\014ltering)h(and)f(calculating)i +(based)e(on)g(Go)s(o)s(d)h(Time)f(In)m(terv)-5 b(als,)29 +b(or)e(GTIs.)39 b(GTIs)0 889 y(are)c(commonly)g(used)f(to)h(express)f +(fragmen)m(ted)h(time)g(ranges)g(that)g(are)g(not)g(easy)g(to)g +(express)f(with)g(a)h(single)0 1002 y(start)j(and)f(stop)h(time.)63 +b(The)37 b(time)h(in)m(terv)-5 b(als)39 b(are)f(de\014ned)e(in)i(a)g +(FITS)f(table)h(extension)g(whic)m(h)g(con)m(tains)h(2)0 +1115 y(columns)30 b(giving)h(the)g(start)g(and)f(stop)g(time)h(of)g +(eac)m(h)g(go)s(o)s(d)f(in)m(terv)-5 b(al.)0 1275 y(A)32 +b(common)g(\014ltering)f(metho)s(d)h(in)m(v)m(olv)m(es)h(selecting)h +(ro)m(ws)d(whic)m(h)h(ha)m(v)m(e)g(a)g(time)h(v)-5 b(alue)32 +b(whic)m(h)f(lies)i(within)e(an)m(y)0 1388 y(GTI.)36 +b(The)g(gti\014lter\(\))i(\014ltering)e(op)s(eration)h(accepts)g(only)f +(those)h(ro)m(ws)f(of)g(the)h(input)e(table)i(whic)m(h)f(ha)m(v)m(e)h +(an)0 1501 y(asso)s(ciated)g(time)f(whic)m(h)g(falls)g(within)f(one)g +(of)h(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)d(in)h(a)h +(separate)h(GTI)e(extension.)0 1614 y(gti\014lter\(a,b,c,d\))43 +b(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)g(of)f(the)g(input)f(table)i +(and)f(returns)f(TR)m(UE)h(or)g(F)-10 b(ALSE)39 b(dep)s(ending)0 +1726 y(whether)30 b(the)g(ro)m(w)h(is)f(inside)g(or)h(outside)f(the)h +(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42 b(The)30 b(syn)m(tax)h(is) +286 1994 y Ff(gtifilter\()45 b([)j("gtifile")d([,)i(expr)g([,)g +("STARTCOL",)e("STOPCOL")g(])j(])f(])g(\))191 2107 y(or)286 +2220 y(gtifilter\()e([)j('gtifile')d([,)i(expr)g([,)g('STARTCOL',)e +('STOPCOL')g(])j(])f(])g(\))0 2487 y Fj(where)20 b(eac)m(h)h("[]")h +(demarks)e(optional)h(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f +(around)g(the)g(gti\014le)i(and)d(ST)-8 b(AR)g(T/STOP)0 +2600 y(column)33 b(are)h(required.)50 b(Either)34 b(single)g(or)g +(double)f(quotes)h(ma)m(y)g(b)s(e)f(used.)50 b(In)33 +b(cases)h(where)g(this)f(expression)0 2713 y(is)d(en)m(tered)g(on)g +(the)g(Unix)g(command)g(line,)g(enclose)h(the)f(en)m(tire)h(expression) +f(in)f(double)h(quotes,)g(and)g(then)f(use)0 2826 y(single)c(quotes)g +(within)e(the)i(expression)f(to)h(enclose)g(the)g('gti\014le')h(and)d +(other)i(terms.)38 b(It)25 b(is)f(also)h(usually)f(p)s(ossible)0 +2939 y(to)38 b(do)e(the)h(rev)m(erse,)j(and)c(enclose)i(the)f(whole)g +(expression)g(in)f(single)i(quotes)f(and)f(then)h(use)f(double)g +(quotes)0 3052 y(within)d(the)g(expression.)50 b(The)33 +b(gti\014le,)i(if)f(sp)s(eci\014ed,)f(can)h(b)s(e)f(blank)g(\(""\))i +(whic)m(h)e(will)g(mean)h(to)g(use)f(the)h(\014rst)0 +3165 y(extension)g(with)g(the)f(name)h("*GTI*")h(in)f(the)f(curren)m(t) +h(\014le,)h(a)f(plain)f(extension)h(sp)s(eci\014er)f(\(eg,)j("+2",)g +("[2]",)0 3278 y(or)30 b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s(e)f(used) +f(to)j(select)g(an)e(extension)h(in)f(the)h(curren)m(t)f(\014le,)h(or)f +(a)h(regular)g(\014lename)0 3391 y(with)f(or)h(without)f(an)h +(extension)g(sp)s(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case)f +(will)g(mean)f(to)i(use)e(the)h(\014rst)e(extension)0 +3504 y(with)37 b(an)g(extension)g(name)h("*GTI*".)62 +b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)i(expression,)f +(including)f(simply)g(the)0 3616 y(time)f(column)g(name.)57 +b(A)36 b(v)m(ector)h(time)g(expression)e(will)h(pro)s(duce)f(a)h(v)m (ector)h(b)s(o)s(olean)f(result.)57 b(ST)-8 b(AR)g(TCOL)0 -4024 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8 +3729 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8 b(AR)g(T/STOP)26 b(columns)i(in)f(the)h(GTI)g(extension.)41 -b(If)27 b(one)h(of)g(them)0 4137 y(is)i(sp)s(eci\014ed,)g(they)h(b)s -(oth)f(m)m(ust)g(b)s(e.)0 4297 y(In)21 b(its)h(simplest)g(form,)i(no)d +b(If)27 b(one)h(of)g(them)0 3842 y(is)i(sp)s(eci\014ed,)g(they)h(b)s +(oth)f(m)m(ust)g(b)s(e.)0 4002 y(In)21 b(its)h(simplest)g(form,)i(no)d (parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)g({)h(default)g(v)-5 b(alues)22 b(will)h(b)s(e)e(used.)37 b(The)21 b(expression)0 -4410 y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31 -b(to)334 4723 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f -("*STOP*")h(\))0 5036 y Fi(This)31 b(will)g(searc)m(h)h(the)g(curren)m +4115 y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31 +b(to)334 4383 y Ff(gtifilter\()45 b("",)i(TIME,)f("*START*",)f +("*STOP*")h(\))0 4650 y Fj(This)31 b(will)g(searc)m(h)h(the)g(curren)m (t)f(\014le)g(for)g(a)h(GTI)f(extension,)h(\014lter)g(the)f(TIME)g -(column)g(in)g(the)h(curren)m(t)f(table,)0 5149 y(using)j(ST)-8 +(column)g(in)g(the)h(curren)m(t)f(table,)0 4763 y(using)j(ST)-8 b(AR)g(T/STOP)34 b(times)i(tak)m(en)f(from)g(columns)f(in)h(the)g(GTI)g -(extension)g(with)g(names)f(con)m(taining)j(the)0 5262 +(extension)g(with)g(names)f(con)m(taining)j(the)0 4876 y(strings)32 b("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46 b(The)32 b(wildcards)f(\('*'\))j(allo)m(w)g(sligh)m(t)f(v)-5 b(ariations)33 b(in)f(naming)g(con)m(v)m(en)m(tions)0 -5375 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8 +4989 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8 b(AR)g(TTIME".)65 b(The)37 b(same)i(default)g(v)-5 b(alues)38 -b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 5488 y(ters)f(when)f(the)h +b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 5102 y(ters)f(when)f(the)h (\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)56 b(The)36 b(function)f(automatically)k(searc)m(hes)e(for)0 -5601 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f(and)g +5215 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f(and)g (GTI)g(extensions,)i(applying)f(a)f(relativ)m(e)j(time)e(o\013set,)i -(if)0 5714 y(necessary)-8 b(.)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 -b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(103)0 -555 y Fb(8.11.5)113 b(Spatial)38 b(Region)g(Filtering)0 -775 y Fi(Another)g(common)g(\014ltering)g(metho)s(d)f(selects)i(ro)m -(ws)f(based)g(on)f(whether)h(the)g(spatial)h(p)s(osition)e(asso)s -(ciated)0 887 y(with)32 b(eac)m(h)i(ro)m(w)e(is)h(lo)s(cated)h(within)e -(a)h(giv)m(en)g(2-dimensional)g(region.)48 b(The)32 b(syn)m(tax)h(for)f -(this)h(high-lev)m(el)h(\014lter)0 1000 y(is)334 1262 -y Fe(regfilter\()45 b("regfilename")f([)k(,)f(Xexpr,)f(Yexpr)h([)g(,)h -("wcs)e(cols")h(])g(])g(\))0 1524 y Fi(where)22 b(eac)m(h)i("[]")g -(demarks)e(optional)i(parameters.)38 b(The)22 b(region)h(\014le)g(name) -f(is)h(required)f(and)g(m)m(ust)g(b)s(e)g(enclosed)0 -1637 y(in)34 b(quotes.)51 b(The)33 b(remaining)h(parameters)h(are)f -(optional.)52 b(There)33 b(are)i(2)f(supp)s(orted)e(formats)i(for)f -(the)h(region)0 1750 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f -(binary)g(table.)73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f -(list)g(of)g(one)g(or)g(more)g(geometric)0 1863 y(shap)s(es)30 -b(\(circle,)j(ellipse,)g(b)s(o)m(x,)e(etc.\))44 b(whic)m(h)31 -b(de\014nes)f(a)i(region)g(on)f(the)g(celestial)j(sphere)c(or)h(an)g -(area)h(within)f(a)0 1975 y(particular)36 b(2D)g(image.)57 -b(The)35 b(region)h(\014le)f(is)g(t)m(ypically)j(generated)e(using)f -(an)g(image)i(displa)m(y)e(program)g(suc)m(h)0 2088 y(as)e(fv/PO)m(W)g -(\(distribute)f(b)m(y)h(the)f(HEASAR)m(C\),)h(or)g(ds9)f(\(distributed) -g(b)m(y)g(the)h(Smithsonian)f(Astroph)m(ysical)0 2201 -y(Observ)-5 b(atory\).)69 b(Users)39 b(should)g(refer)g(to)h(the)g(do)s -(cumen)m(tation)h(pro)m(vided)e(with)g(these)h(programs)f(for)h(more)0 -2314 y(details)29 b(on)f(the)g(syn)m(tax)h(used)e(in)h(the)h(region)f -(\014les.)40 b(The)28 b(FITS)f(region)i(\014le)f(format)h(is)f -(de\014ned)f(in)h(a)g(do)s(cumen)m(t)0 2427 y(a)m(v)-5 -b(ailable)33 b(from)d(the)g(FITS)g(Supp)s(ort)e(O\016ce)j(at)g(h)m -(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c(region.h)m(tml)0 -2587 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h +(if)0 5328 y(necessary)-8 b(.)0 5488 y(A)43 b(separate)h(function,)j +(gtio)m(v)m(erlap\(a,b,c,d,e\),)k(computes)43 b(the)g(o)m(v)m(erlap)i +(b)s(et)m(w)m(een)f(a)f(user-requested)g(time)0 5601 +y(range)32 b(and)e(the)i(en)m(tries)g(in)f(a)g(GTI.)h(The)e(cases)i(of) +g(no)f(o)m(v)m(erlap,)i(partial)f(o)m(v)m(erlap,)i(or)d(o)m(v)m(erlap)i +(of)e(man)m(y)g(GTIs)0 5714 y(within)36 b(the)g(user)g(requested)g +(range)h(are)g(handled.)58 b(gtio)m(v)m(erlap\(\))39 +b(is)e(v)m(ery)f(useful)g(for)g(calculating)j(exp)s(osure)p +eop end +%%Page: 104 110 +TeXDict begin 104 109 bop 0 299 a Fj(104)1573 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fj(times)28 b(and)g(fractional)h(exp)s(osures)e(of)h(individual)f +(time)h(bins,)g(sa)m(y)h(for)e(a)h(ligh)m(t)h(curv)m(e.)41 +b(The)27 b(syn)m(tax)h(of)g(gtio)m(v)m(er-)0 668 y(lap\(\))j(is)286 +932 y Ff(gtioverlap\()45 b("gtifile")g(,)j(startExpr,)d(stopExpr)g([,)j +("STARTCOL",)c("STOPCOL")i(])h(\))191 1045 y(or)286 1158 +y(gtioverlap\()e('gtifile')g(,)j(startExpr,)d(stopExpr)g([,)j +('STARTCOL',)c('STOPCOL')i(])h(\))0 1422 y Fj(The)27 +b(requiremen)m(ts)g(for)h(sp)s(ecifying)f(the)h(gti\014le)g(are)g(the)g +(same)g(as)f(for)h(gti\014lter\(\))h(as)f(describ)s(ed)e(ab)s(o)m(v)m +(e.)41 b(Unlik)m(e)0 1535 y(gti\014lter\(\),)j(the)c(startExpr)f(and)f +(stopExpr)h(are)h(not)g(optional.)69 b(startExpr)39 b(pro)m(vides)g(a)h +(start)g(of)g(the)g(user)0 1648 y(requested)34 b(time)h(in)m(terv)-5 +b(al.)53 b(startExpr)34 b(is)g(t)m(ypically)i(TIME,)e(but)f(can)i(b)s +(e)e(an)m(y)h(v)-5 b(alid)35 b(expression.)52 b(Lik)m(ewise,)0 +1761 y(stopExpr)39 b(pro)m(vides)i(the)f(stop)h(of)f(the)h(user)f +(requested)g(time)h(in)m(terv)-5 b(al,)44 b(and)c(can)h(b)s(e)e(an)i +(expression.)70 b(F)-8 b(or)0 1874 y(example,)31 b(for)f(a)h(ligh)m(t)h +(curv)m(e)e(with)h(a)f(TIME)g(column)g(and)g(time)h(bin)f(size)h(of)g +(1.0)g(seconds,)g(the)f(expression)286 2138 y Ff +(gtioverlap\('gtifile',TIME,)o(TIM)o(E+1.)o(0\))0 2402 +y Fj(w)m(ould)36 b(calculate)i(the)e(amoun)m(t)g(of)g(o)m(v)m(erlap)h +(exp)s(osure)e(time)h(b)s(et)m(w)m(een)h(eac)m(h)f(one)g(second)g(time) +h(bin)e(and)g(the)0 2514 y(GTI)e(in)f('gti\014le'.)50 +b(In)32 b(this)h(case)h(the)f(time)g(bin)f(is)h(assumed)f(to)i(b)s +(egin)e(at)i(the)f(time)g(sp)s(eci\014ed)f(b)m(y)h(TIME)g(and)0 +2627 y(end)d(1)h(second)g(later.)43 b(Neither)31 b(startExpr)f(nor)h +(stopExpr)e(are)j(required)d(to)j(b)s(e)e(constan)m(t,)i(and)f(a)g +(ligh)m(t)h(curv)m(e)0 2740 y(is)h(not)h(required)f(to)h(ha)m(v)m(e)g +(a)g(constan)m(t)h(bin)e(size.)50 b(F)-8 b(or)34 b(tables,)i(the)d(o)m +(v)m(erlap)i(is)f(calculated)h(for)e(eac)m(h)i(en)m(try)e(in)0 +2853 y(the)e(table.)0 3013 y(It)d(is)f(also)i(p)s(ossible)e(to)h +(calculate)i(a)e(single)g(o)m(v)m(erlap)h(v)-5 b(alue,)29 +b(whic)m(h)e(w)m(ould)h(t)m(ypically)h(b)s(e)e(placed)h(in)f(a)h(k)m +(eyw)m(ord.)0 3126 y(F)-8 b(or)42 b(example,)j(a)d(w)m(a)m(y)g(to)g(to) +g(compute)g(the)f(total)i(o)m(v)m(erlap)g(exp)s(osure)d(of)i(a)f +(\014le)h(whose)f(TIME)g(column)g(is)0 3239 y(b)s(ounded)28 +b(b)m(y)i(the)h(k)m(eyw)m(ords)g(TST)-8 b(AR)g(T)29 b(and)h(TSTOP)-8 +b(,)30 b(o)m(v)m(erlapping)h(with)f(the)h(sp)s(eci\014ed)f(GTI,)g(w)m +(ould)g(b)s(e)286 3503 y Ff(#EXPOSURE)46 b(=)h +(gtioverlap\('gtifile',#TST)o(ART)o(,#TS)o(TOP\))0 3767 +y Fj(The)26 b Ff(#EXPOSURE)f Fj(syn)m(tax)i(with)g(a)g(leading)h(+)e +(ensures)g(that)i(the)f(requested)g(v)-5 b(alues)27 b(are)g(treated)h +(as)f(k)m(eyw)m(ords.)0 3880 y(Otherwise,)41 b(a)e(column)g(named)f +(EXPOSURE)g(will)h(b)s(e)g(created)g(with)g(the)g(\(constan)m(t\))i +(exp)s(osure)d(v)-5 b(alue)39 b(in)0 3993 y(eac)m(h)32 +b(en)m(try)-8 b(.)0 4289 y Fc(8.11.5)113 b(Spatial)38 +b(Region)g(Filtering)0 4508 y Fj(Another)g(common)g(\014ltering)g +(metho)s(d)f(selects)i(ro)m(ws)f(based)g(on)f(whether)h(the)g(spatial)h +(p)s(osition)e(asso)s(ciated)0 4621 y(with)32 b(eac)m(h)i(ro)m(w)e(is)h +(lo)s(cated)h(within)e(a)h(giv)m(en)g(2-dimensional)g(region.)48 +b(The)32 b(syn)m(tax)h(for)f(this)h(high-lev)m(el)h(\014lter)0 +4734 y(is)334 4998 y Ff(regfilter\()45 b("regfilename")f([)k(,)f +(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g(])g(\))0 +5262 y Fj(where)22 b(eac)m(h)i("[]")g(demarks)e(optional)i(parameters.) +38 b(The)22 b(region)h(\014le)g(name)f(is)h(required)f(and)g(m)m(ust)g +(b)s(e)g(enclosed)0 5375 y(in)34 b(quotes.)51 b(The)33 +b(remaining)h(parameters)h(are)f(optional.)52 b(There)33 +b(are)i(2)f(supp)s(orted)e(formats)i(for)f(the)h(region)0 +5488 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f(binary)g(table.) +73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f(list)g(of)g(one)g(or) +g(more)g(geometric)0 5601 y(shap)s(es)30 b(\(circle,)j(ellipse,)g(b)s +(o)m(x,)e(etc.\))44 b(whic)m(h)31 b(de\014nes)f(a)i(region)g(on)f(the)g +(celestial)j(sphere)c(or)h(an)g(area)h(within)f(a)0 5714 +y(particular)36 b(2D)g(image.)57 b(The)35 b(region)h(\014le)f(is)g(t)m +(ypically)j(generated)e(using)f(an)g(image)i(displa)m(y)e(program)g +(suc)m(h)p eop end +%%Page: 105 111 +TeXDict begin 105 110 bop 0 299 a Fh(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fj(105)0 +555 y(as)33 b(fv/PO)m(W)g(\(distribute)f(b)m(y)h(the)f(HEASAR)m(C\),)h +(or)g(ds9)f(\(distributed)g(b)m(y)g(the)h(Smithsonian)f(Astroph)m +(ysical)0 668 y(Observ)-5 b(atory\).)69 b(Users)39 b(should)g(refer)g +(to)h(the)g(do)s(cumen)m(tation)h(pro)m(vided)e(with)g(these)h +(programs)f(for)h(more)0 781 y(details)29 b(on)f(the)g(syn)m(tax)h +(used)e(in)h(the)h(region)f(\014les.)40 b(The)28 b(FITS)f(region)i +(\014le)f(format)h(is)f(de\014ned)f(in)h(a)g(do)s(cumen)m(t)0 +894 y(a)m(v)-5 b(ailable)33 b(from)d(the)g(FITS)g(Supp)s(ort)e(O\016ce) +j(at)g(h)m(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c(region.h)m(tml) +0 1054 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h (reg\014lter\("region.reg"\))h(\))c(the)g(co)s(ordinates)g(in)g(the)g -(default)g('X')h(and)e('Y')h(columns)0 2700 y(will)43 +(default)g('X')h(and)e('Y')h(columns)0 1167 y(will)43 b(b)s(e)g(used)f(to)i(determine)f(if)g(eac)m(h)h(ro)m(w)f(is)g(inside)g (or)g(outside)g(the)g(area)h(sp)s(eci\014ed)e(in)h(the)g(region)h -(\014le.)0 2813 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f +(\014le.)0 1280 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f (expressions,)h(ma)m(y)g(b)s(e)e(en)m(tered)i(if)g(needed,)f(as)h(in) -382 3075 y Fe(regfilter\("region.reg",)41 b(XPOS,)47 -b(YPOS\))0 3337 y Fi(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g +382 1529 y Ff(regfilter\("region.reg",)41 b(XPOS,)47 +b(YPOS\))0 1777 y Fj(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g (most)h(unam)m(biguously)f(if)h(the)g(p)s(ositions)g(in)f(the)h(region) -g(\014le)g(and)f(in)h(the)0 3449 y(table)g(to)g(b)s(e)e(\014ltered)h +g(\014le)g(and)f(in)h(the)0 1890 y(table)g(to)g(b)s(e)e(\014ltered)h (are)h(b)s(oth)e(giv)m(e)j(in)e(terms)g(of)g(absolute)h(celestial)i(co) s(ordinate)e(units.)54 b(In)35 b(this)g(case)h(the)0 -3562 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s +2003 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s (es)e(in)g(the)g(region)h(\014le)f(are)h(sp)s(eci\014ed)f(in)g(angular) -g(units)g(on)g(the)g(sky)0 3675 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en) +g(units)g(on)g(the)g(sky)0 2116 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en) i(in)e(R.A.)g(and)g(Dec.)42 b(and)30 b(sizes)h(in)f(arcseconds)g(or)h (arcmin)m(utes\).)41 b(Similarly)-8 b(,)31 b(eac)m(h)h(ro)m(w)0 -3788 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e +2229 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e (celestial)j(co)s(ordinate)e(asso)s(ciated)g(with)f(it.)50 -b(This)32 b(asso)s(ciation)j(is)e(usually)0 3901 y(implemen)m(ted)39 +b(This)32 b(asso)s(ciation)j(is)e(usually)0 2342 y(implemen)m(ted)39 b(using)e(a)i(set)g(of)f(so-called)i('W)-8 b(orld)39 b(Co)s(ordinate)g(System')f(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g -(that)0 4014 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g +(that)0 2455 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g (that)g(m)m(ust)f(b)s(e)f(applied)h(to)h(the)g(v)-5 b(alues)27 -b(in)g(the)h('X')g(and)e('Y')i(columns)0 4127 y(to)j(calculate)i(the)d -(co)s(ordinate.)0 4287 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s +b(in)g(the)h('X')g(and)e('Y')i(columns)0 2568 y(to)j(calculate)i(the)d +(co)s(ordinate.)0 2728 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s (erform)e(spatial)j(\014ltering)e(using)g(unitless)h('pixel')g(co)s -(ordinates)h(for)e(the)h(regions)g(and)0 4400 y(ro)m(w)33 +(ordinates)h(for)e(the)h(regions)g(and)0 2841 y(ro)m(w)33 b(p)s(ositions.)49 b(In)33 b(this)g(case)h(the)f(user)g(m)m(ust)g(b)s (e)f(careful)h(to)h(ensure)f(that)g(the)h(p)s(ositions)f(in)g(the)g(2)g -(\014les)h(are)0 4513 y(self-consisten)m(t.)54 b(A)34 +(\014les)h(are)0 2954 y(self-consisten)m(t.)54 b(A)34 b(t)m(ypical)i(problem)d(is)h(that)h(the)f(region)h(\014le)f(ma)m(y)h -(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 4626 +(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 3067 y(but)g(the)h(un)m(binned)e(co)s(ordinates)i(are)g(giv)m(en)h(in)e(the) h(ev)m(en)m(t)i(table.)48 b(The)32 b(R)m(OSA)-8 b(T)33 -b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 4739 y(ha)m(v)m(e)f(X)f +b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 3180 y(ha)m(v)m(e)f(X)f (and)f(Y)g(pixel)h(co)s(ordinates)g(that)h(range)f(from)f(1)h(-)g (15360.)42 b(These)30 b(co)s(ordinates)g(are)g(t)m(ypically)h(binned)0 -4852 y(b)m(y)i(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)i +3292 y(b)m(y)i(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)i (pixel)d(image.)51 b(If)32 b(one)i(then)f(uses)g(a)g(region)h(\014le)f -(generated)h(from)0 4965 y(this)c(image)i(\(in)f(image)g(pixel)g +(generated)h(from)0 3405 y(this)c(image)i(\(in)f(image)g(pixel)g (units\))g(to)g(\014lter)f(the)h(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i (\014le,)f(then)f(the)h(X)g(and)f(Y)g(column)h(v)-5 b(alues)0 -5077 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e -(pixel)i(units)f(as)g(in:)382 5339 y Fe(regfilter\("rosat.reg",)42 -b(X/32.+.5,)j(Y/32.+.5\))0 5601 y Fi(Note)h(that)f(this)f(binning)f +3518 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e +(pixel)i(units)f(as)g(in:)382 3767 y Ff(regfilter\("rosat.reg",)42 +b(X/32.+.5,)j(Y/32.+.5\))0 4016 y Fj(Note)h(that)f(this)f(binning)f (con)m(v)m(ersion)j(is)e(not)h(necessary)g(if)f(the)h(region)g(\014le)f -(is)h(sp)s(eci\014ed)e(using)h(celestial)0 5714 y(co)s(ordinate)h +(is)h(sp)s(eci\014ed)e(using)h(celestial)0 4129 y(co)s(ordinate)h (units)f(instead)g(of)g(pixel)h(units)f(b)s(ecause)g(CFITSIO)e(is)j -(then)e(able)i(to)g(directly)g(compare)g(the)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 0 299 a Fi(104)1573 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(celestial)30 b(co)s(ordinate)f(of)e(eac)m(h)i(ro)m(w)f(in)f -(the)h(table)g(with)g(the)f(celestial)k(co)s(ordinates)d(in)f(the)h -(region)g(\014le)g(without)0 668 y(ha)m(ving)j(to)g(kno)m(w)f(an)m -(ything)h(ab)s(out)f(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g(b)s -(een)f(binned.)0 828 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f -(should)e(rarely)h(b)s(e)g(needed.)40 b(If)29 b(supplied,)f(this)i -(string)f(con)m(tains)i(the)e(names)0 941 y(of)37 b(the)g(2)h(columns)f -(\(space)h(or)f(comma)g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g -(asso)s(ciated)g(W)m(CS)f(k)m(eyw)m(ords.)61 b(If)37 -b(not)0 1054 y(supplied,)f(the)g(\014lter)g(will)h(scan)f(the)g(X)g -(and)f(Y)h(expressions)g(for)g(column)f(names.)58 b(If)35 -b(only)h(one)h(is)f(found)e(in)0 1167 y(eac)m(h)e(expression,)e(those)h -(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an)f(error)g(will)h(b)s -(e)f(returned.)0 1327 y(These)g(region)h(shap)s(es)f(are)g(supp)s -(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 -1591 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 -b(One)f(pixel)f(square)g(region)334 1704 y(Line)476 b(\()48 +(then)e(able)i(to)g(directly)g(compare)g(the)0 4242 y(celestial)30 +b(co)s(ordinate)f(of)e(eac)m(h)i(ro)m(w)f(in)f(the)h(table)g(with)g +(the)f(celestial)k(co)s(ordinates)d(in)f(the)h(region)g(\014le)g +(without)0 4354 y(ha)m(ving)j(to)g(kno)m(w)f(an)m(ything)h(ab)s(out)f +(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g(b)s(een)f(binned.)0 +4515 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f(should)e(rarely)h(b)s +(e)g(needed.)40 b(If)29 b(supplied,)f(this)i(string)f(con)m(tains)i +(the)e(names)0 4628 y(of)37 b(the)g(2)h(columns)f(\(space)h(or)f(comma) +g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g(asso)s(ciated)g(W)m(CS)f +(k)m(eyw)m(ords.)61 b(If)37 b(not)0 4740 y(supplied,)f(the)g(\014lter)g +(will)h(scan)f(the)g(X)g(and)f(Y)h(expressions)g(for)g(column)f(names.) +58 b(If)35 b(only)h(one)h(is)f(found)e(in)0 4853 y(eac)m(h)e +(expression,)e(those)h(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an) +f(error)g(will)h(b)s(e)f(returned.)0 5014 y(These)g(region)h(shap)s(es) +f(are)g(supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 +5262 y Ff(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 +b(One)f(pixel)f(square)g(region)334 5375 y(Line)476 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region) -334 1817 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95 -b(<-)48 b(Rest)e(are)h(interiors)e(with)334 1930 y(Rectangle)236 +334 5488 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95 +b(<-)48 b(Rest)e(are)h(interiors)e(with)334 5601 y(Rectangle)236 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e -(considered)334 2043 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A) -i(\))143 b(V)47 b(within)f(the)h(region)334 2156 y(Diamond)332 -b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 2269 -y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 2382 y(Annulus)332 -b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 2494 y(Ellipse)332 -b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 2607 y(Elliptannulus)c(\() -k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334 -2720 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 -2984 y Fi(where)28 b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h -(shap)s(e's)f(cen)m(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)g(of) -g(the)g(shap)s(e's)0 3097 y(edges;)36 b(Rxxx)d(are)h(the)f(shap)s(es')g -(v)-5 b(arious)34 b(Radii)f(or)h(semi-ma)5 b(jor/minor)34 -b(axes;)i(and)d(Axxx)g(are)h(the)f(angles)i(of)0 3210 -y(rotation)e(\(or)e(b)s(ounding)f(angles)i(for)f(Sector\))h(in)f -(degrees.)44 b(F)-8 b(or)32 b(rotated)h(shap)s(es,)e(the)g(rotation)i -(angle)f(can)g(b)s(e)0 3323 y(left)g(o\013,)h(indicating)f(no)f -(rotation.)46 b(Common)31 b(alternate)i(names)e(for)h(the)f(regions)h -(can)g(also)h(b)s(e)d(used:)43 b(rotb)s(o)m(x)0 3436 -y(=)29 b(b)s(o)m(x;)g(rotrectangle)i(=)e(rectangle;)i(\(rot\)rhom)m -(bus)e(=)f(\(rot\)diamond;)j(and)d(pie)h(=)f(sector.)42 -b(When)28 b(a)i(shap)s(e's)0 3549 y(name)e(is)g(preceded)f(b)m(y)h(a)g -(min)m(us)g(sign,)g('-',)i(the)e(de\014ned)e(region)j(is)f(instead)g -(the)g(area)h(*outside*)g(its)f(b)s(oundary)0 3662 y(\(ie,)36 -b(the)e(region)h(is)f(in)m(v)m(erted\).)53 b(All)34 b(the)g(shap)s(es)f -(within)h(a)g(single)h(region)f(\014le)h(are)f(OR'd)f(together)j(to)e -(create)0 3775 y(the)29 b(region,)i(and)d(the)i(order)f(is)g -(signi\014can)m(t.)41 b(The)29 b(o)m(v)m(erall)i(w)m(a)m(y)g(of)e(lo)s -(oking)h(at)g(region)g(\014les)f(is)g(that)h(if)f(the)h(\014rst)0 -3888 y(region)f(is)g(an)g(excluded)g(region)g(then)f(a)i(dumm)m(y)d -(included)h(region)i(of)f(the)g(whole)g(detector)h(is)f(inserted)f(in)h -(the)0 4000 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s -(eci\014cation)h(as)f(it)g(is)g(pro)s(cessed)f(o)m(v)m(errides)h(an)m -(y)g(selections)i(inside)d(of)h(that)g(region)0 4113 -y(sp)s(eci\014ed)36 b(b)m(y)g(previous)g(regions.)59 -b(Another)37 b(w)m(a)m(y)g(of)g(thinking)f(ab)s(out)g(this)g(is)h(that) -g(if)f(a)h(previous)f(excluded)0 4226 y(region)31 b(is)f(completely)i -(inside)f(of)f(a)h(subsequen)m(t)e(included)h(region)h(the)g(excluded)f -(region)h(is)f(ignored.)0 4386 y(The)44 b(p)s(ositional)i(co)s -(ordinates)g(ma)m(y)f(b)s(e)g(giv)m(en)h(either)f(in)g(pixel)g(units,)j -(decimal)e(degrees)g(or)f(hh:mm:ss.s,)0 4499 y(dd:mm:ss.s)25 -b(units.)38 b(The)26 b(shap)s(e)f(sizes)i(ma)m(y)f(b)s(e)g(giv)m(en)h -(in)e(pixels,)j(degrees,)f(arcmin)m(utes,)h(or)e(arcseconds.)40 -b(Lo)s(ok)0 4612 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s -(duced)d(b)m(y)i(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)i(of)g -(the)f(region)h(\014le)f(format.)0 4772 y(There)37 b(are)g(three)g -(functions)g(that)g(are)h(primarily)f(for)f(use)h(with)g(SA)m(O)g -(region)g(\014les)g(and)g(the)g(FSA)m(OI)g(task,)0 4885 -y(but)e(they)h(can)h(b)s(e)e(used)g(directly)-8 b(.)59 -b(They)36 b(return)f(a)h(b)s(o)s(olean)g(true)g(or)g(false)g(dep)s -(ending)f(on)h(whether)f(a)i(t)m(w)m(o)0 4998 y(dimensional)31 -b(p)s(oin)m(t)f(is)g(in)g(the)h(region)g(or)f(not:)191 -5262 y Fe("point)46 b(in)h(a)h(circular)d(region")477 -5375 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 -5601 y("point)h(in)h(an)g(elliptical)e(region")430 5714 +(considered)334 5714 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A) +i(\))143 b(V)47 b(within)f(the)h(region)p eop end +%%Page: 106 112 +TeXDict begin 106 111 bop 0 299 a Fj(106)1573 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)334 +555 y Ff(Diamond)332 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 +668 y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 781 +y(Annulus)332 b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 +894 y(Ellipse)332 b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 +1007 y(Elliptannulus)c(\()k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g +(Routy,)g(Ain,)h(Aout)g(\))334 1120 y(Sector)380 b(\()48 +b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 1337 y Fj(where)28 +b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h(shap)s(e's)f(cen)m +(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)g(of)g(the)g(shap)s(e's) +0 1450 y(edges;)36 b(Rxxx)d(are)h(the)f(shap)s(es')g(v)-5 +b(arious)34 b(Radii)f(or)h(semi-ma)5 b(jor/minor)34 b(axes;)i(and)d +(Axxx)g(are)h(the)f(angles)i(of)0 1563 y(rotation)e(\(or)e(b)s(ounding) +f(angles)i(for)f(Sector\))h(in)f(degrees.)44 b(F)-8 b(or)32 +b(rotated)h(shap)s(es,)e(the)g(rotation)i(angle)f(can)g(b)s(e)0 +1676 y(left)g(o\013,)h(indicating)f(no)f(rotation.)46 +b(Common)31 b(alternate)i(names)e(for)h(the)f(regions)h(can)g(also)h(b) +s(e)d(used:)43 b(rotb)s(o)m(x)0 1789 y(=)29 b(b)s(o)m(x;)g +(rotrectangle)i(=)e(rectangle;)i(\(rot\)rhom)m(bus)e(=)f +(\(rot\)diamond;)j(and)d(pie)h(=)f(sector.)42 b(When)28 +b(a)i(shap)s(e's)0 1902 y(name)e(is)g(preceded)f(b)m(y)h(a)g(min)m(us)g +(sign,)g('-',)i(the)e(de\014ned)e(region)j(is)f(instead)g(the)g(area)h +(*outside*)g(its)f(b)s(oundary)0 2015 y(\(ie,)36 b(the)e(region)h(is)f +(in)m(v)m(erted\).)53 b(All)34 b(the)g(shap)s(es)f(within)h(a)g(single) +h(region)f(\014le)h(are)f(OR'd)f(together)j(to)e(create)0 +2128 y(the)29 b(region,)i(and)d(the)i(order)f(is)g(signi\014can)m(t.)41 +b(The)29 b(o)m(v)m(erall)i(w)m(a)m(y)g(of)e(lo)s(oking)h(at)g(region)g +(\014les)f(is)g(that)h(if)f(the)h(\014rst)0 2240 y(region)f(is)g(an)g +(excluded)g(region)g(then)f(a)i(dumm)m(y)d(included)h(region)i(of)f +(the)g(whole)g(detector)h(is)f(inserted)f(in)h(the)0 +2353 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s(eci\014cation)h +(as)f(it)g(is)g(pro)s(cessed)f(o)m(v)m(errides)h(an)m(y)g(selections)i +(inside)d(of)h(that)g(region)0 2466 y(sp)s(eci\014ed)36 +b(b)m(y)g(previous)g(regions.)59 b(Another)37 b(w)m(a)m(y)g(of)g +(thinking)f(ab)s(out)g(this)g(is)h(that)g(if)f(a)h(previous)f(excluded) +0 2579 y(region)31 b(is)f(completely)i(inside)f(of)f(a)h(subsequen)m(t) +e(included)h(region)h(the)g(excluded)f(region)h(is)f(ignored.)0 +2739 y(The)44 b(p)s(ositional)i(co)s(ordinates)g(ma)m(y)f(b)s(e)g(giv)m +(en)h(either)f(in)g(pixel)g(units,)j(decimal)e(degrees)g(or)f +(hh:mm:ss.s,)0 2852 y(dd:mm:ss.s)25 b(units.)38 b(The)26 +b(shap)s(e)f(sizes)i(ma)m(y)f(b)s(e)g(giv)m(en)h(in)e(pixels,)j +(degrees,)f(arcmin)m(utes,)h(or)e(arcseconds.)40 b(Lo)s(ok)0 +2965 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s(duced)d(b)m(y)i +(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)i(of)g(the)f(region)h +(\014le)f(format.)0 3125 y(There)37 b(are)g(three)g(functions)g(that)g +(are)h(primarily)f(for)f(use)h(with)g(SA)m(O)g(region)g(\014les)g(and)g +(the)g(FSA)m(OI)g(task,)0 3238 y(but)e(they)h(can)h(b)s(e)e(used)g +(directly)-8 b(.)59 b(They)36 b(return)f(a)h(b)s(o)s(olean)g(true)g(or) +g(false)g(dep)s(ending)f(on)h(whether)f(a)i(t)m(w)m(o)0 +3351 y(dimensional)31 b(p)s(oin)m(t)f(is)g(in)g(the)h(region)g(or)f +(not:)191 3569 y Ff("point)46 b(in)h(a)h(circular)d(region")477 +3681 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 +3907 y("point)h(in)h(an)g(elliptical)e(region")430 4020 y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o(otat)o -(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))p eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 -b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(105)191 -668 y Fe("point)46 b(in)h(a)h(rectangular)c(region")620 -781 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o(_wd)o(th,r)o(otat)o(ion)o -(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 1007 y(where)334 -1120 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f(position)g(of)h(the)g -(center)f(of)h(the)g(region)334 1233 y(\(xhlf_wdth,yhlf_wdth\))42 -b(are)47 b(the)g(\(x,y\))f(half)h(widths)f(of)h(the)g(region)334 -1346 y(\(xfll_wdth,yfll_wdth\))42 b(are)47 b(the)g(\(x,y\))f(full)h -(widths)f(of)h(the)g(region)334 1458 y(\(radius\))f(is)h(half)f(the)h -(diameter)f(of)h(the)g(circle)334 1571 y(\(rotation\))e(is)i(the)g -(angle\(degrees\))d(that)j(the)g(region)f(is)h(rotated)f(with)620 -1684 y(respect)g(to)h(\(xcntr,ycntr\))334 1797 y(\(Xcoord,Ycoord\))d -(are)j(the)g(\(x,y\))f(coordinates)f(to)i(test,)f(usually)g(column)620 -1910 y(names)334 2023 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i -(an)f(expression,)d(not)j(merely)f(a)620 2136 y(column)h(name)f(or)h -(constant.)0 2443 y Fb(8.11.6)113 b(Example)38 b(Ro)m(w)f(Filters)191 -2665 y Fe([)47 b(binary)f(&&)i(mag)f(<=)g(5.0])380 b(-)48 -b(Extract)e(all)h(binary)f(stars)g(brighter)1766 2778 +(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 4246 y("point)h(in)h(a)h +(rectangular)c(region")620 4359 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o +(_wd)o(th,r)o(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 +4585 y(where)334 4698 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f +(position)g(of)h(the)g(center)f(of)h(the)g(region)334 +4811 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 b(the)g(\(x,y\))f(half)h +(widths)f(of)h(the)g(region)334 4924 y(\(xfll_wdth,yfll_wdth\))42 +b(are)47 b(the)g(\(x,y\))f(full)h(widths)f(of)h(the)g(region)334 +5036 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334 +5149 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g +(region)f(is)h(rotated)f(with)620 5262 y(respect)g(to)h +(\(xcntr,ycntr\))334 5375 y(\(Xcoord,Ycoord\))d(are)j(the)g(\(x,y\))f +(coordinates)f(to)i(test,)f(usually)g(column)620 5488 +y(names)334 5601 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i(an)f +(expression,)d(not)j(merely)f(a)620 5714 y(column)h(name)f(or)h +(constant.)p eop end +%%Page: 107 113 +TeXDict begin 107 112 bop 0 299 a Fh(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fj(107)0 +555 y Fc(8.11.6)113 b(Example)38 b(Ro)m(w)f(Filters)191 +859 y Ff([)47 b(binary)f(&&)i(mag)f(<=)g(5.0])380 b(-)48 +b(Extract)e(all)h(binary)f(stars)g(brighter)1766 972 y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766 -2891 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 -3004 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 -3117 y(binning)f(specification\))191 3343 y([#row)g(>=)h(125)g(&&)h +1085 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 +1197 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 +1310 y(binning)f(specification\))191 1536 y([#row)g(>=)h(125)g(&&)h (#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through) -f(175)191 3569 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 -b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 3681 +f(175)191 1762 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 +b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 1875 y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766 -3794 y(greater)g(than)g(100)191 4020 y([abs\(sin\(theta)e(*)j(#deg\)\)) +1988 y(greater)g(than)g(100)191 2214 y([abs\(sin\(theta)e(*)j(#deg\)\)) f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766 -4133 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 -4246 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 -4359 y(are)g(tabulated)e(in)i(degrees)191 4585 y([SUM\()f(SPEC)h(>)g +2327 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 +2439 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 +2552 y(are)g(tabulated)e(in)i(degrees)191 2778 y([SUM\()f(SPEC)h(>)g (3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a) -1766 4698 y(spectrum,)g(held)i(in)g(vector)f(column)1766 -4811 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766 -4924 y(times)f(greater)g(than)h(the)g(background)1766 -5036 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 -5262 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h -(vector)f(column)1766 5375 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i -(4,)g(and)1766 5488 y(2.)191 5714 y([@rowFilter.txt])711 -b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)p -eop end -%%Page: 106 112 -TeXDict begin 106 111 bop 0 299 a Fi(106)1573 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1766 -555 y Fe(contained)45 b(within)h(the)h(text)g(file)1766 -668 y(rowFilter.txt)191 894 y([gtifilter\(\)])855 b(-)48 -b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 1007 -y(extension,)92 b(filter)i(the)47 b(TIME)239 1120 y(column)f(in)h(the)g -(current)f(table,)g(using)239 1233 y(START/STOP)f(times)h(taken)g(from) -239 1346 y(columns)f(in)j(the)f(GTI)94 b(extension)191 -1571 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h -(have)f(a)i(coordinate)1766 1684 y(\(as)f(given)f(in)h(the)g(X)h(and)f -(Y)g(columns\))1766 1797 y(within)f(the)h(spatial)f(region)g(specified) -1766 1910 y(in)h(the)g(pow.reg)f(region)g(file.)191 2136 +1766 2891 y(spectrum,)g(held)i(in)g(vector)f(column)1766 +3004 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766 +3117 y(times)f(greater)g(than)h(the)g(background)1766 +3230 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 +3456 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h +(vector)f(column)1766 3569 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i +(4,)g(and)1766 3681 y(2.)191 3907 y([@rowFilter.txt])711 +b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766 +4020 y(contained)e(within)h(the)h(text)g(file)1766 4133 +y(rowFilter.txt)191 4359 y([gtifilter\(\)])855 b(-)48 +b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 4472 +y(extension,)92 b(filter)i(the)47 b(TIME)239 4585 y(column)f(in)h(the)g +(current)f(table,)g(using)239 4698 y(START/STOP)f(times)h(taken)g(from) +239 4811 y(columns)f(in)j(the)f(GTI)94 b(extension)191 +5036 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h +(have)f(a)i(coordinate)1766 5149 y(\(as)f(given)f(in)h(the)g(X)h(and)f +(Y)g(columns\))1766 5262 y(within)f(the)h(spatial)f(region)g(specified) +1766 5375 y(in)h(the)g(pow.reg)f(region)g(file.)191 5601 y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f -(except)g(that)h(the)1766 2249 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g -(used)f(to)1766 2362 y(determine)f(the)i(coordinate)e(of)i(each)1766 -2475 y(row)g(in)g(the)g(table.)0 2811 y Fd(8.12)180 b(Binning)45 -b(or)g(Histogramming)i(Sp)t(eci\014cation)0 3062 y Fi(The)22 +(except)g(that)h(the)1766 5714 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g +(used)f(to)p eop end +%%Page: 108 114 +TeXDict begin 108 113 bop 0 299 a Fj(108)1573 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1766 +555 y Ff(determine)45 b(the)i(coordinate)e(of)i(each)1766 +668 y(row)g(in)g(the)g(table.)0 1001 y Fe(8.12)180 b(Binning)45 +b(or)g(Histogramming)i(Sp)t(eci\014cation)0 1252 y Fj(The)22 b(optional)i(binning)e(sp)s(eci\014er)g(is)h(enclosed)h(in)f(square)f (brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)g(from)h(a)g -(general)0 3175 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation)g(b)m(y)f +(general)0 1365 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation)g(b)m(y)f (the)h(fact)g(that)g(it)g(b)s(egins)f(with)g(the)g(k)m(eyw)m(ord)h -('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 3288 y(b)m(y)41 +('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 1477 y(b)m(y)41 b(an)f(equals)i(sign.)72 b(When)41 b(binning)e(is)i(sp)s(eci\014ed,)i (a)e(temp)s(orary)g(N-dimensional)g(FITS)f(primary)g(arra)m(y)0 -3401 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f(the)g +1590 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f(the)g (v)-5 b(alues)44 b(in)e(the)i(sp)s(eci\014ed)e(columns)h(of)g(a)h(FITS) -e(table)0 3514 y(extension.)f(After)30 b(the)f(histogram)h(is)g +e(table)0 1703 y(extension.)f(After)30 b(the)f(histogram)h(is)g (computed)f(the)h(input)e(FITS)h(\014le)h(con)m(taining)h(the)e(table)i -(is)e(then)g(closed)0 3627 y(and)34 b(the)h(temp)s(orary)f(FITS)g +(is)e(then)g(closed)0 1816 y(and)34 b(the)h(temp)s(orary)f(FITS)g (primary)g(arra)m(y)h(is)g(op)s(ened)f(and)g(passed)g(to)h(the)g -(application)h(program.)54 b(Th)m(us,)0 3740 y(the)39 +(application)h(program.)54 b(Th)m(us,)0 1929 y(the)39 b(application)h(program)f(nev)m(er)g(sees)g(the)g(original)h(FITS)e (table)i(and)e(only)h(sees)h(the)f(image)h(in)e(the)h(new)0 -3853 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g +2042 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g (extensions\).)49 b(Ob)m(viously)-8 b(,)34 b(the)f(application)h -(program)e(m)m(ust)h(b)s(e)0 3966 y(exp)s(ecting)e(to)g(op)s(en)f(a)h +(program)e(m)m(ust)h(b)s(e)0 2155 y(exp)s(ecting)e(to)g(op)s(en)f(a)h (FITS)e(image)j(and)e(not)g(a)h(FITS)f(table)h(in)f(this)g(case.)0 -4126 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i +2315 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i (ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f(b)m(y)h(app)s(ending)f('b')h(\(for)h -(8-bit)g(b)m(yte\),)g('i')0 4239 y(\(for)g(16-bit)g(in)m(tegers\),)h +(8-bit)g(b)m(yte\),)g('i')0 2428 y(\(for)g(16-bit)g(in)m(tegers\),)h ('j')f(\(for)g(32-bit)g(in)m(teger\),)i('r')d(\(for)h(32-bit)g (\015oating)h(p)s(oin)m(ts\),)e(or)h('d')f(\(for)h(64-bit)g(double)0 -4351 y(precision)d(\015oating)h(p)s(oin)m(t\))g(to)f(the)h('bin')e(k)m +2541 y(precision)d(\015oating)h(p)s(oin)m(t\))g(to)f(the)h('bin')e(k)m (eyw)m(ord)i(\(e.g.)41 b('[binr)28 b(X]')g(creates)i(a)e(real)h -(\015oating)g(p)s(oin)m(t)f(image\).)41 b(If)0 4464 y(the)26 +(\015oating)g(p)s(oin)m(t)f(image\).)41 b(If)0 2654 y(the)26 b(datat)m(yp)s(e)h(is)f(not)g(explicitly)i(sp)s(eci\014ed)d(then)h(a)g (32-bit)h(in)m(teger)h(image)f(will)f(b)s(e)f(created)i(b)m(y)f -(default,)i(unless)0 4577 y(the)h(w)m(eigh)m(ting)h(option)f(is)g(also) +(default,)i(unless)0 2767 y(the)h(w)m(eigh)m(ting)h(option)f(is)g(also) h(sp)s(eci\014ed)e(in)g(whic)m(h)h(case)g(the)g(image)h(will)f(ha)m(v)m -(e)h(a)f(32-bit)h(\015oating)g(p)s(oin)m(t)e(data)0 4690 -y(t)m(yp)s(e)j(b)m(y)f(default.)0 4850 y(The)24 b(histogram)g(image)i +(e)h(a)f(32-bit)h(\015oating)g(p)s(oin)m(t)e(data)0 2880 +y(t)m(yp)s(e)j(b)m(y)f(default.)0 3040 y(The)24 b(histogram)g(image)i (ma)m(y)f(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)e(\(axes\),)k (dep)s(ending)c(on)h(the)g(n)m(um)m(b)s(er)f(of)h(columns)0 -4963 y(that)31 b(are)g(sp)s(eci\014ed.)40 b(The)30 b(general)h(form)f -(of)g(the)h(binning)e(sp)s(eci\014cation)i(is:)48 5226 -y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47 -b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 5488 y Fi(in)39 +3153 y(that)31 b(are)g(sp)s(eci\014ed.)40 b(The)30 b(general)h(form)f +(of)g(the)h(binning)e(sp)s(eci\014cation)i(is:)48 3410 +y Ff([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47 +b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 3668 y Fj(in)39 b(whic)m(h)g(up)f(to)i(4)g(columns,)h(eac)m(h)f(corresp)s(onding)e(to)i (an)g(axis)f(of)h(the)f(image,)k(are)d(listed.)67 b(The)39 -b(column)0 5601 y(names)27 b(are)h(case)h(insensitiv)m(e,)g(and)e(the)h +b(column)0 3781 y(names)27 b(are)h(case)h(insensitiv)m(e,)g(and)e(the)h (column)f(n)m(um)m(b)s(er)f(ma)m(y)i(b)s(e)f(giv)m(en)h(instead)g(of)g -(the)g(name,)g(preceded)f(b)m(y)0 5714 y(a)32 b(p)s(ound)e(sign)i +(the)g(name,)g(preceded)f(b)m(y)0 3894 y(a)32 b(p)s(ound)e(sign)i (\(e.g.,)i([bin)d(#4=1:512]\).)47 b(If)31 b(the)h(column)g(name)g(is)f -(not)h(sp)s(eci\014ed,)g(then)f(CFITSIO)g(will)h(\014rst)p -eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 0 299 a Fg(8.12.)113 b(BINNING)31 -b(OR)f(HISTOGRAMMING)h(SPECIFICA)-8 b(TION)1268 b Fi(107)0 -555 y(try)37 b(to)h(use)f(the)g('preferred)f(column')i(as)f(sp)s +(not)h(sp)s(eci\014ed,)g(then)f(CFITSIO)g(will)h(\014rst)0 +4007 y(try)37 b(to)h(use)f(the)g('preferred)f(column')i(as)f(sp)s (eci\014ed)g(b)m(y)g(the)g(CPREF)g(k)m(eyw)m(ord)h(if)f(it)g(exists)h -(\(e.g.,)j('CPREF)0 668 y(=)i('DETX,DETY'\),)h(otherwise)g(column)f +(\(e.g.,)j('CPREF)0 4120 y(=)i('DETX,DETY'\),)h(otherwise)g(column)f (names)g('X',)h('Y',)g('Z',)f(and)f('T')i(will)f(b)s(e)f(assumed)h(for) -g(eac)m(h)h(of)0 781 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 +g(eac)m(h)h(of)0 4233 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 b(.)62 b(In)37 b(cases)h(where)e(the)i(column)f(name)g(could)g(b)s(e)f -(confused)h(with)g(an)g(arithmetic)0 894 y(expression,)30 +(confused)h(with)g(an)g(arithmetic)0 4346 y(expression,)30 b(enclose)i(the)f(column)f(name)g(in)g(paren)m(theses)h(to)g(force)g (the)f(name)h(to)g(b)s(e)f(in)m(terpreted)g(literally)-8 -b(.)0 1054 y(Eac)m(h)33 b(column)f(name)g(ma)m(y)h(b)s(e)f(follo)m(w)m +b(.)0 4506 y(Eac)m(h)33 b(column)f(name)g(ma)m(y)h(b)s(e)f(follo)m(w)m (ed)h(b)m(y)g(an)f(equals)g(sign)h(and)e(then)h(the)g(lo)m(w)m(er)i -(and)e(upp)s(er)e(range)i(of)h(the)0 1167 y(histogram,)f(and)e(the)h +(and)e(upp)s(er)e(range)i(of)h(the)0 4619 y(histogram,)f(and)e(the)h (size)h(of)f(the)g(histogram)h(bins,)e(separated)h(b)m(y)g(colons.)43 b(Spaces)31 b(are)g(allo)m(w)m(ed)i(b)s(efore)e(and)0 -1280 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)f(the)h +4731 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)f(the)h ('min:max:binsize')g(string.)40 b(The)29 b(min,)f(max)h(and)f(binsize)h -(v)-5 b(alues)0 1393 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f +(v)-5 b(alues)0 4844 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f (\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)f(or)h(they)g(ma)m(y)g(b) s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)g(the)g(header)g(of)0 -1506 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5 +4957 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5 b(alue)31 b(of)g(that)g(k)m(eyw)m(ord)f(is)h(substituted)f(in)m(to)h -(the)g(expression.)0 1666 y(Default)37 b(v)-5 b(alues)36 +(the)g(expression.)0 5117 y(Default)37 b(v)-5 b(alues)36 b(for)g(the)g(min,)h(max)f(and)g(binsize)g(quan)m(tities)h(will)f(b)s (e)f(used)h(if)f(not)i(explicitly)g(giv)m(en)g(in)f(the)0 -1779 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h -(examples:)191 2033 y Fe([bin)47 b(x)g(=)g(:512:2])94 -b(-)47 b(use)g(default)f(minimum)g(value)191 2146 y([bin)h(x)g(=)g +5230 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h +(examples:)191 5488 y Ff([bin)47 b(x)g(=)g(:512:2])94 +b(-)47 b(use)g(default)f(minimum)g(value)191 5601 y([bin)h(x)g(=)g (1::2])190 b(-)47 b(use)g(default)f(maximum)g(value)191 -2259 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size) -191 2372 y([bin)g(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g -(value)g(and)h(bin)g(size)191 2485 y([bin)g(x)g(=)g(:512])190 +5714 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size)p +eop end +%%Page: 109 115 +TeXDict begin 109 114 bop 0 299 a Fh(8.12.)113 b(BINNING)31 +b(OR)f(HISTOGRAMMING)h(SPECIFICA)-8 b(TION)1268 b Fj(109)191 +555 y Ff([bin)47 b(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g +(value)g(and)h(bin)g(size)191 668 y([bin)g(x)g(=)g(:512])190 b(-)47 b(use)g(default)f(minimum)g(value)g(and)h(bin)g(size)191 -2598 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h -(maximum)f(values)191 2711 y([bin)h(x])524 b(-)47 b(use)g(default)f -(minimum,)g(maximum)g(and)g(bin)h(size)191 2824 y([bin)g(4])524 +781 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h +(maximum)f(values)191 894 y([bin)h(x])524 b(-)47 b(use)g(default)f +(minimum,)g(maximum)g(and)g(bin)h(size)191 1007 y([bin)g(4])524 b(-)47 b(default)f(2-D)h(image,)f(bin)h(size)g(=)g(4)h(in)f(both)g -(axes)191 2937 y([bin])619 b(-)47 b(default)f(2-D)h(image)0 -3191 y Fi(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33 +(axes)191 1120 y([bin])619 b(-)47 b(default)f(2-D)h(image)0 +1374 y Fj(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33 b(of)g(the)g(TLMINn,)f(TLMAXn,)h(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)e -(they)h(exist,)h(for)0 3304 y(the)j(default)f(min,)i(max,)g(and)e +(they)h(exist,)h(for)0 1487 y(the)j(default)f(min,)i(max,)g(and)e (binsize,)i(resp)s(ectiv)m(ely)-8 b(.)61 b(If)36 b(they)h(do)f(not)h -(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 3417 y(actual)d(minim)m +(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 1600 y(actual)d(minim)m (um)e(and)h(maxim)m(um)g(v)-5 b(alues)32 b(in)g(the)g(column)f(for)h (the)g(histogram)h(min)e(and)h(max)g(v)-5 b(alues.)45 -b(The)0 3530 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g +b(The)0 1713 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g (or)e(\(max)h(-)g(min\))f(/)h(10.,)i(whic)m(hev)m(er)e(is)g(smaller,)h -(so)e(that)i(the)e(histogram)0 3643 y(will)e(ha)m(v)m(e)g(at)g(least)h -(10)f(bins)f(along)h(eac)m(h)h(axis.)0 3803 y(A)41 b(shortcut)g +(so)e(that)i(the)e(histogram)0 1826 y(will)e(ha)m(v)m(e)g(at)g(least)h +(10)f(bins)f(along)h(eac)m(h)h(axis.)0 1986 y(A)41 b(shortcut)g (notation)h(is)f(allo)m(w)m(ed)i(if)e(all)h(the)f(columns/axes)h(ha)m (v)m(e)g(the)f(same)g(binning)f(sp)s(eci\014cation.)74 -b(In)0 3916 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b) +b(In)0 2099 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b) s(e)f(listed)h(within)f(paren)m(theses,)i(follo)m(w)m(ed)h(b)m(y)d(the) -h(\(single\))h(binning)0 4029 y(sp)s(eci\014cation,)d(as)g(in:)191 -4283 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 4396 y([bin)g(\(X,Y\))f(=)h -(5])0 4650 y Fi(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g +h(\(single\))h(binning)0 2212 y(sp)s(eci\014cation,)d(as)g(in:)191 +2466 y Ff([bin)47 b(\(X,Y\)=1:512:2])191 2579 y([bin)g(\(X,Y\))f(=)h +(5])0 2834 y Fj(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g (the)g(last)g(item)h(in)e(the)h(binning)f(sp)s(eci\014er)g(and,)h(if)f -(presen)m(t,)i(is)e(separated)0 4763 y(from)38 b(the)g(list)h(of)f +(presen)m(t,)i(is)e(separated)0 2947 y(from)38 b(the)g(list)h(of)f (columns)g(b)m(y)g(a)h(semi-colon.)65 b(As)39 b(the)f(histogram)h(is)f (accum)m(ulated,)k(this)c(w)m(eigh)m(t)i(is)e(used)0 -4876 y(to)d(incremen)m(ted)f(the)g(v)-5 b(alue)35 b(of)f(the)g +3059 y(to)d(incremen)m(ted)f(the)g(v)-5 b(alue)35 b(of)f(the)g (appropriated)f(bin)h(in)f(the)h(histogram.)52 b(If)34 -b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 4989 y(sp)s(eci\014ed,)24 +b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 3172 y(sp)s(eci\014ed,)24 b(then)f(the)g(default)g(w)m(eigh)m(t)i(=)d(1)i(is)f(assumed.)37 b(The)23 b(w)m(eigh)m(ting)i(factor)f(ma)m(y)f(b)s(e)g(a)g(constan)m(t) -i(in)m(teger)f(or)0 5102 y(\015oating)30 b(p)s(oin)m(t)f(n)m(um)m(b)s +i(in)m(teger)f(or)0 3285 y(\015oating)30 b(p)s(oin)m(t)f(n)m(um)m(b)s (er,)f(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)h(con)m(taining)g(the)g (w)m(eigh)m(ting)g(v)-5 b(alue.)41 b(Or)28 b(the)h(w)m(eigh)m(ting)0 -5215 y(factor)g(ma)m(y)g(b)s(e)e(the)h(name)g(of)h(a)f(table)h(column)f +3398 y(factor)g(ma)m(y)g(b)s(e)e(the)h(name)g(of)h(a)f(table)h(column)f (in)g(whic)m(h)f(case)j(the)e(v)-5 b(alue)28 b(in)g(that)h(column,)f -(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 5328 y(basis,)i(will)h(b)s(e)f -(used.)0 5488 y(In)35 b(some)h(cases,)i(the)d(column)h(or)f(k)m(eyw)m +(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 3511 y(basis,)i(will)h(b)s(e)f +(used.)0 3671 y(In)35 b(some)h(cases,)i(the)d(column)h(or)f(k)m(eyw)m (ord)h(ma)m(y)g(giv)m(e)h(the)f(recipro)s(cal)g(of)g(the)g(actual)h(w)m -(eigh)m(t)g(v)-5 b(alue)36 b(that)g(is)0 5601 y(needed.)49 +(eigh)m(t)g(v)-5 b(alue)36 b(that)g(is)0 3784 y(needed.)49 b(In)32 b(this)h(case,)i(precede)e(the)h(w)m(eigh)m(t)g(k)m(eyw)m(ord)g (or)f(column)g(name)g(b)m(y)g(a)g(slash)g('/')h(to)g(tell)g(CFITSIO)0 -5714 y(to)d(use)f(the)h(recipro)s(cal)g(of)f(the)h(v)-5 -b(alue)31 b(when)e(constructing)i(the)g(histogram.)p -eop end -%%Page: 108 114 -TeXDict begin 108 113 bop 0 299 a Fi(108)1573 b Fg(CHAPTER)30 -b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 -555 y Fi(F)g(or)35 b(complex)f(or)g(commonly)g(used)f(histograms,)j +3897 y(to)d(use)f(the)h(recipro)s(cal)g(of)f(the)h(v)-5 +b(alue)31 b(when)e(constructing)i(the)g(histogram.)0 +4057 y(F)-8 b(or)35 b(complex)f(or)g(commonly)g(used)f(histograms,)j (one)e(can)g(also)h(place)g(its)f(description)g(in)m(to)h(a)f(text)h -(\014le)f(and)0 668 y(imp)s(ort)44 b(it)g(in)m(to)i(the)e(binning)f(sp) -s(eci\014cation)i(using)f(the)h(syn)m(tax)f('[bin)g(@\014lename.txt]'.) -84 b(The)44 b(\014le's)g(con-)0 781 y(ten)m(ts)37 b(can)e(extend)h(o)m -(v)m(er)h(m)m(ultiple)f(lines,)i(although)e(it)g(m)m(ust)f(still)i -(conform)f(to)g(the)g(no-spaces)g(rule)f(for)h(the)0 -894 y(min:max:binsize)h(syn)m(tax)h(and)e(eac)m(h)i(axis)g(sp)s -(eci\014cation)g(m)m(ust)f(still)g(b)s(e)g(comma-separated.)62 -b(An)m(y)37 b(lines)g(in)0 1007 y(the)32 b(external)h(text)g(\014le)f -(that)h(b)s(egin)e(with)h(2)g(slash)g(c)m(haracters)h(\('//'\))h(will)e -(b)s(e)g(ignored)g(and)f(ma)m(y)i(b)s(e)e(used)g(to)0 -1120 y(add)f(commen)m(ts)h(in)m(to)g(the)g(\014le.)0 -1280 y(Examples:)191 1540 y Fe([bini)46 b(detx,)h(dety])762 -b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 1653 -y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 1766 -y(default)h(values)g(for)h(the)g(histogram)1861 1878 -y(range)g(and)g(binsize)191 2104 y([bin)g(\(detx,)f(dety\)=16;)f +(\014le)f(and)0 4170 y(imp)s(ort)44 b(it)g(in)m(to)i(the)e(binning)f +(sp)s(eci\014cation)i(using)f(the)h(syn)m(tax)f('[bin)g +(@\014lename.txt]'.)84 b(The)44 b(\014le's)g(con-)0 4283 +y(ten)m(ts)37 b(can)e(extend)h(o)m(v)m(er)h(m)m(ultiple)f(lines,)i +(although)e(it)g(m)m(ust)f(still)i(conform)f(to)g(the)g(no-spaces)g +(rule)f(for)h(the)0 4396 y(min:max:binsize)h(syn)m(tax)h(and)e(eac)m(h) +i(axis)g(sp)s(eci\014cation)g(m)m(ust)f(still)g(b)s(e)g +(comma-separated.)62 b(An)m(y)37 b(lines)g(in)0 4509 +y(the)32 b(external)h(text)g(\014le)f(that)h(b)s(egin)e(with)h(2)g +(slash)g(c)m(haracters)h(\('//'\))h(will)e(b)s(e)g(ignored)g(and)f(ma)m +(y)i(b)s(e)e(used)g(to)0 4622 y(add)f(commen)m(ts)h(in)m(to)g(the)g +(\014le.)0 4782 y(Examples:)191 5036 y Ff([bini)46 b(detx,)h(dety])762 +b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 5149 +y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 5262 +y(default)h(values)g(for)h(the)g(histogram)1861 5375 +y(range)g(and)g(binsize)191 5601 y([bin)g(\(detx,)f(dety\)=16;)f (/exposure])g(-)i(2-D,)g(32-bit)f(real)h(histogram)e(of)i(DETX)1861 -2217 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)1861 -2330 y(in)g(both)e(axes.)h(The)f(histogram)g(values)1861 -2443 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 -2556 y(value.)191 2782 y([bin)h(time=TSTART:TSTOP:0.1])280 +5714 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)p +eop end +%%Page: 110 116 +TeXDict begin 110 115 bop 0 299 a Fj(110)1573 b Fh(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1861 +555 y Ff(in)48 b(both)e(axes.)h(The)f(histogram)g(values)1861 +668 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 +781 y(value.)191 1007 y([bin)h(time=TSTART:TSTOP:0.1])280 b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861 -2895 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 3008 -y(with)g(0.1)g(unit)g(size)f(bins.)191 3233 y([bin)h(pha,)f +1120 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 1233 +y(with)g(0.1)g(unit)g(size)f(bins.)191 1458 y([bin)h(pha,)f (time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g -(binning)1861 3346 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) -1861 3459 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 -3572 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 -3798 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h -(the)g(text)f(file)1861 3911 y(binFilter.txt)f(for)h(the)h(binning)1861 -4024 y(specifications.)p eop end -%%Page: 109 115 -TeXDict begin 109 114 bop 0 1225 a Ff(Chapter)65 b(9)0 -1687 y Fl(T)-19 b(emplate)76 b(Files)0 2180 y Fi(When)38 +(binning)1861 1571 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) +1861 1684 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 +1797 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 +2023 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h +(the)g(text)f(file)1861 2136 y(binFilter.txt)f(for)h(the)h(binning)1861 +2249 y(specifications.)p eop end +%%Page: 111 117 +TeXDict begin 111 116 bop 0 1225 a Fg(Chapter)65 b(9)0 +1687 y Fm(T)-19 b(emplate)76 b(Files)0 2180 y Fj(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g(created)g(with)g(a)f(call)i(to)g (\014ts)p 2101 2180 28 4 v 32 w(create)p 2369 2180 V 35 w(\014le,)g(the)f(name)g(of)g(a)g(template)h(\014le)e(ma)m(y)0 @@ -10327,12 +12536,12 @@ (where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h(FITS) f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h(ASCI)s(I)e (template)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m(wing)i -(sections.)0 3188 y Fd(9.1)135 b(Detailed)47 b(T)-11 -b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fi(The)30 +(sections.)0 3188 y Fe(9.1)135 b(Detailed)47 b(T)-11 +b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fj(The)30 b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)k(line)f(closely)h(follo) m(ws)f(the)g(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95 -3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926 -y Fi(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f +3682 y Ff(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926 +y Fj(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f (\(e.g.,)25 b(the)d(equals)f(sign)h(ma)m(y)f(app)s(ear)g(at)h(an)m(y)g (p)s(osition)f(in)g(the)h(line\))g(and)0 4039 y(T)-8 b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)h(and)e(are)g(treated)h @@ -10368,11 +12577,11 @@ (long)g(in)m(tegers)g(with)f(a)g(range)h(from)e(-2147483648)0 5601 y(to)31 b(+2147483647,)k(whereas)30 b(other)h(C)f(compilers)h (supp)s(ort)e(8-b)m(yte)j(in)m(tegers)f(with)f(a)h(range)g(of)g(plus)e -(or)i(min)m(us)0 5714 y(2**63.)1882 5942 y(109)p eop +(or)i(min)m(us)0 5714 y(2**63.)1882 5942 y(111)p eop end -%%Page: 110 116 -TeXDict begin 110 115 bop 0 299 a Fi(110)2295 b Fg(CHAPTER)30 -b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fi(The)23 +%%Page: 112 118 +TeXDict begin 112 117 bop 0 299 a Fj(112)2295 b Fh(CHAPTER)30 +b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fj(The)23 b(c)m(haracter)h(string)f(v)-5 b(alues)24 b(need)f(not)g(b)s(e)g (enclosed)g(in)g(single)h(quote)g(c)m(haracters)g(unless)f(they)g(are)h (necessary)0 668 y(to)37 b(distinguish)e(the)i(string)f(from)f(a)i @@ -10390,10 +12599,10 @@ b(as)i(a)f(single)h(long)f(line)h(in)e(the)i(template,)h(or)e(b)m(y)f (using)h(m)m(ultiple)h(lines)f(where)f(the)i(con)m(tin)m(uing)g(lines)0 1393 y(con)m(tain)i(the)e('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)f(this) -g(example:)95 1657 y Fe(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e +g(example:)95 1657 y Ff(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e (string)g(value)h(that)f(is)i(contin&')95 1770 y(CONTINUE)94 b('ued)46 b(over)h(2)g(records')f(/)h(comment)f(field)h(goes)f(here)0 -2035 y Fi(The)29 b(format)h(of)g(template)h(lines)e(with)h(CONTINUE)e +2035 y Fj(The)29 b(format)h(of)g(template)h(lines)e(with)h(CONTINUE)e (k)m(eyw)m(ord)i(is)g(v)m(ery)g(strict:)41 b(3)30 b(spaces)g(m)m(ust)f (follo)m(w)i(CON-)0 2147 y(TINUE)f(and)g(the)g(rest)h(of)f(the)h(line)g (is)f(copied)h(v)m(erbatim)g(to)g(the)g(FITS)e(\014le.)0 @@ -10419,8 +12628,8 @@ (a)h(new)e(extension)i(HDU)f(de\014nition.)52 b(The)33 b(previous)h(HDU)h(will)0 3578 y(b)s(e)30 b(closed)h(at)g(this)f(p)s (oin)m(t)h(and)e(pro)s(cessing)i(of)f(the)h(next)f(extension)h(b)s -(egins.)0 3918 y Fd(9.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0 -4169 y Fi(If)31 b(a)h(template)g(k)m(eyw)m(ord)g(name)f(ends)g(with)g +(egins.)0 3918 y Fe(9.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0 +4169 y Fj(If)31 b(a)h(template)g(k)m(eyw)m(ord)g(name)f(ends)g(with)g (a)g("#")h(c)m(haracter,)i(it)e(is)f(said)g(to)h(b)s(e)f ('auto-indexed'.)44 b(Eac)m(h)32 b("#")0 4282 y(c)m(haracter)i(will)f (b)s(e)f(replaced)i(b)m(y)e(the)h(curren)m(t)g(in)m(teger)h(index)e(v) @@ -10435,27 +12644,27 @@ b(b)s(eha)m(vior)g(can)h(b)s(e)f(rather)0 4733 y(subtle,)d(as)g (illustrated)h(in)e(the)h(follo)m(wing)h(examples)f(in)f(whic)m(h)h (the)g(TTYPE)e(k)m(eyw)m(ord)i(is)g(the)g(incremen)m(tor)g(in)0 -4846 y(b)s(oth)i(cases:)95 5111 y Fe(TTYPE#)47 b(=)g(TIME)95 +4846 y(b)s(oth)i(cases:)95 5111 y Ff(TTYPE#)47 b(=)g(TIME)95 5224 y(TFORM#)g(=)g(1D)95 5337 y(TTYPE#)g(=)g(RATE)95 -5449 y(TFORM#)g(=)g(1E)0 5714 y Fi(will)26 b(create)i(TTYPE1,)e(TF)m +5449 y(TFORM#)g(=)g(1E)0 5714 y Fj(will)26 b(create)i(TTYPE1,)e(TF)m (ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40 b(But)26 b(if)g(the)g(template)h(lo)s(oks)f(lik)m(e,)p eop end -%%Page: 111 117 -TeXDict begin 111 116 bop 0 299 a Fg(9.3.)72 b(TEMPLA)-8 -b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)2028 b Fi(111)95 -555 y Fe(TTYPE#)47 b(=)g(TIME)95 668 y(TTYPE#)g(=)g(RATE)95 +%%Page: 113 119 +TeXDict begin 113 118 bop 0 299 a Fh(9.3.)72 b(TEMPLA)-8 +b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)2028 b Fj(113)95 +555 y Ff(TTYPE#)47 b(=)g(TIME)95 668 y(TTYPE#)g(=)g(RATE)95 781 y(TFORM#)g(=)g(1D)95 894 y(TFORM#)g(=)g(1E)0 1202 -y Fi(this)31 b(results)f(in)h(a)g(FITS)f(\014les)h(with)f(TTYPE1,)h +y Fj(this)31 b(results)f(in)h(a)g(FITS)f(\014les)h(with)f(TTYPE1,)h (TTYPE2,)g(TF)m(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)f(is)g(probably)0 -1315 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1706 y Fd(9.3)135 +1315 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1706 y Fe(9.3)135 b(T)-11 b(emplate)46 b(P)l(arser)g(Directiv)l(es)0 1968 -y Fi(In)29 b(addition)i(to)f(the)g(template)i(lines)e(whic)m(h)g +y Fj(In)29 b(addition)i(to)f(the)g(template)i(lines)e(whic)m(h)g (de\014ne)f(individual)h(k)m(eyw)m(ords,)g(the)g(template)i(parser)d (recognizes)0 2081 y(3)h(sp)s(ecial)h(directiv)m(es)g(whic)m(h)f(are)g (eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)h(c)m(haracter:)90 -b Fe(\\include,)45 b(\\group)p Fi(,)29 b(and)48 2194 -y Fe(\\end)p Fi(.)0 2354 y(The)37 b('include')h(directiv)m(e)i(m)m(ust) +b Ff(\\include,)45 b(\\group)p Fj(,)29 b(and)48 2194 +y Ff(\\end)p Fj(.)0 2354 y(The)37 b('include')h(directiv)m(e)i(m)m(ust) d(b)s(e)h(follo)m(w)m(ed)h(b)m(y)f(a)g(\014lename.)63 b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)f(stop)0 2467 y(reading)d(the)g(curren)m(t)g(template)h(\014le)f(and)f(b)s(egin) @@ -10475,14 +12684,14 @@ (ccupies)g(one)f(FITS)g(\014le)g(HDU)h(of)f(sp)s(ecial)h(t)m(yp)s(e)f (\(GR)m(OUP)h(HDU\),)h(so)e(if)h(a)0 3304 y(template)f(sp)s(eci\014es)e (1)h(group)e(with)h(1)h(mem)m(b)s(er)f(HDU)h(lik)m(e:)0 -3613 y Fe(\\group)0 3725 y(grpdescr)46 b(=)h('demo')0 +3613 y Ff(\\group)0 3725 y(grpdescr)46 b(=)h('demo')0 3838 y(xtension)f(bintable)0 3951 y(#)h(this)g(bintable)f(has)h(0)g -(cols,)f(0)i(rows)0 4064 y(\\end)0 4373 y Fi(then)30 +(cols,)f(0)i(rows)0 4064 y(\\end)0 4373 y Fj(then)30 b(the)h(parser)e(creates)j(a)f(FITS)f(\014le)g(with)g(3)h(HDUs)g(:)0 -4681 y Fe(1\))47 b(dummy)g(PHDU)0 4794 y(2\))g(GROUP)g(HDU)f(\(has)h(1) +4681 y Ff(1\))47 b(dummy)g(PHDU)0 4794 y(2\))g(GROUP)g(HDU)f(\(has)h(1) h(member,)d(which)i(is)g(bintable)e(in)j(HDU)f(number)f(3\))0 4907 y(3\))h(bintable)f(\(member)g(of)h(GROUP)f(in)h(HDU)g(number)f -(2\))0 5215 y Fi(T)-8 b(ec)m(hnically)32 b(sp)s(eaking,)e(the)f(GR)m +(2\))0 5215 y Fj(T)-8 b(ec)m(hnically)32 b(sp)s(eaking,)e(the)f(GR)m (OUP)i(HDU)f(is)g(a)g(BINT)-8 b(ABLE)30 b(with)g(6)g(columns.)40 b(Applications)31 b(can)f(de\014ne)0 5328 y(additional)23 b(columns)f(in)f(a)i(GR)m(OUP)f(HDU)h(using)f(TF)m(ORMn)f(and)h(TTYPEn) @@ -10492,12 +12701,12 @@ (template)g(\014le)f(using)f(the)h(group)f(directiv)m(es,)k(lo)s(ok)d (at)g(the)g(sample.tpl)0 5714 y(\014le)30 b(that)h(is)g(included)e(in)i (the)f(CFITSIO)f(distribution.)p eop end -%%Page: 112 118 -TeXDict begin 112 117 bop 0 299 a Fi(112)2295 b Fg(CHAPTER)30 -b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fd(9.4)135 +%%Page: 114 120 +TeXDict begin 114 119 bop 0 299 a Fj(114)2295 b Fh(CHAPTER)30 +b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fe(9.4)135 b(F)-11 b(ormal)46 b(T)-11 b(emplate)45 b(Syn)l(tax)0 -805 y Fi(The)30 b(template)i(syn)m(tax)f(can)f(formally)h(b)s(e)f -(de\014ned)f(as)i(follo)m(ws:)191 1063 y Fe(TEMPLATE)45 +805 y Fj(The)30 b(template)i(syn)m(tax)f(can)f(formally)h(b)s(e)f +(de\014ned)f(as)i(follo)m(ws:)191 1063 y Ff(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e(...)h(])334 1289 y(BLOCK)f(=)i({)f(HDU)g(|)h (GROUP)e(})334 1515 y(GROUP)g(=)i(\\GROUP)e([)h(BLOCK)g(...)g(])g (\\END)430 1741 y(HDU)f(=)i(XTENSION)d([)j(LINE)f(...)f(])i({)f @@ -10506,13 +12715,13 @@ (COMMENT)f(])191 2192 y(X)h(...)238 b(-)48 b(X)f(can)g(be)g(present)f (1)h(or)h(more)e(times)191 2305 y({)h(X)h(|)f(Y)h(})f(-)h(X)f(or)g(Y) 191 2418 y([)g(X)h(])238 b(-)48 b(X)f(is)g(optional)0 -2676 y Fi(A)m(t)34 b(the)f(topmost)g(lev)m(el,)i(the)e(template)i +2676 y Fj(A)m(t)34 b(the)f(topmost)g(lev)m(el,)i(the)e(template)i (de\014nes)c(1)j(or)e(more)h(template)h(blo)s(c)m(ks.)49 b(Blo)s(c)m(ks)34 b(can)f(b)s(e)f(either)h(HDU)0 2789 y(\(Header)27 b(Data)h(Unit\))g(or)e(a)h(GR)m(OUP)-8 b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)g(the)g(parser)f(creates) i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 2902 y(\014le)j(HDUs.)0 -3235 y Fd(9.5)135 b(Errors)0 3485 y Fi(In)24 b(general)h(the)f(\014ts)p +3235 y Fe(9.5)135 b(Errors)0 3485 y Fj(In)24 b(general)h(the)f(\014ts)p 692 3485 28 4 v 33 w(execute)p 1019 3485 V 34 w(template\(\))i (function)e(tries)h(to)g(b)s(e)f(as)g(atomic)i(as)f(p)s(ossible,)g(so)f (either)h(ev)m(erything)0 3598 y(is)f(done)g(or)g(nothing)f(is)h(done.) @@ -10522,23 +12731,23 @@ (top)g(lev)m(el)h(BLOCK)e(\(with)h(all)g(its)h(c)m(hildren)e(if)h(an)m (y\))g(in)g(whic)m(h)f(the)h(error)f(o)s(ccurred,)0 3824 y(then)g(it)h(will)g(stop)f(reading)h(the)f(template)i(\014le)e(and)g -(it)h(will)g(return)e(with)h(an)g(error.)0 4158 y Fd(9.6)135 -b(Examples)0 4408 y Fi(1.)54 b(This)34 b(template)i(\014le)f(will)g +(it)h(will)g(return)e(with)h(an)g(error.)0 4158 y Fe(9.6)135 +b(Examples)0 4408 y Fj(1.)54 b(This)34 b(template)i(\014le)f(will)g (create)h(a)f(200)h(x)e(300)i(pixel)f(image,)j(with)c(4-b)m(yte)i(in)m (teger)g(pixel)f(v)-5 b(alues,)36 b(in)f(the)0 4521 y(primary)29 -b(HDU:)95 4779 y Fe(SIMPLE)47 b(=)g(T)95 4891 y(BITPIX)g(=)g(32)95 +b(HDU:)95 4779 y Ff(SIMPLE)47 b(=)g(T)95 4891 y(BITPIX)g(=)g(32)95 5004 y(NAXIS)g(=)g(2)239 b(/)47 b(number)f(of)h(dimensions)95 5117 y(NAXIS1)g(=)g(100)95 b(/)47 b(length)f(of)h(first)g(axis)95 5230 y(NAXIS2)g(=)g(200)95 b(/)47 b(length)f(of)h(second)f(axis)95 5343 y(OBJECT)h(=)g(NGC)g(253)g(/)g(name)g(of)g(observed)f(object)0 -5601 y Fi(The)35 b(allo)m(w)m(ed)i(v)-5 b(alues)36 b(of)f(BITPIX)g(are) +5601 y Fj(The)35 b(allo)m(w)m(ed)i(v)-5 b(alues)36 b(of)f(BITPIX)g(are) h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)f(resp)s(ectiv)m (ely)-8 b(,)39 b(8-bit)d(in)m(teger,)0 5714 y(16-bit)c(in)m(teger,)g (32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)f(64)h (bit)g(\015oating)g(p)s(oin)m(t)f(pixels.)p eop end -%%Page: 113 119 -TeXDict begin 113 118 bop 0 299 a Fg(9.6.)72 b(EXAMPLES)3039 -b Fi(113)0 555 y(2.)39 b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)26 +%%Page: 115 121 +TeXDict begin 115 120 bop 0 299 a Fh(9.6.)72 b(EXAMPLES)3039 +b Fj(115)0 555 y(2.)39 b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)26 b(the)c(template)i(\014rst)e(needs)g(to)i(include)e(XTENSION)g(=)g(T)-8 b(ABLE)23 b(or)f(BINT)-8 b(ABLE)0 668 y(to)31 b(de\014ne)e(whether)g (it)h(is)g(an)f(ASCI)s(I)g(or)g(binary)g(table,)i(and)f(NAXIS2)g(to)g @@ -10546,11 +12755,11 @@ 781 y(table.)50 b(Tw)m(o)34 b(template)g(lines)g(are)g(then)f(needed)f (to)i(de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0 894 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)f(as)h(in)f(this)g(example:) -95 1154 y Fe(xtension)46 b(=)h(bintable)95 1267 y(naxis2)g(=)g(40)95 +95 1154 y Ff(xtension)46 b(=)h(bintable)95 1267 y(naxis2)g(=)g(40)95 1380 y(ttype#)g(=)g(Name)95 1492 y(tform#)g(=)g(10a)95 1605 y(ttype#)g(=)g(Npoints)95 1718 y(tform#)g(=)g(j)95 1831 y(ttype#)g(=)g(Rate)95 1944 y(tunit#)g(=)g(counts/s)95 -2057 y(tform#)g(=)g(e)0 2317 y Fi(The)26 b(ab)s(o)m(v)m(e)j(example)e +2057 y(tform#)g(=)g(e)0 2317 y Fj(The)26 b(ab)s(o)m(v)m(e)j(example)e (de\014nes)f(a)i(n)m(ull)f(primary)f(arra)m(y)h(follo)m(w)m(ed)i(b)m(y) e(a)g(40-ro)m(w)h(binary)e(table)i(extension)g(with)f(3)0 2430 y(columns)h(called)h('Name',)h('Np)s(oin)m(ts',)f(and)f('Rate',)i @@ -10569,19 +12778,19 @@ (to)e(upp)s(er-case)g(in)f(the)h(FITS)g(\014le\))g(and)f(that)i(string) 0 3107 y(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(generally)g(do)f(not)h(need) f(to)h(b)s(e)f(enclosed)h(in)f(quotes.)p eop end -%%Page: 114 120 -TeXDict begin 114 119 bop 0 299 a Fi(114)2295 b Fg(CHAPTER)30 +%%Page: 116 122 +TeXDict begin 116 121 bop 0 299 a Fj(116)2295 b Fh(CHAPTER)30 b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)p eop end -%%Page: 115 121 -TeXDict begin 115 120 bop 0 1225 a Ff(Chapter)65 b(10)0 -1687 y Fl(Summary)76 b(of)i(all)f(FITSIO)0 1937 y(User-In)-6 -b(terface)77 b(Subroutines)0 2429 y Fi(Error)29 b(Status)i(Routines)f -(page)h(29)382 2696 y Fe(FTVERS\()46 b(>)h(version\))382 +%%Page: 117 123 +TeXDict begin 117 122 bop 0 1225 a Fg(Chapter)65 b(10)0 +1687 y Fm(Summary)76 b(of)i(all)f(FITSIO)0 1937 y(User-In)-6 +b(terface)77 b(Subroutines)0 2429 y Fj(Error)29 b(Status)i(Routines)f +(page)h(29)382 2696 y Ff(FTVERS\()46 b(>)h(version\))382 2809 y(FTGERR\(status,)d(>)j(errtext\))382 2922 y(FTGMSG\()f(>)h (errmsg\))382 3035 y(FTRPRT)f(\(stream,)f(>)j(status\))382 3147 y(FTPMSG\(errmsg\))382 3260 y(FTPMRK)382 3373 y(FTCMSG)382 -3486 y(FTCMRK)0 3753 y Fi(FITS)30 b(File)h(Op)s(en)e(and)h(Close)h -(Subroutines:)39 b(page)31 b(35)382 4020 y Fe +3486 y(FTCMRK)0 3753 y Fj(FITS)30 b(File)h(Op)s(en)e(and)h(Close)h +(Subroutines:)39 b(page)31 b(35)382 4020 y Ff (FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382 4133 y(FTDKOPN\(unit,filename,rw)o(mod)o(e,)42 b(>)47 b(blocksize,status\))382 4246 y(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 @@ -10596,12 +12805,12 @@ 382 5262 y(FTCLOS\(unit,)c(>)k(status\))382 5375 y(FTDELT\(unit,)c(>)k (status\))382 5488 y(FTGIOU\()e(>)h(iounit,)f(status\))382 5601 y(FTFIOU\(iounit,)e(>)j(status\))0 5714 y(CFITS2Unit\(fitsfile)c -(*ptr\))141 b(\(C)48 b(routine\))1882 5942 y Fi(115)p +(*ptr\))141 b(\(C)48 b(routine\))1882 5942 y Fj(117)p eop end -%%Page: 116 122 -TeXDict begin 116 121 bop 0 299 a Fi(116)281 b Fg(CHAPTER)30 +%%Page: 118 124 +TeXDict begin 118 123 bop 0 299 a Fj(118)281 b Fh(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 -b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(CUnit2FITS\(int)44 +b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Ff(CUnit2FITS\(int)44 b(unit\))380 b(\(C)47 b(routine\))382 668 y(FTEXTN\(filename,)c(>)48 b(nhdu,)e(status\))382 781 y(FTFLNM\(unit,)e(>)k(filename,)d(status\)) 382 894 y(FTFLMD\(unit,)f(>)k(iomode,)e(status\))382 @@ -10610,8 +12819,8 @@ h(filter,)716 1233 y(binspec,)f(colspec,)h(status\))382 1346 y(FTRTNM\(filename,)d(>)48 b(rootname,)d(status\))382 1458 y(FTEXIST\(filename,)e(>)k(exist,)f(status\))0 1695 -y Fi(HDU-Lev)m(el)33 b(Op)s(erations:)40 b(page)31 b(38)382 -1932 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))382 +y Fj(HDU-Lev)m(el)33 b(Op)s(erations:)40 b(page)31 b(38)382 +1932 y Ff(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))382 2045 y(FTMRHD\(unit,nmove,)c(>)k(hdutype,status\))382 2158 y(FTGHDN\(unit,)d(>)k(nhdu\))382 2271 y(FTMNHD\(unit,)c(hdutype,)i (extname,)f(extver,)h(>)i(status\))382 2384 y(FTGHDT\(unit,)c(>)k @@ -10628,9 +12837,9 @@ (>)j(status\))382 3513 y(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42 b(>)47 b(status\))382 3626 y(FTCPHD\(inunit,)d(outunit,)h(>)j(status\)) 382 3739 y(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0 -3976 y Fi(Subroutines)29 b(to)i(sp)s(ecify)f(or)g(mo)s(dify)g(the)g +3976 y Fj(Subroutines)29 b(to)i(sp)s(ecify)f(or)g(mo)s(dify)g(the)g (structure)g(of)h(the)f(CHDU:)h(page)h(41)382 4213 y -Fe(FTRDEF\(unit,)44 b(>)k(status\))93 b(\(DEPRECATED\))382 +Ff(FTRDEF\(unit,)44 b(>)k(status\))93 b(\(DEPRECATED\))382 4326 y(FTPDEF\(unit,bitpix,naxis)o(,na)o(xes,)o(pcou)o(nt,)o(gcou)o (nt,)41 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4439 y(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 @@ -10638,16 +12847,16 @@ (FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 b(>)47 b(status\))94 b(\(DEPRECATED\))382 4664 y(FTDDEF\(unit,bytlen,) 42 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4777 y -(FTPTHP\(unit,theap,)43 b(>)k(status\))0 5014 y Fi(Header)31 +(FTPTHP\(unit,theap,)43 b(>)k(status\))0 5014 y Fj(Header)31 b(Space)f(and)g(P)m(osition)i(Subroutines:)39 b(page)31 -b(43)382 5251 y Fe(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))382 +b(43)382 5251 y Ff(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))382 5364 y(FTGHSP\(iunit,)d(>)j(keysexist,keysadd,status\))382 5477 y(FTGHPS\(iunit,)d(>)j(keysexist,key_no,status\))0 -5714 y Fi(Read)31 b(or)f(W)-8 b(rite)32 b(Standard)d(Header)i +5714 y Fj(Read)31 b(or)f(W)-8 b(rite)32 b(Standard)d(Header)i (Subroutines:)39 b(page)31 b(43)p eop end -%%Page: 117 123 -TeXDict begin 117 122 bop 3764 299 a Fi(117)382 555 y -Fe(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 +%%Page: 119 125 +TeXDict begin 119 124 bop 3764 299 a Fj(119)382 555 y +Ff(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 668 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o(,nax)o(es,)o(pcou)o (nt,g)o(cou)o(nt,e)o(xten)o(d,)41 b(>)48 b(status\))382 781 y(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o @@ -10660,9 +12869,9 @@ (type)o(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))382 1571 y(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o(unit)o(,ext)o(nam)o(e,va)o -(rida)o(t,)716 1684 y(status\))0 1942 y Fi(W)-8 b(rite)32 +(rida)o(t,)716 1684 y(status\))0 1942 y Fj(W)-8 b(rite)32 b(Keyw)m(ord)e(Subroutines:)39 b(page)31 b(45)382 2199 -y Fe(FTPREC\(unit,card,)43 b(>)k(status\))382 2312 y +y Ff(FTPREC\(unit,card,)43 b(>)k(status\))382 2312 y (FTPCOM\(unit,comment,)42 b(>)48 b(status\))382 2425 y(FTPHIS\(unit,history,)42 b(>)48 b(status\))382 2538 y(FTPDAT\(unit,)c(>)k(status\))382 2651 y(FTPKY[JKLS]\(unit,keyword)o @@ -10680,24 +12889,24 @@ (FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 b(>)48 b(status\))382 3780 y(FTPKTP\(unit,)c(filename,)i(>)h(status\)) 382 3893 y(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0 -4151 y Fi(Insert)30 b(Keyw)m(ord)g(Subroutines:)39 b(page)31 -b(47)382 4408 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 +4151 y Fj(Insert)30 b(Keyw)m(ord)g(Subroutines:)39 b(page)31 +b(47)382 4408 y Ff(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))382 4521 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o (men)o(t,)42 b(>)47 b(status\))382 4634 y(FTIKLS\(unit,keyword,keyv)o (al,)o(comm)o(ent,)41 b(>)47 b(status\))382 4747 y (FTIKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o (nt,)41 b(>)48 b(status\))382 4860 y(FTIKYU\(unit,keyword,comm)o(ent)o -(,)42 b(>)47 b(status\))0 5118 y Fi(Read)31 b(Keyw)m(ord)f -(Subroutines:)39 b(page)31 b(47)382 5375 y Fe(FTGREC\(unit,key_no,)42 +(,)42 b(>)47 b(status\))0 5118 y Fj(Read)31 b(Keyw)m(ord)f +(Subroutines:)39 b(page)31 b(47)382 5375 y Ff(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))382 5488 y(FTGKYN\(unit,key_no,)42 b(>)48 b(keyword,value,comment,st)o(atu)o(s\))382 5601 y(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))382 5714 y(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 b(>)48 b(card,status\))p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 0 299 a Fi(118)281 b Fg(CHAPTER)30 +%%Page: 120 126 +TeXDict begin 120 125 bop 0 299 a Fj(120)281 b Fh(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 -b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGKEY\(unit,keyword,)42 +b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Ff(FTGKEY\(unit,keyword,)42 b(>)48 b(value,comment,status\))382 668 y(FTGKY[EDJKLS]\(unit,keywo)o (rd,)41 b(>)48 b(keyval,comment,status\))382 781 y (FTGKSL\(unit,keyword,)42 b(>)48 b(length,status\))382 @@ -10707,8 +12916,8 @@ b(keyvals,nfound,status\))382 1120 y(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o(tat)o(us\))382 1233 y(FTGUNT\(unit,keyword,)42 b(>)48 b(units,status\))0 -1489 y Fi(Mo)s(dify)30 b(Keyw)m(ord)g(Subroutines:)39 -b(page)31 b(49)382 1745 y Fe(FTMREC\(unit,key_no,card,)41 +1489 y Fj(Mo)s(dify)30 b(Keyw)m(ord)g(Subroutines:)39 +b(page)31 b(49)382 1745 y Ff(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))382 1858 y(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))382 1971 y(FTMNAM\(unit,oldkey,keywo)o(rd,)41 b(>)48 b(status\))382 2084 y(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 @@ -10718,31 +12927,31 @@ b(status\))382 2422 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o (ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 2535 y(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 -2792 y Fi(Up)s(date)30 b(Keyw)m(ord)g(Subroutines:)39 -b(page)32 b(50)382 3048 y Fe(FTUCRD\(unit,keyword,card)o(,)42 +2792 y Fj(Up)s(date)30 b(Keyw)m(ord)g(Subroutines:)39 +b(page)32 b(50)382 3048 y Ff(FTUCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))382 3161 y(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o (,com)o(men)o(t,)42 b(>)47 b(status\))382 3274 y (FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 3386 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o (ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 3499 y(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 -3756 y Fi(Delete)33 b(Keyw)m(ord)d(Subroutines:)39 b(page)31 -b(51)382 4012 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 +3756 y Fj(Delete)33 b(Keyw)m(ord)d(Subroutines:)39 b(page)31 +b(51)382 4012 y Ff(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 4125 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 4381 -y Fi(De\014ne)31 b(Data)h(Scaling)f(P)m(arameters)g(and)f(Unde\014ned)f -(Pixel)i(Flags:)42 b(page)31 b(51)382 4637 y Fe +y Fj(De\014ne)31 b(Data)h(Scaling)f(P)m(arameters)g(and)f(Unde\014ned)f +(Pixel)i(Flags:)42 b(page)31 b(51)382 4637 y Ff (FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))382 4750 y(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 b(status\))382 4863 y(FTPNUL\(unit,blank,)43 b(>)k(status\))382 4976 y(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))382 5089 y(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0 -5345 y Fi(FITS)30 b(Primary)f(Arra)m(y)i(or)f(IMA)m(GE)i(Extension)e -(I/O)h(Subroutines:)39 b(page)31 b(52)382 5601 y Fe(FTGIDT\(unit,)44 +5345 y Fj(FITS)30 b(Primary)f(Arra)m(y)i(or)f(IMA)m(GE)i(Extension)e +(I/O)h(Subroutines:)39 b(page)31 b(52)382 5601 y Ff(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 5714 y(FTGIET\(unit,)c(>)k(bitpix,status\))p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 3764 299 a Fi(119)382 555 y -Fe(FTGIDM\(unit,)44 b(>)k(naxis,status\))382 668 y(FTGISZ\(unit,)c +%%Page: 121 127 +TeXDict begin 121 126 bop 3764 299 a Fj(121)382 555 y +Ff(FTGIDM\(unit,)44 b(>)k(naxis,status\))382 668 y(FTGISZ\(unit,)c (maxdim,)i(>)i(naxes,status\))382 781 y(FTGIPR\(unit,)c(maxdim,)i(>)i (bitpix,naxis,naxes,stat)o(us\))382 894 y(FTPPR[BIJKED]\(unit,group)o (,fp)o(ixel)o(,nel)o(eme)o(nts,)o(valu)o(es,)41 b(>)48 @@ -10770,8 +12979,8 @@ b(>)1002 2475 y(array,anyf,status\))382 2588 y (FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o (pix)o(els,)o(incs)o(,)g(>)1002 2700 y(array,flagvals,anyf,statu)o(s\)) -0 2974 y Fi(T)-8 b(able)31 b(Column)e(Information)i(Subroutines:)39 -b(page)31 b(55)382 3247 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\)) +0 2974 y Fj(T)-8 b(able)31 b(Column)e(Information)i(Subroutines:)39 +b(page)31 b(55)382 3247 y Ff(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\)) 382 3360 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))382 3473 y(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)c(>)47 b(colnum,status\))382 3586 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o @@ -10788,19 +12997,19 @@ (m,)41 b(>)48 b(naxis,naxes,status\))382 4715 y (FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 b(>)48 b(naxis,naxes,)c(status\))382 4828 y(FTGRSZ\(unit,)g(>)k -(nrows,status\))0 5102 y Fi(Lo)m(w-Lev)m(el)32 b(T)-8 +(nrows,status\))0 5102 y Fj(Lo)m(w-Lev)m(el)32 b(T)-8 b(able)31 b(Access)h(Subroutines:)39 b(page)31 b(58)382 -5375 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 +5375 y Ff(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 b(string,status\))382 5488 y(FTPTBS\(unit,frow,startch)o(ar,)o (ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))382 5601 y(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 b(array,status\))382 5714 y(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o (rs,a)o(rra)o(y,)42 b(>)47 b(status\))p eop end -%%Page: 120 126 -TeXDict begin 120 125 bop 0 299 a Fi(120)281 b Fg(CHAPTER)30 +%%Page: 122 128 +TeXDict begin 122 127 bop 0 299 a Fj(122)281 b Fh(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 -b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fi(Edit)g(Ro)m(ws)h(or)f(Columns)g -(page)h(59)382 813 y Fe(FTIROW\(unit,frow,nrows,)41 b(>)48 +b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fj(Edit)g(Ro)m(ws)h(or)f(Columns)g +(page)h(59)382 813 y Ff(FTIROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 926 y(FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 1039 y(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 1152 y(FTDRWS\(unit,rowlist,nrow)o(s,)41 @@ -10810,8 +13019,8 @@ (cle)o(n,)42 b(>)47 b(status\))382 1603 y(FTDCOL\(unit,colnum,)42 b(>)48 b(status\))382 1716 y(FTCPCL\(inunit,outunit,in)o(col)o(num,)o (outc)o(oln)o(um,c)o(reat)o(eco)o(l,)42 b(>)47 b(status\);)0 -1974 y Fi(Read)31 b(and)e(W)-8 b(rite)32 b(Column)e(Data)i(Routines)e -(page)h(60)382 2231 y Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,) +1974 y Fj(Read)31 b(and)e(W)-8 b(rite)32 b(Column)e(Data)i(Routines)e +(page)h(60)382 2231 y Ff(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,) o(fel)o(em,n)o(elem)o(ent)o(s,va)o(lues)o(,)42 b(>)47 b(status\))382 2344 y(FTPCN[BIJKED]\(unit,colnu)o(m,f)o(row,)o(fele)o (m,n)o(elem)o(ents)o(,va)o(lues)o(,nul)o(lva)o(l)42 b(>)47 @@ -10834,8 +13043,8 @@ 42 b(>)47 b(array,status\))382 3925 y(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b(nelements,offset,status\))382 4038 y (FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42 -b(>)47 b(status\))0 4295 y Fi(Ro)m(w)31 b(Selection)h(and)d(Calculator) -j(Routines:)41 b(page)31 b(64)382 4553 y Fe(FTFROW\(unit,expr,firstro)o +b(>)47 b(status\))0 4295 y Fj(Ro)m(w)31 b(Selection)h(and)d(Calculator) +j(Routines:)41 b(page)31 b(64)382 4553 y Ff(FTFROW\(unit,expr,firstro)o (w,)41 b(nrows,)47 b(>)g(n_good_rows,)d(row_status,)h(status\))382 4666 y(FTFFRW\(unit,)f(expr,)j(>)g(rownum,)f(status\))382 4779 y(FTSROW\(inunit,)e(outunit,)h(expr,)i(>)g(status)f(\))382 @@ -10845,11 +13054,11 @@ (status\))382 5230 y(FTCALC_RNG\(inunit,)c(expr,)j(outunit,)g(parName,) f(parInfo,)573 5343 y(nranges,)g(firstrow,)h(lastrow,)f(>)j(status\)) 382 5456 y(FTTEXP\(unit,)c(expr,)j(>)g(datatype,)e(nelem,)h(naxis,)h -(naxes,)f(status\))0 5714 y Fi(Celestial)32 b(Co)s(ordinate)f(System)f +(naxes,)f(status\))0 5714 y Fj(Celestial)32 b(Co)s(ordinate)f(System)f (Subroutines:)39 b(page)31 b(65)p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 3764 299 a Fi(121)382 555 y -Fe(FTGICS\(unit,)44 b(>)k(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o +%%Page: 123 129 +TeXDict begin 123 128 bop 3764 299 a Fj(123)382 555 y +Ff(FTGICS\(unit,)44 b(>)k(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o (rot,)o(coor)o(dty)o(pe,s)o(tatu)o(s\))382 668 y (FTGTCS\(unit,xcol,ycol,)42 b(>)716 781 y(xrval,yrval,xrpix,yrpix,)o (xinc)o(,yi)o(nc,r)o(ot,c)o(oor)o(dtyp)o(e,st)o(atu)o(s\))382 @@ -10857,24 +13066,24 @@ (inc,)o(yin)o(c,ro)o(t,)1241 1007 y(coordtype,)j(>)i (xpos,ypos,status\))382 1120 y(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o (pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 1233 -y(coordtype,)e(>)i(xpix,ypix,status\))0 1490 y Fi(File)32 +y(coordtype,)e(>)i(xpix,ypix,status\))0 1490 y Fj(File)32 b(Chec)m(ksum)d(Subroutines:)40 b(page)31 b(67)382 1748 -y Fe(FTPCKS\(unit,)44 b(>)k(status\))382 1861 y(FTUCKS\(unit,)c(>)k +y Ff(FTPCKS\(unit,)44 b(>)k(status\))382 1861 y(FTUCKS\(unit,)c(>)k (status\))382 1974 y(FTVCKS\(unit,)c(>)k(dataok,hduok,status\))382 2087 y(FTGCKS\(unit,)c(>)k(datasum,hdusum,status\))382 2199 y(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))382 2312 y(FTDSUM\(checksum,compleme)o(nt,)41 b(>)48 b(sum\))0 -2683 y Fi(Time)30 b(and)g(Date)i(Utilit)m(y)h(Subroutines:)39 -b(page)31 b(68)382 2940 y Fe(FTGSDT\()46 b(>)h(day,)g(month,)f(year,)g +2683 y Fj(Time)30 b(and)g(Date)i(Utilit)m(y)h(Subroutines:)39 +b(page)31 b(68)382 2940 y Ff(FTGSDT\()46 b(>)h(day,)g(month,)f(year,)g (status)g(\))382 3053 y(FTGSTM\(>)f(datestr,)h(timeref,)f(status\))382 3166 y(FTDT2S\()h(year,)g(month,)g(day,)h(>)g(datestr,)f(status\))382 3279 y(FTTM2S\()g(year,)g(month,)g(day,)h(hour,)f(minute,)g(second,)g (decimals,)764 3392 y(>)h(datestr,)f(status\))382 3505 y(FTS2DT\(datestr,)d(>)48 b(year,)e(month,)g(day,)h(status\))382 3618 y(FTS2TM\(datestr,)c(>)48 b(year,)e(month,)g(day,)h(hour,)f -(minute,)g(second,)g(status\))0 3876 y Fi(General)31 +(minute,)g(second,)g(status\))0 3876 y Fj(General)31 b(Utilit)m(y)i(Subroutines:)39 b(page)31 b(69)382 4133 -y Fe(FTGHAD\(unit,)44 b(>)k(curaddr,nextaddr\))382 4246 +y Ff(FTGHAD\(unit,)44 b(>)k(curaddr,nextaddr\))382 4246 y(FTUPCH\(string\))382 4359 y(FTCMPS\(str_template,stri)o(ng,)o(case)o (sen,)41 b(>)47 b(match,exact\))382 4472 y(FTTKEY\(keyword,)c(>)48 b(status\))382 4585 y(FTTREC\(card,)c(>)k(status\))382 @@ -10888,18 +13097,18 @@ 5601 y(FTASFM\(tform,)c(>)j(datacode,width,decimals,st)o(atus)o(\))382 5714 y(FTBNFM\(tform,)d(>)j(datacode,repeat,width,stat)o(us\))p eop end -%%Page: 122 128 -TeXDict begin 122 127 bop 0 299 a Fi(122)281 b Fg(CHAPTER)30 +%%Page: 124 130 +TeXDict begin 124 129 bop 0 299 a Fj(124)281 b Fh(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 -b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGABC\(tfields,tform,spa)o +b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Ff(FTGABC\(tfields,tform,spa)o (ce,)41 b(>)48 b(rowlen,tbcol,status\))382 668 y(FTGTHD\(template,)43 b(>)48 b(card,hdtype,status\))382 781 y(FTRWRG\(rowlist,)43 b(maxrows,)j(maxranges,)f(>)i(numranges,)e(rangemin,)716 894 y(rangemax,)g(status\))p eop end -%%Page: 123 129 -TeXDict begin 123 128 bop 0 1225 a Ff(Chapter)65 b(11)0 -1687 y Fl(P)-6 b(arameter)77 b(De\014nitions)0 2180 y -Fe(anyf)47 b(-)g(\(logical\))e(set)i(to)g(TRUE)g(if)g(any)g(of)g(the)g +%%Page: 125 131 +TeXDict begin 125 130 bop 0 1225 a Fg(Chapter)65 b(11)0 +1687 y Fm(P)-6 b(arameter)77 b(De\014nitions)0 2180 y +Ff(anyf)47 b(-)g(\(logical\))e(set)i(to)g(TRUE)g(if)g(any)g(of)g(the)g (returned)f(data)g(values)h(are)f(undefined)0 2293 y(array)g(-)i(\(any) e(datatype)g(except)g(character\))f(array)h(of)i(bytes)e(to)h(be)g (read)g(or)g(written.)0 2406 y(bitpix)f(-)i(\(integer\))d(bits)h(per)h @@ -10943,11 +13152,11 @@ (present.)0 5567 y(datasum)f(-)h(\(double)f(precision\))f(32-bit)h(1's) h(complement)e(checksum)h(for)h(the)f(data)h(unit)0 5680 y(datatype)f(-)h(\(character\))e(datatype)g(\(format\))h(of)h(the)g -(binary)f(table)g(column)1882 5942 y Fi(123)p eop end -%%Page: 124 130 -TeXDict begin 124 129 bop 0 299 a Fi(124)1779 b Fg(CHAPTER)30 +(binary)f(table)g(column)1882 5942 y Fj(125)p eop end +%%Page: 126 132 +TeXDict begin 126 131 bop 0 299 a Fj(126)1779 b Fh(CHAPTER)30 b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y -Fe(datestr)94 b(-)47 b(\(string\))f(FITS)g(date/time)f(string:)h +Ff(datestr)94 b(-)47 b(\(string\))f(FITS)g(date/time)f(string:)h ('YYYY-MM-DDThh:mm:ss.ddd')o(,)525 668 y('YYYY-MM-dd',)e(or)j ('dd/mm/yy')0 781 y(day)g(-)g(\(integer\))f(current)f(day)i(of)h(the)e (month)0 894 y(dblval)g(-)i(\(double)d(precision\))g(fractional)g(part) @@ -11011,8 +13220,8 @@ (\(integer)f(array\))g(sampling)f(interval)h(for)h(pixels)f(in)h(each)g (FITS)f(dimension)0 5636 y(intval)g(-)i(\(integer\))d(integer)h(part)g (of)h(the)g(keyword)f(value)p eop end -%%Page: 125 131 -TeXDict begin 125 130 bop 3764 299 a Fi(125)0 555 y Fe(iounit)46 +%%Page: 127 133 +TeXDict begin 127 132 bop 3764 299 a Fj(127)0 555 y Ff(iounit)46 b(-)i(\(integer\))d(value)h(of)h(an)h(unused)e(I/O)h(unit)f(number)0 668 y(iunit)g(-)i(\(integer\))d(logical)h(unit)h(number)f(associated)f (with)h(the)h(input)g(FITS)f(file,)h(1-300)0 781 y(key_no)f(-)i @@ -11081,10 +13290,10 @@ (\(usually)g(=)h(0\))0 5636 y(previous)f(-)h(\(integer\))e(if)i(not)g (equal)g(to)g(0,)g(copy)g(all)g(previous)e(HDUs)i(in)g(the)g(input)f (file)p eop end -%%Page: 126 132 -TeXDict begin 126 131 bop 0 299 a Fi(126)1779 b Fg(CHAPTER)30 +%%Page: 128 134 +TeXDict begin 128 133 bop 0 299 a Fj(128)1779 b Fh(CHAPTER)30 b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y -Fe(repeat)46 b(-)i(\(integer\))d(length)h(of)h(element)f(vector)g +Ff(repeat)46 b(-)i(\(integer\))d(length)h(of)h(element)f(vector)g (\(e.g.)g(12J\);)h(ignored)f(for)g(ASCII)h(table)0 668 y(rot)g(-)g(\(double)f(precision\))f(celestial)g(coordinate)g(rotation) h(angle)g(\(degrees\))0 781 y(rowlen)g(-)i(\(integer\))d(length)h(of)h @@ -11152,8 +13361,8 @@ 5523 y(following)e(the)i(binary)f(table)h(data)f(\(usually)g(=)h(0\))0 5636 y(version)f(-)h(\(real\))f(current)g(revision)g(number)g(of)h(the) g(library)p eop end -%%Page: 127 133 -TeXDict begin 127 132 bop 3764 299 a Fi(127)0 555 y Fe(width)46 +%%Page: 129 135 +TeXDict begin 129 134 bop 3764 299 a Fj(129)0 555 y Ff(width)46 b(-)i(\(integer\))d(width)h(of)i(the)f(character)e(string)h(field)0 668 y(xcol)h(-)g(\(integer\))e(number)h(of)i(the)f(column)f(containing) f(the)i(X)g(coordinate)e(values)0 781 y(xinc)i(-)g(\(double)f @@ -11176,13 +13385,13 @@ (location)0 2023 y(yrval)f(-)i(\(double)e(precision\))f(Y)i(axis)g (coordinate)e(value)h(at)h(the)g(reference)e(pixel)i(\(deg\))p eop end -%%Page: 128 134 -TeXDict begin 128 133 bop 0 299 a Fi(128)1779 b Fg(CHAPTER)30 +%%Page: 130 136 +TeXDict begin 130 135 bop 0 299 a Fj(130)1779 b Fh(CHAPTER)30 b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)p eop end -%%Page: 129 135 -TeXDict begin 129 134 bop 0 1225 a Ff(Chapter)65 b(12)0 -1687 y Fl(FITSIO)76 b(Error)h(Status)h(Co)6 b(des)0 2180 -y Fe(Status)46 b(codes)g(in)i(the)f(range)f(-99)h(to)g(-999)94 +%%Page: 131 137 +TeXDict begin 131 136 bop 0 1225 a Fg(Chapter)65 b(12)0 +1687 y Fm(FITSIO)76 b(Error)h(Status)h(Co)6 b(des)0 2180 +y Ff(Status)46 b(codes)g(in)i(the)f(range)f(-99)h(to)g(-999)94 b(and)47 b(1)h(to)f(999)g(are)g(reserved)e(for)i(future)0 2293 y(FITSIO)f(use.)95 2518 y(0)96 b(OK,)47 b(no)g(error)0 2631 y(101)95 b(input)46 b(and)h(output)f(files)g(are)h(the)g(same)0 @@ -11214,11 +13423,11 @@ 5454 y(154)95 b(shared)46 b(memory)g(driver)g(is)h(not)g(initialized)0 5567 y(155)95 b(IPC)47 b(error)f(returned)f(by)j(a)f(system)f(call)0 5680 y(156)95 b(no)47 b(memory)f(in)h(shared)f(memory)g(driver)1882 -5942 y Fi(129)p eop end -%%Page: 130 136 -TeXDict begin 130 135 bop 0 299 a Fi(130)1613 b Fg(CHAPTER)30 +5942 y Fj(131)p eop end +%%Page: 132 138 +TeXDict begin 132 137 bop 0 299 a Fj(132)1613 b Fh(CHAPTER)30 b(12.)112 b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 -b(CODES)0 555 y Fe(157)95 b(resource)45 b(deadlock)h(would)g(occur)0 +b(CODES)0 555 y Ff(157)95 b(resource)45 b(deadlock)h(would)g(occur)0 668 y(158)95 b(attempt)45 b(to)j(open/create)c(lock)j(file)g(failed)0 781 y(159)95 b(shared)46 b(memory)g(block)g(cannot)g(be)h(resized)f(at) h(the)g(moment)0 1120 y(201)95 b(header)46 b(not)h(empty;)f(can't)g @@ -11276,8 +13485,8 @@ 5523 y(252)95 b(unrecognizable)44 b(FITS)i(record)0 5636 y(253)95 b(END)47 b(keyword)e(contains)h(non-blank)f(characters)g(in)i (columns)f(9-80)p eop end -%%Page: 131 137 -TeXDict begin 131 136 bop 3764 299 a Fi(131)0 555 y Fe(254)95 +%%Page: 133 139 +TeXDict begin 133 138 bop 3764 299 a Fj(133)0 555 y Ff(254)95 b(Header)46 b(fill)g(area)h(contains)f(non-blank)f(characters)0 668 y(255)95 b(Data)46 b(fill)h(area)g(contains)e(non-blank)g(on)j (non-zero)d(values)0 781 y(261)95 b(unable)46 b(to)h(parse)f(the)h @@ -11326,10 +13535,10 @@ y(365)g(NGP_INC_NESTING)569 b(too)46 b(deep)h(include)f(file)h(nesting) e(\(infinite)1575 5636 y(loop,)h(template)g(includes)f(itself)i(?\))p eop end -%%Page: 132 138 -TeXDict begin 132 137 bop 0 299 a Fi(132)1613 b Fg(CHAPTER)30 +%%Page: 134 140 +TeXDict begin 134 139 bop 0 299 a Fj(134)1613 b Fh(CHAPTER)30 b(12.)112 b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 -b(CODES)0 555 y Fe(366)47 b(NGP_ERR_FOPEN)665 b(fopen\(\))45 +b(CODES)0 555 y Ff(366)47 b(NGP_ERR_FOPEN)665 b(fopen\(\))45 b(failed,)h(cannot)g(open)h(template)e(file)0 668 y(367)i(NGP_EOF)953 b(end)46 b(of)i(file)e(encountered)f(and)i(not)g(expected)0 781 y(368)g(NGP_BAD_ARG)761 b(bad)46 b(arguments)g(passed.)g(Usually)f diff -Nru cfitsio-3.470/docs/fitsio.tex cfitsio-4.0.0/docs/fitsio.tex --- cfitsio-3.470/docs/fitsio.tex 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/fitsio.tex 2021-05-20 01:18:54.000000000 +0000 @@ -32,7 +32,7 @@ \medskip \medskip \begin{center} -{\Large Version 3.0\\} +{\Large Version 4.0\\} \end{center} \bigskip \vskip 2.5cm @@ -47,7 +47,7 @@ \vfill \bigskip \begin{center} -{\Large April 2016\\} +{\Large May 2021\\} \end{center} \vfill \end{titlepage} @@ -1225,18 +1225,18 @@ \subsection{HIERARCH Convention for Extended Keyword Names} CFITSIO supports the HIERARCH keyword convention which allows keyword -names that are longer then 8 characters and may contain the full range -of printable ASCII text characters. This convention -was developed at the European Southern Observatory (ESO) to support -hierarchical FITS keyword such as: +names that are longer than 8 characters. This convention +was developed at the European Southern Observatory (ESO) and allows characters +consisting of digits 0-9, upper case letters A-Z, the dash '-' and the underscore '\_'. +The components of hierarchical keywords are separated by a single ASCII space charater. +For instance: \begin{verbatim} HIERARCH ESO INS FOCU POS = -0.00002500 / Focus position \end{verbatim} Basically, this convention uses the FITS keyword 'HIERARCH' to indicate that this convention is being used, then the actual keyword name -({\tt'ESO INS FOCU POS'} in this example) begins in column 10 and can -contain any printable ASCII text characters, including spaces. The +({\tt'ESO INS FOCU POS'} in this example) begins in column 10. The equals sign marks the end of the keyword name and is followed by the usual value and comment fields just as in standard FITS keywords. Further details of this convention are described at @@ -1245,14 +1245,14 @@ is linked to from http://archive.eso.org/cms/tools-documentation/eso-data-interface-control.html. -This convention allows a much broader range of keyword names +This convention allows a broader range of keyword names than is allowed by the FITS Standard. Here are more examples of such keywords: \begin{verbatim} -HIERARCH LongKeyword = 47.5 / Keyword has > 8 characters, and mixed case -HIERARCH XTE$TEMP = 98.6 / Keyword contains the '$' character -HIERARCH Earth is a star = F / Keyword contains embedded spaces +HIERARCH LONGKEYWORD = 47.5 / Keyword has > 8 characters +HIERARCH LONG-KEY_WORD2 = 52.3 / Long keyword with hyphen, underscore and digit +HIERARCH EARTH IS A STAR = F / Keyword contains embedded spaces \end{verbatim} CFITSIO will transparently read and write these keywords, so application programs do not in general need to know anything about the specific @@ -1270,12 +1270,8 @@ CFITSIO returns an error if there is not enough room for both the keyword name and the keyword value on the 80-character card, except for string-valued keywords which are simply truncated so that the closing -quote character falls in column 80. In the current implementation, -CFITSIO preserves the case of the letters when writing the keyword -name, but it is case-insensitive when reading or searching for a -keyword. The current implementation allows any ASCII text character -(ASCII 32 to ASCII 126) in the keyword name except for the '=' -character. A space is also required on either side of the equal sign. +quote character falls in column 80. A space is also required on either +side of the equal sign. \section{Optimizing Code for Maximum Processing Speed} @@ -5146,6 +5142,13 @@ finally by the binSpec specifier. +Multiple colFilter or rowFilter specifications may appear as separated +bracketed expressions, in any order. Multiple colFilter or rowFilter +expressions are treated internally as a single effective expression, +with order of operations determined from left to right. CFITSIO does +not support the @filename.txt complex syntax option if multiple +expressions are also used. + \section{Filetype} The type of file determines the medium on which the file is located @@ -5850,6 +5853,21 @@ that begin with 2 slash characters ('//') will be ignored and may be used to add comments into the file. +When using column filtering to open a file ``on the fly,'' it is permitted +to use multiple column filtering expressions. For example, the +syntax +\begin{verbatim} + filename.fits[col *][col -Y][col Z=X+1] +\end{verbatim} +would be treated as equivalent to joining the expressions with semicolons, +or +\begin{verbatim} + filename.fits[col *; -Y;col Z=X+1] +\end{verbatim} +Please note that if multiple column filtering expressions are used, it is +not permitted to also use the \verb+[col @filename.txt]+ syntax in any +of the individual expressions. + By default, the datatype of the resulting image will be the same as the original image, but one may force a different datatype by appended a code letter to the 'pix' keyword: @@ -6085,6 +6103,37 @@ absolute row number, only a relative offset. Rows that fall outside the table will be treated as undefined, or NULLs. + When using row filtering to open a file ``on the fly,'' it is permitted + to use multiple row filtering expressions. For example, the expression +\begin{verbatim} + filename.fits[#ROW > 5][X.gt.7] +\end{verbatim} +would be treated as equivalent to joining the expressions with logical ``and'' +like this, +\begin{verbatim} + filename.fits[(#ROW > 5)&&(X.gt.7)] +\end{verbatim} +Please note that if multiple row filtering expressions are used, it is +not permitted to also use the \verb+[@filename.txt]+ syntax in any +of the individual expressions. + + +%% +%% + Boolean operators can be used in the expression in either their Fortran or C forms. The following boolean operators are available: @@ -6096,18 +6145,17 @@ "negation" .not. .NOT. ! "approx. equal(1e-7)" ~ \end{verbatim} -Note that the exclamation -point, '!', is a special UNIX character, so if it is used on the -command line rather than entered at a task prompt, it must be preceded -by a backslash to force the UNIX shell to ignore it. - - The expression may also include arithmetic operators and functions. - Trigonometric functions use radians, not degrees. The following - arithmetic operators and functions can be used in the expression - (function names are case insensitive). A null value will be returned - in case of illegal operations such as divide by zero, sqrt(negative) - log(negative), log10(negative), arccos(.gt. 1), arcsin(.gt. 1). - +Note that the exclamation point, '!', is a special UNIX character, so +if it is used on the command line rather than entered at a task +prompt, it must be preceded by a backslash to force the UNIX shell to +ignore it. + +The expression may also include arithmetic operators and functions. +Trigonometric functions use radians, not degrees. The following +arithmetic operators and functions can be used in the expression +(function names are case insensitive). A null value will be returned +in case of illegal operations such as divide by zero, sqrt(negative) +log(negative), log10(negative), arccos(.gt. 1), arcsin(.gt. 1). \begin{verbatim} "addition" + "subtraction" - @@ -6122,43 +6170,49 @@ "round down to int" floor(x) "round up to int" ceil(x) "exponential" exp(x) "square root" sqrt(x) "natural log" log(x) "common log" log10(x) - "modulus" x % y "random # [0.0,1.0)" random() + "modulus" x % y + "bitwise AND" x & y "bitwise OR" x | y + "bitwise XOR" x ^^ y (bitwise operators are 32-bit int only) + "random # [0.0,1.0)" random() "random Gaussian" randomn() "random Poisson" randomp(x) "minimum" min(x,y) "maximum" max(x,y) - "cumulative sum" accum(x) "sequential difference" seqdiff(x) + "cumulative sum" accum(x) "sequential difference" seqdiff(x) "if-then-else" b?x:y - "angular separation" angsep(ra1,dec1,ra2,de2) (all in degrees) - "substring" strmid(s,p,n) "string search" strstr(s,r) + "angular separation" angsep(ra1,dec1,ra2,de2) (all in degrees) + "substring" strmid(s,p,n) "string search" strstr(s,r) \end{verbatim} -Three different random number functions are provided: random(), with no -arguments, produces a uniform random deviate between 0 and 1; randomn(), -also with no arguments, produces a normal (Gaussian) random deviate with -zero mean and unit standard deviation; randomp(x) produces a Poisson random -deviate whose expected number of counts is X. X may be any positive real -number of expected counts, including fractional values, but the return value -is an integer. +The bitwise operators for AND, OR and XOR operate upon 32-bit integer +expressions only. + +Three different random number functions are provided: random(), with +no arguments, produces a uniform random deviate between 0 and 1; +randomn(), also with no arguments, produces a normal (Gaussian) random +deviate with zero mean and unit standard deviation; randomp(x) +produces a Poisson random deviate whose expected number of counts is +X. X may be any positive real number of expected counts, including +fractional values, but the return value is an integer. When the random functions are used in a vector expression, by default -the same random value will be used when evaluating each element of the vector. -If different random numbers are desired, then the name of a vector -column should be supplied as the single argument to the random -function (e.g., "flux + 0.1 * random(flux)", where "flux' is the -name of a vector column). This will create a vector of -random numbers that will be used in sequence when evaluating each -element of the vector expression. - - An alternate syntax for the min and max functions has only a single - argument which should be a vector value (see below). The result - will be the minimum/maximum element contained within the vector. - - The accum(x) function forms the cumulative sum of x, element by element. - Vector columns are supported simply by performing the summation process - through all the values. Null values are treated as 0. The seqdiff(x) - function forms the sequential difference of x, element by element. - The first value of seqdiff is the first value of x. A single null - value in x causes a pair of nulls in the output. The seqdiff and - accum functions are functional inverses, i.e., seqdiff(accum(x)) == x - as long as no null values are present. +the same random value will be used when evaluating each element of the +vector. If different random numbers are desired, then the name of a +vector column should be supplied as the single argument to the random +function (e.g., "flux + 0.1 * random(flux)", where "flux" is the name +of a vector column). This will create a vector of random numbers that +will be used in sequence when evaluating each element of the vector +expression. + +An alternate syntax for the min and max functions has only a single +argument which should be a vector value (see below). The result +will be the minimum/maximum element contained within the vector. + +The accum(x) function forms the cumulative sum of x, element by +element. Vector columns are supported simply by performing the +summation process through all the values. Null values are treated as +0. The seqdiff(x) function forms the sequential difference of x, +element by element. The first value of seqdiff is the first value of +x. A single null value in x causes a pair of nulls in the output. +The seqdiff and accum functions are functional inverses, i.e., +seqdiff(accum(x)) == x as long as no null values are present. In the if-then-else expression, "b?x:y", b is an explicit boolean value or expression. There is no automatic type conversion from @@ -6166,27 +6220,27 @@ merely "iVal" as the boolean argument. x and y can be any scalar data type (including string). - The angsep function computes the angular separation in degrees - between 2 celestial positions, where the first 2 parameters - give the RA-like and Dec-like coordinates (in decimal degrees) - of the first position, and the 3rd and 4th parameters give the - coordinates of the second position. +The angsep function computes the angular separation in degrees between +2 celestial positions, where the first 2 parameters give the RA-like +and Dec-like coordinates (in decimal degrees) of the first position, +and the 3rd and 4th parameters give the coordinates of the second +position. The substring function strmid(S,P,N) extracts a substring from S, starting at string position P, with a substring length N. The first character position in S is labeled as 1. If P is 0, or refers to a position beyond the end of S, then the extracted substring will be -NULL. S, P, and N may be functions of other columns. +NULL. S, P, and N may be functions of other columns. -The string search function strstr(S,R) searches for the first occurrence -of the substring R in S. The result is an integer, indicating the -character position of the first match (where 1 is the first character -position of S). If no match is found, then strstr() returns a NULL -value. - - The following type casting operators are available, where the - enclosing parentheses are required and taken from the C language - usage. Also, the integer to real casts values to double precision: +The string search function strstr(S,R) searches for the first +occurrence of the substring R in S. The result is an integer, +indicating the character position of the first match (where 1 is the +first character position of S). If no match is found, then strstr() +returns a NULL value. + +The following type casting operators are available, where the +enclosing parentheses are required and taken from the C language +usage. Also, the integer to real casts values to double precision: \begin{verbatim} "real to integer" (int) x (INT) x @@ -6207,6 +6261,20 @@ "null" constants are useful for conditionally setting table values to a NULL, or undefined, value (eg., "col1==-99 ? \#NULL : col1"). + Integer constants may be specified using the following notation, +\begin{verbatim} + 13245 decimal integer + 0x12f3 hexidecimal integer + 0o1373 octal integer + 0b01001 binary integer +\end{verbatim} + Note that integer constants are only allowed to be 32-bit, i.e. + between -2^(31) and +2^(31). Integer constants may be used in any + arithmetic expression where an integer would be appropriate. Thus, + they are distinct from bitmasks (which may be of arbitrary length, + allow the "wildcard" bit, and may only be used in logical + expressions; see below). + There is also a function for testing if two values are close to each other, i.e., if they are "near" each other to within a user specified tolerance. The arguments, value\_1 and value\_2 can be @@ -6226,13 +6294,15 @@ \begin{verbatim} "a null value?" ISNULL(x) "define a value for null" DEFNULL(x,y) + "declare certain value null" SETNULL(x,y) \end{verbatim} - The former - returns a boolean value of TRUE if the argument x is NULL. The - later "defines" a value to be substituted for NULL values; it + ISNULL(x) + returns a boolean value of TRUE if the argument x is NULL. DEFNULL(x,y) + "defines" a value to be substituted for NULL values; it returns the value of x if x is not NULL, otherwise it returns the - value of y. - + value of y. SETNULL(x,y) allows NULL values to be inserted into + a variable; if x==y, a NULL value is returned; otherwise y is returned + (x and y must be numerical, and x must be a scalar). \subsection{Bit Masks} @@ -6250,7 +6320,10 @@ In all the representations, an x or X is allowed in the mask as a wild card. Note that the x represents a different number of wild card bits in each representation. All representations are case - insensitive. + insensitive. Although bitmasks may be of arbitrary length and contain + a wildcard, they may only be used in logical expressions, unlike + integer constants (see above) which may be used in any arithmetic + expression. To construct the boolean expression using the mask as the boolean equal operator described above on a bit table column. For example, @@ -6385,22 +6458,28 @@ element in the constructed vector. -\subsection{Good Time Interval Filtering} +\subsection{Good Time Interval Filtering and Calculation} - A common filtering method involves selecting rows which have a time - value which lies within what is called a Good Time Interval or GTI. - The time intervals are defined in a separate FITS table extension - which contains 2 columns giving the start and stop time of each - good interval. The filtering operation accepts only those rows of - the input table which have an associated time which falls within - one of the time intervals defined in the GTI extension. A high - level function, gtifilter(a,b,c,d), is available which evaluates - each row of the input table and returns TRUE or FALSE depending - whether the row is inside or outside the good time interval. The + There are two functions for filtering and calculating based + on Good Time Intervals, or GTIs. GTIs are commonly used to + express fragmented time ranges that are not easy to express with a + single start and stop time. The time intervals are defined in a + FITS table extension which contains 2 columns giving the + start and stop time of each good interval. + + A common filtering method involves selecting rows which have a + time value which lies within any GTI. The gtifilter() filtering + operation accepts only those rows of the input table which have an + associated time which falls within one of the time intervals + defined in a separate GTI extension. gtifilter(a,b,c,d) evaluates + each row of the input table and returns TRUE or FALSE depending + whether the row is inside or outside the good time interval. The syntax is \begin{verbatim} gtifilter( [ "gtifile" [, expr [, "STARTCOL", "STOPCOL" ] ] ] ) + or + gtifilter( [ 'gtifile' [, expr [, 'STARTCOL', 'STOPCOL' ] ] ] ) \end{verbatim} where each "[]" demarks optional parameters. Note that the quotes around the gtifile and START/STOP column are required. Either single @@ -6438,6 +6517,57 @@ searches for TIMEZERO/I/F keywords in the current and GTI extensions, applying a relative time offset, if necessary. + A separate function, gtioverlap(a,b,c,d,e), computes the overlap + between a user-requested time range and the entries in a GTI. The + cases of no overlap, partial overlap, or overlap of many GTIs + within the user requested range are handled. gtioverlap() is very + useful for calculating exposure times and fractional exposures of + individual time bins, say for a light curve. The syntax of + gtioverlap() is + +\begin{verbatim} + gtioverlap( "gtifile" , startExpr, stopExpr [, "STARTCOL", "STOPCOL" ] ) + or + gtioverlap( 'gtifile' , startExpr, stopExpr [, 'STARTCOL', 'STOPCOL' ] ) +\end{verbatim} + + The requirements for specifying the gtifile are the same as for + gtifilter() as described above. Unlike gtifilter(), the startExpr + and stopExpr are not optional. startExpr provides a start of the + user requested time interval. startExpr is typically TIME, but + can be any valid expression. Likewise, stopExpr provides the stop + of the user requested time interval, and can be an expression. + For example, for a light curve with a TIME column and time bin + size of 1.0 seconds, the expression + +\begin{verbatim} + gtioverlap('gtifile',TIME,TIME+1.0) +\end{verbatim} + + would calculate the amount of overlap exposure time between each + one second time bin and the GTI in 'gtifile'. In this case the + time bin is assumed to begin at the time specified by TIME and end + 1 second later. Neither startExpr nor stopExpr are required to be + constant, and a light curve is not required to have a constant bin + size. For tables, the overlap is calculated for each entry in the + table. + + It is also possible to calculate a single overlap value, which + would typically be placed in a keyword. For example, a way to to + compute the total overlap exposure of a file whose TIME column is + bounded by the keywords TSTART and TSTOP, overlapping with the + specified GTI, would be + +\begin{verbatim} + #EXPOSURE = gtioverlap('gtifile',#TSTART,#TSTOP) +\end{verbatim} + + The \verb+#EXPOSURE+ syntax with a leading \+#+ ensures that the + requested values are treated as keywords. Otherwise, a column + named EXPOSURE will be created with the (constant) exposure value + in each entry. + + \subsection{Spatial Region Filtering} diff -Nru cfitsio-3.470/docs/fitsio.toc cfitsio-4.0.0/docs/fitsio.toc --- cfitsio-3.470/docs/fitsio.toc 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/docs/fitsio.toc 2021-05-20 01:18:54.000000000 +0000 @@ -75,21 +75,21 @@ \contentsline {section}{\numberline {8.8}Image Section}{91} \contentsline {section}{\numberline {8.9}Image Transform Filters}{92} \contentsline {section}{\numberline {8.10}Column and Keyword Filtering Specification}{94} -\contentsline {section}{\numberline {8.11}Row Filtering Specification}{96} +\contentsline {section}{\numberline {8.11}Row Filtering Specification}{97} \contentsline {subsection}{\numberline {8.11.1}General Syntax}{97} -\contentsline {subsection}{\numberline {8.11.2}Bit Masks}{99} -\contentsline {subsection}{\numberline {8.11.3}Vector Columns}{100} -\contentsline {subsection}{\numberline {8.11.4}Good Time Interval Filtering}{102} -\contentsline {subsection}{\numberline {8.11.5}Spatial Region Filtering}{103} -\contentsline {subsection}{\numberline {8.11.6}Example Row Filters}{105} -\contentsline {section}{\numberline {8.12} Binning or Histogramming Specification}{106} -\contentsline {chapter}{\numberline {9}Template Files }{109} -\contentsline {section}{\numberline {9.1}Detailed Template Line Format}{109} -\contentsline {section}{\numberline {9.2}Auto-indexing of Keywords}{110} -\contentsline {section}{\numberline {9.3}Template Parser Directives}{111} -\contentsline {section}{\numberline {9.4}Formal Template Syntax}{112} -\contentsline {section}{\numberline {9.5}Errors}{112} -\contentsline {section}{\numberline {9.6}Examples}{112} -\contentsline {chapter}{\numberline {10} Summary of all FITSIO User-Interface Subroutines }{115} -\contentsline {chapter}{\numberline {11} Parameter Definitions }{123} -\contentsline {chapter}{\numberline {12} FITSIO Error Status Codes }{129} +\contentsline {subsection}{\numberline {8.11.2}Bit Masks}{100} +\contentsline {subsection}{\numberline {8.11.3}Vector Columns}{101} +\contentsline {subsection}{\numberline {8.11.4}Good Time Interval Filtering and Calculation}{103} +\contentsline {subsection}{\numberline {8.11.5}Spatial Region Filtering}{104} +\contentsline {subsection}{\numberline {8.11.6}Example Row Filters}{107} +\contentsline {section}{\numberline {8.12} Binning or Histogramming Specification}{108} +\contentsline {chapter}{\numberline {9}Template Files }{111} +\contentsline {section}{\numberline {9.1}Detailed Template Line Format}{111} +\contentsline {section}{\numberline {9.2}Auto-indexing of Keywords}{112} +\contentsline {section}{\numberline {9.3}Template Parser Directives}{113} +\contentsline {section}{\numberline {9.4}Formal Template Syntax}{114} +\contentsline {section}{\numberline {9.5}Errors}{114} +\contentsline {section}{\numberline {9.6}Examples}{114} +\contentsline {chapter}{\numberline {10} Summary of all FITSIO User-Interface Subroutines }{117} +\contentsline {chapter}{\numberline {11} Parameter Definitions }{125} +\contentsline {chapter}{\numberline {12} FITSIO Error Status Codes }{131} diff -Nru cfitsio-3.470/drvrnet.c cfitsio-4.0.0/drvrnet.c --- cfitsio-3.470/drvrnet.c 2019-05-21 19:41:54.000000000 +0000 +++ cfitsio-4.0.0/drvrnet.c 2021-05-20 01:18:54.000000000 +0000 @@ -1258,7 +1258,7 @@ if (urlname) { fprintf(stderr,"Downloading "); - fprintf(stderr,urlname); + fprintf(stderr,"%s",urlname); fprintf(stderr,"...\n"); } isFirst = 0; diff -Nru cfitsio-3.470/editcol.c cfitsio-4.0.0/editcol.c --- cfitsio-3.470/editcol.c 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/editcol.c 2021-05-20 01:18:54.000000000 +0000 @@ -1497,7 +1497,7 @@ copy a column from infptr and insert it in the outfptr table. */ { - int tstatus, colnum, typecode, otypecode, anynull; + int tstatus, colnum, typecode, otypecode, etypecode, anynull; int inHduType, outHduType; long tfields, repeat, orepeat, width, owidth, nrows, outrows; long inloop, outloop, maxloop, ndone, ntodo, npixels; @@ -1508,6 +1508,8 @@ char nulstr[] = {'\5', '\0'}; /* unique null string value */ double dnull = 0.l, *dvalues = 0; float fnull = 0., *fvalues = 0; + long long int *jjvalues = 0; + unsigned long long int *ujjvalues = 0; if (*status > 0) return(*status); @@ -1547,6 +1549,8 @@ /* get the datatype and vector repeat length of the column */ ffgtcl(infptr, incol, &typecode, &repeat, &width, status); + /* ... and equivalent type code */ + ffeqty(infptr, incol, &etypecode, 0, 0, status); if (typecode < 0) { @@ -1734,7 +1738,29 @@ } dnull = 0.; } - else /* numerical datatype; read them all as doubles */ + /* These are unsigned long-long ints that are not rescaled to floating point numbers */ + else if (typecode == TLONGLONG && etypecode == TULONGLONG) { + + ujjvalues = (unsigned long long int *) calloc(maxloop, sizeof(unsigned long long int) ); + if (!ujjvalues) + { + ffpmsg + ("malloc failed to get memory for unsigned long long int (ffcpcl)"); + return(*status = ARRAY_TOO_BIG); + } + } + /* These are long-long ints that are not rescaled to floating point numbers */ + else if (typecode == TLONGLONG && etypecode != TDOUBLE) { + + jjvalues = (long long int *) calloc(maxloop, sizeof(long long int) ); + if (!jjvalues) + { + ffpmsg + ("malloc failed to get memory for long long int (ffcpcl)"); + return(*status = ARRAY_TOO_BIG); + } + } + else /* other numerical datatype; read them all as doubles */ { dvalues = (double *) calloc(maxloop, sizeof(double) ); if (!dvalues) @@ -1771,6 +1797,18 @@ ffgcvm(infptr, incol, firstrow, firstelem, ntodo, dnull, dvalues, &anynull, status); + /* Neither TULONGLONG nor TLONGLONG does null checking. Whatever + null value is in input table is transferred to output table + without checking. Since the TNULL value was copied, this + should preserve null values */ + else if (typecode == TLONGLONG && etypecode == TULONGLONG) + ffgcvujj(infptr, incol, firstrow, firstelem, ntodo, /*nulval*/ 0, + ujjvalues, &anynull, status); + + else if (typecode == TLONGLONG && etypecode != TDOUBLE) + ffgcvjj(infptr, incol, firstrow, firstelem, ntodo, /*nulval*/ 0, + jjvalues, &anynull, status); + else /* all numerical types */ ffgcvd(infptr, incol, firstrow, firstelem, ntodo, dnull, dvalues, &anynull, status); @@ -1813,6 +1851,16 @@ dvalues, status); } + else if (typecode == TLONGLONG && etypecode == TULONGLONG) + { /* No null checking because we did none to read */ + ffpclujj(outfptr, colnum, firstrow, firstelem, ntodo, + ujjvalues, status); + } + else if (typecode == TLONGLONG && etypecode != TDOUBLE) + { /* No null checking because we did none to read */ + ffpcljj(outfptr, colnum, firstrow, firstelem, ntodo, + jjvalues, status); + } else /* all other numerical types */ { if (anynull) @@ -1846,10 +1894,9 @@ free(strarray); } - else - { - free(dvalues); - } + if (ujjvalues) free(ujjvalues); + if (jjvalues) free(jjvalues); + if (dvalues) free(dvalues); return(*status); } @@ -1887,6 +1934,9 @@ if (*status > 0) return(*status); + /* Do not allow more than internal array limit to be copied */ + if (ncols > 1000) return (*status = ARRAY_TOO_BIG); + if (infptr->HDUposition != (infptr->Fptr)->curhdu) { ffmahd(infptr, (infptr->HDUposition) + 1, NULL, status); diff -Nru cfitsio-3.470/edithdu.c cfitsio-4.0.0/edithdu.c --- cfitsio-3.470/edithdu.c 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/edithdu.c 2021-05-20 01:18:54.000000000 +0000 @@ -263,6 +263,47 @@ return(*status); } /*--------------------------------------------------------------------------*/ +int ffcpht(fitsfile *infptr, /* I - FITS file pointer to input file */ + fitsfile *outfptr, /* I - FITS file pointer to output file */ + LONGLONG firstrow, /* I - number of first row to copy (1 based) */ + LONGLONG nrows, /* I - number of rows to copy */ + int *status) /* IO - error status */ + +/* + Copy the table structure from an existing table HDU, but only + copy a limited row range. All header keywords from the input + table are copied directly, but NAXSI2 and PCOUNT are set to their + correct values. +*/ +{ + if (*status > 0) + return(*status); + + /* Copy the header only */ + ffcphd(infptr, outfptr, status); + /* Note that we now have a copied header that describes the table, + and that is the current header, but the original number of table + rows and heap area sizes are still there. */ + + /* Zero out the size-related keywords */ + if (! *status ) { + ffukyj(outfptr,"NAXIS2",0,0,status); /* NAXIS2 = 0 */ + ffukyj(outfptr,"PCOUNT",0,0,status); /* PCOUNT = 0 */ + /* Update the internal structure variables within CFITSIO now + that we have a valid table header */ + ffrdef(outfptr,status); + } + + /* OK now that we have a pristine HDU, copy the requested rows */ + if (! *status && nrows > 0) { + ffcprw(infptr, outfptr, firstrow, nrows, status); + } + + return (*status); +} + + +/*--------------------------------------------------------------------------*/ int ffcpdt(fitsfile *infptr, /* I - FITS file pointer to input file */ fitsfile *outfptr, /* I - FITS file pointer to output file */ int *status) /* IO - error status */ diff -Nru cfitsio-3.470/eval_defs.h cfitsio-4.0.0/eval_defs.h --- cfitsio-3.470/eval_defs.h 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval_defs.h 2021-05-20 01:18:54.000000000 +0000 @@ -143,7 +143,9 @@ gasrnd_fct, poirnd_fct, strmid_fct, - strpos_fct + strpos_fct, + setnull_fct, + gtiover_fct } funcOp; extern ParseData gParse; diff -Nru cfitsio-3.470/eval_f.c cfitsio-4.0.0/eval_f.c --- cfitsio-3.470/eval_f.c 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval_f.c 2021-07-13 17:48:24.000000000 +0000 @@ -640,8 +640,12 @@ nullVal = SHRT_MIN; else if( typecode==TINT ) nullVal = INT_MIN; - else if( typecode==TLONG ) - nullVal = LONG_MIN; + else if( typecode==TLONG ) { + if (sizeof(long) == 8 && sizeof(int) == 4) + nullVal = INT_MIN; + else + nullVal = LONG_MIN; + } else if( typecode==TLONGLONG ) nullVal = LONGLONG_MIN; @@ -2748,8 +2752,12 @@ nullVal = UCHAR_MAX; else if (bitpix == SHORT_IMG) nullVal = SHRT_MIN; - else if (bitpix == LONG_IMG) - nullVal = LONG_MIN; + else if (bitpix == LONG_IMG) { + if (sizeof(long) == 8 && sizeof(int) == 4) + nullVal = INT_MIN; + else + nullVal = LONG_MIN; + } else printf("unhandled positive output BITPIX %d\n", bitpix); } diff -Nru cfitsio-3.470/eval.l cfitsio-4.0.0/eval.l --- cfitsio-3.470/eval.l 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval.l 2021-05-20 01:18:54.000000000 +0000 @@ -118,6 +118,9 @@ bit ([bB][01xX]+) oct ([oO][01234567xX]+) hex ([hH][0123456789aAbBcCdDeEfFxX]+) +bitconst (0b[01]+) +hexconst (0x[0123456789aAbBcCdDeEfF]+) +octconst (0o]+) integer [0-9]+ boolean (t|f|T|F) real ([0-9]*"."[0-9]+)|([0-9]*"."*[0-9]+[eEdD][+-]?[0-9]+)|([0-9]*".") @@ -137,6 +140,7 @@ lesser ("<"|".lt."|".LT."|"lt."|"LT.") greater_eq (">="|"=>"|".ge."|".GE."|"ge."|"GE.") lesser_eq ("<="|"=<"|".le."|".LE."|"le."|"LE.") +xor ("^^"|".xor."|".XOR.") nl \n %% @@ -303,6 +307,36 @@ strcpy( yylval.str, bitstring ); return( BITSTR ); } +{bitconst} { + long int constval = 0; + char *p; + for (p = &(yytext[2]); *p; p++) { + constval = (constval << 1) | (*p == '1'); + } + yylval.lng = constval; + return( LONG ); + } +{octconst} { + long int constval = 0; + char *p; + for (p = &(yytext[2]); *p; p++) { + constval = (constval << 3) | (*p - '0'); + } + yylval.lng = constval; + return( LONG ); + } +{hexconst} { + long int constval = 0; + char *p; + for (p = &(yytext[2]); *p; p++) { + int v = (isdigit(*p) ? (*p - '0') : (*p - 'a' + 10)); + constval = (constval << 4) | v; + } + yylval.lng = constval; + return( LONG ); + } + + {integer} { yylval.lng = atol(yytext); return( LONG ); @@ -393,6 +427,9 @@ else if( FSTRCMP(fname,"GTIFILTER(")==0 ) return( GTIFILTER ); + else if( FSTRCMP(fname,"GTIOVERLAP(")==0 ) + return( GTIOVERLAP ); + else if( FSTRCMP(fname,"REGFILTER(")==0 ) return( REGFILTER ); @@ -414,6 +451,7 @@ {lesser} { return( LT ); } {greater_eq} { return( GTE ); } {lesser_eq} { return( LTE ); } +{xor} { return( XOR ); } {nl} { return( '\n' ); } . { return( yytext[0] ); } %% diff -Nru cfitsio-3.470/eval_l.c cfitsio-4.0.0/eval_l.c --- cfitsio-3.470/eval_l.c 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval_l.c 2021-05-20 01:18:54.000000000 +0000 @@ -46,6 +46,7 @@ typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -152,7 +153,12 @@ typedef struct ff_buffer_state *FF_BUFFER_STATE; #endif -extern int ffleng; +#ifndef FF_TYPEDEF_FF_SIZE_T +#define FF_TYPEDEF_FF_SIZE_T +typedef size_t ff_size_t; +#endif + +extern ff_size_t ffleng; extern FILE *ffin, *ffout; @@ -178,11 +184,6 @@ #define unput(c) ffunput( c, (fftext_ptr) ) -#ifndef FF_TYPEDEF_FF_SIZE_T -#define FF_TYPEDEF_FF_SIZE_T -typedef size_t ff_size_t; -#endif - #ifndef FF_STRUCT_FF_BUFFER_STATE #define FF_STRUCT_FF_BUFFER_STATE struct ff_buffer_state @@ -200,7 +201,7 @@ /* Number of characters read into ff_ch_buf, not including EOB * characters. */ - int ff_n_chars; + ff_size_t ff_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -270,8 +271,8 @@ /* ff_hold_char holds the character lost when fftext is formed. */ static char ff_hold_char; -static int ff_n_chars; /* number of characters read into ff_ch_buf */ -int ffleng; +static ff_size_t ff_n_chars; /* number of characters read into ff_ch_buf */ +ff_size_t ffleng; /* Points to current character in buffer. */ static char *ff_c_buf_p = (char *) 0; @@ -299,7 +300,7 @@ FF_BUFFER_STATE ff_scan_buffer (char *base,ff_size_t size ); FF_BUFFER_STATE ff_scan_string (ffconst char *ff_str ); -FF_BUFFER_STATE ff_scan_bytes (ffconst char *bytes,int len ); +FF_BUFFER_STATE ff_scan_bytes (ffconst char *bytes,ff_size_t len ); void *ffalloc (ff_size_t ); void *ffrealloc (void *,ff_size_t ); @@ -354,13 +355,13 @@ */ #define FF_DO_BEFORE_ACTION \ (fftext_ptr) = ff_bp; \ - ffleng = (size_t) (ff_cp - ff_bp); \ + ffleng = (ff_size_t) (ff_cp - ff_bp); \ (ff_hold_char) = *ff_cp; \ *ff_cp = '\0'; \ (ff_c_buf_p) = ff_cp; -#define FF_NUM_RULES 26 -#define FF_END_OF_BUFFER 27 +#define FF_NUM_RULES 30 +#define FF_END_OF_BUFFER 31 /* This struct is not used in this scanner, but its presence is necessary. */ struct ff_trans_info @@ -368,25 +369,27 @@ flex_int32_t ff_verify; flex_int32_t ff_nxt; }; -static ffconst flex_int16_t ff_accept[160] = +static ffconst flex_int16_t ff_accept[174] = { 0, - 0, 0, 27, 25, 1, 24, 15, 25, 25, 25, - 25, 25, 25, 25, 7, 5, 21, 25, 20, 10, - 10, 10, 10, 6, 10, 10, 10, 10, 10, 14, - 10, 10, 10, 10, 10, 10, 10, 25, 1, 19, - 0, 9, 0, 8, 0, 10, 17, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, - 5, 0, 23, 18, 22, 10, 10, 10, 2, 10, - 10, 10, 4, 10, 10, 10, 10, 3, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 16, 0, + 0, 0, 31, 29, 1, 28, 18, 29, 29, 29, + 29, 29, 29, 29, 10, 8, 8, 24, 29, 23, + 13, 13, 13, 13, 9, 13, 13, 13, 13, 13, + 17, 13, 13, 13, 13, 13, 13, 13, 29, 1, + 22, 0, 12, 0, 11, 0, 13, 20, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 8, 0, 0, 0, 0, 26, 21, + 25, 13, 13, 13, 2, 13, 13, 13, 4, 13, + 13, 13, 13, 3, 13, 27, 13, 13, 13, 13, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 13, 13, 13, 13, 19, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 11, 10, - 20, 21, 10, 10, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 0 + 0, 0, 0, 0, 0, 0, 10, 5, 6, 7, + 14, 13, 23, 24, 13, 13, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0 } ; static ffconst flex_int32_t ff_ec[256] = @@ -395,16 +398,16 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 7, 1, 8, 9, 10, - 11, 12, 13, 1, 13, 14, 1, 15, 15, 16, - 16, 16, 16, 16, 16, 17, 17, 1, 1, 18, - 19, 20, 1, 1, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 30, 31, 30, 32, 33, 30, - 34, 35, 30, 36, 37, 30, 30, 38, 30, 30, - 1, 1, 1, 39, 40, 1, 41, 42, 23, 43, - - 44, 45, 46, 28, 47, 30, 30, 48, 30, 49, - 50, 30, 51, 52, 30, 53, 54, 30, 30, 38, - 30, 30, 1, 55, 1, 1, 1, 1, 1, 1, + 11, 12, 13, 1, 13, 14, 1, 15, 16, 17, + 17, 17, 17, 17, 17, 18, 18, 1, 1, 19, + 20, 21, 1, 1, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 31, 32, 31, 33, 34, 31, + 35, 36, 31, 37, 38, 31, 31, 39, 31, 31, + 1, 1, 40, 41, 42, 1, 43, 44, 24, 45, + + 46, 47, 48, 29, 49, 31, 31, 50, 31, 51, + 52, 31, 53, 54, 31, 55, 56, 31, 31, 57, + 31, 31, 1, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -421,160 +424,174 @@ 1, 1, 1, 1, 1 } ; -static ffconst flex_int32_t ff_meta[56] = +static ffconst flex_int32_t ff_meta[59] = { 0, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 1 + 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, + 1, 5, 4, 4, 4, 4, 4, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 1 } ; -static ffconst flex_int16_t ff_base[167] = +static ffconst flex_int16_t ff_base[182] = { 0, - 0, 0, 367, 368, 364, 368, 346, 359, 356, 355, - 353, 351, 32, 347, 66, 103, 339, 44, 338, 25, - 52, 316, 26, 315, 34, 133, 48, 61, 125, 368, - 0, 29, 45, 60, 81, 82, 93, 299, 351, 368, - 347, 368, 344, 343, 342, 368, 368, 339, 314, 315, - 313, 294, 295, 293, 368, 121, 164, 307, 301, 70, - 117, 43, 296, 276, 271, 58, 86, 79, 269, 152, - 168, 181, 368, 368, 368, 151, 162, 0, 180, 189, - 190, 191, 309, 196, 199, 205, 204, 211, 214, 207, - 223, 224, 232, 238, 243, 245, 222, 246, 368, 311, - - 310, 279, 282, 278, 259, 262, 258, 252, 286, 295, - 294, 293, 292, 291, 290, 267, 288, 258, 285, 284, - 278, 270, 268, 259, 218, 252, 264, 272, 368, 251, - 368, 368, 260, 280, 283, 236, 222, 230, 193, 184, - 212, 208, 202, 173, 156, 368, 133, 126, 368, 104, - 98, 119, 132, 80, 94, 92, 368, 78, 368, 323, - 325, 329, 333, 68, 67, 337 + 0, 0, 412, 413, 409, 413, 390, 404, 401, 400, + 398, 396, 34, 392, 70, 114, 16, 383, 46, 382, + 29, 84, 359, 28, 358, 52, 157, 64, 91, 128, + 358, 0, 40, 27, 69, 92, 100, 171, 340, 395, + 413, 391, 413, 388, 387, 386, 413, 413, 383, 357, + 358, 356, 336, 337, 335, 413, 139, 190, 352, 349, + 71, 111, 135, 347, 348, 330, 327, 59, 64, 116, + 325, 323, 175, 0, 59, 120, 326, 0, 413, 413, + 413, 153, 184, 0, 202, 209, 210, 219, 351, 220, + 228, 229, 211, 230, 240, 413, 221, 246, 254, 263, + + 264, 265, 266, 239, 275, 413, 346, 342, 310, 313, + 309, 289, 292, 288, 275, 317, 327, 326, 325, 324, + 323, 322, 298, 320, 297, 287, 317, 315, 314, 312, + 311, 310, 249, 289, 243, 294, 298, 134, 246, 0, + 413, 285, 413, 413, 288, 308, 309, 261, 261, 256, + 221, 215, 246, 241, 223, 218, 213, 208, 197, 413, + 166, 160, 413, 128, 122, 150, 154, 105, 101, 96, + 413, 84, 413, 351, 354, 359, 364, 366, 368, 373, + 89 } ; -static ffconst flex_int16_t ff_def[167] = +static ffconst flex_int16_t ff_def[182] = { 0, - 159, 1, 159, 159, 159, 159, 159, 160, 161, 162, - 159, 163, 159, 159, 159, 159, 159, 159, 159, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, - 165, 164, 164, 164, 164, 164, 164, 159, 159, 159, - 160, 159, 166, 161, 162, 159, 159, 163, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 164, 164, 165, 164, 164, - 164, 164, 26, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 159, 166, - - 166, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 164, - 159, 159, 164, 164, 164, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 0, 159, - 159, 159, 159, 159, 159, 159 + 173, 1, 173, 173, 173, 173, 173, 174, 175, 176, + 173, 177, 173, 173, 173, 173, 16, 173, 173, 173, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 173, 179, 178, 178, 178, 178, 178, 178, 173, 173, + 173, 174, 173, 180, 175, 176, 173, 173, 177, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 17, 173, 173, 173, 181, 173, 173, + 173, 178, 178, 179, 178, 178, 178, 178, 27, 178, + 178, 178, 178, 178, 178, 173, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 173, 180, 180, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 181, + 173, 178, 173, 173, 178, 178, 178, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 0, 173, 173, 173, 173, 173, 173, 173, + 173 } ; -static ffconst flex_int16_t ff_nxt[424] = +static ffconst flex_int16_t ff_nxt[472] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 4, 14, 4, 15, 16, 16, 16, 17, 18, 19, - 20, 21, 22, 22, 23, 24, 25, 26, 22, 22, - 27, 28, 29, 22, 22, 24, 22, 22, 30, 31, - 32, 21, 22, 33, 24, 34, 22, 35, 36, 37, - 22, 22, 24, 22, 38, 49, 77, 50, 81, 80, - 51, 73, 74, 75, 78, 78, 79, 115, 78, 82, - 78, 76, 84, 78, 52, 116, 53, 90, 54, 56, - 57, 57, 57, 85, 78, 86, 58, 78, 157, 79, - 59, 78, 60, 87, 111, 91, 61, 62, 63, 78, - - 78, 120, 157, 92, 157, 112, 64, 88, 88, 65, - 121, 66, 93, 67, 68, 69, 70, 71, 71, 71, - 78, 78, 124, 158, 94, 96, 72, 72, 125, 122, - 88, 97, 78, 95, 56, 108, 108, 108, 123, 88, - 88, 113, 157, 156, 98, 72, 72, 83, 83, 83, - 155, 154, 114, 83, 83, 83, 83, 83, 83, 89, - 129, 153, 88, 152, 78, 56, 57, 57, 57, 146, - 83, 129, 78, 83, 83, 83, 83, 83, 57, 57, - 57, 70, 71, 71, 71, 130, 47, 72, 72, 129, - 78, 72, 72, 127, 79, 128, 128, 128, 129, 129, - - 129, 78, 74, 75, 131, 129, 72, 72, 129, 73, - 72, 72, 132, 129, 129, 146, 129, 79, 40, 78, - 129, 47, 149, 129, 151, 88, 88, 99, 78, 78, - 78, 129, 129, 129, 150, 78, 74, 75, 78, 133, - 149, 129, 148, 78, 78, 131, 78, 129, 88, 134, - 78, 73, 129, 78, 129, 129, 132, 147, 40, 99, - 129, 78, 78, 78, 47, 99, 108, 108, 108, 129, - 145, 78, 40, 146, 135, 72, 72, 78, 128, 128, - 128, 132, 78, 73, 78, 78, 128, 128, 128, 129, - 78, 131, 129, 47, 72, 72, 146, 75, 74, 78, - - 144, 99, 143, 40, 132, 73, 131, 75, 74, 142, - 141, 140, 139, 138, 137, 136, 101, 101, 129, 78, - 126, 119, 78, 41, 118, 41, 41, 44, 44, 45, - 117, 45, 45, 48, 110, 48, 48, 100, 109, 100, - 100, 107, 106, 105, 104, 103, 102, 42, 46, 159, - 101, 42, 39, 99, 78, 78, 75, 73, 55, 42, - 47, 46, 43, 42, 40, 39, 159, 3, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159 + 4, 14, 4, 15, 16, 17, 17, 17, 18, 19, + 20, 21, 22, 23, 23, 24, 25, 26, 27, 23, + 23, 28, 29, 30, 23, 23, 25, 23, 23, 4, + 31, 32, 33, 22, 23, 34, 25, 35, 23, 36, + 37, 38, 23, 23, 25, 23, 23, 39, 50, 173, + 51, 83, 86, 52, 79, 80, 81, 173, 84, 84, + 84, 136, 173, 137, 137, 137, 137, 87, 53, 98, + 54, 84, 55, 57, 58, 58, 58, 58, 88, 90, + 97, 59, 140, 84, 171, 60, 118, 61, 85, 85, + + 91, 62, 63, 64, 128, 84, 171, 119, 65, 130, + 84, 171, 66, 129, 99, 67, 92, 68, 131, 69, + 70, 71, 85, 100, 93, 84, 72, 73, 74, 74, + 74, 74, 84, 84, 138, 138, 120, 101, 75, 75, + 85, 84, 94, 94, 94, 103, 102, 121, 138, 138, + 172, 104, 57, 115, 115, 115, 115, 76, 75, 75, + 122, 132, 141, 95, 171, 77, 94, 133, 123, 84, + 78, 89, 89, 89, 89, 170, 169, 168, 89, 89, + 89, 89, 89, 89, 94, 94, 94, 94, 57, 58, + 58, 58, 58, 141, 84, 89, 167, 166, 84, 89, + + 89, 89, 89, 89, 58, 58, 58, 58, 142, 94, + 96, 141, 84, 89, 75, 75, 85, 85, 141, 141, + 141, 160, 80, 81, 105, 84, 48, 94, 141, 141, + 141, 96, 143, 79, 75, 75, 160, 141, 141, 141, + 85, 144, 41, 84, 94, 94, 94, 145, 141, 141, + 84, 84, 84, 106, 48, 141, 163, 165, 85, 80, + 84, 84, 84, 141, 164, 146, 163, 81, 94, 84, + 84, 84, 141, 141, 141, 141, 143, 79, 144, 41, + 84, 84, 162, 161, 141, 139, 94, 84, 106, 115, + 115, 115, 115, 147, 141, 84, 159, 141, 48, 75, + + 75, 160, 106, 158, 84, 84, 84, 84, 137, 137, + 137, 137, 137, 137, 137, 137, 84, 141, 141, 75, + 75, 48, 160, 41, 144, 79, 84, 143, 81, 84, + 80, 157, 156, 106, 155, 41, 144, 79, 143, 81, + 80, 154, 153, 152, 151, 150, 149, 148, 108, 84, + 84, 42, 108, 42, 42, 42, 45, 45, 45, 46, + 141, 46, 46, 46, 49, 139, 49, 49, 49, 82, + 82, 84, 84, 107, 135, 107, 107, 107, 134, 127, + 126, 125, 124, 117, 116, 114, 113, 112, 111, 110, + 109, 43, 47, 173, 108, 43, 40, 106, 96, 84, + + 84, 81, 79, 56, 43, 48, 47, 44, 43, 41, + 40, 173, 3, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173 } ; -static ffconst flex_int16_t ff_chk[424] = +static ffconst flex_int16_t ff_chk[472] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 13, 20, 13, 25, 23, - 13, 18, 18, 18, 20, 23, 21, 62, 32, 25, - 165, 164, 27, 25, 13, 62, 13, 32, 13, 15, - 15, 15, 15, 27, 33, 28, 15, 27, 158, 21, - 15, 21, 15, 28, 60, 33, 15, 15, 15, 34, - - 28, 66, 156, 34, 155, 60, 15, 37, 37, 15, - 66, 15, 34, 15, 15, 15, 16, 16, 16, 16, - 35, 36, 68, 154, 35, 36, 16, 16, 68, 67, - 37, 36, 37, 35, 56, 56, 56, 56, 67, 29, - 29, 61, 153, 152, 37, 16, 16, 26, 26, 26, - 151, 150, 61, 26, 26, 26, 26, 26, 26, 29, - 76, 148, 29, 147, 29, 70, 70, 70, 70, 145, - 26, 77, 26, 26, 26, 26, 26, 26, 57, 57, - 57, 71, 71, 71, 71, 77, 144, 57, 57, 79, - 76, 71, 71, 72, 79, 72, 72, 72, 80, 81, - - 82, 77, 80, 81, 82, 84, 57, 57, 85, 84, - 71, 71, 85, 87, 86, 143, 90, 79, 86, 79, - 88, 142, 141, 89, 140, 88, 88, 89, 80, 81, - 82, 97, 91, 92, 139, 84, 91, 92, 85, 87, - 138, 93, 137, 87, 86, 93, 90, 94, 88, 90, - 88, 94, 95, 89, 96, 98, 95, 136, 96, 98, - 130, 97, 91, 92, 130, 126, 108, 108, 108, 133, - 125, 93, 124, 133, 97, 108, 108, 94, 127, 127, - 127, 123, 95, 122, 96, 98, 128, 128, 128, 134, - 130, 121, 135, 134, 108, 108, 135, 120, 119, 133, - - 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, - 107, 106, 105, 104, 103, 102, 101, 100, 83, 134, - 69, 65, 135, 160, 64, 160, 160, 161, 161, 162, - 63, 162, 162, 163, 59, 163, 163, 166, 58, 166, - 166, 54, 53, 52, 51, 50, 49, 48, 45, 44, - 43, 41, 39, 38, 24, 22, 19, 17, 14, 12, - 11, 10, 9, 8, 7, 5, 3, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159 + 1, 1, 1, 1, 1, 1, 1, 1, 13, 17, + 13, 21, 24, 13, 19, 19, 19, 17, 34, 24, + 21, 75, 17, 75, 75, 75, 75, 26, 13, 34, + 13, 33, 13, 15, 15, 15, 15, 15, 26, 28, + 33, 15, 181, 26, 172, 15, 61, 15, 22, 22, + + 28, 15, 15, 15, 68, 28, 170, 61, 15, 69, + 35, 169, 15, 68, 35, 15, 29, 15, 69, 15, + 15, 15, 22, 35, 29, 22, 15, 16, 16, 16, + 16, 16, 29, 36, 76, 76, 62, 36, 16, 16, + 22, 37, 30, 30, 30, 37, 36, 62, 138, 138, + 168, 37, 57, 57, 57, 57, 57, 16, 16, 16, + 63, 70, 82, 30, 167, 16, 30, 70, 63, 30, + 16, 27, 27, 27, 27, 166, 165, 164, 27, 27, + 27, 27, 27, 27, 30, 38, 38, 38, 73, 73, + 73, 73, 73, 83, 82, 27, 162, 161, 27, 27, + + 27, 27, 27, 27, 58, 58, 58, 58, 83, 38, + 159, 85, 38, 27, 58, 58, 85, 85, 86, 87, + 93, 158, 86, 87, 38, 83, 157, 38, 88, 90, + 97, 156, 88, 90, 58, 58, 155, 91, 92, 94, + 85, 91, 92, 85, 94, 94, 94, 93, 104, 95, + 86, 87, 93, 95, 154, 98, 153, 152, 85, 98, + 88, 90, 97, 99, 151, 97, 150, 99, 94, 91, + 92, 94, 100, 101, 102, 103, 100, 101, 102, 103, + 104, 95, 149, 148, 105, 139, 94, 98, 105, 115, + 115, 115, 115, 104, 142, 99, 135, 145, 142, 115, + + 115, 145, 134, 133, 100, 101, 102, 103, 136, 136, + 136, 136, 137, 137, 137, 137, 105, 146, 147, 115, + 115, 146, 147, 132, 131, 130, 142, 129, 128, 145, + 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, + 117, 116, 114, 113, 112, 111, 110, 109, 108, 146, + 147, 174, 107, 174, 174, 174, 175, 175, 175, 176, + 89, 176, 176, 176, 177, 77, 177, 177, 177, 178, + 178, 179, 179, 180, 72, 180, 180, 180, 71, 67, + 66, 65, 64, 60, 59, 55, 54, 53, 52, 51, + 50, 49, 46, 45, 44, 42, 40, 39, 31, 25, + + 23, 20, 18, 14, 12, 11, 10, 9, 8, 7, + 5, 3, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173 } ; static ff_state_type ff_last_accepting_state; @@ -708,7 +725,7 @@ if ( (result = expr_read( (char *) buf, max_size )) < 0 ) \ FF_FATAL_ERROR( "read() in flex scanner failed" ); -#line 712 "" +#line 729 "" #define INITIAL 0 @@ -747,7 +764,7 @@ void ffset_out (FILE * out_str ); -int ffget_leng (void ); +ff_size_t ffget_leng (void ); char *ffget_text (void ); @@ -797,7 +814,7 @@ /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( fftext, ffleng, 1, ffout )) {} } while (0) +#define ECHO fwrite( fftext, ffleng, 1, ffout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or FF_NULL, @@ -808,7 +825,7 @@ if ( FF_CURRENT_BUFFER_LVALUE->ff_is_interactive ) \ { \ int c = '*'; \ - unsigned n; \ + ff_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( ffin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -890,10 +907,10 @@ register char *ff_cp, *ff_bp; register int ff_act; -#line 142 "eval.l" +#line 146 "eval.l" -#line 897 "" +#line 914 "" if ( !(ff_init) ) { @@ -946,13 +963,13 @@ while ( ff_chk[ff_base[ff_current_state] + ff_c] != ff_current_state ) { ff_current_state = (int) ff_def[ff_current_state]; - if ( ff_current_state >= 160 ) + if ( ff_current_state >= 174 ) ff_c = ff_meta[(unsigned int) ff_c]; } ff_current_state = ff_nxt[ff_base[ff_current_state] + (unsigned int) ff_c]; ++ff_cp; } - while ( ff_base[ff_current_state] != 368 ); + while ( ff_base[ff_current_state] != 413 ); ff_find_action: ff_act = ff_accept[ff_current_state]; @@ -978,12 +995,12 @@ case 1: FF_RULE_SETUP -#line 144 "eval.l" +#line 148 "eval.l" ; FF_BREAK case 2: FF_RULE_SETUP -#line 145 "eval.l" +#line 149 "eval.l" { int len; len = strlen(fftext); @@ -997,7 +1014,7 @@ FF_BREAK case 3: FF_RULE_SETUP -#line 155 "eval.l" +#line 159 "eval.l" { int len; char tmpstring[256]; @@ -1061,7 +1078,7 @@ FF_BREAK case 4: FF_RULE_SETUP -#line 215 "eval.l" +#line 219 "eval.l" { int len; char tmpstring[256]; @@ -1156,15 +1173,55 @@ FF_BREAK case 5: FF_RULE_SETUP -#line 306 "eval.l" +#line 310 "eval.l" { - fflval.lng = atol(fftext); + long int constval = 0; + char *p; + for (p = &(fftext[2]); *p; p++) { + constval = (constval << 1) | (*p == '1'); + } + fflval.lng = constval; return( LONG ); } FF_BREAK case 6: FF_RULE_SETUP -#line 310 "eval.l" +#line 319 "eval.l" +{ + long int constval = 0; + char *p; + for (p = &(fftext[2]); *p; p++) { + constval = (constval << 3) | (*p - '0'); + } + fflval.lng = constval; + return( LONG ); + } + FF_BREAK +case 7: +FF_RULE_SETUP +#line 328 "eval.l" +{ + long int constval = 0; + char *p; + for (p = &(fftext[2]); *p; p++) { + int v = (isdigit(*p) ? (*p - '0') : (*p - 'a' + 10)); + constval = (constval << 4) | v; + } + fflval.lng = constval; + return( LONG ); + } + FF_BREAK +case 8: +FF_RULE_SETUP +#line 340 "eval.l" +{ + fflval.lng = atol(fftext); + return( LONG ); + } + FF_BREAK +case 9: +FF_RULE_SETUP +#line 344 "eval.l" { if ((fftext[0] == 't') || (fftext[0] == 'T')) fflval.log = 1; @@ -1173,17 +1230,17 @@ return( BOOLEAN ); } FF_BREAK -case 7: +case 10: FF_RULE_SETUP -#line 317 "eval.l" +#line 351 "eval.l" { fflval.dbl = atof(fftext); return( DOUBLE ); } FF_BREAK -case 8: +case 11: FF_RULE_SETUP -#line 321 "eval.l" +#line 355 "eval.l" { if( !fits_strcasecmp(fftext,"#PI") ) { fflval.dbl = (double)(4) * atan((double)(1)); @@ -1213,9 +1270,9 @@ } } FF_BREAK -case 9: +case 12: FF_RULE_SETUP -#line 349 "eval.l" +#line 383 "eval.l" { int len; len = strlen(fftext) - 2; @@ -1234,9 +1291,9 @@ return( STRING ); } FF_BREAK -case 10: +case 13: FF_RULE_SETUP -#line 366 "eval.l" +#line 400 "eval.l" { int len,type; @@ -1250,9 +1307,9 @@ return( type ); } FF_BREAK -case 11: +case 14: FF_RULE_SETUP -#line 378 "eval.l" +#line 412 "eval.l" { char *fname; int len=0; @@ -1271,6 +1328,9 @@ else if( FSTRCMP(fname,"GTIFILTER(")==0 ) return( GTIFILTER ); + else if( FSTRCMP(fname,"GTIOVERLAP(")==0 ) + return( GTIOVERLAP ); + else if( FSTRCMP(fname,"REGFILTER(")==0 ) return( REGFILTER ); @@ -1281,83 +1341,88 @@ return( FUNCTION ); } FF_BREAK -case 12: +case 15: FF_RULE_SETUP -#line 405 "eval.l" +#line 442 "eval.l" { return( INTCAST ); } FF_BREAK -case 13: +case 16: FF_RULE_SETUP -#line 406 "eval.l" +#line 443 "eval.l" { return( FLTCAST ); } FF_BREAK -case 14: +case 17: FF_RULE_SETUP -#line 407 "eval.l" +#line 444 "eval.l" { return( POWER ); } FF_BREAK -case 15: +case 18: FF_RULE_SETUP -#line 408 "eval.l" +#line 445 "eval.l" { return( NOT ); } FF_BREAK -case 16: +case 19: FF_RULE_SETUP -#line 409 "eval.l" +#line 446 "eval.l" { return( OR ); } FF_BREAK -case 17: +case 20: FF_RULE_SETUP -#line 410 "eval.l" +#line 447 "eval.l" { return( AND ); } FF_BREAK -case 18: +case 21: FF_RULE_SETUP -#line 411 "eval.l" +#line 448 "eval.l" { return( EQ ); } FF_BREAK -case 19: +case 22: FF_RULE_SETUP -#line 412 "eval.l" +#line 449 "eval.l" { return( NE ); } FF_BREAK -case 20: +case 23: FF_RULE_SETUP -#line 413 "eval.l" +#line 450 "eval.l" { return( GT ); } FF_BREAK -case 21: +case 24: FF_RULE_SETUP -#line 414 "eval.l" +#line 451 "eval.l" { return( LT ); } FF_BREAK -case 22: +case 25: FF_RULE_SETUP -#line 415 "eval.l" +#line 452 "eval.l" { return( GTE ); } FF_BREAK -case 23: +case 26: FF_RULE_SETUP -#line 416 "eval.l" +#line 453 "eval.l" { return( LTE ); } FF_BREAK -case 24: -/* rule 24 can match eol */ +case 27: FF_RULE_SETUP -#line 417 "eval.l" +#line 454 "eval.l" +{ return( XOR ); } + FF_BREAK +case 28: +/* rule 28 can match eol */ +FF_RULE_SETUP +#line 455 "eval.l" { return( '\n' ); } FF_BREAK -case 25: +case 29: FF_RULE_SETUP -#line 418 "eval.l" +#line 456 "eval.l" { return( fftext[0] ); } FF_BREAK -case 26: +case 30: FF_RULE_SETUP -#line 419 "eval.l" +#line 457 "eval.l" ECHO; FF_BREAK -#line 1361 "" +#line 1426 "" case FF_STATE_EOF(INITIAL): ffterminate(); @@ -1543,7 +1608,7 @@ else { - int num_to_read = + ff_size_t num_to_read = FF_CURRENT_BUFFER_LVALUE->ff_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -1557,7 +1622,7 @@ if ( b->ff_is_our_buffer ) { - int new_size = b->ff_buf_size * 2; + ff_size_t new_size = b->ff_buf_size * 2; if ( new_size <= 0 ) b->ff_buf_size += b->ff_buf_size / 8; @@ -1588,7 +1653,7 @@ /* Read in more data. */ FF_INPUT( (&FF_CURRENT_BUFFER_LVALUE->ff_ch_buf[number_to_move]), - (ff_n_chars), (size_t) num_to_read ); + (ff_n_chars), num_to_read ); FF_CURRENT_BUFFER_LVALUE->ff_n_chars = (ff_n_chars); } @@ -1649,7 +1714,7 @@ while ( ff_chk[ff_base[ff_current_state] + ff_c] != ff_current_state ) { ff_current_state = (int) ff_def[ff_current_state]; - if ( ff_current_state >= 160 ) + if ( ff_current_state >= 174 ) ff_c = ff_meta[(unsigned int) ff_c]; } ff_current_state = ff_nxt[ff_base[ff_current_state] + (unsigned int) ff_c]; @@ -1677,11 +1742,11 @@ while ( ff_chk[ff_base[ff_current_state] + ff_c] != ff_current_state ) { ff_current_state = (int) ff_def[ff_current_state]; - if ( ff_current_state >= 160 ) + if ( ff_current_state >= 174 ) ff_c = ff_meta[(unsigned int) ff_c]; } ff_current_state = ff_nxt[ff_base[ff_current_state] + (unsigned int) ff_c]; - ff_is_jam = (ff_current_state == 159); + ff_is_jam = (ff_current_state == 173); return ff_is_jam ? 0 : ff_current_state; } @@ -1698,7 +1763,7 @@ if ( ff_cp < FF_CURRENT_BUFFER_LVALUE->ff_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (ff_n_chars) + 2; + register ff_size_t number_to_move = (ff_n_chars) + 2; register char *dest = &FF_CURRENT_BUFFER_LVALUE->ff_ch_buf[ FF_CURRENT_BUFFER_LVALUE->ff_buf_size + 2]; register char *source = @@ -1747,7 +1812,7 @@ else { /* need more input */ - int offset = (ff_c_buf_p) - (fftext_ptr); + ff_size_t offset = (ff_c_buf_p) - (fftext_ptr); ++(ff_c_buf_p); switch ( ff_get_next_buffer( ) ) @@ -1771,7 +1836,7 @@ case EOB_ACT_END_OF_FILE: { if ( ffwrap( ) ) - return EOF; + return 0; if ( ! (ff_did_buffer_switch_on_eof) ) FF_NEW_FILE; @@ -2023,7 +2088,7 @@ */ static void ffensure_buffer_stack (void) { - int num_to_alloc; + ff_size_t num_to_alloc; if (!(ff_buffer_stack)) { @@ -2120,12 +2185,11 @@ * * @return the newly allocated buffer state object. */ -FF_BUFFER_STATE ff_scan_bytes (ffconst char * ffbytes, int _ffbytes_len ) +FF_BUFFER_STATE ff_scan_bytes (ffconst char * ffbytes, ff_size_t _ffbytes_len ) { FF_BUFFER_STATE b; char *buf; - ff_size_t n; - int i; + ff_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _ffbytes_len + 2; @@ -2207,7 +2271,7 @@ /** Get the length of the current token. * */ -int ffget_leng (void) +ff_size_t ffget_leng (void) { return ffleng; } @@ -2355,7 +2419,7 @@ #define FFTABLES_NAME "fftables" -#line 419 "eval.l" +#line 457 "eval.l" diff -Nru cfitsio-3.470/eval_tab.h cfitsio-4.0.0/eval_tab.h --- cfitsio-3.470/eval_tab.h 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval_tab.h 2021-05-20 01:18:54.000000000 +0000 @@ -1,21 +1,20 @@ +/* A Bison parser, made by GNU Bison 3.7.4. */ -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. -/* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -28,52 +27,75 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with FF_ or ff_. They are + private implementation details that can be changed or removed. */ + +#ifndef FF_FF_Y_TAB_H_INCLUDED +# define FF_FF_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef FFDEBUG +# define FFDEBUG 0 +#endif +#if FFDEBUG +extern int ffdebug; +#endif -/* Tokens. */ +/* Token kinds. */ #ifndef FFTOKENTYPE # define FFTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum fftokentype { - BOOLEAN = 258, - LONG = 259, - DOUBLE = 260, - STRING = 261, - BITSTR = 262, - FUNCTION = 263, - BFUNCTION = 264, - IFUNCTION = 265, - GTIFILTER = 266, - REGFILTER = 267, - COLUMN = 268, - BCOLUMN = 269, - SCOLUMN = 270, - BITCOL = 271, - ROWREF = 272, - NULLREF = 273, - SNULLREF = 274, - OR = 275, - AND = 276, - NE = 277, - EQ = 278, - GTE = 279, - LTE = 280, - LT = 281, - GT = 282, - POWER = 283, - NOT = 284, - FLTCAST = 285, - INTCAST = 286, - UMINUS = 287, - DIFF = 288, - ACCUM = 289 - }; + enum fftokentype + { + FFEMPTY = -2, + FFEOF = 0, /* "end of file" */ + FFerror = 256, /* error */ + FFUNDEF = 257, /* "invalid token" */ + BOOLEAN = 258, /* BOOLEAN */ + LONG = 259, /* LONG */ + DOUBLE = 260, /* DOUBLE */ + STRING = 261, /* STRING */ + BITSTR = 262, /* BITSTR */ + FUNCTION = 263, /* FUNCTION */ + BFUNCTION = 264, /* BFUNCTION */ + IFUNCTION = 265, /* IFUNCTION */ + GTIFILTER = 266, /* GTIFILTER */ + GTIOVERLAP = 267, /* GTIOVERLAP */ + REGFILTER = 268, /* REGFILTER */ + COLUMN = 269, /* COLUMN */ + BCOLUMN = 270, /* BCOLUMN */ + SCOLUMN = 271, /* SCOLUMN */ + BITCOL = 272, /* BITCOL */ + ROWREF = 273, /* ROWREF */ + NULLREF = 274, /* NULLREF */ + SNULLREF = 275, /* SNULLREF */ + OR = 276, /* OR */ + AND = 277, /* AND */ + EQ = 278, /* EQ */ + NE = 279, /* NE */ + GT = 280, /* GT */ + LT = 281, /* LT */ + LTE = 282, /* LTE */ + GTE = 283, /* GTE */ + XOR = 284, /* XOR */ + POWER = 285, /* POWER */ + NOT = 286, /* NOT */ + INTCAST = 287, /* INTCAST */ + FLTCAST = 288, /* FLTCAST */ + UMINUS = 289, /* UMINUS */ + ACCUM = 290, /* ACCUM */ + DIFF = 291 /* DIFF */ + }; + typedef enum fftokentype fftoken_kind_t; #endif -/* Tokens. */ +/* Token kinds. */ +#define FFEMPTY -2 +#define FFEOF 0 +#define FFerror 256 +#define FFUNDEF 257 #define BOOLEAN 258 #define LONG 259 #define DOUBLE 260 @@ -83,39 +105,37 @@ #define BFUNCTION 264 #define IFUNCTION 265 #define GTIFILTER 266 -#define REGFILTER 267 -#define COLUMN 268 -#define BCOLUMN 269 -#define SCOLUMN 270 -#define BITCOL 271 -#define ROWREF 272 -#define NULLREF 273 -#define SNULLREF 274 -#define OR 275 -#define AND 276 -#define NE 277 +#define GTIOVERLAP 267 +#define REGFILTER 268 +#define COLUMN 269 +#define BCOLUMN 270 +#define SCOLUMN 271 +#define BITCOL 272 +#define ROWREF 273 +#define NULLREF 274 +#define SNULLREF 275 +#define OR 276 +#define AND 277 #define EQ 278 -#define GTE 279 -#define LTE 280 +#define NE 279 +#define GT 280 #define LT 281 -#define GT 282 -#define POWER 283 -#define NOT 284 -#define FLTCAST 285 -#define INTCAST 286 -#define UMINUS 287 -#define DIFF 288 -#define ACCUM 289 - - - +#define LTE 282 +#define GTE 283 +#define XOR 284 +#define POWER 285 +#define NOT 286 +#define INTCAST 287 +#define FLTCAST 288 +#define UMINUS 289 +#define ACCUM 290 +#define DIFF 291 +/* Value type. */ #if ! defined FFSTYPE && ! defined FFSTYPE_IS_DECLARED -typedef union FFSTYPE +union FFSTYPE { - -/* Line 1676 of yacc.c */ -#line 192 "eval.y" +#line 199 "eval.y" int Node; /* Index of Node */ double dbl; /* real value */ @@ -123,16 +143,17 @@ char log; /* logical value */ char str[MAX_STRLEN]; /* string value */ +#line 147 "y.tab.h" - -/* Line 1676 of yacc.c */ -#line 130 "y.tab.h" -} FFSTYPE; +}; +typedef union FFSTYPE FFSTYPE; # define FFSTYPE_IS_TRIVIAL 1 -# define ffstype FFSTYPE /* obsolescent; will be withdrawn */ # define FFSTYPE_IS_DECLARED 1 #endif + extern FFSTYPE fflval; +int ffparse (void); +#endif /* !FF_FF_Y_TAB_H_INCLUDED */ diff -Nru cfitsio-3.470/eval.y cfitsio-4.0.0/eval.y --- cfitsio-3.470/eval.y 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval.y 2021-05-20 01:18:54.000000000 +0000 @@ -63,6 +63,9 @@ /* determine the output dimensions */ /* Craig B Markwardt Aug 2009 Add substring STRMID() and string search*/ /* STRSTR() functions; more overflow checks*/ +/* Craig B Markwardt Dec 2019 Add bit/hex/oct literal strings and */ +/* bitwise operatiosn between integers */ +/* Craig B Markwardt Mar 2021 Add SETNULL() function */ /* */ /************************************************************************/ @@ -140,7 +143,7 @@ int Node5, int Node6, int Node7, int Size); static int New_Deref ( int Var, int nDim, int Dim1, int Dim2, int Dim3, int Dim4, int Dim5 ); -static int New_GTI ( char *fname, int Node1, char *start, char *stop ); +static int New_GTI ( funcOp Op, char *fname, int Node1, int Node2, char *start, char *stop ); static int New_REG ( char *fname, int NodeX, int NodeY, char *colNames ); static int New_Vector( int subNode ); static int Close_Vec ( int vecNode ); @@ -159,11 +162,15 @@ static void Do_Func ( Node *this ); static void Do_Deref ( Node *this ); static void Do_GTI ( Node *this ); +static void Do_GTI_Over ( Node *this ); static void Do_REG ( Node *this ); static void Do_Vector ( Node *this ); static long Search_GTI ( double evtTime, long nGTI, double *start, - double *stop, int ordered ); + double *stop, int ordered, long *nextGTI ); +static double GTI_Over(double evtStart, double evtStop, + long nGTI, double *start, double *stop, + long *gtiout); static char saobox (double xcen, double ycen, double xwid, double ywid, double rot, double xcol, double ycol); @@ -206,6 +213,7 @@ %token BFUNCTION /* Bit function */ %token IFUNCTION /* Integer function */ %token GTIFILTER +%token GTIOVERLAP %token REGFILTER %token COLUMN %token BCOLUMN @@ -230,7 +238,7 @@ %left GT LT LTE GTE %left '+' '-' '%' %left '*' '/' -%left '|' '&' +%left '|' '&' XOR %right POWER %left NOT %left INTCAST FLTCAST @@ -417,6 +425,33 @@ | expr '/' expr { PROMOTE($1,$3); $$ = New_BinOp( TYPE($1), $1, '/', $3 ); TEST($$); } + | expr '&' expr + { + if (TYPE($1) != LONG || + TYPE($3) != LONG) { + yyerror("Bitwise operations with incompatible types; only (bit OP bit) and (int OP int) are allowed"); + YYERROR; + } + $$ = New_BinOp( TYPE($1), $1, '&', $3 ); + } + | expr '|' expr + { + if (TYPE($1) != LONG || + TYPE($3) != LONG) { + yyerror("Bitwise operations with incompatible types; only (bit OP bit) and (int OP int) are allowed"); + YYERROR; + } + $$ = New_BinOp( TYPE($1), $1, '|', $3 ); + } + | expr XOR expr + { + if (TYPE($1) != LONG || + TYPE($3) != LONG) { + yyerror("Bitwise operations with incompatible types; only (bit OP bit) and (int OP int) are allowed"); + YYERROR; + } + $$ = New_BinOp( TYPE($1), $1, '^', $3 ); + } | expr POWER expr { PROMOTE($1,$3); $$ = New_BinOp( TYPE($1), $1, POWER, $3 ); TEST($$); } @@ -709,16 +744,15 @@ "are not compatible"); YYERROR; } -#if 0 - } else if (FSTRCMP($1,"STRSTR(") == 0) { - if( TYPE($2) != STRING || TYPE($4) != STRING) { - yyerror("Arguments to strstr(s,r) must be strings"); + } else if (FSTRCMP($1,"SETNULL(") == 0) { + if (OPER($2) != CONST_OP + || SIZE($2) != 1) { + yyerror("SETNULL first argument must be a scalar constant"); YYERROR; } - $$ = New_Func( LONG, strpos_fct, 2, $2, $4, 0, - 0, 0, 0, 0 ); - TEST($$); -#endif + /* Make sure first arg is same type as second arg */ + if ( TYPE($2) != TYPE($4) ) $2 = New_Unary( TYPE($4), 0, $2 ); + $$ = New_Func( 0, setnull_fct, 2, $4, $2, 0, 0, 0, 0, 0 ); } else { yyerror("Function(expr,expr) not supported"); YYERROR; @@ -1015,19 +1049,28 @@ | GTIFILTER ')' { /* Use defaults for all elements */ - $$ = New_GTI( "", -99, "*START*", "*STOP*" ); + $$ = New_GTI(gtifilt_fct, "", -99, -99, "*START*", "*STOP*" ); TEST($$); } | GTIFILTER STRING ')' { /* Use defaults for all except filename */ - $$ = New_GTI( $2, -99, "*START*", "*STOP*" ); + $$ = New_GTI(gtifilt_fct, $2, -99, -99, "*START*", "*STOP*" ); TEST($$); } | GTIFILTER STRING ',' expr ')' - { $$ = New_GTI( $2, $4, "*START*", "*STOP*" ); + { $$ = New_GTI(gtifilt_fct, $2, $4, -99, "*START*", "*STOP*" ); TEST($$); } | GTIFILTER STRING ',' expr ',' STRING ',' STRING ')' - { $$ = New_GTI( $2, $4, $6, $8 ); + { $$ = New_GTI(gtifilt_fct, $2, $4, -99, $6, $8 ); + TEST($$); } + + + | GTIOVERLAP STRING ',' expr ',' expr ')' + { $$ = New_GTI(gtiover_fct, $2, $4, $6, "*START*", "*STOP*"); + TEST($$); } + | GTIOVERLAP STRING ',' expr ',' expr ',' STRING ',' STRING ')' + { $$ = New_GTI(gtiover_fct, $2, $4, $6, $8, $10 ); TEST($$); } + | REGFILTER STRING ')' { /* Use defaults for all except filename */ $$ = New_REG( $2, -99, -99, "" ); @@ -1469,10 +1512,10 @@ extern int yyGetVariable( char *varName, YYSTYPE *varVal ); -static int New_GTI( char *fname, int Node1, char *start, char *stop ) +static int New_GTI( funcOp Op, char *fname, int Node1, int Node2, char *start, char *stop ) { fitsfile *fptr; - Node *this, *that0, *that1; + Node *this, *that0, *that1, *that2; int type,i,n, startCol, stopCol, Node0; int hdutype, hdunum, evthdu, samefile, extvers, movetotype, tstat; char extname[100]; @@ -1481,7 +1524,7 @@ char xcol[20], xexpr[20]; YYSTYPE colVal; - if( Node1==-99 ) { + if( Op == gtifilt_fct && Node1==-99 ) { type = yyGetVariable( "TIME", &colVal ); if( type==COLUMN ) { Node1 = New_Column( (int)colVal.lng ); @@ -1490,6 +1533,19 @@ return(-1); } } + + if (Op == gtiover_fct) { + if (Node1 == -99 || Node2 == -99) { + yyerror("startExpr and stopExpr values must be defined for GTIOVERLAP"); + return(-1); + } + /* Also case TIME_STOP to double precision */ + Node2 = New_Unary( DOUBLE, 0, Node2 ); + if (Node2 < 0) return(-1); + + } + + /* Type cast TIME to double precision */ Node1 = New_Unary( DOUBLE, 0, Node1 ); Node0 = Alloc_Node(); /* This will hold the START/STOP times */ if( Node1<0 || Node0<0 ) return(-1); @@ -1603,16 +1659,30 @@ n = Alloc_Node(); if( n >= 0 ) { this = gParse.Nodes + n; - this->nSubNodes = 2; this->SubNodes[1] = Node1; - this->operation = (int)gtifilt_fct; - this->DoOp = Do_GTI; - this->type = BOOLEAN; + this->operation = (int) Op; + if (Op == gtifilt_fct) { + this->nSubNodes = 2; + this->DoOp = Do_GTI; + this->type = BOOLEAN; + } else { + this->nSubNodes = 3; + this->DoOp = Do_GTI_Over; + this->type = DOUBLE; + } that1 = gParse.Nodes + Node1; this->value.nelem = that1->value.nelem; this->value.naxis = that1->value.naxis; for( i=0; i < that1->value.naxis; i++ ) this->value.naxes[i] = that1->value.naxes[i]; + if (Op == gtiover_fct) { + this->SubNodes[2] = Node2; + that2 = gParse.Nodes + Node2; + if (that1->value.nelem != that2->value.nelem) { + yyerror("Dimensions of TIME and TIME_STOP must match for GTIOVERLAP"); + return(-1); + } + } /* Init START/STOP node to be treated as a "constant" */ @@ -1656,6 +1726,12 @@ that0->type = 0; break; } + + /* GTIOVERLAP() requires ordered GTI */ + if (that0->type != 1 && Op == gtiover_fct) { + yyerror("Input GTI must be time-ordered for GTIOVERLAP"); + return(-1); + } /* Handle TIMEZERO offset, if any */ @@ -1668,8 +1744,11 @@ that0->value.data.dblptr[i] += dt; } } - if( OPER(Node1)==CONST_OP ) - this->DoOp( this ); + /* If Node1 is constant (gtifilt_fct) or + Node1 and Node2 are constant (gtiover_fct), then evaluate now */ + if( OPER(Node1)==CONST_OP && (Op == gtifilt_fct || OPER(Node2)==CONST_OP)) { + this->DoOp( this ); + } } if( samefile ) @@ -2849,6 +2928,10 @@ case '-': this->value.data.lng = (val1 - val2); break; case '*': this->value.data.lng = (val1 * val2); break; + case '&': this->value.data.lng = (val1 & val2); break; + case '|': this->value.data.lng = (val1 | val2); break; + case '^': this->value.data.lng = (val1 ^ val2); break; + case '%': if( val2 ) this->value.data.lng = (val1 % val2); else yyerror("Divide by Zero"); @@ -2958,6 +3041,10 @@ case '-': this->value.data.lngptr[elem] = (val1 - val2); break; case '*': this->value.data.lngptr[elem] = (val1 * val2); break; + case '&': this->value.data.lngptr[elem] = (val1 & val2); break; + case '|': this->value.data.lngptr[elem] = (val1 | val2); break; + case '^': this->value.data.lngptr[elem] = (val1 ^ val2); break; + case '%': if( val2 ) this->value.data.lngptr[elem] = (val1 % val2); else { @@ -3467,6 +3554,12 @@ else if( this->type==STRING ) strcpy(this->value.data.str,pVals[0].data.str); break; + case setnull_fct: /* Only defined for numeric expressions */ + if( this->type==LONG ) + this->value.data.lng = pVals[0].data.lng; + else if( this->type==DOUBLE ) + this->value.data.dbl = pVals[0].data.dbl; + break; /* Math functions with 1 double argument */ @@ -4150,6 +4243,34 @@ } } break; + case setnull_fct: + switch( this->type ) { + case LONG: + while( elem-- ) { + if ( theParams[1]->value.data.lng == + theParams[0]->value.data.lngptr[elem] ) { + this->value.data.lngptr[elem] = 0; + this->value.undef[elem] = 1; + } else { + this->value.data.lngptr[elem] = theParams[0]->value.data.lngptr[elem]; + this->value.undef[elem] = theParams[0]->value.undef[elem]; + } + } + break; + case DOUBLE: + while( elem-- ) { + if ( theParams[1]->value.data.dbl == + theParams[0]->value.data.dblptr[elem] ) { + this->value.data.dblptr[elem] = 0; + this->value.undef[elem] = 1; + } else { + this->value.data.dblptr[elem] = theParams[0]->value.data.dblptr[elem]; + this->value.undef[elem] = theParams[0]->value.undef[elem]; + } + } + break; + } + break; /* Math functions with 1 double argument */ @@ -5181,7 +5302,7 @@ if( theExpr->operation==CONST_OP ) { this->value.data.log = - (Search_GTI( theExpr->value.data.dbl, nGTI, start, stop, ordered )>=0); + (Search_GTI( theExpr->value.data.dbl, nGTI, start, stop, ordered, 0 )>=0); this->operation = CONST_OP; } else { @@ -5200,7 +5321,7 @@ /* Before searching entire GTI, check the GTI found last time */ if( gti<0 || times[elem]stop[gti] ) { - gti = Search_GTI( times[elem], nGTI, start, stop, ordered ); + gti = Search_GTI( times[elem], nGTI, start, stop, ordered, 0 ); } this->value.data.logptr[elem] = ( gti>=0 ); } @@ -5216,10 +5337,158 @@ free( theExpr->value.data.ptr ); } +static void Do_GTI_Over( Node *this ) +{ + Node *theTimes, *theStart, *theStop; + double *gtiStart, *gtiStop; + double *evtStart, *evtStop; + long elem, nGTI, gti, nextGTI; + int ordered; + + theTimes = gParse.Nodes + this->SubNodes[0]; /* GTI times */ + theStop = gParse.Nodes + this->SubNodes[2]; /* User start time */ + theStart = gParse.Nodes + this->SubNodes[1]; /* User stop time */ + + nGTI = theTimes->value.nelem; + gtiStart = theTimes->value.data.dblptr; /* GTI start */ + gtiStop = theTimes->value.data.dblptr + nGTI; /* GTI stop */ + + if( theStart->operation==CONST_OP && theStop->operation==CONST_OP) { + + this->value.data.dbl = + (GTI_Over( theStart->value.data.dbl, theStop->value.data.dbl, + nGTI, gtiStart, gtiStop, >i)); + this->operation = CONST_OP; + + } else { + char undefStart = 0, undefStop = 0; /* Input values are undef? */ + double uStart, uStop; /* User start/stop values */ + if (theStart->operation==CONST_OP) uStart = theStart->value.data.dbl; + if (theStop ->operation==CONST_OP) uStop = theStop ->value.data.dbl; + + Allocate_Ptrs( this ); + + evtStart = theStart->value.data.dblptr; + evtStop = theStop ->value.data.dblptr; + if( !gParse.status ) { + + elem = gParse.nRows * this->value.nelem; + if( nGTI ) { + double toverlap = 0.0; + gti = -1; + while( elem-- ) { + if (theStart->operation!=CONST_OP) { + undefStart = theStart->value.undef[elem]; + uStart = evtStart[elem]; + } + if (theStop->operation!=CONST_OP) { + undefStop = theStop ->value.undef[elem]; + uStop = evtStop[elem]; + } + /* This works because at least one of the values is not const */ + if( (this->value.undef[elem] = (undefStart||undefStop)) ) + continue; + + /* Before searching entire GTI, check the GTI found last time */ + if( gti<0 || + uStartgtiStop[gti] || + uStop gtiStop[gti]) { + /* Nope, need to recalculate */ + toverlap = GTI_Over(uStart, uStop, + nGTI, gtiStart, gtiStop, + >i); + } else { + /* We are in same GTI, the overlap is just stop-start of user range */ + toverlap = (uStop-uStart); + } + + /* This works because at least one of the values is not const */ + this->value.data.dblptr[elem] = toverlap; + } + } else + /* nGTI == 0; there is no overlap so set all values to 0.0 */ + while( elem-- ) { + this->value.data.dblptr[elem] = 0.0; + this->value.undef[elem] = 0; + } + } + } + + if( theStart->operation>0 ) { + free( theStart->value.data.ptr ); + } + if( theStop->operation>0 ) { + free( theStop->value.data.ptr ); + } +} + +static double GTI_Over(double evtStart, double evtStop, + long nGTI, double *start, double *stop, + long *gtiout) +{ + long gti1, gti2, nextGTI1, nextGTI2; + long gti, nMax; + double overlap = 0.0; + + *gtiout = -1L; + /* Zero or negative bin size */ + if (evtStop <= evtStart) return 0.0; + + /* Locate adjacent GTIs for evtStart and evtStop */ + gti1 = Search_GTI(evtStart, nGTI, start, stop, 1, &nextGTI1); + gti2 = Search_GTI(evtStop, nGTI, start, stop, 1, &nextGTI2); + + /* evtStart is in gti1, we return that for future processing */ + if (gti1 >= 0) *gtiout = gti1; + + /* Both evtStart/evtStop are beyond the last GTI */ + if (nextGTI1 < 0 && nextGTI2 < 0) return 0.0; + + /* Both evtStart/evtStop are in the same gap between GTIs */ + if (gti1 < 0 && gti2 < 0 && nextGTI1 == nextGTI2) return 0.0; + + /* Both evtStart/evtStop are in the same GTI */ + if (gti1 >= 0 && gti1 == gti2) return (evtStop-evtStart); + + /* Count through the remaining GTIs; there will be at least one */ + /* The largest GTI to consider is either nextGTI2-1, if it exists, + or nGTI-1 */ + if (nextGTI2 < 0) nMax = nGTI-1; + else if (gti2 >= 0) nMax = nextGTI2; + else nMax = nextGTI2-1; + for (gti = nextGTI1; gti <= nMax; gti++) { + double starti = start[gti], stopi = stop[gti]; + /* Trim the GTI by actual evtStart/Stop times */ + if (evtStart > starti) starti = evtStart; + if (evtStop < stopi ) stopi = evtStop; + overlap += (stopi - starti); + } + + return overlap; +} + +/* + * Search_GTI - search GTI for requested evtTime + * + * double evtTime - requested event time + * long nGTI - number of entries in start[] and stop[] + * double start[], stop[] - start and stop of each GTI + * int ordered - set to 1 if time-ordered + * long *nextGTI0 - upon return, *nextGTI0 is either + * the GTI evtTime is inside + * the next GTI if evtTime is not inside + * -1L if there is no next GTI + * not set if nextGTI0 is a null pointer + * + * NOTE: for *nextGTI to be well-defined, the GTI must + * be ordered. This is true when called by Do_GTI. + * + * RETURNS: gti index that evtTime is located inside, or -1L + */ static long Search_GTI( double evtTime, long nGTI, double *start, - double *stop, int ordered ) + double *stop, int ordered, long *nextGTI0 ) { - long gti, step; + long gti, nextGTI = -1L, step; if( ordered && nGTI>15 ) { /* If time-ordered and lots of GTIs, */ /* use "FAST" Binary search algorithm */ @@ -5232,6 +5501,7 @@ if( evtTime>=start[gti+1] ) gti += step; else { + nextGTI = gti+1; gti = -1L; break; } @@ -5239,22 +5509,35 @@ if( evtTime<=stop[gti-1] ) gti -= step; else { + nextGTI = gti; gti = -1L; break; } } else { + nextGTI = gti; break; } } - } else + } else { + if (start[0] > evtTime) nextGTI = 0; gti = -1L; + } - } else { /* Use "SLOW" linear search */ + } else { /* Use "SLOW" linear search. Not required to be + ordered, so we have to search the whole table + no matter what. + */ gti = nGTI; - while( gti-- ) - if( evtTime>=start[gti] && evtTime<=stop[gti] ) + while( gti-- ) { + if( stop[gti] >= evtTime ) nextGTI = gti; + if( evtTime>=start[gti] && evtTime<=stop[gti] ) break; + } } + + if (nextGTI >= nGTI) nextGTI = -1; + if (nextGTI0) *nextGTI0 = nextGTI; + return( gti ); } diff -Nru cfitsio-3.470/eval_y.c cfitsio-4.0.0/eval_y.c --- cfitsio-3.470/eval_y.c 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/eval_y.c 2021-05-20 01:18:54.000000000 +0000 @@ -1,21 +1,20 @@ +/* A Bison parser, made by GNU Bison 3.7.4. */ -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. -/* Skeleton implementation for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -28,13 +27,17 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with FF_ or ff_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with ff or FF, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -42,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define FFBISON 1 +/* Identify Bison output, and Bison version. */ +#define FFBISON 30704 -/* Bison version. */ -#define FFBISON_VERSION "2.4.1" +/* Bison version string. */ +#define FFBISON_VERSION "3.7.4" /* Skeleton name. */ #define FFSKELETON_NAME "yacc.c" @@ -60,14 +63,10 @@ /* Pull parsers. */ #define FFPULL 1 -/* Using locations. */ -#define FFLSP_NEEDED 0 - -/* Copy the first part of user declarations. */ -/* Line 189 of yacc.c */ +/* First part of user prologue. */ #line 1 "eval.y" /************************************************************************/ @@ -134,6 +133,9 @@ /* determine the output dimensions */ /* Craig B Markwardt Aug 2009 Add substring STRMID() and string search*/ /* STRSTR() functions; more overflow checks*/ +/* Craig B Markwardt Dec 2019 Add bit/hex/oct literal strings and */ +/* bitwise operatiosn between integers */ +/* Craig B Markwardt Mar 2021 Add SETNULL() function */ /* */ /************************************************************************/ @@ -211,7 +213,7 @@ int Node5, int Node6, int Node7, int Size); static int New_Deref ( int Var, int nDim, int Dim1, int Dim2, int Dim3, int Dim4, int Dim5 ); -static int New_GTI ( char *fname, int Node1, char *start, char *stop ); +static int New_GTI ( funcOp Op, char *fname, int Node1, int Node2, char *start, char *stop ); static int New_REG ( char *fname, int NodeX, int NodeY, char *colNames ); static int New_Vector( int subNode ); static int Close_Vec ( int vecNode ); @@ -230,11 +232,15 @@ static void Do_Func ( Node *this ); static void Do_Deref ( Node *this ); static void Do_GTI ( Node *this ); +static void Do_GTI_Over ( Node *this ); static void Do_REG ( Node *this ); static void Do_Vector ( Node *this ); static long Search_GTI ( double evtTime, long nGTI, double *start, - double *stop, int ordered ); + double *stop, int ordered, long *nextGTI ); +static double GTI_Over(double evtStart, double evtStop, + long nGTI, double *start, double *stop, + long *gtiout); static char saobox (double xcen, double ycen, double xwid, double ywid, double rot, double xcol, double ycol); @@ -259,70 +265,92 @@ #endif +#line 269 "y.tab.c" -/* Line 189 of yacc.c */ -#line 265 "y.tab.c" +# ifndef FF_CAST +# ifdef __cplusplus +# define FF_CAST(Type, Val) static_cast (Val) +# define FF_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define FF_CAST(Type, Val) ((Type) (Val)) +# define FF_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef FF_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define FF_NULLPTR nullptr +# else +# define FF_NULLPTR 0 +# endif +# else +# define FF_NULLPTR ((void*)0) +# endif +# endif -/* Enabling traces. */ +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef FF_FF_Y_TAB_H_INCLUDED +# define FF_FF_Y_TAB_H_INCLUDED +/* Debug traces. */ #ifndef FFDEBUG # define FFDEBUG 0 #endif - -/* Enabling verbose error messages. */ -#ifdef FFERROR_VERBOSE -# undef FFERROR_VERBOSE -# define FFERROR_VERBOSE 1 -#else -# define FFERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef FFTOKEN_TABLE -# define FFTOKEN_TABLE 0 +#if FFDEBUG +extern int ffdebug; #endif - -/* Tokens. */ +/* Token kinds. */ #ifndef FFTOKENTYPE # define FFTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum fftokentype { - BOOLEAN = 258, - LONG = 259, - DOUBLE = 260, - STRING = 261, - BITSTR = 262, - FUNCTION = 263, - BFUNCTION = 264, - IFUNCTION = 265, - GTIFILTER = 266, - REGFILTER = 267, - COLUMN = 268, - BCOLUMN = 269, - SCOLUMN = 270, - BITCOL = 271, - ROWREF = 272, - NULLREF = 273, - SNULLREF = 274, - OR = 275, - AND = 276, - NE = 277, - EQ = 278, - GTE = 279, - LTE = 280, - LT = 281, - GT = 282, - POWER = 283, - NOT = 284, - FLTCAST = 285, - INTCAST = 286, - UMINUS = 287, - DIFF = 288, - ACCUM = 289 - }; -#endif -/* Tokens. */ + enum fftokentype + { + FFEMPTY = -2, + FFEOF = 0, /* "end of file" */ + FFerror = 256, /* error */ + FFUNDEF = 257, /* "invalid token" */ + BOOLEAN = 258, /* BOOLEAN */ + LONG = 259, /* LONG */ + DOUBLE = 260, /* DOUBLE */ + STRING = 261, /* STRING */ + BITSTR = 262, /* BITSTR */ + FUNCTION = 263, /* FUNCTION */ + BFUNCTION = 264, /* BFUNCTION */ + IFUNCTION = 265, /* IFUNCTION */ + GTIFILTER = 266, /* GTIFILTER */ + GTIOVERLAP = 267, /* GTIOVERLAP */ + REGFILTER = 268, /* REGFILTER */ + COLUMN = 269, /* COLUMN */ + BCOLUMN = 270, /* BCOLUMN */ + SCOLUMN = 271, /* SCOLUMN */ + BITCOL = 272, /* BITCOL */ + ROWREF = 273, /* ROWREF */ + NULLREF = 274, /* NULLREF */ + SNULLREF = 275, /* SNULLREF */ + OR = 276, /* OR */ + AND = 277, /* AND */ + EQ = 278, /* EQ */ + NE = 279, /* NE */ + GT = 280, /* GT */ + LT = 281, /* LT */ + LTE = 282, /* LTE */ + GTE = 283, /* GTE */ + XOR = 284, /* XOR */ + POWER = 285, /* POWER */ + NOT = 286, /* NOT */ + INTCAST = 287, /* INTCAST */ + FLTCAST = 288, /* FLTCAST */ + UMINUS = 289, /* UMINUS */ + ACCUM = 290, /* ACCUM */ + DIFF = 291 /* DIFF */ + }; + typedef enum fftokentype fftoken_kind_t; +#endif +/* Token kinds. */ +#define FFEMPTY -2 +#define FFEOF 0 +#define FFerror 256 +#define FFUNDEF 257 #define BOOLEAN 258 #define LONG 259 #define DOUBLE 260 @@ -332,39 +360,37 @@ #define BFUNCTION 264 #define IFUNCTION 265 #define GTIFILTER 266 -#define REGFILTER 267 -#define COLUMN 268 -#define BCOLUMN 269 -#define SCOLUMN 270 -#define BITCOL 271 -#define ROWREF 272 -#define NULLREF 273 -#define SNULLREF 274 -#define OR 275 -#define AND 276 -#define NE 277 +#define GTIOVERLAP 267 +#define REGFILTER 268 +#define COLUMN 269 +#define BCOLUMN 270 +#define SCOLUMN 271 +#define BITCOL 272 +#define ROWREF 273 +#define NULLREF 274 +#define SNULLREF 275 +#define OR 276 +#define AND 277 #define EQ 278 -#define GTE 279 -#define LTE 280 +#define NE 279 +#define GT 280 #define LT 281 -#define GT 282 -#define POWER 283 -#define NOT 284 -#define FLTCAST 285 -#define INTCAST 286 -#define UMINUS 287 -#define DIFF 288 -#define ACCUM 289 - - - +#define LTE 282 +#define GTE 283 +#define XOR 284 +#define POWER 285 +#define NOT 286 +#define INTCAST 287 +#define FLTCAST 288 +#define UMINUS 289 +#define ACCUM 290 +#define DIFF 291 +/* Value type. */ #if ! defined FFSTYPE && ! defined FFSTYPE_IS_DECLARED -typedef union FFSTYPE +union FFSTYPE { - -/* Line 214 of yacc.c */ -#line 192 "eval.y" +#line 199 "eval.y" int Node; /* Index of Node */ double dbl; /* real value */ @@ -372,52 +398,168 @@ char log; /* logical value */ char str[MAX_STRLEN]; /* string value */ +#line 402 "y.tab.c" - -/* Line 214 of yacc.c */ -#line 379 "y.tab.c" -} FFSTYPE; +}; +typedef union FFSTYPE FFSTYPE; # define FFSTYPE_IS_TRIVIAL 1 -# define ffstype FFSTYPE /* obsolescent; will be withdrawn */ # define FFSTYPE_IS_DECLARED 1 #endif -/* Copy the second part of user declarations. */ +extern FFSTYPE fflval; + +int ffparse (void); + +#endif /* !FF_FF_Y_TAB_H_INCLUDED */ +/* Symbol kind. */ +enum ffsymbol_kind_t +{ + FFSYMBOL_FFEMPTY = -2, + FFSYMBOL_FFEOF = 0, /* "end of file" */ + FFSYMBOL_FFerror = 1, /* error */ + FFSYMBOL_FFUNDEF = 2, /* "invalid token" */ + FFSYMBOL_BOOLEAN = 3, /* BOOLEAN */ + FFSYMBOL_LONG = 4, /* LONG */ + FFSYMBOL_DOUBLE = 5, /* DOUBLE */ + FFSYMBOL_STRING = 6, /* STRING */ + FFSYMBOL_BITSTR = 7, /* BITSTR */ + FFSYMBOL_FUNCTION = 8, /* FUNCTION */ + FFSYMBOL_BFUNCTION = 9, /* BFUNCTION */ + FFSYMBOL_IFUNCTION = 10, /* IFUNCTION */ + FFSYMBOL_GTIFILTER = 11, /* GTIFILTER */ + FFSYMBOL_GTIOVERLAP = 12, /* GTIOVERLAP */ + FFSYMBOL_REGFILTER = 13, /* REGFILTER */ + FFSYMBOL_COLUMN = 14, /* COLUMN */ + FFSYMBOL_BCOLUMN = 15, /* BCOLUMN */ + FFSYMBOL_SCOLUMN = 16, /* SCOLUMN */ + FFSYMBOL_BITCOL = 17, /* BITCOL */ + FFSYMBOL_ROWREF = 18, /* ROWREF */ + FFSYMBOL_NULLREF = 19, /* NULLREF */ + FFSYMBOL_SNULLREF = 20, /* SNULLREF */ + FFSYMBOL_21_ = 21, /* ',' */ + FFSYMBOL_22_ = 22, /* '=' */ + FFSYMBOL_23_ = 23, /* ':' */ + FFSYMBOL_24_ = 24, /* '{' */ + FFSYMBOL_25_ = 25, /* '}' */ + FFSYMBOL_26_ = 26, /* '?' */ + FFSYMBOL_OR = 27, /* OR */ + FFSYMBOL_AND = 28, /* AND */ + FFSYMBOL_EQ = 29, /* EQ */ + FFSYMBOL_NE = 30, /* NE */ + FFSYMBOL_31_ = 31, /* '~' */ + FFSYMBOL_GT = 32, /* GT */ + FFSYMBOL_LT = 33, /* LT */ + FFSYMBOL_LTE = 34, /* LTE */ + FFSYMBOL_GTE = 35, /* GTE */ + FFSYMBOL_36_ = 36, /* '+' */ + FFSYMBOL_37_ = 37, /* '-' */ + FFSYMBOL_38_ = 38, /* '%' */ + FFSYMBOL_39_ = 39, /* '*' */ + FFSYMBOL_40_ = 40, /* '/' */ + FFSYMBOL_41_ = 41, /* '|' */ + FFSYMBOL_42_ = 42, /* '&' */ + FFSYMBOL_XOR = 43, /* XOR */ + FFSYMBOL_POWER = 44, /* POWER */ + FFSYMBOL_NOT = 45, /* NOT */ + FFSYMBOL_INTCAST = 46, /* INTCAST */ + FFSYMBOL_FLTCAST = 47, /* FLTCAST */ + FFSYMBOL_UMINUS = 48, /* UMINUS */ + FFSYMBOL_49_ = 49, /* '[' */ + FFSYMBOL_ACCUM = 50, /* ACCUM */ + FFSYMBOL_DIFF = 51, /* DIFF */ + FFSYMBOL_52_n_ = 52, /* '\n' */ + FFSYMBOL_53_ = 53, /* ']' */ + FFSYMBOL_54_ = 54, /* '(' */ + FFSYMBOL_55_ = 55, /* ')' */ + FFSYMBOL_FFACCEPT = 56, /* $accept */ + FFSYMBOL_lines = 57, /* lines */ + FFSYMBOL_line = 58, /* line */ + FFSYMBOL_bvector = 59, /* bvector */ + FFSYMBOL_vector = 60, /* vector */ + FFSYMBOL_expr = 61, /* expr */ + FFSYMBOL_bexpr = 62, /* bexpr */ + FFSYMBOL_bits = 63, /* bits */ + FFSYMBOL_sexpr = 64 /* sexpr */ +}; +typedef enum ffsymbol_kind_t ffsymbol_kind_t; + -/* Line 264 of yacc.c */ -#line 391 "y.tab.c" #ifdef short # undef short #endif -#ifdef FFTYPE_UINT8 -typedef FFTYPE_UINT8 fftype_uint8; -#else -typedef unsigned char fftype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define FF_STDINT_H +# endif #endif -#ifdef FFTYPE_INT8 -typedef FFTYPE_INT8 fftype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ fftype_int8; +#elif defined FF_STDINT_H +typedef int_least8_t fftype_int8; +#else typedef signed char fftype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ fftype_int16; +#elif defined FF_STDINT_H +typedef int_least16_t fftype_int16; #else -typedef short int fftype_int8; +typedef short fftype_int16; #endif -#ifdef FFTYPE_UINT16 -typedef FFTYPE_UINT16 fftype_uint16; +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ fftype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined FF_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t fftype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char fftype_uint8; #else -typedef unsigned short int fftype_uint16; +typedef short fftype_uint8; #endif -#ifdef FFTYPE_INT16 -typedef FFTYPE_INT16 fftype_int16; +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ fftype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined FF_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t fftype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short fftype_uint16; #else -typedef short int fftype_int16; +typedef int fftype_uint16; +#endif + +#ifndef FFPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define FFPTRDIFF_T __PTRDIFF_TYPE__ +# define FFPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define FFPTRDIFF_T ptrdiff_t +# define FFPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define FFPTRDIFF_T long +# define FFPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef FFSIZE_T @@ -425,55 +567,100 @@ # define FFSIZE_T __SIZE_TYPE__ # elif defined size_t # define FFSIZE_T size_t -# elif ! defined FFSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define FFSIZE_T size_t # else -# define FFSIZE_T unsigned int +# define FFSIZE_T unsigned # endif #endif -#define FFSIZE_MAXIMUM ((FFSIZE_T) -1) +#define FFSIZE_MAXIMUM \ + FF_CAST (FFPTRDIFF_T, \ + (FFPTRDIFF_MAXIMUM < FF_CAST (FFSIZE_T, -1) \ + ? FFPTRDIFF_MAXIMUM \ + : FF_CAST (FFSIZE_T, -1))) + +#define FFSIZEOF(X) FF_CAST (FFPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef fftype_int16 ff_state_t; + +/* State numbers in computations. */ +typedef int ff_state_fast_t; #ifndef FF_ -# if FFENABLE_NLS +# if defined FFENABLE_NLS && FFENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define FF_(msgid) dgettext ("bison-runtime", msgid) +# define FF_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef FF_ -# define FF_(msgid) msgid +# define FF_(Msgid) Msgid +# endif +#endif + + +#ifndef FF_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define FF_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define FF_ATTRIBUTE_PURE +# endif +#endif + +#ifndef FF_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define FF_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define FF_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define FFUSE(e) ((void) (e)) +# define FFUSE(E) ((void) (E)) #else -# define FFUSE(e) /* empty */ +# define FFUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define FFID(n) (n) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -FFID (int ffi) +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about fflval being uninitialized. */ +# define FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define FF_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -static int -FFID (ffi) - int ffi; +# define FF_INITIAL_VALUE(Value) Value #endif -{ - return ffi; -} +#ifndef FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define FF_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef FF_INITIAL_VALUE +# define FF_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if ! defined ffoverflow || FFERROR_VERBOSE +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define FF_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define FF_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef FF_IGNORE_USELESS_CAST_BEGIN +# define FF_IGNORE_USELESS_CAST_BEGIN +# define FF_IGNORE_USELESS_CAST_END +#endif + + +#define FF_ASSERT(E) ((void) (0 && (E))) + +#if !defined ffoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -490,11 +677,11 @@ # define alloca _alloca # else # define FFSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -502,8 +689,8 @@ # endif # ifdef FFSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define FFSTACK_FREE(Ptr) do { /* empty */; } while (FFID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define FFSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef FFSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -517,125 +704,131 @@ # ifndef FFSTACK_ALLOC_MAXIMUM # define FFSTACK_ALLOC_MAXIMUM FFSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined FFMALLOC || defined malloc) \ - && (defined FFFREE || defined free))) + && (defined FFFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef FFMALLOC # define FFMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (FFSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef FFFREE # define FFFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined ffoverflow || FFERROR_VERBOSE */ - +#endif /* !defined ffoverflow */ #if (! defined ffoverflow \ && (! defined __cplusplus \ - || (defined FFSTYPE_IS_TRIVIAL && FFSTYPE_IS_TRIVIAL))) + || (defined FFSTYPE_IS_TRIVIAL && FFSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union ffalloc { - fftype_int16 ffss_alloc; + ff_state_t ffss_alloc; FFSTYPE ffvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define FFSTACK_GAP_MAXIMUM (sizeof (union ffalloc) - 1) +# define FFSTACK_GAP_MAXIMUM (FFSIZEOF (union ffalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define FFSTACK_BYTES(N) \ - ((N) * (sizeof (fftype_int16) + sizeof (FFSTYPE)) \ + ((N) * (FFSIZEOF (ff_state_t) + FFSIZEOF (FFSTYPE)) \ + FFSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef FFCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define FFCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define FFCOPY(To, From, Count) \ - do \ - { \ - FFSIZE_T ffi; \ - for (ffi = 0; ffi < (Count); ffi++) \ - (To)[ffi] = (From)[ffi]; \ - } \ - while (FFID (0)) -# endif -# endif +# define FFCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables FFSIZE and FFSTACKSIZE give the old and new number of elements in the stack, and FFPTR gives the new location of the stack. Advance FFPTR to a properly aligned location for the next stack. */ -# define FFSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - FFSIZE_T ffnewbytes; \ - FFCOPY (&ffptr->Stack_alloc, Stack, ffsize); \ - Stack = &ffptr->Stack_alloc; \ - ffnewbytes = ffstacksize * sizeof (*Stack) + FFSTACK_GAP_MAXIMUM; \ - ffptr += ffnewbytes / sizeof (*ffptr); \ - } \ - while (FFID (0)) +# define FFSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + FFPTRDIFF_T ffnewbytes; \ + FFCOPY (&ffptr->Stack_alloc, Stack, ffsize); \ + Stack = &ffptr->Stack_alloc; \ + ffnewbytes = ffstacksize * FFSIZEOF (*Stack) + FFSTACK_GAP_MAXIMUM; \ + ffptr += ffnewbytes / FFSIZEOF (*ffptr); \ + } \ + while (0) #endif +#if defined FFCOPY_NEEDED && FFCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef FFCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define FFCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, FF_CAST (FFSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define FFCOPY(Dst, Src, Count) \ + do \ + { \ + FFPTRDIFF_T ffi; \ + for (ffi = 0; ffi < (Count); ffi++) \ + (Dst)[ffi] = (Src)[ffi]; \ + } \ + while (0) +# endif +# endif +#endif /* !FFCOPY_NEEDED */ + /* FFFINAL -- State number of the termination state. */ #define FFFINAL 2 /* FFLAST -- Last index in FFTABLE. */ -#define FFLAST 1603 +#define FFLAST 1725 /* FFNTOKENS -- Number of terminals. */ -#define FFNTOKENS 54 +#define FFNTOKENS 56 /* FFNNTS -- Number of nonterminals. */ #define FFNNTS 9 /* FFNRULES -- Number of rules. */ -#define FFNRULES 125 -/* FFNRULES -- Number of states. */ -#define FFNSTATES 290 - -/* FFTRANSLATE(FFLEX) -- Bison symbol number corresponding to FFLEX. */ -#define FFUNDEFTOK 2 -#define FFMAXUTOK 289 - -#define FFTRANSLATE(FFX) \ - ((unsigned int) (FFX) <= FFMAXUTOK ? fftranslate[FFX] : FFUNDEFTOK) - -/* FFTRANSLATE[FFLEX] -- Bison symbol number corresponding to FFLEX. */ -static const fftype_uint8 fftranslate[] = +#define FFNRULES 130 +/* FFNSTATES -- Number of states. */ +#define FFNSTATES 308 + +/* FFMAXUTOK -- Last valid token kind. */ +#define FFMAXUTOK 291 + + +/* FFTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by fflex, with out-of-bounds checking. */ +#define FFTRANSLATE(FFX) \ + (0 <= (FFX) && (FFX) <= FFMAXUTOK \ + ? FF_CAST (ffsymbol_kind_t, fftranslate[FFX]) \ + : FFSYMBOL_FFUNDEF) + +/* FFTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by fflex. */ +static const fftype_int8 fftranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 50, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 37, 41, 2, - 52, 53, 38, 35, 20, 36, 2, 39, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 22, 2, - 2, 21, 2, 25, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 38, 42, 2, + 54, 55, 39, 36, 21, 37, 2, 40, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 23, 2, + 2, 22, 2, 26, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 47, 2, 51, 2, 2, 2, 2, 2, 2, + 2, 49, 2, 53, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 23, 40, 24, 28, 2, 2, 2, + 2, 2, 2, 24, 41, 25, 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -650,724 +843,639 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 26, 27, 29, 30, 31, - 32, 33, 34, 42, 43, 44, 45, 46, 48, 49 + 15, 16, 17, 18, 19, 20, 27, 28, 29, 30, + 32, 33, 34, 35, 43, 44, 45, 46, 47, 48, + 50, 51 }; #if FFDEBUG -/* FFPRHS[FFN] -- Index of the first RHS symbol of rule number FFN in - FFRHS. */ -static const fftype_uint16 ffprhs[] = -{ - 0, 0, 3, 4, 7, 9, 12, 15, 18, 21, - 24, 27, 31, 34, 38, 42, 46, 49, 52, 54, - 56, 61, 65, 69, 73, 78, 85, 94, 105, 118, - 121, 125, 127, 129, 131, 136, 138, 140, 144, 148, - 152, 156, 160, 164, 167, 170, 174, 178, 182, 188, - 194, 200, 203, 207, 211, 215, 219, 225, 231, 241, - 246, 253, 262, 273, 286, 289, 292, 295, 298, 300, - 302, 307, 311, 315, 319, 323, 327, 331, 335, 339, - 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, - 383, 387, 391, 395, 399, 405, 411, 415, 419, 423, - 429, 437, 449, 465, 468, 472, 478, 488, 492, 500, - 510, 515, 522, 531, 542, 555, 558, 562, 564, 566, - 571, 573, 577, 581, 587, 593 -}; - -/* FFRHS -- A `-1'-separated list of the rules' RHS. */ -static const fftype_int8 ffrhs[] = + /* FFRLINE[FFN] -- Source line where rule number FFN was defined. */ +static const fftype_int16 ffrline[] = { - 55, 0, -1, -1, 55, 56, -1, 50, -1, 59, - 50, -1, 60, 50, -1, 62, 50, -1, 61, 50, - -1, 1, 50, -1, 23, 60, -1, 57, 20, 60, - -1, 23, 59, -1, 58, 20, 59, -1, 58, 20, - 60, -1, 57, 20, 59, -1, 58, 24, -1, 57, - 24, -1, 7, -1, 16, -1, 16, 23, 59, 24, - -1, 61, 41, 61, -1, 61, 40, 61, -1, 61, - 35, 61, -1, 61, 47, 59, 51, -1, 61, 47, - 59, 20, 59, 51, -1, 61, 47, 59, 20, 59, - 20, 59, 51, -1, 61, 47, 59, 20, 59, 20, - 59, 20, 59, 51, -1, 61, 47, 59, 20, 59, - 20, 59, 20, 59, 20, 59, 51, -1, 43, 61, - -1, 52, 61, 53, -1, 4, -1, 5, -1, 13, - -1, 13, 23, 59, 24, -1, 17, -1, 18, -1, - 59, 37, 59, -1, 59, 35, 59, -1, 59, 36, - 59, -1, 59, 38, 59, -1, 59, 39, 59, -1, - 59, 42, 59, -1, 35, 59, -1, 36, 59, -1, - 52, 59, 53, -1, 59, 38, 60, -1, 60, 38, - 59, -1, 60, 25, 59, 22, 59, -1, 60, 25, - 60, 22, 59, -1, 60, 25, 59, 22, 60, -1, - 8, 53, -1, 8, 60, 53, -1, 8, 62, 53, - -1, 8, 61, 53, -1, 8, 59, 53, -1, 10, - 62, 20, 62, 53, -1, 8, 59, 20, 59, 53, - -1, 8, 59, 20, 59, 20, 59, 20, 59, 53, - -1, 59, 47, 59, 51, -1, 59, 47, 59, 20, - 59, 51, -1, 59, 47, 59, 20, 59, 20, 59, - 51, -1, 59, 47, 59, 20, 59, 20, 59, 20, - 59, 51, -1, 59, 47, 59, 20, 59, 20, 59, - 20, 59, 20, 59, 51, -1, 45, 59, -1, 45, - 60, -1, 44, 59, -1, 44, 60, -1, 3, -1, - 14, -1, 14, 23, 59, 24, -1, 61, 30, 61, - -1, 61, 29, 61, -1, 61, 33, 61, -1, 61, - 32, 61, -1, 61, 34, 61, -1, 61, 31, 61, - -1, 59, 34, 59, -1, 59, 33, 59, -1, 59, - 31, 59, -1, 59, 32, 59, -1, 59, 28, 59, - -1, 59, 30, 59, -1, 59, 29, 59, -1, 62, - 30, 62, -1, 62, 29, 62, -1, 62, 34, 62, - -1, 62, 31, 62, -1, 62, 33, 62, -1, 62, - 32, 62, -1, 60, 27, 60, -1, 60, 26, 60, - -1, 60, 30, 60, -1, 60, 29, 60, -1, 59, - 21, 59, 22, 59, -1, 60, 25, 60, 22, 60, - -1, 9, 59, 53, -1, 9, 60, 53, -1, 9, - 62, 53, -1, 8, 60, 20, 60, 53, -1, 9, - 59, 20, 59, 20, 59, 53, -1, 9, 59, 20, - 59, 20, 59, 20, 59, 20, 59, 53, -1, 9, - 59, 20, 59, 20, 59, 20, 59, 20, 59, 20, - 59, 20, 59, 53, -1, 11, 53, -1, 11, 6, - 53, -1, 11, 6, 20, 59, 53, -1, 11, 6, - 20, 59, 20, 6, 20, 6, 53, -1, 12, 6, - 53, -1, 12, 6, 20, 59, 20, 59, 53, -1, - 12, 6, 20, 59, 20, 59, 20, 6, 53, -1, - 60, 47, 59, 51, -1, 60, 47, 59, 20, 59, - 51, -1, 60, 47, 59, 20, 59, 20, 59, 51, - -1, 60, 47, 59, 20, 59, 20, 59, 20, 59, - 51, -1, 60, 47, 59, 20, 59, 20, 59, 20, - 59, 20, 59, 51, -1, 43, 60, -1, 52, 60, - 53, -1, 6, -1, 15, -1, 15, 23, 59, 24, - -1, 19, -1, 52, 62, 53, -1, 62, 35, 62, - -1, 60, 25, 62, 22, 62, -1, 8, 62, 20, - 62, 53, -1, 8, 62, 20, 59, 20, 59, 53, - -1 -}; - -/* FFRLINE[FFN] -- source line where rule number FFN was defined. */ -static const fftype_uint16 ffrline[] = -{ - 0, 244, 244, 245, 248, 249, 255, 261, 267, 273, - 276, 278, 291, 293, 306, 317, 331, 335, 339, 343, - 345, 354, 357, 360, 369, 371, 373, 375, 377, 379, - 382, 386, 388, 390, 392, 401, 403, 405, 408, 411, - 414, 417, 420, 423, 425, 427, 429, 433, 437, 456, - 475, 494, 505, 519, 531, 562, 657, 665, 727, 751, - 753, 755, 757, 759, 761, 763, 765, 767, 771, 773, - 775, 784, 787, 790, 793, 796, 799, 802, 805, 808, - 811, 814, 817, 820, 823, 826, 829, 832, 835, 838, - 841, 843, 845, 847, 850, 857, 874, 887, 900, 911, - 927, 951, 979, 1016, 1020, 1024, 1027, 1031, 1035, 1038, - 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1058, 1061, 1063, - 1072, 1074, 1076, 1085, 1104, 1123 + 0, 252, 252, 253, 256, 257, 263, 269, 275, 281, + 284, 286, 299, 301, 314, 325, 339, 343, 347, 351, + 353, 362, 365, 368, 377, 379, 381, 383, 385, 387, + 390, 394, 396, 398, 400, 409, 411, 413, 416, 419, + 422, 425, 428, 437, 446, 455, 458, 460, 462, 464, + 468, 472, 491, 510, 529, 540, 554, 566, 597, 692, + 700, 761, 785, 787, 789, 791, 793, 795, 797, 799, + 801, 805, 807, 809, 818, 821, 824, 827, 830, 833, + 836, 839, 842, 845, 848, 851, 854, 857, 860, 863, + 866, 869, 872, 875, 877, 879, 881, 884, 891, 908, + 921, 934, 945, 961, 985, 1013, 1050, 1054, 1058, 1061, + 1066, 1069, 1074, 1078, 1081, 1085, 1087, 1089, 1091, 1093, + 1095, 1097, 1101, 1104, 1106, 1115, 1117, 1119, 1128, 1147, + 1166 }; #endif -#if FFDEBUG || FFERROR_VERBOSE || FFTOKEN_TABLE +/** Accessing symbol of state STATE. */ +#define FF_ACCESSING_SYMBOL(State) FF_CAST (ffsymbol_kind_t, ffstos[State]) + +#if FFDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + FFSYMBOL. No bounds checking. */ +static const char *ffsymbol_name (ffsymbol_kind_t ffsymbol) FF_ATTRIBUTE_UNUSED; + /* FFTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at FFNTOKENS, nonterminals. */ static const char *const fftname[] = { - "$end", "error", "$undefined", "BOOLEAN", "LONG", "DOUBLE", "STRING", - "BITSTR", "FUNCTION", "BFUNCTION", "IFUNCTION", "GTIFILTER", "REGFILTER", - "COLUMN", "BCOLUMN", "SCOLUMN", "BITCOL", "ROWREF", "NULLREF", - "SNULLREF", "','", "'='", "':'", "'{'", "'}'", "'?'", "OR", "AND", "'~'", - "NE", "EQ", "GTE", "LTE", "LT", "GT", "'+'", "'-'", "'%'", "'*'", "'/'", - "'|'", "'&'", "POWER", "NOT", "FLTCAST", "INTCAST", "UMINUS", "'['", - "DIFF", "ACCUM", "'\\n'", "']'", "'('", "')'", "$accept", "lines", - "line", "bvector", "vector", "expr", "bexpr", "bits", "sexpr", 0 + "\"end of file\"", "error", "\"invalid token\"", "BOOLEAN", "LONG", + "DOUBLE", "STRING", "BITSTR", "FUNCTION", "BFUNCTION", "IFUNCTION", + "GTIFILTER", "GTIOVERLAP", "REGFILTER", "COLUMN", "BCOLUMN", "SCOLUMN", + "BITCOL", "ROWREF", "NULLREF", "SNULLREF", "','", "'='", "':'", "'{'", + "'}'", "'?'", "OR", "AND", "EQ", "NE", "'~'", "GT", "LT", "LTE", "GTE", + "'+'", "'-'", "'%'", "'*'", "'/'", "'|'", "'&'", "XOR", "POWER", "NOT", + "INTCAST", "FLTCAST", "UMINUS", "'['", "ACCUM", "DIFF", "'\\n'", "']'", + "'('", "')'", "$accept", "lines", "line", "bvector", "vector", "expr", + "bexpr", "bits", "sexpr", FF_NULLPTR }; + +static const char * +ffsymbol_name (ffsymbol_kind_t ffsymbol) +{ + return fftname[ffsymbol]; +} #endif -# ifdef FFPRINT -/* FFTOKNUM[FFLEX-NUM] -- Internal token number corresponding to - token FFLEX-NUM. */ -static const fftype_uint16 fftoknum[] = +#ifdef FFPRINT +/* FFTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const fftype_int16 fftoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 44, 61, 58, 123, 125, 63, 275, 276, 126, 277, - 278, 279, 280, 281, 282, 43, 45, 37, 42, 47, - 124, 38, 283, 284, 285, 286, 287, 91, 288, 289, - 10, 93, 40, 41 + 275, 44, 61, 58, 123, 125, 63, 276, 277, 278, + 279, 126, 280, 281, 282, 283, 43, 45, 37, 42, + 47, 124, 38, 284, 285, 286, 287, 288, 289, 91, + 290, 291, 10, 93, 40, 41 }; -# endif +#endif -/* FFR1[FFN] -- Symbol number of symbol that rule FFN derives. */ -static const fftype_uint8 ffr1[] = -{ - 0, 54, 55, 55, 56, 56, 56, 56, 56, 56, - 57, 57, 58, 58, 58, 58, 59, 60, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 62, 62, 62, - 62, 62, 62, 62, 62, 62 -}; +#define FFPACT_NINF (-40) + +#define ffpact_value_is_default(Yyn) \ + ((Yyn) == FFPACT_NINF) + +#define FFTABLE_NINF (-1) -/* FFR2[FFN] -- Number of symbols composing right hand side of rule FFN. */ -static const fftype_uint8 ffr2[] = +#define fftable_value_is_error(Yyn) \ + 0 + + /* FFPACT[STATE-NUM] -- Index in FFTABLE of the portion describing + STATE-NUM. */ +static const fftype_int16 ffpact[] = { - 0, 2, 0, 2, 1, 2, 2, 2, 2, 2, - 2, 3, 2, 3, 3, 3, 2, 2, 1, 1, - 4, 3, 3, 3, 4, 6, 8, 10, 12, 2, - 3, 1, 1, 1, 4, 1, 1, 3, 3, 3, - 3, 3, 3, 2, 2, 3, 3, 3, 5, 5, - 5, 2, 3, 3, 3, 3, 5, 5, 9, 4, - 6, 8, 10, 12, 2, 2, 2, 2, 1, 1, - 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 5, 3, 3, 3, 5, - 7, 11, 15, 2, 3, 5, 9, 3, 7, 9, - 4, 6, 8, 10, 12, 2, 3, 1, 1, 4, - 1, 3, 3, 5, 5, 7 + -40, 337, -40, -39, -40, -40, -40, -40, -40, 389, + 442, 442, -5, 21, 29, 17, 25, 44, 45, -40, + -40, -40, 442, 442, 442, 442, 442, 442, -40, 442, + -40, -15, 19, 1159, 443, 1584, 1605, -40, -40, 276, + -10, 330, 133, 469, 144, 1647, 248, 1526, 209, 1689, + -19, -40, 49, -18, 442, 442, 442, 442, 1526, 209, + 294, -6, -6, 24, 26, -6, 24, -6, 24, 671, + 1186, 382, 1544, 442, -40, 442, -40, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, -40, 442, 442, 442, 442, + 442, 442, 442, -40, -3, -3, -3, -3, -3, -3, + -3, -3, -3, 442, -40, 442, 442, 442, 442, 442, + 442, 442, -40, 442, -40, 442, -40, -40, 442, -40, + 442, -40, -40, -40, 442, 442, -40, 442, 442, -40, + 1388, 1411, 1434, 1457, -40, -40, -40, -40, 1526, 209, + 1526, 209, 1480, 1665, 1665, 1665, 22, 22, 22, 22, + 203, 203, 203, 148, 24, 148, -37, -37, -37, -37, + 784, 1503, 1558, 1619, 18, 69, -34, -34, 148, 809, + -3, -3, 111, 111, 111, 111, 111, 111, -11, 26, + 26, 834, 406, 406, 58, 58, 58, 58, -40, 498, + 1191, 1221, 1560, 1245, 1576, 527, 1269, 1293, -40, -40, + -40, -40, 442, 442, -40, 442, 442, 442, 442, -40, + 26, 68, 442, -40, 442, -40, -40, 442, -40, 442, + -40, 90, -40, 442, 442, 1629, 859, 1629, 209, 1629, + 209, 294, 884, 909, 1317, 699, 556, 76, 585, 614, + 442, -40, 442, -40, 442, -40, 442, -40, 442, -40, + 96, 97, -40, 99, -40, 934, 959, 984, 727, 1341, + 51, 92, 56, 442, -40, 442, -40, 442, -40, -40, + 442, -40, 108, -40, 1009, 1034, 1059, 643, 65, 442, + -40, 442, -40, 442, -40, 442, -40, -40, 1084, 1109, + 1134, 1365, -40, -40, -40, 442, 755, -40 }; -/* FFDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when FFTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* FFDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when FFTABLE does not specify something else to do. Zero + means the default is an error. */ static const fftype_uint8 ffdefact[] = { - 2, 0, 1, 0, 68, 31, 32, 117, 18, 0, - 0, 0, 0, 0, 33, 69, 118, 19, 35, 36, - 120, 0, 0, 0, 0, 0, 0, 4, 0, 3, - 0, 0, 0, 0, 0, 0, 9, 51, 0, 0, + 2, 0, 1, 0, 71, 31, 32, 122, 18, 0, + 0, 0, 0, 0, 0, 33, 72, 123, 19, 35, + 36, 125, 0, 0, 0, 0, 0, 0, 4, 0, + 3, 0, 0, 0, 0, 0, 0, 9, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 0, 12, 10, 0, 43, - 44, 115, 29, 66, 67, 64, 65, 0, 0, 0, - 0, 0, 17, 0, 16, 0, 0, 0, 0, 0, + 0, 106, 0, 0, 0, 0, 0, 0, 12, 10, + 0, 46, 47, 120, 29, 67, 68, 69, 70, 0, + 0, 0, 0, 0, 17, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 55, - 0, 52, 54, 0, 53, 0, 96, 97, 98, 0, - 0, 104, 0, 107, 0, 0, 0, 0, 45, 116, - 30, 121, 15, 11, 13, 14, 0, 81, 83, 82, - 79, 80, 78, 77, 38, 39, 37, 40, 46, 41, - 42, 0, 0, 0, 0, 91, 90, 93, 92, 47, - 0, 0, 0, 72, 71, 76, 74, 73, 75, 23, - 22, 21, 0, 85, 84, 87, 89, 88, 86, 122, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 70, - 119, 20, 0, 0, 59, 0, 0, 0, 0, 110, - 29, 0, 0, 24, 0, 57, 99, 0, 124, 0, - 56, 0, 105, 0, 94, 0, 48, 50, 49, 95, - 123, 0, 0, 0, 0, 0, 0, 0, 0, 60, - 0, 111, 0, 25, 0, 125, 0, 100, 0, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 112, 0, 26, 58, 0, 106, 109, 0, 0, - 0, 0, 0, 62, 0, 113, 0, 27, 0, 101, - 0, 0, 0, 0, 63, 114, 28, 0, 0, 102 + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 7, 0, 58, 0, 55, 57, 0, 56, + 0, 99, 100, 101, 0, 0, 107, 0, 0, 112, + 0, 0, 0, 0, 48, 121, 30, 126, 15, 11, + 13, 14, 0, 85, 86, 84, 80, 81, 83, 82, + 38, 39, 37, 40, 49, 41, 43, 42, 44, 45, + 0, 0, 0, 0, 94, 93, 95, 96, 50, 0, + 0, 0, 74, 75, 78, 76, 77, 79, 23, 22, + 21, 0, 87, 88, 89, 91, 92, 90, 127, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 73, + 124, 20, 0, 0, 62, 0, 0, 0, 0, 115, + 29, 0, 0, 24, 0, 60, 102, 0, 129, 0, + 59, 0, 108, 0, 0, 97, 0, 51, 53, 52, + 98, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 63, 0, 116, 0, 25, 0, 130, 0, 103, + 0, 0, 110, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 117, 0, 26, 61, + 0, 109, 0, 114, 0, 0, 0, 0, 0, 0, + 65, 0, 118, 0, 27, 0, 104, 111, 0, 0, + 0, 0, 66, 119, 28, 0, 0, 105 }; -/* FFDEFGOTO[NTERM-NUM]. */ -static const fftype_int8 ffdefgoto[] = -{ - -1, 1, 29, 30, 31, 46, 47, 44, 58 -}; - -/* FFPACT[STATE-NUM] -- Index in FFTABLE of the portion describing - STATE-NUM. */ -#define FFPACT_NINF -46 -static const fftype_int16 ffpact[] = + /* FFPGOTO[NTERM-NUM]. */ +static const fftype_int16 ffpgoto[] = { - -46, 297, -46, -45, -46, -46, -46, -46, -46, 347, - 398, 398, -5, 0, -4, 5, 19, 23, -46, -46, - -46, 398, 398, 398, 398, 398, 398, -46, 398, -46, - 6, 17, 1088, 296, 1468, 1490, -46, -46, 424, 9, - 1374, 135, 452, 168, 1518, 344, 1355, 1449, 1555, -10, - -46, -9, 398, 398, 398, 398, 1355, 1449, 250, -2, - -2, 10, 11, -2, 10, -2, 10, 619, 240, 1399, - 1424, 398, -46, 398, -46, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - -46, 398, 398, 398, 398, 398, 398, 398, -46, -3, - -3, -3, -3, -3, -3, -3, -3, -3, 398, -46, - 398, 398, 398, 398, 398, 398, 398, -46, 398, -46, - 398, -46, -46, 398, -46, 398, -46, -46, -46, 398, - 398, -46, 398, -46, 1231, 1251, 1271, 1291, -46, -46, - -46, -46, 1355, 1449, 1355, 1449, 1313, 1535, 1535, 1535, - 1556, 1556, 1556, 1556, 55, 55, 55, -40, 10, -40, - -40, 728, 1335, 400, 201, 74, 111, -35, -35, -40, - 752, -3, -3, 24, 24, 24, 24, 24, 24, 79, - 11, 11, 776, -17, -17, 28, 28, 28, 28, -46, - 480, 342, 1111, 1431, 1131, 1438, 508, 1151, -46, -46, - -46, -46, 398, 398, -46, 398, 398, 398, 398, -46, - 11, 20, 398, -46, 398, -46, -46, 398, -46, 398, - -46, 60, -46, 398, 1499, 800, 1499, 1449, 1499, 1449, - 250, 824, 848, 1171, 646, 536, 48, 564, 398, -46, - 398, -46, 398, -46, 398, -46, 398, -46, 63, 83, - -46, 872, 896, 920, 673, 1191, 39, 45, 398, -46, - 398, -46, 398, -46, -46, 398, -46, -46, 944, 968, - 992, 592, 398, -46, 398, -46, 398, -46, 398, -46, - 1016, 1040, 1064, 1211, -46, -46, -46, 398, 700, -46 + -40, -40, -40, -40, -40, -1, 106, 155, 23 }; -/* FFPGOTO[NTERM-NUM]. */ -static const fftype_int16 ffpgoto[] = + /* FFDEFGOTO[NTERM-NUM]. */ +static const fftype_int8 ffdefgoto[] = { - -46, -46, -46, -46, -46, -1, 90, 147, 22 + -1, 1, 30, 31, 32, 47, 48, 45, 60 }; -/* FFTABLE[FFPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what FFDEFACT says. - If FFTABLE_NINF, syntax error. */ -#define FFTABLE_NINF -1 -static const fftype_uint16 fftable[] = -{ - 32, 49, 88, 96, 8, 36, 51, 89, 38, 42, - 130, 132, 97, 17, 112, 113, 114, 115, 116, 52, - 56, 59, 60, 35, 63, 65, 71, 67, 53, 120, - 72, 41, 45, 48, 91, 92, 93, 73, 94, 95, - 171, 74, 54, 131, 133, 89, 55, 96, 50, 172, - 70, 134, 135, 136, 137, 105, 97, 97, 108, 105, - 106, 107, 121, 116, 106, 107, 236, 108, 248, 256, - 142, 108, 144, 140, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 159, 160, 161, 257, - 162, 33, 266, 86, 87, 169, 170, 88, 267, 39, - 43, 93, 89, 94, 95, 0, 0, 182, 0, 0, - 0, 57, 96, 164, 61, 64, 66, 190, 68, 106, - 107, 97, 192, 0, 194, 0, 108, 0, 0, 196, - 0, 197, 183, 184, 185, 186, 187, 188, 189, 0, - 94, 95, 0, 0, 0, 193, 0, 0, 34, 96, - 0, 195, 0, 0, 0, 123, 40, 0, 97, 0, - 0, 143, 0, 145, 110, 111, 112, 113, 114, 115, - 116, 62, 0, 0, 0, 69, 158, 0, 0, 0, - 0, 163, 165, 166, 167, 168, 0, 0, 124, 0, - 0, 0, 0, 91, 92, 93, 0, 94, 95, 0, - 0, 224, 225, 0, 226, 228, 96, 231, 0, 0, - 191, 232, 0, 233, 0, 97, 234, 0, 235, 0, - 0, 127, 237, 207, 0, 0, 0, 0, 0, 230, - 110, 111, 112, 113, 114, 115, 116, 251, 0, 252, - 0, 253, 0, 254, 0, 255, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 0, 0, 268, 0, 269, - 0, 270, 0, 0, 271, 91, 92, 93, 0, 94, - 95, 280, 0, 281, 0, 282, 0, 283, 96, 110, - 111, 112, 113, 114, 115, 116, 288, 97, 0, 0, - 0, 0, 0, 139, 0, 227, 229, 2, 3, 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 0, 210, 211, - 21, 91, 92, 93, 0, 94, 95, 0, 0, 0, - 0, 0, 22, 23, 96, 0, 0, 0, 0, 0, - 24, 25, 26, 97, 0, 0, 98, 27, 0, 28, + /* FFTABLE[FFPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If FFTABLE_NINF, syntax error. */ +static const fftype_int16 fftable[] = +{ + 33, 50, 135, 138, 8, 101, 73, 93, 39, 43, + 74, 125, 94, 37, 18, 102, 96, 97, 98, 99, + 100, 58, 61, 62, 36, 65, 67, 52, 69, 101, + 111, 112, 42, 46, 49, 53, 136, 139, 113, 102, + 75, 54, 180, 94, 76, 126, 98, 99, 100, 55, + 51, 181, 72, 140, 141, 142, 143, 101, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 102, 56, 57, + 137, 94, 148, 102, 150, 113, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, + 167, 168, 169, 170, 121, 171, 247, 260, 99, 100, + 178, 179, 270, 271, 110, 272, 281, 34, 101, 111, + 112, 283, 191, 282, 288, 40, 44, 113, 102, 173, + 297, 0, 199, 146, 0, 0, 0, 201, 59, 203, + 0, 63, 66, 68, 205, 70, 206, 207, 192, 193, + 194, 195, 196, 197, 198, 0, 0, 110, 0, 0, + 0, 202, 111, 112, 128, 0, 35, 204, 0, 0, + 113, 0, 115, 116, 41, 117, 118, 119, 120, 121, + 96, 97, 98, 99, 100, 0, 0, 0, 0, 149, + 64, 151, 0, 101, 71, 0, 0, 0, 129, 90, + 91, 92, 93, 102, 164, 0, 0, 94, 0, 132, + 0, 0, 172, 174, 175, 176, 177, 0, 0, 0, + 0, 235, 236, 0, 237, 239, 0, 242, 0, 0, + 0, 243, 0, 244, 0, 0, 245, 0, 246, 0, + 0, 200, 248, 249, 0, 96, 97, 98, 99, 100, + 241, 0, 88, 89, 90, 91, 92, 93, 101, 265, + 0, 266, 94, 267, 0, 268, 0, 269, 102, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 0, 0, + 0, 0, 284, 0, 285, 0, 286, 115, 116, 287, + 117, 118, 119, 120, 121, 0, 0, 0, 298, 0, + 299, 0, 300, 0, 301, 0, 0, 123, 77, 0, + 0, 0, 0, 133, 306, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 238, 240, 115, 116, 94, 117, 118, 119, 120, + 121, 124, 0, 0, 0, 220, 221, 2, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 91, 92, 93, - 21, 94, 95, 110, 111, 112, 113, 114, 115, 116, - 96, 0, 22, 23, 0, 0, 0, 0, 0, 97, - 24, 25, 26, 0, 0, 216, 0, 128, 0, 28, - 37, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 0, 0, - 0, 21, 206, 0, 0, 91, 92, 93, 0, 94, - 95, 0, 0, 22, 23, 0, 0, 0, 96, 0, - 0, 24, 25, 26, 118, 75, 0, 97, 0, 0, - 28, 0, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 0, 0, 88, 0, 0, 0, - 0, 89, 125, 75, 0, 0, 0, 119, 0, 0, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 0, 0, 88, 0, 0, 0, 0, 89, - 214, 75, 0, 0, 0, 126, 0, 0, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 0, 0, 88, 0, 0, 0, 0, 89, 221, 75, - 0, 0, 0, 215, 0, 0, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, - 88, 0, 0, 0, 0, 89, 246, 75, 0, 0, - 0, 222, 0, 0, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 0, 0, 88, 0, - 0, 0, 0, 89, 249, 75, 0, 0, 0, 247, - 0, 0, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 0, 0, 88, 0, 0, 0, - 0, 89, 278, 75, 0, 0, 0, 250, 0, 0, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 0, 0, 88, 0, 0, 0, 0, 89, - 75, 0, 0, 0, 0, 279, 0, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 0, - 0, 88, 0, 0, 0, 0, 89, 75, 0, 0, - 0, 0, 138, 0, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 0, 0, 88, 0, - 0, 0, 0, 89, 75, 0, 0, 0, 0, 245, - 0, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 0, 0, 88, 0, 0, 0, 0, - 89, 75, 0, 0, 0, 0, 264, 0, 76, 77, + 14, 15, 16, 17, 18, 19, 20, 21, 0, 104, + 105, 22, 106, 107, 108, 109, 110, 0, 0, 0, + 0, 111, 112, 23, 24, 0, 0, 0, 0, 113, + 0, 0, 25, 26, 27, 127, 0, 0, 0, 28, + 0, 29, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 0, 104, 105, 22, 106, 107, 108, 109, 110, 0, + 0, 0, 0, 111, 112, 23, 24, 0, 0, 0, + 0, 113, 0, 0, 25, 26, 27, 146, 117, 118, + 119, 120, 121, 29, 38, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 0, 0, 0, 22, 0, 0, 96, + 97, 98, 99, 100, 0, 0, 0, 0, 23, 24, + 0, 0, 101, 0, 0, 0, 0, 25, 26, 27, + 130, 77, 102, 0, 0, 103, 29, 0, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 0, 0, 0, 94, 224, + 77, 0, 0, 0, 131, 0, 0, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 0, 0, 0, 0, 94, 231, 77, + 0, 0, 0, 225, 0, 0, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 0, 0, 0, 0, 94, 258, 77, 0, + 0, 0, 232, 0, 0, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 0, 0, 0, 0, 94, 261, 77, 0, 0, + 0, 259, 0, 0, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 0, 0, 0, 0, 94, 263, 77, 0, 0, 0, + 262, 0, 0, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 0, 0, 0, 94, 295, 77, 0, 0, 0, 264, + 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 0, 0, + 0, 0, 94, 77, 0, 0, 0, 0, 296, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 0, 0, 88, 0, 0, 0, 0, 89, 203, 75, - 0, 0, 0, 289, 0, 0, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, - 88, 0, 208, 75, 0, 89, 0, 0, 0, 204, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 0, 0, 88, 0, 212, 75, 0, 89, - 0, 0, 0, 209, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 0, 0, 88, 0, - 238, 75, 0, 89, 0, 0, 0, 213, 76, 77, + 88, 89, 90, 91, 92, 93, 0, 0, 0, 0, + 94, 77, 0, 0, 0, 0, 144, 0, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 0, 0, 0, 94, 77, + 0, 0, 0, 0, 257, 0, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 0, 0, 0, 0, 94, 77, 0, 0, + 0, 0, 279, 0, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 0, 0, 0, 0, 94, 213, 77, 0, 0, 0, + 307, 0, 0, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 218, 77, 0, 94, 0, 0, 0, 214, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 222, 77, 0, 94, 0, + 0, 0, 219, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 250, 77, 0, 94, 0, 0, 0, 223, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 252, 77, 0, 94, 0, + 0, 0, 251, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 254, 77, 0, 94, 0, 0, 0, 253, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 273, 77, 0, 94, 0, + 0, 0, 255, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 275, 77, 0, 94, 0, 0, 0, 274, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 277, 77, 0, 94, 0, + 0, 0, 276, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 289, 77, 0, 94, 0, 0, 0, 278, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 291, 77, 0, 94, 0, + 0, 0, 290, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 293, 77, 0, 94, 0, 0, 0, 292, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 0, 77, 0, 94, 0, + 0, 0, 294, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 0, 77, 0, 94, 0, 0, 0, 302, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 0, 77, 0, 94, 0, + 0, 0, 303, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 0, + 0, 77, 0, 94, 0, 0, 0, 304, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 0, 0, 0, 94, 0, + 0, 95, 96, 97, 98, 99, 100, 96, 97, 98, + 99, 100, 0, 0, 0, 101, 0, 0, 0, 0, + 101, 0, 0, 0, 0, 102, 0, 0, 0, 0, + 102, 145, 227, 77, 0, 0, 226, 0, 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 0, 0, 88, 0, 240, 75, 0, 89, 0, 0, - 0, 239, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 0, 0, 88, 0, 242, 75, - 0, 89, 0, 0, 0, 241, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, - 88, 0, 258, 75, 0, 89, 0, 0, 0, 243, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 0, 0, 88, 0, 260, 75, 0, 89, - 0, 0, 0, 259, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 0, 0, 88, 0, - 262, 75, 0, 89, 0, 0, 0, 261, 76, 77, + 88, 89, 90, 91, 92, 93, 229, 77, 0, 0, + 94, 0, 0, 0, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 233, 77, 0, 0, 94, 0, 0, 0, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 234, 77, 0, 0, 94, 0, + 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 256, 77, + 0, 0, 94, 0, 0, 0, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 280, 77, 0, 0, 94, 0, 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 0, 0, 88, 0, 272, 75, 0, 89, 0, 0, - 0, 263, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 0, 0, 88, 0, 274, 75, - 0, 89, 0, 0, 0, 273, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, - 88, 0, 276, 75, 0, 89, 0, 0, 0, 275, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 0, 0, 88, 0, 0, 75, 0, 89, - 0, 0, 0, 277, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 0, 0, 88, 0, - 0, 75, 0, 89, 0, 0, 0, 284, 76, 77, + 88, 89, 90, 91, 92, 93, 305, 77, 0, 0, + 94, 0, 0, 0, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 77, 0, 0, 208, 94, 0, 0, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 77, 0, 0, 209, 94, 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 0, 0, 88, 0, 0, 75, 0, 89, 0, 0, - 0, 285, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 0, 0, 88, 0, 0, 75, - 0, 89, 0, 0, 0, 286, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, - 88, 217, 75, 0, 0, 89, 0, 0, 90, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 219, 75, 88, 0, 0, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 223, 75, 88, 0, 0, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 244, 75, 88, 0, 0, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 265, 75, 88, 0, 0, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 287, 75, 88, 0, 0, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 0, 75, 88, 0, 198, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 0, 75, 88, 0, 199, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 0, 75, 88, 0, 200, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 0, 75, 88, 0, 201, 0, 0, 89, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 0, 0, 88, 75, 202, 0, 0, 89, 0, - 0, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 0, 0, 88, 75, 205, 0, 0, - 89, 0, 0, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 0, 75, 88, 0, 0, - 0, 0, 89, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 0, 0, 88, 0, 0, - 0, 0, 89, 99, 100, 101, 102, 103, 104, 105, - 0, 0, 0, 0, 106, 107, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 0, 0, 122, 99, 100, - 101, 102, 103, 104, 105, 0, 0, 0, 0, 106, - 107, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 0, 0, 140, 110, 111, 112, 113, 114, 115, 116, - 110, 111, 112, 113, 114, 115, 116, 110, 111, 112, - 113, 114, 115, 116, 91, 92, 93, 141, 94, 95, - 0, 0, 0, 0, 218, 0, 0, 96, 0, 0, - 0, 220, 0, 0, 0, 0, 97, 99, 100, 101, - 102, 103, 104, 105, 0, 0, 0, 0, 106, 107, - 0, 0, 0, 0, 0, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 0, - 117, 88, 0, 0, 0, 0, 89, 99, 100, 101, - 102, 103, 104, 105, 0, 0, 0, 0, 106, 107, - 0, 0, 0, 0, 0, 108, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 129, 0, 88, 0, 0, - 0, 0, 89, 0, 110, 111, 112, 113, 114, 115, - 116, 83, 84, 85, 86, 87, 0, 0, 88, 0, - 0, 0, 0, 89 + 88, 89, 90, 91, 92, 93, 77, 0, 0, 210, + 94, 0, 0, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 77, + 0, 0, 211, 94, 0, 0, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 77, 212, 0, 0, 94, 0, 0, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 77, 215, 0, 0, 94, + 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 77, 0, + 0, 0, 94, 0, 0, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 0, 0, 115, 116, 94, 117, 118, 119, 120, + 121, 216, 0, 0, 96, 97, 98, 99, 100, 115, + 116, 0, 117, 118, 119, 120, 121, 101, 0, 147, + 0, 0, 0, 0, 0, 115, 116, 102, 117, 118, + 119, 120, 121, 104, 105, 228, 106, 107, 108, 109, + 110, 0, 0, 0, 0, 111, 112, 0, 0, 0, + 0, 230, 0, 113, 115, 116, 114, 117, 118, 119, + 120, 121, 217, 0, 0, 0, 0, 0, 115, 116, + 0, 117, 118, 119, 120, 121, 0, 122, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 0, 0, 104, 105, 94, 106, + 107, 108, 109, 110, 0, 0, 0, 0, 111, 112, + 0, 0, 0, 0, 0, 0, 113, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 134, 0, 0, 0, 94, 0, 0, 0, 115, 116, + 0, 117, 118, 119, 120, 121 }; static const fftype_int16 ffcheck[] = { - 1, 6, 42, 38, 7, 50, 6, 47, 9, 10, - 20, 20, 47, 16, 31, 32, 33, 34, 35, 23, - 21, 22, 23, 1, 25, 26, 20, 28, 23, 20, - 24, 9, 10, 11, 25, 26, 27, 20, 29, 30, - 43, 24, 23, 53, 53, 47, 23, 38, 53, 52, - 28, 52, 53, 54, 55, 35, 47, 47, 47, 35, - 40, 41, 53, 35, 40, 41, 6, 47, 20, 6, - 71, 47, 73, 53, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 6, - 91, 1, 53, 38, 39, 96, 97, 42, 53, 9, - 10, 27, 47, 29, 30, -1, -1, 108, -1, -1, - -1, 21, 38, 91, 24, 25, 26, 118, 28, 40, - 41, 47, 123, -1, 125, -1, 47, -1, -1, 130, - -1, 132, 110, 111, 112, 113, 114, 115, 116, -1, - 29, 30, -1, -1, -1, 123, -1, -1, 1, 38, - -1, 129, -1, -1, -1, 20, 9, -1, 47, -1, - -1, 71, -1, 73, 29, 30, 31, 32, 33, 34, - 35, 24, -1, -1, -1, 28, 86, -1, -1, -1, - -1, 91, 92, 93, 94, 95, -1, -1, 53, -1, - -1, -1, -1, 25, 26, 27, -1, 29, 30, -1, - -1, 202, 203, -1, 205, 206, 38, 208, -1, -1, - 120, 212, -1, 214, -1, 47, 217, -1, 219, -1, - -1, 53, 223, 22, -1, -1, -1, -1, -1, 207, - 29, 30, 31, 32, 33, 34, 35, 238, -1, 240, - -1, 242, -1, 244, -1, 246, 99, 100, 101, 102, - 103, 104, 105, 106, 107, -1, -1, 258, -1, 260, - -1, 262, -1, -1, 265, 25, 26, 27, -1, 29, - 30, 272, -1, 274, -1, 276, -1, 278, 38, 29, - 30, 31, 32, 33, 34, 35, 287, 47, -1, -1, - -1, -1, -1, 53, -1, 205, 206, 0, 1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, -1, 171, 172, - 23, 25, 26, 27, -1, 29, 30, -1, -1, -1, - -1, -1, 35, 36, 38, -1, -1, -1, -1, -1, - 43, 44, 45, 47, -1, -1, 50, 50, -1, 52, + 1, 6, 21, 21, 7, 39, 21, 44, 9, 10, + 25, 21, 49, 52, 17, 49, 26, 27, 28, 29, + 30, 22, 23, 24, 1, 26, 27, 6, 29, 39, + 41, 42, 9, 10, 11, 6, 55, 55, 49, 49, + 21, 24, 45, 49, 25, 55, 28, 29, 30, 24, + 55, 54, 29, 54, 55, 56, 57, 39, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 49, 24, 24, + 21, 49, 73, 49, 75, 49, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 36, 96, 6, 21, 29, 30, + 101, 102, 6, 6, 36, 6, 55, 1, 39, 41, + 42, 55, 113, 21, 6, 9, 10, 49, 49, 96, + 55, -1, 123, 55, -1, -1, -1, 128, 22, 130, + -1, 25, 26, 27, 135, 29, 137, 138, 115, 116, + 117, 118, 119, 120, 121, -1, -1, 36, -1, -1, + -1, 128, 41, 42, 21, -1, 1, 134, -1, -1, + 49, -1, 29, 30, 9, 32, 33, 34, 35, 36, + 26, 27, 28, 29, 30, -1, -1, -1, -1, 73, + 25, 75, -1, 39, 29, -1, -1, -1, 55, 41, + 42, 43, 44, 49, 88, -1, -1, 49, -1, 55, + -1, -1, 96, 97, 98, 99, 100, -1, -1, -1, + -1, 212, 213, -1, 215, 216, -1, 218, -1, -1, + -1, 222, -1, 224, -1, -1, 227, -1, 229, -1, + -1, 125, 233, 234, -1, 26, 27, 28, 29, 30, + 217, -1, 39, 40, 41, 42, 43, 44, 39, 250, + -1, 252, 49, 254, -1, 256, -1, 258, 49, 104, + 105, 106, 107, 108, 109, 110, 111, 112, -1, -1, + -1, -1, 273, -1, 275, -1, 277, 29, 30, 280, + 32, 33, 34, 35, 36, -1, -1, -1, 289, -1, + 291, -1, 293, -1, 295, -1, -1, 21, 22, -1, + -1, -1, -1, 55, 305, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 215, 216, 29, 30, 49, 32, 33, 34, 35, + 36, 55, -1, -1, -1, 180, 181, 0, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 25, 26, 27, - 23, 29, 30, 29, 30, 31, 32, 33, 34, 35, - 38, -1, 35, 36, -1, -1, -1, -1, -1, 47, - 43, 44, 45, -1, -1, 53, -1, 53, -1, 52, - 53, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, -1, -1, - -1, 23, 22, -1, -1, 25, 26, 27, -1, 29, - 30, -1, -1, 35, 36, -1, -1, -1, 38, -1, - -1, 43, 44, 45, 20, 21, -1, 47, -1, -1, - 52, -1, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, 42, -1, -1, -1, - -1, 47, 20, 21, -1, -1, -1, 53, -1, -1, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, 42, -1, -1, -1, -1, 47, - 20, 21, -1, -1, -1, 53, -1, -1, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, 42, -1, -1, -1, -1, 47, 20, 21, - -1, -1, -1, 53, -1, -1, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - 42, -1, -1, -1, -1, 47, 20, 21, -1, -1, - -1, 53, -1, -1, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, 42, -1, - -1, -1, -1, 47, 20, 21, -1, -1, -1, 53, - -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, 42, -1, -1, -1, - -1, 47, 20, 21, -1, -1, -1, 53, -1, -1, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, 42, -1, -1, -1, -1, 47, - 21, -1, -1, -1, -1, 53, -1, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, 42, -1, -1, -1, -1, 47, 21, -1, -1, - -1, -1, 53, -1, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, 42, -1, - -1, -1, -1, 47, 21, -1, -1, -1, -1, 53, - -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, 42, -1, -1, -1, -1, - 47, 21, -1, -1, -1, -1, 53, -1, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, 42, -1, -1, -1, -1, 47, 20, 21, - -1, -1, -1, 53, -1, -1, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - 42, -1, 20, 21, -1, 47, -1, -1, -1, 51, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, 42, -1, 20, 21, -1, 47, - -1, -1, -1, 51, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, 42, -1, - 20, 21, -1, 47, -1, -1, -1, 51, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, 42, -1, 20, 21, -1, 47, -1, -1, - -1, 51, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, 42, -1, 20, 21, - -1, 47, -1, -1, -1, 51, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - 42, -1, 20, 21, -1, 47, -1, -1, -1, 51, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, 42, -1, 20, 21, -1, 47, - -1, -1, -1, 51, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, 42, -1, - 20, 21, -1, 47, -1, -1, -1, 51, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, 42, -1, 20, 21, -1, 47, -1, -1, - -1, 51, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, 42, -1, 20, 21, - -1, 47, -1, -1, -1, 51, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - 42, -1, 20, 21, -1, 47, -1, -1, -1, 51, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, 42, -1, -1, 21, -1, 47, - -1, -1, -1, 51, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, 42, -1, - -1, 21, -1, 47, -1, -1, -1, 51, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, 42, -1, -1, 21, -1, 47, -1, -1, - -1, 51, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, 42, -1, -1, 21, - -1, 47, -1, -1, -1, 51, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - 42, 20, 21, -1, -1, 47, -1, -1, 50, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 20, 21, 42, -1, -1, -1, -1, 47, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 20, 21, 42, -1, -1, -1, -1, 47, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 20, 21, 42, -1, -1, -1, -1, 47, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 20, 21, 42, -1, -1, -1, -1, 47, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 20, 21, 42, -1, -1, -1, -1, 47, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, 21, 42, -1, 24, -1, -1, 47, 28, + 13, 14, 15, 16, 17, 18, 19, 20, -1, 29, + 30, 24, 32, 33, 34, 35, 36, -1, -1, -1, + -1, 41, 42, 36, 37, -1, -1, -1, -1, 49, + -1, -1, 45, 46, 47, 55, -1, -1, -1, 52, + -1, 54, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + -1, 29, 30, 24, 32, 33, 34, 35, 36, -1, + -1, -1, -1, 41, 42, 36, 37, -1, -1, -1, + -1, 49, -1, -1, 45, 46, 47, 55, 32, 33, + 34, 35, 36, 54, 55, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, -1, 24, -1, -1, 26, + 27, 28, 29, 30, -1, -1, -1, -1, 36, 37, + -1, -1, 39, -1, -1, -1, -1, 45, 46, 47, + 21, 22, 49, -1, -1, 52, 54, -1, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, -1, -1, -1, 49, 21, + 22, -1, -1, -1, 55, -1, -1, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, -1, -1, -1, -1, 49, 21, 22, + -1, -1, -1, 55, -1, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, -1, -1, -1, -1, 49, 21, 22, -1, + -1, -1, 55, -1, -1, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, -1, -1, -1, -1, 49, 21, 22, -1, -1, + -1, 55, -1, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + -1, -1, -1, -1, 49, 21, 22, -1, -1, -1, + 55, -1, -1, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + -1, -1, -1, 49, 21, 22, -1, -1, -1, 55, + -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, -1, -1, + -1, -1, 49, 22, -1, -1, -1, -1, 55, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, 21, 42, -1, 24, -1, -1, 47, 28, + 39, 40, 41, 42, 43, 44, -1, -1, -1, -1, + 49, 22, -1, -1, -1, -1, 55, -1, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, -1, -1, -1, 49, 22, + -1, -1, -1, -1, 55, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, -1, -1, -1, -1, 49, 22, -1, -1, + -1, -1, 55, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + -1, -1, -1, -1, 49, 21, 22, -1, -1, -1, + 55, -1, -1, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + 21, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, 21, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + 21, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, 21, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + 21, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, 21, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + 21, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, 21, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + 21, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, 21, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + 21, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, -1, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + -1, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, -1, 22, -1, 49, -1, + -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, + -1, 22, -1, 49, -1, -1, -1, 53, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, -1, -1, -1, 49, -1, + -1, 52, 26, 27, 28, 29, 30, 26, 27, 28, + 29, 30, -1, -1, -1, 39, -1, -1, -1, -1, + 39, -1, -1, -1, -1, 49, -1, -1, -1, -1, + 49, 55, 21, 22, -1, -1, 55, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, 21, 42, -1, 24, -1, -1, 47, 28, + 39, 40, 41, 42, 43, 44, 21, 22, -1, -1, + 49, -1, -1, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 21, 22, -1, -1, 49, -1, -1, -1, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 21, 22, -1, -1, 49, -1, + -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 21, 22, + -1, -1, 49, -1, -1, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 21, 22, -1, -1, 49, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, 21, 42, -1, 24, -1, -1, 47, 28, + 39, 40, 41, 42, 43, 44, 21, 22, -1, -1, + 49, -1, -1, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 22, -1, -1, 25, 49, -1, -1, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 22, -1, -1, 25, 49, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, -1, 42, 21, 22, -1, -1, 47, -1, - -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, 42, 21, 22, -1, -1, - 47, -1, -1, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, -1, 21, 42, -1, -1, - -1, -1, 47, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, -1, -1, 42, -1, -1, - -1, -1, 47, 29, 30, 31, 32, 33, 34, 35, - -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, - -1, 47, -1, -1, -1, -1, -1, 53, 29, 30, - 31, 32, 33, 34, 35, -1, -1, -1, -1, 40, - 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, - -1, -1, 53, 29, 30, 31, 32, 33, 34, 35, - 29, 30, 31, 32, 33, 34, 35, 29, 30, 31, - 32, 33, 34, 35, 25, 26, 27, 53, 29, 30, - -1, -1, -1, -1, 53, -1, -1, 38, -1, -1, - -1, 53, -1, -1, -1, -1, 47, 29, 30, 31, - 32, 33, 34, 35, -1, -1, -1, -1, 40, 41, - -1, -1, -1, -1, -1, 47, -1, -1, 50, 29, - 30, 31, 32, 33, 34, 35, -1, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, - 50, 42, -1, -1, -1, -1, 47, 29, 30, 31, - 32, 33, 34, 35, -1, -1, -1, -1, 40, 41, - -1, -1, -1, -1, -1, 47, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 20, -1, 42, -1, -1, - -1, -1, 47, -1, 29, 30, 31, 32, 33, 34, - 35, 35, 36, 37, 38, 39, -1, -1, 42, -1, - -1, -1, -1, 47 + 39, 40, 41, 42, 43, 44, 22, -1, -1, 25, + 49, -1, -1, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 22, + -1, -1, 25, 49, -1, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 22, 23, -1, -1, 49, -1, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 22, 23, -1, -1, 49, + -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 22, -1, + -1, -1, 49, -1, -1, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, -1, -1, 29, 30, 49, 32, 33, 34, 35, + 36, 23, -1, -1, 26, 27, 28, 29, 30, 29, + 30, -1, 32, 33, 34, 35, 36, 39, -1, 55, + -1, -1, -1, -1, -1, 29, 30, 49, 32, 33, + 34, 35, 36, 29, 30, 55, 32, 33, 34, 35, + 36, -1, -1, -1, -1, 41, 42, -1, -1, -1, + -1, 55, -1, 49, 29, 30, 52, 32, 33, 34, + 35, 36, 23, -1, -1, -1, -1, -1, 29, 30, + -1, 32, 33, 34, 35, 36, -1, 52, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, -1, -1, 29, 30, 49, 32, + 33, 34, 35, 36, -1, -1, -1, -1, 41, 42, + -1, -1, -1, -1, -1, -1, 49, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 21, -1, -1, -1, 49, -1, -1, -1, 29, 30, + -1, 32, 33, 34, 35, 36 }; -/* FFSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const fftype_uint8 ffstos[] = + /* FFSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const fftype_int8 ffstos[] = { - 0, 55, 0, 1, 3, 4, 5, 6, 7, 8, + 0, 57, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 23, 35, 36, 43, 44, 45, 50, 52, 56, - 57, 58, 59, 60, 61, 62, 50, 53, 59, 60, - 61, 62, 59, 60, 61, 62, 59, 60, 62, 6, - 53, 6, 23, 23, 23, 23, 59, 60, 62, 59, - 59, 60, 61, 59, 60, 59, 60, 59, 60, 61, - 62, 20, 24, 20, 24, 21, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 42, 47, - 50, 25, 26, 27, 29, 30, 38, 47, 50, 29, - 30, 31, 32, 33, 34, 35, 40, 41, 47, 50, - 29, 30, 31, 32, 33, 34, 35, 50, 20, 53, - 20, 53, 53, 20, 53, 20, 53, 53, 53, 20, - 20, 53, 20, 53, 59, 59, 59, 59, 53, 53, - 53, 53, 59, 60, 59, 60, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 60, 59, - 59, 59, 59, 60, 62, 60, 60, 60, 60, 59, - 59, 43, 52, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 59, 62, 62, 62, 62, 62, 62, 62, - 59, 60, 59, 62, 59, 62, 59, 59, 24, 24, - 24, 24, 22, 20, 51, 22, 22, 22, 20, 51, - 61, 61, 20, 51, 20, 53, 53, 20, 53, 20, - 53, 20, 53, 20, 59, 59, 59, 60, 59, 60, - 62, 59, 59, 59, 59, 59, 6, 59, 20, 51, - 20, 51, 20, 51, 20, 53, 20, 53, 20, 20, - 53, 59, 59, 59, 59, 59, 6, 6, 20, 51, - 20, 51, 20, 51, 53, 20, 53, 53, 59, 59, - 59, 59, 20, 51, 20, 51, 20, 51, 20, 53, - 59, 59, 59, 59, 51, 51, 51, 20, 59, 53 + 19, 20, 24, 36, 37, 45, 46, 47, 52, 54, + 58, 59, 60, 61, 62, 63, 64, 52, 55, 61, + 62, 63, 64, 61, 62, 63, 64, 61, 62, 64, + 6, 55, 6, 6, 24, 24, 24, 24, 61, 62, + 64, 61, 61, 62, 63, 61, 62, 61, 62, 61, + 62, 63, 64, 21, 25, 21, 25, 22, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 49, 52, 26, 27, 28, 29, + 30, 39, 49, 52, 29, 30, 32, 33, 34, 35, + 36, 41, 42, 49, 52, 29, 30, 32, 33, 34, + 35, 36, 52, 21, 55, 21, 55, 55, 21, 55, + 21, 55, 55, 55, 21, 21, 55, 21, 21, 55, + 61, 61, 61, 61, 55, 55, 55, 55, 61, 62, + 61, 62, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 62, 61, 61, 61, 61, 61, + 61, 61, 62, 64, 62, 62, 62, 62, 61, 61, + 45, 54, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 61, 64, 64, 64, 64, 64, 64, 64, 61, + 62, 61, 64, 61, 64, 61, 61, 61, 25, 25, + 25, 25, 23, 21, 53, 23, 23, 23, 21, 53, + 63, 63, 21, 53, 21, 55, 55, 21, 55, 21, + 55, 21, 55, 21, 21, 61, 61, 61, 62, 61, + 62, 64, 61, 61, 61, 61, 61, 6, 61, 61, + 21, 53, 21, 53, 21, 53, 21, 55, 21, 55, + 21, 21, 55, 21, 55, 61, 61, 61, 61, 61, + 6, 6, 6, 21, 53, 21, 53, 21, 53, 55, + 21, 55, 21, 55, 61, 61, 61, 61, 6, 21, + 53, 21, 53, 21, 53, 21, 55, 55, 61, 61, + 61, 61, 53, 53, 53, 21, 61, 55 }; -#define fferrok (fferrstatus = 0) -#define ffclearin (ffchar = FFEMPTY) -#define FFEMPTY (-2) -#define FFEOF 0 - -#define FFACCEPT goto ffacceptlab -#define FFABORT goto ffabortlab -#define FFERROR goto fferrorlab - + /* FFR1[FFN] -- Symbol number of symbol that rule FFN derives. */ +static const fftype_int8 ffr1[] = +{ + 0, 56, 57, 57, 58, 58, 58, 58, 58, 58, + 59, 59, 60, 60, 60, 60, 61, 62, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 64, 64, 64, 64, 64, 64, 64, 64, + 64 +}; -/* Like FFERROR except do call fferror. This remains here temporarily - to ease the transition to the new meaning of FFERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ + /* FFR2[FFN] -- Number of symbols on the right hand side of rule FFN. */ +static const fftype_int8 ffr2[] = +{ + 0, 2, 0, 2, 1, 2, 2, 2, 2, 2, + 2, 3, 2, 3, 3, 3, 2, 2, 1, 1, + 4, 3, 3, 3, 4, 6, 8, 10, 12, 2, + 3, 1, 1, 1, 4, 1, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, + 3, 5, 5, 5, 2, 3, 3, 3, 3, 5, + 5, 9, 4, 6, 8, 10, 12, 2, 2, 2, + 2, 1, 1, 4, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 5, 5, 3, + 3, 3, 5, 7, 11, 15, 2, 3, 5, 9, + 7, 11, 3, 7, 9, 4, 6, 8, 10, 12, + 2, 3, 1, 1, 4, 1, 3, 3, 5, 5, + 7 +}; -#define FFFAIL goto fferrlab -#define FFRECOVERING() (!!fferrstatus) +enum { FFENOMEM = -2 }; -#define FFBACKUP(Token, Value) \ -do \ - if (ffchar == FFEMPTY && fflen == 1) \ - { \ - ffchar = (Token); \ - fflval = (Value); \ - fftoken = FFTRANSLATE (ffchar); \ - FFPOPSTACK (1); \ - goto ffbackup; \ - } \ - else \ - { \ - fferror (FF_("syntax error: cannot back up")); \ - FFERROR; \ - } \ -while (FFID (0)) - - -#define FFTERROR 1 -#define FFERRCODE 256 - - -/* FFLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define FFRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef FFLLOC_DEFAULT -# define FFLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (FFID (N)) \ - { \ - (Current).first_line = FFRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = FFRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = FFRHSLOC (Rhs, N).last_line; \ - (Current).last_column = FFRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - FFRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - FFRHSLOC (Rhs, 0).last_column; \ - } \ - while (FFID (0)) -#endif +#define fferrok (fferrstatus = 0) +#define ffclearin (ffchar = FFEMPTY) +#define FFACCEPT goto ffacceptlab +#define FFABORT goto ffabortlab +#define FFERROR goto fferrorlab -/* FF_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef FF_LOCATION_PRINT -# if FFLTYPE_IS_TRIVIAL -# define FF_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define FF_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif +#define FFRECOVERING() (!!fferrstatus) -/* FFLEX -- calling `fflex' with the right arguments. */ +#define FFBACKUP(Token, Value) \ + do \ + if (ffchar == FFEMPTY) \ + { \ + ffchar = (Token); \ + fflval = (Value); \ + FFPOPSTACK (fflen); \ + ffstate = *ffssp; \ + goto ffbackup; \ + } \ + else \ + { \ + fferror (FF_("syntax error: cannot back up")); \ + FFERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use FFerror or FFUNDEF. */ +#define FFERRCODE FFUNDEF -#ifdef FFLEX_PARAM -# define FFLEX fflex (FFLEX_PARAM) -#else -# define FFLEX fflex () -#endif /* Enable debugging if requested. */ #if FFDEBUG @@ -1377,80 +1485,65 @@ # define FFFPRINTF fprintf # endif -# define FFDPRINTF(Args) \ -do { \ - if (ffdebug) \ - FFFPRINTF Args; \ -} while (FFID (0)) - -# define FF_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (ffdebug) \ - { \ - FFFPRINTF (stderr, "%s ", Title); \ - ff_symbol_print (stderr, \ - Type, Value); \ - FFFPRINTF (stderr, "\n"); \ - } \ -} while (FFID (0)) - - -/*--------------------------------. -| Print this symbol on FFOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -ff_symbol_value_print (FILE *ffoutput, int fftype, FFSTYPE const * const ffvaluep) -#else +# define FFDPRINTF(Args) \ +do { \ + if (ffdebug) \ + FFFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +# ifndef FF_LOCATION_PRINT +# define FF_LOCATION_PRINT(File, Loc) ((void) 0) +# endif + + +# define FF_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (ffdebug) \ + { \ + FFFPRINTF (stderr, "%s ", Title); \ + ff_symbol_print (stderr, \ + Kind, Value); \ + FFFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on FFO. | +`-----------------------------------*/ + static void -ff_symbol_value_print (ffoutput, fftype, ffvaluep) - FILE *ffoutput; - int fftype; - FFSTYPE const * const ffvaluep; -#endif +ff_symbol_value_print (FILE *ffo, + ffsymbol_kind_t ffkind, FFSTYPE const * const ffvaluep) { + FILE *ffoutput = ffo; + FFUSE (ffoutput); if (!ffvaluep) return; # ifdef FFPRINT - if (fftype < FFNTOKENS) - FFPRINT (ffoutput, fftoknum[fftype], *ffvaluep); -# else - FFUSE (ffoutput); + if (ffkind < FFNTOKENS) + FFPRINT (ffo, fftoknum[ffkind], *ffvaluep); # endif - switch (fftype) - { - default: - break; - } + FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN + FFUSE (ffkind); + FF_IGNORE_MAYBE_UNINITIALIZED_END } -/*--------------------------------. -| Print this symbol on FFOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on FFO. | +`---------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -ff_symbol_print (FILE *ffoutput, int fftype, FFSTYPE const * const ffvaluep) -#else static void -ff_symbol_print (ffoutput, fftype, ffvaluep) - FILE *ffoutput; - int fftype; - FFSTYPE const * const ffvaluep; -#endif +ff_symbol_print (FILE *ffo, + ffsymbol_kind_t ffkind, FFSTYPE const * const ffvaluep) { - if (fftype < FFNTOKENS) - FFFPRINTF (ffoutput, "token %s (", fftname[fftype]); - else - FFFPRINTF (ffoutput, "nterm %s (", fftname[fftype]); + FFFPRINTF (ffo, "%s %s (", + ffkind < FFNTOKENS ? "token" : "nterm", ffsymbol_name (ffkind)); - ff_symbol_value_print (ffoutput, fftype, ffvaluep); - FFFPRINTF (ffoutput, ")"); + ff_symbol_value_print (ffo, ffkind, ffvaluep); + FFFPRINTF (ffo, ")"); } /*------------------------------------------------------------------. @@ -1458,16 +1551,8 @@ | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -ff_stack_print (fftype_int16 *ffbottom, fftype_int16 *fftop) -#else -static void -ff_stack_print (ffbottom, fftop) - fftype_int16 *ffbottom; - fftype_int16 *fftop; -#endif +ff_stack_print (ff_state_t *ffbottom, ff_state_t *fftop) { FFFPRINTF (stderr, "Stack now"); for (; ffbottom <= fftop; ffbottom++) @@ -1478,63 +1563,56 @@ FFFPRINTF (stderr, "\n"); } -# define FF_STACK_PRINT(Bottom, Top) \ -do { \ - if (ffdebug) \ - ff_stack_print ((Bottom), (Top)); \ -} while (FFID (0)) +# define FF_STACK_PRINT(Bottom, Top) \ +do { \ + if (ffdebug) \ + ff_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the FFRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -ff_reduce_print (FFSTYPE *ffvsp, int ffrule) -#else static void -ff_reduce_print (ffvsp, ffrule) - FFSTYPE *ffvsp; - int ffrule; -#endif +ff_reduce_print (ff_state_t *ffssp, FFSTYPE *ffvsp, + int ffrule) { + int fflno = ffrline[ffrule]; int ffnrhs = ffr2[ffrule]; int ffi; - unsigned long int fflno = ffrline[ffrule]; - FFFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - ffrule - 1, fflno); + FFFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + ffrule - 1, fflno); /* The symbols being reduced. */ for (ffi = 0; ffi < ffnrhs; ffi++) { FFFPRINTF (stderr, " $%d = ", ffi + 1); - ff_symbol_print (stderr, ffrhs[ffprhs[ffrule] + ffi], - &(ffvsp[(ffi + 1) - (ffnrhs)]) - ); + ff_symbol_print (stderr, + FF_ACCESSING_SYMBOL (+ffssp[ffi + 1 - ffnrhs]), + &ffvsp[(ffi + 1) - (ffnrhs)]); FFFPRINTF (stderr, "\n"); } } -# define FF_REDUCE_PRINT(Rule) \ -do { \ - if (ffdebug) \ - ff_reduce_print (ffvsp, Rule); \ -} while (FFID (0)) +# define FF_REDUCE_PRINT(Rule) \ +do { \ + if (ffdebug) \ + ff_reduce_print (ffssp, ffvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int ffdebug; #else /* !FFDEBUG */ -# define FFDPRINTF(Args) -# define FF_SYMBOL_PRINT(Title, Type, Value, Location) +# define FFDPRINTF(Args) ((void) 0) +# define FF_SYMBOL_PRINT(Title, Kind, Value, Location) # define FF_STACK_PRINT(Bottom, Top) # define FF_REDUCE_PRINT(Rule) #endif /* !FFDEBUG */ /* FFINITDEPTH -- initial size of the parser's stacks. */ -#ifndef FFINITDEPTH +#ifndef FFINITDEPTH # define FFINITDEPTH 200 #endif @@ -1549,342 +1627,78 @@ # define FFMAXDEPTH 10000 #endif - -#if FFERROR_VERBOSE -# ifndef ffstrlen -# if defined __GLIBC__ && defined _STRING_H -# define ffstrlen strlen -# else -/* Return the length of FFSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static FFSIZE_T -ffstrlen (const char *ffstr) -#else -static FFSIZE_T -ffstrlen (ffstr) - const char *ffstr; -#endif -{ - FFSIZE_T fflen; - for (fflen = 0; ffstr[fflen]; fflen++) - continue; - return fflen; -} -# endif -# endif - -# ifndef ffstpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define ffstpcpy stpcpy -# else -/* Copy FFSRC to FFDEST, returning the address of the terminating '\0' in - FFDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static char * -ffstpcpy (char *ffdest, const char *ffsrc) -#else -static char * -ffstpcpy (ffdest, ffsrc) - char *ffdest; - const char *ffsrc; -#endif -{ - char *ffd = ffdest; - const char *ffs = ffsrc; - - while ((*ffd++ = *ffs++) != '\0') - continue; - - return ffd - 1; -} -# endif -# endif -# ifndef fftnamerr -/* Copy to FFRES the contents of FFSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for fferror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). FFSTR is taken from fftname. If FFRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static FFSIZE_T -fftnamerr (char *ffres, const char *ffstr) -{ - if (*ffstr == '"') - { - FFSIZE_T ffn = 0; - char const *ffp = ffstr; - - for (;;) - switch (*++ffp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++ffp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (ffres) - ffres[ffn] = *ffp; - ffn++; - break; - - case '"': - if (ffres) - ffres[ffn] = '\0'; - return ffn; - } - do_not_strip_quotes: ; - } - if (! ffres) - return ffstrlen (ffstr); - - return ffstpcpy (ffres, ffstr) - ffres; -} -# endif - -/* Copy into FFRESULT an error message about the unexpected token - FFCHAR while in state FFSTATE. Return the number of bytes copied, - including the terminating null byte. If FFRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return FFSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static FFSIZE_T -ffsyntax_error (char *ffresult, int ffstate, int ffchar) -{ - int ffn = ffpact[ffstate]; - - if (! (FFPACT_NINF < ffn && ffn <= FFLAST)) - return 0; - else - { - int fftype = FFTRANSLATE (ffchar); - FFSIZE_T ffsize0 = fftnamerr (0, fftname[fftype]); - FFSIZE_T ffsize = ffsize0; - FFSIZE_T ffsize1; - int ffsize_overflow = 0; - enum { FFERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *ffarg[FFERROR_VERBOSE_ARGS_MAXIMUM]; - int ffx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - FF_("syntax error, unexpected %s"); - FF_("syntax error, unexpected %s, expecting %s"); - FF_("syntax error, unexpected %s, expecting %s or %s"); - FF_("syntax error, unexpected %s, expecting %s or %s or %s"); - FF_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *fffmt; - char const *fff; - static char const ffunexpected[] = "syntax error, unexpected %s"; - static char const ffexpecting[] = ", expecting %s"; - static char const ffor[] = " or %s"; - char ffformat[sizeof ffunexpected - + sizeof ffexpecting - 1 - + ((FFERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof ffor - 1))]; - char const *ffprefix = ffexpecting; - - /* Start FFX at -FFN if negative to avoid negative indexes in - FFCHECK. */ - int ffxbegin = ffn < 0 ? -ffn : 0; - - /* Stay within bounds of both ffcheck and fftname. */ - int ffchecklim = FFLAST - ffn + 1; - int ffxend = ffchecklim < FFNTOKENS ? ffchecklim : FFNTOKENS; - int ffcount = 1; - - ffarg[0] = fftname[fftype]; - fffmt = ffstpcpy (ffformat, ffunexpected); - - for (ffx = ffxbegin; ffx < ffxend; ++ffx) - if (ffcheck[ffx + ffn] == ffx && ffx != FFTERROR) - { - if (ffcount == FFERROR_VERBOSE_ARGS_MAXIMUM) - { - ffcount = 1; - ffsize = ffsize0; - ffformat[sizeof ffunexpected - 1] = '\0'; - break; - } - ffarg[ffcount++] = fftname[ffx]; - ffsize1 = ffsize + fftnamerr (0, fftname[ffx]); - ffsize_overflow |= (ffsize1 < ffsize); - ffsize = ffsize1; - fffmt = ffstpcpy (fffmt, ffprefix); - ffprefix = ffor; - } - - fff = FF_(ffformat); - ffsize1 = ffsize + ffstrlen (fff); - ffsize_overflow |= (ffsize1 < ffsize); - ffsize = ffsize1; - - if (ffsize_overflow) - return FFSIZE_MAXIMUM; - - if (ffresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *ffp = ffresult; - int ffi = 0; - while ((*ffp = *fff) != '\0') - { - if (*ffp == '%' && fff[1] == 's' && ffi < ffcount) - { - ffp += fftnamerr (ffp, ffarg[ffi++]); - fff += 2; - } - else - { - ffp++; - fff++; - } - } - } - return ffsize; - } -} -#endif /* FFERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -ffdestruct (const char *ffmsg, int fftype, FFSTYPE *ffvaluep) -#else static void -ffdestruct (ffmsg, fftype, ffvaluep) - const char *ffmsg; - int fftype; - FFSTYPE *ffvaluep; -#endif +ffdestruct (const char *ffmsg, + ffsymbol_kind_t ffkind, FFSTYPE *ffvaluep) { FFUSE (ffvaluep); - if (!ffmsg) ffmsg = "Deleting"; - FF_SYMBOL_PRINT (ffmsg, fftype, ffvaluep, fflocationp); + FF_SYMBOL_PRINT (ffmsg, ffkind, ffvaluep, fflocationp); - switch (fftype) - { - - default: - break; - } + FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN + FFUSE (ffkind); + FF_IGNORE_MAYBE_UNINITIALIZED_END } -/* Prevent warnings from -Wmissing-prototypes. */ -#ifdef FFPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int ffparse (void *FFPARSE_PARAM); -#else -int ffparse (); -#endif -#else /* ! FFPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int ffparse (void); -#else -int ffparse (); -#endif -#endif /* ! FFPARSE_PARAM */ - -/* The lookahead symbol. */ +/* Lookahead token kind. */ int ffchar; /* The semantic value of the lookahead symbol. */ FFSTYPE fflval; - /* Number of syntax errors so far. */ int ffnerrs; -/*-------------------------. -| ffparse or ffpush_parse. | -`-------------------------*/ - -#ifdef FFPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -ffparse (void *FFPARSE_PARAM) -#else -int -ffparse (FFPARSE_PARAM) - void *FFPARSE_PARAM; -#endif -#else /* ! FFPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) + +/*----------. +| ffparse. | +`----------*/ + int ffparse (void) -#else -int -ffparse () - -#endif -#endif { - - - int ffstate; + ff_state_fast_t ffstate = 0; /* Number of tokens to shift before error messages enabled. */ - int fferrstatus; - - /* The stacks and their tools: - `ffss': related to states. - `ffvs': related to semantic values. + int fferrstatus = 0; - Refer to the stacks thru separate pointers, to allow ffoverflow + /* Refer to the stacks through separate pointers, to allow ffoverflow to reallocate them elsewhere. */ - /* The state stack. */ - fftype_int16 ffssa[FFINITDEPTH]; - fftype_int16 *ffss; - fftype_int16 *ffssp; + /* Their size. */ + FFPTRDIFF_T ffstacksize = FFINITDEPTH; - /* The semantic value stack. */ - FFSTYPE ffvsa[FFINITDEPTH]; - FFSTYPE *ffvs; - FFSTYPE *ffvsp; + /* The state stack: array, bottom, top. */ + ff_state_t ffssa[FFINITDEPTH]; + ff_state_t *ffss = ffssa; + ff_state_t *ffssp = ffss; - FFSIZE_T ffstacksize; + /* The semantic value stack: array, bottom, top. */ + FFSTYPE ffvsa[FFINITDEPTH]; + FFSTYPE *ffvs = ffvsa; + FFSTYPE *ffvsp = ffvs; int ffn; + /* The return value of ffparse. */ int ffresult; - /* Lookahead token as an internal (translated) token number. */ - int fftoken; + /* Lookahead symbol kind. */ + ffsymbol_kind_t fftoken = FFSYMBOL_FFEMPTY; /* The variables used to return semantic value and location from the action routines. */ FFSTYPE ffval; -#if FFERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char ffmsgbuf[128]; - char *ffmsg = ffmsgbuf; - FFSIZE_T ffmsg_alloc = sizeof ffmsgbuf; -#endif + #define FFPOPSTACK(N) (ffvsp -= (N), ffssp -= (N)) @@ -1892,133 +1706,138 @@ Keep to zero when no symbol should be popped. */ int fflen = 0; - fftoken = 0; - ffss = ffssa; - ffvs = ffvsa; - ffstacksize = FFINITDEPTH; - FFDPRINTF ((stderr, "Starting parse\n")); - ffstate = 0; - fferrstatus = 0; - ffnerrs = 0; ffchar = FFEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - ffssp = ffss; - ffvsp = ffvs; - goto ffsetstate; + /*------------------------------------------------------------. -| ffnewstate -- Push a new state, which is found in ffstate. | +| ffnewstate -- push a new state, which is found in ffstate. | `------------------------------------------------------------*/ - ffnewstate: +ffnewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ ffssp++; - ffsetstate: - *ffssp = ffstate; + +/*--------------------------------------------------------------------. +| ffsetstate -- set current state (the top of the stack) to ffstate. | +`--------------------------------------------------------------------*/ +ffsetstate: + FFDPRINTF ((stderr, "Entering state %d\n", ffstate)); + FF_ASSERT (0 <= ffstate && ffstate < FFNSTATES); + FF_IGNORE_USELESS_CAST_BEGIN + *ffssp = FF_CAST (ff_state_t, ffstate); + FF_IGNORE_USELESS_CAST_END + FF_STACK_PRINT (ffss, ffssp); if (ffss + ffstacksize - 1 <= ffssp) +#if !defined ffoverflow && !defined FFSTACK_RELOCATE + goto ffexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - FFSIZE_T ffsize = ffssp - ffss + 1; + FFPTRDIFF_T ffsize = ffssp - ffss + 1; -#ifdef ffoverflow +# if defined ffoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - FFSTYPE *ffvs1 = ffvs; - fftype_int16 *ffss1 = ffss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if ffoverflow is a macro. */ - ffoverflow (FF_("memory exhausted"), - &ffss1, ffsize * sizeof (*ffssp), - &ffvs1, ffsize * sizeof (*ffvsp), - &ffstacksize); - - ffss = ffss1; - ffvs = ffvs1; - } -#else /* no ffoverflow */ -# ifndef FFSTACK_RELOCATE - goto ffexhaustedlab; -# else + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + ff_state_t *ffss1 = ffss; + FFSTYPE *ffvs1 = ffvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if ffoverflow is a macro. */ + ffoverflow (FF_("memory exhausted"), + &ffss1, ffsize * FFSIZEOF (*ffssp), + &ffvs1, ffsize * FFSIZEOF (*ffvsp), + &ffstacksize); + ffss = ffss1; + ffvs = ffvs1; + } +# else /* defined FFSTACK_RELOCATE */ /* Extend the stack our own way. */ if (FFMAXDEPTH <= ffstacksize) - goto ffexhaustedlab; + goto ffexhaustedlab; ffstacksize *= 2; if (FFMAXDEPTH < ffstacksize) - ffstacksize = FFMAXDEPTH; + ffstacksize = FFMAXDEPTH; { - fftype_int16 *ffss1 = ffss; - union ffalloc *ffptr = - (union ffalloc *) FFSTACK_ALLOC (FFSTACK_BYTES (ffstacksize)); - if (! ffptr) - goto ffexhaustedlab; - FFSTACK_RELOCATE (ffss_alloc, ffss); - FFSTACK_RELOCATE (ffvs_alloc, ffvs); + ff_state_t *ffss1 = ffss; + union ffalloc *ffptr = + FF_CAST (union ffalloc *, + FFSTACK_ALLOC (FF_CAST (FFSIZE_T, FFSTACK_BYTES (ffstacksize)))); + if (! ffptr) + goto ffexhaustedlab; + FFSTACK_RELOCATE (ffss_alloc, ffss); + FFSTACK_RELOCATE (ffvs_alloc, ffvs); # undef FFSTACK_RELOCATE - if (ffss1 != ffssa) - FFSTACK_FREE (ffss1); + if (ffss1 != ffssa) + FFSTACK_FREE (ffss1); } # endif -#endif /* no ffoverflow */ ffssp = ffss + ffsize - 1; ffvsp = ffvs + ffsize - 1; - FFDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) ffstacksize)); + FF_IGNORE_USELESS_CAST_BEGIN + FFDPRINTF ((stderr, "Stack size increased to %ld\n", + FF_CAST (long, ffstacksize))); + FF_IGNORE_USELESS_CAST_END if (ffss + ffstacksize - 1 <= ffssp) - FFABORT; + FFABORT; } - - FFDPRINTF ((stderr, "Entering state %d\n", ffstate)); +#endif /* !defined ffoverflow && !defined FFSTACK_RELOCATE */ if (ffstate == FFFINAL) FFACCEPT; goto ffbackup; + /*-----------. | ffbackup. | `-----------*/ ffbackup: - /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ ffn = ffpact[ffstate]; - if (ffn == FFPACT_NINF) + if (ffpact_value_is_default (ffn)) goto ffdefault; /* Not known => get a lookahead token if don't already have one. */ - /* FFCHAR is either FFEMPTY or FFEOF or a valid lookahead symbol. */ + /* FFCHAR is either empty, or end-of-input, or a valid lookahead. */ if (ffchar == FFEMPTY) { - FFDPRINTF ((stderr, "Reading a token: ")); - ffchar = FFLEX; + FFDPRINTF ((stderr, "Reading a token\n")); + ffchar = fflex (); } if (ffchar <= FFEOF) { - ffchar = fftoken = FFEOF; + ffchar = FFEOF; + fftoken = FFSYMBOL_FFEOF; FFDPRINTF ((stderr, "Now at end of input.\n")); } + else if (ffchar == FFerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + ffchar = FFUNDEF; + fftoken = FFSYMBOL_FFerror; + goto fferrlab1; + } else { fftoken = FFTRANSLATE (ffchar); @@ -2033,8 +1852,8 @@ ffn = fftable[ffn]; if (ffn <= 0) { - if (ffn == 0 || ffn == FFTABLE_NINF) - goto fferrlab; + if (fftable_value_is_error (ffn)) + goto fferrlab; ffn = -ffn; goto ffreduce; } @@ -2046,13 +1865,13 @@ /* Shift the lookahead token. */ FF_SYMBOL_PRINT ("Shifting", fftoken, &fflval, &fflloc); - - /* Discard the shifted token. */ - ffchar = FFEMPTY; - ffstate = ffn; + FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++ffvsp = fflval; + FF_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + ffchar = FFEMPTY; goto ffnewstate; @@ -2067,14 +1886,14 @@ /*-----------------------------. -| ffreduce -- Do a reduction. | +| ffreduce -- do a reduction. | `-----------------------------*/ ffreduce: /* ffn is the number of a rule to reduce with. */ fflen = ffr2[ffn]; /* If FFLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets FFVAL to garbage. This behavior is undocumented and Bison @@ -2087,483 +1906,473 @@ FF_REDUCE_PRINT (ffn); switch (ffn) { - case 4: - -/* Line 1455 of yacc.c */ -#line 248 "eval.y" - {} + case 4: /* line: '\n' */ +#line 256 "eval.y" + {} +#line 1913 "y.tab.c" break; - case 5: - -/* Line 1455 of yacc.c */ -#line 250 "eval.y" - { if( (ffvsp[(1) - (2)].Node)<0 ) { + case 5: /* line: expr '\n' */ +#line 258 "eval.y" + { if( (ffvsp[-1].Node)<0 ) { fferror("Couldn't build node structure: out of memory?"); FFERROR; } - gParse.resultNode = (ffvsp[(1) - (2)].Node); + gParse.resultNode = (ffvsp[-1].Node); } +#line 1923 "y.tab.c" break; - case 6: - -/* Line 1455 of yacc.c */ -#line 256 "eval.y" - { if( (ffvsp[(1) - (2)].Node)<0 ) { + case 6: /* line: bexpr '\n' */ +#line 264 "eval.y" + { if( (ffvsp[-1].Node)<0 ) { fferror("Couldn't build node structure: out of memory?"); FFERROR; } - gParse.resultNode = (ffvsp[(1) - (2)].Node); + gParse.resultNode = (ffvsp[-1].Node); } +#line 1933 "y.tab.c" break; - case 7: - -/* Line 1455 of yacc.c */ -#line 262 "eval.y" - { if( (ffvsp[(1) - (2)].Node)<0 ) { + case 7: /* line: sexpr '\n' */ +#line 270 "eval.y" + { if( (ffvsp[-1].Node)<0 ) { fferror("Couldn't build node structure: out of memory?"); FFERROR; } - gParse.resultNode = (ffvsp[(1) - (2)].Node); + gParse.resultNode = (ffvsp[-1].Node); } +#line 1943 "y.tab.c" break; - case 8: - -/* Line 1455 of yacc.c */ -#line 268 "eval.y" - { if( (ffvsp[(1) - (2)].Node)<0 ) { + case 8: /* line: bits '\n' */ +#line 276 "eval.y" + { if( (ffvsp[-1].Node)<0 ) { fferror("Couldn't build node structure: out of memory?"); FFERROR; } - gParse.resultNode = (ffvsp[(1) - (2)].Node); + gParse.resultNode = (ffvsp[-1].Node); } +#line 1953 "y.tab.c" break; - case 9: - -/* Line 1455 of yacc.c */ -#line 273 "eval.y" - { fferrok; } + case 9: /* line: error '\n' */ +#line 281 "eval.y" + { fferrok; } +#line 1959 "y.tab.c" break; - case 10: - -/* Line 1455 of yacc.c */ -#line 277 "eval.y" - { (ffval.Node) = New_Vector( (ffvsp[(2) - (2)].Node) ); TEST((ffval.Node)); } + case 10: /* bvector: '{' bexpr */ +#line 285 "eval.y" + { (ffval.Node) = New_Vector( (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 1965 "y.tab.c" break; - case 11: - -/* Line 1455 of yacc.c */ -#line 279 "eval.y" - { - if( gParse.Nodes[(ffvsp[(1) - (3)].Node)].nSubNodes >= MAXSUBS ) { - (ffvsp[(1) - (3)].Node) = Close_Vec( (ffvsp[(1) - (3)].Node) ); TEST((ffvsp[(1) - (3)].Node)); - (ffval.Node) = New_Vector( (ffvsp[(1) - (3)].Node) ); TEST((ffval.Node)); + case 11: /* bvector: bvector ',' bexpr */ +#line 287 "eval.y" + { + if( gParse.Nodes[(ffvsp[-2].Node)].nSubNodes >= MAXSUBS ) { + (ffvsp[-2].Node) = Close_Vec( (ffvsp[-2].Node) ); TEST((ffvsp[-2].Node)); + (ffval.Node) = New_Vector( (ffvsp[-2].Node) ); TEST((ffval.Node)); } else { - (ffval.Node) = (ffvsp[(1) - (3)].Node); + (ffval.Node) = (ffvsp[-2].Node); } gParse.Nodes[(ffval.Node)].SubNodes[ gParse.Nodes[(ffval.Node)].nSubNodes++ ] - = (ffvsp[(3) - (3)].Node); + = (ffvsp[0].Node); } +#line 1980 "y.tab.c" break; - case 12: - -/* Line 1455 of yacc.c */ -#line 292 "eval.y" - { (ffval.Node) = New_Vector( (ffvsp[(2) - (2)].Node) ); TEST((ffval.Node)); } - break; - - case 13: - -/* Line 1455 of yacc.c */ -#line 294 "eval.y" - { - if( TYPE((ffvsp[(1) - (3)].Node)) < TYPE((ffvsp[(3) - (3)].Node)) ) - TYPE((ffvsp[(1) - (3)].Node)) = TYPE((ffvsp[(3) - (3)].Node)); - if( gParse.Nodes[(ffvsp[(1) - (3)].Node)].nSubNodes >= MAXSUBS ) { - (ffvsp[(1) - (3)].Node) = Close_Vec( (ffvsp[(1) - (3)].Node) ); TEST((ffvsp[(1) - (3)].Node)); - (ffval.Node) = New_Vector( (ffvsp[(1) - (3)].Node) ); TEST((ffval.Node)); + case 12: /* vector: '{' expr */ +#line 300 "eval.y" + { (ffval.Node) = New_Vector( (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 1986 "y.tab.c" + break; + + case 13: /* vector: vector ',' expr */ +#line 302 "eval.y" + { + if( TYPE((ffvsp[-2].Node)) < TYPE((ffvsp[0].Node)) ) + TYPE((ffvsp[-2].Node)) = TYPE((ffvsp[0].Node)); + if( gParse.Nodes[(ffvsp[-2].Node)].nSubNodes >= MAXSUBS ) { + (ffvsp[-2].Node) = Close_Vec( (ffvsp[-2].Node) ); TEST((ffvsp[-2].Node)); + (ffval.Node) = New_Vector( (ffvsp[-2].Node) ); TEST((ffval.Node)); } else { - (ffval.Node) = (ffvsp[(1) - (3)].Node); + (ffval.Node) = (ffvsp[-2].Node); } gParse.Nodes[(ffval.Node)].SubNodes[ gParse.Nodes[(ffval.Node)].nSubNodes++ ] - = (ffvsp[(3) - (3)].Node); + = (ffvsp[0].Node); } +#line 2003 "y.tab.c" break; - case 14: - -/* Line 1455 of yacc.c */ -#line 307 "eval.y" - { - if( gParse.Nodes[(ffvsp[(1) - (3)].Node)].nSubNodes >= MAXSUBS ) { - (ffvsp[(1) - (3)].Node) = Close_Vec( (ffvsp[(1) - (3)].Node) ); TEST((ffvsp[(1) - (3)].Node)); - (ffval.Node) = New_Vector( (ffvsp[(1) - (3)].Node) ); TEST((ffval.Node)); + case 14: /* vector: vector ',' bexpr */ +#line 315 "eval.y" + { + if( gParse.Nodes[(ffvsp[-2].Node)].nSubNodes >= MAXSUBS ) { + (ffvsp[-2].Node) = Close_Vec( (ffvsp[-2].Node) ); TEST((ffvsp[-2].Node)); + (ffval.Node) = New_Vector( (ffvsp[-2].Node) ); TEST((ffval.Node)); } else { - (ffval.Node) = (ffvsp[(1) - (3)].Node); + (ffval.Node) = (ffvsp[-2].Node); } gParse.Nodes[(ffval.Node)].SubNodes[ gParse.Nodes[(ffval.Node)].nSubNodes++ ] - = (ffvsp[(3) - (3)].Node); + = (ffvsp[0].Node); } +#line 2018 "y.tab.c" break; - case 15: - -/* Line 1455 of yacc.c */ -#line 318 "eval.y" - { - TYPE((ffvsp[(1) - (3)].Node)) = TYPE((ffvsp[(3) - (3)].Node)); - if( gParse.Nodes[(ffvsp[(1) - (3)].Node)].nSubNodes >= MAXSUBS ) { - (ffvsp[(1) - (3)].Node) = Close_Vec( (ffvsp[(1) - (3)].Node) ); TEST((ffvsp[(1) - (3)].Node)); - (ffval.Node) = New_Vector( (ffvsp[(1) - (3)].Node) ); TEST((ffval.Node)); + case 15: /* vector: bvector ',' expr */ +#line 326 "eval.y" + { + TYPE((ffvsp[-2].Node)) = TYPE((ffvsp[0].Node)); + if( gParse.Nodes[(ffvsp[-2].Node)].nSubNodes >= MAXSUBS ) { + (ffvsp[-2].Node) = Close_Vec( (ffvsp[-2].Node) ); TEST((ffvsp[-2].Node)); + (ffval.Node) = New_Vector( (ffvsp[-2].Node) ); TEST((ffval.Node)); } else { - (ffval.Node) = (ffvsp[(1) - (3)].Node); + (ffval.Node) = (ffvsp[-2].Node); } gParse.Nodes[(ffval.Node)].SubNodes[ gParse.Nodes[(ffval.Node)].nSubNodes++ ] - = (ffvsp[(3) - (3)].Node); + = (ffvsp[0].Node); } +#line 2034 "y.tab.c" break; - case 16: - -/* Line 1455 of yacc.c */ -#line 332 "eval.y" - { (ffval.Node) = Close_Vec( (ffvsp[(1) - (2)].Node) ); TEST((ffval.Node)); } + case 16: /* expr: vector '}' */ +#line 340 "eval.y" + { (ffval.Node) = Close_Vec( (ffvsp[-1].Node) ); TEST((ffval.Node)); } +#line 2040 "y.tab.c" break; - case 17: - -/* Line 1455 of yacc.c */ -#line 336 "eval.y" - { (ffval.Node) = Close_Vec( (ffvsp[(1) - (2)].Node) ); TEST((ffval.Node)); } + case 17: /* bexpr: bvector '}' */ +#line 344 "eval.y" + { (ffval.Node) = Close_Vec( (ffvsp[-1].Node) ); TEST((ffval.Node)); } +#line 2046 "y.tab.c" break; - case 18: - -/* Line 1455 of yacc.c */ -#line 340 "eval.y" - { - (ffval.Node) = New_Const( BITSTR, (ffvsp[(1) - (1)].str), strlen((ffvsp[(1) - (1)].str))+1 ); TEST((ffval.Node)); - SIZE((ffval.Node)) = strlen((ffvsp[(1) - (1)].str)); } + case 18: /* bits: BITSTR */ +#line 348 "eval.y" + { + (ffval.Node) = New_Const( BITSTR, (ffvsp[0].str), strlen((ffvsp[0].str))+1 ); TEST((ffval.Node)); + SIZE((ffval.Node)) = strlen((ffvsp[0].str)); } +#line 2054 "y.tab.c" break; - case 19: - -/* Line 1455 of yacc.c */ -#line 344 "eval.y" - { (ffval.Node) = New_Column( (ffvsp[(1) - (1)].lng) ); TEST((ffval.Node)); } + case 19: /* bits: BITCOL */ +#line 352 "eval.y" + { (ffval.Node) = New_Column( (ffvsp[0].lng) ); TEST((ffval.Node)); } +#line 2060 "y.tab.c" break; - case 20: - -/* Line 1455 of yacc.c */ -#line 346 "eval.y" - { - if( TYPE((ffvsp[(3) - (4)].Node)) != LONG - || OPER((ffvsp[(3) - (4)].Node)) != CONST_OP ) { + case 20: /* bits: BITCOL '{' expr '}' */ +#line 354 "eval.y" + { + if( TYPE((ffvsp[-1].Node)) != LONG + || OPER((ffvsp[-1].Node)) != CONST_OP ) { fferror("Offset argument must be a constant integer"); FFERROR; } - (ffval.Node) = New_Offset( (ffvsp[(1) - (4)].lng), (ffvsp[(3) - (4)].Node) ); TEST((ffval.Node)); + (ffval.Node) = New_Offset( (ffvsp[-3].lng), (ffvsp[-1].Node) ); TEST((ffval.Node)); } +#line 2073 "y.tab.c" break; - case 21: - -/* Line 1455 of yacc.c */ -#line 355 "eval.y" - { (ffval.Node) = New_BinOp( BITSTR, (ffvsp[(1) - (3)].Node), '&', (ffvsp[(3) - (3)].Node) ); TEST((ffval.Node)); - SIZE((ffval.Node)) = ( SIZE((ffvsp[(1) - (3)].Node))>SIZE((ffvsp[(3) - (3)].Node)) ? SIZE((ffvsp[(1) - (3)].Node)) : SIZE((ffvsp[(3) - (3)].Node)) ); } + case 21: /* bits: bits '&' bits */ +#line 363 "eval.y" + { (ffval.Node) = New_BinOp( BITSTR, (ffvsp[-2].Node), '&', (ffvsp[0].Node) ); TEST((ffval.Node)); + SIZE((ffval.Node)) = ( SIZE((ffvsp[-2].Node))>SIZE((ffvsp[0].Node)) ? SIZE((ffvsp[-2].Node)) : SIZE((ffvsp[0].Node)) ); } +#line 2080 "y.tab.c" break; - case 22: - -/* Line 1455 of yacc.c */ -#line 358 "eval.y" - { (ffval.Node) = New_BinOp( BITSTR, (ffvsp[(1) - (3)].Node), '|', (ffvsp[(3) - (3)].Node) ); TEST((ffval.Node)); - SIZE((ffval.Node)) = ( SIZE((ffvsp[(1) - (3)].Node))>SIZE((ffvsp[(3) - (3)].Node)) ? SIZE((ffvsp[(1) - (3)].Node)) : SIZE((ffvsp[(3) - (3)].Node)) ); } + case 22: /* bits: bits '|' bits */ +#line 366 "eval.y" + { (ffval.Node) = New_BinOp( BITSTR, (ffvsp[-2].Node), '|', (ffvsp[0].Node) ); TEST((ffval.Node)); + SIZE((ffval.Node)) = ( SIZE((ffvsp[-2].Node))>SIZE((ffvsp[0].Node)) ? SIZE((ffvsp[-2].Node)) : SIZE((ffvsp[0].Node)) ); } +#line 2087 "y.tab.c" break; - case 23: - -/* Line 1455 of yacc.c */ -#line 361 "eval.y" - { - if (SIZE((ffvsp[(1) - (3)].Node))+SIZE((ffvsp[(3) - (3)].Node)) >= MAX_STRLEN) { + case 23: /* bits: bits '+' bits */ +#line 369 "eval.y" + { + if (SIZE((ffvsp[-2].Node))+SIZE((ffvsp[0].Node)) >= MAX_STRLEN) { fferror("Combined bit string size exceeds " MAX_STRLEN_S " bits"); FFERROR; } - (ffval.Node) = New_BinOp( BITSTR, (ffvsp[(1) - (3)].Node), '+', (ffvsp[(3) - (3)].Node) ); TEST((ffval.Node)); - SIZE((ffval.Node)) = SIZE((ffvsp[(1) - (3)].Node)) + SIZE((ffvsp[(3) - (3)].Node)); + (ffval.Node) = New_BinOp( BITSTR, (ffvsp[-2].Node), '+', (ffvsp[0].Node) ); TEST((ffval.Node)); + SIZE((ffval.Node)) = SIZE((ffvsp[-2].Node)) + SIZE((ffvsp[0].Node)); } +#line 2100 "y.tab.c" break; - case 24: - -/* Line 1455 of yacc.c */ -#line 370 "eval.y" - { (ffval.Node) = New_Deref( (ffvsp[(1) - (4)].Node), 1, (ffvsp[(3) - (4)].Node), 0, 0, 0, 0 ); TEST((ffval.Node)); } + case 24: /* bits: bits '[' expr ']' */ +#line 378 "eval.y" + { (ffval.Node) = New_Deref( (ffvsp[-3].Node), 1, (ffvsp[-1].Node), 0, 0, 0, 0 ); TEST((ffval.Node)); } +#line 2106 "y.tab.c" break; - case 25: - -/* Line 1455 of yacc.c */ -#line 372 "eval.y" - { (ffval.Node) = New_Deref( (ffvsp[(1) - (6)].Node), 2, (ffvsp[(3) - (6)].Node), (ffvsp[(5) - (6)].Node), 0, 0, 0 ); TEST((ffval.Node)); } + case 25: /* bits: bits '[' expr ',' expr ']' */ +#line 380 "eval.y" + { (ffval.Node) = New_Deref( (ffvsp[-5].Node), 2, (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0, 0 ); TEST((ffval.Node)); } +#line 2112 "y.tab.c" break; - case 26: - -/* Line 1455 of yacc.c */ -#line 374 "eval.y" - { (ffval.Node) = New_Deref( (ffvsp[(1) - (8)].Node), 3, (ffvsp[(3) - (8)].Node), (ffvsp[(5) - (8)].Node), (ffvsp[(7) - (8)].Node), 0, 0 ); TEST((ffval.Node)); } + case 26: /* bits: bits '[' expr ',' expr ',' expr ']' */ +#line 382 "eval.y" + { (ffval.Node) = New_Deref( (ffvsp[-7].Node), 3, (ffvsp[-5].Node), (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0 ); TEST((ffval.Node)); } +#line 2118 "y.tab.c" break; - case 27: - -/* Line 1455 of yacc.c */ -#line 376 "eval.y" - { (ffval.Node) = New_Deref( (ffvsp[(1) - (10)].Node), 4, (ffvsp[(3) - (10)].Node), (ffvsp[(5) - (10)].Node), (ffvsp[(7) - (10)].Node), (ffvsp[(9) - (10)].Node), 0 ); TEST((ffval.Node)); } + case 27: /* bits: bits '[' expr ',' expr ',' expr ',' expr ']' */ +#line 384 "eval.y" + { (ffval.Node) = New_Deref( (ffvsp[-9].Node), 4, (ffvsp[-7].Node), (ffvsp[-5].Node), (ffvsp[-3].Node), (ffvsp[-1].Node), 0 ); TEST((ffval.Node)); } +#line 2124 "y.tab.c" break; - case 28: - -/* Line 1455 of yacc.c */ -#line 378 "eval.y" - { (ffval.Node) = New_Deref( (ffvsp[(1) - (12)].Node), 5, (ffvsp[(3) - (12)].Node), (ffvsp[(5) - (12)].Node), (ffvsp[(7) - (12)].Node), (ffvsp[(9) - (12)].Node), (ffvsp[(11) - (12)].Node) ); TEST((ffval.Node)); } + case 28: /* bits: bits '[' expr ',' expr ',' expr ',' expr ',' expr ']' */ +#line 386 "eval.y" + { (ffval.Node) = New_Deref( (ffvsp[-11].Node), 5, (ffvsp[-9].Node), (ffvsp[-7].Node), (ffvsp[-5].Node), (ffvsp[-3].Node), (ffvsp[-1].Node) ); TEST((ffval.Node)); } +#line 2130 "y.tab.c" break; - case 29: - -/* Line 1455 of yacc.c */ -#line 380 "eval.y" - { (ffval.Node) = New_Unary( BITSTR, NOT, (ffvsp[(2) - (2)].Node) ); TEST((ffval.Node)); } + case 29: /* bits: NOT bits */ +#line 388 "eval.y" + { (ffval.Node) = New_Unary( BITSTR, NOT, (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2136 "y.tab.c" break; - case 30: - -/* Line 1455 of yacc.c */ -#line 383 "eval.y" - { (ffval.Node) = (ffvsp[(2) - (3)].Node); } + case 30: /* bits: '(' bits ')' */ +#line 391 "eval.y" + { (ffval.Node) = (ffvsp[-1].Node); } +#line 2142 "y.tab.c" break; - case 31: - -/* Line 1455 of yacc.c */ -#line 387 "eval.y" - { (ffval.Node) = New_Const( LONG, &((ffvsp[(1) - (1)].lng)), sizeof(long) ); TEST((ffval.Node)); } + case 31: /* expr: LONG */ +#line 395 "eval.y" + { (ffval.Node) = New_Const( LONG, &((ffvsp[0].lng)), sizeof(long) ); TEST((ffval.Node)); } +#line 2148 "y.tab.c" break; - case 32: - -/* Line 1455 of yacc.c */ -#line 389 "eval.y" - { (ffval.Node) = New_Const( DOUBLE, &((ffvsp[(1) - (1)].dbl)), sizeof(double) ); TEST((ffval.Node)); } + case 32: /* expr: DOUBLE */ +#line 397 "eval.y" + { (ffval.Node) = New_Const( DOUBLE, &((ffvsp[0].dbl)), sizeof(double) ); TEST((ffval.Node)); } +#line 2154 "y.tab.c" break; - case 33: - -/* Line 1455 of yacc.c */ -#line 391 "eval.y" - { (ffval.Node) = New_Column( (ffvsp[(1) - (1)].lng) ); TEST((ffval.Node)); } + case 33: /* expr: COLUMN */ +#line 399 "eval.y" + { (ffval.Node) = New_Column( (ffvsp[0].lng) ); TEST((ffval.Node)); } +#line 2160 "y.tab.c" break; - case 34: - -/* Line 1455 of yacc.c */ -#line 393 "eval.y" - { - if( TYPE((ffvsp[(3) - (4)].Node)) != LONG - || OPER((ffvsp[(3) - (4)].Node)) != CONST_OP ) { + case 34: /* expr: COLUMN '{' expr '}' */ +#line 401 "eval.y" + { + if( TYPE((ffvsp[-1].Node)) != LONG + || OPER((ffvsp[-1].Node)) != CONST_OP ) { fferror("Offset argument must be a constant integer"); FFERROR; } - (ffval.Node) = New_Offset( (ffvsp[(1) - (4)].lng), (ffvsp[(3) - (4)].Node) ); TEST((ffval.Node)); + (ffval.Node) = New_Offset( (ffvsp[-3].lng), (ffvsp[-1].Node) ); TEST((ffval.Node)); } +#line 2173 "y.tab.c" break; - case 35: - -/* Line 1455 of yacc.c */ -#line 402 "eval.y" - { (ffval.Node) = New_Func( LONG, row_fct, 0, 0, 0, 0, 0, 0, 0, 0 ); } - break; - - case 36: - -/* Line 1455 of yacc.c */ -#line 404 "eval.y" - { (ffval.Node) = New_Func( LONG, null_fct, 0, 0, 0, 0, 0, 0, 0, 0 ); } + case 35: /* expr: ROWREF */ +#line 410 "eval.y" + { (ffval.Node) = New_Func( LONG, row_fct, 0, 0, 0, 0, 0, 0, 0, 0 ); } +#line 2179 "y.tab.c" break; - case 37: - -/* Line 1455 of yacc.c */ -#line 406 "eval.y" - { PROMOTE((ffvsp[(1) - (3)].Node),(ffvsp[(3) - (3)].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), '%', (ffvsp[(3) - (3)].Node) ); - TEST((ffval.Node)); } + case 36: /* expr: NULLREF */ +#line 412 "eval.y" + { (ffval.Node) = New_Func( LONG, null_fct, 0, 0, 0, 0, 0, 0, 0, 0 ); } +#line 2185 "y.tab.c" break; - case 38: - -/* Line 1455 of yacc.c */ -#line 409 "eval.y" - { PROMOTE((ffvsp[(1) - (3)].Node),(ffvsp[(3) - (3)].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), '+', (ffvsp[(3) - (3)].Node) ); + case 37: /* expr: expr '%' expr */ +#line 414 "eval.y" + { PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '%', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2192 "y.tab.c" break; - case 39: - -/* Line 1455 of yacc.c */ -#line 412 "eval.y" - { PROMOTE((ffvsp[(1) - (3)].Node),(ffvsp[(3) - (3)].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), '-', (ffvsp[(3) - (3)].Node) ); + case 38: /* expr: expr '+' expr */ +#line 417 "eval.y" + { PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '+', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2199 "y.tab.c" break; - case 40: - -/* Line 1455 of yacc.c */ -#line 415 "eval.y" - { PROMOTE((ffvsp[(1) - (3)].Node),(ffvsp[(3) - (3)].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), '*', (ffvsp[(3) - (3)].Node) ); + case 39: /* expr: expr '-' expr */ +#line 420 "eval.y" + { PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '-', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2206 "y.tab.c" break; - case 41: - -/* Line 1455 of yacc.c */ -#line 418 "eval.y" - { PROMOTE((ffvsp[(1) - (3)].Node),(ffvsp[(3) - (3)].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), '/', (ffvsp[(3) - (3)].Node) ); + case 40: /* expr: expr '*' expr */ +#line 423 "eval.y" + { PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '*', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2213 "y.tab.c" break; - case 42: - -/* Line 1455 of yacc.c */ -#line 421 "eval.y" - { PROMOTE((ffvsp[(1) - (3)].Node),(ffvsp[(3) - (3)].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), POWER, (ffvsp[(3) - (3)].Node) ); + case 41: /* expr: expr '/' expr */ +#line 426 "eval.y" + { PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '/', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2220 "y.tab.c" break; - case 43: + case 42: /* expr: expr '&' expr */ +#line 429 "eval.y" + { + if (TYPE((ffvsp[-2].Node)) != LONG || + TYPE((ffvsp[0].Node)) != LONG) { + fferror("Bitwise operations with incompatible types; only (bit OP bit) and (int OP int) are allowed"); + FFERROR; + } + (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '&', (ffvsp[0].Node) ); + } +#line 2233 "y.tab.c" + break; -/* Line 1455 of yacc.c */ -#line 424 "eval.y" - { (ffval.Node) = (ffvsp[(2) - (2)].Node); } + case 43: /* expr: expr '|' expr */ +#line 438 "eval.y" + { + if (TYPE((ffvsp[-2].Node)) != LONG || + TYPE((ffvsp[0].Node)) != LONG) { + fferror("Bitwise operations with incompatible types; only (bit OP bit) and (int OP int) are allowed"); + FFERROR; + } + (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '|', (ffvsp[0].Node) ); + } +#line 2246 "y.tab.c" break; - case 44: + case 44: /* expr: expr XOR expr */ +#line 447 "eval.y" + { + if (TYPE((ffvsp[-2].Node)) != LONG || + TYPE((ffvsp[0].Node)) != LONG) { + fferror("Bitwise operations with incompatible types; only (bit OP bit) and (int OP int) are allowed"); + FFERROR; + } + (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '^', (ffvsp[0].Node) ); + } +#line 2259 "y.tab.c" + break; -/* Line 1455 of yacc.c */ -#line 426 "eval.y" - { (ffval.Node) = New_Unary( TYPE((ffvsp[(2) - (2)].Node)), UMINUS, (ffvsp[(2) - (2)].Node) ); TEST((ffval.Node)); } + case 45: /* expr: expr POWER expr */ +#line 456 "eval.y" + { PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), POWER, (ffvsp[0].Node) ); + TEST((ffval.Node)); } +#line 2266 "y.tab.c" break; - case 45: + case 46: /* expr: '+' expr */ +#line 459 "eval.y" + { (ffval.Node) = (ffvsp[0].Node); } +#line 2272 "y.tab.c" + break; -/* Line 1455 of yacc.c */ -#line 428 "eval.y" - { (ffval.Node) = (ffvsp[(2) - (3)].Node); } + case 47: /* expr: '-' expr */ +#line 461 "eval.y" + { (ffval.Node) = New_Unary( TYPE((ffvsp[0].Node)), UMINUS, (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2278 "y.tab.c" break; - case 46: + case 48: /* expr: '(' expr ')' */ +#line 463 "eval.y" + { (ffval.Node) = (ffvsp[-1].Node); } +#line 2284 "y.tab.c" + break; -/* Line 1455 of yacc.c */ -#line 430 "eval.y" - { (ffvsp[(3) - (3)].Node) = New_Unary( TYPE((ffvsp[(1) - (3)].Node)), 0, (ffvsp[(3) - (3)].Node) ); - (ffval.Node) = New_BinOp( TYPE((ffvsp[(1) - (3)].Node)), (ffvsp[(1) - (3)].Node), '*', (ffvsp[(3) - (3)].Node) ); + case 49: /* expr: expr '*' bexpr */ +#line 465 "eval.y" + { (ffvsp[0].Node) = New_Unary( TYPE((ffvsp[-2].Node)), 0, (ffvsp[0].Node) ); + (ffval.Node) = New_BinOp( TYPE((ffvsp[-2].Node)), (ffvsp[-2].Node), '*', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2292 "y.tab.c" break; - case 47: - -/* Line 1455 of yacc.c */ -#line 434 "eval.y" - { (ffvsp[(1) - (3)].Node) = New_Unary( TYPE((ffvsp[(3) - (3)].Node)), 0, (ffvsp[(1) - (3)].Node) ); - (ffval.Node) = New_BinOp( TYPE((ffvsp[(3) - (3)].Node)), (ffvsp[(1) - (3)].Node), '*', (ffvsp[(3) - (3)].Node) ); + case 50: /* expr: bexpr '*' expr */ +#line 469 "eval.y" + { (ffvsp[-2].Node) = New_Unary( TYPE((ffvsp[0].Node)), 0, (ffvsp[-2].Node) ); + (ffval.Node) = New_BinOp( TYPE((ffvsp[0].Node)), (ffvsp[-2].Node), '*', (ffvsp[0].Node) ); TEST((ffval.Node)); } +#line 2300 "y.tab.c" break; - case 48: - -/* Line 1455 of yacc.c */ -#line 438 "eval.y" - { - PROMOTE((ffvsp[(3) - (5)].Node),(ffvsp[(5) - (5)].Node)); - if( ! Test_Dims((ffvsp[(3) - (5)].Node),(ffvsp[(5) - (5)].Node)) ) { + case 51: /* expr: bexpr '?' expr ':' expr */ +#line 473 "eval.y" + { + PROMOTE((ffvsp[-2].Node),(ffvsp[0].Node)); + if( ! Test_Dims((ffvsp[-2].Node),(ffvsp[0].Node)) ) { fferror("Incompatible dimensions in '?:' arguments"); FFERROR; } - (ffval.Node) = New_Func( 0, ifthenelse_fct, 3, (ffvsp[(3) - (5)].Node), (ffvsp[(5) - (5)].Node), (ffvsp[(1) - (5)].Node), + (ffval.Node) = New_Func( 0, ifthenelse_fct, 3, (ffvsp[-2].Node), (ffvsp[0].Node), (ffvsp[-4].Node), 0, 0, 0, 0 ); TEST((ffval.Node)); - if( SIZE((ffvsp[(3) - (5)].Node))=SIZE((ffvsp[(4) - (5)].Node)) && Test_Dims( (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node) ) ) { - PROMOTE((ffvsp[(2) - (5)].Node),(ffvsp[(4) - (5)].Node)); - (ffval.Node) = New_Func( 0, defnull_fct, 2, (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node), 0, + case 60: /* expr: FUNCTION expr ',' expr ')' */ +#line 701 "eval.y" + { + if (FSTRCMP((ffvsp[-4].str),"DEFNULL(") == 0) { + if( SIZE((ffvsp[-3].Node))>=SIZE((ffvsp[-1].Node)) && Test_Dims( (ffvsp[-3].Node), (ffvsp[-1].Node) ) ) { + PROMOTE((ffvsp[-3].Node),(ffvsp[-1].Node)); + (ffval.Node) = New_Func( 0, defnull_fct, 2, (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0, 0, 0, 0 ); TEST((ffval.Node)); } else { @@ -2774,74 +2577,72 @@ "are not compatible"); FFERROR; } - } else if (FSTRCMP((ffvsp[(1) - (5)].str),"ARCTAN2(") == 0) { - if( TYPE((ffvsp[(2) - (5)].Node)) != DOUBLE ) (ffvsp[(2) - (5)].Node) = New_Unary( DOUBLE, 0, (ffvsp[(2) - (5)].Node) ); - if( TYPE((ffvsp[(4) - (5)].Node)) != DOUBLE ) (ffvsp[(4) - (5)].Node) = New_Unary( DOUBLE, 0, (ffvsp[(4) - (5)].Node) ); - if( Test_Dims( (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node) ) ) { - (ffval.Node) = New_Func( 0, atan2_fct, 2, (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node), 0, 0, 0, 0, 0 ); + } else if (FSTRCMP((ffvsp[-4].str),"ARCTAN2(") == 0) { + if( TYPE((ffvsp[-3].Node)) != DOUBLE ) (ffvsp[-3].Node) = New_Unary( DOUBLE, 0, (ffvsp[-3].Node) ); + if( TYPE((ffvsp[-1].Node)) != DOUBLE ) (ffvsp[-1].Node) = New_Unary( DOUBLE, 0, (ffvsp[-1].Node) ); + if( Test_Dims( (ffvsp[-3].Node), (ffvsp[-1].Node) ) ) { + (ffval.Node) = New_Func( 0, atan2_fct, 2, (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0, 0, 0, 0 ); TEST((ffval.Node)); - if( SIZE((ffvsp[(2) - (5)].Node))=SIZE((ffvsp[(4) - (5)].Node)) && Test_Dims( (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node) ) ) { - (ffval.Node) = New_Func( 0, defnull_fct, 2, (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node), 0, + case 102: /* bexpr: FUNCTION bexpr ',' bexpr ')' */ +#line 946 "eval.y" + { + if (FSTRCMP((ffvsp[-4].str),"DEFNULL(") == 0) { + if( SIZE((ffvsp[-3].Node))>=SIZE((ffvsp[-1].Node)) && Test_Dims( (ffvsp[-3].Node), (ffvsp[-1].Node) ) ) { + (ffval.Node) = New_Func( 0, defnull_fct, 2, (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0, 0, 0, 0 ); TEST((ffval.Node)); } else { @@ -3228,23 +2988,22 @@ FFERROR; } } +#line 2992 "y.tab.c" break; - case 100: - -/* Line 1455 of yacc.c */ -#line 928 "eval.y" - { - if( TYPE((ffvsp[(2) - (7)].Node)) != DOUBLE ) (ffvsp[(2) - (7)].Node) = New_Unary( DOUBLE, 0, (ffvsp[(2) - (7)].Node) ); - if( TYPE((ffvsp[(4) - (7)].Node)) != DOUBLE ) (ffvsp[(4) - (7)].Node) = New_Unary( DOUBLE, 0, (ffvsp[(4) - (7)].Node) ); - if( TYPE((ffvsp[(6) - (7)].Node)) != DOUBLE ) (ffvsp[(6) - (7)].Node) = New_Unary( DOUBLE, 0, (ffvsp[(6) - (7)].Node) ); - if( ! (Test_Dims( (ffvsp[(2) - (7)].Node), (ffvsp[(4) - (7)].Node) ) && Test_Dims( (ffvsp[(4) - (7)].Node), (ffvsp[(6) - (7)].Node) ) ) ) { + case 103: /* bexpr: BFUNCTION expr ',' expr ',' expr ')' */ +#line 962 "eval.y" + { + if( TYPE((ffvsp[-5].Node)) != DOUBLE ) (ffvsp[-5].Node) = New_Unary( DOUBLE, 0, (ffvsp[-5].Node) ); + if( TYPE((ffvsp[-3].Node)) != DOUBLE ) (ffvsp[-3].Node) = New_Unary( DOUBLE, 0, (ffvsp[-3].Node) ); + if( TYPE((ffvsp[-1].Node)) != DOUBLE ) (ffvsp[-1].Node) = New_Unary( DOUBLE, 0, (ffvsp[-1].Node) ); + if( ! (Test_Dims( (ffvsp[-5].Node), (ffvsp[-3].Node) ) && Test_Dims( (ffvsp[-3].Node), (ffvsp[-1].Node) ) ) ) { fferror("Dimensions of NEAR arguments " "are not compatible"); FFERROR; } else { - if (FSTRCMP((ffvsp[(1) - (7)].str),"NEAR(") == 0) { - (ffval.Node) = New_Func( BOOLEAN, near_fct, 3, (ffvsp[(2) - (7)].Node), (ffvsp[(4) - (7)].Node), (ffvsp[(6) - (7)].Node), + if (FSTRCMP((ffvsp[-6].str),"NEAR(") == 0) { + (ffval.Node) = New_Func( BOOLEAN, near_fct, 3, (ffvsp[-5].Node), (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0, 0, 0 ); } else { fferror("Boolean Function not supported"); @@ -3252,424 +3011,389 @@ } TEST((ffval.Node)); - if( SIZE((ffval.Node))= MAX_STRLEN) { + case 127: /* sexpr: sexpr '+' sexpr */ +#line 1120 "eval.y" + { + if (SIZE((ffvsp[-2].Node))+SIZE((ffvsp[0].Node)) >= MAX_STRLEN) { fferror("Combined string size exceeds " MAX_STRLEN_S " characters"); FFERROR; } - (ffval.Node) = New_BinOp( STRING, (ffvsp[(1) - (3)].Node), '+', (ffvsp[(3) - (3)].Node) ); TEST((ffval.Node)); - SIZE((ffval.Node)) = SIZE((ffvsp[(1) - (3)].Node)) + SIZE((ffvsp[(3) - (3)].Node)); + (ffval.Node) = New_BinOp( STRING, (ffvsp[-2].Node), '+', (ffvsp[0].Node) ); TEST((ffval.Node)); + SIZE((ffval.Node)) = SIZE((ffvsp[-2].Node)) + SIZE((ffvsp[0].Node)); } +#line 3251 "y.tab.c" break; - case 123: - -/* Line 1455 of yacc.c */ -#line 1086 "eval.y" - { + case 128: /* sexpr: bexpr '?' sexpr ':' sexpr */ +#line 1129 "eval.y" + { int outSize; - if( SIZE((ffvsp[(1) - (5)].Node))!=1 ) { + if( SIZE((ffvsp[-4].Node))!=1 ) { fferror("Cannot have a vector string column"); FFERROR; } /* Since the output can be calculated now, as a constant scalar, we must precalculate the output size, in order to avoid an overflow. */ - outSize = SIZE((ffvsp[(3) - (5)].Node)); - if (SIZE((ffvsp[(5) - (5)].Node)) > outSize) outSize = SIZE((ffvsp[(5) - (5)].Node)); - (ffval.Node) = New_FuncSize( 0, ifthenelse_fct, 3, (ffvsp[(3) - (5)].Node), (ffvsp[(5) - (5)].Node), (ffvsp[(1) - (5)].Node), + outSize = SIZE((ffvsp[-2].Node)); + if (SIZE((ffvsp[0].Node)) > outSize) outSize = SIZE((ffvsp[0].Node)); + (ffval.Node) = New_FuncSize( 0, ifthenelse_fct, 3, (ffvsp[-2].Node), (ffvsp[0].Node), (ffvsp[-4].Node), 0, 0, 0, 0, outSize); TEST((ffval.Node)); - if( SIZE((ffvsp[(3) - (5)].Node)) outSize) outSize = SIZE((ffvsp[(4) - (5)].Node)); + outSize = SIZE((ffvsp[-3].Node)); + if (SIZE((ffvsp[-1].Node)) > outSize) outSize = SIZE((ffvsp[-1].Node)); - (ffval.Node) = New_FuncSize( 0, defnull_fct, 2, (ffvsp[(2) - (5)].Node), (ffvsp[(4) - (5)].Node), 0, + (ffval.Node) = New_FuncSize( 0, defnull_fct, 2, (ffvsp[-3].Node), (ffvsp[-1].Node), 0, 0, 0, 0, 0, outSize ); TEST((ffval.Node)); - if( SIZE((ffvsp[(4) - (5)].Node))>SIZE((ffvsp[(2) - (5)].Node)) ) SIZE((ffval.Node)) = SIZE((ffvsp[(4) - (5)].Node)); + if( SIZE((ffvsp[-1].Node))>SIZE((ffvsp[-3].Node)) ) SIZE((ffval.Node)) = SIZE((ffvsp[-1].Node)); } else { fferror("Function(string,string) not supported"); FFERROR; } } +#line 3296 "y.tab.c" break; - case 125: - -/* Line 1455 of yacc.c */ -#line 1124 "eval.y" - { - if (FSTRCMP((ffvsp[(1) - (7)].str),"STRMID(") == 0) { + case 130: /* sexpr: FUNCTION sexpr ',' expr ',' expr ')' */ +#line 1167 "eval.y" + { + if (FSTRCMP((ffvsp[-6].str),"STRMID(") == 0) { int len; - if( TYPE((ffvsp[(4) - (7)].Node)) != LONG || SIZE((ffvsp[(4) - (7)].Node)) != 1 || - TYPE((ffvsp[(6) - (7)].Node)) != LONG || SIZE((ffvsp[(6) - (7)].Node)) != 1) { + if( TYPE((ffvsp[-3].Node)) != LONG || SIZE((ffvsp[-3].Node)) != 1 || + TYPE((ffvsp[-1].Node)) != LONG || SIZE((ffvsp[-1].Node)) != 1) { fferror("When using STRMID(S,P,N), P and N must be integers (and not vector columns)"); FFERROR; } - if (OPER((ffvsp[(6) - (7)].Node)) == CONST_OP) { + if (OPER((ffvsp[-1].Node)) == CONST_OP) { /* Constant value: use that directly */ - len = (gParse.Nodes[(ffvsp[(6) - (7)].Node)].value.data.lng); + len = (gParse.Nodes[(ffvsp[-1].Node)].value.data.lng); } else { /* Variable value: use the maximum possible (from $2) */ - len = SIZE((ffvsp[(2) - (7)].Node)); + len = SIZE((ffvsp[-5].Node)); } if (len <= 0 || len >= MAX_STRLEN) { fferror("STRMID(S,P,N), N must be 1-" MAX_STRLEN_S); FFERROR; } - (ffval.Node) = New_FuncSize( 0, strmid_fct, 3, (ffvsp[(2) - (7)].Node), (ffvsp[(4) - (7)].Node),(ffvsp[(6) - (7)].Node),0,0,0,0,len); + (ffval.Node) = New_FuncSize( 0, strmid_fct, 3, (ffvsp[-5].Node), (ffvsp[-3].Node),(ffvsp[-1].Node),0,0,0,0,len); TEST((ffval.Node)); } else { fferror("Function(string,expr,expr) not supported"); FFERROR; } } +#line 3327 "y.tab.c" break; +#line 3331 "y.tab.c" -/* Line 1455 of yacc.c */ -#line 3584 "y.tab.c" default: break; } - FF_SYMBOL_PRINT ("-> $$ =", ffr1[ffn], &ffval, &ffloc); + /* User semantic actions sometimes alter ffchar, and that requires + that fftoken be updated with the new translation. We take the + approach of translating immediately before every use of fftoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + FFABORT, FFACCEPT, or FFERROR immediately after altering ffchar or + if it invokes FFBACKUP. In the case of FFABORT or FFACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of FFERROR or FFBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + FF_SYMBOL_PRINT ("-> $$ =", FF_CAST (ffsymbol_kind_t, ffr1[ffn]), &ffval, &ffloc); FFPOPSTACK (fflen); fflen = 0; - FF_STACK_PRINT (ffss, ffssp); *++ffvsp = ffval; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - ffn = ffr1[ffn]; - - ffstate = ffpgoto[ffn - FFNTOKENS] + *ffssp; - if (0 <= ffstate && ffstate <= FFLAST && ffcheck[ffstate] == *ffssp) - ffstate = fftable[ffstate]; - else - ffstate = ffdefgoto[ffn - FFNTOKENS]; + { + const int fflhs = ffr1[ffn] - FFNTOKENS; + const int ffi = ffpgoto[fflhs] + *ffssp; + ffstate = (0 <= ffi && ffi <= FFLAST && ffcheck[ffi] == *ffssp + ? fftable[ffi] + : ffdefgoto[fflhs]); + } goto ffnewstate; -/*------------------------------------. -| fferrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| fferrlab -- here on detecting error. | +`--------------------------------------*/ fferrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + fftoken = ffchar == FFEMPTY ? FFSYMBOL_FFEMPTY : FFTRANSLATE (ffchar); /* If not already recovering from an error, report this error. */ if (!fferrstatus) { ++ffnerrs; -#if ! FFERROR_VERBOSE fferror (FF_("syntax error")); -#else - { - FFSIZE_T ffsize = ffsyntax_error (0, ffstate, ffchar); - if (ffmsg_alloc < ffsize && ffmsg_alloc < FFSTACK_ALLOC_MAXIMUM) - { - FFSIZE_T ffalloc = 2 * ffsize; - if (! (ffsize <= ffalloc && ffalloc <= FFSTACK_ALLOC_MAXIMUM)) - ffalloc = FFSTACK_ALLOC_MAXIMUM; - if (ffmsg != ffmsgbuf) - FFSTACK_FREE (ffmsg); - ffmsg = (char *) FFSTACK_ALLOC (ffalloc); - if (ffmsg) - ffmsg_alloc = ffalloc; - else - { - ffmsg = ffmsgbuf; - ffmsg_alloc = sizeof ffmsgbuf; - } - } - - if (0 < ffsize && ffsize <= ffmsg_alloc) - { - (void) ffsyntax_error (ffmsg, ffstate, ffchar); - fferror (ffmsg); - } - else - { - fferror (FF_("syntax error")); - if (ffsize != 0) - goto ffexhaustedlab; - } - } -#endif } - - if (fferrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (ffchar <= FFEOF) - { - /* Return failure if at end of input. */ - if (ffchar == FFEOF) - FFABORT; - } + { + /* Return failure if at end of input. */ + if (ffchar == FFEOF) + FFABORT; + } else - { - ffdestruct ("Error: discarding", - fftoken, &fflval); - ffchar = FFEMPTY; - } + { + ffdestruct ("Error: discarding", + fftoken, &fflval); + ffchar = FFEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -3681,14 +3405,12 @@ | fferrorlab -- error raised explicitly by FFERROR. | `---------------------------------------------------*/ fferrorlab: + /* Pacify compilers when the user code never invokes FFERROR and the + label fferrorlab therefore never appears in user code. */ + if (0) + FFERROR; - /* Pacify compilers like GCC when the user code never invokes - FFERROR and the label fferrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto fferrorlab; - - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this FFERROR. */ FFPOPSTACK (fflen); fflen = 0; @@ -3701,39 +3423,42 @@ | fferrlab1 -- common code for both syntax error and FFERROR. | `-------------------------------------------------------------*/ fferrlab1: - fferrstatus = 3; /* Each real token shifted decrements this. */ + fferrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { ffn = ffpact[ffstate]; - if (ffn != FFPACT_NINF) - { - ffn += FFTERROR; - if (0 <= ffn && ffn <= FFLAST && ffcheck[ffn] == FFTERROR) - { - ffn = fftable[ffn]; - if (0 < ffn) - break; - } - } + if (!ffpact_value_is_default (ffn)) + { + ffn += FFSYMBOL_FFerror; + if (0 <= ffn && ffn <= FFLAST && ffcheck[ffn] == FFSYMBOL_FFerror) + { + ffn = fftable[ffn]; + if (0 < ffn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (ffssp == ffss) - FFABORT; + FFABORT; ffdestruct ("Error: popping", - ffstos[ffstate], ffvsp); + FF_ACCESSING_SYMBOL (ffstate), ffvsp); FFPOPSTACK (1); ffstate = *ffssp; FF_STACK_PRINT (ffss, ffssp); } + FF_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++ffvsp = fflval; + FF_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ - FF_SYMBOL_PRINT ("Shifting", ffstos[ffn], ffvsp, fflsp); + FF_SYMBOL_PRINT ("Shifting", FF_ACCESSING_SYMBOL (ffn), ffvsp, fflsp); ffstate = ffn; goto ffnewstate; @@ -3746,6 +3471,7 @@ ffresult = 0; goto ffreturn; + /*-----------------------------------. | ffabortlab -- FFABORT comes here. | `-----------------------------------*/ @@ -3753,46 +3479,49 @@ ffresult = 1; goto ffreturn; -#if !defined(ffoverflow) || FFERROR_VERBOSE + +#if !defined ffoverflow /*-------------------------------------------------. | ffexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ ffexhaustedlab: fferror (FF_("memory exhausted")); ffresult = 2; - /* Fall through. */ + goto ffreturn; #endif + +/*-------------------------------------------------------. +| ffreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ ffreturn: if (ffchar != FFEMPTY) - ffdestruct ("Cleanup: discarding lookahead", - fftoken, &fflval); - /* Do not reclaim the symbols of the rule which action triggered + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + fftoken = FFTRANSLATE (ffchar); + ffdestruct ("Cleanup: discarding lookahead", + fftoken, &fflval); + } + /* Do not reclaim the symbols of the rule whose action triggered this FFABORT or FFACCEPT. */ FFPOPSTACK (fflen); FF_STACK_PRINT (ffss, ffssp); while (ffssp != ffss) { ffdestruct ("Cleanup: popping", - ffstos[*ffssp], ffvsp); + FF_ACCESSING_SYMBOL (+*ffssp), ffvsp); FFPOPSTACK (1); } #ifndef ffoverflow if (ffss != ffssa) FFSTACK_FREE (ffss); #endif -#if FFERROR_VERBOSE - if (ffmsg != ffmsgbuf) - FFSTACK_FREE (ffmsg); -#endif - /* Make sure FFID is used. */ - return FFID (ffresult); -} - + return ffresult; +} -/* Line 1675 of yacc.c */ -#line 1153 "eval.y" +#line 1196 "eval.y" /*************************************************************************/ @@ -4112,10 +3841,10 @@ extern int ffGetVariable( char *varName, FFSTYPE *varVal ); -static int New_GTI( char *fname, int Node1, char *start, char *stop ) +static int New_GTI( funcOp Op, char *fname, int Node1, int Node2, char *start, char *stop ) { fitsfile *fptr; - Node *this, *that0, *that1; + Node *this, *that0, *that1, *that2; int type,i,n, startCol, stopCol, Node0; int hdutype, hdunum, evthdu, samefile, extvers, movetotype, tstat; char extname[100]; @@ -4124,7 +3853,7 @@ char xcol[20], xexpr[20]; FFSTYPE colVal; - if( Node1==-99 ) { + if( Op == gtifilt_fct && Node1==-99 ) { type = ffGetVariable( "TIME", &colVal ); if( type==COLUMN ) { Node1 = New_Column( (int)colVal.lng ); @@ -4133,6 +3862,19 @@ return(-1); } } + + if (Op == gtiover_fct) { + if (Node1 == -99 || Node2 == -99) { + fferror("startExpr and stopExpr values must be defined for GTIOVERLAP"); + return(-1); + } + /* Also case TIME_STOP to double precision */ + Node2 = New_Unary( DOUBLE, 0, Node2 ); + if (Node2 < 0) return(-1); + + } + + /* Type cast TIME to double precision */ Node1 = New_Unary( DOUBLE, 0, Node1 ); Node0 = Alloc_Node(); /* This will hold the START/STOP times */ if( Node1<0 || Node0<0 ) return(-1); @@ -4246,16 +3988,30 @@ n = Alloc_Node(); if( n >= 0 ) { this = gParse.Nodes + n; - this->nSubNodes = 2; this->SubNodes[1] = Node1; - this->operation = (int)gtifilt_fct; - this->DoOp = Do_GTI; - this->type = BOOLEAN; + this->operation = (int) Op; + if (Op == gtifilt_fct) { + this->nSubNodes = 2; + this->DoOp = Do_GTI; + this->type = BOOLEAN; + } else { + this->nSubNodes = 3; + this->DoOp = Do_GTI_Over; + this->type = DOUBLE; + } that1 = gParse.Nodes + Node1; this->value.nelem = that1->value.nelem; this->value.naxis = that1->value.naxis; for( i=0; i < that1->value.naxis; i++ ) this->value.naxes[i] = that1->value.naxes[i]; + if (Op == gtiover_fct) { + this->SubNodes[2] = Node2; + that2 = gParse.Nodes + Node2; + if (that1->value.nelem != that2->value.nelem) { + fferror("Dimensions of TIME and TIME_STOP must match for GTIOVERLAP"); + return(-1); + } + } /* Init START/STOP node to be treated as a "constant" */ @@ -4299,6 +4055,12 @@ that0->type = 0; break; } + + /* GTIOVERLAP() requires ordered GTI */ + if (that0->type != 1 && Op == gtiover_fct) { + fferror("Input GTI must be time-ordered for GTIOVERLAP"); + return(-1); + } /* Handle TIMEZERO offset, if any */ @@ -4311,8 +4073,11 @@ that0->value.data.dblptr[i] += dt; } } - if( OPER(Node1)==CONST_OP ) - this->DoOp( this ); + /* If Node1 is constant (gtifilt_fct) or + Node1 and Node2 are constant (gtiover_fct), then evaluate now */ + if( OPER(Node1)==CONST_OP && (Op == gtifilt_fct || OPER(Node2)==CONST_OP)) { + this->DoOp( this ); + } } if( samefile ) @@ -5492,6 +5257,10 @@ case '-': this->value.data.lng = (val1 - val2); break; case '*': this->value.data.lng = (val1 * val2); break; + case '&': this->value.data.lng = (val1 & val2); break; + case '|': this->value.data.lng = (val1 | val2); break; + case '^': this->value.data.lng = (val1 ^ val2); break; + case '%': if( val2 ) this->value.data.lng = (val1 % val2); else fferror("Divide by Zero"); @@ -5601,6 +5370,10 @@ case '-': this->value.data.lngptr[elem] = (val1 - val2); break; case '*': this->value.data.lngptr[elem] = (val1 * val2); break; + case '&': this->value.data.lngptr[elem] = (val1 & val2); break; + case '|': this->value.data.lngptr[elem] = (val1 | val2); break; + case '^': this->value.data.lngptr[elem] = (val1 ^ val2); break; + case '%': if( val2 ) this->value.data.lngptr[elem] = (val1 % val2); else { @@ -6110,6 +5883,12 @@ else if( this->type==STRING ) strcpy(this->value.data.str,pVals[0].data.str); break; + case setnull_fct: /* Only defined for numeric expressions */ + if( this->type==LONG ) + this->value.data.lng = pVals[0].data.lng; + else if( this->type==DOUBLE ) + this->value.data.dbl = pVals[0].data.dbl; + break; /* Math functions with 1 double argument */ @@ -6793,6 +6572,34 @@ } } break; + case setnull_fct: + switch( this->type ) { + case LONG: + while( elem-- ) { + if ( theParams[1]->value.data.lng == + theParams[0]->value.data.lngptr[elem] ) { + this->value.data.lngptr[elem] = 0; + this->value.undef[elem] = 1; + } else { + this->value.data.lngptr[elem] = theParams[0]->value.data.lngptr[elem]; + this->value.undef[elem] = theParams[0]->value.undef[elem]; + } + } + break; + case DOUBLE: + while( elem-- ) { + if ( theParams[1]->value.data.dbl == + theParams[0]->value.data.dblptr[elem] ) { + this->value.data.dblptr[elem] = 0; + this->value.undef[elem] = 1; + } else { + this->value.data.dblptr[elem] = theParams[0]->value.data.dblptr[elem]; + this->value.undef[elem] = theParams[0]->value.undef[elem]; + } + } + break; + } + break; /* Math functions with 1 double argument */ @@ -7824,7 +7631,7 @@ if( theExpr->operation==CONST_OP ) { this->value.data.log = - (Search_GTI( theExpr->value.data.dbl, nGTI, start, stop, ordered )>=0); + (Search_GTI( theExpr->value.data.dbl, nGTI, start, stop, ordered, 0 )>=0); this->operation = CONST_OP; } else { @@ -7843,7 +7650,7 @@ /* Before searching entire GTI, check the GTI found last time */ if( gti<0 || times[elem]stop[gti] ) { - gti = Search_GTI( times[elem], nGTI, start, stop, ordered ); + gti = Search_GTI( times[elem], nGTI, start, stop, ordered, 0 ); } this->value.data.logptr[elem] = ( gti>=0 ); } @@ -7859,10 +7666,158 @@ free( theExpr->value.data.ptr ); } +static void Do_GTI_Over( Node *this ) +{ + Node *theTimes, *theStart, *theStop; + double *gtiStart, *gtiStop; + double *evtStart, *evtStop; + long elem, nGTI, gti, nextGTI; + int ordered; + + theTimes = gParse.Nodes + this->SubNodes[0]; /* GTI times */ + theStop = gParse.Nodes + this->SubNodes[2]; /* User start time */ + theStart = gParse.Nodes + this->SubNodes[1]; /* User stop time */ + + nGTI = theTimes->value.nelem; + gtiStart = theTimes->value.data.dblptr; /* GTI start */ + gtiStop = theTimes->value.data.dblptr + nGTI; /* GTI stop */ + + if( theStart->operation==CONST_OP && theStop->operation==CONST_OP) { + + this->value.data.dbl = + (GTI_Over( theStart->value.data.dbl, theStop->value.data.dbl, + nGTI, gtiStart, gtiStop, >i)); + this->operation = CONST_OP; + + } else { + char undefStart = 0, undefStop = 0; /* Input values are undef? */ + double uStart, uStop; /* User start/stop values */ + if (theStart->operation==CONST_OP) uStart = theStart->value.data.dbl; + if (theStop ->operation==CONST_OP) uStop = theStop ->value.data.dbl; + + Allocate_Ptrs( this ); + + evtStart = theStart->value.data.dblptr; + evtStop = theStop ->value.data.dblptr; + if( !gParse.status ) { + + elem = gParse.nRows * this->value.nelem; + if( nGTI ) { + double toverlap = 0.0; + gti = -1; + while( elem-- ) { + if (theStart->operation!=CONST_OP) { + undefStart = theStart->value.undef[elem]; + uStart = evtStart[elem]; + } + if (theStop->operation!=CONST_OP) { + undefStop = theStop ->value.undef[elem]; + uStop = evtStop[elem]; + } + /* This works because at least one of the values is not const */ + if( (this->value.undef[elem] = (undefStart||undefStop)) ) + continue; + + /* Before searching entire GTI, check the GTI found last time */ + if( gti<0 || + uStartgtiStop[gti] || + uStop gtiStop[gti]) { + /* Nope, need to recalculate */ + toverlap = GTI_Over(uStart, uStop, + nGTI, gtiStart, gtiStop, + >i); + } else { + /* We are in same GTI, the overlap is just stop-start of user range */ + toverlap = (uStop-uStart); + } + + /* This works because at least one of the values is not const */ + this->value.data.dblptr[elem] = toverlap; + } + } else + /* nGTI == 0; there is no overlap so set all values to 0.0 */ + while( elem-- ) { + this->value.data.dblptr[elem] = 0.0; + this->value.undef[elem] = 0; + } + } + } + + if( theStart->operation>0 ) { + free( theStart->value.data.ptr ); + } + if( theStop->operation>0 ) { + free( theStop->value.data.ptr ); + } +} + +static double GTI_Over(double evtStart, double evtStop, + long nGTI, double *start, double *stop, + long *gtiout) +{ + long gti1, gti2, nextGTI1, nextGTI2; + long gti, nMax; + double overlap = 0.0; + + *gtiout = -1L; + /* Zero or negative bin size */ + if (evtStop <= evtStart) return 0.0; + + /* Locate adjacent GTIs for evtStart and evtStop */ + gti1 = Search_GTI(evtStart, nGTI, start, stop, 1, &nextGTI1); + gti2 = Search_GTI(evtStop, nGTI, start, stop, 1, &nextGTI2); + + /* evtStart is in gti1, we return that for future processing */ + if (gti1 >= 0) *gtiout = gti1; + + /* Both evtStart/evtStop are beyond the last GTI */ + if (nextGTI1 < 0 && nextGTI2 < 0) return 0.0; + + /* Both evtStart/evtStop are in the same gap between GTIs */ + if (gti1 < 0 && gti2 < 0 && nextGTI1 == nextGTI2) return 0.0; + + /* Both evtStart/evtStop are in the same GTI */ + if (gti1 >= 0 && gti1 == gti2) return (evtStop-evtStart); + + /* Count through the remaining GTIs; there will be at least one */ + /* The largest GTI to consider is either nextGTI2-1, if it exists, + or nGTI-1 */ + if (nextGTI2 < 0) nMax = nGTI-1; + else if (gti2 >= 0) nMax = nextGTI2; + else nMax = nextGTI2-1; + for (gti = nextGTI1; gti <= nMax; gti++) { + double starti = start[gti], stopi = stop[gti]; + /* Trim the GTI by actual evtStart/Stop times */ + if (evtStart > starti) starti = evtStart; + if (evtStop < stopi ) stopi = evtStop; + overlap += (stopi - starti); + } + + return overlap; +} + +/* + * Search_GTI - search GTI for requested evtTime + * + * double evtTime - requested event time + * long nGTI - number of entries in start[] and stop[] + * double start[], stop[] - start and stop of each GTI + * int ordered - set to 1 if time-ordered + * long *nextGTI0 - upon return, *nextGTI0 is either + * the GTI evtTime is inside + * the next GTI if evtTime is not inside + * -1L if there is no next GTI + * not set if nextGTI0 is a null pointer + * + * NOTE: for *nextGTI to be well-defined, the GTI must + * be ordered. This is true when called by Do_GTI. + * + * RETURNS: gti index that evtTime is located inside, or -1L + */ static long Search_GTI( double evtTime, long nGTI, double *start, - double *stop, int ordered ) + double *stop, int ordered, long *nextGTI0 ) { - long gti, step; + long gti, nextGTI = -1L, step; if( ordered && nGTI>15 ) { /* If time-ordered and lots of GTIs, */ /* use "FAST" Binary search algorithm */ @@ -7875,6 +7830,7 @@ if( evtTime>=start[gti+1] ) gti += step; else { + nextGTI = gti+1; gti = -1L; break; } @@ -7882,22 +7838,35 @@ if( evtTime<=stop[gti-1] ) gti -= step; else { + nextGTI = gti; gti = -1L; break; } } else { + nextGTI = gti; break; } } - } else + } else { + if (start[0] > evtTime) nextGTI = 0; gti = -1L; + } - } else { /* Use "SLOW" linear search */ + } else { /* Use "SLOW" linear search. Not required to be + ordered, so we have to search the whole table + no matter what. + */ gti = nGTI; - while( gti-- ) - if( evtTime>=start[gti] && evtTime<=stop[gti] ) + while( gti-- ) { + if( stop[gti] >= evtTime ) nextGTI = gti; + if( evtTime>=start[gti] && evtTime<=stop[gti] ) break; + } } + + if (nextGTI >= nGTI) nextGTI = -1; + if (nextGTI0) *nextGTI0 = nextGTI; + return( gti ); } @@ -8373,4 +8342,3 @@ msg[79] = '\0'; ffpmsg(msg); } - diff -Nru cfitsio-3.470/FindPthreads.cmake cfitsio-4.0.0/FindPthreads.cmake --- cfitsio-3.470/FindPthreads.cmake 2019-05-08 15:34:49.000000000 +0000 +++ cfitsio-4.0.0/FindPthreads.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -# - Find the Pthreads library -# This module searches for the Pthreads library (including the -# pthreads-win32 port). -# -# This module defines these variables: -# -# PTHREADS_FOUND -# True if the Pthreads library was found -# PTHREADS_LIBRARY -# The location of the Pthreads library -# PTHREADS_INCLUDE_DIR -# The include path of the Pthreads library -# PTHREADS_DEFINITIONS -# Preprocessor definitions to define -# -# This module responds to the PTHREADS_EXCEPTION_SCHEME -# variable on Win32 to allow the user to control the -# library linked against. The Pthreads-win32 port -# provides the ability to link against a version of the -# library with exception handling. IT IS NOT RECOMMENDED -# THAT YOU USE THIS because most POSIX thread implementations -# do not support stack unwinding. -# -# PTHREADS_EXCEPTION_SCHEME -# C = no exceptions (default) -# (NOTE: This is the default scheme on most POSIX thread -# implementations and what you should probably be using) -# CE = C++ Exception Handling -# SE = Structure Exception Handling (MSVC only) -# - -# -# Define a default exception scheme to link against -# and validate user choice. -# -IF(NOT DEFINED PTHREADS_EXCEPTION_SCHEME) - # Assign default if needed - SET(PTHREADS_EXCEPTION_SCHEME "C") -ELSE(NOT DEFINED PTHREADS_EXCEPTION_SCHEME) - # Validate - IF(NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "C" AND - NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "CE" AND - NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") - - MESSAGE(FATAL_ERROR "See documentation for FindPthreads.cmake, only C, CE, and SE modes are allowed") - - ENDIF(NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "C" AND - NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "CE" AND - NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") - - IF(NOT MSVC AND PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") - MESSAGE(FATAL_ERROR "Structured Exception Handling is only allowed for MSVC") - ENDIF(NOT MSVC AND PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") - -ENDIF(NOT DEFINED PTHREADS_EXCEPTION_SCHEME) - -# -# Find the header file -# -FIND_PATH(PTHREADS_INCLUDE_DIR pthread.h) - -# -# Find the library -# -SET(names) -IF(MSVC) - SET(names - pthreadV${PTHREADS_EXCEPTION_SCHEME}2 - pthread - ) -ELSEIF(MINGW) - SET(names - pthreadG${PTHREADS_EXCEPTION_SCHEME}2 - pthread - ) -ELSE(MSVC) # Unix / Cygwin / Apple - SET(names pthread) -ENDIF(MSVC) - -FIND_LIBRARY(PTHREADS_LIBRARY ${names} - DOC "The Portable Threads Library") - -IF(PTHREADS_INCLUDE_DIR AND PTHREADS_LIBRARY) - SET(PTHREADS_FOUND true) - SET(PTHREADS_DEFINITIONS -DHAVE_PTHREAD_H) - SET(PTHREADS_INCLUDE_DIRS ${PTHREADS_INCLUDE_DIR}) - SET(PTHREADS_LIBRARIES ${PTHREADS_LIBRARY}) -ENDIF(PTHREADS_INCLUDE_DIR AND PTHREADS_LIBRARY) - -IF(PTHREADS_FOUND) - IF(NOT PTHREADS_FIND_QUIETLY) - MESSAGE(STATUS "Found Pthreads: ${PTHREADS_LIBRARY}") - ENDIF(NOT PTHREADS_FIND_QUIETLY) -ELSE(PTHREADS_FOUND) - IF(PTHREADS_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find the Pthreads Library") - ENDIF(PTHREADS_FIND_REQUIRED) -ENDIF(PTHREADS_FOUND) diff -Nru cfitsio-3.470/fitscore.c cfitsio-4.0.0/fitscore.c --- cfitsio-3.470/fitscore.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/fitscore.c 2021-05-20 01:18:54.000000000 +0000 @@ -73,11 +73,14 @@ return the current version number of the FITSIO software */ { - *version = (float) 3.47; + *version = (float) 4.0; -/* May 2019 +/* May 2021 Previous releases: + *version = 3.49 Aug 2020 + *version = 3.48 Apr 2020 + *version = 3.47 May 2019 *version = 3.46 Oct 2018 *version = 3.45 May 2018 *version = 3.44 Apr 2018 @@ -2078,9 +2081,17 @@ /* ===== Keyword rewriting and output stage */ spat = patterns[pat][1]; - /* Return case: no match, or explicit deletion pattern */ - if (pass == 0 || spat[0] == '\0' || spat[0] == '-') return 0; + /* Return case: explicit deletion, return '-' */ + if (pass && strcmp(spat,"--") == 0) { + strcpy(outrec, "-"); + strncat(outrec, inrec, 8); + outrec[9] = 0; + for(i1=8; i1>1 && outrec[i1] == ' '; i1--) outrec[i1] = 0; + return 0; + } + /* Return case: no match, or do-not-transfer pattern */ + if (pass == 0 || spat[0] == '\0' || strcmp(spat,"-") == 0) return 0; /* A match: we start by copying the input record to the output */ strcpy(outrec, inrec); @@ -2164,7 +2175,7 @@ ffghsp(infptr, &nkeys, &nmore, status); /* get number of keywords */ - for (nrec = firstkey; nrec <= nkeys; nrec++) { + for (nrec = firstkey; (*status == 0) && (nrec <= nkeys); nrec++) { outrec[0] = '\0'; ffgrec(infptr, nrec, rec, status); @@ -2185,12 +2196,34 @@ n_value, n_offset, n_range, &pat_num, &i, &j, &m, &n, status); - if (outrec[0]) { - ffprec(outfptr, outrec, status); /* copy the keyword */ - rec[8] = 0; outrec[8] = 0; - } else { - rec[8] = 0; outrec[8] = 0; + if (*status == 0) { + if (outrec[0] == '-') { /* prefix -KEYNAME means delete */ + int i1; + + /* Preserve only the keyword portion of name */ + outrec[9] = 0; + for(i1=8; i1>1 && outrec[i1] == ' '; i1--) outrec[i1] = 0; + + ffpmrk(); + ffdkey(outfptr, outrec+1, status); /* delete the keyword */ + if (*status == 0) { + int nkeys1; + /* get number of keywords again in case of change*/ + ffghsp(infptr, &nkeys1, &nmore, status); + if (nkeys1 != nkeys) { + nrec --; + nkeys = nkeys1; + } + } + *status = 0; + ffcmrk(); + + } else if (outrec[0]) { + ffprec(outfptr, outrec, status); /* copy the keyword */ + } } + rec[8] = 0; outrec[8] = 0; + } return(*status); @@ -5469,11 +5502,13 @@ /* the returned values of repeat and incre. */ /* If = -1, then reading data in reverse */ /* direction. */ + /* If writemode has 16 added, then treat */ + /* TSTRING column as TBYTE vector */ double *scale, /* O - FITS scaling factor (TSCALn keyword value) */ double *zero, /* O - FITS scaling zero pt (TZEROn keyword value) */ char *tform, /* O - ASCII column format: value of TFORMn keyword */ long *twidth, /* O - width of ASCII column (characters) */ - int *tcode, /* O - column datatype code: I*4=41, R*4=42, etc */ + int *tcode, /* O - abs(column datatype code): I*4=41, R*4=42, etc */ int *maxelem, /* O - max number of elements that fit in buffer */ LONGLONG *startpos,/* O - offset in file to starting row & column */ LONGLONG *elemnum, /* O - starting element number ( 0 = 1st element) */ @@ -5506,7 +5541,7 @@ if ( ffrdef(fptr, status) > 0) return(*status); - } else if (writemode > 0) { + } else if (writemode > 0 && writemode != 15) { /* Only terminate the header with the END card if */ /* writing to the stdout stream (don't have random access). */ @@ -5601,6 +5636,35 @@ snull[nulpos] = '\0'; } + /* Special case: use writemode = 15,16,17,18 to interpret TSTRING columns + as TBYTE vectors instead (but not for ASCII tables). + writemode = 15 equivalent to writemode =-1 + writemode = 16 equivalent to writemode = 0 + writemode = 17 equivalent to writemode = 1 + writemode = 18 equivalent to writemode = 2 + */ + if (writemode >= 15 && writemode <= 18) { + + if (abs(*tcode) == TSTRING && *hdutype != ASCII_TBL ) { + *incre = 1; /* each element is 1 byte wide */ + if (*tcode < 0) *repeat = *twidth; /* variable columns appear to put width in *twidth */ + *twidth = 1; /* width of each element */ + *scale = 1.0; /* no scaling */ + *zero = 0.0; + *tnull = NULL_UNDEFINED; /* don't test for nulls */ + *maxelem = DBUFFSIZE; + + if (*tcode < 0) { + *tcode = -TBYTE; /* variable-length */ + } else { + *tcode = TBYTE; + } + } + + /* translate to the equivalent as listed above */ + writemode -= 16; + } + /* Special case: interpret writemode = -1 as reading data, but */ /* don't do error check for exceeding the range of pixels */ if (writemode == -1) @@ -5618,7 +5682,10 @@ /* Special case: support the 'rAw' format in BINTABLEs */ if (*hdutype == BINARY_TBL && *tcode == TSTRING) { - *repeat = *repeat / *twidth; /* repeat = # of unit strings in field */ + if (*twidth) + *repeat = *repeat / *twidth; /* repeat = # of unit strings in field */ + else + *repeat = 0; } else if (*hdutype == BINARY_TBL && *tcode == -TSTRING) { /* variable length string */ @@ -5652,7 +5719,11 @@ *maxelem = DBUFFSIZE / sizeof(double); else if (abs(*tcode) == TSTRING) { - *maxelem = (DBUFFSIZE - 1)/ *twidth; /* leave room for final \0 */ + if (*twidth) + *maxelem = (DBUFFSIZE - 1)/ *twidth; /* leave room for final \0 */ + else + *maxelem = DBUFFSIZE - 1; + if (*maxelem == 0) { snprintf(message,FLEN_ERRMSG, "ASCII string column is too wide: %ld; max supported width is %d", @@ -7849,7 +7920,7 @@ } /* see if the strings are an exact match */ - ffcmps(extname, hduname, CASEINSEN, &match, &exact); + ffcmps(hduname, extname, CASEINSEN, &match, &exact); } /* if EXTNAME keyword doesn't exist, or it does not match, then try HDUNAME */ @@ -7868,7 +7939,7 @@ } /* see if the strings are an exact match */ - ffcmps(extname, hduname, CASEINSEN, &match, &exact); + ffcmps(hduname, extname, CASEINSEN, &match, &exact); } } diff -Nru cfitsio-3.470/fitsio2.h cfitsio-4.0.0/fitsio2.h --- cfitsio-3.470/fitsio2.h 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/fitsio2.h 2021-05-20 01:18:54.000000000 +0000 @@ -137,6 +137,20 @@ # error "can't handle long size given by _MIPS_SZLONG" # endif +#elif defined(__riscv) + +/* RISC-V is always little endian */ + +#define BYTESWAPPED TRUE + +# if __riscv_xlen == 32 +# define LONGSIZE 32 +# elif __riscv_xlen == 64 +# define LONGSIZE 64 +# else +# error "can't handle long size given by __riscv_xlen" +# endif + /* ============================================================== */ /* the following are all 32-bit byteswapped platforms */ @@ -204,12 +218,6 @@ #define BYTESWAPPED FALSE #endif -#elif defined(__riscv) - -/* RISC-V is little endian */ - -#define BYTESWAPPED TRUE - #else /* assume all other machine uses the same IEEE formats as used in FITS files */ @@ -401,7 +409,8 @@ int fits_clear_Fptr(FITSfile *Fptr, int *status); int fits_already_open(fitsfile **fptr, char *url, char *urltype, char *infile, char *extspec, char *rowfilter, - char *binspec, char *colspec, int mode,int *isopen, int *status); + char *binspec, char *colspec, int mode, int noextsyn, + int *isopen, int *status); int ffedit_columns(fitsfile **fptr, char *outfile, char *expr, int *status); int fits_get_col_minmax(fitsfile *fptr, int colnum, double *datamin, double *datamax, int *status); diff -Nru cfitsio-3.470/fitsio.h cfitsio-4.0.0/fitsio.h --- cfitsio-3.470/fitsio.h 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/fitsio.h 2021-05-20 01:18:54.000000000 +0000 @@ -34,10 +34,11 @@ #ifndef _FITSIO_H #define _FITSIO_H -#define CFITSIO_VERSION 3.47 -#define CFITSIO_MINOR 47 -#define CFITSIO_MAJOR 3 -#define CFITSIO_SONAME 8 +#define CFITSIO_VERSION 4.0.0 +#define CFITSIO_MICRO 0 +#define CFITSIO_MINOR 0 +#define CFITSIO_MAJOR 4 +#define CFITSIO_SONAME 9 /* the SONAME is incremented in a new release if the binary shared */ /* library (on linux and Mac systems) is not backward compatible */ @@ -361,6 +362,7 @@ char *filename; /* file name */ int validcode; /* magic value used to verify that structure is valid */ int only_one; /* flag meaning only copy the specified extension */ + int noextsyntax; /* flag for file opened with request to ignore extended syntax*/ LONGLONG filesize; /* current size of the physical disk file in bytes */ LONGLONG logfilesize; /* logical size of file, including unflushed buffers */ int lasthdu; /* is this the last HDU in the file? 0 = no, else yes */ @@ -1837,6 +1839,8 @@ int ncols, int create_col, int *status); int CFITS_API ffcprw(fitsfile *infptr, fitsfile *outfptr, LONGLONG firstrow, LONGLONG nrows, int *status); +int CFITS_API ffcpht(fitsfile *infptr, fitsfile *outfptr, LONGLONG firstrow, + LONGLONG nrows, int *status); /*--------------------- WCS Utilities ------------------*/ int CFITS_API ffgics(fitsfile *fptr, double *xrval, double *yrval, double *xrpix, diff -Nru cfitsio-3.470/fpack.c cfitsio-4.0.0/fpack.c --- cfitsio-3.470/fpack.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/fpack.c 2021-05-20 01:18:54.000000000 +0000 @@ -194,11 +194,17 @@ fpptr->do_images = 0; /* Do not write this to stdout via fp_msg. Otherwise it will be placed at start of piped FITS file, which will then be corrupted. */ - fprintf(stderr,"Note: -tableonly is intended for feasibility studies, not general use.\n"); + fprintf(stderr, "Note: The table compression method used by fpack has been\n"); + fprintf(stderr, " officially approved as part of FITS format standard since 2016.\n"); + fprintf(stderr, " However users should be aware that the compressed table files may\n"); + fprintf(stderr, " only be readable by a limited number of applications (including fpack).\n"); } else if (!strcmp(argv[iarg], "-table")) { fpptr->do_tables = 1; - fprintf(stderr, "Note: -table is intended for feasibility studies, not general use.\n"); + fprintf(stderr, "Note: The table compression method used by fpack has been\n"); + fprintf(stderr, " officially approved as part of FITS format standard since 2016.\n"); + fprintf(stderr, " However users should be aware that the compressed table files may\n"); + fprintf(stderr, " only be readable by a limited number of applications (including fpack).\n"); } else if (argv[iarg][1] == 't') { if (gottile) { diff -Nru cfitsio-3.470/fpackutil.c cfitsio-4.0.0/fpackutil.c --- cfitsio-3.470/fpackutil.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/fpackutil.c 2021-05-20 01:18:54.000000000 +0000 @@ -126,7 +126,7 @@ int maxtry = 30, ii; if (strlen(suffix) + strlen(rootname) > SZ_STR-5) { - fp_msg ("Error: filename is too long to create tempory file\n"); exit (-1); + fp_msg ("Error: filename is too long to create temporary file\n"); exit (-1); } strcpy (tmpnam, rootname); /* start with rootname */ diff -Nru cfitsio-3.470/getcolb.c cfitsio-4.0.0/getcolb.c --- cfitsio-3.470/getcolb.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/getcolb.c 2021-05-20 01:18:54.000000000 +0000 @@ -662,7 +662,7 @@ int tcode, maxelem2, hdutype, xcode, decimals; long twidth, incre, ntodo; long ii, xwidth; - int convert, nulcheck, readcheck = 0; + int convert, nulcheck, readcheck = 16; /* see note below on readcheck */ LONGLONG repeat, startpos, elemnum, readptr, tnull; LONGLONG rowlen, rownum, remain, next, rowincre, maxelem; char tform[20]; @@ -692,7 +692,17 @@ /* Check input and get parameters about the column: */ /*---------------------------------------------------*/ if (elemincre < 0) - readcheck = -1; /* don't do range checking in this case */ + readcheck -= 1; /* don't do range checking in this case */ + + /* IMPORTANT NOTE: that the special case of using this subroutine + to read bytes from a character column are handled internally + by the call to ffgcprll() below. It will adjust the effective + *tcode, repeats, etc, to appear as a TBYTE column. */ + + /* Note that readcheck = 16 is equivalent to readcheck = 0 + and readcheck = 15 is equivalent to readcheck = -1, + but either of those settings allow TSTRINGS to be + treated as TBYTE vectors, but with full error checking */ ffgcprll( fptr, colnum, firstrow, firstelem, nelem, readcheck, &scale, &zero, tform, &twidth, &tcode, &maxelem2, &startpos, &elemnum, &incre, @@ -709,30 +719,6 @@ return(*status); } - if (strchr(tform,'A') != NULL) - { - if (*status == BAD_ELEM_NUM) - { - /* ignore this error message */ - *status = 0; - ffcmsg(); /* clear error stack */ - } - - /* interpret a 'A' ASCII column as a 'B' byte column ('8A' == '8B') */ - /* This is an undocumented 'feature' in CFITSIO */ - - /* we have to reset some of the values returned by ffgcpr */ - - tcode = TBYTE; - incre = 1; /* each element is 1 byte wide */ - repeat = twidth; /* total no. of chars in the col */ - twidth = 1; /* width of each element */ - scale = 1.0; /* no scaling */ - zero = 0.0; - tnull = NULL_UNDEFINED; /* don't test for nulls */ - maxelem = DBUFFSIZE; - } - if (*status > 0) return(*status); diff -Nru cfitsio-3.470/getcols.c cfitsio-4.0.0/getcols.c --- cfitsio-3.470/getcols.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/getcols.c 2021-05-20 01:18:54.000000000 +0000 @@ -114,6 +114,7 @@ colptr += (colnum - 1); /* offset to correct column structure */ tcode = abs(colptr->tdatatype); + intcol = 0; if (tcode == TSTRING) { /* simply call the string column reading routine */ @@ -170,6 +171,19 @@ { /* convert the Fortran style format to a C style format */ ffcdsp(dispfmt, cform); + + /* Special case: TDISPn='Aw' disallowed for numeric types */ + if (dispfmt[0] == 'A') { + cform[0] = 0; + + /* Special case: if the output is intended to be represented + as an integer, but we read it as a double, we need to + set intcol = 1 so it is printed as an integer */ + } else if ((dispfmt[0] == 'I') || (dispfmt[0] == 'i') || + (dispfmt[0] == 'O') || (dispfmt[0] == 'o') || + (dispfmt[0] == 'Z') || (dispfmt[0] == 'z')) { + intcol = 1; + } } if (!cform[0]) @@ -188,8 +202,14 @@ if (nultyp == 2) nularray[ii] = 1; } - else - snprintf(tmpstr, 400,cform, earray[jj]); + else if (intcol) + { + snprintf(tmpstr, 400,cform, (int) earray[jj]); + } + else + { + snprintf(tmpstr, 400,cform, earray[jj]); + } strncat(array[ii], tmpstr, dwidth); strcat(array[ii], ","); @@ -202,8 +222,14 @@ if (nultyp == 2) nularray[ii] = 1; } - else - snprintf(tmpstr, 400,cform, earray[jj]); + else if (intcol) + { + snprintf(tmpstr, 400,cform, (int) earray[jj]); + } + else + { + snprintf(tmpstr, 400,cform, earray[jj]); + } strncat(array[ii], tmpstr, dwidth); strcat(array[ii], ")"); @@ -237,6 +263,19 @@ { /* convert the Fortran style format to a C style format */ ffcdsp(dispfmt, cform); + + /* Special case: TDISPn='Aw' disallowed for numeric types */ + if (dispfmt[0] == 'A') { + cform[0] = 0; + + /* Special case: if the output is intended to be represented + as an integer, but we read it as a double, we need to + set intcol = 1 so it is printed as an integer */ + } else if ((dispfmt[0] == 'I') || (dispfmt[0] == 'i') || + (dispfmt[0] == 'O') || (dispfmt[0] == 'o') || + (dispfmt[0] == 'Z') || (dispfmt[0] == 'z')) { + intcol = 1; + } } if (!cform[0]) @@ -255,8 +294,14 @@ if (nultyp == 2) nularray[ii] = 1; } - else - snprintf(tmpstr, 400,cform, darray[jj]); + else if (intcol) + { + snprintf(tmpstr, 400,cform, (int) darray[jj]); + } + else + { + snprintf(tmpstr, 400,cform, darray[jj]); + } strncat(array[ii], tmpstr, dwidth); strcat(array[ii], ","); @@ -269,8 +314,14 @@ if (nultyp == 2) nularray[ii] = 1; } - else - snprintf(tmpstr, 400,cform, darray[jj]); + else if (intcol) + { + snprintf(tmpstr, 400,cform, (int) darray[jj]); + } + else + { + snprintf(tmpstr, 400,cform, darray[jj]); + } strncat(array[ii], tmpstr, dwidth); strcat(array[ii], ")"); @@ -436,6 +487,19 @@ { /* convert the Fortran style TDISPn to a C style format */ ffcdsp(dispfmt, cform); + + /* Special case: TDISPn='Aw' disallowed for numeric types */ + if (dispfmt[0] == 'A') { + cform[0] = 0; + + /* Special case: if the output is intended to be represented + as an integer, but we read it as a double, we need to + set intcol = 1 so it is printed as an integer */ + } else if ((dispfmt[0] == 'I') || (dispfmt[0] == 'i') || + (dispfmt[0] == 'O') || (dispfmt[0] == 'o') || + (dispfmt[0] == 'Z') || (dispfmt[0] == 'z')) { + intcol = 1; + } } if (!cform[0]) diff -Nru cfitsio-3.470/getkey.c cfitsio-4.0.0/getkey.c --- cfitsio-3.470/getkey.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/getkey.c 2021-05-20 01:18:54.000000000 +0000 @@ -286,6 +286,7 @@ */ { LONGLONG longval; + ULONGLONG ulongval; double doubleval; if (*status > 0) /* inherit input status value if > 0 */ @@ -361,12 +362,12 @@ } else if (datatype == TULONG) { - if (ffgkyjj(fptr, keyname, &longval, comm, status) <= 0) + if (ffgkyujj(fptr, keyname, &ulongval, comm, status) <= 0) { - if (longval > ULONG_MAX || longval < 0) + if (ulongval > ULONG_MAX) *status = NUM_OVERFLOW; else - *(unsigned long *) value = longval; + *(unsigned long *) value = ulongval; } } else if (datatype == TLONG) diff -Nru cfitsio-3.470/group.c cfitsio-4.0.0/group.c --- cfitsio-3.470/group.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/group.c 2021-05-20 01:18:54.000000000 +0000 @@ -4204,7 +4204,7 @@ if(location == NULL) { - ffpmsg("NULL Location string given ==> ingore location (ffgmf)"); + ffpmsg("NULL Location string given ==> ignore location (ffgmf)"); *member = i; continue; } @@ -5939,21 +5939,21 @@ else if(fits_strcasecmp(tmpStr3,"stdin://") == 0) { *status = URL_PARSE_ERROR; - ffpmsg("cannot make vaild URL from stdin:// (fits_get_url)"); + ffpmsg("cannot make valid URL from stdin:// (fits_get_url)"); *tmpStr1 = *tmpStr2 = 0; } else if(fits_strcasecmp(tmpStr3,"stdout://") == 0) { *status = URL_PARSE_ERROR; - ffpmsg("cannot make vaild URL from stdout:// (fits_get_url)"); + ffpmsg("cannot make valid URL from stdout:// (fits_get_url)"); *tmpStr1 = *tmpStr2 = 0; } else if(fits_strcasecmp(tmpStr3,"irafmem://") == 0) { *status = URL_PARSE_ERROR; - ffpmsg("cannot make vaild URL from irafmem:// (fits_get_url)"); + ffpmsg("cannot make valid URL from irafmem:// (fits_get_url)"); *tmpStr1 = *tmpStr2 = 0; } diff -Nru cfitsio-3.470/grparser.c cfitsio-4.0.0/grparser.c --- cfitsio-3.470/grparser.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/grparser.c 2021-05-20 01:18:54.000000000 +0000 @@ -1215,8 +1215,13 @@ if (NULL == status) return(NGP_NUL_PTR); if (NGP_OK != *status) return(*status); + /* This function uses many global variables (local to this file) and + therefore is not thread-safe. */ + FFLOCK; + if ((NULL == ff) || (NULL == ngp_template)) { *status = NGP_NUL_PTR; + FFUNLOCK; return(*status); } @@ -1229,6 +1234,7 @@ if (NGP_OK != (r = ngp_delete_extver_tab())) { *status = r; + FFUNLOCK; return(r); } @@ -1237,7 +1243,11 @@ { fits_movabs_hdu(ff, 1, &tmp0, status); fits_get_hdrspace(ff, &keys_exist, &more_keys, status); fits_movabs_hdu(ff, my_hn, &tmp0, status); - if (NGP_OK != *status) return(*status); /* error here means file is corrupted */ + if (NGP_OK != *status) /* error here means file is corrupted */ + { + FFUNLOCK; + return(*status); + } if (keys_exist > 0) first_extension = 0; /* if keywords exist assume PHDU already exist */ } else @@ -1263,10 +1273,16 @@ fits_movabs_hdu(ff, my_hn, &tmp0, status); } - if (NGP_OK != *status) return(*status); - - if (NGP_OK != (*status = ngp_include_file(ngp_template))) return(*status); - + + if (NGP_OK != *status) { + FFUNLOCK; + return(*status); + } + if (NGP_OK != (*status = ngp_include_file(ngp_template))) { + FFUNLOCK; + return(*status); + } + for (i = strlen(ngp_template) - 1; i >= 0; i--) /* strlen is > 0, otherwise fopen failed */ { #ifdef MSDOS @@ -1334,5 +1350,6 @@ ngp_delete_extver_tab(); /* delete extver table (if present), error ignored */ *status = r; + FFUNLOCK; return(r); } diff -Nru cfitsio-3.470/histo.c cfitsio-4.0.0/histo.c --- cfitsio-3.470/histo.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/histo.c 2021-05-20 01:18:54.000000000 +0000 @@ -1018,7 +1018,7 @@ } /* get the datatype of the column */ - fits_get_coltype(*fptr, histData.hcolnum[ii], &datatype, + fits_get_eqcoltype(*fptr, histData.hcolnum[ii], &datatype, NULL, NULL, status); if (datatype < 0 || datatype == TSTRING) @@ -1670,7 +1670,7 @@ } /* get the datatype of the column */ - fits_get_coltype(fptr, colnum[ii], &datatype, + fits_get_eqcoltype(fptr, colnum[ii], &datatype, NULL, NULL, status); if (datatype < 0 || datatype == TSTRING) @@ -2197,7 +2197,7 @@ ibin = (long) tbin[ii]; /* get the datatype of the column */ - fits_get_coltype(fptr, colnum[ii], &datatype, NULL, NULL, status); + fits_get_eqcoltype(fptr, colnum[ii], &datatype, NULL, NULL, status); if (datatype <= TLONG && (double) imin == tmin[ii] && (double) imax == tmax[ii] && diff -Nru cfitsio-3.470/imcompress.c cfitsio-4.0.0/imcompress.c --- cfitsio-3.470/imcompress.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/imcompress.c 2021-05-20 01:18:54.000000000 +0000 @@ -4422,7 +4422,7 @@ long fpixel[MAX_COMPRESS_DIM], lpixel[MAX_COMPRESS_DIM]; long inc[MAX_COMPRESS_DIM]; long i5, i4, i3, i2, i1, i0, irow; - int ii, ndim, pixlen, tilenul; + int ii, ndim, pixlen, tilenul=0; void *buffer; char *bnullarray = 0; double testnullval = 0.; @@ -5245,7 +5245,7 @@ { char keyword[FLEN_KEYWORD]; char value[FLEN_VALUE]; - int ii, tstatus, doffset; + int ii, tstatus, tstatus2, doffset, oldFormat=0, colNum=0; long expect_nrows, maxtilelen; if (*status > 0) @@ -5282,26 +5282,47 @@ ffpmsg(value); return (*status = DATA_DECOMPRESSION_ERR); } - - /* get the floating point to integer quantization type, if present. */ - /* FITS files produced before 2009 will not have this keyword */ - tstatus = 0; - if (ffgky(infptr, TSTRING, "ZQUANTIZ", value, NULL, &tstatus) > 0) + + if (ffgky (infptr, TINT, "ZBITPIX", &(infptr->Fptr)->zbitpix, + NULL, status) > 0) { - (infptr->Fptr)->quantize_method = 0; - (infptr->Fptr)->quantize_level = 0; - } else { + ffpmsg("required ZBITPIX compression keyword not found"); + return(*status); + } - if (!FSTRCMP(value, "NONE") ) { - (infptr->Fptr)->quantize_level = NO_QUANTIZE; - } else if (!FSTRCMP(value, "SUBTRACTIVE_DITHER_1") ) - (infptr->Fptr)->quantize_method = SUBTRACTIVE_DITHER_1; - else if (!FSTRCMP(value, "SUBTRACTIVE_DITHER_2") ) - (infptr->Fptr)->quantize_method = SUBTRACTIVE_DITHER_2; - else if (!FSTRCMP(value, "NO_DITHER") ) - (infptr->Fptr)->quantize_method = NO_DITHER; - else - (infptr->Fptr)->quantize_method = 0; + /* If ZZERO and ZSCALE columns don't exist for floating-point types, + assume there is NO quantization. Treat exactly as if it had ZQUANTIZ='NONE'. + This is true regardless of whether or not file has a ZQUANTIZ keyword. */ + tstatus=0; + tstatus2=0; + if ((infptr->Fptr->zbitpix < 0) && + (fits_get_colnum(infptr,CASEINSEN,"ZZERO",&colNum,&tstatus) + == COL_NOT_FOUND) && + (fits_get_colnum(infptr,CASEINSEN,"ZSCALE",&colNum,&tstatus2) + == COL_NOT_FOUND)) { + (infptr->Fptr)->quantize_level = NO_QUANTIZE; + } + else { + /* get the floating point to integer quantization type, if present. */ + /* FITS files produced before 2009 will not have this keyword */ + tstatus = 0; + if (ffgky(infptr, TSTRING, "ZQUANTIZ", value, NULL, &tstatus) > 0) + { + (infptr->Fptr)->quantize_method = 0; + (infptr->Fptr)->quantize_level = 0; + } else { + + if (!FSTRCMP(value, "NONE") ) { + (infptr->Fptr)->quantize_level = NO_QUANTIZE; + } else if (!FSTRCMP(value, "SUBTRACTIVE_DITHER_1") ) + (infptr->Fptr)->quantize_method = SUBTRACTIVE_DITHER_1; + else if (!FSTRCMP(value, "SUBTRACTIVE_DITHER_2") ) + (infptr->Fptr)->quantize_method = SUBTRACTIVE_DITHER_2; + else if (!FSTRCMP(value, "NO_DITHER") ) + (infptr->Fptr)->quantize_method = NO_DITHER; + else + (infptr->Fptr)->quantize_method = 0; + } } /* get the floating point quantization dithering offset, if present. */ @@ -5315,13 +5336,6 @@ (infptr->Fptr)->dither_seed = doffset; } - if (ffgky (infptr, TINT, "ZBITPIX", &(infptr->Fptr)->zbitpix, - NULL, status) > 0) - { - ffpmsg("required ZBITPIX compression keyword not found"); - return(*status); - } - if (ffgky (infptr,TINT, "ZNAXIS", &(infptr->Fptr)->zndim, NULL, status) > 0) { ffpmsg("required ZNAXIS compression keyword not found"); @@ -5391,7 +5405,16 @@ } tstatus = 0; - if (ffgky(infptr, TINT,"ZVAL2", &(infptr->Fptr)->rice_bytepix, + /* First check for very old files, where ZVAL2 wasn't yet designated + for bytepix */ + if (!ffgky(infptr, TSTRING, "ZNAME2", value, NULL, &tstatus) + && !FSTRCMP(value, "NOISEBIT")) + { + oldFormat = 1; + } + + tstatus = 0; + if (oldFormat || ffgky(infptr, TINT,"ZVAL2", &(infptr->Fptr)->rice_bytepix, NULL, &tstatus) > 0) { (infptr->Fptr)->rice_bytepix = 4; /* default value */ @@ -5857,6 +5880,7 @@ int blocksize, ntilebins, tilecol = 0; float fnulval=0; float *tempfloat = 0; + double *tempdouble = 0; double dnulval=0; double bscale, bzero, actual_bzero, dummy = 0; /* scaling parameters */ long tilesize; /* number of bytes */ @@ -5977,8 +6001,34 @@ free (cbuf); return (*status = DATA_DECOMPRESSION_ERR); } + + /* Do not allow image float/doubles into int arrays */ + if (datatype != TFLOAT && datatype != TDOUBLE) + { + ffpmsg("attempting to read compressed float or double image into incompatible data type"); + free(cbuf); + return (*status = DATA_DECOMPRESSION_ERR); + } + + if (datatype == TFLOAT && (infptr->Fptr)->zbitpix == DOUBLE_IMG) + { + tempdouble = (double*)malloc(idatalen); + if (tempdouble == NULL) { + ffpmsg("Memory allocation failure for tempdouble. (imcomp_decompress_tile)"); + free (cbuf); + return (*status = MEMORY_ALLOCATION); + } - if (datatype == TDOUBLE && (infptr->Fptr)->zbitpix == FLOAT_IMG) { + /* uncompress the data into temp buffer */ + if (uncompress2mem_from_mem ((char *)cbuf, (long) nelemll, + (char **) &tempdouble, &idatalen, NULL, &tilebytesize, status)) { + ffpmsg("failed to gunzip the image tile"); + free (tempdouble); + free (cbuf); + return (*status); + } + } + else if (datatype == TDOUBLE && (infptr->Fptr)->zbitpix == FLOAT_IMG) { /* have to allocat a temporary buffer for the uncompressed data in the */ /* case where a gzipped "float" tile is returned as a "double" array */ tempfloat = (float*) malloc (idatalen); @@ -6045,16 +6095,21 @@ } else if (tilebytesize == 8 * tilelen) { /* double pixels */ #if BYTESWAPPED - ffswap8((double *) buffer, tilelen); + if (tempdouble) + ffswap8((double *) tempdouble, tilelen); + else + ffswap8((double *) buffer, tilelen); #endif if (datatype == TFLOAT) { if (nulval) { fnulval = *(float *) nulval; } - fffr8r4((double *) buffer, (long) tilelen, 1., 0., nullcheck, + fffr8r4((double *) tempdouble, (long) tilelen, 1., 0., nullcheck, fnulval, bnullarray, anynul, (float *) buffer, status); + free(tempdouble); + tempdouble=0; } else if (datatype == TDOUBLE) { if (nulval) { dnulval = *(double *) nulval; @@ -8415,7 +8470,7 @@ (int) compmemlen, 32); } else { /* this should not happen */ - ffpmsg(" Error: cannot compress this column type with the RICE algorthm"); + ffpmsg(" Error: cannot compress this column type with the RICE algorithm"); free(vlamem); free(cdescript); free(cm_buffer); free(cvlamem); *status = DATA_COMPRESSION_ERR; return(*status); @@ -8435,7 +8490,7 @@ &cvlamem, &compmemlen, realloc, &dlen, status); } else { /* this should not happen */ - ffpmsg(" Error: unknown compression algorthm"); + ffpmsg(" Error: unknown compression algorithm"); free(vlamem); free(cdescript); free(cm_buffer); free(cvlamem); *status = DATA_COMPRESSION_ERR; return(*status); @@ -9226,7 +9281,7 @@ (int) vlalen, 32); } else { /* this should not happen */ - ffpmsg(" Error: cannot uncompress this column type with the RICE algorthm"); + ffpmsg(" Error: cannot uncompress this column type with the RICE algorithm"); *status = DATA_DECOMPRESSION_ERR; free(uncompressed_vla); free(compressed_vla); free(rm_buffer); free(cm_buffer); @@ -9251,7 +9306,7 @@ } else { /* this should not happen */ - ffpmsg(" Error: unknown compression algorthm"); + ffpmsg(" Error: unknown compression algorithm"); free(uncompressed_vla); free(compressed_vla); free(rm_buffer); free(cm_buffer); *status = DATA_COMPRESSION_ERR; return(*status); diff -Nru cfitsio-3.470/longnam.h cfitsio-4.0.0/longnam.h --- cfitsio-3.470/longnam.h 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/longnam.h 2021-05-20 01:18:54.000000000 +0000 @@ -248,6 +248,7 @@ #define fits_copy_hdu ffcopy #define fits_copy_file ffcpfl #define fits_copy_header ffcphd +#define fits_copy_hdutab ffcpht #define fits_copy_data ffcpdt #define fits_write_hdu ffwrhdu diff -Nru cfitsio-3.470/Makefile.in cfitsio-4.0.0/Makefile.in --- cfitsio-3.470/Makefile.in 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/Makefile.in 2021-05-20 01:18:54.000000000 +0000 @@ -21,8 +21,9 @@ PACKAGE = cfitsio # CFITSIO version numbers: -CFITSIO_MAJOR = @CFITSIO_MAJOR@ +CFITSIO_MAJOR = @CFITSIO_MAJOR@ CFITSIO_MINOR = @CFITSIO_MINOR@ +CFITSIO_MICRO = @CFITSIO_MICRO@ CFITSIO_SONAME = @CFITSIO_SONAME@ prefix = @prefix@ @@ -30,7 +31,7 @@ CFITSIO_BIN = ${DESTDIR}@bindir@ CFITSIO_LIB = ${DESTDIR}@libdir@ CFITSIO_INCLUDE = ${DESTDIR}@includedir@ -INSTALL_DIRS = @INSTALL_ROOT@ ${CFITSIO_INCLUDE} ${CFITSIO_LIB} ${CFITSIO_LIB}/pkgconfig +INSTALL_DIRS = ${DESTDIR}@INSTALL_ROOT@ ${CFITSIO_INCLUDE} ${CFITSIO_LIB} ${CFITSIO_LIB}/pkgconfig SHELL = /bin/sh @@ -68,9 +69,7 @@ pliocomp.c fits_hcompress.c fits_hdecompress.c \ simplerng.c @GSIFTP_SRC@ -ZLIB_SOURCES = zlib/adler32.c zlib/crc32.c zlib/deflate.c zlib/infback.c \ - zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \ - zlib/uncompr.c zlib/zcompress.c zlib/zuncompress.c zlib/zutil.c +ZLIB_SOURCES = zcompress.c zuncompress.c SOURCES = ${CORE_SOURCES} ${ZLIB_SOURCES} @F77_WRAPPERS@ @@ -134,6 +133,7 @@ FPACK_UTILS = fpack funpack +# Optional build target: utils: ${FPACK_UTILS} ${UTILS} swapproc.o: swapproc.c diff -Nru cfitsio-3.470/putcolb.c cfitsio-4.0.0/putcolb.c --- cfitsio-3.470/putcolb.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/putcolb.c 2021-05-20 01:18:54.000000000 +0000 @@ -356,6 +356,7 @@ and will be inverse-scaled by the FITS TSCALn and TZEROn values if necessary. */ { + int writemode; int tcode, maxelem2, hdutype, writeraw; long twidth, incre; long ntodo; @@ -377,7 +378,15 @@ /*---------------------------------------------------*/ /* Check input and get parameters about the column: */ /*---------------------------------------------------*/ - if (ffgcprll( fptr, colnum, firstrow, firstelem, nelem, 1, &scale, &zero, + + /* IMPORTANT NOTE: that the special case of using this subroutine + to write bytes to a character column are handled internally + by the call to ffgcprll() below. It will adjust the effective + *tcode, repeats, etc, to appear as a TBYTE column. */ + + writemode = 17; /* Equivalent to writemode = 1 but allow TSTRING -> TBYTE */ + + if (ffgcprll( fptr, colnum, firstrow, firstelem, nelem, writemode, &scale, &zero, tform, &twidth, &tcode, &maxelem2, &startpos, &elemnum, &incre, &repeat, &rowlen, &hdutype, &tnull, snull, status) > 0) return(*status); @@ -481,18 +490,19 @@ case (TSTRING): /* numerical column in an ASCII table */ - if (strchr(tform,'A')) + if (strchr(tform,'A')) { /* write raw input bytes without conversion */ /* This case is a hack to let users write a stream */ /* of bytes directly to the 'A' format column */ - if (incre == twidth) + if (incre == twidth) { ffpbyt(fptr, ntodo, &array[next], status); - else + } else { ffpbytoff(fptr, twidth, ntodo/twidth, incre - twidth, &array[next], status); - break; + } + break; } else if (cform[1] != 's') /* "%s" format is a string */ { diff -Nru cfitsio-3.470/putcol.c cfitsio-4.0.0/putcol.c --- cfitsio-3.470/putcol.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/putcol.c 2021-05-20 01:18:54.000000000 +0000 @@ -1106,7 +1106,7 @@ void *dataptr, *defaultnull; colNulls *col; int ii, jj, tstatus, naxis, bitpix; - int typecode, hdutype, jtype, type, anynul, nfiles, nbytes; + int typecode, hdutype, jtype, type, anynul=0, nfiles, nbytes; long totaln, nleft, frow, felement, n_optimum, i_optimum, ntodo; long rept, rowrept, width, tnull, naxes[9] = {1,1,1,1,1,1,1,1,1}, groups; double zeros = 0.; @@ -1423,8 +1423,11 @@ /* calc total number of elements to do on each iteration */ if (hdutype == IMAGE_HDU || cols[jj].datatype == TSTRING) { - ntodo = n_optimum; + ntodo = n_optimum; cols[jj].repeat = 1; + /* handle special case of a 0-width string column */ + if (hdutype == BINARY_TBL && rept == 0) + cols[jj].repeat = 0; /* get the BLANK keyword value, if it exists */ if (abs(typecode) == TBYTE || abs(typecode) == TSHORT || abs(typecode) == TLONG @@ -1701,7 +1704,8 @@ { /* allocate string to store the null string value */ col[jj].null.stringnull = calloc(rept + 1, sizeof(char) ); - col[jj].null.stringnull[1] = 1; /* to make sure string != 0 */ + if (rept > 0) + col[jj].null.stringnull[1] = 1; /* to make sure string != 0 */ /* allocate big block for the array of table column strings */ stringptr[0] = calloc((ntodo + 1) * (rept + 1), sizeof(char) ); diff -Nru cfitsio-3.470/putkey.c cfitsio-4.0.0/putkey.c --- cfitsio-3.470/putkey.c 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/putkey.c 2021-05-20 01:18:54.000000000 +0000 @@ -1401,12 +1401,13 @@ return(*status = BAD_DATE); } - else if (datestr[10] == 'T' && datestr[13] == ':' && datestr[16] == ':') + else if (datestr[10] == 'T') { - if (isdigit((int) datestr[11]) && isdigit((int) datestr[12]) - && isdigit((int) datestr[14]) && isdigit((int) datestr[15]) - && isdigit((int) datestr[17]) && isdigit((int) datestr[18]) ) - { + if (datestr[13] == ':' && datestr[16] == ':') { + if (isdigit((int) datestr[11]) && isdigit((int) datestr[12]) + && isdigit((int) datestr[14]) && isdigit((int) datestr[15]) + && isdigit((int) datestr[17]) && isdigit((int) datestr[18]) ) + { if (slen > 19 && datestr[19] != '.') { ffpmsg("input date string has illegal format:"); @@ -1423,14 +1424,21 @@ if (second) *second = atof(&datestr[17]); - } - else - { + } + else + { ffpmsg("input date string has illegal format:"); ffpmsg(datestr); return(*status = BAD_DATE); - } + } + } + else + { + ffpmsg("input date string has illegal format:"); + ffpmsg(datestr); + return(*status = BAD_DATE); + } } } else /* no date fields */ @@ -1564,7 +1572,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1623,7 +1631,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1683,7 +1691,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1741,7 +1749,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1800,7 +1808,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1859,7 +1867,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1918,7 +1926,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; @@ -1977,7 +1985,7 @@ while (len > 0 && comm[0][len - 1] == ' ') len--; /* ignore trailing blanks */ - if (comm[0][len - 1] == '&') + if (len > 0 && comm[0][len - 1] == '&') { len = minvalue(len, FLEN_COMMENT); tcomment[0] = '\0'; diff -Nru cfitsio-3.470/README.win cfitsio-4.0.0/README.win --- cfitsio-3.470/README.win 2019-05-08 15:34:50.000000000 +0000 +++ cfitsio-4.0.0/README.win 2021-05-20 01:32:01.000000000 +0000 @@ -1,115 +1,190 @@ -Instructions on building and using CFITSIO on Windows platforms +Instructions on building and using CFITSIO on Windows platforms for C programmers using Microsoft Visual Studio or Borland C++. -These instructions for building the CFITSIO library under Windows use the -CMake build system that is available from http://www.cmake.org. +These instructions for building the CFITSIO library under Windows use +the CMake build system that is available from http://www.cmake.org. =============================================================================== -1. Build the CFITSIO dll library +1. Build the CFITSIO dll library -This step will create the cfitsio.dll, and cfitsio.lib files. If you have -downloaded the CFITSIO DLL .zip file that already contains the pre-built -versions of these files, then SKIP THIS STEP. - - a. If CMAKE is not already installed on your machine, download it from - http://www.cmake.org. It is recommended that you choose the - "Add CMake to the system PATH for current user" option during the + a. If CMAKE is not already installed on your machine, download it + from http://www.cmake.org. It is recommended that you choose the + "Add CMake to the system PATH for current user" option during the installation setup process for convenience when running CMake later on. - b. Unzip the CFITSIO .zip file (e.g. cfit3360.zip) that was obtained from - the CFITSIO Web site (http://heasarc.gsfc.nasa.gov/fitsio/). This will - create a new \cfitsio subdirectory that contains the source code and - documentation files. It should also contain a CMakeLists.txt file that - will be used during the CMake build process. - - c. Open the Visual Studio Command Prompt window, likely using a - desktop icon with this same name, (or the equivalent Borland command window) - and CD (change directory) into the parent directory that is one level - above the directory containing the CFITSIO source files that was created - in the previous step. + b. Install ZLIB: The compression library "zlib" is required in + order to build CFITSIO. Visit their site at - d. Create a new "cfitsio.build" subdirectory, and CD into it with the - following commands: + https://zlib.net + + to download the latest distribution. Unpack it, then build and + install it from a parallel directory, for example: + + mkdir zlib.build + cd zlib.build + cmake ..\zlib-1.2.11 -DCMAKE_INSTALL_PREFIX=c:\Users\myname\zlib + cmake --build . --config Release + cmake --install . + + The cmake comands below will use the path "c:\Users\myname\zlib" + as an example for the installed zlib location. + + c. Unzip the CFITSIO .zip file (e.g. cfit-4.0.0.zip) that was obtained from + the CFITSIO Web site (http://heasarc.gsfc.nasa.gov/fitsio). This will + create a new \cfitsio-4.0.0 subdirectory that contains the source code + and documentation files. It also contains a CMakeLists.txt file + that will be used during the CMake build process. + + d. Open the Visual Studio Command Prompt window, likely using a desktop + icon with this same name, (or the equivalent Borland command window) + and cd (change directory) into the parent directory that is one level + above the directory containing the CFITSIO source files that was + created in the previous step. + + e. Create a new subdirectory (for example, "cfitsio.build"), and cd + into it with the following commands: mkdir cfitsio.build cd cfitsio.build - When using Visual Studio, all the files that are generated during the - CMake process will be created in or under this subdirectory. - - e. Decide which CMake Generator you will want to use in the following step. - This depends on which C/C++ compiler you are using and will likely have - a name such as: - - "Visual Studio 10" - "Visual Studio 10 Win64" (for 64-bit builds) - "Visual Studio 11" - "Visual Studio 11 Win64" (for 64-bit builds) - "Visual Studio 12" - "Visual Studio 12 Win64" (for 64-bit builds) + When using Visual Studio, all the files that are generated during + the CMake process will be created in or under this subdirectory. + + f. Create the CMake files necessary for the build: + + To use the default Visual Studio compilers and architecture, + simply run (for example): + + cmake ..\cfitsio-4.0.0 -DCMAKE_PREFIX_PATH=c:\Users\myname\zlib + + Alternatively, you can specify the name of a CMake Generator + using the "-G" flag: + + cmake -G "" ..\cfitsio-4.0.0 -DCMAKE_PREFIX_PATH=c:\Users\myname\zlib + + Where the string "" designates your choice + of compiler. Some possible options are: + + "Visual Studio 16 2019" + "Visual Studio 16 2019" -A Win32 (for 32-bit builds) + "Visual Studio 15 2017 Win64" + "Visual Studio 15 2017" (for 32-bit builds) + "Visual Studio 15 2017" -A Win32 (for 32-bit builds) + "MinGW Makefiles" "Borland Makefiles" "NMake Makefiles" - You can see a list of all the available CMake Generators by executing - the command + You can see a list of all the available CMake Generators by + executing the command + + cmake /? + + Note that these names are case-sensitive and must be entered + exactly as displayed. + + Note that the "..\cfitsio-4.0.0" argument gives the relative + path to the directory that contains the CFITSIO source files + and the CMakeLists.txt file. + + Some other optional flags are available to use during this + step, using this format: + + cmake -G ..\cfitsio-4.0.0 -D