##===========================================================================##
## Paso 1: Limpiar espacio de trabajo e instalar paquetes                    ##
##===========================================================================##

install.packages("Coinprofile")
Error in install.packages : Updating loaded packages
install.packages("zoo")
Error in install.packages : Updating loaded packages
install.packages("stats")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Warning in install.packages :
  package ‘stats’ is in use and will not be installed
install.packages("plyr")
Error in install.packages : Updating loaded packages
# install.packages("coin")
# install.packages("Rdpack")
# install.packages("exactRankTests")
install.packages("ggplot2")
Error in install.packages : Updating loaded packages
library(Coinprofile)
library(zoo)
library(stats)
library(plyr)
library(ggplot2)
library(tidyverse)
library(dplyr)
library(readxl)
##===========================================================================##
## Paso 2: Importar las series
##===========================================================================##

inf_instxl <- read_excel("C:/Users/Hp/OneDrive/Escritorio/Inflación instantanea/Perfil coincidente infinst nic/Inflación instantanea base limpia.xlsx")


df_infinst <- inf_instxl %>%
  mutate(
    year = as.numeric(substr(Fecha, 1, 4)),
    month = as.numeric(substr(Fecha, 6, 7)),
    date = as.Date(paste0(year, "-", month, "-01")),
    quarter = quarter(date)
  )


df_infinst <- df_infinst %>%
  filter(
    year(date) != 2011 |        # mantener todo lo que no sea 2011
      !(                      # o si es 2011, solo mantener si NO son todos NA
        is.na(INFLATION_A0) &
        is.na(INFLATION_A1) &
        is.na(INFLATION_A2) &
        is.na(INFLATION_A3)
      )
  )

df_infinstfilt <- df_infinst %>% #filtrar 2025 por desbalance en la cantidad de años
  filter(
  year(date) != 2025)


##Para gráficos

# Reorganizar a largo
df_infinstlong <- df_infinst %>%
  select(Fecha, date, INFLATION_CONVENCIONAL, starts_with("INFLATION_A")) %>%
  pivot_longer(
    cols = -c(Fecha, date),
    names_to = "Serie",
    values_to = "Inflacion"
  ) 

df_pairs <- bind_rows(
  df_infinst %>%
    select(date, INFLATION_CONVENCIONAL, INFLATION_A0) %>%
    pivot_longer(cols = -date, names_to = "Serie", values_to = "Inflacion") %>%
    mutate(Grupo = "A0"),
install.packages("plyr")

  df_infinst %>%
Error: unexpected symbol in:
"
  df_infinst"
ggplot(df_pairs, aes(x = date, y = Inflacion, color = Serie)) +
  geom_line(size = 0.5, linetype="longdash") +
  #geom_point(color="black", size=0.5)+
  facet_wrap(~ Grupo, ncol = 2) +
  labs(
    title = "Comparación de la inflación interanual con la inflación instantanea",
    subtitle = "A0= K cero",
    x = "Fecha",
    y = "Inflación (%)",
    color = "Serie"
  ) +
  theme_classic() +
  theme(
    #strip.text = element_text(face = "bold"),
    # axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = ("bottom")
  )
Aviso: Removed 72 rows containing missing values or values outside the scale range (`geom_line()`).

LS0tDQp0aXRsZTogIkRldGVybWluYWNpw7NuIGRlbCBwZXJmaWwgY29pbmNpZGVudGUgLSBpbmZsYWNpw7NuIGluc3RhbnRhbmVhIE5pY2FyYWd1YSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQpgYGB7cn0NCiMjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IyMNCiMjIFBhc28gMTogTGltcGlhciBlc3BhY2lvIGRlIHRyYWJham8gZSBpbnN0YWxhciBwYXF1ZXRlcyAgICAgICAgICAgICAgICAgICAgIyMNCiMjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IyMNCg0KaW5zdGFsbC5wYWNrYWdlcygiQ29pbnByb2ZpbGUiKQ0KaW5zdGFsbC5wYWNrYWdlcygiem9vIikNCmluc3RhbGwucGFja2FnZXMoInN0YXRzIikNCmluc3RhbGwucGFja2FnZXMoInBseXIiKQ0KIyBpbnN0YWxsLnBhY2thZ2VzKCJjb2luIikNCiMgaW5zdGFsbC5wYWNrYWdlcygiUmRwYWNrIikNCiMgaW5zdGFsbC5wYWNrYWdlcygiZXhhY3RSYW5rVGVzdHMiKQ0KaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpDQoNCmxpYnJhcnkoQ29pbnByb2ZpbGUpDQpsaWJyYXJ5KHpvbykNCmxpYnJhcnkoc3RhdHMpDQpsaWJyYXJ5KHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWR4bCkNCg0KYGBgDQoNCmBgYHtyfQ0KIyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jIw0KIyMgUGFzbyAyOiBJbXBvcnRhciBsYXMgc2VyaWVzDQojIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMjDQoNCmluZl9pbnN0eGwgPC0gcmVhZF9leGNlbCgiQzovVXNlcnMvSHAvT25lRHJpdmUvRXNjcml0b3Jpby9JbmZsYWNpw7NuIGluc3RhbnRhbmVhL1BlcmZpbCBjb2luY2lkZW50ZSBpbmZpbnN0IG5pYy9JbmZsYWNpw7NuIGluc3RhbnRhbmVhIGJhc2UgbGltcGlhLnhsc3giKQ0KDQoNCmRmX2luZmluc3QgPC0gaW5mX2luc3R4bCAlPiUNCiAgbXV0YXRlKA0KICAgIHllYXIgPSBhcy5udW1lcmljKHN1YnN0cihGZWNoYSwgMSwgNCkpLA0KICAgIG1vbnRoID0gYXMubnVtZXJpYyhzdWJzdHIoRmVjaGEsIDYsIDcpKSwNCiAgICBkYXRlID0gYXMuRGF0ZShwYXN0ZTAoeWVhciwgIi0iLCBtb250aCwgIi0wMSIpKSwNCiAgICBxdWFydGVyID0gcXVhcnRlcihkYXRlKQ0KICApDQoNCg0KZGZfaW5maW5zdCA8LSBkZl9pbmZpbnN0ICU+JQ0KICBmaWx0ZXIoDQogICAgeWVhcihkYXRlKSAhPSAyMDExIHwgICAgICAgICMgbWFudGVuZXIgdG9kbyBsbyBxdWUgbm8gc2VhIDIwMTENCiAgICAgICEoICAgICAgICAgICAgICAgICAgICAgICMgbyBzaSBlcyAyMDExLCBzb2xvIG1hbnRlbmVyIHNpIE5PIHNvbiB0b2RvcyBOQQ0KICAgICAgICBpcy5uYShJTkZMQVRJT05fQTApICYNCiAgICAgICAgaXMubmEoSU5GTEFUSU9OX0ExKSAmDQogICAgICAgIGlzLm5hKElORkxBVElPTl9BMikgJg0KICAgICAgICBpcy5uYShJTkZMQVRJT05fQTMpDQogICAgICApDQogICkNCg0KZGZfaW5maW5zdGZpbHQgPC0gZGZfaW5maW5zdCAlPiUgI2ZpbHRyYXIgMjAyNSBwb3IgZGVzYmFsYW5jZSBlbiBsYSBjYW50aWRhZCBkZSBhw7Fvcw0KICBmaWx0ZXIoDQogIHllYXIoZGF0ZSkgIT0gMjAyNSkNCg0KDQojI1BhcmEgZ3LDoWZpY29zDQoNCiMgUmVvcmdhbml6YXIgYSBsYXJnbw0KZGZfaW5maW5zdGxvbmcgPC0gZGZfaW5maW5zdCAlPiUNCiAgc2VsZWN0KEZlY2hhLCBkYXRlLCBJTkZMQVRJT05fQ09OVkVOQ0lPTkFMLCBzdGFydHNfd2l0aCgiSU5GTEFUSU9OX0EiKSkgJT4lDQogIHBpdm90X2xvbmdlcigNCiAgICBjb2xzID0gLWMoRmVjaGEsIGRhdGUpLA0KICAgIG5hbWVzX3RvID0gIlNlcmllIiwNCiAgICB2YWx1ZXNfdG8gPSAiSW5mbGFjaW9uIg0KICApIA0KDQpkZl9wYWlycyA8LSBiaW5kX3Jvd3MoDQogIGRmX2luZmluc3QgJT4lDQogICAgc2VsZWN0KGRhdGUsIElORkxBVElPTl9DT05WRU5DSU9OQUwsIElORkxBVElPTl9BMCkgJT4lDQogICAgcGl2b3RfbG9uZ2VyKGNvbHMgPSAtZGF0ZSwgbmFtZXNfdG8gPSAiU2VyaWUiLCB2YWx1ZXNfdG8gPSAiSW5mbGFjaW9uIikgJT4lDQogICAgbXV0YXRlKEdydXBvID0gIkEwIiksDQoNCiAgZGZfaW5maW5zdCAlPiUNCiAgICBzZWxlY3QoZGF0ZSwgSU5GTEFUSU9OX0NPTlZFTkNJT05BTCwgSU5GTEFUSU9OX0ExKSAlPiUNCiAgICBwaXZvdF9sb25nZXIoY29scyA9IC1kYXRlLCBuYW1lc190byA9ICJTZXJpZSIsIHZhbHVlc190byA9ICJJbmZsYWNpb24iKSAlPiUNCiAgICBtdXRhdGUoR3J1cG8gPSAiQTEiKSwNCg0KICBkZl9pbmZpbnN0ICU+JQ0KICAgIHNlbGVjdChkYXRlLCBJTkZMQVRJT05fQ09OVkVOQ0lPTkFMLCBJTkZMQVRJT05fQTIpICU+JQ0KICAgIHBpdm90X2xvbmdlcihjb2xzID0gLWRhdGUsIG5hbWVzX3RvID0gIlNlcmllIiwgdmFsdWVzX3RvID0gIkluZmxhY2lvbiIpICU+JQ0KICAgIG11dGF0ZShHcnVwbyA9ICJBMiIpLA0KDQogIGRmX2luZmluc3QgJT4lDQogICAgc2VsZWN0KGRhdGUsIElORkxBVElPTl9DT05WRU5DSU9OQUwsIElORkxBVElPTl9BMykgJT4lDQogICAgcGl2b3RfbG9uZ2VyKGNvbHMgPSAtZGF0ZSwgbmFtZXNfdG8gPSAiU2VyaWUiLCB2YWx1ZXNfdG8gPSAiSW5mbGFjaW9uIikgJT4lDQogICAgbXV0YXRlKEdydXBvID0gIkEzIiksDQogIA0KICBkZl9pbmZpbnN0ICU+JQ0KICAgIHNlbGVjdChkYXRlLCBJTkZMQVRJT05fQ09OVkVOQ0lPTkFMLCBJTkZMQVRJT05fQTQpICU+JQ0KICAgIHBpdm90X2xvbmdlcihjb2xzPSAtZGF0ZSwgbmFtZXNfdG89IlNlcmllIiwgdmFsdWVzX3RvPSJJbmZsYWNpb24iKSAlPiUNCiAgICBtdXRhdGUoR3J1cG8gPSAiQTQiKQ0KKQ0KDQpkZmZpbHRfaW5maW5zdCA8LSBkZl9pbmZpbnN0ICU+JQ0KICBtdXRhdGUoDQogICAgeWVhciA9IGFzLm51bWVyaWMoc3Vic3RyKEZlY2hhLCAxLCA0KSksDQogICAgbW9udGggPSBhcy5udW1lcmljKHN1YnN0cihGZWNoYSwgNiwgNykpLA0KICAgIGRhdGUgPSBhcy5EYXRlKHBhc3RlMCh5ZWFyLCAiLSIsIG1vbnRoLCAiLTAxIikpLA0KICAgIHF1YXJ0ZXIgPSBxdWFydGVyKGRhdGUpDQogICkNCg0KDQoNCmBgYA0KDQpgYGB7cn0NCiMjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IyMNCiMjIFBhc28gMzogR3JhZmljYXIgbGFzIHNlcmllcyBlbXBhcmVqYWRhcw0KIyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jIw0KDQpnZ3Bsb3QoZGZfaW5maW5zdGxvbmcsIGFlcyh4ID0gZGF0ZSwgeSA9IEluZmxhY2lvbiwgY29sb3I9IFNlcmllKSkgKw0KICBnZW9tX2xpbmUoc2l6ZSA9IDAuNSkgKw0KICAjZmFjZXRfd3JhcCh+IFNlcmllLCBuY29sID0gMiwgc2NhbGVzID0gImZyZWVfeSIpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJDb21wYXJhY2nDs24gZGUgSW5mbGFjacOzbiBDb252ZW5jaW9uYWwgY29uIFNlcmllcyBBbHRlcm5hdGl2YXMiLA0KICAgIHggPSAiRmVjaGEiLA0KICAgIHkgPSAiSW5mbGFjacOzbiAoJSkiLA0KICAgIGNvbG9yID0gIlNlcmllIiwNCiAgICBjYXB0aW9uPSAiRnVlbnRlOiBEYXRvcyBkZWwgQmFuY28gQ2VudHJhbCBkZSBOaWNhcmFndWEiDQogICkgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICB0aGVtZSgNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpLA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkNCiAgKQ0KDQoNCmdncGxvdChkZl9wYWlycywgYWVzKHggPSBkYXRlLCB5ID0gSW5mbGFjaW9uLCBjb2xvciA9IFNlcmllKSkgKw0KICBnZW9tX2xpbmUoc2l6ZSA9IDAuNSwgbGluZXR5cGU9ImxvbmdkYXNoIikgKw0KICAjZ2VvbV9wb2ludChjb2xvcj0iYmxhY2siLCBzaXplPTAuNSkrDQogIGZhY2V0X3dyYXAofiBHcnVwbywgbmNvbCA9IDIpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJDb21wYXJhY2nDs24gZGUgbGEgaW5mbGFjacOzbiBpbnRlcmFudWFsIGNvbiBsYSBpbmZsYWNpw7NuIGluc3RhbnRhbmVhIiwNCiAgICBzdWJ0aXRsZSA9ICJBMD0gSyBjZXJvIiwNCiAgICB4ID0gIkZlY2hhIiwNCiAgICB5ID0gIkluZmxhY2nDs24gKCUpIiwNCiAgICBjb2xvciA9ICJTZXJpZSINCiAgKSArDQogIHRoZW1lX2NsYXNzaWMoKSArDQogIHRoZW1lKA0KICAgICNzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpLA0KICAgICMgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAoImJvdHRvbSIpDQogICkNCg0KDQpgYGANCmBgYHtyfQ0KIyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jIw0KIyMgUGFzbyA0OiBPYnRlbmVyIGVsIHBlcmZpbCBjb2luY2lkZW50ZQ0KIyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jIw0KDQpjb2luQTAgPC0gY29pbmNpZGVudF9wcm9maWxlKGRmX2luZmluc3QkSU5GTEFUSU9OX0EwLCBkZl9pbmZpbnN0JElORkxBVElPTl9DT05WRU5DSU9OQUwsIDEyLCAxMywgIkluZmxhbmNpw7NuIGluc3RhbnTDoW5lYSBhPTAiLCAiSW5mbGFjacOzbiBpbnRlcmFudWFsIiwgVFJVRSwgMjAxMiwgMjAyNSwgMTIsIDYsICJJbmZsYWNpw7NuIGluc3RhbnTDoW5lYSBhPTAiLCAiSW5mbGFjacOzbiBpbnRlcmFudWFsIiwgIkluZmxhY2nDs24gaW5zdGFudMOhbmVhIGE9MCBlIEluZmxhY2nDs24gaW50ZXJhbnVhbCIpDQoNCmNvaW5BMSA8LSBjb2luY2lkZW50X3Byb2ZpbGUoZGZfaW5maW5zdCRJTkZMQVRJT05fQTEsIGRmX2luZmluc3QkSU5GTEFUSU9OX0NPTlZFTkNJT05BTCwgMTIsIDEzLCAiSW5mbGFuY2nDs24gaW5zdGFudMOhbmVhIGE9MSIsICJJbmZsYWNpw7NuIGludGVyYW51YWwiLCBUUlVFLCAyMDEyLCAyMDI1LCAxMiwgNiwgIkluZmxhY2nDs24gaW5zdGFudMOhbmVhIGE9MSIsICJJbmZsYWNpw7NuIGludGVyYW51YWwiLCAiSW5mbGFjacOzbiBpbnN0YW50w6FuZWEgYT0xIGUgSW5mbGFjacOzbiBpbnRlcmFudWFsIikNCg0KY29pbkEyIDwtIGNvaW5jaWRlbnRfcHJvZmlsZShkZl9pbmZpbnN0JElORkxBVElPTl9BMiwgZGZfaW5maW5zdCRJTkZMQVRJT05fQ09OVkVOQ0lPTkFMLCAxMiwgMTMsICJJbmZsYW5jacOzbiBpbnN0YW50w6FuZWEgYT0yIiwgIkluZmxhY2nDs24gaW50ZXJhbnVhbCIsIFRSVUUsIDIwMTIsIDIwMjUsIDEyLCA2LCAiSW5mbGFjacOzbiBpbnN0YW50w6FuZWEgYT0yIiwgIkluZmxhY2nDs24gaW50ZXJhbnVhbCIsICJJbmZsYWNpw7NuIGluc3RhbnTDoW5lYSBhPTIgZSBJbmZsYWNpw7NuIGludGVyYW51YWwiKQ0KDQpjb2luQTMgPC0gY29pbmNpZGVudF9wcm9maWxlKGRmX2luZmluc3QkSU5GTEFUSU9OX0EzLCBkZl9pbmZpbnN0JElORkxBVElPTl9DT05WRU5DSU9OQUwsIDEyLCAxMywgIkluZmxhbmNpw7NuIGluc3RhbnTDoW5lYSBhPTMiLCAiSW5mbGFjacOzbiBpbnRlcmFudWFsIiwgVFJVRSwgMjAxMiwgMjAyNSwgMTIsIDYsICJJbmZsYWNpw7NuIGluc3RhbnTDoW5lYSBhPTMiLCAiSW5mbGFjacOzbiBpbnRlcmFudWFsIiwgIkluZmxhY2nDs24gaW5zdGFudMOhbmVhIGE9MyBlIEluZmxhY2nDs24gaW50ZXJhbnVhbCIpDQoNCmNvaW5BNCA8LSBjb2luY2lkZW50X3Byb2ZpbGUoZGZfaW5maW5zdCRJTkZMQVRJT05fQTQsIGRmX2luZmluc3QkSU5GTEFUSU9OX0NPTlZFTkNJT05BTCwgMTIsIDEzLCAiSW5mbGFuY2nDs24gaW5zdGFudMOhbmVhIGE9NCIsICJJbmZsYWNpw7NuIGludGVyYW51YWwiLCBUUlVFLCAyMDEyLCAyMDI1LCAxMiwgNiwgIkluZmxhY2nDs24gaW5zdGFudMOhbmVhIGE9NCIsICJJbmZsYWNpw7NuIGludGVyYW51YWwiLCAiSW5mbGFjacOzbiBpbnN0YW50w6FuZWEgYT00IGUgSW5mbGFjacOzbiBpbnRlcmFudWFsIikNCg0Kc3RyKGNvaW5BMCkNCg0KYGBgDQoNCg0KYGBge3J9DQojIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMjDQojIyBQYXNvIDU6IEdyw6FmaWNhciBsb3MgY2luY28gcGVyZmlsZXMNCiMjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IyMNCmRmQTAgPC0gY2JpbmQoY29pbkEwJFByb2ZpbGUsIGEgPSAiYSA9IDAiKQ0KZGZBMSA8LSBjYmluZChjb2luQTEkUHJvZmlsZSwgYSA9ICJhID0gMSIpDQpkZkEyIDwtIGNiaW5kKGNvaW5BMiRQcm9maWxlLCBhID0gImEgPSAyIikNCmRmQTMgPC0gY2JpbmQoY29pbkEzJFByb2ZpbGUsIGEgPSAiYSA9IDMiKQ0KZGZBNCA8LSBjYmluZChjb2luQTQkUHJvZmlsZSwgYSA9ICJhID0gNCIpDQoNCiMgVW5pciB0b2RvIGVuIHVuIHNvbG8gZGF0YSBmcmFtZQ0KbGlicmFyeShkcGx5cikNCmRmX2FsbCA8LSBiaW5kX3Jvd3MoZGZBMCwgZGZBMSwgZGZBMiwgZGZBMywgZGZBNCkNCg0KZGZfYWxsJGEgPC0gZmFjdG9yKGRmX2FsbCRhLCBsZXZlbHMgPSBjKCJhID0gMCIsICJhID0gMSIsICJhID0gMiIsICJhID0gMyIsICJhID0gNCIpKQ0KDQpkZl9hbGwgPC0gZGZfYWxsICU+JQ0KICBtdXRhdGUocF9ub3JtID0gcC52YWx1ZSAvIDEwMCkgIA0KDQpnZ3Bsb3QoZGZfYWxsLCBhZXMoeCA9IGxhZ3MsIHkgPSBwX25vcm0pKSArDQogIGdlb21fY29sKGZpbGwgPSAiZ3JheSIpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC4wNSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGUgPSAiZGFzaGVkIikgKw0KICBmYWNldF93cmFwKH4gYSwgbnJvdyA9IDMpICsgICMgQ2FtYmlhciBhIDMgZmlsYXMNCiAgbGFicygNCiAgICB0aXRsZSA9ICIiLA0KICAgIHggPSAiTGFnIiwNCiAgICB5ID0gIlAtdmFsdWUiDQogICkgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICB0aGVtZSgNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIHNpemUgPSAxNCkNCiAgKQ0KDQpgYGANCg0K