A disputa eleitoral pela prefeitura de Belo Horizonte tem se acirrado no 2º turno. Os candidatos Alexandre Kalil e João Leite trocam acusações e ferpas e também posições nas pesquisas. Resolvemos analisar, a partir das postagens realizadas nas páginas de Facebook dos candidatos, para onde e como é organizado o seu discurso político nesse momento. As páginas estão disponíveis nestes links: https://www.facebook.com/AlexandreKalilOficial, https://www.facebook.com/joaoleiteBH. Os dados foram raspados usando o aplicativo Netvizz.

Vamos às nuvens de palavras dos dois candidatos:

library(readr)
library(magrittr)
library(tm)
library(wordcloud)
library(igraph)

kalil = read_tsv("~/kalil/page_1064837793574598_2016_10_28_03_44_42_comments.tab")
names(kalil)
posts_kalil = kalil$post_text %>% unique
posts_kalil[1:10]

leite = read_tsv("~/jl/page_249502305186210_2016_10_28_03_53_01_comments.tab")
names(leite)
posts_leite = leite$post_text %>% unique
posts_leite[1:10]

#wordclouds
f <- content_transformer(function(x) iconv(x, to='latin1', sub='byte'))

ckalil = Corpus(VectorSource(posts_kalil))
ckalil <- tm_map(ckalil, content_transformer(tolower))
ckalil <- tm_map(ckalil, removePunctuation)
ckalil <- tm_map(ckalil, function(x)removeWords(x,stopwords("pt")))

pal = brewer.pal(5, "Set2")
wordcloud(ckalil, min.freq = 3, max.words = 100, random.order = F, colors = pal)
title(xlab = "Facebook - Kalil\nDe 03/10/2016 a 27/10/2016")

cleite = Corpus(VectorSource(posts_leite))
cleite <- tm_map(cleite, f)
cleite <- tm_map(cleite, content_transformer(tolower))
cleite <- tm_map(cleite, removePunctuation)
cleite <- tm_map(cleite, function(x)removeWords(x,stopwords("pt")))
wordcloud(cleite, min.freq = 3, max.words = 100, random.order = F, colors = pal)
title(xlab = "Facebook - João Leite\nDe 03/10/2016 a 27/10/2016")

Na nuvem de palavras de Kalil é possível identificarmos que as principais palavras foram: “propostas”, “ideiaprabhfuncionar” e “conheça”. Em vários posts da página identificamos a hashtag #ideiaprabhfuncionar, que apresentava uma proposta de governo do candidato. Vale lembrar que o candidato do PHS afirma em seu discurso que não é político. Apresentar propostas pode ser uma importante estratégia para mostrar que o candidato está compromissado com o governo, apesar de não ser político. O nome do candidato João Leite é citado na página, porém com menos intensidade.

Já na nuvem de palavras do candidato João leite podemos identificar que as palavras mais mencionadas durante esse período foram “João”, “Leite” e “Kalil”. O fato de citar o nome do outro candidato em sua página nos leva a entender que o candidato adotou um discurso de ataque ao seu opositor, provavelmente porque houve crescimento do candidato do PHS nas pesquisas de intenção de voto divulgadas 15 dias após o início do segundo turno. Isso pode ser confirmado também porque o candidato do PSDB tem adotado esse discurso nos nas propagandas eleitorais de rádio e TV e também na participação em debates.

Também podemos notar menções às palavras “pesquisa”, “margem”, “erro”. Nesta semana, o candidato João Leite divulgou uma pesquisa que mostra o seu crescimento e um cenário de empate técnico entre os candidatos. As outras palavras encontradas estão relacionadas a temas bastante comuns em campanhas e sempre abordados pelos candidatos, como saúde, educação, cultura entre outros.

Em nenhuma das duas páginas foram encontradas menções significativas à palavra “Galo”, ou Atlético Mineiro, clube de futebol que os dois candidatos estão ligados e são sempre vinculados pela opinião pública.

Vamos verificar agora como as palavras usadas pelos candidatos se agrupam hierarquicamente. Esse método nos permite ter uma ideia dos assuntos gerais tratados por eles. Além disso, vamos ver como essas palavras se relacionam em rede. Isso nos permite olhar, com maior profundidade, o surgimento de temáticas no discurso dos candidatos.

plot(fit.ward2, main="Clusterização Hierárquica\nFacebook - Kalil", xlab = "De 03/10/2016 a 27/10/2016")
rect.hclust(fit.ward2, k=5)

matriz <- as.matrix(df)
g = graph_from_incidence_matrix(matriz)
p = bipartite_projection(g, which = "FALSE")
V(p)$shape = "none"
deg = degree(p)
plot(p, vertex.label.cex=deg/10, edge.width=(E(p)$weight)/2, 
     edge.color=adjustcolor("grey60", .5),
     vertex.label.color=adjustcolor("red", .7),
     main = "Facebook - Kalil", xlab = "De 03/10/2016 a 27/10/2016")

tdm <- TermDocumentMatrix(cleite)
tdm <- removeSparseTerms(tdm, sparse = 0.92)
df <- as.data.frame(inspect(tdm))
dim(df)
df.scale <- scale(df)
d <- dist(df.scale, method = "euclidean")
fit.ward2 <- hclust(d, method = "ward.D2")
plot(fit.ward2, main="Clusterização Hierárquica\nFacebook - João Leite", xlab = "De 03/10/2016 a 27/10/2016")
rect.hclust(fit.ward2, k=6)

matriz <- as.matrix(df)
g = graph_from_incidence_matrix(matriz)
p = bipartite_projection(g, which = "FALSE")
V(p)$shape = "none"
deg = degree(p)
plot(p, vertex.label.cex=deg/16, edge.width=(E(p)$weight)/2, 
     edge.color=adjustcolor("grey60", .5),
     vertex.label.color=adjustcolor("red", .7),
     main = "Facebook - João Leite", xlab = "De 03/10/2016 a 27/10/2016")

Ao olharmos as palavras clusterizadas e as redes podemos identificar na página do Kalil dois grandes assuntos que emergem. O primeiro reúne palavras como “propostas”, “conheça”, “programa” entre outras. Isso nos leva a entender as palavras estavam nas postagens com a hashtag #ideiaprabhfuncionar onde o candidato Kalil apresentava suas propostas e também convidada as pessoas para conhecer seu programa de governo. Já a menção a João Leite só foi identificada nas postagens que diziam respeito ao debate e também a respostas às acusações do candidato no PSDB.

Na página do João Leite identificamos só um grande componente conectado de palavras. No centro da rede encontramos as palavras “João”, “Leite”, “cidade”, “confiança”, “capitão”. Na parte superior da rede identificamos a relação das palavras “propostas”, “verdade”, “compromissos” e “lideranças”. Na parte inferior à esquerda da rede as palavras relacionadas são “eleitores”, “pesquisa”, “margem”, “erro”. Provavelmente se referem as postagens relacionadas ao crescimento do candidato na pesquisa recente.

Neylson Crepalde é doutorando em sociologia pela UFMG. Maria Alice é doutoranda em Ciência Política pela UFMG.

LS0tCnRpdGxlOiAiQ2FtcGFuaGFzIHBvbMOtdGljYXMgZGUgS2FsaWwgZSBKb8OjbyBMZWl0ZSBubyAywrogdHVybm8gZW0gQkgiCmF1dGhvcjogIk5leWxzb24gQ3JlcGFsZGUgZSBNYXJpYSBBbGljZSBTaWx2ZWlyYSIKZGF0ZTogIjIwMTYsIDI4IGRlIE5vdmVtYnJvIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgZmlnX2NhcHRpb246IHllcwogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgdG9jOiB5ZXMKLS0tCgpBIGRpc3B1dGEgZWxlaXRvcmFsIHBlbGEgcHJlZmVpdHVyYSBkZSBCZWxvIEhvcml6b250ZSB0ZW0gc2UgYWNpcnJhZG8gbm8gMsK6IHR1cm5vLiBPcyBjYW5kaWRhdG9zIEFsZXhhbmRyZSBLYWxpbCBlIEpvw6NvIExlaXRlIHRyb2NhbSBhY3VzYcOnw7VlcyBlIGZlcnBhcyBlIHRhbWLDqW0gcG9zacOnw7VlcyBuYXMgcGVzcXVpc2FzLiBSZXNvbHZlbW9zIGFuYWxpc2FyLCBhIHBhcnRpciBkYXMgcG9zdGFnZW5zIHJlYWxpemFkYXMgbmFzIHDDoWdpbmFzIGRlIEZhY2Vib29rIGRvcyBjYW5kaWRhdG9zLCBwYXJhIG9uZGUgZSBjb21vIMOpIG9yZ2FuaXphZG8gbyBzZXUgZGlzY3Vyc28gcG9sw610aWNvIG5lc3NlIG1vbWVudG8uIEFzIHDDoWdpbmFzIGVzdMOjbyBkaXNwb27DrXZlaXMgbmVzdGVzIGxpbmtzOiA8aHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL0FsZXhhbmRyZUthbGlsT2ZpY2lhbD4sIDxodHRwczovL3d3dy5mYWNlYm9vay5jb20vam9hb2xlaXRlQkg+LiBPcyBkYWRvcyBmb3JhbSByYXNwYWRvcyB1c2FuZG8gbyBhcGxpY2F0aXZvIFtOZXR2aXp6XShodHRwczovL2FwcHMuZmFjZWJvb2suY29tL25ldHZpenovKS4KClZhbW9zIMOgcyBudXZlbnMgZGUgcGFsYXZyYXMgZG9zIGRvaXMgY2FuZGlkYXRvczoKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KG1hZ3JpdHRyKQpsaWJyYXJ5KHRtKQpsaWJyYXJ5KHdvcmRjbG91ZCkKbGlicmFyeShpZ3JhcGgpCgprYWxpbCA9IHJlYWRfdHN2KCJ+L0RvY3VtZW50b3MvTmV5bHNvbiBDcmVwYWxkZS9Eb3V0b3JhZG8vR0lBUlMvQmlnIERhdGEgU05BL2thbGlsL3BhZ2VfMTA2NDgzNzc5MzU3NDU5OF8yMDE2XzEwXzI4XzAzXzQ0XzQyX2NvbW1lbnRzLnRhYiIpCm5hbWVzKGthbGlsKQpwb3N0c19rYWxpbCA9IGthbGlsJHBvc3RfdGV4dCAlPiUgdW5pcXVlCnBvc3RzX2thbGlsWzE6MTBdCgpsZWl0ZSA9IHJlYWRfdHN2KCJ+L0RvY3VtZW50b3MvTmV5bHNvbiBDcmVwYWxkZS9Eb3V0b3JhZG8vR0lBUlMvQmlnIERhdGEgU05BL2psL3BhZ2VfMjQ5NTAyMzA1MTg2MjEwXzIwMTZfMTBfMjhfMDNfNTNfMDFfY29tbWVudHMudGFiIikKbmFtZXMobGVpdGUpCnBvc3RzX2xlaXRlID0gbGVpdGUkcG9zdF90ZXh0ICU+JSB1bmlxdWUKcG9zdHNfbGVpdGVbMToxMF0KCiN3b3JkY2xvdWRzCmYgPC0gY29udGVudF90cmFuc2Zvcm1lcihmdW5jdGlvbih4KSBpY29udih4LCB0bz0nbGF0aW4xJywgc3ViPSdieXRlJykpCgpja2FsaWwgPSBDb3JwdXMoVmVjdG9yU291cmNlKHBvc3RzX2thbGlsKSkKY2thbGlsIDwtIHRtX21hcChja2FsaWwsIGNvbnRlbnRfdHJhbnNmb3JtZXIodG9sb3dlcikpCmNrYWxpbCA8LSB0bV9tYXAoY2thbGlsLCByZW1vdmVQdW5jdHVhdGlvbikKY2thbGlsIDwtIHRtX21hcChja2FsaWwsIGZ1bmN0aW9uKHgpcmVtb3ZlV29yZHMoeCxzdG9wd29yZHMoInB0IikpKQoKcGFsID0gYnJld2VyLnBhbCg1LCAiU2V0MiIpCmBgYAoKYGBge3IsIGV2YWw9RkFMU0V9CmxpYnJhcnkocmVhZHIpCmxpYnJhcnkobWFncml0dHIpCmxpYnJhcnkodG0pCmxpYnJhcnkod29yZGNsb3VkKQpsaWJyYXJ5KGlncmFwaCkKCmthbGlsID0gcmVhZF90c3YoIn4va2FsaWwvcGFnZV8xMDY0ODM3NzkzNTc0NTk4XzIwMTZfMTBfMjhfMDNfNDRfNDJfY29tbWVudHMudGFiIikKbmFtZXMoa2FsaWwpCnBvc3RzX2thbGlsID0ga2FsaWwkcG9zdF90ZXh0ICU+JSB1bmlxdWUKcG9zdHNfa2FsaWxbMToxMF0KCmxlaXRlID0gcmVhZF90c3YoIn4vamwvcGFnZV8yNDk1MDIzMDUxODYyMTBfMjAxNl8xMF8yOF8wM181M18wMV9jb21tZW50cy50YWIiKQpuYW1lcyhsZWl0ZSkKcG9zdHNfbGVpdGUgPSBsZWl0ZSRwb3N0X3RleHQgJT4lIHVuaXF1ZQpwb3N0c19sZWl0ZVsxOjEwXQoKI3dvcmRjbG91ZHMKZiA8LSBjb250ZW50X3RyYW5zZm9ybWVyKGZ1bmN0aW9uKHgpIGljb252KHgsIHRvPSdsYXRpbjEnLCBzdWI9J2J5dGUnKSkKCmNrYWxpbCA9IENvcnB1cyhWZWN0b3JTb3VyY2UocG9zdHNfa2FsaWwpKQpja2FsaWwgPC0gdG1fbWFwKGNrYWxpbCwgY29udGVudF90cmFuc2Zvcm1lcih0b2xvd2VyKSkKY2thbGlsIDwtIHRtX21hcChja2FsaWwsIHJlbW92ZVB1bmN0dWF0aW9uKQpja2FsaWwgPC0gdG1fbWFwKGNrYWxpbCwgZnVuY3Rpb24oeClyZW1vdmVXb3Jkcyh4LHN0b3B3b3JkcygicHQiKSkpCgpwYWwgPSBicmV3ZXIucGFsKDUsICJTZXQyIikKYGBgCgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD01fQp3b3JkY2xvdWQoY2thbGlsLCBtaW4uZnJlcSA9IDMsIG1heC53b3JkcyA9IDEwMCwgcmFuZG9tLm9yZGVyID0gRiwgY29sb3JzID0gcGFsKQp0aXRsZSh4bGFiID0gIkZhY2Vib29rIC0gS2FsaWxcbkRlIDAzLzEwLzIwMTYgYSAyNy8xMC8yMDE2IikKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KY2xlaXRlID0gQ29ycHVzKFZlY3RvclNvdXJjZShwb3N0c19sZWl0ZSkpCmNsZWl0ZSA8LSB0bV9tYXAoY2xlaXRlLCBmKQpjbGVpdGUgPC0gdG1fbWFwKGNsZWl0ZSwgY29udGVudF90cmFuc2Zvcm1lcih0b2xvd2VyKSkKY2xlaXRlIDwtIHRtX21hcChjbGVpdGUsIHJlbW92ZVB1bmN0dWF0aW9uKQpjbGVpdGUgPC0gdG1fbWFwKGNsZWl0ZSwgZnVuY3Rpb24oeClyZW1vdmVXb3Jkcyh4LHN0b3B3b3JkcygicHQiKSkpCmBgYAoKYGBge3IsIGV2YWw9RkFMU0V9CmNsZWl0ZSA9IENvcnB1cyhWZWN0b3JTb3VyY2UocG9zdHNfbGVpdGUpKQpjbGVpdGUgPC0gdG1fbWFwKGNsZWl0ZSwgZikKY2xlaXRlIDwtIHRtX21hcChjbGVpdGUsIGNvbnRlbnRfdHJhbnNmb3JtZXIodG9sb3dlcikpCmNsZWl0ZSA8LSB0bV9tYXAoY2xlaXRlLCByZW1vdmVQdW5jdHVhdGlvbikKY2xlaXRlIDwtIHRtX21hcChjbGVpdGUsIGZ1bmN0aW9uKHgpcmVtb3ZlV29yZHMoeCxzdG9wd29yZHMoInB0IikpKQpgYGAKCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcuaGVpZ2h0PTV9CndvcmRjbG91ZChjbGVpdGUsIG1pbi5mcmVxID0gMywgbWF4LndvcmRzID0gMTAwLCByYW5kb20ub3JkZXIgPSBGLCBjb2xvcnMgPSBwYWwpCnRpdGxlKHhsYWIgPSAiRmFjZWJvb2sgLSBKb8OjbyBMZWl0ZVxuRGUgMDMvMTAvMjAxNiBhIDI3LzEwLzIwMTYiKQpgYGAKCgpOYSBudXZlbSBkZSBwYWxhdnJhcyBkZSBLYWxpbCDDqSBwb3Nzw612ZWwgaWRlbnRpZmljYXJtb3MgcXVlIGFzIHByaW5jaXBhaXMgcGFsYXZyYXMgZm9yYW06IOKAnHByb3Bvc3Rhc+KAnSwg4oCcaWRlaWFwcmFiaGZ1bmNpb25hcuKAnSBlIOKAnGNvbmhlw6dh4oCdLiBFbSB2w6FyaW9zIHBvc3RzIGRhIHDDoWdpbmEgaWRlbnRpZmljYW1vcyBhIGhhc2h0YWcgI2lkZWlhcHJhYmhmdW5jaW9uYXIsIHF1ZSBhcHJlc2VudGF2YSB1bWEgcHJvcG9zdGEgZGUgZ292ZXJubyBkbyBjYW5kaWRhdG8uIFZhbGUgbGVtYnJhciBxdWUgbyBjYW5kaWRhdG8gZG8gUEhTIGFmaXJtYSBlbSBzZXUgZGlzY3Vyc28gcXVlIG7Do28gw6kgcG9sw610aWNvLiBBcHJlc2VudGFyIHByb3Bvc3RhcyBwb2RlIHNlciB1bWEgaW1wb3J0YW50ZSBlc3RyYXTDqWdpYSBwYXJhIG1vc3RyYXIgcXVlIG8gY2FuZGlkYXRvIGVzdMOhIGNvbXByb21pc3NhZG8gY29tIG8gZ292ZXJubywgYXBlc2FyIGRlIG7Do28gc2VyIHBvbMOtdGljby4gTyBub21lIGRvIGNhbmRpZGF0byBKb8OjbyBMZWl0ZSDDqSBjaXRhZG8gbmEgcMOhZ2luYSwgcG9yw6ltIGNvbSBtZW5vcyBpbnRlbnNpZGFkZS4KCkrDoSBuYSBudXZlbSBkZSBwYWxhdnJhcyBkbyBjYW5kaWRhdG8gSm/Do28gbGVpdGUgcG9kZW1vcyBpZGVudGlmaWNhciBxdWUgYXMgcGFsYXZyYXMgbWFpcyBtZW5jaW9uYWRhcyBkdXJhbnRlIGVzc2UgcGVyw61vZG8gZm9yYW0g4oCcSm/Do2/igJ0sIOKAnExlaXRl4oCdIGUg4oCcS2FsaWzigJ0uIE8gZmF0byBkZSBjaXRhciBvIG5vbWUgZG8gb3V0cm8gY2FuZGlkYXRvIGVtIHN1YSBww6FnaW5hIG5vcyBsZXZhIGEgZW50ZW5kZXIgcXVlIG8gY2FuZGlkYXRvIGFkb3RvdSB1bSBkaXNjdXJzbyBkZSBhdGFxdWUgYW8gc2V1IG9wb3NpdG9yLCBwcm92YXZlbG1lbnRlIHBvcnF1ZSBob3V2ZSBjcmVzY2ltZW50byBkbyBjYW5kaWRhdG8gZG8gUEhTIG5hcyBwZXNxdWlzYXMgZGUgaW50ZW7Dp8OjbyBkZSB2b3RvIGRpdnVsZ2FkYXMgMTUgZGlhcyBhcMOzcyBvIGluw61jaW8gZG8gc2VndW5kbyB0dXJuby4gSXNzbyBwb2RlIHNlciBjb25maXJtYWRvIHRhbWLDqW0gcG9ycXVlIG8gY2FuZGlkYXRvIGRvIFBTREIgdGVtIGFkb3RhZG8gZXNzZSBkaXNjdXJzbyBub3MgbmFzIHByb3BhZ2FuZGFzIGVsZWl0b3JhaXMgZGUgcsOhZGlvIGUgVFYgZSB0YW1iw6ltIG5hIHBhcnRpY2lwYcOnw6NvIGVtIGRlYmF0ZXMuICAKClRhbWLDqW0gcG9kZW1vcyBub3RhciBtZW7Dp8O1ZXMgw6BzIHBhbGF2cmFzIOKAnHBlc3F1aXNh4oCdLCDigJxtYXJnZW3igJ0sIOKAnGVycm/igJ0uIE5lc3RhIHNlbWFuYSwgbyBjYW5kaWRhdG8gSm/Do28gTGVpdGUgZGl2dWxnb3UgdW1hIHBlc3F1aXNhIHF1ZSBtb3N0cmEgbyBzZXUgY3Jlc2NpbWVudG8gZSB1bSBjZW7DoXJpbyBkZSBlbXBhdGUgdMOpY25pY28gZW50cmUgb3MgY2FuZGlkYXRvcy4gQXMgb3V0cmFzIHBhbGF2cmFzIGVuY29udHJhZGFzIGVzdMOjbyByZWxhY2lvbmFkYXMgYSB0ZW1hcyBiYXN0YW50ZSBjb211bnMgZW0gY2FtcGFuaGFzIGUgc2VtcHJlIGFib3JkYWRvcyBwZWxvcyBjYW5kaWRhdG9zLCBjb21vIHNhw7pkZSwgZWR1Y2HDp8OjbywgY3VsdHVyYSBlbnRyZSBvdXRyb3MuCgpFbSBuZW5odW1hIGRhcyBkdWFzIHDDoWdpbmFzIGZvcmFtIGVuY29udHJhZGFzIG1lbsOnw7VlcyBzaWduaWZpY2F0aXZhcyDDoCBwYWxhdnJhIOKAnEdhbG/igJ0sIG91IEF0bMOpdGljbyBNaW5laXJvLCBjbHViZSBkZSBmdXRlYm9sIHF1ZSBvcyBkb2lzIGNhbmRpZGF0b3MgZXN0w6NvIGxpZ2Fkb3MgZSBzw6NvIHNlbXByZSB2aW5jdWxhZG9zIHBlbGEgb3BpbmnDo28gcMO6YmxpY2EuICAKClZhbW9zIHZlcmlmaWNhciBhZ29yYSBjb21vIGFzIHBhbGF2cmFzIHVzYWRhcyBwZWxvcyBjYW5kaWRhdG9zIHNlIGFncnVwYW0gaGllcmFycXVpY2FtZW50ZS4gRXNzZSBtw6l0b2RvIG5vcyBwZXJtaXRlIHRlciB1bWEgaWRlaWEgZG9zIGFzc3VudG9zIGdlcmFpcyB0cmF0YWRvcyBwb3IgZWxlcy4gQWzDqW0gZGlzc28sIHZhbW9zIHZlciBjb21vIGVzc2FzIHBhbGF2cmFzIHNlIHJlbGFjaW9uYW0gZW0gcmVkZS4gSXNzbyBub3MgcGVybWl0ZSBvbGhhciwgY29tIG1haW9yIHByb2Z1bmRpZGFkZSwgbyBzdXJnaW1lbnRvIGRlIHRlbcOhdGljYXMgbm8gZGlzY3Vyc28gZG9zIGNhbmRpZGF0b3MuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KdGRtIDwtIFRlcm1Eb2N1bWVudE1hdHJpeChja2FsaWwpCnRkbSA8LSByZW1vdmVTcGFyc2VUZXJtcyh0ZG0sIHNwYXJzZSA9IDAuOTUpCmRmIDwtIGFzLmRhdGEuZnJhbWUoaW5zcGVjdCh0ZG0pKQpkaW0oZGYpCmRmLnNjYWxlIDwtIHNjYWxlKGRmKQpkIDwtIGRpc3QoZGYuc2NhbGUsIG1ldGhvZCA9ICJldWNsaWRlYW4iKQpmaXQud2FyZDIgPC0gaGNsdXN0KGQsIG1ldGhvZCA9ICJ3YXJkLkQyIikKYGBgCgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD01fQpwbG90KGZpdC53YXJkMiwgbWFpbj0iQ2x1c3Rlcml6YcOnw6NvIEhpZXLDoXJxdWljYVxuRmFjZWJvb2sgLSBLYWxpbCIsIHhsYWIgPSAiRGUgMDMvMTAvMjAxNiBhIDI3LzEwLzIwMTYiKQpyZWN0LmhjbHVzdChmaXQud2FyZDIsIGs9NSkKYGBgCgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD01fQptYXRyaXogPC0gYXMubWF0cml4KGRmKQoKZyA9IGdyYXBoX2Zyb21faW5jaWRlbmNlX21hdHJpeChtYXRyaXopCnAgPSBiaXBhcnRpdGVfcHJvamVjdGlvbihnLCB3aGljaCA9ICJGQUxTRSIpClYocCkkc2hhcGUgPSAibm9uZSIKZGVnID0gZGVncmVlKHApCgpwbG90KHAsIHZlcnRleC5sYWJlbC5jZXg9ZGVnLzEwLCBlZGdlLndpZHRoPShFKHApJHdlaWdodCkvMiwgCiAgICAgZWRnZS5jb2xvcj1hZGp1c3Rjb2xvcigiZ3JleTYwIiwgLjUpLAogICAgIHZlcnRleC5sYWJlbC5jb2xvcj1hZGp1c3Rjb2xvcigicmVkIiwgLjcpLAogICAgIG1haW4gPSAiRmFjZWJvb2sgLSBLYWxpbCIsIHhsYWIgPSAiRGUgMDMvMTAvMjAxNiBhIDI3LzEwLzIwMTYiKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQp0ZG0gPC0gVGVybURvY3VtZW50TWF0cml4KGNsZWl0ZSkKdGRtIDwtIHJlbW92ZVNwYXJzZVRlcm1zKHRkbSwgc3BhcnNlID0gMC45MikKZGYgPC0gYXMuZGF0YS5mcmFtZShpbnNwZWN0KHRkbSkpCmRpbShkZikKZGYuc2NhbGUgPC0gc2NhbGUoZGYpCmQgPC0gZGlzdChkZi5zY2FsZSwgbWV0aG9kID0gImV1Y2xpZGVhbiIpCmZpdC53YXJkMiA8LSBoY2x1c3QoZCwgbWV0aG9kID0gIndhcmQuRDIiKQpgYGAKCmBgYHtyLCBldmFsPUZBTFNFfQp0ZG0gPC0gVGVybURvY3VtZW50TWF0cml4KGNsZWl0ZSkKdGRtIDwtIHJlbW92ZVNwYXJzZVRlcm1zKHRkbSwgc3BhcnNlID0gMC45MikKZGYgPC0gYXMuZGF0YS5mcmFtZShpbnNwZWN0KHRkbSkpCmRpbShkZikKZGYuc2NhbGUgPC0gc2NhbGUoZGYpCmQgPC0gZGlzdChkZi5zY2FsZSwgbWV0aG9kID0gImV1Y2xpZGVhbiIpCmZpdC53YXJkMiA8LSBoY2x1c3QoZCwgbWV0aG9kID0gIndhcmQuRDIiKQpgYGAKCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcuaGVpZ2h0PTV9CnBsb3QoZml0LndhcmQyLCBtYWluPSJDbHVzdGVyaXphw6fDo28gSGllcsOhcnF1aWNhXG5GYWNlYm9vayAtIEpvw6NvIExlaXRlIiwgeGxhYiA9ICJEZSAwMy8xMC8yMDE2IGEgMjcvMTAvMjAxNiIpCnJlY3QuaGNsdXN0KGZpdC53YXJkMiwgaz02KQoKbWF0cml6IDwtIGFzLm1hdHJpeChkZikKCmcgPSBncmFwaF9mcm9tX2luY2lkZW5jZV9tYXRyaXgobWF0cml6KQpwID0gYmlwYXJ0aXRlX3Byb2plY3Rpb24oZywgd2hpY2ggPSAiRkFMU0UiKQpWKHApJHNoYXBlID0gIm5vbmUiCmRlZyA9IGRlZ3JlZShwKQoKcGxvdChwLCB2ZXJ0ZXgubGFiZWwuY2V4PWRlZy8xNiwgZWRnZS53aWR0aD0oRShwKSR3ZWlnaHQpLzIsIAogICAgIGVkZ2UuY29sb3I9YWRqdXN0Y29sb3IoImdyZXk2MCIsIC41KSwKICAgICB2ZXJ0ZXgubGFiZWwuY29sb3I9YWRqdXN0Y29sb3IoInJlZCIsIC43KSwKICAgICBtYWluID0gIkZhY2Vib29rIC0gSm/Do28gTGVpdGUiLCB4bGFiID0gIkRlIDAzLzEwLzIwMTYgYSAyNy8xMC8yMDE2IikKYGBgCgpBbyBvbGhhcm1vcyBhcyBwYWxhdnJhcyBjbHVzdGVyaXphZGFzIGUgYXMgcmVkZXMgcG9kZW1vcyBpZGVudGlmaWNhciBuYSBww6FnaW5hIGRvIEthbGlsIGRvaXMgZ3JhbmRlcyBhc3N1bnRvcyBxdWUgZW1lcmdlbS4gTyBwcmltZWlybyByZcO6bmUgcGFsYXZyYXMgY29tbyDigJxwcm9wb3N0YXPigJ0sIOKAnGNvbmhlw6dh4oCdLCDigJxwcm9ncmFtYeKAnSBlbnRyZSBvdXRyYXMuIElzc28gbm9zIGxldmEgYSBlbnRlbmRlciBhcyBwYWxhdnJhcyBlc3RhdmFtIG5hcyBwb3N0YWdlbnMgY29tIGEgIGhhc2h0YWcgI2lkZWlhcHJhYmhmdW5jaW9uYXIgb25kZSBvIGNhbmRpZGF0byBLYWxpbCBhcHJlc2VudGF2YSBzdWFzIHByb3Bvc3RhcyBlIHRhbWLDqW0gY29udmlkYWRhIGFzIHBlc3NvYXMgcGFyYSBjb25oZWNlciAgc2V1IHByb2dyYW1hIGRlIGdvdmVybm8uIErDoSAgYSBtZW7Dp8OjbyBhIEpvw6NvIExlaXRlIHPDsyBmb2kgaWRlbnRpZmljYWRhIG5hcyBwb3N0YWdlbnMgcXVlIGRpemlhbSByZXNwZWl0byBhbyBkZWJhdGUgZSB0YW1iw6ltIGEgcmVzcG9zdGFzIMOgcyBhY3VzYcOnw7VlcyBkbyBjYW5kaWRhdG8gbm8gUFNEQi4KCk5hIHDDoWdpbmEgZG8gSm/Do28gTGVpdGUgaWRlbnRpZmljYW1vcyBzw7MgdW0gZ3JhbmRlIGNvbXBvbmVudGUgY29uZWN0YWRvIGRlIHBhbGF2cmFzLiBObyBjZW50cm8gZGEgcmVkZSBlbmNvbnRyYW1vcyBhcyBwYWxhdnJhcyDigJxKb8Ojb+KAnSwg4oCcTGVpdGXigJ0sIOKAnGNpZGFkZeKAnSwg4oCcY29uZmlhbsOnYeKAnSwg4oCcY2FwaXTDo2/igJ0uICBOYSBwYXJ0ZSBzdXBlcmlvciBkYSByZWRlIGlkZW50aWZpY2Ftb3MgYSByZWxhw6fDo28gZGFzIHBhbGF2cmFzIOKAnHByb3Bvc3Rhc+KAnSwg4oCcdmVyZGFkZeKAnSwg4oCcY29tcHJvbWlzc29z4oCdIGUg4oCcbGlkZXJhbsOnYXPigJ0uIE5hIHBhcnRlIGluZmVyaW9yIMOgIGVzcXVlcmRhIGRhIHJlZGUgYXMgcGFsYXZyYXMgcmVsYWNpb25hZGFzIHPDo28g4oCcZWxlaXRvcmVz4oCdLCDigJxwZXNxdWlzYeKAnSwg4oCcbWFyZ2Vt4oCdLCDigJxlcnJv4oCdLiBQcm92YXZlbG1lbnRlIHNlIHJlZmVyZW0gYXMgcG9zdGFnZW5zIHJlbGFjaW9uYWRhcyBhbyBjcmVzY2ltZW50byBkbyBjYW5kaWRhdG8gbmEgcGVzcXVpc2EgcmVjZW50ZS4KCgpbTmV5bHNvbiBDcmVwYWxkZV0oaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL25leWxzb24uY3JlcGFsZGUpIMOpIGRvdXRvcmFuZG8gZW0gc29jaW9sb2dpYSBwZWxhIFVGTUcuIFtNYXJpYSBBbGljZV0oaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL20uYWxpY2VzaWx2ZWlyYSkgw6kgZG91dG9yYW5kYSBlbSBDacOqbmNpYSBQb2zDrXRpY2EgcGVsYSBVRk1HLg==