library(tidyverse)
library(broom)
library(plotly)
library(tidycensus) # gets census data that we can use to create maps
library(sf) # helper package for mapping
library(leaflet) # interactive mapping package
library(trendyy)
library(usdata) # this package has a conversion utility for state abbreviations to full names
census_api_key("")
- For this assignment, I chose to look at cigarette smoking rates across the US as well as US census data. The following graph is a choropleth showing each states income according to US census data.
states_leaflet <- get_acs(geography = "state", # gets state by state data
variables = "B19013_001", # this is state income
geometry = TRUE) # gets geometry (the maps)
# shift_geo = T # shifts Hawaii and Alaska
state_colors <- colorNumeric(palette = "viridis", domain = states_leaflet$estimate)
states_leaflet %>%
leaflet() %>%
addTiles() %>%
addPolygons(weight = 1,
fillColor = ~state_colors(estimate),
label = ~paste0(NAME, ", income = ", estimate),
highlight = highlightOptions(weight = 2)) %>%
setView(-95, 40, zoom = 4) %>%
addLegend(pal = state_colors, values = ~estimate)
Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'
The above choropleth shows each states income according to US census data. The lighter colored states have higher incomes whereas darker colored states have lower incomes. According to the graph, states with higher incomes include states like California, Maryland, and New York.
- Per the CDC data of cigarette smoking rates across the US, I also chose to look at hits per state for the term ‘nicotine’. Google uses “hits” as a standardized number that goes from 0-100, not a raw number of searches. The following is a graph of hits per state for the term ‘nicotine’.
nicotine <- trendy("nicotine",
geo = "US",
from = "2020-01-01", to = "2021-01-01")
nicotine_states <- nicotine %>%
get_interest_region()
nicotine_states
NA
nicotine_colors <- colorNumeric(palette = "viridis", domain = nicotine_states$hits)
states_leaflet %>%
rename(location = NAME) %>%
inner_join(nicotine_states) %>%
leaflet() %>%
addTiles() %>%
addPolygons(weight = 1,
fillColor = ~nicotine_colors(hits),
label = ~paste0(location, ", Search volume = ", hits),
highlight = highlightOptions(weight = 2)) %>%
setView(-95, 40, zoom = 4) %>%
addLegend(pal = nicotine_colors, values = ~hits)
Joining, by = "location"
Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'
The choropleth above shows hits per state for the term ‘nicotine’. The lighter states average more hits with darker states averaging less hits. According to the graph, states like Montana, West Virginia, and Idaho have a higher number of hits for ‘nicotine’ than other states.
- The following looks to see if there is a statistically significant relationship between states smoking rates and hits for the term ‘nicotine’.
cig_smoking <- read_csv("Cig_smoking_percent.csv")
nicotine_model <- lm(Cig_percent ~ hits, data = nicotine_data)
glance(nicotine_model)
tidy(nicotine_model)
nicotine_data %>%
drop_na() %>%
plot_ly(x = ~hits,
y = ~Cig_percent,
hoverinfo = "text",
text = ~paste("State: ", location, "<br>", "'Nicotine' search rate: ", hits, "<br>", "Cig smoking percent: ", Cig_percent)) %>%
add_markers(showlegend = F) %>%
add_lines(y = ~fitted(nicotine_model)) %>%
layout(title = "Relationship between google searches for 'nicotine' and smoking percent rates, by state",
xaxis = list(title = "Google search volume for 'nicotine'"),
yaxis = list(title = "State smoking rate, per capita"))
NA
NA
According to the statistics, there is a statistically significant relationship between states smoking rate and hits for the term ‘nicotine’ (p = 0.00). The positive slope on the graph shows this statistically significant relationship. The statistics and graph show that states with a higher smoking rate also google ‘nicotine’ more according to their higher hit score.
- Per the CDC data of cigarette smoking rates across the US, I also chose to look at hits per state for the term ‘chantix’. The following is a graph of hits per state for the term ‘chantix’.
chantix <- trendy("chantix",
geo = "US",
from = "2020-01-01", to = "2021-01-01")
chantix_states <- chantix %>%
get_interest_region()
chantix_states
chantix_states %>%
mutate(State = state2abbr(location)) %>%
inner_join(cig_smoking)
Joining, by = "State"
chantix_data <- chantix_states %>%
mutate(State = state2abbr(location)) %>%
inner_join(cig_smoking)
chantix_colors <- colorNumeric(palette = "viridis", domain = chantix_states$hits)
states_leaflet %>%
rename(location = NAME) %>%
inner_join(chantix_states) %>%
leaflet() %>%
addTiles() %>%
addPolygons(weight = 1,
fillColor = ~chantix_colors(hits),
label = ~paste0(location, ", Search volume = ", hits),
highlight = highlightOptions(weight = 2)) %>%
setView(-95, 40, zoom = 4) %>%
addLegend(pal = chantix_colors, values = ~hits)
Joining, by = "location"
Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'
The choropleth above shows hits per state for the term ‘chantix’. The lighter states average more hits with darker states averaging less hits. According to the graph, states like Arkansas, Idaho, and Kentucky google ‘chantix’ more than other US states.
- The following is done to see if there is a statistically significant relationship between the smoking rates per state and hits for the term ‘chantix’.
chantix_model <- lm(Cig_percent ~ hits, data = chantix_data)
glance(chantix_model)
tidy(chantix_model)
chantix_data %>%
drop_na() %>%
plot_ly(x = ~hits,
y = ~Cig_percent,
hoverinfo = "text",
text = ~paste("State: ", location, "<br>", "'Chantix' search rate: ", hits, "<br>", "Cig smoking percent: ", Cig_percent)) %>%
add_markers(showlegend = F) %>%
add_lines(y = ~fitted(chantix_model)) %>%
layout(title = "Relationship between google searches for 'Chantix' and cig smoking rates, by state",
xaxis = list(title = "Google search volume for 'Chantix'"),
yaxis = list(title = "State smoking rate, per capita"))
NA
NA
According to the statistics, there is a statistically significant relationship between states smoking rate and how much they search the term ‘chantix’ (p = 0.00). The graphs positive slope shows this statistically significant relationship. The statistics and graph show that states with a higher smoking rate also google ‘chantix’ more according to their higher hit score.
LS0tCnRpdGxlOiAiQ2hvcm9wbGV0aHMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShicm9vbSkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkodGlkeWNlbnN1cykgICAgICAjIGdldHMgY2Vuc3VzIGRhdGEgdGhhdCB3ZSBjYW4gdXNlIHRvIGNyZWF0ZSBtYXBzCmxpYnJhcnkoc2YpICAgICAgICAgICAgICAjIGhlbHBlciBwYWNrYWdlIGZvciBtYXBwaW5nCmxpYnJhcnkobGVhZmxldCkgICAgICAgICAjIGludGVyYWN0aXZlIG1hcHBpbmcgcGFja2FnZQpsaWJyYXJ5KHRyZW5keXkpCmxpYnJhcnkodXNkYXRhKSAgICAgICAgICAjIHRoaXMgcGFja2FnZSBoYXMgYSBjb252ZXJzaW9uIHV0aWxpdHkgZm9yIHN0YXRlIGFiYnJldmlhdGlvbnMgdG8gZnVsbCBuYW1lcwpgYGAKYGBge3J9CmNlbnN1c19hcGlfa2V5KCIiKQpgYGAKMS4gRm9yIHRoaXMgYXNzaWdubWVudCwgSSBjaG9zZSB0byBsb29rIGF0IGNpZ2FyZXR0ZSBzbW9raW5nIHJhdGVzIGFjcm9zcyB0aGUgVVMgYXMgd2VsbCBhcyBVUyBjZW5zdXMgZGF0YS4gVGhlIGZvbGxvd2luZyBncmFwaCBpcyBhIGNob3JvcGxldGggc2hvd2luZyBlYWNoIHN0YXRlcyBpbmNvbWUgYWNjb3JkaW5nIHRvIFVTIGNlbnN1cyBkYXRhLgpgYGB7cn0Kc3RhdGVzX2xlYWZsZXQgPC0gZ2V0X2FjcyhnZW9ncmFwaHkgPSAic3RhdGUiLCAgICAgICAjIGdldHMgc3RhdGUgYnkgc3RhdGUgZGF0YQogICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSAiQjE5MDEzXzAwMSIsICAgICAgICAgICMgdGhpcyBpcyBzdGF0ZSBpbmNvbWUKICAgICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBUUlVFKSAgICAgICAgICAgICAgICAgICAjIGdldHMgZ2VvbWV0cnkgKHRoZSBtYXBzKQogICAgICAgICAgICAgICAgICAjIHNoaWZ0X2dlbyA9IFQgICAgICAgICAgICAgICAgICAgICMgc2hpZnRzIEhhd2FpaSBhbmQgQWxhc2thCgpgYGAKYGBge3J9CgpzdGF0ZV9jb2xvcnMgPC0gY29sb3JOdW1lcmljKHBhbGV0dGUgPSAidmlyaWRpcyIsIGRvbWFpbiA9IHN0YXRlc19sZWFmbGV0JGVzdGltYXRlKQoKc3RhdGVzX2xlYWZsZXQgJT4lIAogIGxlYWZsZXQoKSAlPiUgCiAgYWRkVGlsZXMoKSAlPiUKICBhZGRQb2x5Z29ucyh3ZWlnaHQgPSAxLAogICAgICAgICAgICAgIGZpbGxDb2xvciA9IH5zdGF0ZV9jb2xvcnMoZXN0aW1hdGUpLCAKICAgICAgICAgICAgICBsYWJlbCA9IH5wYXN0ZTAoTkFNRSwgIiwgaW5jb21lID0gIiwgZXN0aW1hdGUpLCAgICAgICAgICAgCiAgICAgICAgICAgICAgaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0T3B0aW9ucyh3ZWlnaHQgPSAyKSkgJT4lIAogIHNldFZpZXcoLTk1LCA0MCwgem9vbSA9IDQpICU+JSAKICBhZGRMZWdlbmQocGFsID0gc3RhdGVfY29sb3JzLCB2YWx1ZXMgPSB+ZXN0aW1hdGUpCmBgYApUaGUgYWJvdmUgY2hvcm9wbGV0aCBzaG93cyBlYWNoIHN0YXRlcyBpbmNvbWUgYWNjb3JkaW5nIHRvIFVTIGNlbnN1cyBkYXRhLiBUaGUgbGlnaHRlciBjb2xvcmVkIHN0YXRlcyBoYXZlIGhpZ2hlciBpbmNvbWVzIHdoZXJlYXMgZGFya2VyIGNvbG9yZWQgc3RhdGVzIGhhdmUgbG93ZXIgaW5jb21lcy4gQWNjb3JkaW5nIHRvIHRoZSBncmFwaCwgc3RhdGVzIHdpdGggaGlnaGVyIGluY29tZXMgaW5jbHVkZSBzdGF0ZXMgbGlrZSBDYWxpZm9ybmlhLCBNYXJ5bGFuZCwgYW5kIE5ldyBZb3JrLiAKCjIuIFBlciB0aGUgQ0RDIGRhdGEgb2YgY2lnYXJldHRlIHNtb2tpbmcgcmF0ZXMgYWNyb3NzIHRoZSBVUywgSSBhbHNvIGNob3NlIHRvIGxvb2sgYXQgaGl0cyBwZXIgc3RhdGUgZm9yIHRoZSB0ZXJtICduaWNvdGluZScuIEdvb2dsZSB1c2VzIOKAnGhpdHPigJ0gYXMgYSBzdGFuZGFyZGl6ZWQgbnVtYmVyIHRoYXQgZ29lcyBmcm9tIDAtMTAwLCBub3QgYSByYXcgbnVtYmVyIG9mIHNlYXJjaGVzLiBUaGUgZm9sbG93aW5nIGlzIGEgZ3JhcGggb2YgaGl0cyBwZXIgc3RhdGUgZm9yIHRoZSB0ZXJtICduaWNvdGluZScuCmBgYHtyfQpuaWNvdGluZSA8LSB0cmVuZHkoIm5pY290aW5lIiwgCiAgICAgICAgICAgICAgICAgICBnZW8gPSAiVVMiLCAKICAgICAgICAgICAgICAgICAgIGZyb20gPSAiMjAyMC0wMS0wMSIsIHRvID0gIjIwMjEtMDEtMDEiKQoKCm5pY290aW5lX3N0YXRlcyA8LSBuaWNvdGluZSAlPiUKICBnZXRfaW50ZXJlc3RfcmVnaW9uKCkKCm5pY290aW5lX3N0YXRlcwoKYGBgCmBgYHtyfQoKbmljb3RpbmVfY29sb3JzIDwtIGNvbG9yTnVtZXJpYyhwYWxldHRlID0gInZpcmlkaXMiLCBkb21haW4gPSBuaWNvdGluZV9zdGF0ZXMkaGl0cykKCnN0YXRlc19sZWFmbGV0ICU+JSAKICByZW5hbWUobG9jYXRpb24gPSBOQU1FKSAlPiUgCiAgaW5uZXJfam9pbihuaWNvdGluZV9zdGF0ZXMpICU+JSAKICBsZWFmbGV0KCkgJT4lIAogIGFkZFRpbGVzKCkgJT4lCiAgYWRkUG9seWdvbnMod2VpZ2h0ID0gMSwKICAgICAgICAgICAgICBmaWxsQ29sb3IgPSB+bmljb3RpbmVfY29sb3JzKGhpdHMpLCAKICAgICAgICAgICAgICBsYWJlbCA9IH5wYXN0ZTAobG9jYXRpb24sICIsIFNlYXJjaCB2b2x1bWUgPSAiLCBoaXRzKSwKICAgICAgICAgICAgICBoaWdobGlnaHQgPSBoaWdobGlnaHRPcHRpb25zKHdlaWdodCA9IDIpKSAlPiUgCiAgc2V0VmlldygtOTUsIDQwLCB6b29tID0gNCkgJT4lIAogIGFkZExlZ2VuZChwYWwgPSBuaWNvdGluZV9jb2xvcnMsIHZhbHVlcyA9IH5oaXRzKQpgYGAKVGhlIGNob3JvcGxldGggYWJvdmUgc2hvd3MgaGl0cyBwZXIgc3RhdGUgZm9yIHRoZSB0ZXJtICduaWNvdGluZScuIFRoZSBsaWdodGVyIHN0YXRlcyBhdmVyYWdlIG1vcmUgaGl0cyB3aXRoIGRhcmtlciBzdGF0ZXMgYXZlcmFnaW5nIGxlc3MgaGl0cy4gQWNjb3JkaW5nIHRvIHRoZSBncmFwaCwgc3RhdGVzIGxpa2UgTW9udGFuYSwgV2VzdCBWaXJnaW5pYSwgYW5kIElkYWhvIGhhdmUgYSBoaWdoZXIgbnVtYmVyIG9mIGhpdHMgZm9yICduaWNvdGluZScgdGhhbiBvdGhlciBzdGF0ZXMuIAoKMy4gVGhlIGZvbGxvd2luZyBsb29rcyB0byBzZWUgaWYgdGhlcmUgaXMgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHN0YXRlcyBzbW9raW5nIHJhdGVzIGFuZCBoaXRzIGZvciB0aGUgdGVybSAnbmljb3RpbmUnLiAKYGBge3J9CmNpZ19zbW9raW5nIDwtIHJlYWRfY3N2KCJDaWdfc21va2luZ19wZXJjZW50LmNzdiIpCgpgYGAKYGBge3J9Cm5pY290aW5lX21vZGVsIDwtIGxtKENpZ19wZXJjZW50IH4gaGl0cywgZGF0YSA9IG5pY290aW5lX2RhdGEpCgpnbGFuY2Uobmljb3RpbmVfbW9kZWwpCnRpZHkobmljb3RpbmVfbW9kZWwpCmBgYApgYGB7cn0Kbmljb3RpbmVfZGF0YSAlPiUgCiAgZHJvcF9uYSgpICU+JSAKICBwbG90X2x5KHggPSB+aGl0cywgCiAgICAgICAgICB5ID0gfkNpZ19wZXJjZW50LAogICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiLCAKICAgICAgICAgIHRleHQgPSB+cGFzdGUoIlN0YXRlOiAiLCBsb2NhdGlvbiwgIjxicj4iLCAiJ05pY290aW5lJyBzZWFyY2ggcmF0ZTogIiwgaGl0cywgIjxicj4iLCAiQ2lnIHNtb2tpbmcgcGVyY2VudDogIiwgQ2lnX3BlcmNlbnQpKSAlPiUgCiAgYWRkX21hcmtlcnMoc2hvd2xlZ2VuZCA9IEYpICU+JSAKICBhZGRfbGluZXMoeSA9IH5maXR0ZWQobmljb3RpbmVfbW9kZWwpKSAlPiUgCiAgbGF5b3V0KHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIGdvb2dsZSBzZWFyY2hlcyBmb3IgJ25pY290aW5lJyBhbmQgc21va2luZyBwZXJjZW50IHJhdGVzLCBieSBzdGF0ZSIsCiAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJHb29nbGUgc2VhcmNoIHZvbHVtZSBmb3IgJ25pY290aW5lJyIpLAogICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiU3RhdGUgc21va2luZyByYXRlLCBwZXIgY2FwaXRhIikpCgoKYGBgCkFjY29yZGluZyB0byB0aGUgc3RhdGlzdGljcywgdGhlcmUgaXMgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHN0YXRlcyBzbW9raW5nIHJhdGUgYW5kIGhpdHMgZm9yIHRoZSB0ZXJtICduaWNvdGluZScgKHAgPSAwLjAwKS4gVGhlIHBvc2l0aXZlIHNsb3BlIG9uIHRoZSBncmFwaCBzaG93cyB0aGlzIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwLiBUaGUgc3RhdGlzdGljcyBhbmQgZ3JhcGggc2hvdyB0aGF0IHN0YXRlcyB3aXRoIGEgaGlnaGVyIHNtb2tpbmcgcmF0ZSBhbHNvIGdvb2dsZSAnbmljb3RpbmUnIG1vcmUgYWNjb3JkaW5nIHRvIHRoZWlyIGhpZ2hlciBoaXQgc2NvcmUuIAoKNC4gUGVyIHRoZSBDREMgZGF0YSBvZiBjaWdhcmV0dGUgc21va2luZyByYXRlcyBhY3Jvc3MgdGhlIFVTLCBJIGFsc28gY2hvc2UgdG8gbG9vayBhdCBoaXRzIHBlciBzdGF0ZSBmb3IgdGhlIHRlcm0gJ2NoYW50aXgnLiBUaGUgZm9sbG93aW5nIGlzIGEgZ3JhcGggb2YgaGl0cyBwZXIgc3RhdGUgZm9yIHRoZSB0ZXJtICdjaGFudGl4Jy4gCmBgYHtyfQpjaGFudGl4IDwtIHRyZW5keSgiY2hhbnRpeCIsIAogICAgICAgICAgICAgICAgICAgZ2VvID0gIlVTIiwgCiAgICAgICAgICAgICAgICAgICBmcm9tID0gIjIwMjAtMDEtMDEiLCB0byA9ICIyMDIxLTAxLTAxIikKCgpjaGFudGl4X3N0YXRlcyA8LSBjaGFudGl4ICU+JQogIGdldF9pbnRlcmVzdF9yZWdpb24oKQoKY2hhbnRpeF9zdGF0ZXMKCmBgYApgYGB7cn0KY2hhbnRpeF9zdGF0ZXMgJT4lIAogIG11dGF0ZShTdGF0ZSA9IHN0YXRlMmFiYnIobG9jYXRpb24pKSAlPiUgCiAgaW5uZXJfam9pbihjaWdfc21va2luZykKYGBgCmBgYHtyfQpjaGFudGl4X2RhdGEgPC0gY2hhbnRpeF9zdGF0ZXMgJT4lIAogIG11dGF0ZShTdGF0ZSA9IHN0YXRlMmFiYnIobG9jYXRpb24pKSAlPiUgCiAgaW5uZXJfam9pbihjaWdfc21va2luZykKYGBgCmBgYHtyfQoKY2hhbnRpeF9jb2xvcnMgPC0gY29sb3JOdW1lcmljKHBhbGV0dGUgPSAidmlyaWRpcyIsIGRvbWFpbiA9IGNoYW50aXhfc3RhdGVzJGhpdHMpCgpzdGF0ZXNfbGVhZmxldCAlPiUgCiAgcmVuYW1lKGxvY2F0aW9uID0gTkFNRSkgJT4lIAogIGlubmVyX2pvaW4oY2hhbnRpeF9zdGF0ZXMpICU+JSAKICBsZWFmbGV0KCkgJT4lIAogIGFkZFRpbGVzKCkgJT4lCiAgYWRkUG9seWdvbnMod2VpZ2h0ID0gMSwKICAgICAgICAgICAgICBmaWxsQ29sb3IgPSB+Y2hhbnRpeF9jb2xvcnMoaGl0cyksIAogICAgICAgICAgICAgIGxhYmVsID0gfnBhc3RlMChsb2NhdGlvbiwgIiwgU2VhcmNoIHZvbHVtZSA9ICIsIGhpdHMpLAogICAgICAgICAgICAgIGhpZ2hsaWdodCA9IGhpZ2hsaWdodE9wdGlvbnMod2VpZ2h0ID0gMikpICU+JSAKICBzZXRWaWV3KC05NSwgNDAsIHpvb20gPSA0KSAlPiUgCiAgYWRkTGVnZW5kKHBhbCA9IGNoYW50aXhfY29sb3JzLCB2YWx1ZXMgPSB+aGl0cykKYGBgClRoZSBjaG9yb3BsZXRoIGFib3ZlIHNob3dzIGhpdHMgcGVyIHN0YXRlIGZvciB0aGUgdGVybSAnY2hhbnRpeCcuIFRoZSBsaWdodGVyIHN0YXRlcyBhdmVyYWdlIG1vcmUgaGl0cyB3aXRoIGRhcmtlciBzdGF0ZXMgYXZlcmFnaW5nIGxlc3MgaGl0cy4gQWNjb3JkaW5nIHRvIHRoZSBncmFwaCwgc3RhdGVzIGxpa2UgQXJrYW5zYXMsIElkYWhvLCBhbmQgS2VudHVja3kgZ29vZ2xlICdjaGFudGl4JyBtb3JlIHRoYW4gb3RoZXIgVVMgc3RhdGVzLgoKNS4gVGhlIGZvbGxvd2luZyBpcyBkb25lIHRvIHNlZSBpZiB0aGVyZSBpcyBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHNtb2tpbmcgcmF0ZXMgcGVyIHN0YXRlIGFuZCBoaXRzIGZvciB0aGUgdGVybSAnY2hhbnRpeCcuIApgYGB7cn0KY2hhbnRpeF9tb2RlbCA8LSBsbShDaWdfcGVyY2VudCB+IGhpdHMsIGRhdGEgPSBjaGFudGl4X2RhdGEpCgpnbGFuY2UoY2hhbnRpeF9tb2RlbCkKdGlkeShjaGFudGl4X21vZGVsKQpgYGAKYGBge3J9CmNoYW50aXhfZGF0YSAlPiUgCiAgZHJvcF9uYSgpICU+JSAKICBwbG90X2x5KHggPSB+aGl0cywgCiAgICAgICAgICB5ID0gfkNpZ19wZXJjZW50LAogICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiLCAKICAgICAgICAgIHRleHQgPSB+cGFzdGUoIlN0YXRlOiAiLCBsb2NhdGlvbiwgIjxicj4iLCAiJ0NoYW50aXgnIHNlYXJjaCByYXRlOiAiLCBoaXRzLCAiPGJyPiIsICJDaWcgc21va2luZyBwZXJjZW50OiAiLCBDaWdfcGVyY2VudCkpICU+JSAKICBhZGRfbWFya2VycyhzaG93bGVnZW5kID0gRikgJT4lIAogIGFkZF9saW5lcyh5ID0gfmZpdHRlZChjaGFudGl4X21vZGVsKSkgJT4lIAogIGxheW91dCh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBnb29nbGUgc2VhcmNoZXMgZm9yICdDaGFudGl4JyBhbmQgY2lnIHNtb2tpbmcgcmF0ZXMsIGJ5IHN0YXRlIiwKICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkdvb2dsZSBzZWFyY2ggdm9sdW1lIGZvciAnQ2hhbnRpeCciKSwKICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlN0YXRlIHNtb2tpbmcgcmF0ZSwgcGVyIGNhcGl0YSIpKQoKCmBgYApBY2NvcmRpbmcgdG8gdGhlIHN0YXRpc3RpY3MsIHRoZXJlIGlzIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCByZWxhdGlvbnNoaXAgYmV0d2VlbiBzdGF0ZXMgc21va2luZyByYXRlIGFuZCBob3cgbXVjaCB0aGV5IHNlYXJjaCB0aGUgdGVybSAnY2hhbnRpeCcgKHAgPSAwLjAwKS4gVGhlIGdyYXBocyBwb3NpdGl2ZSBzbG9wZSBzaG93cyB0aGlzIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwLiBUaGUgc3RhdGlzdGljcyBhbmQgZ3JhcGggc2hvdyB0aGF0IHN0YXRlcyB3aXRoIGEgaGlnaGVyIHNtb2tpbmcgcmF0ZSBhbHNvIGdvb2dsZSAnY2hhbnRpeCcgbW9yZSBhY2NvcmRpbmcgdG8gdGhlaXIgaGlnaGVyIGhpdCBzY29yZS4gCgoKCgoKCgoKCg==