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.
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.
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==