I. Initialization Block

Initializing RStudio

The data set we will use primarily is Data3350 which was produced in 2015 during an undergraduate research project about personality and humor. The VarsData3350 PDF file has descriptions of each variable in the Data3350 file. Both are available for download in D2L. Be sure to put the Data3350 in your R folder in Documents, and make sure your working directory is set the same way (Session menu). The code block below uses the library function to ensure that the Mosaic package is loaded and will import the data frames used in this module: Data3350 and the U.S. wages data frames Med, Perc and PercB.

library(mosaic)
library(readxl)
Data3350 = read_excel("Data3350.xlsx")
Med = read_excel("Med.xlsx")
Perc = read_excel("Perc.xlsx")
PerB = read_excel("PercB.xlsx")

II. Exercises

  1. Use the Data3350 data frame to build and evaluate a linear model for narcissism (dependent variabele) vs. thrill-seeking (independent variable) using the Thrill and Narc variables. Be sure to check the linearity and normality assumptions and analyze all regression statistics. Construct a confidence interval for the slope of the regression line using an appropriate method.

  2. Use the Data3350 data frame to build and evaluate a linear model for neuroticism (dependent variabele) vs. optimism (independent variable) using the Neuro and Opt variables. Be sure to check the linearity and normality assumptions and analyze all regression statistics. Construct a confidence interval for the slope of the regression line using an appropriate method.

  3. Using the built-in Mosaic data set Dimes, test the significance of the correlation between mass and year. Would it be appropriate to build a linear model in this case? Why or why not?

  4. Use the Perc data frame to create linear models for the 25th percentile wage earners from 2000 Q1 through 2019 Q4. Be sure to look carefully at all diagnostic plots. Create models for the Trump era and the last 3 years of the Obmama era and conduct hypothesis tests that the Trump era growth was significantly greater than the historic trend as well as greater than the Obama era.

  5. Use the Perc data frame to create linear models for the 75th and 90th percentile wage earners from 2000 Q1 through 2019 Q4. Be sure to look carefully at all diagnostic plots. Create models for the Trump era and the last 3 years of the Obmama era and conduct hypothesis tests that the Trump era growth was significantly greater than the historic trend as well as greater than the Obama era.

  6. The PercB data is similar to Perc in that it includes the 10th, 25th, 50th, 75th and 90th percentile wages, but PerB includes Black wage earners only. Use the PercB data frame to create a linear model for the median wage growth (50th percentile) from 2000 Q1 through 2019 Q4. Be sure to look carefully at all diagnostic plots. Create models for the Trump era and the last 3 years of the Obmama era and conduct hypothesis tests that the Trump era growth was significantly greater than the historic trend as well as greater than the Obama era.

III. Code Blocks

xyplot(Anx ~ Opt, data = Data3350 , type = c("p","r"),
       main = "Optimism vs. Anxiety",
       xlab = "Optimism",
       ylab = "Anxiety")
lm(Anx ~ Opt, data = Data3350)
mod = lm(Anx ~ Opt, data = Data3350)
summary(mod)
histogram (~ resid (mod))
qqmath( ~ resid(mod))
mod1 = lm(SE ~ Opt, data = Data3350)
qqmath( ~ resid(mod1), type = c("p","r"))
summary(mod)
xyplot(Earners ~ Period, data = Med, 
       xlab = "Quarters since 1981 Q1", 
       ylab = "Number of Wage Earners (in thousands)")
newMed = subset( Med , Period <= 155 )
xyplot( Median ~ Period, data = newMed , 
        type = c("p","r") ,
        xlab = "Quarters since 1981 Q1" , 
        ylab = "U.S. Median Wage")
lm( Median ~ Period, data = newMed)
cor(Median ~ Period, data = Med)
cor(Median ~ Period, data = newMed)
mod = lm( Median ~ Period, data = newMed)
summary(mod)
TrumpMed = subset( Med , Period >=  144 & Period <= 155)
xyplot(Median ~ Period, data = TrumpMed , 
        type = c("p","r") ,
        xlab = "All Quarters 2017 to 2019" ,
        ylab = "Trump Era Median Wage") 
modT = lm(Median ~ Period, data = TrumpMed)
summary(modT)
qqmath( ~ resid(modT), type = c("p","r"))
ObamaMedTotal = subset( Med , Period >= 112 & Period <= 143 )
ObamaMedL3 = subset( Med , Period >= 132 & Period <= 143 )
xyplot(Median ~ Period, data = ObamaMedTotal , 
        type = c("p","r") ,
        xlab = "All Quarters 2009 to 2016" ,
        ylab = "Obama Era Median Wage") 
xyplot(Median ~ Period, data = ObamaMedL3 , 
        type = c("p","r") ,
        xlab = "All Quarters 2014 to 2016" ,
        ylab = "Obama Era Median Wage") 
modB = lm(Median ~ Period, data = ObamaMedTotal)
modBL3 = lm(Median ~ Period, data = ObamaMedL3)
summary(modB)
summary(modBL3)
confint.lm(modT)
confint.lm(modT, level = 0.90)
confint.lm(modB)
confint.lm(modBL3, level = 0.95)
qqmath( ~ resid(modB), type = c("p","r"))
qqmath( ~ resid(modBL3), type = c("p","r"))
coef(lm(Median ~ Period, data=resample(TrumpMed, size = 10)))
bootstrap = do(500) * coef(lm(Median ~ Period, data=resample(TrumpMed)))
densityplot(~Period, data=bootstrap)
qdata(~Period, p=c(0.025, 0.975), data=bootstrap)
LS0tDQp0aXRsZTogIkJhc2ljcyBvZiBDb3JyZWxhdGlvbiBhbmQgUmVncmVzc2lvbiINCnN1YnRpdGxlOiBVTkcgTUFUSCAzMzUwIChvbmxpbmUpDQphdXRob3I6IFJvYmIgU2lubg0KZGF0ZTogU2VwdGVtYmVyIDIwMjANCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+SS4gSW5pdGlhbGl6YXRpb24gQmxvY2s8L3NwYW4+DQoNCjxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0OyBtYXJnaW46IDhweDsgYm9yZGVyOjJweCBibGFjayBzb2xpZDsgcGFkZGluZzogMHB4IDEwcHggNXB4Ij4NCiMjIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPkluaXRpYWxpemluZyBSU3R1ZGlvPC9zcGFuPg0KVGhlIGRhdGEgc2V0IHdlIHdpbGwgdXNlIHByaW1hcmlseSBpcyAqKkRhdGEzMzUwKiogd2hpY2ggd2FzIHByb2R1Y2VkIGluIDIwMTUgZHVyaW5nIGFuIHVuZGVyZ3JhZHVhdGUgcmVzZWFyY2ggcHJvamVjdCBhYm91dCBwZXJzb25hbGl0eSBhbmQgaHVtb3IuIFRoZSAqKlZhcnNEYXRhMzM1MCoqIFBERiBmaWxlIGhhcyBkZXNjcmlwdGlvbnMgb2YgZWFjaCB2YXJpYWJsZSBpbiB0aGUgRGF0YTMzNTAgZmlsZS4gQm90aCBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBpbiBEMkwuIEJlIHN1cmUgdG8gcHV0IHRoZSBEYXRhMzM1MCBpbiB5b3VyIFIgZm9sZGVyIGluIERvY3VtZW50cywgYW5kIG1ha2Ugc3VyZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCB0aGUgc2FtZSB3YXkgKFNlc3Npb24gbWVudSkuIFRoZSBjb2RlIGJsb2NrIGJlbG93IHVzZXMgdGhlICoqbGlicmFyeSoqIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZSAqKk1vc2FpYyoqIHBhY2thZ2UgaXMgbG9hZGVkIGFuZCB3aWxsIGltcG9ydCB0aGUgZGF0YSBmcmFtZXMgdXNlZCBpbiB0aGlzIG1vZHVsZTogKipEYXRhMzM1MCoqIGFuZCB0aGUgVS5TLiB3YWdlcyBkYXRhIGZyYW1lcyAqKk1lZCoqLCAqKlBlcmMqKiBhbmQgKipQZXJjQioqLg0KDQpgYGB7cn0NCmxpYnJhcnkobW9zYWljKQ0KbGlicmFyeShyZWFkeGwpDQpEYXRhMzM1MCA9IHJlYWRfZXhjZWwoIkRhdGEzMzUwLnhsc3giKQ0KTWVkID0gcmVhZF9leGNlbCgiTWVkLnhsc3giKQ0KUGVyYyA9IHJlYWRfZXhjZWwoIlBlcmMueGxzeCIpDQpQZXJCID0gcmVhZF9leGNlbCgiUGVyY0IueGxzeCIpDQpgYGANCjwvZGl2Pg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPklJLiBFeGVyY2lzZXM8L3NwYW4+DQoNCjEuIFVzZSB0aGUgRGF0YTMzNTAgZGF0YSBmcmFtZSB0byBidWlsZCBhbmQgZXZhbHVhdGUgYSBsaW5lYXIgbW9kZWwgZm9yIG5hcmNpc3Npc20gKGRlcGVuZGVudCB2YXJpYWJlbGUpIHZzLiB0aHJpbGwtc2Vla2luZyAoaW5kZXBlbmRlbnQgdmFyaWFibGUpIHVzaW5nIHRoZSAqKlRocmlsbCoqIGFuZCAqKk5hcmMqKiB2YXJpYWJsZXMuIEJlIHN1cmUgdG8gY2hlY2sgdGhlIGxpbmVhcml0eSBhbmQgbm9ybWFsaXR5IGFzc3VtcHRpb25zIGFuZCBhbmFseXplIGFsbCByZWdyZXNzaW9uIHN0YXRpc3RpY3MuIENvbnN0cnVjdCBhIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHRoZSBzbG9wZSBvZiB0aGUgcmVncmVzc2lvbiBsaW5lIHVzaW5nIGFuIGFwcHJvcHJpYXRlIG1ldGhvZC4NCg0KMi4gVXNlIHRoZSBEYXRhMzM1MCBkYXRhIGZyYW1lIHRvIGJ1aWxkIGFuZCBldmFsdWF0ZSBhIGxpbmVhciBtb2RlbCBmb3IgbmV1cm90aWNpc20gKGRlcGVuZGVudCB2YXJpYWJlbGUpIHZzLiBvcHRpbWlzbSAoaW5kZXBlbmRlbnQgdmFyaWFibGUpIHVzaW5nIHRoZSAqKk5ldXJvKiogYW5kICoqT3B0KiogdmFyaWFibGVzLiBCZSBzdXJlIHRvIGNoZWNrIHRoZSBsaW5lYXJpdHkgYW5kIG5vcm1hbGl0eSBhc3N1bXB0aW9ucyBhbmQgYW5hbHl6ZSBhbGwgcmVncmVzc2lvbiBzdGF0aXN0aWNzLiBDb25zdHJ1Y3QgYSBjb25maWRlbmNlIGludGVydmFsIGZvciB0aGUgc2xvcGUgb2YgdGhlIHJlZ3Jlc3Npb24gbGluZSB1c2luZyBhbiBhcHByb3ByaWF0ZSBtZXRob2QuDQoNCjMuIFVzaW5nIHRoZSBidWlsdC1pbiBNb3NhaWMgZGF0YSBzZXQgKipEaW1lcyoqLCB0ZXN0IHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gKiptYXNzKiogYW5kICoqeWVhcioqLiBXb3VsZCBpdCBiZSBhcHByb3ByaWF0ZSB0byBidWlsZCBhIGxpbmVhciBtb2RlbCBpbiB0aGlzIGNhc2U/IFdoeSBvciB3aHkgbm90Pw0KDQo0LiBVc2UgdGhlICoqUGVyYyoqIGRhdGEgZnJhbWUgdG8gY3JlYXRlIGxpbmVhciBtb2RlbHMgZm9yIHRoZSAyNXRoIHBlcmNlbnRpbGUgd2FnZSBlYXJuZXJzIGZyb20gMjAwMCBRMSB0aHJvdWdoICAyMDE5IFE0LiBCZSBzdXJlIHRvIGxvb2sgY2FyZWZ1bGx5IGF0IGFsbCBkaWFnbm9zdGljIHBsb3RzLiBDcmVhdGUgbW9kZWxzIGZvciB0aGUgVHJ1bXAgZXJhIGFuZCB0aGUgbGFzdCAzIHllYXJzIG9mIHRoZSBPYm1hbWEgZXJhIGFuZCBjb25kdWN0IGh5cG90aGVzaXMgdGVzdHMgdGhhdCB0aGUgVHJ1bXAgZXJhIGdyb3d0aCB3YXMgc2lnbmlmaWNhbnRseSBncmVhdGVyIHRoYW4gdGhlIGhpc3RvcmljIHRyZW5kIGFzIHdlbGwgYXMgZ3JlYXRlciB0aGFuIHRoZSBPYmFtYSBlcmEuDQoNCjUuIFVzZSB0aGUgKipQZXJjKiogZGF0YSBmcmFtZSB0byBjcmVhdGUgbGluZWFyIG1vZGVscyBmb3IgdGhlIDc1dGggYW5kIDkwdGggcGVyY2VudGlsZSB3YWdlIGVhcm5lcnMgZnJvbSAyMDAwIFExIHRocm91Z2ggIDIwMTkgUTQuIEJlIHN1cmUgdG8gbG9vayBjYXJlZnVsbHkgYXQgYWxsIGRpYWdub3N0aWMgcGxvdHMuIENyZWF0ZSBtb2RlbHMgZm9yIHRoZSBUcnVtcCBlcmEgYW5kIHRoZSBsYXN0IDMgeWVhcnMgb2YgdGhlIE9ibWFtYSBlcmEgYW5kIGNvbmR1Y3QgaHlwb3RoZXNpcyB0ZXN0cyB0aGF0IHRoZSBUcnVtcCBlcmEgZ3Jvd3RoIHdhcyBzaWduaWZpY2FudGx5IGdyZWF0ZXIgdGhhbiB0aGUgaGlzdG9yaWMgdHJlbmQgYXMgd2VsbCBhcyBncmVhdGVyIHRoYW4gdGhlIE9iYW1hIGVyYS4NCg0KNi4gVGhlICoqUGVyY0IqKiBkYXRhIGlzIHNpbWlsYXIgdG8gKipQZXJjKiogaW4gdGhhdCBpdCBpbmNsdWRlcyB0aGUgMTB0aCwgMjV0aCwgNTB0aCwgNzV0aCBhbmQgOTB0aCBwZXJjZW50aWxlIHdhZ2VzLCBidXQgKipQZXJCKiogaW5jbHVkZXMgQmxhY2sgd2FnZSBlYXJuZXJzIG9ubHkuIFVzZSB0aGUgKipQZXJjQioqIGRhdGEgZnJhbWUgdG8gY3JlYXRlIGEgbGluZWFyIG1vZGVsIGZvciB0aGUgbWVkaWFuIHdhZ2UgZ3Jvd3RoICg1MHRoIHBlcmNlbnRpbGUpIGZyb20gMjAwMCBRMSB0aHJvdWdoIDIwMTkgUTQuIEJlIHN1cmUgdG8gbG9vayBjYXJlZnVsbHkgYXQgYWxsIGRpYWdub3N0aWMgcGxvdHMuIENyZWF0ZSBtb2RlbHMgZm9yIHRoZSBUcnVtcCBlcmEgYW5kIHRoZSBsYXN0IDMgeWVhcnMgb2YgdGhlIE9ibWFtYSBlcmEgYW5kIGNvbmR1Y3QgaHlwb3RoZXNpcyB0ZXN0cyB0aGF0IHRoZSBUcnVtcCBlcmEgZ3Jvd3RoIHdhcyBzaWduaWZpY2FudGx5IGdyZWF0ZXIgdGhhbiB0aGUgaGlzdG9yaWMgdHJlbmQgYXMgd2VsbCBhcyBncmVhdGVyIHRoYW4gdGhlIE9iYW1hIGVyYS4NCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5JSUkuIENvZGUgQmxvY2tzPC9zcGFuPg0KDQpgYGB7cn0NCnh5cGxvdChBbnggfiBPcHQsIGRhdGEgPSBEYXRhMzM1MCAsIHR5cGUgPSBjKCJwIiwiciIpLA0KICAgICAgIG1haW4gPSAiT3B0aW1pc20gdnMuIEFueGlldHkiLA0KICAgICAgIHhsYWIgPSAiT3B0aW1pc20iLA0KICAgICAgIHlsYWIgPSAiQW54aWV0eSIpDQpgYGANCg0KYGBge3J9DQpsbShBbnggfiBPcHQsIGRhdGEgPSBEYXRhMzM1MCkNCmBgYA0KDQoNCmBgYHtyfQ0KbW9kID0gbG0oQW54IH4gT3B0LCBkYXRhID0gRGF0YTMzNTApDQpgYGANCg0KDQpgYGB7cn0NCnN1bW1hcnkobW9kKQ0KYGBgDQoNCg0KYGBge3J9DQpoaXN0b2dyYW0gKH4gcmVzaWQgKG1vZCkpDQpgYGANCg0KDQpgYGB7cn0NCnFxbWF0aCggfiByZXNpZChtb2QpKQ0KYGBgDQoNCg0KYGBge3J9DQptb2QxID0gbG0oU0UgfiBPcHQsIGRhdGEgPSBEYXRhMzM1MCkNCnFxbWF0aCggfiByZXNpZChtb2QxKSwgdHlwZSA9IGMoInAiLCJyIikpDQpgYGANCg0KDQpgYGB7cn0NCnN1bW1hcnkobW9kKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCnh5cGxvdChFYXJuZXJzIH4gUGVyaW9kLCBkYXRhID0gTWVkLCANCiAgICAgICB4bGFiID0gIlF1YXJ0ZXJzIHNpbmNlIDE5ODEgUTEiLCANCiAgICAgICB5bGFiID0gIk51bWJlciBvZiBXYWdlIEVhcm5lcnMgKGluIHRob3VzYW5kcykiKQ0KYGBgDQoNCg0KYGBge3J9DQpuZXdNZWQgPSBzdWJzZXQoIE1lZCAsIFBlcmlvZCA8PSAxNTUgKQ0KYGBgDQoNCmBgYHtyfQ0KeHlwbG90KCBNZWRpYW4gfiBQZXJpb2QsIGRhdGEgPSBuZXdNZWQgLCANCiAgICAgICAgdHlwZSA9IGMoInAiLCJyIikgLA0KICAgICAgICB4bGFiID0gIlF1YXJ0ZXJzIHNpbmNlIDE5ODEgUTEiICwgDQogICAgICAgIHlsYWIgPSAiVS5TLiBNZWRpYW4gV2FnZSIpDQpgYGANCg0KDQpgYGB7cn0NCmxtKCBNZWRpYW4gfiBQZXJpb2QsIGRhdGEgPSBuZXdNZWQpDQpjb3IoTWVkaWFuIH4gUGVyaW9kLCBkYXRhID0gTWVkKQ0KY29yKE1lZGlhbiB+IFBlcmlvZCwgZGF0YSA9IG5ld01lZCkNCmBgYA0KDQoNCmBgYHtyfQ0KbW9kID0gbG0oIE1lZGlhbiB+IFBlcmlvZCwgZGF0YSA9IG5ld01lZCkNCnN1bW1hcnkobW9kKQ0KYGBgDQoNCg0KYGBge3J9DQpUcnVtcE1lZCA9IHN1YnNldCggTWVkICwgUGVyaW9kID49ICAxNDQgJiBQZXJpb2QgPD0gMTU1KQ0KYGBgDQoNCg0KYGBge3J9DQp4eXBsb3QoTWVkaWFuIH4gUGVyaW9kLCBkYXRhID0gVHJ1bXBNZWQgLCANCiAgICAgICAgdHlwZSA9IGMoInAiLCJyIikgLA0KICAgICAgICB4bGFiID0gIkFsbCBRdWFydGVycyAyMDE3IHRvIDIwMTkiICwNCiAgICAgICAgeWxhYiA9ICJUcnVtcCBFcmEgTWVkaWFuIFdhZ2UiKSANCmBgYA0KDQoNCmBgYHtyfQ0KbW9kVCA9IGxtKE1lZGlhbiB+IFBlcmlvZCwgZGF0YSA9IFRydW1wTWVkKQ0Kc3VtbWFyeShtb2RUKQ0KYGBgDQoNCg0KYGBge3J9DQpxcW1hdGgoIH4gcmVzaWQobW9kVCksIHR5cGUgPSBjKCJwIiwiciIpKQ0KYGBgDQoNCg0KYGBge3J9DQpPYmFtYU1lZFRvdGFsID0gc3Vic2V0KCBNZWQgLCBQZXJpb2QgPj0gMTEyICYgUGVyaW9kIDw9IDE0MyApDQpPYmFtYU1lZEwzID0gc3Vic2V0KCBNZWQgLCBQZXJpb2QgPj0gMTMyICYgUGVyaW9kIDw9IDE0MyApDQpgYGANCg0KDQpgYGB7cn0NCnh5cGxvdChNZWRpYW4gfiBQZXJpb2QsIGRhdGEgPSBPYmFtYU1lZFRvdGFsICwgDQogICAgICAgIHR5cGUgPSBjKCJwIiwiciIpICwNCiAgICAgICAgeGxhYiA9ICJBbGwgUXVhcnRlcnMgMjAwOSB0byAyMDE2IiAsDQogICAgICAgIHlsYWIgPSAiT2JhbWEgRXJhIE1lZGlhbiBXYWdlIikgDQpgYGANCg0KDQpgYGB7cn0NCnh5cGxvdChNZWRpYW4gfiBQZXJpb2QsIGRhdGEgPSBPYmFtYU1lZEwzICwgDQogICAgICAgIHR5cGUgPSBjKCJwIiwiciIpICwNCiAgICAgICAgeGxhYiA9ICJBbGwgUXVhcnRlcnMgMjAxNCB0byAyMDE2IiAsDQogICAgICAgIHlsYWIgPSAiT2JhbWEgRXJhIE1lZGlhbiBXYWdlIikgDQpgYGANCg0KDQpgYGB7cn0NCm1vZEIgPSBsbShNZWRpYW4gfiBQZXJpb2QsIGRhdGEgPSBPYmFtYU1lZFRvdGFsKQ0KbW9kQkwzID0gbG0oTWVkaWFuIH4gUGVyaW9kLCBkYXRhID0gT2JhbWFNZWRMMykNCnN1bW1hcnkobW9kQikNCnN1bW1hcnkobW9kQkwzKQ0KYGBgDQoNCg0KYGBge3J9DQpjb25maW50LmxtKG1vZFQpDQpgYGANCg0KYGBge3J9DQpjb25maW50LmxtKG1vZFQsIGxldmVsID0gMC45MCkNCmBgYA0KDQoNCmBgYHtyfQ0KY29uZmludC5sbShtb2RCKQ0KYGBgDQoNCg0KYGBge3J9DQpjb25maW50LmxtKG1vZEJMMywgbGV2ZWwgPSAwLjk1KQ0KYGBgDQoNCg0KYGBge3J9DQpxcW1hdGgoIH4gcmVzaWQobW9kQiksIHR5cGUgPSBjKCJwIiwiciIpKQ0KYGBgDQoNCmBgYHtyfQ0KcXFtYXRoKCB+IHJlc2lkKG1vZEJMMyksIHR5cGUgPSBjKCJwIiwiciIpKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmNvZWYobG0oTWVkaWFuIH4gUGVyaW9kLCBkYXRhPXJlc2FtcGxlKFRydW1wTWVkLCBzaXplID0gMTApKSkNCmBgYA0KDQoNCmBgYHtyfQ0KYm9vdHN0cmFwID0gZG8oNTAwKSAqIGNvZWYobG0oTWVkaWFuIH4gUGVyaW9kLCBkYXRhPXJlc2FtcGxlKFRydW1wTWVkKSkpDQpkZW5zaXR5cGxvdCh+UGVyaW9kLCBkYXRhPWJvb3RzdHJhcCkNCmBgYA0KDQoNCmBgYHtyfQ0KcWRhdGEoflBlcmlvZCwgcD1jKDAuMDI1LCAwLjk3NSksIGRhdGE9Ym9vdHN0cmFwKQ0KYGBgDQoNCg==