【1.1】
Enter the model R2 (the “Multiple R-squared” value):
R-square = 0.7415
*****************
ClimateChange_Testing <- subset(ClimateChange, Year > 2006)
ClimateChange_Training <- subset(ClimateChange, Year <= 2006)
ClimateChange_TrainingReg <- lm(Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols, data = ClimateChange_Training)
summary(ClimateChange_TrainingReg)
------------------------------------------------------------------
Call:
lm(formula = Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 +
TSI + Aerosols, data = ClimateChange_Training)
Residuals:
Min 1Q Median 3Q Max
-0.26009 -0.06126 -0.00145 0.05684 0.32530
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.231e+02 2.087e+01 -5.897 1.13e-08 ***
MEI 6.367e-02 6.685e-03 9.524 < 2e-16 ***
CO2 6.906e-03 2.395e-03 2.883 0.004262 **
CH4 1.645e-04 5.470e-04 0.301 0.763863
N2O -1.620e-02 9.461e-03 -1.712 0.088083 .
CFC.11 -6.410e-03 1.767e-03 -3.629 0.000342 ***
CFC.12 3.625e-03 1.104e-03 3.285 0.001159 **
TSI 9.181e-02 1.566e-02 5.861 1.37e-08 ***
Aerosols -1.520e+00 2.188e-01 -6.949 2.88e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.09329 on 263 degrees of freedom
Multiple R-squared: 0.7415, Adjusted R-squared: 0.7337
F-statistic: 94.32 on 8 and 263 DF, p-value: < 2.2e-16
【1.2】
Which variables are significant in the model? We will consider a variable signficant only if the p-value is below 0.05. (Select all that apply.)
(1) MEI
(2) CO2
(5) CFC.11
(6) CFC.12
(7) TSI
(8) Aerosols
【2.1】
Which of the following is the simplest correct explanation for this contradiction?
(3) All of the gas concentration variables reflect human development - N2O and CFC.11 are correlated with other variables in the data set.
【2.2】
Compute the correlations between all the variables in the training set. Which of the following independent variables is N2O highly correlated with (absolute correlation greater than 0.7)? Select all that apply.
(2) CO2
(3) CH4
(5) CFC.12
Which of the following independent variables is CFC.11 highly correlated with? Select all that apply.
(3) CH4
(5) CFC.12
------------------------------------------------------------------
> cor(ClimateChange_Training)
Year Month MEI CO2 CH4 N2O
Year 1.00000000 -0.0279419602 -0.0369876842 0.98274939 0.91565945 0.99384523
Month -0.02794196 1.0000000000 0.0008846905 -0.10673246 0.01856866 0.01363153
MEI -0.03698768 0.0008846905 1.0000000000 -0.04114717 -0.03341930 -0.05081978
CO2 0.98274939 -0.1067324607 -0.0411471651 1.00000000 0.87727963 0.97671982
CH4 0.91565945 0.0185686624 -0.0334193014 0.87727963 1.00000000 0.89983864
N2O 0.99384523 0.0136315303 -0.0508197755 0.97671982 0.89983864 1.00000000
CFC.11 0.56910643 -0.0131112236 0.0690004387 0.51405975 0.77990402 0.52247732
CFC.12 0.89701166 0.0006751102 0.0082855443 0.85268963 0.96361625 0.86793078
TSI 0.17030201 -0.0346061935 -0.1544919227 0.17742893 0.24552844 0.19975668
Aerosols -0.34524670 0.0148895406 0.3402377871 -0.35615480 -0.26780919 -0.33705457
Temp 0.78679714 -0.0998567411 0.1724707512 0.78852921 0.70325502 0.77863893
CFC.11 CFC.12 TSI Aerosols Temp
Year 0.56910643 0.8970116635 0.17030201 -0.34524670 0.78679714
Month -0.01311122 0.0006751102 -0.03460619 0.01488954 -0.09985674
MEI 0.06900044 0.0082855443 -0.15449192 0.34023779 0.17247075
CO2 0.51405975 0.8526896272 0.17742893 -0.35615480 0.78852921
CH4 0.77990402 0.9636162478 0.24552844 -0.26780919 0.70325502
N2O 0.52247732 0.8679307757 0.19975668 -0.33705457 0.77863893
CFC.11 1.00000000 0.8689851828 0.27204596 -0.04392120 0.40771029
CFC.12 0.86898518 1.0000000000 0.25530281 -0.22513124 0.68755755
TSI 0.27204596 0.2553028138 1.00000000 0.05211651 0.24338269
Aerosols -0.04392120 -0.2251312440 0.05211651 1.00000000 -0.38491375
Temp 0.40771029 0.6875575483 0.24338269 -0.38491375 1.00000000
【3】
Enter the coefficient of N2O in this reduced model:
2.532e-02
Enter the model R2:
0.7261
------------------------------------------------------------------
> ClimateChange_TrainingReg2 <- lm(Temp ~ MEI + N2O + TSI + Aerosols, data = ClimateChange_Training)
> summary(ClimateChange_TrainingReg2)
Call:
lm(formula = Temp ~ MEI + N2O + TSI + Aerosols, data = ClimateChange_Training)
Residuals:
Min 1Q Median 3Q Max
-0.27916 -0.05975 -0.00595 0.05672 0.34195
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.162e+02 2.022e+01 -5.747 2.37e-08 ***
MEI 6.419e-02 6.652e-03 9.649 < 2e-16 ***
N2O 2.532e-02 1.311e-03 19.307 < 2e-16 ***
TSI 7.949e-02 1.487e-02 5.344 1.89e-07 ***
Aerosols -1.702e+00 2.180e-01 -7.806 1.19e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.09547 on 279 degrees of freedom
Multiple R-squared: 0.7261, Adjusted R-squared: 0.7222
F-statistic: 184.9 on 4 and 279 DF, p-value: < 2.2e-16
【4】
Enter the R2 value of the model produced by the step function:
0.744
Which of the following variable(s) were eliminated from the full model by the step function? Select all that apply.
(3) CH4
------------------------------------------------------------------
ClimateChangeReg <- lm(Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols, data = ClimateChange)
> summary(ClimateChangeReg)
Call:
lm(formula = Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 +
TSI + Aerosols, data = ClimateChange)
Residuals:
Min 1Q Median 3Q Max
-0.26228 -0.05868 0.00051 0.05718 0.32170
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.277e+02 1.919e+01 -6.654 1.36e-10 ***
MEI 6.632e-02 6.186e-03 10.722 < 2e-16 ***
CO2 5.207e-03 2.192e-03 2.375 0.0182 *
CH4 6.371e-05 4.977e-04 0.128 0.8982
N2O -1.693e-02 7.835e-03 -2.161 0.0315 *
CFC.11 -7.278e-03 1.461e-03 -4.980 1.07e-06 ***
CFC.12 4.272e-03 8.763e-04 4.875 1.77e-06 ***
TSI 9.586e-02 1.401e-02 6.844 4.38e-11 ***
Aerosols -1.582e+00 2.099e-01 -7.535 5.86e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.09182 on 299 degrees of freedom
Multiple R-squared: 0.744, Adjusted R-squared: 0.7371
F-statistic: 108.6 on 8 and 299 DF, p-value: < 2.2e-16
> summary(ClimateChangeReg)
Call:
lm(formula = Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 +
TSI + Aerosols, data = ClimateChange)
Residuals:
Min 1Q Median 3Q Max
-0.26228 -0.05868 0.00051 0.05718 0.32170
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.277e+02 1.919e+01 -6.654 1.36e-10 ***
MEI 6.632e-02 6.186e-03 10.722 < 2e-16 ***
CO2 5.207e-03 2.192e-03 2.375 0.0182 *
CH4 6.371e-05 4.977e-04 0.128 0.8982
N2O -1.693e-02 7.835e-03 -2.161 0.0315 *
CFC.11 -7.278e-03 1.461e-03 -4.980 1.07e-06 ***
CFC.12 4.272e-03 8.763e-04 4.875 1.77e-06 ***
TSI 9.586e-02 1.401e-02 6.844 4.38e-11 ***
Aerosols -1.582e+00 2.099e-01 -7.535 5.86e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.09182 on 299 degrees of freedom
Multiple R-squared: 0.744, Adjusted R-squared: 0.7371
F-statistic: 108.6 on 8 and 299 DF, p-value: < 2.2e-16
> StepModel <- step(ClimateChangeReg)
Start: AIC=-1462.11
Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols
Df Sum of Sq RSS AIC
- CH4 1 0.00014 2.5209 -1464.1
<none> 2.5208 -1462.1
- N2O 1 0.03935 2.5601 -1459.3
- CO2 1 0.04756 2.5683 -1458.3
- CFC.12 1 0.20038 2.7211 -1440.5
- CFC.11 1 0.20911 2.7299 -1439.6
- TSI 1 0.39485 2.9156 -1419.3
- Aerosols 1 0.47860 2.9994 -1410.6
- MEI 1 0.96917 3.4899 -1363.9
【5】
Enter the testing set R2:
0.6547574
------------------------------------------------------------------
ClimateChangeReg <- lm(Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols, data = ClimateChange)
summary(ClimateChangeReg)
StepModel <- step(ClimateChangeReg)
TempPredict <- predict(StepModel, newdata = ClimateChange_Testing)
summary(TempPredict)
SSE = sum((TempPredict - ClimateChange_Testing$Temp)^2)
SST = sum((mean(ClimateChange_Training$Temp)-ClimateChange_Testing$Temp)^2)
Rsquare = 1 - SSE/SST
> Rsquare
[1] 0.6547574
LS0tCnRpdGxlOiAiQVMyLTEgQ2xpbWF0ZSBDaGFuZ2UiCmF1dGhvcjogIjxLYXJlbiBZYW5nPiA8TTA2NDYxMDAyMT4iCm91dHB1dDogaHRtbF9ub3RlYm9vawplZGl0b3Jfb3B0aW9uczogCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQotLS0KCi0gLSAtIAoKIyMjIyDjgJAxLjHjgJEgCkVudGVyIHRoZSBtb2RlbCBSMiAodGhlICJNdWx0aXBsZSBSLXNxdWFyZWQiIHZhbHVlKToKYGBge3J9ClItc3F1YXJlID0gMC43NDE1CgoqKioqKioqKioqKioqKioqKgoKQ2xpbWF0ZUNoYW5nZV9UZXN0aW5nIDwtIHN1YnNldChDbGltYXRlQ2hhbmdlLCBZZWFyID4gMjAwNikKQ2xpbWF0ZUNoYW5nZV9UcmFpbmluZyA8LSBzdWJzZXQoQ2xpbWF0ZUNoYW5nZSwgWWVhciA8PSAyMDA2KQoKQ2xpbWF0ZUNoYW5nZV9UcmFpbmluZ1JlZyA8LSBsbShUZW1wIH4gTUVJICsgQ08yICsgQ0g0ICsgTjJPICsgQ0ZDLjExICsgQ0ZDLjEyICsgVFNJICsgQWVyb3NvbHMsIGRhdGEgPSBDbGltYXRlQ2hhbmdlX1RyYWluaW5nKQpzdW1tYXJ5KENsaW1hdGVDaGFuZ2VfVHJhaW5pbmdSZWcpCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNhbGw6CmxtKGZvcm11bGEgPSBUZW1wIH4gTUVJICsgQ08yICsgQ0g0ICsgTjJPICsgQ0ZDLjExICsgQ0ZDLjEyICsgCiAgICBUU0kgKyBBZXJvc29scywgZGF0YSA9IENsaW1hdGVDaGFuZ2VfVHJhaW5pbmcpCgpSZXNpZHVhbHM6CiAgICAgTWluICAgICAgIDFRICAgTWVkaWFuICAgICAgIDNRICAgICAgTWF4IAotMC4yNjAwOSAtMC4wNjEyNiAtMC4wMDE0NSAgMC4wNTY4NCAgMC4zMjUzMCAKCkNvZWZmaWNpZW50czoKICAgICAgICAgICAgICBFc3RpbWF0ZSBTdGQuIEVycm9yIHQgdmFsdWUgUHIoPnx0fCkgICAgCihJbnRlcmNlcHQpIC0xLjIzMWUrMDIgIDIuMDg3ZSswMSAgLTUuODk3IDEuMTNlLTA4ICoqKgpNRUkgICAgICAgICAgNi4zNjdlLTAyICA2LjY4NWUtMDMgICA5LjUyNCAgPCAyZS0xNiAqKioKQ08yICAgICAgICAgIDYuOTA2ZS0wMyAgMi4zOTVlLTAzICAgMi44ODMgMC4wMDQyNjIgKiogCkNINCAgICAgICAgICAxLjY0NWUtMDQgIDUuNDcwZS0wNCAgIDAuMzAxIDAuNzYzODYzICAgIApOMk8gICAgICAgICAtMS42MjBlLTAyICA5LjQ2MWUtMDMgIC0xLjcxMiAwLjA4ODA4MyAuICAKQ0ZDLjExICAgICAgLTYuNDEwZS0wMyAgMS43NjdlLTAzICAtMy42MjkgMC4wMDAzNDIgKioqCkNGQy4xMiAgICAgICAzLjYyNWUtMDMgIDEuMTA0ZS0wMyAgIDMuMjg1IDAuMDAxMTU5ICoqIApUU0kgICAgICAgICAgOS4xODFlLTAyICAxLjU2NmUtMDIgICA1Ljg2MSAxLjM3ZS0wOCAqKioKQWVyb3NvbHMgICAgLTEuNTIwZSswMCAgMi4xODhlLTAxICAtNi45NDkgMi44OGUtMTEgKioqCi0tLQpTaWduaWYuIGNvZGVzOiAgMCDigJgqKirigJkgMC4wMDEg4oCYKirigJkgMC4wMSDigJgq4oCZIDAuMDUg4oCYLuKAmSAwLjEg4oCYIOKAmSAxCgpSZXNpZHVhbCBzdGFuZGFyZCBlcnJvcjogMC4wOTMyOSBvbiAyNjMgZGVncmVlcyBvZiBmcmVlZG9tCk11bHRpcGxlIFItc3F1YXJlZDogIDAuNzQxNSwJQWRqdXN0ZWQgUi1zcXVhcmVkOiAgMC43MzM3IApGLXN0YXRpc3RpYzogOTQuMzIgb24gOCBhbmQgMjYzIERGLCAgcC12YWx1ZTogPCAyLjJlLTE2CmBgYAoKCiMjIyMg44CQMS4y44CRCldoaWNoIHZhcmlhYmxlcyBhcmUgc2lnbmlmaWNhbnQgaW4gdGhlIG1vZGVsPyBXZSB3aWxsIGNvbnNpZGVyIGEgdmFyaWFibGUgc2lnbmZpY2FudCBvbmx5IGlmIHRoZSBwLXZhbHVlIGlzIGJlbG93IDAuMDUuIChTZWxlY3QgYWxsIHRoYXQgYXBwbHkuKQpgYGB7cn0KKDEpIE1FSQooMikgQ08yIAooNSkgQ0ZDLjExIAooNikgQ0ZDLjEyIAooNykgVFNJIAooOCkgQWVyb3NvbHMgCmBgYAoKCiMjIyMg44CQMi4x44CRCldoaWNoIG9mIHRoZSBmb2xsb3dpbmcgaXMgdGhlIHNpbXBsZXN0IGNvcnJlY3QgZXhwbGFuYXRpb24gZm9yIHRoaXMgY29udHJhZGljdGlvbj8KYGBge3J9CigzKSBBbGwgb2YgdGhlIGdhcyBjb25jZW50cmF0aW9uIHZhcmlhYmxlcyByZWZsZWN0IGh1bWFuIGRldmVsb3BtZW50IC0gTjJPIGFuZCBDRkMuMTEgYXJlIGNvcnJlbGF0ZWQgd2l0aCBvdGhlciB2YXJpYWJsZXMgaW4gdGhlIGRhdGEgc2V0LgpgYGAKCgojIyMjIOOAkDIuMuOAkQpDb21wdXRlIHRoZSBjb3JyZWxhdGlvbnMgYmV0d2VlbiBhbGwgdGhlIHZhcmlhYmxlcyBpbiB0aGUgdHJhaW5pbmcgc2V0LiBXaGljaCBvZiB0aGUgZm9sbG93aW5nIGluZGVwZW5kZW50IHZhcmlhYmxlcyBpcyBOMk8gaGlnaGx5IGNvcnJlbGF0ZWQgd2l0aCAoYWJzb2x1dGUgY29ycmVsYXRpb24gZ3JlYXRlciB0aGFuIDAuNyk/IFNlbGVjdCBhbGwgdGhhdCBhcHBseS4KYGBge3J9CigyKSBDTzIKKDMpIENINAooNSkgQ0ZDLjEyCmBgYAoKV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBpbmRlcGVuZGVudCB2YXJpYWJsZXMgaXMgQ0ZDLjExIGhpZ2hseSBjb3JyZWxhdGVkIHdpdGg/IFNlbGVjdCBhbGwgdGhhdCBhcHBseS4KYGBge3J9CigzKSBDSDQKKDUpIENGQy4xMgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgo+IGNvcihDbGltYXRlQ2hhbmdlX1RyYWluaW5nKQogICAgICAgICAgICAgICAgWWVhciAgICAgICAgIE1vbnRoICAgICAgICAgICBNRUkgICAgICAgICBDTzIgICAgICAgICBDSDQgICAgICAgICBOMk8KWWVhciAgICAgIDEuMDAwMDAwMDAgLTAuMDI3OTQxOTYwMiAtMC4wMzY5ODc2ODQyICAwLjk4Mjc0OTM5ICAwLjkxNTY1OTQ1ICAwLjk5Mzg0NTIzCk1vbnRoICAgIC0wLjAyNzk0MTk2ICAxLjAwMDAwMDAwMDAgIDAuMDAwODg0NjkwNSAtMC4xMDY3MzI0NiAgMC4wMTg1Njg2NiAgMC4wMTM2MzE1MwpNRUkgICAgICAtMC4wMzY5ODc2OCAgMC4wMDA4ODQ2OTA1ICAxLjAwMDAwMDAwMDAgLTAuMDQxMTQ3MTcgLTAuMDMzNDE5MzAgLTAuMDUwODE5NzgKQ08yICAgICAgIDAuOTgyNzQ5MzkgLTAuMTA2NzMyNDYwNyAtMC4wNDExNDcxNjUxICAxLjAwMDAwMDAwICAwLjg3NzI3OTYzICAwLjk3NjcxOTgyCkNINCAgICAgICAwLjkxNTY1OTQ1ICAwLjAxODU2ODY2MjQgLTAuMDMzNDE5MzAxNCAgMC44NzcyNzk2MyAgMS4wMDAwMDAwMCAgMC44OTk4Mzg2NApOMk8gICAgICAgMC45OTM4NDUyMyAgMC4wMTM2MzE1MzAzIC0wLjA1MDgxOTc3NTUgIDAuOTc2NzE5ODIgIDAuODk5ODM4NjQgIDEuMDAwMDAwMDAKQ0ZDLjExICAgIDAuNTY5MTA2NDMgLTAuMDEzMTExMjIzNiAgMC4wNjkwMDA0Mzg3ICAwLjUxNDA1OTc1ICAwLjc3OTkwNDAyICAwLjUyMjQ3NzMyCkNGQy4xMiAgICAwLjg5NzAxMTY2ICAwLjAwMDY3NTExMDIgIDAuMDA4Mjg1NTQ0MyAgMC44NTI2ODk2MyAgMC45NjM2MTYyNSAgMC44Njc5MzA3OApUU0kgICAgICAgMC4xNzAzMDIwMSAtMC4wMzQ2MDYxOTM1IC0wLjE1NDQ5MTkyMjcgIDAuMTc3NDI4OTMgIDAuMjQ1NTI4NDQgIDAuMTk5NzU2NjgKQWVyb3NvbHMgLTAuMzQ1MjQ2NzAgIDAuMDE0ODg5NTQwNiAgMC4zNDAyMzc3ODcxIC0wLjM1NjE1NDgwIC0wLjI2NzgwOTE5IC0wLjMzNzA1NDU3ClRlbXAgICAgICAwLjc4Njc5NzE0IC0wLjA5OTg1Njc0MTEgIDAuMTcyNDcwNzUxMiAgMC43ODg1MjkyMSAgMC43MDMyNTUwMiAgMC43Nzg2Mzg5MwogICAgICAgICAgICAgIENGQy4xMSAgICAgICAgQ0ZDLjEyICAgICAgICAgVFNJICAgIEFlcm9zb2xzICAgICAgICBUZW1wClllYXIgICAgICAwLjU2OTEwNjQzICAwLjg5NzAxMTY2MzUgIDAuMTcwMzAyMDEgLTAuMzQ1MjQ2NzAgIDAuNzg2Nzk3MTQKTW9udGggICAgLTAuMDEzMTExMjIgIDAuMDAwNjc1MTEwMiAtMC4wMzQ2MDYxOSAgMC4wMTQ4ODk1NCAtMC4wOTk4NTY3NApNRUkgICAgICAgMC4wNjkwMDA0NCAgMC4wMDgyODU1NDQzIC0wLjE1NDQ5MTkyICAwLjM0MDIzNzc5ICAwLjE3MjQ3MDc1CkNPMiAgICAgICAwLjUxNDA1OTc1ICAwLjg1MjY4OTYyNzIgIDAuMTc3NDI4OTMgLTAuMzU2MTU0ODAgIDAuNzg4NTI5MjEKQ0g0ICAgICAgIDAuNzc5OTA0MDIgIDAuOTYzNjE2MjQ3OCAgMC4yNDU1Mjg0NCAtMC4yNjc4MDkxOSAgMC43MDMyNTUwMgpOMk8gICAgICAgMC41MjI0NzczMiAgMC44Njc5MzA3NzU3ICAwLjE5OTc1NjY4IC0wLjMzNzA1NDU3ICAwLjc3ODYzODkzCkNGQy4xMSAgICAxLjAwMDAwMDAwICAwLjg2ODk4NTE4MjggIDAuMjcyMDQ1OTYgLTAuMDQzOTIxMjAgIDAuNDA3NzEwMjkKQ0ZDLjEyICAgIDAuODY4OTg1MTggIDEuMDAwMDAwMDAwMCAgMC4yNTUzMDI4MSAtMC4yMjUxMzEyNCAgMC42ODc1NTc1NQpUU0kgICAgICAgMC4yNzIwNDU5NiAgMC4yNTUzMDI4MTM4ICAxLjAwMDAwMDAwICAwLjA1MjExNjUxICAwLjI0MzM4MjY5CkFlcm9zb2xzIC0wLjA0MzkyMTIwIC0wLjIyNTEzMTI0NDAgIDAuMDUyMTE2NTEgIDEuMDAwMDAwMDAgLTAuMzg0OTEzNzUKVGVtcCAgICAgIDAuNDA3NzEwMjkgIDAuNjg3NTU3NTQ4MyAgMC4yNDMzODI2OSAtMC4zODQ5MTM3NSAgMS4wMDAwMDAwMApgYGAKCgojIyMjIOOAkDPjgJEKRW50ZXIgdGhlIGNvZWZmaWNpZW50IG9mIE4yTyBpbiB0aGlzIHJlZHVjZWQgbW9kZWw6CmBgYHtyfQoyLjUzMmUtMDIKYGBgCgpFbnRlciB0aGUgbW9kZWwgUjI6CmBgYHtyfQowLjcyNjEKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPiBDbGltYXRlQ2hhbmdlX1RyYWluaW5nUmVnMiA8LSBsbShUZW1wIH4gTUVJICsgTjJPICsgVFNJICsgQWVyb3NvbHMsIGRhdGEgPSBDbGltYXRlQ2hhbmdlX1RyYWluaW5nKQo+IHN1bW1hcnkoQ2xpbWF0ZUNoYW5nZV9UcmFpbmluZ1JlZzIpCgpDYWxsOgpsbShmb3JtdWxhID0gVGVtcCB+IE1FSSArIE4yTyArIFRTSSArIEFlcm9zb2xzLCBkYXRhID0gQ2xpbWF0ZUNoYW5nZV9UcmFpbmluZykKClJlc2lkdWFsczoKICAgICBNaW4gICAgICAgMVEgICBNZWRpYW4gICAgICAgM1EgICAgICBNYXggCi0wLjI3OTE2IC0wLjA1OTc1IC0wLjAwNTk1ICAwLjA1NjcyICAwLjM0MTk1IAoKQ29lZmZpY2llbnRzOgogICAgICAgICAgICAgIEVzdGltYXRlIFN0ZC4gRXJyb3IgdCB2YWx1ZSBQcig+fHR8KSAgICAKKEludGVyY2VwdCkgLTEuMTYyZSswMiAgMi4wMjJlKzAxICAtNS43NDcgMi4zN2UtMDggKioqCk1FSSAgICAgICAgICA2LjQxOWUtMDIgIDYuNjUyZS0wMyAgIDkuNjQ5ICA8IDJlLTE2ICoqKgpOMk8gICAgICAgICAgMi41MzJlLTAyICAxLjMxMWUtMDMgIDE5LjMwNyAgPCAyZS0xNiAqKioKVFNJICAgICAgICAgIDcuOTQ5ZS0wMiAgMS40ODdlLTAyICAgNS4zNDQgMS44OWUtMDcgKioqCkFlcm9zb2xzICAgIC0xLjcwMmUrMDAgIDIuMTgwZS0wMSAgLTcuODA2IDEuMTllLTEzICoqKgotLS0KU2lnbmlmLiBjb2RlczogIDAg4oCYKioq4oCZIDAuMDAxIOKAmCoq4oCZIDAuMDEg4oCYKuKAmSAwLjA1IOKAmC7igJkgMC4xIOKAmCDigJkgMQoKUmVzaWR1YWwgc3RhbmRhcmQgZXJyb3I6IDAuMDk1NDcgb24gMjc5IGRlZ3JlZXMgb2YgZnJlZWRvbQpNdWx0aXBsZSBSLXNxdWFyZWQ6ICAwLjcyNjEsCUFkanVzdGVkIFItc3F1YXJlZDogIDAuNzIyMiAKRi1zdGF0aXN0aWM6IDE4NC45IG9uIDQgYW5kIDI3OSBERiwgIHAtdmFsdWU6IDwgMi4yZS0xNgpgYGAKCgojIyMjIOOAkDTjgJEKRW50ZXIgdGhlIFIyIHZhbHVlIG9mIHRoZSBtb2RlbCBwcm9kdWNlZCBieSB0aGUgc3RlcCBmdW5jdGlvbjoKYGBge3J9CjAuNzQ0CmBgYAoKV2hpY2ggb2YgdGhlIGZvbGxvd2luZyB2YXJpYWJsZShzKSB3ZXJlIGVsaW1pbmF0ZWQgZnJvbSB0aGUgZnVsbCBtb2RlbCBieSB0aGUgc3RlcCBmdW5jdGlvbj8gU2VsZWN0IGFsbCB0aGF0IGFwcGx5LgpgYGB7cn0KKDMpIENINAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDbGltYXRlQ2hhbmdlUmVnIDwtIGxtKFRlbXAgfiBNRUkgKyBDTzIgKyBDSDQgKyBOMk8gKyBDRkMuMTEgKyBDRkMuMTIgKyBUU0kgKyBBZXJvc29scywgZGF0YSA9IENsaW1hdGVDaGFuZ2UpCj4gc3VtbWFyeShDbGltYXRlQ2hhbmdlUmVnKQoKQ2FsbDoKbG0oZm9ybXVsYSA9IFRlbXAgfiBNRUkgKyBDTzIgKyBDSDQgKyBOMk8gKyBDRkMuMTEgKyBDRkMuMTIgKyAKICAgIFRTSSArIEFlcm9zb2xzLCBkYXRhID0gQ2xpbWF0ZUNoYW5nZSkKClJlc2lkdWFsczoKICAgICBNaW4gICAgICAgMVEgICBNZWRpYW4gICAgICAgM1EgICAgICBNYXggCi0wLjI2MjI4IC0wLjA1ODY4ICAwLjAwMDUxICAwLjA1NzE4ICAwLjMyMTcwIAoKQ29lZmZpY2llbnRzOgogICAgICAgICAgICAgIEVzdGltYXRlIFN0ZC4gRXJyb3IgdCB2YWx1ZSBQcig+fHR8KSAgICAKKEludGVyY2VwdCkgLTEuMjc3ZSswMiAgMS45MTllKzAxICAtNi42NTQgMS4zNmUtMTAgKioqCk1FSSAgICAgICAgICA2LjYzMmUtMDIgIDYuMTg2ZS0wMyAgMTAuNzIyICA8IDJlLTE2ICoqKgpDTzIgICAgICAgICAgNS4yMDdlLTAzICAyLjE5MmUtMDMgICAyLjM3NSAgIDAuMDE4MiAqICAKQ0g0ICAgICAgICAgIDYuMzcxZS0wNSAgNC45NzdlLTA0ICAgMC4xMjggICAwLjg5ODIgICAgCk4yTyAgICAgICAgIC0xLjY5M2UtMDIgIDcuODM1ZS0wMyAgLTIuMTYxICAgMC4wMzE1ICogIApDRkMuMTEgICAgICAtNy4yNzhlLTAzICAxLjQ2MWUtMDMgIC00Ljk4MCAxLjA3ZS0wNiAqKioKQ0ZDLjEyICAgICAgIDQuMjcyZS0wMyAgOC43NjNlLTA0ICAgNC44NzUgMS43N2UtMDYgKioqClRTSSAgICAgICAgICA5LjU4NmUtMDIgIDEuNDAxZS0wMiAgIDYuODQ0IDQuMzhlLTExICoqKgpBZXJvc29scyAgICAtMS41ODJlKzAwICAyLjA5OWUtMDEgIC03LjUzNSA1Ljg2ZS0xMyAqKioKLS0tClNpZ25pZi4gY29kZXM6ICAwIOKAmCoqKuKAmSAwLjAwMSDigJgqKuKAmSAwLjAxIOKAmCrigJkgMC4wNSDigJgu4oCZIDAuMSDigJgg4oCZIDEKClJlc2lkdWFsIHN0YW5kYXJkIGVycm9yOiAwLjA5MTgyIG9uIDI5OSBkZWdyZWVzIG9mIGZyZWVkb20KTXVsdGlwbGUgUi1zcXVhcmVkOiAgMC43NDQsCUFkanVzdGVkIFItc3F1YXJlZDogIDAuNzM3MSAKRi1zdGF0aXN0aWM6IDEwOC42IG9uIDggYW5kIDI5OSBERiwgIHAtdmFsdWU6IDwgMi4yZS0xNgoKPiBzdW1tYXJ5KENsaW1hdGVDaGFuZ2VSZWcpCgpDYWxsOgpsbShmb3JtdWxhID0gVGVtcCB+IE1FSSArIENPMiArIENINCArIE4yTyArIENGQy4xMSArIENGQy4xMiArIAogICAgVFNJICsgQWVyb3NvbHMsIGRhdGEgPSBDbGltYXRlQ2hhbmdlKQoKUmVzaWR1YWxzOgogICAgIE1pbiAgICAgICAxUSAgIE1lZGlhbiAgICAgICAzUSAgICAgIE1heCAKLTAuMjYyMjggLTAuMDU4NjggIDAuMDAwNTEgIDAuMDU3MTggIDAuMzIxNzAgCgpDb2VmZmljaWVudHM6CiAgICAgICAgICAgICAgRXN0aW1hdGUgU3RkLiBFcnJvciB0IHZhbHVlIFByKD58dHwpICAgIAooSW50ZXJjZXB0KSAtMS4yNzdlKzAyICAxLjkxOWUrMDEgIC02LjY1NCAxLjM2ZS0xMCAqKioKTUVJICAgICAgICAgIDYuNjMyZS0wMiAgNi4xODZlLTAzICAxMC43MjIgIDwgMmUtMTYgKioqCkNPMiAgICAgICAgICA1LjIwN2UtMDMgIDIuMTkyZS0wMyAgIDIuMzc1ICAgMC4wMTgyICogIApDSDQgICAgICAgICAgNi4zNzFlLTA1ICA0Ljk3N2UtMDQgICAwLjEyOCAgIDAuODk4MiAgICAKTjJPICAgICAgICAgLTEuNjkzZS0wMiAgNy44MzVlLTAzICAtMi4xNjEgICAwLjAzMTUgKiAgCkNGQy4xMSAgICAgIC03LjI3OGUtMDMgIDEuNDYxZS0wMyAgLTQuOTgwIDEuMDdlLTA2ICoqKgpDRkMuMTIgICAgICAgNC4yNzJlLTAzICA4Ljc2M2UtMDQgICA0Ljg3NSAxLjc3ZS0wNiAqKioKVFNJICAgICAgICAgIDkuNTg2ZS0wMiAgMS40MDFlLTAyICAgNi44NDQgNC4zOGUtMTEgKioqCkFlcm9zb2xzICAgIC0xLjU4MmUrMDAgIDIuMDk5ZS0wMSAgLTcuNTM1IDUuODZlLTEzICoqKgotLS0KU2lnbmlmLiBjb2RlczogIDAg4oCYKioq4oCZIDAuMDAxIOKAmCoq4oCZIDAuMDEg4oCYKuKAmSAwLjA1IOKAmC7igJkgMC4xIOKAmCDigJkgMQoKUmVzaWR1YWwgc3RhbmRhcmQgZXJyb3I6IDAuMDkxODIgb24gMjk5IGRlZ3JlZXMgb2YgZnJlZWRvbQpNdWx0aXBsZSBSLXNxdWFyZWQ6ICAwLjc0NCwJQWRqdXN0ZWQgUi1zcXVhcmVkOiAgMC43MzcxIApGLXN0YXRpc3RpYzogMTA4LjYgb24gOCBhbmQgMjk5IERGLCAgcC12YWx1ZTogPCAyLjJlLTE2Cgo+IFN0ZXBNb2RlbCA8LSBzdGVwKENsaW1hdGVDaGFuZ2VSZWcpClN0YXJ0OiAgQUlDPS0xNDYyLjExClRlbXAgfiBNRUkgKyBDTzIgKyBDSDQgKyBOMk8gKyBDRkMuMTEgKyBDRkMuMTIgKyBUU0kgKyBBZXJvc29scwoKICAgICAgICAgICBEZiBTdW0gb2YgU3EgICAgUlNTICAgICBBSUMKLSBDSDQgICAgICAgMSAgIDAuMDAwMTQgMi41MjA5IC0xNDY0LjEKPG5vbmU+ICAgICAgICAgICAgICAgICAgMi41MjA4IC0xNDYyLjEKLSBOMk8gICAgICAgMSAgIDAuMDM5MzUgMi41NjAxIC0xNDU5LjMKLSBDTzIgICAgICAgMSAgIDAuMDQ3NTYgMi41NjgzIC0xNDU4LjMKLSBDRkMuMTIgICAgMSAgIDAuMjAwMzggMi43MjExIC0xNDQwLjUKLSBDRkMuMTEgICAgMSAgIDAuMjA5MTEgMi43Mjk5IC0xNDM5LjYKLSBUU0kgICAgICAgMSAgIDAuMzk0ODUgMi45MTU2IC0xNDE5LjMKLSBBZXJvc29scyAgMSAgIDAuNDc4NjAgMi45OTk0IC0xNDEwLjYKLSBNRUkgICAgICAgMSAgIDAuOTY5MTcgMy40ODk5IC0xMzYzLjkKYGBgCgoKIyMjIyDjgJA144CRCkVudGVyIHRoZSB0ZXN0aW5nIHNldCBSMjoKYGBge3J9CjAuNjU0NzU3NAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDbGltYXRlQ2hhbmdlUmVnIDwtIGxtKFRlbXAgfiBNRUkgKyBDTzIgKyBDSDQgKyBOMk8gKyBDRkMuMTEgKyBDRkMuMTIgKyBUU0kgKyBBZXJvc29scywgZGF0YSA9IENsaW1hdGVDaGFuZ2UpCnN1bW1hcnkoQ2xpbWF0ZUNoYW5nZVJlZykKU3RlcE1vZGVsIDwtIHN0ZXAoQ2xpbWF0ZUNoYW5nZVJlZykKClRlbXBQcmVkaWN0IDwtIHByZWRpY3QoU3RlcE1vZGVsLCBuZXdkYXRhID0gQ2xpbWF0ZUNoYW5nZV9UZXN0aW5nKQpzdW1tYXJ5KFRlbXBQcmVkaWN0KQpTU0UgPSBzdW0oKFRlbXBQcmVkaWN0IC0gQ2xpbWF0ZUNoYW5nZV9UZXN0aW5nJFRlbXApXjIpClNTVCA9IHN1bSgobWVhbihDbGltYXRlQ2hhbmdlX1RyYWluaW5nJFRlbXApLUNsaW1hdGVDaGFuZ2VfVGVzdGluZyRUZW1wKV4yKQpSc3F1YXJlID0gMSAtIFNTRS9TU1QKCj4gUnNxdWFyZQpbMV0gMC42NTQ3NTc0CmBgYA==