par2224 <- read_csv("par2224.csv")
## Rows: 90 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): colony_id
## dbl (16): year, gh, crith_pos_b, crith_neg_b, api_pos_b, api_neg_b, sum_ bee...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
par2224$year <- as.factor(par2224$year)
par2224$colony_id <- as.factor(par2224$colony_id)
par2224$gh <- as.factor(par2224$gh)

ms2224 <- read_csv("ms2224.csv")
## Rows: 1500 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): colony_id, pesticide
## dbl (2): detected, ppm
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
ms2224$colony_id <- as.factor(ms2224$colony_id)
ms2224$pesticide <- as.factor(ms2224$pesticide)


ms_par <- merge(par2224, ms2224, by = "colony_id", all = TRUE)
ms_pardet <- ms_par %>%
  filter(!is.na(detected) & detected != 0)

ms_chem <- read_csv("ms_chem.csv")
## Rows: 39 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): pesticide, target, mode, scope, longevity, family, method
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
ms_par_chem <- merge(ms_par, ms_chem, by = "pesticide", all = TRUE)
ms_par_chem <- ms_par_chem %>%
  filter(!is.na(pesticide) & pesticide != 0)
ms_par_chem <- ms_par_chem %>%
  filter(!is.na(detected) & detected != 0)

ms_par_chem$family <- as.factor(ms_par_chem$family)

ms_par_chem$target <- as.factor(ms_par_chem$target)
hist(ms_pardet$prop_crith_b)

ms_pardet <- ms_pardet %>%
  mutate(prop_crith_b_logit = log((prop_crith_b + 0.001) / (1 - prop_crith_b + 0.001)))

hist(ms_pardet$prop_crith_b_logit)

# Fit mixed model
model_a <- lmer(prop_crith_b ~ pesticide + (1 | gh) + year, data = ms_par_chem)

model <- lmer(prop_crith_b ~ pesticide + (1|gh), data = ms_par_chem)
summary(model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: prop_crith_b ~ pesticide + (1 | gh)
##    Data: ms_par_chem
## 
## REML criterion at convergence: 138.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.2239 -0.7767  0.0071  0.6190  2.8877 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  gh       (Intercept) 0.05317  0.2306  
##  Residual             0.06597  0.2569  
## Number of obs: 566, groups:  gh, 3
## 
## Fixed effects:
##                               Estimate Std. Error t value
## (Intercept)                   0.425432   0.154492   2.754
## pesticidebifenazate           0.004694   0.091347   0.051
## pesticideboscalid             0.142605   0.151215   0.943
## pesticidechlorantraniliprole  0.084959   0.086760   0.979
## pesticidechlorfenapyr         0.062199   0.090313   0.689
## pesticidechlozolinate         0.314065   0.130438   2.408
## pesticidedifenoconazole       0.184521   0.088553   2.084
## pesticidediphenylamine       -0.196085   0.198740  -0.987
## pesticidefenpyroximate        0.004694   0.091347   0.051
## pesticideflonicamid           0.215684   0.130455   1.653
## pesticidefluopyram            0.131331   0.085389   1.538
## pesticidehexythiazox          0.102091   0.086903   1.175
## pesticidemyclobutanil         0.163637   0.168661   0.970
## pesticidepicoxystrobin        0.223921   0.112275   1.994
## pesticidepropamocarb          0.102091   0.086903   1.175
## pesticidepyraclostrobin       0.146540   0.085879   1.706
## pesticidepyrimethanil         0.198545   0.095901   2.070
## pesticidepyriproxyfen         0.118301   0.085578   1.382
## pesticidespinetoram           0.246268   0.115557   2.131
## pesticidespinosyn a           0.256088   0.112340   2.280
## pesticidespinosyn d           0.246268   0.115557   2.131
## pesticidespirotetramat        0.003867   0.093030   0.042
## pesticidetrifloxystrobin      0.227705   0.138628   1.643
## 
## Correlation matrix not shown by default, as p = 23 > 12.
## Use print(value, correlation=TRUE)  or
##     vcov(value)        if you need it
Anova(model)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##            Chisq Df Pr(>Chisq)   
## pesticide 41.993 22   0.006264 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
drop1(model, test = "Chisq")
## Single term deletions
## 
## Model:
## prop_crith_b ~ pesticide + (1 | gh)
##           npar    AIC    LRT  Pr(Chi)   
## <none>         108.98                   
## pesticide   22 107.20 42.226 0.005869 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(model)

anova(model_a, model)
## refitting model(s) with ML (instead of REML)
## Data: ms_par_chem
## Models:
## model: prop_crith_b ~ pesticide + (1 | gh)
## model_a: prop_crith_b ~ pesticide + (1 | gh) + year
##         npar    AIC    BIC  logLik deviance  Chisq Df Pr(>Chisq)    
## model     25 108.98 217.44 -29.488   58.976                         
## model_a   26  13.82 126.62  19.090  -38.180 97.156  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emmeans(model, "pesticide")
##  pesticide           emmean    SE    df lower.CL upper.CL
##  azoxystrobin         0.425 0.154  3.57 -0.02459    0.875
##  bifenazate           0.430 0.141  2.49 -0.07593    0.936
##  boscalid             0.568 0.185  7.37  0.13431    1.002
##  chlorantraniliprole  0.510 0.138  2.30 -0.01702    1.038
##  chlorfenapyr         0.488 0.140  2.44 -0.02328    0.999
##  chlozolinate         0.739 0.170  5.19  0.30813    1.171
##  difenoconazole       0.610 0.140  2.39  0.09403    1.126
##  diphenylamine        0.229 0.226 16.09 -0.24904    0.708
##  fenpyroximate        0.430 0.141  2.49 -0.07593    0.936
##  flonicamid           0.641 0.170  5.26  0.20991    1.072
##  fluopyram            0.557 0.137  2.24  0.02154    1.092
##  hexythiazox          0.528 0.138  2.28 -0.00222    1.057
##  myclobutanil         0.589 0.200  9.88  0.14381    1.034
##  picoxystrobin        0.649 0.156  3.74  0.20325    1.095
##  propamocarb          0.528 0.138  2.28 -0.00222    1.057
##  pyraclostrobin       0.572 0.138  2.26  0.03965    1.104
##  pyrimethanil         0.624 0.145  2.74  0.13844    1.110
##  pyriproxyfen         0.544 0.137  2.24  0.00852    1.079
##  spinetoram           0.672 0.159  4.02  0.23064    1.113
##  spinosyn a           0.682 0.157  3.79  0.23640    1.127
##  spinosyn d           0.672 0.159  4.02  0.23064    1.113
##  spirotetramat        0.429 0.142  2.58 -0.06905    0.928
##  trifloxystrobin      0.653 0.177  6.08  0.22250    1.084
## 
## Degrees-of-freedom method: kenward-roger 
## Confidence level used: 0.95
mod1 <- glm(cbind(crith_pos_b, crith_neg_b) ~ pesticide + year + gh, data = ms_pardet, family = binomial("logit"))
summary(mod1)
## 
## Call:
## glm(formula = cbind(crith_pos_b, crith_neg_b) ~ pesticide + year + 
##     gh, family = binomial("logit"), data = ms_pardet)
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   -1.78094    0.22500  -7.915 2.46e-15 ***
## pesticidebifenazate            0.20548    0.25161   0.817   0.4141    
## pesticideboscalid             -0.44278    0.40765  -1.086   0.2774    
## pesticidechlorantraniliprole   0.17196    0.24044   0.715   0.4745    
## pesticidechlorfenapyr          0.30899    0.24699   1.251   0.2109    
## pesticidechlozolinate          0.72134    0.45253   1.594   0.1109    
## pesticidedifenoconazole        0.11431    0.24949   0.458   0.6468    
## pesticidediphenylamine       -14.33744  428.94310  -0.033   0.9733    
## pesticidefenpyroximate         0.20548    0.25161   0.817   0.4141    
## pesticideflonicamid           -0.08996    0.44201  -0.204   0.8387    
## pesticidefluopyram             0.20576    0.23776   0.865   0.3868    
## pesticidehexythiazox           0.19215    0.23874   0.805   0.4209    
## pesticidemyclobutanil          1.04133    0.43382   2.400   0.0164 *  
## pesticidepicoxystrobin         0.06429    0.34793   0.185   0.8534    
## pesticidepropamocarb           0.19215    0.23874   0.805   0.4209    
## pesticidepyraclostrobin        0.19391    0.23897   0.811   0.4171    
## pesticidepyrimethanil          0.49865    0.26397   1.889   0.0589 .  
## pesticidepyriproxyfen          0.18537    0.23718   0.782   0.4345    
## pesticidespinetoram            0.19141    0.41866   0.457   0.6475    
## pesticidespinosyn a            0.31060    0.41695   0.745   0.4563    
## pesticidespinosyn d            0.19141    0.41866   0.457   0.6475    
## pesticidespirotetramat         0.08299    0.25457   0.326   0.7444    
## pesticidetrifloxystrobin       0.01162    0.49081   0.024   0.9811    
## year2024                       1.28184    0.07897  16.231  < 2e-16 ***
## gh2                            1.17875    0.07875  14.968  < 2e-16 ***
## gh3                            2.47991    0.08732  28.401  < 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: 3193.5  on 565  degrees of freedom
## Residual deviance: 1717.0  on 540  degrees of freedom
## AIC: 2808.1
## 
## Number of Fisher Scoring iterations: 13
Anova(mod1)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos_b, crith_neg_b)
##           LR Chisq Df Pr(>Chisq)    
## pesticide    25.82 22     0.2593    
## year        282.52  1     <2e-16 ***
## gh          979.11  2     <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod2 <- glm(cbind(crith_pos_b, crith_neg_b) ~ target + year + gh, data = ms_par_chem, family = binomial("logit"))
summary(mod2)
## 
## Call:
## glm(formula = cbind(crith_pos_b, crith_neg_b) ~ target + year + 
##     gh, family = binomial("logit"), data = ms_par_chem)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.563270   0.075632 -20.669   <2e-16 ***
## targetinsecticide -0.002483   0.062917  -0.039    0.969    
## year2024           1.265886   0.066797  18.951   <2e-16 ***
## gh2                1.163627   0.076808  15.150   <2e-16 ***
## gh3                2.455902   0.079651  30.833   <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: 3193.5  on 565  degrees of freedom
## Residual deviance: 1742.8  on 561  degrees of freedom
## AIC: 2791.9
## 
## Number of Fisher Scoring iterations: 4
Anova(mod2)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(crith_pos_b, crith_neg_b)
##        LR Chisq Df Pr(>Chisq)    
## target     0.00  1     0.9685    
## year     391.63  1     <2e-16 ***
## gh      1157.57  2     <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod3 <- glm(cbind(api_pos_b, api_neg_b) ~ pesticide + year + gh, data = ms_pardet, family = binomial("logit"))
summary(mod3)
## 
## Call:
## glm(formula = cbind(api_pos_b, api_neg_b) ~ pesticide + year + 
##     gh, family = binomial("logit"), data = ms_pardet)
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    -1.52057    0.48256  -3.151  0.00163 ** 
## pesticidebifenazate             0.68173    0.51122   1.334  0.18235    
## pesticideboscalid             -16.18179 1286.38300  -0.013  0.98996    
## pesticidechlorantraniliprole    0.79633    0.50018   1.592  0.11137    
## pesticidechlorfenapyr           0.77204    0.50586   1.526  0.12696    
## pesticidechlozolinate          -1.31448    1.13320  -1.160  0.24606    
## pesticidedifenoconazole         0.50759    0.52330   0.970  0.33205    
## pesticidediphenylamine          0.42196    0.70678   0.597  0.55049    
## pesticidefenpyroximate          0.68173    0.51122   1.334  0.18235    
## pesticideflonicamid           -15.10049 1108.62348  -0.014  0.98913    
## pesticidefluopyram              0.59325    0.50010   1.186  0.23552    
## pesticidehexythiazox            0.68600    0.49940   1.374  0.16955    
## pesticidemyclobutanil           0.57681    0.69648   0.828  0.40757    
## pesticidepicoxystrobin          1.09018    0.57840   1.885  0.05945 .  
## pesticidepropamocarb            0.68600    0.49940   1.374  0.16955    
## pesticidepyraclostrobin         0.80511    0.50225   1.603  0.10893    
## pesticidepyrimethanil           1.14692    0.52100   2.201  0.02771 *  
## pesticidepyriproxyfen           0.65092    0.49904   1.304  0.19212    
## pesticidespinetoram           -15.06459  906.59541  -0.017  0.98674    
## pesticidespinosyn a           -15.06677  860.02979  -0.018  0.98602    
## pesticidespinosyn d           -15.06459  906.59541  -0.017  0.98674    
## pesticidespirotetramat          1.13062    0.51064   2.214  0.02682 *  
## pesticidetrifloxystrobin      -15.08512 1215.14242  -0.012  0.99010    
## year2024                        0.10653    0.09506   1.121  0.26246    
## gh2                            -1.20235    0.09349 -12.860  < 2e-16 ***
## gh3                            -2.61809    0.14459 -18.107  < 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: 2601.4  on 565  degrees of freedom
## Residual deviance: 1819.4  on 540  degrees of freedom
## AIC: 2323
## 
## Number of Fisher Scoring iterations: 16
Anova(mod3)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos_b, api_neg_b)
##           LR Chisq Df Pr(>Chisq)    
## pesticide    59.43 22  2.712e-05 ***
## year          1.26  1     0.2626    
## gh          548.59  2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod4 <- glm(cbind(api_pos_b, api_neg_b) ~ target + year + gh, data = ms_par_chem, family = binomial("logit"))
summary(mod4)
## 
## Call:
## glm(formula = cbind(api_pos_b, api_neg_b) ~ target + year + gh, 
##     family = binomial("logit"), data = ms_par_chem)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.75192    0.07961  -9.445   <2e-16 ***
## targetinsecticide -0.01109    0.08324  -0.133    0.894    
## year2024           0.03398    0.08355   0.407    0.684    
## gh2               -1.24797    0.09174 -13.604   <2e-16 ***
## gh3               -2.84449    0.14045 -20.252   <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: 2601.4  on 565  degrees of freedom
## Residual deviance: 1878.8  on 561  degrees of freedom
## AIC: 2340.4
## 
## Number of Fisher Scoring iterations: 5
Anova(mod4)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(api_pos_b, api_neg_b)
##        LR Chisq Df Pr(>Chisq)    
## target     0.02  1     0.8940    
## year       0.17  1     0.6843    
## gh       720.18  2     <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: prop_crith_b ~ pesticide + (1 | gh)
##    Data: ms_par_chem
## 
## REML criterion at convergence: 138.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.2239 -0.7767  0.0071  0.6190  2.8877 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  gh       (Intercept) 0.05317  0.2306  
##  Residual             0.06597  0.2569  
## Number of obs: 566, groups:  gh, 3
## 
## Fixed effects:
##                               Estimate Std. Error t value
## (Intercept)                   0.425432   0.154492   2.754
## pesticidebifenazate           0.004694   0.091347   0.051
## pesticideboscalid             0.142605   0.151215   0.943
## pesticidechlorantraniliprole  0.084959   0.086760   0.979
## pesticidechlorfenapyr         0.062199   0.090313   0.689
## pesticidechlozolinate         0.314065   0.130438   2.408
## pesticidedifenoconazole       0.184521   0.088553   2.084
## pesticidediphenylamine       -0.196085   0.198740  -0.987
## pesticidefenpyroximate        0.004694   0.091347   0.051
## pesticideflonicamid           0.215684   0.130455   1.653
## pesticidefluopyram            0.131331   0.085389   1.538
## pesticidehexythiazox          0.102091   0.086903   1.175
## pesticidemyclobutanil         0.163637   0.168661   0.970
## pesticidepicoxystrobin        0.223921   0.112275   1.994
## pesticidepropamocarb          0.102091   0.086903   1.175
## pesticidepyraclostrobin       0.146540   0.085879   1.706
## pesticidepyrimethanil         0.198545   0.095901   2.070
## pesticidepyriproxyfen         0.118301   0.085578   1.382
## pesticidespinetoram           0.246268   0.115557   2.131
## pesticidespinosyn a           0.256088   0.112340   2.280
## pesticidespinosyn d           0.246268   0.115557   2.131
## pesticidespirotetramat        0.003867   0.093030   0.042
## pesticidetrifloxystrobin      0.227705   0.138628   1.643
## 
## Correlation matrix not shown by default, as p = 23 > 12.
## Use print(value, correlation=TRUE)  or
##     vcov(value)        if you need it
Anova(model)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##            Chisq Df Pr(>Chisq)   
## pesticide 41.993 22   0.006264 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ms_par_chem$ppm[is.na(ms_par_chem$ppm)] <- 0
df_ppm <- ms_par_chem %>%
  group_by(colony_id) %>%
  summarise(total_colony_ppm = sum(ppm))
df_ppm  
## # A tibble: 60 × 2
##    colony_id  total_colony_ppm
##    <fct>                 <dbl>
##  1 2022_P1-01           0.0213
##  2 2022_P1-02           0.01  
##  3 2022_P1-03           0.0817
##  4 2022_P1-04           0.0328
##  5 2022_P1-05           0.09  
##  6 2022_P1-06           0.0491
##  7 2022_P1-07           0.0305
##  8 2022_P1-08           0.0146
##  9 2022_P1-09           0.0411
## 10 2022_P1-10           0.0167
## # ℹ 50 more rows
df_ppm <- as.data.frame(df_ppm)

ms_par_chem_ppm <- merge(ms_par_chem, df_ppm, by = "colony_id", all = TRUE) 

summary(ms_par_chem_ppm)
##       colony_id                 pesticide     year     gh       crith_pos_b    
##  2022_P1-05: 13   fluopyram          : 57   2022:320   1:176   Min.   : 0.000  
##  2022_P3-01: 13   pyriproxyfen       : 57   2024:246   2:165   1st Qu.: 3.000  
##  2022_P3-02: 13   pyraclostrobin     : 53              3:225   Median : 7.000  
##  2022_P3-03: 13   hexythiazox        : 50                      Mean   : 5.519  
##  2022_P3-04: 13   propamocarb        : 50                      3rd Qu.: 8.000  
##  2022_P3-05: 13   chlorantraniliprole: 47                      Max.   :10.000  
##  (Other)   :488   (Other)            :252                                      
##   crith_neg_b       api_pos_b       api_neg_b        sum_ bees     
##  Min.   : 0.000   Min.   :0.000   Min.   : 2.000   Min.   : 7.000  
##  1st Qu.: 1.000   1st Qu.:0.000   1st Qu.: 7.000   1st Qu.:10.000  
##  Median : 4.000   Median :0.000   Median :10.000   Median :10.000  
##  Mean   : 4.424   Mean   :1.461   Mean   : 8.482   Mean   : 9.943  
##  3rd Qu.: 7.000   3rd Qu.:3.000   3rd Qu.:10.000   3rd Qu.:10.000  
##  Max.   :10.000   Max.   :9.000   Max.   :11.000   Max.   :11.000  
##                                                                    
##   prop_crith_b      prop_api_b       sum_queens    crith_pos_q   
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.00   Min.   :0.000  
##  1st Qu.:0.3000   1st Qu.:0.0000   1st Qu.:1.00   1st Qu.:0.000  
##  Median :0.6364   Median :0.0000   Median :1.00   Median :1.000  
##  Mean   :0.5582   Mean   :0.1454   Mean   :1.63   Mean   :1.057  
##  3rd Qu.:0.8889   3rd Qu.:0.2727   3rd Qu.:2.00   3rd Qu.:2.000  
##  Max.   :1.0000   Max.   :0.8182   Max.   :4.00   Max.   :3.000  
##                                    NA's   :320    NA's   :320    
##   crith_neg_q       api_pos_q        api_neg_q      prop_crith_q   
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.0000  
##  Median :0.0000   Median :0.0000   Median :1.000   Median :0.7083  
##  Mean   :0.6016   Mean   :0.2154   Mean   :1.415   Mean   :0.6348  
##  3rd Qu.:1.0000   3rd Qu.:0.0000   3rd Qu.:2.000   3rd Qu.:1.0000  
##  Max.   :2.0000   Max.   :2.0000   Max.   :4.000   Max.   :2.0000  
##  NA's   :320      NA's   :320      NA's   :320     NA's   :320     
##    prop_api_q        detected      ppm                   target   
##  Min.   :0.0000   Min.   :1   Min.   :0.000000   fungicide  :306  
##  1st Qu.:0.0000   1st Qu.:1   1st Qu.:0.000000   insecticide:260  
##  Median :0.0000   Median :1   Median :0.000041                    
##  Mean   :0.1789   Mean   :1   Mean   :0.012889                    
##  3rd Qu.:0.0000   3rd Qu.:1   3rd Qu.:0.006975                    
##  Max.   :1.0000   Max.   :1   Max.   :0.650000                    
##  NA's   :320                                                      
##      mode              scope            longevity        
##  Length:566         Length:566         Length:566        
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##                                                          
##                      family       method          total_colony_ppm
##  strobilurin            : 79   Length:566         Min.   :0.0000  
##  benzamide              : 57   Class :character   1st Qu.:0.0229  
##  insect growth regulator: 57   Mode  :character   Median :0.0663  
##  carbamate              : 50                      Mean   :0.1525  
##  thiozolidine           : 50                      3rd Qu.:0.1612  
##  benzimidazole          : 47                      Max.   :1.0215  
##  (Other)                :226
model_ppm <- lmer(prop_crith_b ~ total_colony_ppm + year + (1|gh),
                  data = ms_par_chem_ppm)
Anova(model_ppm)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##                     Chisq Df Pr(>Chisq)    
## total_colony_ppm   2.0721  1       0.15    
## year             138.0167  1     <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(ms_par_chem_ppm$total_colony_ppm, ms_par_chem_ppm$prop_crith_b)

df_sum <- ms_pardet %>%
  group_by(pesticide, year, gh) %>%
  summarise(mean = mean(prop_crith_b))
## `summarise()` has grouped output by 'pesticide', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 73 × 4
## # Groups:   pesticide, year [33]
##    pesticide           year  gh      mean
##    <fct>               <fct> <fct>  <dbl>
##  1 azoxystrobin        2022  1     0     
##  2 azoxystrobin        2022  3     0.699 
##  3 bifenazate          2022  1     0.0882
##  4 bifenazate          2022  2     0.495 
##  5 bifenazate          2022  3     0.707 
##  6 boscalid            2024  2     0.5   
##  7 boscalid            2024  3     1     
##  8 chlorantraniliprole 2022  1     0.0882
##  9 chlorantraniliprole 2022  2     0.495 
## 10 chlorantraniliprole 2022  3     0.707 
## # ℹ 63 more rows
ggplot(df_sum, aes(x = year, y = mean, fill = pesticide)) +
  geom_col(position = position_dodge()) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

df_sum <- ms_pardet %>%
  group_by(pesticide, year, gh) %>%
  summarise(mean = mean(prop_api_b))
## `summarise()` has grouped output by 'pesticide', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 73 × 4
## # Groups:   pesticide, year [33]
##    pesticide           year  gh      mean
##    <fct>               <fct> <fct>  <dbl>
##  1 azoxystrobin        2022  1     0.25  
##  2 azoxystrobin        2022  3     0     
##  3 bifenazate          2022  1     0.197 
##  4 bifenazate          2022  2     0.192 
##  5 bifenazate          2022  3     0.0556
##  6 boscalid            2024  2     0     
##  7 boscalid            2024  3     0     
##  8 chlorantraniliprole 2022  1     0.197 
##  9 chlorantraniliprole 2022  2     0.192 
## 10 chlorantraniliprole 2022  3     0.0556
## # ℹ 63 more rows
ggplot(df_sum, aes(x = year, y = mean, fill = pesticide)) +
  geom_col(position = position_dodge()) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

df_sum <- ms_par_chem %>%
  group_by(target, year, gh) %>%
  summarise(mean = mean(prop_crith_b))
## `summarise()` has grouped output by 'target', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 12 × 4
## # Groups:   target, year [4]
##    target      year  gh      mean
##    <fct>       <fct> <fct>  <dbl>
##  1 fungicide   2022  1     0.0751
##  2 fungicide   2022  2     0.511 
##  3 fungicide   2022  3     0.706 
##  4 fungicide   2024  1     0.529 
##  5 fungicide   2024  2     0.565 
##  6 fungicide   2024  3     0.908 
##  7 insecticide 2022  1     0.0835
##  8 insecticide 2022  2     0.488 
##  9 insecticide 2022  3     0.707 
## 10 insecticide 2024  1     0.533 
## 11 insecticide 2024  2     0.567 
## 12 insecticide 2024  3     0.898
ggplot(df_sum, aes(x = year, y = mean, fill = target)) +
  geom_col(position = position_dodge()) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

df_sum <- ms_par_chem %>%
  group_by(target, year, gh) %>%
  summarise(mean = mean(prop_api_b))
## `summarise()` has grouped output by 'target', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 12 × 4
## # Groups:   target, year [4]
##    target      year  gh      mean
##    <fct>       <fct> <fct>  <dbl>
##  1 fungicide   2022  1     0.218 
##  2 fungicide   2022  2     0.182 
##  3 fungicide   2022  3     0.0483
##  4 fungicide   2024  1     0.455 
##  5 fungicide   2024  2     0     
##  6 fungicide   2024  3     0     
##  7 insecticide 2022  1     0.197 
##  8 insecticide 2022  2     0.198 
##  9 insecticide 2022  3     0.0556
## 10 insecticide 2024  1     0.452 
## 11 insecticide 2024  2     0     
## 12 insecticide 2024  3     0
ggplot(df_sum, aes(x = target, y = mean)) +
  geom_col() +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

df24 <- ms_par_chem_ppm %>%
  filter(year == 2024)


plot(df24$total_colony_ppm, df24$prop_crith_b)

model_ppm24 <- lmer(prop_crith_b ~ total_colony_ppm +(1|gh),
                  data = df24)
Anova(model_ppm24)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##                   Chisq Df Pr(>Chisq)
## total_colony_ppm 1.3191  1     0.2508
df22 <- ms_par_chem_ppm %>%
  filter(year == 2022)

plot(df22$total_colony_ppm, df22$prop_crith_b)

model_ppm22 <- lmer(prop_crith_b ~ total_colony_ppm +(1|gh),
                  data = df22)
Anova(model_ppm22)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##                  Chisq Df Pr(>Chisq)  
## total_colony_ppm 3.297  1     0.0694 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model_ppm22 <- lmer(prop_crith_b ~ pesticide +(1|gh),
                  data = df22)
Anova(model_ppm22)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##            Chisq Df Pr(>Chisq)
## pesticide 2.6062 14     0.9996
model_ppm24 <- lmer(prop_crith_b ~ pesticide +(1|gh),
                  data = df24)
Anova(model_ppm24)
## Analysis of Deviance Table (Type II Wald chisquare tests)
## 
## Response: prop_crith_b
##            Chisq Df Pr(>Chisq)
## pesticide 3.6662 17     0.9997
par_sum <- par2224 %>%
  group_by(year, gh) %>%
  summarise(crith_avg = mean(prop_crith_b),
            api_avg = mean(prop_api_b), 
            total_bee = sum(`sum_ bees`),
            total_crith= sum(crith_pos_b),
            total_api=sum(api_pos_b))
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
par_sum
## # A tibble: 6 × 7
## # Groups:   year [2]
##   year  gh    crith_avg api_avg total_bee total_crith total_api
##   <fct> <fct>     <dbl>   <dbl>     <dbl>       <dbl>     <dbl>
## 1 2022  1        0.0882  0.197        101           9        20
## 2 2022  2        0.495   0.192        100          49        20
## 3 2022  3        0.707   0.0556        99          70         5
## 4 2024  1        0.52    0.4          200         104        80
## 5 2024  2        0.492   0            195          96         0
## 6 2024  3        0.921   0            198         182         0
data <- data.frame(
  year = c(2022, 2022, 2022, 2024, 2024, 2024),
  gh = c(1, 2, 3, 1, 2, 3),
  total_bee = c(101, 100, 99, 200, 195, 198),
  total_crith = c(9, 49, 70, 104, 96, 182),
  crith_prop = c(0.089, 0.490, 0.707, 0.520, 0.492, 0.919),
  total_api = c(20, 20, 5, 80, 0, 0),
  api_prop = c(0.198, 0.200, 0.051, 0.400, 0.000, 0.000),
 total_application = c(11, 17, 23, 22, 22, 25),
  Sum_of_total_applied = c(27377.972, 37155.201, 97326.010, 95703.599, 139129.980, 177403.662)
)


data$year <- as.factor(data$year)
data$gh <- as.factor(data$gh)

data$crith_neg <- data$total_bee - data$total_crith
data$api_neg <- data$total_bee - data$total_api

mod_crith_apps <- glm(cbind(total_crith, crith_neg) ~  total_application + year + gh, data = data, family = binomial("logit"))
Anova(mod_crith_apps)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_application   9.6250  1    0.00192 ** 
## year                0.2664  1    0.60576    
## gh                 19.3872  2  6.168e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$total_application, data$crith_prop)

mod_crith_total <- glm(cbind(total_crith, crith_neg) ~  Sum_of_total_applied + year + gh, data = data, family = binomial("logit"))
Anova(mod_crith_total)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##                      LR Chisq Df Pr(>Chisq)    
## Sum_of_total_applied   36.348  1  1.651e-09 ***
## year                   49.908  1  1.612e-12 ***
## gh                     80.535  2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$Sum_of_total_applied, data$crith_prop)

mod_api <- glm(cbind(total_api, api_neg) ~  total_application + year + gh, data = data, family = binomial("logit"))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Anova(mod_api)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_api, api_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_application   69.886  1  < 2.2e-16 ***
## year                67.217  1  2.432e-16 ***
## gh                 184.838  2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$total_application, data$api_prop)

mod_crith_by_api <- glm(cbind(total_crith, crith_neg) ~  api_prop + year + gh, data = data, family = binomial("logit"))
Anova(mod_crith_by_api)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##          LR Chisq Df Pr(>Chisq)    
## api_prop   33.649  1  6.602e-09 ***
## year       59.807  1  1.047e-14 ***
## gh        164.339  2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$api_prop, data$crith_prop)

data1 <- data.frame(
  year = c(2022, 2022, 2022, 2024, 2024, 2024),
  gh = c(1, 2, 3, 1, 2, 3),
  total_bee = c(101, 100, 99, 200, 195, 198),
  total_crith = c(9, 49, 70, 104, 96, 182),
  crith_prop = c(0.089, 0.490, 0.707, 0.520, 0.492, 0.919),
  total_api = c(20, 20, 5, 80, 0, 0),
  api_prop = c(0.198, 0.200, 0.051, 0.400, 0.000, 0.000),
  total_application = c(11, 17, 23, 22, 22, 25),
  total_applied = c(27377.972, 37155.201, 97326.010, 95703.599, 139129.980, 177403.662),
  coragen = c(3288.425333, 3288.425333, 3288.425333, 0, 3288.48093, 3288.48093),
  lalstop_k61 = c(3000, 3000, 0, 0, 0, 0),
  previcurflex = c(21000, 21000, 21000, 0, 0, 0),
  pylon = c(89.54623998, 130.5953257, 69.49439118, 0, 0, 0),
  lunatranquility = c(0, 0, 0, 4910.720078, 0, 0),
  rootshielplus = c(0, 9736.18056, 4868.09028, 0, 0, 0),
  milstop = c(0, 0, 68100, 0, 0, 0),
  quadristop = c(0, 0, 0, 3507.657199, 0, 0),
  azaguard = c(0, 0, 0, 9865.275998, 29595.82799, 29595.82799),
  botanigard22wp = c(0, 0, 0, 8172, 10896, 16344),
  botanigardes = c(0, 0, 0, 17028, 17028, 0),
  captivaprime = c(0, 0, 0, 249.98679, 249.98679, 249.98679),
  fontelis = c(0, 0, 0, 21045.94319, 0, 0),
  m_pede = c(0, 0, 0, 4000, 4000, 4000),
  nofly = c(0, 0, 0, 26924.016, 17949.344, 13462.008),
  veneratecg = c(0, 0, 0, 0, 56122.3404, 56122.3404),
  beleaf50sg = c(0, 0, 0, 0, 0, 3597.787465),
  entrustsc = c(0, 0, 0, 0, 0, 5323.23),
  grotto = c(0, 0, 0, 0, 0, 45420),
  insecticide = c(3377.971572, 419.020658,  3357.919724,    66239.27879,    139129.9801,    131983.6616),
  fungicide = c(24000.000,  33736.181,  93968.090,  29464.320,  0.000,  45420.000),
  biological = c(3000.000,  12736.181,  4868.090,   62239.279,  131841.499, 115774.163)
)

data1$year <- as.factor(data1$year)
data1$gh <- as.factor(data1$gh)


data1$crith_neg <- data1$total_bee - data1$total_crith
data1$api_neg <- data1$total_bee - data1$total_api

mod_crith_total <- glm(cbind(total_crith, crith_neg) ~  total_application + year + gh,
  data = data1,
  family = binomial("logit"))

Anova(mod_crith_total)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_application   9.6250  1    0.00192 ** 
## year                0.2664  1    0.60576    
## gh                 19.3872  2  6.168e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data1$total_application, data1$crith_prop)

plot(data1$total_applied, data1$crith_prop)

plot(data1$fungicide, data1$crith_prop)

plot(data1$insecticide, data1$crith_prop)  

plot(data1$biological, data1$crith_prop)

plot(data1$total_application, data1$api_prop)

plot(data1$total_applied, data1$api_prop)

plot(data1$fungicide, data1$api_prop)

plot(data1$insecticide, data1$api_prop)  

plot(data1$biological, data1$api_prop)

plot(data1$crith_prop, data1$api_prop)

greenhouse_analysis <- read_csv("greenhouse_analysis.csv", 
    col_types = cols(year = col_factor(levels = c("2022", 
        "2024")), gh = col_factor(levels = c("1", 
        "2", "3")), coragen = col_double(), 
        lalstop_k61 = col_double(), coragen_L = col_logical(), 
        lalstop_k61_L = col_logical(), previcurflex_L = col_logical(), 
        pylon_L = col_logical(), lunatranquility_L = col_logical(), 
        rootshielplus_L = col_logical(), 
        milstop_L = col_logical(), quadristop_L = col_logical(), 
        azaguard_L = col_logical(), botanigard22wp_L = col_logical(), 
        botanigardes_L = col_logical(), captivaprime_L = col_logical(), 
        fontelis_L = col_logical(), mpede_L = col_logical(), 
        nofly_L = col_logical(), veneratecg_L = col_logical(), 
        beleaf50sg_L = col_logical(), entrustsc_L = col_logical(), 
        grotto_L = col_logical()))


mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ insecticide_b + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##               LR Chisq Df Pr(>Chisq)    
## insecticide_b   22.622  1  1.972e-06 ***
## gh              46.170  2  9.425e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
## 
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ insecticide_b + 
##     gh, family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -9.399e-01  1.506e-01  -6.239 4.40e-10 ***
## insecticide_b  1.136e-04  2.433e-05   4.669 3.03e-06 ***
## gh2            2.261e-01  1.754e-01   1.290    0.197    
## gh3            1.478e+00  2.405e-01   6.146 7.93e-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.420  on 5  degrees of freedom
## Residual deviance:  59.865  on 2  degrees of freedom
## AIC: 97.766
## 
## Number of Fisher Scoring iterations: 4
mod_crith_log
## 
## Call:  glm(formula = cbind(total_crith, crith_neg) ~ insecticide_b + 
##     gh, family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##   (Intercept)  insecticide_b            gh2            gh3  
##    -0.9398792      0.0001136      0.2261434      1.4779931  
## 
## Degrees of Freedom: 5 Total (i.e. Null);  2 Residual
## Null Deviance:       242.4 
## Residual Deviance: 59.87     AIC: 97.77
anova(mod_crith_log)
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: cbind(total_crith, crith_neg)
## 
## Terms added sequentially (first to last)
## 
## 
##               Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                              5    242.420              
## insecticide_b  1   136.38         4    106.035 < 2.2e-16 ***
## gh             2    46.17         2     59.865 9.425e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$insecticide_b, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$insecticide_b, greenhouse_analysis$crith_prop,
     xlab = "Insecticide_b", ylab = "Crithidia Proportion",
     main = "Infection Probability",
     pch = 16, col = "black", ylim = c(0, 1))

# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$insecticide_b),
                  max(greenhouse_analysis$insecticide_b),
                  length.out = 100)

# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
  insecticide_b = insect_seq,
  gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100), 
              levels = levels(greenhouse_analysis$gh))
)

# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")

# Add predicted line
lines(pred_data$insecticide_b, pred_data$pred_prob, col = "red", lwd = 2)

mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ total_applied + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##               LR Chisq Df Pr(>Chisq)    
## total_applied   32.578  1  1.145e-08 ***
## gh              51.748  2  5.794e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
## 
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ total_applied + 
##     gh, family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -1.296e+00  1.875e-01  -6.911 4.82e-12 ***
## total_applied  1.058e-05  1.888e-06   5.605 2.09e-08 ***
## gh2            1.454e-01  1.800e-01   0.807    0.419    
## gh3            1.480e+00  2.364e-01   6.262 3.80e-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.420  on 5  degrees of freedom
## Residual deviance:  49.909  on 2  degrees of freedom
## AIC: 87.81
## 
## Number of Fisher Scoring iterations: 4
mod_crith_log
## 
## Call:  glm(formula = cbind(total_crith, crith_neg) ~ total_applied + 
##     gh, family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##   (Intercept)  total_applied            gh2            gh3  
##    -1.296e+00      1.058e-05      1.454e-01      1.480e+00  
## 
## Degrees of Freedom: 5 Total (i.e. Null);  2 Residual
## Null Deviance:       242.4 
## Residual Deviance: 49.91     AIC: 87.81
anova(mod_crith_log)
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: cbind(total_crith, crith_neg)
## 
## Terms added sequentially (first to last)
## 
## 
##               Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                              5    242.420              
## total_applied  1  140.762         4    101.658 < 2.2e-16 ***
## gh             2   51.748         2     49.909 5.794e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$total_applied, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$total_applied, greenhouse_analysis$crith_prop,
     xlab = "Total Applied", ylab = "Crithidia Proportion",
     main = "Infection Probability",
     pch = 16, col = "black", ylim = c(0, 1))

# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$total_applied),
                  max(greenhouse_analysis$total_applied),
                  length.out = 100)

# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
  total_applied = insect_seq,
  gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100), 
              levels = levels(greenhouse_analysis$gh))
)

# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")

# Add predicted line
lines(pred_data$total_applied, pred_data$pred_prob, col = "red", lwd = 2)

mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ total_application + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##                   LR Chisq Df Pr(>Chisq)    
## total_application   55.496  1  9.363e-14 ***
## gh                  36.530  2  1.168e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
## 
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ total_application + 
##     gh, family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -3.77936    0.52170  -7.244 4.35e-13 ***
## total_application  0.17158    0.02537   6.764 1.34e-11 ***
## gh2                0.25637    0.17466   1.468    0.142    
## gh3                1.33629    0.23312   5.732 9.91e-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.420  on 5  degrees of freedom
## Residual deviance:  26.991  on 2  degrees of freedom
## AIC: 64.892
## 
## Number of Fisher Scoring iterations: 4
mod_crith_log
## 
## Call:  glm(formula = cbind(total_crith, crith_neg) ~ total_application + 
##     gh, family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##       (Intercept)  total_application                gh2                gh3  
##           -3.7794             0.1716             0.2564             1.3363  
## 
## Degrees of Freedom: 5 Total (i.e. Null);  2 Residual
## Null Deviance:       242.4 
## Residual Deviance: 26.99     AIC: 64.89
anova(mod_crith_log)
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: cbind(total_crith, crith_neg)
## 
## Terms added sequentially (first to last)
## 
## 
##                   Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                                  5    242.420              
## total_application  1   178.90         4     63.521 < 2.2e-16 ***
## gh                 2    36.53         2     26.991 1.168e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$total_application, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$total_application, greenhouse_analysis$crith_prop,
     xlab = "Total Applications", ylab = "Crithidia Proportion",
     main = "Infection Probability",
     pch = 16, col = "black", ylim = c(0, 1))

# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$total_application),
                  max(greenhouse_analysis$total_application),
                  length.out = 100)

# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
  total_application = insect_seq,
  gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100), 
              levels = levels(greenhouse_analysis$gh))
)

# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")

# Add predicted line
lines(pred_data$total_application, pred_data$pred_prob, col = "red", lwd = 2)

mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ fungicide_b + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
## 
## Response: cbind(total_crith, crith_neg)
##             LR Chisq Df Pr(>Chisq)    
## fungicide_b    5.422  1    0.01988 *  
## gh           105.430  2    < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
## 
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ fungicide_b + gh, 
##     family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.229e-01  2.032e-01  -0.605   0.5454    
## fungicide_b -1.452e-05  6.199e-06  -2.342   0.0192 *  
## gh2          1.920e-01  2.060e-01   0.932   0.3514    
## gh3          2.748e+00  3.093e-01   8.886   <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:  77.065  on 2  degrees of freedom
## AIC: 114.97
## 
## Number of Fisher Scoring iterations: 4
mod_crith_log
## 
## Call:  glm(formula = cbind(total_crith, crith_neg) ~ fungicide_b + gh, 
##     family = binomial("logit"), data = greenhouse_analysis)
## 
## Coefficients:
## (Intercept)  fungicide_b          gh2          gh3  
##  -1.229e-01   -1.452e-05    1.920e-01    2.748e+00  
## 
## Degrees of Freedom: 5 Total (i.e. Null);  2 Residual
## Null Deviance:       242.4 
## Residual Deviance: 77.07     AIC: 115
anova(mod_crith_log)
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: cbind(total_crith, crith_neg)
## 
## Terms added sequentially (first to last)
## 
## 
##             Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                            5    242.420              
## fungicide_b  1   59.925         4    182.495 9.857e-15 ***
## gh           2  105.430         2     77.065 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$fungicide_b, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$fungicide_b, greenhouse_analysis$crith_prop,
     xlab = "fungicide_b", ylab = "Crithidia Proportion",
     main = "Infection Probability",
     pch = 16, col = "black", ylim = c(0, 1))

# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$fungicide_b),
                  max(greenhouse_analysis$fungicide_b),
                  length.out = 100)

# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
  fungicide_b = insect_seq,
  gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100), 
              levels = levels(greenhouse_analysis$gh))
)

# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")

# Add predicted line
lines(pred_data$fungicide_b, pred_data$pred_prob, col = "red", lwd = 2)

LS0tDQp0aXRsZTogIlRvbWF0byBBbmFseXNpcyINCmF1dGhvcjogIkVtaWx5IFJ1bm5pb24iDQpkYXRlOiAiMjAyNS0wMS0yNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGpvdXJuYWwNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KDQpgYGB7ciBsb2FkIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkodmlyaWRpc0xpdGUpDQpsaWJyYXJ5KHN0YXRzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KGVtbWVhbnMpDQpsaWJyYXJ5KE1BU1MpDQpsaWJyYXJ5KGxtZTQpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeSh2aXJpZGlzTGl0ZSkNCmxpYnJhcnkoc3RhdHMpDQoNCmxpYnJhcnkoZ2dwYXR0ZXJuKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShibG1lY28pDQoNCmxpYnJhcnkoY293cGxvdCkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShhZ3JpY29sYWUpIA0KbGlicmFyeShnZ3B1YnIpDQpsaWJyYXJ5KGdsdWUpDQpsaWJyYXJ5KG11bHRjb21wKQ0KbGlicmFyeShtdWx0Y29tcFZpZXcpDQpsaWJyYXJ5KGdsbW1UTUIpDQpsaWJyYXJ5KHJzdGF0aXgpDQpsaWJyYXJ5KGZpdGRpc3RycGx1cykNCmxpYnJhcnkobG9nc3BsaW5lKQ0KbGlicmFyeShHR2FsbHkpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQoNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCnBhcjIyMjQgPC0gcmVhZF9jc3YoInBhcjIyMjQuY3N2IikNCg0KcGFyMjIyNCR5ZWFyIDwtIGFzLmZhY3RvcihwYXIyMjI0JHllYXIpDQpwYXIyMjI0JGNvbG9ueV9pZCA8LSBhcy5mYWN0b3IocGFyMjIyNCRjb2xvbnlfaWQpDQpwYXIyMjI0JGdoIDwtIGFzLmZhY3RvcihwYXIyMjI0JGdoKQ0KDQptczIyMjQgPC0gcmVhZF9jc3YoIm1zMjIyNC5jc3YiKQ0KbXMyMjI0JGNvbG9ueV9pZCA8LSBhcy5mYWN0b3IobXMyMjI0JGNvbG9ueV9pZCkNCm1zMjIyNCRwZXN0aWNpZGUgPC0gYXMuZmFjdG9yKG1zMjIyNCRwZXN0aWNpZGUpDQoNCg0KbXNfcGFyIDwtIG1lcmdlKHBhcjIyMjQsIG1zMjIyNCwgYnkgPSAiY29sb255X2lkIiwgYWxsID0gVFJVRSkNCm1zX3BhcmRldCA8LSBtc19wYXIgJT4lDQogIGZpbHRlcighaXMubmEoZGV0ZWN0ZWQpICYgZGV0ZWN0ZWQgIT0gMCkNCg0KbXNfY2hlbSA8LSByZWFkX2NzdigibXNfY2hlbS5jc3YiKQ0KDQptc19wYXJfY2hlbSA8LSBtZXJnZShtc19wYXIsIG1zX2NoZW0sIGJ5ID0gInBlc3RpY2lkZSIsIGFsbCA9IFRSVUUpDQptc19wYXJfY2hlbSA8LSBtc19wYXJfY2hlbSAlPiUNCiAgZmlsdGVyKCFpcy5uYShwZXN0aWNpZGUpICYgcGVzdGljaWRlICE9IDApDQptc19wYXJfY2hlbSA8LSBtc19wYXJfY2hlbSAlPiUNCiAgZmlsdGVyKCFpcy5uYShkZXRlY3RlZCkgJiBkZXRlY3RlZCAhPSAwKQ0KDQptc19wYXJfY2hlbSRmYW1pbHkgPC0gYXMuZmFjdG9yKG1zX3Bhcl9jaGVtJGZhbWlseSkNCg0KbXNfcGFyX2NoZW0kdGFyZ2V0IDwtIGFzLmZhY3Rvcihtc19wYXJfY2hlbSR0YXJnZXQpDQoNCmBgYA0KDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMn0NCmhpc3QobXNfcGFyZGV0JHByb3BfY3JpdGhfYikNCm1zX3BhcmRldCA8LSBtc19wYXJkZXQgJT4lDQogIG11dGF0ZShwcm9wX2NyaXRoX2JfbG9naXQgPSBsb2coKHByb3BfY3JpdGhfYiArIDAuMDAxKSAvICgxIC0gcHJvcF9jcml0aF9iICsgMC4wMDEpKSkNCg0KaGlzdChtc19wYXJkZXQkcHJvcF9jcml0aF9iX2xvZ2l0KQ0KDQojIEZpdCBtaXhlZCBtb2RlbA0KbW9kZWxfYSA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArICgxIHwgZ2gpICsgeWVhciwgZGF0YSA9IG1zX3Bhcl9jaGVtKQ0KDQptb2RlbCA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArICgxfGdoKSwgZGF0YSA9IG1zX3Bhcl9jaGVtKQ0Kc3VtbWFyeShtb2RlbCkNCkFub3ZhKG1vZGVsKQ0KZHJvcDEobW9kZWwsIHRlc3QgPSAiQ2hpc3EiKQ0KcGxvdChtb2RlbCkNCg0KYW5vdmEobW9kZWxfYSwgbW9kZWwpDQoNCmVtbWVhbnMobW9kZWwsICJwZXN0aWNpZGUiKQ0KDQoNCm1vZDEgPC0gZ2xtKGNiaW5kKGNyaXRoX3Bvc19iLCBjcml0aF9uZWdfYikgfiBwZXN0aWNpZGUgKyB5ZWFyICsgZ2gsIGRhdGEgPSBtc19wYXJkZXQsIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QxKQ0KQW5vdmEobW9kMSkNCg0KbW9kMiA8LSBnbG0oY2JpbmQoY3JpdGhfcG9zX2IsIGNyaXRoX25lZ19iKSB+IHRhcmdldCArIHllYXIgKyBnaCwgZGF0YSA9IG1zX3Bhcl9jaGVtLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kMikNCkFub3ZhKG1vZDIpDQoNCm1vZDMgPC0gZ2xtKGNiaW5kKGFwaV9wb3NfYiwgYXBpX25lZ19iKSB+IHBlc3RpY2lkZSArIHllYXIgKyBnaCwgZGF0YSA9IG1zX3BhcmRldCwgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZDMpDQpBbm92YShtb2QzKQ0KDQptb2Q0IDwtIGdsbShjYmluZChhcGlfcG9zX2IsIGFwaV9uZWdfYikgfiB0YXJnZXQgKyB5ZWFyICsgZ2gsIGRhdGEgPSBtc19wYXJfY2hlbSwgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZDQpDQpBbm92YShtb2Q0KQ0KDQpzdW1tYXJ5KG1vZGVsKQ0KQW5vdmEobW9kZWwpDQoNCm1zX3Bhcl9jaGVtJHBwbVtpcy5uYShtc19wYXJfY2hlbSRwcG0pXSA8LSAwDQpkZl9wcG0gPC0gbXNfcGFyX2NoZW0gJT4lDQogIGdyb3VwX2J5KGNvbG9ueV9pZCkgJT4lDQogIHN1bW1hcmlzZSh0b3RhbF9jb2xvbnlfcHBtID0gc3VtKHBwbSkpDQpkZl9wcG0gIA0KDQoNCmRmX3BwbSA8LSBhcy5kYXRhLmZyYW1lKGRmX3BwbSkNCg0KbXNfcGFyX2NoZW1fcHBtIDwtIG1lcmdlKG1zX3Bhcl9jaGVtLCBkZl9wcG0sIGJ5ID0gImNvbG9ueV9pZCIsIGFsbCA9IFRSVUUpIA0KDQpzdW1tYXJ5KG1zX3Bhcl9jaGVtX3BwbSkNCm1vZGVsX3BwbSA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHRvdGFsX2NvbG9ueV9wcG0gKyB5ZWFyICsgKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IG1zX3Bhcl9jaGVtX3BwbSkNCkFub3ZhKG1vZGVsX3BwbSkNCg0KcGxvdChtc19wYXJfY2hlbV9wcG0kdG90YWxfY29sb255X3BwbSwgbXNfcGFyX2NoZW1fcHBtJHByb3BfY3JpdGhfYikNCg0KZGZfc3VtIDwtIG1zX3BhcmRldCAlPiUNCiAgZ3JvdXBfYnkocGVzdGljaWRlLCB5ZWFyLCBnaCkgJT4lDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihwcm9wX2NyaXRoX2IpKQ0KZGZfc3VtDQoNCmdncGxvdChkZl9zdW0sIGFlcyh4ID0geWVhciwgeSA9IG1lYW4sIGZpbGwgPSBwZXN0aWNpZGUpKSArDQogIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKw0KICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpDQoNCg0KZGZfc3VtIDwtIG1zX3BhcmRldCAlPiUNCiAgZ3JvdXBfYnkocGVzdGljaWRlLCB5ZWFyLCBnaCkgJT4lDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihwcm9wX2FwaV9iKSkNCmRmX3N1bQ0KDQpnZ3Bsb3QoZGZfc3VtLCBhZXMoeCA9IHllYXIsIHkgPSBtZWFuLCBmaWxsID0gcGVzdGljaWRlKSkgKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKCkpICsNCiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KDQoNCg0KZGZfc3VtIDwtIG1zX3Bhcl9jaGVtICU+JQ0KICBncm91cF9ieSh0YXJnZXQsIHllYXIsIGdoKSAlPiUNCiAgc3VtbWFyaXNlKG1lYW4gPSBtZWFuKHByb3BfY3JpdGhfYikpDQpkZl9zdW0NCg0KZ2dwbG90KGRmX3N1bSwgYWVzKHggPSB5ZWFyLCB5ID0gbWVhbiwgZmlsbCA9IHRhcmdldCkpICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgpKSArDQogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCg0KDQpkZl9zdW0gPC0gbXNfcGFyX2NoZW0gJT4lDQogIGdyb3VwX2J5KHRhcmdldCwgeWVhciwgZ2gpICU+JQ0KICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocHJvcF9hcGlfYikpDQpkZl9zdW0NCg0KZ2dwbG90KGRmX3N1bSwgYWVzKHggPSB0YXJnZXQsIHkgPSBtZWFuKSkgKw0KICBnZW9tX2NvbCgpICsNCiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KICANCg0KYGBgDQoNCg0KDQpgYGB7cn0NCg0KZGYyNCA8LSBtc19wYXJfY2hlbV9wcG0gJT4lDQogIGZpbHRlcih5ZWFyID09IDIwMjQpDQoNCg0KcGxvdChkZjI0JHRvdGFsX2NvbG9ueV9wcG0sIGRmMjQkcHJvcF9jcml0aF9iKQ0KDQptb2RlbF9wcG0yNCA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHRvdGFsX2NvbG9ueV9wcG0gKygxfGdoKSwNCiAgICAgICAgICAgICAgICAgIGRhdGEgPSBkZjI0KQ0KQW5vdmEobW9kZWxfcHBtMjQpDQoNCmRmMjIgPC0gbXNfcGFyX2NoZW1fcHBtICU+JQ0KICBmaWx0ZXIoeWVhciA9PSAyMDIyKQ0KDQpwbG90KGRmMjIkdG90YWxfY29sb255X3BwbSwgZGYyMiRwcm9wX2NyaXRoX2IpDQoNCm1vZGVsX3BwbTIyIDwtIGxtZXIocHJvcF9jcml0aF9iIH4gdG90YWxfY29sb255X3BwbSArKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IGRmMjIpDQpBbm92YShtb2RlbF9wcG0yMikNCg0KDQptb2RlbF9wcG0yMiA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IGRmMjIpDQpBbm92YShtb2RlbF9wcG0yMikNCg0KDQptb2RlbF9wcG0yNCA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IGRmMjQpDQpBbm92YShtb2RlbF9wcG0yNCkNCg0KYGBgDQoNCg0KYGBge3J9DQoNCnBhcl9zdW0gPC0gcGFyMjIyNCAlPiUNCiAgZ3JvdXBfYnkoeWVhciwgZ2gpICU+JQ0KICBzdW1tYXJpc2UoY3JpdGhfYXZnID0gbWVhbihwcm9wX2NyaXRoX2IpLA0KICAgICAgICAgICAgYXBpX2F2ZyA9IG1lYW4ocHJvcF9hcGlfYiksIA0KICAgICAgICAgICAgdG90YWxfYmVlID0gc3VtKGBzdW1fIGJlZXNgKSwNCiAgICAgICAgICAgIHRvdGFsX2NyaXRoPSBzdW0oY3JpdGhfcG9zX2IpLA0KICAgICAgICAgICAgdG90YWxfYXBpPXN1bShhcGlfcG9zX2IpKQ0KDQoNCnBhcl9zdW0NCmBgYA0KDQoNCg0KYGBge3J9DQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIHllYXIgPSBjKDIwMjIsIDIwMjIsIDIwMjIsIDIwMjQsIDIwMjQsIDIwMjQpLA0KICBnaCA9IGMoMSwgMiwgMywgMSwgMiwgMyksDQogIHRvdGFsX2JlZSA9IGMoMTAxLCAxMDAsIDk5LCAyMDAsIDE5NSwgMTk4KSwNCiAgdG90YWxfY3JpdGggPSBjKDksIDQ5LCA3MCwgMTA0LCA5NiwgMTgyKSwNCiAgY3JpdGhfcHJvcCA9IGMoMC4wODksIDAuNDkwLCAwLjcwNywgMC41MjAsIDAuNDkyLCAwLjkxOSksDQogIHRvdGFsX2FwaSA9IGMoMjAsIDIwLCA1LCA4MCwgMCwgMCksDQogIGFwaV9wcm9wID0gYygwLjE5OCwgMC4yMDAsIDAuMDUxLCAwLjQwMCwgMC4wMDAsIDAuMDAwKSwNCiB0b3RhbF9hcHBsaWNhdGlvbiA9IGMoMTEsIDE3LCAyMywgMjIsIDIyLCAyNSksDQogIFN1bV9vZl90b3RhbF9hcHBsaWVkID0gYygyNzM3Ny45NzIsIDM3MTU1LjIwMSwgOTczMjYuMDEwLCA5NTcwMy41OTksIDEzOTEyOS45ODAsIDE3NzQwMy42NjIpDQopDQoNCg0KZGF0YSR5ZWFyIDwtIGFzLmZhY3RvcihkYXRhJHllYXIpDQpkYXRhJGdoIDwtIGFzLmZhY3RvcihkYXRhJGdoKQ0KDQpkYXRhJGNyaXRoX25lZyA8LSBkYXRhJHRvdGFsX2JlZSAtIGRhdGEkdG90YWxfY3JpdGgNCmRhdGEkYXBpX25lZyA8LSBkYXRhJHRvdGFsX2JlZSAtIGRhdGEkdG90YWxfYXBpDQoNCm1vZF9jcml0aF9hcHBzIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+ICB0b3RhbF9hcHBsaWNhdGlvbiArIHllYXIgKyBnaCwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KQW5vdmEobW9kX2NyaXRoX2FwcHMpDQpwbG90KGRhdGEkdG90YWxfYXBwbGljYXRpb24sIGRhdGEkY3JpdGhfcHJvcCkNCg0KDQptb2RfY3JpdGhfdG90YWwgPC0gZ2xtKGNiaW5kKHRvdGFsX2NyaXRoLCBjcml0aF9uZWcpIH4gIFN1bV9vZl90b3RhbF9hcHBsaWVkICsgeWVhciArIGdoLCBkYXRhID0gZGF0YSwgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpBbm92YShtb2RfY3JpdGhfdG90YWwpDQoNCnBsb3QoZGF0YSRTdW1fb2ZfdG90YWxfYXBwbGllZCwgZGF0YSRjcml0aF9wcm9wKQ0KDQoNCm1vZF9hcGkgPC0gZ2xtKGNiaW5kKHRvdGFsX2FwaSwgYXBpX25lZykgfiAgdG90YWxfYXBwbGljYXRpb24gKyB5ZWFyICsgZ2gsIGRhdGEgPSBkYXRhLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9hcGkpDQoNCnBsb3QoZGF0YSR0b3RhbF9hcHBsaWNhdGlvbiwgZGF0YSRhcGlfcHJvcCkNCg0KDQptb2RfY3JpdGhfYnlfYXBpIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+ICBhcGlfcHJvcCArIHllYXIgKyBnaCwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KQW5vdmEobW9kX2NyaXRoX2J5X2FwaSkNCg0KcGxvdChkYXRhJGFwaV9wcm9wLCBkYXRhJGNyaXRoX3Byb3ApDQoNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KZGF0YTEgPC0gZGF0YS5mcmFtZSgNCiAgeWVhciA9IGMoMjAyMiwgMjAyMiwgMjAyMiwgMjAyNCwgMjAyNCwgMjAyNCksDQogIGdoID0gYygxLCAyLCAzLCAxLCAyLCAzKSwNCiAgdG90YWxfYmVlID0gYygxMDEsIDEwMCwgOTksIDIwMCwgMTk1LCAxOTgpLA0KICB0b3RhbF9jcml0aCA9IGMoOSwgNDksIDcwLCAxMDQsIDk2LCAxODIpLA0KICBjcml0aF9wcm9wID0gYygwLjA4OSwgMC40OTAsIDAuNzA3LCAwLjUyMCwgMC40OTIsIDAuOTE5KSwNCiAgdG90YWxfYXBpID0gYygyMCwgMjAsIDUsIDgwLCAwLCAwKSwNCiAgYXBpX3Byb3AgPSBjKDAuMTk4LCAwLjIwMCwgMC4wNTEsIDAuNDAwLCAwLjAwMCwgMC4wMDApLA0KICB0b3RhbF9hcHBsaWNhdGlvbiA9IGMoMTEsIDE3LCAyMywgMjIsIDIyLCAyNSksDQogIHRvdGFsX2FwcGxpZWQgPSBjKDI3Mzc3Ljk3MiwgMzcxNTUuMjAxLCA5NzMyNi4wMTAsIDk1NzAzLjU5OSwgMTM5MTI5Ljk4MCwgMTc3NDAzLjY2MiksDQogIGNvcmFnZW4gPSBjKDMyODguNDI1MzMzLCAzMjg4LjQyNTMzMywgMzI4OC40MjUzMzMsIDAsIDMyODguNDgwOTMsIDMyODguNDgwOTMpLA0KICBsYWxzdG9wX2s2MSA9IGMoMzAwMCwgMzAwMCwgMCwgMCwgMCwgMCksDQogIHByZXZpY3VyZmxleCA9IGMoMjEwMDAsIDIxMDAwLCAyMTAwMCwgMCwgMCwgMCksDQogIHB5bG9uID0gYyg4OS41NDYyMzk5OCwgMTMwLjU5NTMyNTcsIDY5LjQ5NDM5MTE4LCAwLCAwLCAwKSwNCiAgbHVuYXRyYW5xdWlsaXR5ID0gYygwLCAwLCAwLCA0OTEwLjcyMDA3OCwgMCwgMCksDQogIHJvb3RzaGllbHBsdXMgPSBjKDAsIDk3MzYuMTgwNTYsIDQ4NjguMDkwMjgsIDAsIDAsIDApLA0KICBtaWxzdG9wID0gYygwLCAwLCA2ODEwMCwgMCwgMCwgMCksDQogIHF1YWRyaXN0b3AgPSBjKDAsIDAsIDAsIDM1MDcuNjU3MTk5LCAwLCAwKSwNCiAgYXphZ3VhcmQgPSBjKDAsIDAsIDAsIDk4NjUuMjc1OTk4LCAyOTU5NS44Mjc5OSwgMjk1OTUuODI3OTkpLA0KICBib3RhbmlnYXJkMjJ3cCA9IGMoMCwgMCwgMCwgODE3MiwgMTA4OTYsIDE2MzQ0KSwNCiAgYm90YW5pZ2FyZGVzID0gYygwLCAwLCAwLCAxNzAyOCwgMTcwMjgsIDApLA0KICBjYXB0aXZhcHJpbWUgPSBjKDAsIDAsIDAsIDI0OS45ODY3OSwgMjQ5Ljk4Njc5LCAyNDkuOTg2NzkpLA0KICBmb250ZWxpcyA9IGMoMCwgMCwgMCwgMjEwNDUuOTQzMTksIDAsIDApLA0KICBtX3BlZGUgPSBjKDAsIDAsIDAsIDQwMDAsIDQwMDAsIDQwMDApLA0KICBub2ZseSA9IGMoMCwgMCwgMCwgMjY5MjQuMDE2LCAxNzk0OS4zNDQsIDEzNDYyLjAwOCksDQogIHZlbmVyYXRlY2cgPSBjKDAsIDAsIDAsIDAsIDU2MTIyLjM0MDQsIDU2MTIyLjM0MDQpLA0KICBiZWxlYWY1MHNnID0gYygwLCAwLCAwLCAwLCAwLCAzNTk3Ljc4NzQ2NSksDQogIGVudHJ1c3RzYyA9IGMoMCwgMCwgMCwgMCwgMCwgNTMyMy4yMyksDQogIGdyb3R0byA9IGMoMCwgMCwgMCwgMCwgMCwgNDU0MjApLA0KICBpbnNlY3RpY2lkZSA9IGMoMzM3Ny45NzE1NzIsIDQxOS4wMjA2NTgsCTMzNTcuOTE5NzI0LAk2NjIzOS4yNzg3OSwJMTM5MTI5Ljk4MDEsCTEzMTk4My42NjE2KSwNCiAgZnVuZ2ljaWRlID0gYygyNDAwMC4wMDAsCTMzNzM2LjE4MSwJOTM5NjguMDkwLAkyOTQ2NC4zMjAsCTAuMDAwLAk0NTQyMC4wMDApLA0KICBiaW9sb2dpY2FsID0gYygzMDAwLjAwMCwJMTI3MzYuMTgxLAk0ODY4LjA5MCwJNjIyMzkuMjc5LAkxMzE4NDEuNDk5LAkxMTU3NzQuMTYzKQ0KKQ0KDQpkYXRhMSR5ZWFyIDwtIGFzLmZhY3RvcihkYXRhMSR5ZWFyKQ0KZGF0YTEkZ2ggPC0gYXMuZmFjdG9yKGRhdGExJGdoKQ0KDQoNCmRhdGExJGNyaXRoX25lZyA8LSBkYXRhMSR0b3RhbF9iZWUgLSBkYXRhMSR0b3RhbF9jcml0aA0KZGF0YTEkYXBpX25lZyA8LSBkYXRhMSR0b3RhbF9iZWUgLSBkYXRhMSR0b3RhbF9hcGkNCg0KbW9kX2NyaXRoX3RvdGFsIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+ICB0b3RhbF9hcHBsaWNhdGlvbiArIHllYXIgKyBnaCwNCiAgZGF0YSA9IGRhdGExLA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCg0KQW5vdmEobW9kX2NyaXRoX3RvdGFsKQ0KDQpwbG90KGRhdGExJHRvdGFsX2FwcGxpY2F0aW9uLCBkYXRhMSRjcml0aF9wcm9wKQ0KDQpwbG90KGRhdGExJHRvdGFsX2FwcGxpZWQsIGRhdGExJGNyaXRoX3Byb3ApDQoNCnBsb3QoZGF0YTEkZnVuZ2ljaWRlLCBkYXRhMSRjcml0aF9wcm9wKQ0KDQpwbG90KGRhdGExJGluc2VjdGljaWRlLCBkYXRhMSRjcml0aF9wcm9wKSAgDQoNCnBsb3QoZGF0YTEkYmlvbG9naWNhbCwgZGF0YTEkY3JpdGhfcHJvcCkNCg0KDQoNCg0KcGxvdChkYXRhMSR0b3RhbF9hcHBsaWNhdGlvbiwgZGF0YTEkYXBpX3Byb3ApDQoNCnBsb3QoZGF0YTEkdG90YWxfYXBwbGllZCwgZGF0YTEkYXBpX3Byb3ApDQoNCnBsb3QoZGF0YTEkZnVuZ2ljaWRlLCBkYXRhMSRhcGlfcHJvcCkNCg0KcGxvdChkYXRhMSRpbnNlY3RpY2lkZSwgZGF0YTEkYXBpX3Byb3ApICANCg0KcGxvdChkYXRhMSRiaW9sb2dpY2FsLCBkYXRhMSRhcGlfcHJvcCkNCg0KDQoNCnBsb3QoZGF0YTEkY3JpdGhfcHJvcCwgZGF0YTEkYXBpX3Byb3ApDQogDQpgYGANCg0KDQoNCmBgYHtyfQ0KDQpncmVlbmhvdXNlX2FuYWx5c2lzIDwtIHJlYWRfY3N2KCJncmVlbmhvdXNlX2FuYWx5c2lzLmNzdiIsIA0KICAgIGNvbF90eXBlcyA9IGNvbHMoeWVhciA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiMjAyMiIsIA0KICAgICAgICAiMjAyNCIpKSwgZ2ggPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAgICAgIjIiLCAiMyIpKSwgY29yYWdlbiA9IGNvbF9kb3VibGUoKSwgDQogICAgICAgIGxhbHN0b3BfazYxID0gY29sX2RvdWJsZSgpLCBjb3JhZ2VuX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgbGFsc3RvcF9rNjFfTCA9IGNvbF9sb2dpY2FsKCksIHByZXZpY3VyZmxleF9MID0gY29sX2xvZ2ljYWwoKSwgDQogICAgICAgIHB5bG9uX0wgPSBjb2xfbG9naWNhbCgpLCBsdW5hdHJhbnF1aWxpdHlfTCA9IGNvbF9sb2dpY2FsKCksIA0KICAgICAgICByb290c2hpZWxwbHVzX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgbWlsc3RvcF9MID0gY29sX2xvZ2ljYWwoKSwgcXVhZHJpc3RvcF9MID0gY29sX2xvZ2ljYWwoKSwgDQogICAgICAgIGF6YWd1YXJkX0wgPSBjb2xfbG9naWNhbCgpLCBib3RhbmlnYXJkMjJ3cF9MID0gY29sX2xvZ2ljYWwoKSwgDQogICAgICAgIGJvdGFuaWdhcmRlc19MID0gY29sX2xvZ2ljYWwoKSwgY2FwdGl2YXByaW1lX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgZm9udGVsaXNfTCA9IGNvbF9sb2dpY2FsKCksIG1wZWRlX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgbm9mbHlfTCA9IGNvbF9sb2dpY2FsKCksIHZlbmVyYXRlY2dfTCA9IGNvbF9sb2dpY2FsKCksIA0KICAgICAgICBiZWxlYWY1MHNnX0wgPSBjb2xfbG9naWNhbCgpLCBlbnRydXN0c2NfTCA9IGNvbF9sb2dpY2FsKCksIA0KICAgICAgICBncm90dG9fTCA9IGNvbF9sb2dpY2FsKCkpKQ0KDQoNCm1vZF9jcml0aF9sb2cgPC0gZ2xtKGNiaW5kKHRvdGFsX2NyaXRoLCBjcml0aF9uZWcpIH4gaW5zZWN0aWNpZGVfYiArIGdoLCBkYXRhID0gZ3JlZW5ob3VzZV9hbmFseXNpcywgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpBbm92YShtb2RfY3JpdGhfbG9nKQ0KDQpzdW1tYXJ5KG1vZF9jcml0aF9sb2cpDQoNCm1vZF9jcml0aF9sb2cNCmFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyRpbnNlY3RpY2lkZV9iLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3ApDQoNCiMgU2NhdHRlcnBsb3Qgb2Ygb2JzZXJ2ZWQgcHJvcG9ydGlvbnMNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyRpbnNlY3RpY2lkZV9iLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3AsDQogICAgIHhsYWIgPSAiSW5zZWN0aWNpZGVfYiIsIHlsYWIgPSAiQ3JpdGhpZGlhIFByb3BvcnRpb24iLA0KICAgICBtYWluID0gIkluZmVjdGlvbiBQcm9iYWJpbGl0eSIsDQogICAgIHBjaCA9IDE2LCBjb2wgPSAiYmxhY2siLCB5bGltID0gYygwLCAxKSkNCg0KIyBTZXF1ZW5jZSBvZiBpbnNlY3RpY2lkZSB2YWx1ZXMNCmluc2VjdF9zZXEgPC0gc2VxKG1pbihncmVlbmhvdXNlX2FuYWx5c2lzJGluc2VjdGljaWRlX2IpLA0KICAgICAgICAgICAgICAgICAgbWF4KGdyZWVuaG91c2VfYW5hbHlzaXMkaW5zZWN0aWNpZGVfYiksDQogICAgICAgICAgICAgICAgICBsZW5ndGgub3V0ID0gMTAwKQ0KDQojIFVzZSBiYXNlbGluZSBncmVlbmhvdXNlIChnaDEpIGZvciBwcmVkaWN0ZWQgbGluZQ0KcHJlZF9kYXRhIDwtIGRhdGEuZnJhbWUoDQogIGluc2VjdGljaWRlX2IgPSBpbnNlY3Rfc2VxLA0KICBnaCA9IGZhY3RvcihyZXAobGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpWzFdLCAxMDApLCANCiAgICAgICAgICAgICAgbGV2ZWxzID0gbGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpKQ0KKQ0KDQojIEdldCBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcw0KcHJlZF9kYXRhJHByZWRfcHJvYiA8LSBwcmVkaWN0KG1vZF9jcml0aF9sb2csIG5ld2RhdGEgPSBwcmVkX2RhdGEsIHR5cGUgPSAicmVzcG9uc2UiKQ0KDQojIEFkZCBwcmVkaWN0ZWQgbGluZQ0KbGluZXMocHJlZF9kYXRhJGluc2VjdGljaWRlX2IsIHByZWRfZGF0YSRwcmVkX3Byb2IsIGNvbCA9ICJyZWQiLCBsd2QgPSAyKQ0KDQoNCmBgYA0KDQoNCmBgYHtyfQ0KbW9kX2NyaXRoX2xvZyA8LSBnbG0oY2JpbmQodG90YWxfY3JpdGgsIGNyaXRoX25lZykgfiB0b3RhbF9hcHBsaWVkICsgZ2gsIGRhdGEgPSBncmVlbmhvdXNlX2FuYWx5c2lzLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnN1bW1hcnkobW9kX2NyaXRoX2xvZykNCg0KbW9kX2NyaXRoX2xvZw0KYW5vdmEobW9kX2NyaXRoX2xvZykNCg0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpZWQsIGdyZWVuaG91c2VfYW5hbHlzaXMkY3JpdGhfcHJvcCkNCg0KIyBTY2F0dGVycGxvdCBvZiBvYnNlcnZlZCBwcm9wb3J0aW9ucw0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpZWQsIGdyZWVuaG91c2VfYW5hbHlzaXMkY3JpdGhfcHJvcCwNCiAgICAgeGxhYiA9ICJUb3RhbCBBcHBsaWVkIiwgeWxhYiA9ICJDcml0aGlkaWEgUHJvcG9ydGlvbiIsDQogICAgIG1haW4gPSAiSW5mZWN0aW9uIFByb2JhYmlsaXR5IiwNCiAgICAgcGNoID0gMTYsIGNvbCA9ICJibGFjayIsIHlsaW0gPSBjKDAsIDEpKQ0KDQojIFNlcXVlbmNlIG9mIGluc2VjdGljaWRlIHZhbHVlcw0KaW5zZWN0X3NlcSA8LSBzZXEobWluKGdyZWVuaG91c2VfYW5hbHlzaXMkdG90YWxfYXBwbGllZCksDQogICAgICAgICAgICAgICAgICBtYXgoZ3JlZW5ob3VzZV9hbmFseXNpcyR0b3RhbF9hcHBsaWVkKSwNCiAgICAgICAgICAgICAgICAgIGxlbmd0aC5vdXQgPSAxMDApDQoNCiMgVXNlIGJhc2VsaW5lIGdyZWVuaG91c2UgKGdoMSkgZm9yIHByZWRpY3RlZCBsaW5lDQpwcmVkX2RhdGEgPC0gZGF0YS5mcmFtZSgNCiAgdG90YWxfYXBwbGllZCA9IGluc2VjdF9zZXEsDQogIGdoID0gZmFjdG9yKHJlcChsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaClbMV0sIDEwMCksIA0KICAgICAgICAgICAgICBsZXZlbHMgPSBsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaCkpDQopDQoNCiMgR2V0IHByZWRpY3RlZCBwcm9iYWJpbGl0aWVzDQpwcmVkX2RhdGEkcHJlZF9wcm9iIDwtIHByZWRpY3QobW9kX2NyaXRoX2xvZywgbmV3ZGF0YSA9IHByZWRfZGF0YSwgdHlwZSA9ICJyZXNwb25zZSIpDQoNCiMgQWRkIHByZWRpY3RlZCBsaW5lDQpsaW5lcyhwcmVkX2RhdGEkdG90YWxfYXBwbGllZCwgcHJlZF9kYXRhJHByZWRfcHJvYiwgY29sID0gInJlZCIsIGx3ZCA9IDIpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQptb2RfY3JpdGhfbG9nIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+IHRvdGFsX2FwcGxpY2F0aW9uICsgZ2gsIGRhdGEgPSBncmVlbmhvdXNlX2FuYWx5c2lzLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnN1bW1hcnkobW9kX2NyaXRoX2xvZykNCg0KbW9kX2NyaXRoX2xvZw0KYW5vdmEobW9kX2NyaXRoX2xvZykNCg0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpY2F0aW9uLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3ApDQoNCiMgU2NhdHRlcnBsb3Qgb2Ygb2JzZXJ2ZWQgcHJvcG9ydGlvbnMNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyR0b3RhbF9hcHBsaWNhdGlvbiwgZ3JlZW5ob3VzZV9hbmFseXNpcyRjcml0aF9wcm9wLA0KICAgICB4bGFiID0gIlRvdGFsIEFwcGxpY2F0aW9ucyIsIHlsYWIgPSAiQ3JpdGhpZGlhIFByb3BvcnRpb24iLA0KICAgICBtYWluID0gIkluZmVjdGlvbiBQcm9iYWJpbGl0eSIsDQogICAgIHBjaCA9IDE2LCBjb2wgPSAiYmxhY2siLCB5bGltID0gYygwLCAxKSkNCg0KIyBTZXF1ZW5jZSBvZiBpbnNlY3RpY2lkZSB2YWx1ZXMNCmluc2VjdF9zZXEgPC0gc2VxKG1pbihncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpY2F0aW9uKSwNCiAgICAgICAgICAgICAgICAgIG1heChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpY2F0aW9uKSwNCiAgICAgICAgICAgICAgICAgIGxlbmd0aC5vdXQgPSAxMDApDQoNCiMgVXNlIGJhc2VsaW5lIGdyZWVuaG91c2UgKGdoMSkgZm9yIHByZWRpY3RlZCBsaW5lDQpwcmVkX2RhdGEgPC0gZGF0YS5mcmFtZSgNCiAgdG90YWxfYXBwbGljYXRpb24gPSBpbnNlY3Rfc2VxLA0KICBnaCA9IGZhY3RvcihyZXAobGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpWzFdLCAxMDApLCANCiAgICAgICAgICAgICAgbGV2ZWxzID0gbGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpKQ0KKQ0KDQojIEdldCBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcw0KcHJlZF9kYXRhJHByZWRfcHJvYiA8LSBwcmVkaWN0KG1vZF9jcml0aF9sb2csIG5ld2RhdGEgPSBwcmVkX2RhdGEsIHR5cGUgPSAicmVzcG9uc2UiKQ0KDQojIEFkZCBwcmVkaWN0ZWQgbGluZQ0KbGluZXMocHJlZF9kYXRhJHRvdGFsX2FwcGxpY2F0aW9uLCBwcmVkX2RhdGEkcHJlZF9wcm9iLCBjb2wgPSAicmVkIiwgbHdkID0gMikNCg0KDQpgYGANCg0KYGBge3J9DQptb2RfY3JpdGhfbG9nIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+IGZ1bmdpY2lkZV9iICsgZ2gsIGRhdGEgPSBncmVlbmhvdXNlX2FuYWx5c2lzLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnN1bW1hcnkobW9kX2NyaXRoX2xvZykNCg0KbW9kX2NyaXRoX2xvZw0KYW5vdmEobW9kX2NyaXRoX2xvZykNCg0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJGZ1bmdpY2lkZV9iLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3ApDQoNCiMgU2NhdHRlcnBsb3Qgb2Ygb2JzZXJ2ZWQgcHJvcG9ydGlvbnMNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyRmdW5naWNpZGVfYiwgZ3JlZW5ob3VzZV9hbmFseXNpcyRjcml0aF9wcm9wLA0KICAgICB4bGFiID0gImZ1bmdpY2lkZV9iIiwgeWxhYiA9ICJDcml0aGlkaWEgUHJvcG9ydGlvbiIsDQogICAgIG1haW4gPSAiSW5mZWN0aW9uIFByb2JhYmlsaXR5IiwNCiAgICAgcGNoID0gMTYsIGNvbCA9ICJibGFjayIsIHlsaW0gPSBjKDAsIDEpKQ0KDQojIFNlcXVlbmNlIG9mIGluc2VjdGljaWRlIHZhbHVlcw0KaW5zZWN0X3NlcSA8LSBzZXEobWluKGdyZWVuaG91c2VfYW5hbHlzaXMkZnVuZ2ljaWRlX2IpLA0KICAgICAgICAgICAgICAgICAgbWF4KGdyZWVuaG91c2VfYW5hbHlzaXMkZnVuZ2ljaWRlX2IpLA0KICAgICAgICAgICAgICAgICAgbGVuZ3RoLm91dCA9IDEwMCkNCg0KIyBVc2UgYmFzZWxpbmUgZ3JlZW5ob3VzZSAoZ2gxKSBmb3IgcHJlZGljdGVkIGxpbmUNCnByZWRfZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBmdW5naWNpZGVfYiA9IGluc2VjdF9zZXEsDQogIGdoID0gZmFjdG9yKHJlcChsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaClbMV0sIDEwMCksIA0KICAgICAgICAgICAgICBsZXZlbHMgPSBsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaCkpDQopDQoNCiMgR2V0IHByZWRpY3RlZCBwcm9iYWJpbGl0aWVzDQpwcmVkX2RhdGEkcHJlZF9wcm9iIDwtIHByZWRpY3QobW9kX2NyaXRoX2xvZywgbmV3ZGF0YSA9IHByZWRfZGF0YSwgdHlwZSA9ICJyZXNwb25zZSIpDQoNCiMgQWRkIHByZWRpY3RlZCBsaW5lDQpsaW5lcyhwcmVkX2RhdGEkZnVuZ2ljaWRlX2IsIHByZWRfZGF0YSRwcmVkX3Byb2IsIGNvbCA9ICJyZWQiLCBsd2QgPSAyKQ0KYGBgDQoNCg==