1. Objetivo del Estudio

En términos generales, este estudio establecerá la relación entre dos o más variables a través de la obtención de información sobre una de ellas con base en el conocimiento de los valores de las demás. La relación que se establecerá entre ellas es de naturaleza no-determinística; es decir, se formularán relaciones probabilísticas y procedimientos para hacer inferencias sobre los modelos usados en este estudio, a la vez que se obtienen medidas cuantitativas del grado en el que las variables están relacionadas. Los modelos estudiados pueden verse como casos especialies del modelo lineal generalizado: Regresión Lineal Simple, Regresión Lineal Múltiple y Regresión Logística. En cada apartado se describirá teóricamente a cada uno y se usará como objeto de estudio un conjunto de datos en particular que es descrito en la sección 2. Cabe anotar que los fundamentos teóricos expuestos provienen de notas de clase del curso Métodos Estadísticos dictado por el profesor Dagoberto Bermúdez para la Especialización en Estadística Aplicada, modalidad virtual (2022-4), de la Fundación Universitaria Los Libertadores; y de los libros probabilidad y estadística de Jay L. Devore (Devore, Jay L., 2008), Bioestadística de Wayne W. Daniel (Daniel, Wayne W., 2013) y Métodos Matemáticos de Estadística de Harald Cramer (Cramer, Harald, 1953).

2. Descripción de los Datos

2.1. Fuente del Conjunto de Datos

El conjunto de datos de trabajo se obtuvo casi totalmente de Kaggle: https://www.kaggle.com/akshaydattatraykhare. 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 métricas académicas obtenidas por estudiantes extranjeros para aspirar a acceder a universidades de EE.UU. Este conjunto de datos se actualizó por última vez en julio de 2022.

2.3. Descripción del Conjunto de Datos

El conjunto de datos contiene 10 campos y 400 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):

  • Serial (identificador): registra un número secuenciado a partir de 1 para identificar de forma única cada registro consignado en el conjunto de datos.

  • Gender (cualitativa::nominal): registra el sexo del estudiante del cual se registraron los datos: 1 corresponde con un estudiante de sexo masculino, 0 con un estudiante de sexo femenino.

  • GRE Score (cuantitativa::razón): registra el puntaje total GRE (examen de acceso a la universidad) obtenido por el estudiante. GRE es un componente común del proceso de admisión a colegios o universidades en EE.UU. que mide el razonamiento verbal, cuantitativo, la escritura analítica y las habilidades de pensamiento crítico que se han adquirido a lo largo de un extenso período de tiempo y que no están relacionados con campo específicos de estudio. El campo solo registra dos de los tres componentes de la evaluación: razonamiento verbal y cuantitativo, en una escala desde 260 hasta 340 puntos. El resultado ausente del puntaje corresponde con el componente de escritura analítica: calificado entre 0 y 6 puntos.

  • TOEFL Score (cuantitativa::razón): registra el puntaje total TOEFL (prueba de inglés como idioma extranjero) obtenido por el estudiante. TOEFL es un componente común del proceso de admisión a colegios o universidades en EE.UU. por parte de estudiantes extranjeros que mide las competencias en comprensión escrita, comprensión oral, expresión oral y expresión escrita, en una escala desde 0 hasta 120 puntos.

  • SOP (cuantitativa::razón): registra el puntaje total SOP (ensayo de declaración de propósitos o de admisión) obtenido por el estudiante. SOP es un componente común del proceso de admisión a colegios o universidades en EE.UU. que consiste en un ensayo de solicitud de ingreso escrito por el estudiante en el cual debe hacer una descripción general de quién es, en quién quiere convertirse y hasta qué punto está preparado para seguir un determinado curso en la institución educativa a la cual aspira ingresar. Este ensayo se califica con un puntaje entre 0 y 5.

  • LOR (cuantitativa::razón): registra el puntaje total LOR (carta de recomendación) obtenido por el estudiante. LOR es un componente común del proceso de admisión a colegios o universidades en EE.UU. que consiste en una recomendación escrita, generalmente por un profesor, en la cual el redactor evalúa las cualidades, características y capacidades del estudiante recomendado en relación con su aptitud para seguir un curso en la institución educativa a la cual el estudiante aspira a ingresar. Esta carta se califica con un puntaje entre 0 y 5.

  • CGPA (cuantitativa::razón): registra el puntaje total CGPA (promedio de calificaciones acumulativo) obtenido por el estudiante. CGPA es un componente común del proceso de admisión a colegios o universidades en EE.UU. que mide el desempeño promedio del estudiante en su escolaridad previa a la solicitud de ingreso a la institución educativa siguiente de su preferencia. Este puntaje se mide entre 0 y 4; sin embargo, en el conjunto de datos fue convertido en una escala entre 0 y 10.

  • Research (cualitativa::nominal): registra la experiencia en investigación que posee el estudiante: 1 corresponde con que el estudiante argumenta experiencia investigativa, 0 corresponde con que no-argumenta experiencia investigativa.

  • University Rating (cualitativa::nominal(ordenada)): registra valoración de la universidad a la cual aspira a ingresar el estudiante. Esta valoración se hace en una escala entre 0 y 5 estrellas, cinco estrellas indica la mejor valoración.

  • Chance of Admit (cuantitativa::razón): registra la probabilidad de que el estudiante sea admitido en la universidad de su preferencia con base en los datos registrados a su nombre, salvo su sexo. Esta probrabilidad se mide entre 0 y 1.

3. Análisis de Regresiones

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.

3.1. 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: \[Y = \beta_0 + \beta_1 x + \varepsilon \hspace{10mm} \hspace{10mm}(1)\] donde:

  • \(Y\): es una variable de respuesta de naturaleza aleatoria.
  • \(x\): es una variable predictora de naturaleza no aleatoria.
  • \(\varepsilon\): es una variable aleatoria no observable.
  • \(\beta_0\) y \(\beta_1\): son parámetros reales desconocidos del modelo.

En comparación con el modelo lineal simple determinístico \(y = \beta_0 + \beta_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 \(\varepsilon\). Además, la cantidad \(\varepsilon\) en la ecuación de modelo \((1)\) se supone normalmente distribuida con \(E(\varepsilon)=0\) y \(V(\varepsilon)=\sigma^2\). La variable aleatoria \(\varepsilon\) 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 \(\beta_0\), \(\beta_1\) y \(\sigma^2\), a cambio estará disponible una muestra de datos compuesta de pares ordenados \((x_1,y_1)... (x_n,y_n)\) 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í, \(y_i\) es el valor observado de una variable aleatoria \(Y_i\), donde \(Y_i=\beta_0+\beta_1x_i+\varepsilon_i\) y las \(n\) desviaciones \(\varepsilon_1\), \(\varepsilon_2\), \(...\), \(\varepsilon_n\) son variables independientes.

De acuerdo con el modelo, los puntos observados estarán distribuidos aleatoriamente alrededor de la línea de regresión verdadera. En este sentido, la estimación de \(y=\beta_0+\beta_1x\) deberá ser una línea que se ajuste lo mejor posible a los puntos muestra. Tal línea deberá poseer la característica de que las distancias verticales (desviaciones) de los puntos observados a la línea misma son pequeñas. La medida de la bondad de ajuste será la suma de los cuadrados de estas desviaciones. En consecuencia, la línea que mejor se ajusta será la que tenga la suma más pequeña posible de desviaciones al cuadrado. El resultado que implica las ideas expuestas se conoce como: principio de los mínimos cuadrados y se remonta a los matemáticos Carl Friedrich Gauss y Adrien-Marie Legendre, entre el último lustro del siglo XVIII y el primero del siglo XIX.

El principio de los mínimos cuadrados establece que la desviación vertical del punto \((x_i,y_i)\) con respecto a la línea \(y=b_0+b_1x\) es \(y_i-(b_0+b_1x)\) y la suma de las desviaciones verticales al cuadrado de los puntos \((x_i,y_i)\) a la línea es \(f(b_0,b_1)=\sum_{i=1}^n (y_i-(b_0+b_1x_i))^2\). Así, las estimaciones puntuales de \(\beta_0\) y \(\beta_1\), representadas como \(\hat{\beta}_0\) y \(\hat{\beta}_1\) y llamadas estimaciones de mínimos cuadrados, son los valores que minimizan a \(f(b_0,b_1)\); es decir, \(f(\hat{\beta}_0,\hat{\beta}_1)\leq f(b_0,b_1)\) para cualesquiera \(\beta_0\) y \(\beta_1\). Por lo tanto, la línea de regresión estimada o línea de mínimos cuadrados es \(y=\hat{\beta}_0+\hat{\beta}_1x\).

Luego de calcular y resolver las ecuaciones en derivadas parciales de \(f(b_0,b_1)\) respecto a \(b_0\) y \(b_1\) igualadas a cero, se obtiene un sistemas de ecuaciones llamadas normales que son lineales en \(b_0\) y \(b_1\) y para las cuales, siempre que por lo menos dos de las \(x_i\) sean diferentes, las estimaciones de los mínimos cuadrados son la única solución del sistema. En consecuencia, la estimación de los mínimos cuadrados de \(\beta_1\) de la línea de regresión verdadera es: \[\hat{\beta}_1=\dfrac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^n(x_i-\bar{x})^2}=\dfrac{S_{xy}}{S_{xx}}\hspace{10mm}(2)\] y la estimación de los mínimos cuadrados de \(\beta_0\) de la línea de regresión verdadera es: \[\hat{\beta}_0=\dfrac{\sum_{i=1}^ny_i-\hat{\beta}_1\sum_{i=1}^nx_i}{n}=\bar{y}-\hat{\beta}_1\bar{x}\hspace{10mm}(3)\] Para hacer los cálculos que las ecuaciones anteriores demandan es necesario reducir al mínimo los efectos de redondeo. También, antes de calcular \(\hat{\beta}_1\) y \(\hat{\beta}_0\) se debe examir gráficamente el conjunto de datos por usar para percibir la factibilidad de uso de un modelo probabilístico lineal, es decir, si gráficamente los puntos están lejos de tender a aglomerarse en torno a una línea recta con aproximadamente el mismo grado de dispersión de todas las \(x_i\), entonces deben ser indagados otros modelos.

Es indispensable mencionar que la línea de mínimos cuadrados debe usarse restringidamente para predecir valores de \(x\) lejanos del rango de los datos, porque la relación ajustada puede carecer de validez para ellos.

Ahora, el parámetro \(\sigma^2\) que determina la cantidad de variabilidad es inherente en el modelo de regresión descrito: su valor conducirá a establecer que los valores observados estarán dispersos en mayor o menor medida en torno a la línea de regresión verdadera. Así, los residuos \(y_i - \hat{y_i}\) son las desviaciones verticales con respecto a la línea estimada. Si todos los residuos son pequeños comparados con cero, entonces la variabilidad de los valores \(y\) observados se debería en una elevada medida a la relación lineal entre \(x\) y \(y\), mientras que si los residuos son grandes comparados con cero, entonces queda sugerida una variabilidad inherente en \(y\) con respecto a la cantidad debida a la relación lineal. Así, la estimación de \(\sigma^2\) en un análisis de regresión está basada en el cálculo de la suma de cuadrados residuales (o suma de cuadrados del error SCE) que se reduce a: \[SCE=\sum_{i=1}^ny_i^2-\hat{\beta}_0\sum_{i=1}^ny_i-\hat{\beta}_1\sum_{i=1}^nx_iy_i\hspace{10mm}(4)\] \[\hat\sigma^2=s^2=\dfrac{SCE}{n-2}\hspace{10mm}(5)\] Si se ha entendido que la cantidad SCE establece una medida de cuánta variación de \(y\) es inexplicada por el modelo; es decir, sin atribución a la relación lineal, se entenderá también que existe otra cantidad llamada la suma total de los cuadrados STC, que permite obtener una medida de la cantidad de variación total en los valores \(y\) observados: \[STC=\sum_{i=1}^ny_i^2-\frac{(\sum_{i=1}^ny_i)^2}{n}\hspace{10mm}(6)\] Si se formula la razón \(SCE/STC\) se calcula la proporción de variación total inexplicada por el modelo de regresión lineal simple; por lo tanto, se llega a la definición del coeficiente de determinación \(r^2\): \[r^2=1-\frac{SCE}{STC}\hspace{10mm}(7)\] que se interpreta como la proporción de variación \(y\) observada que puede ser explicada por el modelo de regresión lineal simple; es decir, aquella atribuida a una relación lineal aproximada entre \(x\) y \(y\): mientras más cercano a 1 sea \(r^2\), más exitoso es el modelo de regresión lineal simple al explicar la variación de \(y\). Una forma alternativa de calcular el coeficiente de determinación se basa en la suma de cuadrados debidad a la regresión SCR (o al modelo de regresión SCM), que es la cantidad de variación total que es explicada por el modelo. Con base en ella el coeficiente de determinación se expresa como: \[r^2=1-\frac{SCE}{STC}=\frac{STC-SCE}{STC}=\frac{SCR}{STC}\hspace{10mm}(8)\]Como se sabe, cualquier cantidad calculada a partir de datos muestrales varía de una cantidad a otra, en este sentido, los procedimientos inferenciales estandarizan un estimador restando su valor medio y luego dividiéndolo entre su desviación estándar estimada. En particular, para un modelo supuesto de regresión lineal simple se implica que las variables estándares: \(t_{(n-2)}=\dfrac{\hat{\beta}_0-\beta_0}{\hat{\sigma} \sqrt{1/n+\bar{x}^2/S_{xx}}}\) y \(t_{(n-2)}=\dfrac{\hat{\beta}_1-\beta_1}{ \hat{\sigma} \sqrt{1/S_{xx}}}\) tienen distribuciones \(t\) con \(n-2\) grados de libertad. De esto se deduce que los intervalos de confianza de \(100*(1-\alpha)\%\) para la pendiente \(\beta_1\) y el intercepto \(\beta_0\) de la línea de regrasión verdadera son: \[\hat{\beta}_0 \pm t_{\alpha/2, n-2} \cdot \hat{\sigma} \sqrt{1/n+\bar{x}^2/S_{xx}}\hspace{10mm}(9)\] \[\hat{\beta}_1 \pm t_{\alpha/2, n-2} \cdot \hat{\sigma} \sqrt{1/S_{xx}} \hspace{10mm} (10)\]estos intervalos están centarados en la en la estimación puntual de cada parámetro y la cantidad abarcada a cada lado de la estimación depende del nivel de confianza deseado y de la cantidad de variabilidad del estimador.

Dado lo anterior, para los procedimientos de prueba de hipótesis, y como se procede habitualmente, las hipótesis nulas respecto a los beta del modelo de regresión lineal simple serán enunciados de igualdad. Los valores nulos para \(\beta_0\) y \(\beta_1\) se representan respectivamente como \(\beta_{00}\) (“beta cero cero”) y \(\beta_{10}\) (“beta uno cero”). Además, como los estadísticos de prueba tienen distribuciones \(t\) con \(n-2\) grados de libertad cuando \(H_0\) es verdadera, la probabilidad de error Tipo I permanece al nivel deseado \(\alpha\) usando un valor crítico \(t\) adecuado. Así, las hipótesis comúnmente usadas para \(\beta_0\)son: \[H_0: \beta_0 = \beta_{00}\hspace{10mm}(11)\] \[H_1: \beta_0 \neq \beta_{00}\hspace{10mm}(12)\]cuyo estadístico de prueba es: \[t_{(n-2)}=\dfrac{\hat{\beta}_0-\beta_{00}}{\hat{\sigma} \sqrt{1/n+\bar{x}^2/S_{xx}}}\hspace{10mm}(13)\]y para \(\beta_1\) son: \[H_0: \beta_1 = \beta_{10}\hspace{10mm}(14)\] \[H_1: \beta_1 \neq \beta_{10}\hspace{10mm}(15)\]cuyo estadístico de prueba es:\[t_{(n-2)}=\dfrac{\hat{\beta}_1-\beta_{10}}{\hat{\sigma} \sqrt{1/S_{xx}}}\hspace{10mm}(16)\]el par de hipótesis definidas por \(14\), \(15\) y \(16\) se conoce como la prueba de utilidad del modelo de regresión lineal simple, donde: la región de rechazo de \(H_0\) para una prueba a nivel \(\alpha\) a favor de \(H_1: \beta_1>\beta_{10}\) es \(t\geq t_{\alpha,n-2}\); la región de rechazo de \(H_0\) para una prueba a nivel \(\alpha\) a favor de \(H_1: \beta_1<\beta_{10}\) es \(t\leq -t_{\alpha,n-2}\); y la región de rechazo de \(H_0\) para una prueba a nivel \(\alpha\) a favor de \(H_1: \beta_1\neq\beta_{10}\) es \(t\leq -t_{\alpha/2,n-2}\) o \(t\geq t_{\alpha/2,n-2}\). Además, se sabe que la prueba de utilidad del modelo de regresión simple puede ser probada con una tabla ANOVA: rechazando \(H_0\) si \(f\geq F_{\alpha,1,n-2}\). La prueba \(F\) da exactamente el mismo resultado que la prueba \(t\) de utilidad del modelo de regresión lineal simple.

Por último, se entiende que en un modelo de regresión lineal simple un valor futuro de \(Y\) no es parámetro sino una variable aleatoria, por lo que se debe hacer referencia a un intervalo de valores factibles para un valor futuro de \(Y\), al cual se le llama intervalo de predicción. Cuando se predice con base en el modelo de regresión lineal simple, el error de predicción es \(Y-( \hat{\beta}_0+ \hat{\beta}_1 x^*)\) que corresponde con una diferencia entre dos variables aleatorias, por lo que, en comparación con una estimación, habrá más incertidumbre en ese; por lo tanto, un intervalo de predicción será más ancho que un intervalo de confianza. Además, a partir de la varianza del error dde predicción se puede establecer que la variable estandarizada:\[T=\dfrac{Y-(\hat{\beta}_0+ \hat{\beta}_1 x^*)}{S \displaystyle\sqrt{1+\dfrac{1}{n} + \dfrac{(x^*-\bar{x})^2}{S_{xx}}}}\hspace{10mm}(17)\]tiene una distribución \(t\) con \(n-2\) grados de libertad, a partir de la cual se obtine un intervalo de predicción de \(100*(1-\alpha)\%\) para una observación \(Y\) futura que se hará cuando \(x=x^*\) igual a:\[\hat{\beta}_0+\hat{\beta}_1 x^*\pm t_{n-2,\alpha/2}\cdot s \displaystyle\sqrt{1+\dfrac{1}{n}+\dfrac{(x^*-\bar{x})^2}{S_{xx}}}\hspace{10mm}(18)\] la interpretación del nivel de predicción de \(100*(1-\alpha)\%\) establece que al usar \((18)\) repetidamente, los intervalos resultantes contendrán los valores \(y\) observados el \(100*(1-\alpha)\%\) del tiempo. Además, el número \(1\) en la raíz cuadrada hace que el intervalo de predicción sea más ancho que intervalos de confianza como \((9)\) y \((10)\). Asimismo, a medida que \(n\to\infty\) el ancho del intervalo no-tiende a cero, porque la incertidumbre en la predicción será permanente, incluso al tener conocimiento perfecto sobre \(\beta_0\) y \(\beta_1\).

3.1.1. Planteamiento del Problema

Con base en el conjunto de datos descrito en la sección 2 se formulará un modelo de regresión lineal simple para estudiar la relación lineal supuesta entre las varaibles definidas por los campos: Chance of Admit (variable dependiente) y TOEFL Score (variable independiente).

3.1.2. Desarrollo del Análisis

El estudio de regresión lineal simple ha sido procesado con R version 4.2.2 (2022-10-31 ucrt) mediado por RStudio 2022.07.2 Build 576 en una plataforma x86_64-w64-mingw32.

3.1.2.1. Resumen estadístico de las variables por estudiar.

La navegación a través de las pestañas muestra el resumen estadístico de las variables de interés: Chance of Admit (variable dependiente) y TOEFL Score (variable independiente), junto con sus respectivos diagramas de caja. Además, incluye el diagrama de dispersión de sus valores conjuntos.

Con base en la pestaña Resumen de Chance of Admit se puede comentar que la variable Chance of Admit presenta asimetría de sesgo negativo con rango intercuartílico estrecho de dispersión imperceptible. Además, un dato se visualiza como outlier. Así, puede decirse que la variable registra valores altos en relación con su intervalo de medición. En comparación, según la pestaña Resumen de TOEFL Score, la variable TOEFL Score se visualiza más simétrica que la anterior, sin presentar datos atípicos, pero con mediana que muestra una ligera concentración de medidas hacia la mitad superior de los datos.

Complementariamente, en Diagrama de Dispersión TOEFL vs. CoA se puede observar que existe una correlación positiva de naturaleza apreciablemente lineal entre las variable Chance of Admit y TOEFL Score. Sin embargo, si se observa el gráfico de Diagramas Totales de Dispersión (que excluyeron las variables cualitativas::nominales) es constatable que existe una correlación más fuerte entre la variable de interés Chance of Admit y CGPA.

Resumen de Chance of Admit
summary(Admission_Dataset$Chance_of_Admit)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3400  0.6400  0.7300  0.7244  0.8300  0.9700
boxplot(Admission_Dataset$Chance_of_Admit, main = "Diagrama de Caja de Chance of Admit", col = c("orange"))

Resumen de TOEFL Score
summary(Admission_Dataset$TOEFL_Score)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    92.0   103.0   107.0   107.4   112.0   120.0
boxplot(Admission_Dataset$TOEFL_Score, main = "Diagrama de Caja de TOEFL Score", col = c("gold"))

Diagrama de Dispersión TOEFL vs. CoA
plot(Admission_Dataset$TOEFL_Score, Admission_Dataset$Chance_of_Admit, main = "Diagrama de Dispersión TOEFL Score vs. Chance of Admit")

Diagramas Totales de Dispersión
pairs(~GRE_Score + TOEFL_Score + SOP + LOR + CGPA + Chance_of_Admit, data = Admission_Dataset)

3.1.2.2. 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: Chance of Admit (variable dependiente) y TOEFL Score (variable independiente).

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 \(COA\) y \(TOEFL\), tiene la formulación:\[\hat{COA}=-1,2734005+0,0185993\cdot TOEFL\hspace{10mm}(19)\] para este modelo se obvia la interpretación del intercepto por carecer de sentido dado que Chance of Admit resultaría negativa en caso de un valor nulo de TOEFL Score, 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 Chance of Admit por cada unidad marginal de TOEFL Score.

Complementariamente, en la pestaña Resumen Estadístico del Modelo RLS se constata que para cualquier nivel de significancia las evidencias estarán a favor de la correlación positiva entre las variables de interés. Además, el coeficiente de detreminación está a favor de la correlación estableciendo que el \(62.57\) \(\%\) de la variabilidad de Chance of Admit es explicada por TOEFL Score, esto también queda confirmado a través de la pestaña Tabla ANOVA para el Modelo RLS.

Coeficientes del Modelo RLS
modelo_RL_Simple = lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$TOEFL_Score)
coef(modelo_RL_Simple)
##                   (Intercept) Admission_Dataset$TOEFL_Score 
##                    -1.2734005                     0.0185993
Resumen Estadístico del Modelo RLS
summary(modelo_RL_Simple)
## 
## Call:
## lm(formula = Admission_Dataset$Chance_of_Admit ~ Admission_Dataset$TOEFL_Score)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31252 -0.05128  0.01328  0.05453  0.21067 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   -1.2734005  0.0774217  -16.45   <2e-16 ***
## Admission_Dataset$TOEFL_Score  0.0185993  0.0007197   25.84   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08725 on 398 degrees of freedom
## Multiple R-squared:  0.6266, Adjusted R-squared:  0.6257 
## F-statistic: 667.9 on 1 and 398 DF,  p-value: < 2.2e-16
Tabla ANOVA para el Modelo RLS
anova(modelo_RL_Simple)
## Analysis of Variance Table
## 
## Response: Admission_Dataset$Chance_of_Admit
##                                Df Sum Sq Mean Sq F value    Pr(>F)    
## Admission_Dataset$TOEFL_Score   1 5.0848  5.0848  667.94 < 2.2e-16 ***
## Residuals                     398 3.0298  0.0076                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
3.1.2.3. 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: Chance of Admit (variable dependiente) y TOEFL Score (variable independiente).

El análisis del modelo RLS muestra que es significativo y en consecuencia aporta información relevante para estimar Chance of Admit a partir de TOEFL Score. Esto debido a que el intervalo de confianza para el coeficiente de TOEFL en el modelo RLS excluye al cero:\[0,01718449<\beta_1<0,02001411\hspace{10mm}(20)\]

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 Chance of Admit. 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.42560706 -1.12119388
## Admission_Dataset$TOEFL_Score  0.01718449  0.02001411
Predicciones y sus Intervalos de Predicción
predict(modelo_RL_Simple, data.frame(seq(1,400)), interval='prediction', level = 0.95)
##           fit       lwr       upr
## 1   0.9213166 0.7489206 1.0937125
## 2   0.7167243 0.5449796 0.8884689
## 3   0.6609264 0.4891150 0.8327378
## 4   0.7725222 0.6007394 0.9443049
## 5   0.6423271 0.4704701 0.8141841
## 6   0.8655187 0.6934396 1.0375977
## 7   0.7539229 0.5821645 0.9256813
## 8   0.6051285 0.4331456 0.7771115
## 9   0.6237278 0.4518137 0.7956419
## 10  0.7353236 0.5635779 0.9070693
## 11  0.6981250 0.5263697 0.8698802
## 12  0.7911215 0.6193027 0.9629402
## 13  0.8097208 0.6378544 0.9815872
## 14  0.7539229 0.5821645 0.9256813
## 15  0.6609264 0.4891150 0.8327378
## 16  0.6795257 0.5077482 0.8513032
## 17  0.7167243 0.5449796 0.8884689
## 18  0.6981250 0.5263697 0.8698802
## 19  0.7725222 0.6007394 0.9443049
## 20  0.6237278 0.4518137 0.7956419
## 21  0.7167243 0.5449796 0.8884689
## 22  0.8469194 0.6749228 1.0189159
## 23  0.8841180 0.7119448 1.0562911
## 24  0.9399159 0.7673912 1.1124405
## 25  0.9399159 0.7673912 1.1124405
## 26  0.9585151 0.7858502 1.1311801
## 27  0.7539229 0.5821645 0.9256813
## 28  0.5493306 0.3770717 0.7215895
## 29  0.4563341 0.2833846 0.6292836
## 30  0.5679299 0.3957746 0.7400853
## 31  0.5307313 0.3583573 0.7031054
## 32  0.6423271 0.4704701 0.8141841
## 33  0.9213166 0.7489206 1.0937125
## 34  0.8469194 0.6749228 1.0189159
## 35  0.8097208 0.6378544 0.9815872
## 36  0.7725222 0.6007394 0.9443049
## 37  0.6981250 0.5263697 0.8698802
## 38  0.6795257 0.5077482 0.8513032
## 39  0.6795257 0.5077482 0.8513032
## 40  0.7353236 0.5635779 0.9070693
## 41  0.7725222 0.6007394 0.9443049
## 42  0.6795257 0.5077482 0.8513032
## 43  0.7167243 0.5449796 0.8884689
## 44  0.9027173 0.7304385 1.0749960
## 45  0.8283201 0.6563944 1.0002457
## 46  0.7725222 0.6007394 0.9443049
## 47  0.8469194 0.6749228 1.0189159
## 48  0.9399159 0.7673912 1.1124405
## 49  0.7725222 0.6007394 0.9443049
## 50  0.7911215 0.6193027 0.9629402
## 51  0.5493306 0.3770717 0.7215895
## 52  0.5865292 0.4144659 0.7585926
## 53  0.8841180 0.7119448 1.0562911
## 54  0.8097208 0.6378544 0.9815872
## 55  0.7725222 0.6007394 0.9443049
## 56  0.6423271 0.4704701 0.8141841
## 57  0.6237278 0.4518137 0.7956419
## 58  0.5679299 0.3957746 0.7400853
## 59  0.5679299 0.3957746 0.7400853
## 60  0.6609264 0.4891150 0.8327378
## 61  0.5865292 0.4144659 0.7585926
## 62  0.6051285 0.4331456 0.7771115
## 63  0.6795257 0.5077482 0.8513032
## 64  0.7167243 0.5449796 0.8884689
## 65  0.7911215 0.6193027 0.9629402
## 66  0.8097208 0.6378544 0.9815872
## 67  0.8469194 0.6749228 1.0189159
## 68  0.7167243 0.5449796 0.8884689
## 69  0.7539229 0.5821645 0.9256813
## 70  0.8655187 0.6934396 1.0375977
## 71  0.9213166 0.7489206 1.0937125
## 72  0.8097208 0.6378544 0.9815872
## 73  0.7911215 0.6193027 0.9629402
## 74  0.7353236 0.5635779 0.9070693
## 75  0.6981250 0.5263697 0.8698802
## 76  0.8469194 0.6749228 1.0189159
## 77  0.8097208 0.6378544 0.9815872
## 78  0.5679299 0.3957746 0.7400853
## 79  0.4935327 0.3208939 0.6661716
## 80  0.4563341 0.2833846 0.6292836
## 81  0.6795257 0.5077482 0.8513032
## 82  0.9585151 0.7858502 1.1311801
## 83  0.7725222 0.6007394 0.9443049
## 84  0.8655187 0.6934396 1.0375977
## 85  0.8655187 0.6934396 1.0375977
## 86  0.6423271 0.4704701 0.8141841
## 87  0.6981250 0.5263697 0.8698802
## 88  0.7167243 0.5449796 0.8884689
## 89  0.7353236 0.5635779 0.9070693
## 90  0.7539229 0.5821645 0.9256813
## 91  0.6981250 0.5263697 0.8698802
## 92  0.5307313 0.3583573 0.7031054
## 93  0.5493306 0.3770717 0.7215895
## 94  0.5307313 0.3583573 0.7031054
## 95  0.5679299 0.3957746 0.7400853
## 96  0.5865292 0.4144659 0.7585926
## 97  0.5865292 0.4144659 0.7585926
## 98  0.9585151 0.7858502 1.1311801
## 99  0.9399159 0.7673912 1.1124405
## 100 0.8283201 0.6563944 1.0002457
## 101 0.7167243 0.5449796 0.8884689
## 102 0.6795257 0.5077482 0.8513032
## 103 0.6981250 0.5263697 0.8698802
## 104 0.6609264 0.4891150 0.8327378
## 105 0.8097208 0.6378544 0.9815872
## 106 0.7725222 0.6007394 0.9443049
## 107 0.7911215 0.6193027 0.9629402
## 108 0.9027173 0.7304385 1.0749960
## 109 0.8841180 0.7119448 1.0562911
## 110 0.6423271 0.4704701 0.8141841
## 111 0.7353236 0.5635779 0.9070693
## 112 0.7539229 0.5821645 0.9256813
## 113 0.7167243 0.5449796 0.8884689
## 114 0.7725222 0.6007394 0.9443049
## 115 0.6795257 0.5077482 0.8513032
## 116 0.6981250 0.5263697 0.8698802
## 117 0.6237278 0.4518137 0.7956419
## 118 0.6609264 0.4891150 0.8327378
## 119 0.5679299 0.3957746 0.7400853
## 120 0.6609264 0.4891150 0.8327378
## 121 0.9027173 0.7304385 1.0749960
## 122 0.9399159 0.7673912 1.1124405
## 123 0.6981250 0.5263697 0.8698802
## 124 0.7353236 0.5635779 0.9070693
## 125 0.6981250 0.5263697 0.8698802
## 126 0.5865292 0.4144659 0.7585926
## 127 0.8283201 0.6563944 1.0002457
## 128 0.8097208 0.6378544 0.9815872
## 129 0.8097208 0.6378544 0.9815872
## 130 0.9213166 0.7489206 1.0937125
## 131 0.8469194 0.6749228 1.0189159
## 132 0.6795257 0.5077482 0.8513032
## 133 0.6795257 0.5077482 0.8513032
## 134 0.8097208 0.6378544 0.9815872
## 135 0.8283201 0.6563944 1.0002457
## 136 0.7539229 0.5821645 0.9256813
## 137 0.6423271 0.4704701 0.8141841
## 138 0.5865292 0.4144659 0.7585926
## 139 0.8841180 0.7119448 1.0562911
## 140 0.7539229 0.5821645 0.9256813
## 141 0.7725222 0.6007394 0.9443049
## 142 0.9213166 0.7489206 1.0937125
## 143 0.8655187 0.6934396 1.0375977
## 144 0.9585151 0.7858502 1.1311801
## 145 0.8097208 0.6378544 0.9815872
## 146 0.8283201 0.6563944 1.0002457
## 147 0.6795257 0.5077482 0.8513032
## 148 0.8469194 0.6749228 1.0189159
## 149 0.8841180 0.7119448 1.0562911
## 150 0.6981250 0.5263697 0.8698802
## 151 0.8469194 0.6749228 1.0189159
## 152 0.8841180 0.7119448 1.0562911
## 153 0.8097208 0.6378544 0.9815872
## 154 0.6795257 0.5077482 0.8513032
## 155 0.7353236 0.5635779 0.9070693
## 156 0.7539229 0.5821645 0.9256813
## 157 0.6795257 0.5077482 0.8513032
## 158 0.6609264 0.4891150 0.8327378
## 159 0.6981250 0.5263697 0.8698802
## 160 0.5865292 0.4144659 0.7585926
## 161 0.6423271 0.4704701 0.8141841
## 162 0.5679299 0.3957746 0.7400853
## 163 0.7539229 0.5821645 0.9256813
## 164 0.6795257 0.5077482 0.8513032
## 165 0.7911215 0.6193027 0.9629402
## 166 0.7725222 0.6007394 0.9443049
## 167 0.6237278 0.4518137 0.7956419
## 168 0.6237278 0.4518137 0.7956419
## 169 0.5307313 0.3583573 0.7031054
## 170 0.5679299 0.3957746 0.7400853
## 171 0.6051285 0.4331456 0.7771115
## 172 0.9027173 0.7304385 1.0749960
## 173 0.7725222 0.6007394 0.9443049
## 174 0.8283201 0.6563944 1.0002457
## 175 0.7911215 0.6193027 0.9629402
## 176 0.7911215 0.6193027 0.9629402
## 177 0.9399159 0.7673912 1.1124405
## 178 0.7725222 0.6007394 0.9443049
## 179 0.7353236 0.5635779 0.9070693
## 180 0.6237278 0.4518137 0.7956419
## 181 0.6609264 0.4891150 0.8327378
## 182 0.7167243 0.5449796 0.8884689
## 183 0.5865292 0.4144659 0.7585926
## 184 0.7725222 0.6007394 0.9443049
## 185 0.6981250 0.5263697 0.8698802
## 186 0.8283201 0.6563944 1.0002457
## 187 0.7167243 0.5449796 0.8884689
## 188 0.9213166 0.7489206 1.0937125
## 189 0.8655187 0.6934396 1.0375977
## 190 0.8097208 0.6378544 0.9815872
## 191 0.7911215 0.6193027 0.9629402
## 192 0.7725222 0.6007394 0.9443049
## 193 0.8469194 0.6749228 1.0189159
## 194 0.9213166 0.7489206 1.0937125
## 195 0.7539229 0.5821645 0.9256813
## 196 0.7167243 0.5449796 0.8884689
## 197 0.6795257 0.5077482 0.8513032
## 198 0.6981250 0.5263697 0.8698802
## 199 0.6609264 0.4891150 0.8327378
## 200 0.7167243 0.5449796 0.8884689
## 201 0.6423271 0.4704701 0.8141841
## 202 0.7725222 0.6007394 0.9443049
## 203 0.9585151 0.7858502 1.1311801
## 204 0.9585151 0.7858502 1.1311801
## 205 0.6795257 0.5077482 0.8513032
## 206 0.5679299 0.3957746 0.7400853
## 207 0.5679299 0.3957746 0.7400853
## 208 0.6237278 0.4518137 0.7956419
## 209 0.6981250 0.5263697 0.8698802
## 210 0.6609264 0.4891150 0.8327378
## 211 0.7353236 0.5635779 0.9070693
## 212 0.7725222 0.6007394 0.9443049
## 213 0.9585151 0.7858502 1.1311801
## 214 0.9399159 0.7673912 1.1124405
## 215 0.9027173 0.7304385 1.0749960
## 216 0.8841180 0.7119448 1.0562911
## 217 0.8097208 0.6378544 0.9815872
## 218 0.7539229 0.5821645 0.9256813
## 219 0.7725222 0.6007394 0.9443049
## 220 0.6609264 0.4891150 0.8327378
## 221 0.6423271 0.4704701 0.8141841
## 222 0.7725222 0.6007394 0.9443049
## 223 0.8283201 0.6563944 1.0002457
## 224 0.7539229 0.5821645 0.9256813
## 225 0.6795257 0.5077482 0.8513032
## 226 0.5679299 0.3957746 0.7400853
## 227 0.7725222 0.6007394 0.9443049
## 228 0.7725222 0.6007394 0.9443049
## 229 0.8097208 0.6378544 0.9815872
## 230 0.7911215 0.6193027 0.9629402
## 231 0.6609264 0.4891150 0.8327378
## 232 0.6981250 0.5263697 0.8698802
## 233 0.7167243 0.5449796 0.8884689
## 234 0.5865292 0.4144659 0.7585926
## 235 0.8283201 0.6563944 1.0002457
## 236 0.7911215 0.6193027 0.9629402
## 237 0.8097208 0.6378544 0.9815872
## 238 0.8469194 0.6749228 1.0189159
## 239 0.6609264 0.4891150 0.8327378
## 240 0.5865292 0.4144659 0.7585926
## 241 0.6051285 0.4331456 0.7771115
## 242 0.6423271 0.4704701 0.8141841
## 243 0.8655187 0.6934396 1.0375977
## 244 0.8469194 0.6749228 1.0189159
## 245 0.7167243 0.5449796 0.8884689
## 246 0.7725222 0.6007394 0.9443049
## 247 0.6795257 0.5077482 0.8513032
## 248 0.6609264 0.4891150 0.8327378
## 249 0.7725222 0.6007394 0.9443049
## 250 0.7911215 0.6193027 0.9629402
## 251 0.6609264 0.4891150 0.8327378
## 252 0.5679299 0.3957746 0.7400853
## 253 0.5865292 0.4144659 0.7585926
## 254 0.8655187 0.6934396 1.0375977
## 255 0.8469194 0.6749228 1.0189159
## 256 0.7725222 0.6007394 0.9443049
## 257 0.5679299 0.3957746 0.7400853
## 258 0.5865292 0.4144659 0.7585926
## 259 0.6237278 0.4518137 0.7956419
## 260 0.9399159 0.7673912 1.1124405
## 261 0.7353236 0.5635779 0.9070693
## 262 0.6609264 0.4891150 0.8327378
## 263 0.6423271 0.4704701 0.8141841
## 264 0.7911215 0.6193027 0.9629402
## 265 0.7725222 0.6007394 0.9443049
## 266 0.6237278 0.4518137 0.7956419
## 267 0.6795257 0.5077482 0.8513032
## 268 0.7167243 0.5449796 0.8884689
## 269 0.8283201 0.6563944 1.0002457
## 270 0.7353236 0.5635779 0.9070693
## 271 0.6795257 0.5077482 0.8513032
## 272 0.5121320 0.3396313 0.6846327
## 273 0.4935327 0.3208939 0.6661716
## 274 0.5679299 0.3957746 0.7400853
## 275 0.5865292 0.4144659 0.7585926
## 276 0.7725222 0.6007394 0.9443049
## 277 0.8283201 0.6563944 1.0002457
## 278 0.6051285 0.4331456 0.7771115
## 279 0.6423271 0.4704701 0.8141841
## 280 0.6237278 0.4518137 0.7956419
## 281 0.6237278 0.4518137 0.7956419
## 282 0.7725222 0.6007394 0.9443049
## 283 0.6981250 0.5263697 0.8698802
## 284 0.7911215 0.6193027 0.9629402
## 285 0.8097208 0.6378544 0.9815872
## 286 0.8841180 0.7119448 1.0562911
## 287 0.9213166 0.7489206 1.0937125
## 288 0.8469194 0.6749228 1.0189159
## 289 0.6609264 0.4891150 0.8327378
## 290 0.7539229 0.5821645 0.9256813
## 291 0.6795257 0.5077482 0.8513032
## 292 0.6237278 0.4518137 0.7956419
## 293 0.5679299 0.3957746 0.7400853
## 294 0.5493306 0.3770717 0.7215895
## 295 0.6051285 0.4331456 0.7771115
## 296 0.5865292 0.4144659 0.7585926
## 297 0.7167243 0.5449796 0.8884689
## 298 0.9585151 0.7858502 1.1311801
## 299 0.8469194 0.6749228 1.0189159
## 300 0.8097208 0.6378544 0.9815872
## 301 0.6981250 0.5263697 0.8698802
## 302 0.7353236 0.5635779 0.9070693
## 303 0.6795257 0.5077482 0.8513032
## 304 0.7167243 0.5449796 0.8884689
## 305 0.6981250 0.5263697 0.8698802
## 306 0.7539229 0.5821645 0.9256813
## 307 0.7725222 0.6007394 0.9443049
## 308 0.8097208 0.6378544 0.9815872
## 309 0.7353236 0.5635779 0.9070693
## 310 0.7725222 0.6007394 0.9443049
## 311 0.6609264 0.4891150 0.8327378
## 312 0.7353236 0.5635779 0.9070693
## 313 0.7167243 0.5449796 0.8884689
## 314 0.5865292 0.4144659 0.7585926
## 315 0.6795257 0.5077482 0.8513032
## 316 0.6609264 0.4891150 0.8327378
## 317 0.6051285 0.4331456 0.7771115
## 318 0.5679299 0.3957746 0.7400853
## 319 0.7911215 0.6193027 0.9629402
## 320 0.8283201 0.6563944 1.0002457
## 321 0.6981250 0.5263697 0.8698802
## 322 0.6609264 0.4891150 0.8327378
## 323 0.7167243 0.5449796 0.8884689
## 324 0.6237278 0.4518137 0.7956419
## 325 0.6609264 0.4891150 0.8327378
## 326 0.8841180 0.7119448 1.0562911
## 327 0.5865292 0.4144659 0.7585926
## 328 0.6051285 0.4331456 0.7771115
## 329 0.8097208 0.6378544 0.9815872
## 330 0.5121320 0.3396313 0.6846327
## 331 0.8283201 0.6563944 1.0002457
## 332 0.6795257 0.5077482 0.8513032
## 333 0.6981250 0.5263697 0.8698802
## 334 0.7353236 0.5635779 0.9070693
## 335 0.7167243 0.5449796 0.8884689
## 336 0.7911215 0.6193027 0.9629402
## 337 0.7725222 0.6007394 0.9443049
## 338 0.9213166 0.7489206 1.0937125
## 339 0.7353236 0.5635779 0.9070693
## 340 0.7167243 0.5449796 0.8884689
## 341 0.7167243 0.5449796 0.8884689
## 342 0.7725222 0.6007394 0.9443049
## 343 0.6981250 0.5263697 0.8698802
## 344 0.6423271 0.4704701 0.8141841
## 345 0.5121320 0.3396313 0.6846327
## 346 0.5493306 0.3770717 0.7215895
## 347 0.5307313 0.3583573 0.7031054
## 348 0.4749334 0.3021450 0.6477219
## 349 0.5679299 0.3957746 0.7400853
## 350 0.6051285 0.4331456 0.7771115
## 351 0.7167243 0.5449796 0.8884689
## 352 0.7725222 0.6007394 0.9443049
## 353 0.5865292 0.4144659 0.7585926
## 354 0.6237278 0.4518137 0.7956419
## 355 0.5493306 0.3770717 0.7215895
## 356 0.6981250 0.5263697 0.8698802
## 357 0.7539229 0.5821645 0.9256813
## 358 0.6609264 0.4891150 0.8327378
## 359 0.6795257 0.5077482 0.8513032
## 360 0.7167243 0.5449796 0.8884689
## 361 0.7725222 0.6007394 0.9443049
## 362 0.8841180 0.7119448 1.0562911
## 363 0.8655187 0.6934396 1.0375977
## 364 0.6423271 0.4704701 0.8141841
## 365 0.6237278 0.4518137 0.7956419
## 366 0.8469194 0.6749228 1.0189159
## 367 0.6609264 0.4891150 0.8327378
## 368 0.5493306 0.3770717 0.7215895
## 369 0.4377348 0.2646128 0.6108568
## 370 0.5493306 0.3770717 0.7215895
## 371 0.6423271 0.4704701 0.8141841
## 372 0.7725222 0.6007394 0.9443049
## 373 0.9399159 0.7673912 1.1124405
## 374 0.7539229 0.5821645 0.9256813
## 375 0.6795257 0.5077482 0.8513032
## 376 0.6051285 0.4331456 0.7771115
## 377 0.5121320 0.3396313 0.6846327
## 378 0.5865292 0.4144659 0.7585926
## 379 0.5493306 0.3770717 0.7215895
## 380 0.5679299 0.3957746 0.7400853
## 381 0.6609264 0.4891150 0.8327378
## 382 0.6795257 0.5077482 0.8513032
## 383 0.7725222 0.6007394 0.9443049
## 384 0.5865292 0.4144659 0.7585926
## 385 0.8283201 0.6563944 1.0002457
## 386 0.9027173 0.7304385 1.0749960
## 387 0.6051285 0.4331456 0.7771115
## 388 0.6795257 0.5077482 0.8513032
## 389 0.5307313 0.3583573 0.7031054
## 390 0.7353236 0.5635779 0.9070693
## 391 0.6237278 0.4518137 0.7956419
## 392 0.6981250 0.5263697 0.8698802
## 393 0.8097208 0.6378544 0.9815872
## 394 0.6609264 0.4891150 0.8327378
## 395 0.7911215 0.6193027 0.9629402
## 396 0.7725222 0.6007394 0.9443049
## 397 0.7167243 0.5449796 0.8884689
## 398 0.8841180 0.7119448 1.0562911
## 399 0.6423271 0.4704701 0.8141841
## 400 0.9027173 0.7304385 1.0749960
Predicciones y sus Intervalos de Confianza
predict(modelo_RL_Simple, data.frame(seq(1,400)), interval='confidence', level = 0.95)
##           fit       lwr       upr
## 1   0.9213166 0.9040527 0.9385804
## 2   0.7167243 0.7081282 0.7253204
## 3   0.6609264 0.6510861 0.6707667
## 4   0.7725222 0.7631957 0.7818487
## 5   0.6423271 0.6317212 0.6529330
## 6   0.8655187 0.8517757 0.8792616
## 7   0.7539229 0.7450563 0.7627895
## 8   0.6051285 0.5926465 0.6176106
## 9   0.6237278 0.6122325 0.6352231
## 10  0.7353236 0.7267066 0.7439406
## 11  0.6981250 0.6893196 0.7069304
## 12  0.7911215 0.7811538 0.8010891
## 13  0.8097208 0.7989631 0.8204784
## 14  0.7539229 0.7450563 0.7627895
## 15  0.6609264 0.6510861 0.6707667
## 16  0.6795257 0.6702963 0.6887551
## 17  0.7167243 0.7081282 0.7253204
## 18  0.6981250 0.6893196 0.7069304
## 19  0.7725222 0.7631957 0.7818487
## 20  0.6237278 0.6122325 0.6352231
## 21  0.7167243 0.7081282 0.7253204
## 22  0.8469194 0.8342511 0.8595876
## 23  0.8841180 0.8692433 0.8989927
## 24  0.9399159 0.9214107 0.9584210
## 25  0.9399159 0.9214107 0.9584210
## 26  0.9585151 0.9387455 0.9782848
## 27  0.7539229 0.7450563 0.7627895
## 28  0.5493306 0.5334939 0.5651673
## 29  0.4563341 0.4342162 0.4784521
## 30  0.5679299 0.5532626 0.5825973
## 31  0.5307313 0.5136880 0.5477746
## 32  0.6423271 0.6317212 0.6529330
## 33  0.9213166 0.9040527 0.9385804
## 34  0.8469194 0.8342511 0.8595876
## 35  0.8097208 0.7989631 0.8204784
## 36  0.7725222 0.7631957 0.7818487
## 37  0.6981250 0.6893196 0.7069304
## 38  0.6795257 0.6702963 0.6887551
## 39  0.6795257 0.6702963 0.6887551
## 40  0.7353236 0.7267066 0.7439406
## 41  0.7725222 0.7631957 0.7818487
## 42  0.6795257 0.6702963 0.6887551
## 43  0.7167243 0.7081282 0.7253204
## 44  0.9027173 0.8866659 0.9187687
## 45  0.8283201 0.8166537 0.8399865
## 46  0.7725222 0.7631957 0.7818487
## 47  0.8469194 0.8342511 0.8595876
## 48  0.9399159 0.9214107 0.9584210
## 49  0.7725222 0.7631957 0.7818487
## 50  0.7911215 0.7811538 0.8010891
## 51  0.5493306 0.5334939 0.5651673
## 52  0.5865292 0.5729843 0.6000741
## 53  0.8841180 0.8692433 0.8989927
## 54  0.8097208 0.7989631 0.8204784
## 55  0.7725222 0.7631957 0.7818487
## 56  0.6423271 0.6317212 0.6529330
## 57  0.6237278 0.6122325 0.6352231
## 58  0.5679299 0.5532626 0.5825973
## 59  0.5679299 0.5532626 0.5825973
## 60  0.6609264 0.6510861 0.6707667
## 61  0.5865292 0.5729843 0.6000741
## 62  0.6051285 0.5926465 0.6176106
## 63  0.6795257 0.6702963 0.6887551
## 64  0.7167243 0.7081282 0.7253204
## 65  0.7911215 0.7811538 0.8010891
## 66  0.8097208 0.7989631 0.8204784
## 67  0.8469194 0.8342511 0.8595876
## 68  0.7167243 0.7081282 0.7253204
## 69  0.7539229 0.7450563 0.7627895
## 70  0.8655187 0.8517757 0.8792616
## 71  0.9213166 0.9040527 0.9385804
## 72  0.8097208 0.7989631 0.8204784
## 73  0.7911215 0.7811538 0.8010891
## 74  0.7353236 0.7267066 0.7439406
## 75  0.6981250 0.6893196 0.7069304
## 76  0.8469194 0.8342511 0.8595876
## 77  0.8097208 0.7989631 0.8204784
## 78  0.5679299 0.5532626 0.5825973
## 79  0.4935327 0.4739922 0.5130732
## 80  0.4563341 0.4342162 0.4784521
## 81  0.6795257 0.6702963 0.6887551
## 82  0.9585151 0.9387455 0.9782848
## 83  0.7725222 0.7631957 0.7818487
## 84  0.8655187 0.8517757 0.8792616
## 85  0.8655187 0.8517757 0.8792616
## 86  0.6423271 0.6317212 0.6529330
## 87  0.6981250 0.6893196 0.7069304
## 88  0.7167243 0.7081282 0.7253204
## 89  0.7353236 0.7267066 0.7439406
## 90  0.7539229 0.7450563 0.7627895
## 91  0.6981250 0.6893196 0.7069304
## 92  0.5307313 0.5136880 0.5477746
## 93  0.5493306 0.5334939 0.5651673
## 94  0.5307313 0.5136880 0.5477746
## 95  0.5679299 0.5532626 0.5825973
## 96  0.5865292 0.5729843 0.6000741
## 97  0.5865292 0.5729843 0.6000741
## 98  0.9585151 0.9387455 0.9782848
## 99  0.9399159 0.9214107 0.9584210
## 100 0.8283201 0.8166537 0.8399865
## 101 0.7167243 0.7081282 0.7253204
## 102 0.6795257 0.6702963 0.6887551
## 103 0.6981250 0.6893196 0.7069304
## 104 0.6609264 0.6510861 0.6707667
## 105 0.8097208 0.7989631 0.8204784
## 106 0.7725222 0.7631957 0.7818487
## 107 0.7911215 0.7811538 0.8010891
## 108 0.9027173 0.8866659 0.9187687
## 109 0.8841180 0.8692433 0.8989927
## 110 0.6423271 0.6317212 0.6529330
## 111 0.7353236 0.7267066 0.7439406
## 112 0.7539229 0.7450563 0.7627895
## 113 0.7167243 0.7081282 0.7253204
## 114 0.7725222 0.7631957 0.7818487
## 115 0.6795257 0.6702963 0.6887551
## 116 0.6981250 0.6893196 0.7069304
## 117 0.6237278 0.6122325 0.6352231
## 118 0.6609264 0.6510861 0.6707667
## 119 0.5679299 0.5532626 0.5825973
## 120 0.6609264 0.6510861 0.6707667
## 121 0.9027173 0.8866659 0.9187687
## 122 0.9399159 0.9214107 0.9584210
## 123 0.6981250 0.6893196 0.7069304
## 124 0.7353236 0.7267066 0.7439406
## 125 0.6981250 0.6893196 0.7069304
## 126 0.5865292 0.5729843 0.6000741
## 127 0.8283201 0.8166537 0.8399865
## 128 0.8097208 0.7989631 0.8204784
## 129 0.8097208 0.7989631 0.8204784
## 130 0.9213166 0.9040527 0.9385804
## 131 0.8469194 0.8342511 0.8595876
## 132 0.6795257 0.6702963 0.6887551
## 133 0.6795257 0.6702963 0.6887551
## 134 0.8097208 0.7989631 0.8204784
## 135 0.8283201 0.8166537 0.8399865
## 136 0.7539229 0.7450563 0.7627895
## 137 0.6423271 0.6317212 0.6529330
## 138 0.5865292 0.5729843 0.6000741
## 139 0.8841180 0.8692433 0.8989927
## 140 0.7539229 0.7450563 0.7627895
## 141 0.7725222 0.7631957 0.7818487
## 142 0.9213166 0.9040527 0.9385804
## 143 0.8655187 0.8517757 0.8792616
## 144 0.9585151 0.9387455 0.9782848
## 145 0.8097208 0.7989631 0.8204784
## 146 0.8283201 0.8166537 0.8399865
## 147 0.6795257 0.6702963 0.6887551
## 148 0.8469194 0.8342511 0.8595876
## 149 0.8841180 0.8692433 0.8989927
## 150 0.6981250 0.6893196 0.7069304
## 151 0.8469194 0.8342511 0.8595876
## 152 0.8841180 0.8692433 0.8989927
## 153 0.8097208 0.7989631 0.8204784
## 154 0.6795257 0.6702963 0.6887551
## 155 0.7353236 0.7267066 0.7439406
## 156 0.7539229 0.7450563 0.7627895
## 157 0.6795257 0.6702963 0.6887551
## 158 0.6609264 0.6510861 0.6707667
## 159 0.6981250 0.6893196 0.7069304
## 160 0.5865292 0.5729843 0.6000741
## 161 0.6423271 0.6317212 0.6529330
## 162 0.5679299 0.5532626 0.5825973
## 163 0.7539229 0.7450563 0.7627895
## 164 0.6795257 0.6702963 0.6887551
## 165 0.7911215 0.7811538 0.8010891
## 166 0.7725222 0.7631957 0.7818487
## 167 0.6237278 0.6122325 0.6352231
## 168 0.6237278 0.6122325 0.6352231
## 169 0.5307313 0.5136880 0.5477746
## 170 0.5679299 0.5532626 0.5825973
## 171 0.6051285 0.5926465 0.6176106
## 172 0.9027173 0.8866659 0.9187687
## 173 0.7725222 0.7631957 0.7818487
## 174 0.8283201 0.8166537 0.8399865
## 175 0.7911215 0.7811538 0.8010891
## 176 0.7911215 0.7811538 0.8010891
## 177 0.9399159 0.9214107 0.9584210
## 178 0.7725222 0.7631957 0.7818487
## 179 0.7353236 0.7267066 0.7439406
## 180 0.6237278 0.6122325 0.6352231
## 181 0.6609264 0.6510861 0.6707667
## 182 0.7167243 0.7081282 0.7253204
## 183 0.5865292 0.5729843 0.6000741
## 184 0.7725222 0.7631957 0.7818487
## 185 0.6981250 0.6893196 0.7069304
## 186 0.8283201 0.8166537 0.8399865
## 187 0.7167243 0.7081282 0.7253204
## 188 0.9213166 0.9040527 0.9385804
## 189 0.8655187 0.8517757 0.8792616
## 190 0.8097208 0.7989631 0.8204784
## 191 0.7911215 0.7811538 0.8010891
## 192 0.7725222 0.7631957 0.7818487
## 193 0.8469194 0.8342511 0.8595876
## 194 0.9213166 0.9040527 0.9385804
## 195 0.7539229 0.7450563 0.7627895
## 196 0.7167243 0.7081282 0.7253204
## 197 0.6795257 0.6702963 0.6887551
## 198 0.6981250 0.6893196 0.7069304
## 199 0.6609264 0.6510861 0.6707667
## 200 0.7167243 0.7081282 0.7253204
## 201 0.6423271 0.6317212 0.6529330
## 202 0.7725222 0.7631957 0.7818487
## 203 0.9585151 0.9387455 0.9782848
## 204 0.9585151 0.9387455 0.9782848
## 205 0.6795257 0.6702963 0.6887551
## 206 0.5679299 0.5532626 0.5825973
## 207 0.5679299 0.5532626 0.5825973
## 208 0.6237278 0.6122325 0.6352231
## 209 0.6981250 0.6893196 0.7069304
## 210 0.6609264 0.6510861 0.6707667
## 211 0.7353236 0.7267066 0.7439406
## 212 0.7725222 0.7631957 0.7818487
## 213 0.9585151 0.9387455 0.9782848
## 214 0.9399159 0.9214107 0.9584210
## 215 0.9027173 0.8866659 0.9187687
## 216 0.8841180 0.8692433 0.8989927
## 217 0.8097208 0.7989631 0.8204784
## 218 0.7539229 0.7450563 0.7627895
## 219 0.7725222 0.7631957 0.7818487
## 220 0.6609264 0.6510861 0.6707667
## 221 0.6423271 0.6317212 0.6529330
## 222 0.7725222 0.7631957 0.7818487
## 223 0.8283201 0.8166537 0.8399865
## 224 0.7539229 0.7450563 0.7627895
## 225 0.6795257 0.6702963 0.6887551
## 226 0.5679299 0.5532626 0.5825973
## 227 0.7725222 0.7631957 0.7818487
## 228 0.7725222 0.7631957 0.7818487
## 229 0.8097208 0.7989631 0.8204784
## 230 0.7911215 0.7811538 0.8010891
## 231 0.6609264 0.6510861 0.6707667
## 232 0.6981250 0.6893196 0.7069304
## 233 0.7167243 0.7081282 0.7253204
## 234 0.5865292 0.5729843 0.6000741
## 235 0.8283201 0.8166537 0.8399865
## 236 0.7911215 0.7811538 0.8010891
## 237 0.8097208 0.7989631 0.8204784
## 238 0.8469194 0.8342511 0.8595876
## 239 0.6609264 0.6510861 0.6707667
## 240 0.5865292 0.5729843 0.6000741
## 241 0.6051285 0.5926465 0.6176106
## 242 0.6423271 0.6317212 0.6529330
## 243 0.8655187 0.8517757 0.8792616
## 244 0.8469194 0.8342511 0.8595876
## 245 0.7167243 0.7081282 0.7253204
## 246 0.7725222 0.7631957 0.7818487
## 247 0.6795257 0.6702963 0.6887551
## 248 0.6609264 0.6510861 0.6707667
## 249 0.7725222 0.7631957 0.7818487
## 250 0.7911215 0.7811538 0.8010891
## 251 0.6609264 0.6510861 0.6707667
## 252 0.5679299 0.5532626 0.5825973
## 253 0.5865292 0.5729843 0.6000741
## 254 0.8655187 0.8517757 0.8792616
## 255 0.8469194 0.8342511 0.8595876
## 256 0.7725222 0.7631957 0.7818487
## 257 0.5679299 0.5532626 0.5825973
## 258 0.5865292 0.5729843 0.6000741
## 259 0.6237278 0.6122325 0.6352231
## 260 0.9399159 0.9214107 0.9584210
## 261 0.7353236 0.7267066 0.7439406
## 262 0.6609264 0.6510861 0.6707667
## 263 0.6423271 0.6317212 0.6529330
## 264 0.7911215 0.7811538 0.8010891
## 265 0.7725222 0.7631957 0.7818487
## 266 0.6237278 0.6122325 0.6352231
## 267 0.6795257 0.6702963 0.6887551
## 268 0.7167243 0.7081282 0.7253204
## 269 0.8283201 0.8166537 0.8399865
## 270 0.7353236 0.7267066 0.7439406
## 271 0.6795257 0.6702963 0.6887551
## 272 0.5121320 0.4938522 0.5304118
## 273 0.4935327 0.4739922 0.5130732
## 274 0.5679299 0.5532626 0.5825973
## 275 0.5865292 0.5729843 0.6000741
## 276 0.7725222 0.7631957 0.7818487
## 277 0.8283201 0.8166537 0.8399865
## 278 0.6051285 0.5926465 0.6176106
## 279 0.6423271 0.6317212 0.6529330
## 280 0.6237278 0.6122325 0.6352231
## 281 0.6237278 0.6122325 0.6352231
## 282 0.7725222 0.7631957 0.7818487
## 283 0.6981250 0.6893196 0.7069304
## 284 0.7911215 0.7811538 0.8010891
## 285 0.8097208 0.7989631 0.8204784
## 286 0.8841180 0.8692433 0.8989927
## 287 0.9213166 0.9040527 0.9385804
## 288 0.8469194 0.8342511 0.8595876
## 289 0.6609264 0.6510861 0.6707667
## 290 0.7539229 0.7450563 0.7627895
## 291 0.6795257 0.6702963 0.6887551
## 292 0.6237278 0.6122325 0.6352231
## 293 0.5679299 0.5532626 0.5825973
## 294 0.5493306 0.5334939 0.5651673
## 295 0.6051285 0.5926465 0.6176106
## 296 0.5865292 0.5729843 0.6000741
## 297 0.7167243 0.7081282 0.7253204
## 298 0.9585151 0.9387455 0.9782848
## 299 0.8469194 0.8342511 0.8595876
## 300 0.8097208 0.7989631 0.8204784
## 301 0.6981250 0.6893196 0.7069304
## 302 0.7353236 0.7267066 0.7439406
## 303 0.6795257 0.6702963 0.6887551
## 304 0.7167243 0.7081282 0.7253204
## 305 0.6981250 0.6893196 0.7069304
## 306 0.7539229 0.7450563 0.7627895
## 307 0.7725222 0.7631957 0.7818487
## 308 0.8097208 0.7989631 0.8204784
## 309 0.7353236 0.7267066 0.7439406
## 310 0.7725222 0.7631957 0.7818487
## 311 0.6609264 0.6510861 0.6707667
## 312 0.7353236 0.7267066 0.7439406
## 313 0.7167243 0.7081282 0.7253204
## 314 0.5865292 0.5729843 0.6000741
## 315 0.6795257 0.6702963 0.6887551
## 316 0.6609264 0.6510861 0.6707667
## 317 0.6051285 0.5926465 0.6176106
## 318 0.5679299 0.5532626 0.5825973
## 319 0.7911215 0.7811538 0.8010891
## 320 0.8283201 0.8166537 0.8399865
## 321 0.6981250 0.6893196 0.7069304
## 322 0.6609264 0.6510861 0.6707667
## 323 0.7167243 0.7081282 0.7253204
## 324 0.6237278 0.6122325 0.6352231
## 325 0.6609264 0.6510861 0.6707667
## 326 0.8841180 0.8692433 0.8989927
## 327 0.5865292 0.5729843 0.6000741
## 328 0.6051285 0.5926465 0.6176106
## 329 0.8097208 0.7989631 0.8204784
## 330 0.5121320 0.4938522 0.5304118
## 331 0.8283201 0.8166537 0.8399865
## 332 0.6795257 0.6702963 0.6887551
## 333 0.6981250 0.6893196 0.7069304
## 334 0.7353236 0.7267066 0.7439406
## 335 0.7167243 0.7081282 0.7253204
## 336 0.7911215 0.7811538 0.8010891
## 337 0.7725222 0.7631957 0.7818487
## 338 0.9213166 0.9040527 0.9385804
## 339 0.7353236 0.7267066 0.7439406
## 340 0.7167243 0.7081282 0.7253204
## 341 0.7167243 0.7081282 0.7253204
## 342 0.7725222 0.7631957 0.7818487
## 343 0.6981250 0.6893196 0.7069304
## 344 0.6423271 0.6317212 0.6529330
## 345 0.5121320 0.4938522 0.5304118
## 346 0.5493306 0.5334939 0.5651673
## 347 0.5307313 0.5136880 0.5477746
## 348 0.4749334 0.4541124 0.4957545
## 349 0.5679299 0.5532626 0.5825973
## 350 0.6051285 0.5926465 0.6176106
## 351 0.7167243 0.7081282 0.7253204
## 352 0.7725222 0.7631957 0.7818487
## 353 0.5865292 0.5729843 0.6000741
## 354 0.6237278 0.6122325 0.6352231
## 355 0.5493306 0.5334939 0.5651673
## 356 0.6981250 0.6893196 0.7069304
## 357 0.7539229 0.7450563 0.7627895
## 358 0.6609264 0.6510861 0.6707667
## 359 0.6795257 0.6702963 0.6887551
## 360 0.7167243 0.7081282 0.7253204
## 361 0.7725222 0.7631957 0.7818487
## 362 0.8841180 0.8692433 0.8989927
## 363 0.8655187 0.8517757 0.8792616
## 364 0.6423271 0.6317212 0.6529330
## 365 0.6237278 0.6122325 0.6352231
## 366 0.8469194 0.8342511 0.8595876
## 367 0.6609264 0.6510861 0.6707667
## 368 0.5493306 0.5334939 0.5651673
## 369 0.4377348 0.4143064 0.4611633
## 370 0.5493306 0.5334939 0.5651673
## 371 0.6423271 0.6317212 0.6529330
## 372 0.7725222 0.7631957 0.7818487
## 373 0.9399159 0.9214107 0.9584210
## 374 0.7539229 0.7450563 0.7627895
## 375 0.6795257 0.6702963 0.6887551
## 376 0.6051285 0.5926465 0.6176106
## 377 0.5121320 0.4938522 0.5304118
## 378 0.5865292 0.5729843 0.6000741
## 379 0.5493306 0.5334939 0.5651673
## 380 0.5679299 0.5532626 0.5825973
## 381 0.6609264 0.6510861 0.6707667
## 382 0.6795257 0.6702963 0.6887551
## 383 0.7725222 0.7631957 0.7818487
## 384 0.5865292 0.5729843 0.6000741
## 385 0.8283201 0.8166537 0.8399865
## 386 0.9027173 0.8866659 0.9187687
## 387 0.6051285 0.5926465 0.6176106
## 388 0.6795257 0.6702963 0.6887551
## 389 0.5307313 0.5136880 0.5477746
## 390 0.7353236 0.7267066 0.7439406
## 391 0.6237278 0.6122325 0.6352231
## 392 0.6981250 0.6893196 0.7069304
## 393 0.8097208 0.7989631 0.8204784
## 394 0.6609264 0.6510861 0.6707667
## 395 0.7911215 0.7811538 0.8010891
## 396 0.7725222 0.7631957 0.7818487
## 397 0.7167243 0.7081282 0.7253204
## 398 0.8841180 0.8692433 0.8989927
## 399 0.6423271 0.6317212 0.6529330
## 400 0.9027173 0.8866659 0.9187687

3.2. 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}(22)\] \[H_1: \text {al menos una }\beta_i\neq 0\hspace{5mm}(i=1,...,k)\hspace{10mm}(23)\] el valor del estadístico de prueba es:\[f=\frac{R^2/k}{(1-R^2)(n-(k+1))}=\frac{SCR/k}{SCE/(n-(k+1))}=\frac{RMC}{CME}\hspace{10mm}(24)\] donde \(SCR=STC-SCE\), que es la suma de cuadrados de regresión, y la región de rechazo para una prueba de nivel \(\alpha\) es: \[f\geq F_{\alpha, k,n-(k+1)}\hspace{10mm}(25)\] Por último, un intervalo de confianza al \(100(1-\alpha)\%\) para \(\beta_i\) es: \[\hat\beta_i\pm t_{\alpha/2,n-(k+1)}\cdot s_{\hat\beta_{i}}\hspace{10mm}(26)\] y un intervalo de confianza al mismo nivel de significancia para un valor futuro está dado por: \[\hat y\pm t_{\alpha/2,n-(k+1)}\cdot \sqrt{s^2+s^2_{\hat Y}}\hspace{10mm}(27)\] 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.

3.2.1. 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: Chance of Admit (variable dependiente) y los demás como variables independientes: Gender, GRE Score, TOEFL Score, SOP, LOR, CGPA, Research y University Rating.

3.2.2. Desarrollo del Análisis

El estudio de regresión lineal múltiple ha sido procesado con R version 4.2.2 (2022-10-31 ucrt) mediado por RStudio 2022.07.2 Build 576 en una plataforma x86_64-w64-mingw32.

3.2.2.1. 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 Serial, 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 Chance of Admit es la variable dependiente.

Resumen Variables Cuantitativas
summary(Admission_Dataset$GRE_Score)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   290.0   308.0   317.0   316.8   325.0   340.0
summary(Admission_Dataset$TOEFL_Score)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    92.0   103.0   107.0   107.4   112.0   120.0
summary(Admission_Dataset$SOP)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     1.0     2.5     3.5     3.4     4.0     5.0
summary(Admission_Dataset$LOR)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   3.000   3.500   3.453   4.000   5.000
summary(Admission_Dataset$CGPA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   6.800   8.170   8.610   8.599   9.062   9.920
summary(Admission_Dataset$Chance_of_Admit)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3400  0.6400  0.7300  0.7244  0.8300  0.9700
Resumen Variables Cualitativas
table(Admission_Dataset$Gender)
## 
##   0   1 
## 151 249
prop.table(table(Admission_Dataset$Gender))
## 
##      0      1 
## 0.3775 0.6225
barplot(table(Admission_Dataset$Gender))

table(Admission_Dataset$Research)
## 
##   0   1 
## 181 219
prop.table(table(Admission_Dataset$Research))
## 
##      0      1 
## 0.4525 0.5475
barplot(table(Admission_Dataset$Research))

table(Admission_Dataset$University_Rating)
## 
##   1   2   3   4   5 
##  26 107 133  74  60
prop.table(table(Admission_Dataset$University_Rating))
## 
##      1      2      3      4      5 
## 0.0650 0.2675 0.3325 0.1850 0.1500
barplot(table(Admission_Dataset$University_Rating))

Diagramas de Dispersión Variables Cuantitativas
pairs(~GRE_Score + TOEFL_Score + SOP + LOR + CGPA + Chance_of_Admit, data = Admission_Dataset)

3.2.2.2. 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 3.2.2.1. 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 Serial, y otro que excluye a Gender, SOP y University Rating. Se menciona de nuevo que Chance of Admit es la variable dependiente.

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: \(COA\) (Chance of Admit), \(GRE\) (GRE Score), \(TOEFL\) (TOEFL Score), \(SOP\) (SOP), \(LOR\) (LOR), \(CGPA\) (CGPA), \(G_1\) (Gender::Male), \(R_1\) (Research::1), \(UR_2\) (University Rating::2), \(UR_3\) (University Rating::3), \(UR_4\) (University Rating::4) y \(UR_5\) (University Rating::5), tiene la formulación (con coeficientes redondeados a cuatro cifras decimales por motivos de edición):\[\tiny \hat{COA}=-1,2425+0,0017\cdot GRE+0,0031\cdot TOEFL-0,0026\cdot SOP+0,0227\cdot LOR+0,1188\cdot CGPA-0,0009\cdot G_1+0,0244\cdot R_1-0.0146\cdot UR_2-0,0093\cdot UR_3-0,0072\cdot UR_4+0,0105\cdot UR_5\hspace{10mm}(28)\] para este modelo se obvia la interpretación del intercepto por carecer de sentido dado que Chance of Admit resultaría negativa en caso de un que las variables predictoras 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 Gender y University Rating; sin embargo, la variable SOP presentó un parte contradictorio: significancia en el resumen, pero lo contrario en ANOVA, la decisión tomada fue excluirla del modelo. Esto implicó que se calculase un modelo reducido con la formulación (con base en las mismas consideraciones de edición del modelo total):\[\hat{COA}=-1,2985+0,0018\cdot GRE+0,0030\cdot TOEFL+0,0228\cdot LOR+0,1210\cdot CGPA+0,0246\cdot R_1\hspace{10mm}(29)\]

Resumen y ANOVA del Modelo RLM Total
summary(lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$SOP+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Gender)+as.factor(Admission_Dataset$Research)+as.factor(Admission_Dataset$University_Rating)))
## 
## Call:
## lm(formula = Admission_Dataset$Chance_of_Admit ~ Admission_Dataset$GRE_Score + 
##     Admission_Dataset$TOEFL_Score + Admission_Dataset$SOP + Admission_Dataset$LOR + 
##     Admission_Dataset$CGPA + as.factor(Admission_Dataset$Gender) + 
##     as.factor(Admission_Dataset$Research) + as.factor(Admission_Dataset$University_Rating))
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.261050 -0.022572  0.008898  0.037703  0.161613 
## 
## Coefficients:
##                                                   Estimate Std. Error t value
## (Intercept)                                     -1.2425278  0.1275982  -9.738
## Admission_Dataset$GRE_Score                      0.0017081  0.0005999   2.847
## Admission_Dataset$TOEFL_Score                    0.0030599  0.0010941   2.797
## Admission_Dataset$SOP                           -0.0025838  0.0055869  -0.462
## Admission_Dataset$LOR                            0.0227223  0.0055724   4.078
## Admission_Dataset$CGPA                           0.1187838  0.0122456   9.700
## as.factor(Admission_Dataset$Gender)1            -0.0009445  0.0066413  -0.142
## as.factor(Admission_Dataset$Research)1           0.0243849  0.0079823   3.055
## as.factor(Admission_Dataset$University_Rating)2 -0.0146385  0.0148071  -0.989
## as.factor(Admission_Dataset$University_Rating)3 -0.0092586  0.0161568  -0.573
## as.factor(Admission_Dataset$University_Rating)4 -0.0071835  0.0197422  -0.364
## as.factor(Admission_Dataset$University_Rating)5  0.0104776  0.0217073   0.483
##                                                 Pr(>|t|)    
## (Intercept)                                      < 2e-16 ***
## Admission_Dataset$GRE_Score                      0.00465 ** 
## Admission_Dataset$TOEFL_Score                    0.00542 ** 
## Admission_Dataset$SOP                            0.64400    
## Admission_Dataset$LOR                           5.52e-05 ***
## Admission_Dataset$CGPA                           < 2e-16 ***
## as.factor(Admission_Dataset$Gender)1             0.88698    
## as.factor(Admission_Dataset$Research)1           0.00241 ** 
## as.factor(Admission_Dataset$University_Rating)2  0.32347    
## as.factor(Admission_Dataset$University_Rating)3  0.56695    
## as.factor(Admission_Dataset$University_Rating)4  0.71616    
## as.factor(Admission_Dataset$University_Rating)5  0.62960    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.06383 on 388 degrees of freedom
## Multiple R-squared:  0.8052, Adjusted R-squared:  0.7997 
## F-statistic: 145.8 on 11 and 388 DF,  p-value: < 2.2e-16
anova(lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$SOP+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Gender)+as.factor(Admission_Dataset$Research)+as.factor(Admission_Dataset$University_Rating)))
## Analysis of Variance Table
## 
## Response: Admission_Dataset$Chance_of_Admit
##                                                 Df Sum Sq Mean Sq   F value
## Admission_Dataset$GRE_Score                      1 5.2273  5.2273 1283.1852
## Admission_Dataset$TOEFL_Score                    1 0.3921  0.3921   96.2542
## Admission_Dataset$SOP                            1 0.2308  0.2308   56.6487
## Admission_Dataset$LOR                            1 0.1996  0.1996   48.9900
## Admission_Dataset$CGPA                           1 0.4249  0.4249  104.3071
## as.factor(Admission_Dataset$Gender)              1 0.0001  0.0001    0.0204
## as.factor(Admission_Dataset$Research)            1 0.0394  0.0394    9.6825
## as.factor(Admission_Dataset$University_Rating)   4 0.0198  0.0050    1.2169
## Residuals                                      388 1.5806  0.0041          
##                                                   Pr(>F)    
## Admission_Dataset$GRE_Score                    < 2.2e-16 ***
## Admission_Dataset$TOEFL_Score                  < 2.2e-16 ***
## Admission_Dataset$SOP                          3.676e-13 ***
## Admission_Dataset$LOR                          1.137e-11 ***
## Admission_Dataset$CGPA                         < 2.2e-16 ***
## as.factor(Admission_Dataset$Gender)             0.886529    
## as.factor(Admission_Dataset$Research)           0.001998 ** 
## as.factor(Admission_Dataset$University_Rating)  0.303051    
## Residuals                                                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Coeficientes del Modelo RLM Total
coefficients(lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$SOP+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Gender)+as.factor(Admission_Dataset$Research)+as.factor(Admission_Dataset$University_Rating)))
##                                     (Intercept) 
##                                   -1.2425278085 
##                     Admission_Dataset$GRE_Score 
##                                    0.0017080644 
##                   Admission_Dataset$TOEFL_Score 
##                                    0.0030598850 
##                           Admission_Dataset$SOP 
##                                   -0.0025838261 
##                           Admission_Dataset$LOR 
##                                    0.0227223366 
##                          Admission_Dataset$CGPA 
##                                    0.1187837898 
##            as.factor(Admission_Dataset$Gender)1 
##                                   -0.0009445485 
##          as.factor(Admission_Dataset$Research)1 
##                                    0.0243849465 
## as.factor(Admission_Dataset$University_Rating)2 
##                                   -0.0146385378 
## as.factor(Admission_Dataset$University_Rating)3 
##                                   -0.0092586061 
## as.factor(Admission_Dataset$University_Rating)4 
##                                   -0.0071834932 
## as.factor(Admission_Dataset$University_Rating)5 
##                                    0.0104776198
Coeficientes del Modelo RLM Reducido
coefficients(lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Research)))
##                            (Intercept)            Admission_Dataset$GRE_Score 
##                           -1.298463648                            0.001782011 
##          Admission_Dataset$TOEFL_Score                  Admission_Dataset$LOR 
##                            0.003031957                            0.022776188 
##                 Admission_Dataset$CGPA as.factor(Admission_Dataset$Research)1 
##                            0.121004204                            0.024576889
3.2.2.3. 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 SOP resultó acertada, el algoritmo iterado que considera componentes ANOVA y de desviación de residuales la excluyó en la cuarta iteración. Además, el mismo algoritmo determinó un modelo basado en las mismas variables del modelo reducido fundamento en la inspección de varaibles de las dos secciones precedentes.

Complementariamente, en la pestaña de Bondades de Ajuste, Significancias y Criterios de Información Comparados se presentan en paralelo los modelos generados. La consideración de todas las variables del conjunto de datos presentó una bondad de ajuste con base en el coeficiente de determinación múltiple que solo se redujo en terminos absolutos \(0,002\) puntos (es decir, se pasó de explicar el \(80,5\) \(\%\) de la variabilidad a el \(80,3\) \(\%\)) en comparación con el modelo reducido y el iterado; además, las significancias global e individuales de estos evidencian que ambos modelos, que son idénticos, aportan información relevante para estimar la variable dependiente Chance of Admit, porque para los valores críticos obtenidos de las pruebas \(F\) (para la significancia global) y \(t\) (para las significancias individuales), los p-valores resultaron siempre menores para cualquier nivel de significancia \(\alpha\) incluido dentro de los tradicionales, por ejemplo, \(\alpha=0,01\).

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}=-1059,225<-1052,314=AIC_{RLMTotal}\) y \(BIC_{RLMReducido}=BIC_{RLMIterado}=-1031,284<-1000,425=BIC_{RLMTotal}\).

Mejor Modelo Iterado según AIC
modelo_Iterado_STEP = step(lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$SOP+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Gender)+as.factor(Admission_Dataset$Research)+as.factor(Admission_Dataset$University_Rating)))
## Start:  AIC=-2189.47
## Admission_Dataset$Chance_of_Admit ~ Admission_Dataset$GRE_Score + 
##     Admission_Dataset$TOEFL_Score + Admission_Dataset$SOP + Admission_Dataset$LOR + 
##     Admission_Dataset$CGPA + as.factor(Admission_Dataset$Gender) + 
##     as.factor(Admission_Dataset$Research) + as.factor(Admission_Dataset$University_Rating)
## 
##                                                  Df Sum of Sq    RSS     AIC
## - as.factor(Admission_Dataset$University_Rating)  4   0.01983 1.6004 -2192.5
## - as.factor(Admission_Dataset$Gender)             1   0.00008 1.5807 -2191.4
## - Admission_Dataset$SOP                           1   0.00087 1.5815 -2191.2
## <none>                                                        1.5806 -2189.5
## - Admission_Dataset$TOEFL_Score                   1   0.03186 1.6125 -2183.5
## - Admission_Dataset$GRE_Score                     1   0.03302 1.6136 -2183.2
## - as.factor(Admission_Dataset$Research)           1   0.03802 1.6186 -2182.0
## - Admission_Dataset$LOR                           1   0.06773 1.6483 -2174.7
## - Admission_Dataset$CGPA                          1   0.38330 1.9639 -2104.6
## 
## Step:  AIC=-2192.48
## Admission_Dataset$Chance_of_Admit ~ Admission_Dataset$GRE_Score + 
##     Admission_Dataset$TOEFL_Score + Admission_Dataset$SOP + Admission_Dataset$LOR + 
##     Admission_Dataset$CGPA + as.factor(Admission_Dataset$Gender) + 
##     as.factor(Admission_Dataset$Research)
## 
##                                         Df Sum of Sq    RSS     AIC
## - as.factor(Admission_Dataset$Gender)    1   0.00017 1.6006 -2194.4
## - Admission_Dataset$SOP                  1   0.00021 1.6006 -2194.4
## <none>                                               1.6004 -2192.5
## - Admission_Dataset$TOEFL_Score          1   0.03291 1.6333 -2186.3
## - Admission_Dataset$GRE_Score            1   0.03558 1.6360 -2185.7
## - as.factor(Admission_Dataset$Research)  1   0.03944 1.6399 -2184.7
## - Admission_Dataset$LOR                  1   0.07345 1.6739 -2176.5
## - Admission_Dataset$CGPA                 1   0.41675 2.0172 -2101.9
## 
## Step:  AIC=-2194.43
## Admission_Dataset$Chance_of_Admit ~ Admission_Dataset$GRE_Score + 
##     Admission_Dataset$TOEFL_Score + Admission_Dataset$SOP + Admission_Dataset$LOR + 
##     Admission_Dataset$CGPA + as.factor(Admission_Dataset$Research)
## 
##                                         Df Sum of Sq    RSS     AIC
## - Admission_Dataset$SOP                  1   0.00024 1.6008 -2196.4
## <none>                                               1.6006 -2194.4
## - Admission_Dataset$TOEFL_Score          1   0.03291 1.6335 -2188.3
## - Admission_Dataset$GRE_Score            1   0.03585 1.6364 -2187.6
## - as.factor(Admission_Dataset$Research)  1   0.03935 1.6400 -2186.7
## - Admission_Dataset$LOR                  1   0.07445 1.6750 -2178.2
## - Admission_Dataset$CGPA                 1   0.41691 2.0175 -2103.8
## 
## Step:  AIC=-2196.38
## Admission_Dataset$Chance_of_Admit ~ Admission_Dataset$GRE_Score + 
##     Admission_Dataset$TOEFL_Score + Admission_Dataset$LOR + Admission_Dataset$CGPA + 
##     as.factor(Admission_Dataset$Research)
## 
##                                         Df Sum of Sq    RSS     AIC
## <none>                                               1.6008 -2196.4
## - Admission_Dataset$TOEFL_Score          1   0.03292 1.6338 -2190.2
## - Admission_Dataset$GRE_Score            1   0.03638 1.6372 -2189.4
## - as.factor(Admission_Dataset$Research)  1   0.03912 1.6400 -2188.7
## - Admission_Dataset$LOR                  1   0.09133 1.6922 -2176.2
## - Admission_Dataset$CGPA                 1   0.43201 2.0328 -2102.8
coefficients(modelo_Iterado_STEP)
##                            (Intercept)            Admission_Dataset$GRE_Score 
##                           -1.298463648                            0.001782011 
##          Admission_Dataset$TOEFL_Score                  Admission_Dataset$LOR 
##                            0.003031957                            0.022776188 
##                 Admission_Dataset$CGPA as.factor(Admission_Dataset$Research)1 
##                            0.121004204                            0.024576889
Bondades de Ajuste, Significancias y Criterios de Información Comparados
modelo_RLM_TOTAL = lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$SOP+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Gender)+as.factor(Admission_Dataset$Research)+as.factor(Admission_Dataset$University_Rating))
modelo_RLM_REDUCIDO = lm(Admission_Dataset$Chance_of_Admit~Admission_Dataset$GRE_Score+Admission_Dataset$TOEFL_Score+Admission_Dataset$LOR+Admission_Dataset$CGPA+as.factor(Admission_Dataset$Research))

stargazer(modelo_RLM_TOTAL, modelo_RLM_REDUCIDO, modelo_Iterado_STEP, type = "text", df = TRUE)
## 
## ===============================================================================================
##                                                 Dependent variable:                            
##                     ---------------------------------------------------------------------------
##                                                   Chance_of_Admit                              
##                                (1)                      (2)                      (3)           
## -----------------------------------------------------------------------------------------------
## GRE_Score                   0.002***                  0.002***                 0.002***        
##                              (0.001)                  (0.001)                  (0.001)         
##                                                                                                
## TOEFL_Score                 0.003***                  0.003***                 0.003***        
##                              (0.001)                  (0.001)                  (0.001)         
##                                                                                                
## SOP                          -0.003                                                            
##                              (0.006)                                                           
##                                                                                                
## LOR                         0.023***                  0.023***                 0.023***        
##                              (0.006)                  (0.005)                  (0.005)         
##                                                                                                
## CGPA                        0.119***                  0.121***                 0.121***        
##                              (0.012)                  (0.012)                  (0.012)         
##                                                                                                
## Gender)1                     -0.001                                                            
##                              (0.007)                                                           
##                                                                                                
## Research)1                  0.024***                  0.025***                 0.025***        
##                              (0.008)                  (0.008)                  (0.008)         
##                                                                                                
## University_Rating)2          -0.015                                                            
##                              (0.015)                                                           
##                                                                                                
## University_Rating)3          -0.009                                                            
##                              (0.016)                                                           
##                                                                                                
## University_Rating)4          -0.007                                                            
##                              (0.020)                                                           
##                                                                                                
## University_Rating)5           0.010                                                            
##                              (0.022)                                                           
##                                                                                                
## Constant                    -1.243***                -1.298***                -1.298***        
##                              (0.128)                  (0.117)                  (0.117)         
##                                                                                                
## -----------------------------------------------------------------------------------------------
## Observations                   400                      400                      400           
## R2                            0.805                    0.803                    0.803          
## Adjusted R2                   0.800                    0.800                    0.800          
## Residual Std. Error     0.064 (df = 388)          0.064 (df = 394)         0.064 (df = 394)    
## F Statistic         145.814*** (df = 11; 388) 320.637*** (df = 5; 394) 320.637*** (df = 5; 394)
## ===============================================================================================
## 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    13 -1052.314
## modelo_RLM_REDUCIDO  7 -1059.225
## modelo_Iterado_STEP  7 -1059.225
BIC(modelo_RLM_TOTAL, modelo_RLM_REDUCIDO, modelo_Iterado_STEP)
##                     df       BIC
## modelo_RLM_TOTAL    13 -1000.425
## modelo_RLM_REDUCIDO  7 -1031.284
## modelo_Iterado_STEP  7 -1031.284

3.3. Regresión Logística Simple

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.

3.3.1. 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: Chance of Admit (variable independiente) y Research (variable dependiente), con base en una distribución binomial y la función de enlace \(Logit\).

3.3.2. Desarrollo del Análisis

El estudio de regresión lineal simple ha sido procesado con R version 4.2.2 (2022-10-31 ucrt) mediado por RStudio 2022.07.2 Build 576 en una plataforma x86_64-w64-mingw32.

3.3.2.1. 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 Research 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 Chance of Admit, como se hizo en la sección 3.1.2.1., presenta asimetría de sesgo negativo con rango intercuartílico estrecho de dispersión imperceptible. Además, un dato se visualiza como outlier. Así, puede decirse que la variable registra valores altos en relación con su intervalo de medición. Lo expuesto también es constatable a través de la pestaña Histograma de Chance of Admit.

Asimismo, según la pestaña Resumen y Diagrama de Barras de Research, la variable cualitativa::nominal Research muestra proporcionalidad mayor para los casos favorables 1, que para los casos desfavorables 0: \(54.75\) \(\%\) y \(45.25\) \(\%\), respectivamente.

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 Research los resultados de Chance of Admit son mayores, en comparación con los casos desfavorables. Además, ambos casos: los favorables y los desfavorables, muestran sesgo negativo, aunque es más notorio para los casos favorable. También, en el rango intercuartílico se visualizan dispersiones opuestas entre los casos desfavorables, hacia la mitad inferior de los datos, y los casos favorables, hacia la mitad superior. Asimismo, los atípicos, en ambos casos, se presentan en los extremos inferiores de las distribuciones, es decir, resultaron más extraños los valores bajos.

Resumen y Boxplot de Chance of Admit
summary(Admission_Dataset$Chance_of_Admit)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3400  0.6400  0.7300  0.7244  0.8300  0.9700
boxplot(Admission_Dataset$Chance_of_Admit, main = "Diagrama de Caja de Chance of Admit", col = c("orange"))

Histograma de Chance of Admit
summary(Admission_Dataset$Chance_of_Admit)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3400  0.6400  0.7300  0.7244  0.8300  0.9700
hist(Admission_Dataset$Chance_of_Admit, main = "Histograma de Chance of Admit", col = c("gold"))

Resumen y Diagrama de Barras de Research
table(Admission_Dataset$Research)
## 
##   0   1 
## 181 219
prop.table(table(Admission_Dataset$Research))
## 
##      0      1 
## 0.4525 0.5475
barplot(table(Admission_Dataset$Research))

Resumen y Diagrama de Cajas Conjunto
tapply(Admission_Dataset$Chance_of_Admit, Admission_Dataset$Research, mean)
##         0         1 
## 0.6376796 0.7959817
tapply(Admission_Dataset$Chance_of_Admit, Admission_Dataset$Research, median)
##    0    1 
## 0.65 0.80
boxplot(Admission_Dataset$Chance_of_Admit~Admission_Dataset$Research, main = "Boxplot Conjunto: Chance of Admit - Research", col = c("orange", "gold"))

3.3.2.2. Formulación del modelo de RLogS entre las variables de estudio.

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^{-7,658709+10,886959\cdot x}\hspace{10mm}(31)\]

Asimismo, la pestaña Resumen Estadístico del Modelo RLogS muestra, para efectos de comparación, los resúmenes del modelo estudiado y de uno alternativo con base en la variable cualitativa::nominal Gender. Con base en el criterio de información de Akaike (AIC por sus siglas en inglés), del cual se sabe que es una medida de la bondad de ajuste de un modelo estadístico que describe la relación entre el sesgo y la varianza en la formulación del modelo, es decir, entre su exactitud y complejidad, se verifica que resulta un mejor modelo de la variable Research que de la variable Gender, porque: \(AIC_R=412.60<534.09=AIC_G\). También, para apoyar que el modelo basado en la variable Research es mejor que aquél basado en Gender, el cociente entre la desviación nula (Null Deviance) y la desviación residual (Residual Deviance), observable en la pestaña Resumen Estadístico del Modelo RLosgS, es mayor en el modelo propuesto que en el de comparación.

Coeficientes del Modelo RLogS
modelo_RLog_Simple = glm(Admission_Dataset$Research~Admission_Dataset$Chance_of_Admit, family = "binomial", data = data.frame(Admission_Dataset$Research, Admission_Dataset$Chance_of_Admit))
coef(modelo_RLog_Simple)
##                       (Intercept) Admission_Dataset$Chance_of_Admit 
##                         -7.658709                         10.886959
Resumen Estadístico del Modelo RLogS
summary(modelo_RLog_Simple)
## 
## Call:
## glm(formula = Admission_Dataset$Research ~ Admission_Dataset$Chance_of_Admit, 
##     family = "binomial", data = data.frame(Admission_Dataset$Research, 
##         Admission_Dataset$Chance_of_Admit))
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.0756  -0.9013   0.3831   0.7836   2.7433  
## 
## Coefficients:
##                                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                        -7.6587     0.8471  -9.041   <2e-16 ***
## Admission_Dataset$Chance_of_Admit  10.8870     1.1640   9.353   <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: 550.9  on 399  degrees of freedom
## Residual deviance: 408.6  on 398  degrees of freedom
## AIC: 412.6
## 
## Number of Fisher Scoring iterations: 4
modelo_RLog_Simple_S = glm(Admission_Dataset$Gender~Admission_Dataset$Chance_of_Admit, family = "binomial", data = data.frame(Admission_Dataset$Gender, Admission_Dataset$Chance_of_Admit))
summary(modelo_RLog_Simple_S)
## 
## Call:
## glm(formula = Admission_Dataset$Gender ~ Admission_Dataset$Chance_of_Admit, 
##     family = "binomial", data = data.frame(Admission_Dataset$Gender, 
##         Admission_Dataset$Chance_of_Admit))
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.4291  -1.3876   0.9566   0.9764   1.0192  
## 
## Coefficients:
##                                   Estimate Std. Error z value Pr(>|z|)
## (Intercept)                         0.2816     0.5329   0.528    0.597
## Admission_Dataset$Chance_of_Admit   0.3021     0.7232   0.418    0.676
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 530.26  on 399  degrees of freedom
## Residual deviance: 530.09  on 398  degrees of freedom
## AIC: 534.09
## 
## Number of Fisher Scoring iterations: 4
3.3.2.3. Análisis del modelo RLogS.

Se mostrarán, a través de pestañas, los resultados de algunas predicciones obtenidas a través del modelo RLogS para identificar en sus respuestas la correspondencia de sentido en las razones de probabilidades ODDS a favor o en contra del evento considerado: \(\frac{\pi}{1-\pi}\) y \(\frac{1-\pi}{\pi}\), respectivamente. Se menciona de nuevo que las variables de interés son: Chance of Admit (variable independiente) y Research (variable dependiente).

La pestaña Variable Predictora igual a Cero plantea dos situaciones interpretativas. La primera, permite comprender que el coeficiente del factor en el cual está presente la varaible predictora, estima una probabilidad de caso favorable cercana a cero en el orden de la diezmilésima. La segunda, acarrea una interpretación más delicada: como la variable Chance of Admit se mide en el intervalo \([0,1]\) con dos cifras significativas y dos decimales de precisión, una unidad de medida razonable en ella sería una centésima, por ejemplo: pasar de \(0.62\) a \(0.63\) implica incrementar en una unidad de medida a \(0.62\). Así, se entiende que el cociente de probabilidades en relación con la variable predictora en el modelo RLogS refleje un incremento acumulado de \(\approx 53474.4\) veces desde \(0\) hasta \(1\), con incrementos de \(0.01\).

Con base en lo anterior, a través de la pestaña Probabilidades Estimadas se puede apreciar entre los registros \(19\) y \(20\) un delta de cambio absoluto igual a \(0.022795\) (equivalente a un incremento relativo \(\approx 7.94\) \(\%\)) al incrementarse la variable predictora en una unidad como se definió en el párrafo anterior.

Por último, el gráfico de curva logística, en la pestaña Gráfica del Modelo RLogS, permite visualmente comprender el comportamiento de las variables involucradas en el modelo propuesto; es decir, los casos favorables en relación con la variable Research logran superar la barrera del \(90\)\(\%\) del valor de Chance of Admit.

Variable Predictora igual a Cero
coef(modelo_RLog_Simple)
##                       (Intercept) Admission_Dataset$Chance_of_Admit 
##                         -7.658709                         10.886959
round(exp(coef(modelo_RLog_Simple)),6)
##                       (Intercept) Admission_Dataset$Chance_of_Admit 
##                          0.000472                      53474.431948
Probabilidades Estimadas
predict(modelo_RLog_Simple, data.frame(seq(1, 400)), type = "response")
##          1          2          3          4          5          6          7 
## 0.91351219 0.64916704 0.54485447 0.74093967 0.35842984 0.89468861 0.62398805 
##          8          9         10         11         12         13         14 
## 0.43645133 0.09839119 0.05954803 0.11946668 0.81552778 0.69701403 0.28724661 
##         15         16         17         18         19         20         21 
## 0.26548268 0.14433387 0.38383169 0.35842984 0.31004161 0.28724661 0.33379838 
##         22         23         24         25         26         27         28 
## 0.49054171 0.92923732 0.93607003 0.94792751 0.92923732 0.64916704 0.05373557 
##         29         30         31         32         33         34         35 
## 0.06594540 0.14433387 0.35842984 0.59812068 0.90451448 0.89468861 0.92923732 
##         36         37         38         39         40         41         42 
## 0.87234069 0.33379838 0.20680829 0.11946668 0.08069298 0.06594540 0.08914666 
##         43         44         45         46         47         48         49 
## 0.13140182 0.85971747 0.90451448 0.87234069 0.84606630 0.88398130 0.78050255 
##         50         51         52         53         54         55         56 
## 0.69701403 0.64916704 0.17335814 0.69701403 0.54485447 0.49054171 0.33379838 
##         57         58         59         60         61         62         63 
## 0.33379838 0.06594540 0.02321646 0.04368067 0.08069298 0.07297672 0.14433387 
##         64         65         66         67         68         69         70 
## 0.17335814 0.11946668 0.15830669 0.26548268 0.18951843 0.43645133 0.69701403 
##         71         72         73         74         75         76         77 
## 0.92923732 0.94228397 0.92173541 0.81552778 0.59812068 0.54485447 0.59812068 
##         78         79         80         81         82         83         84 
## 0.33379838 0.05373557 0.06594540 0.09839119 0.94228397 0.91351219 0.91351219 
##         85         86         87         88         89         90         91 
## 0.92923732 0.64916704 0.54485447 0.38383169 0.33379838 0.59812068 0.33379838 
##         92         93         94         95         96         97         98 
## 0.02870206 0.01875903 0.05373557 0.02321646 0.04368067 0.08069298 0.84606630 
##         99        100        101        102        103        104        105 
## 0.89468861 0.71950118 0.51775052 0.33379838 0.28724661 0.18951843 0.59812068 
##        106        107        108        109        110        111        112 
## 0.46338883 0.85971747 0.90451448 0.92173541 0.43645133 0.26548268 0.46338883 
##        113        114        115        116        117        118        119 
## 0.28724661 0.54485447 0.22523715 0.38383169 0.17335814 0.05954803 0.07297672 
##        120        121        122        123        124        125        126 
## 0.51775052 0.92923732 0.92923732 0.18951843 0.26548268 0.18951843 0.33379838 
##        127        128        129        130        131        132        133 
## 0.83134732 0.69701403 0.81552778 0.91351219 0.94228397 0.67354209 0.51775052 
##        134        135        136        137        138        139        140 
## 0.71950118 0.88398130 0.78050255 0.64916704 0.51775052 0.74093967 0.69701403 
##        141        142        143        144        145        146        147 
## 0.81552778 0.89468861 0.91351219 0.94792751 0.74093967 0.76128325 0.62398805 
##        148        149        150        151        152        153        154 
## 0.79858388 0.94228397 0.71950118 0.92173541 0.92923732 0.84606630 0.71950118 
##        155        156        157        158        159        160        161 
## 0.74093967 0.67354209 0.49054171 0.35842984 0.26548268 0.11946668 0.18951843 
##        162        163        164        165        166        167        168 
## 0.13140182 0.40988364 0.43645133 0.76128325 0.69701403 0.35842984 0.33379838 
##        169        170        171        172        173        174        175 
## 0.33379838 0.35842984 0.43645133 0.88398130 0.84606630 0.88398130 0.85971747 
##        176        177        178        179        180        181        182 
## 0.83134732 0.89468861 0.78050255 0.54485447 0.57169525 0.51775052 0.51775052 
##        183        184        185        186        187        188        189 
## 0.43645133 0.62398805 0.54485447 0.88398130 0.81552778 0.92173541 0.92173541 
##        190        191        192        193        194        195        196 
## 0.87234069 0.89468861 0.85971747 0.84606630 0.92923732 0.67354209 0.69701403 
##        197        198        199        200        201        202        203 
## 0.57169525 0.57169525 0.49054171 0.54485447 0.57169525 0.54485447 0.94792751 
##        204        205        206        207        208        209        210 
## 0.94792751 0.46338883 0.18951843 0.31004161 0.38383169 0.33379838 0.43645133 
##        211        212        213        214        215        216        217 
## 0.71950118 0.78050255 0.93607003 0.94228397 0.92923732 0.92173541 0.90451448 
##        218        219        220        221        222        223        224 
## 0.83134732 0.81552778 0.59812068 0.64916704 0.62398805 0.64916704 0.51775052 
##        225        226        227        228        229        230        231 
## 0.40988364 0.26548268 0.31004161 0.33379838 0.51775052 0.78050255 0.57169525 
##        232        233        234        235        236        237        238 
## 0.59812068 0.46338883 0.33379838 0.90451448 0.87234069 0.83134732 0.84606630 
##        239        240        241        242        243        244        245 
## 0.49054171 0.22523715 0.24480139 0.35842984 0.49054171 0.64916704 0.31004161 
##        246        247        248        249        250        251        252 
## 0.76128325 0.54485447 0.51775052 0.74093967 0.67354209 0.59812068 0.49054171 
##        253        254        255        256        257        258        259 
## 0.51775052 0.92173541 0.83134732 0.71950118 0.64916704 0.69701403 0.67354209 
##        260        261        262        263        264        265        266 
## 0.89468861 0.85971747 0.51775052 0.49054171 0.49054171 0.62398805 0.51775052 
##        267        268        269        270        271        272        273 
## 0.54485447 0.57169525 0.79858388 0.67354209 0.54485447 0.14433387 0.08914666 
##        274        275        276        277        278        279        280 
## 0.11946668 0.20680829 0.69701403 0.88398130 0.49054171 0.38383169 0.40988364 
##        281        282        283        284        285        286        287 
## 0.43645133 0.74093967 0.76128325 0.74093967 0.92923732 0.92173541 0.91351219 
##        288        289        290        291        292        293        294 
## 0.88398130 0.78050255 0.71950118 0.20680829 0.17335814 0.17335814 0.33379838 
##        295        296        297        298        299        300        301 
## 0.26548268 0.43645133 0.64916704 0.84606630 0.89468861 0.51775052 0.28724661 
##        302        303        304        305        306        307        308 
## 0.38383169 0.35842984 0.57169525 0.28724661 0.59812068 0.71950118 0.74093967 
##        309        310        311        312        313        314        315 
## 0.46338883 0.49054171 0.64916704 0.81552778 0.69701403 0.40988364 0.38383169 
##        316        317        318        319        320        321        322 
## 0.35842984 0.14433387 0.20680829 0.71950118 0.74093967 0.62398805 0.57169525 
##        323        324        325        326        327        328        329 
## 0.54485447 0.28724661 0.40988364 0.76128325 0.31004161 0.46338883 0.74093967 
##        330        331        332        333        334        335        336 
## 0.04846122 0.74093967 0.57169525 0.62398805 0.51775052 0.57169525 0.79858388 
##        337        338        339        340        341        342        343 
## 0.54485447 0.92923732 0.76128325 0.76128325 0.62398805 0.71950118 0.20680829 
##        344        345        346        347        348        349        350 
## 0.22523715 0.07297672 0.08914666 0.07297672 0.04368067 0.18951843 0.28724661 
##        351        352        353        354        355        356        357 
## 0.59812068 0.57169525 0.33379838 0.31004161 0.22523715 0.57169525 0.71950118 
##        358        359        360        361        362        363        364 
## 0.43645133 0.49054171 0.76128325 0.83134732 0.92173541 0.90451448 0.46338883 
##        365        366        367        368        369        370        371 
## 0.67354209 0.84606630 0.59812068 0.18951843 0.10848021 0.40988364 0.54485447 
##        372        373        374        375        376        377        378 
## 0.88398130 0.93607003 0.71950118 0.03189798 0.02870206 0.01875903 0.07297672 
##        379        380        381        382        383        384        385 
## 0.17335814 0.51775052 0.69701403 0.57169525 0.78050255 0.28724661 0.94228397 
##        386        387        388        389        390        391        392 
## 0.94228397 0.06594540 0.13140182 0.08914666 0.64916704 0.33379838 0.51775052 
##        393        394        395        396        397        398        399 
## 0.81552778 0.67354209 0.88398130 0.78050255 0.81552778 0.90451448 0.40988364 
##        400 
## 0.93607003
Gráfica del Modelo RLogS
research <- Admission_Dataset$Research
chance_of_admit <- Admission_Dataset$Chance_of_Admit
dataPlot <- data.frame(chance_of_admit, research)
plot(research~chance_of_admit, data = dataPlot, main = "Modelo RLogS: Chance of Admit - Research", xlab = "Chance of Admit", ylab = "Research = 0 | Research = 1", col = "gold", pch = "I")
curve(predict(glm(research~chance_of_admit, family = "binomial", data = dataPlot), data.frame(chance_of_admit = x), type = "response"), col = "orange", lwd = 3, add = TRUE)

Conclusiones

Complementariamente a los análisis que fueron expuestos en las secciones de estudio de cada modelo tratado en este trabajo es importante hacer una mención global sobre el problema considerado a la luz de todo lo obtenido:

Optar por una plaza para ingresar como estudiante extranjero a una universidad norteamericana resulta de elevado grado de competición, pero para lo cual es muy poco significativo el sexo, la categoría de la universidad y el propósito que el aspirante espera cumplir al desear hacer estudios superiores. Sin emabrgo, las variables de trabajo usadas en este estudio solo explican, en conjunto, un poco más del \(80\) \(\%\) de la variabilidad de la variable objetivo, lo sufiente para tomar decisiones significativamente anticipadas para que un estudiante con propósito sepa qué registros debe cultivar para su futuro acceso a la universidad, bajo el contexto presentado, claro está. Sin embargo, el \(20\) \(\%\) restante de variabilidad queda sujeto a especulación, casi con incertidumbre, y esto resulta interesante de estudiar.

Por último, es importante resaltar el aspecto técnico relacionado con el procesamiento estadístico hecho en este estudio a nivel de robustez, eficiencia e integración que R, RStudio y RMarkdown ofrecen al usuario para que este se pueda enfocar en él sin pasar mayores inconvenientes con el soporte documental para presentarlo.

Referencias

Cramer, Harald. (1953). Métodos matemáticos de estadística (1st ed.). AGUILAR.
Daniel, Wayne W. (2013). Bioestadística base para el análisis de las ciencias de la salud (4th ed.). LIMUSA WILEY.
Devore, Jay L. (2008). Probabilidad y estadı́stica para ingenierı́a y ciencias (7th ed.). CENGAGE Learning.
LS0tDQp0aXRsZTogJyoqQWRtaXNpw7NuIGVuIGxhIFVuaXZlcnNpZGFkKionDQpzdWJ0aXRsZTogIkVzdHVkaW8gZGUgQW7DoWxpc2lzIGRlIFJlZ3Jlc2nDs24gY29uIGJhc2UgZW4gdW4gY29uanVudG8gZGUgZGF0b3MgZGUgYXNwaXJhbnRlcyBleHRyYW5qZXJvcyBwYXJhIHNlciBhZG1pdGlkb3MgZW4gZXN0dWRpb3Mgc3VwZXJpb3JlcyBlbiBFRS5VVS4iDQphdXRob3I6ICdQb3I6IEdpYW5jYXJsbyBMaWJyZXJvcyBMb25kb8Oxbzo6Z2xpYnJlcm9zbEBsaWJlcnRhZG9yZXMuZWR1LmNvJw0KZGF0ZTogRXN0dWRpbyBFbGFib3JhZG8gZW50cmUgbm92aWVtYnJlIHkgZGljaWVtYnJlIGRlIDIwMjIgY29tbyBhY3RpdmlkYWQgZm9ybWF0aXZhDQogIHkgZXZhbHVhdGl2YSBkZWwgY3Vyc28gQW7DoWxpc2lzIGRlIFJlZ3Jlc2nDs24gZGUgbGEgZXNwZWNpYWxpemFjacOzbiBlbiBFc3RhZMOtc3RpY2ENCiAgQXBsaWNhZGEgKG1vZGFsaWRhZCB2aXJ0dWFsKS4NCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHVuaXRlZA0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCmJpYmxpb2dyYXBoeTogYmlibGlvZ3JhZmlhX01FLmJpYg0KY3NsOiBhcGEuY3NsDQpsaW5rLWNpdGF0aW9uczogeWVzDQotLS0NCjwhLS0gQ29uZmlndXJhY2nDs24gR2xvYmFsIGRlIFIgLS0+DQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoc3RhcmdhemVyKQ0KDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1UUlVFKQ0KDQpBZG1pc3Npb25fRGF0YXNldCA8LSByZWFkX2V4Y2VsKCJEOi9aQi9bMl0gQWNhZGVtaWNhcy9bMTAuMV0gRXNwZWNpYWxpemFjaW9uL1swXSBDdXJzb3MvWzJdIEFuc19SZWdyZXNpb24vVGFyZWFzL1RhcmVhXzEvQWRtaXNzaW9uX0RhdGFzZXQueGxzeCIpDQpgYGANCg0KIyMgKioxLiBPYmpldGl2byBkZWwgRXN0dWRpbyoqDQpFbiB0w6lybWlub3MgZ2VuZXJhbGVzLCBlc3RlIGVzdHVkaW8gZXN0YWJsZWNlcsOhIGxhIHJlbGFjacOzbiBlbnRyZSBkb3MgbyBtw6FzIHZhcmlhYmxlcyBhIHRyYXbDqXMgZGUgbGEgb2J0ZW5jacOzbiBkZSBpbmZvcm1hY2nDs24gc29icmUgdW5hIGRlIGVsbGFzIGNvbiBiYXNlIGVuIGVsIGNvbm9jaW1pZW50byBkZSBsb3MgdmFsb3JlcyBkZSBsYXMgZGVtw6FzLiBMYSByZWxhY2nDs24gcXVlIHNlIGVzdGFibGVjZXLDoSBlbnRyZSBlbGxhcyBlcyBkZSBuYXR1cmFsZXphIG5vLWRldGVybWluw61zdGljYTsgZXMgZGVjaXIsIHNlIGZvcm11bGFyw6FuIHJlbGFjaW9uZXMgcHJvYmFiaWzDrXN0aWNhcyB5IHByb2NlZGltaWVudG9zIHBhcmEgaGFjZXIgaW5mZXJlbmNpYXMgc29icmUgbG9zIG1vZGVsb3MgdXNhZG9zIGVuIGVzdGUgZXN0dWRpbywgYSBsYSB2ZXogcXVlIHNlIG9idGllbmVuIG1lZGlkYXMgY3VhbnRpdGF0aXZhcyBkZWwgZ3JhZG8gZW4gZWwgcXVlIGxhcyB2YXJpYWJsZXMgZXN0w6FuIHJlbGFjaW9uYWRhcy4gTG9zIG1vZGVsb3MgZXN0dWRpYWRvcyBwdWVkZW4gdmVyc2UgY29tbyBjYXNvcyBlc3BlY2lhbGllcyBkZWwgbW9kZWxvIGxpbmVhbCBnZW5lcmFsaXphZG86IFJlZ3Jlc2nDs24gTGluZWFsIFNpbXBsZSwgUmVncmVzacOzbiBMaW5lYWwgTcO6bHRpcGxlIHkgUmVncmVzacOzbiBMb2fDrXN0aWNhLiBFbiBjYWRhIGFwYXJ0YWRvIHNlIGRlc2NyaWJpcsOhIHRlw7NyaWNhbWVudGUgYSBjYWRhIHVubyB5IHNlIHVzYXLDoSBjb21vIG9iamV0byBkZSBlc3R1ZGlvIHVuIGNvbmp1bnRvIGRlIGRhdG9zIGVuIHBhcnRpY3VsYXIgcXVlIGVzIGRlc2NyaXRvIGVuIGxhIHNlY2Npw7NuICoqMioqLiBDYWJlIGFub3RhciBxdWUgbG9zIGZ1bmRhbWVudG9zIHRlw7NyaWNvcyBleHB1ZXN0b3MgcHJvdmllbmVuIGRlIG5vdGFzIGRlIGNsYXNlIGRlbCBjdXJzbyBNw6l0b2RvcyBFc3RhZMOtc3RpY29zIGRpY3RhZG8gcG9yIGVsIHByb2Zlc29yIERhZ29iZXJ0byBCZXJtw7pkZXogcGFyYSBsYSBFc3BlY2lhbGl6YWNpw7NuIGVuIEVzdGFkw61zdGljYSBBcGxpY2FkYSwgbW9kYWxpZGFkIHZpcnR1YWwgKDIwMjItNCksIGRlIGxhIEZ1bmRhY2nDs24gVW5pdmVyc2l0YXJpYSBMb3MgTGliZXJ0YWRvcmVzOyB5IGRlIGxvcyBsaWJyb3MgcHJvYmFiaWxpZGFkIHkgZXN0YWTDrXN0aWNhIGRlIEpheSBMLiBEZXZvcmUgW0BQRURldm9yZTdlZF0sIEJpb2VzdGFkw61zdGljYSBkZSBXYXluZSBXLiBEYW5pZWwgW0BCRURhbmllbDRlZF0geSBNw6l0b2RvcyBNYXRlbcOhdGljb3MgZGUgRXN0YWTDrXN0aWNhIGRlIEhhcmFsZCBDcmFtZXIgW0BNTUVDcmFtZXIxZWRdLg0KDQojIyAqKjIuIERlc2NyaXBjacOzbiBkZSBsb3MgRGF0b3MqKg0KDQojIyMgMi4xLiBGdWVudGUgZGVsIENvbmp1bnRvIGRlIERhdG9zDQpFbCBjb25qdW50byBkZSBkYXRvcyBkZSB0cmFiYWpvIHNlIG9idHV2byBjYXNpIHRvdGFsbWVudGUgZGUgKipLYWdnbGUqKjogaHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9ha3NoYXlkYXR0YXRyYXlraGFyZS4gRXMgY29udmVuaWVudGUgYW5vdGFyIHF1ZSAqKkthZ2dsZSoqIGVzIHVuYSBjb21wYcOxw61hIHN1YnNpZGlhcmlhIGRlIEdvb2dsZSBMTEMgcXVlIG1hbnRpZW5lIHVuYSBjb211bmlkYWQgb25saW5lIGRlIGNpZW50w61maWNvcyBkZSBkYXRvcyB5IHByb2Zlc2lvbmFsZXMgZGVsIGFwcmVuZGl6YWplIGF1dG9tw6F0aWNvLiBFc3RhIGVtcHJlc2EgcGVybWl0ZSBhIHN1cyB1c3VhcmlvcyBlbmNvbnRyYXIgeSBwdWJsaWNhciBjb25qdW50b3MgZGUgZGF0b3MsIGV4cGxvcmFyIHkgY3JlYXIgbW9kZWxvcyBlbiB1biBlbnRvcm5vIGRlIGNpZW5jaWEgZGUgZGF0b3MgYmFzYWRvIGVuIGxhIHdlYiwgdHJhYmFqYXIgY29uIG90cm9zIGNpZW50w61maWNvcyBkZSBkYXRvcyBlIGluZ2VuaWVyb3MgZGUgYXByZW5kaXphamUgYXV0b23DoXRpY28geSBwYXJ0aWNpcGFyIGVuIGNvbmN1cnNvcyBwYXJhIHJlc29sdmVyIGRlc2Fmw61vcyBkZSBjaWVuY2lhIGRlIGRhdG9zLg0KDQojIyMgMi4yLiBDb250ZXh0byBkZWwgQ29uanVudG8gZGUgRGF0b3MNCkVsIGNvbmp1bnRvIGRlIGRhdG9zIGluY2x1eWUgbcOpdHJpY2FzIGFjYWTDqW1pY2FzIG9idGVuaWRhcyBwb3IgZXN0dWRpYW50ZXMgZXh0cmFuamVyb3MgcGFyYSBhc3BpcmFyIGEgYWNjZWRlciBhIHVuaXZlcnNpZGFkZXMgZGUgRUUuVVUuIEVzdGUgY29uanVudG8gZGUgZGF0b3Mgc2UgYWN0dWFsaXrDsyBwb3Igw7psdGltYSB2ZXogZW4ganVsaW8gZGUgMjAyMi4NCg0KIyMjIDIuMy4gRGVzY3JpcGNpw7NuIGRlbCBDb25qdW50byBkZSBEYXRvcw0KRWwgY29uanVudG8gZGUgZGF0b3MgY29udGllbmUgMTAgY2FtcG9zIHkgNDAwIHJlZ2lzdHJvcy4gVW5vIGRlIGxvcyBjYW1wb3MgZXMgc2ltcGxlbWVudGUgdW4gaWRlbnRpZmljYWRvciBudW3DqXJpY28gc2VjdWVuY2lhbCBkZSBsb3MgcmVnaXN0cm9zOyBvdHJvcyB0cmVzIHNvbiBkZSBuYXR1cmFsZXphIHBvbGl0w7NtaWNhOyB5IGVsIHJlc3RvIHNvbiBudW3DqXJpY29zIGVzdHJpY3RhbWVudGUgcG9zaXRpdm9zLiBMYSBsaXN0YSBzaWd1aWVudGUgbG9zIGRlc2NyaWJlIGVuIGVsIG1pc21vIG9yZGVuLCBkZSBpenF1aWVyZGRhIGEgZGVyZWNoYSwgY29tbyBhcGFyZWNlbiBlbiBlbCByYW5nbyBkZSBkYXRvcyBxdWUgbG9zIGNvbnRpZW5lIHkgc2UgZXN0YWJsZWNlIHBhcmEgY2FkYSBjYW1wbywgZXhjZXB0byBlbCBjYW1wbyAqKlNlcmlhbCoqLCBlbCB0aXBvIGRlIHZhcmlhYmxlIHkgc3UgZXNjYWxhIGRlIG1lZGljacOzbiBjb24gYmFzZSBlbiBsYSBub21lbmNsYXR1cmEgKHRpcG9fZGVfdmFyaWFibGU6OmVzY2FsYV9kZV9tZWRpY2nDs24pOg0KDQotICoqU2VyaWFsKiogKGlkZW50aWZpY2Fkb3IpOiByZWdpc3RyYSB1biBuw7ptZXJvIHNlY3VlbmNpYWRvIGEgcGFydGlyIGRlIDEgcGFyYSBpZGVudGlmaWNhciBkZSBmb3JtYSDDum5pY2EgY2FkYSByZWdpc3RybyBjb25zaWduYWRvIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zLg0KDQotICoqR2VuZGVyKiogKGN1YWxpdGF0aXZhOjpub21pbmFsKTogcmVnaXN0cmEgZWwgc2V4byBkZWwgZXN0dWRpYW50ZSBkZWwgY3VhbCBzZSByZWdpc3RyYXJvbiBsb3MgZGF0b3M6IDEgY29ycmVzcG9uZGUgY29uIHVuIGVzdHVkaWFudGUgZGUgc2V4byBtYXNjdWxpbm8sIDAgY29uIHVuIGVzdHVkaWFudGUgZGUgc2V4byBmZW1lbmluby4NCg0KLSAqKkdSRSBTY29yZSoqIChjdWFudGl0YXRpdmE6OnJhesOzbik6IHJlZ2lzdHJhIGVsIHB1bnRhamUgdG90YWwgR1JFIChleGFtZW4gZGUgYWNjZXNvIGEgbGEgdW5pdmVyc2lkYWQpIG9idGVuaWRvIHBvciBlbCBlc3R1ZGlhbnRlLiBHUkUgZXMgdW4gY29tcG9uZW50ZSBjb23Dum4gZGVsIHByb2Nlc28gZGUgYWRtaXNpw7NuIGEgY29sZWdpb3MgbyB1bml2ZXJzaWRhZGVzIGVuIEVFLlVVLiBxdWUgbWlkZSBlbCByYXpvbmFtaWVudG8gdmVyYmFsLCBjdWFudGl0YXRpdm8sIGxhIGVzY3JpdHVyYSBhbmFsw610aWNhIHkgbGFzIGhhYmlsaWRhZGVzIGRlIHBlbnNhbWllbnRvIGNyw610aWNvIHF1ZSBzZSBoYW4gYWRxdWlyaWRvIGEgbG8gbGFyZ28gZGUgdW4gZXh0ZW5zbyBwZXLDrW9kbyBkZSB0aWVtcG8geSBxdWUgbm8gZXN0w6FuIHJlbGFjaW9uYWRvcyBjb24gY2FtcG8gZXNwZWPDrWZpY29zIGRlIGVzdHVkaW8uIEVsIGNhbXBvIHNvbG8gcmVnaXN0cmEgZG9zIGRlIGxvcyB0cmVzIGNvbXBvbmVudGVzIGRlIGxhIGV2YWx1YWNpw7NuOiByYXpvbmFtaWVudG8gdmVyYmFsIHkgY3VhbnRpdGF0aXZvLCBlbiB1bmEgZXNjYWxhIGRlc2RlIDI2MCBoYXN0YSAzNDAgcHVudG9zLiBFbCByZXN1bHRhZG8gYXVzZW50ZSBkZWwgcHVudGFqZSBjb3JyZXNwb25kZSBjb24gZWwgY29tcG9uZW50ZSBkZSBlc2NyaXR1cmEgYW5hbMOtdGljYTogY2FsaWZpY2FkbyBlbnRyZSAwIHkgNiBwdW50b3MuDQoNCi0gKipUT0VGTCBTY29yZSoqIChjdWFudGl0YXRpdmE6OnJhesOzbik6IHJlZ2lzdHJhIGVsIHB1bnRhamUgdG90YWwgVE9FRkwgKHBydWViYSBkZSBpbmdsw6lzIGNvbW8gaWRpb21hIGV4dHJhbmplcm8pIG9idGVuaWRvIHBvciBlbCBlc3R1ZGlhbnRlLiBUT0VGTCBlcyB1biBjb21wb25lbnRlIGNvbcO6biBkZWwgcHJvY2VzbyBkZSBhZG1pc2nDs24gYSBjb2xlZ2lvcyBvIHVuaXZlcnNpZGFkZXMgZW4gRUUuVVUuIHBvciBwYXJ0ZSBkZSBlc3R1ZGlhbnRlcyBleHRyYW5qZXJvcyBxdWUgbWlkZSBsYXMgY29tcGV0ZW5jaWFzIGVuIGNvbXByZW5zacOzbiBlc2NyaXRhLCBjb21wcmVuc2nDs24gb3JhbCwgZXhwcmVzacOzbiBvcmFsIHkgZXhwcmVzacOzbiBlc2NyaXRhLCBlbiB1bmEgZXNjYWxhIGRlc2RlIDAgaGFzdGEgMTIwIHB1bnRvcy4NCg0KLSAqKlNPUCoqIChjdWFudGl0YXRpdmE6OnJhesOzbik6IHJlZ2lzdHJhIGVsIHB1bnRhamUgdG90YWwgU09QIChlbnNheW8gZGUgZGVjbGFyYWNpw7NuIGRlIHByb3DDs3NpdG9zIG8gZGUgYWRtaXNpw7NuKSBvYnRlbmlkbyBwb3IgZWwgZXN0dWRpYW50ZS4gU09QIGVzIHVuIGNvbXBvbmVudGUgY29tw7puIGRlbCBwcm9jZXNvIGRlIGFkbWlzacOzbiBhIGNvbGVnaW9zIG8gdW5pdmVyc2lkYWRlcyBlbiBFRS5VVS4gcXVlIGNvbnNpc3RlIGVuIHVuIGVuc2F5byBkZSBzb2xpY2l0dWQgZGUgaW5ncmVzbyBlc2NyaXRvIHBvciBlbCBlc3R1ZGlhbnRlIGVuIGVsIGN1YWwgZGViZSBoYWNlciB1bmEgZGVzY3JpcGNpw7NuIGdlbmVyYWwgZGUgcXVpw6luIGVzLCBlbiBxdWnDqW4gcXVpZXJlIGNvbnZlcnRpcnNlIHkgaGFzdGEgcXXDqSBwdW50byBlc3TDoSBwcmVwYXJhZG8gcGFyYSBzZWd1aXIgdW4gZGV0ZXJtaW5hZG8gY3Vyc28gZW4gbGEgaW5zdGl0dWNpw7NuIGVkdWNhdGl2YSBhIGxhIGN1YWwgYXNwaXJhIGluZ3Jlc2FyLiBFc3RlIGVuc2F5byBzZSBjYWxpZmljYSBjb24gdW4gcHVudGFqZSBlbnRyZSAwIHkgNS4NCg0KLSAqKkxPUioqIChjdWFudGl0YXRpdmE6OnJhesOzbik6IHJlZ2lzdHJhIGVsIHB1bnRhamUgdG90YWwgTE9SIChjYXJ0YSBkZSByZWNvbWVuZGFjacOzbikgb2J0ZW5pZG8gcG9yIGVsIGVzdHVkaWFudGUuIExPUiBlcyB1biBjb21wb25lbnRlIGNvbcO6biBkZWwgcHJvY2VzbyBkZSBhZG1pc2nDs24gYSBjb2xlZ2lvcyBvIHVuaXZlcnNpZGFkZXMgZW4gRUUuVVUuIHF1ZSBjb25zaXN0ZSBlbiB1bmEgcmVjb21lbmRhY2nDs24gZXNjcml0YSwgZ2VuZXJhbG1lbnRlIHBvciB1biBwcm9mZXNvciwgZW4gbGEgY3VhbCBlbCByZWRhY3RvciBldmFsw7phIGxhcyBjdWFsaWRhZGVzLCBjYXJhY3RlcsOtc3RpY2FzIHkgY2FwYWNpZGFkZXMgZGVsIGVzdHVkaWFudGUgcmVjb21lbmRhZG8gZW4gcmVsYWNpw7NuIGNvbiBzdSBhcHRpdHVkIHBhcmEgc2VndWlyIHVuIGN1cnNvIGVuIGxhIGluc3RpdHVjacOzbiBlZHVjYXRpdmEgYSBsYSBjdWFsIGVsIGVzdHVkaWFudGUgYXNwaXJhIGEgaW5ncmVzYXIuIEVzdGEgY2FydGEgc2UgY2FsaWZpY2EgY29uIHVuIHB1bnRhamUgZW50cmUgMCB5IDUuDQoNCi0gKipDR1BBKiogKGN1YW50aXRhdGl2YTo6cmF6w7NuKTogcmVnaXN0cmEgZWwgcHVudGFqZSB0b3RhbCBDR1BBIChwcm9tZWRpbyBkZSBjYWxpZmljYWNpb25lcyBhY3VtdWxhdGl2bykgb2J0ZW5pZG8gcG9yIGVsIGVzdHVkaWFudGUuIENHUEEgZXMgdW4gY29tcG9uZW50ZSBjb23Dum4gZGVsIHByb2Nlc28gZGUgYWRtaXNpw7NuIGEgY29sZWdpb3MgbyB1bml2ZXJzaWRhZGVzIGVuIEVFLlVVLiBxdWUgbWlkZSBlbCBkZXNlbXBlw7FvIHByb21lZGlvIGRlbCBlc3R1ZGlhbnRlIGVuIHN1IGVzY29sYXJpZGFkIHByZXZpYSBhIGxhIHNvbGljaXR1ZCBkZSBpbmdyZXNvIGEgbGEgaW5zdGl0dWNpw7NuIGVkdWNhdGl2YSBzaWd1aWVudGUgZGUgc3UgcHJlZmVyZW5jaWEuIEVzdGUgcHVudGFqZSBzZSBtaWRlIGVudHJlIDAgeSA0OyBzaW4gZW1iYXJnbywgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgZnVlIGNvbnZlcnRpZG8gZW4gdW5hIGVzY2FsYSBlbnRyZSAwIHkgMTAuDQoNCi0gKipSZXNlYXJjaCoqIChjdWFsaXRhdGl2YTo6bm9taW5hbCk6IHJlZ2lzdHJhIGxhIGV4cGVyaWVuY2lhIGVuIGludmVzdGlnYWNpw7NuIHF1ZSBwb3NlZSBlbCBlc3R1ZGlhbnRlOiAxIGNvcnJlc3BvbmRlIGNvbiBxdWUgZWwgZXN0dWRpYW50ZSBhcmd1bWVudGEgZXhwZXJpZW5jaWEgaW52ZXN0aWdhdGl2YSwgMCBjb3JyZXNwb25kZSBjb24gcXVlIG5vLWFyZ3VtZW50YSBleHBlcmllbmNpYSBpbnZlc3RpZ2F0aXZhLg0KDQotICoqVW5pdmVyc2l0eSBSYXRpbmcqKiAoY3VhbGl0YXRpdmE6Om5vbWluYWwob3JkZW5hZGEpKTogcmVnaXN0cmEgdmFsb3JhY2nDs24gZGUgbGEgdW5pdmVyc2lkYWQgYSBsYSBjdWFsIGFzcGlyYSBhIGluZ3Jlc2FyIGVsIGVzdHVkaWFudGUuIEVzdGEgdmFsb3JhY2nDs24gc2UgaGFjZSBlbiB1bmEgZXNjYWxhIGVudHJlIDAgeSA1IGVzdHJlbGxhcywgY2luY28gZXN0cmVsbGFzIGluZGljYSBsYSBtZWpvciB2YWxvcmFjacOzbi4NCg0KLSAqKkNoYW5jZSBvZiBBZG1pdCoqIChjdWFudGl0YXRpdmE6OnJhesOzbik6IHJlZ2lzdHJhIGxhIHByb2JhYmlsaWRhZCBkZSBxdWUgZWwgZXN0dWRpYW50ZSBzZWEgYWRtaXRpZG8gZW4gbGEgdW5pdmVyc2lkYWQgZGUgc3UgcHJlZmVyZW5jaWEgY29uIGJhc2UgZW4gbG9zIGRhdG9zIHJlZ2lzdHJhZG9zIGEgc3Ugbm9tYnJlLCBzYWx2byBzdSBzZXhvLiBFc3RhIHByb2JyYWJpbGlkYWQgc2UgbWlkZSBlbnRyZSAwIHkgMS4NCg0KIyMgKiozLiBBbsOhbGlzaXMgZGUgUmVncmVzaW9uZXMqKg0KU2Ugc2FiZSBxdWUgZWwgYW7DoWxpc2lzIGRlIHJlZ3Jlc2nDs24gZXMgdW4gcHJvY2VzbyBkZSBuYXR1cmFsZXphIGVzdGFkw61zdGljYSB1c2FkbyBwYXJhIGVzdGltYXIgcmVsYWNpb25lcyBlbnRyZSB2YXJpYWJsZXMgKHVuYSBkZXBlbmRpZW50ZSBvIGRlIHJlc3B1ZXN0YSB5IG90cmFzIGluZGVwZW5kaWVudGVzIG8gcHJlZGljdG9yYXMpIGEgdHJhdsOpcyBkZSB0w6ljbmljYXMgZGUgbW9kZWxhZG8geSBhbsOhbGlzaXMgcXVlIHBlcm1pdGVuIGVudGVuZGVyIGPDs21vIGVsIHZhbG9yIGRlIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlIHZhcsOtYSBhbCBjYW1iaWFyIGVsIHZhbG9yIGRlIHVuYSBvIG3DoXMgdmFyaWFibGVzIGluZGVwZW5kaWVudGVzLiBMb3MgbW9kZWxvcyBkZSBhbsOhbGlzaXMgZGUgcmVncmVzacOzbiBlc3R1ZGlhZG9zIGEgdHJhdsOpcyBkZSBlc3RlIGRvY3VtZW50byBzZXLDoW46IGxpbmVhbCAoc2ltcGxlIHkgbcO6bHRpcGxlKSB5IGxvZ8Otc3RpY28sIGVsbG9zIGVudGVuZGlkb3MgY29tbyBjYXNvcyBkZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIGdlbmVyYWxpemFkby4NCg0KIyMjIDMuMS4gUmVncmVzacOzbiBMaW5lYWwgU2ltcGxlDQpFc3RlIG1vZGVsbywgcXVlIGV2ZW50dWFsbWVudGUgc2Vyw6EgbGxhbWFkbyBlbiBlc3RlIGVzdHVkaW8gY29tbyAqKlJMUyoqLCBlc3TDoSBjb25mb3JtYWRvIHBvciBkb3MgdmFyaWFibGVzIGVzdGFkw61zdGljYXMgJHgkIHkgJFkkLCBkb25kZSAkWSQgc2UgYXN1bWUgcXVlIGVzdMOhIGluZmx1aWRhIHBvciAkeCQuIExhIHJlbGFjacOzbiBlc3TDoSBkYWRhIG1hdGVtw6F0aWNhbWVudGUgcG9yOiAkJFkgPSBcYmV0YV8wICsgXGJldGFfMSB4ICsgXHZhcmVwc2lsb24gXGhzcGFjZXsxMG1tfSBcaHNwYWNlezEwbW19KDEpJCQgZG9uZGU6DQoNCisgJFkkOiBlcyB1bmEgdmFyaWFibGUgZGUgcmVzcHVlc3RhIGRlIG5hdHVyYWxlemEgYWxlYXRvcmlhLg0KKyAkeCQ6IGVzIHVuYSB2YXJpYWJsZSBwcmVkaWN0b3JhIGRlIG5hdHVyYWxlemEgbm8gYWxlYXRvcmlhLg0KKyAkXHZhcmVwc2lsb24kOiBlcyB1bmEgdmFyaWFibGUgYWxlYXRvcmlhIG5vIG9ic2VydmFibGUuDQorICRcYmV0YV8wJCB5ICRcYmV0YV8xJDogc29uIHBhcsOhbWV0cm9zIHJlYWxlcyBkZXNjb25vY2lkb3MgZGVsIG1vZGVsby4NCg0KRW4gY29tcGFyYWNpw7NuIGNvbiBlbCBtb2RlbG8gbGluZWFsIHNpbXBsZSBkZXRlcm1pbsOtc3RpY28gJHkgPSBcYmV0YV8wICsgXGJldGFfMSB4JCwgZWwgcHJvYmFibMOtc3RpY28gc3Vwb25lIHF1ZSBlbCB2YWxvciBlc3BlcmFkbyBkZSAkWSQgZXMgdW5hIGZ1bmNpw7NuIGxpbmVhbCBkZSAkeCQsIHBlcm8gcXVlIGNvbiAkeCQgZmlqYSwgbGEgdmFyaWFibGUgJFkkIGRpZmllcmUgZGUgc3UgdmFsb3IgZXNwZXJhZG8gZW4gdW5hIGNhbnRpZGFkIGFsZWF0b3JpYSAkXHZhcmVwc2lsb24kLiBBZGVtw6FzLCBsYSBjYW50aWRhZCAkXHZhcmVwc2lsb24kIGVuIGxhIGVjdWFjacOzbiBkZSBtb2RlbG8gJCgxKSQgc2Ugc3Vwb25lIG5vcm1hbG1lbnRlIGRpc3RyaWJ1aWRhIGNvbiAkRShcdmFyZXBzaWxvbik9MCQgeSAkVihcdmFyZXBzaWxvbik9XHNpZ21hXjIkLiBMYSB2YXJpYWJsZSBhbGVhdG9yaWEgJFx2YXJlcHNpbG9uJCB0YW1iacOpbiBzZSBjb25vY2UgY29tbyB0w6lybWlubyBkZSBlcnJvciBhbGVhdG9yaW8gbyBkZXN2aWFjacOzbiBhbGVhdG9yaWEgZW4gZWwgbW9kZWxvLg0KDQpDb21wbGVtZW50YXJpYW1lbnRlLCBjYXNpIG51bmNhIHNlcsOhbiBjb25vY2lkb3MgbG9zIHZhbG9yZXMgJFxiZXRhXzAkLCAkXGJldGFfMSQgeSAkXHNpZ21hXjIkLCBhIGNhbWJpbyBlc3RhcsOhIGRpc3BvbmlibGUgdW5hIG11ZXN0cmEgZGUgZGF0b3MgY29tcHVlc3RhIGRlIHBhcmVzIG9yZGVuYWRvcyAkKHhfMSx5XzEpLi4uICh4X24seV9uKSQgY29uIGxhIHF1ZSBsb3MgcGFyw6FtZXRyb3MgZGVsIG1vZGVsbyB5IGxhIGzDrW5lYSBkZSByZWdyZXNpw7NuIHZlcmRhZGVyYSBwdWVkZW4gc2VyIGVzdGltYWRvcywgYmFqbyBlbCBzdXB1ZXN0byBkZSBpbmRlcGVuZGVuY2lhIGRlIGxhcyBvYnNlcnZhY2lvbmVzLiBBc8OtLCAkeV9pJCBlcyBlbCB2YWxvciBvYnNlcnZhZG8gZGUgdW5hIHZhcmlhYmxlIGFsZWF0b3JpYSAkWV9pJCwgZG9uZGUgJFlfaT1cYmV0YV8wK1xiZXRhXzF4X2krXHZhcmVwc2lsb25faSQgeSBsYXMgJG4kIGRlc3ZpYWNpb25lcyAkXHZhcmVwc2lsb25fMSQsICRcdmFyZXBzaWxvbl8yJCwgJC4uLiQsICRcdmFyZXBzaWxvbl9uJCBzb24gdmFyaWFibGVzIGluZGVwZW5kaWVudGVzLg0KDQpEZSBhY3VlcmRvIGNvbiBlbCBtb2RlbG8sIGxvcyBwdW50b3Mgb2JzZXJ2YWRvcyBlc3RhcsOhbiBkaXN0cmlidWlkb3MgYWxlYXRvcmlhbWVudGUgYWxyZWRlZG9yIGRlIGxhIGzDrW5lYSBkZSByZWdyZXNpw7NuIHZlcmRhZGVyYS4gRW4gZXN0ZSBzZW50aWRvLCBsYSBlc3RpbWFjacOzbiBkZSAkeT1cYmV0YV8wK1xiZXRhXzF4JCBkZWJlcsOhIHNlciB1bmEgbMOtbmVhIHF1ZSBzZSBhanVzdGUgbG8gbWVqb3IgcG9zaWJsZSBhIGxvcyBwdW50b3MgbXVlc3RyYS4gVGFsIGzDrW5lYSBkZWJlcsOhIHBvc2VlciBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgcXVlIGxhcyBkaXN0YW5jaWFzIHZlcnRpY2FsZXMgKGRlc3ZpYWNpb25lcykgZGUgbG9zIHB1bnRvcyBvYnNlcnZhZG9zIGEgbGEgbMOtbmVhIG1pc21hIHNvbiAqX3BlcXVlw7Fhc18qLiBMYSBtZWRpZGEgZGUgbGEgYm9uZGFkIGRlIGFqdXN0ZSBzZXLDoSBsYSBzdW1hIGRlIGxvcyBjdWFkcmFkb3MgZGUgZXN0YXMgZGVzdmlhY2lvbmVzLiBFbiBjb25zZWN1ZW5jaWEsIGxhIGzDrW5lYSBxdWUgbWVqb3Igc2UgYWp1c3RhIHNlcsOhIGxhIHF1ZSB0ZW5nYSBsYSBzdW1hIG3DoXMgcGVxdWXDsWEgcG9zaWJsZSBkZSBkZXN2aWFjaW9uZXMgYWwgY3VhZHJhZG8uIEVsIHJlc3VsdGFkbyBxdWUgaW1wbGljYSBsYXMgaWRlYXMgZXhwdWVzdGFzIHNlIGNvbm9jZSBjb21vOiBwcmluY2lwaW8gZGUgbG9zIG3DrW5pbW9zIGN1YWRyYWRvcyB5IHNlIHJlbW9udGEgYSBsb3MgbWF0ZW3DoXRpY29zIENhcmwgRnJpZWRyaWNoIEdhdXNzIHkgQWRyaWVuLU1hcmllIExlZ2VuZHJlLCBlbnRyZSBlbCDDumx0aW1vIGx1c3RybyBkZWwgc2lnbG8gWFZJSUkgeSBlbCBwcmltZXJvIGRlbCBzaWdsbyBYSVguDQoNCkVsIHByaW5jaXBpbyBkZSBsb3MgbcOtbmltb3MgY3VhZHJhZG9zIGVzdGFibGVjZSBxdWUgbGEgZGVzdmlhY2nDs24gdmVydGljYWwgZGVsIHB1bnRvICQoeF9pLHlfaSkkIGNvbiByZXNwZWN0byBhIGxhIGzDrW5lYSAkeT1iXzArYl8xeCQgZXMgJHlfaS0oYl8wK2JfMXgpJCB5IGxhIHN1bWEgZGUgbGFzIGRlc3ZpYWNpb25lcyB2ZXJ0aWNhbGVzIGFsIGN1YWRyYWRvIGRlIGxvcyBwdW50b3MgJCh4X2kseV9pKSQgYSBsYSBsw61uZWEgZXMgJGYoYl8wLGJfMSk9XHN1bV97aT0xfV5uICh5X2ktKGJfMCtiXzF4X2kpKV4yJC4gQXPDrSwgbGFzIGVzdGltYWNpb25lcyBwdW50dWFsZXMgZGUgJFxiZXRhXzAkIHkgJFxiZXRhXzEkLCByZXByZXNlbnRhZGFzIGNvbW8gJFxoYXR7XGJldGF9XzAkIHkgJFxoYXR7XGJldGF9XzEkIHkgbGxhbWFkYXMgZXN0aW1hY2lvbmVzIGRlIG3DrW5pbW9zIGN1YWRyYWRvcywgc29uIGxvcyB2YWxvcmVzIHF1ZSBtaW5pbWl6YW4gYSAkZihiXzAsYl8xKSQ7IGVzIGRlY2lyLCAkZihcaGF0e1xiZXRhfV8wLFxoYXR7XGJldGF9XzEpXGxlcSBmKGJfMCxiXzEpJCBwYXJhIGN1YWxlc3F1aWVyYSAkXGJldGFfMCQgeSAkXGJldGFfMSQuIFBvciBsbyB0YW50bywgbGEgbMOtbmVhIGRlIHJlZ3Jlc2nDs24gZXN0aW1hZGEgbyBsw61uZWEgZGUgbcOtbmltb3MgY3VhZHJhZG9zIGVzICR5PVxoYXR7XGJldGF9XzArXGhhdHtcYmV0YX1fMXgkLg0KDQpMdWVnbyBkZSBjYWxjdWxhciB5IHJlc29sdmVyIGxhcyBlY3VhY2lvbmVzIGVuIGRlcml2YWRhcyBwYXJjaWFsZXMgZGUgJGYoYl8wLGJfMSkkIHJlc3BlY3RvIGEgJGJfMCQgeSAkYl8xJCBpZ3VhbGFkYXMgYSBjZXJvLCBzZSBvYnRpZW5lIHVuIHNpc3RlbWFzIGRlIGVjdWFjaW9uZXMgbGxhbWFkYXMgbm9ybWFsZXMgcXVlIHNvbiBsaW5lYWxlcyBlbiAkYl8wJCB5ICRiXzEkIHkgcGFyYSBsYXMgY3VhbGVzLCBzaWVtcHJlIHF1ZSBwb3IgbG8gbWVub3MgZG9zIGRlIGxhcyAkeF9pJCBzZWFuIGRpZmVyZW50ZXMsIGxhcyBlc3RpbWFjaW9uZXMgZGUgbG9zIG3DrW5pbW9zIGN1YWRyYWRvcyBzb24gbGEgw7puaWNhIHNvbHVjacOzbiBkZWwgc2lzdGVtYS4gRW4gY29uc2VjdWVuY2lhLCBsYSBlc3RpbWFjacOzbiBkZSBsb3MgbcOtbmltb3MgY3VhZHJhZG9zIGRlICRcYmV0YV8xJCBkZSBsYSBsw61uZWEgZGUgcmVncmVzacOzbiB2ZXJkYWRlcmEgZXM6ICQkXGhhdHtcYmV0YX1fMT1cZGZyYWN7XHN1bV97aT0xfV5uKHhfaS1cYmFye3h9KSh5X2ktXGJhcnt5fSl9e1xzdW1fe2k9MX1ebih4X2ktXGJhcnt4fSleMn09XGRmcmFje1Nfe3h5fX17U197eHh9fVxoc3BhY2V7MTBtbX0oMikkJCB5IGxhIGVzdGltYWNpw7NuIGRlIGxvcyBtw61uaW1vcyBjdWFkcmFkb3MgZGUgJFxiZXRhXzAkIGRlIGxhIGzDrW5lYSBkZSByZWdyZXNpw7NuIHZlcmRhZGVyYSBlczogJCRcaGF0e1xiZXRhfV8wPVxkZnJhY3tcc3VtX3tpPTF9Xm55X2ktXGhhdHtcYmV0YX1fMVxzdW1fe2k9MX1ebnhfaX17bn09XGJhcnt5fS1caGF0e1xiZXRhfV8xXGJhcnt4fVxoc3BhY2V7MTBtbX0oMykkJCBQYXJhIGhhY2VyIGxvcyBjw6FsY3Vsb3MgcXVlIGxhcyBlY3VhY2lvbmVzIGFudGVyaW9yZXMgZGVtYW5kYW4gZXMgbmVjZXNhcmlvIHJlZHVjaXIgYWwgbcOtbmltbyBsb3MgZWZlY3RvcyBkZSByZWRvbmRlby4gVGFtYmnDqW4sIGFudGVzIGRlIGNhbGN1bGFyICRcaGF0e1xiZXRhfV8xJCB5ICRcaGF0e1xiZXRhfV8wJCBzZSBkZWJlIGV4YW1pciBncsOhZmljYW1lbnRlIGVsIGNvbmp1bnRvIGRlIGRhdG9zIHBvciB1c2FyIHBhcmEgcGVyY2liaXIgbGEgZmFjdGliaWxpZGFkIGRlIHVzbyBkZSB1biBtb2RlbG8gcHJvYmFiaWzDrXN0aWNvIGxpbmVhbCwgZXMgZGVjaXIsIHNpIGdyw6FmaWNhbWVudGUgbG9zIHB1bnRvcyBlc3TDoW4gbGVqb3MgZGUgdGVuZGVyIGEgYWdsb21lcmFyc2UgZW4gdG9ybm8gYSB1bmEgbMOtbmVhIHJlY3RhIGNvbiBhcHJveGltYWRhbWVudGUgZWwgbWlzbW8gZ3JhZG8gZGUgZGlzcGVyc2nDs24gZGUgdG9kYXMgbGFzICR4X2kkLCBlbnRvbmNlcyBkZWJlbiBzZXIgaW5kYWdhZG9zIG90cm9zIG1vZGVsb3MuDQoNCkVzIGluZGlzcGVuc2FibGUgbWVuY2lvbmFyIHF1ZSBsYSBsw61uZWEgZGUgbcOtbmltb3MgY3VhZHJhZG9zIGRlYmUgdXNhcnNlIHJlc3RyaW5naWRhbWVudGUgcGFyYSBwcmVkZWNpciB2YWxvcmVzIGRlICR4JCAqKl9sZWphbm9zXyoqIGRlbCByYW5nbyBkZSBsb3MgZGF0b3MsIHBvcnF1ZSBsYSByZWxhY2nDs24gYWp1c3RhZGEgcHVlZGUgY2FyZWNlciBkZSB2YWxpZGV6IHBhcmEgZWxsb3MuDQoNCkFob3JhLCBlbCBwYXLDoW1ldHJvICRcc2lnbWFeMiQgcXVlIGRldGVybWluYSBsYSBjYW50aWRhZCBkZSB2YXJpYWJpbGlkYWQgZXMgaW5oZXJlbnRlIGVuIGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGRlc2NyaXRvOiBzdSB2YWxvciBjb25kdWNpcsOhIGEgZXN0YWJsZWNlciBxdWUgbG9zIHZhbG9yZXMgb2JzZXJ2YWRvcyBlc3RhcsOhbiBkaXNwZXJzb3MgZW4gbWF5b3IgbyBtZW5vciBtZWRpZGEgZW4gdG9ybm8gYSBsYSBsw61uZWEgZGUgcmVncmVzacOzbiB2ZXJkYWRlcmEuIEFzw60sIGxvcyByZXNpZHVvcyAkeV9pIC0gXGhhdHt5X2l9JCBzb24gbGFzIGRlc3ZpYWNpb25lcyB2ZXJ0aWNhbGVzIGNvbiByZXNwZWN0byBhIGxhIGzDrW5lYSBlc3RpbWFkYS4gU2kgdG9kb3MgbG9zIHJlc2lkdW9zIHNvbiBwZXF1ZcOxb3MgY29tcGFyYWRvcyBjb24gY2VybywgZW50b25jZXMgbGEgdmFyaWFiaWxpZGFkIGRlIGxvcyB2YWxvcmVzICR5JCBvYnNlcnZhZG9zIHNlIGRlYmVyw61hIGVuIHVuYSBlbGV2YWRhIG1lZGlkYSBhIGxhIHJlbGFjacOzbiBsaW5lYWwgZW50cmUgJHgkIHkgJHkkLCBtaWVudHJhcyBxdWUgc2kgbG9zIHJlc2lkdW9zIHNvbiBncmFuZGVzIGNvbXBhcmFkb3MgY29uIGNlcm8sIGVudG9uY2VzIHF1ZWRhIHN1Z2VyaWRhIHVuYSB2YXJpYWJpbGlkYWQgaW5oZXJlbnRlIGVuICR5JCBjb24gcmVzcGVjdG8gYSBsYSBjYW50aWRhZCBkZWJpZGEgYSBsYSByZWxhY2nDs24gbGluZWFsLiBBc8OtLCBsYSBlc3RpbWFjacOzbiBkZSAkXHNpZ21hXjIkIGVuIHVuIGFuw6FsaXNpcyBkZSByZWdyZXNpw7NuIGVzdMOhIGJhc2FkYSBlbiBlbCBjw6FsY3VsbyBkZSBsYSBzdW1hIGRlIGN1YWRyYWRvcyByZXNpZHVhbGVzIChvIHN1bWEgZGUgY3VhZHJhZG9zIGRlbCBlcnJvciBTQ0UpIHF1ZSBzZSByZWR1Y2UgYTogJCRTQ0U9XHN1bV97aT0xfV5ueV9pXjItXGhhdHtcYmV0YX1fMFxzdW1fe2k9MX1ebnlfaS1caGF0e1xiZXRhfV8xXHN1bV97aT0xfV5ueF9peV9pXGhzcGFjZXsxMG1tfSg0KSQkICQkXGhhdFxzaWdtYV4yPXNeMj1cZGZyYWN7U0NFfXtuLTJ9XGhzcGFjZXsxMG1tfSg1KSQkIFNpIHNlIGhhIGVudGVuZGlkbyBxdWUgbGEgY2FudGlkYWQgU0NFIGVzdGFibGVjZSB1bmEgbWVkaWRhIGRlIGN1w6FudGEgdmFyaWFjacOzbiBkZSAkeSQgZXMgaW5leHBsaWNhZGEgcG9yIGVsIG1vZGVsbzsgZXMgZGVjaXIsIHNpbiBhdHJpYnVjacOzbiBhIGxhIHJlbGFjacOzbiBsaW5lYWwsIHNlIGVudGVuZGVyw6EgdGFtYmnDqW4gcXVlIGV4aXN0ZSBvdHJhIGNhbnRpZGFkIGxsYW1hZGEgbGEgc3VtYSB0b3RhbCBkZSBsb3MgY3VhZHJhZG9zIFNUQywgcXVlIHBlcm1pdGUgb2J0ZW5lciB1bmEgbWVkaWRhIGRlIGxhIGNhbnRpZGFkIGRlIHZhcmlhY2nDs24gdG90YWwgZW4gbG9zIHZhbG9yZXMgJHkkIG9ic2VydmFkb3M6ICQkU1RDPVxzdW1fe2k9MX1ebnlfaV4yLVxmcmFjeyhcc3VtX3tpPTF9Xm55X2kpXjJ9e259XGhzcGFjZXsxMG1tfSg2KSQkIFNpIHNlIGZvcm11bGEgbGEgcmF6w7NuICRTQ0UvU1RDJCBzZSBjYWxjdWxhIGxhIHByb3BvcmNpw7NuIGRlIHZhcmlhY2nDs24gdG90YWwgaW5leHBsaWNhZGEgcG9yIGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGU7IHBvciBsbyB0YW50bywgc2UgbGxlZ2EgYSBsYSBkZWZpbmljacOzbiBkZWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gJHJeMiQ6ICQkcl4yPTEtXGZyYWN7U0NFfXtTVEN9XGhzcGFjZXsxMG1tfSg3KSQkIHF1ZSBzZSBpbnRlcnByZXRhIGNvbW8gbGEgcHJvcG9yY2nDs24gZGUgdmFyaWFjacOzbiAkeSQgb2JzZXJ2YWRhIHF1ZSBwdWVkZSBzZXIgZXhwbGljYWRhIHBvciBlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlOyBlcyBkZWNpciwgYXF1ZWxsYSBhdHJpYnVpZGEgYSB1bmEgcmVsYWNpw7NuIGxpbmVhbCBhcHJveGltYWRhIGVudHJlICR4JCB5ICR5JDogbWllbnRyYXMgbcOhcyBjZXJjYW5vIGEgMSBzZWEgJHJeMiQsIG3DoXMgZXhpdG9zbyBlcyBlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIGFsIGV4cGxpY2FyIGxhIHZhcmlhY2nDs24gZGUgJHkkLiBVbmEgZm9ybWEgYWx0ZXJuYXRpdmEgZGUgY2FsY3VsYXIgZWwgY29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gc2UgYmFzYSBlbiBsYSBzdW1hIGRlIGN1YWRyYWRvcyBkZWJpZGFkIGEgbGEgcmVncmVzacOzbiBTQ1IgKG8gYWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gU0NNKSwgcXVlIGVzIGxhIGNhbnRpZGFkIGRlIHZhcmlhY2nDs24gdG90YWwgcXVlIGVzIGV4cGxpY2FkYSBwb3IgZWwgbW9kZWxvLiBDb24gYmFzZSBlbiBlbGxhIGVsIGNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuIHNlIGV4cHJlc2EgY29tbzogJCRyXjI9MS1cZnJhY3tTQ0V9e1NUQ309XGZyYWN7U1RDLVNDRX17U1RDfT1cZnJhY3tTQ1J9e1NUQ31caHNwYWNlezEwbW19KDgpJCRDb21vIHNlIHNhYmUsIGN1YWxxdWllciBjYW50aWRhZCBjYWxjdWxhZGEgYSBwYXJ0aXIgZGUgZGF0b3MgbXVlc3RyYWxlcyB2YXLDrWEgZGUgdW5hIGNhbnRpZGFkIGEgb3RyYSwgZW4gZXN0ZSBzZW50aWRvLCBsb3MgcHJvY2VkaW1pZW50b3MgaW5mZXJlbmNpYWxlcyBlc3RhbmRhcml6YW4gdW4gZXN0aW1hZG9yIHJlc3RhbmRvIHN1IHZhbG9yIG1lZGlvIHkgbHVlZ28gZGl2aWRpw6luZG9sbyBlbnRyZSBzdSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZXN0aW1hZGEuIEVuIHBhcnRpY3VsYXIsIHBhcmEgdW4gbW9kZWxvIHN1cHVlc3RvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIHNpbXBsZSBzZSBpbXBsaWNhIHF1ZSBsYXMgdmFyaWFibGVzIGVzdMOhbmRhcmVzOiAkdF97KG4tMil9PVxkZnJhY3tcaGF0e1xiZXRhfV8wLVxiZXRhXzB9e1xoYXR7XHNpZ21hfSBcc3FydHsxL24rXGJhcnt4fV4yL1Nfe3h4fX19JCB5ICR0X3sobi0yKX09XGRmcmFje1xoYXR7XGJldGF9XzEtXGJldGFfMX17IFxoYXR7XHNpZ21hfSBcc3FydHsxL1Nfe3h4fX19JCB0aWVuZW4gZGlzdHJpYnVjaW9uZXMgJHQkIGNvbiAkbi0yJCBncmFkb3MgZGUgbGliZXJ0YWQuIERlIGVzdG8gc2UgZGVkdWNlIHF1ZSBsb3MgaW50ZXJ2YWxvcyBkZSBjb25maWFuemEgZGUgJDEwMCooMS1cYWxwaGEpXCUkIHBhcmEgbGEgcGVuZGllbnRlICRcYmV0YV8xJCB5IGVsIGludGVyY2VwdG8gJFxiZXRhXzAkIGRlIGxhIGzDrW5lYSBkZSByZWdyYXNpw7NuIHZlcmRhZGVyYSBzb246ICQkXGhhdHtcYmV0YX1fMCBccG0gdF97XGFscGhhLzIsIG4tMn0gXGNkb3QgIFxoYXR7XHNpZ21hfSBcc3FydHsxL24rXGJhcnt4fV4yL1Nfe3h4fX1caHNwYWNlezEwbW19KDkpJCQgJCRcaGF0e1xiZXRhfV8xIFxwbSB0X3tcYWxwaGEvMiwgbi0yfSBcY2RvdCAgXGhhdHtcc2lnbWF9IFxzcXJ0ezEvU197eHh9fSBcaHNwYWNlezEwbW19ICAoMTApJCRlc3RvcyBpbnRlcnZhbG9zIGVzdMOhbiBjZW50YXJhZG9zIGVuIGxhIGVuIGxhIGVzdGltYWNpw7NuIHB1bnR1YWwgZGUgY2FkYSBwYXLDoW1ldHJvIHkgbGEgY2FudGlkYWQgYWJhcmNhZGEgYSBjYWRhIGxhZG8gZGUgbGEgZXN0aW1hY2nDs24gZGVwZW5kZSBkZWwgbml2ZWwgZGUgY29uZmlhbnphIGRlc2VhZG8geSBkZSBsYSBjYW50aWRhZCBkZSB2YXJpYWJpbGlkYWQgZGVsIGVzdGltYWRvci4NCg0KRGFkbyBsbyBhbnRlcmlvciwgcGFyYSBsb3MgcHJvY2VkaW1pZW50b3MgZGUgcHJ1ZWJhIGRlIGhpcMOzdGVzaXMsIHkgY29tbyBzZSBwcm9jZWRlIGhhYml0dWFsbWVudGUsIGxhcyBoaXDDs3Rlc2lzIG51bGFzIHJlc3BlY3RvIGEgbG9zIGJldGEgZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUgc2Vyw6FuIGVudW5jaWFkb3MgZGUgaWd1YWxkYWQuIExvcyB2YWxvcmVzIG51bG9zIHBhcmEgJFxiZXRhXzAkIHkgJFxiZXRhXzEkIHNlIHJlcHJlc2VudGFuIHJlc3BlY3RpdmFtZW50ZSBjb21vICRcYmV0YV97MDB9JCAoImJldGEgY2VybyBjZXJvIikgeSAkXGJldGFfezEwfSQgKCJiZXRhIHVubyBjZXJvIikuIEFkZW3DoXMsIGNvbW8gbG9zIGVzdGFkw61zdGljb3MgZGUgcHJ1ZWJhIHRpZW5lbiBkaXN0cmlidWNpb25lcyAkdCQgY29uICRuLTIkIGdyYWRvcyBkZSBsaWJlcnRhZCBjdWFuZG8gJEhfMCQgZXMgdmVyZGFkZXJhLCBsYSBwcm9iYWJpbGlkYWQgZGUgZXJyb3IgVGlwbyBJIHBlcm1hbmVjZSBhbCBuaXZlbCBkZXNlYWRvICRcYWxwaGEkIHVzYW5kbyB1biB2YWxvciBjcsOtdGljbyAkdCQgYWRlY3VhZG8uIEFzw60sIGxhcyBoaXDDs3Rlc2lzIGNvbcO6bm1lbnRlIHVzYWRhcyBwYXJhICRcYmV0YV8wJHNvbjogJCRIXzA6IFxiZXRhXzAgPSBcYmV0YV97MDB9XGhzcGFjZXsxMG1tfSgxMSkkJCAkJEhfMTogXGJldGFfMCBcbmVxIFxiZXRhX3swMH1caHNwYWNlezEwbW19KDEyKSQkY3V5byBlc3RhZMOtc3RpY28gZGUgcHJ1ZWJhIGVzOiAkJHRfeyhuLTIpfT1cZGZyYWN7XGhhdHtcYmV0YX1fMC1cYmV0YV97MDB9fXtcaGF0e1xzaWdtYX0gXHNxcnR7MS9uK1xiYXJ7eH1eMi9TX3t4eH19fVxoc3BhY2V7MTBtbX0oMTMpJCR5IHBhcmEgJFxiZXRhXzEkIHNvbjoNCiQkSF8wOiBcYmV0YV8xID0gXGJldGFfezEwfVxoc3BhY2V7MTBtbX0oMTQpJCQgDQokJEhfMTogXGJldGFfMSBcbmVxIFxiZXRhX3sxMH1caHNwYWNlezEwbW19KDE1KSQkY3V5byBlc3RhZMOtc3RpY28gZGUgcHJ1ZWJhIGVzOiQkdF97KG4tMil9PVxkZnJhY3tcaGF0e1xiZXRhfV8xLVxiZXRhX3sxMH19e1xoYXR7XHNpZ21hfSBcc3FydHsxL1Nfe3h4fX19XGhzcGFjZXsxMG1tfSgxNikkJGVsIHBhciBkZSBoaXDDs3Rlc2lzIGRlZmluaWRhcyBwb3IgJDE0JCwgJDE1JCB5ICQxNiQgc2UgY29ub2NlIGNvbW8gbGEgcHJ1ZWJhIGRlIHV0aWxpZGFkIGRlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlLCBkb25kZTogbGEgcmVnacOzbiBkZSByZWNoYXpvIGRlICRIXzAkIHBhcmEgdW5hIHBydWViYSBhIG5pdmVsICRcYWxwaGEkIGEgZmF2b3IgZGUgJEhfMTogXGJldGFfMT5cYmV0YV97MTB9JCBlcyAkdFxnZXEgdF97XGFscGhhLG4tMn0kOyBsYSByZWdpw7NuIGRlIHJlY2hhem8gZGUgJEhfMCQgcGFyYSB1bmEgcHJ1ZWJhIGEgbml2ZWwgJFxhbHBoYSQgYSBmYXZvciBkZSAkSF8xOiBcYmV0YV8xPFxiZXRhX3sxMH0kIGVzICR0XGxlcSAtdF97XGFscGhhLG4tMn0kOyB5IGxhIHJlZ2nDs24gZGUgcmVjaGF6byBkZSAkSF8wJCBwYXJhIHVuYSBwcnVlYmEgYSBuaXZlbCAkXGFscGhhJCBhIGZhdm9yIGRlICRIXzE6IFxiZXRhXzFcbmVxXGJldGFfezEwfSQgZXMgJHRcbGVxIC10X3tcYWxwaGEvMixuLTJ9JCBvICAkdFxnZXEgdF97XGFscGhhLzIsbi0yfSQuIEFkZW3DoXMsIHNlIHNhYmUgcXVlIGxhIHBydWViYSBkZSB1dGlsaWRhZCBkZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gc2ltcGxlIHB1ZWRlIHNlciBwcm9iYWRhIGNvbiB1bmEgdGFibGEgQU5PVkE6IHJlY2hhemFuZG8gJEhfMCQgc2kgJGZcZ2VxIEZfe1xhbHBoYSwxLG4tMn0kLiBMYSBwcnVlYmEgJEYkIGRhIGV4YWN0YW1lbnRlIGVsIG1pc21vIHJlc3VsdGFkbyBxdWUgbGEgcHJ1ZWJhICR0JCBkZSB1dGlsaWRhZCBkZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIHNpbXBsZS4NCg0KUG9yIMO6bHRpbW8sIHNlIGVudGllbmRlIHF1ZSBlbiB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIHVuIHZhbG9yIGZ1dHVybyBkZSAkWSQgbm8gZXMgcGFyw6FtZXRybyBzaW5vIHVuYSB2YXJpYWJsZSBhbGVhdG9yaWEsIHBvciBsbyBxdWUgc2UgZGViZSBoYWNlciByZWZlcmVuY2lhIGEgdW4gaW50ZXJ2YWxvIGRlIHZhbG9yZXMgZmFjdGlibGVzIHBhcmEgdW4gdmFsb3IgZnV0dXJvIGRlICRZJCwgYWwgY3VhbCBzZSBsZSBsbGFtYSBpbnRlcnZhbG8gZGUgcHJlZGljY2nDs24uIEN1YW5kbyBzZSBwcmVkaWNlIGNvbiBiYXNlIGVuIGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUsIGVsIGVycm9yIGRlIHByZWRpY2Npw7NuIGVzICRZLSggXGhhdHtcYmV0YX1fMCsgXGhhdHtcYmV0YX1fMSB4XiopJCBxdWUgY29ycmVzcG9uZGUgY29uIHVuYSBkaWZlcmVuY2lhIGVudHJlIGRvcyB2YXJpYWJsZXMgYWxlYXRvcmlhcywgcG9yIGxvIHF1ZSwgZW4gY29tcGFyYWNpw7NuIGNvbiB1bmEgZXN0aW1hY2nDs24sIGhhYnLDoSBtw6FzIGluY2VydGlkdW1icmUgZW4gZXNlOyBwb3IgbG8gdGFudG8sIHVuIGludGVydmFsbyBkZSBwcmVkaWNjacOzbiBzZXLDoSBtw6FzIGFuY2hvIHF1ZSB1biBpbnRlcnZhbG8gZGUgY29uZmlhbnphLiBBZGVtw6FzLCBhIHBhcnRpciBkZSBsYSB2YXJpYW56YSBkZWwgZXJyb3IgZGRlIHByZWRpY2Npw7NuIHNlIHB1ZWRlIGVzdGFibGVjZXIgcXVlIGxhIHZhcmlhYmxlIGVzdGFuZGFyaXphZGE6JCRUPVxkZnJhY3tZLShcaGF0e1xiZXRhfV8wKyBcaGF0e1xiZXRhfV8xIHheKil9e1MgXGRpc3BsYXlzdHlsZVxzcXJ0ezErXGRmcmFjezF9e259ICArIFxkZnJhY3soeF4qLVxiYXJ7eH0pXjJ9e1Nfe3h4fX19fVxoc3BhY2V7MTBtbX0oMTcpJCR0aWVuZSB1bmEgZGlzdHJpYnVjacOzbiAkdCQgY29uICRuLTIkIGdyYWRvcyBkZSBsaWJlcnRhZCwgYSBwYXJ0aXIgZGUgbGEgY3VhbCBzZSBvYnRpbmUgdW4gaW50ZXJ2YWxvIGRlIHByZWRpY2Npw7NuIGRlICQxMDAqKDEtXGFscGhhKVwlJCBwYXJhIHVuYSBvYnNlcnZhY2nDs24gJFkkIGZ1dHVyYSBxdWUgc2UgaGFyw6EgY3VhbmRvICR4PXheKiQgaWd1YWwgYTokJFxoYXR7XGJldGF9XzArXGhhdHtcYmV0YX1fMSB4XipccG0gdF97bi0yLFxhbHBoYS8yfVxjZG90IHMgXGRpc3BsYXlzdHlsZVxzcXJ0ezErXGRmcmFjezF9e259K1xkZnJhY3soeF4qLVxiYXJ7eH0pXjJ9e1Nfe3h4fX19XGhzcGFjZXsxMG1tfSgxOCkkJCBsYSBpbnRlcnByZXRhY2nDs24gZGVsIG5pdmVsIGRlIHByZWRpY2Npw7NuIGRlICQxMDAqKDEtXGFscGhhKVwlJCBlc3RhYmxlY2UgcXVlIGFsIHVzYXIgJCgxOCkkIHJlcGV0aWRhbWVudGUsIGxvcyBpbnRlcnZhbG9zIHJlc3VsdGFudGVzIGNvbnRlbmRyw6FuIGxvcyB2YWxvcmVzICR5JCBvYnNlcnZhZG9zIGVsICQxMDAqKDEtXGFscGhhKVwlJCBkZWwgdGllbXBvLiBBZGVtw6FzLCBlbCBuw7ptZXJvICQxJCBlbiBsYSByYcOteiBjdWFkcmFkYSBoYWNlIHF1ZSBlbCBpbnRlcnZhbG8gZGUgcHJlZGljY2nDs24gc2VhIG3DoXMgYW5jaG8gcXVlIGludGVydmFsb3MgZGUgY29uZmlhbnphIGNvbW8gJCg5KSQgeSAkKDEwKSQuIEFzaW1pc21vLCBhIG1lZGlkYSBxdWUgJG5cdG9caW5mdHkkIGVsIGFuY2hvIGRlbCBpbnRlcnZhbG8gbm8tdGllbmRlIGEgY2VybywgcG9ycXVlIGxhIGluY2VydGlkdW1icmUgZW4gbGEgcHJlZGljY2nDs24gc2Vyw6EgcGVybWFuZW50ZSwgaW5jbHVzbyBhbCB0ZW5lciBjb25vY2ltaWVudG8gcGVyZmVjdG8gc29icmUgJFxiZXRhXzAkIHkgJFxiZXRhXzEkLg0KDQojIyMjIDMuMS4xLiBQbGFudGVhbWllbnRvIGRlbCBQcm9ibGVtYQ0KQ29uIGJhc2UgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gKioyKiogc2UgZm9ybXVsYXLDoSB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIHBhcmEgZXN0dWRpYXIgbGEgcmVsYWNpw7NuIGxpbmVhbCBzdXB1ZXN0YSBlbnRyZSBsYXMgdmFyYWlibGVzIGRlZmluaWRhcyBwb3IgbG9zIGNhbXBvczogKipDaGFuY2Ugb2YgQWRtaXQqKiAodmFyaWFibGUgZGVwZW5kaWVudGUpIHkgKipUT0VGTCBTY29yZSoqICh2YXJpYWJsZSBpbmRlcGVuZGllbnRlKS4NCg0KIyMjIyAzLjEuMi4gRGVzYXJyb2xsbyBkZWwgQW7DoWxpc2lzDQpFbCBlc3R1ZGlvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIHNpbXBsZSBoYSBzaWRvIHByb2Nlc2FkbyBjb24gYHIgUi52ZXJzaW9uLnN0cmluZ2AgbWVkaWFkbyBwb3IgUlN0dWRpbyAyMDIyLjA3LjIgQnVpbGQgNTc2IGVuIHVuYSBwbGF0YWZvcm1hIHg4Nl82NC13NjQtbWluZ3czMi4NCg0KIyMjIyMgMy4xLjIuMS4gUmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgbGFzIHZhcmlhYmxlcyBwb3IgZXN0dWRpYXIuIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvIGRlIGxhcyB2YXJpYWJsZXMgZGUgaW50ZXLDqXM6ICoqQ2hhbmNlIG9mIEFkbWl0KiogKHZhcmlhYmxlIGRlcGVuZGllbnRlKSB5ICoqVE9FRkwgU2NvcmUqKiAodmFyaWFibGUgaW5kZXBlbmRpZW50ZSksIGp1bnRvIGNvbiBzdXMgcmVzcGVjdGl2b3MgZGlhZ3JhbWFzIGRlIGNhamEuIEFkZW3DoXMsIGluY2x1eWUgZWwgZGlhZ3JhbWEgZGUgZGlzcGVyc2nDs24gZGUgc3VzIHZhbG9yZXMgY29uanVudG9zLg0KDQpDb24gYmFzZSBlbiBsYSBwZXN0YcOxYSAqKlJlc3VtZW4gZGUgQ2hhbmNlIG9mIEFkbWl0Kiogc2UgcHVlZGUgY29tZW50YXIgcXVlIGxhIHZhcmlhYmxlICoqQ2hhbmNlIG9mIEFkbWl0KiogcHJlc2VudGEgYXNpbWV0csOtYSBkZSBzZXNnbyBuZWdhdGl2byBjb24gcmFuZ28gaW50ZXJjdWFydMOtbGljbyBlc3RyZWNobyBkZSBkaXNwZXJzacOzbiBpbXBlcmNlcHRpYmxlLiBBZGVtw6FzLCB1biBkYXRvIHNlIHZpc3VhbGl6YSBjb21vIG91dGxpZXIuIEFzw60sIHB1ZWRlIGRlY2lyc2UgcXVlIGxhIHZhcmlhYmxlIHJlZ2lzdHJhIHZhbG9yZXMgYWx0b3MgZW4gcmVsYWNpw7NuIGNvbiBzdSBpbnRlcnZhbG8gZGUgbWVkaWNpw7NuLiBFbiBjb21wYXJhY2nDs24sIHNlZ8O6biBsYSBwZXN0YcOxYSAqKlJlc3VtZW4gZGUgVE9FRkwgU2NvcmUqKiwgbGEgdmFyaWFibGUgKipUT0VGTCBTY29yZSoqIHNlIHZpc3VhbGl6YSBtw6FzIHNpbcOpdHJpY2EgcXVlIGxhIGFudGVyaW9yLCBzaW4gcHJlc2VudGFyIGRhdG9zIGF0w61waWNvcywgcGVybyBjb24gbWVkaWFuYSBxdWUgbXVlc3RyYSB1bmEgbGlnZXJhIGNvbmNlbnRyYWNpw7NuIGRlIG1lZGlkYXMgaGFjaWEgbGEgbWl0YWQgc3VwZXJpb3IgZGUgbG9zIGRhdG9zLg0KDQpDb21wbGVtZW50YXJpYW1lbnRlLCBlbiAqKkRpYWdyYW1hIGRlIERpc3BlcnNpw7NuIFRPRUZMIHZzLiBDb0EqKiBzZSBwdWVkZSBvYnNlcnZhciBxdWUgZXhpc3RlIHVuYSBjb3JyZWxhY2nDs24gcG9zaXRpdmEgZGUgbmF0dXJhbGV6YSBhcHJlY2lhYmxlbWVudGUgbGluZWFsIGVudHJlIGxhcyB2YXJpYWJsZSAqKkNoYW5jZSBvZiBBZG1pdCoqIHkgKipUT0VGTCBTY29yZSoqLiBTaW4gZW1iYXJnbywgc2kgc2Ugb2JzZXJ2YSBlbCBncsOhZmljbyBkZSAqKkRpYWdyYW1hcyBUb3RhbGVzIGRlIERpc3BlcnNpw7NuKiogKHF1ZSBleGNsdXllcm9uIGxhcyB2YXJpYWJsZXMgY3VhbGl0YXRpdmFzOjpub21pbmFsZXMpIGVzIGNvbnN0YXRhYmxlIHF1ZSBleGlzdGUgdW5hIGNvcnJlbGFjacOzbiBtw6FzIGZ1ZXJ0ZSBlbnRyZSBsYSB2YXJpYWJsZSBkZSBpbnRlcsOpcyAqKkNoYW5jZSBvZiBBZG1pdCoqIHkgKipDR1BBKiouDQoNCiMjIyMjIyBSZXN1bWVuIGRlIENoYW5jZSBvZiBBZG1pdA0KYGBge3IgcmVzdW1lbl9DaGFuY2Vfb2ZfQWRtaXQsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0Kc3VtbWFyeShBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQpDQpib3hwbG90KEFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdCwgbWFpbiA9ICJEaWFncmFtYSBkZSBDYWphIGRlIENoYW5jZSBvZiBBZG1pdCIsIGNvbCA9IGMoIm9yYW5nZSIpKQ0KYGBgDQoNCiMjIyMjIyBSZXN1bWVuIGRlIFRPRUZMIFNjb3JlDQpgYGB7ciByZXN1bWVuX1RPRUZMX1Njb3JlLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkoQWRtaXNzaW9uX0RhdGFzZXQkVE9FRkxfU2NvcmUpDQpib3hwbG90KEFkbWlzc2lvbl9EYXRhc2V0JFRPRUZMX1Njb3JlLCBtYWluID0gIkRpYWdyYW1hIGRlIENhamEgZGUgVE9FRkwgU2NvcmUiLCBjb2wgPSBjKCJnb2xkIikpDQpgYGANCg0KIyMjIyMjIERpYWdyYW1hIGRlIERpc3BlcnNpw7NuIFRPRUZMIHZzLiBDb0EgDQpgYGB7ciBkaXNwZXJzaW9uX1RPRUZMX0NoYW5jZSwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpwbG90KEFkbWlzc2lvbl9EYXRhc2V0JFRPRUZMX1Njb3JlLCBBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQsIG1haW4gPSAiRGlhZ3JhbWEgZGUgRGlzcGVyc2nDs24gVE9FRkwgU2NvcmUgdnMuIENoYW5jZSBvZiBBZG1pdCIpDQpgYGANCg0KIyMjIyMjIERpYWdyYW1hcyBUb3RhbGVzIGRlIERpc3BlcnNpw7NuDQpgYGB7ciBkaXNwZXJzaW9uZXNfVG90YWxlcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpwYWlycyh+R1JFX1Njb3JlICsgVE9FRkxfU2NvcmUgKyBTT1AgKyBMT1IgKyBDR1BBICsgQ2hhbmNlX29mX0FkbWl0LCBkYXRhID0gQWRtaXNzaW9uX0RhdGFzZXQpDQpgYGANCg0KIyMjIyMgMy4xLjIuMi4gRm9ybXVsYWNpw7NuIGRlbCBtb2RlbG8gZGUgUkxTIGVudHJlIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpby4gey50YWJzZXQgLnRhYnNldC1waWxsc30NCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzIG11ZXN0cmEgbG9zIGNvZWZpY2llbnRlcyBkZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIHNpbXBsZSwgc3UgcmVzdW1lbiBlc3RhZMOtc3RpY28geSBzdSB0YWJsYSBBTk9WQS4gU2UgbWVuY2lvbmEgZGUgbnVldm8gcXVlIGxhcyB2YXJpYWJsZXMgZGUgaW50ZXLDqXMgc29uOiAqKkNoYW5jZSBvZiBBZG1pdCoqICh2YXJpYWJsZSBkZXBlbmRpZW50ZSkgeSAqKlRPRUZMIFNjb3JlKiogKHZhcmlhYmxlIGluZGVwZW5kaWVudGUpLg0KDQpBbCBjb25zaWRlcmFyIGxvcyByZXN1bHRhZG9zIHByZXNlbnRhZG9zIGVuIGxhIHBlc3Rhw7FhICoqQ29lZmljaWVudGVzIGRlbCBNb2RlbG8gUkxTKiogc2UgcHVlZGUgZXN0YWJsZXIgcXVlIGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUgcXVlIHJlbGFjaW9uYSBhIGxhcyB2YXJpYWJsZXMgZGUgaW50ZXLDqXMsIGxhcyBjdWFsZXMgc2UgcmVzdW1pcsOhbiBjb21vICRDT0EkIHkgJFRPRUZMJCwgdGllbmUgbGEgZm9ybXVsYWNpw7NuOiQkXGhhdHtDT0F9PS0xLDI3MzQwMDUrMCwwMTg1OTkzXGNkb3QgVE9FRkxcaHNwYWNlezEwbW19KDE5KSQkIHBhcmEgZXN0ZSBtb2RlbG8gc2Ugb2J2aWEgbGEgaW50ZXJwcmV0YWNpw7NuIGRlbCBpbnRlcmNlcHRvIHBvciBjYXJlY2VyIGRlIHNlbnRpZG8gZGFkbyBxdWUgKipDaGFuY2Ugb2YgQWRtaXQqKiByZXN1bHRhcsOtYSBuZWdhdGl2YSBlbiBjYXNvIGRlIHVuIHZhbG9yIG51bG8gZGUgKipUT0VGTCBTY29yZSoqLCB5IGFtYmFzIHNpdHVhY2lvbmVzIGNhcmVjZW4gZGUgc2VudGlkby4gU2luIGVtYmFyZ28sIGVsIGNvZWZpY2llbnRlIGxpbmVhbCB1bmEgY29ycmVsYWNpw7NuIGRlIHByb3BvcmNpb25hbGlkYWQgZGlyZWN0YSBlbnRyZSBsYXMgdmFyaWFibGVzIGRlIGludGVyw6lzLCBhdW5xdWUgZGUgY3JlY2ltaWVudG8gbW9kZXJhZG8gZW4gKipDaGFuY2Ugb2YgQWRtaXQqKiBwb3IgY2FkYSB1bmlkYWQgbWFyZ2luYWwgZGUgKipUT0VGTCBTY29yZSoqLg0KDQpDb21wbGVtZW50YXJpYW1lbnRlLCBlbiBsYSBwZXN0YcOxYSAqKlJlc3VtZW4gRXN0YWTDrXN0aWNvIGRlbCBNb2RlbG8gUkxTKiogc2UgY29uc3RhdGEgcXVlIHBhcmEgY3VhbHF1aWVyIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgbGFzIGV2aWRlbmNpYXMgZXN0YXLDoW4gYSBmYXZvciBkZSBsYSBjb3JyZWxhY2nDs24gcG9zaXRpdmEgZW50cmUgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcy4gQWRlbcOhcywgZWwgY29lZmljaWVudGUgZGUgZGV0cmVtaW5hY2nDs24gZXN0w6EgYSBmYXZvciBkZSBsYSBjb3JyZWxhY2nDs24gZXN0YWJsZWNpZW5kbyBxdWUgZWwgJDYyLjU3JCAkXCUkIGRlIGxhIHZhcmlhYmlsaWRhZCBkZSAqKkNoYW5jZSBvZiBBZG1pdCoqIGVzIGV4cGxpY2FkYSBwb3IgKipUT0VGTCBTY29yZSoqLCBlc3RvIHRhbWJpw6luIHF1ZWRhIGNvbmZpcm1hZG8gYSB0cmF2w6lzIGRlIGxhIHBlc3Rhw7FhICoqVGFibGEgQU5PVkEgcGFyYSBlbCBNb2RlbG8gUkxTKiouDQoNCiMjIyMjIyBDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTFMNCmBgYHtyIGNvZWZpY2llbnRlc19SZWdyZXNpb25fTGluZWFsX1NpbXBsZSwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQptb2RlbG9fUkxfU2ltcGxlID0gbG0oQWRtaXNzaW9uX0RhdGFzZXQkQ2hhbmNlX29mX0FkbWl0fkFkbWlzc2lvbl9EYXRhc2V0JFRPRUZMX1Njb3JlKQ0KY29lZihtb2RlbG9fUkxfU2ltcGxlKQ0KYGBgDQojIyMjIyMgUmVzdW1lbiBFc3RhZMOtc3RpY28gZGVsIE1vZGVsbyBSTFMNCmBgYHtyIHJlc3VtZW5fUmVncmVzaW9uX0xpbmVhbF9TaW1wbGUsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0Kc3VtbWFyeShtb2RlbG9fUkxfU2ltcGxlKQ0KYGBgDQojIyMjIyMgVGFibGEgQU5PVkEgcGFyYSBlbCBNb2RlbG8gUkxTDQpgYGB7ciBBTk9WQV9SZWdyZXNpb25fTGluZWFsX1NpbXBsZSwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQphbm92YShtb2RlbG9fUkxfU2ltcGxlKQ0KYGBgDQoNCiMjIyMjIDMuMS4yLjMuIEFuw6FsaXNpcyBkZWwgbW9kZWxvIFJMUy4gey50YWJzZXQgLnRhYnNldC1waWxsc30NCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzIG11ZXN0cmEgZWwgaW50ZXJ2YWxvIGRlIGNvbmZpYW56YSBwYXJhICRcYmV0YV8xJCB5IHBhcmEgbGEgcHJlZGljY2nDs24gZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUsIGFtYm9zIGFsIDk1ICUuIFNlIG1lbmNpb25hIGRlIG51ZXZvIHF1ZSBsYXMgdmFyaWFibGVzIGRlIGludGVyw6lzIHNvbjogKipDaGFuY2Ugb2YgQWRtaXQqKiAodmFyaWFibGUgZGVwZW5kaWVudGUpIHkgKipUT0VGTCBTY29yZSoqICh2YXJpYWJsZSBpbmRlcGVuZGllbnRlKS4NCg0KRWwgYW7DoWxpc2lzIGRlbCBtb2RlbG8gUkxTIG11ZXN0cmEgcXVlIGVzIHNpZ25pZmljYXRpdm8geSBlbiBjb25zZWN1ZW5jaWEgYXBvcnRhIGluZm9ybWFjacOzbiByZWxldmFudGUgcGFyYSBlc3RpbWFyICoqQ2hhbmNlIG9mIEFkbWl0KiogYSBwYXJ0aXIgZGUgKipUT0VGTCBTY29yZSoqLiBFc3RvIGRlYmlkbyBhIHF1ZSBlbCBpbnRlcnZhbG8gZGUgY29uZmlhbnphIHBhcmEgZWwgY29lZmljaWVudGUgZGUgKlRPRUZMKiBlbiBlbCBtb2RlbG8gUkxTIGV4Y2x1eWUgYWwgY2VybzokJDAsMDE3MTg0NDk8XGJldGFfMTwwLDAyMDAxNDExXGhzcGFjZXsxMG1tfSgyMCkkJA0KDQpQb3Igw7psdGltbywgbGEgcGVzdGHDsWEgKipQcmVkaWNjaW9uZXMgeSBzdXMgSW50ZXZhbG9zIGRlIFByZWRpY2Npw7NuKiogbXVlc3RyYW4gbG9zIGPDoWxjdWxvcyBjb24gYmFzZSBlbiBlbCBtb2RlbG8sIGJham8gaW50ZXJ2YWxvcyBkZSBwcmVkaWNjacOzbiBhbCAkOTUkICRcJSQsIGRlIGxhcyBwcmVkaWNjaW9uZXMgZGUgdG9kYXMgbGFzIHBlc3Rhw7FhcyBkZWwgY29uanVudG8gZGUgZGF0b3MgcGFyYSBsYSB2YXJpYWJsZSAqKkNoYW5jZSBvZiBBZG1pdCoqLiBDYWJlIG1lbmNpb25hciBxdWUgZXN0b3MgaW50ZXJ2YWxvcyByZXN1bHRhbiBtw6FzIGFuY2hvcyBxdWUgYXF1ZWxsb3MgY2FsY3VsYWRvcyBjb24gYmFzZSBlbiBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBhbCBtaXNtbyBuaXZlbCBkZSBzaWduaWZpY2FuY2lhLg0KDQojIyMjIyMgSW50ZXJ2YWxvIGRlIENvbmZpYW56YSBwYXJhIEIxDQpgYGB7ciBJbnRlcnZhbG9fQ29uZmlhbnphX0IxLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCmNvbmZpbnQobW9kZWxvX1JMX1NpbXBsZSwgbGV2ZWwgPSAwLjk1KQ0KYGBgDQojIyMjIyMgUHJlZGljY2lvbmVzIHkgc3VzIEludGVydmFsb3MgZGUgUHJlZGljY2nDs24NCmBgYHtyIEludGVydmFsb3NfUHJlZGljY2lvbl9QLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnByZWRpY3QobW9kZWxvX1JMX1NpbXBsZSwgZGF0YS5mcmFtZShzZXEoMSw0MDApKSwgaW50ZXJ2YWw9J3ByZWRpY3Rpb24nLCBsZXZlbCA9IDAuOTUpDQpgYGANCiMjIyMjIyBQcmVkaWNjaW9uZXMgeSBzdXMgSW50ZXJ2YWxvcyBkZSBDb25maWFuemENCmBgYHtyIEludGVydmFsb3NfUHJlZGljY2lvbl9DLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnByZWRpY3QobW9kZWxvX1JMX1NpbXBsZSwgZGF0YS5mcmFtZShzZXEoMSw0MDApKSwgaW50ZXJ2YWw9J2NvbmZpZGVuY2UnLCBsZXZlbCA9IDAuOTUpDQpgYGANCg0KIyMjIDMuMi4gUmVncmVzacOzbiBMaW5lYWwgTcO6bHRpcGxlDQpFc3RlIG1vZGVsbywgcXVlIHB1ZWRlIGluaWNpYWxtZW50ZSBwZW5zYXJzZSBjb21vIHVuYSBleHRlbnNpw7NuIGRlIGxhIHJlZ3Jlc2nDs24gbGluZWFsIHNpbXBsZSBwYXJhIGZhY2lsaXRhciBzdSBjb21wcmVuc2nDs24sIHkgcXVlIGV2ZW50dWFsbWVudGUgc2Vyw6EgbGxhbWFkbyBlbiBlc3RlIGVzdHVkaW8gY29tbyAqKlJMTSoqLCB0aWVuZSBjb21vIGVjdWFjacOzbiBnZW5lcmFsIGFkaXRpdmE6JCR5X2k9XGJldGFfMCtcYmV0YV8xIHhfe2kxfStcY2RvdHMrXGJldGFfayB4X3tpa30rXHZhcmVwc2lsb25faSwgXGhzcGFjZXszbW19aT0xLDIsXGRvdHMsblxoc3BhY2V7MTBtbX0oMjEpJCQgZG9uZGUgJEUoXGVwc2lsb24pPTAkIHkgJFYoXGVwc2lsb24pPVxzaWdtYV4yJC4gVGFtYmnDqW4sIHBhcmEgaGFjZXIgcHJ1ZWJhcyBkZSBoaXDDs3Rlc2lzIHkgY2FsY3VsYXIgaW50ZXJ2YWxvcyBkZSBjb25maWFuemEgeSBkZSBwcmVkaWNjacOzbiwgc2Ugc3Vwb25lIHF1ZSAkXGVwc2lsb24kIGVzdMOhIG5vcm1hbG1lbnRlIGRpc3RyaWJ1aWRhLiBDb21wbGVtZW50YXJpYW1lbnRlLCBjb24gYmFzZSBlbiBlbCBlbmZvcXVlIGRlIGxvcyBtw61uaW1vcyBjdWFkcmFkb3Mgb3JkaW5hcmlvcywgbGEgZXN0aW1hY2nDs24gZGUgc3VzIHBhcsOhbWV0cm9zIHNlIHBsYW50ZWEgZW4gdMOpcm1pbm9zIGRlIGxhIG1pbmltaXphY2nDs24gZGUgdW5hIGZ1bmNpw7NuIGRlIGVuc2F5byBkZXNkZSBsYSBjdWFsIHNlIG9ic2VydmFuIGxvcyBjdWFkcmFkb3MgZGUgbGFzIGRlc3ZpYWNpb25lcyBkZSBsYSB2YXJhaWJsZSBlc3R1ZGlhZGEuIExhIGZ1bmNpw7NuIGRlIGVuc2F5byBzZSByZXByZXNlbnRhIGNvbW8gJGYoYl8wLGJfMSwuLi4sYl9rKT0gXHN1bV97an1beV9pLShiXzArYl8xeF97MWp9K2JfMnhfezJqfSsuLi4rYl9reF97a2p9KV1eMiQuIEVzdG8gY29uZHVjZSBhIHVuIGNvbmp1bnRvIGRlIGVjdWFjaW9uZXMgbm9ybWFsZXMgbGluZWFsZXMgZW4gJGJfMCxiXzEsLi4uLGJfayQsIHF1ZSBhbCBzZXIgcmVzdWVsdGFzIGVudHJlZ2FuIGxhcyBlc3RpbWFjaW9uZXMgZGUgbcOtbmltb3MgY3VhZHJhZG9zIGRlICRcaGF0e1xiZXRhXzB9LFxoYXR7XGJldGFfMX0sLi4uLCwgXGhhdHtcYmV0YV9rfSQuDQoNCkNvbXBsZW1lbnRhcmlhbWVudGUsIGxhIHByb3BvcmNpw7NuIGRlIHZhcmlhY2nDs24gdG90YWwgZXhwbGljYWRhIHBvciBlbCBtb2RlbG8gZGUgcmVncmVzacOzbiBtw7psdGlwbGUgYSB0cmF2w6lzIGRlbCBjb2VmaWNpZW50ZSBkZSBkZXRlcm1pbmFjacOzbiBtw7psdGlwbGUgc2UgYWp1c3RhLCBnZW5lcmFsbWVudGUsIGNvbiBiYXNlIGVuIGVsIG7Dum1lcm8gZGUgcGFyw6FtZXRyb3MgZGVsIG1vZGVsby4NCg0KQWRlbcOhcywgdW5hIHBydWViYSBkZSB1dGlsaWRhZCBkZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIG3Dumx0aXBsZSBjb25zaXN0ZSBlbiB1bmEgcHJ1ZWJhIGRlIGhpcMOzdGVzaXMgYmFzYWRhIGVuIHVuIGVzdGFkw61zdGljbyBxdWUgdGllbmUgdW5hIGRpc3RyaWJ1Y2nDs24gJEYkIHBhcnRpY3VsYXIgY3VhbmRvICRIXzAkIGVzIHZlcmRhZGVyYSwgZXN0byBkZSBleHByZXNhIGVuIGVsIHBhcjokJEhfMDpcYmV0YV8xPVxiZXRhXzI9XGNkb3RzPVxiZXRhX2s9MFxoc3BhY2V7MTBtbX0oMjIpJCQNCiQkSF8xOiBcdGV4dCB7YWwgbWVub3MgdW5hIH1cYmV0YV9pXG5lcSAwXGhzcGFjZXs1bW19KGk9MSwuLi4saylcaHNwYWNlezEwbW19KDIzKSQkIGVsIHZhbG9yIGRlbCBlc3RhZMOtc3RpY28gZGUgcHJ1ZWJhIGVzOiQkZj1cZnJhY3tSXjIva317KDEtUl4yKShuLShrKzEpKX09XGZyYWN7U0NSL2t9e1NDRS8obi0oaysxKSl9PVxmcmFje1JNQ317Q01FfVxoc3BhY2V7MTBtbX0oMjQpJCQgZG9uZGUgJFNDUj1TVEMtU0NFJCwgcXVlIGVzIGxhIHN1bWEgZGUgY3VhZHJhZG9zIGRlIHJlZ3Jlc2nDs24sIHkgbGEgcmVnacOzbiBkZSByZWNoYXpvIHBhcmEgdW5hIHBydWViYSBkZSBuaXZlbCAkXGFscGhhJCBlczogJCRmXGdlcSBGX3tcYWxwaGEsIGssbi0oaysxKX1caHNwYWNlezEwbW19KDI1KSQkIFBvciDDumx0aW1vLCB1biBpbnRlcnZhbG8gZGUgY29uZmlhbnphIGFsICQxMDAoMS1cYWxwaGEpXCUkIHBhcmEgJFxiZXRhX2kkIGVzOiAkJFxoYXRcYmV0YV9pXHBtIHRfe1xhbHBoYS8yLG4tKGsrMSl9XGNkb3Qgc197XGhhdFxiZXRhX3tpfX1caHNwYWNlezEwbW19KDI2KSQkIHkgdW4gaW50ZXJ2YWxvIGRlIGNvbmZpYW56YSBhbCBtaXNtbyBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIHBhcmEgdW4gdmFsb3IgZnV0dXJvIGVzdMOhIGRhZG8gcG9yOiAkJFxoYXQgeVxwbSB0X3tcYWxwaGEvMixuLShrKzEpfVxjZG90IFxzcXJ0e3NeMitzXjJfe1xoYXQgWX19XGhzcGFjZXsxMG1tfSgyNykkJCBQYXJhIGNlcnJhciwgZXMgbmVjZXNhcmlvIG1lbmNpb25hciBxdWUgZXZlbnR1YWxtZW50ZSBzdXJnZW4gcHJvYmxlbWFzIGVuIGxvcyBhbsOhbGlzaXMgZGUgcmVncmVzacOzbiBtw7psdGlwbGUgcXVlIGltcGxpY2FuIGNvbnNpZGVyYXIgdMOpY25pY2FzIGRlIHNvbHVjacOzbiByZWxhY2lvbmFkYXMgY29uIHRyYW5zZm9ybWFjaW9uZXMgZGUgbm8tbGluZWFsaWRhZCwgZXN0YW5kYXJpemFjacOzbiB5IHNlbGVjY2nDs24gZGUgdmFyaWFibGVzLCBpZGVudGlmaWNhY2nDs24gZGUgb2JzZXJ2YWNpb25lcyBpbmZsdXllbnRlcywgbXVsdGljb2xpbmVhbGlkYWQsIGVudHJlIG90cmFzLiANCg0KIyMjIyAzLjIuMS4gUGxhbnRlYW1pZW50byBkZWwgUHJvYmxlbWENCkNvbiBiYXNlIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlc2NyaXRvIGVuIGxhIHNlY2Npw7NuICoqMioqIHNlIGZvcm11bGFyw6EgdW4gbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIG3Dumx0aXBsZSBwYXJhIGVzdHVkaWFyIGxhIHJlbGFjacOzbiBsaW5lYWwgbcO6bHRpcGxlIHN1cHVlc3RhIGVudHJlIGxhcyB2YXJhaWJsZXMgZGVmaW5pZGFzIHBvciBsb3MgY2FtcG9zOiAqKkNoYW5jZSBvZiBBZG1pdCoqICh2YXJpYWJsZSBkZXBlbmRpZW50ZSkgeSBsb3MgZGVtw6FzIGNvbW8gdmFyaWFibGVzIGluZGVwZW5kaWVudGVzOiAqKkdlbmRlcioqLCAqKkdSRSBTY29yZSoqLCAqKlRPRUZMIFNjb3JlKiosICoqU09QKiosICoqTE9SKiosICoqQ0dQQSoqLCAqKlJlc2VhcmNoKiogeSAqKlVuaXZlcnNpdHkgUmF0aW5nKiouDQoNCiMjIyMgMy4yLjIuIERlc2Fycm9sbG8gZGVsIEFuw6FsaXNpcw0KRWwgZXN0dWRpbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBtw7psdGlwbGUgaGEgc2lkbyBwcm9jZXNhZG8gY29uIGByIFIudmVyc2lvbi5zdHJpbmdgIG1lZGlhZG8gcG9yIFJTdHVkaW8gMjAyMi4wNy4yIEJ1aWxkIDU3NiBlbiB1bmEgcGxhdGFmb3JtYSB4ODZfNjQtdzY0LW1pbmd3MzIuDQoNCiMjIyMjIDMuMi4yLjEuIFJlc3VtZW4gZXN0YWTDrXN0aWNvIGRlIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpby4gey50YWJzZXQgLnRhYnNldC1waWxsc30NCkxhIG5hdmVnYWNpw7NuIGEgdHJhdsOpcyBkZSBsYXMgcGVzdGHDsWFzIG11ZXN0cmEgZWwgcmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgdG9kYXMgbGFzIHZhcmlhYmxlcyBkZWwgY29uanVudG8gZGUgZGF0b3MsIGV4Y2VwdG8gKipTZXJpYWwqKiwgcG9ycXVlIHNpbXBsZW1lbnRlIGVzIHVuIMOtbmRpY2UgcG9zaWNpb25hbC4gU2luIGVtYmFyZ28sIHBhcmEgbGFzIHZhcmFpYmxlcyBkZSBuYXR1cmFsZXphIGN1YW50aXRhdGl2YTo6cmF6w7NuIGVsIHJlc3VtZW4gc2Vyw6EgZWwgdHJhZGljaW9uYWwsIHBlcm8gcGFyYSBsYXMgdmFyaWFibGVzIGRlIG5hdHVyYWxlemEgY3VhbGl0YXRpdmE6Om5vbWluYWwgZWwgcmVzdW1lbiBlc3RhZMOtc3RpY28gY29uc2lzdGlyw6EgZW4gY29udGVvcywgcHJvcG9yY2lvbmVzIHkgZGlhZ3JhbWFzIGRlIGJhcnJhcy4gIFNlIG1lbmNpb25hIGRlIG51ZXZvIHF1ZSAqKkNoYW5jZSBvZiBBZG1pdCoqIGVzIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlLg0KDQojIyMjIyMgUmVzdW1lbiBWYXJpYWJsZXMgQ3VhbnRpdGF0aXZhcw0KYGBge3IgcmVzdW1lbl9WYXJpYWJsZXNfQ3VhbnRpdGF0aXZhcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpzdW1tYXJ5KEFkbWlzc2lvbl9EYXRhc2V0JEdSRV9TY29yZSkNCnN1bW1hcnkoQWRtaXNzaW9uX0RhdGFzZXQkVE9FRkxfU2NvcmUpDQpzdW1tYXJ5KEFkbWlzc2lvbl9EYXRhc2V0JFNPUCkNCnN1bW1hcnkoQWRtaXNzaW9uX0RhdGFzZXQkTE9SKQ0Kc3VtbWFyeShBZG1pc3Npb25fRGF0YXNldCRDR1BBKQ0Kc3VtbWFyeShBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQpDQpgYGANCg0KIyMjIyMjIFJlc3VtZW4gVmFyaWFibGVzIEN1YWxpdGF0aXZhcw0KYGBge3IgcmVzdW1lbl9WYXJpYWJsZXNfQ3VhbGl0YXRpdmFzLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnRhYmxlKEFkbWlzc2lvbl9EYXRhc2V0JEdlbmRlcikNCnByb3AudGFibGUodGFibGUoQWRtaXNzaW9uX0RhdGFzZXQkR2VuZGVyKSkNCmJhcnBsb3QodGFibGUoQWRtaXNzaW9uX0RhdGFzZXQkR2VuZGVyKSkNCnRhYmxlKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoKQ0KcHJvcC50YWJsZSh0YWJsZShBZG1pc3Npb25fRGF0YXNldCRSZXNlYXJjaCkpDQpiYXJwbG90KHRhYmxlKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoKSkNCnRhYmxlKEFkbWlzc2lvbl9EYXRhc2V0JFVuaXZlcnNpdHlfUmF0aW5nKQ0KcHJvcC50YWJsZSh0YWJsZShBZG1pc3Npb25fRGF0YXNldCRVbml2ZXJzaXR5X1JhdGluZykpDQpiYXJwbG90KHRhYmxlKEFkbWlzc2lvbl9EYXRhc2V0JFVuaXZlcnNpdHlfUmF0aW5nKSkNCmBgYA0KDQojIyMjIyMgRGlhZ3JhbWFzIGRlIERpc3BlcnNpw7NuIFZhcmlhYmxlcyBDdWFudGl0YXRpdmFzDQpgYGB7ciBkaXNwZXJzaW9uZXNfVmFyaWFibGVzX0N1YW50aXRhdGl2YXMsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KcGFpcnMofkdSRV9TY29yZSArIFRPRUZMX1Njb3JlICsgU09QICsgTE9SICsgQ0dQQSArIENoYW5jZV9vZl9BZG1pdCwgZGF0YSA9IEFkbWlzc2lvbl9EYXRhc2V0KQ0KYGBgDQoNCiMjIyMjIDMuMi4yLjIuIEZvcm11bGFjacOzbiBkZWwgbW9kZWxvIGRlIFJMTSBlbnRyZSBsYXMgdmFyaWFibGVzIGRlIGVzdHVkaW8uIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIHJlc8O6bWVuIHkgbGEgdGFibGEgQU5PVkEgZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBtw7psdGlwbGUgdG90YWwgeSBsb3MgY29lZmljaWVudGVzIHRhbnRvIGRlbCBtb2RlbG8gbWVuY2lvbmFkbyBjb21vIGVsIGxvZ3JhZG8gbHVlZ28gZGUgcmVkdWNpcmxvLiBDb24gYmFzZSBlbiBsYSBleHBsb3JhY2nDs24gZGUgbG9zIGRhdG9zIGRlIGxhIHNlc2nDs24gMy4yLjIuMS4geSBlbCByZXPDum1lbiB5IGxhIHRhYmxhIEFOT1ZBIGRlbCBtb2RlbG8gdG90YWwgc2UgZm9ybXVsYW4gcGFyYSBjb21wYXJhY2nDs24gZG9zIG1vZGVsb3MgUkxNOiB1bm8gcXVlIGluY2x1eWUgYSB0b2RhcyBsYXMgdmFyaWJsZXMgZGVsIGNvbmp1bnRvIGRlIGRhdG9zLCBleGNlcHRvICoqU2VyaWFsKiosIHkgb3RybyBxdWUgZXhjbHV5ZSBhICoqR2VuZGVyKiosICoqU09QKiogeSAqKlVuaXZlcnNpdHkgUmF0aW5nKiouIFNlIG1lbmNpb25hIGRlIG51ZXZvIHF1ZSAqKkNoYW5jZSBvZiBBZG1pdCoqIGVzIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlLg0KDQpBbCBjb25zaWRlcmFyIGxvcyByZXN1bHRhZG9zIHByZXNlbnRhZG9zIGVuIGxhIHBlc3Rhw7FhICoqQ29lZmljaWVudGVzIGRlbCBNb2RlbG8gUkxNIFRvdGFsKiogc2UgcHVlZGUgZXN0YWJsZXIgcXVlIGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBtw7psdGlwbGUgdG90YWwgcXVlIHJlbGFjaW9uYSBhIGxhcyB2YXJpYWJsZXMgZGUgaW50ZXLDqXMsIGxhcyBjdWFsZXMgc2UgcmVzdW1pcsOhbiBjb21vOiAkQ09BJCAoKipDaGFuY2Ugb2YgQWRtaXQqKiksICRHUkUkICgqKkdSRSBTY29yZSoqKSwgJFRPRUZMJCAoKipUT0VGTCBTY29yZSoqKSwgJFNPUCQgKCoqU09QKiopLCAkTE9SJCAoKipMT1IqKiksICRDR1BBJCAoKipDR1BBKiopLCAkR18xJCAoKipHZW5kZXI6Ok1hbGUqKiksICRSXzEkICgqKlJlc2VhcmNoOjoxKiopLCAkVVJfMiQgKCoqVW5pdmVyc2l0eSBSYXRpbmc6OjIqKiksICRVUl8zJCAoKipVbml2ZXJzaXR5IFJhdGluZzo6MyoqKSwgJFVSXzQkICgqKlVuaXZlcnNpdHkgUmF0aW5nOjo0KiopIHkgJFVSXzUkICgqKlVuaXZlcnNpdHkgUmF0aW5nOjo1KiopLCB0aWVuZSBsYSBmb3JtdWxhY2nDs24gKGNvbiBjb2VmaWNpZW50ZXMgcmVkb25kZWFkb3MgYSBjdWF0cm8gY2lmcmFzIGRlY2ltYWxlcyBwb3IgbW90aXZvcyBkZSBlZGljacOzbik6JCRcdGlueSBcaGF0e0NPQX09LTEsMjQyNSswLDAwMTdcY2RvdCBHUkUrMCwwMDMxXGNkb3QgVE9FRkwtMCwwMDI2XGNkb3QgU09QKzAsMDIyN1xjZG90IExPUiswLDExODhcY2RvdCBDR1BBLTAsMDAwOVxjZG90IEdfMSswLDAyNDRcY2RvdCBSXzEtMC4wMTQ2XGNkb3QgVVJfMi0wLDAwOTNcY2RvdCBVUl8zLTAsMDA3MlxjZG90IFVSXzQrMCwwMTA1XGNkb3QgVVJfNVxoc3BhY2V7MTBtbX0oMjgpJCQgcGFyYSBlc3RlIG1vZGVsbyBzZSBvYnZpYSBsYSBpbnRlcnByZXRhY2nDs24gZGVsIGludGVyY2VwdG8gcG9yIGNhcmVjZXIgZGUgc2VudGlkbyBkYWRvIHF1ZSAqKkNoYW5jZSBvZiBBZG1pdCoqIHJlc3VsdGFyw61hIG5lZ2F0aXZhIGVuIGNhc28gZGUgdW4gcXVlIGxhcyB2YXJpYWJsZXMgcHJlZGljdG9yYXMgZnVlc2VuIG51bGFzIGEgbGEgdmV6LCB5IGFtYmFzIHNpdHVhY2lvbmVzIGNhcmVjZW4gZGUgc2VudGlkby4NCg0KUG9yIG90cm8gbGFkbywgbHVlZ28gZGUgYXVzY3VsdGFyIGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvIHkgbGEgdGFibGEgQU5PVkEgZGVsIG1vZGVsbyBSTE0gVG90YWwgKGNvbW8gc2UgbXVlc3RyYSBlbiBsYSBwZXN0YcOxYSBob23Ds25pbWEpLCBzZSBwdWRvIGVzdGFibGVjZXIsIGNvbiBlbCBhcG95byBkZSBsb3MgcmVzw7ptZW5lcyBlc3RhZMOtc3RpY29zIGRlIGxhcyB2YXJpYWJsZXMgZGUgZXN0dWRpbywgcXVlIHBvZMOtYSBleGNsdWlyc2UgZGlyZWN0YW1lbnRlIGRlbCBtb2RlbG8gcG9yIGJhamEgc2lnbmlmaWNhbmNpYSBsYXMgdmFyaWFibGVzICoqR2VuZGVyKiogeSAqKlVuaXZlcnNpdHkgUmF0aW5nKio7IHNpbiBlbWJhcmdvLCBsYSB2YXJpYWJsZSAqKlNPUCoqIHByZXNlbnTDsyB1biBwYXJ0ZSBjb250cmFkaWN0b3Jpbzogc2lnbmlmaWNhbmNpYSBlbiBlbCByZXN1bWVuLCBwZXJvIGxvIGNvbnRyYXJpbyBlbiBBTk9WQSwgbGEgZGVjaXNpw7NuIHRvbWFkYSBmdWUgZXhjbHVpcmxhIGRlbCBtb2RlbG8uIEVzdG8gaW1wbGljw7MgcXVlIHNlIGNhbGN1bGFzZSB1biBtb2RlbG8gcmVkdWNpZG8gY29uIGxhIGZvcm11bGFjacOzbiAoY29uIGJhc2UgZW4gbGFzIG1pc21hcyBjb25zaWRlcmFjaW9uZXMgZGUgZWRpY2nDs24gZGVsIG1vZGVsbyB0b3RhbCk6JCRcaGF0e0NPQX09LTEsMjk4NSswLDAwMThcY2RvdCBHUkUrMCwwMDMwXGNkb3QgVE9FRkwrMCwwMjI4XGNkb3QgTE9SKzAsMTIxMFxjZG90IENHUEErMCwwMjQ2XGNkb3QgUl8xXGhzcGFjZXsxMG1tfSgyOSkkJA0KDQojIyMjIyMgUmVzdW1lbiB5IEFOT1ZBIGRlbCBNb2RlbG8gUkxNIFRvdGFsDQpgYGB7ciwgcmVzdW1lbl95X0FOT1ZBX1JMTV9Ub3RhbCwgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpzdW1tYXJ5KGxtKEFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdH5BZG1pc3Npb25fRGF0YXNldCRHUkVfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkVE9FRkxfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkU09QK0FkbWlzc2lvbl9EYXRhc2V0JExPUitBZG1pc3Npb25fRGF0YXNldCRDR1BBK2FzLmZhY3RvcihBZG1pc3Npb25fRGF0YXNldCRHZW5kZXIpK2FzLmZhY3RvcihBZG1pc3Npb25fRGF0YXNldCRSZXNlYXJjaCkrYXMuZmFjdG9yKEFkbWlzc2lvbl9EYXRhc2V0JFVuaXZlcnNpdHlfUmF0aW5nKSkpDQphbm92YShsbShBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXR+QWRtaXNzaW9uX0RhdGFzZXQkR1JFX1Njb3JlK0FkbWlzc2lvbl9EYXRhc2V0JFRPRUZMX1Njb3JlK0FkbWlzc2lvbl9EYXRhc2V0JFNPUCtBZG1pc3Npb25fRGF0YXNldCRMT1IrQWRtaXNzaW9uX0RhdGFzZXQkQ0dQQSthcy5mYWN0b3IoQWRtaXNzaW9uX0RhdGFzZXQkR2VuZGVyKSthcy5mYWN0b3IoQWRtaXNzaW9uX0RhdGFzZXQkUmVzZWFyY2gpK2FzLmZhY3RvcihBZG1pc3Npb25fRGF0YXNldCRVbml2ZXJzaXR5X1JhdGluZykpKQ0KYGBgDQoNCiMjIyMjIyBDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTE0gVG90YWwNCmBgYHtyLCBjb2VmaWNpZW50ZXNfUkxNX1RvdGFsLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCmNvZWZmaWNpZW50cyhsbShBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXR+QWRtaXNzaW9uX0RhdGFzZXQkR1JFX1Njb3JlK0FkbWlzc2lvbl9EYXRhc2V0JFRPRUZMX1Njb3JlK0FkbWlzc2lvbl9EYXRhc2V0JFNPUCtBZG1pc3Npb25fRGF0YXNldCRMT1IrQWRtaXNzaW9uX0RhdGFzZXQkQ0dQQSthcy5mYWN0b3IoQWRtaXNzaW9uX0RhdGFzZXQkR2VuZGVyKSthcy5mYWN0b3IoQWRtaXNzaW9uX0RhdGFzZXQkUmVzZWFyY2gpK2FzLmZhY3RvcihBZG1pc3Npb25fRGF0YXNldCRVbml2ZXJzaXR5X1JhdGluZykpKQ0KYGBgDQoNCiMjIyMjIyBDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTE0gUmVkdWNpZG8NCmBgYHtyIGNvZWZpY2llbnRlc19STE1fUmVkdWNpZG8sIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KY29lZmZpY2llbnRzKGxtKEFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdH5BZG1pc3Npb25fRGF0YXNldCRHUkVfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkVE9FRkxfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkTE9SK0FkbWlzc2lvbl9EYXRhc2V0JENHUEErYXMuZmFjdG9yKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoKSkpDQpgYGANCg0KIyMjIyMgMy4yLjIuMy4gQW7DoWxpc2lzIGRlbCBtb2RlbG8gUkxNLiB7LnRhYnNldCAudGFic2V0LXBpbGxzfQ0KTGEgbmF2ZWdhY2nDs24gYSB0cmF2w6lzIGRlIGxhcyBwZXN0YcOxYXMsIHByaW1lcm8gcG9yICoqTWVqb3IgTW9kZWxvIEl0ZXJhZG8gc2Vnw7puIEFJQyoqLCBtdWVzdHJhIHF1ZSBsYSBkZWNpc2nDs24gZGUgZXhjbHVpciBkZWwgbW9kZWxvIHRvdGFsIGEgbGEgdmFyaWFibGUgKipTT1AqKiByZXN1bHTDsyBhY2VydGFkYSwgZWwgYWxnb3JpdG1vIGl0ZXJhZG8gcXVlIGNvbnNpZGVyYSBjb21wb25lbnRlcyBBTk9WQSB5IGRlIGRlc3ZpYWNpw7NuIGRlIHJlc2lkdWFsZXMgbGEgZXhjbHV5w7MgZW4gbGEgY3VhcnRhIGl0ZXJhY2nDs24uIEFkZW3DoXMsIGVsIG1pc21vIGFsZ29yaXRtbyBkZXRlcm1pbsOzIHVuIG1vZGVsbyBiYXNhZG8gZW4gbGFzIG1pc21hcyB2YXJpYWJsZXMgZGVsIG1vZGVsbyByZWR1Y2lkbyBmdW5kYW1lbnRvIGVuIGxhIGluc3BlY2Npw7NuIGRlIHZhcmFpYmxlcyBkZSBsYXMgZG9zIHNlY2Npb25lcyBwcmVjZWRlbnRlcy4NCg0KQ29tcGxlbWVudGFyaWFtZW50ZSwgZW4gbGEgcGVzdGHDsWEgZGUgKipCb25kYWRlcyBkZSBBanVzdGUsIFNpZ25pZmljYW5jaWFzIHkgQ3JpdGVyaW9zIGRlIEluZm9ybWFjacOzbiBDb21wYXJhZG9zKiogc2UgcHJlc2VudGFuIGVuIHBhcmFsZWxvIGxvcyBtb2RlbG9zIGdlbmVyYWRvcy4gTGEgY29uc2lkZXJhY2nDs24gZGUgdG9kYXMgbGFzIHZhcmlhYmxlcyBkZWwgY29uanVudG8gZGUgZGF0b3MgcHJlc2VudMOzIHVuYSBib25kYWQgZGUgYWp1c3RlIGNvbiBiYXNlIGVuIGVsIGNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuIG3Dumx0aXBsZSBxdWUgc29sbyBzZSByZWR1am8gZW4gdGVybWlub3MgYWJzb2x1dG9zICQwLDAwMiQgcHVudG9zIChlcyBkZWNpciwgc2UgcGFzw7MgZGUgZXhwbGljYXIgZWwgJDgwLDUkICRcJSQgZGUgbGEgdmFyaWFiaWxpZGFkIGEgZWwgJDgwLDMkICRcJSQpIGVuIGNvbXBhcmFjacOzbiBjb24gZWwgbW9kZWxvIHJlZHVjaWRvIHkgZWwgaXRlcmFkbzsgYWRlbcOhcywgbGFzIHNpZ25pZmljYW5jaWFzIGdsb2JhbCBlIGluZGl2aWR1YWxlcyBkZSBlc3RvcyBldmlkZW5jaWFuIHF1ZSBhbWJvcyBtb2RlbG9zLCBxdWUgc29uIGlkw6ludGljb3MsIGFwb3J0YW4gaW5mb3JtYWNpw7NuIHJlbGV2YW50ZSBwYXJhIGVzdGltYXIgbGEgdmFyaWFibGUgZGVwZW5kaWVudGUgKipDaGFuY2Ugb2YgQWRtaXQqKiwgcG9ycXVlIHBhcmEgbG9zIHZhbG9yZXMgY3LDrXRpY29zIG9idGVuaWRvcyBkZSBsYXMgcHJ1ZWJhcyAkRiQgKHBhcmEgbGEgc2lnbmlmaWNhbmNpYSBnbG9iYWwpIHkgJHQkIChwYXJhIGxhcyBzaWduaWZpY2FuY2lhcyBpbmRpdmlkdWFsZXMpLCBsb3MgcC12YWxvcmVzIHJlc3VsdGFyb24gc2llbXByZSBtZW5vcmVzIHBhcmEgY3VhbHF1aWVyIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgJFxhbHBoYSQgaW5jbHVpZG8gZGVudHJvIGRlIGxvcyB0cmFkaWNpb25hbGVzLCBwb3IgZWplbXBsbywgJFxhbHBoYT0wLDAxJC4NCg0KUG9yIMO6bHRpbW8sIGxvcyBjcml0ZXJpb3MgZGUgaW5mb3JtYWNpw7NuIEFJQyB5IEJJQyBtdWVzdHJhbiBxdWUgZWZlY3RpdmFtZW50ZSBlbiBsb3MgbW9kZWxvcyBpZMOpbnRpY29zIHJlZHVjaWRvIGUgaXRlcmFkbyBsYSByZWxhY2nDs24gZW50cmUgZWwgc2VzZ28geSBsYSB2YXJpYW56YSBlbiBzdXMgZm9ybXVsYWNpb25lcywgZXMgZGVjaXIsIGVudHJlIHN1cyBleGFjdGl0dWRlcyB5IGNvbXBsZWppZGFkZXMsIHJlc3VsdGEgbWVqb3IgcXVlIGVuIG1vZGVsbyB0b3RhbDogJEFJQ197UkxNUmVkdWNpZG99PUFJQ197UkxNSXRlcmFkb309LTEwNTksMjI1PC0xMDUyLDMxND1BSUNfe1JMTVRvdGFsfSQgeSAkQklDX3tSTE1SZWR1Y2lkb309QklDX3tSTE1JdGVyYWRvfT0tMTAzMSwyODQ8LTEwMDAsNDI1PUJJQ197UkxNVG90YWx9JC4NCg0KIyMjIyMjIE1lam9yIE1vZGVsbyBJdGVyYWRvIHNlZ8O6biBBSUMNCmBgYHtyLCBtZWpvcl9Nb2RlbG9fQUlDLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCm1vZGVsb19JdGVyYWRvX1NURVAgPSBzdGVwKGxtKEFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdH5BZG1pc3Npb25fRGF0YXNldCRHUkVfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkVE9FRkxfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkU09QK0FkbWlzc2lvbl9EYXRhc2V0JExPUitBZG1pc3Npb25fRGF0YXNldCRDR1BBK2FzLmZhY3RvcihBZG1pc3Npb25fRGF0YXNldCRHZW5kZXIpK2FzLmZhY3RvcihBZG1pc3Npb25fRGF0YXNldCRSZXNlYXJjaCkrYXMuZmFjdG9yKEFkbWlzc2lvbl9EYXRhc2V0JFVuaXZlcnNpdHlfUmF0aW5nKSkpDQpjb2VmZmljaWVudHMobW9kZWxvX0l0ZXJhZG9fU1RFUCkNCmBgYA0KDQojIyMjIyMgQm9uZGFkZXMgZGUgQWp1c3RlLCBTaWduaWZpY2FuY2lhcyB5IENyaXRlcmlvcyBkZSBJbmZvcm1hY2nDs24gQ29tcGFyYWRvcw0KYGBge3J9DQptb2RlbG9fUkxNX1RPVEFMID0gbG0oQWRtaXNzaW9uX0RhdGFzZXQkQ2hhbmNlX29mX0FkbWl0fkFkbWlzc2lvbl9EYXRhc2V0JEdSRV9TY29yZStBZG1pc3Npb25fRGF0YXNldCRUT0VGTF9TY29yZStBZG1pc3Npb25fRGF0YXNldCRTT1ArQWRtaXNzaW9uX0RhdGFzZXQkTE9SK0FkbWlzc2lvbl9EYXRhc2V0JENHUEErYXMuZmFjdG9yKEFkbWlzc2lvbl9EYXRhc2V0JEdlbmRlcikrYXMuZmFjdG9yKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoKSthcy5mYWN0b3IoQWRtaXNzaW9uX0RhdGFzZXQkVW5pdmVyc2l0eV9SYXRpbmcpKQ0KbW9kZWxvX1JMTV9SRURVQ0lETyA9IGxtKEFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdH5BZG1pc3Npb25fRGF0YXNldCRHUkVfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkVE9FRkxfU2NvcmUrQWRtaXNzaW9uX0RhdGFzZXQkTE9SK0FkbWlzc2lvbl9EYXRhc2V0JENHUEErYXMuZmFjdG9yKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoKSkNCg0Kc3RhcmdhemVyKG1vZGVsb19STE1fVE9UQUwsIG1vZGVsb19STE1fUkVEVUNJRE8sIG1vZGVsb19JdGVyYWRvX1NURVAsIHR5cGUgPSAidGV4dCIsIGRmID0gVFJVRSkNCkFJQyhtb2RlbG9fUkxNX1RPVEFMLCBtb2RlbG9fUkxNX1JFRFVDSURPLCBtb2RlbG9fSXRlcmFkb19TVEVQKQ0KQklDKG1vZGVsb19STE1fVE9UQUwsIG1vZGVsb19STE1fUkVEVUNJRE8sIG1vZGVsb19JdGVyYWRvX1NURVApDQpgYGANCg0KIyMjIDMuMy4gUmVncmVzacOzbiBMb2fDrXN0aWNhIFNpbXBsZQ0KRXN0ZSBtb2RlbG8sIHF1ZSBldmVudHVhbG1lbnRlIHNlcsOhIGxsYW1hZG8gZW4gZXN0ZSBlc3R1ZGlvIGNvbW8gKipSTG9nUyoqLCBlc3RhYmxlY2UgcXVlLCBlbiBjb21wYXJhY2nDs24gY29uIHVuIG1vZGVsbyBkZSByZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUgcXVlIHJlbGFjaW9uZSB1bmEgdmFyaWFibGUgY3VhbnRpdGF0aXZhIGRlcGVuZGllbnRlICR5JCBjb24gdW5hIHZhcmFpYmxlIGN1YW50aXRhdGl2YSBpbmRlcGVuZGllbnRlICR4JCwgcmVsYWNpb25hIHVuYSB2YXJpYWJsZSBjYXRlZ8OzcmljYSBkaWNvdMOzbWljYSAoY29uIHZhbG9yZXMgcG9zaWJsZXMgJDEkICjDqXhpdG8pIHkgJDAkIChmcmFjYXNvKSkgZGVwZW5kaWVudGUgJHkkIGNvbiBlbCB2YWxvciBkZSBwcm9iYWJpbGlkYWQgJHAoeClcaW4gWzAsIDFdJCBxdWUgZGVwZW5kZSBkZSBhbGd1bmEgdmFyaWFibGUgY3VhbnRpdGF0aXZhICR4JC4NCg0KQ29tbyBzZSBtZW5jaW9uw7MgZW4gbGEgc2VjY2nDs24gKioxKiogbG9zIG1vZGVsb3MgZGUgcmVncmVzacOzbiB1c2Fkb3MgZW4gZXN0ZSBlc3R1ZGlvIHB1ZWRlbiBzZXIgdmlzdG9zIGNvbW8gY2Fzb3MgcGFydGljdWxhcmVzIGRlbCBNb2RlbG8gTGluZWFsIEdlbmVyYWxpemFkbyAoKipHTE0qKiBwb3Igc3VzIHNpZ2xhcyBlbiBpbmdsw6lzKS4gRXN0ZSBtb2RlbG8gZXh0aWVuZGUgYWwgbW9kZWxvIGxpbmVhbCBnZW5lcmFsIGFsIGxvZ3JhciBxdWUgbGEgdmFyaWFibGUgZGVwZW5kaWVudGUgZXN0w6EgcmVsYWNpb25hZGEgbGluZWFsbWVudGUgY29uIHN1cyBmYWN0b3JlcyB5IGNvdmFyaWFibGVzIGEgdHJhdsOpcyBkZSBhbGd1bmEgZnVuY2nDs24gZGUgZW5sYWNlIHkgcXVlIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlIHB1ZWRhIHRlbmVyIHVuYSBkaXN0cmlidWNpw7NuIGRpZmVyZW50ZSBhIGxhIG5vcm1hbC4gQWRlbcOhcyBkZSBsb3MgbW9kZWxvcyB1c2Fkb3MgZW4gZXN0ZSBlc3R1ZGlvLCBlbCAqKkdMTSoqIHRhbWJpw6luIGN1YnJlOiBtb2RlbG9zIGxvZ2xpbmVhbGVzIHBhcmEgZGF0b3MgZGUgcmVjdWVudG8sIG1vZGVsb3MgbG9nLWxvZyBjb21wbGVtZW50YXJpbyBwYXJhIGRhdG9zIGRlIHN1cGVydml2ZW5jaWEgY2Vuc3VyYWRvcyBwb3IgaW50ZXJ2YWxvcywgeSBvdHJvcyBtb2RlbG9zIGVzdGFkw61zdGljb3MgYSB0cmF2w6lzIGRlIGxhIHByb3BpYSBmb3JtdWxhY2nDs24gZ2VuZXJhbCBkZWwgbW9kZWxvLg0KDQpDb21vICoqR0xNKiogcGVybWl0ZSBlc3BlY2lmaWNhciBkaXN0cmlidWNpb25lcyBkaWZlcmVudGVzIGEgbGEgbm9ybWFsIHkgdW5hIGZ1bmNpw7NuIGRlIGVubGFjZSAoZW50ZW5kaWRhIGNvbW8gdW5hIHRyYW5zZm9ybWFjacOzbiBkZSBsYSB2YXJpYWJsZSBkZXBlbmRpZW50ZSBxdWUgcGVybWl0ZSBsYSBlc3RpbWFjacOzbiBkZWwgbW9kZWxvKSBkaWZlcmVudGUgYSBsYSBpZGVudGlkYWQgc2UgcHVlZGUgdHJhYmFqYXIgY29uIG11Y2hhcyBjb21iaW5hY2lvbmVzIHBvc2libGVzIGRlIGRpc3RyaWJ1Y2lvbmVzIHkgZnVuY2lvbmVzIGRlIGVubGFjZSwgdmFyaWFzIGRlIGxhcyBjdWFsZXMgcHVlZGVuIHNlciBhZGVjdWFkYXMgcGFyYSB1biBjb25qdW50byBkZSBkYXRvcyBlbiBwYXJ0aWN1bGFyLCBlc3RvIGltcGxpY2EgcXVlIGxhIGVsZWNjacOzbiBkZSBsYSBjb21iaW5hY2nDs24gZXN0YXLDoSBvcmllbnRhZGEgcG9yIGNvbnNpZGVyYWNpb25lcyB0ZcOzcmljYXMgYSBwcmlvcmksIHBvciBsYSBuYXR1cmFsZXphIGRlIGxhcyB2YXJpYWJsZXMsIGxhIGV4cGVyaWVuY2lhIGRlbCBpbnZlc3RpZ2Fkb3IgeSBsb3MgcmVzdWx0YWRvcyBhbCBjb21wYXJhciBjb21iaW5hY2lvbmVzLg0KDQpFbiBlbCBjYXNvIHBvciB0cmF0YXIsIHNlIHRyYWJhamFyw6EgY29uIGJhc2UgZW4gdW5hIGRpc3RyaWJ1Y2nDs24gYmlub21pYWwgKGFkZWN1YWRhIHBhcmEgdmFyaWFibGVzIHF1ZSByZXByZXNlbnRhbiB1bmEgcmVzcHVlc3RhIGJpbmFyaWEpIGNvbiBmdW5jacOzbiBkZSBlbmxhY2UgbG9naXQ6JCRccGkoeCk9XGRmcmFje2Vee1xiZXRhXzArXGJldGFfMSB4fX17MSsgZV57XGJldGFfMCArXGJldGFfMSB4fX09ICBcZGZyYWN7MX17MSsgZV57LShcYmV0YV8wK1xiZXRhXzEgeCl9fVxoc3BhY2V7MTBtbX0oMzApJCQoZGVsIGluZ2zDqXMgKipsb2cqKmFyaXRobWljIHVuKippdCoqOiB1bmlkYWQgbG9nYXLDrXRtaWNhIChuYXR1cmFsKSk7IHF1ZSBhZGVtw6FzIGVzIGFwcm9waWFkYSDDum5pY2FtZW50ZSBwYXJhIGxhIGRpc3RyaWJ1Y2nDs24gYmlub21pYWwpLCBwb3IgbG8gY3VhbCB1biBub21icmUgbcOhcyBhZGVjdWFkbyBwYXJhIGxhIHJlZ3Jlc2nDs24gcG9kcsOtYSBzZXIgcmVncmVzacOzbiBsb2fDrXN0aWNhIGJpbmFyaWEuIENhYmUgYW5vdGFyIHF1ZSBlbCB0w6lybWlubyBsb2fDrXN0aWNvIGhhY2UgcmVmZXJlbmNpYSBhIHF1ZSBsYSBmdW5jacOzbiBkZSBlbmxhY2UgY29uc3RpdHV5ZSwgZW4gY2llcnRvIHNlbnRpZG8sIHVuIHJlZmluYW1pZW50byBkZWwgbW9kZWxvIGV4cG9uZW5jaWFsIGRlIGNyZWNpbWllbnRvLCBkZXNjcml0byBwb3IgbGEgZnVuY2nDs24gc2lnbW9pZGVhLCBkZSB1bmEgbWFnbml0dWQgYXNvY2lhZGEgY29uIHVuIGNvbmp1bnRvICRDJC4NCg0KUGFyYSBmYWNpbGl0YXIgbGFzIGludGVycHJldGFjaW9uZXMgc2UgZW50aWVuZGUgcXVlIGxhIGZ1bmNpw7NuIGRlIGVubGFjZSAkXHBpKHgpJCBwcm92aWVuZSBkZSB1bmEgcmF6w7NuIGRlIHByb2JhYmlsaWRhZGVzIChjb25vY2lkYSBlbiBpZGlvbWEgaW5nbMOpcyBjb21vIE9ERFMgcmF0aW8gKE9SKSksIHF1ZSBhIHN1IHZleiBlcyBlbCBhcmd1bWVudG8gZGUgdW4gbG9nYXJpdG1vOiAkXGxvZ1xsZWZ0KFxmcmFje1xwaSh4KX17MS1ccGkoeCl9XHJpZ2h0KSQsIGFzw60sIHNlIG1vZGVsYSBsYSBwcm9iYWJpbGlkYWQgZGUgcXVlIGxhIHZhcmlhYmxlIGRlIHJlc3B1ZXN0YSBwZXJ0ZW5lemNhIGFsIG5pdmVsIGRlIHJlZmVyZW5jaWEgJDEkIGVuIGZ1bmNpw7NuIGRlbCB2YWxvciBkZSBsb3MgcHJlZGljdG9yZXMuIENvbXBsZW1lbnRhcmlhbWVudGUsIGxhIHRyYW5zZm9ybWFjacOzbiBkZSBwcm9iYWJpbGlkYWRlcyBhIHJhem9uZXMgZGUgcHJvYmFiaWxpZGFkIGVzIGNvbnNlcnZhIGxhIG1vbm90b25pY2lkYWQgZGUgc2VudGlkb3MuIEFkZW3DoXMsIGxhIHRyYW5zZm9ybWFjacOzbiBjb252aWVydGUgZWwgaW50ZXJ2YWxvIGRlIHByb2JhYmlsaWRhZCAkWzAsMV0kIGEgJCgtXGluZnR5LFxpbmZ0eSkkLiBMYXMgcHJvcGllZGFkZXMgcXVlIHNlIGRhbiBlbnRyZSBsYXMgcHJvYmFiaWxpZGFkZXMgY29tcGxlbWVudGFyaWFzIGRlIMOpeGl0byB5IGZyYWNhc28sIHN1cyByYXpvbmVzIHkgbGEgZnVuY2nDs24gZGUgZW5sYWNlIGxvZ2l0IHNvbjoNCg0KfHx8fA0KOi06fDotOnw6LTp8DQokcCjDqXhpdG8pPXAoZnJhY2FzbykkfCRPUj0xJHwkTG9naXRcbGVmdChPUlxyaWdodCk9MCQNCiRwKMOpeGl0byk8cChmcmFjYXNvKSR8JE9SPDEkfCRMb2dpdFxsZWZ0KE9SXHJpZ2h0KTwwJA0KJHAow6l4aXRvKT5wKGZyYWNhc28pJHwkT1I+MSR8JExvZ2l0XGxlZnQoT1JccmlnaHQpPjAkDQp8fHx8DQoNClNlIGVudGllbmRlIHF1ZSBsYSB0cmFuc2Zvcm1hY2nDs24gJExvZ2l0JCBjYXJlY2UgZGUgc2VudGlkbyBwYXJhIGxhIGNlcnRlemEgZGVsIMOpeGl0byBvIGRlbCBmcmFjYXNvLg0KDQojIyMjIDMuMy4xLiBQbGFudGVhbWllbnRvIGRlbCBQcm9ibGVtYQ0KQ29uIGJhc2UgZW4gZWwgY29uanVudG8gZGUgZGF0b3MgZGVzY3JpdG8gZW4gbGEgc2VjY2nDs24gKioyKiogc2UgZm9ybXVsYXLDoSB1biBtb2RlbG8gZGUgcmVncmVzacOzbiBsb2fDrXN0aWNhIHNpbXBsZSBwYXJhIGVzdHVkaWFyIGxhIHJlbGFjacOzbiBsb2fDrXN0aWNhIHN1cHVlc3RhIGVudHJlIGxhcyB2YXJhaWJsZXMgZGVmaW5pZGFzIHBvciBsb3MgY2FtcG9zOiAqKkNoYW5jZSBvZiBBZG1pdCoqICh2YXJpYWJsZSBpbmRlcGVuZGllbnRlKSB5ICoqUmVzZWFyY2gqKiAodmFyaWFibGUgZGVwZW5kaWVudGUpLCBjb24gYmFzZSBlbiB1bmEgZGlzdHJpYnVjacOzbiBiaW5vbWlhbCB5IGxhIGZ1bmNpw7NuIGRlIGVubGFjZSAkTG9naXQkLg0KDQojIyMjIDMuMy4yLiBEZXNhcnJvbGxvIGRlbCBBbsOhbGlzaXMNCkVsIGVzdHVkaW8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIGhhIHNpZG8gcHJvY2VzYWRvIGNvbiBgciBSLnZlcnNpb24uc3RyaW5nYCBtZWRpYWRvIHBvciBSU3R1ZGlvIDIwMjIuMDcuMiBCdWlsZCA1NzYgZW4gdW5hIHBsYXRhZm9ybWEgeDg2XzY0LXc2NC1taW5ndzMyLg0KDQojIyMjIyAzLjMuMi4xLiBSZXN1bWVuIGVzdGFkw61zdGljbyBkZSBsYXMgdmFyaWFibGVzIGRlIGVzdHVkaW8uIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvIGRlIGxhIHZhcmlhYmxlIGluZGVwZW5kaWVudGUgKipDaGFuY2Ugb2YgQWRtaXQqKiwgc3UgYm94cGxvdCBlIGhpc3RvZ3JhbWEuIERlIGxhIHZhcmlhYmxlIGRlcGVuZGllbnRlICoqUmVzZWFyY2gqKg0Kc2UgbW9zdHJhcsOhIHN1IGRpYWdyYW1hIGRlIGJhcnJhcywgYXPDrSBjb21vIHN1IG1lZGlhIHkgbWVkaWFuYS4gQWRlbcOhcywgc2UgZXhoaWJpcsOhIHVuIERpYWdyYW1hIGRlIENhamFzIGNvbmp1bnRvIGVudHJlIGFxdWVsbGFzLg0KDQpDb24gYmFzZSBlbiBsYSBwZXN0YcOxYSAqKlJlc3VtZW4geSBCb3hwbG90IGRlIENoYW5jZSBvZiBBZG1pdCoqIHNlIHB1ZWRlIGNvbWVudGFyIHF1ZSBsYSB2YXJpYWJsZSAqKkNoYW5jZSBvZiBBZG1pdCoqLCBjb21vIHNlIGhpem8gZW4gbGEgc2VjY2nDs24gMy4xLjIuMS4sIHByZXNlbnRhIGFzaW1ldHLDrWEgZGUgc2VzZ28gbmVnYXRpdm8gY29uIHJhbmdvIGludGVyY3VhcnTDrWxpY28gZXN0cmVjaG8gZGUgZGlzcGVyc2nDs24gaW1wZXJjZXB0aWJsZS4gQWRlbcOhcywgdW4gZGF0byBzZSB2aXN1YWxpemEgY29tbyBvdXRsaWVyLiBBc8OtLCBwdWVkZSBkZWNpcnNlIHF1ZSBsYSB2YXJpYWJsZSByZWdpc3RyYSB2YWxvcmVzIGFsdG9zIGVuIHJlbGFjacOzbiBjb24gc3UgaW50ZXJ2YWxvIGRlIG1lZGljacOzbi4gTG8gZXhwdWVzdG8gdGFtYmnDqW4gZXMgY29uc3RhdGFibGUgYSB0cmF2w6lzIGRlIGxhIHBlc3Rhw7FhICoqSGlzdG9ncmFtYSBkZSBDaGFuY2Ugb2YgQWRtaXQqKi4NCg0KQXNpbWlzbW8sIHNlZ8O6biBsYSBwZXN0YcOxYSAqKlJlc3VtZW4geSBEaWFncmFtYSBkZSBCYXJyYXMgZGUgUmVzZWFyY2gqKiwgbGEgdmFyaWFibGUgY3VhbGl0YXRpdmE6Om5vbWluYWwgKipSZXNlYXJjaCoqIG11ZXN0cmEgcHJvcG9yY2lvbmFsaWRhZCBtYXlvciBwYXJhIGxvcyBjYXNvcyBmYXZvcmFibGVzIDEsIHF1ZSBwYXJhIGxvcyBjYXNvcyBkZXNmYXZvcmFibGVzIDA6ICQ1NC43NSQgJFwlJCB5ICQ0NS4yNSQgJFwlJCwgcmVzcGVjdGl2YW1lbnRlLg0KDQpDb21wbGVtZW50YXJpYW1lbnRlLCBsYSBwZXN0YcOxYSAqKlJlc3VtZW4geSBEaWFncmFtYSBkZSBDYWphcyBDb25qdW50byoqIG11ZXN0cmEgcXVlIGxhcyBvYnNlcnZhY2lvbmVzIHNvbiBjb25zaXN0ZW50ZXMgY29uIGVsIGNvbnRleHRvIGRlbCBwcm9ibGVtYTsgZXMgZGVjaXIsIHBhcmEgbG9zIGNhc29zIGZhdm9yYWJsZXMgZGUgKipSZXNlYXJjaCoqIGxvcyByZXN1bHRhZG9zIGRlICoqQ2hhbmNlIG9mIEFkbWl0Kiogc29uIG1heW9yZXMsIGVuIGNvbXBhcmFjacOzbiBjb24gbG9zIGNhc29zIGRlc2Zhdm9yYWJsZXMuIEFkZW3DoXMsIGFtYm9zIGNhc29zOiBsb3MgZmF2b3JhYmxlcyB5IGxvcyBkZXNmYXZvcmFibGVzLCBtdWVzdHJhbiBzZXNnbyBuZWdhdGl2bywgYXVucXVlIGVzIG3DoXMgbm90b3JpbyBwYXJhIGxvcyBjYXNvcyBmYXZvcmFibGUuIFRhbWJpw6luLCBlbiBlbCByYW5nbyBpbnRlcmN1YXJ0w61saWNvIHNlIHZpc3VhbGl6YW4gZGlzcGVyc2lvbmVzIG9wdWVzdGFzIGVudHJlIGxvcyBjYXNvcyBkZXNmYXZvcmFibGVzLCBoYWNpYSBsYSBtaXRhZCBpbmZlcmlvciBkZSBsb3MgZGF0b3MsIHkgbG9zIGNhc29zIGZhdm9yYWJsZXMsIGhhY2lhIGxhIG1pdGFkIHN1cGVyaW9yLiBBc2ltaXNtbywgbG9zIGF0w61waWNvcywgZW4gYW1ib3MgY2Fzb3MsIHNlIHByZXNlbnRhbiBlbiBsb3MgZXh0cmVtb3MgaW5mZXJpb3JlcyBkZSBsYXMgZGlzdHJpYnVjaW9uZXMsIGVzIGRlY2lyLCByZXN1bHRhcm9uIG3DoXMgZXh0cmHDsW9zIGxvcyB2YWxvcmVzIGJham9zLg0KDQojIyMjIyMgUmVzdW1lbiB5IEJveHBsb3QgZGUgQ2hhbmNlIG9mIEFkbWl0DQpgYGB7ciByZXN1bWVuX0NoYW5jZV9fb2ZfX0FkbWl0LCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkoQWRtaXNzaW9uX0RhdGFzZXQkQ2hhbmNlX29mX0FkbWl0KQ0KYm94cGxvdChBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQsIG1haW4gPSAiRGlhZ3JhbWEgZGUgQ2FqYSBkZSBDaGFuY2Ugb2YgQWRtaXQiLCBjb2wgPSBjKCJvcmFuZ2UiKSkNCmBgYA0KDQojIyMjIyMgSGlzdG9ncmFtYSBkZSBDaGFuY2Ugb2YgQWRtaXQNCmBgYHtyIGhpc3RvZ3JhbWFfQ2hhbmNlX29mX0FkbWl0LCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkoQWRtaXNzaW9uX0RhdGFzZXQkQ2hhbmNlX29mX0FkbWl0KQ0KaGlzdChBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQsIG1haW4gPSAiSGlzdG9ncmFtYSBkZSBDaGFuY2Ugb2YgQWRtaXQiLCBjb2wgPSBjKCJnb2xkIikpDQpgYGANCg0KIyMjIyMjIFJlc3VtZW4geSBEaWFncmFtYSBkZSBCYXJyYXMgZGUgUmVzZWFyY2gNCmBgYHtyIHJlc3VtZW5fUmVzZWFyY2gsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KdGFibGUoQWRtaXNzaW9uX0RhdGFzZXQkUmVzZWFyY2gpDQpwcm9wLnRhYmxlKHRhYmxlKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoKSkNCmJhcnBsb3QodGFibGUoQWRtaXNzaW9uX0RhdGFzZXQkUmVzZWFyY2gpKQ0KYGBgDQoNCiMjIyMjIyBSZXN1bWVuIHkgRGlhZ3JhbWEgZGUgQ2FqYXMgQ29uanVudG8NCmBgYHtyIGJveHBsb3RfQ29uanVudG9fQ2hhbmNlLW9mLUFkbWl0X1Jlc2VhcmNoLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnRhcHBseShBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQsIEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoLCBtZWFuKQ0KdGFwcGx5KEFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdCwgQWRtaXNzaW9uX0RhdGFzZXQkUmVzZWFyY2gsIG1lZGlhbikNCmJveHBsb3QoQWRtaXNzaW9uX0RhdGFzZXQkQ2hhbmNlX29mX0FkbWl0fkFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoLCBtYWluID0gIkJveHBsb3QgQ29uanVudG86IENoYW5jZSBvZiBBZG1pdCAtIFJlc2VhcmNoIiwgY29sID0gYygib3JhbmdlIiwgImdvbGQiKSkNCmBgYA0KDQojIyMjIyAzLjMuMi4yLiBGb3JtdWxhY2nDs24gZGVsIG1vZGVsbyBkZSBSTG9nUyBlbnRyZSBsYXMgdmFyaWFibGVzIGRlIGVzdHVkaW8uIHsudGFic2V0IC50YWJzZXQtcGlsbHN9DQpMYSBuYXZlZ2FjacOzbiBhIHRyYXbDqXMgZGUgbGFzIHBlc3Rhw7FhcyBtdWVzdHJhIGxvcyBjb2VmaWNpZW50ZXMgZGVsIG1vZGVsbyBSTG9nUyB5IHN1IHJlc3VtZW4gZXN0YWTDrXN0aWNvLiBTZSBtZW5jaW9uYSBkZSBudWV2byBxdWUgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcyBzb246ICoqQ2hhbmNlIG9mIEFkbWl0KiogKHZhcmlhYmxlIGluZGVwZW5kaWVudGUpIHkgKipSZXNlYXJjaCoqICh2YXJpYWJsZSBkZXBlbmRpZW50ZSkuDQoNCkxhIHBlc3Rhw7FhICoqQ29lZmljaWVudGVzIGRlbCBNb2RlbG8gUkxvZ1MqKiBwZXJtaXRlIGVzdGFibGVjZXIgcXVlIGVsIG1vZGVsbyBSTG9nUyByZWxhY2lvbmEgYSAkXHBpKHgpJCBjb24gJHgkIGEgdHJhdsOpcyBkZSBsYSBmdW5jacOzbiBkZSBlbmxhY2UgJExvZ2l0JCBkZSBsYSBzaWd1aWVudGUgbWFuZXJhOiQkXGZyYWN7XHBpKHgpfXsxLVxwaSh4KX09ZV57LTcsNjU4NzA5KzEwLDg4Njk1OVxjZG90IHh9XGhzcGFjZXsxMG1tfSgzMSkkJA0KDQpBc2ltaXNtbywgbGEgcGVzdGHDsWEgKipSZXN1bWVuIEVzdGFkw61zdGljbyBkZWwgTW9kZWxvIFJMb2dTKiogbXVlc3RyYSwgcGFyYSBlZmVjdG9zIGRlIGNvbXBhcmFjacOzbiwgbG9zIHJlc8O6bWVuZXMgZGVsIG1vZGVsbyBlc3R1ZGlhZG8geSBkZSB1bm8gYWx0ZXJuYXRpdm8gY29uIGJhc2UgZW4gbGEgdmFyaWFibGUgY3VhbGl0YXRpdmE6Om5vbWluYWwgKipHZW5kZXIqKi4gQ29uIGJhc2UgZW4gZWwgY3JpdGVyaW8gZGUgaW5mb3JtYWNpw7NuIGRlIEFrYWlrZSAoQUlDIHBvciBzdXMgc2lnbGFzIGVuIGluZ2zDqXMpLCBkZWwgY3VhbCBzZSBzYWJlIHF1ZSBlcyB1bmEgbWVkaWRhIGRlIGxhIGJvbmRhZCBkZSBhanVzdGUgZGUgdW4gbW9kZWxvIGVzdGFkw61zdGljbyBxdWUgZGVzY3JpYmUgbGEgcmVsYWNpw7NuIGVudHJlIGVsIHNlc2dvIHkgbGEgdmFyaWFuemEgZW4gbGEgZm9ybXVsYWNpw7NuIGRlbCBtb2RlbG8sIGVzIGRlY2lyLCBlbnRyZSBzdSBleGFjdGl0dWQgeSBjb21wbGVqaWRhZCwgc2UgdmVyaWZpY2EgcXVlIHJlc3VsdGEgdW4gbWVqb3IgbW9kZWxvIGRlIGxhIHZhcmlhYmxlICoqUmVzZWFyY2gqKiBxdWUgZGUgbGEgdmFyaWFibGUgKipHZW5kZXIqKiwgcG9ycXVlOiAkQUlDX1I9NDEyLjYwPDUzNC4wOT1BSUNfRyQuIFRhbWJpw6luLCBwYXJhIGFwb3lhciBxdWUgZWwgbW9kZWxvIGJhc2FkbyBlbiBsYSB2YXJpYWJsZSAqKlJlc2VhcmNoKiogZXMgbWVqb3IgcXVlIGFxdcOpbCBiYXNhZG8gZW4gKipHZW5kZXIqKiwgZWwgY29jaWVudGUgZW50cmUgbGEgZGVzdmlhY2nDs24gbnVsYSAoTnVsbCBEZXZpYW5jZSkgeSBsYSBkZXN2aWFjacOzbiByZXNpZHVhbCAoUmVzaWR1YWwgRGV2aWFuY2UpLCBvYnNlcnZhYmxlIGVuIGxhIHBlc3Rhw7FhIFJlc3VtZW4gRXN0YWTDrXN0aWNvIGRlbCBNb2RlbG8gUkxvc2dTLCBlcyBtYXlvciBlbiBlbCBtb2RlbG8gcHJvcHVlc3RvIHF1ZSBlbiBlbCBkZSBjb21wYXJhY2nDs24uDQoNCiMjIyMjIyBDb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyBSTG9nUw0KYGBge3IgY29lZmljaWVudGVzX1JlZ3Jlc2lvbl9Mb2dpc3RpY2FfU2ltcGxlLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCm1vZGVsb19STG9nX1NpbXBsZSA9IGdsbShBZG1pc3Npb25fRGF0YXNldCRSZXNlYXJjaH5BZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQsIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkYXRhLmZyYW1lKEFkbWlzc2lvbl9EYXRhc2V0JFJlc2VhcmNoLCBBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQpKQ0KY29lZihtb2RlbG9fUkxvZ19TaW1wbGUpDQpgYGANCiMjIyMjIyBSZXN1bWVuIEVzdGFkw61zdGljbyBkZWwgTW9kZWxvIFJMb2dTDQpgYGB7ciByZXN1bWVuX1JlZ3Jlc2lvbl9Mb2dpc3RpY2FfU2ltcGxlLCBmaWcuYWxpZ24gPSAnY2VudGVyJ30NCnN1bW1hcnkobW9kZWxvX1JMb2dfU2ltcGxlKQ0KbW9kZWxvX1JMb2dfU2ltcGxlX1MgPSBnbG0oQWRtaXNzaW9uX0RhdGFzZXQkR2VuZGVyfkFkbWlzc2lvbl9EYXRhc2V0JENoYW5jZV9vZl9BZG1pdCwgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGRhdGEuZnJhbWUoQWRtaXNzaW9uX0RhdGFzZXQkR2VuZGVyLCBBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQpKQ0Kc3VtbWFyeShtb2RlbG9fUkxvZ19TaW1wbGVfUykNCmBgYA0KDQojIyMjIyAzLjMuMi4zLiBBbsOhbGlzaXMgZGVsIG1vZGVsbyBSTG9nUy4gey50YWJzZXQgLnRhYnNldC1waWxsc30NClNlIG1vc3RyYXLDoW4sIGEgdHJhdsOpcyBkZSBwZXN0YcOxYXMsIGxvcyByZXN1bHRhZG9zIGRlIGFsZ3VuYXMgcHJlZGljY2lvbmVzIG9idGVuaWRhcyBhIHRyYXbDqXMgZGVsIG1vZGVsbyBSTG9nUyBwYXJhIGlkZW50aWZpY2FyIGVuIHN1cyByZXNwdWVzdGFzIGxhIGNvcnJlc3BvbmRlbmNpYSBkZSBzZW50aWRvIGVuIGxhcyByYXpvbmVzIGRlIHByb2JhYmlsaWRhZGVzIE9ERFMgYSBmYXZvciBvIGVuIGNvbnRyYSBkZWwgZXZlbnRvIGNvbnNpZGVyYWRvOiAkXGZyYWN7XHBpfXsxLVxwaX0kIHkgJFxmcmFjezEtXHBpfXtccGl9JCwgcmVzcGVjdGl2YW1lbnRlLiBTZSBtZW5jaW9uYSBkZSBudWV2byBxdWUgbGFzIHZhcmlhYmxlcyBkZSBpbnRlcsOpcyBzb246ICoqQ2hhbmNlIG9mIEFkbWl0KiogKHZhcmlhYmxlIGluZGVwZW5kaWVudGUpIHkgKipSZXNlYXJjaCoqICh2YXJpYWJsZSBkZXBlbmRpZW50ZSkuDQoNCkxhIHBlc3Rhw7FhICoqVmFyaWFibGUgUHJlZGljdG9yYSBpZ3VhbCBhIENlcm8qKiBwbGFudGVhIGRvcyBzaXR1YWNpb25lcyBpbnRlcnByZXRhdGl2YXMuIExhIHByaW1lcmEsIHBlcm1pdGUgY29tcHJlbmRlciBxdWUgZWwgY29lZmljaWVudGUgZGVsIGZhY3RvciBlbiBlbCBjdWFsIGVzdMOhIHByZXNlbnRlIGxhIHZhcmFpYmxlIHByZWRpY3RvcmEsIGVzdGltYSB1bmEgcHJvYmFiaWxpZGFkIGRlIGNhc28gZmF2b3JhYmxlIGNlcmNhbmEgYSBjZXJvIGVuIGVsIG9yZGVuIGRlIGxhIGRpZXptaWzDqXNpbWEuIExhIHNlZ3VuZGEsIGFjYXJyZWEgdW5hIGludGVycHJldGFjacOzbiBtw6FzIGRlbGljYWRhOiBjb21vIGxhIHZhcmlhYmxlICoqQ2hhbmNlIG9mIEFkbWl0Kiogc2UgbWlkZSBlbiBlbCBpbnRlcnZhbG8gJFswLDFdJCBjb24gZG9zIGNpZnJhcyBzaWduaWZpY2F0aXZhcyB5IGRvcyBkZWNpbWFsZXMgZGUgcHJlY2lzacOzbiwgdW5hIHVuaWRhZCBkZSBtZWRpZGEgcmF6b25hYmxlIGVuIGVsbGEgc2Vyw61hIHVuYSBjZW50w6lzaW1hLCBwb3IgZWplbXBsbzogcGFzYXIgZGUgJDAuNjIkIGEgJDAuNjMkIGltcGxpY2EgaW5jcmVtZW50YXIgZW4gdW5hIHVuaWRhZCBkZSBtZWRpZGEgYSAkMC42MiQuIEFzw60sIHNlIGVudGllbmRlIHF1ZSBlbCBjb2NpZW50ZSBkZSBwcm9iYWJpbGlkYWRlcyBlbiByZWxhY2nDs24gY29uIGxhIHZhcmlhYmxlIHByZWRpY3RvcmEgZW4gZWwgbW9kZWxvIFJMb2dTIHJlZmxlamUgdW4gaW5jcmVtZW50byBhY3VtdWxhZG8gZGUgJFxhcHByb3ggNTM0NzQuNCQgdmVjZXMgZGVzZGUgJDAkIGhhc3RhICQxJCwgY29uIGluY3JlbWVudG9zIGRlICQwLjAxJC4NCg0KQ29uIGJhc2UgZW4gbG8gYW50ZXJpb3IsIGEgdHJhdsOpcyBkZSBsYSBwZXN0YcOxYSAqKlByb2JhYmlsaWRhZGVzIEVzdGltYWRhcyoqIHNlIHB1ZWRlIGFwcmVjaWFyIGVudHJlIGxvcyByZWdpc3Ryb3MgJDE5JCB5ICQyMCQgdW4gZGVsdGEgZGUgY2FtYmlvIGFic29sdXRvIGlndWFsIGEgJDAuMDIyNzk1JCAoZXF1aXZhbGVudGUgYSB1biBpbmNyZW1lbnRvIHJlbGF0aXZvICRcYXBwcm94IDcuOTQkICRcJSQpIGFsIGluY3JlbWVudGFyc2UgbGEgdmFyaWFibGUgcHJlZGljdG9yYSBlbiB1bmEgdW5pZGFkIGNvbW8gc2UgZGVmaW5pw7MgZW4gZWwgcMOhcnJhZm8gYW50ZXJpb3IuDQoNClBvciDDumx0aW1vLCBlbCBncsOhZmljbyBkZSBjdXJ2YSBsb2fDrXN0aWNhLCBlbiBsYSBwZXN0YcOxYSBHcsOhZmljYSBkZWwgTW9kZWxvIFJMb2dTLCBwZXJtaXRlIHZpc3VhbG1lbnRlIGNvbXByZW5kZXIgZWwgY29tcG9ydGFtaWVudG8gZGUgbGFzIHZhcmlhYmxlcyBpbnZvbHVjcmFkYXMgZW4gZWwgbW9kZWxvIHByb3B1ZXN0bzsgZXMgZGVjaXIsIGxvcyBjYXNvcyBmYXZvcmFibGVzIGVuIHJlbGFjacOzbiBjb24gbGEgdmFyaWFibGUgKipSZXNlYXJjaCoqIGxvZ3JhbiBzdXBlcmFyIGxhIGJhcnJlcmEgZGVsICQ5MCQkXCUkIGRlbCB2YWxvciBkZSAqKkNoYW5jZSBvZiBBZG1pdCoqLg0KDQojIyMjIyMgVmFyaWFibGUgUHJlZGljdG9yYSBpZ3VhbCBhIENlcm8NCmBgYHtyIHZhcmlhYmxlX1ByZWRpY3RvcmFfQ2VybywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpjb2VmKG1vZGVsb19STG9nX1NpbXBsZSkNCnJvdW5kKGV4cChjb2VmKG1vZGVsb19STG9nX1NpbXBsZSkpLDYpDQpgYGANCiMjIyMjIyBQcm9iYWJpbGlkYWRlcyBFc3RpbWFkYXMNCmBgYHtyIHByb2JhYmlsaWRhZGVzX0VzdGltYWRhcywgZmlnLmFsaWduID0gJ2NlbnRlcid9DQpwcmVkaWN0KG1vZGVsb19STG9nX1NpbXBsZSwgZGF0YS5mcmFtZShzZXEoMSwgNDAwKSksIHR5cGUgPSAicmVzcG9uc2UiKQ0KYGBgDQojIyMjIyMgR3LDoWZpY2EgZGVsIE1vZGVsbyBSTG9nUw0KYGBge3IgZ3JhZmljYV9Nb2RlbG9fUkxvZ1MsIGZpZy5hbGlnbiA9ICdjZW50ZXInfQ0KcmVzZWFyY2ggPC0gQWRtaXNzaW9uX0RhdGFzZXQkUmVzZWFyY2gNCmNoYW5jZV9vZl9hZG1pdCA8LSBBZG1pc3Npb25fRGF0YXNldCRDaGFuY2Vfb2ZfQWRtaXQNCmRhdGFQbG90IDwtIGRhdGEuZnJhbWUoY2hhbmNlX29mX2FkbWl0LCByZXNlYXJjaCkNCnBsb3QocmVzZWFyY2h+Y2hhbmNlX29mX2FkbWl0LCBkYXRhID0gZGF0YVBsb3QsIG1haW4gPSAiTW9kZWxvIFJMb2dTOiBDaGFuY2Ugb2YgQWRtaXQgLSBSZXNlYXJjaCIsIHhsYWIgPSAiQ2hhbmNlIG9mIEFkbWl0IiwgeWxhYiA9ICJSZXNlYXJjaCA9IDAgfCBSZXNlYXJjaCA9IDEiLCBjb2wgPSAiZ29sZCIsIHBjaCA9ICJJIikNCmN1cnZlKHByZWRpY3QoZ2xtKHJlc2VhcmNofmNoYW5jZV9vZl9hZG1pdCwgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGRhdGFQbG90KSwgZGF0YS5mcmFtZShjaGFuY2Vfb2ZfYWRtaXQgPSB4KSwgdHlwZSA9ICJyZXNwb25zZSIpLCBjb2wgPSAib3JhbmdlIiwgbHdkID0gMywgYWRkID0gVFJVRSkNCmBgYA0KDQojIyAqKkNvbmNsdXNpb25lcyoqDQpDb21wbGVtZW50YXJpYW1lbnRlIGEgbG9zIGFuw6FsaXNpcyBxdWUgZnVlcm9uIGV4cHVlc3RvcyBlbiBsYXMgc2VjY2lvbmVzIGRlIGVzdHVkaW8gZGUgY2FkYSBtb2RlbG8gdHJhdGFkbyBlbiBlc3RlIHRyYWJham8gZXMgaW1wb3J0YW50ZSBoYWNlciB1bmEgbWVuY2nDs24gZ2xvYmFsIHNvYnJlIGVsIHByb2JsZW1hIGNvbnNpZGVyYWRvIGEgbGEgbHV6IGRlIHRvZG8gbG8gb2J0ZW5pZG86DQoNCk9wdGFyIHBvciB1bmEgcGxhemEgcGFyYSBpbmdyZXNhciBjb21vIGVzdHVkaWFudGUgZXh0cmFuamVybyBhIHVuYSB1bml2ZXJzaWRhZCBub3J0ZWFtZXJpY2FuYSByZXN1bHRhIGRlIGVsZXZhZG8gZ3JhZG8gZGUgY29tcGV0aWNpw7NuLCBwZXJvIHBhcmEgbG8gY3VhbCBlcyBtdXkgcG9jbyBzaWduaWZpY2F0aXZvIGVsIHNleG8sIGxhIGNhdGVnb3LDrWEgZGUgbGEgdW5pdmVyc2lkYWQgeSBlbCBwcm9ww7NzaXRvIHF1ZSBlbCBhc3BpcmFudGUgZXNwZXJhIGN1bXBsaXIgYWwgZGVzZWFyIGhhY2VyIGVzdHVkaW9zIHN1cGVyaW9yZXMuIFNpbiBlbWFicmdvLCBsYXMgdmFyaWFibGVzIGRlIHRyYWJham8gdXNhZGFzIGVuIGVzdGUgZXN0dWRpbyBzb2xvIGV4cGxpY2FuLCBlbiBjb25qdW50bywgdW4gcG9jbyBtw6FzIGRlbCAkODAkICRcJSQgZGUgbGEgdmFyaWFiaWxpZGFkIGRlIGxhIHZhcmlhYmxlIG9iamV0aXZvLCBsbyBzdWZpZW50ZSBwYXJhIHRvbWFyIGRlY2lzaW9uZXMgc2lnbmlmaWNhdGl2YW1lbnRlIGFudGljaXBhZGFzIHBhcmEgcXVlIHVuIGVzdHVkaWFudGUgY29uIHByb3DDs3NpdG8gc2VwYSBxdcOpIHJlZ2lzdHJvcyBkZWJlIGN1bHRpdmFyIHBhcmEgc3UgZnV0dXJvIGFjY2VzbyBhIGxhIHVuaXZlcnNpZGFkLCBiYWpvIGVsIGNvbnRleHRvIHByZXNlbnRhZG8sIGNsYXJvIGVzdMOhLiBTaW4gZW1iYXJnbywgZWwgJDIwJCAkXCUkIHJlc3RhbnRlIGRlIHZhcmlhYmlsaWRhZCBxdWVkYSBzdWpldG8gYSBlc3BlY3VsYWNpw7NuLCBjYXNpIGNvbiBpbmNlcnRpZHVtYnJlLCB5IGVzdG8gcmVzdWx0YSBpbnRlcmVzYW50ZSBkZSBlc3R1ZGlhci4NCg0KUG9yIMO6bHRpbW8sIGVzIGltcG9ydGFudGUgcmVzYWx0YXIgZWwgYXNwZWN0byB0w6ljbmljbyByZWxhY2lvbmFkbyBjb24gZWwgcHJvY2VzYW1pZW50byBlc3RhZMOtc3RpY28gaGVjaG8gZW4gZXN0ZSBlc3R1ZGlvIGEgbml2ZWwgZGUgcm9idXN0ZXosIGVmaWNpZW5jaWEgZSBpbnRlZ3JhY2nDs24gcXVlIFIsIFJTdHVkaW8geSBSTWFya2Rvd24gb2ZyZWNlbiBhbCB1c3VhcmlvIHBhcmEgcXVlIGVzdGUgc2UgcHVlZGEgZW5mb2NhciBlbiDDqWwgc2luIHBhc2FyIG1heW9yZXMgaW5jb252ZW5pZW50ZXMgY29uIGVsIHNvcG9ydGUgZG9jdW1lbnRhbCBwYXJhIHByZXNlbnRhcmxvLg0KDQojIyAqKlJlZmVyZW5jaWFzKioNCg==