Introduction
In this assignment, we are going to find the salary relationship between male and female. This dataset is talking about both male and female salary. The national gender pay gap is calculated by the Workplace Gender Equality Agency (WGEA) using data from the Australian Bureau of Statistics (ABS). Currently, Australia’s national gender pay gap is 15.3%. It has hovered between 15% and 19% for the past two decades.
The gender pay gap is influenced by a number of factors, including: -discrimination and bias in hiring and pay decisions -women and men working in different industries and different jobs, with female-dominated industries and jobs attracting lower wages -women’s disproportionate share of unpaid caring and domestic work -lack of workplace flexibility to accommodate caring and other responsibilities, especially in senior roles -women’s greater time out of the workforce impacting career progression and opportunities.
Problem Statement
The major problem is whether male salary is equal to female salary, and then we used various tests to determine if there is a statistical difference between the salary for the two groups -separate the dataset in to two group, one is male the other is female. -use bar plot to observe the distribution of salary. -use log to correct for skewness. In order to observe whether the dataset is liner or not, we use the Q-Q plot. -got the male and female salary’s mean, median, standard deviation, fist and third quartile, minimum and maximum values by summaries. -employed a two-sample t-test to establish
Data
This dataset uses sampling with out repeating, and the dataset is a open data which is from <http://www.mathcs.org/statistics/datasets/index.html >. This site is created and managed by Bert G. Wachsmuth, Associate Professor of Mathematics and Computer Science at Seton Hall University. The website is a popular statistic website with a good reputation.
employeenumeric_Gender[1:10,]
Descriptive Statistics and Visualisation
employeenumeric_Gender <- employeenumeric[,c(1,2)]
employeenumeric_Gender$Gender[employeenumeric_Gender$Gender=='m']<-"Male"
employeenumeric_Gender$Gender[employeenumeric_Gender$Gender=='f']<-"Female"
employeenumeric_Male <- (filter(employeenumeric_Gender,employeenumeric_Gender$Gender %in% c("Male")))
employeenumeric_Male$`Current Salary` %>% hist(xlab = "Salary(Male)",
col = "cornflowerblue" , main = "")

employeenumeric_Female <- (filter(employeenumeric_Gender,employeenumeric_Gender$Gender %in% c("Female")))
employeenumeric_Female$`Current Salary` %>% hist(xlab = "Salary(Female)",
col = "cornflowerblue" , main = "")

employeenumeric_Male$`Current Salary` %>% barplot(xlab = "Day of Week", ylab = "Percentage",
main = "Sample Observations by Day of Week",
col = "cornflowerblue")

employeenumeric_Female$`Current Salary` %>% barplot(xlab = "Day of Week", ylab = "Percentage",
main = "Sample Observations by Day of Week",
col = "cornflowerblue")

employeenumeric_Gender %>% group_by(Gender) %>% summarise(Min = min(`Current Salary`,na.rm = TRUE),
Q1 = quantile(`Current Salary`,probs = .25,na.rm = TRUE),
Median = median(`Current Salary`, na.rm = TRUE),
Q3 = quantile(`Current Salary`,probs = .75,na.rm = TRUE),
Max = max(`Current Salary`,na.rm = TRUE),
Mean = mean(`Current Salary`, na.rm = TRUE),
SD = sd(`Current Salary`, na.rm = TRUE),
n = n(),
Missing = sum(is.na(`Current Salary`)))
boxplot(employeenumeric_Male$`Current Salary`, employeenumeric_Female$`Current Salary`, ylab = "Salary",
xlab = "Gender")
axis(1, at = 1:2, labels = c("MALE", "FEMALE"))
par(mfrow=c(2,2))

employeenumeric_Male$`Current Salary` %>% hist(main = "Male salary")
log(employeenumeric_Male$`Current Salary`) %>% hist(main = "log(Male salary)")
employeenumeric_Female$`Current Salary` %>% hist(main = "Female Salary")
log(employeenumeric_Female$`Current Salary`) %>% hist(main = "log(Female Salary)")
par(mfrow=c(1,1))

employeenumeric_Male$`Current Salary` %>% qqPlot(dist="norm")

employeenumeric_Female$`Current Salary` %>% qqPlot(dist="norm")

Decsriptive Statistics Cont.
- You can use the
knitr:kable function to print nice HTML tables. Here is an example R code:
employeenumeric_Gender %>% group_by(Gender) %>% summarise(Min = min(`Current Salary`,na.rm = TRUE),
Q1 = quantile(`Current Salary`,probs = .25,na.rm = TRUE),
Median = median(`Current Salary`, na.rm = TRUE),
Q3 = quantile(`Current Salary`,probs = .75,na.rm = TRUE),
Max = max(`Current Salary`,na.rm = TRUE),
Mean = mean(`Current Salary`, na.rm = TRUE),
SD = sd(`Current Salary`, na.rm = TRUE),
n = n(),
Missing = sum(is.na(`Current Salary`)))
Hypothesis Testing
t.test (employeenumeric_Male$`Current Salary`, employeenumeric_Female$`Current Salary`,
var.equal = TRUE,
alternative = "two.sided")
Two Sample t-test
data: employeenumeric_Male$`Current Salary` and employeenumeric_Female$`Current Salary`
t = 10.945, df = 472, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
12643.32 18176.40
sample estimates:
mean of x mean of y
41441.78 26031.92
Hypthesis Testing Cont.
- Here are the examples of mathematical equations:
\[H_0: \mu_1 = \mu_2 \]
\[H_A: \mu_1 \ne \mu_2\]
\[S = \sum^n_{i = 1}d^2_i\]
- You can also place equations inline: \(z = \frac{x - \mu}{\sigma}\)
Discussion
The data analysis clear shows that the the male salary mean is higher than female but female salary is more steable. The female data looks fine. Most the points appear to be following a normal distribution closeler than male.
Despite our Q-Q plots indicating that the sample data may not be normally distributed, we have enough samples to confidently use the t-test to test our hypothesis. Our significance level used is 0.05. Hypothesis for the paired sample t-test: H0:The salary of male and female are the same (difference is zero). HA:The salary of male and female is not the same (difference is non-zero).
Hypothesis for the salary sample t-test (salary differences) : H0:The salaries of male and female are the same (difference is zero). HA:The salaries of male and female are not the same (difference is non-zero).
In our samples t-test on the salary differences we succeed hypothesis, therefore the salary for male and female are quite different and we can state that male salary is higher than female. the p-value is 2.2e-16 , while alpha=0.05p-value,comparing the p-value and the 5% alpha level,it is obviously that p.value is less that the 5% alpha level. The 95 percent confidence interval: [ 12643.32 18176.40] does not capture the sample mean difference. In conclusion,we reject null hypothesis.
References
[1] Workplace Gender Equality Agency, “What is the gender pay gap?”,Australian Government. Aug. 2017 [2]T.Gawley, T.Perks, J.Curtis, “Height, Gender, and Authority Status at Work: Analyses for a National Sample of Canadian Workers, Sex Roles”, 2009, 60, 3-4, 208 [3]http://www.mathcs.org/statistics/datasets/index.html
LS0tDQp0aXRsZTogIlNhbGFyeSBvZiBNYWxlIGFuZCBGZW1hbGUiDQphdXRob3I6ICJMaXUgU2hhbmd3ZWkoMzYxNzYyMSkmWWluY2hhb2ZhbiBYaW5nKDM1OTU1MTIpIg0KZGF0ZTogIjIyLzEwLzIwMTciDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCnNsaWR5X3ByZXNlbnRhdGlvbjoNCiAgICBmb250X2FkanVzdG1lbnQ6IDANCiAgICBoaWdobGlnaHQ6IGhhZGRvY2sNCiAgICBtYXRoamF4OiAiZGVmYXVsdCINCiAgICBkZl9wcmludDogcGFnZWQNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCiMgVXNlIHRoaXMgY2h1bmsgdG8gcXVpZXRseSBsb2FkIHlvdXIgcGFjYWtnZXMNCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWZpZy5hbGlnbiA9ICJjZW50ZXIiLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UNCikNCiMgUGFja2FnZXMgbG9hZGVkIGluIHRoaXMgY2h1bmsgd2lsbCBub3QgYXBwZWFyIGluIHRoZSBwcmVzZW50YXRpb24uIA0KDQpsaWJyYXJ5KGdncGxvdDIpICMgVXNlZnVsIGZvciBjcmVhdGluZyBwbG90cw0KbGlicmFyeShkcGx5cikgICMgVXNlZnVsIGZvciBkYXRhIG1haXB1bGF0aW9uDQpsaWJyYXJ5KGtuaXRyKSAjIFVzZWZ1bCBmb3IgY3JlYXRpbmcgbmljZSB0YWJsZXMNCmxpYnJhcnkoY2FyKQ0KbGlicmFyeShybWFya2Rvd24pDQpgYGANCg0KDQoNCg0KIyBJbnRyb2R1Y3Rpb24NCg0KDQoNCkluIHRoaXMgYXNzaWdubWVudCwgd2UgYXJlIGdvaW5nIHRvIGZpbmQgdGhlIHNhbGFyeSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtYWxlIGFuZCBmZW1hbGUuIFRoaXMgZGF0YXNldCBpcyB0YWxraW5nIGFib3V0IGJvdGggbWFsZSBhbmQgZmVtYWxlIHNhbGFyeS4gVGhlIG5hdGlvbmFsIGdlbmRlciBwYXkgZ2FwIGlzIGNhbGN1bGF0ZWQgYnkgdGhlIFdvcmtwbGFjZSBHZW5kZXIgRXF1YWxpdHkgQWdlbmN5IChXR0VBKSB1c2luZyBkYXRhIGZyb20gdGhlIEF1c3RyYWxpYW4gQnVyZWF1IG9mIFN0YXRpc3RpY3MgKEFCUykuIEN1cnJlbnRseSwgQXVzdHJhbGlhoa9zIG5hdGlvbmFsIGdlbmRlciBwYXkgZ2FwIGlzIDE1LjMlLiBJdCBoYXMgaG92ZXJlZCBiZXR3ZWVuIDE1JSBhbmQgMTklIGZvciB0aGUgcGFzdCB0d28gZGVjYWRlcy4NCg0KVGhlIGdlbmRlciBwYXkgZ2FwIGlzIGluZmx1ZW5jZWQgYnkgYSBudW1iZXIgb2YgZmFjdG9ycywgaW5jbHVkaW5nOg0KLWRpc2NyaW1pbmF0aW9uIGFuZCBiaWFzIGluIGhpcmluZyBhbmQgcGF5IGRlY2lzaW9ucw0KLXdvbWVuIGFuZCBtZW4gd29ya2luZyBpbiBkaWZmZXJlbnQgaW5kdXN0cmllcyBhbmQgZGlmZmVyZW50IGpvYnMsIHdpdGggZmVtYWxlLWRvbWluYXRlZCBpbmR1c3RyaWVzIGFuZCBqb2JzIGF0dHJhY3RpbmcgbG93ZXIgd2FnZXMNCi13b21lbqGvcyBkaXNwcm9wb3J0aW9uYXRlIHNoYXJlIG9mIHVucGFpZCBjYXJpbmcgYW5kIGRvbWVzdGljIHdvcmsNCi1sYWNrIG9mIHdvcmtwbGFjZSBmbGV4aWJpbGl0eSB0byBhY2NvbW1vZGF0ZSBjYXJpbmcgYW5kIG90aGVyIHJlc3BvbnNpYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gc2VuaW9yIHJvbGVzDQotd29tZW6hr3MgZ3JlYXRlciB0aW1lIG91dCBvZiB0aGUgd29ya2ZvcmNlIGltcGFjdGluZyBjYXJlZXIgcHJvZ3Jlc3Npb24gYW5kIG9wcG9ydHVuaXRpZXMuDQoNCg0KDQoNCg0KDQoNCg0KIyBQcm9ibGVtIFN0YXRlbWVudA0KDQoNCg0KDQoNCg0KVGhlIG1ham9yIHByb2JsZW0gaXMgd2hldGhlciBtYWxlIHNhbGFyeSBpcyBlcXVhbCB0byBmZW1hbGUgc2FsYXJ5LCBhbmQgdGhlbiB3ZSB1c2VkIHZhcmlvdXMgdGVzdHMgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGEgc3RhdGlzdGljYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzYWxhcnkgZm9yIHRoZSB0d28gZ3JvdXBzDQotc2VwYXJhdGUgdGhlIGRhdGFzZXQgaW4gdG8gdHdvIGdyb3VwLCBvbmUgaXMgbWFsZSB0aGUgb3RoZXIgaXMgZmVtYWxlLiANCi11c2UgYmFyIHBsb3QgdG8gb2JzZXJ2ZSB0aGUgZGlzdHJpYnV0aW9uIG9mIHNhbGFyeS4gDQotdXNlIGxvZyB0byBjb3JyZWN0IGZvciBza2V3bmVzcy4gSW4gb3JkZXIgdG8gb2JzZXJ2ZSB3aGV0aGVyIHRoZSBkYXRhc2V0IGlzIGxpbmVyIG9yIG5vdCwgd2UgdXNlIHRoZSBRLVEgcGxvdC4gDQotZ290IHRoZSBtYWxlIGFuZCBmZW1hbGUgc2FsYXJ5oa9zIG1lYW4sIG1lZGlhbiwgc3RhbmRhcmQgZGV2aWF0aW9uLCBmaXN0IGFuZCB0aGlyZCBxdWFydGlsZSwgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgYnkgc3VtbWFyaWVzLiANCi1lbXBsb3llZCBhIHR3by1zYW1wbGUgdC10ZXN0IHRvIGVzdGFibGlzaA0KDQoNCg0KDQoNCg0KDQoNCg0KIyBEYXRhDQpUaGlzIGRhdGFzZXQgdXNlcyBzYW1wbGluZyB3aXRoIG91dCByZXBlYXRpbmcsIGFuZCB0aGUgZGF0YXNldCBpcyBhIG9wZW4gZGF0YSB3aGljaCBpcyBmcm9tIDxodHRwOi8vd3d3Lm1hdGhjcy5vcmcvc3RhdGlzdGljcy9kYXRhc2V0cy9pbmRleC5odG1sID4uIFRoaXMgc2l0ZSBpcyBjcmVhdGVkIGFuZCBtYW5hZ2VkIGJ5IEJlcnQgRy4gV2FjaHNtdXRoLCBBc3NvY2lhdGUgUHJvZmVzc29yIG9mIE1hdGhlbWF0aWNzIGFuZCBDb21wdXRlciBTY2llbmNlIGF0IFNldG9uIEhhbGwgVW5pdmVyc2l0eS4gVGhlIHdlYnNpdGUgaXMgYSBwb3B1bGFyIHN0YXRpc3RpYyB3ZWJzaXRlIHdpdGggYSBnb29kIHJlcHV0YXRpb24uDQpgYGB7cn0NCmVtcGxveWVlbnVtZXJpY19HZW5kZXJbMToxMCxdDQpgYGANCg0KDQojIERlc2NyaXB0aXZlIFN0YXRpc3RpY3MgYW5kIFZpc3VhbGlzYXRpb24NCg0KDQpgYGB7cn0NCmVtcGxveWVlbnVtZXJpY19HZW5kZXIgPC0gZW1wbG95ZWVudW1lcmljWyxjKDEsMildDQplbXBsb3llZW51bWVyaWNfR2VuZGVyJEdlbmRlcltlbXBsb3llZW51bWVyaWNfR2VuZGVyJEdlbmRlcj09J20nXTwtIk1hbGUiDQplbXBsb3llZW51bWVyaWNfR2VuZGVyJEdlbmRlcltlbXBsb3llZW51bWVyaWNfR2VuZGVyJEdlbmRlcj09J2YnXTwtIkZlbWFsZSINCmVtcGxveWVlbnVtZXJpY19NYWxlIDwtIChmaWx0ZXIoZW1wbG95ZWVudW1lcmljX0dlbmRlcixlbXBsb3llZW51bWVyaWNfR2VuZGVyJEdlbmRlciAlaW4lIGMoIk1hbGUiKSkpDQplbXBsb3llZW51bWVyaWNfTWFsZSRgQ3VycmVudCBTYWxhcnlgICU+JSBoaXN0KHhsYWIgPSAiU2FsYXJ5KE1hbGUpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wgPSAiY29ybmZsb3dlcmJsdWUiICwgbWFpbiA9ICIiKQ0KZW1wbG95ZWVudW1lcmljX0ZlbWFsZSA8LSAoZmlsdGVyKGVtcGxveWVlbnVtZXJpY19HZW5kZXIsZW1wbG95ZWVudW1lcmljX0dlbmRlciRHZW5kZXIgJWluJSBjKCJGZW1hbGUiKSkpDQoNCmVtcGxveWVlbnVtZXJpY19GZW1hbGUkYEN1cnJlbnQgU2FsYXJ5YCAlPiUgaGlzdCh4bGFiID0gIlNhbGFyeShGZW1hbGUpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wgPSAiY29ybmZsb3dlcmJsdWUiICwgbWFpbiA9ICIiKQ0KZW1wbG95ZWVudW1lcmljX01hbGUkYEN1cnJlbnQgU2FsYXJ5YCAlPiUgYmFycGxvdCh4bGFiID0gIkRheSBvZiBXZWVrIiwgeWxhYiA9ICJQZXJjZW50YWdlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluID0gIlNhbXBsZSBPYnNlcnZhdGlvbnMgYnkgRGF5IG9mIFdlZWsiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCA9ICJjb3JuZmxvd2VyYmx1ZSIpDQplbXBsb3llZW51bWVyaWNfRmVtYWxlJGBDdXJyZW50IFNhbGFyeWAgJT4lIGJhcnBsb3QoeGxhYiA9ICJEYXkgb2YgV2VlayIsIHlsYWIgPSAiUGVyY2VudGFnZSIsDQogICAgICAgICAgICAgICAgICBtYWluID0gIlNhbXBsZSBPYnNlcnZhdGlvbnMgYnkgRGF5IG9mIFdlZWsiLA0KICAgICAgICAgICAgICAgICAgY29sID0gImNvcm5mbG93ZXJibHVlIikNCmVtcGxveWVlbnVtZXJpY19HZW5kZXIgJT4lIGdyb3VwX2J5KEdlbmRlcikgJT4lIHN1bW1hcmlzZShNaW4gPSBtaW4oYEN1cnJlbnQgU2FsYXJ5YCxuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRMSA9IHF1YW50aWxlKGBDdXJyZW50IFNhbGFyeWAscHJvYnMgPSAuMjUsbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFuID0gbWVkaWFuKGBDdXJyZW50IFNhbGFyeWAsIG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEzID0gcXVhbnRpbGUoYEN1cnJlbnQgU2FsYXJ5YCxwcm9icyA9IC43NSxuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSBtYXgoYEN1cnJlbnQgU2FsYXJ5YCxuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWFuID0gbWVhbihgQ3VycmVudCBTYWxhcnlgLCBuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRCA9IHNkKGBDdXJyZW50IFNhbGFyeWAsIG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pc3NpbmcgPSBzdW0oaXMubmEoYEN1cnJlbnQgU2FsYXJ5YCkpKQ0KYm94cGxvdChlbXBsb3llZW51bWVyaWNfTWFsZSRgQ3VycmVudCBTYWxhcnlgLCBlbXBsb3llZW51bWVyaWNfRmVtYWxlJGBDdXJyZW50IFNhbGFyeWAsIHlsYWIgPSAiU2FsYXJ5IiwNCiAgICAgICAgeGxhYiA9ICJHZW5kZXIiKQ0KYXhpcygxLCBhdCA9IDE6MiwgbGFiZWxzID0gYygiTUFMRSIsICJGRU1BTEUiKSkNCnBhcihtZnJvdz1jKDIsMikpDQplbXBsb3llZW51bWVyaWNfTWFsZSRgQ3VycmVudCBTYWxhcnlgICU+JSAgaGlzdChtYWluID0gIk1hbGUgc2FsYXJ5IikNCmxvZyhlbXBsb3llZW51bWVyaWNfTWFsZSRgQ3VycmVudCBTYWxhcnlgKSAlPiUgIGhpc3QobWFpbiA9ICJsb2coTWFsZSBzYWxhcnkpIikNCmVtcGxveWVlbnVtZXJpY19GZW1hbGUkYEN1cnJlbnQgU2FsYXJ5YCAlPiUgIGhpc3QobWFpbiA9ICJGZW1hbGUgU2FsYXJ5IikNCmxvZyhlbXBsb3llZW51bWVyaWNfRmVtYWxlJGBDdXJyZW50IFNhbGFyeWApICU+JSAgaGlzdChtYWluID0gImxvZyhGZW1hbGUgU2FsYXJ5KSIpDQpwYXIobWZyb3c9YygxLDEpKQ0KZW1wbG95ZWVudW1lcmljX01hbGUkYEN1cnJlbnQgU2FsYXJ5YCAlPiUgcXFQbG90KGRpc3Q9Im5vcm0iKQ0KZW1wbG95ZWVudW1lcmljX0ZlbWFsZSRgQ3VycmVudCBTYWxhcnlgICU+JSBxcVBsb3QoZGlzdD0ibm9ybSIpDQpgYGANCg0KIyBEZWNzcmlwdGl2ZSBTdGF0aXN0aWNzIENvbnQuDQoNCi0gWW91IGNhbiB1c2UgdGhlIGBrbml0cjprYWJsZWAgZnVuY3Rpb24gdG8gcHJpbnQgbmljZSBIVE1MIHRhYmxlcy4gSGVyZSBpcyBhbiBleGFtcGxlIFIgY29kZToNCg0KYGBge3J9DQplbXBsb3llZW51bWVyaWNfR2VuZGVyICU+JSBncm91cF9ieShHZW5kZXIpICU+JSBzdW1tYXJpc2UoTWluID0gbWluKGBDdXJyZW50IFNhbGFyeWAsbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUTEgPSBxdWFudGlsZShgQ3VycmVudCBTYWxhcnlgLHByb2JzID0gLjI1LG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhbiA9IG1lZGlhbihgQ3VycmVudCBTYWxhcnlgLCBuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRMyA9IHF1YW50aWxlKGBDdXJyZW50IFNhbGFyeWAscHJvYnMgPSAuNzUsbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4ID0gbWF4KGBDdXJyZW50IFNhbGFyeWAsbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVhbiA9IG1lYW4oYEN1cnJlbnQgU2FsYXJ5YCwgbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0QgPSBzZChgQ3VycmVudCBTYWxhcnlgLCBuYS5ybSA9IFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbigpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaXNzaW5nID0gc3VtKGlzLm5hKGBDdXJyZW50IFNhbGFyeWApKSkNCmBgYA0KDQoNCiMgSHlwb3RoZXNpcyBUZXN0aW5nDQoNCg0KDQpgYGB7cn0NCnQudGVzdCAoZW1wbG95ZWVudW1lcmljX01hbGUkYEN1cnJlbnQgU2FsYXJ5YCwgZW1wbG95ZWVudW1lcmljX0ZlbWFsZSRgQ3VycmVudCBTYWxhcnlgLA0KICAgICAgICB2YXIuZXF1YWwgPSBUUlVFLA0KICAgICAgICBhbHRlcm5hdGl2ZSA9ICJ0d28uc2lkZWQiKQ0KDQpgYGANCg0KIyBIeXB0aGVzaXMgVGVzdGluZyBDb250Lg0KDQotIEhlcmUgYXJlIHRoZSBleGFtcGxlcyBvZiBtYXRoZW1hdGljYWwgZXF1YXRpb25zOg0KDQokJEhfMDogXG11XzEgPSBcbXVfMiAkJA0KDQokJEhfQTogXG11XzEgXG5lIFxtdV8yJCQNCg0KJCRTID0gXHN1bV5uX3tpID0gMX1kXjJfaSQkDQoNCi0gWW91IGNhbiBhbHNvIHBsYWNlIGVxdWF0aW9ucyBpbmxpbmU6ICR6ID0gXGZyYWN7eCAtIFxtdX17XHNpZ21hfSQNCg0KIyBEaXNjdXNzaW9uDQoNClRoZSBkYXRhIGFuYWx5c2lzIGNsZWFyIHNob3dzIHRoYXQgdGhlIHRoZSBtYWxlIHNhbGFyeSBtZWFuIGlzIGhpZ2hlciB0aGFuIGZlbWFsZSBidXQgZmVtYWxlIHNhbGFyeSBpcyBtb3JlIHN0ZWFibGUuIFRoZSBmZW1hbGUgZGF0YSBsb29rcyBmaW5lLiBNb3N0IHRoZSBwb2ludHMgYXBwZWFyIHRvIGJlIGZvbGxvd2luZyBhIG5vcm1hbCBkaXN0cmlidXRpb24gIGNsb3NlbGVyIHRoYW4gbWFsZS4gDQoNCg0KDQoNCg0KDQoNCkRlc3BpdGUgb3VyIFEtUSBwbG90cyBpbmRpY2F0aW5nIHRoYXQgdGhlIHNhbXBsZSBkYXRhIG1heSBub3QgYmUgbm9ybWFsbHkgZGlzdHJpYnV0ZWQsIHdlIGhhdmUgZW5vdWdoIHNhbXBsZXMgdG8gY29uZmlkZW50bHkgdXNlIHRoZSB0LXRlc3QgdG8gdGVzdCBvdXIgaHlwb3RoZXNpcy4gT3VyIHNpZ25pZmljYW5jZSBsZXZlbCB1c2VkIGlzIDAuMDUuIEh5cG90aGVzaXMgZm9yIHRoZSBwYWlyZWQgc2FtcGxlIHQtdGVzdDogSDA6VGhlIHNhbGFyeSBvZiBtYWxlIGFuZCBmZW1hbGUgYXJlIHRoZSBzYW1lIChkaWZmZXJlbmNlIGlzIHplcm8pLiBIQTpUaGUgc2FsYXJ5IG9mIG1hbGUgYW5kIGZlbWFsZSBpcyBub3QgdGhlIHNhbWUgKGRpZmZlcmVuY2UgaXMgbm9uLXplcm8pLg0KDQpIeXBvdGhlc2lzIGZvciB0aGUgc2FsYXJ5IHNhbXBsZSB0LXRlc3QgKHNhbGFyeSBkaWZmZXJlbmNlcykgOiANCkgwOlRoZSBzYWxhcmllcyBvZiBtYWxlIGFuZCBmZW1hbGUgYXJlIHRoZSBzYW1lIChkaWZmZXJlbmNlIGlzIHplcm8pLiANCkhBOlRoZSBzYWxhcmllcyBvZiBtYWxlIGFuZCBmZW1hbGUgYXJlIG5vdCB0aGUgc2FtZSAoZGlmZmVyZW5jZSBpcyBub24temVybykuDQoNCkluIG91ciBzYW1wbGVzIHQtdGVzdCBvbiB0aGUgc2FsYXJ5IGRpZmZlcmVuY2VzIHdlIHN1Y2NlZWQgaHlwb3RoZXNpcywgdGhlcmVmb3JlIHRoZSBzYWxhcnkgZm9yIG1hbGUgYW5kIGZlbWFsZSBhcmUgcXVpdGUgZGlmZmVyZW50IGFuZCB3ZSBjYW4gc3RhdGUgdGhhdCBtYWxlIHNhbGFyeSBpcyBoaWdoZXIgdGhhbiBmZW1hbGUuIHRoZSBwLXZhbHVlIGlzIDIuMmUtMTYgLCB3aGlsZSBhbHBoYT0wLjA1cC12YWx1ZSxjb21wYXJpbmcgdGhlIHAtdmFsdWUgYW5kIHRoZSA1JSBhbHBoYSBsZXZlbCxpdCBpcyBvYnZpb3VzbHkgdGhhdCBwLnZhbHVlIGlzIGxlc3MgdGhhdCB0aGUgNSUgYWxwaGEgbGV2ZWwuIFRoZSA5NSBwZXJjZW50IGNvbmZpZGVuY2UgaW50ZXJ2YWw6IFsgMTI2NDMuMzIgMTgxNzYuNDBdIGRvZXMgbm90IGNhcHR1cmUgdGhlIHNhbXBsZSBtZWFuIGRpZmZlcmVuY2UuIEluIGNvbmNsdXNpb24sd2UgcmVqZWN0IG51bGwgaHlwb3RoZXNpcy4NCg0KDQoNCg0KDQojIFJlZmVyZW5jZXMNClsxXSBXb3JrcGxhY2UgR2VuZGVyIEVxdWFsaXR5IEFnZW5jeSwgIldoYXQgaXMgdGhlIGdlbmRlciBwYXkgZ2FwPyIsQXVzdHJhbGlhbiBHb3Zlcm5tZW50LiBBdWcuIDIwMTcNClsyXVQuR2F3bGV5LCBULlBlcmtzLCBKLkN1cnRpcywgIkhlaWdodCwgR2VuZGVyLCBhbmQgQXV0aG9yaXR5IFN0YXR1cyBhdCBXb3JrOiBBbmFseXNlcyBmb3IgYSBOYXRpb25hbCBTYW1wbGUgb2YgQ2FuYWRpYW4gV29ya2VycywgU2V4IFJvbGVzIiwgMjAwOSwgNjAsIDMtNCwgMjA4DQpbM11odHRwOi8vd3d3Lm1hdGhjcy5vcmcvc3RhdGlzdGljcy9kYXRhc2V0cy9pbmRleC5odG1sDQo=