EFA
Factor Analysis using method = minres
Call: fa(r = plum_cor, nfactors = 4)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4
SS loadings 4.38 4.29 4.09 1.78
Proportion Var 0.12 0.12 0.11 0.05
Cumulative Var 0.12 0.24 0.35 0.40
Proportion Explained 0.30 0.30 0.28 0.12
Cumulative Proportion 0.30 0.60 0.88 1.00
With factor correlations of
MR1 MR2 MR3 MR4
MR1 1.00 0.18 0.30 0.14
MR2 0.18 1.00 0.28 0.15
MR3 0.30 0.28 1.00 0.12
MR4 0.14 0.15 0.12 1.00
Mean item complexity = 1.6
Test of the hypothesis that 4 factors are sufficient.
The degrees of freedom for the null model are 630 and the objective function was 21.73
The degrees of freedom for the model are 492 and the objective function was 9.7
The root mean square of the residuals (RMSR) is 0.07
The df corrected root mean square of the residuals is 0.08
Fit based upon off diagonal values = 0.92
Measures of factor score adequacy
MR1 MR2 MR3 MR4
Correlation of (regression) scores with factors 0.94 0.95 0.93 0.87
Multiple R square of scores with factors 0.89 0.91 0.87 0.76
Minimum correlation of possible factor scores 0.78 0.82 0.74 0.51
Parallel analysis suggests that the number of factors = 6 and the number of components = NA

PCA
Importance of components:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13 PC14
Standard deviation 49.0891 20.1417 5.40648 5.07352 3.14555 2.82367 2.43179 2.38572 2.17792 1.93975 1.8778 1.68028 1.56905 1.51507
Proportion of Variance 0.8176 0.1376 0.00992 0.00873 0.00336 0.00271 0.00201 0.00193 0.00161 0.00128 0.0012 0.00096 0.00084 0.00078
Cumulative Proportion 0.8176 0.9553 0.96518 0.97391 0.97727 0.97997 0.98198 0.98391 0.98552 0.98679 0.9880 0.98895 0.98978 0.99056
PC15 PC16 PC17 PC18 PC19 PC20 PC21 PC22 PC23 PC24 PC25 PC26 PC27 PC28
Standard deviation 1.46909 1.40629 1.37205 1.27208 1.25723 1.19713 1.15261 1.13884 1.06005 1.02259 1.00513 0.97460 0.9478 0.88023
Proportion of Variance 0.00073 0.00067 0.00064 0.00055 0.00054 0.00049 0.00045 0.00044 0.00038 0.00035 0.00034 0.00032 0.0003 0.00026
Cumulative Proportion 0.99130 0.99197 0.99261 0.99315 0.99369 0.99418 0.99463 0.99507 0.99545 0.99580 0.99615 0.99647 0.9968 0.99704
PC29 PC30 PC31 PC32 PC33 PC34 PC35 PC36 PC37 PC38 PC39 PC40 PC41 PC42
Standard deviation 0.85058 0.80869 0.79384 0.7688 0.75557 0.71912 0.69644 0.65401 0.62493 0.61721 0.59043 0.56837 0.55934 0.5381
Proportion of Variance 0.00025 0.00022 0.00021 0.0002 0.00019 0.00018 0.00016 0.00015 0.00013 0.00013 0.00012 0.00011 0.00011 0.0001
Cumulative Proportion 0.99728 0.99750 0.99772 0.9979 0.99811 0.99829 0.99845 0.99860 0.99873 0.99886 0.99898 0.99909 0.99919 0.9993
PC43 PC44 PC45 PC46 PC47 PC48 PC49 PC50 PC51 PC52 PC53 PC54 PC55 PC56
Standard deviation 0.52265 0.50614 0.49239 0.45483 0.43310 0.40325 0.36761 0.34850 0.33233 0.30021 0.29238 0.25897 0.24243 0.22553
Proportion of Variance 0.00009 0.00009 0.00008 0.00007 0.00006 0.00006 0.00005 0.00004 0.00004 0.00003 0.00003 0.00002 0.00002 0.00002
Cumulative Proportion 0.99938 0.99947 0.99955 0.99962 0.99969 0.99974 0.99979 0.99983 0.99987 0.99990 0.99993 0.99995 0.99997 0.99999
PC57
Standard deviation 0.20352
Proportion of Variance 0.00001
Cumulative Proportion 1.00000
Visualizations
age vs. vocab (all)

age vs. seed vocab

age vs. control vocab

language use vs. seed vocab

language use vs. total vocab

language use vs. age

Correlation table of vocab by category

Regression models to predict language use
Age
Call:
lm(formula = LangUse_4factor ~ childAge_years, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-13.3997 -5.5136 -0.3472 5.6669 15.7096
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 27.330 4.589 5.956 9.02e-08 ***
childAge_years 1.186 1.342 0.884 0.38
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.237 on 71 degrees of freedom
Multiple R-squared: 0.01088, Adjusted R-squared: -0.003055
F-statistic: 0.7807 on 1 and 71 DF, p-value: 0.3799
Seed and control word knowledge
Call:
lm(formula = LangUse_4factor ~ control, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-16.3406 -5.3905 -0.3428 5.3760 14.8794
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.17734 2.61621 10.01 3.35e-15 ***
control 0.04535 0.02191 2.07 0.0421 *
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.067 on 71 degrees of freedom
Multiple R-squared: 0.05691, Adjusted R-squared: 0.04363
F-statistic: 4.285 on 1 and 71 DF, p-value: 0.04209
Call:
lm(formula = LangUse_4factor ~ seed, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-14.8801 -5.1264 -0.6617 5.5953 15.1798
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 24.64030 3.32435 7.412 2.05e-10 ***
seed 0.15846 0.07644 2.073 0.0418 *
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.066 on 71 degrees of freedom
Multiple R-squared: 0.05707, Adjusted R-squared: 0.04379
F-statistic: 4.297 on 1 and 71 DF, p-value: 0.0418
Total vocabulary
Call:
lm(formula = LangUse_4factor ~ total, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-16.0826 -5.2520 -0.4236 5.6130 14.9563
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 25.62494 2.81743 9.095 1.57e-13 ***
total 0.03661 0.01733 2.112 0.0382 *
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.059 on 71 degrees of freedom
Multiple R-squared: 0.05914, Adjusted R-squared: 0.04588
F-statistic: 4.463 on 1 and 71 DF, p-value: 0.03816
Total vocabulary + age
Call:
lm(formula = LangUse_4factor ~ childAge_years + total, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-15.9882 -5.1796 -0.5872 5.5589 15.3959
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 24.13589 4.79551 5.033 3.59e-06 ***
childAge_years 0.52372 1.36050 0.385 0.701
total 0.03487 0.01802 1.936 0.057 .
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.101 on 70 degrees of freedom
Multiple R-squared: 0.06112, Adjusted R-squared: 0.0343
F-statistic: 2.279 on 2 and 70 DF, p-value: 0.11
Total vocabulary + age + surgency
Call:
lm(formula = LangUse_4factor ~ childAge_years + surgency_score +
total, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-15.945 -5.088 -0.675 5.539 15.423
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 25.53452 7.94428 3.214 0.0020 **
childAge_years 0.49650 1.37742 0.360 0.7196
surgency_score -0.18902 1.31971 -0.143 0.8865
total 0.03251 0.01842 1.764 0.0821 .
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.168 on 68 degrees of freedom
(1 observation deleted due to missingness)
Multiple R-squared: 0.05314, Adjusted R-squared: 0.01137
F-statistic: 1.272 on 3 and 68 DF, p-value: 0.2909
Total vocabulary + age + surgency + parent ed
Call:
lm(formula = LangUse_4factor ~ childAge_years + surgency_score +
parentEd_centered + total, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-15.8423 -5.0746 -0.5968 5.2946 16.0468
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 25.97131 8.12565 3.196 0.00213 **
childAge_years 0.34082 1.47809 0.231 0.81834
surgency_score -0.19078 1.32862 -0.144 0.88626
parentEd_centered 0.30799 1.01225 0.304 0.76187
total 0.03310 0.01865 1.775 0.08045 .
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 7.216 on 67 degrees of freedom
(1 observation deleted due to missingness)
Multiple R-squared: 0.05445, Adjusted R-squared: -0.002002
F-statistic: 0.9645 on 4 and 67 DF, p-value: 0.4328
Predict vocab from language use and age
Call:
lm(formula = total ~ childAge_years + LangUse_4factor, data = LangUse_analyze)
Residuals:
Min 1Q Median 3Q Max
-104.872 -31.394 1.235 30.175 93.755
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51.7906 35.6395 1.453 0.1506
childAge_years 17.2586 8.5581 2.017 0.0476 *
LangUse_4factor 1.4568 0.7527 1.936 0.0570 .
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 45.9 on 70 degrees of freedom
Multiple R-squared: 0.1108, Adjusted R-squared: 0.08539
F-statistic: 4.361 on 2 and 70 DF, p-value: 0.01641
Individual correlations (language use vs. vocab category)
Pearson's product-moment correlation
data: LangUse_analyze$childAge_years and LangUse_analyze$total
t = 2.1887, df = 71, p-value = 0.03191
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.02265559 0.45515285
sample estimates:
cor
0.2514124
Pearson's product-moment correlation
data: LangUse_analyze$childAge_years and LangUse_analyze$LangUse_4factor
t = 0.88357, df = 71, p-value = 0.3799
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.1288711 0.3265212
sample estimates:
cor
0.1042882
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$total
t = 2.1125, df = 71, p-value = 0.03816
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.01388879 0.44817217
sample estimates:
cor
0.243179
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$seed
t = 2.073, df = 71, p-value = 0.0418
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.009344621 0.444532853
sample estimates:
cor
0.2388983
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$control
t = 2.07, df = 71, p-value = 0.04209
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.008993928 0.444251393
sample estimates:
cor
0.2385676
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$surgency_score
t = -0.15788, df = 70, p-value = 0.875
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.2494449 0.2137361
sample estimates:
cor
-0.01886661
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$abstractConcepts
t = 2.3137, df = 71, p-value = 0.02358
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.03697461 0.46644137
sample estimates:
cor
0.2647894
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$actionWords
t = 2.2315, df = 71, p-value = 0.02881
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.02756213 0.45903669
sample estimates:
cor
0.256006
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$bodyParts
t = 2.0689, df = 71, p-value = 0.0422
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.00886688 0.44414941
sample estimates:
cor
0.2384477
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$clothing
t = 1.6664, df = 71, p-value = 0.1
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.03774066 0.40595827
sample estimates:
cor
0.1940112
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$descWords
t = 2.2388, df = 71, p-value = 0.02831
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.02839409 0.45969360
sample estimates:
cor
0.2567839
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$foodDrink
t = 1.2849, df = 71, p-value = 0.203
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.08217466 0.36804563
sample estimates:
cor
0.1507425
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$furniture
t = 1.2948, df = 71, p-value = 0.1996
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.08101511 0.36905439
sample estimates:
cor
0.1518831
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$games
t = 1.8656, df = 71, p-value = 0.06622
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.01461903 0.42510030
sample estimates:
cor
0.2161753
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$mentalStates
t = 1.8313, df = 71, p-value = 0.07125
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.01859971 0.42183254
sample estimates:
cor
0.2123764
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$numbers
t = 2.6613, df = 71, p-value = 0.00962
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.07639491 0.49681244
sample estimates:
cor
0.3011689
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$outsideThings
t = 2.5173, df = 71, p-value = 0.01409
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.06013736 0.48441047
sample estimates:
cor
0.2862443
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$people
t = 1.4837, df = 71, p-value = 0.1423
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.05900622 0.38800232
sample estimates:
cor
0.1734152
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$places
t = 2.2996, df = 71, p-value = 0.02442
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.03535614 0.46517241
sample estimates:
cor
0.2632818
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$preps
t = 1.5148, df = 71, p-value = 0.1343
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.05538278 0.39108601
sample estimates:
cor
0.176939
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$articles
t = 1.7318, df = 71, p-value = 0.08765
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.03014411 0.41229056
sample estimates:
cor
0.2013193
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$householdItems
t = 1.6389, df = 71, p-value = 0.1056
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.04093618 0.40328177
sample estimates:
cor
0.1909293
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$sounds
t = 1.6233, df = 71, p-value = 0.109
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.04275395 0.40175584
sample estimates:
cor
0.1891741
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$time
t = 2.2104, df = 71, p-value = 0.0303
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.02513627 0.45711853
sample estimates:
cor
0.2537362
Pearson's product-moment correlation
data: LangUse_analyze$LangUse_4factor and LangUse_analyze$toys
t = 0.5223, df = 71, p-value = 0.6031
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.1706288 0.2878375
sample estimates:
cor
0.06186714
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShzcGxpdHN0YWNrc2hhcGUpDQpsaWJyYXJ5KGdnYWx0KQ0KbGlicmFyeShzY2FsZXMpDQpsaWJyYXJ5KHBzeWNoKQ0KbGlicmFyeShjb3JycGxvdCkNCg0KYGBgDQoNCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9DQpMVU1fcmF3IDwtIHJlYWQuY3N2KCJMVU1fVGVtcGVyYW1lbnRfTlJTQS5jc3YiKSAlPiUgDQogIHJlbmFtZShwYXJlbnRFZD1XaGF0LmlzLnRoZS5oaWdoZXN0LmxldmVsLm9mLmVkdWNhdGlvbi55b3UuaGF2ZS5jb21wbGV0ZWQuLA0KICAgICAgICAgY2hpbGRHZW5kZXI9V2hhdC5pcy55b3VyLmNoaWxkLnMuZ2VuZGVyLiwNCiAgICAgICAgIGNoaWxkU2libGluZ3MgPSBIb3cubWFueS5zaWJsaW5ncy5kb2VzLnRoZS5jaGlsZC5oYXZlLiwNCiAgICAgICAgIGNoaWxkQmlydGhPcmRlcj1XaGF0LmlzLnRoZS5jaGlsZC5zLmJpcnRoLm9yZGVyLi4uMS5pZi50aGUub2xkZXN0Lm9yLm9ubHkuY2hpbGQuLjIuaWYudGhlLnNlY29uZC5vbGRlc3QuLmV0Yy4uLA0KICAgICAgICAgY2hpbGRET0I9UGxlYXNlLmVudGVyLnRoZS5iaXJ0aGRhdGUub2YueW91ci5jaGlsZC4uc28ud2Uua25vdy5leGFjdGx5Lmhvdy5vbGQudGhlLmNoaWxkLmlzLmF0LnRoZS50aW1lLnlvdS5jb21wbGV0ZWQudGhpcy5xdWVzdGlvbm5haXJlLi4ubW0uZGQueXl5eS4pDQoNCnZvY2FiX3NpemUgPC0gcmVhZC5jc3YoInByb2R1Y3RpdmVfdm9jYWIuY3N2IikNCg0Kdm9jYWJfY2F0ZWdvcmllcyA8LSByZWFkLmNzdigicHJvZHVjdGl2ZV92b2NhYl9ieV9jYXRlZ29yeS5jc3YiKQ0KDQpMVU1fZ3JpZHF1ZXN0aW9ucyA8LSBjKCJ3YW50c19sb29rIiwid2FudHNfcG9pbnQiLCJ3YW50c19sb29rTWUiLCJ3YW50c19wdWxsSGFuZCIsDQogICAgICAgICAgICAgICAgICAgICAgICJyb29tX2xvb2siLCJyb29tX3BvaW50Iiwicm9vbV9sb29rTWUiLCJyb29tX3B1bGxIYW5kIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIm5vdGljZV9sb29rIiwibm90aWNlX3BvaW50Iiwibm90aWNlX2xvb2tNZSIsIm5vdGljZV9KQSIsDQogICAgICAgICAgICAgICAgICAgICAgICJ0dXJuX2xvb2siLCJ0dXJuX3BvaW50IiwidHVybl90YWtlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgImJyb2tlbl9sb29rIiwiYnJva2VuX3BvaW50IiwiYnJva2VuX2xvb2tNZSIsImJyb2tlbl91aG9oIikNCg0KY29tYmluZWQxIDwtIGlubmVyX2pvaW4oTFVNX3Jhdywgdm9jYWJfc2l6ZSwgYnk9YygiRmlyc3ROYW1lIiwiRW1haWwiLCAiY2hpbGRHZW5kZXIiKSkgJT4lDQogIGlubmVyX2pvaW4odm9jYWJfY2F0ZWdvcmllcywgYnk9Yygic3ViakNvZGUiLCJGaXJzdE5hbWUiLCJFbWFpbCIsImNoaWxkR2VuZGVyIikpICU+JSANCiAgc2VsZWN0KC1BcmUueW91LnRoZS5jaGlsZC5zLi4sIC1Jcy50aGVyZS5hbnl0aGluZy5lbHNlLnlvdS5kLmxpa2UudG8udGVsbC51cy5hYm91dC55b3VyLmNoaWxkLiwgLVE5MSkgJT4lIA0KICBtdXRhdGUoY2hpbGRBZ2VfbW9udGhzID0gY2hpbGRBZ2VfZGF5cy8zMCkgJT4lIA0KICByZW5hbWUocmVhZFNlbGYgPSBXaGVuLm15LmNoaWxkLnJlYWRzLmJvb2tzLi50aGV5LnJlYWQub3V0LmxvdWQudG8udGhlbXNlbHZlcy4sDQogICAgICAgICByZWFkT3RoZXIgPSBXaGVuLm15LmNoaWxkLnJlYWRzLmJvb2tzLi50aGV5LnJlYWQub3V0LmxvdWQudG8ub3RoZXJzLiwNCiAgICAgICAgIG91dHNpZGUgPQlXaGVuLm15LmNoaWxkLnBsYXlzLm91dHNpZGUuLnRoZXkudGFsay50by50aGVtc2VsdmVzLmFzLnRoZXkucnVuLmFyb3VuZC4sDQogICAgICAgICB0dlNlbGYJPVdoZW4ubXkuY2hpbGQud2F0Y2hlcy5UVi4udGhleS50YWxrLnRvLnRoZW1zZWx2ZXMuLA0KICAgICAgICAgdHZUVgk9V2hlbi5teS5jaGlsZC53YXRjaGVzLlRWLi50aGV5LnRhbGsudG8udGhlLlRWLiwNCiAgICAgICAgIHRveXNFYWNoT3RoZXIgPSBXaGVuLm15LmNoaWxkLnBsYXlzLndpdGgudG95cy4udGhleS5oYXZlLnRoZS50b3lzLnRhbGsudG8uZWFjaC5vdGhlci4sDQogICAgICAgICB0b3lzVGFsa1RvCT1XaGVuLm15LmNoaWxkLnBsYXlzLndpdGgudG95cy4udGhleS50YWxrLnRvLnRoZS50b3lzLiwNCiAgICAgICAgIGFsb25lID1XaGVuLm15LmNoaWxkLnBsYXlzLmFsb25lLi50aGV5LnRhbGsudG8udGhlbXNlbHZlcy4sDQogICAgICAgICBkcmF3aW5nU2VsZiA9V2hlbi5teS5jaGlsZC5pcy5kcmF3aW5nLi50aGV5LnRhbGsuYWJvdXQudGhlLnBpY3R1cmUuYXMudGhleS5kcmF3Lml0LiwNCiAgICAgICAgIGJ1aWxkaW5nU2VsZgk9V2hlbi5teS5jaGlsZC5pcy5idWlsZGluZy5zb21ldGhpbmcuLmZvci5leGFtcGxlLi53aXRoLmJsb2Nrcy4uLnRoZXkubmFycmF0ZS50by50aGVtc2VsdmVzLndoYXQudGhleS5yZS5kb2luZy4sDQogICAgICAgICByZWd1bGF0aW9uU2VsZj1XaGVuLm15LmNoaWxkLmlzLnRyeWluZy50by5yZW1lbWJlci50by5mb2xsb3cuYS5ydWxlLi50aGV5LnNheS50aGUucnVsZS50by50aGVtc2VsdmVzLi5mb3IuZXhhbXBsZS4uLnVzZS55b3VyLndhbGtpbmcuZmVldC4ud2hlbi50cnlpbmcubm90LnRvLnJ1bi5pbmRvb3JzLi4sCQ0KICAgICAgICAgc2xlZXBTZWxmCT1XaGVuLm15LmNoaWxkLmlzLmZhbGxpbmcuYXNsZWVwLi50aGV5LnRhbGsudG8udGhlbXNlbHZlcy4sDQogICAgICAgICBqb2tlRnJlcQk9IE15LmNoaWxkLnRlbGxzLmpva2VzLi4uc3RydWN0dXJlLmh1bW9yLmRvZXNuLnQubWF0dGVyLiwNCiAgICAgICAgIHN0b3J5RnJlcT0JTXkuY2hpbGQudGVsbHMuc3Rvcmllcy4uLnN0cnVjdHVyZS5kb2Vzbi50Lm1hdHRlci4sDQogICAgICAgICBwYXN0RnJlcQk9TXkuY2hpbGQudGFsa3MuYWJvdXQucGFzdC5ldmVudHMuLA0KICAgICAgICAgYWJzZW50UGVvcGxlRnJlcQk9TXkuY2hpbGQudGFsa3MuYWJvdXQucGVvcGxlLndoby5hcmUubm90LnByZXNlbnQuLA0KICAgICAgICAgYWJzZW50T2JqRnJlcQk9TXkuY2hpbGQudGFsa3MuYWJvdXQub2JqZWN0cy50aGF0LmFyZS5ub3QucHJlc2VudC4sDQogICAgICAgICBmdXR1cmVGcmVxCT1NeS5jaGlsZC50YWxrcy5hYm91dC50aGluZ3MudGhhdC53aWxsLmhhcHBlbi5pbi50aGUuZnV0dXJlLi5mb3IuZXhhbXBsZS4uYW4udXBjb21pbmcuYmlydGhkYXkucGFydHkub3IudHJpcC50by50aGUuYmVhY2guLiwNCiAgICAgICAgIHNpbmdGcmVxCT1NeS5jaGlsZC5zaW5ncy5tYWRlLnVwLnNvbmdzLnRvLnRoZW1zZWx2ZXMuLA0KICAgICAgICAgbmV3V29yZEZyZXEJPU15LmNoaWxkLmludmVudHMubmV3LndvcmRzLiwNCiAgICAgICAgIHJlcGVhdFJoeW1lRnJlcT1NeS5jaGlsZC5yZXBlYXRzLnJoeW1lcy5pbi5wb2Vtcy5vci5zb25ncy4pICU+JSANCiAgbXV0YXRlKFN1cmdlbmN5X3F1aWV0X3JlY29kZWQgPSA4IC0gU3VyZ2VuY3lfcl9xdWlldCwNCiAgICAgICAgIFN1cmdlbmN5X3Nsb3dBcHByb2FjaF9yZWNvZGVkID0gOCAtIFN1cmdlbmN5X3Jfc2xvd0FwcHJvYWNoLA0KICAgICAgICAgU3VyZ2VuY3lfc2h5RmFtaWxpYXJfcmVjb2RlZCA9IDggLSBTdXJnZW5jeV9yX3NoeUZhbWlsaWFyLA0KICAgICAgICAgU3VyZ2VuY3lfdW5odXJyaWVkX3JlY29kZWQgPSA4IC0gU3VyZ2VuY3lfcl91bmh1cnJpZWQsDQogICAgICAgICBTdXJnZW5jeV9zaHlOZXdfcmVjb2RlZCA9IDggLSBTdXJnZW5jeV9yX3NoeU5ldykgJT4lIA0KICBtdXRhdGUoc3VyZ2VuY3lfc2NvcmUgPSAoU3VyZ2VuY3lfaHVycnkrU3VyZ2VuY3lfc2xpZGVzK1N1cmdlbmN5X3J1c2hTaXR1YXRpb24rU3VyZ2VuY3lfZWFzZStTdXJnZW5jeV9zd2luZytTdXJnZW5jeV9lbmVyZ3krDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZ2VuY3lfcm93ZHkrU3VyZ2VuY3lfcXVpZXRfcmVjb2RlZCtTdXJnZW5jeV9zbG93QXBwcm9hY2hfcmVjb2RlZCtTdXJnZW5jeV9zaHlGYW1pbGlhcl9yZWNvZGVkKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmdlbmN5X3VuaHVycmllZF9yZWNvZGVkK1N1cmdlbmN5X3NoeU5ld19yZWNvZGVkKS8xMikNCg0Kc3VyZ2VuY3lfdmFycyA8LSBjKCJTdXJnZW5jeV9odXJyeSIsIlN1cmdlbmN5X3NsaWRlcyIsIlN1cmdlbmN5X3J1c2hTaXR1YXRpb24iLCJTdXJnZW5jeV9lYXNlIiwiU3VyZ2VuY3lfc3dpbmciLCJTdXJnZW5jeV9lbmVyZ3kiLA0KICAgICAgICAgICAgICAgICAgICJTdXJnZW5jeV9yb3dkeSIsIlN1cmdlbmN5X3F1aWV0X3JlY29kZWQiLCJTdXJnZW5jeV9zbG93QXBwcm9hY2hfcmVjb2RlZCIsIlN1cmdlbmN5X3NoeUZhbWlsaWFyX3JlY29kZWQiLA0KICAgICAgICAgICAgICAgICAgICJTdXJnZW5jeV91bmh1cnJpZWRfcmVjb2RlZCIsIlN1cmdlbmN5X3NoeU5ld19yZWNvZGVkIiwiU3VyZ2VuY3lfcl9zbG93QXBwcm9hY2giLCJTdXJnZW5jeV9yX3NoeUZhbWlsaWFyIiwNCiAgICAgICAgICAgICAgICAgICAiU3VyZ2VuY3lfcl91bmh1cnJpZWQiLCJTdXJnZW5jeV9yX3NoeU5ldyIsIlN1cmdlbmN5X3JfcXVpZXQiKQ0KDQpjb21iaW5lZF9jbGVhbiA8LSBjb21iaW5lZDEgJT4lIA0KICBzZWxlY3QoLUxVTV9ncmlkcXVlc3Rpb25zLCAtc3VyZ2VuY3lfdmFycywtUmVjb3JkZWREYXRlLCAtRmlyc3ROYW1lLCAtRW1haWwsIC1jaGlsZEJpcnRoT3JkZXIsIC1jaGlsZERPQiwgLVBhcmVudEFnZSkNCmBgYA0KDQojIyBFRkENCmBgYHtyfQ0KTFVNX0VGQSA8LSBjb21iaW5lZF9jbGVhbiAlPiUgDQogIHNlbGVjdCgtY2hpbGRHZW5kZXIsIC1jaGlsZEFnZV9kYXlzLCAtc3ViakNvZGUsIC10b3RhbCwgLXNlZWQsIC1jb250cm9sLCAtY2hpbGRBZ2VfbW9udGhzLCAtc3VyZ2VuY3lfc2NvcmUsIC1wYXJlbnRFZCwgLWNoaWxkU2libGluZ3MsIC1YLCAtc3ViakNvZGUsIC1hYnN0cmFjdENvbmNlcHRzLCAtYWN0aW9uV29yZHMsIC1ib2R5UGFydHMsIC1jbG90aGluZywgLWRlc2NXb3JkcywgLWZvb2REcmluaywgLWZ1cm5pdHVyZSwgLWdhbWVzLA0KICAgICAgICAgLW1lbnRhbFN0YXRlcywgLW51bWJlcnMsIC1vdXRzaWRlVGhpbmdzLCAtcGVvcGxlLCAtcGxhY2VzLCAtcHJlcHMsIC1hcnRpY2xlcywgLWhvdXNlaG9sZEl0ZW1zLCAtc291bmRzLCAtdG95cywgLXRpbWUsDQogICAgICAgICAtb3RoZXIsIC1jaGlsZEFnZV9tb250aHMsIC1zdXJnZW5jeV9zY29yZSkNCg0KTFVNX2ZvckNvcnIgPC0gTFVNX0VGQVtjb21wbGV0ZS5jYXNlcyhMVU1fRUZBKSxdDQoNCnBsdW1fY29yIDwtIGNvcihMVU1fZm9yQ29ycikNCg0KZmExIDwtIGZhKHIgPSBwbHVtX2NvciwgbmZhY3RvcnM9NCkNCmZhMQ0KDQpwYXJhbGxlbCA8LSBmYS5wYXJhbGxlbChMVU1fZm9yQ29yciwgZmE9J2ZhJykNCiNzdWdnZXN0cyB1c2luZyA1IGZhY3RvcnM7IDQgd291bGQgYmUgb2sgZnJvbSBzY3JlZSBwbG90DQpgYGANCg0KIyMgUENBDQpgYGB7cn0NCnBjYV9maXJzdCA8LSBwcmNvbXAoTFVNX2ZvckNvcnIpDQpzdW1tYXJ5KHBjYV9maXJzdCkNCg0KYGBgDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KI21ha2UgZGY7IGhhZCBpbmNsdWRlZCB0aGVzZSB2YXJzIGJ1dCBkb24ndCB3YW50IHJpZ2h0IG5vdzogDQojIE1SNF80ZmFjdG9yX3N1bSA9IHJlZ3VsYXRpb25TZWxmK3R2VFYrYnVpbGRpbmdTZWxmK3R2U2VsZit0b3lzVGFsa1RvK3NsZWVwU2VsZithbG9uZStuZXdXb3JkRnJlcStvdXRzaWRlLA0KIyBNUjFfNGZhY3Rvcl9zdW0gPSByZWFkT3RoZXIrcmVhZFNlbGYrcmVwZWF0Umh5bWVGcmVxK2RyYXdpbmdTZWxmK3R2VFYrdG95c0VhY2hPdGhlcitidWlsZGluZ1NlbGYNCg0KI0xhbmdVc2UgaXMgbWlzc2luZyByZWFkU2VsZiBiZWNhdXNlIGxvYWRpbmcgd2FzIDwuMw0KTGFuZ1VzZV9hbmFseXplIDwtIGNvbWJpbmVkX2NsZWFuICU+JSANCiAgbXV0YXRlKExhbmdVc2VfNGZhY3RvciA9IHRveXNUYWxrVG8rdHZTZWxmK3R2VFYrb3V0c2lkZStidWlsZGluZ1NlbGYrYWxvbmUrc2xlZXBTZWxmK3JlZ3VsYXRpb25TZWxmK3JlYWRPdGhlcit0b3lzRWFjaE90aGVyK2RyYXdpbmdTZWxmLA0KICAgICAgICAgTGFuZ1VzZV9hbGwgPSBzZWxlY3QoLiwgcmVhZFNlbGY6YnJva2VuX2FzaykgJT4lIHJvd1N1bXMobmEucm09VFJVRSksDQogICAgICAgICBjaGlsZEFnZV95ZWFycyA9IGNoaWxkQWdlX21vbnRocy8xMikgJT4lIA0KICBmaWx0ZXIoY2hpbGRBZ2VfeWVhcnMgPCA0LjUgJiBjaGlsZEFnZV95ZWFycz4yICYgdG90YWwgPjUwKQ0KYGBgDQojIyBWaXN1YWxpemF0aW9ucyB7LnRhYnNldH0NCiMjIyBhZ2UgdnMuIHZvY2FiIChhbGwpDQpgYGB7cn0NCmdncGxvdChMYW5nVXNlX2FuYWx5emUsIGFlcyh0b3RhbCxjaGlsZEFnZV95ZWFycykpKw0KICBnZW9tX3BvaW50KHNpemU9MykrDQogIHlsYWIoIkNoaWxkIEFnZSIpICsgeGxhYigiVm9jYWJ1bGFyeSIpKw0KICBnZW9tX3Ntb290aChtZXRob2Q9ImxtIikgKw0KICB0aGVtZV9jbGFzc2ljKCkNCg0KI2Jhc2Vfc2l6ZT0zMA0KYGBgDQojIyMgYWdlIHZzLiBzZWVkIHZvY2FiDQpgYGB7cn0NCmdncGxvdChMYW5nVXNlX2FuYWx5emUsIGFlcyhzZWVkLGNoaWxkQWdlX3llYXJzKSkrDQogIGdlb21fcG9pbnQoc2l6ZT0zKSsNCiAgeWxhYigiQ2hpbGQgQWdlIikgKyB4bGFiKCJTZWVkIFZvY2FidWxhcnkiKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kPSJsbSIpKw0KICB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KIyMjIGFnZSB2cy4gY29udHJvbCB2b2NhYg0KYGBge3J9DQpnZ3Bsb3QoTGFuZ1VzZV9hbmFseXplLCBhZXMoY29udHJvbCxjaGlsZEFnZV95ZWFycykpKw0KICBnZW9tX3BvaW50KHNpemU9MykrDQogIHlsYWIoIkNoaWxkIEFnZSIpICsgeGxhYigiQ29udHJvbCBWb2NhYnVsYXJ5IikrDQogIGdlb21fc21vb3RoKG1ldGhvZD0ibG0iKSsNCiAgdGhlbWVfY2xhc3NpYygpDQpgYGANCg0KIyMjIGxhbmd1YWdlIHVzZSB2cy4gc2VlZCB2b2NhYg0KYGBge3J9DQpnZ3Bsb3QoTGFuZ1VzZV9hbmFseXplLCBhZXMoTGFuZ1VzZV80ZmFjdG9yLHNlZWQpKSsNCiAgZ2VvbV9wb2ludChzaXplPTMpKw0KICB4bGFiKCJMYW5ndWFnZSBVc2UiKSArIHlsYWIoIlNlZWQgVm9jYWJ1bGFyeSIpKw0KICBnZW9tX3Ntb290aChtZXRob2Q9ImxtIikrDQogIHRoZW1lX2NsYXNzaWMoKQ0KYGBgDQoNCiMjIyBsYW5ndWFnZSB1c2UgdnMuIHRvdGFsIHZvY2FiDQpgYGB7cn0NCmdncGxvdChMYW5nVXNlX2FuYWx5emUsIGFlcyhMYW5nVXNlXzRmYWN0b3IsdG90YWwpKSsNCiAgZ2VvbV9wb2ludChzaXplPTMpKw0KICB4bGFiKCJMYW5ndWFnZSBVc2UiKSArIHlsYWIoIlZvY2FidWxhcnkiKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kPSJsbSIpKw0KICB0aGVtZV9jbGFzc2ljKCkgIA0KYGBgDQoNCiMjIyBsYW5ndWFnZSB1c2UgdnMuIGFnZQ0KYGBge3J9DQpnZ3Bsb3QoTGFuZ1VzZV9hbmFseXplLCBhZXMoTGFuZ1VzZV80ZmFjdG9yLGNoaWxkQWdlX3llYXJzKSkrDQogIGdlb21fcG9pbnQoc2l6ZT0zKSsNCiAgeGxhYigiTGFuZ3VhZ2UgVXNlIikgKyB5bGFiKCJDaGlsZCBBZ2UiKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kPSJsbSIpKw0KICB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQojIyBDb3JyZWxhdGlvbiB0YWJsZSBvZiB2b2NhYiBieSBjYXRlZ29yeQ0KYGBge3J9DQpsYW5ndWFnZV91c2VfY29ycnMgPC0gc2VsZWN0KExhbmdVc2VfYW5hbHl6ZSwgYWJzdHJhY3RDb25jZXB0cywgYWN0aW9uV29yZHMsIGJvZHlQYXJ0cywgY2xvdGhpbmcsIGRlc2NXb3JkcywgZm9vZERyaW5rLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXJuaXR1cmUsIGdhbWVzLCBtZW50YWxTdGF0ZXMsIG51bWJlcnMsIG91dHNpZGVUaGluZ3MsIHBlb3BsZSwgcGxhY2VzLCBwcmVwcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZXMsIHNvdW5kcywgdGltZSwgaG91c2Vob2xkSXRlbXMsIHRveXMsIHRvdGFsLCBzdXJnZW5jeV9zY29yZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FsbCwgY2hpbGRBZ2VfeWVhcnMpICU+JSANCiAgY29yKHVzZT0icGFpcndpc2UuY29tcGxldGUub2JzIiwgbWV0aG9kPSJwZWFyc29uIikNCnAubWF0X2NoaWxkIDwtIGNvci5tdGVzdChsYW5ndWFnZV91c2VfY29ycnMpDQpwTWF0cml4X2NoaWxkIDwtIHAubWF0X2NoaWxkJHANCg0KY29ycnBsb3QobGFuZ3VhZ2VfdXNlX2NvcnJzLCBtZXRob2QgPSAnY29sb3InLCB0eXBlPSdsb3dlcicsIGRpYWcgPSBGQUxTRSwgYWRkQ29lZi5jb2wgPSAiYmxhY2siLA0KICAgICAgICAgdGwuY29sID0gImJsYWNrIiwgbnVtYmVyLmZvbnQ9MiwgbnVtYmVyLmNleD0uNSwgcC5tYXQ9cE1hdHJpeF9jaGlsZCwgc2lnLmxldmVsID0gMC4wNSwgaW5zaWcgPSAiYmxhbmsiKQ0KYGBgDQoNCmBgYHtyfQ0KIyMjIGNlbnRlcmluZyBmdW5jdGlvbg0KbXlDZW50ZXI9IGZ1bmN0aW9uKHgpIHsNCiAgaWYgKGlzLm51bWVyaWMoeCkpIHsgcmV0dXJuKHggLSBtZWFuKHgsIG5hLnJtPVQpKSB9DQogIGlmIChpcy5mYWN0b3IoeCkpIHsNCiAgICB4PSBhcy5udW1lcmljKHgpDQogICAgcmV0dXJuKHggLSBtZWFuKHgsIG5hLnJtPVQpKQ0KICB9DQogIGlmIChpcy5kYXRhLmZyYW1lKHgpIHx8IGlzLm1hdHJpeCh4KSkgew0KICAgIG09IG1hdHJpeChucm93PW5yb3coeCksIG5jb2w9bmNvbCh4KSkNCiAgICBjb2xuYW1lcyhtKT0gcGFzdGUoImMiLCBjb2xuYW1lcyh4KSwgc2VwPSIiKQ0KICAgIGZvciAoaSBpbiAxOm5jb2woeCkpIHsNCiAgICAgIG1bLGldPSBteUNlbnRlcih4WyxpXSkNCiAgICB9DQogICAgcmV0dXJuKGFzLmRhdGEuZnJhbWUobSkpDQogIH0NCn0NCg0KTGFuZ1VzZV9hbmFseXplJHBhcmVudEVkX2NlbnRlcmVkIDwtIG15Q2VudGVyKExhbmdVc2VfYW5hbHl6ZSRwYXJlbnRFZCkNCmBgYA0KDQojIyBSZWdyZXNzaW9uIG1vZGVscyB0byBwcmVkaWN0IGxhbmd1YWdlIHVzZSB7LnRhYnNldH0NCiMjIyBBZ2UNCmBgYHtyfQ0KI0FnZSBkb2Vzbid0IHByZWRpY3QgbGFuZ3VhZ2UgdXNlDQptb2RBZ2UgPC0gbG0oTGFuZ1VzZV80ZmFjdG9yIH4gY2hpbGRBZ2VfeWVhcnMsIExhbmdVc2VfYW5hbHl6ZSkNCnN1bW1hcnkobW9kQWdlKQ0KYGBgDQoNCiMjIyBTZWVkIGFuZCBjb250cm9sIHdvcmQga25vd2xlZGdlDQpgYGB7cn0NCm1vZENvbnRyb2wgPC0gbG0oTGFuZ1VzZV80ZmFjdG9yIH4gY29udHJvbCwgTGFuZ1VzZV9hbmFseXplKQ0Kc3VtbWFyeShtb2RDb250cm9sKQ0KbW9kU2VlZCA8LSBsbShMYW5nVXNlXzRmYWN0b3IgfiBzZWVkLCBMYW5nVXNlX2FuYWx5emUpDQpzdW1tYXJ5KG1vZFNlZWQpDQpgYGANCg0KIyMjIFRvdGFsIHZvY2FidWxhcnkNCmBgYHtyfQ0KbW9kVm9jYWJPbmx5IDwtIGxtKExhbmdVc2VfNGZhY3RvciB+IHRvdGFsLCBMYW5nVXNlX2FuYWx5emUpDQpzdW1tYXJ5KG1vZFZvY2FiT25seSkNCmBgYA0KDQojIyMgVG90YWwgdm9jYWJ1bGFyeSArIGFnZQ0KYGBge3J9DQojVG90YWwgaHlwZXJueW1zIHZvY2FiIGRvZXMgcHJlZGljdCBsYW5ndWFnZSB1c2UgKHAgPSAuMDU3KQ0KbW9kVG90YWwgPC0gbG0oTGFuZ1VzZV80ZmFjdG9yIH4gY2hpbGRBZ2VfeWVhcnMgKyB0b3RhbCwgTGFuZ1VzZV9hbmFseXplKQ0Kc3VtbWFyeShtb2RUb3RhbCkNCmBgYA0KDQojIyMgVG90YWwgdm9jYWJ1bGFyeSArIGFnZSArIHN1cmdlbmN5DQpgYGB7cn0NCm1vZEZ1bGwgPC0gbG0oTGFuZ1VzZV80ZmFjdG9yIH4gY2hpbGRBZ2VfeWVhcnMgKyBzdXJnZW5jeV9zY29yZSArIHRvdGFsLCBMYW5nVXNlX2FuYWx5emUpDQpzdW1tYXJ5KG1vZEZ1bGwpDQpgYGANCg0KIyMjIFRvdGFsIHZvY2FidWxhcnkgKyBhZ2UgKyBzdXJnZW5jeSArIHBhcmVudCBlZA0KYGBge3J9DQptb2RFZCA8LSBsbShMYW5nVXNlXzRmYWN0b3IgfiBjaGlsZEFnZV95ZWFycyArIHN1cmdlbmN5X3Njb3JlICsgcGFyZW50RWRfY2VudGVyZWQgKyB0b3RhbCwgTGFuZ1VzZV9hbmFseXplKQ0Kc3VtbWFyeShtb2RFZCkNCmBgYA0KIyMjIFByZWRpY3Qgdm9jYWIgZnJvbSBsYW5ndWFnZSB1c2UgYW5kIGFnZQ0KYGBge3J9DQpwcmVkaWN0Vm9jYWIgPC0gbG0odG90YWwgfiBjaGlsZEFnZV95ZWFycyArIExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplKQ0Kc3VtbWFyeShwcmVkaWN0Vm9jYWIpDQoNCmBgYA0KDQoNCiMjIEluZGl2aWR1YWwgY29ycmVsYXRpb25zIChsYW5ndWFnZSB1c2UgdnMuIHZvY2FiIGNhdGVnb3J5KQ0KYGBge3J9DQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkY2hpbGRBZ2VfeWVhcnMsTGFuZ1VzZV9hbmFseXplJHRvdGFsLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICAgICNzaWduaWZpY2FudA0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJGNoaWxkQWdlX3llYXJzLExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIG1ldGhvZD0icGVhcnNvbiIsIG5hLnJtPVRSVUUpICAjbnMNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsTGFuZ1VzZV9hbmFseXplJHRvdGFsLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICAgI3NpZ25pZmljYW50DQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLExhbmdVc2VfYW5hbHl6ZSRzZWVkLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICAgICNzaWduaWZpY2FudA0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvcixMYW5nVXNlX2FuYWx5emUkY29udHJvbCwgbWV0aG9kPSJwZWFyc29uIikgICAgICAgICAgICAjc2lnbmlmaWNhbnQNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSRzdXJnZW5jeV9zY29yZSwgbWV0aG9kPSJwZWFyc29uIikgICAgI25zDQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkYWJzdHJhY3RDb25jZXB0cywgbWV0aG9kPSJwZWFyc29uIikgICNzaWduaWZpY2FudA0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplJGFjdGlvbldvcmRzLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAjc2lnbmlmaWNhbnQNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSRib2R5UGFydHMsIG1ldGhvZD0icGVhcnNvbiIpICAgICAgICAgI3NpZ25pZmljYW50DQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkY2xvdGhpbmcsIG1ldGhvZD0icGVhcnNvbiIpICAgICAgICAgICNucw0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplJGRlc2NXb3JkcywgbWV0aG9kPSJwZWFyc29uIikgICAgICAgICAjc2lnbmlmaWNhbnQNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSRmb29kRHJpbmssIG1ldGhvZD0icGVhcnNvbiIpICAgICAgICAgI25zDQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkZnVybml0dXJlLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICNucw0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplJGdhbWVzLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICAjbnMNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSRtZW50YWxTdGF0ZXMsIG1ldGhvZD0icGVhcnNvbiIpICAgICAgI25zDQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkbnVtYmVycywgbWV0aG9kPSJwZWFyc29uIikgICAgICAgICAgICNzaWduaWZpY2FudA0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplJG91dHNpZGVUaGluZ3MsIG1ldGhvZD0icGVhcnNvbiIpICAgICAjc2lnbmlmaWNhbnQNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSRwZW9wbGUsIG1ldGhvZD0icGVhcnNvbiIpICAgICAgICAgICAgI25zDQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkcGxhY2VzLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICNzaWduaWZpY2FudA0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplJHByZXBzLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICAjbnMNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSRhcnRpY2xlcywgbWV0aG9kPSJwZWFyc29uIikgICAgICAgICAgI25zDQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkaG91c2Vob2xkSXRlbXMsIG1ldGhvZD0icGVhcnNvbiIpICAgICNucw0KY29yLnRlc3QoTGFuZ1VzZV9hbmFseXplJExhbmdVc2VfNGZhY3RvciwgTGFuZ1VzZV9hbmFseXplJHNvdW5kcywgbWV0aG9kPSJwZWFyc29uIikgICAgICAgICAgICAjbnMNCmNvci50ZXN0KExhbmdVc2VfYW5hbHl6ZSRMYW5nVXNlXzRmYWN0b3IsIExhbmdVc2VfYW5hbHl6ZSR0aW1lLCBtZXRob2Q9InBlYXJzb24iKSAgICAgICAgICAgICAgI3NpZ25pZmljYW50DQpjb3IudGVzdChMYW5nVXNlX2FuYWx5emUkTGFuZ1VzZV80ZmFjdG9yLCBMYW5nVXNlX2FuYWx5emUkdG95cywgbWV0aG9kPSJwZWFyc29uIikgICAgICAgICAgICAgICNucw0KDQpgYGANCg0KPCEtLSAjIE1vcmUgcGxvdHMgZm9yIHByb3Bvc2FsIC0tPg0KPCEtLSBgYGB7cn0gLS0+DQo8IS0tIGdncGxvdChmaWx0ZXIoTGFuZ1VzZV9hbmFseXplLCBjaGlsZEFnZTw0LjUpLCBhZXMoc2xlZXBTZWxmKSkrIC0tPg0KPCEtLSAgIGdlb21fYmFyKCkrIC0tPg0KPCEtLSAgIHlsYWIoIk51bWJlciBvZiBSZXNwb25zZXMiKSArIHhsYWIoIidNeSBjaGlsZCB0YWxrcyB0byB0aGVtc2VsdmVzIGFzIHRoZXkncmUgZmFsbGluZyBhc2xlZXAuJyIpKyAtLT4NCjwhLS0gICB0aGVtZV9jbGFzc2ljKCkrIC0tPg0KPCEtLSAgIGNvb3JkX2NhcnRlc2lhbih5bGltPWMoMCwxMCkpKyAtLT4NCjwhLS0gICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzPXNlcSgwLDEwLDEpKSsgLS0+DQo8IS0tICAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcz1zZXEoMSw1LDEpLCBsYWJlbHM9YygiTmV2ZXIiLCJTb21ldGltZXMiLCJBYm91dCBoYWxmIHRoZSB0aW1lIiwiTW9zdCBvZiB0aGUgdGltZSIsIkFsd2F5cyIpKSAtLT4NCg0KPCEtLSAjaW1wb3J0IGZha2UgZGF0YSBmb3Igc2NoZW1hdGljIC0tPg0KPCEtLSBmYWtlIDwtIHJlYWQuY3N2KCJmYWtlZGF0YV9zY2hlbWF0aWMuY3N2IikgLS0+DQo8IS0tIGdncGxvdChmYWtlLCBhZXMoVm9jYWJ1bGFyeS5TaXplLCBMYW5ndWFnZS5Vc2UsIGNvbG9yPUNoaWxkKSkrIC0tPg0KPCEtLSAgIHlsYWIoIkxhbmd1YWdlIFVzZSIpICsgeGxhYigiVm9jYWJ1bGFyeSBTaXplIikrIC0tPg0KPCEtLSAgIGdlb21fc21vb3RoKG1ldGhvZD0ibG0iLCBzZT1GQUxTRSwgc2l6ZT0yKSsgLS0+DQo8IS0tICAgY29vcmRfY2FydGVzaWFuKHlsaW09YygwLDUwKSkrIC0tPg0KPCEtLSAgIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplPTMwKSAtLT4NCg0KDQo8IS0tIGdncGxvdChMYW5nVXNlX2FuYWx5emUsIGFlcyhMYW5nVXNlXzRmYWN0b3IsY2hpbGRBZ2VfeWVhcnMpKSsgLS0+DQo8IS0tICAgZ2VvbV9wb2ludChzaXplPTMpKyAtLT4NCjwhLS0gICB4bGFiKCJMYW5ndWFnZSBVc2UiKSArIHlsYWIoIkNoaWxkIEFnZSIpKyAtLT4NCjwhLS0gICBnZW9tX3Ntb290aChtZXRob2Q9ImxtIikrIC0tPg0KPCEtLSAgIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplPTMwKSAtLT4NCjwhLS0gYGBgIC0tPg0K