1. Objetivos

Estudiar desde el punto de vista de la estadística descriptiva multivariante (cálculos, visualizaciones e interpretaciones) a un conjunto de datos que registran el ingreso del censo monetario para la solicitud de préstamos bancarios.

2. Descripción de los conjuntos de Datos

2.1. Fuente del conjunto de Datos

El conjunto de datos de trabajo se obtuvo casi totalmente de Kaggle: https://www.kaggle.com/datasets/uciml/adult-census-income. Es conveniente anotar que Kaggle es una compañía subsidiaria de Google LLC que mantiene una comunidad online de científicos de datos y profesionales del aprendizaje automático. Esta empresa permite a sus usuarios encontrar y publicar conjuntos de datos, explorar y crear modelos en un entorno de ciencia de datos basado en la web, trabajar con otros científicos de datos e ingenieros de aprendizaje automático y participar en concursos para resolver desafíos de ciencia de datos.

2.2. Contexto del conjunto de Datos

El conjunto de datos incluye informacion sobre el censo monetario de clientes en diversos paises, relacionados con la solicitud de prestamos bancarios. Última actualizacion se validó en 2017.

2.3. Descripción del conjunto de Datos

El conjunto de datos contiene 16 campos y 32.561 registros. Uno de los campos es simplemente un identificador numérico secuencial de los registros; otros tres son de naturaleza politómica; y el resto son numéricos estrictamente positivos. 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, excepto el campo Serial, el tipo de variable y su escala de medición con base en la nomenclatura:

(tipo_de_variable::escala_de_medición[ordenamiento]):

  • Age::():Esta variable registra la edad de los individuos en el conjunto de datos. Se expresa en años y abarca un rango que va desde los 17 hasta los 90 años

  • Workclass: Esta variable registra la clase de trabajo que tienen los individuos y son las siguientes opciones: trabajo privado, trabajo en el gobierno federal, trabajo en el gobierno estatal, trabajo independiente y no tiene tabajo

  • Fnlwgt: Esta variable registra el peso final

  • Education: Esta variable registra el grado de educacion alcanzada

  • Education.num: Esta variable registra el nivel de educacion alcanzada

  • Marital.status: Esta variable registra el estado civil de los individuos

  • Occupation: Esta variable registra la ocupacion de los individuos

  • Relationship: Esta variable registra el envio de relaciones

  • Race: Esta variable registra la carrera universtaria de los individuos

  • Sex:: (): Esta variable registra el género de todos los individuos en el conjunto de datos. Se representa mediante dos categorías: Male: masculino female: femenino

  • Capital.again: Esta variable registra una nueva capital

  • Capital.loss: Esta variable registra una capital antigua

  • Hours.per.week: Esta variable registra las horas trabajadas por semana

  • Native.coutry: Esta variable representa la ciudad nativa de los individuos

  • Income: Esta variable representa los ingresos monetarios de los individios mensualmente

  • FinalDecision: Esta variable registra la aceptacion o rechazo del prestamo bancario. se representa mediante las categorias 1: aceptado 0: rechazado

Estructura del Conjunto de Datos

str(ingreso_dataset)
## tibble [32,561 × 15] (S3: tbl_df/tbl/data.frame)
##  $ age           : num [1:32561] 90 82 66 54 41 34 38 74 68 41 ...
##  $ workclass     : chr [1:32561] "?" "Private" "?" "Private" ...
##  $ fnlwgt        : num [1:32561] 77053 132870 186061 140359 264663 ...
##  $ education     : chr [1:32561] "HS-grad" "HS-grad" "Some-college" "7th-8th" ...
##  $ education.num : num [1:32561] 9 9 10 4 10 9 6 16 9 10 ...
##  $ marital.status: chr [1:32561] "Widowed" "Widowed" "Widowed" "Divorced" ...
##  $ occupation    : chr [1:32561] "?" "Exec-managerial" "?" "Machine-op-inspct" ...
##  $ relationship  : chr [1:32561] "Not-in-family" "Not-in-family" "Unmarried" "Unmarried" ...
##  $ race          : chr [1:32561] "White" "White" "Black" "White" ...
##  $ sex           : chr [1:32561] "Female" "Female" "Female" "Female" ...
##  $ capital.gain  : num [1:32561] 0 0 0 0 0 0 0 0 0 0 ...
##  $ capital.loss  : num [1:32561] 4356 4356 4356 3900 3900 ...
##  $ hours.per.week: num [1:32561] 40 18 40 40 40 45 40 20 40 60 ...
##  $ native.country: chr [1:32561] "United-States" "United-States" "United-States" "United-States" ...
##  $ income        : chr [1:32561] "<=50K" "<=50K" "<=50K" "<=50K" ...

Visualización del Conjunto de Datos Inicial

ingreso_dataset
## # A tibble: 32,561 × 15
##      age workclass   fnlwgt education    education.num marital.status occupation
##    <dbl> <chr>        <dbl> <chr>                <dbl> <chr>          <chr>     
##  1    90 ?            77053 HS-grad                  9 Widowed        ?         
##  2    82 Private     132870 HS-grad                  9 Widowed        Exec-mana…
##  3    66 ?           186061 Some-college            10 Widowed        ?         
##  4    54 Private     140359 7th-8th                  4 Divorced       Machine-o…
##  5    41 Private     264663 Some-college            10 Separated      Prof-spec…
##  6    34 Private     216864 HS-grad                  9 Divorced       Other-ser…
##  7    38 Private     150601 10th                     6 Separated      Adm-cleri…
##  8    74 State-gov    88638 Doctorate               16 Never-married  Prof-spec…
##  9    68 Federal-gov 422013 HS-grad                  9 Divorced       Prof-spec…
## 10    41 Private      70037 Some-college            10 Never-married  Craft-rep…
## # ℹ 32,551 more rows
## # ℹ 8 more variables: relationship <chr>, race <chr>, sex <chr>,
## #   capital.gain <dbl>, capital.loss <dbl>, hours.per.week <dbl>,
## #   native.country <chr>, income <chr>

Estructura del Conjunto de Datos Reescrito

Conjunto de Datos Reescrito

3. Estimaciones Multivariadas

La media, varianza y covarianza son medidas fundamentales para describir el comportamiento de variables aleatorias. En el estudio descriptivo multivariable, estas medidas se estiman a partir de vectores y matrices que representan un conjunto de datos con (numero de variables) variables aleatorias numéricas. El vector de medias indica el valor esperado o punto medio de cada variable, mientras que la matriz de varianzas-covarianzas estima las dispersiones y covarianzas entre las variables. Se hace referencia a la sección 3.2 para obtener más detalles sobre este análisis.

3.1. Planteamiento del Problema

En la sección 2 del texto se realizará el cálculo e interpretación del vector de medias, la matriz de varianzas-covarianzas y la matriz de correlaciones para las variables numéricas del conjunto de datos. Se especifica que estas variables están en una escala de medición de razón. (mencionar las variables numericas)

3.2. Desarrollo del Análisis

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 .

El Vector de Medias y los Boxplots, los datos registrados para cada variable tienden a tener colas izquierdas en sus distribuciones, lo que indica que las medias estimadas son altas. Se menciona que solo la variable SOP muestra un sesgo notorio en comparación con las demás en relación a la mediana. Además, todos los casos atípicos se encuentran en el extremo inferior. Al revisar los rangos de las variables, se observa que las medias son altas en comparación con los extremos superiores de cada rango.

Al analizar la Matriz de Varianzas-Covarianzas, se interpreta que las relaciones entre las variables estudiadas tienden a ser de proporcionalidad directa, lo cual es consistente con las expectativas. Además, se menciona la existencia de un gráfico multivariado en la pestaña “Diagrama Conjunto de Dispersión, Distribución y Correlaciones [SA]” de la sección 4.2, el cual proporciona una representación visual de estas relaciones.

El texto indica que al analizar la Matriz de Correlaciones y considerar la Matriz de Varianzas-Covarianzas, se puede verificar que las correlaciones entre las variables TOEFL_Score, GRE_Score, CGPA y Chance_of_Admit son más altas y siempre positivas. Esta relación positiva y fuerte entre estas variables es consistente con el fenómeno estudiado. Para obtener más detalles sobre este análisis, se sugiere consultar la sección 4.2.

Vector de medias y boxplots

Matriz de varianzas-covarianzas

Matriz de correlaciones

LS0tDQp0aXRsZTogIkVzdHVkaW8gZGVzY3JpcHRpdm8gbXVsdGl2YXJpYW50ZSBjb24gYmFzZSBlbiB1biBjb25qdW50byBkZSBkYXRvcyBxdWUgcmVnaXN0cmFuIGVsIGluZ3Jlc28gZGVsIGNlbnNvIG1vbmV0YXJpbyBwYXJhIGxhIHNvbGljaXR1ZCBkZSBwcsOpc3RhbW9zIGJhbmNhcmlvcy4iDQphdXRob3I6ICJQb3I6IEcxOjpvc2Nhci5jYWJhbGxlcm86OmNyaXN0YWwuYmFzYW50ZTo6YnJlbmRhLmNlZGVubzo6QGNvcnJlb3VuaXZhbGxlLmVkdS5jbyINCmRhdGU6ICIyMDI0LTAzLTIwIg0KDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB1bml0ZWQNCi0tLQ0KPCEtLSBDb25maWd1cmFjacOzbiBHbG9iYWwgZGUgUiAtLT4NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkocmVhZHhsKQ0KDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1UUlVFKQ0KDQppbmdyZXNvX2RhdGFzZXQgPC0gcmVhZF9leGNlbCgiQzovVXNlcnMvVVNVQVJJTy9PbmVEcml2ZS9Fc2NyaXRvcmlvL0N1YXJ0byBTZW1lc3RyZSBJbmdlbmllcmlhIEluZHVzdHJpYWwvR2VzdGlvbiBkZSBkYXRvcy9JbmdyZXNvc19EZV9BZHVsdG9zIHYxLnhsc3giKQ0KVmlldyhpbmdyZXNvX2RhdGFzZXQpDQpgYGANCiMjIDEuIE9iamV0aXZvcw0KDQpFc3R1ZGlhciBkZXNkZSBlbCBwdW50byBkZSB2aXN0YSBkZSBsYSBlc3RhZMOtc3RpY2EgZGVzY3JpcHRpdmEgbXVsdGl2YXJpYW50ZSAoY8OhbGN1bG9zLCB2aXN1YWxpemFjaW9uZXMgZSBpbnRlcnByZXRhY2lvbmVzKSBhIHVuIGNvbmp1bnRvIGRlIGRhdG9zIHF1ZSByZWdpc3RyYW4gZWwgaW5ncmVzbyBkZWwgY2Vuc28gbW9uZXRhcmlvIHBhcmEgbGEgc29saWNpdHVkIGRlIHByw6lzdGFtb3MgYmFuY2FyaW9zLg0KDQojIyAyLiBEZXNjcmlwY2nDs24gZGUgbG9zIGNvbmp1bnRvcyBkZSBEYXRvcw0KDQoNCiMjIyAyLjEuIEZ1ZW50ZSBkZWwgY29uanVudG8gZGUgRGF0b3MNCg0KRWwgY29uanVudG8gZGUgZGF0b3MgZGUgdHJhYmFqbyBzZSBvYnR1dm8gY2FzaSB0b3RhbG1lbnRlIGRlICoqS2FnZ2xlKio6IA0KaHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9kYXRhc2V0cy91Y2ltbC9hZHVsdC1jZW5zdXMtaW5jb21lLiBFcyBjb252ZW5pZW50ZSBhbm90YXIgcXVlICoqS2FnZ2xlKiogZXMgdW5hIGNvbXBhw7HDrWEgc3Vic2lkaWFyaWEgZGUgR29vZ2xlIExMQyBxdWUgbWFudGllbmUgdW5hIGNvbXVuaWRhZCBvbmxpbmUgZGUgY2llbnTDrWZpY29zIGRlIGRhdG9zIHkgcHJvZmVzaW9uYWxlcyBkZWwgYXByZW5kaXphamUgYXV0b23DoXRpY28uIEVzdGEgZW1wcmVzYSBwZXJtaXRlIGEgc3VzIHVzdWFyaW9zIGVuY29udHJhciB5IHB1YmxpY2FyIGNvbmp1bnRvcyBkZSBkYXRvcywgZXhwbG9yYXIgeSBjcmVhciBtb2RlbG9zIGVuIHVuIGVudG9ybm8gZGUgY2llbmNpYSBkZSBkYXRvcyBiYXNhZG8gZW4gbGEgd2ViLCB0cmFiYWphciBjb24gb3Ryb3MgY2llbnTDrWZpY29zIGRlIGRhdG9zIGUgaW5nZW5pZXJvcyBkZSBhcHJlbmRpemFqZSBhdXRvbcOhdGljbyB5IHBhcnRpY2lwYXIgZW4gY29uY3Vyc29zIHBhcmEgcmVzb2x2ZXIgZGVzYWbDrW9zIGRlIGNpZW5jaWEgZGUgZGF0b3MuDQoNCiMjIyAyLjIuIENvbnRleHRvIGRlbCBjb25qdW50byBkZSBEYXRvcw0KDQpFbCBjb25qdW50byBkZSBkYXRvcyBpbmNsdXllIGluZm9ybWFjaW9uIHNvYnJlIGVsIGNlbnNvIG1vbmV0YXJpbyBkZSBjbGllbnRlcyBlbiBkaXZlcnNvcyBwYWlzZXMsIHJlbGFjaW9uYWRvcyBjb24gbGEgc29saWNpdHVkIGRlIHByZXN0YW1vcyBiYW5jYXJpb3MuIMOabHRpbWEgYWN0dWFsaXphY2lvbiBzZSB2YWxpZMOzIGVuIDIwMTcuDQoNCiMjIyAyLjMuIERlc2NyaXBjacOzbiBkZWwgY29uanVudG8gZGUgRGF0b3Mgey50YWJzZXQgLnRhYnNldC1waWxsc30NCkVsIGNvbmp1bnRvIGRlIGRhdG9zIGNvbnRpZW5lIDE2IGNhbXBvcyB5IDMyLjU2MSByZWdpc3Ryb3MuIFVubyBkZSBsb3MgY2FtcG9zIGVzIHNpbXBsZW1lbnRlIHVuIGlkZW50aWZpY2Fkb3IgbnVtw6lyaWNvIHNlY3VlbmNpYWwgZGUgbG9zIHJlZ2lzdHJvczsgb3Ryb3MgdHJlcyBzb24gZGUgbmF0dXJhbGV6YSBwb2xpdMOzbWljYTsgeSBlbCByZXN0byBzb24gbnVtw6lyaWNvcyBlc3RyaWN0YW1lbnRlIHBvc2l0aXZvcy4gTGEgbGlzdGEgc2lndWllbnRlIGxvcyBkZXNjcmliZSBlbiBlbCBtaXNtbyBvcmRlbiwgZGUgaXpxdWllcmRkYSBhIGRlcmVjaGEsIGNvbW8gYXBhcmVjZW4gZW4gZWwgcmFuZ28gZGUgZGF0b3MgcXVlIGxvcyBjb250aWVuZSB5IHNlIGVzdGFibGVjZSBwYXJhIGNhZGEgY2FtcG8sIGV4Y2VwdG8gZWwgY2FtcG8gU2VyaWFsLCBlbCB0aXBvIGRlIHZhcmlhYmxlIHkgc3UgZXNjYWxhIGRlIG1lZGljacOzbiBjb24gYmFzZSBlbiBsYSBub21lbmNsYXR1cmE6DQoNCih0aXBvX2RlX3ZhcmlhYmxlOjplc2NhbGFfZGVfbWVkaWNpw7NuW29yZGVuYW1pZW50b10pOg0KDQotICoqQWdlOioqOigpOkVzdGEgdmFyaWFibGUgcmVnaXN0cmEgbGEgZWRhZCBkZSBsb3MgaW5kaXZpZHVvcyBlbiBlbCBjb25qdW50byBkZSBkYXRvcy4gU2UgZXhwcmVzYSBlbiBhw7FvcyB5IGFiYXJjYSB1biByYW5nbyBxdWUgdmEgZGVzZGUgbG9zIDE3IGhhc3RhIGxvcyA5MCBhw7Fvcw0KDQotICoqV29ya2NsYXNzOioqIEVzdGEgdmFyaWFibGUgcmVnaXN0cmEgbGEgY2xhc2UgZGUgdHJhYmFqbyBxdWUgdGllbmVuIGxvcyBpbmRpdmlkdW9zIHkgc29uIGxhcyBzaWd1aWVudGVzIG9wY2lvbmVzOiB0cmFiYWpvIHByaXZhZG8sIHRyYWJham8gZW4gZWwgZ29iaWVybm8gZmVkZXJhbCwgdHJhYmFqbyBlbiBlbCBnb2JpZXJubyBlc3RhdGFsLCB0cmFiYWpvIGluZGVwZW5kaWVudGUgeSBubyB0aWVuZSB0YWJham8NCg0KLSAqKkZubHdndDoqKiBFc3RhIHZhcmlhYmxlIHJlZ2lzdHJhIGVsIHBlc28gZmluYWwNCg0KLSAqKkVkdWNhdGlvbjoqKiBFc3RhIHZhcmlhYmxlIHJlZ2lzdHJhIGVsIGdyYWRvIGRlIGVkdWNhY2lvbiBhbGNhbnphZGENCg0KLSAqKkVkdWNhdGlvbi5udW06KiogRXN0YSB2YXJpYWJsZSByZWdpc3RyYSBlbCBuaXZlbCBkZSBlZHVjYWNpb24gYWxjYW56YWRhDQoNCi0gKipNYXJpdGFsLnN0YXR1czoqKiBFc3RhIHZhcmlhYmxlIHJlZ2lzdHJhIGVsIGVzdGFkbyBjaXZpbCBkZSBsb3MgaW5kaXZpZHVvcyANCg0KLSAqKk9jY3VwYXRpb246KiogRXN0YSB2YXJpYWJsZSByZWdpc3RyYSBsYSBvY3VwYWNpb24gZGUgbG9zIGluZGl2aWR1b3MgDQoNCi0gKipSZWxhdGlvbnNoaXA6KiogRXN0YSB2YXJpYWJsZSByZWdpc3RyYSBlbCBlbnZpbyBkZSByZWxhY2lvbmVzIA0KDQotICoqUmFjZToqKiBFc3RhIHZhcmlhYmxlIHJlZ2lzdHJhIGxhIGNhcnJlcmEgdW5pdmVyc3RhcmlhIGRlIGxvcyBpbmRpdmlkdW9zIA0KDQotICoqU2V4OioqOiAoKTogRXN0YSB2YXJpYWJsZSByZWdpc3RyYSBlbCBnw6luZXJvIGRlIHRvZG9zIGxvcyBpbmRpdmlkdW9zIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zLiBTZSByZXByZXNlbnRhIG1lZGlhbnRlIGRvcyBjYXRlZ29yw61hczogTWFsZTogbWFzY3VsaW5vIGZlbWFsZTogZmVtZW5pbm8NCg0KLSAqKkNhcGl0YWwuYWdhaW46KiogRXN0YSB2YXJpYWJsZSByZWdpc3RyYSB1bmEgbnVldmEgY2FwaXRhbA0KDQotICoqQ2FwaXRhbC5sb3NzOioqIEVzdGEgdmFyaWFibGUgcmVnaXN0cmEgdW5hIGNhcGl0YWwgYW50aWd1YQ0KDQotICoqSG91cnMucGVyLndlZWs6KiogRXN0YSB2YXJpYWJsZSByZWdpc3RyYSBsYXMgaG9yYXMgdHJhYmFqYWRhcyBwb3Igc2VtYW5hIA0KDQotICoqTmF0aXZlLmNvdXRyeToqKiBFc3RhIHZhcmlhYmxlIHJlcHJlc2VudGEgbGEgY2l1ZGFkIG5hdGl2YSBkZSBsb3MgaW5kaXZpZHVvcyANCg0KLSAqKkluY29tZToqKiBFc3RhIHZhcmlhYmxlIHJlcHJlc2VudGEgbG9zIGluZ3Jlc29zIG1vbmV0YXJpb3MgZGUgbG9zIGluZGl2aWRpb3MgbWVuc3VhbG1lbnRlIA0KDQotICoqRmluYWxEZWNpc2lvbjoqKiBFc3RhIHZhcmlhYmxlIHJlZ2lzdHJhIGxhIGFjZXB0YWNpb24gbyByZWNoYXpvIGRlbCBwcmVzdGFtbyBiYW5jYXJpby4gc2UgcmVwcmVzZW50YSBtZWRpYW50ZSBsYXMgY2F0ZWdvcmlhcyAxOiBhY2VwdGFkbyAwOiByZWNoYXphZG8NCg0KDQoNCiMjIyMgRXN0cnVjdHVyYSBkZWwgQ29uanVudG8gZGUgRGF0b3MNCmBgYHtyIEVzdHJ1Y3R1cmFfQ29uanVudG9fZGVfRGF0b3MsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0Kc3RyKGluZ3Jlc29fZGF0YXNldCkNCmBgYA0KDQoNCiMjIyMgVmlzdWFsaXphY2nDs24gZGVsIENvbmp1bnRvIGRlIERhdG9zIEluaWNpYWwNCmBgYHtyIFZpc3VhbGl6YWNpb25fQ29uanVudG9fZGVfRGF0b3MsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KaW5ncmVzb19kYXRhc2V0DQpgYGANCg0KDQojIyMjIEVzdHJ1Y3R1cmEgZGVsIENvbmp1bnRvIGRlIERhdG9zIFJlZXNjcml0bw0KYGBge3J9DQoNCmBgYA0KDQogICAgICAgIA0KIyMjIyBDb25qdW50byBkZSBEYXRvcyBSZWVzY3JpdG8NCmBgYHtyfQ0KDQpgYGANCg0KIyMgMy4gRXN0aW1hY2lvbmVzIE11bHRpdmFyaWFkYXMNCkxhIG1lZGlhLCB2YXJpYW56YSB5IGNvdmFyaWFuemEgc29uIG1lZGlkYXMgZnVuZGFtZW50YWxlcyBwYXJhIGRlc2NyaWJpciBlbCBjb21wb3J0YW1pZW50byBkZSB2YXJpYWJsZXMgYWxlYXRvcmlhcy4gRW4gZWwgZXN0dWRpbyBkZXNjcmlwdGl2byBtdWx0aXZhcmlhYmxlLCBlc3RhcyBtZWRpZGFzIHNlIGVzdGltYW4gYSBwYXJ0aXIgZGUgdmVjdG9yZXMgeSBtYXRyaWNlcyBxdWUgcmVwcmVzZW50YW4gdW4gY29uanVudG8gZGUgZGF0b3MgY29uIChudW1lcm8gZGUgdmFyaWFibGVzKSB2YXJpYWJsZXMgYWxlYXRvcmlhcyBudW3DqXJpY2FzLiBFbCB2ZWN0b3IgZGUgbWVkaWFzIGluZGljYSBlbCB2YWxvciBlc3BlcmFkbyBvIHB1bnRvIG1lZGlvIGRlIGNhZGEgdmFyaWFibGUsIG1pZW50cmFzIHF1ZSBsYSBtYXRyaXogZGUgdmFyaWFuemFzLWNvdmFyaWFuemFzIGVzdGltYSBsYXMgZGlzcGVyc2lvbmVzIHkgY292YXJpYW56YXMgZW50cmUgbGFzIHZhcmlhYmxlcy4gU2UgaGFjZSByZWZlcmVuY2lhIGEgbGEgc2VjY2nDs24gMy4yIHBhcmEgb2J0ZW5lciBtw6FzIGRldGFsbGVzIHNvYnJlIGVzdGUgYW7DoWxpc2lzLg0KDQojIyMgMy4xLiBQbGFudGVhbWllbnRvIGRlbCBQcm9ibGVtYQ0KRW4gbGEgc2VjY2nDs24gMiBkZWwgdGV4dG8gc2UgcmVhbGl6YXLDoSBlbCBjw6FsY3VsbyBlIGludGVycHJldGFjacOzbiBkZWwgdmVjdG9yIGRlIG1lZGlhcywgbGEgbWF0cml6IGRlIHZhcmlhbnphcy1jb3ZhcmlhbnphcyB5IGxhIG1hdHJpeiBkZSBjb3JyZWxhY2lvbmVzIHBhcmEgbGFzIHZhcmlhYmxlcyBudW3DqXJpY2FzIGRlbCBjb25qdW50byBkZSBkYXRvcy4gU2UgZXNwZWNpZmljYSBxdWUgZXN0YXMgdmFyaWFibGVzIGVzdMOhbiBlbiB1bmEgZXNjYWxhIGRlIG1lZGljacOzbiBkZSByYXrDs24uDQoobWVuY2lvbmFyIGxhcyB2YXJpYWJsZXMgbnVtZXJpY2FzKQ0KDQojIyMgMy4yLiBEZXNhcnJvbGxvIGRlbCBBbsOhbGlzaXMNCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzIG11ZXN0cmEgZWwgY8OhbGN1bG8gZGUgbG9zIHNpZ3VpZW50ZXMgb2JqZXRvczogVmVjdG9yIGRlIE1lZGlhcyB4wq8NCiwgTWF0cml6IGRlIFZhcmlhbnphcy1Db3ZhcmlhbnphcyBTDQogeSBNYXRyaXogZGUgQ29ycmVsYWNpb25lcyBSDQouDQoNCkVsIFZlY3RvciBkZSBNZWRpYXMgeSBsb3MgQm94cGxvdHMsIGxvcyBkYXRvcyByZWdpc3RyYWRvcyBwYXJhIGNhZGEgdmFyaWFibGUgdGllbmRlbiBhIHRlbmVyIGNvbGFzIGl6cXVpZXJkYXMgZW4gc3VzIGRpc3RyaWJ1Y2lvbmVzLCBsbyBxdWUgaW5kaWNhIHF1ZSBsYXMgbWVkaWFzIGVzdGltYWRhcyBzb24gYWx0YXMuIFNlIG1lbmNpb25hIHF1ZSBzb2xvIGxhIHZhcmlhYmxlIFNPUCBtdWVzdHJhIHVuIHNlc2dvIG5vdG9yaW8gZW4gY29tcGFyYWNpw7NuIGNvbiBsYXMgZGVtw6FzIGVuIHJlbGFjacOzbiBhIGxhIG1lZGlhbmEuIEFkZW3DoXMsIHRvZG9zIGxvcyBjYXNvcyBhdMOtcGljb3Mgc2UgZW5jdWVudHJhbiBlbiBlbCBleHRyZW1vIGluZmVyaW9yLiBBbCByZXZpc2FyIGxvcyByYW5nb3MgZGUgbGFzIHZhcmlhYmxlcywgc2Ugb2JzZXJ2YSBxdWUgbGFzIG1lZGlhcyBzb24gYWx0YXMgZW4gY29tcGFyYWNpw7NuIGNvbiBsb3MgZXh0cmVtb3Mgc3VwZXJpb3JlcyBkZSBjYWRhIHJhbmdvLg0KDQpBbCBhbmFsaXphciBsYSBNYXRyaXogZGUgVmFyaWFuemFzLUNvdmFyaWFuemFzLCBzZSBpbnRlcnByZXRhIHF1ZSBsYXMgcmVsYWNpb25lcyBlbnRyZSBsYXMgdmFyaWFibGVzIGVzdHVkaWFkYXMgdGllbmRlbiBhIHNlciBkZSBwcm9wb3JjaW9uYWxpZGFkIGRpcmVjdGEsIGxvIGN1YWwgZXMgY29uc2lzdGVudGUgY29uIGxhcyBleHBlY3RhdGl2YXMuIEFkZW3DoXMsIHNlIG1lbmNpb25hIGxhIGV4aXN0ZW5jaWEgZGUgdW4gZ3LDoWZpY28gbXVsdGl2YXJpYWRvIGVuIGxhIHBlc3Rhw7FhICJEaWFncmFtYSBDb25qdW50byBkZSBEaXNwZXJzacOzbiwgRGlzdHJpYnVjacOzbiB5IENvcnJlbGFjaW9uZXMgW1NBXSIgZGUgbGEgc2VjY2nDs24gNC4yLCBlbCBjdWFsIHByb3BvcmNpb25hIHVuYSByZXByZXNlbnRhY2nDs24gdmlzdWFsIGRlIGVzdGFzIHJlbGFjaW9uZXMuDQoNCkVsIHRleHRvIGluZGljYSBxdWUgYWwgYW5hbGl6YXIgbGEgTWF0cml6IGRlIENvcnJlbGFjaW9uZXMgeSBjb25zaWRlcmFyIGxhIE1hdHJpeiBkZSBWYXJpYW56YXMtQ292YXJpYW56YXMsIHNlIHB1ZWRlIHZlcmlmaWNhciBxdWUgbGFzIGNvcnJlbGFjaW9uZXMgZW50cmUgbGFzIHZhcmlhYmxlcyBUT0VGTF9TY29yZSwgR1JFX1Njb3JlLCBDR1BBIHkgQ2hhbmNlX29mX0FkbWl0IHNvbiBtw6FzIGFsdGFzIHkgc2llbXByZSBwb3NpdGl2YXMuIEVzdGEgcmVsYWNpw7NuIHBvc2l0aXZhIHkgZnVlcnRlIGVudHJlIGVzdGFzIHZhcmlhYmxlcyBlcyBjb25zaXN0ZW50ZSBjb24gZWwgZmVuw7NtZW5vIGVzdHVkaWFkby4gUGFyYSBvYnRlbmVyIG3DoXMgZGV0YWxsZXMgc29icmUgZXN0ZSBhbsOhbGlzaXMsIHNlIHN1Z2llcmUgY29uc3VsdGFyIGxhIHNlY2Npw7NuIDQuMi4NCg0KIyMjIyBWZWN0b3IgZGUgbWVkaWFzIHkgYm94cGxvdHMNCmBgYHtyfQ0KDQpgYGANCg0KDQojIyMjIE1hdHJpeiBkZSB2YXJpYW56YXMtY292YXJpYW56YXMNCg0KDQoNCiMjIyMgTWF0cml6IGRlIGNvcnJlbGFjaW9uZXMNCg==