Load Packages

library(tidyverse)
library(codebookr)
library(summarytools)
library(broom) 
library(performance)
library(gt)
library(gtsummary)
library(janitor)
library(forcats)
library(here)
library(margins)
library(ggplot2)

Import Data

load(file = "~/Desktop/R-Code/SDOH_Vax/vax_clean1.rda")

Covid variable

vax_clean1 %>% 
mutate(full_vax = case_when(total_cov_vax>= 2 ~ '1',TRUE ~ "0")) %>% 
  mutate(vax_boost = case_when(total_cov_vax>= 3 ~ '1',TRUE ~ "0")) -> cov_clean1

Codebook

print(dfSummary(cov_clean1), method = 'render')

Data Frame Summary

cov_clean1

Dimensions: 15208 x 36
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 ibd_3 [factor]
1. CD
2. UC
3. Unspecified
7712(50.7%)
7345(48.3%)
151(1.0%)
15208 (100.0%) 0 (0.0%)
2 age_yrs [numeric]
Mean (sd) : 49.3 (19.5)
min ≤ med ≤ max:
1 ≤ 49.3 ≤ 108.3
IQR (CV) : 31.6 (0.4)
11541 distinct values 15208 (100.0%) 0 (0.0%)
3 gender [factor]
1. Male
2. Female
6962(45.8%)
8246(54.2%)
15208 (100.0%) 0 (0.0%)
4 race_5 [factor]
1. White
2. Black
3. Asian
4. Native
5. Other
13202(86.8%)
946(6.2%)
373(2.5%)
56(0.4%)
631(4.1%)
15208 (100.0%) 0 (0.0%)
5 ethnic_3 [factor]
1. NonHispanic
2. UNKNOWN
3. Hispanic
4. CHOOSE NOT TO DISCLOSE
14371(98.0%)
0(0.0%)
299(2.0%)
0(0.0%)
14670 (96.5%) 538 (3.5%)
6 lang_3 [factor]
1. English
2. Other
15046(98.9%)
162(1.1%)
15208 (100.0%) 0 (0.0%)
7 relig_affil [factor]
1. Yes
2. No
3. UNKNOWN
4. PATIENT REFUSED
8193(57.4%)
6075(42.6%)
0(0.0%)
0(0.0%)
14268 (93.8%) 940 (6.2%)
8 mstat_5 [factor]
1. Married
2. Unknown
3. Unmarried
4. DivorcedSeparated
5. Widow
6178(40.6%)
3226(21.2%)
4990(32.8%)
507(3.3%)
307(2.0%)
15208 (100.0%) 0 (0.0%)
9 max_ch [numeric]
Mean (sd) : 3.3 (4.9)
min ≤ med ≤ max:
0 ≤ 1 ≤ 27
IQR (CV) : 5 (1.5)
28 distinct values 14773 (97.1%) 435 (2.9%)
10 STATE [character]
1. FLORIDA
2. ILLINOIS
3. INDIANA
4. MARYLAND
5. MICHIGAN
6. NEW YORK
7. NORTH CAROLINA
8. OHIO
9. PENNSYLVANIA
10. TEXAS
24(0.2%)
40(0.3%)
47(0.3%)
16(0.1%)
14069(96.5%)
38(0.3%)
10(0.1%)
314(2.2%)
14(0.1%)
7(0.0%)
14579 (95.9%) 629 (4.1%)
11 r_pct [numeric]
Mean (sd) : 44.7 (18)
min ≤ med ≤ max:
1.2 ≤ 47.9 ≤ 84.8
IQR (CV) : 24.8 (0.4)
2624 distinct values 12943 (85.1%) 2265 (14.9%)
12 IC [numeric]
Min : 0
Mean : 0.6
Max : 1
0:2946(37.6%)
1:4890(62.4%)
7836 (51.5%) 7372 (48.5%)
13 pop_dens [numeric]
Mean (sd) : 2290.3 (4015.6)
min ≤ med ≤ max:
2.5 ≤ 1523.4 ≤ 166336.1
IQR (CV) : 2985 (1.8)
2641 distinct values 14579 (95.9%) 629 (4.1%)
14 RPL_THEMES [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.3 ≤ 1
IQR (CV) : 0.4 (0.7)
2538 distinct values 14920 (98.1%) 288 (1.9%)
15 RPL_4 [factor]
1. First
2. Second
3. Third
4. Fourth
5833(39.1%)
4492(30.1%)
3052(20.5%)
1543(10.3%)
14920 (98.1%) 288 (1.9%)
16 RPL_THEME1 [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.3 ≤ 1
IQR (CV) : 0.4 (0.7)
2476 distinct values 14870 (97.8%) 338 (2.2%)
17 RPL_THEME2 [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.3 ≤ 1
IQR (CV) : 0.4 (0.7)
2450 distinct values 14921 (98.1%) 287 (1.9%)
18 RPL_THEME3 [numeric]
Mean (sd) : 0.5 (0.3)
min ≤ med ≤ max:
0 ≤ 0.5 ≤ 1
IQR (CV) : 0.5 (0.6)
1831 distinct values 14929 (98.2%) 279 (1.8%)
19 RPL_THEME4 [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.4 ≤ 1
IQR (CV) : 0.5 (0.7)
2454 distinct values 14898 (98.0%) 310 (2.0%)
20 act_tob [factor]
1. No
2. Yes
3. NOT ASKED
12593(87.0%)
1878(13.0%)
0(0.0%)
14471 (95.2%) 737 (4.8%)
21 flu_2015 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10815(71.1%)
1:4393(28.9%)
15208 (100.0%) 0 (0.0%)
22 flu_2016 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10616(69.8%)
1:4592(30.2%)
15208 (100.0%) 0 (0.0%)
23 flu_2017 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10756(70.7%)
1:4452(29.3%)
15208 (100.0%) 0 (0.0%)
24 flu_2018 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10645(70.0%)
1:4563(30.0%)
15208 (100.0%) 0 (0.0%)
25 flu_2019 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10679(70.2%)
1:4529(29.8%)
15208 (100.0%) 0 (0.0%)
26 flu_2020 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10596(69.7%)
1:4612(30.3%)
15208 (100.0%) 0 (0.0%)
27 flu_2021 [numeric]
Min : 0
Mean : 0.2
Max : 1
0:12014(79.0%)
1:3194(21.0%)
15208 (100.0%) 0 (0.0%)
28 flu_2022 [numeric]
Min : 0
Mean : 0
Max : 1
0:15044(98.9%)
1:164(1.1%)
15208 (100.0%) 0 (0.0%)
29 total_flu [numeric]
Mean (sd) : 2 (2.3)
min ≤ med ≤ max:
0 ≤ 1 ≤ 8
IQR (CV) : 4 (1.2)
0:6500(42.7%)
1:2012(13.2%)
2:1373(9.0%)
3:1244(8.2%)
4:1160(7.6%)
5:1058(7.0%)
6:955(6.3%)
7:899(5.9%)
8:7(0.0%)
15208 (100.0%) 0 (0.0%)
30 prevnar [numeric]
Mean (sd) : 0.3 (0.5)
min ≤ med ≤ max:
0 ≤ 0 ≤ 8
IQR (CV) : 1 (1.7)
0:10700(70.4%)
1:4235(27.8%)
2:210(1.4%)
3:32(0.2%)
4:24(0.2%)
5:4(0.0%)
6:1(0.0%)
7:1(0.0%)
8:1(0.0%)
15208 (100.0%) 0 (0.0%)
31 pvax [numeric]
Mean (sd) : 0.3 (0.5)
min ≤ med ≤ max:
0 ≤ 0 ≤ 6
IQR (CV) : 1 (1.8)
0:11222(73.8%)
1:3692(24.3%)
2:280(1.8%)
3:11(0.1%)
5:1(0.0%)
6:2(0.0%)
15208 (100.0%) 0 (0.0%)
32 any_pneum [numeric]
Mean (sd) : 0.6 (0.9)
min ≤ med ≤ max:
0 ≤ 0 ≤ 9
IQR (CV) : 1 (1.5)
0:9474(62.3%)
1:2816(18.5%)
2:2517(16.6%)
3:309(2.0%)
4:65(0.4%)
5:16(0.1%)
6:7(0.0%)
7:2(0.0%)
8:1(0.0%)
9:1(0.0%)
15208 (100.0%) 0 (0.0%)
33 total_cov_vax [numeric]
Mean (sd) : 1.4 (1.6)
min ≤ med ≤ max:
0 ≤ 0 ≤ 7
IQR (CV) : 3 (1.1)
0:7737(50.9%)
1:433(2.8%)
2:2203(14.5%)
3:3139(20.6%)
4:1487(9.8%)
5:161(1.1%)
6:39(0.3%)
7:9(0.1%)
15208 (100.0%) 0 (0.0%)
34 total_shingrix [numeric]
Mean (sd) : 0.2 (0.6)
min ≤ med ≤ max:
0 ≤ 0 ≤ 5
IQR (CV) : 0 (3.1)
0:13624(89.6%)
1:366(2.4%)
2:1115(7.3%)
3:91(0.6%)
4:10(0.1%)
5:2(0.0%)
15208 (100.0%) 0 (0.0%)
35 full_vax [character]
1. 0
2. 1
8170(53.7%)
7038(46.3%)
15208 (100.0%) 0 (0.0%)
36 vax_boost [character]
1. 0
2. 1
10373(68.2%)
4835(31.8%)
15208 (100.0%) 0 (0.0%)

Generated by summarytools 1.0.1 (R version 4.2.1)
2022-11-26

Baseline Characteristics

Total

cov_clean1 %>% 
  dplyr::select(ibd_3, age_yrs, gender, race_5, ethnic_3, lang_3, relig_affil, mstat_5, act_tob, max_ch, IC, pop_dens,r_pct, total_cov_vax, full_vax, vax_boost, RPL_THEMES, RPL_4, RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4) -> baseline
baseline %>% tbl_summary(label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", RPL_4 ~ "SVI Quartiles", r_pct ~ "Percent Republican", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", ibd_3 ~ "IBD Type", full_vax ~ "Fully Vaccinated", total_cov_vax ~ "Total COVID Vaccines", vax_boost ~ "Boosted", IC ~ "Immunocompromised"),
        statistic = list(all_continuous() ~ "{mean} ({sd})"),
        missing_text = "(Missing)")
Characteristic N = 15,2081
IBD Type
    CD 7,712 (51%)
    UC 7,345 (48%)
    Unspecified 151 (1.0%)
Age 49 (19)
Gender
    Male 6,962 (46%)
    Female 8,246 (54%)
Race
    White 13,202 (87%)
    Black 946 (6.2%)
    Asian 373 (2.5%)
    Native 56 (0.4%)
    Other 631 (4.1%)
Ethnicity
    NonHispanic 14,371 (98%)
    UNKNOWN 0 (0%)
    Hispanic 299 (2.0%)
    CHOOSE NOT TO DISCLOSE 0 (0%)
    (Missing) 538
Primary Language
    English 15,046 (99%)
    Other 162 (1.1%)
Any Religious Affiliation
    Yes 8,193 (57%)
    No 6,075 (43%)
    UNKNOWN 0 (0%)
    PATIENT REFUSED 0 (0%)
    (Missing) 940
Marital Status
    Married 6,178 (41%)
    Unknown 3,226 (21%)
    Unmarried 4,990 (33%)
    DivorcedSeparated 507 (3.3%)
    Widow 307 (2.0%)
Active Tobacco Use
    No 12,593 (87%)
    Yes 1,878 (13%)
    NOT ASKED 0 (0%)
    (Missing) 737
Charlson Comorbidity Index 3.3 (4.9)
    (Missing) 435
Immunocompromised 4,890 (62%)
    (Missing) 7,372
Population Density 2,290 (4,016)
    (Missing) 629
Percent Republican 45 (18)
    (Missing) 2,265
Total COVID Vaccines
    0 7,737 (51%)
    1 433 (2.8%)
    2 2,203 (14%)
    3 3,139 (21%)
    4 1,487 (9.8%)
    5 161 (1.1%)
    6 39 (0.3%)
    7 9 (<0.1%)
Fully Vaccinated
    0 8,170 (54%)
    1 7,038 (46%)
Boosted
    0 10,373 (68%)
    1 4,835 (32%)
Total SVI 0.37 (0.26)
    (Missing) 288
SVI Quartiles
    First 5,833 (39%)
    Second 4,492 (30%)
    Third 3,052 (20%)
    Fourth 1,543 (10%)
    (Missing) 288
Soceioeconomic Status 0.35 (0.26)
    (Missing) 338
Household Composition 0.40 (0.27)
    (Missing) 287
Minority Status and Language 0.48 (0.29)
    (Missing) 279
Housing and Transportation 0.44 (0.29)
    (Missing) 310
1 n (%); Mean (SD)

By SVI Quartile

baseline %>% 
tbl_summary(by = RPL_4,
         label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", RPL_4 ~ "SVI Quartiles", r_pct ~ "Percent Republican", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", ibd_3 ~ "IBD Type", full_vax ~ "Fully Vaccinated", total_cov_vax ~ "Total COVID Vaccines", vax_boost ~ "Boosted", IC ~ "Immunocompromised"),
        statistic = list(all_continuous() ~ "{mean} ({sd})"),
        missing_text = "(Missing)") %>% add_p()
288 observations missing `RPL_4` have been removed. To include these observations, use `forcats::fct_explicit_na()` on `RPL_4` column before passing to `tbl_summary()`.
There was an error in 'add_p()/add_difference()' for variable 'relig_affil', p-value omitted:
Error in stats::fisher.test(structure(c(2L, NA, 2L, NA, 1L, 1L, 2L, NA, : FEXACT error 6.  LDKEY=534 is too small for this problem,
  (ii := key2[itp=1059] = 45352598, ldstp=16020)
Try increasing the size of the workspace and possibly 'mult'
There was an error in 'add_p()/add_difference()' for variable 'act_tob', p-value omitted:
Error in stats::fisher.test(structure(c(1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, : FEXACT error 6.  LDKEY=533 is too small for this problem,
  (ii := key2[itp=950] = 21479782, ldstp=15990)
Try increasing the size of the workspace and possibly 'mult'
There was an error in 'add_p()/add_difference()' for variable 'total_cov_vax', p-value omitted:
Error in stats::fisher.test(c(2, 0, 1, 0, 3, 1, 3, 2, 0, 0, 0, 0, 0, 4, : FEXACT error 5.
The hash table key cannot be computed because the largest key
is larger than the largest representable int.
The algorithm cannot proceed.
Reduce the workspace, consider using 'simulate.p.value=TRUE' or another algorithm.
Characteristic First, N = 5,8331 Second, N = 4,4921 Third, N = 3,0521 Fourth, N = 1,5431 p-value2
IBD Type <0.001
    CD 2,773 (48%) 2,208 (49%) 1,658 (54%) 914 (59%)
    UC 3,009 (52%) 2,244 (50%) 1,356 (44%) 611 (40%)
    Unspecified 51 (0.9%) 40 (0.9%) 38 (1.2%) 18 (1.2%)
Age 49 (20) 50 (19) 50 (19) 48 (19) 0.008
Gender <0.001
    Male 2,756 (47%) 2,050 (46%) 1,303 (43%) 691 (45%)
    Female 3,077 (53%) 2,442 (54%) 1,749 (57%) 852 (55%)
Race <0.001
    White 5,293 (91%) 3,959 (88%) 2,619 (86%) 1,091 (71%)
    Black 139 (2.4%) 204 (4.5%) 239 (7.8%) 345 (22%)
    Asian 153 (2.6%) 140 (3.1%) 65 (2.1%) 7 (0.5%)
    Native 14 (0.2%) 24 (0.5%) 10 (0.3%) 7 (0.5%)
    Other 234 (4.0%) 165 (3.7%) 119 (3.9%) 93 (6.0%)
Ethnicity 0.010
    NonHispanic 5,517 (98%) 4,262 (98%) 2,888 (98%) 1,440 (97%)
    UNKNOWN 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    Hispanic 100 (1.8%) 86 (2.0%) 59 (2.0%) 48 (3.2%)
    CHOOSE NOT TO DISCLOSE 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    (Missing) 216 144 105 55
Primary Language <0.001
    English 5,799 (99%) 4,441 (99%) 3,009 (99%) 1,511 (98%)
    Other 34 (0.6%) 51 (1.1%) 43 (1.4%) 32 (2.1%)
Any Religious Affiliation
    Yes 3,232 (59%) 2,397 (57%) 1,651 (58%) 779 (55%)
    No 2,284 (41%) 1,810 (43%) 1,204 (42%) 642 (45%)
    UNKNOWN 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    PATIENT REFUSED 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    (Missing) 317 285 197 122
Marital Status <0.001
    Married 2,695 (46%) 1,848 (41%) 1,109 (36%) 444 (29%)
    Unknown 1,134 (19%) 943 (21%) 702 (23%) 388 (25%)
    Unmarried 1,761 (30%) 1,432 (32%) 1,039 (34%) 619 (40%)
    DivorcedSeparated 133 (2.3%) 168 (3.7%) 128 (4.2%) 72 (4.7%)
    Widow 110 (1.9%) 101 (2.2%) 74 (2.4%) 20 (1.3%)
Active Tobacco Use
    No 5,133 (91%) 3,710 (87%) 2,389 (83%) 1,120 (78%)
    Yes 478 (8.5%) 566 (13%) 501 (17%) 308 (22%)
    NOT ASKED 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    (Missing) 222 216 162 115
Charlson Comorbidity Index 3.2 (4.9) 3.4 (5.1) 3.4 (4.9) 3.3 (4.8) 0.020
    (Missing) 135 128 93 62
Immunocompromised 1,955 (61%) 1,485 (62%) 945 (64%) 505 (66%) 0.047
    (Missing) 2,634 2,100 1,572 778
Population Density 2,026 (3,289) 2,277 (5,130) 2,431 (3,595) 3,081 (3,469) <0.001
    (Missing) 55 97 116 81
Percent Republican 46 (16) 46 (18) 46 (18) 37 (21) <0.001
    (Missing) 614 829 542 263
Total COVID Vaccines
    0 2,528 (43%) 2,305 (51%) 1,706 (56%) 976 (63%)
    1 177 (3.0%) 110 (2.4%) 93 (3.0%) 46 (3.0%)
    2 868 (15%) 653 (15%) 431 (14%) 226 (15%)
    3 1,441 (25%) 893 (20%) 573 (19%) 208 (13%)
    4 712 (12%) 470 (10%) 220 (7.2%) 76 (4.9%)
    5 87 (1.5%) 45 (1.0%) 21 (0.7%) 8 (0.5%)
    6 16 (0.3%) 14 (0.3%) 5 (0.2%) 3 (0.2%)
    7 4 (<0.1%) 2 (<0.1%) 3 (<0.1%) 0 (0%)
Fully Vaccinated <0.001
    0 2,705 (46%) 2,415 (54%) 1,799 (59%) 1,022 (66%)
    1 3,128 (54%) 2,077 (46%) 1,253 (41%) 521 (34%)
Boosted <0.001
    0 3,573 (61%) 3,068 (68%) 2,230 (73%) 1,248 (81%)
    1 2,260 (39%) 1,424 (32%) 822 (27%) 295 (19%)
Total SVI 0.12 (0.07) 0.37 (0.07) 0.61 (0.07) 0.86 (0.07) <0.001
Soceioeconomic Status 0.13 (0.11) 0.34 (0.16) 0.56 (0.15) 0.78 (0.11) <0.001
    (Missing) 51 0 0 0
Household Composition 0.21 (0.14) 0.38 (0.22) 0.58 (0.24) 0.76 (0.19) <0.001
Minority Status and Language 0.41 (0.27) 0.47 (0.29) 0.52 (0.28) 0.66 (0.25) <0.001
Housing and Transportation 0.19 (0.16) 0.49 (0.20) 0.64 (0.21) 0.81 (0.17) <0.001
    (Missing) 22 0 0 0
1 n (%); Mean (SD)
2 Pearson's Chi-squared test; Kruskal-Wallis rank sum test; Fisher's exact test

Bivariate Analysis

Total # Vaccines

library(MASS)
tbl_covid_biv <-
  tbl_uvregression(
    cov_clean1[c("total_cov_vax", "ibd_3", "age_yrs", "gender", "race_5", "ethnic_3", "lang_3", "mstat_5", "relig_affil", "act_tob", "max_ch", "IC", "pop_dens", "r_pct", "RPL_THEMES", "RPL_THEME1", "RPL_THEME2", "RPL_THEME3", "RPL_THEME4")],
    method = glm.nb,
    y = total_cov_vax,
    label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"),
  exponentiate = TRUE)
print(tbl_covid_biv, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
Characteristic N IRR1 95% CI1 p-value
IBD Type 15,208
    CD
    UC 1.12 1.07, 1.17 <0.001
    Unspecified 0.65 0.51, 0.84 <0.001
Age 15,208 1.01 1.00, 1.01 <0.001
Gender 15,208
    Male
    Female 1.03 0.99, 1.08 0.2
Race 15,208
    White
    Black 0.92 0.84, 1.01 0.064
    Asian 1.39 1.22, 1.59 <0.001
    Native 0.89 0.62, 1.30 0.5
    Other 0.89 0.80, 1.00 0.049
Ethnicity 14,670
    NonHispanic
    Hispanic 1.01 0.86, 1.18 >0.9
Preferred Language 15,208
    English
    Other 0.88 0.70, 1.09 0.2
Marital Status 15,208
    Married
    Unknown 0.97 0.91, 1.02 0.3
    Unmarried 0.77 0.73, 0.81 <0.001
    DivorcedSeparated 0.82 0.73, 0.94 0.003
    Widow 0.93 0.80, 1.09 0.4
Any Religious Affiliation 14,268
    Yes
    No 0.95 0.90, 0.99 0.015
Active Tobacco Use 14,471
    No
    Yes 0.63 0.59, 0.68 <0.001
Charlson Comorbidity Index 14,773 1.02 1.02, 1.03 <0.001
Immunocompromised 7,836 1.08 1.03, 1.14 0.001
Population Density 14,579 1.00 1.00, 1.00 0.5
Percent Republican 12,943 0.99 0.99, 0.99 <0.001
Total SVI 14,920 0.50 0.46, 0.54 <0.001
Soceioeconomic Status 14,870 0.45 0.41, 0.49 <0.001
Household Composition 14,921 0.49 0.45, 0.53 <0.001
Minority Status and Language 14,929 1.29 1.20, 1.39 <0.001
Housing and Transportation 14,898 0.67 0.62, 0.72 <0.001
1 IRR = Incidence Rate Ratio, CI = Confidence Interval
NULL

Fully vaccinated

cov_clean1$full_vax = as.numeric(cov_clean1$full_vax)
tbl_full_biv <-
  tbl_uvregression(
    cov_clean1[c("full_vax", "ibd_3", "age_yrs", "gender", "race_5", "ethnic_3", "lang_3", "mstat_5", "relig_affil", "act_tob", "max_ch", "IC", "pop_dens", "r_pct", "RPL_THEMES", "RPL_THEME1", "RPL_THEME2", "RPL_THEME3", "RPL_THEME4")],
    method = glm,
    y = full_vax,
    method.args = list(family = binomial),
    label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"),
  exponentiate = TRUE)
print(tbl_full_biv, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
Characteristic N OR1 95% CI1 p-value
IBD Type 15,208
    CD
    UC 1.21 1.14, 1.29 <0.001
    Unspecified 0.56 0.39, 0.78 <0.001
Age 15,208 1.00 1.00, 1.01 <0.001
Gender 15,208
    Male
    Female 1.03 0.97, 1.10 0.3
Race 15,208
    White
    Black 0.94 0.82, 1.07 0.4
    Asian 1.88 1.52, 2.33 <0.001
    Native 0.88 0.51, 1.48 0.6
    Other 0.89 0.76, 1.05 0.2
Ethnicity 14,670
    NonHispanic
    Hispanic 1.13 0.90, 1.42 0.3
Preferred Language 15,208
    English
    Other 0.88 0.64, 1.20 0.4
Marital Status 15,208
    Married
    Unknown 1.06 0.98, 1.16 0.2
    Unmarried 0.70 0.65, 0.76 <0.001
    DivorcedSeparated 0.73 0.61, 0.88 <0.001
    Widow 0.86 0.68, 1.08 0.2
Any Religious Affiliation 14,268
    Yes
    No 0.93 0.87, 0.99 0.030
Active Tobacco Use 14,471
    No
    Yes 0.49 0.45, 0.55 <0.001
Charlson Comorbidity Index 14,773 1.03 1.02, 1.04 <0.001
Immunocompromised 7,836 1.22 1.11, 1.34 <0.001
Population Density 14,579 1.00 1.00, 1.00 >0.9
Percent Republican 12,943 0.99 0.98, 0.99 <0.001
Total SVI 14,920 0.34 0.29, 0.38 <0.001
Soceioeconomic Status 14,870 0.29 0.25, 0.33 <0.001
Household Composition 14,921 0.33 0.29, 0.37 <0.001
Minority Status and Language 14,929 1.48 1.32, 1.66 <0.001
Housing and Transportation 14,898 0.51 0.45, 0.57 <0.001
1 OR = Odds Ratio, CI = Confidence Interval
NULL

Vaccinated and Boosted

cov_clean1$vax_boost = as.numeric(cov_clean1$vax_boost)
tbl_boost_biv <-
  tbl_uvregression(
    cov_clean1[c("vax_boost", "ibd_3", "age_yrs", "gender", "race_5", "ethnic_3", "lang_3", "mstat_5", "relig_affil", "act_tob", "max_ch", "IC", "pop_dens", "r_pct", "RPL_THEMES", "RPL_THEME1", "RPL_THEME2", "RPL_THEME3", "RPL_THEME4")],
    method = glm,
    y = vax_boost,
    method.args = list(family = binomial),
    label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"),
  exponentiate = TRUE)
print(tbl_boost_biv, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
Characteristic N OR1 95% CI1 p-value
IBD Type 15,208
    CD
    UC 1.22 1.14, 1.30 <0.001
    Unspecified 0.51 0.33, 0.77 0.002
Age 15,208 1.01 1.01, 1.01 <0.001
Gender 15,208
    Male
    Female 1.07 1.00, 1.15 0.045
Race 15,208
    White
    Black 0.77 0.67, 0.90 <0.001
    Asian 1.88 1.52, 2.31 <0.001
    Native 0.78 0.42, 1.37 0.4
    Other 0.75 0.62, 0.89 0.002
Ethnicity 14,670
    NonHispanic
    Hispanic 0.87 0.67, 1.12 0.3
Preferred Language 15,208
    English
    Other 0.72 0.50, 1.02 0.076
Marital Status 15,208
    Married
    Unknown 0.84 0.76, 0.91 <0.001
    Unmarried 0.60 0.56, 0.66 <0.001
    DivorcedSeparated 0.70 0.57, 0.85 <0.001
    Widow 0.85 0.67, 1.09 0.2
Any Religious Affiliation 14,268
    Yes
    No 0.92 0.86, 0.99 0.023
Active Tobacco Use 14,471
    No
    Yes 0.48 0.43, 0.54 <0.001
Charlson Comorbidity Index 14,773 1.04 1.04, 1.05 <0.001
Immunocompromised 7,836 1.05 0.95, 1.15 0.3
Population Density 14,579 1.00 1.00, 1.00 0.7
Percent Republican 12,943 0.98 0.98, 0.99 <0.001
Total SVI 14,920 0.29 0.25, 0.33 <0.001
Soceioeconomic Status 14,870 0.24 0.20, 0.27 <0.001
Household Composition 14,921 0.28 0.24, 0.32 <0.001
Minority Status and Language 14,929 1.57 1.39, 1.77 <0.001
Housing and Transportation 14,898 0.50 0.44, 0.56 <0.001
1 OR = Odds Ratio, CI = Confidence Interval
NULL

Total COVID Count

RPL_THEMES

library(MASS)
covid.nb <- glm.nb(total_cov_vax ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_THEMES,
               data = cov_clean1) 
summary(covid.nb)

Call:
glm.nb(formula = total_cov_vax ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_THEMES, data = cov_clean1, init.theta = 3.548204585, 
    link = log)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4299  -1.5008   0.1099   0.6408   2.6741  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               7.720e-01  7.129e-02  10.829  < 2e-16 ***
ibd_3UC                   1.969e-02  2.486e-02   0.792 0.428327    
ibd_3Unspecified         -3.657e-01  1.875e-01  -1.951 0.051116 .  
age_yrs                   8.927e-03  8.028e-04  11.120  < 2e-16 ***
genderFemale              6.294e-02  2.347e-02   2.682 0.007314 ** 
race_5Black              -1.325e-01  5.037e-02  -2.630 0.008536 ** 
race_5Asian               1.862e-01  6.519e-02   2.857 0.004277 ** 
race_5Native             -1.125e-01  1.940e-01  -0.580 0.561960    
race_5Other              -1.661e-01  7.023e-02  -2.365 0.018011 *  
ethnic_3Hispanic          1.418e-01  8.136e-02   1.743 0.081323 .  
lang_3Other              -2.758e-01  1.246e-01  -2.214 0.026851 *  
relig_affilNo            -3.531e-02  2.423e-02  -1.457 0.145080    
mstat_5Unknown           -1.457e-02  3.260e-02  -0.447 0.654976    
mstat_5Unmarried         -1.308e-01  3.133e-02  -4.175 2.98e-05 ***
mstat_5DivorcedSeparated -1.689e-01  7.431e-02  -2.273 0.023021 *  
mstat_5Widow             -3.037e-01  8.973e-02  -3.385 0.000713 ***
act_tobYes               -2.449e-01  4.106e-02  -5.966 2.44e-09 ***
max_ch                    6.295e-03  2.547e-03   2.472 0.013450 *  
IC                        2.429e-01  2.653e-02   9.155  < 2e-16 ***
pop_dens                 -1.907e-05  4.220e-06  -4.520 6.19e-06 ***
r_pct                    -1.147e-02  7.647e-04 -14.996  < 2e-16 ***
RPL_THEMES               -5.464e-01  4.915e-02 -11.117  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Negative Binomial(3.5482) family taken to be 1)

    Null deviance: 9252.4  on 6407  degrees of freedom
Residual deviance: 8457.1  on 6386  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 22433

Number of Fisher Scoring iterations: 1

              Theta:  3.548 
          Std. Err.:  0.268 

 2 x log-likelihood:  -22387.315 
broom::glance(covid.nb)
broom::tidy(covid.nb, exponentiate = TRUE)
model_performance(covid.nb)
# Indices of model performance

AIC       |       BIC | Nagelkerke's R2 |  RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
22433.315 | 22588.917 |           0.153 | 1.494 | 1.151 |    -1.749 |           0.011
tbl_regression(covid.nb, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEMES ~ "Total SVI", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic IRR1 95% CI1 p-value
IBD Type
    CD
    UC 1.02 0.97, 1.07 0.4
    Unspecified 0.69 0.48, 0.99 0.051
Age 1.01 1.01, 1.01 <0.001
Gender
    Male
    Female 1.06 1.02, 1.12 0.007
Race
    White
    Black 0.88 0.79, 0.97 0.009
    Asian 1.20 1.06, 1.37 0.004
    Native 0.89 0.60, 1.30 0.6
    Other 0.85 0.74, 0.97 0.018
Ethnicity
    NonHispanic
    Hispanic 1.15 0.98, 1.35 0.081
Preferred Language
    English
    Other 0.76 0.59, 0.97 0.027
Any Religious Affiliation
    Yes
    No 0.97 0.92, 1.01 0.15
Marital Status
    Married
    Unknown 0.99 0.92, 1.05 0.7
    Unmarried 0.88 0.83, 0.93 <0.001
    DivorcedSeparated 0.84 0.73, 0.98 0.023
    Widow 0.74 0.62, 0.88 <0.001
Active Tobacco Use
    No
    Yes 0.78 0.72, 0.85 <0.001
Charlson Comorbidity Index 1.01 1.00, 1.01 0.013
Immunocompromised 1.27 1.21, 1.34 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.99 0.99, 0.99 <0.001
Total SVI 0.58 0.53, 0.64 <0.001
1 IRR = Incidence Rate Ratio, CI = Confidence Interval

# NB Residual Plot
covid.nb_res <- resid(covid.nb)
plot(fitted(covid.nb), covid.nb_res, col='steelblue', pch=16,
     xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Negative Binomial')
abline(0,0)

# NB regression more appropriate because residuals of the model are smaller 

# Likelihood ratio test 
pchisq(2 * (logLik(covid.nb) - logLik(covid.nb)), df = 1, lower.tail = FALSE)
'log Lik.' 1 (df=23)
# p-value of loglik is < 0.05 so NB regression is the more appropriate model 

RPL Quartiles

covid.nb2 <- glm.nb(total_cov_vax ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_4,
               data = cov_clean1) 
summary(covid.nb2)

Call:
glm.nb(formula = total_cov_vax ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_4, data = cov_clean1, init.theta = 3.52508281, 
    link = log)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4318  -1.5059   0.1094   0.6423   2.6415  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               7.093e-01  7.089e-02  10.006  < 2e-16 ***
ibd_3UC                   1.943e-02  2.489e-02   0.781 0.434994    
ibd_3Unspecified         -3.875e-01  1.873e-01  -2.069 0.038573 *  
age_yrs                   8.855e-03  8.039e-04  11.016  < 2e-16 ***
genderFemale              6.308e-02  2.349e-02   2.685 0.007251 ** 
race_5Black              -1.333e-01  5.051e-02  -2.639 0.008307 ** 
race_5Asian               1.849e-01  6.532e-02   2.831 0.004637 ** 
race_5Native             -1.202e-01  1.944e-01  -0.618 0.536320    
race_5Other              -1.669e-01  7.032e-02  -2.373 0.017653 *  
ethnic_3Hispanic          1.429e-01  8.141e-02   1.755 0.079216 .  
lang_3Other              -2.811e-01  1.247e-01  -2.254 0.024175 *  
relig_affilNo            -3.483e-02  2.426e-02  -1.436 0.151050    
mstat_5Unknown           -2.023e-02  3.263e-02  -0.620 0.535313    
mstat_5Unmarried         -1.351e-01  3.135e-02  -4.309 1.64e-05 ***
mstat_5DivorcedSeparated -1.788e-01  7.439e-02  -2.403 0.016254 *  
mstat_5Widow             -3.097e-01  8.987e-02  -3.446 0.000569 ***
act_tobYes               -2.501e-01  4.106e-02  -6.092 1.11e-09 ***
max_ch                    6.268e-03  2.550e-03   2.458 0.013991 *  
IC                        2.408e-01  2.656e-02   9.064  < 2e-16 ***
pop_dens                 -1.987e-05  4.273e-06  -4.651 3.30e-06 ***
r_pct                    -1.155e-02  7.690e-04 -15.025  < 2e-16 ***
RPL_4Second              -1.166e-01  2.751e-02  -4.238 2.25e-05 ***
RPL_4Third               -1.922e-01  3.332e-02  -5.768 8.03e-09 ***
RPL_4Fourth              -4.854e-01  4.850e-02 -10.008  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Negative Binomial(3.5251) family taken to be 1)

    Null deviance: 9238.6  on 6407  degrees of freedom
Residual deviance: 8452.2  on 6384  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 22445

Number of Fisher Scoring iterations: 1

              Theta:  3.525 
          Std. Err.:  0.265 

 2 x log-likelihood:  -22394.573 
broom::glance(covid.nb2)
broom::tidy(covid.nb2, exponentiate = TRUE)
model_performance(covid.nb2)
# Indices of model performance

AIC       |       BIC | Nagelkerke's R2 |  RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
22444.573 | 22613.705 |           0.151 | 1.495 | 1.151 |    -1.750 |           0.011
tbl_regression(covid.nb2, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_4 ~ "SVI Quartile", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic IRR1 95% CI1 p-value
IBD Type
    CD
    UC 1.02 0.97, 1.07 0.4
    Unspecified 0.68 0.47, 0.97 0.039
Age 1.01 1.01, 1.01 <0.001
Gender
    Male
    Female 1.07 1.02, 1.12 0.007
Race
    White
    Black 0.88 0.79, 0.97 0.008
    Asian 1.20 1.06, 1.37 0.005
    Native 0.89 0.60, 1.29 0.5
    Other 0.85 0.74, 0.97 0.018
Ethnicity
    NonHispanic
    Hispanic 1.15 0.98, 1.35 0.079
Preferred Language
    English
    Other 0.75 0.59, 0.96 0.024
Any Religious Affiliation
    Yes
    No 0.97 0.92, 1.01 0.2
Marital Status
    Married
    Unknown 0.98 0.92, 1.04 0.5
    Unmarried 0.87 0.82, 0.93 <0.001
    DivorcedSeparated 0.84 0.72, 0.97 0.016
    Widow 0.73 0.61, 0.87 <0.001
Active Tobacco Use
    No
    Yes 0.78 0.72, 0.84 <0.001
Charlson Comorbidity Index 1.01 1.00, 1.01 0.014
Immunocompromised 1.27 1.21, 1.34 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.99 0.99, 0.99 <0.001
SVI Quartile
    First
    Second 0.89 0.84, 0.94 <0.001
    Third 0.83 0.77, 0.88 <0.001
    Fourth 0.62 0.56, 0.68 <0.001
1 IRR = Incidence Rate Ratio, CI = Confidence Interval

performance::check_model(covid.nb2, panel = TRUE)

All Themes

covid.nb3 <- glm.nb(total_cov_vax ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_THEME1
                    + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
               data = cov_clean1) 
summary(covid.nb3)

Call:
glm.nb(formula = total_cov_vax ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + 
    RPL_THEME4, data = cov_clean1, init.theta = 3.657749848, 
    link = log)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4678  -1.4941   0.1070   0.6436   2.5832  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               6.666e-01  8.418e-02   7.919 2.40e-15 ***
ibd_3UC                   1.856e-02  2.475e-02   0.750 0.453251    
ibd_3Unspecified         -3.611e-01  1.866e-01  -1.935 0.052960 .  
age_yrs                   9.042e-03  7.992e-04  11.313  < 2e-16 ***
genderFemale              6.357e-02  2.336e-02   2.722 0.006498 ** 
race_5Black              -1.159e-01  5.049e-02  -2.296 0.021667 *  
race_5Asian               1.439e-01  6.535e-02   2.202 0.027641 *  
race_5Native             -1.094e-01  1.933e-01  -0.566 0.571450    
race_5Other              -1.773e-01  6.996e-02  -2.534 0.011276 *  
ethnic_3Hispanic          1.338e-01  8.095e-02   1.653 0.098360 .  
lang_3Other              -3.013e-01  1.241e-01  -2.428 0.015189 *  
relig_affilNo            -3.035e-02  2.418e-02  -1.255 0.209449    
mstat_5Unknown           -1.385e-02  3.246e-02  -0.427 0.669602    
mstat_5Unmarried         -1.293e-01  3.120e-02  -4.143 3.43e-05 ***
mstat_5DivorcedSeparated -1.659e-01  7.405e-02  -2.240 0.025091 *  
mstat_5Widow             -3.060e-01  8.933e-02  -3.426 0.000612 ***
act_tobYes               -2.431e-01  4.095e-02  -5.937 2.90e-09 ***
max_ch                    6.320e-03  2.534e-03   2.494 0.012635 *  
IC                        2.398e-01  2.643e-02   9.073  < 2e-16 ***
pop_dens                 -1.720e-05  4.214e-06  -4.082 4.47e-05 ***
r_pct                    -8.970e-03  9.082e-04  -9.876  < 2e-16 ***
RPL_THEME1               -3.124e-01  6.890e-02  -4.534 5.77e-06 ***
RPL_THEME2               -2.809e-01  6.062e-02  -4.634 3.59e-06 ***
RPL_THEME3                9.481e-02  4.857e-02   1.952 0.050917 .  
RPL_THEME4               -1.119e-01  5.126e-02  -2.183 0.029047 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Negative Binomial(3.6577) family taken to be 1)

    Null deviance: 9316.3  on 6407  degrees of freedom
Residual deviance: 8476.5  on 6383  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 22403

Number of Fisher Scoring iterations: 1

              Theta:  3.658 
          Std. Err.:  0.282 

 2 x log-likelihood:  -22350.673 
broom::glance(covid.nb3)
broom::tidy(covid.nb3, exponentiate = TRUE)
model_performance(covid.nb3)
# Indices of model performance

AIC       |       BIC | Nagelkerke's R2 |  RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
22402.673 | 22578.570 |           0.160 | 1.490 | 1.152 |    -1.746 |           0.011
tbl_regression(covid.nb3, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic IRR1 95% CI1 p-value
IBD Type
    CD
    UC 1.02 0.97, 1.07 0.5
    Unspecified 0.70 0.48, 0.99 0.053
Age 1.01 1.01, 1.01 <0.001
Gender
    Male
    Female 1.07 1.02, 1.12 0.006
Race
    White
    Black 0.89 0.81, 0.98 0.022
    Asian 1.15 1.02, 1.31 0.028
    Native 0.90 0.61, 1.30 0.6
    Other 0.84 0.73, 0.96 0.011
Ethnicity
    NonHispanic
    Hispanic 1.14 0.97, 1.34 0.10
Preferred Language
    English
    Other 0.74 0.58, 0.94 0.015
Any Religious Affiliation
    Yes
    No 0.97 0.93, 1.02 0.2
Marital Status
    Married
    Unknown 0.99 0.93, 1.05 0.7
    Unmarried 0.88 0.83, 0.93 <0.001
    DivorcedSeparated 0.85 0.73, 0.98 0.025
    Widow 0.74 0.62, 0.88 <0.001
Active Tobacco Use
    No
    Yes 0.78 0.72, 0.85 <0.001
Charlson Comorbidity Index 1.01 1.00, 1.01 0.013
Immunocompromised 1.27 1.21, 1.34 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.99 0.99, 0.99 <0.001
Soceioeconomic Status 0.73 0.64, 0.84 <0.001
Household Composition 0.76 0.67, 0.85 <0.001
Minority Status and Language 1.10 1.00, 1.21 0.051
Housing and Transportation 0.89 0.81, 0.99 0.029
1 IRR = Incidence Rate Ratio, CI = Confidence Interval

performance::check_model(covid.nb3, panel = TRUE)

Fully Vaccinated (not boosted)

RPL_THEMES

covid_full1 <- glm(full_vax ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_THEMES,
                   family = binomial, 
               data = cov_clean1) 
summary(covid_full1)

Call:
glm(formula = full_vax ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_THEMES, family = binomial, data = cov_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.1418  -1.1789   0.7476   1.0035   1.9422  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               9.145e-01  1.670e-01   5.475 4.37e-08 ***
ibd_3UC                   6.304e-02  5.712e-02   1.104  0.26979    
ibd_3Unspecified         -5.118e-01  3.630e-01  -1.410  0.15853    
age_yrs                   1.518e-02  1.887e-03   8.045 8.64e-16 ***
genderFemale              1.052e-01  5.349e-02   1.967  0.04919 *  
race_5Black              -2.032e-01  1.109e-01  -1.833  0.06687 .  
race_5Asian               3.832e-01  1.739e-01   2.204  0.02755 *  
race_5Native             -5.743e-02  4.433e-01  -0.130  0.89693    
race_5Other              -2.500e-01  1.519e-01  -1.646  0.09983 .  
ethnic_3Hispanic          3.933e-01  1.917e-01   2.052  0.04015 *  
lang_3Other              -3.785e-01  2.639e-01  -1.434  0.15149    
relig_affilNo            -6.067e-02  5.473e-02  -1.109  0.26757    
mstat_5Unknown            2.030e-03  7.665e-02   0.026  0.97887    
mstat_5Unmarried         -3.017e-01  7.200e-02  -4.190 2.80e-05 ***
mstat_5DivorcedSeparated -3.540e-01  1.631e-01  -2.170  0.02999 *  
mstat_5Widow             -5.988e-01  2.099e-01  -2.853  0.00433 ** 
act_tobYes               -4.413e-01  8.375e-02  -5.269 1.37e-07 ***
max_ch                    4.787e-03  6.173e-03   0.775  0.43812    
IC                        5.131e-01  6.091e-02   8.425  < 2e-16 ***
pop_dens                 -3.893e-05  9.402e-06  -4.140 3.47e-05 ***
r_pct                    -2.194e-02  1.835e-03 -11.956  < 2e-16 ***
RPL_THEMES               -1.073e+00  1.086e-01  -9.883  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 8699.1  on 6407  degrees of freedom
Residual deviance: 8171.1  on 6386  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 8215.1

Number of Fisher Scoring iterations: 4
broom::glance(covid_full1)
broom::tidy(covid_full1, exponentiate = TRUE)
model_performance(covid_full1)
# Indices of model performance

AIC      |      BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
------------------------------------------------------------------------------------------------
8215.095 | 8363.932 |     0.080 | 0.473 | 1.131 |    0.638 |      -Inf |       1.561e-04 | 0.553
tbl_regression(covid_full1, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEMES ~ "Total SVI", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
IBD Type
    CD
    UC 1.07 0.95, 1.19 0.3
    Unspecified 0.60 0.29, 1.21 0.2
Age 1.02 1.01, 1.02 <0.001
Gender
    Male
    Female 1.11 1.00, 1.23 0.049
Race
    White
    Black 0.82 0.66, 1.01 0.067
    Asian 1.47 1.05, 2.08 0.028
    Native 0.94 0.40, 2.31 0.9
    Other 0.78 0.58, 1.05 0.10
Ethnicity
    NonHispanic
    Hispanic 1.48 1.02, 2.17 0.040
Preferred Language
    English
    Other 0.68 0.41, 1.15 0.2
Any Religious Affiliation
    Yes
    No 0.94 0.85, 1.05 0.3
Marital Status
    Married
    Unknown 1.00 0.86, 1.16 >0.9
    Unmarried 0.74 0.64, 0.85 <0.001
    DivorcedSeparated 0.70 0.51, 0.97 0.030
    Widow 0.55 0.37, 0.83 0.004
Active Tobacco Use
    No
    Yes 0.64 0.55, 0.76 <0.001
Charlson Comorbidity Index 1.00 0.99, 1.02 0.4
Immunocompromised 1.67 1.48, 1.88 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.98 0.97, 0.98 <0.001
Total SVI 0.34 0.28, 0.42 <0.001
1 OR = Odds Ratio, CI = Confidence Interval

performance::check_model(covid_full1, panel = TRUE)

RPL Quartiles

covid_full2 <- glm(full_vax ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_4,
                   family = binomial,
               data = cov_clean1) 
summary(covid_full2)

Call:
glm(formula = full_vax ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_4, family = binomial, data = cov_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.1193  -1.1818   0.7524   1.0029   1.9417  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               7.899e-01  1.657e-01   4.767 1.87e-06 ***
ibd_3UC                   6.396e-02  5.712e-02   1.120 0.262834    
ibd_3Unspecified         -5.670e-01  3.613e-01  -1.569 0.116565    
age_yrs                   1.501e-02  1.885e-03   7.960 1.72e-15 ***
genderFemale              1.054e-01  5.346e-02   1.972 0.048603 *  
race_5Black              -2.110e-01  1.114e-01  -1.895 0.058080 .  
race_5Asian               3.818e-01  1.736e-01   2.200 0.027842 *  
race_5Native             -6.175e-02  4.435e-01  -0.139 0.889266    
race_5Other              -2.485e-01  1.520e-01  -1.634 0.102215    
ethnic_3Hispanic          3.878e-01  1.916e-01   2.024 0.043007 *  
lang_3Other              -3.945e-01  2.642e-01  -1.493 0.135480    
relig_affilNo            -6.054e-02  5.469e-02  -1.107 0.268331    
mstat_5Unknown           -9.157e-03  7.656e-02  -0.120 0.904804    
mstat_5Unmarried         -3.087e-01  7.199e-02  -4.288 1.80e-05 ***
mstat_5DivorcedSeparated -3.705e-01  1.631e-01  -2.271 0.023138 *  
mstat_5Widow             -6.093e-01  2.094e-01  -2.909 0.003625 ** 
act_tobYes               -4.539e-01  8.365e-02  -5.427 5.74e-08 ***
max_ch                    4.689e-03  6.168e-03   0.760 0.447171    
IC                        5.083e-01  6.084e-02   8.354  < 2e-16 ***
pop_dens                 -4.037e-05  9.563e-06  -4.221 2.43e-05 ***
r_pct                    -2.214e-02  1.847e-03 -11.985  < 2e-16 ***
RPL_4Second              -2.400e-01  6.373e-02  -3.766 0.000166 ***
RPL_4Third               -3.728e-01  7.434e-02  -5.015 5.31e-07 ***
RPL_4Fourth              -9.052e-01  9.991e-02  -9.060  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 8699.1  on 6407  degrees of freedom
Residual deviance: 8179.2  on 6384  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 8227.2

Number of Fisher Scoring iterations: 4
broom::glance(covid_full2)
broom::tidy(covid_full2, exponentiate = TRUE)
model_performance(covid_full2)
# Indices of model performance

AIC      |      BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
------------------------------------------------------------------------------------------------
8227.235 | 8389.602 |     0.079 | 0.473 | 1.132 |    0.638 |      -Inf |       1.561e-04 | 0.553
tbl_regression(covid_full2, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_4 ~ "SVI Quartile", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
IBD Type
    CD
    UC 1.07 0.95, 1.19 0.3
    Unspecified 0.57 0.27, 1.14 0.12
Age 1.02 1.01, 1.02 <0.001
Gender
    Male
    Female 1.11 1.00, 1.23 0.049
Race
    White
    Black 0.81 0.65, 1.01 0.058
    Asian 1.46 1.05, 2.07 0.028
    Native 0.94 0.40, 2.30 0.9
    Other 0.78 0.58, 1.05 0.10
Ethnicity
    NonHispanic
    Hispanic 1.47 1.02, 2.16 0.043
Preferred Language
    English
    Other 0.67 0.40, 1.14 0.14
Any Religious Affiliation
    Yes
    No 0.94 0.85, 1.05 0.3
Marital Status
    Married
    Unknown 0.99 0.85, 1.15 >0.9
    Unmarried 0.73 0.64, 0.85 <0.001
    DivorcedSeparated 0.69 0.50, 0.95 0.023
    Widow 0.54 0.36, 0.82 0.004
Active Tobacco Use
    No
    Yes 0.64 0.54, 0.75 <0.001
Charlson Comorbidity Index 1.00 0.99, 1.02 0.4
Immunocompromised 1.66 1.48, 1.87 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.98 0.97, 0.98 <0.001
SVI Quartile
    First
    Second 0.79 0.69, 0.89 <0.001
    Third 0.69 0.60, 0.80 <0.001
    Fourth 0.40 0.33, 0.49 <0.001
1 OR = Odds Ratio, CI = Confidence Interval

performance::check_model(covid_full2, panel = TRUE)

All Themes

covid_full3 <- glm(full_vax ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_THEME1
                    + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
                   family = binomial,
               data = cov_clean1) 
summary(covid_full3)

Call:
glm(formula = full_vax ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + 
    RPL_THEME4, family = binomial, data = cov_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.1437  -1.1726   0.7356   1.0027   2.0060  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               7.210e-01  1.961e-01   3.676 0.000237 ***
ibd_3UC                   6.074e-02  5.727e-02   1.061 0.288857    
ibd_3Unspecified         -5.166e-01  3.620e-01  -1.427 0.153537    
age_yrs                   1.549e-02  1.893e-03   8.180 2.83e-16 ***
genderFemale              1.064e-01  5.361e-02   1.985 0.047101 *  
race_5Black              -1.787e-01  1.121e-01  -1.595 0.110816    
race_5Asian               3.010e-01  1.753e-01   1.717 0.086028 .  
race_5Native             -4.370e-02  4.454e-01  -0.098 0.921828    
race_5Other              -2.706e-01  1.524e-01  -1.775 0.075895 .  
ethnic_3Hispanic          3.810e-01  1.924e-01   1.980 0.047649 *  
lang_3Other              -4.356e-01  2.645e-01  -1.647 0.099600 .  
relig_affilNo            -4.872e-02  5.498e-02  -0.886 0.375477    
mstat_5Unknown            3.397e-03  7.683e-02   0.044 0.964737    
mstat_5Unmarried         -2.969e-01  7.222e-02  -4.111 3.94e-05 ***
mstat_5DivorcedSeparated -3.465e-01  1.635e-01  -2.119 0.034060 *  
mstat_5Widow             -6.048e-01  2.102e-01  -2.877 0.004013 ** 
act_tobYes               -4.415e-01  8.403e-02  -5.254 1.49e-07 ***
max_ch                    5.012e-03  6.191e-03   0.810 0.418151    
IC                        5.090e-01  6.107e-02   8.335  < 2e-16 ***
pop_dens                 -3.617e-05  9.460e-06  -3.823 0.000132 ***
r_pct                    -1.741e-02  2.136e-03  -8.151 3.60e-16 ***
RPL_THEME1               -5.884e-01  1.559e-01  -3.774 0.000160 ***
RPL_THEME2               -5.110e-01  1.359e-01  -3.760 0.000170 ***
RPL_THEME3                1.946e-01  1.118e-01   1.741 0.081619 .  
RPL_THEME4               -2.742e-01  1.156e-01  -2.372 0.017695 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 8699.1  on 6407  degrees of freedom
Residual deviance: 8143.8  on 6383  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 8193.8

Number of Fisher Scoring iterations: 4
broom::glance(covid_full3)
broom::tidy(covid_full3, exponentiate = TRUE)
model_performance(covid_full3)
# Indices of model performance

AIC      |      BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
------------------------------------------------------------------------------------------------
8193.803 | 8362.936 |     0.084 | 0.472 | 1.130 |    0.635 |      -Inf |       1.561e-04 | 0.555
tbl_regression(covid_full3, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
IBD Type
    CD
    UC 1.06 0.95, 1.19 0.3
    Unspecified 0.60 0.29, 1.20 0.2
Age 1.02 1.01, 1.02 <0.001
Gender
    Male
    Female 1.11 1.00, 1.24 0.047
Race
    White
    Black 0.84 0.67, 1.04 0.11
    Asian 1.35 0.96, 1.92 0.086
    Native 0.96 0.40, 2.35 >0.9
    Other 0.76 0.57, 1.03 0.076
Ethnicity
    NonHispanic
    Hispanic 1.46 1.01, 2.15 0.048
Preferred Language
    English
    Other 0.65 0.39, 1.09 0.10
Any Religious Affiliation
    Yes
    No 0.95 0.86, 1.06 0.4
Marital Status
    Married
    Unknown 1.00 0.86, 1.17 >0.9
    Unmarried 0.74 0.65, 0.86 <0.001
    DivorcedSeparated 0.71 0.51, 0.98 0.034
    Widow 0.55 0.36, 0.83 0.004
Active Tobacco Use
    No
    Yes 0.64 0.55, 0.76 <0.001
Charlson Comorbidity Index 1.01 0.99, 1.02 0.4
Immunocompromised 1.66 1.48, 1.88 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.98 0.98, 0.99 <0.001
Soceioeconomic Status 0.56 0.41, 0.75 <0.001
Household Composition 0.60 0.46, 0.78 <0.001
Minority Status and Language 1.21 0.98, 1.51 0.082
Housing and Transportation 0.76 0.61, 0.95 0.018
1 OR = Odds Ratio, CI = Confidence Interval

performance::check_model(covid_full3, panel = TRUE)

Fully vaccinated and boosted

RPL_Themes

boosted1 <- glm(vax_boost ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_THEMES,
                   family = binomial, 
               data = cov_clean1) 
summary(boosted1)

Call:
glm(formula = vax_boost ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_THEMES, family = binomial, data = cov_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0622  -0.9766  -0.6725   1.1275   2.5576  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               2.507e-01  1.706e-01   1.470 0.141574    
ibd_3UC                   9.039e-03  5.813e-02   0.156 0.876421    
ibd_3Unspecified         -8.686e-01  4.475e-01  -1.941 0.052226 .  
age_yrs                   2.171e-02  1.913e-03  11.347  < 2e-16 ***
genderFemale              1.700e-01  5.475e-02   3.106 0.001898 ** 
race_5Black              -4.871e-01  1.171e-01  -4.158 3.21e-05 ***
race_5Asian               5.447e-01  1.641e-01   3.321 0.000898 ***
race_5Native             -5.242e-01  4.737e-01  -1.106 0.268511    
race_5Other              -4.609e-01  1.634e-01  -2.820 0.004799 ** 
ethnic_3Hispanic          1.426e-01  1.945e-01   0.733 0.463397    
lang_3Other              -1.008e+00  3.073e-01  -3.281 0.001034 ** 
relig_affilNo            -3.798e-02  5.626e-02  -0.675 0.499659    
mstat_5Unknown           -1.059e-01  7.636e-02  -1.386 0.165599    
mstat_5Unmarried         -2.985e-01  7.281e-02  -4.099 4.15e-05 ***
mstat_5DivorcedSeparated -3.212e-01  1.680e-01  -1.912 0.055843 .  
mstat_5Widow             -7.817e-01  2.112e-01  -3.702 0.000214 ***
act_tobYes               -4.862e-01  9.276e-02  -5.241 1.60e-07 ***
max_ch                    1.380e-02  6.099e-03   2.263 0.023611 *  
IC                        4.306e-01  6.227e-02   6.916 4.66e-12 ***
pop_dens                 -4.768e-05  1.147e-05  -4.156 3.24e-05 ***
r_pct                    -2.821e-02  1.912e-03 -14.759  < 2e-16 ***
RPL_THEMES               -1.176e+00  1.139e-01 -10.320  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 8685.2  on 6407  degrees of freedom
Residual deviance: 7902.4  on 6386  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 7946.4

Number of Fisher Scoring iterations: 4
broom::glance(boosted1)
broom::tidy(boosted1, exponentiate = TRUE)
model_performance(boosted1)
# Indices of model performance

AIC      |      BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
------------------------------------------------------------------------------------------------
7946.426 | 8095.262 |     0.116 | 0.463 | 1.112 |    0.617 |      -Inf |       1.561e-04 | 0.572
tbl_regression(boosted1, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEMES ~ "Total SVI", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
IBD Type
    CD
    UC 1.01 0.90, 1.13 0.9
    Unspecified 0.42 0.16, 0.96 0.052
Age 1.02 1.02, 1.03 <0.001
Gender
    Male
    Female 1.19 1.06, 1.32 0.002
Race
    White
    Black 0.61 0.49, 0.77 <0.001
    Asian 1.72 1.25, 2.38 <0.001
    Native 0.59 0.22, 1.46 0.3
    Other 0.63 0.46, 0.87 0.005
Ethnicity
    NonHispanic
    Hispanic 1.15 0.78, 1.68 0.5
Preferred Language
    English
    Other 0.36 0.19, 0.65 0.001
Any Religious Affiliation
    Yes
    No 0.96 0.86, 1.07 0.5
Marital Status
    Married
    Unknown 0.90 0.77, 1.04 0.2
    Unmarried 0.74 0.64, 0.86 <0.001
    DivorcedSeparated 0.73 0.52, 1.01 0.056
    Widow 0.46 0.30, 0.69 <0.001
Active Tobacco Use
    No
    Yes 0.61 0.51, 0.74 <0.001
Charlson Comorbidity Index 1.01 1.00, 1.03 0.024
Immunocompromised 1.54 1.36, 1.74 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.97 0.97, 0.98 <0.001
Total SVI 0.31 0.25, 0.39 <0.001
1 OR = Odds Ratio, CI = Confidence Interval

performance::check_model(boosted1, panel = TRUE)

RPL Quartiles

covid_boost2 <- glm(vax_boost ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_4,
                   family = binomial,
               data = cov_clean1) 
summary(covid_boost2)

Call:
glm(formula = vax_boost ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_4, family = binomial, data = cov_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0159  -0.9801  -0.6705   1.1221   2.5547  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               1.342e-01  1.696e-01   0.791 0.428879    
ibd_3UC                   1.063e-02  5.813e-02   0.183 0.854887    
ibd_3Unspecified         -9.189e-01  4.452e-01  -2.064 0.039009 *  
age_yrs                   2.155e-02  1.912e-03  11.271  < 2e-16 ***
genderFemale              1.699e-01  5.473e-02   3.104 0.001907 ** 
race_5Black              -4.944e-01  1.176e-01  -4.206 2.60e-05 ***
race_5Asian               5.461e-01  1.638e-01   3.333 0.000858 ***
race_5Native             -5.297e-01  4.752e-01  -1.115 0.265052    
race_5Other              -4.655e-01  1.635e-01  -2.846 0.004421 ** 
ethnic_3Hispanic          1.387e-01  1.945e-01   0.713 0.475943    
lang_3Other              -1.022e+00  3.074e-01  -3.326 0.000880 ***
relig_affilNo            -3.728e-02  5.624e-02  -0.663 0.507443    
mstat_5Unknown           -1.149e-01  7.630e-02  -1.506 0.131995    
mstat_5Unmarried         -3.054e-01  7.278e-02  -4.196 2.72e-05 ***
mstat_5DivorcedSeparated -3.358e-01  1.680e-01  -1.999 0.045641 *  
mstat_5Widow             -7.909e-01  2.106e-01  -3.755 0.000173 ***
act_tobYes               -4.968e-01  9.267e-02  -5.361 8.27e-08 ***
max_ch                    1.382e-02  6.095e-03   2.268 0.023320 *  
IC                        4.258e-01  6.222e-02   6.844 7.69e-12 ***
pop_dens                 -4.961e-05  1.164e-05  -4.262 2.03e-05 ***
r_pct                    -2.842e-02  1.924e-03 -14.777  < 2e-16 ***
RPL_4Second              -3.148e-01  6.437e-02  -4.891 1.00e-06 ***
RPL_4Third               -4.319e-01  7.682e-02  -5.622 1.89e-08 ***
RPL_4Fourth              -1.028e+00  1.112e-01  -9.249  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 8685.2  on 6407  degrees of freedom
Residual deviance: 7906.1  on 6384  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 7954.1

Number of Fisher Scoring iterations: 4
broom::glance(covid_boost2)
broom::tidy(covid_boost2, exponentiate = TRUE)
model_performance(covid_boost2)
# Indices of model performance

AIC      |      BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
------------------------------------------------------------------------------------------------
7954.124 | 8116.491 |     0.116 | 0.463 | 1.113 |    0.617 |      -Inf |       1.561e-04 | 0.571
tbl_regression(covid_boost2, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_4 ~ "SVI Quartile", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
IBD Type
    CD
    UC 1.01 0.90, 1.13 0.9
    Unspecified 0.40 0.15, 0.91 0.039
Age 1.02 1.02, 1.03 <0.001
Gender
    Male
    Female 1.19 1.06, 1.32 0.002
Race
    White
    Black 0.61 0.48, 0.77 <0.001
    Asian 1.73 1.25, 2.39 <0.001
    Native 0.59 0.22, 1.46 0.3
    Other 0.63 0.45, 0.86 0.004
Ethnicity
    NonHispanic
    Hispanic 1.15 0.78, 1.68 0.5
Preferred Language
    English
    Other 0.36 0.19, 0.64 <0.001
Any Religious Affiliation
    Yes
    No 0.96 0.86, 1.08 0.5
Marital Status
    Married
    Unknown 0.89 0.77, 1.04 0.13
    Unmarried 0.74 0.64, 0.85 <0.001
    DivorcedSeparated 0.71 0.51, 0.99 0.046
    Widow 0.45 0.30, 0.68 <0.001
Active Tobacco Use
    No
    Yes 0.61 0.51, 0.73 <0.001
Charlson Comorbidity Index 1.01 1.00, 1.03 0.023
Immunocompromised 1.53 1.36, 1.73 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.97 0.97, 0.98 <0.001
SVI Quartile
    First
    Second 0.73 0.64, 0.83 <0.001
    Third 0.65 0.56, 0.75 <0.001
    Fourth 0.36 0.29, 0.44 <0.001
1 OR = Odds Ratio, CI = Confidence Interval

performance::check_model(covid_boost2, panel = TRUE)

All themes

boost3 <- glm(vax_boost ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + IC + pop_dens + r_pct + RPL_THEME1
                    + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
                   family = binomial,
               data = cov_clean1) 
summary(boost3)

Call:
glm(formula = vax_boost ~ ibd_3 + age_yrs + gender + race_5 + 
    ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + 
    IC + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + 
    RPL_THEME4, family = binomial, data = cov_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0596  -0.9724  -0.6616   1.1233   2.6140  

Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
(Intercept)               1.472e-02  2.014e-01   0.073 0.941732    
ibd_3UC                   5.886e-03  5.830e-02   0.101 0.919587    
ibd_3Unspecified         -8.623e-01  4.457e-01  -1.935 0.053041 .  
age_yrs                   2.208e-02  1.921e-03  11.495  < 2e-16 ***
genderFemale              1.716e-01  5.489e-02   3.127 0.001767 ** 
race_5Black              -4.555e-01  1.180e-01  -3.859 0.000114 ***
race_5Asian               4.533e-01  1.654e-01   2.741 0.006123 ** 
race_5Native             -5.205e-01  4.763e-01  -1.093 0.274530    
race_5Other              -4.859e-01  1.641e-01  -2.962 0.003056 ** 
ethnic_3Hispanic          1.245e-01  1.952e-01   0.638 0.523597    
lang_3Other              -1.068e+00  3.075e-01  -3.472 0.000516 ***
relig_affilNo            -2.475e-02  5.655e-02  -0.438 0.661634    
mstat_5Unknown           -1.033e-01  7.658e-02  -1.348 0.177558    
mstat_5Unmarried         -2.932e-01  7.305e-02  -4.013 5.99e-05 ***
mstat_5DivorcedSeparated -3.114e-01  1.684e-01  -1.849 0.064478 .  
mstat_5Widow             -7.868e-01  2.113e-01  -3.724 0.000196 ***
act_tobYes               -4.855e-01  9.303e-02  -5.218 1.81e-07 ***
max_ch                    1.398e-02  6.118e-03   2.284 0.022344 *  
IC                        4.254e-01  6.246e-02   6.811 9.67e-12 ***
pop_dens                 -4.315e-05  1.163e-05  -3.710 0.000208 ***
r_pct                    -2.300e-02  2.223e-03 -10.347  < 2e-16 ***
RPL_THEME1               -6.717e-01  1.625e-01  -4.134 3.57e-05 ***
RPL_THEME2               -5.733e-01  1.410e-01  -4.066 4.79e-05 ***
RPL_THEME3                2.130e-01  1.138e-01   1.872 0.061252 .  
RPL_THEME4               -2.555e-01  1.199e-01  -2.132 0.033009 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 8685.2  on 6407  degrees of freedom
Residual deviance: 7873.2  on 6383  degrees of freedom
  (8800 observations deleted due to missingness)
AIC: 7923.2

Number of Fisher Scoring iterations: 4
broom::glance(boost3)
broom::tidy(boost3, exponentiate = TRUE)
model_performance(boost3)
# Indices of model performance

AIC      |      BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
------------------------------------------------------------------------------------------------
7923.178 | 8092.310 |     0.120 | 0.462 | 1.111 |    0.614 |      -Inf |       1.561e-04 | 0.574
tbl_regression(boost3, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", race_5 ~ "Race", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", r_pct ~ "Percent Republican", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", IC ~ "Immunocompromised", ibd_3 ~ "IBD Type"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
IBD Type
    CD
    UC 1.01 0.90, 1.13 >0.9
    Unspecified 0.42 0.16, 0.96 0.053
Age 1.02 1.02, 1.03 <0.001
Gender
    Male
    Female 1.19 1.07, 1.32 0.002
Race
    White
    Black 0.63 0.50, 0.80 <0.001
    Asian 1.57 1.14, 2.18 0.006
    Native 0.59 0.22, 1.48 0.3
    Other 0.62 0.44, 0.85 0.003
Ethnicity
    NonHispanic
    Hispanic 1.13 0.77, 1.66 0.5
Preferred Language
    English
    Other 0.34 0.18, 0.62 <0.001
Any Religious Affiliation
    Yes
    No 0.98 0.87, 1.09 0.7
Marital Status
    Married
    Unknown 0.90 0.78, 1.05 0.2
    Unmarried 0.75 0.65, 0.86 <0.001
    DivorcedSeparated 0.73 0.52, 1.02 0.064
    Widow 0.46 0.30, 0.69 <0.001
Active Tobacco Use
    No
    Yes 0.62 0.51, 0.74 <0.001
Charlson Comorbidity Index 1.01 1.00, 1.03 0.022
Immunocompromised 1.53 1.35, 1.73 <0.001
Population Density 1.00 1.00, 1.00 <0.001
Percent Republican 0.98 0.97, 0.98 <0.001
Soceioeconomic Status 0.51 0.37, 0.70 <0.001
Household Composition 0.56 0.43, 0.74 <0.001
Minority Status and Language 1.24 0.99, 1.55 0.061
Housing and Transportation 0.77 0.61, 0.98 0.033
1 OR = Odds Ratio, CI = Confidence Interval

performance::check_model(boost3, panel = TRUE)

Mediation Analysis

Fully vaccinated

cov_clean1 %>% 
mutate(black = as_factor(race_5),
         black = fct_recode(black, No = "Other",
                  No = "Asian",
                  No = "White", Yes = "Black",
                  No = "Native"),
         black = fct_relevel(black, ref = 'No')) -> race_dich

race_dich$black<-ifelse(race_dich$black=="Yes",1,0)

race_dich %>% 
  mutate(svi_2 = case_when(RPL_THEMES>= 0.5 ~ '1',TRUE ~ "0")) ->  themes_dich

themes_dich$svi_2 = as.numeric(themes_dich$svi_2)

#Step 1: Is there a relationship between X(race) and Y(flu vaccine). Yes - black and other patients were less likely to receive the flu vaccine than Asian and white patients
boosted.0 <- glm(vax_boost ~ ibd_3 + age_yrs + gender + black + ethnic_3 + lang_3 +
                   mstat_5+ relig_affil + max_ch + IC + pop_dens + r_pct + svi_2,
                 family = binomial, data = themes_dich)

# Step 2: Is there a relationship between the mediator (SVI) and race? Yes, patients with higher SVI were more likely to be black 
booted.M <- glm(svi_2 ~ ibd_3 + age_yrs + gender + black + ethnic_3 + lang_3 +
                   mstat_5+ relig_affil + max_ch + IC + pop_dens + r_pct + vax_boost,
                 family = binomial, 
                 data = themes_dich)

# Step 3: Mediation analysis
covid_med <- mediate(booted.M, boosted.0, treat= "black", mediator="svi_2",
                   boot=TRUE, sims=500)
Running nonparametric bootstrap
summary(covid_med)

Causal Mediation Analysis 

Nonparametric Bootstrap Confidence Intervals with the Percentile Method

                         Estimate 95% CI Lower 95% CI Upper p-value    
ACME (control)            -0.0348      -0.0434        -0.02  <2e-16 ***
ACME (treated)            -0.0293      -0.0383        -0.02  <2e-16 ***
ADE (control)             -0.1244      -0.1678        -0.08  <2e-16 ***
ADE (treated)             -0.1189      -0.1620        -0.08  <2e-16 ***
Total Effect              -0.1537      -0.1926        -0.11  <2e-16 ***
Prop. Mediated (control)   0.2265       0.1408         0.35  <2e-16 ***
Prop. Mediated (treated)   0.1907       0.1101         0.31  <2e-16 ***
ACME (average)            -0.0321      -0.0409        -0.02  <2e-16 ***
ADE (average)             -0.1216      -0.1649        -0.08  <2e-16 ***
Prop. Mediated (average)   0.2086       0.1263         0.33  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Sample Size Used: 6452 


Simulations: 500 

OLD ANALYSIS

Main Model with all variables

covid.nb <- glm.nb(total_cov_vax ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + pop_dens + r_pct + RPL_THEMES,
               data = covid_vax_dta) 
summary(covid.nb)
broom::glance(covid.nb)
broom::tidy(covid.nb, exponentiate = TRUE)
model_performance(covid.nb)
tbl_regression(covid.nb, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)

## Model Performance 
performance::check_model(covid.nb, panel = TRUE)

## Margins 
cplot(covid.nb, "RPL_THEMES", what = "prediction", main = "Predicted # COVID Vaccines Given SVI")

Drop tobacco use

covid.nb1 <- glm.nb(total_cov_vax ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5  + max_ch + pop_dens + r_pct + RPL_THEMES,
               data = covid_vax_dta) 
summary(covid.nb1)
broom::glance(covid.nb1)
broom::tidy(covid.nb1, exponentiate = TRUE)
model_performance(covid.nb1)
tbl_regression(covid.nb1, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)

## NB Model Performance 
performance::check_model(covid.nb1, panel = TRUE)

## NB Margins 
cplot(covid.nb1, "RPL_THEMES", what = "prediction", main = "Predicted # COVID Vaccines Given SVI")

Quadratics

covid.nb3 <- glm.nb(total_cov_vax ~ I(age_yrs^2) + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5  + act_tob + max_ch + pop_dens + r_pct + I(RPL_THEMES^2),
               data = covid_vax_dta)
summary(covid.nb3)
broom::glance(covid.nb3)
broom::tidy(covid.nb3, exponentiate = TRUE)
model_performance(covid.nb3)
tbl_regression(covid.nb3, label = list(pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)

## Model Performance (R^2 essentially unchanged)
performance::check_model(covid.nb3, panel = TRUE)

## Margins 
library(margins)
cplot(covid.nb3, "RPL_THEMES", what = "prediction", main = "Predicted # COVID Vaccines Given SVI")

Drop r_pct

covid.nb4 <- glm.nb(total_cov_vax ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5  + act_tob + max_ch + pop_dens + RPL_THEMES,
               data = covid_vax_dta)
summary(covid.nb4)
broom::glance(covid.nb4)
broom::tidy(covid.nb4, exponentiate = TRUE)
model_performance(covid.nb4)
tbl_regression(covid.nb4, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", mstat_5 ~ "Marital Status", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)

## Model Performance - R^2 goes from 10 to 6
performance::check_model(covid.nb4, panel = TRUE)

## Margins 
cplot(covid.nb4, "RPL_THEMES", what = "prediction", main = "Predicted # COVID Vaccines Given SVI")

Interaction between r_pct and SVI

covid.nb5 <- glm.nb(total_cov_vax ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + pop_dens + r_pct*RPL_THEMES,
               data = covid_vax_dta)
summary(covid.nb5)
broom::glance(covid.nb5)
broom::tidy(covid.nb5, exponentiate = TRUE)
model_performance(covid.nb5)
tbl_regression(covid.nb5, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", mstat_5 ~ "Marital Status", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", r_pct ~ "Percent Republican"), exponentiate = TRUE)

## Model Performance - R^2 goes from 10 to 6
performance::check_model(covid.nb5, panel = TRUE)

## Margins 
cplot(covid.nb5, "RPL_THEMES", what = "prediction", main = "Predicted # COVID Vaccines Given SVI")

Interaction between race + SVI

covid.nb6 <- glm.nb(total_cov_vax ~ age_yrs + gender + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + r_pct + pop_dens + race_5*RPL_THEMES,
               data = covid_vax_dta)
summary(covid.nb6)
broom::glance(covid.nb6)
broom::tidy(covid.nb6, exponentiate = TRUE)
model_performance(covid.nb6)
tbl_regression(covid.nb6, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", mstat_5 ~ "Marital Status", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index", r_pct ~ "Percent Republican"), exponentiate = TRUE)

## Model Performance - R^2 goes from 10 to 6
performance::check_model(covid.nb6, panel = TRUE)

## Margins 
cplot(covid.nb6, "RPL_THEMES", what = "prediction", main = "Predicted # COVID Vaccines Given SVI")

SVI as a mediator of race -> vaccination

COVID_M <- lm(RPL_THEMES ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + mstat_5
                + relig_affil + max_ch + act_tob + pop_dens + r_pct + total_cov_vax,
              data = covid_vax_dta)
summary(COVID_M )
broom::glance(COVID_M )
tbl_regression(COVID_M, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index"))

# Step 3: Mediation analysis
results <- mediate(COVID_M, covid.nb, treat="race_5", mediator="RPL_THEMES",
                   boot=TRUE, sims=500)
summary(results)

SVI By Quartiles

Negative binomial model with all variables

covid4.nb <- glm.nb(total_cov_vax ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + pop_dens + r_pct + RPL_4,
               data = covid_vax_dta) 
summary(covid4.nb)
broom::glance(covid4.nb)
broom::tidy(covid4.nb, exponentiate = TRUE)
model_performance(covid4.nb)
tbl_regression(covid4.nb, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_4 ~ "SVI Quartiles", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)

## Model Performance 
performance::check_model(covid4.nb, panel = TRUE)

## Margins 
cplot(covid4.nb, "RPL_4", what = "prediction", main = "Predicted # COVID Vaccines Given SVI Quartile")

All Themes

Negative binomial model with all variables

covid_themes.nb <- glm.nb(total_cov_vax ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + relig_affil + mstat_5 + act_tob + max_ch + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
               data = covid_vax_dta) 
summary(covid_themes.nb)
broom::glance(covid_themes.nb)
broom::tidy(covid_themes.nb, exponentiate = TRUE)
model_performance(covid_themes.nb)
tbl_regression(covid_themes.nb, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", act_tob ~"Active Tobacco Use", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)

## Model Performance 
performance::check_model(covid_themes.nb, panel = TRUE)

## Margins 
cplot(covid_themes.nb, "RPL_THEME1", what = "prediction", main = "Predicted # COVID Vaccines Given THEME1")
cplot(covid_themes.nb, "RPL_THEME2", what = "prediction", main = "Predicted # COVID Vaccines Given THEME2")
cplot(covid_themes.nb, "RPL_THEME3", what = "prediction", main = "Predicted # COVID Vaccines Given THEME3")
cplot(covid_themes.nb, "RPL_THEME4", what = "prediction", main = "Predicted # COVID Vaccines Given THEME4")
LS0tCnRpdGxlOiAiQ09WSUQgVmF4IE1vZGVscyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZXM6IHBhcGVyCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKZWRpdG9yX29wdGlvbnM6CiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQpkYXRlOiAnMjAyMi0xMS04JwotLS0KCiMgTG9hZCBQYWNrYWdlcyAKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGNvZGVib29rcikKbGlicmFyeShzdW1tYXJ5dG9vbHMpCmxpYnJhcnkoYnJvb20pIApsaWJyYXJ5KHBlcmZvcm1hbmNlKQpsaWJyYXJ5KGd0KQpsaWJyYXJ5KGd0c3VtbWFyeSkKbGlicmFyeShqYW5pdG9yKQpsaWJyYXJ5KGZvcmNhdHMpCmxpYnJhcnkoaGVyZSkKbGlicmFyeShtYXJnaW5zKQpsaWJyYXJ5KGdncGxvdDIpCmBgYAoKIyBJbXBvcnQgRGF0YSAKYGBge3J9CmxvYWQoZmlsZSA9ICJ+L0Rlc2t0b3AvUi1Db2RlL1NET0hfVmF4L3ZheF9jbGVhbjEucmRhIikKCgpgYGAKCiMgQ292aWQgdmFyaWFibGUgCmBgYHtyfQp2YXhfY2xlYW4xICU+JSAKbXV0YXRlKGZ1bGxfdmF4ID0gY2FzZV93aGVuKHRvdGFsX2Nvdl92YXg+PSAyIH4gJzEnLFRSVUUgfiAiMCIpKSAlPiUgCiAgbXV0YXRlKHZheF9ib29zdCA9IGNhc2Vfd2hlbih0b3RhbF9jb3ZfdmF4Pj0gMyB+ICcxJyxUUlVFIH4gIjAiKSkgLT4gY292X2NsZWFuMQpgYGAKCiMgQ29kZWJvb2sKYGBge3J9CnByaW50KGRmU3VtbWFyeShjb3ZfY2xlYW4xKSwgbWV0aG9kID0gJ3JlbmRlcicpCmBgYAoKIyBCYXNlbGluZSBDaGFyYWN0ZXJpc3RpY3Mgey50YWJzZXR9CiMjIFRvdGFsIApgYGB7cn0KY292X2NsZWFuMSAlPiUgCiAgZHBseXI6OnNlbGVjdChpYmRfMywgYWdlX3lycywgZ2VuZGVyLCByYWNlXzUsIGV0aG5pY18zLCBsYW5nXzMsIHJlbGlnX2FmZmlsLCBtc3RhdF81LCBhY3RfdG9iLCBtYXhfY2gsIElDLCBwb3BfZGVucyxyX3BjdCwgdG90YWxfY292X3ZheCwgZnVsbF92YXgsIHZheF9ib29zdCwgUlBMX1RIRU1FUywgUlBMXzQsIFJQTF9USEVNRTEsIFJQTF9USEVNRTIsIFJQTF9USEVNRTMsIFJQTF9USEVNRTQpIC0+IGJhc2VsaW5lCmJhc2VsaW5lICU+JSB0Ymxfc3VtbWFyeShsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmltYXJ5IExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgUlBMXzQgfiAiU1ZJIFF1YXJ0aWxlcyIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIGFjdF90b2IgfiJBY3RpdmUgVG9iYWNjbyBVc2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBpYmRfMyB+ICJJQkQgVHlwZSIsIGZ1bGxfdmF4IH4gIkZ1bGx5IFZhY2NpbmF0ZWQiLCB0b3RhbF9jb3ZfdmF4IH4gIlRvdGFsIENPVklEIFZhY2NpbmVzIiwgdmF4X2Jvb3N0IH4gIkJvb3N0ZWQiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIpLAogICAgICAgIHN0YXRpc3RpYyA9IGxpc3QoYWxsX2NvbnRpbnVvdXMoKSB+ICJ7bWVhbn0gKHtzZH0pIiksCiAgICAgICAgbWlzc2luZ190ZXh0ID0gIihNaXNzaW5nKSIpCmBgYAoKCiMjIEJ5IFNWSSBRdWFydGlsZSAKYGBge3J9CmJhc2VsaW5lICU+JSAKdGJsX3N1bW1hcnkoYnkgPSBSUExfNCwKICAgICAgICAgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJpbWFyeSBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIFJQTF80IH4gIlNWSSBRdWFydGlsZXMiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iLCBhY3RfdG9iIH4iQWN0aXZlIFRvYmFjY28gVXNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgaWJkXzMgfiAiSUJEIFR5cGUiLCBmdWxsX3ZheCB+ICJGdWxseSBWYWNjaW5hdGVkIiwgdG90YWxfY292X3ZheCB+ICJUb3RhbCBDT1ZJRCBWYWNjaW5lcyIsIHZheF9ib29zdCB+ICJCb29zdGVkIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiKSwKICAgICAgICBzdGF0aXN0aWMgPSBsaXN0KGFsbF9jb250aW51b3VzKCkgfiAie21lYW59ICh7c2R9KSIpLAogICAgICAgIG1pc3NpbmdfdGV4dCA9ICIoTWlzc2luZykiKSAlPiUgYWRkX3AoKQpgYGAKCiMgQml2YXJpYXRlIEFuYWx5c2lzIHsudGFic2V0fQoKIyMgVG90YWwgIyBWYWNjaW5lcyAKYGBge3J9CmxpYnJhcnkoTUFTUykKdGJsX2NvdmlkX2JpdiA8LQogIHRibF91dnJlZ3Jlc3Npb24oCiAgICBjb3ZfY2xlYW4xW2MoInRvdGFsX2Nvdl92YXgiLCAiaWJkXzMiLCAiYWdlX3lycyIsICJnZW5kZXIiLCAicmFjZV81IiwgImV0aG5pY18zIiwgImxhbmdfMyIsICJtc3RhdF81IiwgInJlbGlnX2FmZmlsIiwgImFjdF90b2IiLCAibWF4X2NoIiwgIklDIiwgInBvcF9kZW5zIiwgInJfcGN0IiwgIlJQTF9USEVNRVMiLCAiUlBMX1RIRU1FMSIsICJSUExfVEhFTUUyIiwgIlJQTF9USEVNRTMiLCAiUlBMX1RIRU1FNCIpXSwKICAgIG1ldGhvZCA9IGdsbS5uYiwKICAgIHkgPSB0b3RhbF9jb3ZfdmF4LAogICAgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJhY2VfNSB+ICJSYWNlIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIElDIH4gIkltbXVub2NvbXByb21pc2VkIiwgaWJkXzMgfiAiSUJEIFR5cGUiKSwKICBleHBvbmVudGlhdGUgPSBUUlVFKQpwcmludCh0YmxfY292aWRfYml2LCBtZXRob2QgPSByZW5kZXIpCmBgYAojIyBGdWxseSB2YWNjaW5hdGVkIApgYGB7cn0KY292X2NsZWFuMSRmdWxsX3ZheCA9IGFzLm51bWVyaWMoY292X2NsZWFuMSRmdWxsX3ZheCkKdGJsX2Z1bGxfYml2IDwtCiAgdGJsX3V2cmVncmVzc2lvbigKICAgIGNvdl9jbGVhbjFbYygiZnVsbF92YXgiLCAiaWJkXzMiLCAiYWdlX3lycyIsICJnZW5kZXIiLCAicmFjZV81IiwgImV0aG5pY18zIiwgImxhbmdfMyIsICJtc3RhdF81IiwgInJlbGlnX2FmZmlsIiwgImFjdF90b2IiLCAibWF4X2NoIiwgIklDIiwgInBvcF9kZW5zIiwgInJfcGN0IiwgIlJQTF9USEVNRVMiLCAiUlBMX1RIRU1FMSIsICJSUExfVEhFTUUyIiwgIlJQTF9USEVNRTMiLCAiUlBMX1RIRU1FNCIpXSwKICAgIG1ldGhvZCA9IGdsbSwKICAgIHkgPSBmdWxsX3ZheCwKICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSBiaW5vbWlhbCksCiAgICBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmFjZV81IH4gIlJhY2UiLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCBhY3RfdG9iIH4iQWN0aXZlIFRvYmFjY28gVXNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBpYmRfMyB+ICJJQkQgVHlwZSIpLAogIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnByaW50KHRibF9mdWxsX2JpdiwgbWV0aG9kID0gcmVuZGVyKQpgYGAKIyMgVmFjY2luYXRlZCBhbmQgQm9vc3RlZCAKYGBge3J9CmNvdl9jbGVhbjEkdmF4X2Jvb3N0ID0gYXMubnVtZXJpYyhjb3ZfY2xlYW4xJHZheF9ib29zdCkKdGJsX2Jvb3N0X2JpdiA8LQogIHRibF91dnJlZ3Jlc3Npb24oCiAgICBjb3ZfY2xlYW4xW2MoInZheF9ib29zdCIsICJpYmRfMyIsICJhZ2VfeXJzIiwgImdlbmRlciIsICJyYWNlXzUiLCAiZXRobmljXzMiLCAibGFuZ18zIiwgIm1zdGF0XzUiLCAicmVsaWdfYWZmaWwiLCAiYWN0X3RvYiIsICJtYXhfY2giLCAiSUMiLCAicG9wX2RlbnMiLCAicl9wY3QiLCAiUlBMX1RIRU1FUyIsICJSUExfVEhFTUUxIiwgIlJQTF9USEVNRTIiLCAiUlBMX1RIRU1FMyIsICJSUExfVEhFTUU0IildLAogICAgbWV0aG9kID0gZ2xtLAogICAgeSA9IHZheF9ib29zdCwKICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSBiaW5vbWlhbCksCiAgICBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmFjZV81IH4gIlJhY2UiLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCBhY3RfdG9iIH4iQWN0aXZlIFRvYmFjY28gVXNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBpYmRfMyB+ICJJQkQgVHlwZSIpLAogIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnByaW50KHRibF9ib29zdF9iaXYsIG1ldGhvZCA9IHJlbmRlcikKYGBgCgojIFRvdGFsIENPVklEIENvdW50IHsudGFic2V0fQoKIyMgUlBMX1RIRU1FUwpgYGB7cn0KbGlicmFyeShNQVNTKQpjb3ZpZC5uYiA8LSBnbG0ubmIodG90YWxfY292X3ZheCB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgbGFuZ18zICsgcmVsaWdfYWZmaWwgKyBtc3RhdF81ICsgYWN0X3RvYiArIG1heF9jaCArIElDICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF9USEVNRVMsCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZfY2xlYW4xKSAKc3VtbWFyeShjb3ZpZC5uYikKYnJvb206OmdsYW5jZShjb3ZpZC5uYikKYnJvb206OnRpZHkoY292aWQubmIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iKQp0YmxfcmVncmVzc2lvbihjb3ZpZC5uYiwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJhY2VfNSB+ICJSYWNlIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIGFjdF90b2IgfiJBY3RpdmUgVG9iYWNjbyBVc2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIsIGliZF8zIH4gIklCRCBUeXBlIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIE5CIFJlc2lkdWFsIFBsb3QKY292aWQubmJfcmVzIDwtIHJlc2lkKGNvdmlkLm5iKQpwbG90KGZpdHRlZChjb3ZpZC5uYiksIGNvdmlkLm5iX3JlcywgY29sPSdzdGVlbGJsdWUnLCBwY2g9MTYsCiAgICAgeGxhYj0nUHJlZGljdGVkIFZhY2NpbmVzJywgeWxhYj0nU3RhbmRhcmRpemVkIFJlc2lkdWFscycsIG1haW49J05lZ2F0aXZlIEJpbm9taWFsJykKYWJsaW5lKDAsMCkKIyBOQiByZWdyZXNzaW9uIG1vcmUgYXBwcm9wcmlhdGUgYmVjYXVzZSByZXNpZHVhbHMgb2YgdGhlIG1vZGVsIGFyZSBzbWFsbGVyIAoKIyBMaWtlbGlob29kIHJhdGlvIHRlc3QgCnBjaGlzcSgyICogKGxvZ0xpayhjb3ZpZC5uYikgLSBsb2dMaWsoY292aWQubmIpKSwgZGYgPSAxLCBsb3dlci50YWlsID0gRkFMU0UpCiMgcC12YWx1ZSBvZiBsb2dsaWsgaXMgPCAwLjA1IHNvIE5CIHJlZ3Jlc3Npb24gaXMgdGhlIG1vcmUgYXBwcm9wcmlhdGUgbW9kZWwgCgpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoY292aWQubmIsIHBhbmVsID0gVFJVRSkKYGBgCiMjIFJQTCBRdWFydGlsZXMgCmBgYHtyfQpjb3ZpZC5uYjIgPC0gZ2xtLm5iKHRvdGFsX2Nvdl92YXggfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfNCwKICAgICAgICAgICAgICAgZGF0YSA9IGNvdl9jbGVhbjEpIApzdW1tYXJ5KGNvdmlkLm5iMikKYnJvb206OmdsYW5jZShjb3ZpZC5uYjIpCmJyb29tOjp0aWR5KGNvdmlkLm5iMiwgZXhwb25lbnRpYXRlID0gVFJVRSkKbW9kZWxfcGVyZm9ybWFuY2UoY292aWQubmIyKQp0YmxfcmVncmVzc2lvbihjb3ZpZC5uYjIsIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByYWNlXzUgfiAiUmFjZSIsIFJQTF80IH4gIlNWSSBRdWFydGlsZSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIElDIH4gIkltbXVub2NvbXByb21pc2VkIiwgaWJkXzMgfiAiSUJEIFR5cGUiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZC5uYjIsIHBhbmVsID0gVFJVRSkKYGBgCiMjIEFsbCBUaGVtZXMgCmBgYHtyfQpjb3ZpZC5uYjMgPC0gZ2xtLm5iKHRvdGFsX2Nvdl92YXggfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUUxCiAgICAgICAgICAgICAgICAgICAgKyBSUExfVEhFTUUyICsgUlBMX1RIRU1FMyArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZfY2xlYW4xKSAKc3VtbWFyeShjb3ZpZC5uYjMpCmJyb29tOjpnbGFuY2UoY292aWQubmIzKQpicm9vbTo6dGlkeShjb3ZpZC5uYjMsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iMykKdGJsX3JlZ3Jlc3Npb24oY292aWQubmIzLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmFjZV81IH4gIlJhY2UiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIElDIH4gIkltbXVub2NvbXByb21pc2VkIiwgaWJkXzMgfiAiSUJEIFR5cGUiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZC5uYjMsIHBhbmVsID0gVFJVRSkKYGBgCgojIEZ1bGx5IFZhY2NpbmF0ZWQgKG5vdCBib29zdGVkKSB7LnRhYnNldH0KIyMgUlBMX1RIRU1FUwpgYGB7cn0KY292aWRfZnVsbDEgPC0gZ2xtKGZ1bGxfdmF4IH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyByZWxpZ19hZmZpbCArIG1zdGF0XzUgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMgKyBwb3BfZGVucyArIHJfcGN0ICsgUlBMX1RIRU1FUywKICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsLCAKICAgICAgICAgICAgICAgZGF0YSA9IGNvdl9jbGVhbjEpIApzdW1tYXJ5KGNvdmlkX2Z1bGwxKQpicm9vbTo6Z2xhbmNlKGNvdmlkX2Z1bGwxKQpicm9vbTo6dGlkeShjb3ZpZF9mdWxsMSwgZXhwb25lbnRpYXRlID0gVFJVRSkKbW9kZWxfcGVyZm9ybWFuY2UoY292aWRfZnVsbDEpCnRibF9yZWdyZXNzaW9uKGNvdmlkX2Z1bGwxLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmFjZV81IH4gIlJhY2UiLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIElDIH4gIkltbXVub2NvbXByb21pc2VkIiwgaWJkXzMgfiAiSUJEIFR5cGUiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZF9mdWxsMSwgcGFuZWwgPSBUUlVFKQoKYGBgCiMjIFJQTCBRdWFydGlsZXMgCmBgYHtyfQpjb3ZpZF9mdWxsMiA8LSBnbG0oZnVsbF92YXggfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfNCwKICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsLAogICAgICAgICAgICAgICBkYXRhID0gY292X2NsZWFuMSkgCnN1bW1hcnkoY292aWRfZnVsbDIpCmJyb29tOjpnbGFuY2UoY292aWRfZnVsbDIpCmJyb29tOjp0aWR5KGNvdmlkX2Z1bGwyLCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZShjb3ZpZF9mdWxsMikKdGJsX3JlZ3Jlc3Npb24oY292aWRfZnVsbDIsIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByYWNlXzUgfiAiUmFjZSIsIFJQTF80IH4gIlNWSSBRdWFydGlsZSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIElDIH4gIkltbXVub2NvbXByb21pc2VkIiwgaWJkXzMgfiAiSUJEIFR5cGUiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZF9mdWxsMiwgcGFuZWwgPSBUUlVFKQpgYGAKCiMjIEFsbCBUaGVtZXMgCmBgYHtyfQpjb3ZpZF9mdWxsMyA8LSBnbG0oZnVsbF92YXggfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUUxCiAgICAgICAgICAgICAgICAgICAgKyBSUExfVEhFTUUyICsgUlBMX1RIRU1FMyArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwKICAgICAgICAgICAgICAgZGF0YSA9IGNvdl9jbGVhbjEpIApzdW1tYXJ5KGNvdmlkX2Z1bGwzKQpicm9vbTo6Z2xhbmNlKGNvdmlkX2Z1bGwzKQpicm9vbTo6dGlkeShjb3ZpZF9mdWxsMywgZXhwb25lbnRpYXRlID0gVFJVRSkKbW9kZWxfcGVyZm9ybWFuY2UoY292aWRfZnVsbDMpCnRibF9yZWdyZXNzaW9uKGNvdmlkX2Z1bGwzLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmFjZV81IH4gIlJhY2UiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5IiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIElDIH4gIkltbXVub2NvbXByb21pc2VkIiwgaWJkXzMgfiAiSUJEIFR5cGUiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZF9mdWxsMywgcGFuZWwgPSBUUlVFKQpgYGAKCiMgRnVsbHkgdmFjY2luYXRlZCBhbmQgYm9vc3RlZCB7LnRhYnNldH0KIyMgUlBMX1RoZW1lcwpgYGB7cn0KYm9vc3RlZDEgPC0gZ2xtKHZheF9ib29zdCB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgbGFuZ18zICsgcmVsaWdfYWZmaWwgKyBtc3RhdF81ICsgYWN0X3RvYiArIG1heF9jaCArIElDICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF9USEVNRVMsCiAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZfY2xlYW4xKSAKc3VtbWFyeShib29zdGVkMSkKYnJvb206OmdsYW5jZShib29zdGVkMSkKYnJvb206OnRpZHkoYm9vc3RlZDEsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGJvb3N0ZWQxKQp0YmxfcmVncmVzc2lvbihib29zdGVkMSwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJhY2VfNSB+ICJSYWNlIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIGFjdF90b2IgfiJBY3RpdmUgVG9iYWNjbyBVc2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIsIGliZF8zIH4gIklCRCBUeXBlIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoYm9vc3RlZDEsIHBhbmVsID0gVFJVRSkKYGBgCiMjIFJQTCBRdWFydGlsZXMgCmBgYHtyfQpjb3ZpZF9ib29zdDIgPC0gZ2xtKHZheF9ib29zdCB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgbGFuZ18zICsgcmVsaWdfYWZmaWwgKyBtc3RhdF81ICsgYWN0X3RvYiArIG1heF9jaCArIElDICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF80LAogICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwsCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZfY2xlYW4xKSAKc3VtbWFyeShjb3ZpZF9ib29zdDIpCmJyb29tOjpnbGFuY2UoY292aWRfYm9vc3QyKQpicm9vbTo6dGlkeShjb3ZpZF9ib29zdDIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkX2Jvb3N0MikKdGJsX3JlZ3Jlc3Npb24oY292aWRfYm9vc3QyLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmFjZV81IH4gIlJhY2UiLCBSUExfNCB+ICJTVkkgUXVhcnRpbGUiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIGFjdF90b2IgfiJBY3RpdmUgVG9iYWNjbyBVc2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIsIGliZF8zIH4gIklCRCBUeXBlIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoY292aWRfYm9vc3QyLCBwYW5lbCA9IFRSVUUpCmBgYAojIyBBbGwgdGhlbWVzIApgYGB7cn0KYm9vc3QzIDwtIGdsbSh2YXhfYm9vc3QgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUUxCiAgICAgICAgICAgICAgICAgICAgKyBSUExfVEhFTUUyICsgUlBMX1RIRU1FMyArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwKICAgICAgICAgICAgICAgZGF0YSA9IGNvdl9jbGVhbjEpIApzdW1tYXJ5KGJvb3N0MykKYnJvb206OmdsYW5jZShib29zdDMpCmJyb29tOjp0aWR5KGJvb3N0MywgZXhwb25lbnRpYXRlID0gVFJVRSkKbW9kZWxfcGVyZm9ybWFuY2UoYm9vc3QzKQp0YmxfcmVncmVzc2lvbihib29zdDMsIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByYWNlXzUgfiAiUmFjZSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCBhY3RfdG9iIH4iQWN0aXZlIFRvYmFjY28gVXNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBpYmRfMyB+ICJJQkQgVHlwZSIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKGJvb3N0MywgcGFuZWwgPSBUUlVFKQpgYGAKCiMgTWVkaWF0aW9uIEFuYWx5c2lzIHsudGFic2V0fQojIyBGdWxseSB2YWNjaW5hdGVkIApgYGB7cn0KY292X2NsZWFuMSAlPiUgCm11dGF0ZShibGFjayA9IGFzX2ZhY3RvcihyYWNlXzUpLAogICAgICAgICBibGFjayA9IGZjdF9yZWNvZGUoYmxhY2ssIE5vID0gIk90aGVyIiwKICAgICAgICAgICAgICAgICAgTm8gPSAiQXNpYW4iLAogICAgICAgICAgICAgICAgICBObyA9ICJXaGl0ZSIsIFllcyA9ICJCbGFjayIsCiAgICAgICAgICAgICAgICAgIE5vID0gIk5hdGl2ZSIpLAogICAgICAgICBibGFjayA9IGZjdF9yZWxldmVsKGJsYWNrLCByZWYgPSAnTm8nKSkgLT4gcmFjZV9kaWNoCgpyYWNlX2RpY2gkYmxhY2s8LWlmZWxzZShyYWNlX2RpY2gkYmxhY2s9PSJZZXMiLDEsMCkKCnJhY2VfZGljaCAlPiUgCiAgbXV0YXRlKHN2aV8yID0gY2FzZV93aGVuKFJQTF9USEVNRVM+PSAwLjUgfiAnMScsVFJVRSB+ICIwIikpIC0+ICB0aGVtZXNfZGljaAoKdGhlbWVzX2RpY2gkc3ZpXzIgPSBhcy5udW1lcmljKHRoZW1lc19kaWNoJHN2aV8yKQoKI1N0ZXAgMTogSXMgdGhlcmUgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiBYKHJhY2UpIGFuZCBZKGZsdSB2YWNjaW5lKS4gWWVzIC0gYmxhY2sgYW5kIG90aGVyIHBhdGllbnRzIHdlcmUgbGVzcyBsaWtlbHkgdG8gcmVjZWl2ZSB0aGUgZmx1IHZhY2NpbmUgdGhhbiBBc2lhbiBhbmQgd2hpdGUgcGF0aWVudHMKYm9vc3RlZC4wIDwtIGdsbSh2YXhfYm9vc3QgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyBibGFjayArIGV0aG5pY18zICsgbGFuZ18zICsKICAgICAgICAgICAgICAgICAgIG1zdGF0XzUrIHJlbGlnX2FmZmlsICsgbWF4X2NoICsgSUMgKyBwb3BfZGVucyArIHJfcGN0ICsgc3ZpXzIsCiAgICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSB0aGVtZXNfZGljaCkKCiMgU3RlcCAyOiBJcyB0aGVyZSBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBtZWRpYXRvciAoU1ZJKSBhbmQgcmFjZT8gWWVzLCBwYXRpZW50cyB3aXRoIGhpZ2hlciBTVkkgd2VyZSBtb3JlIGxpa2VseSB0byBiZSBibGFjayAKYm9vdGVkLk0gPC0gZ2xtKHN2aV8yIH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgYmxhY2sgKyBldGhuaWNfMyArIGxhbmdfMyArCiAgICAgICAgICAgICAgICAgICBtc3RhdF81KyByZWxpZ19hZmZpbCArIG1heF9jaCArIElDICsgcG9wX2RlbnMgKyByX3BjdCArIHZheF9ib29zdCwKICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgICAgZGF0YSA9IHRoZW1lc19kaWNoKQoKIyBTdGVwIDM6IE1lZGlhdGlvbiBhbmFseXNpcwpjb3ZpZF9tZWQgPC0gbWVkaWF0ZShib290ZWQuTSwgYm9vc3RlZC4wLCB0cmVhdD0gImJsYWNrIiwgbWVkaWF0b3I9InN2aV8yIiwKICAgICAgICAgICAgICAgICAgIGJvb3Q9VFJVRSwgc2ltcz01MDApCnN1bW1hcnkoY292aWRfbWVkKQpgYGAKCgojIE9MRCBBTkFMWVNJUyB7LnRhYnNldH0KCiMjIE1haW4gTW9kZWwgd2l0aCBhbGwgdmFyaWFibGVzIApgYGB7cn0KY292aWQubmIgPC0gZ2xtLm5iKHRvdGFsX2Nvdl92YXggfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyByZWxpZ19hZmZpbCArIG1zdGF0XzUgKyBhY3RfdG9iICsgbWF4X2NoICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF9USEVNRVMsCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZpZF92YXhfZHRhKSAKc3VtbWFyeShjb3ZpZC5uYikKYnJvb206OmdsYW5jZShjb3ZpZC5uYikKYnJvb206OnRpZHkoY292aWQubmIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iKQp0YmxfcmVncmVzc2lvbihjb3ZpZC5uYiwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAicmFjZSIsIGFjdF90b2IgfiJBY3RpdmUgVG9iYWNjbyBVc2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCiMjIE1vZGVsIFBlcmZvcm1hbmNlIApwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoY292aWQubmIsIHBhbmVsID0gVFJVRSkKCiMjIE1hcmdpbnMgCmNwbG90KGNvdmlkLm5iLCAiUlBMX1RIRU1FUyIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkICMgQ09WSUQgVmFjY2luZXMgR2l2ZW4gU1ZJIikKCmBgYAoKCgojIyBEcm9wIHRvYmFjY28gdXNlIApgYGB7cn0KY292aWQubmIxIDwtIGdsbS5uYih0b3RhbF9jb3ZfdmF4IH4gYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgbGFuZ18zICsgcmVsaWdfYWZmaWwgKyBtc3RhdF81ICArIG1heF9jaCArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUVTLAogICAgICAgICAgICAgICBkYXRhID0gY292aWRfdmF4X2R0YSkgCnN1bW1hcnkoY292aWQubmIxKQpicm9vbTo6Z2xhbmNlKGNvdmlkLm5iMSkKYnJvb206OnRpZHkoY292aWQubmIxLCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZShjb3ZpZC5uYjEpCnRibF9yZWdyZXNzaW9uKGNvdmlkLm5iMSwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAicmFjZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTkIgTW9kZWwgUGVyZm9ybWFuY2UgCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZC5uYjEsIHBhbmVsID0gVFJVRSkKCiMjIE5CIE1hcmdpbnMgCmNwbG90KGNvdmlkLm5iMSwgIlJQTF9USEVNRVMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCAjIENPVklEIFZhY2NpbmVzIEdpdmVuIFNWSSIpCmBgYAoKCiMjIFF1YWRyYXRpY3MKYGBge3J9CmNvdmlkLm5iMyA8LSBnbG0ubmIodG90YWxfY292X3ZheCB+IEkoYWdlX3lyc14yKSArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgbGFuZ18zICsgcmVsaWdfYWZmaWwgKyBtc3RhdF81ICArIGFjdF90b2IgKyBtYXhfY2ggKyBwb3BfZGVucyArIHJfcGN0ICsgSShSUExfVEhFTUVTXjIpLAogICAgICAgICAgICAgICBkYXRhID0gY292aWRfdmF4X2R0YSkKc3VtbWFyeShjb3ZpZC5uYjMpCmJyb29tOjpnbGFuY2UoY292aWQubmIzKQpicm9vbTo6dGlkeShjb3ZpZC5uYjMsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iMykKdGJsX3JlZ3Jlc3Npb24oY292aWQubmIzLCBsYWJlbCA9IGxpc3QocG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcl9wY3QgfiAiUGVyY2VudCBSZWJ1cGxpY2FuIiwgcmFjZV81IH4gInJhY2UiLCBhY3RfdG9iIH4iQWN0aXZlIFRvYmFjY28gVXNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIyBNb2RlbCBQZXJmb3JtYW5jZSAoUl4yIGVzc2VudGlhbGx5IHVuY2hhbmdlZCkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKGNvdmlkLm5iMywgcGFuZWwgPSBUUlVFKQoKIyMgTWFyZ2lucyAKbGlicmFyeShtYXJnaW5zKQpjcGxvdChjb3ZpZC5uYjMsICJSUExfVEhFTUVTIiwgd2hhdCA9ICJwcmVkaWN0aW9uIiwgbWFpbiA9ICJQcmVkaWN0ZWQgIyBDT1ZJRCBWYWNjaW5lcyBHaXZlbiBTVkkiKQpgYGAKCiMjIERyb3Agcl9wY3QKYGBge3J9CmNvdmlkLm5iNCA8LSBnbG0ubmIodG90YWxfY292X3ZheCB+IGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSAgKyBhY3RfdG9iICsgbWF4X2NoICsgcG9wX2RlbnMgKyBSUExfVEhFTUVTLAogICAgICAgICAgICAgICBkYXRhID0gY292aWRfdmF4X2R0YSkKc3VtbWFyeShjb3ZpZC5uYjQpCmJyb29tOjpnbGFuY2UoY292aWQubmI0KQpicm9vbTo6dGlkeShjb3ZpZC5uYjQsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iNCkKdGJsX3JlZ3Jlc3Npb24oY292aWQubmI0LCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHJhY2VfNSB+ICJyYWNlIiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTW9kZWwgUGVyZm9ybWFuY2UgLSBSXjIgZ29lcyBmcm9tIDEwIHRvIDYKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKGNvdmlkLm5iNCwgcGFuZWwgPSBUUlVFKQoKIyMgTWFyZ2lucyAKY3Bsb3QoY292aWQubmI0LCAiUlBMX1RIRU1FUyIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkICMgQ09WSUQgVmFjY2luZXMgR2l2ZW4gU1ZJIikKYGBgCgojIyBJbnRlcmFjdGlvbiBiZXR3ZWVuIHJfcGN0IGFuZCBTVkkgCmBgYHtyfQpjb3ZpZC5uYjUgPC0gZ2xtLm5iKHRvdGFsX2Nvdl92YXggfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyByZWxpZ19hZmZpbCArIG1zdGF0XzUgKyBhY3RfdG9iICsgbWF4X2NoICsgcG9wX2RlbnMgKyByX3BjdCpSUExfVEhFTUVTLAogICAgICAgICAgICAgICBkYXRhID0gY292aWRfdmF4X2R0YSkKc3VtbWFyeShjb3ZpZC5uYjUpCmJyb29tOjpnbGFuY2UoY292aWQubmI1KQpicm9vbTo6dGlkeShjb3ZpZC5uYjUsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iNSkKdGJsX3JlZ3Jlc3Npb24oY292aWQubmI1LCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHJhY2VfNSB+ICJyYWNlIiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTW9kZWwgUGVyZm9ybWFuY2UgLSBSXjIgZ29lcyBmcm9tIDEwIHRvIDYKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKGNvdmlkLm5iNSwgcGFuZWwgPSBUUlVFKQoKIyMgTWFyZ2lucyAKY3Bsb3QoY292aWQubmI1LCAiUlBMX1RIRU1FUyIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkICMgQ09WSUQgVmFjY2luZXMgR2l2ZW4gU1ZJIikKYGBgCgojIyBJbnRlcmFjdGlvbiBiZXR3ZWVuIHJhY2UgKyBTVkkgCmBgYHtyfQpjb3ZpZC5uYjYgPC0gZ2xtLm5iKHRvdGFsX2Nvdl92YXggfiBhZ2VfeXJzICsgZ2VuZGVyICsgZXRobmljXzMgKyBsYW5nXzMgKyByZWxpZ19hZmZpbCArIG1zdGF0XzUgKyBhY3RfdG9iICsgbWF4X2NoICsgcl9wY3QgKyBwb3BfZGVucyArIHJhY2VfNSpSUExfVEhFTUVTLAogICAgICAgICAgICAgICBkYXRhID0gY292aWRfdmF4X2R0YSkKc3VtbWFyeShjb3ZpZC5uYjYpCmJyb29tOjpnbGFuY2UoY292aWQubmI2KQpicm9vbTo6dGlkeShjb3ZpZC5uYjYsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkLm5iNikKdGJsX3JlZ3Jlc3Npb24oY292aWQubmI2LCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHJhY2VfNSB+ICJyYWNlIiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTW9kZWwgUGVyZm9ybWFuY2UgLSBSXjIgZ29lcyBmcm9tIDEwIHRvIDYKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKGNvdmlkLm5iNiwgcGFuZWwgPSBUUlVFKQoKIyMgTWFyZ2lucyAKY3Bsb3QoY292aWQubmI2LCAiUlBMX1RIRU1FUyIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkICMgQ09WSUQgVmFjY2luZXMgR2l2ZW4gU1ZJIikKYGBgCiMjIFNWSSBhcyBhIG1lZGlhdG9yIG9mIHJhY2UgLT4gdmFjY2luYXRpb24gCmBgYHtyfQpDT1ZJRF9NIDwtIGxtKFJQTF9USEVNRVMgfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyBtc3RhdF81CiAgICAgICAgICAgICAgICArIHJlbGlnX2FmZmlsICsgbWF4X2NoICsgYWN0X3RvYiArIHBvcF9kZW5zICsgcl9wY3QgKyB0b3RhbF9jb3ZfdmF4LAogICAgICAgICAgICAgIGRhdGEgPSBjb3ZpZF92YXhfZHRhKQpzdW1tYXJ5KENPVklEX00gKQpicm9vbTo6Z2xhbmNlKENPVklEX00gKQp0YmxfcmVncmVzc2lvbihDT1ZJRF9NLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAicmFjZSIsIGFjdF90b2IgfiJBY3RpdmUgVG9iYWNjbyBVc2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiKSkKCiMgU3RlcCAzOiBNZWRpYXRpb24gYW5hbHlzaXMKcmVzdWx0cyA8LSBtZWRpYXRlKENPVklEX00sIGNvdmlkLm5iLCB0cmVhdD0icmFjZV81IiwgbWVkaWF0b3I9IlJQTF9USEVNRVMiLAogICAgICAgICAgICAgICAgICAgYm9vdD1UUlVFLCBzaW1zPTUwMCkKc3VtbWFyeShyZXN1bHRzKQpgYGAKCgojIFNWSSBCeSBRdWFydGlsZXMgey50YWJzZXR9CiMjIE5lZ2F0aXZlIGJpbm9taWFsIG1vZGVsIHdpdGggYWxsIHZhcmlhYmxlcyAKYGBge3J9CmNvdmlkNC5uYiA8LSBnbG0ubmIodG90YWxfY292X3ZheCB+IGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIHJlbGlnX2FmZmlsICsgbXN0YXRfNSArIGFjdF90b2IgKyBtYXhfY2ggKyBwb3BfZGVucyArIHJfcGN0ICsgUlBMXzQsCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZpZF92YXhfZHRhKSAKc3VtbWFyeShjb3ZpZDQubmIpCmJyb29tOjpnbGFuY2UoY292aWQ0Lm5iKQpicm9vbTo6dGlkeShjb3ZpZDQubmIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkNC5uYikKdGJsX3JlZ3Jlc3Npb24oY292aWQ0Lm5iLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF80IH4gIlNWSSBRdWFydGlsZXMiLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcl9wY3QgfiAiUGVyY2VudCBSZWJ1cGxpY2FuIiwgcmFjZV81IH4gInJhY2UiLCBhY3RfdG9iIH4iQWN0aXZlIFRvYmFjY28gVXNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIyBNb2RlbCBQZXJmb3JtYW5jZSAKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKGNvdmlkNC5uYiwgcGFuZWwgPSBUUlVFKQoKIyMgTWFyZ2lucyAKY3Bsb3QoY292aWQ0Lm5iLCAiUlBMXzQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCAjIENPVklEIFZhY2NpbmVzIEdpdmVuIFNWSSBRdWFydGlsZSIpCmBgYAoKIyBBbGwgVGhlbWVzIHsudGFic2V0fQpOZWdhdGl2ZSBiaW5vbWlhbCBtb2RlbCB3aXRoIGFsbCB2YXJpYWJsZXMgCmBgYHtyfQpjb3ZpZF90aGVtZXMubmIgPC0gZ2xtLm5iKHRvdGFsX2Nvdl92YXggfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyByZWxpZ19hZmZpbCArIG1zdGF0XzUgKyBhY3RfdG9iICsgbWF4X2NoICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF9USEVNRTEgKyBSUExfVEhFTUUyICsgUlBMX1RIRU1FMyArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgIGRhdGEgPSBjb3ZpZF92YXhfZHRhKSAKc3VtbWFyeShjb3ZpZF90aGVtZXMubmIpCmJyb29tOjpnbGFuY2UoY292aWRfdGhlbWVzLm5iKQpicm9vbTo6dGlkeShjb3ZpZF90aGVtZXMubmIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKGNvdmlkX3RoZW1lcy5uYikKdGJsX3JlZ3Jlc3Npb24oY292aWRfdGhlbWVzLm5iLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHJfcGN0IH4gIlBlcmNlbnQgUmVidXBsaWNhbiIsIHJhY2VfNSB+ICJyYWNlIiwgYWN0X3RvYiB+IkFjdGl2ZSBUb2JhY2NvIFVzZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTW9kZWwgUGVyZm9ybWFuY2UgCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChjb3ZpZF90aGVtZXMubmIsIHBhbmVsID0gVFJVRSkKCiMjIE1hcmdpbnMgCmNwbG90KGNvdmlkX3RoZW1lcy5uYiwgIlJQTF9USEVNRTEiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCAjIENPVklEIFZhY2NpbmVzIEdpdmVuIFRIRU1FMSIpCmNwbG90KGNvdmlkX3RoZW1lcy5uYiwgIlJQTF9USEVNRTIiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCAjIENPVklEIFZhY2NpbmVzIEdpdmVuIFRIRU1FMiIpCmNwbG90KGNvdmlkX3RoZW1lcy5uYiwgIlJQTF9USEVNRTMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCAjIENPVklEIFZhY2NpbmVzIEdpdmVuIFRIRU1FMyIpCmNwbG90KGNvdmlkX3RoZW1lcy5uYiwgIlJQTF9USEVNRTQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCAjIENPVklEIFZhY2NpbmVzIEdpdmVuIFRIRU1FNCIpCmBgYAoK