Análisis Descriprivo
Conocimiento Sobre el Turismo Responsable Por Edades
tab_edad <- table(turismo$Q2,turismo$Q12_1)
tab_edad
##
## 1 2 3 4 5
## 1 164 91 96 52 36
## 2 102 46 53 42 47
barplot(tab_edad, main = "Conocimiento Turismo Responsable", xlab = "Edades", ylab = "Frecuencia", names.arg=c("< 25","25 - 40", "40 - 55", "55 - 65", "> 65"))
legend(x="topright", legend=c("Sí", "No"), fill = c("Black","Grey"))

Aspectos Importantes del Turismo Responsable
op3.1 <- count(turismo, Q3_1)
op3.2 <- count(turismo, Q3_2)
op3.3 <- count(turismo, Q3_3)
names(op3.1) <- c("R", "Acciones y Normativas")
names(op3.2) <- c("R", "Alteración Entorno Social")
names(op3.3) <- c("R", "Equidad/Justicia Laboral")
op3.1
## R Acciones y Normativas
## 1 1 356
## 2 2 255
## 3 3 118
op3.2
## R Alteración Entorno Social
## 1 1 235
## 2 2 225
## 3 3 269
op3.3
## R Equidad/Justicia Laboral
## 1 1 138
## 2 2 249
## 3 3 342
resultadoQ3 <- merge(op3.1, op3.2, by = "R", all = TRUE) # Unir df1 y df2
resultadoQ3 <- merge(resultadoQ3, op3.3, by = "R", all = TRUE) # Unir df3 al resultado anterior
resultadoQ3$R <- as.factor(resultadoQ3$R)
barplot(as.matrix(resultadoQ3[, 2:4]), beside = TRUE, col = c("dodgerblue3", "darkorchid3", "darkorange2"),
legend.text = rownames(df), ylim = c(0, 400),
main = "Aspectos del Turismo Responsable", xlab = "Categorías", ylab = "Valores")
legend(x="bottomright", legend=c("1", "2", "3"), fill = c("dodgerblue3","darkorchid3", "darkorange2"))

Aspectos en Cuenta para Organizar un Viaje
p4.1 <- sum(turismo$Q4_1)
p4.2 <- sum(turismo$Q4_2)
p4.3 <- sum(turismo$Q4_3)
p4.4 <- sum(turismo$Q4_4)
p4.5 <- sum(turismo$Q4_5)
p4.6 <- sum(turismo$Q4_6)
p4.7 <- sum(turismo$Q4_7)
p4.8 <- sum(turismo$Q4_8)
p4.9 <- sum(turismo$Q4_9)
p4.10 <- sum(turismo$Q4_10)
p4.11 <- sum(turismo$Q4_11)
p4.12 <- sum(turismo$Q4_12)
p4.1
## [1] 641
p4.2
## [1] 557
p4.3
## [1] 437
p4.4
## [1] 291
p4.5
## [1] 310
p4.6
## [1] 395
p4.7
## [1] 467
p4.8
## [1] 392
p4.9
## [1] 362
p4.10
## [1] 392
p4.11
## [1] 193
p4.12
## [1] 429
df_valores <- data.frame(Categoria = c("Costo", "Seguridad", "Oferta Turística", "Nº Desplazamientos", "T Desplazamientos", "Transporte Disponible", "Conocer Cultura", "Conocer Parajes", "Gastronomía", "Recomendaciones", "Exclusividad", "Temporada Año"), Suma = c(p4.1, p4.2, p4.3, p4.4, p4.5, p4.6, p4.7, p4.8, p4.9, p4.10, p4.11, p4.12))
ggplot(df_valores, aes(x = Categoria, y = Suma)) +
geom_bar(stat = "identity", fill = "blue") +
geom_text(aes(label = Suma), vjust = -0.3, size = 3) +
labs(title = "Aspectos en Cuenta para Organizar un Viaje", x = "Categoría", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(size = 10, angle = 30, hjust = 1))

Afirmaciones Relacionadas a su Modo de Actuar
Preocupación por la Sostenibilidad
plot(x = factor(turismo$Q12_1), y = turismo$Q6_1, main = "Preocupación por la Sostenibilidad", xlab = "Rango de Edad", ylab = "Nivel de Preocupación", col = c("cadetblue2", "cadetblue3", "cadetblue4", "cadetblue2", "cadetblue3"))
legend(x="bottomleft", legend=c("< 25","25 - 40", "40 - 55", "55 - 65", "> 65"), fill = c("cadetblue2", "cadetblue3", "cadetblue4", "cadetblue2", "cadetblue3"))

Consciencia de Riesgos al Viajar
plot(x = factor(turismo$Q11), y = turismo$Q6_2, main = "Consciencia de Riesgos al Viajar", xlab = "Sexo", ylab = "Nivel de Consciencia", col = c("chartreuse4", "chocolate"),names.arg=c("Hombre","Mujer"))
legend(x="bottomleft", legend=c("Hombre", "Mujer"), fill = c("chartreuse4","chocolate"))

Fomento del Desarrollo Local
plot(x = factor(turismo$Q13), y = turismo$Q6_4, main = "Fomento del Desarrollo Local", xlab = "Nacionalidad", ylab = "Nivel de Afirmación", col = c("darkcyan", "darkgoldenrod"),names.arg=c("Hombre","Mujer"))
legend(x="bottomleft", legend=c("México", "España"), fill = c("darkcyan","darkgoldenrod"))

Cálculo de la Huella de Carbono de su Viaje
plot(x = factor(turismo$Q13), y = turismo$Q6_11, main = "Cálculo de la Huella de Carbono de su Viaje", xlab = "Nacionalidad", ylab = "Nivel de Responsabilidad", col = c("purple", "green3"),names.arg=c("Hombre","Mujer"))
legend(x="topleft", legend=c("México", "España"), fill = c("purple","green3"))

Participación en Redes y Actividades relacionadas al Turismo
Sostenible
plot(x = factor(turismo$Q12_1), y = turismo$Q6_15, main = "Participación en Redes y Actividades Relacionadas", xlab = "Rango de Edad", ylab = "Nivel de Participación", col = c("antiquewhite2", "antiquewhite3", "antiquewhite4", "antiquewhite3", "antiquewhite2"))
legend(x="topright", legend=c("< 25","25 - 40", "40 - 55", "55 - 65", "> 65"), fill = c("antiquewhite2", "antiquewhite3", "antiquewhite4", "antiquewhite3", "antiquewhite2"))

Número de viajes realizados en el último año, Razones y
Planificación
hist(x = turismo$Q7, main = "Histograma - Nº de Viajes del Último Año", col = "forestgreen", xlab = "Nº de Viajes", ylab = "Frecuencia", xlim = c(0, 30))

turismo$Q9 <- as.factor(turismo$Q9)
turismo$Q12_1 <- as.factor(turismo$Q12_1)
turismo$Q10 <- as.factor(turismo$Q10)
ggplot(turismo, aes(x = Q12_1, fill = Q10)) +
geom_bar(position = "stack") +
facet_wrap(~ Q9, labeller = labeller(Q9 = c("1" = "Yo", "2" = "Otros", "3" = "Yo y Otros"))) +
labs(title = "Planificación del Viaje Relacionado a la Razón del Viaje y Edad",
x = "Rango de Edad", y = "Cantidad") +
scale_fill_manual(values = c("steelblue4", "royalblue1", "skyblue3", "royalblue4"),
name = "Razón Viaje", labels = c("1" = "Ocio o Visita", "2" = "Estudio", "3" = "Trabajo", "4" = "Otro")) +
scale_x_discrete(name = "Rango de Edad", labels = c("1" = "< 25", "2" = "25 - 40", "3" = "40 - 55", "4" = "55 - 65", "5" = "> 65")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

Hipótesis
base <- turismo
españa <- base[base$Q13 == 2,]
mexico <- base[base$Q13 == 1,]
Hipotesis 1; Hipotesis Alterna
q9 <- as.numeric(españa$Q9)
q9data <- sum(q9 == 1) / length(q9)
hipotesis1 <- 0.866
##res1 <- t.test(q9data, alternative = "two.sided", conf.level = 0.95, mu = hipotesis1)
Hipotesis 2; Hipotesis Alterna
q6 <- as.numeric(mexico$Q6_4)
q6data <- mean(q6)
hipotesis2 <- .50
res2 <- t.test(q6, alternative = "less", conf.level = 0.95, mu = hipotesis2)
res2
##
## One Sample t-test
##
## data: q6
## t = 58.055, df = 441, p-value = 1
## alternative hypothesis: true mean is less than 0.5
## 95 percent confidence interval:
## -Inf 5.111478
## sample estimates:
## mean of x
## 4.984163
Hipotesis 3; Hipotesis Alterna
q611 <- as.numeric(españa$Q6_11)
q6media <- mean(q611)
hipotesis3 <- 0.55
res3 <- t.test(q611, alternative = "less", conf.level = 0.95, mu = hipotesis3)
res3
##
## One Sample t-test
##
## data: q611
## t = 17.828, df = 286, p-value = 1
## alternative hypothesis: true mean is less than 0.55
## 95 percent confidence interval:
## -Inf 2.667168
## sample estimates:
## mean of x
## 2.487805
Hipotesis4; Hipotesis Alterna
vmex <- mexico$Q7
vesp <- españa$Q7
res4 <- t.test(vmex, vesp)
res4
##
## Welch Two Sample t-test
##
## data: vmex and vesp
## t = 0.2395, df = 457.41, p-value = 0.8108
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.6081497 0.7769579
## sample estimates:
## mean of x mean of y
## 3.753394 3.668990
Hipotesis 5; Hipotesis Alterna
q12 <- as.numeric(mexico$Q12)
hipotesis5 <- c(25, 36)
res5 <- t.test(q12, mu = mean(hipotesis5), conf.level = 0.95)
res5
##
## One Sample t-test
##
## data: q12
## t = 11.309, df = 441, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 30.5
## 95 percent confidence interval:
## 39.19774 42.85656
## sample estimates:
## mean of x
## 41.02715
Hipotesis6; Hipotesis Alterna
q12 <- as.numeric(españa$Q12)
hipotesis6 <- c(15,29)
res6 <- t.test(q12, mu = mean(hipotesis6), conf.level = 0.95)
res6
##
## One Sample t-test
##
## data: q12
## t = 14.223, df = 286, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 22
## 95 percent confidence interval:
## 34.58792 38.63159
## sample estimates:
## mean of x
## 36.60976
LS0tCnRpdGxlOiAiQ2FzbyBUdXJpc21vIgphdXRob3I6ICJFUVVJUE8gNSIKZGF0ZTogIjIwMjMtMDgtMzEiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCmBgYHtyfQp0dXJpc21vIDwtIHJlYWQuY3N2KCIvVXNlcnMvYmVuamFtaW5yZXllc3NhbmNoZXovRG93bmxvYWRzL0Jhc2UgZGUgZGF0b3MgdHVyaXNtbyBsaW1waWEiKQoKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKCmBgYAojIEFuw6FsaXNpcyBEZXNjcmlwcml2bwoKIyMjIENvbm9jaW1pZW50byBTb2JyZSBlbCBUdXJpc21vIFJlc3BvbnNhYmxlIFBvciBFZGFkZXMKCmBgYHtyfQp0YWJfZWRhZCA8LSB0YWJsZSh0dXJpc21vJFEyLHR1cmlzbW8kUTEyXzEpCnRhYl9lZGFkCmBgYApgYGB7cn0KYmFycGxvdCh0YWJfZWRhZCwgbWFpbiA9ICJDb25vY2ltaWVudG8gVHVyaXNtbyBSZXNwb25zYWJsZSIsIHhsYWIgPSAiRWRhZGVzIiwgeWxhYiA9ICJGcmVjdWVuY2lhIiwgbmFtZXMuYXJnPWMoIjwgMjUiLCIyNSAtIDQwIiwgIjQwIC0gNTUiLCAiNTUgLSA2NSIsICI+IDY1IikpCmxlZ2VuZCh4PSJ0b3ByaWdodCIsIGxlZ2VuZD1jKCJTw60iLCAiTm8iKSwgZmlsbCA9IGMoIkJsYWNrIiwiR3JleSIpKQpgYGAKCiMjIyBBc3BlY3RvcyBJbXBvcnRhbnRlcyBkZWwgVHVyaXNtbyBSZXNwb25zYWJsZQpgYGB7cn0Kb3AzLjEgPC0gY291bnQodHVyaXNtbywgUTNfMSkKb3AzLjIgPC0gY291bnQodHVyaXNtbywgUTNfMikKb3AzLjMgPC0gY291bnQodHVyaXNtbywgUTNfMykKCm5hbWVzKG9wMy4xKSA8LSBjKCJSIiwgIkFjY2lvbmVzIHkgTm9ybWF0aXZhcyIpCm5hbWVzKG9wMy4yKSA8LSBjKCJSIiwgIkFsdGVyYWNpw7NuIEVudG9ybm8gU29jaWFsIikKbmFtZXMob3AzLjMpIDwtIGMoIlIiLCAiRXF1aWRhZC9KdXN0aWNpYSBMYWJvcmFsIikKCm9wMy4xCm9wMy4yCm9wMy4zCmBgYAoKYGBge3J9CnJlc3VsdGFkb1EzIDwtIG1lcmdlKG9wMy4xLCBvcDMuMiwgYnkgPSAiUiIsIGFsbCA9IFRSVUUpICMgVW5pciBkZjEgeSBkZjIKcmVzdWx0YWRvUTMgPC0gbWVyZ2UocmVzdWx0YWRvUTMsIG9wMy4zLCBieSA9ICJSIiwgYWxsID0gVFJVRSkgIyBVbmlyIGRmMyBhbCByZXN1bHRhZG8gYW50ZXJpb3IKcmVzdWx0YWRvUTMkUiA8LSBhcy5mYWN0b3IocmVzdWx0YWRvUTMkUikKYGBgCmBgYHtyfQpiYXJwbG90KGFzLm1hdHJpeChyZXN1bHRhZG9RM1ssIDI6NF0pLCBiZXNpZGUgPSBUUlVFLCBjb2wgPSBjKCJkb2RnZXJibHVlMyIsICJkYXJrb3JjaGlkMyIsICJkYXJrb3JhbmdlMiIpLAogICAgICAgIGxlZ2VuZC50ZXh0ID0gcm93bmFtZXMoZGYpLCB5bGltID0gYygwLCA0MDApLAogICAgICAgIG1haW4gPSAiQXNwZWN0b3MgZGVsIFR1cmlzbW8gUmVzcG9uc2FibGUiLCB4bGFiID0gIkNhdGVnb3LDrWFzIiwgeWxhYiA9ICJWYWxvcmVzIikKbGVnZW5kKHg9ImJvdHRvbXJpZ2h0IiwgbGVnZW5kPWMoIjEiLCAiMiIsICIzIiksIGZpbGwgPSBjKCJkb2RnZXJibHVlMyIsImRhcmtvcmNoaWQzIiwgImRhcmtvcmFuZ2UyIikpCmBgYAoKIyMjIEFzcGVjdG9zIGVuIEN1ZW50YSBwYXJhIE9yZ2FuaXphciB1biBWaWFqZQpgYGB7cn0KcDQuMSA8LSBzdW0odHVyaXNtbyRRNF8xKQpwNC4yIDwtIHN1bSh0dXJpc21vJFE0XzIpCnA0LjMgPC0gc3VtKHR1cmlzbW8kUTRfMykKcDQuNCA8LSBzdW0odHVyaXNtbyRRNF80KQpwNC41IDwtIHN1bSh0dXJpc21vJFE0XzUpCnA0LjYgPC0gc3VtKHR1cmlzbW8kUTRfNikKcDQuNyA8LSBzdW0odHVyaXNtbyRRNF83KQpwNC44IDwtIHN1bSh0dXJpc21vJFE0XzgpCnA0LjkgPC0gc3VtKHR1cmlzbW8kUTRfOSkKcDQuMTAgPC0gc3VtKHR1cmlzbW8kUTRfMTApCnA0LjExIDwtIHN1bSh0dXJpc21vJFE0XzExKQpwNC4xMiA8LSBzdW0odHVyaXNtbyRRNF8xMikKCnA0LjEKcDQuMgpwNC4zCnA0LjQKcDQuNQpwNC42CnA0LjcKcDQuOApwNC45CnA0LjEwCnA0LjExCnA0LjEyCmBgYAoKYGBge3J9CmRmX3ZhbG9yZXMgPC0gZGF0YS5mcmFtZShDYXRlZ29yaWEgPSBjKCJDb3N0byIsICJTZWd1cmlkYWQiLCAiT2ZlcnRhIFR1csOtc3RpY2EiLCAiTsK6IERlc3BsYXphbWllbnRvcyIsICJUIERlc3BsYXphbWllbnRvcyIsICJUcmFuc3BvcnRlIERpc3BvbmlibGUiLCAiQ29ub2NlciBDdWx0dXJhIiwgIkNvbm9jZXIgUGFyYWplcyIsICJHYXN0cm9ub23DrWEiLCAiUmVjb21lbmRhY2lvbmVzIiwgIkV4Y2x1c2l2aWRhZCIsICJUZW1wb3JhZGEgQcOxbyIpLCBTdW1hID0gYyhwNC4xLCBwNC4yLCBwNC4zLCBwNC40LCBwNC41LCBwNC42LCBwNC43LCBwNC44LCBwNC45LCBwNC4xMCwgcDQuMTEsIHA0LjEyKSkKZ2dwbG90KGRmX3ZhbG9yZXMsIGFlcyh4ID0gQ2F0ZWdvcmlhLCB5ID0gU3VtYSkpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgZmlsbCA9ICJibHVlIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBTdW1hKSwgdmp1c3QgPSAtMC4zLCBzaXplID0gMykgKwogIGxhYnModGl0bGUgPSAiQXNwZWN0b3MgZW4gQ3VlbnRhIHBhcmEgT3JnYW5pemFyIHVuIFZpYWplIiwgeCA9ICJDYXRlZ29yw61hIiwgeSA9ICJGcmVjdWVuY2lhIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCBhbmdsZSA9IDMwLCBoanVzdCA9IDEpKQpgYGAKCiMjIyBBZmlybWFjaW9uZXMgUmVsYWNpb25hZGFzIGEgc3UgTW9kbyBkZSBBY3R1YXIKIyMjIyBQcmVvY3VwYWNpw7NuIHBvciBsYSBTb3N0ZW5pYmlsaWRhZApgYGB7cn0KcGxvdCh4ID0gZmFjdG9yKHR1cmlzbW8kUTEyXzEpLCB5ID0gdHVyaXNtbyRRNl8xLCBtYWluID0gIlByZW9jdXBhY2nDs24gcG9yIGxhIFNvc3RlbmliaWxpZGFkIiwgeGxhYiA9ICJSYW5nbyBkZSBFZGFkIiwgeWxhYiA9ICJOaXZlbCBkZSBQcmVvY3VwYWNpw7NuIiwgY29sID0gYygiY2FkZXRibHVlMiIsICJjYWRldGJsdWUzIiwgImNhZGV0Ymx1ZTQiLCAiY2FkZXRibHVlMiIsICJjYWRldGJsdWUzIikpCmxlZ2VuZCh4PSJib3R0b21sZWZ0IiwgbGVnZW5kPWMoIjwgMjUiLCIyNSAtIDQwIiwgIjQwIC0gNTUiLCAiNTUgLSA2NSIsICI+IDY1IiksIGZpbGwgPSBjKCJjYWRldGJsdWUyIiwgImNhZGV0Ymx1ZTMiLCAiY2FkZXRibHVlNCIsICJjYWRldGJsdWUyIiwgImNhZGV0Ymx1ZTMiKSkKYGBgCgoKIyMjIyBDb25zY2llbmNpYSBkZSBSaWVzZ29zIGFsIFZpYWphcgpgYGB7cn0KcGxvdCh4ID0gZmFjdG9yKHR1cmlzbW8kUTExKSwgeSA9IHR1cmlzbW8kUTZfMiwgbWFpbiA9ICJDb25zY2llbmNpYSBkZSBSaWVzZ29zIGFsIFZpYWphciIsIHhsYWIgPSAiU2V4byIsIHlsYWIgPSAiTml2ZWwgZGUgQ29uc2NpZW5jaWEiLCBjb2wgPSBjKCJjaGFydHJldXNlNCIsICJjaG9jb2xhdGUiKSxuYW1lcy5hcmc9YygiSG9tYnJlIiwiTXVqZXIiKSkKbGVnZW5kKHg9ImJvdHRvbWxlZnQiLCBsZWdlbmQ9YygiSG9tYnJlIiwgIk11amVyIiksIGZpbGwgPSBjKCJjaGFydHJldXNlNCIsImNob2NvbGF0ZSIpKQpgYGAKCiMjIyMgRm9tZW50byBkZWwgRGVzYXJyb2xsbyBMb2NhbApgYGB7cn0KcGxvdCh4ID0gZmFjdG9yKHR1cmlzbW8kUTEzKSwgeSA9IHR1cmlzbW8kUTZfNCwgbWFpbiA9ICJGb21lbnRvIGRlbCBEZXNhcnJvbGxvIExvY2FsIiwgeGxhYiA9ICJOYWNpb25hbGlkYWQiLCB5bGFiID0gIk5pdmVsIGRlIEFmaXJtYWNpw7NuIiwgY29sID0gYygiZGFya2N5YW4iLCAiZGFya2dvbGRlbnJvZCIpLG5hbWVzLmFyZz1jKCJIb21icmUiLCJNdWplciIpKQpsZWdlbmQoeD0iYm90dG9tbGVmdCIsIGxlZ2VuZD1jKCJNw6l4aWNvIiwgIkVzcGHDsWEiKSwgZmlsbCA9IGMoImRhcmtjeWFuIiwiZGFya2dvbGRlbnJvZCIpKQpgYGAKCgojIyMjIEPDoWxjdWxvIGRlIGxhIEh1ZWxsYSBkZSBDYXJib25vIGRlIHN1IFZpYWplCgpgYGB7cn0KcGxvdCh4ID0gZmFjdG9yKHR1cmlzbW8kUTEzKSwgeSA9IHR1cmlzbW8kUTZfMTEsIG1haW4gPSAiQ8OhbGN1bG8gZGUgbGEgSHVlbGxhIGRlIENhcmJvbm8gZGUgc3UgVmlhamUiLCB4bGFiID0gIk5hY2lvbmFsaWRhZCIsIHlsYWIgPSAiTml2ZWwgZGUgUmVzcG9uc2FiaWxpZGFkIiwgY29sID0gYygicHVycGxlIiwgImdyZWVuMyIpLG5hbWVzLmFyZz1jKCJIb21icmUiLCJNdWplciIpKQpsZWdlbmQoeD0idG9wbGVmdCIsIGxlZ2VuZD1jKCJNw6l4aWNvIiwgIkVzcGHDsWEiKSwgZmlsbCA9IGMoInB1cnBsZSIsImdyZWVuMyIpKQpgYGAKCgojIyMjIFBhcnRpY2lwYWNpw7NuIGVuIFJlZGVzIHkgQWN0aXZpZGFkZXMgcmVsYWNpb25hZGFzIGFsIFR1cmlzbW8gU29zdGVuaWJsZQoKYGBge3J9CnBsb3QoeCA9IGZhY3Rvcih0dXJpc21vJFExMl8xKSwgeSA9IHR1cmlzbW8kUTZfMTUsIG1haW4gPSAiUGFydGljaXBhY2nDs24gZW4gUmVkZXMgeSBBY3RpdmlkYWRlcyBSZWxhY2lvbmFkYXMiLCB4bGFiID0gIlJhbmdvIGRlIEVkYWQiLCB5bGFiID0gIk5pdmVsIGRlIFBhcnRpY2lwYWNpw7NuIiwgY29sID0gYygiYW50aXF1ZXdoaXRlMiIsICJhbnRpcXVld2hpdGUzIiwgImFudGlxdWV3aGl0ZTQiLCAiYW50aXF1ZXdoaXRlMyIsICJhbnRpcXVld2hpdGUyIikpCmxlZ2VuZCh4PSJ0b3ByaWdodCIsIGxlZ2VuZD1jKCI8IDI1IiwiMjUgLSA0MCIsICI0MCAtIDU1IiwgIjU1IC0gNjUiLCAiPiA2NSIpLCBmaWxsID0gYygiYW50aXF1ZXdoaXRlMiIsICJhbnRpcXVld2hpdGUzIiwgImFudGlxdWV3aGl0ZTQiLCAiYW50aXF1ZXdoaXRlMyIsICJhbnRpcXVld2hpdGUyIikpCmBgYAoKCiMjIyBOw7ptZXJvIGRlIHZpYWplcyByZWFsaXphZG9zIGVuIGVsIMO6bHRpbW8gYcOxbywgUmF6b25lcyB5IFBsYW5pZmljYWNpw7NuCmBgYHtyfQpoaXN0KHggPSB0dXJpc21vJFE3LCBtYWluID0gIkhpc3RvZ3JhbWEgLSBOwrogZGUgVmlhamVzIGRlbCDDmmx0aW1vIEHDsW8iLCBjb2wgPSAiZm9yZXN0Z3JlZW4iLCB4bGFiID0gIk7CuiBkZSBWaWFqZXMiLCB5bGFiID0gIkZyZWN1ZW5jaWEiLCB4bGltID0gYygwLCAzMCkpCmBgYAoKCmBgYHtyfQp0dXJpc21vJFE5IDwtIGFzLmZhY3Rvcih0dXJpc21vJFE5KQp0dXJpc21vJFExMl8xIDwtIGFzLmZhY3Rvcih0dXJpc21vJFExMl8xKQp0dXJpc21vJFExMCA8LSBhcy5mYWN0b3IodHVyaXNtbyRRMTApCgpnZ3Bsb3QodHVyaXNtbywgYWVzKHggPSBRMTJfMSwgZmlsbCA9IFExMCkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIpICsKICBmYWNldF93cmFwKH4gUTksIGxhYmVsbGVyID0gbGFiZWxsZXIoUTkgPSBjKCIxIiA9ICJZbyIsICIyIiA9ICJPdHJvcyIsICIzIiA9ICJZbyB5IE90cm9zIikpKSArCiAgbGFicyh0aXRsZSA9ICJQbGFuaWZpY2FjacOzbiBkZWwgVmlhamUgUmVsYWNpb25hZG8gYSBsYSBSYXrDs24gZGVsIFZpYWplIHkgRWRhZCIsCiAgICAgICB4ID0gIlJhbmdvIGRlIEVkYWQiLCB5ID0gIkNhbnRpZGFkIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInN0ZWVsYmx1ZTQiLCAicm95YWxibHVlMSIsICJza3libHVlMyIsICJyb3lhbGJsdWU0IiksCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJSYXrDs24gVmlhamUiLCBsYWJlbHMgPSBjKCIxIiA9ICJPY2lvIG8gVmlzaXRhIiwgIjIiID0gIkVzdHVkaW8iLCAiMyIgPSAiVHJhYmFqbyIsICI0IiA9ICJPdHJvIikpICsKICBzY2FsZV94X2Rpc2NyZXRlKG5hbWUgPSAiUmFuZ28gZGUgRWRhZCIsIGxhYmVscyA9IGMoIjEiID0gIjwgMjUiLCAiMiIgPSAiMjUgLSA0MCIsICIzIiA9ICI0MCAtIDU1IiwgIjQiID0gIjU1IC0gNjUiLCAiNSIgPSAiPiA2NSIpKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKYGBgCgoKIyBIaXDDs3Rlc2lzCgpgYGB7cn0KYmFzZSA8LSB0dXJpc21vCmVzcGHDsWEgPC0gYmFzZVtiYXNlJFExMyA9PSAyLF0KbWV4aWNvIDwtIGJhc2VbYmFzZSRRMTMgPT0gMSxdCmBgYAoKCiMjIyMgSGlwb3Rlc2lzIDE7IEhpcG90ZXNpcyBBbHRlcm5hCmBgYHtyfQpxOSA8LSBhcy5udW1lcmljKGVzcGHDsWEkUTkpCgpxOWRhdGEgPC0gc3VtKHE5ID09IDEpIC8gbGVuZ3RoKHE5KQoKaGlwb3Rlc2lzMSA8LSAwLjg2NgoKIyNyZXMxIDwtIHQudGVzdChxOWRhdGEsIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIGNvbmYubGV2ZWwgPSAwLjk1LCBtdSA9IGhpcG90ZXNpczEpCmBgYAoKIyMjIyBIaXBvdGVzaXMgMjsgSGlwb3Rlc2lzIEFsdGVybmEKYGBge3J9CnE2IDwtIGFzLm51bWVyaWMobWV4aWNvJFE2XzQpCgpxNmRhdGEgPC0gbWVhbihxNikKaGlwb3Rlc2lzMiA8LSAuNTAKcmVzMiA8LSB0LnRlc3QocTYsIGFsdGVybmF0aXZlID0gImxlc3MiLCBjb25mLmxldmVsID0gMC45NSwgbXUgPSBoaXBvdGVzaXMyKQpyZXMyCmBgYAoKIyMjIyBIaXBvdGVzaXMgMzsgSGlwb3Rlc2lzIEFsdGVybmEKYGBge3J9CnE2MTEgPC0gYXMubnVtZXJpYyhlc3Bhw7FhJFE2XzExKQoKcTZtZWRpYSA8LSBtZWFuKHE2MTEpCgpoaXBvdGVzaXMzIDwtIDAuNTUKCnJlczMgPC0gdC50ZXN0KHE2MTEsIGFsdGVybmF0aXZlID0gImxlc3MiLCBjb25mLmxldmVsID0gMC45NSwgbXUgPSBoaXBvdGVzaXMzKQpyZXMzCmBgYAoKIyMjIyBIaXBvdGVzaXM0OyBIaXBvdGVzaXMgQWx0ZXJuYQpgYGB7cn0Kdm1leCA8LSBtZXhpY28kUTcKdmVzcCA8LSBlc3Bhw7FhJFE3CgpyZXM0IDwtIHQudGVzdCh2bWV4LCB2ZXNwKQpyZXM0CmBgYAoKIyMjIyBIaXBvdGVzaXMgNTsgSGlwb3Rlc2lzIEFsdGVybmEKYGBge3J9CnExMiA8LSBhcy5udW1lcmljKG1leGljbyRRMTIpCgpoaXBvdGVzaXM1IDwtIGMoMjUsIDM2KQoKcmVzNSA8LSB0LnRlc3QocTEyLCBtdSA9IG1lYW4oaGlwb3Rlc2lzNSksIGNvbmYubGV2ZWwgPSAwLjk1KQpyZXM1CgpgYGAKCiMjIyMgSGlwb3Rlc2lzNjsgSGlwb3Rlc2lzIEFsdGVybmEKYGBge3J9CnExMiA8LSBhcy5udW1lcmljKGVzcGHDsWEkUTEyKQoKaGlwb3Rlc2lzNiA8LSBjKDE1LDI5KQoKcmVzNiA8LSB0LnRlc3QocTEyLCBtdSA9IG1lYW4oaGlwb3Rlc2lzNiksIGNvbmYubGV2ZWwgPSAwLjk1KQpyZXM2CgpgYGAKCgoKCgoK