Last Updated: 06/05/2023

1 Course Title

PSY:2301 – Introduction to Clinical Psychology (Spring 2023)

2 Course Meeting Time and Place

Monday & Wednesday 10:30–11:20 a.m., 100 Phillips Hall (PH)

3 Course Website

https://icon.uiowa.edu

To access the course site, log into Iowa Courses Online (ICON) using your Hawk ID and password.

4 Course Home

The College of Liberal Arts and Sciences (CLAS) is the home of this course, and CLAS governs the add and drop deadlines, the “second-grade only” option (SGO), academic misconduct policies, and other policies and procedures. Other UI colleges may have different policies.

5 Instructor

Professor Petersen
Office: 175 Psychological and Brain Sciences Building (PBSB)
E-mail: isaac-t-petersen@uiowa.edu
Office Phone: 467-1014
Student drop-in hours: Monday 11:20–12:20 & Thursday 2–4
Note: I’m here to help you learn and succeed in PSY:2301. Please come to my office hours to ask questions about course material, assignments, exams, or professional development (career-related issues), for instance. I welcome you to discuss any concerns you might have about the class. I am also available to meet with you by appointment, although I would appreciate your making every effort to see me during office hours. The best way to reach me outside of class is by e-mail.

6 Discussion Sections

All discussion sections are in 53 VAN. The day and time of the discussion section differ by section:

Section Day/Time Teaching Assistant
A01 Monday 3:30–4:20 Olivia Adamson
A02 Monday 4:30–5:20 Olivia Adamson
A03 Tuesday 8:30–9:20 James Lopez
A04 Tuesday 12:30–1:20 Gonzalo Quinones
A05 Tuesday 1:30–2:20 James Lopez
A06 Wednesday 2:30–3:20 Gonzalo Quinones
A07 Wednesday 3:30–4:20 Gonzalo Quinones
A08 Thursday 9:30–10:20 Olivia Adamson
A09 Thursday 10:30–11:20 Olivia Adamson
A10 Friday 1:30–2:20 Gonzalo Quinones

7 Graduate Teaching Assistants

The class has three graduate teaching assistants (TAs).

Gonzalo Quinones
Office: 364 Psychological and Brain Sciences Building (PBSB)
Sections: A04, A06, A07, A10
Student drop-in hours: Tuesday 10:00–12:00 and Wednesday 9:00–10:00
E-mail:

Olivia Adamson
Office: 364 Psychological and Brain Sciences Building (PBSB)
Sections: A01, A02, A08, A09
Student drop-in hours: Monday 12:00–2:00 (in-person and/or by zoom) and Thursday 8–9am (over zoom)
E-mail:

James Lopez
Office: 364 Psychological and Brain Sciences Building (PBSB)
Sections: A03, A05
Student drop-in hours: Monday 9:00–10:30
E-mail:

8 Departmental Resources

Department of Psychological and Brain Sciences: https://psychology.uiowa.edu
Department of Psychological and Brain Sciences Main Office: G60 Psychological and Brain Sciences Building (335-2406)
Coordinator of Undergraduate Studies: Professor Windschitl (paul-windschitl@uiowa.edu; 335-3681)
Academic Coordinator: Professor Johnson (debra-johnson@uiowa.edu; 335-0135)
Chair of Department: Professor Blumberg (mark-blumberg@uiowa.edu; 335-2424)

9 Prerequisites

The Psychology department has a hierarchical course structure that requires students to complete certain prerequisites before taking upper-level classes. The prerequisite for this course is Elementary Psychology (PSY:1001).

10 Description of Course

This course is designed to introduce you to the concepts and methods of the science of clinical psychology.

It has three areas of emphasis:

  1. Fundamentals of Scientific Clinical Psychology
  2. Evidence-Based Psychological Assessment
  3. Evidence-Based Psychological Intervention

This course will provide an introduction to (a) major theoretical models and research methods in scientific clinical psychology; (b) several psychological problems that are particularly relevant to college students (depression, anxiety, and alcohol abuse); (c) the general principles underlying the construction, administration, and interpretation of evidence-based clinical assessments; and (d) empirically supported approaches to psychological intervention. You are urged to reconsider your decision to take this class if you are reluctant to examine these topics in a scientific manner.

Note: Some topics and movies will deal with sensitive or controversial issues such alcohol problems, depression, anxiety, abuse, sexual assault, eating disorders, and suicide.

11 Learning Objectives

Taking this course should make you a more informed consumer of claims about contemporary clinical psychology and may assist in your evaluation of clinical psychology or other related potential career goals. This course is not designed to provide extensive information on the nature of psychological disorders (see Abnormal Psychology course) or to provide you with the skills to assess and treat psychological problems.

12 Required Textbook

There isn’t a required or recommended textbook. Instead, this course will include a combination of book chapters, peer-reviewed journal articles, and popular media articles. The source for all exam questions will be lecture, discussion, and all required readings for lectures and section, which will be provided on the course website on ICON. The cost of textbooks has become so high that I am not comfortable requiring one for this course when I can cover the material adequately in other ways. There also is no textbook available that covers the material as we do in class. Attendance at lectures will be critical as a result, however. If you miss a lecture or section, you will need to watch the lecture recording or get notes from a peer, because we do not provide notes or re-present missed lecture or section material in meetings. Once you have the notes from a peer, review them carefully on your own, then get into office hours with me or one of the TAs to address any specific questions that you have as soon as possible. Feel free to come to office hours with me or with one of the TAs to discuss how best to study for a course without a textbook.

13 Academic Honesty and Misconduct

All students in CLAS courses are expected to abide by the CLAS Code of Academic Honesty. Academic misconduct must be reported by instructors to CLAS according to these procedures. Please note that collaboration with other classmates on quizzes and during exams is not permitted. However, I do encourage you to collaborate with classmates to prepare for exams (e.g., informal study groups).

14 Course Requirements and Policies

14.1 Lecture

We will meet twice weekly for lectures, at the time and location described above. My powerpoint presentations for each lecture will be posted on ICON no later than noon the day before a lecture (though I may continue to refine the slides up until the time of lecture). Please note: powerpoint presentations are an outline of my points. It is your responsibility to take notes during class. I strongly recommend bringing the powerpoint presentations to class to take notes.

You should feel free to ask questions during lecture, although some questions may need to be deferred given the size of the class and the need to complete coverage of specific material during lecture. Questions and further discussion of class material are always welcome during office hours, during discussion section, and via e-mail. Please bear in mind that extensive or complex questions may not be addressable over e-mail.

14.1.1 Lecture Recordings

My intention is to record lectures so that you may review them. Recorded lectures will be posted on the “UICapture” tab in ICON. Recordings will be available up to 48 hours after class (for Wednesday lectures) or until the Wednesday class period (for Monday lectures). However, please do not count on recordings being available, in case I accidentally forget to initiate the recording or there is a technical malfunction. The availability of lecture recordings will not be extended beyond 48 hours after lecture—the recordings are meant to help people keep up with lectures and for students to retrieve the relevant content if they missed anything during the live lecture or if they miss the lecture; they are not meant to be a study method that allows people to fall behind in class from week to week. If you miss something and are unable to watch the lecture recording, you can get/review notes with a peer, and then come to office hours if you have specific questions.

14.2 Discussion Section

In addition to lecture, you also have a weekly discussion section, except during exam weeks. The day and time of the weekly discussion section differs based on the section, see above.

14.3 Attendance and Participation

Discussion section attendance and participation are mandatory and will be worth 8% of your final grade. You must attend section, pay attention, participate verbally, and complete the required activities during section to receive any attendance and participation points, as indicated by your submission of the required written responses during section at the end of the section session. There will be 13 discussions during the semester, and you will receive one point for submitting an appropriate written response at the end of each section, up to a maximum of 11 points (i.e., you will not receive extra credit for submitting appropriate responses for all 13 discussions). Thus, you will not be penalized for missing two sections, although you still will be responsible for the covered material on exams, etc., and I urge you strongly to attend all sections. This strategy is designed to facilitate my management of the excuses associated with an occasional missed section (i.e., no more than two during the semester). In other words, make sure you attend and participate in at least 11 of your discussion sections this semester!!

If you have to a section for an excusable reason (e.g., you are sick), let your TA know as soon as possible that you will have to miss class—preferably before class, and no later than 48 hours after class. It is up to our discretion what is considered an excused absence. If it is an excused absence, a TA will send you notes from the section you missed, and you will be able to submit the in-class writing assignment by emailing it to your TA—you will still need to submit the writing assignment within one week of the missed discussion section to get attendence credit for that section. If you miss a section, you can attend a different section during the same week only with the permission of the instructor of the different section, but you will not receive attendance and participation points for doing so (unless the absence is excused by the instructor).

Lecture attendance is not mandatory, but it is strongly encouraged; most material presented in lecture is not included in the readings, and lecture recordings may not always be available. You are responsible for and will be tested on all material presented in lectures, discussion sections, and in the required readings. Regular attendance and good attention to lectures will improve what you get out of this class and is likely to improve your performance on the exams.

14.4 Readings & Quizzes

Readings and other materials will be posted on ICON. You are expected to do the readings before discussion section. You will have an online quiz on the readings to complete in ICON, on your own, before each discussion section. The quizzes are meant to help you come to class prepared to contribute so you are best-positioned to learn and to help others learn. The quizzes are not timed (you can spend as much time as you need on each quiz up until the deadline). The deadline for each quiz is 30 minutes before your scheduled discussion section starts. We will not accept late responses or multiple submissions. Your lowest quiz score will be dropped. We will not accept excused absences for quizzes because (a) you have a week to complete the quiz (and can submit it at any point during that week), and (b) we drop your lowest quiz score. Each quiz will be weighted the same in the final grade. Quiz answers will be viewable at the end of the week (i.e., after the last discussion section has taken their quiz).

Past experience has shown that in order to do well in this class, you should read the required material, participate actively in class, and go over your notes each week. There is too much material being covered in this class to try to study only by frantic preparation immediately before exams. Note that lecture and section will not cover all relevant material for the course; you will be expected to know the required readings for exams.

14.5 Workload

This is a 3 semester hour course. Students should therefore expect to spend 6 additional hours per week (outside of class) reading the articles, reviewing material from lecture and discussion section, and preparing for quizzes and exams.

14.6 Examinations

There will be 3 exams. The exams will include multiple-choice questions. Each exam will emphasize information presented for the third of the class that precedes it. However, some integration of information across sections will be required for questions on the second and third exams. Exam questions can come from any of the following sources: lectures, sections, or required readings. For suggested study tips for this class, see here.

14.6.1 Missing Exams

Students are allowed to make up exams that have been missed due to illness, mandatory religious observations, official University activities, or other unavoidable circumstances. Note: the format of the make-up exam may differ from the original exam. If you know that you must be away at the time of an exam for one of these reasons, Professor Petersen or the TA must be contacted in advance whenever possible to schedule a make-up exam. In order to take a make-up exam, you must provide acceptable documentation to be eligible to take it: including documentation for any report of illness; any other circumstances must be documented by the University of Iowa Absence Explanation Form and must be approved by Professor Petersen. In sum, to be eligible for a make-up exam, Professor Petersen or the TA must be contacted before the examination whenever possible, and you must send acceptable form of documentation to Professor Petersen or the TA.

15 Grading

Final grades will be assigned at the end of semester on the basis of your total percentage of points earned on exams, quizzes, and section participation, as detailed below. Grades will be assigned on an absolute scale (criterion-referenced grading); course grades will not be curved. No extra-credit opportunities are available for this course. Please note: As a matter of fairness to all students, I assign grades based on performance and do not negotiate grades. Final grades will be assigned based on the following ranges:

Grade Percent
A+ 97–100%
A 93–96
A- 90–92
B+ 87–89
B 83–86
B- 80–82
C+ 75–79
C 70–74
C- 65–69
D+ 60–64
D 55–59
D- 50–54
F < 50%

I round up from .5 when determining final grades. For example, a course percent of 79.50 would receive a B-, whereas a course percent of 79.49 would receive a C+.

The relative contribution of each component to your final grade is as follows:

  • 28% Examination #1
  • 28% Examination #2
  • 28% Examination #3 (administered only during the class’s Final Exam time slot)
  • 8% Discussion Attendance/Participation
  • 8% Reading Quizzes

16 Tentative Course Outline (exam dates fixed)

16.1 Section Notes

  • Sections will not be held during the week of examinations. Therefore, sections are cancelled on the following dates: Monday 2/27 – Friday 3/3 and Monday 4/3 – Friday 4/7.

16.2 Unit One

Unit One: Fundamentals of Scientific Clinical Psychology

Date Topic
1/16 MLK Day (no class!)
1/18 Introduction and Contemporary Clinical Psychology
1/23 Classification and Diagnosis
1/25 Classification and Diagnosis
1/30 Research Methods in Clinical Psychology (content focus on sexual assault)
2/1 Research Methods in Clinical Psychology (content focus on sexual assault)
2/6 Mood Disorders
2/8 Mood Disorders
2/13 Mood Disorders and Suicide
2/15 Anxiety Disorders
2/20 Anxiety Disorders
2/22 Alcohol Use Disorders
2/27 Examination #1 (no sections this week!)

16.3 Unit Two

Unit Two: Evidence-Based Psychological Assessment and Prediction

Date Topic
3/1 Overview of Assessment and Prediction
3/6 Overview of Assessment and Prediction
3/8 Interviewing, Observation, and Self-Monitoring
3/13 Spring Break (no class!)
3/15 Spring Break (no class!)
3/20 Interviewing, Observation, and Self-Monitoring
3/22 Intelligence Testing
3/27 Intelligence Testing
3/29 Personality Assessment
4/3 Personality Assessment; Wrap Up
4/5 Examination #2 (no sections this week!)

16.4 Unit Three

Unit Three: Evidence-Based Psychological Intervention

Date Topic
4/10 Major Approaches to Intervention
4/12 Major Approaches to Intervention
4/17 Cognitive-Behavioral Therapy for Panic Disorder; Transdiagnostic Treatment for Emotional Disorders
4/19 Evaluation of Interventions
4/24 Evidence-Based Treatments; Influences on Treatment Outcome
4/26 Dissemination of Evidence-Based Treatments
5/1 Intervention Controversies
5/3 Wrap-Up

17 Date and Time of the Final Exam

The final examination date and time will be announced by the Registrar generally by the fifth week of classes and it will be announced on the course ICON site once it is known. Do not plan your end of the semester travel plans until the final exam schedule is made public. It is your responsibility to know the date, time, and place of the final exam. According to Registrar’s final exam policy, students have a maximum of two weeks after the announced final exam schedule to request a change if an exam conflict exists or if a student has more than two exams in one day (see the policy here).

18 Course Resources

There are many course resources available to help you succeed in the class, including:

  • Powerpoint slides for lecture
  • Powerpoint slides for discussion section
  • getting and reviewing missed notes from a peer
  • lecture recordings
  • study questions after each lecture (see the “Study Questions” folder under the “Files” tab on ICON)
  • Quizlet questions (see the “Quizlet” folder under the “Files” tab on ICON)
  • practice exam questions that we post leading up to the exam (these will be made available in the “Practice Exam Questions” folder under the “Files” tab on ICON)
  • review your quizzes and the answers
  • our guide on how to study for the class
  • TA office hours
  • instructor office hours
  • peer study groups

19 Drop Deadline for this Course

You may drop an individual course before the deadline; after this deadline you will need collegiate approval. You can look up the drop deadline for this course here. When you drop a course, a “W” will appear on your transcript. The mark of “W” is a neutral mark that does not affect your GPA. Directions for adding or dropping a course and other registration changes can be found on the Registrar’s website. Students can find policies on dropping and withdrawing here.

20 Feedback about the Course

I welcome feedback at any point during the class. If you have comments on the class or my teaching, please feel free to meet with me during office hours.

20.1 Student Complaints

Students with a complaint about a grade or a related matter should first discuss the situation with the instructor, and finally with the Director or Chair of the school, department, or program offering the course. Students should contact CLAS Undergraduate Programs for support when the matter is not resolved at the previous level.

21 Communication: UI Email

Students are responsible for all official correspondences sent to their UI email address (uiowa.edu) and must use this address for any communication with instructors or staff in the UI community.

22 Health and Safety

The University of Iowa strongly encourages students, faculty, and staff to be vaccinated against COVID-19. For information about COVID-19 vaccines on campus, please see https://coronavirus.uiowa.edu. If you are feeling sick, test positive for COVID-19, or may have been exposed to COVID-19, please refer to the campus guidance for the appropriate action (https://coronavirus.uiowa.edu/returning-campus/showing-symptoms). Regardless of your vaccination status, if you have symptoms consistent with COVID-19, please stay home and follow the appropriate isolation/quarantine guidance. For up-to-date information throughout the semester, please refer to https://coronavirus.uiowa.edu.

23 College of Liberal Arts and Sciences (CLAS) Course Policies

  • Attendance and Absences
    University regulations require that students be allowed to make up examinations which have been missed due to illness or other unavoidable circumstances. See the section above on “Missing Exams” for the documentation necessary for an absence to be excused and to be eligible to take a make-up exam. Students with mandatory religious obligations or UI authorized activities must discuss their absences with the instructor or TA as soon as possible. Religious obligations must be communicated within the first three weeks of classes.
  • Exam Policies

23.1 Other Expectations of Student Performance

Students have the right to a distraction-free learning environment. You have the responsibility to help create such a classroom environment. Please treat other students in the class, the TAs, and the instructor with respect. Students are expected to help each other learn and to contribute overall to the learning environment of the course. Arriving prepared for class is part of this expectation.

25 Course Requests

We have a centralized location to keep track of requests, forms, etc., so we can make sure we meet your needs. Course requests include, for instance, requests to join a peer study group, setting up a time to review your exam, requesting accommodations, etc. Please submit course requests (e.g., to join a peer study group) here: https://uiowa.qualtrics.com/jfe/form/SV_1HUyg6ZaR4CcjWu. If you have accessibility accommodations from Student Disability Services (SDS), please submit your SDS accommodations letters at this link.

26 Resources for Help

Some of the topics covered in class involve problems that can be quite common among college students. If you feel that you or someone you know may be struggling with an academic, emotional, or psychological problem, the following organizations are available for assistance:

Service Contact Info
University of Iowa Academic Advising Center 353-5700, https://advisingcenter.uiowa.edu
University Counseling Services 335-7294, https://www.uiowa.edu/ucs
Student Health Service - Mental Health 335-8394, https://studenthealth.uiowa.edu/services/psychiatry
University of Iowa Hospitals and Clinics Adult Psychiatry Services Clinic 353-6314, https://www.uihealthcare.org/Psychiatry
Seashore Clinic (in the UI Department of Psychological and Brain Sciences) 335-2467, https://psychology.uiowa.edu/resources/seashore-clinic
Women’s Resource and Action Center 335-1486, https://wrac.uiowa.edu
Rape Victim Advocacy Program 319-335-6000 or 800-228-1625, https://www.uiowa.edu/~rvap
Office of Sexual Misconduct 319-335-6200, https://osmrc.uiowa.edu
CommUnity 855-325-4296, https://builtbycommunity.org/crisis
Community & Family Resources 351-4357, https://www.cfrhelps.org/

If you or someone you know is contemplating suicide, either call or text the Suicide and Crisis Lifeline at 988, or call 911.

27 Disclaimer

This syllabus is subject to change. Any changes will be discussed in class, via email, and/or on ICON.

LS0tCnRpdGxlOiAiQ291cnNlIFN5bGxhYnVzIgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSAiIikKYGBgCgpMYXN0IFVwZGF0ZWQ6IGByIGZvcm1hdChTeXMuRGF0ZSgpLCAiJW0vJWQvJVkiKWAKCiMgQ291cnNlIFRpdGxlIHsjdGl0bGV9CgpQU1k6MjMwMSDigJMgSW50cm9kdWN0aW9uIHRvIENsaW5pY2FsIFBzeWNob2xvZ3kgKFNwcmluZyAyMDIzKQoKIyBDb3Vyc2UgTWVldGluZyBUaW1lIGFuZCBQbGFjZSB7I2xlY3R1cmVUaW1lfQoKTW9uZGF5ICYgV2VkbmVzZGF5IDEwOjMw4oCTMTE6MjAgYS5tLiwgMTAwIFBoaWxsaXBzIEhhbGwgKFBIKQoKIyBDb3Vyc2UgV2Vic2l0ZSB7I3dlYnNpdGV9CgpodHRwczovL2ljb24udWlvd2EuZWR1CgpUbyBhY2Nlc3MgdGhlIGNvdXJzZSBzaXRlLCBsb2cgaW50byBbSW93YSBDb3Vyc2VzIE9ubGluZSAoSUNPTildKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpIHVzaW5nIHlvdXIgSGF3ayBJRCBhbmQgcGFzc3dvcmQuCgojIENvdXJzZSBIb21lIHsjaG9tZX0KClRoZSBDb2xsZWdlIG9mIExpYmVyYWwgQXJ0cyBhbmQgU2NpZW5jZXMgKENMQVMpIGlzIHRoZSBob21lIG9mIHRoaXMgY291cnNlLCBhbmQgQ0xBUyBnb3Zlcm5zIHRoZSBhZGQgYW5kIGRyb3AgZGVhZGxpbmVzLCB0aGUgInNlY29uZC1ncmFkZSBvbmx5IiBvcHRpb24gKFNHTyksIGFjYWRlbWljIG1pc2NvbmR1Y3QgcG9saWNpZXMsIGFuZCBvdGhlciBwb2xpY2llcyBhbmQgcHJvY2VkdXJlcy4KT3RoZXIgVUkgY29sbGVnZXMgbWF5IGhhdmUgZGlmZmVyZW50IHBvbGljaWVzLgoKIyBJbnN0cnVjdG9yIHsjaW5zdHJ1Y3Rvcn0KClByb2Zlc3NvciBQZXRlcnNlblwKT2ZmaWNlOiAxNzUgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXMgQnVpbGRpbmcgKFBCU0IpXApFLW1haWw6IFtpc2FhYy10LXBldGVyc2VuQHVpb3dhLmVkdV0obWFpbHRvOmlzYWFjLXQtcGV0ZXJzZW5AdWlvd2EuZWR1KVwKT2ZmaWNlIFBob25lOiA0NjctMTAxNFwKU3R1ZGVudCBkcm9wLWluIGhvdXJzOiBNb25kYXkgMTE6MjDigJMxMjoyMCAmIFRodXJzZGF5IDLigJM0XApOb3RlOiBJJ20gaGVyZSB0byBoZWxwIHlvdSBsZWFybiBhbmQgc3VjY2VlZCBpbiBQU1k6MjMwMS4KUGxlYXNlIGNvbWUgdG8gbXkgb2ZmaWNlIGhvdXJzIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY291cnNlIG1hdGVyaWFsLCBhc3NpZ25tZW50cywgZXhhbXMsIG9yIHByb2Zlc3Npb25hbCBkZXZlbG9wbWVudCAoY2FyZWVyLXJlbGF0ZWQgaXNzdWVzKSwgZm9yIGluc3RhbmNlLgpJIHdlbGNvbWUgeW91IHRvIGRpc2N1c3MgYW55IGNvbmNlcm5zIHlvdSBtaWdodCBoYXZlIGFib3V0IHRoZSBjbGFzcy4KSSBhbSBhbHNvIGF2YWlsYWJsZSB0byBtZWV0IHdpdGggeW91IGJ5IGFwcG9pbnRtZW50LCBhbHRob3VnaCBJIHdvdWxkIGFwcHJlY2lhdGUgeW91ciBtYWtpbmcgZXZlcnkgZWZmb3J0IHRvIHNlZSBtZSBkdXJpbmcgb2ZmaWNlIGhvdXJzLgpUaGUgYmVzdCB3YXkgdG8gcmVhY2ggbWUgb3V0c2lkZSBvZiBjbGFzcyBpcyBieSBlLW1haWwuCgojIERpc2N1c3Npb24gU2VjdGlvbnMgeyNzZWN0aW9uc30KCkFsbCBkaXNjdXNzaW9uIHNlY3Rpb25zIGFyZSBpbiA1MyBWQU4uClRoZSBkYXkgYW5kIHRpbWUgb2YgdGhlIGRpc2N1c3Npb24gc2VjdGlvbiBkaWZmZXIgYnkgc2VjdGlvbjoKCnwgU2VjdGlvbiB8IERheS9UaW1lICAgICAgICAgICAgICB8IFRlYWNoaW5nIEFzc2lzdGFudCB8Cnw6LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS18CnwgQTAxICAgICB8IE1vbmRheSAzOjMw4oCTNDoyMCAgICAgIHwgT2xpdmlhIEFkYW1zb24gICAgIHwKfCBBMDIgICAgIHwgTW9uZGF5IDQ6MzDigJM1OjIwICAgICAgfCBPbGl2aWEgQWRhbXNvbiAgICAgfAp8IEEwMyAgICAgfCBUdWVzZGF5IDg6MzDigJM5OjIwICAgICB8IEphbWVzIExvcGV6ICAgICAgICB8CnwgQTA0ICAgICB8IFR1ZXNkYXkgMTI6MzDigJMxOjIwICAgIHwgR29uemFsbyBRdWlub25lcyAgIHwKfCBBMDUgICAgIHwgVHVlc2RheSAxOjMw4oCTMjoyMCAgICAgfCBKYW1lcyBMb3BleiAgICAgICAgfAp8IEEwNiAgICAgfCBXZWRuZXNkYXkgMjozMOKAkzM6MjAgICB8IEdvbnphbG8gUXVpbm9uZXMgICB8CnwgQTA3ICAgICB8IFdlZG5lc2RheSAzOjMw4oCTNDoyMCAgIHwgR29uemFsbyBRdWlub25lcyAgIHwKfCBBMDggICAgIHwgVGh1cnNkYXkgOTozMOKAkzEwOjIwICAgfCBPbGl2aWEgQWRhbXNvbiAgICAgfAp8IEEwOSAgICAgfCBUaHVyc2RheSAxMDozMOKAkzExOjIwICB8IE9saXZpYSBBZGFtc29uICAgICB8CnwgQTEwICAgICB8IEZyaWRheSAxOjMw4oCTMjoyMCAgICAgIHwgR29uemFsbyBRdWlub25lcyAgIHwKCiMgR3JhZHVhdGUgVGVhY2hpbmcgQXNzaXN0YW50cyB7I1RBc30KClRoZSBjbGFzcyBoYXMgdGhyZWUgZ3JhZHVhdGUgdGVhY2hpbmcgYXNzaXN0YW50cyAoVEFzKS4KCkdvbnphbG8gUXVpbm9uZXNcCk9mZmljZTogMzY0IFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzIEJ1aWxkaW5nIChQQlNCKVwKU2VjdGlvbnM6IEEwNCwgQTA2LCBBMDcsIEExMFwKU3R1ZGVudCBkcm9wLWluIGhvdXJzOiBUdWVzZGF5IDEwOjAw4oCTMTI6MDAgYW5kIFdlZG5lc2RheSA5OjAw4oCTMTA6MDBcCkUtbWFpbDogZ29uemFsby1xdWlub25lc0B1aW93YS5lZHUKCk9saXZpYSBBZGFtc29uXApPZmZpY2U6IDM2NCBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBCdWlsZGluZyAoUEJTQilcClNlY3Rpb25zOiBBMDEsIEEwMiwgQTA4LCBBMDlcClN0dWRlbnQgZHJvcC1pbiBob3VyczogTW9uZGF5IDEyOjAw4oCTMjowMCAoaW4tcGVyc29uIGFuZC9vciBieSB6b29tKSBhbmQgVGh1cnNkYXkgOOKAkzlhbSAob3ZlciB6b29tKVwKRS1tYWlsOiBvbGl2aWEtYWRhbXNvbkB1aW93YS5lZHUKCkphbWVzIExvcGV6XApPZmZpY2U6IDM2NCBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBCdWlsZGluZyAoUEJTQilcClNlY3Rpb25zOiBBMDMsIEEwNVwKU3R1ZGVudCBkcm9wLWluIGhvdXJzOiBNb25kYXkgOTowMOKAkzEwOjMwXApFLW1haWw6IGphbWVzLWxvcGV6QHVpb3dhLmVkdQoKIyBEZXBhcnRtZW50YWwgUmVzb3VyY2VzIHsjZGVwdFJlc291cmNlc30KCkRlcGFydG1lbnQgb2YgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXM6IFtodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1XShodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1KVwKRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBNYWluIE9mZmljZTogRzYwIFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzIEJ1aWxkaW5nICgzMzUtMjQwNilcCkNvb3JkaW5hdG9yIG9mIFVuZGVyZ3JhZHVhdGUgU3R1ZGllczogUHJvZmVzc29yIFdpbmRzY2hpdGwgKFtwYXVsLXdpbmRzY2hpdGxAdWlvd2EuZWR1XShtYWlsdG86cGF1bC13aW5kc2NoaXRsQHVpb3dhLmVkdSk7IDMzNS0zNjgxKVwKQWNhZGVtaWMgQ29vcmRpbmF0b3I6IFByb2Zlc3NvciBKb2huc29uIChbZGVicmEtam9obnNvbkB1aW93YS5lZHVdKG1haWx0bzpkZWJyYS1qb2huc29uQHVpb3dhLmVkdSk7IDMzNS0wMTM1KVwKQ2hhaXIgb2YgRGVwYXJ0bWVudDogUHJvZmVzc29yIEJsdW1iZXJnIChbbWFyay1ibHVtYmVyZ0B1aW93YS5lZHVdKG1haWx0bzptYXJrLWJsdW1iZXJnQHVpb3dhLmVkdSk7IDMzNS0yNDI0KQoKIyBQcmVyZXF1aXNpdGVzIHsjcHJlcmVxc30KClRoZSBQc3ljaG9sb2d5IGRlcGFydG1lbnQgaGFzIGEgaGllcmFyY2hpY2FsIGNvdXJzZSBzdHJ1Y3R1cmUgdGhhdCByZXF1aXJlcyBzdHVkZW50cyB0byBjb21wbGV0ZSBjZXJ0YWluIHByZXJlcXVpc2l0ZXMgYmVmb3JlIHRha2luZyB1cHBlci1sZXZlbCBjbGFzc2VzLgpUaGUgcHJlcmVxdWlzaXRlIGZvciB0aGlzIGNvdXJzZSBpcyBFbGVtZW50YXJ5IFBzeWNob2xvZ3kgKFBTWToxMDAxKS4KCiMgRGVzY3JpcHRpb24gb2YgQ291cnNlIHsjZGVzY3JpcHRpb259CgpUaGlzIGNvdXJzZSBpcyBkZXNpZ25lZCB0byBpbnRyb2R1Y2UgeW91IHRvIHRoZSBjb25jZXB0cyBhbmQgbWV0aG9kcyBvZiB0aGUgc2NpZW5jZSBvZiBjbGluaWNhbCBwc3ljaG9sb2d5LgoKSXQgaGFzIHRocmVlIGFyZWFzIG9mIGVtcGhhc2lzOgoKMS4gRnVuZGFtZW50YWxzIG9mIFNjaWVudGlmaWMgQ2xpbmljYWwgUHN5Y2hvbG9neQoxLiBFdmlkZW5jZS1CYXNlZCBQc3ljaG9sb2dpY2FsIEFzc2Vzc21lbnQKMS4gRXZpZGVuY2UtQmFzZWQgUHN5Y2hvbG9naWNhbCBJbnRlcnZlbnRpb24KClRoaXMgY291cnNlIHdpbGwgcHJvdmlkZSBhbiBpbnRyb2R1Y3Rpb24gdG8gKGEpIG1ham9yIHRoZW9yZXRpY2FsIG1vZGVscyBhbmQgcmVzZWFyY2ggbWV0aG9kcyBpbiBzY2llbnRpZmljIGNsaW5pY2FsIHBzeWNob2xvZ3k7IChiKSBzZXZlcmFsIHBzeWNob2xvZ2ljYWwgcHJvYmxlbXMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlbGV2YW50IHRvIGNvbGxlZ2Ugc3R1ZGVudHMgKGRlcHJlc3Npb24sIGFueGlldHksIGFuZCBhbGNvaG9sIGFidXNlKTsgKGMpIHRoZSBnZW5lcmFsIHByaW5jaXBsZXMgdW5kZXJseWluZyB0aGUgY29uc3RydWN0aW9uLCBhZG1pbmlzdHJhdGlvbiwgYW5kIGludGVycHJldGF0aW9uIG9mIGV2aWRlbmNlLWJhc2VkIGNsaW5pY2FsIGFzc2Vzc21lbnRzOyBhbmQgKGQpIGVtcGlyaWNhbGx5IHN1cHBvcnRlZCBhcHByb2FjaGVzIHRvIHBzeWNob2xvZ2ljYWwgaW50ZXJ2ZW50aW9uLgoqWW91IGFyZSB1cmdlZCB0byByZWNvbnNpZGVyIHlvdXIgZGVjaXNpb24gdG8gdGFrZSB0aGlzIGNsYXNzIGlmIHlvdSBhcmUgcmVsdWN0YW50IHRvIGV4YW1pbmUgdGhlc2UgdG9waWNzIGluIGEgc2NpZW50aWZpYyBtYW5uZXIuKgoKTm90ZTogU29tZSB0b3BpY3MgYW5kIG1vdmllcyB3aWxsIGRlYWwgd2l0aCBzZW5zaXRpdmUgb3IgY29udHJvdmVyc2lhbCBpc3N1ZXMgc3VjaCBhbGNvaG9sIHByb2JsZW1zLCBkZXByZXNzaW9uLCBhbnhpZXR5LCBhYnVzZSwgc2V4dWFsIGFzc2F1bHQsIGVhdGluZyBkaXNvcmRlcnMsIGFuZCBzdWljaWRlLgoKIyBMZWFybmluZyBPYmplY3RpdmVzIHsjb2JqZWN0aXZlc30KClRha2luZyB0aGlzIGNvdXJzZSBzaG91bGQgbWFrZSB5b3UgYSBtb3JlIGluZm9ybWVkIGNvbnN1bWVyIG9mIGNsYWltcyBhYm91dCBjb250ZW1wb3JhcnkgY2xpbmljYWwgcHN5Y2hvbG9neSBhbmQgbWF5IGFzc2lzdCBpbiB5b3VyIGV2YWx1YXRpb24gb2YgY2xpbmljYWwgcHN5Y2hvbG9neSBvciBvdGhlciByZWxhdGVkIHBvdGVudGlhbCBjYXJlZXIgZ29hbHMuClRoaXMgY291cnNlIGlzIG5vdCBkZXNpZ25lZCB0byBwcm92aWRlIGV4dGVuc2l2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgbmF0dXJlIG9mIHBzeWNob2xvZ2ljYWwgZGlzb3JkZXJzIChzZWUgQWJub3JtYWwgUHN5Y2hvbG9neSBjb3Vyc2UpIG9yIHRvIHByb3ZpZGUgeW91IHdpdGggdGhlIHNraWxscyB0byBhc3Nlc3MgYW5kIHRyZWF0IHBzeWNob2xvZ2ljYWwgcHJvYmxlbXMuCgojIFJlcXVpcmVkIFRleHRib29rIHsjdGV4dGJvb2t9CgpUaGVyZSBpc24ndCBhIHJlcXVpcmVkIG9yIHJlY29tbWVuZGVkIHRleHRib29rLgpJbnN0ZWFkLCB0aGlzIGNvdXJzZSB3aWxsIGluY2x1ZGUgYSBjb21iaW5hdGlvbiBvZiBib29rIGNoYXB0ZXJzLCBwZWVyLXJldmlld2VkIGpvdXJuYWwgYXJ0aWNsZXMsIGFuZCBwb3B1bGFyIG1lZGlhIGFydGljbGVzLgpUaGUgc291cmNlIGZvciBhbGwgZXhhbSBxdWVzdGlvbnMgd2lsbCBiZSBsZWN0dXJlLCBkaXNjdXNzaW9uLCBhbmQgYWxsIHJlcXVpcmVkIHJlYWRpbmdzIGZvciBsZWN0dXJlcyBhbmQgc2VjdGlvbiwgd2hpY2ggd2lsbCBiZSBwcm92aWRlZCBvbiB0aGUgY291cnNlIHdlYnNpdGUgb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLgpUaGUgY29zdCBvZiB0ZXh0Ym9va3MgaGFzIGJlY29tZSBzbyBoaWdoIHRoYXQgSSBhbSBub3QgY29tZm9ydGFibGUgcmVxdWlyaW5nIG9uZSBmb3IgdGhpcyBjb3Vyc2Ugd2hlbiBJIGNhbiBjb3ZlciB0aGUgbWF0ZXJpYWwgYWRlcXVhdGVseSBpbiBvdGhlciB3YXlzLgpUaGVyZSBhbHNvIGlzIG5vIHRleHRib29rIGF2YWlsYWJsZSB0aGF0IGNvdmVycyB0aGUgbWF0ZXJpYWwgYXMgd2UgZG8gaW4gY2xhc3MuCkF0dGVuZGFuY2UgYXQgbGVjdHVyZXMgd2lsbCBiZSBjcml0aWNhbCBhcyBhIHJlc3VsdCwgaG93ZXZlci4KSWYgeW91IG1pc3MgYSBsZWN0dXJlIG9yIHNlY3Rpb24sIHlvdSB3aWxsIG5lZWQgdG8gd2F0Y2ggdGhlIGxlY3R1cmUgcmVjb3JkaW5nIG9yIGdldCBub3RlcyBmcm9tIGEgcGVlciwgYmVjYXVzZSB3ZSBkbyBub3QgcHJvdmlkZSBub3RlcyBvciByZS1wcmVzZW50IG1pc3NlZCBsZWN0dXJlIG9yIHNlY3Rpb24gbWF0ZXJpYWwgaW4gbWVldGluZ3MuCk9uY2UgeW91IGhhdmUgdGhlIG5vdGVzIGZyb20gYSBwZWVyLCByZXZpZXcgdGhlbSBjYXJlZnVsbHkgb24geW91ciBvd24sIHRoZW4gZ2V0IGludG8gb2ZmaWNlIGhvdXJzIHdpdGggbWUgb3Igb25lIG9mIHRoZSBUQXMgdG8gYWRkcmVzcyBhbnkgc3BlY2lmaWMgcXVlc3Rpb25zIHRoYXQgeW91IGhhdmUgYXMgc29vbiBhcyBwb3NzaWJsZS4KRmVlbCBmcmVlIHRvIGNvbWUgdG8gb2ZmaWNlIGhvdXJzIHdpdGggbWUgb3Igd2l0aCBvbmUgb2YgdGhlIFRBcyB0byBkaXNjdXNzIGhvdyBiZXN0IHRvIHN0dWR5IGZvciBhIGNvdXJzZSB3aXRob3V0IGEgdGV4dGJvb2suCgojIEFjYWRlbWljIEhvbmVzdHkgYW5kIE1pc2NvbmR1Y3QgeyNhY2FkZW1pY0hvbmVzdHl9CgpBbGwgc3R1ZGVudHMgaW4gQ0xBUyBjb3Vyc2VzIGFyZSBleHBlY3RlZCB0byBhYmlkZSBieSB0aGUgW0NMQVMgQ29kZSBvZiBBY2FkZW1pYyBIb25lc3R5XShodHRwczovL2NsYXMudWlvd2EuZWR1L3N0dWRlbnRzL2hhbmRib29rL2FjYWRlbWljLWZyYXVkLWhvbm9yLWNvZGUpLgpBY2FkZW1pYyBtaXNjb25kdWN0IG11c3QgYmUgcmVwb3J0ZWQgYnkgaW5zdHJ1Y3RvcnMgdG8gQ0xBUyBhY2NvcmRpbmcgdG8gW3RoZXNlIHByb2NlZHVyZXNdKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvc3R1ZGVudHMvaGFuZGJvb2svYWNhZGVtaWMtZnJhdWQtaG9ub3ItY29kZSkuClBsZWFzZSBub3RlIHRoYXQgY29sbGFib3JhdGlvbiB3aXRoIG90aGVyIGNsYXNzbWF0ZXMgb24gcXVpenplcyBhbmQgZHVyaW5nIGV4YW1zIGlzIG5vdCBwZXJtaXR0ZWQuCkhvd2V2ZXIsIEkgZG8gZW5jb3VyYWdlIHlvdSB0byBjb2xsYWJvcmF0ZSB3aXRoIGNsYXNzbWF0ZXMgdG8gKnByZXBhcmUqIGZvciBleGFtcyAoZS5nLiwgaW5mb3JtYWwgc3R1ZHkgZ3JvdXBzKS4KCiMgQ291cnNlIFJlcXVpcmVtZW50cyBhbmQgUG9saWNpZXMgeyNyZXF1aXJlbWVudHN9CgojIyBMZWN0dXJlIHsjbGVjdHVyZX0KCldlIHdpbGwgbWVldCB0d2ljZSB3ZWVrbHkgZm9yIGxlY3R1cmVzLCBhdCB0aGUgdGltZSBhbmQgbG9jYXRpb24gZGVzY3JpYmVkIFthYm92ZV0oI2xlY3R1cmVUaW1lKS4KTXkgcG93ZXJwb2ludCBwcmVzZW50YXRpb25zIGZvciBlYWNoIGxlY3R1cmUgd2lsbCBiZSBwb3N0ZWQgb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpIG5vIGxhdGVyIHRoYW4gbm9vbiB0aGUgZGF5IGJlZm9yZSBhIGxlY3R1cmUgKHRob3VnaCBJIG1heSBjb250aW51ZSB0byByZWZpbmUgdGhlIHNsaWRlcyB1cCB1bnRpbCB0aGUgdGltZSBvZiBsZWN0dXJlKS4KPHU+UGxlYXNlIG5vdGU6PC91PiBwb3dlcnBvaW50IHByZXNlbnRhdGlvbnMgYXJlIGFuIG91dGxpbmUgb2YgbXkgcG9pbnRzLiAKPHU+SXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byB0YWtlIG5vdGVzIGR1cmluZyBjbGFzcy48L3U+Ckkgc3Ryb25nbHkgcmVjb21tZW5kIGJyaW5naW5nIHRoZSBwb3dlcnBvaW50IHByZXNlbnRhdGlvbnMgdG8gY2xhc3MgdG8gdGFrZSBub3Rlcy4KCllvdSBzaG91bGQgZmVlbCBmcmVlIHRvIGFzayBxdWVzdGlvbnMgZHVyaW5nIGxlY3R1cmUsIGFsdGhvdWdoIHNvbWUgcXVlc3Rpb25zIG1heSBuZWVkIHRvIGJlIGRlZmVycmVkIGdpdmVuIHRoZSBzaXplIG9mIHRoZSBjbGFzcyBhbmQgdGhlIG5lZWQgdG8gY29tcGxldGUgY292ZXJhZ2Ugb2Ygc3BlY2lmaWMgbWF0ZXJpYWwgZHVyaW5nIGxlY3R1cmUuCjx1PlF1ZXN0aW9ucyBhbmQgZnVydGhlciBkaXNjdXNzaW9uIG9mIGNsYXNzIG1hdGVyaWFsIGFyZSBhbHdheXMgd2VsY29tZTwvdT4gZHVyaW5nIG9mZmljZSBob3VycywgZHVyaW5nIGRpc2N1c3Npb24gc2VjdGlvbiwgYW5kIHZpYSBlLW1haWwuClBsZWFzZSBiZWFyIGluIG1pbmQgdGhhdCBleHRlbnNpdmUgb3IgY29tcGxleCBxdWVzdGlvbnMgbWF5IG5vdCBiZSBhZGRyZXNzYWJsZSBvdmVyIGUtbWFpbC4KCiMjIyBMZWN0dXJlIFJlY29yZGluZ3MgeyNyZWNvcmRpbmdzfQoKTXkgaW50ZW50aW9uIGlzIHRvIHJlY29yZCBsZWN0dXJlcyBzbyB0aGF0IHlvdSBtYXkgcmV2aWV3IHRoZW0uClJlY29yZGVkIGxlY3R1cmVzIHdpbGwgYmUgcG9zdGVkIG9uIHRoZSAiVUlDYXB0dXJlIiB0YWIgaW4gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLgpSZWNvcmRpbmdzIHdpbGwgYmUgYXZhaWxhYmxlIHVwIHRvIDQ4IGhvdXJzIGFmdGVyIGNsYXNzIChmb3IgV2VkbmVzZGF5IGxlY3R1cmVzKSBvciB1bnRpbCB0aGUgV2VkbmVzZGF5IGNsYXNzIHBlcmlvZCAoZm9yIE1vbmRheSBsZWN0dXJlcykuCkhvd2V2ZXIsIDx1PnBsZWFzZSBkbyBub3QgY291bnQgb24gcmVjb3JkaW5ncyBiZWluZyBhdmFpbGFibGU8L3U+LCBpbiBjYXNlIEkgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBpbml0aWF0ZSB0aGUgcmVjb3JkaW5nIG9yIHRoZXJlIGlzIGEgdGVjaG5pY2FsIG1hbGZ1bmN0aW9uLgpUaGUgYXZhaWxhYmlsaXR5IG9mIGxlY3R1cmUgcmVjb3JkaW5ncyB3aWxsIG5vdCBiZSBleHRlbmRlZCBiZXlvbmQgNDggaG91cnMgYWZ0ZXIgbGVjdHVyZeKAlHRoZSByZWNvcmRpbmdzIGFyZSBtZWFudCB0byBoZWxwIHBlb3BsZSBrZWVwIHVwIHdpdGggbGVjdHVyZXMgYW5kIGZvciBzdHVkZW50cyB0byByZXRyaWV2ZSB0aGUgcmVsZXZhbnQgY29udGVudCBpZiB0aGV5IG1pc3NlZCBhbnl0aGluZyBkdXJpbmcgdGhlIGxpdmUgbGVjdHVyZSBvciBpZiB0aGV5IG1pc3MgdGhlIGxlY3R1cmU7IHRoZXkgYXJlIG5vdCBtZWFudCB0byBiZSBhIHN0dWR5IG1ldGhvZCB0aGF0IGFsbG93cyBwZW9wbGUgdG8gZmFsbCBiZWhpbmQgaW4gY2xhc3MgZnJvbSB3ZWVrIHRvIHdlZWsuCklmIHlvdSBtaXNzIHNvbWV0aGluZyBhbmQgYXJlIHVuYWJsZSB0byB3YXRjaCB0aGUgbGVjdHVyZSByZWNvcmRpbmcsIHlvdSBjYW4gZ2V0L3JldmlldyBub3RlcyB3aXRoIGEgcGVlciwgYW5kIHRoZW4gY29tZSB0byBvZmZpY2UgaG91cnMgaWYgeW91IGhhdmUgc3BlY2lmaWMgcXVlc3Rpb25zLgoKIyMgRGlzY3Vzc2lvbiBTZWN0aW9uIHsjZGlzY3Vzc2lvblNlY3Rpb259CgpJbiBhZGRpdGlvbiB0byBsZWN0dXJlLCB5b3UgYWxzbyBoYXZlIGEgd2Vla2x5IGRpc2N1c3Npb24gc2VjdGlvbiwgZXhjZXB0IGR1cmluZyBleGFtIHdlZWtzLgpUaGUgZGF5IGFuZCB0aW1lIG9mIHRoZSB3ZWVrbHkgZGlzY3Vzc2lvbiBzZWN0aW9uIGRpZmZlcnMgYmFzZWQgb24gdGhlIHNlY3Rpb24sIHNlZSBbYWJvdmVdKCNzZWN0aW9ucykuCgojIyBBdHRlbmRhbmNlIGFuZCBQYXJ0aWNpcGF0aW9uIHsjYXR0ZW5kYW5jZVBhcnRpY2lwYXRpb259CgpEaXNjdXNzaW9uIHNlY3Rpb24gYXR0ZW5kYW5jZSBhbmQgcGFydGljaXBhdGlvbiBhcmUgbWFuZGF0b3J5IGFuZCB3aWxsIGJlIHdvcnRoIDglIG9mIHlvdXIgZmluYWwgZ3JhZGUuCllvdSBtdXN0IGF0dGVuZCBzZWN0aW9uLCBwYXkgYXR0ZW50aW9uLCBwYXJ0aWNpcGF0ZSB2ZXJiYWxseSwgPHU+YW5kPC91PiBjb21wbGV0ZSB0aGUgcmVxdWlyZWQgYWN0aXZpdGllcyBkdXJpbmcgc2VjdGlvbiB0byByZWNlaXZlIGFueSBhdHRlbmRhbmNlIGFuZCBwYXJ0aWNpcGF0aW9uIHBvaW50cywgYXMgaW5kaWNhdGVkIGJ5IHlvdXIgPHU+c3VibWlzc2lvbiBvZiB0aGUgcmVxdWlyZWQgd3JpdHRlbiByZXNwb25zZXMgZHVyaW5nIHNlY3Rpb24gYXQgdGhlIGVuZCBvZiB0aGUgc2VjdGlvbiBzZXNzaW9uPC91Pi4KVGhlcmUgd2lsbCBiZSAxMyBkaXNjdXNzaW9ucyBkdXJpbmcgdGhlIHNlbWVzdGVyLCBhbmQgeW91IHdpbGwgcmVjZWl2ZSBvbmUgcG9pbnQgZm9yIHN1Ym1pdHRpbmcgYW4gYXBwcm9wcmlhdGUgd3JpdHRlbiByZXNwb25zZSBhdCB0aGUgZW5kIG9mIGVhY2ggc2VjdGlvbiwgdXAgdG8gYSA8dT5tYXhpbXVtPC91PiBvZiAxMSBwb2ludHMgKGkuZS4sIHlvdSB3aWxsIG5vdCByZWNlaXZlIGV4dHJhIGNyZWRpdCBmb3Igc3VibWl0dGluZyBhcHByb3ByaWF0ZSByZXNwb25zZXMgZm9yIGFsbCAxMyBkaXNjdXNzaW9ucykuClRodXMsIHlvdSB3aWxsIG5vdCBiZSBwZW5hbGl6ZWQgZm9yIG1pc3NpbmcgdHdvIHNlY3Rpb25zLCBhbHRob3VnaCB5b3Ugc3RpbGwgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgdGhlIGNvdmVyZWQgbWF0ZXJpYWwgb24gZXhhbXMsIGV0Yy4sIGFuZCBJIHVyZ2UgeW91IHN0cm9uZ2x5IHRvIGF0dGVuZCBhbGwgc2VjdGlvbnMuClRoaXMgc3RyYXRlZ3kgaXMgZGVzaWduZWQgdG8gZmFjaWxpdGF0ZSBteSBtYW5hZ2VtZW50IG9mIHRoZSBleGN1c2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBvY2Nhc2lvbmFsIG1pc3NlZCBzZWN0aW9uIChpLmUuLCBubyBtb3JlIHRoYW4gdHdvIGR1cmluZyB0aGUgc2VtZXN0ZXIpLgpJbiBvdGhlciB3b3JkcywgbWFrZSBzdXJlIHlvdSBhdHRlbmQgYW5kIHBhcnRpY2lwYXRlIGluIGF0IGxlYXN0IDExIG9mIHlvdXIgZGlzY3Vzc2lvbiBzZWN0aW9ucyB0aGlzIHNlbWVzdGVyISEKCklmIHlvdSBoYXZlIHRvIGEgc2VjdGlvbiBmb3IgYW4gZXhjdXNhYmxlIHJlYXNvbiAoZS5nLiwgeW91IGFyZSBzaWNrKSwgbGV0IHlvdXIgVEEga25vdyBhcyBzb29uIGFzIHBvc3NpYmxlIHRoYXQgeW91IHdpbGwgaGF2ZSB0byBtaXNzIGNsYXNz4oCUcHJlZmVyYWJseSBiZWZvcmUgY2xhc3MsIGFuZCBubyBsYXRlciB0aGFuIDQ4IGhvdXJzIGFmdGVyIGNsYXNzLgpJdCBpcyB1cCB0byBvdXIgZGlzY3JldGlvbiB3aGF0IGlzIGNvbnNpZGVyZWQgYW4gZXhjdXNlZCBhYnNlbmNlLgpJZiBpdCBpcyBhbiBleGN1c2VkIGFic2VuY2UsIGEgVEEgd2lsbCBzZW5kIHlvdSBub3RlcyBmcm9tIHRoZSBzZWN0aW9uIHlvdSBtaXNzZWQsIGFuZCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHN1Ym1pdCB0aGUgaW4tY2xhc3Mgd3JpdGluZyBhc3NpZ25tZW50IGJ5IGVtYWlsaW5nIGl0IHRvIHlvdXIgVEHigJQ8dT55b3Ugd2lsbCBzdGlsbCBuZWVkIHRvIHN1Ym1pdCB0aGUgd3JpdGluZyBhc3NpZ25tZW50IHdpdGhpbiBvbmUgd2VlayBvZiB0aGUgbWlzc2VkIGRpc2N1c3Npb24gc2VjdGlvbiB0byBnZXQgYXR0ZW5kZW5jZSBjcmVkaXQgZm9yIHRoYXQgc2VjdGlvbjwvdT4uCklmIHlvdSBtaXNzIGEgc2VjdGlvbiwgeW91IGNhbiBhdHRlbmQgYSBkaWZmZXJlbnQgc2VjdGlvbiBkdXJpbmcgdGhlIHNhbWUgd2VlayA8dT5vbmx5IHdpdGggdGhlIHBlcm1pc3Npb24gb2YgdGhlIGluc3RydWN0b3Igb2YgdGhlIGRpZmZlcmVudCBzZWN0aW9uPC91PiwgPHU+YnV0IHlvdSB3aWxsIG5vdCByZWNlaXZlIGF0dGVuZGFuY2UgYW5kIHBhcnRpY2lwYXRpb24gcG9pbnRzIGZvciBkb2luZyBzbzwvdT4gKHVubGVzcyB0aGUgYWJzZW5jZSBpcyBleGN1c2VkIGJ5IHRoZSBpbnN0cnVjdG9yKS4KCkxlY3R1cmUgYXR0ZW5kYW5jZSBpcyBub3QgbWFuZGF0b3J5LCBidXQgaXQgaXMgc3Ryb25nbHkgZW5jb3VyYWdlZDsgbW9zdCBtYXRlcmlhbCBwcmVzZW50ZWQgaW4gbGVjdHVyZSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHJlYWRpbmdzLCBhbmQgbGVjdHVyZSByZWNvcmRpbmdzIG1heSBub3QgYWx3YXlzIGJlIGF2YWlsYWJsZS4KPHU+WW91IGFyZSByZXNwb25zaWJsZSBmb3IgYW5kIHdpbGwgYmUgdGVzdGVkIG9uIGFsbCBtYXRlcmlhbCBwcmVzZW50ZWQgaW4gbGVjdHVyZXMsIGRpc2N1c3Npb24gc2VjdGlvbnMsIGFuZCBpbiB0aGUgcmVxdWlyZWQgcmVhZGluZ3M8L3U+LgpSZWd1bGFyIGF0dGVuZGFuY2UgYW5kIGdvb2QgYXR0ZW50aW9uIHRvIGxlY3R1cmVzIHdpbGwgaW1wcm92ZSB3aGF0IHlvdSBnZXQgb3V0IG9mIHRoaXMgY2xhc3MgYW5kIGlzIGxpa2VseSB0byBpbXByb3ZlIHlvdXIgcGVyZm9ybWFuY2Ugb24gdGhlIGV4YW1zLgoKIyMgUmVhZGluZ3MgJiBRdWl6emVzIHsjcmVhZGluZ1F1aXp6ZXN9CgpSZWFkaW5ncyBhbmQgb3RoZXIgbWF0ZXJpYWxzIHdpbGwgYmUgcG9zdGVkIG9uIFtJQ09OXShodHRwczovL2ljb24udWlvd2EuZWR1KS4KWW91IGFyZSBleHBlY3RlZCB0byBkbyB0aGUgcmVhZGluZ3MgYmVmb3JlIGRpc2N1c3Npb24gc2VjdGlvbi4KWW91IHdpbGwgaGF2ZSBhbiBvbmxpbmUgcXVpeiBvbiB0aGUgcmVhZGluZ3MgdG8gY29tcGxldGUgaW4gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLCBvbiB5b3VyIG93biwgPHU+YmVmb3JlPC91PiBlYWNoIGRpc2N1c3Npb24gc2VjdGlvbi4KVGhlIHF1aXp6ZXMgYXJlIG1lYW50IHRvIGhlbHAgeW91IGNvbWUgdG8gY2xhc3MgcHJlcGFyZWQgdG8gY29udHJpYnV0ZSBzbyB5b3UgYXJlIGJlc3QtcG9zaXRpb25lZCB0byBsZWFybiBhbmQgdG8gaGVscCBvdGhlcnMgbGVhcm4uClRoZSBxdWl6emVzIGFyZSBub3QgdGltZWQgKHlvdSBjYW4gc3BlbmQgYXMgbXVjaCB0aW1lIGFzIHlvdSBuZWVkIG9uIGVhY2ggcXVpeiB1cCB1bnRpbCB0aGUgZGVhZGxpbmUpLgpUaGUgZGVhZGxpbmUgZm9yIGVhY2ggcXVpeiBpcyAzMCBtaW51dGVzIGJlZm9yZSB5b3VyIHNjaGVkdWxlZCBkaXNjdXNzaW9uIHNlY3Rpb24gc3RhcnRzLgpXZSB3aWxsIG5vdCBhY2NlcHQgbGF0ZSByZXNwb25zZXMgb3IgbXVsdGlwbGUgc3VibWlzc2lvbnMuCllvdXIgbG93ZXN0IHF1aXogc2NvcmUgd2lsbCBiZSBkcm9wcGVkLgpXZSB3aWxsIG5vdCBhY2NlcHQgZXhjdXNlZCBhYnNlbmNlcyBmb3IgcXVpenplcyBiZWNhdXNlIChhKSB5b3UgaGF2ZSBhIHdlZWsgdG8gY29tcGxldGUgdGhlIHF1aXogKGFuZCBjYW4gc3VibWl0IGl0IGF0IGFueSBwb2ludCBkdXJpbmcgdGhhdCB3ZWVrKSwgYW5kIChiKSB3ZSBkcm9wIHlvdXIgbG93ZXN0IHF1aXogc2NvcmUuCkVhY2ggcXVpeiB3aWxsIGJlIHdlaWdodGVkIHRoZSBzYW1lIGluIHRoZSBmaW5hbCBncmFkZS4KUXVpeiBhbnN3ZXJzIHdpbGwgYmUgdmlld2FibGUgYXQgdGhlIGVuZCBvZiB0aGUgd2VlayAoaS5lLiwgYWZ0ZXIgdGhlIGxhc3QgZGlzY3Vzc2lvbiBzZWN0aW9uIGhhcyB0YWtlbiB0aGVpciBxdWl6KS4KClBhc3QgZXhwZXJpZW5jZSBoYXMgc2hvd24gdGhhdCBpbiBvcmRlciB0byBkbyB3ZWxsIGluIHRoaXMgY2xhc3MsIHlvdSBzaG91bGQgcmVhZCB0aGUgcmVxdWlyZWQgbWF0ZXJpYWwsIHBhcnRpY2lwYXRlIGFjdGl2ZWx5IGluIGNsYXNzLCBhbmQgZ28gb3ZlciB5b3VyIG5vdGVzIDx1PmVhY2ggd2VlazwvdT4uClRoZXJlIGlzIHRvbyBtdWNoIG1hdGVyaWFsIGJlaW5nIGNvdmVyZWQgaW4gdGhpcyBjbGFzcyB0byB0cnkgdG8gc3R1ZHkgb25seSBieSBmcmFudGljIHByZXBhcmF0aW9uIGltbWVkaWF0ZWx5IGJlZm9yZSBleGFtcy4KTm90ZSB0aGF0IGxlY3R1cmUgYW5kIHNlY3Rpb24gd2lsbCA8dT5ub3Q8L3U+IGNvdmVyIGFsbCByZWxldmFudCBtYXRlcmlhbCBmb3IgdGhlIGNvdXJzZTsgeW91IHdpbGwgYmUgZXhwZWN0ZWQgdG8ga25vdyB0aGUgPHU+cmVxdWlyZWQ8L3U+IHJlYWRpbmdzIGZvciBleGFtcy4KCiMjIFdvcmtsb2FkIHsjd29ya2xvYWR9CgpUaGlzIGlzIGEgMyBzZW1lc3RlciBob3VyIGNvdXJzZS4KU3R1ZGVudHMgc2hvdWxkIHRoZXJlZm9yZSBleHBlY3QgdG8gc3BlbmQgWzYgYWRkaXRpb25hbCBob3VycyBwZXIgd2Vla10oaHR0cHM6Ly9jbGFzLnVpb3dhLmVkdS9mYWN1bHR5L3N0dWRlbnQtd29ya2xvYWQtZ3VpZGVsaW5lcykgKG91dHNpZGUgb2YgY2xhc3MpIHJlYWRpbmcgdGhlIGFydGljbGVzLCByZXZpZXdpbmcgbWF0ZXJpYWwgZnJvbSBsZWN0dXJlIGFuZCBkaXNjdXNzaW9uIHNlY3Rpb24sIGFuZCBwcmVwYXJpbmcgZm9yIHF1aXp6ZXMgYW5kIGV4YW1zLgoKIyMgRXhhbWluYXRpb25zIHsjZXhhbXN9CgpUaGVyZSB3aWxsIGJlIDMgZXhhbXMuClRoZSBleGFtcyB3aWxsIGluY2x1ZGUgbXVsdGlwbGUtY2hvaWNlIHF1ZXN0aW9ucy4KRWFjaCBleGFtIHdpbGwgZW1waGFzaXplIGluZm9ybWF0aW9uIHByZXNlbnRlZCBmb3IgdGhlIHRoaXJkIG9mIHRoZSBjbGFzcyB0aGF0IHByZWNlZGVzIGl0LgpIb3dldmVyLCBzb21lIGludGVncmF0aW9uIG9mIGluZm9ybWF0aW9uIGFjcm9zcyBzZWN0aW9ucyB3aWxsIGJlIHJlcXVpcmVkIGZvciBxdWVzdGlvbnMgb24gdGhlIHNlY29uZCBhbmQgdGhpcmQgZXhhbXMuCkV4YW0gcXVlc3Rpb25zIGNhbiBjb21lIGZyb20gPHU+YW55IG9mIHRoZSBmb2xsb3dpbmcgc291cmNlczogbGVjdHVyZXMsIHNlY3Rpb25zLCBvciByZXF1aXJlZCByZWFkaW5nczwvdT4uCkZvciBzdWdnZXN0ZWQgc3R1ZHkgdGlwcyBmb3IgdGhpcyBjbGFzcywgc2VlIFtoZXJlXShob3dUb1N0dWR5Lmh0bWwpLgoKIyMjIE1pc3NpbmcgRXhhbXMgeyNtaXNzaW5nRXhhbXN9CgpTdHVkZW50cyBhcmUgYWxsb3dlZCB0byBtYWtlIHVwIGV4YW1zIHRoYXQgaGF2ZSBiZWVuIG1pc3NlZCBkdWUgdG8gaWxsbmVzcywgbWFuZGF0b3J5IHJlbGlnaW91cyBvYnNlcnZhdGlvbnMsIG9mZmljaWFsIFVuaXZlcnNpdHkgYWN0aXZpdGllcywgb3Igb3RoZXIgdW5hdm9pZGFibGUgY2lyY3Vtc3RhbmNlcy4KTm90ZTogdGhlIGZvcm1hdCBvZiB0aGUgbWFrZS11cCBleGFtIG1heSBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwgZXhhbS4KSWYgeW91IGtub3cgdGhhdCB5b3UgbXVzdCBiZSBhd2F5IGF0IHRoZSB0aW1lIG9mIGFuIGV4YW0gZm9yIG9uZSBvZiB0aGVzZSByZWFzb25zLCBQcm9mZXNzb3IgUGV0ZXJzZW4gb3IgdGhlIFRBIG11c3QgYmUgY29udGFjdGVkIGluIGFkdmFuY2Ugd2hlbmV2ZXIgcG9zc2libGUgdG8gc2NoZWR1bGUgYSBtYWtlLXVwIGV4YW0uCkluIG9yZGVyIHRvIHRha2UgYSBtYWtlLXVwIGV4YW0sIHlvdSBtdXN0IHByb3ZpZGUgYWNjZXB0YWJsZSBkb2N1bWVudGF0aW9uIHRvIGJlIGVsaWdpYmxlIHRvIHRha2UgaXQ6IGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcmVwb3J0IG9mIGlsbG5lc3M7IGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIG11c3QgYmUgZG9jdW1lbnRlZCBieSB0aGUgVW5pdmVyc2l0eSBvZiBJb3dhIFtBYnNlbmNlIEV4cGxhbmF0aW9uIEZvcm1dKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvZmFjdWx0eS9zdHVkZW50LWF0dGVuZGFuY2UtYW5kLWFic2VuY2VzKSBhbmQgbXVzdCBiZSBhcHByb3ZlZCBieSBQcm9mZXNzb3IgUGV0ZXJzZW4uCjx1PkluIHN1bSwgdG8gYmUgZWxpZ2libGUgZm9yIGEgbWFrZS11cCBleGFtLCBQcm9mZXNzb3IgUGV0ZXJzZW4gb3IgdGhlIFRBIG11c3QgYmUgY29udGFjdGVkIGJlZm9yZSB0aGUgZXhhbWluYXRpb24gd2hlbmV2ZXIgcG9zc2libGUsIGFuZCB5b3UgbXVzdCBzZW5kIGFjY2VwdGFibGUgZm9ybSBvZiBkb2N1bWVudGF0aW9uIHRvIFByb2Zlc3NvciBQZXRlcnNlbiBvciB0aGUgVEE8L3U+LgoKIyBHcmFkaW5nIHsjZ3JhZGluZ30KCkZpbmFsIGdyYWRlcyB3aWxsIGJlIGFzc2lnbmVkIGF0IHRoZSBlbmQgb2Ygc2VtZXN0ZXIgb24gdGhlIGJhc2lzIG9mIHlvdXIgdG90YWwgcGVyY2VudGFnZSBvZiBwb2ludHMgZWFybmVkIG9uIGV4YW1zLCBxdWl6emVzLCBhbmQgc2VjdGlvbiBwYXJ0aWNpcGF0aW9uLCBhcyBkZXRhaWxlZCBiZWxvdy4KR3JhZGVzIHdpbGwgYmUgYXNzaWduZWQgb24gYW4gYWJzb2x1dGUgc2NhbGUgKGNyaXRlcmlvbi1yZWZlcmVuY2VkIGdyYWRpbmcpOyBjb3Vyc2UgZ3JhZGVzIHdpbGwgbm90IGJlIGN1cnZlZC4KTm8gZXh0cmEtY3JlZGl0IG9wcG9ydHVuaXRpZXMgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBjb3Vyc2UuClBsZWFzZSBub3RlOiBBcyBhIG1hdHRlciBvZiBmYWlybmVzcyB0byBhbGwgc3R1ZGVudHMsIEkgYXNzaWduIGdyYWRlcyBiYXNlZCBvbiBwZXJmb3JtYW5jZSBhbmQgZG8gbm90IG5lZ290aWF0ZSBncmFkZXMuCkZpbmFsIGdyYWRlcyB3aWxsIGJlIGFzc2lnbmVkIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgoKfCBHcmFkZSB8IFBlcmNlbnQgfAp8Oi0tLS0tLXw6LS0tLS0tLS18CnwgQSsgICAgfCA5N+KAkzEwMCUgfCAKfCBBICAgICB8IDkz4oCTOTYgICB8CnwgQS0gICAgfCA5MOKAkzkyICAgfAp8IEIrICAgIHwgODfigJM4OSAgIHwKfCBCICAgICB8IDgz4oCTODYgICB8CnwgQi0gICAgfCA4MOKAkzgyICAgfAp8IEMrICAgIHwgNzXigJM3OSAgIHwKfCBDICAgICB8IDcw4oCTNzQgICB8CnwgQy0gICAgfCA2NeKAkzY5ICAgfAp8IEQrICAgIHwgNjDigJM2NCAgIHwKfCBEICAgICB8IDU14oCTNTkgICB8CnwgRC0gICAgfCA1MOKAkzU0ICAgfAp8IEYgICAgIHwgPCA1MCUgICB8CgpJIHJvdW5kIHVwIGZyb20gLjUgd2hlbiBkZXRlcm1pbmluZyBmaW5hbCBncmFkZXMuCkZvciBleGFtcGxlLCBhIGNvdXJzZSBwZXJjZW50IG9mIDc5LjUwIHdvdWxkIHJlY2VpdmUgYSBCLSwgd2hlcmVhcyBhIGNvdXJzZSBwZXJjZW50IG9mIDc5LjQ5IHdvdWxkIHJlY2VpdmUgYSBDKy4KClRoZSByZWxhdGl2ZSBjb250cmlidXRpb24gb2YgZWFjaCBjb21wb25lbnQgdG8geW91ciBmaW5hbCBncmFkZSBpcyBhcyBmb2xsb3dzOgoKIC0gMjglCUV4YW1pbmF0aW9uICMxCiAtIDI4JQlFeGFtaW5hdGlvbiAjMgogLSAyOCUJRXhhbWluYXRpb24gIzMgKGFkbWluaXN0ZXJlZCBvbmx5IGR1cmluZyB0aGUgY2xhc3MncyBGaW5hbCBFeGFtIHRpbWUgc2xvdCkKIC0gOCUgCURpc2N1c3Npb24gQXR0ZW5kYW5jZS9QYXJ0aWNpcGF0aW9uCiAtIDglIAlSZWFkaW5nIFF1aXp6ZXMKCiMgVGVudGF0aXZlIENvdXJzZSBPdXRsaW5lIChleGFtIGRhdGVzIGZpeGVkKSB7I291dGxpbmV9CgojIyBTZWN0aW9uIE5vdGVzIHsjc2VjdGlvbk5vdGVzfQoKLSBTZWN0aW9ucyB3aWxsIG5vdCBiZSBoZWxkIGR1cmluZyB0aGUgd2VlayBvZiBleGFtaW5hdGlvbnMuClRoZXJlZm9yZSwgc2VjdGlvbnMgYXJlIGNhbmNlbGxlZCBvbiB0aGUgZm9sbG93aW5nIGRhdGVzOiBNb25kYXkgMi8yNyDigJMgRnJpZGF5IDMvMyBhbmQgTW9uZGF5IDQvMyDigJMgRnJpZGF5IDQvNy4KCiMjIFVuaXQgT25lIHsjdW5pdDF9CgoqKlVuaXQgT25lOiBGdW5kYW1lbnRhbHMgb2YgU2NpZW50aWZpYyBDbGluaWNhbCBQc3ljaG9sb2d5KioKCnwgRGF0ZSB8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCAxLzE2IHwgTUxLIERheSAobm8gY2xhc3MhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMS8xOCB8IEludHJvZHVjdGlvbiBhbmQgQ29udGVtcG9yYXJ5IENsaW5pY2FsIFBzeWNob2xvZ3kgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEvMjMgfCBDbGFzc2lmaWNhdGlvbiBhbmQgRGlhZ25vc2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxLzI1IHwgQ2xhc3NpZmljYXRpb24gYW5kIERpYWdub3NpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMS8zMCB8IFJlc2VhcmNoIE1ldGhvZHMgaW4gQ2xpbmljYWwgUHN5Y2hvbG9neSAoY29udGVudCBmb2N1cyBvbiBzZXh1YWwgYXNzYXVsdCkgfAp8IDIvMSAgfCBSZXNlYXJjaCBNZXRob2RzIGluIENsaW5pY2FsIFBzeWNob2xvZ3kgKGNvbnRlbnQgZm9jdXMgb24gc2V4dWFsIGFzc2F1bHQpIHwKfCAyLzYgIHwgTW9vZCBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMi84ICB8IE1vb2QgRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDIvMTMgfCBNb29kIERpc29yZGVycyBhbmQgU3VpY2lkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyLzE1IHwgQW54aWV0eSBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMi8yMCB8IEFueGlldHkgRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDIvMjIgfCBBbGNvaG9sIFVzZSBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyLzI3IHwgRXhhbWluYXRpb24gIzEgKG5vIHNlY3Rpb25zIHRoaXMgd2VlayEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBVbml0IFR3byB7I3VuaXQyfQoKKipVbml0IFR3bzogRXZpZGVuY2UtQmFzZWQgUHN5Y2hvbG9naWNhbCBBc3Nlc3NtZW50IGFuZCBQcmVkaWN0aW9uKioKCnwgRGF0ZSB8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCAzLzEgIHwgT3ZlcnZpZXcgb2YgQXNzZXNzbWVudCBhbmQgUHJlZGljdGlvbiAgICAgICAgICB8CnwgMy82ICB8IE92ZXJ2aWV3IG9mIEFzc2Vzc21lbnQgYW5kIFByZWRpY3Rpb24gICAgICAgICAgfAp8IDMvOCAgfCBJbnRlcnZpZXdpbmcsIE9ic2VydmF0aW9uLCBhbmQgU2VsZi1Nb25pdG9yaW5nIHwKfCAzLzEzIHwgU3ByaW5nIEJyZWFrIChubyBjbGFzcyEpICAgICAgICAgICAgICAgICAgICAgICB8CnwgMy8xNSB8IFNwcmluZyBCcmVhayAobm8gY2xhc3MhKSAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMvMjAgfCBJbnRlcnZpZXdpbmcsIE9ic2VydmF0aW9uLCBhbmQgU2VsZi1Nb25pdG9yaW5nIHwKfCAzLzIyIHwgSW50ZWxsaWdlbmNlIFRlc3RpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMy8yNyB8IEludGVsbGlnZW5jZSBUZXN0aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMvMjkgfCBQZXJzb25hbGl0eSBBc3Nlc3NtZW50ICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA0LzMgIHwgUGVyc29uYWxpdHkgQXNzZXNzbWVudDsgV3JhcCBVcCAgICAgICAgICAgICAgICB8CnwgNC81ICB8IEV4YW1pbmF0aW9uICMyIChubyBzZWN0aW9ucyB0aGlzIHdlZWshKSAgICAgICAgfAoKIyMgVW5pdCBUaHJlZSB7I3VuaXQzfQoKKipVbml0IFRocmVlOiBFdmlkZW5jZS1CYXNlZCBQc3ljaG9sb2dpY2FsIEludGVydmVudGlvbioqCgp8IERhdGUgfCBUb3BpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgNC8xMCB8IE1ham9yIEFwcHJvYWNoZXMgdG8gSW50ZXJ2ZW50aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDQvMTIgfCBNYWpvciBBcHByb2FjaGVzIHRvIEludGVydmVudGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA0LzE3IHwgQ29nbml0aXZlLUJlaGF2aW9yYWwgVGhlcmFweSBmb3IgUGFuaWMgRGlzb3JkZXI7IFRyYW5zZGlhZ25vc3RpYyBUcmVhdG1lbnQgZm9yIEVtb3Rpb25hbCBEaXNvcmRlcnMgfAp8IDQvMTkgfCBFdmFsdWF0aW9uIG9mIEludGVydmVudGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA0LzI0IHwgRXZpZGVuY2UtQmFzZWQgVHJlYXRtZW50czsgSW5mbHVlbmNlcyBvbiBUcmVhdG1lbnQgT3V0Y29tZSB8CnwgNC8yNiB8IERpc3NlbWluYXRpb24gb2YgRXZpZGVuY2UtQmFzZWQgVHJlYXRtZW50cyAgICAgICAgICAgICAgICAgfAp8IDUvMSAgfCBJbnRlcnZlbnRpb24gQ29udHJvdmVyc2llcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA1LzMgIHwgV3JhcC1VcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIERhdGUgYW5kIFRpbWUgb2YgdGhlIEZpbmFsIEV4YW0geyNmaW5hbEV4YW19CgpUaGUgZmluYWwgZXhhbWluYXRpb24gZGF0ZSBhbmQgdGltZSB3aWxsIGJlIGFubm91bmNlZCBieSB0aGUgUmVnaXN0cmFyIGdlbmVyYWxseSBieSB0aGUgZmlmdGggd2VlayBvZiBjbGFzc2VzIGFuZCBpdCB3aWxsIGJlIGFubm91bmNlZCBvbiB0aGUgY291cnNlIElDT04gc2l0ZSBvbmNlIGl0IGlzIGtub3duLgo8dT5EbyBub3QgcGxhbiB5b3VyIGVuZCBvZiB0aGUgc2VtZXN0ZXIgdHJhdmVsIHBsYW5zIHVudGlsIHRoZSBmaW5hbCBleGFtIHNjaGVkdWxlIGlzIG1hZGUgcHVibGljLgpJdCBpcyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGtub3cgdGhlIGRhdGUsIHRpbWUsIGFuZCBwbGFjZSBvZiB0aGUgZmluYWwgZXhhbS48L3U+CkFjY29yZGluZyB0byBSZWdpc3RyYXIncyBmaW5hbCBleGFtIHBvbGljeSwgc3R1ZGVudHMgPHU+aGF2ZSBhIG1heGltdW0gb2YgdHdvIHdlZWtzIGFmdGVyIHRoZSBhbm5vdW5jZWQgZmluYWwgZXhhbSBzY2hlZHVsZTwvdT4gdG8gcmVxdWVzdCBhIGNoYW5nZSBpZiBhbiBleGFtIGNvbmZsaWN0IGV4aXN0cyBvciBpZiBhIHN0dWRlbnQgaGFzIG1vcmUgdGhhbiB0d28gZXhhbXMgaW4gb25lIGRheSAoc2VlIHRoZSBbcG9saWN5XShodHRwczovL3JlZ2lzdHJhci51aW93YS5lZHUvbWFrZXVwLWZpbmFsLWV4YW1pbmF0aW9uLXBvbGljaWVzKSBoZXJlKS4KCiMgQ291cnNlIFJlc291cmNlcyB7I2NvdXJzZVJlc291cmNlc30KClRoZXJlIGFyZSBtYW55IGNvdXJzZSByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHN1Y2NlZWQgaW4gdGhlIGNsYXNzLCBpbmNsdWRpbmc6CgotIFBvd2VycG9pbnQgc2xpZGVzIGZvciBsZWN0dXJlCi0gUG93ZXJwb2ludCBzbGlkZXMgZm9yIGRpc2N1c3Npb24gc2VjdGlvbgotIGdldHRpbmcgYW5kIHJldmlld2luZyBtaXNzZWQgbm90ZXMgZnJvbSBhIHBlZXIKLSBbbGVjdHVyZSByZWNvcmRpbmdzXSgjcmVjb3JkaW5ncykKLSBzdHVkeSBxdWVzdGlvbnMgYWZ0ZXIgZWFjaCBsZWN0dXJlIChzZWUgdGhlICJTdHVkeSBRdWVzdGlvbnMiIGZvbGRlciB1bmRlciB0aGUgIkZpbGVzIiB0YWIgb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpKQotIFF1aXpsZXQgcXVlc3Rpb25zIChzZWUgdGhlICJRdWl6bGV0IiBmb2xkZXIgdW5kZXIgdGhlICJGaWxlcyIgdGFiIG9uIElDT04pCi0gcHJhY3RpY2UgZXhhbSBxdWVzdGlvbnMgdGhhdCB3ZSBwb3N0IGxlYWRpbmcgdXAgdG8gdGhlIGV4YW0gKHRoZXNlIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgaW4gdGhlICJQcmFjdGljZSBFeGFtIFF1ZXN0aW9ucyIgZm9sZGVyIHVuZGVyIHRoZSAiRmlsZXMiIHRhYiBvbiBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkpCi0gcmV2aWV3IHlvdXIgcXVpenplcyBhbmQgdGhlIGFuc3dlcnMKLSBvdXIgZ3VpZGUgb24gW2hvdyB0byBzdHVkeSBmb3IgdGhlIGNsYXNzXShob3dUb1N0dWR5Lmh0bWwpCi0gVEEgb2ZmaWNlIGhvdXJzCi0gaW5zdHJ1Y3RvciBvZmZpY2UgaG91cnMKLSBbcGVlciBzdHVkeSBncm91cHNdKCNyZXF1ZXN0cykKCiMgRHJvcCBEZWFkbGluZSBmb3IgdGhpcyBDb3Vyc2UgeyNkcm9wRGVhZGxpbmV9CgpZb3UgbWF5IGRyb3AgYW4gaW5kaXZpZHVhbCBjb3Vyc2UgYmVmb3JlIHRoZSBkZWFkbGluZTsgYWZ0ZXIgdGhpcyBkZWFkbGluZSB5b3Ugd2lsbCBuZWVkIGNvbGxlZ2lhdGUgYXBwcm92YWwuCllvdSBjYW4gbG9vayB1cCB0aGUgW2Ryb3AgZGVhZGxpbmUgZm9yIHRoaXMgY291cnNlXShodHRwczovL3JlZ2lzdHJhci51aW93YS5lZHUvY291cnNlLWRlYWRsaW5lcykgaGVyZS4KV2hlbiB5b3UgZHJvcCBhIGNvdXJzZSwgYSAiVyIgd2lsbCBhcHBlYXIgb24geW91ciB0cmFuc2NyaXB0LgpUaGUgbWFyayBvZiAiVyIgaXMgYSBuZXV0cmFsIG1hcmsgdGhhdCBkb2VzIG5vdCBhZmZlY3QgeW91ciBHUEEuCkRpcmVjdGlvbnMgZm9yIGFkZGluZyBvciBkcm9wcGluZyBhIGNvdXJzZSBhbmQgb3RoZXIgcmVnaXN0cmF0aW9uIGNoYW5nZXMgY2FuIGJlIGZvdW5kIG9uIHRoZSBbUmVnaXN0cmFyJ3Mgd2Vic2l0ZV0oaHR0cHM6Ly9yZWdpc3RyYXIudWlvd2EuZWR1L2NoYW5nZS1yZWdpc3RyYXRpb24tbXl1aSkuClN0dWRlbnRzIGNhbiBmaW5kIHBvbGljaWVzIG9uIGRyb3BwaW5nIGFuZCB3aXRoZHJhd2luZyBbaGVyZV0oaHR0cHM6Ly9jbGFzLnVpb3dhLmVkdS9zdHVkZW50cy9zdHVkZW50cy1hY2FkZW1pYy1wb2xpY2llcy9yZWdpc3RyYXRpb24tcG9saWNpZXMjZHJvcHBpbmcpLgoKIyBGZWVkYmFjayBhYm91dCB0aGUgQ291cnNlIHsjZmVlZGJhY2t9CgpJIHdlbGNvbWUgZmVlZGJhY2sgYXQgYW55IHBvaW50IGR1cmluZyB0aGUgY2xhc3MuCklmIHlvdSBoYXZlIGNvbW1lbnRzIG9uIHRoZSBjbGFzcyBvciBteSB0ZWFjaGluZywgcGxlYXNlIGZlZWwgZnJlZSB0byBtZWV0IHdpdGggbWUgZHVyaW5nIG9mZmljZSBob3Vycy4KCiMjIFN0dWRlbnQgQ29tcGxhaW50cyB7I2NvbXBsYWludHN9CgpTdHVkZW50cyB3aXRoIGEgY29tcGxhaW50IGFib3V0IGEgZ3JhZGUgb3IgYSByZWxhdGVkIG1hdHRlciBzaG91bGQgZmlyc3QgZGlzY3VzcyB0aGUgc2l0dWF0aW9uIHdpdGggdGhlIGluc3RydWN0b3IsIGFuZCBmaW5hbGx5IHdpdGggdGhlIERpcmVjdG9yIG9yIENoYWlyIG9mIHRoZSBzY2hvb2wsIGRlcGFydG1lbnQsIG9yIHByb2dyYW0gb2ZmZXJpbmcgdGhlIGNvdXJzZS4KU3R1ZGVudHMgc2hvdWxkIGNvbnRhY3QgW0NMQVMgVW5kZXJncmFkdWF0ZSBQcm9ncmFtc10oaHR0cHM6Ly9jbGFzLnVpb3dhLmVkdS9zdHVkZW50cy9oYW5kYm9vay9zdHVkZW50LXJpZ2h0cy1yZXNwb25zaWJpbGl0aWVzI3JpZ2h0cykgZm9yIHN1cHBvcnQgd2hlbiB0aGUgbWF0dGVyIGlzIG5vdCByZXNvbHZlZCBhdCB0aGUgcHJldmlvdXMgbGV2ZWwuCgojIENvbW11bmljYXRpb246IFVJIEVtYWlsIHsjZW1haWx9CgpTdHVkZW50cyBhcmUgcmVzcG9uc2libGUgZm9yIGFsbCBvZmZpY2lhbCBjb3JyZXNwb25kZW5jZXMgc2VudCB0byB0aGVpciBVSSBlbWFpbCBhZGRyZXNzICh1aW93YS5lZHUpIGFuZCBtdXN0IHVzZSB0aGlzIGFkZHJlc3MgZm9yIGFueSBjb21tdW5pY2F0aW9uIHdpdGggaW5zdHJ1Y3RvcnMgb3Igc3RhZmYgaW4gdGhlIFVJIGNvbW11bml0eS4KCiMgSGVhbHRoIGFuZCBTYWZldHkgeyNoZWFsdGh9CgpUaGUgVW5pdmVyc2l0eSBvZiBJb3dhIHN0cm9uZ2x5IGVuY291cmFnZXMgc3R1ZGVudHMsIGZhY3VsdHksIGFuZCBzdGFmZiB0byBiZSB2YWNjaW5hdGVkIGFnYWluc3QgQ09WSUQtMTkuCkZvciBpbmZvcm1hdGlvbiBhYm91dCBDT1ZJRC0xOSB2YWNjaW5lcyBvbiBjYW1wdXMsIHBsZWFzZSBzZWUgaHR0cHM6Ly9jb3JvbmF2aXJ1cy51aW93YS5lZHUuCklmIHlvdSBhcmUgZmVlbGluZyBzaWNrLCB0ZXN0IHBvc2l0aXZlIGZvciBDT1ZJRC0xOSwgb3IgbWF5IGhhdmUgYmVlbiBleHBvc2VkIHRvIENPVklELTE5LCBwbGVhc2UgcmVmZXIgdG8gdGhlIGNhbXB1cyBndWlkYW5jZSBmb3IgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiAoaHR0cHM6Ly9jb3JvbmF2aXJ1cy51aW93YS5lZHUvcmV0dXJuaW5nLWNhbXB1cy9zaG93aW5nLXN5bXB0b21zKS4KUmVnYXJkbGVzcyBvZiB5b3VyIHZhY2NpbmF0aW9uIHN0YXR1cywgaWYgeW91IGhhdmUgc3ltcHRvbXMgY29uc2lzdGVudCB3aXRoIENPVklELTE5LCBwbGVhc2Ugc3RheSBob21lIGFuZCBmb2xsb3cgdGhlIGFwcHJvcHJpYXRlIGlzb2xhdGlvbi9xdWFyYW50aW5lIGd1aWRhbmNlLgpGb3IgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSBzZW1lc3RlciwgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vY29yb25hdmlydXMudWlvd2EuZWR1LgoKIyBDb2xsZWdlIG9mIExpYmVyYWwgQXJ0cyBhbmQgU2NpZW5jZXMgKENMQVMpIENvdXJzZSBQb2xpY2llcyB7I2NsYXNQb2xpY2llc30KCi0gW0F0dGVuZGFuY2UgYW5kIEFic2VuY2VzXShodHRwczovL2NsYXMudWlvd2EuZWR1L2ZhY3VsdHkvc3R1ZGVudC1hdHRlbmRhbmNlLWFuZC1hYnNlbmNlcylcClVuaXZlcnNpdHkgcmVndWxhdGlvbnMgcmVxdWlyZSB0aGF0IHN0dWRlbnRzIGJlIGFsbG93ZWQgdG8gbWFrZSB1cCBleGFtaW5hdGlvbnMgd2hpY2ggaGF2ZSBiZWVuIG1pc3NlZCBkdWUgdG8gaWxsbmVzcyBvciBvdGhlciB1bmF2b2lkYWJsZSBjaXJjdW1zdGFuY2VzLgpTZWUgdGhlIHNlY3Rpb24gYWJvdmUgb24gIltNaXNzaW5nIEV4YW1zXSgjbWlzc2luZ0V4YW1zKSIgZm9yIHRoZSBkb2N1bWVudGF0aW9uIG5lY2Vzc2FyeSBmb3IgYW4gYWJzZW5jZSB0byBiZSBleGN1c2VkIGFuZCB0byBiZSBlbGlnaWJsZSB0byB0YWtlIGEgbWFrZS11cCBleGFtLgpTdHVkZW50cyB3aXRoIG1hbmRhdG9yeSByZWxpZ2lvdXMgb2JsaWdhdGlvbnMgb3IgVUkgYXV0aG9yaXplZCBhY3Rpdml0aWVzIG11c3QgZGlzY3VzcyB0aGVpciBhYnNlbmNlcyB3aXRoIHRoZSBpbnN0cnVjdG9yIG9yIFRBIGFzIHNvb24gYXMgcG9zc2libGUuClJlbGlnaW91cyBvYmxpZ2F0aW9ucyBtdXN0IGJlIGNvbW11bmljYXRlZCB3aXRoaW4gdGhlIGZpcnN0IHRocmVlIHdlZWtzIG9mIGNsYXNzZXMuCi0gW0V4YW0gUG9saWNpZXNdKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvZmFjdWx0eS9leGFtaW5hdGlvbi1wb2xpY2llcy1hbmQtYmVzdC1wcmFjdGljZXMpCgojIyBPdGhlciBFeHBlY3RhdGlvbnMgb2YgU3R1ZGVudCBQZXJmb3JtYW5jZSB7I290aGVyRXhwZWN0YXRpb25zfQoKU3R1ZGVudHMgaGF2ZSB0aGUgcmlnaHQgdG8gYSBkaXN0cmFjdGlvbi1mcmVlIGxlYXJuaW5nIGVudmlyb25tZW50LgpZb3UgaGF2ZSB0aGUgcmVzcG9uc2liaWxpdHkgdG8gaGVscCBjcmVhdGUgc3VjaCBhIGNsYXNzcm9vbSBlbnZpcm9ubWVudC4KUGxlYXNlIHRyZWF0IG90aGVyIHN0dWRlbnRzIGluIHRoZSBjbGFzcywgdGhlIFRBcywgYW5kIHRoZSBpbnN0cnVjdG9yIHdpdGggcmVzcGVjdC4KU3R1ZGVudHMgYXJlIGV4cGVjdGVkIHRvIGhlbHAgZWFjaCBvdGhlciBsZWFybiBhbmQgdG8gY29udHJpYnV0ZSBvdmVyYWxsIHRvIHRoZSBsZWFybmluZyBlbnZpcm9ubWVudCBvZiB0aGUgY291cnNlLgpBcnJpdmluZyBwcmVwYXJlZCBmb3IgY2xhc3MgaXMgcGFydCBvZiB0aGlzIGV4cGVjdGF0aW9uLgoKIyBVbml2ZXJzaXR5IFBvbGljaWVzIHsjVUlvd2FQb2xpY2llc30KCi0gW0FjY29tbW9kYXRpb25zIGZvciBTdHVkZW50cyB3aXRoIERpc2FiaWxpdGllc10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS90ZWFjaGluZy1yZXNvdXJjZXMvY291cnNlLXN5bGxhYmktaW5mb3JtYXRpb24jYWNjb21tb2RhdGlvbnMtZm9yLXN0dWRlbnRzLXdpdGgtZGlzYWJpbGl0aWVzKQotIFtCYXNpYyBOZWVkcyBhbmQgU3VwcG9ydCBmb3IgU3R1ZGVudHNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvdGVhY2hpbmctcmVzb3VyY2VzL2NvdXJzZS1zeWxsYWJpLWluZm9ybWF0aW9uI2Jhc2ljLW5lZWRzLWFuZC1zdXBwb3J0LWZvci1zdHVkZW50cykKLSBbQ2xhc3Nyb29tIEV4cGVjdGF0aW9uc10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS90ZWFjaGluZy1yZXNvdXJjZXMvY291cnNlLXN5bGxhYmktaW5mb3JtYXRpb24jY2xhc3Nyb29tLWV4cGVjdGF0aW9ucykKLSBbRXhhbSBNYWtlLXVwIE93aW5nIHRvIEFic2VuY2VdKGh0dHBzOi8vb3BzbWFudWFsLnVpb3dhLmVkdS9zdHVkZW50cy9hYnNlbmNlcy1jbGFzcyM4LjEpCi0gW0ZyZWUgU3BlZWNoIGFuZCBFeHByZXNzaW9uXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3RlYWNoaW5nLXJlc291cmNlcy9jb3Vyc2Utc3lsbGFiaS1pbmZvcm1hdGlvbiNmcmVlLXNwZWVjaC1hbmQtZXhwcmVzc2lvbikKLSBbTWVudGFsIEhlYWx0aF0oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS90ZWFjaGluZy1yZXNvdXJjZXMvY291cnNlLXN5bGxhYmktaW5mb3JtYXRpb24jbWVudGFsLWhlYWx0aCkKLSBbTWlsaXRhcnkgU2VydmljZSBPYmxpZ2F0aW9uc10oaHR0cHM6Ly9vcHNtYW51YWwudWlvd2EuZWR1L3N0dWRlbnRzL2Fic2VuY2VzLWNsYXNzIzguMykKLSBbTm9uLWRpc2NyaW1pbmF0aW9uXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3RlYWNoaW5nLXJlc291cmNlcy9jb3Vyc2Utc3lsbGFiaS1pbmZvcm1hdGlvbiNub24tZGlzY3JpbWluYXRpb24tc3RhdGVtZW50KQotIFtSZWxpZ2lvdXMgSG9seSBEYXlzXShodHRwczovL29wc21hbnVhbC51aW93YS5lZHUvc3R1ZGVudHMvYWJzZW5jZXMtY2xhc3MjOC4yKQotIFtTZXh1YWwgSGFyYXNzbWVudC9NaXNjb25kdWN0IGFuZCBTdXBwb3J0aXZlIE1lYXN1cmVzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3RlYWNoaW5nLXJlc291cmNlcy9jb3Vyc2Utc3lsbGFiaS1pbmZvcm1hdGlvbiNzZXh1YWwtaGFyYXNzbWVudC0tc2V4dWFsLW1pc2NvbmR1Y3QtYW5kLXN1cHBvcnRpdmUtbWVhc3VyZXMpCi0gW1NoYXJpbmcgb2YgQ2xhc3MgUmVjb3JkaW5nc10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS90ZWFjaGluZy1yZXNvdXJjZXMvY291cnNlLXN5bGxhYmktaW5mb3JtYXRpb24jc2hhcmluZy1vZi1jbGFzcy1yZWNvcmRpbmdzLWlmLWFwcHJvcHJpYXRlKQoKIyBDb3Vyc2UgUmVxdWVzdHMgeyNyZXF1ZXN0c30KCldlIGhhdmUgYSBjZW50cmFsaXplZCBsb2NhdGlvbiB0byBrZWVwIHRyYWNrIG9mIHJlcXVlc3RzLCBmb3JtcywgZXRjLiwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBtZWV0IHlvdXIgbmVlZHMuCkNvdXJzZSByZXF1ZXN0cyBpbmNsdWRlLCBmb3IgaW5zdGFuY2UsIHJlcXVlc3RzIHRvIGpvaW4gYSBwZWVyIHN0dWR5IGdyb3VwLCBzZXR0aW5nIHVwIGEgdGltZSB0byByZXZpZXcgeW91ciBleGFtLCByZXF1ZXN0aW5nIGFjY29tbW9kYXRpb25zLCBldGMuClBsZWFzZSBzdWJtaXQgY291cnNlIHJlcXVlc3RzIChlLmcuLCB0byBqb2luIGEgcGVlciBzdHVkeSBncm91cCkgaGVyZTogaHR0cHM6Ly91aW93YS5xdWFsdHJpY3MuY29tL2pmZS9mb3JtL1NWXzFIVXlnNlphUjRDY2pXdS4KSWYgeW91IGhhdmUgYWNjZXNzaWJpbGl0eSBhY2NvbW1vZGF0aW9ucyBmcm9tIFN0dWRlbnQgRGlzYWJpbGl0eSBTZXJ2aWNlcyAoU0RTKSwgcGxlYXNlIHN1Ym1pdCB5b3VyIFNEUyBhY2NvbW1vZGF0aW9ucyBsZXR0ZXJzIGF0IHRoaXMgbGluay4KCiMgUmVzb3VyY2VzIGZvciBIZWxwIHsjcmVzb3VyY2VzfQoKLSBEcm9wLWluIHN0dWR5IGdyb3VwcyBhbmQgb25lLW9uLW9uZSB0dXRvcmluZzogb2ZmaWNlIGhvdXJzIHdpdGggVEEgb3IgaW5zdHJ1Y3RvcgotIEZvcm1hbCB0dXRvcmluZzogVHV0b3IgSW93YTogaHR0cHM6Ly90dXRvci51aW93YS5lZHUKLSBBY2FkZW1pYyBhY2NvbW1vZGF0aW9uczogaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1Ci0gU3R1ZGVudCBjYXJlIGFuZCBhc3Npc3RhbmNlOiBodHRwczovL2Jhc2ljbmVlZHMudWlvd2EuZWR1L3Jlc291cmNlcy9zdHVkZW50LWNhcmUtYW5kLWFzc2lzdGFuY2UKClNvbWUgb2YgdGhlIHRvcGljcyBjb3ZlcmVkIGluIGNsYXNzIGludm9sdmUgcHJvYmxlbXMgdGhhdCBjYW4gYmUgcXVpdGUgY29tbW9uIGFtb25nIGNvbGxlZ2Ugc3R1ZGVudHMuCklmIHlvdSBmZWVsIHRoYXQgeW91IG9yIHNvbWVvbmUgeW91IGtub3cgbWF5IGJlIHN0cnVnZ2xpbmcgd2l0aCBhbiBhY2FkZW1pYywgZW1vdGlvbmFsLCBvciBwc3ljaG9sb2dpY2FsIHByb2JsZW0sIHRoZSBmb2xsb3dpbmcgb3JnYW5pemF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBhc3Npc3RhbmNlOgoKfCBTZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbnRhY3QgSW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgVW5pdmVyc2l0eSBvZiBJb3dhIEFjYWRlbWljIEFkdmlzaW5nIENlbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNTMtNTcwMCwgaHR0cHM6Ly9hZHZpc2luZ2NlbnRlci51aW93YS5lZHUgICAgICAgICAgICAgICAgICAgICAgIHwKfCBVbml2ZXJzaXR5IENvdW5zZWxpbmcgU2VydmljZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNS03Mjk0LCBodHRwczovL3d3dy51aW93YS5lZHUvdWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFN0dWRlbnQgSGVhbHRoIFNlcnZpY2UgLSBNZW50YWwgSGVhbHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzM1LTgzOTQsIGh0dHBzOi8vc3R1ZGVudGhlYWx0aC51aW93YS5lZHUvc2VydmljZXMvcHN5Y2hpYXRyeSAgICB8CnwgVW5pdmVyc2l0eSBvZiBJb3dhIEhvc3BpdGFscyBhbmQgQ2xpbmljcyBBZHVsdCBQc3ljaGlhdHJ5IFNlcnZpY2VzIENsaW5pYyAgfCAzNTMtNjMxNCwgaHR0cHM6Ly93d3cudWloZWFsdGhjYXJlLm9yZy9Qc3ljaGlhdHJ5ICAgICAgICAgICAgICAgIHwKfCBTZWFzaG9yZSBDbGluaWMgKGluIHRoZSBVSSBEZXBhcnRtZW50IG9mIFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzKSB8IDMzNS0yNDY3LCBodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1L3Jlc291cmNlcy9zZWFzaG9yZS1jbGluaWMgfAp8IFdvbWVuJ3MgUmVzb3VyY2UgYW5kIEFjdGlvbiBDZW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzM1LTE0ODYsIGh0dHBzOi8vd3JhYy51aW93YS5lZHUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUmFwZSBWaWN0aW0gQWR2b2NhY3kgUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMTktMzM1LTYwMDAgb3IgODAwLTIyOC0xNjI1LCBodHRwczovL3d3dy51aW93YS5lZHUvfnJ2YXAgICAgICAgIHwKfCBPZmZpY2Ugb2YgU2V4dWFsIE1pc2NvbmR1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMxOS0zMzUtNjIwMCwgaHR0cHM6Ly9vc21yYy51aW93YS5lZHUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IENvbW1Vbml0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgODU1LTMyNS00Mjk2LCBodHRwczovL2J1aWx0Ynljb21tdW5pdHkub3JnL2NyaXNpcyAgICAgICAgICAgICAgICB8CnwgQ29tbXVuaXR5ICYgRmFtaWx5IFJlc291cmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNTEtNDM1NywgaHR0cHM6Ly93d3cuY2ZyaGVscHMub3JnLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCjx1PklmIHlvdSBvciBzb21lb25lIHlvdSBrbm93IGlzIGNvbnRlbXBsYXRpbmcgc3VpY2lkZTwvdT4sIGVpdGhlciBjYWxsIG9yIHRleHQgdGhlIFN1aWNpZGUgYW5kIENyaXNpcyBMaWZlbGluZSBhdCA5ODgsIG9yIGNhbGwgOTExLgoKIyBEaXNjbGFpbWVyIHsjZGlzY2xhaW1lcn0KClRoaXMgc3lsbGFidXMgaXMgc3ViamVjdCB0byBjaGFuZ2UuCkFueSBjaGFuZ2VzIHdpbGwgYmUgZGlzY3Vzc2VkIGluIGNsYXNzLCB2aWEgZW1haWwsIGFuZC9vciBvbiBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkuCg==