Funciones de Densidad: Caída de Pureza Jugo Core a Jugo
Primario
df1 <- data.frame(caida_pureza = df_2022$Caida_core_primario,zafra=rep('2022', dim(df_2022)[1]))
df2 <- data.frame(caida_pureza = df_2023$Caida_core_primario,zafra=rep('2023', dim(df_2023)[1]))
df3 <- data.frame(caida_pureza = df_2024$Caida_core_primario,zafra=rep('2024', dim(df_2024)[1]))
df4 <- data.frame(caida_pureza = df_2025$Caida_core_primario,zafra=rep('2025', dim(df_2025)[1]))
df_core_primario <- data.frame("Zafra" = c("2022","2023","2024","2025"),
"Media" = c(mean(df1$caida_pureza),mean(df2$caida_pureza),mean(df3$caida_pureza),mean(df4$caida_pureza)),
"Mediana" = c(median(df1$caida_pureza),median(df2$caida_pureza),median(df3$caida_pureza),median(df4$caida_pureza)),
"Desv. Estándar" = c(sd(df1$caida_pureza),sd(df2$caida_pureza),sd(df3$caida_pureza),sd(df4$caida_pureza))
)
df_core_primario
ggplot() +
geom_density(data = df1, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df2, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df3, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df4, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
ggtitle("Caída de Pureza Core - Primario")

Puede observarse que en las últimas 4 Zafras, el desempeño de
la zafra 2025 ha sido superior, mostrando la menor caída promedio Core a
Primario.
df1 <- data.frame(caida_pureza = df_2022$Caida_primario_diluido,zafra=rep('2022', dim(df_2022)[1]))
df2 <- data.frame(caida_pureza = df_2023$Caida_primario_diluido,zafra=rep('2023', dim(df_2023)[1]))
df2 <- filter(df2, df2$caida_pureza < 50)
df3 <- data.frame(caida_pureza = df_2024$Caida_primario_diluido,zafra=rep('2024', dim(df_2024)[1]))
df4 <- data.frame(caida_pureza = df_2025$Caida_primario_diluido,zafra=rep('2025', dim(df_2025)[1]))
df_primario_diluido <- data.frame("Zafra" = c("2022","2023","2024","2025"),
"Media" = c(mean(df1$caida_pureza),mean(df2$caida_pureza),mean(df3$caida_pureza),mean(df4$caida_pureza)),
"Mediana" = c(median(df1$caida_pureza),median(df2$caida_pureza),median(df3$caida_pureza),median(df4$caida_pureza)),
"Desv. Estándar" = c(sd(df1$caida_pureza),sd(df2$caida_pureza),sd(df3$caida_pureza),sd(df4$caida_pureza))
)
df_primario_diluido
ggplot() +
geom_density(data = df1, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df2, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df3, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df4, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
ggtitle("Caída de Pureza Primario - Diluido")

Puede observarse que en las últimas 4 Zafras, el desempeño de
la zafra 2025 ha sido superior, mostrando la menor caída promedio
Primario a Diluido.
df1 <- data.frame(caida_pureza = df_2022$Caida_claro_diluido,zafra=rep('2022', dim(df_2022)[1]))
df2 <- data.frame(caida_pureza = df_2023$Caida_claro_diluido,zafra=rep('2023', dim(df_2023)[1]))
df2 <- filter(df2, df2$caida_pureza < 50)
df3 <- data.frame(caida_pureza = df_2024$Caida_claro_diluido,zafra=rep('2024', dim(df_2024)[1]))
df4 <- data.frame(caida_pureza = df_2025$Caida_claro_diluido,zafra=rep('2025', dim(df_2025)[1]))
df_claro_diluido <- data.frame("Zafra" = c("2022","2023","2024","2025"),
"Media" = c(mean(df1$caida_pureza),mean(df2$caida_pureza),mean(df3$caida_pureza),mean(df4$caida_pureza)),
"Mediana" = c(median(df1$caida_pureza),median(df2$caida_pureza),median(df3$caida_pureza),median(df4$caida_pureza)),
"Desv. Estándar" = c(sd(df1$caida_pureza),sd(df2$caida_pureza),sd(df3$caida_pureza),sd(df4$caida_pureza))
)
df_claro_diluido
ggplot() +
geom_density(data = df1, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df2, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df3, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df4, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
ggtitle("Caída de Pureza Claro - Diluido")

Puede observarse que en las últimas 4 Zafras, el desempeño de
la zafra 2025 ha sido inferior, mostrando la menor caída promedio Claro
a Diluido. Se espera que esta diferencia sea lo más positiva
posible, pues es un indicador de desempeño de la clarificación de jugo
(remoción de impurezas).
df1 <- data.frame(caida_pureza = df_2022$Caida_meladura_claro,zafra=rep('2022', dim(df_2022)[1]))
df2 <- data.frame(caida_pureza = df_2023$Caida_meladura_claro,zafra=rep('2023', dim(df_2023)[1]))
df2 <- filter(df2, df2$caida_pureza < 50)
df3 <- data.frame(caida_pureza = df_2024$Caida_meladura_claro,zafra=rep('2024', dim(df_2024)[1]))
df4 <- data.frame(caida_pureza = df_2025$Caida_meladura_claro,zafra=rep('2025', dim(df_2025)[1]))
df_meladura_claro <- data.frame("Zafra" = c("2022","2023","2024","2025"),
"Media" = c(mean(df1$caida_pureza),mean(df2$caida_pureza),mean(df3$caida_pureza),mean(df4$caida_pureza)),
"Mediana" = c(median(df1$caida_pureza),median(df2$caida_pureza),median(df3$caida_pureza),median(df4$caida_pureza)),
"Desv. Estándar" = c(sd(df1$caida_pureza),sd(df2$caida_pureza),sd(df3$caida_pureza),sd(df4$caida_pureza))
)
df_meladura_claro
ggplot() +
geom_density(data = df1, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df2, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df3, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df4, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
ggtitle("Caída de Pureza Meladura - Claro")

Puede observarse que en las últimas 4 Zafras, el desempeño de
la zafra 2025 ha sido promedio, mostrando una caída promedio Meladura a
Claro muy similar a las zafras 2022 y 2023. La mejor zafra fue
la del año anterior 2024.
df1 <- data.frame(caida_pureza = df_2022$Caida_meladura_meladuraclarificada,zafra=rep('2022', dim(df_2022)[1]))
df2 <- data.frame(caida_pureza = df_2023$Caida_meladura_meladuraclarificada,zafra=rep('2023', dim(df_2023)[1]))
#df2 <- filter(df2, df2$caida_pureza < 50)
df3 <- data.frame(caida_pureza = df_2024$Caida_meladura_meladuraclarificada,zafra=rep('2024', dim(df_2024)[1]))
df4 <- data.frame(caida_pureza = df_2025$Caida_meladura_meladuraclarificada,zafra=rep('2025', dim(df_2025)[1]))
df_meladuraclarificada_meladura <- data.frame("Zafra" = c("2022","2023","2024","2025"),
"Media" = c(mean(df1$caida_pureza),mean(df2$caida_pureza),mean(df3$caida_pureza),mean(df4$caida_pureza)),
"Mediana" = c(median(df1$caida_pureza),median(df2$caida_pureza),median(df3$caida_pureza),median(df4$caida_pureza)),
"Desv. Estándar" = c(sd(df1$caida_pureza),sd(df2$caida_pureza),sd(df3$caida_pureza),sd(df4$caida_pureza))
)
df_meladuraclarificada_meladura
ggplot() +
geom_density(data = df1, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df2, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df3, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
geom_density(data = df4, aes(x = caida_pureza,fill=zafra),alpha=0.7) +
ggtitle("Caída de Pureza Meladura Clarificada - Meladura")

Puede observarse que en las últimas 4 Zafras, el desempeño de
la zafra 2025 ha sido superior, mostrando la mejor caída Meladura
Clarificada a Meladura. Se espera que este valor sea lo más
positivo posible pues es un indicador de desempeño de la Clarificación
de Meladura (remoción de impurezas).
LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBkZSBDYcOtZGFzIGRlIFB1cmV6YSBQU0EiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpTZSByZWFsaXphIHVuIGFuw6FsaXNpcyBjb21wYXJhdGl2byBjYcOtZGFzIGRlIHB1cmV6YSBwYXJhIGxhcyB6YWZyYXMgZGVsICoqMjAyMioqIGFsICoqMjAyNSoqLiANCg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KYGBgDQoNCg0KYGBge3J9DQpkYXRhc2V0IDwtIHJlYWQuY3N2KGZpbGUgPSAnQzovVXNlcnMvc2JhcnJpb3MvT25lRHJpdmUgLSBVbml2ZXJzaWRhZCBHYWxpbGVvL0RhdGEgU2NpZW5jZS9SL1Byb3llY3Rvcy9QYW50YWxlb24vUHVyZXphcyBQU0EvMjAyNS9EYXRhL1JlY3VwZXJhY2lvbiBHbG9iYWwgQ29yZSAyMDI1LmNzdicpDQoNCiMgQ2HDrWRhcyBkZSBQdXJlemENCmRhdGFzZXQkQ2FpZGFfY29yZV9wcmltYXJpbyA8LSBkYXRhc2V0JFB1cmV6YV9KdWdvX2RlbF9jb3JlX181OTMxIC0gZGF0YXNldCRQdXJlemFfSnVnb19wcmltYXJpb18yMDk5DQpkYXRhc2V0JENhaWRhX3ByaW1hcmlvX2RpbHVpZG8gPC0gZGF0YXNldCRQdXJlemFfSnVnb19wcmltYXJpb18yMDk5IC0gZGF0YXNldCRQdXJlemFfSnVnb19kaWx1aWRvXzE0NTkNCmRhdGFzZXQkQ2FpZGFfY2xhcm9fZGlsdWlkbyA8LSBkYXRhc2V0JFB1cmV6YV9KdWdvX2NsYXJvXzIxMDEgLSBkYXRhc2V0JFB1cmV6YV9KdWdvX2RpbHVpZG9fMTQ1OQ0KZGF0YXNldCRDYWlkYV9tZWxhZHVyYV9jbGFybyA8LSBkYXRhc2V0JFB1cmV6YV9KdWdvX2NsYXJvXzIxMDEgLSBkYXRhc2V0JFB1cmV6YV9NZWxhZHVyYV9ldmFwb3JhZGFfMjEwMw0KZGF0YXNldCRDYWlkYV9tZWxhZHVyYV9tZWxhZHVyYWNsYXJpZmljYWRhIDwtIGRhdGFzZXQkUHVyZXphX01lbGFkdXJhX2NsYXJpZmljYWRhXzI3NjQgLSBkYXRhc2V0JFB1cmV6YV9NZWxhZHVyYV9ldmFwb3JhZGFfMjEwMw0KDQpkYXRhc2V0DQpgYGANCmBgYHtyfQ0KZGZfMjAyMiA8LSBmaWx0ZXIoZGF0YXNldCxaYWZyYT09MjAyMikNCmRmXzIwMjMgPC0gZmlsdGVyKGRhdGFzZXQsWmFmcmE9PTIwMjMpDQpkZl8yMDI0IDwtIGZpbHRlcihkYXRhc2V0LFphZnJhPT0yMDI0KQ0KZGZfMjAyNSA8LSBmaWx0ZXIoZGF0YXNldCxaYWZyYT09MjAyNSkNCg0KYGBgDQoNCg0KIyMjIEZ1bmNpb25lcyBkZSBEZW5zaWRhZDogQ2HDrWRhIGRlIFB1cmV6YSBKdWdvIENvcmUgYSBKdWdvIFByaW1hcmlvDQoNCmBgYHtyfQ0KZGYxIDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyMiRDYWlkYV9jb3JlX3ByaW1hcmlvLHphZnJhPXJlcCgnMjAyMicsIGRpbShkZl8yMDIyKVsxXSkpDQpkZjIgPC0gZGF0YS5mcmFtZShjYWlkYV9wdXJlemEgPSBkZl8yMDIzJENhaWRhX2NvcmVfcHJpbWFyaW8semFmcmE9cmVwKCcyMDIzJywgZGltKGRmXzIwMjMpWzFdKSkNCmRmMyA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjQkQ2FpZGFfY29yZV9wcmltYXJpbyx6YWZyYT1yZXAoJzIwMjQnLCBkaW0oZGZfMjAyNClbMV0pKQ0KZGY0IDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyNSRDYWlkYV9jb3JlX3ByaW1hcmlvLHphZnJhPXJlcCgnMjAyNScsIGRpbShkZl8yMDI1KVsxXSkpDQoNCmRmX2NvcmVfcHJpbWFyaW8gPC0gZGF0YS5mcmFtZSgiWmFmcmEiID0gYygiMjAyMiIsIjIwMjMiLCIyMDI0IiwiMjAyNSIpLCANCiAgICAgICAgICAgICAgICAgICAgICAiTWVkaWEiID0gYyhtZWFuKGRmMSRjYWlkYV9wdXJlemEpLG1lYW4oZGYyJGNhaWRhX3B1cmV6YSksbWVhbihkZjMkY2FpZGFfcHVyZXphKSxtZWFuKGRmNCRjYWlkYV9wdXJlemEpKSwNCiAgICAgICAgICAgICAgICAgICAgICAiTWVkaWFuYSIgPSBjKG1lZGlhbihkZjEkY2FpZGFfcHVyZXphKSxtZWRpYW4oZGYyJGNhaWRhX3B1cmV6YSksbWVkaWFuKGRmMyRjYWlkYV9wdXJlemEpLG1lZGlhbihkZjQkY2FpZGFfcHVyZXphKSksDQogICAgICAgICAgICAgICAgICAgICAgIkRlc3YuIEVzdMOhbmRhciIgPSBjKHNkKGRmMSRjYWlkYV9wdXJlemEpLHNkKGRmMiRjYWlkYV9wdXJlemEpLHNkKGRmMyRjYWlkYV9wdXJlemEpLHNkKGRmNCRjYWlkYV9wdXJlemEpKQ0KICAgICAgICAgICAgICAgICAgICAgICkNCg0KZGZfY29yZV9wcmltYXJpbw0KDQpnZ3Bsb3QoKSArIA0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmMSwgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArIA0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmMiwgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYzLCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsNCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjQsIGFlcyh4ID0gY2FpZGFfcHVyZXphLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKw0KICBnZ3RpdGxlKCJDYcOtZGEgZGUgUHVyZXphIENvcmUgLSBQcmltYXJpbyIpDQpgYGANCg0KUHVlZGUgb2JzZXJ2YXJzZSBxdWUgZW4gbGFzIMO6bHRpbWFzIDQgWmFmcmFzLCAqKmVsIGRlc2VtcGXDsW8gZGUgbGEgemFmcmEgMjAyNSBoYSBzaWRvIHN1cGVyaW9yLCBtb3N0cmFuZG8gbGEgbWVub3IgY2HDrWRhIHByb21lZGlvIENvcmUgYSBQcmltYXJpbyoqLg0KDQpgYGB7cn0NCmRmMSA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjIkQ2FpZGFfcHJpbWFyaW9fZGlsdWlkbyx6YWZyYT1yZXAoJzIwMjInLCBkaW0oZGZfMjAyMilbMV0pKQ0KZGYyIDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyMyRDYWlkYV9wcmltYXJpb19kaWx1aWRvLHphZnJhPXJlcCgnMjAyMycsIGRpbShkZl8yMDIzKVsxXSkpDQpkZjIgPC0gZmlsdGVyKGRmMiwgZGYyJGNhaWRhX3B1cmV6YSA8IDUwKQ0KZGYzIDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyNCRDYWlkYV9wcmltYXJpb19kaWx1aWRvLHphZnJhPXJlcCgnMjAyNCcsIGRpbShkZl8yMDI0KVsxXSkpDQpkZjQgPC0gZGF0YS5mcmFtZShjYWlkYV9wdXJlemEgPSBkZl8yMDI1JENhaWRhX3ByaW1hcmlvX2RpbHVpZG8semFmcmE9cmVwKCcyMDI1JywgZGltKGRmXzIwMjUpWzFdKSkNCg0KDQpkZl9wcmltYXJpb19kaWx1aWRvIDwtIGRhdGEuZnJhbWUoIlphZnJhIiA9IGMoIjIwMjIiLCIyMDIzIiwiMjAyNCIsIjIwMjUiKSwgDQogICAgICAgICAgICAgICAgICAgICAgIk1lZGlhIiA9IGMobWVhbihkZjEkY2FpZGFfcHVyZXphKSxtZWFuKGRmMiRjYWlkYV9wdXJlemEpLG1lYW4oZGYzJGNhaWRhX3B1cmV6YSksbWVhbihkZjQkY2FpZGFfcHVyZXphKSksDQogICAgICAgICAgICAgICAgICAgICAgIk1lZGlhbmEiID0gYyhtZWRpYW4oZGYxJGNhaWRhX3B1cmV6YSksbWVkaWFuKGRmMiRjYWlkYV9wdXJlemEpLG1lZGlhbihkZjMkY2FpZGFfcHVyZXphKSxtZWRpYW4oZGY0JGNhaWRhX3B1cmV6YSkpLA0KICAgICAgICAgICAgICAgICAgICAgICJEZXN2LiBFc3TDoW5kYXIiID0gYyhzZChkZjEkY2FpZGFfcHVyZXphKSxzZChkZjIkY2FpZGFfcHVyZXphKSxzZChkZjMkY2FpZGFfcHVyZXphKSxzZChkZjQkY2FpZGFfcHVyZXphKSkNCiAgICAgICAgICAgICAgICAgICAgICApDQoNCmRmX3ByaW1hcmlvX2RpbHVpZG8NCg0KZ2dwbG90KCkgKyANCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjEsIGFlcyh4ID0gY2FpZGFfcHVyZXphLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKyANCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjIsIGFlcyh4ID0gY2FpZGFfcHVyZXphLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKw0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmMywgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGY0LCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsNCiAgZ2d0aXRsZSgiQ2HDrWRhIGRlIFB1cmV6YSBQcmltYXJpbyAtIERpbHVpZG8iKQ0KYGBgDQoNClB1ZWRlIG9ic2VydmFyc2UgcXVlIGVuIGxhcyDDumx0aW1hcyA0IFphZnJhcywgKiplbCBkZXNlbXBlw7FvIGRlIGxhIHphZnJhIDIwMjUgaGEgc2lkbyBzdXBlcmlvciwgbW9zdHJhbmRvIGxhIG1lbm9yIGNhw61kYSBwcm9tZWRpbyBQcmltYXJpbyBhIERpbHVpZG8qKi4NCg0KYGBge3J9DQpkZjEgPC0gZGF0YS5mcmFtZShjYWlkYV9wdXJlemEgPSBkZl8yMDIyJENhaWRhX2NsYXJvX2RpbHVpZG8semFmcmE9cmVwKCcyMDIyJywgZGltKGRmXzIwMjIpWzFdKSkNCmRmMiA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjMkQ2FpZGFfY2xhcm9fZGlsdWlkbyx6YWZyYT1yZXAoJzIwMjMnLCBkaW0oZGZfMjAyMylbMV0pKQ0KZGYyIDwtIGZpbHRlcihkZjIsIGRmMiRjYWlkYV9wdXJlemEgPCA1MCkNCmRmMyA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjQkQ2FpZGFfY2xhcm9fZGlsdWlkbyx6YWZyYT1yZXAoJzIwMjQnLCBkaW0oZGZfMjAyNClbMV0pKQ0KZGY0IDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyNSRDYWlkYV9jbGFyb19kaWx1aWRvLHphZnJhPXJlcCgnMjAyNScsIGRpbShkZl8yMDI1KVsxXSkpDQoNCg0KZGZfY2xhcm9fZGlsdWlkbyA8LSBkYXRhLmZyYW1lKCJaYWZyYSIgPSBjKCIyMDIyIiwiMjAyMyIsIjIwMjQiLCIyMDI1IiksIA0KICAgICAgICAgICAgICAgICAgICAgICJNZWRpYSIgPSBjKG1lYW4oZGYxJGNhaWRhX3B1cmV6YSksbWVhbihkZjIkY2FpZGFfcHVyZXphKSxtZWFuKGRmMyRjYWlkYV9wdXJlemEpLG1lYW4oZGY0JGNhaWRhX3B1cmV6YSkpLA0KICAgICAgICAgICAgICAgICAgICAgICJNZWRpYW5hIiA9IGMobWVkaWFuKGRmMSRjYWlkYV9wdXJlemEpLG1lZGlhbihkZjIkY2FpZGFfcHVyZXphKSxtZWRpYW4oZGYzJGNhaWRhX3B1cmV6YSksbWVkaWFuKGRmNCRjYWlkYV9wdXJlemEpKSwNCiAgICAgICAgICAgICAgICAgICAgICAiRGVzdi4gRXN0w6FuZGFyIiA9IGMoc2QoZGYxJGNhaWRhX3B1cmV6YSksc2QoZGYyJGNhaWRhX3B1cmV6YSksc2QoZGYzJGNhaWRhX3B1cmV6YSksc2QoZGY0JGNhaWRhX3B1cmV6YSkpDQogICAgICAgICAgICAgICAgICAgICAgKQ0KDQpkZl9jbGFyb19kaWx1aWRvDQoNCmdncGxvdCgpICsgDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYxLCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsgDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYyLCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsNCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjMsIGFlcyh4ID0gY2FpZGFfcHVyZXphLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKw0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmNCwgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArDQogIGdndGl0bGUoIkNhw61kYSBkZSBQdXJlemEgQ2xhcm8gLSBEaWx1aWRvIikNCmBgYA0KDQpQdWVkZSBvYnNlcnZhcnNlIHF1ZSBlbiBsYXMgw7psdGltYXMgNCBaYWZyYXMsICoqZWwgZGVzZW1wZcOxbyBkZSBsYSB6YWZyYSAyMDI1IGhhIHNpZG8gaW5mZXJpb3IsIG1vc3RyYW5kbyBsYSBtZW5vciBjYcOtZGEgcHJvbWVkaW8gQ2xhcm8gYSBEaWx1aWRvKiouIFNlIGVzcGVyYSBxdWUgZXN0YSBkaWZlcmVuY2lhIHNlYSBsbyBtw6FzIHBvc2l0aXZhIHBvc2libGUsIHB1ZXMgZXMgdW4gaW5kaWNhZG9yIGRlIGRlc2VtcGXDsW8gZGUgbGEgY2xhcmlmaWNhY2nDs24gZGUganVnbyAocmVtb2Npw7NuIGRlIGltcHVyZXphcykuDQoNCmBgYHtyfQ0KZGYxIDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyMiRDYWlkYV9tZWxhZHVyYV9jbGFybyx6YWZyYT1yZXAoJzIwMjInLCBkaW0oZGZfMjAyMilbMV0pKQ0KZGYyIDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyMyRDYWlkYV9tZWxhZHVyYV9jbGFybyx6YWZyYT1yZXAoJzIwMjMnLCBkaW0oZGZfMjAyMylbMV0pKQ0KZGYyIDwtIGZpbHRlcihkZjIsIGRmMiRjYWlkYV9wdXJlemEgPCA1MCkNCmRmMyA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjQkQ2FpZGFfbWVsYWR1cmFfY2xhcm8semFmcmE9cmVwKCcyMDI0JywgZGltKGRmXzIwMjQpWzFdKSkNCmRmNCA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjUkQ2FpZGFfbWVsYWR1cmFfY2xhcm8semFmcmE9cmVwKCcyMDI1JywgZGltKGRmXzIwMjUpWzFdKSkNCg0KDQpkZl9tZWxhZHVyYV9jbGFybyA8LSBkYXRhLmZyYW1lKCJaYWZyYSIgPSBjKCIyMDIyIiwiMjAyMyIsIjIwMjQiLCIyMDI1IiksIA0KICAgICAgICAgICAgICAgICAgICAgICJNZWRpYSIgPSBjKG1lYW4oZGYxJGNhaWRhX3B1cmV6YSksbWVhbihkZjIkY2FpZGFfcHVyZXphKSxtZWFuKGRmMyRjYWlkYV9wdXJlemEpLG1lYW4oZGY0JGNhaWRhX3B1cmV6YSkpLA0KICAgICAgICAgICAgICAgICAgICAgICJNZWRpYW5hIiA9IGMobWVkaWFuKGRmMSRjYWlkYV9wdXJlemEpLG1lZGlhbihkZjIkY2FpZGFfcHVyZXphKSxtZWRpYW4oZGYzJGNhaWRhX3B1cmV6YSksbWVkaWFuKGRmNCRjYWlkYV9wdXJlemEpKSwNCiAgICAgICAgICAgICAgICAgICAgICAiRGVzdi4gRXN0w6FuZGFyIiA9IGMoc2QoZGYxJGNhaWRhX3B1cmV6YSksc2QoZGYyJGNhaWRhX3B1cmV6YSksc2QoZGYzJGNhaWRhX3B1cmV6YSksc2QoZGY0JGNhaWRhX3B1cmV6YSkpDQogICAgICAgICAgICAgICAgICAgICAgKQ0KDQpkZl9tZWxhZHVyYV9jbGFybw0KDQpnZ3Bsb3QoKSArIA0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmMSwgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArIA0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmMiwgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYzLCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsNCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjQsIGFlcyh4ID0gY2FpZGFfcHVyZXphLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKw0KICBnZ3RpdGxlKCJDYcOtZGEgZGUgUHVyZXphIE1lbGFkdXJhIC0gQ2xhcm8iKQ0KYGBgDQoNClB1ZWRlIG9ic2VydmFyc2UgcXVlIGVuIGxhcyDDumx0aW1hcyA0IFphZnJhcywgKiplbCBkZXNlbXBlw7FvIGRlIGxhIHphZnJhIDIwMjUgaGEgc2lkbyBwcm9tZWRpbywgbW9zdHJhbmRvIHVuYSBjYcOtZGEgcHJvbWVkaW8gTWVsYWR1cmEgYSBDbGFybyBtdXkgc2ltaWxhciBhIGxhcyB6YWZyYXMgMjAyMiB5IDIwMjMqKi4gTGEgbWVqb3IgemFmcmEgZnVlIGxhIGRlbCBhw7FvIGFudGVyaW9yICoqMjAyNCoqLg0KDQpgYGB7cn0NCmRmMSA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjIkQ2FpZGFfbWVsYWR1cmFfbWVsYWR1cmFjbGFyaWZpY2FkYSx6YWZyYT1yZXAoJzIwMjInLCBkaW0oZGZfMjAyMilbMV0pKQ0KZGYyIDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyMyRDYWlkYV9tZWxhZHVyYV9tZWxhZHVyYWNsYXJpZmljYWRhLHphZnJhPXJlcCgnMjAyMycsIGRpbShkZl8yMDIzKVsxXSkpDQojZGYyIDwtIGZpbHRlcihkZjIsIGRmMiRjYWlkYV9wdXJlemEgPCA1MCkNCmRmMyA8LSBkYXRhLmZyYW1lKGNhaWRhX3B1cmV6YSA9IGRmXzIwMjQkQ2FpZGFfbWVsYWR1cmFfbWVsYWR1cmFjbGFyaWZpY2FkYSx6YWZyYT1yZXAoJzIwMjQnLCBkaW0oZGZfMjAyNClbMV0pKQ0KZGY0IDwtIGRhdGEuZnJhbWUoY2FpZGFfcHVyZXphID0gZGZfMjAyNSRDYWlkYV9tZWxhZHVyYV9tZWxhZHVyYWNsYXJpZmljYWRhLHphZnJhPXJlcCgnMjAyNScsIGRpbShkZl8yMDI1KVsxXSkpDQoNCg0KZGZfbWVsYWR1cmFjbGFyaWZpY2FkYV9tZWxhZHVyYSA8LSBkYXRhLmZyYW1lKCJaYWZyYSIgPSBjKCIyMDIyIiwiMjAyMyIsIjIwMjQiLCIyMDI1IiksIA0KICAgICAgICAgICAgICAgICAgICAgICJNZWRpYSIgPSBjKG1lYW4oZGYxJGNhaWRhX3B1cmV6YSksbWVhbihkZjIkY2FpZGFfcHVyZXphKSxtZWFuKGRmMyRjYWlkYV9wdXJlemEpLG1lYW4oZGY0JGNhaWRhX3B1cmV6YSkpLA0KICAgICAgICAgICAgICAgICAgICAgICJNZWRpYW5hIiA9IGMobWVkaWFuKGRmMSRjYWlkYV9wdXJlemEpLG1lZGlhbihkZjIkY2FpZGFfcHVyZXphKSxtZWRpYW4oZGYzJGNhaWRhX3B1cmV6YSksbWVkaWFuKGRmNCRjYWlkYV9wdXJlemEpKSwNCiAgICAgICAgICAgICAgICAgICAgICAiRGVzdi4gRXN0w6FuZGFyIiA9IGMoc2QoZGYxJGNhaWRhX3B1cmV6YSksc2QoZGYyJGNhaWRhX3B1cmV6YSksc2QoZGYzJGNhaWRhX3B1cmV6YSksc2QoZGY0JGNhaWRhX3B1cmV6YSkpDQogICAgICAgICAgICAgICAgICAgICAgKQ0KDQpkZl9tZWxhZHVyYWNsYXJpZmljYWRhX21lbGFkdXJhDQoNCmdncGxvdCgpICsgDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYxLCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsgDQogIGdlb21fZGVuc2l0eShkYXRhID0gZGYyLCBhZXMoeCA9IGNhaWRhX3B1cmV6YSxmaWxsPXphZnJhKSxhbHBoYT0wLjcpICsNCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBkZjMsIGFlcyh4ID0gY2FpZGFfcHVyZXphLGZpbGw9emFmcmEpLGFscGhhPTAuNykgKw0KICBnZW9tX2RlbnNpdHkoZGF0YSA9IGRmNCwgYWVzKHggPSBjYWlkYV9wdXJlemEsZmlsbD16YWZyYSksYWxwaGE9MC43KSArDQogIGdndGl0bGUoIkNhw61kYSBkZSBQdXJlemEgTWVsYWR1cmEgQ2xhcmlmaWNhZGEgLSBNZWxhZHVyYSIpDQpgYGANCg0KDQpQdWVkZSBvYnNlcnZhcnNlIHF1ZSBlbiBsYXMgw7psdGltYXMgNCBaYWZyYXMsICoqZWwgZGVzZW1wZcOxbyBkZSBsYSB6YWZyYSAyMDI1IGhhIHNpZG8gc3VwZXJpb3IsIG1vc3RyYW5kbyBsYSBtZWpvciBjYcOtZGEgTWVsYWR1cmEgQ2xhcmlmaWNhZGEgYSBNZWxhZHVyYSoqLiBTZSBlc3BlcmEgcXVlIGVzdGUgdmFsb3Igc2VhIGxvIG3DoXMgcG9zaXRpdm8gcG9zaWJsZSBwdWVzIGVzIHVuIGluZGljYWRvciBkZSBkZXNlbXBlw7FvIGRlIGxhIENsYXJpZmljYWNpw7NuIGRlIE1lbGFkdXJhIChyZW1vY2nDs24gZGUgaW1wdXJlemFzKS4NCg0KIyMjIFJlc3VtZW4NCkxhIHphZnJhICoqMjAyNSoqIG11ZXN0cmEgbGFzIGNhw61kYXMgZGUgcHVyZXphIG3DoXMgZmF2b3JhYmxlcyBjb21wYXJhbmRvIGxhcyDDumx0aW1hcyBjdWF0cm8gemFmcmFzLCBhIGV4Y2VwY2nDs24gZGUgbGEgKipjbGFyaWZpY2FjacOzbiBkZSBqdWdvKiogZG9uZGUgZWwgaW5jcmVtZW50byBkZSBwdXJlemEgaGEgc2lkbyBlbCBtw6FzIGJham8uDQo=