SPH 215: GIS and Public Health

Professor Peter James


The following is an abridged version of the course syllabus. A full course syllabus can be found on the Canvas class website.

Lecture and Lab

Lecture: Mondays 3:50p-5:20p

Lab: Wednesdays 3:50p-5:20p

Lecture and Lab are held in person.


Teaching Staff

Instructor Dr. Peter James

Associate Professor in the Department of Public Health Sciences

Contact: pjames.at.health.ucdavis.edu

Office: Medical Sciences 1C Room 138

Office hours: By appointment over Zoom. Please email any time to set up a meeting!


Teaching Assistant Sidney Parel

Contact: skparel.at.ucdavis.edu

Office hours: By appointment over Zoom. Please email any time to set up a meeting!


Course Objectives

In this course, students will gain

  • A theoretical understanding of the role of space and place in community-level phenomenon
  • An understanding of what kinds of spatial data are available and where to find them
  • Proficiency in spatial analytic tools (R) to
    • Manage and process spatial data
    • Descriptively examine spatial data
    • Run spatial models for statistical inference
  • An understanding of how these methods are employed in community research


Course Format

Lecture sessions will adhere to the following format:

  • 45 minute or so lecture / discussion about that week’s topic – Feel free to interrupt me to ask questions!
  • Short break
  • 40 minute or so student-led discussion of the week’s reading.


Lab Sessions will adhere to the following format:

  • A hands on lab where we apply the methods learned in lecture/discussion using real data in R.


All students are expected to actively participate in all components of the course, which means not only being present, but reading all material and engaging in class discussions.


Required Readings

There are also a set of weekly readings listed in the syllabus that provide applications of the methods. Required reading material is composed of journal articles from peer-reviewed journals.


Handouts

I will provide lecture handouts on Canvas in advance of the assigned class.


Additional Readings

The other major course material are lab guides, which will be released at the beginning of Thursday’s lecture on the class website. Many of the R lab guides will closely follow two textbooks. These textbooks are not required, but are great resources.

The first textbook provides the foundation for using R

(RDS) Wickham, Hadley & Garret Grolemund. (2017). R for Data Science. Sebastopol, CA: O’Reilly Media. The textbook is free online at: http://r4ds.had.co.nz/introduction.html

The second textbook covers spatial data in R

(GWR) Lovelace, Robin, Jakub Nowosad & Jannes Muenchow. Geocomputation with R. CRC Press. The textbook is free online at: https://geocompr.robinlovelace.net/


Course Software

R is the only statistical language used in this course, as it has become an increasingly popular program for data analysis in the social sciences. We will use RStudio as a user friendly interface for R. R is freeware and you can download it on your personal laptop and desktop computers (along with RStudio, which is a user friendly interface for R). Note that although the course does not require students to have experience with R, this class does not devote too much time introducing students to the program. In other words, this is a not an introduction to R programming. The lab guides will provide as much detail as possible to execute tasks and functions, but you will likely run into tasks that will require you to go beyond the guides. My suggestion is to (1) look up RDS or GWR as they are excellent resources and (2) if (1) fails, search online. As such, you are expected to do as much independent learning of the software as I teach in the labs.


Course Requirements


Homework Assignments (4 x 10%: 40%):

Students will be expected to submit their completed GIS lab assignments. These assignments will be posted Wednesday mornings and due the following Monday before class. Each assignment will be 10% of the final grade, with four lab assignments making up a total of 40% of the final grade.


Mid-Term Exam (20%):

Students will be given a mid-term based on the use of GIS for public health. This mid-term will be multiple choice and short answer, and all questions will be related to coursework, lectures, and readings. The mid-term will be open book and will posted on Wednesday and due on Friday. The mid-term will be 20% of the final grade.


Final Project (20% Final Paper + 10% Final Presentation):

The course will end with a final project where the students will be able to apply the skills they have learned in the course to a project that involves either creating a map relevant to public health (e.g., a choropleth map of asthma rates across counties in California) or conducting an analysis with spatial data (e.g., examining the correlation between air pollution levels and cardiovascular disease rates across counties in California). All projects will have to contain at least one map. Each student will propose their own project midway through the course, and they will have to identify datasets (public or privately-owned) to visualize in their project. Students will prepare a final paper (6-8 pages double-spaced) that will be in the format of a manuscript. This manuscript could be a preliminary analysis of secondary data, a preliminary analysis of primary data, or a commentary / public opinion piece translating research to the public. The final paper will be 30% of the final grade. Participants will also present on their topic during the last week of class. The final presentation will be 10% of the final grade.


Class Participation (10%):

All students are expected to be active participants in class, speaking and contributing to class discussion on most days. On Mondays, during the second half of class there will be student-led discussions of readings. Each student will participate in leading a group discussion on the reading assignments. Students will sign up to lead the classes in groups of 1-4 and will be expected to facilitate class discussion. These discussions can involve presentations, or other interactive approaches to involve students in discussion of the paper (I’d even accept interpretive dance). Class discussions are an important teaching component of the course. Overall class participation will make up 10% of the final grade.


Course Agenda

The schedule is subject to revision throughout the quarter. Please see the full syllabus for a more detailed version of the agenda.

LS0tCnRpdGxlOiAiU3lsbGFidXMiCm91dHB1dDogaHRtbF9kb2N1bWVudAotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyMjIFNQSCAyMTU6IEdJUyBhbmQgUHVibGljIEhlYWx0aAojIyMgUHJvZmVzc29yIFBldGVyIEphbWVzCgpcCgpUaGUgZm9sbG93aW5nIGlzIGFuIGFicmlkZ2VkIHZlcnNpb24gb2YgdGhlIGNvdXJzZSBzeWxsYWJ1cy4gQSBmdWxsIGNvdXJzZSBzeWxsYWJ1cyBjYW4gYmUgZm91bmQgb24gdGhlIFtDYW52YXMgY2xhc3Mgd2Vic2l0ZV0oaHR0cHM6Ly9jYW52YXMudWNkYXZpcy5lZHUvY291cnNlcy8xMDY0MjI3KS4KCiMgTGVjdHVyZSBhbmQgTGFiCgoqKkxlY3R1cmU6KiogTW9uZGF5cyAzOjUwcC01OjIwcAoKKipMYWI6KiogV2VkbmVzZGF5cyAzOjUwcC01OjIwcAoKTGVjdHVyZSBhbmQgTGFiIGFyZSBoZWxkIGluIHBlcnNvbi4KClwKCiMgVGVhY2hpbmcgU3RhZmYKCioqSW5zdHJ1Y3RvcioqCkRyLiBQZXRlciBKYW1lcwoKQXNzb2NpYXRlIFByb2Zlc3NvciBpbiB0aGUgRGVwYXJ0bWVudCBvZiBQdWJsaWMgSGVhbHRoIFNjaWVuY2VzCgpDb250YWN0OiBwamFtZXMuYXQuaGVhbHRoLnVjZGF2aXMuZWR1CgpPZmZpY2U6IE1lZGljYWwgU2NpZW5jZXMgMUMgUm9vbSAxMzgKCk9mZmljZSBob3VyczogQnkgYXBwb2ludG1lbnQgb3ZlciBab29tLiBQbGVhc2UgZW1haWwgYW55IHRpbWUgdG8gc2V0IHVwIGEgbWVldGluZyEKClwKCioqVGVhY2hpbmcgQXNzaXN0YW50KioKU2lkbmV5IFBhcmVsCgpDb250YWN0OiBza3BhcmVsLmF0LnVjZGF2aXMuZWR1CgpPZmZpY2UgaG91cnM6IEJ5IGFwcG9pbnRtZW50IG92ZXIgWm9vbS4gUGxlYXNlIGVtYWlsIGFueSB0aW1lIHRvIHNldCB1cCBhIG1lZXRpbmchCgpcCgojIENvdXJzZSBPYmplY3RpdmVzCkluIHRoaXMgY291cnNlLCBzdHVkZW50cyB3aWxsIGdhaW4KCi0gQSB0aGVvcmV0aWNhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSByb2xlIG9mIHNwYWNlIGFuZCBwbGFjZSBpbiBjb21tdW5pdHktbGV2ZWwgcGhlbm9tZW5vbgotIEFuIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBraW5kcyBvZiBzcGF0aWFsIGRhdGEgYXJlIGF2YWlsYWJsZSBhbmQgd2hlcmUgdG8gZmluZCB0aGVtCi0gUHJvZmljaWVuY3kgaW4gc3BhdGlhbCBhbmFseXRpYyB0b29scyAoUikgdG8KICAtIE1hbmFnZSBhbmQgcHJvY2VzcyBzcGF0aWFsIGRhdGEKICAtIERlc2NyaXB0aXZlbHkgZXhhbWluZSBzcGF0aWFsIGRhdGEKICAtIFJ1biBzcGF0aWFsIG1vZGVscyBmb3Igc3RhdGlzdGljYWwgaW5mZXJlbmNlCi0gQW4gdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgZW1wbG95ZWQgaW4gY29tbXVuaXR5IHJlc2VhcmNoCgpcCgojIENvdXJzZSBGb3JtYXQKTGVjdHVyZSBzZXNzaW9ucyB3aWxsIGFkaGVyZSB0byB0aGUgZm9sbG93aW5nIGZvcm1hdDogCgotIDQ1IG1pbnV0ZSBvciBzbyBsZWN0dXJlIC8gZGlzY3Vzc2lvbiBhYm91dCB0aGF0IHdlZWsncyB0b3BpYyAtLSBGZWVsIGZyZWUgdG8gaW50ZXJydXB0IG1lIHRvIGFzayBxdWVzdGlvbnMhIAotIFNob3J0IGJyZWFrCi0gNDAgbWludXRlIG9yIHNvIHN0dWRlbnQtbGVkIGRpc2N1c3Npb24gb2YgdGhlIHdlZWsncyByZWFkaW5nLgoKXAoKTGFiIFNlc3Npb25zIHdpbGwgYWRoZXJlIHRvIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgoKLSBBIGhhbmRzIG9uIGxhYiB3aGVyZSB3ZSBhcHBseSB0aGUgbWV0aG9kcyBsZWFybmVkIGluIGxlY3R1cmUvZGlzY3Vzc2lvbiB1c2luZyByZWFsIGRhdGEgaW4gUi4gCgpcCgpBbGwgc3R1ZGVudHMgYXJlIGV4cGVjdGVkIHRvIGFjdGl2ZWx5IHBhcnRpY2lwYXRlIGluIGFsbCBjb21wb25lbnRzIG9mIHRoZSBjb3Vyc2UsIHdoaWNoIG1lYW5zIG5vdCBvbmx5IGJlaW5nIHByZXNlbnQsIGJ1dCByZWFkaW5nIGFsbCBtYXRlcmlhbCBhbmQgZW5nYWdpbmcgaW4gY2xhc3MgZGlzY3Vzc2lvbnMuIAoKXAoKIyBSZXF1aXJlZCBSZWFkaW5ncwpUaGVyZSBhcmUgYWxzbyBhIHNldCBvZiB3ZWVrbHkgcmVhZGluZ3MgbGlzdGVkIGluIHRoZSBzeWxsYWJ1cyB0aGF0IHByb3ZpZGUgYXBwbGljYXRpb25zIG9mIHRoZSBtZXRob2RzLiBSZXF1aXJlZCByZWFkaW5nIG1hdGVyaWFsIGlzIGNvbXBvc2VkIG9mIGpvdXJuYWwgYXJ0aWNsZXMgZnJvbSBwZWVyLXJldmlld2VkIGpvdXJuYWxzLgoKXAoKIyBIYW5kb3V0cwpJIHdpbGwgcHJvdmlkZSBsZWN0dXJlIGhhbmRvdXRzIG9uIENhbnZhcyBpbiBhZHZhbmNlIG9mIHRoZSBhc3NpZ25lZCBjbGFzcy4KClwKCiMgQWRkaXRpb25hbCBSZWFkaW5ncwpUaGUgb3RoZXIgbWFqb3IgY291cnNlIG1hdGVyaWFsIGFyZSBsYWIgZ3VpZGVzLCB3aGljaCB3aWxsIGJlIHJlbGVhc2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgVGh1cnNkYXnigJlzIGxlY3R1cmUgb24gdGhlIGNsYXNzIHdlYnNpdGUuIE1hbnkgb2YgdGhlIFIgbGFiIGd1aWRlcyB3aWxsIGNsb3NlbHkgZm9sbG93IHR3byB0ZXh0Ym9va3MuIFRoZXNlIHRleHRib29rcyBhcmUgbm90IHJlcXVpcmVkLCBidXQgYXJlIGdyZWF0IHJlc291cmNlcy4KClRoZSBmaXJzdCB0ZXh0Ym9vayBwcm92aWRlcyB0aGUgZm91bmRhdGlvbiBmb3IgdXNpbmcgUgoKKFJEUykgV2lja2hhbSwgSGFkbGV5ICYgR2FycmV0IEdyb2xlbXVuZC4gKDIwMTcpLiBSIGZvciBEYXRhIFNjaWVuY2UuIFNlYmFzdG9wb2wsIENBOiBP4oCZUmVpbGx5IE1lZGlhLgpUaGUgdGV4dGJvb2sgaXMgZnJlZSBvbmxpbmUgYXQ6IGh0dHA6Ly9yNGRzLmhhZC5jby5uei9pbnRyb2R1Y3Rpb24uaHRtbAoKVGhlIHNlY29uZCB0ZXh0Ym9vayBjb3ZlcnMgc3BhdGlhbCBkYXRhIGluIFIKCihHV1IpIExvdmVsYWNlLCBSb2JpbiwgSmFrdWIgTm93b3NhZCAmIEphbm5lcyBNdWVuY2hvdy4gR2VvY29tcHV0YXRpb24gd2l0aCBSLiBDUkMgUHJlc3MuClRoZSB0ZXh0Ym9vayBpcyBmcmVlIG9ubGluZSBhdDogaHR0cHM6Ly9nZW9jb21wci5yb2JpbmxvdmVsYWNlLm5ldC8KClwKCiMgQ291cnNlIFNvZnR3YXJlClIgaXMgdGhlIG9ubHkgc3RhdGlzdGljYWwgbGFuZ3VhZ2UgdXNlZCBpbiB0aGlzIGNvdXJzZSwgYXMgaXQgaGFzIGJlY29tZSBhbiBpbmNyZWFzaW5nbHkgcG9wdWxhciBwcm9ncmFtIGZvciBkYXRhIGFuYWx5c2lzIGluIHRoZSBzb2NpYWwgc2NpZW5jZXMuIFdlIHdpbGwgdXNlIFJTdHVkaW8gYXMgYSB1c2VyIGZyaWVuZGx5IGludGVyZmFjZSBmb3IgUi4gUiBpcyBmcmVld2FyZSBhbmQgeW91IGNhbiBkb3dubG9hZCBpdCBvbiB5b3VyIHBlcnNvbmFsIGxhcHRvcCBhbmQgZGVza3RvcCBjb21wdXRlcnMgKGFsb25nIHdpdGggUlN0dWRpbywgd2hpY2ggaXMgYSB1c2VyIGZyaWVuZGx5IGludGVyZmFjZSBmb3IgUikuIE5vdGUgdGhhdCBhbHRob3VnaCB0aGUgY291cnNlIGRvZXMgbm90IHJlcXVpcmUgc3R1ZGVudHMgdG8gaGF2ZSBleHBlcmllbmNlIHdpdGggUiwgdGhpcyBjbGFzcyBkb2VzIG5vdCBkZXZvdGUgdG9vIG11Y2ggdGltZSBpbnRyb2R1Y2luZyBzdHVkZW50cyB0byB0aGUgcHJvZ3JhbS4gSW4gb3RoZXIgd29yZHMsIHRoaXMgaXMgYSBub3QgYW4gaW50cm9kdWN0aW9uIHRvIFIgcHJvZ3JhbW1pbmcuIFRoZSBsYWIgZ3VpZGVzIHdpbGwgcHJvdmlkZSBhcyBtdWNoIGRldGFpbCBhcyBwb3NzaWJsZSB0byBleGVjdXRlIHRhc2tzIGFuZCBmdW5jdGlvbnMsIGJ1dCB5b3Ugd2lsbCBsaWtlbHkgcnVuIGludG8gdGFza3MgdGhhdCB3aWxsIHJlcXVpcmUgeW91IHRvIGdvIGJleW9uZCB0aGUgZ3VpZGVzLiBNeSBzdWdnZXN0aW9uIGlzIHRvICgxKSBsb29rIHVwIFJEUyBvciBHV1IgYXMgdGhleSBhcmUgZXhjZWxsZW50IHJlc291cmNlcyBhbmQgKDIpIGlmICgxKSBmYWlscywgc2VhcmNoIG9ubGluZS4gQXMgc3VjaCwgeW91IGFyZSBleHBlY3RlZCB0byBkbyBhcyBtdWNoIGluZGVwZW5kZW50IGxlYXJuaW5nIG9mIHRoZSBzb2Z0d2FyZSBhcyBJIHRlYWNoIGluIHRoZSBsYWJzLgoKXAoKIyBDb3Vyc2UgUmVxdWlyZW1lbnRzCiAKXAogCiMjIEhvbWV3b3JrIEFzc2lnbm1lbnRzICg0IHggMTAlOiA0MCUpOgpTdHVkZW50cyB3aWxsIGJlIGV4cGVjdGVkIHRvIHN1Ym1pdCB0aGVpciBjb21wbGV0ZWQgR0lTIGxhYiBhc3NpZ25tZW50cy4gVGhlc2UgYXNzaWdubWVudHMgd2lsbCBiZSBwb3N0ZWQgV2VkbmVzZGF5IG1vcm5pbmdzIGFuZCBkdWUgdGhlIGZvbGxvd2luZyBNb25kYXkgYmVmb3JlIGNsYXNzLiBFYWNoIGFzc2lnbm1lbnQgd2lsbCBiZSAxMCUgb2YgdGhlIGZpbmFsIGdyYWRlLCB3aXRoIGZvdXIgbGFiIGFzc2lnbm1lbnRzIG1ha2luZyB1cCBhIHRvdGFsIG9mIDQwJSBvZiB0aGUgZmluYWwgZ3JhZGUuCgpcCgojIyBNaWQtVGVybSBFeGFtICgyMCUpOiAKU3R1ZGVudHMgd2lsbCBiZSBnaXZlbiBhIG1pZC10ZXJtIGJhc2VkIG9uIHRoZSB1c2Ugb2YgR0lTIGZvciBwdWJsaWMgaGVhbHRoLiBUaGlzIG1pZC10ZXJtIHdpbGwgYmUgbXVsdGlwbGUgY2hvaWNlIGFuZCBzaG9ydCBhbnN3ZXIsIGFuZCBhbGwgcXVlc3Rpb25zIHdpbGwgYmUgcmVsYXRlZCB0byBjb3Vyc2V3b3JrLCBsZWN0dXJlcywgYW5kIHJlYWRpbmdzLiBUaGUgbWlkLXRlcm0gd2lsbCBiZSBvcGVuIGJvb2sgYW5kIHdpbGwgcG9zdGVkIG9uIFdlZG5lc2RheSBhbmQgZHVlIG9uIEZyaWRheS4gVGhlIG1pZC10ZXJtIHdpbGwgYmUgMjAlIG9mIHRoZSBmaW5hbCBncmFkZS4KClwKCiMjIEZpbmFsIFByb2plY3QgKDIwJSBGaW5hbCBQYXBlciArIDEwJSBGaW5hbCBQcmVzZW50YXRpb24pOgpUaGUgY291cnNlIHdpbGwgZW5kIHdpdGggYSBmaW5hbCBwcm9qZWN0IHdoZXJlIHRoZSBzdHVkZW50cyB3aWxsIGJlIGFibGUgdG8gYXBwbHkgdGhlIHNraWxscyB0aGV5IGhhdmUgbGVhcm5lZCBpbiB0aGUgY291cnNlIHRvIGEgcHJvamVjdCB0aGF0IGludm9sdmVzIGVpdGhlciBjcmVhdGluZyBhIG1hcCByZWxldmFudCB0byBwdWJsaWMgaGVhbHRoIChlLmcuLCBhIGNob3JvcGxldGggbWFwIG9mIGFzdGhtYSByYXRlcyBhY3Jvc3MgY291bnRpZXMgaW4gQ2FsaWZvcm5pYSkgb3IgY29uZHVjdGluZyBhbiBhbmFseXNpcyB3aXRoIHNwYXRpYWwgZGF0YSAoZS5nLiwgZXhhbWluaW5nIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIGFpciBwb2xsdXRpb24gbGV2ZWxzIGFuZCBjYXJkaW92YXNjdWxhciBkaXNlYXNlIHJhdGVzIGFjcm9zcyBjb3VudGllcyBpbiBDYWxpZm9ybmlhKS4gQWxsIHByb2plY3RzIHdpbGwgaGF2ZSB0byBjb250YWluIGF0IGxlYXN0IG9uZSBtYXAuIEVhY2ggc3R1ZGVudCB3aWxsIHByb3Bvc2UgdGhlaXIgb3duIHByb2plY3QgbWlkd2F5IHRocm91Z2ggdGhlIGNvdXJzZSwgYW5kIHRoZXkgd2lsbCBoYXZlIHRvIGlkZW50aWZ5IGRhdGFzZXRzIChwdWJsaWMgb3IgcHJpdmF0ZWx5LW93bmVkKSB0byB2aXN1YWxpemUgaW4gdGhlaXIgcHJvamVjdC4gU3R1ZGVudHMgd2lsbCBwcmVwYXJlIGEgZmluYWwgcGFwZXIgKDYtOCBwYWdlcyBkb3VibGUtc3BhY2VkKSB0aGF0IHdpbGwgYmUgaW4gdGhlIGZvcm1hdCBvZiBhIG1hbnVzY3JpcHQuIFRoaXMgbWFudXNjcmlwdCBjb3VsZCBiZSBhIHByZWxpbWluYXJ5IGFuYWx5c2lzIG9mIHNlY29uZGFyeSBkYXRhLCBhIHByZWxpbWluYXJ5IGFuYWx5c2lzIG9mIHByaW1hcnkgZGF0YSwgb3IgYSBjb21tZW50YXJ5IC8gcHVibGljIG9waW5pb24gcGllY2UgdHJhbnNsYXRpbmcgcmVzZWFyY2ggdG8gdGhlIHB1YmxpYy4gVGhlIGZpbmFsIHBhcGVyIHdpbGwgYmUgMzAlIG9mIHRoZSBmaW5hbCBncmFkZS4gUGFydGljaXBhbnRzIHdpbGwgYWxzbyBwcmVzZW50IG9uIHRoZWlyIHRvcGljIGR1cmluZyB0aGUgbGFzdCB3ZWVrIG9mIGNsYXNzLiBUaGUgZmluYWwgcHJlc2VudGF0aW9uIHdpbGwgYmUgMTAlIG9mIHRoZSBmaW5hbCBncmFkZS4KClwKCiMjIENsYXNzIFBhcnRpY2lwYXRpb24gKDEwJSk6CkFsbCBzdHVkZW50cyBhcmUgZXhwZWN0ZWQgdG8gYmUgYWN0aXZlIHBhcnRpY2lwYW50cyBpbiBjbGFzcywgc3BlYWtpbmcgYW5kIGNvbnRyaWJ1dGluZyB0byBjbGFzcyBkaXNjdXNzaW9uIG9uIG1vc3QgZGF5cy4gT24gTW9uZGF5cywgZHVyaW5nIHRoZSBzZWNvbmQgaGFsZiBvZiBjbGFzcyB0aGVyZSB3aWxsIGJlIHN0dWRlbnQtbGVkIGRpc2N1c3Npb25zIG9mIHJlYWRpbmdzLiBFYWNoIHN0dWRlbnQgd2lsbCBwYXJ0aWNpcGF0ZSBpbiBsZWFkaW5nIGEgZ3JvdXAgZGlzY3Vzc2lvbiBvbiB0aGUgcmVhZGluZyBhc3NpZ25tZW50cy4gU3R1ZGVudHMgd2lsbCBzaWduIHVwIHRvIGxlYWQgdGhlIGNsYXNzZXMgaW4gZ3JvdXBzIG9mIDEtNCBhbmQgd2lsbCBiZSBleHBlY3RlZCB0byBmYWNpbGl0YXRlIGNsYXNzIGRpc2N1c3Npb24uIFRoZXNlIGRpc2N1c3Npb25zIGNhbiBpbnZvbHZlIHByZXNlbnRhdGlvbnMsIG9yIG90aGVyIGludGVyYWN0aXZlIGFwcHJvYWNoZXMgdG8gaW52b2x2ZSBzdHVkZW50cyBpbiBkaXNjdXNzaW9uIG9mIHRoZSBwYXBlciAoSeKAmWQgZXZlbiBhY2NlcHQgaW50ZXJwcmV0aXZlIGRhbmNlKS4gQ2xhc3MgZGlzY3Vzc2lvbnMgYXJlIGFuIGltcG9ydGFudCB0ZWFjaGluZyBjb21wb25lbnQgb2YgdGhlIGNvdXJzZS4gT3ZlcmFsbCBjbGFzcyBwYXJ0aWNpcGF0aW9uIHdpbGwgbWFrZSB1cCAxMCUgb2YgdGhlIGZpbmFsIGdyYWRlLgoKXAoKIyBDb3Vyc2UgQWdlbmRhCgpUaGUgc2NoZWR1bGUgaXMgc3ViamVjdCB0byByZXZpc2lvbiB0aHJvdWdob3V0IHRoZSBxdWFydGVyLiBQbGVhc2Ugc2VlIHRoZSBmdWxsIHN5bGxhYnVzIGZvciBhIG1vcmUgZGV0YWlsZWQgdmVyc2lvbiBvZiB0aGUgYWdlbmRhLgo=