
Tema 4.- Prueba de hipótesis (t de
student)
R Markdown
##8-70 ####Drive-a-Lemon, renta automóviles en buenas condiciones
mecánicas, pero más antiguos que aquellos que rentan las grandes cadenas
nacionales de renta de coches. Como resultado, anuncia que sus tarifas
son considerablemente más bajas que las de sus grandes competidores. Una
encuesta en la industria estableció que el cargo total promedio por
renta en una de las mayores compañías es de $77.38 dólares. Una muestra
aleatoria de 18 transacciones realizadas por Drive-a-Lemon mostró un
cargo total promedio de $87.61, con una desviación estándar de la
muestra de $19.48. Verifique que, con un nivel de significancia de
0.025, el cargo total promedio de Drive-a- Lemon es más alto que el de
las grandes compañías. ¿Indica este resultado que las tarifas de Drive-
a-Lemon, no son más bajas que las de las grandes cadenas nacionales?
Justifique su respuesta.
Respuesta:
Paso 1. Plantear Hipótesis
H0: = X bar
H1: = X bar
Paso 2. Nivel de Signficiancia y Grados de Libertad
α = 0.025 | γ = 25
Paso 3. Zona de Aceptación/Rechazo
t de tabla = 2.110
Paso 4. Función
t <- (87.61-77.38)/(19.48/sqrt(18))
t
## [1] 2.22804
Paso 5. Conclusión
Se rechaza H0. t = 2.228 (x 87.61), tU 2.110 (xU 87.07), de modo
que se rechaza la hipótesis nula. Sin embargo, si Drive-a-Lemon no tiene
la misma presencia a nivel nacional que las principales cadenas del
país, entonces una comparación de sus tasas promedio con el promedio
nacional de las grandes cadenas puede conducir a una conclusión
errónea.

ANOVA (t de student)
Ejercicios Mezclas | ANOVA
#install.packages("stats")
library(stats)
#file.choose()
resistencia <- read.csv("/Users/genarorodriguezalcantara/Desktop/Tec/Diagnóstico para líneas de acción/ANOVA Mezclas.csv")
resistencia$Mezcla <- as.factor(resistencia$Mezcla)
qf(.95,df1=3,df=20)
## [1] 3.098391
anoval <- aov(Valor ~ Mezcla, data=resistencia)
summary(anoval)
## Df Sum Sq Mean Sq F value Pr(>F)
## Mezcla 3 127375 42458 25.09 5.53e-07 ***
## Residuals 20 33839 1692
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Ejercicios Grado | ANOVA (t de
student)
Ejercicios Grado | ANOVA
#file.choose()
manchado <- read.csv("/Users/genarorodriguezalcantara/Desktop/Tec/Diagnóstico para líneas de acción/ANOVA Grado.csv")
manchado$Mezcla <- as.factor(manchado$Manchado)
qf(.99,df1=2,df=12)
## [1] 6.926608
anoval2 <- aov(Valor ~ Mezcla, data=manchado)
summary(anoval2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Mezcla 2 0.0609 0.03043 0.987 0.401
## Residuals 12 0.3701 0.03084

ANOVA (t de student)
Ejercicio 1 | Regresión Lineal Simple
#install.packages("ggplot2")
#library(ggplot2)
x <- c(0.2,0.5,1,2,3)
y <- c(8,10,18,35,60)
regresión <- lm(y~x)
summary(regresión)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## 1 2 3 4 5
## 3.0591 -0.5354 -1.8596 -3.5079 2.8438
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.211 2.451 0.494 0.65510
## x 18.648 1.450 12.863 0.00101 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.341 on 3 degrees of freedom
## Multiple R-squared: 0.9822, Adjusted R-squared: 0.9763
## F-statistic: 165.5 on 1 and 3 DF, p-value: 0.001014
plot(x,y,pch=16,cex=1.3,col="cyan",main="Ejercicio 1")
abline(lm(y~x))

plot(regresión)




x2 <- c(-6,-3,0,3,6,9,12,15,20,25)
y2 <- c(2,2.8,3.9,4.2,5.8,6.2,7.5,8.2,9.3,10.9)
regresión2 <- lm(y2~x2)
summary(regresión2)
##
## Call:
## lm(formula = y2 ~ x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.41088 -0.12507 -0.03329 0.14807 0.32493
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.746694 0.101162 37.04 3.10e-10 ***
## x2 0.288062 0.008087 35.62 4.22e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2438 on 8 degrees of freedom
## Multiple R-squared: 0.9937, Adjusted R-squared: 0.993
## F-statistic: 1269 on 1 and 8 DF, p-value: 4.223e-10
plot(x2,y2,pch=16,cex=1.3,col="cyan",main="Ejercicio 2")
abline(lm(y2~x2))

plot(regresión2)




11-26 (t de
student)
En un estudio se compararon los efectos de cuatro promociones
mensuales sobre las ventas. A continuación, presentamos las ventas
unitarias de 5 tiendas que utilizaron las 4 promociones en meses
diferentes:
Marca
| 4.4 |
5.8 |
4.8 |
2.9 |
4.6 |
| 4.6 |
5.2 |
5.9 |
2.7 |
4.3 |
| 4.5 |
4.9 |
4.9 |
2.9 |
3.8 |
| 4.1 |
4.7 |
4.6 |
3.9 |
5.2 |
| 3.8 |
4.6 |
4.3 |
4.3 |
4.4 |
- Calcule el número medio de horas de alivio para cada marca y
determine la gran media.
# a)
antiacidos <- read.csv("/Users/genarorodriguezalcantara/Desktop/Tec/Diagnóstico para líneas de acción/antiacidos.csv")
antiacidos$marca <- as.factor(antiacidos$marca)
qf(.95,df1 = 4,df2 = 20)
## [1] 2.866081
anovaacido <- aov(horas ~ marca, data=antiacidos)
summary(anovaacido)
## Df Sum Sq Mean Sq F value Pr(>F)
## marca 4 9.006 2.2514 7.653 0.000655 ***
## Residuals 20 5.884 0.2942
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# F = 7.65, Fu = 2.87, de forma que rechazamos H0.
# Las marcas producen una cantidad de alivio significativamente
# Las marcas A-E tienen medias 4.28, 5.04, 4.90, 3.34 y 4.46. La gran media es 4.404.

11-38 (t de
student)
En la ciudad de Bigville, una cadena de comida rápida está
adquiriendo una mala reputación debido a que tardan mucho en servir a
los clientes. Como la cadena tiene cuatro restaurantes en esa ciudad,
quiere saber si los cuatro restaurantes tienen el mismo tiempo promedio
de servicio. Uno de los dueños de la cadena ha decidido visitar cada
local y registrar el tiempo de servicio para 5 clientes escogidos al
azar. En sus cuatro visitas al medio día registró los siguientes tiempos
de servicio en minutos:
| Restaurante 1 |
3 |
4 |
5.5 |
3.5 |
4 |
| Restaurante 2 |
3 |
3.5 |
4.5 |
4 |
5.5 |
| Restaurante 3 |
2 |
3.5 |
5 |
6.5 |
6 |
| Restaurante 4 |
3 |
4 |
5.5 |
2.5 |
3 |
Utilice un nivel de significancia de 0.05, ¿todos los
restaurantes tienen el mismo tiempo medio de servicio?
Según sus resultados, ¿deberá el dueño hacer algunas
recomendaciones a cualquiera de los administradores de los
restaurantes?
restaurante <- read.csv("/Users/genarorodriguezalcantara/Desktop/Tec/Diagnóstico para líneas de acción/restaurante.csv")
restaurante$restaurante <- as.factor(restaurante$restaurante)
qf(.95, df1 = 3, df2 = 16)
## [1] 3.238872
anovarestaurante <- aov(tiempo ~ restaurante, data=restaurante)
summary(anovarestaurante)
## Df Sum Sq Mean Sq F value Pr(>F)
## restaurante 3 2.538 0.8458 0.509 0.682
## Residuals 16 26.600 1.6625
# No rechazamos H0.
# Los tiempos medios de servicio no son significativamente diferentes.
# F 0.51, Fu 3.24, no rechazamos H0. Los tiempos medios de servicio no son significativamente diferentes.
# b)
# Debido a que ningún restaurante es peor que los otros, cualquier recomendación tendría que hacerse a todos los administradores

12-64 (t de
student)
Un arrendador está interesado en ver si las rentas de sus
departamentos son las comunes. Para esto tomó una muestra aleatoria de
11 rentas y tamaños de departamentos en complejos de departamentos
similares. Los datos son los siguientes:
| Número de recámaras |
2 |
1 |
3 |
2 |
2 |
2 |
2 |
1 |
1 |
2 |
2 |
|
|
- Desarrolle la ecuación de estimación que mejor describa estos
datos.
- Calcule el coeficiente de determinación.
- Pronostique la renta para un departamento de dos recámaras.
# a)
renta <- c(230,190,450,310,218,185,340,245,125,350,280)
recamaras <- c(2,1,3,2,2,2,2,1,1,2,2)
regresiónrenta <- lm(renta ~ recamaras)
summary(regresiónrenta)
##
## Call:
## lm(formula = renta ~ recamaras)
##
## Residuals:
## Min 1Q Median 3Q Max
## -101.80 -51.35 19.10 50.25 74.10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 55.00 63.19 0.870 0.40667
## recamaras 115.90 33.13 3.498 0.00675 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 63.19 on 9 degrees of freedom
## Multiple R-squared: 0.5762, Adjusted R-squared: 0.5291
## F-statistic: 12.23 on 1 and 9 DF, p-value: 0.006746
# Renta = 55.00 + 115.90 * Recámaras
# b)
# r2 = 0.5762
# c)
recamaras1 <- 2
renta1 <- 55+115.90*recamaras1
renta1
## [1] 286.8
# $286.8
LS0tCnRpdGxlOiAiV29ya3Nob3AgMi1KaS1jdWFkcmFkYSwgQW7DoWxpc2lzIGRlIFZhcmlhbnphLCB5IFJlZ3Jlc2nDs24gTGluZWFsIgphdXRob3I6ICJHZW5hcm8gUm9kcsOtZ3VleiBBbGPDoW50YXJhIC0gQTAwODMzMTcyIgpkYXRlOiAiMjAyMy0wNS0yMiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGNvZGVfZG93bmxvYWQ6IHllcwogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKCmBgYAohW10oL1VzZXJzL2dlbmFyb3JvZHJpZ3VlemFsY2FudGFyYS9EZXNrdG9wL1RlYy9EaWFnbm/MgXN0aWNvIHBhcmEgbGnMgW5lYXMgZGUgYWNjaW/MgW4vTkFaX2IzODQ3MDFhNTVmYjRlMGY4M2FkODZkNWFlMDk3OGMwLmpwZykKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiAjNThDRkIyOyI+IFRlbWEgNC4tIFBydWViYSBkZSBoaXDDs3Rlc2lzICh0IGRlIHN0dWRlbnQpPC9zcGFuPgojIyBSIE1hcmtkb3duCiMjOC03MAojIyMjRHJpdmUtYS1MZW1vbiwgcmVudGEgYXV0b23Ds3ZpbGVzIGVuIGJ1ZW5hcyBjb25kaWNpb25lcyBtZWPDoW5pY2FzLCBwZXJvIG3DoXMgYW50aWd1b3MgcXVlIGFxdWVsbG9zIHF1ZSByZW50YW4gbGFzIGdyYW5kZXMgY2FkZW5hcyBuYWNpb25hbGVzIGRlIHJlbnRhIGRlIGNvY2hlcy4gQ29tbyByZXN1bHRhZG8sIGFudW5jaWEgcXVlIHN1cyB0YXJpZmFzIHNvbiBjb25zaWRlcmFibGVtZW50ZSBtw6FzIGJhamFzIHF1ZSBsYXMgZGUgc3VzIGdyYW5kZXMgY29tcGV0aWRvcmVzLiBVbmEgZW5jdWVzdGEgZW4gbGEgaW5kdXN0cmlhIGVzdGFibGVjacOzIHF1ZSBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBwb3IgcmVudGEgZW4gdW5hIGRlIGxhcyBtYXlvcmVzIGNvbXBhw7HDrWFzIGVzIGRlICQ3Ny4zOCBkw7NsYXJlcy4gVW5hIG11ZXN0cmEgYWxlYXRvcmlhIGRlIDE4IHRyYW5zYWNjaW9uZXMgcmVhbGl6YWRhcyBwb3IgRHJpdmUtYS1MZW1vbiBtb3N0csOzIHVuIGNhcmdvIHRvdGFsIHByb21lZGlvIGRlICQ4Ny42MSwgY29uIHVuYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZGUgbGEgbXVlc3RyYSBkZSAkMTkuNDguIFZlcmlmaXF1ZSBxdWUsIGNvbiB1biBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIGRlIDAuMDI1LCBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBkZSBEcml2ZS1hLSBMZW1vbiBlcyBtw6FzIGFsdG8gcXVlIGVsIGRlIGxhcyBncmFuZGVzIGNvbXBhw7HDrWFzLiDCv0luZGljYSBlc3RlIHJlc3VsdGFkbyBxdWUgbGFzIHRhcmlmYXMgZGUgRHJpdmUtIGEtTGVtb24sIG5vIHNvbiBtw6FzIGJhamFzIHF1ZSBsYXMgZGUgbGFzIGdyYW5kZXMgY2FkZW5hcyBuYWNpb25hbGVzPyBKdXN0aWZpcXVlIHN1IHJlc3B1ZXN0YS4KCiMjIFJlc3B1ZXN0YToKIyMjIFBhc28gMS4gUGxhbnRlYXIgSGlww7N0ZXNpcwojIyMjIEgwOiA9IFggYmFyCiMjIyMgSDE6ID0gWCBiYXIKCiMjIyBQYXNvIDIuIE5pdmVsIGRlIFNpZ25maWNpYW5jaWEgeSBHcmFkb3MgZGUgTGliZXJ0YWQKIyMjIyDOsSA9IDAuMDI1IHwgzrMgPSAyNQoKIyMjIFBhc28gMy4gWm9uYSBkZSBBY2VwdGFjacOzbi9SZWNoYXpvCiMjIyMgdCBkZSB0YWJsYSA9IDIuMTEwCgojIyMgUGFzbyA0LiBGdW5jacOzbgpgYGB7cn0KdCA8LSAoODcuNjEtNzcuMzgpLygxOS40OC9zcXJ0KDE4KSkKdApgYGAKIyMjIFBhc28gNS4gQ29uY2x1c2nDs24KIyMjIyMgU2UgcmVjaGF6YSBIMC4gdCA9IDIuMjI4ICh4IAcgODcuNjEpLCB0VSAHIDIuMTEwICh4VSAHIDg3LjA3KSwgZGUgbW9kbyBxdWUgc2UgcmVjaGF6YSBsYSBoaXDDs3Rlc2lzIG51bGEuIFNpbiBlbWJhcmdvLCBzaSBEcml2ZS1hLUxlbW9uIG5vIHRpZW5lIGxhIG1pc21hIHByZXNlbmNpYSBhIG5pdmVsIG5hY2lvbmFsIHF1ZSBsYXMgcHJpbmNpcGFsZXMgY2FkZW5hcyBkZWwgcGHDrXMsIGVudG9uY2VzIHVuYSBjb21wYXJhY2nDs24gZGUgc3VzIHRhc2FzIHByb21lZGlvIGNvbiBlbCBwcm9tZWRpbyBuYWNpb25hbCBkZSBsYXMgZ3JhbmRlcyBjYWRlbmFzIHB1ZWRlIGNvbmR1Y2lyIGEgdW5hIGNvbmNsdXNpw7NuIGVycsOzbmVhLgoKIVtdKC9Vc2Vycy9nZW5hcm9yb2RyaWd1ZXphbGNhbnRhcmEvRGVza3RvcC9UZWMvRGlhZ25vzIFzdGljbyBwYXJhIGxpzIFuZWFzIGRlIGFjY2lvzIFuL3RhYmxhLWFub3ZhLXNwc3MuanBnKQoKIyA8c3BhbiBzdHlsZT0iY29sb3I6ICM1OENGQjI7Ij4gQU5PVkEgKHQgZGUgc3R1ZGVudCk8L3NwYW4+CiMjIEVqZXJjaWNpb3MgTWV6Y2xhcyB8IEFOT1ZBCmBgYHtyfQojaW5zdGFsbC5wYWNrYWdlcygic3RhdHMiKQpsaWJyYXJ5KHN0YXRzKQojZmlsZS5jaG9vc2UoKQpyZXNpc3RlbmNpYSA8LSByZWFkLmNzdigiL1VzZXJzL2dlbmFyb3JvZHJpZ3VlemFsY2FudGFyYS9EZXNrdG9wL1RlYy9EaWFnbm/MgXN0aWNvIHBhcmEgbGnMgW5lYXMgZGUgYWNjaW/MgW4vQU5PVkEgTWV6Y2xhcy5jc3YiKQpyZXNpc3RlbmNpYSRNZXpjbGEgPC0gYXMuZmFjdG9yKHJlc2lzdGVuY2lhJE1lemNsYSkKcWYoLjk1LGRmMT0zLGRmPTIwKQphbm92YWwgPC0gYW92KFZhbG9yIH4gTWV6Y2xhLCBkYXRhPXJlc2lzdGVuY2lhKQpzdW1tYXJ5KGFub3ZhbCkKCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6ICM1OENGQjI7Ij4gRWplcmNpY2lvcyBHcmFkbyB8IEFOT1ZBICh0IGRlIHN0dWRlbnQpPC9zcGFuPgoKIyMgRWplcmNpY2lvcyBHcmFkbyB8IEFOT1ZBCmBgYHtyfQojZmlsZS5jaG9vc2UoKQptYW5jaGFkbyA8LSByZWFkLmNzdigiL1VzZXJzL2dlbmFyb3JvZHJpZ3VlemFsY2FudGFyYS9EZXNrdG9wL1RlYy9EaWFnbm/MgXN0aWNvIHBhcmEgbGnMgW5lYXMgZGUgYWNjaW/MgW4vQU5PVkEgR3JhZG8uY3N2IikKbWFuY2hhZG8kTWV6Y2xhIDwtIGFzLmZhY3RvcihtYW5jaGFkbyRNYW5jaGFkbykKcWYoLjk5LGRmMT0yLGRmPTEyKQphbm92YWwyIDwtIGFvdihWYWxvciB+IE1lemNsYSwgZGF0YT1tYW5jaGFkbykKc3VtbWFyeShhbm92YWwyKQoKYGBgCgoKIVtdKC9Vc2Vycy9nZW5hcm9yb2RyaWd1ZXphbGNhbnRhcmEvRGVza3RvcC9UZWMvRGlhZ25vzIFzdGljbyBwYXJhIGxpzIFuZWFzIGRlIGFjY2lvzIFuL0xpbmVhcl9yZWdyZXNzaW9uLnN2Zy5wbmcpCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogIzU4Q0ZCMjsiPiBBTk9WQSAodCBkZSBzdHVkZW50KTwvc3Bhbj4KIyMjIEVqZXJjaWNpbyAxIHwgUmVncmVzacOzbiBMaW5lYWwgU2ltcGxlCmBgYHtyfQoKI2luc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQojbGlicmFyeShnZ3Bsb3QyKQp4IDwtIGMoMC4yLDAuNSwxLDIsMykKeSA8LSBjKDgsMTAsMTgsMzUsNjApCnJlZ3Jlc2nDs24gPC0gbG0oeX54KQpzdW1tYXJ5KHJlZ3Jlc2nDs24pCnBsb3QoeCx5LHBjaD0xNixjZXg9MS4zLGNvbD0iY3lhbiIsbWFpbj0iRWplcmNpY2lvIDEiKQphYmxpbmUobG0oeX54KSkKcGxvdChyZWdyZXNpw7NuKQoKeDIgPC0gYygtNiwtMywwLDMsNiw5LDEyLDE1LDIwLDI1KQp5MiA8LSBjKDIsMi44LDMuOSw0LjIsNS44LDYuMiw3LjUsOC4yLDkuMywxMC45KQpyZWdyZXNpw7NuMiA8LSBsbSh5Mn54MikKc3VtbWFyeShyZWdyZXNpw7NuMikKcGxvdCh4Mix5MixwY2g9MTYsY2V4PTEuMyxjb2w9ImN5YW4iLG1haW49IkVqZXJjaWNpbyAyIikKYWJsaW5lKGxtKHkyfngyKSkKcGxvdChyZWdyZXNpw7NuMikKYGBgCiFbXSgvVXNlcnMvZ2VuYXJvcm9kcmlndWV6YWxjYW50YXJhL0Rlc2t0b3AvVGVjL0RpYWdub8yBc3RpY28gcGFyYSBsacyBbmVhcyBkZSBhY2Npb8yBbi9Lb3JkYXRhLXNvZnR3YXJlLWFkbWluaXN0cmF0aXZvLXByb21vY2lvbmVzLXZlbnRhcy0wLnBuZykKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiAjNThDRkIyOyI+ICoqMTEtMjYqKiAodCBkZSBzdHVkZW50KTwvc3Bhbj4KRW4gdW4gZXN0dWRpbyBzZSBjb21wYXJhcm9uIGxvcyBlZmVjdG9zIGRlIGN1YXRybyBwcm9tb2Npb25lcyBtZW5zdWFsZXMgc29icmUgbGFzIHZlbnRhcy4gQSBjb250aW51YWNpw7NuLCBwcmVzZW50YW1vcyBsYXMgdmVudGFzIHVuaXRhcmlhcyBkZSA1IHRpZW5kYXMgcXVlIHV0aWxpemFyb24gbGFzIDQgcHJvbW9jaW9uZXMgZW4gbWVzZXMgZGlmZXJlbnRlczoKCiMjIyBNYXJjYQpBIHwgQiB8IEMgfCBEIHwgRQo6LS0tOiB8IDotLS06IHwgOi0tLTogfCA6LS0tOiB8IDotLS06IHwKIDQuNCB8IDUuOCB8IDQuOCB8IDIuOSB8IDQuNgogNC42IHwgNS4yIHwgNS45IHwgMi43IHwgNC4zCiA0LjUgfCA0LjkgfCA0LjkgfCAyLjkgfCAzLjgKIDQuMSB8IDQuNyB8IDQuNiB8IDMuOSB8IDUuMgogMy44IHwgNC42IHwgNC4zIHwgNC4zIHwgNC40CgphKSBDYWxjdWxlIGVsIG7Dum1lcm8gbWVkaW8gZGUgaG9yYXMgZGUgYWxpdmlvIHBhcmEgY2FkYSBtYXJjYSB5IGRldGVybWluZSBsYSBncmFuIG1lZGlhLgpgYGB7cn0KIyBhKQphbnRpYWNpZG9zIDwtIHJlYWQuY3N2KCIvVXNlcnMvZ2VuYXJvcm9kcmlndWV6YWxjYW50YXJhL0Rlc2t0b3AvVGVjL0RpYWdub8yBc3RpY28gcGFyYSBsacyBbmVhcyBkZSBhY2Npb8yBbi9hbnRpYWNpZG9zLmNzdiIpCmFudGlhY2lkb3MkbWFyY2EgPC0gYXMuZmFjdG9yKGFudGlhY2lkb3MkbWFyY2EpCnFmKC45NSxkZjEgPSA0LGRmMiA9IDIwKQphbm92YWFjaWRvIDwtIGFvdihob3JhcyB+IG1hcmNhLCBkYXRhPWFudGlhY2lkb3MpCnN1bW1hcnkoYW5vdmFhY2lkbykKIyBGID0gNy42NSwgRnUgPSAyLjg3LCBkZSBmb3JtYSBxdWUgcmVjaGF6YW1vcyBIMC4KIyBMYXMgbWFyY2FzIHByb2R1Y2VuIHVuYSBjYW50aWRhZCBkZSBhbGl2aW8gc2lnbmlmaWNhdGl2YW1lbnRlIAojIExhcyBtYXJjYXMgQS1FIHRpZW5lbiBtZWRpYXMgNC4yOCwgNS4wNCwgNC45MCwgMy4zNCB5IDQuNDYuIExhIGdyYW4gbWVkaWEgZXMgNC40MDQuCmBgYAoKIVtdKC9Vc2Vycy9nZW5hcm9yb2RyaWd1ZXphbGNhbnRhcmEvRGVza3RvcC9UZWMvRGlhZ25vzIFzdGljbyBwYXJhIGxpzIFuZWFzIGRlIGFjY2lvzIFuL1BSRVZJRVctNTUxLmpwZykKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiAjNThDRkIyOyI+ICoqMTEtMzgqKiAodCBkZSBzdHVkZW50KTwvc3Bhbj4KRW4gbGEgY2l1ZGFkIGRlIEJpZ3ZpbGxlLCB1bmEgY2FkZW5hIGRlIGNvbWlkYSByw6FwaWRhIGVzdMOhIGFkcXVpcmllbmRvIHVuYSBtYWxhIHJlcHV0YWNpw7NuIGRlYmlkbyBhIHF1ZSB0YXJkYW4gbXVjaG8gZW4gc2VydmlyIGEgbG9zIGNsaWVudGVzLiBDb21vIGxhIGNhZGVuYSB0aWVuZSBjdWF0cm8gcmVzdGF1cmFudGVzIGVuIGVzYSBjaXVkYWQsIHF1aWVyZSBzYWJlciBzaSBsb3MgY3VhdHJvIHJlc3RhdXJhbnRlcyB0aWVuZW4gZWwgbWlzbW8gdGllbXBvIHByb21lZGlvIGRlIHNlcnZpY2lvLiBVbm8gZGUgbG9zIGR1ZcOxb3MgZGUgbGEgY2FkZW5hIGhhIGRlY2lkaWRvIHZpc2l0YXIgY2FkYSBsb2NhbCB5IHJlZ2lzdHJhciBlbCB0aWVtcG8gZGUgc2VydmljaW8gcGFyYSA1IGNsaWVudGVzIGVzY29naWRvcyBhbCBhemFyLiBFbiBzdXMgY3VhdHJvIHZpc2l0YXMgYWwgbWVkaW8gZMOtYSByZWdpc3Ryw7MgbG9zIHNpZ3VpZW50ZXMgdGllbXBvcyBkZSBzZXJ2aWNpbyBlbiBtaW51dG9zOgoKUmVzdGF1cmFudGUgfCAgfCAgfCAgIHwgCjotLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IApSZXN0YXVyYW50ZSAxCXwgMyB8IDQgfCA1LjUgfCAzLjUgfCA0ClJlc3RhdXJhbnRlIDIgfAkzIHwgMy41IHwgNC41IHwgNCB8IDUuNQpSZXN0YXVyYW50ZSAzIHwJMiB8IDMuNSB8IDUgfCA2LjUgfCA2ClJlc3RhdXJhbnRlIDQgfAkzIHwgNCB8IDUuNSB8IDIuNSB8IDMKCmEpIFV0aWxpY2UgdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBkZSAwLjA1LCDCv3RvZG9zIGxvcyByZXN0YXVyYW50ZXMgdGllbmVuIGVsIG1pc21vIHRpZW1wbyBtZWRpbyBkZSBzZXJ2aWNpbz8KCmIpIFNlZ8O6biBzdXMgcmVzdWx0YWRvcywgwr9kZWJlcsOhIGVsIGR1ZcOxbyBoYWNlciBhbGd1bmFzIHJlY29tZW5kYWNpb25lcyBhIGN1YWxxdWllcmEgZGUgbG9zIGFkbWluaXN0cmFkb3JlcyBkZSBsb3MgcmVzdGF1cmFudGVzPwoKYGBge3J9CnJlc3RhdXJhbnRlIDwtIHJlYWQuY3N2KCIvVXNlcnMvZ2VuYXJvcm9kcmlndWV6YWxjYW50YXJhL0Rlc2t0b3AvVGVjL0RpYWdub8yBc3RpY28gcGFyYSBsacyBbmVhcyBkZSBhY2Npb8yBbi9yZXN0YXVyYW50ZS5jc3YiKQpyZXN0YXVyYW50ZSRyZXN0YXVyYW50ZSA8LSBhcy5mYWN0b3IocmVzdGF1cmFudGUkcmVzdGF1cmFudGUpCnFmKC45NSwgZGYxID0gMywgZGYyID0gMTYpCmFub3ZhcmVzdGF1cmFudGUgPC0gYW92KHRpZW1wbyB+IHJlc3RhdXJhbnRlLCBkYXRhPXJlc3RhdXJhbnRlKQpzdW1tYXJ5KGFub3ZhcmVzdGF1cmFudGUpCiMgTm8gcmVjaGF6YW1vcyBIMC4KIyBMb3MgdGllbXBvcyBtZWRpb3MgZGUgc2VydmljaW8gbm8gc29uIHNpZ25pZmljYXRpdmFtZW50ZSBkaWZlcmVudGVzLgojIEYgByAwLjUxLCBGdSAHIDMuMjQsIG5vIHJlY2hhemFtb3MgSDAuIExvcyB0aWVtcG9zIG1lZGlvcyBkZSBzZXJ2aWNpbyBubyBzb24gc2lnbmlmaWNhdGl2YW1lbnRlIGRpZmVyZW50ZXMuCgojIGIpIAojIERlYmlkbyBhIHF1ZSBuaW5nw7puIHJlc3RhdXJhbnRlIGVzIHBlb3IgcXVlIGxvcyBvdHJvcywgY3VhbHF1aWVyIHJlY29tZW5kYWNpw7NuIHRlbmRyw61hIHF1ZSBoYWNlcnNlIGEgdG9kb3MgbG9zIGFkbWluaXN0cmFkb3JlcwpgYGAKIVtdKC9Vc2Vycy9nZW5hcm9yb2RyaWd1ZXphbGNhbnRhcmEvRGVza3RvcC9UZWMvRGlhZ25vzIFzdGljbyBwYXJhIGxpzIFuZWFzIGRlIGFjY2lvzIFuL2Rvd25sb2FkLmpwZykKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiAjNThDRkIyOyI+ICoqMTItNjQqKiAodCBkZSBzdHVkZW50KTwvc3Bhbj4KVW4gYXJyZW5kYWRvciBlc3TDoSBpbnRlcmVzYWRvIGVuIHZlciBzaSBsYXMgcmVudGFzIGRlIHN1cyBkZXBhcnRhbWVudG9zIHNvbiBsYXMgY29tdW5lcy4gUGFyYSBlc3RvIHRvbcOzIHVuYSBtdWVzdHJhIGFsZWF0b3JpYSBkZSAxMSByZW50YXMgeSB0YW1hw7FvcyBkZSBkZXBhcnRhbWVudG9zIGVuIGNvbXBsZWpvcyBkZSBkZXBhcnRhbWVudG9zIHNpbWlsYXJlcy4KTG9zIGRhdG9zIHNvbiBsb3Mgc2lndWllbnRlczoKClJlbnRhIHwgMjMwIHwgMTkwIHwgNDUwIHwgMzEwIHwgMjE4IHwgMTg1IHwgMzQwIHwgMjQ1IHwgMTI1IHwgMzUwIHwgMjgwCi0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tOiB8Oi0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfDotLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHw6LS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tOiB8Oi0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfDotLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHw6LS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tOgpOw7ptZXJvIGRlIHJlY8OhbWFyYXMgfCAyIHwgMSB8IDMgfCAyIHwgMiB8IDIgfCAyIHwgMSB8IDEgfCAyIHwgMgoKYSkgRGVzYXJyb2xsZSBsYSBlY3VhY2nDs24gZGUgZXN0aW1hY2nDs24gcXVlIG1lam9yIGRlc2NyaWJhIGVzdG9zIGRhdG9zLgpiKSBDYWxjdWxlIGVsIGNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuLgpjKSBQcm9ub3N0aXF1ZSBsYSByZW50YSBwYXJhIHVuIGRlcGFydGFtZW50byBkZSBkb3MgcmVjw6FtYXJhcy4KCmBgYHtyfQojIGEpCnJlbnRhIDwtICBjKDIzMCwxOTAsNDUwLDMxMCwyMTgsMTg1LDM0MCwyNDUsMTI1LDM1MCwyODApCnJlY2FtYXJhcyA8LSBjKDIsMSwzLDIsMiwyLDIsMSwxLDIsMikKCnJlZ3Jlc2nDs25yZW50YSA8LSBsbShyZW50YSB+IHJlY2FtYXJhcykKc3VtbWFyeShyZWdyZXNpw7NucmVudGEpCgojIFJlbnRhID0gNTUuMDAgKyAxMTUuOTAgKiBSZWPDoW1hcmFzCgojIGIpCiMgcjIgPSAwLjU3NjIKCiMgYykKcmVjYW1hcmFzMSA8LSAyCnJlbnRhMSA8LSA1NSsxMTUuOTAqcmVjYW1hcmFzMQpyZW50YTEKIyAkMjg2LjgKCmBgYAoK