#Instructions for this dataset:
# Simply select ALL the lines in this script by pressing
# CTRL+A on Windows or CMND+A on a Mac and execute them
# Once you have executed the commands the following objects
# will be created:
# Matrices:
# - FieldGoalAttempts
# - FieldGoals
# - Games
# - MinutesPlayed
# - Salary
# Vectors:
# - Players
# - Seasons
#Comments:
#Seasons are labeled based on the first year in the season
#E.g. the 2012-2013 season is preseneted as simply 2012
#Notes and Corrections to the data:
#Kevin Durant: 2006 - College Data Used
#Kevin Durant: 2005 - Proxied With 2006 Data
#Derrick Rose: 2012 - Did Not Play
#Derrick Rose: 2007 - College Data Used
#Derrick Rose: 2006 - Proxied With 2007 Data
#Derrick Rose: 2005 - Proxied With 2007 Data
#Seasons
Seasons <- c("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014")
#Players
Players <- c("KobeBryant","JoeJohnson","LeBronJames","CarmeloAnthony","DwightHoward","ChrisBosh","ChrisPaul","KevinDurant","DerrickRose","DwayneWade")
#Salaries
KobeBryant_Salary <- c(15946875,17718750,19490625,21262500,23034375,24806250,25244493,27849149,30453805,23500000)
JoeJohnson_Salary <- c(12000000,12744189,13488377,14232567,14976754,16324500,18038573,19752645,21466718,23180790)
LeBronJames_Salary <- c(4621800,5828090,13041250,14410581,15779912,14500000,16022500,17545000,19067500,20644400)
CarmeloAnthony_Salary <- c(3713640,4694041,13041250,14410581,15779912,17149243,18518574,19450000,22407474,22458000)
DwightHoward_Salary <- c(4493160,4806720,6061274,13758000,15202590,16647180,18091770,19536360,20513178,21436271)
ChrisBosh_Salary <- c(3348000,4235220,12455000,14410581,15779912,14500000,16022500,17545000,19067500,20644400)
ChrisPaul_Salary <- c(3144240,3380160,3615960,4574189,13520500,14940153,16359805,17779458,18668431,20068563)
KevinDurant_Salary <- c(0,0,4171200,4484040,4796880,6053663,15506632,16669630,17832627,18995624)
DerrickRose_Salary <- c(0,0,0,4822800,5184480,5546160,6993708,16402500,17632688,18862875)
DwayneWade_Salary <- c(3031920,3841443,13041250,14410581,15779912,14200000,15691000,17182000,18673000,15000000)
#Matrix
Salary <- rbind(KobeBryant_Salary, JoeJohnson_Salary, LeBronJames_Salary, CarmeloAnthony_Salary, DwightHoward_Salary, ChrisBosh_Salary, ChrisPaul_Salary, KevinDurant_Salary, DerrickRose_Salary, DwayneWade_Salary)
rm(KobeBryant_Salary, JoeJohnson_Salary, CarmeloAnthony_Salary, DwightHoward_Salary, ChrisBosh_Salary, LeBronJames_Salary, ChrisPaul_Salary, DerrickRose_Salary, DwayneWade_Salary, KevinDurant_Salary)
colnames(Salary) <- Seasons
rownames(Salary) <- Players
#Games
KobeBryant_G <- c(80,77,82,82,73,82,58,78,6,35)
JoeJohnson_G <- c(82,57,82,79,76,72,60,72,79,80)
LeBronJames_G <- c(79,78,75,81,76,79,62,76,77,69)
CarmeloAnthony_G <- c(80,65,77,66,69,77,55,67,77,40)
DwightHoward_G <- c(82,82,82,79,82,78,54,76,71,41)
ChrisBosh_G <- c(70,69,67,77,70,77,57,74,79,44)
ChrisPaul_G <- c(78,64,80,78,45,80,60,70,62,82)
KevinDurant_G <- c(35,35,80,74,82,78,66,81,81,27)
DerrickRose_G <- c(40,40,40,81,78,81,39,0,10,51)
DwayneWade_G <- c(75,51,51,79,77,76,49,69,54,62)
#Matrix
Games <- rbind(KobeBryant_G, JoeJohnson_G, LeBronJames_G, CarmeloAnthony_G, DwightHoward_G, ChrisBosh_G, ChrisPaul_G, KevinDurant_G, DerrickRose_G, DwayneWade_G)
rm(KobeBryant_G, JoeJohnson_G, CarmeloAnthony_G, DwightHoward_G, ChrisBosh_G, LeBronJames_G, ChrisPaul_G, DerrickRose_G, DwayneWade_G, KevinDurant_G)
colnames(Games) <- Seasons
rownames(Games) <- Players
#Minutes Played
KobeBryant_MP <- c(3277,3140,3192,2960,2835,2779,2232,3013,177,1207)
JoeJohnson_MP <- c(3340,2359,3343,3124,2886,2554,2127,2642,2575,2791)
LeBronJames_MP <- c(3361,3190,3027,3054,2966,3063,2326,2877,2902,2493)
CarmeloAnthony_MP <- c(2941,2486,2806,2277,2634,2751,1876,2482,2982,1428)
DwightHoward_MP <- c(3021,3023,3088,2821,2843,2935,2070,2722,2396,1223)
ChrisBosh_MP <- c(2751,2658,2425,2928,2526,2795,2007,2454,2531,1556)
ChrisPaul_MP <- c(2808,2353,3006,3002,1712,2880,2181,2335,2171,2857)
KevinDurant_MP <- c(1255,1255,2768,2885,3239,3038,2546,3119,3122,913)
DerrickRose_MP <- c(1168,1168,1168,3000,2871,3026,1375,0,311,1530)
DwayneWade_MP <- c(2892,1931,1954,3048,2792,2823,1625,2391,1775,1971)
#Matrix
MinutesPlayed <- rbind(KobeBryant_MP, JoeJohnson_MP, LeBronJames_MP, CarmeloAnthony_MP, DwightHoward_MP, ChrisBosh_MP, ChrisPaul_MP, KevinDurant_MP, DerrickRose_MP, DwayneWade_MP)
rm(KobeBryant_MP, JoeJohnson_MP, CarmeloAnthony_MP, DwightHoward_MP, ChrisBosh_MP, LeBronJames_MP, ChrisPaul_MP, DerrickRose_MP, DwayneWade_MP, KevinDurant_MP)
colnames(MinutesPlayed) <- Seasons
rownames(MinutesPlayed) <- Players
#Field Goals
KobeBryant_FG <- c(978,813,775,800,716,740,574,738,31,266)
JoeJohnson_FG <- c(632,536,647,620,635,514,423,445,462,446)
LeBronJames_FG <- c(875,772,794,789,768,758,621,765,767,624)
CarmeloAnthony_FG <- c(756,691,728,535,688,684,441,669,743,358)
DwightHoward_FG <- c(468,526,583,560,510,619,416,470,473,251)
ChrisBosh_FG <- c(549,543,507,615,600,524,393,485,492,343)
ChrisPaul_FG <- c(407,381,630,631,314,430,425,412,406,568)
KevinDurant_FG <- c(306,306,587,661,794,711,643,731,849,238)
DerrickRose_FG <- c(208,208,208,574,672,711,302,0,58,338)
DwayneWade_FG <- c(699,472,439,854,719,692,416,569,415,509)
#Matrix
FieldGoals <- rbind(KobeBryant_FG, JoeJohnson_FG, LeBronJames_FG, CarmeloAnthony_FG, DwightHoward_FG, ChrisBosh_FG, ChrisPaul_FG, KevinDurant_FG, DerrickRose_FG, DwayneWade_FG)
rm(KobeBryant_FG, JoeJohnson_FG, LeBronJames_FG, CarmeloAnthony_FG, DwightHoward_FG, ChrisBosh_FG, ChrisPaul_FG, KevinDurant_FG, DerrickRose_FG, DwayneWade_FG)
colnames(FieldGoals) <- Seasons
rownames(FieldGoals) <- Players
#Field Goal Attempts
KobeBryant_FGA <- c(2173,1757,1690,1712,1569,1639,1336,1595,73,713)
JoeJohnson_FGA <- c(1395,1139,1497,1420,1386,1161,931,1052,1018,1025)
LeBronJames_FGA <- c(1823,1621,1642,1613,1528,1485,1169,1354,1353,1279)
CarmeloAnthony_FGA <- c(1572,1453,1481,1207,1502,1503,1025,1489,1643,806)
DwightHoward_FGA <- c(881,873,974,979,834,1044,726,813,800,423)
ChrisBosh_FGA <- c(1087,1094,1027,1263,1158,1056,807,907,953,745)
ChrisPaul_FGA <- c(947,871,1291,1255,637,928,890,856,870,1170)
KevinDurant_FGA <- c(647,647,1366,1390,1668,1538,1297,1433,1688,467)
DerrickRose_FGA <- c(436,436,436,1208,1373,1597,695,0,164,835)
DwayneWade_FGA <- c(1413,962,937,1739,1511,1384,837,1093,761,1084)
#Matrix
FieldGoalAttempts <- rbind(KobeBryant_FGA, JoeJohnson_FGA, LeBronJames_FGA, CarmeloAnthony_FGA, DwightHoward_FGA, ChrisBosh_FGA, ChrisPaul_FGA, KevinDurant_FGA, DerrickRose_FGA, DwayneWade_FGA)
rm(KobeBryant_FGA, JoeJohnson_FGA, LeBronJames_FGA, CarmeloAnthony_FGA, DwightHoward_FGA, ChrisBosh_FGA, ChrisPaul_FGA, KevinDurant_FGA, DerrickRose_FGA, DwayneWade_FGA)
colnames(FieldGoalAttempts) <- Seasons
rownames(FieldGoalAttempts) <- Players
#Points
KobeBryant_PTS <- c(2832,2430,2323,2201,1970,2078,1616,2133,83,782)
JoeJohnson_PTS <- c(1653,1426,1779,1688,1619,1312,1129,1170,1245,1154)
LeBronJames_PTS <- c(2478,2132,2250,2304,2258,2111,1683,2036,2089,1743)
CarmeloAnthony_PTS <- c(2122,1881,1978,1504,1943,1970,1245,1920,2112,966)
DwightHoward_PTS <- c(1292,1443,1695,1624,1503,1784,1113,1296,1297,646)
ChrisBosh_PTS <- c(1572,1561,1496,1746,1678,1438,1025,1232,1281,928)
ChrisPaul_PTS <- c(1258,1104,1684,1781,841,1268,1189,1186,1185,1564)
KevinDurant_PTS <- c(903,903,1624,1871,2472,2161,1850,2280,2593,686)
DerrickRose_PTS <- c(597,597,597,1361,1619,2026,852,0,159,904)
DwayneWade_PTS <- c(2040,1397,1254,2386,2045,1941,1082,1463,1028,1331)
#Matrix
Points <- rbind(KobeBryant_PTS, JoeJohnson_PTS, LeBronJames_PTS, CarmeloAnthony_PTS, DwightHoward_PTS, ChrisBosh_PTS, ChrisPaul_PTS, KevinDurant_PTS, DerrickRose_PTS, DwayneWade_PTS)
rm(KobeBryant_PTS, JoeJohnson_PTS, LeBronJames_PTS, CarmeloAnthony_PTS, DwightHoward_PTS, ChrisBosh_PTS, ChrisPaul_PTS, KevinDurant_PTS, DerrickRose_PTS, DwayneWade_PTS)
colnames(Points) <- Seasons
rownames(Points) <- Players
Salary
2005 2006 2007 2008 2009 2010 2011
KobeBryant 15946875 17718750 19490625 21262500 23034375 24806250 25244493
JoeJohnson 12000000 12744189 13488377 14232567 14976754 16324500 18038573
LeBronJames 4621800 5828090 13041250 14410581 15779912 14500000 16022500
CarmeloAnthony 3713640 4694041 13041250 14410581 15779912 17149243 18518574
DwightHoward 4493160 4806720 6061274 13758000 15202590 16647180 18091770
ChrisBosh 3348000 4235220 12455000 14410581 15779912 14500000 16022500
ChrisPaul 3144240 3380160 3615960 4574189 13520500 14940153 16359805
KevinDurant 0 0 4171200 4484040 4796880 6053663 15506632
DerrickRose 0 0 0 4822800 5184480 5546160 6993708
DwayneWade 3031920 3841443 13041250 14410581 15779912 14200000 15691000
2012 2013 2014
KobeBryant 27849149 30453805 23500000
JoeJohnson 19752645 21466718 23180790
LeBronJames 17545000 19067500 20644400
CarmeloAnthony 19450000 22407474 22458000
DwightHoward 19536360 20513178 21436271
ChrisBosh 17545000 19067500 20644400
ChrisPaul 17779458 18668431 20068563
KevinDurant 16669630 17832627 18995624
DerrickRose 16402500 17632688 18862875
DwayneWade 17182000 18673000 15000000
Games
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 80 77 82 82 73 82 58 78 6 35
JoeJohnson 82 57 82 79 76 72 60 72 79 80
LeBronJames 79 78 75 81 76 79 62 76 77 69
CarmeloAnthony 80 65 77 66 69 77 55 67 77 40
DwightHoward 82 82 82 79 82 78 54 76 71 41
ChrisBosh 70 69 67 77 70 77 57 74 79 44
ChrisPaul 78 64 80 78 45 80 60 70 62 82
KevinDurant 35 35 80 74 82 78 66 81 81 27
DerrickRose 40 40 40 81 78 81 39 0 10 51
DwayneWade 75 51 51 79 77 76 49 69 54 62
MinutesPlayed
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 3277 3140 3192 2960 2835 2779 2232 3013 177 1207
JoeJohnson 3340 2359 3343 3124 2886 2554 2127 2642 2575 2791
LeBronJames 3361 3190 3027 3054 2966 3063 2326 2877 2902 2493
CarmeloAnthony 2941 2486 2806 2277 2634 2751 1876 2482 2982 1428
DwightHoward 3021 3023 3088 2821 2843 2935 2070 2722 2396 1223
ChrisBosh 2751 2658 2425 2928 2526 2795 2007 2454 2531 1556
ChrisPaul 2808 2353 3006 3002 1712 2880 2181 2335 2171 2857
KevinDurant 1255 1255 2768 2885 3239 3038 2546 3119 3122 913
DerrickRose 1168 1168 1168 3000 2871 3026 1375 0 311 1530
DwayneWade 2892 1931 1954 3048 2792 2823 1625 2391 1775 1971
#matrix
my.data <- 1:20
my.data
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
A <- matrix(my.data, 4, 5)
A
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
A[2,3]
[1] 10
B <- matrix(my.data, 4, 5, byrow=T)
B
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
B[2,5]
[1] 10
#rbind
r1 <- c("I", "am", "happy")
r2 <- c("What", "a", "day")
r3 <- c(1,2,3)
C <- rbind(r1, r2, r3)
C
[,1] [,2] [,3]
r1 "I" "am" "happy"
r2 "What" "a" "day"
r3 "1" "2" "3"
#cbind
c1 <- 1:5
c2 <- -1:-5
D <- cbind(c1,c2)
D
c1 c2
[1,] 1 -1
[2,] 2 -2
[3,] 3 -3
[4,] 4 -4
[5,] 5 -5
#named vectors
Charlie <- 1:5
Charlie
[1] 1 2 3 4 5
#give names
names(Charlie) <- c("a", "b", "c", "d", "e")
Charlie
a b c d e
1 2 3 4 5
Charlie["d"]
d
4
names(Charlie)
[1] "a" "b" "c" "d" "e"
#clear names
names(Charlie) <- NULL
Charlie
[1] 1 2 3 4 5
#Naming matrix dimensions 1
temp.vec <- rep(c("a", "B", "zZ"), each=3)
temp.vec
[1] "a" "a" "a" "B" "B" "B" "zZ" "zZ" "zZ"
Bravo <- matrix(temp.vec, 3,3)
Bravo
[,1] [,2] [,3]
[1,] "a" "B" "zZ"
[2,] "a" "B" "zZ"
[3,] "a" "B" "zZ"
rownames(Bravo) <- c("How", "are", "you")
Bravo
[,1] [,2] [,3]
How "a" "B" "zZ"
are "a" "B" "zZ"
you "a" "B" "zZ"
colnames(Bravo) <- c("X", "Y", "Z")
Bravo
X Y Z
How "a" "B" "zZ"
are "a" "B" "zZ"
you "a" "B" "zZ"
Bravo["are", "Y"] <- 0
Bravo
X Y Z
How "a" "B" "zZ"
are "a" "0" "zZ"
you "a" "B" "zZ"
rownames(Bravo) <- NULL
Bravo
X Y Z
[1,] "a" "B" "zZ"
[2,] "a" "0" "zZ"
[3,] "a" "B" "zZ"
Games
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 80 77 82 82 73 82 58 78 6 35
JoeJohnson 82 57 82 79 76 72 60 72 79 80
LeBronJames 79 78 75 81 76 79 62 76 77 69
CarmeloAnthony 80 65 77 66 69 77 55 67 77 40
DwightHoward 82 82 82 79 82 78 54 76 71 41
ChrisBosh 70 69 67 77 70 77 57 74 79 44
ChrisPaul 78 64 80 78 45 80 60 70 62 82
KevinDurant 35 35 80 74 82 78 66 81 81 27
DerrickRose 40 40 40 81 78 81 39 0 10 51
DwayneWade 75 51 51 79 77 76 49 69 54 62
rownames(Games)
[1] "KobeBryant" "JoeJohnson" "LeBronJames" "CarmeloAnthony"
[5] "DwightHoward" "ChrisBosh" "ChrisPaul" "KevinDurant"
[9] "DerrickRose" "DwayneWade"
colnames(Games)
[1] "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2012" "2013" "2014"
Games["LeBronJames", "2012"]
[1] 76
FieldGoals
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 978 813 775 800 716 740 574 738 31 266
JoeJohnson 632 536 647 620 635 514 423 445 462 446
LeBronJames 875 772 794 789 768 758 621 765 767 624
CarmeloAnthony 756 691 728 535 688 684 441 669 743 358
DwightHoward 468 526 583 560 510 619 416 470 473 251
ChrisBosh 549 543 507 615 600 524 393 485 492 343
ChrisPaul 407 381 630 631 314 430 425 412 406 568
KevinDurant 306 306 587 661 794 711 643 731 849 238
DerrickRose 208 208 208 574 672 711 302 0 58 338
DwayneWade 699 472 439 854 719 692 416 569 415 509
round(FieldGoals / Games,1)
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 12.2 10.6 9.5 9.8 9.8 9.0 9.9 9.5 5.2 7.6
JoeJohnson 7.7 9.4 7.9 7.8 8.4 7.1 7.0 6.2 5.8 5.6
LeBronJames 11.1 9.9 10.6 9.7 10.1 9.6 10.0 10.1 10.0 9.0
CarmeloAnthony 9.4 10.6 9.5 8.1 10.0 8.9 8.0 10.0 9.6 8.9
DwightHoward 5.7 6.4 7.1 7.1 6.2 7.9 7.7 6.2 6.7 6.1
ChrisBosh 7.8 7.9 7.6 8.0 8.6 6.8 6.9 6.6 6.2 7.8
ChrisPaul 5.2 6.0 7.9 8.1 7.0 5.4 7.1 5.9 6.5 6.9
KevinDurant 8.7 8.7 7.3 8.9 9.7 9.1 9.7 9.0 10.5 8.8
DerrickRose 5.2 5.2 5.2 7.1 8.6 8.8 7.7 NaN 5.8 6.6
DwayneWade 9.3 9.3 8.6 10.8 9.3 9.1 8.5 8.2 7.7 8.2
round(MinutesPlayed / Games)
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 41 41 39 36 39 34 38 39 30 34
JoeJohnson 41 41 41 40 38 35 35 37 33 35
LeBronJames 43 41 40 38 39 39 38 38 38 36
CarmeloAnthony 37 38 36 34 38 36 34 37 39 36
DwightHoward 37 37 38 36 35 38 38 36 34 30
ChrisBosh 39 39 36 38 36 36 35 33 32 35
ChrisPaul 36 37 38 38 38 36 36 33 35 35
KevinDurant 36 36 35 39 40 39 39 39 39 34
DerrickRose 29 29 29 37 37 37 35 NaN 31 30
DwayneWade 39 38 38 39 36 37 33 35 33 32
matplot(FieldGoals)

t(FieldGoals)
KobeBryant JoeJohnson LeBronJames CarmeloAnthony DwightHoward ChrisBosh
2005 978 632 875 756 468 549
2006 813 536 772 691 526 543
2007 775 647 794 728 583 507
2008 800 620 789 535 560 615
2009 716 635 768 688 510 600
2010 740 514 758 684 619 524
2011 574 423 621 441 416 393
2012 738 445 765 669 470 485
2013 31 462 767 743 473 492
2014 266 446 624 358 251 343
ChrisPaul KevinDurant DerrickRose DwayneWade
2005 407 306 208 699
2006 381 306 208 472
2007 630 587 208 439
2008 631 661 574 854
2009 314 794 672 719
2010 430 711 711 692
2011 425 643 302 416
2012 412 731 0 569
2013 406 849 58 415
2014 568 238 338 509
matplot(t(FieldGoals/Games), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players, col=c(1:4,6), pch=15:18, horiz=F)

matplot(t(FieldGoals/FieldGoalAttempts), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players, col=c(1:4,6), pch=15:18, horiz=F)

x <- c("a", "b", "c", "d", "e")
x
[1] "a" "b" "c" "d" "e"
x[c(1,5)]
[1] "a" "e"
x[1]
[1] "a"
Games
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 80 77 82 82 73 82 58 78 6 35
JoeJohnson 82 57 82 79 76 72 60 72 79 80
LeBronJames 79 78 75 81 76 79 62 76 77 69
CarmeloAnthony 80 65 77 66 69 77 55 67 77 40
DwightHoward 82 82 82 79 82 78 54 76 71 41
ChrisBosh 70 69 67 77 70 77 57 74 79 44
ChrisPaul 78 64 80 78 45 80 60 70 62 82
KevinDurant 35 35 80 74 82 78 66 81 81 27
DerrickRose 40 40 40 81 78 81 39 0 10 51
DwayneWade 75 51 51 79 77 76 49 69 54 62
Games[1:3,6:10]
2010 2011 2012 2013 2014
KobeBryant 82 58 78 6 35
JoeJohnson 72 60 72 79 80
LeBronJames 79 62 76 77 69
Games[c(1,10),]
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 80 77 82 82 73 82 58 78 6 35
DwayneWade 75 51 51 79 77 76 49 69 54 62
Games[, c("2008", "2009")]
2008 2009
KobeBryant 82 73
JoeJohnson 79 76
LeBronJames 81 76
CarmeloAnthony 66 69
DwightHoward 79 82
ChrisBosh 77 70
ChrisPaul 78 45
KevinDurant 74 82
DerrickRose 81 78
DwayneWade 79 77
Games[1,]
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
80 77 82 82 73 82 58 78 6 35
is.matrix(Games[1,])
[1] FALSE
is.vector(Games[1,])
[1] TRUE
Games[1,,drop=F]
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant 80 77 82 82 73 82 58 78 6 35
Games[1,5,drop=F]
2009
KobeBryant 73
Data <- MinutesPlayed[1:3,]
matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players[1:3], col=c(1:4,6), pch=15:18, horiz=F)

Data <- MinutesPlayed[1,,drop=F]
matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players[1], col=c(1:4,6), pch=15:18, horiz=F)

myplot <- function(){
Data <- MinutesPlayed[2:3,,drop=F]
matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players[2:3], col=c(1:4,6), pch=15:18, horiz=F)
}
myplot()

myplot <- function(data,rows=1:10){
Data <- data[rows,,drop=F]
matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players[rows], col=c(1:4,6), pch=15:18, horiz=F)
}
myplot(Salary)

myplot(MinutesPlayed)

myplot(MinutesPlayed/Games, 3)

#Salary
myplot(Salary)

myplot(Salary/Games)

myplot(Salary/FieldGoals)

#In-Game Metrics
myplot(MinutesPlayed)

myplot(Points)

#In-Game Metrics Normalized
myplot(FieldGoals/Games)

myplot(FieldGoals/FieldGoalAttempts)

myplot(FieldGoalAttempts/Games)

myplot(Points/Games)

#Interesting Observations
myplot(MinutesPlayed/Games)

myplot(Games)

#Time is Valuable
myplot(FieldGoals/MinutesPlayed)

#Player Style
myplot(Points/FieldGoals)

LS0tCnRpdGxlOiAiQmFza2V0YmFsbCBBbmFseXNpcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQoKI0luc3RydWN0aW9ucyBmb3IgdGhpcyBkYXRhc2V0OgojIFNpbXBseSBzZWxlY3QgQUxMIHRoZSBsaW5lcyBpbiB0aGlzIHNjcmlwdCBieSBwcmVzc2luZyAKIyBDVFJMK0Egb24gV2luZG93cyBvciBDTU5EK0Egb24gYSBNYWMgYW5kIGV4ZWN1dGUgdGhlbQojIE9uY2UgeW91IGhhdmUgZXhlY3V0ZWQgdGhlIGNvbW1hbmRzIHRoZSBmb2xsb3dpbmcgb2JqZWN0cwojIHdpbGwgYmUgY3JlYXRlZDoKIyBNYXRyaWNlczoKIyAtIEZpZWxkR29hbEF0dGVtcHRzCiMgLSBGaWVsZEdvYWxzCiMgLSBHYW1lcwojIC0gTWludXRlc1BsYXllZAojIC0gU2FsYXJ5CiMgVmVjdG9yczoKIyAtIFBsYXllcnMKIyAtIFNlYXNvbnMKCiNDb21tZW50czoKI1NlYXNvbnMgYXJlIGxhYmVsZWQgYmFzZWQgb24gdGhlIGZpcnN0IHllYXIgaW4gdGhlIHNlYXNvbgojRS5nLiB0aGUgMjAxMi0yMDEzIHNlYXNvbiBpcyBwcmVzZW5ldGVkIGFzIHNpbXBseSAyMDEyCgojTm90ZXMgYW5kIENvcnJlY3Rpb25zIHRvIHRoZSBkYXRhOgojS2V2aW4gRHVyYW50OiAyMDA2IC0gQ29sbGVnZSBEYXRhIFVzZWQKI0tldmluIER1cmFudDogMjAwNSAtIFByb3hpZWQgV2l0aCAyMDA2IERhdGEKI0RlcnJpY2sgUm9zZTogMjAxMiAtIERpZCBOb3QgUGxheQojRGVycmljayBSb3NlOiAyMDA3IC0gQ29sbGVnZSBEYXRhIFVzZWQKI0RlcnJpY2sgUm9zZTogMjAwNiAtIFByb3hpZWQgV2l0aCAyMDA3IERhdGEKI0RlcnJpY2sgUm9zZTogMjAwNSAtIFByb3hpZWQgV2l0aCAyMDA3IERhdGEKCiNTZWFzb25zClNlYXNvbnMgPC0gYygiMjAwNSIsIjIwMDYiLCIyMDA3IiwiMjAwOCIsIjIwMDkiLCIyMDEwIiwiMjAxMSIsIjIwMTIiLCIyMDEzIiwiMjAxNCIpCgojUGxheWVycwpQbGF5ZXJzIDwtIGMoIktvYmVCcnlhbnQiLCJKb2VKb2huc29uIiwiTGVCcm9uSmFtZXMiLCJDYXJtZWxvQW50aG9ueSIsIkR3aWdodEhvd2FyZCIsIkNocmlzQm9zaCIsIkNocmlzUGF1bCIsIktldmluRHVyYW50IiwiRGVycmlja1Jvc2UiLCJEd2F5bmVXYWRlIikKCiNTYWxhcmllcwpLb2JlQnJ5YW50X1NhbGFyeSA8LSBjKDE1OTQ2ODc1LDE3NzE4NzUwLDE5NDkwNjI1LDIxMjYyNTAwLDIzMDM0Mzc1LDI0ODA2MjUwLDI1MjQ0NDkzLDI3ODQ5MTQ5LDMwNDUzODA1LDIzNTAwMDAwKQpKb2VKb2huc29uX1NhbGFyeSA8LSBjKDEyMDAwMDAwLDEyNzQ0MTg5LDEzNDg4Mzc3LDE0MjMyNTY3LDE0OTc2NzU0LDE2MzI0NTAwLDE4MDM4NTczLDE5NzUyNjQ1LDIxNDY2NzE4LDIzMTgwNzkwKQpMZUJyb25KYW1lc19TYWxhcnkgPC0gYyg0NjIxODAwLDU4MjgwOTAsMTMwNDEyNTAsMTQ0MTA1ODEsMTU3Nzk5MTIsMTQ1MDAwMDAsMTYwMjI1MDAsMTc1NDUwMDAsMTkwNjc1MDAsMjA2NDQ0MDApCkNhcm1lbG9BbnRob255X1NhbGFyeSA8LSBjKDM3MTM2NDAsNDY5NDA0MSwxMzA0MTI1MCwxNDQxMDU4MSwxNTc3OTkxMiwxNzE0OTI0MywxODUxODU3NCwxOTQ1MDAwMCwyMjQwNzQ3NCwyMjQ1ODAwMCkKRHdpZ2h0SG93YXJkX1NhbGFyeSA8LSBjKDQ0OTMxNjAsNDgwNjcyMCw2MDYxMjc0LDEzNzU4MDAwLDE1MjAyNTkwLDE2NjQ3MTgwLDE4MDkxNzcwLDE5NTM2MzYwLDIwNTEzMTc4LDIxNDM2MjcxKQpDaHJpc0Jvc2hfU2FsYXJ5IDwtIGMoMzM0ODAwMCw0MjM1MjIwLDEyNDU1MDAwLDE0NDEwNTgxLDE1Nzc5OTEyLDE0NTAwMDAwLDE2MDIyNTAwLDE3NTQ1MDAwLDE5MDY3NTAwLDIwNjQ0NDAwKQpDaHJpc1BhdWxfU2FsYXJ5IDwtIGMoMzE0NDI0MCwzMzgwMTYwLDM2MTU5NjAsNDU3NDE4OSwxMzUyMDUwMCwxNDk0MDE1MywxNjM1OTgwNSwxNzc3OTQ1OCwxODY2ODQzMSwyMDA2ODU2MykKS2V2aW5EdXJhbnRfU2FsYXJ5IDwtIGMoMCwwLDQxNzEyMDAsNDQ4NDA0MCw0Nzk2ODgwLDYwNTM2NjMsMTU1MDY2MzIsMTY2Njk2MzAsMTc4MzI2MjcsMTg5OTU2MjQpCkRlcnJpY2tSb3NlX1NhbGFyeSA8LSBjKDAsMCwwLDQ4MjI4MDAsNTE4NDQ4MCw1NTQ2MTYwLDY5OTM3MDgsMTY0MDI1MDAsMTc2MzI2ODgsMTg4NjI4NzUpCkR3YXluZVdhZGVfU2FsYXJ5IDwtIGMoMzAzMTkyMCwzODQxNDQzLDEzMDQxMjUwLDE0NDEwNTgxLDE1Nzc5OTEyLDE0MjAwMDAwLDE1NjkxMDAwLDE3MTgyMDAwLDE4NjczMDAwLDE1MDAwMDAwKQojTWF0cml4ClNhbGFyeSA8LSByYmluZChLb2JlQnJ5YW50X1NhbGFyeSwgSm9lSm9obnNvbl9TYWxhcnksIExlQnJvbkphbWVzX1NhbGFyeSwgQ2FybWVsb0FudGhvbnlfU2FsYXJ5LCBEd2lnaHRIb3dhcmRfU2FsYXJ5LCBDaHJpc0Jvc2hfU2FsYXJ5LCBDaHJpc1BhdWxfU2FsYXJ5LCBLZXZpbkR1cmFudF9TYWxhcnksIERlcnJpY2tSb3NlX1NhbGFyeSwgRHdheW5lV2FkZV9TYWxhcnkpCnJtKEtvYmVCcnlhbnRfU2FsYXJ5LCBKb2VKb2huc29uX1NhbGFyeSwgQ2FybWVsb0FudGhvbnlfU2FsYXJ5LCBEd2lnaHRIb3dhcmRfU2FsYXJ5LCBDaHJpc0Jvc2hfU2FsYXJ5LCBMZUJyb25KYW1lc19TYWxhcnksIENocmlzUGF1bF9TYWxhcnksIERlcnJpY2tSb3NlX1NhbGFyeSwgRHdheW5lV2FkZV9TYWxhcnksIEtldmluRHVyYW50X1NhbGFyeSkKY29sbmFtZXMoU2FsYXJ5KSA8LSBTZWFzb25zCnJvd25hbWVzKFNhbGFyeSkgPC0gUGxheWVycwoKI0dhbWVzIApLb2JlQnJ5YW50X0cgPC0gYyg4MCw3Nyw4Miw4Miw3Myw4Miw1OCw3OCw2LDM1KQpKb2VKb2huc29uX0cgPC0gYyg4Miw1Nyw4Miw3OSw3Niw3Miw2MCw3Miw3OSw4MCkKTGVCcm9uSmFtZXNfRyA8LSBjKDc5LDc4LDc1LDgxLDc2LDc5LDYyLDc2LDc3LDY5KQpDYXJtZWxvQW50aG9ueV9HIDwtIGMoODAsNjUsNzcsNjYsNjksNzcsNTUsNjcsNzcsNDApCkR3aWdodEhvd2FyZF9HIDwtIGMoODIsODIsODIsNzksODIsNzgsNTQsNzYsNzEsNDEpCkNocmlzQm9zaF9HIDwtIGMoNzAsNjksNjcsNzcsNzAsNzcsNTcsNzQsNzksNDQpCkNocmlzUGF1bF9HIDwtIGMoNzgsNjQsODAsNzgsNDUsODAsNjAsNzAsNjIsODIpCktldmluRHVyYW50X0cgPC0gYygzNSwzNSw4MCw3NCw4Miw3OCw2Niw4MSw4MSwyNykKRGVycmlja1Jvc2VfRyA8LSBjKDQwLDQwLDQwLDgxLDc4LDgxLDM5LDAsMTAsNTEpCkR3YXluZVdhZGVfRyA8LSBjKDc1LDUxLDUxLDc5LDc3LDc2LDQ5LDY5LDU0LDYyKQojTWF0cml4CkdhbWVzIDwtIHJiaW5kKEtvYmVCcnlhbnRfRywgSm9lSm9obnNvbl9HLCBMZUJyb25KYW1lc19HLCBDYXJtZWxvQW50aG9ueV9HLCBEd2lnaHRIb3dhcmRfRywgQ2hyaXNCb3NoX0csIENocmlzUGF1bF9HLCBLZXZpbkR1cmFudF9HLCBEZXJyaWNrUm9zZV9HLCBEd2F5bmVXYWRlX0cpCnJtKEtvYmVCcnlhbnRfRywgSm9lSm9obnNvbl9HLCBDYXJtZWxvQW50aG9ueV9HLCBEd2lnaHRIb3dhcmRfRywgQ2hyaXNCb3NoX0csIExlQnJvbkphbWVzX0csIENocmlzUGF1bF9HLCBEZXJyaWNrUm9zZV9HLCBEd2F5bmVXYWRlX0csIEtldmluRHVyYW50X0cpCmNvbG5hbWVzKEdhbWVzKSA8LSBTZWFzb25zCnJvd25hbWVzKEdhbWVzKSA8LSBQbGF5ZXJzCgojTWludXRlcyBQbGF5ZWQKS29iZUJyeWFudF9NUCA8LSBjKDMyNzcsMzE0MCwzMTkyLDI5NjAsMjgzNSwyNzc5LDIyMzIsMzAxMywxNzcsMTIwNykKSm9lSm9obnNvbl9NUCA8LSBjKDMzNDAsMjM1OSwzMzQzLDMxMjQsMjg4NiwyNTU0LDIxMjcsMjY0MiwyNTc1LDI3OTEpCkxlQnJvbkphbWVzX01QIDwtIGMoMzM2MSwzMTkwLDMwMjcsMzA1NCwyOTY2LDMwNjMsMjMyNiwyODc3LDI5MDIsMjQ5MykKQ2FybWVsb0FudGhvbnlfTVAgPC0gYygyOTQxLDI0ODYsMjgwNiwyMjc3LDI2MzQsMjc1MSwxODc2LDI0ODIsMjk4MiwxNDI4KQpEd2lnaHRIb3dhcmRfTVAgPC0gYygzMDIxLDMwMjMsMzA4OCwyODIxLDI4NDMsMjkzNSwyMDcwLDI3MjIsMjM5NiwxMjIzKQpDaHJpc0Jvc2hfTVAgPC0gYygyNzUxLDI2NTgsMjQyNSwyOTI4LDI1MjYsMjc5NSwyMDA3LDI0NTQsMjUzMSwxNTU2KQpDaHJpc1BhdWxfTVAgPC0gYygyODA4LDIzNTMsMzAwNiwzMDAyLDE3MTIsMjg4MCwyMTgxLDIzMzUsMjE3MSwyODU3KQpLZXZpbkR1cmFudF9NUCA8LSBjKDEyNTUsMTI1NSwyNzY4LDI4ODUsMzIzOSwzMDM4LDI1NDYsMzExOSwzMTIyLDkxMykKRGVycmlja1Jvc2VfTVAgPC0gYygxMTY4LDExNjgsMTE2OCwzMDAwLDI4NzEsMzAyNiwxMzc1LDAsMzExLDE1MzApCkR3YXluZVdhZGVfTVAgPC0gYygyODkyLDE5MzEsMTk1NCwzMDQ4LDI3OTIsMjgyMywxNjI1LDIzOTEsMTc3NSwxOTcxKQojTWF0cml4Ck1pbnV0ZXNQbGF5ZWQgPC0gcmJpbmQoS29iZUJyeWFudF9NUCwgSm9lSm9obnNvbl9NUCwgTGVCcm9uSmFtZXNfTVAsIENhcm1lbG9BbnRob255X01QLCBEd2lnaHRIb3dhcmRfTVAsIENocmlzQm9zaF9NUCwgQ2hyaXNQYXVsX01QLCBLZXZpbkR1cmFudF9NUCwgRGVycmlja1Jvc2VfTVAsIER3YXluZVdhZGVfTVApCnJtKEtvYmVCcnlhbnRfTVAsIEpvZUpvaG5zb25fTVAsIENhcm1lbG9BbnRob255X01QLCBEd2lnaHRIb3dhcmRfTVAsIENocmlzQm9zaF9NUCwgTGVCcm9uSmFtZXNfTVAsIENocmlzUGF1bF9NUCwgRGVycmlja1Jvc2VfTVAsIER3YXluZVdhZGVfTVAsIEtldmluRHVyYW50X01QKQpjb2xuYW1lcyhNaW51dGVzUGxheWVkKSA8LSBTZWFzb25zCnJvd25hbWVzKE1pbnV0ZXNQbGF5ZWQpIDwtIFBsYXllcnMKCiNGaWVsZCBHb2FscwpLb2JlQnJ5YW50X0ZHIDwtIGMoOTc4LDgxMyw3NzUsODAwLDcxNiw3NDAsNTc0LDczOCwzMSwyNjYpCkpvZUpvaG5zb25fRkcgPC0gYyg2MzIsNTM2LDY0Nyw2MjAsNjM1LDUxNCw0MjMsNDQ1LDQ2Miw0NDYpCkxlQnJvbkphbWVzX0ZHIDwtIGMoODc1LDc3Miw3OTQsNzg5LDc2OCw3NTgsNjIxLDc2NSw3NjcsNjI0KQpDYXJtZWxvQW50aG9ueV9GRyA8LSBjKDc1Niw2OTEsNzI4LDUzNSw2ODgsNjg0LDQ0MSw2NjksNzQzLDM1OCkKRHdpZ2h0SG93YXJkX0ZHIDwtIGMoNDY4LDUyNiw1ODMsNTYwLDUxMCw2MTksNDE2LDQ3MCw0NzMsMjUxKQpDaHJpc0Jvc2hfRkcgPC0gYyg1NDksNTQzLDUwNyw2MTUsNjAwLDUyNCwzOTMsNDg1LDQ5MiwzNDMpCkNocmlzUGF1bF9GRyA8LSBjKDQwNywzODEsNjMwLDYzMSwzMTQsNDMwLDQyNSw0MTIsNDA2LDU2OCkKS2V2aW5EdXJhbnRfRkcgPC0gYygzMDYsMzA2LDU4Nyw2NjEsNzk0LDcxMSw2NDMsNzMxLDg0OSwyMzgpCkRlcnJpY2tSb3NlX0ZHIDwtIGMoMjA4LDIwOCwyMDgsNTc0LDY3Miw3MTEsMzAyLDAsNTgsMzM4KQpEd2F5bmVXYWRlX0ZHIDwtIGMoNjk5LDQ3Miw0MzksODU0LDcxOSw2OTIsNDE2LDU2OSw0MTUsNTA5KQojTWF0cml4CkZpZWxkR29hbHMgPC0gcmJpbmQoS29iZUJyeWFudF9GRywgSm9lSm9obnNvbl9GRywgTGVCcm9uSmFtZXNfRkcsIENhcm1lbG9BbnRob255X0ZHLCBEd2lnaHRIb3dhcmRfRkcsIENocmlzQm9zaF9GRywgQ2hyaXNQYXVsX0ZHLCBLZXZpbkR1cmFudF9GRywgRGVycmlja1Jvc2VfRkcsIER3YXluZVdhZGVfRkcpCnJtKEtvYmVCcnlhbnRfRkcsIEpvZUpvaG5zb25fRkcsIExlQnJvbkphbWVzX0ZHLCBDYXJtZWxvQW50aG9ueV9GRywgRHdpZ2h0SG93YXJkX0ZHLCBDaHJpc0Jvc2hfRkcsIENocmlzUGF1bF9GRywgS2V2aW5EdXJhbnRfRkcsIERlcnJpY2tSb3NlX0ZHLCBEd2F5bmVXYWRlX0ZHKQpjb2xuYW1lcyhGaWVsZEdvYWxzKSA8LSBTZWFzb25zCnJvd25hbWVzKEZpZWxkR29hbHMpIDwtIFBsYXllcnMKCiNGaWVsZCBHb2FsIEF0dGVtcHRzCktvYmVCcnlhbnRfRkdBIDwtIGMoMjE3MywxNzU3LDE2OTAsMTcxMiwxNTY5LDE2MzksMTMzNiwxNTk1LDczLDcxMykKSm9lSm9obnNvbl9GR0EgPC0gYygxMzk1LDExMzksMTQ5NywxNDIwLDEzODYsMTE2MSw5MzEsMTA1MiwxMDE4LDEwMjUpCkxlQnJvbkphbWVzX0ZHQSA8LSBjKDE4MjMsMTYyMSwxNjQyLDE2MTMsMTUyOCwxNDg1LDExNjksMTM1NCwxMzUzLDEyNzkpCkNhcm1lbG9BbnRob255X0ZHQSA8LSBjKDE1NzIsMTQ1MywxNDgxLDEyMDcsMTUwMiwxNTAzLDEwMjUsMTQ4OSwxNjQzLDgwNikKRHdpZ2h0SG93YXJkX0ZHQSA8LSBjKDg4MSw4NzMsOTc0LDk3OSw4MzQsMTA0NCw3MjYsODEzLDgwMCw0MjMpCkNocmlzQm9zaF9GR0EgPC0gYygxMDg3LDEwOTQsMTAyNywxMjYzLDExNTgsMTA1Niw4MDcsOTA3LDk1Myw3NDUpCkNocmlzUGF1bF9GR0EgPC0gYyg5NDcsODcxLDEyOTEsMTI1NSw2MzcsOTI4LDg5MCw4NTYsODcwLDExNzApCktldmluRHVyYW50X0ZHQSA8LSBjKDY0Nyw2NDcsMTM2NiwxMzkwLDE2NjgsMTUzOCwxMjk3LDE0MzMsMTY4OCw0NjcpCkRlcnJpY2tSb3NlX0ZHQSA8LSBjKDQzNiw0MzYsNDM2LDEyMDgsMTM3MywxNTk3LDY5NSwwLDE2NCw4MzUpCkR3YXluZVdhZGVfRkdBIDwtIGMoMTQxMyw5NjIsOTM3LDE3MzksMTUxMSwxMzg0LDgzNywxMDkzLDc2MSwxMDg0KQojTWF0cml4CkZpZWxkR29hbEF0dGVtcHRzIDwtIHJiaW5kKEtvYmVCcnlhbnRfRkdBLCBKb2VKb2huc29uX0ZHQSwgTGVCcm9uSmFtZXNfRkdBLCBDYXJtZWxvQW50aG9ueV9GR0EsIER3aWdodEhvd2FyZF9GR0EsIENocmlzQm9zaF9GR0EsIENocmlzUGF1bF9GR0EsIEtldmluRHVyYW50X0ZHQSwgRGVycmlja1Jvc2VfRkdBLCBEd2F5bmVXYWRlX0ZHQSkKcm0oS29iZUJyeWFudF9GR0EsIEpvZUpvaG5zb25fRkdBLCBMZUJyb25KYW1lc19GR0EsIENhcm1lbG9BbnRob255X0ZHQSwgRHdpZ2h0SG93YXJkX0ZHQSwgQ2hyaXNCb3NoX0ZHQSwgQ2hyaXNQYXVsX0ZHQSwgS2V2aW5EdXJhbnRfRkdBLCBEZXJyaWNrUm9zZV9GR0EsIER3YXluZVdhZGVfRkdBKQpjb2xuYW1lcyhGaWVsZEdvYWxBdHRlbXB0cykgPC0gU2Vhc29ucwpyb3duYW1lcyhGaWVsZEdvYWxBdHRlbXB0cykgPC0gUGxheWVycwoKI1BvaW50cwpLb2JlQnJ5YW50X1BUUyA8LSBjKDI4MzIsMjQzMCwyMzIzLDIyMDEsMTk3MCwyMDc4LDE2MTYsMjEzMyw4Myw3ODIpCkpvZUpvaG5zb25fUFRTIDwtIGMoMTY1MywxNDI2LDE3NzksMTY4OCwxNjE5LDEzMTIsMTEyOSwxMTcwLDEyNDUsMTE1NCkKTGVCcm9uSmFtZXNfUFRTIDwtIGMoMjQ3OCwyMTMyLDIyNTAsMjMwNCwyMjU4LDIxMTEsMTY4MywyMDM2LDIwODksMTc0MykKQ2FybWVsb0FudGhvbnlfUFRTIDwtIGMoMjEyMiwxODgxLDE5NzgsMTUwNCwxOTQzLDE5NzAsMTI0NSwxOTIwLDIxMTIsOTY2KQpEd2lnaHRIb3dhcmRfUFRTIDwtIGMoMTI5MiwxNDQzLDE2OTUsMTYyNCwxNTAzLDE3ODQsMTExMywxMjk2LDEyOTcsNjQ2KQpDaHJpc0Jvc2hfUFRTIDwtIGMoMTU3MiwxNTYxLDE0OTYsMTc0NiwxNjc4LDE0MzgsMTAyNSwxMjMyLDEyODEsOTI4KQpDaHJpc1BhdWxfUFRTIDwtIGMoMTI1OCwxMTA0LDE2ODQsMTc4MSw4NDEsMTI2OCwxMTg5LDExODYsMTE4NSwxNTY0KQpLZXZpbkR1cmFudF9QVFMgPC0gYyg5MDMsOTAzLDE2MjQsMTg3MSwyNDcyLDIxNjEsMTg1MCwyMjgwLDI1OTMsNjg2KQpEZXJyaWNrUm9zZV9QVFMgPC0gYyg1OTcsNTk3LDU5NywxMzYxLDE2MTksMjAyNiw4NTIsMCwxNTksOTA0KQpEd2F5bmVXYWRlX1BUUyA8LSBjKDIwNDAsMTM5NywxMjU0LDIzODYsMjA0NSwxOTQxLDEwODIsMTQ2MywxMDI4LDEzMzEpCiNNYXRyaXgKUG9pbnRzIDwtIHJiaW5kKEtvYmVCcnlhbnRfUFRTLCBKb2VKb2huc29uX1BUUywgTGVCcm9uSmFtZXNfUFRTLCBDYXJtZWxvQW50aG9ueV9QVFMsIER3aWdodEhvd2FyZF9QVFMsIENocmlzQm9zaF9QVFMsIENocmlzUGF1bF9QVFMsIEtldmluRHVyYW50X1BUUywgRGVycmlja1Jvc2VfUFRTLCBEd2F5bmVXYWRlX1BUUykKcm0oS29iZUJyeWFudF9QVFMsIEpvZUpvaG5zb25fUFRTLCBMZUJyb25KYW1lc19QVFMsIENhcm1lbG9BbnRob255X1BUUywgRHdpZ2h0SG93YXJkX1BUUywgQ2hyaXNCb3NoX1BUUywgQ2hyaXNQYXVsX1BUUywgS2V2aW5EdXJhbnRfUFRTLCBEZXJyaWNrUm9zZV9QVFMsIER3YXluZVdhZGVfUFRTKQpjb2xuYW1lcyhQb2ludHMpIDwtIFNlYXNvbnMKcm93bmFtZXMoUG9pbnRzKSA8LSBQbGF5ZXJzCgpTYWxhcnkKR2FtZXMKTWludXRlc1BsYXllZAoKI21hdHJpeApteS5kYXRhIDwtIDE6MjAKbXkuZGF0YQoKQSA8LSBtYXRyaXgobXkuZGF0YSwgNCwgNSkKQQpBWzIsM10KCkIgPC0gbWF0cml4KG15LmRhdGEsIDQsIDUsIGJ5cm93PVQpCkIKQlsyLDVdCgojcmJpbmQKcjEgPC0gYygiSSIsICJhbSIsICJoYXBweSIpCnIyIDwtIGMoIldoYXQiLCAiYSIsICJkYXkiKQpyMyA8LSBjKDEsMiwzKQpDIDwtIHJiaW5kKHIxLCByMiwgcjMpCkMKCiNjYmluZApjMSA8LSAxOjUKYzIgPC0gLTE6LTUKRCA8LSBjYmluZChjMSxjMikKRAogICAgICAgCiNuYW1lZCB2ZWN0b3JzCkNoYXJsaWUgPC0gMTo1CkNoYXJsaWUKCiNnaXZlIG5hbWVzCm5hbWVzKENoYXJsaWUpIDwtIGMoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCkNoYXJsaWUKQ2hhcmxpZVsiZCJdCm5hbWVzKENoYXJsaWUpCgojY2xlYXIgbmFtZXMKbmFtZXMoQ2hhcmxpZSkgPC0gTlVMTApDaGFybGllCgojTmFtaW5nIG1hdHJpeCBkaW1lbnNpb25zIDEKdGVtcC52ZWMgPC0gcmVwKGMoImEiLCAiQiIsICJ6WiIpLCBlYWNoPTMpCnRlbXAudmVjCgpCcmF2byA8LSBtYXRyaXgodGVtcC52ZWMsIDMsMykKQnJhdm8KCnJvd25hbWVzKEJyYXZvKSA8LSBjKCJIb3ciLCAiYXJlIiwgInlvdSIpCkJyYXZvCgpjb2xuYW1lcyhCcmF2bykgPC0gYygiWCIsICJZIiwgIloiKQpCcmF2bwoKQnJhdm9bImFyZSIsICJZIl0gPC0gMApCcmF2bwoKcm93bmFtZXMoQnJhdm8pIDwtIE5VTEwKQnJhdm8KCkdhbWVzCnJvd25hbWVzKEdhbWVzKQpjb2xuYW1lcyhHYW1lcykKR2FtZXNbIkxlQnJvbkphbWVzIiwgIjIwMTIiXQoKRmllbGRHb2FscwoKcm91bmQoRmllbGRHb2FscyAvIEdhbWVzLDEpCgpyb3VuZChNaW51dGVzUGxheWVkIC8gR2FtZXMpCgptYXRwbG90KEZpZWxkR29hbHMpCgp0KEZpZWxkR29hbHMpCgptYXRwbG90KHQoRmllbGRHb2Fscy9HYW1lcyksIHR5cGU9ImIiLCBwY2g9MTU6MTgsIGNvbD1jKDE6NCw2KSkKbGVnZW5kKCJib3R0b21sZWZ0IiwgaW5zZXQ9MC4wMSwgbGVnZW5kPVBsYXllcnMsIGNvbD1jKDE6NCw2KSwgcGNoPTE1OjE4LCBob3Jpej1GKQoKCm1hdHBsb3QodChGaWVsZEdvYWxzL0ZpZWxkR29hbEF0dGVtcHRzKSwgdHlwZT0iYiIsIHBjaD0xNToxOCwgY29sPWMoMTo0LDYpKQpsZWdlbmQoImJvdHRvbWxlZnQiLCBpbnNldD0wLjAxLCBsZWdlbmQ9UGxheWVycywgY29sPWMoMTo0LDYpLCBwY2g9MTU6MTgsIGhvcml6PUYpCgp4IDwtIGMoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCngKeFtjKDEsNSldCnhbMV0KCkdhbWVzCkdhbWVzWzE6Myw2OjEwXQpHYW1lc1tjKDEsMTApLF0KR2FtZXNbLCBjKCIyMDA4IiwgIjIwMDkiKV0KR2FtZXNbMSxdCmlzLm1hdHJpeChHYW1lc1sxLF0pCmlzLnZlY3RvcihHYW1lc1sxLF0pCgpHYW1lc1sxLCxkcm9wPUZdCkdhbWVzWzEsNSxkcm9wPUZdCgpEYXRhIDwtIE1pbnV0ZXNQbGF5ZWRbMTozLF0KbWF0cGxvdCh0KERhdGEpLCB0eXBlPSJiIiwgcGNoPTE1OjE4LCBjb2w9YygxOjQsNikpCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGluc2V0PTAuMDEsIGxlZ2VuZD1QbGF5ZXJzWzE6M10sIGNvbD1jKDE6NCw2KSwgcGNoPTE1OjE4LCBob3Jpej1GKQoKRGF0YSA8LSBNaW51dGVzUGxheWVkWzEsLGRyb3A9Rl0KbWF0cGxvdCh0KERhdGEpLCB0eXBlPSJiIiwgcGNoPTE1OjE4LCBjb2w9YygxOjQsNikpCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGluc2V0PTAuMDEsIGxlZ2VuZD1QbGF5ZXJzWzFdLCBjb2w9YygxOjQsNiksIHBjaD0xNToxOCwgaG9yaXo9RikKCm15cGxvdCA8LSBmdW5jdGlvbigpewogIERhdGEgPC0gTWludXRlc1BsYXllZFsyOjMsLGRyb3A9Rl0KICBtYXRwbG90KHQoRGF0YSksIHR5cGU9ImIiLCBwY2g9MTU6MTgsIGNvbD1jKDE6NCw2KSkKICBsZWdlbmQoImJvdHRvbWxlZnQiLCBpbnNldD0wLjAxLCBsZWdlbmQ9UGxheWVyc1syOjNdLCBjb2w9YygxOjQsNiksIHBjaD0xNToxOCwgaG9yaXo9RikKfQoKbXlwbG90KCkKCgpteXBsb3QgPC0gZnVuY3Rpb24oZGF0YSxyb3dzPTE6MTApewogIERhdGEgPC0gZGF0YVtyb3dzLCxkcm9wPUZdCiAgbWF0cGxvdCh0KERhdGEpLCB0eXBlPSJiIiwgcGNoPTE1OjE4LCBjb2w9YygxOjQsNikpCiAgbGVnZW5kKCJib3R0b21sZWZ0IiwgaW5zZXQ9MC4wMSwgbGVnZW5kPVBsYXllcnNbcm93c10sIGNvbD1jKDE6NCw2KSwgcGNoPTE1OjE4LCBob3Jpej1GKQp9CgpteXBsb3QoU2FsYXJ5KQpteXBsb3QoTWludXRlc1BsYXllZCkKbXlwbG90KE1pbnV0ZXNQbGF5ZWQvR2FtZXMsIDMpCgojU2FsYXJ5Cm15cGxvdChTYWxhcnkpCm15cGxvdChTYWxhcnkvR2FtZXMpCm15cGxvdChTYWxhcnkvRmllbGRHb2FscykKCiNJbi1HYW1lIE1ldHJpY3MKbXlwbG90KE1pbnV0ZXNQbGF5ZWQpCm15cGxvdChQb2ludHMpCgojSW4tR2FtZSBNZXRyaWNzIE5vcm1hbGl6ZWQKbXlwbG90KEZpZWxkR29hbHMvR2FtZXMpCm15cGxvdChGaWVsZEdvYWxzL0ZpZWxkR29hbEF0dGVtcHRzKQpteXBsb3QoRmllbGRHb2FsQXR0ZW1wdHMvR2FtZXMpCm15cGxvdChQb2ludHMvR2FtZXMpCgojSW50ZXJlc3RpbmcgT2JzZXJ2YXRpb25zCm15cGxvdChNaW51dGVzUGxheWVkL0dhbWVzKQpteXBsb3QoR2FtZXMpCgojVGltZSBpcyBWYWx1YWJsZQpteXBsb3QoRmllbGRHb2Fscy9NaW51dGVzUGxheWVkKQoKI1BsYXllciBTdHlsZQpteXBsb3QoUG9pbnRzL0ZpZWxkR29hbHMpCgpgYGAKCgo=