1.简单指数平滑

指数平滑法是基于滑动平均法延伸而来的,滑动平均是把前N个序列的平均值作为N+1的预测,不断地往后计算,获得一条相对平滑的曲线。但是指数平滑法则认为,时间越靠近那么应该予以的权重就越大。赋予权重的大小一般以α表示 权重随观测时间的久远程度呈指数型下降 — 最早的观察值被赋予最小的权值

适用于预测没有明显趋势或季节因素的数据

$$ \[\begin{equation} \begin{split} &\hat{y}_{t+1|t} = \alpha y_t + \alpha(1-\alpha) y_{t-1}+ \alpha(1-\alpha)^2 y_{t-2} + \alpha(1-\alpha)^3 y_{t-3} +... \\ &将时刻1的第一个拟合值表示为l_0(我们必须进行估计)\\ &由 \hat{y}_{t+1|t} = \alpha y_t + (1- \alpha)\hat{y}_{t|t-1} ,即\hat{y}_{2|1} = \alpha y_1 + (1- \alpha)l_0, \hat{y}_{3|2} = \alpha y_2 + (1- \alpha)\hat{y}_{2|1},...\\ &得 \color{red}{\hat{y}_{t+1|t}= \sum_{j=1}^{t-1}{\alpha(1-\alpha)^j y_{t-j} + (1-\alpha)^tl_0}}\\ \end{split} \end{equation}\] \[ 最小化下式来估计未知参数的值和初始值 \] SSE = {t=1}^{T}{(y_t - {t|t-1})^2} = _{t=1}{T}{{e_t}2} $$

library(fpp2)
oildata <- window(oil, start=1996)
# Estimate parameters
#ses函数可以对后面的5个观测进行预测,
fit <- ses(oildata, h=5)
fit$model
Simple exponential smoothing 

Call:
 ses(y = oildata, h = 5) 

  Smoothing parameters:
    alpha = 0.8339 

  Initial states:
    l = 446.5868 

  sigma:  29.8282

     AIC     AICc      BIC 
178.1430 179.8573 180.8141 
# Accuracy of one-step-ahead training errors
#accuracy函数所给出的是在训练集中得到的准确度指标。
round(accuracy(fit),2)
              ME  RMSE   MAE MPE MAPE MASE  ACF1
Training set 6.4 28.12 22.26 1.1 4.61 0.93 -0.03
#>               ME  RMSE   MAE MPE MAPE MASE  ACF1
#> Training set 6.4 28.12 22.26 1.1 4.61 0.93 -0.03
autoplot(fit) +
  autolayer(fitted(fit), series="Fitted") +
  ylab("Oil (millions of tonnes)") + xlab("Year")

2.Holt指数平滑(考虑趋势性)/霍尔特的线性趋势法

Holt (1957) 将简单指数平滑法扩展到可以预测具有趋势的数据。 该方法包含一个预测方程和两个平滑方程(一个用于水平,一个用于趋势): \[ \begin{align*} \text{Forecast equation}&& \hat{y}_{t+h|t} &= \ell_{t} + hb_{t} \\ \text{Level equation} && \ell_{t} &= \alpha y_{t} + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ \text{Trend equation} && b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 -\beta^*)b_{t-1}, \end{align*} \]

air <- window(ausair, start=1990)
fc <- holt(air, h=5)
fc$model
Holt's method 

Call:
 holt(y = air, h = 5) 

  Smoothing parameters:
    alpha = 0.8302 
    beta  = 1e-04 

  Initial states:
    l = 15.5715 
    b = 2.1017 

  sigma:  2.3645

     AIC     AICc      BIC 
141.1291 143.9863 147.6083 

可以看到这个方法比之前获得了一些新的参数,如beta和b。beta是趋势性的指数,它表示随着时间的变化,时间序列趋势所发生的变化。而b则是初始值。

###阻尼趋势方法(削弱趋势) 该方法有一种变式,叫做Damped trend methods(阻尼趋势方法)。 它的假设是,一个序列在短期内是具有一定趋势的,但是在长期中却是围绕着一个均值在波动。 \[\begin{align*} \hat{y}_{t+h|t} &= \ell_{t} + (\phi+\phi^2 + \dots + \phi^{h})b_{t} \\ \ell_{t} &= \alpha y_{t} + (1 - \alpha)(\ell_{t-1} + \phi b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 -\beta^*)\phi b_{t-1}。 \end{align*}\]

这里引入一个新的参数ϕ,0<ϕ<1,一般在0.8到0.98之间,如果等于1。 ϕ(读作phi)是用来削弱趋势性的参数。ϕ越大则对趋势削弱的效果越小,等于1的时候则完全没有削弱的效果(与传统的Holt平滑法无异)。 如果0<ϕ<1,那么随着预测后续变量越多,将会让预测趋近于\[ \ell_T+\phi b_T/(1-\phi) \]

fc <- holt(air, h=15)
fc2 <- holt(air, damped=TRUE, phi = 0.9, h=15)
autoplot(air) +
  autolayer(fc, series="Holt's method", PI=FALSE) +
  autolayer(fc2, series="Damped Holt's method", PI=FALSE) +
  ggtitle("Forecasts from Holt's method") + xlab("Year") +
  ylab("Air passengers in Australia (millions)") +
  guides(colour=guide_legend(title="Forecast"))


fc2$model
Damped Holt's method 

Call:
 holt(y = air, h = 15, damped = TRUE, phi = 0.9) 

  Smoothing parameters:
    alpha = 0.763 
    beta  = 0.2526 
    phi   = 0.9 

  Initial states:
    l = 14.5766 
    b = 3.7517 

  sigma:  2.6165

     AIC     AICc      BIC 
145.3965 148.2536 151.8757 
autoplot(air) +
  autolayer(fc, series="Holt's method", PI=FALSE) +
  autolayer(fc2, series="Damped Holt's method", PI=FALSE) +
  ggtitle("Forecasts from Holt's method") + xlab("Year") +
  ylab("Air passengers in Australia (millions)") +
  guides(colour=guide_legend(title="Forecast"))

###Holt-Winters’平滑法 考虑季节性因素,进而提出Holt-Winters’平滑法。其中,季节性可以分为可加和可乘两种,如果季节性随着时间变化而变化,那么应该使用可乘,否则使用可加。 Holt-Winters’平滑法一样可以考虑趋势衰减,是要设置damp参数为TRUE即可。

aust <- window(austourists,start=2005)
fit1 <- hw(aust,seasonal="additive")
fit2 <- hw(aust,seasonal="multiplicative")
rbind(accuracy(fit1),accuracy(fit2))
                      ME     RMSE      MAE           MPE     MAPE      MASE        ACF1
Training set 0.008115785 1.763305 1.374062 -0.2860248405 2.973922 0.4502579 -0.06272507
Training set 0.092062283 1.575631 1.254960 -0.0006505533 2.705390 0.4112302 -0.07955726
autoplot(aust) +
  autolayer(fit1, series="HW additive forecasts", PI=FALSE) +
  autolayer(fit2, series="HW multiplicative forecasts",
    PI=FALSE) +
  xlab("年份") + ylab("澳大利亚国际游客过夜的天数(百万)") +
  guides(colour=guide_legend(title="预测值"))+
  theme(text = element_text(family = "STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))

Holt-Winters’平滑法一样可以考虑趋势衰减,是要设置damp参数为TRUE即可。 事实上一种比较优秀的方法就是用Holt-Winters’季节可乘的趋势衰减平滑法.

hw(y, damped=TRUE, seasonal=“multiplicative”) #y为要进行平滑的时间序列

自动化平滑模型选择与预测

ETS (误差,趋势,季节性) ,这种标记也可以看作是指数平滑。 每个成分的可能取值为:误差 = {A,M},趋势 = {N,A,A_d },季节性 = { N,A,M }。

ETS(A,N,N):具有加性误差的简单指数平滑 ETS(M,N,N):具有乘性误差的简单指数平滑 ETS(A,A,N):具有加性误差的Holt线性方法 ETS(M,A,N):具有乘性误差的Holt线性方法

https://otexts.com/fppcn/ets.html

引入了ets函数,它不能进行预测,但是能够根据时间序列的状况,选择最佳的模型。

aust <- window(austourists, start=2005)
fit <- ets(aust)
summary(fit)
ETS(M,A,M) 

Call:
 ets(y = aust) 

  Smoothing parameters:
    alpha = 0.1908 
    beta  = 0.0392 
    gamma = 2e-04 

  Initial states:
    l = 32.3679 
    b = 0.9281 
    s = 1.0218 0.9628 0.7683 1.2471

  sigma:  0.0383

     AIC     AICc      BIC 
224.8628 230.1569 240.9205 

Training set error measures:
                     ME     RMSE     MAE        MPE     MAPE     MASE      ACF1
Training set 0.04836907 1.670893 1.24954 -0.1845609 2.692849 0.409454 0.2005962
LS0tCnRpdGxlOiAiUl/mjIfmlbDlubPmu5Hms5UiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMgMS7nroDljZXmjIfmlbDlubPmu5EKCuaMh+aVsOW5s+a7keazleaYr+WfuuS6jua7keWKqOW5s+Wdh+azleW7tuS8uOiAjOadpeeahO+8jOa7keWKqOW5s+Wdh+aYr+aKiuWJjU7kuKrluo/liJfnmoTlubPlnYflgLzkvZzkuLpOKzHnmoTpooTmtYvvvIzkuI3mlq3lnLDlvoDlkI7orqHnrpfvvIzojrflvpfkuIDmnaHnm7jlr7nlubPmu5HnmoTmm7Lnur/jgILkvYbmmK/mjIfmlbDlubPmu5Hms5XliJnorqTkuLrvvIzml7bpl7TotorpnaDov5HpgqPkuYjlupTor6Xkuojku6XnmoTmnYPph43lsLHotorlpKfjgILotYvkuojmnYPph43nmoTlpKflsI/kuIDoiKzku6XOseihqOekugrmnYPph43pmo/op4LmtYvml7bpl7TnmoTkuYXov5znqIvluqblkYjmjIfmlbDlnovkuIvpmY0g4oCUIOacgOaXqeeahOinguWvn+WAvOiiq+i1i+S6iOacgOWwj+eahOadg+WAvAoK6YCC55So5LqO6aKE5rWL5rKh5pyJ5piO5pi+6LaL5Yq/5oiW5a2j6IqC5Zug57Sg55qE5pWw5o2uCgokJApcYmVnaW57ZXF1YXRpb259IApcYmVnaW57c3BsaXR9CiZcaGF0e3l9X3t0KzF8dH0gPSBcYWxwaGEgeV90ICsgXGFscGhhKDEtXGFscGhhKSB5X3t0LTF9KyBcYWxwaGEoMS1cYWxwaGEpXjIgeV97dC0yfSArIFxhbHBoYSgxLVxhbHBoYSleMyB5X3t0LTN9ICsuLi4gXFwKCiblsIbml7bliLsx55qE56ys5LiA5Liq5ouf5ZCI5YC86KGo56S65Li6bF8w77yI5oiR5Lus5b+F6aG76L+b6KGM5Lyw6K6h77yJXFwKJueUsSBcaGF0e3l9X3t0KzF8dH0gPSBcYWxwaGEgeV90ICsgKDEtIFxhbHBoYSlcaGF0e3l9X3t0fHQtMX0gLOWNs1xoYXR7eX1fezJ8MX0gPSBcYWxwaGEgeV8xICsgKDEtIFxhbHBoYSlsXzDvvIwgXGhhdHt5fV97M3wyfSA9IFxhbHBoYSB5XzIgKyAoMS0gXGFscGhhKVxoYXR7eX1fezJ8MX0sLi4uXFwKJuW+lyBcY29sb3J7cmVkfXtcaGF0e3l9X3t0KzF8dH09IFxzdW1fe2o9MX1ee3QtMX17XGFscGhhKDEtXGFscGhhKV5qIHlfe3Qtan0gKyAoMS1cYWxwaGEpXnRsXzB9fVxcClxlbmR7c3BsaXR9IApcZW5ke2VxdWF0aW9ufSAKJCQK5pyA5bCP5YyW5LiL5byP5p2l5Lyw6K6h5pyq55+l5Y+C5pWw55qE5YC85ZKM5Yid5aeL5YC8CiQkClNTRSA9IFxzdW1fe3Q9MX1ee1R9eyh5X3QgLSBcaGF0e3l9X3t0fHQtMX0pXjJ9ID0gXHN1bV97dD0xfV57VH17e2VfdH1eMn0KJCQKCmBgYHtyfQpsaWJyYXJ5KGZwcDIpCm9pbGRhdGEgPC0gd2luZG93KG9pbCwgc3RhcnQ9MTk5NikKIyBFc3RpbWF0ZSBwYXJhbWV0ZXJzCiNzZXPlh73mlbDlj6/ku6Xlr7nlkI7pnaLnmoQ15Liq6KeC5rWL6L+b6KGM6aKE5rWL77yMCmZpdCA8LSBzZXMob2lsZGF0YSwgaD01KQpmaXQkbW9kZWwKYGBgCgpgYGB7cn0KIyBBY2N1cmFjeSBvZiBvbmUtc3RlcC1haGVhZCB0cmFpbmluZyBlcnJvcnMKI2FjY3VyYWN55Ye95pWw5omA57uZ5Ye655qE5piv5Zyo6K6t57uD6ZuG5Lit5b6X5Yiw55qE5YeG56Gu5bqm5oyH5qCH44CCCnJvdW5kKGFjY3VyYWN5KGZpdCksMikKIz4gICAgICAgICAgICAgICBNRSAgUk1TRSAgIE1BRSBNUEUgTUFQRSBNQVNFICBBQ0YxCiM+IFRyYWluaW5nIHNldCA2LjQgMjguMTIgMjIuMjYgMS4xIDQuNjEgMC45MyAtMC4wMwpgYGAKYGBge3J9CmF1dG9wbG90KGZpdCkgKwogIGF1dG9sYXllcihmaXR0ZWQoZml0KSwgc2VyaWVzPSJGaXR0ZWQiKSArCiAgeWxhYigiT2lsIChtaWxsaW9ucyBvZiB0b25uZXMpIikgKyB4bGFiKCJZZWFyIikKYGBgCgojIDIuSG9sdOaMh+aVsOW5s+a7ke+8iOiAg+iZkei2i+WKv+aAp++8iS/pnI3lsJTnibnnmoTnur/mgKfotovlir/ms5UKCkhvbHQgKDE5NTcpIOWwhueugOWNleaMh+aVsOW5s+a7keazleaJqeWxleWIsOWPr+S7pemihOa1i+WFt+aciei2i+WKv+eahOaVsOaNruOAggror6Xmlrnms5XljIXlkKvkuIDkuKrpooTmtYvmlrnnqIvlkozkuKTkuKrlubPmu5HmlrnnqIvvvIjkuIDkuKrnlKjkuo7msLTlubPvvIzkuIDkuKrnlKjkuo7otovlir/vvInvvJoKJCQKXGJlZ2lue2FsaWduKn0KICBcdGV4dHtGb3JlY2FzdCBlcXVhdGlvbn0mJiBcaGF0e3l9X3t0K2h8dH0gJj0gXGVsbF97dH0gKyBoYl97dH0gXFwKICBcdGV4dHtMZXZlbCBlcXVhdGlvbn0gICAmJiBcZWxsX3t0fSAmPSBcYWxwaGEgeV97dH0gKyAoMSAtIFxhbHBoYSkoXGVsbF97dC0xfSArIGJfe3QtMX0pXFwKICBcdGV4dHtUcmVuZCBlcXVhdGlvbn0gICAmJiBiX3t0fSAgICAmPSBcYmV0YV4qKFxlbGxfe3R9IC0gXGVsbF97dC0xfSkgKyAoMSAtXGJldGFeKiliX3t0LTF977yMClxlbmR7YWxpZ24qfQokJAoKYGBge3J9CmFpciA8LSB3aW5kb3coYXVzYWlyLCBzdGFydD0xOTkwKQpmYyA8LSBob2x0KGFpciwgaD01KQpmYyRtb2RlbApgYGAKCuWPr+S7peeci+WIsOi/meS4quaWueazleavlOS5i+WJjeiOt+W+l+S6huS4gOS6m+aWsOeahOWPguaVsO+8jOWmgmJldGHlkoxi44CCYmV0YeaYr+i2i+WKv+aAp+eahOaMh+aVsO+8jOWug+ihqOekuumaj+edgOaXtumXtOeahOWPmOWMlu+8jOaXtumXtOW6j+WIl+i2i+WKv+aJgOWPkeeUn+eahOWPmOWMluOAguiAjGLliJnmmK/liJ3lp4vlgLzjgIIKCiMjI+mYu+WwvOi2i+WKv+aWueazlSjliYrlvLHotovlir8pCuivpeaWueazleacieS4gOenjeWPmOW8j++8jOWPq+WBmkRhbXBlZCB0cmVuZCBtZXRob2Rz77yI6Zi75bC86LaL5Yq/5pa55rOV77yJ44CCCuWug+eahOWBh+iuvuaYr++8jOS4gOS4quW6j+WIl+WcqOefreacn+WGheaYr+WFt+acieS4gOWumui2i+WKv+eahO+8jOS9huaYr+WcqOmVv+acn+S4reWNtOaYr+WbtOe7leedgOS4gOS4quWdh+WAvOWcqOazouWKqOOAggpcYmVnaW57YWxpZ24qfQogIFxoYXR7eX1fe3QraHx0fSAmPSBcZWxsX3t0fSArIChccGhpK1xwaGleMiArIFxkb3RzICsgXHBoaV57aH0pYl97dH0gXFwKICBcZWxsX3t0fSAmPSBcYWxwaGEgeV97dH0gKyAoMSAtIFxhbHBoYSkoXGVsbF97dC0xfSArIFxwaGkgYl97dC0xfSlcXAogIGJfe3R9ICY9IFxiZXRhXiooXGVsbF97dH0gLSBcZWxsX3t0LTF9KSArICgxIC1cYmV0YV4qKVxwaGkgYl97dC0xfeOAggpcZW5ke2FsaWduKn0KCui/memHjOW8leWFpeS4gOS4quaWsOeahOWPguaVsM+V77yMMDzPlTwx77yM5LiA6Iis5ZyoMC445YiwMC45OOS5i+mXtO+8jOWmguaenOetieS6jjHjgIIKz5XvvIjor7vkvZxwaGnvvInmmK/nlKjmnaXliYrlvLHotovlir/mgKfnmoTlj4LmlbDjgILPlei2iuWkp+WImeWvuei2i+WKv+WJiuW8seeahOaViOaenOi2iuWwj++8jOetieS6jjHnmoTml7blgJnliJnlrozlhajmsqHmnInliYrlvLHnmoTmlYjmnpzvvIjkuI7kvKDnu5/nmoRIb2x05bmz5ruR5rOV5peg5byCKeOAggrlpoLmnpwwPM+VPDHvvIzpgqPkuYjpmo/nnYDpooTmtYvlkI7nu63lj5jph4/otorlpJrvvIzlsIbkvJrorqnpooTmtYvotovov5Hkuo4kJCBcZWxsX1QrXHBoaSBiX1QvKDEtXHBoaSkgJCQKYGBge3J9CmZjMiA8LSBob2x0KGFpciwgZGFtcGVkPVRSVUUsIHBoaSA9IDAuOSwgaD0xNSkKZmMyJG1vZGVsCmBgYApgYGB7cn0KI+WPr+S7peeci+WHuuadpe+8jOe6oue6v+WPr+iDveabtOWKoOWQiOeQhu+8jOiAjOiTnee6v+W+iOWPr+iDveaXoOatouWig+WcsOe9keS4iuS4gOebtOWinumVv+OAguinguWvn+S4gOS4i+aooeWei+WPguaVsO+8mgphdXRvcGxvdChhaXIpICsKICBhdXRvbGF5ZXIoZmMsIHNlcmllcz0iSG9sdCdzIG1ldGhvZCIsIFBJPUZBTFNFKSArCiAgYXV0b2xheWVyKGZjMiwgc2VyaWVzPSJEYW1wZWQgSG9sdCdzIG1ldGhvZCIsIFBJPUZBTFNFKSArCiAgZ2d0aXRsZSgiRm9yZWNhc3RzIGZyb20gSG9sdCdzIG1ldGhvZCIpICsgeGxhYigiWWVhciIpICsKICB5bGFiKCJBaXIgcGFzc2VuZ2VycyBpbiBBdXN0cmFsaWEgKG1pbGxpb25zKSIpICsKICBndWlkZXMoY29sb3VyPWd1aWRlX2xlZ2VuZCh0aXRsZT0iRm9yZWNhc3QiKSkKYGBgCgoKIyMjSG9sdC1XaW50ZXJz4oCZ5bmz5ruR5rOVCuiAg+iZkeWto+iKguaAp+WboOe0oO+8jOi/m+iAjOaPkOWHukhvbHQtV2ludGVyc+KAmeW5s+a7keazleOAguWFtuS4re+8jOWto+iKguaAp+WPr+S7peWIhuS4uuWPr+WKoOWSjOWPr+S5mOS4pOenje+8jOWmguaenOWto+iKguaAp+maj+edgOaXtumXtOWPmOWMluiAjOWPmOWMlu+8jOmCo+S5iOW6lOivpeS9v+eUqOWPr+S5mO+8jOWQpuWImeS9v+eUqOWPr+WKoOOAggpIb2x0LVdpbnRlcnPigJnlubPmu5Hms5XkuIDmoLflj6/ku6XogIPomZHotovlir/oobDlh4/vvIzmmK/opoHorr7nva5kYW1w5Y+C5pWw5Li6VFJVReWNs+WPr+OAggoKYGBge3J9CmF1c3QgPC0gd2luZG93KGF1c3RvdXJpc3RzLHN0YXJ0PTIwMDUpCmZpdDEgPC0gaHcoYXVzdCxzZWFzb25hbD0iYWRkaXRpdmUiKQpmaXQyIDwtIGh3KGF1c3Qsc2Vhc29uYWw9Im11bHRpcGxpY2F0aXZlIikKcmJpbmQoYWNjdXJhY3koZml0MSksYWNjdXJhY3koZml0MikpCmBgYAoKCmBgYHtyfQphdXRvcGxvdChhdXN0KSArCiAgYXV0b2xheWVyKGZpdDEsIHNlcmllcz0iSFcgYWRkaXRpdmUgZm9yZWNhc3RzIiwgUEk9RkFMU0UpICsKICBhdXRvbGF5ZXIoZml0Miwgc2VyaWVzPSJIVyBtdWx0aXBsaWNhdGl2ZSBmb3JlY2FzdHMiLAogICAgUEk9RkFMU0UpICsKICB4bGFiKCLlubTku70iKSArIHlsYWIoIua+s+Wkp+WIqeS6muWbvemZhea4uOWuoui/h+WknOeahOWkqeaVsO+8iOeZvuS4h++8iSIpICsKICBndWlkZXMoY29sb3VyPWd1aWRlX2xlZ2VuZCh0aXRsZT0i6aKE5rWL5YC8IikpKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlNUSGVpdGkiKSkrCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpCmBgYAoKCgoKSG9sdC1XaW50ZXJz4oCZ5bmz5ruR5rOV5LiA5qC35Y+v5Lul6ICD6JmR6LaL5Yq/6KGw5YeP77yM5piv6KaB6K6+572uZGFtcOWPguaVsOS4ulRSVUXljbPlj6/jgIIK5LqL5a6e5LiK5LiA56eN5q+U6L6D5LyY56eA55qE5pa55rOV5bCx5piv55SoSG9sdC1XaW50ZXJzJ+Wto+iKguWPr+S5mOeahOi2i+WKv+ihsOWHj+W5s+a7keazlS4KCmh3KHksIGRhbXBlZD1UUlVFLCBzZWFzb25hbD0ibXVsdGlwbGljYXRpdmUiKSAgI3nkuLropoHov5vooYzlubPmu5HnmoTml7bpl7Tluo/liJcKCiMjIyDoh6rliqjljJblubPmu5HmqKHlnovpgInmi6nkuI7pooTmtYsKRVRTICjor6/lt67vvIzotovlir/vvIzlraPoioLmgKcpIO+8jOi/meenjeagh+iusOS5n+WPr+S7peeci+S9nOaYr+aMh+aVsOW5s+a7keOAggrmr4/kuKrmiJDliIbnmoTlj6/og73lj5blgLzkuLrvvJror6/lt64gPSB7QSxNfe+8jOi2i+WKvyA9IHtOLEEsQV9kIH3vvIzlraPoioLmgKcgPSB7IE4sQSxNIH3jgIIKIApFVFMoQSxOLE4p77ya5YW35pyJ5Yqg5oCn6K+v5beu55qE566A5Y2V5oyH5pWw5bmz5ruRCkVUUyhNLE4sTinvvJrlhbfmnInkuZjmgKfor6/lt67nmoTnroDljZXmjIfmlbDlubPmu5EKRVRTKEEsQSxOKe+8muWFt+acieWKoOaAp+ivr+W3rueahEhvbHTnur/mgKfmlrnms5UKRVRTKE0sQSxOKe+8muWFt+acieS5mOaAp+ivr+W3rueahEhvbHTnur/mgKfmlrnms5UKCmh0dHBzOi8vb3RleHRzLmNvbS9mcHBjbi9ldHMuaHRtbAoK5byV5YWl5LqGZXRz5Ye95pWwLOWug+S4jeiDvei/m+ihjOmihOa1i++8jOS9huaYr+iDveWkn+agueaNruaXtumXtOW6j+WIl+eahOeKtuWGte+8jOmAieaLqeacgOS9s+eahOaooeWei+OAggpgYGB7cn0KYXVzdCA8LSB3aW5kb3coYXVzdG91cmlzdHMsIHN0YXJ0PTIwMDUpCmZpdCA8LSBldHMoYXVzdCkKc3VtbWFyeShmaXQpCmBgYAoKCgoKCgo=