By Valentina Valle Velasco

24 de Junio, 2020

Introduccion

Muchas veces, tomar datos de tantos lugares puede volverse tedioso e incomodo a la hora de realizar una investigacion, incluso puede haber lugares con informacion muy similar. Se podria estar invirtiendo este tiempo en otras cuestiones mas importantes y es por esto que se ha creado una herramienta fundamental en las investigaciones de hoy, que ha simplificado la toma de datos en varios estudios, la interpolacion. Este metodo se utiliza para determinar un valor aproximado de un punto a partir de informacion de puntos cercanos o aledanos a este (RAE, 2020).

Existen dos tipos de metodos de interpolacion: deterministas, los cuales generan superficies continuas a traves del grado de similitud o suavizado, y geoestadisticos, en donde se generan superficies continuas, pero esta vez teniendo en cuenta las propiedades estadisticas de los datos hallados. En los metodos deterministas encontramos los globales, locales, IDW y Spline. En los metodos geoestadisticos encontramos Kriging y Cokriging (Quesada, 2020). Se hara enfasis en los metodos de IDW, Poligonos de Thiessen y Ajuste Polinomial de segundo orden.

Primero se define como a a los valores que deseamos obtener y a b como los valores de los datos que se han determinado en campo.

1) Inverse Distance Weighted (IDW): Esta tecnina pretende deducir los valores a promediando los valores b que se adquieran de puntos cercanos. La informacion del punto mas cercano tiene mayor influencia sobre el promedio que los puntos que estan a una distancia mayor y se puede especificar por el coeficiente de potencia IDW. Entre mas grande sea el coeficiente, mayor sera la influencia de la informacion sobre el promedio del calculo de los puntos a (Gimond, 2019).

2) Poligonos de Thiessen: Este metodo es bastante simple, se toman los valores b mas cercanos a los valores a como magnitud de los mismos. Esto ocasiona que todos los puntos de un mismo poligono sean constantes y que los valores de un poligono a otro sean tan abruptos. Son la base de algunos de los mas poderosos metodos para generalizar bases de datos vectoriales (Longley et al., 2005).

3) Ajuste Polinomial de Segundo Orden: Generalmente se usa cuando el numero de datos b es reducido para intentar lograr una ecuacion o modelo matematico que se ajuste al problema o cuando se quiere obtener un valor aproximado de forma rapida (Campos, 2003).

El objetivo de este informe final es comprender los conceptos basicos de interpolacion espacial y hacer uso de ellos a traves de 3 tecnicas de interpolacion que se realizaran con datos tomados de precipitacion en el departamento del Magdalena, durante los dias 3, 4, 5, 6 y 7 de junio de 2020.

Descripcion de la zona de estudio

La zona de estudio en la que se basara para dar ejemplo de las tecnicas de interpolacion es el departamento del Magdalena. Fue fundada por Rodrigo de Bastidas el 29 de julio de 1525 (TodaColombia, 2018). Este se encuentra ubicado en la zona Noroccidental del pais, entre el rio Magdalena (por este rio se nombre al depto.) y la Sierra Nevada de Santa Marta (su capital). Limita al norte con el mar Caribe; al oeste con los departamentos de Atlantico y Bolivar; al sur con el departamento de Bolivar; al este con los departamentos de la Guajira y el Cesar (Quintin, 2002). A continuacion un mapa de la ubicacion del departamento (en rojo) en el pais:

Figura 1. Ubicacion del departamento en el pais.

Mapa de la division politica del departamento:

Figura 2. Division politica del departamento.

La planicie abunda en el departamento como se puede observar en la figura __, con excepciones en la parte nororiental en donde se encuentra la Sierra Nevada de Santa Marta. En la costa encontramos la Cienga Grande de Santa Marta. En este territorio, el clima tiende a ser seco y calido en las llanuras,con temperaturas aproximadas de 29 grados C, pero en las montanas prevalece el clima templado y frio (TodaColombia, 2018). Segun el DANE (2019), el departamento cuenta con aproximadamente 1’263.788 habitantes. El territorio comprende 23.188 km2 de area (Sociedad Geografica de Colombia, 2011).

Figura 3. Orografia del Magdalena. Por Sociedad Geografica de Colombia

Segun el DANE (2019), el departamento cuenta con aproximadamente 1’263.788 habitantes. Su territorio comprende 23.188 km2 de area (Sociedad Geografica de Colombia, 2011) y esta dividio en 30 municipios. Su economia gira en torno a actividades agropecuarias, ganaderas, turisticas y portuarias. Se cultiva algodon arroz, banano, palma africana, tabaco y varios frutales. La ganaderia es extensiva, tiene propositos de cria, ceba y levante, y la pesca se realiza tanto en las cienagas como en el mar. El turismo se centra en Santa Marta y el parque Tayrona.

Descripcion de datos y metodos

Datos

Los datos utilizados en este informe se tomaron del Climate Hazards Center (CHC) el cual probee CHIRPS (Climate Hazards Group InfraRed Precipitation with Station data), que son un conjunto de datos de precipitaciones globales y ha estado en funcionamiento desde hace mas de 35 anos. Tiene una trayectoria desde 50 grados S hasta 50 grados N, incluye tambien, todas las longitudes y su resolucion es de 0.05 grados. Puede implementarse para crear series de redes de precipitacion para analisis de tendencias y monitoreo estacional de sequias. Anexo el enlace para encontrar los datos de CHIRPS.

Los archivos CHIRPS que se descargan son en formato TIF (Tagged Image File Format, formato de archivo de imagenes con etiquetas(.tif)), que es un formato hecho para guardar imagenes de mapas de bits (raster) muy grande, pero tiene la ventaja de que no se pierde calidad y no examina plataformas o perifericos utilizados generalmente. Las imagenes se pueden almacenar en blanco y negro, en colores verdaderos y se pueden indexar haciendo uso de una paleta (Villagomez, 2017).

El archivo TIF esta compuesto de etiquetas, como su nombre lo indica, que contienen informacion de la imagen como la cantidad de colores utilizados, el tipo de compresion, entre otros, perimitiendo simplificar la programacion del software para poder almacenarla (Villagomez, 2017).

A continuacion se presentara un mapa en donde se puede visualizar la precipitacion del departamento del Magdalena desde el 3 de junio al 7 de junio del 2020, hecho con los datos obtenidos de CHIRPS. En el Anexo_1 se podran encontrar todos los pasos para realizar este y otros mapas que se pueden obtener de CHIRPS.

Figura 4. Mapa de Precitacion con CHIRPS.

Metodos

Como se dijo anteriormente, los datos de CHIRPS se usaran para demostrar tres tipos de metodos de interpolacion, estos son IDW, Poligonos de Thiessen y Ajuste Polinomial de Segundo Grado.

Para el metodo de IDW se utiliza la siguiente ecuacion general:

Figura 5. Formula de IDW.

Donde:
Z*(x) ……………….Valor estimado de la variable
Z(x)i ………………..Valor de la variable en el punto conocido i
(lambda)i…………..Peso de la estacion i
n…………………….Numero de estaciones vecinas

La incidencia se determina en funcion de la distancia entre las estaiones y el punto a interpolar, con la siguiente ecuacion:

Figura 6. Formula para determinar la incidencia.

Donde:

(lambda)i………………Peso de la estacion i
dij ………………………Distancia geometrica entre la estacion y el punto a interpolar
(beta)…………………..Coeficiente de ponderacion
(Moreano, 2008)

Para el metodo de Poligonos de Thiessen se calcula la interpolacion de la precipitacion con la siguiente ecuacion:

Figura 7. Formula del metodo de Poligonos de Thiessen.

Para la tecnica de Ajuste Polinomial de Segundo Orden se pretende disminuir el error de la interpolacion aproximando una curva a la funcion. Se debe ajustar un polinomio cuadratico, como se muestra en la siguiente imagen (Campos, 2003)

.

Figura 8. Formula de la tecnica de Ajuste Polinomial de Segundo Grado.

Presentacion de resultados

Interpolacion con el metodo IDW

Este metodo requiere crear primero una grilla de raster ya que el IDW tambien es un raster. Luego se interpolaran los valores de cada celda de la grilla sin muestrear. Y se usara una incidencia IDW de 2 (idp=2.0).

A continuacion se mostrara el mapa resultado de la interpolacion por IDW y en el Anexo_2 se han dispuesto todos los pasos para llevar a cabo el resultado.

Figura 9. Mapa resultado de la interpolacion con el metodo IDW.

Afianzando la interpolacion

La opcion de la funcion de incidencia puede ser subjetiva, pero esto se podria mejorar ajustando el parametro de la incidencia y realizando una rutina de validacion leave-one-out con el proposito de medir el error en los valores interpolados. A continuacion la grafica resultante.

Figura 10. Grafico de las diferencias.

Su error cuadratico medio dio como resultado 5.129825.

Mapa de validacion cruzada

El siguienta mapa muestra el 95% de Intervalo de Confianza del modelo de interpolacion IDW que usa un parametro de incidencia de 2.

Figura 11. Validacion cruzada.

Interpolacion con el metodo de Poligonos de Thiessen

Los poligonos de Thiessen (o interpolacion de proximidad) pueden ser creados usando la funcion spatsat’s dirichlet. El mapa del resultado de la interpolacion es el siguiente, asi como los pasos a seguir para realizarlo se encuentran en el Anexo_3.

Figura 12. Mapa resultado de la interpolacion con el metodo de Poligonos de Thiessen.

Interpolacion con el metodo de Ajuste Polinomial de Segundo Orden

Se presenta en la siguiente imagen el mapa resultado de la interpolacion por el metodo de Ajuste Polinomial de Segundo Orden, junto con el Anexo_4 en donde se encuentran los codigos que se ejecutaron para obtenerlo.

Figura 13. Mapa resultado de la interpolacion con el metodo Ajuste Polinomial de Segundo Grado.

Analisis de resultados

Dando cuenta de los resultados antes presentados se puede observar que la precipitacion se da mayormente en la zona donde se ubica la Sierra Nevada de Santa Marta (Nororiente del departamento), asi como tambien se encuentran en esa zona variados pisos termicos, mientras que el resto del departamento se destaca por tener un clima seco.

Interpolacion con el metodo IDW

Se puede visualizar en la Fig. 9 figuras irregulares de colores rojos, blancos y azules, representando con ellos la precipitacion de la zona entre el 3 y el 7 de junio. Con colores rojos o rosados se senalan precipitaciones bajas, incluso nulas. Con colores blancos, precipitaciones medias y con colores azules precipitaciones medias-altas y altas. Se puede deducir, entonces, que este podria ser el mejor metodo para interpolar precipitacion, ya que su rango de error es pequeno (5.129825) y los otros metodos permiten estimaciones muy grandes, lo que genera cambios abruptos entre zonas, ademas de que no tienen graficas suavizadas.

Ademas de lo anterior, un Intervalo de Confianza (IC) explica la variabilidad entre la medida lograda en un estudio y la medida real de la poblacion (Candi, R. y Caiozzi, G, 2005). En este caso se tiene que la probabilidad es del 95%, lo que muestra que dentro del rango dado se halla el valor real de un parametro con 95% de seguridad. El error estimado de los datos se encuentra, en su mayoria, entre 0 y 0.2, lo que demuestra que es buen metodo para este tipo de datos

Interpolacion con el metodo de Poligonos de Thiessen

En la Fig. 12 se puede observar que esta hecho de cuadrados de varios colores, estos ultimos iguales al metodo anterior, lo que indica que la precipitacion se centra en la parte nororiental del departamento. Pero a su vez se puede ver que entre cuadrados hay cambios muy abruptos, lo que no permite una correcta visualizacion de los datos de precipitacion. Este metodo puede ser util para datos mas generales, datos que no necesiten tanta especificidad e incluso para datos cualitativos.

Tambien se puede apreciar que la mitad del departamento presento, en los dias mencionados, una precipitacion muy baja (entre 0-10 mm), la parte noroccidental precipitaciones entre 10-30 mm, mientras que en la zona de la Sierra Nevada, se hallaron entre 30-70 mm.

Interpolacion con el metodo de Ajuste Polinomial de Segundo Orden

En la Fig. 13 se pueden apreciar curvas de los colores mencionados, dandole una forma parecida a la de un arcoiris, determinando asi, como ya se ha venido hablando, que la parte nororiental es la que presenta precipitaciones altas debido a la variacion de pisos termicos que tiene por ser parte de un sistema montanoso. Aunque con este metodo se pueden desestiman ciertos datos, que podrian ser significativos y que no se pueden visualizar. Por esto tampoco se considera un buen metodo para este tipo de datos.

Conclusiones

  • La interpolacion ha sido una de las herramientas mas utilizadas por los invesitgadores ya que les proveen la facilidad de hallar datos sin tener que dirigirse hasta el lugar para tomarlos.

  • Se estima que el metodo mas conveniente para este tipo de datos, como lo es la precipitacion, es el IDW, el cual tiene cierto margen de error que permitio su comparacion con los demas metodo y de esta manerase hizo posible visualizar su confiabilidad para interpolar.

  • El departamento del Magdalena, como se pudo observar, para principios de Junio tiene bajas precipitaciones ya que es cuando se desarrolla su temporada seca, dispuesta hasta el mes de agosto. Y las precipitaciones se pueden visualiazar, mas que todo, hacia el nororiente del departamento, que es donde se ubica la Sierra Nevada.

Referencias

LS0tDQp0aXRsZTogIl9fSW5mb3JtZSBmaW5hbF9fIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyMjIyBCeSBWYWxlbnRpbmEgVmFsbGUgVmVsYXNjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KMjQgZGUgSnVuaW8sIDIwMjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQojIyMgX19JbnRyb2R1Y2Npb25fXyAgICANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+IE11Y2hhcyB2ZWNlcywgdG9tYXIgZGF0b3MgZGUgdGFudG9zIGx1Z2FyZXMgcHVlZGUgdm9sdmVyc2UgdGVkaW9zbyBlIGluY29tb2RvIGEgbGEgaG9yYSBkZSByZWFsaXphciB1bmEgaW52ZXN0aWdhY2lvbiwgaW5jbHVzbyBwdWVkZSBoYWJlciBsdWdhcmVzIGNvbiBpbmZvcm1hY2lvbiBtdXkgc2ltaWxhci4gU2UgcG9kcmlhIGVzdGFyIGludmlydGllbmRvIGVzdGUgdGllbXBvIGVuIG90cmFzIGN1ZXN0aW9uZXMgbWFzIGltcG9ydGFudGVzIHkgZXMgcG9yIGVzdG8gcXVlIHNlIGhhIGNyZWFkbyB1bmEgaGVycmFtaWVudGEgZnVuZGFtZW50YWwgZW4gbGFzIGludmVzdGlnYWNpb25lcyBkZSBob3ksIHF1ZSBoYSBzaW1wbGlmaWNhZG8gbGEgdG9tYSBkZSBkYXRvcyBlbiB2YXJpb3MgZXN0dWRpb3MsIGxhIGludGVycG9sYWNpb24uIEVzdGUgbWV0b2RvIHNlIHV0aWxpemEgcGFyYSBkZXRlcm1pbmFyIHVuIHZhbG9yIGFwcm94aW1hZG8gZGUgdW4gcHVudG8gYSBwYXJ0aXIgZGUgaW5mb3JtYWNpb24gZGUgcHVudG9zIGNlcmNhbm9zIG8gYWxlZGFub3MgYSBlc3RlIChSQUUsIDIwMjApLiAgICAgDQoNCkV4aXN0ZW4gZG9zIHRpcG9zIGRlIG1ldG9kb3MgZGUgaW50ZXJwb2xhY2lvbjogZGV0ZXJtaW5pc3RhcywgbG9zIGN1YWxlcyBnZW5lcmFuIHN1cGVyZmljaWVzIGNvbnRpbnVhcyBhIHRyYXZlcyBkZWwgZ3JhZG8gZGUgc2ltaWxpdHVkIG8gc3Vhdml6YWRvLCB5IGdlb2VzdGFkaXN0aWNvcywgZW4gZG9uZGUgc2UgZ2VuZXJhbiBzdXBlcmZpY2llcyBjb250aW51YXMsIHBlcm8gZXN0YSB2ZXogdGVuaWVuZG8gZW4gY3VlbnRhIGxhcyBwcm9waWVkYWRlcyBlc3RhZGlzdGljYXMgZGUgbG9zIGRhdG9zIGhhbGxhZG9zLiBFbiBsb3MgbWV0b2RvcyBkZXRlcm1pbmlzdGFzIGVuY29udHJhbW9zIGxvcyBnbG9iYWxlcywgbG9jYWxlcywgSURXIHkgU3BsaW5lLiBFbiBsb3MgbWV0b2RvcyBnZW9lc3RhZGlzdGljb3MgZW5jb250cmFtb3MgS3JpZ2luZyB5IENva3JpZ2luZyAoUXVlc2FkYSwgMjAyMCkuIFNlIGhhcmEgZW5mYXNpcyBlbiBsb3MgbWV0b2RvcyBkZSBfX0lEV19fLCBfX1BvbGlnb25vcyBkZSBUaGllc3Nlbl9fIHkgX19BanVzdGUgUG9saW5vbWlhbCBkZSBzZWd1bmRvIG9yZGVuX18uDQoNClByaW1lcm8gc2UgZGVmaW5lIGNvbW8gX19hX18gYSBsb3MgdmFsb3JlcyBxdWUgZGVzZWFtb3Mgb2J0ZW5lciB5IGEgX19iX18gY29tbyBsb3MgdmFsb3JlcyBkZSBsb3MgZGF0b3MgcXVlIHNlIGhhbiBkZXRlcm1pbmFkbyBlbiBjYW1wby4NCg0KX18xKV9fIEludmVyc2UgRGlzdGFuY2UgV2VpZ2h0ZWQgKElEVyk6IEVzdGEgdGVjbmluYSBwcmV0ZW5kZSBkZWR1Y2lyIGxvcyB2YWxvcmVzIF9fYV9fIHByb21lZGlhbmRvIGxvcyB2YWxvcmVzIF9fYl9fIHF1ZSBzZSBhZHF1aWVyYW4gZGUgcHVudG9zIGNlcmNhbm9zLiBMYSBpbmZvcm1hY2lvbiBkZWwgcHVudG8gbWFzIGNlcmNhbm8gdGllbmUgIG1heW9yIGluZmx1ZW5jaWEgc29icmUgZWwgcHJvbWVkaW8gcXVlIGxvcyBwdW50b3MgcXVlIGVzdGFuIGEgdW5hIGRpc3RhbmNpYSBtYXlvciB5IHNlIHB1ZWRlIGVzcGVjaWZpY2FyIHBvciBlbCBjb2VmaWNpZW50ZSBkZSBwb3RlbmNpYSBJRFcuIEVudHJlIG1hcyBncmFuZGUgc2VhIGVsIGNvZWZpY2llbnRlLCBtYXlvciBzZXJhIGxhIGluZmx1ZW5jaWEgZGUgbGEgaW5mb3JtYWNpb24gc29icmUgZWwgcHJvbWVkaW8gZGVsIGNhbGN1bG8gZGUgbG9zIHB1bnRvcyBfX2FfXyAoR2ltb25kLCAyMDE5KS4gICAgDQoNCl9fMilfXyBQb2xpZ29ub3MgZGUgVGhpZXNzZW46IEVzdGUgbWV0b2RvIGVzIGJhc3RhbnRlIHNpbXBsZSwgc2UgdG9tYW4gbG9zIHZhbG9yZXMgX19iX18gbWFzIGNlcmNhbm9zIGEgbG9zIHZhbG9yZXMgX19hX18gY29tbyBtYWduaXR1ZCBkZSBsb3MgbWlzbW9zLiBFc3RvIG9jYXNpb25hIHF1ZSB0b2RvcyBsb3MgcHVudG9zIGRlIHVuIG1pc21vIHBvbGlnb25vIHNlYW4gY29uc3RhbnRlcyB5IHF1ZSBsb3MgdmFsb3JlcyBkZSB1biBwb2xpZ29ubyBhIG90cm8gc2VhbiB0YW4gYWJydXB0b3MuIFNvbiBsYSBiYXNlIGRlIGFsZ3Vub3MgZGUgbG9zIG1hcyBwb2Rlcm9zb3MgbWV0b2RvcyBwYXJhIGdlbmVyYWxpemFyIGJhc2VzIGRlIGRhdG9zIHZlY3RvcmlhbGVzIChMb25nbGV5IF9ldCBhbC5fLCAyMDA1KS4NCg0KX18zKV9fIEFqdXN0ZSBQb2xpbm9taWFsIGRlIFNlZ3VuZG8gT3JkZW46IEdlbmVyYWxtZW50ZSBzZSB1c2EgY3VhbmRvIGVsIG51bWVybyBkZSBkYXRvcyBfX2JfXyBlcyByZWR1Y2lkbyBwYXJhIGludGVudGFyIGxvZ3JhciB1bmEgZWN1YWNpb24gbyBtb2RlbG8gbWF0ZW1hdGljbyBxdWUgc2UgYWp1c3RlIGFsIHByb2JsZW1hIG8gY3VhbmRvIHNlIHF1aWVyZSBvYnRlbmVyIHVuIHZhbG9yIGFwcm94aW1hZG8gZGUgZm9ybWEgcmFwaWRhIChDYW1wb3MsIDIwMDMpLiAgICAgICAgICAgICAgDQoNCkVsIG9iamV0aXZvIGRlIGVzdGUgaW5mb3JtZSBmaW5hbCBlcyBjb21wcmVuZGVyIGxvcyBjb25jZXB0b3MgYmFzaWNvcyBkZSBpbnRlcnBvbGFjaW9uIGVzcGFjaWFsIHkgaGFjZXIgdXNvIGRlIGVsbG9zIGEgdHJhdmVzIGRlIDMgdGVjbmljYXMgZGUgaW50ZXJwb2xhY2lvbiBxdWUgc2UgcmVhbGl6YXJhbiBjb24gZGF0b3MgdG9tYWRvcyBkZSBwcmVjaXBpdGFjaW9uIGVuIGVsIGRlcGFydGFtZW50byBkZWwgTWFnZGFsZW5hLCBkdXJhbnRlIGxvcyBkaWFzIDMsIDQsIDUsIDYgeSA3IGRlIGp1bmlvIGRlIDIwMjAuPGRpdi8+DQoNCiMjIyBfX0Rlc2NyaXBjaW9uIGRlIGxhIHpvbmEgZGUgZXN0dWRpb19fDQoNCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPkxhIHpvbmEgZGUgZXN0dWRpbyBlbiBsYSBxdWUgc2UgYmFzYXJhIHBhcmEgZGFyIGVqZW1wbG8gZGUgbGFzIHRlY25pY2FzIGRlIGludGVycG9sYWNpb24gZXMgZWwgZGVwYXJ0YW1lbnRvIGRlbCBNYWdkYWxlbmEuIEZ1ZSBmdW5kYWRhIHBvciBSb2RyaWdvIGRlIEJhc3RpZGFzIGVsIDI5IGRlIGp1bGlvIGRlIDE1MjUgKFRvZGFDb2xvbWJpYSwgMjAxOCkuIEVzdGUgc2UgZW5jdWVudHJhIHViaWNhZG8gZW4gbGEgem9uYSBOb3JvY2NpZGVudGFsIGRlbCBwYWlzLCBlbnRyZSBlbCByaW8gTWFnZGFsZW5hIChwb3IgZXN0ZSByaW8gc2Ugbm9tYnJlIGFsIGRlcHRvLikgeSBsYSBTaWVycmEgTmV2YWRhIGRlIFNhbnRhIE1hcnRhIChzdSBjYXBpdGFsKS4gTGltaXRhIGFsIG5vcnRlIGNvbiBlbCBtYXIgQ2FyaWJlOyBhbCBvZXN0ZSBjb24gbG9zIGRlcGFydGFtZW50b3MgZGUgQXRsYW50aWNvIHkgQm9saXZhcjsgYWwgc3VyIGNvbiBlbCBkZXBhcnRhbWVudG8gZGUgQm9saXZhcjsgYWwgZXN0ZSBjb24gbG9zIGRlcGFydGFtZW50b3MgZGUgbGEgR3VhamlyYSB5IGVsIENlc2FyIChRdWludGluLCAyMDAyKS4gQSBjb250aW51YWNpb24gdW4gbWFwYSBkZSBsYSB1YmljYWNpb24gZGVsIGRlcGFydGFtZW50byAoZW4gcm9qbykgZW4gZWwgcGFpczogICAgICAgICANCg0KYGBge3J9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygnQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9ScGxvdDAxLnBuZycpDQpgYGANCjxmb250IHNpemU9IjIiPiBGaWd1cmEgMS4gVWJpY2FjaW9uIGRlbCBkZXBhcnRhbWVudG8gZW4gZWwgcGFpcy48L2ZvbnQ+ICAgICAgICAgDQoNCg0KIyMjIyBNYXBhIGRlIGxhIGRpdmlzaW9uIHBvbGl0aWNhIGRlbCBkZXBhcnRhbWVudG86DQoNCmBgYHtyfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoJ0M6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0IvUnBsb3QwMi5wbmcnKQ0KYGBgDQo8Zm9udCBzaXplPSIyIj4gRmlndXJhIDIuIERpdmlzaW9uIHBvbGl0aWNhIGRlbCBkZXBhcnRhbWVudG8uPC9mb250Pg0KDQpMYSBwbGFuaWNpZSBhYnVuZGEgZW4gZWwgZGVwYXJ0YW1lbnRvIGNvbW8gc2UgcHVlZGUgb2JzZXJ2YXIgZW4gbGEgZmlndXJhIF9fLCBjb24gZXhjZXBjaW9uZXMgZW4gbGEgcGFydGUgbm9yb3JpZW50YWwgZW4gZG9uZGUgc2UgZW5jdWVudHJhIGxhIFNpZXJyYSBOZXZhZGEgZGUgU2FudGEgTWFydGEuIEVuIGxhIGNvc3RhIGVuY29udHJhbW9zIGxhIENpZW5nYSBHcmFuZGUgZGUgU2FudGEgTWFydGEuIEVuIGVzdGUgdGVycml0b3JpbywgZWwgY2xpbWEgdGllbmRlIGEgc2VyIHNlY28geSBjYWxpZG8gZW4gbGFzIGxsYW51cmFzLGNvbiB0ZW1wZXJhdHVyYXMgYXByb3hpbWFkYXMgZGUgMjkgZ3JhZG9zIEMsIHBlcm8gZW4gbGFzIG1vbnRhbmFzIHByZXZhbGVjZSBlbCBjbGltYSB0ZW1wbGFkbyB5IGZyaW8gKFRvZGFDb2xvbWJpYSwgMjAxOCkuIFNlZ3VuIGVsIERBTkUgKDIwMTkpLCBlbCBkZXBhcnRhbWVudG8gY3VlbnRhIGNvbiBhcHJveGltYWRhbWVudGUgMScyNjMuNzg4IGhhYml0YW50ZXMuIEVsIHRlcnJpdG9yaW8gY29tcHJlbmRlIDIzLjE4OCBrbTIgZGUgYXJlYSAoU29jaWVkYWQgR2VvZ3JhZmljYSBkZSBDb2xvbWJpYSwgMjAxMSkuDQoNCmBgYHtyfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoJ0M6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0IvbWFnXzAzLmpwZycpDQpgYGANCjxmb250IHNpemU9IjIiPiBGaWd1cmEgMy4gT3JvZ3JhZmlhIGRlbCBNYWdkYWxlbmEuIFBvciBTb2NpZWRhZCBHZW9ncmFmaWNhIGRlIENvbG9tYmlhPC9mb250Pg0KDQpTZWd1biBlbCBEQU5FICgyMDE5KSwgZWwgZGVwYXJ0YW1lbnRvIGN1ZW50YSBjb24gYXByb3hpbWFkYW1lbnRlIDEnMjYzLjc4OCBoYWJpdGFudGVzLiBTdSB0ZXJyaXRvcmlvIGNvbXByZW5kZSAyMy4xODgga20yIGRlIGFyZWEgKFNvY2llZGFkIEdlb2dyYWZpY2EgZGUgQ29sb21iaWEsIDIwMTEpIHkgZXN0YSBkaXZpZGlvIGVuIDMwIG11bmljaXBpb3MuIFN1IGVjb25vbWlhIGdpcmEgZW4gdG9ybm8gYSBhY3RpdmlkYWRlcyBhZ3JvcGVjdWFyaWFzLCBnYW5hZGVyYXMsIHR1cmlzdGljYXMgeSBwb3J0dWFyaWFzLiBTZSBjdWx0aXZhIGFsZ29kb24gYXJyb3osIGJhbmFubywgcGFsbWEgYWZyaWNhbmEsIHRhYmFjbyB5IHZhcmlvcyBmcnV0YWxlcy4gTGEgZ2FuYWRlcmlhIGVzIGV4dGVuc2l2YSwgdGllbmUgcHJvcG9zaXRvcyBkZSBjcmlhLCBjZWJhIHkgbGV2YW50ZSwgeSBsYSBwZXNjYSBzZSByZWFsaXphIHRhbnRvIGVuIGxhcyBjaWVuYWdhcyBjb21vIGVuIGVsIG1hci4gRWwgdHVyaXNtbyBzZSBjZW50cmEgZW4gU2FudGEgTWFydGEgeSBlbCBwYXJxdWUgVGF5cm9uYS48ZGl2Lz4gDQoNCiMjIyBfX0Rlc2NyaXBjaW9uIGRlIGRhdG9zIHkgbWV0b2Rvc19fICAgDQoNCiMjIyMgRGF0b3MNCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+TG9zIGRhdG9zIHV0aWxpemFkb3MgZW4gZXN0ZSBpbmZvcm1lIHNlIHRvbWFyb24gZGVsIENsaW1hdGUgSGF6YXJkcyBDZW50ZXIgKENIQykgZWwgY3VhbCBwcm9iZWUgQ0hJUlBTIChDbGltYXRlIEhhemFyZHMgR3JvdXAgSW5mcmFSZWQgUHJlY2lwaXRhdGlvbiB3aXRoIFN0YXRpb24gZGF0YSksIHF1ZSBzb24gdW4gY29uanVudG8gZGUgZGF0b3MgZGUgcHJlY2lwaXRhY2lvbmVzIGdsb2JhbGVzIHkgaGEgZXN0YWRvIGVuIGZ1bmNpb25hbWllbnRvIGRlc2RlIGhhY2UgbWFzIGRlIDM1IGFub3MuIFRpZW5lIHVuYSB0cmF5ZWN0b3JpYSBkZXNkZSA1MCBncmFkb3MgUyBoYXN0YSA1MCBncmFkb3MgTiwgaW5jbHV5ZSB0YW1iaWVuLCB0b2RhcyBsYXMgbG9uZ2l0dWRlcyB5IHN1IHJlc29sdWNpb24gZXMgZGUgMC4wNSBncmFkb3MuIFB1ZWRlIGltcGxlbWVudGFyc2UgcGFyYSBjcmVhciBzZXJpZXMgZGUgcmVkZXMgZGUgcHJlY2lwaXRhY2lvbiBwYXJhIGFuYWxpc2lzIGRlIHRlbmRlbmNpYXMgeSBtb25pdG9yZW8gZXN0YWNpb25hbCBkZSBzZXF1aWFzLiBBbmV4byBlbCBlbmxhY2UgcGFyYSBlbmNvbnRyYXIgbG9zIGRhdG9zIGRlIFtDSElSUFNdKGh0dHA6Ly9kYXRhLmNoYy51Y3NiLmVkdS9wcm9kdWN0cy9DSElSUFMtMi4wL2dsb2JhbF9kYWlseS90aWZzL3AyNS8yMDIwLykuIA0KDQpMb3MgYXJjaGl2b3MgQ0hJUlBTIHF1ZSBzZSBkZXNjYXJnYW4gc29uIGVuIGZvcm1hdG8gVElGIChUYWdnZWQgSW1hZ2UgRmlsZSBGb3JtYXQsIGZvcm1hdG8gZGUgYXJjaGl2byBkZSAgaW1hZ2VuZXMgY29uIGV0aXF1ZXRhcygudGlmKSksIHF1ZSBlcyB1biBmb3JtYXRvIGhlY2hvIHBhcmEgZ3VhcmRhciBpbWFnZW5lcyBkZSBtYXBhcyBkZSBiaXRzIChyYXN0ZXIpIG11eSBncmFuZGUsIHBlcm8gdGllbmUgbGEgdmVudGFqYSBkZSBxdWUgbm8gc2UgcGllcmRlIGNhbGlkYWQgeSBubyBleGFtaW5hIHBsYXRhZm9ybWFzIG8gcGVyaWZlcmljb3MgdXRpbGl6YWRvcyBnZW5lcmFsbWVudGUuIExhcyBpbWFnZW5lcyBzZSBwdWVkZW4gYWxtYWNlbmFyIGVuIGJsYW5jbyB5IG5lZ3JvLCBlbiBjb2xvcmVzIHZlcmRhZGVyb3MgeSBzZSBwdWVkZW4gaW5kZXhhciBoYWNpZW5kbyB1c28gZGUgdW5hIHBhbGV0YSAoVmlsbGFnb21leiwgMjAxNykuICAgICAgICAgICAgICAgICAgDQoNCkVsIGFyY2hpdm8gVElGIGVzdGEgY29tcHVlc3RvIGRlIGV0aXF1ZXRhcywgY29tbyBzdSBub21icmUgbG8gaW5kaWNhLCBxdWUgY29udGllbmVuIGluZm9ybWFjaW9uIGRlIGxhIGltYWdlbiBjb21vIGxhIGNhbnRpZGFkIGRlIGNvbG9yZXMgdXRpbGl6YWRvcywgZWwgdGlwbyBkZSBjb21wcmVzaW9uLCBlbnRyZSBvdHJvcywgcGVyaW1pdGllbmRvIHNpbXBsaWZpY2FyIGxhIHByb2dyYW1hY2lvbiBkZWwgc29mdHdhcmUgcGFyYSBwb2RlciBhbG1hY2VuYXJsYSAoVmlsbGFnb21leiwgMjAxNykuDQoNCkEgY29udGludWFjaW9uIHNlIHByZXNlbnRhcmEgdW4gbWFwYSBlbiBkb25kZSBzZSBwdWVkZSB2aXN1YWxpemFyIGxhIHByZWNpcGl0YWNpb24gZGVsIGRlcGFydGFtZW50byBkZWwgTWFnZGFsZW5hIGRlc2RlIGVsIDMgZGUganVuaW8gYWwgNyBkZSBqdW5pbyBkZWwgMjAyMCwgaGVjaG8gY29uIGxvcyBkYXRvcyBvYnRlbmlkb3MgZGUgQ0hJUlBTLiBFbiBlbCBbQW5leG9fMV0oaHR0cHM6Ly9ycHVicy5jb20vRWxhdi82MzM1MzgpIHNlIHBvZHJhbiBlbmNvbnRyYXIgdG9kb3MgbG9zIHBhc29zIHBhcmEgcmVhbGl6YXIgZXN0ZSB5IG90cm9zIG1hcGFzIHF1ZSBzZSBwdWVkZW4gb2J0ZW5lciBkZSBDSElSUFMuPGRpdi8+ICANCg0KYGBge3J9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygnQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9hbmV4bzEuMS5wbmcnKQ0KYGBgDQo8Zm9udCBzaXplPSIyIj4gRmlndXJhIDQuIE1hcGEgZGUgUHJlY2l0YWNpb24gY29uIENISVJQUy4gPC9mb250Pg0KDQojIyMjIE1ldG9kb3MNCg0KQ29tbyBzZSBkaWpvIGFudGVyaW9ybWVudGUsIGxvcyBkYXRvcyBkZSBDSElSUFMgc2UgdXNhcmFuIHBhcmEgZGVtb3N0cmFyIHRyZXMgdGlwb3MgZGUgbWV0b2RvcyBkZSBpbnRlcnBvbGFjaW9uLCBlc3RvcyBzb24gSURXLCBQb2xpZ29ub3MgZGUgVGhpZXNzZW4geSBBanVzdGUgUG9saW5vbWlhbCBkZSBTZWd1bmRvIEdyYWRvLg0KDQpQYXJhIGVsIG1ldG9kbyBkZSBfX0lEV19fIHNlIHV0aWxpemEgbGEgc2lndWllbnRlIGVjdWFjaW9uIGdlbmVyYWw6DQpgYGB7cn0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCdDOi9Vc2Vycy92YWxlXy9EZXNrdG9wL1VOQUwvNnRvIHNlbWVzdHJlL0dCL21tbW0ucG5nJykNCmBgYA0KPGZvbnQgc2l6ZT0iMiI+IEZpZ3VyYSA1LiBGb3JtdWxhIGRlIElEVy48L2ZvbnQ+DQoNCkRvbmRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KWiooeCkgLi4uLi4uLi4uLi4uLi4uLi4uLlZhbG9yIGVzdGltYWRvIGRlIGxhIHZhcmlhYmxlICAgICAgICAgICAgICAgIA0KWih4KSoqfl9pX34qKiAuLi4uLi4uLi4uLi4uLi4uLi4uLlZhbG9yIGRlIGxhIHZhcmlhYmxlIGVuIGVsIHB1bnRvIGNvbm9jaWRvICoqX2lfKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCihsYW1iZGEpKipfaV8qKi4uLi4uLi4uLi4uLi4uUGVzbyBkZSBsYSBlc3RhY2lvbiAqKl9pXyoqICAgICAgICAgICAgICAgICAgICAgIA0KX25fLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLk51bWVybyBkZSBlc3RhY2lvbmVzIHZlY2luYXMNCg0KTGEgaW5jaWRlbmNpYSBzZSBkZXRlcm1pbmEgZW4gZnVuY2lvbiBkZSBsYSBkaXN0YW5jaWEgZW50cmUgbGFzIGVzdGFpb25lcyB5IGVsIHB1bnRvIGEgaW50ZXJwb2xhciwgY29uIGxhIHNpZ3VpZW50ZSBlY3VhY2lvbjoNCmBgYHtyfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoJ0M6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0IvbW1tLnBuZycpDQpgYGANCjxmb250IHNpemU9IjIiPiBGaWd1cmEgNi4gRm9ybXVsYSBwYXJhIGRldGVybWluYXIgbGEgaW5jaWRlbmNpYS48L2ZvbnQ+DQoNCkRvbmRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKGxhbWJkYSkqKl9pXyoqLi4uLi4uLi4uLi4uLi4uLi4uUGVzbyBkZSBsYSBlc3RhY2lvbiAqKl9pXyoqICAgICAgICANCioqX2Rpal8qKiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5EaXN0YW5jaWEgZ2VvbWV0cmljYSBlbnRyZSBsYSBlc3RhY2lvbiB5IGVsIHB1bnRvIGEgaW50ZXJwb2xhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQooYmV0YSkuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLkNvZWZpY2llbnRlIGRlIHBvbmRlcmFjaW9uICAgICAgIA0KKE1vcmVhbm8sIDIwMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KUGFyYSBlbCBtZXRvZG8gZGUgUG9saWdvbm9zIGRlIFRoaWVzc2VuIHNlIGNhbGN1bGEgbGEgaW50ZXJwb2xhY2lvbiBkZSBsYSBwcmVjaXBpdGFjaW9uIGNvbiBsYSBzaWd1aWVudGUgZWN1YWNpb246ICAgIA0KYGBge3J9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygnQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9tbS5wbmcnKQ0KYGBgDQo8Zm9udCBzaXplPSIyIj4gRmlndXJhIDcuIEZvcm11bGEgZGVsIG1ldG9kbyBkZSBQb2xpZ29ub3MgZGUgVGhpZXNzZW4uPC9mb250Pg0KDQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5Ij5QYXJhIGxhIHRlY25pY2EgZGUgQWp1c3RlIFBvbGlub21pYWwgZGUgU2VndW5kbyBPcmRlbiBzZSBwcmV0ZW5kZSBkaXNtaW51aXIgZWwgZXJyb3IgZGUgbGEgaW50ZXJwb2xhY2lvbiBhcHJveGltYW5kbyB1bmEgY3VydmEgYSBsYSBmdW5jaW9uLiBTZSBkZWJlIGFqdXN0YXIgdW4gcG9saW5vbWlvIGN1YWRyYXRpY28sIGNvbW8gc2UgbXVlc3RyYSBlbiBsYSBzaWd1aWVudGUgaW1hZ2VuIChDYW1wb3MsIDIwMDMpPGRpdi8+Lg0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoJ0M6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0IvbS5wbmcnKQ0KYGBgDQo8Zm9udCBzaXplPSIyIj4gRmlndXJhIDguIEZvcm11bGEgZGUgbGEgdGVjbmljYSBkZSBBanVzdGUgUG9saW5vbWlhbCBkZSBTZWd1bmRvIEdyYWRvLjwvZm9udD4NCg0KIyMjIF9fUHJlc2VudGFjaW9uIGRlIHJlc3VsdGFkb3NfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KIyMjIyBJbnRlcnBvbGFjaW9uIGNvbiBlbCBtZXRvZG8gSURXDQoNCkVzdGUgbWV0b2RvIHJlcXVpZXJlIGNyZWFyIHByaW1lcm8gdW5hIGdyaWxsYSBkZSByYXN0ZXIgeWEgcXVlIGVsIElEVyB0YW1iaWVuIGVzIHVuIHJhc3Rlci4gTHVlZ28gc2UgaW50ZXJwb2xhcmFuIGxvcyB2YWxvcmVzIGRlIGNhZGEgY2VsZGEgZGUgbGEgZ3JpbGxhIHNpbiBtdWVzdHJlYXIuIFkgc2UgdXNhcmEgdW5hIGluY2lkZW5jaWEgSURXIGRlIDIgKGlkcD0yLjApLiAgICAgICAgICAgICAgICAgICAgICAgIA0KDQpBIGNvbnRpbnVhY2lvbiBzZSBtb3N0cmFyYSBlbCBtYXBhIHJlc3VsdGFkbyBkZSBsYSBpbnRlcnBvbGFjaW9uIHBvciBJRFcgeSBlbiBlbCBbQW5leG9fMl0oaHR0cHM6Ly9ycHVicy5jb20vRWxhdi82MzM1NDApIHNlIGhhbiBkaXNwdWVzdG8gdG9kb3MgbG9zIHBhc29zIHBhcmEgbGxldmFyIGEgY2FibyBlbCByZXN1bHRhZG8uDQpgYGB7cn0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCdDOi9Vc2Vycy92YWxlXy9EZXNrdG9wL1VOQUwvNnRvIHNlbWVzdHJlL0dCL21uLnBuZycpDQpgYGANCjxmb250IHNpemU9IjIiPiBGaWd1cmEgOS4gTWFwYSByZXN1bHRhZG8gZGUgbGEgaW50ZXJwb2xhY2lvbiBjb24gZWwgbWV0b2RvIElEVy48L2ZvbnQ+DQoNCiMjIyMjIEFmaWFuemFuZG8gbGEgaW50ZXJwb2xhY2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCkxhIG9wY2lvbiBkZSBsYSBmdW5jaW9uIGRlIGluY2lkZW5jaWEgcHVlZGUgc2VyIHN1YmpldGl2YSwgcGVybyBlc3RvIHNlIHBvZHJpYSBtZWpvcmFyIGFqdXN0YW5kbyBlbCBwYXJhbWV0cm8gZGUgbGEgaW5jaWRlbmNpYSB5IHJlYWxpemFuZG8gdW5hIHJ1dGluYSBkZSB2YWxpZGFjaW9uIGxlYXZlLW9uZS1vdXQgY29uIGVsIHByb3Bvc2l0byBkZSBtZWRpciBlbCBlcnJvciBlbiBsb3MgdmFsb3JlcyBpbnRlcnBvbGFkb3MuIEEgY29udGludWFjaW9uIGxhIGdyYWZpY2EgcmVzdWx0YW50ZS4NCg0KYGBge3J9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygnQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9tbm4ucG5nJykNCmBgYA0KPGZvbnQgc2l6ZT0iMiI+IEZpZ3VyYSAxMC4gR3JhZmljbyBkZSBsYXMgZGlmZXJlbmNpYXMuPC9mb250Pg0KDQpTdSBlcnJvciBjdWFkcmF0aWNvIG1lZGlvIGRpbyBjb21vIHJlc3VsdGFkbyA1LjEyOTgyNS4gICAgICAgICAgDQoNCiMjIyMjIE1hcGEgZGUgdmFsaWRhY2lvbiBjcnV6YWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCkVsIHNpZ3VpZW50YSBtYXBhIG11ZXN0cmEgZWwgOTUlIGRlIEludGVydmFsbyBkZSBDb25maWFuemEgZGVsIG1vZGVsbyBkZSBpbnRlcnBvbGFjaW9uIElEVyBxdWUgdXNhIHVuIHBhcmFtZXRybyBkZSBpbmNpZGVuY2lhIGRlIDIuDQoNCmBgYHtyfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoJ0M6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0Ivbm0ucG5nJykNCmBgYA0KPGZvbnQgc2l6ZT0iMiI+IEZpZ3VyYSAxMS4gVmFsaWRhY2lvbiBjcnV6YWRhLjwvZm9udD4NCg0KIyMjIyBJbnRlcnBvbGFjaW9uIGNvbiBlbCBtZXRvZG8gZGUgUG9saWdvbm9zIGRlIFRoaWVzc2VuICAgICAgICAgICAgICAgICAgICAgICANCg0KTG9zIHBvbGlnb25vcyBkZSBUaGllc3NlbiAobyBpbnRlcnBvbGFjaW9uIGRlIHByb3hpbWlkYWQpIHB1ZWRlbiBzZXIgY3JlYWRvcyB1c2FuZG8gbGEgZnVuY2lvbiBzcGF0c2F0J3MgZGlyaWNobGV0LiBFbCBtYXBhIGRlbCByZXN1bHRhZG8gZGUgbGEgaW50ZXJwb2xhY2lvbiBlcyBlbCBzaWd1aWVudGUsIGFzaSBjb21vIGxvcyBwYXNvcyBhIHNlZ3VpciBwYXJhIHJlYWxpemFybG8gc2UgZW5jdWVudHJhbiBlbiBlbCBbQW5leG9fM10oaHR0cHM6Ly9ycHVicy5jb20vRWxhdi82MzM1NDEpLg0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoJ0M6L1VzZXJzL3ZhbGVfL0Rlc2t0b3AvVU5BTC82dG8gc2VtZXN0cmUvR0IvbW1uLnBuZycpDQpgYGANCjxmb250IHNpemU9IjIiPiBGaWd1cmEgMTIuIE1hcGEgcmVzdWx0YWRvIGRlIGxhIGludGVycG9sYWNpb24gY29uIGVsIG1ldG9kbyBkZSBQb2xpZ29ub3MgZGUgVGhpZXNzZW4uPC9mb250Pg0KDQojIyMjIEludGVycG9sYWNpb24gY29uIGVsIG1ldG9kbyBkZSBBanVzdGUgUG9saW5vbWlhbCBkZSBTZWd1bmRvIE9yZGVuDQoNClNlIHByZXNlbnRhIGVuIGxhIHNpZ3VpZW50ZSBpbWFnZW4gZWwgbWFwYSByZXN1bHRhZG8gZGUgbGEgaW50ZXJwb2xhY2lvbiBwb3IgZWwgbWV0b2RvIGRlIEFqdXN0ZSBQb2xpbm9taWFsIGRlIFNlZ3VuZG8gT3JkZW4sIGp1bnRvIGNvbiBlbCBbQW5leG9fNF0oaHR0cHM6Ly9ycHVicy5jb20vRWxhdi82MzM1NTQpIGVuIGRvbmRlIHNlIGVuY3VlbnRyYW4gbG9zIGNvZGlnb3MgcXVlIHNlIGVqZWN1dGFyb24gcGFyYSBvYnRlbmVybG8uDQoNCmBgYHtyIHdhcm5pbmc9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygnQzovVXNlcnMvdmFsZV8vRGVza3RvcC9VTkFMLzZ0byBzZW1lc3RyZS9HQi9ubm0ucG5nJykNCmBgYA0KPGZvbnQgc2l6ZT0iMiI+IEZpZ3VyYSAxMy4gTWFwYSByZXN1bHRhZG8gZGUgbGEgaW50ZXJwb2xhY2lvbiBjb24gZWwgbWV0b2RvIEFqdXN0ZSBQb2xpbm9taWFsIGRlIFNlZ3VuZG8gR3JhZG8uPC9mb250Pg0KDQojIyMgX19BbmFsaXNpcyBkZSByZXN1bHRhZG9zX18gICANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+RGFuZG8gY3VlbnRhIGRlIGxvcyByZXN1bHRhZG9zIGFudGVzIHByZXNlbnRhZG9zIHNlIHB1ZWRlIG9ic2VydmFyIHF1ZSBsYSBwcmVjaXBpdGFjaW9uIHNlIGRhIG1heW9ybWVudGUgZW4gbGEgem9uYSBkb25kZSBzZSB1YmljYSBsYSBTaWVycmEgTmV2YWRhIGRlIFNhbnRhIE1hcnRhIChOb3JvcmllbnRlIGRlbCBkZXBhcnRhbWVudG8pLCBhc2kgY29tbyB0YW1iaWVuIHNlIGVuY3VlbnRyYW4gZW4gZXNhIHpvbmEgdmFyaWFkb3MgcGlzb3MgdGVybWljb3MsIG1pZW50cmFzIHF1ZSBlbCByZXN0byBkZWwgZGVwYXJ0YW1lbnRvIHNlIGRlc3RhY2EgcG9yIHRlbmVyIHVuIGNsaW1hIHNlY28uIDxkaXYvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiMjIyMgSW50ZXJwb2xhY2lvbiBjb24gZWwgbWV0b2RvIElEVyANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+U2UgcHVlZGUgdmlzdWFsaXphciBlbiBsYSBGaWcuIDkgZmlndXJhcyBpcnJlZ3VsYXJlcyBkZSBjb2xvcmVzIHJvam9zLCBibGFuY29zIHkgYXp1bGVzLCByZXByZXNlbnRhbmRvIGNvbiBlbGxvcyBsYSBwcmVjaXBpdGFjaW9uIGRlIGxhIHpvbmEgZW50cmUgZWwgMyB5IGVsIDcgZGUganVuaW8uIENvbiBjb2xvcmVzIHJvam9zIG8gcm9zYWRvcyBzZSBzZW5hbGFuIHByZWNpcGl0YWNpb25lcyBiYWphcywgaW5jbHVzbyBudWxhcy4gQ29uIGNvbG9yZXMgYmxhbmNvcywgcHJlY2lwaXRhY2lvbmVzIG1lZGlhcyB5IGNvbiBjb2xvcmVzIGF6dWxlcyBwcmVjaXBpdGFjaW9uZXMgbWVkaWFzLWFsdGFzIHkgYWx0YXMuIFNlIHB1ZWRlIGRlZHVjaXIsIGVudG9uY2VzLCBxdWUgZXN0ZSBwb2RyaWEgc2VyIGVsIG1lam9yIG1ldG9kbyBwYXJhIGludGVycG9sYXIgcHJlY2lwaXRhY2lvbiwgeWEgcXVlIHN1IHJhbmdvIGRlIGVycm9yIGVzIHBlcXVlbm8gKDUuMTI5ODI1KSB5IGxvcyBvdHJvcyBtZXRvZG9zIHBlcm1pdGVuIGVzdGltYWNpb25lcyBtdXkgZ3JhbmRlcywgbG8gcXVlIGdlbmVyYSBjYW1iaW9zIGFicnVwdG9zIGVudHJlIHpvbmFzLCBhZGVtYXMgZGUgcXVlIG5vIHRpZW5lbiBncmFmaWNhcyBzdWF2aXphZGFzLg0KDQpBZGVtYXMgZGUgbG8gYW50ZXJpb3IsIHVuIEludGVydmFsbyBkZSBDb25maWFuemEgKElDKSBleHBsaWNhIGxhIHZhcmlhYmlsaWRhZCBlbnRyZSBsYSBtZWRpZGEgbG9ncmFkYSBlbiB1biBlc3R1ZGlvIHkgbGEgbWVkaWRhIHJlYWwgZGUgbGEgcG9ibGFjaW9uIChDYW5kaSwgUi4geSBDYWlvenppLCBHLCAyMDA1KS4gRW4gZXN0ZSBjYXNvIHNlIHRpZW5lIHF1ZSBsYSBwcm9iYWJpbGlkYWQgZXMgZGVsIDk1JSwgbG8gcXVlIG11ZXN0cmEgcXVlIGRlbnRybyBkZWwgcmFuZ28gZGFkbyBzZSBoYWxsYSBlbCB2YWxvciByZWFsIGRlIHVuIHBhcmFtZXRybyBjb24gOTUlIGRlIHNlZ3VyaWRhZC4gRWwgZXJyb3IgZXN0aW1hZG8gZGUgbG9zIGRhdG9zIHNlIGVuY3VlbnRyYSwgZW4gc3UgbWF5b3JpYSwgZW50cmUgMCB5IDAuMiwgbG8gcXVlIGRlbXVlc3RyYSBxdWUgZXMgYnVlbiBtZXRvZG8gcGFyYSBlc3RlIHRpcG8gZGUgZGF0b3M8ZGl2Lz4NCg0KIyMjIyBJbnRlcnBvbGFjaW9uIGNvbiBlbCBtZXRvZG8gZGUgUG9saWdvbm9zIGRlIFRoaWVzc2VuICAgICAgICAgICAgICAgICAgICAgICANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+RW4gbGEgRmlnLiAxMiBzZSBwdWVkZSBvYnNlcnZhciBxdWUgZXN0YSBoZWNobyBkZSBjdWFkcmFkb3MgZGUgdmFyaW9zIGNvbG9yZXMsIGVzdG9zIHVsdGltb3MgaWd1YWxlcyBhbCBtZXRvZG8gYW50ZXJpb3IsIGxvIHF1ZSBpbmRpY2EgcXVlIGxhIHByZWNpcGl0YWNpb24gc2UgY2VudHJhIGVuIGxhIHBhcnRlIG5vcm9yaWVudGFsIGRlbCBkZXBhcnRhbWVudG8uIFBlcm8gYSBzdSB2ZXogc2UgcHVlZGUgdmVyIHF1ZSBlbnRyZSBjdWFkcmFkb3MgaGF5IGNhbWJpb3MgbXV5IGFicnVwdG9zLCBsbyBxdWUgbm8gcGVybWl0ZSB1bmEgY29ycmVjdGEgdmlzdWFsaXphY2lvbiBkZSBsb3MgZGF0b3MgZGUgcHJlY2lwaXRhY2lvbi4gRXN0ZSBtZXRvZG8gcHVlZGUgc2VyIHV0aWwgcGFyYSBkYXRvcyBtYXMgZ2VuZXJhbGVzLCBkYXRvcyBxdWUgbm8gbmVjZXNpdGVuIHRhbnRhIGVzcGVjaWZpY2lkYWQgZSBpbmNsdXNvIHBhcmEgZGF0b3MgY3VhbGl0YXRpdm9zLiANCg0KVGFtYmllbiBzZSBwdWVkZSBhcHJlY2lhciBxdWUgbGEgbWl0YWQgZGVsIGRlcGFydGFtZW50byBwcmVzZW50bywgZW4gbG9zIGRpYXMgbWVuY2lvbmFkb3MsIHVuYSBwcmVjaXBpdGFjaW9uIG11eSBiYWphIChlbnRyZSAwLTEwIG1tKSwgbGEgcGFydGUgbm9yb2NjaWRlbnRhbCBwcmVjaXBpdGFjaW9uZXMgZW50cmUgMTAtMzAgbW0sIG1pZW50cmFzIHF1ZSBlbiBsYSB6b25hIGRlIGxhIFNpZXJyYSBOZXZhZGEsIHNlIGhhbGxhcm9uIGVudHJlIDMwLTcwIG1tLjxkaXYvPg0KDQojIyMjIEludGVycG9sYWNpb24gY29uIGVsIG1ldG9kbyBkZSBBanVzdGUgUG9saW5vbWlhbCBkZSBTZWd1bmRvIE9yZGVuDQoNCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPkVuIGxhIEZpZy4gMTMgc2UgcHVlZGVuIGFwcmVjaWFyIGN1cnZhcyBkZSBsb3MgY29sb3JlcyBtZW5jaW9uYWRvcywgZGFuZG9sZSB1bmEgZm9ybWEgcGFyZWNpZGEgYSBsYSBkZSB1biBhcmNvaXJpcywgZGV0ZXJtaW5hbmRvIGFzaSwgY29tbyB5YSBzZSBoYSB2ZW5pZG8gaGFibGFuZG8sIHF1ZSBsYSBwYXJ0ZSBub3JvcmllbnRhbCBlcyBsYSBxdWUgcHJlc2VudGEgcHJlY2lwaXRhY2lvbmVzIGFsdGFzIGRlYmlkbyBhIGxhIHZhcmlhY2lvbiBkZSBwaXNvcyB0ZXJtaWNvcyBxdWUgdGllbmUgcG9yIHNlciBwYXJ0ZSBkZSB1biBzaXN0ZW1hIG1vbnRhbm9zby4gQXVucXVlIGNvbiBlc3RlIG1ldG9kbyBzZSBwdWVkZW4gZGVzZXN0aW1hbiBjaWVydG9zIGRhdG9zLCBxdWUgcG9kcmlhbiBzZXIgc2lnbmlmaWNhdGl2b3MgeSBxdWUgbm8gc2UgcHVlZGVuIHZpc3VhbGl6YXIuIFBvciBlc3RvIHRhbXBvY28gc2UgY29uc2lkZXJhIHVuIGJ1ZW4gbWV0b2RvIHBhcmEgZXN0ZSB0aXBvIGRlIGRhdG9zLiAgPGRpdi8+DQoNCiMjIyBfX0NvbmNsdXNpb25lc19fIA0KDQotIExhIGludGVycG9sYWNpb24gaGEgc2lkbyB1bmEgZGUgbGFzIGhlcnJhbWllbnRhcyBtYXMgdXRpbGl6YWRhcyBwb3IgbG9zIGludmVzaXRnYWRvcmVzIHlhIHF1ZSBsZXMgcHJvdmVlbiBsYSBmYWNpbGlkYWQgZGUgaGFsbGFyIGRhdG9zIHNpbiB0ZW5lciBxdWUgZGlyaWdpcnNlIGhhc3RhIGVsIGx1Z2FyIHBhcmEgdG9tYXJsb3MuIA0KDQotIFNlIGVzdGltYSBxdWUgZWwgbWV0b2RvIG1hcyBjb252ZW5pZW50ZSBwYXJhIGVzdGUgdGlwbyBkZSBkYXRvcywgY29tbyBsbyBlcyBsYSBwcmVjaXBpdGFjaW9uLCBlcyBlbCBJRFcsIGVsIGN1YWwgdGllbmUgY2llcnRvIG1hcmdlbiBkZSBlcnJvciBxdWUgcGVybWl0aW8gc3UgY29tcGFyYWNpb24gY29uIGxvcyBkZW1hcyBtZXRvZG8geSBkZSBlc3RhIG1hbmVyYXNlIGhpem8gcG9zaWJsZSB2aXN1YWxpemFyIHN1IGNvbmZpYWJpbGlkYWQgcGFyYSBpbnRlcnBvbGFyLiANCg0KLSBFbCBkZXBhcnRhbWVudG8gZGVsIE1hZ2RhbGVuYSwgY29tbyBzZSBwdWRvIG9ic2VydmFyLCBwYXJhIHByaW5jaXBpb3MgZGUgSnVuaW8gdGllbmUgYmFqYXMgcHJlY2lwaXRhY2lvbmVzIHlhIHF1ZSBlcyBjdWFuZG8gc2UgZGVzYXJyb2xsYSBzdSB0ZW1wb3JhZGEgc2VjYSwgZGlzcHVlc3RhIGhhc3RhIGVsIG1lcyBkZSBhZ29zdG8uIFkgbGFzIHByZWNpcGl0YWNpb25lcyBzZSBwdWVkZW4gdmlzdWFsaWF6YXIsIG1hcyBxdWUgdG9kbywgaGFjaWEgZWwgbm9yb3JpZW50ZSBkZWwgZGVwYXJ0YW1lbnRvLCBxdWUgZXMgZG9uZGUgc2UgdWJpY2EgbGEgU2llcnJhIE5ldmFkYS4gDQoNCiMjIyBfX1JlZmVyZW5jaWFzX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCi0gQXJjTWFwLiAoMjAxNikuIENvbXBhcmluZyBpbnRlcnBvbGF0aW9uIG1ldGhvZHMtSGVscDogQXJjR0lTIGZvciBEZXNrdG9wLiBBcmNHaXMuIGh0dHBzOi8vZGVza3RvcC5hcmNnaXMuY29tL2VuL2FyY21hcC8xMC4zL3Rvb2xzL3NwYXRpYWwtYW5hbHlzdC10b29sYm94L2NvbXBhcmluZy1pbnRlcnBvbGF0aW9uLW1ldGhvZHMuaHRtIA0KDQotIEFzYWxlLCBSLiAoMjAyMCwganVuaW8gMjkpLiBJbnRlcnBvbGFyLiBEaWNjaW9uYXJpbyBkZSBsYSBsZW5ndWEgZXNwYW5vbGEuIERpY2Npb25hcmlvIGRlIGxhIGxlbmd1YSBlc3Bhbm9sYSAtIEVkaWNpb24gZGVsIFRyaWNlbnRlbmFyaW8uIGh0dHBzOi8vZGxlLnJhZS5lcy9pbnRlcnBvbGFyDQoNCi0gQ2FtcG9zLCBELiAoMjAwMykuIEludHJvZHVjY2lvbiBhIGxvcyBNZXRvZG9zIE51bWVyaWNvczogU29mdHdhcmUgZW4gQmFzaWMgeSBhcGxpY2FjaW9uZXMgZW4gSGlkcm9sb2dpYSBTdXBlcmZpY2lhbC4gRWRpdG9yaWFsIFVuaXZlcnNpdGFyaWEgUG90b3NpbmEuDQoNCi0gQ2FuZGlhIEIsIFIuLCAmIENhaW96emkgQS4sIEcuICgyMDA1KS4gSW50ZXJ2YWxvcyBkZSBDb25maWFuemEuIFJldmlzdGEgbWVkaWNhIGRlIENoaWxlLCAxMzMoOSksIDExMTEtMTExNS4gaHR0cHM6Ly9kb2kub3JnLzEwLjQwNjcvczAwMzQtOTg4NzIwMDUwMDA5MDAwMTcNCg0KLSBEQU5FLiAoMjAxOSkuIFJlc3VsdGFkb3MsIENlbnNvIE5hY2lvbmFsIGRlIFBvYmxhY2lvbiB5IFZpdmllbmRhIDIwMTguIERlcGFydGFtZW50byBBZG1pbmlzdHJhdGl2byBOYWNpb25hbCBkZSBFc3RhZGlzdGljYSwgREFORS4gaHR0cHM6Ly93d3cuZGFuZS5nb3YuY28vZmlsZXMvY2Vuc28yMDE4L2luZm9ybWFjaW9uLXRlY25pY2EvcHJlc2VudGFjaW9uZXMtdGVycml0b3Jpby8xOTEwMDQtQ05QVi1wcmVzZW50YWNpb24tTWFnZGFsZW5hLnBkZg0KDQotIEdpbW9uZCwgTS4gKDIwMTkpLiBJbnRybyB0byBHSVMgYW5kIFNwYXRpYWwgQW5hbHlzaXMuIEludHJvIHRvIEdJUyBhbmQgU3BhdGlhbCBBbmFseXNpcy4gaHR0cHM6Ly9tZ2ltb25kLmdpdGh1Yi5pby9TcGF0aWFsL2luZGV4Lmh0bWwNCg0KLSBMb25nbGV5LCBQLiwgR29vZGNoaWxkLCBNLiwgTWFndWlyZSwgRC4geSBSaGluZCwgRC4gKDIwMDUpLiBHZW9ncmFwaGljIEluZm9ybWF0aW9uIFN5c3RlbXMgYW5kIFNjaWVuY2UuIEVkaXRvcmlhbCBXaWxleS4gDQoNCi0gTW9yZWFubywgUi4gKDIwMDgpLiBTaXN0ZW1hIGRlIEluZm9ybWFjaW9uIHBhcmEgbGEgSW50ZXJwb2xhY2lvbiBFc3BhY2lhbCB5IFRlbXBvcmFsIGRlIERhdG9zIHNvYnJlIGVsIFRpZW1wbyBBdG1vc2ZlcmljbyB5IGVsIENsaW1hIGRlbCBFY3VhZG9yIChUZXNpcyBkZSBwcmVncmFkbykuIEVzY3VlbGEgZGUgSW5nZW5pZXJpYSwgUXVpdG8uDQoNCi0gUXVlc2FkYSwgTC4gKDIwMjApLlF1ZSBlcyBsYSBpbnRlcnBvbGFjaW9uIGVzcGFjaWFsIGRlIGRhdG9zLiBHZW9Jbm5vdmEuIGh0dHBzOi8vZ2VvaW5ub3ZhLm9yZy9ibG9nLXRlcnJpdG9yaW8vcXVlLWVzLWxhLWludGVycG9sYWNpb24tZXNwYWNpYWwtZGUtZGF0b3MvDQoNCi0gUXVpbnRpbiwgQy4oRWQpLigyMDAyKS4gQ29sb21iaWEuR3J1cG8gRWRpdG9yaWFsIE5vcm1hLg0KDQotIFNvY2llZGFkIEdlb2dyYWZpY2EgZGUgQ29sb21iaWEuICgyMDExKS4gTWFnZGFsZW5hLiBodHRwOi8vd3d3LnNvZ2VvY29sLmVkdS5jby9tYWdkYWxlbmEuaHRtDQoNCi0gU3RhdGlzdGljYWwgdGVjaG5pcXVlcyB1c2luZyBhIHNlbWktdmFyaW9ncmFtIGZvciBkZXZlbG9waW5nIGNvbnRpbnVvdXMgc3VyZmFjZSBtb2RlbHMgKEtyaWdpbmcpLiAoMjAwOSkuIFBsYW5ldCBCb3RhbnkuIGh0dHA6Ly9wbGFuZXQuYm90YW55LnV3Yy5hYy56YS9uaXNsL0dJUy9zcGF0aWFsL2NoYXBfMV8zMC5odG0NCg0KLSBUb2RhQ29sb21iaWEuICgyMDE4KS4gQ2xpbWEgRGVwYXJ0YW1lbnRvIGRlbCBNYWdkYWxlbmEuIFRvZGFDb2xvbWJpYS4gaHR0cHM6Ly93d3cudG9kYWNvbG9tYmlhLmNvbS9kZXBhcnRhbWVudG9zLWRlLWNvbG9tYmlhL21hZ2RhbGVuYS9jbGltYS5odG1sDQoNCi0gVG9kYUNvbG9tYmlhLiAoMjAxOCkuIEhpc3RvcmlhIERlcGFydGFtZW50byBkZWwgTWFnZGFsZW5hLiBUb2RhQ29sb21iaWEuIGh0dHBzOi8vd3d3LnRvZGFjb2xvbWJpYS5jb20vZGVwYXJ0YW1lbnRvcy1kZS1jb2xvbWJpYS9tYWdkYWxlbmEvaGlzdG9yaWEuaHRtbA0KDQotIFZpbGxhZ29tZXosIEMuICgyMDE3KS4gRWwgZm9ybWF0byBUSUYuIENDTS4gaHR0cHM6Ly9lcy5jY20ubmV0L2NvbnRlbnRzLzcyNC1lbC1mb3JtYXRvLXRpZg0K