Introduction
This is the space where i’ll describe the data set and my team and
the years.
Table discussion
Tables
#Table for entire league stats
df %>%
kbl(digits = 2, caption="2025 League stats") %>%
kable_classic_2(full_width=F)
2025 League stats
|
team_name
|
mean_score
|
sd_score
|
mean_fgp
|
sd_fgp
|
mean_reb
|
sd_reb
|
mean_tpfgp
|
sd_tpfgp
|
mean_steals
|
sd_steals
|
|
Aces
|
85.52
|
9.56
|
45.27
|
5.82
|
33.78
|
5.88
|
35.27
|
7.08
|
6.80
|
2.67
|
|
Dream
|
76.93
|
10.59
|
41.28
|
6.78
|
35.95
|
4.41
|
30.83
|
9.32
|
7.14
|
2.82
|
|
Fever
|
84.50
|
10.17
|
45.56
|
5.38
|
35.10
|
5.49
|
35.00
|
8.99
|
5.88
|
2.29
|
|
Liberty
|
84.98
|
9.92
|
44.53
|
5.61
|
36.90
|
5.77
|
35.38
|
10.06
|
7.75
|
2.19
|
|
Lynx
|
82.36
|
11.39
|
45.21
|
6.34
|
33.15
|
5.06
|
37.80
|
9.43
|
8.36
|
3.17
|
|
Mercury
|
81.93
|
12.60
|
44.28
|
7.34
|
32.26
|
5.39
|
32.97
|
10.34
|
6.55
|
2.12
|
|
Mystics
|
79.30
|
8.69
|
43.36
|
4.82
|
31.85
|
4.66
|
36.64
|
8.69
|
7.28
|
2.24
|
|
Sky
|
77.40
|
9.62
|
42.44
|
5.22
|
36.60
|
5.57
|
31.74
|
11.62
|
7.00
|
3.30
|
|
Sparks
|
78.40
|
10.57
|
42.63
|
6.15
|
32.67
|
5.52
|
32.09
|
11.00
|
7.30
|
2.78
|
|
Storm
|
82.67
|
9.65
|
43.43
|
5.39
|
34.67
|
6.02
|
28.35
|
9.03
|
9.24
|
3.27
|
|
Sun
|
80.36
|
9.89
|
44.30
|
5.28
|
33.43
|
4.62
|
32.84
|
11.67
|
7.89
|
3.29
|
|
Wings
|
84.20
|
11.47
|
44.47
|
5.24
|
34.75
|
4.65
|
32.06
|
11.75
|
7.12
|
2.95
|
#table for
aces_summary %>%
kbl(digits = 2, caption="2025 Las Vegas Aces") %>%
kable_classic(full_width=F)
2025 Las Vegas Aces
|
result
|
mean_win
|
sd_win
|
mean_loss
|
sd_loss
|
|
Loss
|
79.81
|
9.95
|
79.81
|
9.95
|
|
Win
|
88.57
|
7.93
|
88.57
|
7.93
|
Histgrams
Histogram discussion
p = my_team %>%
ggplot( aes(x=team_score, fill=result)) +
geom_histogram( color="#e9ecef", alpha=0.6, position = 'identity') +
scale_fill_manual(values=c("#69b3a2", "#404080"))
boxplot(team_score ~ result, data = my_team,
col = c("#a7a8aa", "#a7a8aa"),
main = "Points score by game result",
xlab = "Result", ylab = "Points")

Models
\(~\)
My final model is team_score= -35.9722989 + 2.2275506 *
field_goal_pct + 0.4512189 * total_rebounds + 1.5823741 * 3-pt % +
-0.0312377 * 3-pt% * fg%.
This model significantly predicts team score, F(4, 4) = 22.0357486,
p<.0001, adjusted R^2=0.651549.
See table below for reslts…
|
|
|
|
Dependent variable:
|
|
|
|
|
|
team_score
|
|
|
|
field_goal_pct
|
2.228***
|
|
|
(0.658)
|
|
|
|
|
total_rebounds
|
0.451***
|
|
|
(0.145)
|
|
|
|
|
three_point_field_goal_pct
|
1.582*
|
|
|
(0.813)
|
|
|
|
|
field_goal_pct:three_point_field_goal_pct
|
-0.031*
|
|
|
(0.018)
|
|
|
|
|
Constant
|
-35.972
|
|
|
(29.316)
|
|
|
|
|
|
|
Observations
|
46
|
|
R2
|
0.683
|
|
Adjusted R2
|
0.652
|
|
Residual Std. Error
|
5.642 (df = 41)
|
|
F Statistic
|
22.036*** (df = 4; 41)
|
|
|
|
Note:
|
p<0.1; p<0.05;
p<0.01
|
hist(model4$residuals)

plot(model4$fitted.values, model4$residuals)

ols_plot_cooksd_bar(model4)

ols_plot_resid_lev(model4, threshold=3)

I built the model to predct my tema’s points for a game in which they
achieve the median value for each variable. The predicted team score is
86.4104953, with 95% confidence interval (84.6215024,88.1994882).
LS0tDQp0aXRsZTogIldOQkEgU3RhdGlzdGljYWwgQW5hbHlzaXMgUmVwb3J0Ig0KYXV0aG9yOiAiIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICB0aGVtZTogbHVtZW4NCiAgcGRmX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGZpZ193aWR0aDogMw0KICAgIGZpZ19oZWlnaHQ6IDMNCiAgd29yZF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAga2VlcF9tZDogeWVzDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQojVE9DOjpiZWZvcmUgew0KICBjb250ZW50OiAiVGFibGUgb2YgQ29udGVudHMiOw0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1zaXplOiAxLjJlbTsNCiAgZGlzcGxheTogYmxvY2s7DQogIGNvbG9yOiBuYXZ5Ow0KICBtYXJnaW4tYm90dG9tOiAxMHB4Ow0KfQ0KDQoNCmRpdiNUT0MgbGkgeyAgICAgLyogdGFibGUgb2YgY29udGVudCAgKi8NCiAgICBsaXN0LXN0eWxlOnVwcGVyLXJvbWFuOw0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCn0NCg0KaDEudGl0bGUgeyAgICAvKiBsZXZlbCAxIGhlYWRlciBvZiB0aXRsZSAgKi8NCiAgZm9udC1zaXplOiAyMnB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KfQ0KDQpoNC5hdXRob3IgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICBmb250LXNpemU6IDE1cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICBjb2xvcjogbmF2eTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogRGFya0JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDEgeyAvKiBIZWFkZXIgMSAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMiB7IC8qIEhlYWRlciAyIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDQgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLyogQWRkIGRvdHMgYWZ0ZXIgbnVtYmVyZWQgaGVhZGVycyAqLw0KLmhlYWRlci1zZWN0aW9uLW51bWJlcjo6YWZ0ZXIgew0KICBjb250ZW50OiAiLiI7DQoNCmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCi5oaWdobGlnaHRtZSB7IGJhY2tncm91bmQtY29sb3I6eWVsbG93OyB9DQoNCnAgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCn0NCmBgYA0KDQoNCmBgYCB7ciBzZXR1cCwgaW5jbHVkZT1GfQ0KDQpzZXR3ZCgiQzovVXNlcnMvNzVMUFlPVFQvT25lRHJpdmUgLSBXZXN0IENoZXN0ZXIgVW5pdmVyc2l0eSBvZiBQQS9EZXNrdG9wL1NUQVQzMTkgc3ByaW5nIDIwMjYiKQ0KDQpkYXRhPXJlYWQuY3N2KCJXTkJBXzIwMjRfYm94LXNjb3Jlcy5jc3YiLCBoZWFkZXI9VCkNCg0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCiNWSUYgZnVuY3Rpb24gaW4gdGhlIGNhciBwYWNrYWdlDQpsaWJyYXJ5KGNhcikNCmxpYnJhcnkob2xzcnIpDQoja2FibGVleHRyYSBpcyB0aGUgcGFja2FnZSBmb3IgbmljZSBNYXJrZG93biB0YWJsZXMNCmxpYnJhcnkoa2FibGVFeHRyYSkNCg0KYGBgDQoNCmBgYHtyIHdyYW5nbGluZywgaW5jbHVkZT1GfQ0KDQojQ3JlYXRlIGRmIHRoYXQgZmlsdGVycyBvdXQgYWxsLXN0YXIgZ2FtZXMNCmRhdGEgPSBkYXRhICU+JQ0KICBmaWx0ZXIodGVhbV9uYW1lICE9ICJUZWFtIFdOQkEiKSAlPiUgZmlsdGVyKHRlYW1fbmFtZSAhPSAiVGVhbSBVU0EiKSAgDQoNCiNzZWxlY3RzIG9ubHkgdmFyaWFibGVzIHdlIG5lZWQNCiNzdW1tYXJpemVzIHRlYW0gc2NvcmUsIDNwdCUsIHRvdGFsIHJlYm91bmRzLCBhbmQgc3RlYWxzLCBmZyUNCiNtZWFuIGFuZCBTRA0KZGY9ZGF0YSAlPiUNCiAgc2VsZWN0KHRlYW1fc2NvcmUsIGZpZWxkX2dvYWxfcGN0LCB0b3RhbF9yZWJvdW5kcywNCiAgICAgICAgIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0LCBzdGVhbHMsIHRlYW1fbmFtZSwgdGVhbV93aW5uZXIpICU+JQ0KICBncm91cF9ieSh0ZWFtX25hbWUpICU+JQ0KICBzdW1tYXJpc2UobWVhbl9zY29yZT1tZWFuKHRlYW1fc2NvcmUpLCBzZF9zY29yZT1zZCh0ZWFtX3Njb3JlKSwNCiAgICAgICAgICAgIG1lYW5fZmdwPW1lYW4oZmllbGRfZ29hbF9wY3QpLCBzZF9mZ3A9c2QoZmllbGRfZ29hbF9wY3QpLA0KICAgICAgICAgICAgbWVhbl9yZWI9bWVhbih0b3RhbF9yZWJvdW5kcyksIHNkX3JlYj1zZCh0b3RhbF9yZWJvdW5kcyksDQogICAgICAgICAgICBtZWFuX3RwZmdwPW1lYW4odGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QpLCBzZF90cGZncD1zZCh0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCksDQogICAgICAgICAgICBtZWFuX3N0ZWFscz1tZWFuKHN0ZWFscyksIHNkX3N0ZWFscz1zZChzdGVhbHMpKQ0KDQojY3JlYXRlIGRhdGEgZnJhbWUgdGhhdCBncmFicyBvbmx5IExWIEFjZXMNCm15X3RlYW0gPSBkYXRhICU+JQ0KICBmaWx0ZXIodGVhbV9uYW1lPT0iQWNlcyIpICU+JQ0KICBtdXRhdGUocmVzdWx0PSBjYXNlX3doZW4odGVhbV93aW5uZXI9PVRSVUV+ICJXaW4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhbV93aW5uZXI9PUZBTFNFfiJMb3NzIikpDQoNCiNkYXRhIGZyYW1lIHRoYXQgc3VtbWFyaXplcyBBY2VzIHN0YXRzDQphY2VzX3N1bW1hcnkgPSBteV90ZWFtICU+JQ0KICBncm91cF9ieShyZXN1bHQpICU+JQ0KICBzdW1tYXJpc2UobWVhbl93aW49bWVhbih0ZWFtX3Njb3JlKSwgc2Rfd2luPXNkKHRlYW1fc2NvcmUpLA0KICAgICAgICAgICAgbWVhbl9sb3NzPW1lYW4odGVhbV9zY29yZSksIHNkX2xvc3M9c2QodGVhbV9zY29yZSkpDQogIA0KYGBgDQoNCiMgSW50cm9kdWN0aW9uDQoNClRoaXMgaXMgdGhlIHNwYWNlIHdoZXJlIGknbGwgZGVzY3JpYmUgdGhlIGRhdGEgc2V0IGFuZCBteSB0ZWFtIGFuZCB0aGUgeWVhcnMuDQoNClRhYmxlIGRpc2N1c3Npb24NCg0KIyBUYWJsZXMNCg0KYGBgIHtyIHRhYmxlcywgaW5jbHVkZT1UfQ0KDQojVGFibGUgZm9yIGVudGlyZSBsZWFndWUgc3RhdHMNCmRmICU+JQ0KICBrYmwoZGlnaXRzID0gMiwgY2FwdGlvbj0iMjAyNSBMZWFndWUgc3RhdHMiKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RikNCg0KI3RhYmxlIGZvciANCmFjZXNfc3VtbWFyeSAlPiUNCiAga2JsKGRpZ2l0cyA9IDIsIGNhcHRpb249IjIwMjUgTGFzIFZlZ2FzIEFjZXMiKSAlPiUNCiAga2FibGVfY2xhc3NpYyhmdWxsX3dpZHRoPUYpDQoNCg0KYGBgDQoNCiMgSGlzdGdyYW1zDQoNCkhpc3RvZ3JhbSBkaXNjdXNzaW9uDQoNCmBgYCB7ciBncmFwaHMsIGluY2x1ZGU9VCwgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9N30NCg0KDQpwID0gbXlfdGVhbSAlPiUNCiAgZ2dwbG90KCBhZXMoeD10ZWFtX3Njb3JlLCBmaWxsPXJlc3VsdCkpICsNCiAgZ2VvbV9oaXN0b2dyYW0oIGNvbG9yPSIjZTllY2VmIiwgYWxwaGE9MC42LCBwb3NpdGlvbiA9ICdpZGVudGl0eScpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM2OWIzYTIiLCAiIzQwNDA4MCIpKSANCg0KDQoNCmJveHBsb3QodGVhbV9zY29yZSB+IHJlc3VsdCwgZGF0YSA9IG15X3RlYW0sIA0KICAgICAgICBjb2wgPSBjKCIjYTdhOGFhIiwgIiNhN2E4YWEiKSwgDQogICAgICAgIG1haW4gPSAiUG9pbnRzIHNjb3JlIGJ5IGdhbWUgcmVzdWx0IiwNCiAgICAgICAgeGxhYiA9ICJSZXN1bHQiLCB5bGFiID0gIlBvaW50cyIpDQoNCmBgYA0KDQojIE1vZGVscw0KDQpgYGAge3IgZmlyc3Qgb3JkZXIgbW9kZWwsIGluY2x1ZGU9Rn0NCiNtb2RlbA0KDQojbW9kZWwgMSBpcyBhIGZpcnN0LW9yZGVyIG1vZGVsIHdpdGggNCB0ZXJtcw0KbW9kZWwxPWxtKHRlYW1fc2NvcmV+ZmllbGRfZ29hbF9wY3QrdG90YWxfcmVib3VuZHMrIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0KyBzdGVhbHMsDQogICAgICAgICAgZGF0YT1teV90ZWFtKQ0KDQojY29ycmVsYXRpb24gbWF0cml4cmVxdWlyZXMgYWxsIHF1YW50aXRhdGl2ZSB2YXJpYWJsZXMgc28ga2VlcCBvbmx5IHRob3NlIHZhcmlhYmxlcw0KY29yX2RhdGE9IG15X3RlYW0gJT4lDQogIHNlbGVjdCh0ZWFtX3Njb3JlLCBmaWVsZF9nb2FsX3BjdCwgdG90YWxfcmVib3VuZHMsDQogICAgICAgICB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgc3RlYWxzKQ0KDQojY29ycmVsYXRpb24gbWF0cml4DQp0X2Nvcj1jb3IoY29yX2RhdGEpDQp0X2NvciAlPiUNCiAga2JsKGRpZ2l0cyA9IDMsIGNhcHRpb249IkNvcnJlbGF0aW9uIE1hdHJpeCIpICU+JQ0KICBrYWJsZV9jbGFzc2ljKGZ1bGxfd2lkdGggPSBGKQ0KDQpgYGANCg0KDQpgYGB7ciBpbnRlcmFjdGlvbiBtb2RlbCwgcmVzdWx0cz0nYXNpcycsIGVjaG89RiwgaW5jbHVkZT1ULCBjb21tZW50PU5BfQ0KbW9kZWwzPWxtKHRlYW1fc2NvcmV+ZmllbGRfZ29hbF9wY3QrdG90YWxfcmVib3VuZHMrIA0KICAgICAgICAgICAgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QrIHN0ZWFscysNCiAgICAgICAgICAgIGZpZWxkX2dvYWxfcGN0KnRvdGFsX3JlYm91bmRzKw0KICAgICAgICAgICAgZmllbGRfZ29hbF9wY3QqdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QrDQogICAgICAgICAgICBmaWVsZF9nb2FsX3BjdCpzdGVhbHMrDQogICAgICAgICAgICB0b3RhbF9yZWJvdW5kcyp0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCsNCiAgICAgICAgICAgIHRvdGFsX3JlYm91bmRzKnN0ZWFscysNCiAgICAgICAgICAgIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0KnN0ZWFscywNCiAgICAgICAgICAgIGRhdGE9bXlfdGVhbSkNCg0KI3N1bW1hcnkobW9kZWwzKQ0KDQoNCm1vZGVsND1sbSh0ZWFtX3Njb3JlfmZpZWxkX2dvYWxfcGN0K3RvdGFsX3JlYm91bmRzKyANCiAgICAgICAgICAgIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0Kw0KICAgICAgICAgICAgZmllbGRfZ29hbF9wY3QqdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QsDQogICAgICAgICAgICBkYXRhPW15X3RlYW0pDQoNCm1vZGVsNHN1bT1zdW1tYXJ5KG1vZGVsNCkNCiNtb2RlbDRzdW0NCg0KDQoNCmBgYA0KDQokfiQNCg0KTXkgZmluYWwgbW9kZWwgaXMgdGVhbV9zY29yZT0gYHIgbW9kZWw0JGNvZWZmaWNpZW50c1sxXWAgKyBgciBtb2RlbDQkY29lZmZpY2llbnRzWzJdYCAqIGZpZWxkX2dvYWxfcGN0ICsgYHIgbW9kZWw0JGNvZWZmaWNpZW50c1szXWAgKiB0b3RhbF9yZWJvdW5kcyArIGByIG1vZGVsNCRjb2VmZmljaWVudHNbNF1gICogMy1wdCAlICsgYHIgbW9kZWw0JGNvZWZmaWNpZW50c1s1XWAgKiAzLXB0JSAqIGZnJS4gICANCg0KVGhpcyBtb2RlbCBzaWduaWZpY2FudGx5IHByZWRpY3RzIHRlYW0gc2NvcmUsIEYoYHIgbW9kZWw0c3VtJGZzdGF0aXN0aWNbMl1gLCBgciBtb2RlbDRzdW0kZnN0YXRpc3RpY1syXWApID0gYHIgbW9kZWw0c3VtJGZzdGF0aXN0aWNbMV1gLCBwPC4wMDAxLCBhZGp1c3RlZCBSXjI9YHIgbW9kZWw0c3VtJGFkai5yLnNxdWFyZWRgLg0KDQpTZWUgdGFibGUgYmVsb3cgZm9yIHJlc2x0cy4uLg0KDQpgYGAge3IsIGluY2x1ZGU9VCwgZWNobz1GLCByZXN1bHRzPSdhc2lzJywgY29tbWVudD1OQSwgbWVzc2FnZT1GfQ0KbGlicmFyeShzdGFyZ2F6ZXIpDQpzdGFyZ2F6ZXIobW9kZWw0LCB0eXBlID0gImh0bWwiKQ0KYGBgDQoNCg0KDQpgYGB7ciByZXNpZHVhbHN9DQoNCmhpc3QobW9kZWw0JHJlc2lkdWFscykNCnBsb3QobW9kZWw0JGZpdHRlZC52YWx1ZXMsIG1vZGVsNCRyZXNpZHVhbHMpDQpvbHNfcGxvdF9jb29rc2RfYmFyKG1vZGVsNCkNCm9sc19wbG90X3Jlc2lkX2xldihtb2RlbDQsIHRocmVzaG9sZD0zKQ0KDQoNCmBgYA0KDQpgYGB7ciBwcmVkaWN0aW9uLCBpbmNsdWRlPUZ9DQojZm9yIGZpbmRpbmcgdGhlIG1lZGlhbiB2YWx1ZXMNCnN1bW1hcnkoY29yX2RhdGEpDQoNCiNUaGlzIGlzIGEgbmV3IGRhdGEgZnJhbWUgZm9yIHRoZSBtZWRpYW4gZ2FtZQ0KbmV3ZGF0YT1kYXRhLmZyYW1lKGZpZWxkX2dvYWxfcGN0PTQ1LjQsIHRvdGFsX3JlYm91bmRzPTM0LCB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdD0zNiwgc3RlYWxzPTcpDQojcHJlZGljdGluZw0KcHJlZGljdGlvbj1wcmVkaWN0KG1vZGVsNCwgbmV3ZGF0YSwgaW50ZXJ2YWwgPSAiY29uZmlkZW5jZSIsIGxldmVsPS45NSkNCnByZWRpY3Rpb24NCg0KYGBgDQoNCkkgYnVpbHQgdGhlIG1vZGVsIHRvIHByZWRjdCBteSB0ZW1hJ3MgcG9pbnRzIGZvciBhIGdhbWUgaW4gd2hpY2ggdGhleSBhY2hpZXZlIHRoZSBtZWRpYW4gdmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuIFRoZSBwcmVkaWN0ZWQgdGVhbSBzY29yZSBpcyBgciBwcmVkaWN0aW9uWzFdYCwgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCAoYHIgcHJlZGljdGlvblsyXWAsYHIgcHJlZGljdGlvblszXWApLg0KDQoNCg==