Last Updated: 07/02/2025
Course Title
PSY 3330 – Childhood Psychopathology (Fall 2025)
Course Meeting Time and
Place
Monday, Wednesday, & Friday 10:30–11:20 a.m., 158 Van Allen
(VAN)
Course Home
The University of Iowa
The College of Liberal Arts and Sciences
Department of Psychological and Brain Sciences
The College of Liberal Arts and Sciences (CLAS) is the home of this
course, and CLAS governs the add and drop deadlines, academic misconduct
policies, and other policies and procedures. Other UI colleges may have
different policies.
Instructor Contact
Information
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 & Wednesday 2–4
Note: I’m here to help you learn and succeed. 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 email.
Graduate Teaching
Assistant
The class has one graduate teaching assistant (TA).
Ariel Kim
Office: 255H Psychological and Brain Sciences Building (PBSB)—ring the
bell at 255W, and she will let you in
Student drop-in hours: Wednesday 11:20–12:20 & Friday
1:10–2:10
E-mail: nam-yoon-kim@uiowa.edu
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: Janeil Page-Jamison (janeil-page@uiowa.edu;
384-3657)
Departmental Executive Officer (DEO)/Department Chair: Professor
Blumberg (mark-blumberg@uiowa.edu;
335-2424)
Prerequisites
The Department of Psychological and Brain Sciences has a hierarchical
course structure that requires students to complete certain prerequisite
courses before taking upper-level courses. This course requires
successful completion (C- or higher) of Elementary Psychology,
Introduction to Clinical Psychology, and Research Methods in Psychology.
The department will check student records to ensure completion of course
prerequisites.
Description of
Course
This course satisfies the upper-level elective requirement for
Psychological and Brain Sciences majors. Additionally, students with
broad interests in health and development will find this course useful.
The goal of this course is to provide students with a comprehensive
introduction to child and adolescent psychopathology. This includes an
emphasis on the developmental psychopathology framework and involves
thinking critically about the causes, consequences, ongoing questions,
and preventative challenges of child psychopathology facing scientists,
youth and their families, clinicians, and society. We apply elements of
the developmental psychopathology model to a range of childhood
disorders. Within each syndrome, possible genetic, neurobiological,
psychological, familial, and socio-cultural causal factors will be
scrutinized. We will also review and discuss risk and resilience factors
for child psychopathology (individual, family, community) as well as
models of treatment and prevention. You are urged to reconsider your
decision to take this class if you are reluctant to examine these topics
in a scientific manner.
Learning Outcomes
At the end of this course, you will be able to:
- Identify the symptoms and course of psychological disorders in
childhood.
- Distinguish the various risk factors that contribute to
psychopathology in childhood.
- Identify factors that may protect against the development of
psychopathology and promote resilience.
- Describe different methods for treatment and prevention of
psychological disorders in childhood.
- Critique, analyze, and synthesize original source articles in
developmental psychopathology.
- Produce an APA-style literature review that integrates empirical
findings in developmental psychopathology.
Required
Materials
Textbook
To provide you with a textbook for as low cost as possible, you will
be provided an eText of the following book via ICON Direct, unless you
opt out:
Mash, E. J., Wolfe, D. A., & Williams, K. N. (2023).
Childhood psychopathology (8th Ed.). Cengage.
Your U-Bill will be charged automatically after your course has
started, unless you opt out prior to
the last day for tuition and fee reduction course deadline.
For frequently asked questions about ICON Direct, including how to
access the eText, see here.
However, if you want to purchase a hardcopy of the textbook (for a
higher cost) you may opt out of the
eText via ICON Direct. For instructions how to opt out of ICON Direct,
see here.
However, if you opt out, please note:
- You risk falling behind in the course if you have not acquired
alternate versions of the same materials prior to the first day of the
class.
- Instructors are not responsible for providing you with alternative
materials or waiving course/class requirements.
Articles
NOTE: UPDATE ICON WITH MCARTHUR ARTICLE (TO REPLACE
CHRISTAKIS ARTICLE FOR LIT CRITIQUE)
In addition to the textbook, additional required readings for
selected topics will include the following articles. PDFs of these
articles can be found on ICON.
- Shea, S. E., Gordon, K., Hawkins, A., Kawchuk, J., & Smith, D.
(2000). Pathology in the hundred acre wood: A neurodevelopmental
perspective on A.A. Milne. Canadian Medical Association Journal,
163(12), 1557–1559. https://www.cmaj.ca/content/cmaj/163/12/1557.full.pdf
(Just for fun! 😊)
- Ra, C. K., Cho, J., Stone, M. D., De La Cerda, J., Goldenson, N. I.,
Moroney, E., Tung, I., Lee, S. S., & Leventhal, A. M. (2018).
Association of digital media use with subsequent symptoms of
attention-deficit/hyperactivity disorder among adolescents. JAMA,
320(3), 255–263. https://doi.org/10.1001/jama.2018.8931
- McArthur, B. A., Tough, S., & Madigan, S. (2022). Screen time
and developmental and behavioral outcomes for preschool children.
Pediatric Research, 91(6), 1616–1621. https://doi.org/10.1038/s41390-021-01572-w
- Thapar, A., Rice, F., Hay, D., Boivin, J., Langley, K., van den
Bree, M., Rutter, M., & Harold, G. (2009). Prenatal smoking might
not cause attention-deficit/hyperactivity disorder: Evidence from a
novel design. Biological Psychiatry, 66(8), 722–727. https://doi.org/10.1016/j.biopsych.2009.05.032
- Ozonoff, S., Iosif, A.-M., Baguio, F., Cook, I. C., Hill, M. M.,
Hutman, T., Rogers, S. J., Rozga, A., Sangha, S., Sigman, M., Steinfeld,
M. B., & Young, G. S. (2010). A prospective study of the emergence
of early behavioral signs of autism. Journal of the American Academy
of Child & Adolescent Psychiatry, 49(3), 256–266.e252. https://doi.org/10.1016/j.jaac.2009.11.009
- Frick, P. J. (2012). Developmental pathways to conduct disorder:
Implications for future directions in research, assessment, and
treatment. Journal of Clinical Child & Adolescent Psychology,
41(3), 378–389. https://doi.org/10.1080/15374416.2012.664815
- How to Write a Literature Review.
- Kendall, P. C., Settipani, C. A., & Cummings, C. M. (2012). No
need to worry: The promising future of child anxiety research.
Journal of Clinical Child & Adolescent Psychology, 41(1),
103–115. https://doi.org/10.1080/15374416.2012.632352
- Stringaris, A., Vidal-Ribas, P., Brotman, M. A., & Leibenluft,
E. (2018). Practitioner Review: Definition, recognition, and treatment
challenges of irritability in young people. Journal of Child
Psychology and Psychiatry, 59(7), 721–739. https://doi.org/10.1111/jcpp.12823
- Stice, E., South, K., & Shaw, H. (2012). Future directions in
etiologic, prevention, and treatment research for eating disorders.
Journal of Clinical Child & Adolescent Psychology, 41(6),
845–855. https://doi.org/10.1080/15374416.2012.728156
- Young, R., Sproeber, N., Groschwitz, R. C., Preiss, M., &
Plener, P. L. (2014). Why alternative teenagers self-harm: Exploring the
link between non-suicidal self-injury, attempted suicide and adolescent
identity. BMC Psychiatry, 14(1), 137. https://doi.org/10.1186/1471-244X-14-137
- Colvert, E., Rutter, M., Kreppner, J., Beckett, C., Castle, J.,
Groothues, C., Hawkins, A., Stevens, S., & Sonuga-Barke, E. J. S.
(2008). Do theory of mind and executive function deficits underlie the
adverse outcomes associated with profound early deprivation?: Findings
from the English and Romanian adoptees study. Journal of Abnormal
Child Psychology, 36(7), 1057–1068. https://doi.org/10.1007/s10802-008-9232-x
- Nelson, C. A., III, Zeanah, C. H., Fox, N. A., Marshall, P. J.,
Smyke, A. T., & Guthrie, D. (2007). Cognitive recovery in socially
deprived young children: The Bucharest Early Intervention Project.
Science, 318(5858), 1937–1940. https://doi.org/10.1126/science.1143921
- Davis, E. P., Glynn, L. M., Schetter, C. D., Hobel, C., Chicz-Demet,
A., & Sandman, C. A. (2007). Prenatal exposure to maternal
depression and cortisol influences infant temperament. Journal of
the American Academy of Child & Adolescent Psychiatry, 46(6),
737–746. https://doi.org/10.1097/chi.0b013e318047b775
- Burke, J. D., Pardini, D. A., & Loeber, R. (2008). Reciprocal
relationships between parenting behavior and disruptive psychopathology
from childhood through adolescence. Journal of Abnormal Child
Psychology, 36(5), 679–692. https://doi.org/10.1007/s10802-008-9219-7
- Cummings, E. M., Goeke-Morey, M. C., & Papp, L. M. (2004).
Everyday marital conflict and child aggression. Journal of Abnormal
Child Psychology, 32(2), 191–202. https://doi.org/10.1023/B:JACP.0000019770.13216.be
- McDonough, M. H., Jose, P. E., & Stuart, J. (2016).
Bi-directional effects of peer relationships and adolescent substance
use: A longitudinal study. Journal of Youth and Adolescence,
45(8), 1652–1663. https://doi.org/10.1007/s10964-015-0355-4
- Bonanno, R. A., & Hymel, S. (2013). Cyber bullying and
internalizing difficulties: Above and beyond the impact of traditional
forms of bullying. Journal of Youth and Adolescence, 42(5),
685–697. https://doi.org/10.1007/s10964-013-9937-1
- Chung, H. L., & Steinberg, L. (2006). Relations between
neighborhood factors, parenting behaviors, peer deviance, and
delinquency among serious juvenile offenders. Developmental
Psychology, 42(2), 319–331. https://doi.org/10.1037/0012-1649.42.2.319
- Collishaw, S., Pickles, A., Messer, J., Rutter, M., Shearer, C.,
& Maughan, B. (2007). Resilience to adult psychopathology following
childhood maltreatment: Evidence from a community sample. Child
Abuse & Neglect, 31(3), 211–229. https://doi.org/10.1016/j.chiabu.2007.02.004
- Conduct Problems Prevention Research Group. (2011). The effects of
the fast track preventive intervention on the development of conduct
disorder across childhood. Child Development, 82(1), 331–345.
https://doi.org/10.1111/j.1467-8624.2010.01558.x
Academic Honesty and
Misconduct
All students in CLAS courses are expected to abide by the college’s
standards 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). In addition, you are expected to follow the
course’s policy on the use of artificial intelligence (AI), which is
outlined below.
Artificial
Intelligence (AI) Policy
Because writing, analytical, and critical thinking skills are part of
the learning outcomes of this course, all work submitted by students
should be prepared by the student. You are training these cognitive
muscles; if you go to the gym, you would not have AI lift the weights
for you. For these reasons, AI-generated submissions are not permitted
and will be treated as plagiarism. Learning these core foundational
skills will make you a better user of AI in the future, because you will
be better-positioned in the future to critically evaluate AI responses
and to identify when (and the ways in which) its responses are
inaccurate. Moreover, in many industries, use of AI is not permitted
because you cannot share the company’s proprietary information. Thus,
developing strong competencies in these domains (without the use of AI)
will prepare you for a competitive workplace.
Course Requirements
and Policies
Lecture
We will meet three times weekly for lectures, at the time and
location described above. My powerpoint
presentations for the lectures will be posted on ICON no later than noon on the day
before the 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. If you have questions about the lecture notes or need
clarification of any of the points, please ask in class or meet with the
TA or Professor Petersen during office hours. If you miss class and/or
need help catching up on the notes, please make an appointment with the
TA.
Attendance and
Participation
Attendance at lectures is required and will be checked and factored
into final grades (see grading section below).
There are 43 lectures during the semester (excluding examinations). You
will receive one point for attendance at each lecture up to 40 points
(i.e., you will not receive extra credit for attending all 43 lectures).
Thus, you will not be penalized for missing up to 3 lectures.
However, you will be responsible for learning any material missed for
quizzes and exams, and I strongly encourage you to attend all lectures.
Poor lecture attendance is likely to affect the quality of students’
work and success in the course.
Students who miss more than 3 lectures due to participation in
University activities must give the instructor a statement before the
absence signed by a responsible official that specifies the dates
and times the student will miss class. Authorized activities include
participation in athletic teams, the marching band or pep band, debate
teams, and other recognized University groups, as well as participation
in University field trips, service with the National Guard, and jury
duty. Absences due to illnesses or emergencies (that go over 3 lectures)
must be documented with the University of Iowa Absence
Explanation Form and sent to the TA within 48 hours of the absence.
Per university policy, if a student will be absent 5 or more
consecutive days and the absence is due to illness or other
emergency, please contact the Registrar Service Center at (319)
384-4300 or registrar@uiowa.edu.
Readings
Readings from your text are assigned by lecture topic. You should
read and take notes on the material before class. Past experience has
shown that to do well in this class you should read the assigned
material, attend lectures and take notes, and review your notes each
week. There is too much material being covered in this class to try to
study only by frantic preparation immediately before quizzes and
exams.
Workload
This is a 3 semester hour course. Students should therefore expect to
spend 6
additional hours per week (outside of class) reading the textbook
and articles, reviewing lecture material, preparing for quizzes and
exams, and completing writing assignments.
Quizzes
Six quizzes will be administered via the ICON website. Students are
allowed to use their textbook and lecture notes on the quizzes. However,
students may not work together on the quizzes. Questions will
be randomized and presented such that students must answer one question
at a time (i.e., students may not go back to a previous question in the
quiz). Quizzes will consist of approximately 20–30 multiple choice
or very short answer questions. Although students may take the quiz at
any time when it is available, students must complete the quiz within
2 hours. 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.
Although students will have access to their course materials during
the quiz, reading and advanced preparation will be necessary to do well
on the quizzes. Material for quiz questions will be taken from
required readings (texts and articles) as well as from lecture
material. Quiz due dates and topics will be announced in class and
via email and are listed below. All quizzes should be submitted to ICON by 11:59 p.m. on the due
date.
1 |
9/4 – 9/11 |
History/D&P Model, Theories & Causes, Research with
Children |
2 |
9/22 – 9/29 |
ADHD, ASD, Intellectual Disability, Specific Learning Disorder |
3 |
10/20 – 10/27 |
CD, Anxiety, Depression, Bipolar, DMDD |
4 |
11/1 – 11/8 |
Elimination, Eating, Substance-Related Disorders, Self-Injury |
5 |
11/15 – 11/29 |
Maltreatment and Resilience |
6 |
12/1 – 12/8 |
Levels of Analysis Articles, Prevention |
Examinations
There will be 2 exams; one mid-term exam and one non-cumulative final
exam. Exam 1 will be administered during class time. The date, time, and
location of the final exam will be announced by the 5th week of class by
the College of Liberal Arts and Sciences; the duration of the final exam
will be 120 minutes. Each exam will emphasize information presented for
the half of the class that precedes it. However, some integration of
information across sections will be required for questions on the final
exam. Exams will consist of short-answer and multiple choice questions
based upon both readings (texts and articles) and the lecture material.
Exam dates are listed below.
Exam 1 (Mid-Term Exam): Wednesday, October 4, 2025 during
class
Exam 2 (Final Exam): TBD during finals week (the date,
time, and location will be announced by the 5th week of class by the
College of Liberal Arts and Sciences)
Missing Exams
University
regulations require that students be allowed to make up examinations
that have been missed due to illness, religious holy days, military
service obligations (including service-related medical appointments), or
other unavoidable circumstances or University-sponsored activities.
Students with UI-authorized activities must discuss their absences with
the instructor as soon as possible. Religious obligations must be
communicated within the first three weeks of classes. See below for the
documentation necessary for an absence to be excused and to be eligible
to take a make-up exam.
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 (located in ICON under “Student Tools”) 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.
Literature
Critiques
You will be required to complete two literature critique assignments.
These assignments are designed to help you learn to critically analyze
original source articles in written form. Both assignments involve
providing a critique of a research article (Ra et al., 2018 – Article
#2, and McArthur et al., 2022 – Article #3). Both papers should be 2–3
pages long (double-spaced, APA format, 12-point Times New Roman font)
and will be turned in via ICON.
Each should be in essay form and carefully proofread for spelling and
grammatical errors. Students may not work together on the
critiques. More information on how to structure the critiques will
be provided in class. Note: Turnitin will be used via ICON to check for plagiarism of a
fellow student and from the internet. The critiques are due on
Monday, August 28 and Friday, September 8 by 11:59 p.m.
Literature
Review
You will be required to write a literature review on a topic
related to child psychopathology. The topic of the paper is completely
up to the student; the only requirement is that it must be relevant to
psychopathology in children or adolescents. The paper must include a
review and analysis of at least 5 empirical articles on the topic,
published since 2000. You are encouraged to work with the UI Writing Center in revising
your paper.
Stages
Overview
This paper will be completed in 6 stages, all uploaded to ICON:
- Generate a topic
- Identify articles
- Understand findings from articles
- Write a complete draft
- Give and receive feedback
- Incorporate feedback and polish writing
The goals of this project are for each student to produce a
thoughtful paper that describes an aspect of this course that captured
their interest and to gain more experience with scientific writing. Each
stage of the process will be discussed in class, so attendance is
critical. Additionally, grading rubrics for each stage will be posted so
that students understand the basis for evaluation of each stage of the
assignment. Successful completion of this assignment requires students
to adhere closely to the deadlines outlined. For this reason,
substantial penalties will be applied to all late work (20% off final
grade for each day the assignment is late). Further, to make sure the
peer review process for first drafts is successful, any first drafts
submitted after the deadline of Friday, November 3 will receive a zero
and will not receive a peer review (the student will still receive
instructor feedback). If you have concerns about meeting one of the
literature review deadlines, please contact Professor Petesen or the TA
as soon as possible to discuss. All assignments should be uploaded
to ICON by 11:59 p.m. on the due
date.
The stages—and deadlines—are described below:
Deadlines
The workflow of the literature review stages, their respective
percentages in the total literature review grade, and relevant due dates
are listed below.
1 |
Develop a topic description (2 sentences) and 3–5
keywords you will then use to conduct a literature search using
Google Scholar, PsycINFO, and/or PubMed. |
2.5% |
9/15 |
2 |
Identify and generate a list of 5 empirical
articles that you will include in your review based on your
searches of Google
Scholar, PsycINFO, and/or PubMed. |
2.5% |
9/25 |
3 |
Write brief summaries of each of the 5 empirical
articles that includes clear descriptions of both the methodology and
relevant findings. |
10% |
10/16 |
4 |
Compose a complete first draft of the review that
includes an introduction with thesis, description, critique, and
integration of the 5 empirical studies. |
25% |
11/3 |
5a |
Peer reviews are assigned. |
– |
11/6 |
5b |
Give feedback by providing anonymous peer review of
another student’s paper. |
10% |
11/27 |
5c |
Receive feedback from peer and from
instructor. |
– |
11/29 |
6 |
Incorporate feedback and produce a final
document. |
50% |
12/8 |
Stage 1:
Generate a Topic
You will first develop a topic and a set of keywords for your paper.
For the review format, this involves generating a specific topic and
keywords you will then use to conduct a literature search using Google Scholar, PsycINFO, and/or PubMed. We will discuss
strategies for generating topics and keywords in class, and examples
will be provided. By the deadline, you will
turn in a summary of your research topic (1–2 sentences) and a list of
keywords that will start your literature search.
Stage 2:
Identify Articles
After your topic has been approved, you will then conduct a search to
identify the articles for your paper. You will search PsychINFO or
PubMed and identify a minimum of five empirical articles that are all
relevant to your topic. As we will discuss in class, it is important to
define your topic carefully so that all of your identified articles are
addressing common components. By the deadline, you will turn in your list of
articles.
Stage 3:
Understand Findings from Articles
Once you have identified the five papers you wish to write about, you
will then produce brief summaries of each article that include a
description of the methods employed by the researchers and their basic
findings (2–4 paragraphs per article for each of your five articles).
You will also include your reference list, in APA style. By the deadline, you will turn in your article
summaries.
Stage 4: Write a
Complete Draft
Next, you will write and turn in a complete draft of your paper. The
systematic review should include both description of the empirical
studies you’ve included as well as analysis, critique, and integration
of findings. For this stage, you will also generate a thesis that
describes the overall message of your review and you will work to
demonstrate how each article is (or is not) supportive of your thesis.
The goal of this stage is to develop your ideas and argument so that you
can receive feedback. By the deadline, you
will turn in your first draft of the paper. Note: you must turn in a
complete draft of your paper—not an outline.
Stage 5: Give
and Receiving Feedback
Following submission of your first draft, all students will receive
detailed feedback from the instructor, which will include critique of
content, organization, and argument. Additionally each student will
complete an anonymous peer review of a fellow student’s paper (your
draft will also be peer reviewed). Peer reviews will be blinded and only
I (the instructor) will know which papers belong to which students.
Reviews will be assigned in class. More details about providing an
appropriate review and the formatting will be provided in class. By
the deadline, you will turn in your review of
the peer’s paper. The instructor will then re-distribute the peer
reviews to authors.
Stage 6:
Incorporating Feedback and Polishing Writing
You will receive comments from the instructor and from your peer
reviewer via email. You will then use these comments to revise your
paper. Your final paper must include a cover letter that details
the changes you made to your draft based on feedback from the instructor
as well as from your peer reviewer. Additionally, students are
encouraged to meet with the TA during the week of November 27 to review
their feedback and discuss plans for revision. By the deadline, you will submit the literature
review. The literature review should include the manuscript itself
as well as a cover letter describing the changes made in response to
comments from the instructor and the peer reviewer.
Grading System and the
Use of +/-
Final grades will be assigned at the end of the semester on the basis
of your total percentage of points earned on quizzes, examinations,
written assignments, and lecture attendance, as detailed below. Grades
will be assigned on an absolute scale (criterion-referenced grading; see
below); 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. Additionally, a penalty of 20% per day will be applied to all
assignments turned in late. Final grades will be assigned based on the
following ranges:
A+ |
97–100% |
A |
93–96 |
A− |
90–92 |
B+ |
87–89 |
B |
83–86 |
B− |
80–82 |
C+ |
77–79 |
C |
73–76 |
C− |
70–72 |
D+ |
67–69 |
D |
63–66 |
D− |
60–62 |
F |
0–59 |
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+.
Course Grades
Final course grades will be assessed based on your performance in the
activities below. The relative contribution of each component to your
final grade is as follows:
Tentative Course
Outline (exam dates fixed)
8/21 |
History of Child Psychopathology |
MWW Ch. 1 |
|
8/23 |
Developmental Psychopathology |
MWW Ch. 1; Article 1 |
|
8/25 |
Theories & Causes |
MWW Ch. 2; Article 2 |
|
8/28 |
Theories & Causes |
MWW Ch. 2 |
Critique 1 Due (Article 2) |
8/30 |
Research with Children |
MWW Ch. 3; Article 3 |
|
9/1 |
Conducting a Literature Search |
|
|
9/4 |
No Class – Labor Day |
|
Quiz 1 Opens |
9/6 |
DSM Assessment & Diagnosis |
MWW Ch. 4 |
|
9/8 |
Attention-Deficit Hyperactivity Disorder |
MWW Ch. 8 |
Critique 2 Due (Article 3) |
9/11 |
Attention-Deficit Hyperactivity Disorder |
MWW Ch. 8 |
Quiz 1 Closes |
9/13 |
Attention-Deficit Hyperactivity Disorder |
MWW Ch. 8; Article 4 |
|
9/15 |
Autism Spectrum Disorders |
MWW Ch. 6 |
Topic and Keywords Due |
9/18 |
Autism Spectrum Disorders |
MWW Ch. 6 |
|
9/20 |
Autism Spectrum Disorders/Writing Article
Summaries |
MWW Ch. 6; Article 5 |
|
9/22 |
Research Day – Work on Paper |
|
Quiz 2 Opens |
9/25 |
Intellectual Disability |
MWW Ch. 5 |
List of Articles Due |
9/27 |
Intellectual Disability/Learning Disorders |
MWW Ch. 5 |
|
9/29 |
Learning Disorders |
MWW Section 7.4 (“Specific Learning Disorder”) through
the end of the chapter |
Quiz 2 Closes |
10/2 |
Catch-Up and Exam Review |
|
|
10/4 |
MIDTERM EXAM IN CLASS |
|
|
10/6 |
Conduct Problems |
MWW Ch. 9 |
|
10/9 |
Conduct Problems |
MWW Ch. 9; Article 6 |
|
10/11 |
Writing a Literature Review |
Article 7 |
|
10/13 |
Anxiety Disorders |
MWW Ch. 11 |
|
10/16 |
Anxiety Disorders |
MWW Ch. 11 |
Article Summaries Due |
10/18 |
Anxiety Disorders |
MWW Ch. 11; Article 8 |
|
10/20 |
Depression |
MWW Ch. 10 |
Quiz 3 Opens |
10/23 |
Depression |
MWW Ch. 10 |
|
10/25 |
Bipolar Disorder/DMDD |
MWW Ch. 10; Article 9 |
|
10/27 |
Elimination/Feeding Disorders |
MWW Section 13.3: (“Elimination Disorders”, “Enuresis”,
and “Encopresis”); MWW Ch. 14 |
Quiz 3 Closes |
10/30 |
Eating Disorders |
MWW Ch. 14 |
|
11/1 |
Eating Disorders |
Article 10 |
Quiz 4 Opens |
11/3 |
Substance Use and Risk-Taking |
MWW Section 13.5 (“Adolescent Substance-Use Disorders”)
through the end of the chapter |
1st Draft Due |
11/6 |
Suicide and Self-Injury |
Article 11 |
Peer Reviews Assigned |
11/8 |
Child Maltreatment & Trauma |
MWW Ch. 12 |
Quiz 4 Closes |
11/10 |
Child Maltreatment & Trauma |
MWW Ch. 12 |
|
11/13 |
Child Maltreatment & Trauma |
Articles 12 & 13 |
|
11/15 |
Individual Differences |
Article 14 |
Quiz 5 Opens |
11/17 |
Parenting |
Article 15 |
|
11/20–11/24 |
FALL BREAK – NO CLASSES |
|
|
11/27 |
Divorce and Marital Conflict |
Article 16 |
Peer Review Due |
11/29 |
Peer Relationships & Bullying |
Articles 17 & 18 |
Quiz 5 Closes; Receive
Reviews |
12/1 |
Neighborhood Factors |
Article 19 |
Quiz 6 Opens |
12/4 |
Resilience |
Article 20 |
|
12/6 |
Prevention Science |
Article 21 |
|
12/8 |
Catch-Up/Final Exam Review in Class |
|
Quiz 6 Closes; Final Paper
Due |
12/8 |
FINAL PAPER DUE |
|
|
|
FINAL EXAM TBD (Week of
12/11–12/15) |
|
|
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 the 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 scheduled for the same day (see the policy
here).
Course Resources
There are many course resources available to help you succeed in the
class, including:
- the textbook and readings
- lectures and slides
- getting and reviewing missed notes from a peer
- TA office hours
- instructor office hours
- peer study groups
- the UI Writing
Center
- Tutor Iowa: https://tutor.uiowa.edu
Drop Deadline for this
Course
You may drop an individual course before the drop 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. To discuss how dropping
(or staying in) a course might affect your academic goals, please
contact your Academic Advisor. 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 CLAS courses here.
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.
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
DEO (Chair) of the department, school, or program offering the course.
Sometimes students will be referred to the department or program’s
Director of Undergraduate Studies (DUS) or Director of Graduate Studies
(DGS). Students should contact CLAS
Undergraduate Programs for support when the matter is not resolved
at the previous level.
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. For the
privacy and the protection of student records, UI faculty and staff can
only correspond with UI email addresses.
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 TA, 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.
University
Policies
University
Policies
Accommodations
for Students with Disabilities
The University is committed to providing an educational experience that
is accessible to all students. If a student has a diagnosed disability
or other disabling condition that may impact the student’s ability to
complete the course requirements as stated in the syllabus, the student
may seek accommodations through Student Disability
Services (SDS). SDS is responsible for making Letters
of Accommodation (LOA) available to the student. The student must
provide a LOA to the instructor as early in the semester as possible,
but requests not made at least two weeks prior to the scheduled activity
for which an accommodation is sought may not be accommodated. The
LOA will specify what reasonable course accommodations the student is
eligible for and those the instructor should provide. Additional
information can be found on the SDS
website.
Class
Recordings
Students may be enrolled in a class where some sessions will be recorded
or live-streamed. Such recordings/streaming will only be available to
students registered for the class. These recordings are the intellectual
property of the instructor and they may not be shared or reproduced
without the explicit, written consent of the instructor. Further,
students may not share these sessions with those not in the class or
upload them to any other online environment. Doing so would be a breach
of the Code of Student Conduct, and, in some cases, a violation of state
and federal law, including the Federal Education Rights and Privacy Act
(FERPA).
The unauthorized video or audio recording of academic activities
(e.g., lectures, course discussions, office hours, etc.) by a student is
prohibited. Students with a reasonable accommodation for recording
approved by Student Disability Services should notify each instructor
and provide the Letter of Accommodation prior to using the
accommodation. A student may record classroom activities with prior
written permission from the instructor and notice to other students in
the class that audio or video recording may occur. Any and all classroom
recording must be for personal academic use only. The distribution,
sharing, sale, or posting of recordings on the internet (including
social media), in whole or in part, is prohibited and doing so may be a
violation of the Code of Student Life and/or state or federal privacy,
copyright, or other laws.
Where to Get Academic
Support for This Course
Mental Health
Resources and Student Support
Students are encouraged to be mindful of their mental health and seek
help as a preventive measure or if feeling overwhelmed and/or struggling
to meet course expectations. Students are encouraged to talk to their
instructor for assistance with specific class-related concerns. For
additional support and counseling, students are encouraged to contact
University Counseling Service (UCS). Information about UCS, including
resources and how to schedule an appointment, can be found at counseling.uiowa.edu. Find out
more about UI mental health services at: mentalhealth.uiowa.edu,
including the 24-7 UI
Support and Crisis Line.
Additionally, the Office of the Dean of Students can help students
navigate personal crisis situations. They can provide one-on-one
support, help with identifying options, and access to basic needs resources (such as food,
rent, childcare, etc.). Student Care and Assistance: 132 IMU, dos-assistance@uiowa.edu, or
319-335-1162 and more info: dos.uiowa.edu/assistance
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:
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.
Disclaimer
This syllabus is subject to change. Any changes will be discussed in
class, via email, and/or on ICON.
LS0tCnRpdGxlOiAiQ291cnNlIFN5bGxhYnVzIgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICBlY2hvID0gVFJVRSwKICBlcnJvciA9IFRSVUUsCiAgY29tbWVudCA9ICIiKQpgYGAKCkxhc3QgVXBkYXRlZDogYHIgZm9ybWF0KFN5cy5EYXRlKCksICIlbS8lZC8lWSIpYAoKIyBDb3Vyc2UgVGl0bGUgeyN0aXRsZX0KClBTWSAzMzMwIOKAkyBDaGlsZGhvb2QgUHN5Y2hvcGF0aG9sb2d5IChGYWxsIDIwMjUpCgojIENvdXJzZSBNZWV0aW5nIFRpbWUgYW5kIFBsYWNlIHsjbGVjdHVyZVRpbWV9CgpNb25kYXksIFdlZG5lc2RheSwgJiBGcmlkYXkgMTA6MzDigJMxMToyMCBhLm0uLCAxNTggVmFuIEFsbGVuIChWQU4pCgojIENvdXJzZSBXZWJzaXRlIHsjd2Vic2l0ZX0KCmh0dHBzOi8vaWNvbi51aW93YS5lZHUKClRvIGFjY2VzcyB0aGUgY291cnNlIHNpdGUsIGxvZyBpbnRvIFtJb3dhIENvdXJzZXMgT25saW5lIChJQ09OKV0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkgdXNpbmcgeW91ciBIYXdrIElEIGFuZCBwYXNzd29yZC4KCiMgQ291cnNlIEhvbWUgeyNob21lfQoKVGhlIFVuaXZlcnNpdHkgb2YgSW93YVwKVGhlIENvbGxlZ2Ugb2YgTGliZXJhbCBBcnRzIGFuZCBTY2llbmNlc1wKRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcwoKVGhlIENvbGxlZ2Ugb2YgTGliZXJhbCBBcnRzIGFuZCBTY2llbmNlcyAoQ0xBUykgaXMgdGhlIGhvbWUgb2YgdGhpcyBjb3Vyc2UsIGFuZCBDTEFTIGdvdmVybnMgdGhlIGFkZCBhbmQgZHJvcCBkZWFkbGluZXMsIGFjYWRlbWljIG1pc2NvbmR1Y3QgcG9saWNpZXMsIGFuZCBvdGhlciBwb2xpY2llcyBhbmQgcHJvY2VkdXJlcy4KT3RoZXIgVUkgY29sbGVnZXMgbWF5IGhhdmUgZGlmZmVyZW50IHBvbGljaWVzLgoKIyBJbnN0cnVjdG9yIENvbnRhY3QgSW5mb3JtYXRpb24geyNpbnN0cnVjdG9yfQoKW1Byb2Zlc3NvciBQZXRlcnNlbl0oaHR0cHM6Ly9wc3ljaG9sb2d5LnVpb3dhLmVkdS9wZW9wbGUvaXNhYWMtcGV0ZXJzZW4pXApPZmZpY2U6IDE3NSBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBCdWlsZGluZyAoUEJTQilcCkUtbWFpbDogW2lzYWFjLXQtcGV0ZXJzZW5AdWlvd2EuZWR1XShtYWlsdG86aXNhYWMtdC1wZXRlcnNlbkB1aW93YS5lZHUpXApPZmZpY2UgUGhvbmU6IDQ2Ny0xMDE0XApTdHVkZW50IGRyb3AtaW4gaG91cnM6IE1vbmRheSAxMToyMOKAkzEyOjIwICYgV2VkbmVzZGF5IDLigJM0XApOb3RlOiBJJ20gaGVyZSB0byBoZWxwIHlvdSBsZWFybiBhbmQgc3VjY2VlZC4KUGxlYXNlIGNvbWUgdG8gbXkgb2ZmaWNlIGhvdXJzIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY291cnNlIG1hdGVyaWFsLCBhc3NpZ25tZW50cywgZXhhbXMsIG9yIHByb2Zlc3Npb25hbCBkZXZlbG9wbWVudCAoY2FyZWVyLXJlbGF0ZWQgaXNzdWVzKSwgZm9yIGluc3RhbmNlLgpJIHdlbGNvbWUgeW91IHRvIGRpc2N1c3MgYW55IGNvbmNlcm5zIHlvdSBtaWdodCBoYXZlIGFib3V0IHRoZSBjbGFzcy4KSSBhbSBhbHNvIGF2YWlsYWJsZSB0byBtZWV0IHdpdGggeW91IGJ5IGFwcG9pbnRtZW50LCBhbHRob3VnaCBJIHdvdWxkIGFwcHJlY2lhdGUgeW91ciBtYWtpbmcgZXZlcnkgZWZmb3J0IHRvIHNlZSBtZSBkdXJpbmcgb2ZmaWNlIGhvdXJzLgpUaGUgYmVzdCB3YXkgdG8gcmVhY2ggbWUgb3V0c2lkZSBvZiBjbGFzcyBpcyBieSBlbWFpbC4KCiMgR3JhZHVhdGUgVGVhY2hpbmcgQXNzaXN0YW50IHsjVEF9CgpUaGUgY2xhc3MgaGFzIG9uZSBncmFkdWF0ZSB0ZWFjaGluZyBhc3Npc3RhbnQgKFRBKS4KCkFyaWVsIEtpbVwKT2ZmaWNlOiAyNTVIIFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzIEJ1aWxkaW5nIChQQlNCKeKAlHJpbmcgdGhlIGJlbGwgYXQgMjU1VywgYW5kIHNoZSB3aWxsIGxldCB5b3UgaW5cClN0dWRlbnQgZHJvcC1pbiBob3VyczogV2VkbmVzZGF5IDExOjIw4oCTMTI6MjAgJiBGcmlkYXkgMToxMOKAkzI6MTBcCkUtbWFpbDogbmFtLXlvb24ta2ltQHVpb3dhLmVkdQoKIyBEZXBhcnRtZW50YWwgUmVzb3VyY2VzIHsjZGVwdFJlc291cmNlc30KCkRlcGFydG1lbnQgb2YgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXM6IFtodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1XShodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1KVwKRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBNYWluIE9mZmljZTogRzYwIFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzIEJ1aWxkaW5nICgzMzUtMjQwNilcCkNvb3JkaW5hdG9yIG9mIFVuZGVyZ3JhZHVhdGUgU3R1ZGllczogUHJvZmVzc29yIFdpbmRzY2hpdGwgKFtwYXVsLXdpbmRzY2hpdGxAdWlvd2EuZWR1XShtYWlsdG86cGF1bC13aW5kc2NoaXRsQHVpb3dhLmVkdSk7IDMzNS0zNjgxKVwKQWNhZGVtaWMgQ29vcmRpbmF0b3I6IEphbmVpbCBQYWdlLUphbWlzb24gKFtqYW5laWwtcGFnZUB1aW93YS5lZHVdKG1haWx0bzpqYW5laWwtcGFnZUB1aW93YS5lZHUpOyAzODQtMzY1NylcCkRlcGFydG1lbnRhbCBFeGVjdXRpdmUgT2ZmaWNlciAoREVPKS9EZXBhcnRtZW50IENoYWlyOiBQcm9mZXNzb3IgQmx1bWJlcmcgKFttYXJrLWJsdW1iZXJnQHVpb3dhLmVkdV0obWFpbHRvOm1hcmstYmx1bWJlcmdAdWlvd2EuZWR1KTsgMzM1LTI0MjQpCgojIFByZXJlcXVpc2l0ZXMgeyNwcmVyZXFzfQoKVGhlIERlcGFydG1lbnQgb2YgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXMgaGFzIGEgaGllcmFyY2hpY2FsIGNvdXJzZSBzdHJ1Y3R1cmUgdGhhdCByZXF1aXJlcyBzdHVkZW50cyB0byBjb21wbGV0ZSBjZXJ0YWluIHByZXJlcXVpc2l0ZSBjb3Vyc2VzIGJlZm9yZSB0YWtpbmcgdXBwZXItbGV2ZWwgY291cnNlcy4KVGhpcyBjb3Vyc2UgcmVxdWlyZXMgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIChDLSBvciBoaWdoZXIpIG9mIEVsZW1lbnRhcnkgUHN5Y2hvbG9neSwgSW50cm9kdWN0aW9uIHRvIENsaW5pY2FsIFBzeWNob2xvZ3ksIGFuZCBSZXNlYXJjaCBNZXRob2RzIGluIFBzeWNob2xvZ3kuClRoZSBkZXBhcnRtZW50IHdpbGwgY2hlY2sgc3R1ZGVudCByZWNvcmRzIHRvIGVuc3VyZSBjb21wbGV0aW9uIG9mIGNvdXJzZSBwcmVyZXF1aXNpdGVzLiAgCgojIERlc2NyaXB0aW9uIG9mIENvdXJzZSB7I2Rlc2NyaXB0aW9ufQoKVGhpcyBjb3Vyc2Ugc2F0aXNmaWVzIHRoZSB1cHBlci1sZXZlbCBlbGVjdGl2ZSByZXF1aXJlbWVudCBmb3IgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXMgbWFqb3JzLgpBZGRpdGlvbmFsbHksIHN0dWRlbnRzIHdpdGggYnJvYWQgaW50ZXJlc3RzIGluIGhlYWx0aCBhbmQgZGV2ZWxvcG1lbnQgd2lsbCBmaW5kIHRoaXMgY291cnNlIHVzZWZ1bC4gClRoZSBnb2FsIG9mIHRoaXMgY291cnNlIGlzIHRvIHByb3ZpZGUgc3R1ZGVudHMgd2l0aCBhIGNvbXByZWhlbnNpdmUgaW50cm9kdWN0aW9uIHRvIGNoaWxkIGFuZCBhZG9sZXNjZW50IHBzeWNob3BhdGhvbG9neS4KVGhpcyBpbmNsdWRlcyBhbiBlbXBoYXNpcyBvbiB0aGUgZGV2ZWxvcG1lbnRhbCBwc3ljaG9wYXRob2xvZ3kgZnJhbWV3b3JrIGFuZCBpbnZvbHZlcyB0aGlua2luZyBjcml0aWNhbGx5IGFib3V0IHRoZSBjYXVzZXMsIGNvbnNlcXVlbmNlcywgb25nb2luZyBxdWVzdGlvbnMsIGFuZCBwcmV2ZW50YXRpdmUgY2hhbGxlbmdlcyBvZiBjaGlsZCBwc3ljaG9wYXRob2xvZ3kgZmFjaW5nIHNjaWVudGlzdHMsIHlvdXRoIGFuZCB0aGVpciBmYW1pbGllcywgY2xpbmljaWFucywgYW5kIHNvY2lldHkuIApXZSBhcHBseSBlbGVtZW50cyBvZiB0aGUgZGV2ZWxvcG1lbnRhbCBwc3ljaG9wYXRob2xvZ3kgbW9kZWwgdG8gYSByYW5nZSBvZiBjaGlsZGhvb2QgZGlzb3JkZXJzLiAKV2l0aGluIGVhY2ggc3luZHJvbWUsIHBvc3NpYmxlIGdlbmV0aWMsIG5ldXJvYmlvbG9naWNhbCwgcHN5Y2hvbG9naWNhbCwgZmFtaWxpYWwsIGFuZCBzb2Npby1jdWx0dXJhbCBjYXVzYWwgZmFjdG9ycyB3aWxsIGJlIHNjcnV0aW5pemVkLgpXZSB3aWxsIGFsc28gcmV2aWV3IGFuZCBkaXNjdXNzIHJpc2sgYW5kIHJlc2lsaWVuY2UgZmFjdG9ycyBmb3IgY2hpbGQgcHN5Y2hvcGF0aG9sb2d5IChpbmRpdmlkdWFsLCBmYW1pbHksIGNvbW11bml0eSkgYXMgd2VsbCBhcyBtb2RlbHMgb2YgdHJlYXRtZW50IGFuZCBwcmV2ZW50aW9uLgoqWW91IGFyZSB1cmdlZCB0byByZWNvbnNpZGVyIHlvdXIgZGVjaXNpb24gdG8gdGFrZSB0aGlzIGNsYXNzIGlmIHlvdSBhcmUgcmVsdWN0YW50IHRvIGV4YW1pbmUgdGhlc2UgdG9waWNzIGluIGEgc2NpZW50aWZpYyBtYW5uZXIuKgoKIyBMZWFybmluZyBPdXRjb21lcyB7I2xlYXJuaW5nT3V0Y29tZXN9CgpBdCB0aGUgZW5kIG9mIHRoaXMgY291cnNlLCB5b3Ugd2lsbCBiZSBhYmxlIHRvOgoKLSBJZGVudGlmeSB0aGUgc3ltcHRvbXMgYW5kIGNvdXJzZSBvZiBwc3ljaG9sb2dpY2FsIGRpc29yZGVycyBpbiBjaGlsZGhvb2QuCi0gRGlzdGluZ3Vpc2ggdGhlIHZhcmlvdXMgcmlzayBmYWN0b3JzIHRoYXQgY29udHJpYnV0ZSB0byBwc3ljaG9wYXRob2xvZ3kgaW4gY2hpbGRob29kLiAgCi0gSWRlbnRpZnkgZmFjdG9ycyB0aGF0IG1heSBwcm90ZWN0IGFnYWluc3QgdGhlIGRldmVsb3BtZW50IG9mIHBzeWNob3BhdGhvbG9neSBhbmQgcHJvbW90ZSByZXNpbGllbmNlLgotIERlc2NyaWJlIGRpZmZlcmVudCBtZXRob2RzIGZvciB0cmVhdG1lbnQgYW5kIHByZXZlbnRpb24gb2YgcHN5Y2hvbG9naWNhbCBkaXNvcmRlcnMgaW4gY2hpbGRob29kLgotIENyaXRpcXVlLCBhbmFseXplLCBhbmQgc3ludGhlc2l6ZSBvcmlnaW5hbCBzb3VyY2UgYXJ0aWNsZXMgaW4gZGV2ZWxvcG1lbnRhbCBwc3ljaG9wYXRob2xvZ3kuCi0gUHJvZHVjZSBhbiBBUEEtc3R5bGUgbGl0ZXJhdHVyZSByZXZpZXcgdGhhdCBpbnRlZ3JhdGVzIGVtcGlyaWNhbCBmaW5kaW5ncyBpbiBkZXZlbG9wbWVudGFsIHBzeWNob3BhdGhvbG9neS4KCiMgUmVxdWlyZWQgTWF0ZXJpYWxzIHsjbWF0ZXJpYWxzfQoKIyMgVGV4dGJvb2sgeyN0ZXh0Ym9va30KClRvIHByb3ZpZGUgeW91IHdpdGggYSB0ZXh0Ym9vayBmb3IgYXMgbG93IGNvc3QgYXMgcG9zc2libGUsIHlvdSB3aWxsIGJlIHByb3ZpZGVkIGFuIGVUZXh0IG9mIHRoZSBmb2xsb3dpbmcgYm9vayB2aWEgSUNPTiBEaXJlY3QsIHVubGVzcyB5b3Ugb3B0IG91dDoKCioqTWFzaCwgRS4gSi4sIFdvbGZlLCBELiBBLiwgJiBXaWxsaWFtcywgSy4gTi4gKDIwMjMpLiAqQ2hpbGRob29kIHBzeWNob3BhdGhvbG9neSogKDh0aCBFZC4pLiBDZW5nYWdlLioqCgpZb3VyIFUtQmlsbCB3aWxsIGJlIGNoYXJnZWQgYXV0b21hdGljYWxseSBhZnRlciB5b3VyIGNvdXJzZSBoYXMgc3RhcnRlZCwgdW5sZXNzIHlvdSBbb3B0IG91dF0oaHR0cHM6Ly90ZWFjaC51aW93YS5lZHUvaWNvbi1kaXJlY3Qvb3B0LW91dCkgcHJpb3IgdG8gdGhlIGxhc3QgZGF5IGZvciB0dWl0aW9uIGFuZCBmZWUgcmVkdWN0aW9uIFtjb3Vyc2UgZGVhZGxpbmVdKGh0dHBzOi8vcmVnaXN0cmFyLnVpb3dhLmVkdS9jb3Vyc2UtZGVhZGxpbmVzKS4KRm9yIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IElDT04gRGlyZWN0LCBpbmNsdWRpbmcgaG93IHRvIGFjY2VzcyB0aGUgZVRleHQsIHNlZSBbaGVyZV0oaHR0cHM6Ly90ZWFjaC51aW93YS5lZHUvaWNvbi1kaXJlY3Qvc3R1ZGVudC1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucykuCkhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIHB1cmNoYXNlIGEgaGFyZGNvcHkgb2YgdGhlIHRleHRib29rIChmb3IgYSBoaWdoZXIgY29zdCkgeW91IG1heSBbb3B0IG91dF0oaHR0cHM6Ly90ZWFjaC51aW93YS5lZHUvaWNvbi1kaXJlY3Qvb3B0LW91dCkgb2YgdGhlIGVUZXh0IHZpYSBJQ09OIERpcmVjdC4KRm9yIGluc3RydWN0aW9ucyBob3cgdG8gb3B0IG91dCBvZiBJQ09OIERpcmVjdCwgc2VlIFtoZXJlXShodHRwczovL3RlYWNoLnVpb3dhLmVkdS9pY29uLWRpcmVjdC9vcHQtb3V0KS4KSG93ZXZlciwgaWYgeW91IG9wdCBvdXQsIHBsZWFzZSBub3RlOgoKLSBZb3UgcmlzayBmYWxsaW5nIGJlaGluZCBpbiB0aGUgY291cnNlIGlmIHlvdSBoYXZlIG5vdCBhY3F1aXJlZCBhbHRlcm5hdGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgbWF0ZXJpYWxzIHByaW9yIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGNsYXNzLgotIEluc3RydWN0b3JzIGFyZSBub3QgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB5b3Ugd2l0aCBhbHRlcm5hdGl2ZSBtYXRlcmlhbHMgb3Igd2FpdmluZyBjb3Vyc2UvY2xhc3MgcmVxdWlyZW1lbnRzLgoKIyMgQXJ0aWNsZXMgeyNhcnRpY2xlc30KCjx1PioqKk5PVEU6IFVQREFURSBJQ09OIFdJVEggTUNBUlRIVVIgQVJUSUNMRSAoVE8gUkVQTEFDRSBDSFJJU1RBS0lTIEFSVElDTEUgRk9SIExJVCBDUklUSVFVRSkqKio8L3U+CgpJbiBhZGRpdGlvbiB0byB0aGUgdGV4dGJvb2ssIGFkZGl0aW9uYWwgcmVxdWlyZWQgcmVhZGluZ3MgZm9yIHNlbGVjdGVkIHRvcGljcyB3aWxsIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBhcnRpY2xlcy4KUERGcyBvZiB0aGVzZSBhcnRpY2xlcyBjYW4gYmUgZm91bmQgb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLgoKMS4gU2hlYSwgUy4gRS4sIEdvcmRvbiwgSy4sIEhhd2tpbnMsIEEuLCBLYXdjaHVrLCBKLiwgJiBTbWl0aCwgRC4gKDIwMDApLiBQYXRob2xvZ3kgaW4gdGhlIGh1bmRyZWQgYWNyZSB3b29kOiBBIG5ldXJvZGV2ZWxvcG1lbnRhbCBwZXJzcGVjdGl2ZSBvbiBBLkEuIE1pbG5lLiAqQ2FuYWRpYW4gTWVkaWNhbCBBc3NvY2lhdGlvbiBKb3VybmFsLCAxNjMqKDEyKSwgMTU1N+KAkzE1NTkuIGh0dHBzOi8vd3d3LmNtYWouY2EvY29udGVudC9jbWFqLzE2My8xMi8xNTU3LmZ1bGwucGRmIChKdXN0IGZvciBmdW4hIPCfmIopCjEuIFJhLCBDLiBLLiwgQ2hvLCBKLiwgU3RvbmUsIE0uIEQuLCBEZSBMYSBDZXJkYSwgSi4sIEdvbGRlbnNvbiwgTi4gSS4sIE1vcm9uZXksIEUuLCBUdW5nLCBJLiwgTGVlLCBTLiBTLiwgJiBMZXZlbnRoYWwsIEEuIE0uICgyMDE4KS4gQXNzb2NpYXRpb24gb2YgZGlnaXRhbCBtZWRpYSB1c2Ugd2l0aCBzdWJzZXF1ZW50IHN5bXB0b21zIG9mIGF0dGVudGlvbi1kZWZpY2l0L2h5cGVyYWN0aXZpdHkgZGlzb3JkZXIgYW1vbmcgYWRvbGVzY2VudHMuICpKQU1BLCAzMjAqKDMpLCAyNTXigJMyNjMuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDAxL2phbWEuMjAxOC44OTMxCjEuIE1jQXJ0aHVyLCBCLiBBLiwgVG91Z2gsIFMuLCAmIE1hZGlnYW4sIFMuICgyMDIyKS4gU2NyZWVuIHRpbWUgYW5kIGRldmVsb3BtZW50YWwgYW5kIGJlaGF2aW9yYWwgb3V0Y29tZXMgZm9yIHByZXNjaG9vbCBjaGlsZHJlbi4gKlBlZGlhdHJpYyBSZXNlYXJjaCwgOTEqKDYpLCAxNjE24oCTMTYyMS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxMzkwLTAyMS0wMTU3Mi13CjEuIFRoYXBhciwgQS4sIFJpY2UsIEYuLCBIYXksIEQuLCBCb2l2aW4sIEouLCBMYW5nbGV5LCBLLiwgdmFuIGRlbiBCcmVlLCBNLiwgUnV0dGVyLCBNLiwgJiBIYXJvbGQsIEcuICgyMDA5KS4gUHJlbmF0YWwgc21va2luZyBtaWdodCBub3QgY2F1c2UgYXR0ZW50aW9uLWRlZmljaXQvaHlwZXJhY3Rpdml0eSBkaXNvcmRlcjogRXZpZGVuY2UgZnJvbSBhIG5vdmVsIGRlc2lnbi4gKkJpb2xvZ2ljYWwgUHN5Y2hpYXRyeSwgNjYqKDgpLCA3MjLigJM3MjcuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouYmlvcHN5Y2guMjAwOS4wNS4wMzIKMS4gT3pvbm9mZiwgUy4sIElvc2lmLCBBLi1NLiwgQmFndWlvLCBGLiwgQ29vaywgSS4gQy4sIEhpbGwsIE0uIE0uLCBIdXRtYW4sIFQuLCBSb2dlcnMsIFMuIEouLCBSb3pnYSwgQS4sIFNhbmdoYSwgUy4sIFNpZ21hbiwgTS4sIFN0ZWluZmVsZCwgTS4gQi4sICYgWW91bmcsIEcuIFMuICgyMDEwKS4gQSBwcm9zcGVjdGl2ZSBzdHVkeSBvZiB0aGUgZW1lcmdlbmNlIG9mIGVhcmx5IGJlaGF2aW9yYWwgc2lnbnMgb2YgYXV0aXNtLiAqSm91cm5hbCBvZiB0aGUgQW1lcmljYW4gQWNhZGVteSBvZiBDaGlsZCAmIEFkb2xlc2NlbnQgUHN5Y2hpYXRyeSwgNDkqKDMpLCAyNTbigJMyNjYuZTI1Mi4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5qYWFjLjIwMDkuMTEuMDA5CjEuIEZyaWNrLCBQLiBKLiAoMjAxMikuIERldmVsb3BtZW50YWwgcGF0aHdheXMgdG8gY29uZHVjdCBkaXNvcmRlcjogSW1wbGljYXRpb25zIGZvciBmdXR1cmUgZGlyZWN0aW9ucyBpbiByZXNlYXJjaCwgYXNzZXNzbWVudCwgYW5kIHRyZWF0bWVudC4gKkpvdXJuYWwgb2YgQ2xpbmljYWwgQ2hpbGQgJiBBZG9sZXNjZW50IFBzeWNob2xvZ3ksIDQxKigzKSwgMzc44oCTMzg5LiBodHRwczovL2RvaS5vcmcvMTAuMTA4MC8xNTM3NDQxNi4yMDEyLjY2NDgxNQoxLiBIb3cgdG8gV3JpdGUgYSBMaXRlcmF0dXJlIFJldmlldy4KMS4gS2VuZGFsbCwgUC4gQy4sIFNldHRpcGFuaSwgQy4gQS4sICYgQ3VtbWluZ3MsIEMuIE0uICgyMDEyKS4gTm8gbmVlZCB0byB3b3JyeTogVGhlIHByb21pc2luZyBmdXR1cmUgb2YgY2hpbGQgYW54aWV0eSByZXNlYXJjaC4gKkpvdXJuYWwgb2YgQ2xpbmljYWwgQ2hpbGQgJiBBZG9sZXNjZW50IFBzeWNob2xvZ3ksIDQxKigxKSwgMTAz4oCTMTE1LiBodHRwczovL2RvaS5vcmcvMTAuMTA4MC8xNTM3NDQxNi4yMDEyLjYzMjM1MgoxLiBTdHJpbmdhcmlzLCBBLiwgVmlkYWwtUmliYXMsIFAuLCBCcm90bWFuLCBNLiBBLiwgJiBMZWliZW5sdWZ0LCBFLiAoMjAxOCkuIFByYWN0aXRpb25lciBSZXZpZXc6IERlZmluaXRpb24sIHJlY29nbml0aW9uLCBhbmQgdHJlYXRtZW50IGNoYWxsZW5nZXMgb2YgaXJyaXRhYmlsaXR5IGluIHlvdW5nIHBlb3BsZS4gKkpvdXJuYWwgb2YgQ2hpbGQgUHN5Y2hvbG9neSBhbmQgUHN5Y2hpYXRyeSwgNTkqKDcpLCA3MjHigJM3MzkuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMTExL2pjcHAuMTI4MjMKMS4gU3RpY2UsIEUuLCBTb3V0aCwgSy4sICYgU2hhdywgSC4gKDIwMTIpLiBGdXR1cmUgZGlyZWN0aW9ucyBpbiBldGlvbG9naWMsIHByZXZlbnRpb24sIGFuZCB0cmVhdG1lbnQgcmVzZWFyY2ggZm9yIGVhdGluZyBkaXNvcmRlcnMuICpKb3VybmFsIG9mIENsaW5pY2FsIENoaWxkICYgQWRvbGVzY2VudCBQc3ljaG9sb2d5LCA0MSooNiksIDg0NeKAkzg1NS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwODAvMTUzNzQ0MTYuMjAxMi43MjgxNTYKMS4gWW91bmcsIFIuLCBTcHJvZWJlciwgTi4sIEdyb3NjaHdpdHosIFIuIEMuLCBQcmVpc3MsIE0uLCAmIFBsZW5lciwgUC4gTC4gKDIwMTQpLiBXaHkgYWx0ZXJuYXRpdmUgdGVlbmFnZXJzIHNlbGYtaGFybTogRXhwbG9yaW5nIHRoZSBsaW5rIGJldHdlZW4gbm9uLXN1aWNpZGFsIHNlbGYtaW5qdXJ5LCBhdHRlbXB0ZWQgc3VpY2lkZSBhbmQgYWRvbGVzY2VudCBpZGVudGl0eS4gKkJNQyBQc3ljaGlhdHJ5LCAxNCooMSksIDEzNy4gaHR0cHM6Ly9kb2kub3JnLzEwLjExODYvMTQ3MS0yNDRYLTE0LTEzNwoxLiBDb2x2ZXJ0LCBFLiwgUnV0dGVyLCBNLiwgS3JlcHBuZXIsIEouLCBCZWNrZXR0LCBDLiwgQ2FzdGxlLCBKLiwgR3Jvb3RodWVzLCBDLiwgSGF3a2lucywgQS4sIFN0ZXZlbnMsIFMuLCAmIFNvbnVnYS1CYXJrZSwgRS4gSi4gUy4gKDIwMDgpLiBEbyB0aGVvcnkgb2YgbWluZCBhbmQgZXhlY3V0aXZlIGZ1bmN0aW9uIGRlZmljaXRzIHVuZGVybGllIHRoZSBhZHZlcnNlIG91dGNvbWVzIGFzc29jaWF0ZWQgd2l0aCBwcm9mb3VuZCBlYXJseSBkZXByaXZhdGlvbj86IEZpbmRpbmdzIGZyb20gdGhlIEVuZ2xpc2ggYW5kIFJvbWFuaWFuIGFkb3B0ZWVzIHN0dWR5LiAqSm91cm5hbCBvZiBBYm5vcm1hbCBDaGlsZCBQc3ljaG9sb2d5LCAzNiooNyksIDEwNTfigJMxMDY4LiBodHRwczovL2RvaS5vcmcvMTAuMTAwNy9zMTA4MDItMDA4LTkyMzIteAoxLiBOZWxzb24sIEMuIEEuLCBJSUksIFplYW5haCwgQy4gSC4sIEZveCwgTi4gQS4sIE1hcnNoYWxsLCBQLiBKLiwgU215a2UsIEEuIFQuLCAmIEd1dGhyaWUsIEQuICgyMDA3KS4gQ29nbml0aXZlIHJlY292ZXJ5IGluIHNvY2lhbGx5IGRlcHJpdmVkIHlvdW5nIGNoaWxkcmVuOiBUaGUgQnVjaGFyZXN0IEVhcmx5IEludGVydmVudGlvbiBQcm9qZWN0LiAqU2NpZW5jZSwgMzE4Kig1ODU4KSwgMTkzN+KAkzE5NDAuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMTI2L3NjaWVuY2UuMTE0MzkyMQoxLiBEYXZpcywgRS4gUC4sIEdseW5uLCBMLiBNLiwgU2NoZXR0ZXIsIEMuIEQuLCBIb2JlbCwgQy4sIENoaWN6LURlbWV0LCBBLiwgJiBTYW5kbWFuLCBDLiBBLiAoMjAwNykuIFByZW5hdGFsIGV4cG9zdXJlIHRvIG1hdGVybmFsIGRlcHJlc3Npb24gYW5kIGNvcnRpc29sIGluZmx1ZW5jZXMgaW5mYW50IHRlbXBlcmFtZW50LiAqSm91cm5hbCBvZiB0aGUgQW1lcmljYW4gQWNhZGVteSBvZiBDaGlsZCAmIEFkb2xlc2NlbnQgUHN5Y2hpYXRyeSwgNDYqKDYpLCA3MzfigJM3NDYuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDk3L2NoaS4wYjAxM2UzMTgwNDdiNzc1CjEuIEJ1cmtlLCBKLiBELiwgUGFyZGluaSwgRC4gQS4sICYgTG9lYmVyLCBSLiAoMjAwOCkuIFJlY2lwcm9jYWwgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHBhcmVudGluZyBiZWhhdmlvciBhbmQgZGlzcnVwdGl2ZSBwc3ljaG9wYXRob2xvZ3kgZnJvbSBjaGlsZGhvb2QgdGhyb3VnaCBhZG9sZXNjZW5jZS4gKkpvdXJuYWwgb2YgQWJub3JtYWwgQ2hpbGQgUHN5Y2hvbG9neSwgMzYqKDUpLCA2NznigJM2OTIuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMDgwMi0wMDgtOTIxOS03CjEuIEN1bW1pbmdzLCBFLiBNLiwgR29la2UtTW9yZXksIE0uIEMuLCAmIFBhcHAsIEwuIE0uICgyMDA0KS4gRXZlcnlkYXkgbWFyaXRhbCBjb25mbGljdCBhbmQgY2hpbGQgYWdncmVzc2lvbi4gKkpvdXJuYWwgb2YgQWJub3JtYWwgQ2hpbGQgUHN5Y2hvbG9neSwgMzIqKDIpLCAxOTHigJMyMDIuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDIzL0I6SkFDUC4wMDAwMDE5NzcwLjEzMjE2LmJlCjEuIE1jRG9ub3VnaCwgTS4gSC4sIEpvc2UsIFAuIEUuLCAmIFN0dWFydCwgSi4gKDIwMTYpLiBCaS1kaXJlY3Rpb25hbCBlZmZlY3RzIG9mIHBlZXIgcmVsYXRpb25zaGlwcyBhbmQgYWRvbGVzY2VudCBzdWJzdGFuY2UgdXNlOiBBIGxvbmdpdHVkaW5hbCBzdHVkeS4gKkpvdXJuYWwgb2YgWW91dGggYW5kIEFkb2xlc2NlbmNlLCA0NSooOCksIDE2NTLigJMxNjYzLiBodHRwczovL2RvaS5vcmcvMTAuMTAwNy9zMTA5NjQtMDE1LTAzNTUtNAoxLiBCb25hbm5vLCBSLiBBLiwgJiBIeW1lbCwgUy4gKDIwMTMpLiBDeWJlciBidWxseWluZyBhbmQgaW50ZXJuYWxpemluZyBkaWZmaWN1bHRpZXM6IEFib3ZlIGFuZCBiZXlvbmQgdGhlIGltcGFjdCBvZiB0cmFkaXRpb25hbCBmb3JtcyBvZiBidWxseWluZy4gKkpvdXJuYWwgb2YgWW91dGggYW5kIEFkb2xlc2NlbmNlLCA0MiooNSksIDY4NeKAkzY5Ny4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDcvczEwOTY0LTAxMy05OTM3LTEKMS4gQ2h1bmcsIEguIEwuLCAmIFN0ZWluYmVyZywgTC4gKDIwMDYpLiBSZWxhdGlvbnMgYmV0d2VlbiBuZWlnaGJvcmhvb2QgZmFjdG9ycywgcGFyZW50aW5nIGJlaGF2aW9ycywgcGVlciBkZXZpYW5jZSwgYW5kIGRlbGlucXVlbmN5IGFtb25nIHNlcmlvdXMganV2ZW5pbGUgb2ZmZW5kZXJzLiAqRGV2ZWxvcG1lbnRhbCBQc3ljaG9sb2d5LCA0MiooMiksIDMxOeKAkzMzMS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzcvMDAxMi0xNjQ5LjQyLjIuMzE5CjEuIENvbGxpc2hhdywgUy4sIFBpY2tsZXMsIEEuLCBNZXNzZXIsIEouLCBSdXR0ZXIsIE0uLCBTaGVhcmVyLCBDLiwgJiBNYXVnaGFuLCBCLiAoMjAwNykuIFJlc2lsaWVuY2UgdG8gYWR1bHQgcHN5Y2hvcGF0aG9sb2d5IGZvbGxvd2luZyBjaGlsZGhvb2QgbWFsdHJlYXRtZW50OiBFdmlkZW5jZSBmcm9tIGEgY29tbXVuaXR5IHNhbXBsZS4gKkNoaWxkIEFidXNlICYgTmVnbGVjdCwgMzEqKDMpLCAyMTHigJMyMjkuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouY2hpYWJ1LjIwMDcuMDIuMDA0CjEuIENvbmR1Y3QgUHJvYmxlbXMgUHJldmVudGlvbiBSZXNlYXJjaCBHcm91cC4gKDIwMTEpLiBUaGUgZWZmZWN0cyBvZiB0aGUgZmFzdCB0cmFjayBwcmV2ZW50aXZlIGludGVydmVudGlvbiBvbiB0aGUgZGV2ZWxvcG1lbnQgb2YgY29uZHVjdCBkaXNvcmRlciBhY3Jvc3MgY2hpbGRob29kLiAqQ2hpbGQgRGV2ZWxvcG1lbnQsIDgyKigxKSwgMzMx4oCTMzQ1LiBodHRwczovL2RvaS5vcmcvMTAuMTExMS9qLjE0NjctODYyNC4yMDEwLjAxNTU4LngKCiMgQWNhZGVtaWMgSG9uZXN0eSBhbmQgTWlzY29uZHVjdCB7I2FjYWRlbWljSG9uZXN0eX0KCkFsbCBzdHVkZW50cyBpbiBDTEFTIGNvdXJzZXMgYXJlIGV4cGVjdGVkIHRvIGFiaWRlIGJ5IHRoZSBbY29sbGVnZSdzIHN0YW5kYXJkcyBvZiBhY2FkZW1pYyBob25lc3R5XShodHRwczovL2NsYXMudWlvd2EuZWR1L3N0dWRlbnRzL2hhbmRib29rL2FjYWRlbWljLWZyYXVkLWhvbm9yLWNvZGUpLgpBY2FkZW1pYyBtaXNjb25kdWN0IG11c3QgYmUgcmVwb3J0ZWQgYnkgaW5zdHJ1Y3RvcnMgdG8gQ0xBUyBhY2NvcmRpbmcgdG8gW3RoZXNlIHByb2NlZHVyZXNdKGh0dHBzOi8vcG9saWN5LmNsYXMudWlvd2EuZWR1L2NsYXMtcG9saWNpZXMtYW5kLXByb2NlZHVyZXMvdW5kZXJncmFkdWF0ZS1lZHVjYXRpb24vYWNhZGVtaWMtbWlzY29uZHVjdC11bmRlcmdyYWR1YXRlKS4KUGxlYXNlIG5vdGUgdGhhdCBjb2xsYWJvcmF0aW9uIHdpdGggb3RoZXIgY2xhc3NtYXRlcyBvbiBxdWl6emVzIGFuZCBkdXJpbmcgZXhhbXMgaXMgbm90IHBlcm1pdHRlZC4KSG93ZXZlciwgSSBkbyBlbmNvdXJhZ2UgeW91IHRvIGNvbGxhYm9yYXRlIHdpdGggY2xhc3NtYXRlcyB0byAqcHJlcGFyZSogZm9yIGV4YW1zIChlLmcuLCBpbmZvcm1hbCBzdHVkeSBncm91cHMpLgpJbiBhZGRpdGlvbiwgeW91IGFyZSBleHBlY3RlZCB0byBmb2xsb3cgdGhlIGNvdXJzZSdzIHBvbGljeSBvbiB0aGUgdXNlIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIChBSSksIHdoaWNoIGlzIG91dGxpbmVkIGJlbG93LgoKIyBBcnRpZmljaWFsIEludGVsbGlnZW5jZSAoQUkpIFBvbGljeSB7I2FpfQoKQmVjYXVzZSB3cml0aW5nLCBhbmFseXRpY2FsLCBhbmQgY3JpdGljYWwgdGhpbmtpbmcgc2tpbGxzIGFyZSBwYXJ0IG9mIHRoZSBsZWFybmluZyBvdXRjb21lcyBvZiB0aGlzIGNvdXJzZSwgYWxsIHdvcmsgc3VibWl0dGVkIGJ5IHN0dWRlbnRzIHNob3VsZCBiZSBwcmVwYXJlZCBieSB0aGUgc3R1ZGVudC4KWW91IGFyZSB0cmFpbmluZyB0aGVzZSBjb2duaXRpdmUgbXVzY2xlczsgaWYgeW91IGdvIHRvIHRoZSBneW0sIHlvdSB3b3VsZCBub3QgaGF2ZSBBSSBsaWZ0IHRoZSB3ZWlnaHRzIGZvciB5b3UuCkZvciB0aGVzZSByZWFzb25zLCBBSS1nZW5lcmF0ZWQgc3VibWlzc2lvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgYW5kIHdpbGwgYmUgdHJlYXRlZCBhcyBwbGFnaWFyaXNtLgpMZWFybmluZyB0aGVzZSBjb3JlIGZvdW5kYXRpb25hbCBza2lsbHMgd2lsbCBtYWtlIHlvdSBhIGJldHRlciB1c2VyIG9mIEFJIGluIHRoZSBmdXR1cmUsIGJlY2F1c2UgeW91IHdpbGwgYmUgYmV0dGVyLXBvc2l0aW9uZWQgaW4gdGhlIGZ1dHVyZSB0byBjcml0aWNhbGx5IGV2YWx1YXRlIEFJIHJlc3BvbnNlcyBhbmQgdG8gaWRlbnRpZnkgd2hlbiAoYW5kIHRoZSB3YXlzIGluIHdoaWNoKSBpdHMgcmVzcG9uc2VzIGFyZSBpbmFjY3VyYXRlLgpNb3Jlb3ZlciwgaW4gbWFueSBpbmR1c3RyaWVzLCB1c2Ugb2YgQUkgaXMgbm90IHBlcm1pdHRlZCBiZWNhdXNlIHlvdSBjYW5ub3Qgc2hhcmUgdGhlIGNvbXBhbnkncyBwcm9wcmlldGFyeSBpbmZvcm1hdGlvbi4KVGh1cywgZGV2ZWxvcGluZyBzdHJvbmcgY29tcGV0ZW5jaWVzIGluIHRoZXNlIGRvbWFpbnMgKHdpdGhvdXQgdGhlIHVzZSBvZiBBSSkgd2lsbCBwcmVwYXJlIHlvdSBmb3IgYSBjb21wZXRpdGl2ZSB3b3JrcGxhY2UuCgojIENvdXJzZSBSZXF1aXJlbWVudHMgYW5kIFBvbGljaWVzIHsjcmVxdWlyZW1lbnRzfQoKIyMgTGVjdHVyZSB7I2xlY3R1cmV9CgpXZSB3aWxsIG1lZXQgdGhyZWUgdGltZXMgd2Vla2x5IGZvciBsZWN0dXJlcywgYXQgdGhlIHRpbWUgYW5kIGxvY2F0aW9uIGRlc2NyaWJlZCBbYWJvdmVdKCNsZWN0dXJlVGltZSkuCk15IHBvd2VycG9pbnQgcHJlc2VudGF0aW9ucyBmb3IgdGhlIGxlY3R1cmVzIHdpbGwgYmUgcG9zdGVkIG9uIFtJQ09OXShodHRwczovL2ljb24udWlvd2EuZWR1KSBubyBsYXRlciB0aGFuIG5vb24gb24gdGhlIGRheSBiZWZvcmUgdGhlIGxlY3R1cmUgKHRob3VnaCBJIG1heSBjb250aW51ZSB0byByZWZpbmUgdGhlIHNsaWRlcyB1cCB1bnRpbCB0aGUgdGltZSBvZiBsZWN0dXJlKS4KPHU+UGxlYXNlIG5vdGU6PC91PiBwb3dlcnBvaW50IHByZXNlbnRhdGlvbnMgYXJlIGFuIG91dGxpbmUgb2YgbXkgcG9pbnRzLiAKPHU+SXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byB0YWtlIG5vdGVzIGR1cmluZyBjbGFzcy48L3U+CklmIHlvdSBoYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgbGVjdHVyZSBub3RlcyBvciBuZWVkIGNsYXJpZmljYXRpb24gb2YgYW55IG9mIHRoZSBwb2ludHMsIHBsZWFzZSBhc2sgaW4gY2xhc3Mgb3IgbWVldCB3aXRoIHRoZSBUQSBvciBQcm9mZXNzb3IgUGV0ZXJzZW4gZHVyaW5nIG9mZmljZSBob3Vycy4gCklmIHlvdSBtaXNzIGNsYXNzIGFuZC9vciBuZWVkIGhlbHAgY2F0Y2hpbmcgdXAgb24gdGhlIG5vdGVzLCBwbGVhc2UgbWFrZSBhbiBhcHBvaW50bWVudCB3aXRoIHRoZSBUQS4KCiMjIEF0dGVuZGFuY2UgYW5kIFBhcnRpY2lwYXRpb24geyNhdHRlbmRhbmNlUGFydGljaXBhdGlvbn0KCkF0dGVuZGFuY2UgYXQgbGVjdHVyZXMgaXMgcmVxdWlyZWQgYW5kIHdpbGwgYmUgY2hlY2tlZCBhbmQgZmFjdG9yZWQgaW50byBmaW5hbCBncmFkZXMgKHNlZSBncmFkaW5nIHNlY3Rpb24gW2JlbG93XSgjZ3JhZGluZykpLgpUaGVyZSBhcmUgNDMgbGVjdHVyZXMgZHVyaW5nIHRoZSBzZW1lc3RlciAoZXhjbHVkaW5nIGV4YW1pbmF0aW9ucykuCllvdSB3aWxsIHJlY2VpdmUgb25lIHBvaW50IGZvciBhdHRlbmRhbmNlIGF0IGVhY2ggbGVjdHVyZSB1cCB0byA0MCBwb2ludHMgKGkuZS4sIHlvdSB3aWxsIG5vdCByZWNlaXZlIGV4dHJhIGNyZWRpdCBmb3IgYXR0ZW5kaW5nIGFsbCA0MyBsZWN0dXJlcykuCjx1PlRodXMsIHlvdSB3aWxsIG5vdCBiZSBwZW5hbGl6ZWQgZm9yIG1pc3NpbmcgdXAgdG8gMyBsZWN0dXJlcy4KSG93ZXZlciwgeW91IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGxlYXJuaW5nIGFueSBtYXRlcmlhbCBtaXNzZWQgZm9yIHF1aXp6ZXMgYW5kIGV4YW1zLCBhbmQgSSBzdHJvbmdseSBlbmNvdXJhZ2UgeW91IHRvIGF0dGVuZCBhbGwgbGVjdHVyZXMuClBvb3IgbGVjdHVyZSBhdHRlbmRhbmNlIGlzIGxpa2VseSB0byBhZmZlY3QgdGhlIHF1YWxpdHkgb2Ygc3R1ZGVudHMnIHdvcmsgYW5kIHN1Y2Nlc3MgaW4gdGhlIGNvdXJzZS48L3U+CgpTdHVkZW50cyB3aG8gbWlzcyA8dT5tb3JlIHRoYW4gMyBsZWN0dXJlczwvdT4gZHVlIHRvIHBhcnRpY2lwYXRpb24gaW4gVW5pdmVyc2l0eSBhY3Rpdml0aWVzIG11c3QgZ2l2ZSB0aGUgaW5zdHJ1Y3RvciBhIHN0YXRlbWVudCA8dT5iZWZvcmUgdGhlIGFic2VuY2U8L3U+IHNpZ25lZCBieSBhIHJlc3BvbnNpYmxlIG9mZmljaWFsIHRoYXQgc3BlY2lmaWVzIHRoZSBkYXRlcyBhbmQgdGltZXMgdGhlIHN0dWRlbnQgd2lsbCBtaXNzIGNsYXNzLgpBdXRob3JpemVkIGFjdGl2aXRpZXMgaW5jbHVkZSBwYXJ0aWNpcGF0aW9uIGluIGF0aGxldGljIHRlYW1zLCB0aGUgbWFyY2hpbmcgYmFuZCBvciBwZXAgYmFuZCwgZGViYXRlIHRlYW1zLCBhbmQgb3RoZXIgcmVjb2duaXplZCBVbml2ZXJzaXR5IGdyb3VwcywgYXMgd2VsbCBhcyBwYXJ0aWNpcGF0aW9uIGluIFVuaXZlcnNpdHkgZmllbGQgdHJpcHMsIHNlcnZpY2Ugd2l0aCB0aGUgTmF0aW9uYWwgR3VhcmQsIGFuZCBqdXJ5IGR1dHkuCkFic2VuY2VzIGR1ZSB0byBpbGxuZXNzZXMgb3IgZW1lcmdlbmNpZXMgKHRoYXQgZ28gb3ZlciAzIGxlY3R1cmVzKSBtdXN0IGJlIGRvY3VtZW50ZWQgd2l0aCB0aGUgVW5pdmVyc2l0eSBvZiBJb3dhIFtBYnNlbmNlIEV4cGxhbmF0aW9uIEZvcm1dKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvZmFjdWx0eS9zdHVkZW50LWF0dGVuZGFuY2UtYW5kLWFic2VuY2VzKSBhbmQgc2VudCB0byB0aGUgVEEgd2l0aGluIDQ4IGhvdXJzIG9mIHRoZSBhYnNlbmNlLgpQZXIgdW5pdmVyc2l0eSBwb2xpY3ksIGlmIGEgc3R1ZGVudCB3aWxsIGJlIGFic2VudCA8dT41IG9yIG1vcmUgY29uc2VjdXRpdmUgZGF5cyBhbmQgdGhlIGFic2VuY2UgaXMgZHVlIHRvIGlsbG5lc3Mgb3Igb3RoZXIgZW1lcmdlbmN5PC91PiwgcGxlYXNlIGNvbnRhY3QgdGhlIFJlZ2lzdHJhciBTZXJ2aWNlIENlbnRlciBhdCAoMzE5KSAzODQtNDMwMCBvciByZWdpc3RyYXJAdWlvd2EuZWR1LgoKIyMgUmVhZGluZ3MgeyNyZWFkaW5nc30KClJlYWRpbmdzIGZyb20geW91ciB0ZXh0IGFyZSBhc3NpZ25lZCBieSBsZWN0dXJlIHRvcGljLgpZb3Ugc2hvdWxkIHJlYWQgYW5kIHRha2Ugbm90ZXMgb24gdGhlIG1hdGVyaWFsIGJlZm9yZSBjbGFzcy4KUGFzdCBleHBlcmllbmNlIGhhcyBzaG93biB0aGF0IHRvIGRvIHdlbGwgaW4gdGhpcyBjbGFzcyB5b3Ugc2hvdWxkIHJlYWQgdGhlIGFzc2lnbmVkIG1hdGVyaWFsLCBhdHRlbmQgbGVjdHVyZXMgYW5kIHRha2Ugbm90ZXMsIGFuZCByZXZpZXcgeW91ciBub3RlcyBlYWNoIHdlZWsuClRoZXJlIGlzIHRvbyBtdWNoIG1hdGVyaWFsIGJlaW5nIGNvdmVyZWQgaW4gdGhpcyBjbGFzcyB0byB0cnkgdG8gc3R1ZHkgb25seSBieSBmcmFudGljIHByZXBhcmF0aW9uIGltbWVkaWF0ZWx5IGJlZm9yZSBxdWl6emVzIGFuZCBleGFtcy4KCiMjIFdvcmtsb2FkIHsjd29ya2xvYWR9CgpUaGlzIGlzIGEgMyBzZW1lc3RlciBob3VyIGNvdXJzZS4KU3R1ZGVudHMgc2hvdWxkIHRoZXJlZm9yZSBleHBlY3QgdG8gc3BlbmQgWzYgYWRkaXRpb25hbCBob3VycyBwZXIgd2Vla10oaHR0cHM6Ly9jbGFzLnVpb3dhLmVkdS9mYWN1bHR5L3N0dWRlbnQtd29ya2xvYWQtZ3VpZGVsaW5lcykgKG91dHNpZGUgb2YgY2xhc3MpIHJlYWRpbmcgdGhlIHRleHRib29rIGFuZCBhcnRpY2xlcywgcmV2aWV3aW5nIGxlY3R1cmUgbWF0ZXJpYWwsIHByZXBhcmluZyBmb3IgcXVpenplcyBhbmQgZXhhbXMsIGFuZCBjb21wbGV0aW5nIHdyaXRpbmcgYXNzaWdubWVudHMuCgojIyBRdWl6emVzIHsjcXVpenplc30KClNpeCBxdWl6emVzIHdpbGwgYmUgYWRtaW5pc3RlcmVkIHZpYSB0aGUgW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpIHdlYnNpdGUuClN0dWRlbnRzIDx1PmFyZTwvdT4gYWxsb3dlZCB0byB1c2UgdGhlaXIgdGV4dGJvb2sgYW5kIGxlY3R1cmUgbm90ZXMgb24gdGhlIHF1aXp6ZXMuCkhvd2V2ZXIsIHN0dWRlbnRzIDx1Pm1heSBub3Q8L3U+IHdvcmsgdG9nZXRoZXIgb24gdGhlIHF1aXp6ZXMuCjx1PlF1ZXN0aW9ucyB3aWxsIGJlIHJhbmRvbWl6ZWQgYW5kIHByZXNlbnRlZCBzdWNoIHRoYXQgc3R1ZGVudHMgbXVzdCBhbnN3ZXIgb25lIHF1ZXN0aW9uIGF0IGEgdGltZSAoaS5lLiwgc3R1ZGVudHMgbWF5IG5vdCBnbyBiYWNrIHRvIGEgcHJldmlvdXMgcXVlc3Rpb24gaW4gdGhlIHF1aXopLjwvdT4KUXVpenplcyB3aWxsIGNvbnNpc3Qgb2YgYXBwcm94aW1hdGVseSAyMOKAkzMwIG11bHRpcGxlIGNob2ljZSBvciB2ZXJ5IHNob3J0IGFuc3dlciBxdWVzdGlvbnMuCkFsdGhvdWdoIHN0dWRlbnRzIG1heSB0YWtlIHRoZSBxdWl6IGF0IGFueSB0aW1lIHdoZW4gaXQgaXMgYXZhaWxhYmxlLCBzdHVkZW50cyBtdXN0IGNvbXBsZXRlIHRoZSBxdWl6IHdpdGhpbiA8dT4yIGhvdXJzPC91Pi4gCldlIHdpbGwgbm90IGFjY2VwdCBsYXRlIHJlc3BvbnNlcyBvciBtdWx0aXBsZSBzdWJtaXNzaW9ucy4KWW91ciBsb3dlc3QgcXVpeiBzY29yZSB3aWxsIGJlIGRyb3BwZWQuCldlIHdpbGwgbm90IGFjY2VwdCBleGN1c2VkIGFic2VuY2VzIGZvciBxdWl6emVzIGJlY2F1c2UgKGEpIHlvdSBoYXZlIGEgd2VlayB0byBjb21wbGV0ZSB0aGUgcXVpeiAoYW5kIGNhbiBzdWJtaXQgaXQgYXQgYW55IHBvaW50IGR1cmluZyB0aGF0IHdlZWspLCBhbmQgKGIpIHdlIGRyb3AgeW91ciBsb3dlc3QgcXVpeiBzY29yZS4KRWFjaCBxdWl6IHdpbGwgYmUgd2VpZ2h0ZWQgdGhlIHNhbWUgaW4gdGhlIGZpbmFsIGdyYWRlLgoKQWx0aG91Z2ggc3R1ZGVudHMgd2lsbCBoYXZlIGFjY2VzcyB0byB0aGVpciBjb3Vyc2UgbWF0ZXJpYWxzIGR1cmluZyB0aGUgcXVpeiwgcmVhZGluZyBhbmQgYWR2YW5jZWQgcHJlcGFyYXRpb24gd2lsbCBiZSBuZWNlc3NhcnkgdG8gZG8gd2VsbCBvbiB0aGUgcXVpenplcy4KPHU+TWF0ZXJpYWwgZm9yIHF1aXogcXVlc3Rpb25zIHdpbGwgYmUgdGFrZW4gZnJvbSByZXF1aXJlZCByZWFkaW5ncyAodGV4dHMgYW5kIGFydGljbGVzKSBhcyB3ZWxsIGFzIGZyb20gbGVjdHVyZSBtYXRlcmlhbC48L3U+ClF1aXogZHVlIGRhdGVzIGFuZCB0b3BpY3Mgd2lsbCBiZSBhbm5vdW5jZWQgaW4gY2xhc3MgYW5kIHZpYSBlbWFpbCBhbmQgYXJlIGxpc3RlZCBiZWxvdy4KQWxsIHF1aXp6ZXMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkgYnkgMTE6NTkgcC5tLiBvbiB0aGUgZHVlIGRhdGUuCgp8IFF1aXogIyB8IERhdGVzIEF2YWlsYWJsZSB8IFRvcGljcyBDb3ZlcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgMSAgICAgIHwgOS80IOKAkyA5LzExICAgICAgfCBIaXN0b3J5L0QmUCBNb2RlbCwgVGhlb3JpZXMgJiBDYXVzZXMsIFJlc2VhcmNoIHdpdGggQ2hpbGRyZW4gICB8CnwgMiAgICAgIHwgOS8yMiDigJMgOS8yOSAgICAgfCBBREhELCBBU0QsIEludGVsbGVjdHVhbCBEaXNhYmlsaXR5LCBTcGVjaWZpYyBMZWFybmluZyBEaXNvcmRlciB8CnwgMyAgICAgIHwgMTAvMjAg4oCTIDEwLzI3ICAgfCBDRCwgQW54aWV0eSwgRGVwcmVzc2lvbiwgQmlwb2xhciwgRE1ERCAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgNCAgICAgIHwgMTEvMSDigJMgMTEvOCAgICAgfCBFbGltaW5hdGlvbiwgRWF0aW5nLCBTdWJzdGFuY2UtUmVsYXRlZCBEaXNvcmRlcnMsIFNlbGYtSW5qdXJ5ICB8CnwgNSAgICAgIHwgMTEvMTUg4oCTIDExLzI5ICAgfCBNYWx0cmVhdG1lbnQgYW5kIFJlc2lsaWVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgNiAgICAgIHwgMTIvMSDigJMgMTIvOCAgICAgfCBMZXZlbHMgb2YgQW5hbHlzaXMgQXJ0aWNsZXMsIFByZXZlbnRpb24gICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBFeGFtaW5hdGlvbnMgeyNleGFtc30KClRoZXJlIHdpbGwgYmUgMiBleGFtczsgb25lIG1pZC10ZXJtIGV4YW0gYW5kIG9uZSBub24tY3VtdWxhdGl2ZSBmaW5hbCBleGFtLgpFeGFtIDEgd2lsbCBiZSBhZG1pbmlzdGVyZWQgZHVyaW5nIGNsYXNzIHRpbWUuClRoZSBkYXRlLCB0aW1lLCBhbmQgbG9jYXRpb24gb2YgdGhlIGZpbmFsIGV4YW0gd2lsbCBiZSBhbm5vdW5jZWQgYnkgdGhlIDV0aCB3ZWVrIG9mIGNsYXNzIGJ5IHRoZSBDb2xsZWdlIG9mIExpYmVyYWwgQXJ0cyBhbmQgU2NpZW5jZXM7IHRoZSBkdXJhdGlvbiBvZiB0aGUgZmluYWwgZXhhbSB3aWxsIGJlIDEyMCBtaW51dGVzLgpFYWNoIGV4YW0gd2lsbCBlbXBoYXNpemUgaW5mb3JtYXRpb24gcHJlc2VudGVkIGZvciB0aGUgaGFsZiBvZiB0aGUgY2xhc3MgdGhhdCBwcmVjZWRlcyBpdC4KSG93ZXZlciwgc29tZSBpbnRlZ3JhdGlvbiBvZiBpbmZvcm1hdGlvbiBhY3Jvc3Mgc2VjdGlvbnMgd2lsbCBiZSByZXF1aXJlZCBmb3IgcXVlc3Rpb25zIG9uIHRoZSBmaW5hbCBleGFtLgpFeGFtcyB3aWxsIGNvbnNpc3Qgb2Ygc2hvcnQtYW5zd2VyIGFuZCBtdWx0aXBsZSBjaG9pY2UgcXVlc3Rpb25zIGJhc2VkIHVwb24gYm90aCByZWFkaW5ncyAodGV4dHMgYW5kIGFydGljbGVzKSBhbmQgdGhlIGxlY3R1cmUgbWF0ZXJpYWwuCkV4YW0gZGF0ZXMgYXJlIGxpc3RlZCBiZWxvdy4KCioqRXhhbSAxIChNaWQtVGVybSBFeGFtKToJV2VkbmVzZGF5LCBPY3RvYmVyIDQsIDIwMjUgZHVyaW5nIGNsYXNzKipcCioqRXhhbSAyIChGaW5hbCBFeGFtKTogVEJEIGR1cmluZyBmaW5hbHMgd2VlayoqICh0aGUgZGF0ZSwgdGltZSwgYW5kIGxvY2F0aW9uIHdpbGwgYmUgYW5ub3VuY2VkIGJ5IHRoZSA1dGggd2VlayBvZiBjbGFzcyBieSB0aGUgQ29sbGVnZSBvZiBMaWJlcmFsIEFydHMgYW5kIFNjaWVuY2VzKQoKIyMjIE1pc3NpbmcgRXhhbXMgeyNtaXNzaW5nRXhhbXN9CgpbVW5pdmVyc2l0eSByZWd1bGF0aW9ucyByZXF1aXJlIHRoYXQgc3R1ZGVudHMgYmUgYWxsb3dlZCB0byBtYWtlIHVwIGV4YW1pbmF0aW9uc10oaHR0cHM6Ly9vcHNtYW51YWwudWlvd2EuZWR1L3N0dWRlbnRzL2Fic2VuY2VzLWNsYXNzKSB0aGF0IGhhdmUgYmVlbiBtaXNzZWQgZHVlIHRvIGlsbG5lc3MsIHJlbGlnaW91cyBob2x5IGRheXMsIG1pbGl0YXJ5IHNlcnZpY2Ugb2JsaWdhdGlvbnMgKGluY2x1ZGluZyBzZXJ2aWNlLXJlbGF0ZWQgbWVkaWNhbCBhcHBvaW50bWVudHMpLCBvciBvdGhlciB1bmF2b2lkYWJsZSBjaXJjdW1zdGFuY2VzIG9yIFVuaXZlcnNpdHktc3BvbnNvcmVkIGFjdGl2aXRpZXMuClN0dWRlbnRzIHdpdGggVUktYXV0aG9yaXplZCBhY3Rpdml0aWVzIG11c3QgZGlzY3VzcyB0aGVpciBhYnNlbmNlcyB3aXRoIHRoZSBpbnN0cnVjdG9yIGFzIHNvb24gYXMgcG9zc2libGUuClJlbGlnaW91cyBvYmxpZ2F0aW9ucyBtdXN0IGJlIGNvbW11bmljYXRlZCB3aXRoaW4gdGhlIGZpcnN0IHRocmVlIHdlZWtzIG9mIGNsYXNzZXMuClNlZSBiZWxvdyBmb3IgdGhlIGRvY3VtZW50YXRpb24gbmVjZXNzYXJ5IGZvciBhbiBhYnNlbmNlIHRvIGJlIGV4Y3VzZWQgYW5kIHRvIGJlIGVsaWdpYmxlIHRvIHRha2UgYSBtYWtlLXVwIGV4YW0uCgpTdHVkZW50cyBhcmUgYWxsb3dlZCB0byBtYWtlIHVwIGV4YW1zIHRoYXQgaGF2ZSBiZWVuIG1pc3NlZCBkdWUgdG8gaWxsbmVzcywgbWFuZGF0b3J5IHJlbGlnaW91cyBvYnNlcnZhdGlvbnMsIG9mZmljaWFsIFVuaXZlcnNpdHkgYWN0aXZpdGllcywgb3Igb3RoZXIgdW5hdm9pZGFibGUgY2lyY3Vtc3RhbmNlcy4KTm90ZTogdGhlIGZvcm1hdCBvZiB0aGUgbWFrZS11cCBleGFtIG1heSBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwgZXhhbS4KSWYgeW91IGtub3cgdGhhdCB5b3UgbXVzdCBiZSBhd2F5IGF0IHRoZSB0aW1lIG9mIGFuIGV4YW0gZm9yIG9uZSBvZiB0aGVzZSByZWFzb25zLCBQcm9mZXNzb3IgUGV0ZXJzZW4gb3IgdGhlIFRBIG11c3QgYmUgY29udGFjdGVkIGluIGFkdmFuY2Ugd2hlbmV2ZXIgcG9zc2libGUgdG8gc2NoZWR1bGUgYSBtYWtlLXVwIGV4YW0uCkluIG9yZGVyIHRvIHRha2UgYSBtYWtlLXVwIGV4YW0sIHlvdSBtdXN0IHByb3ZpZGUgYWNjZXB0YWJsZSBkb2N1bWVudGF0aW9uIHRvIGJlIGVsaWdpYmxlIHRvIHRha2UgaXQ6IGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcmVwb3J0IG9mIGlsbG5lc3M7IGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIG11c3QgYmUgZG9jdW1lbnRlZCBieSB0aGUgVW5pdmVyc2l0eSBvZiBJb3dhIFtBYnNlbmNlIEV4cGxhbmF0aW9uIEZvcm1dKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvc2l0ZXMvY2xhcy51aW93YS5lZHUvZmlsZXMvMjAyNC0wNS9BQlNFTkNFJTIwRVhQTEFOQVRJT04lMjBGT1JNLnBkZikgKGxvY2F0ZWQgaW4gSUNPTiB1bmRlciAiU3R1ZGVudCBUb29scyIpIGFuZCBtdXN0IGJlIGFwcHJvdmVkIGJ5IFByb2Zlc3NvciBQZXRlcnNlbi4KPHU+SW4gc3VtLCB0byBiZSBlbGlnaWJsZSBmb3IgYSBtYWtlLXVwIGV4YW0sIFByb2Zlc3NvciBQZXRlcnNlbiBvciB0aGUgVEEgbXVzdCBiZSBjb250YWN0ZWQgYmVmb3JlIHRoZSBleGFtaW5hdGlvbiB3aGVuZXZlciBwb3NzaWJsZSwgYW5kIHlvdSBtdXN0IHNlbmQgYWNjZXB0YWJsZSBmb3JtIG9mIGRvY3VtZW50YXRpb24gdG8gUHJvZmVzc29yIFBldGVyc2VuIG9yIHRoZSBUQTwvdT4uCgojIyBMaXRlcmF0dXJlIENyaXRpcXVlcyB7I2xpdENyaXRpcXVlc30KCllvdSB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHR3byBsaXRlcmF0dXJlIGNyaXRpcXVlIGFzc2lnbm1lbnRzLgpUaGVzZSBhc3NpZ25tZW50cyBhcmUgZGVzaWduZWQgdG8gaGVscCB5b3UgbGVhcm4gdG8gY3JpdGljYWxseSBhbmFseXplIG9yaWdpbmFsIHNvdXJjZSBhcnRpY2xlcyBpbiB3cml0dGVuIGZvcm0uCkJvdGggYXNzaWdubWVudHMgaW52b2x2ZSBwcm92aWRpbmcgYSBjcml0aXF1ZSBvZiBhIHJlc2VhcmNoIGFydGljbGUgKFJhIGV0IGFsLiwgMjAxOCDigJMgQXJ0aWNsZSAjMiwgYW5kIE1jQXJ0aHVyIGV0IGFsLiwgMjAyMiDigJMgQXJ0aWNsZSAjMykuCkJvdGggcGFwZXJzIHNob3VsZCBiZSAy4oCTMyBwYWdlcyBsb25nIChkb3VibGUtc3BhY2VkLCBBUEEgZm9ybWF0LCAxMi1wb2ludCBUaW1lcyBOZXcgUm9tYW4gZm9udCkgYW5kIHdpbGwgYmUgdHVybmVkIGluIHZpYSBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkuCkVhY2ggc2hvdWxkIGJlIGluIGVzc2F5IGZvcm0gYW5kIGNhcmVmdWxseSBwcm9vZnJlYWQgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWF0aWNhbCBlcnJvcnMuCjx1PlN0dWRlbnRzIG1heSBub3Qgd29yayB0b2dldGhlciBvbiB0aGUgY3JpdGlxdWVzLjwvdT4KTW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3RydWN0dXJlIHRoZSBjcml0aXF1ZXMgd2lsbCBiZSBwcm92aWRlZCBpbiBjbGFzcy4KTm90ZTogVHVybml0aW4gd2lsbCBiZSB1c2VkIHZpYSBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkgdG8gY2hlY2sgZm9yIHBsYWdpYXJpc20gb2YgYSBmZWxsb3cgc3R1ZGVudCBhbmQgZnJvbSB0aGUgaW50ZXJuZXQuCioqVGhlIGNyaXRpcXVlcyBhcmUgZHVlIG9uIE1vbmRheSwgQXVndXN0IDI4IGFuZCBGcmlkYXksIFNlcHRlbWJlciA4IGJ5IDExOjU5IHAubS4qKgoKIyMgTGl0ZXJhdHVyZSBSZXZpZXcgeyNsaXRSZXZpZXd9CgpZb3Ugd2lsbCBiZSByZXF1aXJlZCB0byB3cml0ZSBhIDx1PmxpdGVyYXR1cmUgcmV2aWV3PC91PiBvbiBhIHRvcGljIHJlbGF0ZWQgdG8gY2hpbGQgcHN5Y2hvcGF0aG9sb2d5LgpUaGUgdG9waWMgb2YgdGhlIHBhcGVyIGlzIGNvbXBsZXRlbHkgdXAgdG8gdGhlIHN0dWRlbnQ7IHRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgaXQgbXVzdCBiZSByZWxldmFudCB0byBwc3ljaG9wYXRob2xvZ3kgaW4gY2hpbGRyZW4gb3IgYWRvbGVzY2VudHMuClRoZSBwYXBlciBtdXN0IGluY2x1ZGUgYSByZXZpZXcgYW5kIGFuYWx5c2lzIG9mIGF0IGxlYXN0IDUgZW1waXJpY2FsIGFydGljbGVzIG9uIHRoZSB0b3BpYywgcHVibGlzaGVkIHNpbmNlIDIwMDAuCllvdSBhcmUgZW5jb3VyYWdlZCB0byB3b3JrIHdpdGggdGhlIFtVSSBXcml0aW5nIENlbnRlcl0oaHR0cHM6Ly93cml0aW5nY2VudGVyLnVpb3dhLmVkdSkgaW4gcmV2aXNpbmcgeW91ciBwYXBlci4KCiMjIyBGb3JtYXQgeyNsaXRSZXZpZXdGb3JtYXR9CgpUaGUgcGFwZXIgc2hvdWxkIGhhdmUgZml2ZSBzZWN0aW9uczoKCjEuIENvdmVyIExldHRlciwgZGVzY3JpYmVkIFtoZXJlXSgjc3RhZ2U2KQoxLiBUaXRsZSBQYWdlCjEuIEFic3RyYWN0CjEuIE1haW4gYm9keQoxLiBSZWZlcmVuY2VzCgpUaGUgbWFpbiBib2R5IG9mIHRoZSBwYXBlciBzaG91bGQgYmUgPHU+MTDigJMxMiBwYWdlczwvdT4sIGV4Y2x1ZGluZyB0aGUgY292ZXIgbGV0dGVyLCB0aXRsZSBwYWdlLCBhYnN0cmFjdCwgYW5kIHJlZmVyZW5jZXMuClRoZSB0ZXh0IHNob3VsZCBiZSBkb3VibGUtc3BhY2VkLCBpbiBbQVBBIGZvcm1hdF0oaHR0cHM6Ly9vd2wucHVyZHVlLmVkdS9vd2wvcmVzZWFyY2hfYW5kX2NpdGF0aW9uL2FwYV9zdHlsZS9hcGFfZm9ybWF0dGluZ19hbmRfc3R5bGVfZ3VpZGUvaW5kZXguaHRtbCksIGFuZCBpbiAxMi1wb2ludCBUaW1lcyBOZXcgUm9tYW4gZm9udC4KRm9yIHNhbXBsZSBwYXBlcnMgaW4gQVBBIGZvcm1hdCwgc2VlIFtoZXJlXShodHRwczovL293bC5wdXJkdWUuZWR1L293bC9yZXNlYXJjaF9hbmRfY2l0YXRpb24vYXBhX3N0eWxlL2FwYV9mb3JtYXR0aW5nX2FuZF9zdHlsZV9ndWlkZS9hcGFfc2FtcGxlX3BhcGVyLmh0bWwpLgoKIyMjIFN0YWdlcyB7I3N0YWdlc30KCiMjIyMgT3ZlcnZpZXcgeyNzdGFnZXNPdmVydmlld30KClRoaXMgcGFwZXIgd2lsbCBiZSBjb21wbGV0ZWQgaW4gNiBzdGFnZXMsIGFsbCB1cGxvYWRlZCB0byBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSk6CgoxLiBbR2VuZXJhdGUgYSB0b3BpY10oI3N0YWdlMSkKMS4gW0lkZW50aWZ5IGFydGljbGVzXSgjc3RhZ2UyKQoxLiBbVW5kZXJzdGFuZCBmaW5kaW5ncyBmcm9tIGFydGljbGVzXSgjc3RhZ2UzKQoxLiBbV3JpdGUgYSBjb21wbGV0ZSBkcmFmdF0oI3N0YWdlNCkKMS4gW0dpdmUgYW5kIHJlY2VpdmUgZmVlZGJhY2tdKCNzdGFnZTUpCjEuIFtJbmNvcnBvcmF0ZSBmZWVkYmFjayBhbmQgcG9saXNoIHdyaXRpbmddKCNzdGFnZTYpCgpUaGUgZ29hbHMgb2YgdGhpcyBwcm9qZWN0IGFyZSBmb3IgZWFjaCBzdHVkZW50IHRvIHByb2R1Y2UgYSB0aG91Z2h0ZnVsIHBhcGVyIHRoYXQgZGVzY3JpYmVzIGFuIGFzcGVjdCBvZiB0aGlzIGNvdXJzZSB0aGF0IGNhcHR1cmVkIHRoZWlyIGludGVyZXN0IGFuZCB0byBnYWluIG1vcmUgZXhwZXJpZW5jZSB3aXRoIHNjaWVudGlmaWMgd3JpdGluZy4KRWFjaCBzdGFnZSBvZiB0aGUgcHJvY2VzcyB3aWxsIGJlIGRpc2N1c3NlZCBpbiBjbGFzcywgc28gYXR0ZW5kYW5jZSBpcyBjcml0aWNhbC4KQWRkaXRpb25hbGx5LCBncmFkaW5nIHJ1YnJpY3MgZm9yIGVhY2ggc3RhZ2Ugd2lsbCBiZSBwb3N0ZWQgc28gdGhhdCBzdHVkZW50cyB1bmRlcnN0YW5kIHRoZSBiYXNpcyBmb3IgZXZhbHVhdGlvbiBvZiBlYWNoIHN0YWdlIG9mIHRoZSBhc3NpZ25tZW50LgpTdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhpcyBhc3NpZ25tZW50IHJlcXVpcmVzIHN0dWRlbnRzIHRvIGFkaGVyZSBjbG9zZWx5IHRvIHRoZSBkZWFkbGluZXMgb3V0bGluZWQuCjx1PkZvciB0aGlzIHJlYXNvbiwgc3Vic3RhbnRpYWwgcGVuYWx0aWVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwgbGF0ZSB3b3JrICgyMCUgb2ZmIGZpbmFsIGdyYWRlIGZvciBlYWNoIGRheSB0aGUgYXNzaWdubWVudCBpcyBsYXRlKS4KRnVydGhlciwgdG8gbWFrZSBzdXJlIHRoZSBwZWVyIHJldmlldyBwcm9jZXNzIGZvciBmaXJzdCBkcmFmdHMgaXMgc3VjY2Vzc2Z1bCwgYW55IGZpcnN0IGRyYWZ0cyBzdWJtaXR0ZWQgYWZ0ZXIgdGhlIGRlYWRsaW5lIG9mIEZyaWRheSwgTm92ZW1iZXIgMyB3aWxsIHJlY2VpdmUgYSB6ZXJvIGFuZCB3aWxsIG5vdCByZWNlaXZlIGEgcGVlciByZXZpZXcgKHRoZSBzdHVkZW50IHdpbGwgc3RpbGwgcmVjZWl2ZSBpbnN0cnVjdG9yIGZlZWRiYWNrKS4KSWYgeW91IGhhdmUgY29uY2VybnMgYWJvdXQgbWVldGluZyBvbmUgb2YgdGhlIGxpdGVyYXR1cmUgcmV2aWV3IGRlYWRsaW5lcywgcGxlYXNlIGNvbnRhY3QgUHJvZmVzc29yIFBldGVzZW4gb3IgdGhlIFRBIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZGlzY3Vzcy48L3U+CkFsbCBhc3NpZ25tZW50cyBzaG91bGQgYmUgdXBsb2FkZWQgdG8gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpIGJ5IDExOjU5IHAubS4gb24gdGhlIGR1ZSBkYXRlLgoKVGhlIHN0YWdlc+KAlGFuZCBkZWFkbGluZXPigJRhcmUgZGVzY3JpYmVkIGJlbG93OgoKIyMjIyBEZWFkbGluZXMgeyNkZWFkbGluZXN9CgpUaGUgd29ya2Zsb3cgb2YgdGhlIGxpdGVyYXR1cmUgcmV2aWV3IHN0YWdlcywgdGhlaXIgcmVzcGVjdGl2ZSBwZXJjZW50YWdlcyBpbiB0aGUgdG90YWwgbGl0ZXJhdHVyZSByZXZpZXcgZ3JhZGUsIGFuZCByZWxldmFudCBkdWUgZGF0ZXMgYXJlIGxpc3RlZCBiZWxvdy4KCnwgU3RhZ2UgfCBBc3NpZ25tZW50IERlc2NyaXB0aW9uIHwgUGVyY2VudCB8IER1ZSBEYXRlIHwKfC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IDEgICAgIHwgKipEZXZlbG9wIGEgdG9waWMgZGVzY3JpcHRpb24gKDIgc2VudGVuY2VzKSBhbmQgM+KAkzUga2V5d29yZHMqKiB5b3Ugd2lsbCB0aGVuIHVzZSB0byBjb25kdWN0IGEgbGl0ZXJhdHVyZSBzZWFyY2ggdXNpbmcgW0dvb2dsZSBTY2hvbGFyXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9Hb29nbGVTY2gpLCBbUHN5Y0lORk9dKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L2FwYS9wc3ljaW5mbyksIGFuZC9vciBbUHViTWVkXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9ubG0vcHVibWVkKS4gfCAyLjUlIHwgOS8xNSAgfAp8IDIgICAgIHwgKipJZGVudGlmeSBhbmQgZ2VuZXJhdGUgYSBsaXN0IG9mIDUgZW1waXJpY2FsIGFydGljbGVzKiogdGhhdCB5b3Ugd2lsbCBpbmNsdWRlIGluIHlvdXIgcmV2aWV3IGJhc2VkIG9uIHlvdXIgc2VhcmNoZXMgb2YgW0dvb2dsZSBTY2hvbGFyXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9Hb29nbGVTY2gpLCBbUHN5Y0lORk9dKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L2FwYS9wc3ljaW5mbyksIGFuZC9vciBbUHViTWVkXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9ubG0vcHVibWVkKS4gICAgfCAyLjUlIHwgOS8yNSAgfAp8IDMgICAgIHwgKipXcml0ZSBicmllZiBzdW1tYXJpZXMqKiBvZiBlYWNoIG9mIHRoZSA1IGVtcGlyaWNhbCBhcnRpY2xlcyB0aGF0IGluY2x1ZGVzIGNsZWFyIGRlc2NyaXB0aW9ucyBvZiBib3RoIHRoZSBtZXRob2RvbG9neSBhbmQgcmVsZXZhbnQgZmluZGluZ3MuIHwgMTAlICB8IDEwLzE2IHwKfCA0ICAgICB8ICoqQ29tcG9zZSBhIGNvbXBsZXRlIGZpcnN0IGRyYWZ0Kiogb2YgdGhlIHJldmlldyB0aGF0IGluY2x1ZGVzIGFuIGludHJvZHVjdGlvbiB3aXRoIHRoZXNpcywgZGVzY3JpcHRpb24sIGNyaXRpcXVlLCBhbmQgaW50ZWdyYXRpb24gb2YgdGhlIDUgZW1waXJpY2FsIHN0dWRpZXMuIHwgMjUlICB8IDExLzMgIHwKfCA1YSAgICB8IFBlZXIgcmV2aWV3cyBhcmUgYXNzaWduZWQuIHwg4oCTICB8IDExLzYgfAp8IDViICAgIHwgKipHaXZlIGZlZWRiYWNrKiogYnkgcHJvdmlkaW5nIGFub255bW91cyBwZWVyIHJldmlldyBvZiBhbm90aGVyIHN0dWRlbnQncyBwYXBlci4gfCAxMCUgIHwgMTEvMjcgfAp8IDVjICAgIHwgKipSZWNlaXZlIGZlZWRiYWNrKiogZnJvbSBwZWVyIGFuZCBmcm9tIGluc3RydWN0b3IuIHwg4oCTIHwgMTEvMjkgfAp8IDYgICAgIHwgKipJbmNvcnBvcmF0ZSBmZWVkYmFjayBhbmQgcHJvZHVjZSBhIGZpbmFsIGRvY3VtZW50LioqIHwgNTAlICB8IDEyLzggIHwKCiMjIyMgU3RhZ2UgMTogR2VuZXJhdGUgYSBUb3BpYyB7I3N0YWdlMX0KCllvdSB3aWxsIGZpcnN0IGRldmVsb3AgYSB0b3BpYyBhbmQgYSBzZXQgb2Yga2V5d29yZHMgZm9yIHlvdXIgcGFwZXIuCkZvciB0aGUgcmV2aWV3IGZvcm1hdCwgdGhpcyBpbnZvbHZlcyBnZW5lcmF0aW5nIGEgc3BlY2lmaWMgdG9waWMgYW5kIGtleXdvcmRzIHlvdSB3aWxsIHRoZW4gdXNlIHRvIGNvbmR1Y3QgYSBsaXRlcmF0dXJlIHNlYXJjaCB1c2luZyBbR29vZ2xlIFNjaG9sYXJdKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L0dvb2dsZVNjaCksIFtQc3ljSU5GT10oaHR0cHM6Ly9wdXJsLmxpYi51aW93YS5lZHUvYXBhL3BzeWNpbmZvKSwgYW5kL29yIFtQdWJNZWRdKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L25sbS9wdWJtZWQpLgpXZSB3aWxsIGRpc2N1c3Mgc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGluZyB0b3BpY3MgYW5kIGtleXdvcmRzIGluIGNsYXNzLCBhbmQgZXhhbXBsZXMgd2lsbCBiZSBwcm92aWRlZC4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4gYSBzdW1tYXJ5IG9mIHlvdXIgcmVzZWFyY2ggdG9waWMgKDHigJMyIHNlbnRlbmNlcykgYW5kIGEgbGlzdCBvZiBrZXl3b3JkcyB0aGF0IHdpbGwgc3RhcnQgeW91ciBsaXRlcmF0dXJlIHNlYXJjaDwvdT4uCgojIyMjIFN0YWdlIDI6IElkZW50aWZ5IEFydGljbGVzIHsjc3RhZ2UyfQoKQWZ0ZXIgeW91ciB0b3BpYyBoYXMgYmVlbiBhcHByb3ZlZCwgeW91IHdpbGwgdGhlbiBjb25kdWN0IGEgc2VhcmNoIHRvIGlkZW50aWZ5IHRoZSBhcnRpY2xlcyBmb3IgeW91ciBwYXBlci4KWW91IHdpbGwgc2VhcmNoIFBzeWNoSU5GTyBvciBQdWJNZWQgYW5kIGlkZW50aWZ5IGEgbWluaW11bSBvZiBmaXZlIGVtcGlyaWNhbCBhcnRpY2xlcyB0aGF0IGFyZSBhbGwgcmVsZXZhbnQgdG8geW91ciB0b3BpYy4KQXMgd2Ugd2lsbCBkaXNjdXNzIGluIGNsYXNzLCBpdCBpcyBpbXBvcnRhbnQgdG8gZGVmaW5lIHlvdXIgdG9waWMgY2FyZWZ1bGx5IHNvIHRoYXQgYWxsIG9mIHlvdXIgaWRlbnRpZmllZCBhcnRpY2xlcyBhcmUgYWRkcmVzc2luZyBjb21tb24gY29tcG9uZW50cy4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciBsaXN0IG9mIGFydGljbGVzPC91Pi4gCgojIyMjIFN0YWdlIDM6IFVuZGVyc3RhbmQgRmluZGluZ3MgZnJvbSBBcnRpY2xlcyB7I3N0YWdlM30KCk9uY2UgeW91IGhhdmUgaWRlbnRpZmllZCB0aGUgZml2ZSBwYXBlcnMgeW91IHdpc2ggdG8gd3JpdGUgYWJvdXQsIHlvdSB3aWxsIHRoZW4gcHJvZHVjZSBicmllZiBzdW1tYXJpZXMgb2YgZWFjaCBhcnRpY2xlIHRoYXQgaW5jbHVkZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtZXRob2RzIGVtcGxveWVkIGJ5IHRoZSByZXNlYXJjaGVycyBhbmQgdGhlaXIgYmFzaWMgZmluZGluZ3MgKDLigJM0IHBhcmFncmFwaHMgcGVyIGFydGljbGUgZm9yIGVhY2ggb2YgeW91ciBmaXZlIGFydGljbGVzKS4KWW91IHdpbGwgYWxzbyBpbmNsdWRlIHlvdXIgcmVmZXJlbmNlIGxpc3QsIGluIEFQQSBzdHlsZS4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciBhcnRpY2xlIHN1bW1hcmllczwvdT4uCgojIyMjIFN0YWdlIDQ6IFdyaXRlIGEgQ29tcGxldGUgRHJhZnQgeyNzdGFnZTR9CgpOZXh0LCB5b3Ugd2lsbCB3cml0ZSBhbmQgdHVybiBpbiBhIGNvbXBsZXRlIGRyYWZ0IG9mIHlvdXIgcGFwZXIuClRoZSBzeXN0ZW1hdGljIHJldmlldyBzaG91bGQgaW5jbHVkZSBib3RoIGRlc2NyaXB0aW9uIG9mIHRoZSBlbXBpcmljYWwgc3R1ZGllcyB5b3UndmUgaW5jbHVkZWQgYXMgd2VsbCBhcyBhbmFseXNpcywgY3JpdGlxdWUsIGFuZCBpbnRlZ3JhdGlvbiBvZiBmaW5kaW5ncy4KRm9yIHRoaXMgc3RhZ2UsIHlvdSB3aWxsIGFsc28gZ2VuZXJhdGUgYSB0aGVzaXMgdGhhdCBkZXNjcmliZXMgdGhlIG92ZXJhbGwgbWVzc2FnZSBvZiB5b3VyIHJldmlldyBhbmQgeW91IHdpbGwgd29yayB0byBkZW1vbnN0cmF0ZSBob3cgZWFjaCBhcnRpY2xlIGlzIChvciBpcyBub3QpIHN1cHBvcnRpdmUgb2YgeW91ciB0aGVzaXMuClRoZSBnb2FsIG9mIHRoaXMgc3RhZ2UgaXMgdG8gZGV2ZWxvcCB5b3VyIGlkZWFzIGFuZCBhcmd1bWVudCBzbyB0aGF0IHlvdSBjYW4gcmVjZWl2ZSBmZWVkYmFjay4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciBmaXJzdCBkcmFmdCBvZiB0aGUgcGFwZXIuCk5vdGU6IHlvdSBtdXN0IHR1cm4gaW4gYSBjb21wbGV0ZSBkcmFmdCBvZiB5b3VyIHBhcGVy4oCUbm90IGFuIG91dGxpbmUuPC91PgoKIyMjIyBTdGFnZSA1OiBHaXZlIGFuZCBSZWNlaXZpbmcgRmVlZGJhY2sgeyNzdGFnZTV9CgpGb2xsb3dpbmcgc3VibWlzc2lvbiBvZiB5b3VyIGZpcnN0IGRyYWZ0LCBhbGwgc3R1ZGVudHMgd2lsbCByZWNlaXZlIGRldGFpbGVkIGZlZWRiYWNrIGZyb20gdGhlIGluc3RydWN0b3IsIHdoaWNoIHdpbGwgaW5jbHVkZSBjcml0aXF1ZSBvZiBjb250ZW50LCBvcmdhbml6YXRpb24sIGFuZCBhcmd1bWVudC4KQWRkaXRpb25hbGx5IGVhY2ggc3R1ZGVudCB3aWxsIGNvbXBsZXRlIGFuIGFub255bW91cyBwZWVyIHJldmlldyBvZiBhIGZlbGxvdyBzdHVkZW50J3MgcGFwZXIgKHlvdXIgZHJhZnQgd2lsbCBhbHNvIGJlIHBlZXIgcmV2aWV3ZWQpLgpQZWVyIHJldmlld3Mgd2lsbCBiZSBibGluZGVkIGFuZCBvbmx5IEkgKHRoZSBpbnN0cnVjdG9yKSB3aWxsIGtub3cgd2hpY2ggcGFwZXJzIGJlbG9uZyB0byB3aGljaCBzdHVkZW50cy4KUmV2aWV3cyB3aWxsIGJlIGFzc2lnbmVkIGluIGNsYXNzLgpNb3JlIGRldGFpbHMgYWJvdXQgcHJvdmlkaW5nIGFuIGFwcHJvcHJpYXRlIHJldmlldyBhbmQgdGhlIGZvcm1hdHRpbmcgd2lsbCBiZSBwcm92aWRlZCBpbiBjbGFzcy4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciByZXZpZXcgb2YgdGhlIHBlZXIncyBwYXBlci48L3U+ClRoZSBpbnN0cnVjdG9yIHdpbGwgdGhlbiByZS1kaXN0cmlidXRlIHRoZSBwZWVyIHJldmlld3MgdG8gYXV0aG9ycy4gIAoKIyMjIyBTdGFnZSA2OiBJbmNvcnBvcmF0aW5nIEZlZWRiYWNrIGFuZCBQb2xpc2hpbmcgV3JpdGluZyB7I3N0YWdlNn0KCllvdSB3aWxsIHJlY2VpdmUgY29tbWVudHMgZnJvbSB0aGUgaW5zdHJ1Y3RvciBhbmQgZnJvbSB5b3VyIHBlZXIgcmV2aWV3ZXIgdmlhIGVtYWlsLgpZb3Ugd2lsbCB0aGVuIHVzZSB0aGVzZSBjb21tZW50cyB0byByZXZpc2UgeW91ciBwYXBlci4KWW91ciBmaW5hbCBwYXBlciBtdXN0IGluY2x1ZGUgYSA8dT5jb3ZlciBsZXR0ZXI8L3U+IHRoYXQgZGV0YWlscyB0aGUgY2hhbmdlcyB5b3UgbWFkZSB0byB5b3VyIGRyYWZ0IGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gdGhlIGluc3RydWN0b3IgYXMgd2VsbCBhcyBmcm9tIHlvdXIgcGVlciByZXZpZXdlci4KPHU+QWRkaXRpb25hbGx5LCBzdHVkZW50cyBhcmUgZW5jb3VyYWdlZCB0byBtZWV0IHdpdGggdGhlIFRBIGR1cmluZyB0aGUgd2VlayBvZiBOb3ZlbWJlciAyNyB0byByZXZpZXcgdGhlaXIgZmVlZGJhY2sgYW5kIGRpc2N1c3MgcGxhbnMgZm9yIHJldmlzaW9uLjwvdT4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHN1Ym1pdCB0aGUgbGl0ZXJhdHVyZSByZXZpZXc8L3U+LgpUaGUgbGl0ZXJhdHVyZSByZXZpZXcgc2hvdWxkIGluY2x1ZGUgdGhlIG1hbnVzY3JpcHQgaXRzZWxmIGFzIHdlbGwgYXMgYSBjb3ZlciBsZXR0ZXIgZGVzY3JpYmluZyB0aGUgY2hhbmdlcyBtYWRlIGluIHJlc3BvbnNlIHRvIGNvbW1lbnRzIGZyb20gdGhlIGluc3RydWN0b3IgYW5kIHRoZSBwZWVyIHJldmlld2VyLgoKIyBHcmFkaW5nIFN5c3RlbSBhbmQgdGhlIFVzZSBvZiArLy0geyNncmFkaW5nU3lzdGVtfQoKRmluYWwgZ3JhZGVzIHdpbGwgYmUgYXNzaWduZWQgYXQgdGhlIGVuZCBvZiB0aGUgc2VtZXN0ZXIgb24gdGhlIGJhc2lzIG9mIHlvdXIgdG90YWwgcGVyY2VudGFnZSBvZiBwb2ludHMgZWFybmVkIG9uIHF1aXp6ZXMsIGV4YW1pbmF0aW9ucywgd3JpdHRlbiBhc3NpZ25tZW50cywgYW5kIGxlY3R1cmUgYXR0ZW5kYW5jZSwgYXMgZGV0YWlsZWQgYmVsb3cuCkdyYWRlcyB3aWxsIGJlIGFzc2lnbmVkIG9uIGFuIGFic29sdXRlIHNjYWxlIChjcml0ZXJpb24tcmVmZXJlbmNlZCBncmFkaW5nOyBzZWUgYmVsb3cpOyBjb3Vyc2UgZ3JhZGVzIHdpbGwgbm90IGJlIGN1cnZlZC4KTm8gZXh0cmEtY3JlZGl0IG9wcG9ydHVuaXRpZXMgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBjb3Vyc2UuClBsZWFzZSBub3RlOiBBcyBhIG1hdHRlciBvZiBmYWlybmVzcyB0byBhbGwgc3R1ZGVudHMsIEkgYXNzaWduIGdyYWRlcyBiYXNlZCBvbiBwZXJmb3JtYW5jZSBhbmQgZG8gbm90IG5lZ290aWF0ZSBncmFkZXMuCkFkZGl0aW9uYWxseSwgYSBwZW5hbHR5IG9mIDIwJSBwZXIgZGF5IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgYXNzaWdubWVudHMgdHVybmVkIGluIGxhdGUuCkZpbmFsIGdyYWRlcyB3aWxsIGJlIGFzc2lnbmVkIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgoKfCBHcmFkZSB8IFBlcmNlbnQgfAp8Oi0tLS0tLXw6LS0tLS0tLS18CnwgQSsgICAgfCA5N+KAkzEwMCUgfAp8IEEgICAgIHwgOTPigJM5NiAgIHwKfCBB4oiSICAgIHwgOTDigJM5MiAgIHwKfCBCKyAgICB8IDg34oCTODkgICB8CnwgQiAgICAgfCA4M+KAkzg2ICAgfAp8IELiiJIgICAgfCA4MOKAkzgyICAgfAp8IEMrICAgIHwgNzfigJM3OSAgIHwKfCBDICAgICB8IDcz4oCTNzYgICB8CnwgQ+KIkiAgICB8IDcw4oCTNzIgICB8CnwgRCsgICAgfCA2N+KAkzY5ICAgfAp8IEQgICAgIHwgNjPigJM2NiAgIHwKfCBE4oiSICAgIHwgNjDigJM2MiAgIHwKfCBGICAgICB8IDDigJM1OSAgICB8CgpJIHJvdW5kIHVwIGZyb20gLjUgd2hlbiBkZXRlcm1pbmluZyBmaW5hbCBncmFkZXMuCkZvciBleGFtcGxlLCBhIGNvdXJzZSBwZXJjZW50IG9mIDc5LjUwIHdvdWxkIHJlY2VpdmUgYSBC4oiSLCB3aGVyZWFzIGEgY291cnNlIHBlcmNlbnQgb2YgNzkuNDkgd291bGQgcmVjZWl2ZSBhIEMrLgoKIyBDb3Vyc2UgR3JhZGVzIHsjY291cnNlR3JhZGVzfQoKRmluYWwgY291cnNlIGdyYWRlcyB3aWxsIGJlIGFzc2Vzc2VkIGJhc2VkIG9uIHlvdXIgcGVyZm9ybWFuY2UgaW4gdGhlIGFjdGl2aXRpZXMgYmVsb3cuClRoZSByZWxhdGl2ZSBjb250cmlidXRpb24gb2YgZWFjaCBjb21wb25lbnQgdG8geW91ciBmaW5hbCBncmFkZSBpcyBhcyBmb2xsb3dzOgoKLSA1JSAgICBbTGVjdHVyZSBBdHRlbmRhbmNlXSgjYXR0ZW5kYW5jZVBhcnRpY2lwYXRpb24pCi0gMTAlICAgW0xpdGVyYXR1cmUgQ3JpdGlxdWVzXSgjbGl0Q3JpdGlxdWVzKSAoMiBhdCA1JSBlYWNoKQotIDIwJSAgIFtFeGFtIDFdKCNleGFtcykgKE1pZC1UZXJtKQotIDIwJSAgIFtFeGFtIDJdKCNleGFtcykgKEZpbmFsKQotIDE1JSAgIFtRdWl6emVzXSgjcXVpenplcykgKDUgcXVpenplcyBhZnRlciBkcm9wcGluZyBsb3dlc3QgcXVpeiBzY29yZSwgMyUgZWFjaCkKLSAzMCUgICBbTGl0ZXJhdHVyZSBSZXZpZXddKCNsaXRSZXZpZXcpCgojIFRlbnRhdGl2ZSBDb3Vyc2UgT3V0bGluZSAoZXhhbSBkYXRlcyBmaXhlZCkgeyNvdXRsaW5lfQoKfCBEYXRlICAgICAgICB8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVhZGluZyAgICAgICAgICAgICAgICAgIHwgQXNzaWdubWVudCBEdWUgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgOC8yMSAgICAgICAgfCBIaXN0b3J5IG9mIENoaWxkIFBzeWNob3BhdGhvbG9neSAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA4LzIzICAgICAgICB8IERldmVsb3BtZW50YWwgUHN5Y2hvcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxOyBBcnRpY2xlIDEgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDgvMjUgICAgICAgIHwgVGhlb3JpZXMgJiBDYXVzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDI7IEFydGljbGUgMiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOC8yOCAgICAgICAgfCBUaGVvcmllcyAmIENhdXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMiAgICAgICAgICAgICAgICB8ICoqQ3JpdGlxdWUgMSBEdWUgKEFydGljbGUgMikqKiAgICAgICAgIHwKfCA4LzMwICAgICAgICB8IFJlc2VhcmNoIHdpdGggQ2hpbGRyZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAzOyBBcnRpY2xlIDMgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMSAgICAgICAgIHwgKkNvbmR1Y3RpbmcgYSBMaXRlcmF0dXJlIFNlYXJjaCogICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS80ICAgICAgICAgfCAqKk5vIENsYXNzIOKAkyBMYWJvciBEYXkqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipRdWl6IDEgT3BlbnMqKiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvNiAgICAgICAgIHwgRFNNIEFzc2Vzc21lbnQgJiBEaWFnbm9zaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS84ICAgICAgICAgfCBBdHRlbnRpb24tRGVmaWNpdCBIeXBlcmFjdGl2aXR5IERpc29yZGVyICAgICAgICAgICAgICB8IE1XVyBDaC4gOCAgICAgICAgICAgICAgICB8ICoqQ3JpdGlxdWUgMiBEdWUgKEFydGljbGUgMykqKiAgICAgICAgIHwKfCA5LzExICAgICAgICB8IEF0dGVudGlvbi1EZWZpY2l0IEh5cGVyYWN0aXZpdHkgRGlzb3JkZXIgICAgICAgICAgICAgIHwgTVdXIENoLiA4ICAgICAgICAgICAgICAgIHwgKipRdWl6IDEgQ2xvc2VzKiogICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMTMgICAgICAgIHwgQXR0ZW50aW9uLURlZmljaXQgSHlwZXJhY3Rpdml0eSBEaXNvcmRlciAgICAgICAgICAgICAgfCBNV1cgQ2guIDg7IEFydGljbGUgNCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS8xNSAgICAgICAgfCBBdXRpc20gU3BlY3RydW0gRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gNiAgICAgICAgICAgICAgICB8ICoqVG9waWMgYW5kIEtleXdvcmRzIER1ZSoqICAgICAgICAgICAgIHwKfCA5LzE4ICAgICAgICB8IEF1dGlzbSBTcGVjdHJ1bSBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiA2ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMjAgICAgICAgIHwgQXV0aXNtIFNwZWN0cnVtIERpc29yZGVycy8qV3JpdGluZyBBcnRpY2xlIFN1bW1hcmllcyogfCBNV1cgQ2guIDY7IEFydGljbGUgNSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS8yMiAgICAgICAgfCAqKlJlc2VhcmNoIERheSDigJMgV29yayBvbiBQYXBlcioqICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipRdWl6IDIgT3BlbnMqKiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMjUgICAgICAgIHwgSW50ZWxsZWN0dWFsIERpc2FiaWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDUgICAgICAgICAgICAgICAgfCAqKkxpc3Qgb2YgQXJ0aWNsZXMgRHVlKiogICAgICAgICAgICAgICB8CnwgOS8yNyAgICAgICAgfCBJbnRlbGxlY3R1YWwgRGlzYWJpbGl0eS9MZWFybmluZyBEaXNvcmRlcnMgICAgICAgICAgICB8IE1XVyBDaC4gNSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA5LzI5ICAgICAgICB8IExlYXJuaW5nIERpc29yZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIFNlY3Rpb24gNy40ICgiU3BlY2lmaWMgTGVhcm5pbmcgRGlzb3JkZXIiKSB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIGNoYXB0ZXIgfCAqKlF1aXogMiBDbG9zZXMqKiAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvMiAgICAgICAgfCBDYXRjaC1VcCBhbmQgRXhhbSBSZXZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMC80ICAgICAgICB8ICoqTUlEVEVSTSBFWEFNIElOIENMQVNTKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzYgICAgICAgIHwgQ29uZHVjdCBQcm9ibGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvOSAgICAgICAgfCBDb25kdWN0IFByb2JsZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gOTsgQXJ0aWNsZSA2ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMC8xMSAgICAgICB8ICpXcml0aW5nIGEgTGl0ZXJhdHVyZSBSZXZpZXcqICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZSA3ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzEzICAgICAgIHwgQW54aWV0eSBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDExICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvMTYgICAgICAgfCBBbnhpZXR5IERpc29yZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMTEgICAgICAgICAgICAgICB8ICoqQXJ0aWNsZSBTdW1tYXJpZXMgRHVlKiogICAgICAgICAgICAgIHwKfCAxMC8xOCAgICAgICB8IEFueGlldHkgRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxMTsgQXJ0aWNsZSA4ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzIwICAgICAgIHwgRGVwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDEwICAgICAgICAgICAgICAgfCAqKlF1aXogMyBPcGVucyoqICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvMjMgICAgICAgfCBEZXByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMTAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMC8yNSAgICAgICB8IEJpcG9sYXIgRGlzb3JkZXIvRE1ERCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxMDsgQXJ0aWNsZSA5ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzI3ICAgICAgIHwgRWxpbWluYXRpb24vRmVlZGluZyBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgU2VjdGlvbiAxMy4zOiAoIkVsaW1pbmF0aW9uIERpc29yZGVycyIsICJFbnVyZXNpcyIsIGFuZCAiRW5jb3ByZXNpcyIpOyBNV1cgQ2guIDE0IHwgKipRdWl6IDMgQ2xvc2VzKiogICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzMwICAgICAgIHwgRWF0aW5nIERpc29yZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDE0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMSAgICAgICAgfCBFYXRpbmcgRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMTAgICAgICAgICAgICAgICB8ICoqUXVpeiA0IE9wZW5zKiogICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMS8zICAgICAgICB8IFN1YnN0YW5jZSBVc2UgYW5kIFJpc2stVGFraW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIFNlY3Rpb24gMTMuNSAoIkFkb2xlc2NlbnQgU3Vic3RhbmNlLVVzZSBEaXNvcmRlcnMiKSB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIGNoYXB0ZXIgfCAqKjFzdCBEcmFmdCBEdWUqKiAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvNiAgICAgICAgfCBTdWljaWRlIGFuZCBTZWxmLUluanVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMTEgICAgICAgICAgICAgICB8ICoqUGVlciBSZXZpZXdzIEFzc2lnbmVkKiogICAgICAgICAgICAgIHwKfCAxMS84ICAgICAgICB8IENoaWxkIE1hbHRyZWF0bWVudCAmIFRyYXVtYSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxMiAgICAgICAgICAgICAgIHwgKipRdWl6IDQgQ2xvc2VzKiogICAgICAgICAgICAgICAgICAgICAgfAp8IDExLzEwICAgICAgIHwgQ2hpbGQgTWFsdHJlYXRtZW50ICYgVHJhdW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDEyICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMTMgICAgICAgfCBDaGlsZCBNYWx0cmVhdG1lbnQgJiBUcmF1bWEgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGVzIDEyICYgMTMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMS8xNSAgICAgICB8IEluZGl2aWR1YWwgRGlmZmVyZW5jZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZSAxNCAgICAgICAgICAgICAgIHwgKipRdWl6IDUgT3BlbnMqKiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDExLzE3ICAgICAgIHwgUGFyZW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBcnRpY2xlIDE1ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMjDigJMxMS8yNCB8ICoqRkFMTCBCUkVBSyDigJMgTk8gQ0xBU1NFUyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMjcgICAgICAgfCBEaXZvcmNlIGFuZCBNYXJpdGFsIENvbmZsaWN0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMTYgICAgICAgICAgICAgICB8ICoqUGVlciBSZXZpZXcgRHVlKiogICAgICAgICAgICAgICAgICAgIHwKfCAxMS8yOSAgICAgICB8IFBlZXIgUmVsYXRpb25zaGlwcyAmIEJ1bGx5aW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZXMgMTcgJiAxOCAgICAgICAgIHwgKipRdWl6IDUgQ2xvc2VzKio7ICoqUmVjZWl2ZSBSZXZpZXdzKiogfAp8IDEyLzEgICAgICAgIHwgTmVpZ2hib3Job29kIEZhY3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBcnRpY2xlIDE5ICAgICAgICAgICAgICAgfCAqKlF1aXogNiBPcGVucyoqICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTIvNCAgICAgICAgfCBSZXNpbGllbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMjAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMi82ICAgICAgICB8IFByZXZlbnRpb24gU2NpZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZSAyMSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEyLzggICAgICAgIHwgQ2F0Y2gtVXAvRmluYWwgRXhhbSBSZXZpZXcgaW4gQ2xhc3MgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqKlF1aXogNiBDbG9zZXMqKjsgKipGaW5hbCBQYXBlciBEdWUqKiB8CnwgMTIvOCAgICAgICAgfCAqKkZJTkFMIFBBUEVSIERVRSoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICB8ICoqRklOQUwgRVhBTSBUQkQgKFdlZWsgb2YgMTIvMTHigJMxMi8xNSkqKiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIERhdGUgYW5kIFRpbWUgb2YgdGhlIEZpbmFsIEV4YW0geyNmaW5hbEV4YW19CgpUaGUgW2ZpbmFsIGV4YW1pbmF0aW9uIGRhdGUgYW5kIHRpbWVdKGh0dHBzOi8vcmVnaXN0cmFyLnVpb3dhLmVkdS9maW5hbC1leGFtLXNjaGVkdWxlcykgd2lsbCBiZSBhbm5vdW5jZWQgYnkgdGhlIFJlZ2lzdHJhciBnZW5lcmFsbHkgYnkgdGhlIGZpZnRoIHdlZWsgb2YgY2xhc3NlcywgYW5kIGl0IHdpbGwgYmUgYW5ub3VuY2VkIG9uIHRoZSBjb3Vyc2UgSUNPTiBzaXRlIG9uY2UgaXQgaXMga25vd24uCjx1PkRvIG5vdCBwbGFuIHlvdXIgZW5kIG9mIHRoZSBzZW1lc3RlciB0cmF2ZWwgcGxhbnMgdW50aWwgdGhlIGZpbmFsIGV4YW0gc2NoZWR1bGUgaXMgbWFkZSBwdWJsaWMuCkl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8ga25vdyB0aGUgZGF0ZSwgdGltZSwgYW5kIHBsYWNlIG9mIHRoZSBmaW5hbCBleGFtLjwvdT4KQWNjb3JkaW5nIHRvIHRoZSBSZWdpc3RyYXIncyBmaW5hbCBleGFtIHBvbGljeSwgc3R1ZGVudHMgPHU+aGF2ZSBhIG1heGltdW0gb2YgdHdvIHdlZWtzIGFmdGVyIHRoZSBhbm5vdW5jZWQgZmluYWwgZXhhbSBzY2hlZHVsZTwvdT4gdG8gcmVxdWVzdCBhIGNoYW5nZSBpZiBhbiBleGFtIGNvbmZsaWN0IGV4aXN0cyBvciBpZiBhIHN0dWRlbnQgaGFzIG1vcmUgdGhhbiB0d28gZXhhbXMgc2NoZWR1bGVkIGZvciB0aGUgc2FtZSBkYXkgKHNlZSB0aGUgW3BvbGljeV0oaHR0cHM6Ly9yZWdpc3RyYXIudWlvd2EuZWR1L21ha2V1cC1maW5hbC1leGFtaW5hdGlvbi1wb2xpY2llcykgaGVyZSkuCgojIENvdXJzZSBSZXNvdXJjZXMgeyNjb3Vyc2VSZXNvdXJjZXN9CgpUaGVyZSBhcmUgbWFueSBjb3Vyc2UgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSBzdWNjZWVkIGluIHRoZSBjbGFzcywgaW5jbHVkaW5nOgoKLSB0aGUgdGV4dGJvb2sgYW5kIHJlYWRpbmdzCi0gbGVjdHVyZXMgYW5kIHNsaWRlcwotIGdldHRpbmcgYW5kIHJldmlld2luZyBtaXNzZWQgbm90ZXMgZnJvbSBhIHBlZXIKLSBUQSBvZmZpY2UgaG91cnMKLSBpbnN0cnVjdG9yIG9mZmljZSBob3VycwotIHBlZXIgc3R1ZHkgZ3JvdXBzCi0gdGhlIFVJIFtXcml0aW5nIENlbnRlcl0oaHR0cHM6Ly93cml0aW5nY2VudGVyLnVpb3dhLmVkdSkKLSBUdXRvciBJb3dhOiBodHRwczovL3R1dG9yLnVpb3dhLmVkdQoKIyBEcm9wIERlYWRsaW5lIGZvciB0aGlzIENvdXJzZSB7I2Ryb3BEZWFkbGluZX0KCllvdSBtYXkgZHJvcCBhbiBpbmRpdmlkdWFsIGNvdXJzZSBiZWZvcmUgdGhlIGRyb3AgZGVhZGxpbmU7IGFmdGVyIHRoaXMgZGVhZGxpbmUgeW91IHdpbGwgbmVlZCBjb2xsZWdpYXRlIGFwcHJvdmFsLgpZb3UgY2FuIGxvb2sgdXAgdGhlIGRyb3AgZGVhZGxpbmUgZm9yIHRoaXMgY291cnNlIFtoZXJlXShodHRwczovL3JlZ2lzdHJhci51aW93YS5lZHUvY291cnNlLWRlYWRsaW5lcykuCldoZW4geW91IGRyb3AgYSBjb3Vyc2UsIGEgIlciIHdpbGwgYXBwZWFyIG9uIHlvdXIgdHJhbnNjcmlwdC4KVGhlIG1hcmsgb2YgIlciIGlzIGEgbmV1dHJhbCBtYXJrIHRoYXQgZG9lcyBub3QgYWZmZWN0IHlvdXIgR1BBLgpUbyBkaXNjdXNzIGhvdyBkcm9wcGluZyAob3Igc3RheWluZyBpbikgYSBjb3Vyc2UgbWlnaHQgYWZmZWN0IHlvdXIgYWNhZGVtaWMgZ29hbHMsIHBsZWFzZSBjb250YWN0IHlvdXIgQWNhZGVtaWMgQWR2aXNvci4KRGlyZWN0aW9ucyBmb3IgYWRkaW5nIG9yIGRyb3BwaW5nIGEgY291cnNlIGFuZCBvdGhlciByZWdpc3RyYXRpb24gY2hhbmdlcyBjYW4gYmUgZm91bmQgb24gdGhlIFtSZWdpc3RyYXIncyB3ZWJzaXRlXShodHRwczovL3JlZ2lzdHJhci51aW93YS5lZHUvY2hhbmdlLXJlZ2lzdHJhdGlvbi1teXVpKS4KU3R1ZGVudHMgY2FuIGZpbmQgcG9saWNpZXMgb24gZHJvcHBpbmcgQ0xBUyBjb3Vyc2VzIFtoZXJlXShodHRwczovL2NsYXMudWlvd2EuZWR1L3N0dWRlbnRzL3N0dWRlbnRzLWFjYWRlbWljLXBvbGljaWVzL3JlZ2lzdHJhdGlvbi1wb2xpY2llcyNkcm9wcGluZykuCgojIEZlZWRiYWNrIGFib3V0IHRoZSBDb3Vyc2UgeyNmZWVkYmFja30KCkkgd2VsY29tZSBmZWVkYmFjayBhdCBhbnkgcG9pbnQgZHVyaW5nIHRoZSBjbGFzcy4KSWYgeW91IGhhdmUgY29tbWVudHMgb24gdGhlIGNsYXNzIG9yIG15IHRlYWNoaW5nLCBwbGVhc2UgZmVlbCBmcmVlIHRvIG1lZXQgd2l0aCBtZSBkdXJpbmcgb2ZmaWNlIGhvdXJzLgoKIyMgU3R1ZGVudCBDb21wbGFpbnRzIHsjY29tcGxhaW50c30KClN0dWRlbnRzIHdpdGggYSBjb21wbGFpbnQgYWJvdXQgYSBncmFkZSBvciBhIHJlbGF0ZWQgbWF0dGVyIHNob3VsZCBmaXJzdCBkaXNjdXNzIHRoZSBzaXR1YXRpb24gd2l0aCB0aGUgaW5zdHJ1Y3RvciwgYW5kIGZpbmFsbHkgd2l0aCB0aGUgREVPIChDaGFpcikgb2YgdGhlIGRlcGFydG1lbnQsIHNjaG9vbCwgb3IgcHJvZ3JhbSBvZmZlcmluZyB0aGUgY291cnNlLgpTb21ldGltZXMgc3R1ZGVudHMgd2lsbCBiZSByZWZlcnJlZCB0byB0aGUgZGVwYXJ0bWVudCBvciBwcm9ncmFtJ3MgRGlyZWN0b3Igb2YgVW5kZXJncmFkdWF0ZSBTdHVkaWVzIChEVVMpIG9yIERpcmVjdG9yIG9mIEdyYWR1YXRlIFN0dWRpZXMgKERHUykuClN0dWRlbnRzIHNob3VsZCBjb250YWN0IFtDTEFTIFVuZGVyZ3JhZHVhdGUgUHJvZ3JhbXNdKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvc3R1ZGVudHMvaGFuZGJvb2svc3R1ZGVudC1yaWdodHMtcmVzcG9uc2liaWxpdGllcyNyaWdodHMpIGZvciBzdXBwb3J0IHdoZW4gdGhlIG1hdHRlciBpcyBub3QgcmVzb2x2ZWQgYXQgdGhlIHByZXZpb3VzIGxldmVsLgoKIyBDb21tdW5pY2F0aW9uOiBVSSBFbWFpbCB7I2VtYWlsfQoKU3R1ZGVudHMgYXJlIHJlc3BvbnNpYmxlIGZvciBhbGwgb2ZmaWNpYWwgY29ycmVzcG9uZGVuY2VzIHNlbnQgdG8gdGhlaXIgVUkgZW1haWwgYWRkcmVzcyAodWlvd2EuZWR1KSBhbmQgbXVzdCB1c2UgdGhpcyBhZGRyZXNzIGZvciBhbnkgY29tbXVuaWNhdGlvbiB3aXRoIGluc3RydWN0b3JzIG9yIHN0YWZmIGluIHRoZSBVSSBjb21tdW5pdHkuCkZvciB0aGUgcHJpdmFjeSBhbmQgdGhlIHByb3RlY3Rpb24gb2Ygc3R1ZGVudCByZWNvcmRzLCBVSSBmYWN1bHR5IGFuZCBzdGFmZiBjYW4gb25seSBjb3JyZXNwb25kIHdpdGggVUkgZW1haWwgYWRkcmVzc2VzLgoKIyMgT3RoZXIgRXhwZWN0YXRpb25zIG9mIFN0dWRlbnQgUGVyZm9ybWFuY2UgeyNvdGhlckV4cGVjdGF0aW9uc30KClN0dWRlbnRzIGhhdmUgdGhlIHJpZ2h0IHRvIGEgZGlzdHJhY3Rpb24tZnJlZSBsZWFybmluZyBlbnZpcm9ubWVudC4KWW91IGhhdmUgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIGhlbHAgY3JlYXRlIHN1Y2ggYSBjbGFzc3Jvb20gZW52aXJvbm1lbnQuClBsZWFzZSB0cmVhdCBvdGhlciBzdHVkZW50cyBpbiB0aGUgY2xhc3MsIHRoZSBUQSwgYW5kIHRoZSBpbnN0cnVjdG9yIHdpdGggcmVzcGVjdC4KU3R1ZGVudHMgYXJlIGV4cGVjdGVkIHRvIGhlbHAgZWFjaCBvdGhlciBsZWFybiBhbmQgdG8gY29udHJpYnV0ZSBvdmVyYWxsIHRvIHRoZSBsZWFybmluZyBlbnZpcm9ubWVudCBvZiB0aGUgY291cnNlLgpBcnJpdmluZyBwcmVwYXJlZCBmb3IgY2xhc3MgaXMgcGFydCBvZiB0aGlzIGV4cGVjdGF0aW9uLgoKIyBVbml2ZXJzaXR5IFBvbGljaWVzIHsjVUlvd2FQb2xpY2llc30KCltVbml2ZXJzaXR5IFBvbGljaWVzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKQoKW0FjY29tbW9kYXRpb25zIGZvciBTdHVkZW50cyB3aXRoIERpc2FiaWxpdGllc10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS9zdHVkZW50LWNvdXJzZS1wb2xpY2llcylcClRoZSBVbml2ZXJzaXR5IGlzIGNvbW1pdHRlZCB0byBwcm92aWRpbmcgYW4gZWR1Y2F0aW9uYWwgZXhwZXJpZW5jZSB0aGF0IGlzIGFjY2Vzc2libGUgdG8gYWxsIHN0dWRlbnRzLgpJZiBhIHN0dWRlbnQgaGFzIGEgZGlhZ25vc2VkIGRpc2FiaWxpdHkgb3Igb3RoZXIgZGlzYWJsaW5nIGNvbmRpdGlvbiB0aGF0IG1heSBpbXBhY3QgdGhlIHN0dWRlbnQncyBhYmlsaXR5IHRvIGNvbXBsZXRlIHRoZSBjb3Vyc2UgcmVxdWlyZW1lbnRzIGFzIHN0YXRlZCBpbiB0aGUgc3lsbGFidXMsIHRoZSBzdHVkZW50IG1heSBzZWVrIGFjY29tbW9kYXRpb25zIHRocm91Z2ggW1N0dWRlbnQgRGlzYWJpbGl0eSBTZXJ2aWNlc10oaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1L3N0dWRlbnRzKSAoU0RTKS4KU0RTIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgW0xldHRlcnMgb2YgQWNjb21tb2RhdGlvbiAoTE9BKV0oaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1L3N0dWRlbnRzL2xldHRlci1hY2NvbW1vZGF0aW9ucy1sb2EpIGF2YWlsYWJsZSB0byB0aGUgc3R1ZGVudC4KPHU+VGhlIHN0dWRlbnQgbXVzdCBwcm92aWRlIGEgTE9BIHRvIHRoZSBpbnN0cnVjdG9yIGFzIGVhcmx5IGluIHRoZSBzZW1lc3RlciBhcyBwb3NzaWJsZSwgYnV0IHJlcXVlc3RzIG5vdCBtYWRlIGF0IGxlYXN0IHR3byB3ZWVrcyBwcmlvciB0byB0aGUgc2NoZWR1bGVkIGFjdGl2aXR5IGZvciB3aGljaCBhbiBhY2NvbW1vZGF0aW9uIGlzIHNvdWdodCBtYXkgbm90IGJlIGFjY29tbW9kYXRlZC48L3U+ClRoZSBMT0Egd2lsbCBzcGVjaWZ5IHdoYXQgcmVhc29uYWJsZSBjb3Vyc2UgYWNjb21tb2RhdGlvbnMgdGhlIHN0dWRlbnQgaXMgZWxpZ2libGUgZm9yIGFuZCB0aG9zZSB0aGUgaW5zdHJ1Y3RvciBzaG91bGQgcHJvdmlkZS4KQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgb24gdGhlIFtTRFMgd2Vic2l0ZV0oaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1L3N0dWRlbnRzL2FwcGx5KS4KCltDbGFzcyBSZWNvcmRpbmdzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKVwKU3R1ZGVudHMgbWF5IGJlIGVucm9sbGVkIGluIGEgY2xhc3Mgd2hlcmUgc29tZSBzZXNzaW9ucyB3aWxsIGJlIHJlY29yZGVkIG9yIGxpdmUtc3RyZWFtZWQuClN1Y2ggcmVjb3JkaW5ncy9zdHJlYW1pbmcgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSB0byBzdHVkZW50cyByZWdpc3RlcmVkIGZvciB0aGUgY2xhc3MuClRoZXNlIHJlY29yZGluZ3MgYXJlIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgdGhlIGluc3RydWN0b3IgYW5kIHRoZXkgbWF5IG5vdCBiZSBzaGFyZWQgb3IgcmVwcm9kdWNlZCB3aXRob3V0IHRoZSBleHBsaWNpdCwgd3JpdHRlbiBjb25zZW50IG9mIHRoZSBpbnN0cnVjdG9yLgpGdXJ0aGVyLCBzdHVkZW50cyBtYXkgbm90IHNoYXJlIHRoZXNlIHNlc3Npb25zIHdpdGggdGhvc2Ugbm90IGluIHRoZSBjbGFzcyBvciB1cGxvYWQgdGhlbSB0byBhbnkgb3RoZXIgb25saW5lIGVudmlyb25tZW50LgpEb2luZyBzbyB3b3VsZCBiZSBhIGJyZWFjaCBvZiB0aGUgQ29kZSBvZiBTdHVkZW50IENvbmR1Y3QsIGFuZCwgaW4gc29tZSBjYXNlcywgYSB2aW9sYXRpb24gb2Ygc3RhdGUgYW5kIGZlZGVyYWwgbGF3LCBpbmNsdWRpbmcgdGhlIEZlZGVyYWwgRWR1Y2F0aW9uIFJpZ2h0cyBhbmQgUHJpdmFjeSBBY3QgKEZFUlBBKS4KClRoZSB1bmF1dGhvcml6ZWQgdmlkZW8gb3IgYXVkaW8gcmVjb3JkaW5nIG9mIGFjYWRlbWljIGFjdGl2aXRpZXMgKGUuZy4sIGxlY3R1cmVzLCBjb3Vyc2UgZGlzY3Vzc2lvbnMsIG9mZmljZSBob3VycywgZXRjLikgYnkgYSBzdHVkZW50IGlzIHByb2hpYml0ZWQuClN0dWRlbnRzIHdpdGggYSByZWFzb25hYmxlIGFjY29tbW9kYXRpb24gZm9yIHJlY29yZGluZyBhcHByb3ZlZCBieSBTdHVkZW50IERpc2FiaWxpdHkgU2VydmljZXMgc2hvdWxkIG5vdGlmeSBlYWNoIGluc3RydWN0b3IgYW5kIHByb3ZpZGUgdGhlIExldHRlciBvZiBBY2NvbW1vZGF0aW9uIHByaW9yIHRvIHVzaW5nIHRoZSBhY2NvbW1vZGF0aW9uLgpBIHN0dWRlbnQgbWF5IHJlY29yZCBjbGFzc3Jvb20gYWN0aXZpdGllcyB3aXRoIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIHRoZSBpbnN0cnVjdG9yIGFuZCBub3RpY2UgdG8gb3RoZXIgc3R1ZGVudHMgaW4gdGhlIGNsYXNzIHRoYXQgYXVkaW8gb3IgdmlkZW8gcmVjb3JkaW5nIG1heSBvY2N1ci4KQW55IGFuZCBhbGwgY2xhc3Nyb29tIHJlY29yZGluZyBtdXN0IGJlIGZvciBwZXJzb25hbCBhY2FkZW1pYyB1c2Ugb25seS4KVGhlIGRpc3RyaWJ1dGlvbiwgc2hhcmluZywgc2FsZSwgb3IgcG9zdGluZyBvZiByZWNvcmRpbmdzIG9uIHRoZSBpbnRlcm5ldCAoaW5jbHVkaW5nIHNvY2lhbCBtZWRpYSksIGluIHdob2xlIG9yIGluIHBhcnQsIGlzIHByb2hpYml0ZWQgYW5kIGRvaW5nIHNvIG1heSBiZSBhIHZpb2xhdGlvbiBvZiB0aGUgQ29kZSBvZiBTdHVkZW50IExpZmUgYW5kL29yIHN0YXRlIG9yIGZlZGVyYWwgcHJpdmFjeSwgY29weXJpZ2h0LCBvciBvdGhlciBsYXdzLgoKLSBbRnJlZSBTcGVlY2ggYW5kIEV4cHJlc3Npb25dKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW05vbi1EaXNjcmltaW5hdGlvbl0oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS9zdHVkZW50LWNvdXJzZS1wb2xpY2llcykKLSBbQWNjb21tb2RhdGlvbnMgZm9yIFN0dWRlbnRzIHdpdGggRGlzYWJpbGl0aWVzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKQotIFtBYnNlbmNlcyBmcm9tIENsYXNzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKQotIFtBYnNlbmNlcyBmb3IgUmVsaWdpb3VzIEhvbHkgRGF5c10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS9zdHVkZW50LWNvdXJzZS1wb2xpY2llcykKLSBbQWJzZW5jZXMgZm9yIE1pbGl0YXJ5IFNlcnZpY2UgT2JsaWdhdGlvbnNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0NsYXNzcm9vbSBFeHBlY3RhdGlvbnNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW1NleHVhbCBIYXJhc3NtZW50L01pc2NvbmR1Y3QgYW5kIFN1cHBvcnRpdmUgTWVhc3VyZXNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0NvbmZsaWN0IFJlc29sdXRpb25dKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW01lbnRhbCBIZWFsdGhdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0Jhc2ljIE5lZWRzIGFuZCBTdHVkZW50IFN1cHBvcnRdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0NsYXNzIFJlY29yZGluZ3NdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCgojIFdoZXJlIHRvIEdldCBBY2FkZW1pYyBTdXBwb3J0IGZvciBUaGlzIENvdXJzZSB7I2FjYWRlbWljLXN1cHBvcnR9CgotIERyb3AtaW4gc3R1ZHkgZ3JvdXBzIGFuZCBvbmUtb24tb25lIHR1dG9yaW5nOiBzdHVkZW50IGRyb3AtaW4gaG91cnMgb2YgdGhlIFRBIGFuZCBpbnN0cnVjdG9yCi0gRm9ybWFsIHR1dG9yaW5nOiBUdXRvciBJb3dhOiBodHRwczovL3R1dG9yLnVpb3dhLmVkdQotIFVJIFdyaXRpbmcgQ2VudGVyOiBodHRwczovL3dyaXRpbmdjZW50ZXIudWlvd2EuZWR1Ci0gQWNhZGVtaWMgYWNjb21tb2RhdGlvbnM6IGh0dHBzOi8vc2RzLnN0dWRlbnRsaWZlLnVpb3dhLmVkdQoKIyBNZW50YWwgSGVhbHRoIFJlc291cmNlcyBhbmQgU3R1ZGVudCBTdXBwb3J0IHsjbWVudGFsLWhlYWx0aH0KClN0dWRlbnRzIGFyZSBlbmNvdXJhZ2VkIHRvIGJlIG1pbmRmdWwgb2YgdGhlaXIgbWVudGFsIGhlYWx0aCBhbmQgc2VlayBoZWxwIGFzIGEgcHJldmVudGl2ZSBtZWFzdXJlIG9yIGlmIGZlZWxpbmcgb3ZlcndoZWxtZWQgYW5kL29yIHN0cnVnZ2xpbmcgdG8gbWVldCBjb3Vyc2UgZXhwZWN0YXRpb25zLgpTdHVkZW50cyBhcmUgZW5jb3VyYWdlZCB0byB0YWxrIHRvIHRoZWlyIGluc3RydWN0b3IgZm9yIGFzc2lzdGFuY2Ugd2l0aCBzcGVjaWZpYyBjbGFzcy1yZWxhdGVkIGNvbmNlcm5zLgpGb3IgYWRkaXRpb25hbCBzdXBwb3J0IGFuZCBjb3Vuc2VsaW5nLCBzdHVkZW50cyBhcmUgZW5jb3VyYWdlZCB0byBjb250YWN0IFVuaXZlcnNpdHkgQ291bnNlbGluZyBTZXJ2aWNlIChVQ1MpLgpJbmZvcm1hdGlvbiBhYm91dCBVQ1MsIGluY2x1ZGluZyByZXNvdXJjZXMgYW5kIGhvdyB0byBzY2hlZHVsZSBhbiBhcHBvaW50bWVudCwgY2FuIGJlIGZvdW5kIGF0IFtjb3Vuc2VsaW5nLnVpb3dhLmVkdV0oaHR0cDovL2NvdW5zZWxpbmcudWlvd2EuZWR1KS4KRmluZCBvdXQgbW9yZSBhYm91dCBVSSBtZW50YWwgaGVhbHRoIHNlcnZpY2VzIGF0OiBbbWVudGFsaGVhbHRoLnVpb3dhLmVkdV0oaHR0cDovL21lbnRhbGhlYWx0aC51aW93YS5lZHUpLCBpbmNsdWRpbmcgdGhlIDI0LTcgW1VJIFN1cHBvcnQgYW5kIENyaXNpcyBMaW5lXShodHRwczovL21lbnRhbGhlYWx0aC51aW93YS5lZHUvdWktc3VwcG9ydC1hbmQtY3Jpc2lzLWxpbmUpLgoKQWRkaXRpb25hbGx5LCB0aGUgT2ZmaWNlIG9mIHRoZSBEZWFuIG9mIFN0dWRlbnRzIGNhbiBoZWxwIHN0dWRlbnRzIG5hdmlnYXRlIHBlcnNvbmFsIGNyaXNpcyBzaXR1YXRpb25zLgpUaGV5IGNhbiBwcm92aWRlIG9uZS1vbi1vbmUgc3VwcG9ydCwgaGVscCB3aXRoIGlkZW50aWZ5aW5nIG9wdGlvbnMsIGFuZCBhY2Nlc3MgdG8gW2Jhc2ljIG5lZWRzIHJlc291cmNlcyAoc3VjaCBhcyBmb29kLCByZW50LCBjaGlsZGNhcmUsIGV0Yy4pXShodHRwOi8vYmFzaWNuZWVkcy51aW93YS5lZHUpLgpTdHVkZW50IENhcmUgYW5kIEFzc2lzdGFuY2U6IDEzMiBJTVUsIFtkb3MtYXNzaXN0YW5jZUB1aW93YS5lZHVdKG1haWx0bzpkb3MtYXNzaXN0YW5jZUB1aW93YS5lZHUpLCBvciAzMTktMzM1LTExNjIgYW5kIG1vcmUgaW5mbzogW2Rvcy51aW93YS5lZHUvYXNzaXN0YW5jZV0oaHR0cHM6Ly9kb3MudWlvd2EuZWR1L2Fzc2lzdGFuY2UpCgpJZiB5b3UgZmVlbCB0aGF0IHlvdSBvciBzb21lb25lIHlvdSBrbm93IG1heSBiZSBzdHJ1Z2dsaW5nIHdpdGggYW4gYWNhZGVtaWMsIGVtb3Rpb25hbCwgb3IgcHN5Y2hvbG9naWNhbCBwcm9ibGVtLCB0aGUgZm9sbG93aW5nIG9yZ2FuaXphdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgYXNzaXN0YW5jZToKCnwgU2VydmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb250YWN0IEluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IFVuaXZlcnNpdHkgb2YgSW93YSBBY2FkZW1pYyBBZHZpc2luZyBDZW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzUzLTU3MDAsIGh0dHBzOi8vYWR2aXNpbmdjZW50ZXIudWlvd2EuZWR1ICAgICAgICAgICAgICAgICAgICAgICB8CnwgVW5pdmVyc2l0eSBDb3Vuc2VsaW5nIFNlcnZpY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMzUtNzI5NCwgaHR0cHM6Ly93d3cudWlvd2EuZWR1L3VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBTdHVkZW50IEhlYWx0aCBTZXJ2aWNlIC0gTWVudGFsIEhlYWx0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNS04Mzk0LCBodHRwczovL3N0dWRlbnRoZWFsdGgudWlvd2EuZWR1L3NlcnZpY2VzL3BzeWNoaWF0cnkgICAgfAp8IFVuaXZlcnNpdHkgb2YgSW93YSBIb3NwaXRhbHMgYW5kIENsaW5pY3MgQWR1bHQgUHN5Y2hpYXRyeSBTZXJ2aWNlcyBDbGluaWMgIHwgMzUzLTYzMTQsIGh0dHBzOi8vd3d3LnVpaGVhbHRoY2FyZS5vcmcvUHN5Y2hpYXRyeSAgICAgICAgICAgICAgICB8CnwgU2Vhc2hvcmUgQ2xpbmljIChpbiB0aGUgVUkgRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcykgfCAzMzUtMjQ2NywgaHR0cHM6Ly9wc3ljaG9sb2d5LnVpb3dhLmVkdS9yZXNvdXJjZXMvc2Vhc2hvcmUtY2xpbmljIHwKfCBXb21lbidzIFJlc291cmNlIGFuZCBBY3Rpb24gQ2VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNS0xNDg2LCBodHRwczovL3dyYWMudWlvd2EuZWR1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJhcGUgVmljdGltIEFkdm9jYWN5IFByb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzE5LTMzNS02MDAwIG9yIDgwMC0yMjgtMTYyNSwgaHR0cHM6Ly93d3cudWlvd2EuZWR1L35ydmFwICAgICAgICB8CnwgT2ZmaWNlIG9mIFNleHVhbCBNaXNjb25kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMTktMzM1LTYyMDAsIGh0dHBzOi8vb3NtcmMudWlvd2EuZWR1ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDb21tVW5pdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDg1NS0zMjUtNDI5NiwgaHR0cHM6Ly9idWlsdGJ5Y29tbXVuaXR5Lm9yZy9jcmlzaXMgICAgICAgICAgICAgICAgfAp8IENvbW11bml0eSAmIEZhbWlseSBSZXNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzUxLTQzNTcsIGh0dHBzOi8vd3d3LmNmcmhlbHBzLm9yZy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cgo8dT5JZiB5b3Ugb3Igc29tZW9uZSB5b3Uga25vdyBpcyBjb250ZW1wbGF0aW5nIHN1aWNpZGU8L3U+LCBlaXRoZXIgY2FsbCBvciB0ZXh0IHRoZSBTdWljaWRlIGFuZCBDcmlzaXMgTGlmZWxpbmUgYXQgOTg4LCBvciBjYWxsIDkxMS4KCiMgRGlzY2xhaW1lciB7I2Rpc2NsYWltZXJ9CgpUaGlzIHN5bGxhYnVzIGlzIHN1YmplY3QgdG8gY2hhbmdlLgpBbnkgY2hhbmdlcyB3aWxsIGJlIGRpc2N1c3NlZCBpbiBjbGFzcywgdmlhIGVtYWlsLCBhbmQvb3Igb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLgo=