heatmap-builder 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/ci.yml +44 -0
- data/.gitignore +12 -0
- data/.standard.yml +6 -0
- data/CHANGELOG.md +22 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +70 -0
- data/LICENSE.txt +21 -0
- data/README.md +130 -0
- data/Rakefile +16 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/examples/calendar_github_style.svg +3 -0
- data/examples/calendar_sunday_start.svg +3 -0
- data/examples/calendar_with_outside_cells.svg +3 -0
- data/examples/generate_samples.rb +114 -0
- data/examples/large_cells.svg +3 -0
- data/examples/weekly_progress.svg +3 -0
- data/heatmap-builder.gemspec +43 -0
- data/lib/heatmap-builder.rb +15 -0
- data/lib/heatmap_builder/calendar_heatmap_builder.rb +295 -0
- data/lib/heatmap_builder/linear_heatmap_builder.rb +128 -0
- data/lib/heatmap_builder/version.rb +3 -0
- data/mise.toml +2 -0
- metadata +128 -0
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="586" height="118" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<text x="8" y="22.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">S</text><text x="8" y="37.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">M</text><text x="8" y="52.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">T</text><text x="8" y="67.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">W</text><text x="8" y="82.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">T</text><text x="8" y="97.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">F</text><text x="8" y="112.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">S</text><rect x="16" y="58" width="14" height="14" fill="#ebedf0"/><rect x="16.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="16" y="73" width="14" height="14" fill="#40c463"/><rect x="16.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="16" y="88" width="14" height="14" fill="#40c463"/><rect x="16.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="16" y="103" width="14" height="14" fill="#ebedf0"/><rect x="16.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="13" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="28" width="14" height="14" fill="#9be9a8"/><rect x="31.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="31" y="43" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="58" width="14" height="14" fill="#9be9a8"/><rect x="31.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="31" y="73" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="88" width="14" height="14" fill="#9be9a8"/><rect x="31.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="31" y="103" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="13" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="28" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="43" width="14" height="14" fill="#40c463"/><rect x="46.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="46" y="58" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="73" width="14" height="14" fill="#9be9a8"/><rect x="46.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="46" y="88" width="14" height="14" fill="#9be9a8"/><rect x="46.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="46" y="103" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="13" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="28" width="14" height="14" fill="#9be9a8"/><rect x="61.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="61" y="43" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="58" width="14" height="14" fill="#9be9a8"/><rect x="61.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="61" y="73" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="88" width="14" height="14" fill="#40c463"/><rect x="61.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="61" y="103" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="13" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="28" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="43" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="58" width="14" height="14" fill="#40c463"/><rect x="76.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="76" y="73" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="88" width="14" height="14" fill="#40c463"/><rect x="76.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="76" y="103" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="13" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="28" width="14" height="14" fill="#9be9a8"/><rect x="91.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="91" y="43" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="58" width="14" height="14" fill="#40c463"/><rect x="91.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="91" y="73" width="14" height="14" fill="#9be9a8"/><rect x="91.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="91" y="88" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="103" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="13" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="28" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="43" width="14" height="14" fill="#9be9a8"/><rect x="106.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="106" y="58" width="14" height="14" fill="#9be9a8"/><rect x="106.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="106" y="73" width="14" height="14" fill="#9be9a8"/><rect x="106.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="106" y="88" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="103" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="13" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="28" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="43" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="58" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="73" width="14" height="14" fill="#40c463"/><rect x="121.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="121" y="88" width="14" height="14" fill="#40c463"/><rect x="121.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="121" y="103" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="13" width="14" height="14" fill="#ebedf0"/><rect x="136.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="28" width="14" height="14" fill="#9be9a8"/><rect x="136.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="136" y="43" width="14" height="14" fill="#9be9a8"/><rect x="136.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="136" y="58" width="14" height="14" fill="#ebedf0"/><rect x="136.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="73" width="14" height="14" fill="#40c463"/><rect x="136.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="136" y="88" width="14" height="14" fill="#ebedf0"/><rect x="136.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="103" width="14" height="14" fill="#9be9a8"/><rect x="136.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="151" y="13" width="14" height="14" fill="#ebedf0"/><rect x="151.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="151" y="28" width="14" height="14" fill="#30a14e"/><rect x="151.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="151" y="43" width="14" height="14" fill="#40c463"/><rect x="151.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="151" y="58" width="14" height="14" fill="#30a14e"/><rect x="151.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="151" y="73" width="14" height="14" fill="#9be9a8"/><rect x="151.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="151" y="88" width="14" height="14" fill="#30a14e"/><rect x="151.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="151" y="103" width="14" height="14" fill="#ebedf0"/><rect x="151.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="166" y="13" width="14" height="14" fill="#9be9a8"/><rect x="166.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="166" y="28" width="14" height="14" fill="#9be9a8"/><rect x="166.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="166" y="43" width="14" height="14" fill="#9be9a8"/><rect x="166.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="166" y="58" width="14" height="14" fill="#30a14e"/><rect x="166.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="166" y="73" width="14" height="14" fill="#40c463"/><rect x="166.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="166" y="88" width="14" height="14" fill="#40c463"/><rect x="166.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="166" y="103" width="14" height="14" fill="#ebedf0"/><rect x="166.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="181" y="13" width="14" height="14" fill="#9be9a8"/><rect x="181.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="181" y="28" width="14" height="14" fill="#40c463"/><rect x="181.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="181" y="43" width="14" height="14" fill="#30a14e"/><rect x="181.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="181" y="58" width="14" height="14" fill="#30a14e"/><rect x="181.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="181" y="73" width="14" height="14" fill="#40c463"/><rect x="181.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="181" y="88" width="14" height="14" fill="#9be9a8"/><rect x="181.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="181" y="103" width="14" height="14" fill="#ebedf0"/><rect x="181.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="196" y="13" width="14" height="14" fill="#9be9a8"/><rect x="196.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="196" y="28" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="196" y="43" width="14" height="14" fill="#30a14e"/><rect x="196.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="196" y="58" width="14" height="14" fill="#30a14e"/><rect x="196.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="196" y="73" width="14" height="14" fill="#40c463"/><rect x="196.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="196" y="88" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="196" y="103" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="211" y="13" width="14" height="14" fill="#ebedf0"/><rect x="211.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="211" y="28" width="14" height="14" fill="#40c463"/><rect x="211.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="211" y="43" width="14" height="14" fill="#ebedf0"/><rect x="211.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="211" y="58" width="14" height="14" fill="#30a14e"/><rect x="211.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="211" y="73" width="14" height="14" fill="#30a14e"/><rect x="211.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="211" y="88" width="14" height="14" fill="#40c463"/><rect x="211.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="211" y="103" width="14" height="14" fill="#ebedf0"/><rect x="211.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="13" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="28" width="14" height="14" fill="#40c463"/><rect x="226.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="226" y="43" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="58" width="14" height="14" fill="#40c463"/><rect x="226.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="226" y="73" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="88" width="14" height="14" fill="#9be9a8"/><rect x="226.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="226" y="103" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="241" y="13" width="14" height="14" fill="#ebedf0"/><rect x="241.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="241" y="28" width="14" height="14" fill="#30a14e"/><rect x="241.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="241" y="43" width="14" height="14" fill="#ebedf0"/><rect x="241.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="241" y="58" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="241" y="73" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="241" y="88" width="14" height="14" fill="#30a14e"/><rect x="241.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="241" y="103" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="256" y="13" width="14" height="14" fill="#9be9a8"/><rect x="256.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="256" y="28" width="14" height="14" fill="#40c463"/><rect x="256.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="256" y="43" width="14" height="14" fill="#9be9a8"/><rect x="256.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="256" y="58" width="14" height="14" fill="#ebedf0"/><rect x="256.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="256" y="73" width="14" height="14" fill="#40c463"/><rect x="256.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="256" y="88" width="14" height="14" fill="#30a14e"/><rect x="256.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="256" y="103" width="14" height="14" fill="#9be9a8"/><rect x="256.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="271" y="13" width="14" height="14" fill="#ebedf0"/><rect x="271.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="271" y="28" width="14" height="14" fill="#40c463"/><rect x="271.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="271" y="43" width="14" height="14" fill="#40c463"/><rect x="271.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="271" y="58" width="14" height="14" fill="#30a14e"/><rect x="271.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="271" y="73" width="14" height="14" fill="#9be9a8"/><rect x="271.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="271" y="88" width="14" height="14" fill="#ebedf0"/><rect x="271.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="271" y="103" width="14" height="14" fill="#9be9a8"/><rect x="271.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="13" width="14" height="14" fill="#ebedf0"/><rect x="286.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="286" y="28" width="14" height="14" fill="#40c463"/><rect x="286.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="286" y="43" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="58" width="14" height="14" fill="#40c463"/><rect x="286.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="286" y="73" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="88" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="103" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="301" y="13" width="14" height="14" fill="#ebedf0"/><rect x="301.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="301" y="28" width="14" height="14" fill="#40c463"/><rect x="301.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="301" y="43" width="14" height="14" fill="#ebedf0"/><rect x="301.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="301" y="58" width="14" height="14" fill="#30a14e"/><rect x="301.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="301" y="73" width="14" height="14" fill="#30a14e"/><rect x="301.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="301" y="88" width="14" height="14" fill="#9be9a8"/><rect x="301.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="301" y="103" width="14" height="14" fill="#9be9a8"/><rect x="301.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="316" y="13" width="14" height="14" fill="#ebedf0"/><rect x="316.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="316" y="28" width="14" height="14" fill="#40c463"/><rect x="316.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="316" y="43" width="14" height="14" fill="#9be9a8"/><rect x="316.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="316" y="58" width="14" height="14" fill="#9be9a8"/><rect x="316.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="316" y="73" width="14" height="14" fill="#40c463"/><rect x="316.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="316" y="88" width="14" height="14" fill="#30a14e"/><rect x="316.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="316" y="103" width="14" height="14" fill="#ebedf0"/><rect x="316.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="331" y="13" width="14" height="14" fill="#ebedf0"/><rect x="331.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="331" y="28" width="14" height="14" fill="#ebedf0"/><rect x="331.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="331" y="43" width="14" height="14" fill="#9be9a8"/><rect x="331.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="331" y="58" width="14" height="14" fill="#9be9a8"/><rect x="331.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="331" y="73" width="14" height="14" fill="#30a14e"/><rect x="331.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="331" y="88" width="14" height="14" fill="#30a14e"/><rect x="331.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="331" y="103" width="14" height="14" fill="#ebedf0"/><rect x="331.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="346" y="13" width="14" height="14" fill="#40c463"/><rect x="346.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="346" y="28" width="14" height="14" fill="#216e39"/><rect x="346.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="346" y="43" width="14" height="14" fill="#9be9a8"/><rect x="346.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="346" y="58" width="14" height="14" fill="#216e39"/><rect x="346.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="346" y="73" width="14" height="14" fill="#216e39"/><rect x="346.5" y="73.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="346" y="88" width="14" height="14" fill="#9be9a8"/><rect x="346.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="346" y="103" width="14" height="14" fill="#9be9a8"/><rect x="346.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="361" y="13" width="14" height="14" fill="#ebedf0"/><rect x="361.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="361" y="28" width="14" height="14" fill="#9be9a8"/><rect x="361.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="361" y="43" width="14" height="14" fill="#216e39"/><rect x="361.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="361" y="58" width="14" height="14" fill="#40c463"/><rect x="361.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="361" y="73" width="14" height="14" fill="#216e39"/><rect x="361.5" y="73.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="361" y="88" width="14" height="14" fill="#30a14e"/><rect x="361.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="361" y="103" width="14" height="14" fill="#9be9a8"/><rect x="361.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="376" y="13" width="14" height="14" fill="#ebedf0"/><rect x="376.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="376" y="28" width="14" height="14" fill="#40c463"/><rect x="376.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="376" y="43" width="14" height="14" fill="#30a14e"/><rect x="376.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="376" y="58" width="14" height="14" fill="#216e39"/><rect x="376.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="376" y="73" width="14" height="14" fill="#216e39"/><rect x="376.5" y="73.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="376" y="88" width="14" height="14" fill="#30a14e"/><rect x="376.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="376" y="103" width="14" height="14" fill="#40c463"/><rect x="376.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="13" width="14" height="14" fill="#40c463"/><rect x="391.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="28" width="14" height="14" fill="#40c463"/><rect x="391.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="43" width="14" height="14" fill="#40c463"/><rect x="391.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="58" width="14" height="14" fill="#30a14e"/><rect x="391.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="391" y="73" width="14" height="14" fill="#40c463"/><rect x="391.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="88" width="14" height="14" fill="#30a14e"/><rect x="391.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="391" y="103" width="14" height="14" fill="#ebedf0"/><rect x="391.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="406" y="13" width="14" height="14" fill="#40c463"/><rect x="406.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="406" y="28" width="14" height="14" fill="#216e39"/><rect x="406.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="406" y="43" width="14" height="14" fill="#9be9a8"/><rect x="406.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="406" y="58" width="14" height="14" fill="#216e39"/><rect x="406.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="406" y="73" width="14" height="14" fill="#30a14e"/><rect x="406.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="406" y="88" width="14" height="14" fill="#40c463"/><rect x="406.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="406" y="103" width="14" height="14" fill="#ebedf0"/><rect x="406.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="421" y="13" width="14" height="14" fill="#40c463"/><rect x="421.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="421" y="28" width="14" height="14" fill="#216e39"/><rect x="421.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="421" y="43" width="14" height="14" fill="#30a14e"/><rect x="421.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="421" y="58" width="14" height="14" fill="#30a14e"/><rect x="421.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="421" y="73" width="14" height="14" fill="#9be9a8"/><rect x="421.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="421" y="88" width="14" height="14" fill="#9be9a8"/><rect x="421.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="421" y="103" width="14" height="14" fill="#ebedf0"/><rect x="421.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="436" y="13" width="14" height="14" fill="#ebedf0"/><rect x="436.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="436" y="28" width="14" height="14" fill="#40c463"/><rect x="436.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="436" y="43" width="14" height="14" fill="#216e39"/><rect x="436.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="436" y="58" width="14" height="14" fill="#30a14e"/><rect x="436.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="436" y="73" width="14" height="14" fill="#216e39"/><rect x="436.5" y="73.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="436" y="88" width="14" height="14" fill="#9be9a8"/><rect x="436.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="436" y="103" width="14" height="14" fill="#40c463"/><rect x="436.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="451" y="13" width="14" height="14" fill="#ebedf0"/><rect x="451.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="451" y="28" width="14" height="14" fill="#9be9a8"/><rect x="451.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="451" y="43" width="14" height="14" fill="#9be9a8"/><rect x="451.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="451" y="58" width="14" height="14" fill="#9be9a8"/><rect x="451.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="451" y="73" width="14" height="14" fill="#40c463"/><rect x="451.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="451" y="88" width="14" height="14" fill="#30a14e"/><rect x="451.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="451" y="103" width="14" height="14" fill="#40c463"/><rect x="451.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="466" y="13" width="14" height="14" fill="#40c463"/><rect x="466.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="466" y="28" width="14" height="14" fill="#216e39"/><rect x="466.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="466" y="43" width="14" height="14" fill="#30a14e"/><rect x="466.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="466" y="58" width="14" height="14" fill="#30a14e"/><rect x="466.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="466" y="73" width="14" height="14" fill="#9be9a8"/><rect x="466.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="466" y="88" width="14" height="14" fill="#216e39"/><rect x="466.5" y="88.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="466" y="103" width="14" height="14" fill="#9be9a8"/><rect x="466.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="481" y="13" width="14" height="14" fill="#9be9a8"/><rect x="481.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="481" y="28" width="14" height="14" fill="#216e39"/><rect x="481.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="481" y="43" width="14" height="14" fill="#9be9a8"/><rect x="481.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="481" y="58" width="14" height="14" fill="#216e39"/><rect x="481.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="481" y="73" width="14" height="14" fill="#40c463"/><rect x="481.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="481" y="88" width="14" height="14" fill="#216e39"/><rect x="481.5" y="88.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="481" y="103" width="14" height="14" fill="#ebedf0"/><rect x="481.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="496" y="13" width="14" height="14" fill="#ebedf0"/><rect x="496.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="496" y="28" width="14" height="14" fill="#216e39"/><rect x="496.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="496" y="43" width="14" height="14" fill="#216e39"/><rect x="496.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="496" y="58" width="14" height="14" fill="#9be9a8"/><rect x="496.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="496" y="73" width="14" height="14" fill="#30a14e"/><rect x="496.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="496" y="88" width="14" height="14" fill="#40c463"/><rect x="496.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="496" y="103" width="14" height="14" fill="#9be9a8"/><rect x="496.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="511" y="13" width="14" height="14" fill="#9be9a8"/><rect x="511.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="511" y="28" width="14" height="14" fill="#30a14e"/><rect x="511.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="511" y="43" width="14" height="14" fill="#40c463"/><rect x="511.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="511" y="58" width="14" height="14" fill="#9be9a8"/><rect x="511.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="511" y="73" width="14" height="14" fill="#30a14e"/><rect x="511.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="511" y="88" width="14" height="14" fill="#40c463"/><rect x="511.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="511" y="103" width="14" height="14" fill="#ebedf0"/><rect x="511.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="526" y="13" width="14" height="14" fill="#40c463"/><rect x="526.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="526" y="28" width="14" height="14" fill="#216e39"/><rect x="526.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="526" y="43" width="14" height="14" fill="#40c463"/><rect x="526.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="526" y="58" width="14" height="14" fill="#30a14e"/><rect x="526.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="526" y="73" width="14" height="14" fill="#9be9a8"/><rect x="526.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="526" y="88" width="14" height="14" fill="#40c463"/><rect x="526.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="526" y="103" width="14" height="14" fill="#9be9a8"/><rect x="526.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="541" y="13" width="14" height="14" fill="#40c463"/><rect x="541.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="541" y="28" width="14" height="14" fill="#9be9a8"/><rect x="541.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="541" y="43" width="14" height="14" fill="#30a14e"/><rect x="541.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="541" y="58" width="14" height="14" fill="#ebedf0"/><rect x="541.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="541" y="73" width="14" height="14" fill="#ebedf0"/><rect x="541.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="541" y="88" width="14" height="14" fill="#30a14e"/><rect x="541.5" y="88.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="541" y="103" width="14" height="14" fill="#ebedf0"/><rect x="541.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="556" y="13" width="14" height="14" fill="#9be9a8"/><rect x="556.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="556" y="28" width="14" height="14" fill="#9be9a8"/><rect x="556.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="556" y="43" width="14" height="14" fill="#40c463"/><rect x="556.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="556" y="58" width="14" height="14" fill="#ebedf0"/><rect x="556.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="556" y="73" width="14" height="14" fill="#9be9a8"/><rect x="556.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="556" y="88" width="14" height="14" fill="#40c463"/><rect x="556.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="556" y="103" width="14" height="14" fill="#40c463"/><rect x="556.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="13" width="14" height="14" fill="#9be9a8"/><rect x="571.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="571" y="28" width="14" height="14" fill="#9be9a8"/><rect x="571.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="571" y="43" width="14" height="14" fill="#40c463"/><rect x="571.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="58" width="14" height="14" fill="#40c463"/><rect x="571.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="73" width="14" height="14" fill="#40c463"/><rect x="571.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="88" width="14" height="14" fill="#40c463"/><rect x="571.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><text x="31" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Jan</text><text x="91" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Feb</text><text x="151" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Mar</text><text x="226" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Apr</text><text x="286" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">May</text><text x="346" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Jun</text><text x="421" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Jul</text><text x="481" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Aug</text><text x="556" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Sep</text>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="586" height="118" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<text x="8" y="22.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">M</text><text x="8" y="37.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">T</text><text x="8" y="52.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">W</text><text x="8" y="67.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">T</text><text x="8" y="82.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">F</text><text x="8" y="97.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">S</text><text x="8" y="112.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666666">S</text><rect x="16" y="13" width="14" height="14" fill="#e9eaec"/><rect x="16.5" y="13.5" width="13" height="13" fill="none" stroke="#d1d2d4" stroke-width="1"/><rect x="16" y="28" width="14" height="14" fill="#e9eaec"/><rect x="16.5" y="28.5" width="13" height="13" fill="none" stroke="#d1d2d4" stroke-width="1"/><rect x="16" y="43" width="14" height="14" fill="#ebedf0"/><rect x="16.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="16" y="58" width="14" height="14" fill="#40c463"/><rect x="16.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="16" y="73" width="14" height="14" fill="#40c463"/><rect x="16.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="16" y="88" width="14" height="14" fill="#ebedf0"/><rect x="16.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="16" y="103" width="14" height="14" fill="#ebedf0"/><rect x="16.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="13" width="14" height="14" fill="#9be9a8"/><rect x="31.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="31" y="28" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="43" width="14" height="14" fill="#9be9a8"/><rect x="31.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="31" y="58" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="73" width="14" height="14" fill="#9be9a8"/><rect x="31.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="31" y="88" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="31" y="103" width="14" height="14" fill="#ebedf0"/><rect x="31.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="13" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="28" width="14" height="14" fill="#40c463"/><rect x="46.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="46" y="43" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="58" width="14" height="14" fill="#9be9a8"/><rect x="46.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="46" y="73" width="14" height="14" fill="#9be9a8"/><rect x="46.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="46" y="88" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="46" y="103" width="14" height="14" fill="#ebedf0"/><rect x="46.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="13" width="14" height="14" fill="#9be9a8"/><rect x="61.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="61" y="28" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="43" width="14" height="14" fill="#9be9a8"/><rect x="61.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="61" y="58" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="73" width="14" height="14" fill="#40c463"/><rect x="61.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="61" y="88" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="61" y="103" width="14" height="14" fill="#ebedf0"/><rect x="61.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="13" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="28" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="43" width="14" height="14" fill="#40c463"/><rect x="76.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="76" y="58" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="73" width="14" height="14" fill="#40c463"/><rect x="76.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="76" y="88" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="76" y="103" width="14" height="14" fill="#ebedf0"/><rect x="76.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="13" width="14" height="14" fill="#9be9a8"/><rect x="91.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="91" y="28" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="43" width="14" height="14" fill="#40c463"/><rect x="91.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="91" y="58" width="14" height="14" fill="#9be9a8"/><rect x="91.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="91" y="73" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="88" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="91" y="103" width="14" height="14" fill="#ebedf0"/><rect x="91.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="13" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="28" width="14" height="14" fill="#9be9a8"/><rect x="106.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="106" y="43" width="14" height="14" fill="#9be9a8"/><rect x="106.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="106" y="58" width="14" height="14" fill="#9be9a8"/><rect x="106.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="106" y="73" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="88" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="106" y="103" width="14" height="14" fill="#ebedf0"/><rect x="106.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="13" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="28" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="43" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="58" width="14" height="14" fill="#40c463"/><rect x="121.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="121" y="73" width="14" height="14" fill="#40c463"/><rect x="121.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="121" y="88" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="121" y="103" width="14" height="14" fill="#ebedf0"/><rect x="121.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="13" width="14" height="14" fill="#9be9a8"/><rect x="136.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="136" y="28" width="14" height="14" fill="#9be9a8"/><rect x="136.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="136" y="43" width="14" height="14" fill="#ebedf0"/><rect x="136.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="58" width="14" height="14" fill="#40c463"/><rect x="136.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="136" y="73" width="14" height="14" fill="#ebedf0"/><rect x="136.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="136" y="88" width="14" height="14" fill="#9be9a8"/><rect x="136.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="136" y="103" width="14" height="14" fill="#ebedf0"/><rect x="136.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="151" y="13" width="14" height="14" fill="#30a14e"/><rect x="151.5" y="13.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="151" y="28" width="14" height="14" fill="#40c463"/><rect x="151.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="151" y="43" width="14" height="14" fill="#30a14e"/><rect x="151.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="151" y="58" width="14" height="14" fill="#9be9a8"/><rect x="151.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="151" y="73" width="14" height="14" fill="#30a14e"/><rect x="151.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="151" y="88" width="14" height="14" fill="#ebedf0"/><rect x="151.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="151" y="103" width="14" height="14" fill="#9be9a8"/><rect x="151.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="166" y="13" width="14" height="14" fill="#9be9a8"/><rect x="166.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="166" y="28" width="14" height="14" fill="#9be9a8"/><rect x="166.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="166" y="43" width="14" height="14" fill="#30a14e"/><rect x="166.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="166" y="58" width="14" height="14" fill="#40c463"/><rect x="166.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="166" y="73" width="14" height="14" fill="#40c463"/><rect x="166.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="166" y="88" width="14" height="14" fill="#ebedf0"/><rect x="166.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="166" y="103" width="14" height="14" fill="#9be9a8"/><rect x="166.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="181" y="13" width="14" height="14" fill="#40c463"/><rect x="181.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="181" y="28" width="14" height="14" fill="#30a14e"/><rect x="181.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="181" y="43" width="14" height="14" fill="#30a14e"/><rect x="181.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="181" y="58" width="14" height="14" fill="#40c463"/><rect x="181.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="181" y="73" width="14" height="14" fill="#9be9a8"/><rect x="181.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="181" y="88" width="14" height="14" fill="#ebedf0"/><rect x="181.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="181" y="103" width="14" height="14" fill="#9be9a8"/><rect x="181.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="196" y="13" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="196" y="28" width="14" height="14" fill="#30a14e"/><rect x="196.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="196" y="43" width="14" height="14" fill="#30a14e"/><rect x="196.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="196" y="58" width="14" height="14" fill="#40c463"/><rect x="196.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="196" y="73" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="196" y="88" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="196" y="103" width="14" height="14" fill="#ebedf0"/><rect x="196.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="211" y="13" width="14" height="14" fill="#40c463"/><rect x="211.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="211" y="28" width="14" height="14" fill="#ebedf0"/><rect x="211.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="211" y="43" width="14" height="14" fill="#30a14e"/><rect x="211.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="211" y="58" width="14" height="14" fill="#30a14e"/><rect x="211.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="211" y="73" width="14" height="14" fill="#40c463"/><rect x="211.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="211" y="88" width="14" height="14" fill="#ebedf0"/><rect x="211.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="211" y="103" width="14" height="14" fill="#ebedf0"/><rect x="211.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="13" width="14" height="14" fill="#40c463"/><rect x="226.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="226" y="28" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="43" width="14" height="14" fill="#40c463"/><rect x="226.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="226" y="58" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="73" width="14" height="14" fill="#9be9a8"/><rect x="226.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="226" y="88" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="226" y="103" width="14" height="14" fill="#ebedf0"/><rect x="226.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="241" y="13" width="14" height="14" fill="#30a14e"/><rect x="241.5" y="13.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="241" y="28" width="14" height="14" fill="#ebedf0"/><rect x="241.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="241" y="43" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="241" y="58" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="241" y="73" width="14" height="14" fill="#30a14e"/><rect x="241.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="241" y="88" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="241" y="103" width="14" height="14" fill="#9be9a8"/><rect x="241.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="256" y="13" width="14" height="14" fill="#40c463"/><rect x="256.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="256" y="28" width="14" height="14" fill="#9be9a8"/><rect x="256.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="256" y="43" width="14" height="14" fill="#ebedf0"/><rect x="256.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="256" y="58" width="14" height="14" fill="#40c463"/><rect x="256.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="256" y="73" width="14" height="14" fill="#30a14e"/><rect x="256.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="256" y="88" width="14" height="14" fill="#9be9a8"/><rect x="256.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="256" y="103" width="14" height="14" fill="#ebedf0"/><rect x="256.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="271" y="13" width="14" height="14" fill="#40c463"/><rect x="271.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="271" y="28" width="14" height="14" fill="#40c463"/><rect x="271.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="271" y="43" width="14" height="14" fill="#30a14e"/><rect x="271.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="271" y="58" width="14" height="14" fill="#9be9a8"/><rect x="271.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="271" y="73" width="14" height="14" fill="#ebedf0"/><rect x="271.5" y="73.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="271" y="88" width="14" height="14" fill="#9be9a8"/><rect x="271.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="271" y="103" width="14" height="14" fill="#ebedf0"/><rect x="271.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="286" y="13" width="14" height="14" fill="#40c463"/><rect x="286.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="286" y="28" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="43" width="14" height="14" fill="#40c463"/><rect x="286.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="286" y="58" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="73" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="88" width="14" height="14" fill="#9be9a8"/><rect x="286.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="286" y="103" width="14" height="14" fill="#ebedf0"/><rect x="286.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="301" y="13" width="14" height="14" fill="#40c463"/><rect x="301.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="301" y="28" width="14" height="14" fill="#ebedf0"/><rect x="301.5" y="28.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="301" y="43" width="14" height="14" fill="#30a14e"/><rect x="301.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="301" y="58" width="14" height="14" fill="#30a14e"/><rect x="301.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="301" y="73" width="14" height="14" fill="#9be9a8"/><rect x="301.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="301" y="88" width="14" height="14" fill="#9be9a8"/><rect x="301.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="301" y="103" width="14" height="14" fill="#ebedf0"/><rect x="301.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="316" y="13" width="14" height="14" fill="#40c463"/><rect x="316.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="316" y="28" width="14" height="14" fill="#9be9a8"/><rect x="316.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="316" y="43" width="14" height="14" fill="#9be9a8"/><rect x="316.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="316" y="58" width="14" height="14" fill="#40c463"/><rect x="316.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="316" y="73" width="14" height="14" fill="#30a14e"/><rect x="316.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="316" y="88" width="14" height="14" fill="#ebedf0"/><rect x="316.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="316" y="103" width="14" height="14" fill="#ebedf0"/><rect x="316.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="331" y="13" width="14" height="14" fill="#ebedf0"/><rect x="331.5" y="13.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="331" y="28" width="14" height="14" fill="#9be9a8"/><rect x="331.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="331" y="43" width="14" height="14" fill="#9be9a8"/><rect x="331.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="331" y="58" width="14" height="14" fill="#30a14e"/><rect x="331.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="331" y="73" width="14" height="14" fill="#30a14e"/><rect x="331.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="331" y="88" width="14" height="14" fill="#ebedf0"/><rect x="331.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="331" y="103" width="14" height="14" fill="#40c463"/><rect x="331.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="346" y="13" width="14" height="14" fill="#216e39"/><rect x="346.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="346" y="28" width="14" height="14" fill="#9be9a8"/><rect x="346.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="346" y="43" width="14" height="14" fill="#216e39"/><rect x="346.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="346" y="58" width="14" height="14" fill="#216e39"/><rect x="346.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="346" y="73" width="14" height="14" fill="#9be9a8"/><rect x="346.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="346" y="88" width="14" height="14" fill="#9be9a8"/><rect x="346.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="346" y="103" width="14" height="14" fill="#ebedf0"/><rect x="346.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="361" y="13" width="14" height="14" fill="#9be9a8"/><rect x="361.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="361" y="28" width="14" height="14" fill="#216e39"/><rect x="361.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="361" y="43" width="14" height="14" fill="#40c463"/><rect x="361.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="361" y="58" width="14" height="14" fill="#216e39"/><rect x="361.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="361" y="73" width="14" height="14" fill="#30a14e"/><rect x="361.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="361" y="88" width="14" height="14" fill="#9be9a8"/><rect x="361.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="361" y="103" width="14" height="14" fill="#ebedf0"/><rect x="361.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="376" y="13" width="14" height="14" fill="#40c463"/><rect x="376.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="376" y="28" width="14" height="14" fill="#30a14e"/><rect x="376.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="376" y="43" width="14" height="14" fill="#216e39"/><rect x="376.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="376" y="58" width="14" height="14" fill="#216e39"/><rect x="376.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="376" y="73" width="14" height="14" fill="#30a14e"/><rect x="376.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="376" y="88" width="14" height="14" fill="#40c463"/><rect x="376.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="376" y="103" width="14" height="14" fill="#40c463"/><rect x="376.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="13" width="14" height="14" fill="#40c463"/><rect x="391.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="28" width="14" height="14" fill="#40c463"/><rect x="391.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="43" width="14" height="14" fill="#30a14e"/><rect x="391.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="391" y="58" width="14" height="14" fill="#40c463"/><rect x="391.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="391" y="73" width="14" height="14" fill="#30a14e"/><rect x="391.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="391" y="88" width="14" height="14" fill="#ebedf0"/><rect x="391.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="391" y="103" width="14" height="14" fill="#40c463"/><rect x="391.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="406" y="13" width="14" height="14" fill="#216e39"/><rect x="406.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="406" y="28" width="14" height="14" fill="#9be9a8"/><rect x="406.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="406" y="43" width="14" height="14" fill="#216e39"/><rect x="406.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="406" y="58" width="14" height="14" fill="#30a14e"/><rect x="406.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="406" y="73" width="14" height="14" fill="#40c463"/><rect x="406.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="406" y="88" width="14" height="14" fill="#ebedf0"/><rect x="406.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="406" y="103" width="14" height="14" fill="#40c463"/><rect x="406.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="421" y="13" width="14" height="14" fill="#216e39"/><rect x="421.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="421" y="28" width="14" height="14" fill="#30a14e"/><rect x="421.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="421" y="43" width="14" height="14" fill="#30a14e"/><rect x="421.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="421" y="58" width="14" height="14" fill="#9be9a8"/><rect x="421.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="421" y="73" width="14" height="14" fill="#9be9a8"/><rect x="421.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="421" y="88" width="14" height="14" fill="#ebedf0"/><rect x="421.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="421" y="103" width="14" height="14" fill="#ebedf0"/><rect x="421.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="436" y="13" width="14" height="14" fill="#40c463"/><rect x="436.5" y="13.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="436" y="28" width="14" height="14" fill="#216e39"/><rect x="436.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="436" y="43" width="14" height="14" fill="#30a14e"/><rect x="436.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="436" y="58" width="14" height="14" fill="#216e39"/><rect x="436.5" y="58.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="436" y="73" width="14" height="14" fill="#9be9a8"/><rect x="436.5" y="73.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="436" y="88" width="14" height="14" fill="#40c463"/><rect x="436.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="436" y="103" width="14" height="14" fill="#ebedf0"/><rect x="436.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="451" y="13" width="14" height="14" fill="#9be9a8"/><rect x="451.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="451" y="28" width="14" height="14" fill="#9be9a8"/><rect x="451.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="451" y="43" width="14" height="14" fill="#9be9a8"/><rect x="451.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="451" y="58" width="14" height="14" fill="#40c463"/><rect x="451.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="451" y="73" width="14" height="14" fill="#30a14e"/><rect x="451.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="451" y="88" width="14" height="14" fill="#40c463"/><rect x="451.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="451" y="103" width="14" height="14" fill="#40c463"/><rect x="451.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="466" y="13" width="14" height="14" fill="#216e39"/><rect x="466.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="466" y="28" width="14" height="14" fill="#30a14e"/><rect x="466.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="466" y="43" width="14" height="14" fill="#30a14e"/><rect x="466.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="466" y="58" width="14" height="14" fill="#9be9a8"/><rect x="466.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="466" y="73" width="14" height="14" fill="#216e39"/><rect x="466.5" y="73.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="466" y="88" width="14" height="14" fill="#9be9a8"/><rect x="466.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="466" y="103" width="14" height="14" fill="#9be9a8"/><rect x="466.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="481" y="13" width="14" height="14" fill="#216e39"/><rect x="481.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="481" y="28" width="14" height="14" fill="#9be9a8"/><rect x="481.5" y="28.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="481" y="43" width="14" height="14" fill="#216e39"/><rect x="481.5" y="43.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="481" y="58" width="14" height="14" fill="#40c463"/><rect x="481.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="481" y="73" width="14" height="14" fill="#216e39"/><rect x="481.5" y="73.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="481" y="88" width="14" height="14" fill="#ebedf0"/><rect x="481.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="481" y="103" width="14" height="14" fill="#ebedf0"/><rect x="481.5" y="103.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="496" y="13" width="14" height="14" fill="#216e39"/><rect x="496.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="496" y="28" width="14" height="14" fill="#216e39"/><rect x="496.5" y="28.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="496" y="43" width="14" height="14" fill="#9be9a8"/><rect x="496.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="496" y="58" width="14" height="14" fill="#30a14e"/><rect x="496.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="496" y="73" width="14" height="14" fill="#40c463"/><rect x="496.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="496" y="88" width="14" height="14" fill="#9be9a8"/><rect x="496.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="496" y="103" width="14" height="14" fill="#9be9a8"/><rect x="496.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="511" y="13" width="14" height="14" fill="#30a14e"/><rect x="511.5" y="13.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="511" y="28" width="14" height="14" fill="#40c463"/><rect x="511.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="511" y="43" width="14" height="14" fill="#9be9a8"/><rect x="511.5" y="43.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="511" y="58" width="14" height="14" fill="#30a14e"/><rect x="511.5" y="58.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="511" y="73" width="14" height="14" fill="#40c463"/><rect x="511.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="511" y="88" width="14" height="14" fill="#ebedf0"/><rect x="511.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="511" y="103" width="14" height="14" fill="#40c463"/><rect x="511.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="526" y="13" width="14" height="14" fill="#216e39"/><rect x="526.5" y="13.5" width="13" height="13" fill="none" stroke="#1d6333" stroke-width="1"/><rect x="526" y="28" width="14" height="14" fill="#40c463"/><rect x="526.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="526" y="43" width="14" height="14" fill="#30a14e"/><rect x="526.5" y="43.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="526" y="58" width="14" height="14" fill="#9be9a8"/><rect x="526.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="526" y="73" width="14" height="14" fill="#40c463"/><rect x="526.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="526" y="88" width="14" height="14" fill="#9be9a8"/><rect x="526.5" y="88.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="526" y="103" width="14" height="14" fill="#40c463"/><rect x="526.5" y="103.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="541" y="13" width="14" height="14" fill="#9be9a8"/><rect x="541.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="541" y="28" width="14" height="14" fill="#30a14e"/><rect x="541.5" y="28.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="541" y="43" width="14" height="14" fill="#ebedf0"/><rect x="541.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="541" y="58" width="14" height="14" fill="#ebedf0"/><rect x="541.5" y="58.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="541" y="73" width="14" height="14" fill="#30a14e"/><rect x="541.5" y="73.5" width="13" height="13" fill="none" stroke="#2b9046" stroke-width="1"/><rect x="541" y="88" width="14" height="14" fill="#ebedf0"/><rect x="541.5" y="88.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="541" y="103" width="14" height="14" fill="#9be9a8"/><rect x="541.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="556" y="13" width="14" height="14" fill="#9be9a8"/><rect x="556.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="556" y="28" width="14" height="14" fill="#40c463"/><rect x="556.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="556" y="43" width="14" height="14" fill="#ebedf0"/><rect x="556.5" y="43.5" width="13" height="13" fill="none" stroke="#d3d5d8" stroke-width="1"/><rect x="556" y="58" width="14" height="14" fill="#9be9a8"/><rect x="556.5" y="58.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="556" y="73" width="14" height="14" fill="#40c463"/><rect x="556.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="556" y="88" width="14" height="14" fill="#40c463"/><rect x="556.5" y="88.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="556" y="103" width="14" height="14" fill="#9be9a8"/><rect x="556.5" y="103.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="571" y="13" width="14" height="14" fill="#9be9a8"/><rect x="571.5" y="13.5" width="13" height="13" fill="none" stroke="#8bd197" stroke-width="1"/><rect x="571" y="28" width="14" height="14" fill="#40c463"/><rect x="571.5" y="28.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="43" width="14" height="14" fill="#40c463"/><rect x="571.5" y="43.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="58" width="14" height="14" fill="#40c463"/><rect x="571.5" y="58.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="73" width="14" height="14" fill="#40c463"/><rect x="571.5" y="73.5" width="13" height="13" fill="none" stroke="#39b059" stroke-width="1"/><rect x="571" y="88" width="14" height="14" fill="#e9eaec"/><rect x="571.5" y="88.5" width="13" height="13" fill="none" stroke="#d1d2d4" stroke-width="1"/><rect x="571" y="103" width="14" height="14" fill="#e9eaec"/><rect x="571.5" y="103.5" width="13" height="13" fill="none" stroke="#d1d2d4" stroke-width="1"/><text x="31" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Jan</text><text x="91" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Feb</text><text x="151" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Mar</text><text x="226" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Apr</text><text x="286" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">May</text><text x="346" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Jun</text><text x="421" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Jul</text><text x="481" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Aug</text><text x="541" y="10" font-family="Arial, sans-serif" font-size="8" fill="#666666">Sep</text>
|
3
|
+
</svg>
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "date"
|
4
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
|
5
|
+
require "heatmap-builder"
|
6
|
+
|
7
|
+
def generate_sample_svgs
|
8
|
+
# Create examples directory for SVG files
|
9
|
+
Dir.mkdir("examples") unless Dir.exist?("examples")
|
10
|
+
|
11
|
+
generated_files = []
|
12
|
+
|
13
|
+
# Basic weekly progress
|
14
|
+
puts "Generating basic weekly progress..."
|
15
|
+
weekly_scores = [0, 1, 3, 2, 4, 1, 0]
|
16
|
+
svg = HeatmapBuilder.generate(weekly_scores, cell_size: 18)
|
17
|
+
filepath = "examples/weekly_progress.svg"
|
18
|
+
File.write(filepath, svg)
|
19
|
+
generated_files << filepath
|
20
|
+
|
21
|
+
# Large cells example
|
22
|
+
puts "Generating large cells example..."
|
23
|
+
large_cell_scores = [1, 2, 3, 4, 5, 6, 7]
|
24
|
+
svg = HeatmapBuilder.generate(large_cell_scores, {
|
25
|
+
cell_size: 35,
|
26
|
+
cell_spacing: 1,
|
27
|
+
font_size: 20
|
28
|
+
})
|
29
|
+
filepath = "examples/large_cells.svg"
|
30
|
+
File.write(filepath, svg)
|
31
|
+
generated_files << filepath
|
32
|
+
|
33
|
+
# GitHub-style calendar
|
34
|
+
puts "Generating GitHub-style calendar..."
|
35
|
+
calendar_data = sample_calendar_data
|
36
|
+
svg = HeatmapBuilder.generate_calendar(calendar_data, {
|
37
|
+
cell_size: 14,
|
38
|
+
month_spacing: 0
|
39
|
+
})
|
40
|
+
filepath = "examples/calendar_github_style.svg"
|
41
|
+
File.write(filepath, svg)
|
42
|
+
generated_files << filepath
|
43
|
+
|
44
|
+
# Calendar with Sunday start
|
45
|
+
puts "Generating calendar with Sunday start..."
|
46
|
+
svg = HeatmapBuilder.generate_calendar(calendar_data, {
|
47
|
+
cell_size: 14,
|
48
|
+
start_of_week: :sunday,
|
49
|
+
month_spacing: 0
|
50
|
+
})
|
51
|
+
filepath = "examples/calendar_sunday_start.svg"
|
52
|
+
File.write(filepath, svg)
|
53
|
+
generated_files << filepath
|
54
|
+
|
55
|
+
# Calendar with outside cells
|
56
|
+
puts "Generating calendar with outside cells..."
|
57
|
+
svg = HeatmapBuilder.generate_calendar(calendar_data, {
|
58
|
+
cell_size: 14,
|
59
|
+
show_outside_cells: true,
|
60
|
+
month_spacing: 0
|
61
|
+
})
|
62
|
+
filepath = "examples/calendar_with_outside_cells.svg"
|
63
|
+
File.write(filepath, svg)
|
64
|
+
generated_files << filepath
|
65
|
+
|
66
|
+
puts "\nā
Sample SVG files generated successfully!"
|
67
|
+
puts "š Generated files:"
|
68
|
+
generated_files.each do |file|
|
69
|
+
puts " - #{file}"
|
70
|
+
end
|
71
|
+
puts "š Total files: #{generated_files.length}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def sample_calendar_data
|
75
|
+
# Generate sample data for a full year
|
76
|
+
end_date = Date.today
|
77
|
+
start_date = Date.new(end_date.year, 1, 1)
|
78
|
+
|
79
|
+
data = {}
|
80
|
+
current_date = start_date
|
81
|
+
|
82
|
+
while current_date <= end_date
|
83
|
+
# Create some realistic activity patterns with seasonal variation
|
84
|
+
base_activity = case current_date.month
|
85
|
+
when 1, 2, 12 # Winter - lower activity
|
86
|
+
[0, 0, 0, 1, 1, 2]
|
87
|
+
when 3, 4, 5 # Spring - increasing activity
|
88
|
+
[0, 1, 1, 2, 2, 3, 3]
|
89
|
+
when 6, 7, 8 # Summer - peak activity
|
90
|
+
[1, 2, 2, 3, 3, 4, 4, 5]
|
91
|
+
when 9, 10, 11 # Fall - moderate activity
|
92
|
+
[0, 1, 2, 2, 3, 3]
|
93
|
+
end
|
94
|
+
|
95
|
+
# Weekend vs weekday patterns
|
96
|
+
score = case current_date.wday
|
97
|
+
when 0, 6 # Weekend - reduced activity
|
98
|
+
([0, 0] + base_activity.take(3)).sample
|
99
|
+
else # Weekday - normal patterns
|
100
|
+
base_activity.sample
|
101
|
+
end
|
102
|
+
|
103
|
+
data[current_date.to_s] = score
|
104
|
+
|
105
|
+
current_date += 1
|
106
|
+
end
|
107
|
+
|
108
|
+
data
|
109
|
+
end
|
110
|
+
|
111
|
+
# Run the generator
|
112
|
+
if __FILE__ == $0
|
113
|
+
generate_sample_svgs
|
114
|
+
end
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="251" height="35" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="0" y="0" width="35" height="35" fill="#9be9a8"/><rect x="0.5" y="0.5" width="34" height="34" fill="none" stroke="#6ca375" stroke-width="1"/><text x="17" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#000000">1</text><rect x="36" y="0" width="35" height="35" fill="#40c463"/><rect x="36.5" y="0.5" width="34" height="34" fill="none" stroke="#2c8945" stroke-width="1"/><text x="53" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#000000">2</text><rect x="72" y="0" width="35" height="35" fill="#30a14e"/><rect x="72.5" y="0.5" width="34" height="34" fill="none" stroke="#217036" stroke-width="1"/><text x="89" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#ffffff">3</text><rect x="108" y="0" width="35" height="35" fill="#216e39"/><rect x="108.5" y="0.5" width="34" height="34" fill="none" stroke="#174d27" stroke-width="1"/><text x="125" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#ffffff">4</text><rect x="144" y="0" width="35" height="35" fill="#9be9a8"/><rect x="144.5" y="0.5" width="34" height="34" fill="none" stroke="#6ca375" stroke-width="1"/><text x="161" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#000000">5</text><rect x="180" y="0" width="35" height="35" fill="#40c463"/><rect x="180.5" y="0.5" width="34" height="34" fill="none" stroke="#2c8945" stroke-width="1"/><text x="197" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#000000">6</text><rect x="216" y="0" width="35" height="35" fill="#30a14e"/><rect x="216.5" y="0.5" width="34" height="34" fill="none" stroke="#217036" stroke-width="1"/><text x="233" y="24.0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" fill="#ffffff">7</text>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="132" height="18" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="0" y="0" width="18" height="18" fill="#ebedf0"/><rect x="0.5" y="0.5" width="17" height="17" fill="none" stroke="#a4a5a8" stroke-width="1"/><text x="9" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#000000">0</text><rect x="19" y="0" width="18" height="18" fill="#9be9a8"/><rect x="19.5" y="0.5" width="17" height="17" fill="none" stroke="#6ca375" stroke-width="1"/><text x="28" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#000000">1</text><rect x="38" y="0" width="18" height="18" fill="#30a14e"/><rect x="38.5" y="0.5" width="17" height="17" fill="none" stroke="#217036" stroke-width="1"/><text x="47" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#ffffff">3</text><rect x="57" y="0" width="18" height="18" fill="#40c463"/><rect x="57.5" y="0.5" width="17" height="17" fill="none" stroke="#2c8945" stroke-width="1"/><text x="66" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#000000">2</text><rect x="76" y="0" width="18" height="18" fill="#216e39"/><rect x="76.5" y="0.5" width="17" height="17" fill="none" stroke="#174d27" stroke-width="1"/><text x="85" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#ffffff">4</text><rect x="95" y="0" width="18" height="18" fill="#9be9a8"/><rect x="95.5" y="0.5" width="17" height="17" fill="none" stroke="#6ca375" stroke-width="1"/><text x="104" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#000000">1</text><rect x="114" y="0" width="18" height="18" fill="#ebedf0"/><rect x="114.5" y="0.5" width="17" height="17" fill="none" stroke="#a4a5a8" stroke-width="1"/><text x="123" y="11.8" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#000000">0</text>
|
3
|
+
</svg>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "heatmap_builder/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "heatmap-builder"
|
7
|
+
spec.version = HeatmapBuilder::VERSION
|
8
|
+
spec.authors = ["Alex Musayev"]
|
9
|
+
spec.email = ["alex.musayev@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "Generate SVG heatmap visualizations"
|
12
|
+
spec.description = "A Ruby gem that generates embeddable GitHub-style heatmap visualization in SVG format."
|
13
|
+
spec.homepage = "https://github.com/dreikanter/heatmap-builder"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
21
|
+
spec.metadata["source_code_uri"] = "#{spec.homepage}.git"
|
22
|
+
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
|
23
|
+
else
|
24
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
25
|
+
end
|
26
|
+
|
27
|
+
# Specify which files should be added to the gem when it is released.
|
28
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
29
|
+
spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
|
30
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
31
|
+
end
|
32
|
+
|
33
|
+
spec.bindir = "exe"
|
34
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
35
|
+
spec.require_paths = ["lib"]
|
36
|
+
|
37
|
+
spec.required_ruby_version = ">= 3.0"
|
38
|
+
|
39
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
40
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
41
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
42
|
+
spec.add_development_dependency "standard", "~> 1.0"
|
43
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative "heatmap_builder/version"
|
2
|
+
require_relative "heatmap_builder/linear_heatmap_builder"
|
3
|
+
require_relative "heatmap_builder/calendar_heatmap_builder"
|
4
|
+
|
5
|
+
module HeatmapBuilder
|
6
|
+
class Error < StandardError; end
|
7
|
+
|
8
|
+
def self.generate(scores, options = {})
|
9
|
+
LinearHeatmapBuilder.new(scores, options).generate
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.generate_calendar(scores_by_date, options = {})
|
13
|
+
CalendarHeatmapBuilder.new(scores_by_date, options).generate
|
14
|
+
end
|
15
|
+
end
|