Import and merge data

healthyU <- read.csv("HealthyUT1itemlevel.csv")
head(healthyU)
#colnames(healthyU)
hU <- healthyU[c(1,99:105,134:154,209:242,292:296)]
head(hU)
#colnames(hU)
#Import data from HU time 3 to get drug
huT3 <- read.csv("healthyUT3_clean.csv")
huT3drug <- huT3[c(1,202:205)]
#Import data from HU time 2 to get alcohol
huT2 <- read.csv("healthyUT2_clean.csv")
huT2alc <- huT2[c(1,189:192)]
hU <- full_join(hU,huT2alc)
Joining, by = "ID"
hU <- full_join(hU, huT3drug)
Joining, by = "ID"
#ADD ALC/DRUGS FOR PRETESTING
ptfall2018 <- read.csv("PSYPretestingFall2018September4reducedover1percent.csv", header = T, na.strings = "")
#colnames(ptfall2018)
preT <- ptfall2018[c(1,86:92,181:192,94:102,104:123,158,160,162,163,165,167,169,170,172,173,174,175,177,179,201:205,193:200)]
head(preT)
#colnames(preT)
#colnames(hU)
colnames(hU)[c(64:68)] <- c("ASRM1","ASRM2","ASRM3","ASRM4","ASRM5")

Recode variables

#SIR
hUPreT$SIR2r <- 4 - hUPreT$SIR2
hUPreT$SIR4r <- 4 - hUPreT$SIR4
#summary(hUPreT)
#SIAS
hUPreT$SIAS5r <- 4 - hUPreT$SIAS5
hUPreT$SIAS9r <- 4 - hUPreT$SIAS9
hUPreT$SIAS11r <- 4 - hUPreT$SIAS11
hUPreT$SIR2 <- hUPreT$SIR2r
hUPreT$SIR4 <- hUPreT$SIR4r
hUPreT$SIAS5 <- hUPreT$SIAS5r
hUPreT$SIAS9 <- hUPreT$SIAS9r
hUPreT$SIAS11 <- hUPreT$SIAS11r

Select only items to be put into models

colnames(hUPreT)
 [1] "ID"           "GAD_1"        "GAD_2"        "GAD_3"        "GAD_4"        "GAD_5"        "GAD_6"        "GAD_7"       
 [9] "OCIR2"        "OCIR3"        "OCIR5"        "OCIR6"        "OCIR8"        "OCIR9"        "OCIR11"       "OCIR12"      
[17] "OCIR14"       "OCIR15"       "OCIR17"       "OCIR18"       "DEP1"         "DEP2"         "DEP3"         "DEP4"        
[25] "DEP5"         "DEP6"         "DEP7"         "DEP8"         "DEP9"         "SIAS1"        "SIAS2"        "SIAS3"       
[33] "SIAS4"        "SIAS5"        "SIAS6"        "SIAS7"        "SIAS8"        "SIAS9"        "SIAS10"       "SIAS11"      
[41] "SIAS12"       "SIAS13"       "SIAS14"       "SIAS15"       "SIAS16"       "SIAS17"       "SIAS18"       "SIAS19"      
[49] "SIAS20"       "SIR2"         "SIR4"         "SIR6"         "SIR7"         "SIR9"         "SIR11"        "SIR13"       
[57] "SIR14"        "SIR16"        "SIR17"        "SIR18"        "SIR19"        "SIR21"        "SIR23"        "ASRM1"       
[65] "ASRM2"        "ASRM3"        "ASRM4"        "ASRM5"        "NIDA_ALC"     "NIDA_ALC_1"   "NIDA_ALC_2"   "NIDA_ALC_3"  
[73] "NIDA_DRUGS"   "NIDA_DRUGS_1" "NIDA_DRUGS_2" "NIDA_DRUGS_3" "SIR2r"        "SIR4r"        "SIAS5r"       "SIAS9r"      
[81] "SIAS11r"     
hP <- hUPreT[c(2:76)]
#summary(hP)

Rescale items to be on 0 to 4 scale

colnames(hP)
 [1] "GAD_1"        "GAD_2"        "GAD_3"        "GAD_4"        "GAD_5"        "GAD_6"        "GAD_7"        "OCIR2"       
 [9] "OCIR3"        "OCIR5"        "OCIR6"        "OCIR8"        "OCIR9"        "OCIR11"       "OCIR12"       "OCIR14"      
[17] "OCIR15"       "OCIR17"       "OCIR18"       "DEP1"         "DEP2"         "DEP3"         "DEP4"         "DEP5"        
[25] "DEP6"         "DEP7"         "DEP8"         "DEP9"         "SIAS1"        "SIAS2"        "SIAS3"        "SIAS4"       
[33] "SIAS5"        "SIAS6"        "SIAS7"        "SIAS8"        "SIAS9"        "SIAS10"       "SIAS11"       "SIAS12"      
[41] "SIAS13"       "SIAS14"       "SIAS15"       "SIAS16"       "SIAS17"       "SIAS18"       "SIAS19"       "SIAS20"      
[49] "SIR2"         "SIR4"         "SIR6"         "SIR7"         "SIR9"         "SIR11"        "SIR13"        "SIR14"       
[57] "SIR16"        "SIR17"        "SIR18"        "SIR19"        "SIR21"        "SIR23"        "ASRM1"        "ASRM2"       
[65] "ASRM3"        "ASRM4"        "ASRM5"        "NIDA_ALC"     "NIDA_ALC_1"   "NIDA_ALC_2"   "NIDA_ALC_3"   "NIDA_DRUGS"  
[73] "NIDA_DRUGS_1" "NIDA_DRUGS_2" "NIDA_DRUGS_3"
library(scales)

Attaching package: ‘scales’

The following objects are masked from ‘package:psych’:

    alpha, rescale
#colnames(hP)[c(1:7,20:28)]
cols <- c(1:7,20:28)
for (i in cols) {
  hP[i] <- rescale(hP[,i], to = c(0,4))
}
#summary(hP)

Run modified parallel analysis

Compare to the empirical data eigenvalue

There appear to be 7 factors

omega.pearson.hP7 <- 
  omega(R.pearson.hP,
        fm="ml",
        nfac=7,
        nobs=704)

print(omega.pearson.hP7)
Omega 
Call: omega(m = R.pearson.hP, nfactors = 7, fm = "ml", nobs = 704)
Alpha:                 0.95 
G.6:                   0.97 
Omega Hierarchical:    0.66 
Omega H asymptotic:    0.69 
Omega Total            0.96 

Schmid Leiman Factor loadings greater than  0.2 
                 g   F1*   F2*   F3*   F4*   F5*   F6*   F7*   h2   u2   p2
GAD_1         0.68                                0.48       0.70 0.30 0.66
GAD_2         0.72                                0.55       0.83 0.17 0.63
GAD_3         0.71                                0.52       0.78 0.22 0.65
GAD_4         0.69                                0.46       0.69 0.31 0.68
GAD_5         0.58                                0.29       0.46 0.54 0.72
GAD_6         0.61                                0.31       0.50 0.50 0.75
GAD_7         0.59                                0.36       0.50 0.50 0.69
OCIR2         0.37              0.42                         0.37 0.63 0.37
OCIR3         0.31              0.70                         0.59 0.41 0.16
OCIR5         0.25              0.63                         0.47 0.53 0.14
OCIR6         0.61              0.28              0.23       0.53 0.47 0.70
OCIR8         0.34              0.54                         0.43 0.57 0.27
OCIR9         0.37              0.65                         0.57 0.43 0.25
OCIR11        0.33              0.62                         0.50 0.50 0.22
OCIR12        0.58              0.36                         0.53 0.47 0.65
OCIR14        0.25              0.47                         0.32 0.68 0.19
OCIR15        0.27              0.71                         0.59 0.41 0.12
OCIR17        0.24              0.61                         0.44 0.56 0.13
OCIR18        0.50              0.34                         0.42 0.58 0.60
DEP1          0.55        0.41                               0.49 0.51 0.62
DEP2          0.63        0.37                               0.60 0.40 0.66
DEP3          0.53        0.37                               0.46 0.54 0.62
DEP4          0.56        0.40                               0.52 0.48 0.61
DEP5          0.52        0.34                               0.43 0.57 0.63
DEP6          0.58        0.38                               0.51 0.49 0.67
DEP7          0.50        0.30                               0.37 0.63 0.68
DEP8          0.45        0.28                               0.29 0.71 0.69
DEP9          0.36        0.28                               0.24 0.76 0.55
SIAS1         0.32  0.49                                     0.37 0.63 0.27
SIAS2         0.32  0.51                                     0.38 0.62 0.26
SIAS3         0.36  0.46                                     0.34 0.66 0.38
SIAS4         0.44  0.50                                     0.50 0.50 0.40
SIAS5         0.21                                      0.46 0.29 0.71 0.15
SIAS6         0.42  0.52                                     0.46 0.54 0.38
SIAS7         0.45  0.62                                     0.64 0.36 0.32
SIAS8         0.38  0.47                                     0.38 0.62 0.37
SIAS9         0.20                                      0.48 0.34 0.66 0.12
SIAS10        0.43  0.62                                     0.62 0.38 0.30
SIAS11                                                  0.41 0.22 0.78 0.07
SIAS12        0.42  0.64                                     0.58 0.42 0.31
SIAS13        0.25  0.35                                     0.22 0.78 0.28
SIAS14        0.33  0.50                                     0.39 0.61 0.28
SIAS15        0.48  0.69                                     0.71 0.29 0.33
SIAS16        0.49  0.67                                     0.69 0.31 0.35
SIAS17        0.52  0.62                                     0.65 0.35 0.42
SIAS18        0.50  0.54                                     0.55 0.45 0.46
SIAS19        0.50  0.65                                     0.70 0.30 0.36
SIAS20        0.40  0.57                                     0.48 0.52 0.33
SIR2                                                         0.08 0.92 0.28
SIR4                                                    0.21 0.08 0.92 0.18
SIR6          0.30                    0.71                   0.58 0.42 0.16
SIR7          0.28                    0.65                   0.50 0.50 0.16
SIR9          0.36              0.24  0.34                   0.34 0.66 0.37
SIR11         0.27                    0.55                   0.41 0.59 0.17
SIR13         0.29                    0.70                   0.59 0.41 0.15
SIR14         0.37              0.20  0.47                   0.44 0.56 0.32
SIR16         0.35        0.25        0.35                   0.33 0.67 0.36
SIR17         0.36                    0.58                   0.48 0.52 0.27
SIR18         0.27                    0.53             -0.22 0.44 0.56 0.17
SIR19         0.33                    0.71                   0.62 0.38 0.18
SIR21         0.32                    0.56                   0.42 0.58 0.24
SIR23         0.30                    0.41                   0.29 0.71 0.31
ASRM1-        0.30                                      0.41 0.30 0.70 0.31
ASRM2-        0.28                                      0.26 0.21 0.79 0.37
ASRM3-                                                       0.03 0.97 0.05
ASRM4-                                                  0.36 0.18 0.82 0.05
ASRM5-                                                  0.47 0.26 0.74 0.05
NIDA_ALC                                    0.44       -0.26 0.33 0.67 0.00
NIDA_ALC_1                                  0.48             0.32 0.68 0.07
NIDA_ALC_2                                  0.22             0.08 0.92 0.30
NIDA_ALC_3                                  0.27             0.13 0.87 0.25
NIDA_DRUGS                                  0.85             0.73 0.27 0.01
NIDA_DRUGS_1                                0.86             0.77 0.23 0.04
NIDA_DRUGS_2                                0.50             0.31 0.69 0.07
NIDA_DRUGS_3                                0.56             0.37 0.63 0.09

With eigenvalues of:
   g  F1*  F2*  F3*  F4*  F5*  F6*  F7* 
12.0  5.6  1.4  3.9  4.0  2.7  1.6  1.8 

general/max  2.16   max/min =   3.97
mean percent general =  0.34    with sd =  0.21 and cv of  0.63 
Explained Common Variance of the general factor =  0.36 

The degrees of freedom are 2271  and the fit is  9.6 

The root mean square of the residuals is  0.04 
The df corrected root mean square of the residuals is  0.04

Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 2700  and the fit is  26.7 

The root mean square of the residuals is  0.12 
The df corrected root mean square of the residuals is  0.13 

Measures of factor score adequacy             
                                                 g  F1*  F2*  F3*  F4*  F5*  F6*  F7*
Correlation of scores with factors            0.87 0.92 0.75 0.93 0.94 0.95 0.73 0.87
Multiple R square of scores with factors      0.76 0.85 0.57 0.87 0.88 0.89 0.53 0.75
Minimum correlation of factor score estimates 0.53 0.70 0.14 0.74 0.76 0.79 0.07 0.50

 Total, General and Subset omega for each subset
                                                 g  F1*  F2*  F3*  F4*  F5*  F6*  F7*
Omega total for total scores and subscales    0.96 0.93 0.82 0.88 0.86 0.71 0.90 0.54
Omega general for total scores and subscales  0.66 0.33 0.57 0.29 0.22 0.05 0.64 0.10
Omega group for total scores and subscales    0.20 0.60 0.25 0.59 0.65 0.66 0.27 0.43
efa.pearson.hP7 <- fa(r = R.pearson.hP,nfac=7,rotate = "varimax", n.obs=704)
print(efa.pearson.hP7$loadings, cutoff = .3)

Loadings:
             MR2    MR1    MR4    MR3    MR5    MR6    MR7   
GAD_1                0.719                                   
GAD_2                0.779                                   
GAD_3                0.745                                   
GAD_4                0.760                                   
GAD_5                0.596                                   
GAD_6                0.590                                   
GAD_7                0.641                                   
OCIR2                              0.497                     
OCIR3                              0.731                     
OCIR5                              0.661                     
OCIR6                0.548         0.385                     
OCIR8                              0.615                     
OCIR9                              0.705                     
OCIR11                             0.683                     
OCIR12               0.454         0.452                     
OCIR14                             0.521                     
OCIR15                             0.741                     
OCIR17                             0.656                     
OCIR18               0.385         0.379                     
DEP1                 0.551                                   
DEP2                 0.622                                   
DEP3                 0.598                                   
DEP4                 0.588                                   
DEP5                 0.544                                   
DEP6                 0.558                                   
DEP7                 0.539                                   
DEP8                 0.475                                   
DEP9                 0.336                                   
SIAS1         0.574                                          
SIAS2         0.616                                          
SIAS3         0.557                                          
SIAS4         0.635                                          
SIAS5                                                   0.426
SIAS6         0.643                                          
SIAS7         0.744                                          
SIAS8         0.582                                          
SIAS9                                                   0.473
SIAS10        0.739                                          
SIAS11                                                  0.391
SIAS12        0.716                                          
SIAS13        0.406                                          
SIAS14        0.581                                          
SIAS15        0.791                                          
SIAS16        0.771                                          
SIAS17        0.718                                          
SIAS18        0.637                                          
SIAS19        0.771                                          
SIAS20        0.644                                          
SIR2                                                    0.479
SIR4                                                    0.481
SIR6                        0.702                            
SIR7                        0.643                            
SIR9                        0.433                            
SIR11                       0.615                            
SIR13                       0.727                            
SIR14                       0.528                            
SIR16                       0.415                            
SIR17                       0.636                            
SIR18                       0.625                            
SIR19                       0.761                            
SIR21                       0.632                            
SIR23                       0.467                            
ASRM1                                            0.688       
ASRM2                                            0.561       
ASRM3                                            0.301       
ASRM4                                            0.544       
ASRM5                                            0.545       
NIDA_ALC                                  0.490        -0.309
NIDA_ALC_1                                0.541              
NIDA_ALC_2                                0.306              
NIDA_ALC_3                                0.397              
NIDA_DRUGS                                0.750              
NIDA_DRUGS_1                              0.795              
NIDA_DRUGS_2                              0.571              
NIDA_DRUGS_3                              0.634              

                 MR2   MR1   MR4   MR3   MR5   MR6   MR7
SS loadings    8.747 7.947 5.191 5.055 3.028 1.951 1.737
Proportion Var 0.117 0.106 0.069 0.067 0.040 0.026 0.023
Cumulative Var 0.117 0.223 0.292 0.359 0.400 0.426 0.449
efa.pearson.hP7
Factor Analysis using method =  minres
Call: fa(r = R.pearson.hP, nfactors = 7, n.obs = 704, rotate = "varimax")
Standardized loadings (pattern matrix) based upon correlation matrix
               MR2   MR1   MR4   MR3   MR5   MR6   MR7   h2   u2 com
GAD_1         0.22  0.72  0.08  0.17  0.03 -0.14 -0.05 0.63 0.37 1.4
GAD_2         0.18  0.78  0.09  0.19  0.01 -0.11  0.03 0.70 0.30 1.3
GAD_3         0.19  0.74  0.17  0.19  0.00 -0.09  0.02 0.66 0.34 1.4
GAD_4         0.16  0.76  0.09  0.18  0.05 -0.06  0.00 0.65 0.35 1.3
GAD_5         0.13  0.60  0.16  0.24  0.11 -0.02 -0.04 0.47 0.53 1.7
GAD_6         0.20  0.59  0.18  0.21  0.12 -0.06  0.05 0.49 0.51 1.9
GAD_7         0.11  0.64  0.10  0.18  0.02 -0.05  0.13 0.49 0.51 1.4
OCIR2         0.11  0.24  0.20  0.50 -0.05  0.02  0.01 0.36 0.64 2.0
OCIR3         0.09  0.13  0.07  0.73  0.01  0.02 -0.03 0.57 0.43 1.1
OCIR5         0.07  0.08  0.06  0.66 -0.03 -0.06  0.09 0.46 0.54 1.1
OCIR6         0.19  0.55  0.19  0.38  0.11  0.02  0.08 0.54 0.46 2.5
OCIR8         0.14  0.16  0.15  0.61  0.02  0.03  0.04 0.45 0.55 1.4
OCIR9         0.13  0.18  0.12  0.71  0.09 -0.04 -0.02 0.57 0.43 1.3
OCIR11        0.06  0.15  0.12  0.68  0.01 -0.06  0.08 0.51 0.49 1.2
OCIR12        0.27  0.45  0.20  0.45  0.08  0.02  0.10 0.54 0.46 3.2
OCIR14        0.10  0.08  0.17  0.52 -0.06  0.05  0.11 0.33 0.67 1.5
OCIR15        0.08  0.07  0.07  0.74  0.02  0.04 -0.05 0.57 0.43 1.1
OCIR17        0.03  0.07  0.08  0.66 -0.06 -0.03  0.11 0.46 0.54 1.1
OCIR18        0.25  0.39  0.09  0.38  0.17  0.03  0.20 0.43 0.57 3.8
DEP1          0.20  0.55  0.11  0.05  0.12 -0.15  0.09 0.40 0.60 1.7
DEP2          0.29  0.62  0.11  0.03  0.05 -0.22  0.11 0.55 0.45 1.9
DEP3          0.15  0.60  0.08  0.04  0.14 -0.05 -0.04 0.41 0.59 1.3
DEP4          0.23  0.59  0.17  0.01  0.10 -0.05 -0.06 0.44 0.56 1.6
DEP5          0.20  0.54  0.13  0.02  0.19  0.01 -0.01 0.39 0.61 1.7
DEP6          0.30  0.56  0.13  0.04  0.11 -0.05  0.13 0.45 0.55 1.9
DEP7          0.20  0.54  0.13  0.00  0.10  0.00  0.04 0.36 0.64 1.5
DEP8          0.15  0.48  0.09  0.08  0.07 -0.01  0.12 0.28 0.72 1.5
DEP9          0.15  0.34  0.03  0.10  0.16 -0.07  0.13 0.19 0.81 2.6
SIAS1         0.57  0.11  0.14  0.06 -0.07 -0.02 -0.06 0.37 0.63 1.3
SIAS2         0.62  0.09  0.08  0.03  0.01 -0.02  0.11 0.41 0.59 1.1
SIAS3         0.56  0.21  0.06 -0.02  0.02 -0.04 -0.03 0.36 0.64 1.3
SIAS4         0.64  0.23  0.12  0.04 -0.01 -0.10  0.16 0.51 0.49 1.5
SIAS5         0.23  0.09 -0.01  0.05  0.01 -0.26  0.43 0.31 0.69 2.4
SIAS6         0.64  0.18  0.11  0.11  0.04  0.00  0.06 0.48 0.52 1.3
SIAS7         0.74  0.18  0.04  0.11  0.02 -0.10  0.17 0.64 0.36 1.3
SIAS8         0.58  0.17  0.09  0.08  0.03 -0.02  0.08 0.39 0.61 1.3
SIAS9         0.28  0.05 -0.01  0.07 -0.04 -0.22  0.47 0.36 0.64 2.2
SIAS10        0.74  0.17  0.06  0.04  0.00 -0.08  0.19 0.62 0.38 1.3
SIAS11        0.20  0.00 -0.02  0.02  0.02 -0.20  0.39 0.23 0.77 2.1
SIAS12        0.72  0.18  0.10  0.07  0.01  0.00 -0.01 0.56 0.44 1.2
SIAS13        0.41  0.09  0.15  0.10 -0.03  0.14  0.01 0.22 0.78 1.8
SIAS14        0.58  0.07  0.13  0.15  0.02 -0.08  0.04 0.39 0.61 1.3
SIAS15        0.79  0.19  0.12  0.07  0.03 -0.10  0.06 0.70 0.30 1.2
SIAS16        0.77  0.20  0.10  0.11  0.03 -0.15  0.02 0.68 0.32 1.3
SIAS17        0.72  0.26  0.15  0.12  0.02 -0.05  0.04 0.63 0.37 1.4
SIAS18        0.64  0.29  0.12  0.14  0.00 -0.03  0.00 0.53 0.47 1.6
SIAS19        0.77  0.23  0.09  0.11 -0.04 -0.07  0.15 0.69 0.31 1.4
SIAS20        0.64  0.18  0.09  0.05  0.10 -0.05 -0.09 0.48 0.52 1.3
SIR2          0.01  0.12  0.07  0.09 -0.01  0.11  0.48 0.27 0.73 1.3
SIR4         -0.01  0.09  0.11  0.07 -0.01  0.10  0.48 0.26 0.74 1.3
SIR6          0.10  0.10  0.70  0.09  0.01 -0.02  0.05 0.53 0.47 1.1
SIR7          0.14  0.07  0.64  0.11  0.03  0.01  0.05 0.46 0.54 1.2
SIR9          0.13  0.19  0.43  0.29  0.12  0.05 -0.03 0.34 0.66 2.7
SIR11         0.12  0.07  0.62  0.15  0.05  0.05  0.00 0.42 0.58 1.2
SIR13         0.13  0.07  0.73  0.12 -0.02  0.00  0.04 0.57 0.43 1.2
SIR14         0.14  0.19  0.53  0.26  0.04  0.08  0.18 0.44 0.56 2.3
SIR16         0.06  0.24  0.42  0.15  0.15  0.12  0.15 0.32 0.68 2.9
SIR17         0.16  0.19  0.64  0.06  0.05  0.00  0.02 0.47 0.53 1.3
SIR18         0.09  0.11  0.63  0.08  0.10  0.04 -0.19 0.46 0.54 1.4
SIR19         0.13  0.13  0.76  0.08  0.03  0.04 -0.02 0.62 0.38 1.2
SIR21         0.10  0.18  0.63  0.00  0.04 -0.03  0.00 0.45 0.55 1.2
SIR23         0.12  0.16  0.47  0.10  0.05  0.08  0.13 0.29 0.71 1.8
ASRM1        -0.09 -0.27  0.01 -0.03  0.00  0.69 -0.06 0.56 0.44 1.4
ASRM2        -0.21 -0.21 -0.03  0.01  0.07  0.56  0.02 0.41 0.59 1.6
ASRM3         0.04 -0.05  0.03  0.03  0.00  0.30  0.09 0.10 0.90 1.3
ASRM4        -0.11 -0.02  0.11 -0.02  0.01  0.54 -0.06 0.33 0.67 1.2
ASRM5        -0.07 -0.05  0.09 -0.01  0.03  0.54 -0.18 0.35 0.65 1.3
NIDA_ALC     -0.09  0.07 -0.01 -0.13  0.49  0.07 -0.31 0.37 0.63 2.0
NIDA_ALC_1    0.03  0.14  0.07 -0.06  0.54  0.08 -0.17 0.36 0.64 1.5
NIDA_ALC_2    0.02  0.12  0.08  0.05  0.31  0.04  0.05 0.12 0.88 1.6
NIDA_ALC_3    0.04  0.12  0.16  0.00  0.40  0.04  0.06 0.21 0.79 1.6
NIDA_DRUGS    0.00  0.06 -0.05 -0.03  0.75 -0.01 -0.14 0.59 0.41 1.1
NIDA_DRUGS_1  0.01  0.11 -0.02  0.03  0.79  0.00 -0.05 0.65 0.35 1.1
NIDA_DRUGS_2 -0.02  0.07  0.10 -0.01  0.57 -0.05  0.14 0.36 0.64 1.2
NIDA_DRUGS_3  0.02  0.09  0.01  0.08  0.63 -0.08  0.15 0.45 0.55 1.2

                       MR2  MR1  MR4  MR3  MR5  MR6  MR7
SS loadings           8.75 7.95 5.19 5.05 3.03 1.95 1.74
Proportion Var        0.12 0.11 0.07 0.07 0.04 0.03 0.02
Cumulative Var        0.12 0.22 0.29 0.36 0.40 0.43 0.45
Proportion Explained  0.26 0.24 0.15 0.15 0.09 0.06 0.05
Cumulative Proportion 0.26 0.50 0.65 0.80 0.89 0.95 1.00

Mean item complexity =  1.6
Test of the hypothesis that 7 factors are sufficient.

The degrees of freedom for the null model are  2775  and the objective function was  42.74 with Chi Square of  28942.19
The degrees of freedom for the model are 2271  and the objective function was  9.93 

The root mean square of the residuals (RMSR) is  0.03 
The df corrected root mean square of the residuals is  0.04 

The harmonic number of observations is  704 with the empirical chi square  4608.58  with prob <  0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029 
The total number of observations was  704  with Likelihood Chi Square =  6676.96  with prob <  0 

Tucker Lewis Index of factoring reliability =  0.793
RMSEA index =  0.054  and the 90 % confidence intervals are  0.051 NA
BIC =  -8213.48
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy             
                                                   MR2  MR1  MR4  MR3  MR5  MR6  MR7
Correlation of (regression) scores with factors   0.96 0.95 0.94 0.94 0.92 0.86 0.83
Multiple R square of scores with factors          0.93 0.90 0.88 0.88 0.85 0.74 0.69
Minimum correlation of possible factor scores     0.85 0.80 0.76 0.76 0.69 0.48 0.39

remove items that crossload and reverse-coded items (all load onto 1 factor)

SIR2, SIR4, SIAS5, SIAS9, SIAS11, OCIR6, OCIR12, OCIR18

 [1] "GAD_1"        "GAD_2"        "GAD_3"        "GAD_4"        "GAD_5"        "GAD_6"        "GAD_7"        "OCIR2"       
 [9] "OCIR3"        "OCIR5"        "OCIR8"        "OCIR9"        "OCIR11"       "OCIR14"       "OCIR15"       "OCIR17"      
[17] "DEP1"         "DEP2"         "DEP3"         "DEP4"         "DEP5"         "DEP6"         "DEP7"         "DEP8"        
[25] "DEP9"         "SIAS1"        "SIAS2"        "SIAS3"        "SIAS4"        "SIAS6"        "SIAS7"        "SIAS8"       
[33] "SIAS10"       "SIAS12"       "SIAS13"       "SIAS14"       "SIAS15"       "SIAS16"       "SIAS17"       "SIAS18"      
[41] "SIAS19"       "SIAS20"       "SIR6"         "SIR7"         "SIR9"         "SIR11"        "SIR13"        "SIR14"       
[49] "SIR16"        "SIR17"        "SIR18"        "SIR19"        "SIR21"        "SIR23"        "ASRM1"        "ASRM2"       
[57] "ASRM3"        "ASRM4"        "ASRM5"        "NIDA_ALC"     "NIDA_ALC_1"   "NIDA_ALC_2"   "NIDA_ALC_3"   "NIDA_DRUGS"  
[65] "NIDA_DRUGS_1" "NIDA_DRUGS_2" "NIDA_DRUGS_3"
R.pearson.hPr <- hetcor(hPr, use="pairwise.complete.obs")$correlations
#R.pearson.hPr
eigens.pearson.hPr <- eigen(R.pearson.hPr)$values
eigens.pearson.hPr
 [1] 15.7146125  5.0308274  4.2157633  3.7077777  2.7953687  1.9890173  1.5959327  1.3681237  1.2994276  1.2032291  1.1237357
[12]  1.0641888  1.0049324  0.9639962  0.9272568  0.8930907  0.8721258  0.8122590  0.7961456  0.7745626  0.7086454  0.6880797
[23]  0.6670648  0.6582057  0.6469750  0.6285757  0.6213053  0.6102711  0.5916605  0.5795300  0.5749531  0.5641600  0.5315302
[34]  0.5036780  0.5014120  0.4774275  0.4675170  0.4544031  0.4327167  0.4161140  0.4047457  0.3959330  0.3906160  0.3846323
[45]  0.3709423  0.3547233  0.3393680  0.3319122  0.3192917  0.3094467  0.2997742  0.2943438  0.2913407  0.2853267  0.2795400
[56]  0.2706721  0.2552593  0.2461469  0.2352455  0.2144841  0.2125263  0.2010595  0.1978867  0.1754048  0.1651896  0.1577544
[67]  0.1398358
options(scipen=999)
plot(eigens.pearson.hPr,pch=16,xlab="",ylab="Eigenvalue", main = "Eigenvalues for Item Level Data")


Attaching package: ‘MASS’

The following object is masked from ‘package:dplyr’:

    select

Compare to the empirical data eigenvalue

eigens <- eigen(R.pearson.hPr)$values
eigens

plot(eigens,pch=15,ylab="Eigenvalue",xlab="",ylim=c(0,18),cex=.5, main="Comparison of Simulated Eigenvalues \n(95th Percentile) and Empirical Eigenvalues")

points(15,quant95_15,pch=5,cex=.5)
points(14,quant95_14,pch=5,cex=.5)
points(13,quant95_13,pch=5,cex=.5)
points(12,quant95_12,pch=5,cex=.5)
points(11,quant95_11,pch=5,cex=.5)
points(10,quant95_10,pch=5,cex=.5)
points(9,quant95_9,pch=5,cex=.5)
points(8,quant95_8,pch=5,cex=.5)
points(7,quant95_7,pch=5,cex=.5)
points(6,quant95_6,pch=5,cex=.5)
points(5,quant95_5,pch=5,cex=.5)
points(4,quant95_4,pch=5,cex=.5)

There appear to be 6 factors

omega.pearson.hPr6 <- 
  omega(R.pearson.hPr,
        fm="ml",
        nfac=6,
        nobs=704)
Loading required namespace: GPArotation

print(omega.pearson.hPr6)
Omega 
Call: omega(m = R.pearson.hPr, nfactors = 6, fm = "ml", nobs = 704)
Alpha:                 0.94 
G.6:                   0.97 
Omega Hierarchical:    0.66 
Omega H asymptotic:    0.68 
Omega Total            0.96 

Schmid Leiman Factor loadings greater than  0.2 
                 g   F1*   F2*   F3*   F4*   F5*   F6*   h2   u2   p2
GAD_1         0.68                                0.48 0.70 0.30 0.66
GAD_2         0.72                                0.55 0.82 0.18 0.63
GAD_3         0.71                                0.52 0.78 0.22 0.65
GAD_4         0.68                                0.47 0.69 0.31 0.66
GAD_5         0.57                                0.30 0.46 0.54 0.70
GAD_6         0.61                                0.31 0.51 0.49 0.74
GAD_7         0.58                                0.37 0.49 0.51 0.69
OCIR2         0.37                    0.41             0.37 0.63 0.37
OCIR3         0.31                    0.71             0.60 0.40 0.16
OCIR5         0.26                    0.63             0.46 0.54 0.14
OCIR8         0.34                    0.53             0.42 0.58 0.27
OCIR9         0.38                    0.67             0.59 0.41 0.25
OCIR11        0.33                    0.61             0.49 0.51 0.22
OCIR14        0.25                    0.47             0.31 0.69 0.20
OCIR15        0.28                    0.72             0.61 0.39 0.12
OCIR17        0.24                    0.60             0.43 0.57 0.14
DEP1          0.54              0.45                   0.51 0.49 0.57
DEP2          0.62              0.43                   0.62 0.38 0.62
DEP3          0.51              0.32                   0.41 0.59 0.64
DEP4          0.54              0.33                   0.45 0.55 0.66
DEP5          0.50              0.28                   0.39 0.61 0.65
DEP6          0.57              0.39                   0.51 0.49 0.64
DEP7          0.48              0.26                   0.34 0.66 0.68
DEP8          0.44              0.29                   0.29 0.71 0.67
DEP9          0.35              0.32                   0.24 0.76 0.52
SIAS1         0.33  0.48                               0.36 0.64 0.29
SIAS2         0.32  0.52                               0.38 0.62 0.27
SIAS3         0.36  0.45                               0.34 0.66 0.38
SIAS4         0.45  0.52                               0.49 0.51 0.41
SIAS6         0.43  0.52                               0.46 0.54 0.40
SIAS7         0.46  0.64                               0.63 0.37 0.33
SIAS8         0.39  0.48                               0.38 0.62 0.39
SIAS10        0.44  0.64                               0.61 0.39 0.32
SIAS12        0.42  0.62                               0.56 0.44 0.32
SIAS13        0.25  0.33                               0.21 0.79 0.30
SIAS14        0.34  0.51                               0.39 0.61 0.29
SIAS15        0.49  0.69                               0.71 0.29 0.33
SIAS16        0.50  0.67                               0.69 0.31 0.36
SIAS17        0.52  0.60                               0.64 0.36 0.42
SIAS18        0.50  0.52                               0.53 0.47 0.47
SIAS19        0.51  0.66                               0.70 0.30 0.37
SIAS20        0.40  0.55                               0.47 0.53 0.34
SIR6          0.31        0.66                         0.53 0.47 0.18
SIR7          0.29        0.60                         0.46 0.54 0.18
SIR9          0.36        0.36        0.25             0.35 0.65 0.37
SIR11         0.27        0.57                         0.42 0.58 0.17
SIR13         0.30        0.68                         0.57 0.43 0.16
SIR14         0.37        0.47                         0.42 0.58 0.32
SIR16         0.33        0.38  0.22                   0.32 0.68 0.35
SIR17         0.36        0.59                         0.48 0.52 0.27
SIR18         0.27        0.58                         0.42 0.58 0.17
SIR19         0.34        0.71                         0.63 0.37 0.18
SIR21         0.32        0.58                         0.43 0.57 0.23
SIR23         0.29        0.43                         0.28 0.72 0.30
ASRM1-        0.31              0.26                   0.21 0.79 0.46
ASRM2-        0.29                                     0.17 0.83 0.48
ASRM3-                                                 0.03 0.97 0.06
ASRM4-                   -0.20                         0.09 0.91 0.11
ASRM5-                                                 0.10 0.90 0.15
NIDA_ALC                                    0.48       0.28 0.72 0.00
NIDA_ALC_1                                  0.51       0.31 0.69 0.07
NIDA_ALC_2                                  0.23       0.08 0.92 0.25
NIDA_ALC_3                                  0.28       0.13 0.87 0.22
NIDA_DRUGS                                  0.85       0.72 0.28 0.01
NIDA_DRUGS_1                                0.86       0.77 0.23 0.03
NIDA_DRUGS_2                                0.47       0.28 0.72 0.07
NIDA_DRUGS_3                                0.53       0.33 0.67 0.10

With eigenvalues of:
   g  F1*  F2*  F3*  F4*  F5*  F6* 
10.8  5.5  4.1  1.5  3.5  2.8  1.6 

general/max  1.99   max/min =   3.7
mean percent general =  0.35    with sd =  0.2 and cv of  0.59 
Explained Common Variance of the general factor =  0.36 

The degrees of freedom are 1824  and the fit is  8.14 

The root mean square of the residuals is  0.04 
The df corrected root mean square of the residuals is  0.04

Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 2144  and the fit is  23.67 

The root mean square of the residuals is  0.13 
The df corrected root mean square of the residuals is  0.13 

Measures of factor score adequacy             
                                                 g  F1*  F2*  F3*  F4*  F5*  F6*
Correlation of scores with factors            0.86 0.91 0.93 0.78 0.93 0.94 0.72
Multiple R square of scores with factors      0.75 0.82 0.86 0.61 0.86 0.89 0.51
Minimum correlation of factor score estimates 0.49 0.64 0.73 0.22 0.72 0.77 0.03

 Total, General and Subset omega for each subset
                                                 g  F1*  F2*  F3*  F4*  F5*  F6*
Omega total for total scores and subscales    0.96 0.93 0.86 0.79 0.86 0.71 0.90
Omega general for total scores and subscales  0.66 0.35 0.23 0.52 0.18 0.04 0.63
Omega group for total scores and subscales    0.22 0.59 0.63 0.27 0.68 0.67 0.28

efa.pearson.hPr6 <- fa(hPr,nfac=6,rotate = "varimax", scores="regression")
print(efa.pearson.hPr6$loadings, cutoff = .3)

Loadings:
             MR1    MR3    MR2    MR4    MR5    MR6   
GAD_1                0.727                            
GAD_2                0.783                            
GAD_3                0.750                            
GAD_4                0.763                            
GAD_5                0.599                            
GAD_6                0.598                            
GAD_7                0.624                            
OCIR2                              0.495              
OCIR3                              0.730              
OCIR5                              0.664              
OCIR8                              0.613              
OCIR9                              0.702              
OCIR11                             0.687              
OCIR14                             0.528              
OCIR15                             0.739              
OCIR17                             0.659              
DEP1                 0.542                            
DEP2          0.303  0.616                            
DEP3                 0.600                            
DEP4                 0.585                            
DEP5                 0.544                            
DEP6          0.312  0.540                            
DEP7                 0.530                            
DEP8                 0.463                            
DEP9                 0.314                            
SIAS1         0.572                                   
SIAS2         0.622                                   
SIAS3         0.558                                   
SIAS4         0.646                                   
SIAS6         0.648                                   
SIAS7         0.754                                   
SIAS8         0.590                                   
SIAS10        0.750                                   
SIAS12        0.715                                   
SIAS13        0.408                                   
SIAS14        0.584                                   
SIAS15        0.796                                   
SIAS16        0.770                                   
SIAS17        0.725                                   
SIAS18        0.638                                   
SIAS19        0.780                                   
SIAS20        0.638                                   
SIR6                        0.703                     
SIR7                        0.647                     
SIR9                        0.437                     
SIR11                       0.617                     
SIR13                       0.728                     
SIR14                       0.546                     
SIR16                       0.433                     
SIR17                       0.638                     
SIR18                       0.609                     
SIR19                       0.757                     
SIR21                       0.632                     
SIR23                       0.475                     
ASRM1                                            0.679
ASRM2                                            0.514
ASRM3                                                 
ASRM4                                            0.559
ASRM5                                            0.582
NIDA_ALC                                  0.505       
NIDA_ALC_1                                0.557       
NIDA_ALC_2                                0.302       
NIDA_ALC_3                                0.393       
NIDA_DRUGS                                0.758       
NIDA_DRUGS_1                              0.802       
NIDA_DRUGS_2                              0.560       
NIDA_DRUGS_3                              0.617       

                 MR1   MR3   MR2   MR4   MR5   MR6
SS loadings    8.577 7.135 5.181 4.545 3.012 1.857
Proportion Var 0.128 0.106 0.077 0.068 0.045 0.028
Cumulative Var 0.128 0.235 0.312 0.380 0.425 0.452
efa.pearson.hPr6
Factor Analysis using method =  minres
Call: fa(r = hPr, nfactors = 6, rotate = "varimax", scores = "regression")
Standardized loadings (pattern matrix) based upon correlation matrix
               MR1   MR3   MR2   MR4   MR5   MR6    h2   u2 com
GAD_1         0.23  0.73  0.08  0.16  0.04 -0.09 0.621 0.38 1.4
GAD_2         0.19  0.78  0.10  0.19  0.02 -0.09 0.702 0.30 1.3
GAD_3         0.20  0.75  0.17  0.18  0.00 -0.06 0.668 0.33 1.4
GAD_4         0.17  0.76  0.10  0.18  0.06 -0.03 0.655 0.34 1.3
GAD_5         0.14  0.60  0.16  0.24  0.12  0.01 0.473 0.53 1.7
GAD_6         0.21  0.60  0.19  0.22  0.12 -0.04 0.501 0.50 1.9
GAD_7         0.13  0.62  0.12  0.18  0.01 -0.10 0.464 0.54 1.4
OCIR2         0.12  0.25  0.20  0.50 -0.05  0.06 0.366 0.63 2.0
OCIR3         0.10  0.13  0.07  0.73  0.02  0.05 0.568 0.43 1.1
OCIR5         0.08  0.08  0.07  0.66 -0.03 -0.07 0.464 0.54 1.1
OCIR8         0.14  0.16  0.15  0.61  0.02  0.04 0.446 0.55 1.4
OCIR9         0.13  0.18  0.12  0.70  0.10 -0.02 0.567 0.43 1.3
OCIR11        0.07  0.14  0.13  0.69  0.01 -0.09 0.520 0.48 1.2
OCIR14        0.11  0.08  0.18  0.53 -0.07  0.03 0.332 0.67 1.4
OCIR15        0.08  0.08  0.08  0.74  0.02  0.07 0.570 0.43 1.1
OCIR17        0.04  0.07  0.09  0.66 -0.07 -0.05 0.457 0.54 1.1
DEP1          0.21  0.54  0.13  0.06  0.12 -0.19 0.408 0.59 1.8
DEP2          0.30  0.62  0.12  0.04  0.05 -0.25 0.554 0.45 2.0
DEP3          0.15  0.60  0.08  0.04  0.15 -0.02 0.415 0.58 1.3
DEP4          0.23  0.58  0.18  0.01  0.12 -0.04 0.440 0.56 1.6
DEP5          0.20  0.54  0.14  0.02  0.19  0.01 0.393 0.61 1.7
DEP6          0.31  0.54  0.15  0.05  0.11 -0.12 0.439 0.56 2.0
DEP7          0.20  0.53  0.14  0.00  0.10 -0.01 0.354 0.65 1.5
DEP8          0.16  0.46  0.11  0.09  0.06 -0.05 0.266 0.73 1.5
DEP9          0.16  0.31  0.05  0.10  0.15 -0.16 0.186 0.81 3.0
SIAS1         0.57  0.11  0.13  0.05 -0.06  0.00 0.363 0.64 1.2
SIAS2         0.62  0.08  0.09  0.03  0.01 -0.04 0.403 0.60 1.1
SIAS3         0.56  0.20  0.06 -0.03  0.02 -0.04 0.357 0.64 1.3
SIAS4         0.65  0.22  0.13  0.05 -0.01 -0.13 0.500 0.50 1.4
SIAS6         0.65  0.17  0.11  0.12  0.04 -0.02 0.479 0.52 1.3
SIAS7         0.75  0.17  0.05  0.12  0.01 -0.12 0.629 0.37 1.2
SIAS8         0.59  0.16  0.10  0.08  0.03 -0.05 0.393 0.61 1.3
SIAS10        0.75  0.16  0.07  0.05 -0.01 -0.11 0.609 0.39 1.2
SIAS12        0.71  0.17  0.09  0.06  0.02  0.03 0.555 0.45 1.2
SIAS13        0.41  0.08  0.15  0.09 -0.02  0.13 0.221 0.78 1.7
SIAS14        0.58  0.06  0.13  0.14  0.02 -0.08 0.388 0.61 1.3
SIAS15        0.80  0.19  0.12  0.07  0.02 -0.09 0.694 0.31 1.2
SIAS16        0.77  0.21  0.09  0.11  0.03 -0.11 0.668 0.33 1.3
SIAS17        0.72  0.25  0.15  0.11  0.02 -0.05 0.627 0.37 1.4
SIAS18        0.64  0.29  0.12  0.13  0.00  0.00 0.522 0.48 1.6
SIAS19        0.78  0.22  0.10  0.12 -0.04 -0.08 0.689 0.31 1.3
SIAS20        0.64  0.18  0.08  0.03  0.11 -0.01 0.458 0.54 1.3
SIR6          0.10  0.10  0.70  0.09  0.01  0.00 0.524 0.48 1.1
SIR7          0.14  0.07  0.65  0.11  0.03  0.02 0.457 0.54 1.2
SIR9          0.12  0.19  0.44  0.30  0.12  0.06 0.349 0.65 2.7
SIR11         0.12  0.06  0.62  0.14  0.05  0.06 0.422 0.58 1.2
SIR13         0.14  0.06  0.73  0.12 -0.02  0.01 0.568 0.43 1.1
SIR14         0.15  0.17  0.55  0.26  0.03  0.02 0.417 0.58 1.8
SIR16         0.07  0.22  0.43  0.16  0.14  0.05 0.289 0.71 2.2
SIR17         0.16  0.19  0.64  0.05  0.05  0.01 0.472 0.53 1.3
SIR18         0.08  0.11  0.61  0.06  0.11  0.10 0.416 0.58 1.2
SIR19         0.13  0.12  0.76  0.08  0.03  0.05 0.615 0.38 1.2
SIR21         0.10  0.17  0.63 -0.01  0.05 -0.03 0.442 0.56 1.2
SIR23         0.13  0.14  0.47  0.11  0.05  0.03 0.278 0.72 1.5
ASRM1        -0.10 -0.27  0.01 -0.03  0.00  0.68 0.546 0.45 1.4
ASRM2        -0.22 -0.22 -0.02  0.01  0.06  0.51 0.364 0.64 1.8
ASRM3         0.04 -0.05  0.03  0.04 -0.01  0.28 0.086 0.91 1.2
ASRM4        -0.12 -0.01  0.11 -0.02  0.02  0.56 0.340 0.66 1.2
ASRM5        -0.09 -0.05  0.08 -0.02  0.04  0.58 0.358 0.64 1.1
NIDA_ALC     -0.10  0.07 -0.02 -0.15  0.50  0.13 0.311 0.69 1.5
NIDA_ALC_1    0.02  0.15  0.06 -0.07  0.56  0.13 0.358 0.64 1.3
NIDA_ALC_2    0.03  0.11  0.08  0.04  0.30  0.04 0.114 0.89 1.5
NIDA_ALC_3    0.05  0.11  0.16  0.00  0.39  0.03 0.197 0.80 1.6
NIDA_DRUGS   -0.01  0.05 -0.06 -0.04  0.76  0.02 0.583 0.42 1.0
NIDA_DRUGS_1  0.01  0.10 -0.02  0.03  0.80  0.01 0.655 0.35 1.0
NIDA_DRUGS_2 -0.01  0.05  0.12  0.01  0.56 -0.12 0.346 0.65 1.2
NIDA_DRUGS_3  0.04  0.07  0.03  0.10  0.62 -0.15 0.419 0.58 1.2

                       MR1  MR3  MR2  MR4  MR5  MR6
SS loadings           8.58 7.14 5.18 4.54 3.01 1.86
Proportion Var        0.13 0.11 0.08 0.07 0.04 0.03
Cumulative Var        0.13 0.23 0.31 0.38 0.42 0.45
Proportion Explained  0.28 0.24 0.17 0.15 0.10 0.06
Cumulative Proportion 0.28 0.52 0.69 0.84 0.94 1.00

Mean item complexity =  1.4
Test of the hypothesis that 6 factors are sufficient.

The degrees of freedom for the null model are  2211  and the objective function was  38.06 with Chi Square of  25872.08
The degrees of freedom for the model are 1824  and the objective function was  8.37 

The root mean square of the residuals (RMSR) is  0.04 
The df corrected root mean square of the residuals is  0.04 

The harmonic number of observations is  698 with the empirical chi square  3834.74  with prob <  0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058 
The total number of observations was  704  with Likelihood Chi Square =  5657.13  with prob <  0 

Tucker Lewis Index of factoring reliability =  0.802
RMSEA index =  0.056  and the 90 % confidence intervals are  0.053 0.056
BIC =  -6302.43
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy             
                                                   MR1  MR3  MR2  MR4  MR5  MR6
Correlation of (regression) scores with factors   0.96 0.95 0.94 0.94 0.92 0.86
Multiple R square of scores with factors          0.93 0.90 0.88 0.88 0.85 0.73
Minimum correlation of possible factor scores     0.86 0.79 0.76 0.75 0.69 0.47

LS0tCnRpdGxlOiAiQUJDVF8xMDI2MTgiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyLCBpbmNsdWRlPUZ9CnJlcXVpcmUocHN5Y2gpCnJlcXVpcmUoZHBseXIpCnJlcXVpcmUoYm9vdCkKcmVxdWlyZShwb2x5Y29yKQpyZXF1aXJlKGNhcikKcmVxdWlyZShNQkVTUykKbGlicmFyeShJVEVNQU4pCmxpYnJhcnkobGF2YWFuKQpgYGAKCiMjSW1wb3J0IGFuZCBtZXJnZSBkYXRhCmBgYHtyfQpoZWFsdGh5VSA8LSByZWFkLmNzdigiSGVhbHRoeVVUMWl0ZW1sZXZlbC5jc3YiKQpoZWFkKGhlYWx0aHlVKQojY29sbmFtZXMoaGVhbHRoeVUpCgpoVSA8LSBoZWFsdGh5VVtjKDEsOTk6MTA1LDEzNDoxNTQsMjA5OjI0MiwyOTI6Mjk2KV0KaGVhZChoVSkKI2NvbG5hbWVzKGhVKQoKI0ltcG9ydCBkYXRhIGZyb20gSFUgdGltZSAzIHRvIGdldCBkcnVnCmh1VDMgPC0gcmVhZC5jc3YoImhlYWx0aHlVVDNfY2xlYW4uY3N2IikKaHVUM2RydWcgPC0gaHVUM1tjKDEsMjAyOjIwNSldCgojSW1wb3J0IGRhdGEgZnJvbSBIVSB0aW1lIDIgdG8gZ2V0IGFsY29ob2wKaHVUMiA8LSByZWFkLmNzdigiaGVhbHRoeVVUMl9jbGVhbi5jc3YiKQpodVQyYWxjIDwtIGh1VDJbYygxLDE4OToxOTIpXQoKaFUgPC0gZnVsbF9qb2luKGhVLGh1VDJhbGMpCmhVIDwtIGZ1bGxfam9pbihoVSwgaHVUM2RydWcpCgojQUREIEFMQy9EUlVHUyBGT1IgUFJFVEVTVElORwpwdGZhbGwyMDE4IDwtIHJlYWQuY3N2KCJQU1lQcmV0ZXN0aW5nRmFsbDIwMThTZXB0ZW1iZXI0cmVkdWNlZG92ZXIxcGVyY2VudC5jc3YiLCBoZWFkZXIgPSBULCBuYS5zdHJpbmdzID0gIiIpCiNjb2xuYW1lcyhwdGZhbGwyMDE4KQpwcmVUIDwtIHB0ZmFsbDIwMThbYygxLDg2OjkyLDE4MToxOTIsOTQ6MTAyLDEwNDoxMjMsMTU4LDE2MCwxNjIsMTYzLDE2NSwxNjcsMTY5LDE3MCwxNzIsMTczLDE3NCwxNzUsMTc3LDE3OSwyMDE6MjA1LDE5MzoyMDApXQpoZWFkKHByZVQpCgojY29sbmFtZXMocHJlVCkKI2NvbG5hbWVzKGhVKQpjb2xuYW1lcyhoVSlbYyg2NDo2OCldIDwtIGMoIkFTUk0xIiwiQVNSTTIiLCJBU1JNMyIsIkFTUk00IiwiQVNSTTUiKQoKY29sbmFtZXMocHJlVCkgPC0gY29sbmFtZXMoaFUpCgpoVSRJRCA8LSBhcy5mYWN0b3IoaFUkSUQpCnByZVQkSUQgPC0gYXMuZmFjdG9yKHByZVQkSUQpCgpoVVByZVQgPC0gZnVsbF9qb2luKGhVLHByZVQpCnN0cihoVVByZVQpCmhVUHJlVCRJRCA8LSBhcy5mYWN0b3IoaFVQcmVUJElEKQpgYGAKCiMjUmVjb2RlIHZhcmlhYmxlcwpgYGB7cn0KI1NJUgpoVVByZVQkU0lSMnIgPC0gNCAtIGhVUHJlVCRTSVIyCmhVUHJlVCRTSVI0ciA8LSA0IC0gaFVQcmVUJFNJUjQKI3N1bW1hcnkoaFVQcmVUKQojU0lBUwpoVVByZVQkU0lBUzVyIDwtIDQgLSBoVVByZVQkU0lBUzUKaFVQcmVUJFNJQVM5ciA8LSA0IC0gaFVQcmVUJFNJQVM5CmhVUHJlVCRTSUFTMTFyIDwtIDQgLSBoVVByZVQkU0lBUzExCgpoVVByZVQkU0lSMiA8LSBoVVByZVQkU0lSMnIKaFVQcmVUJFNJUjQgPC0gaFVQcmVUJFNJUjRyCmhVUHJlVCRTSUFTNSA8LSBoVVByZVQkU0lBUzVyCmhVUHJlVCRTSUFTOSA8LSBoVVByZVQkU0lBUzlyCmhVUHJlVCRTSUFTMTEgPC0gaFVQcmVUJFNJQVMxMXIKYGBgCgojI1NlbGVjdCBvbmx5IGl0ZW1zIHRvIGJlIHB1dCBpbnRvIG1vZGVscwpgYGB7cn0KY29sbmFtZXMoaFVQcmVUKQpoUCA8LSBoVVByZVRbYygyOjc2KV0KI3N1bW1hcnkoaFApCmBgYAoKIyNSZXNjYWxlIGl0ZW1zIHRvIGJlIG9uIDAgdG8gNCBzY2FsZQpgYGB7cn0KY29sbmFtZXMoaFApCmxpYnJhcnkoc2NhbGVzKQojY29sbmFtZXMoaFApW2MoMTo3LDIwOjI4KV0KCmNvbHMgPC0gYygxOjcsMjA6MjgpCgpmb3IgKGkgaW4gY29scykgewogIGhQW2ldIDwtIHJlc2NhbGUoaFBbLGldLCB0byA9IGMoMCw0KSkKfQoKI3N1bW1hcnkoaFApCmBgYAoKIyNSdW4gbW9kaWZpZWQgcGFyYWxsZWwgYW5hbHlzaXMKYGBge3IsIHdhcm5pbmc9RiwgZWNobz1GfQpSLnBlYXJzb24uaFAgPC0gaGV0Y29yKGhQLCB1c2U9InBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpJGNvcnJlbGF0aW9ucwojUi5wZWFyc29uLmhQCgplaWdlbnMucGVhcnNvbi5oUCA8LSBlaWdlbihSLnBlYXJzb24uaFApJHZhbHVlcwplaWdlbnMucGVhcnNvbi5oUAoKb3B0aW9ucyhzY2lwZW49OTk5KQoKcGxvdChlaWdlbnMucGVhcnNvbi5oUCxwY2g9MTYseGxhYj0iIix5bGFiPSJFaWdlbnZhbHVlIiwgbWFpbiA9ICJFaWdlbnZhbHVlcyBmb3IgSXRlbSBMZXZlbCBEYXRhIikKYGBgCgpgYGB7ciwgZWNobz1GLCB3YXJuaW5nPUYsIGluY2x1ZGU9Rn0KIyBFaWdlbnZhbHVlIGRpc3RyaWJ1dGlvbiBmcm9tIHJhbmRvbSBkYXRhIHRvIGRldGVybWluZSBpZiBtZWFuaW5nZnVsCmxpYnJhcnkoTUFTUykKdHdlbHZlLmVpZ2VuIDwtIGMoKQp0aGlydGVlbi5laWdlbiA8LSBjKCkKZm91cnRlZW4uZWlnZW4gPC0gYygpCmZpZnRlZW4uZWlnZW4gPC0gYygpCmZvcihpIGluIDE6MTAwMDApIHsKICBOID0gbnJvdyhoUCkKICBrID0gbmNvbChoUCkKICBzaW0uZGF0YSA9IG12cm5vcm0oTixyZXAoMCxrKSxkaWFnKGspKQogIGNvcnIgICA9IGNvcihzaW0uZGF0YSkKICB0d2VsdmUuZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbMTJdCiAgdGhpcnRlZW4uZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbMTNdCiAgZm91cnRlZW4uZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbMTRdCiAgZmlmdGVlbi5laWdlbltpXSAgICA9IGVpZ2VuKGNvcnIpJHZhbHVlc1sxNV0KfQoKaGlzdCh0d2VsdmUuZWlnZW4sbWFpbj0iU2FtcGxpbmcgRGlzdHJpYnV0aW9uIG9mIFxuMTJ0aCBFaWdlbnZhbHVlIGZvciBJdGVtIExldmVsIERhdGEiLHhsYWI9IiIpCmhpc3QodGhpcnRlZW4uZWlnZW4sbWFpbj0iU2FtcGxpbmcgRGlzdHJpYnV0aW9uIG9mIFxuMTN0aCBFaWdlbnZhbHVlIGZvciBJdGVtIExldmVsIERhdGEiLHhsYWI9IiIpCmhpc3QoZm91cnRlZW4uZWlnZW4sbWFpbj0iU2FtcGxpbmcgRGlzdHJpYnV0aW9uIG9mIFxuMTR0aCBFaWdlbnZhbHVlIGZvciBJdGVtIExldmVsIERhdGEiLHhsYWI9IiIpCmhpc3QoZmlmdGVlbi5laWdlbixtYWluPSJTYW1wbGluZyBEaXN0cmlidXRpb24gb2YgXG4xNXRoIEVpZ2VudmFsdWUgZm9yIEl0ZW0gTGV2ZWwgRGF0YSIseGxhYj0iIikKCiMgRmluZCB0aGUgOTV0aCBwZXJjZW50aWxlIG9mIHRoZSBzYW1wbGluZyBkaXN0cmlidXRpb24gZm9yIHRoZSAybmQgZWlnZW52YWx1ZQoKcXVhbnQ5NV8xMiA9IHF1YW50aWxlKHR3ZWx2ZS5laWdlbiwuOTUpCgpxdWFudDk1XzEyCiNhYmxpbmUodj1xdWFudDk1XzIsbHR5PTIpCgpxdWFudDk1XzEzID0gcXVhbnRpbGUodGhpcnRlZW4uZWlnZW4sLjk1KQoKcXVhbnQ5NV8xMwoKcXVhbnQ5NV8xNCA9IHF1YW50aWxlKGZvdXJ0ZWVuLmVpZ2VuLC45NSkKCnF1YW50OTVfMTQKCnF1YW50OTVfMTUgPSBxdWFudGlsZShmaWZ0ZWVuLmVpZ2VuLC45NSkKCnF1YW50OTVfMTUKCmVpZ2h0LmVpZ2VuIDwtIGMoKQpuaW5lLmVpZ2VuIDwtIGMoKQp0ZW4uZWlnZW4gPC0gYygpCmVsZXZlbi5laWdlbiA8LSBjKCkKCmZvcihpIGluIDE6MTAwMDApIHsKICBOID0gbnJvdyhoUCkKICBrID0gbmNvbChoUCkKICBzaW0uZGF0YSA9IG12cm5vcm0oTixyZXAoMCxrKSxkaWFnKGspKQogIGNvcnIgICA9IGNvcihzaW0uZGF0YSkKICBlaWdodC5laWdlbltpXSAgICA9IGVpZ2VuKGNvcnIpJHZhbHVlc1s4XQogIG5pbmUuZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbOV0KICB0ZW4uZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbMTBdCiAgZWxldmVuLmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzExXQp9CgoKcXVhbnQ5NV84ID0gcXVhbnRpbGUoZWlnaHQuZWlnZW4sLjk1KQpxdWFudDk1XzgKCnF1YW50OTVfOSA9IHF1YW50aWxlKG5pbmUuZWlnZW4sLjk1KQpxdWFudDk1XzkKCnF1YW50OTVfMTAgPSBxdWFudGlsZSh0ZW4uZWlnZW4sLjk1KQpxdWFudDk1XzEwCgpxdWFudDk1XzExID0gcXVhbnRpbGUoZWxldmVuLmVpZ2VuLC45NSkKcXVhbnQ5NV8xMQoKZm91ci5laWdlbiA8LSBjKCkKZml2ZS5laWdlbiA8LSBjKCkKc2l4LmVpZ2VuIDwtIGMoKQpzZXZlbi5laWdlbiA8LSBjKCkKZm9yKGkgaW4gMToxMDAwMCkgewogIE4gPSBucm93KGhQKQogIGsgPSBuY29sKGhQKQogIHNpbS5kYXRhID0gbXZybm9ybShOLHJlcCgwLGspLGRpYWcoaykpCiAgY29yciAgID0gY29yKHNpbS5kYXRhKQogIGZvdXIuZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbNF0KICBmaXZlLmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzVdCiAgc2l4LmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzZdCiAgc2V2ZW4uZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbN10KfQoKcXVhbnQ5NV80ID0gcXVhbnRpbGUoZm91ci5laWdlbiwuOTUpCnF1YW50OTVfNAoKcXVhbnQ5NV81ID0gcXVhbnRpbGUoZml2ZS5laWdlbiwuOTUpCnF1YW50OTVfNQoKcXVhbnQ5NV82ID0gcXVhbnRpbGUoc2l4LmVpZ2VuLC45NSkKcXVhbnQ5NV82CgpxdWFudDk1XzcgPSBxdWFudGlsZShzZXZlbi5laWdlbiwuOTUpCnF1YW50OTVfNwpgYGAKCkNvbXBhcmUgdG8gdGhlIGVtcGlyaWNhbCBkYXRhIGVpZ2VudmFsdWUKYGBge3IsIGluY2x1ZGU9Rn0KZWlnZW5zIDwtIGVpZ2VuKFIucGVhcnNvbi5oUCkkdmFsdWVzCmVpZ2VucwoKcGxvdChlaWdlbnMscGNoPTE1LHlsYWI9IkVpZ2VudmFsdWUiLHhsYWI9IiIseWxpbT1jKDAsMTgpLGNleD0uNSwgbWFpbj0iQ29tcGFyaXNvbiBvZiBTaW11bGF0ZWQgRWlnZW52YWx1ZXMgXG4oOTV0aCBQZXJjZW50aWxlKSBhbmQgRW1waXJpY2FsIEVpZ2VudmFsdWVzIikKCnBvaW50cygxNSxxdWFudDk1XzE1LHBjaD01LGNleD0uNSkKcG9pbnRzKDE0LHF1YW50OTVfMTQscGNoPTUsY2V4PS41KQpwb2ludHMoMTMscXVhbnQ5NV8xMyxwY2g9NSxjZXg9LjUpCnBvaW50cygxMixxdWFudDk1XzEyLHBjaD01LGNleD0uNSkKcG9pbnRzKDExLHF1YW50OTVfMTEscGNoPTUsY2V4PS41KQpwb2ludHMoMTAscXVhbnQ5NV8xMCxwY2g9NSxjZXg9LjUpCnBvaW50cyg5LHF1YW50OTVfOSxwY2g9NSxjZXg9LjUpCnBvaW50cyg4LHF1YW50OTVfOCxwY2g9NSxjZXg9LjUpCnBvaW50cyg3LHF1YW50OTVfNyxwY2g9NSxjZXg9LjUpCnBvaW50cyg2LHF1YW50OTVfNixwY2g9NSxjZXg9LjUpCnBvaW50cyg1LHF1YW50OTVfNSxwY2g9NSxjZXg9LjUpCnBvaW50cyg0LHF1YW50OTVfNCxwY2g9NSxjZXg9LjUpCmBgYAoKI1RoZXJlIGFwcGVhciB0byBiZSA3IGZhY3RvcnMKYGBge3J9Cm9tZWdhLnBlYXJzb24uaFA3IDwtIAogIG9tZWdhKFIucGVhcnNvbi5oUCwKICAgICAgICBmbT0ibWwiLAogICAgICAgIG5mYWM9NywKICAgICAgICBub2JzPTcwNCkKcHJpbnQob21lZ2EucGVhcnNvbi5oUDcpCmBgYAoKCmBgYHtyfQplZmEucGVhcnNvbi5oUDcgPC0gZmEociA9IFIucGVhcnNvbi5oUCxuZmFjPTcscm90YXRlID0gInZhcmltYXgiLCBuLm9icz03MDQpCnByaW50KGVmYS5wZWFyc29uLmhQNyRsb2FkaW5ncywgY3V0b2ZmID0gLjMpCmVmYS5wZWFyc29uLmhQNwpgYGAKCiMjcmVtb3ZlIGl0ZW1zIHRoYXQgY3Jvc3Nsb2FkIGFuZCByZXZlcnNlLWNvZGVkIGl0ZW1zIChhbGwgbG9hZCBvbnRvIDEgZmFjdG9yKQojIyNTSVIyLCBTSVI0LCBTSUFTNSwgU0lBUzksIFNJQVMxMSwgT0NJUjYsIE9DSVIxMiwgT0NJUjE4CmBgYHtyLCBlY2hvPUZ9CmNvbG5hbWVzKGhQKQpoUHIgPC0gaFBbLWMoMTEsMTUsMTksMzMsMzcsMzksNDksNTApXQpjb2xuYW1lcyhoUHIpCmBgYAoKCmBgYHtyfQpSLnBlYXJzb24uaFByIDwtIGhldGNvcihoUHIsIHVzZT0icGFpcndpc2UuY29tcGxldGUub2JzIikkY29ycmVsYXRpb25zCiNSLnBlYXJzb24uaFByCgplaWdlbnMucGVhcnNvbi5oUHIgPC0gZWlnZW4oUi5wZWFyc29uLmhQcikkdmFsdWVzCmVpZ2Vucy5wZWFyc29uLmhQcgoKb3B0aW9ucyhzY2lwZW49OTk5KQoKcGxvdChlaWdlbnMucGVhcnNvbi5oUHIscGNoPTE2LHhsYWI9IiIseWxhYj0iRWlnZW52YWx1ZSIsIG1haW4gPSAiRWlnZW52YWx1ZXMgZm9yIEl0ZW0gTGV2ZWwgRGF0YSIpCmBgYAoKYGBge3IsIGVjaG89Riwgd2FybmluZz1GfQojIEVpZ2VudmFsdWUgZGlzdHJpYnV0aW9uIGZyb20gcmFuZG9tIGRhdGEgdG8gZGV0ZXJtaW5lIGlmIG1lYW5pbmdmdWwKbGlicmFyeShNQVNTKQp0d2VsdmUuZWlnZW4gPC0gYygpCnRoaXJ0ZWVuLmVpZ2VuIDwtIGMoKQpmb3VydGVlbi5laWdlbiA8LSBjKCkKZmlmdGVlbi5laWdlbiA8LSBjKCkKZm9yKGkgaW4gMToxMDAwMCkgewogIE4gPSBucm93KGhQcikKICBrID0gbmNvbChoUHIpCiAgc2ltLmRhdGEgPSBtdnJub3JtKE4scmVwKDAsayksZGlhZyhrKSkKICBjb3JyICAgPSBjb3Ioc2ltLmRhdGEpCiAgdHdlbHZlLmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzEyXQogIHRoaXJ0ZWVuLmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzEzXQogIGZvdXJ0ZWVuLmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzE0XQogIGZpZnRlZW4uZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbMTVdCn0KCmhpc3QodHdlbHZlLmVpZ2VuLG1haW49IlNhbXBsaW5nIERpc3RyaWJ1dGlvbiBvZiBcbjEydGggRWlnZW52YWx1ZSBmb3IgSXRlbSBMZXZlbCBEYXRhIix4bGFiPSIiKQpoaXN0KHRoaXJ0ZWVuLmVpZ2VuLG1haW49IlNhbXBsaW5nIERpc3RyaWJ1dGlvbiBvZiBcbjEzdGggRWlnZW52YWx1ZSBmb3IgSXRlbSBMZXZlbCBEYXRhIix4bGFiPSIiKQpoaXN0KGZvdXJ0ZWVuLmVpZ2VuLG1haW49IlNhbXBsaW5nIERpc3RyaWJ1dGlvbiBvZiBcbjE0dGggRWlnZW52YWx1ZSBmb3IgSXRlbSBMZXZlbCBEYXRhIix4bGFiPSIiKQpoaXN0KGZpZnRlZW4uZWlnZW4sbWFpbj0iU2FtcGxpbmcgRGlzdHJpYnV0aW9uIG9mIFxuMTV0aCBFaWdlbnZhbHVlIGZvciBJdGVtIExldmVsIERhdGEiLHhsYWI9IiIpCgojIEZpbmQgdGhlIDk1dGggcGVyY2VudGlsZSBvZiB0aGUgc2FtcGxpbmcgZGlzdHJpYnV0aW9uIGZvciB0aGUgMm5kIGVpZ2VudmFsdWUKCnF1YW50OTVfMTIgPSBxdWFudGlsZSh0d2VsdmUuZWlnZW4sLjk1KQoKcXVhbnQ5NV8xMgojYWJsaW5lKHY9cXVhbnQ5NV8yLGx0eT0yKQoKcXVhbnQ5NV8xMyA9IHF1YW50aWxlKHRoaXJ0ZWVuLmVpZ2VuLC45NSkKCnF1YW50OTVfMTMKCnF1YW50OTVfMTQgPSBxdWFudGlsZShmb3VydGVlbi5laWdlbiwuOTUpCgpxdWFudDk1XzE0CgpxdWFudDk1XzE1ID0gcXVhbnRpbGUoZmlmdGVlbi5laWdlbiwuOTUpCgpxdWFudDk1XzE1CgplaWdodC5laWdlbiA8LSBjKCkKbmluZS5laWdlbiA8LSBjKCkKdGVuLmVpZ2VuIDwtIGMoKQplbGV2ZW4uZWlnZW4gPC0gYygpCgpmb3IoaSBpbiAxOjEwMDAwKSB7CiAgTiA9IG5yb3coaFByKQogIGsgPSBuY29sKGhQcikKICBzaW0uZGF0YSA9IG12cm5vcm0oTixyZXAoMCxrKSxkaWFnKGspKQogIGNvcnIgICA9IGNvcihzaW0uZGF0YSkKICBlaWdodC5laWdlbltpXSAgICA9IGVpZ2VuKGNvcnIpJHZhbHVlc1s4XQogIG5pbmUuZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbOV0KICB0ZW4uZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbMTBdCiAgZWxldmVuLmVpZ2VuW2ldICAgID0gZWlnZW4oY29ycikkdmFsdWVzWzExXQp9CgoKcXVhbnQ5NV84ID0gcXVhbnRpbGUoZWlnaHQuZWlnZW4sLjk1KQpxdWFudDk1XzgKCnF1YW50OTVfOSA9IHF1YW50aWxlKG5pbmUuZWlnZW4sLjk1KQpxdWFudDk1XzkKCnF1YW50OTVfMTAgPSBxdWFudGlsZSh0ZW4uZWlnZW4sLjk1KQpxdWFudDk1XzEwCgpxdWFudDk1XzExID0gcXVhbnRpbGUoZWxldmVuLmVpZ2VuLC45NSkKcXVhbnQ5NV8xMQoKZm91ci5laWdlbiA8LSBjKCkKZml2ZS5laWdlbiA8LSBjKCkKc2l4LmVpZ2VuIDwtIGMoKQpzZXZlbi5laWdlbiA8LSBjKCkKZm9yKGkgaW4gMToxMDAwMCkgewogIE4gPSBucm93KGhQcikKICBrID0gbmNvbChoUHIpCiAgc2ltLmRhdGEgPSBtdnJub3JtKE4scmVwKDAsayksZGlhZyhrKSkKICBjb3JyICAgPSBjb3Ioc2ltLmRhdGEpCiAgZm91ci5laWdlbltpXSAgICA9IGVpZ2VuKGNvcnIpJHZhbHVlc1s0XQogIGZpdmUuZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbNV0KICBzaXguZWlnZW5baV0gICAgPSBlaWdlbihjb3JyKSR2YWx1ZXNbNl0KICBzZXZlbi5laWdlbltpXSAgICA9IGVpZ2VuKGNvcnIpJHZhbHVlc1s3XQp9CgpxdWFudDk1XzQgPSBxdWFudGlsZShmb3VyLmVpZ2VuLC45NSkKcXVhbnQ5NV80CgpxdWFudDk1XzUgPSBxdWFudGlsZShmaXZlLmVpZ2VuLC45NSkKcXVhbnQ5NV81CgpxdWFudDk1XzYgPSBxdWFudGlsZShzaXguZWlnZW4sLjk1KQpxdWFudDk1XzYKCnF1YW50OTVfNyA9IHF1YW50aWxlKHNldmVuLmVpZ2VuLC45NSkKcXVhbnQ5NV83CmBgYAoKQ29tcGFyZSB0byB0aGUgZW1waXJpY2FsIGRhdGEgZWlnZW52YWx1ZQpgYGB7cn0KZWlnZW5zIDwtIGVpZ2VuKFIucGVhcnNvbi5oUHIpJHZhbHVlcwplaWdlbnMKCnBsb3QoZWlnZW5zLHBjaD0xNSx5bGFiPSJFaWdlbnZhbHVlIix4bGFiPSIiLHlsaW09YygwLDE4KSxjZXg9LjUsIG1haW49IkNvbXBhcmlzb24gb2YgU2ltdWxhdGVkIEVpZ2VudmFsdWVzIFxuKDk1dGggUGVyY2VudGlsZSkgYW5kIEVtcGlyaWNhbCBFaWdlbnZhbHVlcyIpCgpwb2ludHMoMTUscXVhbnQ5NV8xNSxwY2g9NSxjZXg9LjUpCnBvaW50cygxNCxxdWFudDk1XzE0LHBjaD01LGNleD0uNSkKcG9pbnRzKDEzLHF1YW50OTVfMTMscGNoPTUsY2V4PS41KQpwb2ludHMoMTIscXVhbnQ5NV8xMixwY2g9NSxjZXg9LjUpCnBvaW50cygxMSxxdWFudDk1XzExLHBjaD01LGNleD0uNSkKcG9pbnRzKDEwLHF1YW50OTVfMTAscGNoPTUsY2V4PS41KQpwb2ludHMoOSxxdWFudDk1XzkscGNoPTUsY2V4PS41KQpwb2ludHMoOCxxdWFudDk1XzgscGNoPTUsY2V4PS41KQpwb2ludHMoNyxxdWFudDk1XzcscGNoPTUsY2V4PS41KQpwb2ludHMoNixxdWFudDk1XzYscGNoPTUsY2V4PS41KQpwb2ludHMoNSxxdWFudDk1XzUscGNoPTUsY2V4PS41KQpwb2ludHMoNCxxdWFudDk1XzQscGNoPTUsY2V4PS41KQpgYGAKCiNUaGVyZSBhcHBlYXIgdG8gYmUgNiBmYWN0b3JzCmBgYHtyfQpvbWVnYS5wZWFyc29uLmhQcjYgPC0gCiAgb21lZ2EoUi5wZWFyc29uLmhQciwKICAgICAgICBmbT0ibWwiLAogICAgICAgIG5mYWM9NiwKICAgICAgICBub2JzPTcwNCkKcHJpbnQob21lZ2EucGVhcnNvbi5oUHI2KQpgYGAKCmBgYHtyfQpiaWZhY3Rvci5wZWFyc29uLmhQcjYgPC0gZmEoUi5wZWFyc29uLmhQcixuZmFjPTYscm90YXRlID0gImJpZmFjdG9yIiwgc2NvcmVzPSJyZWdyZXNzaW9uIikKcHJpbnQoYmlmYWN0b3IucGVhcnNvbi5oUHI2JGxvYWRpbmdzLCBjdXRvZmYgPSAuMykKcGxvdChiaWZhY3Rvci5wZWFyc29uLmhQcjYpCmBgYAoKCmBgYHtyfQplZmEucGVhcnNvbi5oUHI2IDwtIGZhKGhQcixuZmFjPTYscm90YXRlID0gInZhcmltYXgiLCBzY29yZXM9InJlZ3Jlc3Npb24iKQpwcmludChlZmEucGVhcnNvbi5oUHI2JGxvYWRpbmdzLCBjdXRvZmYgPSAuMykKZWZhLnBlYXJzb24uaFByNgpgYGAKCmBgYHtyfQpzdHIoaFVQcmVUKQpjb2xuYW1lcyhoVVByZVQpCmhQcjIgPC0gaFVQcmVUWy1jKDEyLDE2LDIwLDM0LDM4LDQwLDUwLDUxLDc3OjgxKV0KCmhQcmNvbXAgPC0gaFByMltjb21wbGV0ZS5jYXNlcyhoUHIyKSwgXQpzdHIoaFByY29tcCkKZiA8LSBmYWN0YW5hbChoUHJjb21wW2MoMjo2OCldLCBmYWN0b3JzPTcsIHJvdGF0aW9uPSJ2YXJpbWF4Iiwgc2NvcmVzPSJyZWdyZXNzaW9uIikKZgpwcmludChmJGxvYWRpbmdzLCBjdXRvZmYgPSAuMykKCmcgPC0gZmEoaFByY29tcFtjKDI6NjgpXSxuZmFjPTYsIHJvdGF0ZT0idmFyaW1heCIsc2NvcmVzPSJyZWdyZXNzaW9uIikKZwpwcmludChnJGxvYWRpbmdzLCBjdXRvZmYgPSAuMykKCmdsb2FkaW5ncyA8LSBwcmludChnJGxvYWRpbmdzLCBjdXRvZmYgPSAuMykKc3RyKGdsb2FkaW5ncykKCmdsb2FkaW5nc3N1bSA8LSBhcy5tYXRyaXgoZ2xvYWRpbmdzKQojd3JpdGUuY3N2KGdsb2FkaW5nc3N1bSwgImxvYWRpbmdzLmNzdiIsIHJvdy5uYW1lcz1GKQoKaFVwVGZhY3RvcmRhdGEgPC0gY2JpbmQoaFByY29tcCwgZiRzY29yZXMpCmhVcFRmYWN0b3JkYXRhMiA8LSBjYmluZChoUHJjb21wLCBnJHNjb3JlcykKY29sbmFtZXMoaFVwVGZhY3RvcmRhdGEpCmNvbG5hbWVzKGhVcFRmYWN0b3JkYXRhMikKCmNvbG5hbWVzKGhVcFRmYWN0b3JkYXRhMilbYyg2OTo3NCldIDwtIGMoIlNvY0FueCIsIkRlcEFueCIsIkhvYXJkIiwiT0NEIiwiU3Vic3RhbmNlIiwiTWFuaWEiKQoKb21lZ2EucGVhcnNvbi5oUHI2IDwtIAogIG9tZWdhKGhQcmNvbXBbYygyOjY4KV0sCiAgICAgICAgZm09Im1sIiwKICAgICAgICBuZmFjPTYsCiAgICAgICAgbm9icz03MDQsIHNjb3Jlcz0icmVncmVzc2lvbiIsIHJvdGF0ZT0iUHJvbWF4IikKb21lZ2EucGVhcnNvbi5oUHI2CgoKaFVwVGZhY3RvcmRhdGEzIDwtIGNiaW5kKGhVcFRmYWN0b3JkYXRhMiwgb21lZ2EucGVhcnNvbi5oUHI2JHNjb3JlcykKY29sbmFtZXMoaFVwVGZhY3RvcmRhdGEzKQojZ2VuZXJhbCBmYWN0b3IsIFNJQVMsIFNJUiwgREVQLCBPQ0lSLEdBRCxBTEMsCmNvbG5hbWVzKGhVcFRmYWN0b3JkYXRhMylbYyg3NTo4MSldIDwtIGMoIkdlbmVyYWxGYWN0b3JfYmlmYWMiLCJTb2NBbnhfYmlmYWMiLCJIb2FyZF9iaWZhYyIsIkRlcHJlc3Npb25fYmlmYWMiLCJPQ0RfYmlmYWMiLCJBbnhpZXR5X2JpZmFjIiwiU3Vic3RhbmNlX2JpZmFjIikKCgojd3JpdGUuY3N2KGhVcFRmYWN0b3JkYXRhMywgImluZGZhY3RvcnNjb3Jlc193aXRoYmlmYWN0b3JfcmV2LmNzdiIscm93Lm5hbWVzPUYpCiNGYWN0b3JzIGZvciBnIDE9U0lBUywgMz1HQUQrREVQLDI9U0lSLDQ9T0NJUiw1PURSVUcvQUxDLDY9TUFOSUEKYGBgCgo=