[ https://issues.apache.org/jira/browse/TIKA-2636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16459901#comment-16459901 ]
ASF GitHub Bot commented on TIKA-2636: -------------------------------------- lewismc closed pull request #234: TIKA-2636 ENVI Header metadata fields can span more than one line URL: https://github.com/apache/tika/pull/234 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml b/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml index 8c7fe2890..7c0cd9185 100644 --- a/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml +++ b/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml @@ -221,6 +221,9 @@ <mime-type type="application/emma+xml"> <glob pattern="*.emma"/> </mime-type> + <mime-type type="application/envi.hdr"> + <glob pattern="*.hdr"/> + </mime-type> <mime-type type="application/epp+xml"/> <mime-type type="application/epub+zip"> diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/envi/EnviHeaderParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/envi/EnviHeaderParser.java index fcca98fdc..c4093e202 100644 --- a/tika-parsers/src/main/java/org/apache/tika/parser/envi/EnviHeaderParser.java +++ b/tika-parsers/src/main/java/org/apache/tika/parser/envi/EnviHeaderParser.java @@ -20,7 +20,9 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.Collections; +import java.util.List; import java.util.Set; import org.apache.commons.io.input.CloseShieldInputStream; @@ -32,6 +34,8 @@ import org.apache.tika.parser.AbstractEncodingDetectorParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.sax.XHTMLContentHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; @@ -39,15 +43,23 @@ private static final long serialVersionUID = -1479368523072408091L; + private static final Logger LOG = LoggerFactory.getLogger(EnviHeaderParser.class); + public static final String ENVI_MIME_TYPE = "application/envi.hdr"; private static final Set<MediaType> SUPPORTED_TYPES = Collections .singleton(MediaType.application("envi.hdr")); + private List<String> multiLineFieldValueList = new ArrayList<>(); + + private transient XHTMLContentHandler xhtml; + + @Override public Set<MediaType> getSupportedTypes(ParseContext context) { return SUPPORTED_TYPES; } + @Override public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException { @@ -63,26 +75,62 @@ public void parse(InputStream stream, ContentHandler handler, tikaConfig = TikaConfig.getDefaultConfig(); } try (AutoDetectReader reader = new AutoDetectReader( - new CloseShieldInputStream(stream), metadata, getEncodingDetector(context))) { - Charset charset = reader.getCharset(); - MediaType type = new MediaType(MediaType.TEXT_PLAIN, charset); - // deprecated, see TIKA-431 - metadata.set(Metadata.CONTENT_ENCODING, charset.name()); - - XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, - metadata); - - xhtml.startDocument(); - - // text contents of the xhtml - String line; - while ((line = reader.readLine()) != null) { - xhtml.startElement("p"); - xhtml.characters(line); - xhtml.endElement("p"); - } - - xhtml.endDocument(); + new CloseShieldInputStream(stream), metadata, getEncodingDetector(context))){ + Charset charset = reader.getCharset(); + // deprecated, see TIKA-431 + metadata.set(Metadata.CONTENT_ENCODING, charset.name()); + + xhtml = new XHTMLContentHandler(handler, + metadata); + + xhtml.startDocument(); + readLines(reader); + xhtml.endDocument(); + } catch (IOException | TikaException e) { + LOG.error("Error reading input data stream.", e); + } + + } + + private void readLines(AutoDetectReader reader) throws IOException, SAXException { + // text contents of the xhtml + String line; + while ((line = reader.readLine()) != null) { + if (line.contains("{") && !line.endsWith("}") || line.startsWith(" ")) { + String completeField = parseMultiLineFieldValue(line); + if (completeField != null) { + writeParagraph(completeField); + } + } else { + writeParagraph(line); + } + } + } + + /* + * Simple write a line to the XHTMLContentHandler + */ + private void writeParagraph(String line) throws SAXException { + xhtml.startElement("p"); + xhtml.characters(line); + xhtml.endElement("p"); + } + + /* + * Enables correct extraction of fiel values which span more + * than one line. Essentially, multi-line fiel values are + * typically enclosed within curly braces, so a primitive + * check it made to ensure the multi-line contents are contained in + * opening and closing braces. + */ + private String parseMultiLineFieldValue(String line) { + multiLineFieldValueList.add(line); + if (line.endsWith("}")) { + return String.join("", multiLineFieldValueList); + } else { + //do nothing } + return null; + } } diff --git a/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser b/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser index aa8725eab..e2503bd57 100644 --- a/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser +++ b/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser @@ -20,6 +20,7 @@ org.apache.tika.parser.audio.MidiParser org.apache.tika.parser.crypto.Pkcs7Parser org.apache.tika.parser.crypto.TSDParser org.apache.tika.parser.dwg.DWGParser +org.apache.tika.parser.envi.EnviHeaderParser org.apache.tika.parser.epub.EpubParser org.apache.tika.parser.executable.ExecutableParser org.apache.tika.parser.feed.FeedParser diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/envi/EnviHeaderParserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/envi/EnviHeaderParserTest.java index 360328064..51b90048b 100644 --- a/tika-parsers/src/test/java/org/apache/tika/parser/envi/EnviHeaderParserTest.java +++ b/tika-parsers/src/test/java/org/apache/tika/parser/envi/EnviHeaderParserTest.java @@ -26,25 +26,39 @@ import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.ToXMLContentHandler; +import org.junit.After; +import org.junit.Before; import org.junit.Test; /** * Test cases to exercise the {@link EnviHeaderParser}. */ public class EnviHeaderParserTest { + + private Parser parser; + private ToXMLContentHandler handler; + private Metadata metadata; + + @Before + public void setUp() { + setParser(new EnviHeaderParser()); + setHandler(new ToXMLContentHandler()); + setMetadata(new Metadata()); + } + + @After + public void tearDown() { + setParser(null); + setHandler(null); + setMetadata(null); + } + @Test public void testParseGlobalMetadata() throws Exception { - if (System.getProperty("java.version").startsWith("1.5")) { - return; - } - - Parser parser = new EnviHeaderParser(); - ToXMLContentHandler handler = new ToXMLContentHandler(); - Metadata metadata = new Metadata(); try (InputStream stream = EnviHeaderParser.class.getResourceAsStream( "/test-documents/envi_test_header.hdr")) { - assertNotNull("Test ENVI file not found", stream); + assertNotNull("Test ENVI file 'envi_test_header.hdr' not found", stream); parser.parse(stream, handler, metadata, new ParseContext()); } @@ -57,4 +71,68 @@ public void testParseGlobalMetadata() throws Exception { assertContains("content=\"application/envi.hdr\"", content); assertContains("projection info = {16, 6371007.2, 0.000000, 0.0, 0.0, Sinusoidal, units=Meters}", content); } + + @Test + public void testParseGlobalMetadataMultiLineMetadataValues() throws Exception { + + Parser parser = new EnviHeaderParser(); + ToXMLContentHandler handler = new ToXMLContentHandler(); + Metadata metadata = new Metadata(); + + try (InputStream stream = EnviHeaderParser.class.getResourceAsStream( + "/test-documents/ang20150420t182050_corr_v1e_img.hdr")) { + assertNotNull("Test ENVI file 'ang20150420t182050_corr_v1e_img.hdr' not found", stream); + parser.parse(stream, handler, metadata, new ParseContext()); + } + + // Check content of test file + String content = handler.toString(); + assertContains("<body><p>ENVI</p>", content); + assertContains("<p>description = { Georeferenced Image built from input GLT. [Wed Jun 10 04:37:54 2015] [Wed Jun 10 04:48:52 2015]}</p>", content); + assertContains("<p>samples = 739</p>", content); + assertContains("<p>map info = { UTM , 1.000 , 1.000 , 724522.127 , 4074620.759 , 1.1000000000e+00 , 1.1000000000e+00 , 12 , North , WGS-84 , units=Meters , rotation=75.00000000 }</p>", content); + assertContains("correction factors = { 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.880586 , 1.741631 , 1.524632 , 1.564904 , 1.390035 , 1.342501 , 1.264768 , 1.200357 , 1.131471 , 1.06512 , 1.105211 , 1.081234 , 1.064999 , 1.056798 , 1.042573 , 1.009621 , 1.009031 , 1.002107 , 0.997332 , 0.976807 , 0.963755 , 0.969028 , 0.962823 , 0.949522 , 0.960568 , 0.957813 , 0.934766 , 0.944994 , 0.937726 , 0.935257 , 0.932706 , 0.932568 , 0.933217 , 0.928705 , 0.929294 , 0.936669 , 0.935498 , 0.94823 , 0.949846 , 0.945885 , 0.935468 , 0.930084 , 0.934473 , 0.935378 , 0.939193 , 0.935081 , 0.937398 , 0.943396 , 0.947133 , 0.950645 , 0.945531 , 0.940295 , 0.933129 , 0.930664 , 0.92736 , 0.931786 , 0.928217 , 0.928205 , 0.926481 , 0.928583 , 0.930504 , 0.93648 , 0.930731 , 0.931265 , 0.935063 , 0.93434 , 0.926983 , 0.932689 , 0.936477 , 0.939647 , 0.940155 , 0.937519 , 0.939448 , 0.942124 , 0.93653 , 0.9435 , 0.959204 , 0.942566 , 0.940873 , 0.939414 , 0.939822 , 0.940174 , 0.941372 , 0.939347 , 0.942108 , 0.942664 , 0.934811 , 0.934567 , 0.937712 , 0.940611 , 0.944809 , 0.939877 , 0.943376 , 0.939189 , 0.943619 , 0.946268 , 0.940166 , 0.953752 , 0.958975 , 0.954512 , 0.954103 , 0.958978 , 0.953247 , 0.952199 , 0.956082 , 0.957846 , 0.970078 , 0.973704 , 0.980014 , 0.928845 , 0.922973 , 0.954414 , 0.95521 , 0.961276 , 0.964513 , 0.965296 , 0.964644 , 0.954999 , 0.951133 , 0.956216 , 0.951977 , 0.948547 , 0.949499 , 0.952685 , 0.950158 , 0.944263 , 0.936946 , 0.938394 , 0.941325 , 0.94116 , 0.941397 , 0.940811 , 0.942695 , 0.945228 , 0.953929 , 0.962457 , 0.968728 , 0.963947 , 0.961222 , 0.963003 , 0.967658 , 0.969773 , 0.970294 , 0.963456 , 0.970497 , 0.976972 , 0.961611 , 0.953081 , 0.945668 , 0.993867 , 1.019915 , 0.997013 , 0.977643 , 0.998022 , 1.007041 , 1.003881 , 0.991335 , 0.976202 , 0.967636 , 0.969294 , 0.965331 , 0.968705 , 0.965705 , 0.973601 , 0.97282 , 0.970848 , 0.970687 , 0.969394 , 0.972263 , 0.969286 , 0.970327 , 0.97754 , 0.984703 , 0.993916 , 1.02186 , 1.054704 , 1.061183 , 1.036962 , 1.012519 , 0.991209 , 0.975974 , 0.965446 , 0.958801 , 0.951519 , 0.960628 , 0.957276 , 0.96061 , 0.95689 , 0.956666 , 0.965567 , 0.982251 , 1.038526 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.131643 , 1.150333 , 1.112466 , 1.06255 , 1.033182 , 1.03018 , 1.006512 , 0.993285 , 1.003557 , 1.014441 , 0.998586 , 0.994426 , 0.987975 , 0.984681 , 0.981863 , 0.964106 , 0.956432 , 0.954467 , 0.956429 , 0.950668 , 0.947217 , 0.944635 , 0.942942 , 0.941078 , 0.943502 , 0.950408 , 0.957625 , 0.965073 , 0.976012 , 0.976683 , 0.975625 , 0.968011 , 0.968843 , 0.970632 , 0.960977 , 0.960505 , 0.955015 , 0.953597 , 0.951119 , 0.945679 , 0.949988 , 0.951236 , 0.947813 , 0.948004 , 0.950015 , 0.939258 , 0.945863 , 0.953927 , 0.953145 , 0.945291 , 0.942319 , 0.947022 , 0.948264 , 0.947112 , 0.942092 , 0.943128 , 0.948068 , 0.944432 , 0.950396 , 0.964006 , 0.961019 , 0.951786 , 0.957457 , 0.950327 , 0.954375 , 0.9608 , 0.965864 , 0.982396 , 1.011334 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.289798 , 1.126375 , 1.074621 , 1.069365 , 1.051364 , 1.009432 , 0.984578 , 0.991187 , 1.016306 , 1.083681 , 1.076539 , 1.104657 , 1.114005 , 1.081102 , 1.039196 , 1.009524 , 0.966515 , 0.953688 , 0.966274 , 0.973232 , 0.966402 , 0.946801 , 0.951952 , 0.965679 , 0.96977 , 0.946541 , 0.941678 , 0.937528 , 0.922351 , 0.914192 , 0.92879 , 0.932284 , 0.933182 , 0.922322 , 0.91851 , 0.919591 , 0.925027 , 0.924611 , 0.932288 , 0.933352 , 0.930517 , 0.931666 , 0.931763 , 0.932655 , 0.928945 , 0.933308 , 0.932392 , 0.932943 , 0.935328 , 0.947019 , 0.954093 , 0.95156 , 0.939591 , 0.942808 , 0.944862 , 0.944004 , 0.949161 , 0.950992 , 0.956738 , 0.951184 , 0.953545 , 0.958836 , 0.966134 , 0.956752 , 0.951961 , 0.958667 , 0.9579 , 0.968531 , 0.973792 , 0.969238 , 0.970838 , 0.954552 , 0.968166 , 0.989176 , 0.974784 , 0.970674 , 0.9733 , 0.990576 , 1.0062 , 1.010295 , 0.99378 , 0.986109 , 1.007054 , 1.005377 , 1.010013 , 1.014671 , 1.021618 , 1.021229 , 1.021003 , 1.020866 , 1.029358 , 1.042136 , 1.030482 , 1.019556 , 1.036656 , 1.05348 , 1.015947 , 1.07263 , 1.092879 , 1.053624 , 1.086491 , 1.139334 , 1.163645 , 1.162487 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 }", content); + } + + /** + * @return the parser + */ + public Parser getParser() { + return parser; + } + + /** + * @param parser the parser to set + */ + public void setParser(Parser parser) { + this.parser = parser; + } + + /** + * @return the handler + */ + public ToXMLContentHandler getHandler() { + return handler; + } + + /** + * @param handler the handler to set + */ + public void setHandler(ToXMLContentHandler handler) { + this.handler = handler; + } + + /** + * @return the metadata + */ + public Metadata getMetadata() { + return metadata; + } + + /** + * @param metadata the metadata to set + */ + public void setMetadata(Metadata metadata) { + this.metadata = metadata; + } } diff --git a/tika-parsers/src/test/resources/test-documents/ang20150420t182050_corr_v1e_img.hdr b/tika-parsers/src/test/resources/test-documents/ang20150420t182050_corr_v1e_img.hdr new file mode 100644 index 000000000..ba44396cc --- /dev/null +++ b/tika-parsers/src/test/resources/test-documents/ang20150420t182050_corr_v1e_img.hdr @@ -0,0 +1,20 @@ +ENVI +description = { + Georeferenced Image built from input GLT. [Wed Jun 10 04:37:54 2015] [Wed + Jun 10 04:48:52 2015]} +samples = 739 +lines = 14674 +bands = 432 +header offset = 0 +file type = ENVI Standard +data type = 4 +interleave = bil +sensor type = Unknown +byte order = 0 +map info = { UTM , 1.000 , 1.000 , 724522.127 , 4074620.759 , 1.1000000000e+00 , 1.1000000000e+00 , 12 , North , WGS-84 , units=Meters , rotation=75.00000000 } +wavelength units = Nanometers +correction factors = { 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.880586 , 1.741631 , 1.524632 , 1.564904 , 1.390035 , 1.342501 , 1.264768 , 1.200357 , 1.131471 , 1.06512 , 1.105211 , 1.081234 , 1.064999 , 1.056798 , 1.042573 , 1.009621 , 1.009031 , 1.002107 , 0.997332 , 0.976807 , 0.963755 , 0.969028 , 0.962823 , 0.949522 , 0.960568 , 0.957813 , 0.934766 , 0.944994 , 0.937726 , 0.935257 , 0.932706 , 0.932568 , 0.933217 , 0.928705 , 0.929294 , 0.936669 , 0.935498 , 0.94823 , 0.949846 , 0.945885 , 0.935468 , 0.930084 , 0.934473 , 0.935378 , 0.939193 , 0.935081 , 0.937398 , 0.943396 , 0.947133 , 0.950645 , 0.945531 , 0.940295 , 0.933129 , 0.930664 , 0.92736 , 0.931786 , 0.928217 , 0.928205 , 0.926481 , 0.928583 , 0.930504 , 0.93648 , 0.930731 , 0.931265 , 0.935063 , 0.93434 , 0.926983 , 0.932689 , 0.936477 , 0.939647 , 0.940155 , 0.937519 , 0.939448 , 0.942124 , 0.93653 , 0.9435 , 0.959204 , 0.942566 , 0.940873 , 0.939414 , 0.939822 , 0.940174 , 0.941372 , 0.939347 , 0.942108 , 0.942664 , 0.934811 , 0.934567 , 0.937712 , 0.940611 , 0.944809 , 0.939877 , 0.943376 , 0.939189 , 0.943619 , 0.946268 , 0.940166 , 0.953752 , 0.958975 , 0.954512 , 0.954103 , 0.958978 , 0.953247 , 0.952199 , 0.956082 , 0.957846 , 0.970078 , 0.973704 , 0.980014 , 0.928845 , 0.922973 , 0.954414 , 0.95521 , 0.961276 , 0.964513 , 0.965296 , 0.964644 , 0.954999 , 0.951133 , 0.956216 , 0.951977 , 0.948547 , 0.949499 , 0.952685 , 0.950158 , 0.944263 , 0.936946 , 0.938394 , 0.941325 , 0.94116 , 0.941397 , 0.940811 , 0.942695 , 0.945228 , 0.953929 , 0.962457 , 0.968728 , 0.963947 , 0.961222 , 0.963003 , 0.967658 , 0.969773 , 0.970294 , 0.963456 , 0.970497 , 0.976972 , 0.961611 , 0.953081 , 0.945668 , 0.993867 , 1.019915 , 0.997013 , 0.977643 , 0.998022 , 1.007041 , 1.003881 , 0.991335 , 0.976202 , 0.967636 , 0.969294 , 0.965331 , 0.968705 , 0.965705 , 0.973601 , 0.97282 , 0.970848 , 0.970687 , 0.969394 , 0.972263 , 0.969286 , 0.970327 , 0.97754 , 0.984703 , 0.993916 , 1.02186 , 1.054704 , 1.061183 , 1.036962 , 1.012519 , 0.991209 , 0.975974 , 0.965446 , 0.958801 , 0.951519 , 0.960628 , 0.957276 , 0.96061 , 0.95689 , 0.956666 , 0.965567 , 0.982251 , 1.038526 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.131643 , 1.150333 , 1.112466 , 1.06255 , 1.033182 , 1.03018 , 1.006512 , 0.993285 , 1.003557 , 1.014441 , 0.998586 , 0.994426 , 0.987975 , 0.984681 , 0.981863 , 0.964106 , 0.956432 , 0.954467 , 0.956429 , 0.950668 , 0.947217 , 0.944635 , 0.942942 , 0.941078 , 0.943502 , 0.950408 , 0.957625 , 0.965073 , 0.976012 , 0.976683 , 0.975625 , 0.968011 , 0.968843 , 0.970632 , 0.960977 , 0.960505 , 0.955015 , 0.953597 , 0.951119 , 0.945679 , 0.949988 , 0.951236 , 0.947813 , 0.948004 , 0.950015 , 0.939258 , 0.945863 , 0.953927 , 0.953145 , 0.945291 , 0.942319 , 0.947022 , 0.948264 , 0.947112 , 0.942092 , 0.943128 , 0.948068 , 0.944432 , 0.950396 , 0.964006 , 0.961019 , 0.951786 , 0.957457 , 0.950327 , 0.954375 , 0.9608 , 0.965864 , 0.982396 , 1.011334 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.289798 , 1.126375 , 1.074621 , 1.069365 , 1.051364 , 1.009432 , 0.984578 , 0.991187 , 1.016306 , 1.083681 , 1.076539 , 1.104657 , 1.114005 , 1.081102 , 1.039196 , 1.009524 , 0.966515 , 0.953688 , 0.966274 , 0.973232 , 0.966402 , 0.946801 , 0.951952 , 0.965679 , 0.96977 , 0.946541 , 0.941678 , 0.937528 , 0.922351 , 0.914192 , 0.92879 , 0.932284 , 0.933182 , 0.922322 , 0.91851 , 0.919591 , 0.925027 , 0.924611 , 0.932288 , 0.933352 , 0.930517 , 0.931666 , 0.931763 , 0.932655 , 0.928945 , 0.933308 , 0.932392 , 0.932943 , 0.935328 , 0.947019 , 0.954093 , 0.95156 , 0.939591 , 0.942808 , 0.944862 , 0.944004 , 0.949161 , 0.950992 , 0.956738 , 0.951184 , 0.953545 , 0.958836 , 0.966134 , 0.956752 , 0.951961 , 0.958667 , 0.9579 , 0.968531 , 0.973792 , 0.969238 , 0.970838 , 0.954552 , 0.968166 , 0.989176 , 0.974784 , 0.970674 , 0.9733 , 0.990576 , 1.0062 , 1.010295 , 0.99378 , 0.986109 , 1.007054 , 1.005377 , 1.010013 , 1.014671 , 1.021618 , 1.021229 , 1.021003 , 1.020866 , 1.029358 , 1.042136 , 1.030482 , 1.019556 , 1.036656 , 1.05348 , 1.015947 , 1.07263 , 1.092879 , 1.053624 , 1.086491 , 1.139334 , 1.163645 , 1.162487 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 } +wavelength = { 346.2995778 , 351.3082478 , 356.3169178 , 361.3255878 , 366.3342578 , 371.3429278 , 376.3515978 , 381.3602678 , 386.3689378 , 391.3776078 , 396.3862778 , 401.3949478 , 406.4036178 , 411.4122878 , 416.4209578 , 421.4296278 , 426.4382978 , 431.4469678 , 436.4556378 , 441.4643078 , 446.4729778 , 451.4816478 , 456.4903178 , 461.4989878 , 466.5076578 , 471.5163278 , 476.5249978 , 481.5336678 , 486.5423378 , 491.5510078 , 496.5596778 , 501.5683478 , 506.5770178 , 511.5856878 , 516.5943578 , 521.6030278 , 526.6116978 , 531.6203678 , 536.6290378 , 541.6377078 , 546.6463778 , 551.6550478 , 556.6637178 , 561.6723878 , 566.6810578 , 571.6897278 , 576.6983978 , 581.7070678 , 586.7157378 , 591.7244078 , 596.7330778 , 601.7417478 , 606.7504178 , 611.7590878 , 616.7677578 , 621.7764278 , 626.7850978 , 631.7937678 , 636.8024378 , 641.8111078 , 646.8197778 , 651.8284478 , 656.8371178 , 661.8457878 , 666.8544578 , 671.8631278 , 676.8717978 , 681.8804678 , 686.8891378 , 691.8978078 , 696.9064778 , 701.9151478 , 706.9238178 , 711.9324878 , 716.9411578 , 721.9498278 , 726.9584978 , 731.9671678 , 736.9758378 , 741.9845078 , 746.9931778 , 752.0018478 , 757.0105178 , 762.0191878 , 767.0278578 , 772.0365278 , 777.0451978 , 782.0538678 , 787.0625378 , 792.0712078 , 797.0798778 , 802.0885478 , 807.0972178 , 812.1058878 , 817.1145578 , 822.1232278 , 827.1318978 , 832.1405678 , 837.1492378 , 842.1579078 , 847.1665778 , 852.1752478 , 857.1839178 , 862.1925878 , 867.2012578 , 872.2099278 , 877.2185978 , 882.2272678 , 887.2359378 , 892.2446078 , 897.2532778 , 902.2619478 , 907.2706178 , 912.2792878 , 917.2879578 , 922.2966278 , 927.3052978 , 932.3139678 , 937.3226378 , 942.3313078 , 947.3399778 , 952.3486478 , 957.3573178 , 962.3659878 , 967.3746578 , 972.3833278 , 977.3919978 , 982.4006678 , 987.4093378 , 992.4180078 , 997.4266778 , 1002.4353478 , 1007.4440178 , 1012.4526878 , 1017.4613578 , 1022.4700278 , 1027.4786978 , 1032.4873678 , 1037.4960378 , 1042.5047078 , 1047.5133778 , 1052.5220478 , 1057.5307178 , 1062.5393878 , 1067.5480578 , 1072.5567278 , 1077.5653978 , 1082.5740778 , 1087.5827478 , 1092.5914078 , 1097.6000778 , 1102.6087478 , 1107.6174278 , 1112.6260878 , 1117.6347678 , 1122.6434278 , 1127.6520978 , 1132.6607678 , 1137.6694478 , 1142.6781078 , 1147.6867778 , 1152.6954478 , 1157.7041278 , 1162.7127878 , 1167.7214678 , 1172.7301378 , 1177.7388078 , 1182.7474778 , 1187.7561478 , 1192.7648178 , 1197.7734878 , 1202.7821578 , 1207.7908278 , 1212.7994978 , 1217.8081678 , 1222.8168378 , 1227.8255078 , 1232.8341778 , 1237.8428478 , 1242.8515178 , 1247.8601878 , 1252.8688578 , 1257.8775278 , 1262.8861978 , 1267.8948678 , 1272.9035378 , 1277.9122078 , 1282.9208778 , 1287.9295478 , 1292.9382178 , 1297.9468878 , 1302.9555578 , 1307.9642278 , 1312.9728978 , 1317.9815678 , 1322.9902378 , 1327.9989078 , 1333.0075778 , 1338.0162478 , 1343.0249178 , 1348.0335878 , 1353.0422578 , 1358.0509278 , 1363.0595978 , 1368.0682678 , 1373.0769378 , 1378.0856078 , 1383.0942778 , 1388.1029478 , 1393.1116178 , 1398.1202878 , 1403.1289578 , 1408.1376278 , 1413.1462978 , 1418.1549678 , 1423.1636378 , 1428.1723078 , 1433.1809778 , 1438.1896478 , 1443.1983178 , 1448.2069878 , 1453.2156578 , 1458.2243278 , 1463.2329978 , 1468.2416678 , 1473.2503378 , 1478.2590078 , 1483.2676778 , 1488.2763478 , 1493.2850178 , 1498.2936878 , 1503.3023578 , 1508.3110278 , 1513.3196978 , 1518.3283678 , 1523.3370378 , 1528.3457078 , 1533.3543778 , 1538.3630478 , 1543.3717178 , 1548.3803878 , 1553.3890578 , 1558.3977278 , 1563.4063978 , 1568.4150678 , 1573.4237378 , 1578.4324078 , 1583.4410778 , 1588.4497478 , 1593.4584178 , 1598.4670878 , 1603.4757578 , 1608.4844278 , 1613.4930978 , 1618.5017678 , 1623.5104378 , 1628.5191078 , 1633.5277778 , 1638.5364478 , 1643.5451178 , 1648.5537878 , 1653.5624578 , 1658.5711278 , 1663.5797978 , 1668.5884678 , 1673.5971378 , 1678.6058078 , 1683.6144778 , 1688.6231478 , 1693.6318178 , 1698.6404878 , 1703.6491578 , 1708.6578278 , 1713.6664978 , 1718.6751678 , 1723.6838378 , 1728.6925078 , 1733.7011778 , 1738.7098478 , 1743.7185178 , 1748.7271878 , 1753.7358578 , 1758.7445278 , 1763.7531978 , 1768.7618678 , 1773.7705378 , 1778.7792078 , 1783.7878778 , 1788.7965478 , 1793.8052178 , 1798.8138878 , 1803.8225578 , 1808.8312278 , 1813.8398978 , 1818.8485678 , 1823.8572378 , 1828.8659078 , 1833.8745778 , 1838.8832478 , 1843.8919178 , 1848.9005878 , 1853.9092578 , 1858.9179278 , 1863.9265978 , 1868.9352678 , 1873.9439378 , 1878.9526078 , 1883.9612778 , 1888.9699478 , 1893.9786178 , 1898.9872878 , 1903.9959578 , 1909.0046278 , 1914.0132978 , 1919.0219778 , 1924.0306378 , 1929.0393178 , 1934.0479778 , 1939.0566478 , 1944.0653278 , 1949.0739978 , 1954.0826578 , 1959.0913278 , 1964.1000078 , 1969.1086778 , 1974.1173378 , 1979.1260078 , 1984.1346778 , 1989.1433578 , 1994.1520178 , 1999.1606878 , 2004.1693678 , 2009.1780378 , 2014.1867078 , 2019.1953778 , 2024.2040478 , 2029.2127178 , 2034.2213878 , 2039.2300578 , 2044.2387278 , 2049.2473978 , 2054.2560678 , 2059.2647378 , 2064.2734078 , 2069.2820778 , 2074.2907478 , 2079.2994178 , 2084.3080878 , 2089.3167578 , 2094.3254278 , 2099.3340978 , 2104.3427678 , 2109.3514378 , 2114.3601078 , 2119.3687778 , 2124.3774478 , 2129.3861178 , 2134.3947878 , 2139.4034578 , 2144.4121278 , 2149.4207978 , 2154.4294678 , 2159.4381378 , 2164.4468078 , 2169.4554778 , 2174.4641478 , 2179.4728178 , 2184.4814878 , 2189.4901578 , 2194.4988278 , 2199.5074978 , 2204.5161678 , 2209.5248378 , 2214.5335078 , 2219.5421778 , 2224.5508478 , 2229.5595178 , 2234.5681878 , 2239.5768578 , 2244.5855278 , 2249.5941978 , 2254.6028678 , 2259.6115378 , 2264.6202078 , 2269.6288778 , 2274.6375478 , 2279.6462178 , 2284.6548878 , 2289.6635578 , 2294.6722278 , 2299.6808978 , 2304.6895678 , 2309.6982378 , 2314.7069078 , 2319.7155778 , 2324.7242478 , 2329.7329178 , 2334.7415878 , 2339.7502578 , 2344.7589278 , 2349.7675978 , 2354.7762678 , 2359.7849378 , 2364.7936078 , 2369.8022778 , 2374.8109478 , 2379.8196178 , 2384.8282878 , 2389.8369578 , 2394.8456278 , 2399.8542978 , 2404.8629678 , 2409.8716378 , 2414.8803078 , 2419.8889778 , 2424.8976478 , 2429.9063178 , 2434.9149878 , 2439.9236578 , 2444.9323278 , 2449.9409978 , 2454.9496678 , 2459.9583378 , 2464.9670078 , 2469.9756778 , 2474.9843478 , 2479.9930178 , 2485.0016878 , 2490.0103578 , 2495.0190278 , 2500.0276978 , 2505.0363678 } +fwhm = { 5.55165 , 5.55524 , 5.55879 , 5.5623 , 5.56577 , 5.5692 , 5.5726 , 5.57595 , 5.57927 , 5.58255 , 5.58579 , 5.58899 , 5.59216 , 5.59529 , 5.59839 , 5.60144 , 5.60446 , 5.60745 , 5.6104 , 5.61332 , 5.61619 , 5.61904 , 5.62185 , 5.62463 , 5.62737 , 5.63008 , 5.63275 , 5.6354 , 5.63801 , 5.64058 , 5.64313 , 5.64564 , 5.64812 , 5.65057 , 5.65299 , 5.65537 , 5.65773 , 5.66005 , 5.66235 , 5.66461 , 5.66684 , 5.66905 , 5.67122 , 5.67337 , 5.67549 , 5.67758 , 5.67964 , 5.68167 , 5.68367 , 5.68565 , 5.6876 , 5.68952 , 5.69141 , 5.69328 , 5.69512 , 5.69694 , 5.69873 , 5.70049 , 5.70223 , 5.70394 , 5.70563 , 5.70729 , 5.70893 , 5.71055 , 5.71214 , 5.7137 , 5.71524 , 5.71676 , 5.71826 , 5.71973 , 5.72118 , 5.72261 , 5.72401 , 5.72539 , 5.72676 , 5.72809 , 5.72941 , 5.73071 , 5.73198 , 5.73324 , 5.73447 , 5.73569 , 5.73688 , 5.73806 , 5.73921 , 5.74034 , 5.74146 , 5.74256 , 5.74363 , 5.74469 , 5.74573 , 5.74676 , 5.74776 , 5.74875 , 5.74972 , 5.75067 , 5.7516 , 5.75252 , 5.75342 , 5.75431 , 5.75518 , 5.75603 , 5.75687 , 5.75769 , 5.75849 , 5.75928 , 5.76006 , 5.76082 , 5.76156 , 5.76229 , 5.76301 , 5.76371 , 5.7644 , 5.76507 , 5.76573 , 5.76638 , 5.76702 , 5.76764 , 5.76825 , 5.76884 , 5.76943 , 5.77 , 5.77056 , 5.77111 , 5.77164 , 5.77217 , 5.77268 , 5.77319 , 5.77368 , 5.77416 , 5.77463 , 5.77509 , 5.77554 , 5.77598 , 5.77641 , 5.77683 , 5.77725 , 5.77765 , 5.77804 , 5.77843 , 5.7788 , 5.77917 , 5.77953 , 5.77988 , 5.78022 , 5.78056 , 5.78088 , 5.7812 , 5.78151 , 5.78182 , 5.78212 , 5.78241 , 5.78269 , 5.78297 , 5.78324 , 5.78351 , 5.78377 , 5.78402 , 5.78427 , 5.78452 , 5.78475 , 5.78499 , 5.78521 , 5.78543 , 5.78565 , 5.78587 , 5.78607 , 5.78628 , 5.78648 , 5.78668 , 5.78687 , 5.78706 , 5.78724 , 5.78743 , 5.78761 , 5.78778 , 5.78796 , 5.78813 , 5.7883 , 5.78846 , 5.78862 , 5.78879 , 5.78895 , 5.7891 , 5.78926 , 5.78941 , 5.78957 , 5.78972 , 5.78987 , 5.79002 , 5.79017 , 5.79032 , 5.79046 , 5.79061 , 5.79076 , 5.79091 , 5.79105 , 5.7912 , 5.79135 , 5.7915 , 5.79164 , 5.79179 , 5.79194 , 5.79209 , 5.79224 , 5.7924 , 5.79255 , 5.79271 , 5.79286 , 5.79302 , 5.79318 , 5.79335 , 5.79351 , 5.79368 , 5.79385 , 5.79402 , 5.79419 , 5.79437 , 5.79455 , 5.79473 , 5.79492 , 5.79511 , 5.7953 , 5.7955 , 5.7957 , 5.7959 , 5.7961 , 5.79631 , 5.79653 , 5.79675 , 5.79697 , 5.7972 , 5.79743 , 5.79766 , 5.7979 , 5.79815 , 5.7984 , 5.79865 , 5.79891 , 5.79918 , 5.79945 , 5.79972 , 5.80001 , 5.80029 , 5.80058 , 5.80088 , 5.80119 , 5.8015 , 5.80181 , 5.80213 , 5.80246 , 5.8028 , 5.80314 , 5.80349 , 5.80384 , 5.8042 , 5.80457 , 5.80494 , 5.80532 , 5.80571 , 5.80611 , 5.80651 , 5.80692 , 5.80734 , 5.80777 , 5.8082 , 5.80864 , 5.80909 , 5.80955 , 5.81001 , 5.81048 , 5.81096 , 5.81145 , 5.81195 , 5.81246 , 5.81297 , 5.81349 , 5.81402 , 5.81456 , 5.81511 , 5.81567 , 5.81623 , 5.81681 , 5.81739 , 5.81799 , 5.81859 , 5.8192 , 5.81982 , 5.82045 , 5.82109 , 5.82174 , 5.8224 , 5.82307 , 5.82374 , 5.82443 , 5.82513 , 5.82584 , 5.82656 , 5.82728 , 5.82802 , 5.82877 , 5.82953 , 5.8303 , 5.83108 , 5.83186 , 5.83266 , 5.83347 , 5.8343 , 5.83513 , 5.83597 , 5.83682 , 5.83769 , 5.83856 , 5.83944 , 5.84034 , 5.84125 , 5.84217 , 5.8431 , 5.84404 , 5.84499 , 5.84595 , 5.84692 , 5.84791 , 5.84891 , 5.84992 , 5.85093 , 5.85197 , 5.85301 , 5.85406 , 5.85513 , 5.85621 , 5.85729 , 5.8584 , 5.85951 , 5.86063 , 5.86177 , 5.86292 , 5.86408 , 5.86525 , 5.86643 , 5.86763 , 5.86884 , 5.87005 , 5.87129 , 5.87253 , 5.87379 , 5.87506 , 5.87634 , 5.87763 , 5.87893 , 5.88025 , 5.88158 , 5.88292 , 5.88428 , 5.88564 , 5.88702 , 5.88841 , 5.88982 , 5.89123 , 5.89266 , 5.8941 , 5.89556 , 5.89702 , 5.8985 , 5.89999 , 5.90149 , 5.90301 , 5.90454 , 5.90608 , 5.90763 , 5.9092 , 5.91078 , 5.91237 , 5.91398 , 5.91559 , 5.91722 , 5.91886 , 5.92052 , 5.92219 , 5.92387 , 5.92556 , 5.92727 , 5.92898 , 5.93071 , 5.93246 , 5.93421 , 5.93598 , 5.93776 , 5.93956 , 5.94137 , 5.94319 , 5.94502 , 5.94686 , 5.94872 , 5.95059 , 5.95247 , 5.95437 , 5.95628 , 5.9582 , 5.96013 , 5.96207 , 5.96403 , 5.966 , 5.96799 , 5.96998 , 5.97199 , 5.97401 , 5.97604 , 5.97809 , 5.98015 , 5.98222 , 5.9843 , 5.98639 , 5.9885 , 5.99062 , 5.99275 , 5.9949 , 5.99706 , 5.99922 , 6.00141 , 6.0036 , 6.0058 , 6.00802 , 6.01025 , 6.01249 , 6.01475 , 6.01701 , 6.01929 , 6.02158 , 6.02388 , 6.02619 , 6.02852 } +bbl = { 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 } +smoothing factors = { 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 } ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > ENVI Header metadata fields can span more than one line > ------------------------------------------------------- > > Key: TIKA-2636 > URL: https://issues.apache.org/jira/browse/TIKA-2636 > Project: Tika > Issue Type: Bug > Components: parser > Affects Versions: 1.17 > Reporter: Lewis John McGibbney > Assignee: Lewis John McGibbney > Priority: Major > Fix For: 2.0.0 > > Attachments: ang20150420t182050_corr_v1e_img.hdr > > > [~tpalsulich] was correct when [he > stated|https://issues.apache.org/jira/browse/TIKA-1357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14046140#comment-14046140] > "...See below for how to read and output line by line (copy & paste between > the xml start/end in EnviHeaderParser). I have a hunch this isn't really what > we want -- what if a metadata field has a newline in it? What if the line is > too long to fit into a string? On the other hand, with nice input, it's much > nicer output." > As it turns out ENVI header metadata fields can span more than one line. An > example is as follows > {code} > 1. ENVI > 2. description = { > 3. Georeferenced Image built from input GLT. [Wed Jun 10 04:37:54 2015] > [Wed > 4. Jun 10 04:48:52 2015]} > 5. samples = 739 > 6. lines = 14674 > 7. bands = 432 > 8. header offset = 0 > 9. file type = ENVI Standard > 10. data type = 4 > 11. interleave = bil > 12. sensor type = Unknown > 13. byte order = 0 > 14. map info = { UTM , 1.000 , 1.000 , 724522.127 , 4074620.759 , > 1.1000000000e+00 , 1.1000000000e+00 , 12 , North , WGS-84 , units=Meters , > rotation=75.00000000 } > 15. wavelength units = Nanometers > ... > {code} > The case here is when a metadata field value is contained within curly > brackets. The examples above are clearly L2-L4 where the value is spread over > three lines and L14 where the value is contained within the one line. > This requires a patch to fix the > [EnviHeaderParser|https://github.com/apache/tika/blob/9130bbc1fa6d69419b2ad294917260d6b1cced08/tika-parsers/src/main/java/org/apache/tika/parser/envi/EnviHeaderParser.java] -- This message was sent by Atlassian JIRA (v7.6.3#76005)