Survey Data Source: National Household Education Surveys (NHES) Program 2019: Parent and Family Involvement in Education (PFI)

1) Define an ordinal or multinomial outcome variable of your choosing and define how you will recode the original variable.

Ordinal outcome variable is whether a child enjoys school.

Codebook variable is Item 50: SEENJOY, with levels 1 (Strongly agree) to 4 (Strongly disagree).

I will recode the variable as enjoy_school, with levels 3 and 4 as “1” [disagree], level 2 as “2” [agree], and level 1 as “3” [disagree].

2) State a research question about what factors you believe will affect your outcome variable.

How do the factors of parent volunteerism, developmental delay, parent’s highest education level, and race/ethnicity affect whether a child enjoys school?

Predictor 1: adult_volunteer; Item 60B: FSVOL “… has any adult in this child’s household … served as a volunteer in this child’s classroom or elsewhere in the school?”

Predictor 2: dev_delay; Item 76K: HDDELAYX “Has a health or education professional told you that this child has … a developmental delay?”

Predictor 3: parent_educ; PARGRADEX “Parent/guardian highest education”

Predictor 4: race_eth; RACEETH “Race and ethnicity of child”

3) Fit the ordinal or the multinomial logistic regression models to your outcome.

hw5data <- pfi19 %>%
  select (enjoy_school, enjoy_school_num, adult_volunteer, dev_delay, parent_educ, race_eth, PPSU, PSTRATUM, FPWT) %>%
  filter (complete.cases(.))

options(survey.lonely.psu = "adjust")

hw5design <- svydesign(ids = ~PPSU, strata= ~PSTRATUM, weights = ~FPWT, data = hw5data, nest = TRUE)

fit.ordinal <- svyolr(enjoy_school ~ adult_volunteer + dev_delay + parent_educ + race_eth, design = hw5design)

ord_logit_model <- fit.ordinal %>%
  tbl_regression()

fit.prop_odds <- svy_vglm(as.ordered(enjoy_school) ~ adult_volunteer + dev_delay + parent_educ + race_eth,
                          design = hw5design,
                          family = cumulative (parallel = T,
                                               reverse = T))

prop_odds_model <- fit.prop_odds %>%
  tbl_regression()

fit.non_prop_odds <- svy_vglm(as.ordered(enjoy_school) ~ adult_volunteer + dev_delay + parent_educ + race_eth,
                          design = hw5design,
                          family = cumulative (parallel = F,
                                               reverse = T))

non_prop_odds_model <- fit.non_prop_odds %>% 
  tbl_regression()

3a) If you use the ordinal model, are the assumptions of the proportional odds model met?

No

3b) How did you evaluate the proportional odds assumption?

I compared the coefficients of each model (in the table below) and several of the values were not the “same” (approximately).

##      adult_volunteerYes dev_delayYes parent_educ0Less than HS
## [1,]              1.996        0.401                    1.370
## [2,]              1.830        0.800                    1.041
##      parent_educ2Some College parent_educ3College Grad parent_educ4Grad School
## [1,]                    1.014                    1.061                   1.307
## [2,]                    0.994                    1.041                   1.414
##      race_ethHispanic race_ethNH Asian race_ethNH Black race_ethOther
## [1,]            1.381            1.556            1.436         0.842
## [2,]            1.491            1.470            1.569         1.086

Describe the results of your model, and

The AIC for proportional odds model is 9.3692518^{7}.

The AIC for non-proportional odds model is 9.3536087^{7}.

The non-proportional odds models has a lower AIC, indicating that it is a better model.

Summarizing the non-proportional odds model …

Household adult volunteerism at school increases the likelihood of the student enjoying school.

Student developmental delay decreases the likelihood of enjoying school (but does not have an impact between levels 2 [agree] and 3 [strongly agree]).

Parent/guardian education (reference level is high school graduate) does not affect the student’s likelihood of enjoying school, except for the those whose parents have graduate school, which increases the likelihood of enjoying school.

Student race/ethnicity of Hispanic or NH Black (reference level is NH White) increase the likelihood of enjoying school.

## svy_vglm.survey.design(as.ordered(enjoy_school) ~ adult_volunteer + 
##     dev_delay + parent_educ + race_eth, design = hw5design, family = cumulative(parallel = F, 
##     reverse = T))
## Stratified Independent Sampling design (with replacement)
## svydesign(ids = ~PPSU, strata = ~PSTRATUM, weights = ~FPWT, data = hw5data, 
##     nest = TRUE)
##                                  Coef         SE        z         p
## (Intercept):1               1.7586557  0.1100979  15.9736 < 2.2e-16
## (Intercept):2              -0.9853851  0.0875764 -11.2517 < 2.2e-16
## adult_volunteerYes:1        0.6907733  0.0767849   8.9962 < 2.2e-16
## adult_volunteerYes:2        0.6055799  0.0521754  11.6066 < 2.2e-16
## dev_delayYes:1             -0.9209221  0.1563819  -5.8889 3.887e-09
## dev_delayYes:2             -0.2027419  0.1257953  -1.6117 0.1070313
## parent_educ0Less than HS:1  0.3118571  0.2180318   1.4303 0.1526227
## parent_educ0Less than HS:2  0.0430703  0.1362448   0.3161 0.7519081
## parent_educ2Some College:1  0.0045344  0.1172766   0.0387 0.9691581
## parent_educ2Some College:2 -0.0047742  0.0886921  -0.0538 0.9570714
## parent_educ3College Grad:1  0.0545975  0.1208777   0.4517 0.6515027
## parent_educ3College Grad:2  0.0393167  0.0902940   0.4354 0.6632507
## parent_educ4Grad School:1   0.2639605  0.1259021   2.0966 0.0360332
## parent_educ4Grad School:2   0.3484911  0.0903262   3.8581 0.0001143
## race_ethHispanic:1          0.3154231  0.1031558   3.0577 0.0022302
## race_ethHispanic:2          0.4024139  0.0673620   5.9739 2.316e-09
## race_ethNH Asian:1          0.4204554  0.2718618   1.5466 0.1219651
## race_ethNH Asian:2          0.3797959  0.0989207   3.8394 0.0001233
## race_ethNH Black:1          0.3523453  0.1365170   2.5810 0.0098525
## race_ethNH Black:2          0.4516969  0.0882148   5.1204 3.049e-07
## race_ethOther:1            -0.1751404  0.1393487  -1.2569 0.2088078
## race_ethOther:2             0.0863303  0.1068557   0.8079 0.4191398

Present output from the model in terms of odds ratios and confidence intervals for all model parameters in a table.

Characteristic Beta 95% CI1 p-value
(Intercept):1 1.8 1.5, 2.0 <0.001
(Intercept):2 -1.0 -1.2, -0.81 <0.001
adult_volunteerYes:1 0.69 0.54, 0.84 <0.001
adult_volunteerYes:2 0.61 0.50, 0.71 <0.001
dev_delayYes:1 -0.92 -1.2, -0.61 <0.001
dev_delayYes:2 -0.20 -0.45, 0.04 0.11
parent_educ0Less than HS:1 0.31 -0.12, 0.74 0.2
parent_educ0Less than HS:2 0.04 -0.22, 0.31 0.8
parent_educ2Some College:1 0.00 -0.23, 0.23 >0.9
parent_educ2Some College:2 0.00 -0.18, 0.17 >0.9
parent_educ3College Grad:1 0.05 -0.18, 0.29 0.7
parent_educ3College Grad:2 0.04 -0.14, 0.22 0.7
parent_educ4Grad School:1 0.26 0.02, 0.51 0.036
parent_educ4Grad School:2 0.35 0.17, 0.53 <0.001
race_ethHispanic:1 0.32 0.11, 0.52 0.002
race_ethHispanic:2 0.40 0.27, 0.53 <0.001
race_ethNH Asian:1 0.42 -0.11, 1.0 0.12
race_ethNH Asian:2 0.38 0.19, 0.57 <0.001
race_ethNH Black:1 0.35 0.08, 0.62 0.010
race_ethNH Black:2 0.45 0.28, 0.62 <0.001
race_ethOther:1 -0.18 -0.45, 0.10 0.2
race_ethOther:2 0.09 -0.12, 0.30 0.4

1 CI = Confidence Interval

LS0tDQp0aXRsZTogIjcyODNfSFc1Ig0KYXV0aG9yOiAiUnlhbiBMYWJpbyINCmRhdGU6ICIyLzI4LzIwMjIiDQpvdXRwdXQ6DQogICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGZpZ19oZWlnaHQ6IDcNCiAgICBmaWdfd2lkdGg6IDcNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNClN1cnZleSBEYXRhIFNvdXJjZTogTmF0aW9uYWwgSG91c2Vob2xkIEVkdWNhdGlvbiBTdXJ2ZXlzIChOSEVTKSBQcm9ncmFtIDIwMTk6IFBhcmVudCBhbmQgRmFtaWx5IEludm9sdmVtZW50IGluIEVkdWNhdGlvbiAoUEZJKQ0KDQojIyAxKSBEZWZpbmUgYW4gb3JkaW5hbCBvciBtdWx0aW5vbWlhbCBvdXRjb21lIHZhcmlhYmxlIG9mIHlvdXIgY2hvb3NpbmcgYW5kIGRlZmluZSBob3cgeW91IHdpbGwgcmVjb2RlIHRoZSBvcmlnaW5hbCB2YXJpYWJsZS4gDQoNCk9yZGluYWwgb3V0Y29tZSB2YXJpYWJsZSBpcyB3aGV0aGVyIGEgY2hpbGQgZW5qb3lzIHNjaG9vbC4NCg0KQ29kZWJvb2sgdmFyaWFibGUgaXMgSXRlbSA1MDogU0VFTkpPWSwgd2l0aCBsZXZlbHMgMSAoU3Ryb25nbHkgYWdyZWUpIHRvIDQgKFN0cm9uZ2x5IGRpc2FncmVlKS4NCg0KSSB3aWxsIHJlY29kZSB0aGUgdmFyaWFibGUgYXMgZW5qb3lfc2Nob29sLCB3aXRoIGxldmVscyAzIGFuZCA0IGFzICIxIiBbZGlzYWdyZWVdLCBsZXZlbCAyIGFzICIyIiBbYWdyZWVdLCBhbmQgbGV2ZWwgMSBhcyAiMyIgW2Rpc2FncmVlXS4NCg0KIyMgMikgU3RhdGUgYSByZXNlYXJjaCBxdWVzdGlvbiBhYm91dCB3aGF0IGZhY3RvcnMgeW91IGJlbGlldmUgd2lsbCBhZmZlY3QgeW91ciBvdXRjb21lIHZhcmlhYmxlLg0KDQpIb3cgZG8gdGhlIGZhY3RvcnMgb2YgcGFyZW50IHZvbHVudGVlcmlzbSwgZGV2ZWxvcG1lbnRhbCBkZWxheSwgcGFyZW50J3MgaGlnaGVzdCBlZHVjYXRpb24gbGV2ZWwsIGFuZCByYWNlL2V0aG5pY2l0eSBhZmZlY3Qgd2hldGhlciBhIGNoaWxkIGVuam95cyBzY2hvb2w/DQoNClByZWRpY3RvciAxOiBhZHVsdF92b2x1bnRlZXI7IEl0ZW0gNjBCOiBGU1ZPTCAiLi4uIGhhcyBhbnkgYWR1bHQgaW4gdGhpcyBjaGlsZCdzIGhvdXNlaG9sZCAuLi4gc2VydmVkIGFzIGEgdm9sdW50ZWVyIGluIHRoaXMgY2hpbGQncyBjbGFzc3Jvb20gb3IgZWxzZXdoZXJlIGluIHRoZSBzY2hvb2w/Ig0KDQpQcmVkaWN0b3IgMjogZGV2X2RlbGF5OyBJdGVtIDc2SzogSERERUxBWVggIkhhcyBhIGhlYWx0aCBvciBlZHVjYXRpb24gcHJvZmVzc2lvbmFsIHRvbGQgeW91IHRoYXQgdGhpcyBjaGlsZCBoYXMgLi4uIGEgZGV2ZWxvcG1lbnRhbCBkZWxheT8iDQoNClByZWRpY3RvciAzOiBwYXJlbnRfZWR1YzsgUEFSR1JBREVYICJQYXJlbnQvZ3VhcmRpYW4gaGlnaGVzdCBlZHVjYXRpb24iDQoNClByZWRpY3RvciA0OiByYWNlX2V0aDsgUkFDRUVUSCAiUmFjZSBhbmQgZXRobmljaXR5IG9mIGNoaWxkIg0KDQojIyAzKSBGaXQgdGhlIG9yZGluYWwgb3IgdGhlIG11bHRpbm9taWFsIGxvZ2lzdGljIHJlZ3Jlc3Npb24gbW9kZWxzIHRvIHlvdXIgb3V0Y29tZS4NCg0KYGBge3IsIGVjaG89RkFMU0UsIHJlc3VsdHM9ImhpZGUiLCBtZXNzYWdlPUZBTFNFfQ0KDQpsaWJyYXJ5KGhhdmVuKQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KFZHQU0pDQpsaWJyYXJ5KHN0YXJnYXplcikNCmxpYnJhcnkoc3VydmV5KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShzdnlWR0FNKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ3RzdW1tYXJ5KQ0KDQojIFJlYWQgU3RhdGEgZmlsZQ0KDQpwZmkxOSA9IHJlYWRfZHRhKGZpbGUgPSAiQzpcXFVUU0FcXE9uZURyaXZlIC0gVW5pdmVyc2l0eSBvZiBUZXhhcyBhdCBTYW4gQW50b25pb1xcMV9NXzcyODNfU3RhdHNJSVxcSG9tZXdvcmtcXHBmaV9wdV9wZXJ0X2RhdF9kdGEuZHRhIikNCg0KIyBSZWNvZGUgdmFyaWFibGVzDQoNCnBmaTE5JGVuam95X3NjaG9vbCA8LSBSZWNvZGUocGZpMTkkU0VFTkpPWSwgcmVjb2Rlcz0iMzo0PTE7IDI9MjsgMT0zOyBlbHNlPU5BIiwgYXMuZmFjdG9yPVQpDQoNCnBmaTE5JGVuam95X3NjaG9vbCA8LSByZWxldmVsKHBmaTE5JGVuam95X3NjaG9vbCwgcmVmID0gIjEiKQ0KDQpwZmkxOSRlbmpveV9zY2hvb2xfbnVtIDwtIFJlY29kZShwZmkxOSRTRUVOSk9ZLCByZWNvZGVzPSIzOjQ9MTsgMj0yOyAxPTM7IGVsc2U9TkEiLCBhcy5mYWN0b3I9RikNCg0KcGZpMTkkRlNWT0wgPC0gYXMubnVtZXJpYyhwZmkxOSRGU1ZPTCkNCg0KcGZpMTkkYWR1bHRfdm9sdW50ZWVyIDwtIFJlY29kZShwZmkxOSRGU1ZPTCwgcmVjb2Rlcz0iMT0nWWVzJzsgMj0nTm8nOyBlbHNlPU5BIiwgYXMuZmFjdG9yPVQpDQoNCnBmaTE5JEhEREVMQVlYIDwtIGFzLm51bWVyaWMocGZpMTkkSERERUxBWVgpDQoNCnBmaTE5JGRldl9kZWxheSA8LSBSZWNvZGUocGZpMTkkSERERUxBWVgsIHJlY29kZXM9IjE9J1llcyc7IDI9J05vJzsgZWxzZT1OQSIsIGFzLmZhY3Rvcj1UKQ0KDQpwZmkxOSRQQVJHUkFERVggPC0gYXMubnVtZXJpYyhwZmkxOSRQQVJHUkFERVgpDQoNCnBmaTE5JHBhcmVudF9lZHVjIDwtIFJlY29kZShwZmkxOSRQQVJHUkFERVgsIHJlY29kZXM9IjE9JzBMZXNzIHRoYW4gSFMnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI9JzFIUyBHcmFkJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAzPScyU29tZSBDb2xsZWdlJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0PSczQ29sbGVnZSBHcmFkJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1PSc0R3JhZCBTY2hvb2wnOyBlbHNlPU5BIiwgYXMuZmFjdG9yPVQpDQoNCnBmaTE5JHBhcmVudF9lZHVjIDwtIHJlbGV2ZWwocGZpMTkkcGFyZW50X2VkdWMsIHJlZiA9ICcxSFMgR3JhZCcpDQoNCnBmaTE5JFJBQ0VFVEggPC0gYXMubnVtZXJpYyhwZmkxOSRSQUNFRVRIKQ0KDQpwZmkxOSRyYWNlX2V0aCA8LSBSZWNvZGUocGZpMTkkUkFDRUVUSCwgcmVjb2Rlcz0iMT0nTkggV2hpdGUnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI9J05IIEJsYWNrJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAzPSdIaXNwYW5pYyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgND0nTkggQXNpYW4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU9J090aGVyJzsgZWxzZT1OQSIsIGFzLmZhY3Rvcj1UKQ0KDQpwZmkxOSRyYWNlX2V0aCA8LSByZWxldmVsKHBmaTE5JHJhY2VfZXRoLCByZWY9J05IIFdoaXRlJykNCg0KIyBGaWx0ZXIgY2FzZXMNCg0KcGZpMTkgPC0gcGZpMTkgJT4lDQogIGZpbHRlcihpcy5uYShlbmpveV9zY2hvb2wpPT1GLA0KICAgICAgICAgaXMubmEoYWR1bHRfdm9sdW50ZWVyKT09RiwNCiAgICAgICAgIGlzLm5hKGRldl9kZWxheSk9PUYsDQogICAgICAgICBpcy5uYShwYXJlbnRfZWR1Yyk9PUYsDQogICAgICAgICBpcy5uYShyYWNlX2V0aCk9PUYpDQoNCmBgYA0KDQpgYGB7ciwgcmVzdWx0cz0naGlkZScsIG1lc3NhZ2U9RkFMU0V9DQoNCmh3NWRhdGEgPC0gcGZpMTkgJT4lDQogIHNlbGVjdCAoZW5qb3lfc2Nob29sLCBlbmpveV9zY2hvb2xfbnVtLCBhZHVsdF92b2x1bnRlZXIsIGRldl9kZWxheSwgcGFyZW50X2VkdWMsIHJhY2VfZXRoLCBQUFNVLCBQU1RSQVRVTSwgRlBXVCkgJT4lDQogIGZpbHRlciAoY29tcGxldGUuY2FzZXMoLikpDQoNCm9wdGlvbnMoc3VydmV5LmxvbmVseS5wc3UgPSAiYWRqdXN0IikNCg0KaHc1ZGVzaWduIDwtIHN2eWRlc2lnbihpZHMgPSB+UFBTVSwgc3RyYXRhPSB+UFNUUkFUVU0sIHdlaWdodHMgPSB+RlBXVCwgZGF0YSA9IGh3NWRhdGEsIG5lc3QgPSBUUlVFKQ0KDQpmaXQub3JkaW5hbCA8LSBzdnlvbHIoZW5qb3lfc2Nob29sIH4gYWR1bHRfdm9sdW50ZWVyICsgZGV2X2RlbGF5ICsgcGFyZW50X2VkdWMgKyByYWNlX2V0aCwgZGVzaWduID0gaHc1ZGVzaWduKQ0KDQpvcmRfbG9naXRfbW9kZWwgPC0gZml0Lm9yZGluYWwgJT4lDQogIHRibF9yZWdyZXNzaW9uKCkNCg0KZml0LnByb3Bfb2RkcyA8LSBzdnlfdmdsbShhcy5vcmRlcmVkKGVuam95X3NjaG9vbCkgfiBhZHVsdF92b2x1bnRlZXIgKyBkZXZfZGVsYXkgKyBwYXJlbnRfZWR1YyArIHJhY2VfZXRoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24gPSBodzVkZXNpZ24sDQogICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGN1bXVsYXRpdmUgKHBhcmFsbGVsID0gVCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSA9IFQpKQ0KDQpwcm9wX29kZHNfbW9kZWwgPC0gZml0LnByb3Bfb2RkcyAlPiUNCiAgdGJsX3JlZ3Jlc3Npb24oKQ0KDQpmaXQubm9uX3Byb3Bfb2RkcyA8LSBzdnlfdmdsbShhcy5vcmRlcmVkKGVuam95X3NjaG9vbCkgfiBhZHVsdF92b2x1bnRlZXIgKyBkZXZfZGVsYXkgKyBwYXJlbnRfZWR1YyArIHJhY2VfZXRoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24gPSBodzVkZXNpZ24sDQogICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGN1bXVsYXRpdmUgKHBhcmFsbGVsID0gRiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSA9IFQpKQ0KDQpub25fcHJvcF9vZGRzX21vZGVsIDwtIGZpdC5ub25fcHJvcF9vZGRzICU+JSANCiAgdGJsX3JlZ3Jlc3Npb24oKQ0KDQpgYGANCg0KIyMjIDNhKSBJZiB5b3UgdXNlIHRoZSBvcmRpbmFsIG1vZGVsLCBhcmUgdGhlIGFzc3VtcHRpb25zIG9mIHRoZSBwcm9wb3J0aW9uYWwgb2RkcyBtb2RlbCBtZXQ/DQoNCk5vDQoNCiMjIyAzYikgSG93IGRpZCB5b3UgZXZhbHVhdGUgdGhlIHByb3BvcnRpb25hbCBvZGRzIGFzc3VtcHRpb24/DQoNCkkgY29tcGFyZWQgdGhlIGNvZWZmaWNpZW50cyBvZiBlYWNoIG1vZGVsIChpbiB0aGUgdGFibGUgYmVsb3cpIGFuZCBzZXZlcmFsIG9mIHRoZSB2YWx1ZXMgd2VyZSBub3QgdGhlICJzYW1lIiAoYXBwcm94aW1hdGVseSkuIA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KZXgxIDwtIHN2eWdsbShJKGVuam95X3NjaG9vbF9udW0gPiAxKSB+IGFkdWx0X3ZvbHVudGVlciArIGRldl9kZWxheSArIHBhcmVudF9lZHVjICsgcmFjZV9ldGgsDQogICAgICAgICAgICBkZXNpZ24gPSBodzVkZXNpZ24sDQogICAgICAgICAgICBmYW1pbHk9ImJpbm9taWFsIikNCg0KZXgyIDwtIHN2eWdsbShJKGVuam95X3NjaG9vbF9udW0gPiAyKSB+IGFkdWx0X3ZvbHVudGVlciArIGRldl9kZWxheSArIHBhcmVudF9lZHVjICsgcmFjZV9ldGgsDQogICAgICAgICAgICBkZXNpZ24gPSBodzVkZXNpZ24sDQogICAgICAgICAgICBmYW1pbHk9ImJpbm9taWFsIikNCg0Kcm91bmQoZXhwKHJiaW5kKGNvZWYoZXgxKVstMV0sDQogICAgICAgICAgICAgICAgY29lZihleDIpWy0xXSkpLDMpDQoNCmBgYA0KDQojIyBEZXNjcmliZSB0aGUgcmVzdWx0cyBvZiB5b3VyIG1vZGVsLCBhbmQNCg0KVGhlIEFJQyBmb3IgcHJvcG9ydGlvbmFsIG9kZHMgbW9kZWwgaXMgYHIgLTIqZml0LnByb3Bfb2RkcyRmaXRAY3JpdGVyaW9uJGxvZ2xpa2VsaWhvb2QgKyAyKmxlbmd0aChmaXQucHJvcF9vZGRzJGNvZWYpYC4NCg0KVGhlIEFJQyBmb3Igbm9uLXByb3BvcnRpb25hbCBvZGRzIG1vZGVsIGlzIGByIC0yKmZpdC5ub25fcHJvcF9vZGRzJGZpdEBjcml0ZXJpb24kbG9nbGlrZWxpaG9vZCArIDIqbGVuZ3RoKGZpdC5wcm9wX29kZHMkY29lZilgLg0KDQpUaGUgbm9uLXByb3BvcnRpb25hbCBvZGRzIG1vZGVscyBoYXMgYSBsb3dlciBBSUMsIGluZGljYXRpbmcgdGhhdCBpdCBpcyBhIGJldHRlciBtb2RlbC4NCg0KU3VtbWFyaXppbmcgdGhlIG5vbi1wcm9wb3J0aW9uYWwgb2RkcyBtb2RlbCAuLi4gDQoNCkhvdXNlaG9sZCBhZHVsdCB2b2x1bnRlZXJpc20gYXQgc2Nob29sIGluY3JlYXNlcyB0aGUgbGlrZWxpaG9vZCBvZiB0aGUgc3R1ZGVudCBlbmpveWluZyBzY2hvb2wuDQoNClN0dWRlbnQgZGV2ZWxvcG1lbnRhbCBkZWxheSBkZWNyZWFzZXMgdGhlIGxpa2VsaWhvb2Qgb2YgZW5qb3lpbmcgc2Nob29sIChidXQgZG9lcyBub3QgaGF2ZSBhbiBpbXBhY3QgYmV0d2VlbiBsZXZlbHMgMiBbYWdyZWVdIGFuZCAzIFtzdHJvbmdseSBhZ3JlZV0pLg0KDQpQYXJlbnQvZ3VhcmRpYW4gZWR1Y2F0aW9uIChyZWZlcmVuY2UgbGV2ZWwgaXMgaGlnaCBzY2hvb2wgZ3JhZHVhdGUpIGRvZXMgbm90IGFmZmVjdCB0aGUgc3R1ZGVudCdzIGxpa2VsaWhvb2Qgb2YgZW5qb3lpbmcgc2Nob29sLCBleGNlcHQgZm9yIHRoZSB0aG9zZSB3aG9zZSBwYXJlbnRzIGhhdmUgZ3JhZHVhdGUgc2Nob29sLCB3aGljaCBpbmNyZWFzZXMgdGhlIGxpa2VsaWhvb2Qgb2YgZW5qb3lpbmcgc2Nob29sLg0KDQpTdHVkZW50IHJhY2UvZXRobmljaXR5IG9mIEhpc3BhbmljIG9yIE5IIEJsYWNrIChyZWZlcmVuY2UgbGV2ZWwgaXMgTkggV2hpdGUpIGluY3JlYXNlIHRoZSBsaWtlbGlob29kIG9mIGVuam95aW5nIHNjaG9vbC4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCnN1bW1hcnkoZml0Lm5vbl9wcm9wX29kZHMpDQoNCmBgYA0KDQojIyBQcmVzZW50IG91dHB1dCBmcm9tIHRoZSBtb2RlbCBpbiB0ZXJtcyBvZiBvZGRzIHJhdGlvcyBhbmQgY29uZmlkZW5jZSBpbnRlcnZhbHMgZm9yIGFsbCBtb2RlbCBwYXJhbWV0ZXJzIGluIGEgdGFibGUuDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KDQpub25fcHJvcF9vZGRzX21vZGVsDQoNCmBgYA0KDQoNCg==