Hotel Mirage
El Hotel Mirage necesita conocer la demanda de sus servicios durante
el tiempo para poder asignar una mayor o menor cantidad de presupuesto a
su operatividad. Debido a que es un hotel nuevo, solamente cuenta con
información de los 12 meses en los que ha estado operativo.
Datos originales
library(boot)
ocupacion <- c(78, 82, 75, 80, 85, 88, 92, 90, 86, 84, 80, 83)
Bootstrap con 1000 repeticiones
set.seed(616)
bootstrap_result <- boot(data = ocupacion,
statistic = bootstrap_media,
R = 1000)
print(bootstrap_result)
##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = ocupacion, statistic = bootstrap_media, R = 1000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 83.58333 0.07033333 1.358444
Intervalo de confianza con 1000 repeticiones
intervalo_confianza <- boot.ci(bootstrap_result, type = "perc")
print(intervalo_confianza)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 1000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = bootstrap_result, type = "perc")
##
## Intervals :
## Level Percentile
## 95% (81.00, 86.42 )
## Calculations and Intervals on Original Scale
hist(bootstrap_result$t,
main = "Distribución Bootstrap de la Ocupación",
xlab = "Ocupación promedio",
col = "lightblue",
border = "black")

Con 1000 repeticiones, el intervalo de confianza del 95% se encuentra
aproximadamente entre 81% y 86.3%. Esto indica el rango en el que podría
esperarse que se encuentre la ocupación promedio del hotel para el
siguiente periodo, tomando como base los datos disponibles.
Bootstrap con 100000 repeticiones
set.seed(616)
bootstrap_result_100000 <- boot(data = ocupacion,
statistic = bootstrap_media,
R = 100000)
print(bootstrap_result_100000)
##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = ocupacion, statistic = bootstrap_media, R = 1e+05)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 83.58333 -0.003584167 1.374485
Intervalo de confianza con 100000 repeticiones
intervalo_confianza_100000 <- boot.ci(bootstrap_result_100000,
type = "perc")
print(intervalo_confianza_100000)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 100000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = bootstrap_result_100000, type = "perc")
##
## Intervals :
## Level Percentile
## 95% (80.92, 86.25 )
## Calculations and Intervals on Original Scale
hist(bootstrap_result_100000$t,
main = "Distribución Bootstrap con 100000 repeticiones",
xlab = "Ocupación promedio",
col = "lightblue",
border = "black")

Al aumentar de 1000 a 100000 repeticiones, el intervalo cambia muy
poco y se mantiene aproximadamente entre 80.9% y 86.3%. La principal
diferencia es que con una mayor cantidad de repeticiones el resultado se
vuelve más estable y disminuye la variación causada por el proceso
aleatorio del bootstrap.
Corrección de la ocupación de diciembre
El dueño del hotel indicó que la ocupación de diciembre no fue de
83%, sino de 73%. Por lo tanto, se modifican los datos originales.
ocupacion_corregida <- c(78, 82, 75, 80, 85, 88, 92, 90, 86, 84, 80, 73)
mean(ocupacion_corregida)
## [1] 82.75
Con esta corrección, la ocupación promedio baja de 83.58% a
82.75%.
Bootstrap corregido con 1000 repeticiones
set.seed(616)
bootstrap_corregido <- boot(data = ocupacion_corregida,
statistic = bootstrap_media,
R = 1000)
print(bootstrap_corregido)
##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = ocupacion_corregida, statistic = bootstrap_media,
## R = 1000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 82.75 0.0545 1.605597
Intervalo corregido con 1000 repeticiones
intervalo_corregido <- boot.ci(bootstrap_corregido, type = "perc")
print(intervalo_corregido)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 1000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = bootstrap_corregido, type = "perc")
##
## Intervals :
## Level Percentile
## 95% (79.67, 86.00 )
## Calculations and Intervals on Original Scale
hist(bootstrap_corregido$t,
main = "Bootstrap con diciembre corregido",
xlab = "Ocupación promedio",
col = "lightblue",
border = "black")

Después de corregir diciembre, el intervalo de confianza se encuentra
aproximadamente entre 79.6% y 85.9%. En comparación con los datos
originales, la media disminuye y el límite inferior del intervalo ahora
puede caer por debajo del 80%.
Bootstrap corregido con 100000 repeticiones
set.seed(616)
bootstrap_corregido_100000 <- boot(data = ocupacion_corregida,
statistic = bootstrap_media,
R = 100000)
print(bootstrap_corregido_100000)
##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = ocupacion_corregida, statistic = bootstrap_media,
## R = 1e+05)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 82.75 -0.0033175 1.610442
Intervalo corregido con 100000 repeticiones
intervalo_corregido_100000 <- boot.ci(bootstrap_corregido_100000,
type = "perc")
print(intervalo_corregido_100000)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 100000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = bootstrap_corregido_100000, type = "perc")
##
## Intervals :
## Level Percentile
## 95% (79.58, 85.92 )
## Calculations and Intervals on Original Scale
hist(bootstrap_corregido_100000$t,
main = "Bootstrap corregido con 100000 repeticiones",
xlab = "Ocupación promedio",
col = "lightblue",
border = "black")

Con 100000 repeticiones, el resultado vuelve a ser muy parecido al
obtenido con 1000 repeticiones y se estabiliza aproximadamente entre
79.6% y 85.9%.
Acciones recomendadas si la ocupación cae por debajo del 80%
Si la ocupación del Hotel Mirage cae por debajo del 80%, una de las
primeras acciones sería reducir gastos variables que no sean
indispensables, sin afectar la calidad del servicio. También se podrían
utilizar promociones durante los días o temporadas con menor demanda,
ofrecer paquetes con servicios incluidos y dar descuentos por
reservaciones anticipadas.
Otra opción sería aumentar la publicidad en redes sociales y crear
convenios con empresas, agencias de viaje o plataformas de reservaciones
para atraer más huéspedes. Es importante que el hotel no reduzca gastos
relacionados directamente con la experiencia del cliente, ya que una
disminución en la calidad del servicio podría provocar malas reseñas y
reducir todavía más la demanda.
Conclusión
El bootstrap permite estimar el comportamiento de la ocupación del
Hotel Mirage aunque solamente se tenga información de 12 meses. Con los
datos originales, la ocupación promedio es de aproximadamente 83.58% y
el intervalo de confianza se encuentra alrededor de 81% a 86.3%. Al
aumentar las repeticiones de 1000 a 100000, los resultados cambian muy
poco, pero se vuelven más estables.
Cuando se corrige la ocupación de diciembre de 83% a 73%, la media
disminuye a 82.75% y el intervalo se amplía aproximadamente de 79.6% a
85.9%. Esto muestra que ahora existe una mayor posibilidad de que la
ocupación caiga por debajo del 80%. En ese caso, el hotel debería
utilizar promociones, publicidad, convenios y control de gastos para
reducir el riesgo de pérdidas económicas.
LS0tCnRpdGxlOiAiRWplcmNpY2lvIGRlIEJvb3RzdHJhcCAtIEhvdGVsIE1pcmFnZSIKYXV0aG9yOiAiUmFmYWVsIE5hdmFycm8gR2FyemEiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKZGF0ZTogIjIwMjYtMDgtMTkiCi0tLQoKIyBIb3RlbCBNaXJhZ2UKCkVsIEhvdGVsIE1pcmFnZSBuZWNlc2l0YSBjb25vY2VyIGxhIGRlbWFuZGEgZGUgc3VzIHNlcnZpY2lvcyBkdXJhbnRlIGVsIHRpZW1wbyBwYXJhIHBvZGVyIGFzaWduYXIgdW5hIG1heW9yIG8gbWVub3IgY2FudGlkYWQgZGUgcHJlc3VwdWVzdG8gYSBzdSBvcGVyYXRpdmlkYWQuIERlYmlkbyBhIHF1ZSBlcyB1biBob3RlbCBudWV2bywgc29sYW1lbnRlIGN1ZW50YSBjb24gaW5mb3JtYWNpw7NuIGRlIGxvcyAxMiBtZXNlcyBlbiBsb3MgcXVlIGhhIGVzdGFkbyBvcGVyYXRpdm8uCgojIERhdG9zIG9yaWdpbmFsZXMKCmBgYHtyfQpsaWJyYXJ5KGJvb3QpCgpvY3VwYWNpb24gPC0gYyg3OCwgODIsIDc1LCA4MCwgODUsIDg4LCA5MiwgOTAsIDg2LCA4NCwgODAsIDgzKQpgYGAKCiMgRnVuY2nDs24gcGFyYSBjYWxjdWxhciBsYSBtZWRpYQoKYGBge3J9CmJvb3RzdHJhcF9tZWRpYSA8LSBmdW5jdGlvbihkYXRhLCBpbmRpY2VzKSB7CiAgcmV0dXJuKG1lYW4oZGF0YVtpbmRpY2VzXSkpCn0KYGBgCgpMYSBvY3VwYWNpw7NuIHByb21lZGlvIG9ic2VydmFkYSBkdXJhbnRlIGxvcyAxMiBtZXNlcyBlcyBkZSBhcHJveGltYWRhbWVudGUgODMuNTglLgoKIyBCb290c3RyYXAgY29uIDEwMDAgcmVwZXRpY2lvbmVzCgpgYGB7cn0Kc2V0LnNlZWQoNjE2KQoKYm9vdHN0cmFwX3Jlc3VsdCA8LSBib290KGRhdGEgPSBvY3VwYWNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWMgPSBib290c3RyYXBfbWVkaWEsCiAgICAgICAgICAgICAgICAgICAgICAgICBSID0gMTAwMCkKCnByaW50KGJvb3RzdHJhcF9yZXN1bHQpCmBgYAoKIyBJbnRlcnZhbG8gZGUgY29uZmlhbnphIGNvbiAxMDAwIHJlcGV0aWNpb25lcwoKYGBge3J9CmludGVydmFsb19jb25maWFuemEgPC0gYm9vdC5jaShib290c3RyYXBfcmVzdWx0LCB0eXBlID0gInBlcmMiKQoKcHJpbnQoaW50ZXJ2YWxvX2NvbmZpYW56YSkKYGBgCgpgYGB7cn0KaGlzdChib290c3RyYXBfcmVzdWx0JHQsCiAgICAgbWFpbiA9ICJEaXN0cmlidWNpw7NuIEJvb3RzdHJhcCBkZSBsYSBPY3VwYWNpw7NuIiwKICAgICB4bGFiID0gIk9jdXBhY2nDs24gcHJvbWVkaW8iLAogICAgIGNvbCA9ICJsaWdodGJsdWUiLAogICAgIGJvcmRlciA9ICJibGFjayIpCmBgYAoKQ29uIDEwMDAgcmVwZXRpY2lvbmVzLCBlbCBpbnRlcnZhbG8gZGUgY29uZmlhbnphIGRlbCA5NSUgc2UgZW5jdWVudHJhIGFwcm94aW1hZGFtZW50ZSBlbnRyZSA4MSUgeSA4Ni4zJS4gRXN0byBpbmRpY2EgZWwgcmFuZ28gZW4gZWwgcXVlIHBvZHLDrWEgZXNwZXJhcnNlIHF1ZSBzZSBlbmN1ZW50cmUgbGEgb2N1cGFjacOzbiBwcm9tZWRpbyBkZWwgaG90ZWwgcGFyYSBlbCBzaWd1aWVudGUgcGVyaW9kbywgdG9tYW5kbyBjb21vIGJhc2UgbG9zIGRhdG9zIGRpc3BvbmlibGVzLgoKIyBCb290c3RyYXAgY29uIDEwMDAwMCByZXBldGljaW9uZXMKCmBgYHtyfQpzZXQuc2VlZCg2MTYpCgpib290c3RyYXBfcmVzdWx0XzEwMDAwMCA8LSBib290KGRhdGEgPSBvY3VwYWNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljID0gYm9vdHN0cmFwX21lZGlhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSAxMDAwMDApCgpwcmludChib290c3RyYXBfcmVzdWx0XzEwMDAwMCkKYGBgCgojIEludGVydmFsbyBkZSBjb25maWFuemEgY29uIDEwMDAwMCByZXBldGljaW9uZXMKCmBgYHtyfQppbnRlcnZhbG9fY29uZmlhbnphXzEwMDAwMCA8LSBib290LmNpKGJvb3RzdHJhcF9yZXN1bHRfMTAwMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAicGVyYyIpCgpwcmludChpbnRlcnZhbG9fY29uZmlhbnphXzEwMDAwMCkKYGBgCgpgYGB7cn0KaGlzdChib290c3RyYXBfcmVzdWx0XzEwMDAwMCR0LAogICAgIG1haW4gPSAiRGlzdHJpYnVjacOzbiBCb290c3RyYXAgY29uIDEwMDAwMCByZXBldGljaW9uZXMiLAogICAgIHhsYWIgPSAiT2N1cGFjacOzbiBwcm9tZWRpbyIsCiAgICAgY29sID0gImxpZ2h0Ymx1ZSIsCiAgICAgYm9yZGVyID0gImJsYWNrIikKYGBgCgpBbCBhdW1lbnRhciBkZSAxMDAwIGEgMTAwMDAwIHJlcGV0aWNpb25lcywgZWwgaW50ZXJ2YWxvIGNhbWJpYSBtdXkgcG9jbyB5IHNlIG1hbnRpZW5lIGFwcm94aW1hZGFtZW50ZSBlbnRyZSA4MC45JSB5IDg2LjMlLiBMYSBwcmluY2lwYWwgZGlmZXJlbmNpYSBlcyBxdWUgY29uIHVuYSBtYXlvciBjYW50aWRhZCBkZSByZXBldGljaW9uZXMgZWwgcmVzdWx0YWRvIHNlIHZ1ZWx2ZSBtw6FzIGVzdGFibGUgeSBkaXNtaW51eWUgbGEgdmFyaWFjacOzbiBjYXVzYWRhIHBvciBlbCBwcm9jZXNvIGFsZWF0b3JpbyBkZWwgYm9vdHN0cmFwLgoKIyBDb3JyZWNjacOzbiBkZSBsYSBvY3VwYWNpw7NuIGRlIGRpY2llbWJyZQoKRWwgZHVlw7FvIGRlbCBob3RlbCBpbmRpY8OzIHF1ZSBsYSBvY3VwYWNpw7NuIGRlIGRpY2llbWJyZSBubyBmdWUgZGUgODMlLCBzaW5vIGRlIDczJS4gUG9yIGxvIHRhbnRvLCBzZSBtb2RpZmljYW4gbG9zIGRhdG9zIG9yaWdpbmFsZXMuCgpgYGB7cn0Kb2N1cGFjaW9uX2NvcnJlZ2lkYSA8LSBjKDc4LCA4MiwgNzUsIDgwLCA4NSwgODgsIDkyLCA5MCwgODYsIDg0LCA4MCwgNzMpCgptZWFuKG9jdXBhY2lvbl9jb3JyZWdpZGEpCmBgYAoKQ29uIGVzdGEgY29ycmVjY2nDs24sIGxhIG9jdXBhY2nDs24gcHJvbWVkaW8gYmFqYSBkZSA4My41OCUgYSA4Mi43NSUuCgojIEJvb3RzdHJhcCBjb3JyZWdpZG8gY29uIDEwMDAgcmVwZXRpY2lvbmVzCgpgYGB7cn0Kc2V0LnNlZWQoNjE2KQoKYm9vdHN0cmFwX2NvcnJlZ2lkbyA8LSBib290KGRhdGEgPSBvY3VwYWNpb25fY29ycmVnaWRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljID0gYm9vdHN0cmFwX21lZGlhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IDEwMDApCgpwcmludChib290c3RyYXBfY29ycmVnaWRvKQpgYGAKCiMgSW50ZXJ2YWxvIGNvcnJlZ2lkbyBjb24gMTAwMCByZXBldGljaW9uZXMKCmBgYHtyfQppbnRlcnZhbG9fY29ycmVnaWRvIDwtIGJvb3QuY2koYm9vdHN0cmFwX2NvcnJlZ2lkbywgdHlwZSA9ICJwZXJjIikKCnByaW50KGludGVydmFsb19jb3JyZWdpZG8pCmBgYAoKYGBge3J9Cmhpc3QoYm9vdHN0cmFwX2NvcnJlZ2lkbyR0LAogICAgIG1haW4gPSAiQm9vdHN0cmFwIGNvbiBkaWNpZW1icmUgY29ycmVnaWRvIiwKICAgICB4bGFiID0gIk9jdXBhY2nDs24gcHJvbWVkaW8iLAogICAgIGNvbCA9ICJsaWdodGJsdWUiLAogICAgIGJvcmRlciA9ICJibGFjayIpCmBgYAoKRGVzcHXDqXMgZGUgY29ycmVnaXIgZGljaWVtYnJlLCBlbCBpbnRlcnZhbG8gZGUgY29uZmlhbnphIHNlIGVuY3VlbnRyYSBhcHJveGltYWRhbWVudGUgZW50cmUgNzkuNiUgeSA4NS45JS4gRW4gY29tcGFyYWNpw7NuIGNvbiBsb3MgZGF0b3Mgb3JpZ2luYWxlcywgbGEgbWVkaWEgZGlzbWludXllIHkgZWwgbMOtbWl0ZSBpbmZlcmlvciBkZWwgaW50ZXJ2YWxvIGFob3JhIHB1ZWRlIGNhZXIgcG9yIGRlYmFqbyBkZWwgODAlLgoKIyBCb290c3RyYXAgY29ycmVnaWRvIGNvbiAxMDAwMDAgcmVwZXRpY2lvbmVzCgpgYGB7cn0Kc2V0LnNlZWQoNjE2KQoKYm9vdHN0cmFwX2NvcnJlZ2lkb18xMDAwMDAgPC0gYm9vdChkYXRhID0gb2N1cGFjaW9uX2NvcnJlZ2lkYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWMgPSBib290c3RyYXBfbWVkaWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IDEwMDAwMCkKCnByaW50KGJvb3RzdHJhcF9jb3JyZWdpZG9fMTAwMDAwKQpgYGAKCiMgSW50ZXJ2YWxvIGNvcnJlZ2lkbyBjb24gMTAwMDAwIHJlcGV0aWNpb25lcwoKYGBge3J9CmludGVydmFsb19jb3JyZWdpZG9fMTAwMDAwIDwtIGJvb3QuY2koYm9vdHN0cmFwX2NvcnJlZ2lkb18xMDAwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJwZXJjIikKCnByaW50KGludGVydmFsb19jb3JyZWdpZG9fMTAwMDAwKQpgYGAKCmBgYHtyfQpoaXN0KGJvb3RzdHJhcF9jb3JyZWdpZG9fMTAwMDAwJHQsCiAgICAgbWFpbiA9ICJCb290c3RyYXAgY29ycmVnaWRvIGNvbiAxMDAwMDAgcmVwZXRpY2lvbmVzIiwKICAgICB4bGFiID0gIk9jdXBhY2nDs24gcHJvbWVkaW8iLAogICAgIGNvbCA9ICJsaWdodGJsdWUiLAogICAgIGJvcmRlciA9ICJibGFjayIpCmBgYAoKQ29uIDEwMDAwMCByZXBldGljaW9uZXMsIGVsIHJlc3VsdGFkbyB2dWVsdmUgYSBzZXIgbXV5IHBhcmVjaWRvIGFsIG9idGVuaWRvIGNvbiAxMDAwIHJlcGV0aWNpb25lcyB5IHNlIGVzdGFiaWxpemEgYXByb3hpbWFkYW1lbnRlIGVudHJlIDc5LjYlIHkgODUuOSUuCgojIEFjY2lvbmVzIHJlY29tZW5kYWRhcyBzaSBsYSBvY3VwYWNpw7NuIGNhZSBwb3IgZGViYWpvIGRlbCA4MCUKClNpIGxhIG9jdXBhY2nDs24gZGVsIEhvdGVsIE1pcmFnZSBjYWUgcG9yIGRlYmFqbyBkZWwgODAlLCB1bmEgZGUgbGFzIHByaW1lcmFzIGFjY2lvbmVzIHNlcsOtYSByZWR1Y2lyIGdhc3RvcyB2YXJpYWJsZXMgcXVlIG5vIHNlYW4gaW5kaXNwZW5zYWJsZXMsIHNpbiBhZmVjdGFyIGxhIGNhbGlkYWQgZGVsIHNlcnZpY2lvLiBUYW1iacOpbiBzZSBwb2Ryw61hbiB1dGlsaXphciBwcm9tb2Npb25lcyBkdXJhbnRlIGxvcyBkw61hcyBvIHRlbXBvcmFkYXMgY29uIG1lbm9yIGRlbWFuZGEsIG9mcmVjZXIgcGFxdWV0ZXMgY29uIHNlcnZpY2lvcyBpbmNsdWlkb3MgeSBkYXIgZGVzY3VlbnRvcyBwb3IgcmVzZXJ2YWNpb25lcyBhbnRpY2lwYWRhcy4KCk90cmEgb3BjacOzbiBzZXLDrWEgYXVtZW50YXIgbGEgcHVibGljaWRhZCBlbiByZWRlcyBzb2NpYWxlcyB5IGNyZWFyIGNvbnZlbmlvcyBjb24gZW1wcmVzYXMsIGFnZW5jaWFzIGRlIHZpYWplIG8gcGxhdGFmb3JtYXMgZGUgcmVzZXJ2YWNpb25lcyBwYXJhIGF0cmFlciBtw6FzIGh1w6lzcGVkZXMuIEVzIGltcG9ydGFudGUgcXVlIGVsIGhvdGVsIG5vIHJlZHV6Y2EgZ2FzdG9zIHJlbGFjaW9uYWRvcyBkaXJlY3RhbWVudGUgY29uIGxhIGV4cGVyaWVuY2lhIGRlbCBjbGllbnRlLCB5YSBxdWUgdW5hIGRpc21pbnVjacOzbiBlbiBsYSBjYWxpZGFkIGRlbCBzZXJ2aWNpbyBwb2Ryw61hIHByb3ZvY2FyIG1hbGFzIHJlc2XDsWFzIHkgcmVkdWNpciB0b2RhdsOtYSBtw6FzIGxhIGRlbWFuZGEuCgojIENvbmNsdXNpw7NuCgpFbCBib290c3RyYXAgcGVybWl0ZSBlc3RpbWFyIGVsIGNvbXBvcnRhbWllbnRvIGRlIGxhIG9jdXBhY2nDs24gZGVsIEhvdGVsIE1pcmFnZSBhdW5xdWUgc29sYW1lbnRlIHNlIHRlbmdhIGluZm9ybWFjacOzbiBkZSAxMiBtZXNlcy4gQ29uIGxvcyBkYXRvcyBvcmlnaW5hbGVzLCBsYSBvY3VwYWNpw7NuIHByb21lZGlvIGVzIGRlIGFwcm94aW1hZGFtZW50ZSA4My41OCUgeSBlbCBpbnRlcnZhbG8gZGUgY29uZmlhbnphIHNlIGVuY3VlbnRyYSBhbHJlZGVkb3IgZGUgODElIGEgODYuMyUuIEFsIGF1bWVudGFyIGxhcyByZXBldGljaW9uZXMgZGUgMTAwMCBhIDEwMDAwMCwgbG9zIHJlc3VsdGFkb3MgY2FtYmlhbiBtdXkgcG9jbywgcGVybyBzZSB2dWVsdmVuIG3DoXMgZXN0YWJsZXMuCgpDdWFuZG8gc2UgY29ycmlnZSBsYSBvY3VwYWNpw7NuIGRlIGRpY2llbWJyZSBkZSA4MyUgYSA3MyUsIGxhIG1lZGlhIGRpc21pbnV5ZSBhIDgyLjc1JSB5IGVsIGludGVydmFsbyBzZSBhbXBsw61hIGFwcm94aW1hZGFtZW50ZSBkZSA3OS42JSBhIDg1LjklLiBFc3RvIG11ZXN0cmEgcXVlIGFob3JhIGV4aXN0ZSB1bmEgbWF5b3IgcG9zaWJpbGlkYWQgZGUgcXVlIGxhIG9jdXBhY2nDs24gY2FpZ2EgcG9yIGRlYmFqbyBkZWwgODAlLiBFbiBlc2UgY2FzbywgZWwgaG90ZWwgZGViZXLDrWEgdXRpbGl6YXIgcHJvbW9jaW9uZXMsIHB1YmxpY2lkYWQsIGNvbnZlbmlvcyB5IGNvbnRyb2wgZGUgZ2FzdG9zIHBhcmEgcmVkdWNpciBlbCByaWVzZ28gZGUgcMOpcmRpZGFzIGVjb27Ds21pY2FzLgo=