Instrucciones generales

El Objetivo de este proyecto Desarrollar habilidades de modelación y visualización con el software GeoGebra en el curso de matemática básica 1.

Entregable

Un breve informe en formato PDF y enlace con un video de 5 minutos máximo explicando los resultados de su proyecto.El PDF debe incluir:

  • Caratula en la primera hoja con tus datos personales
  • Enunciado de cada problema
  • Construcción realizada para cada problema
  • Capturas de las construcciones de GeoGebra
  • Ecuaciones finales
  • Comentarios

entrega tu proyecto utilizando el nombre Proyecto_Taller_Apellido_Nombre_carnet.pdf

Criterios de evaluación

  • Modelos y cálculos correctos : 40 pts
  • Construcción en GeoGebra (organización, uso de herramientas, etiquetas): 30 pts
  • Interpretación y comunicación (explicaciones, conclusiones): 20 pts
  • Presentación (orden, formato solicitado): 10 pts

Recomendación:

  • Trabaja en GeoGebra Clásico 5.
  • Activa Vista Algebraica Vista Gráfica y, cuando convenga, Hoja de Cálculo.
  • Para visualizar tu construcción utiliza la opción “ver todos los objetos”
  • Utiliza deslizadores para parámetros y nombra tus objetos.

Problema 1

Por razones no del todo claras, el número de pececillos de salmón que sobreviven al viaje desde los lugares de desove hasta el mar abierto varía aproximadamente de forma senoidal. La tabla muestra los nacimientos (en miles) durante 16 años.

Datos (año, salmón × 1000):

Año Nacimientos Año Nacimientos
2011 42 2019 54
2012 36 2020 62
2013 27 2021 56
2014 24 2022 50
2015 26 2023 43
2016 32 2024 38
2017 42 2025 31
2018 51 2026 21

Realiza lo siguiente.

  • Dibuja los puntos sobre la vista gráfica de GeoGebra (Ajusta correctamente la ventana de visualización)

  • Crea el deslizador c en GeoGebra con el objetivo de ajustar el modelo \(y=a\sin(w(t-c))+b\)

    • EL valor de b es el corrimiento encuentralo como (valor máximo + valor mínimo)/2
    • Ajusta la amplitud como (valor máximo - valor mínimo)/2
    • Obtén w como \(2\pi/periodo\) en donde el periodo lo calculas como 2(tiempo de valor máximo- tiempo de valor mínimo )
  • ¿Cuál es tu modelo final \(y=a\sin(w(t-c))+b\)?

  • Gráfica tu modelo y los puntos en la misma ventana.

  • Utiliza una herramienta de ajuste senoidal en GeoGebra para hallar el mejor ajuste (p. ej., FitSin() / AjusteSeno()) y compáralo con tu modelo del inciso anterior. Reporta la función final y el período observado.

  • Interpreta el modelo: ¿En qué años predice máximos y mínimos?

Problema 2

En mecánica celeste (leyes de Kepler), las órbitas alrededor de un cuerpo masivo son elipses con el cuerpo central ubicado en un foco. Considera un satélite artificial orbitando la Tierra en un plano. Su órbita tiene semieje mayor \(a\) y excentricidad \(e\) (con \(0<e<1\)). El semieje menor es \(b=a\sqrt{1-e^2}\) y la distancia del centro al foco es \(c=ae\).

Toma los siguientes datos

  • a = 8,500 km y e = 0.45.
  • Coloca la Tierra en el foco derecho \((c,0)\).
  • La elipse está centrada en el origen con ecuación \(\frac{x^2}{a^2}+\frac{y^2}{b^2}=1\), \(b=a\sqrt{1-e^2}\), \(c=ae\)

Realiza lo siguiente:

  1. Calcula \(b\) y \(c\). Escribe la ecuación de la elipse.

  2. Identifica y marca en la gráfica el periapsis (punto más cercano al foco) y el apoapsis (más lejano). ¿Cuáles son sus distancias al foco \((c,0)\)?

  3. Verifica la propiedad focal: para un punto \(P\) cualquiera en la elipse, la suma de distancias a los dos focos es constante e igual a \(2a\). Compruébalo numéricamente con varios puntos.

  4. Discute por qué una mayor excentricidad \(e\) produce órbitas más “alargadas”. Repite (rápido) con \(e=0.2\) para comparar.

Sugerencias para GeoGebra.

  1. Crea deslizadores a y e (0<e<1). Define b = a * sqrt(1 - e^2) y c = a * e.
  2. Dibuja la elipse con:
    • Opción A: Curva( a*cos(t), b*sin(t), t, 0, 2π ).
    • Opción B: Herramienta Elipse (centro, foco) usando centro en el origen y un foco en \((c,0)\).
  3. Marca los focos \((±c,0)\) y los puntos \((±a,0)\).
  4. Construye una línea desde \((c,0)\) a \((a,0)\) y a \((-a,0)\) para visualizar periapsis/apoapsis; mide sus longitudes con Herramienta de Distancia.
  5. Para comprobar la suma de distancias, crea un punto P sobre la elipse y calcula d1 = Distancia(P, (c,0)), d2 = Distancia(P, (-c,0)) y d1 + d2 (debe ser \(2a\)).
  6. Cambia el deslizador e y observa la forma de la órbita.

Problema 3

En un taller de metalurgia, una pieza de acero sale de un tratamiento térmico y se deja enfriar en un ambiente que se mantiene a 25 °C. Según la Ley de enfriamiento de Newton, la temperatura de la pieza decae de forma exponencial hacia la temperatura ambiente:

\[T(t) = T_a + A\,e^{-kt}\]

donde \(T\) es la temperatura de la pieza (°C), \(t\) el tiempo (minutos), \(T_a = 25\) °C la temperatura ambiente, \(A\) la diferencia inicial de temperatura y \(k>0\) la constante de enfriamiento.

Datos medidos (tiempo en minutos, temperatura en °C):

\(t\) (min) \(T\) (°C) \(t\) (min) \(T\) (°C)
0 180.0 25 46.3
5 129.4 30 38.8
10 94.1 35 34.6
15 72.2 40 31.1
20 56.0

Realiza lo siguiente:

  1. Gráfica de los datos. Ingresa los datos en la Hoja de Cálculo de GeoGebra, crea la lista de puntos y ajusta la ventana de visualización. ¿Qué forma tiene la gráfica? ¿A qué valor parece acercarse la temperatura cuando \(t\) crece?

  2. Modelo con deslizadores. Crea los deslizadores A y k y la función T(x) = 25 + A*exp(-k*x). Usa el dato inicial \(T(0)=180\) para obtener \(A\) y ajusta k a mano hasta que la curva pase lo más cerca posible de los puntos. Reporta los valores elegidos.

  3. Linealización con logaritmos. Aplica logaritmo natural al modelo y demuestra que

\[\ln(T - 25) = \ln A - k\,t\]

es una recta en las variables \(t\) y \(Y=\ln(T-25)\). En la Hoja de Cálculo crea los puntos \((t,\ \ln(T-25))\), grafícalos y obtén la recta de mejor ajuste con AjusteLineal() / FitLine(). A partir de la pendiente y del intercepto calcula \(k\) y \(A\) (recuerda que \(A = e^{\text{intercepto}}\)).

  1. Ajuste exponencial de GeoGebra. Crea los puntos \((t,\ T-25)\) y usa AjusteExp() / FitExp(). Compara el resultado con los valores obtenidos en b) y c). Escribe tu modelo final \(T(t)\).

  2. Preguntas de aplicación (resuélvelas algebraicamente con logaritmos y verifícalas en GeoGebra con el comando Interseca() o la herramienta Intersección):

    1. ¿En cuántos minutos la pieza alcanza 40 °C, temperatura a la que ya puede manipularse con seguridad?
    2. ¿Cuánto tiempo tarda la diferencia \(T - 25\) en reducirse a la mitad? (vida media del enfriamiento, \(t_{1/2} = \ln 2 / k\)).
    3. Según el modelo, ¿qué temperatura tendrá la pieza a los 60 minutos? ¿Alcanzará alguna vez exactamente los 25 °C? Justifica.
  3. Función inversa. Despeja \(t\) en función de \(T\) para obtener

\[t(T) = -\frac{1}{k}\ln\!\left(\frac{T-25}{A}\right)\]

Grafícala en GeoGebra (puedes usar Inversa()) junto con \(T(t)\) y la recta \(y=x\). Indica el dominio y el rango de cada función e interpreta qué representa la asíntota de cada una.

Sugerencias para GeoGebra.

  1. En la Hoja de Cálculo escribe \(t\) en la columna A y \(T\) en la columna B. En C2 escribe =ln(B2 - 25) y arrastra hacia abajo.
  2. Selecciona las columnas A y B y usa Crear lista de puntos (clic derecho → Crear). Repite con A y C para los puntos linealizados (en la lista, la columna A va como x). Para \((t,\ T-25)\) crea una columna D con =B2 - 25.
  3. Para el ajuste lineal: recta = AjusteLineal(listaLn); la pendiente se obtiene con Pendiente(recta).
  4. Dibuja la asíntota horizontal y = 25 con línea punteada.
  5. Añade un texto dinámico que muestre los valores de \(A\), \(k\) y \(t_{1/2}\).

Recomendaciones finales

  • Nombra tus objetos y añade textos dinámicos, así tu captura evidencia los valores usados.
  • Guarda tu archivo PDF como Proyecto_Taller_Apellido_Nombre_carnet.pdf.
  • Incluye en el informe las ecuaciones finales y capturas claras de cada construcción.
LS0tDQp0aXRsZTogIlByb3llY3RvIFRhbGxlciBNYXRlbcOhdGljYSBCw6FzaWNhIDEiDQphdXRob3I6ICJEZXBhcnRhbWVudG8gZGUgTWF0ZW1hdGljYSBGSVVTQUMiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclZC8lbS8lWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0aGVtZTogdW5pdGVkDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdG9jX2RlcHRoOiAzDQogICAgbnVtYmVyX3NlY3Rpb25zOiBmYWxzZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQpmb250c2l6ZTogMTNwdA0KZ2VvbWV0cnk6IG1hcmdpbj0yLjJjbQ0KbGFuZzogZXMNCi0tLQ0KDQoNCiMgKipJbnN0cnVjY2lvbmVzIGdlbmVyYWxlcyoqDQoNCkVsICoqT2JqZXRpdm8qKiAgZGUgZXN0ZSBwcm95ZWN0byBEZXNhcnJvbGxhciBoYWJpbGlkYWRlcyBkZSBtb2RlbGFjacOzbiB5IHZpc3VhbGl6YWNpw7NuIGNvbiBlbCBzb2Z0d2FyZSAqKkdlb0dlYnJhKiogZW4gZWwgY3Vyc28gZGUgbWF0ZW3DoXRpY2EgYsOhc2ljYSAxLiANCg0KIyMgKipFbnRyZWdhYmxlKioNCg0KVW4gYnJldmUgKippbmZvcm1lKiogZW4gZm9ybWF0byBQREYgeSBlbmxhY2UgY29uIHVuIHZpZGVvICBkZSA1IG1pbnV0b3MgbcOheGltbyBleHBsaWNhbmRvIGxvcyByZXN1bHRhZG9zIGRlIHN1IHByb3llY3RvLkVsIFBERiBkZWJlIGluY2x1aXI6DQoNCiogQ2FyYXR1bGEgZW4gbGEgcHJpbWVyYSBob2phIGNvbiB0dXMgZGF0b3MgcGVyc29uYWxlcw0KKiBFbnVuY2lhZG8gZGUgY2FkYSBwcm9ibGVtYQ0KKiBDb25zdHJ1Y2Npw7NuIHJlYWxpemFkYSBwYXJhIGNhZGEgcHJvYmxlbWEgIA0KKiBDYXB0dXJhcyAgZGUgbGFzIGNvbnN0cnVjY2lvbmVzICBkZSBHZW9HZWJyYQ0KKiBFY3VhY2lvbmVzIGZpbmFsZXMgDQoqIENvbWVudGFyaW9zDQoNCmVudHJlZ2EgdHUgIHByb3llY3RvIHV0aWxpemFuZG8gZWwgbm9tYnJlICBgUHJveWVjdG9fVGFsbGVyX0FwZWxsaWRvX05vbWJyZV9jYXJuZXQucGRmYA0KDQojIyAqKkNyaXRlcmlvcyBkZSBldmFsdWFjacOzbioqDQoNCi0gTW9kZWxvcyB5IGPDoWxjdWxvcyBjb3JyZWN0b3MgOiAqKjQwIHB0cyoqICANCi0gQ29uc3RydWNjacOzbiBlbiBHZW9HZWJyYSAob3JnYW5pemFjacOzbiwgdXNvIGRlIGhlcnJhbWllbnRhcywgZXRpcXVldGFzKTogKiozMCBwdHMqKiAgDQotIEludGVycHJldGFjacOzbiB5IGNvbXVuaWNhY2nDs24gKGV4cGxpY2FjaW9uZXMsIGNvbmNsdXNpb25lcyk6ICoqMjAgcHRzKiogIA0KLSBQcmVzZW50YWNpw7NuIChvcmRlbiwgZm9ybWF0byBzb2xpY2l0YWRvKTogKioxMCBwdHMqKg0KDQojIyAqKlJlY29tZW5kYWNpw7NuOioqIA0KDQoqIFRyYWJhamEgZW4gKipHZW9HZWJyYSBDbMOhc2ljbyA1KiouIA0KKiBBY3RpdmEgKipWaXN0YSBBbGdlYnJhaWNhKiogKipWaXN0YSBHcsOhZmljYSoqIHksIGN1YW5kbyBjb252ZW5nYSwgKipIb2phIGRlIEPDoWxjdWxvKiouIA0KKiBQYXJhIHZpc3VhbGl6YXIgIHR1IGNvbnN0cnVjY2nDs24gIHV0aWxpemEgbGEgb3BjacOzbiAidmVyIHRvZG9zIGxvcyBvYmpldG9zICINCiogVXRpbGl6YSAgKipkZXNsaXphZG9yZXMqKiBwYXJhIHBhcsOhbWV0cm9zIHkgbm9tYnJhIHR1cyBvYmpldG9zLg0KDQotLS0NCg0KIyAqKlByb2JsZW1hIDEqKiANCg0KUG9yIHJhem9uZXMgbm8gZGVsIHRvZG8gY2xhcmFzLCBlbCBuw7ptZXJvIGRlIHBlY2VjaWxsb3MgZGUgc2FsbcOzbiBxdWUgc29icmV2aXZlbiBhbCB2aWFqZSBkZXNkZSBsb3MgbHVnYXJlcyBkZSBkZXNvdmUgaGFzdGEgZWwgbWFyIGFiaWVydG8gKip2YXLDrWEgYXByb3hpbWFkYW1lbnRlIGRlIGZvcm1hIHNlbm9pZGFsKiouIExhIHRhYmxhIG11ZXN0cmEgbG9zIG5hY2ltaWVudG9zIChlbiAqKm1pbGVzKiopIGR1cmFudGUgMTYgYcOxb3MuDQoNCioqRGF0b3MgKGHDsW8sIHNhbG3Ds24gw5cgMTAwMCk6KioNCg0KfCBBw7FvICB8IE5hY2ltaWVudG9zIHwgQcOxbyAgfCBOYWNpbWllbnRvcyB8DQp8LS0tLS06fC0tLS0tLS0tLS0tLTp8LS0tLS06fC0tLS0tLS0tLS0tLTp8DQp8IDIwMTEgfCAgICAgICAgICA0MiB8IDIwMTkgfCAgICAgICAgICA1NCB8DQp8IDIwMTIgfCAgICAgICAgICAzNiB8IDIwMjAgfCAgICAgICAgICA2MiB8DQp8IDIwMTMgfCAgICAgICAgICAyNyB8IDIwMjEgfCAgICAgICAgICA1NiB8DQp8IDIwMTQgfCAgICAgICAgICAyNCB8IDIwMjIgfCAgICAgICAgICA1MCB8DQp8IDIwMTUgfCAgICAgICAgICAyNiB8IDIwMjMgfCAgICAgICAgICA0MyB8DQp8IDIwMTYgfCAgICAgICAgICAzMiB8IDIwMjQgfCAgICAgICAgICAzOCB8DQp8IDIwMTcgfCAgICAgICAgICA0MiB8IDIwMjUgfCAgICAgICAgICAzMSB8DQp8IDIwMTggfCAgICAgICAgICA1MSB8IDIwMjYgfCAgICAgICAgICAyMSB8DQoNCioqUmVhbGl6YSBsbyBzaWd1aWVudGUuKioNCg0KKiBEaWJ1amEgbG9zIHB1bnRvcyAgc29icmUgbGEgdmlzdGEgZ3LDoWZpY2EgZGUgR2VvR2VicmEgIChBanVzdGEgY29ycmVjdGFtZW50ZSBsYSB2ZW50YW5hIGRlIHZpc3VhbGl6YWNpw7NuKSANCiANCiogIENyZWEgZWwgZGVzbGl6YWRvciAgICoqYyoqICBlbiAgR2VvR2VicmEgY29uIGVsIG9iamV0aXZvIGRlIGFqdXN0YXIgZWwgIG1vZGVsbyAqKiR5PWFcc2luKHcodC1jKSkrYiQqKg0KDQogICAgKyBFTCB2YWxvciBkZSBiIGVzIGVsIGNvcnJpbWllbnRvIGVuY3VlbnRyYWxvICBjb21vICh2YWxvciBtw6F4aW1vICsgdmFsb3IgbcOtbmltbykvMg0KICAgICsgQWp1c3RhIGxhIGFtcGxpdHVkICBjb21vICh2YWxvciBtw6F4aW1vIC0gdmFsb3IgbcOtbmltbykvMg0KICAgICsgT2J0w6luICB3IGNvbW8gKiokMlxwaS9wZXJpb2RvJCoqIGVuIGRvbmRlIGVsIHBlcmlvZG8gIGxvIGNhbGN1bGFzIGNvbW8gMih0aWVtcG8gZGUgdmFsb3IgbcOheGltby0gdGllbXBvIGRlIHZhbG9yIG3DrW5pbW8gKQ0KICAgIA0KDQoqIMK/Q3XDoWwgZXMgdHUgbW9kZWxvIGZpbmFsICoqJHk9YVxzaW4odyh0LWMpKStiJCoqPw0KKiBHcsOhZmljYSB0dSBtb2RlbG8gIHkgbG9zIHB1bnRvcyAgZW4gbGEgbWlzbWEgdmVudGFuYS4NCg0KDQoqIFV0aWxpemEgdW5hIGhlcnJhbWllbnRhIGRlICoqYWp1c3RlIHNlbm9pZGFsKiogZW4gR2VvR2VicmEgcGFyYSBoYWxsYXIgZWwgKiptZWpvciBhanVzdGUqKiAocC4gZWouLCBgRml0U2luKClgIC8gKipBanVzdGVTZW5vKCkqKikgeSBjb21ww6FyYWxvIGNvbiB0dSBtb2RlbG8gZGVsIGluY2lzbyBhbnRlcmlvci4gUmVwb3J0YSBsYSBmdW5jacOzbiBmaW5hbCB5IGVsICoqcGVyw61vZG8qKiBvYnNlcnZhZG8uDQoNCiogSW50ZXJwcmV0YSBlbCBtb2RlbG86IMK/RW4gcXXDqSAqKmHDsW9zKiogcHJlZGljZSBtw6F4aW1vcyB5IG3DrW5pbW9zPw0KDQoNCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBWZXJpZmljYWNpw7NuIGludGVybmEgZGUgbG9zIGRhdG9zIChubyB2aXNpYmxlIHBhcmEgZWwgZXN0dWRpYW50ZSkNCiMgVmFsb3JlcyBvcmlnaW5hbGVzICsgcnVpZG8gTigwLDEpIHJlZG9uZGVhZG8g4oCUIHNlbWlsbGEgOTkNCnNldC5zZWVkKDk5KQ0KYW5pb3MgICAgPC0gMjAxMToyMDI2DQpiYXNlICAgICA8LSBjKDQzLCAzNiwgMjcsIDIzLCAyNiwgMzMsIDQzLCA1MCwgNTYsIDYzLCA1NywgNTAsIDQ0LCAzOCwgMzAsIDIyKQ0KcnVpZG8gICAgPC0gcm91bmQocm5vcm0oMTYsIG1lYW4gPSAwLCBzZCA9IDEpKQ0KbmFjaW0gICAgPC0gYmFzZSArIHJ1aWRvDQojIG5hY2ltID09IGMoNDIsIDM2LCAyNywgMjQsIDI2LCAzMiwgNDIsIDUxLCA1NCwgNjIsIDU2LCA1MCwgNDMsIDM4LCAzMSwgMjEpDQpgYGANCg0KDQoNCg0KIyAqKlByb2JsZW1hIDIqKg0KDQpFbiBtZWPDoW5pY2EgY2VsZXN0ZSAobGV5ZXMgZGUgS2VwbGVyKSwgbGFzIMOzcmJpdGFzIGFscmVkZWRvciBkZSB1biBjdWVycG8gbWFzaXZvIHNvbiAqKmVsaXBzZXMqKiBjb24gZWwgY3VlcnBvIGNlbnRyYWwgdWJpY2FkbyBlbiAqKnVuIGZvY28qKi4gQ29uc2lkZXJhIHVuIHNhdMOpbGl0ZSBhcnRpZmljaWFsIG9yYml0YW5kbyBsYSBUaWVycmEgZW4gdW4gcGxhbm8uIFN1IMOzcmJpdGEgdGllbmUgKipzZW1pZWplIG1heW9yKiogXChhXCkgeSAqKmV4Y2VudHJpY2lkYWQqKiBcKGVcKSAoY29uIFwoMDxlPDFcKSkuIEVsICoqc2VtaWVqZSBtZW5vcioqIGVzIFwoYj1hXHNxcnR7MS1lXjJ9XCkgeSBsYSBkaXN0YW5jaWEgZGVsIGNlbnRybyBhbCBmb2NvIGVzIFwoYz1hZVwpLg0KDQo8aW1nIHNyYz0iZWxsaXBzZV9vcmJpdC5wbmciIHdpZHRoPSIzMDAiIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyBtYXJnaW46YXV0bzsiPg0KDQoNCioqVG9tYSBsb3Mgc2lndWllbnRlcyBkYXRvcyAqKg0KDQotIGEgPSA4LDUwMCBrbSAgeSAgZSA9IDAuNDUuICANCi0gQ29sb2NhIGxhICoqVGllcnJhKiogZW4gZWwgZm9jbyBkZXJlY2hvIFwoKGMsMClcKS4gIA0KLSBMYSBlbGlwc2UgZXN0w6EgY2VudHJhZGEgZW4gZWwgb3JpZ2VuIGNvbiBlY3VhY2nDs24gJFxmcmFje3heMn17YV4yfStcZnJhY3t5XjJ9e2JeMn09MSQsICRiPWFcc3FydHsxLWVeMn0kLCAkYz1hZSQNCg0KKipSZWFsaXphIGxvIHNpZ3VpZW50ZToqKg0KDQphKSBDYWxjdWxhIFwoYlwpIHkgXChjXCkuIEVzY3JpYmUgbGEgKiplY3VhY2nDs24qKiBkZSBsYSBlbGlwc2UuICANCg0KYikgSWRlbnRpZmljYSB5IG1hcmNhIGVuIGxhIGdyw6FmaWNhIGVsICoqcGVyaWFwc2lzKiogKHB1bnRvIG3DoXMgY2VyY2FubyBhbCBmb2NvKSB5IGVsICoqYXBvYXBzaXMqKiAobcOhcyBsZWphbm8pLiDCv0N1w6FsZXMgc29uIHN1cyAqKmRpc3RhbmNpYXMqKiBhbCBmb2NvIFwoKGMsMClcKT8gIA0KDQpjKSBWZXJpZmljYSBsYSAqKnByb3BpZWRhZCBmb2NhbCoqOiBwYXJhIHVuIHB1bnRvIFwoUFwpIGN1YWxxdWllcmEgZW4gbGEgZWxpcHNlLCBsYSBzdW1hIGRlIGRpc3RhbmNpYXMgYSBsb3MgZG9zIGZvY29zIGVzIGNvbnN0YW50ZSBlIGlndWFsIGEgXCgyYVwpLiBDb21wcnXDqWJhbG8gbnVtw6lyaWNhbWVudGUgY29uIHZhcmlvcyBwdW50b3MuICANCg0KZCkgRGlzY3V0ZSBwb3IgcXXDqSB1bmEgbWF5b3IgKipleGNlbnRyaWNpZGFkKiogXChlXCkgcHJvZHVjZSDDs3JiaXRhcyBtw6FzICJhbGFyZ2FkYXMiLiBSZXBpdGUgKHLDoXBpZG8pIGNvbiBcKGU9MC4yXCkgcGFyYSBjb21wYXJhci4NCg0KDQoqKlN1Z2VyZW5jaWFzIHBhcmEgR2VvR2VicmEuKioNCg0KMS4gQ3JlYSAqKmRlc2xpemFkb3JlcyoqIGBhYCB5IGBlYCAoMDxlPDEpLiBEZWZpbmUgYGIgPSBhICogc3FydCgxIC0gZV4yKWAgeSBgYyA9IGEgKiBlYC4gIA0KMi4gRGlidWphIGxhIGVsaXBzZSBjb246ICANCiAgIC0gKipPcGNpw7NuIEE6KiogYEN1cnZhKCBhKmNvcyh0KSwgYipzaW4odCksIHQsIDAsIDLPgCApYC4gIA0KICAgLSAqKk9wY2nDs24gQjoqKiBIZXJyYW1pZW50YSAqKkVsaXBzZSAoY2VudHJvLCBmb2NvKSoqIHVzYW5kbyBjZW50cm8gZW4gZWwgb3JpZ2VuIHkgdW4gZm9jbyBlbiBcKChjLDApXCkuICANCjMuIE1hcmNhIGxvcyAqKmZvY29zKiogXCgowrFjLDApXCkgeSBsb3MgcHVudG9zIFwoKMKxYSwwKVwpLiAgDQo0LiBDb25zdHJ1eWUgdW5hICoqbMOtbmVhKiogZGVzZGUgXCgoYywwKVwpIGEgXCgoYSwwKVwpIHkgYSBcKCgtYSwwKVwpIHBhcmEgdmlzdWFsaXphciBwZXJpYXBzaXMvYXBvYXBzaXM7IG1pZGUgc3VzIGxvbmdpdHVkZXMgY29uICoqSGVycmFtaWVudGEgZGUgRGlzdGFuY2lhKiouICANCjUuIFBhcmEgY29tcHJvYmFyIGxhIHN1bWEgZGUgZGlzdGFuY2lhcywgY3JlYSB1biBwdW50byBgUGAgc29icmUgbGEgZWxpcHNlIHkgY2FsY3VsYSBgZDEgPSBEaXN0YW5jaWEoUCwgKGMsMCkpYCwgYGQyID0gRGlzdGFuY2lhKFAsICgtYywwKSlgIHkgYGQxICsgZDJgIChkZWJlIHNlciBcKDJhXCkpLiAgDQo2LiBDYW1iaWEgZWwgZGVzbGl6YWRvciBgZWAgeSBvYnNlcnZhIGxhIGZvcm1hIGRlIGxhIMOzcmJpdGEuDQoNCi0tLQ0KDQojICoqUHJvYmxlbWEgMyoqDQoNCkVuIHVuIHRhbGxlciBkZSBtZXRhbHVyZ2lhLCB1bmEgcGllemEgZGUgYWNlcm8gc2FsZSBkZSB1biB0cmF0YW1pZW50byB0w6lybWljbyB5IHNlIGRlamEgZW5mcmlhciBlbiB1biBhbWJpZW50ZSBxdWUgc2UgbWFudGllbmUgYSAqKjI1IMKwQyoqLiBTZWfDum4gbGEgKipMZXkgZGUgZW5mcmlhbWllbnRvIGRlIE5ld3RvbioqLCBsYSB0ZW1wZXJhdHVyYSBkZSBsYSBwaWV6YSBkZWNhZSBkZSBmb3JtYSAqKmV4cG9uZW5jaWFsKiogaGFjaWEgbGEgdGVtcGVyYXR1cmEgYW1iaWVudGU6DQoNCiQkVCh0KSA9IFRfYSArIEFcLGVeey1rdH0kJA0KDQpkb25kZSBcKFRcKSBlcyBsYSB0ZW1wZXJhdHVyYSBkZSBsYSBwaWV6YSAowrBDKSwgXCh0XCkgZWwgdGllbXBvIChtaW51dG9zKSwgXChUX2EgPSAyNVwpIMKwQyBsYSB0ZW1wZXJhdHVyYSBhbWJpZW50ZSwgXChBXCkgbGEgZGlmZXJlbmNpYSBpbmljaWFsIGRlIHRlbXBlcmF0dXJhIHkgXChrPjBcKSBsYSBjb25zdGFudGUgZGUgZW5mcmlhbWllbnRvLg0KDQoqKkRhdG9zIG1lZGlkb3MgKHRpZW1wbyBlbiBtaW51dG9zLCB0ZW1wZXJhdHVyYSBlbiDCsEMpOioqDQoNCnwgXCh0XCkgKG1pbikgfCBcKFRcKSAowrBDKSB8IFwodFwpIChtaW4pIHwgXChUXCkgKMKwQykgfA0KfC0tLS0tLTp8LS0tLS0tOnwtLS0tLS06fC0tLS0tLTp8DQp8ICAgICAwIHwgMTgwLjAgfCAgICAyNSB8ICA0Ni4zIHwNCnwgICAgIDUgfCAxMjkuNCB8ICAgIDMwIHwgIDM4LjggfA0KfCAgICAxMCB8ICA5NC4xIHwgICAgMzUgfCAgMzQuNiB8DQp8ICAgIDE1IHwgIDcyLjIgfCAgICA0MCB8ICAzMS4xIHwNCnwgICAgMjAgfCAgNTYuMCB8ICAgICAgIHwgICAgICAgfA0KDQoqKlJlYWxpemEgbG8gc2lndWllbnRlOioqDQoNCmEpICoqR3LDoWZpY2EgZGUgbG9zIGRhdG9zLioqIEluZ3Jlc2EgbG9zIGRhdG9zIGVuIGxhICoqSG9qYSBkZSBDw6FsY3VsbyoqIGRlIEdlb0dlYnJhLCBjcmVhIGxhIGxpc3RhIGRlIHB1bnRvcyB5IGFqdXN0YSBsYSB2ZW50YW5hIGRlIHZpc3VhbGl6YWNpw7NuLiDCv1F1w6kgZm9ybWEgdGllbmUgbGEgZ3LDoWZpY2E/IMK/QSBxdcOpIHZhbG9yIHBhcmVjZSBhY2VyY2Fyc2UgbGEgdGVtcGVyYXR1cmEgY3VhbmRvIFwodFwpIGNyZWNlPw0KDQpiKSAqKk1vZGVsbyBjb24gZGVzbGl6YWRvcmVzLioqIENyZWEgbG9zIGRlc2xpemFkb3JlcyAqKkEqKiB5ICoqayoqIHkgbGEgZnVuY2nDs24gYFQoeCkgPSAyNSArIEEqZXhwKC1rKngpYC4gVXNhIGVsIGRhdG8gaW5pY2lhbCBcKFQoMCk9MTgwXCkgcGFyYSBvYnRlbmVyIFwoQVwpIHkgYWp1c3RhICoqayoqIGEgbWFubyBoYXN0YSBxdWUgbGEgY3VydmEgcGFzZSBsbyBtw6FzIGNlcmNhIHBvc2libGUgZGUgbG9zIHB1bnRvcy4gUmVwb3J0YSBsb3MgdmFsb3JlcyBlbGVnaWRvcy4NCg0KYykgKipMaW5lYWxpemFjacOzbiBjb24gbG9nYXJpdG1vcy4qKiBBcGxpY2EgbG9nYXJpdG1vIG5hdHVyYWwgYWwgbW9kZWxvIHkgZGVtdWVzdHJhIHF1ZQ0KDQokJFxsbihUIC0gMjUpID0gXGxuIEEgLSBrXCx0JCQNCg0KZXMgdW5hICoqcmVjdGEqKiBlbiBsYXMgdmFyaWFibGVzIFwodFwpIHkgXChZPVxsbihULTI1KVwpLiBFbiBsYSBIb2phIGRlIEPDoWxjdWxvIGNyZWEgbG9zIHB1bnRvcyBcKCh0LFwgXGxuKFQtMjUpKVwpLCBncmFmw61jYWxvcyB5IG9idMOpbiBsYSByZWN0YSBkZSBtZWpvciBhanVzdGUgY29uIGBBanVzdGVMaW5lYWwoKWAgLyBgRml0TGluZSgpYC4gQSBwYXJ0aXIgZGUgbGEgKipwZW5kaWVudGUqKiB5IGRlbCAqKmludGVyY2VwdG8qKiBjYWxjdWxhIFwoa1wpIHkgXChBXCkgKHJlY3VlcmRhIHF1ZSBcKEEgPSBlXntcdGV4dHtpbnRlcmNlcHRvfX1cKSkuDQoNCmQpICoqQWp1c3RlIGV4cG9uZW5jaWFsIGRlIEdlb0dlYnJhLioqIENyZWEgbG9zIHB1bnRvcyBcKCh0LFwgVC0yNSlcKSB5IHVzYSBgQWp1c3RlRXhwKClgIC8gYEZpdEV4cCgpYC4gQ29tcGFyYSBlbCByZXN1bHRhZG8gY29uIGxvcyB2YWxvcmVzIG9idGVuaWRvcyBlbiBiKSB5IGMpLiBFc2NyaWJlIHR1ICoqbW9kZWxvIGZpbmFsKiogXChUKHQpXCkuDQoNCmUpICoqUHJlZ3VudGFzIGRlIGFwbGljYWNpw7NuKiogKHJlc3XDqWx2ZWxhcyAqKmFsZ2VicmFpY2FtZW50ZSBjb24gbG9nYXJpdG1vcyoqIHkgdmVyaWbDrWNhbGFzIGVuIEdlb0dlYnJhIGNvbiBlbCBjb21hbmRvIGBJbnRlcnNlY2EoKWAgbyBsYSBoZXJyYW1pZW50YSAqKkludGVyc2VjY2nDs24qKik6DQoNCiAgIDEuIMK/RW4gY3XDoW50b3MgbWludXRvcyBsYSBwaWV6YSBhbGNhbnphICoqNDAgwrBDKiosIHRlbXBlcmF0dXJhIGEgbGEgcXVlIHlhIHB1ZWRlIG1hbmlwdWxhcnNlIGNvbiBzZWd1cmlkYWQ/DQogICAyLiDCv0N1w6FudG8gdGllbXBvIHRhcmRhIGxhIGRpZmVyZW5jaWEgXChUIC0gMjVcKSBlbiByZWR1Y2lyc2UgYSBsYSAqKm1pdGFkKio/ICh2aWRhIG1lZGlhIGRlbCBlbmZyaWFtaWVudG8sIFwodF97MS8yfSA9IFxsbiAyIC8ga1wpKS4NCiAgIDMuIFNlZ8O6biBlbCBtb2RlbG8sIMK/cXXDqSB0ZW1wZXJhdHVyYSB0ZW5kcsOhIGxhIHBpZXphIGEgbG9zICoqNjAgbWludXRvcyoqPyDCv0FsY2FuemFyw6EgYWxndW5hIHZleiBleGFjdGFtZW50ZSBsb3MgMjUgwrBDPyBKdXN0aWZpY2EuDQoNCmYpICoqRnVuY2nDs24gaW52ZXJzYS4qKiBEZXNwZWphIFwodFwpIGVuIGZ1bmNpw7NuIGRlIFwoVFwpIHBhcmEgb2J0ZW5lcg0KDQokJHQoVCkgPSAtXGZyYWN7MX17a31cbG5cIVxsZWZ0KFxmcmFje1QtMjV9e0F9XHJpZ2h0KSQkDQoNCkdyYWbDrWNhbGEgZW4gR2VvR2VicmEgKHB1ZWRlcyB1c2FyIGBJbnZlcnNhKClgKSBqdW50byBjb24gXChUKHQpXCkgeSBsYSByZWN0YSBcKHk9eFwpLiBJbmRpY2EgZWwgKipkb21pbmlvKiogeSBlbCAqKnJhbmdvKiogZGUgY2FkYSBmdW5jacOzbiBlIGludGVycHJldGEgcXXDqSByZXByZXNlbnRhIGxhIGFzw61udG90YSBkZSBjYWRhIHVuYS4NCg0KKipTdWdlcmVuY2lhcyBwYXJhIEdlb0dlYnJhLioqDQoNCjEuIEVuIGxhIEhvamEgZGUgQ8OhbGN1bG8gZXNjcmliZSBcKHRcKSBlbiBsYSBjb2x1bW5hIEEgeSBcKFRcKSBlbiBsYSBjb2x1bW5hIEIuIEVuIEMyIGVzY3JpYmUgYD1sbihCMiAtIDI1KWAgeSBhcnJhc3RyYSBoYWNpYSBhYmFqby4NCjIuIFNlbGVjY2lvbmEgbGFzIGNvbHVtbmFzIEEgeSBCIHkgdXNhICoqQ3JlYXIgbGlzdGEgZGUgcHVudG9zKiogKGNsaWMgZGVyZWNobyDihpIgKkNyZWFyKikuIFJlcGl0ZSBjb24gQSB5IEMgcGFyYSBsb3MgcHVudG9zIGxpbmVhbGl6YWRvcyAoZW4gbGEgbGlzdGEsIGxhIGNvbHVtbmEgQSB2YSBjb21vIHgpLiBQYXJhIFwoKHQsXCBULTI1KVwpIGNyZWEgdW5hIGNvbHVtbmEgRCBjb24gYD1CMiAtIDI1YC4gIA0KMy4gUGFyYSBlbCBhanVzdGUgbGluZWFsOiBgcmVjdGEgPSBBanVzdGVMaW5lYWwobGlzdGFMbilgOyBsYSBwZW5kaWVudGUgc2Ugb2J0aWVuZSBjb24gYFBlbmRpZW50ZShyZWN0YSlgLg0KNC4gRGlidWphIGxhIGFzw61udG90YSBob3Jpem9udGFsIGB5ID0gMjVgIGNvbiBsw61uZWEgcHVudGVhZGEuDQo1LiBBw7FhZGUgdW4gKip0ZXh0byBkaW7DoW1pY28qKiBxdWUgbXVlc3RyZSBsb3MgdmFsb3JlcyBkZSBcKEFcKSwgXChrXCkgeSBcKHRfezEvMn1cKS4NCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgVmVyaWZpY2FjacOzbiBpbnRlcm5hIFByb2JsZW1hIDMgKG5vIHZpc2libGUgcGFyYSBlbCBlc3R1ZGlhbnRlKQ0KIyBNb2RlbG8gYmFzZTogVCA9IDI1ICsgMTU1KmV4cCgtMC4wOCB0KSBjb24gcGVxdWXDsW8gcnVpZG8NCnQzIDwtIHNlcSgwLCA0MCwgYnkgPSA1KQ0KVDMgPC0gYygxODAuMCwgMTI5LjQsIDk0LjEsIDcyLjIsIDU2LjAsIDQ2LjMsIDM4LjgsIDM0LjYsIDMxLjEpDQpmaXQzIDwtIGxtKGxvZyhUMyAtIDI1KSB+IHQzKQ0KIyBrIOKJiCAwLjA4MDQsIEEg4omIIDE1NS44DQojIFQgPSA0MCDCsEMgIC0+IHQg4omIIDI5LjEgbWluDQojIHRfMS8yICAgICAg4omIIDguNiBtaW4NCiMgVCg2MCkgICAgICDiiYggMjYuMyDCsEMNCmBgYA0KDQotLS0NCg0KIyMgUmVjb21lbmRhY2lvbmVzIGZpbmFsZXMNCg0KLSBOb21icmEgdHVzIG9iamV0b3MgeSBhw7FhZGUgKip0ZXh0b3MgZGluw6FtaWNvcyoqLCBhc8OtIHR1IGNhcHR1cmEgZXZpZGVuY2lhIGxvcyB2YWxvcmVzIHVzYWRvcy4gIA0KLSBHdWFyZGEgdHUgYXJjaGl2byAgUERGIGNvbW8gIGBQcm95ZWN0b19UYWxsZXJfQXBlbGxpZG9fTm9tYnJlX2Nhcm5ldC5wZGZgLiAgDQotIEluY2x1eWUgZW4gZWwgaW5mb3JtZSBsYXMgKiplY3VhY2lvbmVzIGZpbmFsZXMqKiB5ICoqY2FwdHVyYXMqKiBjbGFyYXMgZGUgY2FkYSBjb25zdHJ1Y2Npw7NuLg0K