Fase 1 [Descripciones Multivariantes]

1.1. Objetivos

Estudiar desde el punto de vista de la estadística descriptiva multivariante (cálculos, visualisaciones e interpretaciones) a un conjunto de datos relacionados con los gastos mensuales de los clientes de una empresa Norteamericana.

1.2. Descripción de Datos

Fuente del Conjunto de Datos

El conjunto de datos utilizado fue principalmente recopilado de Kaggle: Gastos Mensuales de Clientes de Empresa Norteamericana, una plataforma en línea mantenida por Google LLC. Kaggle proporciona una comunidad para científicos de datos y profesionales de aprendizaje automático, donde los usuarios pueden encontrar, publicar y explorar conjuntos de datos, así como crear modelos en un entorno basado en la web. Además, permite la colaboración entre científicos de datos e ingenieros de aprendizaje automático, así como la participación en desafíos de ciencia de datos a través de concursos.

Contexto del Conjuto de Datos

El conjunto de datos registra los gastos mensuales de los clientes de una empresa norteamericana, dedicada a la innovavión y modificación de productos de acuerdo con las necesidades, comportamientos y gastos especificos de sus diferentes tipos de clientes. Su Ultima actualización fue en 2021.

Descripción del Conjunto de Datos

El conjunto de datos contiene 22 campos y 2240 registros. Ofrece información sobre clientes, incluyendo detalles demográficos como año de nacimiento, nivel educativo, estado civil y género. Además, proporciona datos financieros como ingresos, así como comportamientos de compra, como montos gastados en diferentes categorías de productos y número de compras en diferentes canales. También incluye información sobre la satisfacción del cliente con el servicio recibido y si han presentado quejas. La lista siguiente los describe en el mismo orden, de izquierdda a derecha, como aparecen en el rango de datos que los contiene y se establece para cada campo, el tipo de variable y su escala de medición excepto el ID con base en la nomenclatura (tipo_de_variable::escala_de_medición[ordenamiento]):

  • ID (identificador):Este campo representa un identificador único para cada registro en el conjunto de de datos.

  • Year_Birth (cuantitativa::rango):Este campo indica el año de nacimiento de cada individuo.

  • Education (cualitativa:: nominal): Este campo describe el nivel educativo de cada individuo. Las categorias usadas son: (2n Cycle,Basic,Graduation,Master,PhD).

  • Marital_Status:(cualitativa::nominal):Este campo indica el estado civil de cada individuo. Sus categorias son: (Alone,Divorced,Married,Single,Together,Widow,YOLO(You Only Live Once)).

  • Income (cuantitativa:: razón):Este campo representa el ingreso financiero de cada individuo (medido en usd).

  • Teenhome (cuantitativa::rango):Este campo indica la cantidad de adolescentes en casa del cliente que va desde 0 a 2.

  • Dt_Customer (cuantitativa::rango):Este campo representa el año en que el individuo se convirtió en cliente.

  • MntWines, MntFruits, MntMeatProducts, MntFishProducts, MntSweetProducts, MntGoldProds (cuantitativa::razón): Estos campos registran los montos gastados (medidos en usd) por el cliente en las categorías respectivas de:(vinos, fruta, carne, pescado, dulce,oro).

  • NumDealsPurchases, NumWebPurchases, NumCatalogPurchases, NumStorePurchases, NumWebVisitsMonth (cuantitativa::razón):Estos campos registran el número de compras o visitas realizadas por el cliente en diferentes canales o plataformas de:(Accziom,web purchase ltd,Gep,In-App purcharse,Monthly visits).

  • Complain (cualitativa::nominal):Este campo indica si el cliente ha presentado una queja. 0:si el cliente no presenta queja y 1:si el cliente presenta alguna queja.

  • Sex (cualitativa::nominal):Este campo indica el sexo del individuo y lo clasifica de la siguiente manera:(man, women).

  • Satisfaction with customer service(cuantitativa::):Este campo representa el nivel de satisfacción del individuo con el servicio al cliente. Se resgitra a tráves de las siguientes categorias reescritas como:(dissatisfied:0,neutral:falso,satisfied:0,very dissatisfied:1,very satisfied:1).

Estructura del Conjunto de Datos

str(Gastos_Dataset)
## tibble [2,240 × 22] (S3: tbl_df/tbl/data.frame)
##  $ ID                                : num [1:2240] 5524 2174 4141 6182 5324 ...
##  $ Year_Birth                        : num [1:2240] 1957 1954 1965 1984 1981 ...
##  $ Education                         : chr [1:2240] "Graduation" "Graduation" "Graduation" "Graduation" ...
##  $ Marital_Status                    : chr [1:2240] "Single" "Single" "Together" "Together" ...
##  $ Income                            : num [1:2240] 58138 46344 71613 26646 58293 ...
##  $ Teenhome                          : num [1:2240] 0 1 0 0 0 1 1 0 0 1 ...
##  $ Dt_Customer                       : POSIXct[1:2240], format: "2012-09-04" "2014-03-08" ...
##  $ MntWines                          : num [1:2240] 635 11 426 11 173 520 235 76 14 28 ...
##  $ MntFruits                         : num [1:2240] 88 1 49 4 43 42 65 10 0 0 ...
##  $ MntMeatProducts                   : num [1:2240] 546 6 127 20 118 98 164 56 24 6 ...
##  $ MntFishProducts                   : num [1:2240] 172 2 111 10 46 0 50 3 3 1 ...
##  $ MntSweetProducts                  : num [1:2240] 88 1 21 3 27 42 49 1 3 1 ...
##  $ MntGoldProds                      : num [1:2240] 88 6 42 5 15 14 27 23 2 13 ...
##  $ NumDealsPurchases                 : num [1:2240] 3 2 1 2 5 2 4 2 1 1 ...
##  $ NumWebPurchases                   : num [1:2240] 8 1 8 2 5 6 7 4 3 1 ...
##  $ NumCatalogPurchases               : num [1:2240] 10 1 2 0 3 4 3 0 0 0 ...
##  $ NumStorePurchases                 : num [1:2240] 4 2 10 4 6 10 7 4 2 0 ...
##  $ NumWebVisitsMonth                 : num [1:2240] 7 5 4 6 5 6 6 8 9 20 ...
##  $ Complain                          : num [1:2240] 0 0 0 0 0 0 0 0 0 0 ...
##  $ sex                               : num [1:2240] 1 0 1 0 1 0 1 0 1 0 ...
##  $ Satisfaction_with_customer_service: chr [1:2240] "very dissatisfied" "very dissatisfied" "very dissatisfied" "dissatisfied" ...
##  $ Columna 1                         : num [1:2240] 0 0 0 0 1 1 1 0 1 1 ...

Visualización del Conjunto de Datos

Gastos_Dataset
## # A tibble: 2,240 × 22
##       ID Year_Birth Education Marital_Status Income Teenhome Dt_Customer        
##    <dbl>      <dbl> <chr>     <chr>           <dbl>    <dbl> <dttm>             
##  1  5524       1957 Graduati… Single          58138        0 2012-09-04 00:00:00
##  2  2174       1954 Graduati… Single          46344        1 2014-03-08 00:00:00
##  3  4141       1965 Graduati… Together        71613        0 2013-08-21 00:00:00
##  4  6182       1984 Graduati… Together        26646        0 2014-02-10 00:00:00
##  5  5324       1981 PhD       Married         58293        0 2014-01-19 00:00:00
##  6  7446       1967 Master    Together        62513        1 2013-09-09 00:00:00
##  7   965       1971 Graduati… Divorced        55635        1 2012-11-13 00:00:00
##  8  6177       1985 PhD       Married         33454        0 2013-05-08 00:00:00
##  9  4855       1974 PhD       Together        30351        0 2013-06-06 00:00:00
## 10  5899       1950 PhD       Together         5648        1 2014-03-13 00:00:00
## # ℹ 2,230 more rows
## # ℹ 15 more variables: MntWines <dbl>, MntFruits <dbl>, MntMeatProducts <dbl>,
## #   MntFishProducts <dbl>, MntSweetProducts <dbl>, MntGoldProds <dbl>,
## #   NumDealsPurchases <dbl>, NumWebPurchases <dbl>, NumCatalogPurchases <dbl>,
## #   NumStorePurchases <dbl>, NumWebVisitsMonth <dbl>, Complain <dbl>,
## #   sex <dbl>, Satisfaction_with_customer_service <chr>, `Columna 1` <dbl>

1.3. Estimaciones Multivariadas

Como se menciona en (Aristizábal R., 2017) la de media, varianza y covarianza conforman un conjunto de medidas fundamentales para describir el comportamiento posicional, dispersivo y correlacional de variables aleatorias. En este sentido, el conjunto de datos de trabajo que posee doce variables numéricas, y que está representado matricialmente, estima las medidas anteriores a partir de vectores y matrices en el estudio descriptivo multivariable.

El vector de medias indica el comportamiento posicional en el sentido de valor esperado o punto medio para cada variable en relación con todos sus registros. La matriz de varianzas-covarianzas estima las dispersiones, en su diagonal principal, de cada variable del conjunto de datos respecto de cada media obtenida del vector de medias. Además, por encima o por debajo de la diagonal principal, se estiman las covarianzas entre las combinaciones de los posibles pares de variables del conjunto de datos. Para más detalles se puede consultar a (Aristizábal R., 2017).

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 1.2 se calcularán e intepretarán, para las variables numéricas, el vector de medias, la matriz de varianzas-covarianzas y la matriz de correlaciones. Se recuerda que las variables numéricas (en escalada de medición de razón) son: Income, MntWines, MntFruits, MntMeatProducts, MntFishProducts, MntSweetProducts, MntGoldProds, NumDealsPurchases, NumWebPurchases, NumCatalogPurchases, NumStorePurchases, NumWebVisitsMonth.

Desarrollo del Analísis

La navegación a través de las pestañas muestra el cálculo de los siguientes objetos: Vector de Medias x, Matriz de Varianzas-Covarianzas S y Matriz de Correlaciones R.

Con base al analisis del Vector de Medias y Boxplots para las seis primeras variables revela que La distribución de ingresos entre los clientes está sesgada a la derecha, con medianas y rangos intercuartílicos bajos que representa la dispersión central del 50% de los datos,lo que es relativamente estrecho en todas las variables, sugiriendo que la mayoría de los datos están concentrados cerca de la mediana. Sin embargo. Los bigotes que se extienden hacia valores altos indican una dispersión significativa en el rango superior de los datos, lo que pueden ser el resultado de comportamientos de gasto distintos. Con base al analisis del Vector de Medias y Boxplots para las variables restantes, se interpreta que este análisis proporciona una visión clara de los patrones de compra y visitas de los clientes, destacando la importancia de las observaciones que se encuentran significativamente alejadas del resto de los datos.

Al analizar la Matriz de Varianzas-Covarianzas se observa la magnitud de la dispersión de cada variable por sí misma. Por ejemplo, la alta varianza de la varibale “Income” sugiere que los ingresos tienen una amplia gama de valores en el conjunto de datos. En cuanto a la covarianza entre variables, se identifica las relaciones de co-movimiento entre pares de variables. Una covarianza positiva indica que las variables tienden a moverse en la misma dirección, mientras que una covarianza negativa sugiere que tienden a moverse en direcciones opuestas. Un ejemplo específico es la covarianza positiva entre “Income” y “MntWines”, lo que implica que a medida que los ingresos aumentan, también lo hacen los gastos en vinos. Por otro lado, la covarianza negativa entre “NumWebVisitsMonth” e “Income” indica que a medida que los ingresos aumentan, el número de visitas mensuales a la web tiende a disminuir.

Con base en la pestaña Matriz de Correlaciones y al considerar la Matriz de Varianzas-Covarianzas es verificable que la intensidad de las correlaciones es más alta y siempre positiva entre las variables: “MntWines”, “MntFruits”, “MntMeatProducts”, “MntFishProducts”, “MntSweetProducts”, “MntGoldProds”, “NumWebPurchases”, “NumCatalogPurchases” y “NumStorePurchases”, que es lo esperado en relación con el fenómeno estudiado. También se observan algunas correlaciones negativas, entre “Income” y “NumWebVisitsMonth”, “MntWines”, “NumWebVisitsMonth”, “MntFruits”, “NumWebVisitsMonth”, “MntMeatProducts”, “NumWebVisitsMonth”, “MntFishProducts”, “NumWebVisitsMonth”, “MntSweetProducts” y “NumWebVisitsMonth”, “NumCatalogPurchases” y “NumWebVisitsMonth”.

Vector de Medias y Boxplots

apply(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], 2, mean)
##          Year_Birth              Income            Teenhome            MntWines 
##         1968.805804                  NA            0.506250          303.935714 
##           MntFruits     MntMeatProducts     MntFishProducts    MntSweetProducts 
##           26.302232          166.950000           37.525446           27.062946 
##        MntGoldProds   NumDealsPurchases     NumWebPurchases NumCatalogPurchases 
##           44.021875            2.325000            4.084821            2.662054 
##   NumStorePurchases   NumWebVisitsMonth 
##            5.790179            5.316518
Gastos_Dataset_Reducido = Gastos_Dataset[,-c(1,2,3,4,6,7,13,14,15,16,17,18,19,20,21,22)]

par(mfrow = c(1, ncol(Gastos_Dataset_Reducido[,1:6])))
invisible(lapply(1:(ncol(Gastos_Dataset_Reducido[,1:6])), function(i) boxplot(Gastos_Dataset_Reducido[, i])))

Gastos_Dataset_Reducido = Gastos_Dataset[,-c(1,2,3,4,5,6,7,8,9,10,11,12,19,20,21,22)]
par(mfrow = c(1, ncol(Gastos_Dataset_Reducido[,1:6])))
invisible(lapply(1:ncol(Gastos_Dataset_Reducido[,1:6]), function(i) boxplot(Gastos_Dataset_Reducido[, i])))

Matriz de Varianzas-Covarianzas

selected_columns <- Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)]
clean_data <- na.omit(selected_columns)
cov_matrix_clean <- round(cov(clean_data), 2)
print(cov_matrix_clean)
##                     Year_Birth       Income Teenhome   MntWines MntFruits
## Year_Birth              143.61    -48323.11    -2.30    -642.66     -8.63
## Income               -48323.11 635198834.78   255.06 4897771.50 430175.76
## Teenhome                 -2.30       255.06     0.30       0.82     -3.79
## MntWines               -642.66   4897771.50     0.82  113489.04   5187.70
## MntFruits                -8.63    430175.76    -3.79    5187.70   1578.48
## MntMeatProducts         -90.56   3290105.53   -31.68   42957.92   4878.51
## MntFishProducts         -26.41    603589.15    -6.08    7341.08   1289.59
## MntSweetProducts         -8.11    450990.47    -3.66    5364.75    929.50
## MntGoldProds            -37.43    419385.02    -0.60    6807.24    813.54
## NumDealsPurchases        -1.42     -3893.45     0.41       6.07    -10.16
## NumWebPurchases          -4.84     26437.94     0.24     507.96     32.68
## NumCatalogPurchases      -4.28     43216.15    -0.18     625.49     56.57
## NumStorePurchases        -5.02     43225.55     0.09     701.31     59.29
## NumWebVisitsMonth         3.54    -33428.10     0.18    -262.50    -40.25
##                     MntMeatProducts MntFishProducts MntSweetProducts
## Year_Birth                   -90.56          -26.41            -8.11
## Income                   3290105.53       603589.15        450990.47
## Teenhome                     -31.68           -6.08            -3.66
## MntWines                   42957.92         7341.08          5364.75
## MntFruits                   4878.51         1289.59           929.50
## MntMeatProducts            50144.22         7030.52          4899.18
## MntFishProducts             7030.52         2988.50          1305.35
## MntSweetProducts            4899.18         1305.35          1706.37
## MntGoldProds                4146.31         1203.46           794.67
## NumDealsPurchases            -51.77          -14.92            -9.75
## NumWebPurchases              186.84           44.55            40.02
## NumCatalogPurchases          480.73           85.22            59.13
## NumStorePurchases            354.25           81.47            60.07
## NumWebVisitsMonth           -292.38          -59.08           -42.39
##                     MntGoldProds NumDealsPurchases NumWebPurchases
## Year_Birth                -37.43             -1.42           -4.84
## Income                 419385.02          -3893.45        26437.94
## Teenhome                   -0.60              0.41            0.24
## MntWines                 6807.24              6.07          507.96
## MntFruits                 813.54            -10.16           32.68
## MntMeatProducts          4146.31            -51.77          186.84
## MntFishProducts          1203.46            -14.92           44.55
## MntSweetProducts          794.67             -9.75           40.02
## MntGoldProds             2723.85              4.85           61.09
## NumDealsPurchases           4.85              3.73            1.26
## NumWebPurchases            61.09              1.26            7.74
## NumCatalogPurchases        66.68             -0.07            3.07
## NumStorePurchases          64.67              0.43            4.54
## NumWebVisitsMonth         -31.69              1.63           -0.38
##                     NumCatalogPurchases NumStorePurchases NumWebVisitsMonth
## Year_Birth                        -4.28             -5.02              3.54
## Income                         43216.15          43225.55         -33428.10
## Teenhome                          -0.18              0.09              0.18
## MntWines                         625.49            701.31           -262.50
## MntFruits                         56.57             59.29            -40.25
## MntMeatProducts                  480.73            354.25           -292.38
## MntFishProducts                   85.22             81.47            -59.08
## MntSweetProducts                  59.13             60.07            -42.39
## MntGoldProds                      66.68             64.67            -31.69
## NumDealsPurchases                 -0.07              0.43              1.63
## NumWebPurchases                    3.07              4.54             -0.38
## NumCatalogPurchases                8.55              4.93             -3.70
## NumStorePurchases                  4.93             10.56             -3.39
## NumWebVisitsMonth                 -3.70             -3.39              5.89

Matriz de Correlaciones

selected_columns <- Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)]
clean_data <- na.omit(selected_columns)
cor_matrix_clean <- round(cor(clean_data), 2)
print(cor_matrix_clean)
##                     Year_Birth Income Teenhome MntWines MntFruits
## Year_Birth                1.00  -0.16    -0.35    -0.16     -0.02
## Income                   -0.16   1.00     0.02     0.58      0.43
## Teenhome                 -0.35   0.02     1.00     0.00     -0.18
## MntWines                 -0.16   0.58     0.00     1.00      0.39
## MntFruits                -0.02   0.43    -0.18     0.39      1.00
## MntMeatProducts          -0.03   0.58    -0.26     0.57      0.55
## MntFishProducts          -0.04   0.44    -0.20     0.40      0.59
## MntSweetProducts         -0.02   0.43    -0.16     0.39      0.57
## MntGoldProds             -0.06   0.32    -0.02     0.39      0.39
## NumDealsPurchases        -0.06  -0.08     0.39     0.01     -0.13
## NumWebPurchases          -0.15   0.38     0.16     0.54      0.30
## NumCatalogPurchases      -0.12   0.59    -0.11     0.64      0.49
## NumStorePurchases        -0.13   0.53     0.05     0.64      0.46
## NumWebVisitsMonth         0.12  -0.55     0.13    -0.32     -0.42
##                     MntMeatProducts MntFishProducts MntSweetProducts
## Year_Birth                    -0.03           -0.04            -0.02
## Income                         0.58            0.44             0.43
## Teenhome                      -0.26           -0.20            -0.16
## MntWines                       0.57            0.40             0.39
## MntFruits                      0.55            0.59             0.57
## MntMeatProducts                1.00            0.57             0.53
## MntFishProducts                0.57            1.00             0.58
## MntSweetProducts               0.53            0.58             1.00
## MntGoldProds                   0.35            0.42             0.37
## NumDealsPurchases             -0.12           -0.14            -0.12
## NumWebPurchases                0.30            0.29             0.35
## NumCatalogPurchases            0.73            0.53             0.49
## NumStorePurchases              0.49            0.46             0.45
## NumWebVisitsMonth             -0.54           -0.45            -0.42
##                     MntGoldProds NumDealsPurchases NumWebPurchases
## Year_Birth                 -0.06             -0.06           -0.15
## Income                      0.32             -0.08            0.38
## Teenhome                   -0.02              0.39            0.16
## MntWines                    0.39              0.01            0.54
## MntFruits                   0.39             -0.13            0.30
## MntMeatProducts             0.35             -0.12            0.30
## MntFishProducts             0.42             -0.14            0.29
## MntSweetProducts            0.37             -0.12            0.35
## MntGoldProds                1.00              0.05            0.42
## NumDealsPurchases           0.05              1.00            0.23
## NumWebPurchases             0.42              0.23            1.00
## NumCatalogPurchases         0.44             -0.01            0.38
## NumStorePurchases           0.38              0.07            0.50
## NumWebVisitsMonth          -0.25              0.35           -0.06
##                     NumCatalogPurchases NumStorePurchases NumWebVisitsMonth
## Year_Birth                        -0.12             -0.13              0.12
## Income                             0.59              0.53             -0.55
## Teenhome                          -0.11              0.05              0.13
## MntWines                           0.64              0.64             -0.32
## MntFruits                          0.49              0.46             -0.42
## MntMeatProducts                    0.73              0.49             -0.54
## MntFishProducts                    0.53              0.46             -0.45
## MntSweetProducts                   0.49              0.45             -0.42
## MntGoldProds                       0.44              0.38             -0.25
## NumDealsPurchases                 -0.01              0.07              0.35
## NumWebPurchases                    0.38              0.50             -0.06
## NumCatalogPurchases                1.00              0.52             -0.52
## NumStorePurchases                  0.52              1.00             -0.43
## NumWebVisitsMonth                 -0.52             -0.43              1.00

1.4. Gráficas Multivariadas

En la guía de clase de ( Aristizábal R., 2017 ) se menciona que, en general, los gráficos multivariados cumplen dos objetivos esenciales: primero, ayudan a comparar el comportamiento de poblaciones de estudio con base en variables categóricas y suavizan la comprensión de la Estructura de evaluación entre varias variables. En este sentido, el conjunto de datos de trabajo tendrá apoyo descriptivo gráfico a través de tres diagramas: uno conjunto que integra dispersión, distribución y correlaciones; otro basado en la renderización de polígonos, y por último, uno que recurre a las caras de Chernoff.

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 2 se calcularán e interpretarán, para las variables numéricas, las gráficas multivariadas de diagrama de correlaciones, matriz de diagrama de dispersión, diagrama de estrellas y caras de Chernoff. Se recuerda que las variables numéricas (en escalada de medición de razón) son:Income, MntWines, MntFruits, MntMeatProducts, MntFishProducts, MntSweetProducts, MntGoldProds, NumDealsPurchases, NumWebPurchases, NumCatalogPurchases, NumStorePurchases, NumWebVisitsMonth.

Desarrollo del Análisis

La navegación a través de las pestañas muestra las gráficas multivariadas de: Diagrama Conjunto de Dispersión, Distribución y Correlaciones, Diagrama de Estrellas y Caras de Chernoff.

Con base en la pestaña Diagrama Conjunto de Dispersión, Distribución y Correlaciones se puede describir que las correlaciones más altas, mayores que 0.5, se dan entre variables esperadas como:Income, MntWines, MntFruits, MntMeatProducts, MntFishProducts, MntSweetProducts, MntGoldProds, NumDealsPurchases, NumWebPurchases, NumCatalogPurchases, NumStorePurchases. Estas variables, según las definiciones dadas en la sección 1.2 de descripción de datos, son nucleares en el fenómeno estudiado.Porque están involucradas con el ingreso monetario del cliente, sus gastos en productos y plataformas. complementariamente con base en la variable Sex se identifica que los clientes de mayor ingreso son de sexo masculino, a su vez, se puede describir la siguieinte relación, que, en la medida en que los ingresos aumentan los gastos también lo hacen en relación con productos en plataformas.

En base a la pestaña Diagrama de Estrellas, se puede notar la presencia de la variable MntSweetProducts e Income en todas estrellas con diferentes longitudes, esto sugiere que los ingresos y la categoria de dulces son características destacadas y variables en los datos. Las diferentes longitudes indican amplias variabilidades entre las personas encuestadas,ademas, la variable MntFruits y NumStorePurchases está presente en casi todas las estrellas, pero su impacto en la forma de estas es variada en comparación con otras variables,como Income y MntSweetProducts. uno de los patrones que se observa es que a medida que la variable Incomme aumenta, la variable Teenhome tiende a disminuir, y viceversa. Esto sugiere una relación inversa entre ambas variables en los datos analizados. Es decir, parece que hay una tendencia de que las personas con mayor ingreso tienden a tener menos adolescentes en casa, y aquellas con una mayor cantidad de adolescentes tiendan a tener menos ingresos por ende a consumir menos.

En base a la pestaña Cara de Chernoff Las caras muestran una gran variabilidad en sus formas, sugiriendo que las variables representadas abarcan una amplia gama de valores. Esto indica la diversidad y la complejidad del conjunto de datos. Los colores de las caras (amarillo, anaranjado y verde claro) podrían representar diferentes categorías discretas. La distribución de estos colores permite identificar agrupaciones o diferencias en los datos. La variabilidad en las expresiones faciales sugiere diferencias significativas en las variables relacionadas. Caras sonrientes, serias o con muecas podrían estar indicando diferentes niveles de una o más variables.

  • Las caras numeradas 2, 6, 7, 12 y 17 tienen formas más alargadas, lo que podría indicar valores extremos de una o varias variables específicas.

  • Las caras 11 y 18 presentan sonrisas, lo que podría indicar un valor alto en una variable positiva.

  • La cara número 9 muestra una expresión más negativa o de preocupación, lo que podría indicar valores bajos o desfavorables en ciertas variables.

  • Caras con accesorios como las numeradas 8, 9, 10, 11, 16, 21 y 22 pueden estar destacando variables específicas o categorías distintas.

  • Las caras 4, 5, 13, 14, 15, 18, 19, 20 y 23 tienen características similares en términos de forma y color, lo que podría indicar que estos datos están agrupados en un espacio multidimensional similar.

  • Las caras 2, 6, 7, 12 y 17 tienen una forma alargada distintiva, sugiriendo que estos datos podrían representar categorías únicas.

Diagrama de Conjunto de Dispersión, Distribución y Correlaciones

ggpairs(Gastos_Dataset[,-c(1,2,3,4,6,7,13,14,15,16,17,18,19,20,21,22)])

ggpairs(Gastos_Dataset[,-c(1,2,3,4,5,6,7,8,9,10,11,12,19,20,21,22)])

Diagrama de Conjunto de Dispersión, Distribución y Correlaciones

Gastos_Dataset$sex <- as.factor(Gastos_Dataset$sex)

ggpairs(Gastos_Dataset, columns = c(5,8:12), aes(color = sex, alpha = 0.5), upper = list(continuous = wrap("cor", size = 2.5)))

ggpairs(Gastos_Dataset, columns = c(13:18), aes(color = sex, alpha = 0.5), upper = list(continuous = wrap("cor", size = 2.5)))

Diagrama de Estrellas

set.seed(780728)
Gastos_Dataset_Reducido = Gastos_Dataset[sample(1:nrow(Gastos_Dataset),23),-c(1,3,4,19,20,21,22)]
stars(Gastos_Dataset_Reducido, len = 1, cex = 0.4, key.loc = c(10, 2), draw.segments = TRUE)

Caras de Chernoff

set.seed(780728)
Gastos_Dataset_Muestreado = Gastos_Dataset[sample(1:nrow(Gastos_Dataset),23),-c(1,3,4,7,19,20,21,22)]
faces(Gastos_Dataset_Muestreado)

## effect of variables:
##  modified item       Var                  
##  "height of face   " "Year_Birth"         
##  "width of face    " "Income"             
##  "structure of face" "Teenhome"           
##  "height of mouth  " "MntWines"           
##  "width of mouth   " "MntFruits"          
##  "smiling          " "MntMeatProducts"    
##  "height of eyes   " "MntFishProducts"    
##  "width of eyes    " "MntSweetProducts"   
##  "height of hair   " "MntGoldProds"       
##  "width of hair   "  "NumDealsPurchases"  
##  "style of hair   "  "NumWebPurchases"    
##  "height of nose  "  "NumCatalogPurchases"
##  "width of nose   "  "NumStorePurchases"  
##  "width of ear    "  "NumWebVisitsMonth"  
##  "height of ear   "  "Year_Birth"

1.5. Normalidad Multivariada

Como menciona (Porras C., 2016) para indagar o establecer el tipo de distribución multivariada de un conjunto de datos se puede recurrir a procedimientos descriptivos, como los gráficos, o a procedimientos inferenciales, como las pruebas estadísticas. En este sentido, se alcanza generalización de resultados al usar estos últimos, si bien los primeros apoyan a las interpretaciones.

En este apartado se contempla el uso de procedimientos inferenciales para determinar si el conjunto de datos de trabajo, en relación con sus variables numéricas, se distribuye normal multivariado (DNM). Las pruebas de normalidad multivariada (PNM) a las que será sometido son: Mardia, Henze-Zirkler, Doornik-Hansen y Royston. Para estas pruebas de normalidad los test obedecen a un nivel de significancia α=0.05 y a las hipótesis:

H0: Las variables tienen una DNM

H1: Las variables NO tienen una DNM

La prueba de Mardia se basa en extensiones de asimetría y curtosis, el cuadrado de la distancia de Mahalanobis, la cantidad de variables p por tratar y la cantidad de registros n. Además, considera que la prueba estadística para la asimetría tiene una distribución χ2 y la prueba estadística para la curtosis se distirbuye aproximadamente normal. Los detalles sobre los parámetros de las distribuciones pueden consultarse en el trabajo de (Porras C., 2016).

La prueba de Henze-Zirkler se basa en la distancia funcional, dado que si el conjunto de datos presenta una distribución normal multivariada, el estadístico de la prueba se distribuye aproximadamente como una lognormal, cuyos parámetros de media μ y varianza σ2 pueden ser consultados en (Porras C., 2016).

La prueba de Doornik-Hansen está basada en la asimetría y la curtosis de un conjunto de datos multivariados, que se transforma para garantizar la independencia. Es considerada más potente que la prueba de Shapiro-Wilk para casos multivariados. Su estadístico de prueba está definido como la suma de las transformaciones al cuadrado de la asimetría y la curtosis, y sigue, aproximadamente, una distribución χ2. Los detalles de la prueba pueden ser consultados en (Doornik & Hansen, 2008).

La prueba de Royston recurre a las pruebas Shapiro-Wilk o Shapiro-Francia para probar la normalidad multivariada. Así, si la curtosis es mayor que 3, la prueba de Royston usa Shapiro-Francia para distribuciones leptocurticas. Mientras que para distribuciones platicurticas usa Shapiro-Wilk. En ella los parámetros son obtenidos por aproximaciones polinomiales, esto puede ser consultado en (Porras C., 2016).

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 2 se hará una prueba estadística de normalidad multivariada, con un nivel de significancia α=0.05, para establecer si sus datos métricos provienen de una población normal multivariada. Se recuerda que las variables numéricas del conjunto de datos (en escalada de medición de razón) son: Income, MntWines, MntFruits, MntMeatProducts, MntFishProducts, MntSweetProducts, MntGoldProds, NumDealsPurchases, NumWebPurchases, NumCatalogPurchases, NumStorePurchases, NumWebVisitsMonth.

Desarrollo del Análisis

La navegación a través de las pestañas muestra la exploración a través de las diferentes pruebas de normalidad multivariada indica que el conjunto de datos, considerando sus variables numéricas, no sigue una distribución normal multivariada. Aquí están los hallazgos clave de cada prueba:

Prueba de Mardia:

  • Asimetría (Skewness): El estadístico de la prueba es 239579.161518897 con un valor p de 0, lo que indica que la asimetría es significativamente diferente de cero. Por lo tanto, se rechaza la hipótesis nula de que la asimetría es cero, lo que sugiere que los datos no siguen una distribución normal multivariada en términos de asimetría.
  • Curtosis (Kurtosis): El estadístico de la prueba es 1241.3855032977 con un valor p de 0, lo que indica que la curtosis es significativamente diferente de cero. Similar a la asimetría, se rechaza la hipótesis nula de que la curtosis es cero, lo que sugiere que los datos no siguen una distribución normal multivariada en términos de curtosis. Resultado general: Se realizó la prueba de normalidad univariada para cada variable en el conjunto de datos y para todas las variables, el valor p es menor que 0.001, esto sugiere que ninguna de las variables individuales sigue una distribución normal.Ambas pruebas indican que los datos no siguen una distribución normal multivariada según el nivel de significancia establecido (α=0.05).

Prueba de Henze-Zirkler: El estadístico de prueba es 25.03611 con un valor p de 0, lo que indica que el conjunto de datos no sigue una distribución normal multivariada. Por lo tanto, la hipótesis de normalidad multivariada es rechazada. Resultado general: Se realizó la prueba de normalidad univariada para cada variable en el conjunto de datos y para todas las variables, el valor p es menor que 0.001, lo que indica que se rechaza la hipótesis nula de normalidad para cada una de ellas. Esto sugiere que ninguna de las variables individuales sigue una distribución normal.

Prueba de Doornik-Hansen: El estadístico de prueba es 109203 con un valor p de 0, lo que indica que el conjunto de datos no sigue una distribución normal multivariada. Por lo tanto, la hipótesis de normalidad multivariada es rechazada. Resultado general: Se realizó la prueba de normalidad univariada para cada variable en el conjunto de datos y para todas las variables, el valor p es menor que 0.001, lo que indica que se rechaza la hipótesis nula de normalidad para cada una de ellas. Esto sugiere que ninguna de las variables individuales sigue una distribución normal.

Prueba de Royston:La PNM de Royston establece que el conjunto de datos reducido a sus variables numéricas no sigue una DNM, dado que su p−value es menor que el nivel de significancia α=0.05. Obsérvese esto a través de la pestaña PNM Royston.

En resumen los resultados de las pruebas de normalidad multivariante, incluyendo la Prueba de Mardia, la Prueba de Henze-Zirkler, la Prueba de Doornik-Hansen y la Prueba de Royston, indican una falta de evidencia para respaldar la hipótesis de normalidad en los datos. Esto sugiere que las variables analizadas no siguen una distribución multivariante normal, lo que podría comprometer la validez de los análisis estadísticos posteriores que asumen normalidad. Esta falta de normalidad multivariante resalta la importancia de interpretar los resultados subsiguientes con precaución.

Prueba de Normalidad Multivariada de Mardia (PNM)

mvn(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], mvnTest="mardia")
## $multivariateNormality
##              Test        Statistic p value Result
## 1 Mardia Skewness   231618.0198033       0     NO
## 2 Mardia Kurtosis 1221.38202494642       0     NO
## 3             MVN             <NA>    <NA>     NO
## 
## $univariateNormality
##                Test            Variable Statistic   p value Normality
## 1  Anderson-Darling     Year_Birth         8.8092  <0.001      NO    
## 2  Anderson-Darling       Income          15.8569  <0.001      NO    
## 3  Anderson-Darling      Teenhome        335.4639  <0.001      NO    
## 4  Anderson-Darling      MntWines        121.9487  <0.001      NO    
## 5  Anderson-Darling      MntFruits       248.7991  <0.001      NO    
## 6  Anderson-Darling   MntMeatProducts    203.6603  <0.001      NO    
## 7  Anderson-Darling   MntFishProducts    239.5663  <0.001      NO    
## 8  Anderson-Darling  MntSweetProducts    252.5777  <0.001      NO    
## 9  Anderson-Darling    MntGoldProds      171.7969  <0.001      NO    
## 10 Anderson-Darling  NumDealsPurchases   168.3709  <0.001      NO    
## 11 Anderson-Darling   NumWebPurchases     47.1829  <0.001      NO    
## 12 Anderson-Darling NumCatalogPurchases  108.4480  <0.001      NO    
## 13 Anderson-Darling  NumStorePurchases    77.4826  <0.001      NO    
## 14 Anderson-Darling  NumWebVisitsMonth    38.4760  <0.001      NO    
## 
## $Descriptives
##                        n         Mean      Std.Dev Median  Min    Max    25th
## Year_Birth          2227 1.968815e+03    11.983925   1970 1893   1996  1959.0
## Income              2227 5.221263e+04 25203.151287  51369 1730 666666 35221.0
## Teenhome            2227 5.051639e-01     0.543974      0    0      2     0.0
## MntWines            2227 3.042313e+02   336.881346    174    0   1493    23.5
## MntFruits           2227 2.630310e+01    39.730066      8    0    199     2.0
## MntMeatProducts     2227 1.665995e+02   223.929054     68    0   1725    16.0
## MntFishProducts     2227 3.755411e+01    54.667213     12    0    259     3.0
## MntSweetProducts    2227 2.708352e+01    41.308247      8    0    263     1.0
## MntGoldProds        2227 4.403682e+01    52.190563     24    0    362     9.0
## NumDealsPurchases   2227 2.324652e+00     1.931704      2    0     15     1.0
## NumWebPurchases     2227 4.091154e+00     2.781702      4    0     27     2.0
## NumCatalogPurchases 2227 2.665020e+00     2.923255      2    0     28     0.0
## NumStorePurchases   2227 5.793893e+00     3.249466      5    0     13     3.0
## NumWebVisitsMonth   2227 5.318366e+00     2.426575      6    0     20     3.0
##                        75th       Skew    Kurtosis
## Year_Birth           1977.0 -0.3502902   0.7167186
## Income              68474.5  6.7056678 157.6328053
## Teenhome                1.0  0.4063655  -0.9944883
## MntWines              504.5  1.1738409   0.5902579
## MntFruits              33.0  2.1022504   4.0582928
## MntMeatProducts       232.0  2.0270616   5.0603373
## MntFishProducts        50.0  1.9176028   3.0818318
## MntSweetProducts       33.0  2.1340817   4.3606650
## MntGoldProds           56.0  1.8866296   3.5488780
## NumDealsPurchases       3.0  2.4237286   8.9651399
## NumWebPurchases         6.0  1.3810606   5.6759529
## NumCatalogPurchases     4.0  1.8804791   8.0514130
## NumStorePurchases       8.0  0.7004190  -0.6246516
## NumWebVisitsMonth       7.0  0.2134005   1.8218800

Prueba de Normalidad Multivariada de Henze-Zirkler (PNMHZ)

mvn(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], mvnTest="hz")
## $multivariateNormality
##            Test       HZ p value MVN
## 1 Henze-Zirkler 25.37508       0  NO
## 
## $univariateNormality
##                Test            Variable Statistic   p value Normality
## 1  Anderson-Darling     Year_Birth         8.8092  <0.001      NO    
## 2  Anderson-Darling       Income          15.8569  <0.001      NO    
## 3  Anderson-Darling      Teenhome        335.4639  <0.001      NO    
## 4  Anderson-Darling      MntWines        121.9487  <0.001      NO    
## 5  Anderson-Darling      MntFruits       248.7991  <0.001      NO    
## 6  Anderson-Darling   MntMeatProducts    203.6603  <0.001      NO    
## 7  Anderson-Darling   MntFishProducts    239.5663  <0.001      NO    
## 8  Anderson-Darling  MntSweetProducts    252.5777  <0.001      NO    
## 9  Anderson-Darling    MntGoldProds      171.7969  <0.001      NO    
## 10 Anderson-Darling  NumDealsPurchases   168.3709  <0.001      NO    
## 11 Anderson-Darling   NumWebPurchases     47.1829  <0.001      NO    
## 12 Anderson-Darling NumCatalogPurchases  108.4480  <0.001      NO    
## 13 Anderson-Darling  NumStorePurchases    77.4826  <0.001      NO    
## 14 Anderson-Darling  NumWebVisitsMonth    38.4760  <0.001      NO    
## 
## $Descriptives
##                        n         Mean      Std.Dev Median  Min    Max    25th
## Year_Birth          2227 1.968815e+03    11.983925   1970 1893   1996  1959.0
## Income              2227 5.221263e+04 25203.151287  51369 1730 666666 35221.0
## Teenhome            2227 5.051639e-01     0.543974      0    0      2     0.0
## MntWines            2227 3.042313e+02   336.881346    174    0   1493    23.5
## MntFruits           2227 2.630310e+01    39.730066      8    0    199     2.0
## MntMeatProducts     2227 1.665995e+02   223.929054     68    0   1725    16.0
## MntFishProducts     2227 3.755411e+01    54.667213     12    0    259     3.0
## MntSweetProducts    2227 2.708352e+01    41.308247      8    0    263     1.0
## MntGoldProds        2227 4.403682e+01    52.190563     24    0    362     9.0
## NumDealsPurchases   2227 2.324652e+00     1.931704      2    0     15     1.0
## NumWebPurchases     2227 4.091154e+00     2.781702      4    0     27     2.0
## NumCatalogPurchases 2227 2.665020e+00     2.923255      2    0     28     0.0
## NumStorePurchases   2227 5.793893e+00     3.249466      5    0     13     3.0
## NumWebVisitsMonth   2227 5.318366e+00     2.426575      6    0     20     3.0
##                        75th       Skew    Kurtosis
## Year_Birth           1977.0 -0.3502902   0.7167186
## Income              68474.5  6.7056678 157.6328053
## Teenhome                1.0  0.4063655  -0.9944883
## MntWines              504.5  1.1738409   0.5902579
## MntFruits              33.0  2.1022504   4.0582928
## MntMeatProducts       232.0  2.0270616   5.0603373
## MntFishProducts        50.0  1.9176028   3.0818318
## MntSweetProducts       33.0  2.1340817   4.3606650
## MntGoldProds           56.0  1.8866296   3.5488780
## NumDealsPurchases       3.0  2.4237286   8.9651399
## NumWebPurchases         6.0  1.3810606   5.6759529
## NumCatalogPurchases     4.0  1.8804791   8.0514130
## NumStorePurchases       8.0  0.7004190  -0.6246516
## NumWebVisitsMonth       7.0  0.2134005   1.8218800

Prueba de Normalidad Multivariada de Doornik-Hansen (PNMDH)

mvn(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], mvnTest="dh")
## $multivariateNormality
##             Test      E df p value MVN
## 1 Doornik-Hansen 109805 28       0  NO
## 
## $univariateNormality
##                Test            Variable Statistic   p value Normality
## 1  Anderson-Darling     Year_Birth         8.8092  <0.001      NO    
## 2  Anderson-Darling       Income          15.8569  <0.001      NO    
## 3  Anderson-Darling      Teenhome        335.4639  <0.001      NO    
## 4  Anderson-Darling      MntWines        121.9487  <0.001      NO    
## 5  Anderson-Darling      MntFruits       248.7991  <0.001      NO    
## 6  Anderson-Darling   MntMeatProducts    203.6603  <0.001      NO    
## 7  Anderson-Darling   MntFishProducts    239.5663  <0.001      NO    
## 8  Anderson-Darling  MntSweetProducts    252.5777  <0.001      NO    
## 9  Anderson-Darling    MntGoldProds      171.7969  <0.001      NO    
## 10 Anderson-Darling  NumDealsPurchases   168.3709  <0.001      NO    
## 11 Anderson-Darling   NumWebPurchases     47.1829  <0.001      NO    
## 12 Anderson-Darling NumCatalogPurchases  108.4480  <0.001      NO    
## 13 Anderson-Darling  NumStorePurchases    77.4826  <0.001      NO    
## 14 Anderson-Darling  NumWebVisitsMonth    38.4760  <0.001      NO    
## 
## $Descriptives
##                        n         Mean      Std.Dev Median  Min    Max    25th
## Year_Birth          2227 1.968815e+03    11.983925   1970 1893   1996  1959.0
## Income              2227 5.221263e+04 25203.151287  51369 1730 666666 35221.0
## Teenhome            2227 5.051639e-01     0.543974      0    0      2     0.0
## MntWines            2227 3.042313e+02   336.881346    174    0   1493    23.5
## MntFruits           2227 2.630310e+01    39.730066      8    0    199     2.0
## MntMeatProducts     2227 1.665995e+02   223.929054     68    0   1725    16.0
## MntFishProducts     2227 3.755411e+01    54.667213     12    0    259     3.0
## MntSweetProducts    2227 2.708352e+01    41.308247      8    0    263     1.0
## MntGoldProds        2227 4.403682e+01    52.190563     24    0    362     9.0
## NumDealsPurchases   2227 2.324652e+00     1.931704      2    0     15     1.0
## NumWebPurchases     2227 4.091154e+00     2.781702      4    0     27     2.0
## NumCatalogPurchases 2227 2.665020e+00     2.923255      2    0     28     0.0
## NumStorePurchases   2227 5.793893e+00     3.249466      5    0     13     3.0
## NumWebVisitsMonth   2227 5.318366e+00     2.426575      6    0     20     3.0
##                        75th       Skew    Kurtosis
## Year_Birth           1977.0 -0.3502902   0.7167186
## Income              68474.5  6.7056678 157.6328053
## Teenhome                1.0  0.4063655  -0.9944883
## MntWines              504.5  1.1738409   0.5902579
## MntFruits              33.0  2.1022504   4.0582928
## MntMeatProducts       232.0  2.0270616   5.0603373
## MntFishProducts        50.0  1.9176028   3.0818318
## MntSweetProducts       33.0  2.1340817   4.3606650
## MntGoldProds           56.0  1.8866296   3.5488780
## NumDealsPurchases       3.0  2.4237286   8.9651399
## NumWebPurchases         6.0  1.3810606   5.6759529
## NumCatalogPurchases     4.0  1.8804791   8.0514130
## NumStorePurchases       8.0  0.7004190  -0.6246516
## NumWebVisitsMonth       7.0  0.2134005   1.8218800

Prueba de Royston (PR)

set.seed(123) 
sample_data <- Gastos_Dataset[sample(nrow(Gastos_Dataset), 1999), -c(1, 3, 4, 7, 19, 20, 21, 22)]
MVN::mvn(sample_data, mvnTest = "royston")
## $multivariateNormality
##      Test        H p value MVN
## 1 Royston 2628.438       0  NO
## 
## $univariateNormality
##                Test            Variable Statistic   p value Normality
## 1  Anderson-Darling     Year_Birth         8.1513  <0.001      NO    
## 2  Anderson-Darling       Income          15.5456  <0.001      NO    
## 3  Anderson-Darling      Teenhome        302.1506  <0.001      NO    
## 4  Anderson-Darling      MntWines        107.4350  <0.001      NO    
## 5  Anderson-Darling      MntFruits       219.6047  <0.001      NO    
## 6  Anderson-Darling   MntMeatProducts    180.0322  <0.001      NO    
## 7  Anderson-Darling   MntFishProducts    212.6654  <0.001      NO    
## 8  Anderson-Darling  MntSweetProducts    224.2148  <0.001      NO    
## 9  Anderson-Darling    MntGoldProds      151.7755  <0.001      NO    
## 10 Anderson-Darling  NumDealsPurchases   148.1614  <0.001      NO    
## 11 Anderson-Darling   NumWebPurchases     42.0284  <0.001      NO    
## 12 Anderson-Darling NumCatalogPurchases   94.1043  <0.001      NO    
## 13 Anderson-Darling  NumStorePurchases    67.2853  <0.001      NO    
## 14 Anderson-Darling  NumWebVisitsMonth    32.5045  <0.001      NO    
## 
## $Descriptives
##                        n         Mean      Std.Dev Median  Min    Max  25th
## Year_Birth          1987 1.968712e+03 1.200583e+01   1970 1893   1996  1959
## Income              1987 5.234757e+04 2.545539e+04  51537 1730 666666 35482
## Teenhome            1987 5.093105e-01 5.406803e-01      0    0      2     0
## MntWines            1987 3.057388e+02 3.368743e+02    178    0   1493    25
## MntFruits           1987 2.661651e+01 3.988579e+01      8    0    199     2
## MntMeatProducts     1987 1.684258e+02 2.237327e+02     69    0   1725    16
## MntFishProducts     1987 3.803573e+01 5.523902e+01     12    0    259     3
## MntSweetProducts    1987 2.777604e+01 4.201017e+01      8    0    262     1
## MntGoldProds        1987 4.485455e+01 5.259021e+01     25    0    321     9
## NumDealsPurchases   1987 2.345244e+00 1.938007e+00      2    0     15     1
## NumWebPurchases     1987 4.107700e+00 2.723675e+00      4    0     27     2
## NumCatalogPurchases 1987 2.684952e+00 2.888214e+00      2    0     28     0
## NumStorePurchases   1987 5.828888e+00 3.242609e+00      5    0     13     3
## NumWebVisitsMonth   1987 5.309009e+00 2.437772e+00      6    0     20     3
##                        75th       Skew    Kurtosis
## Year_Birth           1977.0 -0.3713942   0.8696832
## Income              68474.5  7.2199890 169.4251380
## Teenhome                1.0  0.3642779  -1.0588474
## MntWines              505.0  1.1712356   0.5841315
## MntFruits              34.0  2.0750932   3.9223610
## MntMeatProducts       236.0  1.9544604   4.5648423
## MntFishProducts        50.0  1.9115387   3.0469499
## MntSweetProducts       35.0  2.0602720   3.8503207
## MntGoldProds           57.0  1.7820879   2.8313266
## NumDealsPurchases       3.0  2.3671498   8.5100990
## NumWebPurchases         6.0  1.1220316   3.6018084
## NumCatalogPurchases     4.0  1.7234134   6.6397145
## NumStorePurchases       8.0  0.6765208  -0.6585757
## NumWebVisitsMonth       7.0  0.2911986   2.1005798

Fase 2 [Componentes Principales]

2.1. Objetivos

En términos generales, esta segunda etapa de estudio mostrará cálculos, visualizaciones e interpretaciones con base en el conjunto de datos tratado en la fase 1, pero ahora desde un enfoque de análisis de componentes principales sobre las variables cuantitativas, que incluirá: selección, calidad de representación, contribuciones e interpretación.

2.2. Selección de Componentes

Como es mencionado en el trabajo de (Díaz Morales & Morales Rivera, 2012) el Análisis de Componentes Principales (en adelante ACP) reestructura un conjunto de datos multivariado a través de la reducción de la cantidad de sus variables, en cuyo transfondo es innecesario asumir ninguna distribución de probabilidad de ellas. Esta reducción es lograda a través de combinaciones lineales de las variables originales, que deberán contener la mayor variabilidad posible presente en el conjunto de datos. En este sentido, el ACP logra crear nuevas variables, conocidas como componentes principales, que poseen características estadísticas de independencia (con base en el supuesto de normalidad) y no correlación.

El ACP se logra a lo largo de las siguientes fases: generación de nuevas variables, reducción dimensional del espacio de los datos, eliminación de varaibles de poco aporte e interpretación de los componentes resultantes en el contexto del problema del cual se obtuvieron los datos.

Planteamiento del Problema

Con base en las variables cuantitativas del conjunto de datos descrito en la sección 2 se demanda primero establecer el porcentaje de varianza explicado por cada dimensión una vez procesado el ACP; y posteriormente, con base en el autovalor medio o usando un diagrama de sedimentación, decidir cuántos componentes retener.

Desarrollo del Análisis

La navegación a través de las pestañas muestra que el conjunto de datos, en relación con sus variables numéricas, puede ser representado por un conjuto de variables más pequeño que retiene el 40.41% de la variabilidad del conjunto. En particular:

La Matriz ACP muestra catorce dimensiones donde solo la primera retiene el 40.41%, la siguiente el 13.85% y las demás solo porcentajes con parte entera de una cifra. En este sentido, la representatividad de la combinación lineal que define a la dimensión 1 es significativamente alta en comparación con las demás. Como esta matriz es muda en relación con las variables originales se sigue indagando la identificación de las variables que más contribuyan a la dimensión de valor propio más alto.

Al analizar el Gráfico de Cattell y el Gráfico de Cattell-Kaiser, se busca determinar cuántas dimensiones (componentes principales) son necesarias para retener suficiente variabilidad en los datos. En este caso se determina un cambio brusco en la pendiente en el Gráfico de Cattell, lo que indica que la primera dimensión explica una cantidad significativa de variabilidad en comparación con las siguientes. El Gráfico de Cattell-Kaiser, que combina el Gráfico de Cattell con el criterio de Kaiser, respalda la elección de retener solo una dimensión, siempre y cuando esta conserve una cantidad adecuada de variabilidad para abordar el problema en cuestión. Sin embargo, es importante tener en cuenta que estas elecciones se basan en criterios comúnmente utilizados, no en criterios universalmente aceptados.

Matriz ACP

get_eigenvalue(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 6, scale.unit = TRUE, graph = F))
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 6, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package
##        eigenvalue variance.percent cumulative.variance.percent
## Dim.1   5.6536350        40.383107                    40.38311
## Dim.2   1.9398912        13.856366                    54.23947
## Dim.3   1.1676461         8.340330                    62.57980
## Dim.4   0.8325555         5.946825                    68.52663
## Dim.5   0.6899087         4.927919                    73.45455
## Dim.6   0.6329516         4.521083                    77.97563
## Dim.7   0.6061672         4.329766                    82.30540
## Dim.8   0.4663516         3.331083                    85.63648
## Dim.9   0.4275250         3.053750                    88.69023
## Dim.10  0.3908937         2.792098                    91.48233
## Dim.11  0.3845885         2.747061                    94.22939
## Dim.12  0.3344806         2.389147                    96.61853
## Dim.13  0.2530891         1.807779                    98.42631
## Dim.14  0.2203160         1.573686                   100.00000

Matriz de Correlaciones

round(cor(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)]),2)
##                     Year_Birth Income Teenhome MntWines MntFruits
## Year_Birth                1.00     NA    -0.35    -0.16     -0.02
## Income                      NA      1       NA       NA        NA
## Teenhome                 -0.35     NA     1.00     0.00     -0.18
## MntWines                 -0.16     NA     0.00     1.00      0.39
## MntFruits                -0.02     NA    -0.18     0.39      1.00
## MntMeatProducts          -0.03     NA    -0.26     0.56      0.54
## MntFishProducts          -0.04     NA    -0.20     0.40      0.59
## MntSweetProducts         -0.02     NA    -0.16     0.39      0.57
## MntGoldProds             -0.06     NA    -0.02     0.39      0.39
## NumDealsPurchases        -0.06     NA     0.39     0.01     -0.13
## NumWebPurchases          -0.15     NA     0.16     0.54      0.30
## NumCatalogPurchases      -0.12     NA    -0.11     0.64      0.49
## NumStorePurchases        -0.13     NA     0.05     0.64      0.46
## NumWebVisitsMonth         0.12     NA     0.13    -0.32     -0.42
##                     MntMeatProducts MntFishProducts MntSweetProducts
## Year_Birth                    -0.03           -0.04            -0.02
## Income                           NA              NA               NA
## Teenhome                      -0.26           -0.20            -0.16
## MntWines                       0.56            0.40             0.39
## MntFruits                      0.54            0.59             0.57
## MntMeatProducts                1.00            0.57             0.52
## MntFishProducts                0.57            1.00             0.58
## MntSweetProducts               0.52            0.58             1.00
## MntGoldProds                   0.35            0.42             0.37
## NumDealsPurchases             -0.12           -0.14            -0.12
## NumWebPurchases                0.29            0.29             0.35
## NumCatalogPurchases            0.72            0.53             0.49
## NumStorePurchases              0.48            0.46             0.45
## NumWebVisitsMonth             -0.54           -0.45            -0.42
##                     MntGoldProds NumDealsPurchases NumWebPurchases
## Year_Birth                 -0.06             -0.06           -0.15
## Income                        NA                NA              NA
## Teenhome                   -0.02              0.39            0.16
## MntWines                    0.39              0.01            0.54
## MntFruits                   0.39             -0.13            0.30
## MntMeatProducts             0.35             -0.12            0.29
## MntFishProducts             0.42             -0.14            0.29
## MntSweetProducts            0.37             -0.12            0.35
## MntGoldProds                1.00              0.05            0.42
## NumDealsPurchases           0.05              1.00            0.23
## NumWebPurchases             0.42              0.23            1.00
## NumCatalogPurchases         0.44             -0.01            0.38
## NumStorePurchases           0.38              0.07            0.50
## NumWebVisitsMonth          -0.25              0.35           -0.06
##                     NumCatalogPurchases NumStorePurchases NumWebVisitsMonth
## Year_Birth                        -0.12             -0.13              0.12
## Income                               NA                NA                NA
## Teenhome                          -0.11              0.05              0.13
## MntWines                           0.64              0.64             -0.32
## MntFruits                          0.49              0.46             -0.42
## MntMeatProducts                    0.72              0.48             -0.54
## MntFishProducts                    0.53              0.46             -0.45
## MntSweetProducts                   0.49              0.45             -0.42
## MntGoldProds                       0.44              0.38             -0.25
## NumDealsPurchases                 -0.01              0.07              0.35
## NumWebPurchases                    0.38              0.50             -0.06
## NumCatalogPurchases                1.00              0.52             -0.52
## NumStorePurchases                  0.52              1.00             -0.43
## NumWebVisitsMonth                 -0.52             -0.43              1.00

Valores y Vectores Propios

datos_limpios <- Gastos_Dataset[complete.cases(Gastos_Dataset[, -c(1,3,4,7,19,20,21,22)]), ]

resultados_pca <- princomp(datos_limpios[, -c(1,3,4,7,19,20,21,22)], cor = TRUE)

print(resultados_pca$sdev^2)
##    Comp.1    Comp.2    Comp.3    Comp.4    Comp.5    Comp.6    Comp.7    Comp.8 
## 5.6630128 1.9381737 1.1689988 0.8313036 0.6885805 0.6324676 0.6088879 0.4658675 
##    Comp.9   Comp.10   Comp.11   Comp.12   Comp.13   Comp.14 
## 0.4288267 0.3920507 0.3843060 0.3334306 0.2444766 0.2196169
print(resultados_pca$loadings[, 1:12])
##                          Comp.1      Comp.2       Comp.3      Comp.4
## Year_Birth           0.05884961  0.32750766  0.616578584  0.34622856
## Income              -0.31426912 -0.05817921 -0.232288211  0.27020101
## Teenhome             0.05810022 -0.54257843 -0.283925838 -0.18110548
## MntWines            -0.31389776 -0.18807288  0.010359555  0.39573813
## MntFruits           -0.30072425  0.12616442  0.115493491 -0.35944529
## MntMeatProducts     -0.34133758  0.13009140 -0.009987778  0.21461374
## MntFishProducts     -0.31056076  0.13820450  0.095198229 -0.34725063
## MntSweetProducts    -0.29936337  0.10654807  0.122085536 -0.33507033
## MntGoldProds        -0.24404317 -0.11599157  0.268128288 -0.36731991
## NumDealsPurchases    0.04586484 -0.50714589  0.338519366  0.05278015
## NumWebPurchases     -0.22903220 -0.37780649  0.283131434  0.02953174
## NumCatalogPurchases -0.34383794 -0.01499811 -0.037051902  0.21700781
## NumStorePurchases   -0.31141182 -0.18021383  0.015944460  0.15256816
## NumWebVisitsMonth    0.27116991 -0.22406748  0.423635615 -0.02535784
##                          Comp.5      Comp.6      Comp.7       Comp.8
## Year_Birth           0.21868430  0.21496979  0.48078045  0.086794846
## Income               0.09067892  0.08869691  0.19884356  0.348240180
## Teenhome             0.25804444  0.18818194  0.37948711  0.136818316
## MntWines            -0.27979269  0.05644309 -0.14317796 -0.122724440
## MntFruits            0.19545408  0.17823350 -0.10610240 -0.288259468
## MntMeatProducts      0.18217814 -0.28302477 -0.20480030  0.090535487
## MntFishProducts      0.14426255 -0.01781607 -0.13100742 -0.166641823
## MntSweetProducts     0.18197478  0.31105223 -0.14558619  0.500406557
## MntGoldProds        -0.41687493 -0.47801519  0.50643621 -0.009165823
## NumDealsPurchases    0.57157606 -0.29055600 -0.08737248 -0.099077669
## NumWebPurchases     -0.36669656  0.28633625 -0.13229238  0.284582621
## NumCatalogPurchases  0.11434138 -0.40818132 -0.08307401  0.105015726
## NumStorePurchases   -0.01223329  0.36970502  0.12370896 -0.602033820
## NumWebVisitsMonth   -0.15997525  0.01333869 -0.41161121  0.059898156
##                           Comp.9      Comp.10      Comp.11      Comp.12
## Year_Birth           0.106048927  0.139529630  0.142481394  0.068585485
## Income               0.282438794  0.026045669 -0.573867455 -0.393931099
## Teenhome             0.238373717  0.246579636  0.423094327  0.070023491
## MntWines             0.109276034  0.100525489  0.340709009 -0.328502306
## MntFruits            0.639173522 -0.392889713  0.021488787  0.071380791
## MntMeatProducts      0.086760732 -0.013191594  0.137764730  0.158435027
## MntFishProducts     -0.044755365  0.800752194 -0.184482278  0.009031158
## MntSweetProducts    -0.422629661 -0.206397989  0.252483127 -0.290415205
## MntGoldProds        -0.030683303 -0.110678055 -0.003580127 -0.186558131
## NumDealsPurchases   -0.181897439 -0.157698244 -0.258154532 -0.053269517
## NumWebPurchases      0.012451029  0.003647042 -0.232366389  0.595133626
## NumCatalogPurchases  0.002059336  0.022760000  0.323593815  0.205657742
## NumStorePurchases   -0.356104168 -0.087165119 -0.013071044 -0.101354435
## NumWebVisitsMonth    0.287283818  0.159242646  0.111923644 -0.410224815

Correlaciones Comparadas

datos_limpios <- Gastos_Dataset[complete.cases(Gastos_Dataset[, -c(1,3,4,7,19,20,21,22)]), ]
par(mfrow=c(1,2))
corrplot::corrplot(cor(datos_limpios[, -c(1,2,3,4,7,19,20,21,22)]), method = "color", type = "upper", number.cex = 0.4)
resultados_pca <- princomp(datos_limpios[, -c(1,3,4,7,19,20,21,22)], cor = TRUE)
corrplot::corrplot(cor(resultados_pca$scores), method = "color", type = "upper", number.cex = 0.4)

Gráfico Cattell

fviz_eig(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], scale.unit = T, graph = F), addlabels = T, ylim=c(0,90), main = "")
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], scale.unit =
## T, : Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Gráfico de Cattell-Kaiser

scree(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)],factors = FALSE, pc = TRUE, main ="")

2.3. Calidad de Representación

Al retomar el trabajo de (Díaz Morales & Morales Rivera, 2012) se verifica que, una vez reducida la dimensionalidad del conjunto de datos y entendido que sus variables (estandarizadas) están representadas gráficamente por proyecciones de la hiperesfera de correlaciones, es necesario iniciar la interpretación de componentes a partir de dichas correlaciones, para luego la calidad de sus representaciones dada la reducción dimensional del conjunto de datos en términos de sus variables.

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 2 se demanda determinar la calidad de representación de las variables cuantitativas respecto a la cantidad de dimensiones calculadas que retienen la mayor cantidad de variabilidad.

Desarrollo del Análisis

El Círculo de Correlaciones expresa que el grafico visualiza las relaciones entre varias variables, muestra los dos primeros componentes principales, Dim1 y Dim2, que juntos representan el 40.4% de la varianza total en el conjunto de datos. Las variables se representan como puntos en el gráfico, y sus posiciones relativas entre sí indican la fuerza y dirección de sus correlaciones. Las variables que están más cerca tienden a estar más correlacionadas, mientras que las que están más separadas están menos correlacionadas. Algunas de las variables clave mostradas en el gráfico incluyen:

  • NumWebVisitsMonth: El número de visitas web por mes

  • NumDealsPurchases: El número de ofertas o compras

  • NumWebPurchases: El número de compras web

  • MntWines: La cantidad gastada en vinos

  • Income: Los ingresos del individuo

  • MntMeatProducts: La cantidad gastada en productos cárnicos

  • MntFishProducts: La cantidad gastada en productos de pescado

La Matriz de Representación expresa que:

-Dim.1 y Dim.2: Capturan la mayor parte de la variabilidad de los datos y están asociadas principalmente con el comportamiento de gasto y características demográficas.

-Dim.3 y Dim.4: Capturan variabilidad adicional relacionada con el año de nacimiento y comportamientos de compras menos dominantes.

-Dim.5 y Dim.6: Representan características menos dominantes y no proporcionan tanta información útil como las primeras dos dimensiones.

En resumen, las dos primeras dimensiones son las más importantes y explican la mayor parte de la variabilidad en el comportamiento de gasto y las características demográficas del conjunto de datos. Las dimensiones adicionales explican variabilidad restante, pero son menos informativas.

La Coordenadas Individuales, por otro lado, muestra el compotamiento por cada dimensión

-Dimensión 1 (Dim.1): Las coordenadas en Dim.1 varían significativamente, con algunos individuos como el 1 (3.757) y el 19 (3.325) teniendo valores altos, mientras que otros como el 10 (-4.524) y el 9 (-2.647) tienen valores bajos. Esto sugiere que Dim.1 distingue fuertemente entre individuos en función de ciertas características. Dado que en el análisis de la matriz de representación vimos que Dim.1 está relacionada principalmente con los gastos en diferentes categorías de productos y el número de compras, estos individuos están diferenciados por sus patrones de gasto.

-Dimensión 2 (Dim.2): En Dim.2, los valores también varían, pero menos que en Dim.1. Individuos como el 19 (2.545) y el 23 (1.922) tienen coordenadas altas, mientras que el 13 (-1.960) y el 11 (-1.710) tienen coordenadas bajas. Dim.2 está relacionada con características demográficas y comportamiento de ofertas y compras en línea. Por lo tanto, los individuos con valores altos y bajos en esta dimensión tienen diferentes comportamientos en estos aspectos.

-Dimensión 3 (Dim.3): En Dim.3, las coordenadas no varían tanto y son generalmente más bajas. Individuos como el 1 (1.120) y el 5 (1.254) tienen valores altos, mientras que otros como el 2 (-1.802) y el 16 (-1.364) tienen valores bajos. Esta dimensión está menos claramente definida pero puede estar relacionada con el año de nacimiento y el comportamiento de visitas web.

-Dimensión 4 (Dim.4): Las coordenadas en Dim.4 muestran variabilidad con individuos como el 22 (3.976) teniendo valores extremadamente altos, lo que indica una diferenciación significativa en esta dimensión. Esta dimensión captura variabilidad adicional que no se explica en las tres primeras dimensiones, pero no está tan claramente relacionada con las características específicas de las variables originales.

-Dimensión 5 (Dim.5): En Dim.5, las coordenadas también muestran cierta variabilidad con el individuo 22 (7.121) mostrando un valor extremadamente alto. Esta dimensión, al igual que Dim.4, captura variabilidad residual y puede estar influenciada por características específicas menos dominantes.

-Dimensión 6 (Dim.6): Las coordenadas en Dim.6 muestran que el individuo 22 tiene un valor extremadamente bajo (-8.406), mientras que otros tienen valores más moderados. Esta dimensión representa características menos dominantes y es útil para captar la variabilidad residual en los datos.

El individuo 22 tiene coordenadas extremadamente altas en Dim.4 y Dim.5 y extremadamente bajas en Dim.6. Esto sugiere que este individuo tiene características muy distintas a la mayoría de los otros individuos.

Circulo de Correlaciones

fviz_pca_var(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], scale.unit = T, graph = F),col.var="#3B83BD", repel = T, col.circle = "#CDCDCD", ggtheme = theme_bw())
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], scale.unit =
## T, : Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Matriz de Representación

(get_pca_var(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 6, scale.unit = TRUE, graph = F)))$cos2
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 6, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package
##                          Dim.1        Dim.2        Dim.3        Dim.4
## Year_Birth          0.01952414 0.2061998220 0.4466492061 0.1027037889
## Income              0.55642828 0.0064611847 0.0639572491 0.0630490957
## Teenhome            0.01933624 0.5704787083 0.0952779854 0.0246806903
## MntWines            0.55818069 0.0686836021 0.0001496234 0.1286481602
## MntFruits           0.51365949 0.0305493504 0.0158380676 0.1049550830
## MntMeatProducts     0.64847812 0.0352172943 0.0002255115 0.0396045522
## MntFishProducts     0.54751239 0.0360402200 0.0105329870 0.1007182095
## MntSweetProducts    0.50868583 0.0211835802 0.0172176402 0.0934110768
## MntGoldProds        0.33820617 0.0266388835 0.0828284049 0.1134952541
## NumDealsPurchases   0.01168020 0.4998424327 0.1319243525 0.0025405210
## NumWebPurchases     0.29737017 0.2760565099 0.0931046682 0.0007238235
## NumCatalogPurchases 0.66810897 0.0005196178 0.0014974742 0.0380540481
## NumStorePurchases   0.54955709 0.0629754612 0.0003565585 0.0193068599
## NumWebVisitsMonth   0.41690723 0.0990445804 0.2080864018 0.0006643115
##                            Dim.5        Dim.6
## Year_Birth          0.0326483321 2.478349e-02
## Income              0.0049904381 4.201357e-03
## Teenhome            0.0472383528 2.025354e-02
## MntWines            0.0549456452 2.007290e-03
## MntFruits           0.0250547766 2.342307e-02
## MntMeatProducts     0.0237440034 4.869172e-02
## MntFishProducts     0.0150894040 2.851237e-05
## MntSweetProducts    0.0224144995 6.324583e-02
## MntGoldProds        0.1096035137 1.615261e-01
## NumDealsPurchases   0.2283250540 4.816289e-02
## NumWebPurchases     0.0970001607 4.834371e-02
## NumCatalogPurchases 0.0101835221 1.017523e-01
## NumStorePurchases   0.0003192189 8.605688e-02
## NumWebVisitsMonth   0.0183517937 4.749157e-04

Calidad de Representación

fviz_pca_var(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 6, scale.unit = TRUE, graph = F), col.var="cos2", gradient.cols=c("#00AFBB","#E7B800","#FC4E07"), repel = TRUE)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 6, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Coordenadas Individuales

head((PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 6, scale.unit = TRUE, graph = F))$ind$coord, n = 23L)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 6, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package
##          Dim.1       Dim.2       Dim.3       Dim.4       Dim.5        Dim.6
## 1   3.75760517  0.01124525  1.11602222 -1.08697068  0.06252577 -1.327583217
## 2  -2.10137137  0.20942381 -1.80054447 -0.55686189  0.31810806 -0.367914904
## 3   1.73415315 -0.21770609  0.03018104 -0.07424084 -0.97515192  1.109409533
## 4  -2.24303054 -1.35916132  0.77752241  0.36923417  0.12239511  0.231283800
## 5   0.02099985 -0.19379458  1.25269838  0.51125489  1.09972298  0.136310515
## 6   0.70610493  1.14461571 -0.30207763  0.57778114 -0.10365705  1.311135165
## 7   0.63471631  1.12473781  0.64188128 -0.46794761  0.85468328  0.869652655
## 8  -2.03148782 -0.85399418  1.40842310  0.46159139 -0.40220449  0.298273047
## 9  -2.64474517 -1.01433315  0.62635612  0.07895772 -0.68225834  0.133547918
## 10 -4.51938783  1.27347824  0.84126889 -1.50437082 -1.30204528 -0.413162089
## 11 -2.35307692 -1.66352006  0.31531771  0.57292781 -0.02027970  0.186696661
## 12 -2.62358615 -1.32538613  0.79910206 -0.36341601 -0.54908284  0.035294860
## 13  3.16972561 -1.95926349 -0.68078954 -1.73784686  1.13264300  0.345797712
## 14 -1.00634122  1.59314055 -1.09076213 -0.06206160 -0.32200745  0.284732589
## 15 -2.72646525 -1.74911911  1.10258117  0.18588466 -0.11275119  0.238943163
## 16  3.03702335  0.66353605 -1.36437509  0.71411908 -1.51111517  0.717738744
## 17 -2.33404154  0.32341288  0.53779327  0.08735092  0.61527096  0.509276966
## 18 -0.48150297 -0.11200607 -0.52012234 -1.48021230 -0.63775532 -0.236424102
## 19  3.32246990  2.54422065 -0.18332155 -0.08718725 -2.23568560 -0.560210422
## 20 -1.62022060 -1.49078205  1.05285191 -0.16037031  0.16638806 -0.087588192
## 21 -0.88087071 -1.14178759  1.35418867 -0.22053947 -0.54929833  0.217417509
## 22  2.92009471  0.33944771  1.41280459  3.99212603  7.01073398 -8.423981517
## 23 -0.33972758  1.92160236 -1.28119662  0.92441427 -0.49919763  0.006324385

2.4. Contribuciones

Según el trabajo de (Díaz Morales & Morales Rivera, 2012) la interpretación de resultados está vinculada con el cálculo de coordenadas, contribuciones, cosenos cuadrados, etc, por lo tanto, la conceptualización de las variables debe ser clara para establecerla con la mayor claridad posible, es decir, los datos deben ponerse en contexto. En este sentido, la contribución de una variable a una componente allana el camino de la interpretación de resultados. Esto se hace en este apartado en el sentido de calcular lor aportes con que cada variable participa para definir a cada componente generada.

Planteamiento del Problema

Con base en las variables cuantitativas del conjunto de datos descrito en la sección 2 se demanda determinar las contribuciones que hace cada variable a la construcción de cada componente.

Desarrollo del Análisis

La navegación a través de las pestañas permite reconocer en representaciones numéricas y gráficas las contribuciones de las variables del conjunto de datos a la construcción de cada componente. Así, se entiende cuánta variabilidad explica cada variable de la variabilidad total de la componente con que esté involucrada. en particular:

La Matriz de Contribuciones proporciona una visión relativa de cómo cada variable contribuye a la variabilidad capturada por cada componente principal. Los diagramas de barras mostrados en las pestañas desde “Contribuciones a D1” hasta “Contribuciones a D14” representan visualmente las contribuciones de cada variable para explicar la varianza en cada componente principal. Cada gráfico también incluye una línea que representa la contribución promedio, lo que facilita la identificación de las variables que tienen una mayor influencia en la explicación de la variabilidad de los componentes. En resumen, estos gráficos ayudan a comprender mejor cómo cada variable impacta en la estructura de los datos y en la formación de los componentes principales.

En la pestaña Contribuciones a D1 se visualiza que las variables por encima de la contribución media: NumCatalogPurchases, MntMeatProducts, Income, MntWines, NumStorePurchases, MntFishProducts, MntFruits, MntSweetProducts, NumWebVisitMonth retienen aproximadamente el 87.61% de la variabilidad del componente 1.

En la pestaña Contribuciones a D2 se visualiza que las variables por encima de la contribución media: Income, NumDealsPurchases, NumWebVisitMonth, Year_Birth retienen aproximadamente el 41.48% de la variabilidad del componente 2.

En la pestaña Contribuciones a D3 se visualiza que las variables por encima de la contribución media: Year_Birth, NumWebVisitMonth, NumDealsPurchases, Teenhome, NumWebPurchases retienen aproximadamente el 83.53% de la variabilidad del componente 3.

En la pestaña Contribuciones a D4 se visualiza que las variables por encima de la contribución media: MntWines, MntGoldProds, MntFruits, MntFishProducts, Year_Birth, MntSweetProducts retienen aproximadamente el 66.35% de la variabilidad del componente 4.

En la pestaña Contribuciones a D5 se visualiza que las variables por encima de la contribución media: NumDealsPurchases, MntGoldProds, NumWebPurchases, MntWines retienen aproximadamente el 71.26% de la variabilidad del componente 5.

En la pestaña Contribuciones a D6 se visualiza que las variables por encima de la contribución media: MntGoldProds, NumCatalogPurchases, NumStorePurchases, MntSweetProducts, MntMeatProducts, NumWebPurchases, NumDealsPurchases retienen aproximadamente el 80.34% de la variabilidad del componente 6.

En la pestaña Contribuciones a D7 se visualiza que las variables por encima de la contribución media: MntGoldProds, Year_Birth, NumWebVisitMonth, Teenhome retienen aproximadamente el 79.57% de la variabilidad del componente 7.

En la pestaña Contribuciones a D8 se visualiza que las variables por encima de la contribución media: NumStorePurchases, MntSweetProducts, Income, NumWebPurchases, MntFruits retienen aproximadamente el 90.76% de la variabilidad del componente 8.

En la pestaña Contribuciones a D9 se visualiza que las variables por encima de la contribución media: MntFruit, MntSweetProducts, NumStorePurchases, NumWebVisitMonth retienen aproximadamente el 79.86% de la variabilidad del componente 9.

En la pestaña Contribuciones a D10 se visualiza que las variables por encima de la contribución media: MntFishProducts, MntFruit, Teenhome retienen aproximadamente el 16.41% de la variabilidad del componente 10.

En la pestaña Contribuciones a D11 se visualiza que las variables por encima de la contribución media: Income, Teenhome, MntWines, MntSweetProducts, NumCatalogPurchases, MntFishProducts retienen aproximadamente el 70.94% de la variabilidad del componente 11.

En la pestaña Contribuciones a D12 se visualiza que las variables por encima de la contribución media: NumWebPurchases, Income, NumWebVisitMonth, MntWines, MntSweetProducts retienen aproximadamente el 22.87% de la variabilidad del componente 12.

Con los datos procesados hasta ahora se puede proceder con la intepretación de los componentes.

Matriz de Contribuciones

(get_pca_var(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F)))$contrib
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package
##                          Dim.1       Dim.2       Dim.3       Dim.4       Dim.5
## Year_Birth           0.3453378 10.62945267 38.25210348 12.33596944  4.73226840
## Income               9.8419561  0.33306943  5.47745138  7.57296031  0.72334759
## Teenhome             0.3420143 29.40776753  8.15983395  2.96444994  6.84704393
## MntWines             9.8729524  3.54059034  0.01281411 15.45220279  7.96419063
## MntFruits            9.0854731  1.57479706  1.35640989 12.60637713  3.63160749
## MntMeatProducts     11.4701094  1.81542622  0.01931334  4.75698658  3.44161523
## MntFishProducts      9.6842542  1.85784744  0.90207014 12.09747729  2.18715951
## MntSweetProducts     8.9975003  1.09199834  1.47455978 11.21980212  3.24890801
## MntGoldProds         5.9821013  1.37321530  7.09362218 13.63215516 15.88666897
## NumDealsPurchases    0.2065963 25.76651827 11.29831625  0.30514735 33.09496592
## NumWebPurchases      5.2598049 14.23051474  7.97370588  0.08693998 14.05985439
## NumCatalogPurchases 11.8173346  0.02678592  0.12824727  4.57075225  1.47606804
## NumStorePurchases    9.7204204  3.24633978  0.03053652  2.31898781  0.04626973
## NumWebVisitsMonth    7.3741448  5.10567696 17.82101583  0.07979185  2.66003216
##                            Dim.6      Dim.7      Dim.8       Dim.9       Dim.10
## Year_Birth           3.915542768 23.5361044  0.7167392  1.00393610  1.945764431
## Income               0.663772295  4.1111203 12.7760352  8.29143211  0.052109832
## Teenhome             3.199855563 14.9893741  1.6771702  5.46143925  6.135003508
## MntWines             0.317131725  2.0041343  1.6689883  1.03945517  1.257982678
## MntFruits            3.700610837  0.9563515  8.4278562 41.01515003 15.263750969
## MntMeatProducts      7.692804054  4.7171582  0.7937877  0.81260820  0.038560394
## MntFishProducts      0.004504669  1.7207710  2.4615662  0.17221236 63.830819095
## MntSweetProducts     9.992206316  1.7571723 24.9983433 17.77337707  4.104274733
## MntGoldProds        25.519498903 24.3247361  0.0185990  0.08160600  1.153566793
## NumDealsPurchases    7.609254155  1.1174597  0.9631883  3.12119341  2.626401555
## NumWebPurchases      7.637820984  1.3966834  8.6263025  0.01979627  0.009299086
## NumCatalogPurchases 16.075842644  1.0214056  0.8548067  0.00088044  0.076261169
## NumStorePurchases   13.596123172  1.7713732 35.6251784 12.85468641  0.697198680
## NumWebVisitsMonth    0.075031916 16.5761559  0.3914386  8.35222718  2.809007077
##                           Dim.11      Dim.12
## Year_Birth          2.009892e+00  0.49122417
## Income              3.198278e+01 15.51630166
## Teenhome            1.790715e+01  0.64759768
## MntWines            1.172172e+01 10.72024458
## MntFruits           7.515491e-02  0.40919622
## MntMeatProducts     1.967432e+00  3.19009659
## MntFishProducts     3.972358e+00  0.04300334
## MntSweetProducts    6.677818e+00  8.58686441
## MntGoldProds        6.589165e-05  3.46906743
## NumDealsPurchases   6.906674e+00  0.31519887
## NumWebPurchases     5.023875e+00 35.61147132
## NumCatalogPurchases 1.041686e+01  3.43098750
## NumStorePurchases   8.842769e-02  0.99673172
## NumWebVisitsMonth   1.249794e+00 16.57201450

Contribuciones a D1

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 1, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D2

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 2, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D3

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 3, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D4

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 4, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D5

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 5, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D6

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 6, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D7

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 7, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D8

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 8, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D9

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 9, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D10

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 10, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D11

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 11, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

Contribuciones a D12

fviz_contrib(PCA(Gastos_Dataset[,-c(1,3,4,7,19,20,21,22)], ncp = 12, scale.unit = TRUE, graph = F), choice = "var", axes = 12, top = 14)
## Warning in PCA(Gastos_Dataset[, -c(1, 3, 4, 7, 19, 20, 21, 22)], ncp = 12, :
## Missing values are imputed by the mean of the variable: you should use the
## imputePCA function of the missMDA package

2.5. Interpretación de Componentes

Con base en (Díaz Morales & Morales Rivera, 2012) se sabe que a partir de las coordenadas de los registros dimensionalmente reducidos se puede ubicar en un plano de factores para efectos de análisis e interpretación. Así, las variables reducidas son las componentes principales que se grafican como ejes en un plano, y los valores que tomen son los puntajes de las componentes. Como bien se explica en el mismo trabajo, las distancias entre los puntos definidos por los puntajes de las componentes tiene un significado relevante al ayudar a establecer semejanzas de perfiles en las observaciones hechas. Sin embargo, los valores semejantes de las variables pueden darse solo en algunas de ellas, sin esperar necesariamente a que suceda en todas. Así, se espera que las distancias en el espacio dimensional original de las observaciones queden bien representadas en el espacio reducido de las componentes.

Planteamiento del Problema

Con base en las variables cuantitativas del conjunto de datos descrito en la sección 2 se demanda definir e interpretar sus componentes principales.

Desarrollo del Análisis

Fase 3 [Correspondencias]

En términos generales, esta tercera etapa de estudio mostrará cálculos, visualizaciones e interpretaciones con base en el conjunto de datos tratado en la fase 1 y 2, pero ahora desde un enfoque de análisis de correspondencias simples y múltiples sobre las variables cualitativas, que incluirá: construcción de tablas de contingencias y disyuntivas completas, calidades de representación, contribuciones e interpretaciones. Recuérdese que el conjunto de datos de trabajo es descrito en la sección 2 y los referentes teóricos en la sección 1.

3.1. Objetivos

Analizar las relaciones y asociaciones entre variables categóricas utilizando técnicas de correspondencias simples y múltiples, con el fin de identificar patrones significativos y entender la estructura subyacente de los datos.

3.2. Correspondencias Simples

Con base en el trabajo de (Aldás & Uriel, 2017) se sabe que el análisis de correspondencias simple (ACS) busca representar en un espacio multidimensional reducido la relación que exista entre las categorías de un par de variables categóricas. En este sentido, el ACS muestra las distancia entre los niveles de dos variables categóricas y, en consecuencia, ayuda a visualizar tablas de contingencia. Además, se establece que el número máximo de dimensiones que expliquen la asociación entre variables fila y columna es igual a uno menos el menor número de categorías de alguna de las variables involucradas. En consecuencia, el análisis de correspondencias permite describir la proximidad existente entre los perfiles de los objetos observados. Además, el ACS, que basa sus cálculos en tablas de contingencia, puede extenderse a más de dos variables categóricas, conociéndose como anáslisis de correspondencias múltiples (ACM), con base en una objeto llamado tabla disyuntiva completa.

Esta sección trata el análisis de correspondecias simple con base en pares de variables categóricas del conjunto de datos descrito en la sección 2. Complementariamente, la sección 3.3 muestra el análisis de correspondencias múltiples con base en las varaibles categóricas del mismo conjunto de datos.

Planteamiento del Problema

Con base en las variables cualitativas del conjunto de datos descrito en la sección 2 se demanda desarrollar el análisis de correspondencias, en principio simple, apoyado en tablas de contingencia y de frecuencias relativas y gráficos de perfiles y de puntos superpuestos en el primer plano factorial.

Desarrollo del Análisis

Las Tablas de Contingencia, probabilidades y Frecuenciaproporciona información que determina que la mayoría de los clientes del conjunto de datos tienen una educación superior, con Graduación siendo el nivel más común. Estas personas están mayormente en relaciones estables o solteras. La distribución de niveles educativos y estados civiles es equilibrada entre géneros, lo que sugiere que tanto hombres como mujeres tienen acceso similar a la educación y exhiben patrones de estado civil comparables. La predominancia de personas con niveles educativos altos en estados civiles de Casado o Soltero indica una correlación positiva entre el nivel educativo y la probabilidad de estar en una relación estable o soltero.

Educación vs Sexo. La relación entre la educación y el sexo revela un equilibrio casi perfecto entre hombres y mujeres en el dataset. Los niveles educativos de Graduación y PhD son los más comunes para ambos sexos. Este equilibrio sugiere que la distribución de la educación no está significativamente sesgada por género, y la mayoría de las personas en ambos grupos alcanzan niveles educativos altos.

Estado Civil vs Sexo. En términos de estado civil y sexo, Casado y Soltero son los estados civiles más prevalentes para ambos géneros. Las mujeres tienen una ligera predominancia en los estados civiles de Casado y Viudo, mientras que los hombres predominan en el estado de Juntos. Esta distribución indica que los patrones de estado civil son similares entre hombres y mujeres, con una ligera variación en estados específicos como Viudo.

Análisis de la Tabla de Contingencia. En el análisis comparativo entre educación y estado civil, se observa que la mayoría de las personas con nivel educativo de Graduación están Casadas, Solteras o viven Juntas, sugiriendo una asociación entre la educación superior y la estabilidad en el estado civil. Por otro lado, los niveles educativos más bajos, como Básico y 2n Ciclo, tienden a tener una representación menor y están principalmente asociados con personas Casadas o Solteras, lo que indica una posible falta de estabilidad en el estado civil. En cuanto a la comparación entre educación y sexo, los niveles de Graduación, **Master y *PhD muestran una distribución equitativa entre hombres y mujeres, sugiriendo igualdad en el acceso a la educación avanzada, sin indicar un sesgo de género significativo en el acceso a la educación en general. En relación con el estado civil y el sexo, se observa que tanto hombres como mujeres predominan en los estados Casado y Soltero, con pequeñas diferencias entre ellos, como una ligera ventaja de las mujeres en el estado Casado y de los hombres en el estado Soltero. Además, los estados menos comunes, como Divorciado y Viudo, presentan más mujeres que hombres en la categoría de Viudo.

El análisis de la tabla de probabilidades, resalta la proporción de personas en diferentes combinaciones de nivel educativo y estado civil, así como su relación con el sexo. En primer lugar, se observa que la mayor probabilidad se encuentra en personas con Graduación que están Casadas, reforzando la asociación entre la educación superior y el matrimonio. Por otro lado, los niveles educativos más bajos muestran probabilidades menores en todos los estados civiles, lo que subraya su menor representación. En cuanto a la comparación entre educación y sexo, las distribuciones están equitativamente divididas, con pequeñas diferencias en porcentajes. Por ejemplo, los hombres tienen una ligera mayor proporción en Graduación en comparación con las mujeres. En relación con el estado civil y el sexo, la probabilidad de estar Casado es similar para hombres y mujeres.

El análisis de las tablas de frecuencias relativas muestra que las personas con educación superior tienden a estar casadas o solteras, con una asociación significativa entre el matrimonio y la educación superior. Además, la distribución por sexo en cada nivel educativo es equilibrada, lo que indica igualdad de acceso a la educación avanzada entre hombres y mujeres.

En el análisis del perfil CPC, se observa una tendencia similar entre hombres y mujeres en términos de educación, con una ligera predominancia masculina en niveles superiores como PhD y Master. La categoría “marg” también refleja una distribución de educación similar entre hombres y mujeres. Respecto al estado civil por sexo, se presenta una gráfica de barras apiladas horizontal donde se destaca que tanto hombres como mujeres tienen una mayor proporción en los estados civiles “Married” y “Single”, aunque las mujeres muestran una mayor representación en “Widow”. El análisis de las pruebas de hipótesis, realizadas mediante pruebas de Chi-cuadrado, no revela diferencias significativas en la distribución de niveles educativos y estados civiles entre hombres, mujeres y el grupo “marg”. Tampoco se encuentran relaciones significativas entre educación y estado civil, educación y sexo, ni estado civil y sexo, lo que sugiere que estas variables parecen ser independientes entre sí.

Contingencias

addmargins(table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status))
##             
##              Absurd Alone Divorced Married Single Together Widow YOLO  Sum
##   2n Cycle        0     0       23      81     37       57     5    0  203
##   Basic           0     0        1      20     18       14     1    0   54
##   Graduation      1     1      119     433    252      286    35    0 1127
##   Master          1     1       37     138     75      106    12    0  370
##   PhD             0     1       52     192     98      117    24    2  486
##   Sum             2     3      232     864    480      580    77    2 2240
addmargins(table(Gastos_Dataset$Education, Gastos_Dataset$sex))
##             
##                 0    1  Sum
##   2n Cycle    106   97  203
##   Basic        22   32   54
##   Graduation  558  569 1127
##   Master      189  181  370
##   PhD         245  241  486
##   Sum        1120 1120 2240
addmargins(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex))
##           
##               0    1  Sum
##   Absurd      1    1    2
##   Alone       2    1    3
##   Divorced  115  117  232
##   Married   414  450  864
##   Single    251  229  480
##   Together  303  277  580
##   Widow      33   44   77
##   YOLO        1    1    2
##   Sum      1120 1120 2240

Probabilidades

addmargins(prop.table(table(Gastos_Dataset$Education , Gastos_Dataset$Marital_Status))*100)
##             
##                    Absurd        Alone     Divorced      Married       Single
##   2n Cycle     0.00000000   0.00000000   1.02678571   3.61607143   1.65178571
##   Basic        0.00000000   0.00000000   0.04464286   0.89285714   0.80357143
##   Graduation   0.04464286   0.04464286   5.31250000  19.33035714  11.25000000
##   Master       0.04464286   0.04464286   1.65178571   6.16071429   3.34821429
##   PhD          0.00000000   0.04464286   2.32142857   8.57142857   4.37500000
##   Sum          0.08928571   0.13392857  10.35714286  38.57142857  21.42857143
##             
##                  Together        Widow         YOLO          Sum
##   2n Cycle     2.54464286   0.22321429   0.00000000   9.06250000
##   Basic        0.62500000   0.04464286   0.00000000   2.41071429
##   Graduation  12.76785714   1.56250000   0.00000000  50.31250000
##   Master       4.73214286   0.53571429   0.00000000  16.51785714
##   PhD          5.22321429   1.07142857   0.08928571  21.69642857
##   Sum         25.89285714   3.43750000   0.08928571 100.00000000
addmargins(prop.table(table(Gastos_Dataset$Education, Gastos_Dataset$sex))*100)
##             
##                        0           1         Sum
##   2n Cycle     4.7321429   4.3303571   9.0625000
##   Basic        0.9821429   1.4285714   2.4107143
##   Graduation  24.9107143  25.4017857  50.3125000
##   Master       8.4375000   8.0803571  16.5178571
##   PhD         10.9375000  10.7589286  21.6964286
##   Sum         50.0000000  50.0000000 100.0000000
addmargins(prop.table(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex))*100)
##           
##                       0            1          Sum
##   Absurd     0.04464286   0.04464286   0.08928571
##   Alone      0.08928571   0.04464286   0.13392857
##   Divorced   5.13392857   5.22321429  10.35714286
##   Married   18.48214286  20.08928571  38.57142857
##   Single    11.20535714  10.22321429  21.42857143
##   Together  13.52678571  12.36607143  25.89285714
##   Widow      1.47321429   1.96428571   3.43750000
##   YOLO       0.04464286   0.04464286   0.08928571
##   Sum       50.00000000  50.00000000 100.00000000

Frecuencias [CPF y CPC]

round(addmargins(prop.table(table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status), 1)*100, 2), 2)
##             
##              Absurd  Alone Divorced Married Single Together  Widow   YOLO
##   2n Cycle     0.00   0.00    11.33   39.90  18.23    28.08   2.46   0.00
##   Basic        0.00   0.00     1.85   37.04  33.33    25.93   1.85   0.00
##   Graduation   0.09   0.09    10.56   38.42  22.36    25.38   3.11   0.00
##   Master       0.27   0.27    10.00   37.30  20.27    28.65   3.24   0.00
##   PhD          0.00   0.21    10.70   39.51  20.16    24.07   4.94   0.41
##             
##                 Sum
##   2n Cycle   100.00
##   Basic      100.00
##   Graduation 100.00
##   Master     100.00
##   PhD        100.00
round(addmargins(prop.table(table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status), 2)*100, 1), 2)
##             
##              Absurd  Alone Divorced Married Single Together  Widow   YOLO
##   2n Cycle     0.00   0.00     9.91    9.38   7.71     9.83   6.49   0.00
##   Basic        0.00   0.00     0.43    2.31   3.75     2.41   1.30   0.00
##   Graduation  50.00  33.33    51.29   50.12  52.50    49.31  45.45   0.00
##   Master      50.00  33.33    15.95   15.97  15.62    18.28  15.58   0.00
##   PhD          0.00  33.33    22.41   22.22  20.42    20.17  31.17 100.00
##   Sum        100.00 100.00   100.00  100.00 100.00   100.00 100.00 100.00
round(addmargins(prop.table(table(Gastos_Dataset$Education, Gastos_Dataset$sex), 1)*100, 2), 2)
##             
##                   0      1    Sum
##   2n Cycle    52.22  47.78 100.00
##   Basic       40.74  59.26 100.00
##   Graduation  49.51  50.49 100.00
##   Master      51.08  48.92 100.00
##   PhD         50.41  49.59 100.00
round(addmargins(prop.table(table(Gastos_Dataset$Education, Gastos_Dataset$sex), 2)*100, 1), 2)
##             
##                   0      1
##   2n Cycle     9.46   8.66
##   Basic        1.96   2.86
##   Graduation  49.82  50.80
##   Master      16.88  16.16
##   PhD         21.88  21.52
##   Sum        100.00 100.00
round(addmargins(prop.table(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex), 1)*100, 2), 2)
##           
##                 0      1    Sum
##   Absurd    50.00  50.00 100.00
##   Alone     66.67  33.33 100.00
##   Divorced  49.57  50.43 100.00
##   Married   47.92  52.08 100.00
##   Single    52.29  47.71 100.00
##   Together  52.24  47.76 100.00
##   Widow     42.86  57.14 100.00
##   YOLO      50.00  50.00 100.00
round(addmargins(prop.table(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex), 2)*100, 1), 2)
##           
##                 0      1
##   Absurd     0.09   0.09
##   Alone      0.18   0.09
##   Divorced  10.27  10.45
##   Married   36.96  40.18
##   Single    22.41  20.45
##   Together  27.05  24.73
##   Widow      2.95   3.93
##   YOLO       0.09   0.09
##   Sum      100.00 100.00

Perfiles [CPF y CPC]

colores <- c("red", "blue", "green", "purple", "orange")

plotct(table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status),"row", col = colores)

plotct(table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status),"col", col = colores)

plotct(table(Gastos_Dataset$Education, Gastos_Dataset$sex),"row", col = colores)

plotct(table(Gastos_Dataset$Education, Gastos_Dataset$sex),"col", col = colores)

plotct(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex),"row", col = colores)

plotct(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex),"col", col = colores)

Pruebas de Hipótesis

chisq.test(table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status))
## Warning in chisq.test(table(Gastos_Dataset$Education,
## Gastos_Dataset$Marital_Status)): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  table(Gastos_Dataset$Education, Gastos_Dataset$Marital_Status)
## X-squared = 27.288, df = 28, p-value = 0.5026
chisq.test(table(Gastos_Dataset$Education, Gastos_Dataset$sex))
## 
##  Pearson's Chi-squared test
## 
## data:  table(Gastos_Dataset$Education, Gastos_Dataset$sex)
## X-squared = 2.5641, df = 4, p-value = 0.6332
chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex))
## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$sex)): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  table(Gastos_Dataset$Marital_Status, Gastos_Dataset$sex)
## X-squared = 5.5959, df = 7, p-value = 0.5876

AC Pareja Única

Contingencias y Residuales [FAF-IMC]

chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education))$observed
## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$Education)): Chi-squared approximation may be incorrect
##           
##            2n Cycle Basic Graduation Master PhD
##   Absurd          0     0          1      1   0
##   Alone           0     0          1      1   1
##   Divorced       23     1        119     37  52
##   Married        81    20        433    138 192
##   Single         37    18        252     75  98
##   Together       57    14        286    106 117
##   Widow           5     1         35     12  24
##   YOLO            0     0          0      0   2
chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education))$expected 
## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$Education)): Chi-squared approximation may be incorrect
##           
##             2n Cycle       Basic Graduation      Master         PhD
##   Absurd    0.181250  0.04821429   1.006250   0.3303571   0.4339286
##   Alone     0.271875  0.07232143   1.509375   0.4955357   0.6508929
##   Divorced 21.025000  5.59285714 116.725000  38.3214286  50.3357143
##   Married  78.300000 20.82857143 434.700000 142.7142857 187.4571429
##   Single   43.500000 11.57142857 241.500000  79.2857143 104.1428571
##   Together 52.562500 13.98214286 291.812500  95.8035714 125.8392857
##   Widow     6.978125  1.85625000  38.740625  12.7187500  16.7062500
##   YOLO      0.181250  0.04821429   1.006250   0.3303571   0.4339286
chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education))$residuals
## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$Education)): Chi-squared approximation may be incorrect
##           
##                2n Cycle        Basic   Graduation       Master          PhD
##   Absurd   -0.425734659 -0.219577516 -0.006230560  1.165068311 -0.658732549
##   Alone    -0.521416340 -0.268926437 -0.414609310  0.716626634  0.432717024
##   Divorced  0.430724026 -1.942075341  0.210571436 -0.213463117  0.234579344
##   Married   0.305128577 -0.181551655 -0.081536882 -0.394622802  0.331801300
##   Single   -0.985527457  1.889822365  0.675663925 -0.481310951 -0.601943420
##   Together  0.612068966  0.004775569 -0.340260096  1.041734942 -0.787968851
##   Widow    -0.748831939 -0.628466816 -0.600981164 -0.201537396  1.784478769
##   YOLO     -0.425734659 -0.219577516 -1.003120132 -0.574767034  2.377401011
chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education))$stdres
## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$Education)): Chi-squared approximation may be incorrect
##           
##                2n Cycle        Basic   Graduation       Master          PhD
##   Absurd   -0.446643965 -0.222372340 -0.008842956  1.275700025 -0.744753077
##   Alone    -0.547147159 -0.272410251 -0.588581346  0.784850913  0.489332672
##   Divorced  0.477056423 -2.076381541  0.315513569 -0.246756277  0.279989108
##   Married   0.408249978 -0.234484389 -0.147586054 -0.551061632  0.478412028
##   Single   -1.165909653  2.158179634  1.081371287 -0.594287539 -0.767419025
##   Together  0.745587845  0.005615572 -0.560734674  1.324434249 -1.034399327
##   Widow    -0.799113750 -0.647406464 -0.867626957 -0.224468083  2.052184246
##   YOLO     -0.446643965 -0.222372340 -1.423715921 -0.629345346  2.687853696

Contribuciones [FAF-IMC]

chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education))$residuals^2/chisq.test(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education))$statistic*100
## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$Education)): Chi-squared approximation may be incorrect

## Warning in chisq.test(table(Gastos_Dataset$Marital_Status,
## Gastos_Dataset$Education)): Chi-squared approximation may be incorrect
##           
##                2n Cycle        Basic   Graduation       Master          PhD
##   Absurd   6.642092e-01 1.766862e-01 1.422594e-04 4.974273e+00 1.590176e+00
##   Alone    9.963138e-01 2.650293e-01 6.299484e-01 1.881970e+00 6.861749e-01
##   Divorced 6.798687e-01 1.382162e+01 1.624897e-01 1.669831e-01 2.016538e-01
##   Married  3.411871e-01 1.207890e-01 2.436324e-02 5.706781e-01 4.034438e-01
##   Single   3.559298e+00 1.308787e+01 1.672971e+00 8.489427e-01 1.327817e+00
##   Together 1.372864e+00 8.357513e-05 4.242764e-01 3.976869e+00 2.275333e+00
##   Widow    2.054923e+00 1.447410e+00 1.323575e+00 1.488463e-01 1.166943e+01
##   YOLO     6.642092e-01 1.766862e-01 3.687506e+00 1.210628e+00 2.071246e+01

Correspondencia Simple Unidimensional [FAF-IMC]

CA(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education), graph = FALSE)$eig
##         eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.0065087481              53.428422                          53.42842
## dim 2 0.0036086114              29.622043                          83.05047
## dim 3 0.0014778170              12.130971                          95.18144
## dim 4 0.0005870063               4.818564                         100.00000
CA(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education), graph = FALSE)$col
## $coord
##                  Dim 1        Dim 2       Dim 3        Dim 4
## 2n Cycle    0.02150270 -0.085330041 -0.04958578  0.060725106
## Basic       0.22672642  0.300904951  0.03374125  0.062817275
## Graduation  0.03428955  0.001569012 -0.02106351 -0.017234922
## Master      0.03773958 -0.052074089  0.07759293  0.002392216
## PhD        -0.14242025  0.038214541  0.00673473  0.005801044
## 
## $contrib
##                 Dim 1       Dim 2      Dim 3      Dim 4
## 2n Cycle    0.6437789 18.28570930 15.0779278 56.9300840
## Basic      19.0393679 60.48731278  1.8571523 16.2054527
## Graduation  9.0887029  0.03432325 15.1048631 25.4596108
## Master      3.6145187 12.41243386 67.2941585  0.1610318
## PhD        67.6136315  8.78022081  0.6658983  1.2438208
## 
## $cos2
##                 Dim 1       Dim 2       Dim 3       Dim 4
## 2n Cycle   0.03328802 0.524210501 0.177017463 0.265484013
## Basic      0.34961416 0.615805320 0.007742964 0.026837556
## Graduation 0.61271721 0.001282889 0.231205505 0.154794395
## Master     0.14015194 0.266838344 0.592446590 0.000563126
## PhD        0.92946122 0.066918332 0.002078395 0.001542056
## 
## $inertia
## [1] 0.0012587695 0.0035445489 0.0009654711 0.0016786062 0.0047347871
CA(table(Gastos_Dataset$Marital_Status, Gastos_Dataset$Education), graph = FALSE)$row
## $coord
##                Dim 1        Dim 2        Dim 3        Dim 4
## Absurd    0.44640541 -0.420373161  0.735248595 -0.306310372
## Alone    -0.29083580 -0.068199232  0.548562466 -0.124395774
## Divorced -0.06452649 -0.101499271 -0.043969199 -0.035811535
## Married  -0.01453278 -0.001219305 -0.013886552  0.007465866
## Single    0.06174135  0.086491652 -0.003027412 -0.018723167
## Together  0.03299374 -0.035909881  0.028463458  0.024471496
## Widow    -0.23033008  0.047871372  0.047748343 -0.036904387
## YOLO     -1.76531823  0.636148626  0.175190210  0.239433423
## 
## $contrib
##              Dim 1       Dim 2      Dim 3     Dim 4
## Absurd    2.733653  4.37231878 32.6610179 14.271270
## Alone     1.740490  0.17262039 27.2712313  3.530545
## Divorced  6.625499 29.56825499 13.5492859 22.627838
## Married   1.251600  0.01589097  5.0330809  3.662548
## Single   12.550124 44.42234562  0.1328972 12.797027
## Together  4.330575  9.25268546 14.1949749 26.415464
## Widow    28.018610  2.18300300  5.3032078  7.975463
## YOLO     42.749450 10.01288079  1.8543042  8.719845
## 
## $cos2
##              Dim 1       Dim 2        Dim 3      Dim 4
## Absurd   0.1972251 0.174893318 0.5350220275 0.09285957
## Alone    0.2085278 0.011466400 0.7418571787 0.03814867
## Divorced 0.2354812 0.582647777 0.1093395682 0.07253141
## Married  0.4578761 0.003223113 0.4180607788 0.12084006
## Single   0.3271390 0.641990257 0.0007865443 0.03008422
## Together 0.2874438 0.340500580 0.2139268193 0.15812879
## Widow    0.8994073 0.038851413 0.0386519736 0.02308932
## YOLO     0.8634808 0.112130528 0.0085040606 0.01588460
## 
## $inertia
## [1] 0.0009021499 0.0005432567 0.0018313009 0.0001779161 0.0024969691
## [6] 0.0009805959 0.0020276250 0.0032223692

3.3. Correspondencias Múltiples

Recuperando de nuevo el trabajo de (Díaz Morales & Morales Rivera, 2012) se dice que el ACS se puede extender desde tablas de contingencia hacia tablas disyuntivas completas. En estas las filas son los objetos a los cuales se les registran características de interés a través de las columnas que compilan las modalidades de las variables categóricas estudiadas de ellos. Así, el análisis de correspondencias múltiple (ACM) es el AC aplicado a una tabla disyuntiva completa. Por lo tanto, en el ACM una variable categórica asigna a cada objeto de una población una modalidad a través de la cual los particiona exclusiva y exhaustivamente.

Esta sección es desarrollada como alternativa de completitud del análisis de correspondencias simples que en la sección 3.2 fue inapreciable debido a la unidimensionalidad de la representación de los datos a nivel de proyección de las variables categóricas que cumplieron la hipótesis de dependencia. Por lo tanto, del tratamiento conjunto de todas las variables categóricas se espera obtener una representación en el primer plano factorial.

Planteamiento del Problema

Con base en las variables cualitativas del conjunto de datos descrito en la sección 2 se demanda desarrollar el análisis de correspondencias múltiples para lograr una representación gráfica en el primer plano factorial, debido a la imposibilidad de lograrlo en el análisis de correspondencias simple.

Desarrollo del Análisis

En el análisis ACM de pareja única, se observa una distribución de niveles educativos por sexo. Tanto hombres como mujeres tienen una proporción significativa en los niveles de educación “Graduation”, seguidos de “Master” y “PhD”. La distribución entre hombres y mujeres es similar, con una ligera predominancia masculina en los niveles superiores de educación. La categoría “marg” muestra una distribución de educación similar entre hombres y mujeres. En cuanto al estado civil por sexo, se destaca que una proporción mayor de hombres se identifica como “Married”, mientras que las mujeres tienen una mayor proporción en la categoría “Widow”. Sin embargo, en general, tanto hombres como mujeres tienen una mayor representación en los estados civiles “Married” y “Single”. Las pruebas de hipótesis realizadas para evaluar la independencia entre educación y estado civil indican que no hay evidencia suficiente para rechazar la hipótesis nula. Esto sugiere que no hay una relación significativa entre estas variables en el conjunto de datos.

Contribuciones de Variables a la Dimensión 1: La gráfica muestra las contribuciones porcentuales de las variables categóricas a la primera dimensión de un Análisis de Correspondencias Múltiples (MCA), que representa el 12% de la variabilidad total en los datos. Se destacan las contribuciones significativas de categorías como “neutral”, “women”, “man”, “satisfied” y “very dissatisfied”, indicando la importancia de la satisfacción al servicio prestado y género.

Esta visualización presenta la tabla de contingencias observada y esperada, así como los residuales y los residuales estandarizados entre dos variables: estado civil y nivel de educación.

Tabla de Contingencias Observada: Muestra el conteo real de combinaciones entre estado civil y nivel de educación.

Tabla de Contingencias Esperada: Muestra las frecuencias esperadas si no hubiera asociación entre las variables.

Residuales: Indican la diferencia entre los valores observados y los esperados. Residuales grandes (positivos o negativos) sugieren desviaciones significativas

Residuales Estandarizados: Son los residuales divididos por la desviación estándar de los residuales esperados. Valores mayores a 2 en magnitud son significativos.

Interpretación: La tabla de contingencias y los residuales proporcionan información sobre la asociación entre estado civil y nivel de educación. Las combinaciones con residuales significativos indican relaciones fuertes que podrían ser importantes para entender el comportamiento de los individuos en el contexto del estudio. Los resultados de las pruebas de hipótesis indican que no hay una relación significativa entre el nivel de educación y el estado civil, el nivel de educación y el sexo, ni el estado civil y el sexo.

Contribuciones FAF IMC y Análisis de Correspondencia Simple Unidimensional FAF IMC: La tabla de contribuciones, derivada del test Chi-cuadrado, muestra los residuos estandarizados al cuadrado, normalizados por el estadístico chi-cuadrado. Destacan algunas contribuciones significativas:

“YOLO” y “PhD” (22.4), sugiriendo una fuerte desviación “Viudo” y “Básico” (20.4), indicando una contribución notable. “Solo” y “2º Ciclo” (18.3), mostrando una fuerte desviación.

Análisis de Correspondencia: Valores Propios y Varianza: Las dos primeras dimensiones explican la mayor parte de la varianza (87.20%), lo que indica que la asociación entre el estado civil y la educación se puede capturar en dos dimensiones principales.

Coordenadas, Contribuciones y Cos2 (Columnas): Destacan niveles educativos como “2º Ciclo” y “Básico” por sus altas contribuciones y buena representación en las dimensiones.

Coordenadas, Contribuciones y Cos2 (Filas): El estado civil “Solo” y “YOLO” muestran fuertes contribuciones y representación en diferentes dimensiones, especialmente en la Dim 3 y Dim 1, respectivamente.

Interpretación General: El análisis revela asociaciones significativas entre ciertos estados civiles y niveles educativos. Por ejemplo, el estado “YOLO” está fuertemente asociado con niveles educativos más altos, como “PhD”, mientras que el estado “Viudo” muestra asociaciones notables con niveles educativos más bajos, como “Básico”. Estos resultados sugieren patrones distintivos de logro educativo en diferentes estados civiles.

ACM

round(MCA(Gastos_Dataset[1:400, -c(1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22)], graph = FALSE)$eig,2)
##        eigenvalue percentage of variance cumulative percentage of variance
## dim 1        0.41                  11.83                             11.83
## dim 2        0.29                   8.34                             20.17
## dim 3        0.29                   8.15                             28.32
## dim 4        0.28                   7.87                             36.20
## dim 5        0.27                   7.62                             43.82
## dim 6        0.26                   7.45                             51.26
## dim 7        0.25                   7.20                             58.46
## dim 8        0.25                   7.05                             65.51
## dim 9        0.24                   6.87                             72.38
## dim 10       0.24                   6.74                             79.12
## dim 11       0.22                   6.39                             85.51
## dim 12       0.21                   6.06                             91.57
## dim 13       0.20                   5.60                             97.17
## dim 14       0.10                   2.83                            100.00

Biplot ACM

fviz_mca_biplot(MCA(Gastos_Dataset[1:400, -c(1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22)], graph = FALSE), repel = TRUE)

Calidad de Representación

fviz_mca_var(MCA(Gastos_Dataset[1:400, -c(1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22)], graph = FALSE), col.var ="cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE)

Contribuciones

fviz_contrib(MCA(Gastos_Dataset[1:400, -c(1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22)], graph = FALSE), choice = "var", axes = 1, top = 15)

Biplot de Contribuciones

fviz_mca_var(MCA(Gastos_Dataset[1:400, -c(1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22)], graph = FALSE), col.var ="contrib", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE)

Fase 4 [Análisis de Regresión]

Se sabe que el análisis de regresión es un proceso de naturaleza estadística usado para estimar relaciones entre variables (una dependiente o de respuesta y otras independientes o predictoras) a través de técnicas de modelado y análisis que permiten entender cómo el valor de la variable dependiente varía al cambiar el valor de una o más variables independientes. Los modelos de análisis de regresión estudiados a través de este documento serán: lineal (simple y múltiple) y logístico, ellos entendidos como casos del modelo de regresión lineal generalizado.

4.1. Objetivos

Realizar un análisis detallado utilizando técnicas de regresión lineal simple, regresión lineal múltiple y regresión logística simple para comprender la relación entre las variables independientes y dependientes en un conjunto de datos específico.

4.2. Regresión Lineal Simple

Este modelo, que eventualmente será llamado en este estudio como RLS, está conformado por dos variables estadísticas \(x\) y \(Y\), donde \(Y\) se asume que está influida por \(x\).La relación está dada matemáticamente por:

donde:

\(Y\):es una variable de respuesta de naturaleza aleatoria.

\(x\):es una variable predictora de naturaleza no aleatoria.

\(ε\):es una variable aleatoria no observable.

\(β0\) y \(β1\): son parámetros reales desconocidos del modelo.

En comparación con el modelo lineal simple determinístico \(y\)=\(β0\)+\(β1\)\(x\) ,el probablístico supone que el valor esperado de \(Y\) es una función lineal de \(x\), pero que con \(x\) fija, la variable \(Y\) difiere de su valor esperado en una cantidad aleatoria \(ε\), Además, la cantidad \(ε\) en la ecuación de modelo \((1)\) se supone normalmente distribuida con \(E\)\((ε)\)=\(0\) y \(V\)\((ε)\)=\(σ^2\). La variable aleatoria \(ε\) también se conoce como término de error aleatorio o desviación aleatoria en el modelo.

Complementariamente, casi nunca serán conocidos los valores \(β0\) ,\(β1\) y \(σ^2\), a cambio estará disponible una muestra de datos compuesta de pares ordenados \((x1,y1)\)\((xn,yn)\) con la que los parámetros del modelo y la línea de regresión verdadera pueden ser estimados, bajo el supuesto de independencia de las observaciones. Así, \(yi\) es el valor observado de una variable aleatoria \(Yi\), donde \(Yi\)=\(β0\)+\(β1\)\(xi\)+\(εi\) y las \(n\) desviaciones \(ε1\), \(ε2\), …, \(εn\) son variables independientes.

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 1.2. se formulará un modelo de regresión lineal simple para estudiar la relación lineal supuesta entre las varaibles definidas por los campos: Income (variable predictora) y MntWines (variable predicha).

Desarrolllo del Analisis

Resumen Estadistico Resumen estadístico de las variables por estudiar

RESUMEN ESTADISTICO DE LA VARIABLE INCOME

summary(Gastos_Dataset$Income)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    1730   35221   51369   52213   68475  666666      13

Resumen de Income

summary(Gastos_Dataset$Income)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    1730   35221   51369   52213   68475  666666      13
boxplot(Gastos_Dataset$Income, main = "Diagrama de Caja de Income", col = c("orange"))

Resumen de MntWines

summary(Gastos_Dataset$MntWines)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   23.75  173.50  303.94  504.25 1493.00
boxplot(Gastos_Dataset$MntWines, main = "Diagrama de Caja de MntWines", col = c("gold"))

Diagrama de Dispersión Income vs. MntWines

plot(Gastos_Dataset$Income, Gastos_Dataset$MntWines, main = "Diagrama de Dispersión Income vs. MntWines")

Diagramas Totales de Dispersión

pairs(~MntWines + MntMeatProducts + MntFishProducts + MntFruits + MntSweetProducts, data = Gastos_Dataset)

Formulación del modelo de RLS entre las variables de estudio.

La navegación a través de las pestañas muestra los coeficientes del modelo de regresión lineal simple, su resumen estadístico y su tabla ANOVA. Se menciona de nuevo que las variables de interés son: Income (variable predictora) y MntWines (variable predicha).

Al considerar los resultados presentados en la pestaña Coeficientes del Modelo RLS se puede establer que el modelo de regresión lineal simple que relaciona a las variables de interés, las cuales se resumirán como \(Income\) y \(MntWines\), tiene la formulación:\[\hat{Income}=−100.2197+0.007756159\cdot MntWines\hspace{10mm}\] para este modelo se obvia la interpretación del intercepto por carecer de sentido dado que MntWines resultaría negativa en caso de un valor nulo de Income, y ambas situaciones carecen de sentido. Sin embargo, el coeficiente lineal una correlación de proporcionalidad directa entre las variables de interés, aunque de crecimiento moderado en MntWines por cada unidad marginal de **Income*. Esta ecuación indica que, en promedio, por cada unidad de aumento en el ingreso, los gastos en vino aumentarían en 0.007756159 unidades, manteniendo todo lo demás constante. El término −100.2197 representa el intercepto, es decir, los gastos en vino cuando el ingreso es cero (aunque este valor podría no tener un significado práctico en el contexto de los datos).

El modelo de regresión lineal simple también proporciona información sobre la significancia de los coeficientes. En este caso, ambos coeficientes son significativos (p < 0.001), lo que sugiere que tanto el intercepto como el coeficiente de ingreso son importantes para explicar la variabilidad en los gastos de vino. Además, el coeficiente de determinación ajustado (R^{2})es de aproximadamente 0.3347, lo que indica que alrededor del 33.47% de la variabilidad en los gastos de vino se explica por la variable de ingreso en este modelo de regresión lineal simple.

Coeficientes del Modelo RLS

modelo_RL_Simple = lm(Gastos_Dataset$MntWines~Gastos_Dataset$Income)
coef(modelo_RL_Simple)
##           (Intercept) Gastos_Dataset$Income 
##         -98.360085338           0.007710612

Resumen Estadístico del Modelo RLS

summary(modelo_RL_Simple)
## 
## Call:
## lm(formula = Gastos_Dataset$MntWines ~ Gastos_Dataset$Income)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5033.0  -153.9   -69.1    90.1  1062.8 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -9.836e+01  1.342e+01   -7.33 3.21e-13 ***
## Gastos_Dataset$Income  7.711e-03  2.315e-04   33.31  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 275.2 on 2225 degrees of freedom
##   (13 observations deleted due to missingness)
## Multiple R-squared:  0.3328, Adjusted R-squared:  0.3325 
## F-statistic:  1110 on 1 and 2225 DF,  p-value: < 2.2e-16

Tabla ANOVA para el Modelo RLS

anova(modelo_RL_Simple)
## Analysis of Variance Table
## 
## Response: Gastos_Dataset$MntWines
##                         Df    Sum Sq  Mean Sq F value    Pr(>F)    
## Gastos_Dataset$Income    1  84064475 84064475  1109.6 < 2.2e-16 ***
## Residuals             2225 168562130    75758                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Análisis del modelo RLS.

La navegación a través de las pestañas muestra el intervalo de confianza para \(\beta_1\) y para la predicción del modelo de regresión lineal simple, ambos al 95 %. Se menciona de nuevo que las variables de interés son: Income (variable predictora) y MntWines (variable predicha).

El análisis del modelo RLS muestra que es significativo y en consecuencia aporta información relevante para estimar MntWines a partir de Income. Esto debido a que el intervalo de confianza para el coeficiente de Income en el modelo RLS excluye al cero:\[0,00730089<\beta_1<0,00821153\hspace{10mm}\]

Por último, la pestaña Predicciones y sus Intevalos de Predicción muestran los cálculos con base en el modelo, bajo intervalos de predicción al \(95\) \(\%\), de las predicciones de todas las pestañas del conjunto de datos para la variable MntWines. Cabe mencionar que estos intervalos resultan más anchos que aquellos calculados con base en intervalos de confianza al mismo nivel de significancia.

Intervalo de Confianza para B1

confint(modelo_RL_Simple, level = 0.95)
##                               2.5 %        97.5 %
## (Intercept)           -1.246761e+02 -72.044021674
## Gastos_Dataset$Income  7.256689e-03   0.008164534

Predicciones y sus Intervalos de Predicción

predict(modelo_RL_Simple, data.frame(seq(1,400)), interval='prediction', level = 0.95)
## Warning: 'newdata' had 400 rows but variables found have 2240 rows
##              fit           lwr       upr
## 1     349.919452 -189.96680816  889.8057
## 2     258.980499 -280.90563368  798.8666
## 3     453.819943  -86.13143415  993.7713
## 4     107.096871 -432.90740818  647.1012
## 5     351.114597 -188.77201846  891.0012
## 6     383.653378 -156.24642834  923.5532
## 7     330.619791 -209.26200421  870.5016
## 8     159.590715 -380.35598983  699.5374
## 9     135.664687 -404.30606667  675.6354
## 10    -54.810551 -595.10371360  485.4826
## 11    323.155919 -216.72479069  863.0366
## 12    -40.530498 -580.79142641  499.7304
## 13    387.662896 -152.23900602  927.5648
## 14    359.295555 -180.59373647  899.1848
## 15     35.210839 -504.90096043  575.3226
## 16    540.078555    0.02049032 1080.1366
## 17    224.329010 -315.57104132  764.2291
## 18    192.792609 -347.12680943  732.7120
## 19    495.318455  -44.67829133 1035.3152
## 20    162.351114 -377.59305263  702.2953
## 21    187.240968 -352.68251982  727.1645
## 22    -79.492219 -619.84417483  460.8597
## 23    353.535729 -186.35163389  893.4231
## 24    405.327907 -134.58445684  945.2403
## 25    215.376990 -324.52791005  755.2819
## 26     44.972474 -495.12278120  585.0677
## 27    313.070439 -226.80937192  852.9502
## 28     82.260991 -457.77668823  622.2987
## 29    197.418976 -342.49720188  737.3352
## 30    554.096447   14.01653635 1094.1764
## 31    -13.705281 -553.90918767  526.4986
## 32    199.423735 -340.49108126  739.3386
## 33    214.289794 -325.61573017  754.1953
## 34    261.031521 -278.85402872  800.9171
## 35    431.027375 -108.90378501  970.9585
## 36    282.459311 -257.42177063  822.3404
## 37    420.972738 -118.95056379  960.8960
## 38     84.520201 -455.51427720  624.5547
## 39    228.793454 -311.10437136  768.6913
## 40    279.058931 -260.82266269  818.9405
## 41    518.573659  -21.45334115 1058.6007
## 42     60.162379 -479.90834612  600.2331
## 43     71.227106 -468.82668142  611.2809
## 44    -47.616550 -587.89331063  492.6602
## 45    -40.530498 -580.79142641  499.7304
## 46    518.033916  -21.99234245 1058.0602
## 47    -40.530498 -580.79142641  499.7304
## 48    223.388315 -316.51222125  763.2889
## 49    263.429521 -276.45538198  803.3144
## 50    461.044786  -78.91369535 1001.0033
## 51    406.577026 -133.33615336  946.4902
## 52    511.880848  -28.13708933 1051.8988
## 53    177.602704 -362.32832014  717.5337
## 54    538.397642   -1.65788804 1078.4532
## 55    413.416338 -126.50148406  953.3342
## 56    536.870941   -3.18230244 1076.9242
## 57    443.595672  -96.34622389  983.5376
## 58    117.058982 -422.93301248  657.0510
## 59    107.158556 -432.84564526  647.1628
## 60    333.079476 -206.80275519  872.9617
## 61    485.926930  -54.05858155 1025.9124
## 62    415.575310 -124.34404088  955.4947
## 63    378.333056 -161.56412879  918.2302
## 64    423.494108 -116.43110356  963.4193
## 65    446.517994  -93.42654358  986.4625
## 66     99.964556 -440.04891071  639.9780
## 67    152.034316 -387.91958760  691.9882
## 68    581.669594   41.54303613 1121.7962
## 69    434.412334 -105.52161820  974.3463
## 70    478.810035  -61.16733927 1018.7874
## 71    418.181496 -121.73973860  958.1027
## 72    855.087881  314.23524832 1395.9405
## 73    403.068698 -136.84221634  942.9796
## 74    369.142007 -170.75107704  909.0351
## 75    120.096962 -419.89141168  660.0853
## 76    211.961189 -327.94569666  751.8681
## 77    481.871148  -58.10968643 1021.8520
## 78    486.297039  -53.68890423 1026.2830
## 79    104.629476 -435.37794511  644.6369
## 80    333.788852 -206.09351190  873.6712
## 81    131.107716 -408.86803494  671.0835
## 82    104.459842 -435.54779596  644.4675
## 83     83.294213 -456.74199790  623.3304
## 84    199.423735 -340.49108126  739.3386
## 85    528.982985  -11.05868161 1069.0247
## 86    128.640320 -411.33819180  668.6188
## 87    180.285997 -359.64286945  720.2149
## 88    290.162212 -249.71798352  830.0424
## 89    515.350624  -24.67197664 1055.3732
## 90    319.385430 -220.49486734  859.2657
## 91    320.079385 -219.80098135  859.9598
## 92     -3.018373 -543.20084770  537.1641
## 93    311.381815 -228.49790920  851.2615
## 94    228.523583 -311.37437368  768.4215
## 95     83.810824 -456.22465530  623.8463
## 96    133.698481 -406.27441227  673.6714
## 97    271.101580 -268.78150291  810.9847
## 98    301.149833 -238.72975715  841.0294
## 99    506.899793  -33.11158610 1046.9112
## 100   288.327086 -251.55328563  828.2075
## 101   270.384493 -269.49874394  810.2677
## 102   168.072388 -371.86667368  708.0114
## 103   562.385354   22.29193335 1102.4788
## 104   409.352846 -130.56218148  949.2679
## 105   573.966693   33.85365729 1114.0797
## 106    91.274696 -448.75040397  631.2998
## 107   280.200102 -259.68131196  820.0815
## 108   305.776200 -234.10336738  845.6558
## 109   198.937966 -340.97717735  738.8531
## 110   588.331562   48.19300297 1128.4701
## 111   497.654770  -42.34485875 1037.6544
## 112   426.933040 -112.99484132  966.8609
## 113   343.365432 -196.51904370  883.2499
## 114   565.037805   24.93996735 1105.1356
## 115   240.706349 -299.18616316  780.5989
## 116   293.223325 -246.65662433  833.1033
## 117   601.493576   61.33046928 1141.6567
## 118   183.462769 -356.46360250  723.3891
## 119   138.764353 -401.20307810  678.7318
## 120    70.641100 -469.41356522  610.6958
## 121   334.428833 -205.45365388  874.3113
## 122   152.674296 -387.27898298  692.6276
## 123    52.073947 -488.00965557  592.1575
## 124   140.607189 -399.35829571  680.5727
## 125   687.890979  147.53918019 1228.2428
## 126   452.856117  -87.09433818  992.8066
## 127   515.458572  -24.56417438 1055.4813
## 128   320.696234 -219.18419640  860.5767
## 129   254.824479 -285.06291599  794.7119
## 130   498.256198  -41.74417880 1038.2566
## 131   387.393024 -152.50873313  927.2948
## 132   374.539435 -165.35599138  914.4349
## 133   467.968915  -71.99668901 1007.9345
## 134   288.296244 -251.58413122  828.1766
## 135   222.023537 -317.87771372  761.9248
## 136   387.261944 -152.63974361  927.1636
## 137   -24.739166 -564.96596887  515.4876
## 138   161.965583 -377.97893478  701.9101
## 139   178.142447 -361.78813956  718.0730
## 140   186.323406 -353.60077433  726.2476
## 141   617.639597   77.44486055 1157.8343
## 142   403.631572 -136.27969981  943.5428
## 143   565.608390   25.50959668 1105.7072
## 144   428.675639 -111.25362530  968.6049
## 145   224.583460 -315.31646083  764.4834
## 146   362.803884 -177.08668778  902.6945
## 147    86.363037 -453.66885353  626.3949
## 148   198.860860 -341.05433560  738.7761
## 149   176.816221 -363.11544375  716.7479
## 150   284.124803 -255.75605465  824.0057
## 151   359.295555 -180.59373647  899.1848
## 152   408.589495 -131.32501882  948.5040
## 153   258.980499 -280.90563368  798.8666
## 154   165.157777 -374.78385935  705.0994
## 155   372.064328 -167.83000031  911.9587
## 156   436.540462 -103.39528217  976.4762
## 157   286.916044 -252.96447800  826.7966
## 158   365.811022 -174.08070893  905.7028
## 159   328.615032 -211.26643652  868.4965
## 160   520.933106  -19.09715741 1060.9634
## 161   136.990912 -402.97841228  676.9602
## 162   444.127704  -95.81466851  984.0701
## 163    80.742001 -459.29784989  620.7819
## 164   473.497424  -66.47408856 1013.4689
## 165  1114.079614  572.09907086 1656.0602
## 166   236.912728 -302.98137721  776.8068
## 167   383.946381 -155.95357475  923.8463
## 168   305.151641 -234.72792198  845.0312
## 169   417.873072 -122.04793778  957.7941
## 170   102.817482 -437.19227054  642.8272
## 171   159.606136 -380.34055429  699.5528
## 172   123.073259 -416.91162669  663.0581
## 173   290.617138 -249.26301701  830.4973
## 174   314.442928 -225.43696698  854.3228
## 175   303.162303 -236.71726072  843.0419
## 176   521.781274  -18.25017198 1061.8127
## 177   548.074459    8.00408790 1088.1448
## 178   201.220307 -338.69331047  741.1339
## 179   196.840680 -343.07589531  736.7573
## 180   506.899793  -33.11158610 1046.9112
## 181   299.893004 -239.98661678  839.7726
## 182    26.921932 -513.20439634  567.0483
## 183   416.978641 -122.94171885  956.8990
## 184   136.636224 -403.33348153  676.6059
## 185   119.456982 -420.53215008  659.4461
## 186    96.494780 -443.52327318  636.5128
## 187   150.715801 -389.23939578  690.6710
## 188   374.192457 -165.70281269  914.0877
## 189   472.749495  -67.22120714 1012.7202
## 190   254.469791 -285.41771701  794.3573
## 191    93.495352 -446.52672874  633.5174
## 192   418.042705 -121.87842815  957.9638
## 193   184.156724 -355.76911106  724.0826
## 194   201.366809 -338.54671205  741.2803
## 195   296.022277 -243.85749968  835.9021
## 196   143.390720 -396.57186654  683.3533
## 197   438.768829 -101.16882379  978.7065
## 198   519.005454  -21.02214146 1059.0330
## 199   570.288731   30.18201790 1110.3954
## 200   262.912911 -276.97212912  802.7980
## 201   434.767022 -105.16722684  974.7013
## 202   487.044968  -52.94185066 1027.0318
## 203   392.751899 -147.15281091  932.6566
## 204   689.355996  149.00058458 1229.7114
## 205   214.976038 -324.92909106  754.8812
## 206    47.293368 -492.79804334  587.3848
## 207   129.904860 -410.07223153  669.8820
## 208   277.308622 -262.57326419  817.1905
## 209   247.029051 -292.86101170  786.9191
## 210   398.951231 -140.95712508  938.8596
## 211   257.075978 -282.81071960  796.9627
## 212   502.851722  -37.15444451 1042.8579
## 213   243.813726 -296.07755056  783.7050
## 214   256.435997 -283.45089540  796.3229
## 215   448.715518  -91.23104171  988.6621
## 216   221.190791 -318.71090143  761.0925
## 217   304.095287 -235.78427311  843.9748
## 218   547.712061    7.64225580 1087.7819
## 219   245.155372 -294.73538959  785.0461
## 220   437.589106 -102.34753308  977.5257
## 221   250.190401 -289.69853220  790.0793
## 222   460.350831  -79.60695348 1000.3086
## 223   500.153008  -39.84974185 1040.1558
## 224   138.602430 -401.36517299  678.5700
## 225   394.247758 -145.65780941  934.1533
## 226   225.570419 -314.32900108  765.4698
## 227   297.726322 -242.15337404  837.6060
## 228   299.021705 -240.85794259  838.9014
## 229   517.949100  -22.07704283 1057.9752
## 230   166.268105 -373.67254410  706.2088
## 231   187.472287 -352.45102793  727.3956
## 232   533.717300   -6.33126637 1073.7659
## 233   199.192416 -340.72255540  739.1074
## 234    17.553539 -522.58974016  557.6968
## 235   385.442239 -154.45848871  925.3430
## 236    72.908019 -467.14326377  612.9593
## 237    84.080696 -455.95440238  624.1158
## 238   516.646006  -23.37835437 1056.6704
## 239   -40.530498 -580.79142641  499.7304
## 240   365.679942 -174.21173757  905.5716
## 241   468.022890  -71.94277146 1007.9886
## 242   402.528955 -137.38161765  942.4395
## 243    77.472702 -462.57187240  617.5173
## 244   469.811752  -70.15580041 1009.7793
## 245   372.557807 -167.33673682  912.4524
## 246   145.958354 -394.00160339  685.9183
## 247   519.522065  -20.50624340 1059.5504
## 248   480.143971  -59.83490382 1020.1228
## 249   422.460886 -117.46353799  962.3853
## 250   404.186736 -135.72489099  944.0984
## 251   141.902572 -398.06155795  681.8667
## 252   132.480205 -407.49402709  672.4544
## 253   693.458041  153.09244377 1233.8236
## 254   105.894016 -434.11179006  645.8998
## 255   485.348634  -54.63620412 1025.3335
## 256   139.890102 -400.07613731  679.8563
## 257   390.045475 -149.85772125  929.9487
## 258   256.243231 -283.64371995  796.1302
## 259    45.836062 -494.25775843  585.9299
## 260   215.747099 -324.15759004  755.6518
## 261    19.512034 -520.62765469  559.6517
## 262   438.869067 -101.06867243  978.8068
## 263   242.132812 -297.75912487  782.0247
## 264   192.461052 -347.45860325  732.3807
## 265   239.179648 -300.71349429  779.0728
## 266   196.023355 -343.89378569  735.9405
## 267   519.444958  -20.58324300 1059.4732
## 268   195.391085 -344.52649628  735.3087
## 269   464.051925  -75.90961249 1004.0135
## 270    71.813113 -468.23979981  611.8660
## 271   435.730848 -104.20421093  975.6659
## 272   146.744836 -393.21432404  686.7040
## 273   378.965326 -160.93216067  918.8628
## 274   127.676494 -412.30310743  667.6561
## 275   159.004709 -380.94254145  698.9520
## 276   412.953702 -126.96379721  952.8712
## 277   369.781987 -170.11136426  909.6753
## 278   502.157767  -37.84751651 1042.1631
## 279   440.357215  -99.58181754  980.2962
## 280   393.893070 -146.01229301  933.7984
## 281    90.395687 -449.63061748  630.4220
## 282   297.726322 -242.15337404  837.6060
## 283   192.792609 -347.12680943  732.7120
## 284   407.764460 -132.14950378  947.6784
## 285   243.366510 -296.52494012  783.2580
## 286   137.823659 -402.14477459  677.7921
## 287   482.079335  -57.90173741 1022.0604
## 288   294.094624 -245.78526609  833.9745
## 289   518.072470  -21.95384230 1058.0988
## 290   174.718935 -365.21445947  714.6523
## 291   151.571679 -388.38267692  691.5260
## 292   197.426686 -342.48948598  737.3429
## 293   537.742240   -2.31230653 1077.7968
## 294    29.836543 -510.28462634  569.9577
## 295   130.429182 -409.54732418  670.4057
## 296   333.056344 -206.82588274  872.9386
## 297   174.503038 -365.43053622  714.4366
## 298   228.461898 -311.43608856  768.3599
## 299   430.796057 -109.13491527  970.7270
## 300   348.176854 -191.70890505  888.0626
## 301   173.408131 -366.52635862  713.3426
## 302   355.185800 -184.70209399  895.0737
## 303   259.234949 -280.65110979  799.1210
## 304   208.113594 -331.79561822  748.0228
## 305    86.509538 -453.52214715  626.5412
## 306   525.813924  -14.22320438 1065.8511
## 307   110.119431 -429.88105366  650.1199
## 308   498.880757  -41.12039823 1038.8819
## 309   395.890118 -144.01640678  935.7966
## 310   230.651712 -309.24522520  770.5486
## 311    -1.429987 -541.60933873  538.7494
## 312    75.699261 -464.34790385  615.7464
## 313           NA            NA        NA
## 314   448.268303  -91.67784309  988.2144
## 315   319.539642 -220.34067019  859.4200
## 316   124.006243 -415.97756072  663.9900
## 317   212.539485 -327.36705935  752.4460
## 318   414.418718 -125.49981029  954.3372
## 319   139.381202 -400.58557529  679.3480
## 320           NA            NA        NA
## 321   401.248993 -138.66077682  941.1588
## 322   167.046877 -372.89308464  706.9868
## 323   264.231425 -275.65327040  804.1161
## 324   397.625006 -142.28254957  937.5326
## 325   213.642102 -326.26379683  753.5480
## 326   381.139718 -158.75882649  921.0383
## 327    16.134786 -524.01110877  556.2807
## 328   111.792634 -428.20577547  651.7910
## 329   321.343925 -218.53657483  861.2244
## 330   132.950552 -407.02316201  672.9243
## 331    87.249757 -452.78089593  627.2804
## 332   163.769867 -376.17301454  703.7127
## 333   413.115624 -126.80198745  953.0332
## 334   172.883809 -367.05112137  712.8187
## 335    71.350476 -468.70312721  611.4041
## 336   381.270799 -158.62781086  921.1694
## 337   485.279238  -54.70551898 1025.2640
## 338   138.162925 -401.80514569  678.1310
## 339   541.643809    1.58336764 1081.7043
## 340   545.722723    5.65601353 1085.7894
## 341   431.011954 -108.91919369  970.9431
## 342   220.944052 -318.95777272  760.8459
## 343   327.358202 -212.52307456  867.2395
## 344   358.817498 -181.07162614  898.7066
## 345   111.291444 -428.70758503  651.2905
## 346   538.713777   -1.34222834 1078.7698
## 347   243.220008 -296.67149905  783.1115
## 348   555.769650   15.68704733 1095.8523
## 349   135.826610 -404.14396873  675.7972
## 350   157.485718 -382.46295525  697.4344
## 351   449.964637  -89.98308604  989.9124
## 352   456.433840  -83.52006842  996.3877
## 353   439.524469 -100.41383821  979.4628
## 354   457.567300  -82.38771992  997.5223
## 355   364.276611 -175.61452166  904.1677
## 356   199.601079 -340.31361799  739.5158
## 357   292.853215 -247.02676028  832.7332
## 358   429.523806 -110.40613782  969.4537
## 359   403.392543 -136.51857645  943.3037
## 360   261.578975 -278.30642444  801.4644
## 361   507.832777  -32.17981840 1047.8454
## 362   381.139718 -158.75882649  921.0383
## 363   120.945130 -419.04224437  660.9325
## 364   192.461052 -347.45860325  732.3807
## 365   298.574489 -241.30517366  838.4542
## 366   324.204562 -215.67627844  864.0854
## 367   514.864855  -25.15708777 1054.8868
## 368   145.410900 -394.54961391  685.3714
## 369   456.996715  -82.95774467  996.9512
## 370   307.326033 -232.55355753  847.2056
## 371   176.785379 -363.14631143  716.7171
## 372   273.121760 -266.76090614  813.0044
## 373   129.473066 -410.50450949  669.4506
## 374   393.654041 -146.25118458  933.5593
## 375   199.099889 -340.81514515  739.0149
## 376   257.083688 -282.80300665  796.9704
## 377    75.784078 -464.26296275  615.8311
## 378   135.109523 -404.86183233  675.0809
## 379   413.825001 -126.09310859  953.7431
## 380   139.296385 -400.67048178  679.2633
## 381   160.569963 -379.37583612  700.5158
## 382    55.744198 -484.33350892  595.8219
## 383   113.072595 -426.92423838  653.0694
## 384   176.816221 -363.11544375  716.7479
## 385   180.324550 -359.60428572  720.2534
## 386   -19.364870 -559.58042314  520.8507
## 387   239.326150 -300.56693157  779.2192
## 388   390.346188 -149.55717334  930.2496
## 389   200.988989 -338.92478195  740.9028
## 390   546.740523    6.67223368 1086.8088
## 391   597.908142   57.75183191 1138.0645
## 392   383.545429 -156.35432191  923.4452
## 393   474.484382  -65.48820562 1014.4570
## 394   294.973634 -244.90620165  834.8535
## 395   447.373872  -92.57144969  987.3192
## 396   431.220140 -108.71117673  971.1515
## 397   239.549757 -300.34323083  779.4427
## 398    19.959250 -520.17962287  560.0981
## 399    82.392072 -457.64542117  622.4296
## 400    13.559442 -526.59123475  553.7101
## 401   143.714566 -396.24768688  683.6768
## 402   482.063913  -57.91714103 1022.0450
## 403   228.361660 -311.53637530  768.2597
## 404   136.867543 -403.10191453  676.8370
## 405   329.740781 -210.14086751  869.6224
## 406   271.795535 -268.08740183  811.6785
## 407   111.468788 -428.53002146  651.4676
## 408   409.059843 -130.85498729  948.9747
## 409   135.664687 -404.30606667  675.6354
## 410   290.540032 -249.34012989  830.4202
## 411    83.733718 -456.30187050  623.7693
## 412   316.918034 -222.96204257  856.7981
## 413   414.125715 -125.79260657  954.0440
## 414   263.444943 -276.43995672  803.3298
## 415   480.490949  -59.48831843 1020.4702
## 416   486.605464  -53.38084047 1026.5918
## 417    54.225208 -485.85492889  594.3053
## 418   519.522065  -20.50624340 1059.5504
## 419   603.806760   63.63922386 1143.9743
## 420   283.353742 -256.52721724  823.2347
## 421   190.024499 -349.89692363  729.9459
## 422   133.698481 -406.27441227  673.6714
## 423    44.224544 -495.87195658  584.3210
## 424   538.413063   -1.64248999 1078.4686
## 425   618.934980   78.73763330 1159.1323
## 426   277.038751 -262.84318247  816.9207
## 427   618.032838   77.83731055 1158.2284
## 428   483.274479  -56.70796139 1023.2569
## 429   -18.138882 -558.35189559  522.0741
## 430   374.408354 -165.48701268  914.3037
## 431   556.000968   15.91799213 1096.0839
## 432   228.469608 -311.42837420  768.3676
## 433   420.633471 -119.28957684  960.5565
## 434   481.755489  -58.22521378 1021.7362
## 435   133.073922 -406.89965665  673.0475
## 436   294.441601 -245.43826637  834.3215
## 437   420.348178 -119.57465657  960.2710
## 438   298.960020 -240.91962955  838.8397
## 439   148.464303 -391.49312909  688.4217
## 440   -40.530498 -580.79142641  499.7304
## 441   122.865072 -417.12005540  662.8502
## 442   335.153631 -204.72899858  875.0363
## 443    41.201985 -498.89958844  581.3036
## 444   135.109523 -404.86183233  675.0809
## 445    56.854526 -483.22141435  596.9305
## 446    81.258612 -458.78049884  621.2977
## 447   230.250760 -309.64636689  770.1479
## 448   528.096265  -11.94412553 1068.1367
## 449    86.902780 -453.12835700  626.9339
## 450   331.174955 -208.70693520  871.0568
## 451   348.539252 -191.34660896  888.4251
## 452   339.571811 -200.31175779  879.4554
## 453   180.995373 -358.93293043  720.9237
## 454   447.774824  -92.17086679  987.7205
## 455   410.470885 -129.44490123  950.3867
## 456   202.261240 -337.65169310  742.1742
## 457   592.294817   52.14898254 1132.4407
## 458   227.081698 -312.81696544  766.9804
## 459   289.483678 -250.39658010  829.3639
## 460   415.660126 -124.25928479  955.5795
## 461   368.879846 -171.01312882  908.7728
## 462   442.654977  -97.28607987  982.5960
## 463   291.180013 -248.70009419  831.0601
## 464   519.444958  -20.58324300 1059.4732
## 465   157.501139 -382.44751950  697.4498
## 466   415.027856 -124.89110400  954.9468
## 467   481.948254  -58.03266824 1021.9292
## 468   147.454212 -392.50423234  687.4127
## 469   316.393713 -223.48632234  856.2737
## 470   281.534038 -258.34717608  821.4153
## 471   375.503261 -164.39260291  915.3991
## 472   190.063052 -349.85834232  729.9844
## 473   340.659007 -199.22481199  880.5428
## 474   197.843059 -342.07282806  737.7589
## 475    59.846243 -480.22497665  599.9175
## 476   383.576271 -156.32349516  923.4760
## 477   222.740624 -317.16025008  762.6415
## 478   332.215888 -207.66618615  872.0980
## 479   379.774940 -160.12293695  919.6728
## 480   218.731106 -321.17191707  758.6341
## 481   202.053053 -337.86001602  741.9661
## 482   192.792609 -347.12680943  732.7120
## 483   150.176058 -389.77967135  690.1318
## 484   233.635718 -306.25983769  773.5313
## 485   542.784980    2.72279538 1082.8472
## 486   509.428874  -30.58581553 1049.4436
## 487   403.631572 -136.27969981  943.5428
## 488   364.993697 -174.89771282  904.8851
## 489     9.935455 -530.22202296  550.0929
## 490   121.060789 -418.92644918  661.0480
## 491   510.408122  -29.60786050 1050.4241
## 492   258.718338 -281.16787084  798.6045
## 493   487.684949  -52.30262211 1027.6725
## 494   351.230256 -188.65639414  891.1169
## 495   330.457868 -209.42389971  870.3396
## 496   359.896983 -179.99252251  899.7865
## 497   330.064627 -209.81707519  869.9463
## 498   508.017832  -31.99500563 1048.0307
## 499   425.275259 -114.65132597  965.2018
## 500   404.950087 -134.96203208  944.8622
## 501   111.391682 -428.60722298  651.3906
## 502   274.293773 -265.58866354  814.1762
## 503    88.845854 -451.18258496  628.8743
## 504   397.856324 -142.05137007  937.7640
## 505   294.441601 -245.43826637  834.3215
## 506   315.337359 -224.54259723  855.2173
## 507   407.957225 -131.95686672  947.8713
## 508   527.872657  -12.16741219 1067.9127
## 509   171.010131 -368.92639091  710.9467
## 510   373.914875 -165.98027030  913.8100
## 511   207.481324 -332.42827975  747.3909
## 512   365.448624 -174.44296485  905.3402
## 513   278.843034 -261.03859485  818.7247
## 514   588.809620   48.67018873 1128.9491
## 515   241.862941 -298.02910408  781.7550
## 516   527.502548  -12.53699080 1067.5421
## 517   182.637733 -357.28927968  722.5647
## 518   102.848324 -437.16138823  642.8580
## 519   451.923133  -88.02643496  991.8727
## 520   519.907595  -20.12124596 1059.9364
## 521   137.815948 -402.15249343  677.7844
## 522   468.015179  -71.95047397 1007.9808
## 523   230.813634 -309.08322596  770.7105
## 524   445.261164  -94.68223051  985.2046
## 525    98.607488 -441.40776328  638.6227
## 526   155.164824 -384.78605264  695.1157
## 527   502.011266  -37.99383210 1042.0164
## 528   289.892340 -249.98787953  829.7726
## 529   378.456425 -161.44081774  918.3537
## 530   280.647317 -259.23402814  820.5287
## 531   269.297297 -270.58618019  809.1808
## 532   462.039455  -77.92003075 1001.9989
## 533   348.500699 -191.38515106  888.3865
## 534   405.266222 -134.64610171  945.1785
## 535   121.908956 -418.07728711  661.8952
## 536   266.752795 -273.13127340  806.6369
## 537   248.085404 -291.80427361  787.9751
## 538   495.218217  -44.77840638 1035.2148
## 539   343.049297 -196.83509968  882.9337
## 540    78.552187 -461.49081965  618.5952
## 541    96.834047 -443.18355433  636.8516
## 542   238.115584 -301.77800666  778.0092
## 543   230.960136 -308.93665536  770.8569
## 544   550.634382   10.55998429 1090.7088
## 545   318.460156 -221.42005347  858.3404
## 546    91.960941 -448.06322317  631.9851
## 547   561.822480   21.72999010 1101.9150
## 548   270.592680 -269.29051234  810.4759
## 549    52.104789 -487.97876322  592.1883
## 550   111.052415 -428.94691015  651.0517
## 551   206.579182 -333.33098418  746.4893
## 552    67.217588 -472.84224622  607.2774
## 553   368.162759 -171.72991977  908.0554
## 554    74.504116 -465.54480598  614.5530
## 555   531.581461   -8.46397499 1071.6269
## 556   236.758516 -303.13565616  776.6527
## 557   324.798279 -215.08263860  864.6792
## 558   517.779466  -22.24644371 1057.8054
## 559    19.727931 -520.41136331  559.8672
## 560   578.408005   38.28721945 1118.5288
## 561   156.390811 -383.55889722  696.3405
## 562   531.913017   -8.13290278 1071.9589
## 563   452.940933  -87.00960239  992.8915
## 564   383.290979 -156.60864275  923.1906
## 565   277.910050 -261.97173370  817.7918
## 566   303.802284 -236.07727688  843.6818
## 567   414.896776 -125.02209123  954.8156
## 568   127.545413 -412.43433642  667.5252
## 569   269.366692 -270.51676914  809.2502
## 570   196.185278 -343.73175046  736.1023
## 571   248.532620 -291.35689759  788.4221
## 572   198.058956 -341.85678365  737.9747
## 573   199.215548 -340.69940797  739.1305
## 574   398.303540 -141.60442400  938.2115
## 575   186.616409 -353.30754961  726.5404
## 576   379.666991 -160.23083321  919.5648
## 577   297.094052 -242.78567188  836.9738
## 578     3.882624 -536.28639948  544.0516
## 579   267.678068 -272.20578015  807.5619
## 580   322.662440 -217.21821067  862.5431
## 581   250.213533 -289.67539234  790.1025
## 582   215.376990 -324.52791005  755.2819
## 583   270.369072 -269.51416852  810.2523
## 584   113.296203 -426.70035647  653.2928
## 585   205.846674 -334.06395316  745.7573
## 586   108.669836 -431.33246127  648.6721
## 587   516.946720  -23.07805074 1056.9715
## 588   378.109448 -161.78763033  918.0065
## 589   316.956587 -222.92349265  856.8367
## 590    88.398638 -451.63041924  628.4277
## 591   207.627825 -332.28168721  747.5373
## 592   612.273011   72.08897317 1152.4570
## 593   440.472874  -99.46625947  980.4120
## 594   157.462586 -382.48610887  697.4113
## 595   364.068424 -175.82262807  903.9595
## 596    36.259483 -503.85051062  576.3695
## 597    86.000638 -454.03175940  626.0330
## 598   226.788695 -313.11011406  766.6875
## 599   103.842993 -436.16543697  643.8514
## 600   141.355119 -398.60958271  681.3198
## 601   133.582822 -406.39019808  673.5558
## 602   385.920297 -153.98068074  925.8213
## 603   463.789764  -76.17150459 1003.7510
## 604   375.588078 -164.30782501  915.4840
## 605   284.225041 -255.65580380  824.1059
## 606    70.409781 -469.64523049  610.4648
## 607   228.793454 -311.10437136  768.6913
## 608   103.272408 -436.73675707  643.2816
## 609   139.134463 -400.83257612  679.1015
## 610   527.494837  -12.54469037 1067.5344
## 611   108.878023 -431.12401360  648.8801
## 612   248.663700 -291.22577038  788.5532
## 613    47.971902 -492.11839228  588.0622
## 614    75.699261 -464.34790385  615.7464
## 615   273.599818 -266.28275349  813.4824
## 616   255.071219 -284.81609836  794.9585
## 617   177.610414 -362.32060326  717.5414
## 618  1153.820106  611.62875741 1696.0115
## 619   319.262060 -220.61822518  859.1423
## 620   136.983202 -402.98613116  676.9525
## 621   321.528980 -218.35154059  861.4095
## 622   145.541981 -394.41839995  685.5024
## 623   459.101712  -80.85482590  999.0582
## 624   186.739779 -353.18408674  726.6636
## 625   461.700188  -78.25895440 1001.6593
## 626     6.689287 -533.47435365  546.8529
## 627   550.842569   10.76784148 1090.9173
## 628   448.869730  -91.07697257  988.8164
## 629   167.555777 -372.38373701  707.4953
## 630   123.466500 -416.51792878  663.4509
## 631   434.319806 -105.61406825  974.2537
## 632   406.592447 -133.32074227  946.5056
## 633   383.290979 -156.60864275  923.1906
## 634   150.060399 -389.89544493  690.0162
## 635   548.691308    8.61997039 1088.7626
## 636   257.114531 -282.77215488  797.0012
## 637   553.757180   13.67781304 1093.8365
## 638   334.829785 -205.05278032  874.7124
## 639   388.333719 -151.56854352  928.2360
## 640   469.842594  -70.12499074 1009.8102
## 641   390.346188 -149.55717334  930.2496
## 642   488.725882  -51.26291863 1028.7147
## 643   386.321249 -153.57993970  926.2224
## 644   255.603251 -284.28389917  795.4904
## 645   500.230114  -39.77273271 1040.2330
## 646   259.898061 -279.98780707  799.7839
## 647   714.885831  174.46527305 1255.3064
## 648   327.897945 -211.98341281  867.7793
## 649   508.542154  -31.47137066 1048.5557
## 650   417.371882 -122.54876274  957.2925
## 651   663.270997  122.97783872 1203.5642
## 652   126.041844 -413.93961797  666.0233
## 653   421.682114 -118.24172070  961.6059
## 654   291.920231 -247.95981522  831.8003
## 655   282.783157 -257.09788002  822.6642
## 656  1088.488094  546.63799912 1630.3382
## 657   374.130772 -165.76446990  914.0260
## 658   105.894016 -434.11179006  645.8998
## 659   464.969487  -74.99299363 1004.9320
## 660   261.987637 -277.89765067  801.8729
## 661   335.384949 -204.49772632  875.2676
## 662    55.744198 -484.33350892  595.8219
## 663   351.399889 -188.48681196  891.2866
## 664   101.845945 -438.16506647  641.8570
## 665    14.685191 -525.46339002  554.8338
## 666    45.751245 -494.34271581  585.8452
## 667   249.141758 -290.74754268  789.0311
## 668    64.048527 -476.01615980  604.1132
## 669   126.689535 -413.29118721  666.6703
## 670   323.333263 -216.54746827  863.2140
## 671   358.910025 -180.97913125  898.7992
## 672   358.470520 -181.41848247  898.3595
## 673   416.176737 -123.74304417  956.0965
## 674   498.078854  -41.92130213 1038.0790
## 675   307.326033 -232.55355753  847.2056
## 676   107.906486 -432.09677176  647.9097
## 677   528.512638  -11.52835124 1068.5536
## 678   443.981203  -95.96103865  983.9234
## 679   180.339971 -359.58885223  720.2688
## 680   405.104299 -134.80791963  945.0165
## 681   426.871356 -113.05647764  966.7992
## 682   431.690488 -108.24121351  971.6222
## 683   218.075704 -321.82768013  757.9791
## 684   201.937394 -337.97575109  741.8505
## 685   408.820814 -131.09385560  948.7355
## 686   414.210531 -125.70784970  954.1289
## 687   571.360506   31.25195951 1111.4691
## 688  1141.529392  599.40430892 1683.6545
## 689   501.872475  -38.13244700 1041.8774
## 690   437.342366 -102.59406164  977.2788
## 691   291.881678 -247.99837133  831.7617
## 692   373.598740 -166.29626429  913.4937
## 693   227.914444 -311.98380921  767.8127
## 694     2.525557 -537.64608809  542.6972
## 695   268.433708 -271.44996474  808.3174
## 696   379.104117 -160.79343631  919.0017
## 697   170.154253 -369.78300301  710.0915
## 698   106.109913 -433.89561827  646.1154
## 699   255.849990 -284.03708278  795.7371
## 700   506.676186  -33.33490315 1046.6873
## 701   510.014880  -30.00058186 1050.0303
## 702   452.385769  -87.56423751  992.3358
## 703   449.262972  -90.68409694  989.2100
## 704   597.499480   57.34393898 1137.6550
## 705   220.358045 -319.54409360  760.2602
## 706   456.433840  -83.52006842  996.3877
## 707   176.769958 -363.16174527  716.7017
## 708   234.622677 -305.27243528  774.5178
## 709   413.431760 -126.48607365  953.3496
## 710   172.883809 -367.05112137  712.8187
## 711    96.348279 -443.66997018  636.3665
## 712   327.651205 -212.23011509  867.5325
## 713   158.010040 -381.93814069  697.9582
## 714   351.924211 -187.96265001  891.8111
## 715   289.267781 -250.61249781  829.1481
## 716   492.411554  -47.58165403 1032.4048
## 717   574.814860   34.70035428 1114.9294
## 718   100.966935 -439.04522038  640.9791
## 719   354.329922 -185.55769428  894.2175
## 720   249.851134 -290.03791717  789.7402
## 721   478.439926  -61.53703437 1018.4169
## 722   357.421877 -182.46676407  897.3105
## 723    48.049008 -492.04115939  588.1392
## 724   458.268966  -81.68674641  998.2247
## 725   -40.530498 -580.79142641  499.7304
## 726   247.029051 -292.86101170  786.9191
## 727   521.534534  -18.49656727 1061.5656
## 728   480.028312  -59.95043245 1020.0071
## 729   340.851773 -199.03209190  880.7356
## 730   594.754502   54.60410211 1134.9049
## 731   178.805559 -361.12449170  718.7356
## 732   314.874722 -225.00520163  854.7546
## 733   413.416338 -126.50148406  953.3342
## 734   249.172601 -290.71668933  789.0619
## 735   593.235511   53.08793567 1133.3831
## 736   456.996715  -82.95774467  996.9512
## 737   421.581876 -118.34188312  961.5056
## 738   445.585010  -94.35867830  985.5287
## 739    36.475380 -503.63424242  576.5850
## 740   386.498593 -153.40268918  926.3999
## 741   395.951803 -143.95475820  935.8584
## 742   171.056395 -368.88008768  710.9929
## 743   277.663310 -262.21851516  817.5451
## 744   200.056005 -339.85838703  739.9704
## 745   535.637243   -4.41416337 1075.6886
## 746   548.128434    8.05797772 1088.1989
## 747    32.743444 -507.37263484  572.8595
## 748   450.350168  -89.59791656  990.2983
## 749   161.464394 -378.48058299  701.4094
## 750   391.757230 -148.14691779  931.6614
## 751   545.036478    4.97083104 1085.1021
## 752   298.875203 -241.00444918  838.7549
## 753   351.399889 -188.48681196  891.2866
## 754   525.829345  -14.20780509 1065.8665
## 755   483.845065  -56.13803285 1023.8282
## 756   394.001018 -145.90440661  933.9064
## 757   381.394168 -158.50450213  921.2928
## 758   352.803221 -187.08391188  892.6904
## 759   215.168803 -324.73621545  755.0738
## 760   201.035252 -338.87848762  740.9490
## 761   175.543970 -364.38874036  715.4767
## 762   511.903980  -28.11398832 1051.9219
## 763   505.265144  -34.74411818 1045.2744
## 764   145.495717 -394.46471074  685.4561
## 765   480.915032  -59.06471512 1020.8948
## 766   277.347175 -262.53470447  817.2291
## 767   479.820125  -60.15838421 1019.7986
## 768   421.566455 -118.35729272  961.4902
## 769   263.198203 -276.68676108  803.0832
## 770   380.145049 -159.75300751  920.0431
## 771   457.289718  -82.66502900  997.2445
## 772   510.307884  -29.70796585 1050.3237
## 773   231.037242 -308.85951300  770.9340
## 774   160.886098 -379.05940986  700.8316
## 775   -45.658055 -585.93040731  494.6143
## 776   221.260187 -318.64146895  761.1618
## 777   215.924443 -323.98014535  755.8290
## 778   474.152826  -65.81939997 1014.1251
## 779   295.837222 -244.04256422  835.7170
## 780   458.793288  -81.16294409  998.7495
## 781   452.686483  -87.26380991  992.6368
## 782   181.404035 -358.52394529  721.3320
## 783    60.378276 -479.69211101  600.4487
## 784   136.559118 -403.41067061  676.5289
## 785   145.218135 -394.74257582  685.1788
## 786    59.129157 -480.94318973  599.2015
## 787    33.830640 -506.28354850  573.9448
## 788   229.834387 -310.06293820  769.7317
## 789   239.233622 -300.65949748  779.1267
## 790   216.078656 -323.82584578  755.9832
## 791   386.228722 -153.67241831  926.1299
## 792   534.041146   -6.00789794 1074.0902
## 793    31.278427 -508.84020999  571.3971
## 794   296.939839 -242.93989125  836.8196
## 795   260.368409 -279.51732662  800.2541
## 796   250.028479 -289.86051129  789.9175
## 797   444.628894  -95.31392960  984.5717
## 798   365.518019 -174.37359663  905.4096
## 799   471.654588  -68.31493359 1011.6241
## 800    50.678326 -489.40754072  590.7642
## 801   378.710876 -161.18648900  918.6082
## 802   263.915290 -275.96948697  803.8001
## 803   170.262202 -369.67496158  710.1994
## 804   539.430864   -0.62622213 1079.4879
## 805   273.229709 -266.65293606  813.1124
## 806   284.710810 -255.16997364  824.5916
## 807   339.988184 -199.89547978  879.8718
## 808   327.782286 -212.09905446  867.6636
## 809   361.701266 -178.18889457  901.5914
## 810   460.690098  -79.26802690 1000.6482
## 811   108.839470 -431.16261500  648.8416
## 812    66.330868 -473.73031774  606.3921
## 813   465.825365  -74.13800108 1005.7887
## 814   308.374676 -231.50493871  848.2543
## 815   609.628272   69.44943779 1149.8071
## 816   410.293541 -129.62212446  950.2092
## 817   138.910855 -401.05642096  678.8781
## 818    75.182650 -464.86527332  615.2306
## 819   408.111438 -131.80275724  948.0256
## 820   100.604536 -439.40809230  640.6172
## 821   490.823168  -49.16812976 1030.8145
## 822    71.759138 -468.29385460  611.8121
## 823   341.846441 -198.03766000  881.7305
## 824    74.504116 -465.54480598  614.5530
## 825   578.408005   38.28721945 1118.5288
## 826   505.789465  -34.22047394 1045.7994
## 827   621.841880   81.63863777 1162.0451
## 828   193.555959 -346.36291472  733.4748
## 829   526.160901  -13.87672065 1066.1985
## 830    29.088614 -511.03387429  569.2111
## 831   328.900325 -210.98118881  868.7818
## 832   277.832944 -262.04885287  817.7147
## 833   337.867766 -202.01542569  877.7510
## 834    95.407584 -444.61192264  635.4271
## 835   174.911700 -365.02153405  714.8449
## 836   452.108187  -87.84155582  992.0579
## 837   283.268925 -256.61204536  823.1499
## 838   531.612304   -8.43317755 1071.6578
## 839   255.472170 -284.41502054  795.3594
## 840   338.276428 -201.60685205  878.1597
## 841   164.001185 -375.94148782  703.9439
## 842   210.442199 -329.46559422  750.3500
## 843   165.157777 -374.78385935  705.0994
## 844    51.372281 -488.71245815  591.4570
## 845   537.796214   -2.25841314 1077.8508
## 846   527.780130  -12.25980676 1067.8201
## 847   376.752380 -163.14406031  916.6488
## 848   327.913366 -211.96799393  867.7947
## 849   287.016282 -252.86422894  826.8968
## 850    17.854253 -522.28847347  557.9970
## 851   280.739845 -259.14148682  820.6212
## 852   405.327907 -134.58445684  945.2403
## 853   536.585648   -3.46716941 1076.6385
## 854   139.458308 -400.50838761  679.4250
## 855   259.211817 -280.67424831  799.0979
## 856   367.931440 -171.96114336  907.8240
## 857   199.084468 -340.83057678  738.9995
## 858   328.476241 -211.40520587  868.3577
## 859   192.777187 -347.14224169  732.6966
## 860   562.516435   22.42279656 1102.6101
## 861    80.742001 -459.29784989  620.7819
## 862   245.548613 -294.34199977  785.4392
## 863   -40.530498 -580.79142641  499.7304
## 864   199.909503 -340.00498669  739.8240
## 865   283.423137 -256.45781245  823.3041
## 866   348.130590 -191.75515568  888.0163
## 867   236.712252 -303.18193987  776.6064
## 868    51.881182 -488.20273289  591.9651
## 869   311.628555 -228.25118115  851.5083
## 870   137.160546 -402.80859683  677.1297
## 871   442.331132  -97.60963816  982.2719
## 872   383.167609 -156.73194997  923.0672
## 873    68.767421 -471.29006375  608.8249
## 874   228.531293 -311.36665932  768.4292
## 875   374.655094 -165.24038445  914.5506
## 876   524.749859  -15.28575932 1064.7855
## 877   231.923962 -307.97237857  771.8203
## 878   209.462951 -330.44543451  749.3713
## 879   568.021811   27.91895169 1108.1247
## 880    33.622453 -506.49209636  573.7370
## 881    92.570079 -447.45325624  632.5934
## 882   177.656678 -362.27430200  717.5877
## 883   184.056486 -355.86942630  723.9824
## 884   295.736984 -244.14280761  835.6168
## 885   571.360506   31.25195951 1111.4691
## 886   534.465230   -5.58444030 1074.5149
## 887   258.109199 -281.77718831  797.9956
## 888   227.359280 -312.53924621  767.2578
## 889   296.384675 -243.49508226  836.2644
## 890   426.670880 -113.25679586  966.5986
## 891   146.945312 -393.01364563  686.9043
## 892   297.888245 -241.99144452  837.7679
## 893   492.504081  -47.48923847 1032.4974
## 894   108.808627 -431.19349613  648.8108
## 895   279.058931 -260.82266269  818.9405
## 896   327.728312 -212.15302059  867.6096
## 897   395.813012 -144.09346755  935.7195
## 898   505.619832  -34.38988806 1045.6296
## 899   187.603367 -352.31984935  727.5266
## 900    70.085936 -469.96956244  610.1414
## 901   528.666850  -11.37436104 1068.7081
## 902   319.069295 -220.81097198  858.9496
## 903   416.901535 -123.01876918  956.8218
## 904   341.915837 -197.96828127  881.8000
## 905   355.926018 -183.96211915  895.8142
## 906   557.597065   17.51150194 1097.6826
## 907   568.060365   27.95743948 1108.1633
## 908   253.891495 -285.99619868  793.7792
## 909   270.893394 -268.98973384  810.7765
## 910   255.718910 -284.16820394  795.6060
## 911   506.306076  -33.70453209 1046.3167
## 912   480.814794  -59.16483943 1020.7944
## 913   304.735268 -235.14429310  844.6148
## 914   176.453823 -363.47813930  716.3858
## 915   638.226930   97.98944075 1178.4644
## 916   386.020535 -153.88049538  925.9216
## 917   465.385860  -74.57705073 1005.3488
## 918   550.634382   10.55998429 1090.7088
## 919   230.165943 -309.73122392  770.0631
## 920   477.136833  -62.83867619 1017.1123
## 921   256.443707 -283.44318242  796.3306
## 922   459.533506  -80.42346146  999.4905
## 923   208.969472 -330.93921463  748.8782
## 924   167.416986 -372.52264983  707.3566
## 925   541.875128    1.81433340 1081.9359
## 926    89.786548 -450.24059291  629.8137
## 927   499.852294  -40.15007788 1039.8547
## 928   473.119604  -66.85149853 1013.0907
## 929   474.484382  -65.48820562 1014.4570
## 930   429.022616 -110.90692532  968.9522
## 931   515.651337  -24.37167051 1055.6743
## 932   257.153084 -282.73359016  797.0398
## 933   402.444138 -137.46638089  942.3547
## 934    97.821006 -442.19528552  637.8373
## 935   480.915032  -59.06471512 1020.8948
## 936   155.257351 -384.69343680  695.2081
## 937   455.230985  -84.72175340  995.1837
## 938   422.383780 -117.54058561  962.3081
## 939   327.566389 -212.31491909  867.4477
## 940   368.548289 -171.34454788  908.4411
## 941   401.526575 -138.38336792  941.4365
## 942   333.950775 -205.93161986  873.8332
## 943   534.102831   -5.94630403 1074.1520
## 944   629.398280   89.17945710 1169.6171
## 945    16.574291 -523.57079211  556.7194
## 946   299.222181 -240.65746011  839.1018
## 947   348.369619 -191.51619426  888.2554
## 948   428.074211 -111.85457376  968.0030
## 949   208.298649 -331.61044948  748.2077
## 950   425.136468 -114.79000921  965.0629
## 951   116.935612 -423.05653052  656.9278
## 952   304.056734 -235.82282620  843.9363
## 953   241.300066 -298.59220510  781.1923
## 954   231.399641 -308.49694441  771.2962
## 955   257.145373 -282.74130310  797.0320
## 956    32.157437 -507.95966325  572.2745
## 957   362.379800 -177.51061255  902.2702
## 958   315.699758 -224.18022475  855.5797
## 959   356.882134 -183.00632352  896.7706
## 960   319.840356 -220.03998618  859.7207
## 961   446.371492  -93.57291147  986.3159
## 962   307.194953 -232.68463538  847.0745
## 963   217.936913 -321.96654796  757.8404
## 964   211.860951 -328.04599401  751.7679
## 965   288.581537 -251.29880967  828.4619
## 966   323.819032 -216.06176006  863.6998
## 967   618.379816   78.18358915 1158.5760
## 968   159.721795 -380.22478780  699.6684
## 969   168.396234 -371.54254530  708.3350
## 970   240.983931 -298.90846820  780.8763
## 971   551.019913   10.94490480 1091.0949
## 972   215.508070 -324.39675495  755.4129
## 973    22.819887 -517.31379452  562.9536
## 974   356.966951 -182.92153549  896.8554
## 975   522.907023  -17.12599845 1062.9400
## 976   547.133765    7.06486241 1087.2027
## 977   538.351378   -1.70408220 1078.4068
## 978   340.851773 -199.03209190  880.7356
## 979   176.939591 -362.99197312  716.8712
## 980   311.096522 -228.78318899  850.9762
## 981   262.334615 -277.55057945  802.2198
## 982   -60.878802 -601.18605829  479.4285
## 983   159.652400 -380.29424768  699.5990
## 984   392.751899 -147.15281091  932.6566
## 985   524.372039  -15.66304506 1064.4071
## 986   405.543804 -134.36869996  945.4563
## 987   535.220870   -4.82991864 1075.2717
## 988   485.788139  -54.19721077 1025.7735
## 989   516.090842  -23.93276260 1056.1144
## 990   174.132929 -365.80095420  714.0668
## 991   562.308248   22.21495495 1102.4015
## 992    93.510774 -446.51128666  633.5328
## 993   225.647525 -314.25185605  765.5469
## 994   398.581122 -141.32700985  938.4893
## 995   399.645186 -140.26359351  939.5540
## 996   170.154253 -369.78300301  710.0915
## 997   483.305322  -56.67715439 1023.2878
## 998   102.817482 -437.19227054  642.8272
## 999   309.107185 -230.77245182  848.9868
## 1000  256.991161 -282.89556202  796.8779
## 1001  503.283516  -36.72320127 1043.2902
## 1002  635.451110   95.21954338 1175.6827
## 1003  336.032640 -203.85016582  875.9154
## 1004   74.619775 -465.42897634  614.6685
## 1005  186.392801 -353.53132632  726.3169
## 1006  180.224312 -359.70460343  720.1532
## 1007  407.217007 -132.69659435  947.1306
## 1008  548.128434    8.05797772 1088.1989
## 1009   52.104789 -487.97876322  592.1883
## 1010  184.896942 -355.02832359  724.8222
## 1011  499.736635  -40.26559189 1039.7389
## 1012  280.901767 -258.97953964  820.7831
## 1013  134.253645 -405.71864159  674.2259
## 1014  164.209371 -375.73311406  704.1519
## 1015  196.154435 -343.76261430  736.0715
## 1016  359.742771 -180.14667972  899.6322
## 1017  448.507332  -91.43903530  988.4537
## 1018  319.285192 -220.59509557  859.1655
## 1019  150.692669 -389.26255040  690.6479
## 1020   57.240057 -482.83527225  597.3154
## 1021  171.210607 -368.72574371  711.1470
## 1022  120.929709 -419.05768373  660.9171
## 1023  399.005205 -140.90318363  938.9136
## 1024  160.438882 -379.50703744  700.3848
## 1025   35.380473 -504.73103425  575.4920
## 1026  335.901560 -203.98121951  875.7843
## 1027  122.525805 -417.45971760  662.5113
## 1028   17.592092 -522.55111619  557.7353
## 1029  149.713422 -390.24276618  689.6696
## 1030  428.398057 -111.53098584  968.3271
## 1031  476.373482  -63.60118149 1016.3481
## 1032  608.702998   68.52597460 1148.8800
## 1033  431.320378 -108.61102052  971.2518
## 1034  141.100668 -398.86429910  681.0656
## 1035  515.350624  -24.67197664 1055.3732
## 1036  118.084493 -421.90627260  658.0753
## 1037  189.507888 -350.41391418  729.4297
## 1038  259.589637 -280.29631961  799.4756
## 1039  187.904081 -352.01891067  727.8271
## 1040  269.459220 -270.42422112  809.3427
## 1041  373.375132 -166.51977261  913.2700
## 1042  202.338346 -337.57453653  742.2512
## 1043  -36.459295 -576.71127280  503.7927
## 1044  488.270956  -51.71730670 1028.2592
## 1045  169.414034 -370.52386050  709.3519
## 1046  157.385480 -382.56328765  697.3342
## 1047  160.600805 -379.34496524  700.5466
## 1048  495.642300  -44.35484314 1035.6394
## 1049  173.022600 -366.91221341  712.9574
## 1050  244.985739 -294.90508746  784.8766
## 1051  448.507332  -91.43903530  988.4537
## 1052  123.427947 -416.55652657  663.4124
## 1053  434.427755 -105.50620986  974.3617
## 1054  101.799681 -438.21139023  641.8108
## 1055  110.597489 -429.40240092  650.5974
## 1056  445.978251  -93.96579439  985.9223
## 1057  229.780412 -310.11693827  769.6778
## 1058  312.708040 -227.17175052  852.5878
## 1059  458.561969  -81.39403313  998.5180
## 1060  422.915812 -117.00895781  962.8406
## 1061  386.213301 -153.68783141  926.1144
## 1062  404.340948 -135.57077778  944.2527
## 1063  225.485602 -314.41386066  765.3851
## 1064  178.142447 -361.78813956  718.0730
## 1065  406.885450 -133.02793182  946.7988
## 1066   31.640826 -508.47717697  571.7588
## 1067  545.691880    5.62521887 1085.7585
## 1068  396.476125 -143.43074619  936.3830
## 1069   73.617396 -466.43283607  613.6676
## 1070  418.428236 -121.49317969  958.3497
## 1071  155.257351 -384.69343680  695.2081
## 1072  446.880393  -93.06447622  986.8253
## 1073  363.698315 -176.19259570  903.5892
## 1074  207.920829 -331.98850256  747.8302
## 1075  261.031521 -278.85402872  800.9171
## 1076  582.849318   42.72065515 1122.9780
## 1077  573.781638   33.66892279 1113.8944
## 1078  109.109341 -430.89240541  649.1111
## 1079  287.278443 -252.60203939  827.1589
## 1080  217.882939 -322.02055215  757.7864
## 1081  412.807200 -127.11019666  952.7246
## 1082  184.735020 -355.19037055  724.6604
## 1083  514.294270  -25.72690277 1054.3154
## 1084  213.757762 -326.14807044  753.6636
## 1085  482.595946  -57.38571698 1022.5776
## 1086  319.809513 -220.07082554  859.6899
## 1087   87.951423 -452.07825480  627.9811
## 1088  552.878170   12.80020831 1092.9561
## 1089  239.179648 -300.71349429  779.0728
## 1090  454.421371  -85.53058506  994.3733
## 1091  563.549657   23.45430267 1103.6450
## 1092  203.818783 -336.09313787  743.7307
## 1093  451.923133  -88.02643496  991.8727
## 1094  199.099889 -340.81514515  739.0149
## 1095  342.964480 -196.91989529  882.8489
## 1096  378.348477 -161.54871491  918.2457
## 1097  516.969852  -23.05495049 1056.9947
## 1098  525.505499  -14.53119057 1065.5422
## 1099  114.375689 -425.61955177  654.3709
## 1100  339.409888 -200.47364398  879.2934
## 1101  548.012774    7.94249952 1088.0830
## 1102  319.632169 -220.24815197  859.5125
## 1103  198.560146 -341.35525313  738.4755
## 1104  311.744214 -228.13552751  851.6240
## 1105  133.135607 -406.83790401  673.1091
## 1106  487.993374  -51.99456109 1027.9813
## 1107  293.878727 -246.00117741  833.7586
## 1108   19.727931 -520.41136331  559.8672
## 1109  406.399682 -133.51338102  946.3127
## 1110  414.241374 -125.67702903  954.1598
## 1111  493.606699  -46.38795723 1033.6014
## 1112  531.581461   -8.46397499 1071.6269
## 1113  321.606086 -218.27444305  861.4866
## 1114  663.270997  122.97783872 1203.5642
## 1115   27.083855 -513.04218546  567.2099
## 1116  455.408329  -84.54458132  995.3612
## 1117  160.477435 -379.46844881  700.4233
## 1118  181.242112 -358.68599588  721.1702
## 1119   76.161898 -463.88458935  616.2084
## 1120  264.231425 -275.65327040  804.1161
## 1121  445.746933  -94.19690245  985.6908
## 1122  145.333794 -394.62679864  685.2944
## 1123  302.853879 -237.02568760  842.7334
## 1124  275.805053 -264.07710056  815.6872
## 1125  261.987637 -277.89765067  801.8729
## 1126  206.610025 -333.30012240  746.5202
## 1127  567.512911   27.41091188 1107.6149
## 1128  263.506628 -276.37825569  803.3915
## 1129   29.489566 -510.63221515  569.6113
## 1130  395.103636 -144.80242842  935.0097
## 1131  421.188635 -118.73482859  961.1121
## 1132  101.576073 -438.43528863  641.5874
## 1133  230.829056 -309.06779747  770.7259
## 1134  561.714531   21.62221993 1101.8068
## 1135  463.766632  -76.19461273 1003.7279
## 1136  284.618282 -255.26251260  824.4991
## 1137  185.220788 -354.70423018  725.1458
## 1138  562.408486   22.31502687 1102.5019
## 1139  -13.705281 -553.90918767  526.4986
## 1140  284.687678 -255.19310837  824.5685
## 1141  334.428833 -205.45365388  874.3113
## 1142  188.127689 -351.79513613  728.0505
## 1143   65.737151 -474.32494236  605.7992
## 1144  159.320844 -380.62611201  699.2678
## 1145  389.605970 -150.29698464  929.5089
## 1146   65.528964 -474.53344763  605.5914
## 1147  226.734721 -313.16411519  766.6336
## 1148  321.482716 -218.39779913  861.3632
## 1149  346.881471 -193.00392776  886.7669
## 1150  106.557129 -433.44783480  646.5621
## 1151  345.100320 -194.78460158  884.9852
## 1152  427.056410 -112.87156875  966.9844
## 1153  -40.530498 -580.79142641  499.7304
## 1154  542.738716    2.67660253 1082.8008
## 1155  319.531931 -220.34838004  859.4122
## 1156   79.685647 -460.35572231  619.7270
## 1157  256.705868 -283.18094143  796.5927
## 1158  338.947251 -200.93617689  878.8307
## 1159  513.939582  -26.08111315 1053.9603
## 1160  343.488802 -196.39570495  883.3733
## 1161  243.798304 -296.09297776  783.6896
## 1162  321.482716 -218.39779913  861.3632
## 1163  361.146102 -178.74385479  901.0361
## 1164  523.770612  -16.26362426 1063.8048
## 1165  212.716829 -327.18961101  752.6233
## 1166  385.172368 -154.72821967  925.0730
## 1167  279.344224 -260.53732423  819.2258
## 1168  173.994138 -365.93986117  713.9281
## 1169  496.451915  -43.54622560 1036.4501
## 1170  531.265326   -8.77964915 1071.3103
## 1171   12.834645 -527.31738566  552.9867
## 1172   56.854526 -483.22141435  596.9305
## 1173  473.875244  -66.09667951 1013.8472
## 1174  416.138184 -123.78156953  956.0579
## 1175   84.566464 -455.46794831  624.6009
## 1176  266.760506 -273.12356094  806.6446
## 1177  159.513609 -380.43316755  699.4604
## 1178  320.989237 -218.89122440  860.8697
## 1179  121.469451 -418.51730688  661.4562
## 1180  600.514329   60.35308617 1140.6756
## 1181  272.289014 -267.59382072  812.1718
## 1182  234.275699 -305.61956823  774.1710
## 1183  325.407418 -214.47358189  865.2884
## 1184   17.730883 -522.41206999  557.8738
## 1185  109.471740 -430.52955327  649.4730
## 1186   73.794740 -466.25522965  613.8447
## 1187  243.937095 -295.95413298  783.8283
## 1188  379.697834 -160.20000570  919.5957
## 1189  144.501048 -395.46039621  684.4625
## 1190  255.510723 -284.37645542  795.3979
## 1191  507.532063  -32.48013961 1047.5443
## 1192  421.096107 -118.82728650  961.0195
## 1193  351.947343 -187.93952526  891.8342
## 1194  382.064992 -157.83401264  921.9640
## 1195  238.138715 -301.75486501  778.0323
## 1196  393.893070 -146.01229301  933.7984
## 1197  263.198203 -276.68676108  803.0832
## 1198  442.084392  -97.85615922  982.0249
## 1199  503.645915  -36.36126590 1043.6531
## 1200  357.984752 -181.90408263  897.8736
## 1201  324.250826 -215.63002071  864.1317
## 1202  349.726687 -190.15951704  889.6129
## 1203  298.057878 -241.82180425  837.9376
## 1204   19.512034 -520.62765469  559.6517
## 1205  415.444229 -124.47502765  955.3635
## 1206  294.611235 -245.26862235  834.4911
## 1207  554.096447   14.01653635 1094.1764
## 1208   43.137348 -496.96097048  583.2357
## 1209  213.541864 -326.36409310  753.4478
## 1210  181.666196 -358.26157803  721.5940
## 1211  227.127962 -312.77067887  767.0266
## 1212  408.597206 -131.31731337  948.5117
## 1213  495.696275  -44.30093517 1035.6935
## 1214  479.303514  -60.67441384 1019.2814
## 1215  338.993515 -200.88992354  878.8770
## 1216  226.719300 -313.17954408  766.6181
## 1217  376.297454 -163.59877528  916.1937
## 1218  160.940072 -379.00538593  700.8855
## 1219  431.220140 -108.71117673  971.1515
## 1220  166.707610 -373.23265066  706.6479
## 1221  -29.427218 -569.66398484  510.8095
## 1222  103.873836 -436.13455486  643.8822
## 1223  497.647059  -42.35255979 1037.6467
## 1224  211.691318 -328.21572814  751.5984
## 1225  159.467345 -380.47947420  699.4142
## 1226  480.182524  -59.79639429 1020.1614
## 1227  374.177036 -165.71822699  914.0723
## 1228   75.267467 -464.78033195  615.3153
## 1229  323.641687 -216.23908193  863.5225
## 1230  198.128352 -341.78734086  738.0440
## 1231  244.152992 -295.73815244  784.0441
## 1232  196.162146 -343.75489834  736.0792
## 1233  225.377653 -314.52186382  765.2772
## 1234  120.829471 -419.15803964  660.8170
## 1235  189.978235 -349.94322123  729.8997
## 1236  400.686119 -139.22330195  940.5955
## 1237  327.643495 -212.23782454  867.5248
## 1238  556.317103   16.23361615 1096.4006
## 1239  122.865072 -417.12005540  662.8502
## 1240  242.549185 -297.34258642  782.4410
## 1241   99.856607 -440.15700083  639.8702
## 1242  357.044057 -182.84445549  896.9326
## 1243  492.457818  -47.53544624 1032.4511
## 1244  410.540280 -129.37555306  950.4561
## 1245  115.092776 -424.90159278  655.0871
## 1246  -85.020727 -625.38638736  455.3449
## 1247  -40.530498 -580.79142641  499.7304
## 1248  214.081607 -325.82403702  753.9873
## 1249   59.144578 -480.92774426  599.2169
## 1250  403.646993 -136.26428843  943.5583
## 1251  441.143698  -98.79602432  981.0834
## 1252  421.589587 -118.33417831  961.5134
## 1253  501.263336  -38.74081386 1041.2675
## 1254  477.745971  -62.23021505 1017.7222
## 1255  426.871356 -113.05647764  966.7992
## 1256  326.941829 -212.93938633  866.8230
## 1257  387.192548 -152.70910214  927.0942
## 1258  473.690189  -66.28153281 1013.6619
## 1259  205.098745 -334.81235661  745.0098
## 1260  492.681426  -47.31210879 1032.6750
## 1261  178.142447 -361.78813956  718.0730
## 1262  600.892149   60.73018747 1141.0541
## 1263  467.984337  -71.98128400 1007.9500
## 1264  144.169492 -395.79229277  684.1313
## 1265  265.110435 -274.77403746  804.9949
## 1266  548.012774    7.94249952 1088.0830
## 1267  313.216941 -226.66287868  853.0968
## 1268   53.199696 -486.88208880  593.2815
## 1269  253.081881 -286.80607663  792.9698
## 1270  560.781547   20.69077463 1100.8723
## 1271  333.094897 -206.78733682  872.9771
## 1272  396.591784 -143.31515554  936.4987
## 1273  200.873330 -339.04051781  740.7872
## 1274  342.555818 -197.32845664  882.4401
## 1275   84.751519 -455.28263287  624.7857
## 1276  412.876595 -127.04084953  952.7940
## 1277  189.770049 -350.15156056  729.6917
## 1278  216.232868 -323.67154636  756.1373
## 1279  455.624226  -84.32889383  995.5773
## 1280  257.476929 -282.40964694  797.3635
## 1281  508.364810  -31.64848229 1048.3781
## 1282  280.369735 -259.51165243  820.2511
## 1283  191.813361 -348.10676064  731.7335
## 1284  208.267806 -331.64131092  748.1769
## 1285  109.803296 -430.19758290  649.8042
## 1286  163.692760 -376.25019020  703.6357
## 1287  341.846441 -198.03766000  881.7305
## 1288  262.735566 -277.14952033  802.6207
## 1289  542.784980    2.72279538 1082.8472
## 1290  306.686053 -233.19352689  846.5656
## 1291   23.151443 -516.98163990  563.2845
## 1292   77.472702 -462.57187240  617.5173
## 1293  233.581744 -306.31383644  773.4773
## 1294  233.173082 -306.72268472  773.0688
## 1295  278.827613 -261.05401859  818.7092
## 1296  364.531061 -175.36016976  904.4223
## 1297  164.132265 -375.81028950  704.0748
## 1298  347.398082 -192.48745908  887.2836
## 1299  507.454957  -32.55714514 1047.4671
## 1300  -40.530498 -580.79142641  499.7304
## 1301 1117.857814  575.85765975 1659.8580
## 1302  629.398280   89.17945710 1169.6171
## 1303   80.125152 -459.91558474  620.1659
## 1304  242.965558 -296.92604909  782.8572
## 1305  453.920181  -86.03129248  993.8717
## 1306  371.169897 -168.72404436  911.0638
## 1307  288.712617 -251.16771616  828.5930
## 1308  526.592695  -13.44554196 1066.6309
## 1309  404.132762 -135.77883065  944.0444
## 1310  363.258810 -176.63193341  903.1496
## 1311  408.188544 -131.72570255  948.1028
## 1312  401.727051 -138.18301735  941.6371
## 1313  249.720054 -290.16904338  789.6092
## 1314  478.432215  -61.54473636 1018.4092
## 1315  357.028636 -182.85987149  896.9171
## 1316  111.661553 -428.33701781  651.6601
## 1317  264.108055 -275.77667192  803.9928
## 1318  257.052846 -282.83385844  796.9395
## 1319  212.539485 -327.36705935  752.4460
## 1320  188.744538 -351.17782872  728.6669
## 1321  532.699500   -7.34757152 1072.7466
## 1322  261.663791 -278.22158452  801.5492
## 1323  498.302461  -41.69797274 1038.3029
## 1324  192.900557 -347.01878369  732.8199
## 1325   43.461194 -496.63658257  583.5590
## 1326  463.188336  -76.77231753 1003.1490
## 1327   92.176838 -447.84703209  632.2007
## 1328  252.495874 -287.39227662  792.3840
## 1329  -47.778473 -588.05559901  492.4987
## 1330  453.750548  -86.20076304  993.7019
## 1331  111.707817 -428.29069697  651.7063
## 1332  277.547651 -262.33419410  817.4295
## 1333  452.439744  -87.51031457  992.3898
## 1334  602.087294   61.92305289 1142.2515
## 1335  580.921665   40.79643644 1121.0469
## 1336  302.190766 -237.68880748  842.0703
## 1337  455.670490  -84.28267512  995.6237
## 1338  178.265816 -361.66466998  718.1963
## 1339  210.442199 -329.46559422  750.3500
## 1340  207.442771 -332.46685675  747.3524
## 1341  288.149742 -251.73064790  828.0301
## 1342  235.224104 -304.67074000  775.1189
## 1343  386.213301 -153.68783141  926.1144
## 1344   47.594082 -492.49683398  587.6850
## 1345   89.524387 -450.50311472  629.5519
## 1346  158.010040 -381.93814069  697.9582
## 1347  108.955129 -431.04681084  648.9571
## 1348  288.327086 -251.55328563  828.2075
## 1349  380.168181 -159.72988695  920.0662
## 1350  562.408486   22.31502687 1102.5019
## 1351  491.825548  -48.16695387 1031.8180
## 1352  445.353692  -94.58978695  985.2972
## 1353   42.181232 -497.91869109  582.2812
## 1354  434.743890 -105.19033930  974.6781
## 1355  434.512572 -105.42146404  974.4466
## 1356  438.506668 -101.43075841  978.4441
## 1357  195.691799 -344.22557263  735.6092
## 1358  380.923821 -158.97461718  920.8223
## 1359  523.847718  -16.18662680 1063.8821
## 1360  158.526651 -381.42104572  698.4743
## 1361  353.127066 -186.76016750  893.0143
## 1362   34.694228 -505.41846403  574.8069
## 1363  310.564490 -229.31519865  850.4442
## 1364  304.156972 -235.72258817  844.0365
## 1365  361.200077 -178.68990024  901.0901
## 1366  481.123219  -58.85676482 1021.1032
## 1367  264.231425 -275.65327040  804.1161
## 1368  194.419548 -345.49871511  734.3378
## 1369  220.358045 -319.54409360  760.2602
## 1370  420.309625 -119.61318090  960.2324
## 1371  343.750963 -196.13361045  883.6355
## 1372  291.203144 -248.67696042  831.0832
## 1373  177.610414 -362.32060326  717.5414
## 1374  291.881678 -247.99837133  831.7617
## 1375  335.300132 -204.58252611  875.1828
## 1376  278.719664 -261.16198479  818.6013
## 1377  335.307843 -204.57481703  875.1905
## 1378   66.300025 -473.76120727  606.3613
## 1379  344.383233 -195.50150198  884.2680
## 1380          NA            NA        NA
## 1381  259.335187 -280.55084292  799.2212
## 1382  320.649970 -219.23045519  860.5304
## 1383          NA            NA        NA
## 1384          NA            NA        NA
## 1385   62.753144 -477.31354448  602.8198
## 1386  613.668632   73.48182945 1153.8554
## 1387          NA            NA        NA
## 1388  109.109341 -430.89240541  649.1111
## 1389  248.339855 -291.54973192  788.2294
## 1390  483.845065  -56.13803285 1023.8282
## 1391  316.170105 -223.70991278  856.0501
## 1392   76.532007 -463.51393874  616.5780
## 1393  201.482468 -338.43097655  741.3959
## 1394  222.848573 -317.05224509  762.7494
## 1395  131.346745 -408.62874057  671.3222
## 1396  394.463655 -145.44203719  934.3693
## 1397  210.033536 -329.87450320  749.9416
## 1398  107.968170 -432.03500916  647.9714
## 1399  393.893070 -146.01229301  933.7984
## 1400  295.181820 -244.69800290  835.0616
## 1401  368.471183 -171.42162218  908.3640
## 1402  408.111438 -131.80275724  948.0256
## 1403  192.453342 -347.46631939  732.3730
## 1404  185.883901 -354.04061244  725.8084
## 1405  244.846948 -295.04393132  784.7378
## 1406  186.523881 -353.40014683  726.4479
## 1407  266.752795 -273.13127340  806.6369
## 1408  418.921715 -121.00006306  958.8435
## 1409  341.491753 -198.39226289  881.3758
## 1410  186.600988 -353.32298248  726.5250
## 1411  436.671543 -103.26431315  976.6074
## 1412  519.522065  -20.50624340 1059.5504
## 1413  234.291120 -305.60414008  774.1864
## 1414  523.030393  -17.00280184 1063.0636
## 1415  166.977481 -372.96254127  706.9175
## 1416  345.285374 -194.59959556  885.1703
## 1417   76.161898 -463.88458935  616.2084
## 1418  297.309949 -242.56976501  837.1897
## 1419  179.422408 -360.50714739  719.3520
## 1420   91.621674 -448.40295263  631.6463
## 1421  168.257443 -371.68145738  708.1963
## 1422  408.257939 -131.65635337  948.1722
## 1423  393.654041 -146.25118458  933.5593
## 1424  319.030742 -220.84952138  858.9110
## 1425   45.751245 -494.34271581  585.8452
## 1426  118.801580 -421.18833067  658.7915
## 1427  168.396234 -371.54254530  708.3350
## 1428  235.270368 -304.62445585  775.1652
## 1429  200.356719 -339.55747239  740.2709
## 1430  147.662399 -392.29583648  687.6206
## 1431  110.597489 -429.40240092  650.5974
## 1432  141.925704 -398.03840201  681.8898
## 1433  615.125938   74.93623513 1155.3156
## 1434  170.377861 -369.55920299  710.3149
## 1435  447.890483  -92.05531422  987.8363
## 1436  141.331987 -398.63273873  681.2967
## 1437  368.471183 -171.42162218  908.3640
## 1438   59.638057 -480.43348979  599.7096
## 1439  229.518252 -310.37922458  769.4157
## 1440  209.462951 -330.44543451  749.3713
## 1441  159.189763 -380.75731439  699.1368
## 1442  182.367862 -357.55936195  722.2951
## 1443   68.536103 -471.52173180  608.5939
## 1444  506.360051  -33.65062781 1046.3707
## 1445  538.975938   -1.08046225 1079.0323
## 1446  301.635602 -238.24397977  841.5152
## 1447  503.383754  -36.62309140 1043.3906
## 1448  309.161159 -230.71847923  849.0408
## 1449  441.675730  -98.26446058  981.6159
## 1450  436.764070 -103.17186449  976.7000
## 1451  256.736711 -283.15008958  796.6235
## 1452  498.001748  -41.99831234 1038.0018
## 1453  471.392427  -68.57681289 1011.3617
## 1454  212.408405 -327.49821695  752.3150
## 1455  153.985100 -385.96690942  693.9371
## 1456  431.320378 -108.61102052  971.2518
## 1457  235.509397 -304.38532126  775.4041
## 1458  104.351894 -435.65588296  644.3597
## 1459  624.818177   84.60884089 1165.0275
## 1460  197.804506 -342.11140745  737.7204
## 1461  401.796447 -138.11366529  941.7066
## 1462  348.523831 -191.36202580  888.4097
## 1463  256.443707 -283.44318242  796.3306
## 1464   29.104035 -511.01842585  569.2265
## 1465  118.092203 -421.89855277  658.0830
## 1466  283.130134 -256.75085511  823.0111
## 1467  292.760688 -247.11929440  832.6407
## 1468  548.128434    8.05797772 1088.1989
## 1469  218.893029 -321.00990544  758.7960
## 1470  421.481638 -118.44204559  961.4053
## 1471   80.233101 -459.80748097  620.2737
## 1472  166.730741 -373.20949841  706.6710
## 1473  169.228980 -370.70907543  709.1670
## 1474  633.153348   92.92664655 1173.3800
## 1475  403.970839 -135.94064974  943.8823
## 1476  209.277896 -330.63060187  749.1864
## 1477  401.727051 -138.18301735  941.6371
## 1478  363.443865 -176.44694896  903.3347
## 1479  217.929202 -321.97426284  757.8327
## 1480  341.699940 -198.18412631  881.5840
## 1481  367.931440 -171.96114336  907.8240
## 1482  385.920297 -153.98068074  925.8213
## 1483   51.333728 -488.75107377  591.4185
## 1484   48.966570 -491.12209095  589.0552
## 1485  483.667721  -56.31517258 1023.6506
## 1486  444.305048  -95.63748379  984.2476
## 1487  514.008977  -26.01181106 1054.0298
## 1488  395.227006 -144.67913064  935.1331
## 1489  495.341587  -44.65518787 1035.3384
## 1490  286.044745 -253.83587639  825.9254
## 1491  368.787318 -171.10561779  908.6803
## 1492  232.216966 -307.67923961  772.1132
## 1493  577.698629   37.57908953 1117.8182
## 1494  347.829876 -192.05578508  887.7155
## 1495  177.409938 -362.52124223  717.3411
## 1496  406.623289 -133.28992009  946.5365
## 1497  155.719988 -384.23035843  695.6703
## 1498  313.186098 -226.69371935  853.0659
## 1499  454.537030  -85.41503742  994.4891
## 1500  429.716571 -110.21352768  969.6467
## 1501  312.253114 -227.62665252  852.1329
## 1502  141.925704 -398.03840201  681.8898
## 1503  225.593550 -314.30585757  765.4930
## 1504  318.845687 -221.03455858  858.7259
## 1505  284.602861 -255.27793577  824.4837
## 1506  388.996831 -150.90579032  928.8995
## 1507  342.193419 -197.69076665  882.0776
## 1508  262.280640 -277.60456825  802.1658
## 1509  510.246199  -29.76956918 1050.2620
## 1510  317.835597 -222.04455722  857.7158
## 1511  551.019913   10.94490480 1091.0949
## 1512  257.083688 -282.80300665  796.9704
## 1513  468.662870  -71.30346480 1008.6292
## 1514  514.857145  -25.16478796 1054.8791
## 1515   63.416257 -476.64940574  603.4819
## 1516  300.787435 -239.09216349  840.6670
## 1517  331.575907 -208.30605326  871.4579
## 1518  156.390811 -383.55889722  696.3405
## 1519  193.000795 -346.91847414  732.9201
## 1520  111.692396 -428.30613725  651.6909
## 1521  573.912719   33.79977642 1114.0257
## 1522  440.842984  -99.09647420  980.7824
## 1523  192.306840 -347.61292619  732.2266
## 1524  190.024499 -349.89692363  729.9459
## 1525  -71.357524 -611.68967120  468.9746
## 1526  353.458623 -186.42871562  893.3460
## 1527  534.156805   -5.89240938 1074.2060
## 1528  118.207863 -421.78275547  658.1985
## 1529  472.256015  -67.71415332 1012.2262
## 1530   53.847388 -486.23335544  593.9281
## 1531  341.422358 -198.46164181  881.3064
## 1532  310.942310 -228.93739450  850.8220
## 1533  435.854218 -104.08094532  975.7894
## 1534  257.083688 -282.80300665  796.9704
## 1535   81.536194 -458.50251987  621.5749
## 1536   81.536194 -458.50251987  621.5749
## 1537  -26.998375 -567.22996228  513.2332
## 1538  424.311432 -115.61440656  964.2373
## 1539  456.564921  -83.38911614  996.5190
## 1540  358.377993 -181.51097762  898.2670
## 1541  147.824322 -392.13375100  687.7824
## 1542  479.018222  -60.95938617 1018.9958
## 1543  409.144659 -130.77022766  949.0595
## 1544  298.050168 -241.82951517  837.9299
## 1545  302.460637 -237.41893277  842.3402
## 1546  228.461898 -311.43608856  768.3599
## 1547  135.965401 -404.00502777  675.9358
## 1548  140.537794 -399.42776411  680.5034
## 1549  410.794730 -129.12127672  950.7107
## 1550  189.122358 -350.79972914  729.0444
## 1551  345.231400 -194.65355562  885.1164
## 1552  493.814885  -46.18002389 1033.8098
## 1553  394.679552 -145.22626526  934.5854
## 1554  488.270956  -51.71730670 1028.2592
## 1555  421.682114 -118.24172070  961.6059
## 1556  187.348917 -352.57449023  727.2723
## 1557  265.388017 -274.49638598  805.2724
## 1558  147.292290 -392.66631821  687.2509
## 1559  111.484209 -428.51458116  651.4830
## 1560  442.762926  -97.17822726  982.7041
## 1561  209.462951 -330.44543451  749.3713
## 1562  284.710810 -255.16997364  824.5916
## 1563   91.667938 -448.35662584  631.6925
## 1564  517.447910  -22.57754598 1057.4734
## 1565  243.389642 -296.50179925  783.2811
## 1566  271.425426 -268.45758869  811.3084
## 1567  394.903160 -145.00278751  934.8091
## 1568  482.364627  -57.61677069 1022.3460
## 1569  329.709939 -210.17170491  869.5916
## 1570  482.117888  -57.86322837 1022.0990
## 1571  540.078555    0.02049032 1080.1366
## 1572  202.338346 -337.57453653  742.2512
## 1573  600.514329   60.35308617 1140.6756
## 1574  111.067836 -428.93146981  651.0671
## 1575  225.593550 -314.30585757  765.4930
## 1576  196.192988 -343.72403450  736.1100
## 1577  250.182691 -289.70624548  790.0716
## 1578  530.625345   -9.41869880 1070.6694
## 1579  171.010131 -368.92639091  710.9467
## 1580  367.993125 -171.89948370  907.8857
## 1581  168.681526 -371.25700420  708.6201
## 1582  503.784706  -36.22265258 1043.7921
## 1583  537.456947   -2.59717191 1077.5111
## 1584  255.580119 -284.30703823  795.4673
## 1585  528.982985  -11.05868161 1069.0247
## 1586  178.142447 -361.78813956  718.0730
## 1587  213.472469 -326.43352902  753.3785
## 1588  375.703737 -164.19221885  915.5997
## 1589  171.264581 -368.67172335  711.2009
## 1590  486.058010  -53.92765407 1026.0437
## 1591  144.501048 -395.46039621  684.4625
## 1592  474.291617  -65.68076039 1014.2640
## 1593    7.460348 -532.70182243  547.6225
## 1594  249.720054 -290.16904338  789.6092
## 1595  306.979056 -232.90052854  846.8586
## 1596  275.080256 -264.80203200  814.9625
## 1597   33.830640 -506.28354850  573.9448
## 1598  180.054678 -359.87437200  719.9837
## 1599  491.077618  -48.91398450 1031.0692
## 1600  184.334068 -355.59163041  724.2598
## 1601  316.802375 -223.07769236  856.6824
## 1602  597.337557   57.18232073 1137.4928
## 1603  446.302097  -93.64224368  986.2464
## 1604  244.854658 -295.03621776  784.7455
## 1605  110.720859 -429.27887787  650.7206
## 1606  318.568105 -221.31211481  858.4483
## 1607  455.685911  -84.26726889  995.6391
## 1608  296.808759 -243.07097784  836.6885
## 1609  367.607595 -172.28485696  907.5000
## 1610  406.885450 -133.02793182  946.7988
## 1611  431.011954 -108.91919369  970.9431
## 1612   -2.802476 -542.98452515  537.3796
## 1613  399.043758 -140.86465403  938.9522
## 1614  163.453731 -376.48943496  703.3969
## 1615  143.390720 -396.57186654  683.3533
## 1616  329.069958 -210.81158231  868.9515
## 1617  120.305149 -419.68297928  660.2933
## 1618  341.915837 -197.96828127  881.8000
## 1619  434.743890 -105.19033930  974.6781
## 1620  310.094143 -229.78552755  849.9738
## 1621  300.409615 -239.46999227  840.2892
## 1622   46.545438 -493.54720758  586.6381
## 1623  415.660126 -124.25928479  955.5795
## 1624  292.290341 -247.58967706  832.1704
## 1625  321.205134 -218.67535065  861.0856
## 1626  322.246067 -217.63453499  862.1267
## 1627  264.894538 -274.98998895  804.7791
## 1628  217.798122 -322.10541591  757.7017
## 1629   51.565047 -488.51938020  591.6495
## 1630  181.542826 -358.38504493  721.4707
## 1631  464.969487  -74.99299363 1004.9320
## 1632  231.122059 -308.77465645  771.0188
## 1633  309.176580 -230.70305850  849.0562
## 1634   77.249094 -462.79580568  617.2940
## 1635  261.578975 -278.30642444  801.4644
## 1636  362.896411 -176.99419526  902.7870
## 1637  287.185916 -252.69457683  827.0664
## 1638  439.493627 -100.44465388  979.4319
## 1639  241.508253 -298.38393462  781.4004
## 1640  137.276205 -402.69281368  677.2452
## 1641  178.635926 -361.29426182  718.5661
## 1642  396.198543 -143.70816409  936.1052
## 1643  336.410460 -203.47242344  876.2933
## 1644   91.274696 -448.75040397  631.2998
## 1645  485.903798  -54.08168641 1025.8893
## 1646  204.111786 -335.79994605  744.0235
## 1647  352.664430 -187.22265967  892.5515
## 1648  354.129446 -185.75810584  894.0170
## 1649  342.193419 -197.69076665  882.0776
## 1650  337.682711 -202.20044052  877.5659
## 1651   74.727724 -465.32086876  614.7763
## 1652  534.018014   -6.03099567 1074.0670
## 1653  165.443069 -374.49831231  705.3845
## 1654 1113.331685  571.35501293 1655.3084
## 1655   97.165604 -442.85155708  637.1828
## 1656  175.705893 -364.22668385  715.6385
## 1657  184.110460 -355.81541039  724.0363
## 1658  384.863944 -155.03648419  924.7644
## 1659  289.745839 -250.13439471  829.6261
## 1660  457.312850  -82.64191989  997.2676
## 1661  292.791530 -247.08844969  832.6715
## 1662  170.863629 -369.07301787  710.8003
## 1663  401.996923 -137.91331507  941.9072
## 1664  237.838002 -302.05570673  777.7317
## 1665  163.769867 -376.17301454  703.7127
## 1666  221.422109 -318.47945996  761.3237
## 1667  389.305256 -150.59753398  929.2080
## 1668  184.866100 -355.05918967  724.7914
## 1669  434.319806 -105.61406825  974.2537
## 1670  501.263336  -38.74081386 1041.2675
## 1671  194.095702 -345.82278941  734.0142
## 1672  569.455985   29.35069129 1109.5613
## 1673  519.576039  -20.45234370 1059.6044
## 1674  461.700188  -78.25895440 1001.6593
## 1675  433.795485 -106.13795291  973.7289
## 1676   57.340295 -482.73487546  597.4155
## 1677  114.244608 -425.75079194  654.2400
## 1678   23.945636 -516.18601661  564.0773
## 1679  283.654456 -256.22646338  823.5354
## 1680  157.848117 -382.10021559  697.7964
## 1681  444.775396  -95.16756007  984.7184
## 1682  196.432017 -343.48483996  736.3489
## 1683   75.545049 -464.50234232  615.5924
## 1684   83.116869 -456.91959351  623.1533
## 1685  282.644366 -257.23669020  822.5254
## 1686  227.266753 -312.63181923  767.1653
## 1687  509.151292  -30.86303224 1049.1656
## 1688  337.551631 -202.33149283  877.4348
## 1689  351.554101 -188.33264649  891.4408
## 1690  527.872657  -12.16741219 1067.9127
## 1691  280.153838 -259.72758277  820.0353
## 1692  378.055474 -161.84157902  917.9525
## 1693   41.734017 -498.36665920  581.8347
## 1694   89.285359 -450.74247322  629.3132
## 1695   42.142679 -497.95730898  582.2427
## 1696  382.280889 -157.61822353  922.1800
## 1697  225.740052 -314.15928206  765.6394
## 1698  569.224667   29.11976644 1109.3296
## 1699  221.144527 -318.75718977  761.0462
## 1700  469.950543  -70.01715696 1009.9182
## 1701  372.480701 -167.41380914  912.3752
## 1702  198.128352 -341.78734086  738.0440
## 1703   43.191322 -496.90690578  583.2896
## 1704  325.816080 -214.06497557  865.6971
## 1705  -23.397519 -563.62149679  516.8265
## 1706  195.992512 -343.92464956  735.9097
## 1707  353.913549 -185.97393396  893.8010
## 1708  303.493859 -236.38570250  843.3734
## 1709  401.387784 -138.52207231  941.2976
## 1710  319.724697 -220.15563380  859.6050
## 1711  545.568510    5.50204020 1085.6350
## 1712  499.366526  -40.63523730 1039.3683
## 1713  218.962424 -320.94047193  758.8653
## 1714  521.557666  -18.47346770 1061.5888
## 1715   46.183040 -493.91020598  586.2763
## 1716  173.022600 -366.91221341  712.9574
## 1717  366.050051 -173.84177464  905.9419
## 1718   72.106116 -467.94635983  612.1586
## 1719  243.929385 -295.96184657  783.8206
## 1720  328.992852 -210.88867615  868.8744
## 1721   38.025213 -502.08175445  578.1322
## 1722  614.802092   74.61303504 1154.9911
## 1723  597.699956   57.54403753 1137.8559
## 1724  538.312825   -1.74257734 1078.3682
## 1725  198.598699 -341.31667393  738.5141
## 1726   30.044730 -510.07607342  570.1655
## 1727  230.004020 -309.89322383  769.9013
## 1728   83.062895 -456.97364439  623.0994
## 1729  479.018222  -60.95938617 1018.9958
## 1730  449.918374  -90.02930644  989.8661
## 1731  263.344705 -276.54022094  803.2296
## 1732   45.751245 -494.34271581  585.8452
## 1733  188.813933 -351.10838179  728.7362
## 1734  537.202497   -2.85124147 1077.2562
## 1735  482.572814  -57.40882233 1022.5544
## 1736  441.721993  -98.21823773  981.6622
## 1737  511.903980  -28.11398832 1051.9219
## 1738  498.726545  -41.27441789 1038.7275
## 1739  325.600183 -214.28084293  865.4812
## 1740  228.592978 -311.30494447  768.4909
## 1741  331.591328 -208.29063475  871.4733
## 1742  189.184042 -350.73799868  729.1061
## 1743  253.058749 -286.82921606  792.9467
## 1744  443.857833  -96.08429783  983.8000
## 1745  349.518500 -190.36764289  889.4046
## 1746  532.329390   -7.71713868 1072.3759
## 1747  120.536467 -419.45138804  660.5243
## 1748  416.978641 -122.94171885  956.8990
## 1749  440.619376  -99.31988603  980.5586
## 1750  521.264663  -18.76606256 1061.2954
## 1751  390.045475 -149.85772125  929.9487
## 1752  248.532620 -291.35689759  788.4221
## 1753  147.292290 -392.66631821  687.2509
## 1754  299.268444 -240.61119496  839.1481
## 1755  135.826610 -404.14396873  675.7972
## 1756   25.117649 -515.01190029  565.2472
## 1757  218.700264 -321.20277644  758.6033
## 1758  208.236964 -331.67217237  748.1461
## 1759  200.233349 -339.68092448  740.1476
## 1760  502.921118  -37.08513748 1042.9274
## 1761  386.675937 -153.22543887  926.5773
## 1762    5.987621 -534.17736038  546.1526
## 1763  360.274803 -179.61483801  900.1644
## 1764  457.706091  -82.24906557  997.6612
## 1765   70.926392 -469.12784520  610.9806
## 1766  419.260982 -120.66104628  959.1830
## 1767  185.405843 -354.51903425  725.3307
## 1768  455.670490  -84.28267512  995.6237
## 1769  119.456982 -420.53215008  659.4461
## 1770  270.268834 -269.61442829  810.1521
## 1771   98.329906 -441.68571185  638.3455
## 1772  294.973634 -244.90620165  834.8535
## 1773  445.978251  -93.96579439  985.9223
## 1774  560.365174   20.27508650 1100.4553
## 1775  230.605448 -309.29151072  770.5024
## 1776  230.004020 -309.89322383  769.9013
## 1777  131.107716 -408.86803494  671.0835
## 1778  125.039465 -414.94314706  665.0221
## 1779  205.707883 -334.20283188  745.6186
## 1780  405.682595 -134.22999928  945.5952
## 1781   57.348005 -482.72715263  597.4232
## 1782  229.132721 -310.76494053  769.0304
## 1783  399.668318 -140.24047585  939.5771
## 1784  450.882200  -89.06638424  990.8308
## 1785  168.427076 -371.51167597  708.3658
## 1786  263.298441 -276.58649676  803.1834
## 1787  280.184680 -259.69673556  820.0661
## 1788  179.800228 -360.12902520  719.7295
## 1789  370.745814 -169.14794635  910.6396
## 1790  497.654770  -42.34485875 1037.6544
## 1791  164.001185 -375.94148782  703.9439
## 1792  278.827613 -261.05401859  818.7092
## 1793  534.850760   -5.19947981 1074.9010
## 1794  192.306840 -347.61292619  732.2266
## 1795  164.371294 -375.57104578  704.3136
## 1796  121.546557 -418.44011034  661.5332
## 1797  383.823011 -156.07688146  923.7229
## 1798  181.326929 -358.60111222  721.2550
## 1799  390.523532 -149.37992740  930.4270
## 1800  485.903798  -54.08168641 1025.8893
## 1801  506.275234  -33.73533454 1046.2858
## 1802  485.348634  -54.63620412 1025.3335
## 1803  359.534584 -180.35479218  899.4240
## 1804  187.472287 -352.45102793  727.3956
## 1805  246.219436 -293.67092530  786.1098
## 1806  317.835597 -222.04455722  857.7158
## 1807  -43.275476 -583.54249900  496.9915
## 1808   45.836062 -494.25775843  585.9299
## 1809  598.440174   58.28286072 1138.5975
## 1810  388.634433 -151.26799230  928.5369
## 1811  192.777187 -347.14224169  732.6966
## 1812  262.164981 -277.72025862  802.0502
## 1813  516.437820  -23.58625723 1056.4619
## 1814  389.004542 -150.89808390  928.9072
## 1815  457.351403  -82.60340472  997.3062
## 1816   70.039672 -470.01589563  610.0952
## 1817  353.342963 -186.54433829  893.2303
## 1818  458.978342  -80.97807310  998.9348
## 1819  290.154501 -249.72569483  830.0347
## 1820  152.874772 -387.07831219  692.8279
## 1821  384.077461 -155.82256148  923.9775
## 1822  245.803063 -294.08745394  785.6936
## 1823  158.526651 -381.42104572  698.4743
## 1824  394.864607 -145.04131813  934.7705
## 1825  306.547262 -233.33231577  846.4268
## 1826   96.664414 -443.35341366  636.6822
## 1827  318.868819 -221.01142892  858.7491
## 1828  506.105600  -33.90474813 1046.1159
## 1829  524.186985  -15.84783841 1064.2218
## 1830   76.431769 -463.61432319  616.4779
## 1831  127.067355 -412.91293718  667.0476
## 1832  247.931192 -291.95854149  787.8209
## 1833  323.356395 -216.52433927  863.2371
## 1834  273.183445 -266.69920894  813.0661
## 1835  324.250826 -215.63002071  864.1317
## 1836  222.247145 -317.65398814  762.1483
## 1837  521.079608  -18.95085960 1061.1101
## 1838  269.767644 -270.11572812  809.6510
## 1839  387.192548 -152.70910214  927.0942
## 1840  343.712409 -196.17215373  883.5970
## 1841  150.792907 -389.16221370  690.7480
## 1842  556.679502   16.59542825 1096.7636
## 1843  110.373881 -429.62628670  650.3740
## 1844  427.102674 -112.82534156  967.0307
## 1845  408.496968 -131.41748421  948.4114
## 1846  571.198583   31.09031413 1111.3069
## 1847  -67.340295 -607.66281669  472.9822
## 1848  133.675350 -406.29756943  673.6483
## 1849  346.580757 -193.30455957  886.4661
## 1850   94.466890 -445.55388077  634.4877
## 1851  543.602305    3.53886688 1083.6657
## 1852   73.432341 -466.61816472  613.4828
## 1853  458.029937  -81.92553923  997.9854
## 1854  397.123816 -142.78343967  937.0311
## 1855  539.561944   -0.49533963 1079.6192
## 1856  474.461250  -65.51131218 1014.4338
## 1857  350.528590 -189.35784969  890.4150
## 1858   63.747813 -476.31733743  603.8130
## 1859  442.277158  -97.66356461  982.2179
## 1860  318.059205 -221.82096917  857.9394
## 1861  434.157884 -105.77585597  974.0916
## 1862  -10.089004 -550.28557656  530.1076
## 1863  378.348477 -161.54871491  918.2457
## 1864  448.214328  -91.73176748  988.1604
## 1865  434.512572 -105.42146404  974.4466
## 1866  365.880418 -174.01134088  905.7722
## 1867  155.234220 -384.71659076  695.1850
## 1868  169.491140 -370.44668768  709.4290
## 1869  137.106572 -402.86262900  677.0758
## 1870  536.423725   -3.62885090 1076.4763
## 1871  107.066029 -432.93828965  647.0703
## 1872  440.858405  -99.08106650  980.7979
## 1873  244.785263 -295.10563973  784.6762
## 1874  365.818733 -174.07300137  905.7105
## 1875  284.379253 -255.50157184  824.2601
## 1876   85.383789 -454.64947344  625.4171
## 1877  156.483339 -383.46628211  696.4330
## 1878  463.782053  -76.17920730 1003.7433
## 1879  439.084964 -100.85296203  979.0229
## 1880  443.695910  -96.24607564  983.6379
## 1881  446.340650  -93.60372578  986.2850
## 1882  136.011665 -403.95871414  675.9820
## 1883  291.920231 -247.95981522  831.8003
## 1884  385.650426 -154.25041086  925.5513
## 1885  135.256025 -404.71517176  675.2272
## 1886  305.776200 -234.10336738  845.6558
## 1887  242.101970 -297.78997961  781.9939
## 1888  572.301201   32.19103888 1112.4114
## 1889  491.748442  -48.24396717 1031.7409
## 1890  226.110161 -313.78898667  766.0093
## 1891  422.460886 -117.46353799  962.3853
## 1892  583.412192   43.28252252 1123.5419
## 1893  141.887151 -398.07699524  681.8513
## 1894  377.161043 -162.73558867  917.0577
## 1895  439.216045 -100.72199515  979.1541
## 1896  280.693581 -259.18775747  820.5749
## 1897   93.495352 -446.52672874  633.5174
## 1898  602.788959   62.62337607 1142.9545
## 1899  778.598614  237.99728417 1319.1999
## 1900  358.817498 -181.07162614  898.7066
## 1901  254.469791 -285.41771701  794.3573
## 1902   72.414540 -467.63747624  612.4666
## 1903  467.560253  -72.40492249 1007.5254
## 1904  131.562642 -408.41260403  671.5379
## 1905  253.922337 -285.96534627  793.8100
## 1906  386.020535 -153.88049538  925.9216
## 1907  368.062521 -171.83011661  907.9552
## 1908  157.902091 -382.04619060  697.8504
## 1909  176.916459 -363.01512386  716.8480
## 1910  144.794051 -395.16709285  684.7552
## 1911  615.303282   75.11322536 1155.4933
## 1912  421.211767 -118.71171413  961.1352
## 1913  522.907023  -17.12599845 1062.9400
## 1914  502.065240  -37.93992634 1042.0704
## 1915  304.735268 -235.14429310  844.6148
## 1916  341.969811 -197.91432005  881.8539
## 1917   47.594082 -492.49683398  587.6850
## 1918  179.514935 -360.41454595  719.4444
## 1919   57.240057 -482.83527225  597.3154
## 1920  165.574150 -374.36711520  705.5154
## 1921  147.438791 -392.51966909  687.3973
## 1922  448.569017  -91.37740754  988.5154
## 1923  605.225512   65.05524303 1145.3958
## 1924  499.967954  -40.03456395 1039.9705
## 1925  526.060663  -13.97681587 1066.0981
## 1926   76.678509 -463.36722312  616.7242
## 1927  327.358202 -212.52307456  867.2395
## 1928  446.140174  -93.80401895  986.0844
## 1929  401.665366 -138.24466365  941.5754
## 1930  385.048998 -154.85152540  924.9495
## 1931  379.057853 -160.83967775  918.9554
## 1932  421.890300 -118.03369128  961.8143
## 1933   64.017684 -476.04704979  604.0824
## 1934  129.434513 -410.54310579  669.4121
## 1935  486.898467  -53.08818046 1026.8851
## 1936  171.387951 -368.54824832  711.3241
## 1937  325.708131 -214.17290921  865.5892
## 1938  320.757919 -219.12251804  860.6384
## 1939  165.666677 -374.27450554  705.6079
## 1940   97.566555 -442.45007297  637.5832
## 1941  467.259539  -72.70532140 1007.2244
## 1942  120.004435 -419.98404840  659.9929
## 1943   84.867178 -455.16681083  624.9012
## 1944  461.198998  -78.75963841 1001.1576
## 1945  167.879623 -372.05960756  707.8189
## 1946  447.489531  -92.45589683  987.4350
## 1947  389.035384 -150.86725824  928.9380
## 1948  548.490832    8.41980885 1088.5619
## 1949  179.723122 -360.20619292  719.6524
## 1950  209.277896 -330.63060187  749.1864
## 1951  295.968302 -243.91147682  835.8481
## 1952  340.674428 -199.20939437  880.5583
## 1953  525.212496  -14.82377802 1065.2488
## 1954  459.387005  -80.56981712  999.3438
## 1955  378.140290 -161.75680251  918.0374
## 1956  494.138731  -45.85657257 1034.1340
## 1957  128.933323 -411.04485863  668.9115
## 1958  264.023239 -275.86151051  803.9080
## 1959  648.358674  108.09914724 1188.6182
## 1960  337.682711 -202.20044052  877.5659
## 1961  441.791389  -98.14890348  981.7317
## 1962  454.259448  -85.69235189  994.2112
## 1963  243.674935 -296.21639546  783.5663
## 1964  216.903691 -323.00034567  756.8077
## 1965  278.511478 -261.37020554  818.3932
## 1966  475.964820  -64.00939293 1015.9390
## 1967  398.773887 -141.13436142  938.6821
## 1968  497.099606  -42.89933460 1037.0985
## 1969  461.761873  -78.19733186 1001.7211
## 1970  562.732332   22.63833571 1102.8263
## 1971  331.013032 -208.86883013  870.8949
## 1972  202.831825 -337.08073542  742.7444
## 1973  168.427076 -371.51167597  708.3658
## 1974  216.186604 -323.71783617  756.0910
## 1975  323.333263 -216.54746827  863.2140
## 1976  -64.217497 -604.53260771  476.0976
## 1977  153.252592 -386.70012564  693.2053
## 1978  196.462860 -343.45397618  736.3797
## 1979  185.243920 -354.68108068  725.1689
## 1980  143.637460 -396.32487245  683.5998
## 1981   91.089642 -448.93571166  631.1150
## 1982   98.329906 -441.68571185  638.3455
## 1983  631.387618   91.16463237 1171.6106
## 1984  353.836442 -186.05101550  893.7239
## 1985  311.852162 -228.02758419  851.7319
## 1986   71.227106 -468.82668142  611.2809
## 1987  342.016075 -197.86806760  881.9002
## 1988  297.757164 -242.12253031  837.6369
## 1989   82.661943 -457.37516580  622.6991
## 1990  349.749818 -190.13639196  889.6360
## 1991  464.267822  -75.69393698 1004.2296
## 1992  208.452861 -331.45614236  748.3619
## 1993  608.795526   68.61832116 1148.9727
## 1994  630.076814   89.85657400 1170.2971
## 1995    7.059396 -533.10353819  547.2223
## 1996  646.076333  105.82182781 1186.3308
## 1997  512.358906  -27.65966922 1052.3775
## 1998  337.744396 -202.13876889  877.6276
## 1999  153.345120 -386.60750866  693.2977
## 2000  422.152461 -117.77172870  962.0767
## 2001   88.282979 -451.74623866  628.3122
## 2002  120.775496 -419.21207746  660.7631
## 2003   78.822059 -461.22055763  618.8647
## 2004  158.241358 -381.70660542  698.1893
## 2005  259.589637 -280.29631961  799.4756
## 2006  135.795768 -404.17484451  675.7664
## 2007  392.682504 -147.22216700  932.5872
## 2008  222.694360 -317.20653796  762.5953
## 2009  432.168546 -107.76354744  972.1006
## 2010  409.106106 -130.80875476  949.0210
## 2011  456.526368  -83.42763150  996.4804
## 2012  203.479516 -336.43262382  743.3917
## 2013  648.613124  108.35303551 1188.8732
## 2014  167.231931 -372.70786713  707.1717
## 2015  428.128185 -111.80064239  968.0570
## 2016  189.122358 -350.79972914  729.0444
## 2017  185.313315 -354.61163219  725.2383
## 2018  117.097535 -422.89441312  657.0895
## 2019   73.301261 -466.74943932  613.3520
## 2020  134.970732 -405.00077405  674.9422
## 2021  122.063168 -417.92289450  662.0492
## 2022  239.480362 -300.41265516  779.3734
## 2023  273.252841 -266.62979962  813.1355
## 2024  495.565194  -44.43185455 1035.5622
## 2025  451.576155  -88.37308395  991.5254
## 2026  154.278104 -385.67362390  694.2298
## 2027  130.429182 -409.54732418  670.4057
## 2028   81.081268 -458.95809677  621.1206
## 2029  286.491961 -253.38860935  826.3725
## 2030  -40.530498 -580.79142641  499.7304
## 2031  426.863645 -113.06418218  966.7915
## 2032  419.985779 -119.93678563  959.9083
## 2033   37.724499 -502.38298226  577.8320
## 2034  332.771052 -207.11112284  872.6532
## 2035  210.519305 -329.38844171  750.4271
## 2036  371.254714 -168.63926410  911.1487
## 2037  482.480286  -57.50124379 1022.4618
## 2038  369.589222 -170.30404855  909.4825
## 2039  199.886371 -340.02813401  739.8009
## 2040  375.194837 -164.70088657  915.0906
## 2041  285.373922 -254.50677936  825.2546
## 2042  543.725674    3.66204711 1083.7893
## 2043  125.317047 -414.66524605  665.2993
## 2044  249.056941 -290.83238942  788.9463
## 2045  188.089136 -351.83371793  728.0120
## 2046  233.350426 -306.54525986  773.2461
## 2047  311.489764 -228.38996563  851.3695
## 2048  405.204537 -134.70774661  945.1168
## 2049  491.247252  -48.74455456 1031.2391
## 2050  526.538721  -13.49943923 1066.5769
## 2051  155.095429 -384.85551456  695.0464
## 2052  331.899752 -207.98226476  871.7818
## 2053  490.113792  -49.87665813 1030.1042
## 2054  186.369669 -353.55447565  726.2938
## 2055  277.871497 -262.01029328  817.7533
## 2056   82.669654 -457.36744422  622.7068
## 2057  450.080296  -89.86753510  990.0281
## 2058  442.762926  -97.17822726  982.7041
## 2059  360.128302 -179.76128699  900.0179
## 2060          NA            NA        NA
## 2061  197.426686 -342.48948598  737.3429
## 2062          NA            NA        NA
## 2063  441.675730  -98.26446058  981.6159
## 2064  229.757281 -310.14008116  769.6546
## 2065  421.682114 -118.24172070  961.6059
## 2066  418.605580 -121.31596572  958.5271
## 2067  226.966039 -312.93268194  766.8648
## 2068  500.060481  -39.94215287 1040.0631
## 2069  146.536650 -393.42272113  686.4960
## 2070  166.499423 -373.44102108  706.4399
## 2071  322.569912 -217.31072709  862.4506
## 2072  455.770728  -84.18253464  995.7240
## 2073   96.664414 -443.35341366  636.6822
## 2074  225.485602 -314.41386066  765.3851
## 2075  437.681633 -102.25508497  977.6184
## 2076  400.616723 -139.29265451  940.5261
## 2077  116.681162 -423.31128677  656.6736
## 2078   72.221775 -467.83052842  612.2741
## 2079          NA            NA        NA
## 2080          NA            NA        NA
## 2081  116.018049 -423.97519896  656.0113
## 2082          NA            NA        NA
## 2083  299.900714 -239.97890595  839.7803
## 2084  429.716571 -110.21352768  969.6467
## 2085          NA            NA        NA
## 2086  339.571811 -200.31175779  879.4554
## 2087  572.463124   32.35268312 1112.5736
## 2088  517.124064  -22.90094887 1057.1491
## 2089  139.342649 -400.62416915  679.3095
## 2090  164.641166 -375.30093234  704.5833
## 2091  313.132124 -226.74769054  853.0119
## 2092   74.280508 -465.76874353  614.3298
## 2093  451.576155  -88.37308395  991.5254
## 2094  512.659620  -27.35935732 1052.6786
## 2095  286.491961 -253.38860935  826.3725
## 2096  277.138989 -262.74292705  817.0209
## 2097  519.599171  -20.42924383 1059.6276
## 2098  319.956015 -219.92433863  859.8364
## 2099  533.362612   -6.68543256 1073.4107
## 2100  488.170718  -51.81742628 1028.1589
## 2101  311.875294 -228.00445349  851.7550
## 2102  425.275259 -114.65132597  965.2018
## 2103   15.726124 -524.42052712  555.8728
## 2104  504.054578  -35.95312703 1044.0623
## 2105   11.038072 -529.11732742  551.1935
## 2106   59.129157 -480.94318973  599.2015
## 2107  353.836442 -186.05101550  893.7239
## 2108  464.260111  -75.70163967 1004.2219
## 2109  272.905863 -266.97684653  812.7886
## 2110  536.469989   -3.58265617 1076.5226
## 2111  350.975806 -188.91076776  890.8624
## 2112  248.255038 -291.63457911  788.1447
## 2113  168.326838 -371.61200133  708.2657
## 2114  233.335004 -306.56068811  773.2307
## 2115  254.292447 -285.59511783  794.1800
## 2116  414.210531 -125.70784970  954.1289
## 2117  115.478306 -424.51559469  655.4722
## 2118  439.879157 -100.05945849  979.8178
## 2119  458.477152  -81.47876586  998.4331
## 2120  100.712485 -439.30000270  640.7250
## 2121  190.857245 -349.06356934  730.7781
## 2122   95.762272 -444.25675957  635.7813
## 2123  237.714632 -302.17912914  777.6084
## 2124  312.075770 -227.80398755  851.9555
## 2125  288.064926 -251.81547341  827.9453
## 2126  556.317103   16.23361615 1096.4006
## 2127  374.192457 -165.70281269  914.0877
## 2128  536.477699   -3.57495705 1076.5304
## 2129  404.526003 -135.38584212  944.4378
## 2130  160.639358 -379.30637664  700.5851
## 2131  140.607189 -399.35829571  680.5727
## 2132  459.186529  -80.77009350  999.1432
## 2133 1111.619929  569.65210412 1653.5878
## 2134   25.048253 -515.08142009  565.1779
## 2135  406.584736 -133.32844781  946.4979
## 2136  354.191131 -185.69644071  894.0787
## 2137  214.613639 -325.29169785  754.5190
## 2138   60.378276 -479.69211101  600.4487
## 2139  384.609493 -155.29080288  924.5098
## 2140  128.601767 -411.37678831  668.5803
## 2141   50.809407 -489.27624711  590.8951
## 2142  177.587283 -362.34375390  717.5183
## 2143  186.909412 -353.01432545  726.8331
## 2144   83.140001 -456.89642886  623.1764
## 2145  405.397302 -134.51510638  945.3097
## 2146  506.915215  -33.09618493 1046.9266
## 2147  130.891819 -409.08417210  670.8678
## 2148  219.895408 -320.00698006  759.7978
## 2149  391.387121 -148.51681965  931.2911
## 2150  231.415062 -308.48151598  771.3116
## 2151  283.870353 -256.01053789  823.7512
## 2152  435.283633 -104.65104957  975.2183
## 2153   33.861482 -506.25265254  573.9756
## 2154  214.613639 -325.29169785  754.5190
## 2155  137.276205 -402.69281368  677.2452
## 2156  149.505235 -390.45115930  689.4616
## 2157  223.272656 -316.62794049  763.1733
## 2158  165.157777 -374.78385935  705.0994
## 2159  352.571902 -187.31515827  892.4590
## 2160  361.855479 -178.03473931  901.7457
## 2161  371.185319 -168.70862976  911.0793
## 2162  387.362182 -152.53955912  927.2639
## 2163  266.506056 -273.37807253  806.3902
## 2164  478.848588  -61.12882942 1018.8260
## 2165   19.249873 -520.89029463  559.3900
## 2166  144.986817 -394.97413042  684.9478
## 2167  457.351403  -82.60340472  997.3062
## 2168  604.631795   64.46267136 1144.8009
## 2169  595.594959   55.44298988 1135.7469
## 2170  225.231152 -314.66843966  765.1307
## 2171  435.700006 -104.23502735  975.6350
## 2172  408.273360 -131.64094245  948.1877
## 2173  371.478322 -168.41575273  911.3724
## 2174  456.534078  -83.41992843  996.4881
## 2175  404.448897 -135.46289862  944.3607
## 2176  512.119877  -27.89837909 1052.1381
## 2177  529.129487  -10.91239136 1069.1714
## 2178  275.080256 -264.80203200  814.9625
## 2179  309.639217 -230.24043718  849.5189
## 2180  201.937394 -337.97575109  741.8505
## 2181  102.632427 -437.37756454  642.6424
## 2182  243.412774 -296.47865838  783.3042
## 2183  229.518252 -310.37922458  769.4157
## 2184  105.870884 -434.13495134  645.8767
## 2185  312.098902 -227.78085688  851.9787
## 2186  423.771690 -116.15373429  963.6971
## 2187  489.450679  -50.53898105 1029.4403
## 2188  550.233431   10.15966594 1090.3072
## 2189  406.584736 -133.32844781  946.4979
## 2190   96.132382 -443.88615549  636.1509
## 2191  592.634084   52.48762203 1132.7805
## 2192  216.626109 -323.27808354  756.5303
## 2193  113.442705 -426.55367539  653.4391
## 2194  536.585648   -3.46716941 1076.6385
## 2195  470.706182  -69.26232258 1010.6747
## 2196  -30.352491 -570.59124148  509.8863
## 2197  235.679030 -304.21561306  775.5737
## 2198  330.295945 -209.58579537  870.1777
## 2199  291.033511 -248.84660816  830.9136
## 2200  187.587946 -352.33528212  727.5112
## 2201   26.436163 -513.69102997  566.5634
## 2202  346.781233 -193.10413830  886.6666
## 2203  275.080256 -264.80203200  814.9625
## 2204  470.737025  -69.23151309 1010.7056
## 2205   47.594082 -492.49683398  587.6850
## 2206  178.396897 -361.53348365  718.3273
## 2207  372.095171 -167.79917129  911.9895
## 2208  149.489814 -390.46659584  689.4462
## 2209   16.666818 -523.47809403  556.8117
## 2210  249.743186 -290.14590345  789.6323
## 2211  223.704451 -316.19592244  763.6048
## 2212  582.679684   42.55132486 1122.8080
## 2213  195.059528 -344.85828457  734.9773
## 2214  523.246290  -16.78720802 1063.2798
## 2215  -57.455291 -597.75456673  482.8440
## 2216  185.444396 -354.48045179  725.3692
## 2217  120.829471 -419.15803964  660.8170
## 2218  534.156805   -5.89240938 1074.2060
## 2219   77.249094 -462.79580568  617.2940
## 2220  210.843150 -329.06440155  750.7507
## 2221  349.048153 -190.83785417  888.9342
## 2222  485.926930  -54.05858155 1025.9124
## 2223  -40.530498 -580.79142641  499.7304
## 2224  160.423461 -379.52247290  700.3694
## 2225  346.094988 -193.79019681  885.9802
## 2226  353.127066 -186.76016750  893.0143
## 2227  393.399591 -146.50548891  933.3047
## 2228  348.600937 -191.28494162  888.4868
## 2229          NA            NA        NA
## 2230   90.040998 -449.98579276  630.0678
## 2231  -13.450830 -553.65421869  526.7526
## 2232  247.090736 -292.79930417  786.9808
## 2233  108.407675 -431.59495132  648.4103
## 2234 5042.042507 4434.37222651 5649.7128
## 2235  167.046877 -372.89308464  706.9868
## 2236  373.706689 -166.18836383  913.6017
## 2237  395.227006 -144.67913064  935.1331
## 2238  340.998274 -198.88562478  880.8822
## 2239  435.561215 -104.37370130  975.4961
## 2240  309.292239 -230.58740304  849.1719

Predicciones y sus Intervalos de Confianza

predict(modelo_RL_Simple, data.frame(seq(1,400)), interval='confidence', level = 0.95)
## Warning: 'newdata' had 400 rows but variables found have 2240 rows
##              fit          lwr          upr
## 1     349.919452  338.1697453  361.6691582
## 2     258.980499  247.2366604  270.7243368
## 3     453.819943  439.3848575  468.2550287
## 4     107.096871   90.8025840  123.3911586
## 5     351.114597  339.3485849  362.8806082
## 6     383.653378  371.2969096  396.0098455
## 7     330.619791  319.0770587  342.1625232
## 8     159.590715  145.3314701  173.8499601
## 9     135.664687  120.5221294  150.8072452
## 10    -54.810551  -78.8435168  -30.7775853
## 11    323.155919  311.6640723  334.6477656
## 12    -40.530498  -63.8275435  -17.2334532
## 13    387.662896  375.2151947  400.1105965
## 14    359.295555  347.4073473  371.1837637
## 15     35.210839   15.6752764   54.7464023
## 16    540.078555  522.0898034  558.0673067
## 17    224.329010  211.9618194  236.6962007
## 18    192.792609  179.6070136  205.9782037
## 19    495.318455  479.2757726  511.3611368
## 20    162.351114  148.1883093  176.5139187
## 21    187.240968  173.8897543  200.5921823
## 22    -79.492219 -104.8125337  -54.1719038
## 23    353.535729  341.7354691  365.3359882
## 24    405.327907  392.4344100  418.2214035
## 25    215.376990  202.7999068  227.9540732
## 26     44.972474   25.8998164   64.0451309
## 27    313.070439  301.6208925  324.5199854
## 28     82.260991   64.8950102   99.6269725
## 29    197.418976  184.3667495  210.4712017
## 30    554.096447  535.4633655  572.7295284
## 31    -13.705281  -35.6402558    8.2296946
## 32    199.423735  186.4279541  212.4195151
## 33    214.289794  201.6859571  226.8936304
## 34    261.031521  249.3144818  272.7485608
## 35    431.027375  417.3694220  444.6853284
## 36    282.459311  270.9500050  293.9686168
## 37    420.972738  407.6290733  434.3164021
## 38     84.520201   67.2540751  101.7863260
## 39    228.793454  216.5238192  241.0630892
## 40    279.058931  267.5256169  290.5922455
## 41    518.573659  501.5430067  535.6043118
## 42     60.162379   41.7974791   78.5272780
## 43     71.227106   53.3672238   89.0869885
## 44    -47.616550  -71.2779019  -23.9551989
## 45    -40.530498  -63.8275435  -17.2334532
## 46    518.033916  501.0267929  535.0410401
## 47    -40.530498  -63.8275435  -17.2334532
## 48    223.388315  210.9999558  235.7766751
## 49    263.429521  251.7423102  275.1167328
## 50    461.044786  446.3463624  475.7432099
## 51    406.577026  393.6494210  419.5046306
## 52    511.880848  495.1400297  528.6216671
## 53    177.602704  163.9501396  191.2552680
## 54    538.397642  520.4851563  556.3101271
## 55    413.416338  400.2962457  426.5364309
## 56    536.870941  519.0275316  554.7143497
## 57    443.595672  429.5197008  457.6716434
## 58    117.058982  101.1770581  132.9409049
## 59    107.158556   90.8668551  123.4502573
## 60    333.079476  321.5163653  344.6425868
## 61    485.926930  470.2669692  501.5868904
## 62    415.575310  402.3924841  428.7581350
## 63    378.333056  366.0916684  390.5744427
## 64    423.494108  410.0733910  436.9148244
## 65    446.517994  432.3410595  460.6949283
## 66     99.964556   83.3686009  116.5605102
## 67    152.034316  137.5050477  166.5635837
## 68    581.669594  561.7301747  601.6090133
## 69    434.412334  420.6444610  448.1802064
## 70    478.810035  463.4332039  494.1868667
## 71    418.181496  404.9217156  431.4412769
## 72    855.087881  820.7010740  889.4746886
## 73    403.068698  390.2360500  415.9013451
## 74    369.142007  357.0828365  381.2011765
## 75    120.096962  104.3385950  135.8553300
## 76    211.961189  199.2991523  224.6232258
## 77    481.871148  466.3732916  497.3690046
## 78    486.297039  470.6221881  501.9718901
## 79    104.629476   88.2314162  121.0275350
## 80    333.788852  322.2195343  345.3581703
## 81    131.107716  115.7880114  146.4274203
## 82    104.459842   88.0546253  120.8650591
## 83     83.294213   65.9739553  100.6144714
## 84    199.423735  186.4279541  212.4195151
## 85    528.982985  511.4934584  546.4725115
## 86    128.640320  113.2236000  144.0570402
## 87    180.285997  166.7190395  193.8529538
## 88    290.162212  278.6945477  301.6298761
## 89    515.350624  498.4600719  532.2411754
## 90    319.385430  307.9129749  330.8578849
## 91    320.079385  308.6036808  331.5550890
## 92     -3.018373  -24.4190267   18.3822808
## 93    311.381815  299.9363557  322.8272743
## 94    228.523583  216.2481884  240.7989772
## 95     83.810824   66.5133929  101.1082557
## 96    133.698481  118.4798168  148.9171459
## 97    271.101580  259.4987716  282.7043884
## 98    301.149833  289.7106794  312.5889874
## 99    506.899793  490.3718827  523.4277040
## 100   288.327086  276.8511136  299.8030591
## 101   270.384493  258.7745142  281.9944721
## 102   168.072388  154.1055672  182.0392085
## 103   562.385354  543.3646980  581.4060108
## 104   409.352846  396.3482770  422.3574150
## 105   573.966693  554.3969899  593.5363961
## 106    91.274696   74.3044030  108.2449897
## 107   280.200102  268.6752267  291.7249767
## 108   305.776200  294.3381232  317.2142776
## 109   198.937966  185.9285842  211.9473480
## 110   588.331562  568.0696444  608.5934805
## 111   497.654770  481.5153466  513.7941934
## 112   426.933040  413.4053128  440.4607681
## 113   343.365432  331.6980010  355.0328628
## 114   565.037805  545.8921548  584.1834548
## 115   240.706349  228.6727828  252.7399155
## 116   293.223325  281.7672657  304.6793837
## 117   601.493576  580.5874950  622.3996578
## 118   183.462769  169.9954704  196.9300668
## 119   138.764353  123.7407471  153.7879592
## 120    70.641100   52.7547081   88.5274913
## 121   334.428833  322.8537886  346.0038775
## 122   152.674296  138.1682317  167.1803613
## 123    52.073947   33.3341595   70.8137344
## 124   140.607189  125.6536964  155.5606822
## 125   687.890979  662.5740124  713.2079464
## 126   452.856117  438.4555759  467.2566574
## 127   515.458572  498.5633438  532.3538006
## 128   320.696234  309.2175204  332.1749473
## 129   254.824479  243.0227366  266.6262213
## 130   498.256198  482.0917749  514.4206205
## 131   387.393024  374.9515835  399.8344648
## 132   374.539435  362.3758438  386.7030254
## 133   467.968915  453.0111137  482.9267171
## 134   288.296244  276.8201229  299.7723649
## 135   222.023537  209.6040903  234.4429841
## 136   387.261944  374.8235376  399.7003499
## 137   -24.739166  -47.2309572   -2.2473744
## 138   161.965583  147.7893819  176.1417850
## 139   178.142447  164.5072061  191.7776871
## 140   186.323406  172.9442470  199.7025640
## 141   617.639597  595.9316416  639.3475526
## 142   403.631572  390.7838661  416.4792783
## 143   565.608390  546.4357922  584.7809879
## 144   428.675639  415.0928557  442.2584217
## 145   224.583460  212.2219592  236.9449613
## 146   362.803884  350.8577057  374.7500618
## 147    86.363037   69.1780310  103.5480425
## 148   198.860860  185.8493146  211.8724053
## 149   176.816221  163.1383213  190.4941215
## 150   284.124803  272.6260032  295.6236029
## 151   359.295555  347.4073473  371.1837637
## 152   408.589495  395.6062512  421.5727397
## 153   258.980499  247.2366604  270.7243368
## 154   165.157777  151.0917816  179.2237717
## 155   372.064328  359.9495447  384.1791119
## 156   436.540462  422.7024611  450.3784639
## 157   286.916044  275.4329960  298.3990928
## 158   365.811022  353.8125488  377.8094958
## 159   328.615032  317.0875903  340.1424736
## 160   520.933106  503.7992862  538.0669267
## 161   136.990912  121.8994047  152.0824202
## 162   444.127704  430.0334544  458.2219543
## 163    80.742001   63.3086324   98.1753694
## 164   473.497424  458.3278436  488.6670042
## 165  1114.079614 1065.0511392 1163.1080894
## 166   236.912728  224.8078956  249.0175608
## 167   383.946381  371.5833756  396.3093859
## 168   305.151641  293.7137969  316.5894847
## 169   417.873072  404.6224677  431.1236760
## 170   102.817482   86.3428155  119.2921483
## 171   159.606136  145.3474334  173.8648392
## 172   123.073259  107.4349014  138.7116157
## 173   290.617138  279.1513769  302.0828991
## 174   314.442928  302.9894248  325.8964308
## 175   303.162303  291.7244144  314.6001917
## 176   521.781274  504.6102440  538.9523035
## 177   548.074459  529.7199519  566.4289667
## 178   201.220307  188.2744055  214.1662087
## 179   196.840680  183.7720184  209.9093410
## 180   506.899793  490.3718827  523.4277040
## 181   299.893004  288.4524372  311.3335703
## 182    26.921932    6.9887337   46.8551302
## 183   416.978641  403.7545435  430.2027382
## 184   136.636224  121.5310863  151.7413624
## 185   119.456982  103.6726740  135.2412894
## 186    96.494780   79.7502267  113.2393340
## 187   150.715801  136.1385384  165.2930639
## 188   374.192457  362.0358019  386.3491123
## 189   472.749495  457.6088009  487.8901883
## 190   254.469791  242.6628851  266.2766965
## 191    93.495352   76.6214051  110.3692998
## 192   418.042705  404.7870563  431.2983542
## 193   184.156724  170.7109477  197.6024996
## 194   201.366809  188.4249449  214.3086726
## 195   296.022277  284.5743564  307.4701970
## 196   143.390720  128.5422551  158.2391851
## 197   438.768829  424.8565657  452.6810928
## 198   519.005454  501.9559586  536.0549485
## 199   570.288731  550.8943054  589.6831572
## 200   262.912911  251.2194108  274.6064102
## 201   434.767022  420.9875154  448.5465283
## 202   487.044968  471.3399773  502.7499596
## 203   392.751899  380.1829716  405.3208268
## 204   689.355996  663.9620567  714.7499344
## 205   214.976038  202.3891197  227.5629567
## 206    47.293368   28.3298697   66.2568658
## 207   129.904860  114.5379558  145.2717650
## 208   277.308622  265.7616164  288.8556283
## 209   247.029051  235.1059091  258.9521922
## 210   398.951231  386.2266552  411.6758067
## 211   257.075978  245.3062004  268.8457547
## 212   502.851722  486.4950097  519.2084348
## 213   243.813726  231.8357471  255.7917041
## 214   256.435997  244.6572765  268.2147170
## 215   448.715518  434.4617649  462.9692715
## 216   221.190791  208.7521590  233.6294233
## 217   304.095287  292.6575687  315.5330054
## 218   547.712061  529.3742339  566.0498872
## 219   245.155372  233.2006089  257.1101351
## 220   437.589106  423.7162624  451.4619490
## 221   250.190401  238.3184805  262.0623223
## 222   460.350831  445.6780313  475.0236309
## 223   500.153008  483.9094877  516.3965287
## 224   138.602430  123.5726419  153.6322187
## 225   394.247758  381.6420646  406.8534511
## 226   225.570419  213.2308392  237.9099979
## 227   297.726322  286.2821975  309.1704463
## 228   299.021705  287.5798781  310.4635311
## 229   517.949100  500.9456712  534.9525284
## 230   166.268105  152.2400552  180.2961542
## 231   187.472287  174.1280922  200.8164811
## 232   533.717300  516.0159879  551.4186130
## 233   199.192416  186.1901650  212.1946676
## 234    17.553539   -2.8338040   37.9408817
## 235   385.442239  373.0455399  397.8389390
## 236    72.908019   55.1240248   90.6920142
## 237    84.080696   66.7951794  101.3662120
## 238   516.646006  499.6992623  533.5927505
## 239   -40.530498  -63.8275435  -17.2334532
## 240   365.679942  353.6837977  377.6760861
## 241   468.022890  453.0630401  482.9827392
## 242   402.528955  389.7106830  415.3472264
## 243    77.472702   59.8936295   95.0517736
## 244   469.811752  454.7838085  484.8396945
## 245   372.557807  360.4334169  384.6821980
## 246   145.958354  131.2058196  160.7108880
## 247   519.522065  502.4500035  536.5941255
## 248   480.143971  464.7145428  495.5733993
## 249   422.460886  409.0718894  435.8498821
## 250   404.186736  391.3241115  417.0493610
## 251   141.902572  126.9980885  156.8070557
## 252   132.480205  117.2141338  147.7462756
## 253   693.458041  667.8482665  719.0678154
## 254   105.894016   89.5492187  122.2388132
## 255   485.348634  469.7119071  500.9853607
## 256   139.890102  124.9093814  154.8708235
## 257   390.045475  377.5417648  402.5491843
## 258   256.243231  244.4617953  268.0246677
## 259    45.836062   26.8040638   64.8680606
## 260   215.747099  203.1790624  228.3151364
## 261    19.512034   -0.7799692   39.8040376
## 262   438.869067  424.9534433  452.7846911
## 263   242.132812  230.1250780  254.1405465
## 264   192.461052  179.2657351  205.6563696
## 265   239.179648  227.1178479  251.2414481
## 266   196.023355  182.9313495  209.1153603
## 267   519.444958  502.3762670  536.5136498
## 268   195.391085  182.2809280  208.5012415
## 269   464.051925  449.2416736  478.8621758
## 270    71.813113   53.9797122   89.6465131
## 271   435.730848  421.9196183  449.5420783
## 272   146.744836  132.0215008  161.4681715
## 273   378.965326  366.7106248  391.2200265
## 274   127.676494  112.2216715  143.1313159
## 275   159.004709  144.7248361  173.2845812
## 276   412.953702  399.8469305  426.0604727
## 277   369.781987  357.7108258  381.8531487
## 278   502.157767  485.8302339  518.4853005
## 279   440.357215  426.3915062  454.3229243
## 280   393.893070  381.2961401  406.4899994
## 281    90.395687   73.3871295  107.4042437
## 282   297.726322  286.2821975  309.1704463
## 283   192.792609  179.6070136  205.9782037
## 284   407.764460  394.8041279  420.7247921
## 285   243.366510  231.3806875  255.3523327
## 286   137.823659  122.7640871  152.8832300
## 287   482.079335  466.5732054  497.5854638
## 288   294.094624  282.6413519  305.5478958
## 289   518.072470  501.0636662  535.0812729
## 290   174.718935  160.9729384  188.4649317
## 291   151.571679  137.0255999  166.1177581
## 292   197.426686  184.3746788  210.4786937
## 293   537.742240  519.8594310  555.6250485
## 294    29.836543   10.0436252   49.6294610
## 295   130.429182  115.0828742  145.7754899
## 296   333.056344  321.4934334  344.6192551
## 297   174.503038  160.7499875  188.2560883
## 298   228.461898  216.1851846  240.7386112
## 299   430.796057  417.1455413  444.4465724
## 300   348.176854  336.4502053  359.9035019
## 301   173.408131  159.6191834  187.1970787
## 302   355.185800  343.3612714  367.0103276
## 303   259.234949  247.4944994  270.9753982
## 304   208.113594  195.3527466  220.8744412
## 305    86.509538   69.3309685  103.6881082
## 306   525.813924  508.4651053  543.1627418
## 307   110.119431   93.9513939  126.2874683
## 308   498.880757  482.6903325  515.0711821
## 309   395.890118  383.2434753  408.5367610
## 310   230.651712  218.4212472  242.8821759
## 311    -1.429987  -22.7516666   19.8916927
## 312    75.699261   58.0407769   93.3577449
## 313           NA           NA           NA
## 314   448.268303  434.0302444  462.5063610
## 315   319.539642  308.0664776  331.0128066
## 316   124.006243  108.4052901  139.6071950
## 317   212.539485  199.8920156  225.1869543
## 318   414.418718  401.2696148  427.5678208
## 319   139.381202  124.3811157  154.3812884
## 320           NA           NA           NA
## 321   401.248993  388.4645618  414.0334246
## 322   167.046877  153.0453208  181.0484322
## 323   264.231425  252.5538247  275.9090254
## 324   397.625006  384.9344498  410.3155617
## 325   213.642102  201.0222002  226.2620046
## 326   381.139718  368.8384813  393.4409550
## 327    16.134786   -4.3217497   36.5913223
## 328   111.792634   95.6940651  127.8912025
## 329   321.343925  309.8619291  332.8259213
## 330   132.950552  117.7028061  148.1982980
## 331    87.249757   70.1036759  104.3958382
## 332   163.769867  149.6561574  177.8835758
## 333   413.115624  400.0041957  426.2270532
## 334   172.883809  159.0775981  186.6900209
## 335    71.350476   53.4961710   89.2047809
## 336   381.270799  368.9667194  393.5748777
## 337   485.279238  469.6452970  500.9131798
## 338   138.162925  123.1163387  153.2095122
## 339   541.643809  523.5838410  559.7037774
## 340   545.722723  527.4762900  563.9691554
## 341   431.011954  417.3544969  444.6694111
## 342   220.944052  208.4997034  233.3883997
## 343   327.358202  315.8397402  338.8766643
## 344   358.817498  346.9369325  370.6980627
## 345   111.291444   95.1720985  127.4107895
## 346   538.713777  520.7869647  556.6405889
## 347   243.220008  231.2316048  255.2084122
## 348   555.769650  537.0587106  574.4805887
## 349   135.826610  120.6902975  150.9629228
## 350   157.485718  143.1521285  171.8193077
## 351   449.964637  435.6668807  464.2623938
## 352   456.433840  441.9043673  470.9633135
## 353   439.524469  425.5868328  453.4621056
## 354   457.567300  442.9965830  472.1380176
## 355   364.276611  352.3051197  376.2481015
## 356   199.601079  186.6102516  212.5919057
## 357   292.853215  281.3959032  304.3105275
## 358   429.523806  415.9140269  443.1335850
## 359   403.392543  390.5512401  416.2338463
## 360   261.578975  249.8688881  273.2890613
## 361   507.832777  491.2651744  524.4003803
## 362   381.139718  368.8384813  393.4409550
## 363   120.945130  105.2210677  136.6691918
## 364   192.461052  179.2657351  205.6563696
## 365   298.574489  287.1319267  310.0170516
## 366   324.204562  312.7065664  335.7025578
## 367   514.864855  497.9953349  531.7343753
## 368   145.410900  130.6379899  160.1838108
## 369   456.996715  442.4467838  471.5466464
## 370   307.326033  295.8868668  318.7651998
## 371   176.785379  163.1064830  190.4642749
## 372   273.121760  261.5383494  284.7051711
## 373   129.473066  114.0891738  144.8569586
## 374   393.654041  381.0630010  406.2450806
## 375   199.099889  186.0950462  212.1047316
## 376   257.083688  245.3140180  268.8533582
## 377    75.784078   58.1293975   93.4387578
## 378   135.109523  119.9455273  150.2735193
## 379   413.825001  400.6931051  426.9568964
## 380   139.296385  124.2930681  154.2997026
## 381   160.569963  146.3450674  174.7948581
## 382    55.744198   37.1750971   74.3132990
## 383   113.072595   97.0269632  129.1182274
## 384   176.816221  163.1383213  190.4941215
## 385   180.324550  166.7588131  193.8902863
## 386   -19.364870  -41.5848223    2.8550833
## 387   239.326150  227.2670850  251.3852142
## 388   390.346188  377.8353157  402.8570612
## 389   200.988989  188.0367027  213.9412749
## 390   546.740523  528.4473677  565.0336792
## 391   597.908142  577.1784222  618.6378618
## 392   383.545429  371.1913642  395.8994937
## 393   474.484382  459.2765723  489.6921920
## 394   294.973634  283.5229411  306.4243260
## 395   447.373872  433.1671091  461.5806345
## 396   431.220140  417.5559819  444.8842991
## 397   239.549757  227.4948573  251.6046574
## 398    19.959250   -0.3110124   40.2295117
## 399    82.392072   65.0318964   99.7522471
## 400    13.559442   -7.0229663   34.1418503
## 401   143.714566  128.8782509  158.5508807
## 402   482.063913  466.5583972  497.5694296
## 403   228.361660  216.0828014  240.6405185
## 404   136.867543  121.7712959  151.9637896
## 405   329.740781  318.2048994  341.2766630
## 406   271.795535  260.1995238  283.3915463
## 407   111.468788   95.3567975  127.5807787
## 408   409.059843  396.0634733  422.0562123
## 409   135.664687  120.5221294  150.8072452
## 410   290.540032  279.0739526  302.0061112
## 411    83.733718   66.4328813  101.0345551
## 412   316.918034  305.4559597  328.3801086
## 413   414.125715  400.9851123  427.2663168
## 414   263.444943  251.7579180  275.1319674
## 415   480.490949  465.0478030  495.9340942
## 416   486.605464  470.9181916  502.2927356
## 417    54.225208   35.5855796   72.8648356
## 418   519.522065  502.4500035  536.5941255
## 419   603.806760  582.7865573  624.8269625
## 420   283.353742  271.8501808  294.8573029
## 421   190.024499  176.7570725  203.2919257
## 422   133.698481  118.4798168  148.9171459
## 423    44.224544   25.1166343   63.3324544
## 424   538.413063  520.4998789  556.3262470
## 425   618.934980  597.1621722  640.7077875
## 426   277.038751  265.4895536  288.5879483
## 427   618.032838  596.3052034  639.7604732
## 428   483.274479  467.7207572  498.8282016
## 429   -18.138882  -40.2969888    4.0192243
## 430   374.408354  362.2473871  386.5693214
## 431   556.000968  537.2792499  574.7226861
## 432   228.469608  216.1930601  240.7461569
## 433   420.633471  407.3000821  433.9668594
## 434   481.755489  466.2622261  497.2487517
## 435   133.073922  117.8309777  148.3168659
## 436   294.441601  282.9893755  305.8938272
## 437   420.348178  407.0234134  433.6729428
## 438   298.960020  287.5180953  310.4019441
## 439   148.464303  133.8044970  163.1241081
## 440   -40.530498  -63.8275435  -17.2334532
## 441   122.865072  107.2183543  138.5117898
## 442   335.153631  323.5719562  346.7353050
## 443    41.201985   21.9512413   60.4527279
## 444   135.109523  119.9455273  150.2735193
## 445    56.854526   38.3368747   75.3721776
## 446    81.258612   63.8481842   98.6690395
## 447   230.250760  218.0119158  242.4896038
## 448   528.096265  510.6461956  545.5463336
## 449    86.902780   69.7414754  104.0640837
## 450   331.174955  319.6277787  342.7221313
## 451   348.539252  336.8078789  360.2706257
## 452   339.571811  327.9464167  351.1972054
## 453   180.995373  167.4508300  194.5399158
## 454   447.774824  433.5540474  461.9955997
## 455   410.470885  397.4348659  423.5069034
## 456   202.261240  189.3439298  215.1785496
## 457   592.294817  571.8398866  612.7497469
## 458   227.081698  214.7752307  239.3881661
## 459   289.483678  278.0130596  300.9542965
## 460   415.660126  402.4748174  428.8454352
## 461   368.879846  356.8255573  380.9341341
## 462   442.654977  428.6112122  456.6987427
## 463   291.180013  279.7165201  302.6435051
## 464   519.444958  502.3762670  536.5136498
## 465   157.501139  143.1680969  171.8341818
## 466   415.027856  401.8610258  428.1946865
## 467   481.948254  466.4473344  497.4491740
## 468   147.454212  132.7571379  162.1512870
## 469   316.393713  304.9336080  327.8538171
## 470   281.534038  270.0185384  293.0495367
## 471   375.503261  363.3202458  387.6862764
## 472   190.063052  176.7967755  203.3293287
## 473   340.659007  329.0219884  352.2960261
## 474   197.843059  184.8028422  210.8832762
## 475    59.846243   41.4667796   78.2257073
## 476   383.576271  371.2215203  395.9310225
## 477   222.740624  210.3375663  235.1436818
## 478   332.215888  320.6601342  343.7716409
## 479   379.774940  367.5030472  392.0468326
## 480   218.731106  206.2348552  231.2273569
## 481   202.053053  189.1300431  214.9760632
## 482   192.792609  179.6070136  205.9782037
## 483   150.176058  135.5790751  164.7730416
## 484   233.635718  221.4663607  245.8050758
## 485   542.784980  524.6729711  560.8969884
## 486   509.428874  492.7931668  526.0645811
## 487   403.631572  390.7838661  416.4792783
## 488   364.993697  353.0096738  376.9777211
## 489     9.935455  -10.8246621   30.6955712
## 490   121.060789  105.3413984  136.7801795
## 491   510.408122  493.7305063  527.0857369
## 492   258.718338  246.9709892  270.4656864
## 493   487.684949  471.9541160  503.4157824
## 494   351.230256  339.4626451  362.9978665
## 495   330.457868  318.9164149  341.9993213
## 496   359.896983  347.9990718  371.7948946
## 497   330.064627  318.5262478  341.6030061
## 498   508.017832  491.4423459  524.5933181
## 499   425.275259  411.7993909  438.7511270
## 500   404.950087  392.0668417  417.8333318
## 501   111.391682   95.2764940  127.5068700
## 502   274.293773  262.7210706  285.8664759
## 503    88.845854   71.7696584  105.9220490
## 504   397.856324  385.1598625  410.5527857
## 505   294.441601  282.9893755  305.8938272
## 506   315.337359  303.8809714  326.7937461
## 507   407.957225  394.9915525  420.9228981
## 508   527.872657  510.4325275  545.3127863
## 509   171.010131  157.1418412  184.8784206
## 510   373.914875  361.7637464  386.0660037
## 511   207.481324  194.7039280  220.2587195
## 512   365.448624  353.4565787  377.4406684
## 513   278.843034  267.3080798  290.3779884
## 514   588.809620  568.5244656  609.0947751
## 515   241.862941  229.8503602  253.8755215
## 516   527.502548  510.0788605  544.9262346
## 517   182.637733  169.1447311  196.1307352
## 518   102.848324   86.3749646  119.3216840
## 519   451.923133  437.5558969  466.2903683
## 520   519.907595  502.8186779  536.9965123
## 521   137.815948  122.7560812  152.8758147
## 522   468.015179  453.0556221  482.9747360
## 523   230.813634  218.5865429  243.0407260
## 524   445.261164  431.1278202  459.3945082
## 525    98.607488   81.9535550  115.2614209
## 526   155.164824  140.7484744  169.5811736
## 527   502.011266  485.6898859  518.3326453
## 528   289.892340  278.4235179  301.3611631
## 529   378.456425  366.2124481  390.7004025
## 530   280.647317  269.1256443  292.1689901
## 531   269.297297  257.6761624  280.9184314
## 532   462.039455  447.3041837  476.7747264
## 533   348.500699  336.7698303  360.2315682
## 534   405.266222  392.3744009  418.1580428
## 535   121.908956  106.2237757  137.5941367
## 536   266.752795  255.1042189  278.4013713
## 537   248.085404  236.1796772  259.9911316
## 538   495.218217  479.1796719  511.2567616
## 539   343.049297  331.3855265  354.7130672
## 540    78.552187   61.0213245   96.0830499
## 541    96.834047   80.1040751  113.5640195
## 542   238.115584  226.0337491  250.1974181
## 543   230.960136  218.7360905  243.1841816
## 544   550.634382  532.1617722  569.1069924
## 545   318.460156  306.9918087  329.9285043
## 546    91.960941   75.0204702  108.9014113
## 547   561.822480  542.8282889  580.8166706
## 548   270.592680  258.9847978  282.2005615
## 549    52.104789   33.3664402   70.8431386
## 550   111.052415   94.9231510  127.1816791
## 551   206.579182  193.7780243  219.3803401
## 552    67.217588   49.1757868   85.2593894
## 553   368.162759  356.1217321  380.2037855
## 554    74.504116   56.7919691   92.2162631
## 555   531.581461  513.9759245  549.1869976
## 556   236.758516  224.6507082  248.8663238
## 557   324.798279  313.2966566  336.2999018
## 558   517.779466  500.7834256  534.7755069
## 559    19.727931   -0.5535749   40.0094375
## 560   578.408005  558.6255579  598.1904527
## 561   156.390811  142.0182812  170.7633413
## 562   531.913017  514.2926377  549.5333970
## 563   452.940933  438.5373583  467.3445084
## 564   383.290979  370.9425678  395.6393898
## 565   277.910050  266.3678506  289.4522495
## 566   303.802284  292.3645404  315.2400273
## 567   414.896776  401.7337663  428.0597851
## 568   127.545413  112.0854003  143.0054262
## 569   269.366692  257.7462802  280.9871047
## 570   196.185278  183.0979078  209.2726476
## 571   248.532620  236.6341749  260.4310649
## 572   198.058956  185.0248390  211.0930737
## 573   199.215548  186.2139444  212.2171518
## 574   398.303540  385.5956267  411.0114524
## 575   186.616409  173.2461910  199.9866264
## 576   379.666991  367.3974002  391.9365825
## 577   297.094052  285.6486213  308.5394821
## 578     3.882624  -17.1757786   24.9410275
## 579   267.678068  256.0396867  279.3164503
## 580   322.662440  311.1733731  334.1515065
## 581   250.213533  238.3419772  262.0850893
## 582   215.376990  202.7999068  227.9540732
## 583   270.369072  258.7589371  281.9792067
## 584   113.296203   97.2598005  129.3326056
## 585   205.846674  193.0260927  218.6672555
## 586   108.669836   92.4413713  124.8983009
## 587   516.946720  499.9869091  533.9065314
## 588   378.109448  365.8727456  390.3461500
## 589   316.956587  305.4943646  328.4188098
## 590    88.398638   71.3028846  105.4943918
## 591   207.627825  194.8542717  220.4013790
## 592   612.273011  590.8329294  633.7130935
## 593   440.472874  426.5032572  454.4424916
## 594   157.462586  143.1281759  171.7969967
## 595   364.068424  352.1005463  376.0363018
## 596    36.259483   16.7739326   55.7450326
## 597    86.000638   68.7997037  103.2015723
## 598   226.788695  214.4758511  239.1015392
## 599   103.842993   87.4117243  120.2742622
## 600   141.355119  126.4299507  156.2802866
## 601   133.582822  118.3596652  148.8059792
## 602   385.920297  373.5127170  398.3278777
## 603   463.789764  448.9893125  478.5902153
## 604   375.588078  363.4033420  387.7728136
## 605   284.225041  272.7268470  295.7232349
## 606    70.409781   52.5129181   88.3066446
## 607   228.793454  216.5238192  241.0630892
## 608   103.272408   86.8170063  119.7278097
## 609   139.134463  124.1249744  154.1439506
## 610   527.494837  510.0714923  544.9181815
## 611   108.878023   92.6582500  125.0977952
## 612   248.663700  236.7673795  260.5600210
## 613    47.971902   29.0402498   66.9035534
## 614    75.699261   58.0407769   93.3577449
## 615   273.599818  262.0208236  285.1788128
## 616   255.071219  243.2730477  266.8693894
## 617   177.610414  163.9580980  191.2627307
## 618  1153.820106 1102.5137627 1205.1264503
## 619   319.262060  307.7901676  330.7339526
## 620   136.983202  121.8913980  152.0750058
## 621   321.528980  310.0460228  333.0119369
## 622   145.541981  130.7739530  160.3100085
## 623   459.101712  444.4748611  473.7285630
## 624   186.739779  173.3733205  200.1062365
## 625   461.700188  446.9775008  476.4228755
## 626     6.689287  -14.2305764   27.6091506
## 627   550.842569  532.3603331  569.3248045
## 628   448.869730  434.6105578  463.1289030
## 629   167.555777  153.5714799  181.5400738
## 630   123.466500  107.8439208  139.0890786
## 631   434.319806  420.5549650  448.0846477
## 632   406.592447  393.6644191  419.5204750
## 633   383.290979  370.9425678  395.6393898
## 634   150.060399  135.4591845  164.6616138
## 635   548.691308  530.3083859  567.0742305
## 636   257.114531  245.3452885  268.8837726
## 637   553.757180  535.1398615  572.3744985
## 638   334.829785  323.2510918  346.4084780
## 639   388.333719  375.8703826  400.7970550
## 640   469.842594  454.8134732  484.8717148
## 641   390.346188  377.8353157  402.8570612
## 642   488.725882  472.9529146  504.4988490
## 643   386.321249  373.9045011  398.7379972
## 644   255.603251  243.8127236  267.3937778
## 645   500.230114  483.9833703  516.4768583
## 646   259.898061  248.1663581  271.6297646
## 647   714.885831  688.1414680  741.6301932
## 648   327.897945  316.3756841  339.4202060
## 649   508.542154  491.9443133  525.1399939
## 650   417.371882  404.1361501  430.6076140
## 651   663.270997  639.2381375  687.3038556
## 652   126.041844  110.5221402  141.5615479
## 653   421.682114  408.3168930  435.0473349
## 654   291.920231  280.4595770  303.3808857
## 655   282.783157  271.2759582  294.2903550
## 656  1088.488094 1040.9233210 1136.0528678
## 657   374.130772  361.9753468  386.2861976
## 658   105.894016   89.5492187  122.2388132
## 659   464.969487  450.1248621  479.8141128
## 660   261.987637  250.2826855  273.6925887
## 661   335.384949  323.8011263  346.9687715
## 662    55.744198   37.1750971   74.3132990
## 663   351.399889  339.6299265  363.1698519
## 664   101.845945   85.3300666  118.3618230
## 665    14.685191   -5.8421522   35.2125348
## 666    45.751245   26.7152559   64.7872350
## 667   249.141758  237.2531455  261.0303709
## 668    64.048527   45.8620595   82.2349941
## 669   126.689535  111.1955784  142.1834924
## 670   323.333263  311.8403995  334.8261265
## 671   358.910025  347.0279853  370.7920645
## 672   358.470520  346.5954637  370.3455764
## 673   416.176737  402.9762714  429.3772032
## 674   498.078854  481.9218065  514.2359008
## 675   307.326033  295.8868668  318.7651998
## 676   107.906486   91.6461101  124.1668610
## 677   528.512638  511.0440491  545.9812262
## 678   443.981203  429.8919906  458.0704148
## 679   180.339971  166.7747224  193.9052194
## 680   405.104299  392.2168732  417.9917248
## 681   426.871356  413.3455666  440.3971445
## 682   431.690488  418.0111604  445.3698151
## 683   218.075704  205.5638623  230.5875458
## 684   201.937394  189.0112133  214.8635747
## 685   408.820814  395.8311202  421.8105074
## 686   414.210531  401.0674701  427.3535925
## 687   571.360506  551.9150896  590.8059230
## 688  1141.529392 1090.9281350 1192.1306481
## 689   501.872475  485.5569226  518.1880265
## 690   437.342366  423.4777377  451.2069945
## 691   291.881678  280.4208802  303.3424764
## 692   373.598740  361.4538818  385.7435982
## 693   227.914444  215.6259848  240.2029042
## 694     2.525557  -18.5999700   23.6510837
## 695   268.433708  256.8034694  280.0639474
## 696   379.104117  366.8464801  391.3617533
## 697   170.154253  156.2574075  184.0510985
## 698   106.109913   89.7741928  122.4456333
## 699   255.849990  244.0629815  267.6369990
## 700   506.676186  490.1577750  523.1945962
## 701   510.014880  493.3541057  526.6756551
## 702   452.385769  438.0020353  466.7695034
## 703   449.262972  434.9899629  463.5359804
## 704   597.499480  576.7898200  618.2091392
## 705   220.358045  207.9000643  232.8160259
## 706   456.433840  441.9043673  470.9633135
## 707   176.769958  163.0905639  190.4493516
## 708   234.622677  222.4730387  246.7723144
## 709   413.431760  400.3112222  426.5522969
## 710   172.883809  159.0775981  186.6900209
## 711    96.348279   79.5974251  113.0991324
## 712   327.651205  316.1306919  339.1717191
## 713   158.010040  143.6950324  172.3250470
## 714   351.924211  340.1469277  363.7014939
## 715   289.267781  277.7961935  300.7393684
## 716   492.411554  476.4884018  508.3347065
## 717   574.814860  555.2046199  594.4251006
## 718   100.966935   84.4136881  117.5201821
## 719   354.329922  342.5180749  366.1417684
## 720   249.851134  237.9738458  261.7284231
## 721   478.439926  463.0776487  493.8022032
## 722   357.421877  345.5632708  369.2804829
## 723    48.049008   29.1209729   66.9770425
## 724   458.268966  443.6726221  472.8653099
## 725   -40.530498  -63.8275435  -17.2334532
## 726   247.029051  235.1059091  258.9521922
## 727   521.534534  504.3743357  538.6947326
## 728   480.028312  464.6034528  495.4531710
## 729   340.851773  329.2126571  352.4908880
## 730   594.754502  574.1793641  615.3296397
## 731   178.805559  165.1915307  192.4195877
## 732   314.874722  303.4198568  326.3295874
## 733   413.416338  400.2962457  426.5364309
## 734   249.172601  237.2844831  261.0607182
## 735   593.235511  572.7346460  613.7363768
## 736   456.996715  442.4467838  471.5466464
## 737   421.581876  408.2197069  434.9440451
## 738   445.585010  431.4404581  459.7295616
## 739    36.475380   17.0001181   55.9506413
## 740   386.498593  374.0777781  398.9194084
## 741   395.951803  383.3036104  408.5999957
## 742   171.056395  157.1896448  184.9231442
## 743   277.663310  266.1191520  289.2074690
## 744   200.056005  187.0778546  213.0341549
## 745   535.637243  517.8495172  553.4249684
## 746   548.128434  529.7714410  566.4854261
## 747    32.743444   13.0899404   52.3969470
## 748   450.350168  436.0387811  464.6615546
## 749   161.464394  147.2707410  175.6580464
## 750   391.757230  379.2124675  404.3019932
## 751   545.036478  526.8215047  563.2514519
## 752   298.875203  287.4331421  310.3172639
## 753   351.399889  339.6299265  363.1698519
## 754   525.829345  508.4798439  543.1788457
## 755   483.845065  468.2685598  499.4215695
## 756   394.001018  381.4014245  406.6006121
## 757   381.394168  369.0874103  393.7009264
## 758   352.803221  341.0134939  364.5929471
## 759   215.168803  202.5866181  227.7509889
## 760   201.035252  188.0842441  213.9862607
## 761   175.543970  161.8248541  189.2630869
## 762   511.903980  495.1621671  528.6457934
## 763   505.265144  488.8065654  521.7237219
## 764   145.495717  130.7259663  160.2654679
## 765   480.915032  465.4551009  496.3749636
## 766   277.347175  265.8004808  288.8938701
## 767   479.820125  464.4034866  495.2367642
## 768   421.566455  408.2047550  434.9281545
## 769   263.198203  251.5081855  274.8882208
## 770   380.145049  367.8652439  392.4248547
## 771   457.289718  442.7291191  471.8503175
## 772   510.307884  493.6345625  526.9812048
## 773   231.037242  218.8147976  243.2596867
## 774   160.886098  146.6722596  175.0999361
## 775   -45.658055  -69.2185416  -22.0975685
## 776   221.260187  208.8231595  233.6972138
## 777   215.924443  203.3607300  228.4881569
## 778   474.152826  458.9578728  489.3477789
## 779   295.837222  284.3888367  307.2856074
## 780   458.793288  444.1777473  473.4088279
## 781   452.686483  438.2920077  467.0809586
## 782   181.404035  167.8723634  194.9357072
## 783    60.378276   42.0233184   78.7332329
## 784   136.559118  121.4510149  151.6672216
## 785   145.218135  130.4380399  159.9982303
## 786    59.129157   40.7166294   77.5416837
## 787    33.830640   14.2291493   53.4321306
## 788   229.834387  217.5867987  242.0819748
## 789   239.233622  227.1728307  251.2944139
## 790   216.078656  203.5186960  228.6386154
## 791   386.228722  373.8140927  398.6433509
## 792   534.041146  516.3252789  551.7570134
## 793    31.278427   11.5547246   51.0021303
## 794   296.939839  285.4940722  308.3856068
## 795   260.368409  248.6428342  272.0939831
## 796   250.028479  238.1539996  261.9029574
## 797   444.628894  430.5173832  458.7404050
## 798   365.518019  353.5247459  377.5112922
## 799   471.654588  456.5560497  486.7531257
## 800    50.678326   31.8733900   69.4832625
## 801   378.710876  366.4615445  390.9602065
## 802   263.915290  252.2339226  275.5966575
## 803   170.262202  156.3689645  184.1554386
## 804   539.430864  521.4715252  557.3902021
## 805   273.229709  261.6473010  284.8121166
## 806   284.710810  273.2155096  296.2061094
## 807   339.988184  328.3583780  351.6179901
## 808   327.782286  316.2608463  339.3037255
## 809   361.701266  349.7736623  373.6288703
## 810   460.690098  446.0047796  475.3754165
## 811   108.839470   92.6180876  125.0608515
## 812    66.330868   48.2486655   84.4130701
## 813   465.825365  450.9485713  480.7021593
## 814   308.374676  296.9343603  319.8149927
## 815   609.628272  588.3197176  630.9368257
## 816   410.293541  397.2625276  423.3245537
## 817   138.910855  123.8928393  153.9288703
## 818    75.182650   57.5009840   92.8643158
## 819   408.111438  395.1414867  421.0813884
## 820   100.604536   84.0358605  117.1732122
## 821   490.823168  474.9649295  506.6814068
## 822    71.759138   53.9233000   89.5949768
## 823   341.846441  330.1963379  353.4965450
## 824    74.504116   56.7919691   92.2162631
## 825   578.408005  558.6255579  598.1904527
## 826   505.789465  489.3086778  522.2702527
## 827   621.841880  599.9232742  643.7604867
## 828   193.555959  180.3926651  206.7192533
## 829   526.160901  508.7967190  543.5250833
## 830    29.088614    9.2597450   48.9174826
## 831   328.900325  317.3707794  340.4298697
## 832   277.832944  266.2901342  289.3757537
## 833   337.867766  326.2599047  349.4756270
## 834    95.407584   78.6162287  112.1989395
## 835   174.911700  161.1719948  188.6514059
## 836   452.108187  437.7343562  466.4820184
## 837   283.268925  271.7648295  294.7730207
## 838   531.612304  514.0053866  549.2192204
## 839   255.472170  243.6797672  267.2645734
## 840   338.276428  326.6644389  349.8884176
## 841   164.001185  149.8954498  178.1069201
## 842   210.442199  197.7415432  223.1428539
## 843   165.157777  151.0917816  179.2237717
## 844    51.372281   32.5997562   70.1448064
## 845   537.796214  519.9109626  555.6814654
## 846   527.780130  510.3441118  545.2161472
## 847   376.752380  364.5438444  388.9609159
## 848   327.913366  316.3909955  339.4357371
## 849   287.016282  275.5337563  298.4988084
## 850    17.854253   -2.5184380   38.2269434
## 851   280.739845  269.2188268  292.2608623
## 852   405.327907  392.4344100  418.2214035
## 853   536.585648  518.7551266  554.4161694
## 854   139.458308  124.4611582  154.4554582
## 855   259.211817  247.4710602  270.9525736
## 856   367.931440  355.8946633  379.9682177
## 857   199.084468  186.0791929  212.0897425
## 858   328.476241  316.9498139  340.0026680
## 859   192.777187  179.5911406  205.9632342
## 860   562.516435  543.4896122  581.5432574
## 861    80.742001   63.3086324   98.1753694
## 862   245.548613  233.6005642  257.4966622
## 863   -40.530498  -63.8275435  -17.2334532
## 864   199.909503  186.9272753  212.8917310
## 865   283.423137  271.9200121  294.9262627
## 866   348.130590  336.4045422  359.8566376
## 867   236.712252  224.6035507  248.8209539
## 868    51.881182   33.1324037   70.6299596
## 869   311.628555  300.1825519  323.0745573
## 870   137.160546  122.0755512  152.2455407
## 871   442.331132  428.2984204  456.3638432
## 872   383.167609  370.8219335  395.5132845
## 873    68.767421   50.7960877   86.7387545
## 874   228.531293  216.2560638  240.8065230
## 875   374.655094  362.4891844  386.8210032
## 876   524.749859  507.4480915  542.0516268
## 877   231.923962  219.7198232  244.1281017
## 878   209.462951  196.7371283  222.1887735
## 879   568.021811  548.7350008  587.3086222
## 880    33.622453   14.0110084   53.2338984
## 881    92.570079   75.6560436  109.4841145
## 882   177.656678  164.0058486  191.3075076
## 883   184.056486  170.6076065  197.5053648
## 884   295.736984  284.2883425  307.1856257
## 885   571.360506  551.9150896  590.8059230
## 886   534.465230  516.7302899  552.2001697
## 887   258.109199  246.3536201  269.8647789
## 888   227.359280  215.0588342  239.6597267
## 889   296.384675  284.9376359  307.8317150
## 890   426.670880  413.1513867  440.1903726
## 891   146.945312  132.2294055  161.6612187
## 892   297.888245  286.4444353  309.3320541
## 893   492.504081  476.5771389  508.4310240
## 894   108.808627   92.5859576  125.0312966
## 895   279.058931  267.5256169  290.5922455
## 896   327.728312  316.2072539  339.2493693
## 897   395.813012  383.1683053  408.4577188
## 898   505.619832  489.1462327  522.0934309
## 899   187.603367  174.2631458  200.9435883
## 900    70.085936   52.1744049   87.9974664
## 901   528.666850  511.1913984  546.1423013
## 902   319.069295  307.5982720  330.5403176
## 903   416.901535  403.6797152  430.1233543
## 904   341.915837  330.2649562  353.5667177
## 905   355.926018  344.0903604  367.7616761
## 906   557.597065  538.8008708  576.3932584
## 907   568.060365  548.7717263  587.3490027
## 908   253.891495  242.0760964  265.7068935
## 909   270.893394  259.2885187  282.4982683
## 910   255.718910  243.9300341  267.5077857
## 911   506.306076  489.8033789  522.8087736
## 912   480.814794  465.3588325  496.2707561
## 913   304.735268  293.2975138  316.1730219
## 914   176.453823  162.7642112  190.1434341
## 915   638.226930  615.4799127  660.9739475
## 916   386.020535  373.6106666  398.4304040
## 917   465.385860  450.5255981  480.2461228
## 918   550.634382  532.1617722  569.1069924
## 919   230.165943  217.9253214  242.4065648
## 920   477.136833  461.8256613  492.4480039
## 921   256.443707  244.6650956  268.2223192
## 922   459.533506  444.8907972  474.1762153
## 923   208.969472  196.2308864  221.7080571
## 924   167.416986  153.4279863  181.4059855
## 925   541.875128  523.8046187  559.9456364
## 926    89.786548   72.7514333  106.8216633
## 927   499.852294  483.6213392  516.0832494
## 928   473.119604  457.9646249  488.2745829
## 929   474.484382  459.2765723  489.6921920
## 930   429.022616  415.4288050  442.6164273
## 931   515.651337  498.7477551  532.5549199
## 932   257.153084  245.3843763  268.9217910
## 933   402.444138  389.6281197  415.2601563
## 934    97.821006   81.1333887  114.5086224
## 935   480.915032  465.4551009  496.3749636
## 936   155.257351  140.8443169  169.6703859
## 937   455.230985  440.7450735  469.7168965
## 938   422.383780  408.9971424  435.7704168
## 939   327.566389  316.0464717  339.0863059
## 940   368.548289  356.5001493  380.5964295
## 941   401.526575  388.7348350  414.3183154
## 942   333.950775  322.3800196  345.5215307
## 943   534.102831  516.3841905  551.8214716
## 944   629.398280  607.0989902  651.6975694
## 945    16.574291   -3.8607986   37.0093809
## 946   299.222181  287.7806643  310.6636968
## 947   348.369619  336.6404618  360.0987759
## 948   428.074211  414.5104918  441.6379301
## 949   208.298649  195.5426282  221.0546689
## 950   425.136468  411.6649186  438.6080173
## 951   116.935612  101.0486486  132.8225748
## 952   304.056734  292.6190138  315.4944542
## 953   241.300066  229.2773161  253.3228163
## 954   231.399641  219.1847013  243.6145805
## 955   257.145373  245.3765588  268.9141873
## 956    32.157437   12.4758694   51.8390050
## 957   362.379800  350.4408043  374.3187960
## 958   315.699758  304.2421328  327.1573822
## 959   356.882134  345.0318786  368.7323895
## 960   319.840356  308.3657873  331.3149246
## 961   446.371492  432.1996519  460.5433326
## 962   307.194953  295.7559067  318.6339991
## 963   217.936913  205.4217569  230.4520692
## 964   211.860951  199.1963818  224.5255204
## 965   288.581537  277.1067762  300.0562969
## 966   323.819032  312.3233347  335.3147284
## 967   618.379816  596.6348111  640.1248206
## 968   159.721795  145.4671572  173.9764338
## 969   168.396234  154.4403456  182.3521215
## 970   240.983931  228.9554332  253.0124291
## 971   551.019913  532.5294752  569.5103506
## 972   215.508070  202.9341946  228.0819462
## 973    22.819887    2.6884351   42.9513380
## 974   356.966951  345.1153884  368.8185132
## 975   522.907023  505.6865067  540.1275394
## 976   547.133765  528.8225362  565.4449931
## 977   538.351378  520.4409886  556.2617675
## 978   340.851773  329.2126571  352.4908880
## 979   176.939591  163.2656726  190.6135098
## 980   311.096522  299.6516685  322.5413763
## 981   262.334615  250.6339859  274.0352434
## 982   -60.878802  -85.2265482  -36.5310565
## 983   159.652400  145.3953231  173.9094768
## 984   392.751899  380.1829716  405.3208268
## 985   524.372039  507.0869542  541.6571243
## 986   405.543804  392.6444354  418.4431723
## 987   535.220870  517.4519097  552.9898298
## 988   485.788139  470.1337579  501.4425196
## 989   516.090842  499.1682000  533.0134848
## 990   174.132929  160.3677672  187.8980899
## 991   562.308248  543.2912185  581.3252780
## 992    93.510774   76.6374938  110.3840536
## 993   225.647525  213.3096481  237.9854012
## 994   398.581122  385.8660788  411.2961643
## 995   399.645186  386.9026548  412.3877172
## 996   170.154253  156.2574075  184.0510985
## 997   483.305322  467.7503691  498.8602745
## 998   102.817482   86.3428155  119.2921483
## 999   309.107185  297.6658677  320.5485015
## 1000  256.991161  245.2202050  268.7621166
## 1001  503.283516  486.9086228  519.6584102
## 1002  635.451110  612.8451950  658.0570248
## 1003  336.032640  324.4427197  347.6225609
## 1004   74.619775   56.9128265   92.3267240
## 1005  186.392801  173.0157615  199.7698405
## 1006  180.224312  166.6554012  193.7932223
## 1007  407.217007  394.2717996  420.1622135
## 1008  548.128434  529.7714410  566.4854261
## 1009   52.104789   33.3664402   70.8431386
## 1010  184.896942  171.4740245  198.3198602
## 1011  499.736635  483.5105104  515.9627600
## 1012  280.901767  269.3818899  292.4216448
## 1013  134.253645  119.0565205  149.4507703
## 1014  164.209371  150.1108055  178.3079374
## 1015  196.154435  183.0661828  209.2426877
## 1016  359.742771  347.8473569  371.6381851
## 1017  448.507332  434.2608886  462.7537748
## 1018  319.285192  307.8131943  330.7571895
## 1019  150.692669  136.1145623  165.2707763
## 1020   57.240057   38.7402491   75.7398643
## 1021  171.210607  157.3489878  185.0722257
## 1022  120.929709  105.2050235  136.6543936
## 1023  399.005205  386.2792368  411.7311737
## 1024  160.438882  146.2093978  174.6683669
## 1025   35.380473   15.8530048   54.9079409
## 1026  335.901560  324.3128833  347.4902365
## 1027  122.525805  106.8654516  138.1861586
## 1028   17.592092   -2.7933722   37.9775560
## 1029  149.713422  135.0995012  164.3273420
## 1030  428.398057  414.8240805  441.9720328
## 1031  476.373482  461.0921491  491.6548150
## 1032  608.702998  587.4403827  629.9656138
## 1033  431.320378  417.6529905  444.9877664
## 1034  141.100668  126.1658727  156.0354642
## 1035  515.350624  498.4600719  532.2411754
## 1036  118.084493  102.2443954  133.9245903
## 1037  189.507888  176.2250237  202.7907524
## 1038  259.589637  247.8538810  271.3253928
## 1039  187.904081  174.5729623  201.2351995
## 1040  269.459220  257.8397684  281.0786711
## 1041  373.375132  361.2346940  385.5155705
## 1042  202.338346  189.4231448  215.2535468
## 1043  -36.459295  -59.5478419  -13.3707489
## 1044  488.270956  472.5164181  504.0254933
## 1045  169.414034  155.4923920  183.3356765
## 1046  157.385480  143.0483332  171.7226271
## 1047  160.600805  146.3769893  174.8246211
## 1048  495.642300  479.5862441  511.6983567
## 1049  173.022600  159.2209635  186.8242375
## 1050  244.985739  233.0280665  256.9434106
## 1051  448.507332  434.2608886  462.7537748
## 1052  123.427947  107.8038217  139.0520717
## 1053  434.427755  420.6593769  448.1961329
## 1054  101.799681   85.2818381  118.3175242
## 1055  110.597489   94.4493307  126.7456472
## 1056  445.978251  431.8200674  460.1364348
## 1057  229.780412  217.5316878  242.0291371
## 1058  312.708040  301.2594435  324.1566369
## 1059  458.561969  443.9549028  473.1690356
## 1060  422.915812  409.5128738  436.3187498
## 1061  386.213301  373.7990245  398.6275767
## 1062  404.340948  391.4741680  417.2077289
## 1063  225.485602  213.1441478  237.8270558
## 1064  178.142447  164.5072061  191.7776871
## 1065  406.885450  393.9493732  419.8215273
## 1066   31.640826   11.9345004   51.3471521
## 1067  545.691880  527.4468622  563.9368983
## 1068  396.476125  383.8147240  409.1375252
## 1069   73.617396   55.8653588   91.3694327
## 1070  418.428236  405.1611007  431.6953710
## 1071  155.257351  140.8443169  169.6703859
## 1072  446.880393  432.6908424  461.0699429
## 1073  363.698315  351.7368320  375.6597975
## 1074  207.920829  195.1549453  220.6867119
## 1075  261.031521  249.3144818  272.7485608
## 1076  582.849318  562.8529706  602.8456646
## 1077  573.781638  554.2207740  593.3425027
## 1078  109.109341   92.8992209  125.3194610
## 1079  287.278443  275.7972690  298.7596174
## 1080  217.882939  205.3664925  230.3993850
## 1081  412.807200  399.7046384  425.9097616
## 1082  184.735020  171.3071102  198.1629288
## 1083  514.294270  497.4494249  531.1391149
## 1084  213.757762  201.1407352  226.3747880
## 1085  482.595946  467.0692652  498.1226260
## 1086  319.809513  308.3350901  331.2839369
## 1087   87.951423   70.8360927  105.0667527
## 1088  552.878170  534.3016545  571.4546861
## 1089  239.179648  227.1178479  251.2414481
## 1090  454.421371  439.9646582  468.8780834
## 1091  563.549657  544.4741905  582.6251230
## 1092  203.818783  190.9438288  216.6937376
## 1093  451.923133  437.5558969  466.2903683
## 1094  199.099889  186.0950462  212.1047316
## 1095  342.964480  331.3016870  354.6272732
## 1096  378.348477  366.1067661  390.5901874
## 1097  516.969852  500.0090354  533.9306687
## 1098  525.505499  508.1703289  542.8406694
## 1099  114.375689   98.3837651  130.3676122
## 1100  339.409888  327.7861960  351.0335804
## 1101  548.012774  529.6611069  566.3644418
## 1102  319.632169  308.1585758  331.1057631
## 1103  198.560146  185.5401517  211.5801405
## 1104  311.744214  300.2979500  323.1904776
## 1105  133.135607  117.8950628  148.3761506
## 1106  487.993374  472.2500695  503.7366779
## 1107  293.878727  282.4247855  305.3326679
## 1108   19.727931   -0.5535749   40.0094375
## 1109  406.399682  393.4769394  419.3224241
## 1110  414.241374  401.0974180  427.3853295
## 1111  493.606699  477.6345167  509.5788812
## 1112  531.581461  513.9759245  549.1869976
## 1113  321.606086  310.1227255  333.0894465
## 1114  663.270997  639.2381375  687.3038556
## 1115   27.083855    7.1584627   47.0092468
## 1116  455.408329  440.9160085  469.9006496
## 1117  160.477435  146.2493009  174.7055699
## 1118  181.242112  167.7053444  194.7788806
## 1119   76.161898   58.5241548   93.7996403
## 1120  264.231425  252.5538247  275.9090254
## 1121  445.746933  431.5967708  459.8970946
## 1122  145.333794  130.5580105  160.1095779
## 1123  302.853879  291.4158756  314.2918816
## 1124  275.805053  264.2455651  287.3645411
## 1125  261.987637  250.2826855  273.6925887
## 1126  206.610025  193.8096820  219.4103672
## 1127  567.512911  548.2502145  586.7756078
## 1128  263.506628  251.8203484  275.1929068
## 1129   29.489566    9.6799735   49.2991576
## 1130  395.103636  382.4766784  407.7305931
## 1131  421.188635  407.8384199  434.5388497
## 1132  101.576073   85.0487306  118.1034163
## 1133  230.829056  218.6022850  243.0558263
## 1134  561.714531  542.7254135  580.7036489
## 1135  463.766632  448.9670449  478.5662192
## 1136  284.618282  273.1224364  296.1141279
## 1137  185.220788  171.8078384  198.6337377
## 1138  562.408486  543.3867418  581.4302307
## 1139  -13.705281  -35.6402558    8.2296946
## 1140  284.687678  273.1922415  296.1831138
## 1141  334.428833  322.8537886  346.0038775
## 1142  188.127689  174.8033274  201.4520498
## 1143   65.737151   47.6278636   83.8464378
## 1144  159.320844  145.0521058  173.5895816
## 1145  389.605970  377.1126912  402.0992481
## 1146   65.528964   47.4101734   83.6477550
## 1147  226.734721  214.4207000  239.0487418
## 1148  321.482716  310.0000004  332.9654321
## 1149  346.881471  335.1714102  358.5915315
## 1150  106.557129   90.2401952  122.8740619
## 1151  345.100320  333.4122929  356.7883462
## 1152  427.056410  413.5248031  440.5880174
## 1153  -40.530498  -63.8275435  -17.2334532
## 1154  542.738716  524.6288191  560.8486130
## 1155  319.531931  308.0588026  331.0050604
## 1156   79.685647   62.2052988   97.1659954
## 1157  256.705868  244.9309330  268.4808034
## 1158  338.947251  327.3283808  350.5661222
## 1159  513.939582  497.1100598  530.7691036
## 1160  343.488802  331.8199345  355.1576689
## 1161  243.798304  231.8200563  255.7765524
## 1162  321.482716  310.0000004  332.9654321
## 1163  361.146102  349.2277274  373.0644771
## 1164  523.770612  506.5120565  541.0291665
## 1165  212.716829  200.0738119  225.3598461
## 1166  385.172368  372.7817868  397.5629492
## 1167  279.344224  267.8130554  290.8753922
## 1168  173.994138  160.2244284  187.7638467
## 1169  496.451915  480.3623728  512.5414564
## 1170  531.265326  513.6739336  548.8567184
## 1171   12.834645   -7.7832514   33.4525404
## 1172   56.854526   38.3368747   75.3721776
## 1173  473.875244  458.6910437  489.0594440
## 1174  416.138184  402.9388512  429.3375172
## 1175   84.566464   67.3023789  101.8305495
## 1176  266.760506  255.1120155  278.4089959
## 1177  159.513609  145.2516529  173.7755651
## 1178  320.989237  309.5090542  332.4694200
## 1179  121.469451  105.7665544  137.1723483
## 1180  600.514329  579.6564789  621.3721786
## 1181  272.289014  260.6977513  283.8802771
## 1182  234.275699  222.1191565  246.4322416
## 1183  325.407418  313.9019647  336.9128703
## 1184   17.730883   -2.6478184   38.1095842
## 1185  109.471740   93.2767306  125.6667488
## 1186   73.794740   56.0506860   91.5387937
## 1187  243.937095  231.9612715  255.9129192
## 1188  379.697834  367.4275854  391.9680822
## 1189  144.501048  129.6941799  159.3079165
## 1190  255.510723  243.7188725  267.3025742
## 1191  507.532063  490.9772635  524.0868635
## 1192  421.096107  407.7487010  434.4435139
## 1193  351.947343  340.1697348  363.7249504
## 1194  382.064992  369.7436021  394.3863810
## 1195  238.138715  226.0573196  250.2201113
## 1196  393.893070  381.2961401  406.4899994
## 1197  263.198203  251.5081855  274.8882208
## 1198  442.084392  428.0600913  456.1086932
## 1199  503.645915  487.2557474  520.0360830
## 1200  357.984752  346.1173526  369.8521504
## 1201  324.250826  312.7525513  335.7491003
## 1202  349.726687  337.9795726  361.4738004
## 1203  298.057878  286.6143903  309.5013661
## 1204   19.512034   -0.7799692   39.8040376
## 1205  415.444229  402.2652389  428.6232194
## 1206  294.611235  283.1595071  306.0629624
## 1207  554.096447  535.4633655  572.7295284
## 1208   43.137348   23.9781295   62.2965667
## 1209  213.541864  200.9194674  226.1642614
## 1210  181.666196  168.1427649  195.1896273
## 1211  227.127962  214.8224992  239.4334249
## 1212  408.597206  395.6137470  421.5806651
## 1213  495.696275  479.6379883  511.7545611
## 1214  479.303514  463.9072510  494.6997779
## 1215  338.993515  327.3741651  350.6128652
## 1216  226.719300  214.4049424  239.0336570
## 1217  376.297454  364.0982579  388.4966502
## 1218  160.940072  146.7281201  175.1520241
## 1219  431.220140  417.5559819  444.8842991
## 1220  166.707610  152.6945243  180.7206948
## 1221  -29.427218  -52.1570779   -6.6973574
## 1222  103.873836   87.4438703  120.3038011
## 1223  497.647059  481.5079563  513.7861626
## 1224  211.691318  199.0224573  224.3601781
## 1225  159.467345  145.2037621  173.7309285
## 1226  480.182524  464.7515725  495.6134758
## 1227  374.177036  362.0206882  386.3333836
## 1228   75.267467   57.5896082   92.9453251
## 1229  323.641687  312.1470332  335.1363418
## 1230  198.128352  185.0961930  211.1605107
## 1231  244.152992  232.1809295  256.1250554
## 1232  196.162146  183.0741141  209.2501777
## 1233  225.377653  213.0338108  237.7214957
## 1234  120.829471  105.1007354  136.5582057
## 1235  189.978235  176.7094284  203.2470424
## 1236  400.686119  387.9164564  413.4557808
## 1237  327.643495  316.1230356  339.1639541
## 1238  556.317103  537.5806476  575.0535585
## 1239  122.865072  107.2183543  138.5117898
## 1240  242.549185  230.5488909  254.5494797
## 1241   99.856607   83.2560471  116.4571669
## 1242  357.044057  345.1913046  368.8968092
## 1243  492.457818  476.5327705  508.3828651
## 1244  410.540280  397.5023009  423.5782594
## 1245  115.092776   99.1303274  131.0552237
## 1246  -85.020727 -110.6318287  -59.4096259
## 1247  -40.530498  -63.8275435  -17.2334532
## 1248  214.081607  201.4726170  226.6905975
## 1249   59.144578   40.7327621   77.5563935
## 1250  403.646993  390.7988738  416.4951130
## 1251  441.143698  427.1513695  455.1360257
## 1252  421.589587  408.2271828  434.9519904
## 1253  501.263336  484.9733377  517.5533348
## 1254  477.745971  462.4109364  493.0810054
## 1255  426.871356  413.3455666  440.3971445
## 1256  326.941829  315.4262388  338.4574197
## 1257  387.192548  374.7557470  399.6293495
## 1258  473.690189  458.5131521  488.8672263
## 1259  205.098745  192.2582118  217.9392777
## 1260  492.681426  476.7472159  508.6156352
## 1261  178.142447  164.5072061  191.7776871
## 1262  600.892149  580.0156955  621.7686019
## 1263  467.984337  453.0259498  482.9427233
## 1264  144.169492  129.3502203  158.9887634
## 1265  265.110435  253.4431592  276.7777104
## 1266  548.012774  529.6611069  566.3644418
## 1267  313.216941  301.7669989  324.6668822
## 1268   53.199696   34.5123621   71.8870304
## 1269  253.081881  241.2544378  264.9093236
## 1270  560.781547  541.8362440  579.7268503
## 1271  333.094897  321.5316531  344.6581414
## 1272  396.591784  383.9274614  409.2561062
## 1273  200.873330  187.9178470  213.8288121
## 1274  342.555818  330.8977044  354.2139311
## 1275   84.751519   67.4955924  102.0074455
## 1276  412.876595  399.7720404  425.9811505
## 1277  189.770049  176.4950251  203.0450727
## 1278  216.232868  203.6766565  228.7890793
## 1279  455.624226  441.1240970  470.1243554
## 1280  257.476929  245.7126971  269.2411616
## 1281  508.364810  491.7745333  524.9550858
## 1282  280.369735  268.8460817  291.8933886
## 1283  191.813361  178.5989889  205.0277330
## 1284  208.267806  195.5109818  221.0246304
## 1285  109.803296   93.6220996  125.9844924
## 1286  163.692760  149.5763914  177.8091296
## 1287  341.846441  330.1963379  353.4965450
## 1288  262.735566  251.0398906  274.4312423
## 1289  542.784980  524.6729711  560.8969884
## 1290  306.686053  295.2474241  318.1246810
## 1291   23.151443    3.0360508   43.2668349
## 1292   77.472702   59.8936295   95.0517736
## 1293  233.581744  221.4113010  245.7521870
## 1294  233.173082  220.9943960  245.3517671
## 1295  278.827613  267.2925409  290.3626848
## 1296  364.531061  352.5551383  376.5069832
## 1297  164.132265  150.0310449  178.2334857
## 1298  347.398082  335.6814625  359.1147011
## 1299  507.454957  490.9034387  524.0064761
## 1300  -40.530498  -63.8275435  -17.2334532
## 1301 1117.857814 1068.6130265 1167.1026014
## 1302  629.398280  607.0989902  651.6975694
## 1303   80.125152   62.6643615   97.5859424
## 1304  242.965558  230.9726583  254.9584583
## 1305  453.920181  439.4814947  468.3588674
## 1306  371.169897  359.0723680  383.2674267
## 1307  288.712617  277.2384735  300.1867603
## 1308  526.592695  509.2093791  543.9760116
## 1309  404.132762  391.2715905  416.9939334
## 1310  363.258810  351.3048741  375.2127457
## 1311  408.188544  395.2164519  421.1606354
## 1312  401.727051  388.9300220  414.5240802
## 1313  249.720054  237.8406832  261.5994250
## 1314  478.432215  463.0702411  493.7941895
## 1315  357.028636  345.1761215  368.8811499
## 1316  111.661553   95.5575534  127.7655534
## 1317  264.108055  252.4289883  275.7871224
## 1318  257.052846  245.2827473  268.8229441
## 1319  212.539485  199.8920156  225.1869543
## 1320  188.744538  175.4387678  202.0503073
## 1321  532.699500  515.0438746  550.3551249
## 1322  261.663791  249.9547744  273.3728084
## 1323  498.302461  482.1361140  514.4688088
## 1324  192.900557  179.7181228  206.0829916
## 1325   43.461194   24.3172666   62.6051210
## 1326  463.188336  448.4103300  477.9663423
## 1327   92.176838   75.2457407  109.1079351
## 1328  252.495874  240.6596014  264.3321471
## 1329  -47.778473  -71.4481699  -24.1087766
## 1330  453.750548  439.3179539  468.1831413
## 1331  111.707817   95.6057342  127.8098999
## 1332  277.547651  266.0025684  289.0927342
## 1333  452.439744  438.0540826  466.8254046
## 1334  602.087294  581.1519462  623.0226408
## 1335  580.921665  561.0182956  600.8250338
## 1336  302.190766  290.7524197  313.6291123
## 1337  455.670490  441.1686865  470.1722932
## 1338  178.265816  164.6345282  191.8971045
## 1339  210.442199  197.7415432  223.1428539
## 1340  207.442771  194.6643631  220.2211783
## 1341  288.149742  276.6729130  299.6265715
## 1342  235.224104  223.0863624  247.3618461
## 1343  386.213301  373.7990245  398.6275767
## 1344   47.594082   28.6447010   66.5434622
## 1345   89.524387   72.4778320  106.5709430
## 1346  158.010040  143.6950324  172.3250470
## 1347  108.955129   92.7385743  125.1716832
## 1348  288.327086  276.8511136  299.8030591
## 1349  380.168181  367.8878800  392.4484821
## 1350  562.408486  543.3867418  581.4302307
## 1351  491.825548  475.9263772  507.7247181
## 1352  445.353692  431.2171470  459.4902361
## 1353   42.181232   22.9768282   61.3856363
## 1354  434.743890  420.9651429  448.5226371
## 1355  434.512572  420.7414134  448.2837299
## 1356  438.506668  424.6031852  452.4101517
## 1357  195.691799  182.5902849  208.7933123
## 1358  380.923821  368.6272565  393.2203856
## 1359  523.847718  506.5857631  541.1096721
## 1360  158.526651  144.2299108  172.8233906
## 1361  353.127066  341.3327012  364.9214312
## 1362   34.694228   15.1340021   54.2544547
## 1363  310.564490  299.1206995  322.0082808
## 1364  304.156972  292.7192556  315.5946884
## 1365  361.200077  349.2808081  373.1193451
## 1366  481.123219  465.6550390  496.5913985
## 1367  264.231425  252.5538247  275.9090254
## 1368  194.419548  181.2813433  207.5577521
## 1369  220.358045  207.9000643  232.8160259
## 1370  420.309625  406.9860246  433.6332256
## 1371  343.750963  332.0790289  355.4228962
## 1372  291.203144  279.7397431  302.6665458
## 1373  177.610414  163.9580980  191.2627307
## 1374  291.881678  280.4208802  303.3424764
## 1375  335.300132  323.7170991  346.8831653
## 1376  278.719664  267.1837667  290.2555619
## 1377  335.307843  323.7247380  346.8909476
## 1378   66.300025   48.2164167   84.3836340
## 1379  344.383233  332.7038228  356.0626425
## 1380          NA           NA           NA
## 1381  259.335187  247.5960674  271.0743061
## 1382  320.649970  309.1714863  332.1284540
## 1383          NA           NA           NA
## 1384          NA           NA           NA
## 1385   62.753144   44.5073242   80.9989639
## 1386  613.668632  592.1590131  635.1782512
## 1387          NA           NA           NA
## 1388  109.109341   92.8992209  125.3194610
## 1389  248.339855  236.4382773  260.2414319
## 1390  483.845065  468.2685598  499.4215695
## 1391  316.170105  304.7108152  327.6293945
## 1392   76.532007   58.9108445   94.1531694
## 1393  201.482468  188.5437886  214.4211472
## 1394  222.848573  210.4479715  235.2491738
## 1395  131.346745  116.0363982  146.6570914
## 1396  394.463655  381.8526134  407.0746966
## 1397  210.033536  197.3224037  222.7446687
## 1398  107.968170   91.7103759  124.2259650
## 1399  393.893070  381.2961401  406.4899994
## 1400  295.181820  283.7317044  306.6319357
## 1401  368.471183  356.4244690  380.5178976
## 1402  408.111438  395.1414867  421.0813884
## 1403  192.453342  179.2577981  205.6488854
## 1404  185.883901  172.4913004  199.2765009
## 1405  244.846948  232.8868898  256.8070053
## 1406  186.523881  173.1508420  199.8969208
## 1407  266.752795  255.1042189  278.4013713
## 1408  418.921715  405.6398354  432.2035946
## 1409  341.491753  329.8456006  353.1379060
## 1410  186.600988  173.2302997  199.9716754
## 1411  436.671543  422.8291965  450.5138893
## 1412  519.522065  502.4500035  536.5941255
## 1413  234.291120  222.1348852  246.4473553
## 1414  523.030393  505.8044464  540.2563392
## 1415  166.977481  152.9735686  180.9813934
## 1416  345.285374  333.5951002  356.9756483
## 1417   76.161898   58.5241548   93.7996403
## 1418  297.309949  285.8649780  308.7549197
## 1419  179.422408  165.8280408  193.0167755
## 1420   91.621674   74.6664649  108.5768828
## 1421  168.257443  154.2968713  182.2180138
## 1422  408.257939  395.2839195  421.2319588
## 1423  393.654041  381.0630010  406.2450806
## 1424  319.030742  307.5598916  330.5015919
## 1425   45.751245   26.7152559   64.7872350
## 1426  118.801580  102.9906578  134.6125016
## 1427  168.396234  154.4403456  182.3521215
## 1428  235.270368  223.1335374  247.4071985
## 1429  200.356719  187.3869246  213.3265126
## 1430  147.662399  132.9730177  162.3517802
## 1431  110.597489   94.4493307  126.7456472
## 1432  141.925704  127.0220934  156.8293144
## 1433  615.125938  593.5436135  636.7082619
## 1434  170.377861  156.4884877  184.2672337
## 1435  447.890483  433.6656596  462.1153060
## 1436  141.331987  126.4059440  156.2580297
## 1437  368.471183  356.4244690  380.5178976
## 1438   59.638057   41.2489979   78.0271159
## 1439  229.518252  217.2639961  241.7725072
## 1440  209.462951  196.7371283  222.1887735
## 1441  159.189763  144.9164105  173.4631161
## 1442  182.367862  168.8664246  195.8692989
## 1443   68.536103   50.5542636   86.5179418
## 1444  506.360051  489.8550625  522.8650385
## 1445  538.975938  521.0372388  556.9146363
## 1446  301.635602  290.1968657  313.0743382
## 1447  503.383754  487.0046373  519.7628716
## 1448  309.161159  297.7197618  320.6025559
## 1449  441.675730  427.6653366  455.6861230
## 1450  436.764070  422.9186550  450.6094854
## 1451  256.736711  244.9622067  268.5112145
## 1452  498.001748  481.8479062  514.1555889
## 1453  471.392427  456.3039592  486.4808947
## 1454  212.408405  199.7576398  225.0591693
## 1455  153.985100  139.5263701  168.4438308
## 1456  431.320378  417.6529905  444.9877664
## 1457  235.509397  223.3772660  247.6415278
## 1458  104.351894   87.9421204  120.7616668
## 1459  624.818177  602.7499141  646.8864389
## 1460  197.804506  184.7631989  210.8458134
## 1461  401.796447  388.9975847  414.5953085
## 1462  348.523831  336.7926595  360.2550027
## 1463  256.443707  244.6650956  268.2223192
## 1464   29.104035    9.2759078   48.9321622
## 1465  118.092203  102.2524201  133.9319868
## 1466  283.130134  271.6251592  294.6351091
## 1467  292.760688  281.3030561  304.2183199
## 1468  548.128434  529.7714410  566.4854261
## 1469  218.893029  206.4006146  231.3854432
## 1470  421.481638  408.1225189  434.8407572
## 1471   80.233101   62.7771113   97.6890898
## 1472  166.730741  152.7184429  180.7430400
## 1473  169.228980  155.3011238  183.1568354
## 1474  633.153348  610.6640057  655.6426896
## 1475  403.970839  391.1140239  416.8276543
## 1476  209.277896  196.5472938  222.0084986
## 1477  401.727051  388.9300220  414.5240802
## 1478  363.443865  351.4867573  375.4009718
## 1479  217.929202  205.4138620  230.4445428
## 1480  341.699940  330.0514726  353.3484071
## 1481  367.931440  355.8946633  379.9682177
## 1482  385.920297  373.5127170  398.3278777
## 1483   51.333728   32.5594034   70.1080531
## 1484   48.966570   30.0815468   67.8515942
## 1485  483.667721  468.0983010  499.2371401
## 1486  444.305048  430.2046953  458.4054014
## 1487  514.008977  497.1764583  530.8414962
## 1488  395.227006  382.5969695  407.8570416
## 1489  495.341587  479.2979495  511.3852236
## 1490  286.044745  274.5570300  297.5324606
## 1491  368.787318  356.7347487  380.8398881
## 1492  232.216966  220.0188321  244.4150993
## 1493  577.698629  557.9502401  597.4470179
## 1494  347.829876  336.1077172  359.5520349
## 1495  177.409938  163.7511747  191.0687023
## 1496  406.623289  393.6944151  419.5521639
## 1497  155.719988  141.3235096  170.1164666
## 1498  313.186098  301.7362402  324.6359560
## 1499  454.537030  440.0761521  468.9979078
## 1500  429.716571  416.1006386  443.3325038
## 1501  312.253114  300.8056536  323.7005747
## 1502  141.925704  127.0220934  156.8293144
## 1503  225.593550  213.2544820  237.9326187
## 1504  318.845687  307.3756592  330.3157149
## 1505  284.602861  273.1069240  296.0987979
## 1506  388.996831  376.5179361  401.4757267
## 1507  342.193419  330.5394156  353.8474223
## 1508  262.280640  250.5793414  273.9819393
## 1509  510.246199  493.5755197  526.9168779
## 1510  317.835597  306.3698760  329.3013178
## 1511  551.019913  532.5294752  569.5103506
## 1512  257.083688  245.3140180  268.8533582
## 1513  468.662870  453.6787093  483.6470315
## 1514  514.857145  497.9879579  531.7263311
## 1515   63.416257   45.2008353   81.6316779
## 1516  300.787435  289.3479225  312.2269469
## 1517  331.575907  320.0254645  343.1263491
## 1518  156.390811  142.0182812  170.7633413
## 1519  193.000795  179.8212936  206.1802967
## 1520  111.692396   95.5896739  127.7951177
## 1521  573.912719  554.3455938  593.4798437
## 1522  440.842984  426.8608457  454.8251219
## 1523  192.306840  179.1069935  205.5066867
## 1524  190.024499  176.7570725  203.2919257
## 1525  -71.357524  -96.2515335  -46.4635135
## 1526  353.458623  341.6594787  365.2577664
## 1527  534.156805  516.4357379  551.8778727
## 1528  118.207863  102.3727889  134.0429364
## 1529  472.256015  457.1343409  487.3776899
## 1530   53.847388   35.1901922   72.5045830
## 1531  341.422358  329.7769739  353.0677417
## 1532  310.942310  299.4977733  322.3868471
## 1533  435.854218  422.0389159  449.6695203
## 1534  257.083688  245.3140180  268.8533582
## 1535   81.536194   64.1380831   98.9343046
## 1536   81.536194   64.1380831   98.9343046
## 1537  -26.998375  -49.6047860   -4.3919639
## 1538  424.311432  410.8654817  437.7573833
## 1539  456.564921  442.0306876  471.0991540
## 1540  358.377993  346.5043998  370.2515856
## 1541  147.824322  133.1409200  162.5077236
## 1542  479.018222  463.6331962  494.4032474
## 1543  409.144659  396.1459183  422.1434007
## 1544  298.050168  286.6066652  309.4936699
## 1545  302.460637  291.0224469  313.8988279
## 1546  228.461898  216.1851846  240.7386112
## 1547  135.965401  120.8344388  151.0963635
## 1548  140.537794  125.5816690  155.4939187
## 1549  410.794730  397.7495542  423.8399066
## 1550  189.122358  175.8279388  202.4167762
## 1551  345.231400  333.5417824  356.9210175
## 1552  493.814885  477.8341462  509.7956247
## 1553  394.679552  382.0631517  407.2959525
## 1554  488.270956  472.5164181  504.0254933
## 1555  421.682114  408.3168930  435.0473349
## 1556  187.348917  174.0009799  200.6968538
## 1557  265.388017  253.7239558  277.0520778
## 1558  147.292290  132.5892270  161.9953522
## 1559  111.484209   95.3728581  127.5955605
## 1560  442.762926  428.7154724  456.8103797
## 1561  209.462951  196.7371283  222.1887735
## 1562  284.710810  273.2155096  296.2061094
## 1563   91.667938   74.7147390  108.6211361
## 1564  517.447910  500.4663018  534.4295182
## 1565  243.389642  231.4042264  255.3750575
## 1566  271.425426  259.8258067  283.0250447
## 1567  394.903160  382.2811981  407.5251216
## 1568  482.364627  466.8471529  497.8821016
## 1569  329.709939  318.1742932  341.2455844
## 1570  482.117888  466.6102259  497.6255494
## 1571  540.078555  522.0898034  558.0673067
## 1572  202.338346  189.4231448  215.2535468
## 1573  600.514329  579.6564789  621.3721786
## 1574  111.067836   94.9392124  127.1964602
## 1575  225.593550  213.2544820  237.9326187
## 1576  196.192988  183.1058391  209.2801376
## 1577  250.182691  238.3106482  262.0547333
## 1578  530.625345  513.0625606  548.1881298
## 1579  171.010131  157.1418412  184.8784206
## 1580  367.993125  355.9552164  380.0310344
## 1581  168.681526  154.7352549  182.6277974
## 1582  503.784706  487.3886852  520.1807273
## 1583  537.456947  519.5870458  555.3268484
## 1584  255.580119  243.7892611  267.3709767
## 1585  528.982985  511.4934584  546.4725115
## 1586  178.142447  164.5072061  191.7776871
## 1587  213.472469  200.8483434  226.0965944
## 1588  375.703737  363.5166521  387.8908218
## 1589  171.264581  157.4047569  185.1244052
## 1590  486.058010  470.3927777  501.7232426
## 1591  144.501048  129.6941799  159.3079165
## 1592  474.291617  459.0912836  489.4919501
## 1593    7.460348  -13.4215230   28.3422194
## 1594  249.720054  237.8406832  261.5994250
## 1595  306.979056  295.5401964  318.4179152
## 1596  275.080256  263.5145135  286.6459977
## 1597   33.830640   14.2291493   53.4321306
## 1598  180.054678  166.4803923  193.6289642
## 1599  491.077618  475.2090001  506.9462365
## 1600  184.334068  170.8937775  197.7743579
## 1601  316.802375  305.3407422  328.2640078
## 1602  597.337557  576.6358432  618.0392704
## 1603  446.302097  432.1326682  460.4715253
## 1604  244.854658  232.8947330  256.8145832
## 1605  110.720859   94.5778266  126.8638910
## 1606  318.568105  307.0992913  330.0369187
## 1607  455.685911  441.1835496  470.1882726
## 1608  296.808759  285.3626998  308.2548184
## 1609  367.607595  355.5767435  379.6384461
## 1610  406.885450  393.9493732  419.8215273
## 1611  431.011954  417.3544969  444.6694111
## 1612   -2.802476  -24.1923883   18.5874367
## 1613  399.043758  386.3167946  411.7707220
## 1614  163.453731  149.3291105  177.5783525
## 1615  143.390720  128.5422551  158.2391851
## 1616  329.069958  317.5391507  340.6007653
## 1617  120.305149  104.5552097  136.0550883
## 1618  341.915837  330.2649562  353.5667177
## 1619  434.743890  420.9651429  448.5226371
## 1620  310.094143  298.6512209  321.5370649
## 1621  300.409615  288.9696867  311.8495427
## 1622   46.545438   27.5468017   65.5440752
## 1623  415.660126  402.4748174  428.8454352
## 1624  292.290341  280.8310436  303.7496378
## 1625  321.205134  309.7238521  332.6864163
## 1626  322.246067  310.7592891  333.7328444
## 1627  264.894538  253.2247466  276.5643288
## 1628  217.798122  205.2796471  230.3165970
## 1629   51.565047   32.8015187   70.3285745
## 1630  181.542826  168.0155187  195.0701339
## 1631  464.969487  450.1248621  479.8141128
## 1632  231.122059  218.9013737  243.3427441
## 1633  309.176580  297.7351600  320.6180002
## 1634   77.249094   59.6600233   94.8381643
## 1635  261.578975  249.8688881  273.2890613
## 1636  362.896411  350.9486597  374.8441626
## 1637  287.185916  275.7042669  298.6675648
## 1638  439.493627  425.5570278  453.4302257
## 1639  241.508253  229.4892736  253.5272319
## 1640  137.276205  122.1956488  152.3567614
## 1641  178.635926  165.0164784  192.2553731
## 1642  396.198543  383.5441421  408.8529431
## 1643  336.410460  324.8169260  348.0039945
## 1644   91.274696   74.3044030  108.2449897
## 1645  485.903798  470.2447675  501.5628284
## 1646  204.111786  191.2447425  216.9788304
## 1647  352.664430  340.8766819  364.4521771
## 1648  354.129446  342.3205403  365.9383511
## 1649  342.193419  330.5394156  353.8474223
## 1650  337.682711  326.0767035  349.2887189
## 1651   74.727724   57.0256259   92.4298218
## 1652  534.018014  516.3031870  551.7328416
## 1653  165.443069  151.3868434  179.4992952
## 1654 1113.331685 1064.3460244 1162.3173455
## 1655   97.165604   80.4498707  113.8813365
## 1656  175.705893  161.9920384  189.4197482
## 1657  184.110460  170.6632520  197.5576679
## 1658  384.863944  372.4803336  397.2475536
## 1659  289.745839  278.2763782  301.2152995
## 1660  457.312850  442.7514082  471.8742921
## 1661  292.791530  281.3340055  304.2490555
## 1662  170.863629  156.9904604  184.7367981
## 1663  401.996923  389.1927600  414.8010851
## 1664  237.838002  225.7508928  249.9251104
## 1665  163.769867  149.6561574  177.8835758
## 1666  221.422109  208.9888230  233.8553960
## 1667  389.305256  376.8190887  401.7914230
## 1668  184.866100  171.4422317  198.2899681
## 1669  434.319806  420.5549650  448.0846477
## 1670  501.263336  484.9733377  517.5533348
## 1671  194.095702  180.9481064  207.2432976
## 1672  569.455985  550.1011289  588.8108416
## 1673  519.576039  502.5016187  536.6504589
## 1674  461.700188  446.9775008  476.4228755
## 1675  433.795485  420.0477927  447.5431768
## 1676   57.340295   38.8451247   75.8354646
## 1677  114.244608   98.2472906  130.2419260
## 1678   23.945636    3.8686865   44.0225852
## 1679  283.654456  272.1527726  295.1561388
## 1680  157.848117  143.5273754  172.1688583
## 1681  444.775396  430.6588316  458.8919597
## 1682  196.432017  183.3517009  209.5123337
## 1683   75.545049   57.8796470   93.2104504
## 1684   83.116869   65.7887698  100.4449687
## 1685  282.644366  271.1362678  294.1524634
## 1686  227.266753  214.9643018  239.5692044
## 1687  509.151292  492.5274471  525.7751367
## 1688  337.551631  325.9469300  349.1563316
## 1689  351.554101  339.7819936  363.3262093
## 1690  527.872657  510.4325275  545.3127863
## 1691  280.153838  268.6286284  291.6790477
## 1692  378.055474  365.8199003  390.2910468
## 1693   41.734017   22.5084575   60.9595761
## 1694   89.285359   72.2283665  106.3423505
## 1695   42.142679   22.9364519   61.3489065
## 1696  382.280889  369.9547671  394.6070102
## 1697  225.740052  213.4042168  238.0758872
## 1698  569.224667  549.8807944  588.5685394
## 1699  221.144527  208.7048246  233.5842303
## 1700  469.950543  454.9172985  484.9837866
## 1701  372.480701  360.3578160  384.6035867
## 1702  198.128352  185.0961930  211.1605107
## 1703   43.191322   24.0346528   62.3479920
## 1704  325.816080  314.3079956  337.3241643
## 1705  -23.397519  -45.8213392   -0.9736996
## 1706  195.992512  182.8996235  209.0854014
## 1707  353.913549  342.1077984  365.7192988
## 1708  303.493859  292.0560614  314.9316573
## 1709  401.387784  388.5997005  414.1758679
## 1710  319.724697  308.2506714  331.1987222
## 1711  545.568510  527.3291503  563.8078707
## 1712  499.366526  483.1558484  515.5772032
## 1713  218.962424  206.4716524  231.4531964
## 1714  521.557666  504.3964523  538.7188797
## 1715   46.183040   27.1673636   65.1987158
## 1716  173.022600  159.2209635  186.8242375
## 1717  366.050051  354.0473187  378.0527838
## 1718   72.106116   54.2859461   89.9262856
## 1719  243.929385  231.9534264  255.9053432
## 1720  328.992852  317.4626194  340.5230845
## 1721   38.025213   18.6237230   57.4267022
## 1722  614.802092  593.2359329  636.3682512
## 1723  597.699956  576.9804561  618.4194549
## 1724  538.312825  520.4041820  556.2214679
## 1725  198.598699  185.5797890  211.6176093
## 1726   30.044730   10.2618129   49.8276463
## 1727  230.004020  217.7599998  242.2480407
## 1728   83.062895   65.7324085  100.3933815
## 1729  479.018222  463.6331962  494.4032474
## 1730  449.918374  435.6222512  464.2144961
## 1731  263.344705  251.6564662  275.0329433
## 1732   45.751245   26.7152559   64.7872350
## 1733  188.813933  175.5102502  202.1176159
## 1734  537.202497  519.3441022  555.0608916
## 1735  482.572814  467.0470542  498.0985733
## 1736  441.721993  427.7100272  455.7339598
## 1737  511.903980  495.1621671  528.6457934
## 1738  498.726545  482.5425444  514.9105457
## 1739  325.600183  314.0934949  337.1068707
## 1740  228.592978  216.3190666  240.8668900
## 1741  331.591328  320.0407591  343.1418969
## 1742  189.184042  175.8914743  202.4766105
## 1743  253.058749  241.2309592  264.8865386
## 1744  443.857833  429.7728605  457.9428053
## 1745  349.518500  337.7741743  361.2628257
## 1746  532.329390  514.6903578  549.9684230
## 1747  120.536467  104.7958867  136.2770479
## 1748  416.978641  403.7545435  430.2027382
## 1749  440.619376  426.6448054  454.5939467
## 1750  521.264663  504.1163047  538.4130208
## 1751  390.045475  377.5417648  402.5491843
## 1752  248.532620  236.6341749  260.4310649
## 1753  147.292290  132.5892270  161.9953522
## 1754  299.268444  287.8269978  310.7098906
## 1755  135.826610  120.6902975  150.9629228
## 1756   25.117649    5.0973660   45.1379317
## 1757  218.700264  206.2032813  231.1972459
## 1758  208.236964  195.4793352  220.9945922
## 1759  200.233349  187.2601289  213.2065687
## 1760  502.921118  486.5614845  519.2807510
## 1761  386.675937  374.2510476  399.1008270
## 1762    5.987621  -14.9668407   26.9420836
## 1763  360.274803  348.3707464  372.1788599
## 1764  457.706091  443.1303107  472.2818719
## 1765   70.926392   53.0529099   88.7998747
## 1766  419.260982  405.9689382  432.5530256
## 1767  185.405843  171.9985803  198.8131052
## 1768  455.670490  441.1686865  470.1722932
## 1769  119.456982  103.6726740  135.2412894
## 1770  270.268834  258.6576845  281.8799834
## 1771   98.329906   81.6640915  114.9957204
## 1772  294.973634  283.5229411  306.4243260
## 1773  445.978251  431.8200674  460.1364348
## 1774  560.365174  541.4394059  579.2909424
## 1775  230.605448  218.3740187  242.8368771
## 1776  230.004020  217.7599998  242.2480407
## 1777  131.107716  115.7880114  146.4274203
## 1778  125.039465  109.4798142  140.5991148
## 1779  205.707883  192.8836084  218.5321577
## 1780  405.682595  392.7794465  418.5857432
## 1781   57.348005   38.8531921   75.8428185
## 1782  229.132721  216.8703011  241.3951411
## 1783  399.668318  386.9251863  412.4114494
## 1784  450.882200  436.5519658  465.2124343
## 1785  168.427076  154.4722283  182.3819236
## 1786  263.298441  251.6096414  274.9872408
## 1787  280.184680  268.6596940  291.7096670
## 1788  179.800228  166.2178693  193.3825869
## 1789  370.745814  358.6563937  382.8352337
## 1790  497.654770  481.5153466  513.7941934
## 1791  164.001185  149.8954498  178.1069201
## 1792  278.827613  267.2925409  290.3626848
## 1793  534.850760  517.0984691  552.6030517
## 1794  192.306840  179.1069935  205.5066867
## 1795  164.371294  150.2782996  178.4642890
## 1796  121.546557  105.8467703  137.2463446
## 1797  383.823011  371.4627608  396.1832611
## 1798  181.326929  167.7928311  194.8610273
## 1799  390.523532  378.0084256  403.0386394
## 1800  485.903798  470.2447675  501.5628284
## 1801  506.275234  489.7738452  522.7766223
## 1802  485.348634  469.7119071  500.9853607
## 1803  359.534584  347.6425315  371.4266374
## 1804  187.472287  174.1280922  200.8164811
## 1805  246.219436  234.2827460  258.1561268
## 1806  317.835597  306.3698760  329.3013178
## 1807  -43.275476  -66.7134363  -19.8375159
## 1808   45.836062   26.8040638   64.8680606
## 1809  598.440174  577.6843256  619.1960229
## 1810  388.634433  376.1640533  401.1048120
## 1811  192.777187  179.5911406  205.9632342
## 1812  262.164981  250.4622433  273.8677191
## 1813  516.437820  499.5001173  533.3755224
## 1814  389.004542  376.5254651  401.4836188
## 1815  457.351403  442.7885565  471.9142499
## 1816   70.039672   52.1260452   87.9532987
## 1817  353.342963  341.5454900  365.1404367
## 1818  458.978342  444.3560172  473.6006673
## 1819  290.154501  278.6868042  301.6221983
## 1820  152.874772  138.3759636  167.3735812
## 1821  384.077461  371.7115248  396.4433975
## 1822  245.803063  233.8593369  257.7467898
## 1823  158.526651  144.2299108  172.8233906
## 1824  394.864607  382.2436047  407.4856089
## 1825  306.547262  295.1087334  317.9857897
## 1826   96.664414   79.9271523  113.4016754
## 1827  318.868819  307.3986888  330.3389490
## 1828  506.105600  489.6114085  522.5997922
## 1829  524.186985  506.9100660  541.4639031
## 1830   76.431769   58.8061171   94.0574208
## 1831  127.067355  111.5883937  142.5463170
## 1832  247.931192  236.0229414  259.8394430
## 1833  323.356395  311.8633980  334.8493917
## 1834  273.183445  261.6006079  284.7662824
## 1835  324.250826  312.7525513  335.7491003
## 1836  222.247145  209.8328217  234.6614682
## 1837  521.079608  503.9393654  538.2198508
## 1838  269.767644  258.1513778  281.3839106
## 1839  387.192548  374.7557470  399.6293495
## 1840  343.712409  332.0409280  355.3838909
## 1841  150.792907  136.2184582  165.3673563
## 1842  556.679502  537.9261439  575.4328597
## 1843  110.373881   94.2164278  126.5313347
## 1844  427.102674  413.5696112  440.6357366
## 1845  408.496968  395.5163004  421.4776358
## 1846  571.198583  551.7608750  590.6362919
## 1847  -67.340295  -92.0244902  -42.6560996
## 1848  133.675350  118.4557866  148.8949124
## 1849  346.580757  334.8744793  358.2870346
## 1850   94.466890   77.6349476  111.2988314
## 1851  543.602305  525.4529626  561.7516465
## 1852   73.432341   55.6719713   91.1927109
## 1853  458.029937  443.4423311  472.6175429
## 1854  397.123816  384.4460150  409.8016170
## 1855  539.561944  521.5966556  557.5272325
## 1856  474.461250  459.2543379  489.6681627
## 1857  350.528590  338.7706231  362.2865572
## 1858   63.747813   45.5475786   81.9480473
## 1859  442.277158  428.2462868  456.3080283
## 1860  318.059205  306.5925567  329.5258526
## 1861  434.157884  420.3983434  447.9174236
## 1862  -10.089004  -31.8426056   11.6645981
## 1863  378.348477  366.1067661  390.5901874
## 1864  448.214328  433.9781623  462.4504946
## 1865  434.512572  420.7414134  448.2837299
## 1866  365.880418  353.8807094  377.8801262
## 1867  155.234220  140.8203564  169.6480827
## 1868  169.491140  155.5720855  183.4101953
## 1869  137.106572  122.0195050  152.1936383
## 1870  536.423725  518.6005154  554.2469348
## 1871  107.066029   90.7704484  123.3616094
## 1872  440.858405  426.8757447  454.8410653
## 1873  244.785263  232.8241429  256.7463824
## 1874  365.818733  353.8201223  377.8173435
## 1875  284.379253  272.8819856  295.8765208
## 1876   85.383789   68.1557154  102.6118628
## 1877  156.483339  142.1141064  170.8525708
## 1878  463.782053  448.9818899  478.5822166
## 1879  439.084964  425.1620972  453.0078314
## 1880  443.695910  429.6164985  457.7753216
## 1881  446.340650  432.1698815  460.5114182
## 1882  136.011665  120.8824854  151.1408443
## 1883  291.920231  280.4595770  303.3808857
## 1884  385.650426  373.2489946  398.0518573
## 1885  135.256025  120.0976901  150.4143597
## 1886  305.776200  294.3381232  317.2142776
## 1887  242.101970  230.0936826  254.1102570
## 1888  572.301201  552.8109714  591.7914305
## 1889  491.748442  475.8524237  507.6444593
## 1890  226.110161  213.7824711  238.4378516
## 1891  422.460886  409.0718894  435.8498821
## 1892  583.412192  563.3886558  603.4357286
## 1893  141.887151  126.9820852  156.7922165
## 1894  377.161043  364.9440730  389.3780121
## 1895  439.216045  425.2887761  453.1433133
## 1896  280.693581  269.1722359  292.2149259
## 1897   93.495352   76.6214051  110.3692998
## 1898  602.788959  581.8190024  623.7589160
## 1899  778.598614  748.4211394  808.7760891
## 1900  358.817498  346.9369325  370.6980627
## 1901  254.469791  242.6628851  266.2766965
## 1902   72.414540   54.6082902   90.2207905
## 1903  467.560253  452.6179435  482.5025624
## 1904  131.562642  116.2607413  146.8645425
## 1905  253.922337  242.1073941  265.7372807
## 1906  386.020535  373.6106666  398.4304040
## 1907  368.062521  356.0233374  380.1017044
## 1908  157.902091  143.5832615  172.2209208
## 1909  176.916459  163.2417944  190.5911243
## 1910  144.794051  129.9981314  159.5899715
## 1911  615.303282  593.7121033  636.8944603
## 1912  421.211767  407.8608493  434.5626839
## 1913  522.907023  505.6865067  540.1275394
## 1914  502.065240  485.7415933  518.3888864
## 1915  304.735268  293.2975138  316.1730219
## 1916  341.969811  330.3183251  353.6212974
## 1917   47.594082   28.6447010   66.5434622
## 1918  179.514935  165.9235114  193.1063596
## 1919   57.240057   38.7402491   75.7398643
## 1920  165.574150  151.5224079  179.6258915
## 1921  147.438791  132.7411465  162.1364359
## 1922  448.569017  434.3204082  462.8176250
## 1923  605.225512  584.1351860  626.3158389
## 1924  499.967954  483.7321667  516.2037403
## 1925  526.060663  508.7009205  543.4204058
## 1926   76.678509   59.0639060   94.2931111
## 1927  327.358202  315.8397402  338.8766643
## 1928  446.140174  431.9763699  460.3039780
## 1929  401.665366  388.8699654  414.4607670
## 1930  385.048998  372.6612082  397.4367882
## 1931  379.057853  366.8011955  391.3145105
## 1932  421.890300  408.5187349  435.2618660
## 1933   64.017684   45.8298053   82.2055633
## 1934  129.434513  114.0491028  144.8199234
## 1935  486.898467  471.1993846  502.5975491
## 1936  171.387951  157.5322273  185.2436744
## 1937  325.708131  314.2007470  337.2155158
## 1938  320.757919  309.2788980  332.2369394
## 1939  165.666677  151.6180987  179.7152553
## 1940   97.566555   80.8680279  114.2650829
## 1941  467.259539  452.3286151  482.1904631
## 1942  120.004435  104.2423202  135.7665501
## 1943   84.867178   67.6163492  102.1180070
## 1944  461.198998  446.4948710  475.9031257
## 1945  167.879623  153.9062861  181.8529590
## 1946  447.489531  433.2787285  461.7003334
## 1947  389.035384  376.5555813  401.5151875
## 1948  548.490832  530.1171479  566.8645167
## 1949  179.723122  166.1383146  193.3079294
## 1950  209.277896  196.5472938  222.0084986
## 1951  295.968302  284.5202476  307.4163573
## 1952  340.674428  329.0372423  352.3116146
## 1953  525.212496  507.8902836  542.5347082
## 1954  459.387005  444.7496791  474.0243303
## 1955  378.140290  365.9029425  390.3776379
## 1956  494.138731  478.1446715  510.1327908
## 1957  128.933323  113.5281636  144.3384832
## 1958  264.023239  252.3431607  275.7033165
## 1959  648.358674  625.0941540  671.6231934
## 1960  337.682711  326.0767035  349.2887189
## 1961  441.791389  427.7770624  455.8057155
## 1962  454.259448  439.8085634  468.7103325
## 1963  243.674935  231.6945274  255.6553418
## 1964  216.903691  204.3637215  229.4436607
## 1965  278.511478  266.9739782  290.0489774
## 1966  475.964820  460.6994303  491.2302089
## 1967  398.773887  386.0538828  411.4938910
## 1968  497.099606  480.9832243  513.2159876
## 1969  461.761873  447.0368989  476.4868472
## 1970  562.732332  543.6953508  581.7693131
## 1971  331.013032  319.4671614  342.5589029
## 1972  202.831825  189.9300909  215.7335589
## 1973  168.427076  154.4722283  182.3819236
## 1974  216.186604  203.6292689  228.7439395
## 1975  323.333263  311.8403995  334.8261265
## 1976  -64.217497  -88.7389282  -39.6960661
## 1977  153.252592  138.7674420  167.7377427
## 1978  196.462860  183.3834241  209.5422954
## 1979  185.243920  171.8316815  198.6561583
## 1980  143.637460  128.7982532  158.4766662
## 1981   91.089642   74.1112987  108.0679846
## 1982   98.329906   81.6640915  114.9957204
## 1983  631.387618  608.9877141  653.7875211
## 1984  353.836442  342.0318160  365.6410690
## 1985  311.852162  300.4056512  323.2986735
## 1986   71.227106   53.3672238   89.0869885
## 1987  342.016075  330.3640691  353.6680807
## 1988  297.757164  286.3131005  309.2012281
## 1989   82.661943   65.3137163  100.0101700
## 1990  349.749818  338.0023939  361.4972428
## 1991  464.267822  449.4494932  479.0861504
## 1992  208.452861  195.7008572  221.2048644
## 1993  608.795526  587.5283180  630.0627332
## 1994  630.076814  607.7432242  652.4104031
## 1995    7.059396  -13.8422271   27.9610200
## 1996  646.076333  622.9287204  669.2239450
## 1997  512.358906  495.5975262  529.1202865
## 1998  337.744396  326.1377717  349.3510205
## 1999  153.345120  138.8633111  167.8269283
## 2000  422.152461  408.7728946  435.5320279
## 2001   88.282979   71.1821643  105.3837937
## 2002  120.775496  105.0445799  136.5064127
## 2003   78.822059   61.3032330   96.3408842
## 2004  158.241358  143.9345353  172.5481808
## 2005  259.589637  247.8538810  271.3253928
## 2006  135.795768  120.6582657  150.9332696
## 2007  392.682504  380.1152694  405.2497380
## 2008  222.694360  210.2902490  235.0984719
## 2009  432.168546  418.4737608  445.8633307
## 2010  409.106106  396.1084434  422.1037694
## 2011  456.526368  441.9935349  471.0592007
## 2012  203.479516  190.5953797  216.3636529
## 2013  648.613124  625.3355590  671.8906889
## 2014  167.231931  153.2366564  181.2272060
## 2015  428.128185  414.5627579  441.6936126
## 2016  189.122358  175.8279388  202.4167762
## 2017  185.313315  171.9032101  198.7234206
## 2018  117.097535  101.2171857  132.9778834
## 2019   73.301261   55.5349867   91.0675346
## 2020  134.970732  119.8013705  150.1400941
## 2021  122.063168  106.3841989  137.7421380
## 2022  239.480362  227.4241707  251.5365530
## 2023  273.252841  261.6706473  284.8350340
## 2024  495.565194  479.5123234  511.6180652
## 2025  451.576155  437.2212717  465.9310385
## 2026  154.278104  139.8299189  168.7262885
## 2027  130.429182  115.0828742  145.7754899
## 2028   81.081268   63.6629675   98.4995681
## 2029  286.491961  275.0066693  297.9772523
## 2030  -40.530498  -63.8275435  -17.2334532
## 2031  426.863645  413.3380983  440.3891916
## 2032  419.985779  406.6719469  433.2996118
## 2033   37.724499   18.3087068   57.1402907
## 2034  332.771052  321.2105936  344.3315096
## 2035  210.519305  197.8206220  223.2179874
## 2036  371.254714  359.1555573  383.3538709
## 2037  482.480286  466.9582098  498.0023630
## 2038  369.589222  357.5216835  381.6567604
## 2039  199.886371  186.9034992  212.8692434
## 2040  375.194837  363.0180626  387.3716107
## 2041  285.373922  273.8824590  296.8653852
## 2042  543.725674  525.5706927  561.8806559
## 2043  125.317047  109.7684705  140.8656226
## 2044  249.056941  237.1669657  260.9469172
## 2045  188.089136  174.7636100  201.4146611
## 2046  233.350426  221.1753222  245.5255291
## 2047  311.489764  300.0440688  322.9354584
## 2048  405.204537  392.3143910  418.0946829
## 2049  491.247252  475.3717098  507.1227938
## 2050  526.538721  509.1577975  543.9196446
## 2051  155.095429  140.6765917  169.5142653
## 2052  331.899752  320.3466377  343.4528673
## 2053  490.113792  474.2844514  505.9431323
## 2054  186.369669  172.9919234  199.7474149
## 2055  277.871497  266.3289926  289.4140014
## 2056   82.669654   65.3217682  100.0175393
## 2057  450.080296  435.7784533  464.3821397
## 2058  442.762926  428.7154724  456.8103797
## 2059  360.128302  348.2266323  372.0299708
## 2060          NA           NA           NA
## 2061  197.426686  184.3746788  210.4786937
## 2062          NA           NA           NA
## 2063  441.675730  427.6653366  455.6861230
## 2064  229.757281  217.5080687  242.0064926
## 2065  421.682114  408.3168930  435.0473349
## 2066  418.605580  405.3331514  431.8780084
## 2067  226.966039  214.6570570  239.2750214
## 2068  500.060481  483.8208276  516.3001341
## 2069  146.536650  131.8055937  161.2677056
## 2070  166.499423  152.4792535  180.5195927
## 2071  322.569912  311.0813589  334.0584660
## 2072  455.770728  441.2652960  470.2761596
## 2073   96.664414   79.9271523  113.4016754
## 2074  225.485602  213.1441478  237.8270558
## 2075  437.681633  423.8057064  451.5575596
## 2076  400.616723  387.8488769  413.3845692
## 2077  116.681162  100.7837985  132.5785245
## 2078   72.221775   54.4068260   90.0367241
## 2079          NA           NA           NA
## 2080          NA           NA           NA
## 2081  116.018049  100.0935489  131.9425490
## 2082          NA           NA           NA
## 2083  299.900714  288.4601579  311.3412708
## 2084  429.716571  416.1006386  443.3325038
## 2085          NA           NA           NA
## 2086  339.571811  327.9464167  351.1972054
## 2087  572.463124  552.9651750  591.9610725
## 2088  517.124064  500.1565430  534.0915856
## 2089  139.342649  124.3410942  154.3442039
## 2090  164.641166  150.5574469  178.7248845
## 2091  313.132124  301.6824118  324.5818359
## 2092   74.280508   56.5583082   92.0027086
## 2093  451.576155  437.2212717  465.9310385
## 2094  512.659620  495.8852949  529.4339455
## 2095  286.491961  275.0066693  297.9772523
## 2096  277.138989  265.5906080  288.6873698
## 2097  519.599171  502.5237395  536.6746018
## 2098  319.956015  308.4808992  331.4311310
## 2099  533.362612  515.6772308  551.0479938
## 2100  488.170718  472.4202377  503.9211978
## 2101  311.875294  300.4287296  323.3218587
## 2102  425.275259  411.7993909  438.7511270
## 2103   15.726124   -4.7503626   36.2026104
## 2104  504.054578  487.6471697  520.4619856
## 2105   11.038072   -9.6679047   31.7440487
## 2106   59.129157   40.7166294   77.5416837
## 2107  353.836442  342.0318160  365.6410690
## 2108  464.260111  449.4420712  479.0781512
## 2109  272.905863  261.3204360  284.4912903
## 2110  536.469989  518.6446903  554.2952874
## 2111  350.975806  339.2117079  362.7399033
## 2112  248.255038  236.3520792  260.1579965
## 2113  168.326838  154.3686088  182.2850672
## 2114  233.335004  221.1595898  245.5104191
## 2115  254.292447  242.4829464  266.1019471
## 2116  414.210531  401.0674701  427.3535925
## 2117  115.478306   99.5316814  131.4249309
## 2118  439.879157  425.9295782  453.8287364
## 2119  458.477152  443.8731913  473.0811137
## 2120  100.712485   84.1484063  117.2765636
## 2121  190.857245  177.6145941  204.0998962
## 2122   95.762272   78.9861980  112.5383465
## 2123  237.714632  225.6251725  249.8040911
## 2124  312.075770  300.6287354  323.5228047
## 2125  288.064926  276.5876833  299.5421678
## 2126  556.317103  537.5806476  575.0535585
## 2127  374.192457  362.0358019  386.3491123
## 2128  536.477699  518.6520527  554.3033461
## 2129  404.526003  391.6542291  417.3977772
## 2130  160.639358  146.4168915  174.8618251
## 2131  140.607189  125.6536964  155.5606822
## 2132  459.186529  444.5565649  473.8164926
## 2133 1111.619929 1062.7322484 1160.5076099
## 2134   25.048253    5.0246174   45.0718892
## 2135  406.584736  393.6569200  419.5125528
## 2136  354.191131  342.3813214  366.0009399
## 2137  214.613639  202.0178000  227.2094789
## 2138   60.378276   42.0233184   78.7332329
## 2139  384.609493  372.2316175  396.9873692
## 2140  128.601767  113.1835251  144.0200091
## 2141   50.809407   32.0105950   69.6082183
## 2142  177.587283  163.9342226  191.2403425
## 2143  186.909412  173.5481188  200.2707051
## 2144   83.140001   65.8129246  100.4670776
## 2145  405.397302  392.5019192  418.2926853
## 2146  506.915215  490.3866486  523.4437805
## 2147  130.891819  115.5636558  146.2199816
## 2148  219.895408  207.4266080  232.3642088
## 2149  391.387121  378.8512917  403.9229502
## 2150  231.415062  219.2004411  243.6296831
## 2151  283.870353  272.3700014  295.3707043
## 2152  435.283633  421.4871425  449.0801231
## 2153   33.861482   14.2614662   53.4614985
## 2154  214.613639  202.0178000  227.2094789
## 2155  137.276205  122.1956488  152.3567614
## 2156  149.505235  134.8836829  164.1267874
## 2157  223.272656  210.8816793  235.6636333
## 2158  165.157777  151.0917816  179.2237717
## 2159  352.571902  340.7854709  364.3583334
## 2160  361.855479  349.9252963  373.7856608
## 2161  371.185319  359.0874935  383.2831437
## 2162  387.362182  374.9214554  399.8029080
## 2163  266.506056  254.8547193  278.1573917
## 2164  478.848588  463.4702399  494.2269368
## 2165   19.249873   -1.0548800   39.5546267
## 2166  144.986817  130.1980929  159.7755405
## 2167  457.351403  442.7885565  471.9142499
## 2168  604.631795  583.5708261  625.6927646
## 2169  595.594959  574.9786742  616.2112429
## 2170  225.231152  212.8840632  237.5782401
## 2171  435.700006  421.8897934  449.5102182
## 2172  408.273360  395.2989122  421.2478085
## 2173  371.478322  359.3748658  383.5817778
## 2174  456.534078  442.0009654  471.0671913
## 2175  404.448897  391.5792045  417.3185895
## 2176  512.119877  495.3687807  528.8709741
## 2177  529.129487  511.6334345  546.6255387
## 2178  275.080256  263.5145135  286.6459977
## 2179  309.639217  298.1970713  321.0813623
## 2180  201.937394  189.0112133  214.8635747
## 2181  102.632427   86.1499183  119.1149361
## 2182  243.412774  231.4277651  255.3977825
## 2183  229.518252  217.2639961  241.7725072
## 2184  105.870884   89.5251140  122.2166542
## 2185  312.098902  300.6518122  323.5459915
## 2186  423.771690  410.3424169  437.2009624
## 2187  489.450679  473.6483003  505.2530582
## 2188  550.233431  531.7793498  568.6875112
## 2189  406.584736  393.6569200  419.5125528
## 2190   96.132382   79.3722400  112.8925232
## 2191  592.634084  572.1625921  613.1055753
## 2192  216.626109  204.0794313  229.1727869
## 2193  113.442705   97.4123461  129.4730632
## 2194  536.585648  518.7551266  554.4161694
## 2195  470.706182  455.6440321  485.7683329
## 2196  -30.352491  -53.1294397   -7.5755423
## 2197  235.679030  223.5502259  247.8078348
## 2198  330.295945  318.7557634  341.8361272
## 2199  291.033511  279.5694372  302.4975848
## 2200  187.587946  174.2472573  200.9286343
## 2201   26.436163    6.4795375   46.3927893
## 2202  346.781233  335.0724361  358.4900297
## 2203  275.080256  263.5145135  286.6459977
## 2204  470.737025  455.6736931  485.8003568
## 2205   47.594082   28.6447010   66.5434622
## 2206  178.396897  164.7698050  192.0239885
## 2207  372.095171  359.9797885  384.2105530
## 2208  149.489814  134.8676961  164.1119317
## 2209   16.666818   -3.7637575   37.0973945
## 2210  249.743186  237.8641828  261.6221890
## 2211  223.704451  211.3232286  236.0856724
## 2212  582.679684  562.6915277  602.6678406
## 2213  195.059528  181.9398212  208.1792357
## 2214  523.246290  506.0108377  540.4817421
## 2215  -57.455291  -81.6253027  -33.2852789
## 2216  185.444396  172.0383174  198.8504742
## 2217  120.829471  105.1007354  136.5582057
## 2218  534.156805  516.4357379  551.8778727
## 2219   77.249094   59.6600233   94.8381643
## 2220  210.843150  198.1527386  223.5335622
## 2221  349.048153  337.3100817  360.7862236
## 2222  485.926930  470.2669692  501.5868904
## 2223  -40.530498  -63.8275435  -17.2334532
## 2224  160.423461  146.1934365  174.6534858
## 2225  346.094988  334.3947678  357.7952090
## 2226  353.127066  341.3327012  364.9214312
## 2227  393.399591  380.8148063  405.9843749
## 2228  348.600937  336.8687558  360.3331186
## 2229          NA           NA           NA
## 2230   90.040998   73.0169814  107.0650155
## 2231  -13.450830  -35.3730252    8.4713644
## 2232  247.090736  235.1686191  259.0128519
## 2233  108.407675   92.1682582  124.6470924
## 2234 5042.042507 4762.8937088 5321.1913048
## 2235  167.046877  153.0453208  181.0484322
## 2236  373.706689  361.5596921  385.8536851
## 2237  395.227006  382.5969695  407.8570416
## 2238  340.998274  329.3575582  352.6389901
## 2239  435.561215  421.7555798  449.3668499
## 2240  309.292239  297.8506439  320.7338347

4.3. Regresión Lineal Múltiple

Este modelo, que puede inicialmente pensarse como una extensión de la regresión lineal simple para facilitar su comprensión, y que eventualmente será llamado en este estudio como RLM, tiene como ecuación general aditiva:\[y_i=\beta_0+\beta_1 x_{i1}+\cdots+\beta_k x_{ik}+\varepsilon_i, \hspace{3mm}i=1,2,\dots,n\hspace{10mm}(21)\] donde \(E(\epsilon)=0\) y \(V(\epsilon)=\sigma^2\). También, para hacer pruebas de hipótesis y calcular intervalos de confianza y de predicción, se supone que \(\epsilon\) está normalmente distribuida. Complementariamente, con base en el enfoque de los mínimos cuadrados ordinarios, la estimación de sus parámetros se plantea en términos de la minimización de una función de ensayo desde la cual se observan los cuadrados de las desviaciones de la varaible estudiada. La función de ensayo se representa como \(f(b_0,b_1,...,b_k)= \sum_{j}[y_i-(b_0+b_1x_{1j}+b_2x_{2j}+...+b_kx_{kj})]^2\). Esto conduce a un conjunto de ecuaciones normales lineales en \(b_0,b_1,...,b_k\), que al ser resueltas entregan las estimaciones de mínimos cuadrados de \(\hat{\beta_0},\hat{\beta_1},...,, \hat{\beta_k}\).

Complementariamente, la proporción de variación total explicada por el modelo de regresión múltiple a través del coeficiente de determinación múltiple se ajusta, generalmente, con base en el número de parámetros del modelo.

Además, una prueba de utilidad del modelo de regresión lineal múltiple consiste en una prueba de hipótesis basada en un estadístico que tiene una distribución \(F\) particular cuando \(H_0\) es verdadera, esto de expresa en el par:\[H_0:\beta_1=\beta_2=\cdots=\beta_k=0\hspace{10mm}\] \[H_1: \text {al menos una }\beta_i\neq 0\hspace{5mm}(i=1,...,k)\hspace{10mm}\] Para cerrar, es necesario mencionar que eventualmente surgen problemas en los análisis de regresión múltiple que implican considerar técnicas de solución relacionadas con transformaciones de no-linealidad, estandarización y selección de variables, identificación de observaciones influyentes, multicolinealidad, entre otras.

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 2 se formulará un modelo de regresión lineal múltiple para estudiar la relación lineal múltiple supuesta entre las varaibles definidas por los campos: Income (variable independiente) y los demás como variables dependientes: MntWines, MntMeatProducts, MntFishProducts, MntFruits, MntSweetProducts.

Resumen estadístico de las variables de estudio

La navegación a través de las pestañas muestra el resumen estadístico de todas las variables del conjunto de datos, excepto ID, porque simplemente es un índice posicional. Sin embargo, para las varaibles de naturaleza cuantitativa::razón el resumen será el tradicional, pero para las variables de naturaleza cualitativa::nominal el resumen estadístico consistirá en conteos, proporciones y diagramas de barras. Se menciona de nuevo que Income es la variable independiente.

Resumen Variables Cuantitativas

summary(Gastos_Dataset$Year_Birth)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1893    1959    1970    1969    1977    1996
summary(Gastos_Dataset$Income)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    1730   35221   51369   52213   68475  666666      13
summary(Gastos_Dataset$Teenhome)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.0000  0.0000  0.5062  1.0000  2.0000
summary(Gastos_Dataset$MntWines)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   23.75  173.50  303.94  504.25 1493.00
summary(Gastos_Dataset$MntFruits)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     1.0     8.0    26.3    33.0   199.0
summary(Gastos_Dataset$MntMeatProducts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0    16.0    67.0   166.9   232.0  1725.0
summary(Gastos_Dataset$MntFishProducts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    3.00   12.00   37.53   50.00  259.00
summary(Gastos_Dataset$MntSweetProducts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    1.00    8.00   27.06   33.00  263.00
summary(Gastos_Dataset$MntGoldProds)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    9.00   24.00   44.02   56.00  362.00
summary(Gastos_Dataset$NumDealsPurchases)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   1.000   2.000   2.325   3.000  15.000
summary(Gastos_Dataset$NumWebPurchases)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   2.000   4.000   4.085   6.000  27.000
summary(Gastos_Dataset$NumCatalogPurchases)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.000   2.000   2.662   4.000  28.000
summary(Gastos_Dataset$NumStorePurchases)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    3.00    5.00    5.79    8.00   13.00
summary(Gastos_Dataset$NumWebVisitsMonth)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   3.000   6.000   5.317   7.000  20.000

Resumen Variables Cualitativas

table(Gastos_Dataset$Education)
## 
##   2n Cycle      Basic Graduation     Master        PhD 
##        203         54       1127        370        486
prop.table(table(Gastos_Dataset$Education))
## 
##   2n Cycle      Basic Graduation     Master        PhD 
## 0.09062500 0.02410714 0.50312500 0.16517857 0.21696429
barplot(table(Gastos_Dataset$Education))

table(Gastos_Dataset$Marital_Status)
## 
##   Absurd    Alone Divorced  Married   Single Together    Widow     YOLO 
##        2        3      232      864      480      580       77        2
prop.table(table(Gastos_Dataset$Marital_Status))
## 
##       Absurd        Alone     Divorced      Married       Single     Together 
## 0.0008928571 0.0013392857 0.1035714286 0.3857142857 0.2142857143 0.2589285714 
##        Widow         YOLO 
## 0.0343750000 0.0008928571
barplot(table(Gastos_Dataset$Marital_Status))

table(Gastos_Dataset$Satisfaction_with_customer_service)
## 
##      dissatisfied           neutral         satisfied very dissatisfied 
##               447               448               224               673 
##    very satisfied 
##               448

Diagramas de Dispersión Variables Cuantitativas

pairs(~Year_Birth + Income + Teenhome + MntWines + MntFruits + MntMeatProducts + MntFishProducts + MntSweetProducts + MntGoldProds + NumDealsPurchases + NumWebPurchases + NumCatalogPurchases + NumStorePurchases + NumWebVisitsMonth , data = Gastos_Dataset)

Formulación del modelo de RLM entre las variables de estudio

La navegación a través de las pestañas muestra el resúmen y la tabla ANOVA del modelo de regresión lineal múltiple total y los coeficientes tanto del modelo mencionado como el logrado luego de reducirlo. Con base en la exploración de los datos de la sesión anterior y el resúmen y la tabla ANOVA del modelo total se formulan para comparación dos modelos RLM: uno que incluye a todas las varibles del conjunto de datos, excepto ID, y otro que excluye a Education, Satisfaction_with_customer_service y Marital_Status. Se menciona de nuevo que Income es la variable independiente.

Al considerar los resultados presentados en la pestaña Coeficientes del Modelo RLM Total se puede establer que el modelo de regresión lineal múltiple total que relaciona a las variables de interés, las cuales se resumirán como: MntWines, MntMeatProducts, MntFishProducts, MntFruits, MntSweetProducts, tiene la formulación (con coeficientes redondeados a cuatro cifras decimales por motivos de edición):\[\tiny \hat{Income}= 31.1920 + 0.6210\cdot MnMP + 0.5240\cdot MnFP + 0.6246 \cdot MntF + 0.8073\cdot MnSP - 55.066\cdot EdBas + 67.5948 \cdot Grad + 145.522 \cdot Mast + 218.005\cdot PhD + 52.178 \cdot Divo + 23.253\cdot Marri - 0.3676\cdot Sin + 26.5699\cdot Tog + 36.228\cdot Wid + 49.565\cdot YOLO\hspace{10mm}\] para este modelo se obvia la interpretación del intercepto por carecer de sentido dado que Income resultaría negativa en caso de un que las variable fuesen nulas a la vez, y ambas situaciones carecen de sentido.

Por otro lado, luego de auscultar el resumen estadístico y la tabla ANOVA del modelo RLM Total (como se muestra en la pestaña homónima), se pudo establecer, con el apoyo de los resúmenes estadísticos de las variables de estudio, que podía excluirse directamente del modelo por baja significancia las variables Education y Satisfaction_with_customer_service; sin embargo, la variable Marital_Status. Esto implicó que se calculase un modelo reducido con la formulación (con base en las mismas consideraciones de edición del modelo total):\[\tiny \hat{MntWines}= 20.8928 + 2.0593\cdot MntFruits + 1.7731\cdot MnSP - 53.8052\cdot EdBas + 39.6003\cdot EdGrad + 60.3439\cdot EduMas + 70.5636\cdot EdPhD\hspace{10mm}\]

Resumen y ANOVA del Modelo RLM Total

summary(lm(Year_Birth ~ Income + Teenhome + MntWines + MntFruits + MntMeatProducts + MntFishProducts + MntSweetProducts + MntGoldProds + NumDealsPurchases + NumWebPurchases + NumCatalogPurchases +  NumStorePurchases + NumWebVisitsMonth + as.factor(Education) + as.factor(Marital_Status) + as.factor(Satisfaction_with_customer_service), data = Gastos_Dataset))
## 
## Call:
## lm(formula = Year_Birth ~ Income + Teenhome + MntWines + MntFruits + 
##     MntMeatProducts + MntFishProducts + MntSweetProducts + MntGoldProds + 
##     NumDealsPurchases + NumWebPurchases + NumCatalogPurchases + 
##     NumStorePurchases + NumWebVisitsMonth + as.factor(Education) + 
##     as.factor(Marital_Status) + as.factor(Satisfaction_with_customer_service), 
##     data = Gastos_Dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -76.175  -7.007   0.856   8.177  26.551 
## 
## Coefficients:
##                                                                  Estimate
## (Intercept)                                                     1.980e+03
## Income                                                         -7.266e-06
## Teenhome                                                       -7.772e+00
## MntWines                                                       -1.963e-03
## MntFruits                                                       4.637e-03
## MntMeatProducts                                                 1.603e-03
## MntFishProducts                                                -1.141e-02
## MntSweetProducts                                                1.163e-02
## MntGoldProds                                                    1.948e-03
## NumDealsPurchases                                               3.472e-01
## NumWebPurchases                                                -2.190e-01
## NumCatalogPurchases                                            -2.840e-01
## NumStorePurchases                                               1.181e-01
## NumWebVisitsMonth                                               5.306e-01
## as.factor(Education)Basic                                       1.086e+00
## as.factor(Education)Graduation                                 -1.412e+00
## as.factor(Education)Master                                     -3.640e+00
## as.factor(Education)PhD                                        -3.656e+00
## as.factor(Marital_Status)Alone                                 -2.469e+00
## as.factor(Marital_Status)Divorced                              -9.499e+00
## as.factor(Marital_Status)Married                               -6.854e+00
## as.factor(Marital_Status)Single                                -5.753e+00
## as.factor(Marital_Status)Together                              -8.406e+00
## as.factor(Marital_Status)Widow                                 -1.584e+01
## as.factor(Marital_Status)YOLO                                  -3.634e-01
## as.factor(Satisfaction_with_customer_service)neutral           -5.051e-01
## as.factor(Satisfaction_with_customer_service)satisfied         -7.994e-01
## as.factor(Satisfaction_with_customer_service)very dissatisfied  3.981e-01
## as.factor(Satisfaction_with_customer_service)very satisfied     3.937e-01
##                                                                Std. Error
## (Intercept)                                                     7.792e+00
## Income                                                          1.328e-05
## Teenhome                                                        4.954e-01
## MntWines                                                        1.111e-03
## MntFruits                                                       7.954e-03
## MntMeatProducts                                                 1.760e-03
## MntFishProducts                                                 6.046e-03
## MntSweetProducts                                                7.620e-03
## MntGoldProds                                                    5.355e-03
## NumDealsPurchases                                               1.437e-01
## NumWebPurchases                                                 1.122e-01
## NumCatalogPurchases                                             1.335e-01
## NumStorePurchases                                               1.050e-01
## NumWebVisitsMonth                                               1.398e-01
## as.factor(Education)Basic                                       1.674e+00
## as.factor(Education)Graduation                                  8.284e-01
## as.factor(Education)Master                                      9.613e-01
## as.factor(Education)PhD                                         9.400e-01
## as.factor(Marital_Status)Alone                                  9.851e+00
## as.factor(Marital_Status)Divorced                               7.699e+00
## as.factor(Marital_Status)Married                                7.675e+00
## as.factor(Marital_Status)Single                                 7.681e+00
## as.factor(Marital_Status)Together                               7.678e+00
## as.factor(Marital_Status)Widow                                  7.759e+00
## as.factor(Marital_Status)YOLO                                   1.081e+01
## as.factor(Satisfaction_with_customer_service)neutral            7.200e-01
## as.factor(Satisfaction_with_customer_service)satisfied          8.817e-01
## as.factor(Satisfaction_with_customer_service)very dissatisfied  6.573e-01
## as.factor(Satisfaction_with_customer_service)very satisfied     7.227e-01
##                                                                t value Pr(>|t|)
## (Intercept)                                                    254.163  < 2e-16
## Income                                                          -0.547 0.584447
## Teenhome                                                       -15.689  < 2e-16
## MntWines                                                        -1.767 0.077347
## MntFruits                                                        0.583 0.559991
## MntMeatProducts                                                  0.911 0.362547
## MntFishProducts                                                 -1.887 0.059349
## MntSweetProducts                                                 1.526 0.127128
## MntGoldProds                                                     0.364 0.716124
## NumDealsPurchases                                                2.416 0.015767
## NumWebPurchases                                                 -1.951 0.051157
## NumCatalogPurchases                                             -2.127 0.033559
## NumStorePurchases                                                1.125 0.260905
## NumWebVisitsMonth                                                3.796 0.000151
## as.factor(Education)Basic                                        0.649 0.516609
## as.factor(Education)Graduation                                  -1.705 0.088420
## as.factor(Education)Master                                      -3.786 0.000157
## as.factor(Education)PhD                                         -3.890 0.000103
## as.factor(Marital_Status)Alone                                  -0.251 0.802156
## as.factor(Marital_Status)Divorced                               -1.234 0.217442
## as.factor(Marital_Status)Married                                -0.893 0.371983
## as.factor(Marital_Status)Single                                 -0.749 0.453971
## as.factor(Marital_Status)Together                               -1.095 0.273707
## as.factor(Marital_Status)Widow                                  -2.042 0.041308
## as.factor(Marital_Status)YOLO                                   -0.034 0.973188
## as.factor(Satisfaction_with_customer_service)neutral            -0.701 0.483080
## as.factor(Satisfaction_with_customer_service)satisfied          -0.907 0.364663
## as.factor(Satisfaction_with_customer_service)very dissatisfied   0.606 0.544803
## as.factor(Satisfaction_with_customer_service)very satisfied      0.545 0.585941
##                                                                   
## (Intercept)                                                    ***
## Income                                                            
## Teenhome                                                       ***
## MntWines                                                       .  
## MntFruits                                                         
## MntMeatProducts                                                   
## MntFishProducts                                                .  
## MntSweetProducts                                                  
## MntGoldProds                                                      
## NumDealsPurchases                                              *  
## NumWebPurchases                                                .  
## NumCatalogPurchases                                            *  
## NumStorePurchases                                                 
## NumWebVisitsMonth                                              ***
## as.factor(Education)Basic                                         
## as.factor(Education)Graduation                                 .  
## as.factor(Education)Master                                     ***
## as.factor(Education)PhD                                        ***
## as.factor(Marital_Status)Alone                                    
## as.factor(Marital_Status)Divorced                                 
## as.factor(Marital_Status)Married                                  
## as.factor(Marital_Status)Single                                   
## as.factor(Marital_Status)Together                                 
## as.factor(Marital_Status)Widow                                 *  
## as.factor(Marital_Status)YOLO                                     
## as.factor(Satisfaction_with_customer_service)neutral              
## as.factor(Satisfaction_with_customer_service)satisfied            
## as.factor(Satisfaction_with_customer_service)very dissatisfied    
## as.factor(Satisfaction_with_customer_service)very satisfied       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.7 on 2198 degrees of freedom
##   (13 observations deleted due to missingness)
## Multiple R-squared:  0.2129, Adjusted R-squared:  0.2029 
## F-statistic: 21.23 on 28 and 2198 DF,  p-value: < 2.2e-16
anova(lm(MntWines ~ MntMeatProducts + MntFishProducts + MntFruits + MntSweetProducts +  as.factor(Education) + as.factor(Marital_Status) +  as.factor(Satisfaction_with_customer_service), data = Gastos_Dataset))
## Analysis of Variance Table
## 
## Response: MntWines
##                                                 Df    Sum Sq  Mean Sq   F value
## MntMeatProducts                                  1  80311498 80311498 1140.0400
## MntFishProducts                                  1   2394298  2394298   33.9876
## MntFruits                                        1   1097323  1097323   15.5767
## MntSweetProducts                                 1    891545   891545   12.6557
## as.factor(Education)                             4  11836615  2959154   42.0059
## as.factor(Marital_Status)                        7    527208    75315    1.0691
## as.factor(Satisfaction_with_customer_service)    4    224707    56177    0.7974
## Residuals                                     2220 156390591    70446          
##                                                  Pr(>F)    
## MntMeatProducts                               < 2.2e-16 ***
## MntFishProducts                               6.356e-09 ***
## MntFruits                                     8.169e-05 ***
## MntSweetProducts                              0.0003823 ***
## as.factor(Education)                          < 2.2e-16 ***
## as.factor(Marital_Status)                     0.3807007    
## as.factor(Satisfaction_with_customer_service) 0.5267237    
## Residuals                                                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Coeficientes del Modelo RLM Total

coefficients(lm(Gastos_Dataset$MntWines~Gastos_Dataset$MntMeatProducts+Gastos_Dataset$MntFishProducts+Gastos_Dataset$MntFruits+Gastos_Dataset$MntSweetProducts+as.factor(Gastos_Dataset$Education)+as.factor(Gastos_Dataset$Marital_Status)+as.factor(Gastos_Dataset$Satisfaction_with_customer_service)))
##                                                                   (Intercept) 
##                                                                  -134.0166761 
##                                                Gastos_Dataset$MntMeatProducts 
##                                                                     0.6208433 
##                                                Gastos_Dataset$MntFishProducts 
##                                                                     0.5312717 
##                                                      Gastos_Dataset$MntFruits 
##                                                                     0.6355901 
##                                               Gastos_Dataset$MntSweetProducts 
##                                                                     0.7970911 
##                                      as.factor(Gastos_Dataset$Education)Basic 
##                                                                   -56.1859284 
##                                 as.factor(Gastos_Dataset$Education)Graduation 
##                                                                    66.3795944 
##                                     as.factor(Gastos_Dataset$Education)Master 
##                                                                   144.6027990 
##                                        as.factor(Gastos_Dataset$Education)PhD 
##                                                                   217.6702114 
##                                 as.factor(Gastos_Dataset$Marital_Status)Alone 
##                                                                   139.9194103 
##                              as.factor(Gastos_Dataset$Marital_Status)Divorced 
##                                                                   189.8102514 
##                               as.factor(Gastos_Dataset$Marital_Status)Married 
##                                                                   161.5446210 
##                                as.factor(Gastos_Dataset$Marital_Status)Single 
##                                                                   137.7821400 
##                              as.factor(Gastos_Dataset$Marital_Status)Together 
##                                                                   164.9570568 
##                                 as.factor(Gastos_Dataset$Marital_Status)Widow 
##                                                                   174.8872497 
##                                  as.factor(Gastos_Dataset$Marital_Status)YOLO 
##                                                                   184.5077848 
##           as.factor(Gastos_Dataset$Satisfaction_with_customer_service)neutral 
##                                                                     5.6339445 
##         as.factor(Gastos_Dataset$Satisfaction_with_customer_service)satisfied 
##                                                                    36.1510640 
## as.factor(Gastos_Dataset$Satisfaction_with_customer_service)very dissatisfied 
##                                                                    16.3733834 
##    as.factor(Gastos_Dataset$Satisfaction_with_customer_service)very satisfied 
##                                                                    13.4584793

Coeficientes del Modelo RLM Reducido

coefficients(lm(Gastos_Dataset$MntMeatProducts~Gastos_Dataset$MntFruits+Gastos_Dataset$MntSweetProducts+as.factor(Gastos_Dataset$Education)))
##                                   (Intercept) 
##                                     20.892803 
##                      Gastos_Dataset$MntFruits 
##                                      2.059395 
##               Gastos_Dataset$MntSweetProducts 
##                                      1.773139 
##      as.factor(Gastos_Dataset$Education)Basic 
##                                    -53.805211 
## as.factor(Gastos_Dataset$Education)Graduation 
##                                     39.600328 
##     as.factor(Gastos_Dataset$Education)Master 
##                                     60.343904 
##        as.factor(Gastos_Dataset$Education)PhD 
##                                     70.563664

Análisis del modelo RLM.

La navegación a través de las pestañas, primero por Mejor Modelo Iterado según AIC, muestra que la decisión de excluir del modelo total a la variable Satisfaction_with_customer_service y Marital_Status resultó acertada, el algoritmo iterado que considera componentes ANOVA y de desviación de residuales la excluyó en la primera y segunda iteración. .

Complementariamente, en la pestaña de Bondades de Ajuste, Significancias y Criterios de Información Comparados se presenta el coeficiente de determinación múltiple (R²) es 0.383, lo que indica que el modelo explica aproximadamente el 38.3% de la variabilidad en la variable dependiente “MntWines”.

Los coeficientes de las variables predictoras muestran la relación entre cada variable independiente y la variable dependiente. Por ejemplo, el coeficiente para “MntMeatProducts” es 0.621, lo que indica que, manteniendo todas las demás variables constantes, un aumento de una unidad en “MntMeatProducts” está asociado con un aumento de 0.621 unidades en “MntWines”.

La significancia estadística de los coeficientes se evalúa mediante los valores t y los valores p asociados. Por ejemplo, el coeficiente para “Education)Basic” tiene un valor t de -1.37 y un valor p de 0.171, lo que indica que este coeficiente no es estadísticamente significativo a un nivel de significancia del 5%.

La constante (intercepto) es -134.017, que representa el valor esperado de “MntWines” cuando todas las variables predictoras son cero.

Por último, los criterios de información AIC y BIC muestran que efectivamente en los modelos idénticos reducido e iterado la relación entre el sesgo y la varianza en sus formulaciones, es decir, entre sus exactitudes y complejidades, resulta mejor que en modelo total: \(AIC_{RLMReducido}=AIC_{RLMIterado}= 29595.14,225< 31382.99 =AIC_{RLMTotal}\) y \(BIC_{RLMReducido}=BIC_{RLMIterado}= 29595.14< 31371.73=BIC_{RLMTotal}\).

Mejor Modelo Iterado según AIC

modelo_Iterado_STEP = step(lm(Gastos_Dataset$MntWines~Gastos_Dataset$MntMeatProducts+Gastos_Dataset$MntFishProducts+Gastos_Dataset$MntFruits+Gastos_Dataset$MntSweetProducts+as.factor(Gastos_Dataset$Education)+as.factor(Gastos_Dataset$Marital_Status)+as.factor(Gastos_Dataset$Satisfaction_with_customer_service)))
## Start:  AIC=25024.14
## Gastos_Dataset$MntWines ~ Gastos_Dataset$MntMeatProducts + Gastos_Dataset$MntFishProducts + 
##     Gastos_Dataset$MntFruits + Gastos_Dataset$MntSweetProducts + 
##     as.factor(Gastos_Dataset$Education) + as.factor(Gastos_Dataset$Marital_Status) + 
##     as.factor(Gastos_Dataset$Satisfaction_with_customer_service)
## 
##                                                                Df Sum of Sq
## - as.factor(Gastos_Dataset$Marital_Status)                      7    524871
## - as.factor(Gastos_Dataset$Satisfaction_with_customer_service)  4    224707
## <none>                                                                     
## - Gastos_Dataset$MntFruits                                      1    768706
## - Gastos_Dataset$MntFishProducts                                1    945341
## - Gastos_Dataset$MntSweetProducts                               1   1342910
## - as.factor(Gastos_Dataset$Education)                           4  11572058
## - Gastos_Dataset$MntMeatProducts                                1  24973328
##                                                                      RSS   AIC
## - as.factor(Gastos_Dataset$Marital_Status)                     156915461 25018
## - as.factor(Gastos_Dataset$Satisfaction_with_customer_service) 156615298 25019
## <none>                                                         156390591 25024
## - Gastos_Dataset$MntFruits                                     157159297 25033
## - Gastos_Dataset$MntFishProducts                               157335932 25036
## - Gastos_Dataset$MntSweetProducts                              157733500 25041
## - as.factor(Gastos_Dataset$Education)                          167962649 25176
## - Gastos_Dataset$MntMeatProducts                               181363919 25354
## 
## Step:  AIC=25017.65
## Gastos_Dataset$MntWines ~ Gastos_Dataset$MntMeatProducts + Gastos_Dataset$MntFishProducts + 
##     Gastos_Dataset$MntFruits + Gastos_Dataset$MntSweetProducts + 
##     as.factor(Gastos_Dataset$Education) + as.factor(Gastos_Dataset$Satisfaction_with_customer_service)
## 
##                                                                Df Sum of Sq
## - as.factor(Gastos_Dataset$Satisfaction_with_customer_service)  4    227044
## <none>                                                                     
## - Gastos_Dataset$MntFruits                                      1    785893
## - Gastos_Dataset$MntFishProducts                                1    917733
## - Gastos_Dataset$MntSweetProducts                               1   1406330
## - as.factor(Gastos_Dataset$Education)                           4  11804709
## - Gastos_Dataset$MntMeatProducts                                1  24788980
##                                                                      RSS   AIC
## - as.factor(Gastos_Dataset$Satisfaction_with_customer_service) 157142505 25013
## <none>                                                         156915461 25018
## - Gastos_Dataset$MntFruits                                     157701354 25027
## - Gastos_Dataset$MntFishProducts                               157833195 25029
## - Gastos_Dataset$MntSweetProducts                              158321791 25036
## - as.factor(Gastos_Dataset$Education)                          168720170 25172
## - Gastos_Dataset$MntMeatProducts                               181704441 25344
## 
## Step:  AIC=25012.89
## Gastos_Dataset$MntWines ~ Gastos_Dataset$MntMeatProducts + Gastos_Dataset$MntFishProducts + 
##     Gastos_Dataset$MntFruits + Gastos_Dataset$MntSweetProducts + 
##     as.factor(Gastos_Dataset$Education)
## 
##                                       Df Sum of Sq       RSS   AIC
## <none>                                             157142505 25013
## - Gastos_Dataset$MntFruits             1    790516 157933021 25022
## - Gastos_Dataset$MntFishProducts       1    946312 158088817 25024
## - Gastos_Dataset$MntSweetProducts      1   1398652 158541158 25031
## - as.factor(Gastos_Dataset$Education)  4  11836615 168979120 25168
## - Gastos_Dataset$MntMeatProducts       1  24628995 181771500 25337
coefficients(modelo_Iterado_STEP)
##                                   (Intercept) 
##                                    39.9701694 
##                Gastos_Dataset$MntMeatProducts 
##                                     0.6144715 
##                Gastos_Dataset$MntFishProducts 
##                                     0.5269369 
##                      Gastos_Dataset$MntFruits 
##                                     0.6438438 
##               Gastos_Dataset$MntSweetProducts 
##                                     0.8102151 
##      as.factor(Gastos_Dataset$Education)Basic 
##                                   -65.7153406 
## as.factor(Gastos_Dataset$Education)Graduation 
##                                    66.0422076 
##     as.factor(Gastos_Dataset$Education)Master 
##                                   144.7007873 
##        as.factor(Gastos_Dataset$Education)PhD 
##                                   217.5468452

Bondades de Ajuste, Significancias y Criterios de Información Comparados

modelo_RLM_TOTAL = lm(Gastos_Dataset$MntWines~Gastos_Dataset$MntMeatProducts+Gastos_Dataset$MntFishProducts+Gastos_Dataset$MntFruits+Gastos_Dataset$MntSweetProducts+as.factor(Gastos_Dataset$Education)+as.factor(Gastos_Dataset$Marital_Status)+as.factor(Gastos_Dataset$Satisfaction_with_customer_service))
modelo_RLM_REDUCIDO = lm(Gastos_Dataset$MntMeatProducts~Gastos_Dataset$MntFruits+Gastos_Dataset$MntSweetProducts+as.factor(Gastos_Dataset$Education))

stargazer(modelo_RLM_TOTAL, modelo_RLM_REDUCIDO, modelo_Iterado_STEP, type = "text", df = TRUE)
## 
## ==================================================================================================================================
##                                                                                   Dependent variable:                             
##                                                      -----------------------------------------------------------------------------
##                                                              MntWines               MntMeatProducts              MntWines         
##                                                                 (1)                       (2)                       (3)           
## ----------------------------------------------------------------------------------------------------------------------------------
## MntMeatProducts                                              0.621***                                            0.614***         
##                                                               (0.033)                                             (0.033)         
##                                                                                                                                   
## MntFishProducts                                              0.531***                                            0.527***         
##                                                               (0.145)                                             (0.144)         
##                                                                                                                                   
## MntFruits                                                    0.636***                  2.059***                  0.644***         
##                                                               (0.192)                   (0.116)                   (0.192)         
##                                                                                                                                   
## MntSweetProducts                                             0.797***                  1.773***                  0.810***         
##                                                               (0.183)                   (0.111)                   (0.182)         
##                                                                                                                                   
## Education)Basic                                               -56.186                  -53.805**                  -65.715         
##                                                              (40.993)                  (27.431)                  (40.810)         
##                                                                                                                                   
## Education)Graduation                                         66.380***                 39.600***                 66.042***        
##                                                              (20.351)                  (13.625)                  (20.308)         
##                                                                                                                                   
## Education)Master                                            144.603***                 60.344***                144.701***        
##                                                              (23.407)                  (15.646)                  (23.366)         
##                                                                                                                                   
## Education)PhD                                               217.670***                 70.564***                217.547***        
##                                                              (22.517)                  (14.982)                  (22.466)         
##                                                                                                                                   
## Marital_Status)Alone                                          139.919                                                             
##                                                              (243.509)                                                            
##                                                                                                                                   
## Marital_Status)Divorced                                       189.810                                                             
##                                                              (190.023)                                                            
##                                                                                                                                   
## Marital_Status)Married                                        161.545                                                             
##                                                              (189.423)                                                            
##                                                                                                                                   
## Marital_Status)Single                                         137.782                                                             
##                                                              (189.584)                                                            
##                                                                                                                                   
## Marital_Status)Together                                       164.957                                                             
##                                                              (189.475)                                                            
##                                                                                                                                   
## Marital_Status)Widow                                          174.887                                                             
##                                                              (191.513)                                                            
##                                                                                                                                   
## Marital_Status)YOLO                                           184.508                                                             
##                                                              (267.180)                                                            
##                                                                                                                                   
## Satisfaction_with_customer_service)neutral                     5.634                                                              
##                                                              (17.785)                                                             
##                                                                                                                                   
## Satisfaction_with_customer_service)satisfied                  36.151*                                                             
##                                                              (21.812)                                                             
##                                                                                                                                   
## Satisfaction_with_customer_service)very dissatisfied          16.373                                                              
##                                                              (16.249)                                                             
##                                                                                                                                   
## Satisfaction_with_customer_service)very satisfied             13.458                                                              
##                                                              (17.824)                                                             
##                                                                                                                                   
## Constant                                                     -134.017                   20.893                   39.970**         
##                                                              (190.609)                 (12.985)                  (19.421)         
##                                                                                                                                   
## ----------------------------------------------------------------------------------------------------------------------------------
## Observations                                                   2,240                     2,240                     2,240          
## R2                                                             0.383                     0.376                     0.381          
## Adjusted R2                                                    0.378                     0.374                     0.378          
## Residual Std. Error                                     265.417 (df = 2220)       178.594 (df = 2233)       265.398 (df = 2231)   
## F Statistic                                          72.682*** (df = 19; 2220) 223.897*** (df = 6; 2233) 171.310*** (df = 8; 2231)
## ==================================================================================================================================
## Note:                                                                                                  *p<0.1; **p<0.05; ***p<0.01
AIC(modelo_RLM_TOTAL, modelo_RLM_REDUCIDO, modelo_Iterado_STEP)
##                     df      AIC
## modelo_RLM_TOTAL    21 31382.99
## modelo_RLM_REDUCIDO  8 29595.14
## modelo_Iterado_STEP 10 31371.73
BIC(modelo_RLM_TOTAL, modelo_RLM_REDUCIDO, modelo_Iterado_STEP)
##                     df      BIC
## modelo_RLM_TOTAL    21 31502.99
## modelo_RLM_REDUCIDO  8 29640.86
## modelo_Iterado_STEP 10 31428.88

4.4. Regresión Logística

Este modelo, que eventualmente será llamado en este estudio como RLogS, establece que, en comparación con un modelo de regresión lineal simple que relacione una variable cuantitativa dependiente \(y\) con una varaible cuantitativa independiente \(x\), relaciona una variable categórica dicotómica (con valores posibles \(1\) (éxito) y \(0\) (fracaso)) dependiente \(y\) con el valor de probabilidad \(p(x)\in [0, 1]\) que depende de alguna variable cuantitativa \(x\).

Como se mencionó en la sección 1 los modelos de regresión usados en este estudio pueden ser vistos como casos particulares del Modelo Lineal Generalizado (GLM por sus siglas en inglés). Este modelo extiende al modelo lineal general al lograr que la variable dependiente está relacionada linealmente con sus factores y covariables a través de alguna función de enlace y que la variable dependiente pueda tener una distribución diferente a la normal. Además de los modelos usados en este estudio, el GLM también cubre: modelos loglineales para datos de recuento, modelos log-log complementario para datos de supervivencia censurados por intervalos, y otros modelos estadísticos a través de la propia formulación general del modelo.

Como GLM permite especificar distribuciones diferentes a la normal y una función de enlace (entendida como una transformación de la variable dependiente que permite la estimación del modelo) diferente a la identidad se puede trabajar con muchas combinaciones posibles de distribuciones y funciones de enlace, varias de las cuales pueden ser adecuadas para un conjunto de datos en particular, esto implica que la elección de la combinación estará orientada por consideraciones teóricas a priori, por la naturaleza de las variables, la experiencia del investigador y los resultados al comparar combinaciones.

En el caso por tratar, se trabajará con base en una distribución binomial (adecuada para variables que representan una respuesta binaria) con función de enlace logit:\[\pi(x)=\dfrac{e^{\beta_0+\beta_1 x}}{1+ e^{\beta_0 +\beta_1 x}}= \dfrac{1}{1+ e^{-(\beta_0+\beta_1 x)}}\hspace{10mm}(30)\](del inglés logarithmic unit: unidad logarítmica (natural)); que además es apropiada únicamente para la distribución binomial), por lo cual un nombre más adecuado para la regresión podría ser regresión logística binaria. Cabe anotar que el término logístico hace referencia a que la función de enlace constituye, en cierto sentido, un refinamiento del modelo exponencial de crecimiento, descrito por la función sigmoidea, de una magnitud asociada con un conjunto \(C\).

Para facilitar las interpretaciones se entiende que la función de enlace \(\pi(x)\) proviene de una razón de probabilidades (conocida en idioma inglés como ODDS ratio (OR)), que a su vez es el argumento de un logaritmo: \(\log\left(\frac{\pi(x)}{1-\pi(x)}\right)\), así, se modela la probabilidad de que la variable de respuesta pertenezca al nivel de referencia \(1\) en función del valor de los predictores. Complementariamente, la transformación de probabilidades a razones de probabilidad es conserva la monotonicidad de sentidos. Además, la transformación convierte el intervalo de probabilidad \([0,1]\) a \((-\infty,\infty)\). Las propiedades que se dan entre las probabilidades complementarias de éxito y fracaso, sus razones y la función de enlace logit son:

\(p(éxito)=p(fracaso)\) \(OR=1\) \(Logit\left(OR\right)=0\)
\(p(éxito)<p(fracaso)\) \(OR<1\) \(Logit\left(OR\right)<0\)
\(p(éxito)>p(fracaso)\) \(OR>1\) \(Logit\left(OR\right)>0\)

Se entiende que la transformación \(Logit\) carece de sentido para la certeza del éxito o del fracaso.

Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 2 se formulará un modelo de regresión logística simple para estudiar la relación logística supuesta entre las varaibles definidas por los campos: Income (variable independiente) y **** (variable dependiente), con base en una distribución binomial y la función de enlace \(Logit\).

Resumen estadístico de las variables de estudio.

La navegación a través de las pestañas muestra el resumen estadístico de la variable independiente Chance of Admit, su boxplot e histograma. De la variable dependiente Columna 1

se mostrará su diagrama de barras, así como su media y mediana. Además, se exhibirá un Diagrama de Cajas conjunto entre aquellas.

Con base en la pestaña Resumen y Boxplot de Chance of Admit se puede comentar que la variable Columna 1, como se hizo en las secciones anteriores, no presenta asimetria y sus datos estan distribuidos normalmente. Así, puede decirse que la variable registra valores normales en relación con su intervalo de medición. Lo expuesto también es constatable a través de la pestaña Histograma de Columna 1.

Asimismo, según la pestaña Resumen y Diagrama de Barras de Sex, la variable cualitativa::nominal sex muestra proporcionalidad para los casos favorables 1, que para los casos desfavorables 0.

Complementariamente, la pestaña Resumen y Diagrama de Cajas Conjunto muestra que las observaciones son consistentes con el contexto del problema; es decir, para los casos favorables de Columna 1 los resultados de sex son proporcionales, en comparación con los casos desfavorables. Además, ambos casos: los favorables y los desfavorables, muestran comportamiento normal.

Resumen y Boxplot de Columna 1

summary(Gastos_Dataset$`Columna 1`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     0.0     0.5     0.5     1.0     1.0
boxplot(Gastos_Dataset$`Columna 1`, main = "Diagrama de Caja de Chance of Admit", col = c("orange"))

Histograma de Columna 1

summary(Gastos_Dataset$`Columna 1`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     0.0     0.5     0.5     1.0     1.0
hist(Gastos_Dataset$`Columna 1`, main = "Histograma de Columna 1", col = c("gold"))

Resumen y Diagrama de Barras de Sex

table(Gastos_Dataset$sex)
## 
##    0    1 
## 1120 1120
prop.table(table(Gastos_Dataset$sex))
## 
##   0   1 
## 0.5 0.5
barplot(table(Gastos_Dataset$sex))

Resumen y Diagrama de Cajas Conjunto

tapply(Gastos_Dataset$`Columna 1`, Gastos_Dataset$sex, mean)
##   0   1 
## 0.4 0.6
tapply(Gastos_Dataset$`Columna 1`, Gastos_Dataset$sex, median)
## 0 1 
## 0 1
boxplot(Gastos_Dataset$`Columna 1`~Gastos_Dataset$sex, main = "Boxplot Conjunto: Chance of Admit - Research", col = c("orange", "gold"))

## Formulación del modelo de RLogS entre las variables de estudio. {.tabset .tabset-pills}

La navegación a través de las pestañas muestra los coeficientes del modelo RLogS y su resumen estadístico. Se menciona de nuevo que las variables de interés son: Chance of Admit (variable independiente) y Research (variable dependiente).

La pestaña Coeficientes del Modelo RLogS permite establecer que el modelo RLogS relaciona a \(\pi(x)\) con \(x\) a través de la función de enlace \(Logit\) de la siguiente manera:\[\frac{\pi(x)}{1-\pi(x)}=e^{-0,405461+0,8109302\cdot x}\hspace{10mm}(31)\]

El coeficiente para el intercepto es -0.4054651 y el coeficiente para la variable Columna 1 es 0.8109302.

ignificancia estadística: Ambos coeficientes son estadísticamente significativos, ya que tienen valores p < 0.001. Esto indica que ambas variables tienen una relación significativa con la variable de respuesta (sex).

Interpretación de coeficientes:

El coeficiente para el intercepto (-0.4054651) indica el logaritmo del odds de la categoría de referencia de la variable sex cuando Columna 1 es cero.

El coeficiente para la variable Columna 1 (0.8109302) indica cómo cambia el logaritmo del odds de la variable sex por cada unidad de cambio en Columna 1.

Resumen del modelo:

-La devianza nula es 3105.3 y la devianza residual es 3015.1, lo que indica que el modelo explica parte de la variabilidad en los datos.

-El AIC (criterio de información de Akaike) es 3019.1, que es un indicador de la calidad del ajuste del modelo.

Coeficientes del Modelo RLogS

modelo_RLog_Simple = glm(Gastos_Dataset$sex~Gastos_Dataset$`Columna 1`, family = "binomial", data = data.frame(Gastos_Dataset$sex, Gastos_Dataset$`Columna 1`))
coef(modelo_RLog_Simple)
##                (Intercept) Gastos_Dataset$`Columna 1` 
##                 -0.4054651                  0.8109302

Resumen Estadístico del Modelo RLogS

summary(modelo_RLog_Simple)
## 
## Call:
## glm(formula = Gastos_Dataset$sex ~ Gastos_Dataset$`Columna 1`, 
##     family = "binomial", data = data.frame(Gastos_Dataset$sex, 
##         Gastos_Dataset$`Columna 1`))
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                -0.40547    0.06099  -6.648 2.98e-11 ***
## Gastos_Dataset$`Columna 1`  0.81093    0.08626   9.401  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 3105.3  on 2239  degrees of freedom
## Residual deviance: 3015.1  on 2238  degrees of freedom
## AIC: 3019.1
## 
## Number of Fisher Scoring iterations: 4
modelo_RLog_Simple_S = glm(Gastos_Dataset$sex~Gastos_Dataset$`Columna 1`, family = "binomial", data = data.frame(Gastos_Dataset$sex, Gastos_Dataset$`Columna 1`))
summary(modelo_RLog_Simple_S)
## 
## Call:
## glm(formula = Gastos_Dataset$sex ~ Gastos_Dataset$`Columna 1`, 
##     family = "binomial", data = data.frame(Gastos_Dataset$sex, 
##         Gastos_Dataset$`Columna 1`))
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                -0.40547    0.06099  -6.648 2.98e-11 ***
## Gastos_Dataset$`Columna 1`  0.81093    0.08626   9.401  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 3105.3  on 2239  degrees of freedom
## Residual deviance: 3015.1  on 2238  degrees of freedom
## AIC: 3019.1
## 
## Number of Fisher Scoring iterations: 4
LS0tDQp0aXRsZTogIkVzdHVkaW8gRGVzY3JpcHRpdm8gTXVsdGl2YXJpYW50ZSBiYXNhZG8gZW4gdW4gQ29uanVudG8gZGUgRGF0b3MgcXVlIHJlc2dpc3RyYSBsb3MgR2FzdG9zIE1lbnN1YWxlcyBkZSBsb3MgQ2xpZW50ZXMgZGUgdW5hIEVtcHJlc2EgTm9ydGVhbWVyaWNhbmEiDQphdXRob3I6ICJQb3I6RzQ6OmdhYnJpZWxhLm9saXZhOjppYmFyZ3Vlbi5rZXZpbjo6QGNvcnJlb3VuaXZhbGxlLmVkdS5jbyINCmRhdGU6ICIyMDI0LTAzLTIwIg0KDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB1bml0ZWQNCi0tLQ0KPCEtLSBDb25maWd1cmFjacOzbiBHbG9iYWwgZGUgUiAtLT4NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KEdHYWxseSkNCmxpYnJhcnkoTVZOKQ0KbGlicmFyeShhcGxwYWNrKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGNvcnJwbG90KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShhbmRyZXdzKQ0KbGlicmFyeSh0Y2x0aykNCmxpYnJhcnkoZ3JhcGhpY3MpDQpsaWJyYXJ5KHJlc2hhcGUyKQ0KbGlicmFyeShGYWN0b01pbmVSKQ0KbGlicmFyeShmYWN0b2V4dHJhKQ0KbGlicmFyeShwc3ljaCkNCmxpYnJhcnkoRmFjdG9DbGFzcykNCmxpYnJhcnkoY2x1c3RlcikNCmxpYnJhcnkoZGVuZGV4dGVuZCkNCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KE5iQ2x1c3QpDQpsaWJyYXJ5KG1pY2UpDQpsaWJyYXJ5KHN0YXJnYXplcikNCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KR2FzdG9zX0RhdGFzZXQgPC0gcmVhZF9leGNlbCgiQzovVXNlcnMvZ2FicmkvRG93bmxvYWRzL1RGQ19HZERfMjAyNF8xL21hcmtldGluZ19jYW1wYWlnbiB2Mi4wLnhsc3giKQ0KVmlldyhHYXN0b3NfRGF0YXNldCkNCg0KYGBgDQoNCiMgRmFzZSAxICBbRGVzY3JpcGNpb25lcyBNdWx0aXZhcmlhbnRlc10NCg0KIyMgMS4xLiBPYmpldGl2b3MNCkVzdHVkaWFyIGRlc2RlIGVsIHB1bnRvIGRlIHZpc3RhIGRlIGxhIGVzdGFkw61zdGljYSBkZXNjcmlwdGl2YSBtdWx0aXZhcmlhbnRlIChjw6FsY3Vsb3MsIHZpc3VhbGlzYWNpb25lcyBlIGludGVycHJldGFjaW9uZXMpIGEgdW4gY29uanVudG8gZGUgZGF0b3MgcmVsYWNpb25hZG9zIGNvbiBsb3MgZ2FzdG9zIG1lbnN1YWxlcyBkZSBsb3MgY2xpZW50ZXMgZGUgdW5hIGVtcHJlc2EgTm9ydGVhbWVyaWNhbmEuIA0KDQojIyAxLjIuIERlc2NyaXBjacOzbiBkZSBEYXRvcyB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KDQoqKkZ1ZW50ZSBkZWwgQ29uanVudG8gZGUgRGF0b3MqKg0KIA0KRWwgY29uanVudG8gZGUgZGF0b3MgdXRpbGl6YWRvIGZ1ZSBwcmluY2lwYWxtZW50ZSByZWNvcGlsYWRvIGRlICoqS2FnZ2xlKio6IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmthZ2dsZS5jb20vZGF0YXNldHMvaW1ha2FzaDMwMTEvY3VzdG9tZXItcGVyc29uYWxpdHktYW5hbHlzaXMiIHRhcmdldD0iX2JsYW5rIj5HYXN0b3MgTWVuc3VhbGVzIGRlIENsaWVudGVzIGRlIEVtcHJlc2EgTm9ydGVhbWVyaWNhbmE8L2E+LCB1bmEgcGxhdGFmb3JtYSBlbiBsw61uZWEgbWFudGVuaWRhIHBvciBHb29nbGUgTExDLiAqKkthZ2dsZSoqIHByb3BvcmNpb25hIHVuYSBjb211bmlkYWQgcGFyYSBjaWVudMOtZmljb3MgZGUgZGF0b3MgeSBwcm9mZXNpb25hbGVzIGRlIGFwcmVuZGl6YWplIGF1dG9tw6F0aWNvLCBkb25kZSBsb3MgdXN1YXJpb3MgcHVlZGVuIGVuY29udHJhciwgcHVibGljYXIgeSBleHBsb3JhciBjb25qdW50b3MgZGUgZGF0b3MsIGFzw60gY29tbyBjcmVhciBtb2RlbG9zIGVuIHVuIGVudG9ybm8gYmFzYWRvIGVuIGxhIHdlYi4gQWRlbcOhcywgcGVybWl0ZSBsYSBjb2xhYm9yYWNpw7NuIGVudHJlIGNpZW50w61maWNvcyBkZSBkYXRvcyBlIGluZ2VuaWVyb3MgZGUgYXByZW5kaXphamUgYXV0b23DoXRpY28sIGFzw60gY29tbyBsYSBwYXJ0aWNpcGFjacOzbiBlbiBkZXNhZsOtb3MgZGUgY2llbmNpYSBkZSBkYXRvcyBhIHRyYXbDqXMgZGUgY29uY3Vyc29zLg0KDQoqKkNvbnRleHRvIGRlbCBDb25qdXRvIGRlIERhdG9zKioNCiANCkVsIGNvbmp1bnRvIGRlIGRhdG9zIHJlZ2lzdHJhIGxvcyBnYXN0b3MgbWVuc3VhbGVzIGRlIGxvcyBjbGllbnRlcyBkZSB1bmEgZW1wcmVzYSBub3J0ZWFtZXJpY2FuYSwgZGVkaWNhZGEgYSBsYSBpbm5vdmF2acOzbiB5IG1vZGlmaWNhY2nDs24gZGUgcHJvZHVjdG9zIGRlIGFjdWVyZG8gY29uIGxhcyBuZWNlc2lkYWRlcywgY29tcG9ydGFtaWVudG9zIHkgZ2FzdG9zIGVzcGVjaWZpY29zICBkZSBzdXMgZGlmZXJlbnRlcyB0aXBvcyBkZSBjbGllbnRlcy4gU3UgVWx0aW1hIGFjdHVhbGl6YWNpw7NuIGZ1ZSBlbiAyMDIxLg0KDQoqKkRlc2NyaXBjacOzbiBkZWwgQ29uanVudG8gZGUgRGF0b3MqKg0KIA0KRWwgY29uanVudG8gZGUgZGF0b3MgY29udGllbmUgMjIgY2FtcG9zIHkgMjI0MCByZWdpc3Ryb3MuIE9mcmVjZSBpbmZvcm1hY2nDs24gc29icmUgY2xpZW50ZXMsIGluY2x1eWVuZG8gZGV0YWxsZXMgZGVtb2dyw6FmaWNvcyBjb21vIGHDsW8gZGUgbmFjaW1pZW50bywgbml2ZWwgZWR1Y2F0aXZvLCBlc3RhZG8gY2l2aWwgeSBnw6luZXJvLiBBZGVtw6FzLCBwcm9wb3JjaW9uYSBkYXRvcyBmaW5hbmNpZXJvcyBjb21vIGluZ3Jlc29zLCBhc8OtIGNvbW8gY29tcG9ydGFtaWVudG9zIGRlIGNvbXByYSwgY29tbyBtb250b3MgZ2FzdGFkb3MgZW4gZGlmZXJlbnRlcyBjYXRlZ29yw61hcyBkZSBwcm9kdWN0b3MgeSBuw7ptZXJvIGRlIGNvbXByYXMgZW4gZGlmZXJlbnRlcyBjYW5hbGVzLiBUYW1iacOpbiBpbmNsdXllIGluZm9ybWFjacOzbiBzb2JyZSBsYSBzYXRpc2ZhY2Npw7NuIGRlbCBjbGllbnRlIGNvbiBlbCBzZXJ2aWNpbyByZWNpYmlkbyB5IHNpIGhhbiBwcmVzZW50YWRvIHF1ZWphcy4gTGEgbGlzdGEgc2lndWllbnRlIGxvcyBkZXNjcmliZSBlbiBlbCBtaXNtbyBvcmRlbiwgZGUgaXpxdWllcmRkYSBhIGRlcmVjaGEsIGNvbW8gYXBhcmVjZW4gZW4gZWwgcmFuZ28gZGUgZGF0b3MgcXVlIGxvcyBjb250aWVuZSB5IHNlIGVzdGFibGVjZSBwYXJhIGNhZGEgY2FtcG8sIGVsIHRpcG8gZGUgdmFyaWFibGUgeSBzdSBlc2NhbGEgZGUgbWVkaWNpw7NuIGV4Y2VwdG8gZWwgKipJRCoqIGNvbiBiYXNlIGVuIGxhIG5vbWVuY2xhdHVyYSAodGlwb19kZV92YXJpYWJsZTo6ZXNjYWxhX2RlX21lZGljacOzbltvcmRlbmFtaWVudG9dKToNCg0KLSAqKklEKiogKGlkZW50aWZpY2Fkb3IpOkVzdGUgY2FtcG8gcmVwcmVzZW50YSB1biBpZGVudGlmaWNhZG9yIMO6bmljbyBwYXJhIGNhZGEgcmVnaXN0cm8gZW4gZWwgY29uanVudG8gZGUgZGUgZGF0b3MuDQoNCi0gKipZZWFyX0JpcnRoKiogKGN1YW50aXRhdGl2YTo6cmFuZ28pOkVzdGUgY2FtcG8gaW5kaWNhIGVsIGHDsW8gZGUgbmFjaW1pZW50byBkZSBjYWRhIGluZGl2aWR1by4NCg0KLSAqKkVkdWNhdGlvbioqIChjdWFsaXRhdGl2YTo6IG5vbWluYWwpOiBFc3RlIGNhbXBvIGRlc2NyaWJlIGVsIG5pdmVsIGVkdWNhdGl2byBkZSBjYWRhIGluZGl2aWR1by4gTGFzIGNhdGVnb3JpYXMgdXNhZGFzIHNvbjogKDJuIEN5Y2xlLEJhc2ljLEdyYWR1YXRpb24sTWFzdGVyLFBoRCkuDQogIA0KLSAqKk1hcml0YWxfU3RhdHVzKio6KGN1YWxpdGF0aXZhOjpub21pbmFsKTpFc3RlIGNhbXBvIGluZGljYSBlbCBlc3RhZG8gY2l2aWwgZGUgY2FkYSBpbmRpdmlkdW8uIFN1cyBjYXRlZ29yaWFzIHNvbjogKEFsb25lLERpdm9yY2VkLE1hcnJpZWQsU2luZ2xlLFRvZ2V0aGVyLFdpZG93LFlPTE8oWW91IE9ubHkgTGl2ZSBPbmNlKSkuDQoNCi0gKipJbmNvbWUqKiAoY3VhbnRpdGF0aXZhOjogcmF6w7NuKTpFc3RlIGNhbXBvIHJlcHJlc2VudGEgZWwgaW5ncmVzbyBmaW5hbmNpZXJvIGRlIGNhZGEgaW5kaXZpZHVvIChtZWRpZG8gZW4gdXNkKS4NCg0KLSAqKlRlZW5ob21lKiogKGN1YW50aXRhdGl2YTo6cmFuZ28pOkVzdGUgY2FtcG8gaW5kaWNhIGxhIGNhbnRpZGFkIGRlIGFkb2xlc2NlbnRlcyBlbiBjYXNhIGRlbCBjbGllbnRlIHF1ZSB2YSBkZXNkZSAqKjAqKiBhICoqMioqLg0KDQotICoqRHRfQ3VzdG9tZXIqKiAoY3VhbnRpdGF0aXZhOjpyYW5nbyk6RXN0ZSBjYW1wbyByZXByZXNlbnRhIGVsIGHDsW8gZW4gcXVlIGVsIGluZGl2aWR1byBzZSBjb252aXJ0acOzIGVuIGNsaWVudGUuDQoNCi0gKipNbnRXaW5lcywgTW50RnJ1aXRzLCBNbnRNZWF0UHJvZHVjdHMsIE1udEZpc2hQcm9kdWN0cywgTW50U3dlZXRQcm9kdWN0cywgTW50R29sZFByb2RzKiogKGN1YW50aXRhdGl2YTo6cmF6w7NuKTogRXN0b3MgY2FtcG9zIHJlZ2lzdHJhbiBsb3MgbW9udG9zIGdhc3RhZG9zIChtZWRpZG9zIGVuIHVzZCkgcG9yIGVsIGNsaWVudGUgZW4gbGFzIGNhdGVnb3LDrWFzIHJlc3BlY3RpdmFzIGRlOih2aW5vcywgZnJ1dGEsIGNhcm5lLCBwZXNjYWRvLCBkdWxjZSxvcm8pLg0KDQotICoqTnVtRGVhbHNQdXJjaGFzZXMsIE51bVdlYlB1cmNoYXNlcywgTnVtQ2F0YWxvZ1B1cmNoYXNlcywgTnVtU3RvcmVQdXJjaGFzZXMsIE51bVdlYlZpc2l0c01vbnRoKiogKGN1YW50aXRhdGl2YTo6cmF6w7NuKTpFc3RvcyBjYW1wb3MgcmVnaXN0cmFuIGVsIG7Dum1lcm8gZGUgY29tcHJhcyBvIHZpc2l0YXMgcmVhbGl6YWRhcyBwb3IgZWwgY2xpZW50ZSBlbiBkaWZlcmVudGVzIGNhbmFsZXMgbyBwbGF0YWZvcm1hcyBkZTooQWNjemlvbSx3ZWIgcHVyY2hhc2UgbHRkLEdlcCxJbi1BcHAgcHVyY2hhcnNlLE1vbnRobHkgdmlzaXRzKS4NCg0KLSAqKkNvbXBsYWluKiogKGN1YWxpdGF0aXZhOjpub21pbmFsKTpFc3RlIGNhbXBvIGluZGljYSBzaSBlbCBjbGllbnRlIGhhIHByZXNlbnRhZG8gdW5hIHF1ZWphLiAqKjAqKjpzaSBlbCBjbGllbnRlIG5vIHByZXNlbnRhIHF1ZWphIHkgKioxKio6c2kgZWwgY2xpZW50ZSBwcmVzZW50YSBhbGd1bmEgcXVlamEuDQoNCi0gKipTZXgqKiAoY3VhbGl0YXRpdmE6Om5vbWluYWwpOkVzdGUgY2FtcG8gaW5kaWNhIGVsIHNleG8gZGVsIGluZGl2aWR1byB5IGxvIGNsYXNpZmljYSBkZSBsYSBzaWd1aWVudGUgbWFuZXJhOihtYW4sIHdvbWVuKS4NCg0KLSAqKlNhdGlzZmFjdGlvbiB3aXRoIGN1c3RvbWVyIHNlcnZpY2UqKihjdWFudGl0YXRpdmE6Oik6RXN0ZSBjYW1wbyByZXByZXNlbnRhIGVsIG5pdmVsIGRlIHNhdGlzZmFjY2nDs24gZGVsIGluZGl2aWR1byBjb24gZWwgc2VydmljaW8gYWwgY2xpZW50ZS4gU2UgcmVzZ2l0cmEgYSB0csOhdmVzIGRlIGxhcyBzaWd1aWVudGVzIGNhdGVnb3JpYXMgcmVlc2NyaXRhcyBjb21vOihkaXNzYXRpc2ZpZWQ6KiowKiosbmV1dHJhbDoqKmZhbHNvKiosc2F0aXNmaWVkOioqMCoqLHZlcnkgZGlzc2F0aXNmaWVkOioqMSoqLHZlcnkgc2F0aXNmaWVkOioqMSoqKS4NCiANCiMjIyBFc3RydWN0dXJhIGRlbCBDb25qdW50byBkZSBEYXRvcw0KYGBge3IgRXN0cnVjdHVyYV9Db25qdW50b19kZV9kZV9EYXRvcywgZmlnLmFsaWduPSdjZW50ZXInfQ0Kc3RyKEdhc3Rvc19EYXRhc2V0KQ0KYGBgDQoNCiMjIyBWaXN1YWxpemFjacOzbiBkZWwgQ29uanVudG8gZGUgRGF0b3MNCmBgYHtyIFZpc3VhbGl6YWNpb25fY29uanVudG9fZGVfRGF0b3MsIGZpZy5hbGlnbj0nY2VudGVyJ30NCkdhc3Rvc19EYXRhc2V0DQpgYGANCg0KIyMgMS4zLiBFc3RpbWFjaW9uZXMgTXVsdGl2YXJpYWRhcyB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KQ29tbyBzZSBtZW5jaW9uYSBlbiAoQXJpc3RpesOhYmFsIFIuLCAyMDE3KSBsYSBkZSBtZWRpYSwgdmFyaWFuemEgeSBjb3ZhcmlhbnphIGNvbmZvcm1hbiB1biBjb25qdW50byBkZSBtZWRpZGFzIGZ1bmRhbWVudGFsZXMgcGFyYSBkZXNjcmliaXIgZWwgY29tcG9ydGFtaWVudG8gcG9zaWNpb25hbCwgZGlzcGVyc2l2byB5IGNvcnJlbGFjaW9uYWwgZGUgdmFyaWFibGVzIGFsZWF0b3JpYXMuIEVuIGVzdGUgc2VudGlkbywgZWwgY29uanVudG8gZGUgZGF0b3MgZGUgdHJhYmFqbyBxdWUgcG9zZWUgZG9jZSB2YXJpYWJsZXMgbnVtw6lyaWNhcywgeSBxdWUgZXN0w6EgcmVwcmVzZW50YWRvIG1hdHJpY2lhbG1lbnRlLCBlc3RpbWEgbGFzIG1lZGlkYXMgYW50ZXJpb3JlcyBhIHBhcnRpciBkZSB2ZWN0b3JlcyB5IG1hdHJpY2VzIGVuIGVsIGVzdHVkaW8gZGVzY3JpcHRpdm8gbXVsdGl2YXJpYWJsZS4NCg0KRWwgdmVjdG9yIGRlIG1lZGlhcyBpbmRpY2EgZWwgY29tcG9ydGFtaWVudG8gcG9zaWNpb25hbCBlbiBlbCBzZW50aWRvIGRlIHZhbG9yIGVzcGVyYWRvIG8gcHVudG8gbWVkaW8gcGFyYSBjYWRhIHZhcmlhYmxlIGVuIHJlbGFjacOzbiBjb24gdG9kb3Mgc3VzIHJlZ2lzdHJvcy4gTGEgbWF0cml6IGRlIHZhcmlhbnphcy1jb3ZhcmlhbnphcyBlc3RpbWEgbGFzIGRpc3BlcnNpb25lcywgZW4gc3UgZGlhZ29uYWwgcHJpbmNpcGFsLCBkZSBjYWRhIHZhcmlhYmxlIGRlbCBjb25qdW50byBkZSBkYXRvcyByZXNwZWN0byBkZSBjYWRhIG1lZGlhIG9idGVuaWRhIGRlbCB2ZWN0b3IgZGUgbWVkaWFzLiBBZGVtw6FzLCBwb3IgZW5jaW1hIG8gcG9yIGRlYmFqbyBkZSBsYSBkaWFnb25hbCBwcmluY2lwYWwsIHNlIGVzdGltYW4gbGFzIGNvdmFyaWFuemFzIGVudHJlIGxhcyBjb21iaW5hY2lvbmVzIGRlIGxvcyBwb3NpYmxlcyBwYXJlcyBkZSB2YXJpYWJsZXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zLiBQYXJhIG3DoXMgZGV0YWxsZXMgc2UgcHVlZGUgY29uc3VsdGFyIGEgKEFyaXN0aXrDoWJhbCBSLiwgMjAxNykuDQoNCioqUGxhbnRlYW1pZW50byBkZWwgUHJvYmxlbWEqKg0KDQpDb24gYmFzZSBlbiBlbCBjb25qdW50byBkZSBkYXRvcyBkZXNjcml0byBlbiBsYSBzZWNjacOzbiAxLjIgc2UgY2FsY3VsYXLDoW4gZSBpbnRlcHJldGFyw6FuLCBwYXJhIGxhcyB2YXJpYWJsZXMgbnVtw6lyaWNhcywgZWwgdmVjdG9yIGRlIG1lZGlhcywgbGEgbWF0cml6IGRlIHZhcmlhbnphcy1jb3ZhcmlhbnphcyB5IGxhIG1hdHJpeiBkZSBjb3JyZWxhY2lvbmVzLiBTZSByZWN1ZXJkYSBxdWUgbGFzIHZhcmlhYmxlcyBudW3DqXJpY2FzIChlbiBlc2NhbGFkYSBkZSBtZWRpY2nDs24gZGUgcmF6w7NuKSBzb246ICoqSW5jb21lLCBNbnRXaW5lcywgTW50RnJ1aXRzLCBNbnRNZWF0UHJvZHVjdHMsIE1udEZpc2hQcm9kdWN0cywgTW50U3dlZXRQcm9kdWN0cywgTW50R29sZFByb2RzLCBOdW1EZWFsc1B1cmNoYXNlcywgTnVtV2ViUHVyY2hhc2VzLCBOdW1DYXRhbG9nUHVyY2hhc2VzLCBOdW1TdG9yZVB1cmNoYXNlcywgTnVtV2ViVmlzaXRzTW9udGguKioNCg0KKipEZXNhcnJvbGxvIGRlbCBBbmFsw61zaXMqKg0KDQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIGPDoWxjdWxvIGRlIGxvcyBzaWd1aWVudGVzIG9iamV0b3M6ICoqVmVjdG9yIGRlIE1lZGlhcyB4LCBNYXRyaXogZGUgVmFyaWFuemFzLUNvdmFyaWFuemFzIFMgeSBNYXRyaXogZGUgQ29ycmVsYWNpb25lcyBSLioqDQoNCkNvbiBiYXNlIGFsIGFuYWxpc2lzIGRlbCAqKlZlY3RvciBkZSBNZWRpYXMgeSBCb3hwbG90cyoqIHBhcmEgbGFzIHNlaXMgcHJpbWVyYXMgdmFyaWFibGVzIHJldmVsYSBxdWUgTGEgZGlzdHJpYnVjacOzbiBkZSBpbmdyZXNvcyBlbnRyZSBsb3MgY2xpZW50ZXMgZXN0w6Egc2VzZ2FkYSBhIGxhIGRlcmVjaGEsIGNvbiBtZWRpYW5hcyB5IHJhbmdvcyBpbnRlcmN1YXJ0w61saWNvcyBiYWpvcyBxdWUgcmVwcmVzZW50YSBsYSBkaXNwZXJzacOzbiBjZW50cmFsIGRlbCA1MCUgZGUgbG9zIGRhdG9zLGxvIHF1ZSBlcyByZWxhdGl2YW1lbnRlIGVzdHJlY2hvIGVuIHRvZGFzIGxhcyB2YXJpYWJsZXMsIHN1Z2lyaWVuZG8gcXVlIGxhIG1heW9yw61hIGRlIGxvcyBkYXRvcyBlc3TDoW4gY29uY2VudHJhZG9zIGNlcmNhIGRlIGxhIG1lZGlhbmEuIFNpbiBlbWJhcmdvLiBMb3MgYmlnb3RlcyBxdWUgc2UgZXh0aWVuZGVuIGhhY2lhIHZhbG9yZXMgYWx0b3MgaW5kaWNhbiB1bmEgZGlzcGVyc2nDs24gc2lnbmlmaWNhdGl2YSBlbiBlbCByYW5nbyBzdXBlcmlvciBkZSBsb3MgZGF0b3MsIGxvIHF1ZSBwdWVkZW4gc2VyIGVsIHJlc3VsdGFkbyBkZSBjb21wb3J0YW1pZW50b3MgZGUgZ2FzdG8gZGlzdGludG9zLg0KQ29uIGJhc2UgYWwgYW5hbGlzaXMgZGVsICoqVmVjdG9yIGRlIE1lZGlhcyB5IEJveHBsb3RzKiogcGFyYSBsYXMgdmFyaWFibGVzIHJlc3RhbnRlcywgc2UgaW50ZXJwcmV0YSBxdWUgZXN0ZSBhbsOhbGlzaXMgcHJvcG9yY2lvbmEgdW5hIHZpc2nDs24gY2xhcmEgZGUgbG9zIHBhdHJvbmVzIGRlIGNvbXByYSB5IHZpc2l0YXMgZGUgbG9zIGNsaWVudGVzLCBkZXN0YWNhbmRvIGxhIGltcG9ydGFuY2lhIGRlIGxhcyBvYnNlcnZhY2lvbmVzIHF1ZSBzZSBlbmN1ZW50cmFuIHNpZ25pZmljYXRpdmFtZW50ZSBhbGVqYWRhcyBkZWwgcmVzdG8gZGUgbG9zIGRhdG9zLg0KDQpBbCBhbmFsaXphciBsYSAqKk1hdHJpeiBkZSBWYXJpYW56YXMtQ292YXJpYW56YXMqKiBzZSBvYnNlcnZhIGxhIG1hZ25pdHVkIGRlIGxhIGRpc3BlcnNpw7NuIGRlIGNhZGEgdmFyaWFibGUgcG9yIHPDrSBtaXNtYS4gUG9yIGVqZW1wbG8sIGxhIGFsdGEgdmFyaWFuemEgZGUgbGEgdmFyaWJhbGUgIkluY29tZSIgc3VnaWVyZSBxdWUgbG9zIGluZ3Jlc29zIHRpZW5lbiB1bmEgYW1wbGlhIGdhbWEgZGUgdmFsb3JlcyBlbiBlbCBjb25qdW50byBkZSBkYXRvcy4gRW4gY3VhbnRvIGEgbGEgY292YXJpYW56YSBlbnRyZSB2YXJpYWJsZXMsIHNlIGlkZW50aWZpY2EgbGFzIHJlbGFjaW9uZXMgZGUgY28tbW92aW1pZW50byBlbnRyZSBwYXJlcyBkZSB2YXJpYWJsZXMuIFVuYSBjb3ZhcmlhbnphIHBvc2l0aXZhIGluZGljYSBxdWUgbGFzIHZhcmlhYmxlcyB0aWVuZGVuIGEgbW92ZXJzZSBlbiBsYSBtaXNtYSBkaXJlY2Npw7NuLCBtaWVudHJhcyBxdWUgdW5hIGNvdmFyaWFuemEgbmVnYXRpdmEgc3VnaWVyZSBxdWUgdGllbmRlbiBhIG1vdmVyc2UgZW4gZGlyZWNjaW9uZXMgb3B1ZXN0YXMuIFVuIGVqZW1wbG8gZXNwZWPDrWZpY28gZXMgbGEgY292YXJpYW56YSBwb3NpdGl2YSBlbnRyZSAiSW5jb21lIiB5ICJNbnRXaW5lcyIsIGxvIHF1ZSBpbXBsaWNhIHF1ZSBhIG1lZGlkYSBxdWUgbG9zIGluZ3Jlc29zIGF1bWVudGFuLCB0YW1iacOpbiBsbyBoYWNlbiBsb3MgZ2FzdG9zIGVuIHZpbm9zLiBQb3Igb3RybyBsYWRvLCBsYSBjb3ZhcmlhbnphIG5lZ2F0aXZhIGVudHJlICJOdW1XZWJWaXNpdHNNb250aCIgZSAiSW5jb21lIiBpbmRpY2EgcXVlIGEgbWVkaWRhIHF1ZSBsb3MgaW5ncmVzb3MgYXVtZW50YW4sIGVsIG7Dum1lcm8gZGUgdmlzaXRhcyBtZW5zdWFsZXMgYSBsYSB3ZWIgdGllbmRlIGEgZGlzbWludWlyLg0KDQpDb24gYmFzZSBlbiBsYSBwZXN0YcOxYSAqKk1hdHJpeiBkZSBDb3JyZWxhY2lvbmVzKiogeSBhbCBjb25zaWRlcmFyIGxhICoqTWF0cml6IGRlIFZhcmlhbnphcy1Db3ZhcmlhbnphcyoqIGVzIHZlcmlmaWNhYmxlIHF1ZSBsYSBpbnRlbnNpZGFkIGRlIGxhcyBjb3JyZWxhY2lvbmVzIGVzIG3DoXMgYWx0YSB5IHNpZW1wcmUgcG9zaXRpdmEgZW50cmUgbGFzIHZhcmlhYmxlczogIk1udFdpbmVzIiwgIk1udEZydWl0cyIsICJNbnRNZWF0UHJvZHVjdHMiLCAiTW50RmlzaFByb2R1Y3RzIiwgIk1udFN3ZWV0UHJvZHVjdHMiLCAiTW50R29sZFByb2RzIiwgIk51bVdlYlB1cmNoYXNlcyIsICJOdW1DYXRhbG9nUHVyY2hhc2VzIiAgeSAiTnVtU3RvcmVQdXJjaGFzZXMiLCBxdWUgZXMgbG8gZXNwZXJhZG8gZW4gcmVsYWNpw7NuIGNvbiBlbCBmZW7Ds21lbm8gZXN0dWRpYWRvLiBUYW1iacOpbiBzZSBvYnNlcnZhbiBhbGd1bmFzIGNvcnJlbGFjaW9uZXMgbmVnYXRpdmFzLCBlbnRyZSAiSW5jb21lIiB5ICJOdW1XZWJWaXNpdHNNb250aCIsICAiTW50V2luZXMiLCAiTnVtV2ViVmlzaXRzTW9udGgiLCAiTW50RnJ1aXRzIiwgIk51bVdlYlZpc2l0c01vbnRoIiwgIk1udE1lYXRQcm9kdWN0cyIsICJOdW1XZWJWaXNpdHNNb250aCIsICJNbnRGaXNoUHJvZHVjdHMiLCAiTnVtV2ViVmlzaXRzTW9udGgiLCAiTW50U3dlZXRQcm9kdWN0cyIgeSAiTnVtV2ViVmlzaXRzTW9udGgiLCAiTnVtQ2F0YWxvZ1B1cmNoYXNlcyIgeSAiTnVtV2ViVmlzaXRzTW9udGgiLg0KDQojIyMgVmVjdG9yIGRlIE1lZGlhcyB5IEJveHBsb3RzDQpgYGB7cn0NCmFwcGx5KEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIDIsIG1lYW4pDQpgYGANCg0KDQpgYGB7cn0NCkdhc3Rvc19EYXRhc2V0X1JlZHVjaWRvID0gR2FzdG9zX0RhdGFzZXRbLC1jKDEsMiwzLDQsNiw3LDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyKV0NCg0KcGFyKG1mcm93ID0gYygxLCBuY29sKEdhc3Rvc19EYXRhc2V0X1JlZHVjaWRvWywxOjZdKSkpDQppbnZpc2libGUobGFwcGx5KDE6KG5jb2woR2FzdG9zX0RhdGFzZXRfUmVkdWNpZG9bLDE6Nl0pKSwgZnVuY3Rpb24oaSkgYm94cGxvdChHYXN0b3NfRGF0YXNldF9SZWR1Y2lkb1ssIGldKSkpDQpgYGANCg0KYGBge3J9DQpHYXN0b3NfRGF0YXNldF9SZWR1Y2lkbyA9IEdhc3Rvc19EYXRhc2V0WywtYygxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxOSwyMCwyMSwyMildDQpwYXIobWZyb3cgPSBjKDEsIG5jb2woR2FzdG9zX0RhdGFzZXRfUmVkdWNpZG9bLDE6Nl0pKSkNCmludmlzaWJsZShsYXBwbHkoMTpuY29sKEdhc3Rvc19EYXRhc2V0X1JlZHVjaWRvWywxOjZdKSwgZnVuY3Rpb24oaSkgYm94cGxvdChHYXN0b3NfRGF0YXNldF9SZWR1Y2lkb1ssIGldKSkpDQpgYGANCg0KIyMjIE1hdHJpeiBkZSBWYXJpYW56YXMtQ292YXJpYW56YXMNCg0KYGBge3J9DQpzZWxlY3RlZF9jb2x1bW5zIDwtIEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0NCmNsZWFuX2RhdGEgPC0gbmEub21pdChzZWxlY3RlZF9jb2x1bW5zKQ0KY292X21hdHJpeF9jbGVhbiA8LSByb3VuZChjb3YoY2xlYW5fZGF0YSksIDIpDQpwcmludChjb3ZfbWF0cml4X2NsZWFuKQ0KYGBgDQoNCiMjIyBNYXRyaXogZGUgQ29ycmVsYWNpb25lcw0KYGBge3J9DQpzZWxlY3RlZF9jb2x1bW5zIDwtIEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0NCmNsZWFuX2RhdGEgPC0gbmEub21pdChzZWxlY3RlZF9jb2x1bW5zKQ0KY29yX21hdHJpeF9jbGVhbiA8LSByb3VuZChjb3IoY2xlYW5fZGF0YSksIDIpDQpwcmludChjb3JfbWF0cml4X2NsZWFuKQ0KYGBgDQoNCiMjIDEuNC4gR3LDoWZpY2FzIE11bHRpdmFyaWFkYXMgey50YWJzZXQgLnRhYnNldC1waWxsc30NCkVuIGxhIGd1w61hIGRlIGNsYXNlIGRlICggQXJpc3RpesOhYmFsIFIuLCAyMDE3ICkgc2UgbWVuY2lvbmEgcXVlLCBlbiBnZW5lcmFsLCBsb3MgZ3LDoWZpY29zIG11bHRpdmFyaWFkb3MgY3VtcGxlbiBkb3Mgb2JqZXRpdm9zIGVzZW5jaWFsZXM6IHByaW1lcm8sIGF5dWRhbiBhIGNvbXBhcmFyIGVsIGNvbXBvcnRhbWllbnRvIGRlIHBvYmxhY2lvbmVzIGRlIGVzdHVkaW8gY29uIGJhc2UgZW4gdmFyaWFibGVzIGNhdGVnw7NyaWNhcyB5IHN1YXZpemFuIGxhIGNvbXByZW5zacOzbiBkZSBsYSBFc3RydWN0dXJhIGRlIGV2YWx1YWNpw7NuIGVudHJlIHZhcmlhcyB2YXJpYWJsZXMuIEVuIGVzdGUgc2VudGlkbywgZWwgY29uanVudG8gZGUgZGF0b3MgZGUgdHJhYmFqbyB0ZW5kcsOhIGFwb3lvIGRlc2NyaXB0aXZvIGdyw6FmaWNvIGEgdHJhdsOpcyBkZSB0cmVzIGRpYWdyYW1hczogdW5vIGNvbmp1bnRvIHF1ZSBpbnRlZ3JhIGRpc3BlcnNpw7NuLCBkaXN0cmlidWNpw7NuIHkgY29ycmVsYWNpb25lczsgb3RybyBiYXNhZG8gZW4gbGEgcmVuZGVyaXphY2nDs24gZGUgcG9sw61nb25vcywgeSBwb3Igw7psdGltbywgdW5vIHF1ZSByZWN1cnJlIGEgbGFzIGNhcmFzIGRlIENoZXJub2ZmLg0KDQoqKlBsYW50ZWFtaWVudG8gZGVsIFByb2JsZW1hKioNCg0KQ29uIGJhc2UgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gMiBzZSBjYWxjdWxhcsOhbiBlIGludGVycHJldGFyw6FuLCBwYXJhIGxhcyB2YXJpYWJsZXMgbnVtw6lyaWNhcywgbGFzIGdyw6FmaWNhcyBtdWx0aXZhcmlhZGFzIGRlIGRpYWdyYW1hIGRlIGNvcnJlbGFjaW9uZXMsIG1hdHJpeiBkZSBkaWFncmFtYSBkZSBkaXNwZXJzacOzbiwgZGlhZ3JhbWEgZGUgZXN0cmVsbGFzIHkgY2FyYXMgZGUgQ2hlcm5vZmYuIFNlIHJlY3VlcmRhIHF1ZSBsYXMgdmFyaWFibGVzIG51bcOpcmljYXMgKGVuIGVzY2FsYWRhIGRlIG1lZGljacOzbiBkZSByYXrDs24pIHNvbjpJbmNvbWUsIE1udFdpbmVzLCBNbnRGcnVpdHMsIE1udE1lYXRQcm9kdWN0cywgTW50RmlzaFByb2R1Y3RzLCBNbnRTd2VldFByb2R1Y3RzLCBNbnRHb2xkUHJvZHMsIE51bURlYWxzUHVyY2hhc2VzLCBOdW1XZWJQdXJjaGFzZXMsIE51bUNhdGFsb2dQdXJjaGFzZXMsIE51bVN0b3JlUHVyY2hhc2VzLCBOdW1XZWJWaXNpdHNNb250aC4NCg0KKipEZXNhcnJvbGxvIGRlbCBBbsOhbGlzaXMqKg0KDQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGxhcyBncsOhZmljYXMgbXVsdGl2YXJpYWRhcyBkZTogKipEaWFncmFtYSBDb25qdW50byBkZSBEaXNwZXJzacOzbiwgRGlzdHJpYnVjacOzbiB5IENvcnJlbGFjaW9uZXMsIERpYWdyYW1hIGRlIEVzdHJlbGxhcyB5IENhcmFzIGRlIENoZXJub2ZmKiouDQoNCkNvbiBiYXNlIGVuIGxhIHBlc3Rhw7FhICoqRGlhZ3JhbWEgQ29uanVudG8gZGUgRGlzcGVyc2nDs24sIERpc3RyaWJ1Y2nDs24geSBDb3JyZWxhY2lvbmVzKiogc2UgcHVlZGUgZGVzY3JpYmlyIHF1ZSBsYXMgY29ycmVsYWNpb25lcyBtw6FzIGFsdGFzLCBtYXlvcmVzIHF1ZSAwLjUsIHNlIGRhbiBlbnRyZSB2YXJpYWJsZXMgZXNwZXJhZGFzIGNvbW86SW5jb21lLCBNbnRXaW5lcywgTW50RnJ1aXRzLCBNbnRNZWF0UHJvZHVjdHMsIE1udEZpc2hQcm9kdWN0cywgTW50U3dlZXRQcm9kdWN0cywgTW50R29sZFByb2RzLCBOdW1EZWFsc1B1cmNoYXNlcywgTnVtV2ViUHVyY2hhc2VzLCBOdW1DYXRhbG9nUHVyY2hhc2VzLCBOdW1TdG9yZVB1cmNoYXNlcy4gRXN0YXMgdmFyaWFibGVzLCBzZWfDum4gbGFzIGRlZmluaWNpb25lcyBkYWRhcyBlbiBsYSBzZWNjacOzbiAxLjIgZGUgZGVzY3JpcGNpw7NuIGRlIGRhdG9zLCBzb24gbnVjbGVhcmVzIGVuIGVsIGZlbsOzbWVubyBlc3R1ZGlhZG8uUG9ycXVlIGVzdMOhbiBpbnZvbHVjcmFkYXMgY29uIGVsIGluZ3Jlc28gbW9uZXRhcmlvIGRlbCBjbGllbnRlLCBzdXMgZ2FzdG9zIGVuIHByb2R1Y3RvcyB5IHBsYXRhZm9ybWFzLg0KY29tcGxlbWVudGFyaWFtZW50ZSBjb24gYmFzZSBlbiBsYSB2YXJpYWJsZSAqKlNleCoqIHNlIGlkZW50aWZpY2EgcXVlIGxvcyBjbGllbnRlcyBkZSBtYXlvciBpbmdyZXNvIHNvbiBkZSBzZXhvIG1hc2N1bGlubywgYSBzdSB2ZXosIHNlIHB1ZWRlIGRlc2NyaWJpciBsYSBzaWd1aWVpbnRlIHJlbGFjacOzbiwgcXVlLCBlbiBsYSBtZWRpZGEgZW4gcXVlIGxvcyBpbmdyZXNvcyBhdW1lbnRhbiBsb3MgZ2FzdG9zIHRhbWJpw6luIGxvIGhhY2VuIGVuIHJlbGFjacOzbiBjb24gcHJvZHVjdG9zIGVuIHBsYXRhZm9ybWFzLg0KDQpFbiBiYXNlIGEgbGEgcGVzdGHDsWEgKipEaWFncmFtYSBkZSBFc3RyZWxsYXMqKiwgc2UgcHVlZGUgbm90YXIgbGEgcHJlc2VuY2lhIGRlIGxhIHZhcmlhYmxlIE1udFN3ZWV0UHJvZHVjdHMgZSBJbmNvbWUgZW4gdG9kYXMgZXN0cmVsbGFzIGNvbiBkaWZlcmVudGVzIGxvbmdpdHVkZXMsIGVzdG8gc3VnaWVyZSBxdWUgbG9zIGluZ3Jlc29zIHkgbGEgY2F0ZWdvcmlhIGRlIGR1bGNlcyBzb24gY2FyYWN0ZXLDrXN0aWNhcyBkZXN0YWNhZGFzIHkgdmFyaWFibGVzIGVuIGxvcyBkYXRvcy4gTGFzIGRpZmVyZW50ZXMgbG9uZ2l0dWRlcyBpbmRpY2FuIGFtcGxpYXMgdmFyaWFiaWxpZGFkZXMgZW50cmUgbGFzIHBlcnNvbmFzIGVuY3Vlc3RhZGFzLGFkZW1hcywgbGEgdmFyaWFibGUgTW50RnJ1aXRzIHkgIE51bVN0b3JlUHVyY2hhc2VzIGVzdMOhIHByZXNlbnRlIGVuIGNhc2kgdG9kYXMgbGFzIGVzdHJlbGxhcywgcGVybyBzdSBpbXBhY3RvIGVuIGxhIGZvcm1hIGRlIGVzdGFzIGVzIHZhcmlhZGEgZW4gY29tcGFyYWNpw7NuIGNvbiBvdHJhcyB2YXJpYWJsZXMsY29tbyBJbmNvbWUgeSBNbnRTd2VldFByb2R1Y3RzLiB1bm8gZGUgbG9zIHBhdHJvbmVzIHF1ZSBzZSBvYnNlcnZhIGVzIHF1ZSBhIG1lZGlkYSBxdWUgbGEgdmFyaWFibGUgSW5jb21tZSBhdW1lbnRhLCBsYSB2YXJpYWJsZSBUZWVuaG9tZSB0aWVuZGUgYSBkaXNtaW51aXIsIHkgdmljZXZlcnNhLiBFc3RvIHN1Z2llcmUgdW5hIHJlbGFjacOzbiBpbnZlcnNhIGVudHJlIGFtYmFzIHZhcmlhYmxlcyBlbiBsb3MgZGF0b3MgYW5hbGl6YWRvcy4gRXMgZGVjaXIsIHBhcmVjZSBxdWUgaGF5IHVuYSB0ZW5kZW5jaWEgZGUgcXVlIGxhcyBwZXJzb25hcyBjb24gbWF5b3IgaW5ncmVzbyB0aWVuZGVuIGEgdGVuZXIgbWVub3MgYWRvbGVzY2VudGVzIGVuIGNhc2EsIHkgYXF1ZWxsYXMgY29uIHVuYSBtYXlvciBjYW50aWRhZCBkZSBhZG9sZXNjZW50ZXMgdGllbmRhbiBhIHRlbmVyIG1lbm9zIGluZ3Jlc29zIHBvciBlbmRlIGEgY29uc3VtaXIgbWVub3MuDQoNCkVuIGJhc2UgYSBsYSBwZXN0YcOxYSAqKkNhcmEgZGUgQ2hlcm5vZmYqKiBMYXMgY2FyYXMgbXVlc3RyYW4gdW5hIGdyYW4gdmFyaWFiaWxpZGFkIGVuIHN1cyBmb3JtYXMsIHN1Z2lyaWVuZG8gcXVlIGxhcyB2YXJpYWJsZXMgcmVwcmVzZW50YWRhcyBhYmFyY2FuIHVuYSBhbXBsaWEgZ2FtYSBkZSB2YWxvcmVzLiBFc3RvIGluZGljYSBsYSBkaXZlcnNpZGFkIHkgbGEgY29tcGxlamlkYWQgZGVsIGNvbmp1bnRvIGRlIGRhdG9zLiBMb3MgY29sb3JlcyBkZSBsYXMgY2FyYXMgKGFtYXJpbGxvLCBhbmFyYW5qYWRvIHkgdmVyZGUgY2xhcm8pIHBvZHLDrWFuIHJlcHJlc2VudGFyIGRpZmVyZW50ZXMgY2F0ZWdvcsOtYXMgZGlzY3JldGFzLiBMYSBkaXN0cmlidWNpw7NuIGRlIGVzdG9zIGNvbG9yZXMgcGVybWl0ZSBpZGVudGlmaWNhciBhZ3J1cGFjaW9uZXMgbyBkaWZlcmVuY2lhcyBlbiBsb3MgZGF0b3MuIExhIHZhcmlhYmlsaWRhZCBlbiBsYXMgZXhwcmVzaW9uZXMgZmFjaWFsZXMgc3VnaWVyZSBkaWZlcmVuY2lhcyBzaWduaWZpY2F0aXZhcyBlbiBsYXMgdmFyaWFibGVzIHJlbGFjaW9uYWRhcy4gQ2FyYXMgc29ucmllbnRlcywgc2VyaWFzIG8gY29uIG11ZWNhcyBwb2Ryw61hbiBlc3RhciBpbmRpY2FuZG8gZGlmZXJlbnRlcyBuaXZlbGVzIGRlIHVuYSBvIG3DoXMgdmFyaWFibGVzLg0KDQotIExhcyBjYXJhcyBudW1lcmFkYXMgMiwgNiwgNywgMTIgeSAxNyB0aWVuZW4gZm9ybWFzIG3DoXMgYWxhcmdhZGFzLCBsbyBxdWUgcG9kcsOtYSBpbmRpY2FyIHZhbG9yZXMgZXh0cmVtb3MgZGUgdW5hIG8gdmFyaWFzIHZhcmlhYmxlcyBlc3BlY8OtZmljYXMuDQoNCi0gTGFzIGNhcmFzIDExIHkgMTggcHJlc2VudGFuIHNvbnJpc2FzLCBsbyBxdWUgcG9kcsOtYSBpbmRpY2FyIHVuIHZhbG9yIGFsdG8gZW4gdW5hIHZhcmlhYmxlIHBvc2l0aXZhLg0KDQotIExhIGNhcmEgbsO6bWVybyA5IG11ZXN0cmEgdW5hIGV4cHJlc2nDs24gbcOhcyBuZWdhdGl2YSBvIGRlIHByZW9jdXBhY2nDs24sIGxvIHF1ZSBwb2Ryw61hIGluZGljYXIgdmFsb3JlcyBiYWpvcyBvIGRlc2Zhdm9yYWJsZXMgZW4gY2llcnRhcyB2YXJpYWJsZXMuDQoNCi0gQ2FyYXMgY29uIGFjY2Vzb3Jpb3MgY29tbyBsYXMgbnVtZXJhZGFzIDgsIDksIDEwLCAxMSwgMTYsIDIxIHkgMjIgcHVlZGVuIGVzdGFyIGRlc3RhY2FuZG8gdmFyaWFibGVzIGVzcGVjw61maWNhcyBvIGNhdGVnb3LDrWFzIGRpc3RpbnRhcy4NCg0KLSBMYXMgY2FyYXMgNCwgNSwgMTMsIDE0LCAxNSwgMTgsIDE5LCAyMCB5IDIzIHRpZW5lbiBjYXJhY3RlcsOtc3RpY2FzIHNpbWlsYXJlcyBlbiB0w6lybWlub3MgZGUgZm9ybWEgeSBjb2xvciwgbG8gcXVlIHBvZHLDrWEgaW5kaWNhciBxdWUgZXN0b3MgZGF0b3MgZXN0w6FuIGFncnVwYWRvcyAgIGVuIHVuIGVzcGFjaW8gbXVsdGlkaW1lbnNpb25hbCBzaW1pbGFyLg0KDQotIExhcyBjYXJhcyAyLCA2LCA3LCAxMiB5IDE3IHRpZW5lbiB1bmEgZm9ybWEgYWxhcmdhZGEgZGlzdGludGl2YSwgc3VnaXJpZW5kbyBxdWUgZXN0b3MgZGF0b3MgcG9kcsOtYW4gcmVwcmVzZW50YXIgY2F0ZWdvcsOtYXMgw7puaWNhcy4NCg0KIyMjIERpYWdyYW1hIGRlIENvbmp1bnRvIGRlIERpc3BlcnNpw7NuLCBEaXN0cmlidWNpw7NuIHkgQ29ycmVsYWNpb25lcyANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmdncGFpcnMoR2FzdG9zX0RhdGFzZXRbLC1jKDEsMiwzLDQsNiw3LDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyKV0pDQpgYGANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmdncGFpcnMoR2FzdG9zX0RhdGFzZXRbLC1jKDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDE5LDIwLDIxLDIyKV0pDQpgYGANCg0KIyMjIERpYWdyYW1hIGRlIENvbmp1bnRvIGRlIERpc3BlcnNpw7NuLCBEaXN0cmlidWNpw7NuIHkgQ29ycmVsYWNpb25lcyANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KR2FzdG9zX0RhdGFzZXQkc2V4IDwtIGFzLmZhY3RvcihHYXN0b3NfRGF0YXNldCRzZXgpDQoNCmdncGFpcnMoR2FzdG9zX0RhdGFzZXQsIGNvbHVtbnMgPSBjKDUsODoxMiksIGFlcyhjb2xvciA9IHNleCwgYWxwaGEgPSAwLjUpLCB1cHBlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoImNvciIsIHNpemUgPSAyLjUpKSkNCg0KZ2dwYWlycyhHYXN0b3NfRGF0YXNldCwgY29sdW1ucyA9IGMoMTM6MTgpLCBhZXMoY29sb3IgPSBzZXgsIGFscGhhID0gMC41KSwgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKCJjb3IiLCBzaXplID0gMi41KSkpDQpgYGANCg0KDQojIyMgRGlhZ3JhbWEgZGUgRXN0cmVsbGFzDQpgYGB7cn0NCnNldC5zZWVkKDc4MDcyOCkNCkdhc3Rvc19EYXRhc2V0X1JlZHVjaWRvID0gR2FzdG9zX0RhdGFzZXRbc2FtcGxlKDE6bnJvdyhHYXN0b3NfRGF0YXNldCksMjMpLC1jKDEsMyw0LDE5LDIwLDIxLDIyKV0NCnN0YXJzKEdhc3Rvc19EYXRhc2V0X1JlZHVjaWRvLCBsZW4gPSAxLCBjZXggPSAwLjQsIGtleS5sb2MgPSBjKDEwLCAyKSwgZHJhdy5zZWdtZW50cyA9IFRSVUUpDQpgYGANCg0KIyMjIENhcmFzIGRlIENoZXJub2ZmDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoNzgwNzI4KQ0KR2FzdG9zX0RhdGFzZXRfTXVlc3RyZWFkbyA9IEdhc3Rvc19EYXRhc2V0W3NhbXBsZSgxOm5yb3coR2FzdG9zX0RhdGFzZXQpLDIzKSwtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0NCmZhY2VzKEdhc3Rvc19EYXRhc2V0X011ZXN0cmVhZG8pDQpgYGANCg0KIyMgMS41LiBOb3JtYWxpZGFkIE11bHRpdmFyaWFkYSB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KQ29tbyBtZW5jaW9uYSAoUG9ycmFzIEMuLCAyMDE2KSBwYXJhIGluZGFnYXIgbyBlc3RhYmxlY2VyIGVsIHRpcG8gZGUgZGlzdHJpYnVjacOzbiBtdWx0aXZhcmlhZGEgZGUgdW4gY29uanVudG8gZGUgZGF0b3Mgc2UgcHVlZGUgcmVjdXJyaXIgYSBwcm9jZWRpbWllbnRvcyBkZXNjcmlwdGl2b3MsIGNvbW8gbG9zIGdyw6FmaWNvcywgbyBhIHByb2NlZGltaWVudG9zIGluZmVyZW5jaWFsZXMsIGNvbW8gbGFzIHBydWViYXMgZXN0YWTDrXN0aWNhcy4gRW4gZXN0ZSBzZW50aWRvLCBzZSBhbGNhbnphIGdlbmVyYWxpemFjacOzbiBkZSByZXN1bHRhZG9zIGFsIHVzYXIgZXN0b3Mgw7psdGltb3MsIHNpIGJpZW4gbG9zIHByaW1lcm9zIGFwb3lhbiBhIGxhcyBpbnRlcnByZXRhY2lvbmVzLg0KDQpFbiBlc3RlIGFwYXJ0YWRvIHNlIGNvbnRlbXBsYSBlbCB1c28gZGUgcHJvY2VkaW1pZW50b3MgaW5mZXJlbmNpYWxlcyBwYXJhIGRldGVybWluYXIgc2kgZWwgY29uanVudG8gZGUgZGF0b3MgZGUgdHJhYmFqbywgZW4gcmVsYWNpw7NuIGNvbiBzdXMgdmFyaWFibGVzIG51bcOpcmljYXMsIHNlIGRpc3RyaWJ1eWUgbm9ybWFsIG11bHRpdmFyaWFkbyAoRE5NKS4gTGFzIHBydWViYXMgZGUgbm9ybWFsaWRhZCBtdWx0aXZhcmlhZGEgKFBOTSkgYSBsYXMgcXVlIHNlcsOhIHNvbWV0aWRvIHNvbjogTWFyZGlhLCBIZW56ZS1aaXJrbGVyLCBEb29ybmlrLUhhbnNlbiB5IFJveXN0b24uIFBhcmEgZXN0YXMgcHJ1ZWJhcyBkZSBub3JtYWxpZGFkIGxvcyB0ZXN0IG9iZWRlY2VuIGEgdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSAqKs6xPTAuMDUqKg0KIHkgYSBsYXMgaGlww7N0ZXNpczogICANCiANCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPg0KICAqKl9IMF86IExhcyB2YXJpYWJsZXMgdGllbmVuIHVuYSBETk0qKg0KDQogICoqX0gxXzogTGFzIHZhcmlhYmxlcyBOTyB0aWVuZW4gdW5hIEROTSoqDQo8L2Rpdj4NCg0KKipMYSBwcnVlYmEgZGUgTWFyZGlhKiogc2UgYmFzYSBlbiBleHRlbnNpb25lcyBkZSBhc2ltZXRyw61hIHkgY3VydG9zaXMsIGVsIGN1YWRyYWRvIGRlIGxhIGRpc3RhbmNpYSBkZSBNYWhhbGFub2JpcywgbGEgY2FudGlkYWQgZGUgdmFyaWFibGVzICoqcCoqIHBvciB0cmF0YXIgeSBsYSBjYW50aWRhZCBkZSByZWdpc3Ryb3MgKipuKiouIEFkZW3DoXMsIGNvbnNpZGVyYSBxdWUgbGEgcHJ1ZWJhIGVzdGFkw61zdGljYSBwYXJhIGxhIGFzaW1ldHLDrWEgdGllbmUgdW5hIGRpc3RyaWJ1Y2nDs24gKirPhzIqKiB5IGxhIHBydWViYSBlc3RhZMOtc3RpY2EgcGFyYSBsYSBjdXJ0b3NpcyBzZSBkaXN0aXJidXllIGFwcm94aW1hZGFtZW50ZSBub3JtYWwuIExvcyBkZXRhbGxlcyBzb2JyZSBsb3MgcGFyw6FtZXRyb3MgZGUgbGFzIGRpc3RyaWJ1Y2lvbmVzIHB1ZWRlbiBjb25zdWx0YXJzZSBlbiBlbCB0cmFiYWpvIGRlIChQb3JyYXMgQy4sIDIwMTYpLg0KDQoqKkxhIHBydWViYSBkZSBIZW56ZS1aaXJrbGVyKiogc2UgYmFzYSBlbiBsYSBkaXN0YW5jaWEgZnVuY2lvbmFsLCBkYWRvIHF1ZSBzaSBlbCBjb25qdW50byBkZSBkYXRvcyBwcmVzZW50YSB1bmEgZGlzdHJpYnVjacOzbiBub3JtYWwgbXVsdGl2YXJpYWRhLCBlbCBlc3RhZMOtc3RpY28gZGUgbGEgcHJ1ZWJhIHNlIGRpc3RyaWJ1eWUgYXByb3hpbWFkYW1lbnRlIGNvbW8gdW5hIGxvZ25vcm1hbCwgY3V5b3MgcGFyw6FtZXRyb3MgZGUgbWVkaWEgKirOvCoqDQogeSB2YXJpYW56YSAqKs+DMioqIHB1ZWRlbiBzZXIgY29uc3VsdGFkb3MgZW4gKFBvcnJhcyBDLiwgMjAxNikuDQogDQoqKkxhIHBydWViYSBkZSBEb29ybmlrLUhhbnNlbioqIGVzdMOhIGJhc2FkYSBlbiBsYSBhc2ltZXRyw61hIHkgbGEgY3VydG9zaXMgZGUgdW4gY29uanVudG8gZGUgZGF0b3MgbXVsdGl2YXJpYWRvcywgcXVlIHNlIHRyYW5zZm9ybWEgcGFyYSBnYXJhbnRpemFyIGxhIGluZGVwZW5kZW5jaWEuIEVzIGNvbnNpZGVyYWRhIG3DoXMgcG90ZW50ZSBxdWUgbGEgcHJ1ZWJhIGRlIFNoYXBpcm8tV2lsayBwYXJhIGNhc29zIG11bHRpdmFyaWFkb3MuIFN1IGVzdGFkw61zdGljbyBkZSBwcnVlYmEgZXN0w6EgZGVmaW5pZG8gY29tbyBsYSBzdW1hIGRlIGxhcyB0cmFuc2Zvcm1hY2lvbmVzIGFsIGN1YWRyYWRvIGRlIGxhIGFzaW1ldHLDrWEgeSBsYSBjdXJ0b3NpcywgeSBzaWd1ZSwgYXByb3hpbWFkYW1lbnRlLCB1bmEgZGlzdHJpYnVjacOzbiAqKs+HMioqLiBMb3MgZGV0YWxsZXMgZGUgbGEgcHJ1ZWJhIHB1ZWRlbiBzZXIgY29uc3VsdGFkb3MgZW4gKERvb3JuaWsgJiBIYW5zZW4sIDIwMDgpLg0KIA0KKipMYSBwcnVlYmEgZGUgUm95c3RvbioqIHJlY3VycmUgYSBsYXMgcHJ1ZWJhcyBTaGFwaXJvLVdpbGsgbyBTaGFwaXJvLUZyYW5jaWEgcGFyYSBwcm9iYXIgbGEgbm9ybWFsaWRhZCBtdWx0aXZhcmlhZGEuIEFzw60sIHNpIGxhIGN1cnRvc2lzIGVzIG1heW9yIHF1ZSAzLCBsYSBwcnVlYmEgZGUgUm95c3RvbiB1c2EgU2hhcGlyby1GcmFuY2lhIHBhcmEgZGlzdHJpYnVjaW9uZXMgbGVwdG9jdXJ0aWNhcy4gTWllbnRyYXMgcXVlIHBhcmEgZGlzdHJpYnVjaW9uZXMgcGxhdGljdXJ0aWNhcyB1c2EgU2hhcGlyby1XaWxrLiBFbiBlbGxhIGxvcyBwYXLDoW1ldHJvcyBzb24gb2J0ZW5pZG9zIHBvciBhcHJveGltYWNpb25lcyBwb2xpbm9taWFsZXMsIGVzdG8gcHVlZGUgc2VyIGNvbnN1bHRhZG8gZW4gKFBvcnJhcyBDLiwgMjAxNikuDQogDQoqKlBsYW50ZWFtaWVudG8gZGVsIFByb2JsZW1hKioNCg0KQ29uIGJhc2UgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gMiBzZSBoYXLDoSB1bmEgcHJ1ZWJhIGVzdGFkw61zdGljYSBkZSBub3JtYWxpZGFkIG11bHRpdmFyaWFkYSwgY29uIHVuIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgzrE9MC4wNSwgcGFyYSBlc3RhYmxlY2VyIHNpIHN1cyBkYXRvcyBtw6l0cmljb3MgcHJvdmllbmVuIGRlIHVuYSBwb2JsYWNpw7NuIG5vcm1hbCBtdWx0aXZhcmlhZGEuIFNlIHJlY3VlcmRhIHF1ZSBsYXMgdmFyaWFibGVzIG51bcOpcmljYXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zIChlbiBlc2NhbGFkYSBkZSBtZWRpY2nDs24gZGUgcmF6w7NuKSBzb246ICoqSW5jb21lLCBNbnRXaW5lcywgTW50RnJ1aXRzLCBNbnRNZWF0UHJvZHVjdHMsIE1udEZpc2hQcm9kdWN0cywgTW50U3dlZXRQcm9kdWN0cywgTW50R29sZFByb2RzLCBOdW1EZWFsc1B1cmNoYXNlcywgTnVtV2ViUHVyY2hhc2VzLCBOdW1DYXRhbG9nUHVyY2hhc2VzLCBOdW1TdG9yZVB1cmNoYXNlcywgTnVtV2ViVmlzaXRzTW9udGguKioNCg0KKipEZXNhcnJvbGxvIGRlbCBBbsOhbGlzaXMqKg0KIA0KTGEgbmF2ZWdhY2nDs24gYSB0cmF2w6lzIGRlIGxhcyBwZXN0YcOxYXMgbXVlc3RyYSBsYSBleHBsb3JhY2nDs24gYSB0cmF2w6lzIGRlIGxhcyBkaWZlcmVudGVzIHBydWViYXMgZGUgbm9ybWFsaWRhZCBtdWx0aXZhcmlhZGEgaW5kaWNhIHF1ZSBlbCBjb25qdW50byBkZSBkYXRvcywgY29uc2lkZXJhbmRvIHN1cyB2YXJpYWJsZXMgbnVtw6lyaWNhcywgbm8gc2lndWUgdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsIG11bHRpdmFyaWFkYS4gQXF1w60gZXN0w6FuIGxvcyBoYWxsYXpnb3MgY2xhdmUgZGUgY2FkYSBwcnVlYmE6DQoNCioqUHJ1ZWJhIGRlIE1hcmRpYToqKiANCg0KLSBBc2ltZXRyw61hIChTa2V3bmVzcyk6IEVsIGVzdGFkw61zdGljbyBkZSBsYSBwcnVlYmEgZXMgMjM5NTc5LjE2MTUxODg5NyBjb24gdW4gdmFsb3IgcCBkZSAwLCBsbyBxdWUgaW5kaWNhIHF1ZSBsYSBhc2ltZXRyw61hIGVzIHNpZ25pZmljYXRpdmFtZW50ZSBkaWZlcmVudGUgZGUgICAgICBjZXJvLiBQb3IgbG8gdGFudG8sIHNlIHJlY2hhemEgbGEgaGlww7N0ZXNpcyBudWxhIGRlIHF1ZSBsYSBhc2ltZXRyw61hIGVzIGNlcm8sIGxvIHF1ZSBzdWdpZXJlIHF1ZSBsb3MgZGF0b3Mgbm8gc2lndWVuIHVuYSBkaXN0cmlidWNpw7NuIG5vcm1hbCBtdWx0aXZhcmlhZGEgZW4gICAgICB0w6lybWlub3MgZGUgYXNpbWV0csOtYS4NCi0gQ3VydG9zaXMgKEt1cnRvc2lzKTogRWwgZXN0YWTDrXN0aWNvIGRlIGxhIHBydWViYSBlcyAxMjQxLjM4NTUwMzI5NzcgY29uIHVuIHZhbG9yIHAgZGUgMCwgbG8gcXVlIGluZGljYSBxdWUgbGEgY3VydG9zaXMgZXMgc2lnbmlmaWNhdGl2YW1lbnRlIGRpZmVyZW50ZSBkZSBjZXJvLiAgIFNpbWlsYXIgYSBsYSBhc2ltZXRyw61hLCBzZSByZWNoYXphIGxhIGhpcMOzdGVzaXMgbnVsYSBkZSBxdWUgbGEgY3VydG9zaXMgZXMgY2VybywgbG8gcXVlIHN1Z2llcmUgcXVlIGxvcyBkYXRvcyBubyBzaWd1ZW4gdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsIG11bHRpdmFyaWFkYSBlbiAgIHTDqXJtaW5vcyBkZSBjdXJ0b3Npcy4NClJlc3VsdGFkbyBnZW5lcmFsOiBTZSByZWFsaXrDsyBsYSBwcnVlYmEgZGUgbm9ybWFsaWRhZCB1bml2YXJpYWRhIHBhcmEgY2FkYSB2YXJpYWJsZSBlbiBlbCBjb25qdW50byBkZSBkYXRvcyB5IHBhcmEgdG9kYXMgbGFzIHZhcmlhYmxlcywgZWwgdmFsb3IgcCBlcyBtZW5vciBxdWUgMC4wMDEsIGVzdG8gc3VnaWVyZSBxdWUgbmluZ3VuYSBkZSBsYXMgdmFyaWFibGVzIGluZGl2aWR1YWxlcyBzaWd1ZSB1bmEgZGlzdHJpYnVjacOzbiBub3JtYWwuQW1iYXMgcHJ1ZWJhcyBpbmRpY2FuIHF1ZSBsb3MgZGF0b3Mgbm8gc2lndWVuIHVuYSBkaXN0cmlidWNpw7NuIG5vcm1hbCBtdWx0aXZhcmlhZGEgc2Vnw7puIGVsIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZXN0YWJsZWNpZG8gKM6xPTAuMDUpLg0KDQoqKlBydWViYSBkZSBIZW56ZS1aaXJrbGVyOioqIEVsIGVzdGFkw61zdGljbyBkZSBwcnVlYmEgZXMgMjUuMDM2MTEgY29uIHVuIHZhbG9yIHAgZGUgMCwgbG8gcXVlIGluZGljYSBxdWUgZWwgY29uanVudG8gZGUgZGF0b3Mgbm8gc2lndWUgdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsIG11bHRpdmFyaWFkYS4gUG9yIGxvIHRhbnRvLCBsYSBoaXDDs3Rlc2lzIGRlIG5vcm1hbGlkYWQgbXVsdGl2YXJpYWRhIGVzIHJlY2hhemFkYS4NClJlc3VsdGFkbyBnZW5lcmFsOiBTZSByZWFsaXrDsyBsYSBwcnVlYmEgZGUgbm9ybWFsaWRhZCB1bml2YXJpYWRhIHBhcmEgY2FkYSB2YXJpYWJsZSBlbiBlbCBjb25qdW50byBkZSBkYXRvcyB5IHBhcmEgdG9kYXMgbGFzIHZhcmlhYmxlcywgZWwgdmFsb3IgcCBlcyBtZW5vciBxdWUgMC4wMDEsIGxvIHF1ZSBpbmRpY2EgcXVlIHNlIHJlY2hhemEgbGEgaGlww7N0ZXNpcyBudWxhIGRlIG5vcm1hbGlkYWQgcGFyYSBjYWRhIHVuYSBkZSBlbGxhcy4gRXN0byBzdWdpZXJlIHF1ZSBuaW5ndW5hIGRlIGxhcyB2YXJpYWJsZXMgaW5kaXZpZHVhbGVzIHNpZ3VlIHVuYSBkaXN0cmlidWNpw7NuIG5vcm1hbC4NCg0KKipQcnVlYmEgZGUgRG9vcm5pay1IYW5zZW46KiogRWwgZXN0YWTDrXN0aWNvIGRlIHBydWViYSBlcyAxMDkyMDMgY29uIHVuIHZhbG9yIHAgZGUgMCwgbG8gcXVlIGluZGljYSBxdWUgZWwgY29uanVudG8gZGUgZGF0b3Mgbm8gc2lndWUgdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsIG11bHRpdmFyaWFkYS4gUG9yIGxvIHRhbnRvLCBsYSBoaXDDs3Rlc2lzIGRlIG5vcm1hbGlkYWQgbXVsdGl2YXJpYWRhIGVzIHJlY2hhemFkYS4NClJlc3VsdGFkbyBnZW5lcmFsOiBTZSByZWFsaXrDsyBsYSBwcnVlYmEgZGUgbm9ybWFsaWRhZCB1bml2YXJpYWRhIHBhcmEgY2FkYSB2YXJpYWJsZSBlbiBlbCBjb25qdW50byBkZSBkYXRvcyB5IHBhcmEgdG9kYXMgbGFzIHZhcmlhYmxlcywgZWwgdmFsb3IgcCBlcyBtZW5vciBxdWUgMC4wMDEsIGxvIHF1ZSBpbmRpY2EgcXVlIHNlIHJlY2hhemEgbGEgaGlww7N0ZXNpcyBudWxhIGRlIG5vcm1hbGlkYWQgcGFyYSBjYWRhIHVuYSBkZSBlbGxhcy4gRXN0byBzdWdpZXJlIHF1ZSBuaW5ndW5hIGRlIGxhcyB2YXJpYWJsZXMgaW5kaXZpZHVhbGVzIHNpZ3VlIHVuYSBkaXN0cmlidWNpw7NuIG5vcm1hbC4NCg0KKipQcnVlYmEgZGUgUm95c3RvbjoqKkxhIFBOTSBkZSBSb3lzdG9uIGVzdGFibGVjZSBxdWUgZWwgY29uanVudG8gZGUgZGF0b3MgcmVkdWNpZG8gYSBzdXMgdmFyaWFibGVzIG51bcOpcmljYXMgbm8gc2lndWUgdW5hIEROTSwgZGFkbyBxdWUgc3UgcOKIknZhbHVlIGVzIG1lbm9yIHF1ZSBlbCBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIM6xPTAuMDUuIE9ic8OpcnZlc2UgZXN0byBhIHRyYXbDqXMgZGUgbGEgcGVzdGHDsWEgUE5NIFJveXN0b24uDQogDQpFbiByZXN1bWVuIGxvcyByZXN1bHRhZG9zIGRlIGxhcyBwcnVlYmFzIGRlIG5vcm1hbGlkYWQgbXVsdGl2YXJpYW50ZSwgaW5jbHV5ZW5kbyBsYSBQcnVlYmEgZGUgTWFyZGlhLCBsYSBQcnVlYmEgZGUgSGVuemUtWmlya2xlciwgbGEgUHJ1ZWJhIGRlIERvb3JuaWstSGFuc2VuIHkgbGEgUHJ1ZWJhIGRlIFJveXN0b24sIGluZGljYW4gdW5hIGZhbHRhIGRlIGV2aWRlbmNpYSBwYXJhIHJlc3BhbGRhciBsYSBoaXDDs3Rlc2lzIGRlIG5vcm1hbGlkYWQgZW4gbG9zIGRhdG9zLiBFc3RvIHN1Z2llcmUgcXVlIGxhcyB2YXJpYWJsZXMgYW5hbGl6YWRhcyBubyBzaWd1ZW4gdW5hIGRpc3RyaWJ1Y2nDs24gbXVsdGl2YXJpYW50ZSBub3JtYWwsIGxvIHF1ZSBwb2Ryw61hIGNvbXByb21ldGVyIGxhIHZhbGlkZXogZGUgbG9zIGFuw6FsaXNpcyBlc3RhZMOtc3RpY29zIHBvc3RlcmlvcmVzIHF1ZSBhc3VtZW4gbm9ybWFsaWRhZC4gRXN0YSBmYWx0YSBkZSBub3JtYWxpZGFkIG11bHRpdmFyaWFudGUgcmVzYWx0YSBsYSBpbXBvcnRhbmNpYSBkZSBpbnRlcnByZXRhciBsb3MgcmVzdWx0YWRvcyBzdWJzaWd1aWVudGVzIGNvbiBwcmVjYXVjacOzbi4NCg0KIyMjIFBydWViYSBkZSBOb3JtYWxpZGFkIE11bHRpdmFyaWFkYSBkZSBNYXJkaWEgKiooUE5NKSoqDQpgYGB7cn0NCm12bihHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBtdm5UZXN0PSJtYXJkaWEiKQ0KYGBgDQoNCg0KIyMjIFBydWViYSBkZSBOb3JtYWxpZGFkIE11bHRpdmFyaWFkYSBkZSBIZW56ZS1aaXJrbGVyICoqKFBOTUhaKSoqDQpgYGB7cn0NCm12bihHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBtdm5UZXN0PSJoeiIpDQpgYGANCg0KDQojIyMgUHJ1ZWJhIGRlIE5vcm1hbGlkYWQgTXVsdGl2YXJpYWRhIGRlIERvb3JuaWstSGFuc2VuICoqKFBOTURIKSoqDQpgYGB7cn0NCm12bihHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBtdm5UZXN0PSJkaCIpDQpgYGANCg0KIyMjIFBydWViYSBkZSBSb3lzdG9uICoqKFBSKSoqDQpgYGB7cn0NCnNldC5zZWVkKDEyMykgDQpzYW1wbGVfZGF0YSA8LSBHYXN0b3NfRGF0YXNldFtzYW1wbGUobnJvdyhHYXN0b3NfRGF0YXNldCksIDE5OTkpLCAtYygxLCAzLCA0LCA3LCAxOSwgMjAsIDIxLCAyMildDQpNVk46Om12bihzYW1wbGVfZGF0YSwgbXZuVGVzdCA9ICJyb3lzdG9uIikNCmBgYA0KDQoNCiMgRmFzZSAyIFtDb21wb25lbnRlcyBQcmluY2lwYWxlc10NCg0KIyMgMi4xLiBPYmpldGl2b3MNCg0KRW4gdMOpcm1pbm9zIGdlbmVyYWxlcywgZXN0YSBzZWd1bmRhIGV0YXBhIGRlIGVzdHVkaW8gbW9zdHJhcsOhIGPDoWxjdWxvcywgdmlzdWFsaXphY2lvbmVzIGUgaW50ZXJwcmV0YWNpb25lcyBjb24gYmFzZSBlbiBlbCBjb25qdW50byBkZSBkYXRvcyB0cmF0YWRvIGVuIGxhIGZhc2UgMSwgcGVybyBhaG9yYSBkZXNkZSB1biBlbmZvcXVlIGRlIGFuw6FsaXNpcyBkZSBjb21wb25lbnRlcyBwcmluY2lwYWxlcyBzb2JyZSBsYXMgdmFyaWFibGVzIGN1YW50aXRhdGl2YXMsIHF1ZSBpbmNsdWlyw6E6IHNlbGVjY2nDs24sIGNhbGlkYWQgZGUgcmVwcmVzZW50YWNpw7NuLCBjb250cmlidWNpb25lcyBlIGludGVycHJldGFjacOzbi4NCg0KIyMgMi4yLiBTZWxlY2Npw7NuIGRlIENvbXBvbmVudGVzIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQpDb21vIGVzIG1lbmNpb25hZG8gZW4gZWwgdHJhYmFqbyBkZSAoRMOtYXogTW9yYWxlcyAmIE1vcmFsZXMgUml2ZXJhLCAyMDEyKSBlbCBBbsOhbGlzaXMgZGUgQ29tcG9uZW50ZXMgUHJpbmNpcGFsZXMgKGVuIGFkZWxhbnRlIEFDUCkgcmVlc3RydWN0dXJhIHVuIGNvbmp1bnRvIGRlIGRhdG9zIG11bHRpdmFyaWFkbyBhIHRyYXbDqXMgZGUgbGEgcmVkdWNjacOzbiBkZSBsYSBjYW50aWRhZCBkZSBzdXMgdmFyaWFibGVzLCBlbiBjdXlvIHRyYW5zZm9uZG8gZXMgaW5uZWNlc2FyaW8gYXN1bWlyIG5pbmd1bmEgZGlzdHJpYnVjacOzbiBkZSBwcm9iYWJpbGlkYWQgZGUgZWxsYXMuIEVzdGEgcmVkdWNjacOzbiBlcyBsb2dyYWRhIGEgdHJhdsOpcyBkZSBjb21iaW5hY2lvbmVzIGxpbmVhbGVzIGRlIGxhcyB2YXJpYWJsZXMgb3JpZ2luYWxlcywgcXVlIGRlYmVyw6FuIGNvbnRlbmVyIGxhIG1heW9yIHZhcmlhYmlsaWRhZCBwb3NpYmxlIHByZXNlbnRlIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zLiBFbiBlc3RlIHNlbnRpZG8sIGVsIEFDUCBsb2dyYSBjcmVhciBudWV2YXMgdmFyaWFibGVzLCBjb25vY2lkYXMgY29tbyBjb21wb25lbnRlcyBwcmluY2lwYWxlcywgcXVlIHBvc2VlbiBjYXJhY3RlcsOtc3RpY2FzIGVzdGFkw61zdGljYXMgZGUgaW5kZXBlbmRlbmNpYSAoY29uIGJhc2UgZW4gZWwgc3VwdWVzdG8gZGUgbm9ybWFsaWRhZCkgeSBubyBjb3JyZWxhY2nDs24uDQoNCkVsIEFDUCBzZSBsb2dyYSBhIGxvIGxhcmdvIGRlIGxhcyBzaWd1aWVudGVzIGZhc2VzOiBnZW5lcmFjacOzbiBkZSBudWV2YXMgdmFyaWFibGVzLCByZWR1Y2Npw7NuIGRpbWVuc2lvbmFsIGRlbCBlc3BhY2lvIGRlIGxvcyBkYXRvcywgZWxpbWluYWNpw7NuIGRlIHZhcmFpYmxlcyBkZSBwb2NvIGFwb3J0ZSBlIGludGVycHJldGFjacOzbiBkZSBsb3MgY29tcG9uZW50ZXMgcmVzdWx0YW50ZXMgZW4gZWwgY29udGV4dG8gZGVsIHByb2JsZW1hIGRlbCBjdWFsIHNlIG9idHV2aWVyb24gbG9zIGRhdG9zLg0KDQoqKlBsYW50ZWFtaWVudG8gZGVsIFByb2JsZW1hKioNCg0KQ29uIGJhc2UgZW4gbGFzIHZhcmlhYmxlcyBjdWFudGl0YXRpdmFzIGRlbCBjb25qdW50byBkZSBkYXRvcyBkZXNjcml0byBlbiBsYSBzZWNjacOzbiAyIHNlIGRlbWFuZGEgcHJpbWVybyBlc3RhYmxlY2VyIGVsIHBvcmNlbnRhamUgZGUgdmFyaWFuemEgZXhwbGljYWRvIHBvciBjYWRhIGRpbWVuc2nDs24gdW5hIHZleiBwcm9jZXNhZG8gZWwgQUNQOyB5IHBvc3Rlcmlvcm1lbnRlLCBjb24gYmFzZSBlbiBlbCBhdXRvdmFsb3IgbWVkaW8gbyB1c2FuZG8gdW4gZGlhZ3JhbWEgZGUgc2VkaW1lbnRhY2nDs24sIGRlY2lkaXIgY3XDoW50b3MgY29tcG9uZW50ZXMgcmV0ZW5lci4NCg0KKipEZXNhcnJvbGxvIGRlbCBBbsOhbGlzaXMqKg0KDQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIHF1ZSBlbCBjb25qdW50byBkZSBkYXRvcywgZW4gcmVsYWNpw7NuIGNvbiBzdXMgdmFyaWFibGVzIG51bcOpcmljYXMsIHB1ZWRlIHNlciByZXByZXNlbnRhZG8gcG9yIHVuIGNvbmp1dG8gZGUgdmFyaWFibGVzIG3DoXMgcGVxdWXDsW8gcXVlIHJldGllbmUgZWwgNDAuNDElIGRlIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29uanVudG8uIEVuIHBhcnRpY3VsYXI6DQoNCkxhICoqTWF0cml6IEFDUCoqIG11ZXN0cmEgY2F0b3JjZSBkaW1lbnNpb25lcyBkb25kZSBzb2xvIGxhIHByaW1lcmEgcmV0aWVuZSBlbCA0MC40MSUsIGxhIHNpZ3VpZW50ZSBlbCAxMy44NSUgeSBsYXMgZGVtw6FzIHNvbG8gcG9yY2VudGFqZXMgY29uIHBhcnRlIGVudGVyYSBkZSB1bmEgY2lmcmEuIEVuIGVzdGUgc2VudGlkbywgbGEgcmVwcmVzZW50YXRpdmlkYWQgZGUgbGEgY29tYmluYWNpw7NuIGxpbmVhbCBxdWUgZGVmaW5lIGEgbGEgZGltZW5zacOzbiAxIGVzIHNpZ25pZmljYXRpdmFtZW50ZSBhbHRhIGVuIGNvbXBhcmFjacOzbiBjb24gbGFzIGRlbcOhcy4gQ29tbyBlc3RhIG1hdHJpeiBlcyBtdWRhIGVuIHJlbGFjacOzbiBjb24gbGFzIHZhcmlhYmxlcyBvcmlnaW5hbGVzIHNlIHNpZ3VlIGluZGFnYW5kbyBsYSBpZGVudGlmaWNhY2nDs24gZGUgbGFzIHZhcmlhYmxlcyBxdWUgbcOhcyBjb250cmlidXlhbiBhIGxhIGRpbWVuc2nDs24gZGUgdmFsb3IgcHJvcGlvIG3DoXMgYWx0by4NCg0KQWwgYW5hbGl6YXIgZWwgKipHcsOhZmljbyBkZSBDYXR0ZWxsIHkgZWwgR3LDoWZpY28gZGUgQ2F0dGVsbC1LYWlzZXIqKiwgc2UgYnVzY2EgZGV0ZXJtaW5hciBjdcOhbnRhcyBkaW1lbnNpb25lcyAoY29tcG9uZW50ZXMgcHJpbmNpcGFsZXMpIHNvbiBuZWNlc2FyaWFzIHBhcmEgcmV0ZW5lciBzdWZpY2llbnRlIHZhcmlhYmlsaWRhZCBlbiBsb3MgZGF0b3MuIEVuIGVzdGUgY2FzbyBzZSBkZXRlcm1pbmEgdW4gY2FtYmlvIGJydXNjbyBlbiBsYSBwZW5kaWVudGUgZW4gZWwgR3LDoWZpY28gZGUgQ2F0dGVsbCwgbG8gcXVlIGluZGljYSBxdWUgbGEgcHJpbWVyYSBkaW1lbnNpw7NuIGV4cGxpY2EgdW5hIGNhbnRpZGFkIHNpZ25pZmljYXRpdmEgZGUgdmFyaWFiaWxpZGFkIGVuIGNvbXBhcmFjacOzbiBjb24gbGFzIHNpZ3VpZW50ZXMuIEVsIEdyw6FmaWNvIGRlIENhdHRlbGwtS2Fpc2VyLCBxdWUgY29tYmluYSBlbCBHcsOhZmljbyBkZSBDYXR0ZWxsIGNvbiBlbCBjcml0ZXJpbyBkZSBLYWlzZXIsIHJlc3BhbGRhIGxhIGVsZWNjacOzbiBkZSByZXRlbmVyIHNvbG8gdW5hIGRpbWVuc2nDs24sIHNpZW1wcmUgeSBjdWFuZG8gZXN0YSBjb25zZXJ2ZSB1bmEgY2FudGlkYWQgYWRlY3VhZGEgZGUgdmFyaWFiaWxpZGFkIHBhcmEgYWJvcmRhciBlbCBwcm9ibGVtYSBlbiBjdWVzdGnDs24uIFNpbiBlbWJhcmdvLCBlcyBpbXBvcnRhbnRlIHRlbmVyIGVuIGN1ZW50YSBxdWUgZXN0YXMgZWxlY2Npb25lcyBzZSBiYXNhbiBlbiBjcml0ZXJpb3MgY29tw7pubWVudGUgdXRpbGl6YWRvcywgbm8gZW4gY3JpdGVyaW9zIHVuaXZlcnNhbG1lbnRlIGFjZXB0YWRvcy4NCg0KIyMjIE1hdHJpeiBBQ1ANCmBgYHtyfQ0KZ2V0X2VpZ2VudmFsdWUoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDYsIHNjYWxlLnVuaXQgPSBUUlVFLCBncmFwaCA9IEYpKQ0KYGBgDQojIyMgTWF0cml6IGRlIENvcnJlbGFjaW9uZXMNCmBgYHtyfQ0Kcm91bmQoY29yKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0pLDIpDQpgYGANCiMjIyBWYWxvcmVzIHkgVmVjdG9yZXMgUHJvcGlvcw0KDQpgYGB7cn0NCmRhdG9zX2xpbXBpb3MgPC0gR2FzdG9zX0RhdGFzZXRbY29tcGxldGUuY2FzZXMoR2FzdG9zX0RhdGFzZXRbLCAtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0pLCBdDQoNCnJlc3VsdGFkb3NfcGNhIDwtIHByaW5jb21wKGRhdG9zX2xpbXBpb3NbLCAtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIGNvciA9IFRSVUUpDQoNCnByaW50KHJlc3VsdGFkb3NfcGNhJHNkZXZeMikNCg0KcHJpbnQocmVzdWx0YWRvc19wY2EkbG9hZGluZ3NbLCAxOjEyXSkNCmBgYA0KDQojIyMgQ29ycmVsYWNpb25lcyBDb21wYXJhZGFzIA0KDQpgYGB7cn0NCmRhdG9zX2xpbXBpb3MgPC0gR2FzdG9zX0RhdGFzZXRbY29tcGxldGUuY2FzZXMoR2FzdG9zX0RhdGFzZXRbLCAtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0pLCBdDQpwYXIobWZyb3c9YygxLDIpKQ0KY29ycnBsb3Q6OmNvcnJwbG90KGNvcihkYXRvc19saW1waW9zWywgLWMoMSwyLDMsNCw3LDE5LDIwLDIxLDIyKV0pLCBtZXRob2QgPSAiY29sb3IiLCB0eXBlID0gInVwcGVyIiwgbnVtYmVyLmNleCA9IDAuNCkNCnJlc3VsdGFkb3NfcGNhIDwtIHByaW5jb21wKGRhdG9zX2xpbXBpb3NbLCAtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIGNvciA9IFRSVUUpDQpjb3JycGxvdDo6Y29ycnBsb3QoY29yKHJlc3VsdGFkb3NfcGNhJHNjb3JlcyksIG1ldGhvZCA9ICJjb2xvciIsIHR5cGUgPSAidXBwZXIiLCBudW1iZXIuY2V4ID0gMC40KQ0KYGBgDQoNCiMjIyBHcsOhZmljbyBDYXR0ZWxsIA0KYGBge3J9DQpmdml6X2VpZyhQQ0EoR2FzdG9zX0RhdGFzZXRbLC1jKDEsMyw0LDcsMTksMjAsMjEsMjIpXSwgc2NhbGUudW5pdCA9IFQsIGdyYXBoID0gRiksIGFkZGxhYmVscyA9IFQsIHlsaW09YygwLDkwKSwgbWFpbiA9ICIiKQ0KYGBgDQoNCiMjIyBHcsOhZmljbyBkZSBDYXR0ZWxsLUthaXNlcg0KYGBge3J9DQpzY3JlZShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLGZhY3RvcnMgPSBGQUxTRSwgcGMgPSBUUlVFLCBtYWluID0iIikNCmBgYA0KDQojIyAyLjMuIENhbGlkYWQgZGUgUmVwcmVzZW50YWNpw7NuIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQpBbCByZXRvbWFyIGVsIHRyYWJham8gZGUgKETDrWF6IE1vcmFsZXMgJiBNb3JhbGVzIFJpdmVyYSwgMjAxMikgc2UgdmVyaWZpY2EgcXVlLCB1bmEgdmV6IHJlZHVjaWRhIGxhIGRpbWVuc2lvbmFsaWRhZCBkZWwgY29uanVudG8gZGUgZGF0b3MgeSBlbnRlbmRpZG8gcXVlIHN1cyB2YXJpYWJsZXMgKGVzdGFuZGFyaXphZGFzKSBlc3TDoW4gcmVwcmVzZW50YWRhcyBncsOhZmljYW1lbnRlIHBvciBwcm95ZWNjaW9uZXMgZGUgbGEgaGlwZXJlc2ZlcmEgZGUgY29ycmVsYWNpb25lcywgZXMgbmVjZXNhcmlvIGluaWNpYXIgbGEgaW50ZXJwcmV0YWNpw7NuIGRlIGNvbXBvbmVudGVzIGEgcGFydGlyIGRlIGRpY2hhcyBjb3JyZWxhY2lvbmVzLCBwYXJhIGx1ZWdvIGxhIGNhbGlkYWQgZGUgc3VzIHJlcHJlc2VudGFjaW9uZXMgZGFkYSBsYSByZWR1Y2Npw7NuIGRpbWVuc2lvbmFsIGRlbCBjb25qdW50byBkZSBkYXRvcyBlbiB0w6lybWlub3MgZGUgc3VzIHZhcmlhYmxlcy4NCg0KKipQbGFudGVhbWllbnRvIGRlbCBQcm9ibGVtYSoqDQoNCkNvbiBiYXNlIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlc2NyaXRvIGVuIGxhIHNlY2Npw7NuIDIgc2UgZGVtYW5kYSBkZXRlcm1pbmFyIGxhIGNhbGlkYWQgZGUgcmVwcmVzZW50YWNpw7NuIGRlIGxhcyB2YXJpYWJsZXMgY3VhbnRpdGF0aXZhcyByZXNwZWN0byBhIGxhIGNhbnRpZGFkIGRlIGRpbWVuc2lvbmVzIGNhbGN1bGFkYXMgcXVlIHJldGllbmVuIGxhIG1heW9yIGNhbnRpZGFkIGRlIHZhcmlhYmlsaWRhZC4NCg0KKipEZXNhcnJvbGxvIGRlbCBBbsOhbGlzaXMqKg0KDQpFbCAqKkPDrXJjdWxvIGRlIENvcnJlbGFjaW9uZXMqKiBleHByZXNhIHF1ZSBlbCBncmFmaWNvIHZpc3VhbGl6YSBsYXMgcmVsYWNpb25lcyBlbnRyZSB2YXJpYXMgdmFyaWFibGVzLCBtdWVzdHJhIGxvcyBkb3MgcHJpbWVyb3MgY29tcG9uZW50ZXMgcHJpbmNpcGFsZXMsIERpbTEgeSBEaW0yLCBxdWUganVudG9zIHJlcHJlc2VudGFuIGVsIDQwLjQlIGRlIGxhIHZhcmlhbnphIHRvdGFsIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zLiAgTGFzIHZhcmlhYmxlcyBzZSByZXByZXNlbnRhbiBjb21vIHB1bnRvcyBlbiBlbCBncsOhZmljbywgeSBzdXMgcG9zaWNpb25lcyByZWxhdGl2YXMgZW50cmUgc8OtIGluZGljYW4gbGEgZnVlcnphIHkgZGlyZWNjacOzbiBkZSBzdXMgY29ycmVsYWNpb25lcy4gTGFzIHZhcmlhYmxlcyBxdWUgZXN0w6FuIG3DoXMgY2VyY2EgdGllbmRlbiBhIGVzdGFyIG3DoXMgY29ycmVsYWNpb25hZGFzLCBtaWVudHJhcyBxdWUgbGFzIHF1ZSBlc3TDoW4gbcOhcyBzZXBhcmFkYXMgZXN0w6FuIG1lbm9zIGNvcnJlbGFjaW9uYWRhcy4gIEFsZ3VuYXMgZGUgbGFzIHZhcmlhYmxlcyBjbGF2ZSBtb3N0cmFkYXMgZW4gZWwgZ3LDoWZpY28gaW5jbHV5ZW46DQoNCi0gTnVtV2ViVmlzaXRzTW9udGg6IEVsIG7Dum1lcm8gZGUgdmlzaXRhcyB3ZWIgcG9yIG1lcyANCg0KLSBOdW1EZWFsc1B1cmNoYXNlczogRWwgbsO6bWVybyBkZSBvZmVydGFzIG8gY29tcHJhcyANCg0KLSBOdW1XZWJQdXJjaGFzZXM6IEVsIG7Dum1lcm8gZGUgY29tcHJhcyB3ZWIgDQoNCi0gTW50V2luZXM6IExhIGNhbnRpZGFkIGdhc3RhZGEgZW4gdmlub3MgDQoNCi0gSW5jb21lOiBMb3MgaW5ncmVzb3MgZGVsIGluZGl2aWR1byANCg0KLSBNbnRNZWF0UHJvZHVjdHM6IExhIGNhbnRpZGFkIGdhc3RhZGEgZW4gcHJvZHVjdG9zIGPDoXJuaWNvcyANCg0KLSBNbnRGaXNoUHJvZHVjdHM6IExhIGNhbnRpZGFkIGdhc3RhZGEgZW4gcHJvZHVjdG9zIGRlIHBlc2NhZG8NCg0KTGEgKipNYXRyaXogZGUgUmVwcmVzZW50YWNpw7NuKiogZXhwcmVzYSBxdWU6DQoNCi0qKkRpbS4xIHkgRGltLjIqKjogQ2FwdHVyYW4gbGEgbWF5b3IgcGFydGUgZGUgbGEgdmFyaWFiaWxpZGFkIGRlIGxvcyBkYXRvcyB5IGVzdMOhbiBhc29jaWFkYXMgcHJpbmNpcGFsbWVudGUgY29uIGVsIGNvbXBvcnRhbWllbnRvIGRlIGdhc3RvIHkgY2FyYWN0ZXLDrXN0aWNhcyBkZW1vZ3LDoWZpY2FzLg0KDQotKipEaW0uMyB5IERpbS40Kio6IENhcHR1cmFuIHZhcmlhYmlsaWRhZCBhZGljaW9uYWwgcmVsYWNpb25hZGEgY29uIGVsIGHDsW8gZGUgbmFjaW1pZW50byB5IGNvbXBvcnRhbWllbnRvcyBkZSBjb21wcmFzIG1lbm9zIGRvbWluYW50ZXMuDQoNCi0qKkRpbS41IHkgRGltLjYqKjogUmVwcmVzZW50YW4gY2FyYWN0ZXLDrXN0aWNhcyBtZW5vcyBkb21pbmFudGVzIHkgbm8gcHJvcG9yY2lvbmFuIHRhbnRhIGluZm9ybWFjacOzbiDDunRpbCBjb21vIGxhcyBwcmltZXJhcyBkb3MgZGltZW5zaW9uZXMuDQoNCkVuIHJlc3VtZW4sIGxhcyBkb3MgcHJpbWVyYXMgZGltZW5zaW9uZXMgc29uIGxhcyBtw6FzIGltcG9ydGFudGVzIHkgZXhwbGljYW4gbGEgbWF5b3IgcGFydGUgZGUgbGEgdmFyaWFiaWxpZGFkIGVuIGVsIGNvbXBvcnRhbWllbnRvIGRlIGdhc3RvIHkgbGFzIGNhcmFjdGVyw61zdGljYXMgZGVtb2dyw6FmaWNhcyBkZWwgY29uanVudG8gZGUgZGF0b3MuIExhcyBkaW1lbnNpb25lcyBhZGljaW9uYWxlcyBleHBsaWNhbiB2YXJpYWJpbGlkYWQgcmVzdGFudGUsIHBlcm8gc29uIG1lbm9zIGluZm9ybWF0aXZhcy4NCg0KTGEgKipDb29yZGVuYWRhcyBJbmRpdmlkdWFsZXMqKiwgcG9yIG90cm8gbGFkbywgbXVlc3RyYSBlbCBjb21wb3RhbWllbnRvIHBvciBjYWRhIGRpbWVuc2nDs24NCg0KLSoqRGltZW5zacOzbiAxIChEaW0uMSk6KioNCkxhcyBjb29yZGVuYWRhcyBlbiBEaW0uMSB2YXLDrWFuIHNpZ25pZmljYXRpdmFtZW50ZSwgY29uIGFsZ3Vub3MgaW5kaXZpZHVvcyBjb21vIGVsIDEgKDMuNzU3KSB5IGVsIDE5ICgzLjMyNSkgdGVuaWVuZG8gdmFsb3JlcyBhbHRvcywgbWllbnRyYXMgcXVlIG90cm9zIGNvbW8gZWwgMTAgKC00LjUyNCkgeSBlbCA5ICgtMi42NDcpIHRpZW5lbiB2YWxvcmVzIGJham9zLiBFc3RvIHN1Z2llcmUgcXVlIERpbS4xIGRpc3Rpbmd1ZSBmdWVydGVtZW50ZSBlbnRyZSBpbmRpdmlkdW9zIGVuIGZ1bmNpw7NuIGRlIGNpZXJ0YXMgY2FyYWN0ZXLDrXN0aWNhcy4gRGFkbyBxdWUgZW4gZWwgYW7DoWxpc2lzIGRlIGxhIG1hdHJpeiBkZSByZXByZXNlbnRhY2nDs24gdmltb3MgcXVlIERpbS4xIGVzdMOhIHJlbGFjaW9uYWRhIHByaW5jaXBhbG1lbnRlIGNvbiBsb3MgZ2FzdG9zIGVuIGRpZmVyZW50ZXMgY2F0ZWdvcsOtYXMgZGUgcHJvZHVjdG9zIHkgZWwgbsO6bWVybyBkZSBjb21wcmFzLCBlc3RvcyBpbmRpdmlkdW9zIGVzdMOhbiBkaWZlcmVuY2lhZG9zIHBvciBzdXMgcGF0cm9uZXMgZGUgZ2FzdG8uDQoNCi0qKkRpbWVuc2nDs24gMiAoRGltLjIpOioqDQpFbiBEaW0uMiwgbG9zIHZhbG9yZXMgdGFtYmnDqW4gdmFyw61hbiwgcGVybyBtZW5vcyBxdWUgZW4gRGltLjEuIEluZGl2aWR1b3MgY29tbyBlbCAxOSAoMi41NDUpIHkgZWwgMjMgKDEuOTIyKSB0aWVuZW4gY29vcmRlbmFkYXMgYWx0YXMsIG1pZW50cmFzIHF1ZSBlbCAxMyAoLTEuOTYwKSB5IGVsIDExICgtMS43MTApIHRpZW5lbiBjb29yZGVuYWRhcyBiYWphcy4gRGltLjIgZXN0w6EgcmVsYWNpb25hZGEgY29uIGNhcmFjdGVyw61zdGljYXMgZGVtb2dyw6FmaWNhcyB5IGNvbXBvcnRhbWllbnRvIGRlIG9mZXJ0YXMgeSBjb21wcmFzIGVuIGzDrW5lYS4gUG9yIGxvIHRhbnRvLCBsb3MgaW5kaXZpZHVvcyBjb24gdmFsb3JlcyBhbHRvcyB5IGJham9zIGVuIGVzdGEgZGltZW5zacOzbiB0aWVuZW4gZGlmZXJlbnRlcyBjb21wb3J0YW1pZW50b3MgZW4gZXN0b3MgYXNwZWN0b3MuDQoNCi0qKkRpbWVuc2nDs24gMyAoRGltLjMpOioqDQpFbiBEaW0uMywgbGFzIGNvb3JkZW5hZGFzIG5vIHZhcsOtYW4gdGFudG8geSBzb24gZ2VuZXJhbG1lbnRlIG3DoXMgYmFqYXMuIEluZGl2aWR1b3MgY29tbyBlbCAxICgxLjEyMCkgeSBlbCA1ICgxLjI1NCkgdGllbmVuIHZhbG9yZXMgYWx0b3MsIG1pZW50cmFzIHF1ZSBvdHJvcyBjb21vIGVsIDIgKC0xLjgwMikgeSBlbCAxNiAoLTEuMzY0KSB0aWVuZW4gdmFsb3JlcyBiYWpvcy4gRXN0YSBkaW1lbnNpw7NuIGVzdMOhIG1lbm9zIGNsYXJhbWVudGUgZGVmaW5pZGEgcGVybyBwdWVkZSBlc3RhciByZWxhY2lvbmFkYSBjb24gZWwgYcOxbyBkZSBuYWNpbWllbnRvIHkgZWwgY29tcG9ydGFtaWVudG8gZGUgdmlzaXRhcyB3ZWIuDQoNCi0qKkRpbWVuc2nDs24gNCAoRGltLjQpOioqDQpMYXMgY29vcmRlbmFkYXMgZW4gRGltLjQgbXVlc3RyYW4gdmFyaWFiaWxpZGFkIGNvbiBpbmRpdmlkdW9zIGNvbW8gZWwgMjIgKDMuOTc2KSB0ZW5pZW5kbyB2YWxvcmVzIGV4dHJlbWFkYW1lbnRlIGFsdG9zLCBsbyBxdWUgaW5kaWNhIHVuYSBkaWZlcmVuY2lhY2nDs24gc2lnbmlmaWNhdGl2YSBlbiBlc3RhIGRpbWVuc2nDs24uIEVzdGEgZGltZW5zacOzbiBjYXB0dXJhIHZhcmlhYmlsaWRhZCBhZGljaW9uYWwgcXVlIG5vIHNlIGV4cGxpY2EgZW4gbGFzIHRyZXMgcHJpbWVyYXMgZGltZW5zaW9uZXMsIHBlcm8gbm8gZXN0w6EgdGFuIGNsYXJhbWVudGUgcmVsYWNpb25hZGEgY29uIGxhcyBjYXJhY3RlcsOtc3RpY2FzIGVzcGVjw61maWNhcyBkZSBsYXMgdmFyaWFibGVzIG9yaWdpbmFsZXMuDQoNCi0qKkRpbWVuc2nDs24gNSAoRGltLjUpOioqDQpFbiBEaW0uNSwgbGFzIGNvb3JkZW5hZGFzIHRhbWJpw6luIG11ZXN0cmFuIGNpZXJ0YSB2YXJpYWJpbGlkYWQgY29uIGVsIGluZGl2aWR1byAyMiAoNy4xMjEpIG1vc3RyYW5kbyB1biB2YWxvciBleHRyZW1hZGFtZW50ZSBhbHRvLiBFc3RhIGRpbWVuc2nDs24sIGFsIGlndWFsIHF1ZSBEaW0uNCwgY2FwdHVyYSB2YXJpYWJpbGlkYWQgcmVzaWR1YWwgeSBwdWVkZSBlc3RhciBpbmZsdWVuY2lhZGEgcG9yIGNhcmFjdGVyw61zdGljYXMgZXNwZWPDrWZpY2FzIG1lbm9zIGRvbWluYW50ZXMuDQoNCi0qKkRpbWVuc2nDs24gNiAoRGltLjYpOioqDQpMYXMgY29vcmRlbmFkYXMgZW4gRGltLjYgbXVlc3RyYW4gcXVlIGVsIGluZGl2aWR1byAyMiB0aWVuZSB1biB2YWxvciBleHRyZW1hZGFtZW50ZSBiYWpvICgtOC40MDYpLCBtaWVudHJhcyBxdWUgb3Ryb3MgdGllbmVuIHZhbG9yZXMgbcOhcyBtb2RlcmFkb3MuIEVzdGEgZGltZW5zacOzbiByZXByZXNlbnRhIGNhcmFjdGVyw61zdGljYXMgbWVub3MgZG9taW5hbnRlcyB5IGVzIMO6dGlsIHBhcmEgY2FwdGFyIGxhIHZhcmlhYmlsaWRhZCByZXNpZHVhbCBlbiBsb3MgZGF0b3MuDQoNCkVsIGluZGl2aWR1byAyMiB0aWVuZSBjb29yZGVuYWRhcyBleHRyZW1hZGFtZW50ZSBhbHRhcyBlbiBEaW0uNCB5IERpbS41IHkgZXh0cmVtYWRhbWVudGUgYmFqYXMgZW4gRGltLjYuIEVzdG8gc3VnaWVyZSBxdWUgZXN0ZSBpbmRpdmlkdW8gdGllbmUgY2FyYWN0ZXLDrXN0aWNhcyBtdXkgZGlzdGludGFzIGEgbGEgbWF5b3LDrWEgZGUgbG9zIG90cm9zIGluZGl2aWR1b3MuDQoNCiMjIyBDaXJjdWxvIGRlIENvcnJlbGFjaW9uZXMNCmBgYHtyfQ0KZnZpel9wY2FfdmFyKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBzY2FsZS51bml0ID0gVCwgZ3JhcGggPSBGKSxjb2wudmFyPSIjM0I4M0JEIiwgcmVwZWwgPSBULCBjb2wuY2lyY2xlID0gIiNDRENEQ0QiLCBnZ3RoZW1lID0gdGhlbWVfYncoKSkNCmBgYA0KDQojIyMgTWF0cml6IGRlIFJlcHJlc2VudGFjacOzbg0KYGBge3J9DQooZ2V0X3BjYV92YXIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDYsIHNjYWxlLnVuaXQgPSBUUlVFLCBncmFwaCA9IEYpKSkkY29zMg0KYGBgDQoNCiMjIyBDYWxpZGFkIGRlIFJlcHJlc2VudGFjacOzbiANCmBgYHtyfQ0KZnZpel9wY2FfdmFyKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBuY3AgPSA2LCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY29sLnZhcj0iY29zMiIsIGdyYWRpZW50LmNvbHM9YygiIzAwQUZCQiIsIiNFN0I4MDAiLCIjRkM0RTA3IiksIHJlcGVsID0gVFJVRSkNCmBgYA0KDQojIyMgQ29vcmRlbmFkYXMgSW5kaXZpZHVhbGVzDQpgYGB7cn0NCmhlYWQoKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBuY3AgPSA2LCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSkkaW5kJGNvb3JkLCBuID0gMjNMKQ0KYGBgDQoNCiMjIDIuNC4gQ29udHJpYnVjaW9uZXMgey50YWJzZXQgLnRhYnNldC1waWxsc30NClNlZ8O6biBlbCB0cmFiYWpvIGRlIChEw61heiBNb3JhbGVzICYgTW9yYWxlcyBSaXZlcmEsIDIwMTIpIGxhIGludGVycHJldGFjacOzbiBkZSByZXN1bHRhZG9zIGVzdMOhIHZpbmN1bGFkYSBjb24gZWwgY8OhbGN1bG8gZGUgY29vcmRlbmFkYXMsIGNvbnRyaWJ1Y2lvbmVzLCBjb3Nlbm9zIGN1YWRyYWRvcywgZXRjLCBwb3IgbG8gdGFudG8sIGxhIGNvbmNlcHR1YWxpemFjacOzbiBkZSBsYXMgdmFyaWFibGVzIGRlYmUgc2VyIGNsYXJhIHBhcmEgZXN0YWJsZWNlcmxhIGNvbiBsYSBtYXlvciBjbGFyaWRhZCBwb3NpYmxlLCBlcyBkZWNpciwgbG9zIGRhdG9zIGRlYmVuIHBvbmVyc2UgZW4gY29udGV4dG8uIEVuIGVzdGUgc2VudGlkbywgbGEgY29udHJpYnVjacOzbiBkZSB1bmEgdmFyaWFibGUgYSB1bmEgY29tcG9uZW50ZSBhbGxhbmEgZWwgY2FtaW5vIGRlIGxhIGludGVycHJldGFjacOzbiBkZSByZXN1bHRhZG9zLiBFc3RvIHNlIGhhY2UgZW4gZXN0ZSBhcGFydGFkbyBlbiBlbCBzZW50aWRvIGRlIGNhbGN1bGFyIGxvciBhcG9ydGVzIGNvbiBxdWUgY2FkYSB2YXJpYWJsZSBwYXJ0aWNpcGEgcGFyYSBkZWZpbmlyIGEgY2FkYSBjb21wb25lbnRlIGdlbmVyYWRhLg0KDQoqKlBsYW50ZWFtaWVudG8gZGVsIFByb2JsZW1hKioNCg0KQ29uIGJhc2UgZW4gbGFzIHZhcmlhYmxlcyBjdWFudGl0YXRpdmFzIGRlbCBjb25qdW50byBkZSBkYXRvcyBkZXNjcml0byBlbiBsYSBzZWNjacOzbiAyIHNlIGRlbWFuZGEgZGV0ZXJtaW5hciBsYXMgY29udHJpYnVjaW9uZXMgcXVlIGhhY2UgY2FkYSB2YXJpYWJsZSBhIGxhIGNvbnN0cnVjY2nDs24gZGUgY2FkYSBjb21wb25lbnRlLg0KDQoqKkRlc2Fycm9sbG8gZGVsIEFuw6FsaXNpcyoqDQoNCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzIHBlcm1pdGUgcmVjb25vY2VyIGVuIHJlcHJlc2VudGFjaW9uZXMgbnVtw6lyaWNhcyB5IGdyw6FmaWNhcyBsYXMgY29udHJpYnVjaW9uZXMgZGUgbGFzIHZhcmlhYmxlcyBkZWwgY29uanVudG8gZGUgZGF0b3MgYSBsYSBjb25zdHJ1Y2Npw7NuIGRlIGNhZGEgY29tcG9uZW50ZS4gQXPDrSwgc2UgZW50aWVuZGUgY3XDoW50YSB2YXJpYWJpbGlkYWQgZXhwbGljYSBjYWRhIHZhcmlhYmxlIGRlIGxhIHZhcmlhYmlsaWRhZCB0b3RhbCBkZSBsYSBjb21wb25lbnRlIGNvbiBxdWUgZXN0w6kgaW52b2x1Y3JhZGEuIGVuIHBhcnRpY3VsYXI6DQoNCkxhIE1hdHJpeiBkZSBDb250cmlidWNpb25lcyBwcm9wb3JjaW9uYSB1bmEgdmlzacOzbiByZWxhdGl2YSBkZSBjw7NtbyBjYWRhIHZhcmlhYmxlIGNvbnRyaWJ1eWUgYSBsYSB2YXJpYWJpbGlkYWQgY2FwdHVyYWRhIHBvciBjYWRhIGNvbXBvbmVudGUgcHJpbmNpcGFsLiBMb3MgZGlhZ3JhbWFzIGRlIGJhcnJhcyBtb3N0cmFkb3MgZW4gbGFzIHBlc3Rhw7FhcyBkZXNkZSAiQ29udHJpYnVjaW9uZXMgYSBEMSIgaGFzdGEgIkNvbnRyaWJ1Y2lvbmVzIGEgRDE0IiByZXByZXNlbnRhbiB2aXN1YWxtZW50ZSBsYXMgY29udHJpYnVjaW9uZXMgZGUgY2FkYSB2YXJpYWJsZSBwYXJhIGV4cGxpY2FyIGxhIHZhcmlhbnphIGVuIGNhZGEgY29tcG9uZW50ZSBwcmluY2lwYWwuIENhZGEgZ3LDoWZpY28gdGFtYmnDqW4gaW5jbHV5ZSB1bmEgbMOtbmVhIHF1ZSByZXByZXNlbnRhIGxhIGNvbnRyaWJ1Y2nDs24gcHJvbWVkaW8sIGxvIHF1ZSBmYWNpbGl0YSBsYSBpZGVudGlmaWNhY2nDs24gZGUgbGFzIHZhcmlhYmxlcyBxdWUgdGllbmVuIHVuYSBtYXlvciBpbmZsdWVuY2lhIGVuIGxhIGV4cGxpY2FjacOzbiBkZSBsYSB2YXJpYWJpbGlkYWQgZGUgbG9zIGNvbXBvbmVudGVzLiBFbiByZXN1bWVuLCBlc3RvcyBncsOhZmljb3MgYXl1ZGFuIGEgY29tcHJlbmRlciBtZWpvciBjw7NtbyBjYWRhIHZhcmlhYmxlIGltcGFjdGEgZW4gbGEgZXN0cnVjdHVyYSBkZSBsb3MgZGF0b3MgeSBlbiBsYSBmb3JtYWNpw7NuIGRlIGxvcyBjb21wb25lbnRlcyBwcmluY2lwYWxlcy4NCg0KRW4gbGEgcGVzdGHDsWEgKipDb250cmlidWNpb25lcyBhIEQxKiogc2UgdmlzdWFsaXphIHF1ZSBsYXMgdmFyaWFibGVzIHBvciBlbmNpbWEgZGUgbGEgY29udHJpYnVjacOzbiBtZWRpYTogKipOdW1DYXRhbG9nUHVyY2hhc2VzLCBNbnRNZWF0UHJvZHVjdHMsIEluY29tZSwgTW50V2luZXMsIE51bVN0b3JlUHVyY2hhc2VzLCBNbnRGaXNoUHJvZHVjdHMsIE1udEZydWl0cywgTW50U3dlZXRQcm9kdWN0cywgTnVtV2ViVmlzaXRNb250aCoqIHJldGllbmVuIGFwcm94aW1hZGFtZW50ZSBlbCA4Ny42MSUgZGUgbGEgdmFyaWFiaWxpZGFkIGRlbCBjb21wb25lbnRlIDEuDQoNCkVuIGxhIHBlc3Rhw7FhICoqQ29udHJpYnVjaW9uZXMgYSBEMioqIHNlIHZpc3VhbGl6YSBxdWUgbGFzIHZhcmlhYmxlcyBwb3IgZW5jaW1hIGRlIGxhIGNvbnRyaWJ1Y2nDs24gbWVkaWE6ICoqSW5jb21lLCBOdW1EZWFsc1B1cmNoYXNlcywgTnVtV2ViVmlzaXRNb250aCwgWWVhcl9CaXJ0aCoqIHJldGllbmVuIGFwcm94aW1hZGFtZW50ZSBlbCA0MS40OCUgZGUgbGEgdmFyaWFiaWxpZGFkIGRlbCBjb21wb25lbnRlIDIuDQoNCkVuIGxhIHBlc3Rhw7FhICoqQ29udHJpYnVjaW9uZXMgYSBEMyoqIHNlIHZpc3VhbGl6YSBxdWUgbGFzIHZhcmlhYmxlcyBwb3IgZW5jaW1hIGRlIGxhIGNvbnRyaWJ1Y2nDs24gbWVkaWE6ICoqWWVhcl9CaXJ0aCwgTnVtV2ViVmlzaXRNb250aCwgTnVtRGVhbHNQdXJjaGFzZXMsIFRlZW5ob21lLCBOdW1XZWJQdXJjaGFzZXMqKiByZXRpZW5lbiBhcHJveGltYWRhbWVudGUgZWwgODMuNTMlIGRlIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29tcG9uZW50ZSAzLg0KDQpFbiBsYSBwZXN0YcOxYSAqKkNvbnRyaWJ1Y2lvbmVzIGEgRDQqKiBzZSB2aXN1YWxpemEgcXVlIGxhcyB2YXJpYWJsZXMgcG9yIGVuY2ltYSBkZSBsYSBjb250cmlidWNpw7NuIG1lZGlhOiAqKk1udFdpbmVzLCBNbnRHb2xkUHJvZHMsIE1udEZydWl0cywgTW50RmlzaFByb2R1Y3RzLCBZZWFyX0JpcnRoLCBNbnRTd2VldFByb2R1Y3RzKiogcmV0aWVuZW4gYXByb3hpbWFkYW1lbnRlIGVsIDY2LjM1JSBkZSBsYSB2YXJpYWJpbGlkYWQgZGVsIGNvbXBvbmVudGUgNC4NCg0KRW4gbGEgcGVzdGHDsWEgKipDb250cmlidWNpb25lcyBhIEQ1Kiogc2UgdmlzdWFsaXphIHF1ZSBsYXMgdmFyaWFibGVzIHBvciBlbmNpbWEgZGUgbGEgY29udHJpYnVjacOzbiBtZWRpYTogKipOdW1EZWFsc1B1cmNoYXNlcywgTW50R29sZFByb2RzLCBOdW1XZWJQdXJjaGFzZXMsIE1udFdpbmVzKiogcmV0aWVuZW4gYXByb3hpbWFkYW1lbnRlIGVsIDcxLjI2JSBkZSBsYSB2YXJpYWJpbGlkYWQgZGVsIGNvbXBvbmVudGUgNS4NCg0KRW4gbGEgcGVzdGHDsWEgKipDb250cmlidWNpb25lcyBhIEQ2Kiogc2UgdmlzdWFsaXphIHF1ZSBsYXMgdmFyaWFibGVzIHBvciBlbmNpbWEgZGUgbGEgY29udHJpYnVjacOzbiBtZWRpYTogKipNbnRHb2xkUHJvZHMsIE51bUNhdGFsb2dQdXJjaGFzZXMsIE51bVN0b3JlUHVyY2hhc2VzLCBNbnRTd2VldFByb2R1Y3RzLCBNbnRNZWF0UHJvZHVjdHMsIE51bVdlYlB1cmNoYXNlcywgTnVtRGVhbHNQdXJjaGFzZXMqKiByZXRpZW5lbiBhcHJveGltYWRhbWVudGUgZWwgODAuMzQlIGRlIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29tcG9uZW50ZSA2Lg0KDQpFbiBsYSBwZXN0YcOxYSAqKkNvbnRyaWJ1Y2lvbmVzIGEgRDcqKiBzZSB2aXN1YWxpemEgcXVlIGxhcyB2YXJpYWJsZXMgcG9yIGVuY2ltYSBkZSBsYSBjb250cmlidWNpw7NuIG1lZGlhOiAqKk1udEdvbGRQcm9kcywgWWVhcl9CaXJ0aCwgTnVtV2ViVmlzaXRNb250aCwgVGVlbmhvbWUqKiByZXRpZW5lbiBhcHJveGltYWRhbWVudGUgZWwgNzkuNTclIGRlIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29tcG9uZW50ZSA3Lg0KDQpFbiBsYSBwZXN0YcOxYSAqKkNvbnRyaWJ1Y2lvbmVzIGEgRDgqKiBzZSB2aXN1YWxpemEgcXVlIGxhcyB2YXJpYWJsZXMgcG9yIGVuY2ltYSBkZSBsYSBjb250cmlidWNpw7NuIG1lZGlhOiAqKk51bVN0b3JlUHVyY2hhc2VzLCBNbnRTd2VldFByb2R1Y3RzLCBJbmNvbWUsIE51bVdlYlB1cmNoYXNlcywgTW50RnJ1aXRzKiogcmV0aWVuZW4gYXByb3hpbWFkYW1lbnRlIGVsIDkwLjc2JSBkZSBsYSB2YXJpYWJpbGlkYWQgZGVsIGNvbXBvbmVudGUgOC4NCg0KRW4gbGEgcGVzdGHDsWEgKipDb250cmlidWNpb25lcyBhIEQ5Kiogc2UgdmlzdWFsaXphIHF1ZSBsYXMgdmFyaWFibGVzIHBvciBlbmNpbWEgZGUgbGEgY29udHJpYnVjacOzbiBtZWRpYTogKipNbnRGcnVpdCwgTW50U3dlZXRQcm9kdWN0cywgTnVtU3RvcmVQdXJjaGFzZXMsIE51bVdlYlZpc2l0TW9udGggKiogcmV0aWVuZW4gYXByb3hpbWFkYW1lbnRlIGVsIDc5Ljg2JSBkZSBsYSB2YXJpYWJpbGlkYWQgZGVsIGNvbXBvbmVudGUgOS4NCg0KRW4gbGEgcGVzdGHDsWEgKipDb250cmlidWNpb25lcyBhIEQxMCoqIHNlIHZpc3VhbGl6YSBxdWUgbGFzIHZhcmlhYmxlcyBwb3IgZW5jaW1hIGRlIGxhIGNvbnRyaWJ1Y2nDs24gbWVkaWE6ICoqTW50RmlzaFByb2R1Y3RzLCBNbnRGcnVpdCwgVGVlbmhvbWUqKiByZXRpZW5lbiBhcHJveGltYWRhbWVudGUgZWwgMTYuNDElIGRlIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29tcG9uZW50ZSAxMC4NCg0KRW4gbGEgcGVzdGHDsWEgKipDb250cmlidWNpb25lcyBhIEQxMSoqIHNlIHZpc3VhbGl6YSBxdWUgbGFzIHZhcmlhYmxlcyBwb3IgZW5jaW1hIGRlIGxhIGNvbnRyaWJ1Y2nDs24gbWVkaWE6ICoqSW5jb21lLCBUZWVuaG9tZSwgTW50V2luZXMsIE1udFN3ZWV0UHJvZHVjdHMsIE51bUNhdGFsb2dQdXJjaGFzZXMsIE1udEZpc2hQcm9kdWN0cyoqIHJldGllbmVuIGFwcm94aW1hZGFtZW50ZSBlbCA3MC45NCUgZGUgbGEgdmFyaWFiaWxpZGFkIGRlbCBjb21wb25lbnRlIDExLg0KDQpFbiBsYSBwZXN0YcOxYSAqKkNvbnRyaWJ1Y2lvbmVzIGEgRDEyKiogc2UgdmlzdWFsaXphIHF1ZSBsYXMgdmFyaWFibGVzIHBvciBlbmNpbWEgZGUgbGEgY29udHJpYnVjacOzbiBtZWRpYTogKipOdW1XZWJQdXJjaGFzZXMsIEluY29tZSwgTnVtV2ViVmlzaXRNb250aCwgTW50V2luZXMsIE1udFN3ZWV0UHJvZHVjdHMqKiByZXRpZW5lbiBhcHJveGltYWRhbWVudGUgZWwgMjIuODclIGRlIGxhIHZhcmlhYmlsaWRhZCBkZWwgY29tcG9uZW50ZSAxMi4NCg0KQ29uIGxvcyBkYXRvcyBwcm9jZXNhZG9zIGhhc3RhIGFob3JhIHNlIHB1ZWRlIHByb2NlZGVyIGNvbiBsYSBpbnRlcHJldGFjacOzbiBkZSBsb3MgY29tcG9uZW50ZXMuDQoNCiMjIyBNYXRyaXogZGUgQ29udHJpYnVjaW9uZXMNCmBgYHtyfQ0KKGdldF9wY2FfdmFyKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBuY3AgPSAxMiwgc2NhbGUudW5pdCA9IFRSVUUsIGdyYXBoID0gRikpKSRjb250cmliDQpgYGANCg0KIyMjIENvbnRyaWJ1Y2lvbmVzIGEgRDENCmBgYHtyfQ0KZnZpel9jb250cmliKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBuY3AgPSAxMiwgc2NhbGUudW5pdCA9IFRSVUUsIGdyYXBoID0gRiksIGNob2ljZSA9ICJ2YXIiLCBheGVzID0gMSwgdG9wID0gMTQpDQpgYGANCg0KIyMjIENvbnRyaWJ1Y2lvbmVzIGEgRDINCmBgYHtyfQ0KZnZpel9jb250cmliKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBuY3AgPSAxMiwgc2NhbGUudW5pdCA9IFRSVUUsIGdyYXBoID0gRiksIGNob2ljZSA9ICJ2YXIiLCBheGVzID0gMiwgdG9wID0gMTQpDQoNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBEMw0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSAzLCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBENA0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSA0LCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBENQ0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSA1LCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBENg0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSA2LCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBENw0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSA3LCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBEOA0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSA4LCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBEOQ0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSA5LCB0b3AgPSAxNCkNCmBgYA0KDQojIyMgQ29udHJpYnVjaW9uZXMgYSBEMTANCmBgYHtyfQ0KZnZpel9jb250cmliKFBDQShHYXN0b3NfRGF0YXNldFssLWMoMSwzLDQsNywxOSwyMCwyMSwyMildLCBuY3AgPSAxMiwgc2NhbGUudW5pdCA9IFRSVUUsIGdyYXBoID0gRiksIGNob2ljZSA9ICJ2YXIiLCBheGVzID0gMTAsIHRvcCA9IDE0KQ0KYGBgDQoNCg0KIyMjIENvbnRyaWJ1Y2lvbmVzIGEgRDExDQpgYGB7cn0NCmZ2aXpfY29udHJpYihQQ0EoR2FzdG9zX0RhdGFzZXRbLC1jKDEsMyw0LDcsMTksMjAsMjEsMjIpXSwgbmNwID0gMTIsIHNjYWxlLnVuaXQgPSBUUlVFLCBncmFwaCA9IEYpLCBjaG9pY2UgPSAidmFyIiwgYXhlcyA9IDExLCB0b3AgPSAxNCkNCmBgYA0KDQoNCiMjIyBDb250cmlidWNpb25lcyBhIEQxMg0KYGBge3J9DQpmdml6X2NvbnRyaWIoUENBKEdhc3Rvc19EYXRhc2V0WywtYygxLDMsNCw3LDE5LDIwLDIxLDIyKV0sIG5jcCA9IDEyLCBzY2FsZS51bml0ID0gVFJVRSwgZ3JhcGggPSBGKSwgY2hvaWNlID0gInZhciIsIGF4ZXMgPSAxMiwgdG9wID0gMTQpDQpgYGANCg0KIyMgMi41LiBJbnRlcnByZXRhY2nDs24gZGUgQ29tcG9uZW50ZXN7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KQ29uIGJhc2UgZW4gKETDrWF6IE1vcmFsZXMgJiBNb3JhbGVzIFJpdmVyYSwgMjAxMikgc2Ugc2FiZSBxdWUgYSBwYXJ0aXIgZGUgbGFzIGNvb3JkZW5hZGFzIGRlIGxvcyByZWdpc3Ryb3MgZGltZW5zaW9uYWxtZW50ZSByZWR1Y2lkb3Mgc2UgcHVlZGUgdWJpY2FyIGVuIHVuIHBsYW5vIGRlIGZhY3RvcmVzIHBhcmEgZWZlY3RvcyBkZSBhbsOhbGlzaXMgZSBpbnRlcnByZXRhY2nDs24uIEFzw60sIGxhcyB2YXJpYWJsZXMgcmVkdWNpZGFzIHNvbiBsYXMgY29tcG9uZW50ZXMgcHJpbmNpcGFsZXMgcXVlIHNlIGdyYWZpY2FuIGNvbW8gZWplcyBlbiB1biBwbGFubywgeSBsb3MgdmFsb3JlcyBxdWUgdG9tZW4gc29uIGxvcyBwdW50YWplcyBkZSBsYXMgY29tcG9uZW50ZXMuIENvbW8gYmllbiBzZSBleHBsaWNhIGVuIGVsIG1pc21vIHRyYWJham8sIGxhcyBkaXN0YW5jaWFzIGVudHJlIGxvcyBwdW50b3MgZGVmaW5pZG9zIHBvciBsb3MgcHVudGFqZXMgZGUgbGFzIGNvbXBvbmVudGVzIHRpZW5lIHVuIHNpZ25pZmljYWRvIHJlbGV2YW50ZSBhbCBheXVkYXIgYSBlc3RhYmxlY2VyIHNlbWVqYW56YXMgZGUgcGVyZmlsZXMgZW4gbGFzIG9ic2VydmFjaW9uZXMgaGVjaGFzLiBTaW4gZW1iYXJnbywgbG9zIHZhbG9yZXMgc2VtZWphbnRlcyBkZSBsYXMgdmFyaWFibGVzIHB1ZWRlbiBkYXJzZSBzb2xvIGVuIGFsZ3VuYXMgZGUgZWxsYXMsIHNpbiBlc3BlcmFyIG5lY2VzYXJpYW1lbnRlIGEgcXVlIHN1Y2VkYSBlbiB0b2Rhcy4gQXPDrSwgc2UgZXNwZXJhIHF1ZSBsYXMgZGlzdGFuY2lhcyBlbiBlbCBlc3BhY2lvIGRpbWVuc2lvbmFsIG9yaWdpbmFsIGRlIGxhcyBvYnNlcnZhY2lvbmVzIHF1ZWRlbiBiaWVuIHJlcHJlc2VudGFkYXMgZW4gZWwgZXNwYWNpbyByZWR1Y2lkbyBkZSBsYXMgY29tcG9uZW50ZXMuDQoNCioqUGxhbnRlYW1pZW50byBkZWwgUHJvYmxlbWEqKg0KDQpDb24gYmFzZSBlbiBsYXMgdmFyaWFibGVzIGN1YW50aXRhdGl2YXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlc2NyaXRvIGVuIGxhIHNlY2Npw7NuIDIgc2UgZGVtYW5kYSBkZWZpbmlyIGUgaW50ZXJwcmV0YXIgc3VzIGNvbXBvbmVudGVzIHByaW5jaXBhbGVzLg0KDQoqKkRlc2Fycm9sbG8gZGVsIEFuw6FsaXNpcyoqDQoNCg0KIyBGYXNlIDMgW0NvcnJlc3BvbmRlbmNpYXNdDQoNCkVuIHTDqXJtaW5vcyBnZW5lcmFsZXMsIGVzdGEgdGVyY2VyYSBldGFwYSBkZSBlc3R1ZGlvIG1vc3RyYXLDoSBjw6FsY3Vsb3MsIHZpc3VhbGl6YWNpb25lcyBlIGludGVycHJldGFjaW9uZXMgY29uIGJhc2UgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgdHJhdGFkbyBlbiBsYSBmYXNlIDEgeSAyLCBwZXJvIGFob3JhIGRlc2RlIHVuIGVuZm9xdWUgZGUgYW7DoWxpc2lzIGRlIGNvcnJlc3BvbmRlbmNpYXMgc2ltcGxlcyB5IG3Dumx0aXBsZXMgc29icmUgbGFzIHZhcmlhYmxlcyBjdWFsaXRhdGl2YXMsIHF1ZSBpbmNsdWlyw6E6IGNvbnN0cnVjY2nDs24gZGUgdGFibGFzIGRlIGNvbnRpbmdlbmNpYXMgeSBkaXN5dW50aXZhcyBjb21wbGV0YXMsIGNhbGlkYWRlcyBkZSByZXByZXNlbnRhY2nDs24sIGNvbnRyaWJ1Y2lvbmVzIGUgaW50ZXJwcmV0YWNpb25lcy4gUmVjdcOpcmRlc2UgcXVlIGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlIHRyYWJham8gZXMgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gMiB5IGxvcyByZWZlcmVudGVzIHRlw7NyaWNvcyBlbiBsYSBzZWNjacOzbiAxLg0KDQojIyAzLjEuIE9iamV0aXZvcw0KDQpBbmFsaXphciBsYXMgcmVsYWNpb25lcyB5IGFzb2NpYWNpb25lcyBlbnRyZSB2YXJpYWJsZXMgY2F0ZWfDs3JpY2FzIHV0aWxpemFuZG8gdMOpY25pY2FzIGRlIGNvcnJlc3BvbmRlbmNpYXMgc2ltcGxlcyB5IG3Dumx0aXBsZXMsIGNvbiBlbCBmaW4gZGUgaWRlbnRpZmljYXIgcGF0cm9uZXMgc2lnbmlmaWNhdGl2b3MgeSBlbnRlbmRlciBsYSBlc3RydWN0dXJhIHN1YnlhY2VudGUgZGUgbG9zIGRhdG9zLg0KDQojIyAzLjIuIENvcnJlc3BvbmRlbmNpYXMgU2ltcGxlc3sudGFic2V0IC50YWJzZXQtcGlsbHN9DQoNCkNvbiBiYXNlIGVuIGVsIHRyYWJham8gZGUgKEFsZMOhcyAmIFVyaWVsLCAyMDE3KSBzZSBzYWJlIHF1ZSBlbCBhbsOhbGlzaXMgZGUgY29ycmVzcG9uZGVuY2lhcyBzaW1wbGUgKEFDUykgYnVzY2EgcmVwcmVzZW50YXIgZW4gdW4gZXNwYWNpbyBtdWx0aWRpbWVuc2lvbmFsIHJlZHVjaWRvIGxhIHJlbGFjacOzbiBxdWUgZXhpc3RhIGVudHJlIGxhcyBjYXRlZ29yw61hcyBkZSB1biBwYXIgZGUgdmFyaWFibGVzIGNhdGVnw7NyaWNhcy4gRW4gZXN0ZSBzZW50aWRvLCBlbCBBQ1MgbXVlc3RyYSBsYXMgZGlzdGFuY2lhIGVudHJlIGxvcyBuaXZlbGVzIGRlIGRvcyB2YXJpYWJsZXMgY2F0ZWfDs3JpY2FzIHksIGVuIGNvbnNlY3VlbmNpYSwgYXl1ZGEgYSB2aXN1YWxpemFyIHRhYmxhcyBkZSBjb250aW5nZW5jaWEuIEFkZW3DoXMsIHNlIGVzdGFibGVjZSBxdWUgZWwgbsO6bWVybyBtw6F4aW1vIGRlIGRpbWVuc2lvbmVzIHF1ZSBleHBsaXF1ZW4gbGEgYXNvY2lhY2nDs24gZW50cmUgdmFyaWFibGVzIGZpbGEgeSBjb2x1bW5hIGVzIGlndWFsIGEgdW5vIG1lbm9zIGVsIG1lbm9yIG7Dum1lcm8gZGUgY2F0ZWdvcsOtYXMgZGUgYWxndW5hIGRlIGxhcyB2YXJpYWJsZXMgaW52b2x1Y3JhZGFzLiBFbiBjb25zZWN1ZW5jaWEsIGVsIGFuw6FsaXNpcyBkZSBjb3JyZXNwb25kZW5jaWFzIHBlcm1pdGUgZGVzY3JpYmlyIGxhIHByb3hpbWlkYWQgZXhpc3RlbnRlIGVudHJlIGxvcyBwZXJmaWxlcyBkZSBsb3Mgb2JqZXRvcyBvYnNlcnZhZG9zLiBBZGVtw6FzLCBlbCBBQ1MsIHF1ZSBiYXNhIHN1cyBjw6FsY3Vsb3MgZW4gdGFibGFzIGRlIGNvbnRpbmdlbmNpYSwgcHVlZGUgZXh0ZW5kZXJzZSBhIG3DoXMgZGUgZG9zIHZhcmlhYmxlcyBjYXRlZ8OzcmljYXMsIGNvbm9jacOpbmRvc2UgY29tbyBhbsOhc2xpc2lzIGRlIGNvcnJlc3BvbmRlbmNpYXMgbcO6bHRpcGxlcyAoQUNNKSwgY29uIGJhc2UgZW4gdW5hIG9iamV0byBsbGFtYWRvIHRhYmxhIGRpc3l1bnRpdmEgY29tcGxldGEuDQoNCkVzdGEgc2VjY2nDs24gdHJhdGEgZWwgYW7DoWxpc2lzIGRlIGNvcnJlc3BvbmRlY2lhcyBzaW1wbGUgY29uIGJhc2UgZW4gcGFyZXMgZGUgdmFyaWFibGVzIGNhdGVnw7NyaWNhcyBkZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gMi4gQ29tcGxlbWVudGFyaWFtZW50ZSwgbGEgc2VjY2nDs24gMy4zIG11ZXN0cmEgZWwgYW7DoWxpc2lzIGRlIGNvcnJlc3BvbmRlbmNpYXMgbcO6bHRpcGxlcyBjb24gYmFzZSBlbiBsYXMgdmFyYWlibGVzIGNhdGVnw7NyaWNhcyBkZWwgbWlzbW8gY29uanVudG8gZGUgZGF0b3MuDQoNCioqUGxhbnRlYW1pZW50byBkZWwgUHJvYmxlbWEqKg0KDQpDb24gYmFzZSBlbiBsYXMgdmFyaWFibGVzIGN1YWxpdGF0aXZhcyBkZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gMiBzZSBkZW1hbmRhIGRlc2Fycm9sbGFyIGVsIGFuw6FsaXNpcyBkZSBjb3JyZXNwb25kZW5jaWFzLCBlbiBwcmluY2lwaW8gc2ltcGxlLCBhcG95YWRvIGVuIHRhYmxhcyBkZSBjb250aW5nZW5jaWEgeSBkZSBmcmVjdWVuY2lhcyByZWxhdGl2YXMgeSBncsOhZmljb3MgZGUgcGVyZmlsZXMgeSBkZSBwdW50b3Mgc3VwZXJwdWVzdG9zIGVuIGVsIHByaW1lciBwbGFubyBmYWN0b3JpYWwuDQoNCioqRGVzYXJyb2xsbyBkZWwgQW7DoWxpc2lzKioNCg0KTGFzIFRhYmxhcyBkZSAqKkNvbnRpbmdlbmNpYSoqLCAqKnByb2JhYmlsaWRhZGVzKiogeSAgKipGcmVjdWVuY2lhKipwcm9wb3JjaW9uYSBpbmZvcm1hY2nDs24gcXVlIGRldGVybWluYSBxdWUgbGEgbWF5b3LDrWEgZGUgbG9zIGNsaWVudGVzIGRlbCBjb25qdW50byBkZSBkYXRvcyB0aWVuZW4gdW5hIGVkdWNhY2nDs24gc3VwZXJpb3IsIGNvbiBHcmFkdWFjacOzbiBzaWVuZG8gZWwgbml2ZWwgbcOhcyBjb23Dum4uIEVzdGFzIHBlcnNvbmFzIGVzdMOhbiBtYXlvcm1lbnRlIGVuIHJlbGFjaW9uZXMgZXN0YWJsZXMgbyBzb2x0ZXJhcy4gTGEgZGlzdHJpYnVjacOzbiBkZSBuaXZlbGVzIGVkdWNhdGl2b3MgeSBlc3RhZG9zIGNpdmlsZXMgZXMgZXF1aWxpYnJhZGEgZW50cmUgZ8OpbmVyb3MsIGxvIHF1ZSBzdWdpZXJlIHF1ZSB0YW50byBob21icmVzIGNvbW8gbXVqZXJlcyB0aWVuZW4gYWNjZXNvIHNpbWlsYXIgYSBsYSBlZHVjYWNpw7NuIHkgZXhoaWJlbiBwYXRyb25lcyBkZSBlc3RhZG8gY2l2aWwgY29tcGFyYWJsZXMuIExhIHByZWRvbWluYW5jaWEgZGUgcGVyc29uYXMgY29uIG5pdmVsZXMgZWR1Y2F0aXZvcyBhbHRvcyBlbiBlc3RhZG9zIGNpdmlsZXMgZGUgQ2FzYWRvIG8gU29sdGVybyBpbmRpY2EgdW5hIGNvcnJlbGFjacOzbiBwb3NpdGl2YSBlbnRyZSBlbCBuaXZlbCBlZHVjYXRpdm8geSBsYSBwcm9iYWJpbGlkYWQgZGUgZXN0YXIgZW4gdW5hIHJlbGFjacOzbiBlc3RhYmxlIG8gc29sdGVyby4NCg0KKipFZHVjYWNpw7NuIHZzIFNleG8qKi4gTGEgcmVsYWNpw7NuIGVudHJlIGxhIGVkdWNhY2nDs24geSBlbCBzZXhvIHJldmVsYSB1biBlcXVpbGlicmlvIGNhc2kgcGVyZmVjdG8gZW50cmUgaG9tYnJlcyB5IG11amVyZXMgZW4gZWwgZGF0YXNldC4gTG9zIG5pdmVsZXMgZWR1Y2F0aXZvcyBkZSBHcmFkdWFjacOzbiB5IFBoRCBzb24gbG9zIG3DoXMgY29tdW5lcyBwYXJhIGFtYm9zIHNleG9zLiBFc3RlIGVxdWlsaWJyaW8gc3VnaWVyZSBxdWUgbGEgZGlzdHJpYnVjacOzbiBkZSBsYSBlZHVjYWNpw7NuIG5vIGVzdMOhIHNpZ25pZmljYXRpdmFtZW50ZSBzZXNnYWRhIHBvciBnw6luZXJvLCB5IGxhIG1heW9yw61hIGRlIGxhcyBwZXJzb25hcyBlbiBhbWJvcyBncnVwb3MgYWxjYW56YW4gbml2ZWxlcyBlZHVjYXRpdm9zIGFsdG9zLg0KDQoqKkVzdGFkbyBDaXZpbCB2cyBTZXhvKiouIEVuIHTDqXJtaW5vcyBkZSBlc3RhZG8gY2l2aWwgeSBzZXhvLCBDYXNhZG8geSBTb2x0ZXJvIHNvbiBsb3MgZXN0YWRvcyBjaXZpbGVzIG3DoXMgcHJldmFsZW50ZXMgcGFyYSBhbWJvcyBnw6luZXJvcy4gTGFzIG11amVyZXMgdGllbmVuIHVuYSBsaWdlcmEgcHJlZG9taW5hbmNpYSBlbiBsb3MgZXN0YWRvcyBjaXZpbGVzIGRlIENhc2FkbyB5IFZpdWRvLCBtaWVudHJhcyBxdWUgbG9zIGhvbWJyZXMgcHJlZG9taW5hbiBlbiBlbCBlc3RhZG8gZGUgSnVudG9zLiBFc3RhIGRpc3RyaWJ1Y2nDs24gaW5kaWNhIHF1ZSBsb3MgcGF0cm9uZXMgZGUgZXN0YWRvIGNpdmlsIHNvbiBzaW1pbGFyZXMgZW50cmUgaG9tYnJlcyB5IG11amVyZXMsIGNvbiB1bmEgbGlnZXJhIHZhcmlhY2nDs24gZW4gZXN0YWRvcyBlc3BlY8OtZmljb3MgY29tbyBWaXVkby4NCg0KKipBbsOhbGlzaXMgZGUgbGEgVGFibGEgZGUgQ29udGluZ2VuY2lhKiouIEVuIGVsIGFuw6FsaXNpcyBjb21wYXJhdGl2byBlbnRyZSBlZHVjYWNpw7NuIHkgZXN0YWRvIGNpdmlsLCBzZSBvYnNlcnZhIHF1ZSBsYSBtYXlvcsOtYSBkZSBsYXMgcGVyc29uYXMgY29uIG5pdmVsIGVkdWNhdGl2byBkZSBHcmFkdWFjacOzbiBlc3TDoW4gQ2FzYWRhcywgU29sdGVyYXMgbyB2aXZlbiBKdW50YXMsIHN1Z2lyaWVuZG8gdW5hIGFzb2NpYWNpw7NuIGVudHJlIGxhIGVkdWNhY2nDs24gc3VwZXJpb3IgeSBsYSBlc3RhYmlsaWRhZCBlbiBlbCBlc3RhZG8gY2l2aWwuIFBvciBvdHJvIGxhZG8sIGxvcyBuaXZlbGVzIGVkdWNhdGl2b3MgbcOhcyBiYWpvcywgY29tbyBCw6FzaWNvIHkgMm4gQ2ljbG8sIHRpZW5kZW4gYSB0ZW5lciB1bmEgcmVwcmVzZW50YWNpw7NuIG1lbm9yIHkgZXN0w6FuIHByaW5jaXBhbG1lbnRlIGFzb2NpYWRvcyBjb24gcGVyc29uYXMgQ2FzYWRhcyBvIFNvbHRlcmFzLCBsbyBxdWUgaW5kaWNhIHVuYSBwb3NpYmxlIGZhbHRhIGRlIGVzdGFiaWxpZGFkIGVuIGVsIGVzdGFkbyBjaXZpbC4gRW4gY3VhbnRvIGEgbGEgY29tcGFyYWNpw7NuIGVudHJlIGVkdWNhY2nDs24geSBzZXhvLCBsb3Mgbml2ZWxlcyBkZSBHcmFkdWFjacOzbiwgKipNYXN0ZXIgeSAqUGhEIG11ZXN0cmFuIHVuYSBkaXN0cmlidWNpw7NuIGVxdWl0YXRpdmEgZW50cmUgaG9tYnJlcyB5IG11amVyZXMsIHN1Z2lyaWVuZG8gaWd1YWxkYWQgZW4gZWwgYWNjZXNvIGEgbGEgZWR1Y2FjacOzbiBhdmFuemFkYSwgc2luIGluZGljYXIgdW4gc2VzZ28gZGUgZ8OpbmVybyBzaWduaWZpY2F0aXZvIGVuIGVsIGFjY2VzbyBhIGxhIGVkdWNhY2nDs24gZW4gZ2VuZXJhbC4gRW4gcmVsYWNpw7NuIGNvbiBlbCBlc3RhZG8gY2l2aWwgeSBlbCBzZXhvLCBzZSBvYnNlcnZhIHF1ZSB0YW50byBob21icmVzIGNvbW8gbXVqZXJlcyBwcmVkb21pbmFuIGVuIGxvcyBlc3RhZG9zIENhc2FkbyB5IFNvbHRlcm8sIGNvbiBwZXF1ZcOxYXMgZGlmZXJlbmNpYXMgZW50cmUgZWxsb3MsIGNvbW8gdW5hIGxpZ2VyYSB2ZW50YWphIGRlIGxhcyBtdWplcmVzIGVuIGVsIGVzdGFkbyBDYXNhZG8geSBkZSBsb3MgaG9tYnJlcyBlbiBlbCBlc3RhZG8gU29sdGVyby4gQWRlbcOhcywgbG9zIGVzdGFkb3MgbWVub3MgY29tdW5lcywgY29tbyBEaXZvcmNpYWRvIHkgVml1ZG8sIHByZXNlbnRhbiBtw6FzIG11amVyZXMgcXVlIGhvbWJyZXMgZW4gbGEgY2F0ZWdvcsOtYSBkZSBWaXVkby4NCg0KKipFbCBhbsOhbGlzaXMgZGUgbGEgdGFibGEgZGUgcHJvYmFiaWxpZGFkZXMqKiwgcmVzYWx0YSBsYSBwcm9wb3JjacOzbiBkZSBwZXJzb25hcyBlbiBkaWZlcmVudGVzIGNvbWJpbmFjaW9uZXMgZGUgbml2ZWwgZWR1Y2F0aXZvIHkgZXN0YWRvIGNpdmlsLCBhc8OtIGNvbW8gc3UgcmVsYWNpw7NuIGNvbiBlbCBzZXhvLiBFbiBwcmltZXIgbHVnYXIsIHNlIG9ic2VydmEgcXVlIGxhIG1heW9yIHByb2JhYmlsaWRhZCBzZSBlbmN1ZW50cmEgZW4gcGVyc29uYXMgY29uIEdyYWR1YWNpw7NuIHF1ZSBlc3TDoW4gQ2FzYWRhcywgcmVmb3J6YW5kbyBsYSBhc29jaWFjacOzbiBlbnRyZSBsYSBlZHVjYWNpw7NuIHN1cGVyaW9yIHkgZWwgbWF0cmltb25pby4gUG9yIG90cm8gbGFkbywgbG9zIG5pdmVsZXMgZWR1Y2F0aXZvcyBtw6FzIGJham9zIG11ZXN0cmFuIHByb2JhYmlsaWRhZGVzIG1lbm9yZXMgZW4gdG9kb3MgbG9zIGVzdGFkb3MgY2l2aWxlcywgbG8gcXVlIHN1YnJheWEgc3UgbWVub3IgcmVwcmVzZW50YWNpw7NuLiBFbiBjdWFudG8gYSBsYSBjb21wYXJhY2nDs24gZW50cmUgZWR1Y2FjacOzbiB5IHNleG8sIGxhcyBkaXN0cmlidWNpb25lcyBlc3TDoW4gZXF1aXRhdGl2YW1lbnRlIGRpdmlkaWRhcywgY29uIHBlcXVlw7FhcyBkaWZlcmVuY2lhcyBlbiBwb3JjZW50YWplcy4gUG9yIGVqZW1wbG8sIGxvcyBob21icmVzIHRpZW5lbiB1bmEgbGlnZXJhIG1heW9yIHByb3BvcmNpw7NuIGVuIEdyYWR1YWNpw7NuIGVuIGNvbXBhcmFjacOzbiBjb24gbGFzIG11amVyZXMuIEVuIHJlbGFjacOzbiBjb24gZWwgZXN0YWRvIGNpdmlsIHkgZWwgc2V4bywgbGEgcHJvYmFiaWxpZGFkIGRlIGVzdGFyIENhc2FkbyBlcyBzaW1pbGFyIHBhcmEgaG9tYnJlcyB5IG11amVyZXMuDQoNCioqRWwgYW7DoWxpc2lzIGRlIGxhcyB0YWJsYXMgZGUgZnJlY3VlbmNpYXMgcmVsYXRpdmFzKiogbXVlc3RyYSBxdWUgbGFzIHBlcnNvbmFzIGNvbiBlZHVjYWNpw7NuIHN1cGVyaW9yIHRpZW5kZW4gYSBlc3RhciBjYXNhZGFzIG8gc29sdGVyYXMsIGNvbiB1bmEgYXNvY2lhY2nDs24gc2lnbmlmaWNhdGl2YSBlbnRyZSBlbCBtYXRyaW1vbmlvIHkgbGEgZWR1Y2FjacOzbiBzdXBlcmlvci4gQWRlbcOhcywgbGEgZGlzdHJpYnVjacOzbiBwb3Igc2V4byBlbiBjYWRhIG5pdmVsIGVkdWNhdGl2byBlcyBlcXVpbGlicmFkYSwgbG8gcXVlIGluZGljYSBpZ3VhbGRhZCBkZSBhY2Nlc28gYSBsYSBlZHVjYWNpw7NuIGF2YW56YWRhIGVudHJlIGhvbWJyZXMgeSBtdWplcmVzLg0KDQoqKkVuIGVsIGFuw6FsaXNpcyBkZWwgcGVyZmlsIENQQyoqLCBzZSBvYnNlcnZhIHVuYSB0ZW5kZW5jaWEgc2ltaWxhciBlbnRyZSBob21icmVzIHkgbXVqZXJlcyBlbiB0w6lybWlub3MgZGUgZWR1Y2FjacOzbiwgY29uIHVuYSBsaWdlcmEgcHJlZG9taW5hbmNpYSBtYXNjdWxpbmEgZW4gbml2ZWxlcyBzdXBlcmlvcmVzIGNvbW8gUGhEIHkgTWFzdGVyLiBMYSBjYXRlZ29yw61hICJtYXJnIiB0YW1iacOpbiByZWZsZWphIHVuYSBkaXN0cmlidWNpw7NuIGRlIGVkdWNhY2nDs24gc2ltaWxhciBlbnRyZSBob21icmVzIHkgbXVqZXJlcy4gUmVzcGVjdG8gYWwgZXN0YWRvIGNpdmlsIHBvciBzZXhvLCBzZSBwcmVzZW50YSB1bmEgZ3LDoWZpY2EgZGUgYmFycmFzIGFwaWxhZGFzIGhvcml6b250YWwgZG9uZGUgc2UgZGVzdGFjYSBxdWUgdGFudG8gaG9tYnJlcyBjb21vIG11amVyZXMgdGllbmVuIHVuYSBtYXlvciBwcm9wb3JjacOzbiBlbiBsb3MgZXN0YWRvcyBjaXZpbGVzICJNYXJyaWVkIiB5ICJTaW5nbGUiLCBhdW5xdWUgbGFzIG11amVyZXMgbXVlc3RyYW4gdW5hIG1heW9yIHJlcHJlc2VudGFjacOzbiBlbiAiV2lkb3ciLiBFbCBhbsOhbGlzaXMgZGUgbGFzIHBydWViYXMgZGUgaGlww7N0ZXNpcywgcmVhbGl6YWRhcyBtZWRpYW50ZSBwcnVlYmFzIGRlIENoaS1jdWFkcmFkbywgbm8gcmV2ZWxhIGRpZmVyZW5jaWFzIHNpZ25pZmljYXRpdmFzIGVuIGxhIGRpc3RyaWJ1Y2nDs24gZGUgbml2ZWxlcyBlZHVjYXRpdm9zIHkgZXN0YWRvcyBjaXZpbGVzIGVudHJlIGhvbWJyZXMsIG11amVyZXMgeSBlbCBncnVwbyAibWFyZyIuIFRhbXBvY28gc2UgZW5jdWVudHJhbiByZWxhY2lvbmVzIHNpZ25pZmljYXRpdmFzIGVudHJlIGVkdWNhY2nDs24geSBlc3RhZG8gY2l2aWwsIGVkdWNhY2nDs24geSBzZXhvLCBuaSBlc3RhZG8gY2l2aWwgeSBzZXhvLCBsbyBxdWUgc3VnaWVyZSBxdWUgZXN0YXMgdmFyaWFibGVzIHBhcmVjZW4gc2VyIGluZGVwZW5kaWVudGVzIGVudHJlIHPDrS4NCg0KDQojIyMgQ29udGluZ2VuY2lhcw0KDQpgYGB7ciBUYWJsYXNfZGVfQ29udGluZ2VuY2lhLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCg0KYWRkbWFyZ2lucyh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24sIEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzKSkNCmFkZG1hcmdpbnModGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uLCBHYXN0b3NfRGF0YXNldCRzZXgpKQ0KYWRkbWFyZ2lucyh0YWJsZShHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cywgR2FzdG9zX0RhdGFzZXQkc2V4KSkNCmBgYA0KDQoNCiMjIyBQcm9iYWJpbGlkYWRlcw0KDQpgYGB7ciBUYWJsYXNfZGVfUHJvYmFiaWxpZGFkZXMsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KDQphZGRtYXJnaW5zKHByb3AudGFibGUodGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uICwgR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMpKSoxMDApDQphZGRtYXJnaW5zKHByb3AudGFibGUodGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uLCBHYXN0b3NfRGF0YXNldCRzZXgpKSoxMDApDQphZGRtYXJnaW5zKHByb3AudGFibGUodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMsIEdhc3Rvc19EYXRhc2V0JHNleCkpKjEwMCkNCmBgYA0KDQoNCiMjIyBGcmVjdWVuY2lhcyBbQ1BGIHkgQ1BDXQ0KDQpgYGB7ciBUYWJsYXNfZGVfRnJlY3VlbmNpYXNfQ29uZGljaW9uYWRhcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQoNCnJvdW5kKGFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24sIEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzKSwgMSkqMTAwLCAyKSwgMikNCnJvdW5kKGFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24sIEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzKSwgMikqMTAwLCAxKSwgMikNCg0Kcm91bmQoYWRkbWFyZ2lucyhwcm9wLnRhYmxlKHRhYmxlKEdhc3Rvc19EYXRhc2V0JEVkdWNhdGlvbiwgR2FzdG9zX0RhdGFzZXQkc2V4KSwgMSkqMTAwLCAyKSwgMikNCnJvdW5kKGFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24sIEdhc3Rvc19EYXRhc2V0JHNleCksIDIpKjEwMCwgMSksIDIpDQoNCnJvdW5kKGFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cywgR2FzdG9zX0RhdGFzZXQkc2V4KSwgMSkqMTAwLCAyKSwgMikNCnJvdW5kKGFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cywgR2FzdG9zX0RhdGFzZXQkc2V4KSwgMikqMTAwLCAxKSwgMikNCmBgYA0KDQoNCiMjIyBQZXJmaWxlcyBbQ1BGIHkgQ1BDXQ0KDQpgYGB7ciBHcmFmaWNvc19kZV9QZXJmaWxlcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpjb2xvcmVzIDwtIGMoInJlZCIsICJibHVlIiwgImdyZWVuIiwgInB1cnBsZSIsICJvcmFuZ2UiKQ0KDQpwbG90Y3QodGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uLCBHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cyksInJvdyIsIGNvbCA9IGNvbG9yZXMpDQpwbG90Y3QodGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uLCBHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cyksImNvbCIsIGNvbCA9IGNvbG9yZXMpDQoNCnBsb3RjdCh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24sIEdhc3Rvc19EYXRhc2V0JHNleCksInJvdyIsIGNvbCA9IGNvbG9yZXMpDQpwbG90Y3QodGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uLCBHYXN0b3NfRGF0YXNldCRzZXgpLCJjb2wiLCBjb2wgPSBjb2xvcmVzKQ0KDQpwbG90Y3QodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMsIEdhc3Rvc19EYXRhc2V0JHNleCksInJvdyIsIGNvbCA9IGNvbG9yZXMpDQpwbG90Y3QodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMsIEdhc3Rvc19EYXRhc2V0JHNleCksImNvbCIsIGNvbCA9IGNvbG9yZXMpDQpgYGANCg0KDQojIyMgUHJ1ZWJhcyBkZSBIaXDDs3Rlc2lzDQoNCmBgYHtyIFBydWViYXNfZGVfQ29ycmVzcG9uZGVuY2lhLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCg0KY2hpc3EudGVzdCh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24sIEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzKSkNCmNoaXNxLnRlc3QodGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uLCBHYXN0b3NfRGF0YXNldCRzZXgpKQ0KY2hpc3EudGVzdCh0YWJsZShHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cywgR2FzdG9zX0RhdGFzZXQkc2V4KSkNCmBgYA0KDQojIyMgQUMgUGFyZWphIMOabmljYQ0KDQojIyMgQ29udGluZ2VuY2lhcyB5IFJlc2lkdWFsZXMgW0ZBRi1JTUNdDQoNCmBgYHtyIENvbnRpbmdlbmNpYXNfeV9SZXNpZHVhbGVzLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCg0KY2hpc3EudGVzdCh0YWJsZShHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cywgR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uKSkkb2JzZXJ2ZWQNCmNoaXNxLnRlc3QodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMsIEdhc3Rvc19EYXRhc2V0JEVkdWNhdGlvbikpJGV4cGVjdGVkIA0KY2hpc3EudGVzdCh0YWJsZShHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cywgR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uKSkkcmVzaWR1YWxzDQpjaGlzcS50ZXN0KHRhYmxlKEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzLCBHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pKSRzdGRyZXMNCmBgYA0KDQoNCiMjIyBDb250cmlidWNpb25lcyBbRkFGLUlNQ10NCg0KYGBge3IgQ29udHJpYnVjaW9uZXNfUi1VUiwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQoNCmNoaXNxLnRlc3QodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMsIEdhc3Rvc19EYXRhc2V0JEVkdWNhdGlvbikpJHJlc2lkdWFsc14yL2NoaXNxLnRlc3QodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMsIEdhc3Rvc19EYXRhc2V0JEVkdWNhdGlvbikpJHN0YXRpc3RpYyoxMDANCmBgYA0KDQoNCiMjIyBDb3JyZXNwb25kZW5jaWEgU2ltcGxlIFVuaWRpbWVuc2lvbmFsIFtGQUYtSU1DXQ0KYGBge3IgQmlwbG90X0NvcnJlc3BvbmRlbmNpYV9TaW1wbGVfUi1VUiwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQoNCkNBKHRhYmxlKEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzLCBHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pLCBncmFwaCA9IEZBTFNFKSRlaWcNCkNBKHRhYmxlKEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzLCBHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pLCBncmFwaCA9IEZBTFNFKSRjb2wNCkNBKHRhYmxlKEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzLCBHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pLCBncmFwaCA9IEZBTFNFKSRyb3cNCmBgYA0KDQoNCiMjIDMuMy4gQ29ycmVzcG9uZGVuY2lhcyBNw7psdGlwbGVzey50YWJzZXQgLnRhYnNldC1waWxsc30NCg0KUmVjdXBlcmFuZG8gZGUgbnVldm8gZWwgdHJhYmFqbyBkZSAoRMOtYXogTW9yYWxlcyAmIE1vcmFsZXMgUml2ZXJhLCAyMDEyKSBzZSBkaWNlIHF1ZSBlbCBBQ1Mgc2UgcHVlZGUgZXh0ZW5kZXIgZGVzZGUgdGFibGFzIGRlIGNvbnRpbmdlbmNpYSBoYWNpYSB0YWJsYXMgZGlzeXVudGl2YXMgY29tcGxldGFzLiBFbiBlc3RhcyBsYXMgZmlsYXMgc29uIGxvcyBvYmpldG9zIGEgbG9zIGN1YWxlcyBzZSBsZXMgcmVnaXN0cmFuIGNhcmFjdGVyw61zdGljYXMgZGUgaW50ZXLDqXMgYSB0cmF2w6lzIGRlIGxhcyBjb2x1bW5hcyBxdWUgY29tcGlsYW4gbGFzIG1vZGFsaWRhZGVzIGRlIGxhcyB2YXJpYWJsZXMgY2F0ZWfDs3JpY2FzIGVzdHVkaWFkYXMgZGUgZWxsb3MuIEFzw60sIGVsIGFuw6FsaXNpcyBkZSBjb3JyZXNwb25kZW5jaWFzIG3Dumx0aXBsZSAoQUNNKSBlcyBlbCBBQyBhcGxpY2FkbyBhIHVuYSB0YWJsYSBkaXN5dW50aXZhIGNvbXBsZXRhLiBQb3IgbG8gdGFudG8sIGVuIGVsIEFDTSB1bmEgdmFyaWFibGUgY2F0ZWfDs3JpY2EgYXNpZ25hIGEgY2FkYSBvYmpldG8gZGUgdW5hIHBvYmxhY2nDs24gdW5hIG1vZGFsaWRhZCBhIHRyYXbDqXMgZGUgbGEgY3VhbCBsb3MgcGFydGljaW9uYSBleGNsdXNpdmEgeSBleGhhdXN0aXZhbWVudGUuDQoNCkVzdGEgc2VjY2nDs24gZXMgZGVzYXJyb2xsYWRhIGNvbW8gYWx0ZXJuYXRpdmEgZGUgY29tcGxldGl0dWQgZGVsIGFuw6FsaXNpcyBkZSBjb3JyZXNwb25kZW5jaWFzIHNpbXBsZXMgcXVlIGVuIGxhIHNlY2Npw7NuIDMuMiBmdWUgaW5hcHJlY2lhYmxlIGRlYmlkbyBhIGxhIHVuaWRpbWVuc2lvbmFsaWRhZCBkZSBsYSByZXByZXNlbnRhY2nDs24gZGUgbG9zIGRhdG9zIGEgbml2ZWwgZGUgcHJveWVjY2nDs24gZGUgbGFzIHZhcmlhYmxlcyBjYXRlZ8OzcmljYXMgcXVlIGN1bXBsaWVyb24gbGEgaGlww7N0ZXNpcyBkZSBkZXBlbmRlbmNpYS4gUG9yIGxvIHRhbnRvLCBkZWwgdHJhdGFtaWVudG8gY29uanVudG8gZGUgdG9kYXMgbGFzIHZhcmlhYmxlcyBjYXRlZ8OzcmljYXMgc2UgZXNwZXJhIG9idGVuZXIgdW5hIHJlcHJlc2VudGFjacOzbiBlbiBlbCBwcmltZXIgcGxhbm8gZmFjdG9yaWFsLg0KDQoqKlBsYW50ZWFtaWVudG8gZGVsIFByb2JsZW1hKioNCg0KQ29uIGJhc2UgZW4gbGFzIHZhcmlhYmxlcyBjdWFsaXRhdGl2YXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlc2NyaXRvIGVuIGxhIHNlY2Npw7NuIDIgc2UgZGVtYW5kYSBkZXNhcnJvbGxhciBlbCBhbsOhbGlzaXMgZGUgY29ycmVzcG9uZGVuY2lhcyBtw7psdGlwbGVzIHBhcmEgbG9ncmFyIHVuYSByZXByZXNlbnRhY2nDs24gZ3LDoWZpY2EgZW4gZWwgcHJpbWVyIHBsYW5vIGZhY3RvcmlhbCwgZGViaWRvIGEgbGEgaW1wb3NpYmlsaWRhZCBkZSBsb2dyYXJsbyBlbiBlbCBhbsOhbGlzaXMgZGUgY29ycmVzcG9uZGVuY2lhcyBzaW1wbGUuDQoNCioqRGVzYXJyb2xsbyBkZWwgQW7DoWxpc2lzKioNCg0KKipFbiBlbCBhbsOhbGlzaXMgQUNNIGRlIHBhcmVqYSDDum5pY2EqKiwgc2Ugb2JzZXJ2YSB1bmEgZGlzdHJpYnVjacOzbiBkZSBuaXZlbGVzIGVkdWNhdGl2b3MgcG9yIHNleG8uIFRhbnRvIGhvbWJyZXMgY29tbyBtdWplcmVzIHRpZW5lbiB1bmEgcHJvcG9yY2nDs24gc2lnbmlmaWNhdGl2YSBlbiBsb3Mgbml2ZWxlcyBkZSBlZHVjYWNpw7NuICJHcmFkdWF0aW9uIiwgc2VndWlkb3MgZGUgIk1hc3RlciIgeSAiUGhEIi4gTGEgZGlzdHJpYnVjacOzbiBlbnRyZSBob21icmVzIHkgbXVqZXJlcyBlcyBzaW1pbGFyLCBjb24gdW5hIGxpZ2VyYSBwcmVkb21pbmFuY2lhIG1hc2N1bGluYSBlbiBsb3Mgbml2ZWxlcyBzdXBlcmlvcmVzIGRlIGVkdWNhY2nDs24uIExhIGNhdGVnb3LDrWEgIm1hcmciIG11ZXN0cmEgdW5hIGRpc3RyaWJ1Y2nDs24gZGUgZWR1Y2FjacOzbiBzaW1pbGFyIGVudHJlIGhvbWJyZXMgeSBtdWplcmVzLiBFbiBjdWFudG8gYWwgZXN0YWRvIGNpdmlsIHBvciBzZXhvLCBzZSBkZXN0YWNhIHF1ZSB1bmEgcHJvcG9yY2nDs24gbWF5b3IgZGUgaG9tYnJlcyBzZSBpZGVudGlmaWNhIGNvbW8gIk1hcnJpZWQiLCBtaWVudHJhcyBxdWUgbGFzIG11amVyZXMgdGllbmVuIHVuYSBtYXlvciBwcm9wb3JjacOzbiBlbiBsYSBjYXRlZ29yw61hICJXaWRvdyIuIFNpbiBlbWJhcmdvLCBlbiBnZW5lcmFsLCB0YW50byBob21icmVzIGNvbW8gbXVqZXJlcyB0aWVuZW4gdW5hIG1heW9yIHJlcHJlc2VudGFjacOzbiBlbiBsb3MgZXN0YWRvcyBjaXZpbGVzICJNYXJyaWVkIiB5ICJTaW5nbGUiLiBMYXMgcHJ1ZWJhcyBkZSBoaXDDs3Rlc2lzIHJlYWxpemFkYXMgcGFyYSBldmFsdWFyIGxhIGluZGVwZW5kZW5jaWEgZW50cmUgZWR1Y2FjacOzbiB5IGVzdGFkbyBjaXZpbCBpbmRpY2FuIHF1ZSBubyBoYXkgZXZpZGVuY2lhIHN1ZmljaWVudGUgcGFyYSByZWNoYXphciBsYSBoaXDDs3Rlc2lzIG51bGEuIEVzdG8gc3VnaWVyZSBxdWUgbm8gaGF5IHVuYSByZWxhY2nDs24gc2lnbmlmaWNhdGl2YSBlbnRyZSBlc3RhcyB2YXJpYWJsZXMgZW4gZWwgY29uanVudG8gZGUgZGF0b3MuDQoNCioqQ29udHJpYnVjaW9uZXMgZGUgVmFyaWFibGVzIGEgbGEgRGltZW5zacOzbiAxOioqIExhIGdyw6FmaWNhIG11ZXN0cmEgbGFzIGNvbnRyaWJ1Y2lvbmVzIHBvcmNlbnR1YWxlcyBkZSBsYXMgdmFyaWFibGVzIGNhdGVnw7NyaWNhcyBhIGxhIHByaW1lcmEgZGltZW5zacOzbiBkZSB1biBBbsOhbGlzaXMgZGUgQ29ycmVzcG9uZGVuY2lhcyBNw7psdGlwbGVzIChNQ0EpLCBxdWUgcmVwcmVzZW50YSBlbCAxMiUgZGUgbGEgdmFyaWFiaWxpZGFkIHRvdGFsIGVuIGxvcyBkYXRvcy4gU2UgZGVzdGFjYW4gbGFzIGNvbnRyaWJ1Y2lvbmVzIHNpZ25pZmljYXRpdmFzIGRlIGNhdGVnb3LDrWFzIGNvbW8gIm5ldXRyYWwiLCAid29tZW4iLCAibWFuIiwgInNhdGlzZmllZCIgeSAidmVyeSBkaXNzYXRpc2ZpZWQiLCBpbmRpY2FuZG8gbGEgaW1wb3J0YW5jaWEgZGUgbGEgc2F0aXNmYWNjacOzbiBhbCBzZXJ2aWNpbyBwcmVzdGFkbyB5ICBnw6luZXJvLg0KDQoqKkVzdGEgdmlzdWFsaXphY2nDs24gcHJlc2VudGEgbGEgdGFibGEgZGUgY29udGluZ2VuY2lhcyBvYnNlcnZhZGEgeSBlc3BlcmFkYSoqLCBhc8OtIGNvbW8gbG9zIHJlc2lkdWFsZXMgeSBsb3MgcmVzaWR1YWxlcyBlc3RhbmRhcml6YWRvcyBlbnRyZSBkb3MgdmFyaWFibGVzOiBlc3RhZG8gY2l2aWwgeSBuaXZlbCBkZSBlZHVjYWNpw7NuLg0KDQoqKlRhYmxhIGRlIENvbnRpbmdlbmNpYXMgT2JzZXJ2YWRhOioqIE11ZXN0cmEgZWwgY29udGVvIHJlYWwgZGUgY29tYmluYWNpb25lcyBlbnRyZSBlc3RhZG8gY2l2aWwgeSBuaXZlbCBkZSBlZHVjYWNpw7NuLg0KDQoqKlRhYmxhIGRlIENvbnRpbmdlbmNpYXMgRXNwZXJhZGE6KiogTXVlc3RyYSBsYXMgZnJlY3VlbmNpYXMgZXNwZXJhZGFzIHNpIG5vIGh1YmllcmEgYXNvY2lhY2nDs24gZW50cmUgbGFzIHZhcmlhYmxlcy4NCg0KKipSZXNpZHVhbGVzOioqIEluZGljYW4gbGEgZGlmZXJlbmNpYSBlbnRyZSBsb3MgdmFsb3JlcyBvYnNlcnZhZG9zIHkgbG9zIGVzcGVyYWRvcy4gUmVzaWR1YWxlcyBncmFuZGVzIChwb3NpdGl2b3MgbyBuZWdhdGl2b3MpIHN1Z2llcmVuIGRlc3ZpYWNpb25lcyBzaWduaWZpY2F0aXZhcyANCg0KKipSZXNpZHVhbGVzIEVzdGFuZGFyaXphZG9zOioqIFNvbiBsb3MgcmVzaWR1YWxlcyBkaXZpZGlkb3MgcG9yIGxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBkZSBsb3MgcmVzaWR1YWxlcyBlc3BlcmFkb3MuIFZhbG9yZXMgbWF5b3JlcyBhIDIgZW4gbWFnbml0dWQgc29uIHNpZ25pZmljYXRpdm9zLg0KDQoqKkludGVycHJldGFjacOzbjoqKiBMYSB0YWJsYSBkZSBjb250aW5nZW5jaWFzIHkgbG9zIHJlc2lkdWFsZXMgcHJvcG9yY2lvbmFuIGluZm9ybWFjacOzbiBzb2JyZSBsYSBhc29jaWFjacOzbiBlbnRyZSBlc3RhZG8gY2l2aWwgeSBuaXZlbCBkZSBlZHVjYWNpw7NuLiBMYXMgY29tYmluYWNpb25lcyBjb24gcmVzaWR1YWxlcyBzaWduaWZpY2F0aXZvcyBpbmRpY2FuIHJlbGFjaW9uZXMgZnVlcnRlcyBxdWUgcG9kcsOtYW4gc2VyIGltcG9ydGFudGVzIHBhcmEgZW50ZW5kZXIgZWwgY29tcG9ydGFtaWVudG8gZGUgbG9zIGluZGl2aWR1b3MgZW4gZWwgY29udGV4dG8gZGVsIGVzdHVkaW8uIExvcyByZXN1bHRhZG9zIGRlIGxhcyBwcnVlYmFzIGRlIGhpcMOzdGVzaXMgaW5kaWNhbiBxdWUgbm8gaGF5IHVuYSByZWxhY2nDs24gc2lnbmlmaWNhdGl2YSBlbnRyZSBlbCBuaXZlbCBkZSBlZHVjYWNpw7NuIHkgZWwgZXN0YWRvIGNpdmlsLCBlbCBuaXZlbCBkZSBlZHVjYWNpw7NuIHkgZWwgc2V4bywgbmkgZWwgZXN0YWRvIGNpdmlsIHkgZWwgc2V4by4NCg0KKipDb250cmlidWNpb25lcyBGQUYgSU1DIHkgQW7DoWxpc2lzIGRlIENvcnJlc3BvbmRlbmNpYSBTaW1wbGUgVW5pZGltZW5zaW9uYWwgRkFGIElNQzoqKiBMYSB0YWJsYSBkZSBjb250cmlidWNpb25lcywgZGVyaXZhZGEgZGVsIHRlc3QgQ2hpLWN1YWRyYWRvLCBtdWVzdHJhIGxvcyByZXNpZHVvcyBlc3RhbmRhcml6YWRvcyBhbCBjdWFkcmFkbywgbm9ybWFsaXphZG9zIHBvciBlbCBlc3RhZMOtc3RpY28gY2hpLWN1YWRyYWRvLiBEZXN0YWNhbiBhbGd1bmFzIGNvbnRyaWJ1Y2lvbmVzIHNpZ25pZmljYXRpdmFzOg0KDQoiWU9MTyIgeSAiUGhEIiAoMjIuNCksIHN1Z2lyaWVuZG8gdW5hIGZ1ZXJ0ZSBkZXN2aWFjacOzbiANCiJWaXVkbyIgeSAiQsOhc2ljbyIgKDIwLjQpLCBpbmRpY2FuZG8gdW5hIGNvbnRyaWJ1Y2nDs24gbm90YWJsZS4NCiJTb2xvIiB5ICIywrogQ2ljbG8iICgxOC4zKSwgbW9zdHJhbmRvIHVuYSBmdWVydGUgZGVzdmlhY2nDs24uDQoNCioqQW7DoWxpc2lzIGRlIENvcnJlc3BvbmRlbmNpYToqKiBWYWxvcmVzIFByb3Bpb3MgeSBWYXJpYW56YTogTGFzIGRvcyBwcmltZXJhcyBkaW1lbnNpb25lcyBleHBsaWNhbiBsYSBtYXlvciBwYXJ0ZSBkZSBsYSB2YXJpYW56YSAoODcuMjAlKSwgbG8gcXVlIGluZGljYSBxdWUgbGEgYXNvY2lhY2nDs24gZW50cmUgZWwgZXN0YWRvIGNpdmlsIHkgbGEgZWR1Y2FjacOzbiBzZSBwdWVkZSBjYXB0dXJhciBlbiBkb3MgZGltZW5zaW9uZXMgcHJpbmNpcGFsZXMuDQoNCioqQ29vcmRlbmFkYXMsIENvbnRyaWJ1Y2lvbmVzIHkgQ29zMiAoQ29sdW1uYXMpOioqIERlc3RhY2FuIG5pdmVsZXMgZWR1Y2F0aXZvcyBjb21vICIywrogQ2ljbG8iIHkgIkLDoXNpY28iIHBvciBzdXMgYWx0YXMgY29udHJpYnVjaW9uZXMgeSBidWVuYSByZXByZXNlbnRhY2nDs24gZW4gbGFzIGRpbWVuc2lvbmVzLg0KDQoqKkNvb3JkZW5hZGFzLCBDb250cmlidWNpb25lcyB5IENvczIgKEZpbGFzKToqKiBFbCBlc3RhZG8gY2l2aWwgIlNvbG8iIHkgIllPTE8iIG11ZXN0cmFuIGZ1ZXJ0ZXMgY29udHJpYnVjaW9uZXMgeSByZXByZXNlbnRhY2nDs24gZW4gZGlmZXJlbnRlcyBkaW1lbnNpb25lcywgZXNwZWNpYWxtZW50ZSBlbiBsYSBEaW0gMyB5IERpbSAxLCByZXNwZWN0aXZhbWVudGUuDQoNCioqSW50ZXJwcmV0YWNpw7NuIEdlbmVyYWw6KiogRWwgYW7DoWxpc2lzIHJldmVsYSBhc29jaWFjaW9uZXMgc2lnbmlmaWNhdGl2YXMgZW50cmUgY2llcnRvcyBlc3RhZG9zIGNpdmlsZXMgeSBuaXZlbGVzIGVkdWNhdGl2b3MuIFBvciBlamVtcGxvLCBlbCBlc3RhZG8gIllPTE8iIGVzdMOhIGZ1ZXJ0ZW1lbnRlIGFzb2NpYWRvIGNvbiBuaXZlbGVzIGVkdWNhdGl2b3MgbcOhcyBhbHRvcywgY29tbyAiUGhEIiwgbWllbnRyYXMgcXVlIGVsIGVzdGFkbyAiVml1ZG8iIG11ZXN0cmEgYXNvY2lhY2lvbmVzIG5vdGFibGVzIGNvbiBuaXZlbGVzIGVkdWNhdGl2b3MgbcOhcyBiYWpvcywgY29tbyAiQsOhc2ljbyIuIEVzdG9zIHJlc3VsdGFkb3Mgc3VnaWVyZW4gcGF0cm9uZXMgZGlzdGludGl2b3MgZGUgbG9ncm8gZWR1Y2F0aXZvIGVuIGRpZmVyZW50ZXMgZXN0YWRvcyBjaXZpbGVzLg0KDQoNCiMjIyBBQ00NCg0KYGBge3IgQW5hbGlzaXNfQ29ycmVzcG9uZGVuY2lhc19NdWx0aXBsZXMgLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnJvdW5kKE1DQShHYXN0b3NfRGF0YXNldFsxOjQwMCwgLWMoMSwyLDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMildLCBncmFwaCA9IEZBTFNFKSRlaWcsMikNCmBgYA0KDQoNCiMjIyBCaXBsb3QgQUNNDQoNCmBgYHtyIEJpcGxvdF9BQ00gLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCmZ2aXpfbWNhX2JpcGxvdChNQ0EoR2FzdG9zX0RhdGFzZXRbMTo0MDAsIC1jKDEsMiw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjIpXSwgZ3JhcGggPSBGQUxTRSksIHJlcGVsID0gVFJVRSkNCmBgYA0KDQoNCiMjIyBDYWxpZGFkIGRlIFJlcHJlc2VudGFjacOzbg0KDQpgYGB7ciBDYWxpZGFkX2RlX1JlcHJlc2VudGFjaW9uICwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpmdml6X21jYV92YXIoTUNBKEdhc3Rvc19EYXRhc2V0WzE6NDAwLCAtYygxLDIsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIyKV0sIGdyYXBoID0gRkFMU0UpLCBjb2wudmFyID0iY29zMiIsIGdyYWRpZW50LmNvbHMgPSBjKCIjMDBBRkJCIiwgIiNFN0I4MDAiLCAiI0ZDNEUwNyIpLCByZXBlbCA9IFRSVUUpDQpgYGANCg0KDQojIyMgQ29udHJpYnVjaW9uZXMNCg0KYGBge3IgY29udHJpYnVjaW9uZXMgLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCmZ2aXpfY29udHJpYihNQ0EoR2FzdG9zX0RhdGFzZXRbMTo0MDAsIC1jKDEsMiw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjIpXSwgZ3JhcGggPSBGQUxTRSksIGNob2ljZSA9ICJ2YXIiLCBheGVzID0gMSwgdG9wID0gMTUpDQpgYGANCg0KDQojIyMgQmlwbG90IGRlIENvbnRyaWJ1Y2lvbmVzDQoNCmBgYHtyIEJpcGxvdF9kZV9Db250cmlidWNpb25lcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpmdml6X21jYV92YXIoTUNBKEdhc3Rvc19EYXRhc2V0WzE6NDAwLCAtYygxLDIsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIyKV0sIGdyYXBoID0gRkFMU0UpLCBjb2wudmFyID0iY29udHJpYiIsIGdyYWRpZW50LmNvbHMgPSBjKCIjMDBBRkJCIiwgIiNFN0I4MDAiLCAiI0ZDNEUwNyIpLCByZXBlbCA9IFRSVUUpDQpgYGANCg0KDQojIEZhc2UgNCBbQW7DoWxpc2lzIGRlIFJlZ3Jlc2nDs25dDQoNClNlIHNhYmUgcXVlIGVsIGFuw6FsaXNpcyBkZSByZWdyZXNpw7NuIGVzIHVuIHByb2Nlc28gZGUgbmF0dXJhbGV6YSBlc3RhZMOtc3RpY2EgdXNhZG8gcGFyYSBlc3RpbWFyIHJlbGFjaW9uZXMgZW50cmUgdmFyaWFibGVzICh1bmEgZGVwZW5kaWVudGUgbyBkZSByZXNwdWVzdGEgeSBvdHJhcyBpbmRlcGVuZGllbnRlcyBvIHByZWRpY3RvcmFzKSBhIHRyYXbDqXMgZGUgdMOpY25pY2FzIGRlIG1vZGVsYWRvIHkgYW7DoWxpc2lzIHF1ZSBwZXJtaXRlbiBlbnRlbmRlciBjw7NtbyBlbCB2YWxvciBkZSBsYSB2YXJpYWJsZSBkZXBlbmRpZW50ZSB2YXLDrWEgYWwgY2FtYmlhciBlbCB2YWxvciBkZSB1bmEgbyBtw6FzIHZhcmlhYmxlcyBpbmRlcGVuZGllbnRlcy4gTG9zIG1vZGVsb3MgZGUgYW7DoWxpc2lzIGRlIHJlZ3Jlc2nDs24gZXN0dWRpYWRvcyBhIHRyYXbDqXMgZGUgZXN0ZSBkb2N1bWVudG8gc2Vyw6FuOiBsaW5lYWwgKHNpbXBsZSB5IG3Dumx0aXBsZSkgeSBsb2fDrXN0aWNvLCBlbGxvcyBlbnRlbmRpZG9zIGNvbW8gY2Fzb3MgZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBnZW5lcmFsaXphZG8uDQoNCiMjIDQuMS4gT2JqZXRpdm9zDQoNClJlYWxpemFyIHVuIGFuw6FsaXNpcyBkZXRhbGxhZG8gdXRpbGl6YW5kbyB0w6ljbmljYXMgZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlLCByZWdyZXNpw7NuIGxpbmVhbCBtw7psdGlwbGUgeSByZWdyZXNpw7NuIGxvZ8Otc3RpY2Egc2ltcGxlIHBhcmEgY29tcHJlbmRlciBsYSByZWxhY2nDs24gZW50cmUgbGFzIHZhcmlhYmxlcyBpbmRlcGVuZGllbnRlcyB5IGRlcGVuZGllbnRlcyBlbiB1biBjb25qdW50byBkZSBkYXRvcyBlc3BlY8OtZmljby4NCg0KIyMgNC4yLiBSZWdyZXNpw7NuIExpbmVhbCBTaW1wbGUgey50YWJzZXQgLnRhYnNldC1waWxsc30NCg0KRXN0ZSBtb2RlbG8sIHF1ZSBldmVudHVhbG1lbnRlIHNlcsOhIGxsYW1hZG8gZW4gZXN0ZSBlc3R1ZGlvIGNvbW8gKipSTFMqKiwgZXN0w6EgY29uZm9ybWFkbyBwb3IgZG9zIHZhcmlhYmxlcyBlc3RhZMOtc3RpY2FzICR4JCB5ICRZJCwgZG9uZGUgJFkkIHNlIGFzdW1lIHF1ZSBlc3TDoSBpbmZsdWlkYSBwb3IgJHgkLkxhIHJlbGFjacOzbiBlc3TDoSBkYWRhIG1hdGVtw6F0aWNhbWVudGUgcG9yOg0KDQpkb25kZToNCg0K4oCiJFkkOmVzIHVuYSB2YXJpYWJsZSBkZSByZXNwdWVzdGEgZGUgbmF0dXJhbGV6YSBhbGVhdG9yaWEuDQoNCuKAoiR4JDplcyB1bmEgdmFyaWFibGUgcHJlZGljdG9yYSBkZSBuYXR1cmFsZXphIG5vIGFsZWF0b3JpYS4NCg0K4oCiJM61JDplcyB1bmEgdmFyaWFibGUgYWxlYXRvcmlhIG5vIG9ic2VydmFibGUuDQoNCuKAoiTOsjAkIHkgJM6yMSQ6IHNvbiBwYXLDoW1ldHJvcyByZWFsZXMgZGVzY29ub2NpZG9zIGRlbCBtb2RlbG8uDQoNCkVuIGNvbXBhcmFjacOzbiBjb24gZWwgbW9kZWxvIGxpbmVhbCBzaW1wbGUgZGV0ZXJtaW7DrXN0aWNvICR5JD0kzrIwJCskzrIxJCR4JCAsZWwgcHJvYmFibMOtc3RpY28gc3Vwb25lIHF1ZSBlbCB2YWxvciBlc3BlcmFkbyBkZSAkWSQgZXMgdW5hIGZ1bmNpw7NuIGxpbmVhbCBkZSAkeCQsIHBlcm8gcXVlIGNvbiAkeCQgZmlqYSwgbGEgdmFyaWFibGUgJFkkIGRpZmllcmUgZGUgc3UgdmFsb3IgZXNwZXJhZG8gZW4gdW5hIGNhbnRpZGFkIGFsZWF0b3JpYSAkzrUkLCBBZGVtw6FzLCBsYSBjYW50aWRhZCAkzrUkIGVuIGxhIGVjdWFjacOzbiBkZSBtb2RlbG8gJCgxKSQgc2Ugc3Vwb25lIG5vcm1hbG1lbnRlIGRpc3RyaWJ1aWRhIGNvbiAkRSQkKM61KSQ9JDAkIHkgJFYkJCjOtSkkPSTPg14yJC4gTGEgdmFyaWFibGUgYWxlYXRvcmlhICTOtSQgdGFtYmnDqW4gc2UgY29ub2NlIGNvbW8gdMOpcm1pbm8gZGUgZXJyb3IgYWxlYXRvcmlvIG8gZGVzdmlhY2nDs24gYWxlYXRvcmlhIGVuIGVsIG1vZGVsby4NCg0KQ29tcGxlbWVudGFyaWFtZW50ZSwgY2FzaSBudW5jYSBzZXLDoW4gY29ub2NpZG9zIGxvcyB2YWxvcmVzICTOsjAkICwkzrIxJCB5ICTPg14yJCwgYSBjYW1iaW8gZXN0YXLDoSBkaXNwb25pYmxlIHVuYSBtdWVzdHJhIGRlIGRhdG9zIGNvbXB1ZXN0YSBkZSBwYXJlcyBvcmRlbmFkb3MgJCh4MSx5MSkkLi4uJCh4bix5bikkIGNvbiBsYSBxdWUgbG9zIHBhcsOhbWV0cm9zIGRlbCBtb2RlbG8geSBsYSBsw61uZWEgZGUgcmVncmVzacOzbiB2ZXJkYWRlcmEgcHVlZGVuIHNlciBlc3RpbWFkb3MsIGJham8gZWwgc3VwdWVzdG8gZGUgaW5kZXBlbmRlbmNpYSBkZSBsYXMgb2JzZXJ2YWNpb25lcy4gQXPDrSwgJHlpJCBlcyBlbCB2YWxvciBvYnNlcnZhZG8gZGUgdW5hIHZhcmlhYmxlIGFsZWF0b3JpYSAkWWkkLCBkb25kZSAkWWkkPSTOsjAkKyTOsjEkJHhpJCskzrVpJCB5IGxhcyAkbiQgZGVzdmlhY2lvbmVzICTOtTEkLCAkzrUyJCwgLi4uLCAkzrVuJCBzb24gdmFyaWFibGVzIGluZGVwZW5kaWVudGVzLg0KDQoNCioqUGxhbnRlYW1pZW50byBkZWwgUHJvYmxlbWEqKg0KDQpDb24gYmFzZSBlbiBlbCBjb25qdW50byBkZSBkYXRvcyBkZXNjcml0byBlbiBsYSBbc2VjY2nDs24gMS4yLl0oI3NlYzFfMikgc2UgZm9ybXVsYXLDoSB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIHBhcmEgZXN0dWRpYXIgbGEgcmVsYWNpw7NuIGxpbmVhbCBzdXB1ZXN0YSBlbnRyZSBsYXMgdmFyYWlibGVzIGRlZmluaWRhcyBwb3IgbG9zIGNhbXBvczogKipJbmNvbWUqKiAodmFyaWFibGUgcHJlZGljdG9yYSkgeSAqKk1udFdpbmVzKiogKHZhcmlhYmxlIHByZWRpY2hhKS4NCg0KKipEZXNhcnJvbGxsbyBkZWwgQW5hbGlzaXMqKg0KDQoqKlJlc3VtZW4gRXN0YWRpc3RpY28gUmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgbGFzIHZhcmlhYmxlcyBwb3IgZXN0dWRpYXIqKg0KDQojIyMgUkVTVU1FTiBFU1RBRElTVElDTyBERSBMQSBWQVJJQUJMRSBJTkNPTUUNCg0KYGBge3IgUmVzdW1lbl9lc3RhZGlzdGljb19JbmNvbWUsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCRJbmNvbWUpDQpgYGANCg0KIyMjIFJlc3VtZW4gZGUgSW5jb21lDQoNCmBgYHtyIHJlc3VtZW5fSW5jb21lLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkSW5jb21lKQ0KYm94cGxvdChHYXN0b3NfRGF0YXNldCRJbmNvbWUsIG1haW4gPSAiRGlhZ3JhbWEgZGUgQ2FqYSBkZSBJbmNvbWUiLCBjb2wgPSBjKCJvcmFuZ2UiKSkNCmBgYA0KDQojIyMgUmVzdW1lbiBkZSBNbnRXaW5lcw0KDQpgYGB7ciByZXN1bWVuX01udFdpbmVzLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkTW50V2luZXMpDQpib3hwbG90KEdhc3Rvc19EYXRhc2V0JE1udFdpbmVzLCBtYWluID0gIkRpYWdyYW1hIGRlIENhamEgZGUgTW50V2luZXMiLCBjb2wgPSBjKCJnb2xkIikpDQpgYGANCg0KIyMjIERpYWdyYW1hIGRlIERpc3BlcnNpw7NuIEluY29tZSB2cy4gTW50V2luZXMNCg0KYGBge3IgZGlzcGVyc2lvbl9JbmNvbWUsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KcGxvdChHYXN0b3NfRGF0YXNldCRJbmNvbWUsIEdhc3Rvc19EYXRhc2V0JE1udFdpbmVzLCBtYWluID0gIkRpYWdyYW1hIGRlIERpc3BlcnNpw7NuIEluY29tZSB2cy4gTW50V2luZXMiKQ0KYGBgDQoNCiMjIyBEaWFncmFtYXMgVG90YWxlcyBkZSBEaXNwZXJzacOzbg0KDQpgYGB7ciBkaXNwZXJzaW9uZXNfVG90YWxlcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpwYWlycyh+TW50V2luZXMgKyBNbnRNZWF0UHJvZHVjdHMgKyBNbnRGaXNoUHJvZHVjdHMgKyBNbnRGcnVpdHMgKyBNbnRTd2VldFByb2R1Y3RzLCBkYXRhID0gR2FzdG9zX0RhdGFzZXQpDQpgYGANCg0KIyMgRm9ybXVsYWNpw7NuIGRlbCBtb2RlbG8gZGUgUkxTIGVudHJlIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpby4gey50YWJzZXQgLnRhYnNldC1waWxsc30NCg0KTGEgbmF2ZWdhY2nDs24gYSB0cmF2w6lzIGRlIGxhcyBwZXN0YcOxYXMgbXVlc3RyYSBsb3MgY29lZmljaWVudGVzIGRlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlLCBzdSByZXN1bWVuIGVzdGFkw61zdGljbyB5IHN1IHRhYmxhIEFOT1ZBLiBTZSBtZW5jaW9uYSBkZSBudWV2byBxdWUgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcyBzb246ICoqSW5jb21lKiogKHZhcmlhYmxlIHByZWRpY3RvcmEpIHkgKipNbnRXaW5lcyoqICh2YXJpYWJsZSBwcmVkaWNoYSkuDQoNCkFsIGNvbnNpZGVyYXIgbG9zIHJlc3VsdGFkb3MgcHJlc2VudGFkb3MgZW4gbGEgcGVzdGHDsWEgKipDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTFMqKiBzZSBwdWVkZSBlc3RhYmxlciBxdWUgZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIHNpbXBsZSBxdWUgcmVsYWNpb25hIGEgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcywgbGFzIGN1YWxlcyBzZSByZXN1bWlyw6FuIGNvbW8gJEluY29tZSQgeSAkTW50V2luZXMkLCB0aWVuZSBsYSBmb3JtdWxhY2nDs246JCRcaGF0e0luY29tZX094oiSMTAwLjIxOTcrMC4wMDc3NTYxNTlcY2RvdCBNbnRXaW5lc1xoc3BhY2V7MTBtbX0kJCBwYXJhIGVzdGUgbW9kZWxvIHNlIG9idmlhIGxhIGludGVycHJldGFjacOzbiBkZWwgaW50ZXJjZXB0byBwb3IgY2FyZWNlciBkZSBzZW50aWRvIGRhZG8gcXVlICoqTW50V2luZXMqKiByZXN1bHRhcsOtYSBuZWdhdGl2YSBlbiBjYXNvIGRlIHVuIHZhbG9yIG51bG8gZGUgKipJbmNvbWUqKiwgeSBhbWJhcyBzaXR1YWNpb25lcyBjYXJlY2VuIGRlIHNlbnRpZG8uIFNpbiBlbWJhcmdvLCBlbCBjb2VmaWNpZW50ZSBsaW5lYWwgdW5hIGNvcnJlbGFjacOzbiBkZSBwcm9wb3JjaW9uYWxpZGFkIGRpcmVjdGEgZW50cmUgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcywgYXVucXVlIGRlIGNyZWNpbWllbnRvIG1vZGVyYWRvIGVuICoqTW50V2luZXMqKiBwb3IgY2FkYSB1bmlkYWQgbWFyZ2luYWwgZGUgKipJbmNvbWUqLg0KRXN0YSBlY3VhY2nDs24gaW5kaWNhIHF1ZSwgZW4gcHJvbWVkaW8sIHBvciBjYWRhIHVuaWRhZCBkZSBhdW1lbnRvIGVuIGVsIGluZ3Jlc28sIGxvcyBnYXN0b3MgZW4gdmlubyBhdW1lbnRhcsOtYW4gZW4gMC4wMDc3NTYxNTkgdW5pZGFkZXMsIG1hbnRlbmllbmRvIHRvZG8gbG8gZGVtw6FzIGNvbnN0YW50ZS4gRWwgdMOpcm1pbm8g4oiSMTAwLjIxOTcgcmVwcmVzZW50YSBlbCBpbnRlcmNlcHRvLCBlcyBkZWNpciwgbG9zIGdhc3RvcyBlbiB2aW5vIGN1YW5kbyBlbCBpbmdyZXNvIGVzIGNlcm8gKGF1bnF1ZSBlc3RlIHZhbG9yIHBvZHLDrWEgbm8gdGVuZXIgdW4gc2lnbmlmaWNhZG8gcHLDoWN0aWNvIGVuIGVsIGNvbnRleHRvIGRlIGxvcyBkYXRvcykuDQoNCkVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUgdGFtYmnDqW4gcHJvcG9yY2lvbmEgaW5mb3JtYWNpw7NuIHNvYnJlIGxhIHNpZ25pZmljYW5jaWEgZGUgbG9zIGNvZWZpY2llbnRlcy4gRW4gZXN0ZSBjYXNvLCBhbWJvcyBjb2VmaWNpZW50ZXMgc29uIHNpZ25pZmljYXRpdm9zIChwIDwgMC4wMDEpLCBsbyBxdWUgc3VnaWVyZSBxdWUgdGFudG8gZWwgaW50ZXJjZXB0byBjb21vIGVsIGNvZWZpY2llbnRlIGRlIGluZ3Jlc28gc29uIGltcG9ydGFudGVzIHBhcmEgZXhwbGljYXIgbGEgdmFyaWFiaWxpZGFkIGVuIGxvcyBnYXN0b3MgZGUgdmluby4gQWRlbcOhcywgZWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gYWp1c3RhZG8gKFJeezJ9KWVzIGRlIGFwcm94aW1hZGFtZW50ZSAwLjMzNDcsIGxvIHF1ZSBpbmRpY2EgcXVlIGFscmVkZWRvciBkZWwgKiozMy40NyUqKiBkZSBsYSB2YXJpYWJpbGlkYWQgZW4gbG9zIGdhc3RvcyBkZSB2aW5vIHNlIGV4cGxpY2EgcG9yIGxhIHZhcmlhYmxlIGRlIGluZ3Jlc28gZW4gZXN0ZSBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlLg0KDQojIyMgQ29lZmljaWVudGVzIGRlbCBNb2RlbG8gUkxTDQoNCmBgYHtyIGNvZWZpY2llbnRlc19SZWdyZXNpb25fTGluZWFsX1NpbXBsZSwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQptb2RlbG9fUkxfU2ltcGxlID0gbG0oR2FzdG9zX0RhdGFzZXQkTW50V2luZXN+R2FzdG9zX0RhdGFzZXQkSW5jb21lKQ0KY29lZihtb2RlbG9fUkxfU2ltcGxlKQ0KYGBgDQoNCiMjIyBSZXN1bWVuIEVzdGFkw61zdGljbyBkZWwgTW9kZWxvIFJMUw0KDQpgYGB7ciByZXN1bWVuX1JlZ3Jlc2lvbl9MaW5lYWxfU2ltcGxlLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkobW9kZWxvX1JMX1NpbXBsZSkNCmBgYA0KDQojIyMgVGFibGEgQU5PVkEgcGFyYSBlbCBNb2RlbG8gUkxTDQoNCmBgYHtyIEFOT1ZBX1JlZ3Jlc2lvbl9MaW5lYWxfU2ltcGxlLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCmFub3ZhKG1vZGVsb19STF9TaW1wbGUpDQpgYGANCg0KIyMgQW7DoWxpc2lzIGRlbCBtb2RlbG8gUkxTLiB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KDQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIGludGVydmFsbyBkZSBjb25maWFuemEgcGFyYSAkXGJldGFfMSQgeSBwYXJhIGxhIHByZWRpY2Npw7NuIGRlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlLCBhbWJvcyBhbCA5NSAlLiBTZSBtZW5jaW9uYSBkZSBudWV2byBxdWUgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcyBzb246ICoqSW5jb21lKiogKHZhcmlhYmxlIHByZWRpY3RvcmEpIHkgKipNbnRXaW5lcyoqICh2YXJpYWJsZSBwcmVkaWNoYSkuDQoNCkVsIGFuw6FsaXNpcyBkZWwgbW9kZWxvIFJMUyBtdWVzdHJhIHF1ZSBlcyBzaWduaWZpY2F0aXZvIHkgZW4gY29uc2VjdWVuY2lhIGFwb3J0YSBpbmZvcm1hY2nDs24gcmVsZXZhbnRlIHBhcmEgZXN0aW1hciAqKk1udFdpbmVzKiogYSBwYXJ0aXIgZGUgKipJbmNvbWUqKi4gRXN0byBkZWJpZG8gYSBxdWUgZWwgaW50ZXJ2YWxvIGRlIGNvbmZpYW56YSBwYXJhIGVsIGNvZWZpY2llbnRlIGRlICpJbmNvbWUqIGVuIGVsIG1vZGVsbyBSTFMgZXhjbHV5ZSBhbCBjZXJvOiQkMCwwMDczMDA4OTxcYmV0YV8xPDAsMDA4MjExNTNcaHNwYWNlezEwbW19JCQNCg0KUG9yIMO6bHRpbW8sIGxhIHBlc3Rhw7FhICoqUHJlZGljY2lvbmVzIHkgc3VzIEludGV2YWxvcyBkZSBQcmVkaWNjacOzbioqIG11ZXN0cmFuIGxvcyBjw6FsY3Vsb3MgY29uIGJhc2UgZW4gZWwgbW9kZWxvLCBiYWpvIGludGVydmFsb3MgZGUgcHJlZGljY2nDs24gYWwgJDk1JCAkXCUkLCBkZSBsYXMgcHJlZGljY2lvbmVzIGRlIHRvZGFzIGxhcyBwZXN0YcOxYXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zIHBhcmEgbGEgdmFyaWFibGUgKipNbnRXaW5lcyoqLiBDYWJlIG1lbmNpb25hciBxdWUgZXN0b3MgaW50ZXJ2YWxvcyByZXN1bHRhbiBtw6FzIGFuY2hvcyBxdWUgYXF1ZWxsb3MgY2FsY3VsYWRvcyBjb24gYmFzZSBlbiBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBhbCBtaXNtbyBuaXZlbCBkZSBzaWduaWZpY2FuY2lhLg0KDQojIyMgSW50ZXJ2YWxvIGRlIENvbmZpYW56YSBwYXJhIEIxDQoNCmBgYHtyIEludGVydmFsb19Db25maWFuemFfQjEsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KY29uZmludChtb2RlbG9fUkxfU2ltcGxlLCBsZXZlbCA9IDAuOTUpDQpgYGANCg0KIyMjIFByZWRpY2Npb25lcyB5IHN1cyBJbnRlcnZhbG9zIGRlIFByZWRpY2Npw7NuDQoNCmBgYHtyIEludGVydmFsb3NfUHJlZGljY2lvbl9QLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnByZWRpY3QobW9kZWxvX1JMX1NpbXBsZSwgZGF0YS5mcmFtZShzZXEoMSw0MDApKSwgaW50ZXJ2YWw9J3ByZWRpY3Rpb24nLCBsZXZlbCA9IDAuOTUpDQpgYGANCg0KIyMjIFByZWRpY2Npb25lcyB5IHN1cyBJbnRlcnZhbG9zIGRlIENvbmZpYW56YQ0KDQpgYGB7ciBJbnRlcnZhbG9zX1ByZWRpY2Npb25fQywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpwcmVkaWN0KG1vZGVsb19STF9TaW1wbGUsIGRhdGEuZnJhbWUoc2VxKDEsNDAwKSksIGludGVydmFsPSdjb25maWRlbmNlJywgbGV2ZWwgPSAwLjk1KQ0KYGBgDQoNCiMjIDQuMy4gUmVncmVzacOzbiBMaW5lYWwgTcO6bHRpcGxlDQoNCkVzdGUgbW9kZWxvLCBxdWUgcHVlZGUgaW5pY2lhbG1lbnRlIHBlbnNhcnNlIGNvbW8gdW5hIGV4dGVuc2nDs24gZGUgbGEgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIHBhcmEgZmFjaWxpdGFyIHN1IGNvbXByZW5zacOzbiwgeSBxdWUgZXZlbnR1YWxtZW50ZSBzZXLDoSBsbGFtYWRvIGVuIGVzdGUgZXN0dWRpbyBjb21vICoqUkxNKiosIHRpZW5lIGNvbW8gZWN1YWNpw7NuIGdlbmVyYWwgYWRpdGl2YTokJHlfaT1cYmV0YV8wK1xiZXRhXzEgeF97aTF9K1xjZG90cytcYmV0YV9rIHhfe2lrfStcdmFyZXBzaWxvbl9pLCBcaHNwYWNlezNtbX1pPTEsMixcZG90cyxuXGhzcGFjZXsxMG1tfSgyMSkkJCBkb25kZSAkRShcZXBzaWxvbik9MCQgeSAkVihcZXBzaWxvbik9XHNpZ21hXjIkLiBUYW1iacOpbiwgcGFyYSBoYWNlciBwcnVlYmFzIGRlIGhpcMOzdGVzaXMgeSBjYWxjdWxhciBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSB5IGRlIHByZWRpY2Npw7NuLCBzZSBzdXBvbmUgcXVlICRcZXBzaWxvbiQgZXN0w6Egbm9ybWFsbWVudGUgZGlzdHJpYnVpZGEuIENvbXBsZW1lbnRhcmlhbWVudGUsIGNvbiBiYXNlIGVuIGVsIGVuZm9xdWUgZGUgbG9zIG3DrW5pbW9zIGN1YWRyYWRvcyBvcmRpbmFyaW9zLCBsYSBlc3RpbWFjacOzbiBkZSBzdXMgcGFyw6FtZXRyb3Mgc2UgcGxhbnRlYSBlbiB0w6lybWlub3MgZGUgbGEgbWluaW1pemFjacOzbiBkZSB1bmEgZnVuY2nDs24gZGUgZW5zYXlvIGRlc2RlIGxhIGN1YWwgc2Ugb2JzZXJ2YW4gbG9zIGN1YWRyYWRvcyBkZSBsYXMgZGVzdmlhY2lvbmVzIGRlIGxhIHZhcmFpYmxlIGVzdHVkaWFkYS4gTGEgZnVuY2nDs24gZGUgZW5zYXlvIHNlIHJlcHJlc2VudGEgY29tbyAkZihiXzAsYl8xLC4uLixiX2spPSBcc3VtX3tqfVt5X2ktKGJfMCtiXzF4X3sxan0rYl8yeF97Mmp9Ky4uLitiX2t4X3tran0pXV4yJC4gRXN0byBjb25kdWNlIGEgdW4gY29uanVudG8gZGUgZWN1YWNpb25lcyBub3JtYWxlcyBsaW5lYWxlcyBlbiAkYl8wLGJfMSwuLi4sYl9rJCwgcXVlIGFsIHNlciByZXN1ZWx0YXMgZW50cmVnYW4gbGFzIGVzdGltYWNpb25lcyBkZSBtw61uaW1vcyBjdWFkcmFkb3MgZGUgJFxoYXR7XGJldGFfMH0sXGhhdHtcYmV0YV8xfSwuLi4sLCBcaGF0e1xiZXRhX2t9JC4NCg0KQ29tcGxlbWVudGFyaWFtZW50ZSwgbGEgcHJvcG9yY2nDs24gZGUgdmFyaWFjacOzbiB0b3RhbCBleHBsaWNhZGEgcG9yIGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIG3Dumx0aXBsZSBhIHRyYXbDqXMgZGVsIGNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuIG3Dumx0aXBsZSBzZSBhanVzdGEsIGdlbmVyYWxtZW50ZSwgY29uIGJhc2UgZW4gZWwgbsO6bWVybyBkZSBwYXLDoW1ldHJvcyBkZWwgbW9kZWxvLg0KDQpBZGVtw6FzLCB1bmEgcHJ1ZWJhIGRlIHV0aWxpZGFkIGRlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgbcO6bHRpcGxlIGNvbnNpc3RlIGVuIHVuYSBwcnVlYmEgZGUgaGlww7N0ZXNpcyBiYXNhZGEgZW4gdW4gZXN0YWTDrXN0aWNvIHF1ZSB0aWVuZSB1bmEgZGlzdHJpYnVjacOzbiAkRiQgcGFydGljdWxhciBjdWFuZG8gJEhfMCQgZXMgdmVyZGFkZXJhLCBlc3RvIGRlIGV4cHJlc2EgZW4gZWwgcGFyOiQkSF8wOlxiZXRhXzE9XGJldGFfMj1cY2RvdHM9XGJldGFfaz0wXGhzcGFjZXsxMG1tfSQkDQokJEhfMTogXHRleHQge2FsIG1lbm9zIHVuYSB9XGJldGFfaVxuZXEgMFxoc3BhY2V7NW1tfShpPTEsLi4uLGspXGhzcGFjZXsxMG1tfSQkDQpQYXJhIGNlcnJhciwgZXMgbmVjZXNhcmlvIG1lbmNpb25hciBxdWUgZXZlbnR1YWxtZW50ZSBzdXJnZW4gcHJvYmxlbWFzIGVuIGxvcyBhbsOhbGlzaXMgZGUgcmVncmVzacOzbiBtw7psdGlwbGUgcXVlIGltcGxpY2FuIGNvbnNpZGVyYXIgdMOpY25pY2FzIGRlIHNvbHVjacOzbiByZWxhY2lvbmFkYXMgY29uIHRyYW5zZm9ybWFjaW9uZXMgZGUgbm8tbGluZWFsaWRhZCwgZXN0YW5kYXJpemFjacOzbiB5IHNlbGVjY2nDs24gZGUgdmFyaWFibGVzLCBpZGVudGlmaWNhY2nDs24gZGUgb2JzZXJ2YWNpb25lcyBpbmZsdXllbnRlcywgbXVsdGljb2xpbmVhbGlkYWQsIGVudHJlIG90cmFzLg0KDQoqKlBsYW50ZWFtaWVudG8gZGVsIFByb2JsZW1hKioNCg0KQ29uIGJhc2UgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gKioyKiogc2UgZm9ybXVsYXLDoSB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgbcO6bHRpcGxlIHBhcmEgZXN0dWRpYXIgbGEgcmVsYWNpw7NuIGxpbmVhbCBtw7psdGlwbGUgc3VwdWVzdGEgZW50cmUgbGFzIHZhcmFpYmxlcyBkZWZpbmlkYXMgcG9yIGxvcyBjYW1wb3M6ICoqSW5jb21lKiogKHZhcmlhYmxlIGluZGVwZW5kaWVudGUpIHkgbG9zIGRlbcOhcyBjb21vIHZhcmlhYmxlcyBkZXBlbmRpZW50ZXM6ICoqTW50V2luZXMqKiwgDQoqKk1udE1lYXRQcm9kdWN0cyoqLCAqKk1udEZpc2hQcm9kdWN0cyoqLCAqKk1udEZydWl0cyoqLCAqKk1udFN3ZWV0UHJvZHVjdHMqKi4NCg0KIyMgUmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgbGFzIHZhcmlhYmxlcyBkZSBlc3R1ZGlvIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQoNCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzIG11ZXN0cmEgZWwgcmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgdG9kYXMgbGFzIHZhcmlhYmxlcyBkZWwgY29uanVudG8gZGUgZGF0b3MsIGV4Y2VwdG8gKipJRCoqLCBwb3JxdWUgc2ltcGxlbWVudGUgZXMgdW4gw61uZGljZSBwb3NpY2lvbmFsLiBTaW4gZW1iYXJnbywgcGFyYSBsYXMgdmFyYWlibGVzIGRlIG5hdHVyYWxlemEgY3VhbnRpdGF0aXZhOjpyYXrDs24gZWwgcmVzdW1lbiBzZXLDoSBlbCB0cmFkaWNpb25hbCwgcGVybyBwYXJhIGxhcyB2YXJpYWJsZXMgZGUgbmF0dXJhbGV6YSBjdWFsaXRhdGl2YTo6bm9taW5hbCBlbCByZXN1bWVuIGVzdGFkw61zdGljbyBjb25zaXN0aXLDoSBlbiBjb250ZW9zLCBwcm9wb3JjaW9uZXMgeSBkaWFncmFtYXMgZGUgYmFycmFzLiAgU2UgbWVuY2lvbmEgZGUgbnVldm8gcXVlICoqSW5jb21lKiogZXMgbGEgdmFyaWFibGUgaW5kZXBlbmRpZW50ZS4gDQoNCiMjIyBSZXN1bWVuIFZhcmlhYmxlcyBDdWFudGl0YXRpdmFzDQoNCmBgYHtyIHJlc3VtZW5fVmFyaWFibGVzX0N1YW50aXRhdGl2YXMsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCRZZWFyX0JpcnRoKQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCRJbmNvbWUpDQpzdW1tYXJ5KEdhc3Rvc19EYXRhc2V0JFRlZW5ob21lKQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCRNbnRXaW5lcykNCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkTW50RnJ1aXRzKQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCRNbnRNZWF0UHJvZHVjdHMpDQpzdW1tYXJ5KEdhc3Rvc19EYXRhc2V0JE1udEZpc2hQcm9kdWN0cykNCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkTW50U3dlZXRQcm9kdWN0cykNCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkTW50R29sZFByb2RzKQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCROdW1EZWFsc1B1cmNoYXNlcykNCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkTnVtV2ViUHVyY2hhc2VzKQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCROdW1DYXRhbG9nUHVyY2hhc2VzKQ0Kc3VtbWFyeShHYXN0b3NfRGF0YXNldCROdW1TdG9yZVB1cmNoYXNlcykNCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkTnVtV2ViVmlzaXRzTW9udGgpDQpgYGANCg0KIyMjIFJlc3VtZW4gVmFyaWFibGVzIEN1YWxpdGF0aXZhcw0KDQpgYGB7ciByZXN1bWVuX1ZhcmlhYmxlc19DdWFsaXRhdGl2YXMsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KdGFibGUoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uKQ0KcHJvcC50YWJsZSh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pKQ0KYmFycGxvdCh0YWJsZShHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pKQ0KdGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMpDQpwcm9wLnRhYmxlKHRhYmxlKEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzKSkNCmJhcnBsb3QodGFibGUoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMpKQ0KdGFibGUoR2FzdG9zX0RhdGFzZXQkU2F0aXNmYWN0aW9uX3dpdGhfY3VzdG9tZXJfc2VydmljZSkNCmBgYA0KDQoNCg0KIyMjIERpYWdyYW1hcyBkZSBEaXNwZXJzacOzbiBWYXJpYWJsZXMgQ3VhbnRpdGF0aXZhcw0KDQpgYGB7ciBkaXNwZXJzaW9uZXNfVmFyaWFibGVzX0N1YW50aXRhdGl2YXMsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KcGFpcnMoflllYXJfQmlydGggKyBJbmNvbWUgKyBUZWVuaG9tZSArIE1udFdpbmVzICsgTW50RnJ1aXRzICsgTW50TWVhdFByb2R1Y3RzICsgTW50RmlzaFByb2R1Y3RzICsgTW50U3dlZXRQcm9kdWN0cyArIE1udEdvbGRQcm9kcyArIE51bURlYWxzUHVyY2hhc2VzICsgTnVtV2ViUHVyY2hhc2VzICsgTnVtQ2F0YWxvZ1B1cmNoYXNlcyArIE51bVN0b3JlUHVyY2hhc2VzICsgTnVtV2ViVmlzaXRzTW9udGggLCBkYXRhID0gR2FzdG9zX0RhdGFzZXQpDQpgYGANCg0KIyMgRm9ybXVsYWNpw7NuIGRlbCBtb2RlbG8gZGUgUkxNIGVudHJlIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpbyB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KDQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIHJlc8O6bWVuIHkgbGEgdGFibGEgQU5PVkEgZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBtw7psdGlwbGUgdG90YWwgeSBsb3MgY29lZmljaWVudGVzIHRhbnRvIGRlbCBtb2RlbG8gbWVuY2lvbmFkbyBjb21vIGVsIGxvZ3JhZG8gbHVlZ28gZGUgcmVkdWNpcmxvLiBDb24gYmFzZSBlbiBsYSBleHBsb3JhY2nDs24gZGUgbG9zIGRhdG9zIGRlIGxhIHNlc2nDs24gYW50ZXJpb3IgeSBlbCByZXPDum1lbiB5IGxhIHRhYmxhIEFOT1ZBIGRlbCBtb2RlbG8gdG90YWwgc2UgZm9ybXVsYW4gcGFyYSBjb21wYXJhY2nDs24gZG9zIG1vZGVsb3MgUkxNOiB1bm8gcXVlIGluY2x1eWUgYSB0b2RhcyBsYXMgdmFyaWJsZXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zLCBleGNlcHRvICoqSUQqKiwgeSBvdHJvIHF1ZSBleGNsdXllIGEgKipFZHVjYXRpb24qKiwgKipTYXRpc2ZhY3Rpb25fd2l0aF9jdXN0b21lcl9zZXJ2aWNlKiogeSAqKk1hcml0YWxfU3RhdHVzKiouIFNlIG1lbmNpb25hIGRlIG51ZXZvIHF1ZSAqKkluY29tZSoqIGVzIGxhIHZhcmlhYmxlIGluZGVwZW5kaWVudGUuDQoNCkFsIGNvbnNpZGVyYXIgbG9zIHJlc3VsdGFkb3MgcHJlc2VudGFkb3MgZW4gbGEgcGVzdGHDsWEgKipDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTE0gVG90YWwqKiBzZSBwdWVkZSBlc3RhYmxlciBxdWUgZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIG3Dumx0aXBsZSB0b3RhbCBxdWUgcmVsYWNpb25hIGEgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcywgbGFzIGN1YWxlcyBzZSByZXN1bWlyw6FuIGNvbW86ICoqTW50V2luZXMqKiwgDQoqKk1udE1lYXRQcm9kdWN0cyoqLCAqKk1udEZpc2hQcm9kdWN0cyoqLCAqKk1udEZydWl0cyoqLCAqKk1udFN3ZWV0UHJvZHVjdHMqKiwgdGllbmUgbGEgZm9ybXVsYWNpw7NuIChjb24gY29lZmljaWVudGVzIHJlZG9uZGVhZG9zIGEgY3VhdHJvIGNpZnJhcyBkZWNpbWFsZXMgcG9yIG1vdGl2b3MgZGUgZWRpY2nDs24pOiQkXHRpbnkgXGhhdHtJbmNvbWV9PSAzMS4xOTIwICsgMC42MjEwXGNkb3QgTW5NUCArIDAuNTI0MFxjZG90IE1uRlAgKyAwLjYyNDYgXGNkb3QgTW50RiArIDAuODA3M1xjZG90IE1uU1AgLSA1NS4wNjZcY2RvdCBFZEJhcyArIDY3LjU5NDggXGNkb3QgR3JhZCArIDE0NS41MjIgXGNkb3QgTWFzdCArIDIxOC4wMDVcY2RvdCBQaEQgKyA1Mi4xNzggXGNkb3QgRGl2byArIDIzLjI1M1xjZG90IE1hcnJpIC0gMC4zNjc2XGNkb3QgU2luICsgMjYuNTY5OVxjZG90IFRvZyArIDM2LjIyOFxjZG90IFdpZCArIDQ5LjU2NVxjZG90IFlPTE9caHNwYWNlezEwbW19JCQgcGFyYSBlc3RlIG1vZGVsbyBzZSBvYnZpYSBsYSBpbnRlcnByZXRhY2nDs24gZGVsIGludGVyY2VwdG8gcG9yIGNhcmVjZXIgZGUgc2VudGlkbyBkYWRvIHF1ZSAqKkluY29tZSoqIHJlc3VsdGFyw61hIG5lZ2F0aXZhIGVuIGNhc28gZGUgdW4gcXVlIGxhcyB2YXJpYWJsZSBmdWVzZW4gbnVsYXMgYSBsYSB2ZXosIHkgYW1iYXMgc2l0dWFjaW9uZXMgY2FyZWNlbiBkZSBzZW50aWRvLg0KDQoNClBvciBvdHJvIGxhZG8sIGx1ZWdvIGRlIGF1c2N1bHRhciBlbCByZXN1bWVuIGVzdGFkw61zdGljbyB5IGxhIHRhYmxhIEFOT1ZBIGRlbCBtb2RlbG8gUkxNIFRvdGFsIChjb21vIHNlIG11ZXN0cmEgZW4gbGEgcGVzdGHDsWEgaG9tw7NuaW1hKSwgc2UgcHVkbyBlc3RhYmxlY2VyLCBjb24gZWwgYXBveW8gZGUgbG9zIHJlc8O6bWVuZXMgZXN0YWTDrXN0aWNvcyBkZSBsYXMgdmFyaWFibGVzIGRlIGVzdHVkaW8sIHF1ZSBwb2TDrWEgZXhjbHVpcnNlIGRpcmVjdGFtZW50ZSBkZWwgbW9kZWxvIHBvciBiYWphIHNpZ25pZmljYW5jaWEgbGFzIHZhcmlhYmxlcyAqKkVkdWNhdGlvbioqIHkgKipTYXRpc2ZhY3Rpb25fd2l0aF9jdXN0b21lcl9zZXJ2aWNlKio7IHNpbiBlbWJhcmdvLCBsYSB2YXJpYWJsZSAqKk1hcml0YWxfU3RhdHVzLioqIEVzdG8gaW1wbGljw7MgcXVlIHNlIGNhbGN1bGFzZSB1biBtb2RlbG8gcmVkdWNpZG8gY29uIGxhIGZvcm11bGFjacOzbiAoY29uIGJhc2UgZW4gbGFzIG1pc21hcyBjb25zaWRlcmFjaW9uZXMgZGUgZWRpY2nDs24gZGVsIG1vZGVsbyB0b3RhbCk6JCRcdGlueSBcaGF0e01udFdpbmVzfT0gMjAuODkyOCArIDIuMDU5M1xjZG90IE1udEZydWl0cyArIDEuNzczMVxjZG90IE1uU1AgIC0gNTMuODA1MlxjZG90IEVkQmFzICsgMzkuNjAwM1xjZG90IEVkR3JhZCArIDYwLjM0MzlcY2RvdCBFZHVNYXMgKyA3MC41NjM2XGNkb3QgRWRQaERcaHNwYWNlezEwbW19JCQNCg0KIyMjIFJlc3VtZW4geSBBTk9WQSBkZWwgTW9kZWxvIFJMTSBUb3RhbA0KDQpgYGB7cn0NCnN1bW1hcnkobG0oWWVhcl9CaXJ0aCB+IEluY29tZSArIFRlZW5ob21lICsgTW50V2luZXMgKyBNbnRGcnVpdHMgKyBNbnRNZWF0UHJvZHVjdHMgKyBNbnRGaXNoUHJvZHVjdHMgKyBNbnRTd2VldFByb2R1Y3RzICsgTW50R29sZFByb2RzICsgTnVtRGVhbHNQdXJjaGFzZXMgKyBOdW1XZWJQdXJjaGFzZXMgKyBOdW1DYXRhbG9nUHVyY2hhc2VzICsgIE51bVN0b3JlUHVyY2hhc2VzICsgTnVtV2ViVmlzaXRzTW9udGggKyBhcy5mYWN0b3IoRWR1Y2F0aW9uKSArIGFzLmZhY3RvcihNYXJpdGFsX1N0YXR1cykgKyBhcy5mYWN0b3IoU2F0aXNmYWN0aW9uX3dpdGhfY3VzdG9tZXJfc2VydmljZSksIGRhdGEgPSBHYXN0b3NfRGF0YXNldCkpDQoNCmFub3ZhKGxtKE1udFdpbmVzIH4gTW50TWVhdFByb2R1Y3RzICsgTW50RmlzaFByb2R1Y3RzICsgTW50RnJ1aXRzICsgTW50U3dlZXRQcm9kdWN0cyArICBhcy5mYWN0b3IoRWR1Y2F0aW9uKSArIGFzLmZhY3RvcihNYXJpdGFsX1N0YXR1cykgKyAgYXMuZmFjdG9yKFNhdGlzZmFjdGlvbl93aXRoX2N1c3RvbWVyX3NlcnZpY2UpLCBkYXRhID0gR2FzdG9zX0RhdGFzZXQpKQ0KYGBgDQoNCiMjIyBDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTE0gVG90YWwNCg0KYGBge3IsIGNvZWZpY2llbnRlc19STE1fVG90YWwsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KY29lZmZpY2llbnRzKGxtKEdhc3Rvc19EYXRhc2V0JE1udFdpbmVzfkdhc3Rvc19EYXRhc2V0JE1udE1lYXRQcm9kdWN0cytHYXN0b3NfRGF0YXNldCRNbnRGaXNoUHJvZHVjdHMrR2FzdG9zX0RhdGFzZXQkTW50RnJ1aXRzK0dhc3Rvc19EYXRhc2V0JE1udFN3ZWV0UHJvZHVjdHMrYXMuZmFjdG9yKEdhc3Rvc19EYXRhc2V0JEVkdWNhdGlvbikrYXMuZmFjdG9yKEdhc3Rvc19EYXRhc2V0JE1hcml0YWxfU3RhdHVzKSthcy5mYWN0b3IoR2FzdG9zX0RhdGFzZXQkU2F0aXNmYWN0aW9uX3dpdGhfY3VzdG9tZXJfc2VydmljZSkpKQ0KYGBgDQoNCiMjIyBDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTE0gUmVkdWNpZG8NCg0KYGBge3IgY29lZmljaWVudGVzX1JMTV9SZWR1Y2lkbywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpjb2VmZmljaWVudHMobG0oR2FzdG9zX0RhdGFzZXQkTW50TWVhdFByb2R1Y3Rzfkdhc3Rvc19EYXRhc2V0JE1udEZydWl0cytHYXN0b3NfRGF0YXNldCRNbnRTd2VldFByb2R1Y3RzK2FzLmZhY3RvcihHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pKSkNCmBgYA0KDQojIyBBbsOhbGlzaXMgZGVsIG1vZGVsbyBSTE0uIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQoNCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzLCBwcmltZXJvIHBvciAqKk1lam9yIE1vZGVsbyBJdGVyYWRvIHNlZ8O6biBBSUMqKiwgbXVlc3RyYSBxdWUgbGEgZGVjaXNpw7NuIGRlIGV4Y2x1aXIgZGVsIG1vZGVsbyB0b3RhbCBhIGxhIHZhcmlhYmxlICoqU2F0aXNmYWN0aW9uX3dpdGhfY3VzdG9tZXJfc2VydmljZSoqIHkgKipNYXJpdGFsX1N0YXR1cyoqIHJlc3VsdMOzIGFjZXJ0YWRhLCBlbCBhbGdvcml0bW8gaXRlcmFkbyBxdWUgY29uc2lkZXJhIGNvbXBvbmVudGVzIEFOT1ZBIHkgZGUgZGVzdmlhY2nDs24gZGUgcmVzaWR1YWxlcyBsYSBleGNsdXnDsyBlbiBsYSBwcmltZXJhIHkgc2VndW5kYSBpdGVyYWNpw7NuLiAuDQoNCkNvbXBsZW1lbnRhcmlhbWVudGUsIGVuIGxhIHBlc3Rhw7FhIGRlICoqQm9uZGFkZXMgZGUgQWp1c3RlLCBTaWduaWZpY2FuY2lhcyB5IENyaXRlcmlvcyBkZSBJbmZvcm1hY2nDs24gQ29tcGFyYWRvcyoqIHNlIHByZXNlbnRhIGVsIGNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuIG3Dumx0aXBsZSAoUsKyKSBlcyAwLjM4MywgbG8gcXVlIGluZGljYSBxdWUgZWwgbW9kZWxvIGV4cGxpY2EgYXByb3hpbWFkYW1lbnRlIGVsIDM4LjMlIGRlIGxhIHZhcmlhYmlsaWRhZCBlbiBsYSB2YXJpYWJsZSBkZXBlbmRpZW50ZSAiTW50V2luZXMiLg0KDQpMb3MgY29lZmljaWVudGVzIGRlIGxhcyB2YXJpYWJsZXMgcHJlZGljdG9yYXMgbXVlc3RyYW4gbGEgcmVsYWNpw7NuIGVudHJlIGNhZGEgdmFyaWFibGUgaW5kZXBlbmRpZW50ZSB5IGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlLiBQb3IgZWplbXBsbywgZWwgY29lZmljaWVudGUgcGFyYSAiTW50TWVhdFByb2R1Y3RzIiBlcyAwLjYyMSwgbG8gcXVlIGluZGljYSBxdWUsIG1hbnRlbmllbmRvIHRvZGFzIGxhcyBkZW3DoXMgdmFyaWFibGVzIGNvbnN0YW50ZXMsIHVuIGF1bWVudG8gZGUgdW5hIHVuaWRhZCBlbiAiTW50TWVhdFByb2R1Y3RzIiBlc3TDoSBhc29jaWFkbyBjb24gdW4gYXVtZW50byBkZSAwLjYyMSB1bmlkYWRlcyBlbiAiTW50V2luZXMiLg0KDQpMYSBzaWduaWZpY2FuY2lhIGVzdGFkw61zdGljYSBkZSBsb3MgY29lZmljaWVudGVzIHNlIGV2YWzDumEgbWVkaWFudGUgbG9zIHZhbG9yZXMgdCB5IGxvcyB2YWxvcmVzIHAgYXNvY2lhZG9zLiBQb3IgZWplbXBsbywgZWwgY29lZmljaWVudGUgcGFyYSAiRWR1Y2F0aW9uKUJhc2ljIiB0aWVuZSB1biB2YWxvciB0IGRlIC0xLjM3IHkgdW4gdmFsb3IgcCBkZSAwLjE3MSwgbG8gcXVlIGluZGljYSBxdWUgZXN0ZSBjb2VmaWNpZW50ZSBubyBlcyBlc3RhZMOtc3RpY2FtZW50ZSBzaWduaWZpY2F0aXZvIGEgdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBkZWwgNSUuDQoNCkxhIGNvbnN0YW50ZSAoaW50ZXJjZXB0bykgZXMgLTEzNC4wMTcsIHF1ZSByZXByZXNlbnRhIGVsIHZhbG9yIGVzcGVyYWRvIGRlICJNbnRXaW5lcyIgY3VhbmRvIHRvZGFzIGxhcyB2YXJpYWJsZXMgcHJlZGljdG9yYXMgc29uIGNlcm8uDQoNClBvciDDumx0aW1vLCBsb3MgY3JpdGVyaW9zIGRlIGluZm9ybWFjacOzbiBBSUMgeSBCSUMgbXVlc3RyYW4gcXVlIGVmZWN0aXZhbWVudGUgZW4gbG9zIG1vZGVsb3MgaWTDqW50aWNvcyByZWR1Y2lkbyBlIGl0ZXJhZG8gbGEgcmVsYWNpw7NuIGVudHJlIGVsIHNlc2dvIHkgbGEgdmFyaWFuemEgZW4gc3VzIGZvcm11bGFjaW9uZXMsIGVzIGRlY2lyLCBlbnRyZSBzdXMgZXhhY3RpdHVkZXMgeSBjb21wbGVqaWRhZGVzLCByZXN1bHRhIG1lam9yIHF1ZSBlbiBtb2RlbG8gdG90YWw6ICRBSUNfe1JMTVJlZHVjaWRvfT1BSUNfe1JMTUl0ZXJhZG99PSAyOTU5NS4xNCwyMjU8IDMxMzgyLjk5ID1BSUNfe1JMTVRvdGFsfSQgeSAkQklDX3tSTE1SZWR1Y2lkb309QklDX3tSTE1JdGVyYWRvfT0gMjk1OTUuMTQ8IDMxMzcxLjczPUJJQ197UkxNVG90YWx9JC4NCg0KIyMjIE1lam9yIE1vZGVsbyBJdGVyYWRvIHNlZ8O6biBBSUMNCg0KYGBge3IsIG1lam9yX01vZGVsb19BSUMsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KbW9kZWxvX0l0ZXJhZG9fU1RFUCA9IHN0ZXAobG0oR2FzdG9zX0RhdGFzZXQkTW50V2luZXN+R2FzdG9zX0RhdGFzZXQkTW50TWVhdFByb2R1Y3RzK0dhc3Rvc19EYXRhc2V0JE1udEZpc2hQcm9kdWN0cytHYXN0b3NfRGF0YXNldCRNbnRGcnVpdHMrR2FzdG9zX0RhdGFzZXQkTW50U3dlZXRQcm9kdWN0cythcy5mYWN0b3IoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uKSthcy5mYWN0b3IoR2FzdG9zX0RhdGFzZXQkTWFyaXRhbF9TdGF0dXMpK2FzLmZhY3RvcihHYXN0b3NfRGF0YXNldCRTYXRpc2ZhY3Rpb25fd2l0aF9jdXN0b21lcl9zZXJ2aWNlKSkpDQpjb2VmZmljaWVudHMobW9kZWxvX0l0ZXJhZG9fU1RFUCkNCmBgYA0KDQojIyMgQm9uZGFkZXMgZGUgQWp1c3RlLCBTaWduaWZpY2FuY2lhcyB5IENyaXRlcmlvcyBkZSBJbmZvcm1hY2nDs24gQ29tcGFyYWRvcw0KDQpgYGB7cn0NCm1vZGVsb19STE1fVE9UQUwgPSBsbShHYXN0b3NfRGF0YXNldCRNbnRXaW5lc35HYXN0b3NfRGF0YXNldCRNbnRNZWF0UHJvZHVjdHMrR2FzdG9zX0RhdGFzZXQkTW50RmlzaFByb2R1Y3RzK0dhc3Rvc19EYXRhc2V0JE1udEZydWl0cytHYXN0b3NfRGF0YXNldCRNbnRTd2VldFByb2R1Y3RzK2FzLmZhY3RvcihHYXN0b3NfRGF0YXNldCRFZHVjYXRpb24pK2FzLmZhY3RvcihHYXN0b3NfRGF0YXNldCRNYXJpdGFsX1N0YXR1cykrYXMuZmFjdG9yKEdhc3Rvc19EYXRhc2V0JFNhdGlzZmFjdGlvbl93aXRoX2N1c3RvbWVyX3NlcnZpY2UpKQ0KbW9kZWxvX1JMTV9SRURVQ0lETyA9IGxtKEdhc3Rvc19EYXRhc2V0JE1udE1lYXRQcm9kdWN0c35HYXN0b3NfRGF0YXNldCRNbnRGcnVpdHMrR2FzdG9zX0RhdGFzZXQkTW50U3dlZXRQcm9kdWN0cythcy5mYWN0b3IoR2FzdG9zX0RhdGFzZXQkRWR1Y2F0aW9uKSkNCg0Kc3RhcmdhemVyKG1vZGVsb19STE1fVE9UQUwsIG1vZGVsb19STE1fUkVEVUNJRE8sIG1vZGVsb19JdGVyYWRvX1NURVAsIHR5cGUgPSAidGV4dCIsIGRmID0gVFJVRSkNCkFJQyhtb2RlbG9fUkxNX1RPVEFMLCBtb2RlbG9fUkxNX1JFRFVDSURPLCBtb2RlbG9fSXRlcmFkb19TVEVQKQ0KQklDKG1vZGVsb19STE1fVE9UQUwsIG1vZGVsb19STE1fUkVEVUNJRE8sIG1vZGVsb19JdGVyYWRvX1NURVApDQpgYGANCg0KIyMgNC40LiBSZWdyZXNpw7NuIExvZ8Otc3RpY2EgDQoNCkVzdGUgbW9kZWxvLCBxdWUgZXZlbnR1YWxtZW50ZSBzZXLDoSBsbGFtYWRvIGVuIGVzdGUgZXN0dWRpbyBjb21vICoqUkxvZ1MqKiwgZXN0YWJsZWNlIHF1ZSwgZW4gY29tcGFyYWNpw7NuIGNvbiB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIHF1ZSByZWxhY2lvbmUgdW5hIHZhcmlhYmxlIGN1YW50aXRhdGl2YSBkZXBlbmRpZW50ZSAkeSQgY29uIHVuYSB2YXJhaWJsZSBjdWFudGl0YXRpdmEgaW5kZXBlbmRpZW50ZSAkeCQsIHJlbGFjaW9uYSB1bmEgdmFyaWFibGUgY2F0ZWfDs3JpY2EgZGljb3TDs21pY2EgKGNvbiB2YWxvcmVzIHBvc2libGVzICQxJCAow6l4aXRvKSB5ICQwJCAoZnJhY2FzbykpIGRlcGVuZGllbnRlICR5JCBjb24gZWwgdmFsb3IgZGUgcHJvYmFiaWxpZGFkICRwKHgpXGluIFswLCAxXSQgcXVlIGRlcGVuZGUgZGUgYWxndW5hIHZhcmlhYmxlIGN1YW50aXRhdGl2YSAkeCQuDQoNCkNvbW8gc2UgbWVuY2lvbsOzIGVuIGxhIHNlY2Npw7NuICoqMSoqIGxvcyBtb2RlbG9zIGRlIHJlZ3Jlc2nDs24gdXNhZG9zIGVuIGVzdGUgZXN0dWRpbyBwdWVkZW4gc2VyIHZpc3RvcyBjb21vIGNhc29zIHBhcnRpY3VsYXJlcyBkZWwgTW9kZWxvIExpbmVhbCBHZW5lcmFsaXphZG8gKCoqR0xNKiogcG9yIHN1cyBzaWdsYXMgZW4gaW5nbMOpcykuIEVzdGUgbW9kZWxvIGV4dGllbmRlIGFsIG1vZGVsbyBsaW5lYWwgZ2VuZXJhbCBhbCBsb2dyYXIgcXVlIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlIGVzdMOhIHJlbGFjaW9uYWRhIGxpbmVhbG1lbnRlIGNvbiBzdXMgZmFjdG9yZXMgeSBjb3ZhcmlhYmxlcyBhIHRyYXbDqXMgZGUgYWxndW5hIGZ1bmNpw7NuIGRlIGVubGFjZSB5IHF1ZSBsYSB2YXJpYWJsZSBkZXBlbmRpZW50ZSBwdWVkYSB0ZW5lciB1bmEgZGlzdHJpYnVjacOzbiBkaWZlcmVudGUgYSBsYSBub3JtYWwuIEFkZW3DoXMgZGUgbG9zIG1vZGVsb3MgdXNhZG9zIGVuIGVzdGUgZXN0dWRpbywgZWwgKipHTE0qKiB0YW1iacOpbiBjdWJyZTogbW9kZWxvcyBsb2dsaW5lYWxlcyBwYXJhIGRhdG9zIGRlIHJlY3VlbnRvLCBtb2RlbG9zIGxvZy1sb2cgY29tcGxlbWVudGFyaW8gcGFyYSBkYXRvcyBkZSBzdXBlcnZpdmVuY2lhIGNlbnN1cmFkb3MgcG9yIGludGVydmFsb3MsIHkgb3Ryb3MgbW9kZWxvcyBlc3RhZMOtc3RpY29zIGEgdHJhdsOpcyBkZSBsYSBwcm9waWEgZm9ybXVsYWNpw7NuIGdlbmVyYWwgZGVsIG1vZGVsby4NCg0KQ29tbyAqKkdMTSoqIHBlcm1pdGUgZXNwZWNpZmljYXIgZGlzdHJpYnVjaW9uZXMgZGlmZXJlbnRlcyBhIGxhIG5vcm1hbCB5IHVuYSBmdW5jacOzbiBkZSBlbmxhY2UgKGVudGVuZGlkYSBjb21vIHVuYSB0cmFuc2Zvcm1hY2nDs24gZGUgbGEgdmFyaWFibGUgZGVwZW5kaWVudGUgcXVlIHBlcm1pdGUgbGEgZXN0aW1hY2nDs24gZGVsIG1vZGVsbykgZGlmZXJlbnRlIGEgbGEgaWRlbnRpZGFkIHNlIHB1ZWRlIHRyYWJhamFyIGNvbiBtdWNoYXMgY29tYmluYWNpb25lcyBwb3NpYmxlcyBkZSBkaXN0cmlidWNpb25lcyB5IGZ1bmNpb25lcyBkZSBlbmxhY2UsIHZhcmlhcyBkZSBsYXMgY3VhbGVzIHB1ZWRlbiBzZXIgYWRlY3VhZGFzIHBhcmEgdW4gY29uanVudG8gZGUgZGF0b3MgZW4gcGFydGljdWxhciwgZXN0byBpbXBsaWNhIHF1ZSBsYSBlbGVjY2nDs24gZGUgbGEgY29tYmluYWNpw7NuIGVzdGFyw6Egb3JpZW50YWRhIHBvciBjb25zaWRlcmFjaW9uZXMgdGXDs3JpY2FzIGEgcHJpb3JpLCBwb3IgbGEgbmF0dXJhbGV6YSBkZSBsYXMgdmFyaWFibGVzLCBsYSBleHBlcmllbmNpYSBkZWwgaW52ZXN0aWdhZG9yIHkgbG9zIHJlc3VsdGFkb3MgYWwgY29tcGFyYXIgY29tYmluYWNpb25lcy4NCg0KRW4gZWwgY2FzbyBwb3IgdHJhdGFyLCBzZSB0cmFiYWphcsOhIGNvbiBiYXNlIGVuIHVuYSBkaXN0cmlidWNpw7NuIGJpbm9taWFsIChhZGVjdWFkYSBwYXJhIHZhcmlhYmxlcyBxdWUgcmVwcmVzZW50YW4gdW5hIHJlc3B1ZXN0YSBiaW5hcmlhKSBjb24gZnVuY2nDs24gZGUgZW5sYWNlIGxvZ2l0OiQkXHBpKHgpPVxkZnJhY3tlXntcYmV0YV8wK1xiZXRhXzEgeH19ezErIGVee1xiZXRhXzAgK1xiZXRhXzEgeH19PSAgXGRmcmFjezF9ezErIGVeey0oXGJldGFfMCtcYmV0YV8xIHgpfX1caHNwYWNlezEwbW19KDMwKSQkKGRlbCBpbmdsw6lzICoqbG9nKiphcml0aG1pYyB1bioqaXQqKjogdW5pZGFkIGxvZ2Fyw610bWljYSAobmF0dXJhbCkpOyBxdWUgYWRlbcOhcyBlcyBhcHJvcGlhZGEgw7puaWNhbWVudGUgcGFyYSBsYSBkaXN0cmlidWNpw7NuIGJpbm9taWFsKSwgcG9yIGxvIGN1YWwgdW4gbm9tYnJlIG3DoXMgYWRlY3VhZG8gcGFyYSBsYSByZWdyZXNpw7NuIHBvZHLDrWEgc2VyIHJlZ3Jlc2nDs24gbG9nw61zdGljYSBiaW5hcmlhLiBDYWJlIGFub3RhciBxdWUgZWwgdMOpcm1pbm8gbG9nw61zdGljbyBoYWNlIHJlZmVyZW5jaWEgYSBxdWUgbGEgZnVuY2nDs24gZGUgZW5sYWNlIGNvbnN0aXR1eWUsIGVuIGNpZXJ0byBzZW50aWRvLCB1biByZWZpbmFtaWVudG8gZGVsIG1vZGVsbyBleHBvbmVuY2lhbCBkZSBjcmVjaW1pZW50bywgZGVzY3JpdG8gcG9yIGxhIGZ1bmNpw7NuIHNpZ21vaWRlYSwgZGUgdW5hIG1hZ25pdHVkIGFzb2NpYWRhIGNvbiB1biBjb25qdW50byAkQyQuDQoNClBhcmEgZmFjaWxpdGFyIGxhcyBpbnRlcnByZXRhY2lvbmVzIHNlIGVudGllbmRlIHF1ZSBsYSBmdW5jacOzbiBkZSBlbmxhY2UgJFxwaSh4KSQgcHJvdmllbmUgZGUgdW5hIHJhesOzbiBkZSBwcm9iYWJpbGlkYWRlcyAoY29ub2NpZGEgZW4gaWRpb21hIGluZ2zDqXMgY29tbyBPRERTIHJhdGlvIChPUikpLCBxdWUgYSBzdSB2ZXogZXMgZWwgYXJndW1lbnRvIGRlIHVuIGxvZ2FyaXRtbzogJFxsb2dcbGVmdChcZnJhY3tccGkoeCl9ezEtXHBpKHgpfVxyaWdodCkkLCBhc8OtLCBzZSBtb2RlbGEgbGEgcHJvYmFiaWxpZGFkIGRlIHF1ZSBsYSB2YXJpYWJsZSBkZSByZXNwdWVzdGEgcGVydGVuZXpjYSBhbCBuaXZlbCBkZSByZWZlcmVuY2lhICQxJCBlbiBmdW5jacOzbiBkZWwgdmFsb3IgZGUgbG9zIHByZWRpY3RvcmVzLiBDb21wbGVtZW50YXJpYW1lbnRlLCBsYSB0cmFuc2Zvcm1hY2nDs24gZGUgcHJvYmFiaWxpZGFkZXMgYSByYXpvbmVzIGRlIHByb2JhYmlsaWRhZCBlcyBjb25zZXJ2YSBsYSBtb25vdG9uaWNpZGFkIGRlIHNlbnRpZG9zLiBBZGVtw6FzLCBsYSB0cmFuc2Zvcm1hY2nDs24gY29udmllcnRlIGVsIGludGVydmFsbyBkZSBwcm9iYWJpbGlkYWQgJFswLDFdJCBhICQoLVxpbmZ0eSxcaW5mdHkpJC4gTGFzIHByb3BpZWRhZGVzIHF1ZSBzZSBkYW4gZW50cmUgbGFzIHByb2JhYmlsaWRhZGVzIGNvbXBsZW1lbnRhcmlhcyBkZSDDqXhpdG8geSBmcmFjYXNvLCBzdXMgcmF6b25lcyB5IGxhIGZ1bmNpw7NuIGRlIGVubGFjZSBsb2dpdCBzb246DQoNCnx8fHwNCjotOnw6LTp8Oi06fA0KJHAow6l4aXRvKT1wKGZyYWNhc28pJHwkT1I9MSR8JExvZ2l0XGxlZnQoT1JccmlnaHQpPTAkDQokcCjDqXhpdG8pPHAoZnJhY2FzbykkfCRPUjwxJHwkTG9naXRcbGVmdChPUlxyaWdodCk8MCQNCiRwKMOpeGl0byk+cChmcmFjYXNvKSR8JE9SPjEkfCRMb2dpdFxsZWZ0KE9SXHJpZ2h0KT4wJA0KfHx8fA0KDQpTZSBlbnRpZW5kZSBxdWUgbGEgdHJhbnNmb3JtYWNpw7NuICRMb2dpdCQgY2FyZWNlIGRlIHNlbnRpZG8gcGFyYSBsYSBjZXJ0ZXphIGRlbCDDqXhpdG8gbyBkZWwgZnJhY2Fzby4NCg0KKipQbGFudGVhbWllbnRvIGRlbCBQcm9ibGVtYSoqDQoNCkNvbiBiYXNlIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlc2NyaXRvIGVuIGxhIHNlY2Npw7NuICoqMioqIHNlIGZvcm11bGFyw6EgdW4gbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbG9nw61zdGljYSBzaW1wbGUgcGFyYSBlc3R1ZGlhciBsYSByZWxhY2nDs24gbG9nw61zdGljYSBzdXB1ZXN0YSBlbnRyZSBsYXMgdmFyYWlibGVzIGRlZmluaWRhcyBwb3IgbG9zIGNhbXBvczogKipJbmNvbWUqKiAodmFyaWFibGUgaW5kZXBlbmRpZW50ZSkgeSAqKioqICh2YXJpYWJsZSBkZXBlbmRpZW50ZSksIGNvbiBiYXNlIGVuIHVuYSBkaXN0cmlidWNpw7NuIGJpbm9taWFsIHkgbGEgZnVuY2nDs24gZGUgZW5sYWNlICRMb2dpdCQuDQoNCg0KIyMgUmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgbGFzIHZhcmlhYmxlcyBkZSBlc3R1ZGlvLiB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KDQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvIGRlIGxhIHZhcmlhYmxlIGluZGVwZW5kaWVudGUgKipDaGFuY2Ugb2YgQWRtaXQqKiwgc3UgYm94cGxvdCBlIGhpc3RvZ3JhbWEuIERlIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlICoqQ29sdW1uYSAxKioNCg0Kc2UgbW9zdHJhcsOhIHN1IGRpYWdyYW1hIGRlIGJhcnJhcywgYXPDrSBjb21vIHN1IG1lZGlhIHkgbWVkaWFuYS4gQWRlbcOhcywgc2UgZXhoaWJpcsOhIHVuIERpYWdyYW1hIGRlIENhamFzIGNvbmp1bnRvIGVudHJlIGFxdWVsbGFzLg0KDQpDb24gYmFzZSBlbiBsYSBwZXN0YcOxYSAqKlJlc3VtZW4geSBCb3hwbG90IGRlIENoYW5jZSBvZiBBZG1pdCoqIHNlIHB1ZWRlIGNvbWVudGFyIHF1ZSBsYSB2YXJpYWJsZSAqKkNvbHVtbmEgMSoqLCBjb21vIHNlIGhpem8gZW4gbGFzIHNlY2Npb25lcyBhbnRlcmlvcmVzLCBubyBwcmVzZW50YSBhc2ltZXRyaWEgeSBzdXMgZGF0b3MgZXN0YW4gZGlzdHJpYnVpZG9zIG5vcm1hbG1lbnRlLiBBc8OtLCBwdWVkZSBkZWNpcnNlIHF1ZSBsYSB2YXJpYWJsZSByZWdpc3RyYSB2YWxvcmVzIG5vcm1hbGVzIGVuIHJlbGFjacOzbiBjb24gc3UgaW50ZXJ2YWxvIGRlIG1lZGljacOzbi4gTG8gZXhwdWVzdG8gdGFtYmnDqW4gZXMgY29uc3RhdGFibGUgYSB0cmF2w6lzIGRlIGxhIHBlc3Rhw7FhICoqSGlzdG9ncmFtYSBkZSBDb2x1bW5hIDEqKi4NCg0KQXNpbWlzbW8sIHNlZ8O6biBsYSBwZXN0YcOxYSAqKlJlc3VtZW4geSBEaWFncmFtYSBkZSBCYXJyYXMgZGUgU2V4KiosIGxhIHZhcmlhYmxlIGN1YWxpdGF0aXZhOjpub21pbmFsICoqc2V4KiogbXVlc3RyYSBwcm9wb3JjaW9uYWxpZGFkIHBhcmEgbG9zIGNhc29zIGZhdm9yYWJsZXMgMSwgcXVlIHBhcmEgbG9zIGNhc29zIGRlc2Zhdm9yYWJsZXMgMC4NCg0KQ29tcGxlbWVudGFyaWFtZW50ZSwgbGEgcGVzdGHDsWEgKipSZXN1bWVuIHkgRGlhZ3JhbWEgZGUgQ2FqYXMgQ29uanVudG8qKiBtdWVzdHJhIHF1ZSBsYXMgb2JzZXJ2YWNpb25lcyBzb24gY29uc2lzdGVudGVzIGNvbiBlbCBjb250ZXh0byBkZWwgcHJvYmxlbWE7IGVzIGRlY2lyLCBwYXJhIGxvcyBjYXNvcyBmYXZvcmFibGVzIGRlICoqQ29sdW1uYSAxKiogbG9zIHJlc3VsdGFkb3MgZGUgKipzZXgqKiBzb24gcHJvcG9yY2lvbmFsZXMsIGVuIGNvbXBhcmFjacOzbiBjb24gbG9zIGNhc29zIGRlc2Zhdm9yYWJsZXMuIEFkZW3DoXMsIGFtYm9zIGNhc29zOiBsb3MgZmF2b3JhYmxlcyB5IGxvcyBkZXNmYXZvcmFibGVzLCBtdWVzdHJhbiBjb21wb3J0YW1pZW50byBub3JtYWwuDQoNCg0KIyMjIFJlc3VtZW4geSBCb3hwbG90IGRlIENvbHVtbmEgMQ0KDQpgYGB7ciByZXN1bWVuX0NoYW5jZV9fb2ZfX0FkbWl0LCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkoR2FzdG9zX0RhdGFzZXQkYENvbHVtbmEgMWApDQpib3hwbG90KEdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgLCBtYWluID0gIkRpYWdyYW1hIGRlIENhamEgZGUgQ2hhbmNlIG9mIEFkbWl0IiwgY29sID0gYygib3JhbmdlIikpDQpgYGANCg0KIyMjIEhpc3RvZ3JhbWEgZGUgQ29sdW1uYSAxDQpgYGB7ciBoaXN0b2dyYW1hX0NvbHVtbmFfMSwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpzdW1tYXJ5KEdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgKQ0KaGlzdChHYXN0b3NfRGF0YXNldCRgQ29sdW1uYSAxYCwgbWFpbiA9ICJIaXN0b2dyYW1hIGRlIENvbHVtbmEgMSIsIGNvbCA9IGMoImdvbGQiKSkNCmBgYA0KDQojIyMgUmVzdW1lbiB5IERpYWdyYW1hIGRlIEJhcnJhcyBkZSBTZXgNCg0KYGBge3IgcmVzdW1lbl9SZXNlYXJjaCwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQp0YWJsZShHYXN0b3NfRGF0YXNldCRzZXgpDQpwcm9wLnRhYmxlKHRhYmxlKEdhc3Rvc19EYXRhc2V0JHNleCkpDQpiYXJwbG90KHRhYmxlKEdhc3Rvc19EYXRhc2V0JHNleCkpDQpgYGANCg0KIyMjIFJlc3VtZW4geSBEaWFncmFtYSBkZSBDYWphcyBDb25qdW50bw0KDQpgYGB7ciBib3hwbG90X0Nvbmp1bnRvX0NoYW5jZS1vZi1BZG1pdF9SZXNlYXJjaCwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQp0YXBwbHkoR2FzdG9zX0RhdGFzZXQkYENvbHVtbmEgMWAsIEdhc3Rvc19EYXRhc2V0JHNleCwgbWVhbikNCnRhcHBseShHYXN0b3NfRGF0YXNldCRgQ29sdW1uYSAxYCwgR2FzdG9zX0RhdGFzZXQkc2V4LCBtZWRpYW4pDQpib3hwbG90KEdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgfkdhc3Rvc19EYXRhc2V0JHNleCwgbWFpbiA9ICJCb3hwbG90IENvbmp1bnRvOiBDaGFuY2Ugb2YgQWRtaXQgLSBSZXNlYXJjaCIsIGNvbCA9IGMoIm9yYW5nZSIsICJnb2xkIikpDQpgYGANCiMjIEZvcm11bGFjacOzbiBkZWwgbW9kZWxvIGRlIFJMb2dTIGVudHJlIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpby4gey50YWJzZXQgLnRhYnNldC1waWxsc30NCg0KTGEgbmF2ZWdhY2nDs24gYSB0cmF2w6lzIGRlIGxhcyBwZXN0YcOxYXMgbXVlc3RyYSBsb3MgY29lZmljaWVudGVzIGRlbCBtb2RlbG8gUkxvZ1MgeSBzdSByZXN1bWVuIGVzdGFkw61zdGljby4gU2UgbWVuY2lvbmEgZGUgbnVldm8gcXVlIGxhcyB2YXJpYWJsZXMgZGUgaW50ZXLDqXMgc29uOiAqKkNoYW5jZSBvZiBBZG1pdCoqICh2YXJpYWJsZSBpbmRlcGVuZGllbnRlKSB5ICoqUmVzZWFyY2gqKiAodmFyaWFibGUgZGVwZW5kaWVudGUpLg0KDQpMYSBwZXN0YcOxYSAqKkNvZWZpY2llbnRlcyBkZWwgTW9kZWxvIFJMb2dTKiogcGVybWl0ZSBlc3RhYmxlY2VyIHF1ZSBlbCBtb2RlbG8gUkxvZ1MgcmVsYWNpb25hIGEgJFxwaSh4KSQgY29uICR4JCBhIHRyYXbDqXMgZGUgbGEgZnVuY2nDs24gZGUgZW5sYWNlICRMb2dpdCQgZGUgbGEgc2lndWllbnRlIG1hbmVyYTokJFxmcmFje1xwaSh4KX17MS1ccGkoeCl9PWVeey0wLDQwNTQ2MSswLDgxMDkzMDJcY2RvdCB4fVxoc3BhY2V7MTBtbX0oMzEpJCQNCg0KKipFbCBjb2VmaWNpZW50ZSBwYXJhIGVsIGludGVyY2VwdG8gZXMgLTAuNDA1NDY1MSB5IGVsIGNvZWZpY2llbnRlIHBhcmEgbGEgdmFyaWFibGUgQ29sdW1uYSAxIGVzIDAuODEwOTMwMi4qKg0KDQoqKmlnbmlmaWNhbmNpYSBlc3RhZMOtc3RpY2E6KiogQW1ib3MgY29lZmljaWVudGVzIHNvbiBlc3RhZMOtc3RpY2FtZW50ZSBzaWduaWZpY2F0aXZvcywgeWEgcXVlIHRpZW5lbiB2YWxvcmVzIHAgPCAwLjAwMS4gRXN0byBpbmRpY2EgcXVlIGFtYmFzIHZhcmlhYmxlcyB0aWVuZW4gdW5hIHJlbGFjacOzbiBzaWduaWZpY2F0aXZhIGNvbiBsYSB2YXJpYWJsZSBkZSByZXNwdWVzdGEgKHNleCkuDQoNCioqSW50ZXJwcmV0YWNpw7NuIGRlIGNvZWZpY2llbnRlczoqKg0KDQpFbCBjb2VmaWNpZW50ZSBwYXJhIGVsIGludGVyY2VwdG8gKC0wLjQwNTQ2NTEpIGluZGljYSBlbCBsb2dhcml0bW8gZGVsIG9kZHMgZGUgbGEgY2F0ZWdvcsOtYSBkZSByZWZlcmVuY2lhIGRlIGxhIHZhcmlhYmxlIHNleCBjdWFuZG8gQ29sdW1uYSAxIGVzIGNlcm8uDQoNCkVsIGNvZWZpY2llbnRlIHBhcmEgbGEgdmFyaWFibGUgQ29sdW1uYSAxICgwLjgxMDkzMDIpIGluZGljYSBjw7NtbyBjYW1iaWEgZWwgbG9nYXJpdG1vIGRlbCBvZGRzIGRlIGxhIHZhcmlhYmxlIHNleCBwb3IgY2FkYSB1bmlkYWQgZGUgY2FtYmlvIGVuIENvbHVtbmEgMS4NCg0KKipSZXN1bWVuIGRlbCBtb2RlbG86KioNCg0KLUxhIGRldmlhbnphIG51bGEgZXMgMzEwNS4zIHkgbGEgZGV2aWFuemEgcmVzaWR1YWwgZXMgMzAxNS4xLCBsbyBxdWUgaW5kaWNhIHF1ZSBlbCBtb2RlbG8gZXhwbGljYSBwYXJ0ZSBkZSBsYSB2YXJpYWJpbGlkYWQgZW4gbG9zIGRhdG9zLg0KDQotRWwgQUlDIChjcml0ZXJpbyBkZSBpbmZvcm1hY2nDs24gZGUgQWthaWtlKSBlcyAzMDE5LjEsIHF1ZSBlcyB1biBpbmRpY2Fkb3IgZGUgbGEgY2FsaWRhZCBkZWwgYWp1c3RlIGRlbCBtb2RlbG8uDQoNCg0KIyMjIENvZWZpY2llbnRlcyBkZWwgTW9kZWxvIFJMb2dTDQoNCmBgYHtyIGNvZWZpY2llbnRlc19SZWdyZXNpb25fTG9naXN0aWNhX1NpbXBsZSwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQptb2RlbG9fUkxvZ19TaW1wbGUgPSBnbG0oR2FzdG9zX0RhdGFzZXQkc2V4fkdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgLCBmYW1pbHkgPSAiYmlub21pYWwiLCBkYXRhID0gZGF0YS5mcmFtZShHYXN0b3NfRGF0YXNldCRzZXgsIEdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgKSkNCmNvZWYobW9kZWxvX1JMb2dfU2ltcGxlKQ0KYGBgDQojIyMgUmVzdW1lbiBFc3RhZMOtc3RpY28gZGVsIE1vZGVsbyBSTG9nUw0KDQpgYGB7ciByZXN1bWVuX1JlZ3Jlc2lvbl9Mb2dpc3RpY2FfU2ltcGxlLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkobW9kZWxvX1JMb2dfU2ltcGxlKQ0KbW9kZWxvX1JMb2dfU2ltcGxlX1MgPSBnbG0oR2FzdG9zX0RhdGFzZXQkc2V4fkdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgLCBmYW1pbHkgPSAiYmlub21pYWwiLCBkYXRhID0gZGF0YS5mcmFtZShHYXN0b3NfRGF0YXNldCRzZXgsIEdhc3Rvc19EYXRhc2V0JGBDb2x1bW5hIDFgKSkNCnN1bW1hcnkobW9kZWxvX1JMb2dfU2ltcGxlX1MpDQpgYGANCg0KDQo=