Ejercicios del mundo real:
3-84 ¿Qué reacción tendría usted si un aficionado al fútbol americano
le dijera lo siguiente? “Los Raiders de Rockland tienen un promedio de
3.6 yardas de recorrido por tierra. Como sólo necesitan 10 yardas para
anotar y tienen cuatro oportunidades para lograrlo, la anotación es
segura, siempre y cuando mantengan su forma de jugar por tierra.”
La afirmación es incorrecta porque ignora completamente la
variabilidad en yardas ganadas por carrera.
3-86 A continuación, se tienen 3 partes del presupuesto de defensa de
un año, a cada una de éstas se le asignó, por parte del Congreso
mexicano, la misma cantidad de financiamiento: Salario de oficiales
(total). Mantenimiento de la flota aérea. Adquisiciones de alimentos
(total).
Salarios de funcionarios: A; mantenimiento de flota: C;
adquisiciones de alimentos: B.
Tomando en cuenta la distribución de posibles resultados para los
gastos reales en cada una de éstas áreas, haga corresponder cada sección
a una de las curvas de la siguiente figura, fundamente su respuesta.
La compañía podría contratar representantes de ventas con menos
experiencia mientras que los vendedores establecidos aumentan a sus
niveles de ventas. Otra posibilidad es que se contraten representantes
de ventas sin experiencia y otros altamente experimentados al mismo
tiempo.
3-92
El 30 de junio de 1992, la capitalización de nueve mercados de
valores del Pacífico y Asia fue:
# Crear un data frame con los datos
datos <- data.frame(
Pais = c("Filipinas", "Indonesia", "Tailandia", "Singapur", "Malasia", "Corea del Sur", "Taiwan", "Hong Kong", "Australia"),
Capitalizacion = c(17, 21, 44, 50, 79, 86, 140, 178, 203)
)
# Instalar y cargar el paquete knitr para utilizar la función kable
library(knitr)
# Utilizar la función kable para crear una tabla
kable(datos, caption = "Capitalización de países (en miles de millones de dólares)")
Capitalización de países (en miles de millones de
dólares)
| Filipinas |
17 |
| Indonesia |
21 |
| Tailandia |
44 |
| Singapur |
50 |
| Malasia |
79 |
| Corea del Sur |
86 |
| Taiwan |
140 |
| Hong Kong |
178 |
| Australia |
203 |
Ejercicios del mundo real
# Crear un data frame con los datos
datos <- data.frame(
Pais = c("Filipinas", "Indonesia", "Tailandia", "Singapur", "Malasia", "Corea del Sur", "Taiwan", "Hong Kong", "Australia"),
Capitalizacion = c(17, 21, 44, 50, 79, 86, 140, 178, 203)
)
# a)
media <- mean(datos$Capitalizacion)
cat("a) La media de la capitalización es:", media, "\n")
## a) La media de la capitalización es: 90.88889
# b)
maximo <- max(datos$Capitalizacion)
cat("b) El valor máximo de la capitalización es:", maximo, "\n")
## b) El valor máximo de la capitalización es: 203
# c)
moda <- unique(datos$Capitalizacion[duplicated(datos$Capitalizacion)])
if (length(moda) == 0) {
cat("c) No hay moda para datos sin agrupar.\n")
} else {
cat("c) La moda de la capitalización es:", moda, "\n")
}
## c) No hay moda para datos sin agrupar.
# d)
mediana <- median(datos$Capitalizacion)
cat("d) La mediana de la capitalización es:", mediana, "\n")
## d) La mediana de la capitalización es: 79
# e)
desviacion_estandar <- sd(datos$Capitalizacion)
cat("e) La desviación estándar de la capitalización es:", desviacion_estandar, "\n")
## e) La desviación estándar de la capitalización es: 67.96036
# Histograma:
hist(datos$Capitalizacion,
main = "Histograma de la Capitalización",
xlab = "Capitalización (en miles de millones de dólares)",
col = "Green",
border = "black")

3-100
Matthews, Young y Asociados, una agencia de consultorías de Chapell
Hill, tiene los siguientes registros que indican el número de días que
cada uno de sus 10 consultores de planta cobró el último año:
212 220 230 210 228 229 231 219 221 222
a) Sin calcular el valor de las medidas, ¿cuál de ellas cree usted
que le daría una mayor
La desviación estándar proporciona más información sobre la
distribución de los datos que el rango, ya que tiene en cuenta la
variabilidad de todos los datos y no solo la diferencia entre el valor
máximo y mínimo.
b) Calcule: Rango, Varianza y Desviación Estándar.
datos <- c(212, 220, 230, 210, 228, 229, 231, 219, 221, 222)
rango <- max(datos) - min(datos)
varianza <- var(datos)
desviacion_estandar <- sd(datos)
cat("b) El rango es:", rango,
", la varianza es:", varianza,
", y la desviación estándar es:", desviacion_estandar, "\n")
## b) El rango es: 21 , la varianza es: 54.17778 , y la desviación estándar es: 7.360556
c) Tomando en cuenta la dificultad y el tiempo para calcular cada
medida que revisó en el
inciso a), ¿cuál sugeriría como la mejor?
d) ¿Qué haría que usted cambiara su opinión al respecto?
omo los datos tienen una dispersión bastante pareja, el alcance es
una medida razonable de la variabilidad.
###3-106
Allison Barett realiza análisis estadísticos para un equipo de
carreras automovilísticas. A
A continuación, se presentan las cifras en kilómetros por litro del
gasto de combustible de sus automóviles en las carreras recientes:
4.77 6.11 6.11 5.05 5.99 4.91 5.27 6.01 5.75 4.89 6.05 5.22 6.02 5.24
6.11 5.02
# Datos de kilómetros por litro del gasto de combustible
km_por_litro <- c(4.77, 6.11, 6.11, 5.05, 5.99, 4.91, 5.27, 6.01,
5.75, 4.89, 6.05, 5.22, 6.02, 5.24, 6.11, 5.02)
# Crear una tabla con los datos
tabla <- data.frame(km_por_litro)
# Mostrar la tabla
tabla
## km_por_litro
## 1 4.77
## 2 6.11
## 3 6.11
## 4 5.05
## 5 5.99
## 6 4.91
## 7 5.27
## 8 6.01
## 9 5.75
## 10 4.89
## 11 6.05
## 12 5.22
## 13 6.02
## 14 5.24
## 15 6.11
## 16 5.02
Incisos a-f
# Datos de kilómetros por litro del gasto de combustible
km_por_litro <- c(4.77, 6.11, 6.11, 5.05, 5.99, 4.91, 5.27, 6.01,
5.75, 4.89, 6.05, 5.22, 6.02, 5.24, 6.11, 5.02)
# a) Cálculo de la mediana
mediana <- median(km_por_litro)
mediana
## [1] 5.51
# b) Cálculo de la media
media <- mean(km_por_litro)
media
## [1] 5.5325
# c) Agrupar los datos en 5 clases de igual tamaño
histograma <- hist(km_por_litro, breaks = 5)

histograma
## $breaks
## [1] 4.6 4.8 5.0 5.2 5.4 5.6 5.8 6.0 6.2
##
## $counts
## [1] 1 2 2 3 0 1 1 6
##
## $density
## [1] 0.3125 0.6250 0.6250 0.9375 0.0000 0.3125 0.3125 1.8750
##
## $mids
## [1] 4.7 4.9 5.1 5.3 5.5 5.7 5.9 6.1
##
## $xname
## [1] "km_por_litro"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
# Intervalo del valor de consumo de combustible para la clase modal
intervalo_modal <- histograma$mids[which.max(histograma$counts)]
intervalo_modal
## [1] 6.1
# d) La mediana puede ser una mejor medida para servirle a Allison cuando haga un pedido de combustible ya que es menos sensible a valores extremos.
# e) Cálculo del rango
rango <- max(km_por_litro) - min(km_por_litro)
rango
## [1] 1.34
# f) Cálculo de la varianza
varianza <- var(km_por_litro)
varianza
## [1] 0.27466
# g) Cálculo de la desviación estándar
desviacion_estandar <- sd(km_por_litro)
desviacion_estandar
## [1] 0.5240801
# Conclusión: Las medidas de dispersión indican que hay cierta variabilidad en el consumo de combustible de los automóviles en las carreras recientes.
Capítulo 8: Prueba de hipótesis de una sola muestra.
Paso 1: Plantear la hipótesis nula y la hipótesis alternativa de la
prueba de hipótesis1.
H0: x̄ = µ
H1: x ≠ µ
Paso 2: Establecer el nivel de significación alfa (α) deseado1.
Paso 3: Calcular el estadístico de la prueba de hipótesis1.
Paso 4: Determinar los valores críticos de la prueba de hipótesis
para averiguar la región de rechazo y la región de aceptación de la
prueba de hipótesis1.
Paso 5: Tomar la decisión si se debe aceptar o rechazar la hipótesis
nula2.
####8-64
Inspectores del gobierno, al investigar los cargos levantados contra
una embotelladora de bebidas no alcohólicas, de Texas, que no llenaba
adecuadamente sus productos, han muestreado 200 botellas y encontraron
que el promedio de llenado es de 31.7 onzas líquidas (aproximadamente
930 ml.) Se anuncia que las botellas contienen 32 onzas líquidas (946.33
ml.). Se sabe que la desviación estándar de la población es de 1.5 onzas
líquidas (44.36 ml.). ¿Deberían concluir los inspectores, al nivel de
significancia de 2%, que las botellas están siendo llenadas con menos
contenido, y emitir una sanción?
n <- 200
media_muestral <- 31.7
media_poblacional <- 32
desviacion_estandar_poblacional <- 1.5
nivel_significancia <- 0.02
# Cálculo del estadístico de prueba
z <- (media_muestral - media_poblacional) / (desviacion_estandar_poblacional / sqrt(n))
# Cálculo del valor p
valor_p <- pnorm(z)
# Conclusión
if (valor_p < nivel_significancia) {
print("Los inspectores deberían concluir que las botellas están siendo llenadas con menos contenido y emitir una sanción.")
} else {
print("Los inspectores no tienen suficiente evidencia para concluir que las botellas están siendo llenadas con menos contenido.")
}
## [1] "Los inspectores deberían concluir que las botellas están siendo llenadas con menos contenido y emitir una sanción."
Gráfica:
# Datos del problema
n <- 200
media_muestral <- 31.7
media_poblacional <- 32
desviacion_estandar_poblacional <- 1.5
nivel_significancia <- 0.02
# Cálculo del estadístico de prueba
z <- (media_muestral - media_poblacional) / (desviacion_estandar_poblacional / sqrt(n))
# Cálculo del valor crítico
z_critico <- qnorm(nivel_significancia)
# Crear una gráfica de significancia
x <- seq(-4, 4, length = 1000)
y <- dnorm(x)
plot(x, y, type = "l", xlab = "z", ylab = "Densidad de probabilidad")
abline(v = z_critico, col = "red")
polygon(c(z_critico, x[x <= z_critico], min(x)), c(0, y[x <= z_critico], 0), col = "red")

LS0tDQp0aXRsZTogIldvcmtzaG9wIDEiDQphdXRob3I6ICJMdWlzIEZlbGlwZSBGcmFuY28gUm9kcsOtZ3VleiINCmRhdGU6ICIyMDIzLTA1LTE1Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCi0tLQ0KDQpzZXNpw7NuIDE6DQoNCmBgYHtyfQ0KcmVjaWJvcyA8LSBjKDI2Ni42MywxNjMuNDEsMjE5LjQxLDE2Mi42NCwxODcuMTYsMjg5LjE3LDMwNi41NSwzMzUuNDgsMzQzLjUwLDIyNi44MCwyMDguOTksMjMwLjQ2KQ0KDQptZWRpYSA8LSBtZWFuKHJlY2lib3MpDQptZWRpYQ0KDQptZWRpYW5hIDwtIG1lZGlhbihyZWNpYm9zKQ0KbWVkaWFuYQ0KDQpyYW5nbyA8LSBtYXgocmVjaWJvcyktbWluKHJlY2lib3MpDQpyYW5nbw0KDQp2YXJpYW56YSA8LSB2YXIocmVjaWJvcykNCnZhcmlhbnphDQpgYGANCkPDoWxjdWxvIHZhcmlhbnphDQpgYGB7cn0NCnJlY2lib3MxIDwtIHJlY2lib3MtbWVkaWENCnJlY2lib3MxDQoNCnJlY2lib3MyIDwtcmVjaWJvczEqcmVjaWJvczENCnJlY2lib3MyDQoNCg0KYGBgDQoNClNlc2nDs24gMjoNCmBgYHtyfQ0KIyBFamVtcGxvIDENCg0KI2ENCg0KYSA8LSBwbm9ybSg2MDAsMTMwMCw2MDApDQphDQojYg0KDQpiIDwtIChwbm9ybSgxNTAwLDEzMDAsNjAwKSAtIHBub3JtKDEwMDAsMTMwMCw2MDApKSoxMDANCmINCiMgYw0KYyA8LSAoMSAtIHBub3JtKDIyMDAsMTMwMCw2MDApKSoxMDANCmMNCmBgYA0KDQojIyMjIFNlc2nDs24gMzogDQoNClBhc28gMTogUGxhbnRlYXIgbGEgaGlww7N0ZXNpcyBudWxhIHkgbGEgaGlww7N0ZXNpcyBhbHRlcm5hdGl2YSBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpczEuDQoNClBhc28gMjogRXN0YWJsZWNlciBlbCBuaXZlbCBkZSBzaWduaWZpY2FjacOzbiBhbGZhICjOsSkgZGVzZWFkbzEuDQoNClBhc28gMzogQ2FsY3VsYXIgZWwgZXN0YWTDrXN0aWNvIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA0OiBEZXRlcm1pbmFyIGxvcyB2YWxvcmVzIGNyw610aWNvcyBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpcyBwYXJhIGF2ZXJpZ3VhciBsYSByZWdpw7NuIGRlIHJlY2hhem8geSBsYSByZWdpw7NuIGRlIGFjZXB0YWNpw7NuIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA1OiBUb21hciBsYSBkZWNpc2nDs24gc2kgc2UgZGViZSBhY2VwdGFyIG8gcmVjaGF6YXIgbGEgaGlww7N0ZXNpcyBudWxhMi4gDQoNCiMjIEVqZXJjaWNpb3MgZGVsIG11bmRvIHJlYWw6DQoNCjMtODQNCsK/UXXDqSByZWFjY2nDs24gdGVuZHLDrWEgdXN0ZWQgc2kgdW4gYWZpY2lvbmFkbyBhbCBmw7p0Ym9sIGFtZXJpY2FubyBsZSBkaWplcmEgbG8gc2lndWllbnRlPyDigJxMb3MgUmFpZGVycw0KZGUgUm9ja2xhbmQgdGllbmVuIHVuIHByb21lZGlvIGRlIDMuNiB5YXJkYXMgZGUgcmVjb3JyaWRvIHBvciB0aWVycmEuIENvbW8gc8OzbG8gbmVjZXNpdGFuIDEwIHlhcmRhcyBwYXJhIGFub3RhciB5IHRpZW5lbiBjdWF0cm8gb3BvcnR1bmlkYWRlcyBwYXJhIGxvZ3JhcmxvLCBsYSBhbm90YWNpw7NuIGVzIHNlZ3VyYSwgc2llbXByZSB5DQpjdWFuZG8gbWFudGVuZ2FuIHN1IGZvcm1hIGRlIGp1Z2FyIHBvciB0aWVycmEu4oCdDQoNCiMjIyMjIExhIGFmaXJtYWNpw7NuIGVzIGluY29ycmVjdGEgcG9ycXVlIGlnbm9yYSBjb21wbGV0YW1lbnRlIGxhIHZhcmlhYmlsaWRhZCBlbiB5YXJkYXMgZ2FuYWRhcyBwb3IgY2FycmVyYS4NCg0KMy04Ng0KQSBjb250aW51YWNpw7NuLCBzZSB0aWVuZW4gMyBwYXJ0ZXMgZGVsIHByZXN1cHVlc3RvIGRlIGRlZmVuc2EgZGUgdW4gYcOxbywgYSBjYWRhIHVuYSBkZSDDqXN0YXMgc2UgbGUNCmFzaWduw7MsIHBvciBwYXJ0ZSBkZWwgQ29uZ3Jlc28gbWV4aWNhbm8sIGxhIG1pc21hIGNhbnRpZGFkIGRlIGZpbmFuY2lhbWllbnRvOg0K74K3IFNhbGFyaW8gZGUgb2ZpY2lhbGVzICh0b3RhbCkuDQrvgrcgTWFudGVuaW1pZW50byBkZSBsYSBmbG90YSBhw6lyZWEuDQrvgrcgQWRxdWlzaWNpb25lcyBkZSBhbGltZW50b3MgKHRvdGFsKS4NCg0KIyMjIyMgU2FsYXJpb3MgZGUgZnVuY2lvbmFyaW9zOiBBOyBtYW50ZW5pbWllbnRvIGRlIGZsb3RhOiBDOyBhZHF1aXNpY2lvbmVzIGRlIGFsaW1lbnRvczogQi4NCg0KVG9tYW5kbyBlbiBjdWVudGEgbGEgZGlzdHJpYnVjacOzbiBkZSBwb3NpYmxlcyByZXN1bHRhZG9zIHBhcmEgbG9zIGdhc3RvcyByZWFsZXMgZW4gY2FkYSB1bmEgZGUNCsOpc3RhcyDDoXJlYXMsIGhhZ2EgY29ycmVzcG9uZGVyIGNhZGEgc2VjY2nDs24gYSB1bmEgZGUgbGFzIGN1cnZhcyBkZSBsYSBzaWd1aWVudGUgZmlndXJhLCBmdW5kYW1lbnRlDQpzdSByZXNwdWVzdGEuDQoNCiMjIyMjIExhIGNvbXBhw7HDrWEgcG9kcsOtYSBjb250cmF0YXIgcmVwcmVzZW50YW50ZXMgZGUgdmVudGFzIGNvbiBtZW5vcyBleHBlcmllbmNpYSBtaWVudHJhcyBxdWUgbG9zIHZlbmRlZG9yZXMgZXN0YWJsZWNpZG9zIGF1bWVudGFuIGEgc3VzIG5pdmVsZXMgZGUgdmVudGFzLiBPdHJhIHBvc2liaWxpZGFkIGVzIHF1ZSBzZSBjb250cmF0ZW4gcmVwcmVzZW50YW50ZXMgZGUgdmVudGFzIHNpbiBleHBlcmllbmNpYSB5IG90cm9zIGFsdGFtZW50ZSBleHBlcmltZW50YWRvcyBhbCBtaXNtbyB0aWVtcG8uDQoNCg0KMy05Mg0KDQpFbCAzMCBkZSBqdW5pbyBkZSAxOTkyLCBsYSBjYXBpdGFsaXphY2nDs24gZGUgbnVldmUgbWVyY2Fkb3MgZGUgdmFsb3JlcyBkZWwgUGFjw61maWNvIHkgQXNpYSBmdWU6DQoNCmBgYHtyfQ0KIyBDcmVhciB1biBkYXRhIGZyYW1lIGNvbiBsb3MgZGF0b3MNCmRhdG9zIDwtIGRhdGEuZnJhbWUoDQogIFBhaXMgPSBjKCJGaWxpcGluYXMiLCAiSW5kb25lc2lhIiwgIlRhaWxhbmRpYSIsICJTaW5nYXB1ciIsICJNYWxhc2lhIiwgIkNvcmVhIGRlbCBTdXIiLCAiVGFpd2FuIiwgIkhvbmcgS29uZyIsICJBdXN0cmFsaWEiKSwNCiAgQ2FwaXRhbGl6YWNpb24gPSBjKDE3LCAyMSwgNDQsIDUwLCA3OSwgODYsIDE0MCwgMTc4LCAyMDMpDQopDQoNCiMgSW5zdGFsYXIgeSBjYXJnYXIgZWwgcGFxdWV0ZSBrbml0ciBwYXJhIHV0aWxpemFyIGxhIGZ1bmNpw7NuIGthYmxlDQpsaWJyYXJ5KGtuaXRyKQ0KDQojIFV0aWxpemFyIGxhIGZ1bmNpw7NuIGthYmxlIHBhcmEgY3JlYXIgdW5hIHRhYmxhDQprYWJsZShkYXRvcywgY2FwdGlvbiA9ICJDYXBpdGFsaXphY2nDs24gZGUgcGHDrXNlcyAoZW4gbWlsZXMgZGUgbWlsbG9uZXMgZGUgZMOzbGFyZXMpIikNCmBgYA0KDQoNCkVqZXJjaWNpb3MgZGVsIG11bmRvIHJlYWwNCg0KYGBge3J9DQojIENyZWFyIHVuIGRhdGEgZnJhbWUgY29uIGxvcyBkYXRvcw0KZGF0b3MgPC0gZGF0YS5mcmFtZSgNCiAgUGFpcyA9IGMoIkZpbGlwaW5hcyIsICJJbmRvbmVzaWEiLCAiVGFpbGFuZGlhIiwgIlNpbmdhcHVyIiwgIk1hbGFzaWEiLCAiQ29yZWEgZGVsIFN1ciIsICJUYWl3YW4iLCAiSG9uZyBLb25nIiwgIkF1c3RyYWxpYSIpLA0KICBDYXBpdGFsaXphY2lvbiA9IGMoMTcsIDIxLCA0NCwgNTAsIDc5LCA4NiwgMTQwLCAxNzgsIDIwMykNCikNCg0KIyBhKSANCm1lZGlhIDwtIG1lYW4oZGF0b3MkQ2FwaXRhbGl6YWNpb24pDQpjYXQoImEpIExhIG1lZGlhIGRlIGxhIGNhcGl0YWxpemFjacOzbiBlczoiLCBtZWRpYSwgIlxuIikNCg0KIyBiKQ0KbWF4aW1vIDwtIG1heChkYXRvcyRDYXBpdGFsaXphY2lvbikNCmNhdCgiYikgRWwgdmFsb3IgbcOheGltbyBkZSBsYSBjYXBpdGFsaXphY2nDs24gZXM6IiwgbWF4aW1vLCAiXG4iKQ0KDQojIGMpDQptb2RhIDwtIHVuaXF1ZShkYXRvcyRDYXBpdGFsaXphY2lvbltkdXBsaWNhdGVkKGRhdG9zJENhcGl0YWxpemFjaW9uKV0pDQppZiAobGVuZ3RoKG1vZGEpID09IDApIHsNCiAgY2F0KCJjKSBObyBoYXkgbW9kYSBwYXJhIGRhdG9zIHNpbiBhZ3J1cGFyLlxuIikNCn0gZWxzZSB7DQogIGNhdCgiYykgTGEgbW9kYSBkZSBsYSBjYXBpdGFsaXphY2nDs24gZXM6IiwgbW9kYSwgIlxuIikNCn0NCg0KIyBkKQ0KbWVkaWFuYSA8LSBtZWRpYW4oZGF0b3MkQ2FwaXRhbGl6YWNpb24pDQpjYXQoImQpIExhIG1lZGlhbmEgZGUgbGEgY2FwaXRhbGl6YWNpw7NuIGVzOiIsIG1lZGlhbmEsICJcbiIpDQoNCiMgZSkNCmRlc3ZpYWNpb25fZXN0YW5kYXIgPC0gc2QoZGF0b3MkQ2FwaXRhbGl6YWNpb24pDQpjYXQoImUpIExhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBkZSBsYSBjYXBpdGFsaXphY2nDs24gZXM6IiwgZGVzdmlhY2lvbl9lc3RhbmRhciwgIlxuIikNCg0KIyBIaXN0b2dyYW1hOg0KaGlzdChkYXRvcyRDYXBpdGFsaXphY2lvbiwNCiAgICAgbWFpbiA9ICJIaXN0b2dyYW1hIGRlIGxhIENhcGl0YWxpemFjacOzbiIsDQogICAgIHhsYWIgPSAiQ2FwaXRhbGl6YWNpw7NuIChlbiBtaWxlcyBkZSBtaWxsb25lcyBkZSBkw7NsYXJlcykiLA0KICAgICBjb2wgPSAiR3JlZW4iLA0KICAgICBib3JkZXIgPSAiYmxhY2siKQ0KYGBgDQoNCg0KIyMjIyAzLTEwMA0KDQpNYXR0aGV3cywgWW91bmcgeSBBc29jaWFkb3MsIHVuYSBhZ2VuY2lhIGRlIGNvbnN1bHRvcsOtYXMgZGUgQ2hhcGVsbCBIaWxsLCB0aWVuZSBsb3Mgc2lndWllbnRlcw0KcmVnaXN0cm9zIHF1ZSBpbmRpY2FuIGVsIG7Dum1lcm8gZGUgZMOtYXMgcXVlIGNhZGEgdW5vIGRlIHN1cyAxMCBjb25zdWx0b3JlcyBkZSBwbGFudGEgY29icsOzIGVsIMO6bHRpbW8NCmHDsW86DQoNCjIxMiAyMjAgMjMwIDIxMCAyMjggMjI5IDIzMSAyMTkgMjIxIDIyMg0KDQojIyMjIGEpIFNpbiBjYWxjdWxhciBlbCB2YWxvciBkZSBsYXMgbWVkaWRhcywgwr9jdcOhbCBkZSBlbGxhcyBjcmVlIHVzdGVkIHF1ZSBsZSBkYXLDrWEgdW5hIG1heW9yDQoNCkxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBwcm9wb3JjaW9uYSBtw6FzIGluZm9ybWFjacOzbiBzb2JyZSBsYSBkaXN0cmlidWNpw7NuIGRlIGxvcyBkYXRvcyBxdWUgZWwgcmFuZ28sIHlhIHF1ZSB0aWVuZSBlbiBjdWVudGEgbGEgdmFyaWFiaWxpZGFkIGRlIHRvZG9zIGxvcyBkYXRvcyB5IG5vIHNvbG8gbGEgZGlmZXJlbmNpYSBlbnRyZSBlbCB2YWxvciBtw6F4aW1vIHkgbcOtbmltby4NCg0KIyMjIyBiKSBDYWxjdWxlOiBSYW5nbywgVmFyaWFuemEgeSBEZXN2aWFjacOzbiBFc3TDoW5kYXIuDQpgYGB7cn0NCmRhdG9zIDwtIGMoMjEyLCAyMjAsIDIzMCwgMjEwLCAyMjgsIDIyOSwgMjMxLCAyMTksIDIyMSwgMjIyKQ0KcmFuZ28gPC0gbWF4KGRhdG9zKSAtIG1pbihkYXRvcykNCnZhcmlhbnphIDwtIHZhcihkYXRvcykNCmRlc3ZpYWNpb25fZXN0YW5kYXIgPC0gc2QoZGF0b3MpDQpjYXQoImIpIEVsIHJhbmdvIGVzOiIsIHJhbmdvLA0KICAgICIsIGxhIHZhcmlhbnphIGVzOiIsIHZhcmlhbnphLA0KICAgICIsIHkgbGEgZGVzdmlhY2nDs24gZXN0w6FuZGFyIGVzOiIsIGRlc3ZpYWNpb25fZXN0YW5kYXIsICJcbiIpDQpgYGANCg0KIyMjIyBjKSBUb21hbmRvIGVuIGN1ZW50YSBsYSBkaWZpY3VsdGFkIHkgZWwgdGllbXBvIHBhcmEgY2FsY3VsYXIgY2FkYSBtZWRpZGEgcXVlIHJldmlzw7MgZW4gZWwNCg0KaW5jaXNvIGEpLCDCv2N1w6FsIHN1Z2VyaXLDrWEgY29tbyBsYSBtZWpvcj8NCg0KIyMjIyBkKSDCv1F1w6kgaGFyw61hIHF1ZSB1c3RlZCBjYW1iaWFyYSBzdSBvcGluacOzbiBhbCByZXNwZWN0bz8NCm9tbyBsb3MgZGF0b3MgdGllbmVuIHVuYSBkaXNwZXJzacOzbiBiYXN0YW50ZSBwYXJlamEsIGVsIGFsY2FuY2UgZXMgdW5hIG1lZGlkYSByYXpvbmFibGUgZGUgbGEgdmFyaWECYmlsaWRhZC4NCg0KIyMjMy0xMDYNCg0KIyMjIyBBbGxpc29uIEJhcmV0dCByZWFsaXphIGFuw6FsaXNpcyBlc3RhZMOtc3RpY29zIHBhcmEgdW4gZXF1aXBvIGRlIGNhcnJlcmFzIGF1dG9tb3ZpbMOtc3RpY2FzLiBBDQoNCiMjIyMgQSBjb250aW51YWNpw7NuLCBzZSBwcmVzZW50YW4gbGFzIGNpZnJhcyBlbiBraWzDs21ldHJvcyBwb3IgbGl0cm8gZGVsIGdhc3RvIGRlIGNvbWJ1c3RpYmxlIGRlIHN1cyBhdXRvbcOzdmlsZXMgZW4gbGFzIGNhcnJlcmFzIHJlY2llbnRlczoNCg0KNC43NyA2LjExIDYuMTEgNS4wNSA1Ljk5IDQuOTEgNS4yNyA2LjAxDQo1Ljc1IDQuODkgNi4wNSA1LjIyIDYuMDIgNS4yNCA2LjExIDUuMDINCmBgYHtyfQ0KIyBEYXRvcyBkZSBraWzDs21ldHJvcyBwb3IgbGl0cm8gZGVsIGdhc3RvIGRlIGNvbWJ1c3RpYmxlDQprbV9wb3JfbGl0cm8gPC0gYyg0Ljc3LCA2LjExLCA2LjExLCA1LjA1LCA1Ljk5LCA0LjkxLCA1LjI3LCA2LjAxLA0KICAgICAgICAgICAgICAgICAgNS43NSwgNC44OSwgNi4wNSwgNS4yMiwgNi4wMiwgNS4yNCwgNi4xMSwgNS4wMikNCg0KIyBDcmVhciB1bmEgdGFibGEgY29uIGxvcyBkYXRvcw0KdGFibGEgPC0gZGF0YS5mcmFtZShrbV9wb3JfbGl0cm8pDQoNCiMgTW9zdHJhciBsYSB0YWJsYQ0KdGFibGENCmBgYA0KDQojIyMgSW5jaXNvcyBhLWYNCmBgYHtyfQ0KIyBEYXRvcyBkZSBraWzDs21ldHJvcyBwb3IgbGl0cm8gZGVsIGdhc3RvIGRlIGNvbWJ1c3RpYmxlDQprbV9wb3JfbGl0cm8gPC0gYyg0Ljc3LCA2LjExLCA2LjExLCA1LjA1LCA1Ljk5LCA0LjkxLCA1LjI3LCA2LjAxLA0KICAgICAgICAgICAgICAgICAgNS43NSwgNC44OSwgNi4wNSwgNS4yMiwgNi4wMiwgNS4yNCwgNi4xMSwgNS4wMikNCg0KIyBhKSBDw6FsY3VsbyBkZSBsYSBtZWRpYW5hDQptZWRpYW5hIDwtIG1lZGlhbihrbV9wb3JfbGl0cm8pDQptZWRpYW5hDQoNCiMgYikgQ8OhbGN1bG8gZGUgbGEgbWVkaWENCm1lZGlhIDwtIG1lYW4oa21fcG9yX2xpdHJvKQ0KbWVkaWENCg0KIyBjKSBBZ3J1cGFyIGxvcyBkYXRvcyBlbiA1IGNsYXNlcyBkZSBpZ3VhbCB0YW1hw7FvDQpoaXN0b2dyYW1hIDwtIGhpc3Qoa21fcG9yX2xpdHJvLCBicmVha3MgPSA1KQ0KaGlzdG9ncmFtYQ0KDQojIEludGVydmFsbyBkZWwgdmFsb3IgZGUgY29uc3VtbyBkZSBjb21idXN0aWJsZSBwYXJhIGxhIGNsYXNlIG1vZGFsDQppbnRlcnZhbG9fbW9kYWwgPC0gaGlzdG9ncmFtYSRtaWRzW3doaWNoLm1heChoaXN0b2dyYW1hJGNvdW50cyldDQppbnRlcnZhbG9fbW9kYWwNCg0KIyBkKSBMYSBtZWRpYW5hIHB1ZWRlIHNlciB1bmEgbWVqb3IgbWVkaWRhIHBhcmEgc2VydmlybGUgYSBBbGxpc29uIGN1YW5kbyBoYWdhIHVuIHBlZGlkbyBkZSBjb21idXN0aWJsZSB5YSBxdWUgZXMgbWVub3Mgc2Vuc2libGUgYSB2YWxvcmVzIGV4dHJlbW9zLg0KDQojIGUpIEPDoWxjdWxvIGRlbCByYW5nbw0KcmFuZ28gPC0gbWF4KGttX3Bvcl9saXRybykgLSBtaW4oa21fcG9yX2xpdHJvKQ0KcmFuZ28NCg0KIyBmKSBDw6FsY3VsbyBkZSBsYSB2YXJpYW56YQ0KdmFyaWFuemEgPC0gdmFyKGttX3Bvcl9saXRybykNCnZhcmlhbnphDQoNCiMgZykgQ8OhbGN1bG8gZGUgbGEgZGVzdmlhY2nDs24gZXN0w6FuZGFyDQpkZXN2aWFjaW9uX2VzdGFuZGFyIDwtIHNkKGttX3Bvcl9saXRybykNCmRlc3ZpYWNpb25fZXN0YW5kYXINCg0KIyBDb25jbHVzacOzbjogTGFzIG1lZGlkYXMgZGUgZGlzcGVyc2nDs24gaW5kaWNhbiBxdWUgaGF5IGNpZXJ0YSB2YXJpYWJpbGlkYWQgZW4gZWwgY29uc3VtbyBkZSBjb21idXN0aWJsZSBkZSBsb3MgYXV0b23Ds3ZpbGVzIGVuIGxhcyBjYXJyZXJhcyByZWNpZW50ZXMuDQpgYGANCg0KIyMgQ2Fww610dWxvIDg6IFBydWViYSBkZSBoaXDDs3Rlc2lzIGRlIHVuYSBzb2xhIG11ZXN0cmEuDQoNClBhc28gMTogUGxhbnRlYXIgbGEgaGlww7N0ZXNpcyBudWxhIHkgbGEgaGlww7N0ZXNpcyBhbHRlcm5hdGl2YSBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpczEuDQoNCiMjIyMjIEgwOiB4zIQgPSDCtQ0KIyMjIyMgSDE6IHgg4omgIMK1DQoNClBhc28gMjogRXN0YWJsZWNlciBlbCBuaXZlbCBkZSBzaWduaWZpY2FjacOzbiBhbGZhICjOsSkgZGVzZWFkbzEuDQoNClBhc28gMzogQ2FsY3VsYXIgZWwgZXN0YWTDrXN0aWNvIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA0OiBEZXRlcm1pbmFyIGxvcyB2YWxvcmVzIGNyw610aWNvcyBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpcyBwYXJhIGF2ZXJpZ3VhciBsYSByZWdpw7NuIGRlIHJlY2hhem8geSBsYSByZWdpw7NuIGRlIGFjZXB0YWNpw7NuIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA1OiBUb21hciBsYSBkZWNpc2nDs24gc2kgc2UgZGViZSBhY2VwdGFyIG8gcmVjaGF6YXIgbGEgaGlww7N0ZXNpcyBudWxhMi4gDQoNCg0KIyMjIzgtNjQNCg0KSW5zcGVjdG9yZXMgZGVsIGdvYmllcm5vLCBhbCBpbnZlc3RpZ2FyIGxvcyBjYXJnb3MgbGV2YW50YWRvcyBjb250cmEgdW5hIGVtYm90ZWxsYWRvcmEgZGUgYmViaWRhcyBubyBhbGNvaMOzbGljYXMsIGRlIFRleGFzLCBxdWUgbm8gbGxlbmFiYSBhZGVjdWFkYW1lbnRlIHN1cyBwcm9kdWN0b3MsIGhhbiBtdWVzdHJlYWRvIDIwMCBib3RlbGxhcyB5IGVuY29udHJhcm9uIHF1ZSBlbCBwcm9tZWRpbyBkZSBsbGVuYWRvIGVzIGRlIDMxLjcgb256YXMgbMOtcXVpZGFzIChhcHJveGltYWRhbWVudGUgOTMwIG1sLikgU2UgYW51bmNpYSBxdWUgbGFzIGJvdGVsbGFzIGNvbnRpZW5lbiAzMiBvbnphcyBsw61xdWlkYXMgKDk0Ni4zMyBtbC4pLiBTZSBzYWJlIHF1ZSBsYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZGUgbGEgcG9ibGFjacOzbiBlcyBkZSAxLjUgb256YXMgbMOtcXVpZGFzICg0NC4zNiBtbC4pLiDCv0RlYmVyw61hbiBjb25jbHVpciBsb3MgaW5zcGVjdG9yZXMsIGFsIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMiUsIHF1ZSBsYXMgYm90ZWxsYXMgZXN0w6FuIHNpZW5kbyBsbGVuYWRhcyBjb24gbWVub3MgY29udGVuaWRvLCB5IGVtaXRpciB1bmEgc2FuY2nDs24/DQoNCmBgYHtyfQ0KbiA8LSAyMDANCm1lZGlhX211ZXN0cmFsIDwtIDMxLjcNCm1lZGlhX3BvYmxhY2lvbmFsIDwtIDMyDQpkZXN2aWFjaW9uX2VzdGFuZGFyX3BvYmxhY2lvbmFsIDwtIDEuNQ0Kbml2ZWxfc2lnbmlmaWNhbmNpYSA8LSAwLjAyDQoNCiMgQ8OhbGN1bG8gZGVsIGVzdGFkw61zdGljbyBkZSBwcnVlYmENCnogPC0gKG1lZGlhX211ZXN0cmFsIC0gbWVkaWFfcG9ibGFjaW9uYWwpIC8gKGRlc3ZpYWNpb25fZXN0YW5kYXJfcG9ibGFjaW9uYWwgLyBzcXJ0KG4pKQ0KDQojIEPDoWxjdWxvIGRlbCB2YWxvciBwDQp2YWxvcl9wIDwtIHBub3JtKHopDQoNCiMgQ29uY2x1c2nDs24NCmlmICh2YWxvcl9wIDwgbml2ZWxfc2lnbmlmaWNhbmNpYSkgew0KICBwcmludCgiTG9zIGluc3BlY3RvcmVzIGRlYmVyw61hbiBjb25jbHVpciBxdWUgbGFzIGJvdGVsbGFzIGVzdMOhbiBzaWVuZG8gbGxlbmFkYXMgY29uIG1lbm9zIGNvbnRlbmlkbyB5IGVtaXRpciB1bmEgc2FuY2nDs24uIikNCn0gZWxzZSB7DQogIHByaW50KCJMb3MgaW5zcGVjdG9yZXMgbm8gdGllbmVuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgY29uY2x1aXIgcXVlIGxhcyBib3RlbGxhcyBlc3TDoW4gc2llbmRvIGxsZW5hZGFzIGNvbiBtZW5vcyBjb250ZW5pZG8uIikNCn0NCmBgYA0KDQpHcsOhZmljYToNCmBgYHtyfQ0KIyBEYXRvcyBkZWwgcHJvYmxlbWENCm4gPC0gMjAwDQptZWRpYV9tdWVzdHJhbCA8LSAzMS43DQptZWRpYV9wb2JsYWNpb25hbCA8LSAzMg0KZGVzdmlhY2lvbl9lc3RhbmRhcl9wb2JsYWNpb25hbCA8LSAxLjUNCm5pdmVsX3NpZ25pZmljYW5jaWEgPC0gMC4wMg0KDQojIEPDoWxjdWxvIGRlbCBlc3RhZMOtc3RpY28gZGUgcHJ1ZWJhDQp6IDwtIChtZWRpYV9tdWVzdHJhbCAtIG1lZGlhX3BvYmxhY2lvbmFsKSAvIChkZXN2aWFjaW9uX2VzdGFuZGFyX3BvYmxhY2lvbmFsIC8gc3FydChuKSkNCg0KIyBDw6FsY3VsbyBkZWwgdmFsb3IgY3LDrXRpY28NCnpfY3JpdGljbyA8LSBxbm9ybShuaXZlbF9zaWduaWZpY2FuY2lhKQ0KDQojIENyZWFyIHVuYSBncsOhZmljYSBkZSBzaWduaWZpY2FuY2lhDQp4IDwtIHNlcSgtNCwgNCwgbGVuZ3RoID0gMTAwMCkNCnkgPC0gZG5vcm0oeCkNCnBsb3QoeCwgeSwgdHlwZSA9ICJsIiwgeGxhYiA9ICJ6IiwgeWxhYiA9ICJEZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQiKQ0KYWJsaW5lKHYgPSB6X2NyaXRpY28sIGNvbCA9ICJyZWQiKQ0KcG9seWdvbihjKHpfY3JpdGljbywgeFt4IDw9IHpfY3JpdGljb10sIG1pbih4KSksIGMoMCwgeVt4IDw9IHpfY3JpdGljb10sIDApLCBjb2wgPSAicmVkIikNCmBgYA0KDQoNCg0KDQo=