Questions 13-18 Flu vaccine questions.
Q18. What are the reasons you would not get an influenza vaccine?
# subset question data, rename columns, gather into single column
q18_df <- df %>%
select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q18_1:Q18_10, weight) %>%
gather(Q18_q, Q18_r, Q18_1:Q18_10, na.rm = T) %>%
mutate(Q18_q = as.factor(Q18_q))
Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
EOF within quoted string
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des18 <- svydesign(ids = ~1, weights = ~weight, data = q18_df[is.na(q18_df$weight)==F, ])
Gender, age, ethnicity, income
# weighted data frame
q18 <- data.frame(svytable(~Q18_q + Q18_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des18, round = T))
# plot templates
title <- ggtitle("Which of the following actions do you take when you have influenza symptoms to avoid someone else from getting sick?")
## main plot
p <- ggplot(q18, aes(Q18_q, weight = Freq)) + ptext
p + geom_bar(position = 'fill') + aes(fill = Q18_r) + title

p2 <- ggplot(q18, aes(Q18_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q18_q, fill = Q18_r)

p2 + geom_bar() + aes(Q18_r, fill = Q18_r) + facet_wrap(~Q18_q) + ptext2

p2 + geom_bar() + aes(Q18_q, fill = Q18_q) + facet_wrap(~Q18_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q18_r) + facet_wrap(~Q18_q)

p2 + geom_bar() + aes(Q18_q, fill = PPGENDER) + facet_wrap(~Q18_r)

p2 + geom_bar(position = 'fill') + aes(Q18_q, fill = PPGENDER) + facet_wrap(~Q18_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q18_q~Q18_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q18_r) + facet_wrap(~Q18_q)

p2 + geom_bar() + aes(Q18_q, fill = ppagecat) + facet_wrap(~Q18_r)

p2 + geom_bar(position = 'fill') + aes(Q18_q, fill = ppagecat) + facet_wrap(~Q18_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q18_q~Q18_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q18_r) + facet_wrap(~Q18_q)

p2 + geom_bar() + aes(Q18_q, fill = PPETHM) + facet_wrap(~Q18_r)

p2 + geom_bar(position = 'fill') + aes(Q18_q, fill = PPETHM) + facet_wrap(~Q18_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q18_q~Q18_r) + ptext2

p2 + geom_bar() + aes(Q18_r, fill = Q18_r) + facet_grid(Q18_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q18_r) + facet_wrap(~Q18_q) + ptext2

p2 + geom_bar() + aes(Q18_q, fill = PPINCIMP) + facet_wrap(~Q18_r)

p2 + geom_bar(position = 'fill') + aes(Q18_q, fill = PPINCIMP) + facet_wrap(~Q18_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q18_q~Q18_r) + ptext2

Education, work, marital status
# update weighted data frame
q18.2 <- data.frame(svytable(~Q18_q + Q18_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des18, round = T))
# restate plots
p3 <- ggplot(q18.2, aes(Q18_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q18_r) + facet_wrap(~Q18_q)

p3 + geom_bar() + aes(Q18_q, fill = PPEDUCAT) + facet_wrap(~Q18_r)

p3 + geom_bar(position = "fill") + aes(Q18_q, fill = PPEDUCAT) + facet_wrap(~Q18_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q18_q~Q18_r) + ptext2

p3 + geom_bar() + aes(Q18_r, fill = Q18_r) + facet_grid(Q18_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q18_r) + facet_wrap(~Q18_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q18_r) + facet_wrap(~Q18_q)

Metro status, region, state, house type, housing status, internet availability
# update weighted data frame
q18.3 <- data.frame(svytable(~Q18_q + Q18_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des18, round = T))
# restate plots
p4 <- ggplot(q18.3, aes(Q18_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q18_r, fill = PPMSACAT) + facet_wrap(~Q18_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q18_r) + facet_wrap(~Q18_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q18_r, fill = ppreg9) + facet_wrap(~Q18_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q18_r, fill = PPSTATEN) + facet_wrap(~Q18_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q18_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q18_r, fill = PPHOUSE) + facet_wrap(~Q18_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q18_r, fill = PPHOUSE) + facet_wrap(~Q18_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q18_r, fill = PPNET) + facet_wrap(~Q18_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q18_r) + facet_wrap(~Q18_q) + ggtitle("By internet availability")

LS0tCnRpdGxlOiAnQmVoYXZpb3IgcGFydCA0OiBWYWNjaW5lJwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRoZW1lOiBwYXBlcgogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogMgogIGh0bWxfZG9jdW1lbnQ6CiAgICBmaWdfaGVpZ2h0OiA0CiAgICBmaWdfd2lkdGg6IDYKICAgIGtlZXBfbWQ6IHllcwogICAgdGhlbWU6IHBhcGVyCiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAyCi0tLQoKUXVlc3Rpb25zIDEzLTE4CkZsdSB2YWNjaW5lIHF1ZXN0aW9ucy4KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQojIyBTZXR1cC4Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGLCBjYWNoZSA9IFQsIGNhY2hlLmNvbW1lbnRzID0gRiwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBzaXplID0gInNtYWxsIikKcm0obGlzdCA9IGxzKGFsbC5uYW1lcyA9IFQpKQpsaWJyYXJ5KHJtYXJrZG93bik7IGxpYnJhcnkoa25pdHIpOyBsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeSh0aWR5cik7IGxpYnJhcnkoZHBseXIpOyBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KHN1cnZleSkKYGBgCgpgYGB7ciBsb2FkLWRhdGEsIGluY2x1ZGU9Rn0KIyMgTG9hZCBkYXRhLgpsb2FkKCJ+L2dpdC9mbHUtc3VydmV5L2RhdGEvY2xlYW5pbmcyLlJEYXRhIikKbG9hZCgifi9naXQvZmx1LXN1cnZleS9kYXRhL3JlY29kaW5nLlJEYXRhIikgICMgbG9hZCAiZGF0YXIiCmRmIDwtIGRhdGFyICAjIHJlY29kZWQgdmFyaWFibGVzCmBgYAoKYGBge3IgZ3JvdXAtZGF0YSwgaW5jbHVkZT1GfQojIyBSZWdyb3VwIHZhcmlhYmxlcy4KIyBpbmNvbWUKaW5jb21lLm1hcCA8LSBjKHJlcCgidW5kZXIgJDEwayIsIDMpLCByZXAoIiQxMGsgdG8gJDI1ayIsIDQpLAogICAgICAgICAgICAgICAgcmVwKCIkMjVrIHRvICQ1MGsiLCA0KSwgcmVwKCIkNTBrIHRvICQ3NWsiLCAyKSwKICAgICAgICAgICAgICAgIHJlcCgiJDc1ayB0byAkMTAwayIsIDIpLCByZXAoIiQxMDBrIHRvICQxNTBrIiwgMiksCiAgICAgICAgICAgICAgICByZXAoIm92ZXIgJDE1MGsiLCAyKSkKZGYkaW5jb21lIDwtIGNvZGUoZGF0YXIkUFBJTkNJTVAsIGluY29tZS5tYXAsICJ1bmRlciAkMTBrIikKaW5jb21lLmxhYiA8LSBjKCJ1bmRlciAkMTBrIiwgIiQxMGsgdG8gJDI1ayIsICIkMjVrIHRvICQ1MGsiLAogICAgICAgICAgICAgICAgIiQ1MGsgdG8gJDc1ayIsICIkNzVrIHRvICQxMDBrIiwgIiQxMDBrIHRvICQxNTBrIiwKICAgICAgICAgICAgICAgICJvdmVyICQxNTBrIikKZGYkaW5jb21lIDwtIGZhY3RvcihkZiRpbmNvbWUsIGxldmVscyA9IGluY29tZS5sYWIpCgojIG1hcml0YWwgc3RhdXMKbWFyaXRhbC5tYXAgPC0gYygic2luZ2xlIiwgInBhcnRuZXJlZCIsICJwYXJ0bmVyZWQiLCAic2luZ2xlIiwgInNpbmdsZSIsICJzaW5nbGUiKQpkZiRtYXJpdGFsIDwtIGNvZGUoZGF0YWYkUFBNQVJJVCwgbWFyaXRhbC5tYXAsICJzaW5nbGUiKQoKIyB3b3JrIHN0YXR1cwp3b3JrLm1hcCA8LSBjKHJlcCgidW5lbXBsb3llZCIsIDUpLAogICAgICAgICAgICAgIHJlcCgiZW1wbG95ZWQiLCAyKSkKZGYkd29yayA8LSBjb2RlKGRhdGFmJFBQV09SSywgd29yay5tYXAsICJ1bmVtcGxveWVkIikKYGBgCgpgYGB7ciBkZXMtc3VydmV5fQojIyBDcmVhdGUgc3VydmV5IG9iamVjdC4Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCgpkZXMgPC0gc3Z5ZGVzaWduKGlkcyA9IH4xLCB3ZWlnaHRzID0gfndlaWdodCwgZGF0YSA9IGRmW2lzLm5hKGRmJHdlaWdodCk9PUYsIF0pCmBgYAoKYGBge3IgcGxvdC10ZW1wLCBpbmNsdWRlPUZ9CiMjIENyZWF0ZSBnZ3Bsb3QgdGVtcGxhdGVzLgpwdGV4dCA8LSB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgwLjkpKSwKICAgICAgICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKcHRleHQyIDwtIHB0ZXh0ICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpCmBgYAoKCgojIyBRMTMuIERvIHlvdSBnZXQgdGhlIGZsdSB2YWNjaW5lPwoKYGBge3IgcTEzfQpxMTMgPC0gYXMuZGF0YS5mcmFtZShzdnl0YWJsZSh+UTEzICsgUFBHRU5ERVIgKyBwcGFnZWN0NCArIFBQRVRITSArIGluY29tZSArIAogICAgUFBFRFVDQVQgKyB3b3JrICsgbWFyaXRhbCwgZGVzLCByb3VuZCA9IFQpKQoKdGl0bGUgPC0gZ2d0aXRsZSgiRG8geW91IGdldCB0aGUgZmx1IHZhY2NpbmU/IikKCnAgPC0gZ2dwbG90KHExMywgYWVzKFExMywgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKCnAgKyBnZW9tX2JhcigpICsgdGl0bGUKYGBgCgpgYGB7cn0KCmBgYAoKCiMjIFExNC4gSG93IG11Y2ggZG8geW91IHBheSB0byBnZXQgYW4gaW5mbHVlbnphIHZhY2NpbmU/CgpgYGB7cn0KcTE0IDwtIGFzLmRhdGEuZnJhbWUoc3Z5dGFibGUoflExNCArIFBQR0VOREVSICsgcHBhZ2VjdDQgKyBQUEVUSE0gKyBpbmNvbWUgKyAKICAgIFBQRURVQ0FUICsgd29yayArIG1hcml0YWwsIGRlcywgcm91bmQgPSBUKSkKCnRpdGxlIDwtIGdndGl0bGUoIlExNC4gSG93IG11Y2ggZG8geW91IHBheSB0byBnZXQgYW4gaW5mbHVlbnphIHZhY2NpbmU/IikKcCA8LSBnZ3Bsb3QocTE0LCBhZXMoUTE0LCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dAoKcCArIGdlb21fYmFyKCkgKyB0aXRsZQpgYGAKCgojIyBRMTUuIEFyZSB5b3UgbW9yZSBsaWtlbHkgdG8gZ2V0IGEgdmFjY2luZSBpZiBvdGhlcnMgYXJvdW5kIHlvdSBnZXQgYSB2YWNjaW5lPwoKYGBge3J9CnExNSA8LSBhcy5kYXRhLmZyYW1lKHN2eXRhYmxlKH5RMTUgKyBQUEdFTkRFUiArIHBwYWdlY3Q0ICsgUFBFVEhNICsgaW5jb21lICsgCiAgICBQUEVEVUNBVCArIHdvcmsgKyBtYXJpdGFsLCBkZXMsIHJvdW5kID0gVCkpCgp0aXRsZSA8LSBnZ3RpdGxlKCJRMTUuIEFyZSB5b3UgbW9yZSBsaWtlbHkgdG8gZ2V0IGEgdmFjY2luZSBpZiBvdGhlcnMgYXJvdW5kIHlvdSBnZXQgYSB2YWNjaW5lPyIpCnAgPC0gZ2dwbG90KHExNSwgYWVzKFExNSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKCnAgKyBnZW9tX2JhcigpICsgdGl0bGUKYGBgCgoKIyMgUTE2LiBBcmUgeW91IG1vcmUgbGlrZWx5IHRvIGdldCBhIHZhY2NpbmUgaWYgb3RoZXJzIGFyb3VuZCB5b3UgZG8gbm90IGdldCBhIHZhY2NpbmU/CgpgYGB7cn0KcTE2IDwtIGFzLmRhdGEuZnJhbWUoc3Z5dGFibGUoflExNiArIFBQR0VOREVSICsgcHBhZ2VjdDQgKyBQUEVUSE0gKyBpbmNvbWUgKyAKICAgIFBQRURVQ0FUICsgd29yayArIG1hcml0YWwsIGRlcywgcm91bmQgPSBUKSkKCnRpdGxlIDwtIGdndGl0bGUoIlExNi4gQXJlIHlvdSBtb3JlIGxpa2VseSB0byBnZXQgYSB2YWNjaW5lIGlmIG90aGVycyBhcm91bmQgeW91IGRvIG5vdCBnZXQgYSB2YWNjaW5lPyIpCnAgPC0gZ2dwbG90KHExNiwgYWVzKFExNiwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKCnAgKyBnZW9tX2JhcigpICsgdGl0bGUKYGBgCgoKIyMgUTE3LiBEbyB5b3UgZ2V0IGEgdmFjY2luZSB0byBwcm90ZWN0IHlvdXJzZWxmLCBwcm90ZWN0IG90aGVycywgb3IgcHJvdGVjdCB5b3Vyc2VsZiBhbmQgb3RoZXJzPwoKYGBge3J9CnExNyA8LSBhcy5kYXRhLmZyYW1lKHN2eXRhYmxlKH5RMTcgKyBQUEdFTkRFUiArIHBwYWdlY3Q0ICsgUFBFVEhNICsgaW5jb21lICsgCiAgICBQUEVEVUNBVCArIHdvcmsgKyBtYXJpdGFsLCBkZXMsIHJvdW5kID0gVCkpCgp0aXRsZSA8LSBnZ3RpdGxlKCJRMTcuIERvIHlvdSBnZXQgYSB2YWNjaW5lIHRvIHByb3RlY3QgeW91cnNlbGYsIHByb3RlY3Qgb3RoZXJzLCBvciBwcm90ZWN0IHlvdXJzZWxmIGFuZCBvdGhlcnM/IikKcCA8LSBnZ3Bsb3QocTE3LCBhZXMoUTE3LCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dAoKcCArIGdlb21fYmFyKCkgKyB0aXRsZQpgYGAKCgojIyBRMTguIFdoYXQgYXJlIHRoZSByZWFzb25zIHlvdSB3b3VsZCBub3QgZ2V0IGFuIGluZmx1ZW56YSB2YWNjaW5lPwoKYGBge3IgcTE4LWRhdGF9CiMgc3Vic2V0IHF1ZXN0aW9uIGRhdGEsIHJlbmFtZSBjb2x1bW5zLCBnYXRoZXIgaW50byBzaW5nbGUgY29sdW1uCnExOF9kZiA8LSBkZiAlPiUKICBzZWxlY3QoQ2FzZUlELCBQUEdFTkRFUiwgUFBBR0UsIHBwYWdlY2F0LCBQUEVUSE0sIFBQSU5DSU1QLCBQUEVEVUMsIFBQRURVQ0FULAogICAgICAgICB3b3JrLCBQUFdPUkssIG1hcml0YWwsIFBQTUFSSVQsIFBQTVNBQ0FULCBwcHJlZzksIFBQU1RBVEVOLCBQUEhPVVNFLCBQUFJFTlQsIFBQTkVULCBRMThfMTpRMThfMTAsIHdlaWdodCkgJT4lCiAgZ2F0aGVyKFExOF9xLCBRMThfciwgUTE4XzE6UTE4XzEwLCBuYS5ybSA9IFQpICU+JQogIG11dGF0ZShRMThfcSA9IGFzLmZhY3RvcihRMThfcSkpCgojIHN1cnZleSBkZXNpZ24Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCmRlczE4IDwtIHN2eWRlc2lnbihpZHMgPSB+MSwgd2VpZ2h0cyA9IH53ZWlnaHQsIGRhdGEgPSBxMThfZGZbaXMubmEocTE4X2RmJHdlaWdodCk9PUYsIF0pCmBgYAoKIyMjIEdlbmRlciwgYWdlLCBldGhuaWNpdHksIGluY29tZQoKYGBge3IgcTE4LXBsb3QtMX0KIyB3ZWlnaHRlZCBkYXRhIGZyYW1lCnExOCA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMThfcSArIFExOF9yICsgUFBHRU5ERVIgKyBwcGFnZWNhdCArIFBQRVRITSArIFBQSU5DSU1QLCBkZXMxOCwgcm91bmQgPSBUKSkKCiMgcGxvdCB0ZW1wbGF0ZXMKdGl0bGUgPC0gZ2d0aXRsZSgiV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGRvIHlvdSB0YWtlIHdoZW4geW91IGhhdmUgaW5mbHVlbnphIHN5bXB0b21zIHRvIGF2b2lkIHNvbWVvbmUgZWxzZSBmcm9tIGdldHRpbmcgc2ljaz8iKQoKIyMgbWFpbiBwbG90CnAgPC0gZ2dwbG90KHExOCwgYWVzKFExOF9xLCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dApwICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKGZpbGwgPSBRMThfcikgKyB0aXRsZQpgYGAKCmBgYHtyIHExOC1wbG90LTFifQpwMiA8LSBnZ3Bsb3QocTE4LCBhZXMoUTE4X3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExOF9xLCBmaWxsID0gUTE4X3IpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMThfciwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3EsIGZpbGwgPSBRMThfcSkgKyBmYWNldF93cmFwKH5RMThfcikgKyBwdGV4dDIKCiMgYnkgZ2VuZGVyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUEdFTkRFUiwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKSArIGdndGl0bGUoIkJ5IGdlbmRlciIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUTE4X3IpICsgZmFjZXRfd3JhcCh+UTE4X3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMThfcSwgZmlsbCA9IFBQR0VOREVSKSArIGZhY2V0X3dyYXAoflExOF9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMThfcSwgZmlsbCA9IFBQR0VOREVSKSArIGZhY2V0X3dyYXAoflExOF9yKSArIGdndGl0bGUoIkJ5IGdlbmRlciIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUEdFTkRFUiwgZmlsbCA9IFBQR0VOREVSKSArIGZhY2V0X2dyaWQoUTE4X3F+UTE4X3IpICsgY29vcmRfZmxpcCgpICsgcHRleHQyCgojIGJ5IGFnZSBncm91cApwMiArIGdlb21fYmFyKCkgKyBhZXMocHBhZ2VjYXQsIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkgKyBnZ3RpdGxlKCJCeSBhZ2UgZ3JvdXAiKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3EsIGZpbGwgPSBwcGFnZWNhdCkgKyBmYWNldF93cmFwKH5RMThfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTE4X3EsIGZpbGwgPSBwcGFnZWNhdCkgKyBmYWNldF93cmFwKH5RMThfcikgKyBnZ3RpdGxlKCJCeSBhZ2UgZ3JvdXAiKQpwMiArIGdlb21fYmFyKCkgKyBhZXMocHBhZ2VjYXQsIGZpbGwgPSBwcGFnZWNhdCkgKyBmYWNldF9ncmlkKFExOF9xflExOF9yKSArIHB0ZXh0MgoKIyBieSBldGhuaWMgZ3JvdXAKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQRVRITSwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKSArIGdndGl0bGUoIkJ5IGV0aG5pYyBncm91cCIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQRVRITSwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3EsIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfd3JhcCh+UTE4X3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFExOF9xLCBmaWxsID0gUFBFVEhNKSArIGZhY2V0X3dyYXAoflExOF9yKSArIGdndGl0bGUoIkJ5IGV0aG5pYyBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVUSE0sIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfZ3JpZChRMThfcX5RMThfcikgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExOF9yLCBmaWxsID0gUTE4X3IpICsgZmFjZXRfZ3JpZChRMThfcX5QUEVUSE0pICsgcHRleHQyCgojIGJ5IGluY29tZQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBJTkNJTVAsIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkgKyBnZ3RpdGxlKCJCeSBpbmNvbWUiKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3EsIGZpbGwgPSBQUElOQ0lNUCkgKyBmYWNldF93cmFwKH5RMThfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTE4X3EsIGZpbGwgPSBQUElOQ0lNUCkgKyBmYWNldF93cmFwKH5RMThfcikgKyBnZ3RpdGxlKCJCeSBpbmNvbWUgZ3JvdXAiKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBJTkNJTVAsIGZpbGwgPSBQUElOQ0lNUCkgKyBmYWNldF9ncmlkKFExOF9xflExOF9yKSArIHB0ZXh0MgoKYGBgCgojIyMgRWR1Y2F0aW9uLCB3b3JrLCBtYXJpdGFsIHN0YXR1cwoKYGBge3IgcTE4LXBsb3QtMn0KIyB1cGRhdGUgd2VpZ2h0ZWQgZGF0YSBmcmFtZQpxMTguMiA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMThfcSArIFExOF9yICsgUFBFRFVDICsgUFBFRFVDQVQgKyB3b3JrICsgUFBXT1JLICsgbWFyaXRhbCArIFBQTUFSSVQsIGRlczE4LCByb3VuZCA9IFQpKQoKIyByZXN0YXRlIHBsb3RzCnAzIDwtIGdncGxvdChxMTguMiwgYWVzKFExOF9xLCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dApgYGAKCmBgYHtyIHExOC1wbG90LTJifQojIGJ5IGVkdWNhdGlvbgpwMyArIGdlb21fYmFyKCkgKyBhZXMoUFBFRFVDQVQsIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkgKyBnZ3RpdGxlKCJCeSBlZHVjYXRpb24iKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKQpwMyArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3EsIGZpbGwgPSBQUEVEVUNBVCkgKyBmYWNldF93cmFwKH5RMThfcikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTE4X3EsIGZpbGwgPSBQUEVEVUNBVCkgKyBmYWNldF93cmFwKH5RMThfcikgKyBnZ3RpdGxlKCJCeSBlZHVjYXRpb24iKQpwMyArIGdlb21fYmFyKCkgKyBhZXMoUFBFRFVDQVQsIGZpbGwgPSBQUEVEVUNBVCkgKyBmYWNldF9ncmlkKFExOF9xflExOF9yKSArIHB0ZXh0MgpwMyArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3IsIGZpbGwgPSBRMThfcikgKyBmYWNldF9ncmlkKFExOF9xflBQRURVQ0FUKSArIHB0ZXh0MgoKIyBieSB3b3JrCnAzICsgZ2VvbV9iYXIoKSArIGFlcyh3b3JrLCBmaWxsID0gUTE4X3IpICsgZmFjZXRfd3JhcCh+UTE4X3EpICsgZ2d0aXRsZSgiQnkgZW1wbG95bWVudCBzdGF0dXMiKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyh3b3JrLCBmaWxsID0gUTE4X3IpICsgZmFjZXRfd3JhcCh+UTE4X3EpCgojIGJ5IG1hcml0YWwKcDMgKyBnZW9tX2JhcigpICsgYWVzKG1hcml0YWwsIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkgKyBnZ3RpdGxlKCJCeSBtYXJpdGFsIHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKG1hcml0YWwsIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkKCmBgYAoKIyMjIE1ldHJvIHN0YXR1cywgcmVnaW9uLCBzdGF0ZSwgaG91c2UgdHlwZSwgaG91c2luZyBzdGF0dXMsIGludGVybmV0IGF2YWlsYWJpbGl0eQoKYGBge3IgcTE4LXBsb3QtM30KIyB1cGRhdGUgd2VpZ2h0ZWQgZGF0YSBmcmFtZQpxMTguMyA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMThfcSArIFExOF9yICsgUFBNU0FDQVQgKyBwcHJlZzkgKyBQUFNUQVRFTiArIFBQSE9VU0UgKyBQUFJFTlQgKyBQUE5FVCwgZGVzMTgsIHJvdW5kID0gVCkpCgojIHJlc3RhdGUgcGxvdHMKcDQgPC0gZ2dwbG90KHExOC4zLCBhZXMoUTE4X3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CmBgYAoKYGBge3IgcTE4LXBsb3QtM2J9CiMgYnkgbWV0cm8gc3RhdHVzCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExOF9yLCBmaWxsID0gUFBNU0FDQVQpICsgZmFjZXRfd3JhcCh+UTE4X3EpICsgZ2d0aXRsZSgiQnkgbWV0cm8gc3RhdHVzIikKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBNU0FDQVQsIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkKCiMgYnkgcmVnaW9uCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExOF9yLCBmaWxsID0gcHByZWc5KSArIGZhY2V0X3dyYXAoflExOF9xKSArIGdndGl0bGUoIkJ5IHJlZ2lvbiIpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhwcHJlZzksIGZpbGwgPSBRMThfcikgKyBmYWNldF93cmFwKH5RMThfcSkgKyBnZ3RpdGxlKCJCeSByZWdpb24iKQoKIyBieSBzdGF0ZQpwNCArIGdlb21fYmFyKCkgKyBhZXMoUTE4X3IsIGZpbGwgPSBQUFNUQVRFTikgKyBmYWNldF93cmFwKH5RMThfcSkgKyBnZ3RpdGxlKCJCeSBzdGF0ZSIpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhQUFNUQVRFTiwgZmlsbCA9IFExOF9xKSArIGNvb3JkX2ZsaXAoKSArIGdndGl0bGUoIkJ5IHN0YXRlIikKCiMgYnkgaG91c2UgdHlwZQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMThfciwgZmlsbCA9IFBQSE9VU0UpICsgZmFjZXRfd3JhcCh+UTE4X3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKGZpbGwgPSBQUEhPVVNFKSArIGdndGl0bGUoIkJ5IGhvdXNlIHR5cGUiKQoKIyBob3VzaW5nIHN0YXR1cwpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMThfciwgZmlsbCA9IFBQSE9VU0UpICsgZmFjZXRfd3JhcCh+UTE4X3EpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhQUEhPVVNFLCBmaWxsID0gUTE4X3IpICsgZmFjZXRfd3JhcCh+UTE4X3EpICsgZ2d0aXRsZSgiQnkgaG91c2luZyIpCgojIGJ5IGludGVybmV0IGF2YWlsYWJpbGl0eQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMThfciwgZmlsbCA9IFBQTkVUKSArIGZhY2V0X3dyYXAoflExOF9xKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE5FVCwgZmlsbCA9IFExOF9yKSArIGZhY2V0X3dyYXAoflExOF9xKSArIGdndGl0bGUoIkJ5IGludGVybmV0IGF2YWlsYWJpbGl0eSIpCgpgYGAKCgo=