library(car)
## Loading required package: carData
library(mice)
## 
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
## 
##     filter
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
brfss20sm <- readRDS("C:/Users/shahi/Dropbox/PC/Downloads/brfss20sm.rds")

names(brfss20sm) <- tolower(gsub(pattern = "_",replacement =  "",x =  names(brfss20sm)))

#Measure an outcome variable and at least 5 predictors:

#Age cut into intervals
brfss20sm$agec<-cut(brfss20sm$age80,
                   breaks=c(0,29,39,59,79,99))

brfss20sm$ageg<-factor(brfss20sm$ageg)
#depressive disorder
brfss20sm$depression<-Recode(brfss20sm$addepev3, recodes="1=1; 2=0; 7:9=NA")

#healthy mental health days
brfss20sm$healthmdays <- Recode (brfss20sm$menthlth,recodes = "88=0; 77=NA; 99=NA")


#smoking currently
brfss20sm$smoke<-Recode(brfss20sm$smoker3,
                       recodes="1:2 ='Current'; 3 ='Former';4 ='NeverSmoked'; else = NA",
                       as.factor=T)

brfss20sm$smoke<-relevel(brfss20sm$smoke,
                        ref = "NeverSmoked")
#employment
brfss20sm$employ<-Recode(brfss20sm$employ1,
                        recodes="1:2='Employed'; 2:6='nilf'; 7='retired'; 8='unable'; else=NA",
                        as.factor=T)

brfss20sm$employ<-relevel(brfss20sm$employ,
                         ref='Employed')
#marital status
brfss20sm$marst<-Recode(brfss20sm$marital,
                       recodes="1='married'; 2='divorced'; 3='widowed'; 4='separated'; 5='nm';6='cohab'; else=NA",
                       as.factor=T)

brfss20sm$marst<-relevel(brfss20sm$marst,
                        ref='married')

#insurance
brfss20sm$ins<-Recode(brfss20sm$hlthpln1,
                     recodes ="7:9=NA; 1=1;2=0")
brfss20sm$checkup <- Recode (brfss20sm$checkup1, recodes = "1:2 = 1; 3:4 =0; 8=0; else=NA")

##Report the pattern of missingness among all of these variables:

summary(brfss20sm[, c("ins", "smoke", "checkup" , "depression", "employ", "marst")])
##       ins                 smoke           checkup         depression    
##  Min.   :0.0000   NeverSmoked:113280   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:1.0000   Current    : 22708   1st Qu.:1.0000   1st Qu.:0.0000  
##  Median :1.0000   Former     : 48272   Median :1.0000   Median :0.0000  
##  Mean   :0.9166   NA's       : 11128   Mean   :0.9014   Mean   :0.1881  
##  3rd Qu.:1.0000                        3rd Qu.:1.0000   3rd Qu.:0.0000  
##  Max.   :1.0000                        Max.   :1.0000   Max.   :1.0000  
##  NA's   :996                           NA's   :2374     NA's   :1093    
##       employ             marst      
##  Employed:102906   married  :98739  
##  nilf    : 26377   cohab    : 8116  
##  retired : 51605   divorced :24375  
##  unable  : 10561   nm       :39391  
##  NA's    :  3939   separated: 3990  
##                    widowed  :18542  
##                    NA's     : 2235

Which shows that, among these recoded variables, smoke , the currently smoking variable, 11128 people in the BRFSS, or 5.6953344% of the sample.

The lowest number of missings is in the insurance variable, which only has 0.5097549% missing.

##Perform a mean (a mean for numeric data) or a modal imputation (for categorical data) of all values. Perform the analysis using this imputed data. What are your results?:

LS0tDQp0aXRsZTogIkhvbWV3b3JrIDgiDQphdXRob3I6ICJNYWhtdWRhIFN1bHRhbmEiDQpkYXRlOiAiNC8xLzIwMjIiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGZpZ19oZWlnaHQ6IDcNCiAgICBmaWdfd2lkdGg6IDcNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogIA0KLS0tDQoNCmBgYHtyfQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KG1pY2UpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KYGBgDQoNCg0KYGBge3J9DQoNCmJyZnNzMjBzbSA8LSByZWFkUkRTKCJDOi9Vc2Vycy9zaGFoaS9Ecm9wYm94L1BDL0Rvd25sb2Fkcy9icmZzczIwc20ucmRzIikNCg0KbmFtZXMoYnJmc3MyMHNtKSA8LSB0b2xvd2VyKGdzdWIocGF0dGVybiA9ICJfIixyZXBsYWNlbWVudCA9ICAiIix4ID0gIG5hbWVzKGJyZnNzMjBzbSkpKQ0KDQpgYGANCg0KI01lYXN1cmUgYW4gb3V0Y29tZSB2YXJpYWJsZSBhbmQgYXQgbGVhc3QgNSBwcmVkaWN0b3JzOg0KDQpgYGB7cn0NCiNBZ2UgY3V0IGludG8gaW50ZXJ2YWxzDQpicmZzczIwc20kYWdlYzwtY3V0KGJyZnNzMjBzbSRhZ2U4MCwNCiAgICAgICAgICAgICAgICAgICBicmVha3M9YygwLDI5LDM5LDU5LDc5LDk5KSkNCg0KYnJmc3MyMHNtJGFnZWc8LWZhY3RvcihicmZzczIwc20kYWdlZykNCiNkZXByZXNzaXZlIGRpc29yZGVyDQpicmZzczIwc20kZGVwcmVzc2lvbjwtUmVjb2RlKGJyZnNzMjBzbSRhZGRlcGV2MywgcmVjb2Rlcz0iMT0xOyAyPTA7IDc6OT1OQSIpDQoNCiNoZWFsdGh5IG1lbnRhbCBoZWFsdGggZGF5cw0KYnJmc3MyMHNtJGhlYWx0aG1kYXlzIDwtIFJlY29kZSAoYnJmc3MyMHNtJG1lbnRobHRoLHJlY29kZXMgPSAiODg9MDsgNzc9TkE7IDk5PU5BIikNCg0KDQojc21va2luZyBjdXJyZW50bHkNCmJyZnNzMjBzbSRzbW9rZTwtUmVjb2RlKGJyZnNzMjBzbSRzbW9rZXIzLA0KICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxOjIgPSdDdXJyZW50JzsgMyA9J0Zvcm1lcic7NCA9J05ldmVyU21va2VkJzsgZWxzZSA9IE5BIiwNCiAgICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpDQoNCmJyZnNzMjBzbSRzbW9rZTwtcmVsZXZlbChicmZzczIwc20kc21va2UsDQogICAgICAgICAgICAgICAgICAgICAgICByZWYgPSAiTmV2ZXJTbW9rZWQiKQ0KI2VtcGxveW1lbnQNCmJyZnNzMjBzbSRlbXBsb3k8LVJlY29kZShicmZzczIwc20kZW1wbG95MSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE6Mj0nRW1wbG95ZWQnOyAyOjY9J25pbGYnOyA3PSdyZXRpcmVkJzsgOD0ndW5hYmxlJzsgZWxzZT1OQSIsDQogICAgICAgICAgICAgICAgICAgICAgICBhcy5mYWN0b3I9VCkNCg0KYnJmc3MyMHNtJGVtcGxveTwtcmVsZXZlbChicmZzczIwc20kZW1wbG95LA0KICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj0nRW1wbG95ZWQnKQ0KI21hcml0YWwgc3RhdHVzDQpicmZzczIwc20kbWFyc3Q8LVJlY29kZShicmZzczIwc20kbWFyaXRhbCwNCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbWFycmllZCc7IDI9J2Rpdm9yY2VkJzsgMz0nd2lkb3dlZCc7IDQ9J3NlcGFyYXRlZCc7IDU9J25tJzs2PSdjb2hhYic7IGVsc2U9TkEiLA0KICAgICAgICAgICAgICAgICAgICAgICBhcy5mYWN0b3I9VCkNCg0KYnJmc3MyMHNtJG1hcnN0PC1yZWxldmVsKGJyZnNzMjBzbSRtYXJzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZj0nbWFycmllZCcpDQoNCiNpbnN1cmFuY2UNCmJyZnNzMjBzbSRpbnM8LVJlY29kZShicmZzczIwc20kaGx0aHBsbjEsDQogICAgICAgICAgICAgICAgICAgICByZWNvZGVzID0iNzo5PU5BOyAxPTE7Mj0wIikNCmJyZnNzMjBzbSRjaGVja3VwIDwtIFJlY29kZSAoYnJmc3MyMHNtJGNoZWNrdXAxLCByZWNvZGVzID0gIjE6MiA9IDE7IDM6NCA9MDsgOD0wOyBlbHNlPU5BIikNCmBgYA0KDQoNCiMjUmVwb3J0IHRoZSBwYXR0ZXJuIG9mIG1pc3NpbmduZXNzIGFtb25nIGFsbCBvZiB0aGVzZSB2YXJpYWJsZXM6DQoNCmBgYHtyfQ0Kc3VtbWFyeShicmZzczIwc21bLCBjKCJpbnMiLCAic21va2UiLCAiY2hlY2t1cCIgLCAiZGVwcmVzc2lvbiIsICJlbXBsb3kiLCAibWFyc3QiKV0pDQpgYGANCldoaWNoIHNob3dzIHRoYXQsIGFtb25nIHRoZXNlIHJlY29kZWQgdmFyaWFibGVzLCBgc21va2VgICwgdGhlIGN1cnJlbnRseSBzbW9raW5nIHZhcmlhYmxlLCBgciB0YWJsZShpcy5uYShicmZzczIwc20kc21va2UpKVsyXWAgcGVvcGxlIGluIHRoZSBCUkZTUywgb3IgYHIgMTAwKiAodGFibGUoaXMubmEoYnJmc3MyMHNtJHNtb2tlKSlbMl0vbGVuZ3RoKGJyZnNzMjBzbSRzbW9rZSkpYCUgb2YgdGhlIHNhbXBsZS4gDQoNClRoZSBsb3dlc3QgbnVtYmVyIG9mIG1pc3NpbmdzIGlzIGluIHRoZSBpbnN1cmFuY2UgdmFyaWFibGUsIHdoaWNoIG9ubHkgaGFzIGByIDEwMCogKHRhYmxlKGlzLm5hKGJyZnNzMjBzbSRpbnMpKVsyXS9sZW5ndGgoYnJmc3MyMHNtJGlucykpYCUgbWlzc2luZy4NCg0KDQoNCg0KDQojI1BlcmZvcm0gYSBtZWFuIChhIG1lYW4gZm9yIG51bWVyaWMgZGF0YSkgb3IgYSBtb2RhbCBpbXB1dGF0aW9uIChmb3IgY2F0ZWdvcmljYWwgZGF0YSkgb2YgYWxsIHZhbHVlcy4gUGVyZm9ybSB0aGUgYW5hbHlzaXMgdXNpbmcgdGhpcyBpbXB1dGVkIGRhdGEuIFdoYXQgYXJlIHlvdXIgcmVzdWx0cz86DQoNCg0KDQojIyBNb2RhbCBpbXB1dGF0aW9uIGZvciBFbXBsb3ltZW50IFN0YXR1czoNCg0KYGBge3J9DQp0YWJsZShicmZzczIwc20kZW1wbG95KQ0KI2ZpbmQgdGhlIG1vc3QgY29tbW9uIHZhbHVlDQptY3YuZW1wbG95PC1mYWN0b3IobmFtZXMod2hpY2gubWF4KHRhYmxlKGJyZnNzMjBzbSRlbXBsb3kpKSksIGxldmVscz1sZXZlbHMoYnJmc3MyMHNtJGVtcGxveSkpDQptY3YuZW1wbG95DQojaW1wdXRlIHRoZSBjYXNlcw0KYnJmc3MyMHNtJGVtcGxveS5pbXA8LWFzLmZhY3RvcihpZmVsc2UoaXMubmEoYnJmc3MyMHNtJGVtcGxveSk9PVQsIG1jdi5lbXBsb3ksIGJyZnNzMjBzbSRlbXBsb3kpKQ0KbGV2ZWxzKGJyZnNzMjBzbSRlbXBsb3kuaW1wKTwtbGV2ZWxzKGJyZnNzMjBzbSRlbXBsb3kpDQoNCnByb3AudGFibGUodGFibGUoYnJmc3MyMHNtJGVtcGxveSkpDQpwcm9wLnRhYmxlKHRhYmxlKGJyZnNzMjBzbSRlbXBsb3kuaW1wKSkNCg0KYmFycGxvdChwcm9wLnRhYmxlKHRhYmxlKGJyZnNzMjBzbSRlbXBsb3kpKSwgbWFpbj0iT3JpZ2luYWwgRGF0YSIsIHlsaW09YygwLCAuNikpDQpiYXJwbG90KHByb3AudGFibGUodGFibGUoYnJmc3MyMHNtJGVtcGxveS5pbXApKSwgbWFpbj0iSW1wdXRlZCBEYXRhIix5bGltPWMoMCwgLjYpKQ0KYGBgDQoNCiMjIE1vZGFsIGltcHV0YXRpb24gZm9yIE1hcml0YWwgU3RhdHVzOg0KDQpgYGB7cn0NCnRhYmxlKGJyZnNzMjBzbSRtYXJzdCkNCiNmaW5kIHRoZSBtb3N0IGNvbW1vbiB2YWx1ZQ0KbWN2Lm1hcnN0PC1mYWN0b3IobmFtZXMod2hpY2gubWF4KHRhYmxlKGJyZnNzMjBzbSRtYXJzdCkpKSwgbGV2ZWxzPWxldmVscyhicmZzczIwc20kbWFyc3QpKQ0KbWN2Lm1hcnN0DQojaW1wdXRlIHRoZSBjYXNlcw0KYnJmc3MyMHNtJG1hcnN0LmltcDwtYXMuZmFjdG9yKGlmZWxzZShpcy5uYShicmZzczIwc20kbWFyc3QpPT1ULCBtY3YubWFyc3QsIGJyZnNzMjBzbSRtYXJzdCkpDQpsZXZlbHMoYnJmc3MyMHNtJG1hcnN0LmltcCk8LWxldmVscyhicmZzczIwc20kbWFyc3QpDQoNCnByb3AudGFibGUodGFibGUoYnJmc3MyMHNtJG1hcnN0KSkNCnByb3AudGFibGUodGFibGUoYnJmc3MyMHNtJG1hcnN0LmltcCkpDQoNCmJhcnBsb3QocHJvcC50YWJsZSh0YWJsZShicmZzczIwc20kbWFyc3QpKSwgbWFpbj0iT3JpZ2luYWwgRGF0YSIsIHlsaW09YygwLCAuNikpDQpiYXJwbG90KHByb3AudGFibGUodGFibGUoYnJmc3MyMHNtJG1hcnN0LmltcCkpLCBtYWluPSJJbXB1dGVkIERhdGEiLHlsaW09YygwLCAuNikpDQpgYGANCg0KDQojIyBNb2RhbCBpbXB1dGF0aW9uIGZvciBDdXJyZW50bHkgU21va2luZzoNCg0KYGBge3J9DQp0YWJsZShicmZzczIwc20kc21va2UpDQojZmluZCB0aGUgbW9zdCBjb21tb24gdmFsdWUNCm1jdi5zbW9rZTwtZmFjdG9yKG5hbWVzKHdoaWNoLm1heCh0YWJsZShicmZzczIwc20kc21va2UpKSksIGxldmVscz1sZXZlbHMoYnJmc3MyMHNtJHNtb2tlKSkNCm1jdi5zbW9rZQ0KI2ltcHV0ZSB0aGUgY2FzZXMNCmJyZnNzMjBzbSRzbW9rZS5pbXA8LWFzLmZhY3RvcihpZmVsc2UoaXMubmEoYnJmc3MyMHNtJHNtb2tlKT09VCwgbWN2LnNtb2tlLCBicmZzczIwc20kc21va2UpKQ0KbGV2ZWxzKGJyZnNzMjBzbSRzbW9rZS5pbXApPC1sZXZlbHMoYnJmc3MyMHNtJHNtb2tlKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKGJyZnNzMjBzbSRzbW9rZSkpDQpwcm9wLnRhYmxlKHRhYmxlKGJyZnNzMjBzbSRzbW9rZS5pbXApKQ0KDQpiYXJwbG90KHByb3AudGFibGUodGFibGUoYnJmc3MyMHNtJHNtb2tlKSksIG1haW49Ik9yaWdpbmFsIERhdGEiLCB5bGltPWMoMCwgLjYpKQ0KYmFycGxvdChwcm9wLnRhYmxlKHRhYmxlKGJyZnNzMjBzbSRzbW9rZS5pbXApKSwgbWFpbj0iSW1wdXRlZCBEYXRhIix5bGltPWMoMCwgLjYpKQ0KYGBgDQoNCiMjIyBQZXJmb3JtIGEgbXVsdGlwbGUgaW1wdXRhdGlvbiBvZiBhbGwgdmFsdWVzLiBQZXJmb3JtIHRoZSBhbmFseXNpcyB1c2luZyB0aGlzIGltcHV0ZWQgZGF0YSBzZXQuIFdoYXQgYXJlIHlvdXIgcmVzdWx0cz8NCiANCmBgYHtyLCBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9Nn0NCiNsb29rIGF0IHRoZSBwYXR0ZXJucyBvZiBtaXNzaW5nbmVzcw0KbWQucGF0dGVybihicmZzczIwc21bLGMoImlucyIsICJzbW9rZSIsICJjaGVja3VwIiAsICJkZXByZXNzaW9uIiwgImVtcGxveSIsICJtYXJzdCIpXSkNCmBgYA0KDQpgYGB7cn0NCm1kLnBhaXJzKGJyZnNzMjBzbVssYygiaW5zIiwgInNtb2tlIiwgImNoZWNrdXAiICwgImRlcHJlc3Npb24iLCAiZW1wbG95IiwgIm1hcnN0IildKQ0KYGBgDQoNCg0KYGBge3J9DQoNCmRhdDE8LWJyZnNzMjBzbQ0Kc2FtcDE8LXNhbXBsZSgxOmRpbShkYXQxKVsxXSwgcmVwbGFjZSA9IEYsIHNpemUgPSA1MDApDQoNCmltcDwtbWljZShkYXRhID0gZGF0MVssYygiaW5zIiwgInNtb2tlIiwgImNoZWNrdXAiICwgImRlcHJlc3Npb24iLCAiZW1wbG95IiwgIm1hcnN0IildLCBzZWVkID0gMjIsIG0gPSA1KQ0KDQpwcmludChpbXApDQoNCnBsb3QoaW1wKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmhlYWQoaW1wJGltcCRkZXByZXNzaW9uKQ0Kc3VtbWFyeShpbXAkaW1wJGRlcHJlc3Npb24pDQpgYGANCg0KYGBge3J9DQpoZWFkKGltcCRpbXAkZW1wbG95KQ0Kc3VtbWFyeShpbXAkaW1wJGVtcGxveSkNCmBgYA0KDQoNCg0KYGBge3J9DQpkYXQuaW1wPC1jb21wbGV0ZShpbXAsIGFjdGlvbiA9IDEpDQpoZWFkKGRhdC5pbXAsIG49MTApDQoNCiNDb21wYXJlIHRvIHRoZSBvcmlnaW5hbCBkYXRhDQpoZWFkKGJyZnNzMjBzbVssYygiaW5zIiwgInNtb2tlIiwgImNoZWNrdXAiICwgImRlcHJlc3Npb24iLCAiZW1wbG95IiwgIm1hcnN0IildLCBuPTEwKQ0KYGBgDQoNCldoaWxlIHRoZSBmaXJzdCBmZXcgY2FzZXMgZG9uJ3Qgc2hvdyBtdWNoIG1pc3NpbmduZXNzLCB3ZSBjYW4gY29heCBzb21lIG1vcmUgaW50ZXJlc3RpbmcgY2FzZXMgb3V0IGFuZCBjb21wYXJlIHRoZSBvcmlnaW5hbCBkYXRhIHRvIHRoZSBpbXB1dGVkOg0KDQpgYGB7cn0NCmhlYWQoZGF0LmltcFtpcy5uYShicmZzczIwc20kZGVwcmVzc2lvbik9PVQsXSwgbj0xMCkNCg0KaGVhZChicmZzczIwc21baXMubmEoYnJmc3MyMHNtJGRlcHJlc3Npb24pPT1ULGMoImlucyIsICJzbW9rZSIsICJjaGVja3VwIiAsICJkZXByZXNzaW9uIiwgImVtcGxveSIsICJtYXJzdCIpXSwgbj0xMCkNCg0KYGBgDQoNCiMjIyBBbmFseXppbmcgaW1wdXRlZCBkYXRhOg0KDQpgYGB7cn0NCiNOb3csIEkgd2lsbCBzZWUgdGhlIHZhcmlhYmlsaXR5IGluIHRoZSA1IGRpZmZlcmVudCBpbXB1dGF0aW9ucyBmb3IgZWFjaCBvdXRjb21lDQpmaXQuZGVwcmVzc2lvbjwtd2l0aChkYXRhPWltcCAsZXhwcj1sbShkZXByZXNzaW9ufmVtcGxveSttYXJzdCtzbW9rZStpbnMrY2hlY2t1cCkpDQpmaXQuZGVwcmVzc2lvbg0KYGBgDQoNCiMjIyB2YXJpYXRpb24gaW4gZGVwcmVzc2lvbg0KYGBge3J9DQoNCndpdGggKGRhdGE9aW1wLCBleHA9KHNkKGRlcHJlc3Npb24pKSkNCmBgYA0KDQojIyMgRnJlcXVlbmN5IHRhYmxlIGZvciBlbXBsb3ltZW50DQpgYGB7cn0NCndpdGggKGRhdGE9aW1wLCBleHA9KHByb3AudGFibGUodGFibGUoZW1wbG95KSkpKQ0KYGBgDQoNCiMjIyBGcmVxdWVuY3kgdGFibGUgZm9yIG1hcml0YWwgc3RhdHVzDQoNCmBgYHtyfQ0Kd2l0aCAoZGF0YT1pbXAsIGV4cD0ocHJvcC50YWJsZSh0YWJsZShtYXJzdCkpKSkNCmBgYA0KDQojIyMgRnJlcXVlbmN5IHRhYmxlIGZvciBzbW9raW5nIGN1cnJlbnRseQ0KDQpgYGB7cn0NCndpdGggKGRhdGE9aW1wLCBleHA9KHByb3AudGFibGUodGFibGUoc21va2UpKSkpDQoNCmBgYA0KDQpOb3cgd2UgcG9vbCB0aGUgc2VwYXJhdGUgbW9kZWxzIGZyb20gZWFjaCBpbXB1dGVkIGRhdGEgc2V0Og0KYGBge3J9DQplc3QucDwtcG9vbChmaXQuZGVwcmVzc2lvbikNCnByaW50KGVzdC5wKQ0Kc3VtbWFyeShlc3QucCkNCmBgYA0KDQoNCmBgYHtyfQ0KbGFtPC1kYXRhLmZyYW1lKGxhbT1lc3QucCRwb29sZWQkbGFtYmRhLCBwYXJhbT1yb3cubmFtZXMoZXN0LnAkcG9vbGVkKSkNCg0KZ2dwbG90KGRhdGE9bGFtLGFlcyh4PXBhcmFtLCB5PWxhbSkpK2dlb21fY29sKCkrdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYA0KV2UgY2FuIGFsc28gY29tcGFyZSB0byB0aGUgbW9kZWwgZml0IG9uIHRoZSBvcmlnaW5hbCBkYXRhLCB3aXRoIG1pc3NpbmdzIGVsaW1pbmF0ZWQ6DQpgYGB7cn0NCmxpYnJhcnkoZHBseXIpDQpibm08LWJyZnNzMjBzbSU+JQ0KICBzZWxlY3QoaW5zLHNtb2tlLGNoZWNrdXAsZGVwcmVzc2lvbixlbXBsb3ksbWFyc3QpICU+JSANCiAgZmlsdGVyKGNvbXBsZXRlLmNhc2VzKC4pKSU+JQ0KICBhcy5kYXRhLmZyYW1lKCkNCg0Kc3VtbWFyeShsbShkZXByZXNzaW9ufmVtcGxveSttYXJzdCtzbW9rZStpbnMrY2hlY2t1cCwgYm5tKSkNCmBgYA0KIyMjIENvbXBhcmUgaW1wdXRlZCBtb2RlbCB0byBvcmlnaW5hbCBkYXRhDQpIZXJlLCBJIGNvbXBhcmUgdGhlIGNvZWZmaWNpZW50cyBmcm9tIHRoZSBtb2RlbCB3aGVyZSB3ZSBlbGltaW5hdGVkIGFsbCBtaXNzaW5nIGRhdGEgdG8gdGhlIG9uZSB0aGF0IHdlIGZpdCBvbiB0aGUgaW1wdXRlZCBkYXRhOg0KYGBge3J9DQpmaXQxPC1sbShkZXByZXNzaW9ufmVtcGxveSttYXJzdCtzbW9rZStpbnMrY2hlY2t1cCwgZGF0YT1icmZzczIwc20pDQpzdW1tYXJ5KGZpdDEpDQoNCmZpdC5pbXA8LWxtKGRlcHJlc3Npb25+ZW1wbG95K21hcnN0K3Ntb2tlK2lucytjaGVja3VwLCBkYXRhPWRhdC5pbXApDQpzdW1tYXJ5KGZpdC5pbXApDQpgYGANCg0KDQo=