From 652be4528b3272efa327e9d90740da81e7510918 Mon Sep 17 00:00:00 2001
From: melisdamlasahin <melis-damla.SAHIN@etu.univ-amu.fr>
Date: Sun, 26 Jan 2025 01:42:42 +0100
Subject: [PATCH] TP

---
 .gradle/8.8/checksums/checksums.lock          | Bin 0 -> 17 bytes
 .gradle/8.8/checksums/md5-checksums.bin       | Bin 0 -> 20297 bytes
 .gradle/8.8/checksums/sha1-checksums.bin      | Bin 0 -> 22601 bytes
 .../8.8/dependencies-accessors/gc.properties  |   0
 .../8.8/executionHistory/executionHistory.bin | Bin 0 -> 123663 bytes
 .../executionHistory/executionHistory.lock    | Bin 0 -> 17 bytes
 .gradle/8.8/fileChanges/last-build.bin        | Bin 0 -> 1 bytes
 .gradle/8.8/fileHashes/fileHashes.bin         | Bin 0 -> 24347 bytes
 .gradle/8.8/fileHashes/fileHashes.lock        | Bin 0 -> 17 bytes
 .../8.8/fileHashes/resourceHashesCache.bin    | Bin 0 -> 24651 bytes
 .gradle/8.8/gc.properties                     |   0
 .../buildOutputCleanup.lock                   | Bin 0 -> 17 bytes
 .gradle/buildOutputCleanup/cache.properties   |   2 +
 .gradle/buildOutputCleanup/outputFiles.bin    | Bin 0 -> 19091 bytes
 .gradle/file-system.probe                     | Bin 0 -> 8 bytes
 .gradle/vcs-1/gc.properties                   |   0
 .idea/.gitignore                              |   8 +
 .idea/.name                                   |   1 +
 .idea/compiler.xml                            |   6 +
 .idea/jarRepositories.xml                     |  20 ++
 .idea/misc.xml                                |   5 +
 .idea/vcs.xml                                 |   6 +
 .../java/main/SimulatorApplication.class      | Bin 0 -> 3200 bytes
 .../java/main/controller/Controller.class     | Bin 0 -> 5367 bytes
 .../controller/PersistentToggleGroup.class    | Bin 0 -> 2668 bytes
 .../java/main/controller/Simulation.class     | Bin 0 -> 720 bytes
 .../matrix/ConstantMatrixInitializer.class    | Bin 0 -> 877 bytes
 .../classes/java/main/matrix/Coordinate.class | Bin 0 -> 3241 bytes
 .../java/main/matrix/CoordinateIterator.class | Bin 0 -> 1122 bytes
 .../classes/java/main/matrix/ListMatrix.class | Bin 0 -> 2388 bytes
 build/classes/java/main/matrix/Matrix.class   | Bin 0 -> 2631 bytes
 .../java/main/matrix/MatrixInitializer.class  | Bin 0 -> 287 bytes
 .../java/main/matrix/MatrixIterator.class     | Bin 0 -> 1290 bytes
 .../main/matrix/SubMatrixInitializer.class    | Bin 0 -> 1117 bytes
 build/classes/java/main/model/Cell.class      | Bin 0 -> 1659 bytes
 .../java/main/model/CellularAutomaton.class   | Bin 0 -> 389 bytes
 .../model/CellularAutomatonSimulation.class   | Bin 0 -> 5424 bytes
 .../main/model/ConstantCellInitializer.class  | Bin 0 -> 1091 bytes
 build/classes/java/main/model/Lens.class      | Bin 0 -> 266 bytes
 .../model/NextGenerationInitializer.class     | Bin 0 -> 2425 bytes
 .../java/main/model/OnChangeListener.class    | Bin 0 -> 267 bytes
 build/classes/java/main/model/State.class     | Bin 0 -> 1039 bytes
 .../automata/BiColorGameOfLifeAutomaton.class | Bin 0 -> 1754 bytes
 .../BiColorGameOfLifeState$StateType.class    | Bin 0 -> 1381 bytes
 .../automata/BiColorGameOfLifeState.class     | Bin 0 -> 2355 bytes
 .../model/automata/BrianBrainAutomaton.class  | Bin 0 -> 1632 bytes
 .../automata/BrianBrainState$StateType.class  | Bin 0 -> 1323 bytes
 .../main/model/automata/BrianBrainState.class | Bin 0 -> 2908 bytes
 .../model/automata/GameOfLifeAutomaton.class  | Bin 0 -> 1405 bytes
 .../main/model/automata/GameOfLifeState.class | Bin 0 -> 2253 bytes
 .../java/main/view/FillingMouseListener.class | Bin 0 -> 1496 bytes
 build/classes/java/main/view/MatrixPane.class | Bin 0 -> 4821 bytes
 .../java/main/view/MouseListener.class        | Bin 0 -> 604 bytes
 .../java/main/view/WaitingMouseListener.class | Bin 0 -> 1047 bytes
 .../ConstantMatrixInitializerTest.class       | Bin 0 -> 1489 bytes
 .../test/matrix/CoordinateIteratorTest.class  | Bin 0 -> 2264 bytes
 .../java/test/matrix/CoordinateTest.class     | Bin 0 -> 2758 bytes
 .../java/test/matrix/ListMatrixTest.class     | Bin 0 -> 4407 bytes
 .../java/test/model/CellTest$Change.class     | Bin 0 -> 1891 bytes
 .../test/model/CellTest$MockListener.class    | Bin 0 -> 1329 bytes
 build/classes/java/test/model/CellTest.class  | Bin 0 -> 1586 bytes
 .../CellularAutomatonSimulationTest.class     | Bin 0 -> 7578 bytes
 .../model/NextGenerationInitializerTest.class | Bin 0 -> 2997 bytes
 build/classes/java/test/model/StateTest.class | Bin 0 -> 1913 bytes
 .../model/automata/GameOfLifeStateTest.class  | Bin 0 -> 2205 bytes
 .../matrix.ConstantMatrixInitializerTest.html | 101 ++++++++
 .../matrix.CoordinateIteratorTest.html        | 106 ++++++++
 .../test/classes/matrix.CoordinateTest.html   | 131 ++++++++++
 .../test/classes/matrix.ListMatrixTest.html   | 126 ++++++++++
 .../tests/test/classes/model.CellTest.html    | 101 ++++++++
 ...model.CellularAutomatonSimulationTest.html | 146 +++++++++++
 .../model.NextGenerationInitializerTest.html  | 116 +++++++++
 .../tests/test/classes/model.StateTest.html   | 111 +++++++++
 .../model.automata.GameOfLifeStateTest.html   | 111 +++++++++
 build/reports/tests/test/css/base-style.css   | 179 ++++++++++++++
 build/reports/tests/test/css/style.css        |  84 +++++++
 build/reports/tests/test/index.html           | 233 ++++++++++++++++++
 build/reports/tests/test/js/report.js         | 194 +++++++++++++++
 build/reports/tests/test/packages/matrix.html | 133 ++++++++++
 .../tests/test/packages/model.automata.html   | 103 ++++++++
 build/reports/tests/test/packages/model.html  | 133 ++++++++++
 build/resources/main/view/style.css           |  37 +++
 build/resources/main/view/view.fxml           |  50 ++++
 ...T-matrix.ConstantMatrixInitializerTest.xml |   8 +
 .../TEST-matrix.CoordinateIteratorTest.xml    |   9 +
 .../test/TEST-matrix.CoordinateTest.xml       |  14 ++
 .../test/TEST-matrix.ListMatrixTest.xml       |  13 +
 .../test-results/test/TEST-model.CellTest.xml |   8 +
 ...-model.CellularAutomatonSimulationTest.xml |  17 ++
 ...ST-model.NextGenerationInitializerTest.xml |  11 +
 .../test/TEST-model.StateTest.xml             |  10 +
 ...EST-model.automata.GameOfLifeStateTest.xml |  10 +
 build/test-results/test/binary/output.bin     |   0
 build/test-results/test/binary/output.bin.idx | Bin 0 -> 1 bytes
 build/test-results/test/binary/results.bin    | Bin 0 -> 3267 bytes
 ...BiColorGameOfLifeAutomaton.class.uniqueId0 | Bin 0 -> 1754 bytes
 ...rGameOfLifeState$StateType.class.uniqueId1 | Bin 0 -> 1369 bytes
 .../BiColorGameOfLifeState.class.uniqueId4    | Bin 0 -> 2355 bytes
 .../BrianBrainAutomaton.class.uniqueId3       | Bin 0 -> 1632 bytes
 .../BrianBrainState$StateType.class.uniqueId5 | Bin 0 -> 1311 bytes
 .../stash-dir/BrianBrainState.class.uniqueId2 | Bin 0 -> 2908 bytes
 .../compileJava/previous-compilation-data.bin | Bin 0 -> 21925 bytes
 .../previous-compilation-data.bin             | Bin 0 -> 4499 bytes
 103 files changed, 2343 insertions(+)
 create mode 100644 .gradle/8.8/checksums/checksums.lock
 create mode 100644 .gradle/8.8/checksums/md5-checksums.bin
 create mode 100644 .gradle/8.8/checksums/sha1-checksums.bin
 create mode 100644 .gradle/8.8/dependencies-accessors/gc.properties
 create mode 100644 .gradle/8.8/executionHistory/executionHistory.bin
 create mode 100644 .gradle/8.8/executionHistory/executionHistory.lock
 create mode 100644 .gradle/8.8/fileChanges/last-build.bin
 create mode 100644 .gradle/8.8/fileHashes/fileHashes.bin
 create mode 100644 .gradle/8.8/fileHashes/fileHashes.lock
 create mode 100644 .gradle/8.8/fileHashes/resourceHashesCache.bin
 create mode 100644 .gradle/8.8/gc.properties
 create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock
 create mode 100644 .gradle/buildOutputCleanup/cache.properties
 create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin
 create mode 100644 .gradle/file-system.probe
 create mode 100644 .gradle/vcs-1/gc.properties
 create mode 100644 .idea/.gitignore
 create mode 100644 .idea/.name
 create mode 100644 .idea/compiler.xml
 create mode 100644 .idea/jarRepositories.xml
 create mode 100644 .idea/misc.xml
 create mode 100644 .idea/vcs.xml
 create mode 100644 build/classes/java/main/SimulatorApplication.class
 create mode 100644 build/classes/java/main/controller/Controller.class
 create mode 100644 build/classes/java/main/controller/PersistentToggleGroup.class
 create mode 100644 build/classes/java/main/controller/Simulation.class
 create mode 100644 build/classes/java/main/matrix/ConstantMatrixInitializer.class
 create mode 100644 build/classes/java/main/matrix/Coordinate.class
 create mode 100644 build/classes/java/main/matrix/CoordinateIterator.class
 create mode 100644 build/classes/java/main/matrix/ListMatrix.class
 create mode 100644 build/classes/java/main/matrix/Matrix.class
 create mode 100644 build/classes/java/main/matrix/MatrixInitializer.class
 create mode 100644 build/classes/java/main/matrix/MatrixIterator.class
 create mode 100644 build/classes/java/main/matrix/SubMatrixInitializer.class
 create mode 100644 build/classes/java/main/model/Cell.class
 create mode 100644 build/classes/java/main/model/CellularAutomaton.class
 create mode 100644 build/classes/java/main/model/CellularAutomatonSimulation.class
 create mode 100644 build/classes/java/main/model/ConstantCellInitializer.class
 create mode 100644 build/classes/java/main/model/Lens.class
 create mode 100644 build/classes/java/main/model/NextGenerationInitializer.class
 create mode 100644 build/classes/java/main/model/OnChangeListener.class
 create mode 100644 build/classes/java/main/model/State.class
 create mode 100644 build/classes/java/main/model/automata/BiColorGameOfLifeAutomaton.class
 create mode 100644 build/classes/java/main/model/automata/BiColorGameOfLifeState$StateType.class
 create mode 100644 build/classes/java/main/model/automata/BiColorGameOfLifeState.class
 create mode 100644 build/classes/java/main/model/automata/BrianBrainAutomaton.class
 create mode 100644 build/classes/java/main/model/automata/BrianBrainState$StateType.class
 create mode 100644 build/classes/java/main/model/automata/BrianBrainState.class
 create mode 100644 build/classes/java/main/model/automata/GameOfLifeAutomaton.class
 create mode 100644 build/classes/java/main/model/automata/GameOfLifeState.class
 create mode 100644 build/classes/java/main/view/FillingMouseListener.class
 create mode 100644 build/classes/java/main/view/MatrixPane.class
 create mode 100644 build/classes/java/main/view/MouseListener.class
 create mode 100644 build/classes/java/main/view/WaitingMouseListener.class
 create mode 100644 build/classes/java/test/matrix/ConstantMatrixInitializerTest.class
 create mode 100644 build/classes/java/test/matrix/CoordinateIteratorTest.class
 create mode 100644 build/classes/java/test/matrix/CoordinateTest.class
 create mode 100644 build/classes/java/test/matrix/ListMatrixTest.class
 create mode 100644 build/classes/java/test/model/CellTest$Change.class
 create mode 100644 build/classes/java/test/model/CellTest$MockListener.class
 create mode 100644 build/classes/java/test/model/CellTest.class
 create mode 100644 build/classes/java/test/model/CellularAutomatonSimulationTest.class
 create mode 100644 build/classes/java/test/model/NextGenerationInitializerTest.class
 create mode 100644 build/classes/java/test/model/StateTest.class
 create mode 100644 build/classes/java/test/model/automata/GameOfLifeStateTest.class
 create mode 100644 build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
 create mode 100644 build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
 create mode 100644 build/reports/tests/test/classes/matrix.CoordinateTest.html
 create mode 100644 build/reports/tests/test/classes/matrix.ListMatrixTest.html
 create mode 100644 build/reports/tests/test/classes/model.CellTest.html
 create mode 100644 build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
 create mode 100644 build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
 create mode 100644 build/reports/tests/test/classes/model.StateTest.html
 create mode 100644 build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
 create mode 100644 build/reports/tests/test/css/base-style.css
 create mode 100644 build/reports/tests/test/css/style.css
 create mode 100644 build/reports/tests/test/index.html
 create mode 100644 build/reports/tests/test/js/report.js
 create mode 100644 build/reports/tests/test/packages/matrix.html
 create mode 100644 build/reports/tests/test/packages/model.automata.html
 create mode 100644 build/reports/tests/test/packages/model.html
 create mode 100644 build/resources/main/view/style.css
 create mode 100644 build/resources/main/view/view.fxml
 create mode 100644 build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
 create mode 100644 build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
 create mode 100644 build/test-results/test/TEST-matrix.CoordinateTest.xml
 create mode 100644 build/test-results/test/TEST-matrix.ListMatrixTest.xml
 create mode 100644 build/test-results/test/TEST-model.CellTest.xml
 create mode 100644 build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
 create mode 100644 build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
 create mode 100644 build/test-results/test/TEST-model.StateTest.xml
 create mode 100644 build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
 create mode 100644 build/test-results/test/binary/output.bin
 create mode 100644 build/test-results/test/binary/output.bin.idx
 create mode 100644 build/test-results/test/binary/results.bin
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeAutomaton.class.uniqueId0
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState$StateType.class.uniqueId1
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState.class.uniqueId4
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainAutomaton.class.uniqueId3
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState$StateType.class.uniqueId5
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState.class.uniqueId2
 create mode 100644 build/tmp/compileJava/previous-compilation-data.bin
 create mode 100644 build/tmp/compileTestJava/previous-compilation-data.bin

diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock
new file mode 100644
index 0000000000000000000000000000000000000000..b46f83a01ab908bf6e3267e858d3035786495f80
GIT binary patch
literal 17
UcmZP;nVECsyOi^71_&qz05Q=7hX4Qo

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin
new file mode 100644
index 0000000000000000000000000000000000000000..635ccaeef63a065a0c4c74a249ab3129af03d716
GIT binary patch
literal 20297
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
HrC~h)pc#ms

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin
new file mode 100644
index 0000000000000000000000000000000000000000..dd8d8203bf8471e8718758afb634924d1573be59
GIT binary patch
literal 22601
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

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/dependencies-accessors/gc.properties b/.gradle/8.8/dependencies-accessors/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin
new file mode 100644
index 0000000000000000000000000000000000000000..9b3bc4078d0c53cf8591fd95262199210d726f98
GIT binary patch
literal 123663
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
U)H|l%V!9QTQ+*6{Vq}m80Q&v%QUCw|

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock
new file mode 100644
index 0000000000000000000000000000000000000000..1e10035efce32487e7d2224de91f27baf269a935
GIT binary patch
literal 17
UcmZP;c*mU9v(VuN0|a~k04)&&pa1{>

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/fileChanges/last-build.bin b/.gradle/8.8/fileChanges/last-build.bin
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
literal 1
IcmZPo000310RR91

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin
new file mode 100644
index 0000000000000000000000000000000000000000..5e0a42aad52bf37257340b61cc8ca94ff5fd1d4e
GIT binary patch
literal 24347
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
DPyR~%

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock
new file mode 100644
index 0000000000000000000000000000000000000000..29a975946f2767eea26c71f25f4f9c9bdb3534af
GIT binary patch
literal 17
VcmZR6yJ<_YY^TIA1~6b-1pqk=1pWX3

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0ee0cb6068e0293342427cf10a3592f9077117f0
GIT binary patch
literal 24651
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

literal 0
HcmV?d00001

diff --git a/.gradle/8.8/gc.properties b/.gradle/8.8/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000000000000000000000000000000000000..2cafc576bb23ac2fa2f6ca5f5d8ac990ce3dff22
GIT binary patch
literal 17
VcmZQxvHzU+UZ<Ad3}C<_4gfyX1swnY

literal 0
HcmV?d00001

diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..0284fcb
--- /dev/null
+++ b/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Tue Nov 19 15:56:21 CET 2024
+gradle.version=8.8
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0da55b2484637cba2ea221aafd6fee75bd1e268e
GIT binary patch
literal 19091
zcmZ=^V2}{_4+RVeAc|m)vPMH-Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n
zMnhmU1V%$(Gz3ONU^E0qLtr!nhD!*9GB7Z3K|CX&!vtdRmoqRJ@GvkiD7FeZ7RI06
zd>ACkz~H$OI(_iJi-~8--m7Z75OJ?qnD~TVv5u)u@6JNRJ<4I?(`4t(GCA^(A0qB0
z3KL%=H&es8`*jgS-19zMygy`~<&!)9P;q~l__2bZyM@eWq9Ed4-Z1eihoe?(wOy7B
z5%*XN6Te-wxniOFjp<PFPMA3JUcYwp^F@{ranI>6aluvW%14&YsDg?Y!^EZ4ulApP
zZ`%wJ_hN>N2fI0RMz4#9h<nV2iOZb3eL3`_ZzV+BGZ7{(cjLE3J?DL>Ii9UBalJ#g
z)-pQY3WTcv2opC9sOt_<zH<yB?vV-;H@WTg(R%yO5~z4EOx$$2@yA-Zi%@Y-Ntn3(
z@(-y=+AOo7>K$R?jt=(cPo#>%!v8Ex+<B6>+4n~wnh^D#yJ6z4L7{qo3${VigI7LG
z-0Psr{AR0bSy1)bF!A8?iPa5#Up_*_y)0qkVH<n0{nAffg@}9XhlxipM%#Q^r0D<^
ze+(1PYFP3qX5pdz5OJ?Yn0T&axaWj3OKhOx>M-$qe(`_5SN;PfZ3YGgPg|IHp|j)4
z)s=G4aPVY@i@)4`amSN++z@j-F2cl1B1I()j$VEX75@qohtUiS%+N4`s2C+jLtr!n
zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON
zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmQ
ygn%&v0|O@m0|O%ng9ttp5s(uHlL+lxNS?{G(}ig=c_NrGNQ^ne=)zP376Aax+`h8_

literal 0
HcmV?d00001

diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
new file mode 100644
index 0000000000000000000000000000000000000000..eb9b498475051b36815142a749daa27cc7921234
GIT binary patch
literal 8
PcmZQzV4SjmPx3tg2E77I

literal 0
HcmV?d00001

diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..4b585cb
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+game-of-life
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..6030a3d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <bytecodeTargetLevel target="22" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..fdc392f
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="MavenRepo" />
+      <option name="name" value="MavenRepo" />
+      <option name="url" value="https://repo.maven.apache.org/maven2/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..0dcb80b
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_22" project-jdk-name="openjdk-22" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/build/classes/java/main/SimulatorApplication.class b/build/classes/java/main/SimulatorApplication.class
new file mode 100644
index 0000000000000000000000000000000000000000..be7654f5f6a9b8f8b75a2d9846a4ed53e1db8d31
GIT binary patch
literal 3200
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

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
new file mode 100644
index 0000000000000000000000000000000000000000..67fb58075167a4f416dacac6d461436aaa8bcd26
GIT binary patch
literal 5367
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
JGrVMw1OPo*SUUg!

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/controller/PersistentToggleGroup.class b/build/classes/java/main/controller/PersistentToggleGroup.class
new file mode 100644
index 0000000000000000000000000000000000000000..314954a9fd4ab6d48da5fec7067063879e670d62
GIT binary patch
literal 2668
zcmX^0Z`VEs1_mdFIxYq#24;2!79Ivx1~x_pg{;J~#Iy?i;^fr4RQ=@qypp2)9Q}~|
z^z@um_oDpL0!9Wlo6Nk-5<5l)W)00SE(Q(;PId+^9tLg(9!3TQsE(Y}BK?5WqT<Zr
zlGMBs6zyE;sZfDpMg~<4O&_R@$@w`ssmUdo`FX|q{z=8DMP-ReIjKIG#U<843=9l>
zJPiB{0*nlt`FYM6iFxU%DU1x>8a{;Vv&L#Z$W(|aAXaK#YLPWJgAju-JA()hgD8U-
zBZDGAS1~ehC#Iyp^fNMOX<+jSNFL25P@qXLNU}3X@i0g;$S^YKV6h8Rp9;hnMh2F=
z)QS>t=tpreNHECpFvv3~Ff#C`r<ORTq@<<<mnMO9GcpK416RMaBr``JBxcRcpv0ie
z&Y;4>pvs`e$iN4(86nNcz>!&!T9jClU&P2DhN9aODsIiqpuwQY&Y;D^pbc`n5W)nQ
z5=I90jKpHU)QS?2T3wJQ^%xmMV8-Pn=B4ZVCuOB3msqni7%(zOgN(qD<k%UE5OIMm
zO*)m9l;r1eGMF%!vNM?RFqkt~Ffz!Zn3$PYP+Fqzn_pU->ROhXSHj4^=j$ID>>3~B
z>f`Dd?CQeEAOVZIRFDFFu(FWKf>diE21W)e9tLX$8%74UjKsW@oK!}JBqEX>%s||3
zMx;z6OFh6=6j^gI7&6%LFxWFVFf#BZrlf#f<d&IJl3K*bU<OZVNIJpJh1rTE4l@yy
z>Npsjco>`+To@Sy(^E@=Q$hJHH3gD885!iEF@z&3thpH67~I(zJa`y98N3)71VDkT
zj})7X3~Z@|rHMJkj0~a>7b44AYesP~m@xS8F!+MX8TRD-yyDW_R7M6C=lqmZMh1SL
z%)C^;(%hufq7YEVXJioa$xlwq2}>->1o5GQEF~G4#f%I}gfl)P15Zw3Zc<93N?vNY
ziXkI|A;eK>75d0U4Jcbcau$dMDhi+(%~~^zk%6ZKT=GFu86$%-EP(MuD<cCNL=z)}
zEI#Gdj0|ka;F64yK@X;oIF~Up@CKJ8CTII57C?gq*{cSO46bmm;&CX<PKXlpTmtq!
zS1wYnktd*mk%22XzqBYh)h!d0OQf)t|9YTQ!^j}ul%HQxTvC)+;G0^Kk)Kj5z!1XE
z%8&}GPSSW7f*C>t7%~_c#NqxxO3~JuVf?HNSs<m^JPa`mu>uUaj0{R}r8xb=&&H6?
z#ZbUd$j(s2!%)mn!pNWmat<V!X6BXUXQ%4>fYXd`YDr>RVsc4-Q6(b-cP=vT48$T7
zO%P8&vRbi<Pkw%OX@NC3xFE`cONuh{(vd}=wm~!^@-9R<@sbcL@f!@O0Z~kLPRz*(
z&MZl_W@O;;%*#tHa?VLCE>10GXDDZ6Pz8kv!Cb<~zy`@S><m><Jt$T{d<JnJEJ)ZH
zY8V;hK*r-%%E-V52|oq}1`Y-$1`uFoU;wpF7#JD+7#JAb7?>Cs85kHuw6-%aYHed+
z*V@Iv%fPUcL6C`IBLf2i6N5jfy}$s{CCtFWAi^NbpuiBoz`(!*(Z>+T5X8VBzywNW
zP%}3$urRPPFfcf3Z(|Uj$zY?sjX`!NgCZk?ug*>ebw-An3~D+%8FUyK4lwBZ=^kJ(
zv|^ED*~DP1CCRdj!IFVt8-wlg|JRrQKMZmJGuQ!A3~USx45AF|3}Or_4B`x03=#}h
z46+Ok4Dw*dXfd!bXfX&dgffINurR1Fh%tmSM1URb2yr0DISi2uQ4EX>(F_a>ybLT1
ze;5SV88m(|Xfp{gfl@xy_3@xK90LP`fVS2)2FGm-t}_|fb+$2hBOJpAHdvB@n?Z_!
zpFsxf00pp^0NgT&Q$Qgrz!1j(G81GiGXo<(12aPcIA9YQk{B2m#2A<u@)(#Ik{MDM
klEJKWhD?SWhEfIw1|bF}1__2Th6)x=hDwHNhFS(m0RN%#3IG5A

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/controller/Simulation.class b/build/classes/java/main/controller/Simulation.class
new file mode 100644
index 0000000000000000000000000000000000000000..510e310944f301590d5c090e5e810f1190f7e8bd
GIT binary patch
literal 720
zcmX^0Z`VEs1_mbvS#|~{Mh4O3{JfH){G6QBBK_dZ+|r!HlFa-(b_Nzk27#=^vPAuy
z#JqHU|D>$c<PvrUHbw>^gs5jpYEfcRPAVe<e_m;BQfiTZnsa_mX>MLIBLlOBrY9o<
z4@^8Lzr2`{L9DbOC9xzmB;PN!qQpHlFSQ748(4K1BLhobYDEbngP4X-ZemGMW`(|U
zetuC(W?o`Rs<kFaJ~_Xjl953Zn>-FJ9O<bg&iOg{MT`vk*tBW-fV`7dp<kSwnwP3y
zkeHcQq7T+!&B!2FoLb_Xk(igB>XTVq0&*@RgBCVZz=l9VDyTFs4-_U~2P+n*B6-sf
z97gB{N^AJ!=BK3Q==<lPN`Xz_49-l?ODriZN@Zj)z@^d#$$rnglGOCnB5OOacGjZQ
z;?xpG2G-=9)Wjl225TghkT^vafyJi{mcX>LW@O+B&Mz%WPIb!!M>!(3=z+qJjgf(o
zfti7kft7)Qfs2Kaft`Va0hEk5p)?l*H<-`Ezze4N82G`o0D~Zy7Ge+v(;^I_42%q7
d3=9lR4B{+|3=&X%k|3Ia2`VGSAPrU_0|1p6$CCg6

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/ConstantMatrixInitializer.class b/build/classes/java/main/matrix/ConstantMatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..7b1bad962da3565ecdfdcdd189b3c736644d9140
GIT binary patch
literal 877
zcmX^0Z`VEs1_mbvB`yXg24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3U*+{BWi%nE(y{Ji3l#Jmz;FxN9Lvm`SyC$lQG
zh>?LK87jxfAmoE?x-~lkA0vYV)D$ebIfFCP^Abx+i&7aGm_tIW85u-1Fip`6V`N})
z&QD2YWZ?J7%uDqv%}q)z3Q0`LNd?)OpPZNzmROVt;zI>lN-{Ew85xv(pjPAbfHfn7
zm=B5pl?AC#L(~cCwh0NbwzFnrVABW*u?D%44-}S}Am`+iraG1|GN@}H49PD_$;?YE
zNwwC*^dchzS8_f~0V9Jj7F~=C5?Bob2b;T1h!v)(c9=pigE1ll<`=Hu{L-T2RJTk}
z;L70)I6Y8YGbl1}FfcJNGVn4mG6;dv3<DzrKLY~;6N3O)oRvY4fr&wgfq@~8fr){M
zfq{WbYdZs@miAT#_Kge-49pC|ATh8E8v_diJA()V1A`ct&&43hAjSX!Tu_t6QRE~*
zQVbwD0l2M_42%p?4AM|Ly%`w6Cb4R5VPM|?w~md0k%57M8_6nGxK*qSG7Pc|j0_;F
Zc);pFav-Z9-jZWrf_hM%K>_ShMF2FF%&h<b

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/Coordinate.class b/build/classes/java/main/matrix/Coordinate.class
new file mode 100644
index 0000000000000000000000000000000000000000..5f0aa5703951c24f3681b9f4dbcb6871d397298a
GIT binary patch
literal 3241
zcmX^0Z`VEs1_mdFOfCi{24;2!79Ivx1~x_pfvm)`ME#t^ymbAb)a3l46h;O%o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vi+{BWi%nE(y{QRPn%)G>sR7M8I3PuJ-Pmn@B
z9tM7pD#l7K1`Y;6kQG9V46GWSo|<7G5fL5+Q3f$a2G+!+{IXO=22l-79}EMnK`JG9
z7$m_ei!#$QN<bpgJPa}*5tf|PG_Zgi4}&~NfHf&KC%>GVL6Jd;ok5w0L4`q;k%15F
zt<sXr9DSe6;u1y%ru;NUhA0gmusGPe{z+M>$tBk0iD*K!!7Z=`*{=?=T!WEe5!I}L
z*g^y63NbJ+Xz?&;Gw3ifi039|r#k27B`21IXO?6*=jRodB<7VAGct&QVh+g-!6ikR
zdFj?d42%qVJPi5_28;|G8HvRi&iN^+Ak|nRQ_~Zq+K7k2n8AdRfi1PLG%=@`kwHTP
zi&`X`ppl~)#mK+{F`eHhGcVPzG&d==C?qi{CzX*w$R|HJF()jsC=<ko3bK@BWEL|r
z2xBpxkwL&WwIm}yB_OdVF*mg&wWyepK^*Kw%tXk@Ad+8Hl98XDpO={9mztTLk(6Hw
z(jcUP5%-J?oWYstd5I;ZMX8Jo>KF=ausFufnvp>$B{LDjd~vX~*km|L@*xqx$RGl<
z1DrG<qSlNItht$arMN;DTUKLaU`x&~%1bR`WMC=C0cmB{(DVdlOzd&Nm=6kej6B51
zz!jWdT9lmXmI;a&enjb@2U5$(zy>Q@1f25oONvX15(^+vQOv;*2r3~Mbr>}{7=jrY
zm@BL+`5775`575_`Pmr4xfmiCBH0<DKxs9akwFDy9;CR+%qz>!PSuBa9+G_B5|c~v
ziz*ozW+3N4s6vQ^9*KD=IjO}eKKc3Cr3J{jA7T))2#Us#%7Rp6NvQH@ECGci1U14r
zF()TDvn17;pN%1wiy@97o}D3qhar(6iIG7b;iaO|ypqh^RDDS5hd8*Hk%2P_7HEtN
z8>#6tke^&qi<65o3rg~fkbUQzlUQ7gEP%zkP`^Q(2?<wgXx;!PONcM585wvy^YT)Q
zz(%GPvooYJGN>Z_jKvgK?65PWGcw5GSIWr128l`rLk128CI$uuCI%r;UB$q_AOxz7
z7#J7?7#JB?8H5;^7)%)$7<@q$AOiyfzt(mJMlI>B4D4DmTN!vag0-44Ffgz&FfuSO
za4?uNFfb@EFoTpbSTI;JfB-+(XplTV*l;EWD+UGzP9_F!urdY)P6ibQYX(NJO?C_{
zU>9-iX5fgFlHSfBumQ~yA+RN45LIBKL6&fVjb>zE1l4#@vuqexz|Il^nWeRbft@8q
zYYPJ}7Bi*6X7WH(Lmkcts!eg4lz_t|6|5$SGKj%VVujcOa}&rMmIN$r(#2|$JOPtZ
zu$W|q)g&7RTWIWp!W<MmB3j!RgtfLYh-+<QkkZ=5AiIM>0X_8Hk<1c-hLjyRhU^&_
z864ndRxxmZ{TTrBCnW4yK<+~m0(l-T1P)hJRS+SNDlG1aL~>66hI<_0?&)HH#BKt*
zAK^BG(*~-|5FwDwa8(e;p!fnJ1X8twK@B~;vXR`EfZ;wT24`rxuwY;UhZi3xor2QD
zE(T2o26WR3kWAx)n#RcB!r%%u#gBm%oG+wc?$zGHzz+6>_7(<SkgL&6ECHJc$xTvF
z6B!t!7~B{v89=$o9lzONzk|#Mc^}>E3cO|uGUzjSK;3N!wu^y*U27MEE(60FaDqZF
zS0E9{4t1m;gE50ARJ#oW6WH4vTH3o93~}j)c#;FEA5>a-F?fS5=7u{&AIxW9U<E}3
zK4-8(jbUWq$Eul^7|kpUK472vGWantFz_*eibNi8p$H=V85kHu7?>Es7#JA>7-AS$
c7&sV$7(y6A8Il<o7`PZ18B!S17%~_n0kZw3=>Px#

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/CoordinateIterator.class b/build/classes/java/main/matrix/CoordinateIterator.class
new file mode 100644
index 0000000000000000000000000000000000000000..44aee510a8e26eadc72354a8f004144efbabe772
GIT binary patch
literal 1122
zcmX^0Z`VEs1_mbvYc2*R24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc2Ep9KlA_ECedqlAqLj?M#FA7l26hH6kP+OB46GWSo|<8t47?0{
z><s)o3<3;-j0}<(T0BcqixNxnix?T$lS_+=Qu9g}8H9Z>lv#re66RqLVGw0xU@gx~
zDal}DVDtouit{i?fJE6cQZv&tN<eOq;$e_xkYQwCtOPsPlZ%0uL5_z(o<V_;fjuL!
z*e|uB1S}K9&Y;A|paAx5X-Q^|zF&TDX>x{ZPHJvyUWsc(a%w?IW_}(QgCYYn$Y50-
z1~mqCMh4a*kX4Kfq8gf5+zL{u$-|%pc0vWnavdH9U64MOywr*kb_RV$1|fu<h#+8b
z&QD2YWZ?J7%uDqv%}q)z3Q0`LNo8aZ^2tw5%n3^@$^`MDf-EH&nZ=9@(wHuQnP|<(
zz#CkWn4ImKSOC=|qM_*nwi+pNtr;0OgEQ0f5=%;pQW+VnF%>{Wz##-P+XmBGYddR3
z2Cm@z(xT*4w@i?`#Sv)(rcV!KJA(oPF9Q<;BZD3TGlLK)Rv8!=gh27gz`(!+N-GQu
z3@i+c46F>?42%p03=9le46F>y3=9l1TH6^IwRSVGM=~>SXW-n*z@sI-l|e{LW-Ei(
zMzC%}1_lN(237_J22lnU23`h11~CRP25|;y1_=fu1_lNNh&c?#3?>X9AOp6a5o9*l
z1t53HGbljq^#r?<fk8xT3j@zK21%_g3}TBI*jbh{urRM-U|?Wo0NKaJ0Mf4rHlGK~
z7J-^?%D}+D%D^P#z{tP|N(4}2r!%lIFflMNxM*!-ke$WAy_-QXayx_aevmCbS|D;8
zg9^xVU|Th`wlD}SV32_L8zL*ok^u3)_6E2!Al}wt;AhZf5Mj_`kY~_maAGh7J4*~=
zAJkbQ3<eCk41x@d3?K(`GBEM~VK8E6U>9&?&}A@#I#Qnj<Y)#4R;_IeU|X1wJj(?(
V72;V|sHsd0=HMu>V6X(!RsaXD)7Jn1

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/ListMatrix.class b/build/classes/java/main/matrix/ListMatrix.class
new file mode 100644
index 0000000000000000000000000000000000000000..7ee826551990188fb0835ab104f5c6e6c65acbd8
GIT binary patch
literal 2388
zcmX^0Z`VEs1_mdFcrFGe24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vi+{BWi%nE&<%;FMXFq4siwLCMWB!iKG(G#SY
zkB5ODq>?QoH8VY<gq=Z<kwF-2Noh%Dj=p12QDP-XHy48dgD}VuB8&_y8lDiF#CRCQ
z86+4P*dW$0G6?t}w1RY5b1`r*NbxX8GsrM9@PXW!nV6GVl^UK2a)GRd4@9Fr#BH8=
znI#bUB5Tbsb_O{{1_h`B=ls0llEgfyCy*3!F~~9~fZV0X$RMf#u^uUStTn?xPEZD^
zP+??{*YNbjZ>Jg}(46!0i&8T45=&CK7*rWFKt^aXGO%iRdTNGoGiWpDuruiLFz7Mp
zGcrg(or&QOgs;OAb4pVkOBfl{;l4&#V6BPia&87g1|xO`V;%+*22(}`KGcw9WMEEA
zNx|XgD3D%r9tH~rOGXCf^wbiNI!_#SSo1L0FxWCOFc*W=scU#*It7bPb_RP!23{0z
zGcs@nXQt;RmXsEyGBT(`i~*-2P*Si#=ZAz?+gaOLGcvF^=clAHGVuFk=B4_T<|d^U
zg(N2Bq%txH`Q#@j=7c2{WrFxnL6(w?%wk3cVOTVR%!UNJH6sHzB8e3-GDyMHK;)59
zjWr{K7^>lw1*uRABw)G_Cfk7B%E%xOlfp0%ra}c@0)r^h3}a*v2Pp$bC~8_|WZ+1K
zrgV_^F;p-zFo%R#Gcs^!czT9}Sc8mWtYl<hOU}<J&CO$EV60$d5XBnMj10WNC5g$|
zzKI1;e=5P#Ar9YwOlQ{6^kifZ1EqP0vB>UaWMBtLKwOlUS`JR)j0`q5Ay$}*?J$K<
zLlY7@j0{}C`K3k4scxB|B*2e|1U*n_Feox`FfcJNGT1RNGYEl79|lGS2L=WPCI&|a
zAyA>mz`!5`D$*Dj7}yyY8CV%q7?>EG7#J94Ft9MNFfcGEXl-X;)RNxHz^)~;m4R1l
zH-kW=^mYcJtqh`Cy4x5eH!?6VFf%waFfd3luz^Vy25AOP1{nrE23ZCv1~~?K26+Y-
z1_lN#h<OaI3~me{pa8a?5o8D01x#R;JA(%UGlM4s1A`a?M8uWB3#6Pufx(@@n}HeX
zejl)FeW9)`XJ7-H&aWjcvztLSQg=Ip{B{N<gyTRJ0|SE+10RDjl4JPcj^T$ph9B-2
zeg;1Ve-y`n)I%Htk_&)4CXj&%RA@sT^N)dzft7)QA&}WtMr#WL`yvKUP^f8bVc^})
zAmqnv#v;lB;w)lN(AD0}pc*M7%Cen7eJ6t!6T?mh115&>78b_k|L<yTVGz}Y3NSG)
z|GyRF9Tsp{D=}~|Ffgbwa51Peh%sm~C^2X;STblb*fZ!bcrmCk1Tg4<y=lV0${@+0
z#t_87!@$BI#$dt_%pk$Q%)rFp#}LB60}kOpcpwBafI^=U9Qq0j%uw~A49p<UFt|eF
z0i?>CfsrAMfq_Aof#nYa6XRb7F?I$+#$ODoKN$p|5fskA$iU4I!N3SkPL2$W44|lH
z1qH|&c$#4Y3mSpl$^&MzLR|w&0SFOLpffV?V>ON!-8eHMjk92ggvMA3sM)~4z#sw&
za_OB6W=sqR7z|~=j16dxwE>$B3LXXq5vXH9EKqQQd?*4AY$k9ZLOcLc1@ZtS<3%wr
zGT1P{5^fy>GdSUjq1vpwlfjCaAsiIpkjw>1zfKII49;NtA(=@GZoe2fIzje}LG1@+
aplG!83sMhq2}BMx{X$$9!w?HD9^wE#0M@Ml

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/Matrix.class b/build/classes/java/main/matrix/Matrix.class
new file mode 100644
index 0000000000000000000000000000000000000000..1249a488ec4ddea73c71356721396fdefea35e64
GIT binary patch
literal 2631
zcmX^0Z`VEs1_mdFTrLJC24;2!79Ivx1~x_p!Q8}>qRa|?=luMll+3)ul2k?p#tKFT
zW(`eGkWvmF22PMV#!7AmZU!E923{TpJ_de9241K}U$A~g2IlnC5=I6w4Np%^pRB~P
zME#t^ymWp4q^#8B5^IoNK^_Jn24O}9=3<aSaScyTOm&)J><pp^NBLwHmq5&CXAoy(
zkcL_rT$%(C^~}pG$xO`2tV%87Vi04H<YACvkY;3Hv&qcMEU{x`P}T5(YJsS?hH(+T
zwbl&dVh~}F1!<LIWRM3r3q=o-9oCv*LJSNH3Oo#o3`&d)9GNAlMTsT(MOZ9C4g*h+
zvZS0;Yjy?|Mg~c!=?Eu)<xBF5K!K#j!=MfdZr1Y5l#&dPh$at%7D$9GBQ-NUqlAk=
znL!8SSY1X2R#0Gvu`}p1GKfM=h4>R@A{T=mgCR(<5hH^dMp%Gjsk9_BM<1r%8WjE}
zj0^%`DWnKwXE0-A5JHH8H6-PvGBR)mXQt;RmXsEyGBU7(+!GRF&B&k*w+!J;YveG2
zrVB;}7U%qwR7M7VpUk{eztY^K)S{3?u)#t;`N@enVTnbVAU;%(r6eP>7^E7-yVi^h
zT**l3R~Sn)Gct&w8dzD73N=&&rW_J@HX$L_cGipx5?K8J_8y0Zr)NlrwPqM2g9bKL
z*b+7)14mwJd01jjX(}Uw5T*)724=9?lGqG{TE<xnOZmw0i4?@3%!eK{Y{~gWd8tK=
z42+(P4BFUC$It}}0&Ya87K8FOaty+ffHlZaY!WuGU`28tC|t!fpsG=m9wP%A*tTLu
z1`$Z;pvz;^hRYIZtd_w1C6bevo0O8M0=5ub=oPCNFfusWgjhkWMoRkDc9=p)BCue9
z8O;@(Us{x$>Xr%09Ndr;r3cD5j0^%!`S~TqB}It^zNsY{`6<N$3_<*y3~``b9?!!N
z&Je`U#*oOxki?M8&XB^xkjjw8$e;w$3n@!8^UCtGQ}unoZud<sNlZ&jF3B&dWMtsZ
zMdqE+Kyn{c6U0W3#JrT8)M6E%{QT_F0&65?!6ikRdFjX^C>ld53sT9Ggjk7RFEnDo
zfey9SIWZ?EII|?xnvsFWGcPZ-$T=smxHz?#ogtHvK@}rRuz8Q2A)Apw4!=@H1~y1o
zurV@lGZ-^4GMF+jFmSOjf=Xcq1{Ow8*$bxm82A|&8O#|N7?>C=7#JD&7%Ul>7_1l=
z7(yAC8JHLt82Gicw=pnkZ)0HJ$-u?Tuz`VrftkUYfq{XIfsuiML5;zNfq_8`qLjgw
z!Hxk0_!;aO92giG92poGc);rT8EhGx7#N^dIkPZ=YE8J+E({>PE7a;d1{MZp1_lNJ
zxYas483b4uHp1-&RpAT_mJIw1R$%)TAnM`v3qb8>U=Uz%V{m6+0=op_N&%=#AaWiI
zOi(v@GB7fDF?d7Wkjucqz{0@5AiSGFBvM9pH-lKDmiBfAiR}zB=s{oyc7hf}Iot`t
z3_jo>U|<ktP-pN32aqs>7K1MXGuSbZU=fBo1`-2)42%r^3;|FlI5RMUgN|Km7lS+l
zM#y`Ct%VrF4z(5$-XIY~cn2~tGAJ?xK@BcrU;#TvZa0H+q}EObRYnG_oeUa`4BHvB
zeRebGfqiO#@FpKPbVC?e8A2IE7{b8zLc&rGYOe?b7eg>Z2sFkKav&E#<U-+b9VWm8
zDijzP!O1Lufd%YI5iD*&xB!yYkbNuywHe`KkO;^=7HE7%FhqirbreH1G!-T=Ff+t3
W#4^M%q=T{p10zEQLl#30gCqd#ZEPz5

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/MatrixInitializer.class b/build/classes/java/main/matrix/MatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..1e20e643887a91dd057a1bd204a890eee963163a
GIT binary patch
literal 287
zcmX^0Z`VEs1_mbv9(D#MMh1!8#FC=S3VmNN<(ZdRl9`y3S(RGE&cMRRAdr<<mZ+bT
zn3t~apOlrFT*An}mkCi5mY7qT>R7_apswKqHN!bSzbGX$FR>)mTGIzzr!^x3XK-eE
zUSdgUQ7R*Y1Xf)kA=Zox8a5$TnA+_yg%}yQg7Zs@l2hF>b5a=@#4!Az2XX`(BLgD?
iGXn@PvM@5RGO#f)GO#l+FfcK2Ffc(`oD5uG5pDp$9Zx&}

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/MatrixIterator.class b/build/classes/java/main/matrix/MatrixIterator.class
new file mode 100644
index 0000000000000000000000000000000000000000..fc741ffe513b6994250709e570eeb08ef6480fa9
GIT binary patch
literal 1290
zcmX^0Z`VEs1_mbv3oZsG24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vy+{BWi%nE&9Fy&d2T9jClU&P43o1C9tl!D-k
z_<+qVEy>K$hlyH)%;Mu=;AaqEWMG3B#K^$!17SgpwB}|IVi0C$5aD4EWe{Uz5W+Nv
zk%2uUvDh!Qq6F;3C@uyLkPb;k1_gv-zx?3R<P6uG)ZEm(64#34)Pj=C{5&oO2?l16
z4Kh3ovJ7&J3@mwIV?;DGAr3|g2y1o*1x5xzsOy|T{>#iuEJ@{NP-0MKXHel`P-ReK
zWZ;D=fP@Gm19N(62_u8L2FzOsjn-J~U}WG7&P>lsEGaEYWn_RVKnXP)EC$(GGct(4
z#32^jgoIdwgw@~{L&U8i{z5U*S~HB1fyFsLB^4C>nR%&xrMXF|MInhvIjM{cLO%J)
zi8*13MVTNzRFI`4BeR&1K^)amc+4^~h@tALEJ%gwl)<hA=3WOh_d>+6I2wC6fPBIm
zT#}fa?VDHtwUJdrGbF^Ck-^a>#0p{%a;(~63PD6rf(YUaMh33n{L-T2RJTk}$OuD%
z6y|F^P-<gPVBlb2VqjztVqjtr0%Z~gMh0~T1_mYu4F(}lT8HyB8JHOu8CV&#7?>Ee
z85kJqK{=6ufq`FZI|HMZ&Q=C?E$yugyc-!97?>G!7#J9Y7+4q>7`PZ%7`PcY8F(1@
z7<d_U85kH87??rY81xwQ89;y^Y7GMeKiC0G3<fBw3_*$*K&mtu7{NNZ88jG}pw2X6
zU<73~21c->+!z?aYPhtvFtG1r5M*Rn19uM_SVj=+1|Be*3+e`teFzbdeT<;|1@&kV
zIDi-!RJFD-h|gl+-pwEpxt&33zt$E8UWhf)j0^`D<aaVCGBIpmU|?VYd!G;NO)&;`
l25|;{21z7qRWYmuiGZv%20NCKAL=&~xGzl^%)pUi4gkWu8w3CV

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/matrix/SubMatrixInitializer.class b/build/classes/java/main/matrix/SubMatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..739789b735a2f022f921f3f54339c4643539084c
GIT binary patch
literal 1117
zcmX^0Z`VEs1_mbv6D|fO24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3V~+{BWi%nJSB(j;Fn%QG*tBr`E5vnsWSk%0{&
z%gDg*17Yby6j_5z;p1W8XAodyU`x&~$^)quhADE+&o4^J%u6guwdP_FVi0C$5aD4E
zWe{Uz5QG|oP{GK+SOIpKCrGIT4}&B~9b+XogEWH-JA*6_gB*iABLgo~BgB422IlnC
z5=I6w4Np%^A9NpEvok0%GDx84K=Br5aAta5Vo7OHDkFmk%+U~&Z9+n<?W`FYR5eh=
ztzle*%dIuT7#Ucc^HWkm;ggw{>Q|bZlv)&$n3R*s$ROmCpPZNzmROVt;zI>lN-{Ew
z85v|@hG7eJYeoh!RK1l2sZjk&_%y<tu7&1wh&W6qn)~@cNh1^F(45j##}Y;cb+~S1
zm6&17$iS5hk7h;&39Q;eLaZ4X+-*XvF!kGE3c;KRi3y|_gZO}vfh#z_v?w{%EfW;L
zlGp-I50n-d6d5=em>3ut6d0Hogh1(>fssLpfq{XEL771alxV?hMg~>}6$T~-RR#uz
zQcxyhU|`_a+RnhJrM;DbT}x*x1Mfx#1_ovZH3kL-AqEx(1_llW76wiRP6jRpJ_c?E
zbp{3o1qNo2HU<p_O$HF)hg!$Lzz?>Fi9w5jfkBLc393pPq=*5eN*V4b9R@}QT?Rd<
zQ!*G>z^awBwlJ`3Z(|VD+QPuQjX^L$dmDo|ge{)1lR=7^VFTQCYz&MH3=Di=7eVY&
lg1bnGL7zc@ff4Ku9<Vx)9LODzATeNIf(DKugAq7ji~)cs1OWg5

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/Cell.class b/build/classes/java/main/model/Cell.class
new file mode 100644
index 0000000000000000000000000000000000000000..52248cc3dcef1b9d29537ccb6b4891d406b7c596
GIT binary patch
literal 1659
zcmX^0Z`VEs1_mbvA1($a24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc24S$G(vr*^eaE7r#7dvc;u0<fb_Qln25tr(b_QM^20jLUMh33j
z{FKxjedpAi97YDtoXp~q)V$Q9Vnzl5AA|`Y&DJ1|f;<dD48n{I?8*6gC8>EOj0{2$
zWk{~E=4KFO5MyT$=V6dwkYr@wLp6tyfjKcHg^@v215>AF6iBZ$4}%PYEF%L)W=U#M
zVo81xBZHWRCPX#ZL!MA^Yi<U41_gEoMIHtv24zMDA%smZC5#O08HvSysTC#Qu!#cc
zP~~AzV^C*gV95gui@?lA_5(YECL@CwBy9ZioHG*h(o;d9016y#1`P&n9tIr-T}B3;
zvc#OyRET^EBZE2?PeB}xY&a;2^x;A8lbTn|$iNw#nVy$eQd*SC$iN&DV$H~)577wr
zG018gAMDPt2??>bv$nIw5u{;^3@pz1DXEMM{63j^seYxoNvTC4iAg!BpvcQlPRt2Q
zEXoA&p@J+W8JWe53_MWlKq<qTk%14Cz%mnaoM90!=7XZQvLF?zUl2(n#BGcWY#JdU
z)|z3A48n;iDd^$J$RMo&)q^et*24iym5dA$xYRK+$l{QKIY9xJ9S{W|$1xYDmM}7~
zf}@m?fg?XBB@7h1j10WNC5g$|zKI1;FEXct6>4aLBg)by#0nBu$dPP^DFk&PD8eC@
zGBR)l=a&{Gr@Cc=qJt9@)_R~s%%I4?&A`OK$e_o-#J~i~a}10O1`G@gObmt$LZF-r
z=NmDwFfcN(G8i*3F_<tgFcdN{GcYkQFo<exXJFLY&A=YHoq=;J1DBTeRtABM3=9m+
z45kbW3_=Vn3=9n73@i+S4Ezid3?dAY3}y@r3}O(?4CV|L3?LxNV96lNz{p^QB4-Vf
zVgSh*!X0A6z{p_BU<Y+Z0@&dU3_My}7`U`|GKerSgd=PRm1qoLPbwkV$^*BRhryn~
z0mW939K=?ToFm*;Ck93aXSnCDGB7i+GB7ZhYHeW<@CADrWdBYEDMkiA-JJ|_j0`gw
zq;z*Os4y}dV9>B)kz~=)-pQcF%&`3bW03P$z=0#hz{bG9pv}O_pu@n$pvR!WpwD2)
zV8CF)U<h`u76S`|1_LM9k)U8Sg*)7o!37*#tPBPWt_;EqOyGb+sCNVhJ4ijmGa&V#
zAcUwlWME=&V_;z5V_^ErAi~bT#Lgi9i$NY5^Pm8BXHbU*FenHZ85kH?L0;Vek5@JZ
kkf0^lnLJ=NE7WnI7(|GGtcN5h4+bWv1)dCE;3Vb^0Ki;RZvX%Q

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/CellularAutomaton.class b/build/classes/java/main/model/CellularAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..41b2a3315b622eed2449bf630f044656ac4495f2
GIT binary patch
literal 389
zcmX^0Z`VEs1_mbvA$A5PMh5ZR{FKxjedpAioYI`cBFEB_{M^Kn{5*CB7Dfhvti-ZJ
z{hY+SbbbG%tkmQZMh5=8(%hufBL6h!{G8I<ykbTMW(`eGMg|_3cu;<MF(U&{N@`kS
zX--LSNn%MVBLlyNrVqp-uz)oq17~n%dR}5lX;CU81FME+NU${{19wqkUP^v0SP3J8
zqJ|IH`qGlj9Q`1$j5WF`;@H%H&C;|9wz5LD(<UU?+RoYzVkVN8tQi@&g7Zs@l2hF>
zb5a=@#4v(F59ACsMg~R(W(E*oVPRxoWng0fg%CTG=3wAtU}WH8U|?Wk;AUZD;9=l}
Q^Z6K<pfdan0$>$_0Cv@3;Q#;t

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/CellularAutomatonSimulation.class b/build/classes/java/main/model/CellularAutomatonSimulation.class
new file mode 100644
index 0000000000000000000000000000000000000000..567d57479920f357e48fbf706baa0d786eb6d54c
GIT binary patch
literal 5424
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

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/ConstantCellInitializer.class b/build/classes/java/main/model/ConstantCellInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..ec55742e946b16cf50ef5a11937f55755134e048
GIT binary patch
literal 1091
zcmX^0Z`VEs1_mbvEiMKo24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3V)-29Z(9DV2fyyB9?yb|ZsoE*=*%#zH+oXo1!
zB1Q(Dl+?7u(wvg8#GKMpMg}1tbmOhr8Tc3(xS+<Q=HzfO@G=O193#lcAgY0>UNek~
zfrCMqhe3ovl#ziC<h0Dh9I*M0C5#M;8a}y+B}JJP`p)_JMJbtii6yDlnm!2gt=SpG
z85ty?ihRLpQJl;foSB}NSW;S)%E-VR5@OBBz~Y>rlFG=y?~|FA>Q|bZlv)&$n3Mzd
zPJS}T?xIW(A1cUFl95@=$RH216MN8DGct(zpy;kFNQIi9f?ummNQkwaH6sI?Mo5UY
zW*8#_S2EnIj10n9{LjdsMkrWdhN@#%h!Jg!3<AEXB^miC0f|M4xv3?oMa7H^p*A5_
zm@#IDDFkyPM)2Ffyq=nq191|_r(D7LrA5i9ZkeD!m%)+P^gwQ8P-Ng>U}9io5My9u
z5CWx921W)61_lNu21y2H21W)}20;cU1}O#xh9m|i1||ju1}?4b42)XZTN&6lGB7YO
zGe|QqFz_)jGcYhnF|aU5GjKA<Fvu`4Fo;1^GsrT?F@OLU)O2|iIR%gu14vF1ZnGi-
zBPg{(?G0jJ2AjmQn}Ih{YYPMWb_V_paGTi}7#SEC)R1iCf!oN#pv0iez{miykq4{}
zBnPq);zJbyM+OlFRj55qQ2()MX>Vf?LbrhzYy-p;HmD5<b3q~?bJZ9a7+4t@7z988
N2(d(+K?59|ngEcq@azBp

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/Lens.class b/build/classes/java/main/model/Lens.class
new file mode 100644
index 0000000000000000000000000000000000000000..17951f65fef571050f5a1eb8e8195c2317a5af66
GIT binary patch
literal 266
zcmX^0Z`VEs1_mbves%^XMh33j{FKxjeV^34Vs-`=Mh1bb#Ii*FoW#6zegCAa)Z`LI
z2IlnC5=I6Q4NV_(Icr7+&fv`Syu^~yqEto(Rt?RNU~5JO=3<ZrQ4LJ>nqiC#Y#JfK
z)*yz4O|TWF5<5&GMh33n{L-T2RJY8WR7M6)kYn{gZee3&U}Rus00AZzMg~>}HU>rp
eb_NCpCI$``Mg~p>E;yf?fe9+Z!@vtx!3O}t^E&YW

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/NextGenerationInitializer.class b/build/classes/java/main/model/NextGenerationInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..4f4fcea204b80f956aede3b129623b5a6247d9b8
GIT binary patch
literal 2425
zcmX^0Z`VEs1_mdFaxMlY24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3WF-29Z(9DTpkiW2wKywsw^lFa-(&%Df%%*33`
zs?;Jz2Cm}F+|nGdI3t6y4@A9lYEDjRPGXT`X-R%=Vo82pFkF!}7Xu#yKRbf}4}&0s
z5F>+NZemGMW`(|UetuC(W?o`RDkFn<eo;wAeoAIydVXGFj$dkKdPY)yX;CpFgOG-%
z57-B#C7C(;KAFWO*6a)-j10mELC2z^#7dA17lSYZGdF`cg9JN+BoBiWgES)pA3_~S
z2_pkXW(mkw`9+KjVkl;NLdC7Q8Dtsc*cs$`7!(*385x8SCcu<1GO%YP7K6eF9EMRK
z9m+fmDh#TO3@mx66(x)eA~3U&Lf)E-frCMvhe3lulaYa?yeP4NkwHVl2O~VJHL-|s
zF=#XBuruiLFz7MpGcqU=40lEbro<9P21OhefTI}{ZPr{2h73mR48}YRCLj-RAxvgu
zU`|ghVP`O7WZ;H~2A3q3q=JIjf``G9!HSWAIWZ-LkwH`g5=qFO)r{h1FlDgeVX$Se
zV`N|}El2@JwF*=zB0ixJjI0-wWE^-H92uM#85k?Tf$Rwi02dwxSCANgUTJPpYLS1M
zbAC=~ZeB4cVBL8bJQzF~8Q603Q%ZC485vkLJUul%K}LD=F!+G9F;;>M@#A6e2l04d
zh6Lr87lV`qg0f5yRAU&(%n%-iP=+u@20l=R$xO@%OUx-vbu3|IP{J3g;6SowXNX{A
zkbp+6FF4Jk<Ri}D%=Em(lG377Mg|SS*~lg&*xJsTkwJ|Jwbq(pj0`N!`6;Q44E#Qs
zd8vNj;0j4h%1LEp5c0`S26?3@6U2uKvXo?G7Bey^LLCB1+gS6zH6w!<s{YD?RHzwh
zgfzqapiP7yAZkG#;mCuO2Stnw!dNl}BLi15Qc)rdQ;jHJiWwOMAn6m4=olIJU<$#}
zRm{ksil)W}i)Ek~5Jgu9jTzqHlEma}-^2oFa7bWHBO$@oj0}u<j0}vPj0}t^j0|i=
zsl}x^C5#N}Sk*%;L(UwG3<AEXpyDzhu_!S&wImf(PI}k`TUkNFAM7DW_}O7<hxrO4
zNkVimGH?awmlh?bx@CeAiyY3Bpa&`!859{f7?>Cs8NwMD85lrS2m>QSBm)Bj6GIdO
zD+40~D?>B`6GIFG149x669W?i0|S@Vb_PZ*?X3*#8yOfFm>FUj7#R2%m>C!tWEfZ&
zWEnUa<QU=@7#PGLsu|)L5*R>$3u<~Iid+&%iUA}S1-Chwff1B#A@(vdGq5nQF)%PB
zXm4ZS_1(=N9J!rA)K6z8gBT-&6^kUxP6io9hM5dHAeIs%!vO|9D^^{tEez~hlC0Yp
z)V48bZDTMvz+k$Q!JLU9eEI(iAUSQgu<lL<YbJ&R45k|x7#LW<zL5gkr^LX@pv=I_
zpvs`lpvK_Jpw8gIpb7Sw2?HyGHiHyH3PUObE68PVKPE7wF{DC6EuA5Qfr){aA($bP
zA%lUL0pxE5a5yC}#4~{W&B_qXkj{_=SC!4c%#g#tz#z!L^p8Q5ok1LoWPdRjL8By>
zfdN$cFff86B#VI+9K<TS8TcZ#w=vj*JhqL&c?W}=_BIAD2+wy1gWGn70FdV(QN;$1
zXfv=!AW@_OcfJbL`5>qAfYpKIKu+ZVmCaCl6F?0V1_lNJDd_@RsW}XsGSUgl8CYc2
zz>@>03B$nPz`(-b2(|~}Z2^WnhJ0{z3osNg<TEfburTm26f)#9FoC_z!NBx~fsfIF
zQNWQQl%WU`{R~dfWXGnZy^SFl-5)|=^C50!gZcyEdXNan^~DSf46KX{3<98Z4N2W4
K45i>yUIqXcaXpIw

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/OnChangeListener.class b/build/classes/java/main/model/OnChangeListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..911bd1b42ef50503aa7575e78099d80a52850f4d
GIT binary patch
literal 267
zcmX^0Z`VEs1_mbv9(D#MMh3Cm{FKxjeg8b?jKsY3RG-Y^lGMD^B6bEAMh1bb#Ii*F
zoW#6zegCAa)Z`LI2A;CSoYGW?+7w0xbqybMHP)CSnqiC#oWYstd5I;ZMX8JooEjk^
z)*&I*AaM<w5Gza_c9=qp3|ztarA5i9Zkai$j0~daF4hA%gpHAbk%5^31Q=Nu8CV(E
Y7#JDY85kIt7&sW1pe#-XF0cqU0Q_1-*Z=?k

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/State.class b/build/classes/java/main/model/State.class
new file mode 100644
index 0000000000000000000000000000000000000000..622140212dccd9896917c67f45fc54d9c464c0f6
GIT binary patch
literal 1039
zcmX^0Z`VEs1_mbv6K)1324;2!79Ivx1~x_pzO2NuME%l|%p856%;FM829C^<)S|?a
z{31pMF%3;0gtRAA+?tz#gMpKsfs2QMn}LUsK?qX`BLjOzVzFOpMF}GVvxa6ANCzJe
z13!ZRBLhnwSXcyRc1~hmy1su>R%&vIH5Y>rgD^XT2oHlOgBT-&0N7+C1&j=AsfDG9
zImL_&q8bpVA<0^6MzJ$UFfwrG=BK3Q=m(c1mZUN=aHOY}IOpep{38RkGp$0uI5{;h
zRlguHGp|G+ENjikz!{vGo|jlsT9nGjz^b7c5^T-Lz*bt20yahkY9BnLtf66p>;Ogv
zDRgBvA;H#m))2#3lk-dSN*Ebbp^A{TLVSZ{x+fz8i*tTTDkB5GPi9`KUukYqYEejH
zQcfx(gOE>ta$-(cVo@fD4;AFhOU+ErNXjoQ0x3WbI%`G-)?!GAaKRN8GcpLETg=G7
zl$XTF!05@yAcks9WkD*`D&~+7Yeoi9G_5uvA=Y-*j10WNC5g$|zKI1;)rK}9RuHAg
z9=6j639*I<!+i}gLDQ3wLBl2(n;wXIWMdc^xPtRbi;`2_GC?831&(z+knh<T8N?Zc
z7(jr9g^@v$L5hKag%Okp85kL)85kIt7-U!&8Dtsc;Cy)oP6h=AMFu7YB?bnD0}M<I
ztPBhc+RV1vI~f=m8T@p2GO#l;%w&+#-O0eq$Y8~yCCRdlL2xDmTMHB8^8b%z)-W(I
zurMeyFfd3lurV+&=rb@e7%)gN7&0g`7%`|Zm@sHEm@=p^FfeE_urNq5@Gz({s4=jB
zEMZV*Py@M@L7PE?L6d=zfr&wrL5o3~fr&wffq_ARff=e^7p`6xu3nFUkwKq<fq|ES
b`7Z+}BRd0!%r6Ees4orREJFq(u)mD~w43kD

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/BiColorGameOfLifeAutomaton.class b/build/classes/java/main/model/automata/BiColorGameOfLifeAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..b111f8eac55b36b4303368595be3529e4f1b14d3
GIT binary patch
literal 1754
zcmX^0Z`VEs1_mbv4=x5K24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vu-29Z(9R0-7lKkAnl0<!{Oy~TZ{37?n+*JQG
zpUkvWM~F;*9wP%wQGR(bBLkx+$P7Ln27ZtM?8*5#rMY><><og8461}o3oc14N#$e^
zW)NX#5anSIV-RO#&?ich3Rr7MWkD(<1B;8RqYER0p$~~Vt+^Nk7$iXfCB?{KqCv8D
z%`h$o83tK)200!Ec?JboV3(F;=I93{=B4E4GBR-GrB;-<<d-Jpq=Ez7h0Xo}0~mn3
zt-`~g3i30jqmO5pYkZKa3rJL*hd~1*$^{X1@(Fe2V&GuV;$hHc&|zfYE&`hk4gf|5
zYYiW86eHPctx23$tU;#g@i6E!7%(#Mq@<=LmgbZ|jn&j3))00EBSr>sNYFc{=H!&-
zBo-m15>^dQPt7n!1{UZ1lvG9rexJ;|RKL>Pq|~C2L~x)8`Q#@j=7c2{WrFxnL6(w?
z%wk3cZGs+w+honiz@G;;*FVh}k_N#6?#al&0}~GdCs@w()V$Q9#FG3XMg}3wz++_K
z4K7Jc&h||#fI3DIPY{EH%bJlvz&EudBR?e|u_!S&wIsEun2~`W9)vJOoWYstd5I;Z
zMX8JoArPC9a;7!ZvlxMB1C_v?D<KxxSu-+l1?QI*C8xS&g3_Bj?(C}vN;HfNJf3-Z
zsYT8?iN(dK#f%J`V1q!pib0WqgMo>Gk-?CGi9rZdI503U2!ZlA0|Ns)10w?~gE0dm
zg9!rzLnNrgVPIh3*V@j&s3pCXfn7^xD+BLF1_lNu22-#$76t|eE(R6`ZU#;U9tJ)J
zUIsG;1_lKNW{@@pa|R1=j^GDd!w44RXW#)_Z^>W<wML(TkpU#fs<nlIcMaTdHn5-|
z*gzgIn-yvxBZD<o&Ftu!#jtADXE1=;Y|6k4Hkf-igFxga2BGZ?5*yI$mqs#z8*aZg
zgAUY)i3}_ZObiSR*4o<`q(vAMXUt&`K$y0iK@~$>c{_u|at2<AA~mR$%;4~pVqgP@
z9yfy`g9L*TgEE6Mg8_pIgB61U*coCFtDw$cV6bMeVX$RjWUymkVBlb2mJs)3XAlr@
zWYA`?XJ7(Hp#cLESPz?)_BIAhbkDJYO@#z58`M+>1_lOJMg|4}1_4I~eFjIUKlR~}
lw2eU*pE<BdVrFmx2c<KE3z&9ga090mMh0O90S0#mNdO4{dzt_M

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/BiColorGameOfLifeState$StateType.class b/build/classes/java/main/model/automata/BiColorGameOfLifeState$StateType.class
new file mode 100644
index 0000000000000000000000000000000000000000..87168efad86a83316ce8aebefcf8d0e18d12b528
GIT binary patch
literal 1381
zcmX^0Z`VEs1_mbv8+HaJMh5-d{FKxj{lwCe{M^KnM17}B=lq=fBKO4HRR1)e%(T?t
zlEji!6)+i6S&+)fz{tSD!@$bG#>l|p;_B$a$YAJ0q8Zj8LpXRCI6;PRI{J8qxyA>%
zx`0Hvc^G&=qFfMBC!bJPkT4$)13!ZRBLllin4?dqYcL~&Q8dZ6axn-o2(vQ?@Gyul
zh%z#;Cg<emr7|*zXlVLmC6*=X=OpH(>-#5Vr6!kHb1{fBNU$?V@-Rp-NHa3<Ar!dg
zmF6-su$Lv~l&1QpF*2BHAnA6_Nh~h5MiK}vDay=Cw??)BWB}NFSsn&C26;vXHk-`6
z%o00B1~Fu#pgKJ@!#EgNxfmE3WH}f(IT(0AOjRBRH3oH1aDbgr%*bG(p-FmxFfy>g
z^s_kUr=&76@cU%urTUfTCZ!gIBqrsgGBUVgag!#=LC?q_<ddJAm=l&*lnF8yYB)<?
zVs0u(4iUUiZ!<Co_@<U*<fjBA7A5AUmZTOHGcvH0WMmdIGH?cGrspM=loq8jGB9gs
zhA}d5*d*sb!_XNi@IfJML$X`#tQi@&g7Zs@l2hF>K|vsmJx}O?9L>nU;g?!m;*nom
z!p>mH$e>D8R$ye{@yyFhEdnQ(RIryoxeS!Q91Iy48N?YF7+4%6LAi{9!9fy~QNT10
z0~-T_fD|Y%FfcH%GH^0zFsL&yGH5a|FeouFGJpWrCI;SZ41xz3gf=iRFfcM`F)%Q&
zf#uj4I2oiEv>BMd>P;A!z@l72j9NPw#11epg48pisMld&VBmqMV$fyKV_;y=2ieQW
zz|g?JzywOY49sA|3>laim>C!t*tN7}wlm0VWB^Gc+l(-YoxuR)3$RI?ObiSH3}9>s
z)?y^U1xndaFX=O|fPBOt&bF6<F_L)`19NaB%O(c);7Ha@3|zq=_oDibgTa`=2&y><
zs#$M017oC+0`qnT#mx-NV2%<Cn8Oa{D6@h&Tss(4HZ$;oTn;f)2&|ujffpQVTny?A
k><lan5NDb&n1Y>a#$XPnEf}mA7#Kh~laaxK!P-F*04mcomjD0&

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/BiColorGameOfLifeState.class b/build/classes/java/main/model/automata/BiColorGameOfLifeState.class
new file mode 100644
index 0000000000000000000000000000000000000000..deccad94be2f23feccacec31ef8be7d551c509fc
GIT binary patch
literal 2355
zcmX^0Z`VEs1_mdF7%m1T24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3V$-29Z(9R0-7lKkAnl0<!{Oy~TZ{37?n+*JQG
zpUkw>;F83WR7M7#<kF&|)VvZX*U*P3eJWt(A(aKG)?5sH4E*d20z3?Y3_^?y`XuUS
zWMI!PO3BPi%mI7Dlbu0?kwF6CSKq{v<P6t}<kW(a%=|nq24My<P=JUtGH7Y|Ae04{
z6lLb6TO)~tWEAC>Cnn{jT7$wyl0k}{L7Im_hCvo;d|HKmadK*2s(wLYW?qRtICK~p
zSi?O$LtGgdq`)R&Q)A7^Aju%l!=L~%i8;vC1;kh4VNeF~S)6=AT{#)}7*u%})Iia|
z>FDDb<{A%H#>b$+!=MQg<${QU6mv0fFld8(q{GNyqCs-#Yld+%=rQQCGZ^qN7%~_!
zGH^q}9~?i746ModrFkWc464Xs1xY^8uqrLd%+dGBEH1Iu^aMHFgonWt<U|%1S4S6+
z<IH&&EEp^q8Q4k-Qot$35^5HbPU4(x4KmJ}hrx!ymXU!aFSVkCkwH^KlSs{s3@pz1
zDXEMM{63j^seYxoNvTC4p!j8E5c0`SPRt2QEXoA&p@J+W8JWe54C+K1&sq%05gh5M
zCD7C$qoIjA9WXNR2A3ozXZt1=K&|A;OU+ErNXjoQDrRI50PEC8gc2hIM^S2uGbBP7
zJsBA|lX6N^p?uDq%rY2T4Anc81*uT;Ezyj$A<}Pl*6a)cj0}9>>;iWXBLin}W_n&?
zNoi3kBSR8;tP*cH@iC}^ZizJ{e36SaYeohE-_(+f{FH#iqQu<Pl2lM=ia=umO{E7U
zM372FYiO8&GXU{^U}WG5&Mz%WPIb%7No8b^#$H_NfkKdxf!i;&xWqRVlmd$x8F)PN
z@=}YOa}tY-Q;R`?3Q9(xqLD$7frEjGfssLvfssK7R4g+vFt9N&GO#k}FfcOMF)%Q=
zF)%SOF)%Q2X>Dg<)Y9I{z`l`zfq{v^o`HdZkAWFXvM}&7a54xmI503Uh(S~{I5Idf
zfB+YRGXoC;BLgFY3xg}v%oYX~21W)31}m*C4D8z&cvmqnFi3(FgH2{&P-b9Y&}3j>
z(BI7<9LdPIok4W}CI*S+3_P0{<d!qAZDLT|z`(%340eMU11kdqg9w8bgD8UmgBXJu
zgE)gFg9z9yAbS}Yte|dj1Nnl1Re_V0)rp-!l7SJF&7m$TfVxO}Hv>l`$W@ydRF*Mt
zZemae+o!UfK?`9e8`$wONLENAS)t0n^q)b5fsq{)v>Xf!91INqL17HyGeh|7415fX
zpfZbr2^7YRY78u3U*v#n-^2j2O?wA}t}TSCzMVk}#I=)=O)z7DIL>$(gS;pU+X4nj
zkQy1;B_Ow|fZYmGz5%LgDTAOW3+sFaPOw^5tqma6n;49t-eCcUpc2T53<?bV42leL
z3`z{j3@Qx945|#C3~CJV4C)Mt44PoCnn2tL^(q5H4ud;`2LmGmKSL~oCxaIQ6N4Os
zAA>i87XvecGJ_|B4}%v23xh8M133O6>irlP89?!1!od2U!HI#Doq>a$!Jm<lk%5VW
z!I*==7!*`UqRbFcb_PCXQAUP9aQX-maAdGx2!@0mg8?*svT12=V=x0n5);^0Y~V;@
z1G^lO4%nbB4`E<nU}a=r5MU5+WUyffg(d-ga3W=3VAa~jV1>^dR;W2FQ1^r}goE7`
a!4S#708U4I3{l{;#>l|Oz`+phAPE2(Mifi{

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/BrianBrainAutomaton.class b/build/classes/java/main/model/automata/BrianBrainAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e49dc50401e419d81965006d5ae5af25e2c03ba
GIT binary patch
literal 1632
zcmX^0Z`VEs1_mbvS1tx724;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3VG-29Z(9R0-7lKkAnl0<!{qRhlRr=rBnJV%I7
zejXzOOHqD#F(U(`CrC3N4+B3)Cwp>!PHAplF*}1GBZC}HV}eT(OHw%*gc(HG8AN#)
z#2CaG88q;#Rsrh?sVqokWMFY|b#!55(DETxi!~R60D~kbFr*k6bTx?Ary0h@Aj2Tb
z&LGFbAkUxx3(3-w%pCoo#JrUJTt)`2ywr*km;BPCoK$dVy0F<lU;qP<4^?;=R6*Y3
z4RUpKiHr~Nk9YG7a^+&+U{L2_&|uJHWZ*6W8wB<rBZG;C4>+=rtgzN3;9zTzaoRi#
zIt;pu3_K~RX^EvdB~bH}GzjWuXV7P45Ql`Nb81dbX-;AhQbe<AczSAvF*2|?=clAH
zGVuFk=B4_T<|d^Ug(QOgEaa1)oR|}qSd<CkLj_q%GBS%98B}mP9d3m+BLjaP*g*d@
zXGr=12c#z>0}o6*2%OkB(^K<OixNxnix?S%FvE$Ffj77$F*(~eu>k4{MLeMi4j^kr
z1_9sHl8pS6fW)H2+|-iPqGCn{et4k46mbS;rspM=loq8jGWbGlM#@gsP+ww%o()t2
zOICuIY-i2Lz!jWdT9lmXmI+Eg5?C^u9w<dHGVplj<)s!m=Oh*vrxr6ZaDq($<p>5v
z1`Y-$21W)w1||j}P#$JrU=RZ3NCpN5b_PZURt5tGMg~I$28Kvb!N9=4z^}EPfl*6(
zD+9Zh%vJ{8jSLJ7ObkX~Z7d873|tH>4BQNy3_J{c47?1+3=9kk49p;H3?>Yw;Iz#T
zwuTWb#?Qb5w%&}v9BPd|10w@Sj#X<51MeER;cQ?*L9l^5U^Xk%Kt=`&teV-;HH%@@
ztizxSwb_(`8Ei23ZU%wKO$<WY86-BK*)NS`1UKA%4F*l95d{n^3``6R49eQu7^FoQ
z6lcs~5I~r=oPig@QHC1Lj1+DP4BQNg3=#}V3`z_NU~9x6MnSD%U{GeTWUyjjWUvND
z4U>c?JA;6LBZCHm4FeN6h71^(z*^X}w6`&+p}U<8Y$zn`*r0~mGB7Z(GBPj-FbFs@
t=rGtpy@7~>Z46rY%z?!LGlM-iq#PI=!L$>DGdL+QG6*vWFt|8K001q9SM&e?

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/BrianBrainState$StateType.class b/build/classes/java/main/model/automata/BrianBrainState$StateType.class
new file mode 100644
index 0000000000000000000000000000000000000000..b90471f3c567d658029f3fc5244306434ccf252b
GIT binary patch
literal 1323
zcmX^0Z`VEs1_mbv8+HaJMh1=C{FKxj{lwCe{M^KnM17~C%)~sWqQuO+;F83WR2488
zQdyA7$-v0K!o$GIz{beH;^OM)!pNZIL#$?NkZukh22QYUH_sqfkN`Ii0}n`mH^|k|
zB{Dw5KOQE-$HTzSAi&7Lt`g?x6Y3hw$e<lfyk%SrLJY#}3<5k1A`GI846MmH`FW{~
z3?dquK3R!niTXK-dFlH8Nm;4MCDvRF;tUe(43azyQVi0J415R$u6d=oj125$i8-aI
z{%MR1rW#1PopTb4i>;9af=h}r^U|%6Z2%bnHeZ&9L5@M5k%7%7GcU8mj*&qO*(j(^
zPt7n6239TxMh00922KtJ9uQNNhe3@&9TW~=XB0Cs=xS(^5E6_GY%q;1&iN^+j12rf
znR%&xrMXF|MInhvIjM{cc32#vNqk^4G6?zPCnx5FB^G6Z41}7>l9!m93X($vDAc2j
z3<AEXB^miC0f|M4xv3?oMa7H^EF~G4#f%J`!I|lKi6x~)sf-NF8k%8@3>-GeInYqE
zK?-hA*xC^9NIPpr2Cm@z(xT*4w@i?yMbOf@9>|%D3><!`#U&p3#U<<vmW&K?_>(sy
z1CM83UTP6IEu?~756Uv2%;I3cz{nuZz`(%bAPLGc3=9sEpu`WRc^KFj7zCt1DV%|U
zft7)iL4!e^fssLzfq_AZfsp|OxHd8HZetKUz#z1Nfq{XML5qQbfekFj$-v1V#h}f=
z1XgdtzyucM5@OWa!60^kff1yh2}QjQ0|NsOL=}TBgB}9|gFeV!Mh1ok1_mZj(qv!;
z8)nGB%)rdRz`(AhEwi0LW+MYg8rf!qN$d;;AYXt@;$&iA5MTgfL$DSj0WMIog?dS!
zfd%9v2648%42+S?n;4jbBUv^vum?x7ZerjH2Dum2e;f?P3`S7RK~T+lyBQcGg%p^#
zGbnCmU<PxPSil^1Fh`jc%;DO>pt6~P7vyq?nL=RwoD94STnthS+zjdroD3`s5NDb&
cn1Y>a#$XPnEf}mA7#Kj=j*-EF!P-Fr0P&e0-v9sr

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/BrianBrainState.class b/build/classes/java/main/model/automata/BrianBrainState.class
new file mode 100644
index 0000000000000000000000000000000000000000..203c369cfd1ed4ef9f9ebb0011210e865d14c136
GIT binary patch
literal 2908
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

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/GameOfLifeAutomaton.class b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..3c96b2f03c8035f191b87dc6b5a5e3606a912d7b
GIT binary patch
literal 1405
zcmX^0Z`VEs1_mbvD=r2m24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3VG-29Z(9R0-7lKkAnl0<#?#N1T>G@s10R7Z$V
zejXzOe_m;BQfiTZnsa_mX>MLIBLkx+$Q(W%27ZtsJTUp7{PJQ>20;cPb_QV{1`!5P
zMg}>Y76g|hmZUN=u(-H7x-c>*_~2J)&BY+jAi>Tc$-^MUAPw_pX-Q^|eo$gwN`5XQ
z19x6(MTt{>eoks)9@w){Ah*c!Fvx)%!s_Vb8Rp8xz`>xv!=T8Z#K^#11l9<3hlz#{
zIOvd!wALi-C=Lb{9tKqgHAV)Wl+?7u(wq{gc}f}tb+a>QFfxck{Oz2YlT(_LScDYp
ztQwx4nqiC#EYA5Usf-N#KACx`e&Co0NleN~Wn>WY$xlwq2}>->1o5GQEF~G4#f%Ip
zxSbBS!WtY(o{S8f>8W|CMTsT(MIb{lf`O5NH@GA*Iomg}0BVUMp1=b8-<pv@z&Eud
zBR?e|u_!S&wIsEun2~`W9wsnFoWYstd5I;ZMX8JozK{q&O1sujPhbR&4O9Y4x`mi*
zXU)jK6`WsMl$`382?{F-EGb(L<WmMk1`Y-$21W*T1||j}P_AHLU=RW&Yz77fb_PZU
zRt8N5Mg}bg28KvbR%2jb;MdyDz^Em?m4RJLW-9~lMg|53CI)S=HWmg325trx1|9}Z
z23`g}20jKI1_lNN24;{p23-a{1`yx}Tf+zz<7eOjThGm)548qFgXCDXwlJ`-fg8@o
z01^}e8^{A@vqBAIWZ=iDnHOENI9AQ73~ErD^%xkz2D5Bp5ZHibu?&)47P!TV3`$VF
zK@5xxObiSRg4){{#AY&ZZeoyG&cFsWh#4F_5FaRl4HAPWh8o1cAjn|AV93D8U<3|z
zCSE6Y20;Nw21N#A1}1Re8!#||wXkVvZ)1>0cO5&}P)M+_K@BxwU|?WnWMB|r5O8Er
eWiW+06cN1J7?kmu0}Eaz1~YJ2m@`;_X-fd$?iL0B

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/model/automata/GameOfLifeState.class b/build/classes/java/main/model/automata/GameOfLifeState.class
new file mode 100644
index 0000000000000000000000000000000000000000..5deca4a8a834ea425e2628858e28c681bdaff916
GIT binary patch
literal 2253
zcmX^0Z`VEs1_mdFP<93;Mh3au{FKxj{lwCe{M^KnM1A+f+*JQGpUkw>;F83WR89s)
z1{NL$Rt7dk23AKO&oEa;1_dAddaOa3ICvO1L7G@xTpe9N0^B?dJPf>y4D2dljy|ET
z!Hf)w(S!`*V&G>GU}xavVGv{xVq{=V&dJY9Wn>W1(DcblEKAhSNz6;v_fN`7O)jzK
zVh~{vWoHoMVGw7KU}WG!C~(ay&1Ga@FH6iRP4!P>WH8l0((Rm+SX^w4BoJIul$n=q
zjcfzR0I>N|JPgtdGK>stHko;uC3cJqV#r28b$V)saWcp;$g?vj@GvMcC^0fffZUQ+
zp<kSwnwP3ykeHcQqVJralV8Nhz#Qc2!pI;6wjY}cYmiYYJPfKJb6CSYJVRW$8Ppjx
z*cmi=7_=C)85y`CkpYe^P!Q#p=9Mrqs3JQI8bV-8^h--JbM$>Oi%YCEJ-HYd8FYCV
z^ceIR8Q4k-QW8s285xYAT9FhIjweP2Lmmbr24hABmb}!85=I6k4NXG2I2c$#4v^wt
z-~`bYJPei$R-gm|j;Ufs24xLRf=Pstfeogd#W_DEm63tpCo?bAuQWF)wJ0PpDJPYY
z!363faB_jh5<%B7G6?zPCnx5FB^G6ZjDecPl9!m93X%iGDI@_xO=M&c@J%hr$WIAK
zEK1BxElDjZW@KO~$;d2bWZ(?WOwUU!DJ@E6WMJ0N3}a;ANKY++rU4mfa>g3}j10WN
zC5g$|zKI1;7jWgJW~OH(<(GoY7eJ3xMh3pboXoORKZqib8b(h>1~F8>R2HN{O*29>
zz=lw)*;z9(gg^rno<xYyMMQwBpc{*l3!$l)k%7Y|IR~2m5+SY!M=U6p65$T0|G@c$
z2<40nT*3LJMaijdnV_U3f>u82fs%oPAp;|W2m>R7Is>zVB&e`tU~rHGm46Hj0#cx2
zkAZ=Ki-D8Dn!$>Jk->(6fkBCZkpTp_HZgE*W8gc$z`uckfq{|1mVtqR4J^maz{w!a
zV8_4&R&T<<1Qz8IV$|BfAbfy<5u~08MZG-(0|O646@vqVBe;-fU|?lrU}#`qU;>p~
z49sA|3>laim>C!t*tN7}wlhd>WB^Gc+l(-Yoxz!b4Qdi669a<)0~ou2wYV}cGPp6g
zL%rkyb)ulwCI;qZ44j)7WS29rZDLRcxs(~nrGg9y^97;idw`t7z{Kms&LGFY2r5Z%
zn#v9~l^NYsG5n@7GBAS5IcRV$Wncn_fYBxfX6+peYPJwJi_5UiXW)=wTL5xBGuR&X
z4QN~j1_l<eXM`A77#J9&88{eZ82A}v8I&31!A?+sm<;t81A`HRCxaIQBLfG67K1l~
z4+9f}FFc|^a()bq3?T0dGO+z&kYr?aVrO7v-~yA7VD=YqWYA*>fI8iPfr)_$luER;
zw=w8|LIGDQV1qiri2;%d1Q-My8H^Z&pdqWz016WZ23D<Y3<mhjVTG6@zy&Iwp_(<p
zo@ZbXWZlca7|FbefjKymWfKE?FvuX(WX!=3$N)+ypk!|g)uy<cfiY6Zgn2uI>1GCI
qFvpAq%wgZbV7{4w3zQ}y#&Cgs%fleWz|FwK011&GhG1|43;_T+zTRR0

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/view/FillingMouseListener.class b/build/classes/java/main/view/FillingMouseListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..ffaeff3f2a438e650ba84b4f68dc00cca01175db
GIT binary patch
literal 1496
zcmX^0Z`VEs1_mbvPc8-~24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vqvdq+SeYeb<oXos*-~7_zRG-Y^lGMD^B1Q(b
z+{BWi%nC*ZK_9RxUobZyF)!5`WC|Y-13!ZRBLiD;erZv1DkFoi4@85$bAEnNN@iYS
zNvbs$gAju-JA()hgDA*#{AdO-GKdtV7N?ekCuWvp=B2~z=3)?MkYHz!<YACvkY;3%
z1^FqhLccgUH7`{^Gq0euL?7%{*Rs^S5=I8$%;JEe%-qDHN~hA2lKecE{PH}oZ=*og
z%knVDF~~DA@TRAhIOpe;6y@jSfV?NEq3M$h=j$V+thpEz8I;%=lzA9b7*rV<M6s%Z
z7#N(HTbh$tl9`{!$be=bLdu$(L7hQ^ok5d_L5o2f)j)(QMh2GT{DMkG22Bkt0f|LO
zGYn*|E)RnqgFYhzOI~V42_u6THqDx0TnroxhM**3#K@qoff1irO$P;@2@iuQgBc@(
zKyhjbILKj9#K<5HGX^=;SZju{GgvS(2tgtmS&ET?#W_DEm63tpCo?bAuQWF)wJ0Pp
zDJPYYLC7aRIWZ?Ju_zP7hYGTkWMmdIGDt%li!F&-Gcxe!=YgFSl$w*8Se%-|$Y84B
zgEzTYWA!T|18XWIG079q&d9)(3{T&T417=rxaO6l7J=;NPDw2;0VRHLn&1sCNlec6
zO)P+V3Z^`uD76^uT&`en?s3Zmg@YtEU+RIp!=T8(!NA18$Y9RE#2^I9y9^8rLZA%D
zz`(%5z{tSLV8p=4V9CJ15D6*}7#JA%wYD=bYH4p}VAs;w%D}skfq{XE!3wO6g@J*A
zn}LOahk=uUmw}IgkHMOOfkA<R8KjNDhQXEr1o*+$FoMPS83e%A+cDTft?^=D1gq!J
z+QPuTjX@A$KBz<jIgXt{7|C1?xVan*4h)VAAagkwoS^19!_BQ`U<RA3qP>klY!(AI
z%y<YbvyDMPYYPLf&Q1n3W(JU*%wRu>F|aZ)Fo-j-Ge|J-F-S7-Ge|QiGsqy>uL8GU
z1#Z6zgA3SxR|W<KW(G!n21W)qxI?lSSRoEU*sQaYL5GO}#NW-p5ecGowlf%PV=x9e
d1QNJ>U_A;90t|`_$_y$59RLdecX0H0008VcRjdF2

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/view/MatrixPane.class b/build/classes/java/main/view/MatrixPane.class
new file mode 100644
index 0000000000000000000000000000000000000000..e71edf9e42a89e51d60f855bc014712a5d5c69c9
GIT binary patch
literal 4821
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
a%5VZIc8cKy!xeB5&d6|;;X1=j21x*in6z2|

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/view/MouseListener.class b/build/classes/java/main/view/MouseListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..7d2f406a89b8b83f99b4c05fd3ad312a15e4c244
GIT binary patch
literal 604
zcmX^0Z`VEs1_mbv5q1V9Mh2m>%+zvy-~7_zRG-Y^lGMD^B6bEAMh1bb#Ii*FoW#6z
zegCAa)Z`LI2EP0}u)2Vv)Z*gQ6h;P94IhxIv<m&=<kY-W{mi_A(h`VSu4SotCDuN<
zi6upu75dKk`9&$2d5I;d)|z3A3@pz1DXEMM{63j^seYxoNvTC4iAg!Bj0{3P`N@en
zVTnbVAU;%(r6eP>n2|xm2h*k2j0~))Ae$H&<Ow*1k%222?g~Z*VJuE#WZ;MTFeo)A
zH4*GZn4ewqN>YnJe&!0!FD*(=b;|_17aSh2aMJ??1{(tdBLg!72rx4+GO#kRF)%W)
zGcYjNGcbU~88<R8FfcK2Fff3n7#KJhI2jli6d;leTnyYGy$p;DJPf=Hj0_;-_!#&Z
cm>3ut1i(7*8pcVqVS<DW<09HHA+Vo>0WJ)9%>V!Z

literal 0
HcmV?d00001

diff --git a/build/classes/java/main/view/WaitingMouseListener.class b/build/classes/java/main/view/WaitingMouseListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..64083a4e18615676f6bf8aa36330d3413b35f0f5
GIT binary patch
literal 1047
zcmX^0Z`VEs1_mbv3oZsG24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vqvdq+S{qV%hlFYnx-~7_zRG-Y^lGMD^B1Q(b
z+{BWi%nC*ZK_9RxUobZyF)!7ci-C`UpPfN~he41*h>?LGO`ef~H$An)IX|zYC_g6$
zWR|3crcW}QuaA(j=3)?G5M^f&<6#hIkYHpG#i|NoU~pz`X-;BEW_}(c1Db&dDQj*9
zDF$hF1{od(Sq3>&0}-ki8CddCD@qs{#58;$-qd%_&o4^J%u6guwbl${XHb9zj$39<
z4tn5lF~~D0fkIrFkwIMpBY3bH2?{e+9tJfAbw&n(;?xqf&=!XogB%H9muNCF2tfiE
zS&ETC1f~NKFPdSD3@pz1DXEMM{63j^seYxoNvTC4iAg!Bj0{3P`N@enVTnbVAU;%(
zr6eP>n2|vm;s<OA!J3hQFFz0L+JK_e;^Nd4Mg~(2A5c0=tI#h_PR&cz&&(?*Ezt+7
zaV<;DE3w8J0*nl-sUTTK26+P785y{e;nBg!AdJO0Mh33n{L-T2RJTl!=OnQ?T@U0)
z1_cHV1||kZ1`P&A1|d+gXJBApVqjokWzb?^WYA_{U~pq#0*i2IZD(NA(%#Czz7ecO
zhk=2CkAazifq|QWg@K2GlYy5(mw|yn45FGrk3pXS1h~MaGBPkS7%&(@&CFt81?yDN
z+QPuTje&O?gRss{21zCc5Pvs=d?bk0+0LN2jX?$7HbDjf1|bGz24S#m3J`PPwy7`}
XF&Hy2GB7ZxFqklyg8gO&cCR@AU!4bz

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class b/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..68d6c495d3cca668e33baf2e77b714a356ce191d
GIT binary patch
literal 1489
zcmX^0Z`VEs1_mbv8!iSW24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc2Ep9KlA_ECeV@$Y5??Troq>yyK>;f4oS#=*l9&gT^32OD$xO`2
ztV%87VBle7V2t2m;AG$f*~ibwAgbYmZlkqk7#9OOgCIzS5F>-UhNq_w)MSWdNG3wn
zitsRqGKeuUFsG-MFfxc~czSAL8q38X!63=bAjQKV%^<_bppajbuAfz!msz5pRa%f)
zl3JvnSdgjjSX`W1RFavWSIo%3lL+Rx7M3RF6f-iYV{t2{H6Yi^G03wsDDW^SGAJ=J
z2qHY_nOBmUo?67nz+RS^Q=00Z26im6TcIkfL5@`cxm1;rL0rQV$r_jnP+X`pGN?d<
z24|p$q!yPjGO#%3r=&76@cU%urTUfTCZ!gIBqrsgGBODH<R>TQge4Ybg7{EDmXeIj
zVnzlvSh(Xg+?tU=vm_Ok65x@O2nxjT%#sY4<}i?#85tNW85tNo85tNW7#Y|gj%Q>L
zhS`KjQr3(NVyJGbEJ%gAPaRXa4N?#VmlS2@rCZxsGcxc7mn0@<`z97ZbxH=6=9OgT
zriNt}XC~#OI_Bl&mw;Vb%*Y_)gFQ)rLeQF#L5pZl8Zk0x;CCS`5<yPn3eGPrN=|jl
z1Vx7uEVM9^I>;4zprpj0z@Wy!!~g=!3=E)b%fQH>!N9<v&%nsQ2ollS&cL{lfq{XE
zL6d=jfekFk&Y;D>z`z4$vodHi=rAxaFf!;eurV-!H6LMMXJBDqV6fcHz#hrQwwr-7
zQiyvy1MhYQ0Uu^t8MZ|Xip+MhY>OB~gt)b3WVbO0?_dybVP;(Z|7{Bs<MRIxKo+uq
zEtF$mXJBC9Vi0EFWsqXvV^Cz^XV78bV=!XiWw2ln0y{*DfrUYaL5x9<L7#z{L6kw6
z!GJ*@>?=#C<AfR17z`PV7#JChp$><Lm@qIhm@+Uh2s5z!We{a&U}yZpz{dECLG%{`
zD}x!-zvf`yS-^dF3hFz1u<tlPz7yct!61v`K^0~@S&l^v;sQJn4<2BU+rgj=_TwwC
zAMc|3QH(*1L6Sk1L5e|zL7KscL5jhGL6X6aK@RRmc?L<SA0-&n;C{4+`caHQ6U~nh
U5ldu0N+A3wf$2vpa6DTB0I~RDiU0rr

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/matrix/CoordinateIteratorTest.class b/build/classes/java/test/matrix/CoordinateIteratorTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..726626cbd0c42359664ea1c0e92022b195dbd581
GIT binary patch
literal 2264
zcmX^0Z`VEs1_mdFa4rTW24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc2FcvSlA_ECedqlAqLj?M#FA9clGLKalKdhr26hH6kWt)>46GWS
zo|<7G5ndh!J_de92KJ1^V!zai60lKGTnvH?LhKB}JPaZXqKpg*`9<maS*3ZICHh&V
z1(_wOMf!;anfi{!#i>OlnfZCej11g~V2)d2PH`$D1B*r!$ap~paUKQ<kO^E6>5!t*
zR4xW725EK%86E~%202CsK@0~oGBD+*F*1mQ+~|WLYYlR>0uO^CgAyYHOCH$Cq8gf5
z6$&z_@Gz({s4+6|K<sxdEKSTQW@J#;@IenuYfKSPkZLe8D1eogmSpDW`{f6hCTF<j
zq~@mPmAF<Urxt*`&&8m{pv}&p!^5D<pvTA{h)@rSr(#A1zM|B^(#)b%zx+JE(wrPd
z1~n`$(8P3t5Ca2)0S|*AgApSGdul~$a%o8_BZG$qrgve{Y^~{oJ+{(H^O8ZX)prFO
zlbDo~Y7L5K6CMUr1~YgNg=7@vmlrcK1S31pIVZ8W*qQ``k-Y*o5o{ehg9RglEJl>V
zoF0-|T*An};+&t7%E-X)lbM(5SDKrYS`-4(%*Y_*lb@WJ6P8$%3F1QqSxPc8iy0Z@
zaR&&<RBJ{Cxsuf45|~ZlnI#!fsYUrNnYpQX#gG)t0ZP}PjKatujoUP9Mh3~C(!7$)
z+|;nl;>@I+RL8u${E|da$QCm)$lwSgs3T<19pRss3U>n|gDkpqNI8lVxq|aci;`2_
zGILTH8Kg0@ILH<~Q0il35OB)RFDWi5N-XeAEy>7FDHdR0<7Z`%=VxQ^=3?++@MUN4
z<6-b;2w-GT0_lL1E17v^`Pr%ZK8d+WDT%(RC5dT?$tC$km5dDBxyZaT$cY2031W{&
zVqQv4YO#t>etvdo0dl4aE-A{)OGg$#(HK%$kV>8;#7g{nk<%m8TIa-^oZ!roRBJ{C
z9?!hI)FN;qPc3F=2xeqZ#RwB@-eYG7Wn_@UuauF24H6a%3Jm59Obj5v!oUD3(is>T
zEEyOW^cff#7(pUh+Zh-)GB7YOF<3D$FtC9IIT@@O7#MiKY*q#v23rOO21W)u1~vvJ
zux3977O<g0yBXLcnVGjUaQbL(W8m4rAb>E5kAazifq|ESi-C_pkbxg;q8LOM)I=@@
z4hDM$2L?t4N2twCV0)b5_Pm1H(*&}Ig9Txa7&G$@21)I04Dve|lp$7&v0w_ZVhXWg
z3bA7d2?(icNA6(I4By3|&%m&Q!8jb@FDnK<1_lOU1}+8>20;c<23ZC%1{DTz1_K5O
z26F~U24@B-1}_F_hA;*hhFAt!hD-)Ih5`n8hDHVjq%dfLhd~9_FmQo|0V69k45os@
zfQ^+JVZh9S8F-jNtQbQ0g2jnJfPsNQg@KDfl|hg}jX{<{ok4{`gTa77lfj%pi@}*e
zo571gharqXmm!uxk0FympP_)kfT4!LkfE8uh+ztYF;ehMg$GYJmf&G#a0Mq=HwJfT
fGWB9$X7FI}Wbj}JWME+6VqjzlVhCXfV~_*@cThc}

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/matrix/CoordinateTest.class b/build/classes/java/test/matrix/CoordinateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..63b163c4471cd67bc637bc21add03bd20f45e960
GIT binary patch
literal 2758
zcmX^0Z`VEs1_mdFC@uyj24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SE(Q(;PId+^9tLg(9!3Vi+{BWi%nE(y{QRPn%)G>sR7M7-{4_=eaScyT
zO&<(dYmk0E9tM5}0Y(PK3b2`;Tns`C!t4wpJPe`?VvGz5`9<maS*3ZICHh&V1(_wO
zMf!;anfi{!#i>OlnfZCej0`-9V2*2HX<|+>BLgeQGO*Jmco-zXMpuF?lICHMVUT5H
zV97~MD`8|1)xhN<c^(D@kV4j?%=C;BkX9ug24%2FVp4utDo8|?hd~W2l9Za0Uk(z{
z;9<~Y&|+i|$uBC&$WPDDOU&_0%}mco$}cS{W@Hf3(DVU^W@$-gj=oQ3afvlIgARi(
zJA)n%gFeWWe5lfl3@pW&RjD9FhCB>L491KM9Lf24C5f3JKZ|NWOhbwrYt1N7*qQP$
zm@$|$GH^jcC8Ve{m63r(BMKB-LJXEX3|1gnZiuW~VoovGKQ=rJwjkFFrDP_exgF#=
zdmaV{khD11bC_z_8JrjyL@^>bB(=DNk%7fIKP8osf!`-HFV(L!Hz~C!Brz!`m61Wn
zCqFqcCoHij6U2uKvXo?G7Be!4V<s1nY1WJkVkN1?C5R;ET$Gv!N(hV$T**l3P8d_a
zH6w#$P-$LCW^QU&W^raxPO4*GUVaH!cQGS_j1Tst2DO$0WUUW4>2QLWL7>FJ$N*+L
zf|3Q4?F32?j0_SWHU3zW0#_bVx)6ZGBO+BWGKirDOJzYSG-y=O)Y@S2qa7@STreV%
zkwF^nD9k8iWZ(+UFD*(=b;|_BjW8mFK>?r#N}LRe42}#;3?RVCzz8ZL7#JCx85kJ!
z85kKD85kH?wYD=bZe(C!U}A7#U|?Va3vx2JGB7akfZ41JZVc`W3=E769t>;@OkmC7
z3`}4{#o5?*FtGcuX>ViT-N7KpuDy*xd<TOd!Z;xY7O+8V47?0{415e?4E$iD#UR?D
zMzb*pGI%n0F)%WCL!ICQw$K-DVHT*6V_;yAfmo=$jX}znRR?OT4!W&k46F<c48ja-
z3?dBN45AFe3}Ot@4B}v$6&RR7=D=+hgWAl^AjlxY;Kjg%<_14JZjke3C*THY1~vv6
z25tsf24My{25AO)f^Ja2;s$>_Zcy}PgSvqOM>r@mura7Ga5Jbf2s5ZLNHeGtbb~S$
zHw55ug9_XYAh)2V07zVDGq5q}FmN;IG6*y1F-SA$6Lf<b7B>XK+`uTvzzmMZiSYEG
z?#r&TlR=x2VF!bt4l5{G?qo1vV%Wi8qQj2DV`JOFzz&yV<3Q$VL&Yt0SdjEs=y0I$
z*aVP_u+U*+K^S2HO8U&;oMgtp%fP^3%)rKA!oba7${@;M#-Pk#&S1!3!C=o|$>7Ui
z#SqS5&5+7q!%)m%%h1GN$1s7x9w}fZ!V_sXJdw6B1Th3NFfoLHvlSx)Hv>o{6eHP&
z;Rz~hl%PWLi-`_93Xc^faM)3J)DJ3W1~vv425tsd22ln#24x0!215o9273li244m*
zhHwUNhExV0hGGU^h9(9-h6xP*R0^tacu++_Q`ISWs<QJH;GjHNv7&_Pz=W|IgCGL~
zLofpyLkI&mLnwn7Ll}b!LpXyGLj;2ZLnMPALli>{Lo`DcLkvR&Lo7oZLma~dhIoc~
p3<(Tt7!nzFGbAybWJpE|^HcETc?6z3_hTeakO*e-i~v_SkpPZY|9Joa

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/matrix/ListMatrixTest.class b/build/classes/java/test/matrix/ListMatrixTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..e48a67570e2d180438a6eef961ae2d081b5b1af1
GIT binary patch
literal 4407
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

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/CellTest$Change.class b/build/classes/java/test/model/CellTest$Change.class
new file mode 100644
index 0000000000000000000000000000000000000000..157a1cd689f6cfe25f2bf1c2c11a16661f88fb3c
GIT binary patch
literal 1891
zcmX^0Z`VEs1_mbv4=x5K24;2!79Ivx1~x_pfvm)`ME#t^ymbAb)a3l46h;O%o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vy-29Z(9DV21oScx<;u00-jKsY3R7M7l{G61q
z#GKMpMg}1tgpvM9S*gh-)*wUpco_IWCUE4XmV;FaF)%O)@-PT72s1Kpl;j7O6lLb6
zGcssv_+YieS`*1!h+=Dy5u!W{VhrMp3>+DW#Tm}|DXEMMQaFw91nH3EVUS{wW@KPX
zEi6sUDQ0BQ!KEI_MyO9TqZk=DgEQ0f5=%;pQW+VTLqe<>8Pqi}Rbq;0hA}d*KwQZ0
zlbM(5SDKrYS`?C)lmia6{N%)(u*9NF5FaYYQj(Eb%*Y^)BSaV(#C%Y6RTiW|b;@AZ
zViOW#ZD-BMAmE!?l98VhkXV$Mn_7}uRLsc0sSy%l9TH*<a;1m{mcRz52Tw)@Q7oPX
z1q)+7BLk{NXqYiFuxe<6!%4#?#0oQ9?2v>YY0#RHfh#z_v?w{%EfW+tys-492TEFu
z3><!`#U&p3#U<<v#*7SnsOg1~fem5`BZGibett=DNl{_}#J|NH4Cagsg0Qq|4NHpr
zj127jj10W|Yz)?13^ok5><o514E78Tj12N18zK3ls5Gx6GdEQq;w`9&j0~JfFiRL2
zHX?^jW?or-cB(!^p+{m~N=|CAicfxic4>h%l9!=r8A$}HF{H8})g`q!xhS)sB)<q*
zi*rt5aWS$0)Qo6MLy&Dp$wClcSTi#4c;@A$7J-dSEoNk3gJfxT1{X#KRfOlEZbCK=
z<{5SdH%10I{7M-a*dRV<Fks+dU}9ikU}6vg6)6mi3^HJzEQ1iJfI#B2F)%T(GRQG7
zGsrVAFcgEzEd~Y#ey!~cj9S`T8Q8USwleT;WME)mW>8>YU|?flWME+6WKd*aU{GLS
z1}SAwVo+uP0e+}e3=I5WOPCl`P*kac6fuBQ$%0J*sgh-2Vo(E_$i%=6HjDx4QgsGF
z1|bFw21c;EoEaFwTG+LAF$gd)Y{2Rs9*7dCdq8$0L_l^6GKeu~VlhyJfng1q21+q#
zK@Id{U;>9YhnDs(1_@jyib2#soyfqz!Jy3mawNjB91KbfAjdK?a5LyIFoAvV2=zUy
z))oeKe12zz8jLUwBmy!H68*Xij12r(jpe1xST<;^=`rYo)0qK-A(%E|FkxU|kYfPF
zF36t{XUKw+2O>?HGB7akF)%V%F|aUjFqkn|Fjz7;GB7X*F)%T3Fc>j7F-S2uGq^Ii
HGe`medCPk-

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/CellTest$MockListener.class b/build/classes/java/test/model/CellTest$MockListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..f1ecf9743a46724e3c8ce3dcad35eb28d23f3ede
GIT binary patch
literal 1329
zcmX^0Z`VEs1_mbv3oZsG24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3V~-29Z(9DV21oScx<;u00#{N!w(%;J*NywoB_
z2CkgM;u7bK#Ju!WMh0;oG_?>3Yfc6}27Y!10UicH1|dcUQLL&M894HDQo<5*N>dpb
zgnZB)X$|s)2oHlOgBT+NTWVoxVoot5gQy0kLd__UeG)tjk|4`C@>0vehH^3RF-U`g
zK!%Y)9g8+B28FRR$T2dAL7eNK2k{NU@0`Jz>3NAIrA4WX3^LfgZW9t>ZD-BMz~Y>r
zlFG=y?~|FA>Q|bZlv)&$n3MzdXnt~HPFP}5CWsFeWGTtWEM{boMK=>U=&czU#C%Zn
zRu-f}^(*1i2y>D^az<)$cCimq{1F)}QH%`CAtBa`47|Z5iOJc%i3L!5IW<B;tV2Sq
zHKQ0Ac*;OA2???kMh3W47$bwLO^6j{Xxm{5LA`+<@-QE81?QI*C8xS&f&!8kmO%AD
zDTk4P!!NbC#3R4Bgq^{Jk%12qhcGpa3_PBBd8tLtIf=!^sl|*8Jjg-I$iN11H-iEL
z2LlrWBZDjhBLfpCJ1{UZ$TKi7Ffk}FFf%ZL@)H9igCYY1gBMsG0|S@Vb_PZ*#;pwO
z8yOfFm>HB97#Kh)7eul!a5E?~Ffi~iFoH!@7*rV;7}QWi)EO8U7#TDeG#Qw{<}Lx{
zT?PgQO|2~q?8g|CLDUuoUhQoR!ZR5}Av|#%Fpr&OIRgvx8U_Xi7O=HK3@i)`pq$6R
z&mhYnz@Wjv2euyMbOr`Z28i__mLP)=*h!k8EW^MAb`nAr$Vm`YT5wfb3``8#3=9mc
z3{2_{urSeKU}Vr`kb%0qjDeMb8RP)1-3)w@+B(}Aq_BjFC<8Bp7?QL2;LhR$6&7F%
z`7oRXQU!4qNEO6cAXOk|LE=Y`fdv{<`V0o(7&Bxr0@KC}rVI=WLJUj{91O+`W(=Tm
K!I;6EK?(qg`w}+*

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/CellTest.class b/build/classes/java/test/model/CellTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..96ac0850eefc36f40672a3da70e0da97a743172a
GIT binary patch
literal 1586
zcmX^0Z`VEs1_mdF04@e524;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc2Cm%vl++x3=hU1WE(R_JZgvJ99tK_pK1K#Xgm%xolGOCnB1Q)G
zvc#OyRR1(a1~Cm!O&<&u)?5ti3<4ng1sNGcHINiQTwo2dRhW@M8ewZlYH^8*Z+>#N
zPiApRYF=s)7lRN3Gsqk<9tLp+2}TCt#FP~OJm-wWy!2F<B1Q&j4IhXh=u+02VIbX7
zJPgtdf{YBz#i=DABV~CQ<QU``83d9uQj@cbeG-dHAVxAWsAF*`7N<vXF(@)9u`?+1
zFsLx7GBPOS7p3cGmF8uZ=x3D{WR|2B=_eLs>N^$}rxulD=I0eNGH@k=IUz-*sf-LP
z8c`6Zsq-*sFlaI|FsG-MFfxc}AO|EgoIqA-^DyWz=rS_!Kn!s$EKSTQW@Hf8@I-PP
zG-|9h!#Ei985x+}^7A<u3>g`iof3;ch8TkkF(KNIVeAZMj0}8`kOd_QQ1mb|usG+Z
zq%tz_`();&`jzG;r51%GCgr3uG6?zPCnx5FB^G6Z_)tNXl8nq^Mg{?B1i_54W@L~r
zNi8k`@xwsr2onC`nI##BXk|%G&B<Y8;6c)B&B(x$i<CeZ8Dx=UK@LPoKh}&4VyLdF
zEJ%gAOc6<=4VF-}vu0#4LQ;caI4(_+L8W;mnYpQ9nZ=n&IjN3$dHE%Y&_p2PgFT^u
z47X-v5Ql{cC?N7nOAuk9faDTni-SvwGV{`{L5}4L&Mz%WPIb!!MFuY@WI?9tfifl|
z1Gislafxp#D7uQ-8GINSL{Z~a1rh;_3_PBBd8tLtIiQ4A%*eoloE;e%*dWRn6c|hy
zm>58SnSlXR#4s>2m@_ai=rb@fFoHz1wlgqpWME)mVz6LfU|<6avNKpRFfj0d*{lp!
z4Au+`42%pm3~UTcV9lEum>EFEIqqg)j}*|_!N9qlf!}90gHYsl1`%Ivoox)F+5*Wt
z7&x~vNa}#)p*)!#3<?6t+S?e^4lr=-V9)|t%nY_zj)9$lfkBFamqD6AltG3;ib0k^
znL&=hgh8Icfk6T6AO(n}PzUicm@wEf*fB6Nh%)Ff*fTgVFflkXFffQQFfl;noZxcK
z3``6zQ17{dJ>v%VOb!DxIE17?o)OXm`9xdDU>k#^kO9b{I~a@*t`uTmVPIfTVc=p=
zWe{LcV~}J}2fGYpC&=}XpyFZ>fVvFi9#AksMBEt|QCz{y-~kSJPX;fr+n5-H7`z#L
Y85kIZ7(i@O20sQa25$ya27d-A07RB^Z2$lO

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/CellularAutomatonSimulationTest.class b/build/classes/java/test/model/CellularAutomatonSimulationTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..ecd256b8cae328dc724826983104dbdb5bd80c92
GIT binary patch
literal 7578
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
bU=|l6HzOaTECT}r7Xu@s9HRoG5`!cFT@>bq

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/NextGenerationInitializerTest.class b/build/classes/java/test/model/NextGenerationInitializerTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..0b3ac025d7de6c0ca6a9f5ed08d5da72bae96239
GIT binary patch
literal 2997
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
KtY`q|@kRh<dflY}

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/StateTest.class b/build/classes/java/test/model/StateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..9ab291094ca0655876b0068dc5173d6e71109730
GIT binary patch
literal 1913
zcmX^0Z`VEs1_mbve=Y_l24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SE(Q(;PId+^9tLg(9!3U1gmTZklGOCnB1Q)Gvc#OyRR1(a1~Cm!O&<&u
z*4zwy4E*d20z3?Y3_^?yd|(x&C7C(;KAFWOj0{ZqX^adx8b~@JPO+wz2-Hz<E3LU1
zL>NTb8N_%P#2F+Q8Mt%vQ&MyEgG&-iQW+Uolk-dSN*Ebbak>a$kftXWgA{`_JA(`l
zgDis_BZESIQM!IsX<lZDepYEgW=U$1equqUzGHE5YEemMeqJ#n15YBD<62mnm{ZKi
zz^dWtsTsz>puot$npjYflgh!M#K^#wl$e*8m&n1O!pOjuoRL~oR0#@3HBcC;GcpKi
zVEBp6L4*MexEQn<bl4emK~biM62mU}rAaxdj0~b0E>P{@h=&MUb1@h&7_u`Mf%F+O
zG6;jC39P_5Be5tkxdas15*p6PTH!L_NHztz&Ww@4182yAjl&tcP?HhC%g$iI$iR;j
zJ0Yo{1jFK-pOVVR!0(fpm+DuVo0M7<k_h&gkWYScVoq3MQ6`8F6=W&N$Sh`L5cEMa
z$C{BrswB0z#2FObzNsY{`6=O<B^mH^&6Ss$nVyl9Us_bm$RGeoiwLJNGO!h;7MJFf
zFfuTDGBSvv+FV(X3bkDoO`{Ej4-N>ZRn~Uaj0}=NrFkWpxv629#hFPtsg8Mh`6Y?a
z6eHt<Jyn511Edv;FM>;oGV{_I8B`$F!QG8)Jwy%Ib{Q;2xaJm=R6=qnK2xBn2jmA;
zET;J7`zDqoXJqE3yXK_krskCtGcu^-aTFp&flTBI&Mz%WPIb!!C0jml1_gOq50o|;
z6d24In7~P%m4N|NoG~ymSTZm$=rb@fFoHz1wlgqpWME)mVz6RhU|<6aaxqvlFfj0d
z*{lpU47Lmm42%qR3~UTcV9m`8tPIQy3=HZlI~dqmcQCMnXf`OlgMrrv#Mj=zAZ*Jf
zvx7krWIQw2cp(NB1_lOR1_=f}21N#b1~mo&uvH2W<DgbaFz_?jGdM6XGAJ^zF*q_f
zF)%SWLmdQ>b75d)aD_V84eU5~xZ}#9j*}LW7g7|G7g83I2RTVd9=C%;82A`O8AKVx
z7^E1)ksKrqbr2r|FVsPz7!HESd0;rm6YiiwP;J7%z#zJVLDffuL1PDl7T77w*uqAd
zfrUYafuBK^L4-jL$tj{xr?4;xLY=~o;S`9R7lu>3;ZCV%U<QY@vOwYv27Q4f5Rtrt
zL4OB>iH|_V4hDVP4pU+fW>993Wl&*IVo*hLm@?F1!VCgXhsk0%3?k=);V@rty7L17
D%ap2p

literal 0
HcmV?d00001

diff --git a/build/classes/java/test/model/automata/GameOfLifeStateTest.class b/build/classes/java/test/model/automata/GameOfLifeStateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..b6481aff89305022764787fb753baaebf5663fe9
GIT binary patch
literal 2205
zcmX^0Z`VEs1_mbvFD?cq24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3TUkn*$&{o>@*yj1;y#LT=Bedqj~{31pM)^HEc
z5LZS9DIZ*FtT`F@82H&41b7$(8H5-a<Z|;<QgieZOH1-|6H5~H-4k<D{nLCh(^7*=
z5=&AU8CYCg9bFh16nyY2wB};qV-VqC5M>Z!WZ+0oErGg7Mne;~Teuh`7$n&lq<9#l
z8Dtn46!MGG^|MOzGE4NcN((YeQj7Ex3o`W`i;Gi>N;32FiWwPr62TnT!qUW?Vnzma
z4Y1+JVP}mg0trDm9tL?(@G%Fux_|;fk%vJE6auV{KAvH&Am^*_FsL%9F*2~^rB;+M
zGAL<i67n=Rg9d{pJA)PvgEoT>BLg2O)b&eCGIR8OGK)(X8JP0Z7#VViawMj+i4lPW
zF2YK1H0bd#=rb5FGO(2vq=4hl2<ig3%dCm=nGwia#*7S6Q0+)56iX<R<y>|KQ$_|Q
z{7EY$6%>>#&iN^+j12rfnR%&xrMXF|MInhvIjM{cLO%J)i8*13MVTNzRFI`4BeR&1
zL4`mBf{eCiWZ)@DEiQ3~r&-CM(!7$)+|;nl;>@I+RL8u${E|dy0+jK=o=Bl4aez$n
z11BGT5YsUyvn(|f8V!7jAf8`pW_m_aeo-+ag8(GV5YfWOAXrkK57vaFOeihCv<O46
zDzykhr5I{hR2HN{!@~&8CL00)V{K>6$iN5kflF#)3d{ps!TF^{$*FFcpm3K!D=I)C
zpa;qT3<?Y;3``6lz{<b?D&iOz8O#_M81xw!85lt#TH6^IH!?6VFfo`jFfg!z1$h`O
z7#J9Mz-(3qO9m?j1_nk3YX&w3Ca`921}3na<R%98O$@x-7=(8)h;L$$-Nc{(VIvIW
zV_;@rVBlxqVGv-DU=TzySQ2Wm4b)m&uqAfbEK%6TpuCBJ7i<YHn60pbK^)x@Q3f6c
zF$M_+ae|iE!z^JmVqj$e1x&*x28B%wyl`>{gSroxqoBQwK^JT>vOMn&26bPEybh8)
zT#3RC26aD(dAcxpUN9d-?qD#qVgd6MBv~NRAipq!W5A4omw|ynhJl|!mO+?7jzNJz
zkwKq9iNTmbnZbcUjlrKmogtV(gCT)In<0lmhoO)`m!Y0P5A0_Xh+m)qE6k9~;K1O>
zz{p_C;LG5|;K;zl5X_*<;LPC2z|2s{z|Y{q;K;zj;L5<jpvAz#08#G-SMLT_?*>=z
z#=ydW8e#6lhb1q*umlARfw1Jo8<xDd!qS+5pTUGdn8B1mfx&`7pTUyBn8Av{fx(u+
ipTUkHn8BVQfx(F(hryYlkimtap22m%!qNkr4?O|y&;F_a

literal 0
HcmV?d00001

diff --git a/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
new file mode 100644
index 0000000..8977fcd
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - ConstantMatrixInitializerTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>ConstantMatrixInitializerTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; ConstantMatrixInitializerTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">2</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.005s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testMatrixInitializationWithConstantValue()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixInitializationWithConstantValue2()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html b/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
new file mode 100644
index 0000000..22565e9
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CoordinateIteratorTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CoordinateIteratorTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; CoordinateIteratorTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">3</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.006s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testIteratorWithOneDimension()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testIteratorWithTwoDimensions()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testIteratorWithZeroDimensions()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/matrix.CoordinateTest.html b/build/reports/tests/test/classes/matrix.CoordinateTest.html
new file mode 100644
index 0000000..1dc511c
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.CoordinateTest.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CoordinateTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CoordinateTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; CoordinateTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">8</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.004s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testAbove()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testBelow()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCoordinateCreation()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testDiagonalNeighbours()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testLeft()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testOrthodiagonalNeighbours()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testOrthogonalNeighbours()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testRight()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/matrix.ListMatrixTest.html b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
new file mode 100644
index 0000000..27f94eb
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - ListMatrixTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>ListMatrixTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; ListMatrixTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">7</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.001s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testMatrixCoordinates()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixCreationWithInitialValue()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixCreationWithInitializer()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixIterator()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixSetAndGet()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixWidthAndHeight()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testSubMatrix()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.CellTest.html b/build/reports/tests/test/classes/model.CellTest.html
new file mode 100644
index 0000000..301fbcc
--- /dev/null
+++ b/build/reports/tests/test/classes/model.CellTest.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CellTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CellTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; CellTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">2</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.001s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testCellValueChangeWithListener()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCellWithoutListener()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
new file mode 100644
index 0000000..28fa398
--- /dev/null
+++ b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CellularAutomatonSimulationTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CellularAutomatonSimulationTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; CellularAutomatonSimulationTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">11</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.009s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testAt()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testClear()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testColor()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCopy()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNext()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNumberOfColumns()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNumberOfRows()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testReset()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testSetChangeListener()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testSetGenerationNumberChangeListener()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testUpdateToNextGeneration()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
new file mode 100644
index 0000000..fb7f132
--- /dev/null
+++ b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - NextGenerationInitializerTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>NextGenerationInitializerTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; NextGenerationInitializerTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">5</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.001s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">initialValueAt()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testModuloNegative()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testModuloPositive()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testWrapCoordinateInsideGrid()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testWrapCoordinateOutsideGrid()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.StateTest.html b/build/reports/tests/test/classes/model.StateTest.html
new file mode 100644
index 0000000..9432f2c
--- /dev/null
+++ b/build/reports/tests/test/classes/model.StateTest.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - StateTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>StateTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; StateTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testCountMethodWithEmptyList()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithInteger()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithNoMatchingElements()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithString()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html b/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
new file mode 100644
index 0000000..98d5cd9
--- /dev/null
+++ b/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - GameOfLifeStateTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>GameOfLifeStateTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.automata.html">model.automata</a> &gt; GameOfLifeStateTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.001s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testAliveUpdate()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testDeadUpdate()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testGetColor()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNext()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/css/base-style.css b/build/reports/tests/test/css/base-style.css
new file mode 100644
index 0000000..4afa73e
--- /dev/null
+++ b/build/reports/tests/test/css/base-style.css
@@ -0,0 +1,179 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+#line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+#label-for-line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}
+
+span.wrapped pre {
+    word-wrap: break-word;
+    white-space: pre-wrap;
+    word-break: break-all;
+}
+
+label.hidden {
+    display: none;
+}
\ No newline at end of file
diff --git a/build/reports/tests/test/css/style.css b/build/reports/tests/test/css/style.css
new file mode 100644
index 0000000..3dc4913
--- /dev/null
+++ b/build/reports/tests/test/css/style.css
@@ -0,0 +1,84 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+.skipped, .skipped a {
+    color: #c09853;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
new file mode 100644
index 0000000..72a92be
--- /dev/null
+++ b/build/reports/tests/test/index.html
@@ -0,0 +1,233 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Test Summary</title>
+<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="css/style.css" rel="stylesheet" type="text/css"/>
+<script src="js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Test Summary</h1>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">46</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.028s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Packages</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Packages</h2>
+<table>
+<thead>
+<tr>
+<th>Package</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="success">
+<a href="packages/matrix.html">matrix</a>
+</td>
+<td>20</td>
+<td>0</td>
+<td>0</td>
+<td>0.016s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="packages/model.html">model</a>
+</td>
+<td>22</td>
+<td>0</td>
+<td>0</td>
+<td>0.011s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="packages/model.automata.html">model.automata</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="tab1" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="success">
+<a href="classes/matrix.ConstantMatrixInitializerTest.html">matrix.ConstantMatrixInitializerTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.005s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/matrix.CoordinateIteratorTest.html">matrix.CoordinateIteratorTest</a>
+</td>
+<td>3</td>
+<td>0</td>
+<td>0</td>
+<td>0.006s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/matrix.CoordinateTest.html">matrix.CoordinateTest</a>
+</td>
+<td>8</td>
+<td>0</td>
+<td>0</td>
+<td>0.004s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/matrix.ListMatrixTest.html">matrix.ListMatrixTest</a>
+</td>
+<td>7</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.CellTest.html">model.CellTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.CellularAutomatonSimulationTest.html">model.CellularAutomatonSimulationTest</a>
+</td>
+<td>11</td>
+<td>0</td>
+<td>0</td>
+<td>0.009s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.NextGenerationInitializerTest.html">model.NextGenerationInitializerTest</a>
+</td>
+<td>5</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.StateTest.html">model.StateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.automata.GameOfLifeStateTest.html">model.automata.GameOfLifeStateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/js/report.js b/build/reports/tests/test/js/report.js
new file mode 100644
index 0000000..83bab4a
--- /dev/null
+++ b/build/reports/tests/test/js/report.js
@@ -0,0 +1,194 @@
+(function (window, document) {
+    "use strict";
+
+    var tabs = {};
+
+    function changeElementClass(element, classValue) {
+        if (element.getAttribute("className")) {
+            element.setAttribute("className", classValue);
+        } else {
+            element.setAttribute("class", classValue);
+        }
+    }
+
+    function getClassAttribute(element) {
+        if (element.getAttribute("className")) {
+            return element.getAttribute("className");
+        } else {
+            return element.getAttribute("class");
+        }
+    }
+
+    function addClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element) + " " + classValue);
+    }
+
+    function removeClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
+    }
+
+    function initTabs() {
+        var container = document.getElementById("tabs");
+
+        tabs.tabs = findTabs(container);
+        tabs.titles = findTitles(tabs.tabs);
+        tabs.headers = findHeaders(container);
+        tabs.select = select;
+        tabs.deselectAll = deselectAll;
+        tabs.select(0);
+
+        return true;
+    }
+
+    function getCheckBox() {
+        return document.getElementById("line-wrapping-toggle");
+    }
+
+    function getLabelForCheckBox() {
+        return document.getElementById("label-for-line-wrapping-toggle");
+    }
+
+    function findCodeBlocks() {
+        var spans = document.getElementById("tabs").getElementsByTagName("span");
+        var codeBlocks = [];
+        for (var i = 0; i < spans.length; ++i) {
+            if (spans[i].className.indexOf("code") >= 0) {
+                codeBlocks.push(spans[i]);
+            }
+        }
+        return codeBlocks;
+    }
+
+    function forAllCodeBlocks(operation) {
+        var codeBlocks = findCodeBlocks();
+
+        for (var i = 0; i < codeBlocks.length; ++i) {
+            operation(codeBlocks[i], "wrapped");
+        }
+    }
+
+    function toggleLineWrapping() {
+        var checkBox = getCheckBox();
+
+        if (checkBox.checked) {
+            forAllCodeBlocks(addClass);
+        } else {
+            forAllCodeBlocks(removeClass);
+        }
+    }
+
+    function initControls() {
+        if (findCodeBlocks().length > 0) {
+            var checkBox = getCheckBox();
+            var label = getLabelForCheckBox();
+
+            checkBox.onclick = toggleLineWrapping;
+            checkBox.checked = false;
+
+            removeClass(label, "hidden");
+         }
+    }
+
+    function switchTab() {
+        var id = this.id.substr(1);
+
+        for (var i = 0; i < tabs.tabs.length; i++) {
+            if (tabs.tabs[i].id === id) {
+                tabs.select(i);
+                break;
+            }
+        }
+
+        return false;
+    }
+
+    function select(i) {
+        this.deselectAll();
+
+        changeElementClass(this.tabs[i], "tab selected");
+        changeElementClass(this.headers[i], "selected");
+
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+
+        var h2 = document.createElement("H2");
+
+        h2.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(h2);
+    }
+
+    function deselectAll() {
+        for (var i = 0; i < this.tabs.length; i++) {
+            changeElementClass(this.tabs[i], "tab deselected");
+            changeElementClass(this.headers[i], "deselected");
+
+            while (this.headers[i].firstChild) {
+                this.headers[i].removeChild(this.headers[i].firstChild);
+            }
+
+            var a = document.createElement("A");
+
+            a.setAttribute("id", "ltab" + i);
+            a.setAttribute("href", "#tab" + i);
+            a.onclick = switchTab;
+            a.appendChild(document.createTextNode(this.titles[i]));
+
+            this.headers[i].appendChild(a);
+        }
+    }
+
+    function findTabs(container) {
+        return findChildElements(container, "DIV", "tab");
+    }
+
+    function findHeaders(container) {
+        var owner = findChildElements(container, "UL", "tabLinks");
+        return findChildElements(owner[0], "LI", null);
+    }
+
+    function findTitles(tabs) {
+        var titles = [];
+
+        for (var i = 0; i < tabs.length; i++) {
+            var tab = tabs[i];
+            var header = findChildElements(tab, "H2", null)[0];
+
+            header.parentNode.removeChild(header);
+
+            if (header.innerText) {
+                titles.push(header.innerText);
+            } else {
+                titles.push(header.textContent);
+            }
+        }
+
+        return titles;
+    }
+
+    function findChildElements(container, name, targetClass) {
+        var elements = [];
+        var children = container.childNodes;
+
+        for (var i = 0; i < children.length; i++) {
+            var child = children.item(i);
+
+            if (child.nodeType === 1 && child.nodeName === name) {
+                if (targetClass && child.className.indexOf(targetClass) < 0) {
+                    continue;
+                }
+
+                elements.push(child);
+            }
+        }
+
+        return elements;
+    }
+
+    // Entry point.
+
+    window.onload = function() {
+        initTabs();
+        initControls();
+    };
+} (window, window.document));
\ No newline at end of file
diff --git a/build/reports/tests/test/packages/matrix.html b/build/reports/tests/test/packages/matrix.html
new file mode 100644
index 0000000..f85ff8a
--- /dev/null
+++ b/build/reports/tests/test/packages/matrix.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package matrix</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package matrix</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; matrix</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">20</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.016s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tr>
+<td class="success">
+<a href="../classes/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.005s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/matrix.CoordinateIteratorTest.html">CoordinateIteratorTest</a>
+</td>
+<td>3</td>
+<td>0</td>
+<td>0</td>
+<td>0.006s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/matrix.CoordinateTest.html">CoordinateTest</a>
+</td>
+<td>8</td>
+<td>0</td>
+<td>0</td>
+<td>0.004s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/matrix.ListMatrixTest.html">ListMatrixTest</a>
+</td>
+<td>7</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/packages/model.automata.html b/build/reports/tests/test/packages/model.automata.html
new file mode 100644
index 0000000..5d6594c
--- /dev/null
+++ b/build/reports/tests/test/packages/model.automata.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package model.automata</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package model.automata</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; model.automata</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.001s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tr>
+<td class="success">
+<a href="../classes/model.automata.GameOfLifeStateTest.html">GameOfLifeStateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/packages/model.html b/build/reports/tests/test/packages/model.html
new file mode 100644
index 0000000..8774882
--- /dev/null
+++ b/build/reports/tests/test/packages/model.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package model</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package model</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; model</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">22</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.011s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tr>
+<td class="success">
+<a href="../classes/model.CellTest.html">CellTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>
+</td>
+<td>11</td>
+<td>0</td>
+<td>0</td>
+<td>0.009s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>
+</td>
+<td>5</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/model.StateTest.html">StateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/resources/main/view/style.css b/build/resources/main/view/style.css
new file mode 100644
index 0000000..f518257
--- /dev/null
+++ b/build/resources/main/view/style.css
@@ -0,0 +1,37 @@
+.root {
+  -fx-focus-color: transparent;
+  -fx-font-size: 13px;
+}
+
+.background {
+  -fx-background-color: #1d1d1d;
+}
+
+.separator .line {
+  -fx-border-color: #fff;
+}
+
+.button {
+  -fx-background-color: derive(#1d1d1d, 20%);
+  -fx-text-fill: #fff;
+}
+
+.button:hover,
+.button:selected {
+  -fx-background-color: #fff;
+  -fx-background-insets: 0 0 -1px 0, 0, 1px, 2px;
+  -fx-background-radius: 5px, 5px, 4px, 3px;
+  -fx-text-fill: derive(#1d1d1d, 20%);
+}
+
+.label {
+  -fx-text-fill: #fff;
+}
+
+.cell-pane {
+  -fx-background-color: derive(#1d1d1d, 20%);
+}
+
+.alive {
+  -fx-background-color: #fff;
+}
diff --git a/build/resources/main/view/view.fxml b/build/resources/main/view/view.fxml
new file mode 100644
index 0000000..c185150
--- /dev/null
+++ b/build/resources/main/view/view.fxml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+<?import view.MatrixPane?>
+<AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
+            styleClass="background" stylesheets="@style.css"
+            xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1"
+            fx:controller="controller.Controller">
+  <padding>
+    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
+  </padding>
+  <children>
+    <HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0"
+          prefWidth="980.0" spacing="10.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
+          AnchorPane.topAnchor="0.0">
+      <children>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+        <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                      mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0"
+                      prefWidth="62.0" styleClass="button" text="Play"/>
+        <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                      mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0"
+                      prefWidth="71.0" styleClass="button" text="Pause"/>
+        <Button fx:id="resetButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                mnemonicParsing="false" onAction="#resetButtonAction" prefHeight="24.0" prefWidth="70.0"
+                text="Reset"/>
+        <Button fx:id="clearButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                mnemonicParsing="false" onAction="#clearButtonAction" prefHeight="24.0" prefWidth="70.0"
+                text="Clear"/>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+        <Label maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="103.0"
+               text="Generation"/>
+        <Label fx:id="generationNumberLabel" alignment="CENTER_RIGHT" contentDisplay="TEXT_ONLY"
+               maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="99.0"/>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+      </children>
+    </HBox>
+    <MatrixPane fx:id="matrixPane" alignment="CENTER" hgap="1.0"
+                maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="600.0" prefWidth="980.0" vgap="1.0"
+                AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
+                AnchorPane.topAnchor="35.0"/>
+  </children>
+</AnchorPane>
diff --git a/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
new file mode 100644
index 0000000..7ad82e8
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.ConstantMatrixInitializerTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.006">
+  <properties/>
+  <testcase name="testMatrixInitializationWithConstantValue()" classname="matrix.ConstantMatrixInitializerTest" time="0.005"/>
+  <testcase name="testMatrixInitializationWithConstantValue2()" classname="matrix.ConstantMatrixInitializerTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml b/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
new file mode 100644
index 0000000..9301f51
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.CoordinateIteratorTest" tests="3" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.007">
+  <properties/>
+  <testcase name="testIteratorWithZeroDimensions()" classname="matrix.CoordinateIteratorTest" time="0.0"/>
+  <testcase name="testIteratorWithTwoDimensions()" classname="matrix.CoordinateIteratorTest" time="0.005"/>
+  <testcase name="testIteratorWithOneDimension()" classname="matrix.CoordinateIteratorTest" time="0.001"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-matrix.CoordinateTest.xml b/build/test-results/test/TEST-matrix.CoordinateTest.xml
new file mode 100644
index 0000000..80cf2f5
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.CoordinateTest.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.CoordinateTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
+  <properties/>
+  <testcase name="testAbove()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testBelow()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testRight()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testLeft()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testDiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testCoordinateCreation()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testOrthogonalNeighbours()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testOrthodiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-matrix.ListMatrixTest.xml b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
new file mode 100644
index 0000000..f7c7b31
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.ListMatrixTest" tests="7" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
+  <properties/>
+  <testcase name="testMatrixWidthAndHeight()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixCoordinates()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixCreationWithInitialValue()" classname="matrix.ListMatrixTest" time="0.001"/>
+  <testcase name="testSubMatrix()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixIterator()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixCreationWithInitializer()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixSetAndGet()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.CellTest.xml b/build/test-results/test/TEST-model.CellTest.xml
new file mode 100644
index 0000000..85fc223
--- /dev/null
+++ b/build/test-results/test/TEST-model.CellTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.CellTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+  <properties/>
+  <testcase name="testCellValueChangeWithListener()" classname="model.CellTest" time="0.0"/>
+  <testcase name="testCellWithoutListener()" classname="model.CellTest" time="0.001"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
new file mode 100644
index 0000000..e00b5d7
--- /dev/null
+++ b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.CellularAutomatonSimulationTest" tests="11" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.012">
+  <properties/>
+  <testcase name="testNumberOfColumns()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testSetGenerationNumberChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
+  <testcase name="testClear()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testColor()" classname="model.CellularAutomatonSimulationTest" time="0.005"/>
+  <testcase name="testReset()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testCopy()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testNext()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testAt()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
+  <testcase name="testUpdateToNextGeneration()" classname="model.CellularAutomatonSimulationTest" time="0.002"/>
+  <testcase name="testSetChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testNumberOfRows()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
new file mode 100644
index 0000000..9487710
--- /dev/null
+++ b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.NextGenerationInitializerTest" tests="5" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.003">
+  <properties/>
+  <testcase name="testWrapCoordinateInsideGrid()" classname="model.NextGenerationInitializerTest" time="0.001"/>
+  <testcase name="testModuloPositive()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testModuloNegative()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testWrapCoordinateOutsideGrid()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="initialValueAt()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.StateTest.xml b/build/test-results/test/TEST-model.StateTest.xml
new file mode 100644
index 0000000..3a6a86f
--- /dev/null
+++ b/build/test-results/test/TEST-model.StateTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.StateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+  <properties/>
+  <testcase name="testCountMethodWithNoMatchingElements()" classname="model.StateTest" time="0.0"/>
+  <testcase name="testCountMethodWithInteger()" classname="model.StateTest" time="0.0"/>
+  <testcase name="testCountMethodWithEmptyList()" classname="model.StateTest" time="0.0"/>
+  <testcase name="testCountMethodWithString()" classname="model.StateTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml b/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
new file mode 100644
index 0000000..28c0739
--- /dev/null
+++ b/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.automata.GameOfLifeStateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+  <properties/>
+  <testcase name="testGetColor()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <testcase name="testNext()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <testcase name="testDeadUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.001"/>
+  <testcase name="testAliveUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin
new file mode 100644
index 0000000..e69de29
diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
literal 1
IcmZPo000310RR91

literal 0
HcmV?d00001

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
new file mode 100644
index 0000000000000000000000000000000000000000..fe8b6eee535fa6ba4678a7abf52b47de3b7fc8f7
GIT binary patch
literal 3267
zcmZSP6q=TsSW=W(q34rXT;dC6hNKpk^rLba7#OE4;J2z}7o1&^3R4%JnNpJBn3v*_
znwg$aqM?aLih%)U0)y}jgbB|1`9&$2d5I;d#TuHp#Nm4D7(|vL=`Bi4EXmBz3(qXc
z@XX6B$xO@%OUx-v)zBnL5d$OCMfD7#6F{a0mnK2Huc3*~hr6JjL2N2WEkvPbNorAI
zNq&)rCRRbXt_BA2B?w*4nC{N3N-fgRBt{LAnG(|wW(KF0IOe6er<Q1FVi$$$Yh++r
z3XO2*{Ji3l#5`!ELxT|H6j1!n!z&97x^yPSH3&z*O@K!W%nWF}kfN4>6>3Kg1M^y<
z?J&~NBuOzmSaKPp`g8MBQgig2Q*&}a0niC!K;6;AB)JIW4v;X|Kh7D6dFiR3)CbBc
zsd=C%B&-5%V-th)ESPy9L-I>Y5a!^PfhXH$2H9l@7nkNF7CDxd<mV=q<mUxv=9cDw
zBLU=*1t1sWk%#)Pm0Jd!bo@$llTwTP)132jN^|pyp$Q5@6z-2!2Dud=e*~wNxPt-#
zY%fGPB!m#YB32#TkL?WdJs`84b5awFG&GUfaQoXC6d>aHIiQ?~%!a3-9tK6Qcu;CF
zD2pJo;pX%(D0PGF$}gzY&_rS)sZa(B`=wTtKvh7Pa234_DxDxR97{Ab;S9KM`WRH_
zf@DJrQW8s2L-IkI5kaP*iC2<=2^vom7}UT8WpHW<didfJhr4eAgZgBU3n0<spB9u~
zUaX;sMF_5AB7^<}NGc010XaIgxTFitg1Tr5iyk;;o%2icN_<mGGV)VE3ED5;H?br+
zBQr1EH77MUHLs*tLz7r_aQmk)7=VKX&1}!SlGJoihQlifH)Se=;e3$4(M)m8Ehwo3
zB~J}a0@6q(8O_0BQgBI8W?s66CO$bNGfWmk!ZZ<*V-xk<6LVAj(|j`1QsIF+1&bIo
zz^Abo_k$eao?7AzN%d%4xK+~_ObH~}X$)o)L1ww6CZ<3VriLbl06Ym#XE2`xQtg<N
zS(XY@jwu4Se>wx}Ja}ybtLkCZCa7?lj%WcO3qw7c&&;wAWF1Tjl&qpsi}GDEb5rw*
zGxI^k6F~)V$K*4xEkHLdq#VUCLh|qurIdjkoMez)=AV}ecNjE9;g*I6X&D12tObS$
z3sBJXqjI4^QqI8vF1{R-^2<`8MIw|9_h>l-7g&u`YEFJRR1K63x3+?T8>}V>(sV;+
z!_BE+-~p!|pVTy1fd^s2O{rwyoe2t3m(0ZU{Jg{*KTu0BDZjL+SVI%11YCC&10Prs
z!lSUZ5mYxe3ApR382G^rPXD5kjC>5+@kqh#uVxUK2XZ~wgcK}Zz%L7TNi~D!5=e$d
zEz;o)qSPW#gwDe&3yt52tQz2i6<(BBfbhO&UU6nhs(Vpp3N&HimWKOo5`z|`S(=|x
znv)-pUz}Nz2}&|p1>t^~#Gs9&z%MmD5knV35Uy)7gAO?BpgPOHv;^U7Lh?vv=}yc<
PYR`izQw#yP>M0BWo&krK

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeAutomaton.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeAutomaton.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..b111f8eac55b36b4303368595be3529e4f1b14d3
GIT binary patch
literal 1754
zcmX^0Z`VEs1_mbv4=x5K24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vu-29Z(9R0-7lKkAnl0<!{Oy~TZ{37?n+*JQG
zpUkvWM~F;*9wP%wQGR(bBLkx+$P7Ln27ZtM?8*5#rMY><><og8461}o3oc14N#$e^
zW)NX#5anSIV-RO#&?ich3Rr7MWkD(<1B;8RqYER0p$~~Vt+^Nk7$iXfCB?{KqCv8D
z%`h$o83tK)200!Ec?JboV3(F;=I93{=B4E4GBR-GrB;-<<d-Jpq=Ez7h0Xo}0~mn3
zt-`~g3i30jqmO5pYkZKa3rJL*hd~1*$^{X1@(Fe2V&GuV;$hHc&|zfYE&`hk4gf|5
zYYiW86eHPctx23$tU;#g@i6E!7%(#Mq@<=LmgbZ|jn&j3))00EBSr>sNYFc{=H!&-
zBo-m15>^dQPt7n!1{UZ1lvG9rexJ;|RKL>Pq|~C2L~x)8`Q#@j=7c2{WrFxnL6(w?
z%wk3cZGs+w+honiz@G;;*FVh}k_N#6?#al&0}~GdCs@w()V$Q9#FG3XMg}3wz++_K
z4K7Jc&h||#fI3DIPY{EH%bJlvz&EudBR?e|u_!S&wIsEun2~`W9)vJOoWYstd5I;Z
zMX8JoArPC9a;7!ZvlxMB1C_v?D<KxxSu-+l1?QI*C8xS&g3_Bj?(C}vN;HfNJf3-Z
zsYT8?iN(dK#f%J`V1q!pib0WqgMo>Gk-?CGi9rZdI503U2!ZlA0|Ns)10w?~gE0dm
zg9!rzLnNrgVPIh3*V@j&s3pCXfn7^xD+BLF1_lNu22-#$76t|eE(R6`ZU#;U9tJ)J
zUIsG;1_lKNW{@@pa|R1=j^GDd!w44RXW#)_Z^>W<wML(TkpU#fs<nlIcMaTdHn5-|
z*gzgIn-yvxBZD<o&Ftu!#jtADXE1=;Y|6k4Hkf-igFxga2BGZ?5*yI$mqs#z8*aZg
zgAUY)i3}_ZObiSR*4o<`q(vAMXUt&`K$y0iK@~$>c{_u|at2<AA~mR$%;4~pVqgP@
z9yfy`g9L*TgEE6Mg8_pIgB61U*coCFtDw$cV6bMeVX$RjWUymkVBlb2mJs)3XAlr@
zWYA`?XJ7(Hp#cLESPz?)_BIAhbkDJYO@#z58`M+>1_lOJMg|4}1_4I~eFjIUKlR~}
lw2eU*pE<BdVrFmx2c<KE3z&9ga090mMh0O90S0#mNdO4{dzt_M

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState$StateType.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState$StateType.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..53652e4207c5208cd52e04aca03ddfebf04234b1
GIT binary patch
literal 1369
zcmX^0Z`VEs1_mbv8+HaJMh5-d{FKxj{lwCe{M^KnM17}B=lq=fBKO4HRR1)e%(T?t
zlEji!6)+i6S&+)fz{tSD!@$bG#>l|p;_B$a$YAJ0q8Zj8LpXRCI6;PRI{J8qxyA>%
zx`0Hvc^G&=qFfMBC!bJPkT4$)13!ZRBLllin4?dqYcL~&Q8dZ6axn-o2(vQ?@Gyul
zh%z#;Cg<emr7|*zXlVLmC6*=X=OpH(>-#5Vr6!kHb1{fBNU$?V@-Rp-NHa3<Ar!dg
zmF6-su$Lv~l&1QpF*2BHAnA6_Nh~h5MiK}vDay=Cw??)BWB}NFSsn&C26;vXHk-`6
z%o00B1~Fu#pgKJ@!#EgNxfmE3WH}f(IT(0AOjRBRH3oH1aDbgr%*bG(p-FmxFfy>g
z^s_kUr=&76@cU%urTUfTCZ!gIBqrsgGBUVgag!#=LC?q_<ddJAm=l&*lnF8yYB)<?
zVs0u(4iUUiZ!<Co_@<U*<fjBA7A5AUmZTOHGcvH0WMmdIGH?cGrspM=loq8jGB9gs
zhA}d5*d*sb!_XNi@IfJML$X`#tQi@&g7Zs@l2hF>K|vsmJx}O?9L>nU;g?!m;*nom
z!p>mH$e>D8R$ye{@yyFhEdnQ(RIryoxeS!Q91Iy48N?YF7+4%6LAi{9!9fy~QNT10
z0~-T_fD|Y%FfcH%GH^0zFsL&yGH5a|FeouFGJpWrCI;SZ41xz3gf=iRFfcM`F)%Q&
zf#uj4I2oiEv>BMd>P;A!z@l72j9NPw#11epg48pisMld&VBmqMV$fyKV_;y=2ieQW
zz|g?JzywOY49sA|3>laim>C!t*tN7}wlm0VWB^Gc+l(-YoxuR)3$RI?ObiSH3}9>s
z)?y^U1xndaFX=O|fPBOt&bF6<F_L)`19NaB%O(c);7Ha@3|zq=_oDibgTa`=2&&l)
zs#$M017oC+0`qnT#mx-NV2%<Cn8Oa{D6@h&Tss(4HZ$;oT#jlc3j@SyCJd%vCz>&s
WgJ}x}D+UGzP;O*ouwbxukOTm^5;PM4

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState.class.uniqueId4
new file mode 100644
index 0000000000000000000000000000000000000000..fd91ad4a3b76f11a047659c5dbd5191f88d6e9fc
GIT binary patch
literal 2355
zcmX^0Z`VEs1_mdF7%m1T24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3V$-29Z(9R0-7lKkAnl0<!{Oy~TZ{37?n+*JQG
zpUkw>;F83WR7M7#<kF&|)VvZX*U*P3eJWt(A(aKG)?5sH4E*d20z3?Y3_^?y`XuUS
zWMI!PO3BPi%mI7Dlbu0?kwF6CSKq{v<P6t}<kW(a%=|nq24My<P=JUtGH7Y|Ae04{
z6lLb6TO)~tWEAC>Cnn{jT7$wyl0k}{L7Im_hCvo;d|HKmadK*2s(wLYW?qRtICK~p
zSi?O$LtGgdq`)R&Q)A7^Aju%l!=L~%i8;vC1;kh4VNeF~S)6=AT{#)}7*u%})Iia|
z>FDDb<{A%H#>b$+!=MQg<${QU6mv0fFld8(q{GNyqCs-#Yld+%=rQQCGZ^qN7%~_!
zGH^q}9~?i746ModrFkWc464Xs1xY^8uqrLd%+dGBEH1Iu^aMHFgonWt<U|%1S4S6+
z<IH&&EEp^q8Q4k-Qot$35^5HbPU4(x4KmJ}hrx!ymXU!aFSVkCkwH^KlSs{s3@pz1
zDXEMM{63j^seYxoNvTC4p!j8E5c0`SPRt2QEXoA&p@J+W8JWe54C+K1&sq%05gh5M
zCD7C$qoIjA9WXNR2A3ozXZt1=K&|A;OU+ErNXjoQDrRI50PEC8gc2hIM^S2uGbBP7
zJsBA|lX6N^p?uDq%rY2T4Anc81*uT;Ezyj$A<}Pl*6a)cj0}9>>;iWXBLin}W_n&?
zNoi3kBSR8;tP*cH@iC}^ZizJ{e36SaYeohE-_(+f{FH#iqQu<Pl2lM=ia=umO{E7U
zM372FYiO8&GXU{^U}WG5&Mz%WPIb%7No8b^#$H_NfkKdxf!i;&xWqRVlmd$x8F)PN
z@=}YOa}tY-Q;R`?3Q9(xqLD$7frEjGfssLvfssK7R4g+vFt9N&GO#k}FfcOMF)%Q=
zF)%SOF)%Q2X>Dg<)Y9I{z`l`zfq{v^o`HdZkAazifq|QWg@K2GlYy7Pfq{WR45FIB
zk->=p1h^QS8F&~N85kK{7+j%dwlJ_TFfuSOSZQrxVBf~TyNZE<K@y}GY%&9bG6MsH
zCIbV5{%!{0NJhr(45IrtF-R<D;Mv3=x151(6NBOg1_lOZup7h}SQ!`?1R1m#gcuAM
zgc-~jL>Md?1i@|r*~`FS1$B!X$QKN(3Y@I0PV5Yl42+;`4s}rh)J4*}88{+AuG++)
zvW$Uq6N5U~K9%hZS_muIz>b$hvO*fk3RMQC{|q7wjO?JG<zQgoU|{$U3S$tT8Nz30
z;A3C}m01i-pfF}sV_*UMA_rvqCI*mg+B+C@Z6RFs?F?EVuAPi*f*A|MamLFS<V9K7
z7BEPH)X2y#0l8HL>{gKS4Nz4}83aXHSm!fvg4MEWZ2+m>#9$2d4huL0l|W8pkY(U!
zkYkWzkY`Y4P-HM>P-5_8P-ci{P+>@9Py>6_1mZ@hR~Z;`7~B~=7#JD&8Dbec8N3*n
z7~~lI7`z$07?>H989W($7`zx*7<?HR!0``J@5jK%0E!0_2G;)!P7JK<3>@qX{)~)_
z3``sh#vBaBprAq$Wrm2dGw?BsGBN~$(?^hiBZCD)FeL0444~<gO-p+lgBd82n83bb
z14j}Y*yWIPzy@`B2m=EHD<cDg0E2)dgAGF{GzsW~6Db1&tJXFKD}3g#Ld{`;x+jbw
d9PF+LhDZhma5~~+hytfIMg~3x4u)t4NdU216d3>j

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainAutomaton.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainAutomaton.class.uniqueId3
new file mode 100644
index 0000000000000000000000000000000000000000..0e49dc50401e419d81965006d5ae5af25e2c03ba
GIT binary patch
literal 1632
zcmX^0Z`VEs1_mbvS1tx724;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3VG-29Z(9R0-7lKkAnl0<!{qRhlRr=rBnJV%I7
zejXzOOHqD#F(U(`CrC3N4+B3)Cwp>!PHAplF*}1GBZC}HV}eT(OHw%*gc(HG8AN#)
z#2CaG88q;#Rsrh?sVqokWMFY|b#!55(DETxi!~R60D~kbFr*k6bTx?Ary0h@Aj2Tb
z&LGFbAkUxx3(3-w%pCoo#JrUJTt)`2ywr*km;BPCoK$dVy0F<lU;qP<4^?;=R6*Y3
z4RUpKiHr~Nk9YG7a^+&+U{L2_&|uJHWZ*6W8wB<rBZG;C4>+=rtgzN3;9zTzaoRi#
zIt;pu3_K~RX^EvdB~bH}GzjWuXV7P45Ql`Nb81dbX-;AhQbe<AczSAvF*2|?=clAH
zGVuFk=B4_T<|d^Ug(QOgEaa1)oR|}qSd<CkLj_q%GBS%98B}mP9d3m+BLjaP*g*d@
zXGr=12c#z>0}o6*2%OkB(^K<OixNxnix?S%FvE$Ffj77$F*(~eu>k4{MLeMi4j^kr
z1_9sHl8pS6fW)H2+|-iPqGCn{et4k46mbS;rspM=loq8jGWbGlM#@gsP+ww%o()t2
zOICuIY-i2Lz!jWdT9lmXmI+Eg5?C^u9w<dHGVplj<)s!m=Oh*vrxr6ZaDq($<p>5v
z1`Y-$21W)w1||j}P#$JrU=RZ3NCpN5b_PZURt5tGMg~I$28Kvb!N9=4z^}EPfl*6(
zD+9Zh%vJ{8jSLJ7ObkX~Z7d873|tH>4BQNy3_J{c47?1+3=9kk49p;H3?>Yw;Iz#T
zwuTWb#?Qb5w%&}v9BPd|10w@Sj#X<51MeER;cQ?*L9l^5U^Xk%Kt=`&teV-;HH%@@
ztizxSwb_(`8Ei23ZU%wKO$<WY86-BK*)NS`1UKA%4F*l95d{n^3``6R49eQu7^FoQ
z6lcs~5I~r=oPig@QHC1Lj1+DP4BQNg3=#}V3`z_NU~9x6MnSD%U{GeTWUyjjWUvND
z4U>c?JA;6LBZCHm4FeN6h71^(z*^X}w6`&+p}U<8Y$zn`*r0~mGB7Z(GBPj-FbFs@
t=rGtpy@7~>Z46rY%z?!LGlM-iq#PI=!L$>DGdL+QG6*vWFt|8K001q9SM&e?

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState$StateType.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState$StateType.class.uniqueId5
new file mode 100644
index 0000000000000000000000000000000000000000..b4059f309db9a356bc2dc1a20bf3b4d9b0945a04
GIT binary patch
literal 1311
zcmX^0Z`VEs1_mbv8+HaJMh1=C{FKxj{lwCe{M^KnM17~C%)~sWqQuO+;F83WR2488
zQdyA7$-v0K!o$GIz{beH;^OM)!pNZIL#$?NkZukh22QYUH_sqfkN`Ii0}n`mH^|k|
zB{Dw5KOQE-$HTzSAi&7Lt`g?x6Y3hw$e<lfyk%SrLJY#}3<5k1A`GI846MmH`FW{~
z3?dquK3R!niTXK-dFlH8Nm;4MCDvRF;tUe(43azyQVi0J415R$u6d=oj125$i8-aI
z{%MR1rW#1PopTb4i>;9af=h}r^U|%6Z2%bnHeZ&9L5@M5k%7%7GcU8mj*&qO*(j(^
zPt7n6239TxMh00922KtJ9uQNNhe3@&9TW~=XB0Cs=xS(^5E6_GY%q;1&iN^+j12rf
znR%&xrMXF|MInhvIjM{cc32#vNqk^4G6?zPCnx5FB^G6Z41}7>l9!m93X($vDAc2j
z3<AEXB^miC0f|M4xv3?oMa7H^EF~G4#f%J`!I|lKi6x~)sf-NF8k%8@3>-GeInYqE
zK?-hA*xC^9NIPpr2Cm@z(xT*4w@i?yMbOf@9>|%D3><!`#U&p3#U<<vmW&K?_>(sy
z1CM83UTP6IEu?~756Uv2%;I3cz{nuZz`(%bAPLGc3=9sEpu`WRc^KFj7zCt1DV%|U
zft7)iL4!e^fssLzfq_AZfsp|OxHd8HZetKUz#z1Nfq{XML5qQbfekFj$-v1V#h}f=
z1XgdtzyucM5@OWa!60^kff1yh2}QjQ0|NsOL=}TBgB}9|gFeV!Mh1ok1_mZj(qv!;
z8)nGB%)rdRz`(AhEwi0LW+MYg8rf!qN$d;;AYXt@;$&iA5MTgfL$DSj0WMIog?dS!
zfd%9v2648%42+S?n;4jbBUv^vum?x7ZerjH2Dum2e;f?P3`S7RZcxp7yBQcGg%p^#
zGbnCmU<PxPSil^1Fh`jc%;DO>pt6~P7vyqOGg%lQPBURJ1v}A<!5mCmFjz4#Fo3ce
LBZCElwSxozcr71T

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..358bff43508be0bc50e358ccca2074bd70ec97ac
GIT binary patch
literal 2908
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

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..835183c5140de13671a735e0b641eaa2cb4b83c4
GIT binary patch
literal 21925
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

literal 0
HcmV?d00001

diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..16fbb7fb04fac14befb7a15c27e64a92a763ad04
GIT binary patch
literal 4499
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
a^Q12_>0M$9xeU@Q0@2DWWUL4BH3I-nWosz_

literal 0
HcmV?d00001

-- 
GitLab