Teoría

Los Modelos de Ecuaciones Estructurales son una técnica de análisis de estadítica multivariada, que permite analizar patrones complejos de relaciones entre variables, realizar comparaciones entre untragruposm y validar modelos teóricos y empíricos.

Ejercicio 1. Holzinger y Swineford

Holdzinger y Swineford realizaron examenes de habilidad mental a adolecentes de 7 y 8 grado de dos escuelas (Pasteir y Grand-White).

La base de datos está incluida como paquete en R, e incluye las sigueintes columnas:

  • sex: Género (1=male, 2=female)
  • x1: Percepción Visual
  • x2: Juegos con cubos
  • x3: Juegos con pastillas/espacial
  • x4: Comprensión de párrafos
  • x5: Completar oraciones
  • x6: Significado de palabras
  • x7: Sumas aceleradas
  • x8: Conto acelerado de puntos
  • x9: Discriminación acelerada de mayúculas rectas y curvas

Se busca identidicar las relaciones entre las habilidades visual (x1, x2, x3), textual (x4, x5,x6) y velocidad (x7,x8,x9) de los adolescentes.

Instalar paquetes y llamar librerías

#install.packages("lavaan")
library(lavaan)
#install.packages("lavaanPlot")
library(lavaanPlot)
# lavaan significa Latent variable analysis
# install.packages("readxl")
library(readxl)

Importar la base de datos

df6 <- HolzingerSwineford1939

Entender la base de datos

summary(df6)
##        id             sex            ageyr        agemo       
##  Min.   :  1.0   Min.   :1.000   Min.   :11   Min.   : 0.000  
##  1st Qu.: 82.0   1st Qu.:1.000   1st Qu.:12   1st Qu.: 2.000  
##  Median :163.0   Median :2.000   Median :13   Median : 5.000  
##  Mean   :176.6   Mean   :1.515   Mean   :13   Mean   : 5.375  
##  3rd Qu.:272.0   3rd Qu.:2.000   3rd Qu.:14   3rd Qu.: 8.000  
##  Max.   :351.0   Max.   :2.000   Max.   :16   Max.   :11.000  
##                                                               
##          school        grade             x1               x2       
##  Grant-White:145   Min.   :7.000   Min.   :0.6667   Min.   :2.250  
##  Pasteur    :156   1st Qu.:7.000   1st Qu.:4.1667   1st Qu.:5.250  
##                    Median :7.000   Median :5.0000   Median :6.000  
##                    Mean   :7.477   Mean   :4.9358   Mean   :6.088  
##                    3rd Qu.:8.000   3rd Qu.:5.6667   3rd Qu.:6.750  
##                    Max.   :8.000   Max.   :8.5000   Max.   :9.250  
##                    NAs    :1                                       
##        x3              x4              x5              x6        
##  Min.   :0.250   Min.   :0.000   Min.   :1.000   Min.   :0.1429  
##  1st Qu.:1.375   1st Qu.:2.333   1st Qu.:3.500   1st Qu.:1.4286  
##  Median :2.125   Median :3.000   Median :4.500   Median :2.0000  
##  Mean   :2.250   Mean   :3.061   Mean   :4.341   Mean   :2.1856  
##  3rd Qu.:3.125   3rd Qu.:3.667   3rd Qu.:5.250   3rd Qu.:2.7143  
##  Max.   :4.500   Max.   :6.333   Max.   :7.000   Max.   :6.1429  
##                                                                  
##        x7              x8               x9       
##  Min.   :1.304   Min.   : 3.050   Min.   :2.778  
##  1st Qu.:3.478   1st Qu.: 4.850   1st Qu.:4.750  
##  Median :4.087   Median : 5.500   Median :5.417  
##  Mean   :4.186   Mean   : 5.527   Mean   :5.374  
##  3rd Qu.:4.913   3rd Qu.: 6.100   3rd Qu.:6.083  
##  Max.   :7.435   Max.   :10.000   Max.   :9.250  
## 
str(df6)
## 'data.frame':    301 obs. of  15 variables:
##  $ id    : int  1 2 3 4 5 6 7 8 9 11 ...
##  $ sex   : int  1 2 2 1 2 2 1 2 2 2 ...
##  $ ageyr : int  13 13 13 13 12 14 12 12 13 12 ...
##  $ agemo : int  1 7 1 2 2 1 1 2 0 5 ...
##  $ school: Factor w/ 2 levels "Grant-White",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ grade : int  7 7 7 7 7 7 7 7 7 7 ...
##  $ x1    : num  3.33 5.33 4.5 5.33 4.83 ...
##  $ x2    : num  7.75 5.25 5.25 7.75 4.75 5 6 6.25 5.75 5.25 ...
##  $ x3    : num  0.375 2.125 1.875 3 0.875 ...
##  $ x4    : num  2.33 1.67 1 2.67 2.67 ...
##  $ x5    : num  5.75 3 1.75 4.5 4 3 6 4.25 5.75 5 ...
##  $ x6    : num  1.286 1.286 0.429 2.429 2.571 ...
##  $ x7    : num  3.39 3.78 3.26 3 3.7 ...
##  $ x8    : num  5.75 6.25 3.9 5.3 6.3 6.65 6.2 5.15 4.65 4.55 ...
##  $ x9    : num  6.36 7.92 4.42 4.86 5.92 ...

Tipos de fórmulas

  1. Regresión (~) Variable que depende de otras.
  2. Variables latentes (=~) No se observa, se infiera a travez de otras.
  3. Varianzas y covarianzas () Relaciones entre variables latenes y las observadas (Varianza entre sí misma, Covarianza si es entre otras).
  4. Intercepto (~1) Valor esperado cuando las demás variables son cero.

modelo1 <- ’ # Regresiones

          # Variables latentes
          
          # Varianzas y covarianzas
          
          # Intercepto
          
          '

Estructurar el modelo

modelo1 <- ' # Regresiones

              # Variables latentes
              visual =~ x1 + x2 + x3
              textual =~ x4 + x5 + x6
              velocidad =~ x7 + x8 + x9
              
              # Varianzas y covarianzas
              
              # Intercepto
              
              '

Generar el Análisis Factorial Confirmatorio (CFA)

fit1 <- sem(modelo1, df6) # ponemos el modelo y los datos
summary(fit1) 
## lavaan 0.7-2 ended normally after 35 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           301
## 
## Model Test User Model:
##                                                       
##   Test statistic                                85.306
##   Degrees of freedom                                24
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual =~                                           
##     x1                1.000                           
##     x2                0.554    0.100    5.554    0.000
##     x3                0.729    0.109    6.685    0.000
##   textual =~                                          
##     x4                1.000                           
##     x5                1.113    0.065   17.014    0.000
##     x6                0.926    0.055   16.703    0.000
##   velocidad =~                                        
##     x7                1.000                           
##     x8                1.180    0.165    7.152    0.000
##     x9                1.082    0.151    7.155    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual ~~                                           
##     textual           0.408    0.074    5.552    0.000
##     velocidad         0.262    0.056    4.660    0.000
##   textual ~~                                          
##     velocidad         0.173    0.049    3.518    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .x1                0.549    0.114    4.833    0.000
##    .x2                1.134    0.102   11.146    0.000
##    .x3                0.844    0.091    9.317    0.000
##    .x4                0.371    0.048    7.779    0.000
##    .x5                0.446    0.058    7.642    0.000
##    .x6                0.356    0.043    8.277    0.000
##    .x7                0.799    0.081    9.823    0.000
##    .x8                0.488    0.074    6.573    0.000
##    .x9                0.566    0.071    8.003    0.000
##     visual            0.809    0.145    5.564    0.000
##     textual           0.979    0.112    8.737    0.000
##     velocidad         0.384    0.086    4.451    0.000
lavaanPlot(fit1, coef=TRUE, cov=TRUE) # le ponemos que nos muestro coeficientes y covarianzas

Generar el modelo de Ecuaciones Estructurales (SEM)

fit11 <- cfa(modelo1, df6) # ponemos el modelo y los datos
summary(fit11) 
## lavaan 0.7-2 ended normally after 35 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           301
## 
## Model Test User Model:
##                                                       
##   Test statistic                                85.306
##   Degrees of freedom                                24
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual =~                                           
##     x1                1.000                           
##     x2                0.554    0.100    5.554    0.000
##     x3                0.729    0.109    6.685    0.000
##   textual =~                                          
##     x4                1.000                           
##     x5                1.113    0.065   17.014    0.000
##     x6                0.926    0.055   16.703    0.000
##   velocidad =~                                        
##     x7                1.000                           
##     x8                1.180    0.165    7.152    0.000
##     x9                1.082    0.151    7.155    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual ~~                                           
##     textual           0.408    0.074    5.552    0.000
##     velocidad         0.262    0.056    4.660    0.000
##   textual ~~                                          
##     velocidad         0.173    0.049    3.518    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .x1                0.549    0.114    4.833    0.000
##    .x2                1.134    0.102   11.146    0.000
##    .x3                0.844    0.091    9.317    0.000
##    .x4                0.371    0.048    7.779    0.000
##    .x5                0.446    0.058    7.642    0.000
##    .x6                0.356    0.043    8.277    0.000
##    .x7                0.799    0.081    9.823    0.000
##    .x8                0.488    0.074    6.573    0.000
##    .x9                0.566    0.071    8.003    0.000
##     visual            0.809    0.145    5.564    0.000
##     textual           0.979    0.112    8.737    0.000
##     velocidad         0.384    0.086    4.451    0.000
lavaanPlot(fit11, coef=TRUE, cov=TRUE)

Ejercicio 2. Democracia Política e Industrialización

Contexto

La base de datos contiene distintas mediciones sobre la democracia política e industrializacion en países de desarrollo durante 1960 y 1965.
La tabla incliye los siguientes datos:

  • y1: Calificaciones sobre la libertad de prensa en 1960
  • y2: Libertad de la oposición politica en 1960
  • y3: Imparcialidad de elecciones en 1960
  • y4: Eficacia de la legislatura electa en 1960
  • y5: Calificaciones sobre la libertad de prensa en 1965
  • y6: Libertad de la oposición politica en 1965
  • y7: Imparcialidad de elecciones en 1965
  • y8: Eficacia de la legislatura electa en 1965
  • x1: PIB per cápita en 1960
  • x2: Consumo de energia inanimada pero cápita en 1960
  • x3: Porcentaje de la fuerza laboral en la industria en 1960
df7 <- PoliticalDemocracy

Entender la base de datos

summary(df7)
##        y1               y2               y3               y4        
##  Min.   : 1.250   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 2.900   1st Qu.: 0.000   1st Qu.: 3.767   1st Qu.: 1.581  
##  Median : 5.400   Median : 3.333   Median : 6.667   Median : 3.333  
##  Mean   : 5.465   Mean   : 4.256   Mean   : 6.563   Mean   : 4.453  
##  3rd Qu.: 7.500   3rd Qu.: 8.283   3rd Qu.:10.000   3rd Qu.: 6.667  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000  
##        y5               y6               y7               y8        
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 3.692   1st Qu.: 0.000   1st Qu.: 3.478   1st Qu.: 1.301  
##  Median : 5.000   Median : 2.233   Median : 6.667   Median : 3.333  
##  Mean   : 5.136   Mean   : 2.978   Mean   : 6.196   Mean   : 4.043  
##  3rd Qu.: 7.500   3rd Qu.: 4.207   3rd Qu.:10.000   3rd Qu.: 6.667  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000  
##        x1              x2              x3       
##  Min.   :3.784   Min.   :1.386   Min.   :1.002  
##  1st Qu.:4.477   1st Qu.:3.663   1st Qu.:2.300  
##  Median :5.075   Median :4.963   Median :3.568  
##  Mean   :5.054   Mean   :4.792   Mean   :3.558  
##  3rd Qu.:5.515   3rd Qu.:5.830   3rd Qu.:4.523  
##  Max.   :6.737   Max.   :7.872   Max.   :6.425
str(df7)
## 'data.frame':    75 obs. of  11 variables:
##  $ y1: num  2.5 1.25 7.5 8.9 10 7.5 7.5 7.5 2.5 10 ...
##  $ y2: num  0 0 8.8 8.8 3.33 ...
##  $ y3: num  3.33 3.33 10 10 10 ...
##  $ y4: num  0 0 9.2 9.2 6.67 ...
##  $ y5: num  1.25 6.25 8.75 8.91 7.5 ...
##  $ y6: num  0 1.1 8.09 8.13 3.33 ...
##  $ y7: num  3.73 6.67 10 10 10 ...
##  $ y8: num  3.333 0.737 8.212 4.615 6.667 ...
##  $ x1: num  4.44 5.38 5.96 6.29 5.86 ...
##  $ x2: num  3.64 5.06 6.26 7.57 6.82 ...
##  $ x3: num  2.56 3.57 5.22 6.27 4.57 ...

Estructurar el modelo

modelo2 <- '
  # Variables latentes
  democracia1960 =~ y1 + y2 + y3 + y4
  democracia1965 =~ y5 + y6 + y7 + y8
  industria1960 =~ x1 + x2 + x3

  # Regresiones
  democracia1960 ~ industria1960
  democracia1965 ~ industria1960 + democracia1960
'

Generar el Análisis Factorial Confirmatorio (CFA)

fit2 <- sem(modelo2, data = df7)
summary(fit2)
## lavaan 0.7-2 ended normally after 42 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        25
## 
##   Number of observations                            75
## 
## Model Test User Model:
##                                                       
##   Test statistic                                72.462
##   Degrees of freedom                                41
##   P-value (Chi-square)                           0.002
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                     Estimate  Std.Err  z-value  P(>|z|)
##   democracia1960 =~                                    
##     y1                 1.000                           
##     y2                 1.354    0.175    7.755    0.000
##     y3                 1.044    0.150    6.961    0.000
##     y4                 1.300    0.138    9.412    0.000
##   democracia1965 =~                                    
##     y5                 1.000                           
##     y6                 1.258    0.164    7.651    0.000
##     y7                 1.282    0.158    8.137    0.000
##     y8                 1.310    0.154    8.529    0.000
##   industria1960 =~                                     
##     x1                 1.000                           
##     x2                 2.182    0.139   15.714    0.000
##     x3                 1.819    0.152   11.956    0.000
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   democracia1960 ~                                    
##     industria1960     1.474    0.392    3.763    0.000
##   democracia1965 ~                                    
##     industria1960     0.453    0.220    2.064    0.039
##     democracia1960    0.864    0.113    7.671    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .y1                1.942    0.395    4.910    0.000
##    .y2                6.490    1.185    5.479    0.000
##    .y3                5.340    0.943    5.662    0.000
##    .y4                2.887    0.610    4.731    0.000
##    .y5                2.390    0.447    5.351    0.000
##    .y6                4.343    0.796    5.456    0.000
##    .y7                3.510    0.668    5.252    0.000
##    .y8                2.940    0.586    5.019    0.000
##    .x1                0.082    0.020    4.180    0.000
##    .x2                0.118    0.070    1.689    0.091
##    .x3                0.467    0.090    5.174    0.000
##    .democracia1960    3.872    0.893    4.338    0.000
##    .democracia1965    0.115    0.200    0.575    0.565
##     industria1960     0.448    0.087    5.169    0.000
lavaanPlot(fit2, coef=TRUE, cov=TRUE) # le ponemos que nos muestro coeficientes y covarianzas

Conclusión

La democracia cuenta con 8 derechos y libertades políticas:

  1. Libertad de formar organizaciones y unirse a ellas.
  2. libertad de expresión.
  3. Derecho al voto.
  4. Derecho de elegir cargos públicos.
  5. Derecho de los líderes a competir por votos.
  6. Libertad de tener fuentes alternativas de información.
  7. Derecho de elecciones libres y justas.
  8. Derecho de instituciones para hacer que las políticas gubernamentales dependan de los votos y otras expresiones de preferencia.

En el libro “Why Nations Fail?” los autores concluyen que son las instituciones del país las que determinan el éxito o el fracaso.

Ejercicio 3. Motivación Laboral

Importar la base de datos

#file.choose()
df8 <- read_excel("/Users/sharontorres/Downloads/Actividad3/Datos_SEM_Eng.xlsx")

Entender la base de datos

summary(df8)
##        ID             GEN             EXPER            EDAD      
##  Min.   :  1.0   Min.   :0.0000   Min.   : 0.00   Min.   :22.00  
##  1st Qu.: 56.5   1st Qu.:0.0000   1st Qu.:15.00   1st Qu.:37.50  
##  Median :112.0   Median :1.0000   Median :20.00   Median :44.00  
##  Mean   :112.0   Mean   :0.5919   Mean   :21.05   Mean   :43.95  
##  3rd Qu.:167.5   3rd Qu.:1.0000   3rd Qu.:27.50   3rd Qu.:51.00  
##  Max.   :223.0   Max.   :1.0000   Max.   :50.00   Max.   :72.00  
##      RPD01           RPD02          RPD03           RPD05           RPD06      
##  Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.00   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :5.000   Median :4.00   Median :5.000   Median :5.000   Median :5.000  
##  Mean   :4.596   Mean   :4.09   Mean   :4.789   Mean   :4.327   Mean   :4.798  
##  3rd Qu.:6.000   3rd Qu.:6.00   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.00   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RPD07           RPD08           RPD09           RPD10      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:2.500  
##  Median :4.000   Median :5.000   Median :5.000   Median :5.000  
##  Mean   :3.794   Mean   :4.735   Mean   :4.466   Mean   :4.435  
##  3rd Qu.:5.500   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RRE02           RRE03           RRE04           RRE05           RRE06    
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.0  
##  1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:4.0  
##  Median :6.000   Median :6.000   Median :6.000   Median :6.000   Median :6.0  
##  Mean   :5.691   Mean   :5.534   Mean   :5.668   Mean   :5.623   Mean   :5.3  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.0  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.0  
##      RRE07           RRE10           RMA02           RMA03      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:5.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :6.000   Median :6.000   Median :4.000   Median :5.000  
##  Mean   :5.305   Mean   :5.664   Mean   :4.215   Mean   :4.377  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RMA04           RMA05           RMA06           RMA07      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:5.000   1st Qu.:4.000  
##  Median :5.000   Median :5.000   Median :6.000   Median :5.000  
##  Mean   :4.686   Mean   :4.637   Mean   :5.511   Mean   :4.767  
##  3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RMA08           RMA09           RMA10          RCO02           RCO03      
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:3.000   1st Qu.:3.00   1st Qu.:5.000   1st Qu.:5.000  
##  Median :5.000   Median :5.000   Median :5.00   Median :6.000   Median :6.000  
##  Mean   :4.942   Mean   :4.614   Mean   :4.43   Mean   :5.336   Mean   :5.574  
##  3rd Qu.:6.500   3rd Qu.:6.000   3rd Qu.:6.00   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.00   Max.   :7.000   Max.   :7.000  
##      RCO04           RCO05           RCO06           RCO07      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000  
##  Median :6.000   Median :6.000   Median :6.000   Median :6.000  
##  Mean   :5.704   Mean   :5.668   Mean   :5.619   Mean   :5.632  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##       EN01            EN02            EN04            EN05      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :5.000   Median :6.000   Median :5.000   Median :5.000  
##  Mean   :4.717   Mean   :5.004   Mean   :4.883   Mean   :4.928  
##  3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##       EN06            EN07            EN08           EVI01      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :0.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :5.000   Median :5.000   Median :5.000   Median :5.000  
##  Mean   :4.767   Mean   :4.578   Mean   :4.776   Mean   :5.013  
##  3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      EVI02           EVI03           EDE01           EDE02      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:4.000   1st Qu.:4.000   1st Qu.:5.000   1st Qu.:5.000  
##  Median :6.000   Median :6.000   Median :6.000   Median :6.000  
##  Mean   :5.076   Mean   :4.973   Mean   :5.305   Mean   :5.543  
##  3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      EDE03           EAB01           EAB02           EAB03      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:6.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000  
##  Median :7.000   Median :6.000   Median :6.000   Median :6.000  
##  Mean   :6.135   Mean   :5.605   Mean   :5.821   Mean   :5.363  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000
str(df8)
## tibble [223 × 51] (S3: tbl_df/tbl/data.frame)
##  $ ID   : num [1:223] 1 2 3 4 5 6 7 8 9 10 ...
##  $ GEN  : num [1:223] 1 1 1 1 1 0 0 1 1 1 ...
##  $ EXPER: num [1:223] 22 22 30 17 23 31 26 30 15 15 ...
##  $ EDAD : num [1:223] 45 44 52 41 51 52 53 48 40 38 ...
##  $ RPD01: num [1:223] 5 4 7 5 7 3 5 6 4 2 ...
##  $ RPD02: num [1:223] 1 4 7 5 6 4 5 7 4 3 ...
##  $ RPD03: num [1:223] 3 6 7 1 7 5 4 6 4 2 ...
##  $ RPD05: num [1:223] 2 5 7 1 6 4 4 7 4 3 ...
##  $ RPD06: num [1:223] 3 3 7 3 7 3 5 2 6 7 ...
##  $ RPD07: num [1:223] 1 2 6 5 6 5 6 5 4 1 ...
##  $ RPD08: num [1:223] 3 3 7 3 7 4 6 2 5 3 ...
##  $ RPD09: num [1:223] 2 4 7 2 6 4 7 4 4 2 ...
##  $ RPD10: num [1:223] 4 4 7 2 6 4 7 1 6 2 ...
##  $ RRE02: num [1:223] 6 6 7 6 7 5 7 5 6 7 ...
##  $ RRE03: num [1:223] 6 6 7 6 7 4 7 4 4 7 ...
##  $ RRE04: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RRE05: num [1:223] 6 6 7 6 7 5 7 4 6 7 ...
##  $ RRE06: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RRE07: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RRE10: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RMA02: num [1:223] 4 6 4 3 4 7 5 2 6 7 ...
##  $ RMA03: num [1:223] 5 6 5 4 4 7 5 1 2 7 ...
##  $ RMA04: num [1:223] 5 5 6 4 4 5 5 1 4 7 ...
##  $ RMA05: num [1:223] 5 5 6 4 4 6 5 3 4 7 ...
##  $ RMA06: num [1:223] 6 6 7 6 5 4 5 7 6 7 ...
##  $ RMA07: num [1:223] 4 6 6 5 4 5 7 4 6 7 ...
##  $ RMA08: num [1:223] 5 6 4 4 4 6 6 4 2 7 ...
##  $ RMA09: num [1:223] 3 5 4 3 5 4 5 2 4 7 ...
##  $ RMA10: num [1:223] 7 5 5 4 5 5 6 4 3 7 ...
##  $ RCO02: num [1:223] 7 7 7 5 7 6 7 7 3 7 ...
##  $ RCO03: num [1:223] 7 7 7 5 7 5 7 7 3 7 ...
##  $ RCO04: num [1:223] 7 7 7 6 7 4 7 7 3 7 ...
##  $ RCO05: num [1:223] 7 7 7 6 7 4 7 7 3 7 ...
##  $ RCO06: num [1:223] 7 7 7 6 7 4 7 7 4 7 ...
##  $ RCO07: num [1:223] 5 7 7 6 7 4 7 7 7 7 ...
##  $ EN01 : num [1:223] 6 6 7 4 6 4 7 7 4 7 ...
##  $ EN02 : num [1:223] 7 6 7 4 6 4 7 7 4 7 ...
##  $ EN04 : num [1:223] 6 6 7 4 6 4 7 6 4 7 ...
##  $ EN05 : num [1:223] 5 5 7 5 6 5 7 6 4 7 ...
##  $ EN06 : num [1:223] 5 5 7 5 6 3 7 5 5 7 ...
##  $ EN07 : num [1:223] 5 5 7 2 6 4 7 4 4 7 ...
##  $ EN08 : num [1:223] 6 5 7 5 6 4 7 4 4 7 ...
##  $ EVI01: num [1:223] 6 5 7 5 6 4 7 6 6 0 ...
##  $ EVI02: num [1:223] 6 5 7 6 6 4 6 5 5 1 ...
##  $ EVI03: num [1:223] 6 6 6 7 6 4 6 6 7 0 ...
##  $ EDE01: num [1:223] 6 6 6 5 7 6 7 7 7 1 ...
##  $ EDE02: num [1:223] 7 6 7 6 7 5 7 7 7 5 ...
##  $ EDE03: num [1:223] 7 7 7 7 7 5 7 7 7 6 ...
##  $ EAB01: num [1:223] 7 7 7 6 7 5 7 7 7 0 ...
##  $ EAB02: num [1:223] 7 7 7 6 7 5 7 2 5 1 ...
##  $ EAB03: num [1:223] 6 5 6 5 6 5 7 3 5 0 ...

Contexto

Uno de los retos más importantes de las organizaciones es entender el estado y bienestar de los colaboradores, ya que puede impactar directamente en el desempeño y el logro de los objetivos.

names(df8)
##  [1] "ID"    "GEN"   "EXPER" "EDAD"  "RPD01" "RPD02" "RPD03" "RPD05" "RPD06"
## [10] "RPD07" "RPD08" "RPD09" "RPD10" "RRE02" "RRE03" "RRE04" "RRE05" "RRE06"
## [19] "RRE07" "RRE10" "RMA02" "RMA03" "RMA04" "RMA05" "RMA06" "RMA07" "RMA08"
## [28] "RMA09" "RMA10" "RCO02" "RCO03" "RCO04" "RCO05" "RCO06" "RCO07" "EN01" 
## [37] "EN02"  "EN04"  "EN05"  "EN06"  "EN07"  "EN08"  "EVI01" "EVI02" "EVI03"
## [46] "EDE01" "EDE02" "EDE03" "EAB01" "EAB02" "EAB03"

Experiencias de Recuperación

modelo3 <- '

  # Variables latentes
  desapego =~ RPD01 + RPD02 + RPD03 + RPD05 + RPD06 + RPD07 + RPD08 + RPD09 + RPD10
  
  relajación =~ RRE02 + RRE03 + RRE04 + RRE05 + RRE06 + RRE07 + RRE10
  
  control =~ RCO02 + RCO03 + RCO04 + RCO05 + RCO06 + RCO07
  
  dominio =~ RMA02 + RMA03 + RMA04 + RMA05 + RMA06 + RMA07 + RMA08 + RMA09 + RMA10

'

Generar el Análisis Factorial Confirmatorio (CFA)

fit3 <- sem(modelo3, data = df8)

summary(fit3)
## lavaan 0.7-2 ended normally after 56 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        68
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                              1215.404
##   Degrees of freedom                               428
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   desapego =~                                         
##     RPD01             1.000                           
##     RPD02             1.204    0.081   14.786    0.000
##     RPD03             1.143    0.085   13.420    0.000
##     RPD05             1.310    0.086   15.269    0.000
##     RPD06             1.086    0.088   12.282    0.000
##     RPD07             1.227    0.085   14.451    0.000
##     RPD08             1.163    0.086   13.487    0.000
##     RPD09             1.315    0.087   15.175    0.000
##     RPD10             1.345    0.088   15.290    0.000
##   relajación =~                                       
##     RRE02             1.000                           
##     RRE03             1.120    0.065   17.268    0.000
##     RRE04             1.024    0.058   17.732    0.000
##     RRE05             1.055    0.056   18.798    0.000
##     RRE06             1.243    0.074   16.857    0.000
##     RRE07             1.115    0.071   15.687    0.000
##     RRE10             0.815    0.067   12.135    0.000
##   control =~                                          
##     RCO02             1.000                           
##     RCO03             0.948    0.049   19.230    0.000
##     RCO04             0.795    0.044   18.125    0.000
##     RCO05             0.817    0.043   18.981    0.000
##     RCO06             0.834    0.046   18.247    0.000
##     RCO07             0.834    0.046   18.078    0.000
##   dominio =~                                          
##     RMA02             1.000                           
##     RMA03             1.155    0.096   12.060    0.000
##     RMA04             1.179    0.089   13.267    0.000
##     RMA05             1.141    0.087   13.049    0.000
##     RMA06             0.647    0.075    8.618    0.000
##     RMA07             1.104    0.085   13.050    0.000
##     RMA08             1.109    0.085   12.985    0.000
##     RMA09             1.030    0.084   12.251    0.000
##     RMA10             1.056    0.088   12.039    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   desapego ~~                                         
##     relajación        1.155    0.164    7.023    0.000
##     control           1.319    0.200    6.584    0.000
##     dominio           0.696    0.155    4.477    0.000
##   relajación ~~                                       
##     control           1.483    0.195    7.610    0.000
##     dominio           0.969    0.159    6.085    0.000
##   control ~~                                          
##     dominio           1.221    0.202    6.047    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .RPD01             1.168    0.119    9.778    0.000
##    .RPD02             1.005    0.109    9.240    0.000
##    .RPD03             1.434    0.147    9.728    0.000
##    .RPD05             0.989    0.110    8.969    0.000
##    .RPD06             1.817    0.182    9.968    0.000
##    .RPD07             1.177    0.125    9.391    0.000
##    .RPD08             1.454    0.150    9.710    0.000
##    .RPD09             1.035    0.115    9.028    0.000
##    .RPD10             1.033    0.115    8.956    0.000
##    .RRE02             0.624    0.067    9.269    0.000
##    .RRE03             0.651    0.072    9.005    0.000
##    .RRE04             0.481    0.055    8.798    0.000
##    .RRE05             0.373    0.046    8.147    0.000
##    .RRE06             0.891    0.097    9.162    0.000
##    .RRE07             0.953    0.100    9.511    0.000
##    .RRE10             1.136    0.113   10.092    0.000
##    .RCO02             0.980    0.105    9.375    0.000
##    .RCO03             0.482    0.057    8.379    0.000
##    .RCO04             0.463    0.052    8.967    0.000
##    .RCO05             0.385    0.045    8.536    0.000
##    .RCO06             0.493    0.055    8.915    0.000
##    .RCO07             0.516    0.057    8.987    0.000
##    .RMA02             1.742    0.175    9.934    0.000
##    .RMA03             1.489    0.155    9.581    0.000
##    .RMA04             0.854    0.097    8.772    0.000
##    .RMA05             0.904    0.101    8.981    0.000
##    .RMA06             1.627    0.158   10.279    0.000
##    .RMA07             0.846    0.094    8.980    0.000
##    .RMA08             0.885    0.098    9.035    0.000
##    .RMA09             1.090    0.115    9.496    0.000
##    .RMA10             1.258    0.131    9.590    0.000
##     desapego          1.925    0.275    7.002    0.000
##     relajación        1.625    0.207    7.845    0.000
##     control           2.660    0.335    7.930    0.000
##     dominio           1.978    0.317    6.241    0.000
lavaanPlot(fit3, coef = TRUE, cov = TRUE)

Parte 2. Energía Recuperada

modelo4 <- '
  # Variables latentes
  energía =~ EN01 + EN02 + EN04 + EN05 + EN06 + EN07 + EN08
'

Generar el Análisis Factorial Confirmatorio (CFA)

fit4 <- sem(modelo4, data = df8)

summary(fit4)
## lavaan 0.7-2 ended normally after 32 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        14
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                                47.222
##   Degrees of freedom                                14
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   energía =~                                          
##     EN01              1.000                           
##     EN02              1.029    0.044   23.192    0.000
##     EN04              0.999    0.044   22.583    0.000
##     EN05              0.999    0.042   23.649    0.000
##     EN06              0.986    0.042   23.722    0.000
##     EN07              1.049    0.046   22.856    0.000
##     EN08              1.036    0.043   24.173    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .EN01              0.711    0.074    9.651    0.000
##    .EN02              0.444    0.049    9.012    0.000
##    .EN04              0.481    0.052    9.214    0.000
##    .EN05              0.375    0.042    8.830    0.000
##    .EN06              0.359    0.041    8.798    0.000
##    .EN07              0.499    0.055    9.129    0.000
##    .EN08              0.353    0.041    8.580    0.000
##     energía           2.801    0.327    8.565    0.000
lavaanPlot(fit4, coef = TRUE, cov = TRUE)

Parte 3. Energía Recuperada

modelo5 <- '

  # Variables latentes
  vigor =~ EVI01 + EVI02 + EVI03
  
  dedicación =~ EDE01 + EDE02 + EDE03
  
  absorción_de_trabajo =~ EAB01 + EAB02 + EAB03

  # Varianzas y covarianzas

  # Intercepto

'

Generar el Análisis Factorial Confirmatorio (CFA)

## Generar el Análisis Factorial Confirmatorio (CFA)

fit5 <- sem(modelo5, data = df8)

summary(fit5)
## lavaan 0.7-2 ended normally after 44 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                               271.168
##   Degrees of freedom                                24
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                           Estimate  Std.Err  z-value  P(>|z|)
##   vigor =~                                                   
##     EVI01                    1.000                           
##     EVI02                    0.986    0.028   35.166    0.000
##     EVI03                    0.995    0.049   20.456    0.000
##   dedicación =~                                              
##     EDE01                    1.000                           
##     EDE02                    0.914    0.035   26.126    0.000
##     EDE03                    0.583    0.037   15.913    0.000
##   absorción_de_trabajo =~                                    
##     EAB01                    1.000                           
##     EAB02                    0.708    0.051   13.891    0.000
##     EAB03                    0.732    0.063   11.644    0.000
## 
## Covariances:
##                          Estimate  Std.Err  z-value  P(>|z|)
##   vigor ~~                                                  
##     dedicación              2.754    0.293    9.404    0.000
##     absorción_de_trabajo    2.125    0.247    8.600    0.000
##   dedicación ~~                                             
##     absorción_de_trabajo    2.728    0.293    9.311    0.000
## 
## Variances:
##                          Estimate  Std.Err  z-value  P(>|z|)
##    .EVI01                   0.200    0.040    4.947    0.000
##    .EVI02                   0.220    0.041    5.437    0.000
##    .EVI03                   1.220    0.125    9.772    0.000
##    .EDE01                   0.405    0.066    6.130    0.000
##    .EDE02                   0.495    0.066    7.521    0.000
##    .EDE03                   0.829    0.084    9.869    0.000
##    .EAB01                   0.481    0.100    4.816    0.000
##    .EAB02                   1.010    0.109    9.271    0.000
##    .EAB03                   1.711    0.175    9.764    0.000
##     vigor                   2.836    0.289    9.811    0.000
##     dedicación              3.448    0.367    9.399    0.000
##     absorción_de_trabajo    2.592    0.301    8.615    0.000
lavaanPlot(fit5, coef = TRUE, cov = TRUE)

Conclusiones

El análisis factorial confirmatorio permitió organizar las variables observadas en diferentes dimensiones o factores, facilitando su interpretación y reduciendo la complejidad de los datos. Los modelos planteados permitieron representar constructos relacionados con la democracia, la industria, el desapego, la relajación, el control, el dominio, la energía, el vigor, la dedicación y la absorción de trabajo.

En conjunto, el análisis proporciona una estructura más clara para comprender las relaciones entre las variables y sirve como base para realizar análisis posteriores. De esta manera, el CFA permite comprobar si los indicadores seleccionados representan adecuadamente las dimensiones que se buscan estudiar.

Ejercicio 4. Modelo de Características del Puesto de Trabajo

INSTRUCCIONES:

En el 2000, J. Behson, Erik R. Eddy y Steven J. Lorenzet publicaron el estudio “The Importance of the Critical Psychological States in the Job Characteristics Model: A Meta-Analytic and Structural Equations Modeling Examination” léelo y analiza los dos modelos que los autores proponen, evaluando las diferencias en sus consideraciones de estructura, coeficientes y los errores. En el estudio, los autores reconocen que el Modelo 2 tiene mejores índices de ajuste, ¡pero no lo seleccionan! Seleccionaron el Modelo 1. ¿Por qué? Explica por qué los autores decidieron seleccionar el Modelo 1 como el modelo final y no el Modelo 2. Fundamenta su respuesta con evidencia obtenida de las tablas, figuras y la discusión del artículo. ¿Qué lección te deja? + Conclusiones

INTRODUCCIÓN

El estudio de Behson, Eddy y Lorenzet (2000) analiza el Job Characteristics Model (JCM), un modelo que busca explicar cómo ciertas características del trabajo pueden influir en diferentes resultados de los empleados, como la satisfacción y la motivación. En este estudio, los autores comparan dos formas de representar el modelo mediante ecuaciones estructurales (SEM): el Modelo 1, correspondiente al modelo original del JCM, y el Modelo 2, correspondiente al modelo que normalmente se había utilizado en investigaciones anteriores. El objetivo de este análisis es comparar ambos modelos no solamente por sus indicadores estadísticos, sino también por la lógica de sus relaciones y por qué los autores consideran que uno representa mejor la teoría.

Análisis del Modelo 1: Modelo original del JCM

El Modelo 1 corresponde al modelo original propuesto por Hackman y Oldham. Su principal característica es que considera los estados psicológicos críticos (CPS) como una parte fundamental del proceso que conecta las características del trabajo con los resultados de los empleados. Es decir, el modelo plantea que las características del puesto no necesariamente producen directamente satisfacción o motivación, sino que primero generan determinadas experiencias psicológicas en el trabajador.

Indicador Modelo 1
χ² 124.25
GFI .91
RMSEA .14
CFI .89
Relaciones significativas 12 de 14
Varianza satisfacción 42%
Varianza satisfacción de crecimiento 42%
Varianza motivación 38%
AIC 294.48
CAIC 446.29

Los resultados muestran que el Modelo 1 tiene un ajuste aceptable en GFI y CFI, aunque el RMSEA de .14 y el valor de χ² indican que todavía existen aspectos que podrían mejorar. Sin embargo, el modelo presenta una característica importante: 12 de sus 14 relaciones fueron estadísticamente significativas y logra explicar el 42% de la satisfacción, el 42% de la satisfacción de crecimiento y el 38% de la motivación.

INTERPRETACIÓN

En términos sencillos, el Modelo 1 permite observar que las características del trabajo parecen tener sentido dentro de una cadena lógica: primero influyen en la experiencia psicológica del trabajador y posteriormente esta experiencia se relaciona con sus resultados. Por eso, aunque el modelo no presenta el mejor ajuste estadístico, sus relaciones son más consistentes con la explicación que propone la teoría.

Análisis del Modelo 2: JCM normalmente utilizado

El Modelo 2 representa la versión del JCM que normalmente se había utilizado en la literatura. La principal diferencia es que se eliminan los estados psicológicos críticos y las características del trabajo se relacionan directamente con los resultados de los empleados.

Esto hace que el modelo sea mucho más sencillo y tenga menos etapas intermedias. Sin embargo, esta simplificación también cambia la forma en que se interpreta la relación entre las características del trabajo y los resultados.

RESULTADOS:

Indicador Modelo 2
χ² 12.09
GFI .99
RMSEA .16
CFI .98
Relaciones significativas 7 de 15
Varianza satisfacción 37%
Varianza satisfacción de crecimiento 43%
Varianza motivación 32%
AIC 80.09
CAIC 227.56

INTERPRETACIÓN:

A primera vista, el Modelo 2 parece ser mejor estadísticamente. Presenta un GFI de .99 y un CFI de .98, ambos superiores a los del Modelo 1. Además, su AIC y CAIC son menores, lo que indica un mejor ajuste al comparar ambos modelos mediante estos criterios. Sin embargo, el RMSEA continúa siendo poco favorable, con un valor de .16.

Un punto importante es que solamente 7 de las 15 relaciones fueron estadísticamente significativas, frente a las 12 de 14 relaciones significativas del Modelo 1. Además, el Modelo 2 explica una menor proporción de la varianza en satisfacción y motivación.

Comparación de los dos modelos:

Al comparar ambos modelos, se observa una situación interesante. El Modelo 2 tiene mejores indicadores de ajuste, ya que presenta un GFI y CFI más altos y valores de AIC y CAIC más bajos. Incluso los propios autores reconocen que, desde el punto de vista estadístico, el Modelo 2 proporciona un mejor ajuste a los datos. Sin embargo, el Modelo 1 presenta una mayor proporción de relaciones estadísticamente significativas y explica una mayor cantidad de variación en algunos de los resultados estudiados.

Aspecto Modelo 1 Modelo 2
GFI .91 .99
CFI .89 .98
RMSEA .14 .16
Relaciones significativas 12/14 7/15
Satisfacción explicada 42% 37%
Crecimiento explicado 42% 43%
Motivación explicada 38% 32%
AIC 294.48 80.09
CAIC 446.29 227.56

INTERPRETACIÓN:

Esto demuestra que evaluar un SEM no consiste simplemente en buscar el número más alto en los indicadores de ajuste. Si se observaran únicamente estos indicadores, la elección lógica sería el Modelo 2. Sin embargo, al analizar qué ocurre con las relaciones entre las variables, aparecen diferencias importantes que hacen que el Modelo 1 sea más interesante desde el punto de vista teórico.

¿Por qué los autores NO eligieron el Modelo 2?

Aunque el Modelo 2 presenta mejores índices de ajuste, los autores decidieron seleccionar el Modelo 1 porque consideraron que la calidad de un modelo no debe evaluarse únicamente por qué tan bien se ajusta estadísticamente a los datos. También es necesario analizar si las relaciones que presenta tienen sentido de acuerdo con la teoría. Los autores señalan que una comparación adecuada entre modelos requiere considerar tanto los valores obtenidos como la correspondencia del modelo con la teoría existente.

Uno de los principales problemas encontrados en el Modelo 2 fue que ocho de las nueve relaciones entre variedad de habilidades, significancia de la tarea e identidad de la tarea y los tres resultados finales no fueron estadísticamente significativas. Esto iba en contra de algunas relaciones que la teoría del JCM esperaba encontrar.

En cambio, en el Modelo 1, la variedad de habilidades y la significancia de la tarea presentaron relaciones indirectas positivas y significativas con los resultados, pasando primero por el estado psicológico de significado experimentado. Esto permitió a los autores interpretar que estas características del trabajo sí pueden ser importantes, pero que su efecto ocurre a través de la experiencia psicológica del trabajador.

¿Qué nos dicen los coeficientes?

importantes. En el Modelo 1, varias de las relaciones que conectan las características del trabajo con los estados psicológicos críticos son significativas. Por ejemplo, la variedad de habilidades presenta un coeficiente estandarizado de .31 hacia el significado experimentado y la significancia de la tarea presenta un coeficiente de .24, ambos significativos. Posteriormente, el significado experimentado se relaciona significativamente con satisfacción (.50), satisfacción de crecimiento (.49) y motivación (.35).

En el Modelo 2, al eliminar los estados psicológicos críticos, muchas de las relaciones directas entre las características del trabajo y los resultados presentan coeficientes pequeños y no significativos. Por ejemplo, varias de las relaciones relacionadas con variedad de habilidades, significancia e identidad de la tarea no resultan significativas. Esto es importante porque un coeficiente estadísticamente débil no necesariamente significa que la característica del trabajo no tenga importancia; puede indicar que su efecto ocurre indirectamente a través de otra variable, como sucede en el Modelo 1.

¿Y qué pasa con los errores?

Los errores también forman parte de la comparación, ya que representan aquella parte de los resultados que el modelo no logra explicar. En las figuras del estudio, los autores muestran términos de error asociados a las variables de resultado. Por ejemplo, en el Modelo 1 aparecen errores de aproximadamente .58 para satisfacción, .58 para satisfacción de crecimiento y .62 para motivación, mientras que en el Modelo 2 los errores son aproximadamente .62, .57 y .68, respectivamente.

Sin embargo, el aspecto más importante no es solamente comparar estos valores de error, sino entender qué está dejando fuera cada modelo. El Modelo 2 puede presentar un mejor ajuste global, pero al eliminar los estados psicológicos críticos también elimina una parte importante de la explicación teórica del proceso.

Un aspecto adicional importante: los problemas estadísticos. Los autores también mencionan que cuando utilizaron correlaciones corregidas por falta de confiabilidad surgieron problemas estadísticos en el Modelo 2. Las correlaciones infladas produjeron efectos de supresión, incluyendo un coeficiente estandarizado superior a 1.0, específicamente de 1.41 entre autonomía y satisfacción, además de algunas relaciones causales negativas entre variables que originalmente tenían correlaciones positivas. Estos resultados fueron considerados estadísticamente problemáticos, por lo que los autores decidieron mantener una postura conservadora y no utilizar las correlaciones corregidas en el análisis final.

Decisión final de los autores.

¿Por qué seleccionaron el Modelo 1? Los autores seleccionaron el Modelo 1 porque, aunque el Modelo 2 mostró un mejor ajuste estadístico, sus resultados fueron menos consistentes con la teoría del JCM. El Modelo 1 permitió observar que las características del trabajo pueden influir en los resultados de los empleados mediante los estados psicológicos críticos, en lugar de asumir que existe una relación directa entre las características del puesto y la satisfacción o motivación. Además, presentó 12 de 14 relaciones significativas y explicó una mayor proporción de la varianza en satisfacción y motivación. Por esta razón, los autores consideraron que el Modelo 1 proporcionaba una explicación más coherente del fenómeno, aun cuando estadísticamente el Modelo 2 tuviera mejores indicadores de ajuste.

CONCLUSIONES: El análisis de los dos modelos me permitió comprender que en un SEM no basta con elegir el modelo que presenta los mejores índices de ajuste. En este caso, aunque el Modelo 2 mostró un mejor ajuste estadístico, el Modelo 1 permitió conservar los estados psicológicos críticos y representar de mejor manera la lógica original de la teoría.

Como aprendizaje, considero que es importante interpretar los resultados estadísticos junto con el contexto y la teoría que se está estudiando. Un modelo puede parecer mejor numéricamente, pero si pierde relaciones importantes para explicar el fenómeno, su interpretación puede ser menos útil. Este ejercicio me ayudó a entender que los números orientan la decisión, pero no deben ser el único criterio para tomarla.

En la estructura del modelo se consideran características como variedad de habilidades, significancia de la tarea, identidad de la tarea, autonomía y retroalimentación, que se relacionan con los estados psicológicos de significado experimentado, responsabilidad experimentada y conocimiento de los resultados. Estos estados posteriormente se relacionan con resultados como satisfacción, satisfacción de crecimiento y motivación.

Después de analizar los dos modelos propuestos por los autores, se puede observar que el Modelo 2 presenta mejores resultados en cuanto al ajuste estadístico, ya que obtuvo un GFI de .99 y un CFI de .98, superiores a los obtenidos por el Modelo 1 (.91 y .89, respectivamente). Sin embargo, los autores decidieron utilizar el Modelo 1 porque no consideraron suficiente que un modelo tuviera mejores indicadores estadísticos. Al revisar los resultados con mayor detalle, encontraron que el Modelo 1 tenía mayor sentido de acuerdo con la teoría del Job Characteristics Model. En este modelo, los estados psicológicos críticos funcionan como un elemento que conecta las características del trabajo con los resultados del empleado. Además, 12 de las 14 relaciones planteadas fueron significativas y el modelo logró explicar una parte importante de la satisfacción y motivación de los trabajadores.

Por otro lado, en el Modelo 2 solamente 7 de las 15 relaciones fueron significativas y varias de las relaciones que aparecieron no coincidían con lo que la teoría esperaba. En particular, los autores encontraron que ocho de las nueve relaciones entre algunas características del trabajo y los resultados de los empleados no fueron significativas. Esto ayudó a entender que un modelo puede verse mejor en los números, pero no necesariamente explicar mejor el fenómeno que se está estudiando. Desde mi perspectiva, el principal aprendizaje de este ejercicio es que al realizar un SEM no se debe elegir automáticamente el modelo que tenga los mejores índices de ajuste. Es necesario revisar qué significan realmente las relaciones encontradas y si tienen sentido con la teoría y con el problema que se quiere explicar. En este caso, los autores prefirieron un modelo que, aunque estadísticamente no era el que mejor ajustaba, representaba de una manera más lógica cómo las características del trabajo pueden influir en los resultados de los empleados. Esto me deja como aprendizaje que el análisis estadístico debe servir para respaldar una explicación, y no sustituir el razonamiento detrás de ella.

LS0tCnRpdGxlOiAiQWN0aXZpZGFkIDMuIE1vZGVsbyBkZSBFY3VhY2lvbmVzIEVzdHJ1Y3R1cmFsZXMiCmF1dGhvcjogIlNoYXJvbiBTZXJyYW5vIC0gQTAwODM3Mjc0IgpkYXRlOiAiMjAyNi0wOC0yNCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRydWUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgIHRoZW1lOiB5ZXRpCi0tLQoKIVtdKGh0dHBzOi8vNjQubWVkaWEudHVtYmxyLmNvbS9iM2YyYWZhOTQ3OGFjMjU4MzMxNTZhMDc1MWM5ZGEzZS90dW1ibHJfcGdhdDc4dmkwcTF1cmx3eDhfNTAwLmdpZikKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBUZW9yw61hPC9zcGFuPgoKTG9zICoqTW9kZWxvcyBkZSBFY3VhY2lvbmVzIEVzdHJ1Y3R1cmFsZXMqKiBzb24gdW5hIHTDqWNuaWNhIGRlIGFuw6FsaXNpcyBkZSBlc3RhZMOtdGljYSBtdWx0aXZhcmlhZGEsIHF1ZSBwZXJtaXRlIGFuYWxpemFyIHBhdHJvbmVzIGNvbXBsZWpvcyBkZSByZWxhY2lvbmVzIGVudHJlIHZhcmlhYmxlcywgcmVhbGl6YXIgY29tcGFyYWNpb25lcyBlbnRyZSB1bnRyYWdydXBvc20geSB2YWxpZGFyIG1vZGVsb3MgdGXDs3JpY29zIHkgZW1ww61yaWNvcy4KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBFamVyY2ljaW8gMS4gSG9semluZ2VyIHkgU3dpbmVmb3JkPC9zcGFuPgpIb2xkemluZ2VyIHkgU3dpbmVmb3JkIHJlYWxpemFyb24gZXhhbWVuZXMgZGUgaGFiaWxpZGFkIG1lbnRhbCBhIGFkb2xlY2VudGVzIGRlIDcgeSA4IGdyYWRvIGRlIGRvcyBlc2N1ZWxhcyAoUGFzdGVpciB5IEdyYW5kLVdoaXRlKS4KCkxhIGJhc2UgZGUgZGF0b3MgZXN0w6EgaW5jbHVpZGEgY29tbyBwYXF1ZXRlIGVuIFIsIGUgaW5jbHV5ZSBsYXMgc2lndWVpbnRlcyBjb2x1bW5hczoKCiogc2V4OiBHw6luZXJvICgxPW1hbGUsIDI9ZmVtYWxlKQoqIHgxOiBQZXJjZXBjacOzbiBWaXN1YWwKKiB4MjogSnVlZ29zIGNvbiBjdWJvcwoqIHgzOiBKdWVnb3MgY29uIHBhc3RpbGxhcy9lc3BhY2lhbAoqIHg0OiBDb21wcmVuc2nDs24gZGUgcMOhcnJhZm9zCiogeDU6IENvbXBsZXRhciBvcmFjaW9uZXMKKiB4NjogU2lnbmlmaWNhZG8gZGUgcGFsYWJyYXMKKiB4NzogU3VtYXMgYWNlbGVyYWRhcwoqIHg4OiBDb250byBhY2VsZXJhZG8gZGUgcHVudG9zCiogeDk6IERpc2NyaW1pbmFjacOzbiBhY2VsZXJhZGEgZGUgbWF5w7pjdWxhcyByZWN0YXMgeSBjdXJ2YXMKClNlIGJ1c2NhIGlkZW50aWRpY2FyIGxhcyByZWxhY2lvbmVzIGVudHJlIGxhcyBoYWJpbGlkYWRlcyB2aXN1YWwgKHgxLCB4MiwgeDMpLCB0ZXh0dWFsICh4NCwgeDUseDYpIHkgdmVsb2NpZGFkICh4Nyx4OCx4OSkgZGUgbG9zIGFkb2xlc2NlbnRlcy4KCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj4gSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiNpbnN0YWxsLnBhY2thZ2VzKCJsYXZhYW4iKQpsaWJyYXJ5KGxhdmFhbikKI2luc3RhbGwucGFja2FnZXMoImxhdmFhblBsb3QiKQpsaWJyYXJ5KGxhdmFhblBsb3QpCiMgbGF2YWFuIHNpZ25pZmljYSBMYXRlbnQgdmFyaWFibGUgYW5hbHlzaXMKIyBpbnN0YWxsLnBhY2thZ2VzKCJyZWFkeGwiKQpsaWJyYXJ5KHJlYWR4bCkKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEltcG9ydGFyIGxhIGJhc2UgZGUgZGF0b3M8L3NwYW4+CmBgYHtyfQpkZjYgPC0gSG9semluZ2VyU3dpbmVmb3JkMTkzOQoKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEVudGVuZGVyIGxhIGJhc2UgZGUgZGF0b3M8L3NwYW4+CmBgYHtyfQpzdW1tYXJ5KGRmNikKc3RyKGRmNikKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IFRpcG9zIGRlIGbDs3JtdWxhczwvc3Bhbj4KMS4gUmVncmVzacOzbiAofikgVmFyaWFibGUgcXVlIGRlcGVuZGUgZGUgb3RyYXMuICAKMi4gVmFyaWFibGVzIGxhdGVudGVzICg9fikgTm8gc2Ugb2JzZXJ2YSwgc2UgaW5maWVyYSBhIHRyYXZleiBkZSBvdHJhcy4gIAozLiBWYXJpYW56YXMgeSBjb3ZhcmlhbnphcyAofn4pIFJlbGFjaW9uZXMgZW50cmUgdmFyaWFibGVzIGxhdGVuZXMgeSBsYXMgb2JzZXJ2YWRhcyAoVmFyaWFuemEgZW50cmUgc8OtIG1pc21hLCBDb3ZhcmlhbnphIHNpIGVzIGVudHJlIG90cmFzKS4gIAo0LiBJbnRlcmNlcHRvICh+MSkgVmFsb3IgZXNwZXJhZG8gY3VhbmRvIGxhcyBkZW3DoXMgdmFyaWFibGVzIHNvbiBjZXJvLiAgCgptb2RlbG8xIDwtICcgIyBSZWdyZXNpb25lcwoKICAgICAgICAgICAgICAjIFZhcmlhYmxlcyBsYXRlbnRlcwogICAgICAgICAgICAgIAogICAgICAgICAgICAgICMgVmFyaWFuemFzIHkgY292YXJpYW56YXMKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAjIEludGVyY2VwdG8KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAnCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEVzdHJ1Y3R1cmFyIGVsIG1vZGVsbzwvc3Bhbj4KYGBge3J9Cm1vZGVsbzEgPC0gJyAjIFJlZ3Jlc2lvbmVzCgogICAgICAgICAgICAgICMgVmFyaWFibGVzIGxhdGVudGVzCiAgICAgICAgICAgICAgdmlzdWFsID1+IHgxICsgeDIgKyB4MwogICAgICAgICAgICAgIHRleHR1YWwgPX4geDQgKyB4NSArIHg2CiAgICAgICAgICAgICAgdmVsb2NpZGFkID1+IHg3ICsgeDggKyB4OQogICAgICAgICAgICAgIAogICAgICAgICAgICAgICMgVmFyaWFuemFzIHkgY292YXJpYW56YXMKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAjIEludGVyY2VwdG8KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAnCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBHZW5lcmFyIGVsIEFuw6FsaXNpcyBGYWN0b3JpYWwgQ29uZmlybWF0b3JpbyAoQ0ZBKTwvc3Bhbj4KYGBge3J9CmZpdDEgPC0gc2VtKG1vZGVsbzEsIGRmNikgIyBwb25lbW9zIGVsIG1vZGVsbyB5IGxvcyBkYXRvcwpzdW1tYXJ5KGZpdDEpIApsYXZhYW5QbG90KGZpdDEsIGNvZWY9VFJVRSwgY292PVRSVUUpICMgbGUgcG9uZW1vcyBxdWUgbm9zIG11ZXN0cm8gY29lZmljaWVudGVzIHkgY292YXJpYW56YXMKCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBHZW5lcmFyIGVsIG1vZGVsbyBkZSBFY3VhY2lvbmVzIEVzdHJ1Y3R1cmFsZXMgKFNFTSk8L3NwYW4+CmBgYHtyfQpmaXQxMSA8LSBjZmEobW9kZWxvMSwgZGY2KSAjIHBvbmVtb3MgZWwgbW9kZWxvIHkgbG9zIGRhdG9zCnN1bW1hcnkoZml0MTEpIApsYXZhYW5QbG90KGZpdDExLCBjb2VmPVRSVUUsIGNvdj1UUlVFKQpgYGAKCgoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEVqZXJjaWNpbyAyLiBEZW1vY3JhY2lhIFBvbMOtdGljYSBlIEluZHVzdHJpYWxpemFjacOzbjwvc3Bhbj4KIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IENvbnRleHRvPC9zcGFuPgpMYSBiYXNlIGRlIGRhdG9zIGNvbnRpZW5lIGRpc3RpbnRhcyBtZWRpY2lvbmVzIHNvYnJlIGxhIGRlbW9jcmFjaWEgcG9sw610aWNhIGUgaW5kdXN0cmlhbGl6YWNpb24gZW4gcGHDrXNlcyBkZSBkZXNhcnJvbGxvIGR1cmFudGUgMTk2MCB5IDE5NjUuICAKTGEgdGFibGEgaW5jbGl5ZSBsb3Mgc2lndWllbnRlcyBkYXRvczogIAoKKiB5MTogQ2FsaWZpY2FjaW9uZXMgc29icmUgbGEgbGliZXJ0YWQgZGUgcHJlbnNhIGVuIDE5NjAKKiB5MjogTGliZXJ0YWQgZGUgbGEgb3Bvc2ljacOzbiBwb2xpdGljYSBlbiAxOTYwCiogeTM6IEltcGFyY2lhbGlkYWQgZGUgZWxlY2Npb25lcyBlbiAxOTYwCiogeTQ6IEVmaWNhY2lhIGRlIGxhIGxlZ2lzbGF0dXJhIGVsZWN0YSBlbiAxOTYwCiogeTU6IENhbGlmaWNhY2lvbmVzIHNvYnJlIGxhIGxpYmVydGFkIGRlIHByZW5zYSBlbiAxOTY1CiogeTY6IExpYmVydGFkIGRlIGxhIG9wb3NpY2nDs24gcG9saXRpY2EgZW4gMTk2NQoqIHk3OiBJbXBhcmNpYWxpZGFkIGRlIGVsZWNjaW9uZXMgZW4gMTk2NQoqIHk4OiBFZmljYWNpYSBkZSBsYSBsZWdpc2xhdHVyYSBlbGVjdGEgZW4gMTk2NQoqIHgxOiBQSUIgcGVyIGPDoXBpdGEgZW4gMTk2MAoqIHgyOiBDb25zdW1vIGRlIGVuZXJnaWEgaW5hbmltYWRhIHBlcm8gY8OhcGl0YSBlbiAxOTYwCiogeDM6IFBvcmNlbnRhamUgZGUgbGEgZnVlcnphIGxhYm9yYWwgZW4gbGEgaW5kdXN0cmlhIGVuIDE5NjAKYGBge3J9CmRmNyA8LSBQb2xpdGljYWxEZW1vY3JhY3kKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEVudGVuZGVyIGxhIGJhc2UgZGUgZGF0b3M8L3NwYW4+CmBgYHtyfQpzdW1tYXJ5KGRmNykKc3RyKGRmNykKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEVzdHJ1Y3R1cmFyIGVsIG1vZGVsbzwvc3Bhbj4KYGBge3J9Cm1vZGVsbzIgPC0gJwogICMgVmFyaWFibGVzIGxhdGVudGVzCiAgZGVtb2NyYWNpYTE5NjAgPX4geTEgKyB5MiArIHkzICsgeTQKICBkZW1vY3JhY2lhMTk2NSA9fiB5NSArIHk2ICsgeTcgKyB5OAogIGluZHVzdHJpYTE5NjAgPX4geDEgKyB4MiArIHgzCgogICMgUmVncmVzaW9uZXMKICBkZW1vY3JhY2lhMTk2MCB+IGluZHVzdHJpYTE5NjAKICBkZW1vY3JhY2lhMTk2NSB+IGluZHVzdHJpYTE5NjAgKyBkZW1vY3JhY2lhMTk2MAonCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBHZW5lcmFyIGVsIEFuw6FsaXNpcyBGYWN0b3JpYWwgQ29uZmlybWF0b3JpbyAoQ0ZBKTwvc3Bhbj4KYGBge3J9CmZpdDIgPC0gc2VtKG1vZGVsbzIsIGRhdGEgPSBkZjcpCnN1bW1hcnkoZml0MikKbGF2YWFuUGxvdChmaXQyLCBjb2VmPVRSVUUsIGNvdj1UUlVFKSAjIGxlIHBvbmVtb3MgcXVlIG5vcyBtdWVzdHJvIGNvZWZpY2llbnRlcyB5IGNvdmFyaWFuemFzCgpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj4gQ29uY2x1c2nDs248L3NwYW4+CkxhIGRlbW9jcmFjaWEgY3VlbnRhIGNvbiA4IGRlcmVjaG9zIHkgbGliZXJ0YWRlcyBwb2zDrXRpY2FzOiAgCgoxLiBMaWJlcnRhZCBkZSBmb3JtYXIgb3JnYW5pemFjaW9uZXMgeSB1bmlyc2UgYSBlbGxhcy4gIAoyLiBsaWJlcnRhZCBkZSBleHByZXNpw7NuLiAgCjMuIERlcmVjaG8gYWwgdm90by4gIAo0LiBEZXJlY2hvIGRlIGVsZWdpciBjYXJnb3MgcMO6YmxpY29zLiAgCjUuIERlcmVjaG8gZGUgbG9zIGzDrWRlcmVzIGEgY29tcGV0aXIgcG9yIHZvdG9zLiAgCjYuIExpYmVydGFkIGRlIHRlbmVyIGZ1ZW50ZXMgYWx0ZXJuYXRpdmFzIGRlIGluZm9ybWFjacOzbi4gIAo3LiBEZXJlY2hvIGRlIGVsZWNjaW9uZXMgbGlicmVzIHkganVzdGFzLiAgCjguIERlcmVjaG8gZGUgaW5zdGl0dWNpb25lcyBwYXJhIGhhY2VyIHF1ZSBsYXMgcG9sw610aWNhcyBndWJlcm5hbWVudGFsZXMgZGVwZW5kYW4gZGUgbG9zIHZvdG9zIHkgb3RyYXMgZXhwcmVzaW9uZXMgZGUgcHJlZmVyZW5jaWEuCgpFbiBlbCBsaWJybyAiV2h5IE5hdGlvbnMgRmFpbD8iIGxvcyBhdXRvcmVzIGNvbmNsdXllbiBxdWUgc29uIGxhcyBpbnN0aXR1Y2lvbmVzIGRlbCBwYcOtcyBsYXMgcXVlIGRldGVybWluYW4gZWwgw6l4aXRvIG8gZWwgZnJhY2Fzby4KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBFamVyY2ljaW8gMy4gTW90aXZhY2nDs24gTGFib3JhbDwvc3Bhbj4KCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj4gSW1wb3J0YXIgbGEgYmFzZSBkZSBkYXRvczwvc3Bhbj4KYGBge3J9CiNmaWxlLmNob29zZSgpCmRmOCA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvc2hhcm9udG9ycmVzL0Rvd25sb2Fkcy9BY3RpdmlkYWQzL0RhdG9zX1NFTV9FbmcueGxzeCIpCgpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj4gRW50ZW5kZXIgbGEgYmFzZSBkZSBkYXRvczwvc3Bhbj4KYGBge3J9CnN1bW1hcnkoZGY4KQpzdHIoZGY4KQpgYGAKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBDb250ZXh0bzwvc3Bhbj4KClVubyBkZSBsb3MgcmV0b3MgbcOhcyBpbXBvcnRhbnRlcyBkZSBsYXMgb3JnYW5pemFjaW9uZXMgZXMgZW50ZW5kZXIgZWwgZXN0YWRvIHkgYmllbmVzdGFyIGRlIGxvcyBjb2xhYm9yYWRvcmVzLCB5YSBxdWUgcHVlZGUgaW1wYWN0YXIgZGlyZWN0YW1lbnRlIGVuIGVsIGRlc2VtcGXDsW8geSBlbCBsb2dybyBkZSBsb3Mgb2JqZXRpdm9zLiAKCmBgYHtyfQpuYW1lcyhkZjgpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBFeHBlcmllbmNpYXMgZGUgUmVjdXBlcmFjacOzbjwvc3Bhbj4KCmBgYHtyfQptb2RlbG8zIDwtICcKCiAgIyBWYXJpYWJsZXMgbGF0ZW50ZXMKICBkZXNhcGVnbyA9fiBSUEQwMSArIFJQRDAyICsgUlBEMDMgKyBSUEQwNSArIFJQRDA2ICsgUlBEMDcgKyBSUEQwOCArIFJQRDA5ICsgUlBEMTAKICAKICByZWxhamFjacOzbiA9fiBSUkUwMiArIFJSRTAzICsgUlJFMDQgKyBSUkUwNSArIFJSRTA2ICsgUlJFMDcgKyBSUkUxMAogIAogIGNvbnRyb2wgPX4gUkNPMDIgKyBSQ08wMyArIFJDTzA0ICsgUkNPMDUgKyBSQ08wNiArIFJDTzA3CiAgCiAgZG9taW5pbyA9fiBSTUEwMiArIFJNQTAzICsgUk1BMDQgKyBSTUEwNSArIFJNQTA2ICsgUk1BMDcgKyBSTUEwOCArIFJNQTA5ICsgUk1BMTAKCicKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IEdlbmVyYXIgZWwgQW7DoWxpc2lzIEZhY3RvcmlhbCBDb25maXJtYXRvcmlvIChDRkEpPC9zcGFuPgpgYGB7cn0KZml0MyA8LSBzZW0obW9kZWxvMywgZGF0YSA9IGRmOCkKCnN1bW1hcnkoZml0MykKCmxhdmFhblBsb3QoZml0MywgY29lZiA9IFRSVUUsIGNvdiA9IFRSVUUpCgpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj4gUGFydGUgMi4gRW5lcmfDrWEgUmVjdXBlcmFkYTwvc3Bhbj4KYGBge3J9Cm1vZGVsbzQgPC0gJwogICMgVmFyaWFibGVzIGxhdGVudGVzCiAgZW5lcmfDrWEgPX4gRU4wMSArIEVOMDIgKyBFTjA0ICsgRU4wNSArIEVOMDYgKyBFTjA3ICsgRU4wOAonCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBHZW5lcmFyIGVsIEFuw6FsaXNpcyBGYWN0b3JpYWwgQ29uZmlybWF0b3JpbyAoQ0ZBKTwvc3Bhbj4KYGBge3J9CmZpdDQgPC0gc2VtKG1vZGVsbzQsIGRhdGEgPSBkZjgpCgpzdW1tYXJ5KGZpdDQpCgpsYXZhYW5QbG90KGZpdDQsIGNvZWYgPSBUUlVFLCBjb3YgPSBUUlVFKQoKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZCI+IFBhcnRlIDMuIEVuZXJnw61hIFJlY3VwZXJhZGE8L3NwYW4+CmBgYHtyfQptb2RlbG81IDwtICcKCiAgIyBWYXJpYWJsZXMgbGF0ZW50ZXMKICB2aWdvciA9fiBFVkkwMSArIEVWSTAyICsgRVZJMDMKICAKICBkZWRpY2FjacOzbiA9fiBFREUwMSArIEVERTAyICsgRURFMDMKICAKICBhYnNvcmNpw7NuX2RlX3RyYWJham8gPX4gRUFCMDEgKyBFQUIwMiArIEVBQjAzCgogICMgVmFyaWFuemFzIHkgY292YXJpYW56YXMKCiAgIyBJbnRlcmNlcHRvCgonCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPiBHZW5lcmFyIGVsIEFuw6FsaXNpcyBGYWN0b3JpYWwgQ29uZmlybWF0b3JpbyAoQ0ZBKTwvc3Bhbj4KYGBge3J9CiMjIEdlbmVyYXIgZWwgQW7DoWxpc2lzIEZhY3RvcmlhbCBDb25maXJtYXRvcmlvIChDRkEpCgpmaXQ1IDwtIHNlbShtb2RlbG81LCBkYXRhID0gZGY4KQoKc3VtbWFyeShmaXQ1KQoKbGF2YWFuUGxvdChmaXQ1LCBjb2VmID0gVFJVRSwgY292ID0gVFJVRSkKCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQiPkNvbmNsdXNpb25lczwvc3Bhbj4KCkVsIGFuw6FsaXNpcyBmYWN0b3JpYWwgY29uZmlybWF0b3JpbyBwZXJtaXRpw7Mgb3JnYW5pemFyIGxhcyB2YXJpYWJsZXMgb2JzZXJ2YWRhcyBlbiBkaWZlcmVudGVzIGRpbWVuc2lvbmVzIG8gZmFjdG9yZXMsIGZhY2lsaXRhbmRvIHN1IGludGVycHJldGFjacOzbiB5IHJlZHVjaWVuZG8gbGEgY29tcGxlamlkYWQgZGUgbG9zIGRhdG9zLiBMb3MgbW9kZWxvcyBwbGFudGVhZG9zIHBlcm1pdGllcm9uIHJlcHJlc2VudGFyIGNvbnN0cnVjdG9zIHJlbGFjaW9uYWRvcyBjb24gbGEgZGVtb2NyYWNpYSwgbGEgaW5kdXN0cmlhLCBlbCBkZXNhcGVnbywgbGEgcmVsYWphY2nDs24sIGVsIGNvbnRyb2wsIGVsIGRvbWluaW8sIGxhIGVuZXJnw61hLCBlbCB2aWdvciwgbGEgZGVkaWNhY2nDs24geSBsYSBhYnNvcmNpw7NuIGRlIHRyYWJham8uCgpFbiBjb25qdW50bywgZWwgYW7DoWxpc2lzIHByb3BvcmNpb25hIHVuYSBlc3RydWN0dXJhIG3DoXMgY2xhcmEgcGFyYSBjb21wcmVuZGVyIGxhcyByZWxhY2lvbmVzIGVudHJlIGxhcyB2YXJpYWJsZXMgeSBzaXJ2ZSBjb21vIGJhc2UgcGFyYSByZWFsaXphciBhbsOhbGlzaXMgcG9zdGVyaW9yZXMuIERlIGVzdGEgbWFuZXJhLCBlbCBDRkEgcGVybWl0ZSBjb21wcm9iYXIgc2kgbG9zIGluZGljYWRvcmVzIHNlbGVjY2lvbmFkb3MgcmVwcmVzZW50YW4gYWRlY3VhZGFtZW50ZSBsYXMgZGltZW5zaW9uZXMgcXVlIHNlIGJ1c2NhbiBlc3R1ZGlhci4KCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj4gRWplcmNpY2lvIDQuIE1vZGVsbyBkZSBDYXJhY3RlcsOtc3RpY2FzIGRlbCBQdWVzdG8gZGUgVHJhYmFqbzwvc3Bhbj4KCioqSU5TVFJVQ0NJT05FUzoqKgoKRW4gZWwgMjAwMCwgSi4gQmVoc29uLCBFcmlrIFIuIEVkZHkgeSBTdGV2ZW4gSi4gTG9yZW56ZXQgcHVibGljYXJvbiBlbCBlc3R1ZGlvICJUaGUgSW1wb3J0YW5jZSBvZiB0aGUgQ3JpdGljYWwgUHN5Y2hvbG9naWNhbCBTdGF0ZXMgaW4gdGhlIEpvYiBDaGFyYWN0ZXJpc3RpY3MgTW9kZWw6IEEgTWV0YS1BbmFseXRpYyBhbmQgU3RydWN0dXJhbCBFcXVhdGlvbnMgTW9kZWxpbmcgRXhhbWluYXRpb24iIGzDqWVsbyB5IGFuYWxpemEgbG9zIGRvcyBtb2RlbG9zIHF1ZSBsb3MgYXV0b3JlcyBwcm9wb25lbiwgZXZhbHVhbmRvIGxhcyBkaWZlcmVuY2lhcyBlbiBzdXMgY29uc2lkZXJhY2lvbmVzIGRlIGVzdHJ1Y3R1cmEsIGNvZWZpY2llbnRlcyB5IGxvcyBlcnJvcmVzLiBFbiBlbCBlc3R1ZGlvLCBsb3MgYXV0b3JlcyByZWNvbm9jZW4gcXVlIGVsIE1vZGVsbyAyIHRpZW5lIG1lam9yZXMgw61uZGljZXMgZGUgYWp1c3RlLCDCoXBlcm8gbm8gbG8gc2VsZWNjaW9uYW4hIFNlbGVjY2lvbmFyb24gZWwgTW9kZWxvIDEuIMK/UG9yIHF1w6k/IEV4cGxpY2EgcG9yIHF1w6kgbG9zIGF1dG9yZXMgZGVjaWRpZXJvbiBzZWxlY2Npb25hciBlbCBNb2RlbG8gMSBjb21vIGVsIG1vZGVsbyBmaW5hbCB5IG5vIGVsIE1vZGVsbyAyLiBGdW5kYW1lbnRhIHN1IHJlc3B1ZXN0YSBjb24gZXZpZGVuY2lhIG9idGVuaWRhIGRlIGxhcyB0YWJsYXMsIGZpZ3VyYXMgeSBsYSBkaXNjdXNpw7NuIGRlbCBhcnTDrWN1bG8uIMK/UXXDqSBsZWNjacOzbiB0ZSBkZWphPyArIENvbmNsdXNpb25lcwoKKipJTlRST0RVQ0NJw5NOKioKCkVsIGVzdHVkaW8gZGUgQmVoc29uLCBFZGR5IHkgTG9yZW56ZXQgKDIwMDApIGFuYWxpemEgZWwgSm9iIENoYXJhY3RlcmlzdGljcyBNb2RlbCAoSkNNKSwgdW4gbW9kZWxvIHF1ZSBidXNjYSBleHBsaWNhciBjw7NtbyBjaWVydGFzIGNhcmFjdGVyw61zdGljYXMgZGVsIHRyYWJham8gcHVlZGVuIGluZmx1aXIgZW4gZGlmZXJlbnRlcyByZXN1bHRhZG9zIGRlIGxvcyBlbXBsZWFkb3MsIGNvbW8gbGEgc2F0aXNmYWNjacOzbiB5IGxhIG1vdGl2YWNpw7NuLiBFbiBlc3RlIGVzdHVkaW8sIGxvcyBhdXRvcmVzIGNvbXBhcmFuIGRvcyBmb3JtYXMgZGUgcmVwcmVzZW50YXIgZWwgbW9kZWxvIG1lZGlhbnRlIGVjdWFjaW9uZXMgZXN0cnVjdHVyYWxlcyAoU0VNKTogZWwgTW9kZWxvIDEsIGNvcnJlc3BvbmRpZW50ZSBhbCBtb2RlbG8gb3JpZ2luYWwgZGVsIEpDTSwgeSBlbCBNb2RlbG8gMiwgY29ycmVzcG9uZGllbnRlIGFsIG1vZGVsbyBxdWUgbm9ybWFsbWVudGUgc2UgaGFiw61hIHV0aWxpemFkbyBlbiBpbnZlc3RpZ2FjaW9uZXMgYW50ZXJpb3Jlcy4gRWwgb2JqZXRpdm8gZGUgZXN0ZSBhbsOhbGlzaXMgZXMgY29tcGFyYXIgYW1ib3MgbW9kZWxvcyBubyBzb2xhbWVudGUgcG9yIHN1cyBpbmRpY2Fkb3JlcyBlc3RhZMOtc3RpY29zLCBzaW5vIHRhbWJpw6luIHBvciBsYSBsw7NnaWNhIGRlIHN1cyByZWxhY2lvbmVzIHkgcG9yIHF1w6kgbG9zIGF1dG9yZXMgY29uc2lkZXJhbiBxdWUgdW5vIHJlcHJlc2VudGEgbWVqb3IgbGEgdGVvcsOtYS4KCioqQW7DoWxpc2lzIGRlbCBNb2RlbG8gMTogTW9kZWxvIG9yaWdpbmFsIGRlbCBKQ00qKgoKRWwgTW9kZWxvIDEgY29ycmVzcG9uZGUgYWwgbW9kZWxvIG9yaWdpbmFsIHByb3B1ZXN0byBwb3IgSGFja21hbiB5IE9sZGhhbS4gU3UgcHJpbmNpcGFsIGNhcmFjdGVyw61zdGljYSBlcyBxdWUgY29uc2lkZXJhIGxvcyBlc3RhZG9zIHBzaWNvbMOzZ2ljb3MgY3LDrXRpY29zIChDUFMpIGNvbW8gdW5hIHBhcnRlIGZ1bmRhbWVudGFsIGRlbCBwcm9jZXNvIHF1ZSBjb25lY3RhIGxhcyBjYXJhY3RlcsOtc3RpY2FzIGRlbCB0cmFiYWpvIGNvbiBsb3MgcmVzdWx0YWRvcyBkZSBsb3MgZW1wbGVhZG9zLiBFcyBkZWNpciwgZWwgbW9kZWxvIHBsYW50ZWEgcXVlIGxhcyBjYXJhY3RlcsOtc3RpY2FzIGRlbCBwdWVzdG8gbm8gbmVjZXNhcmlhbWVudGUgcHJvZHVjZW4gZGlyZWN0YW1lbnRlIHNhdGlzZmFjY2nDs24gbyBtb3RpdmFjacOzbiwgc2lubyBxdWUgcHJpbWVybyBnZW5lcmFuIGRldGVybWluYWRhcyBleHBlcmllbmNpYXMgcHNpY29sw7NnaWNhcyBlbiBlbCB0cmFiYWphZG9yLgoKfCBJbmRpY2Fkb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlbG8gMSB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLTogfAp8IM+HwrIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMjQuMjUgfAp8IEdGSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgLjkxIHwKfCBSTVNFQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIC4xNCB8CnwgQ0ZJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAuODkgfAp8IFJlbGFjaW9uZXMgc2lnbmlmaWNhdGl2YXMgICAgICAgICAgICB8IDEyIGRlIDE0IHwKfCBWYXJpYW56YSBzYXRpc2ZhY2Npw7NuICAgICAgICAgICAgICAgIHwgICAgICA0MiUgfAp8IFZhcmlhbnphIHNhdGlzZmFjY2nDs24gZGUgY3JlY2ltaWVudG8gfCAgICAgIDQyJSB8CnwgVmFyaWFuemEgbW90aXZhY2nDs24gICAgICAgICAgICAgICAgICB8ICAgICAgMzglIHwKfCBBSUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5NC40OCB8CnwgQ0FJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NDYuMjkgfAoKTG9zIHJlc3VsdGFkb3MgbXVlc3RyYW4gcXVlIGVsIE1vZGVsbyAxIHRpZW5lIHVuIGFqdXN0ZSBhY2VwdGFibGUgZW4gR0ZJIHkgQ0ZJLCBhdW5xdWUgZWwgUk1TRUEgZGUgLjE0IHkgZWwgdmFsb3IgZGUgz4fCsiBpbmRpY2FuIHF1ZSB0b2RhdsOtYSBleGlzdGVuIGFzcGVjdG9zIHF1ZSBwb2Ryw61hbiBtZWpvcmFyLiBTaW4gZW1iYXJnbywgZWwgbW9kZWxvIHByZXNlbnRhIHVuYSBjYXJhY3RlcsOtc3RpY2EgaW1wb3J0YW50ZTogMTIgZGUgc3VzIDE0IHJlbGFjaW9uZXMgZnVlcm9uIGVzdGFkw61zdGljYW1lbnRlIHNpZ25pZmljYXRpdmFzIHkgbG9ncmEgZXhwbGljYXIgZWwgNDIlIGRlIGxhIHNhdGlzZmFjY2nDs24sIGVsIDQyJSBkZSBsYSBzYXRpc2ZhY2Npw7NuIGRlIGNyZWNpbWllbnRvIHkgZWwgMzglIGRlIGxhIG1vdGl2YWNpw7NuLgoKKipJTlRFUlBSRVRBQ0nDk04qKgoKRW4gdMOpcm1pbm9zIHNlbmNpbGxvcywgZWwgTW9kZWxvIDEgcGVybWl0ZSBvYnNlcnZhciBxdWUgbGFzIGNhcmFjdGVyw61zdGljYXMgZGVsIHRyYWJham8gcGFyZWNlbiB0ZW5lciBzZW50aWRvIGRlbnRybyBkZSB1bmEgY2FkZW5hIGzDs2dpY2E6IHByaW1lcm8gaW5mbHV5ZW4gZW4gbGEgZXhwZXJpZW5jaWEgcHNpY29sw7NnaWNhIGRlbCB0cmFiYWphZG9yIHkgcG9zdGVyaW9ybWVudGUgZXN0YSBleHBlcmllbmNpYSBzZSByZWxhY2lvbmEgY29uIHN1cyByZXN1bHRhZG9zLiBQb3IgZXNvLCBhdW5xdWUgZWwgbW9kZWxvIG5vIHByZXNlbnRhIGVsIG1lam9yIGFqdXN0ZSBlc3RhZMOtc3RpY28sIHN1cyByZWxhY2lvbmVzIHNvbiBtw6FzIGNvbnNpc3RlbnRlcyBjb24gbGEgZXhwbGljYWNpw7NuIHF1ZSBwcm9wb25lIGxhIHRlb3LDrWEuCgoqKkFuw6FsaXNpcyBkZWwgTW9kZWxvIDI6IEpDTSBub3JtYWxtZW50ZSB1dGlsaXphZG8qKgoKRWwgTW9kZWxvIDIgcmVwcmVzZW50YSBsYSB2ZXJzacOzbiBkZWwgSkNNIHF1ZSBub3JtYWxtZW50ZSBzZSBoYWLDrWEgdXRpbGl6YWRvIGVuIGxhIGxpdGVyYXR1cmEuIExhIHByaW5jaXBhbCBkaWZlcmVuY2lhIGVzIHF1ZSBzZSBlbGltaW5hbiBsb3MgZXN0YWRvcyBwc2ljb2zDs2dpY29zIGNyw610aWNvcyB5IGxhcyBjYXJhY3RlcsOtc3RpY2FzIGRlbCB0cmFiYWpvIHNlIHJlbGFjaW9uYW4gZGlyZWN0YW1lbnRlIGNvbiBsb3MgcmVzdWx0YWRvcyBkZSBsb3MgZW1wbGVhZG9zLgoKRXN0byBoYWNlIHF1ZSBlbCBtb2RlbG8gc2VhIG11Y2hvIG3DoXMgc2VuY2lsbG8geSB0ZW5nYSBtZW5vcyBldGFwYXMgaW50ZXJtZWRpYXMuIFNpbiBlbWJhcmdvLCBlc3RhIHNpbXBsaWZpY2FjacOzbiB0YW1iacOpbiBjYW1iaWEgbGEgZm9ybWEgZW4gcXVlIHNlIGludGVycHJldGEgbGEgcmVsYWNpw7NuIGVudHJlIGxhcyBjYXJhY3RlcsOtc3RpY2FzIGRlbCB0cmFiYWpvIHkgbG9zIHJlc3VsdGFkb3MuCgoqKlJFU1VMVEFET1M6ICoqCgoKfCBJbmRpY2Fkb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlbG8gMiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLTogfAp8IM+HwrIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMTIuMDkgfAp8IEdGSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgLjk5IHwKfCBSTVNFQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIC4xNiB8CnwgQ0ZJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAuOTggfAp8IFJlbGFjaW9uZXMgc2lnbmlmaWNhdGl2YXMgICAgICAgICAgICB8ICA3IGRlIDE1IHwKfCBWYXJpYW56YSBzYXRpc2ZhY2Npw7NuICAgICAgICAgICAgICAgIHwgICAgICAzNyUgfAp8IFZhcmlhbnphIHNhdGlzZmFjY2nDs24gZGUgY3JlY2ltaWVudG8gfCAgICAgIDQzJSB8CnwgVmFyaWFuemEgbW90aXZhY2nDs24gICAgICAgICAgICAgICAgICB8ICAgICAgMzIlIHwKfCBBSUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4MC4wOSB8CnwgQ0FJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMjcuNTYgfAoKKipJTlRFUlBSRVRBQ0nDk046ICAqKgoKQSBwcmltZXJhIHZpc3RhLCBlbCBNb2RlbG8gMiBwYXJlY2Ugc2VyIG1lam9yIGVzdGFkw61zdGljYW1lbnRlLiBQcmVzZW50YSB1biBHRkkgZGUgLjk5IHkgdW4gQ0ZJIGRlIC45OCwgYW1ib3Mgc3VwZXJpb3JlcyBhIGxvcyBkZWwgTW9kZWxvIDEuIEFkZW3DoXMsIHN1IEFJQyB5IENBSUMgc29uIG1lbm9yZXMsIGxvIHF1ZSBpbmRpY2EgdW4gbWVqb3IgYWp1c3RlIGFsIGNvbXBhcmFyIGFtYm9zIG1vZGVsb3MgbWVkaWFudGUgZXN0b3MgY3JpdGVyaW9zLiBTaW4gZW1iYXJnbywgZWwgUk1TRUEgY29udGluw7phIHNpZW5kbyBwb2NvIGZhdm9yYWJsZSwgY29uIHVuIHZhbG9yIGRlIC4xNi4KClVuIHB1bnRvIGltcG9ydGFudGUgZXMgcXVlIHNvbGFtZW50ZSA3IGRlIGxhcyAxNSByZWxhY2lvbmVzIGZ1ZXJvbiBlc3RhZMOtc3RpY2FtZW50ZSBzaWduaWZpY2F0aXZhcywgZnJlbnRlIGEgbGFzIDEyIGRlIDE0IHJlbGFjaW9uZXMgc2lnbmlmaWNhdGl2YXMgZGVsIE1vZGVsbyAxLiBBZGVtw6FzLCBlbCBNb2RlbG8gMiBleHBsaWNhIHVuYSBtZW5vciBwcm9wb3JjacOzbiBkZSBsYSB2YXJpYW56YSBlbiBzYXRpc2ZhY2Npw7NuIHkgbW90aXZhY2nDs24uCgoqKkNvbXBhcmFjacOzbiBkZSBsb3MgZG9zIG1vZGVsb3M6KioKCkFsIGNvbXBhcmFyIGFtYm9zIG1vZGVsb3MsIHNlIG9ic2VydmEgdW5hIHNpdHVhY2nDs24gaW50ZXJlc2FudGUuIEVsIE1vZGVsbyAyIHRpZW5lIG1lam9yZXMgaW5kaWNhZG9yZXMgZGUgYWp1c3RlLCB5YSBxdWUgcHJlc2VudGEgdW4gR0ZJIHkgQ0ZJIG3DoXMgYWx0b3MgeSB2YWxvcmVzIGRlIEFJQyB5IENBSUMgbcOhcyBiYWpvcy4gSW5jbHVzbyBsb3MgcHJvcGlvcyBhdXRvcmVzIHJlY29ub2NlbiBxdWUsIGRlc2RlIGVsIHB1bnRvIGRlIHZpc3RhIGVzdGFkw61zdGljbywgZWwgTW9kZWxvIDIgcHJvcG9yY2lvbmEgdW4gbWVqb3IgYWp1c3RlIGEgbG9zIGRhdG9zLiBTaW4gZW1iYXJnbywgZWwgTW9kZWxvIDEgcHJlc2VudGEgdW5hIG1heW9yIHByb3BvcmNpw7NuIGRlIHJlbGFjaW9uZXMgZXN0YWTDrXN0aWNhbWVudGUgc2lnbmlmaWNhdGl2YXMgeSBleHBsaWNhIHVuYSBtYXlvciBjYW50aWRhZCBkZSB2YXJpYWNpw7NuIGVuIGFsZ3Vub3MgZGUgbG9zIHJlc3VsdGFkb3MgZXN0dWRpYWRvcy4KCnwgQXNwZWN0byAgICAgICAgICAgICAgICAgICB8ICBNb2RlbG8gMSB8ICAgTW9kZWxvIDIgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLTogfCAtLS0tLS0tLS06IHwKfCBHRkkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgLjkxIHwgICAgKiouOTkqKiB8CnwgQ0ZJICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIC44OSB8ICAgICoqLjk4KiogfAp8IFJNU0VBICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAuMTQgfCAgICAgICAgLjE2IHwKfCBSZWxhY2lvbmVzIHNpZ25pZmljYXRpdmFzIHwgKioxMi8xNCoqIHwgICAgICAgNy8xNSB8CnwgU2F0aXNmYWNjacOzbiBleHBsaWNhZGEgICAgfCAgICoqNDIlKiogfCAgICAgICAgMzclIHwKfCBDcmVjaW1pZW50byBleHBsaWNhZG8gICAgIHwgICAgICAgNDIlIHwgICAgKio0MyUqKiB8CnwgTW90aXZhY2nDs24gZXhwbGljYWRhICAgICAgfCAgICoqMzglKiogfCAgICAgICAgMzIlIHwKfCBBSUMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMjk0LjQ4IHwgICoqODAuMDkqKiB8CnwgQ0FJQyAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQ0Ni4yOSB8ICoqMjI3LjU2KiogfAoKCioqSU5URVJQUkVUQUNJw5NOOiAgKioKCkVzdG8gZGVtdWVzdHJhIHF1ZSBldmFsdWFyIHVuIFNFTSBubyBjb25zaXN0ZSBzaW1wbGVtZW50ZSBlbiBidXNjYXIgZWwgbsO6bWVybyBtw6FzIGFsdG8gZW4gbG9zIGluZGljYWRvcmVzIGRlIGFqdXN0ZS4gU2kgc2Ugb2JzZXJ2YXJhbiDDum5pY2FtZW50ZSBlc3RvcyBpbmRpY2Fkb3JlcywgbGEgZWxlY2Npw7NuIGzDs2dpY2Egc2Vyw61hIGVsIE1vZGVsbyAyLiBTaW4gZW1iYXJnbywgYWwgYW5hbGl6YXIgcXXDqSBvY3VycmUgY29uIGxhcyByZWxhY2lvbmVzIGVudHJlIGxhcyB2YXJpYWJsZXMsIGFwYXJlY2VuIGRpZmVyZW5jaWFzIGltcG9ydGFudGVzIHF1ZSBoYWNlbiBxdWUgZWwgTW9kZWxvIDEgc2VhIG3DoXMgaW50ZXJlc2FudGUgZGVzZGUgZWwgcHVudG8gZGUgdmlzdGEgdGXDs3JpY28uICAKCioqwr9Qb3IgcXXDqSBsb3MgYXV0b3JlcyBOTyBlbGlnaWVyb24gZWwgTW9kZWxvIDI/KioKCkF1bnF1ZSBlbCBNb2RlbG8gMiBwcmVzZW50YSBtZWpvcmVzIMOtbmRpY2VzIGRlIGFqdXN0ZSwgbG9zIGF1dG9yZXMgZGVjaWRpZXJvbiBzZWxlY2Npb25hciBlbCBNb2RlbG8gMSBwb3JxdWUgY29uc2lkZXJhcm9uIHF1ZSBsYSBjYWxpZGFkIGRlIHVuIG1vZGVsbyBubyBkZWJlIGV2YWx1YXJzZSDDum5pY2FtZW50ZSBwb3IgcXXDqSB0YW4gYmllbiBzZSBhanVzdGEgZXN0YWTDrXN0aWNhbWVudGUgYSBsb3MgZGF0b3MuIFRhbWJpw6luIGVzIG5lY2VzYXJpbyBhbmFsaXphciBzaSBsYXMgcmVsYWNpb25lcyBxdWUgcHJlc2VudGEgdGllbmVuIHNlbnRpZG8gZGUgYWN1ZXJkbyBjb24gbGEgdGVvcsOtYS4gTG9zIGF1dG9yZXMgc2XDsWFsYW4gcXVlIHVuYSBjb21wYXJhY2nDs24gYWRlY3VhZGEgZW50cmUgbW9kZWxvcyByZXF1aWVyZSBjb25zaWRlcmFyIHRhbnRvIGxvcyB2YWxvcmVzIG9idGVuaWRvcyBjb21vIGxhIGNvcnJlc3BvbmRlbmNpYSBkZWwgbW9kZWxvIGNvbiBsYSB0ZW9yw61hIGV4aXN0ZW50ZS4KClVubyBkZSBsb3MgcHJpbmNpcGFsZXMgcHJvYmxlbWFzIGVuY29udHJhZG9zIGVuIGVsIE1vZGVsbyAyIGZ1ZSBxdWUgb2NobyBkZSBsYXMgbnVldmUgcmVsYWNpb25lcyBlbnRyZSB2YXJpZWRhZCBkZSBoYWJpbGlkYWRlcywgc2lnbmlmaWNhbmNpYSBkZSBsYSB0YXJlYSBlIGlkZW50aWRhZCBkZSBsYSB0YXJlYSB5IGxvcyB0cmVzIHJlc3VsdGFkb3MgZmluYWxlcyBubyBmdWVyb24gZXN0YWTDrXN0aWNhbWVudGUgc2lnbmlmaWNhdGl2YXMuIEVzdG8gaWJhIGVuIGNvbnRyYSBkZSBhbGd1bmFzIHJlbGFjaW9uZXMgcXVlIGxhIHRlb3LDrWEgZGVsIEpDTSBlc3BlcmFiYSBlbmNvbnRyYXIuCgpFbiBjYW1iaW8sIGVuIGVsIE1vZGVsbyAxLCBsYSB2YXJpZWRhZCBkZSBoYWJpbGlkYWRlcyB5IGxhIHNpZ25pZmljYW5jaWEgZGUgbGEgdGFyZWEgcHJlc2VudGFyb24gcmVsYWNpb25lcyBpbmRpcmVjdGFzIHBvc2l0aXZhcyB5IHNpZ25pZmljYXRpdmFzIGNvbiBsb3MgcmVzdWx0YWRvcywgcGFzYW5kbyBwcmltZXJvIHBvciBlbCBlc3RhZG8gcHNpY29sw7NnaWNvIGRlIHNpZ25pZmljYWRvIGV4cGVyaW1lbnRhZG8uIEVzdG8gcGVybWl0acOzIGEgbG9zIGF1dG9yZXMgaW50ZXJwcmV0YXIgcXVlIGVzdGFzIGNhcmFjdGVyw61zdGljYXMgZGVsIHRyYWJham8gc8OtIHB1ZWRlbiBzZXIgaW1wb3J0YW50ZXMsIHBlcm8gcXVlIHN1IGVmZWN0byBvY3VycmUgYSB0cmF2w6lzIGRlIGxhIGV4cGVyaWVuY2lhIHBzaWNvbMOzZ2ljYSBkZWwgdHJhYmFqYWRvci4KCgoqKsK/UXXDqSBub3MgZGljZW4gbG9zIGNvZWZpY2llbnRlcz8gKioKCmltcG9ydGFudGVzLiBFbiBlbCBNb2RlbG8gMSwgdmFyaWFzIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBjb25lY3RhbiBsYXMgY2FyYWN0ZXLDrXN0aWNhcyBkZWwgdHJhYmFqbyBjb24gbG9zIGVzdGFkb3MgcHNpY29sw7NnaWNvcyBjcsOtdGljb3Mgc29uIHNpZ25pZmljYXRpdmFzLiBQb3IgZWplbXBsbywgbGEgdmFyaWVkYWQgZGUgaGFiaWxpZGFkZXMgcHJlc2VudGEgdW4gY29lZmljaWVudGUgZXN0YW5kYXJpemFkbyBkZSAuMzEgaGFjaWEgZWwgc2lnbmlmaWNhZG8gZXhwZXJpbWVudGFkbyB5IGxhIHNpZ25pZmljYW5jaWEgZGUgbGEgdGFyZWEgcHJlc2VudGEgdW4gY29lZmljaWVudGUgZGUgLjI0LCBhbWJvcyBzaWduaWZpY2F0aXZvcy4gUG9zdGVyaW9ybWVudGUsIGVsIHNpZ25pZmljYWRvIGV4cGVyaW1lbnRhZG8gc2UgcmVsYWNpb25hIHNpZ25pZmljYXRpdmFtZW50ZSBjb24gc2F0aXNmYWNjacOzbiAoLjUwKSwgc2F0aXNmYWNjacOzbiBkZSBjcmVjaW1pZW50byAoLjQ5KSB5IG1vdGl2YWNpw7NuICguMzUpLgoKRW4gZWwgTW9kZWxvIDIsIGFsIGVsaW1pbmFyIGxvcyBlc3RhZG9zIHBzaWNvbMOzZ2ljb3MgY3LDrXRpY29zLCBtdWNoYXMgZGUgbGFzIHJlbGFjaW9uZXMgZGlyZWN0YXMgZW50cmUgbGFzIGNhcmFjdGVyw61zdGljYXMgZGVsIHRyYWJham8geSBsb3MgcmVzdWx0YWRvcyBwcmVzZW50YW4gY29lZmljaWVudGVzIHBlcXVlw7FvcyB5IG5vIHNpZ25pZmljYXRpdm9zLiBQb3IgZWplbXBsbywgdmFyaWFzIGRlIGxhcyByZWxhY2lvbmVzIHJlbGFjaW9uYWRhcyBjb24gdmFyaWVkYWQgZGUgaGFiaWxpZGFkZXMsIHNpZ25pZmljYW5jaWEgZSBpZGVudGlkYWQgZGUgbGEgdGFyZWEgbm8gcmVzdWx0YW4gc2lnbmlmaWNhdGl2YXMuIEVzdG8gZXMgaW1wb3J0YW50ZSBwb3JxdWUgdW4gY29lZmljaWVudGUgZXN0YWTDrXN0aWNhbWVudGUgZMOpYmlsIG5vIG5lY2VzYXJpYW1lbnRlIHNpZ25pZmljYSBxdWUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlbCB0cmFiYWpvIG5vIHRlbmdhIGltcG9ydGFuY2lhOyBwdWVkZSBpbmRpY2FyIHF1ZSBzdSBlZmVjdG8gb2N1cnJlIGluZGlyZWN0YW1lbnRlIGEgdHJhdsOpcyBkZSBvdHJhIHZhcmlhYmxlLCBjb21vIHN1Y2VkZSBlbiBlbCBNb2RlbG8gMS4gIAoKKirCv1kgcXXDqSBwYXNhIGNvbiBsb3MgZXJyb3Jlcz8gICoqCgpMb3MgZXJyb3JlcyB0YW1iacOpbiBmb3JtYW4gcGFydGUgZGUgbGEgY29tcGFyYWNpw7NuLCB5YSBxdWUgcmVwcmVzZW50YW4gYXF1ZWxsYSBwYXJ0ZSBkZSBsb3MgcmVzdWx0YWRvcyBxdWUgZWwgbW9kZWxvIG5vIGxvZ3JhIGV4cGxpY2FyLiBFbiBsYXMgZmlndXJhcyBkZWwgZXN0dWRpbywgbG9zIGF1dG9yZXMgbXVlc3RyYW4gdMOpcm1pbm9zIGRlIGVycm9yIGFzb2NpYWRvcyBhIGxhcyB2YXJpYWJsZXMgZGUgcmVzdWx0YWRvLiBQb3IgZWplbXBsbywgZW4gZWwgTW9kZWxvIDEgYXBhcmVjZW4gZXJyb3JlcyBkZSBhcHJveGltYWRhbWVudGUgLjU4IHBhcmEgc2F0aXNmYWNjacOzbiwgLjU4IHBhcmEgc2F0aXNmYWNjacOzbiBkZSBjcmVjaW1pZW50byB5IC42MiBwYXJhIG1vdGl2YWNpw7NuLCBtaWVudHJhcyBxdWUgZW4gZWwgTW9kZWxvIDIgbG9zIGVycm9yZXMgc29uIGFwcm94aW1hZGFtZW50ZSAuNjIsIC41NyB5IC42OCwgcmVzcGVjdGl2YW1lbnRlLgoKU2luIGVtYmFyZ28sIGVsIGFzcGVjdG8gbcOhcyBpbXBvcnRhbnRlIG5vIGVzIHNvbGFtZW50ZSBjb21wYXJhciBlc3RvcyB2YWxvcmVzIGRlIGVycm9yLCBzaW5vIGVudGVuZGVyIHF1w6kgZXN0w6EgZGVqYW5kbyBmdWVyYSBjYWRhIG1vZGVsby4gRWwgTW9kZWxvIDIgcHVlZGUgcHJlc2VudGFyIHVuIG1lam9yIGFqdXN0ZSBnbG9iYWwsIHBlcm8gYWwgZWxpbWluYXIgbG9zIGVzdGFkb3MgcHNpY29sw7NnaWNvcyBjcsOtdGljb3MgdGFtYmnDqW4gZWxpbWluYSB1bmEgcGFydGUgaW1wb3J0YW50ZSBkZSBsYSBleHBsaWNhY2nDs24gdGXDs3JpY2EgZGVsIHByb2Nlc28uCgoqKlVuIGFzcGVjdG8gYWRpY2lvbmFsIGltcG9ydGFudGU6IGxvcyBwcm9ibGVtYXMgZXN0YWTDrXN0aWNvcy4gICoqCkxvcyBhdXRvcmVzIHRhbWJpw6luIG1lbmNpb25hbiBxdWUgY3VhbmRvIHV0aWxpemFyb24gY29ycmVsYWNpb25lcyBjb3JyZWdpZGFzIHBvciBmYWx0YSBkZSBjb25maWFiaWxpZGFkIHN1cmdpZXJvbiBwcm9ibGVtYXMgZXN0YWTDrXN0aWNvcyBlbiBlbCBNb2RlbG8gMi4gTGFzIGNvcnJlbGFjaW9uZXMgaW5mbGFkYXMgcHJvZHVqZXJvbiBlZmVjdG9zIGRlIHN1cHJlc2nDs24sIGluY2x1eWVuZG8gdW4gY29lZmljaWVudGUgZXN0YW5kYXJpemFkbyBzdXBlcmlvciBhIDEuMCwgZXNwZWPDrWZpY2FtZW50ZSBkZSAxLjQxIGVudHJlIGF1dG9ub23DrWEgeSBzYXRpc2ZhY2Npw7NuLCBhZGVtw6FzIGRlIGFsZ3VuYXMgcmVsYWNpb25lcyBjYXVzYWxlcyBuZWdhdGl2YXMgZW50cmUgdmFyaWFibGVzIHF1ZSBvcmlnaW5hbG1lbnRlIHRlbsOtYW4gY29ycmVsYWNpb25lcyBwb3NpdGl2YXMuIEVzdG9zIHJlc3VsdGFkb3MgZnVlcm9uIGNvbnNpZGVyYWRvcyBlc3RhZMOtc3RpY2FtZW50ZSBwcm9ibGVtw6F0aWNvcywgcG9yIGxvIHF1ZSBsb3MgYXV0b3JlcyBkZWNpZGllcm9uIG1hbnRlbmVyIHVuYSBwb3N0dXJhIGNvbnNlcnZhZG9yYSB5IG5vIHV0aWxpemFyIGxhcyBjb3JyZWxhY2lvbmVzIGNvcnJlZ2lkYXMgZW4gZWwgYW7DoWxpc2lzIGZpbmFsLiAgCgoqKkRlY2lzacOzbiBmaW5hbCBkZSBsb3MgYXV0b3Jlcy4gKiogCgoqKsK/UG9yIHF1w6kgc2VsZWNjaW9uYXJvbiBlbCBNb2RlbG8gMT8gICoqCkxvcyBhdXRvcmVzIHNlbGVjY2lvbmFyb24gZWwgTW9kZWxvIDEgcG9ycXVlLCBhdW5xdWUgZWwgTW9kZWxvIDIgbW9zdHLDsyB1biBtZWpvciBhanVzdGUgZXN0YWTDrXN0aWNvLCBzdXMgcmVzdWx0YWRvcyBmdWVyb24gbWVub3MgY29uc2lzdGVudGVzIGNvbiBsYSB0ZW9yw61hIGRlbCBKQ00uIEVsIE1vZGVsbyAxIHBlcm1pdGnDsyBvYnNlcnZhciBxdWUgbGFzIGNhcmFjdGVyw61zdGljYXMgZGVsIHRyYWJham8gcHVlZGVuIGluZmx1aXIgZW4gbG9zIHJlc3VsdGFkb3MgZGUgbG9zIGVtcGxlYWRvcyBtZWRpYW50ZSBsb3MgZXN0YWRvcyBwc2ljb2zDs2dpY29zIGNyw610aWNvcywgZW4gbHVnYXIgZGUgYXN1bWlyIHF1ZSBleGlzdGUgdW5hIHJlbGFjacOzbiBkaXJlY3RhIGVudHJlIGxhcyBjYXJhY3RlcsOtc3RpY2FzIGRlbCBwdWVzdG8geSBsYSBzYXRpc2ZhY2Npw7NuIG8gbW90aXZhY2nDs24uIEFkZW3DoXMsIHByZXNlbnTDsyAxMiBkZSAxNCByZWxhY2lvbmVzIHNpZ25pZmljYXRpdmFzIHkgZXhwbGljw7MgdW5hIG1heW9yIHByb3BvcmNpw7NuIGRlIGxhIHZhcmlhbnphIGVuIHNhdGlzZmFjY2nDs24geSBtb3RpdmFjacOzbi4gUG9yIGVzdGEgcmF6w7NuLCBsb3MgYXV0b3JlcyBjb25zaWRlcmFyb24gcXVlIGVsIE1vZGVsbyAxIHByb3BvcmNpb25hYmEgdW5hIGV4cGxpY2FjacOzbiBtw6FzIGNvaGVyZW50ZSBkZWwgZmVuw7NtZW5vLCBhdW4gY3VhbmRvIGVzdGFkw61zdGljYW1lbnRlIGVsIE1vZGVsbyAyIHR1dmllcmEgbWVqb3JlcyBpbmRpY2Fkb3JlcyBkZSBhanVzdGUuCgoqKkNPTkNMVVNJT05FUzogICoqCkVsIGFuw6FsaXNpcyBkZSBsb3MgZG9zIG1vZGVsb3MgbWUgcGVybWl0acOzIGNvbXByZW5kZXIgcXVlIGVuIHVuIFNFTSBubyBiYXN0YSBjb24gZWxlZ2lyIGVsIG1vZGVsbyBxdWUgcHJlc2VudGEgbG9zIG1lam9yZXMgw61uZGljZXMgZGUgYWp1c3RlLiBFbiBlc3RlIGNhc28sIGF1bnF1ZSBlbCBNb2RlbG8gMiBtb3N0csOzIHVuIG1lam9yIGFqdXN0ZSBlc3RhZMOtc3RpY28sIGVsIE1vZGVsbyAxIHBlcm1pdGnDsyBjb25zZXJ2YXIgbG9zIGVzdGFkb3MgcHNpY29sw7NnaWNvcyBjcsOtdGljb3MgeSByZXByZXNlbnRhciBkZSBtZWpvciBtYW5lcmEgbGEgbMOzZ2ljYSBvcmlnaW5hbCBkZSBsYSB0ZW9yw61hLgoKQ29tbyBhcHJlbmRpemFqZSwgY29uc2lkZXJvIHF1ZSBlcyBpbXBvcnRhbnRlIGludGVycHJldGFyIGxvcyByZXN1bHRhZG9zIGVzdGFkw61zdGljb3MganVudG8gY29uIGVsIGNvbnRleHRvIHkgbGEgdGVvcsOtYSBxdWUgc2UgZXN0w6EgZXN0dWRpYW5kby4gVW4gbW9kZWxvIHB1ZWRlIHBhcmVjZXIgbWVqb3IgbnVtw6lyaWNhbWVudGUsIHBlcm8gc2kgcGllcmRlIHJlbGFjaW9uZXMgaW1wb3J0YW50ZXMgcGFyYSBleHBsaWNhciBlbCBmZW7Ds21lbm8sIHN1IGludGVycHJldGFjacOzbiBwdWVkZSBzZXIgbWVub3Mgw7p0aWwuIEVzdGUgZWplcmNpY2lvIG1lIGF5dWTDsyBhIGVudGVuZGVyIHF1ZSBsb3MgbsO6bWVyb3Mgb3JpZW50YW4gbGEgZGVjaXNpw7NuLCBwZXJvIG5vIGRlYmVuIHNlciBlbCDDum5pY28gY3JpdGVyaW8gcGFyYSB0b21hcmxhLgoKCgoKRW4gbGEgZXN0cnVjdHVyYSBkZWwgbW9kZWxvIHNlIGNvbnNpZGVyYW4gY2FyYWN0ZXLDrXN0aWNhcyBjb21vIHZhcmllZGFkIGRlIGhhYmlsaWRhZGVzLCBzaWduaWZpY2FuY2lhIGRlIGxhIHRhcmVhLCBpZGVudGlkYWQgZGUgbGEgdGFyZWEsIGF1dG9ub23DrWEgeSByZXRyb2FsaW1lbnRhY2nDs24sIHF1ZSBzZSByZWxhY2lvbmFuIGNvbiBsb3MgZXN0YWRvcyBwc2ljb2zDs2dpY29zIGRlIHNpZ25pZmljYWRvIGV4cGVyaW1lbnRhZG8sIHJlc3BvbnNhYmlsaWRhZCBleHBlcmltZW50YWRhIHkgY29ub2NpbWllbnRvIGRlIGxvcyByZXN1bHRhZG9zLiBFc3RvcyBlc3RhZG9zIHBvc3Rlcmlvcm1lbnRlIHNlIHJlbGFjaW9uYW4gY29uIHJlc3VsdGFkb3MgY29tbyBzYXRpc2ZhY2Npw7NuLCBzYXRpc2ZhY2Npw7NuIGRlIGNyZWNpbWllbnRvIHkgbW90aXZhY2nDs24uCgpEZXNwdcOpcyBkZSBhbmFsaXphciBsb3MgZG9zIG1vZGVsb3MgcHJvcHVlc3RvcyBwb3IgbG9zIGF1dG9yZXMsIHNlIHB1ZWRlIG9ic2VydmFyIHF1ZSBlbCBNb2RlbG8gMiBwcmVzZW50YSBtZWpvcmVzIHJlc3VsdGFkb3MgZW4gY3VhbnRvIGFsIGFqdXN0ZSBlc3RhZMOtc3RpY28sIHlhIHF1ZSBvYnR1dm8gdW4gR0ZJIGRlIC45OSB5IHVuIENGSSBkZSAuOTgsIHN1cGVyaW9yZXMgYSBsb3Mgb2J0ZW5pZG9zIHBvciBlbCBNb2RlbG8gMSAoLjkxIHkgLjg5LCByZXNwZWN0aXZhbWVudGUpLiBTaW4gZW1iYXJnbywgbG9zIGF1dG9yZXMgZGVjaWRpZXJvbiB1dGlsaXphciBlbCBNb2RlbG8gMSBwb3JxdWUgbm8gY29uc2lkZXJhcm9uIHN1ZmljaWVudGUgcXVlIHVuIG1vZGVsbyB0dXZpZXJhIG1lam9yZXMgaW5kaWNhZG9yZXMgZXN0YWTDrXN0aWNvcy4gQWwgcmV2aXNhciBsb3MgcmVzdWx0YWRvcyBjb24gbWF5b3IgZGV0YWxsZSwgZW5jb250cmFyb24gcXVlIGVsIE1vZGVsbyAxIHRlbsOtYSBtYXlvciBzZW50aWRvIGRlIGFjdWVyZG8gY29uIGxhIHRlb3LDrWEgZGVsIEpvYiBDaGFyYWN0ZXJpc3RpY3MgTW9kZWwuIEVuIGVzdGUgbW9kZWxvLCBsb3MgZXN0YWRvcyBwc2ljb2zDs2dpY29zIGNyw610aWNvcyBmdW5jaW9uYW4gY29tbyB1biBlbGVtZW50byBxdWUgY29uZWN0YSBsYXMgY2FyYWN0ZXLDrXN0aWNhcyBkZWwgdHJhYmFqbyBjb24gbG9zIHJlc3VsdGFkb3MgZGVsIGVtcGxlYWRvLiBBZGVtw6FzLCAxMiBkZSBsYXMgMTQgcmVsYWNpb25lcyBwbGFudGVhZGFzIGZ1ZXJvbiBzaWduaWZpY2F0aXZhcyB5IGVsIG1vZGVsbyBsb2dyw7MgZXhwbGljYXIgdW5hIHBhcnRlIGltcG9ydGFudGUgZGUgbGEgc2F0aXNmYWNjacOzbiB5IG1vdGl2YWNpw7NuIGRlIGxvcyB0cmFiYWphZG9yZXMuCgpQb3Igb3RybyBsYWRvLCBlbiBlbCBNb2RlbG8gMiBzb2xhbWVudGUgNyBkZSBsYXMgMTUgcmVsYWNpb25lcyBmdWVyb24gc2lnbmlmaWNhdGl2YXMgeSB2YXJpYXMgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIGFwYXJlY2llcm9uIG5vIGNvaW5jaWTDrWFuIGNvbiBsbyBxdWUgbGEgdGVvcsOtYSBlc3BlcmFiYS4gRW4gcGFydGljdWxhciwgbG9zIGF1dG9yZXMgZW5jb250cmFyb24gcXVlIG9jaG8gZGUgbGFzIG51ZXZlIHJlbGFjaW9uZXMgZW50cmUgYWxndW5hcyBjYXJhY3RlcsOtc3RpY2FzIGRlbCB0cmFiYWpvIHkgbG9zIHJlc3VsdGFkb3MgZGUgbG9zIGVtcGxlYWRvcyBubyBmdWVyb24gc2lnbmlmaWNhdGl2YXMuIEVzdG8gYXl1ZMOzIGEgZW50ZW5kZXIgcXVlIHVuIG1vZGVsbyBwdWVkZSB2ZXJzZSBtZWpvciBlbiBsb3MgbsO6bWVyb3MsIHBlcm8gbm8gbmVjZXNhcmlhbWVudGUgZXhwbGljYXIgbWVqb3IgZWwgZmVuw7NtZW5vIHF1ZSBzZSBlc3TDoSBlc3R1ZGlhbmRvLiBEZXNkZSBtaSBwZXJzcGVjdGl2YSwgZWwgcHJpbmNpcGFsIGFwcmVuZGl6YWplIGRlIGVzdGUgZWplcmNpY2lvIGVzIHF1ZSBhbCByZWFsaXphciB1biBTRU0gbm8gc2UgZGViZSBlbGVnaXIgYXV0b23DoXRpY2FtZW50ZSBlbCBtb2RlbG8gcXVlIHRlbmdhIGxvcyBtZWpvcmVzIMOtbmRpY2VzIGRlIGFqdXN0ZS4gRXMgbmVjZXNhcmlvIHJldmlzYXIgcXXDqSBzaWduaWZpY2FuIHJlYWxtZW50ZSBsYXMgcmVsYWNpb25lcyBlbmNvbnRyYWRhcyB5IHNpIHRpZW5lbiBzZW50aWRvIGNvbiBsYSB0ZW9yw61hIHkgY29uIGVsIHByb2JsZW1hIHF1ZSBzZSBxdWllcmUgZXhwbGljYXIuIEVuIGVzdGUgY2FzbywgbG9zIGF1dG9yZXMgcHJlZmlyaWVyb24gdW4gbW9kZWxvIHF1ZSwgYXVucXVlIGVzdGFkw61zdGljYW1lbnRlIG5vIGVyYSBlbCBxdWUgbWVqb3IgYWp1c3RhYmEsIHJlcHJlc2VudGFiYSBkZSB1bmEgbWFuZXJhIG3DoXMgbMOzZ2ljYSBjw7NtbyBsYXMgY2FyYWN0ZXLDrXN0aWNhcyBkZWwgdHJhYmFqbyBwdWVkZW4gaW5mbHVpciBlbiBsb3MgcmVzdWx0YWRvcyBkZSBsb3MgZW1wbGVhZG9zLiBFc3RvIG1lIGRlamEgY29tbyBhcHJlbmRpemFqZSBxdWUgZWwgYW7DoWxpc2lzIGVzdGFkw61zdGljbyBkZWJlIHNlcnZpciBwYXJhIHJlc3BhbGRhciB1bmEgZXhwbGljYWNpw7NuLCB5IG5vIHN1c3RpdHVpciBlbCByYXpvbmFtaWVudG8gZGV0csOhcyBkZSBlbGxhLgoK