Presentación

La idea de este artículo es analizar la actividad en redes sociales del Presidente de Argentina Alberto Fernández. A través de la descarga de todos sus tweets emitidos durante 2019, se espera recuperar las principales cifras y elementos que describan su las formas por las cuales elige comunicar sus mensajes en la red y el alcance de los mismos. Las bases de trabajo fueron conformadas mediante la descarga de tweets a través del paquete Rtweet git.

Descriptivos

Luego de la descarga y posterior limpieza de los datos, procederemos a analizar la cantidad de tweets emitidos considerando variables temporales. La Base contiene un total de 3191 de tweets publicados desde 2018-11-01 hasta 2020-03-08.

Se aprecia una fuerte actividad anterior al mes de mayo, donde fue anunciada su candidatura por Cristina Kirchner. La cantidad de tweets recupera cierto crecimiento en los meses de las PASO y de las elecciones generales.

Se puede ver picos de actividad durante la mañana y el transcurso del día, especificamente al mediodia y por la medianoche. Tambien es posible apreciar la distribución de los mensajes según el dispositivo de emisión.

Otro dato relevante es evaluar la proporción de mensajes que se envían según el dispositivo. Tambien es posible analizar la evolución de esta variable

Iphone representa la plataforma mayoritaria en relación al envio de mensajes con el % 85.52. Por otra parte, tambien es posible apreciar el cambio de dispositivo luego del lanzamiento de la candidatura durante el mes de mayo.

Por otra parte, tambien es representativo de la efectividad de un mensaje el denominado ratio de los tweets. Consiste en un cálculo que es basicamente el cociente entre la cantidad de respuestas del tweet y la suma del número de favs y rt. De esta manera, si el ratio es álto es señal de una mala difusión de los mensajes.

El gráfico muestra una mejor performance en el alcance de los tweets luego de la confirmación de la fórmula presidencial, lo cual puede representar una buena difusión del mensaje deseado. La evoluciòn de la cantidad de retweets y favs parecen sostener esta idea

A continuación se muestra el mensaje mas retuiteado y el mas faveado.


Tweet con mayor cantidad de favs

Tweet con mayor cantidad de Retweets

Nube de palabras

Una buena manera de representar las palabras utilizadas consiste en conformar las nubes de palabras o bag of words. Basicamente se trata de visualizar cuales son los términos de mayor uso mostrando su peso en relación a los otros.

Esta es la nube de palabras del año en Twitter de alferdez

Palabras positivas

Palabras negativas

Las palabras positivas están vinculadas a sentimientos de cariño y esperanza, mientras que las negativas hablan del diagnostico que el Presidente realiza del estado recibido donde “pobreza” y “deuda” protagonizan el conteo.


  1. Soy sociólogo (FSOC-UBA). Me dedico al analisis de datos en temas como el estudio de la opinión pública, comportamiento electoral, analisis de texto, redes sociales y consumos culturales, todo mediante R y Phyton. Dirijo el Observatorio de Opinión Publica en ACDES y escribo en mi blog de temas de R y en mi blog de temas de generales. Contacto:

LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBkZSBUd2VldHMiDQphdXRob3I6ICJGZXJjaGVybyBKdWFuIEd1aWxsZXJtbyAoQGd1aWxsZWFkaG9ub3JlbSleWyBfU295IHNvY2nDs2xvZ28gKEZTT0MtVUJBKS4gTWUgZGVkaWNvIGFsIGFuYWxpc2lzIGRlIGRhdG9zIGVuIHRlbWFzIGNvbW8gZWwgZXN0dWRpbyBkZSBsYSBvcGluacOzbiBww7pibGljYSwgY29tcG9ydGFtaWVudG8gZWxlY3RvcmFsLCBhbmFsaXNpcyBkZSB0ZXh0bywgcmVkZXMgc29jaWFsZXMgeSBjb25zdW1vcyBjdWx0dXJhbGVzLCB0b2RvIG1lZGlhbnRlIFIgeSBQaHl0b24uIERpcmlqbyBlbCBPYnNlcnZhdG9yaW8gZGUgT3BpbmnDs24gUHVibGljYSAgZW5fIFtBQ0RFU10oaHR0cDovL3d3dy5hY2Rlc3dlYi5vcmcvKSBfeSBlc2NyaWJvIGVuXyBbbWkgYmxvZyBkZSB0ZW1hcyBkZSBSXShodHRwczovL3JwdWJzLmNvbS9ndWlsbGVmZXJjaGVybykgX3kgZW5fIFttaSBibG9nIGRlIHRlbWFzIGRlIGdlbmVyYWxlc10oaHR0cHM6Ly9iaXRhY29yYW1vZGVybmFibG9nLndvcmRwcmVzcy5jb20pLiBfQ29udGFjdG9fOiBndWlsbGVmZXJjaGVyb0BnbWFpbC5jb21dIg0KZGF0ZTogIk1hcnpvIGRlIDIwMjAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIHRvYzogVFJVRQ0KICAgIGRlcHRoOiA1DQpzdWJ0aXRsZTogRXhwbG9yYW5kbyBxdWUgaGF5IGRldHJhcyBkZSB1biBzaW1wbGUgdHdlZXQNCi0tLQ0KICAgIA0KPGJyPg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFKQ0KYGBgDQogICAgIA0KIyBQcmVzZW50YWNpw7NuDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCg0KIyBzZSBib3JyYW4gdG9kb3MgbG9zIG9iamV0b3MgZGUgbGEgbWVtb3JpYQ0KDQpybShsaXN0ID1scygpKQ0KDQojIHNlIGNhcmdhbiBsaWJyZXJpYXMgZGUgdHJhYmFqbw0KbGlicmFyeShydHdlZXQpDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSh0bSkNCmxpYnJhcnkoZ2d3b3JkY2xvdWQpDQpsaWJyYXJ5KHByb3VzdHIpDQpsaWJyYXJ5KHN5dXpoZXQpDQpsaWJyYXJ5KFNub3diYWxsQykNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KHRpZHl0ZXh0KQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeSh3b3JkY2xvdWQpDQpsaWJyYXJ5KGdndGVybikNCg0KDQojTGV2YW50YW1vcyB1bmEgdmVyc2nDs24gZGUgU0RBTCANCg0Kc2RhbCA8LSByZWFkLmNzdignc2RhbC5jc3YnLCBlbmNvZGluZyA9ICdVVEYtOCcpDQoNCmBgYA0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+DQoNCkxhIGlkZWEgZGUgZXN0ZSBhcnTDrWN1bG8gZXMgYW5hbGl6YXIgbGEgYWN0aXZpZGFkIGVuIHJlZGVzIHNvY2lhbGVzIGRlbCBQcmVzaWRlbnRlIGRlIEFyZ2VudGluYSBBbGJlcnRvIEZlcm7DoW5kZXouIEEgdHJhdsOpcyBkZSBsYSBkZXNjYXJnYSBkZSB0b2RvcyBzdXMgdHdlZXRzIGVtaXRpZG9zIGR1cmFudGUgMjAxOSwgc2UgZXNwZXJhIHJlY3VwZXJhciBsYXMgcHJpbmNpcGFsZXMgY2lmcmFzIHkgZWxlbWVudG9zIHF1ZSBkZXNjcmliYW4gc3UgbGFzIGZvcm1hcyBwb3IgbGFzIGN1YWxlcyBlbGlnZSBjb211bmljYXIgc3VzIG1lbnNhamVzIGVuIGxhIHJlZCB5IGVsIGFsY2FuY2UgZGUgbG9zIG1pc21vcy4NCkxhcyBiYXNlcyBkZSB0cmFiYWpvIGZ1ZXJvbiBjb25mb3JtYWRhcyBtZWRpYW50ZSBsYSBkZXNjYXJnYSBkZSB0d2VldHMgYSB0cmF2w6lzIGRlbCBwYXF1ZXRlIFJ0d2VldCBbZ2l0XShodHRwczovL3J0d2VldC5pbmZvLykuDQoNCjxkaXYvPg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KI0Z1bmNpw7NuIHBhcmEgbGV2YW50YXIgYmFzZXMgc2Vnw7puIHVzdWFyaW8gaW5ncmVzYWRvDQoNCnVzdWFyaW8gPC0gImFsZmVyZGV6Ig0KDQpMZXZhbnRhcmJhc2VzIDwtIGZ1bmN0aW9uKHVzdWFyaW8pew0KICBCYXNlIDw8LSByZWFkLmNzdihwYXN0ZTAoIkJhc2VUd2VldHNAIix1c3VhcmlvLCIuY3N2IikpICNsZXZhbnRhIGxhIGJhc2UNCiAgQmFzZSA8PC0gQmFzZSAlPiUgDQogIHNlbGVjdChmZWNoYSwgDQogICAgICAgICBzdGF0dXNfaWQsIA0KICAgICAgICAgc2NyZWVuX25hbWUsIA0KICAgICAgICAgdGV4dCwNCiAgICAgICAgIGlzX3JldHdlZXQsDQogICAgICAgICBzb3VyY2UsDQogICAgICAgICBkaXNwbGF5X3RleHRfd2lkdGgsDQogICAgICAgICBoYXNodGFncywNCiAgICAgICAgIHJlcGx5X3RvX3NjcmVlbl9uYW1lLA0KICAgICAgICAgZmF2b3JpdGVfY291bnQsIA0KICAgICAgICAgcmV0d2VldF9jb3VudCwNCiAgICAgICAgIHJlcGx5X2NvdW50KSAlPiUgIyBzZWxlY2Npb25hbW9zIHZhcmlibGVzIHJlbGV2YW50ZXMNCiAgbXV0YXRlKG1lcz1hcy5udW1lcmljKG1vbnRoKEJhc2UkZmVjaGEpKSkgJT4lICNjcmVhbW9zIHZhcmlhYmxlIHBhcmEgZ3JhZmljYXIgbWVzDQogIG11dGF0ZShob3JhPWFzLm51bWVyaWMoaG91cihCYXNlJGZlY2hhKSkpICU+JSAgI2NyZWFtb3MgdmFyaWFibGUgcGFyYSBncmFmaWNhciBob3JhDQogIG11dGF0ZShob3JhQVJHPSBjYXNlX3doZW4oaG9yYT09ICIwIiB+ICIyMSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIxIiB+ICIyMiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIyIiB+ICIyMyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIzIiB+ICIwIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjQiIH4gIjEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcmE9PSAiNSIgfiAiMiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICI2IiB+ICIzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjciIH4gIjQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcmE9PSAiOCIgfiAiNSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICI5IiB+ICI2IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjEwIiB+ICI3IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjExIiB+ICI4IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjEyIiB+ICI5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjEzIiB+ICIxMCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIxNCIgfiAiMTEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcmE9PSAiMTUiIH4gIjEyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjE2IiB+ICIxMyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIxNyIgfiAiMTQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcmE9PSAiMTgiIH4gIjE1IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjE5IiB+ICIxNiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIyMCIgfiAiMTciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcmE9PSAiMjEiIH4gIjE4IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3JhPT0gIjIyIiB+ICIxOSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yYT09ICIyMyIgfiAiMjAiLCkpICU+JSANCiAgbXV0YXRlKEZlY2hhX2NvcnRhPWFzLkRhdGUoZmVjaGEpKQ0KfQ0KDQoNCkxldmFudGFyYmFzZXModXN1YXJpbykNCmNhbnRpZGFkIDwtIG5yb3coQmFzZSkNCg0KZGVzZGUgPC0gbWluKEJhc2UkRmVjaGFfY29ydGEpDQoNCmhhc3RhIDwtIG1heChCYXNlJEZlY2hhX2NvcnRhKQ0KDQoNCmBgYA0KDQojIyBEZXNjcmlwdGl2b3MNCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+DQoNCkx1ZWdvIGRlIGxhIGRlc2NhcmdhIHkgcG9zdGVyaW9yIGxpbXBpZXphIGRlIGxvcyBkYXRvcywgcHJvY2VkZXJlbW9zIGEgYW5hbGl6YXIgbGEgY2FudGlkYWQgZGUgdHdlZXRzIGVtaXRpZG9zIGNvbnNpZGVyYW5kbyB2YXJpYWJsZXMgdGVtcG9yYWxlcy4gTGEgQmFzZSBjb250aWVuZSB1biB0b3RhbCBkZSBgciBjYW50aWRhZGAgZGUgdHdlZXRzIHB1YmxpY2Fkb3MgZGVzZGUgYHIgZGVzZGVgIGhhc3RhIGByIGhhc3RhYC4NCg0KDQoNCg0KPGRpdi8+DQoNCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyMjI0dyYWZpY29zIHBvciBkaWEjIyMjDQoNCiMgQmFzZSAlPiUNCiMgc2VsZWN0KG1lcywgRmVjaGFfY29ydGEpICU+JQ0KIyBmaWx0ZXIoRmVjaGFfY29ydGEgPiAiMjAxOS0wMS0wMSIpICU+JQ0KIyBncm91cF9ieShGZWNoYV9jb3J0YSkgJT4lDQojIGFycmFuZ2UoRmVjaGFfY29ydGEpICU+JQ0KIyBzdW1tYXJpc2UodG90YWwgPSBuKCkpICU+JQ0KIyBnZ3Bsb3QoYWVzKHg9RmVjaGFfY29ydGEseT10b3RhbCkpKw0KIyBnZW9tX2xpbmUoKSsNCiMgZ2d0aXRsZSgiQ2FudGlkYWQgZGUgdHdlZXRzIHNlZ8O6biBtZXMiKSsNCiMgICAgIGxhYnModGl0bGUgPSAiTsO6bWVybyBkZSB0d2VldHMgcHVibGljYWRvcyIsIHggPSAiZmVjaGEgZGUgcHVibGljYWNpw7NuIiwNCiMgICAgICAgIHkgPSAibsO6bWVybyBkZSB0d2VldHMiKSArDQojIHRoZW1lX2J3KCkgKw0KIyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBzaXplID0gMTApLA0KIyAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQ0KDQoNCiNWRVJTSU9OIEhJR0hDSEFSVA0Kb3B0aW9ucyhoaWdoY2hhcnRlci50aGVtZSA9IGhjX3RoZW1lX2dncGxvdDIoKSkNClRhYmxhXzEgPC0gQmFzZSAlPiUgDQogIHNlbGVjdChtZXMsIEZlY2hhX2NvcnRhKSAlPiUNCiAgZmlsdGVyKEZlY2hhX2NvcnRhID4gIjIwMTktMDEtMDEiKSAlPiUgDQogIGdyb3VwX2J5KG1lcykgJT4lDQogIGFycmFuZ2UobWVzKSAlPiUNCiAgc3VtbWFyaXNlKHRvdGFsID0gbigpKSANCg0KDQoNCkdyYWZpY28xIDwtICBoaWdoY2hhcnQoKSAlPiUgDQogIGhjX3RpdGxlKHRleHQ9IkNhbnRpZGFkIGRlIHR3ZWV0cyBzZWfDum4gbcOpcyIpJT4lDQogIGhjX2NoYXJ0KHR5cGU9ImxpbmUiKSAlPiUNCiAgaGNfeEF4aXMoY2F0ZWdvcmllcyA9IFRhYmxhXzEkbWVzKSAlPiUNCiAgaGNfYWRkX3NlcmllcyhUYWJsYV8xJHRvdGFsLCBuYW1lPSJDYW50aWRhZCBkZSBUd2VldHMiKSANCg0KR3JhZmljbzENCg0KYGBgDQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5Ij4NCg0KU2UgYXByZWNpYSB1bmEgZnVlcnRlIGFjdGl2aWRhZCBhbnRlcmlvciBhbCBtZXMgZGUgbWF5bywgZG9uZGUgZnVlIGFudW5jaWFkYSBzdSBjYW5kaWRhdHVyYSBwb3IgQ3Jpc3RpbmEgS2lyY2huZXIuIExhIGNhbnRpZGFkIGRlIHR3ZWV0cyByZWN1cGVyYSBjaWVydG8gY3JlY2ltaWVudG8gZW4gbG9zIG1lc2VzIGRlIGxhcyBQQVNPIHkgZGUgbGFzIGVsZWNjaW9uZXMgZ2VuZXJhbGVzLiANCg0KPGRpdi8+DQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojVkVSU0lPTiBISUdIQ0hBUlQNCm9wdGlvbnMoaGlnaGNoYXJ0ZXIudGhlbWUgPSBoY190aGVtZV9nZ3Bsb3QyKCkpDQpUYWJsYV8yIDwtIEJhc2UgJT4lIA0KICBzZWxlY3QoaG9yYSwgRmVjaGFfY29ydGEpICU+JQ0KICBmaWx0ZXIoRmVjaGFfY29ydGEgPiAiMjAxOS0wMS0wMSIpICU+JSANCiAgZ3JvdXBfYnkoaG9yYSkgJT4lDQogIGFycmFuZ2UoaG9yYSkgJT4lDQogIHN1bW1hcmlzZSh0b3RhbCA9IG4oKSkgDQoNCg0KDQpHcmFmaWNvMiA8LSAgaGlnaGNoYXJ0KCkgJT4lIA0KICBoY190aXRsZSh0ZXh0PSJOw7ptZXJvIGRlIHR3ZWV0cyBzZWfDum4gaG9yYSIpJT4lDQogIGhjX2NoYXJ0KHR5cGU9ImxpbmUiKSAlPiUNCiAgaGNfY29sb3JzKGNvbG9yID0gIiNCNzFDMUMiKSAlPiUgDQogIGhjX3hBeGlzKGNhdGVnb3JpZXMgPSBUYWJsYV8yJGhvcmEpICU+JQ0KICBoY19hZGRfc2VyaWVzKFRhYmxhXzIkdG90YWwsIG5hbWU9IkNhbnRpZGFkIGRlIFR3ZWV0cyIpIA0KDQpHcmFmaWNvMg0KYGBgDQoNCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPg0KU2UgcHVlZGUgdmVyIHBpY29zIGRlIGFjdGl2aWRhZCBkdXJhbnRlIGxhIG1hw7FhbmEgeSBlbCB0cmFuc2N1cnNvIGRlbCBkw61hLCBlc3BlY2lmaWNhbWVudGUgYWwgbWVkaW9kaWEgeSBwb3IgbGEgbWVkaWFub2NoZS4gVGFtYmllbiBlcyBwb3NpYmxlIGFwcmVjaWFyIGxhIGRpc3RyaWJ1Y2nDs24gZGUgbG9zIG1lbnNhamVzIHNlZ8O6biBlbCBkaXNwb3NpdGl2byBkZSBlbWlzacOzbi4NCg0KT3RybyBkYXRvIHJlbGV2YW50ZSBlcyBldmFsdWFyIGxhIHByb3BvcmNpw7NuIGRlIG1lbnNhamVzIHF1ZSBzZSBlbnbDrWFuIHNlZ8O6biBlbCBkaXNwb3NpdGl2by4gVGFtYmllbiBlcyBwb3NpYmxlIGFuYWxpemFyIGxhIGV2b2x1Y2nDs24gZGUgZXN0YSB2YXJpYWJsZQ0KDQo8ZGl2Lz4NCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiNWRVJTSU9OIEhJR0hDSEFSVA0Kb3B0aW9ucyhoaWdoY2hhcnRlci50aGVtZSA9IGhjX3RoZW1lX2dncGxvdDIoKSkNClRhYmxhXzMgPC0gQmFzZSAlPiUgDQogIHNlbGVjdChzb3VyY2UpICU+JQ0KICBncm91cF9ieShzb3VyY2UpICU+JQ0KICBzdW1tYXJpc2UodG90YWwgPSBuKCkpICU+JSANCiAgbXV0YXRlKHByb3AgPSByb3VuZCgodG90YWwvc3VtKHRvdGFsKSoxMDApLDIpKSAlPiUgDQogIGFycmFuZ2UoLXRvdGFsLCAtc291cmNlKQ0KDQpQb3JjZW50YWplaXBob25lIDwtIFRhYmxhXzMgJT4lIA0KICBzZWxlY3Qoc291cmNlLHByb3ApICU+JSANCiAgaGVhZCgxKSAlPiUgDQogIHNlbGVjdChwcm9wKQ0KDQpkYXRvMSA8LSBQb3JjZW50YWplaXBob25lJHByb3ANCg0KIyBnZ3Bsb3QoVGFibGFfMywgYWVzKHggPSBtZXMseSA9IHRvdGFsLCBmaWxsID0gbWVzKSkgKyANCiMgICAgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArIA0KIyAgICAgZmFjZXRfZ3JpZCguIH4gc291cmNlKSArIA0KIyAgICAgeWxhYigiVG90YWwgZGUgbWVuc2FqZXMiKSArIA0KIyAgICAgc2NhbGVfZmlsbF9tYW51YWwoIkRpc3Bvc2l0aXZvIiwgdmFsdWVzID0gYWxwaGEoYygiY29yYWwiLCAibGlnaHRibHVlIiksIDEpKSANCg0KDQpHcmFmaWNvMyA8LSAgaGNoYXJ0KFRhYmxhXzMsICJ0cmVlbWFwIiwgaGNhZXMoeCA9IHNvdXJjZSwgdmFsdWUgPSB0b3RhbCwgY29sb3IgPSAgcHJvcCkpJT4lIA0KICBoY190aXRsZSh0ZXh0PSJDYW50aWRhZCBkZSB0d2VldHMgcG9yIGRpc3Bvc2l0aXZvIikNCg0KR3JhZmljbzMNCg0KVGFibGFfNCA8LSBCYXNlICU+JSANCiAgc2VsZWN0KG1lcyxzb3VyY2UsIEZlY2hhX2NvcnRhKSAlPiUNCiAgZmlsdGVyKEZlY2hhX2NvcnRhID4gIjIwMTktMDEtMDEiKSAlPiUgDQogIGdyb3VwX2J5KG1lcyxzb3VyY2UpICU+JQ0KICBhcnJhbmdlKG1lcykgJT4lDQogIHN1bW1hcmlzZSh0b3RhbCA9IG4oKSkgDQoNCg0KR3JhZmljbzQgPC0gIFRhYmxhXzQgJT4lIA0KICBoY2hhcnQoImxpbmUiLGhjYWVzKHggPSBtZXMsIHkgPSB0b3RhbCwgZ3JvdXAgPSBzb3VyY2UpKSAlPiUgDQogIGhjX3RpdGxlKHRleHQ9IkNhbnRpZGFkIGRlIHR3ZWV0cyBzZWfDum4gbcOpcyBwb3IgZGlzcG9zaXRpdm8iKQ0KICANCkdyYWZpY280ICANCg0KDQpgYGANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+DQpJcGhvbmUgcmVwcmVzZW50YSBsYSBwbGF0YWZvcm1hIG1heW9yaXRhcmlhIGVuIHJlbGFjacOzbiBhbCBlbnZpbyBkZSBtZW5zYWplcyBjb24gZWwgJSBgciBkYXRvMWAuIFBvciBvdHJhIHBhcnRlLCB0YW1iaWVuIGVzIHBvc2libGUgYXByZWNpYXIgZWwgY2FtYmlvIGRlIGRpc3Bvc2l0aXZvIGx1ZWdvIGRlbCBsYW56YW1pZW50byBkZSBsYSBjYW5kaWRhdHVyYSBkdXJhbnRlIGVsIG1lcyBkZSBtYXlvLg0KDQpQb3Igb3RyYSBwYXJ0ZSwgdGFtYmllbiBlcyByZXByZXNlbnRhdGl2byBkZSBsYSBlZmVjdGl2aWRhZCBkZSB1biBtZW5zYWplIGVsIGRlbm9taW5hZG8gcmF0aW8gZGUgbG9zIHR3ZWV0cy4gQ29uc2lzdGUgZW4gdW4gY8OhbGN1bG8gcXVlIGVzIGJhc2ljYW1lbnRlIGVsIGNvY2llbnRlIGVudHJlIGxhIGNhbnRpZGFkIGRlIHJlc3B1ZXN0YXMgZGVsIHR3ZWV0IHkgbGEgc3VtYSBkZWwgbsO6bWVybyBkZSBmYXZzIHkgcnQuIERlIGVzdGEgbWFuZXJhLCBzaSBlbCByYXRpbyBlcyDDoWx0byBlcyBzZcOxYWwgZGUgdW5hIG1hbGEgZGlmdXNpw7NuIGRlIGxvcyBtZW5zYWplcy4NCg0KPGRpdi8+DQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KI0xldmFudGFtb3MgYmFzZSBleHRyYWlkYSBjb24gVHdpbnQgZW4gcGh5dG9uDQoNCg0KQmFzZVJhdGlvIDwtIHJlYWQuY3N2KCJhbGJlcnRvLmNzdiIsIGVuY29kaW5nID0gIlVURi04IikNCg0KDQpCYXNlUmF0aW9zZWwgPC0gQmFzZVJhdGlvICU+JSANCiAgc2VsZWN0KGlkLGRhdGUsdGltZSx0d2VldCxyZXBsaWVzX2NvdW50LCByZXR3ZWV0c19jb3VudCwgbGlrZXNfY291bnQpICU+JSANCiAgbXV0YXRlKGZlY2hhID0gYXMuRGF0ZShkYXRlKSkgJT4lIA0KICBmaWx0ZXIoZmVjaGEgPiAnMjAxOS0wMS0wMScgJiBmZWNoYSA8ICcyMDE5LTEyLTMxJykgJT4lIA0KICBtdXRhdGUobWVzID0gbW9udGgoZmVjaGEpKSAlPiUgDQogIG11dGF0ZShyYXRpbyA9IHJvdW5kKHJlcGxpZXNfY291bnQvKHJldHdlZXRzX2NvdW50ICsgbGlrZXNfY291bnQpLDIpLA0KICAgICAgICAgbGFiZWwgPSByYXRpbykgJT4lIA0KICBmaWx0ZXIocmV0d2VldHNfY291bnQgIT0gJzAnICYgbGlrZXNfY291bnQgIT0gJzAnKQ0KDQpUYWJsYV81IDwtIEJhc2VSYXRpb3NlbCAlPiUgDQogIHNlbGVjdChmZWNoYSxyYXRpbykgJT4lIA0KICBhcnJhbmdlKGZlY2hhKQ0KDQoNCkdyYWZpY281IDwtICBoaWdoY2hhcnQoKSAlPiUgDQogIGhjX3RpdGxlKHRleHQ9IkV2b2x1Y2nDs24gZGUgUmF0aW8iKSU+JQ0KICBoY19jaGFydCh0eXBlPSJsaW5lIikgJT4lDQogIGhjX3hBeGlzKGNhdGVnb3JpZXMgPSBUYWJsYV81JGZlY2hhKSAlPiUNCiAgaGNfYWRkX3NlcmllcyhUYWJsYV81JHJhdGlvLCBuYW1lPSJSYXRpbyIpICU+JSANCiAgaGNfY29sb3JzKCJncmVlbiIpDQoNCkdyYWZpY281DQpgYGANCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPg0KDQpFbCBncsOhZmljbyBtdWVzdHJhIHVuYSBtZWpvciBwZXJmb3JtYW5jZSBlbiBlbCBhbGNhbmNlIGRlIGxvcyB0d2VldHMgbHVlZ28gZGUgbGEgY29uZmlybWFjacOzbiBkZSBsYSBmw7NybXVsYSBwcmVzaWRlbmNpYWwsIGxvIGN1YWwgcHVlZGUgcmVwcmVzZW50YXIgdW5hIGJ1ZW5hIGRpZnVzacOzbiBkZWwgbWVuc2FqZSBkZXNlYWRvLiBMYSBldm9sdWNpw7JuIGRlIGxhIGNhbnRpZGFkIGRlIHJldHdlZXRzIHkgZmF2cyBwYXJlY2VuIHNvc3RlbmVyIGVzdGEgaWRlYQ0KDQo8ZGl2Lz4NCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KVGFibGFfNiA8LSBCYXNlUmF0aW9zZWwgJT4lIA0KICBzZWxlY3QobWVzLHJldHdlZXRzX2NvdW50KSAlPiUgDQogIGdyb3VwX2J5KG1lcykgJT4lIA0KICBzdW1tYXJpc2UoUlQ9c3VtKHJldHdlZXRzX2NvdW50KSkgJT4lIA0KICBhcnJhbmdlKG1lcykNCg0KDQpHcmFmaWNvNiA8LSAgaGlnaGNoYXJ0KCkgJT4lIA0KICBoY190aXRsZSh0ZXh0PSJFdm9sdWNpw7NuIGRlIFJldHdlZXRzIiklPiUNCiAgaGNfY2hhcnQodHlwZT0ibGluZSIpICU+JQ0KICBoY194QXhpcyhjYXRlZ29yaWVzID0gVGFibGFfNiRtZXMpICU+JQ0KICBoY19hZGRfc2VyaWVzKFRhYmxhXzYkUlQsIG5hbWU9IlJldHdlZXRzIikgJT4lIA0KICBoY19jb2xvcnMoIiNENTVFMDAiKQ0KDQpHcmFmaWNvNg0KYGBgDQoNCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NClRhYmxhXzcgPC0gQmFzZVJhdGlvc2VsICU+JSANCiAgc2VsZWN0KG1lcyxsaWtlc19jb3VudCkgJT4lIA0KICBncm91cF9ieShtZXMpICU+JSANCiAgc3VtbWFyaXNlKEZBVlM9c3VtKGxpa2VzX2NvdW50KSkgJT4lIA0KICBhcnJhbmdlKG1lcykNCg0KDQpHcmFmaWNvNyA8LSAgaGlnaGNoYXJ0KCkgJT4lIA0KICBoY190aXRsZSh0ZXh0PSJFdm9sdWNpw7NuIGRlIEZhdnMiKSU+JQ0KICBoY19jaGFydCh0eXBlPSJsaW5lIikgJT4lDQogIGhjX3hBeGlzKGNhdGVnb3JpZXMgPSBUYWJsYV83JG1lcykgJT4lDQogIGhjX2FkZF9zZXJpZXMoVGFibGFfNyRGQVZTLCBuYW1lPSJGYXZzIikgJT4lIA0KICBoY19jb2xvcnMoIiMwMDkyQjIiKQ0KDQpHcmFmaWNvNw0KDQpgYGANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+DQpBIGNvbnRpbnVhY2nDs24gc2UgbXVlc3RyYSBlbCBtZW5zYWplIG1hcyByZXR1aXRlYWRvIHkgZWwgbWFzIGZhdmVhZG8uDQo8ZGl2Lz4NCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0Kb3B0aW9ucyhzY2lwZW49OTk5KQ0KDQpNZW5zYWplTWFzUmV0dWl0ZWFkbyA8LSBCYXNlICU+JSANCiAgc2VsZWN0KHN0YXR1c19pZCwgdGV4dCwgcmV0d2VldF9jb3VudCkgJT4lIA0KICBhcnJhbmdlKGRlc2MocmV0d2VldF9jb3VudCkpICU+JSANCiAgaGVhZCgxKQ0KDQpNZW5zYWplTWFzRmF2ZWFkbyA8LSBCYXNlICU+JSANCiAgc2VsZWN0KHN0YXR1c19pZCwgdGV4dCwgZmF2b3JpdGVfY291bnQpICU+JSANCiAgYXJyYW5nZShkZXNjKGZhdm9yaXRlX2NvdW50KSkgJT4lIA0KICBoZWFkKDEpDQoNCmZhdiA8LSBNZW5zYWplTWFzRmF2ZWFkbyRzdGF0dXNfaWQNClJUIDwtIE1lbnNhamVNYXNSZXR1aXRlYWRvJHN0YXR1c19pZA0KDQojIGthYmxlKE1lbnNhamVNYXNGYXZlYWRvLCBhbGlnbiA9ICJyIikgJT4lDQojICAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9ICJzdHJpcGVkIiwgZnVsbF93aWR0aCA9IEYsIHBvc2l0aW9uID0gImNlbnRlciIpIA0KIyANCiMga2FibGUoTWVuc2FqZU1hc1JldHVpdGVhZG8sIGFsaWduID0gInIiKSAlPiUNCiMgICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gInN0cmlwZWQiLCBmdWxsX3dpZHRoID0gRiwgcG9zaXRpb24gPSAiY2VudGVyIikNCg0KYGBgDQo8YnI+DQoNCiMjIyBUd2VldCBjb24gbWF5b3IgY2FudGlkYWQgZGUgZmF2cw0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KDQojIGluc3RhbGwucGFja2FnZXMoImRldnRvb2xzIikNCmRldnRvb2xzOjppbnN0YWxsX2dpdGh1YigiZ2FkZW5idWllL3R3ZWV0cm1kIikNCmRldnRvb2xzOjppbnN0YWxsX2dpdGh1YigncnN0dWRpby93ZWJzaG90MicpDQoNCmxpYnJhcnkodHdlZXRybWQpDQoNCnR3ZWV0X3NjcmVlbnNob3QodHdlZXRfdXJsKHVzdWFyaW8sIGZhdikpDQogIA0KYGBgDQoNCg0KDQojIyMgVHdlZXQgY29uIG1heW9yIGNhbnRpZGFkIGRlIFJldHdlZXRzDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCg0KdHdlZXRfc2NyZWVuc2hvdCh0d2VldF91cmwodXN1YXJpbywgUlQpKQ0KYGBgDQoNCiMjIE51YmUgZGUgcGFsYWJyYXMNCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+DQpVbmEgYnVlbmEgbWFuZXJhIGRlIHJlcHJlc2VudGFyIGxhcyBwYWxhYnJhcyB1dGlsaXphZGFzIGNvbnNpc3RlIGVuIGNvbmZvcm1hciBsYXMgbnViZXMgZGUgcGFsYWJyYXMgbyBiYWcgb2Ygd29yZHMuIEJhc2ljYW1lbnRlIHNlIHRyYXRhIGRlIHZpc3VhbGl6YXIgY3VhbGVzIHNvbiBsb3MgdMOpcm1pbm9zIGRlIG1heW9yIHVzbyBtb3N0cmFuZG8gc3UgcGVzbyBlbiByZWxhY2nDs24gYSBsb3Mgb3Ryb3MuDQoNCkVzdGEgZXMgbGEgbnViZSBkZSBwYWxhYnJhcyBkZWwgYcOxbyBlbiBUd2l0dGVyIGRlIGByIHVzdWFyaW9gDQoNCjxkaXYvPg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KcGFsYWJyYXNfaW51dGlsZXMgPC0gYygncnQnLCd1JyAsJ3QuY28nLCAnaHR0cHMnLCAndGFuJywgJ0FsYmVydG8nLCAnRmVybmFuZGV6JywgJ2FsYmVydG8nLCAnZmVybmFuZGV6JywgJ2Zlcm7DoW5kZXonKQ0KDQpCYXNlMSA8LSBhcy5kYXRhLmZyYW1lKEJhc2UpDQpCYXNlMSR0ZXh0IDwtIGFzLmNoYXJhY3RlcihCYXNlMSR0ZXh0KQ0KDQoNCkJhc2VUb2tlbnMgPC0gQmFzZTEgJT4lDQogIGZpbHRlcighKGlzX3JldHdlZXQ9PSJUUlVFIikpICU+JSANCiAgdW5uZXN0X3Rva2VucyhwYWxhYnJhLCB0ZXh0KSAlPiUNCiAgICBjb3VudChwYWxhYnJhLCBzb3J0PVRSVUUpICU+JQ0KICAgIGZpbHRlcighcGFsYWJyYSVpbiVzdG9wd29yZHMoJ2VzJykpICU+JQ0KICAgIGZpbHRlcighcGFsYWJyYSVpbiVwYWxhYnJhc19pbnV0aWxlcykgJT4lDQogICAgZmlsdGVyKHN0cl9kZXRlY3QocGFsYWJyYSwgIl5bYS16QS16XXxeI3xeQCIpKSU+JQ0KICAgIGFycmFuZ2UoZGVzYyhuKSkgJT4lIA0KICAgIHJlbmFtZSgnd29yZCc9cGFsYWJyYSkNCg0Kd29yZGNsb3VkKEJhc2VUb2tlbnMkd29yZCxCYXNlVG9rZW5zJG4sc2NhbGU9Yyg0LC4xKSxyYW5kb20ub3JkZXI9RkFMU0UscmFuZG9tLmNvbG9yPVRSVUUscm90LnBlcj0wLjQsY29sb3JzPWJyZXdlci5wYWwoNywiRGFyazIiKSkNCg0KDQpgYGANCg0KDQojIyMgUGFsYWJyYXMgcG9zaXRpdmFzDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpCYXNlVG9rZW5zU0RBTCA8LSBsZWZ0X2pvaW4oQmFzZVRva2Vucywgc2RhbCkNCg0KVHdlZXRzUG9zIDwtIEJhc2VUb2tlbnNTREFMICU+JSANCiAgZmlsdGVyKCFpcy5uYShtZWRpYV9hZ3JhZG8pKSAlPiUNCiAgYXJyYW5nZShkZXNjKG1lZGlhX2FncmFkbyksIGRlc2MobikpDQogDQpUb2tlblBvcyA8LSBUd2VldHNQb3MgJT4lIA0KICBoZWFkKDEwMCkNCg0KDQp3b3JkY2xvdWQoVG9rZW5Qb3Mkd29yZCxUb2tlblBvcyRuLHNjYWxlPWMoNCwuMSkscmFuZG9tLm9yZGVyPUZBTFNFLHJhbmRvbS5jb2xvcj1UUlVFLHJvdC5wZXI9MC40LGNvbG9ycz1icmV3ZXIucGFsKDcsIkRhcmsyIikpDQpgYGANCg0KDQojIyMgUGFsYWJyYXMgbmVnYXRpdmFzDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpCYXNlVG9rZW5zU0RBTCA8LSBsZWZ0X2pvaW4oQmFzZVRva2Vucywgc2RhbCkNCiAgVHdlZXRzTmVnIDwtIEJhc2VUb2tlbnNTREFMICU+JSANCiAgZmlsdGVyKCFpcy5uYShtZWRpYV9hZ3JhZG8pKSAlPiUNCiAgYXJyYW5nZShtZWRpYV9hZ3JhZG8sIGRlc2MobikpDQogIA0KICANClRva2VuTmVnIDwtIFR3ZWV0c05lZyAlPiUgDQpoZWFkKDEwMCkNCg0KDQp3b3JkY2xvdWQoVG9rZW5OZWckd29yZCxUb2tlbk5lZyRuLHNjYWxlPWMoNCwuMSkscmFuZG9tLm9yZGVyPUZBTFNFLHJhbmRvbS5jb2xvcj1UUlVFLHJvdC5wZXI9MC40LGNvbG9ycz1icmV3ZXIucGFsKDcsIkRhcmsyIikpDQpgYGANCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPg0KDQpMYXMgcGFsYWJyYXMgcG9zaXRpdmFzIGVzdMOhbiB2aW5jdWxhZGFzIGEgc2VudGltaWVudG9zIGRlIGNhcmnDsW8geSBlc3BlcmFuemEsIG1pZW50cmFzIHF1ZSBsYXMgbmVnYXRpdmFzIGhhYmxhbiBkZWwgZGlhZ25vc3RpY28gcXVlIGVsIFByZXNpZGVudGUgcmVhbGl6YSBkZWwgZXN0YWRvIHJlY2liaWRvIGRvbmRlICJwb2JyZXphIiB5ICJkZXVkYSIgcHJvdGFnb25pemFuIGVsIGNvbnRlby4gDQogDQo8ZGl2Lz4NCg==