#Addition
2+3
[1] 5
#Subtraction
5-2
[1] 3
#Division
2/9
[1] 0.2222222
#Exponentiation
2^9
[1] 512
#Square root
sqrt(7)
[1] 2.645751
#Logarithms
log(2)
[1] 0.6931472
log(2.72, base = 2.72)
[1] 1
log10(10)
[1] 1
log10(100)
[1] 2
log(10, base = 5)
[1] 1.430677
#Batting Average=(No. of Hits)/(No. of At Bats)
#What is the batting average of a player that bats 29 hits in 112 at bats?
BA=(29)/(112)
BA
[1] 0.2589286
Batting_Average=round(BA,digits = 3)
Batting_Average
[1] 0.259
#Question_2:What is the batting average of a player that bats 42 hits in 212 at bats?
BA= (42)/212
BA
[1] 0.1981132
#Question_2:What is the batting average of a player that bats 42 hits in 212 at bats?
#On Base Percentage
#OBP=(H+BB+HBP)/(At Bats+BB+HBP+SF)
#Let us compute the OBP for a player with the following general stats
#AB=515,H=172,BB=84,HBP=5,SF=6
OBP=(172+84+5)/(515+84+5+6)
OBP
[1] 0.4278689
On_Base_Percentage=round(OBP,digits = 3)
On_Base_Percentage
[1] 0.428
#Question_3:Compute the OBP for a player with the following general stats:
AB=565
H=156
BB=65
HBP=3
SF=7
OBP=(H+BB+HBP)/(AB+BB+HBP+SF)
OBP
[1] 0.35
#equal
3==8
[1] FALSE
#different
3!=8
[1] TRUE
#less than or equal
3<=8
[1] TRUE
#greater
3>8
[1] FALSE
#LOGICAL OPERATORS
#OR
FALSE | FALSE
[1] FALSE
#AND
TRUE & FALSE
[1] FALSE
#NEGATION
! FALSE
[1] TRUE
#COMBINATION OF STATEMENTS
2<3 | 1==5
[1] TRUE
Total_Bases <- 6+5
Total_Bases*3
[1] 33
ls()
 [1] "AB"                 "BA"                 "Batting_Average"   
 [4] "BB"                 "H"                  "HBP"               
 [7] "OBP"                "On_Base_Percentage" "SF"                
[10] "Total_Bases"       
#remove variable
rm(Total_Bases)
pitches_by_innings <- c(12, 15, 10, 20, 10) 
pitches_by_innings
[1] 12 15 10 20 10
strikes_by_innings <- c(9, 12, 6, 14, 9)
strikes_by_innings
[1]  9 12  6 14  9
#Question_4: Define two vectors,runs_per_9innings and hits_per_9innings, each with five elements. 
runs_per_9innings <- c(5, 2, 3, 4, 5)
hits_per_9innings <- c(2, 3, 4, 5, 6)
runs_per_9innings
[1] 5 2 3 4 5
hits_per_9innings
[1] 2 3 4 5 6
# replicate function
rep(2, 5)
[1] 2 2 2 2 2
# consecutive numbers
1:5
[1] 1 2 3 4 5
# sequence from 1 to 10 with a step of 2
seq(1, 10, by=2)
[1] 1 3 5 7 9
#add vectors
pitches_by_innings+strikes_by_innings
[1] 21 27 16 34 19
# compare vectors
pitches_by_innings == strikes_by_innings
[1] FALSE FALSE FALSE FALSE FALSE
# find length of vector
length(pitches_by_innings)
[1] 5
# find minimum value in vector
min(pitches_by_innings)
[1] 10
# find average value in vector
mean(pitches_by_innings)
[1] 13.4
#You can access parts of a vector by using [. Recall what the value is of the vector pitches_by_innings.
# If you want to get the first element:
pitches_by_innings[1]
[1] 12
#Question_5: Get the first element of hits_per_9innings.
hits_per_9innings[1]
[1] 2
#If you want to get the last element of pitches_by_innings without explicitly typing the number of elements of pitches_by_innings, make use of the length function, which calculates the length of a vector:
pitches_by_innings[length(pitches_by_innings)]
[1] 10
#Question_6: Get the last element of hits_per_9innings.
hits_per_9innings[length(hits_per_9innings)]
[1] 6
pitches_by_innings[c(2, 3, 4)]
[1] 15 10 20
player_positions <- c("catcher", "pitcher", "infielders", "outfielders")
#data frame
data.frame(bonus = c(2, 3, 1),#in millions 
           active_roster = c("yes", "no", "yes"), 
           salary = c(1.5, 2.5, 1))#in millions 
#random sample
sample(1:10, size=5)
[1] 10  4  9  1  8
bar <- data.frame(var1 = LETTERS[1:10], var2 = 1:10)
# Check data frame
bar
#Suppose you want to select a random sample of size 5. First, define a variable n with the size of the sample, i.e. 5

n <- 5

#Now, select a sample of size 5 from the vector with 1 to 10 (the number of rows in bar). Use the function nrow() to find the number of rows in bar instead of manually entering that number.

#Use : to create a vector with all the integers between 1 and the number of rows in bar.

samplerows <- sample(1:nrow(bar), size=n) 
# print sample rows
samplerows
[1]  1  4  9 10  3
#The variable samplerows contains the rows of bar which make a random sample from all the rows in bar. Extract those rows from bar with

# extract rows
barsample <- bar[samplerows, ]
# print sample
print(barsample)
   var1 var2
1     A    1
4     D    4
9     I    9
10    J   10
3     C    3
#The code above creates a new data frame called barsample with a random sample of rows from bar.

#In a single line of code:

bar[sample(1:nrow(bar), n), ]
#Table
x <- c("Yes","No","No","Yes","Yes") 
table(x)
x
 No Yes 
  2   3 
#Numerical measures of center and spread
sals <- c(12, .4, 5, 2, 50, 8, 3, 1, 4, 0.25)
#the average
mean(sals)
[1] 8.565
#variance
var(sals)
[1] 225.5145
#the standard deviation
sd(sals)
[1] 15.01714
#the median
median(sals)
[1] 3.5
# Tukey's five number summary, usefull for boxplots
# five numbers: min, lower hinge, median, upper hinge, max
fivenum(sals)
[1]  0.25  1.00  3.50  8.00 50.00
# summary statistics
summary(sals)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.250   1.250   3.500   8.565   7.250  50.000 
#Mode
#In R we can write our own functions, and a first example of a function is shown below in order to compute the mode of a vector of observations x
# Function to find the mode, i.e. most frequent value
getMode <- function(x) {
     ux <- unique(x)
     ux[which.max(tabulate(match(x, ux)))]
 }
# Most frequent value in pitches_by_innings
getMode(pitches_by_innings)
[1] 10
#Question_7: Find the most frequent value of hits_per_9innings.
getMode(hits_per_9innings)
[1] 2
#There is no mode so it is returning the first value
getMode(strikes_by_innings)
[1] 9
#Question_8: Summarize the following survey with the `table()` command:
#What is your favorite day of the week to watch baseball? A total of 10 fans submitted this survey.
#Saturday, Saturday, Sunday, Monday, Saturday,Tuesday, Sunday, Friday, Friday, Monday
game_day<-c("Saturday", "Saturday", "Sunday", "Monday", "Saturday","Tuesday", "Sunday", "Friday", "Friday", "Monday")
table(game_day)
game_day
  Friday   Monday Saturday   Sunday  Tuesday 
       2        2        3        2        1 
#Question_9: What is the most frequent answer recorded in the survey? Use the getMode function to compute results. 
getMode(game_day)
[1] "Saturday"
LS0tCnRpdGxlOiAiQWN0aXZpdHkgNCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgoKYGBge3J9CiNBZGRpdGlvbgoyKzMKI1N1YnRyYWN0aW9uCjUtMgojRGl2aXNpb24KMi85CiNFeHBvbmVudGlhdGlvbgoyXjkKI1NxdWFyZSByb290CnNxcnQoNykKI0xvZ2FyaXRobXMKbG9nKDIpCmxvZygyLjcyLCBiYXNlID0gMi43MikKYGBgCgoKCgpgYGB7cn0KbG9nMTAoMTApCmxvZzEwKDEwMCkKI1F1ZXN0aW9uXzE6IENvbXB1dGUgdGhlIGxvZyBiYXNlIDUgb2YgMTAgYW5kIHRoZSBsb2cgb2YgMTAuCmxvZygxMCwgYmFzZSA9IDUpCmBgYAoKYGBge3J9CiNCYXR0aW5nIEF2ZXJhZ2U9KE5vLiBvZiBIaXRzKS8oTm8uIG9mIEF0IEJhdHMpCiNXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDI5IGhpdHMgaW4gMTEyIGF0IGJhdHM/CkJBPSgyOSkvKDExMikKQkEKYGBgCgpgYGB7cn0KQmF0dGluZ19BdmVyYWdlPXJvdW5kKEJBLGRpZ2l0cyA9IDMpCkJhdHRpbmdfQXZlcmFnZQpgYGAKCmBgYHtyfQojUXVlc3Rpb25fMjpXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDQyIGhpdHMgaW4gMjEyIGF0IGJhdHM/CkJBPSAoNDIpLzIxMgpCQQpgYGAKCgpgYGB7cn0KI09uIEJhc2UgUGVyY2VudGFnZQojT0JQPShIK0JCK0hCUCkvKEF0IEJhdHMrQkIrSEJQK1NGKQojTGV0IHVzIGNvbXB1dGUgdGhlIE9CUCBmb3IgYSBwbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RhdHMKI0FCPTUxNSxIPTE3MixCQj04NCxIQlA9NSxTRj02Ck9CUD0oMTcyKzg0KzUpLyg1MTUrODQrNSs2KQpPQlAKYGBgCgpgYGB7cn0KT25fQmFzZV9QZXJjZW50YWdlPXJvdW5kKE9CUCxkaWdpdHMgPSAzKQpPbl9CYXNlX1BlcmNlbnRhZ2UKYGBgCgpgYGB7cn0KI1F1ZXN0aW9uXzM6Q29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0czoKQUI9NTY1Ckg9MTU2CkJCPTY1CkhCUD0zClNGPTcKT0JQPShIK0JCK0hCUCkvKEFCK0JCK0hCUCtTRikKT0JQCmBgYAoKYGBge3J9CiNlcXVhbAozPT04CiNkaWZmZXJlbnQKMyE9OAojbGVzcyB0aGFuIG9yIGVxdWFsCjM8PTgKI2dyZWF0ZXIKMz44CmBgYAoKYGBge3J9CiNMT0dJQ0FMIE9QRVJBVE9SUwojT1IKRkFMU0UgfCBGQUxTRQojQU5EClRSVUUgJiBGQUxTRQojTkVHQVRJT04KISBGQUxTRQojQ09NQklOQVRJT04gT0YgU1RBVEVNRU5UUwoyPDMgfCAxPT01CmBgYAoKYGBge3J9ClRvdGFsX0Jhc2VzIDwtIDYrNQpUb3RhbF9CYXNlcyozCmBgYAoKYGBge3J9CiNUbyBzZWUgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBjdXJyZW50bHkgZGVmaW5lZCB1c2UgbHMoYXMgaW4gbGlzdCkKbHMoKQpgYGAKCmBgYHtyfQojcmVtb3ZlIHZhcmlhYmxlCnJtKFRvdGFsX0Jhc2VzKQpgYGAKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MgPC0gYygxMiwgMTUsIDEwLCAyMCwgMTApIApwaXRjaGVzX2J5X2lubmluZ3MKYGBgCgpgYGB7cn0Kc3RyaWtlc19ieV9pbm5pbmdzIDwtIGMoOSwgMTIsIDYsIDE0LCA5KQpzdHJpa2VzX2J5X2lubmluZ3MKYGBgCgpgYGB7cn0KI1F1ZXN0aW9uXzQ6IERlZmluZSB0d28gdmVjdG9ycyxydW5zX3Blcl85aW5uaW5ncyBhbmQgaGl0c19wZXJfOWlubmluZ3MsIGVhY2ggd2l0aCBmaXZlIGVsZW1lbnRzLiAKcnVuc19wZXJfOWlubmluZ3MgPC0gYyg1LCAyLCAzLCA0LCA1KQpoaXRzX3Blcl85aW5uaW5ncyA8LSBjKDIsIDMsIDQsIDUsIDYpCnJ1bnNfcGVyXzlpbm5pbmdzCmhpdHNfcGVyXzlpbm5pbmdzCmBgYAoKYGBge3J9CiMgcmVwbGljYXRlIGZ1bmN0aW9uCnJlcCgyLCA1KQpgYGAKCmBgYHtyfQojIGNvbnNlY3V0aXZlIG51bWJlcnMKMTo1CmBgYAoKYGBge3J9CiMgc2VxdWVuY2UgZnJvbSAxIHRvIDEwIHdpdGggYSBzdGVwIG9mIDIKc2VxKDEsIDEwLCBieT0yKQpgYGAKCmBgYHtyfQojYWRkIHZlY3RvcnMKcGl0Y2hlc19ieV9pbm5pbmdzK3N0cmlrZXNfYnlfaW5uaW5ncwpgYGAKCmBgYHtyfQojIGNvbXBhcmUgdmVjdG9ycwpwaXRjaGVzX2J5X2lubmluZ3MgPT0gc3RyaWtlc19ieV9pbm5pbmdzCmBgYAoKYGBge3J9CiMgZmluZCBsZW5ndGggb2YgdmVjdG9yCmxlbmd0aChwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKYGBge3J9CiMgZmluZCBtaW5pbXVtIHZhbHVlIGluIHZlY3RvcgptaW4ocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCmBgYHtyfQojIGZpbmQgYXZlcmFnZSB2YWx1ZSBpbiB2ZWN0b3IKbWVhbihwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKYGBge3J9CiNZb3UgY2FuIGFjY2VzcyBwYXJ0cyBvZiBhIHZlY3RvciBieSB1c2luZyBbLiBSZWNhbGwgd2hhdCB0aGUgdmFsdWUgaXMgb2YgdGhlIHZlY3RvciBwaXRjaGVzX2J5X2lubmluZ3MuCiMgSWYgeW91IHdhbnQgdG8gZ2V0IHRoZSBmaXJzdCBlbGVtZW50OgpwaXRjaGVzX2J5X2lubmluZ3NbMV0KYGBgCgpgYGB7cn0KI1F1ZXN0aW9uXzU6IEdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBoaXRzX3Blcl85aW5uaW5ncy4KaGl0c19wZXJfOWlubmluZ3NbMV0KYGBgCgpgYGB7cn0KI0lmIHlvdSB3YW50IHRvIGdldCB0aGUgbGFzdCBlbGVtZW50IG9mIHBpdGNoZXNfYnlfaW5uaW5ncyB3aXRob3V0IGV4cGxpY2l0bHkgdHlwaW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgcGl0Y2hlc19ieV9pbm5pbmdzLCBtYWtlIHVzZSBvZiB0aGUgbGVuZ3RoIGZ1bmN0aW9uLCB3aGljaCBjYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgYSB2ZWN0b3I6CnBpdGNoZXNfYnlfaW5uaW5nc1tsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKV0KYGBgCgpgYGB7cn0KI1F1ZXN0aW9uXzY6IEdldCB0aGUgbGFzdCBlbGVtZW50IG9mIGhpdHNfcGVyXzlpbm5pbmdzLgpoaXRzX3Blcl85aW5uaW5nc1tsZW5ndGgoaGl0c19wZXJfOWlubmluZ3MpXQpgYGAKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbYygyLCAzLCA0KV0KYGBgCgpgYGB7cn0KcGxheWVyX3Bvc2l0aW9ucyA8LSBjKCJjYXRjaGVyIiwgInBpdGNoZXIiLCAiaW5maWVsZGVycyIsICJvdXRmaWVsZGVycyIpCmBgYAoKYGBge3J9CiNkYXRhIGZyYW1lCmRhdGEuZnJhbWUoYm9udXMgPSBjKDIsIDMsIDEpLCNpbiBtaWxsaW9ucyAKICAgICAgICAgICBhY3RpdmVfcm9zdGVyID0gYygieWVzIiwgIm5vIiwgInllcyIpLCAKICAgICAgICAgICBzYWxhcnkgPSBjKDEuNSwgMi41LCAxKSkjaW4gbWlsbGlvbnMgCmBgYAoKYGBge3J9CiNyYW5kb20gc2FtcGxlCnNhbXBsZSgxOjEwLCBzaXplPTUpCmBgYAoKCmBgYHtyfQpiYXIgPC0gZGF0YS5mcmFtZSh2YXIxID0gTEVUVEVSU1sxOjEwXSwgdmFyMiA9IDE6MTApCiMgQ2hlY2sgZGF0YSBmcmFtZQpiYXIKYGBgCgpgYGB7cn0KI1N1cHBvc2UgeW91IHdhbnQgdG8gc2VsZWN0IGEgcmFuZG9tIHNhbXBsZSBvZiBzaXplIDUuIEZpcnN0LCBkZWZpbmUgYSB2YXJpYWJsZSBuIHdpdGggdGhlIHNpemUgb2YgdGhlIHNhbXBsZSwgaS5lLiA1CgpuIDwtIDUKCiNOb3csIHNlbGVjdCBhIHNhbXBsZSBvZiBzaXplIDUgZnJvbSB0aGUgdmVjdG9yIHdpdGggMSB0byAxMCAodGhlIG51bWJlciBvZiByb3dzIGluIGJhcikuIFVzZSB0aGUgZnVuY3Rpb24gbnJvdygpIHRvIGZpbmQgdGhlIG51bWJlciBvZiByb3dzIGluIGJhciBpbnN0ZWFkIG9mIG1hbnVhbGx5IGVudGVyaW5nIHRoYXQgbnVtYmVyLgoKI1VzZSA6IHRvIGNyZWF0ZSBhIHZlY3RvciB3aXRoIGFsbCB0aGUgaW50ZWdlcnMgYmV0d2VlbiAxIGFuZCB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gYmFyLgoKc2FtcGxlcm93cyA8LSBzYW1wbGUoMTpucm93KGJhciksIHNpemU9bikgCiMgcHJpbnQgc2FtcGxlIHJvd3MKc2FtcGxlcm93cwpgYGAKCgpgYGB7cn0KI1RoZSB2YXJpYWJsZSBzYW1wbGVyb3dzIGNvbnRhaW5zIHRoZSByb3dzIG9mIGJhciB3aGljaCBtYWtlIGEgcmFuZG9tIHNhbXBsZSBmcm9tIGFsbCB0aGUgcm93cyBpbiBiYXIuIEV4dHJhY3QgdGhvc2Ugcm93cyBmcm9tIGJhciB3aXRoCgojIGV4dHJhY3Qgcm93cwpiYXJzYW1wbGUgPC0gYmFyW3NhbXBsZXJvd3MsIF0KIyBwcmludCBzYW1wbGUKcHJpbnQoYmFyc2FtcGxlKQpgYGAKCmBgYHtyfQojVGhlIGNvZGUgYWJvdmUgY3JlYXRlcyBhIG5ldyBkYXRhIGZyYW1lIGNhbGxlZCBiYXJzYW1wbGUgd2l0aCBhIHJhbmRvbSBzYW1wbGUgb2Ygcm93cyBmcm9tIGJhci4KCiNJbiBhIHNpbmdsZSBsaW5lIG9mIGNvZGU6CgpiYXJbc2FtcGxlKDE6bnJvdyhiYXIpLCBuKSwgXQpgYGAKCgpgYGB7cn0KI1RhYmxlCnggPC0gYygiWWVzIiwiTm8iLCJObyIsIlllcyIsIlllcyIpIAp0YWJsZSh4KQpgYGAKCmBgYHtyfQojTnVtZXJpY2FsIG1lYXN1cmVzIG9mIGNlbnRlciBhbmQgc3ByZWFkCnNhbHMgPC0gYygxMiwgLjQsIDUsIDIsIDUwLCA4LCAzLCAxLCA0LCAwLjI1KQojdGhlIGF2ZXJhZ2UKbWVhbihzYWxzKQojdmFyaWFuY2UKdmFyKHNhbHMpCiN0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCnNkKHNhbHMpCiN0aGUgbWVkaWFuCm1lZGlhbihzYWxzKQojIFR1a2V5J3MgZml2ZSBudW1iZXIgc3VtbWFyeSwgdXNlZnVsbCBmb3IgYm94cGxvdHMKIyBmaXZlIG51bWJlcnM6IG1pbiwgbG93ZXIgaGluZ2UsIG1lZGlhbiwgdXBwZXIgaGluZ2UsIG1heApmaXZlbnVtKHNhbHMpCiMgc3VtbWFyeSBzdGF0aXN0aWNzCnN1bW1hcnkoc2FscykKYGBgCgpgYGB7cn0KI01vZGUKI0luIFIgd2UgY2FuIHdyaXRlIG91ciBvd24gZnVuY3Rpb25zLCBhbmQgYSBmaXJzdCBleGFtcGxlIG9mIGEgZnVuY3Rpb24gaXMgc2hvd24gYmVsb3cgaW4gb3JkZXIgdG8gY29tcHV0ZSB0aGUgbW9kZSBvZiBhIHZlY3RvciBvZiBvYnNlcnZhdGlvbnMgeAojIEZ1bmN0aW9uIHRvIGZpbmQgdGhlIG1vZGUsIGkuZS4gbW9zdCBmcmVxdWVudCB2YWx1ZQpnZXRNb2RlIDwtIGZ1bmN0aW9uKHgpIHsKICAgICB1eCA8LSB1bmlxdWUoeCkKICAgICB1eFt3aGljaC5tYXgodGFidWxhdGUobWF0Y2goeCwgdXgpKSldCiB9CmBgYAoKYGBge3J9CiMgTW9zdCBmcmVxdWVudCB2YWx1ZSBpbiBwaXRjaGVzX2J5X2lubmluZ3MKZ2V0TW9kZShwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKYGBge3J9CiNRdWVzdGlvbl83OiBGaW5kIHRoZSBtb3N0IGZyZXF1ZW50IHZhbHVlIG9mIGhpdHNfcGVyXzlpbm5pbmdzLgpnZXRNb2RlKGhpdHNfcGVyXzlpbm5pbmdzKQojVGhlcmUgaXMgbm8gbW9kZSBzbyBpdCBpcyByZXR1cm5pbmcgdGhlIGZpcnN0IHZhbHVlCmdldE1vZGUoc3RyaWtlc19ieV9pbm5pbmdzKQpgYGAKCmBgYHtyfQojUXVlc3Rpb25fODogU3VtbWFyaXplIHRoZSBmb2xsb3dpbmcgc3VydmV5IHdpdGggdGhlIGB0YWJsZSgpYCBjb21tYW5kOgojV2hhdCBpcyB5b3VyIGZhdm9yaXRlIGRheSBvZiB0aGUgd2VlayB0byB3YXRjaCBiYXNlYmFsbD8gQSB0b3RhbCBvZiAxMCBmYW5zIHN1Ym1pdHRlZCB0aGlzIHN1cnZleS4KI1NhdHVyZGF5LCBTYXR1cmRheSwgU3VuZGF5LCBNb25kYXksIFNhdHVyZGF5LFR1ZXNkYXksIFN1bmRheSwgRnJpZGF5LCBGcmlkYXksIE1vbmRheQpnYW1lX2RheTwtYygiU2F0dXJkYXkiLCAiU2F0dXJkYXkiLCAiU3VuZGF5IiwgIk1vbmRheSIsICJTYXR1cmRheSIsIlR1ZXNkYXkiLCAiU3VuZGF5IiwgIkZyaWRheSIsICJGcmlkYXkiLCAiTW9uZGF5IikKdGFibGUoZ2FtZV9kYXkpCmBgYAoKYGBge3J9CiNRdWVzdGlvbl85OiBXaGF0IGlzIHRoZSBtb3N0IGZyZXF1ZW50IGFuc3dlciByZWNvcmRlZCBpbiB0aGUgc3VydmV5PyBVc2UgdGhlIGdldE1vZGUgZnVuY3Rpb24gdG8gY29tcHV0ZSByZXN1bHRzLiAKZ2V0TW9kZShnYW1lX2RheSkKYGBgCgo=