Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Econometria: exemplos 10.5 e 10.11 do Wooldridge (2006, p.325 e 337). Campo Grande-MS,Brasil: RStudio/Rpubs, 2020. Disponível em http://rpubs.com/amrofi/barium_dummy_sazonal.

1 Introdução - Primeiros passos

Wooldridge Source: C.M. Krupp and P.S. Pollard (1999), Market Responses to Antidumpting Laws: Some Evidence from the U.S. Chemical Industry, Canadian Journal of Economics 29, 199-227. They are monthly data covering February 1978 through December 1988.

A data.frame with 131 observations on 31 variables:

  • chnimp: Chinese imports, bar. chl.
  • bchlimp: total imports bar. chl.
  • befile6: =1 for all 6 mos before filing
  • affile6: =1 for all 6 mos after filing
  • afdec6: =1 for all 6 mos after decision
  • befile12: =1 all 12 mos before filing
  • affile12: =1 all 12 mos after filing
  • afdec12: =1 all 12 mos after decision
  • chempi: chemical production index
  • gas: gasoline production
  • rtwex: exchange rate index
  • spr: =1 for spring months
  • sum: =1 for summer months
  • fall: =1 for fall months
  • lchnimp: log(chnimp)
  • lgas: log(gas)
  • lrtwex: log(rtwex)
  • lchempi: log(chempi)
  • t: time trend
  • feb: =1 if month is feb
  • mar: =1 if month is march
  • apr:
  • may:
  • jun:
  • jul:
  • aug:
  • sep:
  • oct:
  • nov:
  • dec:
  • percchn: percent imports from china

Ver também https://justinmshea.github.io/wooldridge/articles/Introductory-Econometrics-Examples.html e http://www.urfie.net/downloads10.html.

> library(stargazer);library(wooldridge)
> data(barium, package='wooldridge')
> dados=barium
> attach(dados)

Vamos ver como está a tabela importada:

> library(knitr)
> kable(dados[,1:5],caption="Dados do exemplo")
Dados do exemplo
chnimp bchlimp befile6 affile6 afdec6
220.4620 9578.376 0 0 0
94.7980 11219.480 0 0 0
219.3575 9719.900 0 0 0
317.4215 12920.950 0 0 0
114.6390 9790.446 0 0 0
129.5240 11020.470 0 0 0
110.0920 8302.168 0 0 0
39.6830 9583.325 0 0 0
262.8230 9880.729 0 0 0
173.9980 9003.923 0 0 0
548.9455 10153.390 0 0 0
433.9755 10527.060 0 0 0
213.7855 9238.292 0 0 0
788.6440 11740.390 0 0 0
287.0395 13699.070 0 0 0
278.9545 17716.330 0 0 0
429.8970 15868.760 0 0 0
344.8820 15512.320 0 0 0
538.9150 13831.560 0 0 0
535.7180 13669.760 0 0 0
445.3290 16691.211 0 0 0
649.2550 16617.330 0 0 0
639.3350 15912.760 0 0 0
209.4370 9401.297 0 0 0
512.5915 9195.309 0 0 0
605.3425 11727.520 0 0 0
144.2360 20584.260 0 0 0
405.5360 8929.146 0 0 0
621.1075 10912.110 0 0 0
893.7185 13581.910 0 0 0
140.2300 9218.409 0 0 0
243.4765 20751.770 0 0 0
330.5750 12935.290 0 0 0
46.5860 26984.199 0 0 0
215.1960 18886.381 0 0 0
214.8385 25679.510 0 0 0
238.2085 15502.940 0 0 0
265.6545 18247.141 0 0 0
315.2515 12060.010 0 0 0
426.5905 17777.609 0 0 0
124.7860 14406.150 0 0 0
387.8990 20570.359 0 0 0
400.5400 14210.780 0 0 0
876.8340 15190.780 0 0 0
535.9930 14593.670 0 0 0
815.9555 14044.220 0 0 0
771.8130 10431.430 0 0 0
352.8730 13228.840 0 0 0
431.9340 12801.710 0 0 0
1211.4520 16403.340 0 0 0
575.9175 13591.700 0 0 0
1491.6219 16239.280 0 0 0
380.2920 20010.461 0 0 0
391.5965 16873.131 0 0 0
505.5120 15379.570 0 0 0
341.0220 10551.650 0 0 0
372.5765 20755.381 0 0 0
483.3590 18066.199 0 0 0
224.0470 17886.760 0 0 0
532.3940 19134.020 0 0 0
239.1405 17455.141 0 0 0
689.4535 18215.721 0 0 0
318.0120 20764.830 1 0 0
1048.0360 28414.789 1 0 0
945.7295 18819.391 1 0 0
295.3720 11737.220 1 0 0
319.4580 12520.280 1 0 0
855.1370 16988.230 1 0 0
671.8070 15835.780 0 0 0
657.9315 17282.949 0 1 0
847.9595 26960.510 0 1 0
849.8735 25137.689 0 1 0
852.9305 19807.490 0 1 0
435.8370 32134.600 0 1 0
204.7075 22954.551 0 1 0
241.5675 24438.789 0 0 0
244.1380 19057.439 0 0 0
656.4015 26784.340 0 0 0
588.0975 37244.379 0 0 0
1128.4440 28129.359 0 0 0
1328.9670 37253.469 0 0 0
227.0635 18289.359 0 0 1
583.2610 14795.910 0 0 1
499.8935 25700.260 0 0 1
165.3460 25240.311 0 0 1
1057.9720 24854.939 0 0 1
465.8225 24119.289 0 0 1
349.4040 27244.980 0 0 0
466.8240 30912.420 0 0 0
717.0470 23173.529 0 0 0
826.7580 29031.439 0 0 0
1571.7360 19400.510 0 0 0
542.9925 29887.711 0 0 0
670.7935 20670.631 0 0 0
430.2755 34375.250 0 0 0
524.8625 19555.820 0 0 0
317.7500 27362.230 0 0 0
442.8195 31952.500 0 0 0
322.6325 19578.160 0 0 0
742.0795 26605.789 0 0 0
665.3660 20034.420 0 0 0
737.2670 33408.488 0 0 0
1065.2111 20967.311 0 0 0
547.3285 26526.840 0 0 0
1258.4070 28304.020 0 0 0
976.5165 17168.150 0 0 0
1192.6840 12874.300 0 0 0
1047.2390 16153.360 0 0 0
944.7875 15638.680 0 0 0
840.0295 18391.830 0 0 0
578.9175 18786.789 0 0 0
828.1195 17661.711 0 0 0
1010.0570 17623.770 0 0 0
1546.4830 18482.400 0 0 0
1160.1580 21132.420 0 0 0
862.6800 16421.520 0 0 0
692.2970 16128.660 0 0 0
451.3840 14769.440 0 0 0
766.4015 34192.180 0 0 0
1794.5160 17537.230 0 0 0
972.8010 25518.910 0 0 0
738.5085 36649.191 0 0 0
786.1805 18668.000 0 0 0
849.0650 19710.660 0 0 0
895.4205 38521.531 0 0 0
814.3615 19679.381 0 0 0
589.4220 31686.859 0 0 0
529.7335 16370.340 0 0 0
968.0375 15653.960 0 0 0
794.0600 45716.609 0 0 0
1087.8060 29580.500 0 0 0

Estimando o modelo linear de regressao multipla fazendo conforme a expressão do enunciado.

2 Resultados

2.1 Estimação

Fazendo as regressoes com uso de logaritmos.

> mod1 <- lm(log(chnimp)~log(chempi)+log(gas)+log(rtwex)+
+                               befile6+affile6+afdec6, data=dados )
> #summary(mod1)
> plot(chnimp)

Vamos utilizar o pacote stargazer para organizar as saídas de resultados. Se a saída fosse apenas pelo comando summary, sairia da forma:

> summary(mod1)

Call:
lm(formula = log(chnimp) ~ log(chempi) + log(gas) + log(rtwex) + 
    befile6 + affile6 + afdec6, data = dados)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.03356 -0.39080  0.03048  0.40248  1.51720 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -17.80277   21.04537  -0.846   0.3992    
log(chempi)   3.11719    0.47920   6.505 1.72e-09 ***
log(gas)      0.19634    0.90662   0.217   0.8289    
log(rtwex)    0.98302    0.40015   2.457   0.0154 *  
befile6       0.05957    0.26097   0.228   0.8198    
affile6      -0.03241    0.26430  -0.123   0.9026    
afdec6       -0.56524    0.28584  -1.978   0.0502 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.5974 on 124 degrees of freedom
Multiple R-squared:  0.3049,    Adjusted R-squared:  0.2712 
F-statistic: 9.064 on 6 and 124 DF,  p-value: 3.255e-08

Agora, criando uma tabela com as várias saídas de modelos, com o pacote stargazer tem-se, com a geração de AIC e BIC:

> library(stargazer)
> mod1$AIC <- AIC(mod1)
> 
> mod1$BIC <- BIC(mod1)
> 
> library(stargazer)
> star.1 <- stargazer(mod1, 
+                     title="Título: Resultado da Regressão",
+                     align=TRUE,
+                     type = "text", style = "all",
+                     keep.stat=c("aic","bic","rsq", "adj.rsq","n")
+ )

Título: Resultado da Regressão
===============================================
                        Dependent variable:    
                    ---------------------------
                            log(chnimp)        
-----------------------------------------------
log(chempi)                  3.117***          
                              (0.479)          
                             t = 6.505         
                             p = 0.000         
log(gas)                       0.196           
                              (0.907)          
                             t = 0.217         
                             p = 0.829         
log(rtwex)                    0.983**          
                              (0.400)          
                             t = 2.457         
                             p = 0.016         
befile6                        0.060           
                              (0.261)          
                             t = 0.228         
                             p = 0.820         
affile6                       -0.032           
                              (0.264)          
                            t = -0.123         
                             p = 0.903         
afdec6                        -0.565*          
                              (0.286)          
                            t = -1.978         
                             p = 0.051         
Constant                      -17.803          
                             (21.045)          
                            t = -0.846         
                             p = 0.400         
-----------------------------------------------
Observations                    131            
R2                             0.305           
Adjusted R2                    0.271           
Akaike Inf. Crit.             245.573          
Bayesian Inf. Crit.           268.575          
===============================================
Note:               *p<0.1; **p<0.05; ***p<0.01

Fazendo uma estimativa de um novo modelo, que leve em consideração a sazonalidade, adicionando variáveis binárias para cada mês. Neste caso, são 11 dummies adicionais sendo janeiro o mês base. Ou seja, caso a dummy de um dado mês seja significativa, então ela altera o intercepto relativamente à base que é janeiro.

> mod2 <- lm(log(chnimp)~log(chempi)+log(gas)+log(rtwex)+                              
+              befile6+affile6+afdec6+ 
+              feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec, 
+              data = dados)
> summary(mod2)

Call:
lm(formula = log(chnimp) ~ log(chempi) + log(gas) + log(rtwex) + 
    befile6 + affile6 + afdec6 + feb + mar + apr + may + jun + 
    jul + aug + sep + oct + nov + dec, data = dados)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.98535 -0.36207  0.07366  0.41786  1.37734 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 16.779215  32.428645   0.517   0.6059    
log(chempi)  3.265062   0.492930   6.624 1.24e-09 ***
log(gas)    -1.278140   1.389008  -0.920   0.3594    
log(rtwex)   0.663045   0.471304   1.407   0.1622    
befile6      0.139703   0.266808   0.524   0.6016    
affile6      0.012632   0.278687   0.045   0.9639    
afdec6      -0.521300   0.301950  -1.726   0.0870 .  
feb         -0.417711   0.304444  -1.372   0.1728    
mar          0.059052   0.264731   0.223   0.8239    
apr         -0.451483   0.268386  -1.682   0.0953 .  
may          0.033309   0.269242   0.124   0.9018    
jun         -0.206332   0.269252  -0.766   0.4451    
jul          0.003837   0.278767   0.014   0.9890    
aug         -0.157064   0.277993  -0.565   0.5732    
sep         -0.134161   0.267656  -0.501   0.6172    
oct          0.051693   0.266851   0.194   0.8467    
nov         -0.246260   0.262827  -0.937   0.3508    
dec          0.132838   0.271423   0.489   0.6255    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.6012 on 113 degrees of freedom
Multiple R-squared:  0.3583,    Adjusted R-squared:  0.2618 
F-statistic: 3.712 on 17 and 113 DF,  p-value: 1.282e-05
> mod2$AIC <- AIC(mod2)
> mod2$BIC <- BIC(mod2)

Podemos comparar os modelos;

> library(stargazer)
> star.1 <- stargazer(mod1,mod2,
+                     title="Título: Resultado da Regressão",
+                     align=TRUE,
+                     type = "text", style = "all",
+                     keep.stat=c("aic","bic","rsq", "adj.rsq","n")
+ )

Título: Resultado da Regressão
================================================
                        Dependent variable:     
                    ----------------------------
                            log(chnimp)         
                         (1)            (2)     
------------------------------------------------
log(chempi)            3.117***      3.265***   
                       (0.479)        (0.493)   
                      t = 6.505      t = 6.624  
                      p = 0.000      p = 0.000  
log(gas)                0.196         -1.278    
                       (0.907)        (1.389)   
                      t = 0.217     t = -0.920  
                      p = 0.829      p = 0.360  
log(rtwex)             0.983**         0.663    
                       (0.400)        (0.471)   
                      t = 2.457      t = 1.407  
                      p = 0.016      p = 0.163  
befile6                 0.060          0.140    
                       (0.261)        (0.267)   
                      t = 0.228      t = 0.524  
                      p = 0.820      p = 0.602  
affile6                 -0.032         0.013    
                       (0.264)        (0.279)   
                      t = -0.123     t = 0.045  
                      p = 0.903      p = 0.964  
afdec6                 -0.565*        -0.521*   
                       (0.286)        (0.302)   
                      t = -1.978    t = -1.726  
                      p = 0.051      p = 0.088  
feb                                   -0.418    
                                      (0.304)   
                                    t = -1.372  
                                     p = 0.173  
mar                                    0.059    
                                      (0.265)   
                                     t = 0.223  
                                     p = 0.824  
apr                                   -0.451*   
                                      (0.268)   
                                    t = -1.682  
                                     p = 0.096  
may                                    0.033    
                                      (0.269)   
                                     t = 0.124  
                                     p = 0.902  
jun                                   -0.206    
                                      (0.269)   
                                    t = -0.766  
                                     p = 0.446  
jul                                    0.004    
                                      (0.279)   
                                     t = 0.014  
                                     p = 0.990  
aug                                   -0.157    
                                      (0.278)   
                                    t = -0.565  
                                     p = 0.574  
sep                                   -0.134    
                                      (0.268)   
                                    t = -0.501  
                                     p = 0.618  
oct                                    0.052    
                                      (0.267)   
                                     t = 0.194  
                                     p = 0.847  
nov                                   -0.246    
                                      (0.263)   
                                    t = -0.937  
                                     p = 0.351  
dec                                    0.133    
                                      (0.271)   
                                     t = 0.489  
                                     p = 0.626  
Constant               -17.803        16.779    
                       (21.045)      (32.429)   
                      t = -0.846     t = 0.517  
                      p = 0.400      p = 0.606  
------------------------------------------------
Observations             131            131     
R2                      0.305          0.358    
Adjusted R2             0.271          0.262    
Akaike Inf. Crit.      245.573        257.089   
Bayesian Inf. Crit.    268.575        311.718   
================================================
Note:                *p<0.1; **p<0.05; ***p<0.01

Neste caso, apenas o mês de abril foi significativo e portanto distinto da base. Todos os demais meses têm o mesmo comportamento e igual a janeiro. Não foi possível melhorar o modelo colocando essas dummies mensais.

Podemos olhar um gráfico temporal de log(chempi), quando realmente não é detectável uma sazonalidade destacada.

> plot(as.ts(log(chempi)))

Outra tentativa incluirá agora as dummies para estações: spring (spr), summer (sum), fall (fall). A base agora será winter, inverno norte-americano.

> mod3 <- lm(log(chnimp)~log(chempi)+log(gas)+log(rtwex)+                              
+              befile6+affile6+afdec6+ 
+              spr+sum+fall, 
+              data = dados)
> summary(mod3)

Call:
lm(formula = log(chnimp) ~ log(chempi) + log(gas) + log(rtwex) + 
    befile6 + affile6 + afdec6 + spr + sum + fall, data = dados)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.00694 -0.41185  0.03826  0.39270  1.48701 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -26.52163   23.29748  -1.138   0.2572    
log(chempi)   3.07793    0.48614   6.331 4.29e-09 ***
log(gas)      0.56507    1.00021   0.565   0.5731    
log(rtwex)    1.10147    0.42461   2.594   0.0107 *  
befile6       0.07669    0.26500   0.289   0.7728    
affile6      -0.08329    0.27283  -0.305   0.7607    
afdec6       -0.62120    0.29542  -2.103   0.0376 *  
spr          -0.04122    0.15117  -0.273   0.7856    
sum          -0.15190    0.16926  -0.897   0.3713    
fall         -0.06728    0.15448  -0.436   0.6640    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.6026 on 121 degrees of freedom
Multiple R-squared:  0.3097,    Adjusted R-squared:  0.2583 
F-statistic: 6.032 on 9 and 121 DF,  p-value: 5.789e-07
> mod3$AIC <- AIC(mod3)
> mod3$BIC <- BIC(mod3)
> library(stargazer)
> star.1 <- stargazer(mod1,mod3,
+                     title="Título: Resultado da Regressão",
+                     align=TRUE,
+                     type = "text", style = "all",
+                     keep.stat=c("aic","bic","rsq", "adj.rsq","n")
+ )

Título: Resultado da Regressão
================================================
                        Dependent variable:     
                    ----------------------------
                            log(chnimp)         
                         (1)            (2)     
------------------------------------------------
log(chempi)            3.117***      3.078***   
                       (0.479)        (0.486)   
                      t = 6.505      t = 6.331  
                      p = 0.000      p = 0.000  
log(gas)                0.196          0.565    
                       (0.907)        (1.000)   
                      t = 0.217      t = 0.565  
                      p = 0.829      p = 0.574  
log(rtwex)             0.983**        1.101**   
                       (0.400)        (0.425)   
                      t = 2.457      t = 2.594  
                      p = 0.016      p = 0.011  
befile6                 0.060          0.077    
                       (0.261)        (0.265)   
                      t = 0.228      t = 0.289  
                      p = 0.820      p = 0.773  
affile6                 -0.032        -0.083    
                       (0.264)        (0.273)   
                      t = -0.123    t = -0.305  
                      p = 0.903      p = 0.761  
afdec6                 -0.565*       -0.621**   
                       (0.286)        (0.295)   
                      t = -1.978    t = -2.103  
                      p = 0.051      p = 0.038  
spr                                   -0.041    
                                      (0.151)   
                                    t = -0.273  
                                     p = 0.786  
sum                                   -0.152    
                                      (0.169)   
                                    t = -0.897  
                                     p = 0.372  
fall                                  -0.067    
                                      (0.154)   
                                    t = -0.436  
                                     p = 0.664  
Constant               -17.803        -26.522   
                       (21.045)      (23.297)   
                      t = -0.846    t = -1.138  
                      p = 0.400      p = 0.258  
------------------------------------------------
Observations             131            131     
R2                      0.305          0.310    
Adjusted R2             0.271          0.258    
Akaike Inf. Crit.      245.573        250.660   
Bayesian Inf. Crit.    268.575        282.287   
================================================
Note:                *p<0.1; **p<0.05; ***p<0.01

Do mesmo modo, o modelo não melhorou com dummies para estações. Não foram estatisticamente diferentes da base.

O modelo é sabidamente alvo de problemas de autocorrelação, e desta forma será tratado, como poderá ser analisado por inferências robustas em Wooldridge (2006, p.383)

3 Referências

HEISS, Florian. Using R for Introductory Econometrics. 2.ed. Florian Heiss, 2020. Recurso online. Disponível em: http://www.urfie.net/.

SHEA, Justin M. wooldridge: vignette. 2020. Disponível em: https://justinmshea.github.io/wooldridge/articles/Introductory-Econometrics-Examples.html.

SHEA, Justin M. wooldridge: 111 Data Sets from “Introductory Econometrics: A Modern Approach, 6e” by Jeffrey M. Wooldridge. R package version 1.3.1. 2018. Disponível em: https://CRAN.R-project.org/package=wooldridge.

WOOLDRIDGE, J.M. Introdução à Econometria: uma abordagem moderna. São Paulo: Pioneira Thomson Learning, 2006.(tradução da segunda edição americana).

LS0tDQp0aXRsZTogIkVjb25vbWV0cmlhOiBleGVtcGxvcyAxMC41IGUgMTAuMTEgZG8gV29vbGRyaWRnZSAoMjAwNiwgcC4zMjUgZSAzMzcpIg0KYXV0aG9yOiAiQWRyaWFubyBNYXJjb3MgUm9kcmlndWVzIEZpZ3VlaXJlZG8sICplLW1haWw6IGFkcmlhbm8uZmlndWVpcmVkb0B1Zm1zLmJyKiINCmFic3RyYWN0OiANCiAgVGhpcyBpcyBhbiB1bmRlcmdyYWQgc3R1ZGVudCBsZXZlbCBleGVyY2lzZSBmb3IgY2xhc3MgdXNlLiBXZSBhbmFseXNlIGRhdGEgb24gQmFyaXVtIG1hcmtldCwgZnJvbSAxOTc4bTAyIHRvIDE5ODhtMTIuIA0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJWQgJUIgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IGRlZmF1bHQNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQotLS0NCg0KTGljZW7Dp2Egey0jTGljZW7Dp2F9DQo9PT09PT09PT09PT09PT09PT09DQoNClRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIFRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgbGljZW5zZSwgdmlzaXQgPGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8+IG9yIHNlbmQgYSBsZXR0ZXIgdG8gQ3JlYXRpdmUgQ29tbW9ucywgUE8gQm94IDE4NjYsIE1vdW50YWluIFZpZXcsIENBIDk0MDQyLCBVU0EuDQoNCiFbTGljZW5zZTogQ0MgQlktU0EgNC4wXShodHRwczovL21pcnJvcnMuY3JlYXRpdmVjb21tb25zLm9yZy9wcmVzc2tpdC9idXR0b25zLzg4eDMxL3BuZy9ieS1zYS5wbmcpeyB3aWR0aD0yNSUgfQ0KDQpDaXRhw6fDo28gey0jQ2l0YcOnw6NvfQ0KPT09PT09PT09PT09PT09PT09PQ0KDQpTdWdlc3TDo28gZGUgY2l0YcOnw6NvOg0KRklHVUVJUkVETywgQWRyaWFubyBNYXJjb3MgUm9kcmlndWVzLiBFY29ub21ldHJpYTogZXhlbXBsb3MgMTAuNSBlIDEwLjExIGRvIFdvb2xkcmlkZ2UgKDIwMDYsIHAuMzI1IGUgMzM3KS4gQ2FtcG8gR3JhbmRlLU1TLEJyYXNpbDogUlN0dWRpby9ScHVicywgMjAyMC4gRGlzcG9uw612ZWwgZW0gPGh0dHA6Ly9ycHVicy5jb20vYW1yb2ZpL2Jhcml1bV9kdW1teV9zYXpvbmFsPi4gDQoNCkludHJvZHXDp8OjbyAtIFByaW1laXJvcyBwYXNzb3MNCj09PT09PT09PT09PT09PT09PT0NCg0KDQo+IFdvb2xkcmlkZ2UgU291cmNlOiBDLk0uIEtydXBwIGFuZCBQLlMuIFBvbGxhcmQgKDE5OTkpLCBNYXJrZXQgUmVzcG9uc2VzIHRvIEFudGlkdW1wdGluZyBMYXdzOiBTb21lIEV2aWRlbmNlIGZyb20gdGhlIFUuUy4gQ2hlbWljYWwgSW5kdXN0cnksIENhbmFkaWFuIEpvdXJuYWwgb2YgRWNvbm9taWNzIDI5LCAxOTktMjI3LiBUaGV5IGFyZSBtb250aGx5IGRhdGEgY292ZXJpbmcgRmVicnVhcnkgMTk3OCB0aHJvdWdoIERlY2VtYmVyIDE5ODguDQoNCkEgZGF0YS5mcmFtZSB3aXRoIDEzMSBvYnNlcnZhdGlvbnMgb24gMzEgdmFyaWFibGVzOiAgIA0KDQotICAgICBjaG5pbXA6IENoaW5lc2UgaW1wb3J0cywgYmFyLiBjaGwuDQotICAgICBiY2hsaW1wOiB0b3RhbCBpbXBvcnRzIGJhci4gY2hsLg0KLSAgICAgYmVmaWxlNjogPTEgZm9yIGFsbCA2IG1vcyBiZWZvcmUgZmlsaW5nDQotICAgICBhZmZpbGU2OiA9MSBmb3IgYWxsIDYgbW9zIGFmdGVyIGZpbGluZw0KLSAgICAgYWZkZWM2OiA9MSBmb3IgYWxsIDYgbW9zIGFmdGVyIGRlY2lzaW9uDQotICAgICBiZWZpbGUxMjogPTEgYWxsIDEyIG1vcyBiZWZvcmUgZmlsaW5nDQotICAgICBhZmZpbGUxMjogPTEgYWxsIDEyIG1vcyBhZnRlciBmaWxpbmcNCi0gICAgIGFmZGVjMTI6ID0xIGFsbCAxMiBtb3MgYWZ0ZXIgZGVjaXNpb24NCi0gICAgIGNoZW1waTogY2hlbWljYWwgcHJvZHVjdGlvbiBpbmRleA0KLSAgICAgZ2FzOiBnYXNvbGluZSBwcm9kdWN0aW9uDQotICAgICBydHdleDogZXhjaGFuZ2UgcmF0ZSBpbmRleA0KLSAgICAgc3ByOiA9MSBmb3Igc3ByaW5nIG1vbnRocw0KLSAgICAgc3VtOiA9MSBmb3Igc3VtbWVyIG1vbnRocw0KLSAgICAgZmFsbDogPTEgZm9yIGZhbGwgbW9udGhzDQotICAgICBsY2huaW1wOiBsb2coY2huaW1wKQ0KLSAgICAgbGdhczogbG9nKGdhcykNCi0gICAgIGxydHdleDogbG9nKHJ0d2V4KQ0KLSAgICAgbGNoZW1waTogbG9nKGNoZW1waSkNCi0gICAgIHQ6IHRpbWUgdHJlbmQNCi0gICAgIGZlYjogPTEgaWYgbW9udGggaXMgZmViDQotICAgICBtYXI6ID0xIGlmIG1vbnRoIGlzIG1hcmNoDQotICAgICBhcHI6DQotICAgICBtYXk6DQotICAgICBqdW46DQotICAgICBqdWw6DQotICAgICBhdWc6DQotICAgICBzZXA6DQotICAgICBvY3Q6DQotICAgICBub3Y6DQotICAgICBkZWM6DQotICAgICBwZXJjY2huOiBwZXJjZW50IGltcG9ydHMgZnJvbSBjaGluYQ0KDQpWZXIgdGFtYsOpbSA8aHR0cHM6Ly9qdXN0aW5tc2hlYS5naXRodWIuaW8vd29vbGRyaWRnZS9hcnRpY2xlcy9JbnRyb2R1Y3RvcnktRWNvbm9tZXRyaWNzLUV4YW1wbGVzLmh0bWw+IGUgPGh0dHA6Ly93d3cudXJmaWUubmV0L2Rvd25sb2FkczEwLmh0bWw+Lg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgZXZhbD1UUlVFfQ0KIyBpbmNsdWRlIHRoaXMgY29kZSBjaHVuayBhcy1pcyB0byBzZXQgb3B0aW9ucw0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGNvbW1lbnQ9TkEsIHByb21wdD1UUlVFLCBvdXQud2lkdGg9NzUwLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD04KQ0KYGBgDQoNCg0KYGBge3IsIGV2YWw9VFJVRSwgbWVzc2FnZT1GLCB3YXJuaW5nPUZ9DQpsaWJyYXJ5KHN0YXJnYXplcik7bGlicmFyeSh3b29sZHJpZGdlKQ0KZGF0YShiYXJpdW0sIHBhY2thZ2U9J3dvb2xkcmlkZ2UnKQ0KZGFkb3M9YmFyaXVtDQphdHRhY2goZGFkb3MpDQpgYGANCg0KDQpWYW1vcyB2ZXIgY29tbyBlc3TDoSBhIHRhYmVsYSBpbXBvcnRhZGE6DQoNCmBgYHtyfQ0KbGlicmFyeShrbml0cikNCmthYmxlKGRhZG9zWywxOjVdLGNhcHRpb249IkRhZG9zIGRvIGV4ZW1wbG8iKQ0KDQpgYGANCg0KRXN0aW1hbmRvIG8gbW9kZWxvIGxpbmVhciBkZSByZWdyZXNzYW8gbXVsdGlwbGEgZmF6ZW5kbyBjb25mb3JtZSBhIGV4cHJlc3PDo28gZG8gZW51bmNpYWRvLg0KDQoNCiMgUmVzdWx0YWRvcyANCg0KIyMgRXN0aW1hw6fDo28NCg0KRmF6ZW5kbyBhcyByZWdyZXNzb2VzIGNvbSB1c28gZGUgbG9nYXJpdG1vcy4NCg0KYGBge3IgZXN0aW1hY2FvfQ0KbW9kMSA8LSBsbShsb2coY2huaW1wKX5sb2coY2hlbXBpKStsb2coZ2FzKStsb2cocnR3ZXgpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmaWxlNithZmZpbGU2K2FmZGVjNiwgZGF0YT1kYWRvcyApDQojc3VtbWFyeShtb2QxKQ0KcGxvdChjaG5pbXApDQpgYGANCg0KVmFtb3MgdXRpbGl6YXIgbyBwYWNvdGUgKnN0YXJnYXplciogcGFyYSBvcmdhbml6YXIgYXMgc2HDrWRhcyBkZSByZXN1bHRhZG9zLiBTZSBhIHNhw61kYSBmb3NzZSBhcGVuYXMgcGVsbyBjb21hbmRvICpzdW1tYXJ5Kiwgc2FpcmlhIGRhIGZvcm1hOg0KICAgDQpgYGB7cn0NCnN1bW1hcnkobW9kMSkNCmBgYA0KDQpBZ29yYSwgY3JpYW5kbyB1bWEgdGFiZWxhIGNvbSBhcyB2w6FyaWFzIHNhw61kYXMgZGUgbW9kZWxvcywgY29tIG8gcGFjb3RlICpzdGFyZ2F6ZXIqIHRlbS1zZSwgY29tIGEgZ2VyYcOnw6NvIGRlIEFJQyBlIEJJQzoNCg0KYGBge3IgLCBlY2hvPVRSVUUsIGV2YWw9VFJVRSwgbWVzc2FnZT1GLCB3YXJuaW5nPUZ9DQpsaWJyYXJ5KHN0YXJnYXplcikNCm1vZDEkQUlDIDwtIEFJQyhtb2QxKQ0KDQptb2QxJEJJQyA8LSBCSUMobW9kMSkNCg0KbGlicmFyeShzdGFyZ2F6ZXIpDQpzdGFyLjEgPC0gc3RhcmdhemVyKG1vZDEsIA0KICAgICAgICAgICAgICAgICAgICB0aXRsZT0iVMOtdHVsbzogUmVzdWx0YWRvIGRhIFJlZ3Jlc3PDo28iLA0KICAgICAgICAgICAgICAgICAgICBhbGlnbj1UUlVFLA0KICAgICAgICAgICAgICAgICAgICB0eXBlID0gInRleHQiLCBzdHlsZSA9ICJhbGwiLA0KICAgICAgICAgICAgICAgICAgICBrZWVwLnN0YXQ9YygiYWljIiwiYmljIiwicnNxIiwgImFkai5yc3EiLCJuIikNCikNCg0KYGBgDQoNCiANCkZhemVuZG8gdW1hIGVzdGltYXRpdmEgZGUgdW0gbm92byBtb2RlbG8sIHF1ZSBsZXZlIGVtIGNvbnNpZGVyYcOnw6NvIGEgc2F6b25hbGlkYWRlLCBhZGljaW9uYW5kbyB2YXJpw6F2ZWlzIGJpbsOhcmlhcyBwYXJhIGNhZGEgbcOqcy4gTmVzdGUgY2Fzbywgc8OjbyAxMSBkdW1taWVzIGFkaWNpb25haXMgc2VuZG8gamFuZWlybyBvIG3DqnMgYmFzZS4gT3Ugc2VqYSwgY2FzbyBhIGR1bW15IGRlIHVtIGRhZG8gbcOqcyBzZWphIHNpZ25pZmljYXRpdmEsIGVudMOjbyBlbGEgYWx0ZXJhIG8gaW50ZXJjZXB0byByZWxhdGl2YW1lbnRlIMOgIGJhc2UgcXVlIMOpIGphbmVpcm8uDQoNCmBgYHtyfQ0KbW9kMiA8LSBsbShsb2coY2huaW1wKX5sb2coY2hlbXBpKStsb2coZ2FzKStsb2cocnR3ZXgpKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgIGJlZmlsZTYrYWZmaWxlNithZmRlYzYrIA0KICAgICAgICAgICAgIGZlYiArIG1hciArIGFwciArIG1heSArIGp1biArIGp1bCArIGF1ZyArIHNlcCArIG9jdCArIG5vdiArIGRlYywgDQogICAgICAgICAgICAgZGF0YSA9IGRhZG9zKQ0Kc3VtbWFyeShtb2QyKQ0KbW9kMiRBSUMgPC0gQUlDKG1vZDIpDQptb2QyJEJJQyA8LSBCSUMobW9kMikNCmBgYA0KDQpQb2RlbW9zIGNvbXBhcmFyIG9zIG1vZGVsb3M7DQoNCmBgYHtyfQ0KbGlicmFyeShzdGFyZ2F6ZXIpDQpzdGFyLjEgPC0gc3RhcmdhemVyKG1vZDEsbW9kMiwNCiAgICAgICAgICAgICAgICAgICAgdGl0bGU9IlTDrXR1bG86IFJlc3VsdGFkbyBkYSBSZWdyZXNzw6NvIiwNCiAgICAgICAgICAgICAgICAgICAgYWxpZ249VFJVRSwNCiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJ0ZXh0Iiwgc3R5bGUgPSAiYWxsIiwNCiAgICAgICAgICAgICAgICAgICAga2VlcC5zdGF0PWMoImFpYyIsImJpYyIsInJzcSIsICJhZGoucnNxIiwibiIpDQopDQpgYGANCk5lc3RlIGNhc28sIGFwZW5hcyBvIG3DqnMgZGUgYWJyaWwgZm9pIHNpZ25pZmljYXRpdm8gZSBwb3J0YW50byBkaXN0aW50byBkYSBiYXNlLiBUb2RvcyBvcyBkZW1haXMgbWVzZXMgdMOqbSBvIG1lc21vIGNvbXBvcnRhbWVudG8gZSBpZ3VhbCBhIGphbmVpcm8uIE7Do28gZm9pIHBvc3PDrXZlbCBtZWxob3JhciBvIG1vZGVsbyBjb2xvY2FuZG8gZXNzYXMgZHVtbWllcyBtZW5zYWlzLiAgICANCg0KUG9kZW1vcyBvbGhhciB1bSBncsOhZmljbyB0ZW1wb3JhbCBkZSBsb2coY2hlbXBpKSwgcXVhbmRvIHJlYWxtZW50ZSBuw6NvIMOpIGRldGVjdMOhdmVsIHVtYSBzYXpvbmFsaWRhZGUgZGVzdGFjYWRhLg0KDQpgYGB7cn0NCnBsb3QoYXMudHMobG9nKGNoZW1waSkpKQ0KYGBgDQpPdXRyYSB0ZW50YXRpdmEgaW5jbHVpcsOhIGFnb3JhIGFzIGR1bW1pZXMgcGFyYSBlc3Rhw6fDtWVzOiBzcHJpbmcgKHNwciksIHN1bW1lciAoc3VtKSwgZmFsbCAoZmFsbCkuIEEgYmFzZSBhZ29yYSBzZXLDoSB3aW50ZXIsIGludmVybm8gbm9ydGUtYW1lcmljYW5vLg0KDQoNCmBgYHtyfQ0KbW9kMyA8LSBsbShsb2coY2huaW1wKX5sb2coY2hlbXBpKStsb2coZ2FzKStsb2cocnR3ZXgpKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgIGJlZmlsZTYrYWZmaWxlNithZmRlYzYrIA0KICAgICAgICAgICAgIHNwcitzdW0rZmFsbCwgDQogICAgICAgICAgICAgZGF0YSA9IGRhZG9zKQ0Kc3VtbWFyeShtb2QzKQ0KbW9kMyRBSUMgPC0gQUlDKG1vZDMpDQptb2QzJEJJQyA8LSBCSUMobW9kMykNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoc3RhcmdhemVyKQ0Kc3Rhci4xIDwtIHN0YXJnYXplcihtb2QxLG1vZDMsDQogICAgICAgICAgICAgICAgICAgIHRpdGxlPSJUw610dWxvOiBSZXN1bHRhZG8gZGEgUmVncmVzc8OjbyIsDQogICAgICAgICAgICAgICAgICAgIGFsaWduPVRSVUUsDQogICAgICAgICAgICAgICAgICAgIHR5cGUgPSAidGV4dCIsIHN0eWxlID0gImFsbCIsDQogICAgICAgICAgICAgICAgICAgIGtlZXAuc3RhdD1jKCJhaWMiLCJiaWMiLCJyc3EiLCAiYWRqLnJzcSIsIm4iKQ0KKQ0KYGBgDQpEbyBtZXNtbyBtb2RvLCBvIG1vZGVsbyBuw6NvIG1lbGhvcm91IGNvbSBkdW1taWVzIHBhcmEgZXN0YcOnw7Vlcy4gTsOjbyBmb3JhbSBlc3RhdGlzdGljYW1lbnRlIGRpZmVyZW50ZXMgZGEgYmFzZS4gICAgIA0KDQpPIG1vZGVsbyDDqSBzYWJpZGFtZW50ZSBhbHZvIGRlIHByb2JsZW1hcyBkZSBhdXRvY29ycmVsYcOnw6NvLCBlIGRlc3RhIGZvcm1hIHNlcsOhIHRyYXRhZG8sIGNvbW8gcG9kZXLDoSBzZXIgYW5hbGlzYWRvIHBvciBpbmZlcsOqbmNpYXMgcm9idXN0YXMgZW0gV29vbGRyaWRnZSAoMjAwNiwgcC4zODMpDQoNCg0KUmVmZXLDqm5jaWFzDQo9PT09PT09PT09PT09PT09DQoNCkhFSVNTLCBGbG9yaWFuLiBVc2luZyBSIGZvciBJbnRyb2R1Y3RvcnkgRWNvbm9tZXRyaWNzLiAyLmVkLiBGbG9yaWFuIEhlaXNzLCAyMDIwLiBSZWN1cnNvIG9ubGluZS4gRGlzcG9uw612ZWwgZW06IDxodHRwOi8vd3d3LnVyZmllLm5ldC8+LiAgICANCg0KU0hFQSwgIEp1c3RpbiBNLiAgd29vbGRyaWRnZTogdmlnbmV0dGUuIDIwMjAuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9qdXN0aW5tc2hlYS5naXRodWIuaW8vd29vbGRyaWRnZS9hcnRpY2xlcy9JbnRyb2R1Y3RvcnktRWNvbm9tZXRyaWNzLUV4YW1wbGVzLmh0bWw+Lg0KDQpTSEVBLCAgSnVzdGluIE0uICB3b29sZHJpZGdlOiAxMTEgRGF0YSBTZXRzIGZyb20gIkludHJvZHVjdG9yeSBFY29ub21ldHJpY3M6IEEgTW9kZXJuIEFwcHJvYWNoLCA2ZSIgYnkgSmVmZnJleSBNLiBXb29sZHJpZGdlLiBSIHBhY2thZ2UgdmVyc2lvbiAxLjMuMS4gMjAxOC4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL0NSQU4uUi1wcm9qZWN0Lm9yZy9wYWNrYWdlPXdvb2xkcmlkZ2U+LiANCiAgDQoNCldPT0xEUklER0UsIEouTS4gSW50cm9kdcOnw6NvIMOgIEVjb25vbWV0cmlhOiB1bWEgYWJvcmRhZ2VtIG1vZGVybmEuIFPDo28gUGF1bG86IFBpb25laXJhIFRob21zb24gTGVhcm5pbmcsIDIwMDYuKHRyYWR1w6fDo28gZGEgc2VndW5kYSBlZGnDp8OjbyBhbWVyaWNhbmEpLg==