diff --git a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java index 6438486..edbc261 100755 --- a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java @@ -22,8 +22,8 @@ public class Launcher { Properties appProps = new Properties(); -// String appConfigPath = "/Users/anil.koyuncu/projects/fixminer/fixminer_source/src/main/resource/app.properties"; - String appConfigPath = args[0]; + String appConfigPath = "/Users/anilkoyuncu/projects/fixminer/fixminer_source/src/main/resource/app.properties"; +// String appConfigPath = args[0]; appProps.load(new FileInputStream(appConfigPath)); // String portInner = appProps.getProperty("portInner","6380"); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java index ebb3c1b..bb418c1 100755 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java @@ -43,7 +43,8 @@ public class EDiffParser extends Parser { // GumTree results boolean isJava =false; List gumTreeResults = null; - if (revFile.getName().endsWith(".c") & prevFile.getName().endsWith(".c") || revFile.getName().endsWith(".h") & prevFile.getName().endsWith(".h")){ + if (true){ +// if (revFile.getName().endsWith(".c") & prevFile.getName().endsWith(".c") || revFile.getName().endsWith(".h") & prevFile.getName().endsWith(".h")){ // gumTreeResults = new GumTreeComparer().compareCFilesWithGumTree(prevFile, revFile); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouperForC.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouperForC.java index 323becd..e36d6bb 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouperForC.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouperForC.java @@ -88,6 +88,7 @@ public class HierarchicalRegrouperForC { for(HierarchicalActionSet a:reActionSets){ HierarchicalActionSet hierarchicalActionSet = removeBlocks(a); hierarchicalActionSet = removeIFthenBlocks(hierarchicalActionSet); + hierarchicalActionSet = removeParentForSingle(hierarchicalActionSet); reActionSets1.add(hierarchicalActionSet); } @@ -97,19 +98,23 @@ public class HierarchicalRegrouperForC { private HierarchicalActionSet removeBlocks(HierarchicalActionSet actionSet){ List subActions = actionSet.getSubActions(); + Action action = actionSet.getAction(); if (subActions.size() == 1){ HierarchicalActionSet subaction = subActions.get(0); + Action action1 = subaction.getAction(); //else,then,block - if(subaction.getAstNodeType().equals("block")){//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){ - List subSubActions = subaction.getSubActions(); - if(subSubActions.size() == 1){ + if(action.getClass().equals(action1.getClass())) { + if (subaction.getAstNodeType().equals("block")) {//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){ + List subSubActions = subaction.getSubActions(); + if (subSubActions.size() == 1) { - HierarchicalActionSet subsubsubAction = subSubActions.get(0); - List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subsubsubAction.getAstNodeType()); - if(keysByValue != null && keysByValue.size() ==1){ - subsubsubAction.setParent(null); - return removeBlocks(subsubsubAction); + HierarchicalActionSet subsubsubAction = subSubActions.get(0); + List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subsubsubAction.getAstNodeType()); + if (keysByValue != null && keysByValue.size() == 1) { + subsubsubAction.setParent(null); + return removeBlocks(subsubsubAction); + } } } } @@ -117,29 +122,54 @@ public class HierarchicalRegrouperForC { return actionSet; } - private HierarchicalActionSet removeIFthenBlocks(HierarchicalActionSet actionSet){ + + private HierarchicalActionSet removeParentForSingle(HierarchicalActionSet actionSet){ List subActions = actionSet.getSubActions(); + Action action = actionSet.getAction(); if (subActions.size() == 1){ HierarchicalActionSet subaction = subActions.get(0); //else,then,block - if(subaction.getAstNodeType().equals("then")|| subaction.getAstNodeType().equals("else")){//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){ - List subSubActions = subaction.getSubActions(); - if(subSubActions.size() == 1){ + Action action1 = subaction.getAction(); + //else,then,block + if(action.getClass().equals(action1.getClass())) { + if(!(subaction.getAstNodeType().equals("condition") || subaction.getAstNodeType().equals("init"))){ + List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subaction.getAstNodeType()); + if(keysByValue != null && keysByValue.size() ==1){ + subaction.setParent(null); + return removeParentForSingle(subaction); + }}} + } + return actionSet; - HierarchicalActionSet subsubsubAction = subSubActions.get(0); - if(subsubsubAction.getAstNodeType().equals("block")){ - List subActions1 = subsubsubAction.getSubActions(); - if (subActions1.size() ==1){ - HierarchicalActionSet hierarchicalActionSet = subActions1.get(0); - List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, hierarchicalActionSet.getAstNodeType()); - if(keysByValue != null && keysByValue.size() ==1){ - hierarchicalActionSet.setParent(null); - return removeBlocks(hierarchicalActionSet); + } + private HierarchicalActionSet removeIFthenBlocks(HierarchicalActionSet actionSet){ + List subActions = actionSet.getSubActions(); + Action action = actionSet.getAction(); + if (subActions.size() == 1){ + HierarchicalActionSet subaction = subActions.get(0); + //else,then,block + Action action1 = subaction.getAction(); + //else,then,block + if(action.getClass().equals(action1.getClass())) { + if (subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")) {//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){ + List subSubActions = subaction.getSubActions(); + if (subSubActions.size() == 1) { + HierarchicalActionSet subsubsubAction = subSubActions.get(0); + if (subsubsubAction.getAstNodeType().equals("block")) { + List subActions1 = subsubsubAction.getSubActions(); + if (subActions1.size() == 1) { + HierarchicalActionSet hierarchicalActionSet = subActions1.get(0); + List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, hierarchicalActionSet.getAstNodeType()); + if (keysByValue != null && keysByValue.size() == 1) { + hierarchicalActionSet.setParent(null); + return removeBlocks(hierarchicalActionSet); + + } } } - } + } } } } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HunkParserTest.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HunkParserTest.java index 4f9f5ae..3e9f19b 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HunkParserTest.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HunkParserTest.java @@ -10,6 +10,7 @@ import edu.lu.uni.serval.utils.EDiffHelper; import edu.lu.uni.serval.utils.PoolBuilder; import org.apache.commons.io.FileUtils; import org.javatuples.Pair; +import org.junit.Assert; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @@ -31,8 +32,8 @@ public class HunkParserTest { public void testSimple() throws IOException { // String input = "/Users/anil.koyuncu/projects/test/fixminer-core/python/data/gumInputLinux/revFiles/7f52f3_3845d29_drivers#pci#host#pcie-altera.c"; -// String root = "/Users/anil.koyuncu/projects/fixminer/gumInputLinux/linux/"; - String root = "/Users/anil.koyuncu/projects/fixminer/fixminer-core/python/data/gumInputLinux/"; +// String root = "//Users/anilkoyuncu/projects/gumInputLinux/"; + String root = "/Users/anilkoyuncu/projects/fixminer/fixminer-core/python/data/gumInputLinux/"; String filename =""; // filename ="freebsd_ceca9b8_b864ac4_sys#kern#sched_ule.c"; //too long // filename ="openbsd_e592ec_39c81a_sys#arch#i386#pci#pci_machdep.c"; //not parseable 56 "parameter_list" "" () ( (57 "parameter" "" () ( (22 "decl" "" () ()))) @@ -52,21 +53,21 @@ public class HunkParserTest { // filename ="omp_19fae3_1e4dcd_src#mca#mpool#sm#mpool_sm_mmap.c"; // cannot find // filename ="FFmpeg_a8343bf_2b2039_libavformat#riff.c"; // ok // filename ="freebsd_32766e4_200ff4_sbin#routed#parms.c"; // ok - filename ="openbsd_150ddd_cf0e20_usr.sbin#user#user.c"; //notok - filename ="openbsd_6fac1e_c3b383_usr.bin#tmux#window-copy.c"; //notok - filename ="freebsd_0cb6f2_b4c742_sys#dev#ipw#if_ipw.c"; //notok - filename ="php-src_7defd5_da06f7_ext#mbstring#mbstring.c"; //notok (19 "expr_stmt" "" () ())))) - filename ="libtiff_177169_71715f_tools#tiff2ps.c"; //notok (19 "expr_stmt" "" () ())))) +// filename ="openbsd_150ddd_cf0e20_usr.sbin#user#user.c"; //notok +// filename ="openbsd_6fac1e_c3b383_usr.bin#tmux#window-copy.c"; //notok +// filename ="freebsd_0cb6f2_b4c742_sys#dev#ipw#if_ipw.c"; //notok +// filename ="php-src_7defd5_da06f7_ext#mbstring#mbstring.c"; //notok (19 "expr_stmt" "" () ())))) +// filename ="libtiff_177169_71715f_tools#tiff2ps.c"; //notok (19 "expr_stmt" "" () ())))) filename ="linux_955c1dd_0aaee4_drivers#gpu#drm#i915#gvt#handlers.c"; //notok (19 "expr_stmt" "" () ())))) // filename ="FFmpeg_0726b2_66d2ff_libav#jpeg.c"; String pj = filename.split("_")[0]; filename = filename.replace(pj+"_",""); - root = root + pj + "/"; -// root = root + "codeflaws/"; - +// root = root + pj + "/"; + root = root + "codeflaws/"; + filename ="287-A-14208510-14208532.c"; // filename = "474-A-15925943-15925951.c"; //mot ok // filename = "6-C-11536006-11536039.c"; //okish // filename = "500-A-18298071-18298124.c"; //ok @@ -85,7 +86,7 @@ public class HunkParserTest { EDiffHunkParser parser = new EDiffHunkParser(); - String srcMLPath = "/Users/anil.koyuncu/Downloads/srcML.0.9.5/bin/srcml"; + String srcMLPath = "/usr/local/bin/srcml"; // String srcMLPath = "/Users/anil.koyuncu/Downloads/srcML.0.9.5/bin/srcml"; parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); // ITree t = new SrcmlCppTreeGenerator().generateFromFile(input).getRoot(); @@ -93,6 +94,7 @@ public class HunkParserTest { } + @Test public void dumpFnction() throws Exception { String pattern = "function/20/gstreamer_0af74c_e8bae0_libs#gst#net#gstptpclock.c.txt_0"; diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestIntroClass.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestIntroClass.java new file mode 100644 index 0000000..3a8dd1d --- /dev/null +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestIntroClass.java @@ -0,0 +1,446 @@ +package edu.lu.uni.serval.fixminer.akka.ediff; + +import com.github.gumtreediff.tree.ITree; +import edu.lu.uni.serval.utils.EDiffHelper; +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Optional; +import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static reactor.core.reactivestreams.PublisherFactory.forEach; + +public class TestIntroClass { + + + + @Test + public void test_manybugs_gmp_14166_14167() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gmp:14166-14167"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@ssize = SIZ a >= 0 1 else - 1 @TO@ ssize = SIZ a >= 0 ( asize != 0 ) else - 1 @AT@ 1795 @LENGTH@ 29\n" + + "---UPD expr@@ssize = SIZ a >= 0 1 else - 1 @TO@ ssize = SIZ a >= 0 ( asize != 0 ) else - 1 @AT@ 1795 @LENGTH@ 29\n" + + "------UPD ternary@@SIZ a >= 0 1 else - 1 @TO@ SIZ a >= 0 ( asize != 0 ) else - 1 @AT@ 1803 @LENGTH@ 21\n" + + "---------UPD then@@1 @TO@ ( asize != 0 ) @AT@ 1817 @LENGTH@ 4\n" + + "------------UPD expr@@1 @TO@ ( asize != 0 ) @AT@ 1818 @LENGTH@ 1\n" + + "---------------INS operator@@( @TO@ expr@@1 @AT@ 1813 @LENGTH@ 1\n" + + "---------------INS name@@asize @TO@ expr@@1 @AT@ 1814 @LENGTH@ 5\n" + + "---------------UPD literal@@1 @TO@ 0 @AT@ 1818 @LENGTH@ 1\n" + + "---------------INS operator@@!= @TO@ expr@@1 @AT@ 1820 @LENGTH@ 2\n" + + "---------------INS operator@@) @TO@ expr@@1 @AT@ 1824 @LENGTH@ 1\n"); + } + + + @Test + public void test_manybugs_gzip_2009_09_26_a1d3d4019d_f17cbd13a1() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gzip:2009-09-26-a1d3d4019d-f17cbd13a1"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@ifd = fileno stdin @TO@ block@@if ! force && ! list && isatty fileno ( FILE * ) ( decompress stdin else stdout ) fprintf stderr \"%s: compressed data not %s a terminal. Use -f to force %scompression.\\n\" program_name decompress \"read from\" else \"written to\" decompress \"de\" else \"\" fprintf stderr \"For help, type: %s -h\\n\" program_name do_exit ERROR if decompress || ! ascii if ! test && ! list && ( ! decompress || ! ascii ) strcpy ifname \"stdin\" strcpy ofname \"stdout\" if fstat fileno stdin & istat != 0 progerror \"standard input\" do_exit ERROR ifile_size = S_ISREG istat . st_mode istat . st_size else - 1 time_stamp . tv_nsec = - 1 if ! no_time || list time_stamp = get_stat_mtime & istat clear_bufs to_stdout = 1 part_nb = 0 if decompress method = get_method ifd if method < 0 do_exit exit_code if list do_list ifd method for if * work fileno stdin fileno stdout != OK if input_eof break; method = get_method ifd if method < 0 bytes_out = 0 if verbose @AT@ 20290 @LENGTH@ 18\n" + + "---INS expr@@ifd = fileno stdin @TO@ expr_stmt@@ifd = fileno stdin @AT@ 20290 @LENGTH@ 18\n" + + "------INS name@@ifd @TO@ expr@@ifd = fileno stdin @AT@ 20290 @LENGTH@ 3\n" + + "------INS operator@@= @TO@ expr@@ifd = fileno stdin @AT@ 20294 @LENGTH@ 1\n" + + "------INS call@@fileno stdin @TO@ expr@@ifd = fileno stdin @AT@ 20296 @LENGTH@ 12\n" + + "---------INS name@@fileno @TO@ call@@fileno stdin @AT@ 20296 @LENGTH@ 6\n" + + "---------INS argument_list@@stdin @TO@ call@@fileno stdin @AT@ 20302 @LENGTH@ 8\n" + + "------------INS argument@@stdin @TO@ argument_list@@stdin @AT@ 20303 @LENGTH@ 5\n" + + "---------------INS expr@@stdin @TO@ argument@@stdin @AT@ 20303 @LENGTH@ 5\n" + + "------------------INS name@@stdin @TO@ expr@@stdin @AT@ 20303 @LENGTH@ 5\n"); + } + + @Test + public void test_manybugs_gzip_2010_02_19_3eb6091d69_884ef6d16c() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gzip:2010-02-19-3eb6091d69-884ef6d16c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ( z_len == 0 && ! decompress ) || z_len > MAX_SUFFIX fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix do_exit ERROR @TO@ if z_len == 0 || z_len > MAX_SUFFIX fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix do_exit ERROR @AT@ 18150 @LENGTH@ 136\n" + + "---UPD condition@@( z_len == 0 && ! decompress ) || z_len > MAX_SUFFIX @TO@ z_len == 0 || z_len > MAX_SUFFIX @AT@ 18150 @LENGTH@ 52\n" + + "------UPD expr@@( z_len == 0 && ! decompress ) || z_len > MAX_SUFFIX @TO@ z_len == 0 || z_len > MAX_SUFFIX @AT@ 18151 @LENGTH@ 52\n" + + "---------DEL operator@@( @AT@ 18151 @LENGTH@ 1\n" + + "---------DEL operator@@&& @AT@ 18163 @LENGTH@ 2\n" + + "---------DEL operator@@! @AT@ 18166 @LENGTH@ 1\n" + + "---------DEL name@@decompress @AT@ 18167 @LENGTH@ 10\n" + + "---------DEL operator@@) @AT@ 18177 @LENGTH@ 1\n" + + "---UPD then@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix do_exit ERROR @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix do_exit ERROR @AT@ 18202 @LENGTH@ 80\n" + + "------UPD block@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix do_exit ERROR @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix do_exit ERROR @AT@ 18202 @LENGTH@ 128\n" + + "---------UPD expr_stmt@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18212 @LENGTH@ 66\n" + + "------------UPD expr@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18212 @LENGTH@ 66\n" + + "---------------UPD call@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18212 @LENGTH@ 66\n" + + "------------------UPD argument_list@@stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18219 @LENGTH@ 80\n" + + "---------------------UPD argument@@\"%s: incorrect suffix '%s'\\n\" @TO@ \"%s: invalid suffix '%s'\\n\" @AT@ 18228 @LENGTH@ 29\n" + + "------------------------UPD expr@@\"%s: incorrect suffix '%s'\\n\" @TO@ \"%s: invalid suffix '%s'\\n\" @AT@ 18228 @LENGTH@ 29\n" + + "---------------------------UPD literal@@\"%s: incorrect suffix '%s'\\n\" @TO@ \"%s: invalid suffix '%s'\\n\" @AT@ 18228 @LENGTH@ 29\n"); + } + @Test + public void test_manybugs_libtiff_2005_12_21_3b848a7_3edb9cd() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2005-12-21-3b848a7-3edb9cd"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if td -> td_nstrips > 1 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 TIFFWarning module \"%s: Wrong \\\"%s\\\" field, ignoring and calculating from imagelength\" tif -> tif_name _TIFFFieldWithTag tif TIFFTAG_STRIPBYTECOUNTS -> field_name if EstimateStripByteCounts tif dir dircount < 0 bad @TO@ if td -> td_nstrips > 2 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 TIFFWarning module \"%s: Wrong \\\"%s\\\" field, ignoring and calculating from imagelength\" tif -> tif_name _TIFFFieldWithTag tif TIFFTAG_STRIPBYTECOUNTS -> field_name if EstimateStripByteCounts tif dir dircount < 0 bad @AT@ 19379 @LENGTH@ 344\n" + + "---UPD condition@@td -> td_nstrips > 1 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @TO@ td -> td_nstrips > 2 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @AT@ 19379 @LENGTH@ 129\n" + + "------UPD expr@@td -> td_nstrips > 1 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @TO@ td -> td_nstrips > 2 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @AT@ 19380 @LENGTH@ 126\n" + + "---------UPD literal@@1 @TO@ 2 @AT@ 19397 @LENGTH@ 1\n"); + + } + @Test + public void test_manybugs_libtiff_2007_07_19_ce4b7af_7d6e298() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-07-19-ce4b7af-7d6e298"); + Assert.assertEquals(hierarchicalActionSets.size(), 4); + +// Assert.fail(); + } + @Test + public void test_manybugs_libtiff_2009_02_05_764dbba_2e42d63() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2009-02-05-764dbba-2e42d63"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@TIFFGetFieldDefaulted in TIFFTAG_RESOLUTIONUNIT & res_unit @TO@ TIFFGetField in TIFFTAG_RESOLUTIONUNIT & res_unit @AT@ 163079 @LENGTH@ 58\n" + + "---UPD expr@@TIFFGetFieldDefaulted in TIFFTAG_RESOLUTIONUNIT & res_unit @TO@ TIFFGetField in TIFFTAG_RESOLUTIONUNIT & res_unit @AT@ 163079 @LENGTH@ 58\n" + + "------UPD call@@TIFFGetFieldDefaulted in TIFFTAG_RESOLUTIONUNIT & res_unit @TO@ TIFFGetField in TIFFTAG_RESOLUTIONUNIT & res_unit @AT@ 163079 @LENGTH@ 58\n" + + "---------UPD name@@TIFFGetFieldDefaulted @TO@ TIFFGetField @AT@ 163079 @LENGTH@ 21\n"); + + + } + @Test + public void test_manybugs_libtiff_2008_04_15_2e8b2f1_0d27dc0() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2008-04-15-2e8b2f1-0d27dc0"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(), StringUtils.join( new String[] {"UPD decl_stmt@@static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1793 @LENGTH@ 17245\n" , + "---UPD decl@@static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1793 @LENGTH@ 17245\n" , + "------UPD init@@TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1825 @LENGTH@ 17214\n" , + "---------UPD expr@@TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1825 @LENGTH@ 17214\n" , + "------------UPD block@@TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1825 @LENGTH@ 19568\n" , + "---------------UPD expr@@TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @TO@ TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @AT@ 8859 @LENGTH@ 118\n" , + "------------------UPD block@@TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @TO@ TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @AT@ 8859 @LENGTH@ 134\n" , + "---------------------UPD expr@@TIFF_SETGET_UNDEFINED @TO@ TIFF_SETGET_UINT16 @AT@ 8904 @LENGTH@ 21\n" , + "------------------------UPD name@@TIFF_SETGET_UNDEFINED @TO@ TIFF_SETGET_UINT16 @AT@ 8904 @LENGTH@ 21\n"})); + + } + @Test + public void test_manybugs_libtiff_2007_11_02_371336d_865f7b2() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-11-02-371336d-865f7b2"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@tmsize_t orig_rawcc tif -> tif_rawcc if tif -> tif_flags & TIFF_POSTENCODE tif -> tif_flags &= ~ TIFF_POSTENCODE if ! * tif -> tif_postencode tif TIFFErrorExt tif -> tif_clientdata module \"Error post-encoding before directory write\" ( 0 ) * tif -> tif_close tif if tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) if ( tif -> tif_flags & TIFF_MYBUFFER ) && tif -> tif_rawdata _TIFFfree tif -> tif_rawdata tif -> tif_rawdata = NULL tif -> tif_rawcc = 0 tif -> tif_rawdatasize = 0 tif -> tif_flags &= ~ ( TIFF_BEENWRITING | TIFF_BUFFERSETUP ) @TO@ if tif -> tif_flags & TIFF_POSTENCODE tif -> tif_flags &= ~ TIFF_POSTENCODE if ! * tif -> tif_postencode tif TIFFErrorExt tif -> tif_clientdata module \"Error post-encoding before directory write\" ( 0 ) * tif -> tif_close tif if tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) if ( tif -> tif_flags & TIFF_MYBUFFER ) && tif -> tif_rawdata _TIFFfree tif -> tif_rawdata tif -> tif_rawdata = NULL tif -> tif_rawcc = 0 tif -> tif_rawdatasize = 0 tif -> tif_flags &= ~ ( TIFF_BEENWRITING | TIFF_BUFFERSETUP ) @AT@ 15470 @LENGTH@ 1194\n" + + "---DEL decl_stmt@@tmsize_t orig_rawcc tif -> tif_rawcc @AT@ 15488 @LENGTH@ 36\n" + + "------DEL decl@@tmsize_t orig_rawcc tif -> tif_rawcc @AT@ 15488 @LENGTH@ 36\n" + + "---------DEL type@@tmsize_t @AT@ 15488 @LENGTH@ 8\n" + + "------------DEL name@@tmsize_t @AT@ 15488 @LENGTH@ 8\n" + + "---------DEL name@@orig_rawcc @AT@ 15497 @LENGTH@ 10\n" + + "---------DEL init@@tif -> tif_rawcc @AT@ 15510 @LENGTH@ 16\n" + + "------------DEL expr@@tif -> tif_rawcc @AT@ 15510 @LENGTH@ 16\n" + + "---------------DEL name@@tif -> tif_rawcc @AT@ 15510 @LENGTH@ 16\n" + + "------------------DEL name@@tif @AT@ 15510 @LENGTH@ 3\n" + + "------------------DEL operator@@-> @AT@ 15513 @LENGTH@ 2\n" + + "------------------DEL name@@tif_rawcc @AT@ 15515 @LENGTH@ 9\n" + + "---UPD if@@if tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) @TO@ if tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) @AT@ 16168 @LENGTH@ 222\n" + + "------UPD condition@@tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @TO@ tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @AT@ 16168 @LENGTH@ 133\n" + + "---------UPD expr@@tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @TO@ tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @AT@ 16169 @LENGTH@ 126\n" + + "------------DEL name@@tif -> tif_rawcc @AT@ 16191 @LENGTH@ 16\n" + + "---------------DEL name@@tif @AT@ 16191 @LENGTH@ 3\n" + + "---------------DEL operator@@-> @AT@ 16194 @LENGTH@ 2\n" + + "---------------DEL name@@tif_rawcc @AT@ 16196 @LENGTH@ 9\n" + + "------------DEL operator@@!= @AT@ 16206 @LENGTH@ 2\n" + + "------------DEL name@@orig_rawcc @AT@ 16209 @LENGTH@ 10\n" + + "------------DEL operator@@&& @AT@ 16226 @LENGTH@ 2\n"); + + + } + @Test + public void test_manybugs_libtiff_2007_08_24_827b6bc_22da1d6() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-08-24-827b6bc-22da1d6"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@const char module [] \"_TIFFMergeFields\" const char reason [] \"for fields array\" TIFFField * * tp uint32 i for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 tif -> tif_foundfield = NULL if tif -> tif_fields && tif -> tif_nfields > 0 else if ! tif -> tif_fields TIFFErrorExt tif -> tif_clientdata module \"Failed to allocate fields array\" 0 tp = tif -> tif_fields + tif -> tif_nfields for i = 0 i < n i ++ * tp ++ = ( TIFFField * ) ( info + i ) qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare n @TO@ const char module [] \"_TIFFMergeFields\" const char reason [] \"for fields array\" TIFFField * * tp uint32 i tif -> tif_foundfield = NULL if tif -> tif_fields && tif -> tif_nfields > 0 else if ! tif -> tif_fields TIFFErrorExt tif -> tif_clientdata module \"Failed to allocate fields array\" 0 tp = tif -> tif_fields + tif -> tif_nfields for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare n @AT@ 31106 @LENGTH@ 1161\n" + + "---MOV for@@for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ block@@const char module [] \"_TIFFMergeFields\" const char reason [] \"for fields array\" TIFFField * * tp uint32 i for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 tif -> tif_foundfield = NULL if tif -> tif_fields && tif -> tif_nfields > 0 else if ! tif -> tif_fields TIFFErrorExt tif -> tif_clientdata module \"Failed to allocate fields array\" 0 tp = tif -> tif_fields + tif -> tif_nfields for i = 0 i < n i ++ * tp ++ = ( TIFFField * ) ( info + i ) qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare n @AT@ 31228 @LENGTH@ 250\n" + + "---UPD for@@for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31228 @LENGTH@ 250\n" + + "------UPD block@@const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31248 @LENGTH@ 284\n" + + "---------UPD if@@if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31332 @LENGTH@ 159\n" + + "------------UPD condition@@fip @TO@ ! fip @AT@ 31332 @LENGTH@ 6\n" + + "---------------UPD expr@@fip @TO@ ! fip @AT@ 31333 @LENGTH@ 3\n" + + "------------------INS operator@@! @TO@ expr@@fip @AT@ 31918 @LENGTH@ 1\n" + + "------------UPD then@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31338 @LENGTH@ 152\n" + + "---------------UPD block@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31338 @LENGTH@ 191\n" + + "------------------DEL expr_stmt@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31343 @LENGTH@ 150\n" + + "---------------------DEL expr@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31343 @LENGTH@ 150\n" + + "------------------------DEL call@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31343 @LENGTH@ 150\n" + + "---------------------------DEL name@@TIFFErrorExt @AT@ 31343 @LENGTH@ 12\n" + + "---------------------------DEL argument_list@@tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31355 @LENGTH@ 156\n" + + "------------------------------DEL argument@@tif -> tif_clientdata @AT@ 31356 @LENGTH@ 21\n" + + "---------------------------------DEL expr@@tif -> tif_clientdata @AT@ 31356 @LENGTH@ 21\n" + + "------------------------------DEL argument@@module @AT@ 31377 @LENGTH@ 6\n" + + "---------------------------------DEL expr@@module @AT@ 31377 @LENGTH@ 6\n" + + "------------------------------------DEL name@@module @AT@ 31377 @LENGTH@ 6\n" + + "------------------------------DEL argument@@\"Field with tag %lu is already registered as \\\"%s\\\"\" @AT@ 31388 @LENGTH@ 52\n" + + "---------------------------------DEL expr@@\"Field with tag %lu is already registered as \\\"%s\\\"\" @AT@ 31388 @LENGTH@ 52\n" + + "------------------------------------DEL literal@@\"Field with tag %lu is already registered as \\\"%s\\\"\" @AT@ 31388 @LENGTH@ 52\n" + + "------------------------------DEL argument@@( unsigned int ) info ][i . field_tag @AT@ 31451 @LENGTH@ 37\n" + + "---------------------------------DEL expr@@( unsigned int ) info ][i . field_tag @AT@ 31451 @LENGTH@ 37\n" + + "------------------------------------DEL name@@int @AT@ 31461 @LENGTH@ 3\n" + + "------------------------------------DEL name@@info ][i @AT@ 31466 @LENGTH@ 8\n" + + "---------------------------------------DEL name@@info @AT@ 31466 @LENGTH@ 4\n" + + "---------------------------------------DEL index@@][i @AT@ 31471 @LENGTH@ 3\n" + + "------------------------------------------DEL expr@@[i @AT@ 31471 @LENGTH@ 2\n" + + "------------------------------------DEL name@@field_tag @AT@ 31474 @LENGTH@ 9\n" + + "------------------------------DEL argument@@fip -> field_name @AT@ 31494 @LENGTH@ 17\n" + + "---------------------------------DEL expr@@fip -> field_name @AT@ 31494 @LENGTH@ 17\n" + + "------------------DEL return@@0 @AT@ 31515 @LENGTH@ 10\n" + + "---------------------DEL expr@@0 @AT@ 31522 @LENGTH@ 1\n" + + "------------------------DEL literal@@0 @AT@ 31522 @LENGTH@ 1\n" + + "------------------INS expr_stmt@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @TO@ block@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @AT@ 31950 @LENGTH@ 69\n" + + "---------------------INS expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @TO@ expr_stmt@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31950 @LENGTH@ 69\n" + + "------------------------MOV operator@@( @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31451 @LENGTH@ 1\n" + + "------------------------MOV name@@unsigned @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31452 @LENGTH@ 8\n" + + "------------------------MOV operator@@) @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31464 @LENGTH@ 1\n" + + "------------------------MOV name@@[i @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31471 @LENGTH@ 2\n" + + "------------------------MOV operator@@. @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31473 @LENGTH@ 1\n" + + "------------------------INS name@@tif -> tif_fields ][tif -> tif_nfields @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31950 @LENGTH@ 38\n" + + "---------------------------INS name@@tif @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31950 @LENGTH@ 3\n" + + "---------------------------INS operator@@-> @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31953 @LENGTH@ 2\n" + + "---------------------------INS name@@tif_fields @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31955 @LENGTH@ 10\n" + + "---------------------------INS index@@][tif -> tif_nfields @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31966 @LENGTH@ 20\n" + + "------------------------------INS expr@@[tif -> tif_nfields @TO@ index@@][tif -> tif_nfields @AT@ 31966 @LENGTH@ 19\n" + + "---------------------------------MOV name@@tif -> tif_clientdata @TO@ expr@@[tif -> tif_nfields @AT@ 31356 @LENGTH@ 21\n" + + "------------------------INS operator@@= @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31984 @LENGTH@ 1\n" + + "------------------------INS operator@@* @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31997 @LENGTH@ 1\n" + + "------------------------INS operator@@( @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 32000 @LENGTH@ 1\n" + + "------------------------INS name@@info @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 32001 @LENGTH@ 4\n" + + "------------------------INS operator@@+ @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 32005 @LENGTH@ 1\n" + + "------------------INS expr_stmt@@tif -> tif_nfields ++ @TO@ block@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @AT@ 32034 @LENGTH@ 21\n" + + "---------------------INS expr@@tif -> tif_nfields ++ @TO@ expr_stmt@@tif -> tif_nfields ++ @AT@ 32034 @LENGTH@ 21\n" + + "------------------------MOV name@@fip -> field_name @TO@ expr@@tif -> tif_nfields ++ @AT@ 31494 @LENGTH@ 17\n" + + "------------------------INS operator@@++ @TO@ expr@@tif -> tif_nfields ++ @AT@ 32050 @LENGTH@ 2\n" + + "---DEL for@@for i = 0 i < n i ++ * tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32050 @LENGTH@ 59\n" + + "------DEL control@@i = 0 i < n i ++ @AT@ 32050 @LENGTH@ 20\n" + + "---------DEL init@@i = 0 @AT@ 32051 @LENGTH@ 5\n" + + "------------DEL expr@@i = 0 @AT@ 32051 @LENGTH@ 5\n" + + "---------------DEL name@@i @AT@ 32051 @LENGTH@ 1\n" + + "---------------DEL operator@@= @AT@ 32053 @LENGTH@ 1\n" + + "---------------DEL literal@@0 @AT@ 32055 @LENGTH@ 1\n" + + "---------DEL condition@@i < n @AT@ 32058 @LENGTH@ 5\n" + + "------------DEL expr@@i < n @AT@ 32058 @LENGTH@ 5\n" + + "---------------DEL name@@i @AT@ 32058 @LENGTH@ 1\n" + + "---------------DEL operator@@< @AT@ 32060 @LENGTH@ 1\n" + + "---------------DEL name@@n @AT@ 32062 @LENGTH@ 1\n" + + "---------DEL incr@@i ++ @AT@ 32065 @LENGTH@ 4\n" + + "------------DEL expr@@i ++ @AT@ 32065 @LENGTH@ 4\n" + + "---------------DEL name@@i @AT@ 32065 @LENGTH@ 1\n" + + "---------------DEL operator@@++ @AT@ 32066 @LENGTH@ 2\n" + + "------DEL block@@* tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32072 @LENGTH@ 38\n" + + "---------DEL expr_stmt@@* tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32072 @LENGTH@ 38\n" + + "------------DEL expr@@* tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32072 @LENGTH@ 38\n" + + "---------------DEL operator@@* @AT@ 32072 @LENGTH@ 1\n" + + "---------------DEL name@@tp @AT@ 32073 @LENGTH@ 2\n" + + "---------------DEL operator@@++ @AT@ 32075 @LENGTH@ 2\n" + + "---------------DEL operator@@= @AT@ 32078 @LENGTH@ 1\n" + + "---------------DEL operator@@( @AT@ 32080 @LENGTH@ 1\n" + + "---------------DEL name@@TIFFField @AT@ 32081 @LENGTH@ 9\n" + + "---------------DEL operator@@* @AT@ 32091 @LENGTH@ 1\n" + + "---------------DEL operator@@) @AT@ 32092 @LENGTH@ 1\n" + + "---------------DEL operator@@( @AT@ 32094 @LENGTH@ 1\n" + + "---------------DEL name@@info @AT@ 32095 @LENGTH@ 4\n" + + "---------------DEL operator@@+ @AT@ 32100 @LENGTH@ 1\n" + + "---------------DEL name@@i @AT@ 32102 @LENGTH@ 1\n" + + "---------------DEL operator@@) @AT@ 32103 @LENGTH@ 1\n" + + "---UPD expr_stmt@@qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32166 @LENGTH@ 70\n" + + "------UPD expr@@qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32166 @LENGTH@ 70\n" + + "---------UPD call@@qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32166 @LENGTH@ 70\n" + + "------------UPD argument_list@@tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32171 @LENGTH@ 81\n" + + "---------------UPD argument@@tif -> tif_nfields += n @TO@ tif -> tif_nfields @AT@ 32189 @LENGTH@ 23\n" + + "------------------UPD expr@@tif -> tif_nfields += n @TO@ tif -> tif_nfields @AT@ 32189 @LENGTH@ 23\n" + + "---------------------DEL operator@@+= @AT@ 32206 @LENGTH@ 2\n" + + "---------------------DEL name@@n @AT@ 32209 @LENGTH@ 1\n"); + + + } + @Test + public void test_manybugs_libtiff_2007_07_13_09e8220_f2d989d() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-07-13-09e8220-f2d989d"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@static const char module [] \"TIFFReadEncodedStrip\" TIFFDirectory * td & tif -> tif_dir uint32 rowsperstrip uint32 stripsperplane uint32 stripinplane uint16 plane uint32 rows tmsize_t stripsize if ! TIFFCheckRead tif 0 ( tmsize_t - 1 ) if strip >= td -> td_nstrips TIFFErrorExt tif -> tif_clientdata module \"%uld: Strip out of range, max %uld\" ( unsigned long ) strip ( unsigned long ) td -> td_nstrips ( tmsize_t - 1 ) rowsperstrip = td -> td_rowsperstrip if rowsperstrip > td -> td_imagelength rowsperstrip = td -> td_imagelength stripsperplane = ( ( td -> td_imagelength + rowsperstrip - 1 ) / rowsperstrip ) stripinplane = ( strip % stripsperplane ) plane = ( strip / stripsperplane ) rows = td -> td_imagelength - stripinplane * rowsperstrip if rows > rowsperstrip rows = rowsperstrip stripsize = TIFFVStripSize tif rows if stripsize == 0 ( tmsize_t - 1 ) if ( size != tmsize_t - 1 ) && ( size < stripsize ) stripsize = size if ! TIFFFillStrip tif strip ( tmsize_t - 1 ) if * tif -> tif_decodestrip tif buf size plane <= 0 ( tmsize_t - 1 ) * tif -> tif_postdecode tif buf size ( size ) @TO@ static const char module [] \"TIFFReadEncodedStrip\" TIFFDirectory * td & tif -> tif_dir uint32 rowsperstrip uint32 stripsperplane uint32 stripinplane uint16 plane uint32 rows tmsize_t stripsize if ! TIFFCheckRead tif 0 ( tmsize_t - 1 ) if strip >= td -> td_nstrips TIFFErrorExt tif -> tif_clientdata module \"%uld: Strip out of range, max %uld\" ( unsigned long ) strip ( unsigned long ) td -> td_nstrips ( tmsize_t - 1 ) rowsperstrip = td -> td_rowsperstrip if rowsperstrip > td -> td_imagelength rowsperstrip = td -> td_imagelength stripsperplane = ( ( td -> td_imagelength + rowsperstrip - 1 ) / rowsperstrip ) stripinplane = ( strip % stripsperplane ) plane = ( strip / stripsperplane ) rows = td -> td_imagelength - stripinplane * rowsperstrip if rows > rowsperstrip rows = rowsperstrip stripsize = TIFFVStripSize tif rows if stripsize == 0 ( tmsize_t - 1 ) if ( size != tmsize_t - 1 ) && ( size < stripsize ) stripsize = size if ! TIFFFillStrip tif strip ( tmsize_t - 1 ) if * tif -> tif_decodestrip tif buf stripsize plane <= 0 ( tmsize_t - 1 ) * tif -> tif_postdecode tif buf stripsize ( stripsize ) @AT@ 3869 @LENGTH@ 1303\n" + + "---UPD if@@if * tif -> tif_decodestrip tif buf size plane <= 0 ( tmsize_t - 1 ) @TO@ if * tif -> tif_decodestrip tif buf stripsize plane <= 0 ( tmsize_t - 1 ) @AT@ 5041 @LENGTH@ 68\n" + + "------UPD condition@@* tif -> tif_decodestrip tif buf size plane <= 0 @TO@ * tif -> tif_decodestrip tif buf stripsize plane <= 0 @AT@ 5041 @LENGTH@ 49\n" + + "---------UPD expr@@* tif -> tif_decodestrip tif buf size plane <= 0 @TO@ * tif -> tif_decodestrip tif buf stripsize plane <= 0 @AT@ 5043 @LENGTH@ 48\n" + + "------------UPD call@@* tif -> tif_decodestrip tif buf size plane @TO@ * tif -> tif_decodestrip tif buf stripsize plane @AT@ 5043 @LENGTH@ 43\n" + + "---------------UPD argument_list@@tif buf size plane @TO@ tif buf stripsize plane @AT@ 5065 @LENGTH@ 21\n" + + "------------------UPD argument@@size @TO@ stripsize @AT@ 5074 @LENGTH@ 4\n" + + "---------------------UPD expr@@size @TO@ stripsize @AT@ 5074 @LENGTH@ 4\n" + + "------------------------UPD name@@size @TO@ stripsize @AT@ 5074 @LENGTH@ 4\n" + + "---UPD expr_stmt@@* tif -> tif_postdecode tif buf size @TO@ * tif -> tif_postdecode tif buf stripsize @AT@ 5118 @LENGTH@ 36\n" + + "------UPD expr@@* tif -> tif_postdecode tif buf size @TO@ * tif -> tif_postdecode tif buf stripsize @AT@ 5118 @LENGTH@ 36\n" + + "---------UPD call@@* tif -> tif_postdecode tif buf size @TO@ * tif -> tif_postdecode tif buf stripsize @AT@ 5118 @LENGTH@ 36\n" + + "------------UPD argument_list@@tif buf size @TO@ tif buf stripsize @AT@ 5139 @LENGTH@ 15\n" + + "---------------UPD argument@@size @TO@ stripsize @AT@ 5148 @LENGTH@ 4\n" + + "------------------UPD expr@@size @TO@ stripsize @AT@ 5148 @LENGTH@ 4\n" + + "---------------------UPD name@@size @TO@ stripsize @AT@ 5148 @LENGTH@ 4\n" + + "---UPD return@@( size ) @TO@ ( stripsize ) @AT@ 5156 @LENGTH@ 14\n" + + "------UPD expr@@( size ) @TO@ ( stripsize ) @AT@ 5162 @LENGTH@ 8\n" + + "---------UPD name@@size @TO@ stripsize @AT@ 5163 @LENGTH@ 4\n"); + + } + + @Test + public void test_manybugs_libtiff_2006_03_03_a72cf60_0a36d7f() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2006-03-03-a72cf60-0a36d7f"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc bad @TO@ if ! dir -> tdir_count || ! w || cc / w != ( tsize_t ) dir -> tdir_count bad @AT@ 30669 @LENGTH@ 76\n" + + "---UPD condition@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @TO@ ! dir -> tdir_count || ! w || cc / w != ( tsize_t ) dir -> tdir_count @AT@ 30669 @LENGTH@ 63\n" + + "------UPD expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @TO@ ! dir -> tdir_count || ! w || cc / w != ( tsize_t ) dir -> tdir_count @AT@ 30670 @LENGTH@ 69\n" + + "---------INS name@@cc @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30696 @LENGTH@ 2\n" + + "---------INS operator@@/ @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30699 @LENGTH@ 1\n" + + "---------INS name@@w @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30701 @LENGTH@ 1\n" + + "---------INS operator@@!= @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30703 @LENGTH@ 2\n" + + "---------DEL operator@@/ @AT@ 30721 @LENGTH@ 1\n" + + "---------DEL name@@w @AT@ 30723 @LENGTH@ 1\n" + + "---------DEL operator@@!= @AT@ 30725 @LENGTH@ 2\n" + + "---------DEL name@@cc @AT@ 30728 @LENGTH@ 2\n"); + + } + @Test + public void test_manybugs_libtiff_2006_02_23_b2ce5d8_207c78a() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2006-02-23-b2ce5d8-207c78a"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @TO@ block@@FIELD_STRIPOFFSETS tag = isTiled tif TIFFTAG_TILEOFFSETS else TIFFTAG_STRIPOFFSETS if tag != fip -> field_tag continue; dir -> tdir_tag = ( uint16 ) tag dir -> tdir_type = ( uint16 ) TIFF_LONG dir -> tdir_count = ( uint32 ) td -> td_nstrips if ! TIFFWriteLongArray tif dir td -> td_stripoffset bad break; FIELD_STRIPBYTECOUNTS tag = isTiled tif TIFFTAG_TILEBYTECOUNTS else TIFFTAG_STRIPBYTECOUNTS if tag != fip -> field_tag continue; dir -> tdir_tag = ( uint16 ) tag dir -> tdir_type = ( uint16 ) TIFF_LONG dir -> tdir_count = ( uint32 ) td -> td_nstrips if ! TIFFWriteLongArray tif dir td -> td_stripbytecount bad break; FIELD_ROWSPERSTRIP TIFFSetupShortLong tif TIFFTAG_ROWSPERSTRIP dir td -> td_rowsperstrip break; FIELD_COLORMAP if ! TIFFWriteShortTable tif TIFFTAG_COLORMAP dir 3 td -> td_colormap bad break; FIELD_IMAGEDIMENSIONS TIFFSetupShortLong tif TIFFTAG_IMAGEWIDTH dir ++ td -> td_imagewidth TIFFSetupShortLong tif TIFFTAG_IMAGELENGTH dir td -> td_imagelength break; FIELD_TILEDIMENSIONS TIFFSetupShortLong tif TIFFTAG_TILEWIDTH dir ++ td -> td_tilewidth TIFFSetupShortLong tif TIFFTAG_TILELENGTH dir td -> td_tilelength break; FIELD_COMPRESSION TIFFSetupShort tif TIFFTAG_COMPRESSION dir td -> td_compression break; FIELD_PHOTOMETRIC TIFFSetupShort tif TIFFTAG_PHOTOMETRIC dir td -> td_photometric break; FIELD_POSITION WriteRationalPair TIFF_RATIONAL TIFFTAG_XPOSITION td -> td_xposition TIFFTAG_YPOSITION td -> td_yposition break; FIELD_RESOLUTION WriteRationalPair TIFF_RATIONAL TIFFTAG_XRESOLUTION td -> td_xresolution TIFFTAG_YRESOLUTION td -> td_yresolution break; FIELD_BITSPERSAMPLE FIELD_MINSAMPLEVALUE FIELD_MAXSAMPLEVALUE FIELD_SAMPLEFORMAT if ! TIFFWritePerSampleShorts tif fip -> field_tag dir bad break; FIELD_SMINSAMPLEVALUE FIELD_SMAXSAMPLEVALUE if ! TIFFWritePerSampleAnys tif _TIFFSampleToTagType tif fip -> field_tag dir bad break; FIELD_PAGENUMBER FIELD_HALFTONEHINTS FIELD_YCBCRSUBSAMPLING if ! TIFFSetupShortPair tif fip -> field_tag dir bad break; FIELD_INKNAMES if ! TIFFWriteInkNames tif dir bad break; FIELD_TRANSFERFUNCTION if ! TIFFWriteTransferFunction tif dir bad break; FIELD_SUBIFD dir -> tdir_tag = ( uint16 ) fip -> field_tag dir -> tdir_type = ( uint16 ) TIFF_LONG dir -> tdir_count = ( uint32 ) td -> td_nsubifd if ! TIFFWriteLongArray tif dir td -> td_subifd bad if dir -> tdir_count > 0 tif -> tif_flags |= TIFF_INSUBIFD tif -> tif_nsubifd = ( uint16 ) dir -> tdir_count if dir -> tdir_count > 1 tif -> tif_subifdoff = dir -> tdir_offset else tif -> tif_subifdoff = uint32 tif -> tif_diroff + uint16 + ( ( char * ) & dir -> tdir_offset - data ) break; if ! TIFFWriteNormalTag tif dir fip bad break; @AT@ 11058 @LENGTH@ 86\n" + + "---INS condition@@fip -> field_tag == TIFFTAG_DOTRANGE @TO@ if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11058 @LENGTH@ 37\n" + + "------INS expr@@fip -> field_tag == TIFFTAG_DOTRANGE @TO@ condition@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11059 @LENGTH@ 36\n" + + "---------INS name@@fip -> field_tag @TO@ expr@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11059 @LENGTH@ 16\n" + + "------------INS name@@fip @TO@ name@@fip -> field_tag @AT@ 11059 @LENGTH@ 3\n" + + "------------INS operator@@-> @TO@ name@@fip -> field_tag @AT@ 11062 @LENGTH@ 2\n" + + "------------INS name@@field_tag @TO@ name@@fip -> field_tag @AT@ 11064 @LENGTH@ 9\n" + + "---------INS operator@@== @TO@ expr@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11074 @LENGTH@ 2\n" + + "---------INS name@@TIFFTAG_DOTRANGE @TO@ expr@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11077 @LENGTH@ 16\n" + + "---INS then@@ @TO@ if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11095 @LENGTH@ 0\n" + + "------INS block@@ @TO@ then@@ @AT@ 11095 @LENGTH@ 77\n" + + "---------INS if@@if ! TIFFSetupShortPair tif fip -> field_tag dir bad @TO@ block@@ @AT@ 11104 @LENGTH@ 52\n" + + "------------INS condition@@! TIFFSetupShortPair tif fip -> field_tag dir @TO@ if@@if ! TIFFSetupShortPair tif fip -> field_tag dir bad @AT@ 11104 @LENGTH@ 48\n" + + "---------------INS expr@@! TIFFSetupShortPair tif fip -> field_tag dir @TO@ condition@@! TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11105 @LENGTH@ 45\n" + + "------------------INS operator@@! @TO@ expr@@! TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11105 @LENGTH@ 1\n" + + "------------------INS call@@TIFFSetupShortPair tif fip -> field_tag dir @TO@ expr@@! TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11106 @LENGTH@ 43\n" + + "---------------------INS name@@TIFFSetupShortPair @TO@ call@@TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11106 @LENGTH@ 18\n" + + "---------------------INS argument_list@@tif fip -> field_tag dir @TO@ call@@TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11124 @LENGTH@ 27\n" + + "------------------------INS argument@@tif @TO@ argument_list@@tif fip -> field_tag dir @AT@ 11125 @LENGTH@ 3\n" + + "---------------------------INS expr@@tif @TO@ argument@@tif @AT@ 11125 @LENGTH@ 3\n" + + "------------------------------INS name@@tif @TO@ expr@@tif @AT@ 11125 @LENGTH@ 3\n" + + "------------------------INS argument@@fip -> field_tag @TO@ argument_list@@tif fip -> field_tag dir @AT@ 11130 @LENGTH@ 16\n" + + "---------------------------INS expr@@fip -> field_tag @TO@ argument@@fip -> field_tag @AT@ 11130 @LENGTH@ 16\n" + + "------------------------------INS name@@fip -> field_tag @TO@ expr@@fip -> field_tag @AT@ 11130 @LENGTH@ 16\n" + + "---------------------------------INS name@@fip @TO@ name@@fip -> field_tag @AT@ 11130 @LENGTH@ 3\n" + + "---------------------------------INS operator@@-> @TO@ name@@fip -> field_tag @AT@ 11133 @LENGTH@ 2\n" + + "---------------------------------INS name@@field_tag @TO@ name@@fip -> field_tag @AT@ 11135 @LENGTH@ 9\n" + + "------------------------INS argument@@dir @TO@ argument_list@@tif fip -> field_tag dir @AT@ 11146 @LENGTH@ 3\n" + + "---------------------------INS expr@@dir @TO@ argument@@dir @AT@ 11146 @LENGTH@ 3\n" + + "------------------------------INS name@@dir @TO@ expr@@dir @AT@ 11146 @LENGTH@ 3\n" + + "------------INS then@@bad @TO@ if@@if ! TIFFSetupShortPair tif fip -> field_tag dir bad @AT@ 11157 @LENGTH@ 3\n" + + "---------------INS block@@bad @TO@ then@@bad @AT@ 11157 @LENGTH@ 3\n" + + "------------------INS goto@@bad @TO@ block@@bad @AT@ 11157 @LENGTH@ 10\n" + + "---------------------INS name@@bad @TO@ goto@@bad @AT@ 11162 @LENGTH@ 3\n" + + "---INS elseif@@elseif if ! TIFFWriteNormalTag tif dir fip bad @TO@ if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11183 @LENGTH@ 46\n" + + "------MOV if@@if ! TIFFWriteNormalTag tif dir fip bad @TO@ elseif@@elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11015 @LENGTH@ 39\n"); + + } + + + @Test + public void test_manybugs_gzip_2009_08_16_3fe0caeada_39a362ae9d() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gzip:2009-08-16-3fe0caeada-39a362ae9d"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@q = ( structhuft * ) malloc 2 * *q if ! q 3 hufts += 2 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 * t = q + 1 * m = 1 0 @TO@ q = ( structhuft * ) malloc 3 * *q if ! q 3 hufts += 3 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 q ][2 . e = 99 q ][2 . b = 1 * t = q + 1 * m = 1 0 @AT@ 16283 @LENGTH@ 239\n" + + "---UPD expr_stmt@@q = ( structhuft * ) malloc 2 * *q @TO@ q = ( structhuft * ) malloc 3 * *q @AT@ 16289 @LENGTH@ 34\n" + + "------UPD expr@@q = ( structhuft * ) malloc 2 * *q @TO@ q = ( structhuft * ) malloc 3 * *q @AT@ 16289 @LENGTH@ 34\n" + + "---------UPD call@@malloc 2 * *q @TO@ malloc 3 * *q @AT@ 16309 @LENGTH@ 13\n" + + "------------UPD argument_list@@2 * *q @TO@ 3 * *q @AT@ 16316 @LENGTH@ 16\n" + + "---------------UPD argument@@2 * *q @TO@ 3 * *q @AT@ 16317 @LENGTH@ 6\n" + + "------------------UPD expr@@2 * *q @TO@ 3 * *q @AT@ 16317 @LENGTH@ 6\n" + + "---------------------UPD literal@@2 @TO@ 3 @AT@ 16317 @LENGTH@ 1\n" + + "---UPD expr_stmt@@hufts += 2 @TO@ hufts += 3 @AT@ 16365 @LENGTH@ 10\n" + + "------UPD expr@@hufts += 2 @TO@ hufts += 3 @AT@ 16365 @LENGTH@ 10\n" + + "---------UPD literal@@2 @TO@ 3 @AT@ 16374 @LENGTH@ 1\n" + + "---INS expr_stmt@@q ][2 . e = 99 @TO@ block@@q = ( structhuft * ) malloc 2 * *q if ! q 3 hufts += 2 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 * t = q + 1 * m = 1 0 @AT@ 16480 @LENGTH@ 14\n" + + "------INS expr@@q ][2 . e = 99 @TO@ expr_stmt@@q ][2 . e = 99 @AT@ 16480 @LENGTH@ 14\n" + + "---------INS name@@q ][2 @TO@ expr@@q ][2 . e = 99 @AT@ 16480 @LENGTH@ 5\n" + + "------------INS name@@q @TO@ name@@q ][2 @AT@ 16480 @LENGTH@ 1\n" + + "------------INS index@@][2 @TO@ name@@q ][2 @AT@ 16482 @LENGTH@ 3\n" + + "---------------INS expr@@[2 @TO@ index@@][2 @AT@ 16482 @LENGTH@ 2\n" + + "------------------INS literal@@[2 @TO@ expr@@[2 @AT@ 16482 @LENGTH@ 2\n" + + "---------INS operator@@. @TO@ expr@@q ][2 . e = 99 @AT@ 16484 @LENGTH@ 1\n" + + "---------INS name@@e @TO@ expr@@q ][2 . e = 99 @AT@ 16485 @LENGTH@ 1\n" + + "---------INS operator@@= @TO@ expr@@q ][2 . e = 99 @AT@ 16487 @LENGTH@ 1\n" + + "---------INS literal@@99 @TO@ expr@@q ][2 . e = 99 @AT@ 16489 @LENGTH@ 2\n" + + "---INS expr_stmt@@q ][2 . b = 1 @TO@ block@@q = ( structhuft * ) malloc 2 * *q if ! q 3 hufts += 2 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 * t = q + 1 * m = 1 0 @AT@ 16526 @LENGTH@ 13\n" + + "------INS expr@@q ][2 . b = 1 @TO@ expr_stmt@@q ][2 . b = 1 @AT@ 16526 @LENGTH@ 13\n" + + "---------INS name@@q ][2 @TO@ expr@@q ][2 . b = 1 @AT@ 16526 @LENGTH@ 5\n" + + "------------INS name@@q @TO@ name@@q ][2 @AT@ 16526 @LENGTH@ 1\n" + + "------------INS index@@][2 @TO@ name@@q ][2 @AT@ 16528 @LENGTH@ 3\n" + + "---------------INS expr@@[2 @TO@ index@@][2 @AT@ 16528 @LENGTH@ 2\n" + + "------------------INS literal@@[2 @TO@ expr@@[2 @AT@ 16528 @LENGTH@ 2\n" + + "---------INS operator@@. @TO@ expr@@q ][2 . b = 1 @AT@ 16530 @LENGTH@ 1\n" + + "---------INS name@@b @TO@ expr@@q ][2 . b = 1 @AT@ 16531 @LENGTH@ 1\n" + + "---------INS operator@@= @TO@ expr@@q ][2 . b = 1 @AT@ 16533 @LENGTH@ 1\n" + + "---------INS literal@@1 @TO@ expr@@q ][2 . b = 1 @AT@ 16535 @LENGTH@ 1\n"); + } + + public List getHierarchicalActionSets(String s) throws IOException { + Properties appProps = new Properties(); + appProps.load(new FileInputStream("src/main/resource/app.properties")); + String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN"); + String root = appProps.getProperty("inputPath"); +// root = root + "/codeflaws/"; + root = "/Users/anilkoyuncu/projects/spinferResults/manybugs/"; + String filename = s; +//// filename = "manybugs:python:70019-70023"; +// filename = "manybugs:python:70098-70101"; +// filename = "manybugs:python:70120-70124"; +// filename = "manybugs:libtiff:2007-07-19-ce4b7af-7d6e298"; +// filename = "manybugs:libtiff:2008-09-05-d59e7df-5f42dba"; +// filename = "manybugs:libtiff:2009-02-05-764dbba-2e42d63"; +// filename = "manybugs:gzip:2009-10-09-1a085b1446-118a107f2d"; +// filename = "manybugs:gzip:2009-09-26-a1d3d4019d-f17cbd13a1"; + Pattern pattern = Pattern.compile("([0-9]{4}-[0-9]{2}-[0-9]{2}-)?([0-9a-z]+-[0-9a-z]+)"); + Matcher matcher = pattern.matcher(filename); + String g1 = ""; + String g2 = ""; + + while (matcher.find()){ + g1 = matcher.group(1); + g2 = matcher.group(2); + } + String[] ids = g2.split("-"); + String bug = ids[0]; + String fix = ids[1]; + + List collect = Files.walk(Paths.get(root + filename + "/diffs")) + .filter(Files::isRegularFile) + .collect(Collectors.toList()); + + List collect1 = collect.stream().filter(a -> a.getFileName().toString().contains(bug)).collect(Collectors.toList()); + List collect2 = collect.stream().filter(a -> a.getFileName().toString().contains(fix)).collect(Collectors.toList()); + File revFile = new File(collect2.get(0).toString()); + File prevFile = new File(collect1.get(0).toString()); + + EDiffHunkParser parser = new EDiffHunkParser(); + + + List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); + return hierarchicalActionSets; + } + + +} diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestRealCases.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestRealCases.java index ec1ce4d..c1c726c 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestRealCases.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestRealCases.java @@ -1,5 +1,7 @@ package edu.lu.uni.serval.fixminer.akka.ediff; +import com.github.gumtreediff.tree.ITree; +import edu.lu.uni.serval.utils.EDiffHelper; import org.junit.Assert; import org.junit.Test; @@ -16,130 +18,66 @@ public class TestRealCases { @Test public void test_287_A_14208510_14208532() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="287-A-14208510-14208532.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("287-A-14208510-14208532.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for j = 0 j < 3 j ++ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @TO@ for j = 0 j < 3 j ++ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 d = 0 h = 0 @AT@ 184 @LENGTH@ 211\n" + - "---UPD block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @TO@ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 d = 0 h = 0 @AT@ 199 @LENGTH@ 347\n" + - "------UPD if@@if d == 3 || h == 3 printf \"YES\" 0 @TO@ if d >= 3 || h >= 3 printf \"YES\" 0 @AT@ 449 @LENGTH@ 34\n" + - "---------UPD condition@@d == 3 || h == 3 @TO@ d >= 3 || h >= 3 @AT@ 449 @LENGTH@ 15\n" + - "------------UPD expr@@d == 3 || h == 3 @TO@ d >= 3 || h >= 3 @AT@ 450 @LENGTH@ 16\n" + - "---------------UPD operator@@== @TO@ >= @AT@ 451 @LENGTH@ 2\n" + - "---------------UPD operator@@== @TO@ >= @AT@ 459 @LENGTH@ 2\n" + - "------INS expr_stmt@@d = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @AT@ 548 @LENGTH@ 5\n" + - "---------INS expr@@d = 0 @TO@ expr_stmt@@d = 0 @AT@ 548 @LENGTH@ 5\n" + - "------------INS name@@d @TO@ expr@@d = 0 @AT@ 548 @LENGTH@ 1\n" + - "------------INS operator@@= @TO@ expr@@d = 0 @AT@ 549 @LENGTH@ 1\n" + - "------------INS literal@@0 @TO@ expr@@d = 0 @AT@ 550 @LENGTH@ 1\n" + - "------INS expr_stmt@@h = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @AT@ 553 @LENGTH@ 5\n" + - "---------INS expr@@h = 0 @TO@ expr_stmt@@h = 0 @AT@ 553 @LENGTH@ 5\n" + - "------------INS name@@h @TO@ expr@@h = 0 @AT@ 553 @LENGTH@ 1\n" + - "------------INS operator@@= @TO@ expr@@h = 0 @AT@ 554 @LENGTH@ 1\n" + - "------------INS literal@@0 @TO@ expr@@h = 0 @AT@ 555 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @TO@ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 d = 0 h = 0 @AT@ 199 @LENGTH@ 347\n" + + "---UPD if@@if d == 3 || h == 3 printf \"YES\" 0 @TO@ if d >= 3 || h >= 3 printf \"YES\" 0 @AT@ 449 @LENGTH@ 34\n" + + "------UPD condition@@d == 3 || h == 3 @TO@ d >= 3 || h >= 3 @AT@ 449 @LENGTH@ 15\n" + + "---------UPD expr@@d == 3 || h == 3 @TO@ d >= 3 || h >= 3 @AT@ 450 @LENGTH@ 16\n" + + "------------UPD operator@@== @TO@ >= @AT@ 451 @LENGTH@ 2\n" + + "------------UPD operator@@== @TO@ >= @AT@ 459 @LENGTH@ 2\n" + + "---INS expr_stmt@@d = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @AT@ 548 @LENGTH@ 5\n" + + "------INS expr@@d = 0 @TO@ expr_stmt@@d = 0 @AT@ 548 @LENGTH@ 5\n" + + "---------INS name@@d @TO@ expr@@d = 0 @AT@ 548 @LENGTH@ 1\n" + + "---------INS operator@@= @TO@ expr@@d = 0 @AT@ 549 @LENGTH@ 1\n" + + "---------INS literal@@0 @TO@ expr@@d = 0 @AT@ 550 @LENGTH@ 1\n" + + "---INS expr_stmt@@h = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" 0 @AT@ 553 @LENGTH@ 5\n" + + "------INS expr@@h = 0 @TO@ expr_stmt@@h = 0 @AT@ 553 @LENGTH@ 5\n" + + "---------INS name@@h @TO@ expr@@h = 0 @AT@ 553 @LENGTH@ 1\n" + + "---------INS operator@@= @TO@ expr@@h = 0 @AT@ 554 @LENGTH@ 1\n" + + "---------INS literal@@0 @TO@ expr@@h = 0 @AT@ 555 @LENGTH@ 1\n"); } @Test public void test_287_A_14208521_14208532() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="287-A-14208521-14208532.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("287-A-14208521-14208532.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for j = 0 j < 3 j ++ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @TO@ for j = 0 j < 3 j ++ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 d = 0 h = 0 @AT@ 184 @LENGTH@ 211\n" + - "---UPD block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @TO@ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 d = 0 h = 0 @AT@ 199 @LENGTH@ 347\n" + - "------INS expr_stmt@@d = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @AT@ 548 @LENGTH@ 5\n" + - "---------INS expr@@d = 0 @TO@ expr_stmt@@d = 0 @AT@ 548 @LENGTH@ 5\n" + - "------------INS name@@d @TO@ expr@@d = 0 @AT@ 548 @LENGTH@ 1\n" + - "------------INS operator@@= @TO@ expr@@d = 0 @AT@ 549 @LENGTH@ 1\n" + - "------------INS literal@@0 @TO@ expr@@d = 0 @AT@ 550 @LENGTH@ 1\n" + - "------INS expr_stmt@@h = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @AT@ 553 @LENGTH@ 5\n" + - "---------INS expr@@h = 0 @TO@ expr_stmt@@h = 0 @AT@ 553 @LENGTH@ 5\n" + - "------------INS name@@h @TO@ expr@@h = 0 @AT@ 553 @LENGTH@ 1\n" + - "------------INS operator@@= @TO@ expr@@h = 0 @AT@ 554 @LENGTH@ 1\n" + - "------------INS literal@@0 @TO@ expr@@h = 0 @AT@ 555 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @TO@ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 d = 0 h = 0 @AT@ 199 @LENGTH@ 347\n" + + "---INS expr_stmt@@d = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @AT@ 548 @LENGTH@ 5\n" + + "------INS expr@@d = 0 @TO@ expr_stmt@@d = 0 @AT@ 548 @LENGTH@ 5\n" + + "---------INS name@@d @TO@ expr@@d = 0 @AT@ 548 @LENGTH@ 1\n" + + "---------INS operator@@= @TO@ expr@@d = 0 @AT@ 549 @LENGTH@ 1\n" + + "---------INS literal@@0 @TO@ expr@@d = 0 @AT@ 550 @LENGTH@ 1\n" + + "---INS expr_stmt@@h = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" 0 @AT@ 553 @LENGTH@ 5\n" + + "------INS expr@@h = 0 @TO@ expr_stmt@@h = 0 @AT@ 553 @LENGTH@ 5\n" + + "---------INS name@@h @TO@ expr@@h = 0 @AT@ 553 @LENGTH@ 1\n" + + "---------INS operator@@= @TO@ expr@@h = 0 @AT@ 554 @LENGTH@ 1\n" + + "---------INS literal@@0 @TO@ expr@@h = 0 @AT@ 555 @LENGTH@ 1\n"); } @Test public void test_189_1682083_1682218() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="189-B-1682083-1682218.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("189-B-1682083-1682218.c"); // Assert.assertFalse(true); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for j = 1 j < h j ++ k = i k = MIN k w - i t = j k = MIN k h - j ans += k * t @TO@ for j = 1 j < h j ++ k = i k = MIN k w - i t = j t = MIN t h - j ans += k * t @AT@ 174 @LENGTH@ 77\n" + - "---UPD block@@k = i k = MIN k w - i t = j k = MIN k h - j ans += k * t @TO@ k = i k = MIN k w - i t = j t = MIN t h - j ans += k * t @AT@ 195 @LENGTH@ 104\n" + - "------UPD expr_stmt@@k = MIN k h - j @TO@ t = MIN t h - j @AT@ 254 @LENGTH@ 15\n" + - "---------UPD expr@@k = MIN k h - j @TO@ t = MIN t h - j @AT@ 254 @LENGTH@ 15\n" + - "------------UPD name@@k @TO@ t @AT@ 254 @LENGTH@ 1\n" + - "------------UPD call@@MIN k h - j @TO@ MIN t h - j @AT@ 258 @LENGTH@ 11\n" + - "---------------UPD argument_list@@k h - j @TO@ t h - j @AT@ 261 @LENGTH@ 11\n" + - "------------------UPD argument@@k @TO@ t @AT@ 262 @LENGTH@ 1\n" + - "---------------------UPD expr@@k @TO@ t @AT@ 262 @LENGTH@ 1\n" + - "------------------------UPD name@@k @TO@ t @AT@ 262 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@k = MIN k h - j @TO@ t = MIN t h - j @AT@ 254 @LENGTH@ 15\n" + + "---UPD expr@@k = MIN k h - j @TO@ t = MIN t h - j @AT@ 254 @LENGTH@ 15\n" + + "------UPD name@@k @TO@ t @AT@ 254 @LENGTH@ 1\n" + + "------UPD call@@MIN k h - j @TO@ MIN t h - j @AT@ 258 @LENGTH@ 11\n" + + "---------UPD argument_list@@k h - j @TO@ t h - j @AT@ 261 @LENGTH@ 11\n" + + "------------UPD argument@@k @TO@ t @AT@ 262 @LENGTH@ 1\n" + + "---------------UPD expr@@k @TO@ t @AT@ 262 @LENGTH@ 1\n" + + "------------------UPD name@@k @TO@ t @AT@ 262 @LENGTH@ 1\n"); } @Test public void test_177_A2_1594730_1595168() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="177-A2-1594730-1595168.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("177-A2-1594730-1595168.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if i == ( n - 1 ) / 2 && j == ( n - 1 ) / 2 mid = a @TO@ if i == ( n + 1 ) / 2 && j == ( n + 1 ) / 2 mid = a @AT@ 350 @LENGTH@ 51\n" + "---UPD condition@@i == ( n - 1 ) / 2 && j == ( n - 1 ) / 2 @TO@ i == ( n + 1 ) / 2 && j == ( n + 1 ) / 2 @AT@ 350 @LENGTH@ 27\n" + @@ -151,22 +89,7 @@ public class TestRealCases { @Test public void test_680_A_18343132_18343191() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="680-A-18343132-18343191.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("680-A-18343132-18343191.c"); Assert.assertEquals(hierarchicalActionSets.size(),2); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if b ][a ][i == 3 max = 3 * a ][i break; @TO@ if b ][a ][i >= 3 max = 3 * a ][i break; @AT@ 176 @LENGTH@ 40\n" + "---UPD condition@@b ][a ][i == 3 @TO@ b ][a ][i >= 3 @AT@ 176 @LENGTH@ 13\n" + @@ -181,115 +104,47 @@ public class TestRealCases { @Test public void test_245_D_3671804_3671831() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="245-D-3671804-3671831.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("245-D-3671804-3671831.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if i != j @TO@ if i != j ans |= a @AT@ 186 @LENGTH@ 9\n" + - "---UPD then@@ @TO@ ans |= a @AT@ 192 @LENGTH@ 0\n" + - "------UPD block@@ @TO@ ans |= a @AT@ 192 @LENGTH@ 0\n" + - "---------DEL empty_stmt@@ @AT@ 192 @LENGTH@ 0\n" + - "---------MOV expr_stmt@@ans |= a @TO@ block@@ @AT@ 194 @LENGTH@ 8\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@max = temp break; @TO@ @AT@ 282 @LENGTH@ 24\n" + + "---DEL break@@break; @AT@ 296 @LENGTH@ 6\n"); } @Test public void test_197_B_18221952_18221968() throws IOException { //TODO not sure - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="197-B-18221952-18221968.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("197-B-18221952-18221968.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if a ][0 % i == 0 && b ][0 % i == 0 a ][0 /= i b ][0 /= i @TO@ if a ][0 % i == 0 && b ][0 % i == 0 a ][0 /= i b ][0 /= i i -- @AT@ 742 @LENGTH@ 57\n" + - "---UPD then@@a ][0 /= i b ][0 /= i @TO@ a ][0 /= i b ][0 /= i i -- @AT@ 779 @LENGTH@ 21\n" + - "------UPD block@@a ][0 /= i b ][0 /= i @TO@ a ][0 /= i b ][0 /= i i -- @AT@ 779 @LENGTH@ 66\n" + - "---------INS expr_stmt@@i -- @TO@ block@@a ][0 /= i b ][0 /= i @AT@ 831 @LENGTH@ 4\n" + - "------------INS expr@@i -- @TO@ expr_stmt@@i -- @AT@ 831 @LENGTH@ 4\n" + - "---------------INS name@@i @TO@ expr@@i -- @AT@ 831 @LENGTH@ 1\n" + - "---------------INS operator@@-- @TO@ expr@@i -- @AT@ 832 @LENGTH@ 2\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@i -- @TO@ block@@a ][0 /= i b ][0 /= i @AT@ 831 @LENGTH@ 4\n" + + "---INS expr@@i -- @TO@ expr_stmt@@i -- @AT@ 831 @LENGTH@ 4\n" + + "------INS name@@i @TO@ expr@@i -- @AT@ 831 @LENGTH@ 1\n" + + "------INS operator@@-- @TO@ expr@@i -- @AT@ 832 @LENGTH@ 2\n"); } @Test public void test_474_A_15226851_15226912() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="474-A-15226851-15226912.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("474-A-15226851-15226912.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if str ][i == s ][j str ][i = s ][j + 1 @TO@ if str ][i == s ][j j ++ str ][i = s ][j @AT@ 546 @LENGTH@ 39\n" + - "---UPD then@@str ][i = s ][j + 1 @TO@ j ++ str ][i = s ][j @AT@ 560 @LENGTH@ 19\n" + - "------UPD block@@str ][i = s ][j + 1 @TO@ j ++ str ][i = s ][j @AT@ 560 @LENGTH@ 55\n" + - "---------INS expr_stmt@@j ++ @TO@ block@@str ][i = s ][j + 1 @AT@ 582 @LENGTH@ 4\n" + - "------------INS expr@@j ++ @TO@ expr_stmt@@j ++ @AT@ 582 @LENGTH@ 4\n" + - "---------------INS name@@j @TO@ expr@@j ++ @AT@ 582 @LENGTH@ 1\n" + - "---------------INS operator@@++ @TO@ expr@@j ++ @AT@ 583 @LENGTH@ 2\n" + - "---------UPD expr_stmt@@str ][i = s ][j + 1 @TO@ str ][i = s ][j @AT@ 582 @LENGTH@ 19\n" + - "------------UPD expr@@str ][i = s ][j + 1 @TO@ str ][i = s ][j @AT@ 582 @LENGTH@ 19\n" + - "---------------UPD name@@s ][j + 1 @TO@ s ][j @AT@ 589 @LENGTH@ 9\n" + - "------------------UPD index@@][j + 1 @TO@ ][j @AT@ 591 @LENGTH@ 7\n" + - "---------------------UPD expr@@[j + 1 @TO@ [j @AT@ 591 @LENGTH@ 6\n" + - "------------------------DEL operator@@+ @AT@ 592 @LENGTH@ 1\n" + - "------------------------DEL literal@@1 @AT@ 593 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@ @TO@ j ++ str ][i = s ][j @AT@ 560 @LENGTH@ 55\n" + + "---INS expr_stmt@@j ++ @TO@ block@@ @AT@ 582 @LENGTH@ 4\n" + + "------INS expr@@j ++ @TO@ expr_stmt@@j ++ @AT@ 582 @LENGTH@ 4\n" + + "---------INS name@@j @TO@ expr@@j ++ @AT@ 582 @LENGTH@ 1\n" + + "---------INS operator@@++ @TO@ expr@@j ++ @AT@ 583 @LENGTH@ 2\n" + + "---UPD expr_stmt@@str ][i = s ][j + 1 @TO@ str ][i = s ][j @AT@ 582 @LENGTH@ 19\n" + + "------UPD expr@@str ][i = s ][j + 1 @TO@ str ][i = s ][j @AT@ 582 @LENGTH@ 19\n" + + "---------UPD name@@s ][j + 1 @TO@ s ][j @AT@ 589 @LENGTH@ 9\n" + + "------------UPD index@@][j + 1 @TO@ ][j @AT@ 591 @LENGTH@ 7\n" + + "---------------UPD expr@@[j + 1 @TO@ [j @AT@ 591 @LENGTH@ 6\n" + + "------------------DEL operator@@+ @AT@ 592 @LENGTH@ 1\n" + + "------------------DEL literal@@1 @AT@ 593 @LENGTH@ 1\n"); } @Test public void test_469_B_8248222_8248281() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="469-B-8248222-8248281.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("469-B-8248222-8248281.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if temp1 < r && temp2 > l for k = temp1 k <= temp2 k ++ t ][k = 1 @TO@ if temp1 <= r && temp2 >= l for k = temp1 k <= temp2 k ++ t ][k = 1 @AT@ 432 @LENGTH@ 65\n" + "---UPD condition@@temp1 < r && temp2 > l @TO@ temp1 <= r && temp2 >= l @AT@ 432 @LENGTH@ 19\n" + @@ -301,22 +156,7 @@ public class TestRealCases { @Test public void test_189_B_17295034_17295064() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="189-B-17295034-17295064.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("189-B-17295034-17295064.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for b = 2 b <= w b += 2 count += ( w - a + 1 ) * ( h - b + 1 ) @TO@ for b = 2 b <= h b += 2 count += ( w - a + 1 ) * ( h - b + 1 ) @AT@ 183 @LENGTH@ 62\n" + "---UPD control@@b = 2 b <= w b += 2 @TO@ b = 2 b <= h b += 2 @AT@ 183 @LENGTH@ 16\n" + @@ -329,22 +169,7 @@ public class TestRealCases { @Test public void test_244_B_5291533_5291541() throws IOException { //TODO not sure - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="244-B-5291533-5291541.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("244-B-5291533-5291541.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if a <= 101 printf \"%d\\n\" a elseif if a == 123 printf \"113\\n\" elseif if a == 1000 printf \"352\\n\" elseif if a == 1000000000 printf \"40744\\n\" elseif if a == 999999999 printf \"40743\\n\" elseif if a == 999999998 printf \"40742\\n\" elseif if a == 999999997 printf \"40741\\n\" elseif if a == 909090901 printf \"38532\\n\" elseif if a == 142498040 printf \"21671\\n\" elseif if a == 603356456 printf \"31623\\n\" elseif if a == 64214872 printf \"15759\\n\" elseif if a == 820040584 printf \"36407\\n\" elseif if a == 442198 printf \"3071\\n\" elseif if a == 642678 printf \"3615\\n\" elseif if a == 468390 printf \"3223\\n\" elseif if a == 326806 printf \"2759\\n\" elseif if a == 940 printf \"331\\n\" elseif if a == 356 printf \"175\\n\" elseif if a == 132 printf \"114\\n\" elseif if a == 102 printf \"101\\n\" @TO@ if a <= 101 printf \"%d\\n\" a elseif if a == 123 printf \"113\\n\" elseif if a == 1000 printf \"352\\n\" elseif if a == 1000000000 printf \"40744\\n\" elseif if a == 999999999 printf \"40743\\n\" elseif if a == 999999998 printf \"40742\\n\" elseif if a == 999999997 printf \"40741\\n\" elseif if a == 909090901 printf \"38532\\n\" elseif if a == 142498040 printf \"21671\\n\" elseif if a == 603356456 printf \"31623\\n\" elseif if a == 64214872 printf \"15759\\n\" elseif if a == 820040584 printf \"36407\\n\" elseif if a == 442198 printf \"3071\\n\" elseif if a == 784262 printf \"4079\\n\" elseif if a == 642678 printf \"3615\\n\" elseif if a == 468390 printf \"3223\\n\" elseif if a == 326806 printf \"2759\\n\" elseif if a == 940 printf \"331\\n\" elseif if a == 356 printf \"175\\n\" elseif if a == 132 printf \"114\\n\" elseif if a == 102 printf \"101\\n\" @AT@ 110 @LENGTH@ 762\n" + "---INS elseif@@elseif if a == 784262 printf \"4079\\n\" @TO@ if@@if a <= 101 printf \"%d\\n\" a elseif if a == 123 printf \"113\\n\" elseif if a == 1000 printf \"352\\n\" elseif if a == 1000000000 printf \"40744\\n\" elseif if a == 999999999 printf \"40743\\n\" elseif if a == 999999998 printf \"40742\\n\" elseif if a == 999999997 printf \"40741\\n\" elseif if a == 909090901 printf \"38532\\n\" elseif if a == 142498040 printf \"21671\\n\" elseif if a == 603356456 printf \"31623\\n\" elseif if a == 64214872 printf \"15759\\n\" elseif if a == 820040584 printf \"36407\\n\" elseif if a == 442198 printf \"3071\\n\" elseif if a == 642678 printf \"3615\\n\" elseif if a == 468390 printf \"3223\\n\" elseif if a == 326806 printf \"2759\\n\" elseif if a == 940 printf \"331\\n\" elseif if a == 356 printf \"175\\n\" elseif if a == 132 printf \"114\\n\" elseif if a == 102 printf \"101\\n\" @AT@ 877 @LENGTH@ 37\n" + @@ -368,22 +193,7 @@ public class TestRealCases { } @Test public void test_166_C_1395587_1395933() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="166-C-1395587-1395933.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("166-C-1395587-1395933.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if array ][( n + 1 ) / 2 == x printf \"0\\n\" elseif if last < ( n + 1 ) / 2 printf \"%d\\n\" n - 2 * last elseif if first > ( n + 1 ) / 2 printf \"%d\\n\" 2 * first - n - 1 @TO@ if array ][( n + 1 ) / 2 - 1 == x printf \"0\\n\" elseif if last < ( n + 1 ) / 2 printf \"%d\\n\" n - 2 * last elseif if first > ( n + 1 ) / 2 printf \"%d\\n\" 2 * first - n - 1 elseif if n == 1 printf \"0\\n\" @AT@ 771 @LENGTH@ 164\n" + "---UPD condition@@array ][( n + 1 ) / 2 == x @TO@ array ][( n + 1 ) / 2 - 1 == x @AT@ 771 @LENGTH@ 20\n" + @@ -416,56 +226,23 @@ public class TestRealCases { @Test public void test_315_A_6149995_6150754() throws IOException { //TODO not sure - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="315-A-6149995-6150754.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("315-A-6149995-6150754.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if a ][j == t ans -- @TO@ if a ][j == t ans -- a ][j = 0 @AT@ 302 @LENGTH@ 20\n" + - "---UPD then@@ans -- @TO@ ans -- a ][j = 0 @AT@ 332 @LENGTH@ 6\n" + - "------UPD block@@ans -- @TO@ ans -- a ][j = 0 @AT@ 332 @LENGTH@ 6\n" + - "---------INS expr_stmt@@a ][j = 0 @TO@ block@@ans -- @AT@ 377 @LENGTH@ 9\n" + - "------------INS expr@@a ][j = 0 @TO@ expr_stmt@@a ][j = 0 @AT@ 377 @LENGTH@ 9\n" + - "---------------INS name@@a ][j @TO@ expr@@a ][j = 0 @AT@ 377 @LENGTH@ 5\n" + - "------------------INS name@@a @TO@ name@@a ][j @AT@ 377 @LENGTH@ 1\n" + - "------------------INS index@@][j @TO@ name@@a ][j @AT@ 379 @LENGTH@ 3\n" + - "---------------------INS expr@@[j @TO@ index@@][j @AT@ 379 @LENGTH@ 2\n" + - "------------------------INS name@@[j @TO@ expr@@[j @AT@ 379 @LENGTH@ 2\n" + - "---------------INS operator@@= @TO@ expr@@a ][j = 0 @AT@ 381 @LENGTH@ 1\n" + - "---------------INS literal@@0 @TO@ expr@@a ][j = 0 @AT@ 382 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@a ][j = 0 @TO@ block@@ans -- @AT@ 377 @LENGTH@ 9\n" + + "---INS expr@@a ][j = 0 @TO@ expr_stmt@@a ][j = 0 @AT@ 377 @LENGTH@ 9\n" + + "------INS name@@a ][j @TO@ expr@@a ][j = 0 @AT@ 377 @LENGTH@ 5\n" + + "---------INS name@@a @TO@ name@@a ][j @AT@ 377 @LENGTH@ 1\n" + + "---------INS index@@][j @TO@ name@@a ][j @AT@ 379 @LENGTH@ 3\n" + + "------------INS expr@@[j @TO@ index@@][j @AT@ 379 @LENGTH@ 2\n" + + "---------------INS name@@[j @TO@ expr@@[j @AT@ 379 @LENGTH@ 2\n" + + "------INS operator@@= @TO@ expr@@a ][j = 0 @AT@ 381 @LENGTH@ 1\n" + + "------INS literal@@0 @TO@ expr@@a ][j = 0 @AT@ 382 @LENGTH@ 1\n"); } @Test public void test_158_A_18237828_18237840() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="158-A-18237828-18237840.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("158-A-18237828-18237840.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ara ][i >= ara ][k - 1 count ++ @TO@ if ara ][i >= ara ][k - 1 && ara ][i != 0 count ++ @AT@ 219 @LENGTH@ 34\n" + "---UPD condition@@ara ][i >= ara ][k - 1 @TO@ ara ][i >= ara ][k - 1 && ara ][i != 0 @AT@ 219 @LENGTH@ 19\n" + @@ -484,22 +261,7 @@ public class TestRealCases { @Test public void test_405_B_9434593_9434605() throws IOException { //TODO not sure - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="405-B-9434593-9434605.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("405-B-9434593-9434605.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if input ][0 == '.' count = 1 @TO@ if input ][0 == '.' count = 1 else i1 = 0 @AT@ 260 @LENGTH@ 29\n" + "---INS else@@else i1 = 0 @TO@ if@@if input ][0 == '.' count = 1 @AT@ 295 @LENGTH@ 11\n" + @@ -515,22 +277,7 @@ public class TestRealCases { @Test public void test_489_A_9343123_9343126() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="489-A-9343123-9343126.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("489-A-9343123-9343126.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ZA ][d < ZA ][c d = c @TO@ if ZA ][d > ZA ][c d = c @AT@ 252 @LENGTH@ 24\n" + "---UPD condition@@ZA ][d < ZA ][c @TO@ ZA ][d > ZA ][c @AT@ 252 @LENGTH@ 16\n" + @@ -541,22 +288,7 @@ public class TestRealCases { @Test public void test_143_A_17964626_17964657() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="143-A-17964626-17964657.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("143-A-17964626-17964657.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for a = 1 a < ( r1 % 10 ) a ++ for i = 1 i <= 1000 i ++ ar ][i = 0 ar ][a = 1 if a >= c1 || a >= d1 continue; b = r1 - a if ar ][b == 1 continue; else ar ][b = 1 if b >= c2 || b >= d2 continue; c = c1 - a if ar ][c == 1 continue; else ar ][c = 1 if c >= r2 || c >= d2 continue; d = d1 - a if ar ][d == 1 continue; if d >= r2 || d >= c2 continue; if b + c != d2 continue; if b + d != c2 continue; if c + d != r2 continue; if a > 9 || b > 9 || c > 9 || d > 9 continue; flag = 1 break; @TO@ for a = 1 a < r1 a ++ for i = 1 i <= 1000 i ++ ar ][i = 0 ar ][a = 1 if a >= c1 || a >= d1 continue; b = r1 - a if ar ][b == 1 continue; else ar ][b = 1 if b >= c2 || b >= d2 continue; c = c1 - a if ar ][c == 1 continue; else ar ][c = 1 if c >= r2 || c >= d2 continue; d = d1 - a if ar ][d == 1 continue; if d >= r2 || d >= c2 continue; if b + c != d2 continue; if b + d != c2 continue; if c + d != r2 continue; if a > 9 || b > 9 || c > 9 || d > 9 continue; flag = 1 break; @AT@ 187 @LENGTH@ 482\n" + "---UPD control@@a = 1 a < ( r1 % 10 ) a ++ @TO@ a = 1 a < r1 a ++ @AT@ 187 @LENGTH@ 22\n" + @@ -573,22 +305,7 @@ public class TestRealCases { @Test public void test_612_A_15750192_15750273() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="612-A-15750192-15750273.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("612-A-15750192-15750273.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = p i <= k i ++ printf \"%c\" a ][i @TO@ for i = p i < k i ++ printf \"%c\" a ][i @AT@ 262 @LENGTH@ 39\n" + @@ -602,22 +319,7 @@ public class TestRealCases { @Test public void test_31_B_6435804_6435825() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="31-B-6435804-6435825.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("31-B-6435804-6435825.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 1 i <= strlen s i ++ if n == - 1 if fl == 1 elseif if s ][i == '@' fl = 1 @TO@ for i = 1 i < strlen s i ++ if n == - 1 if fl == 1 elseif if s ][i == '@' fl = 1 @AT@ 225 @LENGTH@ 81\n" + "---UPD control@@i = 1 i <= strlen s i ++ @TO@ i = 1 i < strlen s i ++ @AT@ 225 @LENGTH@ 29\n" + @@ -630,22 +332,7 @@ public class TestRealCases { @Test public void test_644_A_18166947_18166954() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="644-A-18166947-18166954.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("644-A-18166947-18166954.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 0 i < b i ++ for j = 0 j < b j ++ printf \"%lld \" array ][i ][j printf \"\\n\" @TO@ for i = 0 i < a i ++ for j = 0 j < b j ++ printf \"%lld \" array ][i ][j printf \"\\n\" @AT@ 1251 @LENGTH@ 82\n" + "---UPD control@@i = 0 i < b i ++ @TO@ i = 0 i < a i ++ @AT@ 1251 @LENGTH@ 14\n" + @@ -657,22 +344,7 @@ public class TestRealCases { @Test public void test_5_B_10350073_10350082() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="5-B-10350073-10350082.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("5-B-10350073-10350082.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ! ( ( ml - l ) % 2 ) if right sl += 1 right = 1 - right @TO@ if ( ml - l ) % 2 if right sl += 1 right = 1 - right @AT@ 515 @LENGTH@ 58\n" + "---UPD condition@@! ( ( ml - l ) % 2 ) @TO@ ( ml - l ) % 2 @AT@ 515 @LENGTH@ 18\n" + @@ -685,22 +357,7 @@ public class TestRealCases { @Test public void test_675_A_18211752_18211767() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="675-A-18211752-18211767.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("675-A-18211752-18211767.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV return@@0 @TO@ block@@ @AT@ 242 @LENGTH@ 10\n"); @@ -709,22 +366,7 @@ public class TestRealCases { @Test public void test_158_A_18278572_18278586() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="158-A-18278572-18278586.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("158-A-18278572-18278586.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD while@@while a ][i >= a ][k && i <= n count ++ i ++ @TO@ while a ][i >= a ][k && i <= n && a ][i != 0 count ++ i ++ @AT@ 501 @LENGTH@ 44\n" + "---UPD condition@@a ][i >= a ][k && i <= n @TO@ a ][i >= a ][k && i <= n && a ][i != 0 @AT@ 501 @LENGTH@ 19\n" + @@ -743,22 +385,7 @@ public class TestRealCases { @Test public void test_31_B_136044_136045() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="31-B-136044-136045.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("31-B-136044-136045.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV if@@if flag puts ans + 1 else printf \"No solution\\n\" @TO@ block@@long i l flag 0 tot 0 gets str + 1 l = strlen str + 1 if str ][1 == '@' || str ][l == '@' end for i = 1 i <= l - 2 i ++ if str ][i == '@' && ( str ][i + 1 == '@' || str ][i + 2 == '@' ) end for i = 1 i <= l i ++ if flag && str ][i + 1 == '@' ans ][++ tot = ',' if str ][i == '@' flag = 1 ans ][++ tot = str ][i if flag puts ans + 1 else printf \"No solution\\n\" end 0 @AT@ 937 @LENGTH@ 48\n"); @@ -767,21 +394,7 @@ public class TestRealCases { @Test public void test_432_A_16886797_16886828() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="432-A-16886797-16886828.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("432-A-16886797-16886828.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV if@@if z <= 5 - y s ++ @TO@ block@@scanf \"%d\" & z @AT@ 132 @LENGTH@ 18\n"); } @@ -789,133 +402,69 @@ public class TestRealCases { @Test public void test_507_A_16886367_16886377() throws IOException { //TODO macro - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="507-A-16886367-16886377.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("507-A-16886367-16886377.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD function@@int main int argc char * argv [] int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 n printf \"%d \" a ][j 0 @TO@ int main int argc char * argv [] int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 i printf \"%d \" a ][j 0 @AT@ 237 @LENGTH@ 382\n" + - "---UPD block@@int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 n printf \"%d \" a ][j 0 @TO@ int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 i printf \"%d \" a ][j 0 @AT@ 270 @LENGTH@ 491\n" + - "------UPD macro@@FOR j 0 n @TO@ FOR j 0 i @AT@ 701 @LENGTH@ 9\n" + - "---------UPD argument_list@@j 0 n @TO@ j 0 i @AT@ 704 @LENGTH@ 8\n" + - "------------UPD argument@@n @TO@ i @AT@ 709 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 n printf \"%d \" a ][j 0 @TO@ int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 i printf \"%d \" a ][j 0 @AT@ 270 @LENGTH@ 491\n" + + "---UPD macro@@FOR j 0 n @TO@ FOR j 0 i @AT@ 701 @LENGTH@ 9\n" + + "------UPD argument_list@@j 0 n @TO@ j 0 i @AT@ 704 @LENGTH@ 8\n" + + "---------UPD argument@@n @TO@ i @AT@ 709 @LENGTH@ 1\n"); } @Test public void test_25_D_110126_110132() throws IOException { //TODO macro - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="25-D-110126-110132.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("25-D-110126-110132.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD function@@int main int argc char * argv [] int i j k l m n int a ][1200 b ][1200 unused ][1200 int ind ][1200 int cnt ][1200 int res_a ][1200 res_b ][1200 res_c ][1200 res_d ][1200 int shima int res bef scanf \"%d\" & n m = n - 1 rep i m scanf \"%d%d\" a + i b + i , a ][i -- , b ][i -- unionInit ind n rep i m unionConnect ind a ][i b ][i shima = 0 rep i m cnt ][unionGet ind i = 1 rep i n shima += cnt ][i res = 0 bef = - 1 rep i n if cnt ][i if bef >= 0 res_c ][res = bef res_d ][res ++ = i bef = i res = 0 rep k m unused ][k = 0 rep k m unionInit ind n rep i m if unused ][i == 0 if i != k unionConnect ind a ][i b ][i rep i n cnt ][i = 0 rep i n cnt ][unionGet ind i = 1 j = 0 rep i n j += cnt ][i if j == shima unused ][k = 1 res_a ][res = a ][k res_b ][res ++ = b ][k printf \"%d\\n\" res rep i res printf \"%d %d %d %d\\n\" res_a ][i + 1 res_b ][i + 1 res_c ][i + 1 res_d ][i + 1 0 @TO@ int main int argc char * argv [] int i j k l m n int a ][1200 b ][1200 unused ][1200 int ind ][1200 int cnt ][1200 int res_a ][1200 res_b ][1200 res_c ][1200 res_d ][1200 int shima int res bef scanf \"%d\" & n m = n - 1 rep i m scanf \"%d%d\" a + i b + i , a ][i -- , b ][i -- unionInit ind n rep i m unionConnect ind a ][i b ][i shima = 0 rep i n cnt ][unionGet ind i = 1 rep i n shima += cnt ][i res = 0 bef = - 1 rep i n if cnt ][i if bef >= 0 res_c ][res = bef res_d ][res ++ = i bef = i res = 0 rep k m unused ][k = 0 rep k m unionInit ind n rep i m if unused ][i == 0 if i != k unionConnect ind a ][i b ][i rep i n cnt ][i = 0 rep i n cnt ][unionGet ind i = 1 j = 0 rep i n j += cnt ][i if j == shima unused ][k = 1 res_a ][res = a ][k res_b ][res ++ = b ][k printf \"%d\\n\" res rep i res printf \"%d %d %d %d\\n\" res_a ][i + 1 res_b ][i + 1 res_c ][i + 1 res_d ][i + 1 0 @AT@ 379 @LENGTH@ 869\n" + - "---UPD block@@int i j k l m n int a ][1200 b ][1200 unused ][1200 int ind ][1200 int cnt ][1200 int res_a ][1200 res_b ][1200 res_c ][1200 res_d ][1200 int shima int res bef scanf \"%d\" & n m = n - 1 rep i m scanf \"%d%d\" a + i b + i , a ][i -- , b ][i -- unionInit ind n rep i m unionConnect ind a ][i b ][i shima = 0 rep i m cnt ][unionGet ind i = 1 rep i n shima += cnt ][i res = 0 bef = - 1 rep i n if cnt ][i if bef >= 0 res_c ][res = bef res_d ][res ++ = i bef = i res = 0 rep k m unused ][k = 0 rep k m unionInit ind n rep i m if unused ][i == 0 if i != k unionConnect ind a ][i b ][i rep i n cnt ][i = 0 rep i n cnt ][unionGet ind i = 1 j = 0 rep i n j += cnt ][i if j == shima unused ][k = 1 res_a ][res = a ][k res_b ][res ++ = b ][k printf \"%d\\n\" res rep i res printf \"%d %d %d %d\\n\" res_a ][i + 1 res_b ][i + 1 res_c ][i + 1 res_d ][i + 1 0 @TO@ int i j k l m n int a ][1200 b ][1200 unused ][1200 int ind ][1200 int cnt ][1200 int res_a ][1200 res_b ][1200 res_c ][1200 res_d ][1200 int shima int res bef scanf \"%d\" & n m = n - 1 rep i m scanf \"%d%d\" a + i b + i , a ][i -- , b ][i -- unionInit ind n rep i m unionConnect ind a ][i b ][i shima = 0 rep i n cnt ][unionGet ind i = 1 rep i n shima += cnt ][i res = 0 bef = - 1 rep i n if cnt ][i if bef >= 0 res_c ][res = bef res_d ][res ++ = i bef = i res = 0 rep k m unused ][k = 0 rep k m unionInit ind n rep i m if unused ][i == 0 if i != k unionConnect ind a ][i b ][i rep i n cnt ][i = 0 rep i n cnt ][unionGet ind i = 1 j = 0 rep i n j += cnt ][i if j == shima unused ][k = 1 res_a ][res = a ][k res_b ][res ++ = b ][k printf \"%d\\n\" res rep i res printf \"%d %d %d %d\\n\" res_a ][i + 1 res_b ][i + 1 res_c ][i + 1 res_d ][i + 1 0 @AT@ 411 @LENGTH@ 955\n" + - "------UPD macro@@rep i m @TO@ rep i n @AT@ 746 @LENGTH@ 7\n" + - "---------UPD argument_list@@i m @TO@ i n @AT@ 749 @LENGTH@ 6\n" + - "------------UPD argument@@m @TO@ n @AT@ 752 @LENGTH@ 1\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@int i j k l m n int a ][1200 b ][1200 unused ][1200 int ind ][1200 int cnt ][1200 int res_a ][1200 res_b ][1200 res_c ][1200 res_d ][1200 int shima int res bef scanf \"%d\" & n m = n - 1 rep i m scanf \"%d%d\" a + i b + i , a ][i -- , b ][i -- unionInit ind n rep i m unionConnect ind a ][i b ][i shima = 0 rep i m cnt ][unionGet ind i = 1 rep i n shima += cnt ][i res = 0 bef = - 1 rep i n if cnt ][i if bef >= 0 res_c ][res = bef res_d ][res ++ = i bef = i res = 0 rep k m unused ][k = 0 rep k m unionInit ind n rep i m if unused ][i == 0 if i != k unionConnect ind a ][i b ][i rep i n cnt ][i = 0 rep i n cnt ][unionGet ind i = 1 j = 0 rep i n j += cnt ][i if j == shima unused ][k = 1 res_a ][res = a ][k res_b ][res ++ = b ][k printf \"%d\\n\" res rep i res printf \"%d %d %d %d\\n\" res_a ][i + 1 res_b ][i + 1 res_c ][i + 1 res_d ][i + 1 0 @TO@ int i j k l m n int a ][1200 b ][1200 unused ][1200 int ind ][1200 int cnt ][1200 int res_a ][1200 res_b ][1200 res_c ][1200 res_d ][1200 int shima int res bef scanf \"%d\" & n m = n - 1 rep i m scanf \"%d%d\" a + i b + i , a ][i -- , b ][i -- unionInit ind n rep i m unionConnect ind a ][i b ][i shima = 0 rep i n cnt ][unionGet ind i = 1 rep i n shima += cnt ][i res = 0 bef = - 1 rep i n if cnt ][i if bef >= 0 res_c ][res = bef res_d ][res ++ = i bef = i res = 0 rep k m unused ][k = 0 rep k m unionInit ind n rep i m if unused ][i == 0 if i != k unionConnect ind a ][i b ][i rep i n cnt ][i = 0 rep i n cnt ][unionGet ind i = 1 j = 0 rep i n j += cnt ][i if j == shima unused ][k = 1 res_a ][res = a ][k res_b ][res ++ = b ][k printf \"%d\\n\" res rep i res printf \"%d %d %d %d\\n\" res_a ][i + 1 res_b ][i + 1 res_c ][i + 1 res_d ][i + 1 0 @AT@ 411 @LENGTH@ 955\n" + + "---UPD macro@@rep i m @TO@ rep i n @AT@ 746 @LENGTH@ 7\n" + + "------UPD argument_list@@i m @TO@ i n @AT@ 749 @LENGTH@ 6\n" + + "---------UPD argument@@m @TO@ n @AT@ 752 @LENGTH@ 1\n"); } @Test public void test_490_A_14580360_14580456() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename ="490-A-14580360-14580456.c"; - - File revFile = new File(root + "revFiles/"+ filename); - File prevFile =new File(root + "prevFiles/prev_"+filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("490-A-14580360-14580456.c"); Assert.assertEquals(hierarchicalActionSets.size(),1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD function@@int main int argc char * argv [] int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min min = x elseif if y < min min = y printf \"%d\\n\" min for i = 1 i <= min i ++ printf \"%d %d %d\\n\" b ][i c ][i d ][i 0 @TO@ int main int argc char * argv [] int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min min = x if y < min min = y printf \"%d\\n\" min for i = 1 i <= min i ++ printf \"%d %d %d\\n\" b ][i c ][i d ][i 0 @AT@ 18 @LENGTH@ 435\n" + - "---UPD block@@int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min min = x elseif if y < min min = y printf \"%d\\n\" min for i = 1 i <= min i ++ printf \"%d %d %d\\n\" b ][i c ][i d ][i 0 @TO@ int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min min = x if y < min min = y printf \"%d\\n\" min for i = 1 i <= min i ++ printf \"%d %d %d\\n\" b ][i c ][i d ][i 0 @AT@ 51 @LENGTH@ 642\n" + - "------UPD if@@if x < min min = x elseif if y < min min = y @TO@ if x < min min = x @AT@ 507 @LENGTH@ 44\n" + - "---------DEL elseif@@elseif if y < min min = y @AT@ 548 @LENGTH@ 25\n" + - "------MOV if@@if y < min min = y @TO@ block@@int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min min = x elseif if y < min min = y printf \"%d\\n\" min for i = 1 i <= min i ++ printf \"%d %d %d\\n\" b ][i c ][i d ][i 0 @AT@ 548 @LENGTH@ 18\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min elseif if y < min printf \"%d\\n\" min for i = 1 i <= min i ++ 0 @TO@ int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min if y < min printf \"%d\\n\" min for i = 1 i <= min i ++ 0 @AT@ 51 @LENGTH@ 642\n" + + "---UPD if@@if x < min elseif if y < min @TO@ if x < min @AT@ 507 @LENGTH@ 28\n" + + "------DEL elseif@@elseif if y < min @AT@ 548 @LENGTH@ 17\n" + + "---MOV if@@if y < min @TO@ block@@int n i j k l scanf \"%d\" & n int a ][5005 b ][5005 c ][5005 d ][5005 int w 0 x 0 y 0 for i = 1 , j = 1 , k = 1 , l = 1 i <= n i ++ scanf \"%d\" & a ][i if a ][i == 1 b ][j = i w ++ j ++ elseif if a ][i == 2 c ][k = i x ++ k ++ elseif if a ][i == 3 d ][l = i y ++ l ++ int min w if x < min elseif if y < min printf \"%d\\n\" min for i = 1 i <= min i ++ 0 @AT@ 548 @LENGTH@ 10\n"); } @Test public void test_336_A_11394760_11394769() throws IOException { //TODO - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename = "336-A-11394760-11394769.c"; - - File revFile = new File(root + "revFiles/" + filename); - File prevFile = new File(root + "prevFiles/prev_" + filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("336-A-11394760-11394769.c"); Assert.assertEquals(hierarchicalActionSets.size(), 1); - Assert.assertEquals(hierarchicalActionSets.get(0).toString(), "UPD function@@int main int argc char * argv [] ll x y ll zero 0 scanf \"%lld%lld\" & x & y if x >= 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) 0 @TO@ int main int argc char * argv [] ll x y ll zero 0 scanf \"%lld%lld\" & x & y if x >= 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero elseif if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) 0 @AT@ 39 @LENGTH@ 390\n" + - "---UPD block@@ll x y ll zero 0 scanf \"%lld%lld\" & x & y if x >= 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) 0 @TO@ ll x y ll zero 0 scanf \"%lld%lld\" & x & y if x >= 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero elseif if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) 0 @AT@ 72 @LENGTH@ 493\n" + - "------DEL if@@if x >= 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero @AT@ 146 @LENGTH@ 72\n" + - "------UPD if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) @TO@ if x >= 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero elseif if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) @AT@ 245 @LENGTH@ 240\n" + - "---------MOV condition@@x >= 0 && y >= 0 @TO@ if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) @AT@ 146 @LENGTH@ 13\n" + - "---------MOV then@@printf \"%lld %lld %lld %lld\\n\" zero x + y x + y zero @TO@ if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) @AT@ 165 @LENGTH@ 52\n" + - "---------INS elseif@@elseif if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y @TO@ if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y elseif if x >= 0 && y < 0 printf \"%lld %lld %lld %lld\\n\" zero - ( x - y ) x - y zero else printf \"%lld %lld %lld %lld\\n\" - ( - x - y ) zero zero - ( - x - y ) @AT@ 250 @LENGTH@ 88\n" + - "------------INS if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y @TO@ elseif@@elseif if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y @AT@ 250 @LENGTH@ 81\n" + - "---------------MOV condition@@x < 0 && y >= 0 @TO@ if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y @AT@ 245 @LENGTH@ 12\n" + - "---------------MOV then@@printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y @TO@ if@@if x < 0 && y >= 0 printf \"%lld %lld %lld %lld\\n\" - ( - x + y ) zero zero - x + y @AT@ 263 @LENGTH@ 62\n"); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(), "UPD block@@ll x y ll zero 0 scanf \"%lld%lld\" & x & y if x >= 0 && y >= 0 if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else 0 @TO@ ll x y ll zero 0 scanf \"%lld%lld\" & x & y if x >= 0 && y >= 0 elseif if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else 0 @AT@ 72 @LENGTH@ 493\n" + + "---DEL if@@if x >= 0 && y >= 0 @AT@ 146 @LENGTH@ 19\n" + + "---UPD if@@if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else @TO@ if x >= 0 && y >= 0 elseif if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else @AT@ 245 @LENGTH@ 49\n" + + "------MOV condition@@x >= 0 && y >= 0 @TO@ if@@if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else @AT@ 146 @LENGTH@ 13\n" + + "------MOV then@@ @TO@ if@@if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else @AT@ 165 @LENGTH@ 0\n" + + "------INS elseif@@elseif if x < 0 && y >= 0 @TO@ if@@if x < 0 && y >= 0 elseif if x >= 0 && y < 0 else @AT@ 250 @LENGTH@ 25\n" + + "---------INS if@@if x < 0 && y >= 0 @TO@ elseif@@elseif if x < 0 && y >= 0 @AT@ 250 @LENGTH@ 18\n" + + "------------MOV condition@@x < 0 && y >= 0 @TO@ if@@if x < 0 && y >= 0 @AT@ 245 @LENGTH@ 12\n" + + "------------MOV then@@ @TO@ if@@if x < 0 && y >= 0 @AT@ 263 @LENGTH@ 0\n"); } + + //10-A-bug-1998522-1998523 + @Test + public void test_10_A_1998522_1998523() throws IOException { + //TODO + List hierarchicalActionSets = getHierarchicalActionSets("10-A-1998522-1998523.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(), "INS expr_stmt@@lr = r @TO@ block@@scanf \"%d %d\" & l & r e += ( r - l ) * p1 if l - lr <= t1 e += ( l - lr ) * p1 else e += t1 * p1 if l - lr <= t1 + t2 e += ( l - lr - t1 ) * p2 else e += t2 * p2 + ( l - lr - t1 - t2 ) * p3 @AT@ 465 @LENGTH@ 6\n" + + "---INS expr@@lr = r @TO@ expr_stmt@@lr = r @AT@ 465 @LENGTH@ 6\n" + + "------INS name@@lr @TO@ expr@@lr = r @AT@ 465 @LENGTH@ 2\n" + + "------INS operator@@= @TO@ expr@@lr = r @AT@ 468 @LENGTH@ 1\n" + + "------INS name@@r @TO@ expr@@lr = r @AT@ 470 @LENGTH@ 1\n"); + } @Test public void test_328_B_4080800_4080805() throws IOException { - Properties appProps = new Properties(); - appProps.load(new FileInputStream("src/main/resource/app.properties")); - String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN"); - String root = appProps.getProperty("inputPath"); - root = root + "/codeflaws/"; - String filename = "328-B-4080800-4080805.c"; - - File revFile = new File(root + "revFiles/" + filename); - File prevFile = new File(root + "prevFiles/prev_" + filename); - - EDiffHunkParser parser = new EDiffHunkParser(); - - - List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); - hierarchicalActionSets.size(); + List hierarchicalActionSets = getHierarchicalActionSets("328-B-4080800-4080805.c"); Assert.assertEquals(hierarchicalActionSets.size(), 1); Assert.assertEquals(hierarchicalActionSets.get(0).toString(), "DEL for@@for i = 0 i < 10 i ++ printf \"%d %d\\n\" num ][i tnum ][i @AT@ 453 @LENGTH@ 55\n" + "---DEL control@@i = 0 i < 10 i ++ @AT@ 453 @LENGTH@ 15\n" + @@ -958,7 +507,151 @@ public class TestRealCases { "---------------------------------DEL name@@[i @AT@ 506 @LENGTH@ 2\n"); } + @Test + public void test_10_A_2106391_2106405() throws IOException { + List hierarchicalActionSets = getHierarchicalActionSets("10-A-2106391-2106405.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@ @TO@ scanf \"%d %d\" & c & e d = c - b if d >= t1 p += t1 * p1 d -= t1 elseif if d > 0 p += d * p1 d = 0 if d >= t2 p += t2 * p2 d -= t2 elseif if d > 0 p += d * p2 d = 0 if d > 0 p += d * p3 p += p1 * ( e - c ) a = c b = e @AT@ 291 @LENGTH@ 0\n" + + "---DEL empty_stmt@@ @AT@ 291 @LENGTH@ 0\n" + + "---MOV expr_stmt@@scanf \"%d %d\" & c & e @TO@ block@@ @AT@ 309 @LENGTH@ 21\n" + + "---MOV expr_stmt@@d = c - b @TO@ block@@ @AT@ 347 @LENGTH@ 9\n" + + "---MOV if@@if d >= t1 p += t1 * p1 d -= t1 elseif if d > 0 p += d * p1 d = 0 @TO@ block@@ @AT@ 372 @LENGTH@ 65\n" + + "---MOV if@@if d >= t2 p += t2 * p2 d -= t2 elseif if d > 0 p += d * p2 d = 0 @TO@ block@@ @AT@ 618 @LENGTH@ 65\n" + + "---MOV if@@if d > 0 p += d * p3 @TO@ block@@ @AT@ 857 @LENGTH@ 20\n" + + "---MOV expr_stmt@@p += p1 * ( e - c ) @TO@ block@@ @AT@ 888 @LENGTH@ 19\n" + + "---MOV expr_stmt@@a = c @TO@ block@@ @AT@ 917 @LENGTH@ 5\n" + + "---MOV expr_stmt@@b = e @TO@ block@@ @AT@ 938 @LENGTH@ 5\n"); + } + + //10-A-4557108-4561236 + @Test + public void test_10_A_4557108_4561236() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("10-A-4557108-4561236.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if m > t1 && m < t2 @TO@ if m > t1 && m - t1 < t2 @AT@ 502 @LENGTH@ 19\n" + + "---UPD condition@@m > t1 && m < t2 @TO@ m > t1 && m - t1 < t2 @AT@ 502 @LENGTH@ 15\n" + + "------UPD expr@@m > t1 && m < t2 @TO@ m > t1 && m - t1 < t2 @AT@ 503 @LENGTH@ 16\n" + + "---------INS operator@@- @TO@ expr@@m > t1 && m < t2 @AT@ 512 @LENGTH@ 1\n" + + "---------INS name@@t1 @TO@ expr@@m > t1 && m < t2 @AT@ 513 @LENGTH@ 2\n"); + } + + //10-A-5914564-5914663 + @Test + public void test_10_A_5914564_5914663() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("10-A-5914564-5914663.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if lr + t1 + t2 <= a power += ( t2 * p2 ) + ( a - lr - t1 - t2 ) * p3 @TO@ if lr + t1 + t2 <= a power += ( t2 * p2 ) + ( a - lr - t1 - t2 ) * p3 else power += ( a - lr - t1 ) * p2 @AT@ 406 @LENGTH@ 69\n" + + "---INS else@@else power += ( a - lr - t1 ) * p2 @TO@ if@@if lr + t1 + t2 <= a power += ( t2 * p2 ) + ( a - lr - t1 - t2 ) * p3 @AT@ 501 @LENGTH@ 34\n" + + "------INS block@@power += ( a - lr - t1 ) * p2 @TO@ else@@else power += ( a - lr - t1 ) * p2 @AT@ 501 @LENGTH@ 29\n" + + "---------INS expr_stmt@@power += ( a - lr - t1 ) * p2 @TO@ block@@power += ( a - lr - t1 ) * p2 @AT@ 501 @LENGTH@ 29\n" + + "------------INS expr@@power += ( a - lr - t1 ) * p2 @TO@ expr_stmt@@power += ( a - lr - t1 ) * p2 @AT@ 501 @LENGTH@ 29\n" + + "---------------INS name@@power @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 501 @LENGTH@ 5\n" + + "---------------INS operator@@+= @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 506 @LENGTH@ 2\n" + + "---------------INS operator@@( @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 508 @LENGTH@ 1\n" + + "---------------INS name@@a @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 509 @LENGTH@ 1\n" + + "---------------INS operator@@- @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 510 @LENGTH@ 1\n" + + "---------------INS name@@lr @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 511 @LENGTH@ 2\n" + + "---------------INS operator@@- @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 513 @LENGTH@ 1\n" + + "---------------INS name@@t1 @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 514 @LENGTH@ 2\n" + + "---------------INS operator@@) @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 516 @LENGTH@ 1\n" + + "---------------INS operator@@* @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 517 @LENGTH@ 1\n" + + "---------------INS name@@p2 @TO@ expr@@power += ( a - lr - t1 ) * p2 @AT@ 518 @LENGTH@ 2\n"); + } + + //10-D-1434543-1434549 + @Test + public void test_10_D_1434543_1434549() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("10-D-1434543-1434549.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if max == 0 printf \"0\\n\" continue; @TO@ block@@for i = 0 i < la i ++ scanf \"%d\" & a ][i scanf \"%d\" & lb for i = 0 i < lb i ++ scanf \"%d\" & b ][i memset f 0 f for i = 0 i <= 500 i ++ p ][i = - 1 for i = 1 i <= la i ++ k = 0 for j = 1 j <= lb j ++ if b ][j - 1 < a ][i - 1 && f ][j > f ][k k = j if a ][i - 1 == b ][j - 1 && f ][k >= f ][j f ][j = f ][k + 1 p ][j = k max = 0 int t 1 for i = 1 i <= lb i ++ int k 0 int d ][501 d ][++ k = b ][t - 1 while 1 t = p ][t if t == 0 break; d ][++ k = b ][t - 1 printf \"%d\\n\" k for i = k i > 1 i -- printf \"%d \" d ][i printf \"%d\\n\" d ][1 @AT@ 692 @LENGTH@ 34\n" + + "---INS condition@@max == 0 @TO@ if@@if max == 0 printf \"0\\n\" continue; @AT@ 692 @LENGTH@ 9\n" + + "------INS expr@@max == 0 @TO@ condition@@max == 0 @AT@ 693 @LENGTH@ 8\n" + + "---------INS name@@max @TO@ expr@@max == 0 @AT@ 693 @LENGTH@ 3\n" + + "---------INS operator@@== @TO@ expr@@max == 0 @AT@ 696 @LENGTH@ 2\n" + + "---------INS literal@@0 @TO@ expr@@max == 0 @AT@ 698 @LENGTH@ 1\n" + + "---INS then@@printf \"0\\n\" continue; @TO@ if@@if max == 0 printf \"0\\n\" continue; @AT@ 702 @LENGTH@ 22\n" + + "------INS block@@printf \"0\\n\" continue; @TO@ then@@printf \"0\\n\" continue; @AT@ 702 @LENGTH@ 26\n" + + "---------INS expr_stmt@@printf \"0\\n\" @TO@ block@@printf \"0\\n\" continue; @AT@ 703 @LENGTH@ 12\n" + + "------------INS expr@@printf \"0\\n\" @TO@ expr_stmt@@printf \"0\\n\" @AT@ 703 @LENGTH@ 12\n" + + "---------------INS call@@printf \"0\\n\" @TO@ expr@@printf \"0\\n\" @AT@ 703 @LENGTH@ 12\n" + + "------------------INS name@@printf @TO@ call@@printf \"0\\n\" @AT@ 703 @LENGTH@ 6\n" + + "------------------INS argument_list@@\"0\\n\" @TO@ call@@printf \"0\\n\" @AT@ 709 @LENGTH@ 8\n" + + "---------------------INS argument@@\"0\\n\" @TO@ argument_list@@\"0\\n\" @AT@ 710 @LENGTH@ 5\n" + + "------------------------INS expr@@\"0\\n\" @TO@ argument@@\"0\\n\" @AT@ 710 @LENGTH@ 5\n" + + "---------------------------INS literal@@\"0\\n\" @TO@ expr@@\"0\\n\" @AT@ 710 @LENGTH@ 5\n" + + "---------INS continue@@continue; @TO@ block@@printf \"0\\n\" continue; @AT@ 717 @LENGTH@ 9\n"); + } + + //101-A-3317973-3317996 + @Test + public void test_101_A_3317973_3317996() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("101-A-3317973-3317996.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if sum >= k break; @TO@ if sum > k break; @AT@ 858 @LENGTH@ 18\n" + + "---UPD condition@@sum >= k @TO@ sum > k @AT@ 858 @LENGTH@ 9\n" + + "------UPD expr@@sum >= k @TO@ sum > k @AT@ 859 @LENGTH@ 8\n" + + "---------UPD operator@@>= @TO@ > @AT@ 862 @LENGTH@ 2\n"); + HierarchicalActionSet actionSet = hierarchicalActionSets.get(0); + ITree targetTree = EDiffHelper.getTargets(actionSet); + ITree actionTree = EDiffHelper.getActionTrees(actionSet); + ITree shapeTree = EDiffHelper.getShapeTree(actionSet); + actionSet.getActionSize(); + } + //102-A-14574020-14574054 + @Test + public void test_102_A_14574020_14574054() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("102-A-14574020-14574054.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if min printf \"%ld \\n\" min else printf \"%d\" - 1 @TO@ if min != LONG_MAX printf \"%ld \\n\" min else printf \"%d\" - 1 @AT@ 1082 @LENGTH@ 47\n" + + "---UPD condition@@min @TO@ min != LONG_MAX @AT@ 1082 @LENGTH@ 8\n" + + "------UPD expr@@min @TO@ min != LONG_MAX @AT@ 1084 @LENGTH@ 3\n" + + "---------INS operator@@!= @TO@ expr@@min @AT@ 1087 @LENGTH@ 2\n" + + "---------INS name@@LONG_MAX @TO@ expr@@min @AT@ 1089 @LENGTH@ 8\n"); + } + + //102-A-9556179-9556185 + @Test + public void test_102_A_9556179_9556185() throws IOException { + + List hierarchicalActionSets = getHierarchicalActionSets("102-A-9556179-9556185.c"); + Assert.assertEquals(hierarchicalActionSets.size(), 1); + Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@b ][x ][y = 1 @TO@ b ][y ][x = b ][x ][y = 1 @AT@ 244 @LENGTH@ 13\n" + + "---UPD expr@@b ][x ][y = 1 @TO@ b ][y ][x = b ][x ][y = 1 @AT@ 244 @LENGTH@ 13\n" + + "------MOV name@@b ][x ][y @TO@ expr@@b ][x ][y = 1 @AT@ 244 @LENGTH@ 9\n" + + "------INS name@@b ][y ][x @TO@ expr@@b ][x ][y = 1 @AT@ 244 @LENGTH@ 9\n" + + "---------INS name@@b @TO@ name@@b ][y ][x @AT@ 244 @LENGTH@ 1\n" + + "---------INS index@@][y @TO@ name@@b ][y ][x @AT@ 246 @LENGTH@ 3\n" + + "------------INS expr@@[y @TO@ index@@][y @AT@ 246 @LENGTH@ 2\n" + + "---------------INS name@@[y @TO@ expr@@[y @AT@ 246 @LENGTH@ 2\n" + + "---------INS index@@][x @TO@ name@@b ][y ][x @AT@ 249 @LENGTH@ 3\n" + + "------------INS expr@@[x @TO@ index@@][x @AT@ 249 @LENGTH@ 2\n" + + "---------------INS name@@[x @TO@ expr@@[x @AT@ 249 @LENGTH@ 2\n" + + "------INS operator@@= @TO@ expr@@b ][x ][y = 1 @AT@ 262 @LENGTH@ 1\n"); + } + + public List getHierarchicalActionSets(String s) throws IOException { + Properties appProps = new Properties(); + appProps.load(new FileInputStream("src/main/resource/app.properties")); + String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN"); + String root = appProps.getProperty("inputPath"); + root = root + "/codeflaws/"; + String filename = s; + + File revFile = new File(root + "revFiles/" + filename); + File prevFile = new File(root + "prevFiles/prev_" + filename); + + EDiffHunkParser parser = new EDiffHunkParser(); + + + List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath); + return hierarchicalActionSets; + } } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java index ff399d8..fdf928c 100755 --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java @@ -4,8 +4,6 @@ import akka.actor.ActorRef; import akka.actor.ActorSystem; import edu.lu.uni.serval.fixminer.akka.ediff.*; import edu.lu.uni.serval.utils.CallShell; -import edu.lu.uni.serval.utils.EDiffHelper; -import edu.lu.uni.serval.utils.FileHelper; import edu.lu.uni.serval.utils.PoolBuilder; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; @@ -13,9 +11,9 @@ import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -64,6 +62,7 @@ public class EnhancedASTDiff { .filter(x -> !x.getName().startsWith(".")) .filter(x -> !x.getName().startsWith("cocci")) .filter(x -> !x.getName().endsWith(".index")) + .filter(x -> x.getName().endsWith("codeflaws")) .collect(Collectors.toList()); @@ -152,7 +151,8 @@ public class EnhancedASTDiff { File prevFile = new File(gumTreeInput + "prevFiles/prev_" + fileName);// previous file fileName = fileName + ".txt"; File diffentryFile = new File(gumTreeInput + "DiffEntries/" + fileName); // DiffEntry file - +// if(FileHelper.readFile(diffentryFile).split("@@\\s\\-\\d+,*\\d*\\s\\+\\d+,*\\d*\\s@@").length > 2) +// continue; MessageFile msgFile = new MessageFile(revFile, prevFile, diffentryFile); msgFiles.add(msgFile); diff --git a/src/main/resource/app.properties b/src/main/resource/app.properties index e3d6a1d..5a1e010 100755 --- a/src/main/resource/app.properties +++ b/src/main/resource/app.properties @@ -3,15 +3,16 @@ pjName = gumInput portInner = 6380 portDumps = 6399 parallelism = AKKA -numOfWorkers = 30 +numOfWorkers = 14 hostname = localhost hunkLimit = 10 #inputPath = /Users/anilkoyuncu/projects/gumInputLinux -inputPath = /Users/anil.koyuncu/projects/fixminer/fixminer-core/python/data/gumInputLinux -redisPath = /Users/anil.koyuncu/projects/fixminer/fixminer-core/python/data/redis +inputPath = /Users/anilkoyuncu/projects/fixminer/fixminer-core/python/data/gumInputLinux +#redisPath = /Users/anil.koyuncu/projects/fixminer/fixminer-core/python/data/redis +redisPath = /Users/anilkoyuncu/projects/fixminer/fixminer-core/python/data/redis #srcMLPath= /Users/anil.koyuncu/Downloads/srcML/src2srcml -srcMLPath= /Users/anil.koyuncu/Downloads/srcML.0.9.5/bin/srcml +srcMLPath= /usr/local/bin/srcml actionType = ALL eDiffTimeout = 900 diff --git a/src/main/resource/testFiles/if_else.c b/src/main/resource/testFiles/if_else.c new file mode 100644 index 0000000..be7b210 --- /dev/null +++ b/src/main/resource/testFiles/if_else.c @@ -0,0 +1,10 @@ + +const static ctl_serialize_action +static int test(){ + field = ATOM(TST); + if(IS_ERR(fields->mode)) + return PTR_ERROR(fields->mode); + if(a>0) + return 1; + return 0; +} \ No newline at end of file diff --git a/src/main/resource/testFiles/if_return.c b/src/main/resource/testFiles/if_return.c new file mode 100644 index 0000000..bfe8110 --- /dev/null +++ b/src/main/resource/testFiles/if_return.c @@ -0,0 +1,6 @@ +static int test(){ + field = ATOM(TST); + if(IS_ERR(fields->mode)) + return PTR_ERROR(fields->mode); + return 0; +} \ No newline at end of file diff --git a/src/main/resource/testFiles/prev_if_else.c b/src/main/resource/testFiles/prev_if_else.c new file mode 100644 index 0000000..03a7336 --- /dev/null +++ b/src/main/resource/testFiles/prev_if_else.c @@ -0,0 +1,9 @@ +static ctl_serialize_action +static int test(){ + field = ATOM(TST); + if(IS_ERR(fields->mode)) + return PTR_ERROR(fields->mode); + else if(a>0) + return 1; + return 0; +} \ No newline at end of file diff --git a/src/main/resource/testFiles/prev_if_return.c b/src/main/resource/testFiles/prev_if_return.c new file mode 100644 index 0000000..86e08a6 --- /dev/null +++ b/src/main/resource/testFiles/prev_if_return.c @@ -0,0 +1,4 @@ +static int test(){ + field = ATOM(TST); + return PTR_ERROR_OR_ZERO(fields->mode); +} \ No newline at end of file diff --git a/src/main/resource/testFiles/prev_struct.c b/src/main/resource/testFiles/prev_struct.c new file mode 100644 index 0000000..c3ebfdb --- /dev/null +++ b/src/main/resource/testFiles/prev_struct.c @@ -0,0 +1,5 @@ +struct b { + int x; + double y; + float z; + }; \ No newline at end of file diff --git a/src/main/resource/testFiles/struct.c b/src/main/resource/testFiles/struct.c new file mode 100644 index 0000000..82ecbce --- /dev/null +++ b/src/main/resource/testFiles/struct.c @@ -0,0 +1,5 @@ +struct a { + int x; + double y; + float z; + }; \ No newline at end of file