Meta analisis

Add at the end of Material and methods:

Data was tabulated in a spreadsheet and divided in continuous and binary outcomes. Data was analyzed with the R package (R Core Team, 2016) and procesed with tydiverse package (Wickham, 2016). For continuos outcome, we used the meta package (Schwarzer, 2016) with the function metacont. The summary measure was the mean difference and their 95%CI. For binary outcomes, we used the function metabin from the meta package (Schwarzer, 2016) with the odds ratio as the summary measure and their 95%CI. Forest plot for each analysis was made.

if(!require("metafor")){install.packages("metafor")} 
Loading required package: metafor
Loading required package: Matrix

Attaching package: ‘Matrix’

The following object is masked from ‘package:tidyr’:

    expand

Loading 'metafor' package (version 1.9-9). For an overview 
and introduction to the package please type: help(metafor).

Attaching package: ‘metafor’

The following objects are masked from ‘package:meta’:

    baujat, forest, funnel, funnel.default, labbe, radial, trimfill

Binary data

binary <- read.csv("binary.csv", header = T, sep = ",")
str(binary)
'data.frame':   2 obs. of  6 variables:
 $ Author.Year: Factor w/ 1 level "Nascimento et al, 2016": 1 1
 $ Outcome    : Factor w/ 2 levels "No Bleading on probing and no attachment loss (proportion) grouping by meet fat consumtion",..: 2 1
 $ n.A        : int  830 766
 $ p.healthy.A: int  122 201
 $ n.B        : int  234 300
 $ p.healthy.B: int  15 26

No Bleading on probing and no attachment loss (proportion) grouping by percentago of calories from sugar consumption

binary.sugar <- binary %>% 
  filter(Outcome =="No Bleading on probing and no attachment loss (proportion) grouping by percentago of calories from sugar consumption")

No Bleading on probing and no attachment loss (proportion) grouping by meet fat consumtion

binary.fat <- binary %>% 
  filter(Outcome =="No Bleading on probing and no attachment loss (proportion) grouping by meet fat consumtion")

Meta-analysis binary data

Binary / Sugar

Fit a “normal-normal model” to the data for the two groups separately. Here, we use the logit transformed proportions (i.e., log odds) for the meta-analysis.

res <- rma(measure="PLO", xi=p.healthy.A, ni=n.A, data=binary)
print(res, digits=3)

Random-Effects Model (k = 2; tau^2 estimator: REML)

tau^2 (estimated amount of total heterogeneity): 0.255 (SE = 0.372)
tau (square root of estimated tau^2 value):      0.505
I^2 (total heterogeneity / total variability):   96.89%
H^2 (total variability / sampling variability):  32.13

Test for Heterogeneity: 
Q(df = 1) = 32.131, p-val < .001

Model Results:

estimate       se     zval     pval    ci.lb    ci.ub          
  -1.394    0.362   -3.846    <.001   -2.104   -0.684      *** 

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

The estimated average log odds (i.e., μ=-3.654 ) can be back-transformed using the inverse logit transformation with

predict(res, transf=transf.ilogit, digits=3)
  pred ci.lb ci.ub cr.lb cr.ub
 0.199 0.109 0.335 0.068 0.456

The 0.025 represent the median of the average risk the outcome for being exposed to the factor.

Next, the same for the group B

res1 <- rma(measure="PLO", xi=p.healthy.B, ni=n.B, data=binary)
print(res1, digits=3)

Random-Effects Model (k = 2; tau^2 estimator: REML)

tau^2 (estimated amount of total heterogeneity): 0 (SE = 0.080)
tau (square root of estimated tau^2 value):      0
I^2 (total heterogeneity / total variability):   0.00%
H^2 (total variability / sampling variability):  1.00

Test for Heterogeneity: 
Q(df = 1) = 0.938, p-val = 0.333

Model Results:

estimate       se     zval     pval    ci.lb    ci.ub          
  -2.476    0.163  -15.221    <.001   -2.795   -2.157      *** 

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
predict(res1, transf=transf.ilogit, digits=3)
  pred ci.lb ci.ub cr.lb cr.ub
 0.078 0.058 0.104 0.058 0.104

Now the plots. I will use the meta package

binary.sugar.ma <- metabin(p.healthy.A, n.A, p.healthy.B, n.B, 
                           sm="OR", method = "I", data = binary.sugar)
binary.sugar.ma
     OR           95%-CI    z  p-value
 2.5158 [1.4410; 4.3924] 3.24   0.0012

Details:
- Inverse variance method
forest(binary.sugar.ma, layout="revman5", comb.random=FALSE)

Binary / Fat

res2 <- rma(measure="PLO", xi=p.healthy.B, ni=n.B, data=binary)
print(res2, digits=3)

Random-Effects Model (k = 2; tau^2 estimator: REML)

tau^2 (estimated amount of total heterogeneity): 0 (SE = 0.080)
tau (square root of estimated tau^2 value):      0
I^2 (total heterogeneity / total variability):   0.00%
H^2 (total variability / sampling variability):  1.00

Test for Heterogeneity: 
Q(df = 1) = 0.938, p-val = 0.333

Model Results:

estimate       se     zval     pval    ci.lb    ci.ub          
  -2.476    0.163  -15.221    <.001   -2.795   -2.157      *** 

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
predict(res2, transf=transf.ilogit, digits=3)
  pred ci.lb ci.ub cr.lb cr.ub
 0.078 0.058 0.104 0.058 0.104

Now the plots. I will use the meta package

binary.fat.ma <- metabin(p.healthy.A, n.A, p.healthy.B, n.B, 
                           sm="OR", method = "I", data = binary.fat)
binary.fat.ma
     OR           95%-CI    z  p-value
 3.7491 [2.4310; 5.7819] 5.98 < 0.0001

Details:
- Inverse variance method
forest(binary.fat.ma, layout="revman5", comb.random=FALSE)

Continuous

continuous <- read.csv("continuous.csv", header = T, sep = ",")
str(binary)
'data.frame':   2 obs. of  6 variables:
 $ Author.Year: Factor w/ 1 level "Nascimento et al, 2016": 1 1
 $ Outcome    : Factor w/ 2 levels "No Bleading on probing and no attachment loss (proportion) grouping by meet fat consumtion",..: 2 1
 $ n.A        : int  830 766
 $ p.healthy.A: int  122 201
 $ n.B        : int  234 300
 $ p.healthy.B: int  15 26

1. Mean Bleading on probing grouping by percentago of calories from sugar consumption

cont.1.ma <- metacont(n.A, mean.A, sd.A, n.B, mean.B, sd.B,
                      data=continuous, subset = 1) 
cont.1.ma
      MD             95%-CI      z  p-value
 -4.6000 [-5.0341; -4.1659] -20.77 < 0.0001

Details:
- Inverse variance method
forest(cont.1.ma)

2. Mean Bleading on probing grouping by meet fat consumtion

cont.2.ma <- metacont(n.A, mean.A, sd.A, n.B, mean.B, sd.B,
                      data=continuous, subset = 2) 
cont.2.ma
      MD             95%-CI      z  p-value
 -6.3000 [-7.0999; -5.5001] -15.44 < 0.0001

Details:
- Inverse variance method
forest(cont.2.ma)

3. Mean nr. of teeth grouping by AHEI (alternative healthy eating index)

cont.3.ma <- metacont(n.A, mean.A, sd.A, n.B, mean.B, sd.B,
                      data=continuous, subset = 3) 
cont.3.ma
     MD           95%-CI    z  p-value
 2.0000 [0.7904; 3.2096] 3.24   0.0012

Details:
- Inverse variance method
forest(cont.3.ma)

4. Mean nr. Of teeth with probing >4mm (periodontal disease) grouping by AHEI

cont.4.ma <- metacont(n.A, mean.A, sd.A, n.B, mean.B, sd.B,
                      data=continuous, subset = 4) 
cont.4.ma
      MD            95%-CI     z  p-value
 -0.5000 [-1.5771; 0.5771] -0.91   0.3629

Details:
- Inverse variance method
forest(cont.4.ma)

Citations

citation()

To cite R in publications use:

  R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing,
  Vienna, Austria. URL https://www.R-project.org/.

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {R: A Language and Environment for Statistical Computing},
    author = {{R Core Team}},
    organization = {R Foundation for Statistical Computing},
    address = {Vienna, Austria},
    year = {2016},
    url = {https://www.R-project.org/},
  }

We have invested a lot of time and effort in creating R, please cite it when using it for data analysis. See also
‘citation("pkgname")’ for citing R packages.
citation("tidyverse")

To cite package ‘tidyverse’ in publications use:

  Hadley Wickham (2016). tidyverse: Easily Install and Load 'Tidyverse' Packages. R package version 1.0.0.
  https://CRAN.R-project.org/package=tidyverse

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {tidyverse: Easily Install and Load 'Tidyverse' Packages},
    author = {Hadley Wickham},
    year = {2016},
    note = {R package version 1.0.0},
    url = {https://CRAN.R-project.org/package=tidyverse},
  }
citation("meta")

To cite package ‘meta’ in publications use:

  Guido Schwarzer (2016). meta: General Package for Meta-Analysis. R package version 4.5-0.
  https://CRAN.R-project.org/package=meta

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {meta: General Package for Meta-Analysis},
    author = {Guido Schwarzer},
    year = {2016},
    note = {R package version 4.5-0},
    url = {https://CRAN.R-project.org/package=meta},
  }
citation("metafor")

To cite the metafor package in publications, please use:

  Viechtbauer, W. (2010). Conducting meta-analyses in R with the metafor package. Journal of Statistical Software, 36(3),
  1-48. URL: http://www.jstatsoft.org/v36/i03/

A BibTeX entry for LaTeX users is

  @Article{,
    title = {Conducting meta-analyses in {R} with the {metafor} package},
    author = {Wolfgang Viechtbauer},
    journal = {Journal of Statistical Software},
    year = {2010},
    volume = {36},
    number = {3},
    pages = {1--48},
    url = {http://www.jstatsoft.org/v36/i03/},
  }
LS0tCnRpdGxlOiAiMjAxNiBNZXRhLWFuYWx5c2lzIERpZXRhIGFuZCBvcmFsIGhlYWx0aCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgd29yZF9kb2N1bWVudDogZGVmYXVsdAotLS0KIyBNZXRhIGFuYWxpc2lzCgoKIyMgQWRkIGF0IHRoZSBlbmQgb2YgTWF0ZXJpYWwgYW5kIG1ldGhvZHM6IAoKRGF0YSB3YXMgdGFidWxhdGVkIGluIGEgc3ByZWFkc2hlZXQgYW5kIGRpdmlkZWQgaW4gY29udGludW91cyBhbmQgYmluYXJ5IG91dGNvbWVzLiBEYXRhIHdhcyBhbmFseXplZCB3aXRoIHRoZSBSIHBhY2thZ2UgKFIgQ29yZSBUZWFtLCAyMDE2KSBhbmQgcHJvY2VzZWQgd2l0aCB0eWRpdmVyc2UgcGFja2FnZSAoV2lja2hhbSwgMjAxNikuIEZvciBjb250aW51b3Mgb3V0Y29tZSwgd2UgdXNlZCB0aGUgbWV0YSBwYWNrYWdlIChTY2h3YXJ6ZXIsIDIwMTYpIHdpdGggdGhlIGZ1bmN0aW9uIG1ldGFjb250LiBUaGUgc3VtbWFyeSBtZWFzdXJlIHdhcyB0aGUgbWVhbiBkaWZmZXJlbmNlIGFuZCB0aGVpciA5NSVDSS4gRm9yIGJpbmFyeSBvdXRjb21lcywgd2UgdXNlZCB0aGUgZnVuY3Rpb24gbWV0YWJpbiBmcm9tIHRoZSBtZXRhIHBhY2thZ2UgKFNjaHdhcnplciwgMjAxNikgd2l0aCB0aGUgb2RkcyByYXRpbyBhcyB0aGUgc3VtbWFyeSBtZWFzdXJlIGFuZCB0aGVpciA5NSVDSS4gRm9yZXN0IHBsb3QgZm9yIGVhY2ggYW5hbHlzaXMgd2FzIG1hZGUuIAoKCmBgYHtyIHBhY2thZ2VzfQoKaWYoIXJlcXVpcmUoInRpZHl2ZXJzZSIpKXtpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKX0gCmlmKCFyZXF1aXJlKCJtZXRhIikpe2luc3RhbGwucGFja2FnZXMoIm1ldGEiKX0gCmlmKCFyZXF1aXJlKCJtZXRhZm9yIikpe2luc3RhbGwucGFja2FnZXMoIm1ldGFmb3IiKX0gCgpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQpsaWJyYXJ5KCJtZXRhIikKbGlicmFyeSgibWV0YWZvciIpCmBgYAoKIyBCaW5hcnkgZGF0YQpgYGB7ciBCaW5hcnkgZGF0YX0KYmluYXJ5IDwtIHJlYWQuY3N2KCJiaW5hcnkuY3N2IiwgaGVhZGVyID0gVCwgc2VwID0gIiwiKQpzdHIoYmluYXJ5KQpgYGAKCk5vIEJsZWFkaW5nIG9uIHByb2JpbmcgYW5kIG5vIGF0dGFjaG1lbnQgbG9zcyAocHJvcG9ydGlvbikgZ3JvdXBpbmcgYnkgcGVyY2VudGFnbyBvZiBjYWxvcmllcyBmcm9tIHN1Z2FyIGNvbnN1bXB0aW9uCmBgYHtyIHN1YnNldCBObyBCbGVhZGluZyBvbiBwcm9iaW5nIGFuZCBubyBhdHRhY2htZW50IGxvc3MgKHByb3BvcnRpb24pIGdyb3VwaW5nIGJ5IHBlcmNlbnRhZ28gb2YgY2Fsb3JpZXMgZnJvbSBzdWdhciBjb25zdW1wdGlvbn0KCmJpbmFyeS5zdWdhciA8LSBiaW5hcnkgJT4lIAogIGZpbHRlcihPdXRjb21lID09Ik5vIEJsZWFkaW5nIG9uIHByb2JpbmcgYW5kIG5vIGF0dGFjaG1lbnQgbG9zcyAocHJvcG9ydGlvbikgZ3JvdXBpbmcgYnkgcGVyY2VudGFnbyBvZiBjYWxvcmllcyBmcm9tIHN1Z2FyIGNvbnN1bXB0aW9uIikKYGBgCgpObyBCbGVhZGluZyBvbiBwcm9iaW5nIGFuZCBubyBhdHRhY2htZW50IGxvc3MgKHByb3BvcnRpb24pIGdyb3VwaW5nIGJ5IG1lZXQgZmF0IGNvbnN1bXRpb24KYGBge3Igc3Vic2V0IE5vIEJsZWFkaW5nIG9uIHByb2JpbmcgYW5kIG5vIGF0dGFjaG1lbnQgbG9zcyAocHJvcG9ydGlvbikgZ3JvdXBpbmcgYnkgbWVldCBmYXQgY29uc3VtdGlvbn0KCmJpbmFyeS5mYXQgPC0gYmluYXJ5ICU+JSAKICBmaWx0ZXIoT3V0Y29tZSA9PSJObyBCbGVhZGluZyBvbiBwcm9iaW5nIGFuZCBubyBhdHRhY2htZW50IGxvc3MgKHByb3BvcnRpb24pIGdyb3VwaW5nIGJ5IG1lZXQgZmF0IGNvbnN1bXRpb24iKQpgYGAKCiMjIE1ldGEtYW5hbHlzaXMgYmluYXJ5IGRhdGEKCiMjIyBCaW5hcnkgLyBTdWdhcgpGaXQgYSAibm9ybWFsLW5vcm1hbCBtb2RlbCIgdG8gdGhlIGRhdGEgZm9yIHRoZSB0d28gZ3JvdXBzIHNlcGFyYXRlbHkuIEhlcmUsIHdlIHVzZSB0aGUgbG9naXQgdHJhbnNmb3JtZWQgcHJvcG9ydGlvbnMgKGkuZS4sIGxvZyBvZGRzKSBmb3IgdGhlIG1ldGEtYW5hbHlzaXMuIAogCmBgYHtyIG1ldGFmb3IgYmluYXJ5IGJpbmFyeSBzdWdhciAxfQpyZXMgPC0gcm1hKG1lYXN1cmU9IlBMTyIsIHhpPXAuaGVhbHRoeS5BLCBuaT1uLkEsIGRhdGE9YmluYXJ5KQpwcmludChyZXMsIGRpZ2l0cz0zKQpgYGAKClRoZSBlc3RpbWF0ZWQgYXZlcmFnZSBsb2cgb2RkcyAoaS5lLiwgzrw9LTMuNjU0ICkgY2FuIGJlIGJhY2stdHJhbnNmb3JtZWQgdXNpbmcgdGhlIGludmVyc2UgbG9naXQgdHJhbnNmb3JtYXRpb24gd2l0aAoKYGBge3IgaW52ZXJzZSBsb2dpdCB0cmFuc2Zvcm1hdGlvbiBiaW5hcnkgc3VnYXJ9CnByZWRpY3QocmVzLCB0cmFuc2Y9dHJhbnNmLmlsb2dpdCwgZGlnaXRzPTMpCmBgYAoKVGhlIDAuMDI1ICByZXByZXNlbnQgdGhlIG1lZGlhbiBvZiB0aGUgYXZlcmFnZSByaXNrIHRoZSBvdXRjb21lIGZvciBiZWluZyBleHBvc2VkIHRvIHRoZSBmYWN0b3IuCgpOZXh0LCB0aGUgc2FtZSBmb3IgdGhlIGdyb3VwIEIKYGBge3IgbWV0YWZvciBiaW5hcnkgYmluYXJ5IGZhdH0KcmVzMSA8LSBybWEobWVhc3VyZT0iUExPIiwgeGk9cC5oZWFsdGh5LkIsIG5pPW4uQiwgZGF0YT1iaW5hcnkpCnByaW50KHJlczEsIGRpZ2l0cz0zKQpgYGAKYGBge3IgaW52ZXJzZSBsb2dpdCB0cmFuc2Zvcm1hdGlvbiBiaW5hcnkgZmF0fQpwcmVkaWN0KHJlczEsIHRyYW5zZj10cmFuc2YuaWxvZ2l0LCBkaWdpdHM9MykKYGBgCgpOb3cgdGhlIHBsb3RzLiBJIHdpbGwgdXNlIHRoZSBtZXRhIHBhY2thZ2UKYGBge3IgbWEgZm9yZXN0IGJpbmFyeS5zdWdhci5BfQpiaW5hcnkuc3VnYXIubWEgPC0gbWV0YWJpbihwLmhlYWx0aHkuQSwgbi5BLCBwLmhlYWx0aHkuQiwgbi5CLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc209Ik9SIiwgbWV0aG9kID0gIkkiLCBkYXRhID0gYmluYXJ5LnN1Z2FyKQpiaW5hcnkuc3VnYXIubWEKYGBgCmBgYHtyIGZvcmVzdCBiaW5hcnkuc3VnYXIuQX0KZm9yZXN0KGJpbmFyeS5zdWdhci5tYSwgbGF5b3V0PSJyZXZtYW41IiwgY29tYi5yYW5kb209RkFMU0UpCmBgYAoKIyMjIEJpbmFyeSAvIEZhdApgYGB7ciBiaW5vbWlhbCBmYXQgMX0KcmVzMiA8LSBybWEobWVhc3VyZT0iUExPIiwgeGk9cC5oZWFsdGh5LkIsIG5pPW4uQiwgZGF0YT1iaW5hcnkpCnByaW50KHJlczIsIGRpZ2l0cz0zKQpgYGAKCmBgYHtyIGJpbm9taWFsIGZhdCAyfQpwcmVkaWN0KHJlczIsIHRyYW5zZj10cmFuc2YuaWxvZ2l0LCBkaWdpdHM9MykKYGBgCgoKTm93IHRoZSBwbG90cy4gSSB3aWxsIHVzZSB0aGUgbWV0YSBwYWNrYWdlCmBgYHtyIG1hIGZvcmVzdCBiaW5hcnkuZmF0fQpiaW5hcnkuZmF0Lm1hIDwtIG1ldGFiaW4ocC5oZWFsdGh5LkEsIG4uQSwgcC5oZWFsdGh5LkIsIG4uQiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtPSJPUiIsIG1ldGhvZCA9ICJJIiwgZGF0YSA9IGJpbmFyeS5mYXQpCmJpbmFyeS5mYXQubWEKYGBgCmBgYHtyIGZvcmVzdCBiaW5hcnkuZmF0fQpmb3Jlc3QoYmluYXJ5LmZhdC5tYSwgbGF5b3V0PSJyZXZtYW41IiwgY29tYi5yYW5kb209RkFMU0UpCmBgYAoKIyBDb250aW51b3VzIApgYGB7cn0KY29udGludW91cyA8LSByZWFkLmNzdigiY29udGludW91cy5jc3YiLCBoZWFkZXIgPSBULCBzZXAgPSAiLCIpCnN0cihiaW5hcnkpCmBgYAoKCiMjIDEuIE1lYW4gQmxlYWRpbmcgb24gcHJvYmluZyBncm91cGluZyBieSBwZXJjZW50YWdvIG9mIGNhbG9yaWVzIGZyb20gc3VnYXIgY29uc3VtcHRpb24KYGBge3IgY29udCAxfQpjb250LjEubWEgPC0gbWV0YWNvbnQobi5BLCBtZWFuLkEsIHNkLkEsIG4uQiwgbWVhbi5CLCBzZC5CLAogICAgICAgICAgICAgICAgICAgICAgZGF0YT1jb250aW51b3VzLCBzdWJzZXQgPSAxKSAKY29udC4xLm1hCmBgYApgYGB7ciBmb3Jlc3QgMX0KZm9yZXN0KGNvbnQuMS5tYSkKYGBgCgojIyAyLiBNZWFuIEJsZWFkaW5nIG9uIHByb2JpbmcgZ3JvdXBpbmcgYnkgbWVldCBmYXQgY29uc3VtdGlvbgpgYGB7ciBjb250IDJ9CmNvbnQuMi5tYSA8LSBtZXRhY29udChuLkEsIG1lYW4uQSwgc2QuQSwgbi5CLCBtZWFuLkIsIHNkLkIsCiAgICAgICAgICAgICAgICAgICAgICBkYXRhPWNvbnRpbnVvdXMsIHN1YnNldCA9IDIpIApjb250LjIubWEKYGBgCmBgYHtyIGZvcmVzdCAyfQpmb3Jlc3QoY29udC4yLm1hKQpgYGAKIyMgMy4gTWVhbiBuci4gb2YgdGVldGggZ3JvdXBpbmcgYnkgQUhFSSAoYWx0ZXJuYXRpdmUgaGVhbHRoeSBlYXRpbmcgaW5kZXgpCmBgYHtyIGNvbnQgM30KY29udC4zLm1hIDwtIG1ldGFjb250KG4uQSwgbWVhbi5BLCBzZC5BLCBuLkIsIG1lYW4uQiwgc2QuQiwKICAgICAgICAgICAgICAgICAgICAgIGRhdGE9Y29udGludW91cywgc3Vic2V0ID0gMykgCmNvbnQuMy5tYQpgYGAKYGBge3IgZm9yZXN0IDN9CmZvcmVzdChjb250LjMubWEpCmBgYAojIyA0LiBNZWFuIG5yLiBPZiB0ZWV0aCB3aXRoIHByb2JpbmcgPjRtbSAocGVyaW9kb250YWwgZGlzZWFzZSkgZ3JvdXBpbmcgYnkgQUhFSQpgYGB7ciBjb250IDR9CmNvbnQuNC5tYSA8LSBtZXRhY29udChuLkEsIG1lYW4uQSwgc2QuQSwgbi5CLCBtZWFuLkIsIHNkLkIsCiAgICAgICAgICAgICAgICAgICAgICBkYXRhPWNvbnRpbnVvdXMsIHN1YnNldCA9IDQpIApjb250LjQubWEKYGBgCmBgYHtyIGZvcmVzdCA0fQpmb3Jlc3QoY29udC40Lm1hKQpgYGAKCgoKIyBDaXRhdGlvbnMKYGBge3IgY2l0YXRpb259CmNpdGF0aW9uKCkKY2l0YXRpb24oInRpZHl2ZXJzZSIpCmNpdGF0aW9uKCJtZXRhIikKY2l0YXRpb24oIm1ldGFmb3IiKQpgYGAKCgo=