#Carga de paquetes
library(tidyverse)
[30m-- [1mAttaching packages[22m --------------------------------------- tidyverse 1.2.1 --[39m
[30m[32mv[30m [34mggplot2[30m 3.0.0 [32mv[30m [34mpurrr [30m 0.2.5
[32mv[30m [34mtibble [30m 1.4.2 [32mv[30m [34mdplyr [30m 0.7.7
[32mv[30m [34mtidyr [30m 0.8.1 [32mv[30m [34mstringr[30m 1.3.1
[32mv[30m [34mreadr [30m 1.3.0 [32mv[30m [34mforcats[30m 0.3.0[39m
[30m-- [1mConflicts[22m ------------------------------------------ tidyverse_conflicts() --
[31mx[30m [34mdplyr[30m::[32mfilter()[30m masks [34mstats[30m::filter()
[31mx[30m [34mdplyr[30m::[32mlag()[30m masks [34mstats[30m::lag()[39m
library(stringr)
library(readxl)
library(readr)
NAC_2012 <- read_delim("../Datos_Originales/NAC_2012.csv",
";", escape_double = FALSE, trim_ws = TRUE)
Parsed with column specification:
cols(
.default = col_double(),
OCUPA_P = col_character(),
OCUPA_M = col_character(),
ESTAB = col_character()
)
See spec(...) for full column specifications.
View(NAC_2012)
library(readr)
NAC_2016 <- read_delim("../Datos_Originales/NAC_2016.csv",
";", escape_double = FALSE, trim_ws = TRUE)
Parsed with column specification:
cols(
.default = col_double(),
OCUPA_P = col_character(),
OCUPA_M = col_character(),
ESTAB = col_character()
)
See spec(...) for full column specifications.
View(NAC_2016)
Datos_Limpios <- dplyr::bind_rows(NAC_2012, NAC_2016)
Datos_Limpios <- select(Datos_Limpios,-ESTAB,-DIA_NAC,-ATENC_PART,-SEMANAS,-CURSO_P,-NIVEL_P,-ACTIV_P, -OCUPA_P, -CATEG_P, EST_CIVI_M, -CURSO_M, -NIVEL_M, -ACTIV_M, -OCUPA_M, -CATEG_M, -COMUNA, -HIJ_VIVOS, -HIJ_FALL, -HIJ_MORT, -HIJ_TOTAL, -SERV_RES)
Datos_Limpios <- mutate(Datos_Limpios, MES_NAC = as.integer(MES_NAC))
typeof(as.integer(Datos_Limpios$MES_NAC))
[1] "integer"
glimpse(Datos_Limpios)
Observations: 475,384
Variables: 12
$ SEXO <dbl> 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1...
$ MES_NAC <int> 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7...
$ ANO_NAC <dbl> 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012...
$ TIPO_PARTO <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ LOCAL_PART <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ PESO <dbl> 3050, 3940, 3960, 3990, 3570, 2020, 4160, 3450, 3520, 3160, 3800, 3480, 3590, 3610, 3190, 3610, 2475...
$ TALLA <dbl> 48, 52, 51, 52, 50, 44, 51, 50, 47, 48, 51, 48, 51, 49, 50, 52, 45, 50, 46, 50, 50, 48, 51, 47, 50, ...
$ EDAD_P <dbl> 33, 30, 24, 20, 18, 21, 23, 25, 99, 28, 50, 29, 23, 27, 34, 29, 30, 46, 32, 47, 32, 35, 35, 47, 31, ...
$ EDAD_M <dbl> 30, 22, 24, 17, 19, 23, 20, 20, 25, 19, 33, 31, 24, 22, 29, 18, 28, 39, 32, 42, 31, 34, 32, 32, 25, ...
$ EST_CIVI_M <dbl> 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1...
$ URBA_RURAL <dbl> 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1...
$ REG_RES <dbl> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5...
select(Datos_Limpios,-EST_CIVI_M)
Nacimientos en Chile:
En los ?ltimos cuatro a?os, la poblaci?n de Chile ha cambiado. Pero mientras ciertos aspectos de nuestra demograf?a tienden a la diversidad, otros como el recambio generacional se est?n quedando estancados.
De acuerdo a los datos del INE, en 2016 el n?mero de nacimientos en Chile disminuy?en un 5,6% respectoa 2015. Una cifra que contrasta con el aumento de matrimonios en el miso per?odo.
Claro, si bien los dos don fen?menos serparados, por a?o la natalidad se ha asociado con el matrimonio. Una relaci?n que aprece arc?ica e in?til en el contexto presente.
En ese sentido, todo nos invita a preguntarnos ?por qu? nacen cada vez menos ni?os en Chile?
Queremos gr?ficar esta disminuci?n de la natalidad entre 2012 y 2016 con un gr?fico de barra que plasme el abrupto descenso de la natalidad.
Grafico_uno <- ggplot(data = Datos_Limpios) + geom_bar(mapping = aes (x = ANO_NAC)) +
ggtitle(" Chilenos nacidos en el a?o 2012 y en el a?o 2016")
Grafico_uno

Para empezar a ilustrar los factores que inciden o no en el cambio de la tasa de natalidad en Chile, queremos evidenciar mediante un gr?fico de dispersi?n el peso y la talla de los ni?os nacidos en Chile.
Elegimos un gr?fico de dipersion por que los casos particulares no son relevantes, m?s bien lo que nos interesa es la concentraci?n de ni?os en los tramos m?s sanos. Un indicador frecuente de embarazos sanos, que para efectos de este reprotaje permite descartar a la complicaciones de salud de los beb?s como un factor negativo en la tasa de natalidad.
Grafico_dos <- ggplot(data = Datos_Limpios, mapping = aes(x = PESO, y = TALLA)) +
geom_point() +
facet_wrap(~ ANO_NAC) +
ggtitle(" Talla y peso de los recien nacidos en Chile en el a?o 2012 y en el a?o 2016")
Grafico_dos

Otro gr?fico que emplearemos para complementar ese dato, son los meses de nacimiento. Una est?istica que nos revela datos sobre los peridoos pre y post natles que viven las madres.
Siguiendo esa l?nea, un punto que exploraremos es la edad de la madre y el padre al momento del parto (gr?ficos 3 y 4). Estos datos nos parecen interesantes porque revelan quienes son los padres, adem?s de agregar una perspectiva sobre otros problemas como el embarazo adolescente y evidenciar tendencias en aumento como la maternidad despu?s los 35 a?os.
Grafico_tres <- ggplot(data = Datos_Limpios) +
geom_histogram(mapping = aes(x = EDAD_M),
colour = "black") +
scale_fill_viridis_d() +
facet_wrap(~ ANO_NAC) +
ggtitle(" Edad de las madres al momento de dar a luz en el a?o 2012 y en el a?o 2016")
Grafico_tres

Grafico_cuatro <- ggplot(data = Datos_Limpios) +
geom_histogram(mapping = aes(x = EDAD_P),
colour = "black") +
scale_fill_viridis_d() +
facet_wrap(~ ANO_NAC) +
ggtitle(" Edad de los hombres al momento de convertirse en padres
durante el a?o 2012 y durante el a?o 2016")
Grafico_cuatro

Por ?ltimo, la estructura b?sica de nuestro reportaje plantea incluir una dimesi?n m?s general enfocada en la diferencia entre los asentamientos en zonas urbanas vs zonas rurales y todo lo que eso implica para la contrucci?n social y demogr?fica del pa?s.
Grafico_seis <- ggplot(data = Datos_Limpios) +
geom_histogram(mapping = aes(x = URBA_RURAL, fill = LOCAL_PART),
colour = "black") +
scale_fill_viridis_d() +
facet_wrap(~ ANO_NAC) +
ggtitle(" Chilenos nacidos en localidades urbanas y rurales
durante el a?o 2012 y el a?o 2016")
Grafico_seis

Grafico_siete <- ggplot(data = Datos_Limpios) +
geom_histogram(mapping = aes(x = SEXO),
colour = "black") +
scale_fill_viridis_d() +
facet_wrap(~ ANO_NAC) +
ggtitle(" Sexo de los nacidos en el a?o 2012 y en el a?o 2016")
Grafico_siete

GrafiCO_ocho <- ggplot(data = Datos_Limpios) +
geom_histogram(mapping = aes(x = REG_RES),
colour = "black") +
scale_fill_viridis_d() +
facet_wrap(~ ANO_NAC) +
ggtitle(" Nacidos en cada región de Chile en el año 2012 y en el a?o 2016")
GrafiCO_ocho

LS0tDQp0aXRsZTogIkJvc3F1ZWpvIFJlcG9ydGFqZSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyfQ0KI0NhcmdhIGRlIHBhcXVldGVzDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoc3RyaW5ncikNCmxpYnJhcnkocmVhZHhsKQ0KDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWRyKQ0KTkFDXzIwMTIgPC0gcmVhZF9kZWxpbSgiLi4vRGF0b3NfT3JpZ2luYWxlcy9OQUNfMjAxMi5jc3YiLCANCiAgICAiOyIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgdHJpbV93cyA9IFRSVUUpDQpWaWV3KE5BQ18yMDEyKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShyZWFkcikNCk5BQ18yMDE2IDwtIHJlYWRfZGVsaW0oIi4uL0RhdG9zX09yaWdpbmFsZXMvTkFDXzIwMTYuY3N2IiwgDQogICAgIjsiLCBlc2NhcGVfZG91YmxlID0gRkFMU0UsIHRyaW1fd3MgPSBUUlVFKQ0KVmlldyhOQUNfMjAxNikNCmBgYA0KDQpgYGB7cn0NCkRhdG9zX0xpbXBpb3MgPC0gZHBseXI6OmJpbmRfcm93cyhOQUNfMjAxMiwgTkFDXzIwMTYpDQpgYGANCg0KYGBge3J9DQpEYXRvc19MaW1waW9zIDwtIHNlbGVjdChEYXRvc19MaW1waW9zLC1FU1RBQiwtRElBX05BQywtQVRFTkNfUEFSVCwtU0VNQU5BUywtQ1VSU09fUCwtTklWRUxfUCwtQUNUSVZfUCwgLU9DVVBBX1AsIC1DQVRFR19QLCBFU1RfQ0lWSV9NLCAtQ1VSU09fTSwgLU5JVkVMX00sIC1BQ1RJVl9NLCAtT0NVUEFfTSwgLUNBVEVHX00sIC1DT01VTkEsIC1ISUpfVklWT1MsIC1ISUpfRkFMTCwgLUhJSl9NT1JULCAtSElKX1RPVEFMLCAtU0VSVl9SRVMpDQpgYGANCg0KYGBge3J9DQpEYXRvc19MaW1waW9zIDwtIG11dGF0ZShEYXRvc19MaW1waW9zLCBNRVNfTkFDID0gYXMuaW50ZWdlcihNRVNfTkFDKSkNCmBgYA0KDQoNCmBgYHtyfQ0KdHlwZW9mKGFzLmludGVnZXIoRGF0b3NfTGltcGlvcyRNRVNfTkFDKSkNCmBgYA0KDQpgYGB7cn0NCmdsaW1wc2UoRGF0b3NfTGltcGlvcykNCmBgYA0KDQpgYGB7cn0NCnNlbGVjdChEYXRvc19MaW1waW9zLC1FU1RfQ0lWSV9NKQ0KYGBgDQoNCiNOYWNpbWllbnRvcyBlbiBDaGlsZTogDQoNCiMjI0VuIGxvcyA/bHRpbW9zIGN1YXRybyBhP29zLCBsYSBwb2JsYWNpP24gZGUgQ2hpbGUgaGEgY2FtYmlhZG8uIFBlcm8gbWllbnRyYXMgY2llcnRvcyBhc3BlY3RvcyBkZSBudWVzdHJhIGRlbW9ncmFmP2EgdGllbmRlbiBhIGxhIGRpdmVyc2lkYWQsIG90cm9zIGNvbW8gZWwgcmVjYW1iaW8gZ2VuZXJhY2lvbmFsIHNlIGVzdD9uIHF1ZWRhbmRvIGVzdGFuY2Fkb3MuDQoNCiMjIERlIGFjdWVyZG8gYSBsb3MgZGF0b3MgZGVsIElORSwgZW4gMjAxNiBlbCBuP21lcm8gZGUgbmFjaW1pZW50b3MgZW4gQ2hpbGUgZGlzbWludXk/ZW4gdW4gNSw2JSByZXNwZWN0b2EgMjAxNS4gVW5hIGNpZnJhIHF1ZSBjb250cmFzdGEgY29uIGVsIGF1bWVudG8gZGUgbWF0cmltb25pb3MgZW4gZWwgbWlzbyBwZXI/b2RvLg0KIyNDbGFybywgc2kgYmllbiBsb3MgZG9zIGRvbiBmZW4/bWVub3Mgc2VycGFyYWRvcywgcG9yIGE/byBsYSBuYXRhbGlkYWQgc2UgaGEgYXNvY2lhZG8gY29uIGVsIG1hdHJpbW9uaW8uIFVuYSByZWxhY2k/biBxdWUgYXByZWNlIGFyYz9pY2EgZSBpbj90aWwgZW4gZWwgY29udGV4dG8gcHJlc2VudGUuDQojI0VuIGVzZSBzZW50aWRvLCB0b2RvIG5vcyBpbnZpdGEgYSBwcmVndW50YXJub3MgP3BvciBxdT8gbmFjZW4gY2FkYSB2ZXogbWVub3Mgbmk/b3MgZW4gQ2hpbGU/DQoNCiMjUXVlcmVtb3MgZ3I/ZmljYXIgZXN0YSBkaXNtaW51Y2k/biBkZSBsYSBuYXRhbGlkYWQgZW50cmUgMjAxMiB5IDIwMTYgY29uIHVuIGdyP2ZpY28gZGUgYmFycmEgcXVlIHBsYXNtZSBlbCBhYnJ1cHRvIGRlc2NlbnNvIGRlIGxhIG5hdGFsaWRhZC4NCg0KYGBge3J9DQpHcmFmaWNvX3VubyA8LSBnZ3Bsb3QoZGF0YSA9IERhdG9zX0xpbXBpb3MpICsgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyAoeCA9IEFOT19OQUMpKSArDQogIGdndGl0bGUoIiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hpbGVub3MgbmFjaWRvcyBlbiBlbCBhP28gMjAxMiB5IGVuIGVsIGE/byAyMDE2IikNCmBgYA0KDQpgYGB7cn0NCkdyYWZpY29fdW5vDQpgYGANCg0KIyNQYXJhIGVtcGV6YXIgYSBpbHVzdHJhciBsb3MgZmFjdG9yZXMgcXVlIGluY2lkZW4gbyBubyBlbiBlbCBjYW1iaW8gZGUgbGEgdGFzYSBkZSBuYXRhbGlkYWQgZW4gQ2hpbGUsIHF1ZXJlbW9zIGV2aWRlbmNpYXIgbWVkaWFudGUgdW4gZ3I/ZmljbyBkZSBkaXNwZXJzaT9uIGVsIHBlc28geSBsYSB0YWxsYSBkZSBsb3Mgbmk/b3MgbmFjaWRvcyBlbiBDaGlsZS4NCiMjRWxlZ2ltb3MgdW4gZ3I/ZmljbyBkZSBkaXBlcnNpb24gcG9yIHF1ZSBsb3MgY2Fzb3MgcGFydGljdWxhcmVzIG5vIHNvbiByZWxldmFudGVzLCBtP3MgYmllbiBsbyBxdWUgbm9zIGludGVyZXNhIGVzIGxhIGNvbmNlbnRyYWNpP24gZGUgbmk/b3MgZW4gbG9zIHRyYW1vcyBtP3Mgc2Fub3MuIFVuIGluZGljYWRvciBmcmVjdWVudGUgZGUgZW1iYXJhem9zIHNhbm9zLCBxdWUgcGFyYSBlZmVjdG9zIGRlIGVzdGUgcmVwcm90YWplIHBlcm1pdGUgZGVzY2FydGFyIGEgbGEgY29tcGxpY2FjaW9uZXMgZGUgc2FsdWQgZGUgbG9zIGJlYj9zIGNvbW8gdW4gZmFjdG9yIG5lZ2F0aXZvIGVuIGxhIHRhc2EgZGUgbmF0YWxpZGFkLg0KDQoNCmBgYHtyfQ0KR3JhZmljb19kb3MgPC0gZ2dwbG90KGRhdGEgPSBEYXRvc19MaW1waW9zLCBtYXBwaW5nID0gYWVzKHggPSBQRVNPLCB5ID0gVEFMTEEpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGZhY2V0X3dyYXAofiBBTk9fTkFDKSArDQogIGdndGl0bGUoIiAgIFRhbGxhIHkgcGVzbyBkZSBsb3MgcmVjaWVuIG5hY2lkb3MgZW4gQ2hpbGUgZW4gZWwgYT9vIDIwMTIgeSBlbiBlbCBhP28gMjAxNiIpDQpgYGANCg0KYGBge3J9DQpHcmFmaWNvX2Rvcw0KYGBgDQoNCg0KIyNPdHJvIGdyP2ZpY28gcXVlIGVtcGxlYXJlbW9zIHBhcmEgY29tcGxlbWVudGFyIGVzZSBkYXRvLCBzb24gbG9zIG1lc2VzIGRlIG5hY2ltaWVudG8uIFVuYSBlc3Q/aXN0aWNhIHF1ZSBub3MgcmV2ZWxhIGRhdG9zIHNvYnJlIGxvcyBwZXJpZG9vcyBwcmUgeSBwb3N0IG5hdGxlcyBxdWUgdml2ZW4gbGFzIG1hZHJlcy4NCiMjRXN0IGRhdG8gZXMgaW1wb3JuYXRlIHBhcmEgbnVlc3RybyByZXBvcnRlamUgcG9ycXVlIGRlbnRybyBkZSBudWVzdHJhIGhpcD90ZXNpcyBjcmVlbW9zIHF1ZSBsYXMgbnVldmFzIGZvcm1hcyBkZSB2aWRhIHkgcGxhZmljaWFjaT9uIGZtYWlsaWFyIGluY2lkZW4gZW4gbGEgYmFqYSBuYXRhbGlkYWQuDQoNCmBgYHtyfQ0KDQpHcmFmaWNvX2NpbmNvIDwtIGdncGxvdChkYXRhID0gRGF0b3NfTGltcGlvcykgKw0KICBnZW9tX2hpc3RvZ3JhbShtYXBwaW5nID0gYWVzKHggPSBNRVNfTkFDLCBmaWxsID0gU0VYTyksDQogICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF92aXJpZGlzX2QoKSArDQogIGZhY2V0X3dyYXAofiBBTk9fTkFDKSArDQogIGdndGl0bGUoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcyBkZSBuYWNpbWllbnRvIGRlIGxvcyBjaGlsZW5vcyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYWNpZG9zIGVuIGVsIGE/byAyMDEyIHkgZW4gZWwgYT9vIDIwMTYiKQ0KYGBgDQoNCg0KYGBge3J9DQpHcmFmaWNvX2NpbmNvDQpgYGANCiMjU2lndWllbmRvIGVzYSBsP25lYSwgdW4gcHVudG8gcXVlIGV4cGxvcmFyZW1vcyBlcyBsYSBlZGFkIGRlIGxhIG1hZHJlIHkgZWwgcGFkcmUgYWwgbW9tZW50byBkZWwgcGFydG8gKGdyP2ZpY29zIDMgeSA0KS4gRXN0b3MgZGF0b3Mgbm9zIHBhcmVjZW4gaW50ZXJlc2FudGVzIHBvcnF1ZSByZXZlbGFuIHF1aWVuZXMgc29uIGxvcyBwYWRyZXMsIGFkZW0/cyBkZSBhZ3JlZ2FyIHVuYSBwZXJzcGVjdGl2YSBzb2JyZSBvdHJvcyBwcm9ibGVtYXMgY29tbyBlbCBlbWJhcmF6byBhZG9sZXNjZW50ZSB5IGV2aWRlbmNpYXIgdGVuZGVuY2lhcyBlbiBhdW1lbnRvIGNvbW8gbGEgbWF0ZXJuaWRhZCBkZXNwdT9zIGxvcyAzNSBhP29zLg0KDQpgYGB7cn0NCg0KR3JhZmljb190cmVzIDwtIGdncGxvdChkYXRhID0gRGF0b3NfTGltcGlvcykgKw0KICBnZW9tX2hpc3RvZ3JhbShtYXBwaW5nID0gYWVzKHggPSBFREFEX00pLA0KICAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19kKCkgKw0KICBmYWNldF93cmFwKH4gQU5PX05BQykgKw0KICBnZ3RpdGxlKCIgRWRhZCBkZSBsYXMgbWFkcmVzIGFsIG1vbWVudG8gZGUgZGFyIGEgbHV6IGVuIGVsIGE/byAyMDEyIHkgZW4gZWwgYT9vIDIwMTYiKQ0KYGBgDQoNCg0KYGBge3J9DQpHcmFmaWNvX3RyZXMNCmBgYA0KDQpgYGB7cn0NCkdyYWZpY29fY3VhdHJvIDwtIGdncGxvdChkYXRhID0gRGF0b3NfTGltcGlvcykgKw0KICBnZW9tX2hpc3RvZ3JhbShtYXBwaW5nID0gYWVzKHggPSBFREFEX1ApLA0KICAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19kKCkgKw0KICBmYWNldF93cmFwKH4gQU5PX05BQykgICsNCiAgZ2d0aXRsZSgiICAgICAgICAgICAgICAgICAgIEVkYWQgZGUgbG9zIGhvbWJyZXMgYWwgbW9tZW50byBkZSBjb252ZXJ0aXJzZSBlbiBwYWRyZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYW50ZSBlbCBhP28gMjAxMiB5IGR1cmFudGUgZWwgYT9vIDIwMTYiKQ0KYGBgDQoNCmBgYHtyfQ0KR3JhZmljb19jdWF0cm8NCmBgYA0KDQojI1BvciA/bHRpbW8sIGxhIGVzdHJ1Y3R1cmEgYj9zaWNhIGRlIG51ZXN0cm8gcmVwb3J0YWplIHBsYW50ZWEgaW5jbHVpciB1bmEgZGltZXNpP24gbT9zIGdlbmVyYWwgZW5mb2NhZGEgZW4gbGEgZGlmZXJlbmNpYSBlbnRyZSBsb3MgYXNlbnRhbWllbnRvcyBlbiB6b25hcyB1cmJhbmFzIHZzIHpvbmFzIHJ1cmFsZXMgeSB0b2RvIGxvIHF1ZSBlc28gaW1wbGljYSBwYXJhIGxhIGNvbnRydWNjaT9uIHNvY2lhbCB5IGRlbW9ncj9maWNhIGRlbCBwYT9zLg0KDQpgYGB7cn0NCkdyYWZpY29fc2VpcyA8LSBnZ3Bsb3QoZGF0YSA9IERhdG9zX0xpbXBpb3MpICsNCiAgZ2VvbV9oaXN0b2dyYW0obWFwcGluZyA9IGFlcyh4ID0gVVJCQV9SVVJBTCwgZmlsbCA9IExPQ0FMX1BBUlQpLA0KICAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19kKCkgKw0KICBmYWNldF93cmFwKH4gQU5PX05BQykgKw0KICBnZ3RpdGxlKCIgICAgICAgICAgICAgICAgICAgICAgICAgQ2hpbGVub3MgbmFjaWRvcyBlbiBsb2NhbGlkYWRlcyB1cmJhbmFzIHkgcnVyYWxlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhbnRlIGVsIGE/byAyMDEyIHkgZWwgYT9vIDIwMTYiKQ0KYGBgDQoNCmBgYHtyfQ0KR3JhZmljb19zZWlzDQpgYGANCg0KDQoNCg0KYGBge3J9DQpHcmFmaWNvX3NpZXRlIDwtIGdncGxvdChkYXRhID0gRGF0b3NfTGltcGlvcykgKw0KICBnZW9tX2hpc3RvZ3JhbShtYXBwaW5nID0gYWVzKHggPSBTRVhPKSwNCiAgICAgICAgICAgICAgICAgY29sb3VyID0gImJsYWNrIikgKw0KICBzY2FsZV9maWxsX3ZpcmlkaXNfZCgpICsNCiAgZmFjZXRfd3JhcCh+IEFOT19OQUMpICsNCiAgZ2d0aXRsZSgiIFNleG8gZGUgbG9zIG5hY2lkb3MgZW4gZWwgYT9vIDIwMTIgeSBlbiBlbCBhP28gMjAxNiIpDQpgYGANCg0KDQpgYGB7cn0NCkdyYWZpY29fc2lldGUNCmBgYA0KDQpgYGB7cn0NCkdyYWZpQ09fb2NobyA8LSBnZ3Bsb3QoZGF0YSA9IERhdG9zX0xpbXBpb3MpICsNCiAgZ2VvbV9oaXN0b2dyYW0obWFwcGluZyA9IGFlcyh4ID0gUkVHX1JFUyksDQogICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF92aXJpZGlzX2QoKSArDQogIGZhY2V0X3dyYXAofiBBTk9fTkFDKSArDQogIGdndGl0bGUoIiBOYWNpZG9zIGVuIGNhZGEgcmVnafNuIGRlIENoaWxlIGVuIGVsIGHxbyAyMDEyIHkgZW4gZWwgYT9vIDIwMTYiKQ0KYGBgDQoNCmBgYHtyfQ0KR3JhZmlDT19vY2hvDQpgYGANCg0KDQoNCg0KDQo=