1 Normal prior

In what follows, \(\theta\) is a coefficient in the real line and the priors we will present will increasingly induce shrinkage and sparsity. We start with the normal prior: \[ \theta \sim N(0,1), \] with p.d.f. (probability density function) \[ p(\theta) = \frac{1}{\sqrt{2\pi}}\exp\{-0.5\theta^2\} \]

M      = 1000000
thetas = seq(-5,5,length=M)
h      = thetas[2]-thetas[1]
theta0 = 10


par(mfrow=c(1,1))
theta.n = rnorm(M)
den.n   = dnorm(thetas)

hist(theta.n,breaks=seq(min(theta.n),max(theta.n),length=100),xlim=c(-5,5),
     prob=TRUE,xlab=expression(theta),main="Normal")
lines(thetas,den.n,col=2,lwd=2)

2 Student’s \(t\) prior

When \[ \theta \sim t_\nu(0,1) \] its p.d.f is given by \[ p(\theta) = \frac{\Gamma\left(\frac{\nu+1}{2}\right)}{\Gamma\left(\frac{\nu}{2}\right)\sqrt{\pi \nu}}\left(1+\theta^2\right)^{-\frac{\nu+1}{2}}. \] The Student’s \(t\) distribution is one of the distribution derived form a scale-mixture of normals, i.e. \[ \mbox{If} \ \ (\theta|\tau^2) \sim N(0,\tau^2) \ \ \mbox{and} \ \ \tau^2 \sim IG(\nu/2,\nu/2), \ \ \mbox{then} \ \ \theta \sim t_\nu(0,1). \]

nu      = 4
theta.t = rt(M,df=nu)
theta.t = theta.t[abs(theta.t)<theta0]
den.t   = dt(thetas,df=nu)

hist(theta.t,breaks=c(min(theta.t),seq(-5,5,length=100),max(theta.t)),xlim=c(-5,5),
     prob=TRUE,xlab=expression(theta),main="Student's t")
lines(thetas,den.t,col=2,lwd=2)

3 Laplace prior

When \[ \theta \sim \mbox{Laplace}(0,1) \] its p.d.f is given by \[ p(\theta) = \frac12\exp\{-|\theta|\}. \] The Laplace distribution, also known as the double-exponential distribution, is another distribution derived form a scale-mixture of normals, i.e. \[ \mbox{If} \ \ (\theta|\tau^2) \sim N(0,\tau^2) \ \ \mbox{and} \ \ \tau^2 \sim G(1,1/2), \ \ \mbox{then} \ \ \theta \sim \mbox{Laplace}(0,1). \]

tau2    = rgamma(M,1,1/2)
theta.l = rnorm(M,0,sqrt(tau2))
den.l   = 0.5*exp(-abs(thetas))

hist(theta.l,breaks=c(min(theta.l),seq(-5,5,length=100),max(theta.l)),xlim=c(-5,5),
     prob=TRUE,xlab=expression(theta),main="Laplace")
lines(thetas,den.l,col=2,lwd=2)

4 Horseshoe prior

The parameter \(\theta\) follows a horseshoe prior when it is derived according to the following scheme: \[ \theta | \tau^2 \sim N(0,\tau^2), \ \ \tau|\lambda \sim C^{+}(0,\lambda) \ \ \mbox{and} \ \ \lambda \sim C^{+}(0,1), \] where \(C^{+}(0,\lambda)\) is the half-Cauchy distribution with p.d.f \[ p(\tau|\lambda) = \frac{2}{\pi}\left(1+\frac{\tau^2}{\lambda^2}\right)^{-1}. \] The horseshoe density can be approximated by \[ p(\theta) \approx \log\left(1+\frac{2}{\theta^2}\right). \]

lambda  = abs(rt(M,1))
tau     = abs(sqrt(lambda)*rt(M,1))
theta.h = rnorm(M,0,tau)
theta.h = theta.h[abs(theta.h)<theta0]

hist(theta.h,breaks=c(min(theta.h),seq(-5,5,length=100),max(theta.h)),xlim=c(-5,5),
     prob=TRUE,xlab=expression(theta),main="Horseshoe")
den.h = log(1+2/thetas^2)
k = sum(den.h*h)
den.h = den.h/k
lines(thetas,den.h,col=2,lwd=2)

5 Normal-Gamma prior

When \[ \theta \sim \mbox{Normal-Gamma}(\lambda,\gamma) \] its p.d.f is given by \[ p(\theta) = \frac{1}{\sqrt{\pi}2^{\lambda-1/2}\gamma^{\lambda+1/2}\Gamma(\lambda)}|\theta|^{\lambda-1/2}K_{\lambda-1/2}\left(\frac{|\theta|}{\gamma}\right), \] onde \(K\) is the modified Bessel function of the third kind.

The Normal-Gamma distribution is another distribution derived form a scale-mixture of normals, i.e. \[ \mbox{If} \ \ (\theta|\tau^2) \sim N(0,\tau^2) \ \ \mbox{and} \ \ \tau^2 \sim G(\lambda,1/(2\gamma^2)), \ \ \mbox{then} \ \ \theta \sim \mbox{Normal-Gamma}(\lambda,\gamma). \] It can be shown that \(V(\theta) = 2\lambda \gamma^2\) and the excess kurtosis is equal to \(3/\lambda\), so \(\lambda\) controls the heaviness of the tails. The Laplace\((0,1)\) is the special case when \(\lambda=\gamma=1\). Below we set \(\gamma=1\) and \(\lambda=0.5\), such that \(V(\theta)=1\) and the excess kurtosis is equal to 6.

lambda   = 0.5
gamma    = 1
tau2     = rgamma(M,lambda,1/(2*gamma^2))
theta.ng = rnorm(M,0,sqrt(tau2))

hist(theta.ng,breaks=c(min(theta.ng),seq(-5,5,length=100),max(theta.ng)),xlim=c(-5,5),
     prob=TRUE,xlab=expression(theta),main="Normal-Gamma")
const = sqrt(pi)*2^(lambda-0.5)*gamma^(lambda+0.5)*gamma(lambda)
den.ng = (1/const)*abs(thetas)^(lambda-0.5)*besselK(abs(thetas)/gamma,lambda-0.5)
lines(thetas,den.ng,col=2,lwd=2)

6 All together

par(mfrow=c(1,2))

plot(thetas,den.t,xlim=c(-5,5),ylim=c(0,2),lwd=1.5,xlab=expression(theta),main="",type="l",ylab="Density")
lines(thetas,den.l,col=2,lwd=1.5)
lines(thetas,den.h,col=3,lwd=1.5)
lines(thetas,den.ng,col=4,lwd=1.5)
lines(thetas,dnorm(thetas,0,1),col=6,lwd=1.5)
legend("topright",legend=c("Normal","Student's t","Laplace","Horseshoe","Normal-Gamma"),col=c(6,1:4),
lty=1,lwd=1.5,bty="n")

plot(thetas,log(den.t),xlim=c(-5,5),ylim=c(-7,2),lwd=1.5,xlab=expression(theta),main="",type="l",ylab="Log density")
lines(thetas,log(den.l),col=2,lwd=1.5)
lines(thetas,log(den.h),col=3,lwd=1.5)
lines(thetas,log(den.ng),col=4,lwd=1.5)
lines(thetas,dnorm(thetas,0,1,log=TRUE),col=6,lwd=1.5)
legend("topright",legend=c("Normal","Student's t","Laplace","Horseshoe","Normal-Gamma"),col=c(6,1:4),
lty=1,lwd=1.5,bty="n")

LS0tCnRpdGxlOiAiU3BhcnNlIFByaW9ycyIKYXV0aG9yOiAiSGVkaWJlcnQgRnJlaXRhcyBMb3BlcyIKZGF0ZTogIjYvNS8yMDI0IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2RlcHRoOiAzCiAgICB0b2NfY29sbGFwc2VkOiB0cnVlCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQotLS0KCiMgTm9ybWFsIHByaW9yCkluIHdoYXQgZm9sbG93cywgJFx0aGV0YSQgaXMgYSBjb2VmZmljaWVudCBpbiB0aGUgcmVhbCBsaW5lIGFuZCB0aGUgcHJpb3JzIHdlIHdpbGwgcHJlc2VudCB3aWxsIGluY3JlYXNpbmdseSBpbmR1Y2Ugc2hyaW5rYWdlIGFuZCBzcGFyc2l0eS4gIFdlIHN0YXJ0IHdpdGggdGhlIG5vcm1hbCBwcmlvcjoKJCQKXHRoZXRhIFxzaW0gTigwLDEpLAokJAp3aXRoIHAuZC5mLiAocHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbikKJCQKcChcdGhldGEpID0gXGZyYWN7MX17XHNxcnR7MlxwaX19XGV4cFx7LTAuNVx0aGV0YV4yXH0KJCQKIApgYGB7ciBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9NiwgZmlnLmFsaWduPSdjZW50ZXInfQpNICAgICAgPSAxMDAwMDAwCnRoZXRhcyA9IHNlcSgtNSw1LGxlbmd0aD1NKQpoICAgICAgPSB0aGV0YXNbMl0tdGhldGFzWzFdCnRoZXRhMCA9IDEwCgoKcGFyKG1mcm93PWMoMSwxKSkKdGhldGEubiA9IHJub3JtKE0pCmRlbi5uICAgPSBkbm9ybSh0aGV0YXMpCgpoaXN0KHRoZXRhLm4sYnJlYWtzPXNlcShtaW4odGhldGEubiksbWF4KHRoZXRhLm4pLGxlbmd0aD0xMDApLHhsaW09YygtNSw1KSwKICAgICBwcm9iPVRSVUUseGxhYj1leHByZXNzaW9uKHRoZXRhKSxtYWluPSJOb3JtYWwiKQpsaW5lcyh0aGV0YXMsZGVuLm4sY29sPTIsbHdkPTIpCmBgYAoKCiMgU3R1ZGVudCdzICR0JCBwcmlvcgpXaGVuIAokJApcdGhldGEgXHNpbSB0X1xudSgwLDEpCiQkCml0cyBwLmQuZiBpcyBnaXZlbiBieQokJApwKFx0aGV0YSkgPSBcZnJhY3tcR2FtbWFcbGVmdChcZnJhY3tcbnUrMX17Mn1ccmlnaHQpfXtcR2FtbWFcbGVmdChcZnJhY3tcbnV9ezJ9XHJpZ2h0KVxzcXJ0e1xwaSBcbnV9fVxsZWZ0KDErXHRoZXRhXjJccmlnaHQpXnstXGZyYWN7XG51KzF9ezJ9fS4KJCQKVGhlIFN0dWRlbnQncyAkdCQgZGlzdHJpYnV0aW9uIGlzIG9uZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGRlcml2ZWQgZm9ybSBhIHNjYWxlLW1peHR1cmUgb2Ygbm9ybWFscywgaS5lLgokJApcbWJveHtJZn0gXCBcIChcdGhldGF8XHRhdV4yKSBcc2ltIE4oMCxcdGF1XjIpIFwgXCAgXG1ib3h7YW5kfSBcIFwgXHRhdV4yIFxzaW0gSUcoXG51LzIsXG51LzIpLCBcIFwgXG1ib3h7dGhlbn0gXCBcIFx0aGV0YSBcc2ltIHRfXG51KDAsMSkuCiQkCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD02LCBmaWcuYWxpZ249J2NlbnRlcid9Cm51ICAgICAgPSA0CnRoZXRhLnQgPSBydChNLGRmPW51KQp0aGV0YS50ID0gdGhldGEudFthYnModGhldGEudCk8dGhldGEwXQpkZW4udCAgID0gZHQodGhldGFzLGRmPW51KQoKaGlzdCh0aGV0YS50LGJyZWFrcz1jKG1pbih0aGV0YS50KSxzZXEoLTUsNSxsZW5ndGg9MTAwKSxtYXgodGhldGEudCkpLHhsaW09YygtNSw1KSwKICAgICBwcm9iPVRSVUUseGxhYj1leHByZXNzaW9uKHRoZXRhKSxtYWluPSJTdHVkZW50J3MgdCIpCmxpbmVzKHRoZXRhcyxkZW4udCxjb2w9Mixsd2Q9MikKYGBgCgoKIyBMYXBsYWNlIHByaW9yCldoZW4gCiQkClx0aGV0YSBcc2ltIFxtYm94e0xhcGxhY2V9KDAsMSkKJCQKaXRzIHAuZC5mIGlzIGdpdmVuIGJ5CiQkCnAoXHRoZXRhKSA9IFxmcmFjMTJcZXhwXHstfFx0aGV0YXxcfS4KJCQKVGhlIExhcGxhY2UgZGlzdHJpYnV0aW9uLCBhbHNvIGtub3duIGFzIHRoZSBkb3VibGUtZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uLCBpcyBhbm90aGVyIGRpc3RyaWJ1dGlvbiBkZXJpdmVkIGZvcm0gYSBzY2FsZS1taXh0dXJlIG9mIG5vcm1hbHMsIGkuZS4KJCQKXG1ib3h7SWZ9IFwgXCAoXHRoZXRhfFx0YXVeMikgXHNpbSBOKDAsXHRhdV4yKSBcIFwgIFxtYm94e2FuZH0gXCBcIFx0YXVeMiBcc2ltIEcoMSwxLzIpLCBcIFwgXG1ib3h7dGhlbn0gXCBcIFx0aGV0YSBcc2ltIFxtYm94e0xhcGxhY2V9KDAsMSkuCiQkCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD02LCBmaWcuYWxpZ249J2NlbnRlcid9CnRhdTIgICAgPSByZ2FtbWEoTSwxLDEvMikKdGhldGEubCA9IHJub3JtKE0sMCxzcXJ0KHRhdTIpKQpkZW4ubCAgID0gMC41KmV4cCgtYWJzKHRoZXRhcykpCgpoaXN0KHRoZXRhLmwsYnJlYWtzPWMobWluKHRoZXRhLmwpLHNlcSgtNSw1LGxlbmd0aD0xMDApLG1heCh0aGV0YS5sKSkseGxpbT1jKC01LDUpLAogICAgIHByb2I9VFJVRSx4bGFiPWV4cHJlc3Npb24odGhldGEpLG1haW49IkxhcGxhY2UiKQpsaW5lcyh0aGV0YXMsZGVuLmwsY29sPTIsbHdkPTIpCmBgYAoKIyBIb3JzZXNob2UgcHJpb3IKVGhlIHBhcmFtZXRlciAkXHRoZXRhJCBmb2xsb3dzIGEgaG9yc2VzaG9lIHByaW9yIHdoZW4gaXQgaXMgZGVyaXZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBzY2hlbWU6CiQkClx0aGV0YSB8IFx0YXVeMiBcc2ltIE4oMCxcdGF1XjIpLCBcIFwgXHRhdXxcbGFtYmRhIFxzaW0gQ157K30oMCxcbGFtYmRhKSBcIFwgXG1ib3h7YW5kfSBcIFwgXGxhbWJkYSBcc2ltIENeeyt9KDAsMSksCiQkCndoZXJlICRDXnsrfSgwLFxsYW1iZGEpJCBpcyB0aGUgaGFsZi1DYXVjaHkgZGlzdHJpYnV0aW9uIHdpdGggcC5kLmYKJCQKcChcdGF1fFxsYW1iZGEpID0gXGZyYWN7Mn17XHBpfVxsZWZ0KDErXGZyYWN7XHRhdV4yfXtcbGFtYmRhXjJ9XHJpZ2h0KV57LTF9LgokJApUaGUgaG9yc2VzaG9lIGRlbnNpdHkgY2FuIGJlIGFwcHJveGltYXRlZCBieSAKJCQKcChcdGhldGEpIFxhcHByb3ggXGxvZ1xsZWZ0KDErXGZyYWN7Mn17XHRoZXRhXjJ9XHJpZ2h0KS4KJCQKCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD02LCBmaWcuYWxpZ249J2NlbnRlcid9CmxhbWJkYSAgPSBhYnMocnQoTSwxKSkKdGF1ICAgICA9IGFicyhzcXJ0KGxhbWJkYSkqcnQoTSwxKSkKdGhldGEuaCA9IHJub3JtKE0sMCx0YXUpCnRoZXRhLmggPSB0aGV0YS5oW2Ficyh0aGV0YS5oKTx0aGV0YTBdCgpoaXN0KHRoZXRhLmgsYnJlYWtzPWMobWluKHRoZXRhLmgpLHNlcSgtNSw1LGxlbmd0aD0xMDApLG1heCh0aGV0YS5oKSkseGxpbT1jKC01LDUpLAogICAgIHByb2I9VFJVRSx4bGFiPWV4cHJlc3Npb24odGhldGEpLG1haW49IkhvcnNlc2hvZSIpCmRlbi5oID0gbG9nKDErMi90aGV0YXNeMikKayA9IHN1bShkZW4uaCpoKQpkZW4uaCA9IGRlbi5oL2sKbGluZXModGhldGFzLGRlbi5oLGNvbD0yLGx3ZD0yKQpgYGAKCiMgTm9ybWFsLUdhbW1hIHByaW9yCldoZW4gCiQkClx0aGV0YSBcc2ltIFxtYm94e05vcm1hbC1HYW1tYX0oXGxhbWJkYSxcZ2FtbWEpCiQkCml0cyBwLmQuZiBpcyBnaXZlbiBieQokJApwKFx0aGV0YSkgPSBcZnJhY3sxfXtcc3FydHtccGl9Ml57XGxhbWJkYS0xLzJ9XGdhbW1hXntcbGFtYmRhKzEvMn1cR2FtbWEoXGxhbWJkYSl9fFx0aGV0YXxee1xsYW1iZGEtMS8yfUtfe1xsYW1iZGEtMS8yfVxsZWZ0KFxmcmFje3xcdGhldGF8fXtcZ2FtbWF9XHJpZ2h0KSwKJCQKb25kZSAkSyQgaXMgdGhlIG1vZGlmaWVkIEJlc3NlbCBmdW5jdGlvbiBvZiB0aGUgdGhpcmQga2luZC4KClRoZSBOb3JtYWwtR2FtbWEgZGlzdHJpYnV0aW9uIGlzIGFub3RoZXIgZGlzdHJpYnV0aW9uIGRlcml2ZWQgZm9ybSBhIHNjYWxlLW1peHR1cmUgb2Ygbm9ybWFscywgaS5lLgokJApcbWJveHtJZn0gXCBcIChcdGhldGF8XHRhdV4yKSBcc2ltIE4oMCxcdGF1XjIpIFwgXCAgXG1ib3h7YW5kfSBcIFwgXHRhdV4yIFxzaW0gRyhcbGFtYmRhLDEvKDJcZ2FtbWFeMikpLCBcIFwgXG1ib3h7dGhlbn0gXCBcIFx0aGV0YSBcc2ltIFxtYm94e05vcm1hbC1HYW1tYX0oXGxhbWJkYSxcZ2FtbWEpLgokJApJdCBjYW4gYmUgc2hvd24gdGhhdCAkVihcdGhldGEpID0gMlxsYW1iZGEgXGdhbW1hXjIkIGFuZCB0aGUgZXhjZXNzIGt1cnRvc2lzIGlzIGVxdWFsIHRvICQzL1xsYW1iZGEkLCBzbyAkXGxhbWJkYSQgY29udHJvbHMgdGhlIGhlYXZpbmVzcyBvZiB0aGUgdGFpbHMuICBUaGUgTGFwbGFjZSQoMCwxKSQgaXMgdGhlIHNwZWNpYWwgY2FzZSB3aGVuICRcbGFtYmRhPVxnYW1tYT0xJC4gIEJlbG93IHdlIHNldCAkXGdhbW1hPTEkIGFuZCAkXGxhbWJkYT0wLjUkLCBzdWNoIHRoYXQgJFYoXHRoZXRhKT0xJCBhbmQgdGhlIGV4Y2VzcyBrdXJ0b3NpcyBpcyBlcXVhbCB0byA2LgoKCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD02LCBmaWcuYWxpZ249J2NlbnRlcid9CmxhbWJkYSAgID0gMC41CmdhbW1hICAgID0gMQp0YXUyICAgICA9IHJnYW1tYShNLGxhbWJkYSwxLygyKmdhbW1hXjIpKQp0aGV0YS5uZyA9IHJub3JtKE0sMCxzcXJ0KHRhdTIpKQoKaGlzdCh0aGV0YS5uZyxicmVha3M9YyhtaW4odGhldGEubmcpLHNlcSgtNSw1LGxlbmd0aD0xMDApLG1heCh0aGV0YS5uZykpLHhsaW09YygtNSw1KSwKICAgICBwcm9iPVRSVUUseGxhYj1leHByZXNzaW9uKHRoZXRhKSxtYWluPSJOb3JtYWwtR2FtbWEiKQpjb25zdCA9IHNxcnQocGkpKjJeKGxhbWJkYS0wLjUpKmdhbW1hXihsYW1iZGErMC41KSpnYW1tYShsYW1iZGEpCmRlbi5uZyA9ICgxL2NvbnN0KSphYnModGhldGFzKV4obGFtYmRhLTAuNSkqYmVzc2VsSyhhYnModGhldGFzKS9nYW1tYSxsYW1iZGEtMC41KQpsaW5lcyh0aGV0YXMsZGVuLm5nLGNvbD0yLGx3ZD0yKQpgYGAKCiMgQWxsIHRvZ2V0aGVyCgpgYGB7ciBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9NiwgZmlnLmFsaWduPSdjZW50ZXInfQpwYXIobWZyb3c9YygxLDIpKQoKcGxvdCh0aGV0YXMsZGVuLnQseGxpbT1jKC01LDUpLHlsaW09YygwLDIpLGx3ZD0xLjUseGxhYj1leHByZXNzaW9uKHRoZXRhKSxtYWluPSIiLHR5cGU9ImwiLHlsYWI9IkRlbnNpdHkiKQpsaW5lcyh0aGV0YXMsZGVuLmwsY29sPTIsbHdkPTEuNSkKbGluZXModGhldGFzLGRlbi5oLGNvbD0zLGx3ZD0xLjUpCmxpbmVzKHRoZXRhcyxkZW4ubmcsY29sPTQsbHdkPTEuNSkKbGluZXModGhldGFzLGRub3JtKHRoZXRhcywwLDEpLGNvbD02LGx3ZD0xLjUpCmxlZ2VuZCgidG9wcmlnaHQiLGxlZ2VuZD1jKCJOb3JtYWwiLCJTdHVkZW50J3MgdCIsIkxhcGxhY2UiLCJIb3JzZXNob2UiLCJOb3JtYWwtR2FtbWEiKSxjb2w9Yyg2LDE6NCksCmx0eT0xLGx3ZD0xLjUsYnR5PSJuIikKCnBsb3QodGhldGFzLGxvZyhkZW4udCkseGxpbT1jKC01LDUpLHlsaW09YygtNywyKSxsd2Q9MS41LHhsYWI9ZXhwcmVzc2lvbih0aGV0YSksbWFpbj0iIix0eXBlPSJsIix5bGFiPSJMb2cgZGVuc2l0eSIpCmxpbmVzKHRoZXRhcyxsb2coZGVuLmwpLGNvbD0yLGx3ZD0xLjUpCmxpbmVzKHRoZXRhcyxsb2coZGVuLmgpLGNvbD0zLGx3ZD0xLjUpCmxpbmVzKHRoZXRhcyxsb2coZGVuLm5nKSxjb2w9NCxsd2Q9MS41KQpsaW5lcyh0aGV0YXMsZG5vcm0odGhldGFzLDAsMSxsb2c9VFJVRSksY29sPTYsbHdkPTEuNSkKbGVnZW5kKCJ0b3ByaWdodCIsbGVnZW5kPWMoIk5vcm1hbCIsIlN0dWRlbnQncyB0IiwiTGFwbGFjZSIsIkhvcnNlc2hvZSIsIk5vcm1hbC1HYW1tYSIpLGNvbD1jKDYsMTo0KSwKbHR5PTEsbHdkPTEuNSxidHk9Im4iKQpgYGA=