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)

  1. Each table has to have a primary key

  2. Fact table is the biggest transactional table

  3. Dimension tables are best suited for categorical data

  4. All dimension tables are connected to fact table

  5. 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)

  1. Skew left

  2. Symmetrical

  3. Skew Right TRUE

  4. Normal

3. Entering Male into a column field (attribute) labeled Marital Status is what type of business logic integrity violation? (1pt)

  1. Field integrity

  2. Relational integrity TRUE

4. Which of the below is not a suited format for textual data? (1pt)

  1. JSON

  2. HTML

  3. JPEG TRUE

  4. ASCII

  5. CSV

5. The term high-fidelity data was used in class to mean what exactly? (1pt)

  1. Preparing the data

  2. Streaming the data

  3. Preserving Data Integrity TRUE

  4. Garbage-in/Garbage Out

6. Mark the two statements where the combination of words is inconsistent (1pt)

  1. Explanatory Quantitative

  2. Exploratory Qualitative INCONSISTENT

  3. Explanatory Qualitative

  4. Exploratory Quantitative INCONSISTENT

7. A target function describes the relationship of independent variable as function of dependent variables (1pt)

  1. True TRUE

  2. 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)

  1. Scatter plot

  2. Mean and Range

  3. Linear regression line

  4. 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)

  1. True

  2. 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)

  1. When zero values mean true values

  2. When zero values represent missing values TRUE

  3. When zero values mean true as well as missing values

  4. 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 = col_datetime(format = ""),
  average_kwh = col_double(),
  average_bill = col_double()
)
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