Survival Analysis Report of Titanic data.

titanic_s=TitanicSurvival
head(titanic_s)

str(titanic_s)
'data.frame':   1309 obs. of  4 variables:
 $ survived      : Factor w/ 2 levels "no","yes": 2 2 1 1 1 2 2 1 2 1 ...
 $ sex           : Factor w/ 2 levels "female","male": 1 2 1 2 1 2 1 2 1 2 ...
 $ age           : num  29 0.917 2 30 25 ...
 $ passengerClass: Factor w/ 3 levels "1st","2nd","3rd": 1 1 1 1 1 1 1 1 1 1 ...
summary(titanic_s)
 survived      sex           age         
 no :809   female:466   Min.   : 0.1667  
 yes:500   male  :843   1st Qu.:21.0000  
                        Median :28.0000  
                        Mean   :29.8811  
                        3rd Qu.:39.0000  
                        Max.   :80.0000  
                        NA's   :263      
 passengerClass
 1st:323       
 2nd:277       
 3rd:709       
               
               
               
               

From the summary table we get to know that-

1)There are “263” NULL values in the age variable.

2)Also the some of the variables are of character type.

So, we need to resolve both the above mentioned problems before beginning the analysis.

As shown in the above table the missing values and non-numeric values have been resolved.

Now to better understand the relationship and influence of different variables ,here are some graphical representation among different variables.

Above distribution graph shows the survival of people of different age group.

Above graphs shows the number of people survived or died of different age,sex and passengerclass.

The boxplot represents the different age group people with different passengerclass.

Now moving over to analysis of our titanic data.

1)First we have to split the data into train and test data.

2)Creating a model or logistics equation for the suiting the data,considering survived as a dependent variable and rest as independent variable.

summary(model_ti)

Call:
glm(formula = survived ~ ., family = binomial(link = "logit"), 
    data = train_ti)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.3103  -0.6880  -0.4285   0.6478   2.3842  

Coefficients:
               Estimate Std. Error z value Pr(>|z|)
(Intercept)     7.01299    0.52146  13.449  < 2e-16
sex            -2.48680    0.17326 -14.353  < 2e-16
age            -0.03117    0.00700  -4.453 8.48e-06
passengerClass -1.15000    0.11230 -10.240  < 2e-16
                  
(Intercept)    ***
sex            ***
age            ***
passengerClass ***
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1308.86  on 981  degrees of freedom
Residual deviance:  913.05  on 978  degrees of freedom
AIC: 921.05

Number of Fisher Scoring iterations: 4

As from the above table,we came to know that according to p-value all the independent variables are significant but since in logistics regression not only p-value is considered but also we have to see the residual error and AIC.

summary(model_ti3)

Call:
glm(formula = survived ~ . - age, family = "binomial", data = train_ti)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.1543  -0.7119  -0.4603   0.7040   2.1436  

Coefficients:
               Estimate Std. Error z value Pr(>|z|)
(Intercept)     5.67741    0.40067  14.170   <2e-16
sex            -2.51197    0.17128 -14.666   <2e-16
passengerClass -0.94837    0.09964  -9.518   <2e-16
                  
(Intercept)    ***
sex            ***
passengerClass ***
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1308.86  on 981  degrees of freedom
Residual deviance:  933.71  on 979  degrees of freedom
AIC: 939.71

Number of Fisher Scoring iterations: 4

After excluding different variable we came to the result that none of the variables can be ignored as excluding them led to increase in residual error and AIC

So best fitted model for this data is “model_ti” inclusive of all the independent variables.

Now we have to predict the survival rate for the test data.

head(pred_ti)
   Allison, Miss. Helen Loraine 
                      0.9649007 
Andrews, Miss. Kornelia Theodos 
                      0.8041507 
         Astor, Col. John Jacob 
                      0.3599375 
Barkworth, Mr. Algernon Henry W 
                      0.1673867 
          Bazzani, Miss. Albina 
                      0.9151907 
          Behr, Mr. Karl Howell 
                      0.5197262 

Above data shows the probablity of survival of people in test data.

table_ti
           predictedvalue
actualvalue FALSE TRUE
          0   180   25
          1    38   84

from above confusion matrix shows the number of values truely predicted and falsely predicted

A11=TRUE NEGATIVE (truely predicted as “not survived” )

A22=TRUE POSITIVE (truely predicted as “survived”)

A12=FALSE POSITIVE (falsely predicted as “survived”)

A21=FALSE NEGATIVE (falsely predicted as “not survived”)

Now based on the set threshold we have to check its accuracy and find the best threshold value for max accuracy.

#determining accuracy of the prediction
acc=((180+84)/(180+84+38+25))
acc
[1] 0.8073394
#since accuracy is 80% we can increase it by selecting optimal threshold
library(ROCR)
rocr_ti=prediction(pred_ti,test_ti$survived)
rocr_ti_per=performance(rocr_ti,"acc")
rocr_ti_per1=performance(rocr_ti,"tpr","fpr")
plot(rocr_ti_per)

plot(rocr_ti_per1,colorize=TRUE)

from the above chart we can say that threshold must b in between 0.5to0.6 ,So again making table by setting threshold in between 0.5to0.6

table_ti1=table(actualvalue=test_ti$survived,predictedvalue=pred_ti>0.51)
table_ti1
           predictedvalue
actualvalue FALSE TRUE
          0   181   24
          1    38   84
accuracy_ti1=((181+84)/(181+84+24+39))
accuracy_ti1
[1] 0.8079268
plot(table_ti1,col=c("red","green"))

1)Above shown is the confusion matrix with optimal threshold value and accuracy corresponding to it Hence for threshold 0.51 we get the maximum accuracy as 80.8%.

2)The graph represents the table in the graphical view showing green(predicted as “survived”) and red(predicted as “died”)

Above graph shows that-

1)People on high class are having less chance of dying than low passengerclass.

2)Also the age has less affect on the survival rate of the people.

Hence we the predict the test data with 80.8% accuracy

LS0tDQp0aXRsZTogIlN1cnZpdmFsIEFuYWx5c2lzIEZvciBUaXRhbmljIERhdGEiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KU3Vydml2YWwgQW5hbHlzaXMgUmVwb3J0IG9mIFRpdGFuaWMgZGF0YS4NCg0KYGBge3J9DQojaW1wb3J0aW5nIHRpdGFuaWMgZGF0YXNldA0KdGl0YW5pY19zPVRpdGFuaWNTdXJ2aXZhbA0KaGVhZCh0aXRhbmljX3MpDQpzdHIodGl0YW5pY19zKQ0Kc3VtbWFyeSh0aXRhbmljX3MpDQoNCmBgYA0KRnJvbSB0aGUgc3VtbWFyeSB0YWJsZSB3ZSBnZXQgdG8ga25vdyB0aGF0LQ0KDQoxKVRoZXJlIGFyZSAiMjYzIiBOVUxMIHZhbHVlcyBpbiB0aGUgYWdlIHZhcmlhYmxlLg0KDQoyKUFsc28gIHRoZSBzb21lIG9mIHRoZSB2YXJpYWJsZXMgYXJlIG9mIGNoYXJhY3RlciB0eXBlLg0KDQpTbywgd2UgbmVlZCB0byByZXNvbHZlIGJvdGggdGhlIGFib3ZlIG1lbnRpb25lZCBwcm9ibGVtcyBiZWZvcmUgYmVnaW5uaW5nIHRoZSBhbmFseXNpcy4NCmBgYHtyfQ0KDQp0aXRhbmljX3MkYWdlW2lzLm5hKHRpdGFuaWNfcyRhZ2UpXT1tZWFuKHRpdGFuaWNfcyRhZ2UsbmEucm0gPSBUUlVFKQ0KdGl0YW5pY19zJHN1cnZpdmVkPWlmZWxzZSh0aXRhbmljX3Mkc3Vydml2ZWQ9PSJ5ZXMiLDEsMCkNCnRpdGFuaWNfcyRzZXg9YXMubnVtZXJpYyh0aXRhbmljX3Mkc2V4KQ0KdGl0YW5pY19zJHBhc3NlbmdlckNsYXNzPWFzLm51bWVyaWModGl0YW5pY19zJHBhc3NlbmdlckNsYXNzKQ0KaGVhZCh0aXRhbmljX3MpDQpgYGANCkFzIHNob3duIGluIHRoZSBhYm92ZSB0YWJsZSB0aGUgbWlzc2luZyB2YWx1ZXMgYW5kIG5vbi1udW1lcmljIHZhbHVlcyBoYXZlIGJlZW4gcmVzb2x2ZWQuDQoNCk5vdyB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBpbmZsdWVuY2Ugb2YgZGlmZmVyZW50IHZhcmlhYmxlcyAsaGVyZSBhcmUgc29tZSBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gYW1vbmcgZGlmZmVyZW50IHZhcmlhYmxlcy4NCmBgYHtyfQ0KI2RlbnNpdHkgcGxvdCBmb3Igc3Vydml2YWwgb2YgZGlmZmVyZW50IGFnZQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ3JfdGl0YW5pYz1UaXRhbmljU3Vydml2YWwNCmdyX3RpdGFuaWMkc3Vydml2ZWQ9ZmFjdG9yKGdyX3RpdGFuaWMkc3Vydml2ZWQpDQphPSBxcGxvdChhZ2UsZGF0YSA9IGdyX3RpdGFuaWMsZ2VvbSA9ICJkZW5zaXR5IixmaWxsPXN1cnZpdmVkLGFscGhhPUkoLjcpLG1haW4gPSAiZGlzdHJpYnV0aW9uIG9mIGFnZSIseGxhYiA9ICJBZ2UiLHlsYWIgPSAiZGVuc2l0eSIsbmEucm09VFJVRSkNCmErIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkLml0YWxpYyIsc2l6ZSA9IDEwLGNvbG91ciA9ICJncmVlbiIpKQ0KDQpgYGANCkFib3ZlIGRpc3RyaWJ1dGlvbiBncmFwaCBzaG93cyB0aGUgc3Vydml2YWwgb2YgcGVvcGxlIG9mIGRpZmZlcmVudCBhZ2UgZ3JvdXAuDQpgYGB7cn0NCiNzdXJ2aXZhbCBzY2F0dGVycGxvdCBvZiBwZW9wbGUgb2YgZGlmZmVyZW50IGFnZSBncm91cCxzZXggYW5kIGNsYXNzDQpxcGxvdChhZ2UsYWdlLGRhdGE9Z3JfdGl0YW5pYyxzaGFwZT1zdXJ2aXZlZCxjb2xvcj1zdXJ2aXZlZCxmYWNldHMgPSBwYXNzZW5nZXJDbGFzc35zZXgsc2l6ZT1JKDIpLG1haW4gPSAic3Vydml2YWwgc2NhdHRlcnBsb3QiLG5hLnJtPVRSVUUpDQpgYGANCkFib3ZlIGdyYXBocyBzaG93cyB0aGUgbnVtYmVyIG9mIHBlb3BsZSBzdXJ2aXZlZCBvciBkaWVkIG9mIGRpZmZlcmVudCBhZ2Usc2V4IGFuZCBwYXNzZW5nZXJjbGFzcy4NCmBgYHtyfQ0KI2JveHBsb3QgDQpncl90aXRhbmljJGFnZVtpcy5uYShncl90aXRhbmljJGFnZSldPW1lYW4oZ3JfdGl0YW5pYyRhZ2UsbmEucm0gPSBUUlVFKQ0KZ2dwbG90KGdyX3RpdGFuaWMsYWVzKGFnZSxhZ2UsZmlsbD1wYXNzZW5nZXJDbGFzcyxuYS5ybT1UUlVFKSxuYS5ybT1UUlVFKStnZW9tX2JveHBsb3QoKSt0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZC5pdGFsaWMiLHNpemUgPSAxMixjb2xvciA9ICJibHVlIikpDQpgYGANClRoZSBib3hwbG90IHJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCBhZ2UgZ3JvdXAgcGVvcGxlIHdpdGggZGlmZmVyZW50IHBhc3NlbmdlcmNsYXNzLg0KDQpOb3cgbW92aW5nIG92ZXIgdG8gYW5hbHlzaXMgb2Ygb3VyIHRpdGFuaWMgZGF0YS4NCg0KMSlGaXJzdCB3ZSBoYXZlIHRvIHNwbGl0IHRoZSBkYXRhIGludG8gdHJhaW4gYW5kIHRlc3QgZGF0YS4NCg0KMilDcmVhdGluZyBhIG1vZGVsIG9yIGxvZ2lzdGljcyBlcXVhdGlvbiBmb3IgdGhlIHN1aXRpbmcgdGhlIGRhdGEsY29uc2lkZXJpbmcgc3Vydml2ZWQgYXMgYSBkZXBlbmRlbnQgdmFyaWFibGUgYW5kIHJlc3QgYXMgaW5kZXBlbmRlbnQgdmFyaWFibGUuDQpgYGB7cn0NCiNzcGxpdGluZyB0aGUgZGF0YSB1c2luZyBjYXRvb2xzIGxpYnJhcnkNCmxpYnJhcnkoY2FUb29scykNCnNwbGl0X3RpPXNhbXBsZS5zcGxpdCh0aXRhbmljX3MsU3BsaXRSYXRpbyA9IDAuOCkNCnRyYWluX3RpPXN1YnNldCh0aXRhbmljX3Msc3BsaXRfdGk9PSJUUlVFIikNCnRlc3RfdGk9c3Vic2V0KHRpdGFuaWNfcyxzcGxpdF90aT09IkZBTFNFIikNCiNjcmVhdGluZyBnbG0gbW9kZWwNCm1vZGVsX3RpPWdsbShzdXJ2aXZlZH4uLGRhdGEgPSB0cmFpbl90aSxmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpzdW1tYXJ5KG1vZGVsX3RpKQ0KYGBgDQpBcyBmcm9tIHRoZSBhYm92ZSB0YWJsZSx3ZSBjYW1lIHRvIGtub3cgdGhhdCBhY2NvcmRpbmcgdG8gcC12YWx1ZSBhbGwgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlcyBhcmUgc2lnbmlmaWNhbnQgYnV0IHNpbmNlIGluIGxvZ2lzdGljcyByZWdyZXNzaW9uIG5vdCBvbmx5IHAtdmFsdWUgaXMgY29uc2lkZXJlZCBidXQgYWxzbyB3ZSBoYXZlIHRvIHNlZSB0aGUgcmVzaWR1YWwgZXJyb3IgYW5kIEFJQy4gDQpgYGB7cn0NCiNjcmVhdGluZyBtb2RlbCB3aXRoIGRpZmZlcmVudCB2YXJpYWJsZXMgZm9yIHJlZHVjaW5nIHJlc2lkdWFsIGVycm9yIGFuZCBhY2N1cmFjeQ0KbW9kZWxfdGkxPWdsbShzdXJ2aXZlZH4uLXNleCxkYXRhID0gdHJhaW5fdGksZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpKQ0Kc3VtbWFyeShtb2RlbF90aTEpI3Rob3VnaCBleGNsdWRpbmcgc2V4IGxlZCB0byBpbmNyZWFzZSBpbiB0aGUgdmFsdWUgb2YgcmVzaWR1YWwgZXJyb3IgYW5kIEFJQyB3ZSBhcmUgbm90IG9taXRpbmcgaXQNCm1vZGVsX3RpMj1nbG0oc3Vydml2ZWR+Li1wYXNzZW5nZXJDbGFzcyxkYXRhID0gdHJhaW5fdGksZmFtaWx5ID0gImJpbm9taWFsIikNCnN1bW1hcnkobW9kZWxfdGkyKQ0KbW9kZWxfdGkzPWdsbShzdXJ2aXZlZH4uLWFnZSxkYXRhID0gdHJhaW5fdGksZmFtaWx5ID0gImJpbm9taWFsIikNCnN1bW1hcnkobW9kZWxfdGkzKQ0KDQpgYGANCkFmdGVyIGV4Y2x1ZGluZyBkaWZmZXJlbnQgdmFyaWFibGUgd2UgY2FtZSB0byB0aGUgcmVzdWx0IHRoYXQgbm9uZSBvZiB0aGUgdmFyaWFibGVzIGNhbiBiZSBpZ25vcmVkIGFzIGV4Y2x1ZGluZyB0aGVtIGxlZCB0byBpbmNyZWFzZSBpbiByZXNpZHVhbCBlcnJvciBhbmQgQUlDDQoNClNvIGJlc3QgZml0dGVkIG1vZGVsIGZvciB0aGlzIGRhdGEgaXMgIm1vZGVsX3RpIiBpbmNsdXNpdmUgb2YgYWxsIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZXMuDQoNCk5vdyB3ZSBoYXZlIHRvIHByZWRpY3QgdGhlIHN1cnZpdmFsIHJhdGUgZm9yIHRoZSB0ZXN0IGRhdGEuDQpgYGB7cn0NCiNwcmVkaWN0aW5nIHRoZSBzdXJ2aXZhbCBwcm9iYWJsaXR5IG9mIHRlc3QgZGF0YQ0KcHJlZF90aT1wcmVkaWN0KG1vZGVsX3RpLHRlc3RfdGksdHlwZSA9ICJyZXNwb25zZSIpDQpoZWFkKHByZWRfdGkpDQpgYGANCkFib3ZlIGRhdGEgc2hvd3MgdGhlIHByb2JhYmxpdHkgb2Ygc3Vydml2YWwgb2YgcGVvcGxlIGluIHRlc3QgZGF0YS4NCmBgYHtyfQ0KI2NvbmZ1c2lvbiBtYXRyaXgNCnRhYmxlX3RpPXRhYmxlKGFjdHVhbHZhbHVlPXRlc3RfdGkkc3Vydml2ZWQscHJlZGljdGVkdmFsdWU9cHJlZF90aT4wLjUpDQp0YWJsZV90aQ0KYGBgDQpmcm9tIGFib3ZlIGNvbmZ1c2lvbiBtYXRyaXggc2hvd3MgdGhlIG51bWJlciBvZiB2YWx1ZXMgdHJ1ZWx5IHByZWRpY3RlZCBhbmQgZmFsc2VseSBwcmVkaWN0ZWQNCg0KQTExPVRSVUUgTkVHQVRJVkUgKHRydWVseSBwcmVkaWN0ZWQgYXMgIm5vdCBzdXJ2aXZlZCIgKQ0KDQpBMjI9VFJVRSBQT1NJVElWRSAodHJ1ZWx5IHByZWRpY3RlZCBhcyAic3Vydml2ZWQiKQ0KDQpBMTI9RkFMU0UgUE9TSVRJVkUgKGZhbHNlbHkgcHJlZGljdGVkIGFzICJzdXJ2aXZlZCIpDQoNCkEyMT1GQUxTRSBORUdBVElWRSAoZmFsc2VseSBwcmVkaWN0ZWQgYXMgIm5vdCBzdXJ2aXZlZCIpDQoNCk5vdyBiYXNlZCBvbiB0aGUgc2V0IHRocmVzaG9sZCB3ZSBoYXZlIHRvIGNoZWNrIGl0cyBhY2N1cmFjeSBhbmQgZmluZCB0aGUgYmVzdCB0aHJlc2hvbGQgdmFsdWUgZm9yIG1heCBhY2N1cmFjeS4NCmBgYHtyfQ0KI2RldGVybWluaW5nIGFjY3VyYWN5IG9mIHRoZSBwcmVkaWN0aW9uDQphY2M9KCgxODArODQpLygxODArODQrMzgrMjUpKQ0KYWNjDQojc2luY2UgYWNjdXJhY3kgaXMgODAlIHdlIGNhbiBpbmNyZWFzZSBpdCBieSBzZWxlY3Rpbmcgb3B0aW1hbCB0aHJlc2hvbGQNCmxpYnJhcnkoUk9DUikNCnJvY3JfdGk9cHJlZGljdGlvbihwcmVkX3RpLHRlc3RfdGkkc3Vydml2ZWQpDQpyb2NyX3RpX3Blcj1wZXJmb3JtYW5jZShyb2NyX3RpLCJhY2MiKQ0Kcm9jcl90aV9wZXIxPXBlcmZvcm1hbmNlKHJvY3JfdGksInRwciIsImZwciIpDQpwbG90KHJvY3JfdGlfcGVyKQ0KcGxvdChyb2NyX3RpX3BlcjEsY29sb3JpemU9VFJVRSkNCg0KYGBgDQpmcm9tIHRoZSBhYm92ZSBjaGFydCB3ZSBjYW4gc2F5IHRoYXQgdGhyZXNob2xkIG11c3QgYiBpbiBiZXR3ZWVuIDAuNXRvMC42DQosU28gYWdhaW4gbWFraW5nIHRhYmxlIGJ5IHNldHRpbmcgdGhyZXNob2xkIGluIGJldHdlZW4gMC41dG8wLjYNCmBgYHtyfQ0KdGFibGVfdGkxPXRhYmxlKGFjdHVhbHZhbHVlPXRlc3RfdGkkc3Vydml2ZWQscHJlZGljdGVkdmFsdWU9cHJlZF90aT4wLjUxKQ0KdGFibGVfdGkxDQphY2N1cmFjeV90aTE9KCgxODErODQpLygxODErODQrMjQrMzkpKQ0KYWNjdXJhY3lfdGkxDQpwbG90KHRhYmxlX3RpMSxjb2w9YygicmVkIiwiZ3JlZW4iKSkNCmBgYA0KMSlBYm92ZSBzaG93biBpcyB0aGUgY29uZnVzaW9uIG1hdHJpeCB3aXRoIG9wdGltYWwgdGhyZXNob2xkIHZhbHVlIGFuZCBhY2N1cmFjeSBjb3JyZXNwb25kaW5nIHRvIGl0DQpIZW5jZSBmb3IgdGhyZXNob2xkIDAuNTEgd2UgZ2V0IHRoZSBtYXhpbXVtIGFjY3VyYWN5IGFzIDgwLjglLg0KDQoyKVRoZSBncmFwaCByZXByZXNlbnRzIHRoZSB0YWJsZSBpbiB0aGUgZ3JhcGhpY2FsIHZpZXcgc2hvd2luZyBncmVlbihwcmVkaWN0ZWQgYXMgInN1cnZpdmVkIikgYW5kIHJlZChwcmVkaWN0ZWQgYXMgImRpZWQiKQ0KDQpgYGB7cn0NCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KZzE9Z2dwbG90KHRyYWluX3RpLGFlcyh4PXBhc3NlbmdlckNsYXNzLHk9c3Vydml2ZWQpKStnZW9tX3BvaW50KCkrc3RhdF9zbW9vdGgobWV0aG9kID0gImdsbSIsbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseT0iYmlub21pYWwiKSxzZT1UUlVFKSt0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZC5pdGFsaWMiLHNpemUgPSAxMixjb2xvciA9ICJibHVlIikpDQpnMj1nZ3Bsb3QodHJhaW5fdGksYWVzKHg9YWdlLHk9c3Vydml2ZWQpKStnZW9tX3BvaW50KCkrc3RhdF9zbW9vdGgobWV0aG9kID0gImdsbSIsbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseT0iYmlub21pYWwiKSxzZT1UUlVFKSt0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZC5pdGFsaWMiLHNpemUgPSAxMixjb2xvciA9ICJicm93biIpKQ0KDQpncmlkLmFycmFuZ2UoZzEsZzIsbnJvdz0xKQ0KDQpgYGANCkFib3ZlIGdyYXBoIHNob3dzIHRoYXQtDQoNCjEpUGVvcGxlIG9uIGhpZ2ggY2xhc3MgYXJlIGhhdmluZyBsZXNzIGNoYW5jZSBvZiBkeWluZyB0aGFuIGxvdyBwYXNzZW5nZXJjbGFzcy4NCg0KMilBbHNvIHRoZSBhZ2UgaGFzIGxlc3MgYWZmZWN0IG9uIHRoZSBzdXJ2aXZhbCByYXRlIG9mIHRoZSBwZW9wbGUuDQoNCkhlbmNlIHdlIHRoZSBwcmVkaWN0IHRoZSB0ZXN0IGRhdGEgd2l0aCA4MC44JSBhY2N1cmFjeQ0KDQo=