• University - Western Governors University
  • Course - C749 - Introduction to Data Science
  • Publish Date - 09/05/2017

Overview

The stroop task consists of completing a test by which contains a list of words displayed in an alternative color of ink or background that is different from the printed word. The purpose of this task/test is to analyze the length of time it takes to identify the printed word within a given word set. The test generally consists of two word conditions congruent vs. incongruent.

This document contains an analysis of the stroop effect by measuring sample data containing incongruent vs. congruent time results.

The project contains a set of Questions for Investigation, for consistency purposes the list of questions will be provided below and can be identified with a header following this pattern Q# - Question.

Questions for Investigation

  1. What is our independent variable? What is our dependent variable?
  2. What is an appropriate set of hypotheses for this task? What kind of statistical test do you expect to perform? Justify your choices.
  3. Report some descriptive statistic regarding this dataset. Include at least one measure of central tendency and at least one measure of variability.
  4. Provide one or two visualizations that show the distribution of the sample data. Write one or two sentences noting what you observe about the plot or plots.
  5. Now, perform the statistical test and report your results. What is your confidence level and your critical statistic value? Do you reject the null hypothesis or fail to reject it? Come to a conclusion in terms of the experiment task. Did the results match up with your expectations.

Q1: What is our independent variable? What is our dependent variable?

The given data set stroopdata.csv contains both an independent and dependent variable. Although at first glance the independent variable may not appear directly, we can determine based on contextual information that the independent variable is the the word list which was used to generate the sample data set.

The dependent variable within the given data set is the response time in seconds from all participants (24).

Q2: What is an appropriate set of hypotheses for this task? What kind of statistical test do you expect to perform?

I have elected to use the two-tailed t-test for my hypothesis.

Two-Tailed T-Test Reason for Selection

  • Due to lack of randomization within the given dataset and they were apart of a given set the two-tailed t-test is appropriate
  • The ability to compare the means of the dataset for the pre and post test validates the benefit of this test selection

Hypothesis

As we prepare to analyze the hypothesis, there are two variables that will be used. The mean of incongruent words within the dataset will be denoted as i1. While the mean of congruent words within the dataset is denoted as c2.

  • Alternative Hypothesis: \[H_A = Unkown Character_i - Unkown Character _c\ne0\] Because there isn’t a relative difference regarding the response time in the congruent vs. incongruent words the null hypothesis can be determined by the equation provided above.

  • Null Hypothesis: \[H_O = Unkown Charactor_i - Unkown Character_c = 0\] The response time in regards to the incongruent and congruent words are significantly different when analyzing each variable. The response time’s speed has no regards to the response time provided during the pre-test period.

Q3 Report some descriptive statistic regarding this dataset. Include at least one measure of central tendency and at least one measure of variability.

In order to accurately report a descriptive statistic we must first define variables that will be used for reporting.

Define Variables for Descriptive Analysis

# load sample data and assign congruent incongruent
sampledata <- read.csv("stroopdata.csv");
congruent = sampledata$Congruent;
incongruent = sampledata$Incongruent;
# define central/variability tendancies
congruent_mean = round(mean(congruent), 2);
congruent_median = round(median(congruent), 2);
congruent_sd = round(sd(congruent), 2);
incongruent_mean = round(mean(incongruent), 2);
incongruent_median = round(median(incongruent), 2);
incongruent_sd = round(sd(incongruent), 2);
sampledata_summary = summary(sampledata);
# altogether , print out each variable in it's context
cat(str_interp("
Congruent Mean: ${congruent_mean}
Congruent Median: ${congruent_median}
Congruent Standard Deviation: ${congruent_sd}
Incongruent Mean: ${incongruent_mean}
Incongruent Median: ${incongruent_median}
Incongruent Standard Deviation: ${incongruent_sd}
"))

Congruent Mean: 14.05
Congruent Median: 14.36
Congruent Standard Deviation: 3.56

Incongruent Mean: 22.02
Incongruent Median: 21.02
Incongruent Standard Deviation: 4.8
summary(congruent)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   8.63   11.90   14.36   14.05   16.20   22.33 
summary(incongruent)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  15.69   18.72   21.02   22.02   24.05   35.26 
# show the data in a table for quick analysis
DT::datatable(data=sampledata)

Q4: Provide one or two visualizations that show the distribution of the sample data. Write one or two sentences noting what you observe about the plot or plots.

#plot to show the distribution of data and comparison between congruent vs. incongruent.
p1 <- plot_ly(sampledata, x = ~congruent, type = "box", name = "Congruent") %>%
  add_trace(name = "Incongruent", x = ~incongruent, type = "box") %>%
  layout(xaxis = list(title = "Time in Seconds"), width = 800, autosize = F, margin = list( l = 100, b = 50))
Specifying width/height in layout() is now deprecated.
Please specify in ggplotly() or plot_ly()
p1

Observing the Plot

  • While analyzing the box plots we can determine that there are two distinct outliers within the Incongruent dataset.
  • We can also determine that the Higher Third Quartile of the Congruent dataset is consistent with the Median Quartile of the Incongruent data.

Q5: Now, perform the statistical test and report your results. What is your confidence level and your critical statistic value? Do you reject the null hypothesis or fail to reject it? Come to a conclusion in terms of the experiment task. Did the results match up with your expectations.

variables \[a = 0.1\] \[Df = 24\] t-statistic \[t-critical\ =\ +1.714\ -1.714\]

In order to properly conduct a statistical analysis of the data, we must define variables that will be used to calculate our findings. The variables defined below will be used to determine the conclusion on the next page.

#prep data for statistical test
est <- round((incongruent_mean - congruent_mean), 2);
#create a new row on data table for the difference between incongruent and congruent
sampledata["Difference"] = sampledata["Incongruent"] - sampledata["Congruent"];
#create the standard deviation difference of congruent and incongruent data
sddiff <- round(sd(sampledata$Difference) ,3);
#determine t-statistic using the formula given above.
tstat <- round(est/(sddiff/(sqrt(nrow(sampledata)))), 3);

Conclusion

During the statistical analysis I started by evaluating the t-critical which was determined to be 8.026. If we take another look at the formula defined above we would expect a the value to be < 1.714 in order for our Null Hypothesis to be accepted. According to the formula our results are \(t-statistic = 8.026 > 1.714\). Due to these findings we have no choice but to reject our null hypothesis. If we recall the null hypothesis stated that there were no significant differences in the response time between congruent and incongruent data.


  1. mean of incongruent - \(_i\)

  2. mean of congruent - \(_c\)

LS0tCnRpdGxlOiAiUDEtIFRlc3RpbmcgYSBQZXJjZXB0dWFsIFBoZW5vbWVub24iCmF1dGhvcjogIlJ5YW4gRC4gV2F0dHMiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgdGhlbWU6IHBhcGVyCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgotICoqVW5pdmVyc2l0eSoqIC0gV2VzdGVybiBHb3Zlcm5vcnMgVW5pdmVyc2l0eQotICoqQ291cnNlKiogLSBDNzQ5IC0gSW50cm9kdWN0aW9uIHRvIERhdGEgU2NpZW5jZQotICoqUHVibGlzaCBEYXRlKiogLSAwOS8wNS8yMDE3CgotLS0KCmBgYHtyLCBlY2hvPUZBTFNFfQpsaWJyYXJ5KHN0cmluZ3IpCmxpYnJhcnkocGxvdGx5KQpgYGAKCgojIE92ZXJ2aWV3ClRoZSBzdHJvb3AgdGFzayBjb25zaXN0cyBvZiBjb21wbGV0aW5nIGEgdGVzdCBieSB3aGljaCBjb250YWlucyBhIGxpc3Qgb2Ygd29yZHMgZGlzcGxheWVkIGluIGFuIGFsdGVybmF0aXZlIGNvbG9yIG9mIGluayBvciBiYWNrZ3JvdW5kIHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHByaW50ZWQgd29yZC4gVGhlIHB1cnBvc2Ugb2YgdGhpcyB0YXNrL3Rlc3QgaXMgdG8gYW5hbHl6ZSB0aGUgbGVuZ3RoIG9mIHRpbWUgaXQgdGFrZXMgdG8gaWRlbnRpZnkgdGhlIHByaW50ZWQgd29yZCB3aXRoaW4gYSBnaXZlbiB3b3JkIHNldC4gVGhlIHRlc3QgZ2VuZXJhbGx5IGNvbnNpc3RzIG9mIHR3byB3b3JkIGNvbmRpdGlvbnMgKmNvbmdydWVudCogdnMuICppbmNvbmdydWVudCouCgpUaGlzIGRvY3VtZW50IGNvbnRhaW5zIGFuIGFuYWx5c2lzIG9mIHRoZSBzdHJvb3AgZWZmZWN0IGJ5IG1lYXN1cmluZyBzYW1wbGUgZGF0YSBjb250YWluaW5nIGluY29uZ3J1ZW50IHZzLiBjb25ncnVlbnQgdGltZSByZXN1bHRzLgoKVGhlIHByb2plY3QgY29udGFpbnMgYSBzZXQgb2YgKipRdWVzdGlvbnMgZm9yIEludmVzdGlnYXRpb24qKiwgZm9yIGNvbnNpc3RlbmN5IHB1cnBvc2VzIHRoZSBsaXN0IG9mIHF1ZXN0aW9ucyB3aWxsIGJlIHByb3ZpZGVkIGJlbG93IGFuZCBjYW4gYmUgaWRlbnRpZmllZCB3aXRoIGEgaGVhZGVyIGZvbGxvd2luZyB0aGlzIHBhdHRlcm4gYFEjIC0gUXVlc3Rpb25gLgoKIyBRdWVzdGlvbnMgZm9yIEludmVzdGlnYXRpb24KMS4gV2hhdCBpcyBvdXIgaW5kZXBlbmRlbnQgdmFyaWFibGU/IFdoYXQgaXMgb3VyIGRlcGVuZGVudCB2YXJpYWJsZT8KMi4gV2hhdCBpcyBhbiBhcHByb3ByaWF0ZSBzZXQgb2YgaHlwb3RoZXNlcyBmb3IgdGhpcyB0YXNrPyBXaGF0IGtpbmQgb2Ygc3RhdGlzdGljYWwgdGVzdCBkbyB5b3UgZXhwZWN0IHRvIHBlcmZvcm0/IEp1c3RpZnkgeW91ciBjaG9pY2VzLgozLiBSZXBvcnQgc29tZSBkZXNjcmlwdGl2ZSBzdGF0aXN0aWMgcmVnYXJkaW5nIHRoaXMgZGF0YXNldC4gSW5jbHVkZSBhdCBsZWFzdCBvbmUgbWVhc3VyZSBvZiBjZW50cmFsIHRlbmRlbmN5IGFuZCBhdCBsZWFzdCBvbmUgbWVhc3VyZSBvZiB2YXJpYWJpbGl0eS4KNC4gUHJvdmlkZSBvbmUgb3IgdHdvIHZpc3VhbGl6YXRpb25zIHRoYXQgc2hvdyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBzYW1wbGUgZGF0YS4gV3JpdGUgb25lIG9yIHR3byBzZW50ZW5jZXMgbm90aW5nIHdoYXQgeW91IG9ic2VydmUgYWJvdXQgdGhlIHBsb3Qgb3IgcGxvdHMuCjUuIE5vdywgcGVyZm9ybSB0aGUgc3RhdGlzdGljYWwgdGVzdCBhbmQgcmVwb3J0IHlvdXIgcmVzdWx0cy4gV2hhdCBpcyB5b3VyIGNvbmZpZGVuY2UgbGV2ZWwgYW5kIHlvdXIgY3JpdGljYWwgc3RhdGlzdGljIHZhbHVlPyBEbyB5b3UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMgb3IgZmFpbCB0byByZWplY3QgaXQ/IENvbWUgdG8gYSBjb25jbHVzaW9uIGluIHRlcm1zIG9mIHRoZSBleHBlcmltZW50IHRhc2suIERpZCB0aGUgcmVzdWx0cyBtYXRjaCB1cCB3aXRoIHlvdXIgZXhwZWN0YXRpb25zLgoKXG5ld3BhZ2UKCiMjIFExOiBXaGF0IGlzIG91ciBpbmRlcGVuZGVudCB2YXJpYWJsZT8gV2hhdCBpcyBvdXIgZGVwZW5kZW50IHZhcmlhYmxlPwpUaGUgZ2l2ZW4gZGF0YSBzZXQgYHN0cm9vcGRhdGEuY3N2YCBjb250YWlucyBib3RoIGFuIGluZGVwZW5kZW50IGFuZCBkZXBlbmRlbnQgdmFyaWFibGUuIEFsdGhvdWdoIGF0IGZpcnN0IGdsYW5jZSB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgbWF5IG5vdCBhcHBlYXIgZGlyZWN0bHksIHdlIGNhbiBkZXRlcm1pbmUgYmFzZWQgb24gY29udGV4dHVhbCBpbmZvcm1hdGlvbiB0aGF0IHRoZSAqKmluZGVwZW5kZW50IHZhcmlhYmxlKiogaXMgdGhlIHRoZSB3b3JkIGxpc3Qgd2hpY2ggd2FzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNhbXBsZSBkYXRhIHNldC4KClRoZSAqKmRlcGVuZGVudCB2YXJpYWJsZSoqIHdpdGhpbiB0aGUgZ2l2ZW4gZGF0YSBzZXQgaXMgdGhlIHJlc3BvbnNlIHRpbWUgaW4gc2Vjb25kcyBmcm9tIGFsbCBwYXJ0aWNpcGFudHMgKCoyNCopLgoKClxuZXdwYWdlCgojIyBRMjogV2hhdCBpcyBhbiBhcHByb3ByaWF0ZSBzZXQgb2YgaHlwb3RoZXNlcyBmb3IgdGhpcyB0YXNrPyBXaGF0IGtpbmQgb2Ygc3RhdGlzdGljYWwgdGVzdCBkbyB5b3UgZXhwZWN0IHRvIHBlcmZvcm0/CkkgaGF2ZSBlbGVjdGVkIHRvIHVzZSB0aGUgYHR3by10YWlsZWQgdC10ZXN0YCBmb3IgbXkgaHlwb3RoZXNpcy4KCioqVHdvLVRhaWxlZCBULVRlc3QgUmVhc29uIGZvciBTZWxlY3Rpb24qKgoKLSBEdWUgdG8gbGFjayBvZiByYW5kb21pemF0aW9uIHdpdGhpbiB0aGUgZ2l2ZW4gZGF0YXNldCBhbmQgdGhleSB3ZXJlIGFwYXJ0IG9mIGEgZ2l2ZW4gc2V0IHRoZSB0d28tdGFpbGVkIHQtdGVzdCBpcyBhcHByb3ByaWF0ZQotIFRoZSBhYmlsaXR5IHRvIGNvbXBhcmUgdGhlIG1lYW5zIG9mIHRoZSBkYXRhc2V0IGZvciB0aGUgcHJlIGFuZCBwb3N0IHRlc3QgdmFsaWRhdGVzIHRoZSBiZW5lZml0IG9mIHRoaXMgdGVzdCBzZWxlY3Rpb24KCioqSHlwb3RoZXNpcyoqCgpBcyB3ZSBwcmVwYXJlIHRvIGFuYWx5emUgdGhlIGh5cG90aGVzaXMsIHRoZXJlIGFyZSB0d28gdmFyaWFibGVzIHRoYXQgd2lsbCBiZSB1c2VkLiBUaGUgbWVhbiBvZiBpbmNvbmdydWVudCB3b3JkcyB3aXRoaW4gdGhlIGRhdGFzZXQgd2lsbCBiZSBkZW5vdGVkIGFzIGBpYFteMV0uIFdoaWxlIHRoZSBtZWFuIG9mIGNvbmdydWVudCB3b3JkcyB3aXRoaW4gdGhlIGRhdGFzZXQgaXMgZGVub3RlZCBhcyBgY2BbXjJdLgoKLSBBbHRlcm5hdGl2ZSBIeXBvdGhlc2lzOiAkJEhfQSA9IFVua293biBDaGFyYWN0ZXJfaSAtIFVua293biBDaGFyYWN0ZXIgX2NcbmUwJCQKQmVjYXVzZSB0aGVyZSBpc24ndCBhIHJlbGF0aXZlIGRpZmZlcmVuY2UgcmVnYXJkaW5nIHRoZSByZXNwb25zZSB0aW1lIGluIHRoZSBjb25ncnVlbnQgdnMuIGluY29uZ3J1ZW50IHdvcmRzIHRoZSBudWxsIGh5cG90aGVzaXMgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGVxdWF0aW9uIHByb3ZpZGVkIGFib3ZlLgoKLSBOdWxsIEh5cG90aGVzaXM6ICQkSF9PID0gVW5rb3duIENoYXJhY3Rvcl9pIC0gVW5rb3duIENoYXJhY3Rlcl9jID0gMCQkClRoZSByZXNwb25zZSB0aW1lIGluIHJlZ2FyZHMgdG8gdGhlIGluY29uZ3J1ZW50IGFuZCBjb25ncnVlbnQgd29yZHMgYXJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IHdoZW4gYW5hbHl6aW5nIGVhY2ggdmFyaWFibGUuIFRoZSByZXNwb25zZSB0aW1lJ3Mgc3BlZWQgaGFzIG5vIHJlZ2FyZHMgdG8gdGhlIHJlc3BvbnNlIHRpbWUgcHJvdmlkZWQgZHVyaW5nIHRoZSBwcmUtdGVzdCBwZXJpb2QuCgpcbmV3cGFnZQoKIyMgUTMgUmVwb3J0IHNvbWUgZGVzY3JpcHRpdmUgc3RhdGlzdGljIHJlZ2FyZGluZyB0aGlzIGRhdGFzZXQuIEluY2x1ZGUgYXQgbGVhc3Qgb25lIG1lYXN1cmUgb2YgY2VudHJhbCB0ZW5kZW5jeSBhbmQgYXQgbGVhc3Qgb25lIG1lYXN1cmUgb2YgdmFyaWFiaWxpdHkuCkluIG9yZGVyIHRvIGFjY3VyYXRlbHkgcmVwb3J0IGEgZGVzY3JpcHRpdmUgc3RhdGlzdGljIHdlIG11c3QgZmlyc3QgZGVmaW5lIHZhcmlhYmxlcyB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgcmVwb3J0aW5nLgoKKipEZWZpbmUgVmFyaWFibGVzIGZvciBEZXNjcmlwdGl2ZSBBbmFseXNpcyoqCmBgYHtyfQojIGxvYWQgc2FtcGxlIGRhdGEgYW5kIGFzc2lnbiBjb25ncnVlbnQgaW5jb25ncnVlbnQKc2FtcGxlZGF0YSA8LSByZWFkLmNzdigic3Ryb29wZGF0YS5jc3YiKTsKY29uZ3J1ZW50ID0gc2FtcGxlZGF0YSRDb25ncnVlbnQ7CmluY29uZ3J1ZW50ID0gc2FtcGxlZGF0YSRJbmNvbmdydWVudDsKCiMgZGVmaW5lIGNlbnRyYWwvdmFyaWFiaWxpdHkgdGVuZGFuY2llcwpjb25ncnVlbnRfbWVhbiA9IHJvdW5kKG1lYW4oY29uZ3J1ZW50KSwgMik7CmNvbmdydWVudF9tZWRpYW4gPSByb3VuZChtZWRpYW4oY29uZ3J1ZW50KSwgMik7CmNvbmdydWVudF9zZCA9IHJvdW5kKHNkKGNvbmdydWVudCksIDIpOwoKaW5jb25ncnVlbnRfbWVhbiA9IHJvdW5kKG1lYW4oaW5jb25ncnVlbnQpLCAyKTsKaW5jb25ncnVlbnRfbWVkaWFuID0gcm91bmQobWVkaWFuKGluY29uZ3J1ZW50KSwgMik7CmluY29uZ3J1ZW50X3NkID0gcm91bmQoc2QoaW5jb25ncnVlbnQpLCAyKTsKCnNhbXBsZWRhdGFfc3VtbWFyeSA9IHN1bW1hcnkoc2FtcGxlZGF0YSk7CgojIGFsdG9nZXRoZXIgLCBwcmludCBvdXQgZWFjaCB2YXJpYWJsZSBpbiBpdCdzIGNvbnRleHQKY2F0KHN0cl9pbnRlcnAoIgpDb25ncnVlbnQgTWVhbjogJHtjb25ncnVlbnRfbWVhbn0KQ29uZ3J1ZW50IE1lZGlhbjogJHtjb25ncnVlbnRfbWVkaWFufQpDb25ncnVlbnQgU3RhbmRhcmQgRGV2aWF0aW9uOiAke2NvbmdydWVudF9zZH0KCkluY29uZ3J1ZW50IE1lYW46ICR7aW5jb25ncnVlbnRfbWVhbn0KSW5jb25ncnVlbnQgTWVkaWFuOiAke2luY29uZ3J1ZW50X21lZGlhbn0KSW5jb25ncnVlbnQgU3RhbmRhcmQgRGV2aWF0aW9uOiAke2luY29uZ3J1ZW50X3NkfQoiKSkKCnN1bW1hcnkoY29uZ3J1ZW50KQpzdW1tYXJ5KGluY29uZ3J1ZW50KQoKIyBzaG93IHRoZSBkYXRhIGluIGEgdGFibGUgZm9yIHF1aWNrIGFuYWx5c2lzCkRUOjpkYXRhdGFibGUoZGF0YT1zYW1wbGVkYXRhKQpgYGAKClxuZXdwYWdlCgojIyBRNDogUHJvdmlkZSBvbmUgb3IgdHdvIHZpc3VhbGl6YXRpb25zIHRoYXQgc2hvdyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBzYW1wbGUgZGF0YS4gV3JpdGUgb25lIG9yIHR3byBzZW50ZW5jZXMgbm90aW5nIHdoYXQgeW91IG9ic2VydmUgYWJvdXQgdGhlIHBsb3Qgb3IgcGxvdHMuCgpgYGB7cn0KI3Bsb3QgdG8gc2hvdyB0aGUgZGlzdHJpYnV0aW9uIG9mIGRhdGEgYW5kIGNvbXBhcmlzb24gYmV0d2VlbiBjb25ncnVlbnQgdnMuIGluY29uZ3J1ZW50LgpwMSA8LSBwbG90X2x5KHNhbXBsZWRhdGEsIHggPSB+Y29uZ3J1ZW50LCB0eXBlID0gImJveCIsIG5hbWUgPSAiQ29uZ3J1ZW50IikgJT4lCiAgYWRkX3RyYWNlKG5hbWUgPSAiSW5jb25ncnVlbnQiLCB4ID0gfmluY29uZ3J1ZW50LCB0eXBlID0gImJveCIpICU+JQogIGxheW91dCh4YXhpcyA9IGxpc3QodGl0bGUgPSAiVGltZSBpbiBTZWNvbmRzIiksIHdpZHRoID0gODAwLCBhdXRvc2l6ZSA9IEYsIG1hcmdpbiA9IGxpc3QoIGwgPSAxMDAsIGIgPSA1MCkpCnAxCmBgYAoKCioqT2JzZXJ2aW5nIHRoZSBQbG90KioKCi0gV2hpbGUgYW5hbHl6aW5nIHRoZSBib3ggcGxvdHMgd2UgY2FuIGRldGVybWluZSB0aGF0IHRoZXJlIGFyZSB0d28gZGlzdGluY3Qgb3V0bGllcnMgd2l0aGluIHRoZSBJbmNvbmdydWVudCBkYXRhc2V0LgotIFdlIGNhbiBhbHNvIGRldGVybWluZSB0aGF0IAp0aGUgSGlnaGVyIFRoaXJkIFF1YXJ0aWxlIG9mIHRoZSBDb25ncnVlbnQgZGF0YXNldCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIE1lZGlhbiBRdWFydGlsZSBvZiB0aGUgSW5jb25ncnVlbnQgZGF0YS4KClxuZXdwYWdlCgojIyBRNTogTm93LCBwZXJmb3JtIHRoZSBzdGF0aXN0aWNhbCB0ZXN0IGFuZCByZXBvcnQgeW91ciByZXN1bHRzLiBXaGF0IGlzIHlvdXIgY29uZmlkZW5jZSBsZXZlbCBhbmQgeW91ciBjcml0aWNhbCBzdGF0aXN0aWMgdmFsdWU/IERvIHlvdSByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcyBvciBmYWlsIHRvIHJlamVjdCBpdD8gQ29tZSB0byBhIGNvbmNsdXNpb24gaW4gdGVybXMgb2YgdGhlIGV4cGVyaW1lbnQgdGFzay4gRGlkIHRoZSByZXN1bHRzIG1hdGNoIHVwIHdpdGggeW91ciBleHBlY3RhdGlvbnMuCgoqKnZhcmlhYmxlcyoqCiQkYSA9IDAuMSQkCiQkRGYgPSAyNCQkCioqdC1zdGF0aXN0aWMqKgokJHQtY3JpdGljYWxcID1cICsxLjcxNFwgLTEuNzE0JCQKCkluIG9yZGVyIHRvIHByb3Blcmx5IGNvbmR1Y3QgYSBzdGF0aXN0aWNhbCBhbmFseXNpcyBvZiB0aGUgZGF0YSwgd2UgbXVzdCBkZWZpbmUgdmFyaWFibGVzIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBvdXIgZmluZGluZ3MuClRoZSB2YXJpYWJsZXMgZGVmaW5lZCBiZWxvdyB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjb25jbHVzaW9uIG9uIHRoZSBuZXh0IHBhZ2UuCgoKYGBge3J9CiNwcmVwIGRhdGEgZm9yIHN0YXRpc3RpY2FsIHRlc3QKZXN0IDwtIHJvdW5kKChpbmNvbmdydWVudF9tZWFuIC0gY29uZ3J1ZW50X21lYW4pLCAyKTsKI2NyZWF0ZSBhIG5ldyByb3cgb24gZGF0YSB0YWJsZSBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBpbmNvbmdydWVudCBhbmQgY29uZ3J1ZW50CnNhbXBsZWRhdGFbIkRpZmZlcmVuY2UiXSA9IHNhbXBsZWRhdGFbIkluY29uZ3J1ZW50Il0gLSBzYW1wbGVkYXRhWyJDb25ncnVlbnQiXTsKI2NyZWF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpZmZlcmVuY2Ugb2YgY29uZ3J1ZW50IGFuZCBpbmNvbmdydWVudCBkYXRhCnNkZGlmZiA8LSByb3VuZChzZChzYW1wbGVkYXRhJERpZmZlcmVuY2UpICwzKTsKI2RldGVybWluZSB0LXN0YXRpc3RpYyB1c2luZyB0aGUgZm9ybXVsYSBnaXZlbiBhYm92ZS4KdHN0YXQgPC0gcm91bmQoZXN0LyhzZGRpZmYvKHNxcnQobnJvdyhzYW1wbGVkYXRhKSkpKSwgMyk7CmBgYAoKClxuZXdwYWdlCgojIENvbmNsdXNpb24KRHVyaW5nIHRoZSBzdGF0aXN0aWNhbCBhbmFseXNpcyBJIHN0YXJ0ZWQgYnkgZXZhbHVhdGluZyB0aGUgdC1jcml0aWNhbCB3aGljaCB3YXMgZGV0ZXJtaW5lZCB0byBiZSBgciB0c3RhdGAuIElmIHdlIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBmb3JtdWxhIGRlZmluZWQgYWJvdmUgd2Ugd291bGQgZXhwZWN0IGEgdGhlIHZhbHVlIHRvIGJlIDwgMS43MTQgaW4gb3JkZXIgZm9yIG91ciAqKk51bGwgSHlwb3RoZXNpcyoqIHRvIGJlIGFjY2VwdGVkLgpBY2NvcmRpbmcgdG8gdGhlIGZvcm11bGEgb3VyIHJlc3VsdHMgYXJlICR0LXN0YXRpc3RpYyA9ICBgciB0c3RhdGAgPiAxLjcxNCQuIER1ZSB0byB0aGVzZSBmaW5kaW5ncyB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gcmVqZWN0IG91ciBudWxsIGh5cG90aGVzaXMuIElmIHdlIHJlY2FsbCB0aGUgbnVsbCBoeXBvdGhlc2lzIHN0YXRlZCB0aGF0IHRoZXJlIHdlcmUgbm8gc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgaW4gdGhlIHJlc3BvbnNlIHRpbWUgYmV0d2VlbiBjb25ncnVlbnQgYW5kIGluY29uZ3J1ZW50IGRhdGEuCgoKW14xXTogbWVhbiBvZiBpbmNvbmdydWVudCAtICRfaSQKW14yXTogbWVhbiBvZiBjb25ncnVlbnQgLSAkX2MkCg==