obtener la base de datos

datos <- read.csv("C:/Users/enrique/OneDrive/Escritorio/Notas Rstudio/estadisticas_vitales_mexico_2018_2021.csv")
plot(cars)

print(datos)
NA

Calculo de la tasa de mortalidad del periodo 2018-2021

tasa_mortalidad <- (datos$defunciones_registradas/datos$poblacion_total) * 1000
datos$tasa_mortalidad <- (datos$defunciones_registradas/datos$poblacion_total) * 1000
datos[, c("anio", "tasa_mortalidad")]

#descripcion del resultado obtenido 
cat("tasa de mortidad:", mean(tasa_mortalidad, na.rm = TRUE), "muertes por cada 1,000 habitantes durante el periodo 2018-2021\n")
tasa de mortidad: 7.303069 muertes por cada 1,000 habitantes durante el periodo 2018-2021

Generacion del grafico por ggplot

#grafico 
ggplot(datos, aes(x = anio, y = tasa_mortalidad, fill = anio)) + geom_bar(stat = "identity", fill = "red") + labs(title = "Tasa de mortalidad periodo 2018-2021", x = "anio", y = "Tasa de mortalidad (por 1,000 habitantes") + theme_classic()

Calculo de tasa de natalidad

#Datos de tasa de natalidad
nacimientos <- datos$nacimientos_registrados
total_poblacion <- datos$poblacion_total 

#Calculos de natalidad
tasa_natalidad <- (nacimientos/total_poblacion) * 1000

#impresion de resultados
cat("natalidad:", mean(tasa_natalidad, na.rm = TRUE), "nacimientos por cada 1,000 durante el periodo 2018-2021\n")
natalidad: 15.49277 nacimientos por cada 1,000 durante el periodo 2018-2021
datos$tasa_natalidad <- (datos$nacimientos_registrados / datos$poblacion_total) * 1000

datos[, c("anio", "tasa_natalidad")]

Visualizacion del grafico

ggplot(datos, aes(x = anio, y = tasa_natalidad, fill = anio)) + geom_bar(stat = "identity", fill = "green") + labs(title = "Tasa de natalidad periodo 2018-2021", x = "anio", y = "Tasa de mortalidad (por 1,000 habitantes") + theme_classic()

Calculo de incremento natural poblacional

incremento_natural <- (tasa_natalidad - tasa_mortalidad)

datos$incremento_natural <- datos$tasa_natalidad - datos$tasa_mortalidad

datos[, c("anio", "incremento_natural")]
NA

visualizacion del resultado

cat("Incremento natural",
    mean(incremento_natural, na.rm = TRUE), 
    "por cada 1,000 habitantes durante el periodo 2018-2021\n")
Incremento natural 8.189702 por cada 1,000 habitantes durante el periodo 2018-2021
str(datos)
'data.frame':   4 obs. of  9 variables:
 $ anio                         : int  2018 2019 2020 2021
 $ poblacion_total              : int  124738000 125930000 126014024 126705138
 $ nacimientos_registrados      : int  2162535 2092214 1629211 1912178
 $ defunciones_registradas      : int  722611 747784 1086743 1122249
 $ incremento_natural           : num  11.54 10.68 4.3 6.23
 $ casos_covid_confirmados      : num  0 0 1437185 NA
 $ defunciones_covid_confirmadas: num  0 0 126507 NA
 $ tasa_mortalidad              : num  5.79 5.94 8.62 8.86
 $ tasa_natalidad               : num  17.3 16.6 12.9 15.1

Uso de ggplot para representacion grafica de los datos epidemiologicos

ggplot(datos, aes(x = anio, y = incremento_natural)) + geom_line(linewidth = 1) + geom_point(size = 3) + geom_text( aes(label = round(incremento_natural, 2)), vjust = -1.5, size = 4) + scale_y_continuous(expand = expansion(mult = c(0.05, 2.0))) + labs(title = "Incremento natural de la poblacion", x = "Ano", y = "incremento natural (por cada 1,000 habitantes") + theme_classic()

Datos de covid-19

datos$letalidad_covid_19 <- (datos$defunciones_covid_confirmadas / datos$casos_covid_confirmados) * 100
datos[, c("anio", "letalidad_covid_19")]
datos_letalidad <- datos[datos$casos_covid_confirmados > 0, c("anio", "letalidad_covid_19")]

datos_letalidad

Intente realize un grafico para demostar la letalidad que obtuvo covid-19 en el 2020 pero el codigo no funciono por alguna razonar

letalidad_valida <- datos_letalidad[!is.na(datos_letalidad) & !is.nan(datos_letalidad)]
Error en is.nan(datos_letalidad): 
  método por defecto no implementado para 'list'

Realiacion de cuadro de flextable

Datos <- data.frame(
  año = c(2018, 2019, 2020, 2021),
  poblacion_total = c(124738000, 125930000, 126014024, 126705138),
  nacimientos_registrados = c(2162535, 2092214, 1629211, 1912178),
  defunciones_registradas = c(722611, 747784, 1086743, 1122249),
  casos_covid_confirmados = c(0, 0, 1437185, 0),
  defunciones_covid_confirmadas = c(0, 0, 126507, 0))

datos$tasa_natalidad <- (datos$nacimientos_registrados /
                         datos$poblacion_total) * 1000

datos$tasa_mortalidad <- (datos$defunciones_registradas /
                          datos$poblacion_total) * 1000

datos$incremento_natural <- datos$tasa_natalidad - datos$tasa_mortalidad

datos$tasa_letalidad <- (datos$defunciones_covid_confirmadas / datos$casos_covid_confirmados) * 100

# Redondear solo columnas númericas
datos_redondeados <- datos %>%
  mutate_if(is.numeric, round, 2)

# Crear la tabla con flextable
flextable(datos_redondeados) %>%
  autofit()

anio

poblacion_total

nacimientos_registrados

defunciones_registradas

incremento_natural

casos_covid_confirmados

defunciones_covid_confirmadas

tasa_mortalidad

tasa_natalidad

letalidad_covid_19

tasa_letalidad

2,018

124,738,000

2,162,535

722,611

11.54

0

0

5.79

17.34

2,019

125,930,000

2,092,214

747,784

10.68

0

0

5.94

16.61

2,020

126,014,024

1,629,211

1,086,743

4.30

1,437,185

126,507

8.62

12.93

88.02

8.8

2,021

126,705,138

1,912,178

1,122,249

6.23

8.86

15.09

#¿En qué año se observa la mayor tasa de mortalidad y cómo se relaciona con la pandemia?

Entre los años 2020 y 2021 se pudo observar un incremento en la tasa de mortalidad debido que en ese periodo se encontraba activa la pandemia de COVID-19

#¿Cómo cambia la tasa de natalidad entre 2018 y 2021? En los años 2018 y 2019 la tasa de natalidad de encontraba mas alta en compración con el año 2020 que fue el año con la tasa de natalidad mas baja, esto puede estar realacionado con la pandemia de COVID-19, mientras que en el año 2021 hubo un aumento en la tasa de natalidad esto puede estar relacionado a las inmunizaciones y al culminación de la pandemia.

#¿Qué ocurre con el incremento natural durante ese periodo? Entre el periodo del 2018 y 2019 el incremento natural se encontraba elevando, mientras que en el año 2020 decayo este valor debido a la alta tasa de mortalidad debido a la pandemia, por otro lado en el 2020 se elevo el valor del incremento natural.

#¿Qué significa la tasa de letalidad por COVID-19 que obtuviste para 2020?

La tasa de letalidad por COVID-19 es el porcentaje de las personas fallecidas que padecieron la enfermedad.

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2sgNiBFbnJpcXVlVmVyZHVnbyBUYXJlYSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQpvYnRlbmVyIGxhIGJhc2UgZGUgZGF0b3MgDQpgYGB7cn0NCmRhdG9zIDwtIHJlYWQuY3N2KCJDOi9Vc2Vycy9lbnJpcXVlL09uZURyaXZlL0VzY3JpdG9yaW8vTm90YXMgUnN0dWRpby9lc3RhZGlzdGljYXNfdml0YWxlc19tZXhpY29fMjAxOF8yMDIxLmNzdiIpDQpwbG90KGNhcnMpDQpwcmludChkYXRvcykNCg0KYGBgDQoNCkNhbGN1bG8gZGUgbGEgdGFzYSBkZSBtb3J0YWxpZGFkIGRlbCBwZXJpb2RvIDIwMTgtMjAyMQ0KYGBge3J9DQp0YXNhX21vcnRhbGlkYWQgPC0gKGRhdG9zJGRlZnVuY2lvbmVzX3JlZ2lzdHJhZGFzL2RhdG9zJHBvYmxhY2lvbl90b3RhbCkgKiAxMDAwDQpkYXRvcyR0YXNhX21vcnRhbGlkYWQgPC0gKGRhdG9zJGRlZnVuY2lvbmVzX3JlZ2lzdHJhZGFzL2RhdG9zJHBvYmxhY2lvbl90b3RhbCkgKiAxMDAwDQpkYXRvc1ssIGMoImFuaW8iLCAidGFzYV9tb3J0YWxpZGFkIildDQoNCiNkZXNjcmlwY2lvbiBkZWwgcmVzdWx0YWRvIG9idGVuaWRvIA0KY2F0KCJ0YXNhIGRlIG1vcnRpZGFkOiIsIG1lYW4odGFzYV9tb3J0YWxpZGFkLCBuYS5ybSA9IFRSVUUpLCAibXVlcnRlcyBwb3IgY2FkYSAxLDAwMCBoYWJpdGFudGVzIGR1cmFudGUgZWwgcGVyaW9kbyAyMDE4LTIwMjFcbiIpDQpgYGANCkdlbmVyYWNpb24gZGVsIGdyYWZpY28gcG9yIGdncGxvdA0KYGBge3J9DQojZ3JhZmljbyANCmdncGxvdChkYXRvcywgYWVzKHggPSBhbmlvLCB5ID0gdGFzYV9tb3J0YWxpZGFkLCBmaWxsID0gYW5pbykpICsgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGZpbGwgPSAicmVkIikgKyBsYWJzKHRpdGxlID0gIlRhc2EgZGUgbW9ydGFsaWRhZCBwZXJpb2RvIDIwMTgtMjAyMSIsIHggPSAiYW5pbyIsIHkgPSAiVGFzYSBkZSBtb3J0YWxpZGFkIChwb3IgMSwwMDAgaGFiaXRhbnRlcyIpICsgdGhlbWVfY2xhc3NpYygpDQpgYGANCg0KQ2FsY3VsbyBkZSB0YXNhIGRlIG5hdGFsaWRhZCANCmBgYHtyfQ0KI0RhdG9zIGRlIHRhc2EgZGUgbmF0YWxpZGFkDQpuYWNpbWllbnRvcyA8LSBkYXRvcyRuYWNpbWllbnRvc19yZWdpc3RyYWRvcw0KdG90YWxfcG9ibGFjaW9uIDwtIGRhdG9zJHBvYmxhY2lvbl90b3RhbCANCg0KI0NhbGN1bG9zIGRlIG5hdGFsaWRhZA0KdGFzYV9uYXRhbGlkYWQgPC0gKG5hY2ltaWVudG9zL3RvdGFsX3BvYmxhY2lvbikgKiAxMDAwDQoNCiNpbXByZXNpb24gZGUgcmVzdWx0YWRvcw0KY2F0KCJuYXRhbGlkYWQ6IiwgbWVhbih0YXNhX25hdGFsaWRhZCwgbmEucm0gPSBUUlVFKSwgIm5hY2ltaWVudG9zIHBvciBjYWRhIDEsMDAwIGR1cmFudGUgZWwgcGVyaW9kbyAyMDE4LTIwMjFcbiIpDQpgYGANCmBgYHtyfQ0KZGF0b3MkdGFzYV9uYXRhbGlkYWQgPC0gKGRhdG9zJG5hY2ltaWVudG9zX3JlZ2lzdHJhZG9zIC8gZGF0b3MkcG9ibGFjaW9uX3RvdGFsKSAqIDEwMDANCg0KZGF0b3NbLCBjKCJhbmlvIiwgInRhc2FfbmF0YWxpZGFkIildDQpgYGANCg0KVmlzdWFsaXphY2lvbiBkZWwgZ3JhZmljbyANCmBgYHtyfQ0KZ2dwbG90KGRhdG9zLCBhZXMoeCA9IGFuaW8sIHkgPSB0YXNhX25hdGFsaWRhZCwgZmlsbCA9IGFuaW8pKSArIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBmaWxsID0gImdyZWVuIikgKyBsYWJzKHRpdGxlID0gIlRhc2EgZGUgbmF0YWxpZGFkIHBlcmlvZG8gMjAxOC0yMDIxIiwgeCA9ICJhbmlvIiwgeSA9ICJUYXNhIGRlIG1vcnRhbGlkYWQgKHBvciAxLDAwMCBoYWJpdGFudGVzIikgKyB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQpDYWxjdWxvIGRlIGluY3JlbWVudG8gbmF0dXJhbCBwb2JsYWNpb25hbA0KYGBge3J9DQppbmNyZW1lbnRvX25hdHVyYWwgPC0gKHRhc2FfbmF0YWxpZGFkIC0gdGFzYV9tb3J0YWxpZGFkKQ0KDQpkYXRvcyRpbmNyZW1lbnRvX25hdHVyYWwgPC0gZGF0b3MkdGFzYV9uYXRhbGlkYWQgLSBkYXRvcyR0YXNhX21vcnRhbGlkYWQNCg0KZGF0b3NbLCBjKCJhbmlvIiwgImluY3JlbWVudG9fbmF0dXJhbCIpXQ0KDQpgYGANCnZpc3VhbGl6YWNpb24gZGVsIHJlc3VsdGFkbyANCmBgYHtyfQ0KY2F0KCJJbmNyZW1lbnRvIG5hdHVyYWwiLCBtZWFuKGluY3JlbWVudG9fbmF0dXJhbCwgbmEucm0gPSBUUlVFKSwgDQogICAgInBvciBjYWRhIDEsMDAwIGhhYml0YW50ZXMgZHVyYW50ZSBlbCBwZXJpb2RvIDIwMTgtMjAyMVxuIikNCmBgYA0KYGBge3J9DQpzdHIoZGF0b3MpDQpgYGANClVzbyBkZSBnZ3Bsb3QgcGFyYSByZXByZXNlbnRhY2lvbiBncmFmaWNhIGRlIGxvcyBkYXRvcyBlcGlkZW1pb2xvZ2ljb3MgDQpgYGB7cn0NCmdncGxvdChkYXRvcywgYWVzKHggPSBhbmlvLCB5ID0gaW5jcmVtZW50b19uYXR1cmFsKSkgKyBnZW9tX2xpbmUobGluZXdpZHRoID0gMSkgKyBnZW9tX3BvaW50KHNpemUgPSAzKSArIGdlb21fdGV4dCggYWVzKGxhYmVsID0gcm91bmQoaW5jcmVtZW50b19uYXR1cmFsLCAyKSksIHZqdXN0ID0gLTEuNSwgc2l6ZSA9IDQpICsgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLjA1LCAyLjApKSkgKyBsYWJzKHRpdGxlID0gIkluY3JlbWVudG8gbmF0dXJhbCBkZSBsYSBwb2JsYWNpb24iLCB4ID0gIkFubyIsIHkgPSAiaW5jcmVtZW50byBuYXR1cmFsIChwb3IgY2FkYSAxLDAwMCBoYWJpdGFudGVzIikgKyB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQpEYXRvcyBkZSBjb3ZpZC0xOQ0KYGBge3J9DQpkYXRvcyRsZXRhbGlkYWRfY292aWRfMTkgPC0gKGRhdG9zJGRlZnVuY2lvbmVzX2NvdmlkX2NvbmZpcm1hZGFzIC8gZGF0b3MkY2Fzb3NfY292aWRfY29uZmlybWFkb3MpICogMTAwDQpkYXRvc1ssIGMoImFuaW8iLCAibGV0YWxpZGFkX2NvdmlkXzE5IildDQpgYGANCg0KYGBge3J9DQpkYXRvc19sZXRhbGlkYWQgPC0gZGF0b3NbZGF0b3MkY2Fzb3NfY292aWRfY29uZmlybWFkb3MgPiAwLCBjKCJhbmlvIiwgImxldGFsaWRhZF9jb3ZpZF8xOSIpXQ0KDQpkYXRvc19sZXRhbGlkYWQNCmBgYA0KDQoNCkludGVudGUgcmVhbGl6ZSB1biBncmFmaWNvIHBhcmEgZGVtb3N0YXIgbGEgbGV0YWxpZGFkIHF1ZSBvYnR1dm8gY292aWQtMTkgZW4gZWwgMjAyMCBwZXJvIGVsIGNvZGlnbyBubyBmdW5jaW9ubyBwb3IgYWxndW5hIHJhem9uYXINCg0KYGBge3J9DQpsZXRhbGlkYWRfdmFsaWRhIDwtIGRhdG9zX2xldGFsaWRhZFshaXMubmEoZGF0b3NfbGV0YWxpZGFkKSAmICFpcy5uYW4oZGF0b3NfbGV0YWxpZGFkKV0NCnZhbG9yZXMgPC0gYyhkYXRvc19sZXRhbGlkYWQgPSBsZXRhbGlkYWRfdmFsaWRhLA0KICAiTm8gbGV0YWxpZGFkIiA9IDEgLSBsZXRhbGlkYWRfdmFsaWRhKQ0KcGllKHZhbG9yZXMsIGxhYmVscyA9IHBhc3RlMChuYW1lcyh2YWxvcmVzKSwgIjogIiwgcm91bmQodmFsb3JlcyAqIDEwMCwgMiksICIlIiksDQogIG1haW4gPSAiTGV0YWxpZGFkIHBvciBDb3ZpZC0xOSBlbiBlbCBhw7FvIDIwMjAiLA0KICBjb2wgPSBjKCJmaXJlYnJpY2siLCAiYmx1ZSIpKQ0KYGBgDQoNClJlYWxpYWNpb24gZGUgY3VhZHJvIGRlIGZsZXh0YWJsZQ0KYGBge3J9DQpEYXRvcyA8LSBkYXRhLmZyYW1lKA0KICBhw7FvID0gYygyMDE4LCAyMDE5LCAyMDIwLCAyMDIxKSwNCiAgcG9ibGFjaW9uX3RvdGFsID0gYygxMjQ3MzgwMDAsIDEyNTkzMDAwMCwgMTI2MDE0MDI0LCAxMjY3MDUxMzgpLA0KICBuYWNpbWllbnRvc19yZWdpc3RyYWRvcyA9IGMoMjE2MjUzNSwgMjA5MjIxNCwgMTYyOTIxMSwgMTkxMjE3OCksDQogIGRlZnVuY2lvbmVzX3JlZ2lzdHJhZGFzID0gYyg3MjI2MTEsIDc0Nzc4NCwgMTA4Njc0MywgMTEyMjI0OSksDQogIGNhc29zX2NvdmlkX2NvbmZpcm1hZG9zID0gYygwLCAwLCAxNDM3MTg1LCAwKSwNCiAgZGVmdW5jaW9uZXNfY292aWRfY29uZmlybWFkYXMgPSBjKDAsIDAsIDEyNjUwNywgMCkpDQoNCmRhdG9zJHRhc2FfbmF0YWxpZGFkIDwtIChkYXRvcyRuYWNpbWllbnRvc19yZWdpc3RyYWRvcyAvDQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MkcG9ibGFjaW9uX3RvdGFsKSAqIDEwMDANCg0KZGF0b3MkdGFzYV9tb3J0YWxpZGFkIDwtIChkYXRvcyRkZWZ1bmNpb25lc19yZWdpc3RyYWRhcyAvDQogICAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zJHBvYmxhY2lvbl90b3RhbCkgKiAxMDAwDQoNCmRhdG9zJGluY3JlbWVudG9fbmF0dXJhbCA8LSBkYXRvcyR0YXNhX25hdGFsaWRhZCAtIGRhdG9zJHRhc2FfbW9ydGFsaWRhZA0KDQpkYXRvcyR0YXNhX2xldGFsaWRhZCA8LSAoZGF0b3MkZGVmdW5jaW9uZXNfY292aWRfY29uZmlybWFkYXMgLyBkYXRvcyRjYXNvc19jb3ZpZF9jb25maXJtYWRvcykgKiAxMDANCg0KIyBSZWRvbmRlYXIgc29sbyBjb2x1bW5hcyBuw7ptZXJpY2FzDQpkYXRvc19yZWRvbmRlYWRvcyA8LSBkYXRvcyAlPiUNCiAgbXV0YXRlX2lmKGlzLm51bWVyaWMsIHJvdW5kLCAyKQ0KDQojIENyZWFyIGxhIHRhYmxhIGNvbiBmbGV4dGFibGUNCmZsZXh0YWJsZShkYXRvc19yZWRvbmRlYWRvcykgJT4lDQogIGF1dG9maXQoKQ0KYGBgDQoNCiPCv0VuIHF1w6kgYcOxbyBzZSBvYnNlcnZhIGxhIG1heW9yIHRhc2EgZGUgbW9ydGFsaWRhZCB5IGPDs21vIHNlIHJlbGFjaW9uYSBjb24gbGEgcGFuZGVtaWE/DQoNCkVudHJlIGxvcyBhw7FvcyAyMDIwIHkgMjAyMSBzZSBwdWRvIG9ic2VydmFyIHVuIGluY3JlbWVudG8gZW4gbGEgdGFzYSBkZSBtb3J0YWxpZGFkIGRlYmlkbyBxdWUgZW4gZXNlIHBlcmlvZG8gc2UgZW5jb250cmFiYSBhY3RpdmEgbGEgcGFuZGVtaWEgZGUgQ09WSUQtMTkgDQoNCiPCv0PDs21vIGNhbWJpYSBsYSB0YXNhIGRlIG5hdGFsaWRhZCBlbnRyZSAyMDE4IHkgMjAyMT8NCkVuIGxvcyBhw7FvcyAyMDE4IHkgMjAxOSBsYSB0YXNhIGRlIG5hdGFsaWRhZCBkZSBlbmNvbnRyYWJhIG1hcyBhbHRhIGVuIGNvbXByYWNpw7NuIGNvbiBlbCBhw7FvIDIwMjAgcXVlIGZ1ZSBlbCBhw7FvIGNvbiBsYSB0YXNhIGRlIG5hdGFsaWRhZCBtYXMgYmFqYSwgZXN0byBwdWVkZSBlc3RhciByZWFsYWNpb25hZG8gY29uIGxhIHBhbmRlbWlhIGRlIENPVklELTE5LCBtaWVudHJhcyBxdWUgZW4gZWwgYcOxbyAyMDIxIGh1Ym8gdW4gYXVtZW50byBlbiBsYSB0YXNhIGRlIG5hdGFsaWRhZCBlc3RvIHB1ZWRlIGVzdGFyIHJlbGFjaW9uYWRvIGEgbGFzIGlubXVuaXphY2lvbmVzIHkgYWwgY3VsbWluYWNpw7NuIGRlIGxhIHBhbmRlbWlhLg0KDQojwr9RdcOpIG9jdXJyZSBjb24gZWwgaW5jcmVtZW50byBuYXR1cmFsIGR1cmFudGUgZXNlIHBlcmlvZG8/DQpFbnRyZSBlbCBwZXJpb2RvIGRlbCAyMDE4IHkgMjAxOSBlbCBpbmNyZW1lbnRvIG5hdHVyYWwgc2UgZW5jb250cmFiYSBlbGV2YW5kbywgbWllbnRyYXMgcXVlIGVuIGVsIGHDsW8gMjAyMCBkZWNheW8gZXN0ZSB2YWxvciBkZWJpZG8gYSBsYSBhbHRhIHRhc2EgZGUgbW9ydGFsaWRhZCBkZWJpZG8gYSBsYSBwYW5kZW1pYSwgcG9yIG90cm8gbGFkbyBlbiBlbCAyMDIwIHNlIGVsZXZvIGVsIHZhbG9yIGRlbCBpbmNyZW1lbnRvIG5hdHVyYWwuDQoNCiPCv1F1w6kgc2lnbmlmaWNhIGxhIHRhc2EgZGUgbGV0YWxpZGFkIHBvciBDT1ZJRC0xOSBxdWUgb2J0dXZpc3RlIHBhcmEgMjAyMD8NCg0KTGEgdGFzYSBkZSBsZXRhbGlkYWQgcG9yIENPVklELTE5IGVzIGVsIHBvcmNlbnRhamUgZGUgbGFzIHBlcnNvbmFzIGZhbGxlY2lkYXMgcXVlIHBhZGVjaWVyb24gbGEgZW5mZXJtZWRhZC4NCg0KDQoNCg==