Análise de Impacto de Mudanças em Software

Propaganda
Análise de Impacto de Mudanças em Software
Preparação dos Dados
Gilson Pereira dos Santos Júnior
Universidade Federal de Campina Grande
Departamento de Sistemas e Computação
Disciplina: Mineração de Dados
Professor: Marcus Sampaio
A macro etapa de preparação dos dados engloba as etapas de seleção e préprocessamento dos dados. Nessa macro etapa, efetua-se a seleção da base de dados,
escolha atributos e discretização dos dados, além da sua limpeza e amostragem.
A base de dados selecionada foi o arquivo impact_analyser.txt apresentado no
Anexo I. Algumas características foram levadas em consideração para preparação dos
dados:
 Foram consideradas apenas mudanças realizadas nos arquivos .java (classes),
uma vez que os arquivos com essa extensão representam código-fonte do
software.

A estratégia utilizada para identificar os arquivos que participaram do mesmo
commit foi: commits realizados pelo mesmo autor, com o mesmo comentário e
que pertenciam a mesma janela de tempo. Nesse caso, utilizou-se uma janela
deslizante de 200 segundos como sugerido por Zimmerman et al. como forma
mais adequada para realizar esta tarefa. [ZW04]

Em seguida, filtrou-se os dados, selecionando apenas os arquivos envolvidos
em mais de 1 (um) commit e arquivos com quantidade de commits igual ou
superior a 20 (vinte). Esses valores foram escolhidos acreditando-se que
classes com apenas 1 (um) commit não representam mudanças, enquanto
classes com mais de 20 (vinte) commits representam mudanças estruturais e
não evolução de software que é nosso real interesse.
Após realizada a limpeza dos dados o arquivo no formato .arff foi gerado como
apresentado no Anexo II. Tal arquivo é constituído por 66 (sessenta e seis) atributos que
representam as classes que evoluiram durante o desenvolvimento do software.
Referência Bibliográficas
[ZW04] T. Zimmerman and P. Weißgerber (2004) " Preprocessing CVS data for finegrained analysis ", Proc. International Workshop on Mining Software Repositories
(MSR 2004) 2004.
ANEXO I – Arquivo impact_analyser.txt
Devido ao tamanho da base de dados este arquivo encontra-se em anexo e pode ser
acessado através do link impact_analyser.txt
ANEXO II – Arquivo impact_analyser.arff
@relation 'changelog-weka.filters.unsupervised.attribute.RemoveR7,19,28,31,34,38-40,42,47,49-55,58,62,76'
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Algo
rithmsFactory.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Impa
ctAnalyzer.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Type
OfAlgorithm.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Type
OfRefactoring.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/AnalysisStrategy.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/Command.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/RemoveCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/ResultManager.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/ResultOfAnalisis.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/ResultOfAnalysis.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/TypeOfAlgorithm.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/AddEntityCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/AddInheritanceCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeAttributeCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeReturnTypeCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeSemanticsCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeSignatureCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeVisibilityCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/Command.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/MethodNameChangeCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/MethodParameterAddCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ModificationCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/RemoveCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/RemoveInheritanceCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/AddInheritanceCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/ChangeVisibilityCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/MethodNameChangeCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/RemoveInheritanceCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/factory/AlgorithmsFactory.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/data
/ImpactedElementsRepository.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/data
/ImpactedTree.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/data
/ResultOfAnalysis.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/faca
de/AnalyzerFacade.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/AllClassesInSuiteTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/AllTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/AllTests.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/InheritanceRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/TestRunner.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/newformat/InheritanceChangeVisibilityTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/newformat/InheritanceRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/AllTests.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/BaseTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/ChangeSignatureTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIAddTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeAttributeTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeReturnTypeTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeSemanticsTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeSignatureTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeVisibilityTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIInheritanceRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIOtherTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UITest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/A
nalyzerFacade.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/I
nexistentCommandException.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/I
nexistentTypeOfAlgorithmException.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/t
est/UITest.java {y,n}
@data
?,y,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,y
?,y,y,y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,y,y
y,y,y,y,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,y,y
y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,y,?,?,y,y,y,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,y,y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,y,y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,y,?,y,y,?,y,?,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,y
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,?,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,y,?,?,?,?,?,?,y,y,?,?,?,?,?,y,?,?,?,y,y,?,y,?,?,y,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,y,?,y,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,y,y,?,?,y,?,?,y,?,?,?,y,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,y,y,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,y,y,?,y,y,y,?,y,y,?,y,y,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,y,
y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,
y,?,?,?,?,y,?,?,?,y,?,?,?,y,?,y,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?
?,y,?,?,y,?,?,?,?,?,?,y,y,y,y,y,y,?,y,?,?,y,y,y,y,y,?,y,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,y,?,y,?,?,y,y,y,y,?,?,?,y,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,?,?,?,y,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,y,?,y,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,y,
?,?,?,?,?,y,?,y,y,?,y,?,y,y,?,y,y,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,y,?,y,y,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,y,y,?,y,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,y,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,
?,y,y,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,y,?,?,?,?,?,?,y,y,?,?,?,
?,y,y,y,y,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,y,?,?,?,?,?,?,y,y,?,y,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,y,y,y,y,?,?,y,y,y,y,y,y,?,?,y,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,y,y,y,?,y,?,y,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,y,?,?,?,y,y,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,y,y,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,y,?,?,?,?,y,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,y,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
Download