
Email : calvin.riswandi@student.matanuniversity.ac.id
RPubs : https://rpubs.com/calvinriswandy/
Jurusan
: Statistika
Bisnis
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng,
Kelapa Dua, Tangerang, Banten 15810.
Library
setwd(getwd())
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(broom)
library(ggpubr)
Simple Regression
import data
income.data = read.csv("income.data.csv")
summary(income.data)
## X income happiness
## Min. : 1.0 Min. :1.506 Min. :0.266
## 1st Qu.:125.2 1st Qu.:3.006 1st Qu.:2.266
## Median :249.5 Median :4.424 Median :3.473
## Mean :249.5 Mean :4.467 Mean :3.393
## 3rd Qu.:373.8 3rd Qu.:5.992 3rd Qu.:4.503
## Max. :498.0 Max. :7.482 Max. :6.863
linearitas
plot(happiness ~ income, data = income.data)
Karena pola grafik linear, maka kita akan menggunakan regresi
linear.
independensi atau
autokorelasi
karena uji regresi di atas linier maka sudah dipastikan kita
mengetahui dependent dan independentnya. Lalu Maka kita tidak perlu
melakukan cek lagi hubungan antar variabel karena variable dependentnya
hanya ada satu.
normalitas
hist(income.data$happiness)
hasil dari histogram di atas kira-kira datanya bersebar normal atau
berbentuk lonceng (bell-shaped), maka data kita merupakan normal.
Linear regression
analisis
income.happiness.lm <- lm(happiness ~ income, data = income.data)
summary(income.happiness.lm)
##
## Call:
## lm(formula = happiness ~ income, data = income.data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.02479 -0.48526 0.04078 0.45898 2.37805
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.20427 0.08884 2.299 0.0219 *
## income 0.71383 0.01854 38.505 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7181 on 496 degrees of freedom
## Multiple R-squared: 0.7493, Adjusted R-squared: 0.7488
## F-statistic: 1483 on 1 and 496 DF, p-value: < 2.2e-16
Dari hasil tersebut didapat bahwa p-value < dari alpha 5%, dan
R-square sebesar 74,88%. Berarti terdapat 74,88% variabel yang sudah
termsuk kedalam regresi. Regresi di atas sudah bisa kita gunakan
walaupun belum terlalu baik. Kalau dilihat dari variabel dependen income
memiliki pengaruh yang signifikan terhadap variabel independen
happiness.
Jadi model refresinya adalah :
happiness = 0.204 + 0.714*income
visualisasi Hasil
dengan grafik
ggplot(income.data, aes(x=income, y=happiness))+
geom_point()+
geom_smooth(method="lm", col="black")+
stat_regline_equation(label.x = 3, label.y = 7)+
theme_bw() +
labs(title = "Reported happiness as a function of income",
x = "Income (x$10,000)",
y = "Happiness score (0 to 10)")
## `geom_smooth()` using formula = 'y ~ x'

Multiple
Regression
import data
heart.data = read.csv("heart.data.csv")
summary(heart.data)
## X biking smoking heart.disease
## Min. : 1.0 Min. : 1.119 Min. : 0.5259 Min. : 0.5519
## 1st Qu.:125.2 1st Qu.:20.205 1st Qu.: 8.2798 1st Qu.: 6.5137
## Median :249.5 Median :35.824 Median :15.8146 Median :10.3853
## Mean :249.5 Mean :37.788 Mean :15.4350 Mean :10.1745
## 3rd Qu.:373.8 3rd Qu.:57.853 3rd Qu.:22.5689 3rd Qu.:13.7240
## Max. :498.0 Max. :74.907 Max. :29.9467 Max. :20.4535
cek asumsi
Sama seperti simple regression, kita harus mengecek asumsi-asumsi
yang ada.
linearitas
plot(heart.disease ~ biking, data=heart.data)

plot(heart.disease ~ smoking, data=heart.data)
meskipun hubungan antara smoking dan heart desease agak kurang jelas,
namun tetap terlihat linier.
independensi atau
autokorelasi
cor(heart.data$biking, heart.data$smoking)
## [1] 0.01513618
korelasi antara biking dan smoking hanya 0.015 atau 1.5%, maka kita
simpulkan bahwa variable dependentnya tidak ber autokorelasi.
normalitas
hist(heart.data$heart.disease)
dari hasil histogram di atas histogram itu berbentuk lonceng maka bisa
dinyatakan bahwa model di atas merupakan data yang normal.
Linear regression
analisis
heart.disease.lm<-lm(heart.disease ~ biking + smoking, data = heart.data)
summary(heart.disease.lm)
##
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = heart.data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1789 -0.4463 0.0362 0.4422 1.9331
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.984658 0.080137 186.99 <2e-16 ***
## biking -0.200133 0.001366 -146.53 <2e-16 ***
## smoking 0.178334 0.003539 50.39 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.654 on 495 degrees of freedom
## Multiple R-squared: 0.9796, Adjusted R-squared: 0.9795
## F-statistic: 1.19e+04 on 2 and 495 DF, p-value: < 2.2e-16
Dari hasil tersebut didapat bahwa p-value < dari alpha 5%, dan
R-square sebesar 97,96%. Berarti terdapat 97,96% variabel yang sudah
termsuk kedalam regresi. Regresi di atas sudah sangat baik untuk
digunakan.
visualisasi Hasil
dengan grafik
plotting.data<-expand.grid(
biking = seq(min(heart.data$biking), max(heart.data$biking), length.out=30),
smoking=c(min(heart.data$smoking), mean(heart.data$smoking), max(heart.data$smoking)))
plotting.data$predicted.y <- predict.lm(heart.disease.lm, newdata=plotting.data)
plotting.data$smoking <- as.factor(round(plotting.data$smoking, digits = 2))
ggplot(heart.data, aes(x=biking, y=heart.disease)) +
geom_point()+
geom_line(data=plotting.data, aes(x=biking, y=predicted.y, color=smoking), size=1.25)+
theme_bw() +
labs(title = "Rates of heart disease (% of population) \n as a function of biking to work and smoking",
x = "Biking to work (% of population)",
y = "Heart disease (% of population)",
color = "Smoking \n (% of population)")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

homosdesitas
(kehomogenitas varians)
par(mfrow=c(1,1))
plot(heart.disease.lm)




Dalam survei kami terhadap 500 kota, kami menemukan hubungan yang
signifikan antara frekuensi bersepeda ke tempat kerja dan frekuensi
penyakit jantung serta frekuensi merokok dan frekuensi penyakit jantung
(masing-masing p < 0 dan p < 0,001).
Secara khusus kami menemukan penurunan 0,2% (± 0,0014) pada frekuensi
penyakit jantung untuk setiap peningkatan 1% dalam bersepeda, dan
peningkatan 0,178% (± 0,0035) pada frekuensi penyakit jantung untuk
setiap peningkatan 1% dalam merokok.
LS0tCnRpdGxlOiAiS29tcHV0YXNpIFN0YXRpc3Rpa2EiCnN1YnRpdGxlOiAiVHVnYXMgNiIKYXV0aG9yOiAiQ2FsdmluIFJpc3dhbmRpICgyMDIxNDkyMDAwMykiCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OiAKICAgIGh0bWxfZG9jdW1lbnQ6IG51bGwKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMKICAgIHRoZW1lOiBzYW5kc3RvbmUKICAgIGNzczogc3R5bGUxLmNzcwogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lCi0tLQoKCmBgYHtyIGxvZ28sIGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMzAlJ30Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkxvZ28ucG5nIikKYGBgCgpFbWFpbCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbmJzcDs6ICBjYWx2aW4ucmlzd2FuZGlAc3R1ZGVudC5tYXRhbnVuaXZlcnNpdHkuYWMuaWQgPGJyPgpSUHVicyAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBodHRwczovL3JwdWJzLmNvbS9jYWx2aW5yaXN3YW5keS8gPGJyPgpKdXJ1c2FuICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs6IFtTdGF0aXN0aWthIEJpc25pc10oaHR0cHM6Ly9tYXRhbmF1bml2ZXJzaXR5LmFjLmlkLz9seT1hY2FkZW1pYyZjPXNiKSA8YnI+CkFkZHJlc3MgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IEFSQSBDZW50ZXIsIE1hdGFuYSBVbml2ZXJzaXR5IFRvd2VyIDxicj4KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbmJzcDsgSmwuIENCRCBCYXJhdCBLYXYsIFJULjEsIEN1cnVnIFNhbmdlcmVuZywgS2VsYXBhIER1YSwgVGFuZ2VyYW5nLCBCYW50ZW4gMTU4MTAuCgoqKioqCgojIExpYnJhcnkKYGBge3J9CnNldHdkKGdldHdkKCkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShkcGx5cikKbGlicmFyeShicm9vbSkKbGlicmFyeShnZ3B1YnIpCmBgYAoKCiMgU2ltcGxlIFJlZ3Jlc3Npb24KCiMjIGltcG9ydCBkYXRhCmBgYHtyfQppbmNvbWUuZGF0YSA9IHJlYWQuY3N2KCJpbmNvbWUuZGF0YS5jc3YiKQpzdW1tYXJ5KGluY29tZS5kYXRhKQpgYGAKIyMjIGxpbmVhcml0YXMgCmBgYHtyfQpwbG90KGhhcHBpbmVzcyB+IGluY29tZSwgZGF0YSA9IGluY29tZS5kYXRhKQpgYGAKS2FyZW5hIHBvbGEgZ3JhZmlrIGxpbmVhciwgbWFrYSBraXRhIGFrYW4gbWVuZ2d1bmFrYW4gcmVncmVzaSBsaW5lYXIuIAoKCiMjIyBpbmRlcGVuZGVuc2kgYXRhdSBhdXRva29yZWxhc2kKCmthcmVuYSB1amkgcmVncmVzaSBkaSBhdGFzIGxpbmllciBtYWthIHN1ZGFoIGRpcGFzdGlrYW4ga2l0YSBtZW5nZXRhaHVpIGRlcGVuZGVudCBkYW4gaW5kZXBlbmRlbnRueWEuIExhbHUgTWFrYSBraXRhIHRpZGFrIHBlcmx1IG1lbGFrdWthbiBjZWsgbGFnaSBodWJ1bmdhbiBhbnRhciB2YXJpYWJlbCBrYXJlbmEgdmFyaWFibGUgZGVwZW5kZW50bnlhIGhhbnlhIGFkYSBzYXR1LgoKIyMjIG5vcm1hbGl0YXMKYGBge3J9Cmhpc3QoaW5jb21lLmRhdGEkaGFwcGluZXNzKQpgYGAKaGFzaWwgZGFyaSBoaXN0b2dyYW0gZGkgYXRhcyBraXJhLWtpcmEgZGF0YW55YSBiZXJzZWJhciBub3JtYWwgYXRhdSBiZXJiZW50dWsgbG9uY2VuZyAoYmVsbC1zaGFwZWQpLCBtYWthIGRhdGEga2l0YSBtZXJ1cGFrYW4gbm9ybWFsLgoKCiMjIExpbmVhciByZWdyZXNzaW9uIGFuYWxpc2lzCgpgYGB7cn0KaW5jb21lLmhhcHBpbmVzcy5sbSA8LSBsbShoYXBwaW5lc3MgfiBpbmNvbWUsIGRhdGEgPSBpbmNvbWUuZGF0YSkKCnN1bW1hcnkoaW5jb21lLmhhcHBpbmVzcy5sbSkKYGBgCkRhcmkgaGFzaWwgdGVyc2VidXQgZGlkYXBhdCBiYWh3YSBwLXZhbHVlIDwgZGFyaSBhbHBoYSA1JSwgZGFuIFItc3F1YXJlIHNlYmVzYXIgNzQsODglLiBCZXJhcnRpIHRlcmRhcGF0IDc0LDg4JSB2YXJpYWJlbCB5YW5nIHN1ZGFoIHRlcm1zdWsga2VkYWxhbSByZWdyZXNpLiBSZWdyZXNpIGRpIGF0YXMgc3VkYWggYmlzYSBraXRhIGd1bmFrYW4gd2FsYXVwdW4gYmVsdW0gdGVybGFsdSBiYWlrLiBLYWxhdSBkaWxpaGF0IGRhcmkgdmFyaWFiZWwgZGVwZW5kZW4gaW5jb21lIG1lbWlsaWtpIHBlbmdhcnVoIHlhbmcgc2lnbmlmaWthbiB0ZXJoYWRhcCB2YXJpYWJlbCBpbmRlcGVuZGVuIGhhcHBpbmVzcy4KPGJyPgpKYWRpIG1vZGVsIHJlZnJlc2lueWEgYWRhbGFoIDogYGhhcHBpbmVzcyA9IDAuMjA0ICsgMC43MTQqaW5jb21lYCAKPGJyPgoKIyMgdmlzdWFsaXNhc2kgSGFzaWwgZGVuZ2FuIGdyYWZpawpgYGB7cn0KZ2dwbG90KGluY29tZS5kYXRhLCBhZXMoeD1pbmNvbWUsIHk9aGFwcGluZXNzKSkrCiAgZ2VvbV9wb2ludCgpKyAKICBnZW9tX3Ntb290aChtZXRob2Q9ImxtIiwgY29sPSJibGFjayIpKwogIHN0YXRfcmVnbGluZV9lcXVhdGlvbihsYWJlbC54ID0gMywgbGFiZWwueSA9IDcpKwogIHRoZW1lX2J3KCkgKwogIGxhYnModGl0bGUgPSAiUmVwb3J0ZWQgaGFwcGluZXNzIGFzIGEgZnVuY3Rpb24gb2YgaW5jb21lIiwKICAgICAgeCA9ICJJbmNvbWUgKHgkMTAsMDAwKSIsCiAgICAgIHkgPSAiSGFwcGluZXNzIHNjb3JlICgwIHRvIDEwKSIpCgoKYGBgCgojIyMgaG9tb3NkZXNpdGFzIChrZWhvbW9nZW5pdGFzIHZhcmlhbnMpCgpgYGB7cn0KcGFyKG1mcm93PWMoMSwxKSkKcGxvdChpbmNvbWUuaGFwcGluZXNzLmxtKQpgYGAKClJkYXJpIGhhc2lsIHJlc2lkdW55YSwga2l0YSBiaXNhIGJpbGFuZyBrYWxhdSBtb2RlbCB5YW5nIGRpYnVhdCBob21vZ2VuICh2YXJpYW5zbnlhIHNhbWEpLiAKCgoKIyBNdWx0aXBsZSBSZWdyZXNzaW9uCgojIyBpbXBvcnQgZGF0YQpgYGB7cn0KaGVhcnQuZGF0YSA9IHJlYWQuY3N2KCJoZWFydC5kYXRhLmNzdiIpCnN1bW1hcnkoaGVhcnQuZGF0YSkKYGBgCgoKIyMgY2VrIGFzdW1zaQpTYW1hIHNlcGVydGkgc2ltcGxlIHJlZ3Jlc3Npb24sIGtpdGEgaGFydXMgbWVuZ2VjZWsgYXN1bXNpLWFzdW1zaSB5YW5nIGFkYS4KCiMjIyBsaW5lYXJpdGFzIApgYGB7cn0KcGxvdChoZWFydC5kaXNlYXNlIH4gYmlraW5nLCBkYXRhPWhlYXJ0LmRhdGEpCgpgYGAKYGBge3J9CnBsb3QoaGVhcnQuZGlzZWFzZSB+IHNtb2tpbmcsIGRhdGE9aGVhcnQuZGF0YSkKYGBgCm1lc2tpcHVuIGh1YnVuZ2FuIGFudGFyYSBzbW9raW5nIGRhbiBoZWFydCBkZXNlYXNlIGFnYWsga3VyYW5nIGplbGFzLCBuYW11biB0ZXRhcCB0ZXJsaWhhdCBsaW5pZXIuCgojIyMgaW5kZXBlbmRlbnNpIGF0YXUgYXV0b2tvcmVsYXNpCmBgYHtyfQpjb3IoaGVhcnQuZGF0YSRiaWtpbmcsIGhlYXJ0LmRhdGEkc21va2luZykKYGBgCmtvcmVsYXNpIGFudGFyYSBiaWtpbmcgZGFuIHNtb2tpbmcgaGFueWEgMC4wMTUgYXRhdSAxLjUlLCBtYWthIGtpdGEgc2ltcHVsa2FuIGJhaHdhIHZhcmlhYmxlIGRlcGVuZGVudG55YSB0aWRhayBiZXIgYXV0b2tvcmVsYXNpLiAKCiMjIyBub3JtYWxpdGFzCmBgYHtyfQpoaXN0KGhlYXJ0LmRhdGEkaGVhcnQuZGlzZWFzZSkKYGBgCmRhcmkgaGFzaWwgaGlzdG9ncmFtIGRpIGF0YXMgaGlzdG9ncmFtIGl0dSBiZXJiZW50dWsgbG9uY2VuZyBtYWthIGJpc2EgZGlueWF0YWthbiBiYWh3YSBtb2RlbCBkaSBhdGFzIG1lcnVwYWthbiBkYXRhIHlhbmcgbm9ybWFsLgoKCiMjIExpbmVhciByZWdyZXNzaW9uIGFuYWxpc2lzCgpgYGB7cn0KaGVhcnQuZGlzZWFzZS5sbTwtbG0oaGVhcnQuZGlzZWFzZSB+IGJpa2luZyArIHNtb2tpbmcsIGRhdGEgPSBoZWFydC5kYXRhKQoKc3VtbWFyeShoZWFydC5kaXNlYXNlLmxtKQpgYGAKRGFyaSBoYXNpbCB0ZXJzZWJ1dCBkaWRhcGF0IGJhaHdhIHAtdmFsdWUgPCBkYXJpIGFscGhhIDUlLCBkYW4gUi1zcXVhcmUgc2ViZXNhciA5Nyw5NiUuIEJlcmFydGkgdGVyZGFwYXQgOTcsOTYlIHZhcmlhYmVsIHlhbmcgc3VkYWggdGVybXN1ayBrZWRhbGFtIHJlZ3Jlc2kuIFJlZ3Jlc2kgZGkgYXRhcyBzdWRhaCBzYW5nYXQgYmFpayB1bnR1ayBkaWd1bmFrYW4uIAoKIyMgdmlzdWFsaXNhc2kgSGFzaWwgZGVuZ2FuIGdyYWZpawpgYGB7cn0KcGxvdHRpbmcuZGF0YTwtZXhwYW5kLmdyaWQoCiAgYmlraW5nID0gc2VxKG1pbihoZWFydC5kYXRhJGJpa2luZyksIG1heChoZWFydC5kYXRhJGJpa2luZyksIGxlbmd0aC5vdXQ9MzApLAogICAgc21va2luZz1jKG1pbihoZWFydC5kYXRhJHNtb2tpbmcpLCBtZWFuKGhlYXJ0LmRhdGEkc21va2luZyksIG1heChoZWFydC5kYXRhJHNtb2tpbmcpKSkKCnBsb3R0aW5nLmRhdGEkcHJlZGljdGVkLnkgPC0gcHJlZGljdC5sbShoZWFydC5kaXNlYXNlLmxtLCBuZXdkYXRhPXBsb3R0aW5nLmRhdGEpCgpwbG90dGluZy5kYXRhJHNtb2tpbmcgPC0gYXMuZmFjdG9yKHJvdW5kKHBsb3R0aW5nLmRhdGEkc21va2luZywgZGlnaXRzID0gMikpCgoKZ2dwbG90KGhlYXJ0LmRhdGEsIGFlcyh4PWJpa2luZywgeT1oZWFydC5kaXNlYXNlKSkgKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX2xpbmUoZGF0YT1wbG90dGluZy5kYXRhLCBhZXMoeD1iaWtpbmcsIHk9cHJlZGljdGVkLnksIGNvbG9yPXNtb2tpbmcpLCBzaXplPTEuMjUpKwogIHRoZW1lX2J3KCkgKwogIGxhYnModGl0bGUgPSAiUmF0ZXMgb2YgaGVhcnQgZGlzZWFzZSAoJSBvZiBwb3B1bGF0aW9uKSBcbiBhcyBhIGZ1bmN0aW9uIG9mIGJpa2luZyB0byB3b3JrIGFuZCBzbW9raW5nIiwKICAgICAgeCA9ICJCaWtpbmcgdG8gd29yayAoJSBvZiBwb3B1bGF0aW9uKSIsCiAgICAgIHkgPSAiSGVhcnQgZGlzZWFzZSAoJSBvZiBwb3B1bGF0aW9uKSIsCiAgICAgIGNvbG9yID0gIlNtb2tpbmcgXG4gKCUgb2YgcG9wdWxhdGlvbikiKQoKYGBgCgojIyMgaG9tb3NkZXNpdGFzIChrZWhvbW9nZW5pdGFzIHZhcmlhbnMpCgpgYGB7cn0KcGFyKG1mcm93PWMoMSwxKSkKcGxvdChoZWFydC5kaXNlYXNlLmxtKQpgYGAKCkRhbGFtIHN1cnZlaSBrYW1pIHRlcmhhZGFwIDUwMCBrb3RhLCBrYW1pIG1lbmVtdWthbiBodWJ1bmdhbiB5YW5nIHNpZ25pZmlrYW4gYW50YXJhIGZyZWt1ZW5zaSBiZXJzZXBlZGEga2UgdGVtcGF0IGtlcmphIGRhbiBmcmVrdWVuc2kgcGVueWFraXQgamFudHVuZyBzZXJ0YSBmcmVrdWVuc2kgbWVyb2tvayBkYW4gZnJla3VlbnNpIHBlbnlha2l0IGphbnR1bmcgKG1hc2luZy1tYXNpbmcgcCA8IDAgZGFuIHAgPCAwLDAwMSkuCgpTZWNhcmEga2h1c3VzIGthbWkgbWVuZW11a2FuIHBlbnVydW5hbiAwLDIlICjCsSAwLDAwMTQpIHBhZGEgZnJla3VlbnNpIHBlbnlha2l0IGphbnR1bmcgdW50dWsgc2V0aWFwIHBlbmluZ2thdGFuIDElIGRhbGFtIGJlcnNlcGVkYSwgZGFuIHBlbmluZ2thdGFuIDAsMTc4JSAowrEgMCwwMDM1KSBwYWRhIGZyZWt1ZW5zaSBwZW55YWtpdCBqYW50dW5nIHVudHVrIHNldGlhcCBwZW5pbmdrYXRhbiAxJSBkYWxhbSBtZXJva29rLgoKCgoK