diff --git a/.gitignore b/.gitignore
index 80934aa5c..5570f392a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,4 +10,9 @@ secrets.properties
# This covers new IDEs, like Antigravity
.vscode/
**/bin/
-.kotlin/
\ No newline at end of file
+.kotlin/
+eval_runs/
+scripts/eval/
+scripts/run_artemis_suite.py
+__pycache__/
+*.pyc
\ No newline at end of file
diff --git a/ApiDemos/project/common-ui/src/main/res/raw/fowler_rattlesnake.gpx b/ApiDemos/project/common-ui/src/main/res/raw/fowler_rattlesnake.gpx
new file mode 100644
index 000000000..5da78b33b
--- /dev/null
+++ b/ApiDemos/project/common-ui/src/main/res/raw/fowler_rattlesnake.gpx
@@ -0,0 +1,19101 @@
+
+
+
+
+
+
+
+ Fowler / Rattlesnake
+ trail_running
+
+
+ 1779.4
+
+
+
+ 27
+ 88
+ 0
+
+
+
+
+ 1780.4
+
+
+
+ 27
+ 88
+ 0
+
+
+
+
+ 1781.2
+
+
+
+ 27
+ 92
+ 0
+
+
+
+
+ 1781.6
+
+
+
+ 27
+ 94
+ 53
+
+
+
+
+ 1781.8
+
+
+
+ 27
+ 93
+ 0
+
+
+
+
+ 1782.6
+
+
+
+ 27
+ 93
+ 85
+
+
+
+
+ 1783.6
+
+
+
+ 27
+ 94
+ 85
+
+
+
+
+ 1784.8
+
+
+
+ 27
+ 97
+ 90
+
+
+
+
+ 1785.6
+
+
+
+ 27
+ 100
+ 90
+
+
+
+
+ 1785.2
+
+
+
+ 27
+ 103
+ 0
+
+
+
+
+ 1784.6
+
+
+
+ 27
+ 102
+ 0
+
+
+
+
+ 1784.6
+
+
+
+ 27
+ 99
+ 0
+
+
+
+
+ 1784.6
+
+
+
+ 27
+ 98
+ 0
+
+
+
+
+ 1784.6
+
+
+
+ 27
+ 94
+ 0
+
+
+
+
+ 1784.8
+
+
+
+ 27
+ 91
+ 0
+
+
+
+
+ 1784.6
+
+
+
+ 27
+ 94
+ 0
+
+
+
+
+ 1784.8
+
+
+
+ 27
+ 91
+ 0
+
+
+
+
+ 1784.8
+
+
+
+ 27
+ 88
+ 0
+
+
+
+
+ 1784.6
+
+
+
+ 27
+ 88
+ 0
+
+
+
+
+ 1783.8
+
+
+
+ 27
+ 86
+ 0
+
+
+
+
+ 1783.4
+
+
+
+ 27
+ 89
+ 0
+
+
+
+
+ 1782.8
+
+
+
+ 27
+ 89
+ 83
+
+
+
+
+ 1782.6
+
+
+
+ 27
+ 87
+ 82
+
+
+
+
+ 1782.4
+
+
+
+ 27
+ 91
+ 84
+
+
+
+
+ 1782.2
+
+
+
+ 27
+ 95
+ 85
+
+
+
+
+ 1781.8
+
+
+
+ 28
+ 99
+ 86
+
+
+
+
+ 1781.6
+
+
+
+ 28
+ 103
+ 86
+
+
+
+
+ 1781.4
+
+
+
+ 28
+ 106
+ 42
+
+
+
+
+ 1781.4
+
+
+
+ 28
+ 106
+ 42
+
+
+
+
+ 1781.0
+
+
+
+ 28
+ 106
+ 42
+
+
+
+
+ 1781.4
+
+
+
+ 28
+ 103
+ 83
+
+
+
+
+ 1782.2
+
+
+
+ 28
+ 103
+ 86
+
+
+
+
+ 1782.6
+
+
+
+ 28
+ 103
+ 85
+
+
+
+
+ 1782.8
+
+
+
+ 27
+ 106
+ 86
+
+
+
+
+ 1783.2
+
+
+
+ 27
+ 109
+ 87
+
+
+
+
+ 1783.4
+
+
+
+ 27
+ 109
+ 87
+
+
+
+
+ 1783.6
+
+
+
+ 27
+ 111
+ 84
+
+
+
+
+ 1784.2
+
+
+
+ 27
+ 111
+ 86
+
+
+
+
+ 1785.2
+
+
+
+ 27
+ 111
+ 86
+
+
+
+
+ 1786.2
+
+
+
+ 27
+ 113
+ 85
+
+
+
+
+ 1786.4
+
+
+
+ 27
+ 113
+ 85
+
+
+
+
+ 1787.0
+
+
+
+ 27
+ 116
+ 86
+
+
+
+
+ 1787.2
+
+
+
+ 27
+ 117
+ 86
+
+
+
+
+ 1787.6
+
+
+
+ 27
+ 117
+ 86
+
+
+
+
+ 1788.0
+
+
+
+ 27
+ 121
+ 86
+
+
+
+
+ 1788.4
+
+
+
+ 27
+ 124
+ 85
+
+
+
+
+ 1789.2
+
+
+
+ 27
+ 127
+ 86
+
+
+
+
+ 1789.4
+
+
+
+ 27
+ 129
+ 85
+
+
+
+
+ 1789.4
+
+
+
+ 27
+ 129
+ 85
+
+
+
+
+ 1789.6
+
+
+
+ 27
+ 130
+ 86
+
+
+
+
+ 1789.6
+
+
+
+ 27
+ 130
+ 86
+
+
+
+
+ 1789.8
+
+
+
+ 27
+ 131
+ 0
+
+
+
+
+ 1790.2
+
+
+
+ 27
+ 134
+ 0
+
+
+
+
+ 1790.4
+
+
+
+ 27
+ 137
+ 0
+
+
+
+
+ 1791.6
+
+
+
+ 27
+ 138
+ 85
+
+
+
+
+ 1792.8
+
+
+
+ 27
+ 140
+ 86
+
+
+
+
+ 1793.2
+
+
+
+ 27
+ 137
+ 86
+
+
+
+
+ 1793.6
+
+
+
+ 27
+ 137
+ 86
+
+
+
+
+ 1794.0
+
+
+
+ 27
+ 137
+ 86
+
+
+
+
+ 1794.4
+
+
+
+ 27
+ 135
+ 60
+
+
+
+
+ 1795.0
+
+
+
+ 27
+ 136
+ 88
+
+
+
+
+ 1796.2
+
+
+
+ 27
+ 134
+ 87
+
+
+
+
+ 1797.4
+
+
+
+ 27
+ 136
+ 86
+
+
+
+
+ 1797.6
+
+
+
+ 27
+ 136
+ 86
+
+
+
+
+ 1798.6
+
+
+
+ 27
+ 135
+ 86
+
+
+
+
+ 1799.6
+
+
+
+ 27
+ 135
+ 87
+
+
+
+
+ 1800.6
+
+
+
+ 27
+ 135
+ 84
+
+
+
+
+ 1800.8
+
+
+
+ 27
+ 135
+ 84
+
+
+
+
+ 1801.0
+
+
+
+ 27
+ 132
+ 85
+
+
+
+
+ 1801.4
+
+
+
+ 27
+ 135
+ 86
+
+
+
+
+ 1801.6
+
+
+
+ 27
+ 132
+ 85
+
+
+
+
+ 1801.8
+
+
+
+ 27
+ 131
+ 85
+
+
+
+
+ 1802.6
+
+
+
+ 27
+ 134
+ 84
+
+
+
+
+ 1802.8
+
+
+
+ 27
+ 134
+ 84
+
+
+
+
+ 1803.0
+
+
+
+ 27
+ 134
+ 58
+
+
+
+
+ 1804.0
+
+
+
+ 27
+ 135
+ 85
+
+
+
+
+ 1804.6
+
+
+
+ 27
+ 131
+ 85
+
+
+
+
+ 1805.0
+
+
+
+ 27
+ 132
+ 84
+
+
+
+
+ 1806.2
+
+
+
+ 27
+ 131
+ 84
+
+
+
+
+ 1806.4
+
+
+
+ 27
+ 134
+ 84
+
+
+
+
+ 1806.6
+
+
+
+ 27
+ 134
+ 84
+
+
+
+
+ 1807.4
+
+
+
+ 27
+ 136
+ 61
+
+
+
+
+ 1808.0
+
+
+
+ 27
+ 136
+ 61
+
+
+
+
+ 1808.4
+
+
+
+ 27
+ 135
+ 60
+
+
+
+
+ 1808.8
+
+
+
+ 27
+ 133
+ 86
+
+
+
+
+ 1809.6
+
+
+
+ 27
+ 131
+ 85
+
+
+
+
+ 1809.6
+
+
+
+ 27
+ 130
+ 85
+
+
+
+
+ 1810.6
+
+
+
+ 27
+ 127
+ 86
+
+
+
+
+ 1811.0
+
+
+
+ 27
+ 129
+ 86
+
+
+
+
+ 1811.4
+
+
+
+ 27
+ 126
+ 86
+
+
+
+
+ 1811.6
+
+
+
+ 27
+ 126
+ 86
+
+
+
+
+ 1812.6
+
+
+
+ 27
+ 126
+ 86
+
+
+
+
+ 1813.8
+
+
+
+ 27
+ 127
+ 85
+
+
+
+
+ 1814.4
+
+
+
+ 27
+ 128
+ 85
+
+
+
+
+ 1814.6
+
+
+
+ 27
+ 127
+ 85
+
+
+
+
+ 1815.8
+
+
+
+ 27
+ 128
+ 86
+
+
+
+
+ 1817.0
+
+
+
+ 27
+ 129
+ 86
+
+
+
+
+ 1818.0
+
+
+
+ 27
+ 130
+ 86
+
+
+
+
+ 1818.4
+
+
+
+ 27
+ 130
+ 86
+
+
+
+
+ 1819.2
+
+
+
+ 27
+ 131
+ 86
+
+
+
+
+ 1820.0
+
+
+
+ 27
+ 128
+ 85
+
+
+
+
+ 1820.0
+
+
+
+ 27
+ 131
+ 85
+
+
+
+
+ 1820.4
+
+
+
+ 27
+ 133
+ 87
+
+
+
+
+ 1821.4
+
+
+
+ 27
+ 134
+ 85
+
+
+
+
+ 1821.8
+
+
+
+ 27
+ 134
+ 85
+
+
+
+
+ 1822.4
+
+
+
+ 27
+ 133
+ 86
+
+
+
+
+ 1822.6
+
+
+
+ 27
+ 134
+ 86
+
+
+
+
+ 1823.0
+
+
+
+ 27
+ 137
+ 86
+
+
+
+
+ 1823.6
+
+
+
+ 27
+ 142
+ 85
+
+
+
+
+ 1823.6
+
+
+
+ 27
+ 141
+ 85
+
+
+
+
+ 1823.6
+
+
+
+ 27
+ 144
+ 85
+
+
+
+
+ 1823.6
+
+
+
+ 27
+ 145
+ 85
+
+
+
+
+ 1824.6
+
+
+
+ 27
+ 144
+ 85
+
+
+
+
+ 1824.6
+
+
+
+ 27
+ 144
+ 85
+
+
+
+
+ 1825.0
+
+
+
+ 27
+ 148
+ 86
+
+
+
+
+ 1825.6
+
+
+
+ 27
+ 148
+ 86
+
+
+
+
+ 1826.6
+
+
+
+ 27
+ 146
+ 86
+
+
+
+
+ 1827.2
+
+
+
+ 27
+ 146
+ 86
+
+
+
+
+ 1827.8
+
+
+
+ 27
+ 145
+ 86
+
+
+
+
+ 1828.4
+
+
+
+ 27
+ 146
+ 85
+
+
+
+
+ 1829.0
+
+
+
+ 27
+ 148
+ 86
+
+
+
+
+ 1829.4
+
+
+
+ 27
+ 149
+ 86
+
+
+
+
+ 1830.0
+
+
+
+ 27
+ 147
+ 85
+
+
+
+
+ 1830.2
+
+
+
+ 27
+ 146
+ 85
+
+
+
+
+ 1831.2
+
+
+
+ 27
+ 147
+ 85
+
+
+
+
+ 1831.6
+
+
+
+ 27
+ 145
+ 86
+
+
+
+
+ 1832.4
+
+
+
+ 27
+ 143
+ 87
+
+
+
+
+ 1832.6
+
+
+
+ 27
+ 143
+ 87
+
+
+
+
+ 1833.4
+
+
+
+ 27
+ 140
+ 84
+
+
+
+
+ 1833.4
+
+
+
+ 27
+ 143
+ 84
+
+
+
+
+ 1834.4
+
+
+
+ 27
+ 145
+ 87
+
+
+
+
+ 1835.0
+
+
+
+ 27
+ 145
+ 87
+
+
+
+
+ 1835.6
+
+
+
+ 27
+ 146
+ 89
+
+
+
+
+ 1836.0
+
+
+
+ 27
+ 146
+ 89
+
+
+
+
+ 1836.6
+
+
+
+ 27
+ 144
+ 88
+
+
+
+
+ 1836.8
+
+
+
+ 27
+ 145
+ 88
+
+
+
+
+ 1837.0
+
+
+
+ 27
+ 142
+ 86
+
+
+
+
+ 1837.4
+
+
+
+ 27
+ 140
+ 86
+
+
+
+
+ 1837.8
+
+
+
+ 27
+ 144
+ 86
+
+
+
+
+ 1838.0
+
+
+
+ 27
+ 144
+ 86
+
+
+
+
+ 1838.2
+
+
+
+ 27
+ 145
+ 87
+
+
+
+
+ 1838.2
+
+
+
+ 27
+ 145
+ 87
+
+
+
+
+ 1838.6
+
+
+
+ 27
+ 146
+ 86
+
+
+
+
+ 1838.8
+
+
+
+ 27
+ 145
+ 85
+
+
+
+
+ 1839.0
+
+
+
+ 27
+ 145
+ 87
+
+
+
+
+ 1839.8
+
+
+
+ 27
+ 145
+ 86
+
+
+
+
+ 1840.0
+
+
+
+ 27
+ 146
+ 86
+
+
+
+
+ 1840.8
+
+
+
+ 27
+ 144
+ 86
+
+
+
+
+ 1841.4
+
+
+
+ 27
+ 146
+ 87
+
+
+
+
+ 1842.2
+
+
+
+ 27
+ 148
+ 87
+
+
+
+
+ 1843.2
+
+
+
+ 27
+ 146
+ 88
+
+
+
+
+ 1843.6
+
+
+
+ 27
+ 146
+ 88
+
+
+
+
+ 1844.2
+
+
+
+ 27
+ 146
+ 87
+
+
+
+
+ 1844.6
+
+
+
+ 27
+ 146
+ 88
+
+
+
+
+ 1845.2
+
+
+
+ 27
+ 146
+ 87
+
+
+
+
+ 1846.2
+
+
+
+ 27
+ 147
+ 88
+
+
+
+
+ 1846.4
+
+
+
+ 27
+ 147
+ 88
+
+
+
+
+ 1847.6
+
+
+
+ 27
+ 145
+ 86
+
+
+
+
+ 1847.8
+
+
+
+ 27
+ 148
+ 86
+
+
+
+
+ 1848.8
+
+
+
+ 27
+ 149
+ 86
+
+
+
+
+ 1849.8
+
+
+
+ 27
+ 148
+ 86
+
+
+
+
+ 1850.6
+
+
+
+ 27
+ 146
+ 85
+
+
+
+
+ 1850.8
+
+
+
+ 27
+ 147
+ 86
+
+
+
+
+ 1851.8
+
+
+
+ 26
+ 147
+ 86
+
+
+
+
+ 1851.8
+
+
+
+ 26
+ 144
+ 85
+
+
+
+
+ 1851.4
+
+
+
+ 26
+ 143
+ 83
+
+
+
+
+ 1850.8
+
+
+
+ 26
+ 143
+ 84
+
+
+
+
+ 1850.8
+
+
+
+ 26
+ 147
+ 83
+
+
+
+
+ 1850.8
+
+
+
+ 26
+ 146
+ 85
+
+
+
+
+ 1850.6
+
+
+
+ 26
+ 146
+ 85
+
+
+
+
+ 1850.2
+
+
+
+ 26
+ 146
+ 85
+
+
+
+
+ 1849.8
+
+
+
+ 26
+ 143
+ 85
+
+
+
+
+ 1849.8
+
+
+
+ 26
+ 142
+ 83
+
+
+
+
+ 1849.8
+
+
+
+ 26
+ 143
+ 84
+
+
+
+
+ 1849.4
+
+
+
+ 26
+ 144
+ 84
+
+
+
+
+ 1849.6
+
+
+
+ 26
+ 146
+ 85
+
+
+
+
+ 1850.0
+
+
+
+ 26
+ 148
+ 86
+
+
+
+
+ 1850.0
+
+
+
+ 26
+ 145
+ 86
+
+
+
+
+ 1850.2
+
+
+
+ 26
+ 142
+ 85
+
+
+
+
+ 1850.2
+
+
+
+ 26
+ 144
+ 85
+
+
+
+
+ 1850.2
+
+
+
+ 26
+ 141
+ 83
+
+
+
+
+ 1850.2
+
+
+
+ 26
+ 142
+ 84
+
+
+
+
+ 1850.2
+
+
+
+ 26
+ 143
+ 84
+
+
+
+
+ 1850.4
+
+
+
+ 26
+ 143
+ 85
+
+
+
+
+ 1850.8
+
+
+
+ 26
+ 143
+ 86
+
+
+
+
+ 1851.2
+
+
+
+ 26
+ 144
+ 86
+
+
+
+
+ 1852.0
+
+
+
+ 26
+ 147
+ 85
+
+
+
+
+ 1852.2
+
+
+
+ 26
+ 144
+ 84
+
+
+
+
+ 1852.4
+
+
+
+ 26
+ 145
+ 84
+
+
+
+
+ 1852.8
+
+
+
+ 26
+ 144
+ 86
+
+
+
+
+ 1852.6
+
+
+
+ 26
+ 145
+ 87
+
+
+
+
+ 1852.0
+
+
+
+ 26
+ 145
+ 86
+
+
+
+
+ 1851.6
+
+
+
+ 25
+ 141
+ 85
+
+
+
+
+ 1851.4
+
+
+
+ 25
+ 144
+ 85
+
+
+
+
+ 1851.4
+
+
+
+ 25
+ 143
+ 85
+
+
+
+
+ 1850.8
+
+
+
+ 25
+ 142
+ 85
+
+
+
+
+ 1850.8
+
+
+
+ 25
+ 143
+ 85
+
+
+
+
+ 1850.4
+
+
+
+ 25
+ 145
+ 85
+
+
+
+
+ 1849.6
+
+
+
+ 25
+ 145
+ 86
+
+
+
+
+ 1849.6
+
+
+
+ 25
+ 143
+ 85
+
+
+
+
+ 1850.2
+
+
+
+ 25
+ 146
+ 86
+
+
+
+
+ 1850.4
+
+
+
+ 25
+ 143
+ 86
+
+
+
+
+ 1850.8
+
+
+
+ 25
+ 143
+ 86
+
+
+
+
+ 1851.0
+
+
+
+ 25
+ 141
+ 85
+
+
+
+
+ 1851.0
+
+
+
+ 25
+ 139
+ 85
+
+
+
+
+ 1851.2
+
+
+
+ 25
+ 139
+ 86
+
+
+
+
+ 1851.6
+
+
+
+ 25
+ 140
+ 85
+
+
+
+
+ 1851.8
+
+
+
+ 25
+ 140
+ 85
+
+
+
+
+ 1852.4
+
+
+
+ 25
+ 137
+ 85
+
+
+
+
+ 1852.4
+
+
+
+ 25
+ 137
+ 85
+
+
+
+
+ 1852.6
+
+
+
+ 25
+ 142
+ 84
+
+
+
+
+ 1852.6
+
+
+
+ 25
+ 143
+ 85
+
+
+
+
+ 1852.6
+
+
+
+ 25
+ 146
+ 85
+
+
+
+
+ 1852.6
+
+
+
+ 25
+ 147
+ 86
+
+
+
+
+ 1852.8
+
+
+
+ 25
+ 148
+ 86
+
+
+
+
+ 1853.4
+
+
+
+ 25
+ 145
+ 84
+
+
+
+
+ 1853.8
+
+
+
+ 25
+ 145
+ 85
+
+
+
+
+ 1853.8
+
+
+
+ 25
+ 145
+ 86
+
+
+
+
+ 1854.4
+
+
+
+ 25
+ 145
+ 85
+
+
+
+
+ 1854.4
+
+
+
+ 25
+ 142
+ 86
+
+
+
+
+ 1854.8
+
+
+
+ 25
+ 139
+ 85
+
+
+
+
+ 1854.8
+
+
+
+ 25
+ 140
+ 84
+
+
+
+
+ 1856.6
+
+
+
+ 25
+ 142
+ 85
+
+
+
+
+ 1856.8
+
+
+
+ 25
+ 143
+ 85
+
+
+
+
+ 1856.0
+
+
+
+ 25
+ 144
+ 86
+
+
+
+
+ 1856.8
+
+
+
+ 25
+ 144
+ 85
+
+
+
+
+ 1857.2
+
+
+
+ 25
+ 148
+ 87
+
+
+
+
+ 1857.4
+
+
+
+ 25
+ 144
+ 87
+
+
+
+
+ 1857.6
+
+
+
+ 25
+ 144
+ 85
+
+
+
+
+ 1857.6
+
+
+
+ 25
+ 144
+ 85
+
+
+
+
+ 1858.0
+
+
+
+ 25
+ 143
+ 86
+
+
+
+
+ 1858.6
+
+
+
+ 25
+ 143
+ 84
+
+
+
+
+ 1859.2
+
+
+
+ 25
+ 144
+ 83
+
+
+
+
+ 1859.4
+
+
+
+ 25
+ 147
+ 86
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 146
+ 85
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 145
+ 85
+
+
+
+
+ 1859.8
+
+
+
+ 25
+ 145
+ 85
+
+
+
+
+ 1860.4
+
+
+
+ 25
+ 142
+ 56
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 139
+ 0
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 140
+ 0
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 138
+ 0
+
+
+
+
+ 1860.8
+
+
+
+ 25
+ 135
+ 0
+
+
+
+
+ 1860.8
+
+
+
+ 25
+ 135
+ 0
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 131
+ 0
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 128
+ 51
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 127
+ 52
+
+
+
+
+ 1860.8
+
+
+
+ 25
+ 124
+ 52
+
+
+
+
+ 1860.8
+
+
+
+ 25
+ 121
+ 51
+
+
+
+
+ 1860.4
+
+
+
+ 25
+ 118
+ 57
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 116
+ 78
+
+
+
+
+ 1859.0
+
+
+
+ 25
+ 114
+ 82
+
+
+
+
+ 1859.2
+
+
+
+ 25
+ 113
+ 81
+
+
+
+
+ 1859.4
+
+
+
+ 25
+ 113
+ 82
+
+
+
+
+ 1859.4
+
+
+
+ 25
+ 111
+ 80
+
+
+
+
+ 1859.4
+
+
+
+ 25
+ 111
+ 80
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 111
+ 85
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 111
+ 85
+
+
+
+
+ 1859.8
+
+
+
+ 25
+ 111
+ 85
+
+
+
+
+ 1860.2
+
+
+
+ 25
+ 114
+ 83
+
+
+
+
+ 1860.2
+
+
+
+ 25
+ 117
+ 83
+
+
+
+
+ 1860.8
+
+
+
+ 25
+ 119
+ 83
+
+
+
+
+ 1861.0
+
+
+
+ 25
+ 120
+ 85
+
+
+
+
+ 1860.2
+
+
+
+ 25
+ 123
+ 79
+
+
+
+
+ 1860.2
+
+
+
+ 25
+ 123
+ 79
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 123
+ 80
+
+
+
+
+ 1859.4
+
+
+
+ 25
+ 126
+ 85
+
+
+
+
+ 1859.4
+
+
+
+ 25
+ 124
+ 84
+
+
+
+
+ 1859.0
+
+
+
+ 25
+ 127
+ 85
+
+
+
+
+ 1859.0
+
+
+
+ 25
+ 129
+ 85
+
+
+
+
+ 1859.2
+
+
+
+ 25
+ 127
+ 84
+
+
+
+
+ 1859.6
+
+
+
+ 25
+ 127
+ 84
+
+
+
+
+ 1860.6
+
+
+
+ 25
+ 127
+ 41
+
+
+
+
+ 1860.8
+
+
+
+ 25
+ 127
+ 41
+
+
+
+
+ 1861.8
+
+
+
+ 25
+ 127
+ 59
+
+
+
+
+ 1862.0
+
+
+
+ 25
+ 128
+ 58
+
+
+
+
+ 1862.4
+
+
+
+ 25
+ 125
+ 57
+
+
+
+
+ 1862.8
+
+
+
+ 25
+ 126
+ 55
+
+
+
+
+ 1863.0
+
+
+
+ 25
+ 126
+ 61
+
+
+
+
+ 1863.2
+
+
+
+ 25
+ 126
+ 61
+
+
+
+
+ 1863.4
+
+
+
+ 25
+ 126
+ 63
+
+
+
+
+ 1863.4
+
+
+
+ 25
+ 130
+ 80
+
+
+
+
+ 1863.6
+
+
+
+ 25
+ 125
+ 81
+
+
+
+
+ 1863.8
+
+
+
+ 25
+ 126
+ 81
+
+
+
+
+ 1863.8
+
+
+
+ 25
+ 125
+ 82
+
+
+
+
+ 1863.8
+
+
+
+ 25
+ 125
+ 82
+
+
+
+
+ 1863.2
+
+
+
+ 24
+ 128
+ 78
+
+
+
+
+ 1862.8
+
+
+
+ 24
+ 125
+ 74
+
+
+
+
+ 1862.6
+
+
+
+ 24
+ 124
+ 73
+
+
+
+
+ 1862.0
+
+
+
+ 24
+ 124
+ 73
+
+
+
+
+ 1861.6
+
+
+
+ 24
+ 123
+ 73
+
+
+
+
+ 1861.4
+
+
+
+ 24
+ 123
+ 73
+
+
+
+
+ 1860.6
+
+
+
+ 24
+ 124
+ 0
+
+
+
+
+ 1860.4
+
+
+
+ 24
+ 124
+ 76
+
+
+
+
+ 1860.4
+
+
+
+ 24
+ 127
+ 77
+
+
+
+
+ 1860.4
+
+
+
+ 24
+ 124
+ 79
+
+
+
+
+ 1859.4
+
+
+
+ 24
+ 126
+ 82
+
+
+
+
+ 1858.4
+
+
+
+ 24
+ 126
+ 81
+
+
+
+
+ 1858.2
+
+
+
+ 24
+ 129
+ 82
+
+
+
+
+ 1858.0
+
+
+
+ 24
+ 129
+ 83
+
+
+
+
+ 1858.0
+
+
+
+ 24
+ 124
+ 83
+
+
+
+
+ 1858.0
+
+
+
+ 24
+ 125
+ 83
+
+
+
+
+ 1858.2
+
+
+
+ 24
+ 125
+ 83
+
+
+
+
+ 1859.2
+
+
+
+ 24
+ 128
+ 84
+
+
+
+
+ 1859.4
+
+
+
+ 24
+ 127
+ 80
+
+
+
+
+ 1859.4
+
+
+
+ 24
+ 129
+ 80
+
+
+
+
+ 1859.6
+
+
+
+ 24
+ 133
+ 83
+
+
+
+
+ 1859.8
+
+
+
+ 24
+ 132
+ 84
+
+
+
+
+ 1860.0
+
+
+
+ 24
+ 134
+ 84
+
+
+
+
+ 1860.6
+
+
+
+ 24
+ 133
+ 72
+
+
+
+
+ 1861.0
+
+
+
+ 24
+ 135
+ 72
+
+
+
+
+ 1861.6
+
+
+
+ 24
+ 133
+ 59
+
+
+
+
+ 1861.6
+
+
+
+ 24
+ 134
+ 59
+
+
+
+
+ 1861.8
+
+
+
+ 24
+ 128
+ 59
+
+
+
+
+ 1861.8
+
+
+
+ 24
+ 128
+ 59
+
+
+
+
+ 1862.0
+
+
+
+ 24
+ 130
+ 0
+
+
+
+
+ 1862.2
+
+
+
+ 24
+ 131
+ 59
+
+
+
+
+ 1862.8
+
+
+
+ 24
+ 132
+ 59
+
+
+
+
+ 1863.6
+
+
+
+ 24
+ 134
+ 59
+
+
+
+
+ 1863.8
+
+
+
+ 24
+ 133
+ 58
+
+
+
+
+ 1864.0
+
+
+
+ 24
+ 134
+ 58
+
+
+
+
+ 1864.4
+
+
+
+ 24
+ 135
+ 57
+
+
+
+
+ 1864.6
+
+
+
+ 24
+ 135
+ 57
+
+
+
+
+ 1864.8
+
+
+
+ 24
+ 137
+ 56
+
+
+
+
+ 1864.8
+
+
+
+ 24
+ 136
+ 0
+
+
+
+
+ 1864.8
+
+
+
+ 24
+ 134
+ 83
+
+
+
+
+ 1865.2
+
+
+
+ 24
+ 131
+ 59
+
+
+
+
+ 1865.4
+
+
+
+ 24
+ 130
+ 58
+
+
+
+
+ 1865.6
+
+
+
+ 24
+ 127
+ 56
+
+
+
+
+ 1865.8
+
+
+
+ 24
+ 127
+ 56
+
+
+
+
+ 1865.8
+
+
+
+ 24
+ 124
+ 56
+
+
+
+
+ 1865.8
+
+
+
+ 24
+ 123
+ 55
+
+
+
+
+ 1866.0
+
+
+
+ 24
+ 120
+ 55
+
+
+
+
+ 1866.4
+
+
+
+ 24
+ 117
+ 54
+
+
+
+
+ 1867.0
+
+
+
+ 24
+ 117
+ 54
+
+
+
+
+ 1867.2
+
+
+
+ 24
+ 116
+ 57
+
+
+
+
+ 1867.0
+
+
+
+ 24
+ 117
+ 57
+
+
+
+
+ 1866.8
+
+
+
+ 24
+ 116
+ 57
+
+
+
+
+ 1866.8
+
+
+
+ 24
+ 114
+ 57
+
+
+
+
+ 1866.6
+
+
+
+ 24
+ 113
+ 59
+
+
+
+
+ 1866.2
+
+
+
+ 24
+ 112
+ 60
+
+
+
+
+ 1866.0
+
+
+
+ 24
+ 111
+ 60
+
+
+
+
+ 1865.8
+
+
+
+ 24
+ 111
+ 59
+
+
+
+
+ 1865.4
+
+
+
+ 24
+ 108
+ 62
+
+
+
+
+ 1865.2
+
+
+
+ 24
+ 106
+ 63
+
+
+
+
+ 1865.2
+
+
+
+ 24
+ 104
+ 63
+
+
+
+
+ 1865.0
+
+
+
+ 24
+ 105
+ 62
+
+
+
+
+ 1865.0
+
+
+
+ 24
+ 102
+ 61
+
+
+
+
+ 1864.8
+
+
+
+ 24
+ 102
+ 59
+
+
+
+
+ 1864.8
+
+
+
+ 24
+ 105
+ 61
+
+
+
+
+ 1865.0
+
+
+
+ 23
+ 102
+ 0
+
+
+
+
+ 1865.4
+
+
+
+ 23
+ 101
+ 0
+
+
+
+
+ 1865.6
+
+
+
+ 23
+ 100
+ 61
+
+
+
+
+ 1865.8
+
+
+
+ 23
+ 97
+ 61
+
+
+
+
+ 1866.0
+
+
+
+ 23
+ 95
+ 61
+
+
+
+
+ 1866.0
+
+
+
+ 23
+ 90
+ 58
+
+
+
+
+ 1865.8
+
+
+
+ 23
+ 87
+ 58
+
+
+
+
+ 1865.8
+
+
+
+ 23
+ 86
+ 58
+
+
+
+
+ 1866.0
+
+
+
+ 23
+ 85
+ 64
+
+
+
+
+ 1866.6
+
+
+
+ 23
+ 85
+ 86
+
+
+
+
+ 1867.0
+
+
+
+ 23
+ 89
+ 86
+
+
+
+
+ 1867.2
+
+
+
+ 23
+ 91
+ 86
+
+
+
+
+ 1867.2
+
+
+
+ 23
+ 93
+ 86
+
+
+
+
+ 1867.4
+
+
+
+ 23
+ 97
+ 60
+
+
+
+
+ 1867.8
+
+
+
+ 23
+ 96
+ 63
+
+
+
+
+ 1868.0
+
+
+
+ 23
+ 96
+ 0
+
+
+
+
+ 1868.0
+
+
+
+ 23
+ 99
+ 0
+
+
+
+
+ 1868.0
+
+
+
+ 23
+ 99
+ 0
+
+
+
+
+ 1868.0
+
+
+
+ 23
+ 102
+ 61
+
+
+
+
+ 1868.0
+
+
+
+ 23
+ 103
+ 0
+
+
+
+
+ 1868.0
+
+
+
+ 23
+ 103
+ 0
+
+
+
+
+ 1866.8
+
+
+
+ 23
+ 106
+ 81
+
+
+
+
+ 1866.8
+
+
+
+ 23
+ 107
+ 81
+
+
+
+
+ 1867.2
+
+
+
+ 23
+ 106
+ 0
+
+
+
+
+ 1866.8
+
+
+
+ 22
+ 109
+ 0
+
+
+
+
+ 1866.2
+
+
+
+ 22
+ 109
+ 0
+
+
+
+
+ 1865.8
+
+
+
+ 22
+ 106
+ 78
+
+
+
+
+ 1866.0
+
+
+
+ 22
+ 110
+ 81
+
+
+
+
+ 1866.2
+
+
+
+ 22
+ 110
+ 80
+
+
+
+
+ 1867.2
+
+
+
+ 22
+ 111
+ 54
+
+
+
+
+ 1867.6
+
+
+
+ 22
+ 110
+ 58
+
+
+
+
+ 1868.6
+
+
+
+ 22
+ 111
+ 58
+
+
+
+
+ 1868.8
+
+
+
+ 22
+ 111
+ 58
+
+
+
+
+ 1868.8
+
+
+
+ 22
+ 112
+ 58
+
+
+
+
+ 1869.0
+
+
+
+ 22
+ 109
+ 58
+
+
+
+
+ 1869.0
+
+
+
+ 22
+ 112
+ 83
+
+
+
+
+ 1869.0
+
+
+
+ 22
+ 111
+ 83
+
+
+
+
+ 1869.0
+
+
+
+ 22
+ 112
+ 83
+
+
+
+
+ 1869.0
+
+
+
+ 22
+ 113
+ 84
+
+
+
+
+ 1869.6
+
+
+
+ 22
+ 114
+ 84
+
+
+
+
+ 1870.6
+
+
+
+ 22
+ 114
+ 61
+
+
+
+
+ 1870.8
+
+
+
+ 22
+ 112
+ 61
+
+
+
+
+ 1871.2
+
+
+
+ 22
+ 115
+ 58
+
+
+
+
+ 1870.0
+
+
+
+ 22
+ 114
+ 78
+
+
+
+
+ 1869.6
+
+
+
+ 22
+ 114
+ 80
+
+
+
+
+ 1869.0
+
+
+
+ 22
+ 117
+ 79
+
+
+
+
+ 1868.6
+
+
+
+ 22
+ 119
+ 81
+
+
+
+
+ 1867.6
+
+
+
+ 22
+ 122
+ 83
+
+
+
+
+ 1867.4
+
+
+
+ 21
+ 122
+ 84
+
+
+
+
+ 1866.4
+
+
+
+ 21
+ 122
+ 85
+
+
+
+
+ 1866.4
+
+
+
+ 21
+ 119
+ 85
+
+
+
+
+ 1867.2
+
+
+
+ 21
+ 121
+ 83
+
+
+
+
+ 1866.2
+
+
+
+ 21
+ 120
+ 84
+
+
+
+
+ 1866.0
+
+
+
+ 21
+ 121
+ 84
+
+
+
+
+ 1865.8
+
+
+
+ 21
+ 121
+ 84
+
+
+
+
+ 1866.0
+
+
+
+ 21
+ 124
+ 84
+
+
+
+
+ 1866.0
+
+
+
+ 21
+ 123
+ 85
+
+
+
+
+ 1865.8
+
+
+
+ 21
+ 126
+ 85
+
+
+
+
+ 1865.6
+
+
+
+ 21
+ 126
+ 85
+
+
+
+
+ 1865.4
+
+
+
+ 21
+ 126
+ 83
+
+
+
+
+ 1865.4
+
+
+
+ 21
+ 122
+ 83
+
+
+
+
+ 1865.6
+
+
+
+ 21
+ 125
+ 83
+
+
+
+
+ 1865.6
+
+
+
+ 21
+ 128
+ 83
+
+
+
+
+ 1865.6
+
+
+
+ 21
+ 128
+ 84
+
+
+
+
+ 1865.6
+
+
+
+ 20
+ 131
+ 84
+
+
+
+
+ 1865.6
+
+
+
+ 20
+ 132
+ 84
+
+
+
+
+ 1865.4
+
+
+
+ 20
+ 133
+ 84
+
+
+
+
+ 1865.2
+
+
+
+ 20
+ 133
+ 84
+
+
+
+
+ 1865.2
+
+
+
+ 20
+ 133
+ 84
+
+
+
+
+ 1865.4
+
+
+
+ 20
+ 133
+ 84
+
+
+
+
+ 1865.4
+
+
+
+ 20
+ 135
+ 84
+
+
+
+
+ 1865.0
+
+
+
+ 20
+ 132
+ 85
+
+
+
+
+ 1865.0
+
+
+
+ 20
+ 128
+ 84
+
+
+
+
+ 1865.2
+
+
+
+ 20
+ 128
+ 85
+
+
+
+
+ 1865.2
+
+
+
+ 20
+ 131
+ 84
+
+
+
+
+ 1865.0
+
+
+
+ 20
+ 128
+ 84
+
+
+
+
+ 1864.6
+
+
+
+ 20
+ 127
+ 84
+
+
+
+
+ 1864.4
+
+
+
+ 20
+ 126
+ 84
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 126
+ 84
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 125
+ 84
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 122
+ 85
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 121
+ 85
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 120
+ 85
+
+
+
+
+ 1864.0
+
+
+
+ 20
+ 120
+ 85
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 121
+ 85
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 121
+ 86
+
+
+
+
+ 1864.0
+
+
+
+ 20
+ 120
+ 85
+
+
+
+
+ 1863.8
+
+
+
+ 20
+ 120
+ 84
+
+
+
+
+ 1863.8
+
+
+
+ 20
+ 120
+ 84
+
+
+
+
+ 1864.2
+
+
+
+ 20
+ 119
+ 86
+
+
+
+
+ 1864.0
+
+
+
+ 20
+ 119
+ 85
+
+
+
+
+ 1864.0
+
+
+
+ 20
+ 120
+ 85
+
+
+
+
+ 1863.0
+
+
+
+ 20
+ 121
+ 83
+
+
+
+
+ 1862.6
+
+
+
+ 20
+ 124
+ 84
+
+
+
+
+ 1862.4
+
+
+
+ 20
+ 123
+ 85
+
+
+
+
+ 1862.0
+
+
+
+ 20
+ 124
+ 83
+
+
+
+
+ 1861.6
+
+
+
+ 20
+ 121
+ 84
+
+
+
+
+ 1860.6
+
+
+
+ 20
+ 124
+ 84
+
+
+
+
+ 1860.4
+
+
+
+ 20
+ 127
+ 84
+
+
+
+
+ 1860.4
+
+
+
+ 20
+ 125
+ 84
+
+
+
+
+ 1860.8
+
+
+
+ 20
+ 125
+ 84
+
+
+
+
+ 1860.6
+
+
+
+ 20
+ 124
+ 84
+
+
+
+
+ 1860.2
+
+
+
+ 20
+ 126
+ 84
+
+
+
+
+ 1860.2
+
+
+
+ 20
+ 129
+ 84
+
+
+
+
+ 1860.0
+
+
+
+ 20
+ 132
+ 84
+
+
+
+
+ 1859.6
+
+
+
+ 20
+ 136
+ 85
+
+
+
+
+ 1859.6
+
+
+
+ 20
+ 135
+ 86
+
+
+
+
+ 1859.6
+
+
+
+ 20
+ 135
+ 86
+
+
+
+
+ 1859.8
+
+
+
+ 20
+ 134
+ 84
+
+
+
+
+ 1859.8
+
+
+
+ 20
+ 136
+ 85
+
+
+
+
+ 1859.6
+
+
+
+ 20
+ 136
+ 84
+
+
+
+
+ 1858.6
+
+
+
+ 19
+ 135
+ 84
+
+
+
+
+ 1858.6
+
+
+
+ 19
+ 135
+ 84
+
+
+
+
+ 1858.2
+
+
+
+ 19
+ 133
+ 84
+
+
+
+
+ 1858.2
+
+
+
+ 19
+ 134
+ 84
+
+
+
+
+ 1859.2
+
+
+
+ 19
+ 134
+ 0
+
+
+
+
+ 1859.2
+
+
+
+ 19
+ 137
+ 0
+
+
+
+
+ 1859.2
+
+
+
+ 19
+ 134
+ 0
+
+
+
+
+ 1859.2
+
+
+
+ 19
+ 131
+ 0
+
+
+
+
+ 1858.6
+
+
+
+ 19
+ 129
+ 52
+
+
+
+
+ 1858.0
+
+
+
+ 19
+ 127
+ 86
+
+
+
+
+ 1857.6
+
+
+
+ 19
+ 130
+ 85
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 128
+ 85
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 129
+ 84
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 129
+ 84
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 129
+ 84
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 129
+ 84
+
+
+
+
+ 1857.0
+
+
+
+ 19
+ 132
+ 84
+
+
+
+
+ 1856.8
+
+
+
+ 19
+ 135
+ 84
+
+
+
+
+ 1857.0
+
+
+
+ 19
+ 133
+ 84
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 130
+ 84
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 131
+ 84
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 131
+ 84
+
+
+
+
+ 1857.6
+
+
+
+ 19
+ 130
+ 84
+
+
+
+
+ 1857.8
+
+
+
+ 19
+ 131
+ 84
+
+
+
+
+ 1857.6
+
+
+
+ 19
+ 131
+ 84
+
+
+
+
+ 1857.6
+
+
+
+ 19
+ 132
+ 63
+
+
+
+
+ 1857.6
+
+
+
+ 19
+ 130
+ 0
+
+
+
+
+ 1857.4
+
+
+
+ 19
+ 127
+ 0
+
+
+
+
+ 1857.2
+
+
+
+ 19
+ 123
+ 0
+
+
+
+
+ 1857.0
+
+
+
+ 19
+ 124
+ 83
+
+
+
+
+ 1856.8
+
+
+
+ 19
+ 127
+ 85
+
+
+
+
+ 1856.6
+
+
+
+ 19
+ 126
+ 86
+
+
+
+
+ 1856.4
+
+
+
+ 19
+ 126
+ 85
+
+
+
+
+ 1856.0
+
+
+
+ 19
+ 125
+ 83
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 129
+ 83
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 133
+ 85
+
+
+
+
+ 1855.6
+
+
+
+ 19
+ 136
+ 84
+
+
+
+
+ 1855.4
+
+
+
+ 19
+ 138
+ 85
+
+
+
+
+ 1855.4
+
+
+
+ 19
+ 141
+ 85
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 141
+ 84
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 143
+ 84
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 142
+ 57
+
+
+
+
+ 1856.0
+
+
+
+ 19
+ 139
+ 58
+
+
+
+
+ 1856.0
+
+
+
+ 19
+ 136
+ 0
+
+
+
+
+ 1856.2
+
+
+
+ 19
+ 135
+ 0
+
+
+
+
+ 1856.0
+
+
+
+ 19
+ 132
+ 0
+
+
+
+
+ 1856.0
+
+
+
+ 19
+ 132
+ 0
+
+
+
+
+ 1856.0
+
+
+
+ 19
+ 129
+ 0
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 128
+ 0
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 125
+ 0
+
+
+
+
+ 1855.8
+
+
+
+ 19
+ 122
+ 0
+
+
+
+
+ 1855.4
+
+
+
+ 19
+ 123
+ 0
+
+
+
+
+ 1855.0
+
+
+
+ 19
+ 120
+ 0
+
+
+
+
+ 1855.0
+
+
+
+ 20
+ 117
+ 0
+
+
+
+
+ 1854.8
+
+
+
+ 20
+ 115
+ 0
+
+
+
+
+ 1854.6
+
+
+
+ 20
+ 114
+ 0
+
+
+
+
+ 1854.6
+
+
+
+ 20
+ 114
+ 0
+
+
+
+
+ 1854.6
+
+
+
+ 20
+ 114
+ 0
+
+
+
+
+ 1854.4
+
+
+
+ 20
+ 110
+ 0
+
+
+
+
+ 1854.4
+
+
+
+ 20
+ 112
+ 0
+
+
+
+
+ 1854.4
+
+
+
+ 20
+ 111
+ 0
+
+
+
+
+ 1854.4
+
+
+
+ 20
+ 108
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 20
+ 107
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 106
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 103
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 104
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 101
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 101
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 100
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 20
+ 100
+ 0
+
+
+
+
+ 1853.8
+
+
+
+ 20
+ 100
+ 0
+
+
+
+
+ 1853.8
+
+
+
+ 20
+ 97
+ 0
+
+
+
+
+ 1853.8
+
+
+
+ 20
+ 97
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 20
+ 96
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 20
+ 96
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 97
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 98
+ 0
+
+
+
+
+ 1854.0
+
+
+
+ 21
+ 98
+ 0
+
+
+
+
+ 1853.8
+
+
+
+ 21
+ 95
+ 0
+
+
+
+
+ 1853.8
+
+
+
+ 21
+ 96
+ 56
+
+
+
+
+ 1853.8
+
+
+
+ 21
+ 96
+ 56
+
+
+
+
+ 1853.6
+
+
+
+ 21
+ 96
+ 57
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 95
+ 86
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 99
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 103
+ 0
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 97
+ 52
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 99
+ 52
+
+
+
+
+ 1854.2
+
+
+
+ 21
+ 97
+ 54
+
+
+
+
+ 1854.4
+
+
+
+ 21
+ 95
+ 52
+
+
+
+
+ 1854.6
+
+
+
+ 21
+ 93
+ 50
+
+
+
+
+ 1854.6
+
+
+
+ 21
+ 93
+ 50
+
+
+
+
+ 1854.8
+
+
+
+ 21
+ 92
+ 0
+
+
+
+
+ 1854.8
+
+
+
+ 21
+ 91
+ 52
+
+
+
+
+ 1855.2
+
+
+
+ 21
+ 88
+ 56
+
+
+
+
+ 1855.2
+
+
+
+ 21
+ 85
+ 55
+
+
+
+
+ 1855.4
+
+
+
+ 21
+ 87
+ 55
+
+
+
+
+ 1855.4
+
+
+
+ 21
+ 85
+ 87
+
+
+
+
+ 1855.6
+
+
+
+ 21
+ 88
+ 87
+
+
+
+
+ 1856.0
+
+
+
+ 21
+ 90
+ 87
+
+
+
+
+ 1856.2
+
+
+
+ 21
+ 96
+ 86
+
+
+
+
+ 1856.2
+
+
+
+ 21
+ 93
+ 85
+
+
+
+
+ 1856.2
+
+
+
+ 21
+ 97
+ 85
+
+
+
+
+ 1856.2
+
+
+
+ 21
+ 97
+ 85
+
+
+
+
+ 1856.4
+
+
+
+ 21
+ 100
+ 86
+
+
+
+
+ 1856.4
+
+
+
+ 21
+ 104
+ 84
+
+
+
+
+ 1856.6
+
+
+
+ 21
+ 108
+ 87
+
+
+
+
+ 1856.6
+
+
+
+ 21
+ 107
+ 85
+
+
+
+
+ 1856.6
+
+
+
+ 21
+ 111
+ 84
+
+
+
+
+ 1856.8
+
+
+
+ 21
+ 114
+ 83
+
+
+
+
+ 1857.0
+
+
+
+ 21
+ 117
+ 86
+
+
+
+
+ 1857.2
+
+
+
+ 21
+ 120
+ 86
+
+
+
+
+ 1857.2
+
+
+
+ 21
+ 119
+ 86
+
+
+
+
+ 1857.4
+
+
+
+ 21
+ 120
+ 84
+
+
+
+
+ 1857.6
+
+
+
+ 21
+ 120
+ 84
+
+
+
+
+ 1857.8
+
+
+
+ 21
+ 123
+ 84
+
+
+
+
+ 1857.8
+
+
+
+ 21
+ 123
+ 85
+
+
+
+
+ 1858.0
+
+
+
+ 21
+ 124
+ 85
+
+
+
+
+ 1858.2
+
+
+
+ 21
+ 127
+ 85
+
+
+
+
+ 1858.2
+
+
+
+ 21
+ 125
+ 85
+
+
+
+
+ 1858.4
+
+
+
+ 21
+ 128
+ 85
+
+
+
+
+ 1858.6
+
+
+
+ 21
+ 129
+ 85
+
+
+
+
+ 1859.0
+
+
+
+ 21
+ 131
+ 0
+
+
+
+
+ 1859.8
+
+
+
+ 21
+ 133
+ 74
+
+
+
+
+ 1860.6
+
+
+
+ 21
+ 135
+ 72
+
+
+
+
+ 1860.8
+
+
+
+ 21
+ 135
+ 0
+
+
+
+
+ 1861.0
+
+
+
+ 21
+ 135
+ 0
+
+
+
+
+ 1861.0
+
+
+
+ 21
+ 136
+ 0
+
+
+
+
+ 1861.8
+
+
+
+ 21
+ 137
+ 0
+
+
+
+
+ 1862.0
+
+
+
+ 21
+ 137
+ 0
+
+
+
+
+ 1862.2
+
+
+
+ 21
+ 138
+ 0
+
+
+
+
+ 1862.6
+
+
+
+ 21
+ 139
+ 78
+
+
+
+
+ 1863.0
+
+
+
+ 21
+ 139
+ 79
+
+
+
+
+ 1863.2
+
+
+
+ 21
+ 139
+ 79
+
+
+
+
+ 1863.4
+
+
+
+ 21
+ 139
+ 79
+
+
+
+
+ 1863.6
+
+
+
+ 21
+ 139
+ 79
+
+
+
+
+ 1864.0
+
+
+
+ 21
+ 137
+ 79
+
+
+
+
+ 1864.2
+
+
+
+ 21
+ 137
+ 79
+
+
+
+
+ 1864.6
+
+
+
+ 21
+ 137
+ 59
+
+
+
+
+ 1865.0
+
+
+
+ 21
+ 136
+ 59
+
+
+
+
+ 1865.2
+
+
+
+ 21
+ 136
+ 59
+
+
+
+
+ 1865.8
+
+
+
+ 21
+ 136
+ 59
+
+
+
+
+ 1866.2
+
+
+
+ 21
+ 134
+ 0
+
+
+
+
+ 1866.2
+
+
+
+ 21
+ 133
+ 0
+
+
+
+
+ 1866.2
+
+
+
+ 21
+ 131
+ 84
+
+
+
+
+ 1866.2
+
+
+
+ 21
+ 131
+ 84
+
+
+
+
+ 1866.6
+
+
+
+ 21
+ 128
+ 84
+
+
+
+
+ 1867.2
+
+
+
+ 21
+ 127
+ 84
+
+
+
+
+ 1867.4
+
+
+
+ 21
+ 128
+ 84
+
+
+
+
+ 1867.6
+
+
+
+ 21
+ 124
+ 41
+
+
+
+
+ 1867.8
+
+
+
+ 21
+ 129
+ 41
+
+
+
+
+ 1868.2
+
+
+
+ 20
+ 129
+ 41
+
+
+
+
+ 1868.4
+
+
+
+ 20
+ 130
+ 41
+
+
+
+
+ 1869.4
+
+
+
+ 20
+ 132
+ 60
+
+
+
+
+ 1870.0
+
+
+
+ 20
+ 132
+ 52
+
+
+
+
+ 1870.4
+
+
+
+ 20
+ 132
+ 80
+
+
+
+
+ 1871.2
+
+
+
+ 20
+ 132
+ 68
+
+
+
+
+ 1871.4
+
+
+
+ 20
+ 130
+ 0
+
+
+
+
+ 1872.0
+
+
+
+ 20
+ 129
+ 85
+
+
+
+
+ 1872.2
+
+
+
+ 20
+ 129
+ 85
+
+
+
+
+ 1872.6
+
+
+
+ 20
+ 129
+ 86
+
+
+
+
+ 1873.0
+
+
+
+ 20
+ 129
+ 86
+
+
+
+
+ 1873.2
+
+
+
+ 20
+ 129
+ 86
+
+
+
+
+ 1873.6
+
+
+
+ 20
+ 130
+ 85
+
+
+
+
+ 1873.8
+
+
+
+ 20
+ 130
+ 86
+
+
+
+
+ 1875.0
+
+
+
+ 20
+ 130
+ 41
+
+
+
+
+ 1876.2
+
+
+
+ 20
+ 129
+ 0
+
+
+
+
+ 1876.2
+
+
+
+ 20
+ 127
+ 59
+
+
+
+
+ 1877.2
+
+
+
+ 20
+ 127
+ 59
+
+
+
+
+ 1877.8
+
+
+
+ 20
+ 127
+ 0
+
+
+
+
+ 1878.4
+
+
+
+ 20
+ 127
+ 0
+
+
+
+
+ 1879.4
+
+
+
+ 20
+ 126
+ 0
+
+
+
+
+ 1880.6
+
+
+
+ 20
+ 124
+ 52
+
+
+
+
+ 1880.6
+
+
+
+ 20
+ 125
+ 52
+
+
+
+
+ 1880.8
+
+
+
+ 20
+ 124
+ 52
+
+
+
+
+ 1881.0
+
+
+
+ 20
+ 125
+ 52
+
+
+
+
+ 1881.4
+
+
+
+ 20
+ 126
+ 54
+
+
+
+
+ 1881.6
+
+
+
+ 20
+ 125
+ 54
+
+
+
+
+ 1882.6
+
+
+
+ 20
+ 127
+ 55
+
+
+
+
+ 1882.6
+
+
+
+ 20
+ 127
+ 55
+
+
+
+
+ 1883.8
+
+
+
+ 20
+ 127
+ 52
+
+
+
+
+ 1884.0
+
+
+
+ 20
+ 127
+ 52
+
+
+
+
+ 1884.6
+
+
+
+ 20
+ 129
+ 52
+
+
+
+
+ 1885.0
+
+
+
+ 20
+ 129
+ 84
+
+
+
+
+ 1885.2
+
+
+
+ 20
+ 129
+ 84
+
+
+
+
+ 1886.0
+
+
+
+ 20
+ 127
+ 83
+
+
+
+
+ 1886.6
+
+
+
+ 20
+ 126
+ 78
+
+
+
+
+ 1886.8
+
+
+
+ 20
+ 128
+ 59
+
+
+
+
+ 1887.2
+
+
+
+ 20
+ 127
+ 59
+
+
+
+
+ 1887.6
+
+
+
+ 20
+ 127
+ 56
+
+
+
+
+ 1887.8
+
+
+
+ 20
+ 126
+ 54
+
+
+
+
+ 1887.8
+
+
+
+ 20
+ 125
+ 53
+
+
+
+
+ 1888.4
+
+
+
+ 20
+ 124
+ 52
+
+
+
+
+ 1889.0
+
+
+
+ 20
+ 121
+ 54
+
+
+
+
+ 1889.4
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1890.4
+
+
+
+ 20
+ 118
+ 78
+
+
+
+
+ 1891.0
+
+
+
+ 20
+ 116
+ 82
+
+
+
+
+ 1891.4
+
+
+
+ 20
+ 119
+ 83
+
+
+
+
+ 1891.6
+
+
+
+ 20
+ 117
+ 83
+
+
+
+
+ 1892.2
+
+
+
+ 20
+ 117
+ 83
+
+
+
+
+ 1892.6
+
+
+
+ 20
+ 117
+ 57
+
+
+
+
+ 1892.8
+
+
+
+ 20
+ 117
+ 57
+
+
+
+
+ 1893.2
+
+
+
+ 20
+ 118
+ 55
+
+
+
+
+ 1893.8
+
+
+
+ 20
+ 118
+ 55
+
+
+
+
+ 1894.4
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1894.8
+
+
+
+ 20
+ 121
+ 52
+
+
+
+
+ 1894.8
+
+
+
+ 20
+ 122
+ 52
+
+
+
+
+ 1895.2
+
+
+
+ 20
+ 122
+ 52
+
+
+
+
+ 1895.8
+
+
+
+ 20
+ 121
+ 52
+
+
+
+
+ 1896.6
+
+
+
+ 20
+ 120
+ 52
+
+
+
+
+ 1897.0
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1898.0
+
+
+
+ 20
+ 121
+ 52
+
+
+
+
+ 1898.4
+
+
+
+ 20
+ 122
+ 45
+
+
+
+
+ 1899.0
+
+
+
+ 20
+ 122
+ 51
+
+
+
+
+ 1900.2
+
+
+
+ 20
+ 123
+ 0
+
+
+
+
+ 1901.2
+
+
+
+ 20
+ 123
+ 0
+
+
+
+
+ 1901.6
+
+
+
+ 20
+ 121
+ 53
+
+
+
+
+ 1902.4
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1903.4
+
+
+
+ 20
+ 121
+ 56
+
+
+
+
+ 1903.8
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 1904.6
+
+
+
+ 20
+ 122
+ 53
+
+
+
+
+ 1905.0
+
+
+
+ 20
+ 124
+ 54
+
+
+
+
+ 1905.6
+
+
+
+ 20
+ 125
+ 56
+
+
+
+
+ 1906.2
+
+
+
+ 20
+ 124
+ 56
+
+
+
+
+ 1906.8
+
+
+
+ 20
+ 123
+ 55
+
+
+
+
+ 1907.8
+
+
+
+ 20
+ 123
+ 52
+
+
+
+
+ 1908.2
+
+
+
+ 20
+ 122
+ 52
+
+
+
+
+ 1909.0
+
+
+
+ 20
+ 122
+ 54
+
+
+
+
+ 1909.2
+
+
+
+ 20
+ 123
+ 54
+
+
+
+
+ 1909.4
+
+
+
+ 20
+ 123
+ 54
+
+
+
+
+ 1910.0
+
+
+
+ 20
+ 124
+ 52
+
+
+
+
+ 1910.6
+
+
+
+ 20
+ 124
+ 49
+
+
+
+
+ 1910.6
+
+
+
+ 20
+ 123
+ 49
+
+
+
+
+ 1911.2
+
+
+
+ 20
+ 122
+ 53
+
+
+
+
+ 1911.8
+
+
+
+ 20
+ 122
+ 50
+
+
+
+
+ 1912.4
+
+
+
+ 20
+ 123
+ 56
+
+
+
+
+ 1912.4
+
+
+
+ 20
+ 123
+ 57
+
+
+
+
+ 1912.4
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 1912.4
+
+
+
+ 20
+ 117
+ 58
+
+
+
+
+ 1912.2
+
+
+
+ 20
+ 114
+ 61
+
+
+
+
+ 1912.2
+
+
+
+ 20
+ 113
+ 61
+
+
+
+
+ 1912.2
+
+
+
+ 20
+ 110
+ 60
+
+
+
+
+ 1912.2
+
+
+
+ 20
+ 107
+ 59
+
+
+
+
+ 1912.0
+
+
+
+ 20
+ 104
+ 58
+
+
+
+
+ 1912.0
+
+
+
+ 20
+ 104
+ 58
+
+
+
+
+ 1912.2
+
+
+
+ 20
+ 101
+ 56
+
+
+
+
+ 1912.6
+
+
+
+ 20
+ 102
+ 58
+
+
+
+
+ 1912.8
+
+
+
+ 20
+ 101
+ 56
+
+
+
+
+ 1913.0
+
+
+
+ 20
+ 98
+ 56
+
+
+
+
+ 1913.4
+
+
+
+ 20
+ 99
+ 55
+
+
+
+
+ 1914.0
+
+
+
+ 20
+ 99
+ 55
+
+
+
+
+ 1914.2
+
+
+
+ 20
+ 102
+ 55
+
+
+
+
+ 1914.6
+
+
+
+ 20
+ 104
+ 54
+
+
+
+
+ 1915.0
+
+
+
+ 20
+ 105
+ 56
+
+
+
+
+ 1915.2
+
+
+
+ 20
+ 106
+ 56
+
+
+
+
+ 1915.8
+
+
+
+ 20
+ 107
+ 56
+
+
+
+
+ 1916.4
+
+
+
+ 20
+ 110
+ 53
+
+
+
+
+ 1916.8
+
+
+
+ 20
+ 110
+ 53
+
+
+
+
+ 1917.0
+
+
+
+ 20
+ 110
+ 55
+
+
+
+
+ 1917.8
+
+
+
+ 20
+ 112
+ 58
+
+
+
+
+ 1918.2
+
+
+
+ 20
+ 112
+ 56
+
+
+
+
+ 1919.0
+
+
+
+ 20
+ 114
+ 56
+
+
+
+
+ 1920.0
+
+
+
+ 20
+ 113
+ 58
+
+
+
+
+ 1920.2
+
+
+
+ 20
+ 113
+ 58
+
+
+
+
+ 1920.6
+
+
+
+ 20
+ 114
+ 57
+
+
+
+
+ 1921.2
+
+
+
+ 20
+ 115
+ 55
+
+
+
+
+ 1921.4
+
+
+
+ 20
+ 115
+ 54
+
+
+
+
+ 1922.0
+
+
+
+ 20
+ 115
+ 54
+
+
+
+
+ 1922.2
+
+
+
+ 20
+ 115
+ 55
+
+
+
+
+ 1922.6
+
+
+
+ 20
+ 116
+ 55
+
+
+
+
+ 1923.4
+
+
+
+ 20
+ 118
+ 55
+
+
+
+
+ 1924.0
+
+
+
+ 20
+ 119
+ 55
+
+
+
+
+ 1924.6
+
+
+
+ 20
+ 120
+ 53
+
+
+
+
+ 1925.2
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1925.8
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1926.8
+
+
+
+ 20
+ 122
+ 55
+
+
+
+
+ 1927.0
+
+
+
+ 20
+ 122
+ 54
+
+
+
+
+ 1927.8
+
+
+
+ 20
+ 122
+ 54
+
+
+
+
+ 1928.2
+
+
+
+ 20
+ 122
+ 54
+
+
+
+
+ 1928.8
+
+
+
+ 20
+ 123
+ 55
+
+
+
+
+ 1929.6
+
+
+
+ 20
+ 123
+ 54
+
+
+
+
+ 1930.0
+
+
+
+ 20
+ 123
+ 55
+
+
+
+
+ 1930.6
+
+
+
+ 20
+ 121
+ 53
+
+
+
+
+ 1930.8
+
+
+
+ 20
+ 120
+ 52
+
+
+
+
+ 1931.0
+
+
+
+ 20
+ 119
+ 51
+
+
+
+
+ 1931.2
+
+
+
+ 20
+ 119
+ 51
+
+
+
+
+ 1931.8
+
+
+
+ 20
+ 118
+ 49
+
+
+
+
+ 1932.2
+
+
+
+ 20
+ 118
+ 49
+
+
+
+
+ 1932.6
+
+
+
+ 20
+ 120
+ 51
+
+
+
+
+ 1933.4
+
+
+
+ 20
+ 122
+ 51
+
+
+
+
+ 1934.2
+
+
+
+ 20
+ 123
+ 50
+
+
+
+
+ 1934.4
+
+
+
+ 20
+ 123
+ 52
+
+
+
+
+ 1935.2
+
+
+
+ 20
+ 124
+ 55
+
+
+
+
+ 1935.4
+
+
+
+ 20
+ 124
+ 54
+
+
+
+
+ 1935.6
+
+
+
+ 20
+ 124
+ 54
+
+
+
+
+ 1936.4
+
+
+
+ 20
+ 122
+ 56
+
+
+
+
+ 1936.6
+
+
+
+ 20
+ 122
+ 56
+
+
+
+
+ 1937.0
+
+
+
+ 20
+ 119
+ 57
+
+
+
+
+ 1937.6
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 1937.8
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 1938.6
+
+
+
+ 20
+ 118
+ 54
+
+
+
+
+ 1938.8
+
+
+
+ 20
+ 118
+ 52
+
+
+
+
+ 1939.6
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 1940.0
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1941.0
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1941.2
+
+
+
+ 20
+ 121
+ 54
+
+
+
+
+ 1942.2
+
+
+
+ 20
+ 120
+ 55
+
+
+
+
+ 1942.4
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 1942.8
+
+
+
+ 20
+ 123
+ 58
+
+
+
+
+ 1943.4
+
+
+
+ 20
+ 120
+ 57
+
+
+
+
+ 1944.2
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 1944.4
+
+
+
+ 20
+ 121
+ 0
+
+
+
+
+ 1945.6
+
+
+
+ 20
+ 121
+ 0
+
+
+
+
+ 1945.6
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1946.6
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1947.6
+
+
+
+ 20
+ 120
+ 55
+
+
+
+
+ 1947.8
+
+
+
+ 20
+ 120
+ 55
+
+
+
+
+ 1949.0
+
+
+
+ 20
+ 122
+ 55
+
+
+
+
+ 1949.6
+
+
+
+ 20
+ 123
+ 56
+
+
+
+
+ 1950.0
+
+
+
+ 20
+ 123
+ 56
+
+
+
+
+ 1950.8
+
+
+
+ 20
+ 122
+ 56
+
+
+
+
+ 1951.0
+
+
+
+ 20
+ 121
+ 56
+
+
+
+
+ 1951.0
+
+
+
+ 20
+ 120
+ 55
+
+
+
+
+ 1951.2
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1951.4
+
+
+
+ 20
+ 117
+ 55
+
+
+
+
+ 1952.2
+
+
+
+ 20
+ 117
+ 52
+
+
+
+
+ 1953.0
+
+
+
+ 20
+ 117
+ 53
+
+
+
+
+ 1953.2
+
+
+
+ 20
+ 117
+ 57
+
+
+
+
+ 1953.4
+
+
+
+ 20
+ 118
+ 57
+
+
+
+
+ 1953.4
+
+
+
+ 20
+ 121
+ 58
+
+
+
+
+ 1953.4
+
+
+
+ 20
+ 122
+ 58
+
+
+
+
+ 1954.4
+
+
+
+ 20
+ 123
+ 48
+
+
+
+
+ 1954.8
+
+
+
+ 20
+ 122
+ 51
+
+
+
+
+ 1955.2
+
+
+
+ 20
+ 121
+ 54
+
+
+
+
+ 1955.6
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1956.0
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1956.6
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 1957.2
+
+
+
+ 20
+ 119
+ 49
+
+
+
+
+ 1957.6
+
+
+
+ 20
+ 119
+ 51
+
+
+
+
+ 1958.0
+
+
+
+ 20
+ 120
+ 53
+
+
+
+
+ 1958.8
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1959.2
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1960.0
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1961.0
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1962.0
+
+
+
+ 20
+ 118
+ 54
+
+
+
+
+ 1962.4
+
+
+
+ 20
+ 113
+ 52
+
+
+
+
+ 1962.6
+
+
+
+ 20
+ 118
+ 51
+
+
+
+
+ 1962.6
+
+
+
+ 20
+ 118
+ 51
+
+
+
+
+ 1963.0
+
+
+
+ 20
+ 118
+ 54
+
+
+
+
+ 1963.4
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1963.6
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1964.0
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 1964.4
+
+
+
+ 20
+ 119
+ 52
+
+
+
+
+ 1964.8
+
+
+
+ 20
+ 116
+ 52
+
+
+
+
+ 1965.2
+
+
+
+ 20
+ 118
+ 52
+
+
+
+
+ 1966.0
+
+
+
+ 20
+ 118
+ 54
+
+
+
+
+ 1966.2
+
+
+
+ 20
+ 118
+ 54
+
+
+
+
+ 1966.4
+
+
+
+ 20
+ 119
+ 55
+
+
+
+
+ 1966.4
+
+
+
+ 20
+ 119
+ 55
+
+
+
+
+ 1967.4
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1968.2
+
+
+
+ 20
+ 119
+ 55
+
+
+
+
+ 1968.4
+
+
+
+ 20
+ 120
+ 55
+
+
+
+
+ 1968.6
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 1969.4
+
+
+
+ 20
+ 121
+ 56
+
+
+
+
+ 1969.6
+
+
+
+ 20
+ 121
+ 57
+
+
+
+
+ 1970.6
+
+
+
+ 20
+ 120
+ 53
+
+
+
+
+ 1970.8
+
+
+
+ 20
+ 120
+ 51
+
+
+
+
+ 1971.6
+
+
+
+ 20
+ 119
+ 55
+
+
+
+
+ 1972.2
+
+
+
+ 20
+ 119
+ 56
+
+
+
+
+ 1972.6
+
+
+
+ 20
+ 119
+ 56
+
+
+
+
+ 1972.8
+
+
+
+ 20
+ 119
+ 55
+
+
+
+
+ 1973.8
+
+
+
+ 20
+ 117
+ 55
+
+
+
+
+ 1974.4
+
+
+
+ 20
+ 115
+ 56
+
+
+
+
+ 1975.0
+
+
+
+ 20
+ 115
+ 52
+
+
+
+
+ 1975.2
+
+
+
+ 20
+ 114
+ 52
+
+
+
+
+ 1975.6
+
+
+
+ 20
+ 114
+ 52
+
+
+
+
+ 1976.2
+
+
+
+ 20
+ 115
+ 52
+
+
+
+
+ 1976.4
+
+
+
+ 20
+ 117
+ 54
+
+
+
+
+ 1976.6
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1977.2
+
+
+
+ 20
+ 120
+ 52
+
+
+
+
+ 1977.6
+
+
+
+ 20
+ 121
+ 53
+
+
+
+
+ 1977.8
+
+
+
+ 20
+ 121
+ 54
+
+
+
+
+ 1978.0
+
+
+
+ 20
+ 122
+ 55
+
+
+
+
+ 1978.4
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1978.6
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1978.8
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1979.4
+
+
+
+ 20
+ 121
+ 55
+
+
+
+
+ 1980.0
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1980.2
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1980.4
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1981.0
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1981.2
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1981.6
+
+
+
+ 20
+ 120
+ 52
+
+
+
+
+ 1982.4
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1982.6
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1982.6
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 1983.2
+
+
+
+ 20
+ 118
+ 49
+
+
+
+
+ 1983.8
+
+
+
+ 20
+ 118
+ 49
+
+
+
+
+ 1984.8
+
+
+
+ 20
+ 119
+ 0
+
+
+
+
+ 1985.6
+
+
+
+ 20
+ 117
+ 52
+
+
+
+
+ 1985.8
+
+
+
+ 20
+ 117
+ 52
+
+
+
+
+ 1987.0
+
+
+
+ 20
+ 115
+ 54
+
+
+
+
+ 1987.2
+
+
+
+ 20
+ 115
+ 53
+
+
+
+
+ 1988.2
+
+
+
+ 20
+ 116
+ 52
+
+
+
+
+ 1989.0
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1989.2
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1990.4
+
+
+
+ 20
+ 121
+ 52
+
+
+
+
+ 1991.4
+
+
+
+ 20
+ 121
+ 53
+
+
+
+
+ 1991.8
+
+
+
+ 20
+ 120
+ 54
+
+
+
+
+ 1992.4
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1993.0
+
+
+
+ 20
+ 119
+ 53
+
+
+
+
+ 1993.4
+
+
+
+ 20
+ 119
+ 54
+
+
+
+
+ 1994.2
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 1994.6
+
+
+
+ 20
+ 117
+ 52
+
+
+
+
+ 1994.8
+
+
+
+ 20
+ 117
+ 52
+
+
+
+
+ 1995.6
+
+
+
+ 20
+ 117
+ 51
+
+
+
+
+ 1996.8
+
+
+
+ 20
+ 118
+ 52
+
+
+
+
+ 1997.0
+
+
+
+ 20
+ 118
+ 52
+
+
+
+
+ 1997.8
+
+
+
+ 20
+ 118
+ 51
+
+
+
+
+ 1998.4
+
+
+
+ 20
+ 120
+ 51
+
+
+
+
+ 1999.0
+
+
+
+ 20
+ 120
+ 51
+
+
+
+
+ 1999.6
+
+
+
+ 20
+ 122
+ 52
+
+
+
+
+ 2000.2
+
+
+
+ 20
+ 121
+ 52
+
+
+
+
+ 2001.0
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 2001.2
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 2001.4
+
+
+
+ 20
+ 118
+ 53
+
+
+
+
+ 2001.8
+
+
+
+ 20
+ 117
+ 52
+
+
+
+
+ 2002.2
+
+
+
+ 20
+ 117
+ 51
+
+
+
+
+ 2002.4
+
+
+
+ 20
+ 117
+ 51
+
+
+
+
+ 2002.4
+
+
+
+ 20
+ 117
+ 51
+
+
+
+
+ 2003.4
+
+
+
+ 20
+ 117
+ 55
+
+
+
+
+ 2003.8
+
+
+
+ 20
+ 117
+ 56
+
+
+
+
+ 2004.4
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 2004.6
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 2005.0
+
+
+
+ 20
+ 118
+ 55
+
+
+
+
+ 2005.8
+
+
+
+ 20
+ 120
+ 52
+
+
+
+
+ 2006.0
+
+
+
+ 20
+ 121
+ 54
+
+
+
+
+ 2007.0
+
+
+
+ 20
+ 122
+ 59
+
+
+
+
+ 2008.0
+
+
+
+ 20
+ 122
+ 60
+
+
+
+
+ 2008.2
+
+
+
+ 20
+ 122
+ 58
+
+
+
+
+ 2009.0
+
+
+
+ 20
+ 122
+ 56
+
+
+
+
+ 2009.2
+
+
+
+ 20
+ 124
+ 56
+
+
+
+
+ 2010.0
+
+
+
+ 20
+ 124
+ 58
+
+
+
+
+ 2010.6
+
+
+
+ 20
+ 124
+ 58
+
+
+
+
+ 2011.2
+
+
+
+ 20
+ 122
+ 56
+
+
+
+
+ 2011.8
+
+
+
+ 20
+ 120
+ 58
+
+
+
+
+ 2012.4
+
+
+
+ 20
+ 119
+ 58
+
+
+
+
+ 2013.4
+
+
+
+ 20
+ 118
+ 57
+
+
+
+
+ 2013.4
+
+
+
+ 20
+ 118
+ 57
+
+
+
+
+ 2014.6
+
+
+
+ 20
+ 117
+ 59
+
+
+
+
+ 2014.8
+
+
+
+ 20
+ 117
+ 59
+
+
+
+
+ 2015.6
+
+
+
+ 20
+ 116
+ 60
+
+
+
+
+ 2016.2
+
+
+
+ 20
+ 116
+ 58
+
+
+
+
+ 2016.6
+
+
+
+ 20
+ 116
+ 56
+
+
+
+
+ 2017.4
+
+
+
+ 20
+ 117
+ 56
+
+
+
+
+ 2017.8
+
+
+
+ 20
+ 117
+ 56
+
+
+
+
+ 2018.0
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 2018.2
+
+
+
+ 20
+ 115
+ 56
+
+
+
+
+ 2018.4
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 2018.6
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 2019.0
+
+
+
+ 20
+ 118
+ 56
+
+
+
+
+ 2019.8
+
+
+
+ 20
+ 118
+ 55
+
+
+
+
+ 2020.0
+
+
+
+ 20
+ 117
+ 56
+
+
+
+
+ 2020.4
+
+
+
+ 20
+ 116
+ 58
+
+
+
+
+ 2020.8
+
+
+
+ 20
+ 119
+ 58
+
+
+
+
+ 2021.2
+
+
+
+ 19
+ 117
+ 57
+
+
+
+
+ 2021.4
+
+
+
+ 19
+ 117
+ 56
+
+
+
+
+ 2022.2
+
+
+
+ 19
+ 118
+ 55
+
+
+
+
+ 2022.4
+
+
+
+ 19
+ 119
+ 55
+
+
+
+
+ 2022.6
+
+
+
+ 19
+ 119
+ 54
+
+
+
+
+ 2023.4
+
+
+
+ 19
+ 118
+ 56
+
+
+
+
+ 2023.4
+
+
+
+ 19
+ 118
+ 54
+
+
+
+
+ 2024.4
+
+
+
+ 19
+ 118
+ 0
+
+
+
+
+ 2024.8
+
+
+
+ 19
+ 118
+ 51
+
+
+
+
+ 2025.4
+
+
+
+ 19
+ 117
+ 49
+
+
+
+
+ 2026.2
+
+
+
+ 19
+ 116
+ 50
+
+
+
+
+ 2026.6
+
+
+
+ 20
+ 116
+ 51
+
+
+
+
+ 2027.2
+
+
+
+ 20
+ 116
+ 49
+
+
+
+
+ 2027.6
+
+
+
+ 20
+ 117
+ 48
+
+
+
+
+ 2028.2
+
+
+
+ 20
+ 117
+ 48
+
+
+
+
+ 2028.6
+
+
+
+ 20
+ 117
+ 45
+
+
+
+
+ 2029.0
+
+
+
+ 20
+ 117
+ 48
+
+
+
+
+ 2029.0
+
+
+
+ 20
+ 116
+ 49
+
+
+
+
+ 2029.6
+
+
+
+ 20
+ 116
+ 49
+
+
+
+
+ 2030.0
+
+
+
+ 20
+ 117
+ 50
+
+
+
+
+ 2030.8
+
+
+
+ 20
+ 115
+ 46
+
+
+
+
+ 2030.8
+
+
+
+ 20
+ 115
+ 49
+
+
+
+
+ 2031.2
+
+
+
+ 20
+ 114
+ 0
+
+
+
+
+ 2031.6
+
+
+
+ 20
+ 115
+ 52
+
+
+
+
+ 2031.8
+
+
+
+ 20
+ 115
+ 50
+
+
+
+
+ 2032.4
+
+
+
+ 20
+ 114
+ 48
+
+
+
+
+ 2032.8
+
+
+
+ 20
+ 113
+ 48
+
+
+
+
+ 2033.0
+
+
+
+ 20
+ 112
+ 49
+
+
+
+
+ 2033.4
+
+
+
+ 20
+ 109
+ 52
+
+
+
+
+ 2033.8
+
+
+
+ 20
+ 109
+ 53
+
+
+
+
+ 2034.0
+
+
+
+ 20
+ 109
+ 54
+
+
+
+
+ 2034.6
+
+
+
+ 20
+ 109
+ 56
+
+
+
+
+ 2034.8
+
+
+
+ 20
+ 109
+ 56
+
+
+
+
+ 2035.2
+
+
+
+ 20
+ 110
+ 56
+
+
+
+
+ 2035.8
+
+
+
+ 20
+ 111
+ 55
+
+
+
+
+ 2036.8
+
+
+
+ 20
+ 112
+ 54
+
+
+
+
+ 2036.8
+
+
+
+ 20
+ 111
+ 55
+
+
+
+
+ 2037.8
+
+
+
+ 20
+ 113
+ 55
+
+
+
+
+ 2038.0
+
+
+
+ 20
+ 114
+ 56
+
+
+
+
+ 2038.2
+
+
+
+ 20
+ 114
+ 55
+
+
+
+
+ 2039.0
+
+
+
+ 20
+ 116
+ 55
+
+
+
+
+ 2039.4
+
+
+
+ 20
+ 116
+ 54
+
+
+
+
+ 2040.0
+
+
+
+ 20
+ 116
+ 51
+
+
+
+
+ 2040.6
+
+
+
+ 20
+ 114
+ 52
+
+
+
+
+ 2041.2
+
+
+
+ 20
+ 113
+ 51
+
+
+
+
+ 2041.6
+
+
+
+ 20
+ 113
+ 53
+
+
+
+
+ 2042.2
+
+
+
+ 20
+ 114
+ 54
+
+
+
+
+ 2043.0
+
+
+
+ 20
+ 115
+ 52
+
+
+
+
+ 2043.2
+
+
+
+ 20
+ 115
+ 51
+
+
+
+
+ 2043.4
+
+
+
+ 20
+ 114
+ 51
+
+
+
+
+ 2044.2
+
+
+
+ 20
+ 116
+ 54
+
+
+
+
+ 2044.4
+
+
+
+ 20
+ 116
+ 52
+
+
+
+
+ 2045.0
+
+
+
+ 20
+ 116
+ 56
+
+
+
+
+ 2045.2
+
+
+
+ 20
+ 116
+ 56
+
+
+
+
+ 2045.4
+
+
+
+ 20
+ 116
+ 57
+
+
+
+
+ 2045.4
+
+
+
+ 20
+ 116
+ 56
+
+
+
+
+ 2046.0
+
+
+
+ 20
+ 116
+ 58
+
+
+
+
+ 2046.4
+
+
+
+ 20
+ 119
+ 59
+
+
+
+
+ 2046.6
+
+
+
+ 20
+ 117
+ 58
+
+
+
+
+ 2046.8
+
+
+
+ 20
+ 119
+ 57
+
+
+
+
+ 2047.6
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 2047.8
+
+
+
+ 20
+ 120
+ 56
+
+
+
+
+ 2048.8
+
+
+
+ 20
+ 121
+ 57
+
+
+
+
+ 2049.0
+
+
+
+ 20
+ 120
+ 57
+
+
+
+
+ 2049.2
+
+
+
+ 20
+ 117
+ 58
+
+
+
+
+ 2049.6
+
+
+
+ 20
+ 114
+ 56
+
+
+
+
+ 2049.6
+
+
+
+ 20
+ 114
+ 0
+
+
+
+
+ 2049.6
+
+
+
+ 20
+ 111
+ 49
+
+
+
+
+ 2049.6
+
+
+
+ 20
+ 111
+ 49
+
+
+
+
+ 2049.8
+
+
+
+ 20
+ 110
+ 0
+
+
+
+
+ 2049.8
+
+
+
+ 20
+ 109
+ 58
+
+
+
+
+ 2049.8
+
+
+
+ 20
+ 109
+ 62
+
+
+
+
+ 2049.8
+
+
+
+ 20
+ 107
+ 62
+
+
+
+
+ 2049.6
+
+
+
+ 19
+ 106
+ 62
+
+
+
+
+ 2049.6
+
+
+
+ 19
+ 107
+ 63
+
+
+
+
+ 2049.6
+
+
+
+ 19
+ 107
+ 61
+
+
+
+
+ 2049.4
+
+
+
+ 19
+ 104
+ 83
+
+
+
+
+ 2049.6
+
+
+
+ 19
+ 103
+ 84
+
+
+
+
+ 2049.8
+
+
+
+ 19
+ 100
+ 84
+
+
+
+
+ 2049.8
+
+
+
+ 19
+ 102
+ 84
+
+
+
+
+ 2050.4
+
+
+
+ 19
+ 104
+ 84
+
+
+
+
+ 2050.2
+
+
+
+ 19
+ 109
+ 84
+
+
+
+
+ 2050.4
+
+
+
+ 19
+ 112
+ 84
+
+
+
+
+ 2050.8
+
+
+
+ 19
+ 116
+ 84
+
+
+
+
+ 2051.2
+
+
+
+ 19
+ 117
+ 84
+
+
+
+
+ 2051.4
+
+
+
+ 19
+ 118
+ 84
+
+
+
+
+ 2051.4
+
+
+
+ 19
+ 117
+ 52
+
+
+
+
+ 2051.4
+
+
+
+ 19
+ 117
+ 52
+
+
+
+
+ 2051.0
+
+
+
+ 19
+ 118
+ 0
+
+
+
+
+ 2051.0
+
+
+
+ 19
+ 121
+ 85
+
+
+
+
+ 2051.0
+
+
+
+ 19
+ 123
+ 84
+
+
+
+
+ 2050.6
+
+
+
+ 19
+ 124
+ 84
+
+
+
+
+ 2050.4
+
+
+
+ 19
+ 124
+ 84
+
+
+
+
+ 2049.6
+
+
+
+ 19
+ 123
+ 70
+
+
+
+
+ 2049.4
+
+
+
+ 19
+ 120
+ 70
+
+
+
+
+ 2049.2
+
+
+
+ 19
+ 120
+ 65
+
+
+
+
+ 2048.8
+
+
+
+ 19
+ 117
+ 59
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 116
+ 58
+
+
+
+
+ 2048.4
+
+
+
+ 19
+ 116
+ 58
+
+
+
+
+ 2048.0
+
+
+
+ 19
+ 115
+ 55
+
+
+
+
+ 2047.8
+
+
+
+ 19
+ 113
+ 49
+
+
+
+
+ 2047.8
+
+
+
+ 19
+ 114
+ 51
+
+
+
+
+ 2047.6
+
+
+
+ 19
+ 111
+ 56
+
+
+
+
+ 2047.4
+
+
+
+ 19
+ 110
+ 56
+
+
+
+
+ 2047.4
+
+
+
+ 19
+ 110
+ 56
+
+
+
+
+ 2047.2
+
+
+
+ 19
+ 108
+ 83
+
+
+
+
+ 2048.2
+
+
+
+ 19
+ 110
+ 42
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 113
+ 42
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 114
+ 0
+
+
+
+
+ 2049.2
+
+
+
+ 19
+ 112
+ 84
+
+
+
+
+ 2049.2
+
+
+
+ 19
+ 113
+ 84
+
+
+
+
+ 2049.2
+
+
+
+ 19
+ 116
+ 84
+
+
+
+
+ 2049.4
+
+
+
+ 19
+ 116
+ 84
+
+
+
+
+ 2049.0
+
+
+
+ 19
+ 117
+ 84
+
+
+
+
+ 2049.0
+
+
+
+ 19
+ 117
+ 84
+
+
+
+
+ 2048.8
+
+
+
+ 19
+ 120
+ 83
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 120
+ 82
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 120
+ 83
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 122
+ 83
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 122
+ 83
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 125
+ 83
+
+
+
+
+ 2048.6
+
+
+
+ 19
+ 127
+ 84
+
+
+
+
+ 2048.6
+
+
+
+ 18
+ 131
+ 84
+
+
+
+
+ 2049.2
+
+
+
+ 18
+ 130
+ 85
+
+
+
+
+ 2049.2
+
+
+
+ 18
+ 131
+ 85
+
+
+
+
+ 2049.2
+
+
+
+ 18
+ 134
+ 84
+
+
+
+
+ 2049.4
+
+
+
+ 18
+ 134
+ 84
+
+
+
+
+ 2049.6
+
+
+
+ 18
+ 134
+ 85
+
+
+
+
+ 2049.8
+
+
+
+ 18
+ 131
+ 84
+
+
+
+
+ 2049.4
+
+
+
+ 18
+ 129
+ 82
+
+
+
+
+ 2048.4
+
+
+
+ 18
+ 133
+ 78
+
+
+
+
+ 2047.8
+
+
+
+ 18
+ 133
+ 78
+
+
+
+
+ 2047.2
+
+
+
+ 18
+ 135
+ 79
+
+
+
+
+ 2046.0
+
+
+
+ 18
+ 134
+ 80
+
+
+
+
+ 2045.6
+
+
+
+ 18
+ 137
+ 81
+
+
+
+
+ 2045.2
+
+
+
+ 18
+ 136
+ 81
+
+
+
+
+ 2045.0
+
+
+
+ 18
+ 137
+ 80
+
+
+
+
+ 2044.6
+
+
+
+ 18
+ 136
+ 80
+
+
+
+
+ 2044.0
+
+
+
+ 18
+ 135
+ 78
+
+
+
+
+ 2043.6
+
+
+
+ 18
+ 132
+ 79
+
+
+
+
+ 2042.6
+
+
+
+ 18
+ 135
+ 80
+
+
+
+
+ 2041.8
+
+
+
+ 18
+ 137
+ 81
+
+
+
+
+ 2041.4
+
+
+
+ 18
+ 136
+ 81
+
+
+
+
+ 2040.8
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 2040.0
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 2039.0
+
+
+
+ 18
+ 134
+ 81
+
+
+
+
+ 2038.2
+
+
+
+ 18
+ 135
+ 81
+
+
+
+
+ 2037.8
+
+
+
+ 18
+ 134
+ 81
+
+
+
+
+ 2036.6
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 2035.4
+
+
+
+ 18
+ 131
+ 80
+
+
+
+
+ 2035.0
+
+
+
+ 18
+ 131
+ 80
+
+
+
+
+ 2034.2
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 2033.4
+
+
+
+ 18
+ 134
+ 82
+
+
+
+
+ 2033.0
+
+
+
+ 18
+ 131
+ 80
+
+
+
+
+ 2032.2
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2031.8
+
+
+
+ 18
+ 131
+ 82
+
+
+
+
+ 2030.8
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 2030.4
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2029.6
+
+
+
+ 18
+ 129
+ 80
+
+
+
+
+ 2028.8
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2028.6
+
+
+
+ 18
+ 128
+ 81
+
+
+
+
+ 2027.6
+
+
+
+ 18
+ 129
+ 83
+
+
+
+
+ 2026.2
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 2025.6
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 2025.0
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2024.6
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 2024.0
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2023.2
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2023.2
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2022.6
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2022.6
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2022.2
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 2021.6
+
+
+
+ 18
+ 132
+ 81
+
+
+
+
+ 2021.0
+
+
+
+ 18
+ 135
+ 82
+
+
+
+
+ 2020.6
+
+
+
+ 18
+ 134
+ 82
+
+
+
+
+ 2019.4
+
+
+
+ 18
+ 135
+ 82
+
+
+
+
+ 2019.2
+
+
+
+ 18
+ 132
+ 87
+
+
+
+
+ 2018.4
+
+
+
+ 18
+ 132
+ 87
+
+
+
+
+ 2017.2
+
+
+
+ 18
+ 131
+ 83
+
+
+
+
+ 2016.0
+
+
+
+ 18
+ 131
+ 82
+
+
+
+
+ 2015.4
+
+
+
+ 18
+ 131
+ 83
+
+
+
+
+ 2015.0
+
+
+
+ 18
+ 131
+ 83
+
+
+
+
+ 2014.0
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2012.8
+
+
+
+ 18
+ 132
+ 82
+
+
+
+
+ 2012.6
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2012.4
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2012.2
+
+
+
+ 18
+ 131
+ 81
+
+
+
+
+ 2011.8
+
+
+
+ 18
+ 128
+ 82
+
+
+
+
+ 2010.8
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2010.4
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2009.4
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 2009.2
+
+
+
+ 18
+ 130
+ 82
+
+
+
+
+ 2008.6
+
+
+
+ 18
+ 129
+ 82
+
+
+
+
+ 2008.6
+
+
+
+ 18
+ 132
+ 82
+
+
+
+
+ 2008.2
+
+
+
+ 18
+ 130
+ 82
+
+
+
+
+ 2007.0
+
+
+
+ 18
+ 132
+ 83
+
+
+
+
+ 2006.6
+
+
+
+ 18
+ 131
+ 83
+
+
+
+
+ 2006.0
+
+
+
+ 18
+ 131
+ 82
+
+
+
+
+ 2005.0
+
+
+
+ 18
+ 127
+ 81
+
+
+
+
+ 2004.6
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 2004.2
+
+
+
+ 18
+ 131
+ 82
+
+
+
+
+ 2003.6
+
+
+
+ 18
+ 132
+ 84
+
+
+
+
+ 2002.6
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 2002.2
+
+
+
+ 18
+ 129
+ 81
+
+
+
+
+ 2001.4
+
+
+
+ 18
+ 127
+ 80
+
+
+
+
+ 2000.2
+
+
+
+ 18
+ 127
+ 81
+
+
+
+
+ 1999.8
+
+
+
+ 18
+ 128
+ 81
+
+
+
+
+ 1999.0
+
+
+
+ 18
+ 126
+ 81
+
+
+
+
+ 1997.8
+
+
+
+ 18
+ 123
+ 77
+
+
+
+
+ 1997.2
+
+
+
+ 18
+ 126
+ 79
+
+
+
+
+ 1997.0
+
+
+
+ 18
+ 131
+ 82
+
+
+
+
+ 1996.8
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 1995.8
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 1994.6
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 1993.6
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 1993.4
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 1992.2
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 1991.4
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 1991.4
+
+
+
+ 18
+ 134
+ 81
+
+
+
+
+ 1991.2
+
+
+
+ 18
+ 134
+ 81
+
+
+
+
+ 1990.2
+
+
+
+ 18
+ 134
+ 81
+
+
+
+
+ 1989.0
+
+
+
+ 18
+ 134
+ 81
+
+
+
+
+ 1988.6
+
+
+
+ 18
+ 133
+ 81
+
+
+
+
+ 1987.8
+
+
+
+ 18
+ 133
+ 82
+
+
+
+
+ 1987.6
+
+
+
+ 18
+ 134
+ 82
+
+
+
+
+ 1986.6
+
+
+
+ 18
+ 135
+ 80
+
+
+
+
+ 1985.6
+
+
+
+ 17
+ 132
+ 80
+
+
+
+
+ 1985.4
+
+
+
+ 17
+ 133
+ 80
+
+
+
+
+ 1984.4
+
+
+
+ 17
+ 133
+ 80
+
+
+
+
+ 1983.2
+
+
+
+ 17
+ 133
+ 80
+
+
+
+
+ 1982.2
+
+
+
+ 17
+ 130
+ 83
+
+
+
+
+ 1982.0
+
+
+
+ 17
+ 132
+ 80
+
+
+
+
+ 1981.6
+
+
+
+ 17
+ 130
+ 80
+
+
+
+
+ 1980.6
+
+
+
+ 17
+ 131
+ 82
+
+
+
+
+ 1979.4
+
+
+
+ 17
+ 132
+ 82
+
+
+
+
+ 1978.4
+
+
+
+ 17
+ 131
+ 83
+
+
+
+
+ 1977.4
+
+
+
+ 17
+ 130
+ 81
+
+
+
+
+ 1977.0
+
+
+
+ 17
+ 130
+ 82
+
+
+
+
+ 1976.2
+
+
+
+ 17
+ 130
+ 81
+
+
+
+
+ 1975.2
+
+
+
+ 17
+ 132
+ 82
+
+
+
+
+ 1974.0
+
+
+
+ 17
+ 133
+ 83
+
+
+
+
+ 1972.8
+
+
+
+ 17
+ 133
+ 62
+
+
+
+
+ 1972.2
+
+
+
+ 17
+ 130
+ 60
+
+
+
+
+ 1971.8
+
+
+
+ 17
+ 130
+ 60
+
+
+
+
+ 1970.6
+
+
+
+ 17
+ 127
+ 83
+
+
+
+
+ 1969.4
+
+
+
+ 17
+ 126
+ 84
+
+
+
+
+ 1968.4
+
+
+
+ 17
+ 127
+ 83
+
+
+
+
+ 1967.2
+
+
+
+ 17
+ 126
+ 83
+
+
+
+
+ 1966.4
+
+
+
+ 17
+ 124
+ 83
+
+
+
+
+ 1966.0
+
+
+
+ 17
+ 123
+ 83
+
+
+
+
+ 1965.2
+
+
+
+ 17
+ 123
+ 80
+
+
+
+
+ 1965.0
+
+
+
+ 17
+ 123
+ 80
+
+
+
+
+ 1964.0
+
+
+
+ 17
+ 122
+ 0
+
+
+
+
+ 1962.6
+
+
+
+ 17
+ 121
+ 0
+
+
+
+
+ 1962.0
+
+
+
+ 17
+ 121
+ 84
+
+
+
+
+ 1961.6
+
+
+
+ 17
+ 119
+ 84
+
+
+
+
+ 1961.4
+
+
+
+ 17
+ 118
+ 84
+
+
+
+
+ 1961.2
+
+
+
+ 17
+ 118
+ 84
+
+
+
+
+ 1960.6
+
+
+
+ 17
+ 117
+ 74
+
+
+
+
+ 1959.6
+
+
+
+ 17
+ 119
+ 83
+
+
+
+
+ 1959.4
+
+
+
+ 17
+ 119
+ 82
+
+
+
+
+ 1958.4
+
+
+
+ 17
+ 119
+ 81
+
+
+
+
+ 1958.0
+
+
+
+ 17
+ 119
+ 81
+
+
+
+
+ 1957.0
+
+
+
+ 17
+ 120
+ 81
+
+
+
+
+ 1955.6
+
+
+
+ 17
+ 121
+ 83
+
+
+
+
+ 1954.8
+
+
+
+ 17
+ 122
+ 83
+
+
+
+
+ 1954.6
+
+
+
+ 17
+ 121
+ 82
+
+
+
+
+ 1953.2
+
+
+
+ 17
+ 123
+ 82
+
+
+
+
+ 1952.2
+
+
+
+ 17
+ 123
+ 80
+
+
+
+
+ 1951.0
+
+
+
+ 17
+ 120
+ 80
+
+
+
+
+ 1950.6
+
+
+
+ 17
+ 124
+ 80
+
+
+
+
+ 1950.0
+
+
+
+ 17
+ 124
+ 78
+
+
+
+
+ 1949.4
+
+
+
+ 17
+ 124
+ 65
+
+
+
+
+ 1948.8
+
+
+
+ 17
+ 123
+ 65
+
+
+
+
+ 1947.6
+
+
+
+ 17
+ 123
+ 0
+
+
+
+
+ 1946.8
+
+
+
+ 17
+ 121
+ 83
+
+
+
+
+ 1946.6
+
+
+
+ 17
+ 121
+ 83
+
+
+
+
+ 1945.4
+
+
+
+ 17
+ 120
+ 0
+
+
+
+
+ 1944.8
+
+
+
+ 17
+ 119
+ 80
+
+
+
+
+ 1944.4
+
+
+
+ 17
+ 119
+ 80
+
+
+
+
+ 1943.4
+
+
+
+ 17
+ 120
+ 80
+
+
+
+
+ 1942.0
+
+
+
+ 17
+ 122
+ 80
+
+
+
+
+ 1941.2
+
+
+
+ 17
+ 120
+ 80
+
+
+
+
+ 1940.6
+
+
+
+ 17
+ 118
+ 80
+
+
+
+
+ 1939.2
+
+
+
+ 17
+ 117
+ 79
+
+
+
+
+ 1938.8
+
+
+
+ 17
+ 118
+ 79
+
+
+
+
+ 1937.8
+
+
+
+ 17
+ 117
+ 80
+
+
+
+
+ 1936.8
+
+
+
+ 17
+ 118
+ 80
+
+
+
+
+ 1935.4
+
+
+
+ 17
+ 118
+ 80
+
+
+
+
+ 1934.4
+
+
+
+ 17
+ 119
+ 80
+
+
+
+
+ 1934.2
+
+
+
+ 17
+ 119
+ 80
+
+
+
+
+ 1932.8
+
+
+
+ 17
+ 118
+ 79
+
+
+
+
+ 1932.6
+
+
+
+ 17
+ 118
+ 79
+
+
+
+
+ 1932.0
+
+
+
+ 17
+ 117
+ 79
+
+
+
+
+ 1931.8
+
+
+
+ 17
+ 118
+ 79
+
+
+
+
+ 1931.0
+
+
+
+ 17
+ 118
+ 79
+
+
+
+
+ 1930.2
+
+
+
+ 17
+ 118
+ 81
+
+
+
+
+ 1930.0
+
+
+
+ 17
+ 118
+ 81
+
+
+
+
+ 1929.0
+
+
+
+ 17
+ 119
+ 78
+
+
+
+
+ 1927.6
+
+
+
+ 17
+ 117
+ 79
+
+
+
+
+ 1926.6
+
+
+
+ 17
+ 117
+ 80
+
+
+
+
+ 1926.2
+
+
+
+ 17
+ 117
+ 80
+
+
+
+
+ 1926.0
+
+
+
+ 17
+ 117
+ 80
+
+
+
+
+ 1925.4
+
+
+
+ 17
+ 117
+ 80
+
+
+
+
+ 1924.8
+
+
+
+ 17
+ 117
+ 82
+
+
+
+
+ 1924.0
+
+
+
+ 17
+ 117
+ 82
+
+
+
+
+ 1923.8
+
+
+
+ 17
+ 117
+ 82
+
+
+
+
+ 1923.0
+
+
+
+ 17
+ 116
+ 82
+
+
+
+
+ 1921.8
+
+
+
+ 17
+ 114
+ 81
+
+
+
+
+ 1921.0
+
+
+
+ 17
+ 117
+ 81
+
+
+
+
+ 1920.6
+
+
+
+ 17
+ 117
+ 81
+
+
+
+
+ 1920.4
+
+
+
+ 17
+ 117
+ 81
+
+
+
+
+ 1920.0
+
+
+
+ 17
+ 121
+ 82
+
+
+
+
+ 1919.8
+
+
+
+ 17
+ 123
+ 83
+
+
+
+
+ 1919.8
+
+
+
+ 17
+ 118
+ 83
+
+
+
+
+ 1920.0
+
+
+
+ 17
+ 121
+ 83
+
+
+
+
+ 1920.2
+
+
+
+ 17
+ 121
+ 84
+
+
+
+
+ 1919.6
+
+
+
+ 17
+ 122
+ 82
+
+
+
+
+ 1919.4
+
+
+
+ 17
+ 123
+ 82
+
+
+
+
+ 1918.2
+
+
+
+ 17
+ 124
+ 81
+
+
+
+
+ 1918.0
+
+
+
+ 17
+ 125
+ 80
+
+
+
+
+ 1917.8
+
+
+
+ 17
+ 122
+ 80
+
+
+
+
+ 1917.6
+
+
+
+ 17
+ 120
+ 80
+
+
+
+
+ 1917.6
+
+
+
+ 17
+ 125
+ 80
+
+
+
+
+ 1917.0
+
+
+
+ 17
+ 124
+ 65
+
+
+
+
+ 1916.4
+
+
+
+ 17
+ 121
+ 62
+
+
+
+
+ 1916.0
+
+
+
+ 17
+ 118
+ 0
+
+
+
+
+ 1914.8
+
+
+
+ 17
+ 120
+ 78
+
+
+
+
+ 1914.0
+
+
+
+ 17
+ 119
+ 74
+
+
+
+
+ 1913.8
+
+
+
+ 17
+ 121
+ 74
+
+
+
+
+ 1913.2
+
+
+
+ 17
+ 118
+ 81
+
+
+
+
+ 1912.6
+
+
+
+ 17
+ 117
+ 0
+
+
+
+
+ 1912.6
+
+
+
+ 17
+ 116
+ 0
+
+
+
+
+ 1912.4
+
+
+
+ 17
+ 113
+ 0
+
+
+
+
+ 1911.4
+
+
+
+ 17
+ 113
+ 80
+
+
+
+
+ 1910.8
+
+
+
+ 17
+ 111
+ 79
+
+
+
+
+ 1910.4
+
+
+
+ 17
+ 112
+ 81
+
+
+
+
+ 1909.0
+
+
+
+ 17
+ 112
+ 82
+
+
+
+
+ 1908.0
+
+
+
+ 17
+ 113
+ 82
+
+
+
+
+ 1907.8
+
+
+
+ 17
+ 111
+ 81
+
+
+
+
+ 1906.6
+
+
+
+ 17
+ 111
+ 80
+
+
+
+
+ 1906.2
+
+
+
+ 17
+ 109
+ 63
+
+
+
+
+ 1905.4
+
+
+
+ 17
+ 110
+ 59
+
+
+
+
+ 1904.0
+
+
+
+ 17
+ 110
+ 60
+
+
+
+
+ 1903.0
+
+
+
+ 17
+ 107
+ 63
+
+
+
+
+ 1902.8
+
+
+
+ 17
+ 108
+ 59
+
+
+
+
+ 1902.4
+
+
+
+ 17
+ 104
+ 58
+
+
+
+
+ 1902.4
+
+
+
+ 17
+ 104
+ 58
+
+
+
+
+ 1902.2
+
+
+
+ 17
+ 101
+ 58
+
+
+
+
+ 1901.6
+
+
+
+ 17
+ 102
+ 58
+
+
+
+
+ 1901.0
+
+
+
+ 17
+ 106
+ 56
+
+
+
+
+ 1900.6
+
+
+
+ 17
+ 107
+ 55
+
+
+
+
+ 1900.4
+
+
+
+ 17
+ 107
+ 56
+
+
+
+
+ 1900.0
+
+
+
+ 17
+ 104
+ 56
+
+
+
+
+ 1899.2
+
+
+
+ 17
+ 103
+ 0
+
+
+
+
+ 1898.4
+
+
+
+ 17
+ 103
+ 59
+
+
+
+
+ 1898.2
+
+
+
+ 17
+ 103
+ 60
+
+
+
+
+ 1897.2
+
+
+
+ 17
+ 101
+ 63
+
+
+
+
+ 1896.6
+
+
+
+ 17
+ 100
+ 63
+
+
+
+
+ 1896.0
+
+
+
+ 17
+ 102
+ 63
+
+
+
+
+ 1895.0
+
+
+
+ 17
+ 99
+ 62
+
+
+
+
+ 1894.8
+
+
+
+ 17
+ 99
+ 63
+
+
+
+
+ 1894.8
+
+
+
+ 17
+ 100
+ 63
+
+
+
+
+ 1894.6
+
+
+
+ 17
+ 97
+ 63
+
+
+
+
+ 1894.0
+
+
+
+ 17
+ 100
+ 62
+
+
+
+
+ 1893.8
+
+
+
+ 17
+ 100
+ 62
+
+
+
+
+ 1893.4
+
+
+
+ 17
+ 101
+ 62
+
+
+
+
+ 1893.0
+
+
+
+ 17
+ 98
+ 62
+
+
+
+
+ 1892.4
+
+
+
+ 17
+ 100
+ 63
+
+
+
+
+ 1892.2
+
+
+
+ 17
+ 96
+ 63
+
+
+
+
+ 1891.4
+
+
+
+ 17
+ 98
+ 57
+
+
+
+
+ 1890.6
+
+
+
+ 17
+ 98
+ 56
+
+
+
+
+ 1890.2
+
+
+
+ 17
+ 96
+ 57
+
+
+
+
+ 1889.2
+
+
+
+ 17
+ 94
+ 57
+
+
+
+
+ 1888.0
+
+
+
+ 17
+ 96
+ 58
+
+
+
+
+ 1887.4
+
+
+
+ 17
+ 96
+ 56
+
+
+
+
+ 1887.0
+
+
+
+ 17
+ 97
+ 56
+
+
+
+
+ 1887.0
+
+
+
+ 17
+ 93
+ 56
+
+
+
+
+ 1886.6
+
+
+
+ 17
+ 91
+ 54
+
+
+
+
+ 1886.6
+
+
+
+ 17
+ 94
+ 54
+
+
+
+
+ 1886.0
+
+
+
+ 17
+ 92
+ 64
+
+
+
+
+ 1885.4
+
+
+
+ 17
+ 90
+ 64
+
+
+
+
+ 1884.8
+
+
+
+ 17
+ 90
+ 64
+
+
+
+
+ 1883.6
+
+
+
+ 17
+ 94
+ 63
+
+
+
+
+ 1883.4
+
+
+
+ 17
+ 92
+ 63
+
+
+
+
+ 1882.4
+
+
+
+ 17
+ 92
+ 63
+
+
+
+
+ 1881.4
+
+
+
+ 17
+ 91
+ 63
+
+
+
+
+ 1881.2
+
+
+
+ 17
+ 90
+ 60
+
+
+
+
+ 1880.6
+
+
+
+ 17
+ 93
+ 59
+
+
+
+
+ 1880.0
+
+
+
+ 17
+ 90
+ 60
+
+
+
+
+ 1878.8
+
+
+
+ 17
+ 89
+ 61
+
+
+
+
+ 1878.4
+
+
+
+ 17
+ 89
+ 61
+
+
+
+
+ 1877.8
+
+
+
+ 17
+ 90
+ 60
+
+
+
+
+ 1876.8
+
+
+
+ 17
+ 90
+ 80
+
+
+
+
+ 1876.6
+
+
+
+ 17
+ 90
+ 80
+
+
+
+
+ 1875.4
+
+
+
+ 17
+ 90
+ 80
+
+
+
+
+ 1875.0
+
+
+
+ 17
+ 93
+ 80
+
+
+
+
+ 1874.4
+
+
+
+ 17
+ 93
+ 81
+
+
+
+
+ 1874.4
+
+
+
+ 17
+ 95
+ 81
+
+
+
+
+ 1874.2
+
+
+
+ 17
+ 98
+ 82
+
+
+
+
+ 1874.0
+
+
+
+ 17
+ 101
+ 82
+
+
+
+
+ 1873.6
+
+
+
+ 17
+ 103
+ 82
+
+
+
+
+ 1873.6
+
+
+
+ 17
+ 105
+ 71
+
+
+
+
+ 1873.4
+
+
+
+ 17
+ 106
+ 63
+
+
+
+
+ 1873.4
+
+
+
+ 17
+ 107
+ 62
+
+
+
+
+ 1872.2
+
+
+
+ 17
+ 108
+ 63
+
+
+
+
+ 1871.8
+
+
+
+ 17
+ 105
+ 0
+
+
+
+
+ 1871.6
+
+
+
+ 17
+ 108
+ 59
+
+
+
+
+ 1871.4
+
+
+
+ 17
+ 105
+ 59
+
+
+
+
+ 1871.2
+
+
+
+ 17
+ 106
+ 59
+
+
+
+
+ 1871.0
+
+
+
+ 17
+ 106
+ 62
+
+
+
+
+ 1870.4
+
+
+
+ 17
+ 106
+ 62
+
+
+
+
+ 1870.0
+
+
+
+ 17
+ 102
+ 59
+
+
+
+
+ 1869.6
+
+
+
+ 17
+ 105
+ 60
+
+
+
+
+ 1869.6
+
+
+
+ 17
+ 102
+ 60
+
+
+
+
+ 1869.2
+
+
+
+ 17
+ 103
+ 55
+
+
+
+
+ 1868.8
+
+
+
+ 17
+ 104
+ 55
+
+
+
+
+ 1867.6
+
+
+
+ 17
+ 101
+ 60
+
+
+
+
+ 1866.8
+
+
+
+ 17
+ 99
+ 60
+
+
+
+
+ 1866.6
+
+
+
+ 17
+ 100
+ 59
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 99
+ 58
+
+
+
+
+ 1865.8
+
+
+
+ 17
+ 103
+ 59
+
+
+
+
+ 1865.2
+
+
+
+ 17
+ 104
+ 61
+
+
+
+
+ 1864.2
+
+
+
+ 17
+ 102
+ 62
+
+
+
+
+ 1863.6
+
+
+
+ 17
+ 101
+ 62
+
+
+
+
+ 1863.2
+
+
+
+ 17
+ 101
+ 60
+
+
+
+
+ 1862.2
+
+
+
+ 17
+ 98
+ 60
+
+
+
+
+ 1861.8
+
+
+
+ 17
+ 99
+ 62
+
+
+
+
+ 1861.6
+
+
+
+ 17
+ 99
+ 62
+
+
+
+
+ 1860.8
+
+
+
+ 17
+ 99
+ 62
+
+
+
+
+ 1860.6
+
+
+
+ 17
+ 99
+ 62
+
+
+
+
+ 1860.4
+
+
+
+ 17
+ 101
+ 82
+
+
+
+
+ 1860.2
+
+
+
+ 17
+ 98
+ 82
+
+
+
+
+ 1859.8
+
+
+
+ 17
+ 100
+ 85
+
+
+
+
+ 1859.8
+
+
+
+ 17
+ 105
+ 86
+
+
+
+
+ 1859.8
+
+
+
+ 17
+ 108
+ 87
+
+
+
+
+ 1860.2
+
+
+
+ 17
+ 112
+ 88
+
+
+
+
+ 1860.2
+
+
+
+ 17
+ 115
+ 88
+
+
+
+
+ 1860.4
+
+
+
+ 17
+ 116
+ 88
+
+
+
+
+ 1860.4
+
+
+
+ 17
+ 120
+ 86
+
+
+
+
+ 1860.8
+
+
+
+ 17
+ 121
+ 87
+
+
+
+
+ 1860.8
+
+
+
+ 17
+ 120
+ 85
+
+
+
+
+ 1860.8
+
+
+
+ 17
+ 119
+ 85
+
+
+
+
+ 1860.8
+
+
+
+ 17
+ 122
+ 85
+
+
+
+
+ 1861.0
+
+
+
+ 17
+ 122
+ 85
+
+
+
+
+ 1861.2
+
+
+
+ 17
+ 120
+ 83
+
+
+
+
+ 1861.4
+
+
+
+ 17
+ 123
+ 84
+
+
+
+
+ 1861.6
+
+
+
+ 17
+ 123
+ 86
+
+
+
+
+ 1861.8
+
+
+
+ 17
+ 127
+ 86
+
+
+
+
+ 1862.2
+
+
+
+ 17
+ 126
+ 85
+
+
+
+
+ 1862.8
+
+
+
+ 17
+ 128
+ 86
+
+
+
+
+ 1863.2
+
+
+
+ 17
+ 129
+ 86
+
+
+
+
+ 1864.0
+
+
+
+ 17
+ 129
+ 87
+
+
+
+
+ 1864.0
+
+
+
+ 17
+ 130
+ 84
+
+
+
+
+ 1864.0
+
+
+
+ 17
+ 127
+ 83
+
+
+
+
+ 1863.8
+
+
+
+ 17
+ 128
+ 83
+
+
+
+
+ 1863.8
+
+
+
+ 17
+ 131
+ 83
+
+
+
+
+ 1864.6
+
+
+
+ 17
+ 132
+ 85
+
+
+
+
+ 1864.6
+
+
+
+ 17
+ 132
+ 85
+
+
+
+
+ 1864.6
+
+
+
+ 17
+ 132
+ 84
+
+
+
+
+ 1864.8
+
+
+
+ 17
+ 132
+ 82
+
+
+
+
+ 1864.8
+
+
+
+ 17
+ 128
+ 83
+
+
+
+
+ 1864.8
+
+
+
+ 17
+ 131
+ 83
+
+
+
+
+ 1864.8
+
+
+
+ 17
+ 130
+ 83
+
+
+
+
+ 1865.0
+
+
+
+ 17
+ 131
+ 84
+
+
+
+
+ 1865.0
+
+
+
+ 17
+ 132
+ 85
+
+
+
+
+ 1864.8
+
+
+
+ 17
+ 131
+ 83
+
+
+
+
+ 1865.0
+
+
+
+ 17
+ 131
+ 85
+
+
+
+
+ 1865.2
+
+
+
+ 17
+ 132
+ 86
+
+
+
+
+ 1865.2
+
+
+
+ 17
+ 132
+ 86
+
+
+
+
+ 1865.4
+
+
+
+ 17
+ 133
+ 85
+
+
+
+
+ 1865.4
+
+
+
+ 17
+ 134
+ 85
+
+
+
+
+ 1865.6
+
+
+
+ 17
+ 134
+ 85
+
+
+
+
+ 1866.0
+
+
+
+ 17
+ 134
+ 86
+
+
+
+
+ 1866.0
+
+
+
+ 17
+ 134
+ 86
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 135
+ 85
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 134
+ 84
+
+
+
+
+ 1866.0
+
+
+
+ 17
+ 137
+ 84
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 136
+ 85
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 135
+ 86
+
+
+
+
+ 1866.6
+
+
+
+ 17
+ 138
+ 89
+
+
+
+
+ 1866.6
+
+
+
+ 17
+ 141
+ 89
+
+
+
+
+ 1866.8
+
+
+
+ 17
+ 137
+ 88
+
+
+
+
+ 1867.0
+
+
+
+ 16
+ 140
+ 89
+
+
+
+
+ 1867.0
+
+
+
+ 16
+ 139
+ 89
+
+
+
+
+ 1867.4
+
+
+
+ 16
+ 139
+ 88
+
+
+
+
+ 1867.4
+
+
+
+ 16
+ 140
+ 89
+
+
+
+
+ 1867.8
+
+
+
+ 16
+ 140
+ 88
+
+
+
+
+ 1868.0
+
+
+
+ 16
+ 137
+ 87
+
+
+
+
+ 1868.0
+
+
+
+ 16
+ 138
+ 86
+
+
+
+
+ 1868.2
+
+
+
+ 16
+ 139
+ 86
+
+
+
+
+ 1869.2
+
+
+
+ 16
+ 138
+ 85
+
+
+
+
+ 1869.6
+
+
+
+ 16
+ 138
+ 86
+
+
+
+
+ 1870.2
+
+
+
+ 16
+ 142
+ 85
+
+
+
+
+ 1870.2
+
+
+
+ 16
+ 143
+ 85
+
+
+
+
+ 1870.6
+
+
+
+ 16
+ 141
+ 85
+
+
+
+
+ 1870.6
+
+
+
+ 16
+ 142
+ 85
+
+
+
+
+ 1871.2
+
+
+
+ 16
+ 144
+ 84
+
+
+
+
+ 1871.4
+
+
+
+ 16
+ 144
+ 84
+
+
+
+
+ 1871.6
+
+
+
+ 16
+ 145
+ 82
+
+
+
+
+ 1870.2
+
+
+
+ 16
+ 144
+ 84
+
+
+
+
+ 1870.0
+
+
+
+ 16
+ 145
+ 84
+
+
+
+
+ 1869.4
+
+
+
+ 16
+ 146
+ 86
+
+
+
+
+ 1869.2
+
+
+
+ 16
+ 148
+ 82
+
+
+
+
+ 1868.2
+
+
+
+ 16
+ 150
+ 0
+
+
+
+
+ 1867.8
+
+
+
+ 16
+ 150
+ 0
+
+
+
+
+ 1867.0
+
+
+
+ 16
+ 150
+ 82
+
+
+
+
+ 1866.8
+
+
+
+ 16
+ 149
+ 82
+
+
+
+
+ 1867.0
+
+
+
+ 16
+ 149
+ 84
+
+
+
+
+ 1867.8
+
+
+
+ 16
+ 149
+ 54
+
+
+
+
+ 1868.2
+
+
+
+ 16
+ 152
+ 87
+
+
+
+
+ 1868.2
+
+
+
+ 16
+ 149
+ 86
+
+
+
+
+ 1868.2
+
+
+
+ 16
+ 148
+ 86
+
+
+
+
+ 1868.0
+
+
+
+ 16
+ 146
+ 83
+
+
+
+
+ 1867.8
+
+
+
+ 17
+ 147
+ 83
+
+
+
+
+ 1867.2
+
+
+
+ 17
+ 150
+ 82
+
+
+
+
+ 1867.2
+
+
+
+ 17
+ 149
+ 82
+
+
+
+
+ 1866.6
+
+
+
+ 17
+ 146
+ 83
+
+
+
+
+ 1866.4
+
+
+
+ 17
+ 147
+ 82
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 147
+ 84
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 145
+ 83
+
+
+
+
+ 1866.4
+
+
+
+ 17
+ 146
+ 85
+
+
+
+
+ 1865.8
+
+
+
+ 17
+ 145
+ 87
+
+
+
+
+ 1865.8
+
+
+
+ 17
+ 144
+ 0
+
+
+
+
+ 1865.6
+
+
+
+ 17
+ 146
+ 0
+
+
+
+
+ 1865.6
+
+
+
+ 17
+ 149
+ 0
+
+
+
+
+ 1866.0
+
+
+
+ 17
+ 146
+ 87
+
+
+
+
+ 1866.6
+
+
+
+ 17
+ 145
+ 84
+
+
+
+
+ 1867.0
+
+
+
+ 17
+ 146
+ 84
+
+
+
+
+ 1867.2
+
+
+
+ 17
+ 146
+ 84
+
+
+
+
+ 1867.6
+
+
+
+ 17
+ 147
+ 86
+
+
+
+
+ 1867.6
+
+
+
+ 17
+ 147
+ 85
+
+
+
+
+ 1867.6
+
+
+
+ 17
+ 146
+ 83
+
+
+
+
+ 1867.6
+
+
+
+ 17
+ 145
+ 83
+
+
+
+
+ 1867.2
+
+
+
+ 17
+ 143
+ 84
+
+
+
+
+ 1866.6
+
+
+
+ 17
+ 145
+ 82
+
+
+
+
+ 1866.2
+
+
+
+ 17
+ 147
+ 82
+
+
+
+
+ 1866.0
+
+
+
+ 17
+ 144
+ 82
+
+
+
+
+ 1865.8
+
+
+
+ 17
+ 146
+ 82
+
+
+
+
+ 1865.4
+
+
+
+ 17
+ 143
+ 83
+
+
+
+
+ 1865.4
+
+
+
+ 17
+ 144
+ 84
+
+
+
+
+ 1865.0
+
+
+
+ 17
+ 145
+ 84
+
+
+
+
+ 1864.4
+
+
+
+ 17
+ 142
+ 83
+
+
+
+
+ 1864.2
+
+
+
+ 17
+ 145
+ 83
+
+
+
+
+ 1864.0
+
+
+
+ 17
+ 145
+ 82
+
+
+
+
+ 1862.8
+
+
+
+ 17
+ 146
+ 84
+
+
+
+
+ 1861.6
+
+
+
+ 17
+ 146
+ 79
+
+
+
+
+ 1861.2
+
+
+
+ 17
+ 147
+ 82
+
+
+
+
+ 1860.8
+
+
+
+ 17
+ 145
+ 82
+
+
+
+
+ 1860.6
+
+
+
+ 17
+ 143
+ 79
+
+
+
+
+ 1860.6
+
+
+
+ 17
+ 142
+ 79
+
+
+
+
+ 1859.6
+
+
+
+ 17
+ 142
+ 88
+
+
+
+
+ 1859.4
+
+
+
+ 17
+ 142
+ 87
+
+
+
+
+ 1859.2
+
+
+
+ 17
+ 141
+ 85
+
+
+
+
+ 1859.0
+
+
+
+ 17
+ 142
+ 89
+
+
+
+
+ 1859.4
+
+
+
+ 17
+ 141
+ 87
+
+
+
+
+ 1860.2
+
+
+
+ 16
+ 142
+ 87
+
+
+
+
+ 1860.6
+
+
+
+ 16
+ 143
+ 87
+
+
+
+
+ 1861.6
+
+
+
+ 16
+ 143
+ 87
+
+
+
+
+ 1862.0
+
+
+
+ 16
+ 145
+ 87
+
+
+
+
+ 1862.8
+
+
+
+ 16
+ 143
+ 87
+
+
+
+
+ 1863.6
+
+
+
+ 16
+ 144
+ 86
+
+
+
+
+ 1863.4
+
+
+
+ 16
+ 147
+ 84
+
+
+
+
+ 1863.0
+
+
+
+ 16
+ 144
+ 82
+
+
+
+
+ 1863.0
+
+
+
+ 16
+ 145
+ 82
+
+
+
+
+ 1862.4
+
+
+
+ 16
+ 148
+ 84
+
+
+
+
+ 1862.4
+
+
+
+ 16
+ 147
+ 85
+
+
+
+
+ 1861.6
+
+
+
+ 16
+ 145
+ 85
+
+
+
+
+ 1861.4
+
+
+
+ 16
+ 145
+ 85
+
+
+
+
+ 1861.2
+
+
+
+ 16
+ 146
+ 59
+
+
+
+
+ 1860.8
+
+
+
+ 16
+ 143
+ 64
+
+
+
+
+ 1860.6
+
+
+
+ 16
+ 144
+ 64
+
+
+
+
+ 1859.4
+
+
+
+ 16
+ 142
+ 84
+
+
+
+
+ 1858.6
+
+
+
+ 16
+ 140
+ 88
+
+
+
+
+ 1858.4
+
+
+
+ 16
+ 139
+ 88
+
+
+
+
+ 1858.4
+
+
+
+ 16
+ 138
+ 87
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 140
+ 88
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 139
+ 87
+
+
+
+
+ 1859.8
+
+
+
+ 16
+ 141
+ 86
+
+
+
+
+ 1860.0
+
+
+
+ 16
+ 139
+ 86
+
+
+
+
+ 1859.8
+
+
+
+ 16
+ 139
+ 82
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 143
+ 82
+
+
+
+
+ 1859.0
+
+
+
+ 16
+ 144
+ 82
+
+
+
+
+ 1859.0
+
+
+
+ 16
+ 146
+ 87
+
+
+
+
+ 1859.2
+
+
+
+ 16
+ 146
+ 87
+
+
+
+
+ 1859.4
+
+
+
+ 16
+ 146
+ 0
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 147
+ 0
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 144
+ 52
+
+
+
+
+ 1859.8
+
+
+
+ 16
+ 143
+ 54
+
+
+
+
+ 1860.0
+
+
+
+ 16
+ 140
+ 57
+
+
+
+
+ 1860.2
+
+
+
+ 16
+ 138
+ 59
+
+
+
+
+ 1860.4
+
+
+
+ 16
+ 136
+ 60
+
+
+
+
+ 1860.4
+
+
+
+ 16
+ 133
+ 60
+
+
+
+
+ 1860.6
+
+
+
+ 16
+ 131
+ 60
+
+
+
+
+ 1860.6
+
+
+
+ 16
+ 128
+ 55
+
+
+
+
+ 1860.8
+
+
+
+ 16
+ 127
+ 54
+
+
+
+
+ 1860.4
+
+
+
+ 16
+ 124
+ 54
+
+
+
+
+ 1860.4
+
+
+
+ 16
+ 123
+ 78
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 122
+ 85
+
+
+
+
+ 1859.6
+
+
+
+ 16
+ 124
+ 84
+
+
+
+
+ 1859.4
+
+
+
+ 16
+ 121
+ 83
+
+
+
+
+ 1859.2
+
+
+
+ 16
+ 124
+ 83
+
+
+
+
+ 1859.2
+
+
+
+ 16
+ 123
+ 83
+
+
+
+
+ 1858.8
+
+
+
+ 16
+ 124
+ 83
+
+
+
+
+ 1858.6
+
+
+
+ 16
+ 124
+ 84
+
+
+
+
+ 1858.4
+
+
+
+ 16
+ 124
+ 84
+
+
+
+
+ 1858.2
+
+
+
+ 16
+ 122
+ 82
+
+
+
+
+ 1858.2
+
+
+
+ 16
+ 125
+ 82
+
+
+
+
+ 1857.6
+
+
+
+ 16
+ 126
+ 83
+
+
+
+
+ 1857.6
+
+
+
+ 16
+ 128
+ 83
+
+
+
+
+ 1857.4
+
+
+
+ 16
+ 127
+ 83
+
+
+
+
+ 1857.0
+
+
+
+ 16
+ 130
+ 83
+
+
+
+
+ 1856.8
+
+
+
+ 16
+ 130
+ 84
+
+
+
+
+ 1856.6
+
+
+
+ 16
+ 131
+ 83
+
+
+
+
+ 1856.4
+
+
+
+ 16
+ 130
+ 83
+
+
+
+
+ 1856.4
+
+
+
+ 16
+ 133
+ 82
+
+
+
+
+ 1856.2
+
+
+
+ 16
+ 134
+ 83
+
+
+
+
+ 1856.0
+
+
+
+ 16
+ 137
+ 83
+
+
+
+
+ 1855.8
+
+
+
+ 16
+ 137
+ 84
+
+
+
+
+ 1855.4
+
+
+
+ 16
+ 139
+ 83
+
+
+
+
+ 1854.8
+
+
+
+ 16
+ 141
+ 83
+
+
+
+
+ 1854.8
+
+
+
+ 16
+ 138
+ 83
+
+
+
+
+ 1854.8
+
+
+
+ 16
+ 141
+ 83
+
+
+
+
+ 1854.2
+
+
+
+ 16
+ 139
+ 62
+
+
+
+
+ 1854.2
+
+
+
+ 16
+ 139
+ 87
+
+
+
+
+ 1854.2
+
+
+
+ 16
+ 137
+ 87
+
+
+
+
+ 1854.0
+
+
+
+ 16
+ 140
+ 85
+
+
+
+
+ 1854.0
+
+
+
+ 16
+ 137
+ 84
+
+
+
+
+ 1854.0
+
+
+
+ 16
+ 140
+ 84
+
+
+
+
+ 1853.8
+
+
+
+ 16
+ 139
+ 60
+
+
+
+
+ 1853.4
+
+
+
+ 16
+ 138
+ 59
+
+
+
+
+ 1853.4
+
+
+
+ 16
+ 135
+ 59
+
+
+
+
+ 1853.2
+
+
+
+ 16
+ 134
+ 59
+
+
+
+
+ 1852.6
+
+
+
+ 16
+ 134
+ 86
+
+
+
+
+ 1852.2
+
+
+
+ 16
+ 135
+ 85
+
+
+
+
+ 1852.0
+
+
+
+ 16
+ 134
+ 86
+
+
+
+
+ 1851.8
+
+
+
+ 16
+ 134
+ 85
+
+
+
+
+ 1851.2
+
+
+
+ 16
+ 136
+ 86
+
+
+
+
+ 1851.2
+
+
+
+ 16
+ 139
+ 85
+
+
+
+
+ 1851.2
+
+
+
+ 16
+ 139
+ 84
+
+
+
+
+ 1851.2
+
+
+
+ 16
+ 141
+ 84
+
+
+
+
+ 1851.2
+
+
+
+ 16
+ 142
+ 85
+
+
+
+
+ 1851.2
+
+
+
+ 16
+ 142
+ 85
+
+
+
+
+ 1851.0
+
+
+
+ 16
+ 142
+ 84
+
+
+
+
+ 1851.0
+
+
+
+ 16
+ 142
+ 84
+
+
+
+
+ 1851.0
+
+
+
+ 16
+ 144
+ 84
+
+
+
+
+ 1851.0
+
+
+
+ 16
+ 142
+ 84
+
+
+
+
+ 1850.4
+
+
+
+ 17
+ 146
+ 84
+
+
+
+
+ 1850.0
+
+
+
+ 17
+ 144
+ 83
+
+
+
+
+ 1850.0
+
+
+
+ 17
+ 144
+ 83
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 144
+ 85
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 144
+ 85
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 145
+ 85
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 147
+ 0
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 144
+ 0
+
+
+
+
+ 1849.0
+
+
+
+ 17
+ 146
+ 87
+
+
+
+
+ 1849.2
+
+
+
+ 17
+ 144
+ 89
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 142
+ 87
+
+
+
+
+ 1849.4
+
+
+
+ 17
+ 145
+ 89
+
+
+
+
+ 1849.6
+
+
+
+ 17
+ 146
+ 91
+
+
+
+
+ 1849.6
+
+
+
+ 17
+ 147
+ 90
+
+
+
+
+ 1849.8
+
+
+
+ 17
+ 147
+ 88
+
+
+
+
+ 1850.0
+
+
+
+ 17
+ 147
+ 89
+
+
+
+
+ 1850.2
+
+
+
+ 17
+ 146
+ 85
+
+
+
+
+ 1850.8
+
+
+
+ 17
+ 147
+ 84
+
+
+
+
+ 1851.0
+
+
+
+ 17
+ 146
+ 84
+
+
+
+
+ 1851.6
+
+
+
+ 17
+ 147
+ 84
+
+
+
+
+ 1852.0
+
+
+
+ 17
+ 147
+ 85
+
+
+
+
+ 1852.2
+
+
+
+ 17
+ 148
+ 86
+
+
+
+
+ 1852.4
+
+
+
+ 17
+ 152
+ 86
+
+
+
+
+ 1852.4
+
+
+
+ 17
+ 149
+ 85
+
+
+
+
+ 1852.4
+
+
+
+ 17
+ 149
+ 85
+
+
+
+
+ 1852.4
+
+
+
+ 17
+ 146
+ 83
+
+
+
+
+ 1852.6
+
+
+
+ 17
+ 149
+ 84
+
+
+
+
+ 1852.4
+
+
+
+ 17
+ 150
+ 64
+
+
+
+
+ 1851.8
+
+
+
+ 17
+ 147
+ 63
+
+
+
+
+ 1851.4
+
+
+
+ 17
+ 145
+ 81
+
+
+
+
+ 1851.0
+
+
+
+ 17
+ 144
+ 81
+
+
+
+
+ 1850.8
+
+
+
+ 17
+ 143
+ 81
+
+
+
+
+ 1850.2
+
+
+
+ 17
+ 140
+ 81
+
+
+
+
+ 1849.8
+
+
+
+ 17
+ 139
+ 62
+
+
+
+
+ 1849.6
+
+
+
+ 17
+ 137
+ 64
+
+
+
+
+ 1849.2
+
+
+
+ 17
+ 133
+ 62
+
+
+
+
+ 1848.6
+
+
+
+ 17
+ 130
+ 59
+
+
+
+
+ 1848.0
+
+
+
+ 17
+ 127
+ 59
+
+
+
+
+ 1847.4
+
+
+
+ 18
+ 125
+ 59
+
+
+
+
+ 1846.4
+
+
+
+ 18
+ 125
+ 80
+
+
+
+
+ 1846.4
+
+
+
+ 18
+ 124
+ 80
+
+
+
+
+ 1845.6
+
+
+
+ 18
+ 121
+ 81
+
+
+
+
+ 1845.4
+
+
+
+ 18
+ 122
+ 80
+
+
+
+
+ 1844.8
+
+
+
+ 18
+ 119
+ 80
+
+
+
+
+ 1844.6
+
+
+
+ 18
+ 119
+ 80
+
+
+
+
+ 1844.4
+
+
+
+ 18
+ 120
+ 79
+
+
+
+
+ 1843.4
+
+
+
+ 18
+ 122
+ 80
+
+
+
+
+ 1843.2
+
+
+
+ 18
+ 121
+ 65
+
+
+
+
+ 1842.4
+
+
+
+ 18
+ 124
+ 63
+
+
+
+
+ 1842.0
+
+
+
+ 18
+ 125
+ 63
+
+
+
+
+ 1841.4
+
+
+
+ 18
+ 125
+ 63
+
+
+
+
+ 1841.0
+
+
+
+ 18
+ 124
+ 82
+
+
+
+
+ 1840.8
+
+
+
+ 18
+ 124
+ 82
+
+
+
+
+ 1840.6
+
+
+
+ 18
+ 123
+ 83
+
+
+
+
+ 1840.4
+
+
+
+ 18
+ 126
+ 87
+
+
+
+
+ 1840.4
+
+
+
+ 18
+ 126
+ 86
+
+
+
+
+ 1840.6
+
+
+
+ 18
+ 129
+ 62
+
+
+
+
+ 1840.6
+
+
+
+ 18
+ 129
+ 61
+
+
+
+
+ 1840.4
+
+
+
+ 18
+ 126
+ 61
+
+
+
+
+ 1840.0
+
+
+
+ 18
+ 125
+ 60
+
+
+
+
+ 1839.8
+
+
+
+ 18
+ 125
+ 60
+
+
+
+
+ 1839.4
+
+
+
+ 18
+ 122
+ 60
+
+
+
+
+ 1839.0
+
+
+
+ 18
+ 119
+ 60
+
+
+
+
+ 1839.0
+
+
+
+ 18
+ 119
+ 60
+
+
+
+
+ 1838.8
+
+
+
+ 18
+ 119
+ 60
+
+
+
+
+ 1838.2
+
+
+
+ 18
+ 117
+ 84
+
+
+
+
+ 1837.8
+
+
+
+ 18
+ 116
+ 81
+
+
+
+
+ 1837.4
+
+
+
+ 18
+ 116
+ 78
+
+
+
+
+ 1836.4
+
+
+
+ 18
+ 116
+ 63
+
+
+
+
+ 1836.0
+
+
+
+ 18
+ 115
+ 83
+
+
+
+
+ 1835.8
+
+
+
+ 18
+ 117
+ 86
+
+
+
+
+ 1835.4
+
+
+
+ 18
+ 118
+ 87
+
+
+
+
+ 1834.2
+
+
+
+ 18
+ 116
+ 87
+
+
+
+
+ 1833.0
+
+
+
+ 18
+ 116
+ 85
+
+
+
+
+ 1832.8
+
+
+
+ 18
+ 119
+ 86
+
+
+
+
+ 1832.4
+
+
+
+ 18
+ 122
+ 85
+
+
+
+
+ 1832.0
+
+
+
+ 18
+ 122
+ 86
+
+
+
+
+ 1832.0
+
+
+
+ 18
+ 124
+ 85
+
+
+
+
+ 1831.8
+
+
+
+ 18
+ 127
+ 0
+
+
+
+
+ 1831.6
+
+
+
+ 18
+ 125
+ 0
+
+
+
+
+ 1831.0
+
+
+
+ 18
+ 126
+ 86
+
+
+
+
+ 1830.4
+
+
+
+ 18
+ 126
+ 84
+
+
+
+
+ 1830.0
+
+
+
+ 18
+ 126
+ 83
+
+
+
+
+ 1828.8
+
+
+
+ 18
+ 123
+ 83
+
+
+
+
+ 1828.6
+
+
+
+ 18
+ 123
+ 83
+
+
+
+
+ 1827.8
+
+
+
+ 18
+ 125
+ 86
+
+
+
+
+ 1827.6
+
+
+
+ 18
+ 126
+ 86
+
+
+
+
+ 1827.4
+
+
+
+ 18
+ 126
+ 86
+
+
+
+
+ 1826.6
+
+
+
+ 18
+ 125
+ 84
+
+
+
+
+ 1826.4
+
+
+
+ 18
+ 126
+ 83
+
+
+
+
+ 1826.2
+
+
+
+ 18
+ 126
+ 83
+
+
+
+
+ 1826.0
+
+
+
+ 18
+ 129
+ 83
+
+
+
+
+ 1825.4
+
+
+
+ 18
+ 128
+ 80
+
+
+
+
+ 1824.2
+
+
+
+ 18
+ 130
+ 83
+
+
+
+
+ 1823.6
+
+
+
+ 18
+ 131
+ 82
+
+
+
+
+ 1823.0
+
+
+
+ 18
+ 129
+ 80
+
+
+
+
+ 1821.8
+
+
+
+ 18
+ 129
+ 64
+
+
+
+
+ 1821.2
+
+
+
+ 18
+ 132
+ 63
+
+
+
+
+ 1820.8
+
+
+
+ 18
+ 132
+ 63
+
+
+
+
+ 1819.8
+
+
+
+ 18
+ 129
+ 64
+
+
+
+
+ 1819.0
+
+
+
+ 18
+ 126
+ 64
+
+
+
+
+ 1818.6
+
+
+
+ 18
+ 127
+ 63
+
+
+
+
+ 1818.4
+
+
+
+ 18
+ 124
+ 63
+
+
+
+
+ 1818.0
+
+
+
+ 18
+ 126
+ 63
+
+
+
+
+ 1817.2
+
+
+
+ 18
+ 124
+ 80
+
+
+
+
+ 1816.0
+
+
+
+ 18
+ 125
+ 83
+
+
+
+
+ 1815.6
+
+
+
+ 18
+ 126
+ 83
+
+
+
+
+ 1815.0
+
+
+
+ 18
+ 126
+ 82
+
+
+
+
+ 1814.2
+
+
+
+ 18
+ 130
+ 83
+
+
+
+
+ 1814.0
+
+
+
+ 18
+ 129
+ 83
+
+
+
+
+ 1813.8
+
+
+
+ 18
+ 129
+ 84
+
+
+
+
+ 1813.6
+
+
+
+ 18
+ 125
+ 84
+
+
+
+
+ 1812.8
+
+
+
+ 18
+ 125
+ 83
+
+
+
+
+ 1811.6
+
+
+
+ 18
+ 124
+ 65
+
+
+
+
+ 1811.4
+
+
+
+ 18
+ 121
+ 83
+
+
+
+
+ 1811.0
+
+
+
+ 18
+ 126
+ 83
+
+
+
+
+ 1810.6
+
+
+
+ 18
+ 126
+ 79
+
+
+
+
+ 1810.2
+
+
+
+ 18
+ 128
+ 78
+
+
+
+
+ 1809.4
+
+
+
+ 18
+ 127
+ 80
+
+
+
+
+ 1808.8
+
+
+
+ 18
+ 129
+ 78
+
+
+
+
+ 1808.4
+
+
+
+ 18
+ 130
+ 78
+
+
+
+
+ 1807.6
+
+
+
+ 18
+ 130
+ 80
+
+
+
+
+ 1807.2
+
+
+
+ 18
+ 129
+ 80
+
+
+
+
+ 1806.0
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 1805.6
+
+
+
+ 18
+ 130
+ 81
+
+
+
+
+ 1804.8
+
+
+
+ 18
+ 131
+ 64
+
+
+
+
+ 1804.4
+
+
+
+ 18
+ 129
+ 64
+
+
+
+
+ 1803.8
+
+
+
+ 18
+ 127
+ 0
+
+
+
+
+ 1802.8
+
+
+
+ 18
+ 125
+ 79
+
+
+
+
+ 1801.6
+
+
+
+ 18
+ 123
+ 79
+
+
+
+
+ 1800.8
+
+
+
+ 18
+ 122
+ 78
+
+
+
+
+ 1800.6
+
+
+
+ 18
+ 124
+ 77
+
+
+
+
+ 1799.4
+
+
+
+ 18
+ 124
+ 82
+
+
+
+
+ 1799.0
+
+
+
+ 18
+ 123
+ 82
+
+
+
+
+ 1798.2
+
+
+
+ 18
+ 123
+ 83
+
+
+
+
+ 1797.6
+
+
+
+ 18
+ 126
+ 85
+
+
+
+
+ 1797.2
+
+
+
+ 18
+ 127
+ 87
+
+
+
+
+ 1797.0
+
+
+
+ 18
+ 130
+ 87
+
+
+
+
+ 1796.8
+
+
+
+ 18
+ 133
+ 87
+
+
+
+
+ 1796.6
+
+
+
+ 18
+ 136
+ 88
+
+
+
+
+ 1796.4
+
+
+
+ 18
+ 135
+ 87
+
+
+
+
+ 1796.2
+
+
+
+ 18
+ 134
+ 87
+
+
+
+
+ 1796.2
+
+
+
+ 18
+ 136
+ 0
+
+
+
+
+ 1795.8
+
+
+
+ 18
+ 137
+ 0
+
+
+
+
+ 1795.2
+
+
+
+ 18
+ 135
+ 84
+
+
+
+
+ 1794.6
+
+
+
+ 18
+ 133
+ 83
+
+
+
+
+ 1794.6
+
+
+
+ 18
+ 136
+ 83
+
+
+
+
+ 1794.2
+
+
+
+ 18
+ 141
+ 83
+
+
+
+
+ 1794.2
+
+
+
+ 18
+ 141
+ 83
+
+
+
+
+ 1793.8
+
+
+
+ 18
+ 144
+ 83
+
+
+
+
+ 1793.4
+
+
+
+ 18
+ 147
+ 83
+
+
+
+
+ 1793.4
+
+
+
+ 18
+ 145
+ 83
+
+
+
+
+ 1793.2
+
+
+
+ 18
+ 143
+ 84
+
+
+
+
+ 1792.6
+
+
+
+ 18
+ 140
+ 60
+
+
+
+
+ 1792.0
+
+
+
+ 18
+ 138
+ 58
+
+
+
+
+ 1791.4
+
+
+
+ 18
+ 135
+ 59
+
+
+
+
+ 1790.8
+
+
+
+ 18
+ 132
+ 62
+
+
+
+
+ 1790.6
+
+
+
+ 18
+ 129
+ 62
+
+
+
+
+ 1790.2
+
+
+
+ 18
+ 130
+ 60
+
+
+
+
+ 1789.8
+
+
+
+ 18
+ 128
+ 59
+
+
+
+
+ 1788.8
+
+
+
+ 18
+ 125
+ 63
+
+
+
+
+ 1788.6
+
+
+
+ 18
+ 125
+ 63
+
+
+
+
+ 1788.4
+
+
+
+ 18
+ 124
+ 62
+
+
+
+
+
+
diff --git a/ApiDemos/project/common-ui/src/main/res/values/strings.xml b/ApiDemos/project/common-ui/src/main/res/values/strings.xml
index 049f5162b..60e5c1c27 100755
--- a/ApiDemos/project/common-ui/src/main/res/values/strings.xml
+++ b/ApiDemos/project/common-ui/src/main/res/values/strings.xml
@@ -39,6 +39,8 @@
Bounds: Adelaide
Bounds: Pacific
Position: (%1$.6f, %2$.6f)\nzoom=%3$.1f, tilt=%4$.1f\u00b0, bearing=%5$.1f\u00b0
+ Lat: %1$.4f\u00b0, Lng: %2$.4f\u00b0
+ Zoom: %1$.1fx \u2022 Tilt: %2$.1f\u00b0 \u2022 Bearing: %3$.1f\u00b0
MinZoom++
MaxZoom--
Reset Zoom
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/AdvancedMarkersDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/AdvancedMarkersDemoActivity.java
index c66320770..b73e256b7 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/AdvancedMarkersDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/AdvancedMarkersDemoActivity.java
@@ -13,6 +13,10 @@
// limitations under the License.
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
@@ -45,6 +49,18 @@
* The following sample showcases how to create Advanced Markers, and use all their customization
* possibilities.
*/
+@Sample(
+ id = "advanced_markers",
+ title = "Advanced Markers & Pins",
+ description = "Modern PinConfig pins, custom glyphs, badge icon views, and collision behavior.",
+ category = "Markers & Overlays",
+ complexity = Complexity.ADVANCED,
+ tags = {"#markers", "#advancedmarkers", "#pinconfig", "#collision", "#badges", "#mapid"},
+ purpose = "Demonstrates Cloud-backed Advanced Markers with custom colors, pin glyphs, collision behaviors, and custom View icons.",
+ successCriteria = "Custom colored pins and badge icon views render sharply at correct anchor points with collision handling.",
+ failureIndicators = "Pins render as default red markers (missing Map ID), collision behavior ignored, or badge text blurry.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_marker_advanced]
public class AdvancedMarkersDemoActivity extends SamplesBaseActivity implements OnMapReadyCallback {
@@ -152,13 +168,17 @@ public void onMapReady(GoogleMap map) {
pinConfigBuilder.setBackgroundColor(Color.MAGENTA);
PinConfig pinConfig = pinConfigBuilder.build();
- // Use the PinConfig instance to set the icon for AdvancedMarkerOptions.
+ // Use the PinConfig instance to set the icon for AdvancedMarkerOptions.
AdvancedMarkerOptions advancedMarkerOptions = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig))
- .position(KUALA_LUMPUR);
+ .position(KUALA_LUMPUR)
+ .title("Kuala Lumpur (Magenta Pin)");
// Pass the AdvancedMarkerOptions instance to addMarker().
Marker marker = map.addMarker(advancedMarkerOptions);
+ if (marker != null) {
+ marker.showInfoWindow();
+ }
// This sample changes the border color of the advanced marker
PinConfig.Builder pinConfigBuilder2 = PinConfig.builder();
@@ -167,7 +187,8 @@ public void onMapReady(GoogleMap map) {
AdvancedMarkerOptions advancedMarkerOptions2 = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig2))
- .position(JAKARTA);
+ .position(JAKARTA)
+ .title("Jakarta (Blue Border)");
Marker marker2 = map.addMarker(advancedMarkerOptions2);
@@ -182,7 +203,8 @@ public void onMapReady(GoogleMap map) {
AdvancedMarkerOptions advancedMarkerOptions3 = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig3))
- .position(BANGKOK);
+ .position(BANGKOK)
+ .title("Bangkok (Text Glyph 'A')");
Marker marker3 = map.addMarker(advancedMarkerOptions3);
@@ -194,7 +216,8 @@ public void onMapReady(GoogleMap map) {
AdvancedMarkerOptions advancedMarkerOptions4 = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig4))
- .position(MANILA);
+ .position(MANILA)
+ .title("Manila (Transparent Cutout Glyph)");
Marker marker4 = map.addMarker(advancedMarkerOptions4);
@@ -203,7 +226,8 @@ public void onMapReady(GoogleMap map) {
int collisionBehavior = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL;
AdvancedMarkerOptions advancedMarkerOptions5 = new AdvancedMarkerOptions()
.position(HO_CHI_MINH_CITY)
- .collisionBehavior(collisionBehavior);
+ .collisionBehavior(collisionBehavior)
+ .title("Ho Chi Minh City (Collision Behavior)");
Marker marker5 = map.addMarker(advancedMarkerOptions5);
}
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/BasicMapDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/BasicMapDemoActivity.java
index fec64ca23..a737b01d9 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/BasicMapDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/BasicMapDemoActivity.java
@@ -14,6 +14,11 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
+import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
@@ -27,9 +32,29 @@
/**
* This shows how to create a simple activity with a map and a marker on the map.
*/
+@Sample(
+ id = "basic_map",
+ title = "Basic Map",
+ description = "Fundamental map instantiation, lifecycle binding, and default camera centering.",
+ category = "Map Initialization",
+ complexity = Complexity.SNIPPET,
+ tags = {"#map", "#init", "#lifecycle", "#quickstart"},
+ apiCalls = {
+ "SupportMapFragment.getMapAsync(OnMapReadyCallback)",
+ "GoogleMap.addMarker(MarkerOptions)",
+ "GoogleMap.moveCamera(CameraUpdate)"
+ },
+ purpose = "Demonstrates clean, minimal map instantiation using SupportMapFragment.",
+ successCriteria = "The map loads default vector tiles cleanly centered at the initial coordinates with working gestures.",
+ failureIndicators = "Grey tiles (missing API key or auth mismatch), crash on back navigation, or map failing to unpause.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_basic_map]
public class BasicMapDemoActivity extends SamplesBaseActivity implements OnMapReadyCallback {
+ private static final LatLng SYDNEY = new LatLng(-33.862, 151.21);
+ private static final float ZOOM_LEVEL = 13.0f;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -43,12 +68,12 @@ protected void onCreate(Bundle savedInstanceState) {
/**
* This is where we can add markers or lines, add listeners or move the camera. In this case,
- * we
- * just add a marker near Africa.
+ * we move the camera to Sydney and add a marker at Sydney.
*/
@Override
public void onMapReady(GoogleMap map) {
- map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
+ map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, ZOOM_LEVEL));
+ map.addMarker(new MarkerOptions().position(SYDNEY).title("Sydney"));
}
}
// [END maps_android_sample_basic_map]
\ No newline at end of file
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraClampingDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraClampingDemoActivity.java
index 44f13aff5..51dbfe7e5 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraClampingDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraClampingDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnCameraIdleListener;
@@ -30,6 +34,18 @@
/**
* This shows how to constrain the camera to specific boundaries and zoom levels.
*/
+@Sample(
+ id = "camera_clamping",
+ title = "Camera Clamping & Bounds",
+ description = "Constraining camera viewport to LatLngBounds and dynamic min/max zoom limits.",
+ category = "Camera Controls",
+ complexity = Complexity.SIMPLE,
+ tags = {"#camera", "#clamping", "#bounds", "#zoomlimits", "#latlngbounds"},
+ purpose = "Demonstrates restricting camera panning to a specific bounding box (Adelaide/Pacific) and zoom slider limits.",
+ successCriteria = "User cannot pan the camera outside the clamped region; zoom sliders enforce min/max bounds immediately.",
+ failureIndicators = "Camera pans outside bounding box or resetting bounds fails when selecting 'Reset Bounds'.",
+ framework = Framework.JAVA_VIEWS
+)
public class CameraClampingDemoActivity extends SamplesBaseActivity
implements OnMapReadyCallback, OnCameraIdleListener, GoogleMap.OnCameraMoveListener {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraDemoActivity.java
index 3695ad94a..e4d685522 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CameraDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
@@ -37,12 +41,31 @@
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.MarkerOptions;
import com.example.common_ui.databinding.CameraDemoBinding;
import com.google.android.gms.maps.model.PolylineOptions;
/**
* This shows how to change the camera position for the map.
*/
+@Sample(
+ id = "camera_demo",
+ title = "Camera Controls & Animation",
+ description = "Programmatic camera panning, zooming, tilt, bearing, and smooth animations.",
+ category = "Camera Controls",
+ complexity = Complexity.SIMPLE,
+ tags = {"#camera", "#animation", "#bearing", "#tilt", "#zoom", "#pan"},
+ apiCalls = {
+ "GoogleMap.animateCamera(CameraUpdate)",
+ "GoogleMap.moveCamera(CameraUpdate)",
+ "GoogleMap.addMarker(MarkerOptions)",
+ "CameraUpdateFactory.newCameraPosition(CameraPosition)"
+ },
+ purpose = "Demonstrates programmatic camera movements, animated transitions, tilt angles, and bearing rotations.",
+ successCriteria = "Buttons animate camera smoothly with custom durations, stops, and rotation angles.",
+ failureIndicators = "Jerky animations, unexpected camera jumps, or tilt angle exceeding platform constraints.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_camera_events]
public class CameraDemoActivity extends SamplesBaseActivity implements
OnCameraMoveStartedListener,
@@ -140,7 +163,11 @@ public void onMapReady(GoogleMap googleMap) {
// [END_EXCLUDE]
// Show Sydney
- map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-33.87365, 151.20689), 10));
+ LatLng sydneyLatLng = new LatLng(-33.87365, 151.20689);
+ LatLng bondiLatLng = new LatLng(-33.891614, 151.276417);
+ map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydneyLatLng, 10));
+ map.addMarker(new MarkerOptions().position(sydneyLatLng).title("Sydney"));
+ map.addMarker(new MarkerOptions().position(bondiLatLng).title("Bondi Beach"));
}
public GoogleMap getMap() {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CircleDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CircleDemoActivity.java
index 95494f3ce..eba9623b8 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CircleDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CircleDemoActivity.java
@@ -14,6 +14,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.graphics.Color;
import android.graphics.Point;
import android.location.Location;
@@ -56,6 +60,18 @@
/**
* This shows how to draw circles on a map.
*/
+@Sample(
+ id = "circles",
+ title = "Circles & Geodesic Radii",
+ description = "Drawing geographic circles with dynamic center drag, radius sliders, and stroke styling.",
+ category = "Shapes & Geometry",
+ complexity = Complexity.SIMPLE,
+ tags = {"#shapes", "#circles", "#radius", "#geodesic"},
+ purpose = "Demonstrates drawing circles with radius defined in meters and dynamic updates via seekbars.",
+ successCriteria = "Adjusting radius slider dynamically updates circle boundary in real-time.",
+ failureIndicators = "Circle distorted or radius math inaccurate across high latitudes.",
+ framework = Framework.JAVA_VIEWS
+)
public class CircleDemoActivity extends SamplesBaseActivity
implements OnSeekBarChangeListener, OnMarkerDragListener, OnMapLongClickListener,
OnItemSelectedListener, OnMapReadyCallback, MapProvider {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CloudBasedMapStylingDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CloudBasedMapStylingDemoActivity.java
index 93f21802f..4540b417e 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CloudBasedMapStylingDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/CloudBasedMapStylingDemoActivity.java
@@ -16,9 +16,12 @@
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
+import com.example.common_ui.R;
+import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.LatLng;
/**
* This shows how to use Cloud-based Map Styling in a simple Activity. For more information on how
@@ -40,29 +43,31 @@ protected void onCreate(Bundle savedInstanceState) {
// The underlying style the map will use has been set in the layout
// `cloud_styling_basic_demo` under the SupportMapFragment's `map:mapId` attribute.
- setContentView(com.example.common_ui.R.layout.cloud_styling_basic_demo);
+ setContentView(R.layout.cloud_styling_basic_demo);
SupportMapFragment mapFragment =
- (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);
+ (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
setUpButtonListeners();
- applyInsets(findViewById(com.example.common_ui.R.id.map_container));
+ applyInsets(findViewById(R.id.map_container));
}
@Override
public void onMapReady(GoogleMap map) {
this.map = map;
map.setMapType(currentMapType);
+ LatLng montBlanc = new LatLng(45.8326, 6.8652);
+ map.moveCamera(CameraUpdateFactory.newLatLngZoom(montBlanc, 11.5f));
}
private void setUpButtonListeners() {
- findViewById(com.example.common_ui.R.id.styling_normal_mode).setOnClickListener(
+ findViewById(R.id.styling_normal_mode).setOnClickListener(
v -> setMapType(GoogleMap.MAP_TYPE_NORMAL));
- findViewById(com.example.common_ui.R.id.styling_satellite_mode).setOnClickListener(
+ findViewById(R.id.styling_satellite_mode).setOnClickListener(
v -> setMapType(GoogleMap.MAP_TYPE_SATELLITE));
- findViewById(com.example.common_ui.R.id.styling_hybrid_mode).setOnClickListener(
+ findViewById(R.id.styling_hybrid_mode).setOnClickListener(
v -> setMapType(GoogleMap.MAP_TYPE_HYBRID));
- findViewById(com.example.common_ui.R.id.styling_terrain_mode).setOnClickListener(
+ findViewById(R.id.styling_terrain_mode).setOnClickListener(
v -> setMapType(GoogleMap.MAP_TYPE_TERRAIN));
}
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenBoundariesActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenBoundariesActivity.java
index 84cad55ff..bc15fd557 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenBoundariesActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenBoundariesActivity.java
@@ -13,6 +13,10 @@
// limitations under the License.
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import static java.lang.Math.round;
import android.graphics.Color;
@@ -57,6 +61,18 @@
* on how the Data-driven styling for boundaries work, check out the following link:
* https://developers.google.com/maps/documentation/android-sdk/dds-boundaries/overview
*/
+@Sample(
+ id = "data_driven_boundaries",
+ title = "Data-Driven Boundaries",
+ description = "Dynamic styling and click handlers for administrative boundaries (Localities, States, Countries).",
+ category = "Data-Driven Styling",
+ complexity = Complexity.ADVANCED,
+ tags = {"#boundaries", "#datadriven", "#featurelayer", "#locality", "#choropleth"},
+ purpose = "Demonstrates styling administrative boundaries dynamically via FeatureLayer and capturing boundary clicks.",
+ successCriteria = "Boundaries render with custom stroke and fill colors; tapping a region highlights its polygon.",
+ failureIndicators = "Boundary layer is null (requires vector map / Map ID) or click listener not firing.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_data_driven_styling_boundaries]
public class DataDrivenBoundariesActivity extends SamplesBaseActivity implements OnMapReadyCallback,
FeatureLayer.OnFeatureClickListener, PopupMenu.OnMenuItemClickListener {
@@ -119,8 +135,16 @@ protected void onCreate(Bundle savedInstanceState) {
mapFragment.getMapAsync(this);
- findViewById(R.id.button_hawaii).setOnClickListener(view -> centerMapOnLocation(HANA_HAWAII, 11f));
- findViewById(R.id.button_us).setOnClickListener(view -> centerMapOnLocation(CENTER_US, 1f));
+ findViewById(R.id.button_hawaii).setOnClickListener(view -> {
+ localityEnabled = true;
+ updateStyles();
+ centerMapOnLocation(HANA_HAWAII, 11f);
+ });
+ findViewById(R.id.button_us).setOnClickListener(view -> {
+ adminAreaEnabled = true;
+ updateStyles();
+ centerMapOnLocation(CENTER_US, 3.8f);
+ });
applyInsets(findViewById(R.id.map_container));
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenDatasetStylingActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenDatasetStylingActivity.java
index e829d35be..991f8022a 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenDatasetStylingActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/DataDrivenDatasetStylingActivity.java
@@ -13,6 +13,10 @@
// limitations under the License.
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
@@ -54,6 +58,18 @@
*
* This is meant to work with the datasets in the res/raw directory.
*/
+@Sample(
+ id = "data_driven_datasets",
+ title = "Data-Driven Dataset Styling",
+ description = "Styling custom geospatial datasets uploaded to Google Cloud Platform based on attributes.",
+ category = "Data-Driven Styling",
+ complexity = Complexity.ADVANCED,
+ tags = {"#datasets", "#datadriven", "#clouddata", "#attributes", "#filtering"},
+ purpose = "Demonstrates loading a Cloud Dataset FeatureLayer and applying dynamic style rules based on feature properties.",
+ successCriteria = "Dataset points and polygons display distinct styling according to attribute values.",
+ failureIndicators = "Dataset ID invalid or attributes fail to filter correctly.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_data_driven_styling_datasets]
public class DataDrivenDatasetStylingActivity extends SamplesBaseActivity implements OnMapReadyCallback, FeatureLayer.OnFeatureClickListener {
private record DataSet(
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/EventsDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/EventsDemoActivity.java
index 5114f7d36..2b25790ec 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/EventsDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/EventsDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnCameraIdleListener;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
@@ -32,6 +36,18 @@
/**
* This shows how to listen to some {@link GoogleMap} events.
*/
+@Sample(
+ id = "events_demo",
+ title = "Events & Gestures",
+ description = "Handling map taps, long clicks, camera change events, and POI selections.",
+ category = "Events & Gestures",
+ complexity = Complexity.SNIPPET,
+ tags = {"#events", "#gestures", "#clicks", "#poi", "#listeners"},
+ purpose = "Demonstrates registering listeners for map clicks, long presses, camera moves, and POI selections.",
+ successCriteria = "Event log text updates with coordinates and POI names upon user interaction.",
+ failureIndicators = "Click events swallowed or POI name unresolved.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_events]
public class EventsDemoActivity extends SamplesBaseActivity
implements OnMapClickListener, OnMapLongClickListener, OnCameraIdleListener,
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/GroundOverlayDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/GroundOverlayDemoActivity.java
index a1cb5af9f..4958a6840 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/GroundOverlayDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/GroundOverlayDemoActivity.java
@@ -14,6 +14,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
@@ -42,6 +46,18 @@
* oriented against the Earth's surface rather than the screen. Rotating, tilting, or zooming the
* map changes the orientation of the camera, but not the overlay.
*/
+@Sample(
+ id = "ground_overlay",
+ title = "Ground Overlays",
+ description = "Anchoring raster bitmap images to geographic LatLngBounds on the map surface.",
+ category = "Overlays & Tiles",
+ complexity = Complexity.SIMPLE,
+ tags = {"#overlays", "#groundoverlay", "#images", "#bounds", "#transparency"},
+ purpose = "Demonstrates overlaying historical or custom aerial images onto the map with transparency sliders.",
+ successCriteria = "Historical Newark map image appears pinned to geographic coordinates with adjustable transparency.",
+ failureIndicators = "Overlay image stretched/misaligned or opacity slider unresponsive.",
+ framework = Framework.JAVA_VIEWS
+)
public class GroundOverlayDemoActivity extends SamplesBaseActivity
implements OnSeekBarChangeListener, OnMapReadyCallback,
GoogleMap.OnGroundOverlayClickListener, MapProvider {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteDemoActivity.java
index 139b11d33..245309274 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
@@ -38,6 +42,25 @@
* launch the Google Maps Mobile application, {@link com.google.android.gms.maps.CameraUpdate}s
* and {@link com.google.android.gms.maps.model.Polygon}s.
*/
+@Sample(
+ id = "com.example.mapdemo.LiteDemoActivity",
+ title = "Lite Mode Basics",
+ description = "Non-interactive raster map with programmatic camera jumps, markers, and polygons.",
+ category = "Lists & Performance",
+ complexity = Complexity.SIMPLE,
+ tags = {"#litemode", "#static", "#raster", "#markers", "#polygons"},
+ apiCalls = {
+ "GoogleMapOptions.liteMode(true)",
+ "GoogleMap.moveCamera(CameraUpdate)",
+ "GoogleMap.addMarker(MarkerOptions)",
+ "GoogleMap.addPolygon(PolygonOptions)"
+ },
+ purpose = "Demonstrates Lite Mode features: static raster rendering, markers launching Google Maps intent, and programmatic camera jumps.",
+ successCriteria = "Map renders lightweight static raster view; Darwin/Adelaide buttons immediately reposition camera.",
+ failureIndicators = "Full vector GL map loaded instead of lite mode, or buttons fail to move camera.",
+ framework = Framework.JAVA_VIEWS
+)
+// [START maps_android_sample_lite]
public class LiteDemoActivity extends SamplesBaseActivity implements
OnMapAndViewReadyListener.OnGlobalLayoutAndMapReadyListener {
@@ -73,7 +96,7 @@ protected void onCreate(Bundle savedInstanceState) {
// Get the map and register for the ready callback
SupportMapFragment mapFragment =
- (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);
+ (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
new OnMapAndViewReadyListener(mapFragment, this);
applyInsets(binding.mapContainer);
@@ -190,3 +213,4 @@ private void addMarkers() {
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));
}
}
+// [END maps_android_sample_lite]
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteListDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteListDemoActivity.java
index 3dc14db1a..bdd9d3625 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteListDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LiteListDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
@@ -41,6 +45,18 @@
* Note the use of the view holder pattern with the
* {@link com.google.android.gms.maps.OnMapReadyCallback}.
*/
+@Sample(
+ id = "lite_list",
+ title = "Lite Mode in RecyclerView",
+ description = "High-performance Lite Mode map instances inside smooth scrolling RecyclerView list rows.",
+ category = "Lists & Performance",
+ complexity = Complexity.ADVANCED,
+ tags = {"#litemode", "#recyclerview", "#lists", "#viewholder", "#lifecycle"},
+ purpose = "Demonstrates embedding MapView lite mode instances inside RecyclerView rows with proper lifecycle management.",
+ successCriteria = "List scrolls at 60/120fps without stutter; map snapshots display accurate markers per row.",
+ failureIndicators = "RecyclerView scrolling stutters or recycled MapViews display stale map markers.",
+ framework = Framework.JAVA_VIEWS
+)
public class LiteListDemoActivity extends SamplesBaseActivity {
private RecyclerView mRecyclerView;
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LocationSourceDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LocationSourceDemoActivity.java
index e3c6e4825..812805a2b 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LocationSourceDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/LocationSourceDemoActivity.java
@@ -12,121 +12,352 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-
package com.example.mapdemo;
-import android.Manifest.permission;
-import android.annotation.SuppressLint;
+import android.Manifest;
import android.content.pm.PackageManager;
+import android.location.Location;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.SystemClock;
+import android.util.Xml;
+import android.view.View;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
+import com.example.common_ui.R;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+import com.example.common_ui.catalog.Sample;
+import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
-import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.LocationSource;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.JointType;
import com.google.android.gms.maps.model.LatLng;
-
-import android.location.Location;
-import android.os.Bundle;
-
-import androidx.appcompat.app.AppCompatActivity;
+import com.google.android.gms.maps.model.LatLngBounds;
+import com.google.android.gms.maps.model.PolylineOptions;
+import com.google.android.gms.maps.model.RoundCap;
+import com.google.android.material.button.MaterialButton;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executors;
+import org.xmlpull.v1.XmlPullParser;
/**
- * This shows how to use a custom location source.
+ * Demonstrates feeding programmatic coordinates from a GPX track into the GoogleMap location layer
+ * using a custom {@link LocationSource}.
*/
+@Sample(
+ id = "com.example.mapdemo.LocationSourceDemoActivity",
+ title = "Custom LocationSource",
+ description = "Providing a custom mock LocationSource for simulated GPS navigation playback along a trail.",
+ category = "Location & Sensors",
+ complexity = Complexity.ADVANCED,
+ tags = {"#location", "#locationsource", "#mock", "#simulation", "#gpx", "#navigation"},
+ apiCalls = {
+ "GoogleMap.setLocationSource(LocationSource)",
+ "LocationSource.activate(OnLocationChangedListener)",
+ "LocationSource.deactivate()",
+ "GoogleMap.setMyLocationEnabled(Boolean)",
+ "GoogleMap.addPolyline(PolylineOptions)",
+ "CameraUpdateFactory.newLatLngBounds(LatLngBounds, Int)"
+ },
+ purpose = "Shows how to feed programmatic coordinates from a GPX track into the GoogleMap location layer using a custom LocationSource.",
+ successCriteria = "The map bounds to the trail, draws a polyline, and the blue dot animates smoothly along the route.",
+ failureIndicators = "Blue dot fails to move or location updates cause memory leaks.",
+ framework = Framework.JAVA_VIEWS
+)
+// [START maps_android_sample_location_source]
public class LocationSourceDemoActivity extends SamplesBaseActivity implements OnMapReadyCallback {
- /**
- * A {@link LocationSource} which reports a new location whenever a user long presses the map
- * at
- * the point at which a user long pressed the map.
- */
- private static class LongPressLocationSource implements LocationSource, OnMapLongClickListener {
-
- private OnLocationChangedListener mListener;
-
- /**
- * Flag to keep track of the activity's lifecycle. This is not strictly necessary in this
- * case because onMapLongPress events don't occur while the activity containing the map is
- * paused but is included to demonstrate best practices (e.g., if a background service were
- * to be used).
- */
- private boolean mPaused;
+ private GoogleMap mMap;
+ private GpxLocationSource mLocationSource;
+ private LatLngBounds mTrackBounds;
- @Override
- public void activate(OnLocationChangedListener listener) {
- mListener = listener;
- }
-
- @Override
- public void deactivate() {
- mListener = null;
- }
-
- @Override
- public void onMapLongClick(LatLng point) {
- if (mListener != null && !mPaused) {
- Location location = new Location("LongPressLocationProvider");
- location.setLatitude(point.latitude);
- location.setLongitude(point.longitude);
- location.setAccuracy(100);
- mListener.onLocationChanged(location);
+ private final ActivityResultLauncher mPermissionLauncher =
+ registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), isGranted -> {
+ if (Boolean.TRUE.equals(isGranted.get(Manifest.permission.ACCESS_FINE_LOCATION))
+ || Boolean.TRUE.equals(isGranted.get(Manifest.permission.ACCESS_COARSE_LOCATION))) {
+ enableMyLocation();
}
- }
-
- public void onPause() {
- mPaused = true;
- }
-
- public void onResume() {
- mPaused = false;
- }
- }
-
- private LongPressLocationSource mLocationSource;
+ });
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(com.example.common_ui.R.layout.basic_demo);
+ setContentView(R.layout.location_source_demo);
- androidx.appcompat.widget.Toolbar toolbar = findViewById(com.example.common_ui.R.id.top_bar);
+ Toolbar toolbar = findViewById(R.id.top_bar);
if (toolbar != null) {
- toolbar.setTitle(com.example.common_ui.R.string.location_source_demo_label);
+ toolbar.setTitle(R.string.location_source_demo_label);
}
- mLocationSource = new LongPressLocationSource();
+ mLocationSource = new GpxLocationSource(new ArrayList<>(), 60L);
+ Executors.newSingleThreadExecutor().execute(() -> {
+ List trackPoints = parseGpxTrack(getResources().openRawResource(R.raw.fowler_rattlesnake));
+ runOnUiThread(() -> {
+ mLocationSource.setTrackPoints(trackPoints);
+ if (mMap != null) {
+ setupTrackOnMap(mMap);
+ }
+ });
+ });
+
+ MaterialButton toggleButton = findViewById(R.id.btn_toggle_playback);
+ if (toggleButton != null) {
+ toggleButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean isPlaying = mLocationSource.togglePlayback();
+ toggleButton.setText(isPlaying ? R.string.location_source_pause : R.string.location_source_play);
+ }
+ });
+ }
SupportMapFragment mapFragment =
- (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);
- mapFragment.getMapAsync(this);
- applyInsets(findViewById(com.example.common_ui.R.id.map_container));
+ (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
+ if (mapFragment != null) {
+ mapFragment.getMapAsync(this);
+ }
+
+ applyInsets(findViewById(R.id.map_container));
}
@Override
protected void onResume() {
super.onResume();
- mLocationSource.onResume();
+ if (mLocationSource != null) {
+ mLocationSource.onResume();
+ }
}
@Override
protected void onPause() {
super.onPause();
- mLocationSource.onPause();
+ if (mLocationSource != null) {
+ mLocationSource.onPause();
+ }
}
- @SuppressLint("MissingPermission")
@Override
public void onMapReady(GoogleMap map) {
+ mMap = map;
map.setLocationSource(mLocationSource);
- map.setOnMapLongClickListener(mLocationSource);
+ enableMyLocation();
+ if (!mLocationSource.getTrackPoints().isEmpty()) {
+ setupTrackOnMap(map);
+ }
+ }
- if (ActivityCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(this, permission.ACCESS_COARSE_LOCATION)
- != PackageManager.PERMISSION_GRANTED) {
+ private void setupTrackOnMap(GoogleMap map) {
+ if (mTrackBounds != null) {
return;
}
- map.setMyLocationEnabled(true);
+ List trackPoints = mLocationSource.getTrackPoints();
+ if (trackPoints.isEmpty()) {
+ return;
+ }
+
+ LatLngBounds.Builder boundsBuilder = LatLngBounds.builder();
+ for (LatLng point : trackPoints) {
+ boundsBuilder.include(point);
+ }
+ mTrackBounds = boundsBuilder.build();
+
+ // 1. Draw route polyline with outer casing and core color
+ map.addPolyline(
+ new PolylineOptions()
+ .addAll(trackPoints)
+ .color(0xFF0D47A1)
+ .width(16f)
+ .jointType(JointType.ROUND)
+ .startCap(new RoundCap())
+ .endCap(new RoundCap())
+ );
+ map.addPolyline(
+ new PolylineOptions()
+ .addAll(trackPoints)
+ .color(0xFF2196F3)
+ .width(10f)
+ .jointType(JointType.ROUND)
+ .startCap(new RoundCap())
+ .endCap(new RoundCap())
+ );
+
+ // 2. Center and bound camera
+ int padding = (int) (getResources().getDisplayMetrics().density * 56);
+ map.moveCamera(CameraUpdateFactory.newLatLngZoom(mTrackBounds.getCenter(), 14.5f));
+ map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
+ @Override
+ public void onMapLoaded() {
+ map.animateCamera(CameraUpdateFactory.newLatLngBounds(mTrackBounds, padding));
+ }
+ });
+
+ MaterialButton recenterButton = findViewById(R.id.btn_recenter_bounds);
+ if (recenterButton != null) {
+ recenterButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mTrackBounds != null) {
+ map.animateCamera(CameraUpdateFactory.newLatLngBounds(mTrackBounds, padding));
+ }
+ }
+ });
+ }
+ }
+
+ private void enableMyLocation() {
+ if (mMap == null) {
+ return;
+ }
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
+ == PackageManager.PERMISSION_GRANTED
+ || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
+ == PackageManager.PERMISSION_GRANTED) {
+ mMap.setMyLocationEnabled(true);
+ } else {
+ mPermissionLauncher.launch(new String[]{
+ Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.ACCESS_COARSE_LOCATION
+ });
+ }
+ }
+
+ private List parseGpxTrack(InputStream inputStream) {
+ List points = new ArrayList<>();
+ try (InputStream stream = inputStream) {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(stream, "UTF-8");
+ int eventType = parser.getEventType();
+ while (eventType != XmlPullParser.END_DOCUMENT) {
+ if (eventType == XmlPullParser.START_TAG && "trkpt".equals(parser.getName())) {
+ String latStr = parser.getAttributeValue(null, "lat");
+ String lonStr = parser.getAttributeValue(null, "lon");
+ if (latStr != null && lonStr != null) {
+ try {
+ double lat = Double.parseDouble(latStr);
+ double lon = Double.parseDouble(lonStr);
+ points.add(new LatLng(lat, lon));
+ } catch (NumberFormatException ignored) {
+ }
+ }
+ }
+ eventType = parser.next();
+ }
+ } catch (Exception ignored) {
+ }
+ return points;
+ }
+
+ private static class GpxLocationSource implements LocationSource {
+ private List trackPoints;
+ private final long intervalMs;
+ private OnLocationChangedListener listener;
+ private boolean isRunning = true;
+ private int currentIndex;
+ private final Handler handler = new Handler(Looper.getMainLooper());
+
+ private final Runnable stepRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (!isRunning || listener == null || trackPoints.isEmpty()) {
+ return;
+ }
+ emitCurrentPoint();
+ currentIndex = (currentIndex + 1) % trackPoints.size();
+ handler.removeCallbacks(this);
+ handler.postDelayed(this, intervalMs);
+ }
+ };
+
+ public GpxLocationSource(List trackPoints, long intervalMs) {
+ this.trackPoints = trackPoints;
+ this.intervalMs = intervalMs;
+ }
+
+ public void setTrackPoints(List trackPoints) {
+ this.trackPoints = trackPoints;
+ this.currentIndex = 0;
+ if (isRunning && listener != null && !trackPoints.isEmpty()) {
+ handler.removeCallbacks(stepRunnable);
+ handler.post(stepRunnable);
+ }
+ }
+
+ public List getTrackPoints() {
+ return trackPoints;
+ }
+
+ @Override
+ public void activate(OnLocationChangedListener listener) {
+ this.listener = listener;
+ if (isRunning) {
+ emitCurrentPoint();
+ handler.postDelayed(stepRunnable, intervalMs);
+ }
+ }
+
+ @Override
+ public void deactivate() {
+ handler.removeCallbacks(stepRunnable);
+ this.listener = null;
+ }
+
+ public boolean togglePlayback() {
+ isRunning = !isRunning;
+ if (isRunning) {
+ handler.post(stepRunnable);
+ } else {
+ handler.removeCallbacks(stepRunnable);
+ }
+ return isRunning;
+ }
+
+ private void emitCurrentPoint() {
+ if (listener == null || trackPoints.isEmpty()) {
+ return;
+ }
+ LatLng p1 = trackPoints.get(currentIndex);
+ LatLng p2 = trackPoints.get((currentIndex + 1) % trackPoints.size());
+
+ Location loc1 = new Location("GpxTrackLocationSource");
+ loc1.setLatitude(p1.latitude);
+ loc1.setLongitude(p1.longitude);
+
+ Location loc2 = new Location("GpxTrackLocationSource");
+ loc2.setLatitude(p2.latitude);
+ loc2.setLongitude(p2.longitude);
+
+ float bearing = loc1.bearingTo(loc2);
+
+ Location location = new Location("GpxTrackLocationSource");
+ location.setLatitude(p1.latitude);
+ location.setLongitude(p1.longitude);
+ location.setAccuracy(6.0f);
+ location.setBearing(bearing);
+ location.setSpeed(4.5f);
+ location.setTime(System.currentTimeMillis());
+ location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
+
+ listener.onLocationChanged(location);
+ }
+
+ public void onPause() {
+ handler.removeCallbacks(stepRunnable);
+ }
+
+ public void onResume() {
+ if (isRunning && listener != null) {
+ handler.post(stepRunnable);
+ }
+ }
}
}
+// [END maps_android_sample_location_source]
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MarkerDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MarkerDemoActivity.java
index 5ce1ba105..522d8eef2 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MarkerDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MarkerDemoActivity.java
@@ -14,6 +14,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
@@ -40,6 +44,7 @@
import android.os.SystemClock;
import com.example.common_ui.R;
+import com.example.common_ui.databinding.MarkerDemoBinding;
import androidx.annotation.ColorInt;
import androidx.annotation.DrawableRes;
@@ -66,6 +71,18 @@
/**
* This shows how to place markers on a map.
*/
+@Sample(
+ id = "marker_demo",
+ title = "Standard Markers & Info Windows",
+ description = "Placing markers, custom icons, draggable pins (long press Melbourne to drag), and custom info window layouts.",
+ category = "Markers & Overlays",
+ complexity = Complexity.SIMPLE,
+ tags = {"#markers", "#infowindow", "#draggable", "#icons", "#anchor"},
+ purpose = "Demonstrates adding standard markers with alpha, rotation, draggable pins (long press Melbourne to drag), and custom InfoWindowAdapter views.",
+ successCriteria = "Tapping markers displays custom info windows with formatted content; dragging pins updates position.",
+ failureIndicators = "Info window clicks not detected or custom snippet styling not applied.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_marker]
public class MarkerDemoActivity extends SamplesBaseActivity implements
OnMarkerClickListener,
@@ -90,7 +107,7 @@ public class MarkerDemoActivity extends SamplesBaseActivity implements
private static final LatLng ALICE_SPRINGS = new LatLng(-24.6980, 133.8807);
- private com.example.common_ui.databinding.MarkerDemoBinding binding;
+ private MarkerDemoBinding binding;
/** Demonstrates customizing the info window and/or its contents. */
class CustomInfoWindowAdapter implements InfoWindowAdapter {
@@ -208,7 +225,7 @@ private void render(Marker marker, View view) {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- binding = com.example.common_ui.databinding.MarkerDemoBinding.inflate(getLayoutInflater());
+ binding = MarkerDemoBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.rotationSeekBar.setMax(360);
@@ -291,7 +308,8 @@ private void addMarkersToMap() {
mMelbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
- .snippet("Population: 4,137,400")
+ .snippet(getString(R.string.melbourne_drag_snippet))
+ .icon(vectorToBitmap(R.drawable.ic_drag_pan, Color.parseColor("#E65100")))
.draggable(true));
// Place four markers on top of each other with differing z-indexes.
@@ -333,6 +351,11 @@ private void addMarkersToMap() {
.icon(vectorToBitmap(R.drawable.ic_android, Color.parseColor("#A4C639")))
.title("Alice Springs"));
+ if (mMelbourne != null) {
+ mMelbourne.showInfoWindow();
+ mLastSelectedMarker = mMelbourne;
+ }
+
// Creates a marker rainbow demonstrating how to create default marker icons of different
// hues (colors).
float rotation = binding.rotationSeekBar.getProgress();
@@ -486,16 +509,19 @@ public void onInfoWindowLongClick(Marker marker) {
@Override
public void onMarkerDragStart(Marker marker) {
+ binding.topText.setVisibility(View.VISIBLE);
binding.topText.setText(R.string.on_marker_drag_start);
}
@Override
public void onMarkerDragEnd(Marker marker) {
+ binding.topText.setVisibility(View.VISIBLE);
binding.topText.setText(R.string.on_marker_drag_end);
}
@Override
public void onMarkerDrag(Marker marker) {
+ binding.topText.setVisibility(View.VISIBLE);
binding.topText.setText(getString(R.string.on_marker_drag, marker.getPosition().latitude, marker.getPosition().longitude));
}
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MultiMapDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MultiMapDemoActivity.java
index f0403251f..7662dad53 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MultiMapDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MultiMapDemoActivity.java
@@ -17,17 +17,71 @@
import android.os.Bundle;
-import androidx.appcompat.app.AppCompatActivity;
+import com.example.common_ui.R;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+import com.example.common_ui.catalog.Sample;
+import com.google.android.gms.maps.CameraUpdateFactory;
+import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.MarkerOptions;
/**
- * This shows how to create a simple activity with multiple maps on screen.
+ * Demonstrates rendering and animating multiple independent GoogleMap instances concurrently.
+ * Each quadrant showcases a UNESCO World Heritage Site with simultaneous smooth zoom animations.
*/
+@Sample(
+ id = "com.example.mapdemo.MultiMapDemoActivity",
+ title = "Multi-Map View",
+ description = "Rendering multiple independent GoogleMap instances in a single activity layout.",
+ category = "Map Initialization",
+ complexity = Complexity.ADVANCED,
+ tags = {"#multimap", "#multiple", "#layout", "#rendering"},
+ apiCalls = {
+ "SupportMapFragment.getMapAsync(OnMapReadyCallback)",
+ "GoogleMap.animateCamera(CameraUpdate, int, CancelableCallback)",
+ "GoogleMap.addMarker(MarkerOptions)"
+ },
+ purpose = "Shows how to render and control multiple independent GoogleMap instances concurrently in one screen.",
+ successCriteria = "All 4 map fragments render distinct geographic locations simultaneously with smooth scrolling.",
+ failureIndicators = "GL context collision, thread locking, or tile stuttering when dragging multiple maps.",
+ framework = Framework.JAVA_VIEWS
+)
+// [START maps_android_sample_multimap]
public class MultiMapDemoActivity extends SamplesBaseActivity {
+ private static final LatLng COMMON_START = new LatLng(20.0, 0.0);
+ private static final LatLng GIZA = new LatLng(29.9792, 31.1342);
+ private static final LatLng MACHU_PICCHU = new LatLng(-13.1631, -72.5450);
+ private static final LatLng TAJ_MAHAL = new LatLng(27.1751, 78.0421);
+ private static final LatLng COLOSSEUM = new LatLng(41.8902, 12.4922);
+ private static final float INITIAL_ZOOM = 1.5f;
+ private static final float TARGET_ZOOM = 15.5f;
+ private static final int ANIM_DURATION_MS = 3000;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(com.example.common_ui.R.layout.multimap_demo);
- applyInsets(findViewById(com.example.common_ui.R.id.map_container));
+ setContentView(R.layout.multimap_demo);
+ applyInsets(findViewById(R.id.map_container));
+
+ setupMap(R.id.map1, GIZA, "Pyramids of Giza");
+ setupMap(R.id.map2, MACHU_PICCHU, "Machu Picchu");
+ setupMap(R.id.map3, TAJ_MAHAL, "Taj Mahal");
+ setupMap(R.id.map4, COLOSSEUM, "Colosseum");
+ }
+
+ private void setupMap(int fragmentId, LatLng location, String title) {
+ SupportMapFragment fragment =
+ (SupportMapFragment) getSupportFragmentManager().findFragmentById(fragmentId);
+ if (fragment != null) {
+ fragment.getMapAsync(map -> {
+ map.moveCamera(CameraUpdateFactory.newLatLngZoom(COMMON_START, INITIAL_ZOOM));
+ map.addMarker(new MarkerOptions().position(location).title(title));
+ map.animateCamera(CameraUpdateFactory.newLatLngZoom(location, TARGET_ZOOM), ANIM_DURATION_MS, null);
+ });
+ }
}
}
+// [END maps_android_sample_multimap]
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MyLocationDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MyLocationDemoActivity.java
index 7f9008f8a..855899988 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MyLocationDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/MyLocationDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.Manifest.permission;
import android.annotation.SuppressLint;
import com.google.android.gms.maps.GoogleMap;
@@ -41,6 +45,18 @@
* android.Manifest.permission#ACCESS_COARSE_LOCATION} are requested at run time. If either
* permission is not granted, the Activity is finished with an error message.
*/
+@Sample(
+ id = "my_location",
+ title = "My Location Layer",
+ description = "Enabling blue dot location indicator and My Location button with runtime permissions.",
+ category = "Location & Sensors",
+ complexity = Complexity.SIMPLE,
+ tags = {"#location", "#mylocation", "#permissions", "#bluedot"},
+ purpose = "Demonstrates requesting ACCESS_FINE_LOCATION permissions and enabling the blue dot location layer.",
+ successCriteria = "Tapping My Location button centers camera on user's current GPS position.",
+ failureIndicators = "Permission denial causes unhandled crash or location button missing.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_my_location]
public class MyLocationDemoActivity extends SamplesBaseActivity
implements
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolygonDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolygonDemoActivity.java
index 95bda098a..c2fdb9111 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolygonDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolygonDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
@@ -47,6 +51,18 @@
/**
* This shows how to draw polygons on a map.
*/
+@Sample(
+ id = "polygons",
+ title = "Polygons & Holes",
+ description = "Drawing geodesic polygons with fill colors, stroke patterns, click events, and interior holes.",
+ category = "Shapes & Geometry",
+ complexity = Complexity.SIMPLE,
+ tags = {"#shapes", "#polygons", "#holes", "#geometry", "#stroke", "#fill"},
+ purpose = "Demonstrates drawing styled polygons with interior holes (donut polygons), click listeners, and stroke caps.",
+ successCriteria = "Polygons render with specified fill opacity and interior cutout holes properly subtracted.",
+ failureIndicators = "Holes not rendering as transparent cutouts or stroke color incorrect.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_polygons]
public class PolygonDemoActivity extends SamplesBaseActivity
implements OnSeekBarChangeListener, OnItemSelectedListener, OnMapReadyCallback {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolylineDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolylineDemoActivity.java
index cda119abf..f192579f6 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolylineDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/PolylineDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
@@ -54,6 +58,18 @@
/**
* This shows how to draw polylines on a map.
*/
+@Sample(
+ id = "polylines",
+ title = "Polylines & Patterns",
+ description = "Drawing polylines with joint types, dash/dot stroke patterns, joint styles, and spans.",
+ category = "Shapes & Geometry",
+ complexity = Complexity.SIMPLE,
+ tags = {"#shapes", "#polylines", "#patterns", "#dashes", "#stroke", "#routes"},
+ purpose = "Demonstrates drawing customizable polylines with dash/gap patterns, round end caps, and bevel joints.",
+ successCriteria = "Polylines render crisp dashed and dotted stroke lines along coordinate vertices.",
+ failureIndicators = "Line caps distorted or custom pattern ignored on high-DPI screens.",
+ framework = Framework.JAVA_VIEWS
+)
// [START maps_android_sample_polylines]
public class PolylineDemoActivity extends SamplesBaseActivity
implements OnSeekBarChangeListener, OnItemSelectedListener, OnMapReadyCallback {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/ProgrammaticDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/ProgrammaticDemoActivity.java
index 235215894..11cdbf619 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/ProgrammaticDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/ProgrammaticDemoActivity.java
@@ -12,7 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-
package com.example.mapdemo;
import com.google.android.gms.maps.GoogleMap;
@@ -36,6 +35,7 @@ public class ProgrammaticDemoActivity extends SamplesBaseActivity implements OnM
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(com.example.common_ui.R.layout.activity_sample_base);
// It isn't possible to set a fragment's id programmatically so we set a tag instead and
// search for it using that.
@@ -47,15 +47,13 @@ protected void onCreate(Bundle savedInstanceState) {
// To programmatically add the map, we first create a SupportMapFragment.
mapFragment = SupportMapFragment.newInstance();
- // Then we add it using a FragmentTransaction.
+ // Then we add it using a FragmentTransaction into the standard sample content container.
FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
- fragmentTransaction.add(android.R.id.content, mapFragment, MAP_FRAGMENT_TAG);
+ fragmentTransaction.add(com.example.common_ui.R.id.sample_content_container, mapFragment, MAP_FRAGMENT_TAG);
fragmentTransaction.commit();
}
mapFragment.getMapAsync(this);
-
- applyInsets(findViewById(com.example.common_ui.R.id.map_container));
}
@Override
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SnapshotDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SnapshotDemoActivity.java
index d46e9611c..1a6858770 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SnapshotDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SnapshotDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapLoadedCallback;
@@ -43,6 +47,18 @@
* 3. Material 3 Split View: Displays the interactive map in a top card and the captured
* preview in a bottom card with empty-state placeholder handling.
*/
+@Sample(
+ id = "snapshot_demo",
+ title = "Map Snapshot & Image Capture",
+ description = "Asynchronous bitmap frame capture using GoogleMap.snapshot() rendered in Material 3 preview cards.",
+ category = "Snapshots & Sharing",
+ complexity = Complexity.SIMPLE,
+ tags = {"#snapshot", "#bitmap", "#export", "#material3", "#capture"},
+ purpose = "Demonstrates taking asynchronous high-resolution bitmap snapshots of the map with snapshot ready callbacks.",
+ successCriteria = "Tapping 'Take Snapshot' captures the current map frame and displays it in the Material 3 preview card.",
+ failureIndicators = "Snapshot returns blank bitmap or blocks UI thread during GL readback.",
+ framework = Framework.JAVA_VIEWS
+)
public class SnapshotDemoActivity extends SamplesBaseActivity implements OnMapReadyCallback {
// Venice, Italy (Grand Canal & Rialto)
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java
index f4ae30791..992993046 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.pm.PackageManager;
@@ -61,6 +65,18 @@
* 3. **High-Accuracy Location**: Uses {@link FusedLocationProviderClient} with {@link Priority#PRIORITY_HIGH_ACCURACY}
* to teleport Pegman and Street View to the user's real-time physical location on demand.
*/
+@Sample(
+ id = "split_street_view",
+ title = "Split Street View & Map Sync",
+ description = "Dual synchronized view: draggable 2D Pegman marker synchronized with 3D Street View panorama.",
+ category = "Street View",
+ complexity = Complexity.ADVANCED,
+ tags = {"#streetview", "#panorama", "#pegman", "#sync", "#bidirectional"},
+ purpose = "Demonstrates bidirectional synchronization: dragging map Pegman updates panorama; walking Street View moves map marker.",
+ successCriteria = "Moving Pegman on map instantly loads new 360 panorama; street navigation rotates Pegman bearing.",
+ failureIndicators = "Infinite update feedback loops, Pegman desyncing from panorama, or FAB jump failing.",
+ framework = Framework.JAVA_VIEWS
+)
public class SplitStreetViewPanoramaAndMapDemoActivity extends SamplesBaseActivity
implements OnMarkerDragListener, OnStreetViewPanoramaChangeListener,
ActivityCompat.OnRequestPermissionsResultCallback {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/StyledMapDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/StyledMapDemoActivity.java
index 8810774d8..3ff050402 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/StyledMapDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/StyledMapDemoActivity.java
@@ -15,6 +15,11 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+import com.example.common_ui.R;
+
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
@@ -37,6 +42,24 @@
/**
* This shows how to style a map with JSON.
*/
+@Sample(
+ id = "com.example.mapdemo.StyledMapDemoActivity",
+ title = "JSON Map Styling (Retro / Dark)",
+ description = "Applying raw JSON styling rules locally for Retro, Grayscale, and Night mode aesthetics.",
+ category = "Styling & Cloud",
+ complexity = Complexity.SIMPLE,
+ tags = {"#styling", "#json", "#darkmode", "#night", "#retro"},
+ apiCalls = {
+ "GoogleMap.setMapStyle(MapStyleOptions)",
+ "MapStyleOptions.loadRawResourceStyle(Context, int)",
+ "MapStyleOptions(String)"
+ },
+ purpose = "Demonstrates applying local JSON MapStyleOptions to change base map theme dynamically.",
+ successCriteria = "Selecting style options in the toolbar instantly restyles the map (Night / Retro / Standard).",
+ failureIndicators = "Invalid JSON causes silent fallback or parsing exception.",
+ framework = Framework.JAVA_VIEWS
+)
+// [START maps_android_sample_styled_map]
public class StyledMapDemoActivity extends SamplesBaseActivity implements OnMapReadyCallback {
private GoogleMap mMap = null;
@@ -47,16 +70,16 @@ public class StyledMapDemoActivity extends SamplesBaseActivity implements OnMapR
// Stores the ID of the currently selected style, so that we can re-apply it when
// the activity restores state, for example when the device changes orientation.
- private int mSelectedStyleId = com.example.common_ui.R.string.style_label_default;
+ private int mSelectedStyleId = R.string.style_label_night;
// These are simply the string resource IDs for each of the style names. We use them
// as identifiers when choosing which style to apply.
private final int[] mStyleIds = {
- com.example.common_ui.R.string.style_label_retro,
- com.example.common_ui.R.string.style_label_night,
- com.example.common_ui.R.string.style_label_grayscale,
- com.example.common_ui.R.string.style_label_no_pois_no_transit,
- com.example.common_ui.R.string.style_label_default,
+ R.string.style_label_retro,
+ R.string.style_label_night,
+ R.string.style_label_grayscale,
+ R.string.style_label_no_pois_no_transit,
+ R.string.style_label_default,
};
private static final LatLng SYDNEY = new LatLng(-33.8688, 151.2093);
@@ -67,13 +90,13 @@ protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
mSelectedStyleId = savedInstanceState.getInt(SELECTED_STYLE);
}
- setContentView(com.example.common_ui.R.layout.styled_map_demo);
+ setContentView(R.layout.styled_map_demo);
SupportMapFragment mapFragment =
- (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);
+ (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
- applyInsets(findViewById(com.example.common_ui.R.id.map_container));
+ applyInsets(findViewById(R.id.map_container));
}
@Override
@@ -92,13 +115,13 @@ public void onMapReady(@NonNull GoogleMap map) {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(com.example.common_ui.R.menu.styled_map, menu);
+ getMenuInflater().inflate(R.menu.styled_map, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == com.example.common_ui.R.id.menu_style_choose) {
+ if (item.getItemId() == R.id.menu_style_choose) {
showStylesDialog();
}
return true;
@@ -119,11 +142,11 @@ private void showStylesDialog() {
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(getString(com.example.common_ui.R.string.style_choose));
+ builder.setTitle(getString(R.string.style_choose));
builder.setItems(styleNames.toArray(new CharSequence[styleNames.size()]),
(dialog, which) -> {
mSelectedStyleId = mStyleIds[which];
- String msg = getString(com.example.common_ui.R.string.style_set_to, getString(mSelectedStyleId));
+ String msg = getString(R.string.style_set_to, getString(mSelectedStyleId));
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
Log.d(TAG, msg);
setSelectedStyle();
@@ -139,16 +162,16 @@ private void showStylesDialog() {
private void setSelectedStyle() {
MapStyleOptions style;
int id = mSelectedStyleId;
- if (id == com.example.common_ui.R.string.style_label_retro) {
+ if (id == R.string.style_label_retro) {
// Sets the retro style via raw resource JSON.
- style = MapStyleOptions.loadRawResourceStyle(this, com.example.common_ui.R.raw.mapstyle_retro);
- } else if (id == com.example.common_ui.R.string.style_label_night) {
+ style = MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_retro);
+ } else if (id == R.string.style_label_night) {
// Sets the night style via raw resource JSON.
- style = MapStyleOptions.loadRawResourceStyle(this, com.example.common_ui.R.raw.mapstyle_night);
- } else if (id == com.example.common_ui.R.string.style_label_grayscale) {
+ style = MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_night);
+ } else if (id == R.string.style_label_grayscale) {
// Sets the grayscale style via raw resource JSON.
- style = MapStyleOptions.loadRawResourceStyle(this, com.example.common_ui.R.raw.mapstyle_grayscale);
- } else if (id == com.example.common_ui.R.string.style_label_no_pois_no_transit) {
+ style = MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_grayscale);
+ } else if (id == R.string.style_label_no_pois_no_transit) {
// Sets the no POIs or transit style via JSON string.
style = new MapStyleOptions("[" +
" {" +
@@ -170,7 +193,7 @@ private void setSelectedStyle() {
" ]" +
" }" +
"]");
- } else if (id == com.example.common_ui.R.string.style_label_default) {
+ } else if (id == R.string.style_label_default) {
// Removes previously set style, by setting it to null.
style = null;
} else {
@@ -179,4 +202,5 @@ private void setSelectedStyle() {
mMap.setMapStyle(style);
}
-}
\ No newline at end of file
+}
+// [END maps_android_sample_styled_map]
\ No newline at end of file
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/TileOverlayDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/TileOverlayDemoActivity.java
index b507ff684..1eb7f1e4a 100644
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/TileOverlayDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/TileOverlayDemoActivity.java
@@ -15,6 +15,10 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
@@ -38,6 +42,18 @@
/**
* This demonstrates how to add a tile overlay to a map.
*/
+@Sample(
+ id = "tile_overlay",
+ title = "Tile Overlays & TileProvider",
+ description = "Custom TileProvider rendering coordinate grid tiles and custom imagery.",
+ category = "Overlays & Tiles",
+ complexity = Complexity.SIMPLE,
+ tags = {"#overlays", "#tiles", "#tileprovider", "#customtiles"},
+ purpose = "Demonstrates generating custom raster tiles on the fly using a custom TileProvider (coordinate overlays).",
+ successCriteria = "Tile grid numbers (x, y, zoom) render cleanly over the base map.",
+ failureIndicators = "Tile rendering blocks UI thread or tiles fail to fetch on pan.",
+ framework = Framework.JAVA_VIEWS
+)
public class TileOverlayDemoActivity extends SamplesBaseActivity
implements OnSeekBarChangeListener, OnMapReadyCallback {
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/UiSettingsDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/UiSettingsDemoActivity.java
index b289968fd..bb8282708 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/UiSettingsDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/UiSettingsDemoActivity.java
@@ -77,6 +77,7 @@ protected void onCreate(Bundle savedInstanceState) {
binding.rotateToggle.setOnClickListener(v -> setRotateGesturesEnabled());
}
+ // [START maps_android_sample_ui_settings]
@SuppressLint("MissingPermission")
@Override
public void onMapReady(GoogleMap map) {
@@ -101,6 +102,7 @@ public void onMapReady(GoogleMap map) {
}
mMap.setMyLocationEnabled(binding.mylocationlayerToggle.isChecked());
}
+ // [END maps_android_sample_ui_settings]
/**
* Checks if the map is ready (which depends on whether the Google Play services APK is
diff --git a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/VisibleRegionDemoActivity.java b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/VisibleRegionDemoActivity.java
index bbabb704f..c06d43d10 100755
--- a/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/VisibleRegionDemoActivity.java
+++ b/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/VisibleRegionDemoActivity.java
@@ -14,6 +14,11 @@
package com.example.mapdemo;
+import com.example.common_ui.catalog.Sample;
+import com.example.common_ui.catalog.Complexity;
+import com.example.common_ui.catalog.Framework;
+import com.example.common_ui.R;
+
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -23,10 +28,14 @@
import android.view.animation.OvershootInterpolator;
import android.widget.Toast;
+import androidx.appcompat.widget.PopupMenu;
+import java.util.Locale;
+
import com.example.common_ui.databinding.VisibleRegionDemoBinding;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions;
@@ -35,6 +44,25 @@
* This shows how to use setPadding to allow overlays that obscure part of the map without
* obscuring the map UI or copyright notices.
*/
+@Sample(
+ id = "com.example.mapdemo.VisibleRegionDemoActivity",
+ title = "Visible Region & Projection",
+ description = "Querying current viewport bounding coordinates via GoogleMap.projection.",
+ category = "Camera Controls",
+ complexity = Complexity.SIMPLE,
+ tags = {"#camera", "#projection", "#visibleregion", "#latlngbounds"},
+ apiCalls = {
+ "GoogleMap.setPadding(int, int, int, int)",
+ "GoogleMap.moveCamera(CameraUpdate)",
+ "GoogleMap.cameraPosition",
+ "GoogleMap.setOnCameraIdleListener(OnCameraIdleListener)"
+ },
+ purpose = "Demonstrates reading GoogleMap.projection.visibleRegion and calculating viewport bounds dynamically.",
+ successCriteria = "Bounding coordinates update live in the UI as the camera pans and zooms.",
+ failureIndicators = "Projection returns null or stale LatLng bounds after camera idle.",
+ framework = Framework.JAVA_VIEWS
+)
+// [START maps_android_sample_visible_region]
public class VisibleRegionDemoActivity extends SamplesBaseActivity implements
OnMapAndViewReadyListener.OnGlobalLayoutAndMapReadyListener {
@@ -53,7 +81,7 @@ public class VisibleRegionDemoActivity extends SamplesBaseActivity implements
private VisibleRegionDemoBinding binding;
/** Keep track of current values for padding, so we can animate from them. */
- int currentLeft = 150;
+ int currentLeft = 0;
int currentTop = 0;
@@ -67,6 +95,32 @@ protected void onCreate(Bundle savedInstanceState) {
binding = VisibleRegionDemoBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
+ binding.cameraActionsButton.setOnClickListener(v -> {
+ PopupMenu popup = new PopupMenu(this, v);
+ popup.getMenuInflater().inflate(R.menu.visible_region_menu, popup.getMenu());
+ popup.setOnMenuItemClickListener(item -> {
+ int itemId = item.getItemId();
+ if (itemId == R.id.menu_action_no_padding) {
+ setNoPadding();
+ return true;
+ } else if (itemId == R.id.menu_action_more_padding) {
+ setMorePadding(v);
+ return true;
+ } else if (itemId == R.id.menu_action_opera_house) {
+ moveToOperaHouse(v);
+ return true;
+ } else if (itemId == R.id.menu_action_sfo) {
+ moveToSFO(v);
+ return true;
+ } else if (itemId == R.id.menu_action_australia) {
+ moveToAUS(v);
+ return true;
+ }
+ return false;
+ });
+ popup.show();
+ });
+
binding.vrNormalButton.setOnClickListener(v -> setNoPadding());
binding.vrMorePaddedButton.setOnClickListener(this::setMorePadding);
binding.vrSohButton.setOnClickListener(this::moveToOperaHouse);
@@ -74,7 +128,7 @@ protected void onCreate(Bundle savedInstanceState) {
binding.vrAusButton.setOnClickListener(this::moveToAUS);
SupportMapFragment mapFragment =
- (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);
+ (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
new OnMapAndViewReadyListener(mapFragment, this);
applyInsets(binding.mapContainer);
@@ -90,8 +144,24 @@ public void onMapReady(GoogleMap map) {
// Add a marker to the Opera House.
mMap.addMarker(new MarkerOptions().position(SOH).title("Sydney Opera House"));
// Add a camera idle listener.
- mMap.setOnCameraIdleListener(() -> binding.messageText.setText(
- getString(com.example.common_ui.R.string.camera_change_message, mMap.getCameraPosition())));
+ mMap.setOnCameraIdleListener(this::updateCameraDisplay);
+ updateCameraDisplay();
+ }
+
+ private void updateCameraDisplay() {
+ if (mMap == null) return;
+ CameraPosition pos = mMap.getCameraPosition();
+ binding.cameraTargetText.setText(getString(
+ R.string.camera_target_format,
+ pos.target.latitude,
+ pos.target.longitude
+ ));
+ binding.cameraDetailsText.setText(getString(
+ R.string.camera_details_format,
+ pos.zoom,
+ pos.tilt,
+ pos.bearing
+ ));
}
/**
@@ -100,7 +170,7 @@ public void onMapReady(GoogleMap map) {
*/
private boolean checkReady() {
if (mMap == null) {
- Toast.makeText(this, com.example.common_ui.R.string.map_not_ready, Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.map_not_ready, Toast.LENGTH_SHORT).show();
return false;
}
return true;
@@ -131,15 +201,15 @@ private void setNoPadding() {
if (!checkReady()) {
return;
}
- animatePadding(150, 0, 0, 0);
+ animatePadding(0, 0, 0, 0);
}
public void setMorePadding(View view) {
if (!checkReady()) {
return;
}
- View mapView = (getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map)).getView();
- int left = 150;
+ View mapView = (getSupportFragmentManager().findFragmentById(R.id.map)).getView();
+ int left = 0;
int top = 0;
int right = mapView.getWidth() / 3;
int bottom = mapView.getHeight() / 4;
@@ -186,3 +256,4 @@ public void run() {
});
}
}
+// [END maps_android_sample_visible_region]