About
Clearly show and organise your work. Each answer should appear below the question marked in red. Be careful not to modify existing text and code. For multiple choice questions you can place an (x) mark next to the text to mark your selection. Where necessary execute the already included code chunk, and add yours to perform required calculations. Best to view first in Preview mode!
Part 1: Multiple Questions (15 points)
Answer the below by typing your answer following each question. Each question is graded as marked.
1. Which one(s) of the following statements is(are) true with regards to a star schema? (1pt)
Each table has to have a primary key
Fact table is the biggest transactional table
Dimension tables are best suited for categorical data
All dimension tables are connected to fact table
All above TRUE
2. A set of data has a median much larger than the mean. What can we say about the data distribution? (1pt)
Skew left
Symmetrical
Skew Right TRUE
Normal
3. Entering Male into a column field (attribute) labeled Marital Status is what type of business logic integrity violation? (1pt)
Field integrity
Relational integrity TRUE
4. Which of the below is not a suited format for textual data? (1pt)
JSON
HTML
JPEG TRUE
ASCII
CSV
5. The term high-fidelity data was used in class to mean what exactly? (1pt)
Preparing the data
Streaming the data
Preserving Data Integrity TRUE
Garbage-in/Garbage Out
6. Mark the two statements where the combination of words is inconsistent (1pt)
Explanatory Quantitative
Exploratory Qualitative INCONSISTENT
Explanatory Qualitative
Exploratory Quantitative INCONSISTENT
7. A target function describes the relationship of independent variable as function of dependent variables (1pt)
True TRUE
False
8. You are given a 4 x 4 correlation matrix. What is the maximum number of distinct correlation values? (1pt)
10
9. Which of the below is a qualitative description of the data? (1pt)
Scatter plot
Mean and Range
Linear regression line
Total number of samples TRUE
10. You are given the following linear regression model describing the cost C of heating bill in $ versus the temperature T in Fahrenheit: C = 2T + 50. What are the units of the intercept and the slope? (2pts)
50 is the intercept, 2 is the slope 11. As part of a linear optimization marketing problem, you are given a constraint in reference to two decisions variables X and Y representing the amount of dollars spent on Radio ads (X) and TV ads (Y). The amount of dollars spent on Radio ads should be at most 30% of the total amount of dollars spent on ads. Write the mathematical formulation for the constraint. (2pts)
X + Y = 1 X ≤ .3 1-X = Y 1-Y = X
12. The closer data values are to the mean, the more potential for noise to occur (1pt)
True
False FALSE
13. You are given a data set with 100 entries. Twenty entries have zero values. When do we use the formula sum(data)/100 to compute the average of the data set? (1pt)
When zero values mean true values
When zero values represent missing values TRUE
When zero values mean true as well as missing values
None of the above
Problem 2: Linear Regression (15 points)
Residential customers in Austin consume an average of about 1,000 kWh of electricity per month, with usage higher during hot summer months and lower in the winter. Included data show monthly average usage in kWh by month for residential customers taken over a period from 2000-2016, and include monthly electric bill amounts.
mydata = read.csv("energy.csv", header=TRUE, sep=",")
head(mydata)
Answer the below by typing your answer following each question. Each question is graded as marked.
1. Does the data on energy Kwh consumption contain any outliers?. Show your calculations, and explain your answer (2pts) To complete the outlier test, first you need to calculate the quartiles. The median is 668 for the average_kwh data. So, we can calculate that the lower quartile is 643.25, and the upper quartile is 837.75. This means that there is both a lower, and a higher outlier. The lower outlier is 602, the higher outlier is 987.
2. Draw a scatter plot. Clearly label the x- and y- axis (2pts)
mydata = read_csv(file= "energy.csv")
Parsed with column specification:
cols(
date = [34mcol_datetime(format = "")[39m,
average_kwh = [32mcol_double()[39m,
average_bill = [32mcol_double()[39m
)
averageKWH = mydata$average_kwh
averagebill = mydata$average_bill
plot(averageKWH,averagebill)

3. Calculate the correlation coefficient between the energy consumption and monthly bill. What can you tell about the relationship? (2pts)
cor(averagebill,averageKWH)
[1] 0.93997
The Correlation value of 0.93997 is pretty close to 1.0 (which would mean a perfect correlation), so it appears that there is a strong relationship between the two values.
4. Derive a linear regression model and display the summary statistics . Separately, write down the linear equation representation. (3pts)
scatter.smooth(x=averageKWH, y=averagebill)

cor(mydata[c(2,3)])
average_kwh average_bill
average_kwh 1.00000 0.93997
average_bill 0.93997 1.00000
reg <- lm(averageKWH ~ averagebill)
summary(reg)
Call:
lm(formula = averageKWH ~ averagebill)
Residuals:
Min 1Q Median 3Q Max
-248.50 -53.37 -5.27 54.67 316.45
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 277.8496 18.8976 14.70 <2e-16 ***
averagebill 7.6840 0.2008 38.27 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 91.98 on 193 degrees of freedom
Multiple R-squared: 0.8835, Adjusted R-squared: 0.8829
F-statistic: 1464 on 1 and 193 DF, p-value: < 2.2e-16
```
5. Interpret the results for the intercept and the slope in the context of the problem. Specify the units when doing so (2pts) The interception according to the summary above is 277.8496 dollars/kmh. This is the point where averagebill would be equal to the average kmh.
6. Calculate the error squared in the predicted energy bill if the average consumption is 903 Kwh?(2pts) The residual error is 91.98 and the std. error is 0.2008. So, if the amount consumed was 903, it would be 9.7 standard deviations above the median. 9.7 multiplied by 0.2008 would give a predicted error of 1.9467
7. A simple linear regression model always passes through the mean of x and y. Show calculations to prove this is true in this case (2pts) The mean of the x data is 728, the mean of the y data is 69.5. Both of these averages are on the linear regression model. ## Data Sources * “The official city of Austin open data portal” - Residential average monthly Kwh and bills: https://data.austintexas.gov/Utilities-and-City-Services/Residential-Average-Monthly-kWh-and-Bills/d9pb-3vh7
LS0tCnRpdGxlOiAiRmluYWwgRXhhbSAzIgpkYXRlOiAiQXByaWwgMjd0aCwgMjAyMCAxLTNwbSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBodG1sX2RvY3VtZW50OiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CnN1YnRpdGxlOiBCU0FEIDM0MywgQnVzaW5lc3MgQW5hbHl0aWNzLCBTcHJpbmcgMjAyMAotLS0KCiMjIyBBYm91dCAKQ2xlYXJseSBzaG93IGFuZCBvcmdhbmlzZSB5b3VyIHdvcmsuIEVhY2ggYW5zd2VyIHNob3VsZCBhcHBlYXIgYmVsb3cgdGhlIHF1ZXN0aW9uIG1hcmtlZCBpbiByZWQuIEJlIGNhcmVmdWwgbm90IHRvIG1vZGlmeSBleGlzdGluZyB0ZXh0IGFuZCBjb2RlLiBGb3IgbXVsdGlwbGUgY2hvaWNlIHF1ZXN0aW9ucyB5b3UgY2FuIHBsYWNlIGFuICh4KSBtYXJrIG5leHQgdG8gdGhlIHRleHQgdG8gbWFyayB5b3VyIHNlbGVjdGlvbi4gV2hlcmUgbmVjZXNzYXJ5IGV4ZWN1dGUgdGhlIGFscmVhZHkgaW5jbHVkZWQgIGNvZGUgY2h1bmssIGFuZCBhZGQgeW91cnMgdG8gcGVyZm9ybSByZXF1aXJlZCBjYWxjdWxhdGlvbnMuIEJlc3QgdG8gdmlldyBmaXJzdCBpbiBQcmV2aWV3IG1vZGUhCgojIyMgUGFydCAxOiBNdWx0aXBsZSBRdWVzdGlvbnMgKDE1IHBvaW50cykKCjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPgpBbnN3ZXIgdGhlIGJlbG93IGJ5IHR5cGluZyB5b3VyIGFuc3dlciBmb2xsb3dpbmcgZWFjaCBxdWVzdGlvbi4gRWFjaCBxdWVzdGlvbiBpcyBncmFkZWQgYXMgbWFya2VkLiAKPC9zcGFuPgoKKioxLglXaGljaCBvbmUocykgb2YgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIGlzKGFyZSkgdHJ1ZSB3aXRoIHJlZ2FyZHMgdG8gYSBzdGFyIHNjaGVtYT8gKDFwdCkgKioKCmEuIEVhY2ggdGFibGUgaGFzIHRvIGhhdmUgYSBwcmltYXJ5IGtleQoKYi4gRmFjdCB0YWJsZSBpcyB0aGUgYmlnZ2VzdCB0cmFuc2FjdGlvbmFsIHRhYmxlCgpjLiBEaW1lbnNpb24gdGFibGVzIGFyZSBiZXN0IHN1aXRlZCBmb3IgY2F0ZWdvcmljYWwgZGF0YQoKZC4gQWxsIGRpbWVuc2lvbiB0YWJsZXMgYXJlIGNvbm5lY3RlZCB0byBmYWN0IHRhYmxlCgplLiBBbGwgYWJvdmUgVFJVRQoKKioyLglBIHNldCBvZiBkYXRhIGhhcyBhIG1lZGlhbiBtdWNoIGxhcmdlciB0aGFuIHRoZSBtZWFuLiBXaGF0IGNhbiB3ZSBzYXkgYWJvdXQgdGhlIGRhdGEgZGlzdHJpYnV0aW9uPyAoMXB0KSoqCgphLiBTa2V3IGxlZnQJCgpiLiBTeW1tZXRyaWNhbAkJCgpjLiBTa2V3IFJpZ2h0IFRSVUUJCQoKZC4gTm9ybWFsCQoKCioqMy4JRW50ZXJpbmcgTWFsZSBpbnRvIGEgY29sdW1uIGZpZWxkIChhdHRyaWJ1dGUpIGxhYmVsZWQgTWFyaXRhbCBTdGF0dXMgaXMgd2hhdCB0eXBlIG9mIGJ1c2luZXNzIGxvZ2ljIGludGVncml0eSB2aW9sYXRpb24/ICgxcHQpKioKCmEuIEZpZWxkIGludGVncml0eQoKYi4gUmVsYXRpb25hbCBpbnRlZ3JpdHkgVFJVRQoKCioqNC4JV2hpY2ggb2YgdGhlIGJlbG93IGlzIG5vdCBhIHN1aXRlZCBmb3JtYXQgZm9yIHRleHR1YWwgZGF0YT8gKDFwdCkqKgoKYS4gSlNPTgkJCgpiLiBIVE1MCQkKCmMuIEpQRUcJVFJVRQkKCmQuIEFTQ0lJCQkKCmUuIENTVgoKCioqNS4JVGhlIHRlcm0gaGlnaC1maWRlbGl0eSBkYXRhIHdhcyB1c2VkIGluIGNsYXNzIHRvIG1lYW4gIHdoYXQgZXhhY3RseT8gKDFwdCkqKgoKYS4gUHJlcGFyaW5nIHRoZSBkYXRhCQoKYi4gU3RyZWFtaW5nIHRoZSBkYXRhCQoKYy4gUHJlc2VydmluZyBEYXRhIEludGVncml0eQlUUlVFCgpkLiBHYXJiYWdlLWluL0dhcmJhZ2UgT3V0CQoKKio2LiBNYXJrIHRoZSB0d28gc3RhdGVtZW50cyB3aGVyZSB0aGUgY29tYmluYXRpb24gb2Ygd29yZHMgaXMgaW5jb25zaXN0ZW50ICgxcHQpKioKCmEuIEV4cGxhbmF0b3J5IFF1YW50aXRhdGl2ZQkKCmIuIEV4cGxvcmF0b3J5IFF1YWxpdGF0aXZlIElOQ09OU0lTVEVOVCAKCmMuIEV4cGxhbmF0b3J5IFF1YWxpdGF0aXZlIAoKZC4gRXhwbG9yYXRvcnkgUXVhbnRpdGF0aXZlIElOQ09OU0lTVEVOVAoKCioqNy4JQSB0YXJnZXQgZnVuY3Rpb24gZGVzY3JpYmVzIHRoZSByZWxhdGlvbnNoaXAgb2YgaW5kZXBlbmRlbnQgdmFyaWFibGUgYXMgZnVuY3Rpb24gb2YgZGVwZW5kZW50IHZhcmlhYmxlcyAoMXB0KSoqCgphLiBUcnVlCQlUUlVFCgpiLiBGYWxzZQoKKio4LglZb3UgYXJlIGdpdmVuIGEgNCB4IDQgY29ycmVsYXRpb24gbWF0cml4LiAgV2hhdCBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlzdGluY3QgY29ycmVsYXRpb24gdmFsdWVzPyAoMXB0KSoqCgoxMCAKCioqOS4JV2hpY2ggb2YgdGhlIGJlbG93IGlzIGEgcXVhbGl0YXRpdmUgZGVzY3JpcHRpb24gb2YgdGhlIGRhdGE/ICgxcHQpKioKCmEuIFNjYXR0ZXIgcGxvdAkKCmIuIE1lYW4gYW5kIFJhbmdlCQoKYy4gTGluZWFyIHJlZ3Jlc3Npb24gbGluZQkKCmQuIFRvdGFsIG51bWJlciBvZiBzYW1wbGVzIFRSVUUKCQoqKjEwLglZb3UgYXJlIGdpdmVuIHRoZSBmb2xsb3dpbmcgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgZGVzY3JpYmluZyB0aGUgY29zdCBDIG9mIGhlYXRpbmcgYmlsbCBpbiAkIHZlcnN1cyB0aGUgdGVtcGVyYXR1cmUgVCBpbiBGYWhyZW5oZWl0OiBDID0gMlQgKyA1MC4gIFdoYXQgYXJlIHRoZSB1bml0cyBvZiB0aGUgaW50ZXJjZXB0IGFuZCB0aGUgc2xvcGU/ICgycHRzKSoqCgo1MCBpcyB0aGUgaW50ZXJjZXB0LCAyIGlzIHRoZSBzbG9wZSAKKioxMS4JQXMgcGFydCBvZiBhIGxpbmVhciBvcHRpbWl6YXRpb24gbWFya2V0aW5nIHByb2JsZW0sIHlvdSBhcmUgZ2l2ZW4gYSAgY29uc3RyYWludCBpbiByZWZlcmVuY2UgdG8gdHdvIGRlY2lzaW9ucyB2YXJpYWJsZXMgWCBhbmQgWSByZXByZXNlbnRpbmcgdGhlIGFtb3VudCBvZiBkb2xsYXJzIHNwZW50IG9uIFJhZGlvIGFkcyAoWCkgYW5kIFRWIGFkcyAoWSkuICBUaGUgYW1vdW50IG9mIGRvbGxhcnMgc3BlbnQgb24gUmFkaW8gYWRzIHNob3VsZCBiZSBhdCBtb3N0IDMwJSBvZiB0aGUgdG90YWwgYW1vdW50IG9mIGRvbGxhcnMgc3BlbnQgb24gIGFkcy4gV3JpdGUgdGhlICBtYXRoZW1hdGljYWwgZm9ybXVsYXRpb24gZm9yIHRoZSBjb25zdHJhaW50LiAoMnB0cykqKgoKWCArIFkgPSAxClgg4omkIC4zIAoxLVggPSBZCjEtWSA9IFgKCioqMTIuCVRoZSBjbG9zZXIgZGF0YSB2YWx1ZXMgYXJlIHRvIHRoZSBtZWFuLCB0aGUgbW9yZSBwb3RlbnRpYWwgZm9yIG5vaXNlIHRvIG9jY3VyICgxcHQpKioKCmEuIFRydWUgCQoKYi4gRmFsc2UgRkFMU0UgCgoqKjEzLglZb3UgYXJlIGdpdmVuIGEgZGF0YSBzZXQgd2l0aCAxMDAgZW50cmllcy4gVHdlbnR5IGVudHJpZXMgaGF2ZSB6ZXJvIHZhbHVlcy4gV2hlbiBkbyB3ZSB1c2UgdGhlIGZvcm11bGEgc3VtKGRhdGEpLzEwMCB0byBjb21wdXRlIHRoZSBhdmVyYWdlIG9mIHRoZSBkYXRhIHNldD8gKDFwdCkqKgoKYS4gV2hlbiB6ZXJvIHZhbHVlcyBtZWFuIHRydWUgdmFsdWVzIAoKYi4gV2hlbiB6ZXJvIHZhbHVlcyByZXByZXNlbnQgbWlzc2luZyB2YWx1ZXMgVFJVRQoKYy4gV2hlbiB6ZXJvIHZhbHVlcyBtZWFuIHRydWUgYXMgd2VsbCBhcyBtaXNzaW5nIHZhbHVlcwoKZC4gTm9uZSBvZiB0aGUgYWJvdmUKCgojIyMgUHJvYmxlbSAyOiBMaW5lYXIgUmVncmVzc2lvbiAoMTUgcG9pbnRzKQoKClJlc2lkZW50aWFsIGN1c3RvbWVycyBpbiBBdXN0aW4gY29uc3VtZSBhbiBhdmVyYWdlIG9mIGFib3V0IDEsMDAwIGtXaCBvZiBlbGVjdHJpY2l0eSBwZXIgbW9udGgsIHdpdGggdXNhZ2UgaGlnaGVyIGR1cmluZyBob3Qgc3VtbWVyIG1vbnRocyBhbmQgbG93ZXIgaW4gdGhlIHdpbnRlci4gSW5jbHVkZWQgZGF0YSBzaG93IG1vbnRobHkgYXZlcmFnZSB1c2FnZSBpbiBrV2ggYnkgbW9udGggZm9yIHJlc2lkZW50aWFsIGN1c3RvbWVycyB0YWtlbiBvdmVyIGEgcGVyaW9kIGZyb20gMjAwMC0yMDE2LCBhbmQgaW5jbHVkZSBtb250aGx5IGVsZWN0cmljIGJpbGwgYW1vdW50cy4gCgpgYGB7cn0KbXlkYXRhID0gcmVhZC5jc3YoImVuZXJneS5jc3YiLCBoZWFkZXI9VFJVRSwgc2VwPSIsIikKaGVhZChteWRhdGEpCmBgYAoKPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+CkFuc3dlciB0aGUgYmVsb3cgYnkgdHlwaW5nIHlvdXIgYW5zd2VyIGZvbGxvd2luZyBlYWNoIHF1ZXN0aW9uLiBFYWNoIHF1ZXN0aW9uIGlzIGdyYWRlZCBhcyBtYXJrZWQuIAo8L3NwYW4+CgoqKjEuCURvZXMgdGhlIGRhdGEgb24gZW5lcmd5IEt3aCBjb25zdW1wdGlvbiBjb250YWluIGFueSBvdXRsaWVycz8uIFNob3cgeW91ciBjYWxjdWxhdGlvbnMsIGFuZCBleHBsYWluIHlvdXIgYW5zd2VyICgycHRzKSoqCiBUbyBjb21wbGV0ZSB0aGUgb3V0bGllciB0ZXN0LCBmaXJzdCB5b3UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIHF1YXJ0aWxlcy4gVGhlIG1lZGlhbiBpcyA2NjggZm9yIHRoZSBhdmVyYWdlX2t3aCBkYXRhLiBTbywgd2UgY2FuIGNhbGN1bGF0ZSB0aGF0IHRoZSBsb3dlciBxdWFydGlsZSBpcyA2NDMuMjUsIGFuZCB0aGUgdXBwZXIgcXVhcnRpbGUgaXMgODM3Ljc1LiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgYm90aCBhIGxvd2VyLCBhbmQgYSBoaWdoZXIgb3V0bGllci4gVGhlIGxvd2VyIG91dGxpZXIgaXMgNjAyLCB0aGUgaGlnaGVyIG91dGxpZXIgaXMgOTg3LgoKKioyLglEcmF3IGEgc2NhdHRlciBwbG90LiBDbGVhcmx5IGxhYmVsIHRoZSB4LSBhbmQgeS0gYXhpcyAoMnB0cykqKgpgYGB7cn0KbXlkYXRhID0gcmVhZF9jc3YoZmlsZT0gImVuZXJneS5jc3YiKQphdmVyYWdlS1dIID0gbXlkYXRhJGF2ZXJhZ2Vfa3doCmF2ZXJhZ2ViaWxsID0gbXlkYXRhJGF2ZXJhZ2VfYmlsbApwbG90KGF2ZXJhZ2VLV0gsYXZlcmFnZWJpbGwpCmBgYAoKCioqMy4JQ2FsY3VsYXRlIHRoZSBjb3JyZWxhdGlvbiBjb2VmZmljaWVudCBiZXR3ZWVuIHRoZSBlbmVyZ3kgY29uc3VtcHRpb24gYW5kIG1vbnRobHkgYmlsbC4gV2hhdCBjYW4geW91IHRlbGwgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcD8gKDJwdHMpKioKYGBge3J9CmNvcihhdmVyYWdlYmlsbCxhdmVyYWdlS1dIKQpgYGAKVGhlIENvcnJlbGF0aW9uIHZhbHVlIG9mIDAuOTM5OTcgaXMgcHJldHR5IGNsb3NlIHRvIDEuMCAod2hpY2ggd291bGQgbWVhbiBhIHBlcmZlY3QgY29ycmVsYXRpb24pLCBzbyBpdCBhcHBlYXJzIHRoYXQgdGhlcmUgaXMgYSBzdHJvbmcgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHR3byB2YWx1ZXMuIAoKKio0LglEZXJpdmUgYSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbCBhbmQgZGlzcGxheSB0aGUgc3VtbWFyeSBzdGF0aXN0aWNzIC4gU2VwYXJhdGVseSwgd3JpdGUgZG93biB0aGUgbGluZWFyIGVxdWF0aW9uIHJlcHJlc2VudGF0aW9uLiAoM3B0cykqKgpgYGB7cn0Kc2NhdHRlci5zbW9vdGgoeD1hdmVyYWdlS1dILCB5PWF2ZXJhZ2ViaWxsKQpgYGAKCmBgYHtyfQpjb3IobXlkYXRhW2MoMiwzKV0pCmBgYApgYGB7cn0KcmVnIDwtIGxtKGF2ZXJhZ2VLV0ggfiBhdmVyYWdlYmlsbCkKc3VtbWFyeShyZWcpCmBgYAoKYGBgCgoqKjUuCUludGVycHJldCB0aGUgcmVzdWx0cyBmb3IgdGhlIGludGVyY2VwdCBhbmQgdGhlIHNsb3BlIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ibGVtLiBTcGVjaWZ5IHRoZSB1bml0cyB3aGVuIGRvaW5nIHNvICgycHRzKSoqClRoZSBpbnRlcmNlcHRpb24gYWNjb3JkaW5nIHRvIHRoZSBzdW1tYXJ5IGFib3ZlIGlzIDI3Ny44NDk2IGRvbGxhcnMva21oLiBUaGlzIGlzIHRoZSBwb2ludCB3aGVyZSBhdmVyYWdlYmlsbCB3b3VsZCBiZSBlcXVhbCB0byB0aGUgYXZlcmFnZSBrbWguIAoKKio2LglDYWxjdWxhdGUgdGhlIGVycm9yIHNxdWFyZWQgaW4gdGhlIHByZWRpY3RlZCBlbmVyZ3kgYmlsbCBpZiB0aGUgYXZlcmFnZSBjb25zdW1wdGlvbiBpcyA5MDMgS3doPygycHRzKSoqClRoZSByZXNpZHVhbCBlcnJvciBpcyA5MS45OCBhbmQgdGhlIHN0ZC4gZXJyb3IgaXMgMC4yMDA4LiBTbywgaWYgdGhlIGFtb3VudCBjb25zdW1lZCB3YXMgOTAzLCBpdCB3b3VsZCBiZSA5Ljcgc3RhbmRhcmQgZGV2aWF0aW9ucyBhYm92ZSB0aGUgbWVkaWFuLiA5LjcgbXVsdGlwbGllZCBieSAwLjIwMDggd291bGQgZ2l2ZSBhIHByZWRpY3RlZCBlcnJvciBvZiAxLjk0NjcKCioqNy4JQSBzaW1wbGUgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgYWx3YXlzIHBhc3NlcyB0aHJvdWdoIHRoZSBtZWFuIG9mIHggYW5kIHkuICBTaG93IGNhbGN1bGF0aW9ucyB0byBwcm92ZSB0aGlzIGlzIHRydWUgaW4gdGhpcyBjYXNlICgycHRzKSoqClRoZSBtZWFuIG9mIHRoZSB4IGRhdGEgaXMgNzI4LCB0aGUgbWVhbiBvZiB0aGUgeSBkYXRhIGlzIDY5LjUuIEJvdGggb2YgdGhlc2UgYXZlcmFnZXMgYXJlIG9uIHRoZSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbC4gCiMjIERhdGEgU291cmNlcwoqICJUaGUgb2ZmaWNpYWwgY2l0eSBvZiBBdXN0aW4gb3BlbiBkYXRhIHBvcnRhbCIgLSBSZXNpZGVudGlhbCBhdmVyYWdlIG1vbnRobHkgS3doIGFuZCBiaWxsczogaHR0cHM6Ly9kYXRhLmF1c3RpbnRleGFzLmdvdi9VdGlsaXRpZXMtYW5kLUNpdHktU2VydmljZXMvUmVzaWRlbnRpYWwtQXZlcmFnZS1Nb250aGx5LWtXaC1hbmQtQmlsbHMvZDlwYi0zdmg3CgoK