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.

Figures

Warning: Unknown or uninitialised column: `expected_burglaries`.

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==