Introduction
Data analytics can be used to highlight issues and explanations for phenomena and events. In this exercise, we will use the passenger and staff lists to determine some issues about surviving the sinking of the Titanic.
Background

Der Untergang der Titanic by Willy Stöwer
When the RMS Titanic left Southampton, England on its maiden voyage from to New York City, there were approximately 2,208 souls on board. Partway through the voyage, the ship struck an iceberg and sank in the early morning of 15 April 1912, resulting in the deaths of 1,503 people. Over the years, the passenger list has been carefully analyzed to weed out ticket holders that did not take passage, or passengers of rescue vessels that attempted to claim that they were Titanic survivors while adding names of stowaways and cruiseline employees being relocated.
Research Question
What impact did age, gender and passenger class have on the ability to survive the Titanic sinking?
Methodology
Data source
For the purpose of this study the passenger and staff lists posted to Wikipedia were scrapped into a CSV file.
Dictionary of the Dataset
'data.frame': 2158 obs. of 5 variables:
$ lastname: Factor w/ 1644 levels " Davison*","Abbing",..: 2 3 3 3 4 5 6 6 7 8 ...
$ fname : Factor w/ 1539 levels "Captain Edward",..: 399 597 616 1152 1508 628 227 1039 1156 1354 ...
$ age : int 40 21 14 16 39 18 16 25 30 28 ...
$ status : Factor w/ 2 levels "pass","staff": 1 2 1 1 1 1 1 1 1 1 ...
$ section : Factor w/ 11 levels "Deckhands ","Engineering ",..: 9 11 9 9 9 9 9 9 7 7 ...
Meaning of the data fields:
- lastname: Family name of the person. Survivors are noted by an asterix (*).
- fname: Factor w/ 1541 levels " 18“,” 22“,” Captain Edward",..: 401 599 618 1154 1510 630 229 1041 1158 1356 …
- age: age of the person in year. In this study, we assume people below the age of 18 are children
- status: indication of whether the person is a member of staff or a passenger
- section: class the passenger or department of the staff
Data analysis
The key information was extracted from the dataset into the following fields that directly answer the research question:
- survived: Indication of whether the person survived (y) or not (n).
- gender: Indication of whether the person is male (m) or female (f)
- age: age of the person
- status: staff (s)
- class: classification of the person: Passenger: P1,P2,P3 or Staff: SEng, SRes, S
survived = grepl("\\*",tit$lastname,perl=TRUE)
survivor = 0 + survived
isfemale = grepl("Miss |Mrs.? ",tit$fname,perl=TRUE)
female = 0 + isfemale
ischild = tit$age < 18
child = 0 + ischild
status = substr(tit$status,1,1)
div = substr(tit$section,1,3)
div[div == "fir"] = "P1"
div[div == "sec"] = "P2"
div[div == "thi"] = "P3"
tit2 = cbind(survived,isfemale,ischild,status,div)
staff = tit2[status == 's',]
pass = tit2[status =="p",]
Results
The results of cross-tabulation of the name lists are given in the following tables. The among the passengers, survival rates were highest among first class passengers and diminished with subsequent passenger clases. In each class, female passengers had higher survival rates than male passengers. Children in 3rd class did not have survival rates significantly different from the adults in that class. Childen in 1st and 2nd class were equal or greater than the adults in their class.
Survivor rate of the Passengers aboard the Titanic
1st Class |
Adult |
M |
59 |
120 |
33% |
|
Adult |
F |
130 |
4 |
97% |
|
Child |
M |
6 |
1 |
85% |
|
Child |
F |
5 |
1 |
83% |
|
|
|
|
|
|
2nd Class |
Adult |
M |
14 |
144 |
9% |
|
Adult |
F |
74 |
12 |
86% |
|
Child |
M |
11 |
4 |
73% |
|
Child |
F |
19 |
0 |
100% |
|
|
|
|
|
|
3rd Class |
Adult |
M |
58 |
355 |
14% |
|
Adult |
F |
77 |
79 |
49% |
|
Child |
M |
15 |
63 |
19% |
|
Child |
F |
29 |
29 |
50% |
Among the staff female workers, survival rates were similar to those of 1st and 2nd class female passengers. Of 20 male workers under the age of 18 only 5 survived, survival rates that were even lower than the boys in 3rd class. Female workers had survival rates of women in first class. Among the male passengers, the deckhands had higher survival rates than workers in other departments.
Survivor Rates of the Staff aboard the Titanic
Deckhand |
Adult |
M |
37 |
19 |
66% |
|
Child |
M |
3 |
0 |
100% |
Engineering |
Adult |
M |
71 |
246 |
22% |
|
Child |
M |
1 |
1 |
50% |
Officiers |
Adult |
M |
4 |
4 |
50% |
Post Office |
Adult |
M |
0 |
5 |
0% |
Restaurant |
Adult |
M |
1 |
60 |
2% |
|
Adult |
F |
2 |
0 |
100% |
|
Child |
M |
0 |
6 |
0% |
Housekeeping |
Adult |
M |
66 |
294 |
18% |
|
Adult |
F |
17 |
3 |
85% |
|
Child |
M |
1 |
8 |
11% |
The results were consistent with the notion of “women and children first”. However, the statistics suggest that the third class women and children had a different experience that was more restrictive.
C1Surv = c(59, 130, 6,5); C2Surv = c(14,74,11,19); C3Surv = c(58,77,15,29)
C1Died = c(120,4,1,1); C2Died = c(144,12,4,0); C3Died = c(355,79,63,29)
colors = c("#0066AA","#005080","#003355","#CC3300","#662200","#331100")
surv = rbind(C1Surv,C2Surv,C3Surv,C1Died,C2Died,C3Died)
colnames(surv) = c("AdultM", "AdultF", "ChildM", "ChildF")
barplot(surv, col=colors,beside=TRUE,main="Passengers of the Titanic by Class and Outcome",
ylab="Number of people", xlab="Age and Sex")
legend(20,300,rownames(surv),fill=colors)

Summary and Conclusion
The RMS Titanic was fitted with only 20 lifeboats that could accommodate 1,178 which represent only half of the 2,208 people abroad that night. However, only 700 survived. The data would suggest class distinctions and gender distinctions contributed to the inequalities in the survivorship.
C1T = C1Surv + C1Died; C2T = C2Surv + C2Died; C3T = C3Surv + C3Died
C1S = 100*C1Surv /C1T; C2S = 100*C2Surv / C2T; C3S = 100*C3Surv / C3T
srate = rbind(C1S, C2S, C3S)
colnames(srate) = colnames(surv)
barplot(srate,beside=TRUE,col=rep(colors[1:3],2),
main="Percentage of Passengers that Survived",
ylab="Survival Rate as per cent")
legend(1,100,c("1st Class","2nd Class","3rd Class"), fill=colors)

The data analysis is colloborated by the finding of the British and American inquiries into this accident. The policy of women and children first was strickly followed for those entering lifeboats which was from the decks of the first and second class passengers. The statistics suggest that this policy was enforced during the sinking. Some of the female staff of the ship were entrusted official logs of the ship and were careful escorted into lifeboats. However, The idea was that the women and children would load from the upper decks and lowered safely to the water where the lifeboats would take on the remaining passengers without swamping the boat at the rampway located at the lower decks. However, the ramp way was locked and flooded and could not be used that evening. In addition, the lifeboat sailors quickly rowed away from the Titanic as soon as the boat was in the water in fear of being caught in the vortex of the sinking ship and/or of being swamped by people in the water.
It was concluded at the public inquiries that addition lifeboats would not have helped as the deckhands were not familar with the operation of the hoist used to lower the boats. A number of the early launches crashed into the sea and took on water. As a result, many of the remaining lifeboats were launched at half their capacity. It took them 3 hours to launch the lifeboat that Titanic had onboard that evening. The Titanic disaster would have been much greater if the ship had been filled to it maximum capacity of 3,547.
Finally, the inquires concluded that many third class passengers were trapped because not all of the gates that separated the lower decks of the ship were unlocked. The stewards with the keys were busy knocking on doors and waking passengers up and forgot to unlock the gates.
As the statistics would suggest, the post office was in the bow and was taking on water. Public inquiries confirmed that the postal workers spent their final hours attempting to move the mail to higher decks in a futile attempts to save the mail. However, the lifeboats had all left by the time they decided to look for one and so there were no survivors in that department.
Lessons learned from the sinking of the Titanic instituted numerous changes in the cruiseline industry and on the sister ships of the Titanic. When the sister ship RMHS Britannica with 1,065 onboard struck a mine in 1918, the ship sank in 55 mins with only 30 souls were lost.
References
LS0tCnRpdGxlOiAiU3Vydml2aW5nIHRoZSBUaXRhbmljIFNpbmtpbmciCmF1dGhvcjogIkRyIFJvYmVydCBCYXR6aW5nZXIsIFBheWFwIFVuaXZlcnNpdHkgRGVwdC4gb2YgQ29tcHV0ZXIgU2NpZW5jZSIKZGF0ZTogIjIwIEp1bHkgMjAyMSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19kZXB0aDogMwogICAgbnVtYmVyX3NlY3Rpb246IHRydWUKICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIHRoZW1lOiB1bml0ZWQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKYWJzdHJhY3Q6ICJUaGlzIGV4ZXJjaXNlIGlzIHVzZXMgYSBwYXNzZW5nZXIgYW5kIHN0YWZmIGxpc3QgZnJvbSB0aGUgVGl0YW5pYyB0byBpZGVudGlmeSBob3cgYWdlLCBjbGFzcyBhbmQgZ2VuZGVyIGVmZmVjdGVkIHRoZSBhYmlsaXR5IGZvciBpbmRpdmlkdWFscyB0byBzdXJ2aXZlIHRoZSBzaW5raW5nIG9mIHRoZSBUaXRhbmljLlxuXG4iCi0tLQoKIyBJbnRyb2R1Y3Rpb24KCkRhdGEgYW5hbHl0aWNzIGNhbiBiZSB1c2VkIHRvIGhpZ2hsaWdodCBpc3N1ZXMgYW5kIGV4cGxhbmF0aW9ucyBmb3IgcGhlbm9tZW5hIGFuZCBldmVudHMuIEluIHRoaXMgZXhlcmNpc2UsIHdlIHdpbGwgdXNlIHRoZSBwYXNzZW5nZXIgYW5kIHN0YWZmIGxpc3RzIHRvIGRldGVybWluZSBzb21lIGlzc3VlcyBhYm91dCBzdXJ2aXZpbmcgdGhlIHNpbmtpbmcgb2YgdGhlIFRpdGFuaWMuCgojIyBCYWNrZ3JvdW5kCgpgYGB7cixlY2hvPUZBTFNFLG91dC53aWR0aD0iNDAlIn0KbGlicmFyeShrbml0cikKa25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoInRpdGFuaWMuanBnIikKYGBgCgoqKipEZXIgVW50ZXJnYW5nIGRlciBUaXRhbmljKioqIGJ5IFdpbGx5IFN0w7Z3ZXJbXlN0b3dlcl0KClteU3Rvd2VyXTogIFdpbGx5IFN0w7Z3ZXIsIDE5MTIuIERlciBVbnRlcmdhbmcgZGVyIFRpdGFuaWMgUHJpbnRlZCBpbiBNYWdhemluZSBEaWUgR2FydGVubGF1YmUuIERvd25sb2FkZWQgZnJvbSBXaWtpcGVkaWEgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lsbHlfU3TDtndlciBKdWx5IDE1IDIwMjEKCldoZW4gdGhlIFJNUyBUaXRhbmljIGxlZnQgU291dGhhbXB0b24sIEVuZ2xhbmQgb24gaXRzIG1haWRlbiB2b3lhZ2UgZnJvbSB0byBOZXcgWW9yayBDaXR5LCB0aGVyZSB3ZXJlIGFwcHJveGltYXRlbHkgMiwyMDggc291bHMgb24gYm9hcmQuW15lbmN0aXRhbmljYV0gUGFydHdheSB0aHJvdWdoIHRoZSB2b3lhZ2UsIHRoZSBzaGlwIHN0cnVjayBhbiBpY2ViZXJnIGFuZCBzYW5rIGluIHRoZSBlYXJseSBtb3JuaW5nIG9mIDE1IEFwcmlsIDE5MTIsIHJlc3VsdGluZyBpbiB0aGUgZGVhdGhzIG9mIDEsNTAzIHBlb3BsZS4gT3ZlciB0aGUgeWVhcnMsIHRoZSBwYXNzZW5nZXIgbGlzdCBoYXMgYmVlbiBjYXJlZnVsbHkgYW5hbHl6ZWQgdG8gd2VlZCBvdXQgdGlja2V0IGhvbGRlcnMgdGhhdCBkaWQgbm90IHRha2UgcGFzc2FnZSwgb3IgcGFzc2VuZ2VycyBvZiByZXNjdWUgdmVzc2VscyB0aGF0IGF0dGVtcHRlZCB0byBjbGFpbSB0aGF0IHRoZXkgd2VyZSBUaXRhbmljIHN1cnZpdm9ycyB3aGlsZSBhZGRpbmcgbmFtZXMgb2Ygc3Rvd2F3YXlzIGFuZCBjcnVpc2VsaW5lIGVtcGxveWVlcyBiZWluZyByZWxvY2F0ZWQuCgoKIyMgUmVzZWFyY2ggUXVlc3Rpb24KCj4gV2hhdCBpbXBhY3QgZGlkIGFnZSwgZ2VuZGVyIGFuZCBwYXNzZW5nZXIgY2xhc3MgaGF2ZSBvbiB0aGUgYWJpbGl0eSB0byBzdXJ2aXZlIHRoZSBUaXRhbmljIHNpbmtpbmc/CgojIE1ldGhvZG9sb2d5CgoKIyMgRGF0YSBzb3VyY2UKCkZvciB0aGUgcHVycG9zZSBvZiB0aGlzIHN0dWR5IHRoZSBwYXNzZW5nZXIgYW5kIHN0YWZmIGxpc3RzIHBvc3RlZCB0byBXaWtpcGVkaWFbXndpa2ldIHdlcmUgc2NyYXBwZWQgaW50byBhIENTViBmaWxlLgoKW153aWtpXTogV2lraXBlZGlhLDIwMjEuICBQYXNzZW5nZXJzIG9mIHRoZSBUaXRhbmljLiBEb3dubG9hZCBsb2FkZWQgMTUgSnVseSAyMDIxIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Bhc3NlbmdlcnNfb2ZfdGhlX1RpdGFuaWMgbGFzdGVkIGVkaXRlZCAxMCBKdWx5IDIwMjEuCgojIyBEaWN0aW9uYXJ5IG9mIHRoZSBEYXRhc2V0CgpgYGB7cixlY2hvPUZBTFNFfQp0aXQgPSByZWFkLmNzdigidGl0YW5pY3Bhc3MuY3N2IikKc3RyKHRpdCkKYGBgCk1lYW5pbmcgb2YgdGhlIGRhdGEgZmllbGRzOgoKKiBsYXN0bmFtZTogRmFtaWx5IG5hbWUgb2YgdGhlIHBlcnNvbi4gU3Vydml2b3JzIGFyZSBub3RlZCBieSBhbiBhc3Rlcml4ICgqKS4KKiBmbmFtZTogRmFjdG9yIHcvIDE1NDEgbGV2ZWxzICIgMTgiLCIgMjIiLCIgQ2FwdGFpbiBFZHdhcmQiLC4uOiA0MDEgNTk5IDYxOCAxMTU0IDE1MTAgNjMwIDIyOSAxMDQxIDExNTggMTM1NiAuLi4KKiBhZ2U6IGFnZSBvZiB0aGUgcGVyc29uIGluIHllYXIuIEluIHRoaXMgc3R1ZHksIHdlIGFzc3VtZSBwZW9wbGUgYmVsb3cgdGhlIGFnZSBvZiAxOCBhcmUgY2hpbGRyZW4KKiBzdGF0dXM6IGluZGljYXRpb24gb2Ygd2hldGhlciB0aGUgcGVyc29uIGlzIGEgbWVtYmVyIG9mIHN0YWZmIG9yIGEgcGFzc2VuZ2VyCiogc2VjdGlvbjogY2xhc3MgdGhlIHBhc3NlbmdlciBvciBkZXBhcnRtZW50IG9mIHRoZSBzdGFmZiAKCgojIyBEYXRhIGFuYWx5c2lzCgpUaGUga2V5IGluZm9ybWF0aW9uIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgZGF0YXNldCBpbnRvIHRoZSBmb2xsb3dpbmcgZmllbGRzIHRoYXQgZGlyZWN0bHkgYW5zd2VyIHRoZSByZXNlYXJjaCBxdWVzdGlvbjoKCiogc3Vydml2ZWQ6IEluZGljYXRpb24gb2Ygd2hldGhlciB0aGUgcGVyc29uIHN1cnZpdmVkICh5KSBvciBub3QgKG4pLgoqIGdlbmRlcjogSW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoZSBwZXJzb24gaXMgbWFsZSAobSkgb3IgZmVtYWxlIChmKQoqIGFnZTogYWdlIG9mIHRoZSBwZXJzb24KKiBzdGF0dXM6IHN0YWZmIChzKSAKKiBjbGFzczogY2xhc3NpZmljYXRpb24gb2YgdGhlIHBlcnNvbjogUGFzc2VuZ2VyOiBQMSxQMixQMyBvciBTdGFmZjogU0VuZywgU1JlcywgUwoKYGBge3J9CnN1cnZpdmVkID0gZ3JlcGwoIlxcKiIsdGl0JGxhc3RuYW1lLHBlcmw9VFJVRSkKc3Vydml2b3IgPSAwICsgc3Vydml2ZWQKCgppc2ZlbWFsZSA9IGdyZXBsKCJNaXNzIHxNcnMuPyAiLHRpdCRmbmFtZSxwZXJsPVRSVUUpCmZlbWFsZSA9IDAgKyBpc2ZlbWFsZQoKaXNjaGlsZCA9IHRpdCRhZ2UgPCAxOApjaGlsZCA9IDAgKyBpc2NoaWxkCgpzdGF0dXMgPSBzdWJzdHIodGl0JHN0YXR1cywxLDEpCmRpdiA9IHN1YnN0cih0aXQkc2VjdGlvbiwxLDMpCmRpdltkaXYgPT0gImZpciJdID0gIlAxIgpkaXZbZGl2ID09ICJzZWMiXSA9ICJQMiIKZGl2W2RpdiA9PSAidGhpIl0gPSAiUDMiCgp0aXQyID0gY2JpbmQoc3Vydml2ZWQsaXNmZW1hbGUsaXNjaGlsZCxzdGF0dXMsZGl2KQpzdGFmZiA9IHRpdDJbc3RhdHVzID09ICdzJyxdCnBhc3MgPSAgdGl0MltzdGF0dXMgPT0icCIsXQpgYGAKCiMgUmVzdWx0cwoKVGhlIHJlc3VsdHMgb2YgY3Jvc3MtdGFidWxhdGlvbiBvZiB0aGUgbmFtZSBsaXN0cyBhcmUgZ2l2ZW4gaW4gdGhlIGZvbGxvd2luZyB0YWJsZXMuIFRoZSBhbW9uZyB0aGUgcGFzc2VuZ2Vycywgc3Vydml2YWwgcmF0ZXMgd2VyZSBoaWdoZXN0IGFtb25nIGZpcnN0IGNsYXNzIHBhc3NlbmdlcnMgYW5kIGRpbWluaXNoZWQgd2l0aCBzdWJzZXF1ZW50IHBhc3NlbmdlciBjbGFzZXMuIEluIGVhY2ggY2xhc3MsIGZlbWFsZSBwYXNzZW5nZXJzIGhhZCBoaWdoZXIgc3Vydml2YWwgcmF0ZXMgdGhhbiBtYWxlIHBhc3NlbmdlcnMuIENoaWxkcmVuIGluIDNyZCBjbGFzcyBkaWQgbm90IGhhdmUgc3Vydml2YWwgcmF0ZXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB0aGUgYWR1bHRzIGluIHRoYXQgY2xhc3MuIENoaWxkZW4gaW4gMXN0IGFuZCAybmQgY2xhc3Mgd2VyZSBlcXVhbCBvciBncmVhdGVyIHRoYW4gdGhlIGFkdWx0cyBpbiB0aGVpciBjbGFzcy4gCgpUYWJsZTogU3Vydml2b3IgcmF0ZSBvZiB0aGUgUGFzc2VuZ2VycyBhYm9hcmQgdGhlIFRpdGFuaWMKCnwgRGVwYXJ0bWVudCB8IEFnZSB8IFNleCB8IFN1cnZpdm9ycyB8IFZpY3RpbXMgfCBTdXJ2aXZhbCByYXRlfAp8Oi0tLS0tLS0tLS0tfDotLS06fDotLS06fC0tLS0tLS0tLS06fC0tLS0tLS0tOnwtLS0tLS0tLS0tLS0tOnwKfCAxc3QgQ2xhc3MgIHxBZHVsdHwgTSAgIHwgICA1OSAgICAgIHwgIDEyMCAgICB8ICAzMyUgICAgICAgICB8CnwgICAgICAgICAgICB8QWR1bHR8IEYgICB8ICAxMzAgICAgICB8ICAgIDQgICAgfCAgOTclICAgICAgICAgfAp8ICAgICAgICAgICAgfENoaWxkfCBNICAgfCAgICA2ICAgICAgfCAgICAxICAgIHwgICA4NSUgICAgICAgIHwKfCAgICAgICAgICAgIHxDaGlsZHwgRiAgIHwgICAgNSAgICAgIHwgICAgMSAgICB8ICAgODMlICAgICAgICB8CnwgICAgICAgICAgICB8ICAgICB8ICAgICB8ICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgfAp8IDJuZCBDbGFzcyAgfEFkdWx0fCBNICAgfCAgIDE0ICAgICAgfCAgMTQ0ICAgIHwgICAgOSUgICAgICAgIHwKfCAgICAgICAgICAgIHxBZHVsdHwgRiAgIHwgICA3NCAgICAgIHwgICAxMiAgICB8ICAgODYlICAgICAgICB8CnwgICAgICAgICAgICB8Q2hpbGR8IE0gICB8ICAgMTEgICAgICB8ICAgIDQgICAgfCAgIDczJSAgICAgICAgfAp8ICAgICAgICAgICAgfENoaWxkfCBGICAgfCAgIDE5ICAgICAgfCAgICAwICAgIHwgIDEwMCUgICAgICAgIHwKfCAgICAgICAgICAgIHwgICAgIHwgICAgIHwgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8CnwgM3JkIENsYXNzICB8QWR1bHR8IE0gICB8ICAgNTggICAgICB8ICAzNTUgICAgfCAgIDE0JSAgICAgICAgfAp8ICAgICAgICAgICAgfEFkdWx0fCBGICAgfCAgIDc3ICAgICAgfCAgIDc5ICAgIHwgICA0OSUgICAgICAgIHwKfCAgICAgICAgICAgIHxDaGlsZHwgTSAgIHwgICAxNSAgICAgIHwgICA2MyAgICB8ICAgMTklICAgICAgICB8CnwgICAgICAgICAgICB8Q2hpbGR8IEYgICB8ICAgMjkgICAgICB8ICAgMjkgICAgfCAgIDUwJSAgICAgICAgfAoKQW1vbmcgdGhlIHN0YWZmIGZlbWFsZSB3b3JrZXJzLCBzdXJ2aXZhbCByYXRlcyB3ZXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YgMXN0IGFuZCAybmQgY2xhc3MgZmVtYWxlIHBhc3NlbmdlcnMuIE9mIDIwIG1hbGUgd29ya2VycyB1bmRlciB0aGUgYWdlIG9mIDE4IG9ubHkgNSBzdXJ2aXZlZCwgc3Vydml2YWwgcmF0ZXMgdGhhdCB3ZXJlIGV2ZW4gbG93ZXIgdGhhbiB0aGUgYm95cyBpbiAzcmQgY2xhc3MuIEZlbWFsZSB3b3JrZXJzIGhhZCBzdXJ2aXZhbCByYXRlcyBvZiB3b21lbiBpbiBmaXJzdCBjbGFzcy4gQW1vbmcgdGhlIG1hbGUgcGFzc2VuZ2VycywgdGhlIGRlY2toYW5kcyBoYWQgaGlnaGVyIHN1cnZpdmFsIHJhdGVzIHRoYW4gd29ya2VycyBpbiBvdGhlciBkZXBhcnRtZW50cy4gIAoKVGFibGU6IFN1cnZpdm9yIFJhdGVzIG9mIHRoZSBTdGFmZiBhYm9hcmQgdGhlIFRpdGFuaWMKCnwgRGVwYXJ0bWVudCB8IEFnZSAgfCBTZXggfCBTdXJ2aXZvcnMgfCBWaWN0aW1zIHwgU3Vydml2YWwgcmF0ZXwKfDotLS0tLS0tLS0tLXw6LS0tLTp8Oi0tLTp8LS0tLS0tLS0tLTp8LS0tLS0tLS06fC0tLS0tOnwKfCBEZWNraGFuZCAgIHxBZHVsdCB8IE0gICB8ICAgMzcgICAgICB8ICAxOSAgICAgfCA2NiUgIHwKfCAgICAgICAgICAgIHxDaGlsZCB8IE0gICB8ICAgIDMgICAgICB8ICAgMCAgICAgfCAxMDAlIHwKfCBFbmdpbmVlcmluZ3xBZHVsdCB8IE0gICB8ICAgNzEgICAgICB8ICAyNDYgICAgfCAyMiUgIHwKfCAgICAgICAgICAgIHxDaGlsZCB8IE0gICB8ICAgIDEgICAgICB8ICAgIDEgICAgfCA1MCUgIHwKfCBPZmZpY2llcnMgIHxBZHVsdCB8IE0gICB8ICAgIDQgICAgICB8ICAgIDQgICAgfCA1MCUgIHwKfFBvc3QgT2ZmaWNlIHxBZHVsdCB8IE0gICB8ICAgIDAgICAgICB8ICAgIDUgICAgfCAwJSAgIHwKfFJlc3RhdXJhbnQgIHxBZHVsdCB8IE0gICB8ICAgIDEgICAgICB8ICAgNjAgICAgfCAyJSAgIHwKfCAgICAgICAgICAgIHxBZHVsdCB8IEYgICB8ICAgIDIgICAgICB8ICAgIDAgICAgfCAxMDAlIHwKfCAgICAgICAgICAgIHxDaGlsZCB8IE0gICB8ICAgIDAgICAgICB8ICAgIDYgICAgfCAwJSAgIHwKfEhvdXNla2VlcGluZ3xBZHVsdCB8IE0gICB8ICAgNjYgICAgICB8ICAyOTQgICAgfCAxOCUgIHwKfCAgICAgICAgICAgIHxBZHVsdCB8IEYgICB8ICAgMTcgICAgICB8ICAgIDMgICAgfCA4NSUgIHwKfCAgICAgICAgICAgIHxDaGlsZCB8IE0gICB8ICAgIDEgICAgICB8ICAgIDggICAgfCAxMSUgIHwKClRoZSByZXN1bHRzIHdlcmUgY29uc2lzdGVudCB3aXRoIHRoZSBub3Rpb24gb2YgIndvbWVuIGFuZCBjaGlsZHJlbiBmaXJzdCIuIEhvd2V2ZXIsIHRoZSBzdGF0aXN0aWNzIHN1Z2dlc3QgdGhhdCB0aGUgdGhpcmQgY2xhc3Mgd29tZW4gYW5kIGNoaWxkcmVuIGhhZCBhIGRpZmZlcmVudCBleHBlcmllbmNlIHRoYXQgd2FzIG1vcmUgcmVzdHJpY3RpdmUuCgpgYGB7cn0KQzFTdXJ2ID0gYyg1OSwgMTMwLCA2LDUpOyBDMlN1cnYgPSBjKDE0LDc0LDExLDE5KTsgQzNTdXJ2ID0gYyg1OCw3NywxNSwyOSkKQzFEaWVkID0gYygxMjAsNCwxLDEpOyBDMkRpZWQgPSBjKDE0NCwxMiw0LDApOyBDM0RpZWQgPSBjKDM1NSw3OSw2MywyOSkKY29sb3JzID0gYygiIzAwNjZBQSIsIiMwMDUwODAiLCIjMDAzMzU1IiwiI0NDMzMwMCIsIiM2NjIyMDAiLCIjMzMxMTAwIikKc3VydiA9IHJiaW5kKEMxU3VydixDMlN1cnYsQzNTdXJ2LEMxRGllZCxDMkRpZWQsQzNEaWVkKQpjb2xuYW1lcyhzdXJ2KSA9IGMoIkFkdWx0TSIsICJBZHVsdEYiLCAiQ2hpbGRNIiwgIkNoaWxkRiIpCmJhcnBsb3Qoc3VydiwgY29sPWNvbG9ycyxiZXNpZGU9VFJVRSxtYWluPSJQYXNzZW5nZXJzIG9mIHRoZSBUaXRhbmljIGJ5IENsYXNzIGFuZCBPdXRjb21lIiwKICAgICAgICB5bGFiPSJOdW1iZXIgb2YgcGVvcGxlIiwgeGxhYj0iQWdlIGFuZCBTZXgiKQpsZWdlbmQoMjAsMzAwLHJvd25hbWVzKHN1cnYpLGZpbGw9Y29sb3JzKQoKYGBgCgojIFN1bW1hcnkgYW5kIENvbmNsdXNpb24KCgoKVGhlIFJNUyBUaXRhbmljIHdhcyBmaXR0ZWQgd2l0aCBvbmx5IDIwIGxpZmVib2F0cyB0aGF0IGNvdWxkIGFjY29tbW9kYXRlIDEsMTc4IHdoaWNoIHJlcHJlc2VudCBvbmx5IGhhbGYgb2YgdGhlIDIsMjA4IHBlb3BsZSBhYnJvYWQgdGhhdCBuaWdodC4gSG93ZXZlciwgb25seSA3MDAgc3Vydml2ZWQuIFRoZSBkYXRhIHdvdWxkIHN1Z2dlc3QgY2xhc3MgZGlzdGluY3Rpb25zIGFuZCBnZW5kZXIgZGlzdGluY3Rpb25zIGNvbnRyaWJ1dGVkIHRvIHRoZSBpbmVxdWFsaXRpZXMgaW4gdGhlIHN1cnZpdm9yc2hpcC4KCgoKYGBge3J9CkMxVCA9IEMxU3VydiArIEMxRGllZDsgQzJUID0gQzJTdXJ2ICsgQzJEaWVkOyBDM1QgPSBDM1N1cnYgKyBDM0RpZWQKQzFTID0gMTAwKkMxU3VydiAvQzFUOyBDMlMgPSAxMDAqQzJTdXJ2IC8gQzJUOyBDM1MgPSAxMDAqQzNTdXJ2IC8gQzNUCnNyYXRlID0gcmJpbmQoQzFTLCBDMlMsIEMzUykKY29sbmFtZXMoc3JhdGUpID0gY29sbmFtZXMoc3VydikKYmFycGxvdChzcmF0ZSxiZXNpZGU9VFJVRSxjb2w9cmVwKGNvbG9yc1sxOjNdLDIpLCAKICAgICAgICBtYWluPSJQZXJjZW50YWdlIG9mIFBhc3NlbmdlcnMgdGhhdCBTdXJ2aXZlZCIsCiAgICAgICAgeWxhYj0iU3Vydml2YWwgUmF0ZSBhcyBwZXIgY2VudCIpCmxlZ2VuZCgxLDEwMCxjKCIxc3QgQ2xhc3MiLCIybmQgQ2xhc3MiLCIzcmQgQ2xhc3MiKSwgZmlsbD1jb2xvcnMpCmBgYAoKVGhlIGRhdGEgYW5hbHlzaXMgaXMgY29sbG9ib3JhdGVkIGJ5IHRoZSBmaW5kaW5nIG9mIHRoZSBCcml0aXNoIGFuZCBBbWVyaWNhbiBpbnF1aXJpZXMgaW50byB0aGlzIGFjY2lkZW50LiBUaGUgcG9saWN5IG9mIHdvbWVuIGFuZCBjaGlsZHJlbiBmaXJzdCB3YXMgc3RyaWNrbHkgZm9sbG93ZWQgZm9yIHRob3NlIGVudGVyaW5nIGxpZmVib2F0cyB3aGljaCB3YXMgZnJvbSB0aGUgZGVja3Mgb2YgdGhlIGZpcnN0IGFuZCBzZWNvbmQgY2xhc3MgcGFzc2VuZ2Vycy4gVGhlIHN0YXRpc3RpY3Mgc3VnZ2VzdCB0aGF0IHRoaXMgcG9saWN5IHdhcyBlbmZvcmNlZCBkdXJpbmcgdGhlIHNpbmtpbmcuIFNvbWUgb2YgdGhlIGZlbWFsZSBzdGFmZiBvZiB0aGUgc2hpcCB3ZXJlIGVudHJ1c3RlZCBvZmZpY2lhbCBsb2dzIG9mIHRoZSBzaGlwIGFuZCB3ZXJlIGNhcmVmdWwgZXNjb3J0ZWQgaW50byBsaWZlYm9hdHMuIEhvd2V2ZXIsIFRoZSBpZGVhIHdhcyB0aGF0IHRoZSB3b21lbiBhbmQgY2hpbGRyZW4gd291bGQgbG9hZCBmcm9tIHRoZSB1cHBlciBkZWNrcyBhbmQgbG93ZXJlZCBzYWZlbHkgdG8gdGhlIHdhdGVyIHdoZXJlIHRoZSBsaWZlYm9hdHMgd291bGQgdGFrZSBvbiB0aGUgcmVtYWluaW5nIHBhc3NlbmdlcnMgd2l0aG91dCBzd2FtcGluZyB0aGUgYm9hdCBhdCB0aGUgcmFtcHdheSBsb2NhdGVkIGF0IHRoZSBsb3dlciBkZWNrcy4gSG93ZXZlciwgdGhlIHJhbXAgd2F5IHdhcyBsb2NrZWQgYW5kIGZsb29kZWQgYW5kIGNvdWxkIG5vdCBiZSB1c2VkIHRoYXQgZXZlbmluZy4gSW4gYWRkaXRpb24sIHRoZSBsaWZlYm9hdCBzYWlsb3JzIHF1aWNrbHkgcm93ZWQgYXdheSBmcm9tIHRoZSBUaXRhbmljIGFzIHNvb24gYXMgdGhlIGJvYXQgd2FzIGluIHRoZSB3YXRlciBpbiBmZWFyIG9mIGJlaW5nIGNhdWdodCBpbiB0aGUgdm9ydGV4IG9mIHRoZSBzaW5raW5nIHNoaXAgYW5kL29yIG9mIGJlaW5nIHN3YW1wZWQgYnkgcGVvcGxlIGluIHRoZSB3YXRlci5bXkZvd2xlcl0KClteRm93bGVyXTogRGF2aWQgRm93bGVyLCAyMDIwLiBUaXRhbmljIEZhY3RzLiBTZWVuIG9ubGluZSBhdCBodHRwczovL3RpdGFuaWNmYWN0cy5uZXQgMTYgSnVseSAyMDIxCgpJdCB3YXMgY29uY2x1ZGVkIGF0IHRoZSBwdWJsaWMgaW5xdWlyaWVzIHRoYXQgYWRkaXRpb24gbGlmZWJvYXRzIHdvdWxkIG5vdCBoYXZlIGhlbHBlZCBhcyB0aGUgZGVja2hhbmRzIHdlcmUgbm90IGZhbWlsYXIgd2l0aCB0aGUgb3BlcmF0aW9uIG9mIHRoZSBob2lzdCB1c2VkIHRvIGxvd2VyIHRoZSBib2F0cy4gIEEgbnVtYmVyIG9mIHRoZSBlYXJseSBsYXVuY2hlcyBjcmFzaGVkIGludG8gdGhlIHNlYSBhbmQgdG9vayBvbiB3YXRlci4gQXMgYSByZXN1bHQsIG1hbnkgb2YgdGhlIHJlbWFpbmluZyBsaWZlYm9hdHMgd2VyZSBsYXVuY2hlZCBhdCBoYWxmIHRoZWlyIGNhcGFjaXR5LiBJdCB0b29rIHRoZW0gMyBob3VycyB0byBsYXVuY2ggdGhlIGxpZmVib2F0IHRoYXQgVGl0YW5pYyBoYWQgb25ib2FyZCB0aGF0IGV2ZW5pbmcuIFRoZSBUaXRhbmljIGRpc2FzdGVyIHdvdWxkIGhhdmUgYmVlbiBtdWNoIGdyZWF0ZXIgaWYgdGhlIHNoaXAgaGFkIGJlZW4gZmlsbGVkIHRvIGl0IG1heGltdW0gY2FwYWNpdHkgb2YgMyw1NDcuIAoKRmluYWxseSwgdGhlIGlucXVpcmVzIGNvbmNsdWRlZCB0aGF0IG1hbnkgdGhpcmQgY2xhc3MgcGFzc2VuZ2VycyB3ZXJlIHRyYXBwZWQgYmVjYXVzZSBub3QgYWxsIG9mIHRoZSBnYXRlcyB0aGF0IHNlcGFyYXRlZCB0aGUgbG93ZXIgZGVja3Mgb2YgdGhlIHNoaXAgd2VyZSB1bmxvY2tlZC4gVGhlIHN0ZXdhcmRzIHdpdGggdGhlIGtleXMgd2VyZSBidXN5IGtub2NraW5nIG9uIGRvb3JzIGFuZCB3YWtpbmcgcGFzc2VuZ2VycyB1cCBhbmQgZm9yZ290IHRvIHVubG9jayB0aGUgZ2F0ZXMuIAoKQXMgdGhlIHN0YXRpc3RpY3Mgd291bGQgc3VnZ2VzdCwgdGhlIHBvc3Qgb2ZmaWNlIHdhcyBpbiB0aGUgYm93IGFuZCB3YXMgdGFraW5nIG9uIHdhdGVyLiBQdWJsaWMgaW5xdWlyaWVzIGNvbmZpcm1lZCB0aGF0IHRoZSBwb3N0YWwgd29ya2VycyBzcGVudCB0aGVpciBmaW5hbCBob3VycyBhdHRlbXB0aW5nIHRvIG1vdmUgdGhlIG1haWwgdG8gaGlnaGVyIGRlY2tzIGluIGEgZnV0aWxlIGF0dGVtcHRzIHRvIHNhdmUgdGhlIG1haWwuIEhvd2V2ZXIsIHRoZSBsaWZlYm9hdHMgaGFkIGFsbCBsZWZ0IGJ5IHRoZSB0aW1lIHRoZXkgZGVjaWRlZCB0byBsb29rIGZvciBvbmUgYW5kIHNvIHRoZXJlIHdlcmUgbm8gc3Vydml2b3JzIGluIHRoYXQgZGVwYXJ0bWVudC5bXm1haWxdCgpbXm1haWxdOiBUaXRhbml0YyBXaWtpLCAyMDE4LiBQb3N0IE9mZmljZS4gU2VlbiBvbmxpbmUgYXQgaHR0cHM6Ly90aXRhbmljLmZhbmRvbS5jb20vd2lraS9Qb3N0X09mZmljZSAgMTUgSnVseSAyMDIxCgoKTGVzc29ucyBsZWFybmVkIGZyb20gdGhlIHNpbmtpbmcgb2YgdGhlIFRpdGFuaWMgaW5zdGl0dXRlZCBudW1lcm91cyBjaGFuZ2VzIGluIHRoZSBjcnVpc2VsaW5lIGluZHVzdHJ5IGFuZCBvbiB0aGUgc2lzdGVyIHNoaXBzIG9mIHRoZSBUaXRhbmljLiBXaGVuIHRoZSBzaXN0ZXIgc2hpcCBSTUhTIEJyaXRhbm5pY2Egd2l0aCAxLDA2NSBvbmJvYXJkIHN0cnVjayBhIG1pbmUgaW4gMTkxOCwgIHRoZSBzaGlwIHNhbmsgaW4gNTUgbWlucyB3aXRoIG9ubHkgMzAgc291bHMgd2VyZSBsb3N0LiAgCgpbXmVuY3RpdGFuaWNhXTogRW5jeWNsb3BlZGlhIFRpdGFuaWNhLCAyMDExLiAiVGl0YW5pYyBQYXNzZW5nZXJzIGFuZCBDcmV3IExpc3RpbmdzIi4gIFJldHJpZXZlZCAxNSBKdWx5IDIwMjEgZnJvbSBodHRwczovL3d3dy5lbmN5Y2xvcGVkaWEtdGl0YW5pY2Eub3JnLgoKIyBSZWZlcmVuY2VzCg==