Instrucciones

Con los datos que se importan a continuación, concluir si es el tipo tratamiento médico (T: A,B), o la clínica (Clinic: uno,dos) lo que explica el pronóstico (positivo, negativo).

packages

if(!require(googlesheets4)){install.packages("googlesheets4")}
if(!require(googledrive)){install.packages("googledrive")}
if(!require(ggplot2)){install.packages("ggplot2")}
if(!require(DescTools)){install.packages("DescTools")}
if(!require(MASS)){install.packages("MASS")}
if(!require(binom)){install.packages("binom")}
if(!require(scales)){install.packages("scales")}
##
library(googlesheets4)
library(googledrive)
library(ggplot2)
library(DescTools)
library(MASS)
library(binom)
library(scales)

Table Treatment & Clinics

ss= "https://docs.google.com/spreadsheets/d/1RFCYi7rjRPcbzcB01Nq3jgtc_o21LaDU8yFU41gjQKs/edit?usp=sharing"
hoja= "clinicTrat"
rango = "B4:E8"
#
gs4_deauth()
trat <- read_sheet(ss,
                   sheet=hoja,
                   range=rango,
                   col_names=TRUE
                   )
✔ Reading from ClinicaxTratamiento.
✔ Range ''clinicTrat'!B4:E8'.
trat$Clinic <- as.factor(trat$Clinic)
trat$T <- as.factor(trat$T) 
#
trat$pr.exito <- trat$Posit / 
  (trat$Posit+trat$Negat)           # Proporción de éxito (resultado positivo al tratamiento)
trat

ggplot

ggplot( aes( x= T, y= pr.exito, fill = T), data= trat) + 
  geom_bar(stat="identity", position= "dodge")


ggplot( aes( x= Clinic, y= pr.exito), data= trat) + 
  geom_bar(stat="identity", position= "dodge")


p <- ggplot( aes( x= Clinic, y= pr.exito, fill = T), data= trat) + 
  geom_bar(stat="identity", position= "dodge")
p


obs <-  cbind(Pronóstico_Positivo =trat$Posit, Pronóstico_Negativo= trat$Negat)
obs
     Pronóstico_Positivo Pronóstico_Negativo
[1,]                   4                  16
[2,]                  22                  32
[3,]                   8                  32
[4,]                  12                   8
mosaicplot(obs, main = , xlab = , ylab = )

Odds

trat$Odds.exito <- trat$Posit / trat$Negat
trat

glm

```r
# Variable respuesta es binaria (dos columnas)
Y.trat <- cbind(trat$Posit, trat$Negat)
Y.trat

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiICAgICBbLDFdIFssMl1cblsxLF0gICAgNCAgIDE2XG5bMixdICAgMjIgICAzMlxuWzMsXSAgICA4ICAgMzJcbls0LF0gICAxMiAgICA4XG4ifQ== -->
 [,1] [,2]

[1,] 4 16 [2,] 22 32 [3,] 8 32 [4,] 12 8




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


#### Modelo comparando clínicas

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZ2xtLmNsaW5pYyA8LSBnbG0oIFkudHJhdCB+IHRyYXQkQ2xpbmljLCBmYW1pbHk9Ymlub21pYWwpXG5zdW1tYXJ5KGdsbS5jbGluaWMpXG5gYGBcbmBgYCJ9 -->

```r
```r
glm.clinic <- glm( Y.trat ~ trat$Clinic, family=binomial)
summary(glm.clinic)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG5DYWxsOlxuZ2xtKGZvcm11bGEgPSBZLnRyYXQgfiB0cmF0JENsaW5pYywgZmFtaWx5ID0gYmlub21pYWwpXG5cbkRldmlhbmNlIFJlc2lkdWFsczogXG4gICAgICAxICAgICAgICAyICAgICAgICAzICAgICAgICA0ICBcbi0xLjQ4NDQgICAwLjg1MzYgIC0xLjg2OTYgICAyLjQzNTkgIFxuXG5Db2VmZmljaWVudHM6XG4gICAgICAgICAgICAgICBFc3RpbWF0ZSBTdGQuIEVycm9yIHogdmFsdWUgUHIoPnx6fCkgIFxuKEludGVyY2VwdCkgICAgLTAuNjEzMTAgICAgMC4yNDM1MSAgLTIuNTE4ICAgMC4wMTE4ICpcbnRyYXQkQ2xpbmljdW5vIC0wLjA4MDA0ICAgIDAuMzY2NDYgIC0wLjIxOCAgIDAuODI3MSAgXG4tLS1cblNpZ25pZi4gY29kZXM6ICAwIOKAmCoqKuKAmSAwLjAwMSDigJgqKuKAmSAwLjAxIOKAmCrigJkgMC4wNSDigJgu4oCZIDAuMSDigJgg4oCZIDFcblxuKERpc3BlcnNpb24gcGFyYW1ldGVyIGZvciBiaW5vbWlhbCBmYW1pbHkgdGFrZW4gdG8gYmUgMSlcblxuICAgIE51bGwgZGV2aWFuY2U6IDEyLjQwOSAgb24gMyAgZGVncmVlcyBvZiBmcmVlZG9tXG5SZXNpZHVhbCBkZXZpYW5jZTogMTIuMzYxICBvbiAyICBkZWdyZWVzIG9mIGZyZWVkb21cbkFJQzogMzAuOTdcblxuTnVtYmVyIG9mIEZpc2hlciBTY29yaW5nIGl0ZXJhdGlvbnM6IDRcbiJ9 -->

Call: glm(formula = Y.trat ~ trat$Clinic, family = binomial)

Deviance Residuals: 1 2 3 4
-1.4844 0.8536 -1.8696 2.4359

Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.61310 0.24351 -2.518 0.0118 * trat$Clinicuno -0.08004 0.36646 -0.218 0.8271
— Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 12.409  on 3  degrees of freedom

Residual deviance: 12.361 on 2 degrees of freedom AIC: 30.97

Number of Fisher Scoring iterations: 4




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


#### Modelo comparando tratamientos médicos

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZ2xtLnRyYXQgPC0gZ2xtKCBZLnRyYXQgfiB0cmF0JFQsIGZhbWlseT1iaW5vbWlhbClcbnN1bW1hcnkoZ2xtLnRyYXQpXG5gYGBcbmBgYCJ9 -->

```r
```r
glm.trat <- glm( Y.trat ~ trat$T, family=binomial)
summary(glm.trat)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG5DYWxsOlxuZ2xtKGZvcm11bGEgPSBZLnRyYXQgfiB0cmF0JFQsIGZhbWlseSA9IGJpbm9taWFsKVxuXG5EZXZpYW5jZSBSZXNpZHVhbHM6IFxuICAgICAgMSAgICAgICAgMiAgICAgICAgMyAgICAgICAgNCAgXG4gMC4wMDAwICAtMC43NzA0ICAgMC4wMDAwICAgMS4yNTk5ICBcblxuQ29lZmZpY2llbnRzOlxuICAgICAgICAgICAgRXN0aW1hdGUgU3RkLiBFcnJvciB6IHZhbHVlIFByKD58enwpICAgIFxuKEludGVyY2VwdCkgIC0xLjM4NjMgICAgIDAuMzIyNyAgLTQuMjk1IDEuNzRlLTA1ICoqKlxudHJhdCRUQiAgICAgICAxLjIyMzggICAgIDAuMzk4MiAgIDMuMDczICAwLjAwMjEyICoqIFxuLS0tXG5TaWduaWYuIGNvZGVzOiAgMCDigJgqKirigJkgMC4wMDEg4oCYKirigJkgMC4wMSDigJgq4oCZIDAuMDUg4oCYLuKAmSAwLjEg4oCYIOKAmSAxXG5cbihEaXNwZXJzaW9uIHBhcmFtZXRlciBmb3IgYmlub21pYWwgZmFtaWx5IHRha2VuIHRvIGJlIDEpXG5cbiAgICBOdWxsIGRldmlhbmNlOiAxMi40MDkgIG9uIDMgIGRlZ3JlZXMgb2YgZnJlZWRvbVxuUmVzaWR1YWwgZGV2aWFuY2U6ICAyLjE4MSAgb24gMiAgZGVncmVlcyBvZiBmcmVlZG9tXG5BSUM6IDIwLjc5XG5cbk51bWJlciBvZiBGaXNoZXIgU2NvcmluZyBpdGVyYXRpb25zOiAzXG4ifQ== -->

Call: glm(formula = Y.trat ~ trat$T, family = binomial)

Deviance Residuals: 1 2 3 4
0.0000 -0.7704 0.0000 1.2599

Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.3863 0.3227 -4.295 1.74e-05 * trat$TB 1.2238 0.3982 3.073 0.00212 — Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 12.409  on 3  degrees of freedom

Residual deviance: 2.181 on 2 degrees of freedom AIC: 20.79

Number of Fisher Scoring iterations: 3




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


#### Modelo en busca de interacción: Clinic * T

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZ2xtIDwtIGdsbSggWS50cmF0IH4gdHJhdCRUICogdHJhdCRDbGluaWMsIGZhbWlseT1iaW5vbWlhbClcbnN1bW1hcnkoZ2xtKVxuYGBgXG5gYGAifQ== -->

```r
```r
glm <- glm( Y.trat ~ trat$T * trat$Clinic, family=binomial)
summary(glm)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiXG5DYWxsOlxuZ2xtKGZvcm11bGEgPSBZLnRyYXQgfiB0cmF0JFQgKiB0cmF0JENsaW5pYywgZmFtaWx5ID0gYmlub21pYWwpXG5cbkRldmlhbmNlIFJlc2lkdWFsczogXG5bMV0gIDAgIDAgIDAgIDBcblxuQ29lZmZpY2llbnRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgIEVzdGltYXRlIFN0ZC4gRXJyb3IgeiB2YWx1ZSBQcig+fHp8KSAgXG4oSW50ZXJjZXB0KSAgICAgICAgICAgIC0xLjM4NmUrMDAgIDUuNTkwZS0wMSAgLTIuNDgwICAgMC4wMTMxICpcbnRyYXQkVEIgICAgICAgICAgICAgICAgIDEuMDEyZSswMCAgNi4yMzllLTAxICAgMS42MjIgICAwLjEwNDkgIFxudHJhdCRDbGluaWN1bm8gICAgICAgICAtNS44NjFlLTEzICA2Ljg0N2UtMDEgICAwLjAwMCAgIDEuMDAwMCAgXG50cmF0JFRCOnRyYXQkQ2xpbmljdW5vICA3LjgwMmUtMDEgIDguNjgyZS0wMSAgIDAuODk5ICAgMC4zNjg5ICBcbi0tLVxuU2lnbmlmLiBjb2RlczogIDAg4oCYKioq4oCZIDAuMDAxIOKAmCoq4oCZIDAuMDEg4oCYKuKAmSAwLjA1IOKAmC7igJkgMC4xIOKAmCDigJkgMVxuXG4oRGlzcGVyc2lvbiBwYXJhbWV0ZXIgZm9yIGJpbm9taWFsIGZhbWlseSB0YWtlbiB0byBiZSAxKVxuXG4gICAgTnVsbCBkZXZpYW5jZTogMS4yNDA5ZSswMSAgb24gMyAgZGVncmVlcyBvZiBmcmVlZG9tXG5SZXNpZHVhbCBkZXZpYW5jZTogOC44ODE4ZS0xNSAgb24gMCAgZGVncmVlcyBvZiBmcmVlZG9tXG5BSUM6IDIyLjYwOVxuXG5OdW1iZXIgb2YgRmlzaGVyIFNjb3JpbmcgaXRlcmF0aW9uczogM1xuIn0= -->

Call: glm(formula = Y.trat ~ trat\(T * trat\)Clinic, family = binomial)

Deviance Residuals: [1] 0 0 0 0

Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.386e+00 5.590e-01 -2.480 0.0131 * trat\(TB 1.012e+00 6.239e-01 1.622 0.1049 trat\)Clinicuno -5.861e-13 6.847e-01 0.000 1.0000
trat\(TB:trat\)Clinicuno 7.802e-01 8.682e-01 0.899 0.3689
— Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 1.2409e+01  on 3  degrees of freedom

Residual deviance: 8.8818e-15 on 0 degrees of freedom AIC: 22.609

Number of Fisher Scoring iterations: 3




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->

#### Modelo aditivo: Clinic + T

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG5DYWxsOlxuZ2xtKGZvcm11bGEgPSBZLnRyYXQgfiB0cmF0JFQgKyB0cmF0JENsaW5pYywgZmFtaWx5ID0gYmlub21pYWwpXG5cbkRldmlhbmNlIFJlc2lkdWFsczogXG4gICAgICAxICAgICAgICAyICAgICAgICAzICAgICAgICA0ICBcbiAwLjYwMjMgIC0wLjI3NjIgIC0wLjM4NDUgICAwLjQ1MjEgIFxuXG5Db2VmZmljaWVudHM6XG4gICAgICAgICAgICAgICBFc3RpbWF0ZSBTdGQuIEVycm9yIHogdmFsdWUgUHIoPnx6fCkgICAgXG4oSW50ZXJjZXB0KSAgICAgLTEuNzM1MiAgICAgMC40NTA3ICAtMy44NTAgMC4wMDAxMTggKioqXG50cmF0JFRCICAgICAgICAgIDEuNDM2OSAgICAgMC40NDU4ICAgMy4yMjMgMC4wMDEyNjggKiogXG50cmF0JENsaW5pY3VubyAgIDAuNDk4NyAgICAgMC40Mjc3ICAgMS4xNjYgMC4yNDM1ODEgICAgXG4tLS1cblNpZ25pZi4gY29kZXM6ICAwIOKAmCoqKuKAmSAwLjAwMSDigJgqKuKAmSAwLjAxIOKAmCrigJkgMC4wNSDigJgu4oCZIDAuMSDigJgg4oCZIDFcblxuKERpc3BlcnNpb24gcGFyYW1ldGVyIGZvciBiaW5vbWlhbCBmYW1pbHkgdGFrZW4gdG8gYmUgMSlcblxuICAgIE51bGwgZGV2aWFuY2U6IDEyLjQwODcxICBvbiAzICBkZWdyZWVzIG9mIGZyZWVkb21cblJlc2lkdWFsIGRldmlhbmNlOiAgMC43OTEyOSAgb24gMSAgZGVncmVlcyBvZiBmcmVlZG9tXG5BSUM6IDIxLjRcblxuTnVtYmVyIG9mIEZpc2hlciBTY29yaW5nIGl0ZXJhdGlvbnM6IDRcbiJ9 -->

Call: glm(formula = Y.trat ~ trat\(T + trat\)Clinic, family = binomial)

Deviance Residuals: 1 2 3 4
0.6023 -0.2762 -0.3845 0.4521

Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.7352 0.4507 -3.850 0.000118 *** trat\(TB 1.4369 0.4458 3.223 0.001268 ** trat\)Clinicuno 0.4987 0.4277 1.166 0.243581
— Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 12.40871  on 3  degrees of freedom

Residual deviance: 0.79129 on 1 degrees of freedom AIC: 21.4

Number of Fisher Scoring iterations: 4 ```

Refeencias

Agresti, A., & Coull, B. A. (1998). Approximate is better than “exact” for interval estimation of binomial proportions. The American Statistician, 52(2), 119–126.

LS0tDQp0aXRsZTogIlRhYmxhcyBkZSBjb250aW5nZW5jaWEgeSBHTE1zIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyMjIEluc3RydWNjaW9uZXMNCkNvbiBsb3MgZGF0b3MgcXVlIHNlIGltcG9ydGFuIGEgY29udGludWFjacOzbiwgY29uY2x1aXIgc2kgZXMgZWwgdGlwbyB0cmF0YW1pZW50byBtw6lkaWNvIChUOiBBLEIpLCBvIGxhIGNsw61uaWNhIChDbGluaWM6IHVubyxkb3MpIGxvIHF1ZSBleHBsaWNhIGVsIHByb27Ds3N0aWNvIChwb3NpdGl2bywgbmVnYXRpdm8pLg0KDQoqKipwYWNrYWdlcyoqKg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgcmVzdWx0cz1GQUxTRX0NCmlmKCFyZXF1aXJlKGdvb2dsZXNoZWV0czQpKXtpbnN0YWxsLnBhY2thZ2VzKCJnb29nbGVzaGVldHM0Iil9DQppZighcmVxdWlyZShnb29nbGVkcml2ZSkpe2luc3RhbGwucGFja2FnZXMoImdvb2dsZWRyaXZlIil9DQppZighcmVxdWlyZShnZ3Bsb3QyKSl7aW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpfQ0KaWYoIXJlcXVpcmUoRGVzY1Rvb2xzKSl7aW5zdGFsbC5wYWNrYWdlcygiRGVzY1Rvb2xzIil9DQppZighcmVxdWlyZShNQVNTKSl7aW5zdGFsbC5wYWNrYWdlcygiTUFTUyIpfQ0KaWYoIXJlcXVpcmUoYmlub20pKXtpbnN0YWxsLnBhY2thZ2VzKCJiaW5vbSIpfQ0KaWYoIXJlcXVpcmUoc2NhbGVzKSl7aW5zdGFsbC5wYWNrYWdlcygic2NhbGVzIil9DQojIw0KbGlicmFyeShnb29nbGVzaGVldHM0KQ0KbGlicmFyeShnb29nbGVkcml2ZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KbGlicmFyeShNQVNTKQ0KbGlicmFyeShiaW5vbSkNCmxpYnJhcnkoc2NhbGVzKQ0KYGBgICANCg0KIyMjIyBUYWJsZSBUcmVhdG1lbnQgJiBDbGluaWNzDQpgYGB7cn0NCnNzPSAiaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvMVJGQ1lpN3JqUlBjYnpjQjAxTnEzamd0Y19vMjFMYURVOHlGVTQxZ2pRS3MvZWRpdD91c3A9c2hhcmluZyINCmhvamE9ICJjbGluaWNUcmF0Ig0KcmFuZ28gPSAiQjQ6RTgiDQojDQpnczRfZGVhdXRoKCkNCnRyYXQgPC0gcmVhZF9zaGVldChzcywNCiAgICAgICAgICAgICAgICAgICBzaGVldD1ob2phLA0KICAgICAgICAgICAgICAgICAgIHJhbmdlPXJhbmdvLA0KICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcz1UUlVFDQogICAgICAgICAgICAgICAgICAgKQ0KdHJhdCRDbGluaWMgPC0gYXMuZmFjdG9yKHRyYXQkQ2xpbmljKQ0KdHJhdCRUIDwtIGFzLmZhY3Rvcih0cmF0JFQpIA0KIw0KdHJhdCRwci5leGl0byA8LSB0cmF0JFBvc2l0IC8gDQogICh0cmF0JFBvc2l0K3RyYXQkTmVnYXQpICAgICAgICAgICAjIFByb3BvcmNpw7NuIGRlIMOpeGl0byAocmVzdWx0YWRvIHBvc2l0aXZvIGFsIHRyYXRhbWllbnRvKQ0KdHJhdA0KYGBgICANCg0KIyMjIyBnZ3Bsb3QNCmBgYHtyfQ0KZ2dwbG90KCBhZXMoIHg9IFQsIHk9IHByLmV4aXRvLCBmaWxsID0gVCksIGRhdGE9IHRyYXQpICsgDQogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IiwgcG9zaXRpb249ICJkb2RnZSIpDQoNCmdncGxvdCggYWVzKCB4PSBDbGluaWMsIHk9IHByLmV4aXRvKSwgZGF0YT0gdHJhdCkgKyANCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiLCBwb3NpdGlvbj0gImRvZGdlIikNCg0KcCA8LSBnZ3Bsb3QoIGFlcyggeD0gQ2xpbmljLCB5PSBwci5leGl0bywgZmlsbCA9IFQpLCBkYXRhPSB0cmF0KSArIA0KICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uPSAiZG9kZ2UiKQ0KcA0KDQpvYnMgPC0gIGNiaW5kKFByb27Ds3N0aWNvX1Bvc2l0aXZvID10cmF0JFBvc2l0LCBQcm9uw7NzdGljb19OZWdhdGl2bz0gdHJhdCROZWdhdCkNCm9icw0KbW9zYWljcGxvdChvYnMsIG1haW4gPSAsIHhsYWIgPSAsIHlsYWIgPSApDQoNCmBgYCAgDQoNCiMjIyMgT2Rkcw0KDQpgYGB7cn0NCnRyYXQkT2Rkcy5leGl0byA8LSB0cmF0JFBvc2l0IC8gdHJhdCROZWdhdA0KdHJhdA0KYGBgICANCg0KIyMjIGdsbQ0KYGBge3J9DQojIFZhcmlhYmxlIHJlc3B1ZXN0YSBlcyBiaW5hcmlhIChkb3MgY29sdW1uYXMpDQpZLnRyYXQgPC0gY2JpbmQodHJhdCRQb3NpdCwgdHJhdCROZWdhdCkNClkudHJhdA0KYGBgICANCg0KIyMjIyBNb2RlbG8gY29tcGFyYW5kbyBjbMOtbmljYXMNCmBgYHtyfQ0KZ2xtLmNsaW5pYyA8LSBnbG0oIFkudHJhdCB+IHRyYXQkQ2xpbmljLCBmYW1pbHk9Ymlub21pYWwpDQpzdW1tYXJ5KGdsbS5jbGluaWMpDQpgYGAgIA0KDQojIyMjIE1vZGVsbyBjb21wYXJhbmRvIHRyYXRhbWllbnRvcyBtw6lkaWNvcw0KYGBge3J9DQpnbG0udHJhdCA8LSBnbG0oIFkudHJhdCB+IHRyYXQkVCwgZmFtaWx5PWJpbm9taWFsKQ0Kc3VtbWFyeShnbG0udHJhdCkNCmBgYCAgDQoNCiMjIyMgTW9kZWxvIGVuIGJ1c2NhIGRlIGludGVyYWNjacOzbjogQ2xpbmljICogVA0KYGBge3J9DQpnbG0gPC0gZ2xtKCBZLnRyYXQgfiB0cmF0JFQgKiB0cmF0JENsaW5pYywgZmFtaWx5PWJpbm9taWFsKQ0Kc3VtbWFyeShnbG0pDQpgYGAgIA0KIyMjIyBNb2RlbG8gYWRpdGl2bzogQ2xpbmljICsgVA0KYGBge3IgZWNobz1GQUxTRX0NCmdsbSA8LSBnbG0oIFkudHJhdCB+IHRyYXQkVCArIHRyYXQkQ2xpbmljLCBmYW1pbHk9Ymlub21pYWwpDQpzdW1tYXJ5KGdsbSkNCmBgYCAgDQoNCg0KIyMjIFJlZmVlbmNpYXMNCkFncmVzdGksIEEuLCAmIENvdWxsLCBCLiBBLiAoMTk5OCkuIEFwcHJveGltYXRlIGlzIGJldHRlciB0aGFuIOKAnGV4YWN04oCdIGZvciBpbnRlcnZhbCBlc3RpbWF0aW9uIG9mIGJpbm9taWFsIHByb3BvcnRpb25zLiBUaGUgQW1lcmljYW4gU3RhdGlzdGljaWFuLCA1MigyKSwgMTE54oCTMTI2Lg==