Introduction
This data set examines certain aspects of crime patterns, focusing on
two research questions. Our first research question focused on whether
burglary-related crimes are evenly distributed over each month over a
5-year period. Our motivation to investigate this was to see if there
were any monthly trends in burglary rates. Our second research focused
on analyzing the difference in proportion of assault between the
neighborhoods of Sun Valley and Five Points, Colorado. Our motivation
for this question was driven by identifying and comparing if there are
any specific crime distributions across Colorado neighborhoods.
Research Question 1
For our first research question we proposed, is burglary evenly
distributed across all months over five years? To figure this out, we
defined a null hypothesis of H0: p1=p2…=p12, equaling the value of 1/12
of the total amount of burglaries, which is 704 using the tally
function. From there, we defined the alternative hypothesis Ha of having
at least one month not equal to this value, insinuating that the number
of burglaries is not equal over each month.
To analyze this further, we filtered the offense type for each month
using the grepl function to isolate just the number of burglary-type
crimes for each month. We performed another grepl function to sum all
burglaries for each month. This data gives us observed burglary values,
giving us appropriate values for our null, and using the previous tally
function, we have expected values of burglaries for the alternative.
After this, we created a new data frame to get a combined data set that
displays observed vs. expected so that we see a clear contrast between
the two when we create a visual for them using a bar chart. Doing this,
we see that burglaries are not equal across all months, showing a clear
difference between the two.
Following this, we did a chi-squared goodness of fit test, which gave
us a p-value of 6.33e-07. Since the P-value is less than a significance
level of 0.05, we reject the null hypothesis that burglary rates are
evenly distributed across all months over the given 5-year period. This
result provides strong evidence that at least one-month burglary rates
differ significantly from the others, indicating that burglary rates are
not uniform throughout the year.
Research Question 2
For our second research question we proposed, does the proportion of
assault-related crimes differ between Sun Valley and Five Points,
Colorado? For this question, we defined the null hypothesis H0 as p1=p2,
where p1 is Sun Valley assault proportions and p2 is Five Points assault
proportions. From here we defined our alternative hypothesis Ha as p1 is
not equal to p2, insinuating a differing amount in proportions for both
neighborhoods.
To analyze this question further, we filtered the data for assault in
these neighborhoods using a combination of tally, mutate, and filter
functions. Proportions from here were then calculated by solving total
assaults divided by total crimes for both neighborhoods. To visualize
this, we created a bar chart that displayed the percentage of assaults
in comparison to total crime for both neighborhoods. This visual clearly
showed the difference in proportions, with Five Points having a larger
proportion than that of Sun Valley.
To confirm this further, we performed a prop test for the proportion
of assault between the two neighborhoods, which gave us a p-value of
0.03718, and because the p-value is less than a significance level of
0.05, we reject the null hypothesis, meaning that the proportion of
crimes that are assaults is not equal for both neighborhoods. This
result gives us strong evidence that assaults in Five Points
neighborhoods are higher than assaults in Sun Valley neighborhoods.
Appendix
Put your R code to perform the hypothesis tests here. It must
appear in your report with the output
total_burglaries <- sum(CrimebyMonth$total_burglaries)
expected_burglaries <- total_burglaries / 12
CrimebyMonth <- CrimebyMonth |>
mutate(expected_burglaries = expected_burglaries)
print(CrimebyMonth)
observed <- CrimebyMonth$total_burglaries
expected <- CrimebyMonth$expected_burglaries
chisq_test <- xchisq.test(observed, p = rep(1/12, 12))
Chi-squared test for given probabilities
data: x
X-squared = 49.972, df = 11, p-value = 6.333e-07
695 824 706 621 673 722 727 723 769 653 698 635
(703.83) (703.83) (703.83) (703.83) (703.83) (703.83) (703.83) (703.83) (703.83) (703.83) (703.83) (703.83)
[ 0.1109] [20.5163] [ 0.0067] [ 9.7486] [ 1.3507] [ 0.4689] [ 0.7625] [ 0.5219] [ 6.0337] [ 3.6714] [ 0.0483] [ 6.7317]
<-0.333> < 4.529> < 0.082> <-3.122> <-1.162> < 0.685> < 0.873> < 0.722> < 2.456> <-1.916> <-0.220> <-2.595>
key:
observed
(expected)
[contribution to X-squared]
<Pearson residual>
print(chisq_test)
Chi-squared test for given probabilities
data: x
X-squared = 49.972, df = 11, p-value = 6.333e-07
prop.test(x = Assault_nbrhd, n = Total_crimes)
2-sample test for equality of proportions with continuity correction
data: Assault_nbrhd out of Total_crimes
X-squared = 4.3421, df = 1, p-value = 0.03718
alternative hypothesis: two.sided
95 percent confidence interval:
-0.042869545 0.004144904
sample estimates:
prop 1 prop 2
0.02088536 0.04024768
prop_test_result <-prop.test(x = Assault_nbrhd, n = Total_crimes, alternative = "two.sided")
LS0tDQp0aXRsZTogIkdyb3VwIDYgRGF0YSBQcm9qZWN0IFJlcG9ydCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyfQ0KIyBDbGVhciB3b3Jrc3BhY2UNCnJtKGxpc3QgPSBscygpKSANCg0KIyB5b3VyIGNvZGUgd2lsbCBOT1QgYmUgaW5jbHVkZWQgaW4gdGhlIGh0bWwgZm9yIHRoaXMgYXNzaWdubWVudA0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89RkFMU0UpIA0KIyB5b3VyIG91dHB1dCB3aWxsIE5PVCBiZSBpbmNsdWRlZCBpbiB0aGUgaHRtbCBmb3IgdGhpcyBhc3NpZ25tZW50IChleGNlcHQgZmlndXJlcyBhdCB0aGUgZW5kKQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGluY2x1ZGU9RkFMU0UpIA0KDQojIGxvYWQgcGFja2FnZXMgd2UgbmVlZCBmb3IgdGhpcyBsYWINCmxpYnJhcnkobW9zYWljLCB3YXJuLmNvbmZsaWN0cyA9IEZBTFNFKSANCmxpYnJhcnkoZ2dmb3JtdWxhLCB3YXJuLmNvbmZsaWN0cyA9IEZBTFNFKQ0KbGlicmFyeShMb2NrNURhdGEsIHdhcm4uY29uZmxpY3RzID0gRkFMU0UpDQpsaWJyYXJ5KGRwbHlyLCB3YXJuLmNvbmZsaWN0cyA9IEZBTFNFKQ0KDQoNCiMgTG9hZCB5b3VyIGRhdGENClJhd0RhdGEgPC0gcmVhZC5jc3YoZmlsZS5jaG9vc2UoKSkNCg0KIyBQZXJmb3JtIGFueSBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zIA0KDQojUmVzZWFyY2ggcXVlc3Rpb24gb25lIHRyYW5zZm9ybWF0aW9ucyANCg0KdGFsbHkob2ZmZW5zZV90eXBlX2lkfm1vbnRoLGRhdGE9UmF3RGF0YSkNCkNyaW1lYnlNb250aCA8LSBSYXdEYXRhIHw+IGZpbHRlcihncmVwbCgiYnVyZyIsIG9mZmVuc2VfdHlwZV9pZCkpIHw+IGdyb3VwX2J5KG1vbnRoLCBvZmZlbnNlX3R5cGVfaWQpIHw+IHN1bW1hcml6ZShuPW4oKSkgDQoNCkNyaW1lYnlNb250aCA8LSBSYXdEYXRhIHw+DQogIGZpbHRlcihncmVwbCgiYnVyZyIsIG9mZmVuc2VfdHlwZV9pZCwgaWdub3JlLmNhc2UgPSBUUlVFKSkgfD4NCiAgZ3JvdXBfYnkobW9udGgpIHw+DQogIHN1bW1hcml6ZSh0b3RhbF9idXJnbGFyaWVzID0gbigpKQ0KDQojUmVzZWFyY2ggcXVlc3Rpb24gdHdvIHRyYW5zZm9ybWF0aW9ucyANCg0KQ3JpbWVEYXRhICA8LSBkcm9wbGV2ZWxzKFJhd0RhdGEgfD4JCQkJCSAgDQogDQpmaWx0ZXIobmJyaGRfbmFtZT09ICJmaXZlLXBvaW50cyIgfCBuYnJoZF9uYW1lPT0ic3VuLXZhbGxleSIpKSAgDQogDQpjcmltZV90YWxseSA8LSB0YWxseSh+bmJyaGRfbmFtZSwgZGF0YT1DcmltZURhdGEpICAgDQogDQpGaXZlUG9pbnRzIDwtIGNyaW1lX3RhbGx5WyJmaXZlLXBvaW50cyJdDQpTdW5WYWxsZXkgPC0gY3JpbWVfdGFsbHlbInN1bi12YWxsZXkiXQ0KIA0KVG90YWxfY3JpbWVzIDwtIGMoRml2ZVBvaW50cywgU3VuVmFsbGV5KSANCiANCkFzc2F1bHRfZGF0YSAgPC0gQ3JpbWVEYXRhIHw+CSBtdXRhdGUoQXNzYXVsdFRvdCA9IGNhc2Vfd2hlbiggb2ZmZW5zZV90eXBlX2lkPT0gImFnZ3JhdmF0ZWQtYXNzYXVsdCIgfiAxLCBvZmZlbnNlX3R5cGVfaWQ9PSAiYXNzYXVsdC1zaW1wbGUifjEpKSAgDQogDQpBc3NhdWx0X0ZpbmFsIDwtIGRyb3BsZXZlbHMoQXNzYXVsdF9kYXRhfD4gIGZpbHRlcihBc3NhdWx0VG90PT0xICkpICANCiANCkFzc2F1bHRfbmJyaGQ9IHN1bShBc3NhdWx0VG90fm5icmhkX25hbWUsIGRhdGE9QXNzYXVsdF9GaW5hbCkgIA0KIA0KQXNzYXVsdF9UYWJsZSAgPC0gQ3JpbWVEYXRhIHw+DQogIG11dGF0ZShBc3NhdWx0VG90ID0gY2FzZV93aGVuKG9mZmVuc2VfdHlwZV9pZCA9PSAiYWdncmF2YXRlZC1hc3NhdWx0IiB+IDEsIG9mZmVuc2VfdHlwZV9pZCA9PSAiYXNzYXVsdC1zaW1wbGUiIH4gMSwgVFJVRSB+IDApKSB8Pg0KICBncm91cF9ieShuYnJoZF9uYW1lKSB8PiBzdW1tYXJpemUoVG90YWxfQ3JpbWVzID0gbigpLCBUb3RhbF9Bc3NhdWx0cyA9IHN1bShBc3NhdWx0VG90KSwgUHJvcG9ydGlvbl9Bc3NhdWx0cyA9IFRvdGFsX0Fzc2F1bHRzIC8gVG90YWxfQ3JpbWVzKQ0KICANCg0KYGBgDQoNCg0KIyMgSW50cm9kdWN0aW9uDQoNClRoaXMgZGF0YSBzZXQgZXhhbWluZXMgY2VydGFpbiBhc3BlY3RzIG9mIGNyaW1lIHBhdHRlcm5zLCBmb2N1c2luZyBvbiB0d28gcmVzZWFyY2ggcXVlc3Rpb25zLiBPdXIgZmlyc3QgcmVzZWFyY2ggcXVlc3Rpb24gZm9jdXNlZCBvbiB3aGV0aGVyIGJ1cmdsYXJ5LXJlbGF0ZWQgY3JpbWVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgb3ZlciBlYWNoIG1vbnRoIG92ZXIgYSA1LXllYXIgcGVyaW9kLiBPdXIgbW90aXZhdGlvbiB0byBpbnZlc3RpZ2F0ZSB0aGlzIHdhcyB0byBzZWUgaWYgdGhlcmUgd2VyZSBhbnkgbW9udGhseSB0cmVuZHMgaW4gYnVyZ2xhcnkgcmF0ZXMuIE91ciBzZWNvbmQgcmVzZWFyY2ggZm9jdXNlZCBvbiBhbmFseXppbmcgdGhlIGRpZmZlcmVuY2UgaW4gcHJvcG9ydGlvbiBvZiBhc3NhdWx0IGJldHdlZW4gdGhlIG5laWdoYm9yaG9vZHMgb2YgU3VuIFZhbGxleSBhbmQgRml2ZSBQb2ludHMsIENvbG9yYWRvLiBPdXIgbW90aXZhdGlvbiBmb3IgdGhpcyBxdWVzdGlvbiB3YXMgZHJpdmVuIGJ5IGlkZW50aWZ5aW5nIGFuZCBjb21wYXJpbmcgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjcmltZSBkaXN0cmlidXRpb25zIGFjcm9zcyBDb2xvcmFkbyBuZWlnaGJvcmhvb2RzLg0KDQojIyBSZXNlYXJjaCBRdWVzdGlvbiAxDQoNCkZvciBvdXIgZmlyc3QgcmVzZWFyY2ggcXVlc3Rpb24gd2UgcHJvcG9zZWQsIGlzIGJ1cmdsYXJ5IGV2ZW5seSBkaXN0cmlidXRlZCBhY3Jvc3MgYWxsIG1vbnRocyBvdmVyIGZpdmUgeWVhcnM/IFRvIGZpZ3VyZSB0aGlzIG91dCwgd2UgZGVmaW5lZCBhIG51bGwgaHlwb3RoZXNpcyBvZiBIMDogcDE9cDLigKY9cDEyLCBlcXVhbGluZyB0aGUgdmFsdWUgb2YgMS8xMiBvZiB0aGUgdG90YWwgYW1vdW50IG9mIGJ1cmdsYXJpZXMsIHdoaWNoIGlzIDcwNCB1c2luZyB0aGUgdGFsbHkgZnVuY3Rpb24uIEZyb20gdGhlcmUsIHdlIGRlZmluZWQgdGhlIGFsdGVybmF0aXZlIGh5cG90aGVzaXMgSGEgb2YgaGF2aW5nIGF0IGxlYXN0IG9uZSBtb250aCBub3QgZXF1YWwgdG8gdGhpcyB2YWx1ZSwgaW5zaW51YXRpbmcgdGhhdCB0aGUgbnVtYmVyIG9mIGJ1cmdsYXJpZXMgaXMgbm90IGVxdWFsIG92ZXIgZWFjaCBtb250aC4NCg0KVG8gYW5hbHl6ZSB0aGlzIGZ1cnRoZXIsIHdlIGZpbHRlcmVkIHRoZSBvZmZlbnNlIHR5cGUgZm9yIGVhY2ggbW9udGggdXNpbmcgdGhlIGdyZXBsIGZ1bmN0aW9uIHRvIGlzb2xhdGUganVzdCB0aGUgbnVtYmVyIG9mIGJ1cmdsYXJ5LXR5cGUgY3JpbWVzIGZvciBlYWNoIG1vbnRoLiBXZSBwZXJmb3JtZWQgYW5vdGhlciBncmVwbCBmdW5jdGlvbiB0byBzdW0gYWxsIGJ1cmdsYXJpZXMgZm9yIGVhY2ggbW9udGguIFRoaXMgZGF0YSBnaXZlcyB1cyBvYnNlcnZlZCBidXJnbGFyeSB2YWx1ZXMsIGdpdmluZyB1cyBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIG91ciBudWxsLCBhbmQgdXNpbmcgdGhlIHByZXZpb3VzIHRhbGx5IGZ1bmN0aW9uLCB3ZSBoYXZlIGV4cGVjdGVkIHZhbHVlcyBvZiBidXJnbGFyaWVzIGZvciB0aGUgYWx0ZXJuYXRpdmUuIEFmdGVyIHRoaXMsIHdlIGNyZWF0ZWQgYSBuZXcgZGF0YSBmcmFtZSB0byBnZXQgYSBjb21iaW5lZCBkYXRhIHNldCB0aGF0IGRpc3BsYXlzIG9ic2VydmVkIHZzLiBleHBlY3RlZCBzbyB0aGF0IHdlIHNlZSBhIGNsZWFyIGNvbnRyYXN0IGJldHdlZW4gdGhlIHR3byB3aGVuIHdlIGNyZWF0ZSBhIHZpc3VhbCBmb3IgdGhlbSB1c2luZyBhIGJhciBjaGFydC4gRG9pbmcgdGhpcywgd2Ugc2VlIHRoYXQgYnVyZ2xhcmllcyBhcmUgbm90IGVxdWFsIGFjcm9zcyBhbGwgbW9udGhzLCBzaG93aW5nIGEgY2xlYXIgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28uDQoNCkZvbGxvd2luZyB0aGlzLCB3ZSBkaWQgYSBjaGktc3F1YXJlZCBnb29kbmVzcyBvZiBmaXQgdGVzdCwgd2hpY2ggZ2F2ZSB1cyBhIHAtdmFsdWUgb2YgNi4zM2UtMDcuIFNpbmNlIHRoZSBQLXZhbHVlIGlzIGxlc3MgdGhhbiBhIHNpZ25pZmljYW5jZSBsZXZlbCBvZiAwLjA1LCB3ZSByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcyB0aGF0IGJ1cmdsYXJ5IHJhdGVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgYWNyb3NzIGFsbCBtb250aHMgb3ZlciB0aGUgZ2l2ZW4gNS15ZWFyIHBlcmlvZC4gVGhpcyByZXN1bHQgcHJvdmlkZXMgc3Ryb25nIGV2aWRlbmNlIHRoYXQgYXQgbGVhc3Qgb25lLW1vbnRoIGJ1cmdsYXJ5IHJhdGVzIGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhlIG90aGVycywgaW5kaWNhdGluZyB0aGF0IGJ1cmdsYXJ5IHJhdGVzIGFyZSBub3QgdW5pZm9ybSB0aHJvdWdob3V0IHRoZSB5ZWFyLg0KDQojIyBSZXNlYXJjaCBRdWVzdGlvbiAyDQpGb3Igb3VyIHNlY29uZCByZXNlYXJjaCBxdWVzdGlvbiB3ZSBwcm9wb3NlZCwgZG9lcyB0aGUgcHJvcG9ydGlvbiBvZiBhc3NhdWx0LXJlbGF0ZWQgY3JpbWVzIGRpZmZlciBiZXR3ZWVuIFN1biBWYWxsZXkgYW5kIEZpdmUgUG9pbnRzLCBDb2xvcmFkbz8gRm9yIHRoaXMgcXVlc3Rpb24sIHdlIGRlZmluZWQgdGhlIG51bGwgaHlwb3RoZXNpcyBIMCBhcyBwMT1wMiwgd2hlcmUgcDEgaXMgU3VuIFZhbGxleSBhc3NhdWx0IHByb3BvcnRpb25zIGFuZCBwMiBpcyBGaXZlIFBvaW50cyBhc3NhdWx0IHByb3BvcnRpb25zLiBGcm9tIGhlcmUgd2UgZGVmaW5lZCBvdXIgYWx0ZXJuYXRpdmUgaHlwb3RoZXNpcyBIYSBhcyBwMSBpcyBub3QgZXF1YWwgdG8gcDIsIGluc2ludWF0aW5nIGEgZGlmZmVyaW5nIGFtb3VudCBpbiBwcm9wb3J0aW9ucyBmb3IgYm90aCBuZWlnaGJvcmhvb2RzLg0KDQpUbyBhbmFseXplIHRoaXMgcXVlc3Rpb24gZnVydGhlciwgd2UgZmlsdGVyZWQgdGhlIGRhdGEgZm9yIGFzc2F1bHQgaW4gdGhlc2UgbmVpZ2hib3Job29kcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIHRhbGx5LCBtdXRhdGUsIGFuZCBmaWx0ZXIgZnVuY3Rpb25zLiBQcm9wb3J0aW9ucyBmcm9tIGhlcmUgd2VyZSB0aGVuIGNhbGN1bGF0ZWQgYnkgc29sdmluZyB0b3RhbCBhc3NhdWx0cyBkaXZpZGVkIGJ5IHRvdGFsIGNyaW1lcyBmb3IgYm90aCBuZWlnaGJvcmhvb2RzLiBUbyB2aXN1YWxpemUgdGhpcywgd2UgY3JlYXRlZCBhIGJhciBjaGFydCB0aGF0IGRpc3BsYXllZCB0aGUgcGVyY2VudGFnZSBvZiBhc3NhdWx0cyBpbiBjb21wYXJpc29uIHRvIHRvdGFsIGNyaW1lIGZvciBib3RoIG5laWdoYm9yaG9vZHMuIFRoaXMgdmlzdWFsIGNsZWFybHkgc2hvd2VkIHRoZSBkaWZmZXJlbmNlIGluIHByb3BvcnRpb25zLCB3aXRoIEZpdmUgUG9pbnRzIGhhdmluZyBhIGxhcmdlciBwcm9wb3J0aW9uIHRoYW4gdGhhdCBvZiBTdW4gVmFsbGV5Lg0KDQpUbyBjb25maXJtIHRoaXMgZnVydGhlciwgd2UgcGVyZm9ybWVkIGEgcHJvcCB0ZXN0IGZvciB0aGUgcHJvcG9ydGlvbiBvZiBhc3NhdWx0IGJldHdlZW4gdGhlIHR3byBuZWlnaGJvcmhvb2RzLCB3aGljaCBnYXZlIHVzIGEgcC12YWx1ZSBvZiAwLjAzNzE4LCBhbmQgYmVjYXVzZSB0aGUgcC12YWx1ZSBpcyBsZXNzIHRoYW4gYSBzaWduaWZpY2FuY2UgbGV2ZWwgb2YgMC4wNSwgd2UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMsIG1lYW5pbmcgdGhhdCB0aGUgcHJvcG9ydGlvbiBvZiBjcmltZXMgdGhhdCBhcmUgYXNzYXVsdHMgaXMgbm90IGVxdWFsIGZvciBib3RoIG5laWdoYm9yaG9vZHMuIFRoaXMgcmVzdWx0IGdpdmVzIHVzIHN0cm9uZyBldmlkZW5jZSB0aGF0IGFzc2F1bHRzIGluIEZpdmUgUG9pbnRzIG5laWdoYm9yaG9vZHMgYXJlIGhpZ2hlciB0aGFuIGFzc2F1bHRzIGluIFN1biBWYWxsZXkgbmVpZ2hib3Job29kcy4NCg0KDQogIA0KXG5ld3BhZ2UNCg0KIyMgRmlndXJlcw0KDQpgYGB7ciwgaW5jbHVkZSA9IFR9DQpnZl9iYXIoIH4gbW9udGgsIGRhdGEgPSBDcmltZWJ5TW9udGgsIHdlaWdodCA9IH4gdG90YWxfYnVyZ2xhcmllcykgKw0KICBnZ3RpdGxlKCJPYnNlcnZlZCBCdXJnbGFyeSBDb3VudHMgYnkgTW9udGgiKSArDQogIHhsYWIoIk1vbnRoIikgKw0KICB5bGFiKCJPYnNlcnZlZCBCdXJnbGFyeSBDb3VudCIpDQoNCm9ic2VydmVkX3ZzX2V4cGVjdGVkIDwtIGRhdGEuZnJhbWUoDQogIG1vbnRoID0gcmVwKENyaW1lYnlNb250aCRtb250aCwgMiksICMgUmVwZWF0IGVhY2ggbW9udGggdHdpY2UNCiAgdHlwZSA9IHJlcChjKCJPYnNlcnZlZCIsICJFeHBlY3RlZCIpLCBlYWNoID0gbnJvdyhDcmltZWJ5TW9udGgpKSwgIyBBc3NpZ24gdHlwZSAoT2JzZXJ2ZWQvRXhwZWN0ZWQpDQogIGNvdW50ID0gYyhDcmltZWJ5TW9udGgkdG90YWxfYnVyZ2xhcmllcywgQ3JpbWVieU1vbnRoJGV4cGVjdGVkX2J1cmdsYXJpZXMpICMgQ29tYmluZSBvYnNlcnZlZCBhbmQgZXhwZWN0ZWQgY291bnRzDQopDQpnZl9iYXIoIH4gbW9udGgsIGZpbGwgPSB+IHR5cGUsIGRhdGEgPSBvYnNlcnZlZF92c19leHBlY3RlZCwgd2VpZ2h0ID0gfiBjb3VudCwgcG9zaXRpb24gPSAiZG9kZ2UiKSArDQogIGdndGl0bGUoIk9ic2VydmVkIHZzIEV4cGVjdGVkIEJ1cmdsYXJ5IENvdW50cyBieSBNb250aCIpICsNCiAgeGxhYigiTW9udGgiKSArDQogIHlsYWIoIkJ1cmdsYXJ5IENvdW50IikNCmBgYA0KDQpgYGB7ciwgaW5jbHVkZSA9IFR9DQpnZ3Bsb3QoQXNzYXVsdF9UYWJsZSwgYWVzKHggPSBuYnJoZF9uYW1lKSkgKyANCiANCiAgCWdlb21fYmFyKGFlcyh5ID0gVG90YWxfQ3JpbWVzLCBmaWxsID0gIlRvdGFsIENyaW1lcyIpLCBzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArIA0KIA0KZ2VvbV9iYXIoYWVzKHkgPSBUb3RhbF9Bc3NhdWx0cywgZmlsbCA9ICJUb3RhbCBBc3NhdWx0cyIpLCBzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArIA0KIA0KbGFicyh0aXRsZSA9ICJDcmltZXMgYW5kIEFzc2F1bHRzIGluIEZpdmUgUG9pbnRzIGFuZCBTdW4gVmFsbGV5IiwgeCA9ICJOZWlnaGJvcmhvb2QiLCAgeSA9ICJDb3VudCIsIGZpbGwgPSAiTWV0cmljIikNCg0KYGBgDQoNCiMgQXBwZW5kaXgNCg0KKlB1dCB5b3VyIFIgY29kZSB0byBwZXJmb3JtIHRoZSBoeXBvdGhlc2lzIHRlc3RzIGhlcmUuICBJdCBtdXN0IGFwcGVhciBpbiB5b3VyIHJlcG9ydCB3aXRoIHRoZSBvdXRwdXQqDQoNCmBgYHtyLCBpbmNsdWRlID0gVCwgZWNobyA9IFR9DQoNCnRvdGFsX2J1cmdsYXJpZXMgPC0gc3VtKENyaW1lYnlNb250aCR0b3RhbF9idXJnbGFyaWVzKQ0KZXhwZWN0ZWRfYnVyZ2xhcmllcyA8LSB0b3RhbF9idXJnbGFyaWVzIC8gMTINCkNyaW1lYnlNb250aCA8LSBDcmltZWJ5TW9udGggfD4gDQogIG11dGF0ZShleHBlY3RlZF9idXJnbGFyaWVzID0gZXhwZWN0ZWRfYnVyZ2xhcmllcykNCnByaW50KENyaW1lYnlNb250aCkNCm9ic2VydmVkIDwtIENyaW1lYnlNb250aCR0b3RhbF9idXJnbGFyaWVzDQpleHBlY3RlZCA8LSBDcmltZWJ5TW9udGgkZXhwZWN0ZWRfYnVyZ2xhcmllcw0KY2hpc3FfdGVzdCA8LSB4Y2hpc3EudGVzdChvYnNlcnZlZCwgcCA9IHJlcCgxLzEyLCAxMikpDQpwcmludChjaGlzcV90ZXN0KQ0KDQpgYGANCg0KYGBge3IsIGluY2x1ZGUgPSBULCBlY2hvID0gVH0NCg0KcHJvcC50ZXN0KHggPSBBc3NhdWx0X25icmhkLCBuID0gVG90YWxfY3JpbWVzKQ0KcHJvcF90ZXN0X3Jlc3VsdCA8LXByb3AudGVzdCh4ID0gQXNzYXVsdF9uYnJoZCwgbiA9IFRvdGFsX2NyaW1lcywgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIikNCg0KYGBgDQoNCg0KDQoNCg==