(Source: http://www.stat.cmu.edu/~brian/701/notes/paper-structure.pdf)

Overview

A data analysis report is somewhat different from other types of professional writing that you may have done or seen, or will learn about in the future. It is related to but not the same as:

The overall structure of a data analysis report is simple:

  1. Introduction
  2. Body
  3. Conclusion(s)/Discussion
  4. Appendix/Appendices

The data analysis report is written for several different audiences at the same time:

The data analysis report has two very important features:

It is less important to worry about the latter two items in the Appendix which is expected to be more detailed and process-oriented. However, there should be enough text annotating the technical material in the Appendix so that the reader can see how and why you carried out the more detailed work shown there.

The data analysis report isn’t quite like a research paper or term paper in a class, nor like a research article in a journal. It is meant, primarily, to start an organized conversation between you and your client/collaborator. In that sense it is a kind of “internal” communication, sort of like an extended memo. On the other hand it also has an “external” life, informing a boss or supervisor what you’ve been doing.


Structure

Now let’s consider the basic outline of the data analysis report in more detail:

1. Introduction

Good features for the Introduction include:

  • Summary of the study and data, as well as any relevant substantive context, background, or framing issues.
  • The “big questions” answered by your data analyses, and summaries of your conclusions about these questions.
  • Brief outline of remainder of paper.

The above is a pretty good order to present this material in as well.

2. Body

The body can be organized in several ways. Here are two that often work well:

  • Traditional. Divide the body up into several sections at the same level as the Introduction, with names like:
    • Data
    • Methods
    • Analysis
    • Results

This format is very familiar to those who have written psych research papers. It often works well for a data analysis paper as well, though one problem with it is that the Methods section often sounds like a bit of a stretch: In a psych research paper the Methods section describes what you did to get your data. In a data analysis paper, you should describe the analyses that you performed. Without the results as well, this can be pretty sterile sounding, so I often merge these “methods” pieces into the “Analysis” section when I write.

  • Question-oriented. In this format there is a single Body section, usually called “Analysis”, and then there is a subsection for each question raised in the introduction, usually taken in the same order as in the introduction (general to specific, decreasing order of importance, etc.). Within each subsection, statistical method, analyses, and conclusion would be described (for each question). For example:
2. Analysis
2.1 Success Rate Methods Analysis Conclusions
2.2 Time to Relapse Methods Analysis Conclusions
2.3 Effect of Gender Methods Analysis Conclusions
2.4 Hospital Effects Methods Analysis Conclusions
Etc. . .

Other organizational formats are possible too. Whatever the format, it is useful to provide one or two well-chosen tables or graphs per question in the body of the report, for two reasons: First, graphical and tabular displays can convey your points more efficiently than words; and second, your “skimming” audiences will be more likely to have their eye caught by an interesting graph or table than by running text. However, too much graphical/tabular material will break up the flow of the text and become distracting; so extras should be moved to the Appendix.

3. Conclusion(s)/Discussion

The conclusion should reprise the questions and conclusions of the in- troduction, perhaps augmented by some additional observations or details gleaned from the analysis section. New questions, future work, etc., can also be raised here.

4. Appendix/Appendices.

One or more appendices are the place to out details and ancillary materials. These might include such items as

  • Technical descriptions of (unusual) statistical procedures
  • Detailed tables or computer output
  • Figures that were not central to the arguments presented in the body of the report
  • Computer code used to obtain results.

In all cases, and especially in the case of computer code, it is a good idea to add some text sentences as comments or annotations, to make it easier for the uninitiated reader to follow what you are doing. It is often difficult to find the right balance between what to put in the appendix and what to put in the body of the paper. Generally you should put just enough in the body to make the point, and refer the reader to specific sections or page numbers in the appendix for additional graphs, tables and other details.


Appendix A with Integrated code

We make this the example for a data report.

This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.

plot(cars)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Cmd+Option+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Cmd+Shift+K to preview the HTML file).

  (str(cars))
LS0tCnRpdGxlOiAiU3RydWN0dXJlIG9mIGEgRGF0YSBBbmFseXNpcyBSZXBvcnQiCmF1dGhvcjogIkF1dGhvciBOYW1lIgpzb3VyY2U6ICJodHRwOi8vd3d3LnN0YXQuY211LmVkdS9+YnJpYW4vNzAxL25vdGVzL3BhcGVyLXN0cnVjdHVyZS5wZGYiCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KKFNvdXJjZTogaHR0cDovL3d3dy5zdGF0LmNtdS5lZHUvfmJyaWFuLzcwMS9ub3Rlcy9wYXBlci1zdHJ1Y3R1cmUucGRmKQoKIyBPdmVydmlldwoKQSBkYXRhIGFuYWx5c2lzIHJlcG9ydCBpcyBzb21ld2hhdCBkaWZmZXJlbnQgZnJvbSBvdGhlciB0eXBlcyBvZiBwcm9mZXNzaW9uYWwgd3JpdGluZyB0aGF0IHlvdSBtYXkgaGF2ZSBkb25lIG9yIHNlZW4sIG9yIHdpbGwgbGVhcm4gYWJvdXQgaW4gdGhlIGZ1dHVyZS4gSXQgaXMgcmVsYXRlZCB0byBidXQgbm90IHRoZSBzYW1lIGFzOgogICAKKiBBIHR5cGljYWwgcHN5Y2gvc29jaWFsIHNjaWVuY2UgcGFwZXIgb3JnYWluemVkIGFyb3VuZCDigJxpbnRyby9tZXRob2RzL2FuYWx5c2lzL3Jlc3VsdHMvZGlzY3Vzc2lvbuKAnSBzZWN0aW9ucy4KKiBBIHJlc2VhcmNoIGFydGljbGUgaW4gYW4gYWNhZGVtaWMgam91cm5hbC4KKiBBbiBlc3NheS4KKiBBIGxhYiByZXBvcnQgaW4gYSBzY2llbmNlIGNsYXNzLgoKVGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIGEgZGF0YSBhbmFseXNpcyByZXBvcnQgaXMgc2ltcGxlOgoKMS4gSW50cm9kdWN0aW9uCjIuIEJvZHkKMy4gQ29uY2x1c2lvbihzKS9EaXNjdXNzaW9uCjQuIEFwcGVuZGl4L0FwcGVuZGljZXMKClRoZSBkYXRhIGFuYWx5c2lzIHJlcG9ydCBpcyB3cml0dGVuIGZvciBzZXZlcmFsIGRpZmZlcmVudCBhdWRpZW5jZXMgYXQgdGhlIHNhbWUgdGltZToKCiogKipQcmltYXJ5IGF1ZGllbmNlKio6IEEgcHJpbWFyeSBjb2xsYWJvcmF0b3Igb3IgY2xpZW50LiBSZWFkcyB0aGUgSW50cm9kdWN0aW9uIGFuZCBwZXJoYXBzICB0aGUgQ29uY2x1c2lvbiB0byBmaW5kIG91dCB3aGF0IHlvdSBkaWQgYW5kIHdoYXQgeW91ciBjb25jbHVzaW9ucyB3ZXJlLCBhbmQgdGhlbiBwZXJoYXBzIGZpc2hlcy9za2ltcyB0aHJvdWdoIHRoZSBCb2R5LCBzdG9wcGluZyBvbmx5IGZvciBzb21lIGFkZGl0aW9uYWwgZGV0YWlscyBvbiB0aGUgcGFydHMgdGhhdCBoZS9zaGUgdGhvdWdodCB3ZXJlIGludGVyZXN0aW5nIG9yIGV5ZS1jYXRjaGluZy4gIE9yZ2FuaXplICB0aGUgcGFwZXIgYXJvdW5kICBhbiBhZ2VuZGEgIGZvciBhIGNvbnZlcnNhdGlvbiAgeW91IHdhbnQgdG8gICBoYXZlIHdpdGggdGhpcyBwZXJzb24gYWJvdXQgd2hhdCB5b3XigJl2ZSBsZWFybmVkIGFib3V0IHRoZWlyIGRhdGE6IGUuZy4sIGZyb20gbW9zdCBnZW5lcmFsIHRvIG1vc3Qgc3BlY2lmaWMsIG9yIGZyb20gbW9zdCBpbXBvcnRhbnQgdG8gbGVhc3QgaW1wb3J0YW50LCBldGMuIFByb3ZpZGUgdGhlIG1haW4gZXZpZGVuY2UgZnJvbSB5b3VyIGFuYWx5c2lzICh0YWJ1bGFyLCBncmFwaGljYWwsIG9yIG90aGVyd2lzZSkgaW4gdGhlIEJvZHkgdG8gc3VwcG9ydCBlYWNoIHBvaW50IG9yIGNvbmNsdXNpb24geW91IHJlYWNoLCBidXQgc2F2ZSBtb3JlIGRldGFpbGVkIGV2aWRlbmNlLCBhbmQgb3RoZXIgYW5jaWxsYXJ5IG1hdGVyaWFsLCBmb3IgdGhlIEFwcGVuZGl4LgoKKiAqKlNlY29uZGFyeSAgQXVkaWVuY2U6KiogIEFuICBleGVjdXRpdmUgIHBlcnNvbi4gICBQcm9iYWJseSAgb25seSAgc2tpbXMgIHRoZSAgSW50cm9kdWN0aW9uICBhbmQgIHBlcmhhcHMgdGhlIENvbmNsdXNpb24gdG8gZmluZCBvdXQgd2hhdCB5b3UgZGlkIGFuZCB3aGF0IHlvdXIgY29uY2x1c2lvbnMgYXJlLiBMZWF2ZSBzaWducG9zdHMgaW4gdGhlIEludHJvZHVjdGlvbiwgQm9keSBhbmQgQ29uY2x1c2lvbiB0byBtYWtlIGl0IGVhc3kgZm9yIHRoaXMgcGVyc29uIHRvIHN3b29wIGluLCBmaW5kIHRoZSDigJxoZWFkbGluZXPigJ0gb2YgeW91ciB3b3JrIGFuZCBjb25jbHVzaW9ucywgYW5kIHN3b29wIGJhY2sgb3V0LgoKKiAqKlNlY29uZGFyeSAgQXVkaWVuY2U6KiogIEEgIHRlY2huaWNhbCAgc3VwZXJ2aXNvci4gICBSZWFkcyAgdGhlICBCb2R5ICBhbmQgIHRoZW4gIGV4YW1pbmVzICB0aGUgIEFwcGVuZGl4IGZvciBxdWFsaXR5IGNvbnRyb2w6IEhvdyBnb29kIGEgam9iIGRpZCB5b3UgZG8gaW4gKHJhaXNpbmcgYW5kKSBhbnN3ZXJpbmcgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9ucz8gIEhvdyBlZmZpY2llbnQgd2VyZSB5b3U/ICBEaWQgeW91IHJlYWNoIHJlYXNvbmFibGUgIGNvbmNsdXNpb25zICBieSBkZWZlbnNpYmxlICBzdGF0aXN0aWNhbCAgbWV0aG9kcz8gIEV0Yy4gTWFrZSBzcGVjaWZpYyBjcm9zcy1yZWZlcmVuY2VzIGJldHdlZW4gdGhlIEJvZHkgYW5kIHNwZWNpZmljIHBhcnRzIG9mIHRoZSBBcHBlbmRpeCBzbyB0aGF0IHRoaXMgcGVyc29uIGNhbiBlYXNpbHkgZmluZCBzdXBwb3J0aW5nIGFuZCBhbmNpbGxhcnkgbWF0ZXJpYWwgcmVsYXRlZCB0byBlYWNoIG1haW4gYW5hbHlzaXMgeW91IHJlcG9ydCBpbiB0aGUgQm9keS4gQWRkIHRleHQgdG8gdGhlIHRlY2huaWNhbCBtYXRlcmlhbCBpbiB0aGUgQXBwZW5kaXggc28gdGhhdCB0aGlzIHBlcnNvbiBzZWVzIGhvdyBhbmQgd2h5IHlvdSBjYXJyaWVkIG91dCB0aGUgbW9yZSBkZXRhaWxlZCB3b3JrIHNob3duIGluIHRoZSBBcHBlbmRpeC4KClRoZSBkYXRhIGFuYWx5c2lzIHJlcG9ydCBoYXMgdHdvIHZlcnkgaW1wb3J0YW50IGZlYXR1cmVzOgoKKiAgSXQgaXMgb3JnYW5pemVkIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQgZWFzeSBmb3IgZGlmZmVyZW50IGF1ZGllbmNlcyB0byBza2ltL2Zpc2ggdGhyb3VnaCBpdCB0byBmaW5kIHRoZSAgdG9waWNzIGFuZCB0aGUgbGV2ZWwgb2YgZGV0YWlsIHRoYXQgYXJlIG9mIGludGVyZXN0IHRvIHRoZW0uCiogIFRoZSB3cml0aW5nIGlzIGFzIGludmlzaWJsZS91bnJlbWFya2FibGUgYXMgcG9zc2libGUsIHNvIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhlIGFuYWx5c2lzIGlzIHdoYXQgdGhlICByZWFkZXIgcmVtZW1iZXJzLCBub3QgZGlzdHJhY3RpbmcgcXVpcmtzIG9yIHRpY3MgaW4gdGhlIHdyaXRpbmcuIEV4YW1wbGVzIG9mIGRpc3RyYWN0aW9ucyBpbmNsdWRlOgogICAgICsgRXh0cmEgc2VudGVuY2VzLCBvdmVybHkgZm9ybWFsIG9yIGZsb3dlcnkgcHJvc2UsIG9yIGF0IHRoZSBvdGhlciBleHRyZW1lIG92ZXJseSBjYXN1YWwgb3Igb3Zlcmx5IGJyaWVmIHByb3NlLiAgCiAgICArIEdyYW1tYXRpY2FsIGFuZCBzcGVsbGluZyBlcnJvcnMuCiAgICArIFBsYWNpbmcgdGhlIGRhdGEgYW5hbHlzaXMgaW4gdG9vIGJyb2FkIG9yIHRvbyBuYXJyb3cgYSBjb250ZXh0IGZvciB0aGUgcXVlc3Rpb25zIG9mIGludGVyZXN0IHRvIHlvdXIgcHJpbWFyeSBhdWRpZW5jZS4KICAgICsgRm9jdXNpbmcgb24gcHJvY2VzcyByYXRoZXIgdGhhbiByZXBvcnRpbmcgcHJvY2VkdXJlcyBhbmQgb3V0Y29tZXMuCiAgICArIEdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGVjaG5pY2FsIGRldGFpbHMsIHJhdGhlciB0aGFuIHByZXNlbnRpbmcgd2hhdCBpcyBuZWNlc3NhcnkgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB5b3VyIGNvbmNsdXNpb25zIG9uIHN1YnN0YW50aXZlIHF1ZXN0aW9ucyBvZiBpbnRlcmVzdCB0byB0aGUgcHJpbWFyeSBhdWRpZW5jZS4KICAKSXQgaXMgbGVzcyBpbXBvcnRhbnQgdG8gd29ycnkgYWJvdXQgdGhlIGxhdHRlciB0d28gaXRlbXMgaW4gdGhlIEFwcGVuZGl4IHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIG1vcmUgZGV0YWlsZWQgYW5kIHByb2Nlc3Mtb3JpZW50ZWQuICBIb3dldmVyLCB0aGVyZSBzaG91bGQgYmUgZW5vdWdoIHRleHQgYW5ub3RhdGluZyB0aGUgdGVjaG5pY2FsIG1hdGVyaWFsICBpbiB0aGUgQXBwZW5kaXggc28gdGhhdCB0aGUgcmVhZGVyIGNhbiBzZWUgaG93IGFuZCB3aHkgeW91IGNhcnJpZWQgb3V0IHRoZSBtb3JlIGRldGFpbGVkIHdvcmsgc2hvd24gdGhlcmUuCgpUaGUgZGF0YSBhbmFseXNpcyByZXBvcnQgaXNu4oCZdCBxdWl0ZSBsaWtlIGEgcmVzZWFyY2ggcGFwZXIgb3IgdGVybSBwYXBlciBpbiBhIGNsYXNzLCBub3IgbGlrZSBhIHJlc2VhcmNoIGFydGljbGUgaW4gYSBqb3VybmFsLiBJdCBpcyBtZWFudCwgcHJpbWFyaWx5LCB0byBzdGFydCBhbiBvcmdhbml6ZWQgY29udmVyc2F0aW9uIGJldHdlZW4geW91IGFuZCB5b3VyIGNsaWVudC9jb2xsYWJvcmF0b3IuIEluIHRoYXQgc2Vuc2UgaXQgaXMgYSBraW5kIG9mIOKAnGludGVybmFs4oCdIGNvbW11bmljYXRpb24sIHNvcnQgb2YgbGlrZSBhbiBleHRlbmRlZCBtZW1vLiAgT24gdGhlIG90aGVyIGhhbmQgaXQgICAgYWxzbyBoYXMgYW4g4oCcZXh0ZXJuYWzigJ0gbGlmZSwgaW5mb3JtaW5nIGEgYm9zcyBvciBzdXBlcnZpc29yIHdoYXQgeW914oCZdmUgYmVlbiBkb2luZy4KCi0tLS0tCgojIFN0cnVjdHVyZQoKTm93IGxldOKAmXMgY29uc2lkZXIgdGhlIGJhc2ljIG91dGxpbmUgb2YgdGhlIGRhdGEgYW5hbHlzaXMgcmVwb3J0IGluIG1vcmUgZGV0YWlsOgoKIyMgMS4gSW50cm9kdWN0aW9uCgpHb29kIGZlYXR1cmVzIGZvciB0aGUgSW50cm9kdWN0aW9uIGluY2x1ZGU6CgoqIFN1bW1hcnkgb2YgdGhlIHN0dWR5IGFuZCBkYXRhLCBhcyB3ZWxsIGFzIGFueSByZWxldmFudCBzdWJzdGFudGl2ZSBjb250ZXh0LCBiYWNrZ3JvdW5kLCBvciBmcmFtaW5nIGlzc3Vlcy4KKiBUaGUg4oCcYmlnIHF1ZXN0aW9uc+KAnSBhbnN3ZXJlZCBieSB5b3VyIGRhdGEgYW5hbHlzZXMsIGFuZCBzdW1tYXJpZXMgb2YgeW91ciBjb25jbHVzaW9ucyBhYm91dCB0aGVzZSBxdWVzdGlvbnMuCiogQnJpZWYgb3V0bGluZSBvZiByZW1haW5kZXIgb2YgcGFwZXIuCgpUaGUgYWJvdmUgaXMgYSBwcmV0dHkgZ29vZCBvcmRlciB0byBwcmVzZW50IHRoaXMgbWF0ZXJpYWwgaW4gYXMgd2VsbC4KCiMjIDIuIEJvZHkgCgpUaGUgYm9keSBjYW4gYmUgb3JnYW5pemVkIGluIHNldmVyYWwgd2F5cy4gSGVyZSBhcmUgdHdvIHRoYXQgb2Z0ZW4gd29yayB3ZWxsOgoKKiBUcmFkaXRpb25hbC4gRGl2aWRlIHRoZSBib2R5IHVwIGludG8gc2V2ZXJhbCBzZWN0aW9ucyBhdCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgSW50cm9kdWN0aW9uLCB3aXRoIG5hbWVzIGxpa2U6CiAgICAgKyBEYXRhCiAgICAgKyBNZXRob2RzCiAgICAgKyBBbmFseXNpcwogICAgICsgUmVzdWx0cwoKVGhpcyBmb3JtYXQgaXMgdmVyeSBmYW1pbGlhciB0byB0aG9zZSB3aG8gaGF2ZSB3cml0dGVuIHBzeWNoIHJlc2VhcmNoIHBhcGVycy4gIEl0IG9mdGVuIHdvcmtzIHdlbGwgZm9yIGEgZGF0YSBhbmFseXNpcyBwYXBlciBhcyB3ZWxsLCB0aG91Z2ggb25lIHByb2JsZW0gd2l0aCBpdCBpcyB0aGF0IHRoZSBNZXRob2RzIHNlY3Rpb24gICBvZnRlbiBzb3VuZHMgbGlrZSBhIGJpdCBvZiBhIHN0cmV0Y2g6ICBJbiBhIHBzeWNoIHJlc2VhcmNoIHBhcGVyIHRoZSBNZXRob2RzIHNlY3Rpb24gZGVzY3JpYmVzIHdoYXQgeW91IGRpZCB0byBnZXQgeW91ciBkYXRhLiAgSW4gYSBkYXRhIGFuYWx5c2lzIHBhcGVyLCB5b3Ugc2hvdWxkIGRlc2NyaWJlIHRoZSBhbmFseXNlcyB0aGF0IHlvdSBwZXJmb3JtZWQuIFdpdGhvdXQgdGhlIHJlc3VsdHMgYXMgd2VsbCwgdGhpcyBjYW4gYmUgcHJldHR5IHN0ZXJpbGUgc291bmRpbmcsIHNvIEkgb2Z0ZW4gbWVyZ2UgdGhlc2Ug4oCcbWV0aG9kc+KAnSBwaWVjZXMgaW50byB0aGUg4oCcQW5hbHlzaXPigJ0gc2VjdGlvbiB3aGVuIEkgd3JpdGUuCgoqICBRdWVzdGlvbi1vcmllbnRlZC4gICBJbiAgdGhpcyAgZm9ybWF0ICB0aGVyZSAgaXMgIGEgIHNpbmdsZSAgQm9keSAgc2VjdGlvbiwgIHVzdWFsbHkgIGNhbGxlZCAg4oCcQW5hbHlzaXPigJ0sIGFuZCB0aGVuIHRoZXJlIGlzIGEgc3Vic2VjdGlvbiBmb3IgZWFjaCBxdWVzdGlvbiByYWlzZWQgaW4gdGhlIGludHJvZHVjdGlvbiwgdXN1YWxseSB0YWtlbiBpbiB0aGUgIHNhbWUgb3JkZXIgYXMgaW4gdGhlIGludHJvZHVjdGlvbiAoZ2VuZXJhbCB0byBzcGVjaWZpYywgZGVjcmVhc2luZyBvcmRlciBvZiBpbXBvcnRhbmNlLCAgZXRjLikuICBXaXRoaW4gZWFjaCBzdWJzZWN0aW9uLCAgc3RhdGlzdGljYWwgbWV0aG9kLCBhbmFseXNlcywgIGFuZCBjb25jbHVzaW9uIHdvdWxkIGJlIGRlc2NyaWJlZCAoZm9yIGVhY2ggcXVlc3Rpb24pLiBGb3IgZXhhbXBsZToKCmBgYAoyLiBBbmFseXNpcwoyLjEgU3VjY2VzcyBSYXRlIE1ldGhvZHMgQW5hbHlzaXMgQ29uY2x1c2lvbnMKMi4yIFRpbWUgdG8gUmVsYXBzZSBNZXRob2RzIEFuYWx5c2lzIENvbmNsdXNpb25zCjIuMyBFZmZlY3Qgb2YgR2VuZGVyIE1ldGhvZHMgQW5hbHlzaXMgQ29uY2x1c2lvbnMKMi40IEhvc3BpdGFsIEVmZmVjdHMgTWV0aG9kcyBBbmFseXNpcyBDb25jbHVzaW9ucwpFdGMuIC4gLgpgYGAKCk90aGVyIG9yZ2FuaXphdGlvbmFsIGZvcm1hdHMgYXJlIHBvc3NpYmxlIHRvby4gV2hhdGV2ZXIgdGhlIGZvcm1hdCwgaXQgaXMgdXNlZnVsIHRvIHByb3ZpZGUgb25lIG9yIHR3byB3ZWxsLWNob3NlbiB0YWJsZXMgb3IgZ3JhcGhzIHBlciBxdWVzdGlvbiBpbiB0aGUgYm9keSBvZiB0aGUgcmVwb3J0LCBmb3IgdHdvIHJlYXNvbnM6ICBGaXJzdCwgZ3JhcGhpY2FsIGFuZCB0YWJ1bGFyIGRpc3BsYXlzIGNhbiBjb252ZXkgeW91ciBwb2ludHMgbW9yZSBlZmZpY2llbnRseSB0aGFuIHdvcmRzOyBhbmQgc2Vjb25kLCB5b3VyIOKAnHNraW1taW5n4oCdIGF1ZGllbmNlcyB3aWxsIGJlIG1vcmUgbGlrZWx5IHRvIGhhdmUgdGhlaXIgZXllIGNhdWdodCBieSBhbiBpbnRlcmVzdGluZyBncmFwaCBvciB0YWJsZSB0aGFuIGJ5IHJ1bm5pbmcgdGV4dC4gSG93ZXZlciwgdG9vIG11Y2ggZ3JhcGhpY2FsL3RhYnVsYXIgbWF0ZXJpYWwgd2lsbCBicmVhayB1cCB0aGUgZmxvdyBvZiB0aGUgdGV4dCBhbmQgYmVjb21lIGRpc3RyYWN0aW5nOyBzbyBleHRyYXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBBcHBlbmRpeC4KCiMjIDMuIENvbmNsdXNpb24ocykvRGlzY3Vzc2lvbiAKClRoZSBjb25jbHVzaW9uIHNob3VsZCByZXByaXNlIHRoZSBxdWVzdGlvbnMgYW5kIGNvbmNsdXNpb25zIG9mIHRoZSBpbi0gdHJvZHVjdGlvbiwgcGVyaGFwcyBhdWdtZW50ZWQgYnkgc29tZSBhZGRpdGlvbmFsIG9ic2VydmF0aW9ucyBvciBkZXRhaWxzIGdsZWFuZWQgZnJvbSB0aGUgYW5hbHlzaXMgc2VjdGlvbi4gTmV3IHF1ZXN0aW9ucywgZnV0dXJlIHdvcmssIGV0Yy4sIGNhbiBhbHNvIGJlIHJhaXNlZCBoZXJlLgoKIyMgNC4gQXBwZW5kaXgvQXBwZW5kaWNlcy4gCk9uZSBvciBtb3JlIGFwcGVuZGljZXMgYXJlIHRoZSBwbGFjZSB0byBvdXQgZGV0YWlscyBhbmQgYW5jaWxsYXJ5IG1hdGVyaWFscy4gVGhlc2UgbWlnaHQgaW5jbHVkZSBzdWNoIGl0ZW1zIGFzCgoqICBUZWNobmljYWwgZGVzY3JpcHRpb25zIG9mICh1bnVzdWFsKSBzdGF0aXN0aWNhbCBwcm9jZWR1cmVzCiogIERldGFpbGVkIHRhYmxlcyBvciBjb21wdXRlciBvdXRwdXQKKiAgRmlndXJlcyB0aGF0IHdlcmUgbm90IGNlbnRyYWwgdG8gdGhlIGFyZ3VtZW50cyBwcmVzZW50ZWQgaW4gdGhlIGJvZHkgb2YgdGhlIHJlcG9ydAoqICBDb21wdXRlciBjb2RlIHVzZWQgdG8gb2J0YWluIHJlc3VsdHMuCgpJbiBhbGwgY2FzZXMsIGFuZCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9mIGNvbXB1dGVyIGNvZGUsIGl0IGlzIGEgZ29vZCBpZGVhIHRvIGFkZCBzb21lIHRleHQgc2VudGVuY2VzIGFzIGNvbW1lbnRzIG9yIGFubm90YXRpb25zLCB0byBtYWtlIGl0IGVhc2llciBmb3IgdGhlIHVuaW5pdGlhdGVkIHJlYWRlciB0byBmb2xsb3cgd2hhdCB5b3UgYXJlIGRvaW5nLgpJdCBpcyBvZnRlbiBkaWZmaWN1bHQgdG8gZmluZCB0aGUgcmlnaHQgYmFsYW5jZSBiZXR3ZWVuIHdoYXQgdG8gcHV0IGluIHRoZSBhcHBlbmRpeCAgYW5kIHdoYXQgdG8gcHV0IGluIHRoZSBib2R5IG9mIHRoZSBwYXBlci4gIEdlbmVyYWxseSB5b3Ugc2hvdWxkIHB1dCBqdXN0IGVub3VnaCBpbiB0aGUgYm9keSB0byBtYWtlIHRoZSBwb2ludCwgYW5kIHJlZmVyICAgdGhlIHJlYWRlciB0byBzcGVjaWZpYyBzZWN0aW9ucyBvciBwYWdlIG51bWJlcnMgaW4gdGhlIGFwcGVuZGl4IGZvciBhZGRpdGlvbmFsIGdyYXBocywgdGFibGVzIGFuZCBvdGhlciBkZXRhaWxzLgoKLS0tLS0tCgojIyMgIEFwcGVuZGl4IEEgd2l0aCBJbnRlZ3JhdGVkIGNvZGUKCldlIG1ha2UgdGhpcyB0aGUgZXhhbXBsZSBmb3IgYSBkYXRhIHJlcG9ydC4gCgpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiAKClRyeSBleGVjdXRpbmcgdGhpcyBjaHVuayBieSBjbGlja2luZyB0aGUgKlJ1biogYnV0dG9uIHdpdGhpbiB0aGUgY2h1bmsgb3IgYnkgcGxhY2luZyB5b3VyIGN1cnNvciBpbnNpZGUgaXQgYW5kIHByZXNzaW5nICpDbWQrU2hpZnQrRW50ZXIqLiAKCmBgYHtyfQpwbG90KGNhcnMpCmBgYAoKQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkNtZCtPcHRpb24rSSouCgpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkNtZCtTaGlmdCtLKiB0byBwcmV2aWV3IHRoZSBIVE1MIGZpbGUpLgoKYGBge3J9CiAgKHN0cihjYXJzKSkKYGBgCg==