5.1 Introducción

La intersección de dos o más eventos es frecuentemente de interés para un experimentador. Por ejemplo, un jugador de black-jack está interesado en el evento de sacar un as y una “ figura” de una baraja de 52 cartas. Un biólogo que observa el número de animales que sobreviven de una camada se preocupa por la intersección de estos eventos:

A: la camada contiene \(n\) animales. B: sobreviven y animales.

Del mismo modo, observar la estatura y peso de una persona representa la intersección de un par específico de eventos asociado con medidas de estatura-peso.

Lo que es más importante para expertos en estadística son las intersecciones que se presentan en el curso de tomar muestras. Suponga que \(Y_1, Y_2, . . . , Y_n\) denota los resultados de \(n\) intentos sucesivos de un experimento. Por ejemplo, esta secuencia podría representar los pesos de \(n\) personas o las medidas de \(n\) características físicas para una sola persona. Un conjunto específico de resultados o mediciones muestrales puede ser expresado en términos de la intersección de los \(n\) eventos (\(Y_1 = y_1), (Y_2 = y_2), . . . , (Y_n = y_n)\), que denotaremos como \((Y_1 =y_1,Y_2 =y_2,...,Y_n =y_n)\) o bien,de un modo más compacto,como \((y_1,y_2,...,y_n)\).El cálculo de la probabilidad de esta intersección es esencial para hacer inferencias acerca de la población de la cual se tomó la muestra y es una razón importante para estudiar distribuciones de probabilidad multivariantes.

5.2 Distribuciones de probabilidad bivariantes y multivariantes

Se pueden definir muchas variables aleatorias sobre el mismo espacio muestral. Por ejemplo, considere el experimento de lanzar un par de dados. El espacio muestral contiene 36 puntos muestrales, correspondientes a las \(mn = (6)(6) = 36\) formas en las que pueden aparecer números en las caras de los dados. Cualquiera de las siguientes variables aleatorias podría estar definida sobre el espacio muestral y podría ser de interés para el experimentador:

\(Y_1\): el número de puntos que aparecen en el dado 1.

\(Y_2\): el número de puntos que aparecen en el dado 2.

\(Y_3\): la suma del número de puntos en los dados.

\(Y_4\): el producto del número de puntos que aparecen en los dados.

Los 36 puntos muestrales asociados con el experimento tienen la misma probabilidad y corresponden a los 36 eventos numéricos \((y_1, y_2)\). Así, lanzar un par de números 1 es el evento sencillo (1, 1). Lanzar un 2 en el dado 1 y un 3 en el dado 2 es el evento sencillo (2, 3). Como todos los pares \((y_1, y_2)\) ocurren con la misma frecuencia relativa, asignamos una probabilidad \(1/36\) a cada punto muestral. Para este ejemplo sencillo la intersección \((y_1, y_2)\) contiene a lo sumo un punto muestral. En consecuencia, la función de probabilidad bivariante es

\(p(y_1,y_2)=P(Y_1 =y_1,Y_2 =y_2)=1/36,\text{ }y_1 =1,2,..., 6,y_2 =1,2,..., 6\).

En la Figura 5.1 se muestra una gráfica de la función de probabilidad bivariante para el experimento de lanzar dados. Observe que una probabilidad diferente de cero se asigna a un punto \((y_1,y_2)\) del plano si y sólo si \(y_1 =1, 2,...,6\) y \(y_2 =1, 2,...,6\).Entonces,a los 36 puntos del plano se les asignan exactamente probabilidades diferentes de cero. Además, las probabilidades se asignan en tal forma que la suma de las probabilidades diferentes de cero es igual a 1. En la Figura 5.1 los puntos a los que se asignan probabilidades diferentes de cero están representados en el plano \((y_1, y_2)\), mientras que las probabilidades asociadas con estos puntos están dadas por las longitudes de las rectas que aparecen arriba de ellos. La Figura 5.1 puede verse como histograma teórico de frecuencia relativa en tres dimensiones para los pares de observaciones \((y_1, y_2)\). Al igual que en el caso discreto de una sola variable, el histograma teórico da un modelo para el histograma muestral que se obtendría si el experimento de lanzar dados se repitiera un gran número de veces.


Definición 5.1

Sean \(Y_1\) y \(Y_2\) variables aleatorias discretas. La función de probabilidad conjunta (o bivariante) para \(Y_1\) y \(Y_2\) está dada por \(p(y_1,y_2)=P(Y_1 =y_1,Y_2 =y_2), −\infty<y_1 <\infty,−\infty<y_2 <\infty\)


En el caso de la variable única que estudiamos en el Capítulo 3 vimos que la función de probabilidad para una variable aleatoria discreta Y asigna probabilidades diferentes de cero a un número infinito o contable de valores distintos de Y, en forma tal que la suma de las probabilidades es igual a 1. Del mismo modo, en el caso bivariante la función de probabilidad conjunta \(p(y_1, y_2)\) asigna probabilidades diferentes de cero a sólo un número infinito o contable de pares de valores \((y_1, y_2)\). Además, las probabilidades diferentes de cero deben sumar 1.


Teorema 5.1

Si \(Y_1\) y \(Y_2\) son variables aleatorias discretas con función de probabilidad conjunta \(p(y_1, y_2)\), entonces

  1. \(p(y_1, y_2) ≥ 0\) para toda \(y_1, y_2\).

  2. \(\sum_{y_1, y_2} p(y_1, y_2) = 1\), donde la suma es para todos los valores \((y_1, y_2)\) a los que se asignan probabilidades diferentes de cero.


Al igual que en el caso discreto univariante, la función de probabilidad conjunta para variables aleatorias discretas a veces se denomina función de masa de probabilidad conjunta porque especifica la probabilidad (masa) asociada con cada uno de los posibles pares de va- lores para las variables aleatorias. Una vez que la función de probabilidad conjunta se haya determinado para variables aleatorias discretas \(Y_1\) y \(Y_2\), calcular las probabilidades conjuntasen donde aparecen \(Y_1\) y \(Y_2\) es fácil. Para el experimento de lanzar dados, P\((2 ≤ Y_1 ≤ 3, 1 ≤ Y_2 ≤ 2)\) es

\(P(2≤Y_1 ≤3,1≤Y_2 ≤2)=p(2,1)+p(2,2)+p(3,1)+p(3,2) = 4/ 36 = 1/ 9.\)


Ejemplo 5.1

Un supermercado local tiene tres cajas. Dos clientes llegan a las cajas en momentos diferentes cuando las cajas no atienden a otros clientes. Cada cliente escoge una caja de manera aleatoria, independientemente del otro. Denote con \(Y_1\) el número de clientes que escogen la caja 1 y con \(Y_2\) el número que selecciona la caja 2. Encuentre la función de probabilidad conjunta de \(Y_1\) y \(Y_2\).

Solución

Podríamos proceder en muchas formas. La más directa es considerar el espacio muestral asociado con el experimento. Denotemos con el par \({i, j}\) el evento sencillo de que el primer cliente escogió la caja \(i\) y el segundo cliente escogió la caja \(j\), donde \(i, j = 1, 2 y 3\). Usando la regla \(mn\), el espacio muestral está formado por \(3 × 3 = 9\) puntos muestrales. De acuerdo con las suposiciones dadas antes, cada punto muestral es igualmente probable y tiene probabilidad 1/9. El espacio muestral asociado con el experimento es

\(S = [{1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}, {3, 1}, {3, 2}, {3, 3}]\).

Observe que el punto muestral \({1, 1}\) es el único correspondiente a \((Y_1 = 2, Y_2 = 0)\) y por tanto \(P(Y_1=2,Y_2=0)=1/9\).Del mismo modo,\(P(Y_1 =1,Y_2 =1)=P({1,2}o{2,1})=2/9\). La Tabla 5.1 contiene las probabilidades asociadas con cada posible par de valores para \(Y_1\) y \(Y_2\), es decir, la función de probabilidad conjunta para \(Y_1\) y \(Y_2\). Como siempre, los resultados del Teorema 5.1 se cumplen para este ejemplo.

\(y_1\) \(y_1\) \(y_1\)
\(y_2\) 0 1 2
0 1/9 2/9 1/9
1 2/9 2/9 0
2 1/9 0 0

Al igual que en el caso de variables aleatorias univariantes, la distinción entre variables aleatorias continuas conjuntas y discretas conjuntas puede ser caracterizado en términos de sus funciones de distribución (conjuntas).


Definicion 5.2

Para cualesquiera variables aleatorias \(Y_1\) y \(Y_2\), la función de distribución (bivariante) conjunta \(F(y_1, y_2)\) es \(F(y_1,y_2)=P(Y_1 ≤y_1,Y_2 ≤y_2), −\infty<y_1 <\infty,−\infty<y_2 <\infty\).


Para dos variables discretas \(Y_1\) y \(Y_2\), \(F(y_1, y_2)\) está dada por

\(F(y_1, y_2) = \sum_{t_1≤y_1}\sum_{t_2≤y_2}p(t_1,t_2).\)

Para el experimento de lanzar un dado,

\(F(2, 3) = P(Y_1 ≤ 2, Y_2 ≤ 3)= p(1, 1)+p(1, 2)+p(1, 3)+p(2, 1)+p(2, 2)+p(2, 3).\)

Como \(p(y_1, y_2) = 1/ 36\) para todos los pares de valores de \(y_1\) y \(y_2\) en consideración, \(F(2, 3) = 6/36 = 1/6\).

Ejemplo_Definicion_5.2 = (1/36)+(1/36)+(1/36)+(1/36)+(1/36)+(1/36)
print(Ejemplo_Definicion_5.2)
[1] 0.1666667

Ejemplo 5.2

Considere las variables aleatorias \(Y_1\) y \(Y_2\) del Ejemplo 5.1. Encuentre \(F(–1, 2), F(1.5, 2)\) y \(F(5, 7)\).

Solucion

Usando los resultados de la Tabla 5.1 vemos que

\(F(−1, 2)=P(Y_1 ≤−1,Y_2 ≤2)=P(Ø)=0.\)

Además

\(F(1.5, 2) = P(Y_1 ≤1.5, Y_2 ≤2)\) \(=p(0, 0)+p(0, 1)+p(0, 2)+p(1, 0)+p(1, 1)+p(1, 2)=8/9.\)

De manera similar,

\(F(5, 7) = P(Y_1 ≤5, Y_2 ≤7) =1.\)

Observeque \(F(y_1,y_2)=1\) para toda \(y_1,y_2\) tal que min{\({y_1,y_2}\)}\(≥2\).También, \(F(y_1,y_2)=0\) si mín{\({y_1, y_2}\)}\(<0\).


Se dice que dos variables aleatorias son continuas conjuntas si su función de distribución conjunta \(F(y_1, y_2)\) es continua en ambos argumentos.


Definicion 5.3

Sean \(Y_1\) y \(Y_2\) variables aleatorias continuas con función de distribución conjunta \(F(y_1, y_2)\). Si existe una función no negativa \(f(y_1, y_2)\), tal que

\(F(y_1,y_2)=\int_{-\infty}^{y_1}\int_{-\infty}^{y_2}f(t_1,t_2)dt_2dt_1\)

para toda \(−\infty < y_1 <\infty,−\infty < y_2 <\infty\), entonces se dice que \(Y_1\) y \(Y_2\) son variables aleatorias continuas conjuntas. La función \(f(y_1, y_2)\) recibe el nombre de función de densidad de probabilidad conjunta.


Las funciones de distribución acumulativa bivariante satisfacen un conjunto de propiedades similares a las especificadas para funciones de distribución acumulativa univariante.


Teorema 5.2

Si \(Y_1\) y \(Y_2\) son variables aleatorias con función de distribución conjunta \(F(y_1, y_2)\), entonces 1. \(F(−\infty, −\infty) = F(−\infty, y_2) = F(y_1, −\infty) = 0.\) 2. \(F(\infty,\infty)=1.\) 3. Si \(y_1^∗ ≥y_1\) y \(y_2^∗ ≥y_2\),entonces

\(F(y_1^∗, y_2∗) − F(y_1^∗, y_2) − F(y_1, y_2^∗) + F(y_1, y_2) ≥ 0.\)


La parte 3 resulta de que

\(F(y_1^∗, y_2^∗) − F(y_1^∗, y_2) − F(y_1, y_2^∗) + F(y_1, y_2)\) \(=P(y_1 <Y_1 ≤y_1^∗,y_2 <Y_2 ≤y_2^∗)≥0.\)

Observe que \(F(\infty, \infty) ≡ \lim_{y_1\to\ \infty}\lim_{y_2\to\ \infty} F(y_1, y_2) = 1\) implica que la función de densidad conjunta \(f(y_1, y_2)\) debe ser tal que la integral de \(f(y_1, y_2)\) para todos los valores de \((y_1, y_2)\) es 1.


Teorema 5.3

Si \(Y_1\) y \(Y_2\) son variables aleatorias continuas conjuntas con una función de densidad conjunta dada por \(f(y_1, y_2)\), entonces

  1. \(f (y_1, y_2) ≥ 0\) para toda \(y_1, y_2\).
  2. \(\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}f(y_1,y_2)dy_1dy_2=1\)

Al igual que en el caso continuo univariante que se estudia en el Capítulo 4, la función de densidad conjunta puede ser interpretada de manera intuitiva como un modelo para el histograma de frecuencia relativa conjunta para \(Y_1\) y \(Y_2\).

Para el caso continuo univariante, las áreas bajo la densidad de probabilidad para un inter- valo corresponden a probabilidades. De igual manera, la función de densidad de probabilidad bivariante \(f(y_1, y_2)\) traza una superficie de densidad de probabilidad sobre el plano \((y_1, y_2)\). (Figura 5.2).

Los volúmenes bajo esta superficie representan probabilidades. Así, \(P(a1 ≤ Y_1 ≤ a2, b1 ≤ Y_2 ≤ b2)\) es el volumen sombreado que se ve en la Figura 5.2 y es igual a

\(\int_{b_1}^{b_2}\int_{a_1}^{a_2}f (y_1, y_2) dy_1 dy_2.\)


Ejemplo 5.3

Suponga que una partícula radiactiva se localiza aleatoriamente en un cuadrado con lados de longitud unitaria. Esto es, si se consideran dos regiones de igual área y dentro del cuadrado unitario es igualmente probable que la partícula se encuentre en cualquiera de las dos. Denote con \(Y_1\) y \(Y_2\) las coordenadas de la ubicación de la partícula. Un modelo razonable para el his- tograma de frecuencia relativa para \(Y_1\) y \(Y_2\) es la análoga bivariante de la función de densidad uniforme univariante:

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 1, & 0≤y_1≤1, 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

a Trace la superficie de densidad de probabilidad. b Encuentre \(F(.2, .4)\). c Encuentre \(P(.1 ≤ Y_1 ≤ .3, 0 ≤ Y_2 ≤ .5)\).

Solucion

  1. El trazo se muestra en la Figura 5.3.
  2. \(F(.2,.4)=\int_{-\infty}^{.4}\int_{-\infty}^{.2}f(y_1,y_2)dy_1dy\)\(=\int_{0}^{.4}\int_{0}^{.2}(1)dy_1dy_2\)\(=\int_{0}^{.4}\Big(y_1\Big|_{0}^{.2}\Big)dy_2=\int{0}^{.4}dy_2=.08.\)

La probabilidad \(F(.2, .4)\) corresponde al volumen bajo \(f(y_1, y_2)= 1\), que está sombreado en la Figura 5.3. Como lo indican consideraciones geométricas, la probabilidad deseada (volumen) es igual a .08, que obtuvimos mediante integración al principio de esta sección.

  1. \(P(.1≤Y_1≤.3,0≤Y_2≤5)=\int_{0}^{.5}\int_{.1}^{.3}f(y_1,y_2)dy_1dy_2=\int_{0}^{.5}\int_{.1}^{.3}1dy_1dy_2=.10\)

Esta probabilidad corresponde al volumen bajo la función de densidad \(f(y_1, y_2)= 1\) que está arriba de la región \(.1 ≤ y_1 ≤ .3\), \(0 ≤ y_2 ≤ .5\). Al igual que la solución del inciso b, la solución actual se puede obtener con el uso de conceptos de geometría elemental. La densidad o altura de la superficie es igual a 1 y por tanto la probabilidad deseada (volumen) es

\(P(.1≤Y_1 ≤.3,0≤Y_2 ≤.5)=(.2)(.5)(1)=.10.\)


En el siguiente ejemplo se ilustra un modelo bivariante ligeramente más complicado


Ejemplo 5.4

Se ha de almacenar gasolina en un enorme tanque una vez al principio de cada semana y luego se vende a clientes individuales. Denote con \(Y_1\) el nivel de gasolina (proporción) que alcanza el tanque después de surtirlo. Debido a suministros limitados, \(Y_1\) varía de una semana a otra. Denote con \(Y_2\) la proporción de la capacidad del tanque que se vende durante la semana. Como \(Y_1\) y \(Y_2\) son proporciones, estas dos variables toman valores entre 0 y 1. Además, la cantidad de gasolina vendida, \(y_2\), no puede ser mayor que la cantidad disponible, \(y_1\). Suponga que la función de densidad conjunta para \(Y_1\) y \(Y_2\) está dada por

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 3y_1 & 0≤y_1≤1, 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

En la Figura 5.4 se muestra una gráfica de esta función. Encuentre la probabilidad de que menos de la mitad del tanque tenga gasolina y más de un cuarto del tanque se venda.

Solución

Buscamos \(P(0 ≤ Y_1 ≤ .5, Y_2 > .25)\). Para cualquier variable aleatoria continua, la probabilidad de observar un valor en una región es el volumen bajo la función de densidad por arriba de la región de interés. La función de densidad \(f (y_1, y_2)\) es positiva sólo en la región triangular

grande del plano \((y_1, y_2)\) que se ve en la Figura 5.5. Estamos interesados sólo en valores de \(y_1\) y \(y_2\) tales que 0 ≤ y_1 ≤ .5 y \(y_2 > .25\). La intersección de esta región y la región donde la función de densidad es positiva está dada por el pequeño triángulo (sombreado) de la Figura 5.5. En consecuencia, la probabilidad que deseamos es el volumen bajo la función de densidad de la Figura 5.4 arriba de la región sombreada del plano \((y_1, y_2)\) que se ve en la Figura 5.5.

Entonces, tenemos

\(P(0≤Y_1≤.5,.25 ≤ Y_2)=\int_{1/4}^{1/2}\int_{1/4}^{y_1}3y_1dy_2dy_1\)

\(=\int_{1/4}^{1/2}3y_1\Big(y_2\Big|_{1/4}^{y_1}\Big)dy_1\) \(=\int_{1/4}^{1/2}3y_1(y_1-1/4)dy_1\) \(=[y_1^3-(3/8)y_1^2]\Big]_{1/4}^{1/2}\) \(=[(1/8)-(3/8)(1/4)]-[(1/64)-(3/8)(1/16)]\) \(=5/128\)


El cálculo de la probabilidad especificada en el Ejemplo 5.4 comprendió integrar la función de densidad conjunta para \(Y_1\) y \(Y_2\) sobre la región apropiada. La especificación de los límites de integración se hizo más fácil al trazar la región de integración en la Figura 5.5. Este método, trazando la región apropiada de integración, con frecuencia facilita establecer la integral apropiada.

Los métodos estudiados en esta sección se pueden usar para calcular la probabilidad de la intersección de dos eventos \((Y_1 = y_1, Y_2 = y_2)\). De igual modo podemos definir una función de probabilidad (o función de densidad de probabilidad) para la intersección de \(n\) eventos \((Y_1 = y_1, Y_2 = y_2, . . . , Y_n = y_n)\). La función de probabilidad conjunta correspondiente al caso discreto está dada por

\(p(y_1, y_2,..., y_n) = P(Y_1 = y_1, Y_2 = y_2,..., Y_n = y_n).\)

La función de densidad conjunta de \(Y_1, Y_2, . . . , Y_n\) está dada por \(f(y_1, y_2, . . . , y_n)\). Al igual que en el caso bivariante, estas funciones dan modelos para las distribuciones de frecuencia relativa conjunta de las poblaciones de observaciones conjuntas \((y_1, y_2, . . . , y_n)\) para el caso discreto y el caso continuo, respectivamente. En el caso continuo,

\(P(Y_1≤y_1, Y_2≤y_2,...,Y_n≤y_n) = F(y_1,...,y_n)\)

\(=\int_{-\infty}^{y_1}\int_{-\infty}^{y_2}\dots \int_{-\infty}^{y_n}f(t_1,t_2,...,t_n)dt_n...dt_1\)

para todo conjunto de números reales \((y_1, y_2, . . . , y_n)\). Las funciones de distribución multiva- riantes definidas por esta igualdad satisfacen propiedades semejantes a las especificadas para el caso bivariante.

5.3 Distribuciones de probabilidad marginal y condicional

Recuerde que los valores distintos tomados por una variable aleatoria discreta representan even- tos mutuamente excluyentes. De manera análoga, para todos los distintos pares de valores \(y_1\), \(y_2\), los eventos bivariantes \((Y_1 = y_1, Y_2 = y_2)\), representados por \((y_1, y_2)\), son eventos mutuamente excluyentes. Se deduce que el evento univariante \((Y_1 = y_1)\) es la unión de eventos bivariantes del tipo \((Y_1 = y_1, Y_2 = y_2)\), con la unión tomada para todos los posibles valores de \(y_2\).

Por ejemplo, reconsidere el experimento de tirar un dado de la Sección 5.2, donde

Entonces

\(P(Y_1 = 1) = p(1, 1) + p(1, 2) + p(1, 3) + . . .+p(1, 6)\)

\(= 1/36 + 1/36 + 1/36 + . . .+1/36 = 6/36 = 1/6\)

\(P(Y_1 = 2) = p(2, 1) + p(2, 2) + p(2, 3) + . . .+p(2, 6) = 1 6\)

.

.

.

\(P(Y_1 = 6) = p(6, 1) + p(6, 2) + p(6, 3) + . . .+p(6, 6) = 1/6.\)

Expresadas en notación de sumatoria, las probabilidades acerca de la variable \(Y_1\) sola son

\(P(Y_1 = y_1)= p_1(y_1)=\sum_{y_2=1}^{6}p(y_1,y_2)\)

Del mismo modo, las probabilidades correspondientes a valores de la variable \(Y_2\) sola están dadas por

\(p_2(y_2) = P(Y_2=y_2) = \sum_{y_1=1}^{6}p(y_1,y_2)\)

La sumatoria en el caso discreto corresponde a la integración en el caso continuo, que nos lleva a la siguiente definición.


Definicion 5.4

a Sean \(Y_1\) y \(Y_2\) variables aleatorias discretas conjuntas con función de probabilidad \(p(y_1, y_2)\). Entonces las funciones de probabilidad marginal de \(Y_1\) y \(Y_2\), respectivamente, están dadas por

\(p1(y_1) =\sum_{\text{todos }y_2} p(y_1, y_2)\) y \(p2(y_2) =\sum_{\text{todos }y_1}p(y_1, y_2)\)

b Sean \(Y_1\) y \(Y_2\) variables aleatorias continuas conjuntas con función de densidad conjunta \(f(y_1, y_2)\). Entonces las funciones de densidad marginal de \(Y_1\) y \(Y_2\), respectivamente, están dadas por

\(f_1(y_1) = \int_{-\infty}^{infty} f (y_1, y_2)dy_2\) y \(f_2(y_2) =\int_{-\infty}^{\infty} f (y_1, y_2) dy_1.\)


El término marginal, como se aplica a las funciones de probabilidad univariante de \(Y_1\) y \(Y_2\), tiene signi cado intuitivo. Para hallar \(p_1(y_1)\), sumamos \(p(y1, y2)\) para todos los valores de \(y_2\) y por tanto acumulamos las probabilidades en el eje \(y_1\) (o margen). Los casos discretos y continuos se ilustran en los siguientes dos ejemplos.


Ejemplo 5.5

De un grupo de tres republicanos, dos demócratas y uno independiente se ha de seleccionar aleatoriamente un comité de dos personas. Denote con \(Y_1\) el número de republicanos y con \(Y_2\) el número de demócratas del comité. Encuentre la función de probabilidad conjunta de \(Y_1\) y \(Y_2\) y luego encuentre la función de probabilidad marginal de \(Y_1\).

Solución

Las probabilidades buscadas aquí son semejantes a las probabilidades hipergeométricas del Capítulo 3. Por ejemplo,

\(P(Y_1 =1, Y_2 = 1)= p(1,1)=\frac{\Big(_{1}^{3}\Big)\Big(_{1}^{2}\Big)\Big(_{1}^{0}\Big)}{\Big(_{2}^{6}\Big)}=\frac{3(2)}{15}=\frac{6}{15}\)

debido a que hay 15 puntos muestrales igualmente probables; para el evento en cuestión de- bemos seleccionar un republicano de entre los tres, un demócrata de entre los dos y cero inde- pendientes. Cálculos semejantes llevan a las otras probabilidades que se ven en la Tabla 5.2.

Para hallar \(p_1(y_1)\), debemos sumar los valores de \(Y_2\), como indica la Definición 5.4. Por tanto, estas probabilidades están dadas por los totales de columna de la Tabla 5.2. Esto es,

\(p1(0)=p(0, 0)+p(0, 1)+p(0, 2)=0+2/15+1/15=3/15\).

Del mismo modo,

\(p1(1) = 9/15\) y \(p_1(2) = 3/15.\)

En forma análoga, la función de probabilidad marginal de \(Y_2\) está dada por los totales de fila.

\(y_1\) \(y_1\) \(y_1\)
\(y_2\) 0 1 2 Total
0 0 3/15 3/15 6/15
1 2/15 6/15 0 8/15
2 1/5 0 0 1/15
Total 3/15 9/15 3/15 1

Ejemplo 5.6

Sea

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1, 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Grafique que \(f(y_1, y_2)\) y encuentre las funciones de densidad marginal para \(Y_1\) y \(Y_2\).

Solución

Geométricamente, \(f(y_1, y_2)\) describe una superficie en forma de cuña, como se ve en la Figura 5.6.

Antes de aplicar la definición 5.4 para hallar \(f_1(y_1)\) y $f2(y_2), usaremos la Figura 5.6 para visualizar el resultado. Si la probabilidad representada por la cuña estuviera acumulada en el eje \(y_1\) (acumulando probabilidad a lo largo de líneas paralelas al eje \(y_2\)), el resultado sería una

densidad de probabilidad triangular que se vería como el lado de la cuña de la Figura 5.6. Si la probabilidad estuviera acumulada a lo largo del eje \(y_2\) (acumulándose a lo largo de líneas paralelas al eje \(y_1\)), la densidad resultante sería uniforme. Confirmaremos estas soluciones visuales mediante la aplicación de la Definición 5.4. Entonces, si \(0 ≤ y_1 ≤ 1\),

\(f_1(y_1)=\int_{-\infty}^{\infty}f(y_1,y_2)dy_2 = \int_{0}^{1}2y_1dy_2 = 2y_1\Big(y_2\Big]_{0}^{1}\Big)\)

y si \(y_1<0\) o \(y_1>1\)

\(f_1(y_1)=\int_{-\infty}^{\infty}f(y_1,y_2)dy_2 = \int_{0}^{1}0dy_2=0\)

Entonces,

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Del mismo modo, si \(0≤y_2≤1\),

\(f_2(y_2)=\int_{-\infty}^{\infty}f(y_1,y_2)dy_1 = \int_{0}^{1}2y_1dy_1 = y_1^2\Big]_{0}^{1}=1\)

y si\(y_2<0\) o \(y_2>1\),

\(f_2(y_2)=\int_{-\infty}^{\infty}f(y_1,y_2)dy_1 = \int_{0}^{1}0dy_1=0\)

Resumiendo,

\(f_2(y_2)=\left\{ \begin{array}{cl}\ 1 ,& 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Las gráficas de \(f_1(y_1)\) y \(f_2(y_2)\) trazan densidades de probabilidad triangulares y uniformes, respectivamente, como es de esperarse.


Llevemos ahora nuestra atención a distribuciones condicionales, viendo primero al caso discreto.

La ley multiplicativa (Sección 2.8) da la probabilidad de la intersección \(A ∩ B\) como

\(P(A∩B) = P(A)P(B|A)\),

donde \(P(A)\) es la probabilidad incondicional de \(A\) y \(P(B|A)\) es la probabilidad de \(B\) dado que \(A\) ha ocurrido. Ahora considere la intersección de los dos eventos numéricos, \((Y_1 = y_1)\) y \((Y_2 = y_2)\), representada por el evento bivariante \((y_1, y_2)\). Se deduce directamente de la ley multiplicativa de probabilidad que la probabilidad bivariante para la intersección \((y_1, y_2)\) es

\(p(y_1, y_2) = p_1(y_1)p(y_2| y_1) = p_2(y_2)p(y_1|y_2).\)

Las probabilidades \(p_1(y_1)\) y \(p_2(y_2)\) están asociadas con las distribuciones de probabilidad univariantes para \(Y_1\) y \(Y_2\) individualmente (recuerde el Capítulo 3). Usando la interpretación de probabilidad condicional estudiada en el Capítulo 2, \(p(y_1|y_2)\) es la probabilidad de que la variable aleatoria \(Y_1\) sea igual a \(y_1\), dado que \(Y_2\) toma el valor \(y_2\).


Definicion 5.5

Si \(Y_1\) y \(Y_2\) son variables aleatorias discretas conjuntas con función de probabilidad con- junta \(p(y_1, y_2)\) y funciones de probabilidad marginal \(p_1(y_1)\) y \(p_2(y_2)\), respectivamente, entonces la función de probabilidad discreta condicional de \(Y_1\) dada \(Y_2\) es

\(p(y_1 |y_2)=P(Y_1 =y_1 |Y_2 =y_2)= \frac{P(Y_1 =y_1,Y_2 =y_2)}{P(Y_2 = y_2)} = \frac{p(y_1,y_2)}{p_2(y_2)}\) siempre que \(p_2(y_2) > 0\)


Entonces, \(P(Y_1 = 2|Y_2 = 3)\) es la probabilidad condicional de que \(Y_1 = 2\) dado que \(Y_2 = 3\). Una interpretación similar se puede unir a la probabilidad condicional \(p(y_2|y_1)\). Observe que \(p(y_1|y_2)\) es indefinida si \(p_2(y_2) = 0\).


Ejemplo 5.7

Consulte el Ejemplo 5.5 y encuentre la distribución condicional de \(Y_1\) dado que \(Y_2 = 1\). Esto es, dado que una de las dos personas del comité es demócrata, encuentre la distribución con- dicional para el número de republicanos seleccionados para el comité.

Solución

Las probabilidades conjuntas están dadas en la Tabla 5.2. Para hallar \(p(y_1|Y_2 = 1)\), nos concen- tramos en lafila correspondiente a \(Y_2 = 1\). Entonces

\(P(Y_1 =0| Y_2 =1) = \frac{p(0, 1)}{p_2(1)} = \frac{2/15}{8/15} = \frac{1}{4}\),

\(P(Y_1 = 1|Y_2 = 1) = \frac{p(1,1)}{p_2(1)}=\frac{6/15}{8/15}=\frac{3}{4}\)

\(P(Y_1 ≥2| Y_2 = 1)= \frac{p(2,1)}{p_2(1)} = \frac{0}{8/15}=0\)

En el comité seleccionado aleatoriamente, si una persona es demócrata (o, lo que es lo mismo, si \(Y_2 = 1\)), hay una alta probabilidad de que el otro sea republicano (o sea \(Y_1 = 1\)).

En el caso continuo podemos obtener una analogía apropiada de la función de probabilidad condicional \(p(y_1|y_2)\), pero no se obtiene en una forma tan sencilla. Si \(Y_1\) y \(Y_2\) son continuas, \(P(Y_1 = y_1|Y_2 = y_2)\) no se puede definir como en el caso discreto porque \((Y_1 = y_1)\) y \((Y_2 = y_2)\) son eventos con probabilidad cero. Las siguientes consideraciones, sin embargo, llevan a una definición útil y consistente para una función de densidad condicional.

Suponiendo que \(Y_1\) y \(Y_2\) son continuas conjuntas con función de densidad \(f(y_1, y_2)\), podríamos estar interesados en una probabilidad de la forma \(P(Y_1 ≤ y_1|Y_2 = y_2) = F(y_1|y_2)\), que, como función de \(y_1\) para una \(y_2\) fija, se denomina función de distribución condicional de \(Y_1\), dado que \(Y_1 = y_2\).


Definicion 5.6

Si \(Y_1\) y \(Y_2\) son variables aleatorias continuas conjuntas con función de densidad conjunta \(f(y_1, y_2)\), entonces la función de distribución condicional de \(Y_1\) dado que \(Y_2 = y_2\) es \(F(y_1|y_2) = P(Y_1 ≤ y_1|Y_2 = y_2)\)


Observe que \(F(y_1|y_2)\) es una función de \(y_1\) para un valor fijo de \(y_2\). Si pudiéramos tomar \(F(y_1|y_2)\), multiplicarlo por \(P(Y_2 = y_2)\) para cada posible valor de \(Y_2\) y sumar todas las probabilidades resultantes, podríamos obtener \(F(y_1)\). Esto no es posible por- que el número de valores para \(y_2\) es incontable y todas las probabilidades \(P(Y_2 = y_2)\) son cero. Pero podemos hacer algo análogo al multiplicarlo por \(f_2(y_2)\) y luego integrar para obtener

\(F(y_1) = \int_{-\infty}^\infty F(y_1|y_2)f_2(y_2)dy_2\)

La cantidad \(f_2(y_2)dy_2\) se puede considerar como la probabilidad aproximada de que \(Y_2\) tome un valor en un pequeño intervalo alrededor de \(y_2\), y la integral es una suma generalizada. Ahora, de consideraciones previas, sabemos que

\(F(y_1) = \int_{-\infty}^{y_1}f_1(t_1)dt_1 = \int_{-\infty}^{y_1}[\int_{-\infty}^{\infty} f(t_1,y_2)dy_2]dt_1\)

\(= \int_{-\infty}^{\infty} \int_{-\infty}^{y_1} f(t_1, y_2)dt_1dy_2\)

De estas dos expresiones para \(F(y_1)\), debemos tener

\(F(y_1|y_2)f_2(y_2) = \int_{-\infty}^{y_1}f(t_1,y_2)dt_1\)

o bien

\(F(y_1|y_2) = \int_{\infty}{y_1} \frac{f(t_1, y_2)}{f_2(y_2)}dt_1\)

Al integrando de esta expresión lo llamaremos función de densidad condicional de \(Y_1\) dado que \(Y_2 = y_2\), y lo denotaremos por \(f(y_1|y_2)\).


Definición 5.7

Sean \(Y_1\) y \(Y_2\) variables aleatorias continuas conjuntas con densidad conjunta \(f(y_1, y_2)\) y densidades marginales \(f_1(y_1)\) y \(f_2(y_2)\), respectivamente. Para cualquier \(y_2\) tal que \(f_2(y_2)\) > 0, la densidad condicional de \(Y_1\) dada \(Y_2 = y_2\) está dada por

\(f (y_1|y_2) = \frac{f (y_1, y_2)}{f_2(y_2)}\)

y, para cualquier \(y_1\) tal que \(f_1(y_1)> 0\), la densidad condicional de \(Y_2\) dada \(Y_1 = y_1\) está dada por \(f(y_2|y_1)= \frac{f(y_1,y_2)}{ f_1(y_1)}\)


Ejemplo 5.8

Una máquina automática expendedora de bebidas tiene una cantidad aleatoria \(Y_2\) de bebida en existencia al principio de un día determinado y dosi ca una cantidad aleatoria \(Y_1\) durante el día (con cantidades expresadas en galones). La máquina no se reabastece durante el día y, en consecuencia, \(Y_1 ≤ Y_2\). Se ha observado que \(Y_1\) y \(Y_2\) tienen una densidad conjunta dada por

\(f(y_1,y_2)=\left\{ \begin{array}{cl}1/2 & 0≤y_1≤y_2≤2\\ 0 & \text{en cualquier otro punto}\end{array}\right.\)

Esto es, los puntos \((y_1, y_2)\) están uniformemente distribuidos en el triángulo con las fronteras dadas. Encuentre la densidad condicional de \(Y_1\) dada \(Y_2 = y_2\). Evalúe la probabilidad de que se venda menos de 1/2 galón, dado que la máquina contiene 1.5 galones al empezar el día.

La densidad marginal de \(Y_2\) está dada por

\(f_2(y_2) =\int_{-\infty}^{\infty} f(y_1,y_2)dy_1\)

Entonces,

\(f_2(y_2) = \left\{\begin{array}{cl} \int_{0}^{y_2}(1/2)dy_1 = (1/2)y_2, & 0≤y_2 ≤2,\\ \int_{-\infty}^{\infty}0dy_1=0,& \text{en cualquier otro punto.}\end{array}\right.\)

Observe que \(f_2(y_2)\) > 0 si y sólo si \(0 < y_2 ≤ 2\). Entonces, para cualquier \(0 < y_2 ≤ 2\), usando la Definición 5.7,

\(f(y_1|y_2) = \frac{f(y_1,y_2)}{f_2(y_2)}=\frac{1/2}{(1/2)y_2}=\frac{1}{y_2},{0≤y_1 ≤y_2}\)

También, \(f(y_1|y_2)\) es indefinida si \(y_2 ≤ 0\) o \(y_2 > 2\). La probabilidad de interés es

\(P(Y_1 \leq 1/2| Y_2 = 1.5) = \int_{-\infty}^{1/2} f(y_1|y_2 = 1.5)dy_1 = \int_{0}^{1/2} \frac{1}{1.5}dy_1 = \frac{1/2}{1.5}=\frac{1}{3}\)

Si la máquina contiene 2 galones al empezar el día, entonces

\(P(Y_1 \leq 1/2| Y_2 = 2) \int_{0}^{1/2} \frac{1}{2}dy_1 = \frac{1}{4}\)

Por tanto, la probabilidad condicional de que \(Y_1 ≤ 1/2\) dado que \(Y_2 = y_2\) cambia de manera apreciable dependiendo de la selección particular de \(y_2\).

5.4 Variables aleatorias independientes

En el Ejemplo 5.8 vimos dos variables aleatorias dependientes, para las cuales las probabili- dades asociadas con \(Y_1\) dependían del valor observado de \(Y_2\). En el Ejercicio 5.24 (y algunos otros) éste no fue el caso: las probabilidades asociadas con \(Y_1\) eran iguales, cualquiera que fuera el valor observado de \(Y_2\). Ahora presentamos una definición formal de independencia de variables aleatorias.

Dos eventos A y B son independientes si \(P(A ∩ B) = P(A) × P(B)\). Cuando estudiemos variables aleatorias, si \(a < b\) y \(c < d\) es frecuente que nos interesemos en eventos del tipo \((a < Y_1 ≤ b) ∩ (c < Y_2 ≤ d)\). Por consistencia con la definición anterior de eventos independientes, si \(Y_1\) y \(Y_2\) son independientes, nos gustaría tener

\(P(a<Y_1 ≤b, c<Y_2 ≤d)=P(a<Y_1 ≤b)×P(c<Y_2 ≤d)\)

para cualquier elección de números reales \(a < b\) y \(c < d\). Esto es, si \(Y_1\) y \(Y_2\) son independientes, la probabilidad conjunta se puede escribir como el producto de las probabilidades marginales. Esta propiedad se satisface si \(Y_1\) y \(Y_2\) son independientes en el sentido detallado en la siguiente definición.


Definición 5.8

Sea \(Y_1\) que tiene una función de distribución \(F_1(y_1)\) y sea \(Y_2\) que tiene una función de distribución \(F_2(y_2)\), y \(F(y_1, y_2)\) es la función de distribución conjunta de \(Y_1\) y \(Y_2\). Entonces se dice que \(Y_1\) y \(Y_2\) son independientes si y sólo si

\(F(y_1, y_2) = F_1(y_1)F_2(y_2)\)

para todo par de números reales \((y_1, y_2)\). Si \(Y_1\) y \(Y_2\) no son independientes, se dice que son dependientes.


Por lo general es cómodo establecer la presencia o ausencia de independencia, por medio del resultado del siguiente teorema. Se omite la demostración; vea “Bibliografía y lecturas adicionales” al final del capítulo.


Teorema 5.4

Si \(Y_1\) y \(Y_2\) son variables aleatorias discretas con función de probabilidad conjunta \(p(y_1, y_2)\) y funciones de probabilidad marginal \(p_1(y_1)\) y \(p_2(y_2)\), respectivamente, entonces \(Y_1\) y \(Y_2\) son independientes si y sólo si

\(p(y_1, y_2) = p_1(y_1)p_2(y_2)\)

para todos los pares de números reales \((y_1, y_2)\).

Si \(Y_1\) y \(Y_2\) son variables aleatorias continuas con función de densidad conjunta \(f_1(y_1, y_2)\) y funciones de densidad marginal \(f_1(y_1)\) y \(f_2(y_2)\), respectivamente, entonces \(Y_1\) y \(Y_2\) son independientes si y sólo si \(f(y_1, y_2) = f_1(y_1) f_2(y_2)\)

para todos los pares de números reales \((y_1, y_2)\).


A continuación ilustramos el concepto de independencia con algunos ejemplos.


Ejemplo 5.9

Para el problema de tirar un dado de la Sección 5.2, demuestre que \(Y_1\) y \(Y_2\) son independientes.

Solución

En este problema a cada uno de los 36 puntos muestrales se le dio probabilidad 1/36. Considere, por ejemplo, el punto (1, 2). Sabemos que \(p(1, 2) = 1/ 36\). También, \(p_1(1) = P(Y_1 = 1) = 1/6\) y \(p_2(2) = P(Y_2 = 2) = 1/6\). Por tanto,

\(p(1, 2) = p_1(1) p_2(2).\)

Lo mismo es cierto para todos los demás valores de \(y_1\) y \(y_2\), de lo cual se deduce que \(Y_1\) y \(Y_2\) son independientes.


Ejemplo 5.10

Consulte el Ejemplo 5.5. ¿El número de republicanos en la muestra es independiente del número de demócratas? (¿Es \(Y_1\) independiente de \(Y_2\)?)

Solución

La independencia de variables aleatorias discretas requiere que \(p(y_1, y_2) = p_1(y_1) p_2(y_2)\) para toda selección \((y_1, y_2)\). Entonces, si esta igualdad es violada para cualquier par de valores \((y_1, y_2)\), las variables aleatorias son dependientes. Al observar la esquina superior izquierda de la Tabla 5.2, veremos que

\(P(0, 0) = 0.\)

Pero \(p_1(0) = 3/15\) y \(p_2(0) = 6/15\). En consecuencia, \(p(0, 0) ≠ p1(0) p2(0)\), de modo que \(Y_1\) y \(Y_2\) son dependientes.



Ejemplo 5.11

Sea

\(f(y_1,y_2)=\left\{ \begin{array}{cl}6y_1y_2^2, & 0≤y_1≤1,0≤y_2≤1,\\0, & \text{en cualquier otro punto}\end{array}\right.\)

Demuestre que \(Y_1\) y \(Y_2\) son independientes.

Solución

\(f(y_1,y_2)=\left\{ \begin{array}{cl}\int_{-\infty}^{\infty} f(y_1,y_2)dy_2=\int_{0}^{1}6y_1y_2^2dy_2=6y_1(\frac{y_2^3}{3}\Big|_0^1)=2y_1,, & 0≤y_1≤1,\\ \int_{-\infty}^{\infty}f(y_1,y_2)dy_2=\int_{-\infty}^{\infty}0dy_1 = 0, & \text{en cualquier otro punto}\end{array}\right.\)

Del mismo modo,

\(f(y_1,y_2)=\left\{ \begin{array}{cl}\int_{-\infty}^{\infty} f(y_1,y_2)dy_1=\int_{0}^{1}6y_1y_2^2dy_1=3y_2^2, & 0≤y_2≤1,\\ \int_{-\infty}^{\infty}f(y_1,y_2)dy_1=\int_{-\infty}^{\infty}0dy_1 = 0, & \text{en cualquier otro punto}\end{array}\right.\)

En consecuencia

\(f(y_1, y_2)= f_1(y_1)f_2(y_2)\)

para todos los números reales \((y_1, y_2)\) y, por tanto, \(Y_1\) y \(Y_2\) son independientes.



Ejemplo 5.12

Sea

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 2, & 0≤y_2≤y_1≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Demuestre que \(Y_1\) y \(Y_2\) son dependientes.

Solución

Vemos que \(f(y_1, y_2) = 2\) sobre la región sombreada que se ve en la Figura 5.7. Por tanto

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ \int_{0}^{y_1}2dy_2 = 2y_2 = 2y_2\Big|_0^{y_1}=2y_1, & 0≤y_1≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Del mismo modo,

\(f_2(y_2) =\left\{ \begin{array}{cl}\ \int_{y_2}^{1}2dy_1 = 2y_1\Big|_{y_2}^{1}=2(1-y_2), & 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Por tanto,

\(f (y_1, y_2) = f_1(y_1) f_2(y_2)\)

para algún par de números reales \((y_1, y_2)\) y, por tanto, \(Y_1\) y \(Y_2\) son dependientes.


Observará una diferencia distinta en los límites de integración empleados para hallar las funciones de densidad marginal obtenidas en los Ejemplos 5.11 y 5.12. Los límites de integración para \(y_2\), comprendidos en hallar la densidad marginal de \(Y_1\) en el Ejemplo 5.12, dependían de \(y_1\). En contraste, los límites de integración fueron constantes cuando determinamos las funciones de densidad marginal del Ejemplo 5.11. Si los límites de integración son constantes, el siguiente teorema proporciona una forma fácil de demostrar la independencia de dos variables aleatorias.


Teorema 5.5

Sean \(Y_1\) y \(Y_2\) que tienen una densidad conjunta \(f(y_1, y_2)\) que es positiva si y sólo si \(a ≤ y_1 ≤b\) y \(c≤y_2\)≤d, para constantes a,b,c y d; y \(f(y_1,y_2)=0\) en otro caso.Entonces \(Y_1\) y \(Y_2\) son variables aleatorias independientes si y sólo si

\(f(y_1, y_2) = g(y_1)h(y_2)\)

donde \(g(y_1)\) es una función no negativa de \(y_1\) solamente y \(h(y_2)\) es una función no negativa de \(y_2\) solamente.


La demostración de este teorema se omite. (Vea “Bibliografía y lecturas adicionales” al nal del capítulo.) El bene cio clave del resultado dado en el Teorema 5.5 es que en realidad no necesitamos obtener las densidades marginales. De hecho, las funciones \(g(y_1)\) y \(h(y_2)\) no necesitan ser funciones de densidad (aun cuando sean múltiplos constantes de las densidades marginales, deberíamos tomarnos la molestia de determinar éstas).


Ejemplo 5.13

Sean \(Y_1\) y \(Y_2\) que tienen una densidad conjunta dada por

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1, 0≤y_2≤1 ,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

¿\(Y_1\) y \(Y_2\) son variables independientes?

Solución

Observe que \(f(y_1,y_2)\) es positiva si y sólo si \(0≤y_1≤1\) y \(0 ≤y_2 ≤1\).Además, \(f(y_1,y_2)=g(y_1)h(y_2)\),

donde

\(g(y_1) =\left\{ \begin{array}{cl}\ y_1 & 0≤y_1≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

y

\(h(y_2) =\left\{ \begin{array}{cl}\ 2 & 0≤y_1≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Por tanto, \(Y_1\) y \(Y_2\) son variables aleatorias independientes. Observe que \(g(y_1)\) y \(h(y_2)\), como aquí se de nen, no son funciones de densidad, aun cuando \(2g(y_1)\) y \(h(y_2)/2\) sean densidades.


Ejemplo 5.14

Consulte el Ejemplo 5.4. ¿\(Y_1\), la cantidad en existencia, es independiente de \(Y_2\), la cantidad vendida?

Solución

Como la función de densidad es positiva si y sólo si \(0 ≤ y_2 ≤ y_1 ≤ 1\), no existen constantes a,b,c y d tal es que la densidad sea positiva en la región \(a≤y_1 ≤b,c≤y_2 ≤d\).Entonces,el Teorema 5.5 no se puede aplicar. No obstante, se puede demostrar que \(Y_1\) y \(Y_2\) son variables aleatorias dependientes porque la densidad conjunta no es el producto de las densidades marginales.


Las definiciones 5.8 fácilmente se pueden generalizar a \(n\) dimensiones. Suponga que tenemos \(n\) variables aleatorias, \(Y_1, . . . , Y_n\),donde \(Y_i\) tiene función de distribución \(F_i(y_i)\), para \(i = 1,2, ...,n\) ; y donde \(Y_1,Y_2,...,Y_n\) tienen función de distribución conjunta \(F(y_1,y_2, ...,y_n)\). Entonces \(Y_1, Y_2, . . . , Y_n\) son independientes si y sólo si

\(F(y_1, y_2,..., y_n) = F_1(y_1)··· F_n(y_n)\)

para todos los números reales \(y_1, y_2, . . . , y_n\), con las formas equivalentes obvias para los casos discretos y continuos.


5.5 El valor esperado de una función de variables aleatorias

Para justi car la siguiente definición sólo se necesita construir el equivalente multivariante del caso univariante.


Definición 5.9

Sea \(g(Y_1, Y_2, . . . , Y_k)\) una función de las variables aleatorias discretas, \(Y_1, Y_2, . . . , Y_k\), que tienen función de probabilidad \(p(y_1, y_2, . . . , y_k)\). Entonces el valor esperado de \(g(Y_1, Y_2, . . . , Y_k)\) es

\(E[g(Y_1,Y_2,...,Y_k)]= \sum_{\text{toda }y_k} \dots \sum_{\text{toda }y_2} \sum_{\text{toda }y_1} g(y_1,y_2, ..., y_k)p(y_1,y_2,...,y_k).\)

Si \(Y_1, Y_2, . . . , Y_k\) son variables aleatorias continuas con función de densidad conjunta \(f(y_1, y_2, . . . , y_k)\), entonces

\(E[g(Y_1,Y_2,...,Y_k)] = \int_{-\infty}^{\infty} \dots \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} g(y_1,y_2,...,y_k) \times f(y_1,y_2,...,y_k)dy_1dy_2...dy_k\)


Ejemplo 5.15

Considere que \(Y_1\) y \(Y_2\) tienen una densidad conjunta dada por

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1, 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Encuentre \(E(Y_1,Y_2)\).

Solución

De la Definición 5.9 obtenemos

\(E[g(Y_1,Y_2)] = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}y_1y_2f(y_1,y_2)dy_1dy_2=\int_{0}^{1}\int_{0}^{1}y_1y_2(2y_1)dy_1dy_2=\int_{0}^{1}y_2\Big(\frac{2y_1^3}{3}\Big|_{0}^{1}\Big)dy_2=\int_{0}^{1}\Big(\frac{2}{3}\Big)y_2dy_2 = \frac{2}{3}\frac{y_2^2}{2}\Big|_{0}^{1}=\frac{1}{3}.\)

Demostraremos que la Definición 5.9 es consistente con la Definición 4.5, en la que definimos el valor esperado de una variable aleatoria univariante. Considere dos variables aleatorias \(Y_1\) y \(Y_2\) con función de densidad \(f(y_1, y_2)\). Deseamos hallar el valor esperado de \(g(Y_1, Y_2) = Y_1\). De la Definición 5.9 tenemos

\(E(Y_1)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty} y_1f(y_1,y_2)dy_2dy_1=\int_{-\infty}^{\infty} y_1 \Big[\int_{-\infty}^{\infty}f(y_1,y_2)dy_2 \Big]dy_1.\)

La cantidad dentro de paréntesis rectangulares, por definición, es la función de densidad marginal para \(Y_1\). Por tanto, obtenemos

\(E(Y_1)=\int_{-\infty}^{\infty} y_1f_1(y_1)dy_1,\)

que está acorde con la Definición 4.5.


Ejemplo 5.16

Considere que \(Y_1\) y \(Y_2\) que tienen una densidad conjunta dada por

\(f(y_1,y_2) =\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1, 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Encuentre el valor esperado de \(Y_1\)

Solución

\(E(Y_1) = \int_{0}^{1}\int_{0}^{1} y_1(2y_1)dy_1dy_2=\int_{0}^{1} \Big(\frac{2y_1^3}{3}\Big|_{0}^{1}\Big)dy_2=\int_{0}^{1}\frac{1}{3}y_2\Big|_{0}^{1}=\frac{2}{3}\)

Consulte la Figura 5.6 y calcule el valor esperado de \(Y_1\). El valor \(E(Y_1) = 2/3\) parece ser bastante razonable.



Ejemplo 5.17

En la Figura 5.6 el valor medio de \(Y_2\) parece ser igual a .5. Con rmemos este cálculo visual. Encuentre \(E(Y_2)\).

Solución

\(E(Y_2) = \int_{0}^{1}\int_{0}^{1} y_2(2y_1)dy_1dy_2 = \int_{0}^{1}y_2\Big(\frac{2y_1^2}{2}\Big|_{0}^{1}\Big)dy_2=\int_{0}^{1}y_2dy_2=\frac{y_2^2}{2}\Big|_{0}{1} = \frac{1}{2}\)



Ejemplo 5.18

Sean Y_1 y Y_2 variables aleatorias con función de densidad

\(f(y_1, y_2)=\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1, 0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Encuentre \(V(Y_1)\)

Solución

La densidad marginal para \(Y_1\) obtenida en el Ejemplo 5.6 es

\(f(y_1)=\left\{ \begin{array}{cl}\ 2y_1 & 0≤y_1≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Entonces\(V(Y_1)=E (Y_1^2) −[E(Y_1)]^2\), y

\(E(Y_1^k)= \int_{-\infty}^{\infty}y_1^kf_1(y_1)dy_1 = \int_{0}^{1} y_1^k*(2y_1)dy_1 = \frac{2y_1^{k+2}}{k+2}\big|_{0}^{1} = \frac{2}{k+2}.\)

Si hacemos \(k = 1\) y \(k = 2\), se deduce que \(E(Y_1)\) y \(E(Y_1^2\) son 2/3 y 1/2, respectivamente. Entonces \(V(Y_1)=E(Y_2^1) −[E(Y_1)]^2 =1/2−(2/3)^2 =1/18\).



Ejemplo 5.19

Del proceso para producir una sustancia química industrial se obtiene un producto que contiene dos tipos de impurezas. Para una muestra específica proveniente de este proceso, denotemos con \(Y_1\) la proporción de impurezas en la muestra y con \(Y_2\) la proporción de impurezas tipo I entre todas las impurezas halladas. Suponga que la distribución conjunta de \(Y_1\) y \(Y_2\) puede ser modelada con la siguiente función de densidad de probabilidad:

\(f(y_1,y_2)=\left\{ \begin{array}{cl}\ 2(1-y_1) & 0≤y_1≤1,0≤y_2≤1,\\ 0, & \text{en cualquier otro punto}\end{array}\right.\)

Encuentre el valor esperado de la proporción de impurezas tipo I de la muestra.

Solución

Como \(Y_1\) es la proporción de impurezas en la muestra y \(Y_2\) es la proporción de impurezas tipo I entre las impurezas muestrales, se deduce que \(Y_1Y_2\) es la proporción de impurezas tipo I en toda la muestra. Entonces, buscamos hallar \(E(Y_1Y_2)\):

\(E(Y_1Y_2)= \int_{0}^{1}\int_{0}^{1} 2y_1y_2(1-y_1)dy_2dy_1 = 2 \int_{0}^{1}y_1(1-y_1(\frac{1}{2})dy_1=\int_{0}^{1}(y_1-y_1^2)dy_1=\Big(\frac{y_1^2}{2}-\frac{y_1^3}{3}\Big)\Big|_{0}^{1}= \frac{1}{2}-\frac{1}{3}=\frac{1}{6}\)

Por tanto, esperaríamos que 1/6 de la muestra estuviera formado por impurezas tipo I.


5.6 Teoremas especiales

Los teoremas que facilitan el cálculo del valor esperado de una constante, el valor esperado de una constante por una función de variables aleatorias y el valor esperado de la suma de funciones de variables aleatorias son semejantes a los del caso univariante.


Teorema 5.6

Sea c una constante. Entonces \(E(c) = c.\)


Teorema 5.7

Sea \(g(Y_1, Y_2)\) una función de las variables aleatorias \(Y_1\) y \(Y_2\) y sea \(c\) una constante. Entonces \(E[cg(Y_1, Y_2)] = cE[g(Y_1, Y_2)].\)


Teorema 5.8

Sean \(Y_1\) y \(Y_2\) variables aleatorias y \(g_1(Y_1, Y_2), g_2 (Y_1, Y_2), . . . , g_k(Y_1, Y_2)\) funciones de \(Y_1\) y \(Y_2\). Entonces

\(E[g_1(Y_1, Y_2) + g_2(Y_1, Y_2) + . . . +g_k(Y_1, Y_2)] = E[g_1(Y_1, Y_2)] + E[g_2(Y_1, Y_2)] + . . . + E[g_k(Y_1, Y_2)].\)

Las demostraciones de estos tres teoremas son análogas a los casos univariantes estudiados en los Capítulos 3 y 4.


Ejemplo 5.20

Consulte el Ejemplo 5.4. La variable aleatoria \(Y_1 − Y_2\) denota la cantidad proporcional de gasolina remanente al final de la semana. Encuentre \(E(Y_1 – Y_2)\).

Solución

Empleando el Teorema 5.8 con \(g_1(Y_1, Y_2) = Y_1\) y \(g(Y_1, Y_2) = –Y_2\), vemos que \(E(Y_1 − Y_2) = E(Y_1) + E(−Y_2)\).

Se aplica el Teorema 5.7, dando \(E(–Y_2) = –E(Y_2)\); por tanto, \(E(Y_1 − Y_2) = E(Y_1) − E(Y_2)\).

También,

\(E(Y_1) = \int_{0}^{1}\int_{0}^{y_1} y_1(3y_1)dy_2dy_1 = \int_{0}^{1} 3y_1^3dy_1 = \frac{3}{4}y_1^4\Big|_{0}^{1}= \frac{3}{4},\)

\(E(Y_2) = \int_{0}^{1}\int_{0}^{y_1} y_2(3y_1)dy_2dy_1 = \int_{0}^{1}3y_1\Big(\frac{y_2^2}{2}\Big|_{0}^{y_1}\Big)dy_1=\int_{0}^{1}\frac{3}{2}y_1^3dy_1= \frac{3}{8}y_1^4\Big|_{0}^{1}=\frac{3}{8}\)

Entonces,

\(E(Y_1 − Y_2) = (\frac{3}{4}) − (\frac{3}{8}) = \frac{3}{8}\)

de modo que esperaríamos que 3/8 del tanque esté lleno al final de las ventas de la semana.


Si las variables aleatorias motivo de estudio son independientes, en ocasiones podemos simpli car el trabajo necesario para hallar valores esperados. El siguiente teorema es muy útil en este sentido.


Teorema 5.9

Sean \(Y_1\) y \(Y_2\) variables aleatorias independientes y sean \(g(Y_1)\) y \(h(Y_2)\) funciones sólo de \(Y_1\) y \(Y_2\), respectivamente. Entonces \(E[g(Y_1)h(Y_2)] = E[g(Y_1)]E[h(Y_2)]\), siempre que existan los valores esperados

Demostración

Daremos la demostración del resultado para el caso continuo. Denotemos con \(f(y_1, y_2)\) la densidad conjunta de \(Y_1\) y \(Y_2\). El producto \(g(Y_1)h(Y_2)\) es una función de \(Y_1\) y \(Y_2.\) Entonces, por la Definición 5.9 y la suposición de que \(Y_1\) y \(Y_2\) son independientes,

\(E[g(Y_1)h(Y_2)] = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty}g(y_1)h(y_2)f(y_1,y_2)dy_2dy_1\) \(=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty}g(y_1)h(y_2)f_1(y_1)f_2(y_2)dy_2dy_1\)

\(=\int_{-\infty}^{\infty}g(y_1)f_1(y_1) \Big[\int_{-\infty}^{\infty}h(y_2)f_2(y_2)dy_2\Big]dy_1\)

\(=\int_{-\infty}^{\infty}g(y_1)f_1(y_1)E[h(Y_2)]dy_1\)

\(=E[h(Y_2)]\int_{-\infty}^{\infty}g(y_1)f_1(y_1)dy_1 = E[g(Y_1)]E[h(Y_2)]\)

La demostración para el caso discreto sigue un modo análogo.


5.7 Covarianza de dos variables aleatorias

Intuitivamente consideramos la dependencia de dos variables aleatorias \(Y_1\) y \(Y_2\) como un proceso en el que una de las variables, por ejemplo \(Y_1\), aumenta o disminuye cuando \(Y_2\) cambia. Concentraremos nuestra atención en dos medidas de dependencia: la covarianza entre dos variables aleatorias y su coeficiente de correlación. En la Figura 5.8(a) y (b), se muestran las gráficas de los valores observados de dos variables, \(Y_1\) y \(Y_2\), para muestras de \(n = 10\) unidades experimentales tomadas de cada una de las dos poblaciones. Si todos los puntos caen a lo largo de una recta, como indica la Figura 5.8(a), \(Y_1\) y \(Y_2\) son obviamente dependientes. En contraste, la Figura 5.8(b) indica poca o ninguna dependencia entre \(Y_1\) y \(Y_2\). Suponga que conocemos los valores de \(E(Y_1) = \mu_1\) y \(E(Y_2) = \mu_2\) y localizamos este punto en la gráfica de la Figura 5.8. Ahora localizamos un punto graficado, \((y_1, y_2)\), en la Figura 5.8(a) y medimos las desviaciones \((y_1 − \mu_1)\) y \((y_2 − \mu_2)\). Ambas desviaciones toman el mismo signo algebraico para cualquier punto, \((y_1, y_2)\), y su producto \((y_1 − \mu_1)(y_2 − \mu_2)\) es positivo. Los puntos a la derecha de \(\mu_1\) generan pares de desviaciones positivas; los puntos a la izquierda producen pares de desviaciones negativas; y el promedio del producto de las desviaciones \((y_1 − \mu_1)(y_2 − \mu_2)\) es grande y positivo. Si la relación lineal indicada en la Figura 5.8(a) se hubiera inclinado hacia abajo a la derecha, todos los pares de desviaciones correspondientes hubieran sido de signo contrario y el valor promedio de \((y_1 − \mu_1)(y_2 − \mu_2)\) hubiera sido un número negativo grande.

La situación que acabamos de describir no ocurre para la Figura 5.8(b), donde existe poca dependencia entre \(Y_1\) y \(Y_2\). Sus desviaciones correspondientes \((y_1 − \mu_1)\) y \((y_2 − \mu_2)\) tomarán el mismo signo algebraico para algunos puntos y signos opuestos para otros. Entonces, el producto \((y_1 − \mu_1)(y_2 − \mu_2)\) será positivo para algunos puntos, negativo para otros y promediará algún valor cercano a cero. Es evidente que el valor promedio de \((Y_1 − \mu_1)(Y_2 − \mu_2)\) proporciona una medida de la dependencia lineal entre \(Y_1\) y \(Y_2\). Esta cantidad, \(E[(Y_1 − \mu_1)(Y_2 − \mu_2)]\), se denomina covarianza de \(Y_1\) y \(Y_2\).


Definición 5.10

Si \(Y_1\) y \(Y_2\) son variables aleatorias con medias \(\mu_1\) y \(\mu_2\), respectivamente, la covarianza de \(Y_1\) y \(Y_2\) es \(Cov(Y_1, Y_2) = E [(Y_1 − \mu_1)(Y_2 − \mu_2)]\) .


Cuanto mayor sea el valor absoluto de la covarianza de \(Y_1\) y \(Y_2\), mayor será la dependencia lineal entre \(Y_1\) y \(Y_2\). Los valores positivos indican que \(Y_1\) aumenta cuando \(Y_2\) aumenta; los valores negativos indican que \(Y_1\) disminuye cuando \(Y_2\) aumenta. Un valor cero de la covarianza indica que las variables son no correlacionadas y que no hay dependencia lineal entre \(Y_1\) y \(Y_2\).

Desafortunadamente, es difícil utilizar la covarianza como medida absoluta de dependencia porque su valor depende de la escala de medición. En consecuencia, es difícil determinar a primera vista si una covarianza particular es grande o pequeña. Este problema se puede eli- minar al estandarizar su valor y usar el coeficiente de correlación, \(\rho\), una cantidad relacionada con la varianza y que se de ne como

\(\rho = \frac{Cov(Y_1-Y_2)}{\sigma_1 \sigma_2}\)

donde \(\sigma_1\) y \(\sigma_2\) son desviaciones estándar de \(Y_1\) y \(Y_2\), respectivamente. Se pueden hallar más exposiciones del coeficiente de correlación en la obra de Hogg, Craig y McKean (2005) y Myers (2000).

Una demostración del coeficiente de correlación \(\rho\) satisface la desigualdad \(–1 ≤ \rho ≤ 1\) está resumida en el Ejercicio 5.167.

El signo del coeficiente de correlación es igual al signo de la covarianza. Entonces, \(\rho > 0\) indica que \(Y_2\) aumenta a medida que \(Y_2\) aumenta y \(\rho = +1\) implica correlación perfecta, con todos los puntos cayendo en una recta con pendiente positiva. Un valor de \(\rho = 0\) implica cero covarianza y que no hay correlación. Un coe ciente negativo de correlación implica una disminución en \(Y_2\) cuando \(Y_1\) aumenta, y \(\rho= –1\) implica correlación perfecta, con todos los puntos cayendo en una recta con pendiente negativa. Una fórmula computacional conveniente para la covarianza se especifica en el siguiente teorema.


Teorema 5.10

Si \(Y_1\) y \(Y_2\) son variables aleatorias con medias \(\mu_1\) y \(\mu_2\), respectivamente, entonces

\(Cov(Y_1, Y_2) = E [(Y_1 − \mu_1)(Y_2 − \mu_2)] = E(Y_1Y_2) − E(Y_1)E(Y_2)\).

\(Cov(Y_1, Y_2) = E [(Y_1 − \mu_1)(Y_2 − \mu_2)]\) \(= E(Y_1Y_2 − \mu_1Y_2 − \mu_2Y_1 + \mu_1\mu_2).\)

Del Teorema 5.8, el valor esperado de una suma es igual a la suma de los valores espera- dos; y del Teorema 5.7, el valor esperado de una constante multiplicado por una función de variables aleatorias es la constante por el valor esperado. Entonces,

\(Cov(Y_1, Y_2) = E(Y_1Y_2) − \mu_1 E(Y_2) − \mu_2 E(Y_1) + \mu_1\mu_2\).

Como \(E(Y_1) = \mu_1\) y \(E(Y_2)= \mu_2\), se deduce que

\(Cov(Y_1, Y_2) = E(Y_1Y_2) − E(Y_1)E(Y_2) = E(Y_1Y_2) − \mu_1\mu_2.\)


Ejemplo 5.22

Consulte el Ejemplo 5.4. Encuentre la covarianza entre la cantidad en existencia \(Y_1\) y la cantidad de ventas \(Y_2\).

Solución

Recuerde que \(Y_1\) y \(Y_2\) tienen función de densidad conjunta dada por

\(f(y_1,y_2)=\left\{ \begin{array}{cl}3y_1 & 0≤y_2≤y_1≤1;\\ 0 & \text{en cualquier otro punto}\end{array}\right.\)

Entonces,

\(E(Y_1Y_2) = \int_{0}^{1}\int_{0}^{y_1} y_1y_2(3y_1)dy_2dy_1 = \int_{0}^{1} 3y_1^2\Big(\frac{y_2^2}{2}\Big|_{0}^{y_1}\Big)dy_1=\int_{0}^{1}\frac{3}{2}y_1^4dy_1 = \frac{3}{2}\Big(\frac{y_1^5}{5}\Big|_{0}^{1}\Big)=\frac{3}{10}.\)

Del Ejemplo 5.20, sabemos que \(E(Y_1) = 3/4\) y \(E(Y_2) = 3/8\). Entonces, usando el Teorema 5.10, obtenemos

\(Cov(Y_1, Y_2) = E(Y_1Y_2) − E(Y_1)E(Y_2) = (3/10) − (3/4)(3/8) = .30 − .28 = .02.\)

En este ejemplo, valores grandes de \(Y_2\) pueden presentarse sólo con valores grandes de \(Y_1\) y la densidad, \(f(y_1, y_2)\), es más grande para valores más grandes de \(Y_1\) (vea la Figura 5.4). Entonces, intuimos que la covarianza entre \(Y_1\) y \(Y_2\) debe ser positiva.


Ejemplo 5.23

Tengan \(Y_1\) y \(Y_2\) densidad conjunta dada por

\(f(y_1,y_2)=\left\{ \begin{array}{cl}2y_1 & 0≤y_1≤1, 0≤y_2≤1;\\ 0 & \text{en cualquier otro punto}\end{array}\right.\)

Encuentre la covarianza de \(Y_1\) y \(Y_2\).

Solución

Del Ejemplo 5.15, \(E(Y_1Y_2) = 1/3\). También, de los Ejemplos 5.16 y 5.17, \(\mu_1 = E(Y_1) = 2/3\) y \(\mu_2 = E(Y_2) = 1/2\), y \(Cov(Y_1, Y_2) = E(Y_1Y_2) − \mu_1\mu_2 = (1/3) − (2/3)(1/2) = 0\).


El Ejemplo 5.23 proporciona un caso específico del resultado general dado en el Teorema 5.11.


Teorema 5.11

Si Y_1 y Y_2 son variables aleatorias independientes, entonces

\(Cov(Y_1, Y_2) = 0.\)

Así, las variables aleatorias independientes deben ser no correlacionadas.

Demostración

El Teorema 5.10 establece que

\(Cov(Y_1, Y_2) = E(Y_1Y_2) −\mu_1\mu_2.\)

Como \(Y_1\) y \(Y_2\) son independientes, el Teorema 5.9 implica que

\(E(Y_1Y_2) = E(Y_1)E(Y_2) = \mu_1\mu_2\),

y el resultado deseado se deduce de inmediato.


Observe que las variables aleatorias \(Y_1\) y \(Y_2\) del Ejemplo 5.23 son independientes; en consecuencia, por el Teorema 5.11, su covarianza debe ser cero. El recíproco del Teorema 5.11 no es verdadero, como se ilustra en el ejemplo siguiente.


Ejemplo 5.24

Sean \(Y_1\) y \(Y_2\) variables aleatorias discretas con distribución de probabilidad conjunta como se ve en la Tabla 5.3. Demuestre que \(Y_1\) y \(Y_2\) son dependientes pero tienen covarianza cero.

Solución

El cálculo de probabilidades marginales da \(p_1(–1) = p_1(1) = 5/16 = p_2(–1) = p_2(1)\) y \(p_1(0) = 6/16 = p_2(0)\). El valor \(p(0, 0) = 0\) en la celda del centro se destaca. Obviamente,

\(y_1\) \(y_1\) \(y_1\)
\(y_2\) -1 0 +1
-1 1/16 3/16 1/16
0 3/16 0 3/16
+1 1/16 3/16 1/16

\(p(0, 0) ≠ p_1(0) p_2(0),\)

y esto es su ciente para demostrar que \(Y_1\) y \(Y_2\) son dependientes. Observando de nuevo las probabilidades marginales, vemos que \(E(Y_1) = E(Y_2) = 0\).

También,

\(E(Y_1Y_2)=\sum_{\text{toda }y_1}\sum_{\text{toda }y_2} y_1y_2p(y_1,y_2)\) \(=(-1)(-1)(1/16)+(-1)(0)(3/16)+(-1)(1)(1/16)\) \(+(0)(-1)(3/16)+(0)(0)(0)+(0)(1)(3/16)\) \((1)(-1)(1/16)+(1)(0)(3/16)+(1)(1)(1/16)\) \(=(1/16)-(1/16)-(1/16)+(1/16)=0\)

Entonces,

\(Cov(Y_1,Y_2)=E(Y_1Y_2)-E(Y_1)E(Y_2) = 0-0(0)=0\)

Este ejemplo demuestra que el recíproco del Teorema 5.11 no es verdadero. Si la covarian- za de dos variables aleatorias es cero, las variables no necesitan ser independientes.

LS0tCnRpdGxlOiAiRGlzdHJpYnVjaW9uZXMgZGUgcHJvYmFiaWxpZGFkIG11bHRpdmFyaWFudGVzIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAKLS0tCgojNS4xIEludHJvZHVjY2nDs24KTGEgaW50ZXJzZWNjacOzbiBkZSBkb3MgbyBtw6FzIGV2ZW50b3MgZXMgZnJlY3VlbnRlbWVudGUgZGUgaW50ZXLDqXMgcGFyYSB1biBleHBlcmltZW50YWRvci4gUG9yIGVqZW1wbG8sIHVuIGp1Z2Fkb3IgZGUgYmxhY2stamFjayBlc3TDoSBpbnRlcmVzYWRvIGVuIGVsIGV2ZW50byBkZSBzYWNhciB1biBhcyB5IHVuYSDigJwgZmlndXJh4oCdIGRlIHVuYSBiYXJhamEgZGUgNTIgY2FydGFzLiBVbiBiacOzbG9nbyBxdWUgb2JzZXJ2YSBlbCBuw7ptZXJvIGRlIGFuaW1hbGVzIHF1ZSBzb2JyZXZpdmVuIGRlIHVuYSBjYW1hZGEgc2UgcHJlb2N1cGEgcG9yIGxhIGludGVyc2VjY2nDs24gZGUgZXN0b3MgZXZlbnRvczoKCiBBOiBsYSBjYW1hZGEgY29udGllbmUgJG4kIGFuaW1hbGVzLiAKIEI6IHNvYnJldml2ZW4geSBhbmltYWxlcy4KCkRlbCBtaXNtbyBtb2RvLCBvYnNlcnZhciBsYSBlc3RhdHVyYSB5IHBlc28gZGUgdW5hIHBlcnNvbmEgcmVwcmVzZW50YSBsYSBpbnRlcnNlY2Npw7NuIGRlIHVuIHBhciBlc3BlY8OtZmljbyBkZSBldmVudG9zIGFzb2NpYWRvIGNvbiBtZWRpZGFzIGRlIGVzdGF0dXJhLXBlc28uCgpMbyBxdWUgZXMgbcOhcyBpbXBvcnRhbnRlIHBhcmEgZXhwZXJ0b3MgZW4gZXN0YWTDrXN0aWNhIHNvbiBsYXMgaW50ZXJzZWNjaW9uZXMgcXVlIHNlIHByZXNlbnRhbiBlbiBlbCBjdXJzbyBkZSB0b21hciBtdWVzdHJhcy4gU3Vwb25nYSBxdWUgJFlfMSwgWV8yLCAuIC4gLiAsIFlfbiQgZGVub3RhIGxvcyByZXN1bHRhZG9zIGRlICRuJCBpbnRlbnRvcyBzdWNlc2l2b3MgZGUgdW4gZXhwZXJpbWVudG8uIFBvciBlamVtcGxvLCBlc3RhIHNlY3VlbmNpYSBwb2Ryw61hIHJlcHJlc2VudGFyIGxvcyBwZXNvcyBkZSAkbiQgcGVyc29uYXMgbyBsYXMgbWVkaWRhcyBkZSAkbiQgY2FyYWN0ZXLDrXN0aWNhcyBmw61zaWNhcyBwYXJhIHVuYSBzb2xhIHBlcnNvbmEuIFVuIGNvbmp1bnRvIGVzcGVjw61maWNvIGRlIHJlc3VsdGFkb3MgbyBtZWRpY2lvbmVzIG11ZXN0cmFsZXMgcHVlZGUgc2VyIGV4cHJlc2FkbyBlbiB0w6lybWlub3MgZGUgbGEgaW50ZXJzZWNjacOzbiBkZSBsb3MgJG4kIGV2ZW50b3MgKCRZXzEgPSB5XzEpLCAoWV8yID0geV8yKSwgLiAuIC4gLCAoWV9uID0geV9uKSQsIHF1ZSBkZW5vdGFyZW1vcyBjb21vICQoWV8xID15XzEsWV8yID15XzIsLi4uLFlfbiA9eV9uKSQgbyBiaWVuLGRlIHVuIG1vZG8gbcOhcyBjb21wYWN0byxjb21vICQoeV8xLHlfMiwuLi4seV9uKSQuRWwgY8OhbGN1bG8gZGUgbGEgcHJvYmFiaWxpZGFkIGRlIGVzdGEgaW50ZXJzZWNjacOzbiBlcyBlc2VuY2lhbCBwYXJhIGhhY2VyIGluZmVyZW5jaWFzIGFjZXJjYSBkZSBsYSBwb2JsYWNpw7NuIGRlIGxhIGN1YWwgc2UgdG9tw7MgbGEgbXVlc3RyYSB5IGVzIHVuYSByYXrDs24gaW1wb3J0YW50ZSBwYXJhIGVzdHVkaWFyIGRpc3RyaWJ1Y2lvbmVzIGRlIHByb2JhYmlsaWRhZCBtdWx0aXZhcmlhbnRlcy4KCgojNS4yIERpc3RyaWJ1Y2lvbmVzIGRlIHByb2JhYmlsaWRhZCBiaXZhcmlhbnRlcyB5IG11bHRpdmFyaWFudGVzClNlIHB1ZWRlbiBkZWZpbmlyIG11Y2hhcyB2YXJpYWJsZXMgYWxlYXRvcmlhcyBzb2JyZSBlbCBtaXNtbyBlc3BhY2lvIG11ZXN0cmFsLiBQb3IgZWplbXBsbywgY29uc2lkZXJlIGVsIGV4cGVyaW1lbnRvIGRlIGxhbnphciB1biBwYXIgZGUgZGFkb3MuIEVsIGVzcGFjaW8gbXVlc3RyYWwgY29udGllbmUgMzYgcHVudG9zIG11ZXN0cmFsZXMsIGNvcnJlc3BvbmRpZW50ZXMgYSBsYXMgJG1uID0gKDYpKDYpID0gMzYkIGZvcm1hcyBlbiBsYXMgcXVlIHB1ZWRlbiBhcGFyZWNlciBuw7ptZXJvcyBlbiBsYXMgY2FyYXMgZGUgbG9zIGRhZG9zLiBDdWFscXVpZXJhIGRlIGxhcyBzaWd1aWVudGVzIHZhcmlhYmxlcyBhbGVhdG9yaWFzIHBvZHLDrWEgZXN0YXIgZGVmaW5pZGEgc29icmUgZWwgZXNwYWNpbyBtdWVzdHJhbCB5IHBvZHLDrWEgc2VyIGRlIGludGVyw6lzIHBhcmEgZWwgZXhwZXJpbWVudGFkb3I6CgokWV8xJDogZWwgbsO6bWVybyBkZSBwdW50b3MgcXVlIGFwYXJlY2VuIGVuIGVsIGRhZG8gMS4KCiRZXzIkOiBlbCBuw7ptZXJvIGRlIHB1bnRvcyBxdWUgYXBhcmVjZW4gZW4gZWwgZGFkbyAyLgoKJFlfMyQ6IGxhIHN1bWEgZGVsIG7Dum1lcm8gZGUgcHVudG9zIGVuIGxvcyBkYWRvcy4KCiRZXzQkOiBlbCBwcm9kdWN0byBkZWwgbsO6bWVybyBkZSBwdW50b3MgcXVlIGFwYXJlY2VuIGVuIGxvcyBkYWRvcy4KCkxvcyAzNiBwdW50b3MgbXVlc3RyYWxlcyBhc29jaWFkb3MgY29uIGVsIGV4cGVyaW1lbnRvIHRpZW5lbiBsYSBtaXNtYSBwcm9iYWJpbGlkYWQgeSBjb3JyZXNwb25kZW4gYSBsb3MgMzYgZXZlbnRvcyBudW3DqXJpY29zICQoeV8xLCB5XzIpJC4gQXPDrSwgbGFuemFyIHVuIHBhciBkZSBuw7ptZXJvcyAxIGVzIGVsIGV2ZW50byBzZW5jaWxsbyAoMSwgMSkuIExhbnphciB1biAyIGVuIGVsIGRhZG8gMSB5IHVuIDMgZW4gZWwgZGFkbyAyIGVzIGVsIGV2ZW50byBzZW5jaWxsbyAoMiwgMykuIENvbW8gdG9kb3MgbG9zIHBhcmVzICQoeV8xLCB5XzIpJCBvY3VycmVuIGNvbiBsYSBtaXNtYSBmcmVjdWVuY2lhIHJlbGF0aXZhLCBhc2lnbmFtb3MgdW5hIHByb2JhYmlsaWRhZCAkMS8zNiQgYSBjYWRhIHB1bnRvIG11ZXN0cmFsLiBQYXJhIGVzdGUgZWplbXBsbyBzZW5jaWxsbyBsYSBpbnRlcnNlY2Npw7NuICQoeV8xLCB5XzIpJCBjb250aWVuZSBhIGxvIHN1bW8gdW4gcHVudG8gbXVlc3RyYWwuIEVuIGNvbnNlY3VlbmNpYSwgbGEgZnVuY2nDs24gZGUgcHJvYmFiaWxpZGFkIGJpdmFyaWFudGUgZXMKCiRwKHlfMSx5XzIpPVAoWV8xID15XzEsWV8yID15XzIpPTEvMzYsXHRleHR7IH15XzEgPTEsMiwuLi4sIDYseV8yID0xLDIsLi4uLCA2JC4KCiBFbiBsYSBGaWd1cmEgNS4xIHNlIG11ZXN0cmEgdW5hIGdyw6FmaWNhIGRlIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBiaXZhcmlhbnRlIHBhcmEgZWwgZXhwZXJpbWVudG8gZGUgbGFuemFyIGRhZG9zLiBPYnNlcnZlIHF1ZSB1bmEgcHJvYmFiaWxpZGFkIGRpZmVyZW50ZSBkZSBjZXJvIHNlIGFzaWduYSBhIHVuIHB1bnRvICQoeV8xLHlfMikkIGRlbCBwbGFubyBzaSB5IHPDs2xvIHNpICR5XzEgPTEsIDIsLi4uLDYkIHkgJHlfMiA9MSwgMiwuLi4sNiQuRW50b25jZXMsYSBsb3MgMzYgcHVudG9zIGRlbCBwbGFubyBzZSBsZXMgYXNpZ25hbiBleGFjdGFtZW50ZSBwcm9iYWJpbGlkYWRlcyBkaWZlcmVudGVzIGRlIGNlcm8uIEFkZW3DoXMsIGxhcyBwcm9iYWJpbGlkYWRlcyBzZSBhc2lnbmFuIGVuIHRhbCBmb3JtYSBxdWUgbGEgc3VtYSBkZSBsYXMgcHJvYmFiaWxpZGFkZXMgZGlmZXJlbnRlcyBkZSBjZXJvIGVzIGlndWFsIGEgMS4gRW4gbGEgRmlndXJhIDUuMSBsb3MgcHVudG9zIGEgbG9zIHF1ZSBzZSBhc2lnbmFuIHByb2JhYmlsaWRhZGVzIGRpZmVyZW50ZXMgZGUgY2VybyBlc3TDoW4gcmVwcmVzZW50YWRvcyBlbiBlbCBwbGFubyAkKHlfMSwgeV8yKSQsIG1pZW50cmFzIHF1ZSBsYXMgcHJvYmFiaWxpZGFkZXMgYXNvY2lhZGFzIGNvbiBlc3RvcyBwdW50b3MgZXN0w6FuIGRhZGFzIHBvciBsYXMgbG9uZ2l0dWRlcyBkZSBsYXMgcmVjdGFzIHF1ZSBhcGFyZWNlbiBhcnJpYmEgZGUgZWxsb3MuIExhIEZpZ3VyYSA1LjEgcHVlZGUgdmVyc2UgY29tbyBoaXN0b2dyYW1hIHRlw7NyaWNvIGRlIGZyZWN1ZW5jaWEgcmVsYXRpdmEgZW4gdHJlcyBkaW1lbnNpb25lcyBwYXJhIGxvcyBwYXJlcyBkZSBvYnNlcnZhY2lvbmVzICQoeV8xLCB5XzIpJC4gQWwgaWd1YWwgcXVlIGVuIGVsIGNhc28gZGlzY3JldG8gZGUgdW5hIHNvbGEgdmFyaWFibGUsIGVsIGhpc3RvZ3JhbWEgdGXDs3JpY28gZGEgdW4gbW9kZWxvIHBhcmEgZWwgaGlzdG9ncmFtYSBtdWVzdHJhbCBxdWUgc2Ugb2J0ZW5kcsOtYSBzaSBlbCBleHBlcmltZW50byBkZSBsYW56YXIgZGFkb3Mgc2UgcmVwaXRpZXJhIHVuIGdyYW4gbsO6bWVybyBkZSB2ZWNlcy4KIAogPGRpdiBzdHlsZT0id2lkdGg6MzAwcHg7IGhlaWdodDozMDBweCI+IVsgXShmaWd1cmEgNS4xLnBuZyk8L2Rpdj4KIAotLS0tCgojIyNEZWZpbmljacOzbiA1LjEKIFNlYW4gJFlfMSQgeSAkWV8yJCB2YXJpYWJsZXMgYWxlYXRvcmlhcyBkaXNjcmV0YXMuIExhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25qdW50YSAobyBiaXZhcmlhbnRlKSBwYXJhICRZXzEkIHkgJFlfMiQgZXN0w6EgZGFkYSBwb3IKJHAoeV8xLHlfMik9UChZXzEgPXlfMSxZXzIgPXlfMiksIOKIklxpbmZ0eTx5XzEgPFxpbmZ0eSziiJJcaW5mdHk8eV8yIDxcaW5mdHkkCgoKLS0tLQoKRW4gZWwgY2FzbyBkZSBsYSB2YXJpYWJsZSDDum5pY2EgcXVlIGVzdHVkaWFtb3MgZW4gZWwgQ2Fww610dWxvIDMgdmltb3MgcXVlIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBwYXJhIHVuYSB2YXJpYWJsZSBhbGVhdG9yaWEgZGlzY3JldGEgWSBhc2lnbmEgcHJvYmFiaWxpZGFkZXMgZGlmZXJlbnRlcyBkZSBjZXJvIGEgdW4gbsO6bWVybyAgaW5maW5pdG8gbyBjb250YWJsZSBkZSB2YWxvcmVzIGRpc3RpbnRvcyBkZSBZLCBlbiBmb3JtYSB0YWwgcXVlIGxhIHN1bWEgZGUgbGFzIHByb2JhYmlsaWRhZGVzIGVzIGlndWFsIGEgMS4gRGVsIG1pc21vIG1vZG8sIGVuIGVsIGNhc28gYml2YXJpYW50ZSBsYSBmdW5jacOzbiBkZSBwcm9iYWJpbGlkYWQgY29uanVudGEgJHAoeV8xLCB5XzIpJCBhc2lnbmEgcHJvYmFiaWxpZGFkZXMgZGlmZXJlbnRlcyBkZSBjZXJvIGEgc8OzbG8gdW4gbsO6bWVybyBpbmZpbml0byBvIGNvbnRhYmxlIGRlIHBhcmVzIGRlIHZhbG9yZXMgJCh5XzEsIHlfMikkLiBBZGVtw6FzLCBsYXMgcHJvYmFiaWxpZGFkZXMgZGlmZXJlbnRlcyBkZSBjZXJvIGRlYmVuIHN1bWFyIDEuCgotLS0tCgojIyNUZW9yZW1hIDUuMQpTaSAkWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBkaXNjcmV0YXMgY29uIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25qdW50YSAkcCh5XzEsIHlfMikkLCBlbnRvbmNlcwoKMS4gJHAoeV8xLCB5XzIpIOKJpSAwJCBwYXJhIHRvZGEgJHlfMSwgeV8yJC4KCjIuICRcc3VtX3t5XzEsIHlfMn0gcCh5XzEsIHlfMikgPSAxJCwgZG9uZGUgbGEgc3VtYSBlcyBwYXJhIHRvZG9zIGxvcyB2YWxvcmVzICQoeV8xLCB5XzIpJCBhIGxvcyBxdWUgc2UgYXNpZ25hbiBwcm9iYWJpbGlkYWRlcyBkaWZlcmVudGVzIGRlIGNlcm8uIAoKLS0tLQoKQWwgaWd1YWwgcXVlIGVuIGVsIGNhc28gZGlzY3JldG8gdW5pdmFyaWFudGUsIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25qdW50YSBwYXJhIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGRpc2NyZXRhcyBhIHZlY2VzIHNlIGRlbm9taW5hIGZ1bmNpw7NuIGRlIG1hc2EgZGUgcHJvYmFiaWxpZGFkIGNvbmp1bnRhIHBvcnF1ZSBlc3BlY2lmaWNhIGxhIHByb2JhYmlsaWRhZCAobWFzYSkgYXNvY2lhZGEgY29uIGNhZGEgdW5vIGRlIGxvcyBwb3NpYmxlcyBwYXJlcyBkZSB2YS0gbG9yZXMgcGFyYSBsYXMgdmFyaWFibGVzIGFsZWF0b3JpYXMuIFVuYSB2ZXogcXVlIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25qdW50YSBzZSBoYXlhIGRldGVybWluYWRvIHBhcmEgdmFyaWFibGVzIGFsZWF0b3JpYXMgZGlzY3JldGFzICRZXzEkIHkgJFlfMiQsIGNhbGN1bGFyIGxhcyBwcm9iYWJpbGlkYWRlcyBjb25qdW50YXNlbiBkb25kZSBhcGFyZWNlbiAkWV8xJCB5ICRZXzIkIGVzIGbDoWNpbC4gUGFyYSBlbCBleHBlcmltZW50byBkZSBsYW56YXIgZGFkb3MsIFAkKDIg4omkIFlfMSDiiaQgMywgMSDiiaQgWV8yIOKJpCAyKSQgZXMKCgokUCgy4omkWV8xIOKJpDMsMeKJpFlfMiDiiaQyKT1wKDIsMSkrcCgyLDIpK3AoMywxKStwKDMsMikgPSA0LyAzNiA9IDEvIDkuJAoKLS0tLQoKIyMjRWplbXBsbyA1LjEKVW4gc3VwZXJtZXJjYWRvIGxvY2FsIHRpZW5lIHRyZXMgY2FqYXMuIERvcyBjbGllbnRlcyBsbGVnYW4gYSBsYXMgY2FqYXMgZW4gbW9tZW50b3MgZGlmZXJlbnRlcyBjdWFuZG8gbGFzIGNhamFzIG5vIGF0aWVuZGVuIGEgb3Ryb3MgY2xpZW50ZXMuIENhZGEgY2xpZW50ZSBlc2NvZ2UgdW5hIGNhamEgZGUgbWFuZXJhIGFsZWF0b3JpYSwgaW5kZXBlbmRpZW50ZW1lbnRlIGRlbCBvdHJvLiBEZW5vdGUgY29uICRZXzEkIGVsIG7Dum1lcm8gZGUgY2xpZW50ZXMgcXVlIGVzY29nZW4gbGEgY2FqYSAxIHkgY29uICRZXzIkIGVsIG7Dum1lcm8gcXVlIHNlbGVjY2lvbmEgbGEgY2FqYSAyLiBFbmN1ZW50cmUgbGEgZnVuY2nDs24gZGUgcHJvYmFiaWxpZGFkIGNvbmp1bnRhIGRlICRZXzEkIHkgJFlfMiQuCgojIyMjU29sdWNpw7NuCgpQb2Ryw61hbW9zIHByb2NlZGVyIGVuIG11Y2hhcyBmb3JtYXMuIExhIG3DoXMgZGlyZWN0YSBlcyBjb25zaWRlcmFyIGVsIGVzcGFjaW8gbXVlc3RyYWwgYXNvY2lhZG8gY29uIGVsIGV4cGVyaW1lbnRvLiBEZW5vdGVtb3MgY29uIGVsIHBhciAke2ksIGp9JCBlbCBldmVudG8gc2VuY2lsbG8gZGUgcXVlIGVsIHByaW1lciBjbGllbnRlIGVzY29nacOzIGxhIGNhamEgJGkkIHkgZWwgc2VndW5kbyBjbGllbnRlIGVzY29nacOzIGxhIGNhamEgJGokLCBkb25kZSAkaSwgaiA9IDEsIDIgeSAzJC4gVXNhbmRvIGxhIHJlZ2xhICRtbiQsIGVsIGVzcGFjaW8gbXVlc3RyYWwgZXN0w6EgZm9ybWFkbyBwb3IgJDMgw5cgMyA9IDkkIHB1bnRvcyBtdWVzdHJhbGVzLiBEZSBhY3VlcmRvIGNvbiBsYXMgc3Vwb3NpY2lvbmVzIGRhZGFzIGFudGVzLCBjYWRhIHB1bnRvIG11ZXN0cmFsIGVzIGlndWFsbWVudGUgcHJvYmFibGUgeSB0aWVuZSBwcm9iYWJpbGlkYWQgMS85LiBFbCBlc3BhY2lvIG11ZXN0cmFsIGFzb2NpYWRvIGNvbiBlbCBleHBlcmltZW50byBlcwoKCiRTID0gW3sxLCAxfSwgezEsIDJ9LCB7MSwgM30sIHsyLCAxfSwgezIsIDJ9LCB7MiwgM30sIHszLCAxfSwgezMsIDJ9LCB7MywgM31dJC4KCk9ic2VydmUgcXVlIGVsIHB1bnRvIG11ZXN0cmFsICR7MSwgMX0kIGVzIGVsIMO6bmljbyBjb3JyZXNwb25kaWVudGUgYSAkKFlfMSA9IDIsIFlfMiA9IDApJCB5IHBvciB0YW50byAkUChZXzE9MixZXzI9MCk9MS85JC5EZWwgbWlzbW8gbW9kbywkUChZXzEgPTEsWV8yID0xKT1QKHsxLDJ9b3syLDF9KT0yLzkkLiBMYSBUYWJsYSA1LjEgY29udGllbmUgbGFzIHByb2JhYmlsaWRhZGVzIGFzb2NpYWRhcyBjb24gY2FkYSBwb3NpYmxlIHBhciBkZSB2YWxvcmVzIHBhcmEgJFlfMSQgeSAkWV8yJCwgZXMgZGVjaXIsIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25qdW50YSBwYXJhICRZXzEkIHkgJFlfMiQuIENvbW8gc2llbXByZSwgbG9zIHJlc3VsdGFkb3MgZGVsIFRlb3JlbWEgNS4xIHNlIGN1bXBsZW4gcGFyYSBlc3RlIGVqZW1wbG8uCgp8fCR5XzEkfCR5XzEkfCR5XzEkfAp8LXwtLS18LS0tfC0tLXwKfCoqJHlfMiQqKnwqKjAqKnwqKjEqKnwqKjIqKnwKfDB8MS85fDIvOXwxLzl8CnwxfDIvOXwyLzl8MHwKfDJ8MS85fDB8MHwKCgpBbCBpZ3VhbCBxdWUgZW4gZWwgY2FzbyBkZSB2YXJpYWJsZXMgYWxlYXRvcmlhcyB1bml2YXJpYW50ZXMsIGxhIGRpc3RpbmNpw7NuIGVudHJlIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGNvbnRpbnVhcyBjb25qdW50YXMgeSBkaXNjcmV0YXMgY29uanVudGFzIHB1ZWRlIHNlciBjYXJhY3Rlcml6YWRvIGVuIHTDqXJtaW5vcyBkZSBzdXMgZnVuY2lvbmVzIGRlIGRpc3RyaWJ1Y2nDs24gKGNvbmp1bnRhcykuCgotLS0tLS0tLS0tLS0tLS0tLQoKIyMjIERlZmluaWNpb24gNS4yClBhcmEgY3VhbGVzcXVpZXJhIHZhcmlhYmxlcyBhbGVhdG9yaWFzICRZXzEkIHkgJFlfMiQsIGxhIGZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gKGJpdmFyaWFudGUpIGNvbmp1bnRhICRGKHlfMSwgeV8yKSQgZXMKJEYoeV8xLHlfMik9UChZXzEg4omkeV8xLFlfMiDiiaR5XzIpLCDiiJJcaW5mdHk8eV8xIDxcaW5mdHks4oiSXGluZnR5PHlfMiA8XGluZnR5JC4KCi0tLS0tLS0tLS0tLS0tLS0tCgpQYXJhIGRvcyB2YXJpYWJsZXMgZGlzY3JldGFzICRZXzEkIHkgJFlfMiQsICRGKHlfMSwgeV8yKSQgZXN0w6EgZGFkYSBwb3IKCiRGKHlfMSwgeV8yKSA9IFxzdW1fe3RfMeKJpHlfMX1cc3VtX3t0XzLiiaR5XzJ9cCh0XzEsdF8yKS4kCgpQYXJhIGVsIGV4cGVyaW1lbnRvIGRlIGxhbnphciB1biBkYWRvLAoKJEYoMiwgMykgPSBQKFlfMSDiiaQgMiwgWV8yIOKJpCAzKT0gcCgxLCAxKStwKDEsIDIpK3AoMSwgMykrcCgyLCAxKStwKDIsIDIpK3AoMiwgMykuJAoKQ29tbyAkcCh5XzEsIHlfMikgPSAxLyAzNiQgcGFyYSB0b2RvcyBsb3MgcGFyZXMgZGUgdmFsb3JlcyBkZSAkeV8xJCB5ICR5XzIkIGVuIGNvbnNpZGVyYWNpw7NuLCAkRigyLCAzKSA9IDYvMzYgPSAxLzYkLgoKYGBge3J9CkVqZW1wbG9fRGVmaW5pY2lvbl81LjIgPSAoMS8zNikrKDEvMzYpKygxLzM2KSsoMS8zNikrKDEvMzYpKygxLzM2KQpwcmludChFamVtcGxvX0RlZmluaWNpb25fNS4yKQpgYGAKCi0tLS0tLS0tCgojIyNFamVtcGxvIDUuMgpDb25zaWRlcmUgbGFzIHZhcmlhYmxlcyBhbGVhdG9yaWFzICRZXzEkIHkgJFlfMiQgZGVsIEVqZW1wbG8gNS4xLiBFbmN1ZW50cmUgJEYo4oCTMSwgMiksIEYoMS41LCAyKSQgeSAkRig1LCA3KSQuCgojIyMjU29sdWNpb24KVXNhbmRvIGxvcyByZXN1bHRhZG9zIGRlIGxhIFRhYmxhIDUuMSB2ZW1vcyBxdWUKCiRGKOKIkjEsIDIpPVAoWV8xIOKJpOKIkjEsWV8yIOKJpDIpPVAow5gpPTAuJCAKCkFkZW3DoXMKCiRGKDEuNSwgMikgPSBQKFlfMSDiiaQxLjUsIFlfMiDiiaQyKSQKJD1wKDAsIDApK3AoMCwgMSkrcCgwLCAyKStwKDEsIDApK3AoMSwgMSkrcCgxLCAyKT04LzkuJAoKRGUgbWFuZXJhIHNpbWlsYXIsCgokRig1LCA3KSA9IFAoWV8xIOKJpDUsIFlfMiDiiaQ3KSA9MS4kCgpPYnNlcnZlcXVlICRGKHlfMSx5XzIpPTEkIHBhcmEgdG9kYSAkeV8xLHlfMiQgdGFsIHF1ZSBtaW57JHt5XzEseV8yfSR9JOKJpTIkLlRhbWJpw6luLCAkRih5XzEseV8yKT0wJCBzaSAKbcOtbnske3lfMSwgeV8yfSR9JDwwJC4KCi0tLS0tLS0tCgpTZSBkaWNlIHF1ZSBkb3MgdmFyaWFibGVzIGFsZWF0b3JpYXMgc29uIGNvbnRpbnVhcyBjb25qdW50YXMgc2kgc3UgZnVuY2nDs24gZGUgZGlzdHJpYnVjacOzbiBjb25qdW50YSAkRih5XzEsIHlfMikkIGVzIGNvbnRpbnVhIGVuIGFtYm9zIGFyZ3VtZW50b3MuCgotLS0tLS0tLQoKIyMjIERlZmluaWNpb24gNS4zClNlYW4gJFlfMSQgeSAkWV8yJCB2YXJpYWJsZXMgYWxlYXRvcmlhcyBjb250aW51YXMgY29uIGZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gY29uanVudGEgJEYoeV8xLCB5XzIpJC4gU2kgZXhpc3RlIHVuYSBmdW5jacOzbiBubyBuZWdhdGl2YSAkZih5XzEsIHlfMikkLCB0YWwgcXVlCgokRih5XzEseV8yKT1caW50X3stXGluZnR5fV57eV8xfVxpbnRfey1caW5mdHl9Xnt5XzJ9Zih0XzEsdF8yKWR0XzJkdF8xJAoKcGFyYSB0b2RhICTiiJJcaW5mdHkgPCB5XzEgPFxpbmZ0eSziiJJcaW5mdHkgPCB5XzIgPFxpbmZ0eSQsIGVudG9uY2VzIHNlIGRpY2UgcXVlICRZXzEkIHkgJFlfMiQgc29uIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGNvbnRpbnVhcyBjb25qdW50YXMuIExhIGZ1bmNpw7NuICRmKHlfMSwgeV8yKSQgcmVjaWJlIGVsIG5vbWJyZSBkZSBmdW5jacOzbiBkZSBkZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQgY29uanVudGEuCgotLS0tLS0tLQoKTGFzIGZ1bmNpb25lcyBkZSBkaXN0cmlidWNpw7NuIGFjdW11bGF0aXZhIGJpdmFyaWFudGUgc2F0aXNmYWNlbiB1biBjb25qdW50byBkZSBwcm9waWVkYWRlcyBzaW1pbGFyZXMgYSBsYXMgZXNwZWNpZmljYWRhcyBwYXJhIGZ1bmNpb25lcyBkZSBkaXN0cmlidWNpw7NuIGFjdW11bGF0aXZhIHVuaXZhcmlhbnRlLgoKLS0tLS0tLS0KCiMjIyBUZW9yZW1hIDUuMgpTaSAkWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBjb24gZnVuY2nDs24gZGUgZGlzdHJpYnVjacOzbiBjb25qdW50YSAkRih5XzEsIHlfMikkLCBlbnRvbmNlcwoxLiAkRijiiJJcaW5mdHksIOKIklxpbmZ0eSkgPSBGKOKIklxpbmZ0eSwgeV8yKSA9IEYoeV8xLCDiiJJcaW5mdHkpID0gMC4kCjIuICRGKFxpbmZ0eSxcaW5mdHkpPTEuJAozLiBTaSAkeV8xXuKIlyDiiaV5XzEkIHkgJHlfMl7iiJcg4omleV8yJCxlbnRvbmNlcwoKICAkRih5XzFe4oiXLCB5XzLiiJcpIOKIkiBGKHlfMV7iiJcsIHlfMikg4oiSIEYoeV8xLCB5XzJe4oiXKSArIEYoeV8xLCB5XzIpIOKJpSAwLiQKCi0tLS0tLS0tCgpMYSBwYXJ0ZSAzIHJlc3VsdGEgZGUgcXVlCgokRih5XzFe4oiXLCB5XzJe4oiXKSDiiJIgRih5XzFe4oiXLCB5XzIpIOKIkiBGKHlfMSwgeV8yXuKIlykgKyBGKHlfMSwgeV8yKSQgCiQ9UCh5XzEgPFlfMSDiiaR5XzFe4oiXLHlfMiA8WV8yIOKJpHlfMl7iiJcp4omlMC4kCgpPYnNlcnZlIHF1ZSAkRihcaW5mdHksIFxpbmZ0eSkg4omhIFxsaW1fe3lfMVx0b1wgXGluZnR5fVxsaW1fe3lfMlx0b1wgXGluZnR5fSBGKHlfMSwgeV8yKSA9IDEkIGltcGxpY2EgcXVlIGxhIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGNvbmp1bnRhICRmKHlfMSwgeV8yKSQgZGViZSBzZXIgdGFsIHF1ZSBsYSBpbnRlZ3JhbCBkZSAkZih5XzEsIHlfMikkIHBhcmEgdG9kb3MgbG9zIHZhbG9yZXMgZGUgJCh5XzEsIHlfMikkIGVzIDEuCgotLS0tLS0tLQoKIyMjIFRlb3JlbWEgNS4zClNpICRZXzEkIHkgJFlfMiQgc29uIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGNvbnRpbnVhcyBjb25qdW50YXMgY29uIHVuYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25qdW50YSBkYWRhIHBvciAkZih5XzEsIHlfMikkLCBlbnRvbmNlcwoKMS4gJGYgKHlfMSwgeV8yKSDiiaUgMCQgcGFyYSB0b2RhICR5XzEsIHlfMiQuCjIuICRcaW50X3stXGluZnR5fV57XGluZnR5fVxpbnRfey1caW5mdHl9XntcaW5mdHl9Zih5XzEseV8yKWR5XzFkeV8yPTEkCgotLS0tLS0tLQoKQWwgaWd1YWwgcXVlIGVuIGVsIGNhc28gY29udGludW8gdW5pdmFyaWFudGUgcXVlIHNlIGVzdHVkaWEgZW4gZWwgQ2Fww610dWxvIDQsIGxhIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGNvbmp1bnRhIHB1ZWRlIHNlciBpbnRlcnByZXRhZGEgZGUgbWFuZXJhIGludHVpdGl2YSBjb21vIHVuIG1vZGVsbyBwYXJhIGVsIGhpc3RvZ3JhbWEgZGUgZnJlY3VlbmNpYSByZWxhdGl2YSBjb25qdW50YSBwYXJhICRZXzEkIHkgJFlfMiQuCgpQYXJhIGVsIGNhc28gY29udGludW8gdW5pdmFyaWFudGUsIGxhcyDDoXJlYXMgYmFqbyBsYSBkZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQgcGFyYSB1biBpbnRlci0gdmFsbyBjb3JyZXNwb25kZW4gYSBwcm9iYWJpbGlkYWRlcy4gRGUgaWd1YWwgbWFuZXJhLCBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQgYml2YXJpYW50ZSAkZih5XzEsIHlfMikkIHRyYXphIHVuYSBzdXBlcmZpY2llIGRlIGRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZCBzb2JyZSBlbCBwbGFubyAkKHlfMSwgeV8yKSQuIChGaWd1cmEgNS4yKS4KCjxkaXYgc3R5bGU9IndpZHRoOjMwMHB4OyBoZWlnaHQ6MzAwcHgiPiFbIF0oZmlndXJhIDUuMi5wbmcpPC9kaXY+CgpMb3Mgdm9sw7ptZW5lcyBiYWpvIGVzdGEgc3VwZXJmaWNpZSByZXByZXNlbnRhbiBwcm9iYWJpbGlkYWRlcy4gQXPDrSwgJFAoYTEg4omkIFlfMSDiiaQgYTIsIGIxIOKJpCBZXzIg4omkIGIyKSQgZXMgZWwgdm9sdW1lbiBzb21icmVhZG8gcXVlIHNlIHZlIGVuIGxhIEZpZ3VyYSA1LjIgeSBlcyBpZ3VhbCBhCgokXGludF97Yl8xfV57Yl8yfVxpbnRfe2FfMX1ee2FfMn1mICh5XzEsIHlfMikgZHlfMSBkeV8yLiQKCi0tLS0tLS0tCgojIyNFamVtcGxvIDUuMwpTdXBvbmdhIHF1ZSB1bmEgcGFydMOtY3VsYSByYWRpYWN0aXZhIHNlIGxvY2FsaXphIGFsZWF0b3JpYW1lbnRlIGVuIHVuIGN1YWRyYWRvIGNvbiBsYWRvcyBkZSBsb25naXR1ZCB1bml0YXJpYS4gRXN0byBlcywgc2kgc2UgY29uc2lkZXJhbiBkb3MgcmVnaW9uZXMgZGUgaWd1YWwgw6FyZWEgeSBkZW50cm8gZGVsIGN1YWRyYWRvIHVuaXRhcmlvIGVzIGlndWFsbWVudGUgcHJvYmFibGUgcXVlIGxhIHBhcnTDrWN1bGEgc2UgZW5jdWVudHJlIGVuIGN1YWxxdWllcmEgZGUgbGFzIGRvcy4gRGVub3RlIGNvbiAkWV8xJCB5ICRZXzIkIGxhcyBjb29yZGVuYWRhcyBkZSBsYSB1YmljYWNpw7NuIGRlIGxhIHBhcnTDrWN1bGEuIFVuIG1vZGVsbyByYXpvbmFibGUgcGFyYSBlbCBoaXMtIHRvZ3JhbWEgZGUgZnJlY3VlbmNpYSByZWxhdGl2YSBwYXJhICRZXzEkIHkgJFlfMiQgZXMgbGEgYW7DoWxvZ2EgYml2YXJpYW50ZSBkZSBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCB1bmlmb3JtZSB1bml2YXJpYW50ZToKCiRmKHlfMSx5XzIpID1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9XCAxLCAmIDDiiaR5XzHiiaQxLCAw4omkeV8y4omkMSxcXCAwLCAmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvfVxlbmR7YXJyYXl9XHJpZ2h0LiQgCgphIFRyYWNlIGxhIHN1cGVyZmljaWUgZGUgZGVuc2lkYWQgZGUgcHJvYmFiaWxpZGFkLiAKYiBFbmN1ZW50cmUgJEYoLjIsIC40KSQuCmMgRW5jdWVudHJlICRQKC4xIOKJpCBZXzEg4omkIC4zLCAwIOKJpCBZXzIg4omkIC41KSQuCgoKIyMjI1NvbHVjaW9uCmEuIEVsIHRyYXpvIHNlIG11ZXN0cmEgZW4gbGEgRmlndXJhIDUuMy4KYi4gCiRGKC4yLC40KT1caW50X3stXGluZnR5fV57LjR9XGludF97LVxpbmZ0eX1eey4yfWYoeV8xLHlfMilkeV8xZHkkJD1caW50X3swfV57LjR9XGludF97MH1eey4yfSgxKWR5XzFkeV8yJCQ9XGludF97MH1eey40fVxCaWcoeV8xXEJpZ3xfezB9XnsuMn1cQmlnKWR5XzI9XGludHswfV57LjR9ZHlfMj0uMDguJAoKCkxhIHByb2JhYmlsaWRhZCAkRiguMiwgLjQpJCBjb3JyZXNwb25kZSBhbCB2b2x1bWVuIGJham8gJGYoeV8xLCB5XzIpPSAxJCwgcXVlIGVzdMOhIHNvbWJyZWFkbyBlbiBsYSBGaWd1cmEgNS4zLiBDb21vIGxvIGluZGljYW4gY29uc2lkZXJhY2lvbmVzIGdlb23DqXRyaWNhcywgbGEgcHJvYmFiaWxpZGFkIGRlc2VhZGEgKHZvbHVtZW4pIGVzIGlndWFsIGEgLjA4LCBxdWUgb2J0dXZpbW9zIG1lZGlhbnRlIGludGVncmFjacOzbiBhbCBwcmluY2lwaW8gZGUgZXN0YSBzZWNjacOzbi4KCjxkaXYgc3R5bGU9IndpZHRoOjMwMHB4OyBoZWlnaHQ6MzAwcHgiPiFbIF0oZmlndXJhIDUuMy5wbmcpPC9kaXY+CgpjLiAkUCguMeKJpFlfMeKJpC4zLDDiiaRZXzLiiaQ1KT1caW50X3swfV57LjV9XGludF97LjF9XnsuM31mKHlfMSx5XzIpZHlfMWR5XzI9XGludF97MH1eey41fVxpbnRfey4xfV57LjN9MWR5XzFkeV8yPS4xMCQKCkVzdGEgcHJvYmFiaWxpZGFkIGNvcnJlc3BvbmRlIGFsIHZvbHVtZW4gYmFqbyBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCAkZih5XzEsIHlfMik9IDEkIHF1ZSBlc3TDoSBhcnJpYmEgZGUgbGEgcmVnacOzbiAkLjEg4omkIHlfMSDiiaQgLjMkLCAkMCDiiaQgeV8yIOKJpCAuNSQuIEFsIGlndWFsIHF1ZSBsYSBzb2x1Y2nDs24gZGVsIGluY2lzbyBiLCBsYSBzb2x1Y2nDs24gYWN0dWFsIHNlIHB1ZWRlIG9idGVuZXIgY29uIGVsIHVzbyBkZSBjb25jZXB0b3MgZGUgZ2VvbWV0csOtYSBlbGVtZW50YWwuIExhIGRlbnNpZGFkIG8gYWx0dXJhIGRlIGxhIHN1cGVyZmljaWUgZXMgaWd1YWwgYSAxIHkgcG9yIHRhbnRvIGxhIHByb2JhYmlsaWRhZCBkZXNlYWRhICh2b2x1bWVuKSBlcwoKJFAoLjHiiaRZXzEg4omkLjMsMOKJpFlfMiDiiaQuNSk9KC4yKSguNSkoMSk9LjEwLiQKCi0tLS0tLS0tCgpFbiBlbCBzaWd1aWVudGUgZWplbXBsbyBzZSBpbHVzdHJhIHVuIG1vZGVsbyBiaXZhcmlhbnRlIGxpZ2VyYW1lbnRlIG3DoXMgY29tcGxpY2FkbwoKLS0tLS0tLS0KCiMjI0VqZW1wbG8gNS40ClNlIGhhIGRlIGFsbWFjZW5hciBnYXNvbGluYSBlbiB1biBlbm9ybWUgdGFucXVlIHVuYSB2ZXogYWwgcHJpbmNpcGlvIGRlIGNhZGEgc2VtYW5hIHkgbHVlZ28gc2UgdmVuZGUgYSBjbGllbnRlcyBpbmRpdmlkdWFsZXMuIERlbm90ZSBjb24gJFlfMSQgZWwgbml2ZWwgZGUgZ2Fzb2xpbmEgKHByb3BvcmNpw7NuKSBxdWUgYWxjYW56YSBlbCB0YW5xdWUgZGVzcHXDqXMgZGUgc3VydGlybG8uIERlYmlkbyBhIHN1bWluaXN0cm9zIGxpbWl0YWRvcywgJFlfMSQgdmFyw61hIGRlIHVuYSBzZW1hbmEgYSBvdHJhLiBEZW5vdGUgY29uICRZXzIkIGxhIHByb3BvcmNpw7NuIGRlIGxhIGNhcGFjaWRhZCBkZWwgdGFucXVlIHF1ZSBzZSB2ZW5kZSBkdXJhbnRlIGxhIHNlbWFuYS4gQ29tbyAkWV8xJCB5ICRZXzIkIHNvbiBwcm9wb3JjaW9uZXMsIGVzdGFzIGRvcyB2YXJpYWJsZXMgdG9tYW4gdmFsb3JlcyBlbnRyZSAwIHkgMS4gQWRlbcOhcywgbGEgY2FudGlkYWQgZGUgZ2Fzb2xpbmEgdmVuZGlkYSwgJHlfMiQsIG5vIHB1ZWRlIHNlciBtYXlvciBxdWUgbGEgY2FudGlkYWQgZGlzcG9uaWJsZSwgJHlfMSQuIFN1cG9uZ2EgcXVlIGxhIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGNvbmp1bnRhIHBhcmEgJFlfMSQgeSAkWV8yJCBlc3TDoSBkYWRhIHBvcgoKJGYoeV8xLHlfMikgPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH1cIDN5XzEgJiAw4omkeV8x4omkMSwgMOKJpHlfMuKJpDEsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kIAoKRW4gbGEgRmlndXJhIDUuNCBzZSBtdWVzdHJhIHVuYSBncsOhZmljYSBkZSBlc3RhIGZ1bmNpw7NuLgpFbmN1ZW50cmUgbGEgcHJvYmFiaWxpZGFkIGRlIHF1ZSBtZW5vcyBkZSBsYSBtaXRhZCBkZWwgdGFucXVlIHRlbmdhIGdhc29saW5hIHkgbcOhcyBkZSB1biBjdWFydG8gZGVsIHRhbnF1ZSBzZSB2ZW5kYS4KCiMjIyNTb2x1Y2nDs24KQnVzY2Ftb3MgJFAoMCDiiaQgWV8xIOKJpCAuNSwgWV8yID4gLjI1KSQuIFBhcmEgY3VhbHF1aWVyIHZhcmlhYmxlIGFsZWF0b3JpYSBjb250aW51YSwgbGEgcHJvYmFiaWxpZGFkIGRlIG9ic2VydmFyIHVuIHZhbG9yIGVuIHVuYSByZWdpw7NuIGVzIGVsIHZvbHVtZW4gYmFqbyBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBwb3IgYXJyaWJhIGRlIGxhIHJlZ2nDs24gZGUgaW50ZXLDqXMuIExhIGZ1bmNpw7NuIGRlIGRlbnNpZGFkICRmICh5XzEsIHlfMikkIGVzIHBvc2l0aXZhIHPDs2xvIGVuIGxhIHJlZ2nDs24gdHJpYW5ndWxhcgoKPGRpdiBzdHlsZT0id2lkdGg6MzAwcHg7IGhlaWdodDoxMDBweCI+IVsgXShmaWd1cmEgNS40LnBuZyk8L2Rpdj4KPGRpdiBzdHlsZT0id2lkdGg6MzAwcHg7IGhlaWdodDoyMDBweCI+IVsgXShmaWd1cmEgNS41LnBuZyk8L2Rpdj4KCgpncmFuZGUgZGVsIHBsYW5vICQoeV8xLCB5XzIpJCBxdWUgc2UgdmUgZW4gbGEgRmlndXJhIDUuNS4gRXN0YW1vcyBpbnRlcmVzYWRvcyBzw7NsbyBlbiB2YWxvcmVzIGRlICR5XzEkIHkgJHlfMiQgdGFsZXMgcXVlIDAg4omkIHlfMSDiiaQgLjUgeSAkeV8yID4gLjI1JC4gTGEgaW50ZXJzZWNjacOzbiBkZSBlc3RhIHJlZ2nDs24geSBsYSByZWdpw7NuIGRvbmRlIGxhIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGVzIHBvc2l0aXZhIGVzdMOhIGRhZGEgcG9yIGVsIHBlcXVlw7FvIHRyacOhbmd1bG8gKHNvbWJyZWFkbykgZGUgbGEgRmlndXJhIDUuNS4gRW4gY29uc2VjdWVuY2lhLCBsYSBwcm9iYWJpbGlkYWQgcXVlIGRlc2VhbW9zIGVzIGVsIHZvbHVtZW4gYmFqbyBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBkZSBsYSBGaWd1cmEgNS40IGFycmliYSBkZSBsYSByZWdpw7NuIHNvbWJyZWFkYSBkZWwgcGxhbm8gJCh5XzEsIHlfMikkIHF1ZSBzZSB2ZSBlbiBsYSBGaWd1cmEgNS41LgoKRW50b25jZXMsIHRlbmVtb3MKCiRQKDDiiaRZXzHiiaQuNSwuMjUg4omkIFlfMik9XGludF97MS80fV57MS8yfVxpbnRfezEvNH1ee3lfMX0zeV8xZHlfMmR5XzEkCgokPVxpbnRfezEvNH1eezEvMn0zeV8xXEJpZyh5XzJcQmlnfF97MS80fV57eV8xfVxCaWcpZHlfMSQKJD1caW50X3sxLzR9XnsxLzJ9M3lfMSh5XzEtMS80KWR5XzEkCiQ9W3lfMV4zLSgzLzgpeV8xXjJdXEJpZ11fezEvNH1eezEvMn0kCiQ9WygxLzgpLSgzLzgpKDEvNCldLVsoMS82NCktKDMvOCkoMS8xNildJAokPTUvMTI4JAoKCgotLS0tLS0tLQoKRWwgY8OhbGN1bG8gZGUgbGEgcHJvYmFiaWxpZGFkIGVzcGVjaWZpY2FkYSBlbiBlbCBFamVtcGxvIDUuNCBjb21wcmVuZGnDsyBpbnRlZ3JhciBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25qdW50YSBwYXJhICRZXzEkIHkgJFlfMiQgc29icmUgbGEgcmVnacOzbiBhcHJvcGlhZGEuIExhIGVzcGVjaWZpY2FjacOzbiBkZSBsb3MgbMOtbWl0ZXMgZGUgaW50ZWdyYWNpw7NuIHNlIGhpem8gbcOhcyBmw6FjaWwgYWwgdHJhemFyIGxhIHJlZ2nDs24gZGUgaW50ZWdyYWNpw7NuIGVuIGxhIEZpZ3VyYSA1LjUuIEVzdGUgbcOpdG9kbywgdHJhemFuZG8gbGEgcmVnacOzbiBhcHJvcGlhZGEgZGUgaW50ZWdyYWNpw7NuLCBjb24gZnJlY3VlbmNpYSBmYWNpbGl0YSBlc3RhYmxlY2VyIGxhIGludGVncmFsIGFwcm9waWFkYS4KCkxvcyBtw6l0b2RvcyBlc3R1ZGlhZG9zIGVuIGVzdGEgc2VjY2nDs24gc2UgcHVlZGVuIHVzYXIgcGFyYSBjYWxjdWxhciBsYSBwcm9iYWJpbGlkYWQgZGUgbGEgaW50ZXJzZWNjacOzbiBkZSBkb3MgZXZlbnRvcyAkKFlfMSA9IHlfMSwgWV8yID0geV8yKSQuIERlIGlndWFsIG1vZG8gcG9kZW1vcyBkZWZpbmlyIHVuYSBmdW5jacOzbiBkZSBwcm9iYWJpbGlkYWQgKG8gZnVuY2nDs24gZGUgZGVuc2lkYWQgZGUgcHJvYmFiaWxpZGFkKSBwYXJhIGxhIGludGVyc2VjY2nDs24gZGUgJG4kIGV2ZW50b3MgJChZXzEgPSB5XzEsIFlfMiA9IHlfMiwgLiAuIC4gLCBZX24gPSB5X24pJC4gTGEgZnVuY2nDs24gZGUgcHJvYmFiaWxpZGFkIGNvbmp1bnRhIGNvcnJlc3BvbmRpZW50ZSBhbCBjYXNvIGRpc2NyZXRvIGVzdMOhIGRhZGEgcG9yCgokcCh5XzEsIHlfMiwuLi4sIHlfbikgPSBQKFlfMSA9IHlfMSwgWV8yID0geV8yLC4uLiwgWV9uID0geV9uKS4kCgpMYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25qdW50YSBkZSAkWV8xLCBZXzIsIC4gLiAuICwgWV9uJCBlc3TDoSBkYWRhIHBvciAkZih5XzEsIHlfMiwgLiAuIC4gLCB5X24pJC4gQWwgaWd1YWwgcXVlIGVuIGVsIGNhc28gYml2YXJpYW50ZSwgZXN0YXMgZnVuY2lvbmVzIGRhbiBtb2RlbG9zIHBhcmEgbGFzIGRpc3RyaWJ1Y2lvbmVzIGRlIGZyZWN1ZW5jaWEgcmVsYXRpdmEgY29uanVudGEgZGUgbGFzIHBvYmxhY2lvbmVzIGRlIG9ic2VydmFjaW9uZXMgY29uanVudGFzICQoeV8xLCB5XzIsIC4gLiAuICwgeV9uKSQgcGFyYSBlbCBjYXNvIGRpc2NyZXRvIHkgZWwgY2FzbyBjb250aW51bywgcmVzcGVjdGl2YW1lbnRlLiBFbiBlbCBjYXNvIGNvbnRpbnVvLAoKJFAoWV8x4omkeV8xLCBZXzLiiaR5XzIsLi4uLFlfbuKJpHlfbikgPSBGKHlfMSwuLi4seV9uKSQKCiQ9XGludF97LVxpbmZ0eX1ee3lfMX1caW50X3stXGluZnR5fV57eV8yfVxkb3RzIFxpbnRfey1caW5mdHl9Xnt5X259Zih0XzEsdF8yLC4uLix0X24pZHRfbi4uLmR0XzEkCgpwYXJhIHRvZG8gY29uanVudG8gZGUgbsO6bWVyb3MgcmVhbGVzICQoeV8xLCB5XzIsIC4gLiAuICwgeV9uKSQuIExhcyBmdW5jaW9uZXMgZGUgZGlzdHJpYnVjacOzbiBtdWx0aXZhLSByaWFudGVzIGRlZmluaWRhcyBwb3IgZXN0YSBpZ3VhbGRhZCBzYXRpc2ZhY2VuIHByb3BpZWRhZGVzIHNlbWVqYW50ZXMgYSBsYXMgZXNwZWNpZmljYWRhcyBwYXJhIGVsIGNhc28gYml2YXJpYW50ZS4KCgojNS4zIERpc3RyaWJ1Y2lvbmVzIGRlIHByb2JhYmlsaWRhZCBtYXJnaW5hbCB5IGNvbmRpY2lvbmFsCgpSZWN1ZXJkZSBxdWUgbG9zIHZhbG9yZXMgZGlzdGludG9zIHRvbWFkb3MgcG9yIHVuYSB2YXJpYWJsZSBhbGVhdG9yaWEgZGlzY3JldGEgcmVwcmVzZW50YW4gZXZlbi0gdG9zIG11dHVhbWVudGUgZXhjbHV5ZW50ZXMuIERlIG1hbmVyYSBhbsOhbG9nYSwgcGFyYSB0b2RvcyBsb3MgZGlzdGludG9zIHBhcmVzIGRlIHZhbG9yZXMgJHlfMSQsICR5XzIkLCBsb3MgZXZlbnRvcyBiaXZhcmlhbnRlcyAkKFlfMSA9IHlfMSwgWV8yID0geV8yKSQsIHJlcHJlc2VudGFkb3MgcG9yICQoeV8xLCB5XzIpJCwgc29uIGV2ZW50b3MgbXV0dWFtZW50ZSBleGNsdXllbnRlcy4gU2UgZGVkdWNlIHF1ZSBlbCBldmVudG8gdW5pdmFyaWFudGUgJChZXzEgPSB5XzEpJCBlcyBsYSB1bmnDs24gZGUgZXZlbnRvcyBiaXZhcmlhbnRlcyBkZWwgdGlwbyAkKFlfMSA9IHlfMSwgWV8yID0geV8yKSQsIGNvbiBsYSB1bmnDs24gdG9tYWRhIHBhcmEgdG9kb3MgbG9zIHBvc2libGVzIHZhbG9yZXMgZGUgJHlfMiQuCgpQb3IgZWplbXBsbywgcmVjb25zaWRlcmUgZWwgZXhwZXJpbWVudG8gZGUgdGlyYXIgdW4gZGFkbyBkZSBsYSBTZWNjacOzbiA1LjIsIGRvbmRlIAoKLSAkWV8xJCA9IG7Dum1lcm8gZGUgcHVudG9zIGRlIGxhIGNhcmEgc3VwZXJpb3IgZGVsIGRhZG8gMSwgRW50b25jZXMKCi0gJFlfMiQgPSBuw7ptZXJvIGRlIHB1bnRvcyBkZSBsYSBjYXJhIHN1cGVyaW9yIGRlbCBkYWRvIDIuCgpFbnRvbmNlcwoKJFAoWV8xID0gMSkgPSBwKDEsIDEpICsgcCgxLCAyKSArIHAoMSwgMykgKyAuIC4gLitwKDEsIDYpJAoKJD0gMS8zNiArIDEvMzYgKyAxLzM2ICsgLiAuIC4rMS8zNiA9IDYvMzYgPSAxLzYkCgokUChZXzEgPSAyKSA9IHAoMiwgMSkgKyBwKDIsIDIpICsgcCgyLCAzKSArIC4gLiAuK3AoMiwgNikgPSAxIDYkCgouCgouCgouCgokUChZXzEgPSA2KSA9IHAoNiwgMSkgKyBwKDYsIDIpICsgcCg2LCAzKSArIC4gLiAuK3AoNiwgNikgPSAxLzYuJAogICAgCgpFeHByZXNhZGFzIGVuIG5vdGFjacOzbiBkZSBzdW1hdG9yaWEsIGxhcyBwcm9iYWJpbGlkYWRlcyBhY2VyY2EgZGUgbGEgdmFyaWFibGUgJFlfMSQgc29sYSBzb24KCgokUChZXzEgPSB5XzEpPSBwXzEoeV8xKT1cc3VtX3t5XzI9MX1eezZ9cCh5XzEseV8yKSQKCgpEZWwgbWlzbW8gbW9kbywgbGFzIHByb2JhYmlsaWRhZGVzIGNvcnJlc3BvbmRpZW50ZXMgYSB2YWxvcmVzIGRlIGxhIHZhcmlhYmxlICRZXzIkIHNvbGEgZXN0w6FuIGRhZGFzIHBvcgoKJHBfMih5XzIpID0gUChZXzI9eV8yKSA9IFxzdW1fe3lfMT0xfV57Nn1wKHlfMSx5XzIpJAoKCkxhIHN1bWF0b3JpYSBlbiBlbCBjYXNvIGRpc2NyZXRvIGNvcnJlc3BvbmRlIGEgbGEgaW50ZWdyYWNpw7NuIGVuIGVsIGNhc28gY29udGludW8sIHF1ZSBub3MgbGxldmEgYSBsYSBzaWd1aWVudGUgZGVmaW5pY2nDs24uCgotLS0tCgojIyMgRGVmaW5pY2lvbiA1LjQKYSBTZWFuICRZXzEkIHkgJFlfMiQgdmFyaWFibGVzIGFsZWF0b3JpYXMgZGlzY3JldGFzIGNvbmp1bnRhcyBjb24gZnVuY2nDs24gZGUgcHJvYmFiaWxpZGFkICRwKHlfMSwgeV8yKSQuIEVudG9uY2VzIGxhcyBmdW5jaW9uZXMgZGUgcHJvYmFiaWxpZGFkIG1hcmdpbmFsIGRlICRZXzEkIHkgJFlfMiQsIHJlc3BlY3RpdmFtZW50ZSwgZXN0w6FuIGRhZGFzIHBvcgoKICAkcDEoeV8xKSA9XHN1bV97XHRleHR7dG9kb3MgfXlfMn0gcCh5XzEsIHlfMikkIAogIHkgJHAyKHlfMikgPVxzdW1fe1x0ZXh0e3RvZG9zIH15XzF9cCh5XzEsIHlfMikkCiAgCgpiIFNlYW4gJFlfMSQgeSAkWV8yJCB2YXJpYWJsZXMgYWxlYXRvcmlhcyBjb250aW51YXMgY29uanVudGFzIGNvbiBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25qdW50YSAkZih5XzEsIHlfMikkLiBFbnRvbmNlcyBsYXMgZnVuY2lvbmVzIGRlIGRlbnNpZGFkIG1hcmdpbmFsIGRlICRZXzEkIHkgJFlfMiQsIHJlc3BlY3RpdmFtZW50ZSwgZXN0w6FuIGRhZGFzIHBvcgoKJGZfMSh5XzEpID0gXGludF97LVxpbmZ0eX1ee2luZnR5fSBmICh5XzEsIHlfMilkeV8yJAp5ICRmXzIoeV8yKSA9XGludF97LVxpbmZ0eX1ee1xpbmZ0eX0gZiAoeV8xLCB5XzIpIGR5XzEuJAoKCi0tLS0tLS0tCgpFbCB0w6lybWlubyBtYXJnaW5hbCwgY29tbyBzZSBhcGxpY2EgYSBsYXMgZnVuY2lvbmVzIGRlIHByb2JhYmlsaWRhZCB1bml2YXJpYW50ZSBkZSAkWV8xJCB5ICRZXzIkLCB0aWVuZSBzaWduaSBjYWRvIGludHVpdGl2by4gUGFyYSBoYWxsYXIgJHBfMSh5XzEpJCwgc3VtYW1vcyAkcCh5MSwgeTIpJCBwYXJhIHRvZG9zIGxvcyB2YWxvcmVzIGRlICR5XzIkIHkgcG9yIHRhbnRvIGFjdW11bGFtb3MgbGFzIHByb2JhYmlsaWRhZGVzIGVuIGVsIGVqZSAkeV8xJCAobyBtYXJnZW4pLiBMb3MgY2Fzb3MgZGlzY3JldG9zIHkgY29udGludW9zIHNlIGlsdXN0cmFuIGVuIGxvcyBzaWd1aWVudGVzIGRvcyBlamVtcGxvcy4KCi0tLS0KCiMjI0VqZW1wbG8gNS41CgpEZSB1biBncnVwbyBkZSB0cmVzIHJlcHVibGljYW5vcywgZG9zIGRlbcOzY3JhdGFzIHkgdW5vIGluZGVwZW5kaWVudGUgc2UgaGEgZGUgc2VsZWNjaW9uYXIgYWxlYXRvcmlhbWVudGUgdW4gY29taXTDqSBkZSBkb3MgcGVyc29uYXMuIERlbm90ZSBjb24gJFlfMSQgZWwgbsO6bWVybyBkZSByZXB1YmxpY2Fub3MgeSBjb24gJFlfMiQgZWwgbsO6bWVybyBkZSBkZW3Ds2NyYXRhcyBkZWwgY29taXTDqS4gRW5jdWVudHJlIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25qdW50YSBkZSAkWV8xJCB5ICRZXzIkIHkgbHVlZ28gZW5jdWVudHJlIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBtYXJnaW5hbCBkZSAkWV8xJC4KCiMjIyNTb2x1Y2nDs24KTGFzIHByb2JhYmlsaWRhZGVzIGJ1c2NhZGFzIGFxdcOtIHNvbiBzZW1lamFudGVzIGEgbGFzIHByb2JhYmlsaWRhZGVzIGhpcGVyZ2VvbcOpdHJpY2FzIGRlbCBDYXDDrXR1bG8gMy4gUG9yIGVqZW1wbG8sCgoKJFAoWV8xID0xLCBZXzIgPSAxKT0gcCgxLDEpPVxmcmFje1xCaWcoX3sxfV57M31cQmlnKVxCaWcoX3sxfV57Mn1cQmlnKVxCaWcoX3sxfV57MH1cQmlnKX17XEJpZyhfezJ9Xns2fVxCaWcpfT1cZnJhY3szKDIpfXsxNX09XGZyYWN7Nn17MTV9JAoKCgpkZWJpZG8gYSBxdWUgaGF5IDE1IHB1bnRvcyBtdWVzdHJhbGVzIGlndWFsbWVudGUgcHJvYmFibGVzOyBwYXJhIGVsIGV2ZW50byBlbiBjdWVzdGnDs24gZGUtIGJlbW9zIHNlbGVjY2lvbmFyIHVuIHJlcHVibGljYW5vIGRlIGVudHJlIGxvcyB0cmVzLCB1biBkZW3Ds2NyYXRhIGRlIGVudHJlIGxvcyBkb3MgeSBjZXJvIGluZGUtIHBlbmRpZW50ZXMuIEPDoWxjdWxvcyBzZW1lamFudGVzIGxsZXZhbiBhIGxhcyBvdHJhcyBwcm9iYWJpbGlkYWRlcyBxdWUgc2UgdmVuIGVuIGxhIFRhYmxhIDUuMi4KClBhcmEgaGFsbGFyICRwXzEoeV8xKSQsIGRlYmVtb3Mgc3VtYXIgbG9zIHZhbG9yZXMgZGUgJFlfMiQsIGNvbW8gaW5kaWNhIGxhIERlZmluaWNpw7NuIDUuNC4gUG9yIHRhbnRvLCBlc3RhcyBwcm9iYWJpbGlkYWRlcyBlc3TDoW4gZGFkYXMgcG9yIGxvcyB0b3RhbGVzIGRlIGNvbHVtbmEgZGUgbGEgVGFibGEgNS4yLiBFc3RvIGVzLAoKJHAxKDApPXAoMCwgMCkrcCgwLCAxKStwKDAsIDIpPTArMi8xNSsxLzE1PTMvMTUkLiAKCkRlbCBtaXNtbyBtb2RvLAoKJHAxKDEpID0gOS8xNSQgeSAkcF8xKDIpID0gMy8xNS4kCgpFbiBmb3JtYSBhbsOhbG9nYSwgbGEgZnVuY2nDs24gZGUgcHJvYmFiaWxpZGFkIG1hcmdpbmFsIGRlICRZXzIkIGVzdMOhIGRhZGEgcG9yIGxvcyB0b3RhbGVzIGRlICBmaWxhLgoKfHwkeV8xJHwkeV8xJHwkeV8xJHx8CnwtfC0tLXwtLS18LS0tfC0tLXwKfCoqJHlfMiQqKnwqKjAqKnwqKjEqKnwqKjIqKnwqKlRvdGFsKip8CnwwfDAgICB8My8xNXwzLzE1fDYvMTV8CnwxfDIvMTV8Ni8xNXwwICAgfDgvMTV8CnwyfDEvNSB8MCAgIHwwICAgfDEvMTV8CnwqKlRvdGFsKip8My8xNXw5LzE1fDMvMTV8KioxKip8CgotLS0tLS0KCgojIyNFamVtcGxvIDUuNgoKU2VhCgokZih5XzEseV8yKSA9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfVwgMnlfMSAmIDDiiaR5XzHiiaQxLCAw4omkeV8y4omkMSxcXCAwLCAmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvfVxlbmR7YXJyYXl9XHJpZ2h0LiQgCgoKR3JhZmlxdWUgcXVlICRmKHlfMSwgeV8yKSQgeSBlbmN1ZW50cmUgbGFzIGZ1bmNpb25lcyBkZSBkZW5zaWRhZCBtYXJnaW5hbCBwYXJhICRZXzEkIHkgJFlfMiQuCgojIyMjU29sdWNpw7NuCkdlb23DqXRyaWNhbWVudGUsICRmKHlfMSwgeV8yKSQgZGVzY3JpYmUgdW5hIHN1cGVyZmljaWUgZW4gZm9ybWEgZGUgY3XDsWEsIGNvbW8gc2UgdmUgZW4gbGEgRmlndXJhIDUuNi4KCkFudGVzIGRlIGFwbGljYXIgbGEgZGVmaW5pY2nDs24gNS40IHBhcmEgaGFsbGFyICRmXzEoeV8xKSQgeSAkZjIoeV8yKSwgdXNhcmVtb3MgbGEgRmlndXJhIDUuNiBwYXJhIHZpc3VhbGl6YXIgZWwgcmVzdWx0YWRvLiBTaSBsYSBwcm9iYWJpbGlkYWQgcmVwcmVzZW50YWRhIHBvciBsYSBjdcOxYSBlc3R1dmllcmEgYWN1bXVsYWRhIGVuIGVsIGVqZSAkeV8xJCAoYWN1bXVsYW5kbyBwcm9iYWJpbGlkYWQgYSBsbyBsYXJnbyBkZSBsw61uZWFzIHBhcmFsZWxhcyBhbCBlamUgJHlfMiQpLCBlbCByZXN1bHRhZG8gc2Vyw61hIHVuYQoKPGRpdiBzdHlsZT0id2lkdGg6MzAwcHg7IGhlaWdodDoyMDBweCI+IVsgXShmaWd1cmEgNS42LnBuZyk8L2Rpdj4KCmRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZCB0cmlhbmd1bGFyIHF1ZSBzZSB2ZXLDrWEgY29tbyBlbCBsYWRvIGRlIGxhIGN1w7FhIGRlIGxhIEZpZ3VyYSA1LjYuIFNpIGxhIHByb2JhYmlsaWRhZCBlc3R1dmllcmEgYWN1bXVsYWRhIGEgbG8gbGFyZ28gZGVsIGVqZSAkeV8yJCAoYWN1bXVsw6FuZG9zZSBhIGxvIGxhcmdvIGRlIGzDrW5lYXMgcGFyYWxlbGFzIGFsIGVqZSAkeV8xJCksIGxhIGRlbnNpZGFkIHJlc3VsdGFudGUgc2Vyw61hIHVuaWZvcm1lLiBDb25maXJtYXJlbW9zIGVzdGFzIHNvbHVjaW9uZXMgdmlzdWFsZXMgbWVkaWFudGUgbGEgYXBsaWNhY2nDs24gZGUgbGEgRGVmaW5pY2nDs24gNS40LiBFbnRvbmNlcywgc2kgJDAg4omkIHlfMSDiiaQgMSQsCgokZl8xKHlfMSk9XGludF97LVxpbmZ0eX1ee1xpbmZ0eX1mKHlfMSx5XzIpZHlfMiA9IFxpbnRfezB9XnsxfTJ5XzFkeV8yID0gMnlfMVxCaWcoeV8yXEJpZ11fezB9XnsxfVxCaWcpJAoKeSBzaSAkeV8xPDAkIG8gJHlfMT4xJAoKJGZfMSh5XzEpPVxpbnRfey1caW5mdHl9XntcaW5mdHl9Zih5XzEseV8yKWR5XzIgPSBcaW50X3swfV57MX0wZHlfMj0wJAoKRW50b25jZXMsCgokZih5XzEseV8yKSA9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfVwgMnlfMSAmIDDiiaR5XzHiiaQxLFxcIDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJCAKCkRlbCBtaXNtbyBtb2RvLCBzaSAkMOKJpHlfMuKJpDEkLAoKJGZfMih5XzIpPVxpbnRfey1caW5mdHl9XntcaW5mdHl9Zih5XzEseV8yKWR5XzEgPSBcaW50X3swfV57MX0yeV8xZHlfMSA9IHlfMV4yXEJpZ11fezB9XnsxfT0xJAoKeSBzaSR5XzI8MCQgbyAkeV8yPjEkLAoKJGZfMih5XzIpPVxpbnRfey1caW5mdHl9XntcaW5mdHl9Zih5XzEseV8yKWR5XzEgPSBcaW50X3swfV57MX0wZHlfMT0wJAoKUmVzdW1pZW5kbywgCgokZl8yKHlfMik9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfVwgMSAsJiAw4omkeV8y4omkMSxcXCAwLCAmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvfVxlbmR7YXJyYXl9XHJpZ2h0LiQKCgpMYXMgZ3LDoWZpY2FzIGRlICRmXzEoeV8xKSQgeSAkZl8yKHlfMikkIHRyYXphbiBkZW5zaWRhZGVzIGRlIHByb2JhYmlsaWRhZCB0cmlhbmd1bGFyZXMgeSB1bmlmb3JtZXMsIHJlc3BlY3RpdmFtZW50ZSwgY29tbyBlcyBkZSBlc3BlcmFyc2UuCgoKCi0tLS0tLS0KCkxsZXZlbW9zIGFob3JhIG51ZXN0cmEgYXRlbmNpw7NuIGEgZGlzdHJpYnVjaW9uZXMgY29uZGljaW9uYWxlcywgdmllbmRvIHByaW1lcm8gYWwgY2FzbyBkaXNjcmV0by4KCkxhIGxleSBtdWx0aXBsaWNhdGl2YSAoU2VjY2nDs24gMi44KSBkYSBsYSBwcm9iYWJpbGlkYWQgZGUgbGEgaW50ZXJzZWNjacOzbiAkQSDiiKkgQiQgY29tbyAKCiRQKEHiiKlCKSA9IFAoQSlQKEJ8QSkkLAogICAgICAgICAgICAgICAgICAgICAKZG9uZGUgJFAoQSkkIGVzIGxhIHByb2JhYmlsaWRhZCBpbmNvbmRpY2lvbmFsIGRlICRBJCB5ICRQKEJ8QSkkIGVzIGxhIHByb2JhYmlsaWRhZCBkZSAkQiQgZGFkbyBxdWUgJEEkIGhhIG9jdXJyaWRvLiBBaG9yYSBjb25zaWRlcmUgbGEgaW50ZXJzZWNjacOzbiBkZSBsb3MgZG9zIGV2ZW50b3MgbnVtw6lyaWNvcywgJChZXzEgPSB5XzEpJCB5ICQoWV8yID0geV8yKSQsIHJlcHJlc2VudGFkYSBwb3IgZWwgZXZlbnRvIGJpdmFyaWFudGUgJCh5XzEsIHlfMikkLiBTZSBkZWR1Y2UgZGlyZWN0YW1lbnRlIGRlIGxhIGxleSBtdWx0aXBsaWNhdGl2YSBkZSBwcm9iYWJpbGlkYWQgcXVlIGxhIHByb2JhYmlsaWRhZCBiaXZhcmlhbnRlIHBhcmEgbGEgaW50ZXJzZWNjacOzbiAkKHlfMSwgeV8yKSQgZXMKCiRwKHlfMSwgeV8yKSA9IHBfMSh5XzEpcCh5XzJ8IHlfMSkgPSBwXzIoeV8yKXAoeV8xfHlfMikuJAoKTGFzIHByb2JhYmlsaWRhZGVzICRwXzEoeV8xKSQgeSAkcF8yKHlfMikkIGVzdMOhbiBhc29jaWFkYXMgY29uIGxhcyBkaXN0cmlidWNpb25lcyBkZSBwcm9iYWJpbGlkYWQgdW5pdmFyaWFudGVzIHBhcmEgJFlfMSQgeSAkWV8yJCBpbmRpdmlkdWFsbWVudGUgKHJlY3VlcmRlIGVsIENhcMOtdHVsbyAzKS4gVXNhbmRvIGxhIGludGVycHJldGFjacOzbiBkZSBwcm9iYWJpbGlkYWQgY29uZGljaW9uYWwgZXN0dWRpYWRhIGVuIGVsIENhcMOtdHVsbyAyLCAkcCh5XzF8eV8yKSQgZXMgbGEgcHJvYmFiaWxpZGFkIGRlIHF1ZSBsYSB2YXJpYWJsZSBhbGVhdG9yaWEgJFlfMSQgc2VhIGlndWFsIGEgJHlfMSQsIGRhZG8gcXVlICRZXzIkIHRvbWEgZWwgdmFsb3IgJHlfMiQuCgotLS0tCgojIyNEZWZpbmljaW9uIDUuNQpTaSAkWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBkaXNjcmV0YXMgY29uanVudGFzIGNvbiBmdW5jacOzbiBkZSBwcm9iYWJpbGlkYWQgY29uLSBqdW50YSAkcCh5XzEsIHlfMikkIHkgZnVuY2lvbmVzIGRlIHByb2JhYmlsaWRhZCBtYXJnaW5hbCAkcF8xKHlfMSkkIHkgJHBfMih5XzIpJCwgcmVzcGVjdGl2YW1lbnRlLCBlbnRvbmNlcyBsYSBmdW5jacOzbiBkZSBwcm9iYWJpbGlkYWQgZGlzY3JldGEgY29uZGljaW9uYWwgZGUgJFlfMSQgZGFkYSAkWV8yJCBlcwoKJHAoeV8xIHx5XzIpPVAoWV8xID15XzEgfFlfMiA9eV8yKT0gXGZyYWN7UChZXzEgPXlfMSxZXzIgPXlfMil9e1AoWV8yID0geV8yKX0gPSBcZnJhY3twKHlfMSx5XzIpfXtwXzIoeV8yKX0kCnNpZW1wcmUgcXVlICRwXzIoeV8yKSA+IDAkCgotLS0tCgpFbnRvbmNlcywgJFAoWV8xID0gMnxZXzIgPSAzKSQgZXMgbGEgcHJvYmFiaWxpZGFkIGNvbmRpY2lvbmFsIGRlIHF1ZSAkWV8xID0gMiQgZGFkbyBxdWUgJFlfMiA9IDMkLiBVbmEgaW50ZXJwcmV0YWNpw7NuIHNpbWlsYXIgc2UgcHVlZGUgdW5pciBhIGxhIHByb2JhYmlsaWRhZCBjb25kaWNpb25hbCAkcCh5XzJ8eV8xKSQuIE9ic2VydmUgcXVlICRwKHlfMXx5XzIpJCBlcyBpbmRlZmluaWRhIHNpICRwXzIoeV8yKSA9IDAkLgoKCi0tLS0KCiMjI0VqZW1wbG8gNS43CkNvbnN1bHRlIGVsIEVqZW1wbG8gNS41IHkgZW5jdWVudHJlIGxhIGRpc3RyaWJ1Y2nDs24gY29uZGljaW9uYWwgZGUgJFlfMSQgZGFkbyBxdWUgJFlfMiA9IDEkLiBFc3RvIGVzLCBkYWRvIHF1ZSB1bmEgZGUgbGFzIGRvcyBwZXJzb25hcyBkZWwgY29taXTDqSBlcyBkZW3Ds2NyYXRhLCBlbmN1ZW50cmUgbGEgZGlzdHJpYnVjacOzbiBjb24tIGRpY2lvbmFsIHBhcmEgZWwgbsO6bWVybyBkZSByZXB1YmxpY2Fub3Mgc2VsZWNjaW9uYWRvcyBwYXJhIGVsIGNvbWl0w6kuCgojIyMjU29sdWNpw7NuCkxhcyBwcm9iYWJpbGlkYWRlcyBjb25qdW50YXMgZXN0w6FuIGRhZGFzIGVuIGxhIFRhYmxhIDUuMi4gUGFyYSBoYWxsYXIgJHAoeV8xfFlfMiA9IDEpJCwgbm9zIGNvbmNlbi0gdHJhbW9zIGVuIGxhZmlsYSBjb3JyZXNwb25kaWVudGUgYSAkWV8yID0gMSQuIEVudG9uY2VzCgoKJFAoWV8xID0wfCBZXzIgPTEpID0gXGZyYWN7cCgwLCAxKX17cF8yKDEpfSA9IFxmcmFjezIvMTV9ezgvMTV9ID0gXGZyYWN7MX17NH0kLAoKJFAoWV8xID0gMXxZXzIgPSAxKSA9IFxmcmFje3AoMSwxKX17cF8yKDEpfT1cZnJhY3s2LzE1fXs4LzE1fT1cZnJhY3szfXs0fSQKCiRQKFlfMSDiiaUyfCBZXzIgPSAxKT0gXGZyYWN7cCgyLDEpfXtwXzIoMSl9ID0gXGZyYWN7MH17OC8xNX09MCQKCkVuIGVsIGNvbWl0w6kgc2VsZWNjaW9uYWRvIGFsZWF0b3JpYW1lbnRlLCBzaSB1bmEgcGVyc29uYSBlcyBkZW3Ds2NyYXRhIChvLCBsbyBxdWUgZXMgbG8gbWlzbW8sIHNpICRZXzIgPSAxJCksIGhheSB1bmEgYWx0YSBwcm9iYWJpbGlkYWQgZGUgcXVlIGVsIG90cm8gc2VhIHJlcHVibGljYW5vIChvIHNlYSAkWV8xID0gMSQpLgoKCkVuIGVsIGNhc28gY29udGludW8gcG9kZW1vcyBvYnRlbmVyIHVuYSBhbmFsb2fDrWEgYXByb3BpYWRhIGRlIGxhIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCBjb25kaWNpb25hbCAkcCh5XzF8eV8yKSQsIHBlcm8gbm8gc2Ugb2J0aWVuZSBlbiB1bmEgZm9ybWEgdGFuIHNlbmNpbGxhLiBTaSAkWV8xJCB5ICRZXzIkIHNvbiBjb250aW51YXMsICRQKFlfMSA9IHlfMXxZXzIgPSB5XzIpJCBubyBzZSBwdWVkZSBkZWZpbmlyIGNvbW8gZW4gZWwgY2FzbyBkaXNjcmV0byBwb3JxdWUgJChZXzEgPSB5XzEpJCB5ICQoWV8yID0geV8yKSQgc29uIGV2ZW50b3MgY29uIHByb2JhYmlsaWRhZCBjZXJvLiBMYXMgc2lndWllbnRlcyBjb25zaWRlcmFjaW9uZXMsIHNpbiBlbWJhcmdvLCBsbGV2YW4gYSB1bmEgZGVmaW5pY2nDs24gw7p0aWwgeSBjb25zaXN0ZW50ZSBwYXJhIHVuYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25kaWNpb25hbC4KClN1cG9uaWVuZG8gcXVlICRZXzEkIHkgJFlfMiQgc29uIGNvbnRpbnVhcyBjb25qdW50YXMgY29uIGZ1bmNpw7NuIGRlIGRlbnNpZGFkICRmKHlfMSwgeV8yKSQsIHBvZHLDrWFtb3MgZXN0YXIgaW50ZXJlc2Fkb3MgZW4gdW5hIHByb2JhYmlsaWRhZCBkZSBsYSBmb3JtYQokUChZXzEg4omkIHlfMXxZXzIgPSB5XzIpID0gRih5XzF8eV8yKSQsCnF1ZSwgY29tbyBmdW5jacOzbiBkZSAkeV8xJCBwYXJhIHVuYSAkeV8yJCAgZmlqYSwgc2UgZGVub21pbmEgZnVuY2nDs24gZGUgZGlzdHJpYnVjacOzbiBjb25kaWNpb25hbCBkZQokWV8xJCwgZGFkbyBxdWUgJFlfMSA9IHlfMiQuCgotLS0tCgojIyNEZWZpbmljaW9uIDUuNgpTaSAkWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBjb250aW51YXMgY29uanVudGFzIGNvbiBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25qdW50YSAkZih5XzEsIHlfMikkLCBlbnRvbmNlcyBsYSBmdW5jacOzbiBkZSBkaXN0cmlidWNpw7NuIGNvbmRpY2lvbmFsIGRlICRZXzEkIGRhZG8gcXVlICRZXzIgPSB5XzIkIGVzCiRGKHlfMXx5XzIpID0gUChZXzEg4omkIHlfMXxZXzIgPSB5XzIpJAoKLS0tLQoKT2JzZXJ2ZSBxdWUgJEYoeV8xfHlfMikkIGVzIHVuYSBmdW5jacOzbiBkZSAkeV8xJCBwYXJhIHVuIHZhbG9yICBmaWpvIGRlICR5XzIkLgpTaSBwdWRpw6lyYW1vcyB0b21hciAkRih5XzF8eV8yKSQsIG11bHRpcGxpY2FybG8gcG9yICRQKFlfMiA9IHlfMikkIHBhcmEgY2FkYSBwb3NpYmxlIHZhbG9yIGRlICRZXzIkIHkKc3VtYXIgdG9kYXMgbGFzIHByb2JhYmlsaWRhZGVzIHJlc3VsdGFudGVzLCBwb2Ryw61hbW9zIG9idGVuZXIgJEYoeV8xKSQuIEVzdG8gbm8gZXMgcG9zaWJsZSBwb3ItIHF1ZSBlbCBuw7ptZXJvIGRlIHZhbG9yZXMgcGFyYSAkeV8yJCBlcyBpbmNvbnRhYmxlIHkgdG9kYXMgbGFzIHByb2JhYmlsaWRhZGVzICRQKFlfMiA9IHlfMikkIHNvbiBjZXJvLiBQZXJvIHBvZGVtb3MgaGFjZXIgYWxnbyBhbsOhbG9nbyBhbCBtdWx0aXBsaWNhcmxvIHBvciAkZl8yKHlfMikkIHkgbHVlZ28gaW50ZWdyYXIgcGFyYSBvYnRlbmVyCgokRih5XzEpID0gXGludF97LVxpbmZ0eX1eXGluZnR5IEYoeV8xfHlfMilmXzIoeV8yKWR5XzIkCgpMYSBjYW50aWRhZCAkZl8yKHlfMilkeV8yJCBzZSBwdWVkZSBjb25zaWRlcmFyIGNvbW8gbGEgcHJvYmFiaWxpZGFkIGFwcm94aW1hZGEgZGUgcXVlICRZXzIkIHRvbWUgdW4gdmFsb3IgZW4gdW4gcGVxdWXDsW8gaW50ZXJ2YWxvIGFscmVkZWRvciBkZSAkeV8yJCwgeSBsYSBpbnRlZ3JhbCBlcyB1bmEgc3VtYSBnZW5lcmFsaXphZGEuCiBBaG9yYSwgZGUgY29uc2lkZXJhY2lvbmVzIHByZXZpYXMsIHNhYmVtb3MgcXVlCiAKICRGKHlfMSkgPSBcaW50X3stXGluZnR5fV57eV8xfWZfMSh0XzEpZHRfMSA9IFxpbnRfey1caW5mdHl9Xnt5XzF9W1xpbnRfey1caW5mdHl9XntcaW5mdHl9IGYodF8xLHlfMilkeV8yXWR0XzEkCiAKICQ9IFxpbnRfey1caW5mdHl9XntcaW5mdHl9IFxpbnRfey1caW5mdHl9Xnt5XzF9IGYodF8xLCB5XzIpZHRfMWR5XzIkCgpEZSBlc3RhcyBkb3MgZXhwcmVzaW9uZXMgcGFyYSAkRih5XzEpJCwgZGViZW1vcyB0ZW5lcgoKJEYoeV8xfHlfMilmXzIoeV8yKSA9IFxpbnRfey1caW5mdHl9Xnt5XzF9Zih0XzEseV8yKWR0XzEkCgpvIGJpZW4KCiRGKHlfMXx5XzIpID0gXGludF97XGluZnR5fXt5XzF9IFxmcmFje2YodF8xLCB5XzIpfXtmXzIoeV8yKX1kdF8xJAoKCkFsIGludGVncmFuZG8gZGUgZXN0YSBleHByZXNpw7NuIGxvIGxsYW1hcmVtb3MgZnVuY2nDs24gZGUgZGVuc2lkYWQgY29uZGljaW9uYWwgZGUgJFlfMSQgZGFkbyBxdWUgJFlfMiA9IHlfMiQsIHkgbG8gZGVub3RhcmVtb3MgcG9yICRmKHlfMXx5XzIpJC4KCi0tLS0KCiMjIyNEZWZpbmljacOzbiA1LjcKU2VhbiAkWV8xJCB5ICRZXzIkIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGNvbnRpbnVhcyBjb25qdW50YXMgY29uIGRlbnNpZGFkIGNvbmp1bnRhICRmKHlfMSwgeV8yKSQgeSBkZW5zaWRhZGVzIG1hcmdpbmFsZXMgJGZfMSh5XzEpJCB5ICRmXzIoeV8yKSQsIHJlc3BlY3RpdmFtZW50ZS4gUGFyYSBjdWFscXVpZXIgJHlfMiQgdGFsIHF1ZSAkZl8yKHlfMikkID4gMCwgbGEgZGVuc2lkYWQgY29uZGljaW9uYWwgZGUgJFlfMSQgZGFkYSAkWV8yID0geV8yJCBlc3TDoSBkYWRhIHBvcgoKJGYgKHlfMXx5XzIpID0gXGZyYWN7ZiAoeV8xLCB5XzIpfXtmXzIoeV8yKX0kCgp5LCBwYXJhIGN1YWxxdWllciAkeV8xJCB0YWwgcXVlICRmXzEoeV8xKT4gMCQsIGxhIGRlbnNpZGFkIGNvbmRpY2lvbmFsIGRlICRZXzIkIGRhZGEgJFlfMSA9IHlfMSQgZXN0w6EgZGFkYSBwb3IKJGYoeV8yfHlfMSk9IFxmcmFje2YoeV8xLHlfMil9eyBmXzEoeV8xKX0kCgotLS0tCgojIyNFamVtcGxvIDUuOApVbmEgbcOhcXVpbmEgYXV0b23DoXRpY2EgZXhwZW5kZWRvcmEgZGUgYmViaWRhcyB0aWVuZSB1bmEgY2FudGlkYWQgYWxlYXRvcmlhICRZXzIkIGRlIGJlYmlkYSBlbiBleGlzdGVuY2lhIGFsIHByaW5jaXBpbyBkZSB1biBkw61hIGRldGVybWluYWRvIHkgZG9zaSBjYSB1bmEgY2FudGlkYWQgYWxlYXRvcmlhICRZXzEkIGR1cmFudGUgZWwgZMOtYSAoY29uIGNhbnRpZGFkZXMgZXhwcmVzYWRhcyBlbiBnYWxvbmVzKS4gTGEgbcOhcXVpbmEgbm8gc2UgcmVhYmFzdGVjZSBkdXJhbnRlIGVsIGTDrWEgeSwgZW4gY29uc2VjdWVuY2lhLCAkWV8xIOKJpCBZXzIkLiBTZSBoYSBvYnNlcnZhZG8gcXVlICRZXzEkIHkgJFlfMiQgdGllbmVuIHVuYSBkZW5zaWRhZCBjb25qdW50YSBkYWRhIHBvcgoKCiRmKHlfMSx5XzIpPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH0xLzIgJiAw4omkeV8x4omkeV8y4omkMlxcICAgICAwICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJAoKRXN0byBlcywgbG9zIHB1bnRvcyAkKHlfMSwgeV8yKSQgZXN0w6FuIHVuaWZvcm1lbWVudGUgZGlzdHJpYnVpZG9zIGVuIGVsIHRyacOhbmd1bG8gY29uIGxhcyBmcm9udGVyYXMgZGFkYXMuIEVuY3VlbnRyZSBsYSBkZW5zaWRhZCBjb25kaWNpb25hbCBkZSAkWV8xJCBkYWRhICRZXzIgPSB5XzIkLiBFdmFsw7plIGxhIHByb2JhYmlsaWRhZCBkZSBxdWUgc2UgdmVuZGEgbWVub3MgZGUgMS8yIGdhbMOzbiwgZGFkbyBxdWUgbGEgbcOhcXVpbmEgY29udGllbmUgMS41IGdhbG9uZXMgYWwgZW1wZXphciBlbCBkw61hLgoKTGEgZGVuc2lkYWQgbWFyZ2luYWwgZGUgJFlfMiQgZXN0w6EgZGFkYSBwb3IgCgokZl8yKHlfMikgPVxpbnRfey1caW5mdHl9XntcaW5mdHl9IGYoeV8xLHlfMilkeV8xJAoKRW50b25jZXMsCiAKJGZfMih5XzIpID0gXGxlZnRce1xiZWdpbnthcnJheX17Y2x9IFxpbnRfezB9Xnt5XzJ9KDEvMilkeV8xID0gKDEvMil5XzIsICYgMOKJpHlfMiDiiaQyLFxcIFxpbnRfey1caW5mdHl9XntcaW5mdHl9MGR5XzE9MCwmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvLn1cZW5ke2FycmF5fVxyaWdodC4kIAoKT2JzZXJ2ZSBxdWUgJGZfMih5XzIpJCA+IDAgc2kgeSBzw7NsbyBzaSAkMCA8IHlfMiDiiaQgMiQuIEVudG9uY2VzLCBwYXJhIGN1YWxxdWllciAkMCA8IHlfMiDiiaQgMiQsIHVzYW5kbyBsYSBEZWZpbmljacOzbiA1LjcsCgokZih5XzF8eV8yKSA9IFxmcmFje2YoeV8xLHlfMil9e2ZfMih5XzIpfT1cZnJhY3sxLzJ9eygxLzIpeV8yfT1cZnJhY3sxfXt5XzJ9LHsw4omkeV8xIOKJpHlfMn0kCgpUYW1iacOpbiwgJGYoeV8xfHlfMikkIGVzIGluZGVmaW5pZGEgc2kgJHlfMiDiiaQgMCQgbyAkeV8yID4gMiQuIExhIHByb2JhYmlsaWRhZCBkZSBpbnRlcsOpcyBlcwoKJFAoWV8xIFxsZXEgMS8yfCBZXzIgPSAxLjUpID0gXGludF97LVxpbmZ0eX1eezEvMn0gZih5XzF8eV8yID0gMS41KWR5XzEgPSBcaW50X3swfV57MS8yfSBcZnJhY3sxfXsxLjV9ZHlfMSA9IFxmcmFjezEvMn17MS41fT1cZnJhY3sxfXszfSQKClNpIGxhIG3DoXF1aW5hIGNvbnRpZW5lIDIgZ2Fsb25lcyBhbCBlbXBlemFyIGVsIGTDrWEsIGVudG9uY2VzCgokUChZXzEgXGxlcSAxLzJ8IFlfMiA9IDIpIFxpbnRfezB9XnsxLzJ9IFxmcmFjezF9ezJ9ZHlfMSA9IFxmcmFjezF9ezR9JAoKUG9yIHRhbnRvLCBsYSBwcm9iYWJpbGlkYWQgY29uZGljaW9uYWwgZGUgcXVlICRZXzEg4omkIDEvMiQgZGFkbyBxdWUgJFlfMiA9IHlfMiQgY2FtYmlhIGRlIG1hbmVyYSBhcHJlY2lhYmxlIGRlcGVuZGllbmRvIGRlIGxhIHNlbGVjY2nDs24gcGFydGljdWxhciBkZSAkeV8yJC4KCiM1LjQgVmFyaWFibGVzIGFsZWF0b3JpYXMgaW5kZXBlbmRpZW50ZXMKRW4gZWwgRWplbXBsbyA1Ljggdmltb3MgZG9zIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGRlcGVuZGllbnRlcywgcGFyYSBsYXMgY3VhbGVzIGxhcyBwcm9iYWJpbGktIGRhZGVzIGFzb2NpYWRhcyBjb24gJFlfMSQgZGVwZW5kw61hbiBkZWwgdmFsb3Igb2JzZXJ2YWRvIGRlICRZXzIkLiBFbiBlbCBFamVyY2ljaW8gNS4yNCAoeSBhbGd1bm9zIG90cm9zKSDDqXN0ZSBubyBmdWUgZWwgY2FzbzogbGFzIHByb2JhYmlsaWRhZGVzIGFzb2NpYWRhcyBjb24gJFlfMSQgZXJhbiBpZ3VhbGVzLCBjdWFscXVpZXJhIHF1ZSBmdWVyYSBlbCB2YWxvciBvYnNlcnZhZG8gZGUgJFlfMiQuIEFob3JhIHByZXNlbnRhbW9zIHVuYSBkZWZpbmljacOzbiBmb3JtYWwgZGUgaW5kZXBlbmRlbmNpYSBkZSB2YXJpYWJsZXMgYWxlYXRvcmlhcy4KCkRvcyBldmVudG9zIEEgeSBCIHNvbiBpbmRlcGVuZGllbnRlcyBzaSAkUChBIOKIqSBCKSA9IFAoQSkgw5cgUChCKSQuIEN1YW5kbyBlc3R1ZGllbW9zIHZhcmlhYmxlcyBhbGVhdG9yaWFzLCBzaSAkYSA8IGIkIHkgJGMgPCBkJCBlcyBmcmVjdWVudGUgcXVlIG5vcyBpbnRlcmVzZW1vcyBlbiBldmVudG9zIGRlbCB0aXBvICQoYSA8IFlfMSDiiaQgYikg4oipIChjIDwgWV8yIOKJpCBkKSQuIFBvciBjb25zaXN0ZW5jaWEgY29uIGxhIGRlZmluaWNpw7NuIGFudGVyaW9yIGRlIGV2ZW50b3MgaW5kZXBlbmRpZW50ZXMsIHNpICRZXzEkIHkgJFlfMiQgc29uIGluZGVwZW5kaWVudGVzLCBub3MgZ3VzdGFyw61hIHRlbmVyCgokUChhPFlfMSDiiaRiLCBjPFlfMiDiiaRkKT1QKGE8WV8xIOKJpGIpw5dQKGM8WV8yIOKJpGQpJAoKcGFyYSBjdWFscXVpZXIgZWxlY2Npw7NuIGRlIG7Dum1lcm9zIHJlYWxlcyAkYSA8IGIkIHkgJGMgPCBkJC4gRXN0byBlcywgc2kgJFlfMSQgeSAkWV8yJCBzb24gaW5kZXBlbmRpZW50ZXMsIGxhIHByb2JhYmlsaWRhZCBjb25qdW50YSBzZSBwdWVkZSBlc2NyaWJpciBjb21vIGVsIHByb2R1Y3RvIGRlIGxhcyBwcm9iYWJpbGlkYWRlcyBtYXJnaW5hbGVzLiBFc3RhIHByb3BpZWRhZCBzZSBzYXRpc2ZhY2Ugc2kgJFlfMSQgeSAkWV8yJCBzb24gaW5kZXBlbmRpZW50ZXMgZW4gZWwgc2VudGlkbyBkZXRhbGxhZG8gZW4gbGEgc2lndWllbnRlIGRlZmluaWNpw7NuLgoKLS0tLQoKIyMjRGVmaW5pY2nDs24gNS44ClNlYSAkWV8xJCBxdWUgdGllbmUgdW5hIGZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gJEZfMSh5XzEpJCB5IHNlYSAkWV8yJCBxdWUgdGllbmUgdW5hIGZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gJEZfMih5XzIpJCwgeSAkRih5XzEsIHlfMikkIGVzIGxhIGZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gY29uanVudGEgZGUgJFlfMSQgeSAkWV8yJC4gRW50b25jZXMgc2UgZGljZSBxdWUgJFlfMSQgeSAkWV8yJCBzb24gaW5kZXBlbmRpZW50ZXMgc2kgeSBzw7NsbyBzaQoKJEYoeV8xLCB5XzIpID0gRl8xKHlfMSlGXzIoeV8yKSQKCnBhcmEgdG9kbyBwYXIgZGUgbsO6bWVyb3MgcmVhbGVzICQoeV8xLCB5XzIpJC4KU2kgJFlfMSQgeSAkWV8yJCBubyBzb24gaW5kZXBlbmRpZW50ZXMsIHNlIGRpY2UgcXVlIHNvbiBkZXBlbmRpZW50ZXMuCgoKLS0tLQoKClBvciBsbyBnZW5lcmFsIGVzIGPDs21vZG8gZXN0YWJsZWNlciBsYSBwcmVzZW5jaWEgbyBhdXNlbmNpYSBkZSBpbmRlcGVuZGVuY2lhLCBwb3IgbWVkaW8gZGVsIHJlc3VsdGFkbyBkZWwgc2lndWllbnRlIHRlb3JlbWEuIFNlIG9taXRlIGxhIGRlbW9zdHJhY2nDs247IHZlYSDigJxCaWJsaW9ncmFmw61hIHkgbGVjdHVyYXMgYWRpY2lvbmFsZXPigJ0gYWwgIGZpbmFsIGRlbCBjYXDDrXR1bG8uCgoKLS0tLQoKIyMjVGVvcmVtYSA1LjQKU2kgJFlfMSQgeSAkWV8yJCBzb24gdmFyaWFibGVzIGFsZWF0b3JpYXMgZGlzY3JldGFzIGNvbiBmdW5jacOzbiBkZSBwcm9iYWJpbGlkYWQgY29uanVudGEgJHAoeV8xLCB5XzIpJCB5IGZ1bmNpb25lcyBkZSBwcm9iYWJpbGlkYWQgbWFyZ2luYWwgJHBfMSh5XzEpJCB5ICRwXzIoeV8yKSQsIHJlc3BlY3RpdmFtZW50ZSwgZW50b25jZXMgJFlfMSQgeSAkWV8yJCBzb24gaW5kZXBlbmRpZW50ZXMgc2kgeSBzw7NsbyBzaQoKJHAoeV8xLCB5XzIpID0gcF8xKHlfMSlwXzIoeV8yKSQgCgpwYXJhIHRvZG9zIGxvcyBwYXJlcyBkZSBuw7ptZXJvcyByZWFsZXMgJCh5XzEsIHlfMikkLgoKU2kgJFlfMSQgeSAkWV8yJCBzb24gdmFyaWFibGVzIGFsZWF0b3JpYXMgY29udGludWFzIGNvbiBmdW5jacOzbiBkZSBkZW5zaWRhZCBjb25qdW50YSAkZl8xKHlfMSwgeV8yKSQgeSBmdW5jaW9uZXMgZGUgZGVuc2lkYWQgbWFyZ2luYWwgJGZfMSh5XzEpJCB5ICRmXzIoeV8yKSQsIHJlc3BlY3RpdmFtZW50ZSwgZW50b25jZXMgJFlfMSQgeSAkWV8yJCBzb24gaW5kZXBlbmRpZW50ZXMgc2kgeSBzw7NsbyBzaQokZih5XzEsIHlfMikgPSBmXzEoeV8xKSBmXzIoeV8yKSQgCgpwYXJhIHRvZG9zIGxvcyBwYXJlcyBkZSBuw7ptZXJvcyByZWFsZXMgJCh5XzEsIHlfMikkLgoKCi0tLS0KCkEgY29udGludWFjacOzbiBpbHVzdHJhbW9zIGVsIGNvbmNlcHRvIGRlIGluZGVwZW5kZW5jaWEgY29uIGFsZ3Vub3MgZWplbXBsb3MuCgotLS0tCgojIyNFamVtcGxvIDUuOQpQYXJhIGVsIHByb2JsZW1hIGRlIHRpcmFyIHVuIGRhZG8gZGUgbGEgU2VjY2nDs24gNS4yLCBkZW11ZXN0cmUgcXVlICRZXzEkIHkgJFlfMiQgc29uIGluZGVwZW5kaWVudGVzLgoKIyMjI1NvbHVjacOzbgpFbiBlc3RlIHByb2JsZW1hIGEgY2FkYSB1bm8gZGUgbG9zIDM2IHB1bnRvcyBtdWVzdHJhbGVzIHNlIGxlIGRpbyBwcm9iYWJpbGlkYWQgMS8zNi4gQ29uc2lkZXJlLCBwb3IgZWplbXBsbywgZWwgcHVudG8gKDEsIDIpLiBTYWJlbW9zIHF1ZSAkcCgxLCAyKSA9IDEvIDM2JC4gVGFtYmnDqW4sICRwXzEoMSkgPSBQKFlfMSA9IDEpID0gMS82JCB5ICRwXzIoMikgPSBQKFlfMiA9IDIpID0gMS82JC4gUG9yIHRhbnRvLAoKJHAoMSwgMikgPSBwXzEoMSkgcF8yKDIpLiQKCkxvIG1pc21vIGVzIGNpZXJ0byBwYXJhIHRvZG9zIGxvcyBkZW3DoXMgdmFsb3JlcyBkZSAkeV8xJCB5ICR5XzIkLCBkZSBsbyBjdWFsIHNlIGRlZHVjZSBxdWUgJFlfMSQgeSAkWV8yJCBzb24gaW5kZXBlbmRpZW50ZXMuCgotLS0tCgojIyNFamVtcGxvIDUuMTAKQ29uc3VsdGUgZWwgRWplbXBsbyA1LjUuIMK/RWwgbsO6bWVybyBkZSByZXB1YmxpY2Fub3MgZW4gbGEgbXVlc3RyYSBlcyBpbmRlcGVuZGllbnRlIGRlbCBuw7ptZXJvIGRlIGRlbcOzY3JhdGFzPyAowr9FcyAkWV8xJCBpbmRlcGVuZGllbnRlIGRlICRZXzIkPykKCiMjIyNTb2x1Y2nDs24KTGEgaW5kZXBlbmRlbmNpYSBkZSB2YXJpYWJsZXMgYWxlYXRvcmlhcyBkaXNjcmV0YXMgcmVxdWllcmUgcXVlICRwKHlfMSwgeV8yKSA9IHBfMSh5XzEpIHBfMih5XzIpJCBwYXJhIHRvZGEgc2VsZWNjacOzbiAkKHlfMSwgeV8yKSQuIEVudG9uY2VzLCBzaSBlc3RhIGlndWFsZGFkIGVzIHZpb2xhZGEgcGFyYSBjdWFscXVpZXIgcGFyIGRlIHZhbG9yZXMgJCh5XzEsIHlfMikkLCBsYXMgdmFyaWFibGVzIGFsZWF0b3JpYXMgc29uIGRlcGVuZGllbnRlcy4gQWwgb2JzZXJ2YXIgbGEgZXNxdWluYSBzdXBlcmlvciBpenF1aWVyZGEgZGUgbGEgVGFibGEgNS4yLCB2ZXJlbW9zIHF1ZQogIAokUCgwLCAwKSA9IDAuJAoKUGVybyAkcF8xKDApID0gMy8xNSQgeSAkcF8yKDApID0gNi8xNSQuIEVuIGNvbnNlY3VlbmNpYSwKJHAoMCwgMCkg4omgIHAxKDApIHAyKDApJCwKZGUgbW9kbyBxdWUgJFlfMSQgeSAkWV8yJCBzb24gZGVwZW5kaWVudGVzLgoKLS0tLQoKLS0tLQoKIyMjRWplbXBsbyA1LjExClNlYQoKJGYoeV8xLHlfMik9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfTZ5XzF5XzJeMiwgJiAw4omkeV8x4omkMSww4omkeV8y4omkMSxcXDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJAoKRGVtdWVzdHJlIHF1ZSAkWV8xJCB5ICRZXzIkIHNvbiBpbmRlcGVuZGllbnRlcy4KCiMjIyNTb2x1Y2nDs24KCiRmKHlfMSx5XzIpPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH1caW50X3stXGluZnR5fV57XGluZnR5fSBmKHlfMSx5XzIpZHlfMj1caW50X3swfV57MX02eV8xeV8yXjJkeV8yPTZ5XzEoXGZyYWN7eV8yXjN9ezN9XEJpZ3xfMF4xKT0yeV8xLCwgJiAw4omkeV8x4omkMSxcXCBcaW50X3stXGluZnR5fV57XGluZnR5fWYoeV8xLHlfMilkeV8yPVxpbnRfey1caW5mdHl9XntcaW5mdHl9MGR5XzEgPSAwLCAmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvfVxlbmR7YXJyYXl9XHJpZ2h0LiQKCkRlbCBtaXNtbyBtb2RvLAoKJGYoeV8xLHlfMik9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfVxpbnRfey1caW5mdHl9XntcaW5mdHl9IGYoeV8xLHlfMilkeV8xPVxpbnRfezB9XnsxfTZ5XzF5XzJeMmR5XzE9M3lfMl4yLCAmIDDiiaR5XzLiiaQxLFxcIFxpbnRfey1caW5mdHl9XntcaW5mdHl9Zih5XzEseV8yKWR5XzE9XGludF97LVxpbmZ0eX1ee1xpbmZ0eX0wZHlfMSA9IDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJAoKRW4gY29uc2VjdWVuY2lhIAoKJGYoeV8xLCB5XzIpPSBmXzEoeV8xKWZfMih5XzIpJAoKcGFyYSB0b2RvcyBsb3MgbsO6bWVyb3MgcmVhbGVzICQoeV8xLCB5XzIpJCB5LCBwb3IgdGFudG8sICRZXzEkIHkgJFlfMiQgc29uIGluZGVwZW5kaWVudGVzLgoKLS0tLQoKLS0tLQoKIyMjRWplbXBsbyA1LjEyClNlYQoKJGYoeV8xLHlfMikgPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH1cIDIsICYgMOKJpHlfMuKJpHlfMeKJpDEsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kCgpEZW11ZXN0cmUgcXVlICRZXzEkIHkgJFlfMiQgc29uIGRlcGVuZGllbnRlcy4KCiMjIyNTb2x1Y2nDs24KVmVtb3MgcXVlICRmKHlfMSwgeV8yKSA9IDIkIHNvYnJlIGxhIHJlZ2nDs24gc29tYnJlYWRhIHF1ZSBzZSB2ZSBlbiBsYSBGaWd1cmEgNS43LiBQb3IgdGFudG8KCiRmKHlfMSx5XzIpID1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9XCBcaW50X3swfV57eV8xfTJkeV8yID0gMnlfMiA9IDJ5XzJcQmlnfF8wXnt5XzF9PTJ5XzEsICYgMOKJpHlfMeKJpDEsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kCgo8ZGl2IHN0eWxlPSJ3aWR0aDozMDBweDsgaGVpZ2h0OjMwMHB4Ij4hWyBdKGZpZ3VyYSA1LjcucG5nKTwvZGl2PgoKRGVsIG1pc21vIG1vZG8sCgokZl8yKHlfMikgPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH1cIFxpbnRfe3lfMn1eezF9MmR5XzEgPSAyeV8xXEJpZ3xfe3lfMn1eezF9PTIoMS15XzIpLCAmIDDiiaR5XzLiiaQxLFxcIDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJCAKClBvciB0YW50bywKCiRmICh5XzEsIHlfMikgPSBmXzEoeV8xKSBmXzIoeV8yKSQKCnBhcmEgYWxnw7puIHBhciBkZSBuw7ptZXJvcyByZWFsZXMgJCh5XzEsIHlfMikkIHksIHBvciB0YW50bywgJFlfMSQgeSAkWV8yJCBzb24gZGVwZW5kaWVudGVzLgoKCi0tLS0KCk9ic2VydmFyw6EgdW5hIGRpZmVyZW5jaWEgZGlzdGludGEgZW4gbG9zIGzDrW1pdGVzIGRlIGludGVncmFjacOzbiBlbXBsZWFkb3MgcGFyYSBoYWxsYXIgbGFzIGZ1bmNpb25lcyBkZSBkZW5zaWRhZCBtYXJnaW5hbCBvYnRlbmlkYXMgZW4gbG9zIEVqZW1wbG9zIDUuMTEgeSA1LjEyLiBMb3MgbMOtbWl0ZXMgZGUgaW50ZWdyYWNpw7NuIHBhcmEgJHlfMiQsIGNvbXByZW5kaWRvcyBlbiBoYWxsYXIgbGEgZGVuc2lkYWQgbWFyZ2luYWwgZGUgJFlfMSQgZW4gZWwgRWplbXBsbyA1LjEyLCBkZXBlbmTDrWFuIGRlICR5XzEkLiBFbiBjb250cmFzdGUsIGxvcyBsw61taXRlcyBkZSBpbnRlZ3JhY2nDs24gZnVlcm9uIGNvbnN0YW50ZXMgY3VhbmRvIGRldGVybWluYW1vcyBsYXMgZnVuY2lvbmVzIGRlIGRlbnNpZGFkIG1hcmdpbmFsIGRlbCBFamVtcGxvIDUuMTEuIFNpIGxvcyBsw61taXRlcyBkZSBpbnRlZ3JhY2nDs24gc29uIGNvbnN0YW50ZXMsIGVsIHNpZ3VpZW50ZSB0ZW9yZW1hIHByb3BvcmNpb25hIHVuYSBmb3JtYSBmw6FjaWwgZGUgZGVtb3N0cmFyIGxhIGluZGVwZW5kZW5jaWEgZGUgZG9zIHZhcmlhYmxlcyBhbGVhdG9yaWFzLgoKLS0tLQoKIyMjVGVvcmVtYSA1LjUKClNlYW4gJFlfMSQgeSAkWV8yJCBxdWUgdGllbmVuIHVuYSBkZW5zaWRhZCBjb25qdW50YSAkZih5XzEsIHlfMikkIHF1ZSBlcyBwb3NpdGl2YSBzaSB5IHPDs2xvIHNpICRhIOKJpCB5XzEg4omkYiQgeSAkY+KJpHlfMiTiiaRkLCBwYXJhIGNvbnN0YW50ZXMgYSxiLGMgeSBkOyB5ICRmKHlfMSx5XzIpPTAkIGVuIG90cm8gY2Fzby5FbnRvbmNlcyAkWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBpbmRlcGVuZGllbnRlcyBzaSB5IHPDs2xvIHNpCgokZih5XzEsIHlfMikgPSBnKHlfMSloKHlfMikkCgpkb25kZSAkZyh5XzEpJCBlcyB1bmEgZnVuY2nDs24gbm8gbmVnYXRpdmEgZGUgJHlfMSQgc29sYW1lbnRlIHkgJGgoeV8yKSQgZXMgdW5hIGZ1bmNpw7NuIG5vIG5lZ2F0aXZhIGRlICR5XzIkIHNvbGFtZW50ZS4KCi0tLS0KCkxhIGRlbW9zdHJhY2nDs24gZGUgZXN0ZSB0ZW9yZW1hIHNlIG9taXRlLiAoVmVhIOKAnEJpYmxpb2dyYWbDrWEgeSBsZWN0dXJhcyBhZGljaW9uYWxlc+KAnSBhbCAgbmFsIGRlbCBjYXDDrXR1bG8uKSBFbCBiZW5lIGNpbyBjbGF2ZSBkZWwgcmVzdWx0YWRvIGRhZG8gZW4gZWwgVGVvcmVtYSA1LjUgZXMgcXVlIGVuIHJlYWxpZGFkIG5vIG5lY2VzaXRhbW9zIG9idGVuZXIgbGFzIGRlbnNpZGFkZXMgbWFyZ2luYWxlcy4gRGUgaGVjaG8sIGxhcyBmdW5jaW9uZXMgJGcoeV8xKSQgeSAkaCh5XzIpJCBubyBuZWNlc2l0YW4gc2VyIGZ1bmNpb25lcyBkZSBkZW5zaWRhZCAoYXVuIGN1YW5kbyBzZWFuIG3Dumx0aXBsb3MgY29uc3RhbnRlcyBkZSBsYXMgZGVuc2lkYWRlcyBtYXJnaW5hbGVzLCBkZWJlcsOtYW1vcyB0b21hcm5vcyBsYSBtb2xlc3RpYSBkZSBkZXRlcm1pbmFyIMOpc3RhcykuCgotLS0tCgojIyNFamVtcGxvIDUuMTMKU2VhbiAkWV8xJCB5ICRZXzIkIHF1ZSB0aWVuZW4gdW5hIGRlbnNpZGFkIGNvbmp1bnRhIGRhZGEgcG9yCgokZih5XzEseV8yKSA9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfVwgMnlfMSAmIDDiiaR5XzHiiaQxLCAw4omkeV8y4omkMSAsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kIAoKwr8kWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgaW5kZXBlbmRpZW50ZXM/CgojIyMgU29sdWNpw7NuCk9ic2VydmUgcXVlICRmKHlfMSx5XzIpJCBlcyBwb3NpdGl2YSBzaSB5IHPDs2xvIHNpICQw4omkeV8x4omkMSQgeSAkMCDiiaR5XzIg4omkMSQuQWRlbcOhcywgJGYoeV8xLHlfMik9Zyh5XzEpaCh5XzIpJCwKCmRvbmRlCgokZyh5XzEpID1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9XCB5XzEgJiAw4omkeV8x4omkMSxcXCAwLCAmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvfVxlbmR7YXJyYXl9XHJpZ2h0LiQgCgp5CgokaCh5XzIpID1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9XCAyICYgMOKJpHlfMeKJpDEsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kIAoKUG9yIHRhbnRvLCAkWV8xJCB5ICRZXzIkIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBpbmRlcGVuZGllbnRlcy4gT2JzZXJ2ZSBxdWUgJGcoeV8xKSQgeSAkaCh5XzIpJCwgY29tbyBhcXXDrSBzZSBkZSBuZW4sIG5vIHNvbiBmdW5jaW9uZXMgZGUgZGVuc2lkYWQsIGF1biBjdWFuZG8gJDJnKHlfMSkkIHkgJGgoeV8yKS8yJCBzZWFuIGRlbnNpZGFkZXMuCgoKLS0tLQoKIyMjIEVqZW1wbG8gNS4xNCAKCkNvbnN1bHRlIGVsIEVqZW1wbG8gNS40LiDCvyRZXzEkLCBsYSBjYW50aWRhZCBlbiBleGlzdGVuY2lhLCBlcyBpbmRlcGVuZGllbnRlIGRlICRZXzIkLCBsYSBjYW50aWRhZCB2ZW5kaWRhPwoKIyMjI1NvbHVjacOzbgoKQ29tbyBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBlcyBwb3NpdGl2YSBzaSB5IHPDs2xvIHNpICQwIOKJpCB5XzIg4omkIHlfMSDiiaQgMSQsIG5vIGV4aXN0ZW4gY29uc3RhbnRlcyBhLGIsYyB5IGQgdGFsIGVzIHF1ZSBsYSBkZW5zaWRhZCBzZWEgcG9zaXRpdmEgZW4gbGEgcmVnacOzbiAgJGHiiaR5XzEg4omkYixj4omkeV8yIOKJpGQkLkVudG9uY2VzLGVsIFRlb3JlbWEgNS41IG5vIHNlIHB1ZWRlIGFwbGljYXIuIE5vIG9ic3RhbnRlLCBzZSBwdWVkZSBkZW1vc3RyYXIgcXVlICRZXzEkIHkgJFlfMiQgc29uIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGRlcGVuZGllbnRlcyBwb3JxdWUgbGEgZGVuc2lkYWQgY29uanVudGEgbm8gZXMgZWwgcHJvZHVjdG8gZGUgbGFzIGRlbnNpZGFkZXMgbWFyZ2luYWxlcy4KCi0tLS0KCkxhcyBkZWZpbmljaW9uZXMgNS44IGbDoWNpbG1lbnRlIHNlIHB1ZWRlbiBnZW5lcmFsaXphciBhICRuJCBkaW1lbnNpb25lcy4gU3Vwb25nYSBxdWUgdGVuZW1vcyAkbiQgdmFyaWFibGVzIGFsZWF0b3JpYXMsICRZXzEsIC4gLiAuICwgWV9uJCxkb25kZSAkWV9pJCB0aWVuZSBmdW5jacOzbiBkZSBkaXN0cmlidWNpw7NuICRGX2koeV9pKSQsIHBhcmEgJGkgPSAxLDIsIC4uLixuJCA7IHkgZG9uZGUgJFlfMSxZXzIsLi4uLFlfbiQgdGllbmVuIGZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gY29uanVudGEgJEYoeV8xLHlfMiwgLi4uLHlfbikkLiBFbnRvbmNlcyAkWV8xLCBZXzIsIC4gLiAuICwgWV9uJCBzb24gaW5kZXBlbmRpZW50ZXMgc2kgeSBzw7NsbyBzaQoKJEYoeV8xLCB5XzIsLi4uLCB5X24pID0gRl8xKHlfMSnCt8K3wrcgRl9uKHlfbikkCgpwYXJhIHRvZG9zIGxvcyBuw7ptZXJvcyByZWFsZXMgJHlfMSwgeV8yLCAuIC4gLiAsIHlfbiQsIGNvbiBsYXMgZm9ybWFzIGVxdWl2YWxlbnRlcyBvYnZpYXMgcGFyYSBsb3MgY2Fzb3MgZGlzY3JldG9zIHkgY29udGludW9zLgoKLS0tLQoKIzUuNSBFbCB2YWxvciBlc3BlcmFkbyBkZSB1bmEgZnVuY2nDs24gZGUgdmFyaWFibGVzIGFsZWF0b3JpYXMKUGFyYSBqdXN0aSBjYXIgbGEgc2lndWllbnRlIGRlZmluaWNpw7NuIHPDs2xvIHNlIG5lY2VzaXRhIGNvbnN0cnVpciBlbCBlcXVpdmFsZW50ZSBtdWx0aXZhcmlhbnRlIGRlbCBjYXNvIHVuaXZhcmlhbnRlLgoKCi0tLS0KCiMjI0RlZmluaWNpw7NuIDUuOQpTZWEgJGcoWV8xLCBZXzIsIC4gLiAuICwgWV9rKSQgdW5hIGZ1bmNpw7NuIGRlIGxhcyB2YXJpYWJsZXMgYWxlYXRvcmlhcyBkaXNjcmV0YXMsICRZXzEsIFlfMiwgLiAuIC4gLCBZX2skLCBxdWUgdGllbmVuIGZ1bmNpw7NuIGRlIHByb2JhYmlsaWRhZCAkcCh5XzEsIHlfMiwgLiAuIC4gLCB5X2spJC4gRW50b25jZXMgZWwgdmFsb3IgZXNwZXJhZG8gZGUgJGcoWV8xLCBZXzIsIC4gLiAuICwgWV9rKSQgZXMKCiRFW2coWV8xLFlfMiwuLi4sWV9rKV09IFxzdW1fe1x0ZXh0e3RvZGEgfXlfa30gXGRvdHMgXHN1bV97XHRleHR7dG9kYSB9eV8yfSBcc3VtX3tcdGV4dHt0b2RhIH15XzF9IGcoeV8xLHlfMiwgLi4uLCB5X2spcCh5XzEseV8yLC4uLix5X2spLiQKClNpICRZXzEsIFlfMiwgLiAuIC4gLCBZX2skIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBjb250aW51YXMgY29uIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGNvbmp1bnRhICRmKHlfMSwgeV8yLCAuIC4gLiAsIHlfaykkLCBlbnRvbmNlcwoKJEVbZyhZXzEsWV8yLC4uLixZX2spXSA9IFxpbnRfey1caW5mdHl9XntcaW5mdHl9IFxkb3RzIFxpbnRfey1caW5mdHl9XntcaW5mdHl9IFxpbnRfey1caW5mdHl9XntcaW5mdHl9IGcoeV8xLHlfMiwuLi4seV9rKSBcdGltZXMgZih5XzEseV8yLC4uLix5X2spZHlfMWR5XzIuLi5keV9rJAoKCi0tLS0KCiMjI0VqZW1wbG8gNS4xNQpDb25zaWRlcmUgcXVlICRZXzEkIHkgJFlfMiQgdGllbmVuIHVuYSBkZW5zaWRhZCBjb25qdW50YSBkYWRhIHBvcgoKCiRmKHlfMSx5XzIpID1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9XCAyeV8xICYgMOKJpHlfMeKJpDEsIDDiiaR5XzLiiaQxLFxcIDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJCAKCkVuY3VlbnRyZSAkRShZXzEsWV8yKSQuCgojIyMjU29sdWNpw7NuCgpEZSBsYSBEZWZpbmljacOzbiA1Ljkgb2J0ZW5lbW9zCgokRVtnKFlfMSxZXzIpXSA9IFxpbnRfey1caW5mdHl9XntcaW5mdHl9XGludF97LVxpbmZ0eX1ee1xpbmZ0eX15XzF5XzJmKHlfMSx5XzIpZHlfMWR5XzI9XGludF97MH1eezF9XGludF97MH1eezF9eV8xeV8yKDJ5XzEpZHlfMWR5XzI9XGludF97MH1eezF9eV8yXEJpZyhcZnJhY3syeV8xXjN9ezN9XEJpZ3xfezB9XnsxfVxCaWcpZHlfMj1caW50X3swfV57MX1cQmlnKFxmcmFjezJ9ezN9XEJpZyl5XzJkeV8yID0gXGZyYWN7Mn17M31cZnJhY3t5XzJeMn17Mn1cQmlnfF97MH1eezF9PVxmcmFjezF9ezN9LiQKCgpEZW1vc3RyYXJlbW9zIHF1ZSBsYSBEZWZpbmljacOzbiA1LjkgZXMgY29uc2lzdGVudGUgY29uIGxhIERlZmluaWNpw7NuIDQuNSwgZW4gbGEgcXVlIGRlZmluaW1vcyBlbCB2YWxvciBlc3BlcmFkbyBkZSB1bmEgdmFyaWFibGUgYWxlYXRvcmlhIHVuaXZhcmlhbnRlLiBDb25zaWRlcmUgZG9zIHZhcmlhYmxlcyBhbGVhdG9yaWFzICRZXzEkIHkgJFlfMiQgY29uIGZ1bmNpw7NuIGRlIGRlbnNpZGFkICRmKHlfMSwgeV8yKSQuIERlc2VhbW9zIGhhbGxhciBlbCB2YWxvciBlc3BlcmFkbyBkZSAkZyhZXzEsIFlfMikgPSBZXzEkLgpEZSBsYSBEZWZpbmljacOzbiA1LjkgdGVuZW1vcwoKJEUoWV8xKT1caW50X3stXGluZnR5fV57XGluZnR5fVxpbnRfey1caW5mdHl9XntcaW5mdHl9IHlfMWYoeV8xLHlfMilkeV8yZHlfMT1caW50X3stXGluZnR5fV57XGluZnR5fSB5XzEgXEJpZ1tcaW50X3stXGluZnR5fV57XGluZnR5fWYoeV8xLHlfMilkeV8yIFxCaWddZHlfMS4kCgpMYSBjYW50aWRhZCBkZW50cm8gZGUgcGFyw6ludGVzaXMgcmVjdGFuZ3VsYXJlcywgcG9yIGRlZmluaWNpw7NuLCBlcyBsYSBmdW5jacOzbiBkZSBkZW5zaWRhZCBtYXJnaW5hbCBwYXJhICRZXzEkLiBQb3IgdGFudG8sIG9idGVuZW1vcwoKJEUoWV8xKT1caW50X3stXGluZnR5fV57XGluZnR5fSB5XzFmXzEoeV8xKWR5XzEsJAoKcXVlIGVzdMOhIGFjb3JkZSBjb24gbGEgRGVmaW5pY2nDs24gNC41LgoKLS0tLQoKIyMjRWplbXBsbyA1LjE2CkNvbnNpZGVyZSBxdWUgJFlfMSQgeSAkWV8yJCBxdWUgdGllbmVuIHVuYSBkZW5zaWRhZCBjb25qdW50YSBkYWRhIHBvcgoKJGYoeV8xLHlfMikgPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH1cIDJ5XzEgJiAw4omkeV8x4omkMSwgMOKJpHlfMuKJpDEsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kIAoKRW5jdWVudHJlIGVsIHZhbG9yIGVzcGVyYWRvIGRlICRZXzEkCgojIyMjU29sdWNpw7NuCgokRShZXzEpID0gXGludF97MH1eezF9XGludF97MH1eezF9IHlfMSgyeV8xKWR5XzFkeV8yPVxpbnRfezB9XnsxfSBcQmlnKFxmcmFjezJ5XzFeM317M31cQmlnfF97MH1eezF9XEJpZylkeV8yPVxpbnRfezB9XnsxfVxmcmFjezF9ezN9eV8yXEJpZ3xfezB9XnsxfT1cZnJhY3syfXszfSQKCkNvbnN1bHRlIGxhIEZpZ3VyYSA1LjYgeSBjYWxjdWxlIGVsIHZhbG9yIGVzcGVyYWRvIGRlICRZXzEkLiBFbCB2YWxvciAkRShZXzEpID0gMi8zJCBwYXJlY2Ugc2VyIGJhc3RhbnRlIHJhem9uYWJsZS4KCi0tLS0KCi0tLS0KCiMjI0VqZW1wbG8gNS4xNwpFbiBsYSBGaWd1cmEgNS42IGVsIHZhbG9yIG1lZGlvIGRlICRZXzIkIHBhcmVjZSBzZXIgaWd1YWwgYSAuNS4gQ29uIHJtZW1vcyBlc3RlIGPDoWxjdWxvIHZpc3VhbC4gRW5jdWVudHJlICRFKFlfMikkLgoKIyMjI1NvbHVjacOzbgoKJEUoWV8yKSA9IFxpbnRfezB9XnsxfVxpbnRfezB9XnsxfSB5XzIoMnlfMSlkeV8xZHlfMiA9IFxpbnRfezB9XnsxfXlfMlxCaWcoXGZyYWN7MnlfMV4yfXsyfVxCaWd8X3swfV57MX1cQmlnKWR5XzI9XGludF97MH1eezF9eV8yZHlfMj1cZnJhY3t5XzJeMn17Mn1cQmlnfF97MH17MX0gPSBcZnJhY3sxfXsyfSQKCi0tLS0KCi0tLS0KCiMjI0VqZW1wbG8gNS4xOApTZWFuIFlfMSB5IFlfMiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBjb24gZnVuY2nDs24gZGUgZGVuc2lkYWQKCiRmKHlfMSwgeV8yKT1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9XCAyeV8xICYgMOKJpHlfMeKJpDEsIDDiiaR5XzLiiaQxLFxcIDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJAoKRW5jdWVudHJlICRWKFlfMSkkCgojIyMjU29sdWNpw7NuCkxhIGRlbnNpZGFkIG1hcmdpbmFsIHBhcmEgJFlfMSQgb2J0ZW5pZGEgZW4gZWwgRWplbXBsbyA1LjYgZXMKCiRmKHlfMSk9XGxlZnRceyBcYmVnaW57YXJyYXl9e2NsfVwgMnlfMSAmIDDiiaR5XzHiiaQxLFxcIDAsICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJAoKRW50b25jZXMkVihZXzEpPUUgKFlfMV4yKSDiiJJbRShZXzEpXV4yJCwgeQoKJEUoWV8xXmspPSBcaW50X3stXGluZnR5fV57XGluZnR5fXlfMV5rZl8xKHlfMSlkeV8xID0gXGludF97MH1eezF9IHlfMV5rKigyeV8xKWR5XzEgPSBcZnJhY3syeV8xXntrKzJ9fXtrKzJ9XGJpZ3xfezB9XnsxfSA9IFxmcmFjezJ9e2srMn0uJAoKU2kgaGFjZW1vcyAkayA9IDEkIHkgJGsgPSAyJCwgc2UgZGVkdWNlIHF1ZSAkRShZXzEpJCB5ICRFKFlfMV4yJCBzb24gMi8zIHkgMS8yLCByZXNwZWN0aXZhbWVudGUuIEVudG9uY2VzICRWKFlfMSk9RShZXzJeMSkg4oiSW0UoWV8xKV1eMiA9MS8y4oiSKDIvMyleMiA9MS8xOCQuCgoKLS0tLQoKLS0tLQoKIyMjRWplbXBsbyA1LjE5CkRlbCBwcm9jZXNvIHBhcmEgcHJvZHVjaXIgdW5hIHN1c3RhbmNpYSBxdcOtbWljYSBpbmR1c3RyaWFsIHNlIG9idGllbmUgdW4gcHJvZHVjdG8gcXVlIGNvbnRpZW5lIGRvcyB0aXBvcyBkZSBpbXB1cmV6YXMuIFBhcmEgdW5hIG11ZXN0cmEgZXNwZWPDrWZpY2EgcHJvdmVuaWVudGUgZGUgZXN0ZSBwcm9jZXNvLCBkZW5vdGVtb3MgY29uICRZXzEkIGxhIHByb3BvcmNpw7NuIGRlIGltcHVyZXphcyBlbiBsYSBtdWVzdHJhIHkgY29uICRZXzIkIGxhIHByb3BvcmNpw7NuIGRlIGltcHVyZXphcyB0aXBvIEkgZW50cmUgdG9kYXMgbGFzIGltcHVyZXphcyBoYWxsYWRhcy4gU3Vwb25nYSBxdWUgbGEgZGlzdHJpYnVjacOzbiBjb25qdW50YSBkZSAkWV8xJCB5ICRZXzIkIHB1ZWRlIHNlciBtb2RlbGFkYSBjb24gbGEgc2lndWllbnRlIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZDoKCiRmKHlfMSx5XzIpPVxsZWZ0XHsgXGJlZ2lue2FycmF5fXtjbH1cIDIoMS15XzEpICYgMOKJpHlfMeKJpDEsMOKJpHlfMuKJpDEsXFwgMCwgJiBcdGV4dHtlbiBjdWFscXVpZXIgb3RybyBwdW50b31cZW5ke2FycmF5fVxyaWdodC4kCgpFbmN1ZW50cmUgZWwgdmFsb3IgZXNwZXJhZG8gZGUgbGEgcHJvcG9yY2nDs24gZGUgaW1wdXJlemFzIHRpcG8gSSBkZSBsYSBtdWVzdHJhLgoKIyMjI1NvbHVjacOzbgoKQ29tbyAkWV8xJCBlcyBsYSBwcm9wb3JjacOzbiBkZSBpbXB1cmV6YXMgZW4gbGEgbXVlc3RyYSB5ICRZXzIkIGVzIGxhIHByb3BvcmNpw7NuIGRlIGltcHVyZXphcyB0aXBvIEkgZW50cmUgbGFzIGltcHVyZXphcyBtdWVzdHJhbGVzLCBzZSBkZWR1Y2UgcXVlICRZXzFZXzIkIGVzIGxhIHByb3BvcmNpw7NuIGRlIGltcHVyZXphcyB0aXBvIEkgZW4gdG9kYSBsYSBtdWVzdHJhLiBFbnRvbmNlcywgYnVzY2Ftb3MgaGFsbGFyICRFKFlfMVlfMikkOgoKCiRFKFlfMVlfMik9IFxpbnRfezB9XnsxfVxpbnRfezB9XnsxfSAyeV8xeV8yKDEteV8xKWR5XzJkeV8xID0gMiBcaW50X3swfV57MX15XzEoMS15XzEoXGZyYWN7MX17Mn0pZHlfMT1caW50X3swfV57MX0oeV8xLXlfMV4yKWR5XzE9XEJpZyhcZnJhY3t5XzFeMn17Mn0tXGZyYWN7eV8xXjN9ezN9XEJpZylcQmlnfF97MH1eezF9PSBcZnJhY3sxfXsyfS1cZnJhY3sxfXszfT1cZnJhY3sxfXs2fSQKClBvciB0YW50bywgZXNwZXJhcsOtYW1vcyBxdWUgMS82IGRlIGxhIG11ZXN0cmEgZXN0dXZpZXJhIGZvcm1hZG8gcG9yIGltcHVyZXphcyB0aXBvIEkuCgotLS0tCgojNS42IFRlb3JlbWFzIGVzcGVjaWFsZXMKCkxvcyB0ZW9yZW1hcyBxdWUgZmFjaWxpdGFuIGVsIGPDoWxjdWxvIGRlbCB2YWxvciBlc3BlcmFkbyBkZSB1bmEgY29uc3RhbnRlLCBlbCB2YWxvciBlc3BlcmFkbyBkZSB1bmEgY29uc3RhbnRlIHBvciB1bmEgZnVuY2nDs24gZGUgdmFyaWFibGVzIGFsZWF0b3JpYXMgeSBlbCB2YWxvciBlc3BlcmFkbyBkZSBsYSBzdW1hIGRlIGZ1bmNpb25lcyBkZSB2YXJpYWJsZXMgYWxlYXRvcmlhcyBzb24gc2VtZWphbnRlcyBhIGxvcyBkZWwgY2FzbyB1bml2YXJpYW50ZS4KCi0tLS0KCiMjI1Rlb3JlbWEgNS42ClNlYSBjIHVuYSBjb25zdGFudGUuIEVudG9uY2VzCiRFKGMpID0gYy4kCgotLS0tCgojIyNUZW9yZW1hIDUuNwpTZWEgJGcoWV8xLCBZXzIpJCB1bmEgZnVuY2nDs24gZGUgbGFzIHZhcmlhYmxlcyBhbGVhdG9yaWFzICRZXzEkIHkgJFlfMiQgeSBzZWEgJGMkIHVuYSBjb25zdGFudGUuIEVudG9uY2VzCiRFW2NnKFlfMSwgWV8yKV0gPSBjRVtnKFlfMSwgWV8yKV0uJAoKLS0tLQoKIyMjVGVvcmVtYSA1LjgKClNlYW4gJFlfMSQgeSAkWV8yJCB2YXJpYWJsZXMgYWxlYXRvcmlhcyB5ICRnXzEoWV8xLCBZXzIpLCBnXzIgKFlfMSwgWV8yKSwgLiAuIC4gLCBnX2soWV8xLCBZXzIpJCBmdW5jaW9uZXMgZGUgJFlfMSQgeSAkWV8yJC4gRW50b25jZXMKCiRFW2dfMShZXzEsIFlfMikgKyBnXzIoWV8xLCBZXzIpICsgLiAuIC4gK2dfayhZXzEsIFlfMildID0gRVtnXzEoWV8xLCBZXzIpXSArIEVbZ18yKFlfMSwgWV8yKV0gKyAuIC4gLiArIEVbZ19rKFlfMSwgWV8yKV0uJAoKTGFzIGRlbW9zdHJhY2lvbmVzIGRlIGVzdG9zIHRyZXMgdGVvcmVtYXMgc29uIGFuw6Fsb2dhcyBhIGxvcyBjYXNvcyB1bml2YXJpYW50ZXMgZXN0dWRpYWRvcyBlbiBsb3MgQ2Fww610dWxvcyAzIHkgNC4KCi0tLS0KCiMjI0VqZW1wbG8gNS4yMApDb25zdWx0ZSBlbCBFamVtcGxvIDUuNC4gTGEgdmFyaWFibGUgYWxlYXRvcmlhICRZXzEg4oiSIFlfMiQgZGVub3RhIGxhIGNhbnRpZGFkIHByb3BvcmNpb25hbCBkZSBnYXNvbGluYSByZW1hbmVudGUgYWwgZmluYWwgZGUgbGEgc2VtYW5hLiBFbmN1ZW50cmUgJEUoWV8xIOKAkyBZXzIpJC4KCiMjIyNTb2x1Y2nDs24KRW1wbGVhbmRvIGVsIFRlb3JlbWEgNS44IGNvbiAkZ18xKFlfMSwgWV8yKSA9IFlfMSQgeSAkZyhZXzEsIFlfMikgPSDigJNZXzIkLCB2ZW1vcyBxdWUgJEUoWV8xIOKIkiBZXzIpID0gRShZXzEpICsgRSjiiJJZXzIpJC4KClNlIGFwbGljYSBlbCBUZW9yZW1hIDUuNywgZGFuZG8gJEUo4oCTWV8yKSA9IOKAk0UoWV8yKSQ7IHBvciB0YW50bywgJEUoWV8xIOKIkiBZXzIpID0gRShZXzEpIOKIkiBFKFlfMikkLgoKVGFtYmnDqW4sCgokRShZXzEpID0gXGludF97MH1eezF9XGludF97MH1ee3lfMX0geV8xKDN5XzEpZHlfMmR5XzEgPSBcaW50X3swfV57MX0gM3lfMV4zZHlfMSA9IFxmcmFjezN9ezR9eV8xXjRcQmlnfF97MH1eezF9PSBcZnJhY3szfXs0fSwkCgokRShZXzIpID0gXGludF97MH1eezF9XGludF97MH1ee3lfMX0geV8yKDN5XzEpZHlfMmR5XzEgPSBcaW50X3swfV57MX0zeV8xXEJpZyhcZnJhY3t5XzJeMn17Mn1cQmlnfF97MH1ee3lfMX1cQmlnKWR5XzE9XGludF97MH1eezF9XGZyYWN7M317Mn15XzFeM2R5XzE9IFxmcmFjezN9ezh9eV8xXjRcQmlnfF97MH1eezF9PVxmcmFjezN9ezh9JAoKRW50b25jZXMsIAoKJEUoWV8xIOKIkiBZXzIpID0gKFxmcmFjezN9ezR9KSDiiJIgKFxmcmFjezN9ezh9KSA9IFxmcmFjezN9ezh9JAoKZGUgbW9kbyBxdWUgZXNwZXJhcsOtYW1vcyBxdWUgMy84IGRlbCB0YW5xdWUgZXN0w6kgbGxlbm8gYWwgIGZpbmFsIGRlIGxhcyB2ZW50YXMgZGUgbGEgc2VtYW5hLgoKLS0tLQoKU2kgbGFzIHZhcmlhYmxlcyBhbGVhdG9yaWFzIG1vdGl2byBkZSBlc3R1ZGlvIHNvbiBpbmRlcGVuZGllbnRlcywgZW4gb2Nhc2lvbmVzIHBvZGVtb3Mgc2ltcGxpIGNhciBlbCB0cmFiYWpvIG5lY2VzYXJpbyBwYXJhIGhhbGxhciB2YWxvcmVzIGVzcGVyYWRvcy4gRWwgc2lndWllbnRlIHRlb3JlbWEgZXMgbXV5IMO6dGlsIGVuIGVzdGUgc2VudGlkby4KCi0tLS0KCiMjI1Rlb3JlbWEgNS45ClNlYW4gJFlfMSQgeSAkWV8yJCB2YXJpYWJsZXMgYWxlYXRvcmlhcyBpbmRlcGVuZGllbnRlcyB5IHNlYW4gJGcoWV8xKSQgeSAkaChZXzIpJCBmdW5jaW9uZXMgc8OzbG8gZGUgJFlfMSQgeSAkWV8yJCwgcmVzcGVjdGl2YW1lbnRlLiBFbnRvbmNlcwokRVtnKFlfMSloKFlfMildID0gRVtnKFlfMSldRVtoKFlfMildJCwgc2llbXByZSBxdWUgZXhpc3RhbiBsb3MgdmFsb3JlcyBlc3BlcmFkb3MKCiMjIyNEZW1vc3RyYWNpw7NuCkRhcmVtb3MgbGEgZGVtb3N0cmFjacOzbiBkZWwgcmVzdWx0YWRvIHBhcmEgZWwgY2FzbyBjb250aW51by4gRGVub3RlbW9zIGNvbiAkZih5XzEsIHlfMikkIGxhIGRlbnNpZGFkIGNvbmp1bnRhIGRlICRZXzEkIHkgJFlfMiQuIEVsIHByb2R1Y3RvICRnKFlfMSloKFlfMikkIGVzIHVuYSBmdW5jacOzbiBkZSAkWV8xJCB5ICRZXzIuJCBFbnRvbmNlcywgcG9yIGxhIERlZmluaWNpw7NuIDUuOSB5IGxhIHN1cG9zaWNpw7NuIGRlIHF1ZSAkWV8xJCB5ICRZXzIkIHNvbiBpbmRlcGVuZGllbnRlcywKCiRFW2coWV8xKWgoWV8yKV0gPSBcaW50X3stXGluZnR5fV57XGluZnR5fSBcaW50X3stXGluZnR5fV57XGluZnR5fWcoeV8xKWgoeV8yKWYoeV8xLHlfMilkeV8yZHlfMSQKJD1caW50X3stXGluZnR5fV57XGluZnR5fSBcaW50X3stXGluZnR5fV57XGluZnR5fWcoeV8xKWgoeV8yKWZfMSh5XzEpZl8yKHlfMilkeV8yZHlfMSQKCiQ9XGludF97LVxpbmZ0eX1ee1xpbmZ0eX1nKHlfMSlmXzEoeV8xKSBcQmlnW1xpbnRfey1caW5mdHl9XntcaW5mdHl9aCh5XzIpZl8yKHlfMilkeV8yXEJpZ11keV8xJAoKCiQ9XGludF97LVxpbmZ0eX1ee1xpbmZ0eX1nKHlfMSlmXzEoeV8xKUVbaChZXzIpXWR5XzEkCgokPUVbaChZXzIpXVxpbnRfey1caW5mdHl9XntcaW5mdHl9Zyh5XzEpZl8xKHlfMSlkeV8xID0gRVtnKFlfMSldRVtoKFlfMildJAoKTGEgZGVtb3N0cmFjacOzbiBwYXJhIGVsIGNhc28gZGlzY3JldG8gc2lndWUgdW4gbW9kbyBhbsOhbG9nby4KCi0tLS0KCiM1LjcgQ292YXJpYW56YSBkZSBkb3MgdmFyaWFibGVzIGFsZWF0b3JpYXMKCkludHVpdGl2YW1lbnRlIGNvbnNpZGVyYW1vcyBsYSBkZXBlbmRlbmNpYSBkZSBkb3MgdmFyaWFibGVzIGFsZWF0b3JpYXMgJFlfMSQgeSAkWV8yJCBjb21vIHVuIHByb2Nlc28gZW4gZWwgcXVlIHVuYSBkZSBsYXMgdmFyaWFibGVzLCBwb3IgZWplbXBsbyAkWV8xJCwgYXVtZW50YSBvIGRpc21pbnV5ZSBjdWFuZG8gJFlfMiQgY2FtYmlhLiBDb25jZW50cmFyZW1vcyBudWVzdHJhIGF0ZW5jacOzbiBlbiBkb3MgbWVkaWRhcyBkZSBkZXBlbmRlbmNpYTogbGEgY292YXJpYW56YSBlbnRyZSBkb3MgdmFyaWFibGVzIGFsZWF0b3JpYXMgeSBzdSBjb2VmaWNpZW50ZSBkZSBjb3JyZWxhY2nDs24uIEVuIGxhIEZpZ3VyYSA1LjgoYSkgeSAoYiksIHNlIG11ZXN0cmFuIGxhcyBncsOhZmljYXMgZGUgbG9zIHZhbG9yZXMgb2JzZXJ2YWRvcyBkZSBkb3MgdmFyaWFibGVzLCAkWV8xJCB5ICRZXzIkLCBwYXJhIG11ZXN0cmFzIGRlICRuID0gMTAkIHVuaWRhZGVzIGV4cGVyaW1lbnRhbGVzIHRvbWFkYXMgZGUgY2FkYSB1bmEgZGUgbGFzIGRvcyBwb2JsYWNpb25lcy4gU2kgdG9kb3MgbG9zIHB1bnRvcyBjYWVuIGEgbG8gbGFyZ28gZGUgdW5hIHJlY3RhLCBjb21vIGluZGljYSBsYSBGaWd1cmEgNS44KGEpLCAkWV8xJCB5ICRZXzIkIHNvbiBvYnZpYW1lbnRlIGRlcGVuZGllbnRlcy4gRW4gY29udHJhc3RlLCBsYSBGaWd1cmEgNS44KGIpIGluZGljYSBwb2NhIG8gbmluZ3VuYSBkZXBlbmRlbmNpYSBlbnRyZSAkWV8xJCB5ICRZXzIkLgpTdXBvbmdhIHF1ZSBjb25vY2Vtb3MgbG9zIHZhbG9yZXMgZGUgJEUoWV8xKSA9IFxtdV8xJCB5ICRFKFlfMikgPSBcbXVfMiQgeSBsb2NhbGl6YW1vcyBlc3RlIHB1bnRvIGVuIGxhIGdyw6FmaWNhIGRlIGxhIEZpZ3VyYSA1LjguIEFob3JhIGxvY2FsaXphbW9zIHVuIHB1bnRvIGdyYWZpY2FkbywgJCh5XzEsIHlfMikkLCBlbiBsYSBGaWd1cmEgNS44KGEpIHkgbWVkaW1vcyBsYXMgZGVzdmlhY2lvbmVzICQoeV8xIOKIkiBcbXVfMSkkIHkgJCh5XzIg4oiSIFxtdV8yKSQuIEFtYmFzIGRlc3ZpYWNpb25lcyB0b21hbiBlbCBtaXNtbyBzaWdubyBhbGdlYnJhaWNvIHBhcmEgY3VhbHF1aWVyIHB1bnRvLCAkKHlfMSwgeV8yKSQsIHkgc3UgcHJvZHVjdG8gJCh5XzEg4oiSIFxtdV8xKSh5XzIg4oiSIFxtdV8yKSQgZXMgcG9zaXRpdm8uIExvcyBwdW50b3MgYSBsYSBkZXJlY2hhIGRlICRcbXVfMSQgZ2VuZXJhbiBwYXJlcyBkZSBkZXN2aWFjaW9uZXMgcG9zaXRpdmFzOyBsb3MgcHVudG9zIGEgbGEgaXpxdWllcmRhIHByb2R1Y2VuIHBhcmVzIGRlIGRlc3ZpYWNpb25lcyBuZWdhdGl2YXM7IHkgZWwgcHJvbWVkaW8gZGVsIHByb2R1Y3RvIGRlIGxhcyBkZXN2aWFjaW9uZXMgJCh5XzEg4oiSIFxtdV8xKSh5XzIg4oiSIFxtdV8yKSQgZXMgZ3JhbmRlIHkgcG9zaXRpdm8uIFNpIGxhIHJlbGFjacOzbiBsaW5lYWwgaW5kaWNhZGEgZW4gbGEgRmlndXJhIDUuOChhKSBzZSBodWJpZXJhIGluY2xpbmFkbyBoYWNpYSBhYmFqbyBhIGxhIGRlcmVjaGEsIHRvZG9zIGxvcyBwYXJlcyBkZSBkZXN2aWFjaW9uZXMgY29ycmVzcG9uZGllbnRlcyBodWJpZXJhbiBzaWRvIGRlIHNpZ25vIGNvbnRyYXJpbyB5IGVsIHZhbG9yIHByb21lZGlvIGRlICQoeV8xIOKIkiBcbXVfMSkoeV8yIOKIkiBcbXVfMikkIGh1YmllcmEgc2lkbyB1biBuw7ptZXJvIG5lZ2F0aXZvIGdyYW5kZS4KCjxkaXYgc3R5bGU9IndpZHRoOjMwMHB4OyBoZWlnaHQ6MzAwcHgiPiFbIF0oZmlndXJhIDUuOC5wbmcpPC9kaXY+CgpMYSBzaXR1YWNpw7NuIHF1ZSBhY2FiYW1vcyBkZSBkZXNjcmliaXIgbm8gb2N1cnJlIHBhcmEgbGEgRmlndXJhIDUuOChiKSwgZG9uZGUgZXhpc3RlIHBvY2EgZGVwZW5kZW5jaWEgZW50cmUgJFlfMSQgeSAkWV8yJC4gU3VzIGRlc3ZpYWNpb25lcyBjb3JyZXNwb25kaWVudGVzICQoeV8xIOKIkiBcbXVfMSkkIHkgJCh5XzIg4oiSIFxtdV8yKSQgdG9tYXLDoW4gZWwgbWlzbW8gc2lnbm8gYWxnZWJyYWljbyBwYXJhIGFsZ3Vub3MgcHVudG9zIHkgc2lnbm9zIG9wdWVzdG9zIHBhcmEgb3Ryb3MuIEVudG9uY2VzLCBlbCBwcm9kdWN0byAkKHlfMSDiiJIgXG11XzEpKHlfMiDiiJIgXG11XzIpJCBzZXLDoSBwb3NpdGl2byBwYXJhIGFsZ3Vub3MgcHVudG9zLCBuZWdhdGl2byBwYXJhIG90cm9zIHkgcHJvbWVkaWFyw6EgYWxnw7puIHZhbG9yIGNlcmNhbm8gYSBjZXJvLgpFcyBldmlkZW50ZSBxdWUgZWwgdmFsb3IgcHJvbWVkaW8gZGUgJChZXzEg4oiSIFxtdV8xKShZXzIg4oiSIFxtdV8yKSQgcHJvcG9yY2lvbmEgdW5hIG1lZGlkYSBkZSBsYSBkZXBlbmRlbmNpYSBsaW5lYWwgZW50cmUgJFlfMSQgeSAkWV8yJC4gRXN0YSBjYW50aWRhZCwgJEVbKFlfMSDiiJIgXG11XzEpKFlfMiDiiJIgXG11XzIpXSQsIHNlIGRlbm9taW5hICpjb3ZhcmlhbnphKiBkZSAkWV8xJCB5ICRZXzIkLgoKCi0tLS0KCiMjI0RlZmluaWNpw7NuIDUuMTAKClNpICRZXzEkIHkgJFlfMiQgc29uIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGNvbiBtZWRpYXMgJFxtdV8xJCB5ICRcbXVfMiQsIHJlc3BlY3RpdmFtZW50ZSwgbGEgY292YXJpYW56YSBkZSAkWV8xJCB5ICRZXzIkIGVzCiRDb3YoWV8xLCBZXzIpID0gRSBbKFlfMSDiiJIgXG11XzEpKFlfMiDiiJIgXG11XzIpXSQgLgoKCi0tLS0KCkN1YW50byBtYXlvciBzZWEgZWwgdmFsb3IgYWJzb2x1dG8gZGUgbGEgY292YXJpYW56YSBkZSAkWV8xJCB5ICRZXzIkLCBtYXlvciBzZXLDoSBsYSBkZXBlbmRlbmNpYSBsaW5lYWwgZW50cmUgJFlfMSQgeSAkWV8yJC4gTG9zIHZhbG9yZXMgcG9zaXRpdm9zIGluZGljYW4gcXVlICRZXzEkIGF1bWVudGEgY3VhbmRvICRZXzIkIGF1bWVudGE7IGxvcyB2YWxvcmVzIG5lZ2F0aXZvcyBpbmRpY2FuIHF1ZSAkWV8xJCBkaXNtaW51eWUgY3VhbmRvICRZXzIkIGF1bWVudGEuIFVuIHZhbG9yIGNlcm8gZGUgbGEgY292YXJpYW56YSBpbmRpY2EgcXVlIGxhcyB2YXJpYWJsZXMgc29uIG5vIGNvcnJlbGFjaW9uYWRhcyB5IHF1ZSBubyBoYXkgZGVwZW5kZW5jaWEgbGluZWFsIGVudHJlICRZXzEkIHkgJFlfMiQuCgpEZXNhZm9ydHVuYWRhbWVudGUsIGVzIGRpZsOtY2lsIHV0aWxpemFyIGxhIGNvdmFyaWFuemEgY29tbyBtZWRpZGEgYWJzb2x1dGEgZGUgZGVwZW5kZW5jaWEgcG9ycXVlIHN1IHZhbG9yIGRlcGVuZGUgZGUgbGEgZXNjYWxhIGRlIG1lZGljacOzbi4gRW4gY29uc2VjdWVuY2lhLCBlcyBkaWbDrWNpbCBkZXRlcm1pbmFyIGEgcHJpbWVyYSB2aXN0YSBzaSB1bmEgY292YXJpYW56YSBwYXJ0aWN1bGFyIGVzIGdyYW5kZSBvIHBlcXVlw7FhLiBFc3RlIHByb2JsZW1hIHNlIHB1ZWRlIGVsaS0gbWluYXIgYWwgZXN0YW5kYXJpemFyIHN1IHZhbG9yIHkgdXNhciBlbCAqY29lZmljaWVudGUgZGUgY29ycmVsYWNpw7NuKiwgJFxyaG8kLCB1bmEgY2FudGlkYWQgcmVsYWNpb25hZGEgY29uIGxhIHZhcmlhbnphIHkgcXVlIHNlIGRlIG5lIGNvbW8KCiRccmhvID0gXGZyYWN7Q292KFlfMS1ZXzIpfXtcc2lnbWFfMSBcc2lnbWFfMn0kCgoKZG9uZGUgJFxzaWdtYV8xJCB5ICRcc2lnbWFfMiQgc29uIGRlc3ZpYWNpb25lcyBlc3TDoW5kYXIgZGUgJFlfMSQgeSAkWV8yJCwgcmVzcGVjdGl2YW1lbnRlLiBTZSBwdWVkZW4gaGFsbGFyIG3DoXMgZXhwb3NpY2lvbmVzIGRlbCBjb2VmaWNpZW50ZSBkZSBjb3JyZWxhY2nDs24gZW4gbGEgb2JyYSBkZSBIb2dnLCBDcmFpZyB5IE1jS2VhbiAoMjAwNSkgeSBNeWVycyAoMjAwMCkuCgpVbmEgZGVtb3N0cmFjacOzbiBkZWwgY29lZmljaWVudGUgZGUgY29ycmVsYWNpw7NuICRccmhvJCBzYXRpc2ZhY2UgbGEgZGVzaWd1YWxkYWQgJOKAkzEg4omkIFxyaG8g4omkIDEkIGVzdMOhIHJlc3VtaWRhIGVuIGVsIEVqZXJjaWNpbyA1LjE2Ny4KCkVsIHNpZ25vIGRlbCBjb2VmaWNpZW50ZSBkZSBjb3JyZWxhY2nDs24gZXMgaWd1YWwgYWwgc2lnbm8gZGUgbGEgY292YXJpYW56YS4gRW50b25jZXMsICRccmhvID4gMCQgaW5kaWNhIHF1ZSAkWV8yJCBhdW1lbnRhIGEgbWVkaWRhIHF1ZSAkWV8yJCBhdW1lbnRhIHkgJFxyaG8gPSArMSQgaW1wbGljYSBjb3JyZWxhY2nDs24gcGVyZmVjdGEsIGNvbiB0b2RvcyBsb3MgcHVudG9zIGNheWVuZG8gZW4gdW5hIHJlY3RhIGNvbiBwZW5kaWVudGUgcG9zaXRpdmEuIFVuIHZhbG9yIGRlICRccmhvID0gMCQgaW1wbGljYSBjZXJvIGNvdmFyaWFuemEgeSBxdWUgbm8gaGF5IGNvcnJlbGFjacOzbi4gVW4gY29lIGNpZW50ZSBuZWdhdGl2byBkZSBjb3JyZWxhY2nDs24gaW1wbGljYSB1bmEgZGlzbWludWNpw7NuIGVuICRZXzIkIGN1YW5kbyAkWV8xJCBhdW1lbnRhLCB5ICRccmhvPSDigJMxJCBpbXBsaWNhIGNvcnJlbGFjacOzbiBwZXJmZWN0YSwgY29uIHRvZG9zIGxvcyBwdW50b3MgY2F5ZW5kbyBlbiB1bmEgcmVjdGEgY29uIHBlbmRpZW50ZSBuZWdhdGl2YS4gVW5hIGbDs3JtdWxhIGNvbXB1dGFjaW9uYWwgY29udmVuaWVudGUgcGFyYSBsYSBjb3ZhcmlhbnphIHNlIGVzcGVjaWZpY2EgZW4gZWwgc2lndWllbnRlIHRlb3JlbWEuCgotLS0tCgojIyNUZW9yZW1hIDUuMTAKU2kgJFlfMSQgeSAkWV8yJCBzb24gdmFyaWFibGVzIGFsZWF0b3JpYXMgY29uIG1lZGlhcyAkXG11XzEkIHkgJFxtdV8yJCwgcmVzcGVjdGl2YW1lbnRlLCBlbnRvbmNlcyAKCiRDb3YoWV8xLCBZXzIpID0gRSBbKFlfMSDiiJIgXG11XzEpKFlfMiDiiJIgXG11XzIpXSA9IEUoWV8xWV8yKSDiiJIgRShZXzEpRShZXzIpJC4KCiRDb3YoWV8xLCBZXzIpID0gRSBbKFlfMSDiiJIgXG11XzEpKFlfMiDiiJIgXG11XzIpXSQKJD0gRShZXzFZXzIg4oiSIFxtdV8xWV8yIOKIkiBcbXVfMllfMSArIFxtdV8xXG11XzIpLiQKCkRlbCBUZW9yZW1hIDUuOCwgZWwgdmFsb3IgZXNwZXJhZG8gZGUgdW5hIHN1bWEgZXMgaWd1YWwgYSBsYSBzdW1hIGRlIGxvcyB2YWxvcmVzIGVzcGVyYS0gZG9zOyB5IGRlbCBUZW9yZW1hIDUuNywgZWwgdmFsb3IgZXNwZXJhZG8gZGUgdW5hIGNvbnN0YW50ZSBtdWx0aXBsaWNhZG8gcG9yIHVuYSBmdW5jacOzbiBkZSB2YXJpYWJsZXMgYWxlYXRvcmlhcyBlcyBsYSBjb25zdGFudGUgcG9yIGVsIHZhbG9yIGVzcGVyYWRvLiBFbnRvbmNlcywKCiRDb3YoWV8xLCBZXzIpID0gRShZXzFZXzIpIOKIkiBcbXVfMSBFKFlfMikg4oiSIFxtdV8yIEUoWV8xKSArIFxtdV8xXG11XzIkLgoKQ29tbyAkRShZXzEpID0gXG11XzEkIHkgJEUoWV8yKT0gXG11XzIkLCBzZSBkZWR1Y2UgcXVlCgokQ292KFlfMSwgWV8yKSA9IEUoWV8xWV8yKSDiiJIgRShZXzEpRShZXzIpID0gRShZXzFZXzIpIOKIkiBcbXVfMVxtdV8yLiQKCi0tLS0KCiMjI0VqZW1wbG8gNS4yMgpDb25zdWx0ZSBlbCBFamVtcGxvIDUuNC4gRW5jdWVudHJlIGxhIGNvdmFyaWFuemEgZW50cmUgbGEgY2FudGlkYWQgZW4gZXhpc3RlbmNpYSAkWV8xJCB5IGxhIGNhbnRpZGFkIGRlIHZlbnRhcyAkWV8yJC4KCiMjIyNTb2x1Y2nDs24KUmVjdWVyZGUgcXVlICRZXzEkIHkgJFlfMiQgdGllbmVuIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGNvbmp1bnRhIGRhZGEgcG9yCgokZih5XzEseV8yKT1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9M3lfMSAmIDDiiaR5XzLiiaR5XzHiiaQxO1xcICAgICAwICYgXHRleHR7ZW4gY3VhbHF1aWVyIG90cm8gcHVudG99XGVuZHthcnJheX1ccmlnaHQuJAoKRW50b25jZXMsIAoKJEUoWV8xWV8yKSA9IFxpbnRfezB9XnsxfVxpbnRfezB9Xnt5XzF9IHlfMXlfMigzeV8xKWR5XzJkeV8xID0gXGludF97MH1eezF9IDN5XzFeMlxCaWcoXGZyYWN7eV8yXjJ9ezJ9XEJpZ3xfezB9Xnt5XzF9XEJpZylkeV8xPVxpbnRfezB9XnsxfVxmcmFjezN9ezJ9eV8xXjRkeV8xID0gXGZyYWN7M317Mn1cQmlnKFxmcmFje3lfMV41fXs1fVxCaWd8X3swfV57MX1cQmlnKT1cZnJhY3szfXsxMH0uJAoKRGVsIEVqZW1wbG8gNS4yMCwgc2FiZW1vcyBxdWUgJEUoWV8xKSA9IDMvNCQgeSAkRShZXzIpID0gMy84JC4gRW50b25jZXMsIHVzYW5kbyBlbCBUZW9yZW1hIDUuMTAsIG9idGVuZW1vcwoKJENvdihZXzEsIFlfMikgPSBFKFlfMVlfMikg4oiSIEUoWV8xKUUoWV8yKSA9ICgzLzEwKSDiiJIgKDMvNCkoMy84KSA9IC4zMCDiiJIgLjI4ID0gLjAyLiQKCkVuIGVzdGUgZWplbXBsbywgdmFsb3JlcyBncmFuZGVzIGRlICRZXzIkIHB1ZWRlbiBwcmVzZW50YXJzZSBzw7NsbyBjb24gdmFsb3JlcyBncmFuZGVzIGRlICRZXzEkIHkgbGEgZGVuc2lkYWQsICRmKHlfMSwgeV8yKSQsIGVzIG3DoXMgZ3JhbmRlIHBhcmEgdmFsb3JlcyBtw6FzIGdyYW5kZXMgZGUgJFlfMSQgKHZlYSBsYSBGaWd1cmEgNS40KS4gRW50b25jZXMsIGludHVpbW9zIHF1ZSBsYSBjb3ZhcmlhbnphIGVudHJlICRZXzEkIHkgJFlfMiQgZGViZSBzZXIgcG9zaXRpdmEuCgoKLS0tLQoKIyMjRWplbXBsbyA1LjIzClRlbmdhbiAkWV8xJCB5ICRZXzIkIGRlbnNpZGFkIGNvbmp1bnRhIGRhZGEgcG9yCgokZih5XzEseV8yKT1cbGVmdFx7IFxiZWdpbnthcnJheX17Y2x9MnlfMSAmIDDiiaR5XzHiiaQxLCAw4omkeV8y4omkMTtcXCAgICAgMCAmIFx0ZXh0e2VuIGN1YWxxdWllciBvdHJvIHB1bnRvfVxlbmR7YXJyYXl9XHJpZ2h0LiQKCkVuY3VlbnRyZSBsYSBjb3ZhcmlhbnphIGRlICRZXzEkIHkgJFlfMiQuCgojIyMjU29sdWNpw7NuCkRlbCBFamVtcGxvIDUuMTUsICRFKFlfMVlfMikgPSAxLzMkLiBUYW1iacOpbiwgZGUgbG9zIEVqZW1wbG9zIDUuMTYgeSA1LjE3LCAkXG11XzEgPSBFKFlfMSkgPSAyLzMkIHkgJFxtdV8yID0gRShZXzIpID0gMS8yJCwgeQokQ292KFlfMSwgWV8yKSA9IEUoWV8xWV8yKSDiiJIgXG11XzFcbXVfMiA9ICgxLzMpIOKIkiAoMi8zKSgxLzIpID0gMCQuCgotLS0tCgpFbCBFamVtcGxvIDUuMjMgcHJvcG9yY2lvbmEgdW4gY2FzbyBlc3BlY8OtZmljbyBkZWwgcmVzdWx0YWRvIGdlbmVyYWwgZGFkbyBlbiBlbCBUZW9yZW1hIDUuMTEuCgotLS0tCgojIyNUZW9yZW1hIDUuMTEKU2kgWV8xIHkgWV8yIHNvbiB2YXJpYWJsZXMgYWxlYXRvcmlhcyBpbmRlcGVuZGllbnRlcywgZW50b25jZXMgCgokQ292KFlfMSwgWV8yKSA9IDAuJAoKQXPDrSwgbGFzIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGluZGVwZW5kaWVudGVzIGRlYmVuIHNlciBubyBjb3JyZWxhY2lvbmFkYXMuIAoKIyMjI0RlbW9zdHJhY2nDs24KRWwgVGVvcmVtYSA1LjEwIGVzdGFibGVjZSBxdWUKCiRDb3YoWV8xLCBZXzIpID0gRShZXzFZXzIpIOKIklxtdV8xXG11XzIuJAoKQ29tbyAkWV8xJCB5ICRZXzIkIHNvbiBpbmRlcGVuZGllbnRlcywgZWwgVGVvcmVtYSA1LjkgaW1wbGljYSBxdWUgCgokRShZXzFZXzIpID0gRShZXzEpRShZXzIpID0gXG11XzFcbXVfMiQsCgp5IGVsIHJlc3VsdGFkbyBkZXNlYWRvIHNlIGRlZHVjZSBkZSBpbm1lZGlhdG8uCgotLS0tCgpPYnNlcnZlIHF1ZSBsYXMgdmFyaWFibGVzIGFsZWF0b3JpYXMgJFlfMSQgeSAkWV8yJCBkZWwgRWplbXBsbyA1LjIzIHNvbiBpbmRlcGVuZGllbnRlczsgZW4gY29uc2VjdWVuY2lhLCBwb3IgZWwgVGVvcmVtYSA1LjExLCBzdSBjb3ZhcmlhbnphIGRlYmUgc2VyIGNlcm8uIEVsIHJlY8OtcHJvY28gZGVsIFRlb3JlbWEgNS4xMSBubyBlcyB2ZXJkYWRlcm8sIGNvbW8gc2UgaWx1c3RyYSBlbiBlbCBlamVtcGxvIHNpZ3VpZW50ZS4KCi0tLS0KCiMjI0VqZW1wbG8gNS4yNAoKU2VhbiAkWV8xJCB5ICRZXzIkIHZhcmlhYmxlcyBhbGVhdG9yaWFzIGRpc2NyZXRhcyBjb24gZGlzdHJpYnVjacOzbiBkZSBwcm9iYWJpbGlkYWQgY29uanVudGEgY29tbyBzZSB2ZSBlbiBsYSBUYWJsYSA1LjMuIERlbXVlc3RyZSBxdWUgJFlfMSQgeSAkWV8yJCBzb24gZGVwZW5kaWVudGVzIHBlcm8gdGllbmVuIGNvdmFyaWFuemEgY2Vyby4KCiMjIyMjU29sdWNpw7NuCkVsIGPDoWxjdWxvIGRlIHByb2JhYmlsaWRhZGVzIG1hcmdpbmFsZXMgZGEgJHBfMSjigJMxKSA9IHBfMSgxKSA9IDUvMTYgPSBwXzIo4oCTMSkgPSBwXzIoMSkkIHkgJHBfMSgwKSA9IDYvMTYgPSBwXzIoMCkkLiBFbCB2YWxvciAkcCgwLCAwKSA9IDAkIGVuIGxhIGNlbGRhIGRlbCBjZW50cm8gc2UgZGVzdGFjYS4gT2J2aWFtZW50ZSwKCnx8JHlfMSR8JHlfMSR8JHlfMSR8CnwtfC0tLXwtLS18LS0tfAp8KiokeV8yJCoqfCoqLTEqKnwqKjAqKnwqKisxKip8CnwtMXwxLzE2fDMvMTZ8MS8xNnwKfDB8My8xNnwwfDMvMTZ8CnwrMXwxLzE2fDMvMTZ8MS8xNnwKCgokcCgwLCAwKSDiiaAgcF8xKDApIHBfMigwKSwkCgp5IGVzdG8gZXMgc3UgY2llbnRlIHBhcmEgZGVtb3N0cmFyIHF1ZSAkWV8xJCB5ICRZXzIkIHNvbiBkZXBlbmRpZW50ZXMuCk9ic2VydmFuZG8gZGUgbnVldm8gbGFzIHByb2JhYmlsaWRhZGVzIG1hcmdpbmFsZXMsIHZlbW9zIHF1ZSAkRShZXzEpID0gRShZXzIpID0gMCQuCgpUYW1iacOpbiwKCiRFKFlfMVlfMik9XHN1bV97XHRleHR7dG9kYSB9eV8xfVxzdW1fe1x0ZXh0e3RvZGEgfXlfMn0geV8xeV8ycCh5XzEseV8yKSQKJD0oLTEpKC0xKSgxLzE2KSsoLTEpKDApKDMvMTYpKygtMSkoMSkoMS8xNikkCiQrKDApKC0xKSgzLzE2KSsoMCkoMCkoMCkrKDApKDEpKDMvMTYpJAokKDEpKC0xKSgxLzE2KSsoMSkoMCkoMy8xNikrKDEpKDEpKDEvMTYpJAokPSgxLzE2KS0oMS8xNiktKDEvMTYpKygxLzE2KT0wJAoKRW50b25jZXMsCgokQ292KFlfMSxZXzIpPUUoWV8xWV8yKS1FKFlfMSlFKFlfMikgPSAwLTAoMCk9MCQKCkVzdGUgZWplbXBsbyBkZW11ZXN0cmEgcXVlIGVsIHJlY8OtcHJvY28gZGVsIFRlb3JlbWEgNS4xMSBubyBlcyB2ZXJkYWRlcm8uIFNpIGxhIGNvdmFyaWFuLQp6YSBkZSBkb3MgdmFyaWFibGVzIGFsZWF0b3JpYXMgZXMgY2VybywgbGFzIHZhcmlhYmxlcyBubyBuZWNlc2l0YW4gc2VyIGluZGVwZW5kaWVudGVzLgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIA==