#1. Cargar la base de datos

library(carData)
## Warning: package 'carData' was built under R version 4.3.3
bd <- Chile

#2. Descripción de la base de datos

?carData::Chile
## starting httpd help server ... done

Chilean Plebiscite

Description The Chile data frame has 2700 rows and 8 columns. The data are from a national survey conducted in April and May of 1988 by FLACSO/Chile. There are some missing data.

Usage Chile

Format This data frame contains the following columns:

region A factor with levels: C, Central; M, Metropolitan Santiago area; N, North; S, South; SA, city of Santiago.

population Population size of respondent’s community.

sex A factor with levels: F, female; M, male.

age in years.

education A factor with levels (note: out of order): P, Primary; PS, Post-secondary; S, Secondary.

income Monthly income, in Pesos.

statusquo Scale of support for the status-quo.

vote a factor with levels: A, will abstain; N, will vote no (against Pinochet); U, undecided; Y, will vote yes (for Pinochet).

Source Personal communication from FLACSO/Chile.

References Fox, J. (2016) Applied Regression Analysis and Generalized Linear Models, Third Edition. Sage.

Fox, J. and Weisberg, S. (2019) An R Companion to Applied Regression, Third Edition, Sage.

[Package carData version 3.0-5 Index]

#3. Análisis de bases de datos

Para obtener un resumen de estadísticas descriptivas y frecuencias:

  • summary(df): Proporciona un resumen estadístico básico de cada columna del dataframe.

  • Desc(df): Ofrece un resumen detallado y gráficos para cada variable en el dataframe.

  • dfSummary(df): Resumen detallado con estadísticas y gráficos usando el paquete summarytools.

# Resumen de estadísticas descriptivas
summary(bd)
##  region     population     sex           age        education  
##  C :600   Min.   :  3750   F:1379   Min.   :18.00   P   :1107  
##  M :100   1st Qu.: 25000   M:1321   1st Qu.:26.00   PS  : 462  
##  N :322   Median :175000            Median :36.00   S   :1120  
##  S :718   Mean   :152222            Mean   :38.55   NA's:  11  
##  SA:960   3rd Qu.:250000            3rd Qu.:49.00              
##           Max.   :250000            Max.   :70.00              
##                                     NA's   :1                  
##      income         statusquo          vote    
##  Min.   :  2500   Min.   :-1.80301   A   :187  
##  1st Qu.:  7500   1st Qu.:-1.00223   N   :889  
##  Median : 15000   Median :-0.04558   U   :588  
##  Mean   : 33876   Mean   : 0.00000   Y   :868  
##  3rd Qu.: 35000   3rd Qu.: 0.96857   NA's:168  
##  Max.   :200000   Max.   : 2.04859             
##  NA's   :98       NA's   :17
# Resumen de frecuencias y gráficos
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
Desc(bd)
## ────────────────────────────────────────────────────────────────────────────── 
## Describe bd (data.frame):
## 
## data frame:  2700 obs. of  8 variables
##      2431 complete cases (90.0%)
## 
##   Nr  Class  ColName     NAs         Levels                       
##   1   fac    region        .         (5): 1-C, 2-M, 3-N, 4-S, 5-SA
##   2   int    population    .                                      
##   3   fac    sex           .         (2): 1-F, 2-M                
##   4   int    age           1 (0.0%)                               
##   5   fac    education    11 (0.4%)  (3): 1-P, 2-PS, 3-S          
##   6   int    income       98 (3.6%)                               
##   7   num    statusquo    17 (0.6%)                               
##   8   fac    vote        168 (6.2%)  (4): 1-A, 2-N, 3-U, 4-Y      
## 
## 
## ────────────────────────────────────────────────────────────────────────────── 
## 1 - region (factor)
## 
##   length      n    NAs unique levels  dupes
##    2'700  2'700      0      5      5      y
##          100.0%   0.0%                     
## 
##    level  freq   perc  cumfreq  cumperc
## 1     SA   960  35.6%      960    35.6%
## 2      S   718  26.6%    1'678    62.1%
## 3      C   600  22.2%    2'278    84.4%
## 4      N   322  11.9%    2'600    96.3%
## 5      M   100   3.7%    2'700   100.0%

## ────────────────────────────────────────────────────────────────────────────── 
## 2 - population (integer)
## 
##       length           n        NAs      unique          0s        mean'
##        2'700       2'700          0          10           0  152'222.22
##                   100.0%       0.0%                    0.0%            
##                                                                        
##          .05         .10        .25      median         .75         .90
##    15'000.00   15'000.00  25'000.00  175'000.00  250'000.00  250'000.00
##                                                                        
##        range          sd      vcoef         mad         IQR        skew
##   246'250.00  102'198.04       0.67  111'195.00  225'000.00       -0.27
##                                                                        
##       meanCI
##   148'365.63
##   156'078.81
##             
##          .95
##   250'000.00
##             
##         kurt
##        -1.72
##             
## 
##      value   freq   perc  cumfreq  cumperc
## 1     3750     20   0.7%       20     0.7%
## 2     8750     60   2.2%       80     3.0%
## 3    15000    300  11.1%      380    14.1%
## 4    25000    360  13.3%      740    27.4%
## 5    45000    120   4.4%      860    31.9%
## 6    62500     80   3.0%      940    34.8%
## 7    87500     80   3.0%    1'020    37.8%
## 8   125000    240   8.9%    1'260    46.7%
## 9   175000    140   5.2%    1'400    51.9%
## 10  250000  1'300  48.1%    2'700   100.0%
## 
## ' 95%-CI (classic)

## ────────────────────────────────────────────────────────────────────────────── 
## 3 - sex (factor - dichotomous)
## 
##   length      n    NAs unique
##    2'700  2'700      0      2
##          100.0%   0.0%       
## 
##     freq   perc  lci.95  uci.95'
## F  1'379  51.1%   49.2%   53.0%
## M  1'321  48.9%   47.0%   50.8%
## 
## ' 95%-CI (Wilson)

## ────────────────────────────────────────────────────────────────────────────── 
## 4 - age (integer)
## 
##   length       n    NAs  unique     0s   mean  meanCI'
##    2'700   2'699      1      53      0  38.55   37.99
##           100.0%   0.0%           0.0%          39.11
##                                                      
##      .05     .10    .25  median    .75    .90     .95
##    19.00   21.00  26.00   36.00  49.00  61.00   66.00
##                                                      
##    range      sd  vcoef     mad    IQR   skew    kurt
##    52.00   14.76   0.38   16.31  23.00   0.47   -0.86
##                                                      
## lowest : 18 (90), 19 (76), 20 (78), 21 (96), 22 (92)
## highest: 66 (24), 67 (24), 68 (25), 69 (16), 70 (56)
## 
## ' 95%-CI (classic)

## ────────────────────────────────────────────────────────────────────────────── 
## 5 - education (factor)
## 
##   length      n    NAs unique levels  dupes
##    2'700  2'689     11      3      3      y
##           99.6%   0.4%                     
## 
##    level   freq   perc  cumfreq  cumperc
## 1      S  1'120  41.7%    1'120    41.7%
## 2      P  1'107  41.2%    2'227    82.8%
## 3     PS    462  17.2%    2'689   100.0%

## ────────────────────────────────────────────────────────────────────────────── 
## 6 - income (integer)
## 
##       length          n       NAs     unique         0s       mean      meanCI'
##        2'700      2'602        98          7          0  33'875.86   32'357.33
##                   96.4%      3.6%                  0.0%              35'394.40
##                                                                               
##          .05        .10       .25     median        .75        .90         .95
##     2'500.00   7'500.00  7'500.00  15'000.00  35'000.00  75'000.00  125'000.00
##                                                                               
##        range         sd     vcoef        mad        IQR       skew        kurt
##   197'500.00  39'502.87      1.17  18'532.50  27'500.00       2.58        7.29
##                                                                               
## 
##     value  freq   perc  cumfreq  cumperc
## 1    2500   160   6.1%      160     6.1%
## 2    7500   494  19.0%      654    25.1%
## 3   15000   768  29.5%    1'422    54.7%
## 4   35000   747  28.7%    2'169    83.4%
## 5   75000   269  10.3%    2'438    93.7%
## 6  125000    88   3.4%    2'526    97.1%
## 7  200000    76   2.9%    2'602   100.0%
## 
## ' 95%-CI (classic)

## ────────────────────────────────────────────────────────────────────────────── 
## 7 - statusquo (numeric)
## 
##      length          n            NAs     unique        0s           mean'
##       2'700      2'683             17      2'092         0  -1.118151e-08
##                  99.4%           0.6%                 0.0%               
##                                                                          
##         .05        .10            .25     median       .75            .90
##   -1.296170  -1.257950      -1.002235  -0.045580  0.968575       1.403610
##                                                                          
##       range         sd          vcoef        mad       IQR           skew
##    3.851600   1.000186  -8.945001e+07   1.453126  1.970810       0.161683
##                                                                          
##      meanCI
##   -0.037863
##    0.037863
##            
##         .95
##    1.511120
##            
##        kurt
##   -1.454072
##            
## lowest : -1.803010, -1.744010, -1.725940, -1.481440, -1.343920
## highest: 1.68819, 1.69876, 1.71355, 2.02141, 2.04859
## 
## heap(?): remarkable frequency (7.5%) for the mode(s) (= -1.29617)
## 
## ' 95%-CI (classic)

## ────────────────────────────────────────────────────────────────────────────── 
## 8 - vote (factor)
## 
##   length      n    NAs unique levels  dupes
##    2'700  2'532    168      4      4      y
##           93.8%   6.2%                     
## 
##    level  freq   perc  cumfreq  cumperc
## 1      N   889  35.1%      889    35.1%
## 2      Y   868  34.3%    1'757    69.4%
## 3      U   588  23.2%    2'345    92.6%
## 4      A   187   7.4%    2'532   100.0%

Desc(df): Ofrece un resumen detallado y gráficos para cada variable en el dataframe.

library(summarytools)
## Warning: package 'summarytools' was built under R version 4.3.3
dfSummary(bd, 
          varnumbers = FALSE, 
          valid.col = FALSE, 
          graph.magnif = 0.76)
## Data Frame Summary  
## bd  
## Dimensions: 2700 x 8  
## Duplicates: 9  
## 
## ----------------------------------------------------------------------------------------------------
## Variable     Stats / Values                  Freqs (% of Valid)      Graph                 Missing  
## ------------ ------------------------------- ----------------------- --------------------- ---------
## region       1. C                            600 (22.2%)             IIII                  0        
## [factor]     2. M                            100 ( 3.7%)                                   (0.0%)   
##              3. N                            322 (11.9%)             II                             
##              4. S                            718 (26.6%)             IIIII                          
##              5. SA                           960 (35.6%)             IIIIIII                        
## 
## population   Mean (sd) : 152222.2 (102198)   3750 :   20 ( 0.7%)                           0        
## [integer]    min < med < max:                8750 :   60 ( 2.2%)                           (0.0%)   
##              3750 < 175000 < 250000          15000 :  300 (11.1%)    II                             
##              IQR (CV) : 225000 (0.7)         25000 :  360 (13.3%)    II                             
##                                              45000 :  120 ( 4.4%)                                   
##                                              62500 :   80 ( 3.0%)                                   
##                                              87500 :   80 ( 3.0%)                                   
##                                              125000 :  240 ( 8.9%)   I                              
##                                              175000 :  140 ( 5.2%)   I                              
##                                              250000 : 1300 (48.1%)   IIIIIIIII                      
## 
## sex          1. F                            1379 (51.1%)            IIIIIIIIII            0        
## [factor]     2. M                            1321 (48.9%)            IIIIIIIII             (0.0%)   
## 
## age          Mean (sd) : 38.5 (14.8)         53 distinct values      :                     1        
## [integer]    min < med < max:                                        : .   .               (0.0%)   
##              18 < 36 < 70                                            : : : : :                      
##              IQR (CV) : 23 (0.4)                                     : : : : : : . : . :            
##                                                                      : : : : : : : : : :            
## 
## education    1. P                            1107 (41.2%)            IIIIIIII              11       
## [factor]     2. PS                            462 (17.2%)            III                   (0.4%)   
##              3. S                            1120 (41.7%)            IIIIIIII                       
## 
## income       Mean (sd) : 33875.9 (39502.9)   2500 : 160 ( 6.1%)      I                     98       
## [integer]    min < med < max:                7500 : 494 (19.0%)      III                   (3.6%)   
##              2500 < 15000 < 2e+05            15000 : 768 (29.5%)     IIIII                          
##              IQR (CV) : 27500 (1.2)          35000 : 747 (28.7%)     IIIII                          
##                                              75000 : 269 (10.3%)     II                             
##                                              125000 :  88 ( 3.4%)                                   
##                                              200000 :  76 ( 2.9%)                                   
## 
## statusquo    Mean (sd) : 0 (1)               2092 distinct values      :                   17       
## [numeric]    min < med < max:                                          :         .         (0.6%)   
##              -1.8 < 0 < 2                                              : :   . . :                  
##              IQR (CV) : 2 (-89450012)                                  : : : : : :                  
##                                                                        : : : : : : :                
## 
## vote         1. A                            187 ( 7.4%)             I                     168      
## [factor]     2. N                            889 (35.1%)             IIIIIII               (6.2%)   
##              3. U                            588 (23.2%)             IIII                           
##              4. Y                            868 (34.3%)             IIIIII                         
## ----------------------------------------------------------------------------------------------------

dfSummary(bd): Resumen detallado con estadísticas y gráficos usando el paquete summarytools.

Para generar y visualizar el resumen anterior de summarytools en formato HTML:

htmltools::html_print(html_summary): Imprime el resumen en formato HTML

# Generar resumen en HTML
resumen <- dfSummary(bd, 
                    varnumbers = FALSE, 
                    valid.col = FALSE, 
                    graph.magnif = 0.76)
html_summary <- print(resumen, method = "render")
htmltools::html_print(html_summary)

gt_plt_summary(df, title = "Resumen de la base de datos"): Crea una tabla resumen con un título utilizando el paquete gtExtras.

# Instalar y cargar gtExtras
#install.packages("gtExtras")
library(gtExtras)
## Warning: package 'gtExtras' was built under R version 4.3.3
## Loading required package: gt
## Warning: package 'gt' was built under R version 4.3.3
# Generar una tabla resumen
gt_plt_summary(bd, title = "Resumen de la base de datos")
## Warning in geom_point(data = NULL, aes(x = rng_vals[1], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2700 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[2], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2700 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[1], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2699 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[2], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2699 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[1], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2602 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[2], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2602 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[1], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2683 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[2], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 2683 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
Resumen de la base de datos
2700 rows x 8 cols
Column Plot Overview Missing Mean Median SD
region SA, S, C, N and M
5 categories 0.0%
population 4K250K 0.0% 152,222.2 175,000.0 102,198.0
sex F and M
2 categories 0.0%
age 1870 0.0% 38.5 36.0 14.8
education S, P and PS
3 categories 0.4%
income 2K200K 3.6% 33,875.9 15,000.0 39,502.9
statusquo -1.82.0 0.6% 0.0 0.0 1.0
vote N, Y, U and A
4 categories 6.2%
LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBiYXNlIENoaWxlIg0KYXV0aG9yOiAiSnVsaWV0aCBab3JybyBNZWxvIg0KZGF0ZTogIjIwMjQtMDktMjQiDQpvdXRwdXQ6IA0KI2h0dHBzOi8vYm9va2Rvd24ub3JnL3lpaHVpL3JtYXJrZG93bi9odG1sLWRvY3VtZW50Lmh0bWwgI1R1dG9yaWFsIGLDoXNpY28NCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUgICAgICAgICAgICAgICAgICNUYWJsYSBkZSBjb250ZW5pZG8NCiAgICB0b2NfZGVwdGg6IDIgICAgICAgICAgICAgICNOaXZlbCBkZSBwcm9mdW5kaWRhZCBkZSBsYSB0YWJsYSBkZSBjb250ZW5pZG8NCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUgICAgICNOdW1lcmFyIHNlY2Npb25lcw0KICAgIA0KICAgIHRvY19mbG9hdDogICAgICAgICAgICAgICAgI1RhYmxhIGRlIGNvbnRlbmlkbyBmbG90YW50ZQ0KICAgICAgY29sbGFwc2VkOiB0cnVlICAgICAgICAgICNUYWJsYSBkZSBjb250ZW5pZG8gY29sYXBzYWRhDQogICAgICBzbW9vdGhfc2Nyb2xsOiBmYWxzZSAgICAgICNEZXNwbGF6YW1pZW50byBzdWF2ZSAgDQogICAgICB0b2NfdGl0bGU6ICJDb250ZW5pZG8iICAgICNUw610dWxvIGRlIGxhIHRhYmxhIGRlIGNvbnRlbmlkbyAgICANCiAgICANCg0KICAgIHRoZW1lOiBmbGF0bHkgICAgICAgICAgICAjVGVtYSBkZSBsYSBwcmVzZW50YWNpw7NuICAjaHR0cHM6Ly9ib290c3dhdGNoLmNvbS8zL2pvdXJuYWwvDQogICAgaGlnaGxpZ2h0OiBlc3ByZXNzbyAgICAgICAgICAgI1Jlc2FsdGFkbyBkZSBsYSBzaW50YXhpcyAgICAgaHR0cHM6Ly9lbGFzdGljLWxvdmVsYWNlLTE1NTg0OC5uZXRsaWZ5LmFwcC9oaWdobGlnaHRlcnMuaHRtbA0KICAgIGNvZGVfZm9sZGluZzogc2hvdyAgICAgICAgI1BsZWdhZG8gZGUgY8OzZGlnbw0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUgICAgICAgI0Rlc2NhcmdhIGRlIGPDs2RpZ28NCi0tLQ0KDQojMS4gQ2FyZ2FyIGxhIGJhc2UgZGUgZGF0b3MNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGUgPSBUUlVFfQ0KbGlicmFyeShjYXJEYXRhKQ0KYmQgPC0gQ2hpbGUNCmBgYA0KDQojMi4gRGVzY3JpcGNpw7NuIGRlIGxhIGJhc2UgZGUgZGF0b3MNCg0KYGBge3IgaGVscCwgZWNobz1UUlVFfQ0KP2NhckRhdGE6OkNoaWxlDQpgYGANCg0KKipDaGlsZWFuIFBsZWJpc2NpdGUqKg0KDQoqRGVzY3JpcHRpb24qIFRoZSBDaGlsZSBkYXRhIGZyYW1lIGhhcyAyNzAwIHJvd3MgYW5kIDggY29sdW1ucy4gVGhlIGRhdGEgYXJlIGZyb20gYSBuYXRpb25hbCBzdXJ2ZXkgY29uZHVjdGVkIGluIEFwcmlsIGFuZCBNYXkgb2YgMTk4OCBieSBGTEFDU08vQ2hpbGUuIFRoZXJlIGFyZSBzb21lIG1pc3NpbmcgZGF0YS4NCg0KKlVzYWdlKiBDaGlsZQ0KDQoqRm9ybWF0KiBUaGlzIGRhdGEgZnJhbWUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBjb2x1bW5zOg0KDQoqcmVnaW9uKiBBIGZhY3RvciB3aXRoIGxldmVsczogQywgQ2VudHJhbDsgTSwgTWV0cm9wb2xpdGFuIFNhbnRpYWdvIGFyZWE7IE4sIE5vcnRoOyBTLCBTb3V0aDsgU0EsIGNpdHkgb2YgU2FudGlhZ28uDQoNCipwb3B1bGF0aW9uKiBQb3B1bGF0aW9uIHNpemUgb2YgcmVzcG9uZGVudCdzIGNvbW11bml0eS4NCg0KKnNleCogQSBmYWN0b3Igd2l0aCBsZXZlbHM6IEYsIGZlbWFsZTsgTSwgbWFsZS4NCg0KKmFnZSogaW4geWVhcnMuDQoNCiplZHVjYXRpb24qIEEgZmFjdG9yIHdpdGggbGV2ZWxzIChub3RlOiBvdXQgb2Ygb3JkZXIpOiBQLCBQcmltYXJ5OyBQUywgUG9zdC1zZWNvbmRhcnk7IFMsIFNlY29uZGFyeS4NCg0KKmluY29tZSogTW9udGhseSBpbmNvbWUsIGluIFBlc29zLg0KDQoqc3RhdHVzcXVvKiBTY2FsZSBvZiBzdXBwb3J0IGZvciB0aGUgc3RhdHVzLXF1by4NCg0KKnZvdGUqIGEgZmFjdG9yIHdpdGggbGV2ZWxzOiBBLCB3aWxsIGFic3RhaW47IE4sIHdpbGwgdm90ZSBubyAoYWdhaW5zdCBQaW5vY2hldCk7IFUsIHVuZGVjaWRlZDsgWSwgd2lsbCB2b3RlIHllcyAoZm9yIFBpbm9jaGV0KS4NCg0KKlNvdXJjZSogUGVyc29uYWwgY29tbXVuaWNhdGlvbiBmcm9tIEZMQUNTTy9DaGlsZS4NCg0KKlJlZmVyZW5jZXMqIEZveCwgSi4gKDIwMTYpIEFwcGxpZWQgUmVncmVzc2lvbiBBbmFseXNpcyBhbmQgR2VuZXJhbGl6ZWQgTGluZWFyIE1vZGVscywgVGhpcmQgRWRpdGlvbi4gU2FnZS4NCg0KRm94LCBKLiBhbmQgV2Vpc2JlcmcsIFMuICgyMDE5KSBBbiBSIENvbXBhbmlvbiB0byBBcHBsaWVkIFJlZ3Jlc3Npb24sIFRoaXJkIEVkaXRpb24sIFNhZ2UuDQoNCltQYWNrYWdlIGNhckRhdGEgdmVyc2lvbiAzLjAtNSBJbmRleF0NCg0KIzMuIEFuw6FsaXNpcyBkZSBiYXNlcyBkZSBkYXRvcw0KDQpQYXJhIG9idGVuZXIgdW4gcmVzdW1lbiBkZSBlc3RhZMOtc3RpY2FzIGRlc2NyaXB0aXZhcyB5IGZyZWN1ZW5jaWFzOg0KDQotICAgKipgc3VtbWFyeShkZilgKio6IFByb3BvcmNpb25hIHVuIHJlc3VtZW4gZXN0YWTDrXN0aWNvIGLDoXNpY28gZGUgY2FkYSBjb2x1bW5hIGRlbCBkYXRhZnJhbWUuDQoNCi0gICAqKmBEZXNjKGRmKWAqKjogT2ZyZWNlIHVuIHJlc3VtZW4gZGV0YWxsYWRvIHkgZ3LDoWZpY29zIHBhcmEgY2FkYSB2YXJpYWJsZSBlbiBlbCBkYXRhZnJhbWUuDQoNCi0gICAqKmBkZlN1bW1hcnkoZGYpYCoqOiBSZXN1bWVuIGRldGFsbGFkbyBjb24gZXN0YWTDrXN0aWNhcyB5IGdyw6FmaWNvcyB1c2FuZG8gZWwgcGFxdWV0ZSBgc3VtbWFyeXRvb2xzYC4NCg0KYGBge3Igc3VtbWFyeSBzZXR1cCwgZWNobz1UUlVFfQ0KIyBSZXN1bWVuIGRlIGVzdGFkw61zdGljYXMgZGVzY3JpcHRpdmFzDQpzdW1tYXJ5KGJkKQ0KYGBgDQoNCmBgYHtyIERlc2Mgc2V0dXAsIGVjaG89VFJVRX0NCiMgUmVzdW1lbiBkZSBmcmVjdWVuY2lhcyB5IGdyw6FmaWNvcw0KbGlicmFyeShEZXNjVG9vbHMpDQpEZXNjKGJkKQ0KYGBgDQoNCioqYERlc2MoZGYpYCoqOiBPZnJlY2UgdW4gcmVzdW1lbiBkZXRhbGxhZG8geSBncsOhZmljb3MgcGFyYSBjYWRhIHZhcmlhYmxlIGVuIGVsIGRhdGFmcmFtZS4NCg0KYGBge3Igc3VtbWFyeXRvb2xzIHNldHVwLCBlY2hvPVRSVUV9DQpsaWJyYXJ5KHN1bW1hcnl0b29scykNCmRmU3VtbWFyeShiZCwgDQogICAgICAgICAgdmFybnVtYmVycyA9IEZBTFNFLCANCiAgICAgICAgICB2YWxpZC5jb2wgPSBGQUxTRSwgDQogICAgICAgICAgZ3JhcGgubWFnbmlmID0gMC43NikNCmBgYA0KDQoqKmBkZlN1bW1hcnkoYmQpYCoqOiBSZXN1bWVuIGRldGFsbGFkbyBjb24gZXN0YWTDrXN0aWNhcyB5IGdyw6FmaWNvcyB1c2FuZG8gZWwgcGFxdWV0ZSBgc3VtbWFyeXRvb2xzYC4NCg0KUGFyYSBnZW5lcmFyIHkgdmlzdWFsaXphciBlbCByZXN1bWVuIGFudGVyaW9yIGRlIHN1bW1hcnl0b29scyBlbiBmb3JtYXRvIEhUTUw6DQoNCioqYGh0bWx0b29sczo6aHRtbF9wcmludChodG1sX3N1bW1hcnkpYCoqOiBJbXByaW1lIGVsIHJlc3VtZW4gZW4gZm9ybWF0byBIVE1MDQoNCmBgYHtyIGh0bWwgc2V0dXAsIGVjaG89VFJVRX0NCiMgR2VuZXJhciByZXN1bWVuIGVuIEhUTUwNCnJlc3VtZW4gPC0gZGZTdW1tYXJ5KGJkLCANCiAgICAgICAgICAgICAgICAgICAgdmFybnVtYmVycyA9IEZBTFNFLCANCiAgICAgICAgICAgICAgICAgICAgdmFsaWQuY29sID0gRkFMU0UsIA0KICAgICAgICAgICAgICAgICAgICBncmFwaC5tYWduaWYgPSAwLjc2KQ0KaHRtbF9zdW1tYXJ5IDwtIHByaW50KHJlc3VtZW4sIG1ldGhvZCA9ICJyZW5kZXIiKQ0KaHRtbHRvb2xzOjpodG1sX3ByaW50KGh0bWxfc3VtbWFyeSkNCmBgYA0KDQohW10oUnBsb3QucG5nKQ0KDQoqKmBndF9wbHRfc3VtbWFyeShkZiwgdGl0bGUgPSAiUmVzdW1lbiBkZSBsYSBiYXNlIGRlIGRhdG9zIilgKio6IENyZWEgdW5hIHRhYmxhIHJlc3VtZW4gY29uIHVuIHTDrXR1bG8gdXRpbGl6YW5kbyBlbCBwYXF1ZXRlIGBndEV4dHJhc2AuDQoNCmBgYHtyfQ0KIyBJbnN0YWxhciB5IGNhcmdhciBndEV4dHJhcw0KI2luc3RhbGwucGFja2FnZXMoImd0RXh0cmFzIikNCmxpYnJhcnkoZ3RFeHRyYXMpDQoNCiMgR2VuZXJhciB1bmEgdGFibGEgcmVzdW1lbg0KZ3RfcGx0X3N1bW1hcnkoYmQsIHRpdGxlID0gIlJlc3VtZW4gZGUgbGEgYmFzZSBkZSBkYXRvcyIpDQpgYGANCg==