- A01368516 - Nayeli Peña Martínez
- A00833113 - Avril Lobato
- A01771127 - Lesly Darian Romero Vazquez
- A00831105 - Jazmin del Carmen Cortez Mendoza
- A01198184 - Karla Sánchez del Ángel
- A01198186 - Luis Angel Elizondo Gallegos
Problemática A
Suponga que desea invertir $ 10,000 (DLSA) en el mercado de valores
comprando acciones en una de dos empresas: A y B. Las acciones de la
empresa A, aunque son riesgosas, podrían generar un rendimiento del 50%
durante el próximo año, si las condiciones del mercado de valores no son
favorables. (“mercado bajista o bear”), la acción puede perder el 20% de
su valor. La empresa B proporciona inversiones seguras con un
rendimiento del 15 % en un mercado “alcista o bull” , y solo del 5 % en
un mercado “bajista”. Todas las publicaciones que se han predicen un 60%
de posibilidades de un mercado “alcista”. Dibuje un árbol de decisión y
determine la mejor estrategia.
Librerías
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(rpart)
library(rpart.plot)
Modelo de Árbol de decisión
# Fijar semilla para reproducibilidad
set.seed(411)
# Simulación de datos
data <- tibble(
Mercado = sample(c("Bull", "Bear"), 200, replace = TRUE, prob = c(0.6, 0.4)),
Empresa = sample(c("A", "B"), 200, replace = TRUE),
Retorno = case_when(
Empresa == "A" & Mercado == "Bull" ~ 0.5,
Empresa == "A" & Mercado == "Bear" ~ -0.2,
Empresa == "B" & Mercado == "Bull" ~ 0.15,
Empresa == "B" & Mercado == "Bear" ~ 0.05
)
)
# Convertir a factor
data <- data %>% mutate(across(c(Mercado, Empresa), as.factor))
# Crear modelo de árbol de decisión
modelo <- rpart(Retorno ~ Mercado + Empresa, data = data, method = "anova")
# Calcular valor esperado
# Definir valores de inversión
inversion <- 10000
valor_A <- inversion * c(0.5, -0.2)
valor_B <- inversion * c(0.15, 0.05)
# Calcular expectativas
prob_bull <- 0.6
prob_bear <- 0.4
expected_return_A <- (prob_bull * valor_A[1]) + (prob_bear * valor_A[2])
expected_return_B <- (prob_bull * valor_B[1]) + (prob_bear * valor_B[2])
best_investment <- ifelse(expected_return_A > expected_return_B, "Empresa A", "Empresa B")
cat("La mejor estrategia de inversión es invertir en", best_investment, "\n")
## La mejor estrategia de inversión es invertir en Empresa A
Visualización de árbol
ggplot2::theme_set(theme_minimal())
rpart.plot(modelo,
type = 2,
extra = 101,
under = TRUE,
faclen = 0,
main = "Árbol de Decisión para la Inversión")

Predicción para un nuevo mercado
nuevo_escenario <- tibble(
Mercado = factor("Bull", levels = c("Bull", "Bear")),
Empresa = factor("A", levels = c("A", "B"))
)
prediccion <- predict(modelo, nuevo_escenario)
cat("Retorno esperado para la Empresa A en mercado Bull:", round(prediccion, 2), "\n")
## Retorno esperado para la Empresa A en mercado Bull: 0.5
¿Cómo debe invertir su dinero?
Según el análisis del árbol de decisión y los valores esperados, la
mejor estrategia de inversión es invertir en la empresa A ya que, al
calcular los rendimientos esperados considerando la probabilidad de un
mercado alcista (60%) y bajista (40%), la empresa A tiene un mayor
retorno esperado en comparación con la empresa B. Aunque A es más
riesgosa, su ganancia potencial supera la de B en el largo plazo.
No obstante, si se prefiere una inversión más segura con menor
riesgo, la empresa B sería la mejor opción, pero tiene menor
rentabilidad.
Problemática B
La empresa Farmer McCoy puede sembrar maíz o soya, cuenta con todo el
ecosistema para sembrar ambos insumos agroalimentarios. Las
probabilidades de que los precios de la siguiente cosecha suban, no
cambien o bajen, son 25%, 30% y 45% respectivamente. Si los precios
suben, la cosecha de maíz redituará un ingreso neto de $30,000 DLSA y la
de soya redituará un ingreso neto de $10,000. Si los precios no cambian,
la empresa McCoy apenas saldrá tablas. Pero si los precios bajan, las
cosechas de maíz y soya sufrirán pérdidas por $35,000 y $5,000
respectivamente. Dibuje un árbol de decisión y determine la mejor
estrategia.
Librerías
library(tidyverse)
library(rpart)
library(rpart.plot)
Modelo de Árbol de decisión
# Fijar semilla para reproducibilidad
set.seed(411)
# Simulación de datos
data <- tibble(
Precio = sample(c("Sube", "No Cambia", "Baja"), 200, replace = TRUE, prob = c(0.25, 0.30, 0.45)),
Cultivo = sample(c("Maíz", "Soya"), 200, replace = TRUE),
Ingreso = case_when(
Cultivo == "Maíz" & Precio == "Sube" ~ 30000,
Cultivo == "Maíz" & Precio == "No Cambia" ~ 0,
Cultivo == "Maíz" & Precio == "Baja" ~ -35000,
Cultivo == "Soya" & Precio == "Sube" ~ 10000,
Cultivo == "Soya" & Precio == "No Cambia" ~ 0,
Cultivo == "Soya" & Precio == "Baja" ~ -5000
)
)
# Convertir a factor
data <- data %>% mutate(across(c(Precio, Cultivo), as.factor))
# Crear modelo de árbol de decisión
modelo <- rpart(Ingreso ~ Precio + Cultivo, data = data, method = "anova")
# Calcular valor esperado
prob_sube <- 0.25
prob_no_cambia <- 0.30
prob_baja <- 0.45
# Valores esperados para cada cultivo
expected_return_maiz <- (prob_sube * 30000) + (prob_no_cambia * 0) + (prob_baja * -35000)
expected_return_soya <- (prob_sube * 10000) + (prob_no_cambia * 0) + (prob_baja * -5000)
best_investment <- ifelse(expected_return_maiz > expected_return_soya, "Maíz", "Soya")
cat("La mejor estrategia de inversión es sembrar", best_investment, "\n")
## La mejor estrategia de inversión es sembrar Soya
Visualizar el árbol
ggplot2::theme_set(theme_minimal())
rpart.plot(modelo,
type = 2,
extra = 101,
under = TRUE,
faclen = 0,
main = "Árbol de Decisión para la Siembra")

Predicción para un nuevo escenario
nuevo_escenario <- tibble(
Precio = factor("Sube", levels = c("Sube", "No Cambia", "Baja")),
Cultivo = factor("Maíz", levels = c("Maíz", "Soya"))
)
prediccion <- predict(modelo, nuevo_escenario)
cat("Ingreso esperado para Maíz si el precio sube:", round(prediccion, 2), "\n")
## Ingreso esperado para Maíz si el precio sube: 30000
¿Cuál es la cosecha que debe sembrar la empresa McCoy?
Con base en el análisis hecho del árbol de decisión y el cálculo del
valor esperado, la mejor estrategia para la empresa McCoy es sembrar
soya. Esto se debe a que el valor esperado de la siembra de soya es
mayor que el de maíz, ya que las pérdidas en un escenario de baja de
precios son menores en comparación con el maíz, que tiene una mayor
volatilidad y riesgo.
Si McCoy busca maximizar su estabilidad financiera y minimizar
riesgos, la mejor opción es optar por la soya.
LS0tDQp0aXRsZTogIkFjdGl2aWRhZCA0LiBTaW11bGFjacOzbiBkZSBlc2NlbmFyaW9zIGRlIHJpZXNnbyAoYWN0aXZpZGFkIGluZGl2aWR1YWwpIg0KYXV0aG9yOiAiRXF1aXBvIDYiDQpkYXRlOiAiMjAyNS0wMi0xOSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHVuaXRlZA0KICAgIGhpZ2hsaWdodDogcHlnbWVudHMNCi0tLQ0KDQoqIEEwMTM2ODUxNiAtIE5heWVsaSBQZcOxYSBNYXJ0w61uZXoNCiogQTAwODMzMTEzIC0gQXZyaWwgTG9iYXRvIA0KKiBBMDE3NzExMjcgLSBMZXNseSBEYXJpYW4gUm9tZXJvIFZhenF1ZXoNCiogQTAwODMxMTA1IC0gSmF6bWluIGRlbCBDYXJtZW4gQ29ydGV6IE1lbmRvemENCiogQTAxMTk4MTg0IC0gS2FybGEgU8OhbmNoZXogZGVsIMOBbmdlbCANCiogQTAxMTk4MTg2IC0gTHVpcyBBbmdlbCBFbGl6b25kbyBHYWxsZWdvcyANCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQojICoqUHJvYmxlbcOhdGljYSBBKioNCg0KU3Vwb25nYSBxdWUgZGVzZWEgaW52ZXJ0aXIgJCAxMCwwMDAgIChETFNBKSBlbiBlbCBtZXJjYWRvIGRlIHZhbG9yZXMgY29tcHJhbmRvIGFjY2lvbmVzIGVuIHVuYSBkZSBkb3MgZW1wcmVzYXM6IEEgeSBCLiBMYXMgYWNjaW9uZXMgZGUgbGEgZW1wcmVzYSBBLCBhdW5xdWUgc29uIHJpZXNnb3NhcywgcG9kcsOtYW4gZ2VuZXJhciB1biByZW5kaW1pZW50byBkZWwgNTAlIGR1cmFudGUgZWwgcHLDs3hpbW8gYcOxbywgc2kgbGFzIGNvbmRpY2lvbmVzIGRlbCBtZXJjYWRvIGRlIHZhbG9yZXMgbm8gc29uIGZhdm9yYWJsZXMuICgibWVyY2FkbyBiYWppc3RhIG8gYmVhciIpLCBsYSBhY2Npw7NuIHB1ZWRlIHBlcmRlciBlbCAyMCUgZGUgc3UgdmFsb3IuIExhIGVtcHJlc2EgQiBwcm9wb3JjaW9uYSBpbnZlcnNpb25lcyBzZWd1cmFzIGNvbiB1biByZW5kaW1pZW50byBkZWwgMTUgJSBlbiB1biBtZXJjYWRvIOKAnGFsY2lzdGEgbyBidWxsIOKAnSAsIHkgc29sbyBkZWwgNSAlIGVuIHVuIG1lcmNhZG8g4oCcYmFqaXN0YeKAnS4gVG9kYXMgbGFzIHB1YmxpY2FjaW9uZXMgcXVlIHNlIGhhbiBwcmVkaWNlbiB1biA2MCUgZGUgcG9zaWJpbGlkYWRlcyBkZSB1biBtZXJjYWRvICJhbGNpc3RhIi4gRGlidWplIHVuIMOhcmJvbCBkZSBkZWNpc2nDs24geSBkZXRlcm1pbmUgbGEgbWVqb3IgZXN0cmF0ZWdpYS4NCg0KDQojIyBMaWJyZXLDrWFzDQpgYGB7ciB9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocnBhcnQpDQpsaWJyYXJ5KHJwYXJ0LnBsb3QpDQpgYGANCg0KIyMgTW9kZWxvIGRlIMOBcmJvbCBkZSBkZWNpc2nDs24NCmBgYHtyIH0NCiMgRmlqYXIgc2VtaWxsYSBwYXJhIHJlcHJvZHVjaWJpbGlkYWQNCnNldC5zZWVkKDQxMSkNCg0KIyBTaW11bGFjacOzbiBkZSBkYXRvcw0KZGF0YSA8LSB0aWJibGUoDQogIE1lcmNhZG8gPSBzYW1wbGUoYygiQnVsbCIsICJCZWFyIiksIDIwMCwgcmVwbGFjZSA9IFRSVUUsIHByb2IgPSBjKDAuNiwgMC40KSksDQogIEVtcHJlc2EgPSBzYW1wbGUoYygiQSIsICJCIiksIDIwMCwgcmVwbGFjZSA9IFRSVUUpLA0KICBSZXRvcm5vID0gY2FzZV93aGVuKA0KICAgIEVtcHJlc2EgPT0gIkEiICYgTWVyY2FkbyA9PSAiQnVsbCIgfiAwLjUsDQogICAgRW1wcmVzYSA9PSAiQSIgJiBNZXJjYWRvID09ICJCZWFyIiB+IC0wLjIsDQogICAgRW1wcmVzYSA9PSAiQiIgJiBNZXJjYWRvID09ICJCdWxsIiB+IDAuMTUsDQogICAgRW1wcmVzYSA9PSAiQiIgJiBNZXJjYWRvID09ICJCZWFyIiB+IDAuMDUNCiAgKQ0KKQ0KDQojIENvbnZlcnRpciBhIGZhY3Rvcg0KZGF0YSA8LSBkYXRhICU+JSBtdXRhdGUoYWNyb3NzKGMoTWVyY2FkbywgRW1wcmVzYSksIGFzLmZhY3RvcikpDQoNCiMgQ3JlYXIgbW9kZWxvIGRlIMOhcmJvbCBkZSBkZWNpc2nDs24NCm1vZGVsbyA8LSBycGFydChSZXRvcm5vIH4gTWVyY2FkbyArIEVtcHJlc2EsIGRhdGEgPSBkYXRhLCBtZXRob2QgPSAiYW5vdmEiKQ0KDQojIENhbGN1bGFyIHZhbG9yIGVzcGVyYWRvDQojIERlZmluaXIgdmFsb3JlcyBkZSBpbnZlcnNpw7NuDQppbnZlcnNpb24gPC0gMTAwMDANCnZhbG9yX0EgPC0gaW52ZXJzaW9uICogYygwLjUsIC0wLjIpDQp2YWxvcl9CIDwtIGludmVyc2lvbiAqIGMoMC4xNSwgMC4wNSkNCg0KIyBDYWxjdWxhciBleHBlY3RhdGl2YXMNCnByb2JfYnVsbCA8LSAwLjYNCnByb2JfYmVhciA8LSAwLjQNCmV4cGVjdGVkX3JldHVybl9BIDwtIChwcm9iX2J1bGwgKiB2YWxvcl9BWzFdKSArIChwcm9iX2JlYXIgKiB2YWxvcl9BWzJdKQ0KZXhwZWN0ZWRfcmV0dXJuX0IgPC0gKHByb2JfYnVsbCAqIHZhbG9yX0JbMV0pICsgKHByb2JfYmVhciAqIHZhbG9yX0JbMl0pDQoNCmJlc3RfaW52ZXN0bWVudCA8LSBpZmVsc2UoZXhwZWN0ZWRfcmV0dXJuX0EgPiBleHBlY3RlZF9yZXR1cm5fQiwgIkVtcHJlc2EgQSIsICJFbXByZXNhIEIiKQ0KDQpjYXQoIkxhIG1lam9yIGVzdHJhdGVnaWEgZGUgaW52ZXJzacOzbiBlcyBpbnZlcnRpciBlbiIsIGJlc3RfaW52ZXN0bWVudCwgIlxuIikNCmBgYA0KDQojIyBWaXN1YWxpemFjacOzbiBkZSDDoXJib2wNCmBgYHtyIH0NCmdncGxvdDI6OnRoZW1lX3NldCh0aGVtZV9taW5pbWFsKCkpDQpycGFydC5wbG90KG1vZGVsbywgDQogICAgICAgICAgIHR5cGUgPSAyLA0KICAgICAgICAgICBleHRyYSA9IDEwMSwgDQogICAgICAgICAgIHVuZGVyID0gVFJVRSwgDQogICAgICAgICAgIGZhY2xlbiA9IDAsIA0KICAgICAgICAgICBtYWluID0gIsOBcmJvbCBkZSBEZWNpc2nDs24gcGFyYSBsYSBJbnZlcnNpw7NuIikNCmBgYA0KDQojIyBQcmVkaWNjacOzbiBwYXJhIHVuIG51ZXZvIG1lcmNhZG8NCmBgYHtyfQ0KbnVldm9fZXNjZW5hcmlvIDwtIHRpYmJsZSgNCiAgTWVyY2FkbyA9IGZhY3RvcigiQnVsbCIsIGxldmVscyA9IGMoIkJ1bGwiLCAiQmVhciIpKSwNCiAgRW1wcmVzYSA9IGZhY3RvcigiQSIsIGxldmVscyA9IGMoIkEiLCAiQiIpKQ0KKQ0KDQpwcmVkaWNjaW9uIDwtIHByZWRpY3QobW9kZWxvLCBudWV2b19lc2NlbmFyaW8pDQoNCmNhdCgiUmV0b3JubyBlc3BlcmFkbyBwYXJhIGxhIEVtcHJlc2EgQSBlbiBtZXJjYWRvIEJ1bGw6Iiwgcm91bmQocHJlZGljY2lvbiwgMiksICJcbiIpDQpgYGANCg0KIyMgwr9Dw7NtbyBkZWJlIGludmVydGlyIHN1IGRpbmVybz8NClNlZ8O6biBlbCBhbsOhbGlzaXMgZGVsIMOhcmJvbCBkZSBkZWNpc2nDs24geSBsb3MgdmFsb3JlcyBlc3BlcmFkb3MsIGxhIG1lam9yIGVzdHJhdGVnaWEgZGUgaW52ZXJzacOzbiBlcyBpbnZlcnRpciBlbiBsYSBlbXByZXNhIEEgeWEgcXVlLCBhbCBjYWxjdWxhciBsb3MgcmVuZGltaWVudG9zIGVzcGVyYWRvcyBjb25zaWRlcmFuZG8gbGEgcHJvYmFiaWxpZGFkIGRlIHVuIG1lcmNhZG8gYWxjaXN0YSAoNjAlKSB5IGJhamlzdGEgKDQwJSksIGxhIGVtcHJlc2EgQSB0aWVuZSB1biBtYXlvciByZXRvcm5vIGVzcGVyYWRvIGVuIGNvbXBhcmFjacOzbiBjb24gbGEgZW1wcmVzYSBCLiBBdW5xdWUgQSBlcyBtw6FzIHJpZXNnb3NhLCBzdSBnYW5hbmNpYSBwb3RlbmNpYWwgc3VwZXJhIGxhIGRlIEIgZW4gZWwgbGFyZ28gcGxhem8uDQoNCk5vIG9ic3RhbnRlLCBzaSBzZSBwcmVmaWVyZSB1bmEgaW52ZXJzacOzbiBtw6FzIHNlZ3VyYSBjb24gbWVub3Igcmllc2dvLCBsYSBlbXByZXNhIEIgc2Vyw61hIGxhIG1lam9yIG9wY2nDs24sIHBlcm8gdGllbmUgbWVub3IgcmVudGFiaWxpZGFkLg0KDQoNCg0KIyAqKlByb2JsZW3DoXRpY2EgQioqDQoNCkxhIGVtcHJlc2EgRmFybWVyIE1jQ295IHB1ZWRlIHNlbWJyYXIgbWHDrXogbyBzb3lhLCBjdWVudGEgY29uIHRvZG8gZWwgZWNvc2lzdGVtYSBwYXJhIHNlbWJyYXIgYW1ib3MgaW5zdW1vcyBhZ3JvYWxpbWVudGFyaW9zLiBMYXMgcHJvYmFiaWxpZGFkZXMgZGUgcXVlIGxvcyBwcmVjaW9zIGRlIGxhIHNpZ3VpZW50ZSBjb3NlY2hhIHN1YmFuLCBubyBjYW1iaWVuIG8gYmFqZW4sIHNvbiAyNSUsIDMwJSB5IDQ1JSByZXNwZWN0aXZhbWVudGUuIFNpIGxvcyBwcmVjaW9zIHN1YmVuLCBsYSBjb3NlY2hhIGRlIG1hw616IHJlZGl0dWFyw6EgdW4gaW5ncmVzbyBuZXRvIGRlICQzMCwwMDAgRExTQSB5IGxhIGRlIHNveWEgcmVkaXR1YXLDoSB1biBpbmdyZXNvIG5ldG8gZGUgJDEwLDAwMC4gU2kgbG9zIHByZWNpb3Mgbm8gY2FtYmlhbiwgbGEgZW1wcmVzYSBNY0NveSBhcGVuYXMgc2FsZHLDoSB0YWJsYXMuIFBlcm8gc2kgbG9zIHByZWNpb3MgYmFqYW4sIGxhcyBjb3NlY2hhcyBkZSBtYcOteiB5IHNveWEgc3Vmcmlyw6FuIHDDqXJkaWRhcyBwb3IgJDM1LDAwMCB5ICQ1LDAwMCByZXNwZWN0aXZhbWVudGUuIERpYnVqZSB1biDDoXJib2wgZGUgZGVjaXNpw7NuIHkgZGV0ZXJtaW5lIGxhIG1lam9yIGVzdHJhdGVnaWEuDQoNCg0KIyMgTGlicmVyw61hcw0KYGBge3IgfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHJwYXJ0KQ0KbGlicmFyeShycGFydC5wbG90KQ0KYGBgDQoNCiMjIE1vZGVsbyBkZSDDgXJib2wgZGUgZGVjaXNpw7NuDQpgYGB7cn0NCiMgRmlqYXIgc2VtaWxsYSBwYXJhIHJlcHJvZHVjaWJpbGlkYWQNCnNldC5zZWVkKDQxMSkNCg0KIyBTaW11bGFjacOzbiBkZSBkYXRvcw0KZGF0YSA8LSB0aWJibGUoDQogIFByZWNpbyA9IHNhbXBsZShjKCJTdWJlIiwgIk5vIENhbWJpYSIsICJCYWphIiksIDIwMCwgcmVwbGFjZSA9IFRSVUUsIHByb2IgPSBjKDAuMjUsIDAuMzAsIDAuNDUpKSwNCiAgQ3VsdGl2byA9IHNhbXBsZShjKCJNYcOteiIsICJTb3lhIiksIDIwMCwgcmVwbGFjZSA9IFRSVUUpLA0KICBJbmdyZXNvID0gY2FzZV93aGVuKA0KICAgIEN1bHRpdm8gPT0gIk1hw616IiAmIFByZWNpbyA9PSAiU3ViZSIgfiAzMDAwMCwNCiAgICBDdWx0aXZvID09ICJNYcOteiIgJiBQcmVjaW8gPT0gIk5vIENhbWJpYSIgfiAwLA0KICAgIEN1bHRpdm8gPT0gIk1hw616IiAmIFByZWNpbyA9PSAiQmFqYSIgfiAtMzUwMDAsDQogICAgQ3VsdGl2byA9PSAiU295YSIgJiBQcmVjaW8gPT0gIlN1YmUiIH4gMTAwMDAsDQogICAgQ3VsdGl2byA9PSAiU295YSIgJiBQcmVjaW8gPT0gIk5vIENhbWJpYSIgfiAwLA0KICAgIEN1bHRpdm8gPT0gIlNveWEiICYgUHJlY2lvID09ICJCYWphIiB+IC01MDAwDQogICkNCikNCg0KIyBDb252ZXJ0aXIgYSBmYWN0b3INCmRhdGEgPC0gZGF0YSAlPiUgbXV0YXRlKGFjcm9zcyhjKFByZWNpbywgQ3VsdGl2byksIGFzLmZhY3RvcikpDQoNCiMgQ3JlYXIgbW9kZWxvIGRlIMOhcmJvbCBkZSBkZWNpc2nDs24NCm1vZGVsbyA8LSBycGFydChJbmdyZXNvIH4gUHJlY2lvICsgQ3VsdGl2bywgZGF0YSA9IGRhdGEsIG1ldGhvZCA9ICJhbm92YSIpDQoNCiMgQ2FsY3VsYXIgdmFsb3IgZXNwZXJhZG8NCnByb2Jfc3ViZSA8LSAwLjI1DQpwcm9iX25vX2NhbWJpYSA8LSAwLjMwDQpwcm9iX2JhamEgPC0gMC40NQ0KDQojIFZhbG9yZXMgZXNwZXJhZG9zIHBhcmEgY2FkYSBjdWx0aXZvDQpleHBlY3RlZF9yZXR1cm5fbWFpeiA8LSAocHJvYl9zdWJlICogMzAwMDApICsgKHByb2Jfbm9fY2FtYmlhICogMCkgKyAocHJvYl9iYWphICogLTM1MDAwKQ0KZXhwZWN0ZWRfcmV0dXJuX3NveWEgPC0gKHByb2Jfc3ViZSAqIDEwMDAwKSArIChwcm9iX25vX2NhbWJpYSAqIDApICsgKHByb2JfYmFqYSAqIC01MDAwKQ0KDQpiZXN0X2ludmVzdG1lbnQgPC0gaWZlbHNlKGV4cGVjdGVkX3JldHVybl9tYWl6ID4gZXhwZWN0ZWRfcmV0dXJuX3NveWEsICJNYcOteiIsICJTb3lhIikNCg0KY2F0KCJMYSBtZWpvciBlc3RyYXRlZ2lhIGRlIGludmVyc2nDs24gZXMgc2VtYnJhciIsIGJlc3RfaW52ZXN0bWVudCwgIlxuIikNCmBgYA0KDQojIyBWaXN1YWxpemFyIGVsIMOhcmJvbA0KYGBge3J9DQpnZ3Bsb3QyOjp0aGVtZV9zZXQodGhlbWVfbWluaW1hbCgpKQ0KcnBhcnQucGxvdChtb2RlbG8sIA0KICAgICAgICAgICB0eXBlID0gMiwNCiAgICAgICAgICAgZXh0cmEgPSAxMDEsIA0KICAgICAgICAgICB1bmRlciA9IFRSVUUsIA0KICAgICAgICAgICBmYWNsZW4gPSAwLCANCiAgICAgICAgICAgbWFpbiA9ICLDgXJib2wgZGUgRGVjaXNpw7NuIHBhcmEgbGEgU2llbWJyYSIpDQpgYGANCg0KIyMgUHJlZGljY2nDs24gcGFyYSB1biBudWV2byBlc2NlbmFyaW8NCmBgYHtyfQ0KbnVldm9fZXNjZW5hcmlvIDwtIHRpYmJsZSgNCiAgUHJlY2lvID0gZmFjdG9yKCJTdWJlIiwgbGV2ZWxzID0gYygiU3ViZSIsICJObyBDYW1iaWEiLCAiQmFqYSIpKSwNCiAgQ3VsdGl2byA9IGZhY3RvcigiTWHDrXoiLCBsZXZlbHMgPSBjKCJNYcOteiIsICJTb3lhIikpDQopDQoNCnByZWRpY2Npb24gPC0gcHJlZGljdChtb2RlbG8sIG51ZXZvX2VzY2VuYXJpbykNCg0KY2F0KCJJbmdyZXNvIGVzcGVyYWRvIHBhcmEgTWHDrXogc2kgZWwgcHJlY2lvIHN1YmU6Iiwgcm91bmQocHJlZGljY2lvbiwgMiksICJcbiIpDQpgYGANCiMjIMK/Q3XDoWwgZXMgbGEgIGNvc2VjaGEgcXVlIGRlYmUgc2VtYnJhciBsYSBlbXByZXNhIE1jQ295Pw0KQ29uIGJhc2UgZW4gZWwgYW7DoWxpc2lzIGhlY2hvIGRlbCDDoXJib2wgZGUgZGVjaXNpw7NuIHkgZWwgY8OhbGN1bG8gZGVsIHZhbG9yIGVzcGVyYWRvLCBsYSBtZWpvciBlc3RyYXRlZ2lhIHBhcmEgbGEgZW1wcmVzYSBNY0NveSBlcyBzZW1icmFyIHNveWEuIEVzdG8gc2UgZGViZSBhIHF1ZSBlbCB2YWxvciBlc3BlcmFkbyBkZSBsYSBzaWVtYnJhIGRlIHNveWEgZXMgbWF5b3IgcXVlIGVsIGRlIG1hw616LCB5YSBxdWUgbGFzIHDDqXJkaWRhcyBlbiB1biBlc2NlbmFyaW8gZGUgYmFqYSBkZSBwcmVjaW9zIHNvbiBtZW5vcmVzIGVuIGNvbXBhcmFjacOzbiBjb24gZWwgbWHDrXosIHF1ZSB0aWVuZSB1bmEgbWF5b3Igdm9sYXRpbGlkYWQgeSByaWVzZ28uDQoNClNpIE1jQ295IGJ1c2NhIG1heGltaXphciBzdSBlc3RhYmlsaWRhZCBmaW5hbmNpZXJhIHkgbWluaW1pemFyIHJpZXNnb3MsIGxhIG1lam9yIG9wY2nDs24gZXMgb3B0YXIgcG9yIGxhIHNveWEuDQo=