install.packages(c("ggplot2","ggpubr","tidyverse","broom", "AICcmodavg","xlsx","rJava", "tinytex", "rmarkdown"))
Error in install.packages : Updating loaded packages
library(ggplot2)
library(ggpubr)
library(tidyverse)
library(broom)
library(AICcmodavg)
library(rJava)
library(xlsx)
library(readxl)
library(tinytex)
library(rmarkdown)
dep1 <- read_excel("medical1-2.xlsx")
sapply(dep1,class)
       Florida       New York North Carolina 
     "numeric"      "numeric"      "numeric" 
colnames(dep1)[colnames(dep1) == 'New York'] <- 'NY'
colnames(dep1)[colnames(dep1) == 'North Carolina'] <- 'NC'
colnames(dep1)[colnames(dep1) == 'Florida'] <- 'FL'
print(dep1)
summary(dep1)
       FL             NY              NC       
 Min.   :2.00   Min.   : 4.00   Min.   : 3.00  
 1st Qu.:3.75   1st Qu.: 7.00   1st Qu.: 4.75  
 Median :6.00   Median : 8.00   Median : 7.50  
 Mean   :5.55   Mean   : 8.00   Mean   : 7.05  
 3rd Qu.:7.00   3rd Qu.: 8.25   3rd Qu.: 8.25  
 Max.   :9.00   Max.   :13.00   Max.   :12.00  

#One-Way Anova ## Pivot table so that Depression Score is the value based on the factor location.

dep1 <- data.frame(
  FL = c(3,7,7,3,8,8,8,5,5,2,6,2,6,6,9,7,5,4,7,3),
  NY = c(8,11,9,7,8,7,8,4,13,10,6,8,12,8,6,8,5,7,7,8),
  NC = c(10,7,3,5,11,8,4,3,7,8,8,7,3,9,8,12,6,3,8,11))
dep_long <- pivot_longer(dep1, cols = everything(), names_to = "Location", values_to = "Depression_score")

print(dep_long)
NA
summary(dep_long)
   Location         Depression_score
 Length:60          Min.   : 2.000  
 Class :character   1st Qu.: 5.000  
 Mode  :character   Median : 7.000  
                    Mean   : 6.867  
                    3rd Qu.: 8.000  
                    Max.   :13.000  
anova_med1 <- aov(Depression_score ~ as.factor(Location), data = dep_long)

summary(anova_med1)
                    Df Sum Sq Mean Sq F value  Pr(>F)   
as.factor(Location)  2   61.0  30.517   5.241 0.00814 **
Residuals           57  331.9   5.823                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ggplot(dep_long, aes(x = Location, y = Depression_score, fill = Location)) +
  geom_boxplot() +
  theme_minimal() +
  labs(title = "Boxplot of Locations", x = "Location", y = "Depression_score")

tukey_test_med1 <- TukeyHSD(anova_med1)
plot(tukey_test_med1)

One-Way Anova Pivot table so that Depression Score of those with health conditions is the value based on the factor location.

dep2 <- read_excel("medical2.xlsx")
sapply(dep2,class)
       Florida       New York North Carolina 
     "numeric"      "numeric"      "numeric" 
print(dep2)
summary(dep2)
    Florida        New York     North Carolina 
 Min.   : 9.0   Min.   : 9.00   Min.   : 8.00  
 1st Qu.:12.0   1st Qu.:12.75   1st Qu.:12.00  
 Median :14.5   Median :14.50   Median :14.00  
 Mean   :14.5   Mean   :15.25   Mean   :13.95  
 3rd Qu.:17.0   3rd Qu.:17.25   3rd Qu.:16.25  
 Max.   :21.0   Max.   :24.00   Max.   :19.00  
colnames(dep2)[colnames(dep2) == 'New York'] <- 'NY'
colnames(dep2)[colnames(dep2) == 'North Carolina'] <- 'NC'
colnames(dep2)[colnames(dep2) == 'Florida'] <- 'FL'
print(dep2)
dep2 <- data.frame(
  FL = c(13,12,17,17,20,21,15,14,13,17,12,9,12,15,16,15,13,10,11,17),
  NY = c(14,9,15,12,16,24,18,14,15,17,20,11,23,19,17,14,9,14,13,11),
  NC = c(10,12,15,18,12,14,17,8,14,16,18,17,19,15,13,14,11,12,13,11))
dep_long2 <- pivot_longer(dep2, cols = everything(), names_to = "Location2", values_to = "Depression_score_hc")

print(dep_long2)
NA
summary(dep_long2)
  Location2         Depression_score_hc
 Length:60          Min.   : 8.00      
 Class :character   1st Qu.:12.00      
 Mode  :character   Median :14.00      
                    Mean   :14.55      
                    3rd Qu.:17.00      
                    Max.   :24.00      
anova_med2 <- aov(Depression_score_hc ~ as.factor(Location2), data = dep_long2)

summary(anova_med2)
                     Df Sum Sq Mean Sq F value Pr(>F)
as.factor(Location2)  2   17.2    8.60   0.723   0.49
Residuals            57  677.6   11.89               
ggplot(dep_long2, aes(x = Location2, y = Depression_score_hc, fill = Location2)) +
  geom_boxplot() +
  theme_minimal() +
  labs(title = "Boxplot of Locations", x = "Location2", y = "Depression_score_hc")

tukey_test_med2 <- TukeyHSD(anova_med2)
plot(tukey_test_med2)

  1. Use descriptive statistics to summarize the data from the two studies. What are your preliminary observations about the depression scores? As long as you don’t round the p value, the mean depression scored between the 3 locations are not equal. This implies that at least one location has a significantly different mean depression score. The post-hoc Tukey test indicates that the mean depression score between New York and Florida. However, with comparing the depression score with those that have chronic health conditions, the location is not statistically significant because p = 0.49 > 0.01. The post-hoc Tukey test further proves that because all the confidence intervals contain zero. What is not clear from this study is if the subjects are full or part-time residents of each location.

Two-way ANOVA Now we are going to combine the two tables with the depression scores in the same order as the previous table.

Depression_score_hc <- c(13,12,17,17,20,21,15,14,13,17,12,9,12,15,16,15,13,10,11,17,14,9,15,12,16,24,18,14,15,17,20,11,23,19,17,14,9,14,13,11,10,12,15,18,12,14,17,8,14,16,18,17,19,15,13,14,11,12,13,11)

dep_long$Depression_score_hc <- Depression_score_hc

print(dep_long)
NA
two_way <- aov(Depression_score_hc + Depression_score ~ as.factor(Location), data = dep_long)
summary(two_way)
                    Df Sum Sq Mean Sq F value Pr(>F)  
as.factor(Location)  2  130.4   65.22   3.513 0.0364 *
Residuals           57 1058.1   18.56                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ggplot(dep_long, aes(x = Location, y = Depression_score_hc+Depression_score, fill = Location)) +
  geom_boxplot() +
  theme_minimal() +
  labs(title = "Boxplot of Locations", x = "Location", y = "Depression_score_combined")

tukey_test_combined <- TukeyHSD(two_way)
plot(tukey_test_combined)

  1. Use analysis of variance on both data sets. State the hypotheses being tested in each case. What are your conclusions? There is not a significant difference in the means based solely on location for individuals with chronic health conditions. However, with the two depression scores combined, there is still a significant difference between the locations because p = 0.036 < 0.05. This is further proved because the confidence interval from the post-hoc Tukey test shows that there is a significant difference of the combined depressions scores between New York and Florida. H0: The mean depression scores between the three selected locations is not significantly different. H1: The mean depression scores (good health & good and poor health combined) is significantly different between the 3 selected locations. Post-hoc Tukey tests indicate that the significant difference is between the New York and Florida locations.

  2. Use inferences about individual treatment means where appropriate. What are your conclusions? I am not too sure my two way anova is correct. Somehow I feel like my comparison is off, but when I tried putting location first, I got an error.I feel I’m overlooking something. However, based on the anova analysis, there is significant enough difference between depression scores in Florida and New York to warrant further investigation.

LS0tDQp0aXRsZTogJ0Fzc2lnbm1lbnQgIzIgQU5PVkEgU3RhdCBNb2RlbGluZycNCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KDQpgYGB7ciBlY2hvPVR9DQppbnN0YWxsLnBhY2thZ2VzKGMoImdncGxvdDIiLCJnZ3B1YnIiLCJ0aWR5dmVyc2UiLCJicm9vbSIsICJBSUNjbW9kYXZnIiwieGxzeCIsInJKYXZhIiwgInRpbnl0ZXgiLCAicm1hcmtkb3duIikpDQpgYGANCmBgYHtyIGVjaG89VCwgcmVzdWx0cz0naGlkZSd9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGdncHVicikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShicm9vbSkNCmxpYnJhcnkoQUlDY21vZGF2ZykNCmxpYnJhcnkockphdmEpDQpsaWJyYXJ5KHhsc3gpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkodGlueXRleCkNCmxpYnJhcnkocm1hcmtkb3duKQ0KYGBgDQoNCmBgYHtyfQ0KZGVwMSA8LSByZWFkX2V4Y2VsKCJtZWRpY2FsMS0yLnhsc3giKQ0Kc2FwcGx5KGRlcDEsY2xhc3MpDQpgYGANCmBgYHtyfQ0KY29sbmFtZXMoZGVwMSlbY29sbmFtZXMoZGVwMSkgPT0gJ05ldyBZb3JrJ10gPC0gJ05ZJw0KY29sbmFtZXMoZGVwMSlbY29sbmFtZXMoZGVwMSkgPT0gJ05vcnRoIENhcm9saW5hJ10gPC0gJ05DJw0KY29sbmFtZXMoZGVwMSlbY29sbmFtZXMoZGVwMSkgPT0gJ0Zsb3JpZGEnXSA8LSAnRkwnDQpgYGANCg0KYGBge3J9DQpwcmludChkZXAxKQ0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwMSkNCmBgYA0KI09uZS1XYXkgQW5vdmENCiMjIFBpdm90IHRhYmxlIHNvIHRoYXQgRGVwcmVzc2lvbiBTY29yZSBpcyB0aGUgdmFsdWUgYmFzZWQgb24gdGhlIGZhY3RvciBsb2NhdGlvbi4NCg0KYGBge3J9DQpkZXAxIDwtIGRhdGEuZnJhbWUoDQogIEZMID0gYygzLDcsNywzLDgsOCw4LDUsNSwyLDYsMiw2LDYsOSw3LDUsNCw3LDMpLA0KICBOWSA9IGMoOCwxMSw5LDcsOCw3LDgsNCwxMywxMCw2LDgsMTIsOCw2LDgsNSw3LDcsOCksDQogIE5DID0gYygxMCw3LDMsNSwxMSw4LDQsMyw3LDgsOCw3LDMsOSw4LDEyLDYsMyw4LDExKSkNCg0KYGBgDQoNCmBgYHtyfQ0KZGVwX2xvbmcgPC0gcGl2b3RfbG9uZ2VyKGRlcDEsIGNvbHMgPSBldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gIkxvY2F0aW9uIiwgdmFsdWVzX3RvID0gIkRlcHJlc3Npb25fc2NvcmUiKQ0KDQpwcmludChkZXBfbG9uZykNCg0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwX2xvbmcpDQpgYGANCg0KDQpgYGB7cn0NCmFub3ZhX21lZDEgPC0gYW92KERlcHJlc3Npb25fc2NvcmUgfiBhcy5mYWN0b3IoTG9jYXRpb24pLCBkYXRhID0gZGVwX2xvbmcpDQoNCnN1bW1hcnkoYW5vdmFfbWVkMSkNCg0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KGRlcF9sb25nLCBhZXMoeCA9IExvY2F0aW9uLCB5ID0gRGVwcmVzc2lvbl9zY29yZSwgZmlsbCA9IExvY2F0aW9uKSkgKw0KICBnZW9tX2JveHBsb3QoKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIGxhYnModGl0bGUgPSAiQm94cGxvdCBvZiBMb2NhdGlvbnMiLCB4ID0gIkxvY2F0aW9uIiwgeSA9ICJEZXByZXNzaW9uX3Njb3JlIikNCmBgYA0KDQoNCg0KYGBge3J9DQp0dWtleV90ZXN0X21lZDEgPC0gVHVrZXlIU0QoYW5vdmFfbWVkMSkNCnBsb3QodHVrZXlfdGVzdF9tZWQxKQ0KYGBgDQoNCk9uZS1XYXkgQW5vdmENClBpdm90IHRhYmxlIHNvIHRoYXQgRGVwcmVzc2lvbiBTY29yZSBvZiB0aG9zZSB3aXRoIGhlYWx0aCBjb25kaXRpb25zIGlzIHRoZSB2YWx1ZSBiYXNlZCBvbiB0aGUgZmFjdG9yIGxvY2F0aW9uLiANCg0KYGBge3J9DQpkZXAyIDwtIHJlYWRfZXhjZWwoIm1lZGljYWwyLnhsc3giKQ0Kc2FwcGx5KGRlcDIsY2xhc3MpDQpgYGANCg0KYGBge3J9DQpwcmludChkZXAyKQ0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwMikNCmBgYA0KDQpgYGB7cn0NCmNvbG5hbWVzKGRlcDIpW2NvbG5hbWVzKGRlcDIpID09ICdOZXcgWW9yayddIDwtICdOWScNCmNvbG5hbWVzKGRlcDIpW2NvbG5hbWVzKGRlcDIpID09ICdOb3J0aCBDYXJvbGluYSddIDwtICdOQycNCmNvbG5hbWVzKGRlcDIpW2NvbG5hbWVzKGRlcDIpID09ICdGbG9yaWRhJ10gPC0gJ0ZMJw0KYGBgDQoNCg0KYGBge3J9DQpwcmludChkZXAyKQ0KYGBgDQoNCmBgYHtyfQ0KZGVwMiA8LSBkYXRhLmZyYW1lKA0KICBGTCA9IGMoMTMsMTIsMTcsMTcsMjAsMjEsMTUsMTQsMTMsMTcsMTIsOSwxMiwxNSwxNiwxNSwxMywxMCwxMSwxNyksDQogIE5ZID0gYygxNCw5LDE1LDEyLDE2LDI0LDE4LDE0LDE1LDE3LDIwLDExLDIzLDE5LDE3LDE0LDksMTQsMTMsMTEpLA0KICBOQyA9IGMoMTAsMTIsMTUsMTgsMTIsMTQsMTcsOCwxNCwxNiwxOCwxNywxOSwxNSwxMywxNCwxMSwxMiwxMywxMSkpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KZGVwX2xvbmcyIDwtIHBpdm90X2xvbmdlcihkZXAyLCBjb2xzID0gZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJMb2NhdGlvbjIiLCB2YWx1ZXNfdG8gPSAiRGVwcmVzc2lvbl9zY29yZV9oYyIpDQoNCnByaW50KGRlcF9sb25nMikNCg0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwX2xvbmcyKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmFub3ZhX21lZDIgPC0gYW92KERlcHJlc3Npb25fc2NvcmVfaGMgfiBhcy5mYWN0b3IoTG9jYXRpb24yKSwgZGF0YSA9IGRlcF9sb25nMikNCg0Kc3VtbWFyeShhbm92YV9tZWQyKQ0KDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3QoZGVwX2xvbmcyLCBhZXMoeCA9IExvY2F0aW9uMiwgeSA9IERlcHJlc3Npb25fc2NvcmVfaGMsIGZpbGwgPSBMb2NhdGlvbjIpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgbGFicyh0aXRsZSA9ICJCb3hwbG90IG9mIExvY2F0aW9ucyIsIHggPSAiTG9jYXRpb24yIiwgeSA9ICJEZXByZXNzaW9uX3Njb3JlX2hjIikNCmBgYA0KYGBge3J9DQp0dWtleV90ZXN0X21lZDIgPC0gVHVrZXlIU0QoYW5vdmFfbWVkMikNCnBsb3QodHVrZXlfdGVzdF9tZWQyKQ0KYGBgDQoxLiBVc2UgZGVzY3JpcHRpdmUgc3RhdGlzdGljcyB0byBzdW1tYXJpemUgdGhlIGRhdGEgZnJvbSB0aGUgdHdvIHN0dWRpZXMuIFdoYXQgYXJlIHlvdXIgcHJlbGltaW5hcnkgb2JzZXJ2YXRpb25zIGFib3V0IHRoZSBkZXByZXNzaW9uIHNjb3Jlcz8NCkFzIGxvbmcgYXMgeW91IGRvbid0IHJvdW5kIHRoZSBwIHZhbHVlLCB0aGUgbWVhbiBkZXByZXNzaW9uIHNjb3JlZCBiZXR3ZWVuIHRoZSAzIGxvY2F0aW9ucyBhcmUgbm90IGVxdWFsLiBUaGlzIGltcGxpZXMgdGhhdCBhdCBsZWFzdCBvbmUgbG9jYXRpb24gaGFzIGEgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgbWVhbiBkZXByZXNzaW9uIHNjb3JlLiBUaGUgcG9zdC1ob2MgVHVrZXkgdGVzdCBpbmRpY2F0ZXMgdGhhdCB0aGUgbWVhbiBkZXByZXNzaW9uIHNjb3JlIGJldHdlZW4gTmV3IFlvcmsgYW5kIEZsb3JpZGEuIEhvd2V2ZXIsIHdpdGggY29tcGFyaW5nIHRoZSBkZXByZXNzaW9uIHNjb3JlIHdpdGggdGhvc2UgdGhhdCBoYXZlIGNocm9uaWMgaGVhbHRoIGNvbmRpdGlvbnMsIHRoZSBsb2NhdGlvbiBpcyBub3Qgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBiZWNhdXNlIHAgPSAwLjQ5ID4gMC4wMS4gVGhlIHBvc3QtaG9jIFR1a2V5IHRlc3QgZnVydGhlciBwcm92ZXMgdGhhdCBiZWNhdXNlIGFsbCB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbHMgY29udGFpbiB6ZXJvLiBXaGF0IGlzIG5vdCBjbGVhciBmcm9tIHRoaXMgc3R1ZHkgaXMgaWYgdGhlIHN1YmplY3RzIGFyZSBmdWxsIG9yIHBhcnQtdGltZSByZXNpZGVudHMgb2YgZWFjaCBsb2NhdGlvbi4NCg0KDQpUd28td2F5IEFOT1ZBDQpOb3cgd2UgYXJlIGdvaW5nIHRvIGNvbWJpbmUgdGhlIHR3byB0YWJsZXMgd2l0aCB0aGUgZGVwcmVzc2lvbiBzY29yZXMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHByZXZpb3VzIHRhYmxlLg0KDQpgYGB7cn0NCkRlcHJlc3Npb25fc2NvcmVfaGMgPC0gYygxMywxMiwxNywxNywyMCwyMSwxNSwxNCwxMywxNywxMiw5LDEyLDE1LDE2LDE1LDEzLDEwLDExLDE3LDE0LDksMTUsMTIsMTYsMjQsMTgsMTQsMTUsMTcsMjAsMTEsMjMsMTksMTcsMTQsOSwxNCwxMywxMSwxMCwxMiwxNSwxOCwxMiwxNCwxNyw4LDE0LDE2LDE4LDE3LDE5LDE1LDEzLDE0LDExLDEyLDEzLDExKQ0KDQpkZXBfbG9uZyREZXByZXNzaW9uX3Njb3JlX2hjIDwtIERlcHJlc3Npb25fc2NvcmVfaGMNCg0KcHJpbnQoZGVwX2xvbmcpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KdHdvX3dheSA8LSBhb3YoRGVwcmVzc2lvbl9zY29yZV9oYyArIERlcHJlc3Npb25fc2NvcmUgfiBhcy5mYWN0b3IoTG9jYXRpb24pLCBkYXRhID0gZGVwX2xvbmcpDQpzdW1tYXJ5KHR3b193YXkpDQpgYGANCg0KDQpgYGB7cn0NCmdncGxvdChkZXBfbG9uZywgYWVzKHggPSBMb2NhdGlvbiwgeSA9IERlcHJlc3Npb25fc2NvcmVfaGMrRGVwcmVzc2lvbl9zY29yZSwgZmlsbCA9IExvY2F0aW9uKSkgKw0KICBnZW9tX2JveHBsb3QoKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIGxhYnModGl0bGUgPSAiQm94cGxvdCBvZiBMb2NhdGlvbnMiLCB4ID0gIkxvY2F0aW9uIiwgeSA9ICJEZXByZXNzaW9uX3Njb3JlX2NvbWJpbmVkIikNCmBgYA0KYGBge3J9DQp0dWtleV90ZXN0X2NvbWJpbmVkIDwtIFR1a2V5SFNEKHR3b193YXkpDQpwbG90KHR1a2V5X3Rlc3RfY29tYmluZWQpDQpgYGANCjIuIFVzZSBhbmFseXNpcyBvZiB2YXJpYW5jZSBvbiBib3RoIGRhdGEgc2V0cy4gU3RhdGUgdGhlIGh5cG90aGVzZXMgYmVpbmcgdGVzdGVkIGluIGVhY2ggY2FzZS4gV2hhdCBhcmUgeW91ciBjb25jbHVzaW9ucz8gVGhlcmUgaXMgbm90IGEgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiB0aGUgbWVhbnMgYmFzZWQgc29sZWx5IG9uIGxvY2F0aW9uIGZvciBpbmRpdmlkdWFscyB3aXRoIGNocm9uaWMgaGVhbHRoIGNvbmRpdGlvbnMuIEhvd2V2ZXIsIHdpdGggdGhlIHR3byBkZXByZXNzaW9uIHNjb3JlcyBjb21iaW5lZCwgdGhlcmUgaXMgc3RpbGwgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxvY2F0aW9ucyBiZWNhdXNlIHAgPSAwLjAzNiA8IDAuMDUuIFRoaXMgaXMgZnVydGhlciBwcm92ZWQgYmVjYXVzZSB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBmcm9tIHRoZSBwb3N0LWhvYyBUdWtleSB0ZXN0IHNob3dzIHRoYXQgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIG9mIHRoZSBjb21iaW5lZCBkZXByZXNzaW9ucyBzY29yZXMgYmV0d2VlbiBOZXcgWW9yayBhbmQgRmxvcmlkYS4gSDA6IFRoZSBtZWFuIGRlcHJlc3Npb24gc2NvcmVzIGJldHdlZW4gdGhlIHRocmVlIHNlbGVjdGVkIGxvY2F0aW9ucyBpcyBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQuIEgxOiBUaGUgbWVhbiBkZXByZXNzaW9uIHNjb3JlcyAoZ29vZCBoZWFsdGggJiBnb29kIGFuZCBwb29yIGhlYWx0aCBjb21iaW5lZCkgaXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgMyBzZWxlY3RlZCBsb2NhdGlvbnMuIFBvc3QtaG9jIFR1a2V5IHRlc3RzIGluZGljYXRlIHRoYXQgdGhlIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgaXMgYmV0d2VlbiB0aGUgTmV3IFlvcmsgYW5kIEZsb3JpZGEgbG9jYXRpb25zLiAgDQoNCjMuIFVzZSBpbmZlcmVuY2VzIGFib3V0IGluZGl2aWR1YWwgdHJlYXRtZW50IG1lYW5zIHdoZXJlIGFwcHJvcHJpYXRlLiBXaGF0IGFyZSB5b3VyIGNvbmNsdXNpb25zPyBJIGFtIG5vdCB0b28gc3VyZSBteSB0d28gd2F5IGFub3ZhIGlzIGNvcnJlY3QuIFNvbWVob3cgSSBmZWVsIGxpa2UgbXkgY29tcGFyaXNvbiBpcyBvZmYsIGJ1dCB3aGVuIEkgdHJpZWQgcHV0dGluZyBsb2NhdGlvbiBmaXJzdCwgSSBnb3QgYW4gZXJyb3IuSSBmZWVsIEknbSBvdmVybG9va2luZyBzb21ldGhpbmcuIEhvd2V2ZXIsIGJhc2VkIG9uIHRoZSBhbm92YSBhbmFseXNpcywgdGhlcmUgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIGRpZmZlcmVuY2UgYmV0d2VlbiBkZXByZXNzaW9uIHNjb3JlcyBpbiBGbG9yaWRhIGFuZCBOZXcgWW9yayB0byB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K