1 - Packages
library(multcompView)
library(multcomp)
Warning: package ‘multcomp’ was built under R version 4.3.3Carregando pacotes exigidos: mvtnorm
Carregando pacotes exigidos: survival
Carregando pacotes exigidos: TH.data
Warning: package ‘TH.data’ was built under R version 4.3.3Carregando pacotes exigidos: MASS
Attaching package: ‘TH.data’
The following object is masked from ‘package:MASS’:
geyser
library(dplyr)
Attaching package: ‘dplyr’
The following object is masked from ‘package:MASS’:
select
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
library(ggplot2)
library(gridExtra)
Warning: package ‘gridExtra’ was built under R version 4.3.3
Attaching package: ‘gridExtra’
The following object is masked from ‘package:dplyr’:
combine
2 - DADOS
a=read.csv("D:/Armazenamento/DATA R/Jeraldine/dados.csv")
print(a)
a$Fermentador=as.factor(a$Fermentador)
a$Periodo=as.factor(a$Periodo)
a$Tempo=as.factor(a$Tempo)
str(a)
'data.frame': 64 obs. of 8 variables:
$ Fermentador : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
$ Periodo : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 2 2 2 2 3 3 ...
$ Tempo : Factor w/ 4 levels "24","48","72",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Efluente_total: num 350 475 33 410 400 390 400 400 400 370 ...
$ Gas_total : int 2830 2920 2353 2181 2394 2475 2227 2503 2377 2175 ...
$ CH4 : num NA NA NA NA NA NA NA NA NA NA ...
$ DMS_24 : num 0.431 0.407 0.417 0.477 0.546 ...
$ DMS_48 : num 0.513 0.482 0.462 0.457 0.533 ...
3 - ANALISE DE VARIANCIA DE FERMENTADORES E
PERIODOS
Efluente total
#Modelo
mod = aov(Efluente_total ~ Fermentador+Periodo+Fermentador*Periodo, data = a)
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Fermentador 3 11178 3726 0.543 0.655
Periodo 3 12955 4318 0.629 0.600
Fermentador:Periodo 9 14898 1655 0.241 0.986
Residuals 48 329474 6864
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = Efluente_total ~ Fermentador + Periodo + Fermentador * Periodo, data = a)
$Fermentador
diff lwr upr p adj
2-1 31.371875 -46.58430 109.32805 0.7086394
3-1 1.715625 -76.24055 79.67180 0.9999268
4-1 21.121875 -56.83430 99.07805 0.8882112
3-2 -29.656250 -107.61242 48.29992 0.7429712
4-2 -10.250000 -88.20617 67.70617 0.9851104
4-3 19.406250 -58.54992 97.36242 0.9105956
$Periodo
diff lwr upr p adj
2-1 -16.09688 -94.05305 61.85930 0.9462287
3-1 -12.47188 -90.42805 65.48430 0.9737889
4-1 -39.34688 -117.30305 38.60930 0.5405082
3-2 3.62500 -74.33117 81.58117 0.9993129
4-2 -23.25000 -101.20617 54.70617 0.8569315
4-3 -26.87500 -104.83117 51.08117 0.7956332
$`Fermentador:Periodo`
diff lwr upr p adj
2:1-1:1 39.9875 -171.6564 251.6314 0.9999973
3:1-1:1 -54.2625 -265.9064 157.3814 0.9998652
4:1-1:1 23.3625 -188.2814 235.0064 1.0000000
1:2-1:1 -29.2625 -240.9064 182.3814 1.0000000
2:2-1:1 -3.0125 -214.6564 208.6314 1.0000000
3:2-1:1 -14.2625 -225.9064 197.3814 1.0000000
4:2-1:1 -8.7625 -220.4064 202.8814 1.0000000
1:3-1:1 -33.0125 -244.6564 178.6314 0.9999998
2:3-1:1 0.7375 -210.9064 212.3814 1.0000000
3:3-1:1 -0.5125 -212.1564 211.1314 1.0000000
4:3-1:1 -8.0125 -219.6564 203.6314 1.0000000
1:4-1:1 -50.7625 -262.4064 160.8814 0.9999408
2:4-1:1 -25.2625 -236.9064 186.3814 1.0000000
3:4-1:1 -37.1375 -248.7814 174.5064 0.9999990
4:4-1:1 -35.1375 -246.7814 176.5064 0.9999995
3:1-2:1 -94.2500 -305.8939 117.3939 0.9588295
4:1-2:1 -16.6250 -228.2689 195.0189 1.0000000
1:2-2:1 -69.2500 -280.8939 142.3939 0.9977773
2:2-2:1 -43.0000 -254.6439 168.6439 0.9999930
3:2-2:1 -54.2500 -265.8939 157.3939 0.9998656
4:2-2:1 -48.7500 -260.3939 162.8939 0.9999644
1:3-2:1 -73.0000 -284.6439 138.6439 0.9961286
2:3-2:1 -39.2500 -250.8939 172.3939 0.9999979
3:3-2:1 -40.5000 -252.1439 171.1439 0.9999968
4:3-2:1 -48.0000 -259.6439 163.6439 0.9999708
1:4-2:1 -90.7500 -302.3939 120.8939 0.9698887
2:4-2:1 -65.2500 -276.8939 146.3939 0.9988393
3:4-2:1 -77.1250 -288.7689 134.5189 0.9932504
4:4-2:1 -75.1250 -286.7689 136.5189 0.9948099
4:1-3:1 77.6250 -134.0189 289.2689 0.9928060
1:2-3:1 25.0000 -186.6439 236.6439 1.0000000
2:2-3:1 51.2500 -160.3939 262.8939 0.9999333
3:2-3:1 40.0000 -171.6439 251.6439 0.9999973
4:2-3:1 45.5000 -166.1439 257.1439 0.9999853
1:3-3:1 21.2500 -190.3939 232.8939 1.0000000
2:3-3:1 55.0000 -156.6439 266.6439 0.9998412
3:3-3:1 53.7500 -157.8939 265.3939 0.9998800
4:3-3:1 46.2500 -165.3939 257.8939 0.9999819
1:4-3:1 3.5000 -208.1439 215.1439 1.0000000
2:4-3:1 29.0000 -182.6439 240.6439 1.0000000
3:4-3:1 17.1250 -194.5189 228.7689 1.0000000
4:4-3:1 19.1250 -192.5189 230.7689 1.0000000
1:2-4:1 -52.6250 -264.2689 159.0189 0.9999074
2:2-4:1 -26.3750 -238.0189 185.2689 1.0000000
3:2-4:1 -37.6250 -249.2689 174.0189 0.9999988
4:2-4:1 -32.1250 -243.7689 179.5189 0.9999999
1:3-4:1 -56.3750 -268.0189 155.2689 0.9997861
2:3-4:1 -22.6250 -234.2689 189.0189 1.0000000
3:3-4:1 -23.8750 -235.5189 187.7689 1.0000000
4:3-4:1 -31.3750 -243.0189 180.2689 0.9999999
1:4-4:1 -74.1250 -285.7689 137.5189 0.9954703
2:4-4:1 -48.6250 -260.2689 163.0189 0.9999656
3:4-4:1 -60.5000 -272.1439 151.1439 0.9995082
4:4-4:1 -58.5000 -270.1439 153.1439 0.9996680
2:2-1:2 26.2500 -185.3939 237.8939 1.0000000
3:2-1:2 15.0000 -196.6439 226.6439 1.0000000
4:2-1:2 20.5000 -191.1439 232.1439 1.0000000
1:3-1:2 -3.7500 -215.3939 207.8939 1.0000000
2:3-1:2 30.0000 -181.6439 241.6439 0.9999999
3:3-1:2 28.7500 -182.8939 240.3939 1.0000000
4:3-1:2 21.2500 -190.3939 232.8939 1.0000000
1:4-1:2 -21.5000 -233.1439 190.1439 1.0000000
2:4-1:2 4.0000 -207.6439 215.6439 1.0000000
3:4-1:2 -7.8750 -219.5189 203.7689 1.0000000
4:4-1:2 -5.8750 -217.5189 205.7689 1.0000000
3:2-2:2 -11.2500 -222.8939 200.3939 1.0000000
4:2-2:2 -5.7500 -217.3939 205.8939 1.0000000
1:3-2:2 -30.0000 -241.6439 181.6439 0.9999999
2:3-2:2 3.7500 -207.8939 215.3939 1.0000000
3:3-2:2 2.5000 -209.1439 214.1439 1.0000000
4:3-2:2 -5.0000 -216.6439 206.6439 1.0000000
1:4-2:2 -47.7500 -259.3939 163.8939 0.9999727
2:4-2:2 -22.2500 -233.8939 189.3939 1.0000000
3:4-2:2 -34.1250 -245.7689 177.5189 0.9999997
4:4-2:2 -32.1250 -243.7689 179.5189 0.9999999
4:2-3:2 5.5000 -206.1439 217.1439 1.0000000
1:3-3:2 -18.7500 -230.3939 192.8939 1.0000000
2:3-3:2 15.0000 -196.6439 226.6439 1.0000000
3:3-3:2 13.7500 -197.8939 225.3939 1.0000000
4:3-3:2 6.2500 -205.3939 217.8939 1.0000000
1:4-3:2 -36.5000 -248.1439 175.1439 0.9999992
2:4-3:2 -11.0000 -222.6439 200.6439 1.0000000
3:4-3:2 -22.8750 -234.5189 188.7689 1.0000000
4:4-3:2 -20.8750 -232.5189 190.7689 1.0000000
1:3-4:2 -24.2500 -235.8939 187.3939 1.0000000
2:3-4:2 9.5000 -202.1439 221.1439 1.0000000
3:3-4:2 8.2500 -203.3939 219.8939 1.0000000
4:3-4:2 0.7500 -210.8939 212.3939 1.0000000
1:4-4:2 -42.0000 -253.6439 169.6439 0.9999949
2:4-4:2 -16.5000 -228.1439 195.1439 1.0000000
3:4-4:2 -28.3750 -240.0189 183.2689 1.0000000
4:4-4:2 -26.3750 -238.0189 185.2689 1.0000000
2:3-1:3 33.7500 -177.8939 245.3939 0.9999997
3:3-1:3 32.5000 -179.1439 244.1439 0.9999998
4:3-1:3 25.0000 -186.6439 236.6439 1.0000000
1:4-1:3 -17.7500 -229.3939 193.8939 1.0000000
2:4-1:3 7.7500 -203.8939 219.3939 1.0000000
3:4-1:3 -4.1250 -215.7689 207.5189 1.0000000
4:4-1:3 -2.1250 -213.7689 209.5189 1.0000000
3:3-2:3 -1.2500 -212.8939 210.3939 1.0000000
4:3-2:3 -8.7500 -220.3939 202.8939 1.0000000
1:4-2:3 -51.5000 -263.1439 160.1439 0.9999292
2:4-2:3 -26.0000 -237.6439 185.6439 1.0000000
3:4-2:3 -37.8750 -249.5189 173.7689 0.9999987
4:4-2:3 -35.8750 -247.5189 175.7689 0.9999994
4:3-3:3 -7.5000 -219.1439 204.1439 1.0000000
1:4-3:3 -50.2500 -261.8939 161.3939 0.9999479
2:4-3:3 -24.7500 -236.3939 186.8939 1.0000000
3:4-3:3 -36.6250 -248.2689 175.0189 0.9999992
4:4-3:3 -34.6250 -246.2689 177.0189 0.9999996
1:4-4:3 -42.7500 -254.3939 168.8939 0.9999935
2:4-4:3 -17.2500 -228.8939 194.3939 1.0000000
3:4-4:3 -29.1250 -240.7689 182.5189 1.0000000
4:4-4:3 -27.1250 -238.7689 184.5189 1.0000000
2:4-1:4 25.5000 -186.1439 237.1439 1.0000000
3:4-1:4 13.6250 -198.0189 225.2689 1.0000000
4:4-1:4 15.6250 -196.0189 227.2689 1.0000000
3:4-2:4 -11.8750 -223.5189 199.7689 1.0000000
4:4-2:4 -9.8750 -221.5189 201.7689 1.0000000
4:4-3:4 2.0000 -209.6439 213.6439 1.0000000
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
2 4 3 1
"a" "a" "a" "a"
$Fermentador$LetterMatrix
a
2 TRUE
4 TRUE
3 TRUE
1 TRUE
$Periodo
$Periodo$Letters
1 3 2 4
"a" "a" "a" "a"
$Periodo$LetterMatrix
a
1 TRUE
3 TRUE
2 TRUE
4 TRUE
$`Fermentador:Periodo`
$`Fermentador:Periodo`$Letters
2:1 4:1 2:3 1:1 3:3 2:2 4:3 4:2 3:2 2:4 1:2 1:3 4:4 3:4 1:4 3:1
"a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"
$`Fermentador:Periodo`$LetterMatrix
a
2:1 TRUE
4:1 TRUE
2:3 TRUE
1:1 TRUE
3:3 TRUE
2:2 TRUE
4:3 TRUE
4:2 TRUE
3:2 TRUE
2:4 TRUE
1:2 TRUE
1:3 TRUE
4:4 TRUE
3:4 TRUE
1:4 TRUE
3:1 TRUE
#Plot
summary = a %>% group_by(Fermentador, Periodo) %>% summarise(sd = sd(Efluente_total, na.rm = TRUE),Efluente_total = mean(Efluente_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary
g3=ggplot(summary, aes(x=Periodo, y=Efluente_total, fill=Fermentador))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Efluente_total-sd, ymax=Efluente_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
scale_y_continuous(name="Efluente total (mL)", breaks = seq(0,700,50), limits = c(0, 700))+
scale_x_discrete(name="Periodo", labels=c("1"="P1","2"="P2","3"="P3","4"="P4"))
g3

g3.1=g3+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 15),
legend.title = element_text(size = 15),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate("text",size=5, x=4, y=700,label="P values")+
annotate("text",size=4, x=4, y=650,label= "Fermentadores = 0.655")+
annotate("text",size=4, x=4, y=600,label= "Periodos = 0.600")+
annotate("text",size=4, x=4, y=550,label= "F x P = 0.986")
Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
Please use the `linewidth` argument instead.Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
Please use the `linewidth` argument instead.Warning: A numeric `legend.position` argument in `theme()` was deprecated in ggplot2 3.5.0.
Please use the `legend.position.inside` argument of `theme()` instead.
g3.1
ggsave("Plot_Fermentador_periodo_Efluente.png", g3.1, width = 7, height = 5, units = "in", dpi = 300)

Gás total
#Modelo
mod = aov(Gas_total ~ Fermentador+Periodo+Fermentador*Periodo, data = a)
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Fermentador 3 30582 10194 0.056 0.9824
Periodo 3 1904420 634807 3.489 0.0226 *
Fermentador:Periodo 9 628955 69884 0.384 0.9370
Residuals 48 8732716 181932
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = Gas_total ~ Fermentador + Periodo + Fermentador * Periodo, data = a)
$Fermentador
diff lwr upr p adj
2-1 -16.9375 -418.2796 384.4046 0.9994858
3-1 4.1875 -397.1546 405.5296 0.9999922
4-1 -51.3125 -452.6546 350.0296 0.9862745
3-2 21.1250 -380.2171 422.4671 0.9990051
4-2 -34.3750 -435.7171 366.9671 0.9957681
4-3 -55.5000 -456.8421 345.8421 0.9827663
$Periodo
diff lwr upr p adj
2-1 -340.5000 -741.8421 60.84207 0.1225317
3-1 -269.6875 -671.0296 131.65457 0.2913932
4-1 -472.8750 -874.2171 -71.53293 0.0149967
3-2 70.8125 -330.5296 472.15457 0.9653755
4-2 -132.3750 -533.7171 268.96707 0.8162973
4-3 -203.1875 -604.5296 198.15457 0.5379678
$`Fermentador:Periodo`
diff lwr upr p adj
2:1-1:1 11.25 -1078.3572 1100.8572 1.0000000
3:1-1:1 -185.25 -1274.8572 904.3572 0.9999994
4:1-1:1 -185.50 -1275.1072 904.1072 0.9999993
1:2-1:1 -389.75 -1479.3572 699.8572 0.9943922
2:2-1:1 -652.50 -1742.1072 437.1072 0.7163620
3:2-1:1 -350.00 -1439.6072 739.6072 0.9981783
4:2-1:1 -329.25 -1418.8572 760.3572 0.9990728
1:3-1:1 -302.50 -1392.1072 787.1072 0.9996504
2:3-1:1 -395.75 -1485.3572 693.8572 0.9934683
3:3-1:1 -331.25 -1420.8572 758.3572 0.9990075
4:3-1:1 -408.75 -1498.3572 680.8572 0.9910375
1:4-1:1 -686.25 -1775.8572 403.3572 0.6422810
2:4-1:1 -409.25 -1498.8572 680.3572 0.9909312
3:4-1:1 -495.25 -1584.8572 594.3572 0.9515349
4:4-1:1 -660.25 -1749.8572 429.3572 0.6997598
3:1-2:1 -196.50 -1286.1072 893.1072 0.9999986
4:1-2:1 -196.75 -1286.3572 892.8572 0.9999985
1:2-2:1 -401.00 -1490.6072 688.6072 0.9925612
2:2-2:1 -663.75 -1753.3572 425.8572 0.6921703
3:2-2:1 -361.25 -1450.8572 728.3572 0.9974418
4:2-2:1 -340.50 -1430.1072 749.1072 0.9986518
1:3-2:1 -313.75 -1403.3572 775.8572 0.9994649
2:3-2:1 -407.00 -1496.6072 682.6072 0.9914019
3:3-2:1 -342.50 -1432.1072 747.1072 0.9985620
4:3-2:1 -420.00 -1509.6072 669.6072 0.9883878
1:4-2:1 -697.50 -1787.1072 392.1072 0.6168146
2:4-2:1 -420.50 -1510.1072 669.1072 0.9882570
3:4-2:1 -506.50 -1596.1072 583.1072 0.9423033
4:4-2:1 -671.50 -1761.1072 418.1072 0.6751838
4:1-3:1 -0.25 -1089.8572 1089.3572 1.0000000
1:2-3:1 -204.50 -1294.1072 885.1072 0.9999976
2:2-3:1 -467.25 -1556.8572 622.3572 0.9698661
3:2-3:1 -164.75 -1254.3572 924.8572 0.9999999
4:2-3:1 -144.00 -1233.6072 945.6072 1.0000000
1:3-3:1 -117.25 -1206.8572 972.3572 1.0000000
2:3-3:1 -210.50 -1300.1072 879.1072 0.9999964
3:3-3:1 -146.00 -1235.6072 943.6072 1.0000000
4:3-3:1 -223.50 -1313.1072 866.1072 0.9999920
1:4-3:1 -501.00 -1590.6072 588.6072 0.9469577
2:4-3:1 -224.00 -1313.6072 865.6072 0.9999918
3:4-3:1 -310.00 -1399.6072 779.6072 0.9995345
4:4-3:1 -475.00 -1564.6072 614.6072 0.9654178
1:2-4:1 -204.25 -1293.8572 885.3572 0.9999976
2:2-4:1 -467.00 -1556.6072 622.6072 0.9700021
3:2-4:1 -164.50 -1254.1072 925.1072 0.9999999
4:2-4:1 -143.75 -1233.3572 945.8572 1.0000000
1:3-4:1 -117.00 -1206.6072 972.6072 1.0000000
2:3-4:1 -210.25 -1299.8572 879.3572 0.9999965
3:3-4:1 -145.75 -1235.3572 943.8572 1.0000000
4:3-4:1 -223.25 -1312.8572 866.3572 0.9999922
1:4-4:1 -500.75 -1590.3572 588.8572 0.9471628
2:4-4:1 -223.75 -1313.3572 865.8572 0.9999919
3:4-4:1 -309.75 -1399.3572 779.8572 0.9995388
4:4-4:1 -474.75 -1564.3572 614.8572 0.9655684
2:2-1:2 -262.75 -1352.3572 826.8572 0.9999367
3:2-1:2 39.75 -1049.8572 1129.3572 1.0000000
4:2-1:2 60.50 -1029.1072 1150.1072 1.0000000
1:3-1:2 87.25 -1002.3572 1176.8572 1.0000000
2:3-1:2 -6.00 -1095.6072 1083.6072 1.0000000
3:3-1:2 58.50 -1031.1072 1148.1072 1.0000000
4:3-1:2 -19.00 -1108.6072 1070.6072 1.0000000
1:4-1:2 -296.50 -1386.1072 793.1072 0.9997241
2:4-1:2 -19.50 -1109.1072 1070.1072 1.0000000
3:4-1:2 -105.50 -1195.1072 984.1072 1.0000000
4:4-1:2 -270.50 -1360.1072 819.1072 0.9999092
3:2-2:2 302.50 -787.1072 1392.1072 0.9996504
4:2-2:2 323.25 -766.3572 1412.8572 0.9992469
1:3-2:2 350.00 -739.6072 1439.6072 0.9981783
2:3-2:2 256.75 -832.8572 1346.3572 0.9999526
3:3-2:2 321.25 -768.3572 1410.8572 0.9992983
4:3-2:2 243.75 -845.8572 1333.3572 0.9999755
1:4-2:2 -33.75 -1123.3572 1055.8572 1.0000000
2:4-2:2 243.25 -846.3572 1332.8572 0.9999761
3:4-2:2 157.25 -932.3572 1246.8572 0.9999999
4:4-2:2 -7.75 -1097.3572 1081.8572 1.0000000
4:2-3:2 20.75 -1068.8572 1110.3572 1.0000000
1:3-3:2 47.50 -1042.1072 1137.1072 1.0000000
2:3-3:2 -45.75 -1135.3572 1043.8572 1.0000000
3:3-3:2 18.75 -1070.8572 1108.3572 1.0000000
4:3-3:2 -58.75 -1148.3572 1030.8572 1.0000000
1:4-3:2 -336.25 -1425.8572 753.3572 0.9988269
2:4-3:2 -59.25 -1148.8572 1030.3572 1.0000000
3:4-3:2 -145.25 -1234.8572 944.3572 1.0000000
4:4-3:2 -310.25 -1399.8572 779.3572 0.9995301
1:3-4:2 26.75 -1062.8572 1116.3572 1.0000000
2:3-4:2 -66.50 -1156.1072 1023.1072 1.0000000
3:3-4:2 -2.00 -1091.6072 1087.6072 1.0000000
4:3-4:2 -79.50 -1169.1072 1010.1072 1.0000000
1:4-4:2 -357.00 -1446.6072 732.6072 0.9977451
2:4-4:2 -80.00 -1169.6072 1009.6072 1.0000000
3:4-4:2 -166.00 -1255.6072 923.6072 0.9999999
4:4-4:2 -331.00 -1420.6072 758.6072 0.9990159
2:3-1:3 -93.25 -1182.8572 996.3572 1.0000000
3:3-1:3 -28.75 -1118.3572 1060.8572 1.0000000
4:3-1:3 -106.25 -1195.8572 983.3572 1.0000000
1:4-1:3 -383.75 -1473.3572 705.8572 0.9952058
2:4-1:3 -106.75 -1196.3572 982.8572 1.0000000
3:4-1:3 -192.75 -1282.3572 896.8572 0.9999989
4:4-1:3 -357.75 -1447.3572 731.8572 0.9976939
3:3-2:3 64.50 -1025.1072 1154.1072 1.0000000
4:3-2:3 -13.00 -1102.6072 1076.6072 1.0000000
1:4-2:3 -290.50 -1380.1072 799.1072 0.9997838
2:4-2:3 -13.50 -1103.1072 1076.1072 1.0000000
3:4-2:3 -99.50 -1189.1072 990.1072 1.0000000
4:4-2:3 -264.50 -1354.1072 825.1072 0.9999312
4:3-3:3 -77.50 -1167.1072 1012.1072 1.0000000
1:4-3:3 -355.00 -1444.6072 734.6072 0.9978769
2:4-3:3 -78.00 -1167.6072 1011.6072 1.0000000
3:4-3:3 -164.00 -1253.6072 925.6072 0.9999999
4:4-3:3 -329.00 -1418.6072 760.6072 0.9990807
1:4-4:3 -277.50 -1367.1072 812.1072 0.9998758
2:4-4:3 -0.50 -1090.1072 1089.1072 1.0000000
3:4-4:3 -86.50 -1176.1072 1003.1072 1.0000000
4:4-4:3 -251.50 -1341.1072 838.1072 0.9999635
2:4-1:4 277.00 -812.6072 1366.6072 0.9998785
3:4-1:4 191.00 -898.6072 1280.6072 0.9999990
4:4-1:4 26.00 -1063.6072 1115.6072 1.0000000
3:4-2:4 -86.00 -1175.6072 1003.6072 1.0000000
4:4-2:4 -251.00 -1340.6072 838.6072 0.9999644
4:4-3:4 -165.00 -1254.6072 924.6072 0.9999999
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
3 1 2 4
"a" "a" "a" "a"
$Fermentador$LetterMatrix
a
3 TRUE
1 TRUE
2 TRUE
4 TRUE
$Periodo
1 3 2 4
"a" "ab" "ab" "b"
$`Fermentador:Periodo`
$`Fermentador:Periodo`$Letters
2:1 1:1 3:1 4:1 1:3 4:2 3:3 3:2 1:2 2:3 4:3 2:4 3:4 2:2 4:4 1:4
"a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"
$`Fermentador:Periodo`$LetterMatrix
a
2:1 TRUE
1:1 TRUE
3:1 TRUE
4:1 TRUE
1:3 TRUE
4:2 TRUE
3:3 TRUE
3:2 TRUE
1:2 TRUE
2:3 TRUE
4:3 TRUE
2:4 TRUE
3:4 TRUE
2:2 TRUE
4:4 TRUE
1:4 TRUE
#Plot
summary = a %>% group_by(Fermentador, Periodo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary
g3=ggplot(summary, aes(x=Periodo, y=Gas_total, fill=Fermentador))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3000,250), limits = c(0, 3000))+
scale_x_discrete(name="Periodo", labels=c("1"="P1","2"="P2","3"="P3","4"="P4"))
g3

g3.1=g3+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 15),
legend.title = element_text(size = 15),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate(geom="text", y=2350, x=1,label="a",size=7,color="black")+
annotate(geom="text", y=2050, x=2,label="ab",size=7,color="black")+
annotate(geom="text", y=2050, x=3,label="ab",size=7,color="black")+
annotate(geom="text", y=2000, x=4,label="b",size=7,color="black")+
annotate("text",size=5, x=4, y=3000,label="P values")+
annotate("text",size=4, x=4, y=2750,label= "Fermentadores = 0.982")+
annotate("text",size=4, x=4, y=2550,label= "Periodos = 0.023")+
annotate("text",size=4, x=4, y=2350,label= "F x P = 0.937")
g3.1
ggsave("Plot_Fermentador_periodo_Gas.png", g3.1, width = 7, height = 5, units = "in", dpi = 300)

4 - ANALISE DE VARIANCIA PARA FERMENTADORES
Efluente total
#Modelo
mod = aov(Efluente_total ~ Fermentador+Tempo+Fermentador*Tempo, data = a)
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Fermentador 3 11178 3726 0.799 0.500715
Tempo 3 115636 38545 8.262 0.000156 ***
Fermentador:Tempo 9 17764 1974 0.423 0.916272
Residuals 48 223927 4665
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = Efluente_total ~ Fermentador + Tempo + Fermentador * Tempo, data = a)
$Fermentador
diff lwr upr p adj
2-1 31.371875 -32.89592 95.63967 0.5679816
3-1 1.715625 -62.55217 65.98342 0.9998695
4-1 21.121875 -43.14592 85.38967 0.8178896
3-2 -29.656250 -93.92404 34.61154 0.6123453
4-2 -10.250000 -74.51779 54.01779 0.9740210
4-3 19.406250 -44.86154 83.67404 0.8523899
$Tempo
diff lwr upr p adj
48-24 -2.18750 -66.45529 62.08029 0.9997298
72-24 90.31250 26.04471 154.58029 0.0026790
96-24 76.34687 12.07908 140.61467 0.0139867
72-48 92.50000 28.23221 156.76779 0.0020385
96-48 78.53437 14.26658 142.80217 0.0109221
96-72 -13.96563 -78.23342 50.30217 0.9381066
$`Fermentador:Tempo`
diff lwr upr p adj
2:24-1:24 23.7500 -150.73119 198.23119 1.0000000
3:24-1:24 -55.8750 -230.35619 118.60619 0.9982379
4:24-1:24 35.8750 -138.60619 210.35619 0.9999918
1:48-1:24 -22.5000 -196.98119 151.98119 1.0000000
2:48-1:24 20.0000 -154.48119 194.48119 1.0000000
3:48-1:24 1.2500 -173.23119 175.73119 1.0000000
4:48-1:24 -3.7500 -178.23119 170.73119 1.0000000
1:72-1:24 62.5000 -111.98119 236.98119 0.9943118
2:72-1:24 107.5000 -66.98119 281.98119 0.6755803
3:72-1:24 100.0000 -74.48119 274.48119 0.7735453
4:72-1:24 95.0000 -79.48119 269.48119 0.8306424
1:96-1:24 74.0125 -100.46869 248.49369 0.9725271
2:96-1:24 88.2500 -86.23119 262.73119 0.8939916
3:96-1:24 75.5000 -98.98119 249.98119 0.9674915
4:96-1:24 71.3750 -103.10619 245.85619 0.9799819
3:24-2:24 -79.6250 -254.10619 94.85619 0.9499795
4:24-2:24 12.1250 -162.35619 186.60619 1.0000000
1:48-2:24 -46.2500 -220.73119 128.23119 0.9997983
2:48-2:24 -3.7500 -178.23119 170.73119 1.0000000
3:48-2:24 -22.5000 -196.98119 151.98119 1.0000000
4:48-2:24 -27.5000 -201.98119 146.98119 0.9999998
1:72-2:24 38.7500 -135.73119 213.23119 0.9999777
2:72-2:24 83.7500 -90.73119 258.23119 0.9266576
3:72-2:24 76.2500 -98.23119 250.73119 0.9647069
4:72-2:24 71.2500 -103.23119 245.73119 0.9802918
1:96-2:24 50.2625 -124.21869 224.74369 0.9994623
2:96-2:24 64.5000 -109.98119 238.98119 0.9922291
3:96-2:24 51.7500 -122.73119 226.23119 0.9992490
4:96-2:24 47.6250 -126.85619 222.10619 0.9997139
4:24-3:24 91.7500 -82.73119 266.23119 0.8632471
1:48-3:24 33.3750 -141.10619 207.85619 0.9999968
2:48-3:24 75.8750 -98.60619 250.35619 0.9661203
3:48-3:24 57.1250 -117.35619 231.60619 0.9977628
4:48-3:24 52.1250 -122.35619 226.60619 0.9991849
1:72-3:24 118.3750 -56.10619 292.85619 0.5215562
2:72-3:24 163.3750 -11.10619 337.85619 0.0888154
3:72-3:24 155.8750 -18.60619 330.35619 0.1275312
4:72-3:24 150.8750 -23.60619 325.35619 0.1602247
1:96-3:24 129.8875 -44.59369 304.36869 0.3666895
2:96-3:24 144.1250 -30.35619 318.60619 0.2141791
3:96-3:24 131.3750 -43.10619 305.85619 0.3484189
4:96-3:24 127.2500 -47.23119 301.73119 0.4002418
1:48-4:24 -58.3750 -232.85619 116.10619 0.9971839
2:48-4:24 -15.8750 -190.35619 158.60619 1.0000000
3:48-4:24 -34.6250 -209.10619 139.85619 0.9999949
4:48-4:24 -39.6250 -214.10619 134.85619 0.9999703
1:72-4:24 26.6250 -147.85619 201.10619 0.9999999
2:72-4:24 71.6250 -102.85619 246.10619 0.9793508
3:72-4:24 64.1250 -110.35619 238.60619 0.9926607
4:72-4:24 59.1250 -115.35619 233.60619 0.9967797
1:96-4:24 38.1375 -136.34369 212.61869 0.9999818
2:96-4:24 52.3750 -122.10619 226.85619 0.9991396
3:96-4:24 39.6250 -134.85619 214.10619 0.9999703
4:96-4:24 35.5000 -138.98119 209.98119 0.9999928
2:48-1:48 42.5000 -131.98119 216.98119 0.9999283
3:48-1:48 23.7500 -150.73119 198.23119 1.0000000
4:48-1:48 18.7500 -155.73119 193.23119 1.0000000
1:72-1:48 85.0000 -89.48119 259.48119 0.9183561
2:72-1:48 130.0000 -44.48119 304.48119 0.3652906
3:72-1:48 122.5000 -51.98119 296.98119 0.4638669
4:72-1:48 117.5000 -56.98119 291.98119 0.5339768
1:96-1:48 96.5125 -77.96869 270.99369 0.8142107
2:96-1:48 110.7500 -63.73119 285.23119 0.6301654
3:96-1:48 98.0000 -76.48119 272.48119 0.7973205
4:96-1:48 93.8750 -80.60619 268.35619 0.8423560
3:48-2:48 -18.7500 -193.23119 155.73119 1.0000000
4:48-2:48 -23.7500 -198.23119 150.73119 1.0000000
1:72-2:48 42.5000 -131.98119 216.98119 0.9999283
2:72-2:48 87.5000 -86.98119 261.98119 0.8999729
3:72-2:48 80.0000 -94.48119 254.48119 0.9481094
4:72-2:48 75.0000 -99.48119 249.48119 0.9692550
1:96-2:48 54.0125 -120.46869 228.49369 0.9987856
2:96-2:48 68.2500 -106.23119 242.73119 0.9866778
3:96-2:48 55.5000 -118.98119 229.98119 0.9983624
4:96-2:48 51.3750 -123.10619 225.85619 0.9993087
4:48-3:48 -5.0000 -179.48119 169.48119 1.0000000
1:72-3:48 61.2500 -113.23119 235.73119 0.9953629
2:72-3:48 106.2500 -68.23119 280.73119 0.6926832
3:72-3:48 98.7500 -75.73119 273.23119 0.7885431
4:72-3:48 93.7500 -80.73119 268.23119 0.8436300
1:96-3:48 72.7625 -101.71869 247.24369 0.9762843
2:96-3:48 87.0000 -87.48119 261.48119 0.9038407
3:96-3:48 74.2500 -100.23119 248.73119 0.9717653
4:96-3:48 70.1250 -104.35619 244.60619 0.9829169
1:72-4:48 66.2500 -108.23119 240.73119 0.9899344
2:72-4:48 111.2500 -63.23119 285.73119 0.6230882
3:72-4:48 103.7500 -70.73119 278.23119 0.7260676
4:72-4:48 98.7500 -75.73119 273.23119 0.7885431
1:96-4:48 77.7625 -96.71869 252.24369 0.9585637
2:96-4:48 92.0000 -82.48119 266.48119 0.8608750
3:96-4:48 79.2500 -95.23119 253.73119 0.9518014
4:96-4:48 75.1250 -99.35619 249.60619 0.9688210
2:72-1:72 45.0000 -129.48119 219.48119 0.9998551
3:72-1:72 37.5000 -136.98119 211.98119 0.9999854
4:72-1:72 32.5000 -141.98119 206.98119 0.9999978
1:96-1:72 11.5125 -162.96869 185.99369 1.0000000
2:96-1:72 25.7500 -148.73119 200.23119 0.9999999
3:96-1:72 13.0000 -161.48119 187.48119 1.0000000
4:96-1:72 8.8750 -165.60619 183.35619 1.0000000
3:72-2:72 -7.5000 -181.98119 166.98119 1.0000000
4:72-2:72 -12.5000 -186.98119 161.98119 1.0000000
1:96-2:72 -33.4875 -207.96869 140.99369 0.9999967
2:96-2:72 -19.2500 -193.73119 155.23119 1.0000000
3:96-2:72 -32.0000 -206.48119 142.48119 0.9999982
4:96-2:72 -36.1250 -210.60619 138.35619 0.9999910
4:72-3:72 -5.0000 -179.48119 169.48119 1.0000000
1:96-3:72 -25.9875 -200.46869 148.49369 0.9999999
2:96-3:72 -11.7500 -186.23119 162.73119 1.0000000
3:96-3:72 -24.5000 -198.98119 149.98119 1.0000000
4:96-3:72 -28.6250 -203.10619 145.85619 0.9999996
1:96-4:72 -20.9875 -195.46869 153.49369 1.0000000
2:96-4:72 -6.7500 -181.23119 167.73119 1.0000000
3:96-4:72 -19.5000 -193.98119 154.98119 1.0000000
4:96-4:72 -23.6250 -198.10619 150.85619 1.0000000
2:96-1:96 14.2375 -160.24369 188.71869 1.0000000
3:96-1:96 1.4875 -172.99369 175.96869 1.0000000
4:96-1:96 -2.6375 -177.11869 171.84369 1.0000000
3:96-2:96 -12.7500 -187.23119 161.73119 1.0000000
4:96-2:96 -16.8750 -191.35619 157.60619 1.0000000
4:96-3:96 -4.1250 -178.60619 170.35619 1.0000000
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
2 4 3 1
"a" "a" "a" "a"
$Fermentador$LetterMatrix
a
2 TRUE
4 TRUE
3 TRUE
1 TRUE
$Tempo
72 96 24 48
"a" "a" "b" "b"
$`Fermentador:Tempo`
$`Fermentador:Tempo`$Letters
2:72 3:72 4:72 2:96 3:96 1:96 4:96 1:72 4:24 2:24 2:48 3:48 1:24 4:48 1:48 3:24
"a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"
$`Fermentador:Tempo`$LetterMatrix
a
2:72 TRUE
3:72 TRUE
4:72 TRUE
2:96 TRUE
3:96 TRUE
1:96 TRUE
4:96 TRUE
1:72 TRUE
4:24 TRUE
2:24 TRUE
2:48 TRUE
3:48 TRUE
1:24 TRUE
4:48 TRUE
1:48 TRUE
3:24 TRUE
#Plot
summary = a %>% group_by(Fermentador, Tempo) %>% summarise(sd = sd(Efluente_total, na.rm = TRUE),Efluente_total = mean(Efluente_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary
g4=ggplot(summary, aes(x=Tempo, y=Efluente_total, fill=Fermentador))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Efluente_total-sd, ymax=Efluente_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
scale_y_continuous(name="Efluente total (mL)", breaks = seq(0,700,50), limits = c(0, 700))+
scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g4

g4.1=g4+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 15),
legend.title = element_text(size = 15),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate(geom="text", y=400, x=1,label="b",size=8,color="black")+
annotate(geom="text", y=400, x=2,label="b",size=8,color="black")+
annotate(geom="text", y=480, x=3,label="a",size=8,color="black")+
annotate(geom="text", y=480, x=4,label="a",size=8,color="black")+
annotate("text",size=5, x=4, y=700,label="P values")+
annotate("text",size=4, x=4, y=650,label= "Fermentadores = 0.501")+
annotate("text",size=4, x=4, y=600,label= "Tempo = <0.01")+
annotate("text",size=4, x=4, y=550,label= "F x T = 0.916")
g4.1
ggsave("Plot_Efluente.png", g4.1, width = 7, height = 5, units = "in", dpi = 300)

Gas total
#Modelo
mod = aov(Gas_total ~ Fermentador+Tempo+Fermentador*Tempo, data = a)
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Fermentador 3 30582 10194 0.096 0.962
Tempo 3 5569388 1856463 17.424 8.65e-08 ***
Fermentador:Tempo 9 582584 64732 0.608 0.784
Residuals 48 5114118 106544
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = Gas_total ~ Fermentador + Tempo + Fermentador * Tempo, data = a)
$Fermentador
diff lwr upr p adj
2-1 -16.9375 -324.0697 290.1947 0.9988567
3-1 4.1875 -302.9447 311.3197 0.9999826
4-1 -51.3125 -358.4447 255.8197 0.9703414
3-2 21.1250 -286.0072 328.2572 0.9977923
4-2 -34.3750 -341.5072 272.7572 0.9906935
4-3 -55.5000 -362.6322 251.6322 0.9629594
$Tempo
diff lwr upr p adj
48-24 -523.8750 -831.00724 -216.742758 0.0002164
72-24 -824.3125 -1131.44474 -517.180258 0.0000000
96-24 -454.6250 -761.75724 -147.492758 0.0014610
72-48 -300.4375 -607.56974 6.694742 0.0573222
96-48 69.2500 -237.88224 376.382242 0.9315376
96-72 369.6875 62.55526 676.819742 0.0124837
$`Fermentador:Tempo`
diff lwr upr p adj
2:24-1:24 28.50 -805.336 862.336049 1.0000000
3:24-1:24 -217.75 -1051.586 616.086049 0.9998315
4:24-1:24 -259.50 -1093.336 574.336049 0.9987118
1:48-1:24 -588.50 -1422.336 245.336049 0.4550305
2:48-1:24 -567.75 -1401.586 266.086049 0.5155074
3:48-1:24 -713.25 -1547.086 120.586049 0.1721633
4:48-1:24 -674.75 -1508.586 159.086049 0.2413228
1:72-1:24 -1039.00 -1872.836 -205.163951 0.0038929
2:72-1:24 -1001.50 -1835.336 -167.663951 0.0064063
3:72-1:24 -815.25 -1649.086 18.586049 0.0614450
4:72-1:24 -890.25 -1724.086 -56.413951 0.0259731
1:96-1:24 -560.00 -1393.836 273.836049 0.5385199
2:96-1:24 -714.50 -1548.336 119.336049 0.1701989
3:96-1:24 -424.50 -1258.336 409.336049 0.8892422
4:96-1:24 -568.25 -1402.086 265.586049 0.5140286
3:24-2:24 -246.25 -1080.086 587.586049 0.9992849
4:24-2:24 -288.00 -1121.836 545.836049 0.9960735
1:48-2:24 -617.00 -1450.836 216.836049 0.3764567
2:48-2:24 -596.25 -1430.086 237.586049 0.4330565
3:48-2:24 -741.75 -1575.586 92.086049 0.1315303
4:48-2:24 -703.25 -1537.086 130.586049 0.1885039
1:72-2:24 -1067.50 -1901.336 -233.663951 0.0026465
2:72-2:24 -1030.00 -1863.836 -196.163951 0.0043918
3:72-2:24 -843.75 -1677.586 -9.913951 0.0447026
4:72-2:24 -918.75 -1752.586 -84.913951 0.0183752
1:96-2:24 -588.50 -1422.336 245.336049 0.4550305
2:96-2:24 -743.00 -1576.836 90.836049 0.1299405
3:96-2:24 -453.00 -1286.836 380.836049 0.8328541
4:96-2:24 -596.75 -1430.586 237.086049 0.4316529
4:24-3:24 -41.75 -875.586 792.086049 1.0000000
1:48-3:24 -370.75 -1204.586 463.086049 0.9593439
2:48-3:24 -350.00 -1183.836 483.836049 0.9749045
3:48-3:24 -495.50 -1329.336 338.336049 0.7269324
4:48-3:24 -457.00 -1290.836 376.836049 0.8239155
1:72-3:24 -821.25 -1655.086 12.586049 0.0575216
2:72-3:24 -783.75 -1617.586 50.086049 0.0860890
3:72-3:24 -597.50 -1431.336 236.336049 0.4295508
4:72-3:24 -672.50 -1506.336 161.336049 0.2458922
1:96-3:24 -342.25 -1176.086 491.586049 0.9793732
2:96-3:24 -496.75 -1330.586 337.086049 0.7235011
3:96-3:24 -206.75 -1040.586 627.086049 0.9999106
4:96-3:24 -350.50 -1184.336 483.336049 0.9745929
1:48-4:24 -329.00 -1162.836 504.836049 0.9855658
2:48-4:24 -308.25 -1142.086 525.586049 0.9922271
3:48-4:24 -453.75 -1287.586 380.086049 0.8311964
4:48-4:24 -415.25 -1249.086 418.586049 0.9046669
1:72-4:24 -779.50 -1613.336 54.336049 0.0899862
2:72-4:24 -742.00 -1575.836 91.836049 0.1312111
3:72-4:24 -555.75 -1389.586 278.086049 0.5511947
4:72-4:24 -630.75 -1464.586 203.086049 0.3410686
1:96-4:24 -300.50 -1134.336 533.336049 0.9939561
2:96-4:24 -455.00 -1288.836 378.836049 0.8284147
3:96-4:24 -165.00 -998.836 668.836049 0.9999950
4:96-4:24 -308.75 -1142.586 525.086049 0.9921030
2:48-1:48 20.75 -813.086 854.586049 1.0000000
3:48-1:48 -124.75 -958.586 709.086049 0.9999999
4:48-1:48 -86.25 -920.086 747.586049 1.0000000
1:72-1:48 -450.50 -1284.336 383.336049 0.8383179
2:72-1:48 -413.00 -1246.836 420.836049 0.9082019
3:72-1:48 -226.75 -1060.586 607.086049 0.9997263
4:72-1:48 -301.75 -1135.586 532.086049 0.9937008
1:96-1:48 28.50 -805.336 862.336049 1.0000000
2:96-1:48 -126.00 -959.836 707.836049 0.9999999
3:96-1:48 164.00 -669.836 997.836049 0.9999954
4:96-1:48 20.25 -813.586 854.086049 1.0000000
3:48-2:48 -145.50 -979.336 688.336049 0.9999991
4:48-2:48 -107.00 -940.836 726.836049 1.0000000
1:72-2:48 -471.25 -1305.086 362.586049 0.7901988
2:72-2:48 -433.75 -1267.586 400.086049 0.8723880
3:72-2:48 -247.50 -1081.336 586.336049 0.9992424
4:72-2:48 -322.50 -1156.336 511.336049 0.9880122
1:96-2:48 7.75 -826.086 841.586049 1.0000000
2:96-2:48 -146.75 -980.586 687.086049 0.9999990
3:96-2:48 143.25 -690.586 977.086049 0.9999993
4:96-2:48 -0.50 -834.336 833.336049 1.0000000
4:48-3:48 38.50 -795.336 872.336049 1.0000000
1:72-3:48 -325.75 -1159.586 508.086049 0.9868339
2:72-3:48 -288.25 -1122.086 545.586049 0.9960382
3:72-3:48 -102.00 -935.836 731.836049 1.0000000
4:72-3:48 -177.00 -1010.836 656.836049 0.9999875
1:96-3:48 153.25 -680.586 987.086049 0.9999982
2:96-3:48 -1.25 -835.086 832.586049 1.0000000
3:96-3:48 288.75 -545.086 1122.586049 0.9959668
4:96-3:48 145.00 -688.836 978.836049 0.9999991
1:72-4:48 -364.25 -1198.086 469.586049 0.9648225
2:72-4:48 -326.75 -1160.586 507.086049 0.9864535
3:72-4:48 -140.50 -974.336 693.336049 0.9999994
4:72-4:48 -215.50 -1049.336 618.336049 0.9998514
1:96-4:48 114.75 -719.086 948.586049 1.0000000
2:96-4:48 -39.75 -873.586 794.086049 1.0000000
3:96-4:48 250.25 -583.586 1084.086049 0.9991414
4:96-4:48 106.50 -727.336 940.336049 1.0000000
2:72-1:72 37.50 -796.336 871.336049 1.0000000
3:72-1:72 223.75 -610.086 1057.586049 0.9997664
4:72-1:72 148.75 -685.086 982.586049 0.9999988
1:96-1:72 479.00 -354.836 1312.836049 0.7707211
2:96-1:72 324.50 -509.336 1158.336049 0.9872975
3:96-1:72 614.50 -219.336 1448.336049 0.3830831
4:96-1:72 470.75 -363.086 1304.586049 0.7914290
3:72-2:72 186.25 -647.586 1020.086049 0.9999760
4:72-2:72 111.25 -722.586 945.086049 1.0000000
1:96-2:72 441.50 -392.336 1275.336049 0.8571825
2:96-2:72 287.00 -546.836 1120.836049 0.9962121
3:96-2:72 577.00 -256.836 1410.836049 0.4882986
4:96-2:72 433.25 -400.586 1267.086049 0.8733352
4:72-3:72 -75.00 -908.836 758.836049 1.0000000
1:96-3:72 255.25 -578.586 1089.086049 0.9989278
2:96-3:72 100.75 -733.086 934.586049 1.0000000
3:96-3:72 390.75 -443.086 1224.586049 0.9386463
4:96-3:72 247.00 -586.836 1080.836049 0.9992597
1:96-4:72 330.25 -503.586 1164.086049 0.9850532
2:96-4:72 175.75 -658.086 1009.586049 0.9999886
3:96-4:72 465.75 -368.086 1299.586049 0.8035475
4:96-4:72 322.00 -511.836 1155.836049 0.9881858
2:96-1:96 -154.50 -988.336 679.336049 0.9999979
3:96-1:96 135.50 -698.336 969.336049 0.9999997
4:96-1:96 -8.25 -842.086 825.586049 1.0000000
3:96-2:96 290.00 -543.836 1123.836049 0.9957837
4:96-2:96 146.25 -687.586 980.086049 0.9999990
4:96-3:96 -143.75 -977.586 690.086049 0.9999992
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
3 1 2 4
"a" "a" "a" "a"
$Fermentador$LetterMatrix
a
3 TRUE
1 TRUE
2 TRUE
4 TRUE
$Tempo
24 96 48 72
"a" "b" "bc" "c"
$`Fermentador:Tempo`
2:24 1:24 3:24 4:24 3:96 1:96 2:48 4:96 1:48 4:48 3:48 2:96 3:72 4:72 2:72 1:72
"a" "ab" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "bc" "c" "c" "c"
#Plot
summary = a %>% group_by(Fermentador, Tempo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary
g4=ggplot(summary, aes(x=Tempo, y=Gas_total, fill=Fermentador))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3500,250), limits = c(0, 3500))+
scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g4

g4.1=g4+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 15),
legend.title = element_text(size = 15),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate(geom="text", y=2600, x=1,label="a",size=8,color="black")+
annotate(geom="text", y=2250, x=2,label="bc",size=8,color="black")+
annotate(geom="text", y=2000, x=3,label="c",size=8,color="black")+
annotate(geom="text", y=2100, x=4,label="b",size=8,color="black")+
annotate("text",size=5, x=4, y=3500,label="P values")+
annotate("text",size=4, x=4, y=3250,label= "Fermentadores = 0.962")+
annotate("text",size=4, x=4, y=3000,label= "Tempo = <0.01")+
annotate("text",size=4, x=4, y=2750,label= "F x T = 0.784")
g4.1
ggsave("Plot_Gas.png", g4.1, width = 7, height = 5, units = "in", dpi = 300)

5 - ANALISE DE VARIANCIA PARA PERIODO
Efluente total
#Modelo
mod = aov(Efluente_total ~ Periodo+Tempo+Periodo*Tempo, data = a)
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Periodo 3 12955 4318 1.347 0.27041
Tempo 3 115636 38545 12.019 5.45e-06 ***
Periodo:Tempo 9 85975 9553 2.979 0.00674 **
Residuals 48 153939 3207
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = Efluente_total ~ Periodo + Tempo + Periodo * Tempo, data = a)
$Periodo
diff lwr upr p adj
2-1 -16.09687 -69.38298 37.18923 0.8522362
3-1 -12.47187 -65.75798 40.81423 0.9242339
4-1 -39.34687 -92.63298 13.93923 0.2154429
3-2 3.62500 -49.66110 56.91110 0.9978633
4-2 -23.25000 -76.53610 30.03610 0.6538537
4-3 -26.87500 -80.16110 26.41110 0.5411321
$Tempo
diff lwr upr p adj
48-24 -2.18750 -55.47360 51.09860 0.9995266
72-24 90.31250 37.02640 143.59860 0.0002378
96-24 76.34687 23.06077 129.63298 0.0021486
72-48 92.50000 39.21390 145.78610 0.0001661
96-48 78.53437 25.24827 131.82048 0.0015396
96-72 -13.96562 -67.25173 39.32048 0.8975339
$`Periodo:Tempo`
diff lwr upr p adj
2:24-1:24 80.5000 -64.166918 225.166918 0.8077351
3:24-1:24 95.5000 -49.166918 240.166918 0.5670431
4:24-1:24 -70.2500 -214.916918 74.416918 0.9202143
1:48-1:24 40.5000 -104.166918 185.166918 0.9996144
2:48-1:24 -2.0000 -146.666918 142.666918 1.0000000
3:48-1:24 8.0000 -136.666918 152.666918 1.0000000
4:48-1:24 50.5000 -94.166918 195.166918 0.9956210
1:72-1:24 150.5000 5.833082 295.166918 0.0340127
2:72-1:24 100.5000 -44.166918 245.166918 0.4816907
3:72-1:24 118.0000 -26.666918 262.666918 0.2306298
4:72-1:24 98.0000 -46.666918 242.666918 0.5240830
1:96-1:24 147.1375 2.470582 291.804418 0.0425521
2:96-1:24 94.7500 -49.916918 239.416918 0.5799689
3:96-1:24 66.7500 -77.916918 211.416918 0.9455064
4:96-1:24 102.5000 -42.166918 247.166918 0.4484881
3:24-2:24 15.0000 -129.666918 159.666918 1.0000000
4:24-2:24 -150.7500 -295.416918 -6.083082 0.0334443
1:48-2:24 -40.0000 -184.666918 104.666918 0.9996667
2:48-2:24 -82.5000 -227.166918 62.166918 0.7795701
3:48-2:24 -72.5000 -217.166918 72.166918 0.9004307
4:48-2:24 -30.0000 -174.666918 114.666918 0.9999908
1:72-2:24 70.0000 -74.666918 214.666918 0.9222396
2:72-2:24 20.0000 -124.666918 164.666918 1.0000000
3:72-2:24 37.5000 -107.166918 182.166918 0.9998460
4:72-2:24 17.5000 -127.166918 162.166918 1.0000000
1:96-2:24 66.6375 -78.029418 211.304418 0.9462126
2:96-2:24 14.2500 -130.416918 158.916918 1.0000000
3:96-2:24 -13.7500 -158.416918 130.916918 1.0000000
4:96-2:24 22.0000 -122.666918 166.666918 0.9999999
4:24-3:24 -165.7500 -310.416918 -21.083082 0.0116263
1:48-3:24 -55.0000 -199.666918 89.666918 0.9898105
2:48-3:24 -97.5000 -242.166918 47.166918 0.5326448
3:48-3:24 -87.5000 -232.166918 57.166918 0.7023807
4:48-3:24 -45.0000 -189.666918 99.666918 0.9987188
1:72-3:24 55.0000 -89.666918 199.666918 0.9898105
2:72-3:24 5.0000 -139.666918 149.666918 1.0000000
3:72-3:24 22.5000 -122.166918 167.166918 0.9999998
4:72-3:24 2.5000 -142.166918 147.166918 1.0000000
1:96-3:24 51.6375 -93.029418 196.304418 0.9945103
2:96-3:24 -0.7500 -145.416918 143.916918 1.0000000
3:96-3:24 -28.7500 -173.416918 115.916918 0.9999948
4:96-3:24 7.0000 -137.666918 151.666918 1.0000000
1:48-4:24 110.7500 -33.916918 255.416918 0.3223354
2:48-4:24 68.2500 -76.416918 212.916918 0.9354655
3:48-4:24 78.2500 -66.416918 222.916918 0.8371893
4:48-4:24 120.7500 -23.916918 265.416918 0.2010857
1:72-4:24 220.7500 76.083082 365.416918 0.0001436
2:72-4:24 170.7500 26.083082 315.416918 0.0080315
3:72-4:24 188.2500 43.583082 332.916918 0.0020810
4:72-4:24 168.2500 23.583082 312.916918 0.0096728
1:96-4:24 217.3875 72.720582 362.054418 0.0001908
2:96-4:24 165.0000 20.333082 309.666918 0.0122810
3:96-4:24 137.0000 -7.666918 281.666918 0.0809210
4:96-4:24 172.7500 28.083082 317.416918 0.0069118
2:48-1:48 -42.5000 -187.166918 102.166918 0.9993264
3:48-1:48 -32.5000 -177.166918 112.166918 0.9999741
4:48-1:48 10.0000 -134.666918 154.666918 1.0000000
1:72-1:48 110.0000 -34.666918 254.666918 0.3329250
2:72-1:48 60.0000 -84.666918 204.666918 0.9773920
3:72-1:48 77.5000 -67.166918 222.166918 0.8464444
4:72-1:48 57.5000 -87.166918 202.166918 0.9845604
1:96-1:48 106.6375 -38.029418 251.304418 0.3827084
2:96-1:48 54.2500 -90.416918 198.916918 0.9910688
3:96-1:48 26.2500 -118.416918 170.916918 0.9999984
4:96-1:48 62.0000 -82.666918 206.666918 0.9700164
3:48-2:48 10.0000 -134.666918 154.666918 1.0000000
4:48-2:48 52.5000 -92.166918 197.166918 0.9935219
1:72-2:48 152.5000 7.833082 297.166918 0.0297005
2:72-2:48 102.5000 -42.166918 247.166918 0.4484881
3:72-2:48 120.0000 -24.666918 264.666918 0.2088561
4:72-2:48 100.0000 -44.666918 244.666918 0.4901015
1:96-2:48 149.1375 4.470582 293.804418 0.0372669
2:96-2:48 96.7500 -47.916918 241.416918 0.5455220
3:96-2:48 68.7500 -75.916918 213.416918 0.9318551
4:96-2:48 104.5000 -40.166918 249.166918 0.4161388
4:48-3:48 42.5000 -102.166918 187.166918 0.9993264
1:72-3:48 142.5000 -2.166918 287.166918 0.0574605
2:72-3:48 92.5000 -52.166918 237.166918 0.6186456
3:72-3:48 110.0000 -34.666918 254.666918 0.3329250
4:72-3:48 90.0000 -54.666918 234.666918 0.6610673
1:96-3:48 139.1375 -5.529418 283.804418 0.0709715
2:96-3:48 86.7500 -57.916918 231.416918 0.7144778
3:96-3:48 58.7500 -85.916918 203.416918 0.9812402
4:96-3:48 94.5000 -50.166918 239.166918 0.5842766
1:72-4:48 100.0000 -44.666918 244.666918 0.4901015
2:72-4:48 50.0000 -94.666918 194.666918 0.9960465
3:72-4:48 67.5000 -77.166918 212.166918 0.9406326
4:72-4:48 47.5000 -97.166918 192.166918 0.9976931
1:96-4:48 96.6375 -48.029418 241.304418 0.5474565
2:96-4:48 44.2500 -100.416918 188.916918 0.9989372
3:96-4:48 16.2500 -128.416918 160.916918 1.0000000
4:96-4:48 52.0000 -92.666918 196.666918 0.9941112
2:72-1:72 -50.0000 -194.666918 94.666918 0.9960465
3:72-1:72 -32.5000 -177.166918 112.166918 0.9999741
4:72-1:72 -52.5000 -197.166918 92.166918 0.9935219
1:96-1:72 -3.3625 -148.029418 141.304418 1.0000000
2:96-1:72 -55.7500 -200.416918 88.916918 0.9884140
3:96-1:72 -83.7500 -228.416918 60.916918 0.7611081
4:96-1:72 -48.0000 -192.666918 96.666918 0.9974209
3:72-2:72 17.5000 -127.166918 162.166918 1.0000000
4:72-2:72 -2.5000 -147.166918 142.166918 1.0000000
1:96-2:72 46.6375 -98.029418 191.304418 0.9981057
2:96-2:72 -5.7500 -150.416918 138.916918 1.0000000
3:96-2:72 -33.7500 -178.416918 110.916918 0.9999582
4:96-2:72 2.0000 -142.666918 146.666918 1.0000000
4:72-3:72 -20.0000 -164.666918 124.666918 1.0000000
1:96-3:72 29.1375 -115.529418 173.804418 0.9999937
2:96-3:72 -23.2500 -167.916918 121.416918 0.9999997
3:96-3:72 -51.2500 -195.916918 93.416918 0.9949121
4:96-3:72 -15.5000 -160.166918 129.166918 1.0000000
1:96-4:72 49.1375 -95.529418 193.804418 0.9966996
2:96-4:72 -3.2500 -147.916918 141.416918 1.0000000
3:96-4:72 -31.2500 -175.916918 113.416918 0.9999844
4:96-4:72 4.5000 -140.166918 149.166918 1.0000000
2:96-1:96 -52.3875 -197.054418 92.279418 0.9936585
3:96-1:96 -80.3875 -225.054418 64.279418 0.8092658
4:96-1:96 -44.6375 -189.304418 100.029418 0.9988287
3:96-2:96 -28.0000 -172.666918 116.666918 0.9999963
4:96-2:96 7.7500 -136.916918 152.416918 1.0000000
4:96-3:96 35.7500 -108.916918 180.416918 0.9999142
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Periodo
$Periodo$Letters
1 3 2 4
"a" "a" "a" "a"
$Periodo$LetterMatrix
a
1 TRUE
3 TRUE
2 TRUE
4 TRUE
$Tempo
72 96 24 48
"a" "a" "b" "b"
$`Periodo:Tempo`
1:72 1:96 3:72 4:96 2:72 4:72 3:24 2:96 2:24 3:96 4:48 1:48 3:48 1:24 2:48 4:24
"a" "a" "ab" "ab" "ab" "ab" "ab" "ab" "ab" "abc" "abc" "abc" "abc" "bc" "bc" "c"
#Plot
summary = a %>% group_by(Periodo, Tempo) %>% summarise(sd = sd(Efluente_total, na.rm = TRUE),Efluente_total = mean(Efluente_total))
`summarise()` has grouped output by 'Periodo'. You can override using the `.groups` argument.
summary
g5=ggplot(summary, aes(x=Tempo, y=Efluente_total, fill=Periodo))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Efluente_total-sd, ymax=Efluente_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Periodos:")+
scale_y_continuous(name="Efluente total (mL)", breaks = seq(0,700,50), limits = c(0, 700))+
scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g5

g5.1=g5+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 15),
legend.title = element_text(size = 15),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate(geom="text", y=450, x=1,label="b",size=8,color="black")+
annotate(geom="text", y=400, x=2,label="b",size=8,color="black")+
annotate(geom="text", y=480, x=3,label="a",size=8,color="black")+
annotate(geom="text", y=480, x=4,label="a",size=8,color="black")+
annotate("text",size=5, x=4, y=700,label="P values")+
annotate("text",size=4, x=4, y=650,label= "Periodo = 0.270")+
annotate("text",size=4, x=4, y=600,label= "Tempo = <0.01")+
annotate("text",size=4, x=4, y=550,label= "F x T = 0.007")
g5.1
ggsave("Plot_Efluente_Periodo.png", g5.1, width = 7, height = 5, units = "in", dpi = 300)

Gas total
#Modelo
mod = aov(Gas_total ~ Periodo+Tempo+Periodo*Tempo, data = a)
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Periodo 3 1904420 634807 11.126 1.16e-05 ***
Tempo 3 5569388 1856463 32.537 1.26e-11 ***
Periodo:Tempo 9 1084169 120463 2.111 0.0468 *
Residuals 48 2738695 57056
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = Gas_total ~ Periodo + Tempo + Periodo * Tempo, data = a)
$Periodo
diff lwr upr p adj
2-1 -340.5000 -565.2563 -115.7437 0.0010972
3-1 -269.6875 -494.4438 -44.9312 0.0128293
4-1 -472.8750 -697.6313 -248.1187 0.0000060
3-2 70.8125 -153.9438 295.5688 0.8358521
4-2 -132.3750 -357.1313 92.3813 0.4065147
4-3 -203.1875 -427.9438 21.5688 0.0895248
$Tempo
diff lwr upr p adj
48-24 -523.8750 -748.6313 -299.1187 0.0000007
72-24 -824.3125 -1049.0688 -599.5562 0.0000000
96-24 -454.6250 -679.3813 -229.8687 0.0000126
72-48 -300.4375 -525.1938 -75.6812 0.0045931
96-48 69.2500 -155.5063 294.0063 0.8447243
96-72 369.6875 144.9312 594.4438 0.0003664
$`Periodo:Tempo`
diff lwr upr p adj
2:24-1:24 -171.25 -781.44288 438.942883 0.9996030
3:24-1:24 -346.75 -956.94288 263.442883 0.7837787
4:24-1:24 -688.75 -1298.94288 -78.557117 0.0139035
1:48-1:24 -754.00 -1364.19288 -143.807117 0.0043713
2:48-1:24 -787.25 -1397.44288 -177.057117 0.0023630
3:48-1:24 -817.50 -1427.69288 -207.307117 0.0013337
4:48-1:24 -943.50 -1553.69288 -333.307117 0.0001120
1:72-1:24 -918.00 -1528.19288 -307.807117 0.0001867
2:72-1:24 -1330.50 -1940.69288 -720.307117 0.0000000
3:72-1:24 -998.25 -1608.44288 -388.057117 0.0000369
4:72-1:24 -1257.25 -1867.44288 -647.057117 0.0000002
1:96-1:24 -254.50 -864.69288 355.692883 0.9762550
2:96-1:24 -999.50 -1609.69288 -389.307117 0.0000360
3:96-1:24 -842.75 -1452.94288 -232.557117 0.0008209
4:96-1:24 -928.50 -1538.69288 -318.307117 0.0001513
3:24-2:24 -175.50 -785.69288 434.692883 0.9994721
4:24-2:24 -517.50 -1127.69288 92.692883 0.1819650
1:48-2:24 -582.75 -1192.94288 27.442883 0.0753796
2:48-2:24 -616.00 -1226.19288 -5.807117 0.0457180
3:48-2:24 -646.25 -1256.44288 -36.057117 0.0282829
4:48-2:24 -772.25 -1382.44288 -162.057117 0.0031246
1:72-2:24 -746.75 -1356.94288 -136.557117 0.0049883
2:72-2:24 -1159.25 -1769.44288 -549.057117 0.0000013
3:72-2:24 -827.00 -1437.19288 -216.807117 0.0011120
4:72-2:24 -1086.00 -1696.19288 -475.807117 0.0000061
1:96-2:24 -83.25 -693.44288 526.942883 1.0000000
2:96-2:24 -828.25 -1438.44288 -218.057117 0.0010856
3:96-2:24 -671.50 -1281.69288 -61.307117 0.0186340
4:96-2:24 -757.25 -1367.44288 -147.057117 0.0041190
4:24-3:24 -342.00 -952.19288 268.192883 0.7997132
1:48-3:24 -407.25 -1017.44288 202.942883 0.5489198
2:48-3:24 -440.50 -1050.69288 169.692883 0.4171674
3:48-3:24 -470.75 -1080.94288 139.442883 0.3104744
4:48-3:24 -596.75 -1206.94288 13.442883 0.0612997
1:72-3:24 -571.25 -1181.44288 38.942883 0.0889448
2:72-3:24 -983.75 -1593.94288 -373.557117 0.0000496
3:72-3:24 -651.50 -1261.69288 -41.307117 0.0259629
4:72-3:24 -910.50 -1520.69288 -300.307117 0.0002168
1:96-3:24 92.25 -517.94288 702.442883 0.9999999
2:96-3:24 -652.75 -1262.94288 -42.557117 0.0254368
3:96-3:24 -496.00 -1106.19288 114.192883 0.2352419
4:96-3:24 -581.75 -1191.94288 28.442883 0.0764843
1:48-4:24 -65.25 -675.44288 544.942883 1.0000000
2:48-4:24 -98.50 -708.69288 511.692883 0.9999997
3:48-4:24 -128.75 -738.94288 481.442883 0.9999885
4:48-4:24 -254.75 -864.94288 355.442883 0.9760511
1:72-4:24 -229.25 -839.44288 380.942883 0.9909063
2:72-4:24 -641.75 -1251.94288 -31.557117 0.0304202
3:72-4:24 -309.50 -919.69288 300.692883 0.8919518
4:72-4:24 -568.50 -1178.69288 41.692883 0.0924792
1:96-4:24 434.25 -175.94288 1044.442883 0.4410682
2:96-4:24 -310.75 -920.94288 299.442883 0.8889913
3:96-4:24 -154.00 -764.19288 456.192883 0.9998888
4:96-4:24 -239.75 -849.94288 370.442883 0.9861150
2:48-1:48 -33.25 -643.44288 576.942883 1.0000000
3:48-1:48 -63.50 -673.69288 546.692883 1.0000000
4:48-1:48 -189.50 -799.69288 420.692883 0.9987415
1:72-1:48 -164.00 -774.19288 446.192883 0.9997619
2:72-1:48 -576.50 -1186.69288 33.692883 0.0825143
3:72-1:48 -244.25 -854.44288 365.942883 0.9835324
4:72-1:48 -503.25 -1113.44288 106.942883 0.2161679
1:96-1:48 499.50 -110.69288 1109.692883 0.2258919
2:96-1:48 -245.50 -855.69288 364.692883 0.9827523
3:96-1:48 -88.75 -698.94288 521.442883 0.9999999
4:96-1:48 -174.50 -784.69288 435.692883 0.9995058
3:48-2:48 -30.25 -640.44288 579.942883 1.0000000
4:48-2:48 -156.25 -766.44288 453.942883 0.9998672
1:72-2:48 -130.75 -740.94288 479.442883 0.9999859
2:72-2:48 -543.25 -1153.44288 66.942883 0.1307554
3:72-2:48 -211.00 -821.19288 399.192883 0.9960263
4:72-2:48 -470.00 -1080.19288 140.192883 0.3129131
1:96-2:48 532.75 -77.44288 1142.942883 0.1500516
2:96-2:48 -212.25 -822.44288 397.942883 0.9957774
3:96-2:48 -55.50 -665.69288 554.692883 1.0000000
4:96-2:48 -141.25 -751.44288 468.942883 0.9999621
4:48-3:48 -126.00 -736.19288 484.192883 0.9999913
1:72-3:48 -100.50 -710.69288 509.692883 0.9999996
2:72-3:48 -513.00 -1123.19288 97.192883 0.1922996
3:72-3:48 -180.75 -790.94288 429.442883 0.9992598
4:72-3:48 -439.75 -1049.94288 170.442883 0.4200071
1:96-3:48 563.00 -47.19288 1173.192883 0.0999032
2:96-3:48 -182.00 -792.19288 428.192883 0.9991995
3:96-3:48 -25.25 -635.44288 584.942883 1.0000000
4:96-3:48 -111.00 -721.19288 499.192883 0.9999984
1:72-4:48 25.50 -584.69288 635.692883 1.0000000
2:72-4:48 -387.00 -997.19288 223.192883 0.6314309
3:72-4:48 -54.75 -664.94288 555.442883 1.0000000
4:72-4:48 -313.75 -923.94288 296.442883 0.8816873
1:96-4:48 689.00 78.80712 1299.192883 0.0138440
2:96-4:48 -56.00 -666.19288 554.192883 1.0000000
3:96-4:48 100.75 -509.44288 710.942883 0.9999996
4:96-4:48 15.00 -595.19288 625.192883 1.0000000
2:72-1:72 -412.50 -1022.69288 197.692883 0.5275546
3:72-1:72 -80.25 -690.44288 529.942883 1.0000000
4:72-1:72 -339.25 -949.44288 270.942883 0.8086785
1:96-1:72 663.50 53.30712 1273.692883 0.0213000
2:96-1:72 -81.50 -691.69288 528.692883 1.0000000
3:96-1:72 75.25 -534.94288 685.442883 1.0000000
4:96-1:72 -10.50 -620.69288 599.692883 1.0000000
3:72-2:72 332.25 -277.94288 942.442883 0.8305894
4:72-2:72 73.25 -536.94288 683.442883 1.0000000
1:96-2:72 1076.00 465.80712 1686.192883 0.0000075
2:96-2:72 331.00 -279.19288 941.192883 0.8343594
3:96-2:72 487.75 -122.44288 1097.942883 0.2583288
4:96-2:72 402.00 -208.19288 1012.192883 0.5703566
4:72-3:72 -259.00 -869.19288 351.192883 0.9723773
1:96-3:72 743.75 133.55712 1353.942883 0.0052672
2:96-3:72 -1.25 -611.44288 608.942883 1.0000000
3:96-3:72 155.50 -454.69288 765.692883 0.9998748
4:96-3:72 69.75 -540.44288 679.942883 1.0000000
1:96-4:72 1002.75 392.55712 1612.942883 0.0000337
2:96-4:72 257.75 -352.44288 867.942883 0.9734992
3:96-4:72 414.50 -195.69288 1024.692883 0.5194470
4:96-4:72 328.75 -281.44288 938.942883 0.8410333
2:96-1:96 -745.00 -1355.19288 -134.807117 0.0051492
3:96-1:96 -588.25 -1198.44288 21.942883 0.0695460
4:96-1:96 -674.00 -1284.19288 -63.807117 0.0178664
3:96-2:96 156.75 -453.44288 766.942883 0.9998620
4:96-2:96 71.00 -539.19288 681.192883 1.0000000
4:96-3:96 -85.75 -695.94288 524.442883 1.0000000
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Periodo
1 3 2 4
"a" "b" "b" "b"
$Tempo
24 96 48 72
"a" "b" "b" "c"
$`Periodo:Tempo`
1:24 2:24 1:96 3:24 4:24 1:48 2:48 3:48 3:96 1:72 4:96 4:48 3:72 2:96
"a" "ab" "abc" "abcd" "bcde" "bcdef" "cdef" "cdef" "cdef" "def" "def" "def" "ef" "ef"
4:72 2:72
"ef" "f"
#Plot
summary = a %>% group_by(Periodo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
summary
#Periodo
g5=ggplot(summary, aes(x=Periodo, y=Gas_total, fill=Periodo))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Periodo:")+
scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3000,250), limits = c(0, 3100))+
scale_x_discrete(name="Periodo", labels=c("1"="P1","2"="P2","3"="P3","4"="P4"))
g5

g5.1=g5+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.30, 0.93),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 14),
legend.title = element_text(size = 14),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate(geom="text", y=2250, x=1.2,label="a",size=8,color="black")+
annotate(geom="text", y=2000, x=2.2,label="b",size=8,color="black")+
annotate(geom="text", y=2000, x=3.2,label="b",size=8,color="black")+
annotate(geom="text", y=2000, x=4.2,label="b",size=8,color="black")+
annotate("text",size=6, x=4, y=3000,label="P value")+
annotate("text",size=5, x=4, y=2750,label= "Periodo = <0.01")+
annotate("text",size=8, x=0.3, y=3000,label= "A")+
geom_rect(aes(xmin = 0.2, xmax = 0.4, ymin = 3100, ymax = 2900), fill = NA, color = "black", size = 0.5)
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
Please use `linewidth` instead.
g5.1

#Tempo
summary = a %>% group_by(Tempo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
summary
g5.2=ggplot(summary, aes(x=Tempo, y=Gas_total, fill=Tempo))+
geom_col(position = "dodge")+
geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Tempo:")+
scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3000,250), limits = c(0, 3100))+
scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g5.2

g5.2=g5.2+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
legend.position = c(0.33, 0.93),legend.key.size = unit(0.42, 'cm'),
legend.direction="horizontal",
axis.ticks = element_line(colour = "black", size = 1),
legend.text = element_text(size = 14),
legend.title = element_text(size = 14),
axis.title.y = element_text(size = 13, color = "black"),
axis.title.x = element_text(size = 13, color = "black"),
axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
axis.text.y = element_text(size = 12, color = "black"))+
annotate(geom="text", y=2500, x=1.2,label="a",size=8,color="black")+
annotate(geom="text", y=2000, x=2.2,label="b",size=8,color="black")+
annotate(geom="text", y=1700, x=3.2,label="c",size=8,color="black")+
annotate(geom="text", y=2000, x=4.2,label="b",size=8,color="black")+
annotate("text",size=6, x=4, y=3000,label="P value")+
annotate("text",size=5, x=4, y=2750,label= "Tempo = <0.01")+
annotate("text",size=8, x=0.3, y=3000,label= "B")+
geom_rect(aes(xmin = 0.2, xmax = 0.4, ymin = 3100, ymax = 2900), fill = NA, color = "black", size = 0.5)
g5.2

all = grid.arrange(g5.1, g5.2, ncol = 1, nrow = 2)

ggsave("Plot_Gas_periodo.png", all, width = 7, height = 10, units = "in", dpi = 300)
6 - ANALISE DE VARIANCIA DE FERMENTADORES E PERIODOS PARA
DMO E CH4
CH4
summary(mod)
Df Sum Sq Mean Sq F value Pr(>F)
Fermentador 3 12.84 4.280 0.848 0.496
Periodo 2 10.26 5.128 1.016 0.394
Fermentador:Periodo 6 21.01 3.502 0.694 0.660
Residuals 11 55.55 5.050
25 observations deleted due to missingness
DMS24

DMS48

LS0tDQp0aXRsZTogIkRhZG9zIGRvIFJVU0lURUMgLSBKZXJhbGRpbmUiDQphdXRob3I6ICJWYWduZXIgT3ZhbmkiDQpkYXRlOiAiMTAvMTIvMjAyNCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0aGVtZTogdW5pdGVkDQotLS0NCg0KIyBfKjEgLSBQYWNrYWdlcypfDQoNCmBgYHtyfQ0KbGlicmFyeShtdWx0Y29tcFZpZXcpDQpsaWJyYXJ5KG11bHRjb21wKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KYGBgDQoNCiMgXyoyIC0gREFET1MqXw0KDQpgYGB7cn0NCmE9cmVhZC5jc3YoIkQ6L0FybWF6ZW5hbWVudG8vREFUQSBSL0plcmFsZGluZS9kYWRvcy5jc3YiKQ0KcHJpbnQoYSkNCmEkRmVybWVudGFkb3I9YXMuZmFjdG9yKGEkRmVybWVudGFkb3IpDQphJFBlcmlvZG89YXMuZmFjdG9yKGEkUGVyaW9kbykNCmEkVGVtcG89YXMuZmFjdG9yKGEkVGVtcG8pDQpzdHIoYSkNCmBgYA0KIyBfKjMgLSBBTkFMSVNFIERFIFZBUklBTkNJQSBERSBGRVJNRU5UQURPUkVTIEUgUEVSSU9ET1MqXw0KDQojIF8qRWZsdWVudGUgdG90YWwqXw0KDQpgYGB7cn0NCiNNb2RlbG8NCm1vZCA9IGFvdihFZmx1ZW50ZV90b3RhbCB+IEZlcm1lbnRhZG9yK1BlcmlvZG8rRmVybWVudGFkb3IqUGVyaW9kbywgZGF0YSA9IGEpDQpzdW1tYXJ5KG1vZCkNCg0KIyBGdW7Dp8OjbyBwYXJhIGdlcmFyIGUgZXh0cmFpciBhcyBsZXRyYXMgZGUgVHVrZXkNCnR1a2V5X3Jlc3VsdCA9IFR1a2V5SFNEKG1vZCkNCnByaW50KHR1a2V5X3Jlc3VsdCkNCnR1a2V5X2xldHRlcnMgPSBtdWx0Y29tcExldHRlcnM0KG1vZCwgdHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycw0KDQojUGxvdA0Kc3VtbWFyeSA9IGEgJT4lIGdyb3VwX2J5KEZlcm1lbnRhZG9yLCBQZXJpb2RvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoRWZsdWVudGVfdG90YWwsIG5hLnJtID0gVFJVRSksRWZsdWVudGVfdG90YWwgPSBtZWFuKEVmbHVlbnRlX3RvdGFsKSkNCnN1bW1hcnkNCg0KZzM9Z2dwbG90KHN1bW1hcnksIGFlcyh4PVBlcmlvZG8sIHk9RWZsdWVudGVfdG90YWwsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1FZmx1ZW50ZV90b3RhbC1zZCwgeW1heD1FZmx1ZW50ZV90b3RhbCtzZCksIHdpZHRoPS4yLCBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSguOSkpKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjYTZjZWUzIiwiI2IyZGY4YSIsIiNmZGJmNmYiLCIjY2FiMmQ2IiksbmFtZT0gIkZlcm1lbnRhZG9yZXM6IikrDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSJFZmx1ZW50ZSB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsNzAwLDUwKSwgbGltaXRzID0gYygwLCA3MDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJQZXJpb2RvIiwgbGFiZWxzPWMoIjEiPSJQMSIsIjIiPSJQMiIsIjMiPSJQMyIsIjQiPSJQNCIpKQ0KZzMNCmczLjE9ZzMrdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjUsIGxpbmV0eXBlID0gInNvbGlkIiksDQogcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksDQogbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIHNpemU9MC41LCBsaW5ldHlwZT0ic29saWQiLGNvbG91ciA9ImJsYWNrIiksDQogbGVnZW5kLnBvc2l0aW9uID0gYygwLjMwLCAwLjk1KSxsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNDIsICdjbScpLA0KIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDEpLA0KIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksICAgICAgICAgIA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBhbmdsZSA9IDAsIGhqdXN0ID0gMSwgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJibGFjayIpKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTUsIHg9NCwgeT03MDAsbGFiZWw9IlAgdmFsdWVzIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9NjUwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuNjU1IikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9NjAwLGxhYmVsPSAiUGVyaW9kb3MgPSAwLjYwMCIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD00LCB5PTU1MCxsYWJlbD0gIkYgeCBQID0gMC45ODYiKQ0KZzMuMQ0KDQpnZ3NhdmUoIlBsb3RfRmVybWVudGFkb3JfcGVyaW9kb19FZmx1ZW50ZS5wbmciLCBnMy4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCiMgXypHw6FzIHRvdGFsKl8NCg0KYGBge3J9DQojTW9kZWxvDQptb2QgPSBhb3YoR2FzX3RvdGFsIH4gRmVybWVudGFkb3IrUGVyaW9kbytGZXJtZW50YWRvcipQZXJpb2RvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoRmVybWVudGFkb3IsIFBlcmlvZG8pICU+JSBzdW1tYXJpc2Uoc2QgPSBzZChHYXNfdG90YWwsIG5hLnJtID0gVFJVRSksR2FzX3RvdGFsID0gbWVhbihHYXNfdG90YWwpKQ0Kc3VtbWFyeQ0KDQpnMz1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9UGVyaW9kbywgeT1HYXNfdG90YWwsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1HYXNfdG90YWwtc2QsIHltYXg9R2FzX3RvdGFsK3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiRmVybWVudGFkb3JlczoiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWU9IkfDoXMgdG90YWwgKG1MKSIsIGJyZWFrcyA9IHNlcSgwLDMwMDAsMjUwKSwgbGltaXRzID0gYygwLCAzMDAwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iUGVyaW9kbyIsIGxhYmVscz1jKCIxIj0iUDEiLCIyIj0iUDIiLCIzIj0iUDMiLCI0Ij0iUDQiKSkNCmczDQpnMy4xPWczK3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMCwgMC45NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIzNTAsIHg9MSxsYWJlbD0iYSIsc2l6ZT03LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT0yMDUwLCB4PTIsbGFiZWw9ImFiIixzaXplPTcsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIwNTAsIHg9MyxsYWJlbD0iYWIiLHNpemU9Nyxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD00LGxhYmVsPSJiIixzaXplPTcsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9MzAwMCxsYWJlbD0iUCB2YWx1ZXMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0yNzUwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuOTgyIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9MjU1MCxsYWJlbD0gIlBlcmlvZG9zID0gMC4wMjMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0yMzUwLGxhYmVsPSAiRiB4IFAgPSAwLjkzNyIpDQpnMy4xDQoNCmdnc2F2ZSgiUGxvdF9GZXJtZW50YWRvcl9wZXJpb2RvX0dhcy5wbmciLCBnMy4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCg0KIyBfKjQgLSBBTkFMSVNFIERFIFZBUklBTkNJQSBQQVJBIEZFUk1FTlRBRE9SRVMqXw0KDQojIF8qRWZsdWVudGUgdG90YWwqXw0KDQpgYGB7cn0NCiNNb2RlbG8NCm1vZCA9IGFvdihFZmx1ZW50ZV90b3RhbCB+IEZlcm1lbnRhZG9yK1RlbXBvK0Zlcm1lbnRhZG9yKlRlbXBvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoRmVybWVudGFkb3IsIFRlbXBvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoRWZsdWVudGVfdG90YWwsIG5hLnJtID0gVFJVRSksRWZsdWVudGVfdG90YWwgPSBtZWFuKEVmbHVlbnRlX3RvdGFsKSkNCnN1bW1hcnkNCg0KZzQ9Z2dwbG90KHN1bW1hcnksIGFlcyh4PVRlbXBvLCB5PUVmbHVlbnRlX3RvdGFsLCBmaWxsPUZlcm1lbnRhZG9yKSkrDQogIGdlb21fY29sKHBvc2l0aW9uID0gImRvZGdlIikrDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49RWZsdWVudGVfdG90YWwtc2QsIHltYXg9RWZsdWVudGVfdG90YWwrc2QpLCB3aWR0aD0uMiwgcG9zaXRpb249cG9zaXRpb25fZG9kZ2UoLjkpKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2E2Y2VlMyIsIiNiMmRmOGEiLCIjZmRiZjZmIiwiI2NhYjJkNiIpLG5hbWU9ICJGZXJtZW50YWRvcmVzOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iRWZsdWVudGUgdG90YWwgKG1MKSIsIGJyZWFrcyA9IHNlcSgwLDcwMCw1MCksIGxpbWl0cyA9IGMoMCwgNzAwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iVGVtcG8gKGgpIiwgbGFiZWxzPWMoIjI0Ij0iMjRoIiwiNDgiPSI0OGgiLCI3MiI9IjcyaCIsIjk2Ij0iOTZoIikpDQpnNA0KZzQuMT1nNCt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSwNCiBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzAsIDAuOTUpLGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC40MiwgJ2NtJyksDQogbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMSksDQogbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgICAgICAgICAgDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGNvbG9yID0gImJsYWNrIikpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00MDAsIHg9MSxsYWJlbD0iYiIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00MDAsIHg9MixsYWJlbD0iYiIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00ODAsIHg9MyxsYWJlbD0iYSIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00ODAsIHg9NCxsYWJlbD0iYSIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NSwgeD00LCB5PTcwMCxsYWJlbD0iUCB2YWx1ZXMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT02NTAsbGFiZWw9ICJGZXJtZW50YWRvcmVzID0gMC41MDEiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT02MDAsbGFiZWw9ICJUZW1wbyA9IDwwLjAxIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9NTUwLGxhYmVsPSAiRiB4IFQgPSAwLjkxNiIpDQpnNC4xDQoNCmdnc2F2ZSgiUGxvdF9FZmx1ZW50ZS5wbmciLCBnNC4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCiMgXypHYXMgdG90YWwqXw0KDQpgYGB7cn0NCiNNb2RlbG8NCm1vZCA9IGFvdihHYXNfdG90YWwgfiBGZXJtZW50YWRvcitUZW1wbytGZXJtZW50YWRvcipUZW1wbywgZGF0YSA9IGEpDQpzdW1tYXJ5KG1vZCkNCg0KIyBGdW7Dp8OjbyBwYXJhIGdlcmFyIGUgZXh0cmFpciBhcyBsZXRyYXMgZGUgVHVrZXkNCnR1a2V5X3Jlc3VsdCA9IFR1a2V5SFNEKG1vZCkNCnByaW50KHR1a2V5X3Jlc3VsdCkNCnR1a2V5X2xldHRlcnMgPSBtdWx0Y29tcExldHRlcnM0KG1vZCwgdHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycw0KDQojUGxvdA0Kc3VtbWFyeSA9IGEgJT4lIGdyb3VwX2J5KEZlcm1lbnRhZG9yLCBUZW1wbykgJT4lIHN1bW1hcmlzZShzZCA9IHNkKEdhc190b3RhbCwgbmEucm0gPSBUUlVFKSxHYXNfdG90YWwgPSBtZWFuKEdhc190b3RhbCkpDQpzdW1tYXJ5DQoNCmc0PWdncGxvdChzdW1tYXJ5LCBhZXMoeD1UZW1wbywgeT1HYXNfdG90YWwsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1HYXNfdG90YWwtc2QsIHltYXg9R2FzX3RvdGFsK3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiRmVybWVudGFkb3JlczoiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWU9IkfDoXMgdG90YWwgKG1MKSIsIGJyZWFrcyA9IHNlcSgwLDM1MDAsMjUwKSwgbGltaXRzID0gYygwLCAzNTAwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iVGVtcG8gKGgpIiwgbGFiZWxzPWMoIjI0Ij0iMjRoIiwiNDgiPSI0OGgiLCI3MiI9IjcyaCIsIjk2Ij0iOTZoIikpDQpnNA0KZzQuMT1nNCt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSwNCiBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzAsIDAuOTUpLGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC40MiwgJ2NtJyksDQogbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMSksDQogbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgICAgICAgICAgDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGNvbG9yID0gImJsYWNrIikpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT0yNjAwLCB4PTEsbGFiZWw9ImEiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjI1MCwgeD0yLGxhYmVsPSJiYyIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT0yMDAwLCB4PTMsbGFiZWw9ImMiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjEwMCwgeD00LGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9MzUwMCxsYWJlbD0iUCB2YWx1ZXMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0zMjUwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuOTYyIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9MzAwMCxsYWJlbD0gIlRlbXBvID0gPDAuMDEiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0yNzUwLGxhYmVsPSAiRiB4IFQgPSAwLjc4NCIpDQpnNC4xDQoNCmdnc2F2ZSgiUGxvdF9HYXMucG5nIiwgZzQuMSwgd2lkdGggPSA3LCBoZWlnaHQgPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkNCmBgYA0KDQojIF8qNSAtIEFOQUxJU0UgREUgVkFSSUFOQ0lBIFBBUkEgUEVSSU9ETypfDQoNCiMgXypFZmx1ZW50ZSB0b3RhbCpfDQoNCmBgYHtyfQ0KI01vZGVsbw0KbW9kID0gYW92KEVmbHVlbnRlX3RvdGFsIH4gUGVyaW9kbytUZW1wbytQZXJpb2RvKlRlbXBvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoUGVyaW9kbywgVGVtcG8pICU+JSBzdW1tYXJpc2Uoc2QgPSBzZChFZmx1ZW50ZV90b3RhbCwgbmEucm0gPSBUUlVFKSxFZmx1ZW50ZV90b3RhbCA9IG1lYW4oRWZsdWVudGVfdG90YWwpKQ0Kc3VtbWFyeQ0KDQpnNT1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9VGVtcG8sIHk9RWZsdWVudGVfdG90YWwsIGZpbGw9UGVyaW9kbykpKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPUVmbHVlbnRlX3RvdGFsLXNkLCB5bWF4PUVmbHVlbnRlX3RvdGFsK3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiUGVyaW9kb3M6IikrDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSJFZmx1ZW50ZSB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsNzAwLDUwKSwgbGltaXRzID0gYygwLCA3MDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJUZW1wbyAoaCkiLCBsYWJlbHM9YygiMjQiPSIyNGgiLCI0OCI9IjQ4aCIsIjcyIj0iNzJoIiwiOTYiPSI5NmgiKSkNCmc1DQpnNS4xPWc1K3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMCwgMC45NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQ1MCwgeD0xLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQwMCwgeD0yLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQ4MCwgeD0zLGxhYmVsPSJhIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQ4MCwgeD00LGxhYmVsPSJhIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9NzAwLGxhYmVsPSJQIHZhbHVlcyIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD00LCB5PTY1MCxsYWJlbD0gIlBlcmlvZG8gPSAwLjI3MCIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD00LCB5PTYwMCxsYWJlbD0gIlRlbXBvID0gPDAuMDEiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT01NTAsbGFiZWw9ICJGIHggVCA9IDAuMDA3IikNCmc1LjENCg0KZ2dzYXZlKCJQbG90X0VmbHVlbnRlX1BlcmlvZG8ucG5nIiwgZzUuMSwgd2lkdGggPSA3LCBoZWlnaHQgPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkNCmBgYA0KDQojIF8qR2FzIHRvdGFsKl8NCg0KYGBge3J9DQojTW9kZWxvDQptb2QgPSBhb3YoR2FzX3RvdGFsIH4gUGVyaW9kbytUZW1wbytQZXJpb2RvKlRlbXBvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoUGVyaW9kbykgJT4lIHN1bW1hcmlzZShzZCA9IHNkKEdhc190b3RhbCwgbmEucm0gPSBUUlVFKSxHYXNfdG90YWwgPSBtZWFuKEdhc190b3RhbCkpDQpzdW1tYXJ5DQoNCiNQZXJpb2RvDQpnNT1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9UGVyaW9kbywgeT1HYXNfdG90YWwsIGZpbGw9UGVyaW9kbykpKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPUdhc190b3RhbC1zZCwgeW1heD1HYXNfdG90YWwrc2QpLCB3aWR0aD0uMiwgcG9zaXRpb249cG9zaXRpb25fZG9kZ2UoLjkpKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2E2Y2VlMyIsIiNiMmRmOGEiLCIjZmRiZjZmIiwiI2NhYjJkNiIpLG5hbWU9ICJQZXJpb2RvOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iR8OhcyB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsMzAwMCwyNTApLCBsaW1pdHMgPSBjKDAsIDMxMDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJQZXJpb2RvIiwgbGFiZWxzPWMoIjEiPSJQMSIsIjIiPSJQMiIsIjMiPSJQMyIsIjQiPSJQNCIpKQ0KZzUNCmc1LjE9ZzUrdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjUsIGxpbmV0eXBlID0gInNvbGlkIiksDQogcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksDQogbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIHNpemU9MC41LCBsaW5ldHlwZT0ic29saWQiLGNvbG91ciA9ImJsYWNrIiksDQogbGVnZW5kLnBvc2l0aW9uID0gYygwLjMwLCAwLjkzKSxsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNDIsICdjbScpLA0KIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDEpLA0KIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCksICAgICAgICAgIA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0KSwNCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBhbmdsZSA9IDAsIGhqdXN0ID0gMSwgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJibGFjayIpKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjI1MCwgeD0xLjIsbGFiZWw9ImEiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD0yLjIsbGFiZWw9ImIiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD0zLjIsbGFiZWw9ImIiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD00LjIsbGFiZWw9ImIiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTYsIHg9NCwgeT0zMDAwLGxhYmVsPSJQIHZhbHVlIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9Mjc1MCxsYWJlbD0gIlBlcmlvZG8gPSA8MC4wMSIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9OCwgeD0wLjMsIHk9MzAwMCxsYWJlbD0gIkEiKSsNCmdlb21fcmVjdChhZXMoeG1pbiA9IDAuMiwgeG1heCA9IDAuNCwgeW1pbiA9IDMxMDAsIHltYXggPSAyOTAwKSwgZmlsbCA9IE5BLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjUpDQpnNS4xDQoNCiNUZW1wbw0Kc3VtbWFyeSA9IGEgJT4lIGdyb3VwX2J5KFRlbXBvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoR2FzX3RvdGFsLCBuYS5ybSA9IFRSVUUpLEdhc190b3RhbCA9IG1lYW4oR2FzX3RvdGFsKSkNCnN1bW1hcnkNCg0KZzUuMj1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9VGVtcG8sIHk9R2FzX3RvdGFsLCBmaWxsPVRlbXBvKSkrDQogIGdlb21fY29sKHBvc2l0aW9uID0gImRvZGdlIikrDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49R2FzX3RvdGFsLXNkLCB5bWF4PUdhc190b3RhbCtzZCksIHdpZHRoPS4yLCBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSguOSkpKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjYTZjZWUzIiwiI2IyZGY4YSIsIiNmZGJmNmYiLCIjY2FiMmQ2IiksbmFtZT0gIlRlbXBvOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iR8OhcyB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsMzAwMCwyNTApLCBsaW1pdHMgPSBjKDAsIDMxMDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJUZW1wbyAoaCkiLCBsYWJlbHM9YygiMjQiPSIyNGgiLCI0OCI9IjQ4aCIsIjcyIj0iNzJoIiwiOTYiPSI5NmgiKSkNCmc1LjINCg0KZzUuMj1nNS4yK3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMywgMC45MyksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTI1MDAsIHg9MS4yLGxhYmVsPSJhIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIwMDAsIHg9Mi4yLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTE3MDAsIHg9My4yLGxhYmVsPSJjIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIwMDAsIHg9NC4yLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT02LCB4PTQsIHk9MzAwMCxsYWJlbD0iUCB2YWx1ZSIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NSwgeD00LCB5PTI3NTAsbGFiZWw9ICJUZW1wbyA9IDwwLjAxIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT04LCB4PTAuMywgeT0zMDAwLGxhYmVsPSAiQiIpKw0KZ2VvbV9yZWN0KGFlcyh4bWluID0gMC4yLCB4bWF4ID0gMC40LCB5bWluID0gMzEwMCwgeW1heCA9IDI5MDApLCBmaWxsID0gTkEsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuNSkNCmc1LjINCg0KYWxsID0gZ3JpZC5hcnJhbmdlKGc1LjEsIGc1LjIsIG5jb2wgPSAxLCBucm93ID0gMikNCmdnc2F2ZSgiUGxvdF9HYXNfcGVyaW9kby5wbmciLCBhbGwsIHdpZHRoID0gNywgaGVpZ2h0ID0gMTAsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCiMgXyo2IC0gQU5BTElTRSBERSBWQVJJQU5DSUEgREUgRkVSTUVOVEFET1JFUyBFIFBFUklPRE9TIFBBUkEgRE1PIEUgQ0g0Kl8NCg0KIyBfKkNINCpfDQoNCmBgYHtyfQ0Kc3RyKGEpDQphMT1zdWJzZXQoYSwgUGVyaW9kbyE9ICI0IikNCnByaW50KGExKQ0KI01vZGVsbw0KbW9kID0gYW92KENINCB+IEZlcm1lbnRhZG9yK1BlcmlvZG8rRmVybWVudGFkb3IqUGVyaW9kbywgZGF0YSA9IGExKQ0Kc3VtbWFyeShtb2QpDQoNCiNQbG90DQpzdW1tYXJ5ID0gYTEgJT4lIGdyb3VwX2J5KEZlcm1lbnRhZG9yLCBQZXJpb2RvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoQ0g0LCBuYS5ybSA9IFRSVUUpLENINCA9IG1lYW4oQ0g0LG5hLnJtID0gVFJVRSkpDQpzdW1tYXJ5DQoNCmc2PWdncGxvdChzdW1tYXJ5LCBhZXMoeD1QZXJpb2RvLCB5PUNINCwgZmlsbD1GZXJtZW50YWRvcikpKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPUNINC1zZCwgeW1heD1DSDQrc2QpLCB3aWR0aD0uMiwgcG9zaXRpb249cG9zaXRpb25fZG9kZ2UoLjkpKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2E2Y2VlMyIsIiNiMmRmOGEiLCIjZmRiZjZmIiwiI2NhYjJkNiIpLG5hbWU9ICJGZXJtZW50YWRvcmVzOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iQ0g0IChtTC9nIE1TKSIsIGJyZWFrcyA9IHNlcSgwLDEwLDEpLCBsaW1pdHMgPSBjKDAsIDEwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iUGVyaW9kbyIsIGxhYmVscz1jKCIxIj0iUDEiLCIyIj0iUDIiLCIzIj0iUDMiLCI0Ij0iUDQiKSkNCmc2DQpnNi4xPWc2K3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMCwgMC45NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTMsIHk9MTAsbGFiZWw9IlAgdmFsdWVzIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9OS41LGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuNDk2IikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9OSxsYWJlbD0gIlBlcmlvZG9zID0gMC4zOTQiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9MywgeT04LjUsbGFiZWw9ICJGIHggUCA9IDAuNjYwIikNCmc2LjENCg0KZ2dzYXZlKCJQbG90X0Zlcm1lbnRhZG9yX3BlcmlvZG9fQ0g0LnBuZyIsIGc2LjEsIHdpZHRoID0gNywgaGVpZ2h0ID0gNSwgdW5pdHMgPSAiaW4iLCBkcGkgPSAzMDApDQpgYGANCg0KIyBfKkRNUzI0Kl8NCg0KYGBge3J9DQphMSRETVNfMjQ9YTEkRE1TXzI0KjEwMDANClZpZXcoYTEpDQojTW9kZWxvDQptb2QgPSBhb3YoRE1TXzI0IH4gRmVybWVudGFkb3IsIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KbW9kID0gYW92KERNU18yNCB+IFBlcmlvZG8sIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KI1Bsb3QNCnN1bW1hcnkgPSBhMSAlPiUgZ3JvdXBfYnkoRmVybWVudGFkb3IsIFBlcmlvZG8pICU+JSBzdW1tYXJpc2Uoc2QgPSBzZChETVNfMjQsIG5hLnJtID0gVFJVRSksRE1TXzI0ID0gbWVhbihETVNfMjQsbmEucm0gPSBUUlVFKSkNCnN1bW1hcnkNCg0KZzc9Z2dwbG90KHN1bW1hcnksIGFlcyh4PVBlcmlvZG8sIHk9RE1TXzI0LCBmaWxsPUZlcm1lbnRhZG9yKSkrDQogIGdlb21fY29sKHBvc2l0aW9uID0gImRvZGdlIikrDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49RE1TXzI0LXNkLCB5bWF4PURNU18yNCtzZCksIHdpZHRoPS4yLCBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSguOSkpKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjYTZjZWUzIiwiI2IyZGY4YSIsIiNmZGJmNmYiLCIjY2FiMmQ2IiksbmFtZT0gIkZlcm1lbnRhZG9yZXM6IikrDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSJETVMgMjQgSG9yYXMgKGcva2cgTVMpIiwgYnJlYWtzID0gc2VxKDAsMTAwMCwxMDApLCBsaW1pdHMgPSBjKDAsIDEwMDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJQZXJpb2RvIiwgbGFiZWxzPWMoIjEiPSJQMSIsIjIiPSJQMiIsIjMiPSJQMyIsIjQiPSJQNCIpKQ0KZzcNCmc3LjE9ZzcrdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjUsIGxpbmV0eXBlID0gInNvbGlkIiksDQogcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksDQogbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIHNpemU9MC41LCBsaW5ldHlwZT0ic29saWQiLGNvbG91ciA9ImJsYWNrIiksDQogbGVnZW5kLnBvc2l0aW9uID0gYygwLjMwLCAwLjk1KSxsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNDIsICdjbScpLA0KIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDEpLA0KIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksICAgICAgICAgIA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBhbmdsZSA9IDAsIGhqdXN0ID0gMSwgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJibGFjayIpKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTUsIHg9MywgeT0xMDAwLGxhYmVsPSJQIHZhbHVlcyIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD0zLCB5PTkwMCxsYWJlbD0gIkZlcm1lbnRhZG9yZXMgPSAwLjUxNyIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD0zLCB5PTgwMCxsYWJlbD0gIlBlcmlvZG9zID0gMC4zNTQiKQ0KZzcuMQ0KDQpnZ3NhdmUoIlBsb3RfRmVybWVudGFkb3JfcGVyaW9kb19ETVMyNGgucG5nIiwgZzcuMSwgd2lkdGggPSA3LCBoZWlnaHQgPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkNCmBgYA0KDQojIF8qRE1TNDgqXw0KDQpgYGB7cn0NCmExJERNU180OD1hMSRETVNfNDgqMTAwMA0KcHJpbnQoYTEpDQojTW9kZWxvDQptb2QgPSBhb3YoRE1TXzQ4IH4gRmVybWVudGFkb3IsIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KbW9kID0gYW92KERNU180OCB+IFBlcmlvZG8sIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KDQojUGxvdA0Kc3VtbWFyeSA9IGExICU+JSBncm91cF9ieShGZXJtZW50YWRvciwgUGVyaW9kbykgJT4lIHN1bW1hcmlzZShzZCA9IHNkKERNU180OCwgbmEucm0gPSBUUlVFKSxETVNfNDggPSBtZWFuKERNU180OCxuYS5ybSA9IFRSVUUpKQ0Kc3VtbWFyeQ0KDQpnOD1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9UGVyaW9kbywgeT1ETVNfNDgsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1ETVNfNDgtc2QsIHltYXg9RE1TXzQ4K3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiRmVybWVudGFkb3JlczoiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWU9IkRNUyA0OCBIb3JhcyAoZy9rZyBNUykiLCBicmVha3MgPSBzZXEoMCwxMDAwLDEwMCksIGxpbWl0cyA9IGMoMCwgMTAwMCkpKw0KICBzY2FsZV94X2Rpc2NyZXRlKG5hbWU9IlBlcmlvZG8iLCBsYWJlbHM9YygiMSI9IlAxIiwiMiI9IlAyIiwiMyI9IlAzIiwiNCI9IlA0IikpDQpnOA0KZzguMT1nOCt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSwNCiBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzAsIDAuOTUpLGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC40MiwgJ2NtJyksDQogbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMSksDQogbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgICAgICAgICAgDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGNvbG9yID0gImJsYWNrIikpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NSwgeD0zLCB5PTEwMDAsbGFiZWw9IlAgdmFsdWVzIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9OTAwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuNTI3IikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9ODAwLGxhYmVsPSAiUGVyaW9kb3MgPSAwLjc3MCIpDQpnOC4xDQoNCmdnc2F2ZSgiUGxvdF9GZXJtZW50YWRvcl9wZXJpb2RvX0RNUzQ4aC5wbmciLCBnOC4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCg==