1 REDCap Data Management

1.1 Updating instruments in REDCap

  1. Should you need to make any IMMEDIATE changes on RedCap, create those alterations and then notify Dr. Petersen to push changes.

1.2 Adding new RAs to REDCap/tasks

  1. Go to “User Rights” on the left side (under “Applications”).
  2. In the text box labeled “Assign new user”, type the new lab member’s HawkID and click “Assign to Role” (e.g., “RA”, “Grad Student”).
    • “RA Analyst” is for RAs conducting honors projects who need to do data analysis.
    • “Project Manager” is for the Lab Coordinator.
    • “Add Measures” is for selected RAs who are deemed ready by Dr. Petersen to make edits/additions to measures in REDCap
    • After assigning them to the correct role, go to “DAGs” on the left side (under “Applications”).
  3. To add an RA to their specific task, go to Project Home → Project Setup → Online Designer → click on name of required task in the left column
  4. Select “Edit” on the “Coder Name” field.
  5. Under “Choices (one choice per line)”, add the subsequent number followed by a comma and the RA’s name.
  6. Click “Save”.

1.3 Adding fields to an instrument

  1. To edit an instrument, go to: Project Home → Project Setup → Online Designer → click on name of required task in the left column
  2. Select the correct location where question needs to be added and select “Add Field”
  3. Select field type—the most frequently we use are:
    • Text Box
    • Multiple Choice
    • Yes/No
    • True/False
    • Note: For Multiple Choice Questions and Checkboxes, enter one answer choice per line in the box labeled “Choices”
  4. Add variable name:
    • Variable names must be unique
    • Variable names within the same instrument should have the same beginning (e.g. all variables within the school information instrument start with “school_”)
  5. Indicate whether question is required
  6. Add data validation (if possible) to reduce the possibility of human error in data entry
  7. Questions within the same instrument may belong to different sections. To add a new section:
    • Click “Add Field”
    • As field type select “Begin New Section (with optional text)
    • As field label, name the new section
    • Save

1.4 Branching Logic

Branching logic is a method to link two questions with each other. The answer of Question A will determine whether Question B will be displayed. Typically question A is a checkbox or multiple-choice question. Follow the below steps to use branching logic:

  1. Create all questions to be linked
  2. Click on the green arrow to begin using branching logic
    • Use the drag and drop builder to create questions to be linked
    • Use the code to link questions together
      • Example: When, [other_instrument_name] = '1', show this question

1.5 Field Embedding

Filed embedding is an advanced branching logic method which allows Question B to be directly embedded in Question A, if the relevant answer choice is selected.

  1. Use branching logic to link Question B to Question A, so Question B will only appear if the participant selects “other” for Question A (in our example, variable name for Question A would be college, variable name for Question B: college_other)
  2. Make sure that answer choice “Other” is coded as “9” (see figure 1)
  3. Return to Question A and add several spaces behind the answer choice you would like to embed.
  4. Insert variable you would like to embed in curly brackets {var_name} (in our example this would be {college_other}; see figure 1)
  5. Save
  6. When testing the instrument, a textbox should now appear directly behind the answer choice, when selecting “Other” (see below example)

RedcapExample1 RedcapExample2

1.6 Designating Instruments as a Survey

If an instrument is intended to be completed by participants as a survey (as opposed to a data entry instrument for entry of data by lab members), the instrument will need to be designated as a survey. To designate an instrument as a survey, go to Project Home → Project Setup → Online Designer → click on “Enable” under the “Enabled as Survey” column for the relevant instrument.

1.7 Designating Instruments to Events

Most instruments in longitudinal studies will need to be desigated across events. Instruments should already be created and approved before designating to events.

To designate events, follow the below steps:

  1. Go to “Designer” → “Project Setup”
  2. Under the “Define your events and designate instruments for them” section, select Designate Instrument for my events
  3. Select, begin editing and select checkboxes for each event to designate the instrument to
  4. Important: Update the roles in User Rights to be able to view and edit the newly designated instrument

1.8 Designating Instruments as Repeatable

Some instruments will be designated as repeatable. These events will first need to be designated across events (See section on designating events). Tasks that require multiple people to create the same form will often need to be repeatable. For example, coding tasks that require multiple people to check across forms for reliability.

To designate forms as repeatable, follow the below steps:

  1. Under “Enable optional modules and customizations”, select Repeatable instruments and events
  2. Select instruments to be designated repeatable

2 Creating Instruments in REDCap

2.1 Steps to Add a New Instrument

  1. Project Home → Project Setup → Online Designer
  2. In grey box (Data Collection Instruments), click on “+ Create” to create a new instrument from scratch

However, an instrument will not show up for entry until:

  1. The addition of the measure has been approved by Dr. Petersen.
  2. The instrument has been designated to an event.
  3. (As necessary, the instrument has been designated as a survey.)
  4. (As necessary, the instrument has been designated as repeatable).
  5. User rights are updated to allow users to view the instrument (i.e., “Read Only” or “View and Edit”)

2.2 Good Practices

  • Include relevant instructions where applicable
  • Omit “introductory” variables (e.g., date of birth) that are collected from other measures
  • Field Labels are the same across instruments where applicable
  • Choices are the same across instruments where applicable
    • Include numbers (if relevant) in parentheses in row below column choices
  • Choices follow correct format: Number, Choice
    • (e.g., 1, female)
  • For yes/no questions, use the “Yes - No” question type (rather than multiple choice radio buttons)
    1. No = 0
    2. Yes = 1
  • For yes/no questions with additional options (e.g., “not applicable”), use multiple choice radio buttons where:
    1. No = 0
    2. Yes = 1
    3. Other = 9
    4. Not applicable = -999
  • Time questions
    • Specific time (e.g., What is the child’s bedtime?):
      • Begin question with instructions: Below you will enter your child’s bedtime. Please specify in 12-hour time (AM/PM). For example, if your child’s bedtime is 10:30 PM, please enter 10 hours and 30 minutes like the example below. (show example image below)
      • Have three variables for every time question:
        • AM/PM (Radio Button)
        • hours (text box), italicized
          • Validation: integer from 1–12
        • minutes (text box), italicized
          • Validation: integer from 0–59
      • Specify 12-hour time in the question
        • Example: What is the child’s bedtime? Please specify in 12-hour time (AM/PM).
    • Duration: (e.g., How long does the child nap each day?)
      • Below you will enter how long your child naps each day. Please specify in hours and minutes. For example, if your child naps 2 hours and 30 minutes each day, please enter 2 hours and 30 minutes like the example below (show example image below).
      • Have two variables for every time question:
        • hours (text box), italicized.
          • Validation: integer (minimum 0; maximum—case specific)
        • minutes (text box), italicized
          • Validation: integer (minimum 0; maximum 59)

2.3 Creating Variables

  • Variable names follow the lab conventions (measure_item): use abbreviated measure name, all lowercase, less than 26 characters
  • Validation is used wherever possible
  • For variables with identifying information (e.g., name, address), select the checkbox labeled “Identifier”
  • Branching logic is used to give questions only to relevant participants
  • A “Matrix of Fields” is used to group together items with common response options
  • For “Matrix of Fields,” only select “Ranking” if you want the participant to select only one response per column
  • Where helpful, “Sections” are used to break up the questions
  • Radio buttons are used rather than drop-down lists
  • For crucial variables, “Required” is selected
  • If necessary, piping is used
  • Add the following verbatim to the end of every questionnaire (in italics): “Please be sure you answered all items.”
    • Name the variable: measure_allitems (where “measure” is the abbreviated measure name)

2.4 Adding Smart Variables to Questionnaires

In every surey, we want to add the following “Smart Variables”. These variables automatically calculate the survey start time, survey start date, and duration survey was completed. Variable names should follow the appropriate naming convention that is used for each survey. After you have added variables, slack the Lab Coordinator for review. Do not add variables to more than three surveys at a time. These variables should be entered at the end of each survey. For each survey, follow the instructions below to add the required smart variables:

2.4.1 Timestamps

  1. “Date/Timestamp in the rater’s timezone”
    • Add a “Text Box” field with validation “Datetime w/seconds (Y-M-D H:M:S)
    • Use variable name: prefix_ratertimezone
    • Add the following action tags:
      • @HIDDEN-SURVEY
      • @NOW
      • @READONLY
  2. “Date/Timestamp (REDCap server)”
    • Add a “Text Box” field with validation “Datetime w/seconds (Y-M-D H:M:S)
    • Use variable name: prefix_servertimezone
    • Add the following Action tags:
      • @HIDDEN-SURVEY
      • @NOW-SERVER
      • @READONLY
  3. “Date/Timestamp (UTC)”
    • Add a “Text Box” field with validation “Datetime w/seconds (Y-M-D H:M:S)
    • Use variable name: prefix_centraltimezone
    • Add the following Action tags:
      • @HIDDEN-SURVEY
      • @NOW-UTC
      • @READONLY

2.4.2 Date Completed, Time Completed and Survey Durations

In the below section, it is necessary to identify the instrument_name for each variable added. In REDCap, open the Designer tab and navigate to the survey to be edited. In the URL on the webpage, identify the instrument name for the given survey. For example, the below URL corresponds to the parenting_partner instrument.

  1. “Survey Time Started:”
    • Add a “Text Box” field with no validation
    • Use variable name: prefix_timestarted
    • Add the following Action Tags
      • @HIDDEN-SURVEY
      • @READONLY
      • @CALCTEXT([survey-time-started:instrument_name])
  2. “Survey Date Started:”
    • Add a “Text Box” field with no validation
    • Use variable name: prefix_datestarted
    • Add the following Action Tags
      • @HIDDEN-SURVEY
      • @READONLY
      • @CALCTEXT([survey-date-started:instrument_name])
  3. “Survey Time Completed:”
    • Add a “Text Box” field with no validation
    • Use variable name: prefix_timecompleted
    • Add the following Action Tags
      • @HIDDEN-SURVEY
      • @READONLY
      • @CALCTEXT([survey-time-completed:instrument_name])
  4. “Survey Date Completed:”
    • Add a “Text Box” field with no validation
    • Use variable name: prefix_datecompleted
    • Add the following Action Tags
      • @HIDDEN-SURVEY
      • @READONLY
      • @CALCTEXT([survey-date-completed:instrument_name])
  5. “Survey Duration:”
    • Add a “Text Box” field with numeric validation
    • Use variable name: prefix_surveyduration
    • Add the following Action Tags
      • @HIDDEN-SURVEY
      • @READONLY
      • @CALCTEXT([survey-duration:instrument_name:m])
  6. “Survey Duration Completed:”
    • Add a “Text Box” field with numeric validation
    • Use variable name: prefix_surveydurationcompleted
    • Add the following Action Tags
      • @HIDDEN-SURVEY
      • @READONLY
      • @CALCTEXT([survey-duration-completed:instrument_name:m])
  7. Slack the Lab Coordinator for review

2.5 Troubleshooting

  • When a field that will be hidden by branching logic has a value, REDCap offers to delete the value: “ERASE CURRENT VALUE OF THE FIELD?”
  • Sometimes REDCap may record incorrect values or may fail to record values at all. You can check for this by:
  1. Navigating to a project, then in the side bar clicking “Data Quality” under “Applications”
  2. Under Rule #H “Incorrect values for calculated fields”, click “Execute”
  3. You will see a table with any incorrect calculated values (including missing values). Check the table to make sure the discrepant fields are what you expect. Also check to make sure there are no rows that suggest overwriting legitimate values. If a row looks like it is actually correct, click “exclude”.
  4. Click “Fix calcs now” to record the correct values in the data.

2.6 How To

  • Em dash (—):
    • —
  • Line Break
    • <br>
  • Italic font:
    • <i>This is some text!</i>
    • Example: This is some text!
  • Change font size:
    • <font size="6">This is some text!</font>
    • Example: This is some text!
  • Change font color:
    • <font color="red">This color will be red.</font>
    • Example: This color will be red.

2.7 Lab Universal Notations

  • Yes = 1, No = 0
  • True = 1, False = 0
  • Sex: Male = 0, Female = 1
  • Not Applicable = -999
  • Coding Options
    • Correct = 2 (or 1, if there is no option for “initially incorrect, changed to correct”)
    • Incorrect = 0
    • Initially incorrect, changed to correct = 1
    • No response = -9
    • Uncodeable = 9

For Likert scales:

  • If there are numbers listed for the Likert scale options, use those numbers as the values
  • If there are not numbers listed, check with Dr. Petersen for what numbers to use as the values
  • In general, values start with number 1 (not 0—unless the value actually reflects complete absence of something)
  • If there is an “Other” option, code it as “9”, if possible
  • If there is a “N/A” option, code it as “-999”

2.8 Editing the Data Dictionary

  • If editing the data dictionary, do not use Excel!—Excel truncates values in cells
    • Instead, use LibreOffice with UTF-8 encoding
LS0tCnRpdGxlOiAiUkVEQ2FwIE1hbnVhbCIKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoCiAgZWNobyA9IFRSVUUsCiAgZXJyb3IgPSBUUlVFLAogIGNvbW1lbnQgPSAiIikKYGBgCgojIFJFRENhcCBEYXRhIE1hbmFnZW1lbnQKCiMjIFVwZGF0aW5nIGluc3RydW1lbnRzIGluIFJFRENhcCB7I3VwZGF0ZXN9CgoxLiBTaG91bGQgeW91IG5lZWQgdG8gbWFrZSBhbnkgKioqSU1NRURJQVRFKioqIGNoYW5nZXMgb24gUmVkQ2FwLCBjcmVhdGUgdGhvc2UgYWx0ZXJhdGlvbnMgYW5kIHRoZW4gbm90aWZ5IERyLiBQZXRlcnNlbiB0byBwdXNoIGNoYW5nZXMuIAoKIyMgQWRkaW5nIG5ldyBSQXMgdG8gUkVEQ2FwL3Rhc2tzIHsjYWRkUGVyc29ubmVsfQoKMS4gR28gdG8gIlVzZXIgUmlnaHRzIiBvbiB0aGUgbGVmdCBzaWRlICh1bmRlciAiQXBwbGljYXRpb25zIikuCjEuIEluIHRoZSB0ZXh0IGJveCBsYWJlbGVkICJBc3NpZ24gbmV3IHVzZXIiLCB0eXBlIHRoZSBuZXcgbGFiIG1lbWJlcidzIEhhd2tJRCBhbmQgY2xpY2sgIkFzc2lnbiB0byBSb2xlIiAoZS5nLiwgIlJBIiwgIkdyYWQgU3R1ZGVudCIpLgogICAtICJSQSBBbmFseXN0IiBpcyBmb3IgUkFzIGNvbmR1Y3RpbmcgaG9ub3JzIHByb2plY3RzIHdobyBuZWVkIHRvIGRvIGRhdGEgYW5hbHlzaXMuCiAgIC0gIlByb2plY3QgTWFuYWdlciIgaXMgZm9yIHRoZSBMYWIgQ29vcmRpbmF0b3IuCiAgIC0gIkFkZCBNZWFzdXJlcyIgaXMgZm9yIHNlbGVjdGVkIFJBcyB3aG8gYXJlIGRlZW1lZCByZWFkeSBieSBEci4gUGV0ZXJzZW4gdG8gbWFrZSBlZGl0cy9hZGRpdGlvbnMgdG8gbWVhc3VyZXMgaW4gUkVEQ2FwCiAgIC0gQWZ0ZXIgYXNzaWduaW5nIHRoZW0gdG8gdGhlIGNvcnJlY3Qgcm9sZSwgZ28gdG8gIkRBR3MiIG9uIHRoZSBsZWZ0IHNpZGUgKHVuZGVyICJBcHBsaWNhdGlvbnMiKS4KMS4gIFRvIGFkZCBhbiBSQSB0byB0aGVpciBzcGVjaWZpYyB0YXNrLCBnbyB0byBQcm9qZWN0IEhvbWUg4oaSIFByb2plY3QgU2V0dXAg4oaSIE9ubGluZSBEZXNpZ25lciDihpIgY2xpY2sgb24gbmFtZSBvZiByZXF1aXJlZCB0YXNrIGluIHRoZSBsZWZ0IGNvbHVtbgoxLiBTZWxlY3QgIkVkaXQiIG9uIHRoZSAiQ29kZXIgTmFtZSIgZmllbGQuCjEuIFVuZGVyICJDaG9pY2VzIChvbmUgY2hvaWNlIHBlciBsaW5lKSIsIGFkZCB0aGUgc3Vic2VxdWVudCBudW1iZXIgZm9sbG93ZWQgYnkgYSBjb21tYSBhbmQgdGhlIFJBJ3MgbmFtZS4KMS4gQ2xpY2sgIlNhdmUiLgoKIyMgQWRkaW5nIGZpZWxkcyB0byBhbiBpbnN0cnVtZW50IHsjYWRkRmllbGRzfQoKMS4gVG8gZWRpdCBhbiBpbnN0cnVtZW50LCBnbyB0bzogUHJvamVjdCBIb21lIOKGkiBQcm9qZWN0IFNldHVwIOKGkiBPbmxpbmUgRGVzaWduZXIg4oaSIGNsaWNrIG9uIG5hbWUgb2YgcmVxdWlyZWQgdGFzayBpbiB0aGUgbGVmdCBjb2x1bW4KMS4gU2VsZWN0IHRoZSBjb3JyZWN0IGxvY2F0aW9uIHdoZXJlIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGFkZGVkIGFuZCBzZWxlY3QgIkFkZCBGaWVsZCIKMS4gU2VsZWN0IGZpZWxkIHR5cGXigJR0aGUgbW9zdCBmcmVxdWVudGx5IHdlIHVzZSBhcmU6CiAgIC0gVGV4dCBCb3gKICAgLSBNdWx0aXBsZSBDaG9pY2UKICAgLSBZZXMvTm8KICAgLSBUcnVlL0ZhbHNlCiAgIC0gKipOb3RlKio6IEZvciBNdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb25zIGFuZCBDaGVja2JveGVzLCBlbnRlciBvbmUgYW5zd2VyIGNob2ljZSBwZXIgbGluZSBpbiB0aGUgYm94IGxhYmVsZWQgIkNob2ljZXMiCjEuIEFkZCB2YXJpYWJsZSBuYW1lOgogICAtIFZhcmlhYmxlIG5hbWVzIG11c3QgYmUgdW5pcXVlCiAgIC0gVmFyaWFibGUgbmFtZXMgd2l0aGluIHRoZSBzYW1lIGluc3RydW1lbnQgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYmVnaW5uaW5nIChlLmcuIGFsbCB2YXJpYWJsZXMgd2l0aGluIHRoZSBzY2hvb2wgaW5mb3JtYXRpb24gaW5zdHJ1bWVudCBzdGFydCB3aXRoICJzY2hvb2xfIikKMS4gSW5kaWNhdGUgd2hldGhlciBxdWVzdGlvbiBpcyByZXF1aXJlZAoxLiBBZGQgZGF0YSB2YWxpZGF0aW9uIChpZiBwb3NzaWJsZSkgdG8gcmVkdWNlIHRoZSBwb3NzaWJpbGl0eSBvZiBodW1hbiBlcnJvciBpbiBkYXRhIGVudHJ5CjEuIFF1ZXN0aW9ucyB3aXRoaW4gdGhlIHNhbWUgaW5zdHJ1bWVudCBtYXkgYmVsb25nIHRvIGRpZmZlcmVudCBzZWN0aW9ucy4KVG8gYWRkIGEgbmV3IHNlY3Rpb246CiAgIC0gQ2xpY2sgIkFkZCBGaWVsZCIKICAgLSBBcyBmaWVsZCB0eXBlIHNlbGVjdCAiQmVnaW4gTmV3IFNlY3Rpb24gKHdpdGggb3B0aW9uYWwgdGV4dCkKICAgLSBBcyBmaWVsZCBsYWJlbCwgbmFtZSB0aGUgbmV3IHNlY3Rpb24KICAgLSBTYXZlCgojIyBCcmFuY2hpbmcgTG9naWMgeyNicmFuY2hpbmdMb2dpY30KCkJyYW5jaGluZyBsb2dpYyBpcyBhIG1ldGhvZCB0byBsaW5rIHR3byBxdWVzdGlvbnMgd2l0aCBlYWNoIG90aGVyLgpUaGUgYW5zd2VyIG9mIFF1ZXN0aW9uIEEgd2lsbCBkZXRlcm1pbmUgd2hldGhlciBRdWVzdGlvbiBCIHdpbGwgYmUgZGlzcGxheWVkLgpUeXBpY2FsbHkgcXVlc3Rpb24gQSBpcyBhIGNoZWNrYm94IG9yIG11bHRpcGxlLWNob2ljZSBxdWVzdGlvbi4KRm9sbG93IHRoZSBiZWxvdyBzdGVwcyB0byB1c2UgYnJhbmNoaW5nIGxvZ2ljOgoKMS4gQ3JlYXRlIGFsbCBxdWVzdGlvbnMgdG8gYmUgbGlua2VkCjEuIENsaWNrIG9uIHRoZSBncmVlbiBhcnJvdyB0byBiZWdpbiB1c2luZyBicmFuY2hpbmcgbG9naWMKICAgLSBVc2UgdGhlIGRyYWcgYW5kIGRyb3AgYnVpbGRlciB0byBjcmVhdGUgcXVlc3Rpb25zIHRvIGJlIGxpbmtlZAogICAtIFVzZSB0aGUgY29kZSB0byBsaW5rIHF1ZXN0aW9ucyB0b2dldGhlcgogICAgICAtIEV4YW1wbGU6IFdoZW4sIGBbb3RoZXJfaW5zdHJ1bWVudF9uYW1lXSA9ICcxJ2AsIHNob3cgdGhpcyBxdWVzdGlvbgoKIyMgRmllbGQgRW1iZWRkaW5nIHsjZmllbGRFbWJlZGRpbmd9CgpGaWxlZCBlbWJlZGRpbmcgaXMgYW4gYWR2YW5jZWQgYnJhbmNoaW5nIGxvZ2ljIG1ldGhvZCB3aGljaCBhbGxvd3MgUXVlc3Rpb24gQiB0byBiZSBkaXJlY3RseSBlbWJlZGRlZCBpbiBRdWVzdGlvbiBBLCBpZiB0aGUgcmVsZXZhbnQgYW5zd2VyIGNob2ljZSBpcyBzZWxlY3RlZC4KCjEuIFVzZSBicmFuY2hpbmcgbG9naWMgdG8gbGluayBRdWVzdGlvbiBCIHRvIFF1ZXN0aW9uIEEsIHNvIFF1ZXN0aW9uIEIgd2lsbCBvbmx5IGFwcGVhciBpZiB0aGUgcGFydGljaXBhbnQgc2VsZWN0cyAib3RoZXIiIGZvciBRdWVzdGlvbiBBCihpbiBvdXIgZXhhbXBsZSwgdmFyaWFibGUgbmFtZSBmb3IgUXVlc3Rpb24gQSB3b3VsZCBiZSBjb2xsZWdlLCB2YXJpYWJsZSBuYW1lIGZvciBRdWVzdGlvbiBCOiBjb2xsZWdlX290aGVyKQoxLiBNYWtlIHN1cmUgdGhhdCBhbnN3ZXIgY2hvaWNlICJPdGhlciIgaXMgY29kZWQgYXMgIjkiIChzZWUgZmlndXJlIDEpCjEuCVJldHVybiB0byBRdWVzdGlvbiBBIGFuZCBhZGQgc2V2ZXJhbCBzcGFjZXMgYmVoaW5kIHRoZSBhbnN3ZXIgY2hvaWNlIHlvdSB3b3VsZCBsaWtlIHRvIGVtYmVkLgoxLiBJbnNlcnQgdmFyaWFibGUgeW91IHdvdWxkIGxpa2UgdG8gZW1iZWQgaW4gY3VybHkgYnJhY2tldHMge3Zhcl9uYW1lfSAoaW4gb3VyIGV4YW1wbGUgdGhpcyB3b3VsZCBiZSB7Y29sbGVnZV9vdGhlcn07IHNlZSBmaWd1cmUgMSkKMS4gU2F2ZQoxLiBXaGVuIHRlc3RpbmcgdGhlIGluc3RydW1lbnQsIGEgdGV4dGJveCBzaG91bGQgbm93IGFwcGVhciBkaXJlY3RseSBiZWhpbmQgdGhlIGFuc3dlciBjaG9pY2UsIHdoZW4gc2VsZWN0aW5nICJPdGhlciIgKHNlZSBiZWxvdyBleGFtcGxlKQoKIVtSZWRjYXBFeGFtcGxlMV0oaW1hZ2VzL3JlZGNhcEV4YW1wbGUxLnBuZykKIVtSZWRjYXBFeGFtcGxlMl0oaW1hZ2VzL3JlZGNhcEV4YW1wbGUyLnBuZykKCiMjIERlc2lnbmF0aW5nIEluc3RydW1lbnRzIGFzIGEgU3VydmV5IHsjc3VydmV5fQoKSWYgYW4gaW5zdHJ1bWVudCBpcyBpbnRlbmRlZCB0byBiZSBjb21wbGV0ZWQgYnkgcGFydGljaXBhbnRzIGFzIGEgc3VydmV5IChhcyBvcHBvc2VkIHRvIGEgZGF0YSBlbnRyeSBpbnN0cnVtZW50IGZvciBlbnRyeSBvZiBkYXRhIGJ5IGxhYiBtZW1iZXJzKSwgdGhlIGluc3RydW1lbnQgd2lsbCBuZWVkIHRvIGJlIGRlc2lnbmF0ZWQgYXMgYSBzdXJ2ZXkuClRvIGRlc2lnbmF0ZSBhbiBpbnN0cnVtZW50IGFzIGEgc3VydmV5LCBnbyB0byBQcm9qZWN0IEhvbWUg4oaSIFByb2plY3QgU2V0dXAg4oaSIE9ubGluZSBEZXNpZ25lciDihpIgY2xpY2sgb24gIkVuYWJsZSIgdW5kZXIgdGhlICJFbmFibGVkIGFzIFN1cnZleSIgY29sdW1uIGZvciB0aGUgcmVsZXZhbnQgaW5zdHJ1bWVudC4KCiMjIERlc2lnbmF0aW5nIEluc3RydW1lbnRzIHRvIEV2ZW50cyB7I2Rlc2lnbmF0ZUluc3RydW1lbnRzfQoKTW9zdCBpbnN0cnVtZW50cyBpbiBsb25naXR1ZGluYWwgc3R1ZGllcyB3aWxsIG5lZWQgdG8gYmUgZGVzaWdhdGVkIGFjcm9zcyBldmVudHMuCkluc3RydW1lbnRzIHNob3VsZCBhbHJlYWR5IGJlIGNyZWF0ZWQgYW5kIGFwcHJvdmVkIGJlZm9yZSBkZXNpZ25hdGluZyB0byBldmVudHMuCgpUbyBkZXNpZ25hdGUgZXZlbnRzLCBmb2xsb3cgdGhlIGJlbG93IHN0ZXBzOgoKMS4gR28gdG8gIkRlc2lnbmVyIiDihpIgIlByb2plY3QgU2V0dXAiCjEuIFVuZGVyIHRoZSAqIkRlZmluZSB5b3VyIGV2ZW50cyBhbmQgZGVzaWduYXRlIGluc3RydW1lbnRzIGZvciB0aGVtIiogc2VjdGlvbiwgc2VsZWN0IGBEZXNpZ25hdGUgSW5zdHJ1bWVudCBmb3IgbXkgZXZlbnRzYAoxLiBTZWxlY3QsIGBiZWdpbiBlZGl0aW5nYCBhbmQgc2VsZWN0IGNoZWNrYm94ZXMgZm9yIGVhY2ggZXZlbnQgdG8gZGVzaWduYXRlIHRoZSBpbnN0cnVtZW50IHRvCjEuICoqSW1wb3J0YW50OioqIFVwZGF0ZSB0aGUgcm9sZXMgaW4gYFVzZXIgUmlnaHRzYCB0byBiZSBhYmxlIHRvIHZpZXcgYW5kIGVkaXQgdGhlIG5ld2x5IGRlc2lnbmF0ZWQgaW5zdHJ1bWVudAoKIyMgRGVzaWduYXRpbmcgSW5zdHJ1bWVudHMgYXMgUmVwZWF0YWJsZSB7I3JlcGVhdGFibGVJbnN0cnVtZW50fQoKU29tZSBpbnN0cnVtZW50cyB3aWxsIGJlIGRlc2lnbmF0ZWQgYXMgcmVwZWF0YWJsZS4KVGhlc2UgZXZlbnRzIHdpbGwgZmlyc3QgbmVlZCB0byBiZSBkZXNpZ25hdGVkIGFjcm9zcyBldmVudHMgKFNlZSBzZWN0aW9uIG9uIFtkZXNpZ25hdGluZyBldmVudHNdKCNkZXNpZ25hdGVJbnN0cnVtZW50cykpLgpUYXNrcyB0aGF0IHJlcXVpcmUgbXVsdGlwbGUgcGVvcGxlIHRvIGNyZWF0ZSB0aGUgc2FtZSBmb3JtIHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSByZXBlYXRhYmxlLgpGb3IgZXhhbXBsZSwgY29kaW5nIHRhc2tzIHRoYXQgcmVxdWlyZSBtdWx0aXBsZSBwZW9wbGUgdG8gY2hlY2sgYWNyb3NzIGZvcm1zIGZvciByZWxpYWJpbGl0eS4KClRvIGRlc2lnbmF0ZSBmb3JtcyBhcyByZXBlYXRhYmxlLCBmb2xsb3cgdGhlIGJlbG93IHN0ZXBzOgoKMS4gVW5kZXIgKiJFbmFibGUgb3B0aW9uYWwgbW9kdWxlcyBhbmQgY3VzdG9taXphdGlvbnMiKiwgc2VsZWN0IGBSZXBlYXRhYmxlIGluc3RydW1lbnRzIGFuZCBldmVudHNgCjEuIFNlbGVjdCBpbnN0cnVtZW50cyB0byBiZSBkZXNpZ25hdGVkIHJlcGVhdGFibGUKCiMgQ3JlYXRpbmcgSW5zdHJ1bWVudHMgaW4gUkVEQ2FwIHsjY3JlYXRlSW5zdHJ1bWVudH0KCiMjIFN0ZXBzIHRvIEFkZCBhIE5ldyBJbnN0cnVtZW50IHsjbmV3SW5zdHJ1bWVudFN0ZXBzfQoKMS4gUHJvamVjdCBIb21lIOKGkiBQcm9qZWN0IFNldHVwIOKGkiBPbmxpbmUgRGVzaWduZXIKMS4gSW4gZ3JleSBib3ggKERhdGEgQ29sbGVjdGlvbiBJbnN0cnVtZW50cyksIGNsaWNrIG9uICIrIENyZWF0ZSIgdG8gY3JlYXRlIGEgbmV3IGluc3RydW1lbnQgZnJvbSBzY3JhdGNoCgpIb3dldmVyLCBhbiBpbnN0cnVtZW50IHdpbGwgbm90IHNob3cgdXAgZm9yIGVudHJ5IHVudGlsOgoKMS4gVGhlIGFkZGl0aW9uIG9mIHRoZSBtZWFzdXJlIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IERyLiBQZXRlcnNlbi4KMS4gVGhlIGluc3RydW1lbnQgaGFzIGJlZW4gW2Rlc2lnbmF0ZWQgdG8gYW4gZXZlbnRdKCNkZXNpZ25hdGVJbnN0cnVtZW50cykuCjEuIChBcyBuZWNlc3NhcnksIHRoZSBpbnN0cnVtZW50IGhhcyBiZWVuIFtkZXNpZ25hdGVkIGFzIGEgc3VydmV5XSgjc3VydmV5KS4pCjEuIChBcyBuZWNlc3NhcnksIHRoZSBpbnN0cnVtZW50IGhhcyBiZWVuIFtkZXNpZ25hdGVkIGFzIHJlcGVhdGFibGVdKCNyZXBlYXRhYmxlSW5zdHJ1bWVudCkpLgoxLiBVc2VyIHJpZ2h0cyBhcmUgdXBkYXRlZCB0byBhbGxvdyB1c2VycyB0byB2aWV3IHRoZSBpbnN0cnVtZW50IChpLmUuLCAiUmVhZCBPbmx5IiBvciAiVmlldyBhbmQgRWRpdCIpCgojIyBHb29kIFByYWN0aWNlcyB7I2dvb2RQcmFjdGljZXN9CgotCUluY2x1ZGUgcmVsZXZhbnQgaW5zdHJ1Y3Rpb25zIHdoZXJlIGFwcGxpY2FibGUKLQlPbWl0ICJpbnRyb2R1Y3RvcnkiIHZhcmlhYmxlcyAoZS5nLiwgZGF0ZSBvZiBiaXJ0aCkgdGhhdCBhcmUgY29sbGVjdGVkIGZyb20gb3RoZXIgbWVhc3VyZXMKLQlGaWVsZCBMYWJlbHMgYXJlIHRoZSBzYW1lIGFjcm9zcyBpbnN0cnVtZW50cyB3aGVyZSBhcHBsaWNhYmxlCi0JQ2hvaWNlcyBhcmUgdGhlIHNhbWUgYWNyb3NzIGluc3RydW1lbnRzIHdoZXJlIGFwcGxpY2FibGUgCiAgICAtIEluY2x1ZGUgbnVtYmVycyAoaWYgcmVsZXZhbnQpIGluIHBhcmVudGhlc2VzIGluIHJvdyBiZWxvdyBjb2x1bW4gY2hvaWNlcwotCUNob2ljZXMgZm9sbG93IGNvcnJlY3QgZm9ybWF0OiBOdW1iZXIsIENob2ljZQogICAgLSAoZS5nLiwgMSwgZmVtYWxlKQotCUZvciB5ZXMvbm8gcXVlc3Rpb25zLCB1c2UgdGhlICJZZXMgLSBObyIgcXVlc3Rpb24gdHlwZSAocmF0aGVyIHRoYW4gbXVsdGlwbGUgY2hvaWNlIHJhZGlvIGJ1dHRvbnMpCiAgICAxLiBObyA9IDAJCiAgICAxLiBZZXMgPSAxCi0gRm9yIHllcy9ubyBxdWVzdGlvbnMgd2l0aCBhZGRpdGlvbmFsIG9wdGlvbnMgKGUuZy4sICJub3QgYXBwbGljYWJsZSIpLCB1c2UgbXVsdGlwbGUgY2hvaWNlIHJhZGlvIGJ1dHRvbnMgd2hlcmU6CiAgICAxLiBObyA9IDAJCiAgICAxLiBZZXMgPSAxCiAgICAxLiBPdGhlciA9IDkKICAgIDEuIE5vdCBhcHBsaWNhYmxlID0gLTk5OQoKLSBUaW1lIHF1ZXN0aW9ucwogICAtIFNwZWNpZmljIHRpbWUgKGUuZy4sIFdoYXQgaXMgdGhlIGNoaWxkJ3MgYmVkdGltZT8pOgogICAgICAtICoqQmVnaW4gcXVlc3Rpb24gd2l0aCBpbnN0cnVjdGlvbnM6KiogQmVsb3cgeW91IHdpbGwgZW50ZXIgeW91ciBjaGlsZCdzIGJlZHRpbWUuIAogICAgICBQbGVhc2Ugc3BlY2lmeSBpbiAxMi1ob3VyIHRpbWUgKEFNL1BNKS4gCiAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGNoaWxkJ3MgYmVkdGltZSBpcyAxMDozMCBQTSwgcGxlYXNlIGVudGVyIDEwIGhvdXJzIGFuZCAzMCBtaW51dGVzIGxpa2UgdGhlIGV4YW1wbGUgYmVsb3cuIChzaG93IGV4YW1wbGUgaW1hZ2UgYmVsb3cpCiAgICAgIC0gSGF2ZSB0aHJlZSB2YXJpYWJsZXMgZm9yIGV2ZXJ5IHRpbWUgcXVlc3Rpb246CQogICAgICAgICAtIEFNL1BNIChSYWRpbyBCdXR0b24pCiAgICAgICAgIC0gaG91cnMgKHRleHQgYm94KSwgaXRhbGljaXplZAogICAgICAgICAgICAgLSBWYWxpZGF0aW9uOiBpbnRlZ2VyIGZyb20gMeKAkzEyCiAgICAgICAgIC0gbWludXRlcyAodGV4dCBib3gpLCBpdGFsaWNpemVkCiAgICAgICAgICAgICAtIFZhbGlkYXRpb246IGludGVnZXIgZnJvbSAw4oCTNTkKICAgICAgLSBTcGVjaWZ5IDEyLWhvdXIgdGltZSBpbiB0aGUgcXVlc3Rpb24KICAgICAgICAgLSAqKkV4YW1wbGUqKjogV2hhdCBpcyB0aGUgY2hpbGQncyBiZWR0aW1lPwogICAgICAgICBQbGVhc2Ugc3BlY2lmeSBpbiAxMi1ob3VyIHRpbWUgKEFNL1BNKS4KICAgLSBEdXJhdGlvbjogKGUuZy4sIEhvdyBsb25nIGRvZXMgdGhlIGNoaWxkIG5hcCBlYWNoIGRheT8pCiAgICAgIC0gQmVsb3cgeW91IHdpbGwgZW50ZXIgaG93IGxvbmcgeW91ciBjaGlsZCBuYXBzIGVhY2ggZGF5LgogICAgICBQbGVhc2Ugc3BlY2lmeSBpbiBob3VycyBhbmQgbWludXRlcy4gCiAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGNoaWxkIG5hcHMgMiBob3VycyBhbmQgMzAgbWludXRlcyBlYWNoIGRheSwgcGxlYXNlIGVudGVyIDIgaG91cnMgYW5kIDMwIG1pbnV0ZXMgbGlrZSB0aGUgZXhhbXBsZSBiZWxvdyAoc2hvdyBleGFtcGxlIGltYWdlIGJlbG93KS4KICAgICAgLSBIYXZlIHR3byB2YXJpYWJsZXMgZm9yIGV2ZXJ5IHRpbWUgcXVlc3Rpb246CiAgICAgICAgIC0gaG91cnMgKHRleHQgYm94KSwgaXRhbGljaXplZC4KICAgICAgICAgICAgLSBWYWxpZGF0aW9uOiBpbnRlZ2VyIChtaW5pbXVtIDA7IG1heGltdW3igJRjYXNlIHNwZWNpZmljKQogICAgICAgICAtIG1pbnV0ZXMgKHRleHQgYm94KSwgaXRhbGljaXplZAogICAgICAgICAgICAtIFZhbGlkYXRpb246IGludGVnZXIgKG1pbmltdW0gMDsgbWF4aW11bSA1OSkKCiMjIENyZWF0aW5nIFZhcmlhYmxlcyAgeyNjcmVhdGluZ1ZhcmlhYmxlc30KCi0gVmFyaWFibGUgbmFtZXMgZm9sbG93IHRoZSBsYWIgY29udmVudGlvbnMgKG1lYXN1cmVfaXRlbSk6IHVzZSBhYmJyZXZpYXRlZCBtZWFzdXJlIG5hbWUsIGFsbCBsb3dlcmNhc2UsIGxlc3MgdGhhbiAyNiBjaGFyYWN0ZXJzCi0gKipWYWxpZGF0aW9uIGlzIHVzZWQgd2hlcmV2ZXIgcG9zc2libGUqKgotIEZvciB2YXJpYWJsZXMgd2l0aCBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiAoZS5nLiwgbmFtZSwgYWRkcmVzcyksIHNlbGVjdCB0aGUgY2hlY2tib3ggbGFiZWxlZCAiSWRlbnRpZmllciIKLSBCcmFuY2hpbmcgbG9naWMgaXMgdXNlZCB0byBnaXZlIHF1ZXN0aW9ucyBvbmx5IHRvIHJlbGV2YW50IHBhcnRpY2lwYW50cwotIEEgIk1hdHJpeCBvZiBGaWVsZHMiIGlzIHVzZWQgdG8gZ3JvdXAgdG9nZXRoZXIgaXRlbXMgd2l0aCBjb21tb24gcmVzcG9uc2Ugb3B0aW9ucwotIEZvciAiTWF0cml4IG9mIEZpZWxkcywiIG9ubHkgc2VsZWN0ICJSYW5raW5nIiBpZiB5b3Ugd2FudCB0aGUgcGFydGljaXBhbnQgdG8gc2VsZWN0IG9ubHkgb25lIHJlc3BvbnNlIHBlciBjb2x1bW4KLQlXaGVyZSBoZWxwZnVsLCAiU2VjdGlvbnMiIGFyZSB1c2VkIHRvIGJyZWFrIHVwIHRoZSBxdWVzdGlvbnMKLQlSYWRpbyBidXR0b25zIGFyZSB1c2VkIHJhdGhlciB0aGFuIGRyb3AtZG93biBsaXN0cwotCUZvciBjcnVjaWFsIHZhcmlhYmxlcywgIlJlcXVpcmVkIiBpcyBzZWxlY3RlZAotCUlmIG5lY2Vzc2FyeSwgcGlwaW5nIGlzIHVzZWQKLSBBZGQgdGhlIGZvbGxvd2luZyB2ZXJiYXRpbSB0byB0aGUgZW5kIG9mIGV2ZXJ5IHF1ZXN0aW9ubmFpcmUgKGluIGl0YWxpY3MpOiAiUGxlYXNlIGJlIHN1cmUgeW91IGFuc3dlcmVkIGFsbCBpdGVtcy4iCiAgIC0gTmFtZSB0aGUgdmFyaWFibGU6IG1lYXN1cmVfYWxsaXRlbXMgKHdoZXJlICJtZWFzdXJlIiBpcyB0aGUgYWJicmV2aWF0ZWQgbWVhc3VyZSBuYW1lKQoKIyMgQWRkaW5nIFNtYXJ0IFZhcmlhYmxlcyB0byBRdWVzdGlvbm5haXJlcyB7I3NtYXJ0VmFyaWFibGVzfQoKSW4gZXZlcnkgc3VyZXksIHdlIHdhbnQgdG8gYWRkIHRoZSBmb2xsb3dpbmcgIlNtYXJ0IFZhcmlhYmxlcyIuIFRoZXNlIHZhcmlhYmxlcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgc3VydmV5IHN0YXJ0IHRpbWUsIHN1cnZleSBzdGFydCBkYXRlLCBhbmQgZHVyYXRpb24gc3VydmV5IHdhcyBjb21wbGV0ZWQuClZhcmlhYmxlIG5hbWVzIHNob3VsZCBmb2xsb3cgdGhlIGFwcHJvcHJpYXRlIG5hbWluZyBjb252ZW50aW9uIHRoYXQgaXMgdXNlZCBmb3IgZWFjaCBzdXJ2ZXkuCkFmdGVyIHlvdSBoYXZlIGFkZGVkIHZhcmlhYmxlcywgc2xhY2sgdGhlIExhYiBDb29yZGluYXRvciBmb3IgcmV2aWV3LgoqKkRvIG5vdCBhZGQgdmFyaWFibGVzIHRvIG1vcmUgdGhhbiB0aHJlZSBzdXJ2ZXlzIGF0IGEgdGltZS4qKgpUaGVzZSB2YXJpYWJsZXMgc2hvdWxkIGJlIGVudGVyZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHN1cnZleS4gRm9yIGVhY2ggc3VydmV5LCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBiZWxvdyB0byBhZGQgdGhlIHJlcXVpcmVkIHNtYXJ0IHZhcmlhYmxlczogCgojIyMgVGltZXN0YW1wcyB7I3RpbWVzdGFtcHN9CgoxLiAiRGF0ZS9UaW1lc3RhbXAgaW4gdGhlIHJhdGVyJ3MgdGltZXpvbmUiCiAgIC0gQWRkIGEgIlRleHQgQm94IiBmaWVsZCB3aXRoIHZhbGlkYXRpb24gIkRhdGV0aW1lIHcvc2Vjb25kcyAoWS1NLUQgSDpNOlMpCiAgIC0gVXNlIHZhcmlhYmxlIG5hbWU6IGBwcmVmaXhfcmF0ZXJ0aW1lem9uZWAKICAgLSBBZGQgdGhlIGZvbGxvd2luZyBhY3Rpb24gdGFnczogCiAgICAgIC0gQEhJRERFTi1TVVJWRVkKICAgICAgLSBATk9XCiAgICAgIC0gQFJFQURPTkxZCjEuICJEYXRlL1RpbWVzdGFtcCAoUkVEQ2FwIHNlcnZlcikiCiAgIC0gQWRkIGEgIlRleHQgQm94IiBmaWVsZCB3aXRoIHZhbGlkYXRpb24gIkRhdGV0aW1lIHcvc2Vjb25kcyAoWS1NLUQgSDpNOlMpCiAgIC0gVXNlIHZhcmlhYmxlIG5hbWU6IGBwcmVmaXhfc2VydmVydGltZXpvbmVgCiAgIC0gQWRkIHRoZSBmb2xsb3dpbmcgQWN0aW9uIHRhZ3M6IAogICAgICAtIEBISURERU4tU1VSVkVZCiAgICAgIC0gQE5PVy1TRVJWRVIKICAgICAgLSBAUkVBRE9OTFkKMS4gIkRhdGUvVGltZXN0YW1wIChVVEMpIgogICAtIEFkZCBhICJUZXh0IEJveCIgZmllbGQgd2l0aCB2YWxpZGF0aW9uICJEYXRldGltZSB3L3NlY29uZHMgKFktTS1EIEg6TTpTKQogICAtIFVzZSB2YXJpYWJsZSBuYW1lOiBgcHJlZml4X2NlbnRyYWx0aW1lem9uZWAKICAgLSBBZGQgdGhlIGZvbGxvd2luZyBBY3Rpb24gdGFnczogCiAgICAgIC0gQEhJRERFTi1TVVJWRVkKICAgICAgLSBATk9XLVVUQwogICAgICAtIEBSRUFET05MWQoKIyMjIERhdGUgQ29tcGxldGVkLCBUaW1lIENvbXBsZXRlZCBhbmQgU3VydmV5IER1cmF0aW9ucyB7I2RhdGVUaW1lc3RhbXBEdXJhdGlvbn0KCkluIHRoZSBiZWxvdyBzZWN0aW9uLCBpdCBpcyBuZWNlc3NhcnkgdG8gaWRlbnRpZnkgdGhlIGBpbnN0cnVtZW50X25hbWVgIGZvciBlYWNoIHZhcmlhYmxlIGFkZGVkLgpJbiBSRURDYXAsIG9wZW4gdGhlIGBEZXNpZ25lcmAgdGFiIGFuZCBuYXZpZ2F0ZSB0byB0aGUgc3VydmV5IHRvIGJlIGVkaXRlZC4KSW4gdGhlIFVSTCBvbiB0aGUgd2VicGFnZSwgaWRlbnRpZnkgdGhlIGluc3RydW1lbnQgbmFtZSBmb3IgdGhlIGdpdmVuIHN1cnZleS4KRm9yIGV4YW1wbGUsIHRoZSBiZWxvdyBVUkwgY29ycmVzcG9uZHMgdG8gdGhlICpwYXJlbnRpbmdfcGFydG5lciogaW5zdHJ1bWVudC4gCgotIGh0dHBzOi8vcmVkY2FwLmljdHMudWlvd2EuZWR1L3JlZGNhcC9yZWRjYXBfdjEyLjUuMi9EZXNpZ24vb25saW5lX2Rlc2lnbmVyLnBocD9waWQ9NTM0NyZwYWdlPTxtYXJrPnBhcmVudGluZ19wYXJ0bmVyPC9tYXJrPgoKMS4gIlN1cnZleSBUaW1lIFN0YXJ0ZWQ6IgogICAtIEFkZCBhICJUZXh0IEJveCIgZmllbGQgd2l0aCBubyB2YWxpZGF0aW9uCiAgIC0gVXNlIHZhcmlhYmxlIG5hbWU6IGBwcmVmaXhfdGltZXN0YXJ0ZWRgCiAgIC0gQWRkIHRoZSBmb2xsb3dpbmcgQWN0aW9uIFRhZ3MgCiAgICAgIC0gQEhJRERFTi1TVVJWRVkgCiAgICAgIC0gQFJFQURPTkxZIAogICAgICAtIEBDQUxDVEVYVChbc3VydmV5LXRpbWUtc3RhcnRlZDppbnN0cnVtZW50X25hbWVdKQoxLiAiU3VydmV5IERhdGUgU3RhcnRlZDoiCiAgIC0gQWRkIGEgIlRleHQgQm94IiBmaWVsZCB3aXRoIG5vIHZhbGlkYXRpb24KICAgLSBVc2UgdmFyaWFibGUgbmFtZTogYHByZWZpeF9kYXRlc3RhcnRlZGAKICAgLSBBZGQgdGhlIGZvbGxvd2luZyBBY3Rpb24gVGFncyAKICAgICAgLSBASElEREVOLVNVUlZFWSAKICAgICAgLSBAUkVBRE9OTFkgCiAgICAgIC0gQENBTENURVhUKFtzdXJ2ZXktZGF0ZS1zdGFydGVkOmluc3RydW1lbnRfbmFtZV0pCjEuICJTdXJ2ZXkgVGltZSBDb21wbGV0ZWQ6IgogICAtIEFkZCBhICJUZXh0IEJveCIgZmllbGQgd2l0aCBubyB2YWxpZGF0aW9uCiAgIC0gVXNlIHZhcmlhYmxlIG5hbWU6IGBwcmVmaXhfdGltZWNvbXBsZXRlZGAKICAgLSBBZGQgdGhlIGZvbGxvd2luZyBBY3Rpb24gVGFncyAKICAgICAgLSBASElEREVOLVNVUlZFWSAKICAgICAgLSBAUkVBRE9OTFkgCiAgICAgIC0gQENBTENURVhUKFtzdXJ2ZXktdGltZS1jb21wbGV0ZWQ6aW5zdHJ1bWVudF9uYW1lXSkKMS4gIlN1cnZleSBEYXRlIENvbXBsZXRlZDoiCiAgIC0gQWRkIGEgIlRleHQgQm94IiBmaWVsZCB3aXRoIG5vIHZhbGlkYXRpb24KICAgLSBVc2UgdmFyaWFibGUgbmFtZTogYHByZWZpeF9kYXRlY29tcGxldGVkYAogICAtIEFkZCB0aGUgZm9sbG93aW5nIEFjdGlvbiBUYWdzIAogICAgICAtIEBISURERU4tU1VSVkVZIAogICAgICAtIEBSRUFET05MWSAKICAgICAgLSBAQ0FMQ1RFWFQoW3N1cnZleS1kYXRlLWNvbXBsZXRlZDppbnN0cnVtZW50X25hbWVdKQoxLiAiU3VydmV5IER1cmF0aW9uOiIKICAgLSBBZGQgYSAiVGV4dCBCb3giIGZpZWxkIHdpdGggbnVtZXJpYyB2YWxpZGF0aW9uCiAgIC0gVXNlIHZhcmlhYmxlIG5hbWU6IGBwcmVmaXhfc3VydmV5ZHVyYXRpb25gCiAgIC0gQWRkIHRoZSBmb2xsb3dpbmcgQWN0aW9uIFRhZ3MKICAgICAgLSBASElEREVOLVNVUlZFWQogICAgICAtIEBSRUFET05MWQogICAgICAtIEBDQUxDVEVYVChbc3VydmV5LWR1cmF0aW9uOmluc3RydW1lbnRfbmFtZTptXSkKMS4gIlN1cnZleSBEdXJhdGlvbiBDb21wbGV0ZWQ6IgogICAtIEFkZCBhICJUZXh0IEJveCIgZmllbGQgd2l0aCBudW1lcmljIHZhbGlkYXRpb24KICAgLSBVc2UgdmFyaWFibGUgbmFtZTogYHByZWZpeF9zdXJ2ZXlkdXJhdGlvbmNvbXBsZXRlZGAKICAgLSBBZGQgdGhlIGZvbGxvd2luZyBBY3Rpb24gVGFncwogICAgICAtIEBISURERU4tU1VSVkVZCiAgICAgIC0gQFJFQURPTkxZCiAgICAgIC0gQENBTENURVhUKFtzdXJ2ZXktZHVyYXRpb24tY29tcGxldGVkOmluc3RydW1lbnRfbmFtZTptXSkKMS4gU2xhY2sgdGhlIExhYiBDb29yZGluYXRvciBmb3IgcmV2aWV3CgojIyBUcm91Ymxlc2hvb3RpbmcgeyN0cm91Ymxlc2hvb3Rpbmd9CgotIFdoZW4gYSBmaWVsZCB0aGF0IHdpbGwgYmUgaGlkZGVuIGJ5IGJyYW5jaGluZyBsb2dpYyBoYXMgYSB2YWx1ZSwgUkVEQ2FwIG9mZmVycyB0byBkZWxldGUgdGhlIHZhbHVlOiAiRVJBU0UgQ1VSUkVOVCBWQUxVRSBPRiBUSEUgRklFTEQ/IgogICAtIGh0dHA6Ly9jcmkudWNoaWNhZ28uZWR1L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE2LzA0L1JFRENhcC1Bdm9pZC1Db21tb24tUGl0ZmFsbHMucGRmIChhcmNoaXZlZCBhdCBodHRwczovL3Blcm1hLmNjLzZOQlktM1k1UikKICAgLSBJZiB5b3UgZG8gbm90IHdhbnQgdGhlIGZpZWxkIGhpZGRlbiBvbmNlIGl0IGNvbnRhaW5zIGRhdGEsIGFkZCB0aGUgZm9sbG93aW5nIGFzIGFuICJPUiIgY29uZGl0aW9uIG9uIHRoZSBleGlzdGluZyBicmFuY2hpbmcgICAgICAKICAgICAgLSBsb2dpYzogW2ZpZWxkX25hbWVdIDw+ICIiCiAgIC0gTm90ZTogVGhlIEBERUZBVUxUIGFjdGlvbiB0YWcgKipjYW5ub3QqKiBiZSB1c2VkIGZvciBmaWVsZHMgdGhhdCBhcmUgaGlkZGVuIGJ5IGJyYW5jaGluZyBsb2dpYwotIFNvbWV0aW1lcyBSRURDYXAgbWF5IHJlY29yZCBpbmNvcnJlY3QgdmFsdWVzIG9yIG1heSBmYWlsIHRvIHJlY29yZCB2YWx1ZXMgYXQgYWxsLgpZb3UgY2FuIGNoZWNrIGZvciB0aGlzIGJ5OgoxLiBOYXZpZ2F0aW5nIHRvIGEgcHJvamVjdCwgdGhlbiBpbiB0aGUgc2lkZSBiYXIgY2xpY2tpbmcgIkRhdGEgUXVhbGl0eSIgdW5kZXIgIkFwcGxpY2F0aW9ucyIKMS4gVW5kZXIgUnVsZSAjSCAiSW5jb3JyZWN0IHZhbHVlcyBmb3IgY2FsY3VsYXRlZCBmaWVsZHMiLCBjbGljayAiRXhlY3V0ZSIKMS4gWW91IHdpbGwgc2VlIGEgdGFibGUgd2l0aCBhbnkgaW5jb3JyZWN0IGNhbGN1bGF0ZWQgdmFsdWVzIChpbmNsdWRpbmcgbWlzc2luZyB2YWx1ZXMpLiBDaGVjayB0aGUgdGFibGUgdG8gbWFrZSBzdXJlIHRoZSBkaXNjcmVwYW50IGZpZWxkcyBhcmUgd2hhdCB5b3UgZXhwZWN0LiBBbHNvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gcm93cyB0aGF0IHN1Z2dlc3Qgb3ZlcndyaXRpbmcgbGVnaXRpbWF0ZSB2YWx1ZXMuIElmIGEgcm93IGxvb2tzIGxpa2UgaXQgaXMgYWN0dWFsbHkgY29ycmVjdCwgY2xpY2sgImV4Y2x1ZGUiLgoxLiBDbGljayAiRml4IGNhbGNzIG5vdyIgdG8gcmVjb3JkIHRoZSBjb3JyZWN0IHZhbHVlcyBpbiB0aGUgZGF0YS4KCiMjIEhvdyBUbyB7I2hvd1RvfQoKLSBFbSBkYXNoICjigJQpOgogICAtIGAmbWRhc2g7YAotIExpbmUgQnJlYWsKICAgLSBgPGJyPmAKLSBJdGFsaWMgZm9udDoKICAgLSBgPGk+VGhpcyBpcyBzb21lIHRleHQhPC9pPmAKICAgLSAqKkV4YW1wbGUqKjogPGk+VGhpcyBpcyBzb21lIHRleHQhPC9pPgotIENoYW5nZSBmb250IHNpemU6CiAgIC0gYDxmb250IHNpemU9IjYiPlRoaXMgaXMgc29tZSB0ZXh0ITwvZm9udD5gCiAgIC0gKipFeGFtcGxlKio6IDxmb250IHNpemU9IjYiPlRoaXMgaXMgc29tZSB0ZXh0ITwvZm9udD4KLSBDaGFuZ2UgZm9udCBjb2xvcjoKICAgLSBgPGZvbnQgY29sb3I9InJlZCI+VGhpcyBjb2xvciB3aWxsIGJlIHJlZC48L2ZvbnQ+YAogICAtICoqRXhhbXBsZSoqOiA8Zm9udCBjb2xvcj0icmVkIj5UaGlzIGNvbG9yIHdpbGwgYmUgcmVkLjwvZm9udD4KCiMjIExhYiBVbml2ZXJzYWwgTm90YXRpb25zIHsjbGFiVW5pdmVyc2FsTm90YXRpb25zfQoKLSBZZXMgPSAxLCBObyA9IDAKLSBUcnVlID0gMSwgRmFsc2UgPSAwCi0gU2V4OiBNYWxlID0gMCwgRmVtYWxlID0gMQotIE5vdCBBcHBsaWNhYmxlID0gLTk5OQotIENvZGluZyBPcHRpb25zCiAgIC0gQ29ycmVjdCA9IDIgKG9yIDEsIGlmIHRoZXJlIGlzIG5vIG9wdGlvbiBmb3IgImluaXRpYWxseSBpbmNvcnJlY3QsIGNoYW5nZWQgdG8gY29ycmVjdCIpCiAgIC0gSW5jb3JyZWN0ID0gMAogICAtIEluaXRpYWxseSBpbmNvcnJlY3QsIGNoYW5nZWQgdG8gY29ycmVjdCA9IDEKICAgLSBObyByZXNwb25zZSA9IC05CiAgIC0gVW5jb2RlYWJsZSA9IDkKCkZvciBMaWtlcnQgc2NhbGVzOgoKLSBJZiB0aGVyZSBhcmUgbnVtYmVycyBsaXN0ZWQgZm9yIHRoZSBMaWtlcnQgc2NhbGUgb3B0aW9ucywgdXNlIHRob3NlIG51bWJlcnMgYXMgdGhlIHZhbHVlcwotIElmIHRoZXJlIGFyZSBub3QgbnVtYmVycyBsaXN0ZWQsIGNoZWNrIHdpdGggRHIuIFBldGVyc2VuIGZvciB3aGF0IG51bWJlcnMgdG8gdXNlIGFzIHRoZSB2YWx1ZXMKLSBJbiBnZW5lcmFsLCB2YWx1ZXMgc3RhcnQgd2l0aCBudW1iZXIgMSAobm90IDDigJR1bmxlc3MgdGhlIHZhbHVlIGFjdHVhbGx5IHJlZmxlY3RzIGNvbXBsZXRlIGFic2VuY2Ugb2Ygc29tZXRoaW5nKQotIElmIHRoZXJlIGlzIGFuICJPdGhlciIgb3B0aW9uLCBjb2RlIGl0IGFzICI5IiwgaWYgcG9zc2libGUKLSBJZiB0aGVyZSBpcyBhICJOL0EiIG9wdGlvbiwgY29kZSBpdCBhcyAiLTk5OSIKCiMjIEVkaXRpbmcgdGhlIERhdGEgRGljdGlvbmFyeSB7I2RhdGFEaWN0aW9uYXJ5fQoKLSBJZiBlZGl0aW5nIHRoZSBkYXRhIGRpY3Rpb25hcnksIGRvIG5vdCB1c2UgRXhjZWwh4oCURXhjZWwgdHJ1bmNhdGVzIHZhbHVlcyBpbiBjZWxscwogICAtIEluc3RlYWQsIHVzZSBMaWJyZU9mZmljZSB3aXRoIFVURi04IGVuY29kaW5nCg==



Developmental Psychopathology Lab