gh6 <- read_csv("gh6.csv", col_types = cols(gh = col_factor(levels = c("1", 
    "2", "3", "4", "5", "6")), year = col_factor(levels = c("2022", 
    "2024")), source = col_factor(levels = c("Koppert", 
    "Biobest"))))

Crithidia

Crithidia probability per greenhouse

crith_prob <- glm(
  cbind(crith_pos, crith_neg) ~ 
gh,
  data = gh6,
  family = binomial("logit"))

Anova(crith_prob)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##    LR Chisq Df Pr(>Chisq)    
## gh   242.42  5  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(crith_prob)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ gh, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -2.3246     0.3493  -6.656 2.82e-11 ***
## gh2           2.2846     0.4025   5.676 1.38e-08 ***
## gh3           3.2058     0.4132   7.758 8.62e-15 ***
## gh4           2.4046     0.3768   6.381 1.76e-10 ***
## gh5           2.2938     0.3775   6.076 1.23e-09 ***
## gh6           4.7560     0.4359  10.912  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2.4242e+02  on 5  degrees of freedom
## Residual deviance: 1.5765e-14  on 0  degrees of freedom
## AIC: 41.901
## 
## Number of Fisher Scoring iterations: 3
cr1 <- emmeans(crith_prob, pairwise ~ gh, type = "response")
cr1
## $emmeans
##  gh   prob     SE  df asymp.LCL asymp.UCL
##  1  0.0891 0.0283 Inf     0.047     0.162
##  2  0.4900 0.0500 Inf     0.394     0.587
##  3  0.7071 0.0457 Inf     0.610     0.788
##  4  0.5200 0.0353 Inf     0.451     0.588
##  5  0.4923 0.0358 Inf     0.423     0.562
##  6  0.9192 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast  odds.ratio      SE  df null z.ratio p.value
##  gh1 / gh2     0.1018 0.04100 Inf    1  -5.676 <0.0001
##  gh1 / gh3     0.0405 0.01670 Inf    1  -7.758 <0.0001
##  gh1 / gh4     0.0903 0.03400 Inf    1  -6.381 <0.0001
##  gh1 / gh5     0.1009 0.03810 Inf    1  -6.076 <0.0001
##  gh1 / gh6     0.0086 0.00375 Inf    1 -10.912 <0.0001
##  gh2 / gh3     0.3980 0.11900 Inf    1  -3.092  0.0244
##  gh2 / gh4     0.8869 0.21700 Inf    1  -0.490  0.9965
##  gh2 / gh5     0.9908 0.24400 Inf    1  -0.038  1.0000
##  gh2 / gh6     0.0845 0.02780 Inf    1  -7.520 <0.0001
##  gh3 / gh4     2.2281 0.58400 Inf    1   3.054  0.0274
##  gh3 / gh5     2.4892 0.65500 Inf    1   3.465  0.0070
##  gh3 / gh6     0.2122 0.07250 Inf    1  -4.537 <0.0001
##  gh4 / gh5     1.1172 0.22500 Inf    1   0.550  0.9940
##  gh4 / gh6     0.0952 0.02830 Inf    1  -7.925 <0.0001
##  gh5 / gh6     0.0852 0.02540 Inf    1  -8.276 <0.0001
## 
## P value adjustment: tukey method for comparing a family of 6 estimates 
## Tests are performed on the log odds ratio scale
cr1.df <- as.data.frame(cr1$emmeans)

# Fantastic this matches what I calculated manually so this is a trustworthy method of comparing probabilities 

Crithidia vs. total pesticides applied (ml)

mod_1a <- glm(
  cbind(crith_pos, crith_neg) ~ total_chemical,
  data = gh6,
  family = binomial("logit"))
Anova(mod_1a)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                LR Chisq Df Pr(>Chisq)    
## total_chemical    87.04  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_1a)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_chemical, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.005e+00  1.607e-01  -6.254    4e-10 ***
## total_chemical  8.920e-06  9.932e-07   8.982   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 155.38  on 4  degrees of freedom
## AIC: 189.28
## 
## Number of Fisher Scoring iterations: 4
ggplot(gh6, aes(x = total_chemical, y = crith_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orchid4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
  labs(
    x = "Total Pesticides Applied (ml)",
    y = "Probability of *Crithidia* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 45000,
    y = 1,
    label = "P < 0.001, χ² = 87.04",
    size = 6
  ) 
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'

Crithidia vs. insecticides

mod_2 <- glm(
  cbind(crith_pos, crith_neg) ~ 
total_insecticide,
  data = gh6,
  family = binomial("logit"))
Anova(mod_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_insecticide   36.584  1  1.462e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_2)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_insecticide, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -2.799e-01  1.162e-01  -2.408    0.016 *  
## total_insecticide  5.242e-06  8.761e-07   5.983 2.19e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 205.84  on 4  degrees of freedom
## AIC: 239.74
## 
## Number of Fisher Scoring iterations: 4
ggplot(gh6, aes(x = total_insecticide, y = crith_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orchid4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(3000, 200000)) +
  labs(
    x = "Total Insecticides Applied (ml)",
    y = "Probability of *Crithidia* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 1,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Crithidia vs. fungicides

mod_3 <- glm(
  cbind(crith_pos, crith_neg) ~ 
total_fungicide,
  data = gh6,
  family = binomial("logit"))

Anova(mod_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## total_fungicide   70.956  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_3)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_fungicide, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -6.139e-01  1.316e-01  -4.664 3.10e-06 ***
## total_fungicide  2.596e-05  3.411e-06   7.612 2.69e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 171.46  on 4  degrees of freedom
## AIC: 205.36
## 
## Number of Fisher Scoring iterations: 5
ggplot(gh6, aes(x = total_fungicide, y = crith_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orchid4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(10000, 100000)) +
  labs(
    x = "Total Fungicides Applied (ml)",
    y = "Probability of *Crithidia* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 1,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Crithidia vs. synthetics

mod_4 <- glm(
  cbind(crith_pos, crith_neg) ~ 
total_synthetic,
  data = gh6,
  family = binomial("logit"))

Anova(mod_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## total_synthetic   143.76  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_4)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_synthetic, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.480e+00  1.702e-01  -8.695   <2e-16 ***
## total_synthetic  6.137e-05  5.598e-06  10.962   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.420  on 5  degrees of freedom
## Residual deviance:  98.661  on 4  degrees of freedom
## AIC: 132.56
## 
## Number of Fisher Scoring iterations: 4
ggplot(gh6, aes(x = total_synthetic, y = crith_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orchid4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(13000, 55000)) +
  labs(
    x = "Total Synthetic Pesticdes Applied (ml)",
    y = "Probability of *Crithidia* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 1,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Crithidia vs. biologicals

mod_5 <- glm(
  cbind(crith_pos, crith_neg) ~ 
total_biological,
  data = gh6,
  family = binomial("logit"))

Anova(mod_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                  LR Chisq Df Pr(>Chisq)    
## total_biological   56.695  1  5.089e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_5)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_biological, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -5.953e-01  1.381e-01  -4.309 1.64e-05 ***
## total_biological  7.686e-06  1.045e-06   7.354 1.92e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 185.72  on 4  degrees of freedom
## AIC: 219.63
## 
## Number of Fisher Scoring iterations: 4
ggplot(gh6, aes(x = total_biological, y = crith_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orchid4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(2500, 200000)) +
  labs(
    x = "Total Biological Pesticdes Applied (ml)",
    y = "Probability of *Crithidia* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 10000,
    y = 1,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Crithidia vs. average hives per greenhouse hectare

mod.cr_6 <- glm(
  cbind(crith_pos, crith_neg) ~ 
avg_hives_ha,
  data = gh6,
  family = binomial("logit"))

Anova(mod.cr_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##              LR Chisq Df Pr(>Chisq)    
## avg_hives_ha   25.474  1  4.483e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.cr_6)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ avg_hives_ha, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   1.82141    0.31557   5.772 7.84e-09 ***
## avg_hives_ha -0.05385    0.01078  -4.995 5.90e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 216.95  on 4  degrees of freedom
## AIC: 250.85
## 
## Number of Fisher Scoring iterations: 4
ggplot(gh6, aes(x = avg_hives_ha, y = crith_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(20, 40)) +
  labs(
    x = "Average Bumble Bee Colonies per Greenhouse Hectare",
    y = "Probability of *Crithidia* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 22,
    y = 1.1,
    label = "β = -0.054 ± 0.011 SE, 
    P < 0.001",
    size = 6
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Crithidia vs. commercial supplier of bumble bee colonies

mod.cr_7 <- glm(
  cbind(crith_pos, crith_neg) ~ 
source,
  data = gh6,
  family = binomial("logit"))

Anova(mod.cr_7)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##        LR Chisq Df Pr(>Chisq)    
## source   71.093  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.cr_7)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ source, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -0.5091     0.1190  -4.277  1.9e-05 ***
## sourceBiobest   1.2200     0.1477   8.260  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 171.33  on 4  degrees of freedom
## AIC: 205.23
## 
## Number of Fisher Scoring iterations: 4
cr.s <- emmeans(mod.cr_7, pairwise ~ source, type = "response")
cr.s
## $emmeans
##  source   prob     SE  df asymp.LCL asymp.UCL
##  Koppert 0.375 0.0279 Inf     0.322     0.431
##  Biobest 0.671 0.0193 Inf     0.632     0.707
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast          odds.ratio     SE  df null z.ratio p.value
##  Koppert / Biobest      0.295 0.0436 Inf    1  -8.260 <0.0001
## 
## Tests are performed on the log odds ratio scale
cr.df <- as.data.frame(cr.s$emmeans)
cr.df
##  source       prob         SE  df asymp.LCL asymp.UCL
##  Koppert 0.3754153 0.02791054 Inf 0.3224898 0.4314948
##  Biobest 0.6706081 0.01931654 Inf 0.6317060 0.7073050
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale
ggplot(cr.df, aes(x = source, y = prob, fill = source)) +

  geom_pointrange(aes(ymin = asymp.LCL,
                    ymax = asymp.UCL),
                shape = 21,
                size = 1,
                fatten = 4,
                color = "black") +

  geom_errorbar(aes(ymin = asymp.LCL,
                    ymax = asymp.UCL),
                width = 0.1,
                linewidth = 1) +

  scale_fill_manual(values = c("Koppert" = "orchid4",
                               "Biobest" = "orchid1")) +

  scale_y_continuous(
    limits = c(0, 1),
    expand = expansion(mult = c(0, 0.05))
  ) +

  theme_cowplot() +

  labs(
    x = "",
    y = "Predicted *Crithidia* detection probability",
    caption = "Odds ratio = 0.30, P < 0.0001, N = 6"
  ) +
    theme(axis.title.y = ggtext::element_markdown()) + 

  theme(
    text = element_text(size = 16),
    axis.text = element_text(size = 14),
    legend.position = "none",
    plot.caption = element_text(hjust = 0.5)
  )
## Warning: The `fatten` argument of `geom_pointrange()` is deprecated as of ggplot2 4.0.0.
## ℹ Please use the `size` aesthetic instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Anova(mod_1a)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                LR Chisq Df Pr(>Chisq)    
## total_chemical    87.04  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_1a)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_chemical, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.005e+00  1.607e-01  -6.254    4e-10 ***
## total_chemical  8.920e-06  9.932e-07   8.982   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 155.38  on 4  degrees of freedom
## AIC: 189.28
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_insecticide   36.584  1  1.462e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_2)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_insecticide, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -2.799e-01  1.162e-01  -2.408    0.016 *  
## total_insecticide  5.242e-06  8.761e-07   5.983 2.19e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 205.84  on 4  degrees of freedom
## AIC: 239.74
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## total_fungicide   70.956  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_3)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_fungicide, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -6.139e-01  1.316e-01  -4.664 3.10e-06 ***
## total_fungicide  2.596e-05  3.411e-06   7.612 2.69e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 171.46  on 4  degrees of freedom
## AIC: 205.36
## 
## Number of Fisher Scoring iterations: 5
Anova(mod_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## total_synthetic   143.76  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_4)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_synthetic, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.480e+00  1.702e-01  -8.695   <2e-16 ***
## total_synthetic  6.137e-05  5.598e-06  10.962   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.420  on 5  degrees of freedom
## Residual deviance:  98.661  on 4  degrees of freedom
## AIC: 132.56
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                  LR Chisq Df Pr(>Chisq)    
## total_biological   56.695  1  5.089e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_5)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ total_biological, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -5.953e-01  1.381e-01  -4.309 1.64e-05 ***
## total_biological  7.686e-06  1.045e-06   7.354 1.92e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 185.72  on 4  degrees of freedom
## AIC: 219.63
## 
## Number of Fisher Scoring iterations: 4
Anova(mod.cr_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##              LR Chisq Df Pr(>Chisq)    
## avg_hives_ha   25.474  1  4.483e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.cr_6)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ avg_hives_ha, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   1.82141    0.31557   5.772 7.84e-09 ***
## avg_hives_ha -0.05385    0.01078  -4.995 5.90e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 216.95  on 4  degrees of freedom
## AIC: 250.85
## 
## Number of Fisher Scoring iterations: 4

Apicystis

Apicystis probability per greenhouse

api_prob <- glm(
  cbind(api_pos, api_neg) ~ 
gh,
  data = gh6,
  family = binomial("logit"))

Anova(api_prob)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##    LR Chisq Df Pr(>Chisq)    
## gh   213.78  5  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(api_prob)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ gh, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.399e+00  2.497e-01  -5.602 2.12e-08 ***
## gh2          1.242e-02  3.533e-01   0.035 0.971954    
## gh3         -1.535e+00  5.225e-01  -2.938 0.003301 ** 
## gh4          9.932e-01  2.884e-01   3.444 0.000573 ***
## gh5         -2.657e+01  5.153e+04  -0.001 0.999589    
## gh6         -2.659e+01  5.153e+04  -0.001 0.999588    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2.1378e+02  on 5  degrees of freedom
## Residual deviance: 5.5431e-10  on 0  degrees of freedom
## AIC: 30.381
## 
## Number of Fisher Scoring iterations: 22
ap1 <- emmeans(api_prob, pairwise ~ gh, type = "response")
ap1
## $emmeans
##  gh   prob       SE  df asymp.LCL asymp.UCL
##  1  0.1980 3.97e-02 Inf    0.1315     0.287
##  2  0.2000 4.00e-02 Inf    0.1328     0.290
##  3  0.0505 2.20e-02 Inf    0.0212     0.116
##  4  0.4000 3.46e-02 Inf    0.3344     0.469
##  5  0.0000 4.00e-08 Inf    0.0000     1.000
##  6  0.0000 4.00e-08 Inf    0.0000     1.000
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast  odds.ratio       SE  df null z.ratio p.value
##  gh1 / gh2   1.00e+00 0.00e+00 Inf    1  -0.035  1.0000
##  gh1 / gh3   5.00e+00 2.00e+00 Inf    1   2.938  0.0388
##  gh1 / gh4   0.00e+00 0.00e+00 Inf    1  -3.444  0.0076
##  gh1 / gh5   3.48e+11 1.79e+16 Inf    1   0.001  1.0000
##  gh1 / gh6   3.53e+11 1.82e+16 Inf    1   0.001  1.0000
##  gh2 / gh3   5.00e+00 2.00e+00 Inf    1   2.961  0.0362
##  gh2 / gh4   0.00e+00 0.00e+00 Inf    1  -3.398  0.0089
##  gh2 / gh5   3.52e+11 1.81e+16 Inf    1   0.001  1.0000
##  gh2 / gh6   3.57e+11 1.84e+16 Inf    1   0.001  1.0000
##  gh3 / gh4   0.00e+00 0.00e+00 Inf    1  -5.255 <0.0001
##  gh3 / gh5   7.49e+10 3.86e+15 Inf    1   0.000  1.0000
##  gh3 / gh6   7.60e+10 3.92e+15 Inf    1   0.000  1.0000
##  gh4 / gh5   9.38e+11 4.83e+16 Inf    1   0.001  1.0000
##  gh4 / gh6   9.53e+11 4.91e+16 Inf    1   0.001  1.0000
##  gh5 / gh6   1.00e+00 7.40e+04 Inf    1   0.000  1.0000
## 
## P value adjustment: tukey method for comparing a family of 6 estimates 
## Tests are performed on the log odds ratio scale
ap1.df <- as.data.frame(ap1$emmeans)

# Fantastic once again this matches what I calculated manually so this is a trustworthy method of comparing probabilities 

Apicystis vs. total pesticides applied (ml)

mod.ap_1a <- glm(
  cbind(api_pos, api_neg) ~ total_chemical,
  data = gh6,
  family = binomial("logit"))
Anova(mod.ap_1a)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                LR Chisq Df Pr(>Chisq)    
## total_chemical   17.948  1   2.27e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_1a)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_chemical, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.086e+00  1.848e-01  -5.876 4.20e-09 ***
## total_chemical -5.370e-06  1.254e-06  -4.281 1.86e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 195.83  on 4  degrees of freedom
## AIC: 218.22
## 
## Number of Fisher Scoring iterations: 6
ggplot(gh6, aes(x = total_chemical, y = api_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
  labs(
    x = "Total Pesticides Applied (ml)",
    y = "Probability of *Apicystis* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 45000,
    y = 0.5,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Apicystis vs. insecticides

mod.ap_2 <- glm(
  cbind(api_pos, api_neg) ~ 
total_insecticide,
  data = gh6,
  family = binomial("logit"))
Anova(mod.ap_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_insecticide   13.797  1  0.0002037 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_2)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_insecticide, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.370e+00  1.451e-01  -9.440  < 2e-16 ***
## total_insecticide -4.467e-06  1.202e-06  -3.718 0.000201 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 199.99  on 4  degrees of freedom
## AIC: 222.37
## 
## Number of Fisher Scoring iterations: 6
qqnorm(resid(mod.ap_2));qqline(resid(mod.ap_2))

ggplot(gh6, aes(x = total_insecticide, y = api_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(3000, 200000)) +
  labs(
    x = "Total Insecticides Applied (ml)",
    y = "Probability of *Apicystis* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 0.5,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Apicystis vs. fungicides

mod.ap_3 <- glm(
  cbind(api_pos, api_neg) ~ 
total_fungicide,
  data = gh6,
  family = binomial("logit"))

Anova(mod.ap_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)
## total_fungicide  0.71414  1     0.3981
summary(mod.ap_3)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_fungicide, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.695e+00  1.712e-01  -9.899   <2e-16 ***
## total_fungicide -3.373e-06  4.043e-06  -0.834    0.404    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.07  on 4  degrees of freedom
## AIC: 235.45
## 
## Number of Fisher Scoring iterations: 5
ggplot(gh6, aes(x = total_fungicide, y = api_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(10000, 100000)) +
  labs(
    x = "Total Fungicides Applied (ml)",
    y = "Probability of *Apicystis* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 0.5,
    label = "P = 0.40",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Apicystis vs. synthetics

mod.ap_4 <- glm(
  cbind(api_pos, api_neg) ~ 
total_synthetic,
  data = gh6,
  family = binomial("logit"))

Anova(mod.ap_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)
## total_synthetic  0.20155  1     0.6535
summary(mod.ap_4)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_synthetic, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.905e+00  2.227e-01  -8.554   <2e-16 ***
## total_synthetic  2.967e-06  6.597e-06   0.450    0.653    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.58  on 4  degrees of freedom
## AIC: 235.96
## 
## Number of Fisher Scoring iterations: 6
ggplot(gh6, aes(x = total_synthetic, y = api_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(13000, 55000)) +
  labs(
    x = "Total Synthetic Pesticdes Applied (ml)",
    y = "Probability of *Apicystis* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 0.5,
    label = "P = 0.65",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Apicystis vs. biologicals

mod.ap_5 <- glm(
  cbind(api_pos, api_neg) ~ 
total_biological,
  data = gh6,
  family = binomial("logit"))

Anova(mod.ap_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                  LR Chisq Df Pr(>Chisq)    
## total_biological   21.977  1   2.76e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_5)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_biological, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -1.132e+00  1.630e-01  -6.942 3.86e-12 ***
## total_biological -6.481e-06  1.378e-06  -4.702 2.58e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 191.81  on 4  degrees of freedom
## AIC: 214.19
## 
## Number of Fisher Scoring iterations: 6
ggplot(gh6, aes(x = total_biological, y = api_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(2500, 200000)) +
  labs(
    x = "Total Biological Pesticdes Applied (ml)",
    y = "Probability of *Apicystis* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 10000,
    y = 0.5,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Apicystis vs. average hives per greenhouse hectare

mod.ap_6 <- glm(
  cbind(api_pos, api_neg) ~ 
avg_hives_ha,
  data = gh6,
  family = binomial("logit"))

Anova(mod.ap_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##              LR Chisq Df Pr(>Chisq)    
## avg_hives_ha   118.05  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_6)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ avg_hives_ha, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -6.74826    0.52773  -12.79   <2e-16 ***
## avg_hives_ha  0.16031    0.01565   10.24   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.783  on 5  degrees of freedom
## Residual deviance:  95.729  on 4  degrees of freedom
## AIC: 118.11
## 
## Number of Fisher Scoring iterations: 6
ggplot(gh6, aes(x = avg_hives_ha, y = api_prop)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "orangered") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(20, 40)) +
  labs(
    x = "Average bumble bee colonies per greenhouse hectare",
    y = "Probability of *Apicystis* Detection"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 22,
    y = 0.5,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Apicystis vs. commercial supplier of bumble bee colonies

mod.ap_7 <- glm(
  cbind(api_pos, api_neg) ~ 
source,
  data = gh6,
  family = binomial("logit"))

Anova(mod.ap_7)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##        LR Chisq Df Pr(>Chisq)    
## source   133.31  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_7)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ source, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -0.6981     0.1224  -5.705 1.16e-08 ***
## sourceBiobest  -2.4233     0.2382 -10.174  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.783  on 5  degrees of freedom
## Residual deviance:  80.469  on 4  degrees of freedom
## AIC: 102.85
## 
## Number of Fisher Scoring iterations: 6
ap.s <- emmeans(mod.ap_7, pairwise ~ source, type = "response")
ap.s
## $emmeans
##  source    prob      SE  df asymp.LCL asymp.UCL
##  Koppert 0.3322 0.02710 Inf    0.2813    0.3874
##  Biobest 0.0422 0.00827 Inf    0.0287    0.0617
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast          odds.ratio   SE  df null z.ratio p.value
##  Koppert / Biobest       11.3 2.69 Inf    1  10.174 <0.0001
## 
## Tests are performed on the log odds ratio scale
ap.df <- as.data.frame(ap.s$emmeans)
ap.df
##  source       prob          SE  df  asymp.LCL asymp.UCL
##  Koppert 0.3322259 0.027148653 Inf 0.28130832 0.3873920
##  Biobest 0.0422297 0.008265682 Inf 0.02869202 0.0617488
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale
ggplot(ap.df, aes(x = source, y = prob, fill = source)) +

  geom_pointrange(aes(ymin = asymp.LCL,
                    ymax = asymp.UCL),
                shape = 21,
                size = 1,
                fatten = 4,
                color = "black") +

  geom_errorbar(aes(ymin = asymp.LCL,
                    ymax = asymp.UCL),
                width = 0.1,
                linewidth = 1) +

  scale_fill_manual(values = c("Koppert" = "orangered1",
                               "Biobest" = "orangered4")) +

  scale_y_continuous(
    limits = c(0, 0.45),
    expand = expansion(mult = c(0, 0.05))
  ) +

  theme_cowplot() +

  labs(
    x = "",
    y = "Predicted *Apicystis* detection probability",
    caption = "Odds ratio = 11.3, P < 0.0001, N = 6"
  ) +
    theme(axis.title.y = ggtext::element_markdown()) + 

  theme(
    text = element_text(size = 16),
    axis.text = element_text(size = 14),
    legend.position = "none",
    plot.caption = element_text(hjust = 0.5)
  )

Anova(mod.ap_1a)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                LR Chisq Df Pr(>Chisq)    
## total_chemical   17.948  1   2.27e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_1a)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_chemical, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.086e+00  1.848e-01  -5.876 4.20e-09 ***
## total_chemical -5.370e-06  1.254e-06  -4.281 1.86e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 195.83  on 4  degrees of freedom
## AIC: 218.22
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.ap_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_insecticide   13.797  1  0.0002037 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_2)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_insecticide, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.370e+00  1.451e-01  -9.440  < 2e-16 ***
## total_insecticide -4.467e-06  1.202e-06  -3.718 0.000201 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 199.99  on 4  degrees of freedom
## AIC: 222.37
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.ap_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)
## total_fungicide  0.71414  1     0.3981
summary(mod.ap_3)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_fungicide, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.695e+00  1.712e-01  -9.899   <2e-16 ***
## total_fungicide -3.373e-06  4.043e-06  -0.834    0.404    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.07  on 4  degrees of freedom
## AIC: 235.45
## 
## Number of Fisher Scoring iterations: 5
Anova(mod.ap_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)
## total_synthetic  0.20155  1     0.6535
summary(mod.ap_4)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_synthetic, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.905e+00  2.227e-01  -8.554   <2e-16 ***
## total_synthetic  2.967e-06  6.597e-06   0.450    0.653    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.58  on 4  degrees of freedom
## AIC: 235.96
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.ap_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                  LR Chisq Df Pr(>Chisq)    
## total_biological   21.977  1   2.76e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_5)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ total_biological, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -1.132e+00  1.630e-01  -6.942 3.86e-12 ***
## total_biological -6.481e-06  1.378e-06  -4.702 2.58e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 191.81  on 4  degrees of freedom
## AIC: 214.19
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.ap_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##              LR Chisq Df Pr(>Chisq)    
## avg_hives_ha   118.05  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod.ap_6)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ avg_hives_ha, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -6.74826    0.52773  -12.79   <2e-16 ***
## avg_hives_ha  0.16031    0.01565   10.24   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.783  on 5  degrees of freedom
## Residual deviance:  95.729  on 4  degrees of freedom
## AIC: 118.11
## 
## Number of Fisher Scoring iterations: 6

Anther bruising

hist(gh6$average_bruise)

gh6$logbruise <- log(gh6$average_bruise)
hist(gh6$logbruise)

shapiro.test(gh6$logbruise)
## 
##  Shapiro-Wilk normality test
## 
## data:  gh6$logbruise
## W = 0.8978, p-value = 0.3611

Anther bruising vs. crithidia

mod_b_1 <- glm(average_bruise ~ crith_prop, data = gh6)
Anova(mod_b_1)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##            LR Chisq Df Pr(>Chisq)  
## crith_prop   6.5964  1    0.01022 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_1)
## 
## Call:
## glm(formula = average_bruise ~ crith_prop, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.44224    0.09026  27.058 1.11e-05 ***
## crith_prop  -0.39132    0.15236  -2.568   0.0621 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.008823438)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.035294  on 4  degrees of freedom
## AIC: -7.7876
## 
## Number of Fisher Scoring iterations: 2
mod_b_1 <- glm(logbruise ~ crith_prop, data = gh6)
Anova(mod_b_1)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##            LR Chisq Df Pr(>Chisq)   
## crith_prop   6.7171  1   0.009549 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_1)
## 
## Call:
## glm(formula = logbruise ~ crith_prop, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.89669    0.04058  22.097 2.48e-05 ***
## crith_prop  -0.17753    0.06850  -2.592   0.0606 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.001783466)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0071339  on 4  degrees of freedom
## AIC: -17.381
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = crith_prop, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(0.08,1)) +
  labs(
    x = "Probability of *Crithidia* Detection",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 0.15,
    y = 2.75,
    label = "P = 0.01",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther bruising vs. apicystis

mod_b_2 <- glm(average_bruise ~ api_prop, data = gh6)
Anova(mod_b_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##          LR Chisq Df Pr(>Chisq)    
## api_prop   13.957  1   0.000187 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_2)
## 
## Call:
## glm(formula = average_bruise ~ api_prop, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.12313    0.04151  51.149 8.74e-07 ***
## api_prop     0.77254    0.20679   3.736   0.0202 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.005206725)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.020827  on 4  degrees of freedom
## AIC: -10.952
## 
## Number of Fisher Scoring iterations: 2
mod_b_2 <- glm(logbruise ~ api_prop, data = gh6)
Anova(mod_b_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##          LR Chisq Df Pr(>Chisq)    
## api_prop   13.162  1  0.0002857 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_2)
## 
## Call:
## glm(formula = logbruise ~ api_prop, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.75242    0.01920  39.193 2.53e-06 ***
## api_prop     0.34697    0.09564   3.628   0.0222 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.001113742)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.004455  on 4  degrees of freedom
## AIC: -20.206
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = api_prop, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(0,.41)) +
  labs(
    x = "Probability of *Apicystis* Detection",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 0.05,
    y = 2.75,
    label = "P < 0.001",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther brusing vs. total pesticides

mod_b_3 <- glm(average_bruise ~ total_chemical, data = gh6)
Anova(mod_b_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##                LR Chisq Df Pr(>Chisq)
## total_chemical   2.7052  1        0.1
summary(mod_b_3)
## 
## Call:
## glm(formula = average_bruise ~ total_chemical, data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.359e+00  9.061e-02  26.029 1.29e-05 ***
## total_chemical -1.027e-06  6.244e-07  -1.645    0.175    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.01394399)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.055776  on 4  degrees of freedom
## AIC: -5.0418
## 
## Number of Fisher Scoring iterations: 2
mod_b_3 <- glm(logbruise ~ total_chemical, data = gh6)
Anova(mod_b_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                LR Chisq Df Pr(>Chisq)  
## total_chemical   2.7706  1    0.09601 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_3)
## 
## Call:
## glm(formula = logbruise ~ total_chemical, data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     8.590e-01  4.077e-02  21.067    3e-05 ***
## total_chemical -4.677e-07  2.810e-07  -1.665    0.171    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002823047)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.011292  on 4  degrees of freedom
## AIC: -14.625
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = total_chemical, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limit = c(16000, 215000)) +
  labs(
    x = "Average total pesticides applied (ml)",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 25000,
    y = 2.7,
    label = "P = 0.11",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther bruising vs. insecticides

mod_b_4 <- glm(average_bruise ~ total_insecticide, data = gh6)
Anova(mod_b_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##                   LR Chisq Df Pr(>Chisq)
## total_insecticide   1.2021  1     0.2729
summary(mod_b_4)
## 
## Call:
## glm(formula = average_bruise ~ total_insecticide, data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        2.293e+00  7.805e-02  29.382 7.99e-06 ***
## total_insecticide -7.293e-07  6.652e-07  -1.096    0.334    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.017973)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.071892  on 4  degrees of freedom
## AIC: -3.5188
## 
## Number of Fisher Scoring iterations: 2
mod_b_4 <- glm(logbruise ~ total_insecticide, data = gh6)
Anova(mod_b_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                   LR Chisq Df Pr(>Chisq)
## total_insecticide   1.2407  1     0.2653
summary(mod_b_4)
## 
## Call:
## glm(formula = logbruise ~ total_insecticide, data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        8.294e-01  3.516e-02  23.589 1.91e-05 ***
## total_insecticide -3.338e-07  2.997e-07  -1.114    0.328    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003647169)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.014589  on 4  degrees of freedom
## AIC: -13.088
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = total_insecticide, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(3000, 195000)) +
  labs(
    x = "Average total insecticides applied (ml)",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 10000,
    y = 2.6,
    label = "P = 0.28",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther brusing vs. fungicides

mod_b_5 <- glm(average_bruise ~ total_fungicide, data = gh6)
Anova(mod_b_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##                 LR Chisq Df Pr(>Chisq)
## total_fungicide  0.51373  1     0.4735
summary(mod_b_5)
## 
## Call:
## glm(formula = average_bruise ~ total_fungicide, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      2.291e+00  1.008e-01  22.721 2.22e-05 ***
## total_fungicide -1.498e-06  2.090e-06  -0.717    0.513    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.02071387)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.082855  on 4  degrees of freedom
## AIC: -2.6672
## 
## Number of Fisher Scoring iterations: 2
mod_b_5 <- glm(logbruise ~ total_fungicide, data = gh6)
Anova(mod_b_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)
## total_fungicide  0.49767  1     0.4805
summary(mod_b_5)
## 
## Call:
## glm(formula = logbruise ~ total_fungicide, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      8.277e-01  4.567e-02  18.121 5.45e-05 ***
## total_fungicide -6.678e-07  9.466e-07  -0.705    0.519    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004249676)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016999  on 4  degrees of freedom
## AIC: -12.171
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = total_fungicide, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(10000, 100000)) +
  labs(
    x = "Average total fungicides applied (ml)",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 20000,
    y = 2.6,
    label = "P = 0.47",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther bruising vs. synthetics

mod_b_6 <- glm(average_bruise ~ total_synthetic, data = gh6)
Anova(mod_b_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##                 LR Chisq Df Pr(>Chisq)
## total_synthetic  0.97926  1     0.3224
summary(mod_b_6)
## 
## Call:
## glm(formula = average_bruise ~ total_synthetic, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      2.347e+00  1.288e-01   18.22 5.33e-05 ***
## total_synthetic -4.127e-06  4.170e-06   -0.99    0.378    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.01877725)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.075109  on 4  degrees of freedom
## AIC: -3.2562
## 
## Number of Fisher Scoring iterations: 2
mod_b_6 <- glm(logbruise ~ total_synthetic, data = gh6)
Anova(mod_b_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)
## total_synthetic   1.0595  1     0.3033
summary(mod_b_6)
## 
## Call:
## glm(formula = logbruise ~ total_synthetic, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      8.551e-01  5.777e-02  14.801 0.000121 ***
## total_synthetic -1.925e-06  1.871e-06  -1.029 0.361488    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003777735)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.015111  on 4  degrees of freedom
## AIC: -12.877
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = total_synthetic, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(13000, 55000)) +
  labs(
    x = "Average total synthetic pesticides applied (ml)",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 20000,
    y = 2.6,
    label = "P = 0.32",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther bruising vs. biologicals

mod_b_7 <- glm(average_bruise ~ total_biological, data = gh6)
Anova(mod_b_7)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##                  LR Chisq Df Pr(>Chisq)
## total_biological   2.3194  1     0.1278
summary(mod_b_7)
## 
## Call:
## glm(formula = average_bruise ~ total_biological, data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       2.333e+00  8.289e-02  28.152 9.47e-06 ***
## total_biological -1.063e-06  6.982e-07  -1.523    0.202    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.01479514)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.059181  on 4  degrees of freedom
## AIC: -4.6863
## 
## Number of Fisher Scoring iterations: 2
mod_b_7 <- glm(logbruise ~ total_biological, data = gh6)
Anova(mod_b_7)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                  LR Chisq Df Pr(>Chisq)
## total_biological   2.3467  1     0.1256
summary(mod_b_7)
## 
## Call:
## glm(formula = logbruise ~ total_biological, data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       8.474e-01  3.740e-02  22.659 2.25e-05 ***
## total_biological -4.826e-07  3.150e-07  -1.532      0.2    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003011599)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.012046  on 4  degrees of freedom
## AIC: -14.237
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = total_biological, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(3000, 195000)) +
  labs(
    x = "Average total biological pesticides applied (ml)",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 15000,
    y = 2.6,
    label = "P = 0.13",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther bruising vs. average hives per greenhouse hectare

mod_b_8 <- glm(average_bruise ~ avg_hives_ha, data = gh6)
Anova(mod_b_8)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##              LR Chisq Df Pr(>Chisq)
## avg_hives_ha   2.1637  1     0.1413
summary(mod_b_8)
## 
## Call:
## glm(formula = average_bruise ~ avg_hives_ha, data = gh6)
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  1.866496   0.253771   7.355  0.00182 **
## avg_hives_ha 0.013182   0.008961   1.471  0.21526   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.01516884)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.060675  on 4  degrees of freedom
## AIC: -4.5366
## 
## Number of Fisher Scoring iterations: 2
mod_b_8 <- glm(logbruise ~ avg_hives_ha, data = gh6)
Anova(mod_b_8)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##              LR Chisq Df Pr(>Chisq)
## avg_hives_ha   2.1692  1     0.1408
summary(mod_b_8)
## 
## Call:
## glm(formula = logbruise ~ avg_hives_ha, data = gh6)
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.635918   0.114689   5.545  0.00517 **
## avg_hives_ha 0.005965   0.004050   1.473  0.21479   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003098209)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.012393  on 4  degrees of freedom
## AIC: -14.067
## 
## Number of Fisher Scoring iterations: 2
ggplot(gh6, aes(x = avg_hives_ha, y = average_bruise)) +
geom_point(size = 5, stroke = 0.8, alpha = 0.8, color = "chartreuse4") +
geom_smooth(method = "glm",
              se = TRUE,
              color = "black",
              size = 1.2) +
  theme_cowplot() +
    scale_x_continuous(limits = c(20, 40)) +
  labs(
    x = "Average total biologicals applied (ml)",
    y = "Average anther bruising score"
  ) +
  theme(
    plot.title = element_text(size = 14, face = "bold")) +
  theme(text = element_text(size = 20),
        axis.text.x = element_text(size = 20),
        axis.text.y = element_text(size = 20)) +
    theme(axis.title.x = ggtext::element_markdown()) + 
  annotate(
    geom = "text",
    x = 21,
    y = 2.6,
    label = "P = 0.14",
    size = 9
  ) 
## `geom_smooth()` using formula = 'y ~ x'

Anther bruising vs. commercial supplier of bumble bee colonies

mod_b_9 <- glm(average_bruise ~ source, data = gh6)
Anova(mod_b_9)
## Analysis of Deviance Table (Type II tests)
## 
## Response: average_bruise
##        LR Chisq Df Pr(>Chisq)  
## source   5.7858  1    0.01616 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_9)
## 
## Call:
## glm(formula = average_bruise ~ source, data = gh6)
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    2.36813    0.06912  34.263 4.33e-06 ***
## sourceBiobest -0.20362    0.08465  -2.405   0.0739 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.009554299)
## 
##     Null deviance: 0.093497  on 5  degrees of freedom
## Residual deviance: 0.038217  on 4  degrees of freedom
## AIC: -7.3101
## 
## Number of Fisher Scoring iterations: 2
b.s <- emmeans(mod_b_9, pairwise ~ source, type = "response")
b.s
## $emmeans
##  source  emmean     SE df lower.CL upper.CL
##  Koppert   2.37 0.0691  4     2.18     2.56
##  Biobest   2.16 0.0489  4     2.03     2.30
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast          estimate     SE df t.ratio p.value
##  Koppert - Biobest    0.204 0.0847  4   2.405  0.0739
bs.df <- as.data.frame(b.s$emmeans)
bs.df
##  source    emmean         SE df lower.CL upper.CL
##  Koppert 2.368129 0.06911693  4 2.176229 2.560028
##  Biobest 2.164512 0.04887305  4 2.028819 2.300206
## 
## Confidence level used: 0.95
mod_b_9 <- glm(logbruise ~ source, data = gh6)
Anova(mod_b_9)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##        LR Chisq Df Pr(>Chisq)  
## source   5.4475  1     0.0196 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_9)
## 
## Call:
## glm(formula = logbruise ~ source, data = gh6)
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    0.86210    0.03181  27.106  1.1e-05 ***
## sourceBiobest -0.09092    0.03895  -2.334   0.0799 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002023148)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0080926  on 4  degrees of freedom
## AIC: -16.624
## 
## Number of Fisher Scoring iterations: 2
b.s <- emmeans(mod_b_9, pairwise ~ source, type = "response")
b.s
## $emmeans
##  source  emmean     SE df lower.CL upper.CL
##  Koppert  0.862 0.0318  4    0.774    0.950
##  Biobest  0.771 0.0225  4    0.709    0.834
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast          estimate    SE df t.ratio p.value
##  Koppert - Biobest   0.0909 0.039  4   2.334  0.0799
bs.df <- as.data.frame(b.s$emmeans)
bs.df
##  source     emmean         SE df  lower.CL  upper.CL
##  Koppert 0.8620982 0.03180525  4 0.7737926 0.9504037
##  Biobest 0.7711819 0.02248971  4 0.7087404 0.8336233
## 
## Confidence level used: 0.95
ggplot(bs.df, aes(x = source, y = emmean, fill = source)) +

  geom_pointrange(aes(ymin = lower.CL,
                    ymax = upper.CL),
                shape = 21,
                size = 1,
                fatten = 4,
                color = "black") +

  geom_errorbar(aes(ymin = lower.CL,
                    ymax = upper.CL),
                width = 0.1,
                linewidth = 1) +

  scale_fill_manual(values = c("Koppert" = "chartreuse4",
                               "Biobest" = "darkolivegreen")) +

  scale_y_continuous(
    limits = c(0, 3),
    expand = expansion(mult = c(0, 0.05))
  ) +

  theme_cowplot() +

  labs(
    x = "",
    y = "Estimated mean anther bruise score",
    caption = "Koppert − Biobest = 0.20; P = 0.074"
  ) +
    theme(axis.title.y = ggtext::element_markdown()) + 

  theme(
    text = element_text(size = 16),
    axis.text = element_text(size = 14),
    legend.position = "none",
    plot.caption = element_text(hjust = 0.5)
  )

Anova(mod_b_1)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##            LR Chisq Df Pr(>Chisq)   
## crith_prop   6.7171  1   0.009549 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_1)
## 
## Call:
## glm(formula = logbruise ~ crith_prop, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.89669    0.04058  22.097 2.48e-05 ***
## crith_prop  -0.17753    0.06850  -2.592   0.0606 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.001783466)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0071339  on 4  degrees of freedom
## AIC: -17.381
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##          LR Chisq Df Pr(>Chisq)    
## api_prop   13.162  1  0.0002857 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_2)
## 
## Call:
## glm(formula = logbruise ~ api_prop, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.75242    0.01920  39.193 2.53e-06 ***
## api_prop     0.34697    0.09564   3.628   0.0222 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.001113742)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.004455  on 4  degrees of freedom
## AIC: -20.206
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                LR Chisq Df Pr(>Chisq)  
## total_chemical   2.7706  1    0.09601 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_b_3)
## 
## Call:
## glm(formula = logbruise ~ total_chemical, data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     8.590e-01  4.077e-02  21.067    3e-05 ***
## total_chemical -4.677e-07  2.810e-07  -1.665    0.171    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002823047)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.011292  on 4  degrees of freedom
## AIC: -14.625
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                   LR Chisq Df Pr(>Chisq)
## total_insecticide   1.2407  1     0.2653
summary(mod_b_4)
## 
## Call:
## glm(formula = logbruise ~ total_insecticide, data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        8.294e-01  3.516e-02  23.589 1.91e-05 ***
## total_insecticide -3.338e-07  2.997e-07  -1.114    0.328    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003647169)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.014589  on 4  degrees of freedom
## AIC: -13.088
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)
## total_fungicide  0.49767  1     0.4805
summary(mod_b_5)
## 
## Call:
## glm(formula = logbruise ~ total_fungicide, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      8.277e-01  4.567e-02  18.121 5.45e-05 ***
## total_fungicide -6.678e-07  9.466e-07  -0.705    0.519    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004249676)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016999  on 4  degrees of freedom
## AIC: -12.171
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)
## total_synthetic   1.0595  1     0.3033
summary(mod_b_6)
## 
## Call:
## glm(formula = logbruise ~ total_synthetic, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      8.551e-01  5.777e-02  14.801 0.000121 ***
## total_synthetic -1.925e-06  1.871e-06  -1.029 0.361488    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003777735)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.015111  on 4  degrees of freedom
## AIC: -12.877
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_7)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                  LR Chisq Df Pr(>Chisq)
## total_biological   2.3467  1     0.1256
summary(mod_b_7)
## 
## Call:
## glm(formula = logbruise ~ total_biological, data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       8.474e-01  3.740e-02  22.659 2.25e-05 ***
## total_biological -4.826e-07  3.150e-07  -1.532      0.2    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003011599)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.012046  on 4  degrees of freedom
## AIC: -14.237
## 
## Number of Fisher Scoring iterations: 2
Anova(mod_b_8)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##              LR Chisq Df Pr(>Chisq)
## avg_hives_ha   2.1692  1     0.1408
summary(mod_b_8)
## 
## Call:
## glm(formula = logbruise ~ avg_hives_ha, data = gh6)
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.635918   0.114689   5.545  0.00517 **
## avg_hives_ha 0.005965   0.004050   1.473  0.21479   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003098209)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.012393  on 4  degrees of freedom
## AIC: -14.067
## 
## Number of Fisher Scoring iterations: 2

Applied pesticde comparisons

# List of your logical treatment variables
treat_vars <- c("azaguard", "botanigard_22wp",  "botanigard_es",    "captiva_prime",    "nofly",    "venerate_cg",  "m_pede",   "rootshield_plus",  "lalstop_k61",  "beleaf_50sg",  "coragen",  "entrust_sc",   "pylon",    "grotto",   "luna_tranquility", "previcur_flex",    "fontelis", "quadristop",   "milstop")


# Reshape the data to long format
greenhouse_long <- gh6 %>%
  pivot_longer(cols = all_of(treat_vars),
               names_to = "treatment",
               values_to = "applied")

greenhouse_long$applied_L <- ifelse(greenhouse_long$applied == 0, 0, 1)
greenhouse_long$applied_L <- as.logical(greenhouse_long$applied_L)

chem_cols <- c(
"azaguard","botanigard_22wp","botanigard_es","captiva_prime","nofly",
"venerate_cg","m_pede","rootshield_plus","lalstop_k61","beleaf_50sg",
"coragen","entrust_sc","pylon","grotto","luna_tranquility",
"previcur_flex","fontelis","quadristop","milstop"
)

gh6[paste0(chem_cols, "_L")] <-
  lapply(gh6[chem_cols], function(x) x > 0)
chem_info <- data.frame(
  pesticide = c(
    "azaguard_L",
    "captiva_prime_L",
    "nofly_L",
    "venerate_cg_L",
    "entrust_sc_L",
    "m_pede_L",
    "botanigard_22wp_L",
    "botanigard_es_L",
    "beleaf_50sg_L",
    "coragen_L",
    "pylon_L",
    "rootshield_plus_L",
    "lalstop_k61_L",
    "milstop_L",
    "grotto_L",
    "luna_tranquility_L",
    "previcur_flex_L",
    "fontelis_L",
    "quadristop_L"
  ),

  type = c(
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "insecticide",
    "fungicide",
    "fungicide",
    "fungicide",
    "fungicide",
    "fungicide",
    "fungicide",
    "fungicide",
    "fungicide"
  ),

  mode = c(
    "biological",
    "biological",
    "biological",
    "biological",
    "biological",
    "biological",
    "biological",
    "biological",
    "synthetic",
    "synthetic",
    "synthetic",
    "biological",
    "biological",
    "biological",
    "synthetic",
    "synthetic",
    "synthetic",
    "synthetic",
    "synthetic"
  )
)

chem_info$type <- factor(chem_info$type,
                         levels = c("insecticide", "fungicide"))

chem_info$mode <- factor(chem_info$mode,
                         levels = c("biological", "synthetic"))

chem_info <- chem_info[order(chem_info$type, chem_info$mode), ]

# Create combined classification
chem_info$class <- paste(chem_info$type, chem_info$mode, sep = "_")

chem_info <- chem_info[order(chem_info$mode), ]

# Four colors
chem_colors <- c(
"insecticide_synthetic" = "brown4",
"insecticide_biological" = "orchid1",
"fungicide_synthetic" = "deepskyblue4",
"fungicide_biological" = "lightskyblue"
)

Crithidia vs. logical chemicals

Models

## ---------------- AZAGUARD ----------------
mod_azaguard <- glm(
  cbind(crith_pos, crith_neg) ~ azaguard_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_azaguard)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ azaguard_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -0.2955     0.1167  -2.531   0.0114 *  
## azaguard_LTRUE   0.8890     0.1449   6.137  8.4e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 204.05  on 4  degrees of freedom
## AIC: 237.95
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_azaguard)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##            LR Chisq Df Pr(>Chisq)    
## azaguard_L   38.371  1  5.849e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ma.s <- emmeans(mod_azaguard, pairwise ~ azaguard_L, type = "response")
ma.s.df <- as.data.frame(ma.s$emmeans)
ma.s
## $emmeans
##  azaguard_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE      0.427 0.0286 Inf     0.372     0.483
##   TRUE      0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- BOTANIGARD 22WP ----------------
mod_botanigard_22wp <- glm(
  cbind(crith_pos, crith_neg) ~ botanigard_22wp_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_botanigard_22wp)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ botanigard_22wp_L, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -0.2955     0.1167  -2.531   0.0114 *  
## botanigard_22wp_LTRUE   0.8890     0.1449   6.137  8.4e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 204.05  on 4  degrees of freedom
## AIC: 237.95
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_botanigard_22wp)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                   LR Chisq Df Pr(>Chisq)    
## botanigard_22wp_L   38.371  1  5.849e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mb22.s <- emmeans(mod_botanigard_22wp, pairwise ~ botanigard_22wp_L, type = "response")
mb22.s.df <- as.data.frame(mb22.s$emmeans)
mb22.s 
## $emmeans
##  botanigard_22wp_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.427 0.0286 Inf     0.372     0.483
##   TRUE             0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- BOTANIGARD ES ----------------
mod_botanigard_es <- glm(
  cbind(crith_pos, crith_neg) ~ botanigard_es_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_botanigard_es)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ botanigard_es_L, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          0.50013    0.09244   5.410 6.29e-08 ***
## botanigard_es_LTRUE -0.47481    0.13665  -3.475 0.000511 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 230.29  on 4  degrees of freedom
## AIC: 264.19
## 
## Number of Fisher Scoring iterations: 3
Anova(mod_botanigard_es)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## botanigard_es_L   12.134  1   0.000495 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mbe.s <- emmeans(mod_botanigard_es, pairwise ~ botanigard_es_L, type = "response")
mbe.s.df <- as.data.frame(mbe.s$emmeans)
mbe.s
## $emmeans
##  botanigard_es_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.622 0.0217 Inf     0.579     0.664
##   TRUE           0.506 0.0252 Inf     0.457     0.555
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       1.61 0.22 Inf    1   3.475  0.0005
## 
## Tests are performed on the log odds ratio scale
## ---------------- CAPTIVA PRIME ----------------
mod_captiva_prime <- glm(
  cbind(crith_pos, crith_neg) ~ captiva_prime_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_captiva_prime)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ captiva_prime_L, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -0.2955     0.1167  -2.531   0.0114 *  
## captiva_prime_LTRUE   0.8890     0.1449   6.137  8.4e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 204.05  on 4  degrees of freedom
## AIC: 237.95
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_captiva_prime)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## captiva_prime_L   38.371  1  5.849e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mcp.s <- emmeans(mod_captiva_prime, pairwise ~ captiva_prime_L, type = "response")
mcp.s.df <- as.data.frame(mcp.s$emmeans)
mcp.s
## $emmeans
##  captiva_prime_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.427 0.0286 Inf     0.372     0.483
##   TRUE           0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- NOFLY ----------------
mod_nofly <- glm(
  cbind(crith_pos, crith_neg) ~ nofly_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_nofly)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ nofly_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.2955     0.1167  -2.531   0.0114 *  
## nofly_LTRUE   0.8890     0.1449   6.137  8.4e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 204.05  on 4  degrees of freedom
## AIC: 237.95
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_nofly)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##         LR Chisq Df Pr(>Chisq)    
## nofly_L   38.371  1  5.849e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mnf.s <- emmeans(mod_nofly, pairwise ~ nofly_L, type = "response")
mnf.s.df <- as.data.frame(mnf.s$emmeans)
mnf.s
## $emmeans
##  nofly_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.427 0.0286 Inf     0.372     0.483
##   TRUE   0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- VENERATE CG ----------------
mod_venerate_cg <- glm(
  cbind(crith_pos, crith_neg) ~ venerate_cg_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_venerate_cg)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ venerate_cg_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.14425    0.08968  -1.609    0.108    
## venerate_cg_LTRUE  1.02694    0.14260   7.202 5.95e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 188.26  on 4  degrees of freedom
## AIC: 222.16
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_venerate_cg)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##               LR Chisq Df Pr(>Chisq)    
## venerate_cg_L   54.162  1  1.846e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mvc.s <- emmeans(mod_venerate_cg, pairwise ~ venerate_cg_L, type = "response")
mvc.s.df <- as.data.frame(mvc.s$emmeans)
mvc.s
## $emmeans
##  venerate_cg_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.464 0.0223 Inf     0.421     0.508
##   TRUE         0.707 0.0229 Inf     0.660     0.750
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.358 0.0511 Inf    1  -7.202 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- M-PEDE ----------------
mod_m_pede <- glm(
  cbind(crith_pos, crith_neg) ~ m_pede_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_m_pede)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ m_pede_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -0.2955     0.1167  -2.531   0.0114 *  
## m_pede_LTRUE   0.8890     0.1449   6.137  8.4e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 204.05  on 4  degrees of freedom
## AIC: 237.95
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_m_pede)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##          LR Chisq Df Pr(>Chisq)    
## m_pede_L   38.371  1  5.849e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mmp.s <- emmeans(mod_m_pede, pairwise ~ m_pede_L, type = "response")
mmp.s.df <- as.data.frame(mmp.s$emmeans)
mmp.s
## $emmeans
##  m_pede_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE    0.427 0.0286 Inf     0.372     0.483
##   TRUE    0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- ROOTSHIELD PLUS ----------------
mod_rootshield_plus <- glm(
  cbind(crith_pos, crith_neg) ~ rootshield_plus_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_rootshield_plus)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ rootshield_plus_L, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            0.25497    0.07654   3.331 0.000864 ***
## rootshield_plus_LTRUE  0.14212    0.16359   0.869 0.384969    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 241.66  on 4  degrees of freedom
## AIC: 275.56
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_rootshield_plus)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                   LR Chisq Df Pr(>Chisq)
## rootshield_plus_L  0.75854  1     0.3838
mrs.s <- emmeans(mod_rootshield_plus, pairwise ~ rootshield_plus_L, type = "response")
mrs.s.df <- as.data.frame(mrs.s$emmeans)
mrs.s
## $emmeans
##  rootshield_plus_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.563 0.0188 Inf     0.526     0.600
##   TRUE             0.598 0.0348 Inf     0.528     0.664
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.868 0.142 Inf    1  -0.869  0.3850
## 
## Tests are performed on the log odds ratio scale
## ---------------- LALSTOP K61 ----------------
mod_lalstop_k61 <- glm(
  cbind(crith_pos, crith_neg) ~ lalstop_k61_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_lalstop_k61)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ lalstop_k61_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        0.63304    0.07987   7.926 2.26e-15 ***
## lalstop_k61_LTRUE -1.53544    0.17497  -8.776  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 157.44  on 4  degrees of freedom
## AIC: 191.34
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_lalstop_k61)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##               LR Chisq Df Pr(>Chisq)    
## lalstop_k61_L   84.983  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mlk.s <- emmeans(mod_lalstop_k61, pairwise ~ lalstop_k61_L, type = "response")
mlk.s.df <- as.data.frame(mlk.s$emmeans)
mlk.s
## $emmeans
##  lalstop_k61_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.653 0.0181 Inf     0.617     0.688
##   TRUE         0.289 0.0320 Inf     0.230     0.355
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       4.64 0.812 Inf    1   8.776 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- BELEAF 50SG ----------------
mod_beleaf_50sg <- glm(
  cbind(crith_pos, crith_neg) ~ beleaf_50sg_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_beleaf_50sg)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ beleaf_50sg_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.11235    0.07598  -1.479    0.139    
## beleaf_50sg_LTRUE  2.54377    0.27160   9.366   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.420  on 5  degrees of freedom
## Residual deviance:  95.039  on 4  degrees of freedom
## AIC: 128.94
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_beleaf_50sg)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##               LR Chisq Df Pr(>Chisq)    
## beleaf_50sg_L   147.38  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mbf.s <- emmeans(mod_beleaf_50sg, pairwise ~ beleaf_50sg_L, type = "response")
mbf.s.df <- as.data.frame(mbf.s$emmeans)
mbf.s
## $emmeans
##  beleaf_50sg_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.472 0.0189 Inf     0.435     0.509
##   TRUE         0.919 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE     0.0786 0.0213 Inf    1  -9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- CORAGEN ----------------
mod_coragen <- glm(
  cbind(crith_pos, crith_neg) ~ coragen_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_coragen)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ coragen_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)  
## (Intercept)    0.08004    0.14153   0.566   0.5717  
## coragen_LTRUE  0.26683    0.16118   1.655   0.0978 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 239.69  on 4  degrees of freedom
## AIC: 273.59
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_coragen)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##           LR Chisq Df Pr(>Chisq)  
## coragen_L   2.7331  1    0.09829 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mcg.s <- emmeans(mod_coragen, pairwise ~ coragen_L, type = "response")
mcg.s.df <- as.data.frame(mcg.s$emmeans)
mcg.s
## $emmeans
##  coragen_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE     0.520 0.0353 Inf     0.451     0.588
##   TRUE     0.586 0.0187 Inf     0.549     0.622
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.766 0.123 Inf    1  -1.655  0.0978
## 
## Tests are performed on the log odds ratio scale
## ---------------- ENTRUST SC ----------------
mod_entrust_sc <- glm(
  cbind(crith_pos, crith_neg) ~ entrust_sc_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_entrust_sc)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ entrust_sc_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.11235    0.07598  -1.479    0.139    
## entrust_sc_LTRUE  2.54377    0.27160   9.366   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.420  on 5  degrees of freedom
## Residual deviance:  95.039  on 4  degrees of freedom
## AIC: 128.94
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_entrust_sc)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##              LR Chisq Df Pr(>Chisq)    
## entrust_sc_L   147.38  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mes.s <- emmeans(mod_entrust_sc, pairwise ~ entrust_sc_L, type = "response")
mes.s.df <- as.data.frame(mes.s$emmeans)
mes.s
## $emmeans
##  entrust_sc_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE        0.472 0.0189 Inf     0.435     0.509
##   TRUE        0.919 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE     0.0786 0.0213 Inf    1  -9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- PYLON ----------------
mod_pylon <- glm(
  cbind(crith_pos, crith_neg) ~ pylon_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_pylon)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ pylon_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  0.59356    0.08577   6.920 4.51e-12 ***
## pylon_LTRUE -0.88903    0.14486  -6.137 8.40e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 204.05  on 4  degrees of freedom
## AIC: 237.95
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_pylon)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##         LR Chisq Df Pr(>Chisq)    
## pylon_L   38.371  1  5.849e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mpy.s <- emmeans(mod_pylon, pairwise ~ pylon_L, type = "response")
mpy.s.df <- as.data.frame(mpy.s$emmeans)
mpy.s 
## $emmeans
##  pylon_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.644 0.0197 Inf     0.605     0.682
##   TRUE   0.427 0.0286 Inf     0.372     0.483
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       2.43 0.352 Inf    1   6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- GROTTO ----------------
mod_grotto <- glm(
  cbind(crith_pos, crith_neg) ~ grotto_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_grotto)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ grotto_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.11235    0.07598  -1.479    0.139    
## grotto_LTRUE  2.54377    0.27160   9.366   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.420  on 5  degrees of freedom
## Residual deviance:  95.039  on 4  degrees of freedom
## AIC: 128.94
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_grotto)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##          LR Chisq Df Pr(>Chisq)    
## grotto_L   147.38  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mgr.s <- emmeans(mod_grotto, pairwise ~ grotto_L, type = "response")
mgr.s.df <- as.data.frame(mgr.s$emmeans)
mgr.s
## $emmeans
##  grotto_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE    0.472 0.0189 Inf     0.435     0.509
##   TRUE    0.919 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE     0.0786 0.0213 Inf    1  -9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- LUNA TRANQUILITY ----------------
mod_luna_tranquility <- glm(
  cbind(crith_pos, crith_neg) ~ luna_tranquility_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_luna_tranquility)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ luna_tranquility_L, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)   
## (Intercept)             0.26415    0.08278   3.191  0.00142 **
## luna_tranquility_LTRUE  0.06659    0.14352   0.464  0.64267   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 242.20  on 4  degrees of freedom
## AIC: 276.11
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_luna_tranquility)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                    LR Chisq Df Pr(>Chisq)
## luna_tranquility_L  0.21553  1     0.6425
mlt.s <- emmeans(mod_luna_tranquility, pairwise ~ luna_tranquility_L, type = "response")
mlt.s.df <- as.data.frame(mlt.s$emmeans)
mlt.s 
## $emmeans
##  luna_tranquility_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE              0.566 0.0203 Inf     0.525     0.605
##   TRUE              0.582 0.0285 Inf     0.525     0.637
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.936 0.134 Inf    1  -0.464  0.6427
## 
## Tests are performed on the log odds ratio scale
## ---------------- PREVICUR FLEX ----------------
mod_previcur_flex <- glm(
  cbind(crith_pos, crith_neg) ~ previcur_flex_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_previcur_flex)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ previcur_flex_L, 
##     family = binomial("logit"), data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           2.4314     0.2608   9.324   <2e-16 ***
## previcur_flex_LTRUE  -2.5438     0.2716  -9.366   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.420  on 5  degrees of freedom
## Residual deviance:  95.039  on 4  degrees of freedom
## AIC: 128.94
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_previcur_flex)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##                 LR Chisq Df Pr(>Chisq)    
## previcur_flex_L   147.38  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mpf.s <- emmeans(mod_previcur_flex, pairwise ~ previcur_flex_L, type = "response")
mpf.s.df <- as.data.frame(mpf.s$emmeans)
mpf.s
## $emmeans
##  previcur_flex_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.919 0.0194 Inf     0.872     0.950
##   TRUE           0.472 0.0189 Inf     0.435     0.509
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       12.7 3.46 Inf    1   9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
## ---------------- FONTELIS ----------------
mod_fontelis <- glm(
  cbind(crith_pos, crith_neg) ~ fontelis_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_fontelis)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ fontelis_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     0.34687    0.07712   4.498 6.86e-06 ***
## fontelis_LTRUE -0.26683    0.16118  -1.655   0.0978 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 239.69  on 4  degrees of freedom
## AIC: 273.59
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_fontelis)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##            LR Chisq Df Pr(>Chisq)  
## fontelis_L   2.7331  1    0.09829 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mfo.s <- emmeans(mod_fontelis, pairwise ~ fontelis_L, type = "response")
mfo.s.df <- as.data.frame(mfo.s$emmeans)
mfo.s
## $emmeans
##  fontelis_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE      0.586 0.0187 Inf     0.549     0.622
##   TRUE      0.520 0.0353 Inf     0.451     0.588
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       1.31 0.21 Inf    1   1.655  0.0978
## 
## Tests are performed on the log odds ratio scale
## ---------------- QUADRISTOP ----------------
mod_quadristop <- glm(
  cbind(crith_pos, crith_neg) ~ quadristop_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_quadristop)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ quadristop_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)   
## (Intercept)        0.2175     0.0714   3.046  0.00232 **
## quadristop_LTRUE   0.6637     0.2321   2.860  0.00424 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 233.71  on 4  degrees of freedom
## AIC: 267.61
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_quadristop)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##              LR Chisq Df Pr(>Chisq)   
## quadristop_L   8.7121  1   0.003161 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mqs.s <- emmeans(mod_quadristop, pairwise ~ quadristop_L, type = "response")
mqs.s.df <- as.data.frame(mqs.s$emmeans)
mqs.s
## $emmeans
##  quadristop_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE        0.554 0.0176 Inf     0.519     0.588
##   TRUE        0.707 0.0457 Inf     0.610     0.788
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE      0.515 0.12 Inf    1  -2.860  0.0042
## 
## Tests are performed on the log odds ratio scale
## ---------------- MILSTOP ----------------
mod_milstop <- glm(
  cbind(crith_pos, crith_neg) ~ milstop_L,
  data = gh6,
  family = binomial("logit")
)

summary(mod_milstop)
## 
## Call:
## glm(formula = cbind(crith_pos, crith_neg) ~ milstop_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)   
## (Intercept)     0.2175     0.0714   3.046  0.00232 **
## milstop_LTRUE   0.6637     0.2321   2.860  0.00424 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 242.42  on 5  degrees of freedom
## Residual deviance: 233.71  on 4  degrees of freedom
## AIC: 267.61
## 
## Number of Fisher Scoring iterations: 4
Anova(mod_milstop)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos, crith_neg)
##           LR Chisq Df Pr(>Chisq)   
## milstop_L   8.7121  1   0.003161 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mms.s <- emmeans(mod_milstop, pairwise ~ milstop_L, type = "response")
mms.s.df <- as.data.frame(mms.s$emmeans)
mms.s 
## $emmeans
##  milstop_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE     0.554 0.0176 Inf     0.519     0.588
##   TRUE     0.707 0.0457 Inf     0.610     0.788
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE      0.515 0.12 Inf    1  -2.860  0.0042
## 
## Tests are performed on the log odds ratio scale
ma.s 
## $emmeans
##  azaguard_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE      0.427 0.0286 Inf     0.372     0.483
##   TRUE      0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
mb22.s 
## $emmeans
##  botanigard_22wp_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.427 0.0286 Inf     0.372     0.483
##   TRUE             0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
mbe.s 
## $emmeans
##  botanigard_es_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.622 0.0217 Inf     0.579     0.664
##   TRUE           0.506 0.0252 Inf     0.457     0.555
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       1.61 0.22 Inf    1   3.475  0.0005
## 
## Tests are performed on the log odds ratio scale
mcp.s 
## $emmeans
##  captiva_prime_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.427 0.0286 Inf     0.372     0.483
##   TRUE           0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
mnf.s 
## $emmeans
##  nofly_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.427 0.0286 Inf     0.372     0.483
##   TRUE   0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
mvc.s 
## $emmeans
##  venerate_cg_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.464 0.0223 Inf     0.421     0.508
##   TRUE         0.707 0.0229 Inf     0.660     0.750
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.358 0.0511 Inf    1  -7.202 <0.0001
## 
## Tests are performed on the log odds ratio scale
mmp.s 
## $emmeans
##  m_pede_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE    0.427 0.0286 Inf     0.372     0.483
##   TRUE    0.644 0.0197 Inf     0.605     0.682
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.411 0.0595 Inf    1  -6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
mrs.s 
## $emmeans
##  rootshield_plus_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.563 0.0188 Inf     0.526     0.600
##   TRUE             0.598 0.0348 Inf     0.528     0.664
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.868 0.142 Inf    1  -0.869  0.3850
## 
## Tests are performed on the log odds ratio scale
mlk.s 
## $emmeans
##  lalstop_k61_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.653 0.0181 Inf     0.617     0.688
##   TRUE         0.289 0.0320 Inf     0.230     0.355
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       4.64 0.812 Inf    1   8.776 <0.0001
## 
## Tests are performed on the log odds ratio scale
mbf.s 
## $emmeans
##  beleaf_50sg_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.472 0.0189 Inf     0.435     0.509
##   TRUE         0.919 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE     0.0786 0.0213 Inf    1  -9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
mcg.s 
## $emmeans
##  coragen_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE     0.520 0.0353 Inf     0.451     0.588
##   TRUE     0.586 0.0187 Inf     0.549     0.622
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.766 0.123 Inf    1  -1.655  0.0978
## 
## Tests are performed on the log odds ratio scale
mes.s 
## $emmeans
##  entrust_sc_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE        0.472 0.0189 Inf     0.435     0.509
##   TRUE        0.919 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE     0.0786 0.0213 Inf    1  -9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
mpy.s 
## $emmeans
##  pylon_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.644 0.0197 Inf     0.605     0.682
##   TRUE   0.427 0.0286 Inf     0.372     0.483
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       2.43 0.352 Inf    1   6.137 <0.0001
## 
## Tests are performed on the log odds ratio scale
mgr.s 
## $emmeans
##  grotto_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE    0.472 0.0189 Inf     0.435     0.509
##   TRUE    0.919 0.0194 Inf     0.872     0.950
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE     0.0786 0.0213 Inf    1  -9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
mlt.s  
## $emmeans
##  luna_tranquility_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE              0.566 0.0203 Inf     0.525     0.605
##   TRUE              0.582 0.0285 Inf     0.525     0.637
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.936 0.134 Inf    1  -0.464  0.6427
## 
## Tests are performed on the log odds ratio scale
mpf.s 
## $emmeans
##  previcur_flex_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.919 0.0194 Inf     0.872     0.950
##   TRUE           0.472 0.0189 Inf     0.435     0.509
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       12.7 3.46 Inf    1   9.366 <0.0001
## 
## Tests are performed on the log odds ratio scale
mfo.s 
## $emmeans
##  fontelis_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE      0.586 0.0187 Inf     0.549     0.622
##   TRUE      0.520 0.0353 Inf     0.451     0.588
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       1.31 0.21 Inf    1   1.655  0.0978
## 
## Tests are performed on the log odds ratio scale
mqs.s 
## $emmeans
##  quadristop_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE        0.554 0.0176 Inf     0.519     0.588
##   TRUE        0.707 0.0457 Inf     0.610     0.788
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE      0.515 0.12 Inf    1  -2.860  0.0042
## 
## Tests are performed on the log odds ratio scale
mms.s 
## $emmeans
##  milstop_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE     0.554 0.0176 Inf     0.519     0.588
##   TRUE     0.707 0.0457 Inf     0.610     0.788
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE      0.515 0.12 Inf    1  -2.860  0.0042
## 
## Tests are performed on the log odds ratio scale

Summary Table

mod.crith <- list(
azaguard = mod_azaguard,
botanigard_22wp = mod_botanigard_22wp,
botanigard_es = mod_botanigard_es,
captiva_prime = mod_captiva_prime,
nofly = mod_nofly,
venerate_cg = mod_venerate_cg,
m_pede = mod_m_pede,
rootshield_plus = mod_rootshield_plus,
lalstop_k61 = mod_lalstop_k61,
beleaf_50sg = mod_beleaf_50sg,
coragen = mod_coragen,
entrust_sc = mod_entrust_sc,
pylon = mod_pylon,
grotto = mod_grotto,
luna_tranquility = mod_luna_tranquility,
previcur_flex = mod_previcur_flex,
fontelis = mod_fontelis,
quadristop = mod_quadristop,
milstop = mod_milstop
)


summary_table.crith <- do.call(rbind, lapply(names(mod.crith), function(name){

  m <- mod.crith[[name]]
  s <- summary(m)

  coef_row <- s$coefficients[2, ]
  lr <- Anova(m)$`LR Chisq`[1]
  LRT <- Anova(m)$'Pr(>Chisq)'[1]

  data.frame(
    Pesticide = name,
    Estimate = coef_row["Estimate"],
    SE = coef_row["Std. Error"],
    z = coef_row["z value"],
    p = coef_row["Pr(>|z|)"],
    LR_ChiSq = lr,
    LRT = LRT,
    AIC = AIC(m),
    Residual_Deviance = m$deviance
  )
}))


summary_table.crith$Estimate <- signif(summary_table.crith$Estimate,3)
summary_table.crith$SE <- signif(summary_table.crith$SE,3)
summary_table.crith$z <- round(summary_table.crith$z,2)
summary_table.crith$p <- signif(summary_table.crith$p,3)
summary_table.crith$LR_ChiSq <- round(summary_table.crith$LR_ChiSq,2)
summary_table.crith$AIC <- round(summary_table.crith$AIC,2)
summary_table.crith$Residual_Deviance <- round(summary_table.crith$Residual_Deviance,2)
summary_table.crith$LRT <- signif(summary_table.crith$LRT,2)

summary_table.crith
##                   Pesticide Estimate    SE     z        p LR_ChiSq     LRT
## Estimate           azaguard   0.8890 0.145  6.14 8.40e-10    38.37 5.8e-10
## Estimate1   botanigard_22wp   0.8890 0.145  6.14 8.40e-10    38.37 5.8e-10
## Estimate2     botanigard_es  -0.4750 0.137 -3.47 5.11e-04    12.13 5.0e-04
## Estimate3     captiva_prime   0.8890 0.145  6.14 8.40e-10    38.37 5.8e-10
## Estimate4             nofly   0.8890 0.145  6.14 8.40e-10    38.37 5.8e-10
## Estimate5       venerate_cg   1.0300 0.143  7.20 5.95e-13    54.16 1.8e-13
## Estimate6            m_pede   0.8890 0.145  6.14 8.40e-10    38.37 5.8e-10
## Estimate7   rootshield_plus   0.1420 0.164  0.87 3.85e-01     0.76 3.8e-01
## Estimate8       lalstop_k61  -1.5400 0.175 -8.78 1.70e-18    84.98 3.0e-20
## Estimate9       beleaf_50sg   2.5400 0.272  9.37 7.55e-21   147.38 6.5e-34
## Estimate10          coragen   0.2670 0.161  1.66 9.78e-02     2.73 9.8e-02
## Estimate11       entrust_sc   2.5400 0.272  9.37 7.55e-21   147.38 6.5e-34
## Estimate12            pylon  -0.8890 0.145 -6.14 8.40e-10    38.37 5.8e-10
## Estimate13           grotto   2.5400 0.272  9.37 7.55e-21   147.38 6.5e-34
## Estimate14 luna_tranquility   0.0666 0.144  0.46 6.43e-01     0.22 6.4e-01
## Estimate15    previcur_flex  -2.5400 0.272 -9.37 7.55e-21   147.38 6.5e-34
## Estimate16         fontelis  -0.2670 0.161 -1.66 9.78e-02     2.73 9.8e-02
## Estimate17       quadristop   0.6640 0.232  2.86 4.24e-03     8.71 3.2e-03
## Estimate18          milstop   0.6640 0.232  2.86 4.24e-03     8.71 3.2e-03
##               AIC Residual_Deviance
## Estimate   237.95            204.05
## Estimate1  237.95            204.05
## Estimate2  264.19            230.29
## Estimate3  237.95            204.05
## Estimate4  237.95            204.05
## Estimate5  222.16            188.26
## Estimate6  237.95            204.05
## Estimate7  275.56            241.66
## Estimate8  191.34            157.44
## Estimate9  128.94             95.04
## Estimate10 273.59            239.69
## Estimate11 128.94             95.04
## Estimate12 237.95            204.05
## Estimate13 128.94             95.04
## Estimate14 276.11            242.20
## Estimate15 128.94             95.04
## Estimate16 273.59            239.69
## Estimate17 267.61            233.71
## Estimate18 267.61            233.71
csdf <- as.data.frame(summary_table.crith)

Plots

basic plot
predictors <- c(
"azaguard_L",
"botanigard_22wp_L",
"botanigard_es_L",
"captiva_prime_L",
"nofly_L",
"venerate_cg_L",
"m_pede_L",
"rootshield_plus_L",
"lalstop_k61_L",
"beleaf_50sg_L",
"coragen_L",
"entrust_sc_L",
"pylon_L",
"grotto_L",
"luna_tranquility_L",
"previcur_flex_L",
"fontelis_L",
"quadristop_L",
"milstop_L"
)

gh6$crith_prop <- gh6$crith_pos /
  (gh6$crith_pos + gh6$crith_neg)

gh6$crith_se <- sqrt(
  (gh6$crith_prop * (1 - gh6$crith_prop)) /
  (gh6$crith_pos + gh6$crith_neg)
)


plots <- lapply(predictors, function(var){

  ggplot(gh6, aes_string(x = var, y = "crith_prop")) +
    geom_boxplot(width = 0.5, alpha = 0.6, outlier.shape = NA) +
    geom_jitter(width = 0.1, size = 3, alpha = 0.8) +
    labs(
      x = var,
      y = "Crithidia infection proportion"
    ) +
    theme_classic(base_size = 14) +
    scale_x_discrete(labels = c("FALSE" = "Not applied", "TRUE" = "Applied"))
})
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
wrap_plots(plots, ncol = 4)

updated crithidia vs. logical chems
plots <- lapply(1:nrow(chem_info), function(i){


chem_type <- chem_info$type[i]
chem_mode <- chem_info$mode[i]
var <- chem_info$pesticide[i]
chem_class <- chem_info$class[i]
var2 <- gsub("_L$", "", chem_info$pesticide[i])  # remove _L at end


stats_row <- summary_table.crith[summary_table.crith$Pesticide == var2, ]

annot_text <- paste0(
    "LRT χ² = ", round(stats_row$LR_ChiSq, 2), 
    ", p = ", signif(stats_row$LRT, 3))

ggplot(gh6, aes_string(x = var, y = "crith_prop")) +
  geom_boxplot(fill = chem_colors[chem_class],
               alpha = 0.6,
               width = 0.5,
               outlier.shape = NA) +
  geom_jitter(width = 0.1, size = 3, alpha = 0.8) +
  labs(
    title = gsub("_L","",var),
    subtitle = paste(chem_type, "-", chem_mode),
    x = "",
    y = "Probability of *Crithidia* Detection"
  ) +
  scale_x_discrete(labels = c("FALSE"="Not applied","TRUE"="Applied")) +
  theme_classic(base_size = 16) +
  theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
      "text",
      x = 2, y = 1.05, # top-right
      label = annot_text,
      hjust = 1, vjust = 1, size = 4
    ) +
  coord_cartesian(ylim = c(0, 1))
})


wrap_plots(plots, ncol = 4)

Apicystis vs. logical chemicals

mod.a_azaguard <- glm(
  cbind(api_pos, api_neg) ~ azaguard_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_azaguard)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ azaguard_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.7346     0.1617 -10.728   <2e-16 ***
## azaguard_LTRUE  -0.1236     0.2015  -0.614    0.539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.41  on 4  degrees of freedom
## AIC: 235.79
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_azaguard)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##            LR Chisq Df Pr(>Chisq)
## azaguard_L  0.37344  1     0.5411
ma.a <- emmeans(mod.a_azaguard, pairwise ~ azaguard_L, type = "response")
ma.a.df <- as.data.frame(ma.a$emmeans)
ma.a
## $emmeans
##  azaguard_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE      0.150 0.0206 Inf     0.114     0.195
##   TRUE      0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mod.a_botanigard_22wp <- glm(
  cbind(api_pos, api_neg) ~ botanigard_22wp_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_botanigard_22wp)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ botanigard_22wp_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -1.7346     0.1617 -10.728   <2e-16 ***
## botanigard_22wp_LTRUE  -0.1236     0.2015  -0.614    0.539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.41  on 4  degrees of freedom
## AIC: 235.79
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_botanigard_22wp)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                   LR Chisq Df Pr(>Chisq)
## botanigard_22wp_L  0.37344  1     0.5411
mb22.a <- emmeans(mod.a_botanigard_22wp, pairwise ~ botanigard_22wp_L, type = "response")
mb22.a.df <- as.data.frame(mb22.a$emmeans)
mb22.a
## $emmeans
##  botanigard_22wp_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.150 0.0206 Inf     0.114     0.195
##   TRUE             0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mod.a_botanigard_es <- glm(
  cbind(api_pos, api_neg) ~ botanigard_es_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_botanigard_es)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ botanigard_es_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -2.3092     0.1563 -14.774  < 2e-16 ***
## botanigard_es_LTRUE   0.9387     0.2003   4.687 2.77e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 190.83  on 4  degrees of freedom
## AIC: 213.21
## 
## Number of Fisher Scoring iterations: 5
Anova(mod.a_botanigard_es)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)    
## botanigard_es_L   22.958  1  1.656e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mbe.a <- emmeans(mod.a_botanigard_es, pairwise ~ botanigard_es_L, type = "response")
mbe.a.df <- as.data.frame(mbe.a$emmeans)
mbe.a
## $emmeans
##  botanigard_es_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.0904 0.0128 Inf    0.0681     0.119
##   TRUE           0.2025 0.0202 Inf    0.1658     0.245
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.391 0.0783 Inf    1  -4.687 <0.0001
## 
## Tests are performed on the log odds ratio scale
mod.a_captiva_prime <- glm(
  cbind(api_pos, api_neg) ~ captiva_prime_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_captiva_prime)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ captiva_prime_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -1.7346     0.1617 -10.728   <2e-16 ***
## captiva_prime_LTRUE  -0.1236     0.2015  -0.614    0.539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.41  on 4  degrees of freedom
## AIC: 235.79
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_captiva_prime)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)
## captiva_prime_L  0.37344  1     0.5411
mcp.a <- emmeans(mod.a_captiva_prime, pairwise ~ captiva_prime_L, type = "response")
mcp.a.df <- as.data.frame(mcp.a$emmeans)
mcp.a
## $emmeans
##  captiva_prime_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.150 0.0206 Inf     0.114     0.195
##   TRUE           0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mod.a_nofly <- glm(
  cbind(api_pos, api_neg) ~ nofly_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_nofly)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ nofly_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.7346     0.1617 -10.728   <2e-16 ***
## nofly_LTRUE  -0.1236     0.2015  -0.614    0.539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.41  on 4  degrees of freedom
## AIC: 235.79
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_nofly)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##         LR Chisq Df Pr(>Chisq)
## nofly_L  0.37344  1     0.5411
mnf.a <- emmeans(mod.a_nofly, pairwise ~ nofly_L, type = "response")
mnf.a.df <- as.data.frame(mnf.a$emmeans)
mnf.a
## $emmeans
##  nofly_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.150 0.0206 Inf     0.114     0.195
##   TRUE   0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mod.a_venerate_cg <- glm(
  cbind(api_pos, api_neg) ~ venerate_cg_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_venerate_cg)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ venerate_cg_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -1.0986     0.1033 -10.637   <2e-16 ***
## venerate_cg_LTRUE  -20.8817  1813.9497  -0.012    0.991    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.783  on 5  degrees of freedom
## Residual deviance:  52.926  on 4  degrees of freedom
## AIC: 75.307
## 
## Number of Fisher Scoring iterations: 16
Anova(mod.a_venerate_cg)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##               LR Chisq Df Pr(>Chisq)    
## venerate_cg_L   160.86  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mvc.a <- emmeans(mod.a_venerate_cg, pairwise ~ venerate_cg_L, type = "response")
mvc.a.df <- as.data.frame(mvc.a$emmeans)
mvc.a
## $emmeans
##  venerate_cg_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE         0.25 1.94e-02 Inf     0.214      0.29
##   TRUE         0.00 5.16e-07 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.17e+09 2.13e+12 Inf    1   0.012  0.9908
## 
## Tests are performed on the log odds ratio scale
mod.a_m_pede <- glm(
  cbind(api_pos, api_neg) ~ m_pede_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_m_pede)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ m_pede_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -1.7346     0.1617 -10.728   <2e-16 ***
## m_pede_LTRUE  -0.1236     0.2015  -0.614    0.539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.41  on 4  degrees of freedom
## AIC: 235.79
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_m_pede)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##          LR Chisq Df Pr(>Chisq)
## m_pede_L  0.37344  1     0.5411
mmp.a <- emmeans(mod.a_m_pede, pairwise ~ m_pede_L, type = "response")
mmp.a.df <- as.data.frame(mmp.a$emmeans)
mmp.a
## $emmeans
##  m_pede_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE    0.150 0.0206 Inf     0.114     0.195
##   TRUE    0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mod.a_rootshield_plus <- glm(
  cbind(api_pos, api_neg) ~ rootshield_plus_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_rootshield_plus)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ rootshield_plus_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -1.7817     0.1081 -16.484   <2e-16 ***
## rootshield_plus_LTRUE  -0.1585     0.2396  -0.661    0.508    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.34  on 4  degrees of freedom
## AIC: 235.72
## 
## Number of Fisher Scoring iterations: 5
Anova(mod.a_rootshield_plus)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                   LR Chisq Df Pr(>Chisq)
## rootshield_plus_L  0.44747  1     0.5035
mrs.a <- emmeans(mod.a_rootshield_plus, pairwise ~ rootshield_plus_L, type = "response")
mrs.a.df <- as.data.frame(mrs.a$emmeans)
mrs.a
## $emmeans
##  rootshield_plus_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.144 0.0133 Inf    0.1199     0.172
##   TRUE             0.126 0.0235 Inf    0.0863     0.179
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.17 0.281 Inf    1   0.661  0.5084
## 
## Tests are performed on the log odds ratio scale
mod.a_lalstop_k61 <- glm(
  cbind(api_pos, api_neg) ~ lalstop_k61_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_lalstop_k61)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ lalstop_k61_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        -1.9659     0.1158 -16.975  < 2e-16 ***
## lalstop_k61_LTRUE   0.5734     0.2112   2.714  0.00664 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 206.78  on 4  degrees of freedom
## AIC: 229.16
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_lalstop_k61)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##               LR Chisq Df Pr(>Chisq)   
## lalstop_k61_L   7.0039  1   0.008133 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mlk.a <- emmeans(mod.a_lalstop_k61, pairwise ~ lalstop_k61_L, type = "response")
mlk.a.df <- as.data.frame(mlk.a$emmeans)
mlk.a
## $emmeans
##  lalstop_k61_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.123 0.0125 Inf     0.100     0.149
##   TRUE         0.199 0.0282 Inf     0.149     0.260
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.564 0.119 Inf    1  -2.714  0.0066
## 
## Tests are performed on the log odds ratio scale
mod.a_beleaf_50sg <- glm(
  cbind(api_pos, api_neg) ~ beleaf_50sg_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_beleaf_50sg)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ beleaf_50sg_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        -1.51732    0.09876  -15.36   <2e-16 ***
## beleaf_50sg_LTRUE -18.47059  943.71566   -0.02    0.984    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 145.52  on 4  degrees of freedom
## AIC: 167.91
## 
## Number of Fisher Scoring iterations: 14
Anova(mod.a_beleaf_50sg)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##               LR Chisq Df Pr(>Chisq)    
## beleaf_50sg_L   68.259  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mbf.a <- emmeans(mod.a_beleaf_50sg, pairwise ~ beleaf_50sg_L, type = "response")
mbf.a.df <- as.data.frame(mbf.a$emmeans)
mbf.a
## $emmeans
##  beleaf_50sg_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE         0.18 1.46e-02 Inf     0.153      0.21
##   TRUE         0.00 1.97e-06 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.05e+08 9.92e+10 Inf    1   0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mod.a_coragen <- glm(
  cbind(api_pos, api_neg) ~ coragen_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_coragen)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ coragen_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -0.4055     0.1443  -2.809  0.00497 ** 
## coragen_LTRUE  -2.2618     0.2112 -10.710  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.783  on 5  degrees of freedom
## Residual deviance:  92.901  on 4  degrees of freedom
## AIC: 115.28
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_coragen)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##           LR Chisq Df Pr(>Chisq)    
## coragen_L   120.88  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mcg.a <- emmeans(mod.a_coragen, pairwise ~ coragen_L, type = "response")
mcg.a.df <- as.data.frame(mcg.a$emmeans)
mcg.a
## $emmeans
##  coragen_L   prob      SE  df asymp.LCL asymp.UCL
##  FALSE     0.4000 0.03460 Inf    0.3344    0.4694
##   TRUE     0.0649 0.00936 Inf    0.0488    0.0859
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE        9.6 2.03 Inf    1  10.710 <0.0001
## 
## Tests are performed on the log odds ratio scale
mod.a_entrust_sc <- glm(
  cbind(api_pos, api_neg) ~ entrust_sc_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_entrust_sc)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ entrust_sc_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.51732    0.09876  -15.36   <2e-16 ***
## entrust_sc_LTRUE -18.47059  943.71566   -0.02    0.984    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 145.52  on 4  degrees of freedom
## AIC: 167.91
## 
## Number of Fisher Scoring iterations: 14
Anova(mod.a_entrust_sc)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##              LR Chisq Df Pr(>Chisq)    
## entrust_sc_L   68.259  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mes.a <- emmeans(mod.a_entrust_sc, pairwise ~ entrust_sc_L, type = "response")
mes.a.df <- as.data.frame(mes.a$emmeans)
mes.a
## $emmeans
##  entrust_sc_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE        0.18 1.46e-02 Inf     0.153      0.21
##   TRUE        0.00 1.97e-06 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.05e+08 9.92e+10 Inf    1   0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mod.a_pylon <- glm(
  cbind(api_pos, api_neg) ~ pylon_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_pylon)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ pylon_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.8582     0.1202 -15.459   <2e-16 ***
## pylon_LTRUE   0.1236     0.2015   0.614    0.539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 213.41  on 4  degrees of freedom
## AIC: 235.79
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_pylon)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##         LR Chisq Df Pr(>Chisq)
## pylon_L  0.37344  1     0.5411
mpy.a <- emmeans(mod.a_pylon, pairwise ~ pylon_L, type = "response")
mpy.a.df <- as.data.frame(mpy.a$emmeans)
mpy.a
## $emmeans
##  pylon_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.135 0.0140 Inf     0.110     0.165
##   TRUE   0.150 0.0206 Inf     0.114     0.195
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.884 0.178 Inf    1  -0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mod.a_grotto <- glm(
  cbind(api_pos, api_neg) ~ grotto_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_grotto)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ grotto_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -1.51732    0.09876  -15.36   <2e-16 ***
## grotto_LTRUE -18.47059  943.71566   -0.02    0.984    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 145.52  on 4  degrees of freedom
## AIC: 167.91
## 
## Number of Fisher Scoring iterations: 14
Anova(mod.a_grotto)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##          LR Chisq Df Pr(>Chisq)    
## grotto_L   68.259  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mgr.a <- emmeans(mod.a_grotto, pairwise ~ grotto_L, type = "response")
mgr.a.df <- as.data.frame(mgr.a$emmeans)
mgr.a
## $emmeans
##  grotto_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE    0.18 1.46e-02 Inf     0.153      0.21
##   TRUE    0.00 1.97e-06 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.05e+08 9.92e+10 Inf    1   0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mod.a_luna_tranquility <- glm(
  cbind(api_pos, api_neg) ~ luna_tranquility_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_luna_tranquility)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ luna_tranquility_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             -2.6283     0.1637 -16.053  < 2e-16 ***
## luna_tranquility_LTRUE   1.7050     0.2079   8.199 2.42e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 140.65  on 4  degrees of freedom
## AIC: 163.03
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_luna_tranquility)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                    LR Chisq Df Pr(>Chisq)    
## luna_tranquility_L   73.132  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mlt.a <- emmeans(mod.a_luna_tranquility, pairwise ~ luna_tranquility_L, type = "response")
mlt.a.df <- as.data.frame(mlt.a$emmeans)
mlt.a
## $emmeans
##  luna_tranquility_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE              0.0673 0.0103 Inf    0.0498    0.0905
##   TRUE              0.2843 0.0261 Inf    0.2360    0.3380
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.182 0.0378 Inf    1  -8.199 <0.0001
## 
## Tests are performed on the log odds ratio scale
mod.a_previcur_flex <- glm(
  cbind(api_pos, api_neg) ~ previcur_flex_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_previcur_flex)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ previcur_flex_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)
## (Intercept)           -19.99     943.72  -0.021    0.983
## previcur_flex_LTRUE    18.47     943.72   0.020    0.984
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 145.52  on 4  degrees of freedom
## AIC: 167.91
## 
## Number of Fisher Scoring iterations: 14
Anova(mod.a_previcur_flex)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##                 LR Chisq Df Pr(>Chisq)    
## previcur_flex_L   68.259  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mpf.a <- emmeans(mod.a_previcur_flex, pairwise ~ previcur_flex_L, type = "response")
mpf.a.df <- as.data.frame(mpf.a$emmeans)
mpf.a
## $emmeans
##  previcur_flex_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE           0.00 1.97e-06 Inf     0.000      1.00
##   TRUE           0.18 1.46e-02 Inf     0.153      0.21
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   9.51e-09 8.98e-06 Inf    1  -0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mod.a_fontelis <- glm(
  cbind(api_pos, api_neg) ~ fontelis_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_fontelis)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ fontelis_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -2.6672     0.1542  -17.30   <2e-16 ***
## fontelis_LTRUE   2.2618     0.2112   10.71   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.783  on 5  degrees of freedom
## Residual deviance:  92.901  on 4  degrees of freedom
## AIC: 115.28
## 
## Number of Fisher Scoring iterations: 6
Anova(mod.a_fontelis)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##            LR Chisq Df Pr(>Chisq)    
## fontelis_L   120.88  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mfo.a <- emmeans(mod.a_fontelis, pairwise ~ fontelis_L, type = "response")
mfo.a.df <- as.data.frame(mfo.a$emmeans)
mfo.a
## $emmeans
##  fontelis_L   prob      SE  df asymp.LCL asymp.UCL
##  FALSE      0.0649 0.00936 Inf    0.0488    0.0859
##   TRUE      0.4000 0.03460 Inf    0.3344    0.4694
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.104 0.022 Inf    1 -10.710 <0.0001
## 
## Tests are performed on the log odds ratio scale
mod.a_quadristop <- glm(
  cbind(api_pos, api_neg) ~ quadristop_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_quadristop)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ quadristop_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -1.72574    0.09908 -17.418   <2e-16 ***
## quadristop_LTRUE -1.20812    0.46953  -2.573   0.0101 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 204.57  on 4  degrees of freedom
## AIC: 226.95
## 
## Number of Fisher Scoring iterations: 5
Anova(mod.a_quadristop)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##              LR Chisq Df Pr(>Chisq)   
## quadristop_L   9.2159  1   0.002399 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mqs.a <- emmeans(mod.a_quadristop, pairwise ~ quadristop_L, type = "response")
mqs.a.df <- as.data.frame(mqs.a$emmeans)
mqs.a
## $emmeans
##  quadristop_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE        0.1511 0.0127 Inf    0.1279     0.178
##   TRUE        0.0505 0.0220 Inf    0.0212     0.116
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       3.35 1.57 Inf    1   2.573  0.0101
## 
## Tests are performed on the log odds ratio scale
mod.a_milstop <- glm(
  cbind(api_pos, api_neg) ~ milstop_L,
  data = gh6,
  family = binomial("logit"))
summary(mod.a_milstop)
## 
## Call:
## glm(formula = cbind(api_pos, api_neg) ~ milstop_L, family = binomial("logit"), 
##     data = gh6)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -1.72574    0.09908 -17.418   <2e-16 ***
## milstop_LTRUE -1.20812    0.46953  -2.573   0.0101 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 213.78  on 5  degrees of freedom
## Residual deviance: 204.57  on 4  degrees of freedom
## AIC: 226.95
## 
## Number of Fisher Scoring iterations: 5
Anova(mod.a_milstop)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos, api_neg)
##           LR Chisq Df Pr(>Chisq)   
## milstop_L   9.2159  1   0.002399 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mms.a <- emmeans(mod.a_milstop, pairwise ~ milstop_L, type = "response")
mms.a.df <- as.data.frame(mms.a$emmeans)
mms.a
## $emmeans
##  milstop_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE     0.1511 0.0127 Inf    0.1279     0.178
##   TRUE     0.0505 0.0220 Inf    0.0212     0.116
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       3.35 1.57 Inf    1   2.573  0.0101
## 
## Tests are performed on the log odds ratio scale
ma.a 
## $emmeans
##  azaguard_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE      0.150 0.0206 Inf     0.114     0.195
##   TRUE      0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mb22.a 
## $emmeans
##  botanigard_22wp_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.150 0.0206 Inf     0.114     0.195
##   TRUE             0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mbe.a 
## $emmeans
##  botanigard_es_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.0904 0.0128 Inf    0.0681     0.119
##   TRUE           0.2025 0.0202 Inf    0.1658     0.245
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.391 0.0783 Inf    1  -4.687 <0.0001
## 
## Tests are performed on the log odds ratio scale
mcp.a 
## $emmeans
##  captiva_prime_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE           0.150 0.0206 Inf     0.114     0.195
##   TRUE           0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mnf.a 
## $emmeans
##  nofly_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.150 0.0206 Inf     0.114     0.195
##   TRUE   0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mvc.a 
## $emmeans
##  venerate_cg_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE         0.25 1.94e-02 Inf     0.214      0.29
##   TRUE         0.00 5.16e-07 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.17e+09 2.13e+12 Inf    1   0.012  0.9908
## 
## Tests are performed on the log odds ratio scale
mmp.a 
## $emmeans
##  m_pede_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE    0.150 0.0206 Inf     0.114     0.195
##   TRUE    0.135 0.0140 Inf     0.110     0.165
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.13 0.228 Inf    1   0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mrs.a 
## $emmeans
##  rootshield_plus_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE             0.144 0.0133 Inf    0.1199     0.172
##   TRUE             0.126 0.0235 Inf    0.0863     0.179
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE       1.17 0.281 Inf    1   0.661  0.5084
## 
## Tests are performed on the log odds ratio scale
mlk.a 
## $emmeans
##  lalstop_k61_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE         0.123 0.0125 Inf     0.100     0.149
##   TRUE         0.199 0.0282 Inf     0.149     0.260
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.564 0.119 Inf    1  -2.714  0.0066
## 
## Tests are performed on the log odds ratio scale
mbf.a 
## $emmeans
##  beleaf_50sg_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE         0.18 1.46e-02 Inf     0.153      0.21
##   TRUE         0.00 1.97e-06 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.05e+08 9.92e+10 Inf    1   0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mcg.a 
## $emmeans
##  coragen_L   prob      SE  df asymp.LCL asymp.UCL
##  FALSE     0.4000 0.03460 Inf    0.3344    0.4694
##   TRUE     0.0649 0.00936 Inf    0.0488    0.0859
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE        9.6 2.03 Inf    1  10.710 <0.0001
## 
## Tests are performed on the log odds ratio scale
mes.a 
## $emmeans
##  entrust_sc_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE        0.18 1.46e-02 Inf     0.153      0.21
##   TRUE        0.00 1.97e-06 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.05e+08 9.92e+10 Inf    1   0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mpy.a 
## $emmeans
##  pylon_L  prob     SE  df asymp.LCL asymp.UCL
##  FALSE   0.135 0.0140 Inf     0.110     0.165
##   TRUE   0.150 0.0206 Inf     0.114     0.195
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.884 0.178 Inf    1  -0.614  0.5394
## 
## Tests are performed on the log odds ratio scale
mgr.a 
## $emmeans
##  grotto_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE    0.18 1.46e-02 Inf     0.153      0.21
##   TRUE    0.00 1.97e-06 Inf     0.000      1.00
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   1.05e+08 9.92e+10 Inf    1   0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mlt.a  
## $emmeans
##  luna_tranquility_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE              0.0673 0.0103 Inf    0.0498    0.0905
##   TRUE              0.2843 0.0261 Inf    0.2360    0.3380
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio     SE  df null z.ratio p.value
##  FALSE / TRUE      0.182 0.0378 Inf    1  -8.199 <0.0001
## 
## Tests are performed on the log odds ratio scale
mpf.a 
## $emmeans
##  previcur_flex_L prob       SE  df asymp.LCL asymp.UCL
##  FALSE           0.00 1.97e-06 Inf     0.000      1.00
##   TRUE           0.18 1.46e-02 Inf     0.153      0.21
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio       SE  df null z.ratio p.value
##  FALSE / TRUE   9.51e-09 8.98e-06 Inf    1  -0.020  0.9844
## 
## Tests are performed on the log odds ratio scale
mfo.a 
## $emmeans
##  fontelis_L   prob      SE  df asymp.LCL asymp.UCL
##  FALSE      0.0649 0.00936 Inf    0.0488    0.0859
##   TRUE      0.4000 0.03460 Inf    0.3344    0.4694
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio    SE  df null z.ratio p.value
##  FALSE / TRUE      0.104 0.022 Inf    1 -10.710 <0.0001
## 
## Tests are performed on the log odds ratio scale
mqs.a 
## $emmeans
##  quadristop_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE        0.1511 0.0127 Inf    0.1279     0.178
##   TRUE        0.0505 0.0220 Inf    0.0212     0.116
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       3.35 1.57 Inf    1   2.573  0.0101
## 
## Tests are performed on the log odds ratio scale
mms.a 
## $emmeans
##  milstop_L   prob     SE  df asymp.LCL asymp.UCL
##  FALSE     0.1511 0.0127 Inf    0.1279     0.178
##   TRUE     0.0505 0.0220 Inf    0.0212     0.116
## 
## Confidence level used: 0.95 
## Intervals are back-transformed from the logit scale 
## 
## $contrasts
##  contrast     odds.ratio   SE  df null z.ratio p.value
##  FALSE / TRUE       3.35 1.57 Inf    1   2.573  0.0101
## 
## Tests are performed on the log odds ratio scale

summary table

mod.a.api <- list(
azaguard = mod.a_azaguard,
botanigard_22wp = mod.a_botanigard_22wp,
botanigard_es = mod.a_botanigard_es,
captiva_prime = mod.a_captiva_prime,
nofly = mod.a_nofly,
venerate_cg = mod.a_venerate_cg,
m_pede = mod.a_m_pede,
rootshield_plus = mod.a_rootshield_plus,
lalstop_k61 = mod.a_lalstop_k61,
beleaf_50sg = mod.a_beleaf_50sg,
coragen = mod.a_coragen,
entrust_sc = mod.a_entrust_sc,
pylon = mod.a_pylon,
grotto = mod.a_grotto,
luna_tranquility = mod.a_luna_tranquility,
previcur_flex = mod.a_previcur_flex,
fontelis = mod.a_fontelis,
quadristop = mod.a_quadristop,
milstop = mod.a_milstop
)


summary_table.api <- do.call(rbind, lapply(names(mod.a.api), function(name){

  m <- mod.a.api[[name]]
  s <- summary(m)

  coef_row <- s$coefficients[2, ]
  lr <- Anova(m)$`LR Chisq`[1]
  LRT <- Anova(m)$'Pr(>Chisq)'[1]

  data.frame(
    Pesticide = name,
    Estimate = coef_row["Estimate"],
    SE = coef_row["Std. Error"],
    z = coef_row["z value"],
    p = coef_row["Pr(>|z|)"],
    LR_ChiSq = lr,
    LRT = LRT,
    AIC = AIC(m),
    Residual_Deviance = m$deviance
  )
}))


summary_table.api$Estimate <- signif(summary_table.api$Estimate,3)
summary_table.api$SE <- signif(summary_table.api$SE,3)
summary_table.api$z <- round(summary_table.api$z,2)
summary_table.api$p <- signif(summary_table.api$p,3)
summary_table.api$LR_ChiSq <- round(summary_table.api$LR_ChiSq,2)
summary_table.api$AIC <- round(summary_table.api$AIC,2)
summary_table.api$Residual_Deviance <- round(summary_table.api$Residual_Deviance,2)
summary_table.api$LRT <- signif(summary_table.api$LRT,2)

summary_table.api
##                   Pesticide Estimate       SE      z        p LR_ChiSq     LRT
## Estimate           azaguard   -0.124    0.201  -0.61 5.39e-01     0.37 5.4e-01
## Estimate1   botanigard_22wp   -0.124    0.201  -0.61 5.39e-01     0.37 5.4e-01
## Estimate2     botanigard_es    0.939    0.200   4.69 2.77e-06    22.96 1.7e-06
## Estimate3     captiva_prime   -0.124    0.201  -0.61 5.39e-01     0.37 5.4e-01
## Estimate4             nofly   -0.124    0.201  -0.61 5.39e-01     0.37 5.4e-01
## Estimate5       venerate_cg  -20.900 1810.000  -0.01 9.91e-01   160.86 7.4e-37
## Estimate6            m_pede   -0.124    0.201  -0.61 5.39e-01     0.37 5.4e-01
## Estimate7   rootshield_plus   -0.158    0.240  -0.66 5.08e-01     0.45 5.0e-01
## Estimate8       lalstop_k61    0.573    0.211   2.71 6.64e-03     7.00 8.1e-03
## Estimate9       beleaf_50sg  -18.500  944.000  -0.02 9.84e-01    68.26 1.4e-16
## Estimate10          coragen   -2.260    0.211 -10.71 9.15e-27   120.88 4.1e-28
## Estimate11       entrust_sc  -18.500  944.000  -0.02 9.84e-01    68.26 1.4e-16
## Estimate12            pylon    0.124    0.201   0.61 5.39e-01     0.37 5.4e-01
## Estimate13           grotto  -18.500  944.000  -0.02 9.84e-01    68.26 1.4e-16
## Estimate14 luna_tranquility    1.700    0.208   8.20 2.42e-16    73.13 1.2e-17
## Estimate15    previcur_flex   18.500  944.000   0.02 9.84e-01    68.26 1.4e-16
## Estimate16         fontelis    2.260    0.211  10.71 9.15e-27   120.88 4.1e-28
## Estimate17       quadristop   -1.210    0.470  -2.57 1.01e-02     9.22 2.4e-03
## Estimate18          milstop   -1.210    0.470  -2.57 1.01e-02     9.22 2.4e-03
##               AIC Residual_Deviance
## Estimate   235.79            213.41
## Estimate1  235.79            213.41
## Estimate2  213.21            190.83
## Estimate3  235.79            213.41
## Estimate4  235.79            213.41
## Estimate5   75.31             52.93
## Estimate6  235.79            213.41
## Estimate7  235.72            213.34
## Estimate8  229.16            206.78
## Estimate9  167.91            145.52
## Estimate10 115.28             92.90
## Estimate11 167.91            145.52
## Estimate12 235.79            213.41
## Estimate13 167.91            145.52
## Estimate14 163.03            140.65
## Estimate15 167.91            145.52
## Estimate16 115.28             92.90
## Estimate17 226.95            204.57
## Estimate18 226.95            204.57
asdf <- as.data.frame(summary_table.api)

plots

plots <- lapply(1:nrow(chem_info), function(i){


chem_type <- chem_info$type[i]
chem_mode <- chem_info$mode[i]
chem_class <- chem_info$class[i]
var <- chem_info$pesticide[i]
var2 <- gsub("_L$", "", chem_info$pesticide[i])  # remove _L at end


stats_row <- summary_table.api[summary_table.api$Pesticide == var2, ]

annot_text <- paste0(
    "LRT χ² = ", round(stats_row$LR_ChiSq, 2), 
    ", p = ", signif(stats_row$LRT, 3))

ggplot(gh6, aes_string(x = var, y = "api_prop")) +
  geom_boxplot(fill = chem_colors[chem_class],
               alpha = 0.6,
               width = 0.5,
               outlier.shape = NA) +
  geom_jitter(width = 0.1, size = 3, alpha = 0.8) +
  labs(
    title = gsub("_L","",var),
    subtitle = paste(chem_type, "-", chem_mode),
    x = "",
    y = "Probability of *Apicystis* detection"
  ) +
  scale_x_discrete(labels = c("FALSE"="Not applied","TRUE"="Applied")) +
  theme_classic(base_size = 16) +
   theme(axis.title.y = ggtext::element_markdown()) + 
  annotate(
      "text",
      x = 2, y = 1.05, # top-right
      label = annot_text,
      hjust = 1, vjust = 1, size = 4
    ) +
  coord_cartesian(ylim = c(0, 1))
})


wrap_plots(plots, ncol = 4)

anther bruising vs. specific chemicals presence absence

anth_chem_m1 <- glm(logbruise ~ azaguard_L, data = gh6)
Anova(anth_chem_m1)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##            LR Chisq Df Pr(>Chisq)
## azaguard_L  0.65877  1      0.417
summary(anth_chem_m1)
## 
## Call:
## glm(formula = logbruise ~ azaguard_L, data = gh6)
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.82271    0.03698  22.247 2.42e-05 ***
## azaguard_LTRUE -0.04245    0.05230  -0.812    0.463    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.00410272)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016411  on 4  degrees of freedom
## AIC: -12.382
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m2 <- glm(logbruise ~ botanigard_22wp_L, data = gh6)
Anova(anth_chem_m2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                   LR Chisq Df Pr(>Chisq)
## botanigard_22wp_L  0.65877  1      0.417
summary(anth_chem_m2)
## 
## Call:
## glm(formula = logbruise ~ botanigard_22wp_L, data = gh6)
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            0.82271    0.03698  22.247 2.42e-05 ***
## botanigard_22wp_LTRUE -0.04245    0.05230  -0.812    0.463    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.00410272)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016411  on 4  degrees of freedom
## AIC: -12.382
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m3 <- glm(logbruise ~ botanigard_es_L, data = gh6)
Anova(anth_chem_m3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)
## botanigard_es_L  0.12131  1     0.7276
summary(anth_chem_m3)
## 
## Call:
## glm(formula = logbruise ~ botanigard_es_L, data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.79464    0.03405  23.337    2e-05 ***
## botanigard_es_LTRUE  0.02054    0.05898   0.348    0.745    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004637755)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.018551  on 4  degrees of freedom
## AIC: -11.647
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m4 <- glm(logbruise ~ captiva_prime_L, data = gh6)
Anova(anth_chem_m4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)
## captiva_prime_L  0.65877  1      0.417
summary(anth_chem_m4)
## 
## Call:
## glm(formula = logbruise ~ captiva_prime_L, data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.82271    0.03698  22.247 2.42e-05 ***
## captiva_prime_LTRUE -0.04245    0.05230  -0.812    0.463    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.00410272)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016411  on 4  degrees of freedom
## AIC: -12.382
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m5 <- glm(logbruise ~ nofly_L, data = gh6)
Anova(anth_chem_m5)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##         LR Chisq Df Pr(>Chisq)
## nofly_L  0.65877  1      0.417
summary(anth_chem_m5)
## 
## Call:
## glm(formula = logbruise ~ nofly_L, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.82271    0.03698  22.247 2.42e-05 ***
## nofly_LTRUE -0.04245    0.05230  -0.812    0.463    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.00410272)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016411  on 4  degrees of freedom
## AIC: -12.382
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m6 <- glm(logbruise ~ venerate_cg_L, data = gh6)
Anova(anth_chem_m6)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##               LR Chisq Df Pr(>Chisq)   
## venerate_cg_L   6.6774  1   0.009765 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(anth_chem_m6)
## 
## Call:
## glm(formula = logbruise ~ venerate_cg_L, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        0.83305    0.02115  39.379 2.48e-06 ***
## venerate_cg_LTRUE -0.09468    0.03664  -2.584   0.0611 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.001790108)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0071604  on 4  degrees of freedom
## AIC: -17.358
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m7 <- glm(logbruise ~ m_pede_L, data = gh6)
Anova(anth_chem_m7)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##          LR Chisq Df Pr(>Chisq)
## m_pede_L  0.65877  1      0.417
summary(anth_chem_m7)
## 
## Call:
## glm(formula = logbruise ~ m_pede_L, data = gh6)
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.82271    0.03698  22.247 2.42e-05 ***
## m_pede_LTRUE -0.04245    0.05230  -0.812    0.463    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.00410272)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016411  on 4  degrees of freedom
## AIC: -12.382
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m8 <- glm(logbruise ~ rootshield_plus_L, data = gh6)
Anova(anth_chem_m8)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                    LR Chisq Df Pr(>Chisq)
## rootshield_plus_L 0.0039631  1     0.9498
summary(anth_chem_m8)
## 
## Call:
## glm(formula = logbruise ~ rootshield_plus_L, data = gh6)
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           0.800232   0.034546  23.164 2.06e-05 ***
## rootshield_plus_LTRUE 0.003767   0.059835   0.063    0.953    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004773677)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.019095  on 4  degrees of freedom
## AIC: -11.473
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m9 <- glm(logbruise ~ lalstop_k61_L, data = gh6)
Anova(anth_chem_m9)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##               LR Chisq Df Pr(>Chisq)
## lalstop_k61_L   2.1541  1     0.1422
summary(anth_chem_m9)
## 
## Call:
## glm(formula = logbruise ~ lalstop_k61_L, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        0.77788    0.02787  27.916  9.8e-06 ***
## lalstop_k61_LTRUE  0.07084    0.04826   1.468    0.216    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003105838)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.012423  on 4  degrees of freedom
## AIC: -14.052
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m10 <- glm(logbruise ~ beleaf_50sg_L, data = gh6)
Anova(anth_chem_m10)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##               LR Chisq Df Pr(>Chisq)  
## beleaf_50sg_L   4.3437  1    0.03715 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(anth_chem_m10)
## 
## Call:
## glm(formula = logbruise ~ beleaf_50sg_L, data = gh6)
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        0.81970    0.02140  38.295 2.78e-06 ***
## beleaf_50sg_LTRUE -0.10927    0.05243  -2.084    0.106    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002290794)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0091632  on 4  degrees of freedom
## AIC: -15.879
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m11 <- glm(logbruise ~ coragen_L, data = gh6)
Anova(anth_chem_m11)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##           LR Chisq Df Pr(>Chisq)
## coragen_L   1.3037  1     0.2535
summary(anth_chem_m11)
## 
## Call:
## glm(formula = logbruise ~ coragen_L, data = gh6)
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    0.86406    0.06003  14.393 0.000135 ***
## coragen_LTRUE -0.07509    0.06576  -1.142 0.317246    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003603822)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.014415  on 4  degrees of freedom
## AIC: -13.16
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m12 <- glm(logbruise ~ entrust_sc_L, data = gh6)
Anova(anth_chem_m12)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##              LR Chisq Df Pr(>Chisq)  
## entrust_sc_L   4.3437  1    0.03715 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(anth_chem_m12)
## 
## Call:
## glm(formula = logbruise ~ entrust_sc_L, data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       0.81970    0.02140  38.295 2.78e-06 ***
## entrust_sc_LTRUE -0.10927    0.05243  -2.084    0.106    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002290794)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0091632  on 4  degrees of freedom
## AIC: -15.879
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m13 <- glm(logbruise ~ pylon_L, data = gh6)
Anova(anth_chem_m13)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##         LR Chisq Df Pr(>Chisq)
## pylon_L  0.65877  1      0.417
summary(anth_chem_m13)
## 
## Call:
## glm(formula = logbruise ~ pylon_L, data = gh6)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.78026    0.03698  21.099 2.98e-05 ***
## pylon_LTRUE  0.04245    0.05230   0.812    0.463    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.00410272)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.016411  on 4  degrees of freedom
## AIC: -12.382
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m14 <- glm(logbruise ~ grotto_L, data = gh6)
Anova(anth_chem_m14)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##          LR Chisq Df Pr(>Chisq)  
## grotto_L   4.3437  1    0.03715 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(anth_chem_m14)
## 
## Call:
## glm(formula = logbruise ~ grotto_L, data = gh6)
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.81970    0.02140  38.295 2.78e-06 ***
## grotto_LTRUE -0.10927    0.05243  -2.084    0.106    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002290794)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0091632  on 4  degrees of freedom
## AIC: -15.879
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m15 <- glm(logbruise ~ luna_tranquility_L, data = gh6)
Anova(anth_chem_m15)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                    LR Chisq Df Pr(>Chisq)
## luna_tranquility_L  0.16524  1     0.6844
summary(anth_chem_m15)
## 
## Call:
## glm(formula = logbruise ~ luna_tranquility_L, data = gh6)
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             0.79354    0.03387  23.429 1.97e-05 ***
## luna_tranquility_LTRUE  0.02385    0.05867   0.406    0.705    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004588841)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.018355  on 4  degrees of freedom
## AIC: -11.71
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m16 <- glm(logbruise ~ previcur_flex_L, data = gh6)
Anova(anth_chem_m16)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##                 LR Chisq Df Pr(>Chisq)  
## previcur_flex_L   4.3437  1    0.03715 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(anth_chem_m16)
## 
## Call:
## glm(formula = logbruise ~ previcur_flex_L, data = gh6)
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.71043    0.04786  14.843  0.00012 ***
## previcur_flex_LTRUE  0.10927    0.05243   2.084  0.10553    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.002290794)
## 
##     Null deviance: 0.0191136  on 5  degrees of freedom
## Residual deviance: 0.0091632  on 4  degrees of freedom
## AIC: -15.879
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m17 <- glm(logbruise ~ fontelis_L, data = gh6)
Anova(anth_chem_m17)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##            LR Chisq Df Pr(>Chisq)
## fontelis_L   1.3037  1     0.2535
summary(anth_chem_m17)
## 
## Call:
## glm(formula = logbruise ~ fontelis_L, data = gh6)
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.78897    0.02685  29.388 7.98e-06 ***
## fontelis_LTRUE  0.07509    0.06576   1.142    0.317    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.003603822)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.014415  on 4  degrees of freedom
## AIC: -13.16
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m18 <- glm(logbruise ~ quadristop_L, data = gh6)
Anova(anth_chem_m18)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##              LR Chisq Df Pr(>Chisq)
## quadristop_L  0.25289  1      0.615
summary(anth_chem_m18)
## 
## Call:
## glm(formula = logbruise ~ quadristop_L, data = gh6)
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       0.80764    0.02998  26.939 1.13e-05 ***
## quadristop_LTRUE -0.03693    0.07344  -0.503    0.641    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004494262)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.017977  on 4  degrees of freedom
## AIC: -11.835
## 
## Number of Fisher Scoring iterations: 2
anth_chem_m19 <- glm(logbruise ~ milstop_L, data = gh6)
Anova(anth_chem_m19)
## Analysis of Deviance Table (Type II tests)
## 
## Response: logbruise
##           LR Chisq Df Pr(>Chisq)
## milstop_L  0.25289  1      0.615
summary(anth_chem_m19)
## 
## Call:
## glm(formula = logbruise ~ milstop_L, data = gh6)
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    0.80764    0.02998  26.939 1.13e-05 ***
## milstop_LTRUE -0.03693    0.07344  -0.503    0.641    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.004494262)
## 
##     Null deviance: 0.019114  on 5  degrees of freedom
## Residual deviance: 0.017977  on 4  degrees of freedom
## AIC: -11.835
## 
## Number of Fisher Scoring iterations: 2

summary table

anth_models <- list(
  azaguard_L = anth_chem_m1,
  botanigard_22wp_L = anth_chem_m2,
  botanigard_es_L = anth_chem_m3,
  captiva_prime_L = anth_chem_m4,
  nofly_L = anth_chem_m5,
  venerate_cg_L = anth_chem_m6,
  m_pede_L = anth_chem_m7,
  rootshield_plus_L = anth_chem_m8,
  lalstop_k61_L = anth_chem_m9,
  beleaf_50sg_L = anth_chem_m10,
  coragen_L = anth_chem_m11,
  entrust_sc_L = anth_chem_m12,
  pylon_L = anth_chem_m13,
  grotto_L = anth_chem_m14,
  luna_tranquility_L = anth_chem_m15,
  previcur_flex_L = anth_chem_m16,
  fontelis_L = anth_chem_m17,
  quadristop_L = anth_chem_m18,
  milstop_L = anth_chem_m19
)

summary_table.anth <- do.call(rbind, lapply(names(anth_models), function(name){

  m <- anth_models[[name]]
  s <- summary(m)

  coef_row <- s$coefficients[2, ]

  lr <- Anova(m)$`LR Chisq`[1]
  LRT <- Anova(m)$`Pr(>Chisq)`[1]

  data.frame(
    Predictor = name,
    Estimate = coef_row["Estimate"],
    SE = coef_row["Std. Error"],
    z = coef_row["t value"],
    p = coef_row["Pr(>|t|)"],
    LR_ChiSq = lr,
    AIC = AIC(m),
    LRT = LRT,
    Residual_Deviance = m$deviance
  )

}))

summary_table.anth$SE <- signif(summary_table.anth$SE, 3)
summary_table.anth$z <- round(summary_table.anth$z, 2)
summary_table.anth$p <- signif(summary_table.anth$p, 3)
summary_table.anth$LR_ChiSq <- round(summary_table.anth$LR_ChiSq, 2)
summary_table.anth$AIC <- round(summary_table.anth$AIC, 2)
summary_table.anth$Residual_Deviance <- round(summary_table.anth$Residual_Deviance, 2)
summary_table.anth$LRT <- signif(summary_table.anth$LRT, 3)

anth_table <- as.data.frame(summary_table.anth)
anth_table
##                     Predictor    Estimate     SE     z      p LR_ChiSq    AIC
## Estimate           azaguard_L -0.04244796 0.0523 -0.81 0.4630     0.66 -12.38
## Estimate1   botanigard_22wp_L -0.04244796 0.0523 -0.81 0.4630     0.66 -12.38
## Estimate2     botanigard_es_L  0.02054152 0.0590  0.35 0.7450     0.12 -11.65
## Estimate3     captiva_prime_L -0.04244796 0.0523 -0.81 0.4630     0.66 -12.38
## Estimate4             nofly_L -0.04244796 0.0523 -0.81 0.4630     0.66 -12.38
## Estimate5       venerate_cg_L -0.09468312 0.0366 -2.58 0.0611     6.68 -17.36
## Estimate6            m_pede_L -0.04244796 0.0523 -0.81 0.4630     0.66 -12.38
## Estimate7   rootshield_plus_L  0.00376682 0.0598  0.06 0.9530     0.00 -11.47
## Estimate8       lalstop_k61_L  0.07083577 0.0483  1.47 0.2160     2.15 -14.05
## Estimate9       beleaf_50sg_L -0.10927277 0.0524 -2.08 0.1060     4.34 -15.88
## Estimate10          coragen_L -0.07508666 0.0658 -1.14 0.3170     1.30 -13.16
## Estimate11       entrust_sc_L -0.10927277 0.0524 -2.08 0.1060     4.34 -15.88
## Estimate12            pylon_L  0.04244796 0.0523  0.81 0.4630     0.66 -12.38
## Estimate13           grotto_L -0.10927277 0.0524 -2.08 0.1060     4.34 -15.88
## Estimate14 luna_tranquility_L  0.02384735 0.0587  0.41 0.7050     0.17 -11.71
## Estimate15    previcur_flex_L  0.10927277 0.0524  2.08 0.1060     4.34 -15.88
## Estimate16         fontelis_L  0.07508666 0.0658  1.14 0.3170     1.30 -13.16
## Estimate17       quadristop_L -0.03693090 0.0734 -0.50 0.6410     0.25 -11.84
## Estimate18          milstop_L -0.03693090 0.0734 -0.50 0.6410     0.25 -11.84
##                LRT Residual_Deviance
## Estimate   0.41700              0.02
## Estimate1  0.41700              0.02
## Estimate2  0.72800              0.02
## Estimate3  0.41700              0.02
## Estimate4  0.41700              0.02
## Estimate5  0.00976              0.01
## Estimate6  0.41700              0.02
## Estimate7  0.95000              0.02
## Estimate8  0.14200              0.01
## Estimate9  0.03710              0.01
## Estimate10 0.25400              0.01
## Estimate11 0.03710              0.01
## Estimate12 0.41700              0.02
## Estimate13 0.03710              0.01
## Estimate14 0.68400              0.02
## Estimate15 0.03710              0.01
## Estimate16 0.25400              0.01
## Estimate17 0.61500              0.02
## Estimate18 0.61500              0.02

plot of anther bruise vs pesticides applied/not applied

plots <- lapply(1:nrow(chem_info), function(i){


chem_type <- chem_info$type[i]
chem_mode <- chem_info$mode[i]
chem_class <- chem_info$class[i]
var <- chem_info$pesticide[i]
var2 <- gsub("_L$", "", chem_info$pesticide[i])  # remove _L at end


ggplot(gh6, aes_string(x = var, y = "average_bruise")) +
  geom_boxplot(fill = chem_colors[chem_class],
               alpha = 0.6,
               width = 0.5,
               outlier.shape = NA) +
  geom_jitter(width = 0.1, size = 3, alpha = 0.8) +
  labs(
    title = gsub("_L","",var),
    subtitle = paste(chem_type, "-", chem_mode),
    x = "",
    y = "Average Anther Score"
  ) +
  scale_x_discrete(labels = c("FALSE"="Not applied","TRUE"="Applied")) +
  theme_classic(base_size = 16) 
})


wrap_plots(plots, ncol = 4)

LS0tDQp0aXRsZTogUGVzdGljaWRlIGFwcGxpY2F0aW9uIGluIGEgdG9tYXRvIGdyZWVuaG91c2UgcHJlZGljdHMgYnVtYmxlIGJlZSBwb2xsaW5hdGlvbg0KICBhbmQgcGF0aG9nZW4gaW5mZWN0aW9uDQphdXRob3I6ICJFbWlseSBSdW5uaW9uIg0KZGF0ZTogIkp1bmUgMjAyNiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGpvdXJuYWwNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KDQpgYGB7ciBsb2FkIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkodmlyaWRpc0xpdGUpDQpsaWJyYXJ5KHN0YXRzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KGVtbWVhbnMpDQpsaWJyYXJ5KE1BU1MpDQpsaWJyYXJ5KGxtZTQpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeSh2aXJpZGlzTGl0ZSkNCmxpYnJhcnkoc3RhdHMpDQpsaWJyYXJ5KERIQVJNYSkNCmxpYnJhcnkoZ2dwYXR0ZXJuKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShibG1lY28pDQoNCmxpYnJhcnkoY293cGxvdCkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShhZ3JpY29sYWUpIA0KbGlicmFyeShnZ3B1YnIpDQpsaWJyYXJ5KGdsdWUpDQpsaWJyYXJ5KG11bHRjb21wKQ0KbGlicmFyeShtdWx0Y29tcFZpZXcpDQpsaWJyYXJ5KGdsbW1UTUIpDQpsaWJyYXJ5KHJzdGF0aXgpDQpsaWJyYXJ5KGZpdGRpc3RycGx1cykNCmxpYnJhcnkobG9nc3BsaW5lKQ0KbGlicmFyeShHR2FsbHkpDQpsaWJyYXJ5KHBhdGNod29yaykNCmxpYnJhcnkoZGF0YS50YWJsZSkNCmxpYnJhcnkoZ2d0ZXh0KQ0KbGlicmFyeShnZ2VmZmVjdHMpDQoNCmBgYA0KDQpgYGB7cn0NCmdoNiA8LSByZWFkX2NzdigiZ2g2LmNzdiIsIGNvbF90eXBlcyA9IGNvbHMoZ2ggPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAiMiIsICIzIiwgIjQiLCAiNSIsICI2IikpLCB5ZWFyID0gY29sX2ZhY3RvcihsZXZlbHMgPSBjKCIyMDIyIiwgDQogICAgIjIwMjQiKSksIHNvdXJjZSA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiS29wcGVydCIsIA0KICAgICJCaW9iZXN0IikpKSkNCmBgYA0KDQojIENyaXRoaWRpYQ0KDQojIyBDcml0aGlkaWEgcHJvYmFiaWxpdHkgcGVyIGdyZWVuaG91c2UgDQoNCmBgYHtyfQ0KY3JpdGhfcHJvYiA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IA0KZ2gsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KDQpBbm92YShjcml0aF9wcm9iKQ0Kc3VtbWFyeShjcml0aF9wcm9iKQ0KDQpjcjEgPC0gZW1tZWFucyhjcml0aF9wcm9iLCBwYWlyd2lzZSB+IGdoLCB0eXBlID0gInJlc3BvbnNlIikNCmNyMQ0KDQpjcjEuZGYgPC0gYXMuZGF0YS5mcmFtZShjcjEkZW1tZWFucykNCg0KIyBGYW50YXN0aWMgdGhpcyBtYXRjaGVzIHdoYXQgSSBjYWxjdWxhdGVkIG1hbnVhbGx5IHNvIHRoaXMgaXMgYSB0cnVzdHdvcnRoeSBtZXRob2Qgb2YgY29tcGFyaW5nIHByb2JhYmlsaXRpZXMgDQoNCmBgYA0KDQojIyBDcml0aGlkaWEgdnMuIHRvdGFsIHBlc3RpY2lkZXMgYXBwbGllZCAobWwpDQoNCmBgYHtyfQ0KbW9kXzFhIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gdG90YWxfY2hlbWljYWwsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KQW5vdmEobW9kXzFhKQ0Kc3VtbWFyeShtb2RfMWEpDQoNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTgsIGRwaT02MDB9DQoNCmdncGxvdChnaDYsIGFlcyh4ID0gdG90YWxfY2hlbWljYWwsIHkgPSBjcml0aF9wcm9wKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAib3JjaGlkNCIpICsNCmdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLA0KICAgICAgICAgICAgICBzZSA9IFRSVUUsDQogICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwNCiAgICAgICAgICAgICAgc2l6ZSA9IDEuMikgKw0KICB0aGVtZV9jb3dwbG90KCkgKw0KICBsYWJzKA0KICAgIHggPSAiVG90YWwgUGVzdGljaWRlcyBBcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiUHJvYmFiaWxpdHkgb2YgKkNyaXRoaWRpYSogRGV0ZWN0aW9uIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueSA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSA0NTAwMCwNCiAgICB5ID0gMSwNCiAgICBsYWJlbCA9ICJQIDwgMC4wMDEsIM+HwrIgPSA4Ny4wNCIsDQogICAgc2l6ZSA9IDYNCiAgKSANCg0KYGBgDQoNCiMjIENyaXRoaWRpYSB2cy4gaW5zZWN0aWNpZGVzIA0KDQpgYGB7cn0NCm1vZF8yIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gDQp0b3RhbF9pbnNlY3RpY2lkZSwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpBbm92YShtb2RfMikNCnN1bW1hcnkobW9kXzIpDQoNCg0KYGBgDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX2luc2VjdGljaWRlLCB5ID0gY3JpdGhfcHJvcCkpICsNCmdlb21fcG9pbnQoc2l6ZSA9IDUsIHN0cm9rZSA9IDAuOCwgYWxwaGEgPSAwLjgsIGNvbG9yID0gIm9yY2hpZDQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygzMDAwLCAyMDAwMDApKSArDQogIGxhYnMoDQogICAgeCA9ICJUb3RhbCBJbnNlY3RpY2lkZXMgQXBwbGllZCAobWwpIiwNCiAgICB5ID0gIlByb2JhYmlsaXR5IG9mICpDcml0aGlkaWEqIERldGVjdGlvbiINCiAgKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0LCBmYWNlID0gImJvbGQiKSkgKw0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCkpICsNCiAgICB0aGVtZShheGlzLnRpdGxlLnkgPSBnZ3RleHQ6OmVsZW1lbnRfbWFya2Rvd24oKSkgKyANCiAgYW5ub3RhdGUoDQogICAgZ2VvbSA9ICJ0ZXh0IiwNCiAgICB4ID0gMTUwMDAsDQogICAgeSA9IDEsDQogICAgbGFiZWwgPSAiUCA8IDAuMDAxIiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KIyMgQ3JpdGhpZGlhIHZzLiBmdW5naWNpZGVzIA0KDQpgYGB7cn0NCm1vZF8zIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gDQp0b3RhbF9mdW5naWNpZGUsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KDQpBbm92YShtb2RfMykNCnN1bW1hcnkobW9kXzMpDQoNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTgsIGRwaT02MDB9DQoNCmdncGxvdChnaDYsIGFlcyh4ID0gdG90YWxfZnVuZ2ljaWRlLCB5ID0gY3JpdGhfcHJvcCkpICsNCmdlb21fcG9pbnQoc2l6ZSA9IDUsIHN0cm9rZSA9IDAuOCwgYWxwaGEgPSAwLjgsIGNvbG9yID0gIm9yY2hpZDQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygxMDAwMCwgMTAwMDAwKSkgKw0KICBsYWJzKA0KICAgIHggPSAiVG90YWwgRnVuZ2ljaWRlcyBBcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiUHJvYmFiaWxpdHkgb2YgKkNyaXRoaWRpYSogRGV0ZWN0aW9uIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueSA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSAxNTAwMCwNCiAgICB5ID0gMSwNCiAgICBsYWJlbCA9ICJQIDwgMC4wMDEiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBDcml0aGlkaWEgdnMuIHN5bnRoZXRpY3MgDQoNCmBgYHtyfQ0KbW9kXzQgPC0gZ2xtKA0KICBjYmluZChjcml0aF9wb3MsIGNyaXRoX25lZykgfiANCnRvdGFsX3N5bnRoZXRpYywNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQoNCkFub3ZhKG1vZF80KQ0Kc3VtbWFyeShtb2RfNCkNCg0KYGBgDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX3N5bnRoZXRpYywgeSA9IGNyaXRoX3Byb3ApKSArDQpnZW9tX3BvaW50KHNpemUgPSA1LCBzdHJva2UgPSAwLjgsIGFscGhhID0gMC44LCBjb2xvciA9ICJvcmNoaWQ0IikgKw0KZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsDQogICAgICAgICAgICAgIHNlID0gVFJVRSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICBzaXplID0gMS4yKSArDQogIHRoZW1lX2Nvd3Bsb3QoKSArDQogICAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMTMwMDAsIDU1MDAwKSkgKw0KICBsYWJzKA0KICAgIHggPSAiVG90YWwgU3ludGhldGljIFBlc3RpY2RlcyBBcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiUHJvYmFiaWxpdHkgb2YgKkNyaXRoaWRpYSogRGV0ZWN0aW9uIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueSA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSAxNTAwMCwNCiAgICB5ID0gMSwNCiAgICBsYWJlbCA9ICJQIDwgMC4wMDEiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBDcml0aGlkaWEgdnMuIGJpb2xvZ2ljYWxzIA0KDQpgYGB7cn0NCm1vZF81IDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gDQp0b3RhbF9iaW9sb2dpY2FsLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCg0KQW5vdmEobW9kXzUpDQpzdW1tYXJ5KG1vZF81KQ0KDQpgYGANCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX2Jpb2xvZ2ljYWwsIHkgPSBjcml0aF9wcm9wKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAib3JjaGlkNCIpICsNCmdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLA0KICAgICAgICAgICAgICBzZSA9IFRSVUUsDQogICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwNCiAgICAgICAgICAgICAgc2l6ZSA9IDEuMikgKw0KICB0aGVtZV9jb3dwbG90KCkgKw0KICAgIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDI1MDAsIDIwMDAwMCkpICsNCiAgbGFicygNCiAgICB4ID0gIlRvdGFsIEJpb2xvZ2ljYWwgUGVzdGljZGVzIEFwcGxpZWQgKG1sKSIsDQogICAgeSA9ICJQcm9iYWJpbGl0eSBvZiAqQ3JpdGhpZGlhKiBEZXRlY3Rpb24iDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDEwMDAwLA0KICAgIHkgPSAxLA0KICAgIGxhYmVsID0gIlAgPCAwLjAwMSIsDQogICAgc2l6ZSA9IDkNCiAgKSANCg0KYGBgDQoNCg0KIyMgQ3JpdGhpZGlhIHZzLiBhdmVyYWdlIGhpdmVzIHBlciBncmVlbmhvdXNlIGhlY3RhcmUNCg0KYGBge3J9DQptb2QuY3JfNiA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IA0KYXZnX2hpdmVzX2hhLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCg0KQW5vdmEobW9kLmNyXzYpDQpzdW1tYXJ5KG1vZC5jcl82KQ0KDQpgYGANCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IGF2Z19oaXZlc19oYSwgeSA9IGNyaXRoX3Byb3ApKSArDQpnZW9tX3BvaW50KHNpemUgPSA1LCBzdHJva2UgPSAwLjgsIGFscGhhID0gMC44LCBjb2xvciA9ICJvcmFuZ2VyZWQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygyMCwgNDApKSArDQogIGxhYnMoDQogICAgeCA9ICJBdmVyYWdlIEJ1bWJsZSBCZWUgQ29sb25pZXMgcGVyIEdyZWVuaG91c2UgSGVjdGFyZSIsDQogICAgeSA9ICJQcm9iYWJpbGl0eSBvZiAqQ3JpdGhpZGlhKiBEZXRlY3Rpb24iDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDIyLA0KICAgIHkgPSAxLjEsDQogICAgbGFiZWwgPSAizrIgPSAtMC4wNTQgwrEgMC4wMTEgU0UsIA0KICAgIFAgPCAwLjAwMSIsDQogICAgc2l6ZSA9IDYNCiAgKSANCg0KYGBgDQoNCiMjIENyaXRoaWRpYSB2cy4gY29tbWVyY2lhbCBzdXBwbGllciBvZiBidW1ibGUgYmVlIGNvbG9uaWVzDQoNCmBgYHtyfQ0KbW9kLmNyXzcgPC0gZ2xtKA0KICBjYmluZChjcml0aF9wb3MsIGNyaXRoX25lZykgfiANCnNvdXJjZSwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQoNCkFub3ZhKG1vZC5jcl83KQ0KDQpzdW1tYXJ5KG1vZC5jcl83KQ0KDQpjci5zIDwtIGVtbWVhbnMobW9kLmNyXzcsIHBhaXJ3aXNlIH4gc291cmNlLCB0eXBlID0gInJlc3BvbnNlIikNCmNyLnMNCg0KY3IuZGYgPC0gYXMuZGF0YS5mcmFtZShjci5zJGVtbWVhbnMpDQpjci5kZg0KDQpgYGANCg0KYGBge3IsIGZpZy53aWR0aD02LCBmaWcuaGVpZ2h0PTYsIGRwaT02MDB9DQoNCmdncGxvdChjci5kZiwgYWVzKHggPSBzb3VyY2UsIHkgPSBwcm9iLCBmaWxsID0gc291cmNlKSkgKw0KDQogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGFzeW1wLkxDTCwNCiAgICAgICAgICAgICAgICAgICAgeW1heCA9IGFzeW1wLlVDTCksDQogICAgICAgICAgICAgICAgc2hhcGUgPSAyMSwNCiAgICAgICAgICAgICAgICBzaXplID0gMSwNCiAgICAgICAgICAgICAgICBmYXR0ZW4gPSA0LA0KICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIikgKw0KDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBhc3ltcC5MQ0wsDQogICAgICAgICAgICAgICAgICAgIHltYXggPSBhc3ltcC5VQ0wpLA0KICAgICAgICAgICAgICAgIHdpZHRoID0gMC4xLA0KICAgICAgICAgICAgICAgIGxpbmV3aWR0aCA9IDEpICsNCg0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJLb3BwZXJ0IiA9ICJvcmNoaWQ0IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmlvYmVzdCIgPSAib3JjaGlkMSIpKSArDQoNCiAgc2NhbGVfeV9jb250aW51b3VzKA0KICAgIGxpbWl0cyA9IGMoMCwgMSksDQogICAgZXhwYW5kID0gZXhwYW5zaW9uKG11bHQgPSBjKDAsIDAuMDUpKQ0KICApICsNCg0KICB0aGVtZV9jb3dwbG90KCkgKw0KDQogIGxhYnMoDQogICAgeCA9ICIiLA0KICAgIHkgPSAiUHJlZGljdGVkICpDcml0aGlkaWEqIGRldGVjdGlvbiBwcm9iYWJpbGl0eSIsDQogICAgY2FwdGlvbiA9ICJPZGRzIHJhdGlvID0gMC4zMCwgUCA8IDAuMDAwMSwgTiA9IDYiDQogICkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueSA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KDQogIHRoZW1lKA0KICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwNCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0KSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KQ0KICApDQoNCmBgYA0KDQpgYGB7cn0NCkFub3ZhKG1vZF8xYSkNCnN1bW1hcnkobW9kXzFhKQ0KQW5vdmEobW9kXzIpDQpzdW1tYXJ5KG1vZF8yKQ0KQW5vdmEobW9kXzMpDQpzdW1tYXJ5KG1vZF8zKQ0KQW5vdmEobW9kXzQpDQpzdW1tYXJ5KG1vZF80KQ0KQW5vdmEobW9kXzUpDQpzdW1tYXJ5KG1vZF81KQ0KQW5vdmEobW9kLmNyXzYpDQpzdW1tYXJ5KG1vZC5jcl82KQ0KYGBgDQoNCg0KDQojIEFwaWN5c3Rpcw0KDQojIyBBcGljeXN0aXMgcHJvYmFiaWxpdHkgcGVyIGdyZWVuaG91c2UgDQoNCmBgYHtyfQ0KYXBpX3Byb2IgPC0gZ2xtKA0KICBjYmluZChhcGlfcG9zLCBhcGlfbmVnKSB+IA0KZ2gsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KDQpBbm92YShhcGlfcHJvYikNCnN1bW1hcnkoYXBpX3Byb2IpDQoNCmFwMSA8LSBlbW1lYW5zKGFwaV9wcm9iLCBwYWlyd2lzZSB+IGdoLCB0eXBlID0gInJlc3BvbnNlIikNCmFwMQ0KDQphcDEuZGYgPC0gYXMuZGF0YS5mcmFtZShhcDEkZW1tZWFucykNCg0KIyBGYW50YXN0aWMgb25jZSBhZ2FpbiB0aGlzIG1hdGNoZXMgd2hhdCBJIGNhbGN1bGF0ZWQgbWFudWFsbHkgc28gdGhpcyBpcyBhIHRydXN0d29ydGh5IG1ldGhvZCBvZiBjb21wYXJpbmcgcHJvYmFiaWxpdGllcyANCg0KYGBgDQoNCiMjIEFwaWN5c3RpcyB2cy4gdG90YWwgcGVzdGljaWRlcyBhcHBsaWVkIChtbCkNCg0KYGBge3J9DQptb2QuYXBfMWEgPC0gZ2xtKA0KICBjYmluZChhcGlfcG9zLCBhcGlfbmVnKSB+IHRvdGFsX2NoZW1pY2FsLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZC5hcF8xYSkNCnN1bW1hcnkobW9kLmFwXzFhKQ0KDQpgYGANCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX2NoZW1pY2FsLCB5ID0gYXBpX3Byb3ApKSArDQpnZW9tX3BvaW50KHNpemUgPSA1LCBzdHJva2UgPSAwLjgsIGFscGhhID0gMC44LCBjb2xvciA9ICJvcmFuZ2VyZWQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgbGFicygNCiAgICB4ID0gIlRvdGFsIFBlc3RpY2lkZXMgQXBwbGllZCAobWwpIiwNCiAgICB5ID0gIlByb2JhYmlsaXR5IG9mICpBcGljeXN0aXMqIERldGVjdGlvbiINCiAgKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0LCBmYWNlID0gImJvbGQiKSkgKw0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCkpICsNCiAgICB0aGVtZShheGlzLnRpdGxlLnkgPSBnZ3RleHQ6OmVsZW1lbnRfbWFya2Rvd24oKSkgKyANCiAgYW5ub3RhdGUoDQogICAgZ2VvbSA9ICJ0ZXh0IiwNCiAgICB4ID0gNDUwMDAsDQogICAgeSA9IDAuNSwNCiAgICBsYWJlbCA9ICJQIDwgMC4wMDEiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBBcGljeXN0aXMgdnMuIGluc2VjdGljaWRlcyANCg0KYGBge3J9DQptb2QuYXBfMiA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gDQp0b3RhbF9pbnNlY3RpY2lkZSwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpBbm92YShtb2QuYXBfMikNCnN1bW1hcnkobW9kLmFwXzIpDQoNCnFxbm9ybShyZXNpZChtb2QuYXBfMikpO3FxbGluZShyZXNpZChtb2QuYXBfMikpDQoNCg0KYGBgDQoNCmBgYHtyLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OCwgZHBpPTYwMH0NCg0KZ2dwbG90KGdoNiwgYWVzKHggPSB0b3RhbF9pbnNlY3RpY2lkZSwgeSA9IGFwaV9wcm9wKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAib3JhbmdlcmVkIikgKw0KZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsDQogICAgICAgICAgICAgIHNlID0gVFJVRSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICBzaXplID0gMS4yKSArDQogIHRoZW1lX2Nvd3Bsb3QoKSArDQogICAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMzAwMCwgMjAwMDAwKSkgKw0KICBsYWJzKA0KICAgIHggPSAiVG90YWwgSW5zZWN0aWNpZGVzIEFwcGxpZWQgKG1sKSIsDQogICAgeSA9ICJQcm9iYWJpbGl0eSBvZiAqQXBpY3lzdGlzKiBEZXRlY3Rpb24iDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDE1MDAwLA0KICAgIHkgPSAwLjUsDQogICAgbGFiZWwgPSAiUCA8IDAuMDAxIiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KIyMgQXBpY3lzdGlzIHZzLiBmdW5naWNpZGVzIA0KDQpgYGB7cn0NCm1vZC5hcF8zIDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiANCnRvdGFsX2Z1bmdpY2lkZSwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQoNCkFub3ZhKG1vZC5hcF8zKQ0Kc3VtbWFyeShtb2QuYXBfMykNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTgsIGRwaT02MDB9DQoNCmdncGxvdChnaDYsIGFlcyh4ID0gdG90YWxfZnVuZ2ljaWRlLCB5ID0gYXBpX3Byb3ApKSArDQpnZW9tX3BvaW50KHNpemUgPSA1LCBzdHJva2UgPSAwLjgsIGFscGhhID0gMC44LCBjb2xvciA9ICJvcmFuZ2VyZWQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygxMDAwMCwgMTAwMDAwKSkgKw0KICBsYWJzKA0KICAgIHggPSAiVG90YWwgRnVuZ2ljaWRlcyBBcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiUHJvYmFiaWxpdHkgb2YgKkFwaWN5c3RpcyogRGV0ZWN0aW9uIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueSA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSAxNTAwMCwNCiAgICB5ID0gMC41LA0KICAgIGxhYmVsID0gIlAgPSAwLjQwIiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KIyMgQXBpY3lzdGlzIHZzLiBzeW50aGV0aWNzIA0KDQpgYGB7cn0NCm1vZC5hcF80IDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiANCnRvdGFsX3N5bnRoZXRpYywNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQoNCkFub3ZhKG1vZC5hcF80KQ0Kc3VtbWFyeShtb2QuYXBfNCkNCg0KYGBgDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX3N5bnRoZXRpYywgeSA9IGFwaV9wcm9wKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAib3JhbmdlcmVkIikgKw0KZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsDQogICAgICAgICAgICAgIHNlID0gVFJVRSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICBzaXplID0gMS4yKSArDQogIHRoZW1lX2Nvd3Bsb3QoKSArDQogICAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMTMwMDAsIDU1MDAwKSkgKw0KICBsYWJzKA0KICAgIHggPSAiVG90YWwgU3ludGhldGljIFBlc3RpY2RlcyBBcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiUHJvYmFiaWxpdHkgb2YgKkFwaWN5c3RpcyogRGV0ZWN0aW9uIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueSA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSAxNTAwMCwNCiAgICB5ID0gMC41LA0KICAgIGxhYmVsID0gIlAgPSAwLjY1IiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KIyMgQXBpY3lzdGlzIHZzLiBiaW9sb2dpY2FscyANCg0KYGBge3J9DQptb2QuYXBfNSA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gDQp0b3RhbF9iaW9sb2dpY2FsLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCg0KQW5vdmEobW9kLmFwXzUpDQpzdW1tYXJ5KG1vZC5hcF81KQ0KDQpgYGANCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX2Jpb2xvZ2ljYWwsIHkgPSBhcGlfcHJvcCkpICsNCmdlb21fcG9pbnQoc2l6ZSA9IDUsIHN0cm9rZSA9IDAuOCwgYWxwaGEgPSAwLjgsIGNvbG9yID0gIm9yYW5nZXJlZCIpICsNCmdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLA0KICAgICAgICAgICAgICBzZSA9IFRSVUUsDQogICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwNCiAgICAgICAgICAgICAgc2l6ZSA9IDEuMikgKw0KICB0aGVtZV9jb3dwbG90KCkgKw0KICAgIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDI1MDAsIDIwMDAwMCkpICsNCiAgbGFicygNCiAgICB4ID0gIlRvdGFsIEJpb2xvZ2ljYWwgUGVzdGljZGVzIEFwcGxpZWQgKG1sKSIsDQogICAgeSA9ICJQcm9iYWJpbGl0eSBvZiAqQXBpY3lzdGlzKiBEZXRlY3Rpb24iDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDEwMDAwLA0KICAgIHkgPSAwLjUsDQogICAgbGFiZWwgPSAiUCA8IDAuMDAxIiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KIyMgQXBpY3lzdGlzIHZzLiBhdmVyYWdlIGhpdmVzIHBlciBncmVlbmhvdXNlIGhlY3RhcmUNCg0KYGBge3J9DQptb2QuYXBfNiA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gDQphdmdfaGl2ZXNfaGEsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KDQpBbm92YShtb2QuYXBfNikNCnN1bW1hcnkobW9kLmFwXzYpDQoNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTgsIGRwaT02MDB9DQoNCmdncGxvdChnaDYsIGFlcyh4ID0gYXZnX2hpdmVzX2hhLCB5ID0gYXBpX3Byb3ApKSArDQpnZW9tX3BvaW50KHNpemUgPSA1LCBzdHJva2UgPSAwLjgsIGFscGhhID0gMC44LCBjb2xvciA9ICJvcmFuZ2VyZWQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygyMCwgNDApKSArDQogIGxhYnMoDQogICAgeCA9ICJBdmVyYWdlIGJ1bWJsZSBiZWUgY29sb25pZXMgcGVyIGdyZWVuaG91c2UgaGVjdGFyZSIsDQogICAgeSA9ICJQcm9iYWJpbGl0eSBvZiAqQXBpY3lzdGlzKiBEZXRlY3Rpb24iDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDIyLA0KICAgIHkgPSAwLjUsDQogICAgbGFiZWwgPSAiUCA8IDAuMDAxIiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KDQojIyBBcGljeXN0aXMgdnMuIGNvbW1lcmNpYWwgc3VwcGxpZXIgb2YgYnVtYmxlIGJlZSBjb2xvbmllcw0KDQpgYGB7cn0NCm1vZC5hcF83IDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiANCnNvdXJjZSwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQoNCkFub3ZhKG1vZC5hcF83KQ0Kc3VtbWFyeShtb2QuYXBfNykNCg0KYXAucyA8LSBlbW1lYW5zKG1vZC5hcF83LCBwYWlyd2lzZSB+IHNvdXJjZSwgdHlwZSA9ICJyZXNwb25zZSIpDQphcC5zDQoNCmFwLmRmIDwtIGFzLmRhdGEuZnJhbWUoYXAucyRlbW1lYW5zKQ0KYXAuZGYNCmBgYA0KDQpgYGB7ciwgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9NiwgZHBpPTYwMH0NCg0KZ2dwbG90KGFwLmRmLCBhZXMoeCA9IHNvdXJjZSwgeSA9IHByb2IsIGZpbGwgPSBzb3VyY2UpKSArDQoNCiAgZ2VvbV9wb2ludHJhbmdlKGFlcyh5bWluID0gYXN5bXAuTENMLA0KICAgICAgICAgICAgICAgICAgICB5bWF4ID0gYXN5bXAuVUNMKSwNCiAgICAgICAgICAgICAgICBzaGFwZSA9IDIxLA0KICAgICAgICAgICAgICAgIHNpemUgPSAxLA0KICAgICAgICAgICAgICAgIGZhdHRlbiA9IDQsDQogICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siKSArDQoNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGFzeW1wLkxDTCwNCiAgICAgICAgICAgICAgICAgICAgeW1heCA9IGFzeW1wLlVDTCksDQogICAgICAgICAgICAgICAgd2lkdGggPSAwLjEsDQogICAgICAgICAgICAgICAgbGluZXdpZHRoID0gMSkgKw0KDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIktvcHBlcnQiID0gIm9yYW5nZXJlZDEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCaW9iZXN0IiA9ICJvcmFuZ2VyZWQ0IikpICsNCg0KICBzY2FsZV95X2NvbnRpbnVvdXMoDQogICAgbGltaXRzID0gYygwLCAwLjQ1KSwNCiAgICBleHBhbmQgPSBleHBhbnNpb24obXVsdCA9IGMoMCwgMC4wNSkpDQogICkgKw0KDQogIHRoZW1lX2Nvd3Bsb3QoKSArDQoNCiAgbGFicygNCiAgICB4ID0gIiIsDQogICAgeSA9ICJQcmVkaWN0ZWQgKkFwaWN5c3RpcyogZGV0ZWN0aW9uIHByb2JhYmlsaXR5IiwNCiAgICBjYXB0aW9uID0gIk9kZHMgcmF0aW8gPSAxMS4zLCBQIDwgMC4wMDAxLCBOID0gNiINCiAgKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQoNCiAgdGhlbWUoDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLA0KICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpDQogICkNCg0KYGBgDQoNCmBgYHtyfQ0KQW5vdmEobW9kLmFwXzFhKQ0Kc3VtbWFyeShtb2QuYXBfMWEpDQpBbm92YShtb2QuYXBfMikNCnN1bW1hcnkobW9kLmFwXzIpDQpBbm92YShtb2QuYXBfMykNCnN1bW1hcnkobW9kLmFwXzMpDQpBbm92YShtb2QuYXBfNCkNCnN1bW1hcnkobW9kLmFwXzQpDQpBbm92YShtb2QuYXBfNSkNCnN1bW1hcnkobW9kLmFwXzUpDQpBbm92YShtb2QuYXBfNikNCnN1bW1hcnkobW9kLmFwXzYpDQoNCmBgYA0KDQoNCiMgQW50aGVyIGJydWlzaW5nDQoNCmBgYHtyfQ0KaGlzdChnaDYkYXZlcmFnZV9icnVpc2UpDQpnaDYkbG9nYnJ1aXNlIDwtIGxvZyhnaDYkYXZlcmFnZV9icnVpc2UpDQpoaXN0KGdoNiRsb2dicnVpc2UpDQpzaGFwaXJvLnRlc3QoZ2g2JGxvZ2JydWlzZSkNCg0KYGBgDQoNCg0KIyMgQW50aGVyIGJydWlzaW5nIHZzLiBjcml0aGlkaWEgDQoNCmBgYHtyfQ0KbW9kX2JfMSA8LSBnbG0oYXZlcmFnZV9icnVpc2UgfiBjcml0aF9wcm9wLCBkYXRhID0gZ2g2KQ0KQW5vdmEobW9kX2JfMSkNCnN1bW1hcnkobW9kX2JfMSkNCg0KbW9kX2JfMSA8LSBnbG0obG9nYnJ1aXNlIH4gY3JpdGhfcHJvcCwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzEpDQpzdW1tYXJ5KG1vZF9iXzEpDQpgYGANCg0KDQpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTgsIGRwaT02MDB9DQoNCmdncGxvdChnaDYsIGFlcyh4ID0gY3JpdGhfcHJvcCwgeSA9IGF2ZXJhZ2VfYnJ1aXNlKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygwLjA4LDEpKSArDQogIGxhYnMoDQogICAgeCA9ICJQcm9iYWJpbGl0eSBvZiAqQ3JpdGhpZGlhKiBEZXRlY3Rpb24iLA0KICAgIHkgPSAiQXZlcmFnZSBhbnRoZXIgYnJ1aXNpbmcgc2NvcmUiDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS54ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDAuMTUsDQogICAgeSA9IDIuNzUsDQogICAgbGFiZWwgPSAiUCA9IDAuMDEiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBBbnRoZXIgYnJ1aXNpbmcgdnMuIGFwaWN5c3RpcyANCg0KYGBge3J9DQptb2RfYl8yIDwtIGdsbShhdmVyYWdlX2JydWlzZSB+IGFwaV9wcm9wLCBkYXRhID0gZ2g2KQ0KQW5vdmEobW9kX2JfMikNCnN1bW1hcnkobW9kX2JfMikNCg0KbW9kX2JfMiA8LSBnbG0obG9nYnJ1aXNlIH4gYXBpX3Byb3AsIGRhdGEgPSBnaDYpDQpBbm92YShtb2RfYl8yKQ0Kc3VtbWFyeShtb2RfYl8yKQ0KYGBgDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IGFwaV9wcm9wLCB5ID0gYXZlcmFnZV9icnVpc2UpKSArDQpnZW9tX3BvaW50KHNpemUgPSA1LCBzdHJva2UgPSAwLjgsIGFscGhhID0gMC44LCBjb2xvciA9ICJjaGFydHJldXNlNCIpICsNCmdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLA0KICAgICAgICAgICAgICBzZSA9IFRSVUUsDQogICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwNCiAgICAgICAgICAgICAgc2l6ZSA9IDEuMikgKw0KICB0aGVtZV9jb3dwbG90KCkgKw0KICAgIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDAsLjQxKSkgKw0KICBsYWJzKA0KICAgIHggPSAiUHJvYmFiaWxpdHkgb2YgKkFwaWN5c3RpcyogRGV0ZWN0aW9uIiwNCiAgICB5ID0gIkF2ZXJhZ2UgYW50aGVyIGJydWlzaW5nIHNjb3JlIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueCA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSAwLjA1LA0KICAgIHkgPSAyLjc1LA0KICAgIGxhYmVsID0gIlAgPCAwLjAwMSIsDQogICAgc2l6ZSA9IDkNCiAgKSANCg0KYGBgDQoNCiMjIEFudGhlciBicnVzaW5nIHZzLiB0b3RhbCBwZXN0aWNpZGVzIA0KDQpgYGB7cn0NCm1vZF9iXzMgPC0gZ2xtKGF2ZXJhZ2VfYnJ1aXNlIH4gdG90YWxfY2hlbWljYWwsIGRhdGEgPSBnaDYpDQpBbm92YShtb2RfYl8zKQ0Kc3VtbWFyeShtb2RfYl8zKQ0KDQptb2RfYl8zIDwtIGdsbShsb2dicnVpc2UgfiB0b3RhbF9jaGVtaWNhbCwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzMpDQpzdW1tYXJ5KG1vZF9iXzMpDQoNCmBgYA0KDQoNCmBgYHtyLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OCwgZHBpPTYwMH0NCg0KZ2dwbG90KGdoNiwgYWVzKHggPSB0b3RhbF9jaGVtaWNhbCwgeSA9IGF2ZXJhZ2VfYnJ1aXNlKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXQgPSBjKDE2MDAwLCAyMTUwMDApKSArDQogIGxhYnMoDQogICAgeCA9ICJBdmVyYWdlIHRvdGFsIHBlc3RpY2lkZXMgYXBwbGllZCAobWwpIiwNCiAgICB5ID0gIkF2ZXJhZ2UgYW50aGVyIGJydWlzaW5nIHNjb3JlIg0KICApICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpKSArDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwKSkgKw0KICAgIHRoZW1lKGF4aXMudGl0bGUueCA9IGdndGV4dDo6ZWxlbWVudF9tYXJrZG93bigpKSArIA0KICBhbm5vdGF0ZSgNCiAgICBnZW9tID0gInRleHQiLA0KICAgIHggPSAyNTAwMCwNCiAgICB5ID0gMi43LA0KICAgIGxhYmVsID0gIlAgPSAwLjExIiwNCiAgICBzaXplID0gOQ0KICApIA0KDQpgYGANCg0KIyMgQW50aGVyIGJydWlzaW5nIHZzLiBpbnNlY3RpY2lkZXMgDQoNCmBgYHtyfQ0KbW9kX2JfNCA8LSBnbG0oYXZlcmFnZV9icnVpc2UgfiB0b3RhbF9pbnNlY3RpY2lkZSwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzQpDQpzdW1tYXJ5KG1vZF9iXzQpDQoNCm1vZF9iXzQgPC0gZ2xtKGxvZ2JydWlzZSB+IHRvdGFsX2luc2VjdGljaWRlLCBkYXRhID0gZ2g2KQ0KQW5vdmEobW9kX2JfNCkNCnN1bW1hcnkobW9kX2JfNCkNCmBgYA0KDQoNCmBgYHtyLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OCwgZHBpPTYwMH0NCg0KZ2dwbG90KGdoNiwgYWVzKHggPSB0b3RhbF9pbnNlY3RpY2lkZSwgeSA9IGF2ZXJhZ2VfYnJ1aXNlKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygzMDAwLCAxOTUwMDApKSArDQogIGxhYnMoDQogICAgeCA9ICJBdmVyYWdlIHRvdGFsIGluc2VjdGljaWRlcyBhcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiQXZlcmFnZSBhbnRoZXIgYnJ1aXNpbmcgc2NvcmUiDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS54ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDEwMDAwLA0KICAgIHkgPSAyLjYsDQogICAgbGFiZWwgPSAiUCA9IDAuMjgiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBBbnRoZXIgYnJ1c2luZyB2cy4gZnVuZ2ljaWRlcyANCg0KYGBge3J9DQptb2RfYl81IDwtIGdsbShhdmVyYWdlX2JydWlzZSB+IHRvdGFsX2Z1bmdpY2lkZSwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzUpDQpzdW1tYXJ5KG1vZF9iXzUpDQoNCm1vZF9iXzUgPC0gZ2xtKGxvZ2JydWlzZSB+IHRvdGFsX2Z1bmdpY2lkZSwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzUpDQpzdW1tYXJ5KG1vZF9iXzUpDQoNCmBgYA0KDQoNCmBgYHtyLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OCwgZHBpPTYwMH0NCg0KZ2dwbG90KGdoNiwgYWVzKHggPSB0b3RhbF9mdW5naWNpZGUsIHkgPSBhdmVyYWdlX2JydWlzZSkpICsNCmdlb21fcG9pbnQoc2l6ZSA9IDUsIHN0cm9rZSA9IDAuOCwgYWxwaGEgPSAwLjgsIGNvbG9yID0gImNoYXJ0cmV1c2U0IikgKw0KZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsDQogICAgICAgICAgICAgIHNlID0gVFJVRSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICBzaXplID0gMS4yKSArDQogIHRoZW1lX2Nvd3Bsb3QoKSArDQogICAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMTAwMDAsIDEwMDAwMCkpICsNCiAgbGFicygNCiAgICB4ID0gIkF2ZXJhZ2UgdG90YWwgZnVuZ2ljaWRlcyBhcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiQXZlcmFnZSBhbnRoZXIgYnJ1aXNpbmcgc2NvcmUiDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS54ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDIwMDAwLA0KICAgIHkgPSAyLjYsDQogICAgbGFiZWwgPSAiUCA9IDAuNDciLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBBbnRoZXIgYnJ1aXNpbmcgdnMuIHN5bnRoZXRpY3MgDQoNCmBgYHtyfQ0KbW9kX2JfNiA8LSBnbG0oYXZlcmFnZV9icnVpc2UgfiB0b3RhbF9zeW50aGV0aWMsIGRhdGEgPSBnaDYpDQpBbm92YShtb2RfYl82KQ0Kc3VtbWFyeShtb2RfYl82KQ0KDQptb2RfYl82IDwtIGdsbShsb2dicnVpc2UgfiB0b3RhbF9zeW50aGV0aWMsIGRhdGEgPSBnaDYpDQpBbm92YShtb2RfYl82KQ0Kc3VtbWFyeShtb2RfYl82KQ0KYGBgDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoZ2g2LCBhZXMoeCA9IHRvdGFsX3N5bnRoZXRpYywgeSA9IGF2ZXJhZ2VfYnJ1aXNlKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygxMzAwMCwgNTUwMDApKSArDQogIGxhYnMoDQogICAgeCA9ICJBdmVyYWdlIHRvdGFsIHN5bnRoZXRpYyBwZXN0aWNpZGVzIGFwcGxpZWQgKG1sKSIsDQogICAgeSA9ICJBdmVyYWdlIGFudGhlciBicnVpc2luZyBzY29yZSINCiAgKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0LCBmYWNlID0gImJvbGQiKSkgKw0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCkpICsNCiAgICB0aGVtZShheGlzLnRpdGxlLnggPSBnZ3RleHQ6OmVsZW1lbnRfbWFya2Rvd24oKSkgKyANCiAgYW5ub3RhdGUoDQogICAgZ2VvbSA9ICJ0ZXh0IiwNCiAgICB4ID0gMjAwMDAsDQogICAgeSA9IDIuNiwNCiAgICBsYWJlbCA9ICJQID0gMC4zMiIsDQogICAgc2l6ZSA9IDkNCiAgKSANCg0KYGBgDQoNCiMjIEFudGhlciBicnVpc2luZyB2cy4gYmlvbG9naWNhbHMgDQoNCmBgYHtyfQ0KbW9kX2JfNyA8LSBnbG0oYXZlcmFnZV9icnVpc2UgfiB0b3RhbF9iaW9sb2dpY2FsLCBkYXRhID0gZ2g2KQ0KQW5vdmEobW9kX2JfNykNCnN1bW1hcnkobW9kX2JfNykNCg0KbW9kX2JfNyA8LSBnbG0obG9nYnJ1aXNlIH4gdG90YWxfYmlvbG9naWNhbCwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzcpDQpzdW1tYXJ5KG1vZF9iXzcpDQpgYGANCg0KDQpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTgsIGRwaT02MDB9DQoNCmdncGxvdChnaDYsIGFlcyh4ID0gdG90YWxfYmlvbG9naWNhbCwgeSA9IGF2ZXJhZ2VfYnJ1aXNlKSkgKw0KZ2VvbV9wb2ludChzaXplID0gNSwgc3Ryb2tlID0gMC44LCBhbHBoYSA9IDAuOCwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKSArDQpnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgc2UgPSBUUlVFLA0KICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsDQogICAgICAgICAgICAgIHNpemUgPSAxLjIpICsNCiAgdGhlbWVfY293cGxvdCgpICsNCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygzMDAwLCAxOTUwMDApKSArDQogIGxhYnMoDQogICAgeCA9ICJBdmVyYWdlIHRvdGFsIGJpb2xvZ2ljYWwgcGVzdGljaWRlcyBhcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiQXZlcmFnZSBhbnRoZXIgYnJ1aXNpbmcgc2NvcmUiDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS54ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDE1MDAwLA0KICAgIHkgPSAyLjYsDQogICAgbGFiZWwgPSAiUCA9IDAuMTMiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBBbnRoZXIgYnJ1aXNpbmcgdnMuIGF2ZXJhZ2UgaGl2ZXMgcGVyIGdyZWVuaG91c2UgaGVjdGFyZSANCg0KYGBge3J9DQptb2RfYl84IDwtIGdsbShhdmVyYWdlX2JydWlzZSB+IGF2Z19oaXZlc19oYSwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzgpDQpzdW1tYXJ5KG1vZF9iXzgpDQoNCm1vZF9iXzggPC0gZ2xtKGxvZ2JydWlzZSB+IGF2Z19oaXZlc19oYSwgZGF0YSA9IGdoNikNCkFub3ZhKG1vZF9iXzgpDQpzdW1tYXJ5KG1vZF9iXzgpDQoNCmBgYA0KDQoNCmBgYHtyLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OCwgZHBpPTYwMH0NCg0KZ2dwbG90KGdoNiwgYWVzKHggPSBhdmdfaGl2ZXNfaGEsIHkgPSBhdmVyYWdlX2JydWlzZSkpICsNCmdlb21fcG9pbnQoc2l6ZSA9IDUsIHN0cm9rZSA9IDAuOCwgYWxwaGEgPSAwLjgsIGNvbG9yID0gImNoYXJ0cmV1c2U0IikgKw0KZ2VvbV9zbW9vdGgobWV0aG9kID0gImdsbSIsDQogICAgICAgICAgICAgIHNlID0gVFJVRSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLA0KICAgICAgICAgICAgICBzaXplID0gMS4yKSArDQogIHRoZW1lX2Nvd3Bsb3QoKSArDQogICAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMjAsIDQwKSkgKw0KICBsYWJzKA0KICAgIHggPSAiQXZlcmFnZSB0b3RhbCBiaW9sb2dpY2FscyBhcHBsaWVkIChtbCkiLA0KICAgIHkgPSAiQXZlcmFnZSBhbnRoZXIgYnJ1aXNpbmcgc2NvcmUiDQogICkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIikpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS54ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgIGdlb20gPSAidGV4dCIsDQogICAgeCA9IDIxLA0KICAgIHkgPSAyLjYsDQogICAgbGFiZWwgPSAiUCA9IDAuMTQiLA0KICAgIHNpemUgPSA5DQogICkgDQoNCmBgYA0KDQojIyBBbnRoZXIgYnJ1aXNpbmcgdnMuIGNvbW1lcmNpYWwgc3VwcGxpZXIgb2YgYnVtYmxlIGJlZSBjb2xvbmllcyANCg0KYGBge3J9DQoNCm1vZF9iXzkgPC0gZ2xtKGF2ZXJhZ2VfYnJ1aXNlIH4gc291cmNlLCBkYXRhID0gZ2g2KQ0KQW5vdmEobW9kX2JfOSkNCnN1bW1hcnkobW9kX2JfOSkNCg0KYi5zIDwtIGVtbWVhbnMobW9kX2JfOSwgcGFpcndpc2UgfiBzb3VyY2UsIHR5cGUgPSAicmVzcG9uc2UiKQ0KYi5zDQoNCmJzLmRmIDwtIGFzLmRhdGEuZnJhbWUoYi5zJGVtbWVhbnMpDQpicy5kZg0KDQoNCg0KDQptb2RfYl85IDwtIGdsbShsb2dicnVpc2UgfiBzb3VyY2UsIGRhdGEgPSBnaDYpDQpBbm92YShtb2RfYl85KQ0Kc3VtbWFyeShtb2RfYl85KQ0KDQpiLnMgPC0gZW1tZWFucyhtb2RfYl85LCBwYWlyd2lzZSB+IHNvdXJjZSwgdHlwZSA9ICJyZXNwb25zZSIpDQpiLnMNCmJzLmRmIDwtIGFzLmRhdGEuZnJhbWUoYi5zJGVtbWVhbnMpDQpicy5kZg0KYGBgDQoNCmBgYHtyLCBmaWcud2lkdGg9NiwgZmlnLmhlaWdodD02LCBkcGk9NjAwfQ0KDQpnZ3Bsb3QoYnMuZGYsIGFlcyh4ID0gc291cmNlLCB5ID0gZW1tZWFuLCBmaWxsID0gc291cmNlKSkgKw0KDQogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGxvd2VyLkNMLA0KICAgICAgICAgICAgICAgICAgICB5bWF4ID0gdXBwZXIuQ0wpLA0KICAgICAgICAgICAgICAgIHNoYXBlID0gMjEsDQogICAgICAgICAgICAgICAgc2l6ZSA9IDEsDQogICAgICAgICAgICAgICAgZmF0dGVuID0gNCwNCiAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIpICsNCg0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbG93ZXIuQ0wsDQogICAgICAgICAgICAgICAgICAgIHltYXggPSB1cHBlci5DTCksDQogICAgICAgICAgICAgICAgd2lkdGggPSAwLjEsDQogICAgICAgICAgICAgICAgbGluZXdpZHRoID0gMSkgKw0KDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIktvcHBlcnQiID0gImNoYXJ0cmV1c2U0IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmlvYmVzdCIgPSAiZGFya29saXZlZ3JlZW4iKSkgKw0KDQogIHNjYWxlX3lfY29udGludW91cygNCiAgICBsaW1pdHMgPSBjKDAsIDMpLA0KICAgIGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLCAwLjA1KSkNCiAgKSArDQoNCiAgdGhlbWVfY293cGxvdCgpICsNCg0KICBsYWJzKA0KICAgIHggPSAiIiwNCiAgICB5ID0gIkVzdGltYXRlZCBtZWFuIGFudGhlciBicnVpc2Ugc2NvcmUiLA0KICAgIGNhcHRpb24gPSAiS29wcGVydCDiiJIgQmlvYmVzdCA9IDAuMjA7IFAgPSAwLjA3NCINCiAgKSArDQogICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQoNCiAgdGhlbWUoDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLA0KICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpDQogICkNCg0KYGBgDQoNCg0KYGBge3J9DQpBbm92YShtb2RfYl8xKQ0Kc3VtbWFyeShtb2RfYl8xKQ0KQW5vdmEobW9kX2JfMikNCnN1bW1hcnkobW9kX2JfMikNCkFub3ZhKG1vZF9iXzMpDQpzdW1tYXJ5KG1vZF9iXzMpDQpBbm92YShtb2RfYl80KQ0Kc3VtbWFyeShtb2RfYl80KQ0KQW5vdmEobW9kX2JfNSkNCnN1bW1hcnkobW9kX2JfNSkNCkFub3ZhKG1vZF9iXzYpDQpzdW1tYXJ5KG1vZF9iXzYpDQpBbm92YShtb2RfYl83KQ0Kc3VtbWFyeShtb2RfYl83KQ0KQW5vdmEobW9kX2JfOCkNCnN1bW1hcnkobW9kX2JfOCkNCg0KYGBgDQoNCg0KIyBBcHBsaWVkIHBlc3RpY2RlIGNvbXBhcmlzb25zDQoNCg0KYGBge3J9DQoNCiMgTGlzdCBvZiB5b3VyIGxvZ2ljYWwgdHJlYXRtZW50IHZhcmlhYmxlcw0KdHJlYXRfdmFycyA8LSBjKCJhemFndWFyZCIsCSJib3RhbmlnYXJkXzIyd3AiLAkiYm90YW5pZ2FyZF9lcyIsCSJjYXB0aXZhX3ByaW1lIiwJIm5vZmx5IiwJInZlbmVyYXRlX2NnIiwJIm1fcGVkZSIsCSJyb290c2hpZWxkX3BsdXMiLAkibGFsc3RvcF9rNjEiLAkiYmVsZWFmXzUwc2ciLAkiY29yYWdlbiIsCSJlbnRydXN0X3NjIiwJInB5bG9uIiwJImdyb3R0byIsCSJsdW5hX3RyYW5xdWlsaXR5IiwJInByZXZpY3VyX2ZsZXgiLAkiZm9udGVsaXMiLAkicXVhZHJpc3RvcCIsCSJtaWxzdG9wIikNCg0KDQojIFJlc2hhcGUgdGhlIGRhdGEgdG8gbG9uZyBmb3JtYXQNCmdyZWVuaG91c2VfbG9uZyA8LSBnaDYgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gYWxsX29mKHRyZWF0X3ZhcnMpLA0KICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAidHJlYXRtZW50IiwNCiAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJhcHBsaWVkIikNCg0KZ3JlZW5ob3VzZV9sb25nJGFwcGxpZWRfTCA8LSBpZmVsc2UoZ3JlZW5ob3VzZV9sb25nJGFwcGxpZWQgPT0gMCwgMCwgMSkNCmdyZWVuaG91c2VfbG9uZyRhcHBsaWVkX0wgPC0gYXMubG9naWNhbChncmVlbmhvdXNlX2xvbmckYXBwbGllZF9MKQ0KDQpjaGVtX2NvbHMgPC0gYygNCiJhemFndWFyZCIsImJvdGFuaWdhcmRfMjJ3cCIsImJvdGFuaWdhcmRfZXMiLCJjYXB0aXZhX3ByaW1lIiwibm9mbHkiLA0KInZlbmVyYXRlX2NnIiwibV9wZWRlIiwicm9vdHNoaWVsZF9wbHVzIiwibGFsc3RvcF9rNjEiLCJiZWxlYWZfNTBzZyIsDQoiY29yYWdlbiIsImVudHJ1c3Rfc2MiLCJweWxvbiIsImdyb3R0byIsImx1bmFfdHJhbnF1aWxpdHkiLA0KInByZXZpY3VyX2ZsZXgiLCJmb250ZWxpcyIsInF1YWRyaXN0b3AiLCJtaWxzdG9wIg0KKQ0KDQpnaDZbcGFzdGUwKGNoZW1fY29scywgIl9MIildIDwtDQogIGxhcHBseShnaDZbY2hlbV9jb2xzXSwgZnVuY3Rpb24oeCkgeCA+IDApDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpjaGVtX2luZm8gPC0gZGF0YS5mcmFtZSgNCiAgcGVzdGljaWRlID0gYygNCiAgICAiYXphZ3VhcmRfTCIsDQogICAgImNhcHRpdmFfcHJpbWVfTCIsDQogICAgIm5vZmx5X0wiLA0KICAgICJ2ZW5lcmF0ZV9jZ19MIiwNCiAgICAiZW50cnVzdF9zY19MIiwNCiAgICAibV9wZWRlX0wiLA0KICAgICJib3RhbmlnYXJkXzIyd3BfTCIsDQogICAgImJvdGFuaWdhcmRfZXNfTCIsDQogICAgImJlbGVhZl81MHNnX0wiLA0KICAgICJjb3JhZ2VuX0wiLA0KICAgICJweWxvbl9MIiwNCiAgICAicm9vdHNoaWVsZF9wbHVzX0wiLA0KICAgICJsYWxzdG9wX2s2MV9MIiwNCiAgICAibWlsc3RvcF9MIiwNCiAgICAiZ3JvdHRvX0wiLA0KICAgICJsdW5hX3RyYW5xdWlsaXR5X0wiLA0KICAgICJwcmV2aWN1cl9mbGV4X0wiLA0KICAgICJmb250ZWxpc19MIiwNCiAgICAicXVhZHJpc3RvcF9MIg0KICApLA0KDQogIHR5cGUgPSBjKA0KICAgICJpbnNlY3RpY2lkZSIsDQogICAgImluc2VjdGljaWRlIiwNCiAgICAiaW5zZWN0aWNpZGUiLA0KICAgICJpbnNlY3RpY2lkZSIsDQogICAgImluc2VjdGljaWRlIiwNCiAgICAiaW5zZWN0aWNpZGUiLA0KICAgICJpbnNlY3RpY2lkZSIsDQogICAgImluc2VjdGljaWRlIiwNCiAgICAiaW5zZWN0aWNpZGUiLA0KICAgICJpbnNlY3RpY2lkZSIsDQogICAgImluc2VjdGljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIiwNCiAgICAiZnVuZ2ljaWRlIg0KICApLA0KDQogIG1vZGUgPSBjKA0KICAgICJiaW9sb2dpY2FsIiwNCiAgICAiYmlvbG9naWNhbCIsDQogICAgImJpb2xvZ2ljYWwiLA0KICAgICJiaW9sb2dpY2FsIiwNCiAgICAiYmlvbG9naWNhbCIsDQogICAgImJpb2xvZ2ljYWwiLA0KICAgICJiaW9sb2dpY2FsIiwNCiAgICAiYmlvbG9naWNhbCIsDQogICAgInN5bnRoZXRpYyIsDQogICAgInN5bnRoZXRpYyIsDQogICAgInN5bnRoZXRpYyIsDQogICAgImJpb2xvZ2ljYWwiLA0KICAgICJiaW9sb2dpY2FsIiwNCiAgICAiYmlvbG9naWNhbCIsDQogICAgInN5bnRoZXRpYyIsDQogICAgInN5bnRoZXRpYyIsDQogICAgInN5bnRoZXRpYyIsDQogICAgInN5bnRoZXRpYyIsDQogICAgInN5bnRoZXRpYyINCiAgKQ0KKQ0KDQpjaGVtX2luZm8kdHlwZSA8LSBmYWN0b3IoY2hlbV9pbmZvJHR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiaW5zZWN0aWNpZGUiLCAiZnVuZ2ljaWRlIikpDQoNCmNoZW1faW5mbyRtb2RlIDwtIGZhY3RvcihjaGVtX2luZm8kbW9kZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJiaW9sb2dpY2FsIiwgInN5bnRoZXRpYyIpKQ0KDQpjaGVtX2luZm8gPC0gY2hlbV9pbmZvW29yZGVyKGNoZW1faW5mbyR0eXBlLCBjaGVtX2luZm8kbW9kZSksIF0NCg0KIyBDcmVhdGUgY29tYmluZWQgY2xhc3NpZmljYXRpb24NCmNoZW1faW5mbyRjbGFzcyA8LSBwYXN0ZShjaGVtX2luZm8kdHlwZSwgY2hlbV9pbmZvJG1vZGUsIHNlcCA9ICJfIikNCg0KY2hlbV9pbmZvIDwtIGNoZW1faW5mb1tvcmRlcihjaGVtX2luZm8kbW9kZSksIF0NCg0KIyBGb3VyIGNvbG9ycw0KY2hlbV9jb2xvcnMgPC0gYygNCiJpbnNlY3RpY2lkZV9zeW50aGV0aWMiID0gImJyb3duNCIsDQoiaW5zZWN0aWNpZGVfYmlvbG9naWNhbCIgPSAib3JjaGlkMSIsDQoiZnVuZ2ljaWRlX3N5bnRoZXRpYyIgPSAiZGVlcHNreWJsdWU0IiwNCiJmdW5naWNpZGVfYmlvbG9naWNhbCIgPSAibGlnaHRza3libHVlIg0KKQ0KYGBgDQoNCiMjIENyaXRoaWRpYSB2cy4gbG9naWNhbCBjaGVtaWNhbHMgDQoNCiMjIyBNb2RlbHMgDQoNCmBgYHtyfQ0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIEFaQUdVQVJEIC0tLS0tLS0tLS0tLS0tLS0NCm1vZF9hemFndWFyZCA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IGF6YWd1YXJkX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX2F6YWd1YXJkKQ0KQW5vdmEobW9kX2F6YWd1YXJkKQ0KDQptYS5zIDwtIGVtbWVhbnMobW9kX2F6YWd1YXJkLCBwYWlyd2lzZSB+IGF6YWd1YXJkX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWEucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1hLnMkZW1tZWFucykNCm1hLnMNCg0KIyMgLS0tLS0tLS0tLS0tLS0tLSBCT1RBTklHQVJEIDIyV1AgLS0tLS0tLS0tLS0tLS0tLQ0KbW9kX2JvdGFuaWdhcmRfMjJ3cCA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IGJvdGFuaWdhcmRfMjJ3cF9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKQ0KKQ0KDQpzdW1tYXJ5KG1vZF9ib3RhbmlnYXJkXzIyd3ApDQpBbm92YShtb2RfYm90YW5pZ2FyZF8yMndwKQ0KDQptYjIyLnMgPC0gZW1tZWFucyhtb2RfYm90YW5pZ2FyZF8yMndwLCBwYWlyd2lzZSB+IGJvdGFuaWdhcmRfMjJ3cF9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1iMjIucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1iMjIucyRlbW1lYW5zKQ0KbWIyMi5zIA0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIEJPVEFOSUdBUkQgRVMgLS0tLS0tLS0tLS0tLS0tLQ0KbW9kX2JvdGFuaWdhcmRfZXMgPC0gZ2xtKA0KICBjYmluZChjcml0aF9wb3MsIGNyaXRoX25lZykgfiBib3RhbmlnYXJkX2VzX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX2JvdGFuaWdhcmRfZXMpDQpBbm92YShtb2RfYm90YW5pZ2FyZF9lcykNCg0KbWJlLnMgPC0gZW1tZWFucyhtb2RfYm90YW5pZ2FyZF9lcywgcGFpcndpc2UgfiBib3RhbmlnYXJkX2VzX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWJlLnMuZGYgPC0gYXMuZGF0YS5mcmFtZShtYmUucyRlbW1lYW5zKQ0KbWJlLnMNCg0KIyMgLS0tLS0tLS0tLS0tLS0tLSBDQVBUSVZBIFBSSU1FIC0tLS0tLS0tLS0tLS0tLS0NCm1vZF9jYXB0aXZhX3ByaW1lIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gY2FwdGl2YV9wcmltZV9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKQ0KKQ0KDQpzdW1tYXJ5KG1vZF9jYXB0aXZhX3ByaW1lKQ0KQW5vdmEobW9kX2NhcHRpdmFfcHJpbWUpDQoNCm1jcC5zIDwtIGVtbWVhbnMobW9kX2NhcHRpdmFfcHJpbWUsIHBhaXJ3aXNlIH4gY2FwdGl2YV9wcmltZV9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1jcC5zLmRmIDwtIGFzLmRhdGEuZnJhbWUobWNwLnMkZW1tZWFucykNCm1jcC5zDQoNCiMjIC0tLS0tLS0tLS0tLS0tLS0gTk9GTFkgLS0tLS0tLS0tLS0tLS0tLQ0KbW9kX25vZmx5IDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gbm9mbHlfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikNCikNCg0Kc3VtbWFyeShtb2Rfbm9mbHkpDQpBbm92YShtb2Rfbm9mbHkpDQoNCm1uZi5zIDwtIGVtbWVhbnMobW9kX25vZmx5LCBwYWlyd2lzZSB+IG5vZmx5X0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbW5mLnMuZGYgPC0gYXMuZGF0YS5mcmFtZShtbmYucyRlbW1lYW5zKQ0KbW5mLnMNCg0KIyMgLS0tLS0tLS0tLS0tLS0tLSBWRU5FUkFURSBDRyAtLS0tLS0tLS0tLS0tLS0tDQptb2RfdmVuZXJhdGVfY2cgPC0gZ2xtKA0KICBjYmluZChjcml0aF9wb3MsIGNyaXRoX25lZykgfiB2ZW5lcmF0ZV9jZ19MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKQ0KKQ0KDQpzdW1tYXJ5KG1vZF92ZW5lcmF0ZV9jZykNCkFub3ZhKG1vZF92ZW5lcmF0ZV9jZykNCg0KbXZjLnMgPC0gZW1tZWFucyhtb2RfdmVuZXJhdGVfY2csIHBhaXJ3aXNlIH4gdmVuZXJhdGVfY2dfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptdmMucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG12Yy5zJGVtbWVhbnMpDQptdmMucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIE0tUEVERSAtLS0tLS0tLS0tLS0tLS0tDQptb2RfbV9wZWRlIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gbV9wZWRlX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX21fcGVkZSkNCkFub3ZhKG1vZF9tX3BlZGUpDQoNCm1tcC5zIDwtIGVtbWVhbnMobW9kX21fcGVkZSwgcGFpcndpc2UgfiBtX3BlZGVfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptbXAucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1tcC5zJGVtbWVhbnMpDQptbXAucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIFJPT1RTSElFTEQgUExVUyAtLS0tLS0tLS0tLS0tLS0tDQptb2Rfcm9vdHNoaWVsZF9wbHVzIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gcm9vdHNoaWVsZF9wbHVzX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX3Jvb3RzaGllbGRfcGx1cykNCkFub3ZhKG1vZF9yb290c2hpZWxkX3BsdXMpDQoNCm1ycy5zIDwtIGVtbWVhbnMobW9kX3Jvb3RzaGllbGRfcGx1cywgcGFpcndpc2UgfiByb290c2hpZWxkX3BsdXNfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptcnMucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1ycy5zJGVtbWVhbnMpDQptcnMucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIExBTFNUT1AgSzYxIC0tLS0tLS0tLS0tLS0tLS0NCm1vZF9sYWxzdG9wX2s2MSA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IGxhbHN0b3BfazYxX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX2xhbHN0b3BfazYxKQ0KQW5vdmEobW9kX2xhbHN0b3BfazYxKQ0KDQptbGsucyA8LSBlbW1lYW5zKG1vZF9sYWxzdG9wX2s2MSwgcGFpcndpc2UgfiBsYWxzdG9wX2s2MV9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1say5zLmRmIDwtIGFzLmRhdGEuZnJhbWUobWxrLnMkZW1tZWFucykNCm1say5zDQoNCiMjIC0tLS0tLS0tLS0tLS0tLS0gQkVMRUFGIDUwU0cgLS0tLS0tLS0tLS0tLS0tLQ0KbW9kX2JlbGVhZl81MHNnIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gYmVsZWFmXzUwc2dfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikNCikNCg0Kc3VtbWFyeShtb2RfYmVsZWFmXzUwc2cpDQpBbm92YShtb2RfYmVsZWFmXzUwc2cpDQoNCm1iZi5zIDwtIGVtbWVhbnMobW9kX2JlbGVhZl81MHNnLCBwYWlyd2lzZSB+IGJlbGVhZl81MHNnX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWJmLnMuZGYgPC0gYXMuZGF0YS5mcmFtZShtYmYucyRlbW1lYW5zKQ0KbWJmLnMNCg0KIyMgLS0tLS0tLS0tLS0tLS0tLSBDT1JBR0VOIC0tLS0tLS0tLS0tLS0tLS0NCm1vZF9jb3JhZ2VuIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gY29yYWdlbl9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKQ0KKQ0KDQpzdW1tYXJ5KG1vZF9jb3JhZ2VuKQ0KQW5vdmEobW9kX2NvcmFnZW4pDQoNCm1jZy5zIDwtIGVtbWVhbnMobW9kX2NvcmFnZW4sIHBhaXJ3aXNlIH4gY29yYWdlbl9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1jZy5zLmRmIDwtIGFzLmRhdGEuZnJhbWUobWNnLnMkZW1tZWFucykNCm1jZy5zDQoNCiMjIC0tLS0tLS0tLS0tLS0tLS0gRU5UUlVTVCBTQyAtLS0tLS0tLS0tLS0tLS0tDQptb2RfZW50cnVzdF9zYyA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IGVudHJ1c3Rfc2NfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikNCikNCg0Kc3VtbWFyeShtb2RfZW50cnVzdF9zYykNCkFub3ZhKG1vZF9lbnRydXN0X3NjKQ0KDQptZXMucyA8LSBlbW1lYW5zKG1vZF9lbnRydXN0X3NjLCBwYWlyd2lzZSB+IGVudHJ1c3Rfc2NfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptZXMucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1lcy5zJGVtbWVhbnMpDQptZXMucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIFBZTE9OIC0tLS0tLS0tLS0tLS0tLS0NCm1vZF9weWxvbiA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IHB5bG9uX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX3B5bG9uKQ0KQW5vdmEobW9kX3B5bG9uKQ0KDQptcHkucyA8LSBlbW1lYW5zKG1vZF9weWxvbiwgcGFpcndpc2UgfiBweWxvbl9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1weS5zLmRmIDwtIGFzLmRhdGEuZnJhbWUobXB5LnMkZW1tZWFucykNCm1weS5zIA0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIEdST1RUTyAtLS0tLS0tLS0tLS0tLS0tDQptb2RfZ3JvdHRvIDwtIGdsbSgNCiAgY2JpbmQoY3JpdGhfcG9zLCBjcml0aF9uZWcpIH4gZ3JvdHRvX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX2dyb3R0bykNCkFub3ZhKG1vZF9ncm90dG8pDQoNCm1nci5zIDwtIGVtbWVhbnMobW9kX2dyb3R0bywgcGFpcndpc2UgfiBncm90dG9fTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptZ3Iucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1nci5zJGVtbWVhbnMpDQptZ3Iucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIExVTkEgVFJBTlFVSUxJVFkgLS0tLS0tLS0tLS0tLS0tLQ0KbW9kX2x1bmFfdHJhbnF1aWxpdHkgPC0gZ2xtKA0KICBjYmluZChjcml0aF9wb3MsIGNyaXRoX25lZykgfiBsdW5hX3RyYW5xdWlsaXR5X0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX2x1bmFfdHJhbnF1aWxpdHkpDQpBbm92YShtb2RfbHVuYV90cmFucXVpbGl0eSkNCg0KbWx0LnMgPC0gZW1tZWFucyhtb2RfbHVuYV90cmFucXVpbGl0eSwgcGFpcndpc2UgfiBsdW5hX3RyYW5xdWlsaXR5X0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWx0LnMuZGYgPC0gYXMuZGF0YS5mcmFtZShtbHQucyRlbW1lYW5zKQ0KbWx0LnMgDQoNCiMjIC0tLS0tLS0tLS0tLS0tLS0gUFJFVklDVVIgRkxFWCAtLS0tLS0tLS0tLS0tLS0tDQptb2RfcHJldmljdXJfZmxleCA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IHByZXZpY3VyX2ZsZXhfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikNCikNCg0Kc3VtbWFyeShtb2RfcHJldmljdXJfZmxleCkNCkFub3ZhKG1vZF9wcmV2aWN1cl9mbGV4KQ0KDQptcGYucyA8LSBlbW1lYW5zKG1vZF9wcmV2aWN1cl9mbGV4LCBwYWlyd2lzZSB+IHByZXZpY3VyX2ZsZXhfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptcGYucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1wZi5zJGVtbWVhbnMpDQptcGYucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIEZPTlRFTElTIC0tLS0tLS0tLS0tLS0tLS0NCm1vZF9mb250ZWxpcyA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IGZvbnRlbGlzX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX2ZvbnRlbGlzKQ0KQW5vdmEobW9kX2ZvbnRlbGlzKQ0KDQptZm8ucyA8LSBlbW1lYW5zKG1vZF9mb250ZWxpcywgcGFpcndpc2UgfiBmb250ZWxpc19MLCB0eXBlID0gInJlc3BvbnNlIikNCm1mby5zLmRmIDwtIGFzLmRhdGEuZnJhbWUobWZvLnMkZW1tZWFucykNCm1mby5zDQoNCiMjIC0tLS0tLS0tLS0tLS0tLS0gUVVBRFJJU1RPUCAtLS0tLS0tLS0tLS0tLS0tDQptb2RfcXVhZHJpc3RvcCA8LSBnbG0oDQogIGNiaW5kKGNyaXRoX3BvcywgY3JpdGhfbmVnKSB+IHF1YWRyaXN0b3BfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikNCikNCg0Kc3VtbWFyeShtb2RfcXVhZHJpc3RvcCkNCkFub3ZhKG1vZF9xdWFkcmlzdG9wKQ0KDQptcXMucyA8LSBlbW1lYW5zKG1vZF9xdWFkcmlzdG9wLCBwYWlyd2lzZSB+IHF1YWRyaXN0b3BfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptcXMucy5kZiA8LSBhcy5kYXRhLmZyYW1lKG1xcy5zJGVtbWVhbnMpDQptcXMucw0KDQojIyAtLS0tLS0tLS0tLS0tLS0tIE1JTFNUT1AgLS0tLS0tLS0tLS0tLS0tLQ0KbW9kX21pbHN0b3AgPC0gZ2xtKA0KICBjYmluZChjcml0aF9wb3MsIGNyaXRoX25lZykgfiBtaWxzdG9wX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpDQopDQoNCnN1bW1hcnkobW9kX21pbHN0b3ApDQpBbm92YShtb2RfbWlsc3RvcCkNCg0KbW1zLnMgPC0gZW1tZWFucyhtb2RfbWlsc3RvcCwgcGFpcndpc2UgfiBtaWxzdG9wX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbW1zLnMuZGYgPC0gYXMuZGF0YS5mcmFtZShtbXMucyRlbW1lYW5zKQ0KbW1zLnMgDQpgYGANCg0KYGBge3J9DQptYS5zIA0KbWIyMi5zIA0KbWJlLnMgDQptY3AucyANCm1uZi5zIA0KbXZjLnMgDQptbXAucyANCm1ycy5zIA0KbWxrLnMgDQptYmYucyANCm1jZy5zIA0KbWVzLnMgDQptcHkucyANCm1nci5zIA0KbWx0LnMgIA0KbXBmLnMgDQptZm8ucyANCm1xcy5zIA0KbW1zLnMgDQpgYGANCg0KDQojIyMgU3VtbWFyeSBUYWJsZQ0KDQpgYGB7cn0NCm1vZC5jcml0aCA8LSBsaXN0KA0KYXphZ3VhcmQgPSBtb2RfYXphZ3VhcmQsDQpib3RhbmlnYXJkXzIyd3AgPSBtb2RfYm90YW5pZ2FyZF8yMndwLA0KYm90YW5pZ2FyZF9lcyA9IG1vZF9ib3RhbmlnYXJkX2VzLA0KY2FwdGl2YV9wcmltZSA9IG1vZF9jYXB0aXZhX3ByaW1lLA0Kbm9mbHkgPSBtb2Rfbm9mbHksDQp2ZW5lcmF0ZV9jZyA9IG1vZF92ZW5lcmF0ZV9jZywNCm1fcGVkZSA9IG1vZF9tX3BlZGUsDQpyb290c2hpZWxkX3BsdXMgPSBtb2Rfcm9vdHNoaWVsZF9wbHVzLA0KbGFsc3RvcF9rNjEgPSBtb2RfbGFsc3RvcF9rNjEsDQpiZWxlYWZfNTBzZyA9IG1vZF9iZWxlYWZfNTBzZywNCmNvcmFnZW4gPSBtb2RfY29yYWdlbiwNCmVudHJ1c3Rfc2MgPSBtb2RfZW50cnVzdF9zYywNCnB5bG9uID0gbW9kX3B5bG9uLA0KZ3JvdHRvID0gbW9kX2dyb3R0bywNCmx1bmFfdHJhbnF1aWxpdHkgPSBtb2RfbHVuYV90cmFucXVpbGl0eSwNCnByZXZpY3VyX2ZsZXggPSBtb2RfcHJldmljdXJfZmxleCwNCmZvbnRlbGlzID0gbW9kX2ZvbnRlbGlzLA0KcXVhZHJpc3RvcCA9IG1vZF9xdWFkcmlzdG9wLA0KbWlsc3RvcCA9IG1vZF9taWxzdG9wDQopDQoNCg0Kc3VtbWFyeV90YWJsZS5jcml0aCA8LSBkby5jYWxsKHJiaW5kLCBsYXBwbHkobmFtZXMobW9kLmNyaXRoKSwgZnVuY3Rpb24obmFtZSl7DQoNCiAgbSA8LSBtb2QuY3JpdGhbW25hbWVdXQ0KICBzIDwtIHN1bW1hcnkobSkNCg0KICBjb2VmX3JvdyA8LSBzJGNvZWZmaWNpZW50c1syLCBdDQogIGxyIDwtIEFub3ZhKG0pJGBMUiBDaGlzcWBbMV0NCiAgTFJUIDwtIEFub3ZhKG0pJCdQcig+Q2hpc3EpJ1sxXQ0KDQogIGRhdGEuZnJhbWUoDQogICAgUGVzdGljaWRlID0gbmFtZSwNCiAgICBFc3RpbWF0ZSA9IGNvZWZfcm93WyJFc3RpbWF0ZSJdLA0KICAgIFNFID0gY29lZl9yb3dbIlN0ZC4gRXJyb3IiXSwNCiAgICB6ID0gY29lZl9yb3dbInogdmFsdWUiXSwNCiAgICBwID0gY29lZl9yb3dbIlByKD58enwpIl0sDQogICAgTFJfQ2hpU3EgPSBsciwNCiAgICBMUlQgPSBMUlQsDQogICAgQUlDID0gQUlDKG0pLA0KICAgIFJlc2lkdWFsX0RldmlhbmNlID0gbSRkZXZpYW5jZQ0KICApDQp9KSkNCg0KDQpzdW1tYXJ5X3RhYmxlLmNyaXRoJEVzdGltYXRlIDwtIHNpZ25pZihzdW1tYXJ5X3RhYmxlLmNyaXRoJEVzdGltYXRlLDMpDQpzdW1tYXJ5X3RhYmxlLmNyaXRoJFNFIDwtIHNpZ25pZihzdW1tYXJ5X3RhYmxlLmNyaXRoJFNFLDMpDQpzdW1tYXJ5X3RhYmxlLmNyaXRoJHogPC0gcm91bmQoc3VtbWFyeV90YWJsZS5jcml0aCR6LDIpDQpzdW1tYXJ5X3RhYmxlLmNyaXRoJHAgPC0gc2lnbmlmKHN1bW1hcnlfdGFibGUuY3JpdGgkcCwzKQ0Kc3VtbWFyeV90YWJsZS5jcml0aCRMUl9DaGlTcSA8LSByb3VuZChzdW1tYXJ5X3RhYmxlLmNyaXRoJExSX0NoaVNxLDIpDQpzdW1tYXJ5X3RhYmxlLmNyaXRoJEFJQyA8LSByb3VuZChzdW1tYXJ5X3RhYmxlLmNyaXRoJEFJQywyKQ0Kc3VtbWFyeV90YWJsZS5jcml0aCRSZXNpZHVhbF9EZXZpYW5jZSA8LSByb3VuZChzdW1tYXJ5X3RhYmxlLmNyaXRoJFJlc2lkdWFsX0RldmlhbmNlLDIpDQpzdW1tYXJ5X3RhYmxlLmNyaXRoJExSVCA8LSBzaWduaWYoc3VtbWFyeV90YWJsZS5jcml0aCRMUlQsMikNCg0Kc3VtbWFyeV90YWJsZS5jcml0aA0KDQpjc2RmIDwtIGFzLmRhdGEuZnJhbWUoc3VtbWFyeV90YWJsZS5jcml0aCkNCg0KYGBgDQoNCiMjIyMgUGxvdHMNCg0KIyMjIyMgYmFzaWMgcGxvdCANCg0KYGBge3IsIGZpZy5oZWlnaHQ9MjAsIGZpZy53aWR0aD0xMiwgZHBpPTYwMH0NCnByZWRpY3RvcnMgPC0gYygNCiJhemFndWFyZF9MIiwNCiJib3RhbmlnYXJkXzIyd3BfTCIsDQoiYm90YW5pZ2FyZF9lc19MIiwNCiJjYXB0aXZhX3ByaW1lX0wiLA0KIm5vZmx5X0wiLA0KInZlbmVyYXRlX2NnX0wiLA0KIm1fcGVkZV9MIiwNCiJyb290c2hpZWxkX3BsdXNfTCIsDQoibGFsc3RvcF9rNjFfTCIsDQoiYmVsZWFmXzUwc2dfTCIsDQoiY29yYWdlbl9MIiwNCiJlbnRydXN0X3NjX0wiLA0KInB5bG9uX0wiLA0KImdyb3R0b19MIiwNCiJsdW5hX3RyYW5xdWlsaXR5X0wiLA0KInByZXZpY3VyX2ZsZXhfTCIsDQoiZm9udGVsaXNfTCIsDQoicXVhZHJpc3RvcF9MIiwNCiJtaWxzdG9wX0wiDQopDQoNCmdoNiRjcml0aF9wcm9wIDwtIGdoNiRjcml0aF9wb3MgLw0KICAoZ2g2JGNyaXRoX3BvcyArIGdoNiRjcml0aF9uZWcpDQoNCmdoNiRjcml0aF9zZSA8LSBzcXJ0KA0KICAoZ2g2JGNyaXRoX3Byb3AgKiAoMSAtIGdoNiRjcml0aF9wcm9wKSkgLw0KICAoZ2g2JGNyaXRoX3BvcyArIGdoNiRjcml0aF9uZWcpDQopDQoNCg0KcGxvdHMgPC0gbGFwcGx5KHByZWRpY3RvcnMsIGZ1bmN0aW9uKHZhcil7DQoNCiAgZ2dwbG90KGdoNiwgYWVzX3N0cmluZyh4ID0gdmFyLCB5ID0gImNyaXRoX3Byb3AiKSkgKw0KICAgIGdlb21fYm94cGxvdCh3aWR0aCA9IDAuNSwgYWxwaGEgPSAwLjYsIG91dGxpZXIuc2hhcGUgPSBOQSkgKw0KICAgIGdlb21faml0dGVyKHdpZHRoID0gMC4xLCBzaXplID0gMywgYWxwaGEgPSAwLjgpICsNCiAgICBsYWJzKA0KICAgICAgeCA9IHZhciwNCiAgICAgIHkgPSAiQ3JpdGhpZGlhIGluZmVjdGlvbiBwcm9wb3J0aW9uIg0KICAgICkgKw0KICAgIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTQpICsNCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIkZBTFNFIiA9ICJOb3QgYXBwbGllZCIsICJUUlVFIiA9ICJBcHBsaWVkIikpDQp9KQ0KDQp3cmFwX3Bsb3RzKHBsb3RzLCBuY29sID0gNCkNCg0KYGBgDQoNCg0KIyMjIyMgdXBkYXRlZCBjcml0aGlkaWEgdnMuIGxvZ2ljYWwgY2hlbXMgDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTIyLCBmaWcud2lkdGg9MTh9DQpwbG90cyA8LSBsYXBwbHkoMTpucm93KGNoZW1faW5mbyksIGZ1bmN0aW9uKGkpew0KDQoNCmNoZW1fdHlwZSA8LSBjaGVtX2luZm8kdHlwZVtpXQ0KY2hlbV9tb2RlIDwtIGNoZW1faW5mbyRtb2RlW2ldDQp2YXIgPC0gY2hlbV9pbmZvJHBlc3RpY2lkZVtpXQ0KY2hlbV9jbGFzcyA8LSBjaGVtX2luZm8kY2xhc3NbaV0NCnZhcjIgPC0gZ3N1YigiX0wkIiwgIiIsIGNoZW1faW5mbyRwZXN0aWNpZGVbaV0pICAjIHJlbW92ZSBfTCBhdCBlbmQNCg0KDQpzdGF0c19yb3cgPC0gc3VtbWFyeV90YWJsZS5jcml0aFtzdW1tYXJ5X3RhYmxlLmNyaXRoJFBlc3RpY2lkZSA9PSB2YXIyLCBdDQoNCmFubm90X3RleHQgPC0gcGFzdGUwKA0KICAgICJMUlQgz4fCsiA9ICIsIHJvdW5kKHN0YXRzX3JvdyRMUl9DaGlTcSwgMiksIA0KICAgICIsIHAgPSAiLCBzaWduaWYoc3RhdHNfcm93JExSVCwgMykpDQoNCmdncGxvdChnaDYsIGFlc19zdHJpbmcoeCA9IHZhciwgeSA9ICJjcml0aF9wcm9wIikpICsNCiAgZ2VvbV9ib3hwbG90KGZpbGwgPSBjaGVtX2NvbG9yc1tjaGVtX2NsYXNzXSwNCiAgICAgICAgICAgICAgIGFscGhhID0gMC42LA0KICAgICAgICAgICAgICAgd2lkdGggPSAwLjUsDQogICAgICAgICAgICAgICBvdXRsaWVyLnNoYXBlID0gTkEpICsNCiAgZ2VvbV9qaXR0ZXIod2lkdGggPSAwLjEsIHNpemUgPSAzLCBhbHBoYSA9IDAuOCkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gZ3N1YigiX0wiLCIiLHZhciksDQogICAgc3VidGl0bGUgPSBwYXN0ZShjaGVtX3R5cGUsICItIiwgY2hlbV9tb2RlKSwNCiAgICB4ID0gIiIsDQogICAgeSA9ICJQcm9iYWJpbGl0eSBvZiAqQ3JpdGhpZGlhKiBEZXRlY3Rpb24iDQogICkgKw0KICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIkZBTFNFIj0iTm90IGFwcGxpZWQiLCJUUlVFIj0iQXBwbGllZCIpKSArDQogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTYpICsNCiAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgICAgInRleHQiLA0KICAgICAgeCA9IDIsIHkgPSAxLjA1LCAjIHRvcC1yaWdodA0KICAgICAgbGFiZWwgPSBhbm5vdF90ZXh0LA0KICAgICAgaGp1c3QgPSAxLCB2anVzdCA9IDEsIHNpemUgPSA0DQogICAgKSArDQogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygwLCAxKSkNCn0pDQoNCg0Kd3JhcF9wbG90cyhwbG90cywgbmNvbCA9IDQpDQpgYGANCg0KIyMgQXBpY3lzdGlzIHZzLiBsb2dpY2FsIGNoZW1pY2FscyANCg0KYGBge3J9DQptb2QuYV9hemFndWFyZCA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gYXphZ3VhcmRfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZC5hX2F6YWd1YXJkKQ0KQW5vdmEobW9kLmFfYXphZ3VhcmQpDQoNCm1hLmEgPC0gZW1tZWFucyhtb2QuYV9hemFndWFyZCwgcGFpcndpc2UgfiBhemFndWFyZF9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1hLmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtYS5hJGVtbWVhbnMpDQptYS5hDQoNCg0KbW9kLmFfYm90YW5pZ2FyZF8yMndwIDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiBib3RhbmlnYXJkXzIyd3BfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZC5hX2JvdGFuaWdhcmRfMjJ3cCkNCkFub3ZhKG1vZC5hX2JvdGFuaWdhcmRfMjJ3cCkNCg0KbWIyMi5hIDwtIGVtbWVhbnMobW9kLmFfYm90YW5pZ2FyZF8yMndwLCBwYWlyd2lzZSB+IGJvdGFuaWdhcmRfMjJ3cF9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1iMjIuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1iMjIuYSRlbW1lYW5zKQ0KbWIyMi5hDQoNCg0KbW9kLmFfYm90YW5pZ2FyZF9lcyA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gYm90YW5pZ2FyZF9lc19MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfYm90YW5pZ2FyZF9lcykNCkFub3ZhKG1vZC5hX2JvdGFuaWdhcmRfZXMpDQoNCm1iZS5hIDwtIGVtbWVhbnMobW9kLmFfYm90YW5pZ2FyZF9lcywgcGFpcndpc2UgfiBib3RhbmlnYXJkX2VzX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWJlLmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtYmUuYSRlbW1lYW5zKQ0KbWJlLmENCg0KDQptb2QuYV9jYXB0aXZhX3ByaW1lIDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiBjYXB0aXZhX3ByaW1lX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV9jYXB0aXZhX3ByaW1lKQ0KQW5vdmEobW9kLmFfY2FwdGl2YV9wcmltZSkNCg0KbWNwLmEgPC0gZW1tZWFucyhtb2QuYV9jYXB0aXZhX3ByaW1lLCBwYWlyd2lzZSB+IGNhcHRpdmFfcHJpbWVfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptY3AuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1jcC5hJGVtbWVhbnMpDQptY3AuYQ0KDQoNCm1vZC5hX25vZmx5IDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiBub2ZseV9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfbm9mbHkpDQpBbm92YShtb2QuYV9ub2ZseSkNCg0KbW5mLmEgPC0gZW1tZWFucyhtb2QuYV9ub2ZseSwgcGFpcndpc2UgfiBub2ZseV9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1uZi5hLmRmIDwtIGFzLmRhdGEuZnJhbWUobW5mLmEkZW1tZWFucykNCm1uZi5hDQoNCg0KbW9kLmFfdmVuZXJhdGVfY2cgPC0gZ2xtKA0KICBjYmluZChhcGlfcG9zLCBhcGlfbmVnKSB+IHZlbmVyYXRlX2NnX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV92ZW5lcmF0ZV9jZykNCkFub3ZhKG1vZC5hX3ZlbmVyYXRlX2NnKQ0KDQptdmMuYSA8LSBlbW1lYW5zKG1vZC5hX3ZlbmVyYXRlX2NnLCBwYWlyd2lzZSB+IHZlbmVyYXRlX2NnX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbXZjLmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtdmMuYSRlbW1lYW5zKQ0KbXZjLmENCg0KDQptb2QuYV9tX3BlZGUgPC0gZ2xtKA0KICBjYmluZChhcGlfcG9zLCBhcGlfbmVnKSB+IG1fcGVkZV9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfbV9wZWRlKQ0KQW5vdmEobW9kLmFfbV9wZWRlKQ0KDQptbXAuYSA8LSBlbW1lYW5zKG1vZC5hX21fcGVkZSwgcGFpcndpc2UgfiBtX3BlZGVfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptbXAuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1tcC5hJGVtbWVhbnMpDQptbXAuYQ0KDQoNCm1vZC5hX3Jvb3RzaGllbGRfcGx1cyA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gcm9vdHNoaWVsZF9wbHVzX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV9yb290c2hpZWxkX3BsdXMpDQpBbm92YShtb2QuYV9yb290c2hpZWxkX3BsdXMpDQoNCm1ycy5hIDwtIGVtbWVhbnMobW9kLmFfcm9vdHNoaWVsZF9wbHVzLCBwYWlyd2lzZSB+IHJvb3RzaGllbGRfcGx1c19MLCB0eXBlID0gInJlc3BvbnNlIikNCm1ycy5hLmRmIDwtIGFzLmRhdGEuZnJhbWUobXJzLmEkZW1tZWFucykNCm1ycy5hDQoNCg0KbW9kLmFfbGFsc3RvcF9rNjEgPC0gZ2xtKA0KICBjYmluZChhcGlfcG9zLCBhcGlfbmVnKSB+IGxhbHN0b3BfazYxX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV9sYWxzdG9wX2s2MSkNCkFub3ZhKG1vZC5hX2xhbHN0b3BfazYxKQ0KDQptbGsuYSA8LSBlbW1lYW5zKG1vZC5hX2xhbHN0b3BfazYxLCBwYWlyd2lzZSB+IGxhbHN0b3BfazYxX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWxrLmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtbGsuYSRlbW1lYW5zKQ0KbWxrLmENCg0KDQptb2QuYV9iZWxlYWZfNTBzZyA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gYmVsZWFmXzUwc2dfTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZC5hX2JlbGVhZl81MHNnKQ0KQW5vdmEobW9kLmFfYmVsZWFmXzUwc2cpDQoNCm1iZi5hIDwtIGVtbWVhbnMobW9kLmFfYmVsZWFmXzUwc2csIHBhaXJ3aXNlIH4gYmVsZWFmXzUwc2dfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptYmYuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1iZi5hJGVtbWVhbnMpDQptYmYuYQ0KDQoNCm1vZC5hX2NvcmFnZW4gPC0gZ2xtKA0KICBjYmluZChhcGlfcG9zLCBhcGlfbmVnKSB+IGNvcmFnZW5fTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZC5hX2NvcmFnZW4pDQpBbm92YShtb2QuYV9jb3JhZ2VuKQ0KDQptY2cuYSA8LSBlbW1lYW5zKG1vZC5hX2NvcmFnZW4sIHBhaXJ3aXNlIH4gY29yYWdlbl9MLCB0eXBlID0gInJlc3BvbnNlIikNCm1jZy5hLmRmIDwtIGFzLmRhdGEuZnJhbWUobWNnLmEkZW1tZWFucykNCm1jZy5hDQoNCg0KbW9kLmFfZW50cnVzdF9zYyA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gZW50cnVzdF9zY19MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfZW50cnVzdF9zYykNCkFub3ZhKG1vZC5hX2VudHJ1c3Rfc2MpDQoNCm1lcy5hIDwtIGVtbWVhbnMobW9kLmFfZW50cnVzdF9zYywgcGFpcndpc2UgfiBlbnRydXN0X3NjX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWVzLmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtZXMuYSRlbW1lYW5zKQ0KbWVzLmENCg0KDQptb2QuYV9weWxvbiA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gcHlsb25fTCwNCiAgZGF0YSA9IGdoNiwNCiAgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZC5hX3B5bG9uKQ0KQW5vdmEobW9kLmFfcHlsb24pDQoNCm1weS5hIDwtIGVtbWVhbnMobW9kLmFfcHlsb24sIHBhaXJ3aXNlIH4gcHlsb25fTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptcHkuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1weS5hJGVtbWVhbnMpDQptcHkuYQ0KDQoNCm1vZC5hX2dyb3R0byA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gZ3JvdHRvX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV9ncm90dG8pDQpBbm92YShtb2QuYV9ncm90dG8pDQoNCm1nci5hIDwtIGVtbWVhbnMobW9kLmFfZ3JvdHRvLCBwYWlyd2lzZSB+IGdyb3R0b19MLCB0eXBlID0gInJlc3BvbnNlIikNCm1nci5hLmRmIDwtIGFzLmRhdGEuZnJhbWUobWdyLmEkZW1tZWFucykNCm1nci5hDQoNCg0KbW9kLmFfbHVuYV90cmFucXVpbGl0eSA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gbHVuYV90cmFucXVpbGl0eV9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfbHVuYV90cmFucXVpbGl0eSkNCkFub3ZhKG1vZC5hX2x1bmFfdHJhbnF1aWxpdHkpDQoNCm1sdC5hIDwtIGVtbWVhbnMobW9kLmFfbHVuYV90cmFucXVpbGl0eSwgcGFpcndpc2UgfiBsdW5hX3RyYW5xdWlsaXR5X0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbWx0LmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtbHQuYSRlbW1lYW5zKQ0KbWx0LmENCg0KDQptb2QuYV9wcmV2aWN1cl9mbGV4IDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiBwcmV2aWN1cl9mbGV4X0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV9wcmV2aWN1cl9mbGV4KQ0KQW5vdmEobW9kLmFfcHJldmljdXJfZmxleCkNCg0KbXBmLmEgPC0gZW1tZWFucyhtb2QuYV9wcmV2aWN1cl9mbGV4LCBwYWlyd2lzZSB+IHByZXZpY3VyX2ZsZXhfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptcGYuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1wZi5hJGVtbWVhbnMpDQptcGYuYQ0KDQoNCm1vZC5hX2ZvbnRlbGlzIDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiBmb250ZWxpc19MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfZm9udGVsaXMpDQpBbm92YShtb2QuYV9mb250ZWxpcykNCg0KbWZvLmEgPC0gZW1tZWFucyhtb2QuYV9mb250ZWxpcywgcGFpcndpc2UgfiBmb250ZWxpc19MLCB0eXBlID0gInJlc3BvbnNlIikNCm1mby5hLmRmIDwtIGFzLmRhdGEuZnJhbWUobWZvLmEkZW1tZWFucykNCm1mby5hDQoNCg0KbW9kLmFfcXVhZHJpc3RvcCA8LSBnbG0oDQogIGNiaW5kKGFwaV9wb3MsIGFwaV9uZWcpIH4gcXVhZHJpc3RvcF9MLA0KICBkYXRhID0gZ2g2LA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kLmFfcXVhZHJpc3RvcCkNCkFub3ZhKG1vZC5hX3F1YWRyaXN0b3ApDQoNCm1xcy5hIDwtIGVtbWVhbnMobW9kLmFfcXVhZHJpc3RvcCwgcGFpcndpc2UgfiBxdWFkcmlzdG9wX0wsIHR5cGUgPSAicmVzcG9uc2UiKQ0KbXFzLmEuZGYgPC0gYXMuZGF0YS5mcmFtZShtcXMuYSRlbW1lYW5zKQ0KbXFzLmENCg0KDQptb2QuYV9taWxzdG9wIDwtIGdsbSgNCiAgY2JpbmQoYXBpX3BvcywgYXBpX25lZykgfiBtaWxzdG9wX0wsDQogIGRhdGEgPSBnaDYsDQogIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QuYV9taWxzdG9wKQ0KQW5vdmEobW9kLmFfbWlsc3RvcCkNCg0KbW1zLmEgPC0gZW1tZWFucyhtb2QuYV9taWxzdG9wLCBwYWlyd2lzZSB+IG1pbHN0b3BfTCwgdHlwZSA9ICJyZXNwb25zZSIpDQptbXMuYS5kZiA8LSBhcy5kYXRhLmZyYW1lKG1tcy5hJGVtbWVhbnMpDQptbXMuYQ0KDQpgYGANCg0KYGBge3J9DQptYS5hIA0KbWIyMi5hIA0KbWJlLmEgDQptY3AuYSANCm1uZi5hIA0KbXZjLmEgDQptbXAuYSANCm1ycy5hIA0KbWxrLmEgDQptYmYuYSANCm1jZy5hIA0KbWVzLmEgDQptcHkuYSANCm1nci5hIA0KbWx0LmEgIA0KbXBmLmEgDQptZm8uYSANCm1xcy5hIA0KbW1zLmEgDQpgYGANCg0KDQojIyMgc3VtbWFyeSB0YWJsZSANCg0KYGBge3J9DQptb2QuYS5hcGkgPC0gbGlzdCgNCmF6YWd1YXJkID0gbW9kLmFfYXphZ3VhcmQsDQpib3RhbmlnYXJkXzIyd3AgPSBtb2QuYV9ib3RhbmlnYXJkXzIyd3AsDQpib3RhbmlnYXJkX2VzID0gbW9kLmFfYm90YW5pZ2FyZF9lcywNCmNhcHRpdmFfcHJpbWUgPSBtb2QuYV9jYXB0aXZhX3ByaW1lLA0Kbm9mbHkgPSBtb2QuYV9ub2ZseSwNCnZlbmVyYXRlX2NnID0gbW9kLmFfdmVuZXJhdGVfY2csDQptX3BlZGUgPSBtb2QuYV9tX3BlZGUsDQpyb290c2hpZWxkX3BsdXMgPSBtb2QuYV9yb290c2hpZWxkX3BsdXMsDQpsYWxzdG9wX2s2MSA9IG1vZC5hX2xhbHN0b3BfazYxLA0KYmVsZWFmXzUwc2cgPSBtb2QuYV9iZWxlYWZfNTBzZywNCmNvcmFnZW4gPSBtb2QuYV9jb3JhZ2VuLA0KZW50cnVzdF9zYyA9IG1vZC5hX2VudHJ1c3Rfc2MsDQpweWxvbiA9IG1vZC5hX3B5bG9uLA0KZ3JvdHRvID0gbW9kLmFfZ3JvdHRvLA0KbHVuYV90cmFucXVpbGl0eSA9IG1vZC5hX2x1bmFfdHJhbnF1aWxpdHksDQpwcmV2aWN1cl9mbGV4ID0gbW9kLmFfcHJldmljdXJfZmxleCwNCmZvbnRlbGlzID0gbW9kLmFfZm9udGVsaXMsDQpxdWFkcmlzdG9wID0gbW9kLmFfcXVhZHJpc3RvcCwNCm1pbHN0b3AgPSBtb2QuYV9taWxzdG9wDQopDQoNCg0Kc3VtbWFyeV90YWJsZS5hcGkgPC0gZG8uY2FsbChyYmluZCwgbGFwcGx5KG5hbWVzKG1vZC5hLmFwaSksIGZ1bmN0aW9uKG5hbWUpew0KDQogIG0gPC0gbW9kLmEuYXBpW1tuYW1lXV0NCiAgcyA8LSBzdW1tYXJ5KG0pDQoNCiAgY29lZl9yb3cgPC0gcyRjb2VmZmljaWVudHNbMiwgXQ0KICBsciA8LSBBbm92YShtKSRgTFIgQ2hpc3FgWzFdDQogIExSVCA8LSBBbm92YShtKSQnUHIoPkNoaXNxKSdbMV0NCg0KICBkYXRhLmZyYW1lKA0KICAgIFBlc3RpY2lkZSA9IG5hbWUsDQogICAgRXN0aW1hdGUgPSBjb2VmX3Jvd1siRXN0aW1hdGUiXSwNCiAgICBTRSA9IGNvZWZfcm93WyJTdGQuIEVycm9yIl0sDQogICAgeiA9IGNvZWZfcm93WyJ6IHZhbHVlIl0sDQogICAgcCA9IGNvZWZfcm93WyJQcig+fHp8KSJdLA0KICAgIExSX0NoaVNxID0gbHIsDQogICAgTFJUID0gTFJULA0KICAgIEFJQyA9IEFJQyhtKSwNCiAgICBSZXNpZHVhbF9EZXZpYW5jZSA9IG0kZGV2aWFuY2UNCiAgKQ0KfSkpDQoNCg0Kc3VtbWFyeV90YWJsZS5hcGkkRXN0aW1hdGUgPC0gc2lnbmlmKHN1bW1hcnlfdGFibGUuYXBpJEVzdGltYXRlLDMpDQpzdW1tYXJ5X3RhYmxlLmFwaSRTRSA8LSBzaWduaWYoc3VtbWFyeV90YWJsZS5hcGkkU0UsMykNCnN1bW1hcnlfdGFibGUuYXBpJHogPC0gcm91bmQoc3VtbWFyeV90YWJsZS5hcGkkeiwyKQ0Kc3VtbWFyeV90YWJsZS5hcGkkcCA8LSBzaWduaWYoc3VtbWFyeV90YWJsZS5hcGkkcCwzKQ0Kc3VtbWFyeV90YWJsZS5hcGkkTFJfQ2hpU3EgPC0gcm91bmQoc3VtbWFyeV90YWJsZS5hcGkkTFJfQ2hpU3EsMikNCnN1bW1hcnlfdGFibGUuYXBpJEFJQyA8LSByb3VuZChzdW1tYXJ5X3RhYmxlLmFwaSRBSUMsMikNCnN1bW1hcnlfdGFibGUuYXBpJFJlc2lkdWFsX0RldmlhbmNlIDwtIHJvdW5kKHN1bW1hcnlfdGFibGUuYXBpJFJlc2lkdWFsX0RldmlhbmNlLDIpDQpzdW1tYXJ5X3RhYmxlLmFwaSRMUlQgPC0gc2lnbmlmKHN1bW1hcnlfdGFibGUuYXBpJExSVCwyKQ0KDQpzdW1tYXJ5X3RhYmxlLmFwaQ0KDQphc2RmIDwtIGFzLmRhdGEuZnJhbWUoc3VtbWFyeV90YWJsZS5hcGkpDQoNCmBgYA0KDQojIyMgcGxvdHMNCg0KYGBge3IsIGZpZy5oZWlnaHQ9MjIsIGZpZy53aWR0aD0xOH0NCnBsb3RzIDwtIGxhcHBseSgxOm5yb3coY2hlbV9pbmZvKSwgZnVuY3Rpb24oaSl7DQoNCg0KY2hlbV90eXBlIDwtIGNoZW1faW5mbyR0eXBlW2ldDQpjaGVtX21vZGUgPC0gY2hlbV9pbmZvJG1vZGVbaV0NCmNoZW1fY2xhc3MgPC0gY2hlbV9pbmZvJGNsYXNzW2ldDQp2YXIgPC0gY2hlbV9pbmZvJHBlc3RpY2lkZVtpXQ0KdmFyMiA8LSBnc3ViKCJfTCQiLCAiIiwgY2hlbV9pbmZvJHBlc3RpY2lkZVtpXSkgICMgcmVtb3ZlIF9MIGF0IGVuZA0KDQoNCnN0YXRzX3JvdyA8LSBzdW1tYXJ5X3RhYmxlLmFwaVtzdW1tYXJ5X3RhYmxlLmFwaSRQZXN0aWNpZGUgPT0gdmFyMiwgXQ0KDQphbm5vdF90ZXh0IDwtIHBhc3RlMCgNCiAgICAiTFJUIM+HwrIgPSAiLCByb3VuZChzdGF0c19yb3ckTFJfQ2hpU3EsIDIpLCANCiAgICAiLCBwID0gIiwgc2lnbmlmKHN0YXRzX3JvdyRMUlQsIDMpKQ0KDQpnZ3Bsb3QoZ2g2LCBhZXNfc3RyaW5nKHggPSB2YXIsIHkgPSAiYXBpX3Byb3AiKSkgKw0KICBnZW9tX2JveHBsb3QoZmlsbCA9IGNoZW1fY29sb3JzW2NoZW1fY2xhc3NdLA0KICAgICAgICAgICAgICAgYWxwaGEgPSAwLjYsDQogICAgICAgICAgICAgICB3aWR0aCA9IDAuNSwNCiAgICAgICAgICAgICAgIG91dGxpZXIuc2hhcGUgPSBOQSkgKw0KICBnZW9tX2ppdHRlcih3aWR0aCA9IDAuMSwgc2l6ZSA9IDMsIGFscGhhID0gMC44KSArDQogIGxhYnMoDQogICAgdGl0bGUgPSBnc3ViKCJfTCIsIiIsdmFyKSwNCiAgICBzdWJ0aXRsZSA9IHBhc3RlKGNoZW1fdHlwZSwgIi0iLCBjaGVtX21vZGUpLA0KICAgIHggPSAiIiwNCiAgICB5ID0gIlByb2JhYmlsaXR5IG9mICpBcGljeXN0aXMqIGRldGVjdGlvbiINCiAgKSArDQogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiRkFMU0UiPSJOb3QgYXBwbGllZCIsIlRSVUUiPSJBcHBsaWVkIikpICsNCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxNikgKw0KICAgdGhlbWUoYXhpcy50aXRsZS55ID0gZ2d0ZXh0OjplbGVtZW50X21hcmtkb3duKCkpICsgDQogIGFubm90YXRlKA0KICAgICAgInRleHQiLA0KICAgICAgeCA9IDIsIHkgPSAxLjA1LCAjIHRvcC1yaWdodA0KICAgICAgbGFiZWwgPSBhbm5vdF90ZXh0LA0KICAgICAgaGp1c3QgPSAxLCB2anVzdCA9IDEsIHNpemUgPSA0DQogICAgKSArDQogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygwLCAxKSkNCn0pDQoNCg0Kd3JhcF9wbG90cyhwbG90cywgbmNvbCA9IDQpDQpgYGANCg0KIyMjIGFudGhlciBicnVpc2luZyB2cy4gc3BlY2lmaWMgY2hlbWljYWxzIHByZXNlbmNlIGFic2VuY2UgDQoNCmBgYHtyfQ0KYW50aF9jaGVtX20xIDwtIGdsbShsb2dicnVpc2UgfiBhemFndWFyZF9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX20xKQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTEpDQoNCmFudGhfY2hlbV9tMiA8LSBnbG0obG9nYnJ1aXNlIH4gYm90YW5pZ2FyZF8yMndwX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTIpDQpzdW1tYXJ5KGFudGhfY2hlbV9tMikNCg0KYW50aF9jaGVtX20zIDwtIGdsbShsb2dicnVpc2UgfiBib3RhbmlnYXJkX2VzX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTMpDQpzdW1tYXJ5KGFudGhfY2hlbV9tMykNCg0KYW50aF9jaGVtX200IDwtIGdsbShsb2dicnVpc2UgfiBjYXB0aXZhX3ByaW1lX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTQpDQpzdW1tYXJ5KGFudGhfY2hlbV9tNCkNCg0KYW50aF9jaGVtX201IDwtIGdsbShsb2dicnVpc2UgfiBub2ZseV9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX201KQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTUpDQoNCmFudGhfY2hlbV9tNiA8LSBnbG0obG9nYnJ1aXNlIH4gdmVuZXJhdGVfY2dfTCwgZGF0YSA9IGdoNikNCkFub3ZhKGFudGhfY2hlbV9tNikNCnN1bW1hcnkoYW50aF9jaGVtX202KQ0KDQphbnRoX2NoZW1fbTcgPC0gZ2xtKGxvZ2JydWlzZSB+IG1fcGVkZV9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX203KQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTcpDQoNCmFudGhfY2hlbV9tOCA8LSBnbG0obG9nYnJ1aXNlIH4gcm9vdHNoaWVsZF9wbHVzX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTgpDQpzdW1tYXJ5KGFudGhfY2hlbV9tOCkNCg0KYW50aF9jaGVtX205IDwtIGdsbShsb2dicnVpc2UgfiBsYWxzdG9wX2s2MV9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX205KQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTkpDQoNCmFudGhfY2hlbV9tMTAgPC0gZ2xtKGxvZ2JydWlzZSB+IGJlbGVhZl81MHNnX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTEwKQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTEwKQ0KDQphbnRoX2NoZW1fbTExIDwtIGdsbShsb2dicnVpc2UgfiBjb3JhZ2VuX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTExKQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTExKQ0KDQphbnRoX2NoZW1fbTEyIDwtIGdsbShsb2dicnVpc2UgfiBlbnRydXN0X3NjX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTEyKQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTEyKQ0KDQphbnRoX2NoZW1fbTEzIDwtIGdsbShsb2dicnVpc2UgfiBweWxvbl9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX20xMykNCnN1bW1hcnkoYW50aF9jaGVtX20xMykNCg0KYW50aF9jaGVtX20xNCA8LSBnbG0obG9nYnJ1aXNlIH4gZ3JvdHRvX0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTE0KQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTE0KQ0KDQphbnRoX2NoZW1fbTE1IDwtIGdsbShsb2dicnVpc2UgfiBsdW5hX3RyYW5xdWlsaXR5X0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTE1KQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTE1KQ0KDQphbnRoX2NoZW1fbTE2IDwtIGdsbShsb2dicnVpc2UgfiBwcmV2aWN1cl9mbGV4X0wsIGRhdGEgPSBnaDYpDQpBbm92YShhbnRoX2NoZW1fbTE2KQ0Kc3VtbWFyeShhbnRoX2NoZW1fbTE2KQ0KDQphbnRoX2NoZW1fbTE3IDwtIGdsbShsb2dicnVpc2UgfiBmb250ZWxpc19MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX20xNykNCnN1bW1hcnkoYW50aF9jaGVtX20xNykNCg0KYW50aF9jaGVtX20xOCA8LSBnbG0obG9nYnJ1aXNlIH4gcXVhZHJpc3RvcF9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX20xOCkNCnN1bW1hcnkoYW50aF9jaGVtX20xOCkNCg0KYW50aF9jaGVtX20xOSA8LSBnbG0obG9nYnJ1aXNlIH4gbWlsc3RvcF9MLCBkYXRhID0gZ2g2KQ0KQW5vdmEoYW50aF9jaGVtX20xOSkNCnN1bW1hcnkoYW50aF9jaGVtX20xOSkNCmBgYA0KDQojIyMgc3VtbWFyeSB0YWJsZSANCg0KYGBge3J9DQphbnRoX21vZGVscyA8LSBsaXN0KA0KICBhemFndWFyZF9MID0gYW50aF9jaGVtX20xLA0KICBib3RhbmlnYXJkXzIyd3BfTCA9IGFudGhfY2hlbV9tMiwNCiAgYm90YW5pZ2FyZF9lc19MID0gYW50aF9jaGVtX20zLA0KICBjYXB0aXZhX3ByaW1lX0wgPSBhbnRoX2NoZW1fbTQsDQogIG5vZmx5X0wgPSBhbnRoX2NoZW1fbTUsDQogIHZlbmVyYXRlX2NnX0wgPSBhbnRoX2NoZW1fbTYsDQogIG1fcGVkZV9MID0gYW50aF9jaGVtX203LA0KICByb290c2hpZWxkX3BsdXNfTCA9IGFudGhfY2hlbV9tOCwNCiAgbGFsc3RvcF9rNjFfTCA9IGFudGhfY2hlbV9tOSwNCiAgYmVsZWFmXzUwc2dfTCA9IGFudGhfY2hlbV9tMTAsDQogIGNvcmFnZW5fTCA9IGFudGhfY2hlbV9tMTEsDQogIGVudHJ1c3Rfc2NfTCA9IGFudGhfY2hlbV9tMTIsDQogIHB5bG9uX0wgPSBhbnRoX2NoZW1fbTEzLA0KICBncm90dG9fTCA9IGFudGhfY2hlbV9tMTQsDQogIGx1bmFfdHJhbnF1aWxpdHlfTCA9IGFudGhfY2hlbV9tMTUsDQogIHByZXZpY3VyX2ZsZXhfTCA9IGFudGhfY2hlbV9tMTYsDQogIGZvbnRlbGlzX0wgPSBhbnRoX2NoZW1fbTE3LA0KICBxdWFkcmlzdG9wX0wgPSBhbnRoX2NoZW1fbTE4LA0KICBtaWxzdG9wX0wgPSBhbnRoX2NoZW1fbTE5DQopDQoNCnN1bW1hcnlfdGFibGUuYW50aCA8LSBkby5jYWxsKHJiaW5kLCBsYXBwbHkobmFtZXMoYW50aF9tb2RlbHMpLCBmdW5jdGlvbihuYW1lKXsNCg0KICBtIDwtIGFudGhfbW9kZWxzW1tuYW1lXV0NCiAgcyA8LSBzdW1tYXJ5KG0pDQoNCiAgY29lZl9yb3cgPC0gcyRjb2VmZmljaWVudHNbMiwgXQ0KDQogIGxyIDwtIEFub3ZhKG0pJGBMUiBDaGlzcWBbMV0NCiAgTFJUIDwtIEFub3ZhKG0pJGBQcig+Q2hpc3EpYFsxXQ0KDQogIGRhdGEuZnJhbWUoDQogICAgUHJlZGljdG9yID0gbmFtZSwNCiAgICBFc3RpbWF0ZSA9IGNvZWZfcm93WyJFc3RpbWF0ZSJdLA0KICAgIFNFID0gY29lZl9yb3dbIlN0ZC4gRXJyb3IiXSwNCiAgICB6ID0gY29lZl9yb3dbInQgdmFsdWUiXSwNCiAgICBwID0gY29lZl9yb3dbIlByKD58dHwpIl0sDQogICAgTFJfQ2hpU3EgPSBsciwNCiAgICBBSUMgPSBBSUMobSksDQogICAgTFJUID0gTFJULA0KICAgIFJlc2lkdWFsX0RldmlhbmNlID0gbSRkZXZpYW5jZQ0KICApDQoNCn0pKQ0KDQpzdW1tYXJ5X3RhYmxlLmFudGgkU0UgPC0gc2lnbmlmKHN1bW1hcnlfdGFibGUuYW50aCRTRSwgMykNCnN1bW1hcnlfdGFibGUuYW50aCR6IDwtIHJvdW5kKHN1bW1hcnlfdGFibGUuYW50aCR6LCAyKQ0Kc3VtbWFyeV90YWJsZS5hbnRoJHAgPC0gc2lnbmlmKHN1bW1hcnlfdGFibGUuYW50aCRwLCAzKQ0Kc3VtbWFyeV90YWJsZS5hbnRoJExSX0NoaVNxIDwtIHJvdW5kKHN1bW1hcnlfdGFibGUuYW50aCRMUl9DaGlTcSwgMikNCnN1bW1hcnlfdGFibGUuYW50aCRBSUMgPC0gcm91bmQoc3VtbWFyeV90YWJsZS5hbnRoJEFJQywgMikNCnN1bW1hcnlfdGFibGUuYW50aCRSZXNpZHVhbF9EZXZpYW5jZSA8LSByb3VuZChzdW1tYXJ5X3RhYmxlLmFudGgkUmVzaWR1YWxfRGV2aWFuY2UsIDIpDQpzdW1tYXJ5X3RhYmxlLmFudGgkTFJUIDwtIHNpZ25pZihzdW1tYXJ5X3RhYmxlLmFudGgkTFJULCAzKQ0KDQphbnRoX3RhYmxlIDwtIGFzLmRhdGEuZnJhbWUoc3VtbWFyeV90YWJsZS5hbnRoKQ0KYW50aF90YWJsZQ0KDQpgYGANCg0KDQojIyMgcGxvdCBvZiBhbnRoZXIgYnJ1aXNlIHZzIHBlc3RpY2lkZXMgYXBwbGllZC9ub3QgYXBwbGllZCANCg0KDQpgYGB7ciwgZmlnLmhlaWdodD0yMiwgZmlnLndpZHRoPTE4fQ0KcGxvdHMgPC0gbGFwcGx5KDE6bnJvdyhjaGVtX2luZm8pLCBmdW5jdGlvbihpKXsNCg0KDQpjaGVtX3R5cGUgPC0gY2hlbV9pbmZvJHR5cGVbaV0NCmNoZW1fbW9kZSA8LSBjaGVtX2luZm8kbW9kZVtpXQ0KY2hlbV9jbGFzcyA8LSBjaGVtX2luZm8kY2xhc3NbaV0NCnZhciA8LSBjaGVtX2luZm8kcGVzdGljaWRlW2ldDQp2YXIyIDwtIGdzdWIoIl9MJCIsICIiLCBjaGVtX2luZm8kcGVzdGljaWRlW2ldKSAgIyByZW1vdmUgX0wgYXQgZW5kDQoNCg0KZ2dwbG90KGdoNiwgYWVzX3N0cmluZyh4ID0gdmFyLCB5ID0gImF2ZXJhZ2VfYnJ1aXNlIikpICsNCiAgZ2VvbV9ib3hwbG90KGZpbGwgPSBjaGVtX2NvbG9yc1tjaGVtX2NsYXNzXSwNCiAgICAgICAgICAgICAgIGFscGhhID0gMC42LA0KICAgICAgICAgICAgICAgd2lkdGggPSAwLjUsDQogICAgICAgICAgICAgICBvdXRsaWVyLnNoYXBlID0gTkEpICsNCiAgZ2VvbV9qaXR0ZXIod2lkdGggPSAwLjEsIHNpemUgPSAzLCBhbHBoYSA9IDAuOCkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gZ3N1YigiX0wiLCIiLHZhciksDQogICAgc3VidGl0bGUgPSBwYXN0ZShjaGVtX3R5cGUsICItIiwgY2hlbV9tb2RlKSwNCiAgICB4ID0gIiIsDQogICAgeSA9ICJBdmVyYWdlIEFudGhlciBTY29yZSINCiAgKSArDQogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiRkFMU0UiPSJOb3QgYXBwbGllZCIsIlRSVUUiPSJBcHBsaWVkIikpICsNCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxNikgDQp9KQ0KDQoNCndyYXBfcGxvdHMocGxvdHMsIG5jb2wgPSA0KQ0KYGBg