@window-splitter/state 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">0.86% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>408/408</span>
28
+ <span class='fraction'>4/463</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>334/334</span>
35
+ <span class='fraction'>0/377</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>86/86</span>
42
+ <span class='fraction'>0/97</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
47
+ <span class="strong">0.88% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>400/400</span>
49
+ <span class='fraction'>4/452</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line high'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -1816,7 +1816,165 @@
1816
1816
  <a name='L1751'></a><a href='#L1751'>1751</a>
1817
1817
  <a name='L1752'></a><a href='#L1752'>1752</a>
1818
1818
  <a name='L1753'></a><a href='#L1753'>1753</a>
1819
- <a name='L1754'></a><a href='#L1754'>1754</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1819
+ <a name='L1754'></a><a href='#L1754'>1754</a>
1820
+ <a name='L1755'></a><a href='#L1755'>1755</a>
1821
+ <a name='L1756'></a><a href='#L1756'>1756</a>
1822
+ <a name='L1757'></a><a href='#L1757'>1757</a>
1823
+ <a name='L1758'></a><a href='#L1758'>1758</a>
1824
+ <a name='L1759'></a><a href='#L1759'>1759</a>
1825
+ <a name='L1760'></a><a href='#L1760'>1760</a>
1826
+ <a name='L1761'></a><a href='#L1761'>1761</a>
1827
+ <a name='L1762'></a><a href='#L1762'>1762</a>
1828
+ <a name='L1763'></a><a href='#L1763'>1763</a>
1829
+ <a name='L1764'></a><a href='#L1764'>1764</a>
1830
+ <a name='L1765'></a><a href='#L1765'>1765</a>
1831
+ <a name='L1766'></a><a href='#L1766'>1766</a>
1832
+ <a name='L1767'></a><a href='#L1767'>1767</a>
1833
+ <a name='L1768'></a><a href='#L1768'>1768</a>
1834
+ <a name='L1769'></a><a href='#L1769'>1769</a>
1835
+ <a name='L1770'></a><a href='#L1770'>1770</a>
1836
+ <a name='L1771'></a><a href='#L1771'>1771</a>
1837
+ <a name='L1772'></a><a href='#L1772'>1772</a>
1838
+ <a name='L1773'></a><a href='#L1773'>1773</a>
1839
+ <a name='L1774'></a><a href='#L1774'>1774</a>
1840
+ <a name='L1775'></a><a href='#L1775'>1775</a>
1841
+ <a name='L1776'></a><a href='#L1776'>1776</a>
1842
+ <a name='L1777'></a><a href='#L1777'>1777</a>
1843
+ <a name='L1778'></a><a href='#L1778'>1778</a>
1844
+ <a name='L1779'></a><a href='#L1779'>1779</a>
1845
+ <a name='L1780'></a><a href='#L1780'>1780</a>
1846
+ <a name='L1781'></a><a href='#L1781'>1781</a>
1847
+ <a name='L1782'></a><a href='#L1782'>1782</a>
1848
+ <a name='L1783'></a><a href='#L1783'>1783</a>
1849
+ <a name='L1784'></a><a href='#L1784'>1784</a>
1850
+ <a name='L1785'></a><a href='#L1785'>1785</a>
1851
+ <a name='L1786'></a><a href='#L1786'>1786</a>
1852
+ <a name='L1787'></a><a href='#L1787'>1787</a>
1853
+ <a name='L1788'></a><a href='#L1788'>1788</a>
1854
+ <a name='L1789'></a><a href='#L1789'>1789</a>
1855
+ <a name='L1790'></a><a href='#L1790'>1790</a>
1856
+ <a name='L1791'></a><a href='#L1791'>1791</a>
1857
+ <a name='L1792'></a><a href='#L1792'>1792</a>
1858
+ <a name='L1793'></a><a href='#L1793'>1793</a>
1859
+ <a name='L1794'></a><a href='#L1794'>1794</a>
1860
+ <a name='L1795'></a><a href='#L1795'>1795</a>
1861
+ <a name='L1796'></a><a href='#L1796'>1796</a>
1862
+ <a name='L1797'></a><a href='#L1797'>1797</a>
1863
+ <a name='L1798'></a><a href='#L1798'>1798</a>
1864
+ <a name='L1799'></a><a href='#L1799'>1799</a>
1865
+ <a name='L1800'></a><a href='#L1800'>1800</a>
1866
+ <a name='L1801'></a><a href='#L1801'>1801</a>
1867
+ <a name='L1802'></a><a href='#L1802'>1802</a>
1868
+ <a name='L1803'></a><a href='#L1803'>1803</a>
1869
+ <a name='L1804'></a><a href='#L1804'>1804</a>
1870
+ <a name='L1805'></a><a href='#L1805'>1805</a>
1871
+ <a name='L1806'></a><a href='#L1806'>1806</a>
1872
+ <a name='L1807'></a><a href='#L1807'>1807</a>
1873
+ <a name='L1808'></a><a href='#L1808'>1808</a>
1874
+ <a name='L1809'></a><a href='#L1809'>1809</a>
1875
+ <a name='L1810'></a><a href='#L1810'>1810</a>
1876
+ <a name='L1811'></a><a href='#L1811'>1811</a>
1877
+ <a name='L1812'></a><a href='#L1812'>1812</a>
1878
+ <a name='L1813'></a><a href='#L1813'>1813</a>
1879
+ <a name='L1814'></a><a href='#L1814'>1814</a>
1880
+ <a name='L1815'></a><a href='#L1815'>1815</a>
1881
+ <a name='L1816'></a><a href='#L1816'>1816</a>
1882
+ <a name='L1817'></a><a href='#L1817'>1817</a>
1883
+ <a name='L1818'></a><a href='#L1818'>1818</a>
1884
+ <a name='L1819'></a><a href='#L1819'>1819</a>
1885
+ <a name='L1820'></a><a href='#L1820'>1820</a>
1886
+ <a name='L1821'></a><a href='#L1821'>1821</a>
1887
+ <a name='L1822'></a><a href='#L1822'>1822</a>
1888
+ <a name='L1823'></a><a href='#L1823'>1823</a>
1889
+ <a name='L1824'></a><a href='#L1824'>1824</a>
1890
+ <a name='L1825'></a><a href='#L1825'>1825</a>
1891
+ <a name='L1826'></a><a href='#L1826'>1826</a>
1892
+ <a name='L1827'></a><a href='#L1827'>1827</a>
1893
+ <a name='L1828'></a><a href='#L1828'>1828</a>
1894
+ <a name='L1829'></a><a href='#L1829'>1829</a>
1895
+ <a name='L1830'></a><a href='#L1830'>1830</a>
1896
+ <a name='L1831'></a><a href='#L1831'>1831</a>
1897
+ <a name='L1832'></a><a href='#L1832'>1832</a>
1898
+ <a name='L1833'></a><a href='#L1833'>1833</a>
1899
+ <a name='L1834'></a><a href='#L1834'>1834</a>
1900
+ <a name='L1835'></a><a href='#L1835'>1835</a>
1901
+ <a name='L1836'></a><a href='#L1836'>1836</a>
1902
+ <a name='L1837'></a><a href='#L1837'>1837</a>
1903
+ <a name='L1838'></a><a href='#L1838'>1838</a>
1904
+ <a name='L1839'></a><a href='#L1839'>1839</a>
1905
+ <a name='L1840'></a><a href='#L1840'>1840</a>
1906
+ <a name='L1841'></a><a href='#L1841'>1841</a>
1907
+ <a name='L1842'></a><a href='#L1842'>1842</a>
1908
+ <a name='L1843'></a><a href='#L1843'>1843</a>
1909
+ <a name='L1844'></a><a href='#L1844'>1844</a>
1910
+ <a name='L1845'></a><a href='#L1845'>1845</a>
1911
+ <a name='L1846'></a><a href='#L1846'>1846</a>
1912
+ <a name='L1847'></a><a href='#L1847'>1847</a>
1913
+ <a name='L1848'></a><a href='#L1848'>1848</a>
1914
+ <a name='L1849'></a><a href='#L1849'>1849</a>
1915
+ <a name='L1850'></a><a href='#L1850'>1850</a>
1916
+ <a name='L1851'></a><a href='#L1851'>1851</a>
1917
+ <a name='L1852'></a><a href='#L1852'>1852</a>
1918
+ <a name='L1853'></a><a href='#L1853'>1853</a>
1919
+ <a name='L1854'></a><a href='#L1854'>1854</a>
1920
+ <a name='L1855'></a><a href='#L1855'>1855</a>
1921
+ <a name='L1856'></a><a href='#L1856'>1856</a>
1922
+ <a name='L1857'></a><a href='#L1857'>1857</a>
1923
+ <a name='L1858'></a><a href='#L1858'>1858</a>
1924
+ <a name='L1859'></a><a href='#L1859'>1859</a>
1925
+ <a name='L1860'></a><a href='#L1860'>1860</a>
1926
+ <a name='L1861'></a><a href='#L1861'>1861</a>
1927
+ <a name='L1862'></a><a href='#L1862'>1862</a>
1928
+ <a name='L1863'></a><a href='#L1863'>1863</a>
1929
+ <a name='L1864'></a><a href='#L1864'>1864</a>
1930
+ <a name='L1865'></a><a href='#L1865'>1865</a>
1931
+ <a name='L1866'></a><a href='#L1866'>1866</a>
1932
+ <a name='L1867'></a><a href='#L1867'>1867</a>
1933
+ <a name='L1868'></a><a href='#L1868'>1868</a>
1934
+ <a name='L1869'></a><a href='#L1869'>1869</a>
1935
+ <a name='L1870'></a><a href='#L1870'>1870</a>
1936
+ <a name='L1871'></a><a href='#L1871'>1871</a>
1937
+ <a name='L1872'></a><a href='#L1872'>1872</a>
1938
+ <a name='L1873'></a><a href='#L1873'>1873</a>
1939
+ <a name='L1874'></a><a href='#L1874'>1874</a>
1940
+ <a name='L1875'></a><a href='#L1875'>1875</a>
1941
+ <a name='L1876'></a><a href='#L1876'>1876</a>
1942
+ <a name='L1877'></a><a href='#L1877'>1877</a>
1943
+ <a name='L1878'></a><a href='#L1878'>1878</a>
1944
+ <a name='L1879'></a><a href='#L1879'>1879</a>
1945
+ <a name='L1880'></a><a href='#L1880'>1880</a>
1946
+ <a name='L1881'></a><a href='#L1881'>1881</a>
1947
+ <a name='L1882'></a><a href='#L1882'>1882</a>
1948
+ <a name='L1883'></a><a href='#L1883'>1883</a>
1949
+ <a name='L1884'></a><a href='#L1884'>1884</a>
1950
+ <a name='L1885'></a><a href='#L1885'>1885</a>
1951
+ <a name='L1886'></a><a href='#L1886'>1886</a>
1952
+ <a name='L1887'></a><a href='#L1887'>1887</a>
1953
+ <a name='L1888'></a><a href='#L1888'>1888</a>
1954
+ <a name='L1889'></a><a href='#L1889'>1889</a>
1955
+ <a name='L1890'></a><a href='#L1890'>1890</a>
1956
+ <a name='L1891'></a><a href='#L1891'>1891</a>
1957
+ <a name='L1892'></a><a href='#L1892'>1892</a>
1958
+ <a name='L1893'></a><a href='#L1893'>1893</a>
1959
+ <a name='L1894'></a><a href='#L1894'>1894</a>
1960
+ <a name='L1895'></a><a href='#L1895'>1895</a>
1961
+ <a name='L1896'></a><a href='#L1896'>1896</a>
1962
+ <a name='L1897'></a><a href='#L1897'>1897</a>
1963
+ <a name='L1898'></a><a href='#L1898'>1898</a>
1964
+ <a name='L1899'></a><a href='#L1899'>1899</a>
1965
+ <a name='L1900'></a><a href='#L1900'>1900</a>
1966
+ <a name='L1901'></a><a href='#L1901'>1901</a>
1967
+ <a name='L1902'></a><a href='#L1902'>1902</a>
1968
+ <a name='L1903'></a><a href='#L1903'>1903</a>
1969
+ <a name='L1904'></a><a href='#L1904'>1904</a>
1970
+ <a name='L1905'></a><a href='#L1905'>1905</a>
1971
+ <a name='L1906'></a><a href='#L1906'>1906</a>
1972
+ <a name='L1907'></a><a href='#L1907'>1907</a>
1973
+ <a name='L1908'></a><a href='#L1908'>1908</a>
1974
+ <a name='L1909'></a><a href='#L1909'>1909</a>
1975
+ <a name='L1910'></a><a href='#L1910'>1910</a>
1976
+ <a name='L1911'></a><a href='#L1911'>1911</a>
1977
+ <a name='L1912'></a><a href='#L1912'>1912</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1820
1978
  <span class="cline-any cline-neutral">&nbsp;</span>
1821
1979
  <span class="cline-any cline-neutral">&nbsp;</span>
1822
1980
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1830,7 +1988,7 @@
1830
1988
  <span class="cline-any cline-neutral">&nbsp;</span>
1831
1989
  <span class="cline-any cline-neutral">&nbsp;</span>
1832
1990
  <span class="cline-any cline-neutral">&nbsp;</span>
1833
- <span class="cline-any cline-yes">2x</span>
1991
+ <span class="cline-any cline-yes">1x</span>
1834
1992
  <span class="cline-any cline-neutral">&nbsp;</span>
1835
1993
  <span class="cline-any cline-neutral">&nbsp;</span>
1836
1994
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1854,11 +2012,11 @@
1854
2012
  <span class="cline-any cline-neutral">&nbsp;</span>
1855
2013
  <span class="cline-any cline-neutral">&nbsp;</span>
1856
2014
  <span class="cline-any cline-neutral">&nbsp;</span>
1857
- <span class="cline-any cline-yes">9804x</span>
2015
+ <span class="cline-any cline-no">&nbsp;</span>
1858
2016
  <span class="cline-any cline-neutral">&nbsp;</span>
1859
2017
  <span class="cline-any cline-neutral">&nbsp;</span>
1860
2018
  <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-yes">10389x</span>
2019
+ <span class="cline-any cline-no">&nbsp;</span>
1862
2020
  <span class="cline-any cline-neutral">&nbsp;</span>
1863
2021
  <span class="cline-any cline-neutral">&nbsp;</span>
1864
2022
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1929,39 +2087,39 @@
1929
2087
  <span class="cline-any cline-neutral">&nbsp;</span>
1930
2088
  <span class="cline-any cline-neutral">&nbsp;</span>
1931
2089
  <span class="cline-any cline-neutral">&nbsp;</span>
1932
- <span class="cline-any cline-yes">14x</span>
1933
- <span class="cline-any cline-yes">14x</span>
2090
+ <span class="cline-any cline-no">&nbsp;</span>
2091
+ <span class="cline-any cline-no">&nbsp;</span>
1934
2092
  <span class="cline-any cline-neutral">&nbsp;</span>
1935
- <span class="cline-any cline-yes">14x</span>
1936
- <span class="cline-any cline-yes">4x</span>
1937
- <span class="cline-any cline-yes">2x</span>
2093
+ <span class="cline-any cline-no">&nbsp;</span>
2094
+ <span class="cline-any cline-no">&nbsp;</span>
2095
+ <span class="cline-any cline-no">&nbsp;</span>
1938
2096
  <span class="cline-any cline-neutral">&nbsp;</span>
1939
- <span class="cline-any cline-yes">2x</span>
1940
- <span class="cline-any cline-yes">2x</span>
2097
+ <span class="cline-any cline-no">&nbsp;</span>
2098
+ <span class="cline-any cline-no">&nbsp;</span>
1941
2099
  <span class="cline-any cline-neutral">&nbsp;</span>
1942
2100
  <span class="cline-any cline-neutral">&nbsp;</span>
1943
2101
  <span class="cline-any cline-neutral">&nbsp;</span>
1944
2102
  <span class="cline-any cline-neutral">&nbsp;</span>
1945
2103
  <span class="cline-any cline-neutral">&nbsp;</span>
1946
2104
  <span class="cline-any cline-neutral">&nbsp;</span>
1947
- <span class="cline-any cline-yes">14x</span>
2105
+ <span class="cline-any cline-no">&nbsp;</span>
1948
2106
  <span class="cline-any cline-neutral">&nbsp;</span>
1949
2107
  <span class="cline-any cline-neutral">&nbsp;</span>
1950
2108
  <span class="cline-any cline-neutral">&nbsp;</span>
1951
- <span class="cline-any cline-yes">2x</span>
2109
+ <span class="cline-any cline-yes">1x</span>
1952
2110
  <span class="cline-any cline-neutral">&nbsp;</span>
1953
- <span class="cline-any cline-yes">18x</span>
2111
+ <span class="cline-any cline-no">&nbsp;</span>
1954
2112
  <span class="cline-any cline-neutral">&nbsp;</span>
1955
2113
  <span class="cline-any cline-neutral">&nbsp;</span>
1956
- <span class="cline-any cline-yes">18x</span>
1957
- <span class="cline-any cline-yes">18x</span>
2114
+ <span class="cline-any cline-no">&nbsp;</span>
2115
+ <span class="cline-any cline-no">&nbsp;</span>
1958
2116
  <span class="cline-any cline-neutral">&nbsp;</span>
1959
2117
  <span class="cline-any cline-neutral">&nbsp;</span>
1960
2118
  <span class="cline-any cline-neutral">&nbsp;</span>
1961
2119
  <span class="cline-any cline-neutral">&nbsp;</span>
1962
2120
  <span class="cline-any cline-neutral">&nbsp;</span>
1963
2121
  <span class="cline-any cline-neutral">&nbsp;</span>
1964
- <span class="cline-any cline-yes">30x</span>
2122
+ <span class="cline-any cline-no">&nbsp;</span>
1965
2123
  <span class="cline-any cline-neutral">&nbsp;</span>
1966
2124
  <span class="cline-any cline-neutral">&nbsp;</span>
1967
2125
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2143,64 +2301,64 @@
2143
2301
  <span class="cline-any cline-neutral">&nbsp;</span>
2144
2302
  <span class="cline-any cline-neutral">&nbsp;</span>
2145
2303
  <span class="cline-any cline-neutral">&nbsp;</span>
2146
- <span class="cline-any cline-yes">6x</span>
2147
- <span class="cline-any cline-yes">3x</span>
2148
- <span class="cline-any cline-yes">1x</span>
2149
- <span class="cline-any cline-yes">2x</span>
2150
- <span class="cline-any cline-yes">1x</span>
2151
2304
  <span class="cline-any cline-neutral">&nbsp;</span>
2152
- <span class="cline-any cline-yes">1x</span>
2305
+ <span class="cline-any cline-no">&nbsp;</span>
2306
+ <span class="cline-any cline-no">&nbsp;</span>
2307
+ <span class="cline-any cline-no">&nbsp;</span>
2308
+ <span class="cline-any cline-no">&nbsp;</span>
2309
+ <span class="cline-any cline-no">&nbsp;</span>
2153
2310
  <span class="cline-any cline-neutral">&nbsp;</span>
2311
+ <span class="cline-any cline-no">&nbsp;</span>
2154
2312
  <span class="cline-any cline-neutral">&nbsp;</span>
2155
- <span class="cline-any cline-yes">3x</span>
2156
- <span class="cline-any cline-yes">1x</span>
2157
- <span class="cline-any cline-yes">2x</span>
2158
- <span class="cline-any cline-yes">1x</span>
2159
2313
  <span class="cline-any cline-neutral">&nbsp;</span>
2160
- <span class="cline-any cline-yes">1x</span>
2314
+ <span class="cline-any cline-no">&nbsp;</span>
2315
+ <span class="cline-any cline-no">&nbsp;</span>
2316
+ <span class="cline-any cline-no">&nbsp;</span>
2317
+ <span class="cline-any cline-no">&nbsp;</span>
2161
2318
  <span class="cline-any cline-neutral">&nbsp;</span>
2319
+ <span class="cline-any cline-no">&nbsp;</span>
2162
2320
  <span class="cline-any cline-neutral">&nbsp;</span>
2163
2321
  <span class="cline-any cline-neutral">&nbsp;</span>
2164
2322
  <span class="cline-any cline-neutral">&nbsp;</span>
2165
2323
  <span class="cline-any cline-neutral">&nbsp;</span>
2166
2324
  <span class="cline-any cline-neutral">&nbsp;</span>
2167
- <span class="cline-any cline-yes">1x</span>
2168
2325
  <span class="cline-any cline-neutral">&nbsp;</span>
2326
+ <span class="cline-any cline-no">&nbsp;</span>
2169
2327
  <span class="cline-any cline-neutral">&nbsp;</span>
2170
- <span class="cline-any cline-yes">1x</span>
2171
2328
  <span class="cline-any cline-neutral">&nbsp;</span>
2172
- <span class="cline-any cline-yes">1x</span>
2173
- <span class="cline-any cline-yes">3x</span>
2174
- <span class="cline-any cline-yes">2x</span>
2175
- <span class="cline-any cline-yes">2x</span>
2176
- <span class="cline-any cline-yes">2x</span>
2329
+ <span class="cline-any cline-no">&nbsp;</span>
2177
2330
  <span class="cline-any cline-neutral">&nbsp;</span>
2178
- <span class="cline-any cline-yes">2x</span>
2179
- <span class="cline-any cline-yes">1x</span>
2331
+ <span class="cline-any cline-no">&nbsp;</span>
2332
+ <span class="cline-any cline-no">&nbsp;</span>
2333
+ <span class="cline-any cline-no">&nbsp;</span>
2334
+ <span class="cline-any cline-no">&nbsp;</span>
2335
+ <span class="cline-any cline-no">&nbsp;</span>
2180
2336
  <span class="cline-any cline-neutral">&nbsp;</span>
2337
+ <span class="cline-any cline-no">&nbsp;</span>
2338
+ <span class="cline-any cline-no">&nbsp;</span>
2181
2339
  <span class="cline-any cline-neutral">&nbsp;</span>
2182
- <span class="cline-any cline-yes">1x</span>
2183
2340
  <span class="cline-any cline-neutral">&nbsp;</span>
2341
+ <span class="cline-any cline-no">&nbsp;</span>
2184
2342
  <span class="cline-any cline-neutral">&nbsp;</span>
2185
2343
  <span class="cline-any cline-neutral">&nbsp;</span>
2186
- <span class="cline-any cline-yes">1x</span>
2187
2344
  <span class="cline-any cline-neutral">&nbsp;</span>
2345
+ <span class="cline-any cline-no">&nbsp;</span>
2188
2346
  <span class="cline-any cline-neutral">&nbsp;</span>
2189
2347
  <span class="cline-any cline-neutral">&nbsp;</span>
2190
2348
  <span class="cline-any cline-neutral">&nbsp;</span>
2191
2349
  <span class="cline-any cline-neutral">&nbsp;</span>
2192
2350
  <span class="cline-any cline-neutral">&nbsp;</span>
2193
2351
  <span class="cline-any cline-neutral">&nbsp;</span>
2194
- <span class="cline-any cline-yes">4651x</span>
2195
2352
  <span class="cline-any cline-neutral">&nbsp;</span>
2353
+ <span class="cline-any cline-no">&nbsp;</span>
2196
2354
  <span class="cline-any cline-neutral">&nbsp;</span>
2197
2355
  <span class="cline-any cline-neutral">&nbsp;</span>
2198
2356
  <span class="cline-any cline-neutral">&nbsp;</span>
2199
2357
  <span class="cline-any cline-neutral">&nbsp;</span>
2200
2358
  <span class="cline-any cline-neutral">&nbsp;</span>
2201
2359
  <span class="cline-any cline-neutral">&nbsp;</span>
2202
- <span class="cline-any cline-yes">34543x</span>
2203
2360
  <span class="cline-any cline-neutral">&nbsp;</span>
2361
+ <span class="cline-any cline-no">&nbsp;</span>
2204
2362
  <span class="cline-any cline-neutral">&nbsp;</span>
2205
2363
  <span class="cline-any cline-neutral">&nbsp;</span>
2206
2364
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2209,8 +2367,8 @@
2209
2367
  <span class="cline-any cline-neutral">&nbsp;</span>
2210
2368
  <span class="cline-any cline-neutral">&nbsp;</span>
2211
2369
  <span class="cline-any cline-neutral">&nbsp;</span>
2212
- <span class="cline-any cline-yes">6222x</span>
2213
2370
  <span class="cline-any cline-neutral">&nbsp;</span>
2371
+ <span class="cline-any cline-no">&nbsp;</span>
2214
2372
  <span class="cline-any cline-neutral">&nbsp;</span>
2215
2373
  <span class="cline-any cline-neutral">&nbsp;</span>
2216
2374
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2251,27 +2409,27 @@
2251
2409
  <span class="cline-any cline-neutral">&nbsp;</span>
2252
2410
  <span class="cline-any cline-neutral">&nbsp;</span>
2253
2411
  <span class="cline-any cline-neutral">&nbsp;</span>
2254
- <span class="cline-any cline-yes">99x</span>
2255
- <span class="cline-any cline-yes">98x</span>
2256
2412
  <span class="cline-any cline-neutral">&nbsp;</span>
2413
+ <span class="cline-any cline-no">&nbsp;</span>
2414
+ <span class="cline-any cline-no">&nbsp;</span>
2257
2415
  <span class="cline-any cline-neutral">&nbsp;</span>
2258
- <span class="cline-any cline-yes">98x</span>
2259
- <span class="cline-any cline-yes">9134x</span>
2260
2416
  <span class="cline-any cline-neutral">&nbsp;</span>
2417
+ <span class="cline-any cline-no">&nbsp;</span>
2418
+ <span class="cline-any cline-no">&nbsp;</span>
2261
2419
  <span class="cline-any cline-neutral">&nbsp;</span>
2262
2420
  <span class="cline-any cline-neutral">&nbsp;</span>
2263
2421
  <span class="cline-any cline-neutral">&nbsp;</span>
2264
- <span class="cline-any cline-yes">5081x</span>
2265
- <span class="cline-any cline-yes">5081x</span>
2266
2422
  <span class="cline-any cline-neutral">&nbsp;</span>
2423
+ <span class="cline-any cline-no">&nbsp;</span>
2424
+ <span class="cline-any cline-no">&nbsp;</span>
2267
2425
  <span class="cline-any cline-neutral">&nbsp;</span>
2268
- <span class="cline-any cline-yes">4053x</span>
2269
- <span class="cline-any cline-yes">4053x</span>
2270
2426
  <span class="cline-any cline-neutral">&nbsp;</span>
2427
+ <span class="cline-any cline-no">&nbsp;</span>
2428
+ <span class="cline-any cline-no">&nbsp;</span>
2271
2429
  <span class="cline-any cline-neutral">&nbsp;</span>
2272
2430
  <span class="cline-any cline-neutral">&nbsp;</span>
2273
- <span class="cline-any cline-yes">99x</span>
2274
2431
  <span class="cline-any cline-neutral">&nbsp;</span>
2432
+ <span class="cline-any cline-no">&nbsp;</span>
2275
2433
  <span class="cline-any cline-neutral">&nbsp;</span>
2276
2434
  <span class="cline-any cline-neutral">&nbsp;</span>
2277
2435
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2288,15 +2446,15 @@
2288
2446
  <span class="cline-any cline-neutral">&nbsp;</span>
2289
2447
  <span class="cline-any cline-neutral">&nbsp;</span>
2290
2448
  <span class="cline-any cline-neutral">&nbsp;</span>
2291
- <span class="cline-any cline-yes">98x</span>
2292
2449
  <span class="cline-any cline-neutral">&nbsp;</span>
2450
+ <span class="cline-any cline-no">&nbsp;</span>
2293
2451
  <span class="cline-any cline-neutral">&nbsp;</span>
2294
2452
  <span class="cline-any cline-neutral">&nbsp;</span>
2295
2453
  <span class="cline-any cline-neutral">&nbsp;</span>
2296
2454
  <span class="cline-any cline-neutral">&nbsp;</span>
2297
2455
  <span class="cline-any cline-neutral">&nbsp;</span>
2298
- <span class="cline-any cline-yes">13x</span>
2299
2456
  <span class="cline-any cline-neutral">&nbsp;</span>
2457
+ <span class="cline-any cline-no">&nbsp;</span>
2300
2458
  <span class="cline-any cline-neutral">&nbsp;</span>
2301
2459
  <span class="cline-any cline-neutral">&nbsp;</span>
2302
2460
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2307,33 +2465,33 @@
2307
2465
  <span class="cline-any cline-neutral">&nbsp;</span>
2308
2466
  <span class="cline-any cline-neutral">&nbsp;</span>
2309
2467
  <span class="cline-any cline-neutral">&nbsp;</span>
2310
- <span class="cline-any cline-yes">10065x</span>
2311
- <span class="cline-any cline-yes">9797x</span>
2312
2468
  <span class="cline-any cline-neutral">&nbsp;</span>
2469
+ <span class="cline-any cline-no">&nbsp;</span>
2470
+ <span class="cline-any cline-no">&nbsp;</span>
2313
2471
  <span class="cline-any cline-neutral">&nbsp;</span>
2314
- <span class="cline-any cline-yes">10065x</span>
2315
- <span class="cline-any cline-yes">260x</span>
2316
2472
  <span class="cline-any cline-neutral">&nbsp;</span>
2473
+ <span class="cline-any cline-no">&nbsp;</span>
2474
+ <span class="cline-any cline-no">&nbsp;</span>
2317
2475
  <span class="cline-any cline-neutral">&nbsp;</span>
2318
- <span class="cline-any cline-yes">9805x</span>
2319
- <span class="cline-any cline-yes">9804x</span>
2320
2476
  <span class="cline-any cline-neutral">&nbsp;</span>
2477
+ <span class="cline-any cline-no">&nbsp;</span>
2478
+ <span class="cline-any cline-no">&nbsp;</span>
2321
2479
  <span class="cline-any cline-neutral">&nbsp;</span>
2322
- <span class="cline-any cline-yes">1x</span>
2323
2480
  <span class="cline-any cline-neutral">&nbsp;</span>
2481
+ <span class="cline-any cline-no">&nbsp;</span>
2324
2482
  <span class="cline-any cline-neutral">&nbsp;</span>
2325
2483
  <span class="cline-any cline-neutral">&nbsp;</span>
2326
2484
  <span class="cline-any cline-neutral">&nbsp;</span>
2327
- <span class="cline-any cline-yes">9143x</span>
2328
- <span class="cline-any cline-yes">9090x</span>
2329
2485
  <span class="cline-any cline-neutral">&nbsp;</span>
2486
+ <span class="cline-any cline-no">&nbsp;</span>
2487
+ <span class="cline-any cline-no">&nbsp;</span>
2330
2488
  <span class="cline-any cline-neutral">&nbsp;</span>
2331
- <span class="cline-any cline-yes">53x</span>
2332
2489
  <span class="cline-any cline-neutral">&nbsp;</span>
2490
+ <span class="cline-any cline-no">&nbsp;</span>
2333
2491
  <span class="cline-any cline-neutral">&nbsp;</span>
2334
2492
  <span class="cline-any cline-neutral">&nbsp;</span>
2335
- <span class="cline-any cline-yes">23041x</span>
2336
2493
  <span class="cline-any cline-neutral">&nbsp;</span>
2494
+ <span class="cline-any cline-no">&nbsp;</span>
2337
2495
  <span class="cline-any cline-neutral">&nbsp;</span>
2338
2496
  <span class="cline-any cline-neutral">&nbsp;</span>
2339
2497
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2342,9 +2500,9 @@
2342
2500
  <span class="cline-any cline-neutral">&nbsp;</span>
2343
2501
  <span class="cline-any cline-neutral">&nbsp;</span>
2344
2502
  <span class="cline-any cline-neutral">&nbsp;</span>
2345
- <span class="cline-any cline-yes">35221x</span>
2346
- <span class="cline-any cline-yes">35221x</span>
2347
2503
  <span class="cline-any cline-neutral">&nbsp;</span>
2504
+ <span class="cline-any cline-no">&nbsp;</span>
2505
+ <span class="cline-any cline-no">&nbsp;</span>
2348
2506
  <span class="cline-any cline-neutral">&nbsp;</span>
2349
2507
  <span class="cline-any cline-neutral">&nbsp;</span>
2350
2508
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2354,43 +2512,43 @@
2354
2512
  <span class="cline-any cline-neutral">&nbsp;</span>
2355
2513
  <span class="cline-any cline-neutral">&nbsp;</span>
2356
2514
  <span class="cline-any cline-neutral">&nbsp;</span>
2357
- <span class="cline-any cline-yes">4708x</span>
2358
- <span class="cline-any cline-yes">4708x</span>
2359
2515
  <span class="cline-any cline-neutral">&nbsp;</span>
2360
- <span class="cline-any cline-yes">4708x</span>
2361
- <span class="cline-any cline-yes">4516x</span>
2516
+ <span class="cline-any cline-no">&nbsp;</span>
2517
+ <span class="cline-any cline-no">&nbsp;</span>
2362
2518
  <span class="cline-any cline-neutral">&nbsp;</span>
2519
+ <span class="cline-any cline-no">&nbsp;</span>
2520
+ <span class="cline-any cline-no">&nbsp;</span>
2363
2521
  <span class="cline-any cline-neutral">&nbsp;</span>
2364
- <span class="cline-any cline-yes">192x</span>
2365
2522
  <span class="cline-any cline-neutral">&nbsp;</span>
2523
+ <span class="cline-any cline-no">&nbsp;</span>
2366
2524
  <span class="cline-any cline-neutral">&nbsp;</span>
2367
2525
  <span class="cline-any cline-neutral">&nbsp;</span>
2368
2526
  <span class="cline-any cline-neutral">&nbsp;</span>
2369
2527
  <span class="cline-any cline-neutral">&nbsp;</span>
2370
2528
  <span class="cline-any cline-neutral">&nbsp;</span>
2371
2529
  <span class="cline-any cline-neutral">&nbsp;</span>
2372
- <span class="cline-any cline-yes">158x</span>
2373
2530
  <span class="cline-any cline-neutral">&nbsp;</span>
2374
- <span class="cline-any cline-yes">56x</span>
2375
- <span class="cline-any cline-yes">55x</span>
2531
+ <span class="cline-any cline-no">&nbsp;</span>
2376
2532
  <span class="cline-any cline-neutral">&nbsp;</span>
2533
+ <span class="cline-any cline-no">&nbsp;</span>
2534
+ <span class="cline-any cline-no">&nbsp;</span>
2377
2535
  <span class="cline-any cline-neutral">&nbsp;</span>
2378
- <span class="cline-any cline-yes">1x</span>
2379
2536
  <span class="cline-any cline-neutral">&nbsp;</span>
2537
+ <span class="cline-any cline-no">&nbsp;</span>
2380
2538
  <span class="cline-any cline-neutral">&nbsp;</span>
2381
2539
  <span class="cline-any cline-neutral">&nbsp;</span>
2382
2540
  <span class="cline-any cline-neutral">&nbsp;</span>
2383
2541
  <span class="cline-any cline-neutral">&nbsp;</span>
2384
2542
  <span class="cline-any cline-neutral">&nbsp;</span>
2385
2543
  <span class="cline-any cline-neutral">&nbsp;</span>
2386
- <span class="cline-any cline-yes">9187x</span>
2387
2544
  <span class="cline-any cline-neutral">&nbsp;</span>
2388
- <span class="cline-any cline-yes">4594x</span>
2389
- <span class="cline-any cline-yes">4593x</span>
2545
+ <span class="cline-any cline-no">&nbsp;</span>
2390
2546
  <span class="cline-any cline-neutral">&nbsp;</span>
2547
+ <span class="cline-any cline-no">&nbsp;</span>
2548
+ <span class="cline-any cline-no">&nbsp;</span>
2391
2549
  <span class="cline-any cline-neutral">&nbsp;</span>
2392
- <span class="cline-any cline-yes">1x</span>
2393
2550
  <span class="cline-any cline-neutral">&nbsp;</span>
2551
+ <span class="cline-any cline-no">&nbsp;</span>
2394
2552
  <span class="cline-any cline-neutral">&nbsp;</span>
2395
2553
  <span class="cline-any cline-neutral">&nbsp;</span>
2396
2554
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2400,24 +2558,24 @@
2400
2558
  <span class="cline-any cline-neutral">&nbsp;</span>
2401
2559
  <span class="cline-any cline-neutral">&nbsp;</span>
2402
2560
  <span class="cline-any cline-neutral">&nbsp;</span>
2403
- <span class="cline-any cline-yes">4x</span>
2404
- <span class="cline-any cline-yes">1x</span>
2405
2561
  <span class="cline-any cline-neutral">&nbsp;</span>
2562
+ <span class="cline-any cline-no">&nbsp;</span>
2563
+ <span class="cline-any cline-no">&nbsp;</span>
2406
2564
  <span class="cline-any cline-neutral">&nbsp;</span>
2407
- <span class="cline-any cline-yes">3x</span>
2408
- <span class="cline-any cline-yes">3x</span>
2409
- <span class="cline-any cline-yes">3x</span>
2410
2565
  <span class="cline-any cline-neutral">&nbsp;</span>
2411
- <span class="cline-any cline-yes">3x</span>
2412
- <span class="cline-any cline-yes">1x</span>
2566
+ <span class="cline-any cline-no">&nbsp;</span>
2567
+ <span class="cline-any cline-no">&nbsp;</span>
2568
+ <span class="cline-any cline-no">&nbsp;</span>
2413
2569
  <span class="cline-any cline-neutral">&nbsp;</span>
2570
+ <span class="cline-any cline-no">&nbsp;</span>
2571
+ <span class="cline-any cline-no">&nbsp;</span>
2414
2572
  <span class="cline-any cline-neutral">&nbsp;</span>
2415
- <span class="cline-any cline-yes">2x</span>
2416
- <span class="cline-any cline-yes">1x</span>
2417
2573
  <span class="cline-any cline-neutral">&nbsp;</span>
2574
+ <span class="cline-any cline-no">&nbsp;</span>
2575
+ <span class="cline-any cline-no">&nbsp;</span>
2418
2576
  <span class="cline-any cline-neutral">&nbsp;</span>
2419
- <span class="cline-any cline-yes">1x</span>
2420
2577
  <span class="cline-any cline-neutral">&nbsp;</span>
2578
+ <span class="cline-any cline-no">&nbsp;</span>
2421
2579
  <span class="cline-any cline-neutral">&nbsp;</span>
2422
2580
  <span class="cline-any cline-neutral">&nbsp;</span>
2423
2581
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2427,60 +2585,60 @@
2427
2585
  <span class="cline-any cline-neutral">&nbsp;</span>
2428
2586
  <span class="cline-any cline-neutral">&nbsp;</span>
2429
2587
  <span class="cline-any cline-neutral">&nbsp;</span>
2430
- <span class="cline-any cline-yes">51x</span>
2431
2588
  <span class="cline-any cline-neutral">&nbsp;</span>
2432
- <span class="cline-any cline-yes">19x</span>
2589
+ <span class="cline-any cline-no">&nbsp;</span>
2433
2590
  <span class="cline-any cline-neutral">&nbsp;</span>
2434
- <span class="cline-any cline-yes">19x</span>
2591
+ <span class="cline-any cline-no">&nbsp;</span>
2435
2592
  <span class="cline-any cline-neutral">&nbsp;</span>
2436
- <span class="cline-any cline-yes">19x</span>
2437
- <span class="cline-any cline-yes">2x</span>
2593
+ <span class="cline-any cline-no">&nbsp;</span>
2438
2594
  <span class="cline-any cline-neutral">&nbsp;</span>
2595
+ <span class="cline-any cline-no">&nbsp;</span>
2596
+ <span class="cline-any cline-no">&nbsp;</span>
2439
2597
  <span class="cline-any cline-neutral">&nbsp;</span>
2440
- <span class="cline-any cline-yes">17x</span>
2441
2598
  <span class="cline-any cline-neutral">&nbsp;</span>
2442
- <span class="cline-any cline-yes">17x</span>
2443
- <span class="cline-any cline-yes">16x</span>
2599
+ <span class="cline-any cline-no">&nbsp;</span>
2444
2600
  <span class="cline-any cline-neutral">&nbsp;</span>
2601
+ <span class="cline-any cline-no">&nbsp;</span>
2602
+ <span class="cline-any cline-no">&nbsp;</span>
2445
2603
  <span class="cline-any cline-neutral">&nbsp;</span>
2446
- <span class="cline-any cline-yes">1x</span>
2447
2604
  <span class="cline-any cline-neutral">&nbsp;</span>
2605
+ <span class="cline-any cline-no">&nbsp;</span>
2448
2606
  <span class="cline-any cline-neutral">&nbsp;</span>
2449
2607
  <span class="cline-any cline-neutral">&nbsp;</span>
2450
2608
  <span class="cline-any cline-neutral">&nbsp;</span>
2451
- <span class="cline-any cline-yes">109x</span>
2452
- <span class="cline-any cline-yes">109x</span>
2453
- <span class="cline-any cline-yes">240x</span>
2454
- <span class="cline-any cline-yes">240x</span>
2455
2609
  <span class="cline-any cline-neutral">&nbsp;</span>
2456
- <span class="cline-any cline-yes">109x</span>
2610
+ <span class="cline-any cline-no">&nbsp;</span>
2611
+ <span class="cline-any cline-no">&nbsp;</span>
2612
+ <span class="cline-any cline-no">&nbsp;</span>
2613
+ <span class="cline-any cline-no">&nbsp;</span>
2457
2614
  <span class="cline-any cline-neutral">&nbsp;</span>
2615
+ <span class="cline-any cline-no">&nbsp;</span>
2458
2616
  <span class="cline-any cline-neutral">&nbsp;</span>
2459
- <span class="cline-any cline-yes">109x</span>
2460
- <span class="cline-any cline-yes">240x</span>
2461
- <span class="cline-any cline-yes">237x</span>
2462
2617
  <span class="cline-any cline-neutral">&nbsp;</span>
2618
+ <span class="cline-any cline-no">&nbsp;</span>
2619
+ <span class="cline-any cline-no">&nbsp;</span>
2620
+ <span class="cline-any cline-no">&nbsp;</span>
2463
2621
  <span class="cline-any cline-neutral">&nbsp;</span>
2464
2622
  <span class="cline-any cline-neutral">&nbsp;</span>
2465
- <span class="cline-any cline-yes">131x</span>
2466
2623
  <span class="cline-any cline-neutral">&nbsp;</span>
2624
+ <span class="cline-any cline-no">&nbsp;</span>
2467
2625
  <span class="cline-any cline-neutral">&nbsp;</span>
2468
- <span class="cline-any cline-yes">237x</span>
2469
2626
  <span class="cline-any cline-neutral">&nbsp;</span>
2627
+ <span class="cline-any cline-no">&nbsp;</span>
2470
2628
  <span class="cline-any cline-neutral">&nbsp;</span>
2471
2629
  <span class="cline-any cline-neutral">&nbsp;</span>
2472
- <span class="cline-any cline-yes">240x</span>
2473
- <span class="cline-any cline-yes">109x</span>
2474
- <span class="cline-any cline-yes">240x</span>
2475
- <span class="cline-any cline-yes">1x</span>
2476
2630
  <span class="cline-any cline-neutral">&nbsp;</span>
2477
- <span class="cline-any cline-yes">109x</span>
2631
+ <span class="cline-any cline-no">&nbsp;</span>
2632
+ <span class="cline-any cline-no">&nbsp;</span>
2633
+ <span class="cline-any cline-no">&nbsp;</span>
2634
+ <span class="cline-any cline-no">&nbsp;</span>
2478
2635
  <span class="cline-any cline-neutral">&nbsp;</span>
2479
- <span class="cline-any cline-yes">3x</span>
2636
+ <span class="cline-any cline-no">&nbsp;</span>
2480
2637
  <span class="cline-any cline-neutral">&nbsp;</span>
2638
+ <span class="cline-any cline-no">&nbsp;</span>
2481
2639
  <span class="cline-any cline-neutral">&nbsp;</span>
2482
- <span class="cline-any cline-yes">109x</span>
2483
2640
  <span class="cline-any cline-neutral">&nbsp;</span>
2641
+ <span class="cline-any cline-no">&nbsp;</span>
2484
2642
  <span class="cline-any cline-neutral">&nbsp;</span>
2485
2643
  <span class="cline-any cline-neutral">&nbsp;</span>
2486
2644
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2488,24 +2646,24 @@
2488
2646
  <span class="cline-any cline-neutral">&nbsp;</span>
2489
2647
  <span class="cline-any cline-neutral">&nbsp;</span>
2490
2648
  <span class="cline-any cline-neutral">&nbsp;</span>
2491
- <span class="cline-any cline-yes">4668x</span>
2492
2649
  <span class="cline-any cline-neutral">&nbsp;</span>
2650
+ <span class="cline-any cline-no">&nbsp;</span>
2493
2651
  <span class="cline-any cline-neutral">&nbsp;</span>
2494
2652
  <span class="cline-any cline-neutral">&nbsp;</span>
2495
2653
  <span class="cline-any cline-neutral">&nbsp;</span>
2496
- <span class="cline-any cline-yes">4668x</span>
2497
- <span class="cline-any cline-yes">1541x</span>
2498
2654
  <span class="cline-any cline-neutral">&nbsp;</span>
2655
+ <span class="cline-any cline-no">&nbsp;</span>
2656
+ <span class="cline-any cline-no">&nbsp;</span>
2499
2657
  <span class="cline-any cline-neutral">&nbsp;</span>
2500
- <span class="cline-any cline-yes">3127x</span>
2501
- <span class="cline-any cline-yes">16x</span>
2502
2658
  <span class="cline-any cline-neutral">&nbsp;</span>
2659
+ <span class="cline-any cline-no">&nbsp;</span>
2660
+ <span class="cline-any cline-no">&nbsp;</span>
2503
2661
  <span class="cline-any cline-neutral">&nbsp;</span>
2504
2662
  <span class="cline-any cline-neutral">&nbsp;</span>
2505
2663
  <span class="cline-any cline-neutral">&nbsp;</span>
2506
2664
  <span class="cline-any cline-neutral">&nbsp;</span>
2507
- <span class="cline-any cline-yes">3111x</span>
2508
2665
  <span class="cline-any cline-neutral">&nbsp;</span>
2666
+ <span class="cline-any cline-no">&nbsp;</span>
2509
2667
  <span class="cline-any cline-neutral">&nbsp;</span>
2510
2668
  <span class="cline-any cline-neutral">&nbsp;</span>
2511
2669
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2518,55 +2676,55 @@
2518
2676
  <span class="cline-any cline-neutral">&nbsp;</span>
2519
2677
  <span class="cline-any cline-neutral">&nbsp;</span>
2520
2678
  <span class="cline-any cline-neutral">&nbsp;</span>
2679
+ <span class="cline-any cline-no">&nbsp;</span>
2521
2680
  <span class="cline-any cline-neutral">&nbsp;</span>
2681
+ <span class="cline-any cline-no">&nbsp;</span>
2682
+ <span class="cline-any cline-no">&nbsp;</span>
2683
+ <span class="cline-any cline-no">&nbsp;</span>
2522
2684
  <span class="cline-any cline-neutral">&nbsp;</span>
2523
- <span class="cline-any cline-yes">4612x</span>
2524
2685
  <span class="cline-any cline-neutral">&nbsp;</span>
2525
- <span class="cline-any cline-yes">4612x</span>
2526
- <span class="cline-any cline-yes">4736x</span>
2527
- <span class="cline-any cline-yes">68x</span>
2686
+ <span class="cline-any cline-no">&nbsp;</span>
2528
2687
  <span class="cline-any cline-neutral">&nbsp;</span>
2529
2688
  <span class="cline-any cline-neutral">&nbsp;</span>
2530
- <span class="cline-any cline-yes">4668x</span>
2531
2689
  <span class="cline-any cline-neutral">&nbsp;</span>
2690
+ <span class="cline-any cline-no">&nbsp;</span>
2691
+ <span class="cline-any cline-no">&nbsp;</span>
2532
2692
  <span class="cline-any cline-neutral">&nbsp;</span>
2533
2693
  <span class="cline-any cline-neutral">&nbsp;</span>
2534
- <span class="cline-any cline-yes">4668x</span>
2535
- <span class="cline-any cline-yes">3894x</span>
2536
2694
  <span class="cline-any cline-neutral">&nbsp;</span>
2537
2695
  <span class="cline-any cline-neutral">&nbsp;</span>
2538
2696
  <span class="cline-any cline-neutral">&nbsp;</span>
2539
2697
  <span class="cline-any cline-neutral">&nbsp;</span>
2698
+ <span class="cline-any cline-no">&nbsp;</span>
2540
2699
  <span class="cline-any cline-neutral">&nbsp;</span>
2700
+ <span class="cline-any cline-no">&nbsp;</span>
2701
+ <span class="cline-any cline-no">&nbsp;</span>
2702
+ <span class="cline-any cline-no">&nbsp;</span>
2703
+ <span class="cline-any cline-no">&nbsp;</span>
2541
2704
  <span class="cline-any cline-neutral">&nbsp;</span>
2542
- <span class="cline-any cline-yes">445x</span>
2543
2705
  <span class="cline-any cline-neutral">&nbsp;</span>
2544
- <span class="cline-any cline-yes">445x</span>
2545
- <span class="cline-any cline-yes">1451x</span>
2546
- <span class="cline-any cline-yes">500x</span>
2547
- <span class="cline-any cline-yes">951x</span>
2548
2706
  <span class="cline-any cline-neutral">&nbsp;</span>
2549
2707
  <span class="cline-any cline-neutral">&nbsp;</span>
2708
+ <span class="cline-any cline-no">&nbsp;</span>
2550
2709
  <span class="cline-any cline-neutral">&nbsp;</span>
2551
2710
  <span class="cline-any cline-neutral">&nbsp;</span>
2552
- <span class="cline-any cline-yes">107x</span>
2553
2711
  <span class="cline-any cline-neutral">&nbsp;</span>
2712
+ <span class="cline-any cline-no">&nbsp;</span>
2554
2713
  <span class="cline-any cline-neutral">&nbsp;</span>
2555
2714
  <span class="cline-any cline-neutral">&nbsp;</span>
2556
- <span class="cline-any cline-yes">445x</span>
2557
2715
  <span class="cline-any cline-neutral">&nbsp;</span>
2716
+ <span class="cline-any cline-no">&nbsp;</span>
2717
+ <span class="cline-any cline-no">&nbsp;</span>
2558
2718
  <span class="cline-any cline-neutral">&nbsp;</span>
2559
2719
  <span class="cline-any cline-neutral">&nbsp;</span>
2560
- <span class="cline-any cline-yes">888x</span>
2561
- <span class="cline-any cline-yes">871x</span>
2720
+ <span class="cline-any cline-no">&nbsp;</span>
2562
2721
  <span class="cline-any cline-neutral">&nbsp;</span>
2563
2722
  <span class="cline-any cline-neutral">&nbsp;</span>
2564
- <span class="cline-any cline-yes">17x</span>
2565
2723
  <span class="cline-any cline-neutral">&nbsp;</span>
2724
+ <span class="cline-any cline-no">&nbsp;</span>
2725
+ <span class="cline-any cline-no">&nbsp;</span>
2566
2726
  <span class="cline-any cline-neutral">&nbsp;</span>
2567
2727
  <span class="cline-any cline-neutral">&nbsp;</span>
2568
- <span class="cline-any cline-yes">1x</span>
2569
- <span class="cline-any cline-yes">3x</span>
2570
2728
  <span class="cline-any cline-neutral">&nbsp;</span>
2571
2729
  <span class="cline-any cline-neutral">&nbsp;</span>
2572
2730
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2574,102 +2732,107 @@
2574
2732
  <span class="cline-any cline-neutral">&nbsp;</span>
2575
2733
  <span class="cline-any cline-neutral">&nbsp;</span>
2576
2734
  <span class="cline-any cline-neutral">&nbsp;</span>
2735
+ <span class="cline-any cline-no">&nbsp;</span>
2577
2736
  <span class="cline-any cline-neutral">&nbsp;</span>
2578
2737
  <span class="cline-any cline-neutral">&nbsp;</span>
2579
- <span class="cline-any cline-yes">1x</span>
2580
2738
  <span class="cline-any cline-neutral">&nbsp;</span>
2581
2739
  <span class="cline-any cline-neutral">&nbsp;</span>
2740
+ <span class="cline-any cline-no">&nbsp;</span>
2582
2741
  <span class="cline-any cline-neutral">&nbsp;</span>
2583
2742
  <span class="cline-any cline-neutral">&nbsp;</span>
2584
- <span class="cline-any cline-yes">1x</span>
2585
2743
  <span class="cline-any cline-neutral">&nbsp;</span>
2586
2744
  <span class="cline-any cline-neutral">&nbsp;</span>
2587
2745
  <span class="cline-any cline-neutral">&nbsp;</span>
2746
+ <span class="cline-any cline-no">&nbsp;</span>
2588
2747
  <span class="cline-any cline-neutral">&nbsp;</span>
2589
2748
  <span class="cline-any cline-neutral">&nbsp;</span>
2590
- <span class="cline-any cline-yes">1x</span>
2591
2749
  <span class="cline-any cline-neutral">&nbsp;</span>
2592
2750
  <span class="cline-any cline-neutral">&nbsp;</span>
2751
+ <span class="cline-any cline-no">&nbsp;</span>
2752
+ <span class="cline-any cline-no">&nbsp;</span>
2753
+ <span class="cline-any cline-no">&nbsp;</span>
2593
2754
  <span class="cline-any cline-neutral">&nbsp;</span>
2594
2755
  <span class="cline-any cline-neutral">&nbsp;</span>
2595
- <span class="cline-any cline-yes">1x</span>
2596
- <span class="cline-any cline-yes">3x</span>
2597
- <span class="cline-any cline-yes">1x</span>
2756
+ <span class="cline-any cline-no">&nbsp;</span>
2598
2757
  <span class="cline-any cline-neutral">&nbsp;</span>
2599
2758
  <span class="cline-any cline-neutral">&nbsp;</span>
2600
- <span class="cline-any cline-yes">2x</span>
2601
2759
  <span class="cline-any cline-neutral">&nbsp;</span>
2602
2760
  <span class="cline-any cline-neutral">&nbsp;</span>
2603
2761
  <span class="cline-any cline-neutral">&nbsp;</span>
2604
2762
  <span class="cline-any cline-neutral">&nbsp;</span>
2605
2763
  <span class="cline-any cline-neutral">&nbsp;</span>
2764
+ <span class="cline-any cline-no">&nbsp;</span>
2765
+ <span class="cline-any cline-no">&nbsp;</span>
2766
+ <span class="cline-any cline-no">&nbsp;</span>
2606
2767
  <span class="cline-any cline-neutral">&nbsp;</span>
2607
2768
  <span class="cline-any cline-neutral">&nbsp;</span>
2608
- <span class="cline-any cline-yes">1x</span>
2609
- <span class="cline-any cline-yes">1x</span>
2610
- <span class="cline-any cline-yes">1x</span>
2611
2769
  <span class="cline-any cline-neutral">&nbsp;</span>
2612
2770
  <span class="cline-any cline-neutral">&nbsp;</span>
2771
+ <span class="cline-any cline-no">&nbsp;</span>
2613
2772
  <span class="cline-any cline-neutral">&nbsp;</span>
2773
+ <span class="cline-any cline-no">&nbsp;</span>
2614
2774
  <span class="cline-any cline-neutral">&nbsp;</span>
2615
- <span class="cline-any cline-yes">192x</span>
2775
+ <span class="cline-any cline-no">&nbsp;</span>
2776
+ <span class="cline-any cline-no">&nbsp;</span>
2616
2777
  <span class="cline-any cline-neutral">&nbsp;</span>
2617
- <span class="cline-any cline-yes">192x</span>
2778
+ <span class="cline-any cline-no">&nbsp;</span>
2618
2779
  <span class="cline-any cline-neutral">&nbsp;</span>
2619
- <span class="cline-any cline-yes">604x</span>
2620
- <span class="cline-any cline-yes">398x</span>
2621
2780
  <span class="cline-any cline-neutral">&nbsp;</span>
2622
- <span class="cline-any cline-yes">398x</span>
2623
2781
  <span class="cline-any cline-neutral">&nbsp;</span>
2782
+ <span class="cline-any cline-no">&nbsp;</span>
2783
+ <span class="cline-any cline-no">&nbsp;</span>
2784
+ <span class="cline-any cline-no">&nbsp;</span>
2785
+ <span class="cline-any cline-no">&nbsp;</span>
2786
+ <span class="cline-any cline-no">&nbsp;</span>
2787
+ <span class="cline-any cline-no">&nbsp;</span>
2788
+ <span class="cline-any cline-no">&nbsp;</span>
2789
+ <span class="cline-any cline-no">&nbsp;</span>
2624
2790
  <span class="cline-any cline-neutral">&nbsp;</span>
2791
+ <span class="cline-any cline-no">&nbsp;</span>
2625
2792
  <span class="cline-any cline-neutral">&nbsp;</span>
2626
- <span class="cline-any cline-yes">252x</span>
2627
- <span class="cline-any cline-yes">146x</span>
2628
- <span class="cline-any cline-yes">19x</span>
2629
- <span class="cline-any cline-yes">19x</span>
2630
- <span class="cline-any cline-yes">127x</span>
2631
- <span class="cline-any cline-yes">5x</span>
2632
- <span class="cline-any cline-yes">122x</span>
2633
- <span class="cline-any cline-yes">13x</span>
2634
2793
  <span class="cline-any cline-neutral">&nbsp;</span>
2635
2794
  <span class="cline-any cline-neutral">&nbsp;</span>
2636
- <span class="cline-any cline-yes">109x</span>
2637
- <span class="cline-any cline-yes">109x</span>
2638
2795
  <span class="cline-any cline-neutral">&nbsp;</span>
2639
2796
  <span class="cline-any cline-neutral">&nbsp;</span>
2640
- <span class="cline-any cline-yes">206x</span>
2641
2797
  <span class="cline-any cline-neutral">&nbsp;</span>
2642
2798
  <span class="cline-any cline-neutral">&nbsp;</span>
2643
2799
  <span class="cline-any cline-neutral">&nbsp;</span>
2800
+ <span class="cline-any cline-no">&nbsp;</span>
2801
+ <span class="cline-any cline-no">&nbsp;</span>
2644
2802
  <span class="cline-any cline-neutral">&nbsp;</span>
2645
2803
  <span class="cline-any cline-neutral">&nbsp;</span>
2646
- <span class="cline-any cline-yes">109x</span>
2647
2804
  <span class="cline-any cline-neutral">&nbsp;</span>
2648
- <span class="cline-any cline-yes">132x</span>
2805
+ <span class="cline-any cline-no">&nbsp;</span>
2806
+ <span class="cline-any cline-no">&nbsp;</span>
2649
2807
  <span class="cline-any cline-neutral">&nbsp;</span>
2808
+ <span class="cline-any cline-no">&nbsp;</span>
2809
+ <span class="cline-any cline-no">&nbsp;</span>
2650
2810
  <span class="cline-any cline-neutral">&nbsp;</span>
2651
2811
  <span class="cline-any cline-neutral">&nbsp;</span>
2652
- <span class="cline-any cline-yes">109x</span>
2653
2812
  <span class="cline-any cline-neutral">&nbsp;</span>
2654
- <span class="cline-any cline-yes">109x</span>
2655
- <span class="cline-any cline-yes">1x</span>
2813
+ <span class="cline-any cline-no">&nbsp;</span>
2656
2814
  <span class="cline-any cline-neutral">&nbsp;</span>
2657
2815
  <span class="cline-any cline-neutral">&nbsp;</span>
2658
- <span class="cline-any cline-yes">109x</span>
2659
2816
  <span class="cline-any cline-neutral">&nbsp;</span>
2660
2817
  <span class="cline-any cline-neutral">&nbsp;</span>
2661
2818
  <span class="cline-any cline-neutral">&nbsp;</span>
2662
- <span class="cline-any cline-yes">4832x</span>
2819
+ <span class="cline-any cline-no">&nbsp;</span>
2663
2820
  <span class="cline-any cline-neutral">&nbsp;</span>
2821
+ <span class="cline-any cline-no">&nbsp;</span>
2664
2822
  <span class="cline-any cline-neutral">&nbsp;</span>
2665
2823
  <span class="cline-any cline-neutral">&nbsp;</span>
2666
2824
  <span class="cline-any cline-neutral">&nbsp;</span>
2825
+ <span class="cline-any cline-no">&nbsp;</span>
2667
2826
  <span class="cline-any cline-neutral">&nbsp;</span>
2827
+ <span class="cline-any cline-no">&nbsp;</span>
2828
+ <span class="cline-any cline-no">&nbsp;</span>
2668
2829
  <span class="cline-any cline-neutral">&nbsp;</span>
2669
2830
  <span class="cline-any cline-neutral">&nbsp;</span>
2831
+ <span class="cline-any cline-no">&nbsp;</span>
2670
2832
  <span class="cline-any cline-neutral">&nbsp;</span>
2671
2833
  <span class="cline-any cline-neutral">&nbsp;</span>
2672
2834
  <span class="cline-any cline-neutral">&nbsp;</span>
2835
+ <span class="cline-any cline-no">&nbsp;</span>
2673
2836
  <span class="cline-any cline-neutral">&nbsp;</span>
2674
2837
  <span class="cline-any cline-neutral">&nbsp;</span>
2675
2838
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2721,302 +2884,380 @@
2721
2884
  <span class="cline-any cline-neutral">&nbsp;</span>
2722
2885
  <span class="cline-any cline-neutral">&nbsp;</span>
2723
2886
  <span class="cline-any cline-neutral">&nbsp;</span>
2724
- <span class="cline-any cline-yes">109x</span>
2725
- <span class="cline-any cline-yes">109x</span>
2726
2887
  <span class="cline-any cline-neutral">&nbsp;</span>
2727
- <span class="cline-any cline-yes">109x</span>
2728
- <span class="cline-any cline-yes">368x</span>
2729
- <span class="cline-any cline-yes">129x</span>
2730
2888
  <span class="cline-any cline-neutral">&nbsp;</span>
2731
2889
  <span class="cline-any cline-neutral">&nbsp;</span>
2732
- <span class="cline-any cline-yes">239x</span>
2733
- <span class="cline-any cline-yes">29x</span>
2734
2890
  <span class="cline-any cline-neutral">&nbsp;</span>
2735
2891
  <span class="cline-any cline-neutral">&nbsp;</span>
2736
- <span class="cline-any cline-yes">210x</span>
2737
2892
  <span class="cline-any cline-neutral">&nbsp;</span>
2738
2893
  <span class="cline-any cline-neutral">&nbsp;</span>
2739
2894
  <span class="cline-any cline-neutral">&nbsp;</span>
2740
- <span class="cline-any cline-yes">210x</span>
2741
2895
  <span class="cline-any cline-neutral">&nbsp;</span>
2742
2896
  <span class="cline-any cline-neutral">&nbsp;</span>
2743
- <span class="cline-any cline-yes">109x</span>
2897
+ <span class="cline-any cline-no">&nbsp;</span>
2898
+ <span class="cline-any cline-no">&nbsp;</span>
2744
2899
  <span class="cline-any cline-neutral">&nbsp;</span>
2900
+ <span class="cline-any cline-no">&nbsp;</span>
2901
+ <span class="cline-any cline-no">&nbsp;</span>
2902
+ <span class="cline-any cline-no">&nbsp;</span>
2903
+ <span class="cline-any cline-no">&nbsp;</span>
2745
2904
  <span class="cline-any cline-neutral">&nbsp;</span>
2746
2905
  <span class="cline-any cline-neutral">&nbsp;</span>
2906
+ <span class="cline-any cline-no">&nbsp;</span>
2907
+ <span class="cline-any cline-no">&nbsp;</span>
2908
+ <span class="cline-any cline-no">&nbsp;</span>
2747
2909
  <span class="cline-any cline-neutral">&nbsp;</span>
2748
2910
  <span class="cline-any cline-neutral">&nbsp;</span>
2911
+ <span class="cline-any cline-no">&nbsp;</span>
2749
2912
  <span class="cline-any cline-neutral">&nbsp;</span>
2750
2913
  <span class="cline-any cline-neutral">&nbsp;</span>
2751
2914
  <span class="cline-any cline-neutral">&nbsp;</span>
2915
+ <span class="cline-any cline-no">&nbsp;</span>
2752
2916
  <span class="cline-any cline-neutral">&nbsp;</span>
2753
2917
  <span class="cline-any cline-neutral">&nbsp;</span>
2754
2918
  <span class="cline-any cline-neutral">&nbsp;</span>
2755
2919
  <span class="cline-any cline-neutral">&nbsp;</span>
2756
2920
  <span class="cline-any cline-neutral">&nbsp;</span>
2921
+ <span class="cline-any cline-no">&nbsp;</span>
2757
2922
  <span class="cline-any cline-neutral">&nbsp;</span>
2758
2923
  <span class="cline-any cline-neutral">&nbsp;</span>
2759
2924
  <span class="cline-any cline-neutral">&nbsp;</span>
2760
2925
  <span class="cline-any cline-neutral">&nbsp;</span>
2761
2926
  <span class="cline-any cline-neutral">&nbsp;</span>
2762
- <span class="cline-any cline-yes">4591x</span>
2763
- <span class="cline-any cline-yes">4590x</span>
2764
- <span class="cline-any cline-yes">4590x</span>
2765
2927
  <span class="cline-any cline-neutral">&nbsp;</span>
2766
2928
  <span class="cline-any cline-neutral">&nbsp;</span>
2767
- <span class="cline-any cline-yes">4590x</span>
2768
2929
  <span class="cline-any cline-neutral">&nbsp;</span>
2769
2930
  <span class="cline-any cline-neutral">&nbsp;</span>
2770
2931
  <span class="cline-any cline-neutral">&nbsp;</span>
2771
- <span class="cline-any cline-yes">4590x</span>
2772
- <span class="cline-any cline-yes">1x</span>
2773
2932
  <span class="cline-any cline-neutral">&nbsp;</span>
2774
2933
  <span class="cline-any cline-neutral">&nbsp;</span>
2775
- <span class="cline-any cline-yes">4590x</span>
2776
- <span class="cline-any cline-yes">1x</span>
2777
2934
  <span class="cline-any cline-neutral">&nbsp;</span>
2778
2935
  <span class="cline-any cline-neutral">&nbsp;</span>
2779
- <span class="cline-any cline-yes">4589x</span>
2780
2936
  <span class="cline-any cline-neutral">&nbsp;</span>
2781
2937
  <span class="cline-any cline-neutral">&nbsp;</span>
2782
- <span class="cline-any cline-yes">4589x</span>
2783
2938
  <span class="cline-any cline-neutral">&nbsp;</span>
2784
2939
  <span class="cline-any cline-neutral">&nbsp;</span>
2940
+ <span class="cline-any cline-no">&nbsp;</span>
2941
+ <span class="cline-any cline-no">&nbsp;</span>
2942
+ <span class="cline-any cline-no">&nbsp;</span>
2785
2943
  <span class="cline-any cline-neutral">&nbsp;</span>
2786
2944
  <span class="cline-any cline-neutral">&nbsp;</span>
2945
+ <span class="cline-any cline-no">&nbsp;</span>
2787
2946
  <span class="cline-any cline-neutral">&nbsp;</span>
2788
2947
  <span class="cline-any cline-neutral">&nbsp;</span>
2789
2948
  <span class="cline-any cline-neutral">&nbsp;</span>
2949
+ <span class="cline-any cline-no">&nbsp;</span>
2950
+ <span class="cline-any cline-no">&nbsp;</span>
2790
2951
  <span class="cline-any cline-neutral">&nbsp;</span>
2791
2952
  <span class="cline-any cline-neutral">&nbsp;</span>
2792
- <span class="cline-any cline-yes">4589x</span>
2793
- <span class="cline-any cline-yes">709x</span>
2953
+ <span class="cline-any cline-no">&nbsp;</span>
2954
+ <span class="cline-any cline-no">&nbsp;</span>
2794
2955
  <span class="cline-any cline-neutral">&nbsp;</span>
2795
2956
  <span class="cline-any cline-neutral">&nbsp;</span>
2957
+ <span class="cline-any cline-no">&nbsp;</span>
2796
2958
  <span class="cline-any cline-neutral">&nbsp;</span>
2797
2959
  <span class="cline-any cline-neutral">&nbsp;</span>
2798
- <span class="cline-any cline-yes">3880x</span>
2960
+ <span class="cline-any cline-no">&nbsp;</span>
2799
2961
  <span class="cline-any cline-neutral">&nbsp;</span>
2800
- <span class="cline-any cline-yes">3880x</span>
2801
2962
  <span class="cline-any cline-neutral">&nbsp;</span>
2802
- <span class="cline-any cline-yes">3880x</span>
2803
2963
  <span class="cline-any cline-neutral">&nbsp;</span>
2804
2964
  <span class="cline-any cline-neutral">&nbsp;</span>
2805
2965
  <span class="cline-any cline-neutral">&nbsp;</span>
2806
2966
  <span class="cline-any cline-neutral">&nbsp;</span>
2807
- <span class="cline-any cline-yes">3880x</span>
2808
2967
  <span class="cline-any cline-neutral">&nbsp;</span>
2809
2968
  <span class="cline-any cline-neutral">&nbsp;</span>
2810
- <span class="cline-any cline-yes">600x</span>
2811
2969
  <span class="cline-any cline-neutral">&nbsp;</span>
2970
+ <span class="cline-any cline-no">&nbsp;</span>
2971
+ <span class="cline-any cline-no">&nbsp;</span>
2812
2972
  <span class="cline-any cline-neutral">&nbsp;</span>
2813
2973
  <span class="cline-any cline-neutral">&nbsp;</span>
2814
2974
  <span class="cline-any cline-neutral">&nbsp;</span>
2815
- <span class="cline-any cline-yes">3280x</span>
2816
2975
  <span class="cline-any cline-neutral">&nbsp;</span>
2976
+ <span class="cline-any cline-no">&nbsp;</span>
2817
2977
  <span class="cline-any cline-neutral">&nbsp;</span>
2818
- <span class="cline-any cline-yes">3280x</span>
2819
- <span class="cline-any cline-yes">3140x</span>
2820
- <span class="cline-any cline-yes">3140x</span>
2821
- <span class="cline-any cline-yes">3140x</span>
2822
- <span class="cline-any cline-yes">3140x</span>
2823
- <span class="cline-any cline-yes">3140x</span>
2978
+ <span class="cline-any cline-no">&nbsp;</span>
2824
2979
  <span class="cline-any cline-neutral">&nbsp;</span>
2980
+ <span class="cline-any cline-no">&nbsp;</span>
2825
2981
  <span class="cline-any cline-neutral">&nbsp;</span>
2826
- <span class="cline-any cline-yes">3140x</span>
2827
2982
  <span class="cline-any cline-neutral">&nbsp;</span>
2828
2983
  <span class="cline-any cline-neutral">&nbsp;</span>
2829
- <span class="cline-any cline-yes">3140x</span>
2830
2984
  <span class="cline-any cline-neutral">&nbsp;</span>
2985
+ <span class="cline-any cline-no">&nbsp;</span>
2831
2986
  <span class="cline-any cline-neutral">&nbsp;</span>
2832
2987
  <span class="cline-any cline-neutral">&nbsp;</span>
2988
+ <span class="cline-any cline-no">&nbsp;</span>
2833
2989
  <span class="cline-any cline-neutral">&nbsp;</span>
2834
- <span class="cline-any cline-yes">3140x</span>
2835
2990
  <span class="cline-any cline-neutral">&nbsp;</span>
2836
2991
  <span class="cline-any cline-neutral">&nbsp;</span>
2837
2992
  <span class="cline-any cline-neutral">&nbsp;</span>
2993
+ <span class="cline-any cline-no">&nbsp;</span>
2838
2994
  <span class="cline-any cline-neutral">&nbsp;</span>
2839
2995
  <span class="cline-any cline-neutral">&nbsp;</span>
2996
+ <span class="cline-any cline-no">&nbsp;</span>
2997
+ <span class="cline-any cline-no">&nbsp;</span>
2998
+ <span class="cline-any cline-no">&nbsp;</span>
2999
+ <span class="cline-any cline-no">&nbsp;</span>
3000
+ <span class="cline-any cline-no">&nbsp;</span>
3001
+ <span class="cline-any cline-no">&nbsp;</span>
2840
3002
  <span class="cline-any cline-neutral">&nbsp;</span>
2841
- <span class="cline-any cline-yes">591x</span>
2842
3003
  <span class="cline-any cline-neutral">&nbsp;</span>
3004
+ <span class="cline-any cline-no">&nbsp;</span>
2843
3005
  <span class="cline-any cline-neutral">&nbsp;</span>
2844
3006
  <span class="cline-any cline-neutral">&nbsp;</span>
3007
+ <span class="cline-any cline-no">&nbsp;</span>
2845
3008
  <span class="cline-any cline-neutral">&nbsp;</span>
2846
- <span class="cline-any cline-yes">2689x</span>
2847
3009
  <span class="cline-any cline-neutral">&nbsp;</span>
2848
3010
  <span class="cline-any cline-neutral">&nbsp;</span>
2849
3011
  <span class="cline-any cline-neutral">&nbsp;</span>
3012
+ <span class="cline-any cline-no">&nbsp;</span>
2850
3013
  <span class="cline-any cline-neutral">&nbsp;</span>
2851
- <span class="cline-any cline-yes">415x</span>
2852
3014
  <span class="cline-any cline-neutral">&nbsp;</span>
2853
3015
  <span class="cline-any cline-neutral">&nbsp;</span>
2854
3016
  <span class="cline-any cline-neutral">&nbsp;</span>
2855
- <span class="cline-any cline-yes">415x</span>
2856
3017
  <span class="cline-any cline-neutral">&nbsp;</span>
2857
3018
  <span class="cline-any cline-neutral">&nbsp;</span>
3019
+ <span class="cline-any cline-no">&nbsp;</span>
2858
3020
  <span class="cline-any cline-neutral">&nbsp;</span>
2859
3021
  <span class="cline-any cline-neutral">&nbsp;</span>
2860
3022
  <span class="cline-any cline-neutral">&nbsp;</span>
2861
- <span class="cline-any cline-yes">343x</span>
2862
3023
  <span class="cline-any cline-neutral">&nbsp;</span>
3024
+ <span class="cline-any cline-no">&nbsp;</span>
2863
3025
  <span class="cline-any cline-neutral">&nbsp;</span>
2864
3026
  <span class="cline-any cline-neutral">&nbsp;</span>
2865
3027
  <span class="cline-any cline-neutral">&nbsp;</span>
2866
- <span class="cline-any cline-yes">2346x</span>
2867
- <span class="cline-any cline-yes">2346x</span>
2868
- <span class="cline-any cline-yes">2346x</span>
2869
3028
  <span class="cline-any cline-neutral">&nbsp;</span>
2870
3029
  <span class="cline-any cline-neutral">&nbsp;</span>
2871
- <span class="cline-any cline-yes">2346x</span>
2872
3030
  <span class="cline-any cline-neutral">&nbsp;</span>
3031
+ <span class="cline-any cline-no">&nbsp;</span>
2873
3032
  <span class="cline-any cline-neutral">&nbsp;</span>
2874
3033
  <span class="cline-any cline-neutral">&nbsp;</span>
2875
3034
  <span class="cline-any cline-neutral">&nbsp;</span>
2876
- <span class="cline-any cline-yes">2346x</span>
2877
- <span class="cline-any cline-yes">2346x</span>
2878
- <span class="cline-any cline-yes">2346x</span>
2879
- <span class="cline-any cline-yes">2346x</span>
2880
- <span class="cline-any cline-yes">2346x</span>
3035
+ <span class="cline-any cline-no">&nbsp;</span>
2881
3036
  <span class="cline-any cline-neutral">&nbsp;</span>
2882
3037
  <span class="cline-any cline-neutral">&nbsp;</span>
2883
3038
  <span class="cline-any cline-neutral">&nbsp;</span>
2884
- <span class="cline-any cline-yes">2346x</span>
2885
- <span class="cline-any cline-yes">140x</span>
2886
- <span class="cline-any cline-yes">5x</span>
2887
3039
  <span class="cline-any cline-neutral">&nbsp;</span>
2888
- <span class="cline-any cline-yes">2206x</span>
2889
3040
  <span class="cline-any cline-neutral">&nbsp;</span>
3041
+ <span class="cline-any cline-no">&nbsp;</span>
2890
3042
  <span class="cline-any cline-neutral">&nbsp;</span>
2891
3043
  <span class="cline-any cline-neutral">&nbsp;</span>
2892
3044
  <span class="cline-any cline-neutral">&nbsp;</span>
2893
- <span class="cline-any cline-yes">110x</span>
2894
3045
  <span class="cline-any cline-neutral">&nbsp;</span>
3046
+ <span class="cline-any cline-no">&nbsp;</span>
3047
+ <span class="cline-any cline-no">&nbsp;</span>
3048
+ <span class="cline-any cline-no">&nbsp;</span>
2895
3049
  <span class="cline-any cline-neutral">&nbsp;</span>
2896
3050
  <span class="cline-any cline-neutral">&nbsp;</span>
3051
+ <span class="cline-any cline-no">&nbsp;</span>
2897
3052
  <span class="cline-any cline-neutral">&nbsp;</span>
2898
- <span class="cline-any cline-yes">101x</span>
2899
- <span class="cline-any cline-yes">101x</span>
2900
3053
  <span class="cline-any cline-neutral">&nbsp;</span>
2901
3054
  <span class="cline-any cline-neutral">&nbsp;</span>
2902
3055
  <span class="cline-any cline-neutral">&nbsp;</span>
3056
+ <span class="cline-any cline-no">&nbsp;</span>
3057
+ <span class="cline-any cline-no">&nbsp;</span>
3058
+ <span class="cline-any cline-no">&nbsp;</span>
3059
+ <span class="cline-any cline-no">&nbsp;</span>
3060
+ <span class="cline-any cline-no">&nbsp;</span>
2903
3061
  <span class="cline-any cline-neutral">&nbsp;</span>
2904
3062
  <span class="cline-any cline-neutral">&nbsp;</span>
2905
- <span class="cline-any cline-yes">9x</span>
2906
3063
  <span class="cline-any cline-neutral">&nbsp;</span>
3064
+ <span class="cline-any cline-no">&nbsp;</span>
3065
+ <span class="cline-any cline-no">&nbsp;</span>
3066
+ <span class="cline-any cline-no">&nbsp;</span>
2907
3067
  <span class="cline-any cline-neutral">&nbsp;</span>
3068
+ <span class="cline-any cline-no">&nbsp;</span>
2908
3069
  <span class="cline-any cline-neutral">&nbsp;</span>
2909
3070
  <span class="cline-any cline-neutral">&nbsp;</span>
2910
3071
  <span class="cline-any cline-neutral">&nbsp;</span>
2911
3072
  <span class="cline-any cline-neutral">&nbsp;</span>
3073
+ <span class="cline-any cline-no">&nbsp;</span>
2912
3074
  <span class="cline-any cline-neutral">&nbsp;</span>
2913
3075
  <span class="cline-any cline-neutral">&nbsp;</span>
2914
3076
  <span class="cline-any cline-neutral">&nbsp;</span>
2915
- <span class="cline-any cline-yes">9x</span>
2916
3077
  <span class="cline-any cline-neutral">&nbsp;</span>
2917
- <span class="cline-any cline-yes">9x</span>
2918
- <span class="cline-any cline-yes">1x</span>
3078
+ <span class="cline-any cline-no">&nbsp;</span>
3079
+ <span class="cline-any cline-no">&nbsp;</span>
2919
3080
  <span class="cline-any cline-neutral">&nbsp;</span>
2920
3081
  <span class="cline-any cline-neutral">&nbsp;</span>
2921
- <span class="cline-any cline-yes">9x</span>
2922
3082
  <span class="cline-any cline-neutral">&nbsp;</span>
2923
3083
  <span class="cline-any cline-neutral">&nbsp;</span>
2924
3084
  <span class="cline-any cline-neutral">&nbsp;</span>
3085
+ <span class="cline-any cline-no">&nbsp;</span>
2925
3086
  <span class="cline-any cline-neutral">&nbsp;</span>
2926
3087
  <span class="cline-any cline-neutral">&nbsp;</span>
2927
3088
  <span class="cline-any cline-neutral">&nbsp;</span>
2928
3089
  <span class="cline-any cline-neutral">&nbsp;</span>
2929
3090
  <span class="cline-any cline-neutral">&nbsp;</span>
2930
- <span class="cline-any cline-yes">9x</span>
2931
3091
  <span class="cline-any cline-neutral">&nbsp;</span>
2932
3092
  <span class="cline-any cline-neutral">&nbsp;</span>
2933
3093
  <span class="cline-any cline-neutral">&nbsp;</span>
2934
3094
  <span class="cline-any cline-neutral">&nbsp;</span>
2935
- <span class="cline-any cline-yes">1x</span>
3095
+ <span class="cline-any cline-no">&nbsp;</span>
3096
+ <span class="cline-any cline-no">&nbsp;</span>
2936
3097
  <span class="cline-any cline-neutral">&nbsp;</span>
2937
3098
  <span class="cline-any cline-neutral">&nbsp;</span>
3099
+ <span class="cline-any cline-no">&nbsp;</span>
2938
3100
  <span class="cline-any cline-neutral">&nbsp;</span>
2939
3101
  <span class="cline-any cline-neutral">&nbsp;</span>
2940
- <span class="cline-any cline-yes">2245x</span>
2941
3102
  <span class="cline-any cline-neutral">&nbsp;</span>
2942
3103
  <span class="cline-any cline-neutral">&nbsp;</span>
2943
3104
  <span class="cline-any cline-neutral">&nbsp;</span>
2944
- <span class="cline-any cline-yes">2245x</span>
2945
3105
  <span class="cline-any cline-neutral">&nbsp;</span>
2946
3106
  <span class="cline-any cline-neutral">&nbsp;</span>
2947
3107
  <span class="cline-any cline-neutral">&nbsp;</span>
3108
+ <span class="cline-any cline-no">&nbsp;</span>
2948
3109
  <span class="cline-any cline-neutral">&nbsp;</span>
2949
- <span class="cline-any cline-yes">72x</span>
3110
+ <span class="cline-any cline-no">&nbsp;</span>
2950
3111
  <span class="cline-any cline-neutral">&nbsp;</span>
2951
3112
  <span class="cline-any cline-neutral">&nbsp;</span>
3113
+ <span class="cline-any cline-no">&nbsp;</span>
2952
3114
  <span class="cline-any cline-neutral">&nbsp;</span>
3115
+ <span class="cline-any cline-no">&nbsp;</span>
2953
3116
  <span class="cline-any cline-neutral">&nbsp;</span>
2954
- <span class="cline-any cline-yes">65x</span>
2955
- <span class="cline-any cline-yes">65x</span>
2956
3117
  <span class="cline-any cline-neutral">&nbsp;</span>
2957
3118
  <span class="cline-any cline-neutral">&nbsp;</span>
2958
3119
  <span class="cline-any cline-neutral">&nbsp;</span>
2959
- <span class="cline-any cline-yes">7x</span>
2960
- <span class="cline-any cline-yes">7x</span>
3120
+ <span class="cline-any cline-no">&nbsp;</span>
2961
3121
  <span class="cline-any cline-neutral">&nbsp;</span>
2962
- <span class="cline-any cline-yes">7x</span>
2963
3122
  <span class="cline-any cline-neutral">&nbsp;</span>
2964
3123
  <span class="cline-any cline-neutral">&nbsp;</span>
3124
+ <span class="cline-any cline-no">&nbsp;</span>
2965
3125
  <span class="cline-any cline-neutral">&nbsp;</span>
2966
- <span class="cline-any cline-yes">7x</span>
2967
3126
  <span class="cline-any cline-neutral">&nbsp;</span>
2968
3127
  <span class="cline-any cline-neutral">&nbsp;</span>
2969
3128
  <span class="cline-any cline-neutral">&nbsp;</span>
3129
+ <span class="cline-any cline-no">&nbsp;</span>
2970
3130
  <span class="cline-any cline-neutral">&nbsp;</span>
2971
- <span class="cline-any cline-yes">1x</span>
2972
3131
  <span class="cline-any cline-neutral">&nbsp;</span>
2973
3132
  <span class="cline-any cline-neutral">&nbsp;</span>
2974
3133
  <span class="cline-any cline-neutral">&nbsp;</span>
2975
- <span class="cline-any cline-yes">2180x</span>
2976
- <span class="cline-any cline-yes">2180x</span>
3134
+ <span class="cline-any cline-no">&nbsp;</span>
3135
+ <span class="cline-any cline-neutral">&nbsp;</span>
3136
+ <span class="cline-any cline-neutral">&nbsp;</span>
3137
+ <span class="cline-any cline-neutral">&nbsp;</span>
3138
+ <span class="cline-any cline-neutral">&nbsp;</span>
3139
+ <span class="cline-any cline-no">&nbsp;</span>
3140
+ <span class="cline-any cline-no">&nbsp;</span>
3141
+ <span class="cline-any cline-neutral">&nbsp;</span>
3142
+ <span class="cline-any cline-neutral">&nbsp;</span>
3143
+ <span class="cline-any cline-neutral">&nbsp;</span>
3144
+ <span class="cline-any cline-no">&nbsp;</span>
3145
+ <span class="cline-any cline-no">&nbsp;</span>
3146
+ <span class="cline-any cline-neutral">&nbsp;</span>
3147
+ <span class="cline-any cline-no">&nbsp;</span>
3148
+ <span class="cline-any cline-neutral">&nbsp;</span>
3149
+ <span class="cline-any cline-neutral">&nbsp;</span>
3150
+ <span class="cline-any cline-neutral">&nbsp;</span>
3151
+ <span class="cline-any cline-no">&nbsp;</span>
3152
+ <span class="cline-any cline-neutral">&nbsp;</span>
3153
+ <span class="cline-any cline-neutral">&nbsp;</span>
3154
+ <span class="cline-any cline-neutral">&nbsp;</span>
3155
+ <span class="cline-any cline-neutral">&nbsp;</span>
3156
+ <span class="cline-any cline-no">&nbsp;</span>
3157
+ <span class="cline-any cline-neutral">&nbsp;</span>
3158
+ <span class="cline-any cline-neutral">&nbsp;</span>
3159
+ <span class="cline-any cline-neutral">&nbsp;</span>
3160
+ <span class="cline-any cline-no">&nbsp;</span>
3161
+ <span class="cline-any cline-no">&nbsp;</span>
3162
+ <span class="cline-any cline-neutral">&nbsp;</span>
3163
+ <span class="cline-any cline-no">&nbsp;</span>
3164
+ <span class="cline-any cline-neutral">&nbsp;</span>
3165
+ <span class="cline-any cline-no">&nbsp;</span>
3166
+ <span class="cline-any cline-neutral">&nbsp;</span>
3167
+ <span class="cline-any cline-neutral">&nbsp;</span>
3168
+ <span class="cline-any cline-neutral">&nbsp;</span>
3169
+ <span class="cline-any cline-neutral">&nbsp;</span>
3170
+ <span class="cline-any cline-no">&nbsp;</span>
3171
+ <span class="cline-any cline-no">&nbsp;</span>
3172
+ <span class="cline-any cline-neutral">&nbsp;</span>
3173
+ <span class="cline-any cline-neutral">&nbsp;</span>
3174
+ <span class="cline-any cline-neutral">&nbsp;</span>
3175
+ <span class="cline-any cline-neutral">&nbsp;</span>
3176
+ <span class="cline-any cline-neutral">&nbsp;</span>
3177
+ <span class="cline-any cline-neutral">&nbsp;</span>
3178
+ <span class="cline-any cline-no">&nbsp;</span>
3179
+ <span class="cline-any cline-neutral">&nbsp;</span>
3180
+ <span class="cline-any cline-neutral">&nbsp;</span>
3181
+ <span class="cline-any cline-neutral">&nbsp;</span>
3182
+ <span class="cline-any cline-neutral">&nbsp;</span>
3183
+ <span class="cline-any cline-no">&nbsp;</span>
3184
+ <span class="cline-any cline-neutral">&nbsp;</span>
3185
+ <span class="cline-any cline-neutral">&nbsp;</span>
3186
+ <span class="cline-any cline-no">&nbsp;</span>
3187
+ <span class="cline-any cline-no">&nbsp;</span>
3188
+ <span class="cline-any cline-no">&nbsp;</span>
3189
+ <span class="cline-any cline-neutral">&nbsp;</span>
3190
+ <span class="cline-any cline-neutral">&nbsp;</span>
3191
+ <span class="cline-any cline-no">&nbsp;</span>
3192
+ <span class="cline-any cline-no">&nbsp;</span>
3193
+ <span class="cline-any cline-neutral">&nbsp;</span>
3194
+ <span class="cline-any cline-neutral">&nbsp;</span>
3195
+ <span class="cline-any cline-neutral">&nbsp;</span>
3196
+ <span class="cline-any cline-neutral">&nbsp;</span>
3197
+ <span class="cline-any cline-neutral">&nbsp;</span>
3198
+ <span class="cline-any cline-neutral">&nbsp;</span>
3199
+ <span class="cline-any cline-no">&nbsp;</span>
3200
+ <span class="cline-any cline-neutral">&nbsp;</span>
3201
+ <span class="cline-any cline-no">&nbsp;</span>
3202
+ <span class="cline-any cline-no">&nbsp;</span>
3203
+ <span class="cline-any cline-no">&nbsp;</span>
3204
+ <span class="cline-any cline-neutral">&nbsp;</span>
3205
+ <span class="cline-any cline-neutral">&nbsp;</span>
3206
+ <span class="cline-any cline-no">&nbsp;</span>
3207
+ <span class="cline-any cline-neutral">&nbsp;</span>
3208
+ <span class="cline-any cline-neutral">&nbsp;</span>
3209
+ <span class="cline-any cline-neutral">&nbsp;</span>
3210
+ <span class="cline-any cline-neutral">&nbsp;</span>
3211
+ <span class="cline-any cline-neutral">&nbsp;</span>
3212
+ <span class="cline-any cline-neutral">&nbsp;</span>
3213
+ <span class="cline-any cline-neutral">&nbsp;</span>
3214
+ <span class="cline-any cline-neutral">&nbsp;</span>
3215
+ <span class="cline-any cline-neutral">&nbsp;</span>
3216
+ <span class="cline-any cline-neutral">&nbsp;</span>
3217
+ <span class="cline-any cline-no">&nbsp;</span>
3218
+ <span class="cline-any cline-neutral">&nbsp;</span>
3219
+ <span class="cline-any cline-neutral">&nbsp;</span>
3220
+ <span class="cline-any cline-neutral">&nbsp;</span>
3221
+ <span class="cline-any cline-neutral">&nbsp;</span>
3222
+ <span class="cline-any cline-neutral">&nbsp;</span>
3223
+ <span class="cline-any cline-neutral">&nbsp;</span>
3224
+ <span class="cline-any cline-neutral">&nbsp;</span>
3225
+ <span class="cline-any cline-neutral">&nbsp;</span>
3226
+ <span class="cline-any cline-neutral">&nbsp;</span>
3227
+ <span class="cline-any cline-neutral">&nbsp;</span>
3228
+ <span class="cline-any cline-neutral">&nbsp;</span>
3229
+ <span class="cline-any cline-no">&nbsp;</span>
3230
+ <span class="cline-any cline-neutral">&nbsp;</span>
2977
3231
  <span class="cline-any cline-neutral">&nbsp;</span>
2978
- <span class="cline-any cline-yes">2180x</span>
2979
3232
  <span class="cline-any cline-neutral">&nbsp;</span>
2980
- <span class="cline-any cline-yes">6740x</span>
2981
3233
  <span class="cline-any cline-neutral">&nbsp;</span>
2982
3234
  <span class="cline-any cline-neutral">&nbsp;</span>
2983
3235
  <span class="cline-any cline-neutral">&nbsp;</span>
2984
3236
  <span class="cline-any cline-neutral">&nbsp;</span>
2985
- <span class="cline-any cline-yes">2180x</span>
2986
- <span class="cline-any cline-yes">1x</span>
2987
3237
  <span class="cline-any cline-neutral">&nbsp;</span>
2988
3238
  <span class="cline-any cline-neutral">&nbsp;</span>
2989
3239
  <span class="cline-any cline-neutral">&nbsp;</span>
2990
- <span class="cline-any cline-yes">2180x</span>
2991
3240
  <span class="cline-any cline-neutral">&nbsp;</span>
2992
3241
  <span class="cline-any cline-neutral">&nbsp;</span>
2993
3242
  <span class="cline-any cline-neutral">&nbsp;</span>
2994
3243
  <span class="cline-any cline-neutral">&nbsp;</span>
2995
- <span class="cline-any cline-yes">144x</span>
2996
3244
  <span class="cline-any cline-neutral">&nbsp;</span>
2997
3245
  <span class="cline-any cline-neutral">&nbsp;</span>
2998
- <span class="cline-any cline-yes">144x</span>
2999
- <span class="cline-any cline-yes">479x</span>
3000
- <span class="cline-any cline-yes">165x</span>
3001
3246
  <span class="cline-any cline-neutral">&nbsp;</span>
3002
3247
  <span class="cline-any cline-neutral">&nbsp;</span>
3003
- <span class="cline-any cline-yes">314x</span>
3004
- <span class="cline-any cline-yes">32x</span>
3005
3248
  <span class="cline-any cline-neutral">&nbsp;</span>
3006
3249
  <span class="cline-any cline-neutral">&nbsp;</span>
3007
3250
  <span class="cline-any cline-neutral">&nbsp;</span>
3008
3251
  <span class="cline-any cline-neutral">&nbsp;</span>
3009
3252
  <span class="cline-any cline-neutral">&nbsp;</span>
3010
3253
  <span class="cline-any cline-neutral">&nbsp;</span>
3011
- <span class="cline-any cline-yes">144x</span>
3012
3254
  <span class="cline-any cline-neutral">&nbsp;</span>
3013
- <span class="cline-any cline-yes">144x</span>
3014
- <span class="cline-any cline-yes">479x</span>
3015
- <span class="cline-any cline-yes">197x</span>
3016
3255
  <span class="cline-any cline-neutral">&nbsp;</span>
3017
3256
  <span class="cline-any cline-neutral">&nbsp;</span>
3018
- <span class="cline-any cline-yes">282x</span>
3257
+ <span class="cline-any cline-no">&nbsp;</span>
3019
3258
  <span class="cline-any cline-neutral">&nbsp;</span>
3259
+ <span class="cline-any cline-no">&nbsp;</span>
3260
+ <span class="cline-any cline-no">&nbsp;</span>
3020
3261
  <span class="cline-any cline-neutral">&nbsp;</span>
3021
3262
  <span class="cline-any cline-neutral">&nbsp;</span>
3022
3263
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3026,7 +3267,6 @@
3026
3267
  <span class="cline-any cline-neutral">&nbsp;</span>
3027
3268
  <span class="cline-any cline-neutral">&nbsp;</span>
3028
3269
  <span class="cline-any cline-neutral">&nbsp;</span>
3029
- <span class="cline-any cline-yes">144x</span>
3030
3270
  <span class="cline-any cline-neutral">&nbsp;</span>
3031
3271
  <span class="cline-any cline-neutral">&nbsp;</span>
3032
3272
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3035,18 +3275,23 @@
3035
3275
  <span class="cline-any cline-neutral">&nbsp;</span>
3036
3276
  <span class="cline-any cline-neutral">&nbsp;</span>
3037
3277
  <span class="cline-any cline-neutral">&nbsp;</span>
3278
+ <span class="cline-any cline-no">&nbsp;</span>
3038
3279
  <span class="cline-any cline-neutral">&nbsp;</span>
3039
3280
  <span class="cline-any cline-neutral">&nbsp;</span>
3040
3281
  <span class="cline-any cline-neutral">&nbsp;</span>
3041
- <span class="cline-any cline-yes">4591x</span>
3042
3282
  <span class="cline-any cline-neutral">&nbsp;</span>
3043
3283
  <span class="cline-any cline-neutral">&nbsp;</span>
3044
3284
  <span class="cline-any cline-neutral">&nbsp;</span>
3045
3285
  <span class="cline-any cline-neutral">&nbsp;</span>
3046
3286
  <span class="cline-any cline-neutral">&nbsp;</span>
3287
+ <span class="cline-any cline-no">&nbsp;</span>
3288
+ <span class="cline-any cline-no">&nbsp;</span>
3289
+ <span class="cline-any cline-no">&nbsp;</span>
3047
3290
  <span class="cline-any cline-neutral">&nbsp;</span>
3048
3291
  <span class="cline-any cline-neutral">&nbsp;</span>
3049
3292
  <span class="cline-any cline-neutral">&nbsp;</span>
3293
+ <span class="cline-any cline-no">&nbsp;</span>
3294
+ <span class="cline-any cline-no">&nbsp;</span>
3050
3295
  <span class="cline-any cline-neutral">&nbsp;</span>
3051
3296
  <span class="cline-any cline-neutral">&nbsp;</span>
3052
3297
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3054,11 +3299,22 @@
3054
3299
  <span class="cline-any cline-neutral">&nbsp;</span>
3055
3300
  <span class="cline-any cline-neutral">&nbsp;</span>
3056
3301
  <span class="cline-any cline-neutral">&nbsp;</span>
3302
+ <span class="cline-any cline-no">&nbsp;</span>
3303
+ <span class="cline-any cline-no">&nbsp;</span>
3304
+ <span class="cline-any cline-no">&nbsp;</span>
3057
3305
  <span class="cline-any cline-neutral">&nbsp;</span>
3306
+ <span class="cline-any cline-no">&nbsp;</span>
3307
+ <span class="cline-any cline-no">&nbsp;</span>
3308
+ <span class="cline-any cline-no">&nbsp;</span>
3058
3309
  <span class="cline-any cline-neutral">&nbsp;</span>
3059
3310
  <span class="cline-any cline-neutral">&nbsp;</span>
3060
3311
  <span class="cline-any cline-neutral">&nbsp;</span>
3312
+ <span class="cline-any cline-no">&nbsp;</span>
3313
+ <span class="cline-any cline-no">&nbsp;</span>
3061
3314
  <span class="cline-any cline-neutral">&nbsp;</span>
3315
+ <span class="cline-any cline-no">&nbsp;</span>
3316
+ <span class="cline-any cline-no">&nbsp;</span>
3317
+ <span class="cline-any cline-no">&nbsp;</span>
3062
3318
  <span class="cline-any cline-neutral">&nbsp;</span>
3063
3319
  <span class="cline-any cline-neutral">&nbsp;</span>
3064
3320
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3066,44 +3322,58 @@
3066
3322
  <span class="cline-any cline-neutral">&nbsp;</span>
3067
3323
  <span class="cline-any cline-neutral">&nbsp;</span>
3068
3324
  <span class="cline-any cline-neutral">&nbsp;</span>
3069
- <span class="cline-any cline-yes">2x</span>
3070
3325
  <span class="cline-any cline-neutral">&nbsp;</span>
3071
- <span class="cline-any cline-yes">2x</span>
3072
- <span class="cline-any cline-yes">170x</span>
3073
3326
  <span class="cline-any cline-neutral">&nbsp;</span>
3074
3327
  <span class="cline-any cline-neutral">&nbsp;</span>
3075
3328
  <span class="cline-any cline-neutral">&nbsp;</span>
3329
+ <span class="cline-any cline-no">&nbsp;</span>
3330
+ <span class="cline-any cline-no">&nbsp;</span>
3076
3331
  <span class="cline-any cline-neutral">&nbsp;</span>
3332
+ <span class="cline-any cline-no">&nbsp;</span>
3077
3333
  <span class="cline-any cline-neutral">&nbsp;</span>
3078
3334
  <span class="cline-any cline-neutral">&nbsp;</span>
3335
+ <span class="cline-any cline-no">&nbsp;</span>
3336
+ <span class="cline-any cline-no">&nbsp;</span>
3337
+ <span class="cline-any cline-no">&nbsp;</span>
3338
+ <span class="cline-any cline-no">&nbsp;</span>
3339
+ <span class="cline-any cline-no">&nbsp;</span>
3079
3340
  <span class="cline-any cline-neutral">&nbsp;</span>
3080
3341
  <span class="cline-any cline-neutral">&nbsp;</span>
3342
+ <span class="cline-any cline-no">&nbsp;</span>
3081
3343
  <span class="cline-any cline-neutral">&nbsp;</span>
3082
3344
  <span class="cline-any cline-neutral">&nbsp;</span>
3345
+ <span class="cline-any cline-no">&nbsp;</span>
3083
3346
  <span class="cline-any cline-neutral">&nbsp;</span>
3347
+ <span class="cline-any cline-no">&nbsp;</span>
3348
+ <span class="cline-any cline-no">&nbsp;</span>
3084
3349
  <span class="cline-any cline-neutral">&nbsp;</span>
3350
+ <span class="cline-any cline-no">&nbsp;</span>
3351
+ <span class="cline-any cline-no">&nbsp;</span>
3085
3352
  <span class="cline-any cline-neutral">&nbsp;</span>
3086
3353
  <span class="cline-any cline-neutral">&nbsp;</span>
3354
+ <span class="cline-any cline-no">&nbsp;</span>
3087
3355
  <span class="cline-any cline-neutral">&nbsp;</span>
3356
+ <span class="cline-any cline-no">&nbsp;</span>
3357
+ <span class="cline-any cline-no">&nbsp;</span>
3088
3358
  <span class="cline-any cline-neutral">&nbsp;</span>
3089
3359
  <span class="cline-any cline-neutral">&nbsp;</span>
3090
- <span class="cline-any cline-yes">2x</span>
3360
+ <span class="cline-any cline-no">&nbsp;</span>
3361
+ <span class="cline-any cline-no">&nbsp;</span>
3362
+ <span class="cline-any cline-no">&nbsp;</span>
3091
3363
  <span class="cline-any cline-neutral">&nbsp;</span>
3364
+ <span class="cline-any cline-no">&nbsp;</span>
3365
+ <span class="cline-any cline-no">&nbsp;</span>
3092
3366
  <span class="cline-any cline-neutral">&nbsp;</span>
3093
3367
  <span class="cline-any cline-neutral">&nbsp;</span>
3094
3368
  <span class="cline-any cline-neutral">&nbsp;</span>
3095
3369
  <span class="cline-any cline-neutral">&nbsp;</span>
3370
+ <span class="cline-any cline-no">&nbsp;</span>
3096
3371
  <span class="cline-any cline-neutral">&nbsp;</span>
3097
3372
  <span class="cline-any cline-neutral">&nbsp;</span>
3098
3373
  <span class="cline-any cline-neutral">&nbsp;</span>
3099
- <span class="cline-any cline-yes">14x</span>
3100
- <span class="cline-any cline-yes">14x</span>
3101
- <span class="cline-any cline-yes">14x</span>
3102
3374
  <span class="cline-any cline-neutral">&nbsp;</span>
3103
3375
  <span class="cline-any cline-neutral">&nbsp;</span>
3104
3376
  <span class="cline-any cline-neutral">&nbsp;</span>
3105
- <span class="cline-any cline-yes">14x</span>
3106
- <span class="cline-any cline-yes">23x</span>
3107
3377
  <span class="cline-any cline-neutral">&nbsp;</span>
3108
3378
  <span class="cline-any cline-neutral">&nbsp;</span>
3109
3379
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3111,85 +3381,122 @@
3111
3381
  <span class="cline-any cline-neutral">&nbsp;</span>
3112
3382
  <span class="cline-any cline-neutral">&nbsp;</span>
3113
3383
  <span class="cline-any cline-neutral">&nbsp;</span>
3114
- <span class="cline-any cline-yes">23x</span>
3115
- <span class="cline-any cline-yes">9x</span>
3384
+ <span class="cline-any cline-neutral">&nbsp;</span>
3385
+ <span class="cline-any cline-no">&nbsp;</span>
3386
+ <span class="cline-any cline-neutral">&nbsp;</span>
3387
+ <span class="cline-any cline-neutral">&nbsp;</span>
3388
+ <span class="cline-any cline-neutral">&nbsp;</span>
3389
+ <span class="cline-any cline-neutral">&nbsp;</span>
3390
+ <span class="cline-any cline-neutral">&nbsp;</span>
3391
+ <span class="cline-any cline-neutral">&nbsp;</span>
3392
+ <span class="cline-any cline-neutral">&nbsp;</span>
3393
+ <span class="cline-any cline-no">&nbsp;</span>
3394
+ <span class="cline-any cline-neutral">&nbsp;</span>
3395
+ <span class="cline-any cline-neutral">&nbsp;</span>
3396
+ <span class="cline-any cline-neutral">&nbsp;</span>
3397
+ <span class="cline-any cline-neutral">&nbsp;</span>
3398
+ <span class="cline-any cline-neutral">&nbsp;</span>
3399
+ <span class="cline-any cline-neutral">&nbsp;</span>
3400
+ <span class="cline-any cline-neutral">&nbsp;</span>
3401
+ <span class="cline-any cline-neutral">&nbsp;</span>
3402
+ <span class="cline-any cline-neutral">&nbsp;</span>
3403
+ <span class="cline-any cline-neutral">&nbsp;</span>
3404
+ <span class="cline-any cline-neutral">&nbsp;</span>
3405
+ <span class="cline-any cline-neutral">&nbsp;</span>
3406
+ <span class="cline-any cline-neutral">&nbsp;</span>
3407
+ <span class="cline-any cline-neutral">&nbsp;</span>
3408
+ <span class="cline-any cline-neutral">&nbsp;</span>
3409
+ <span class="cline-any cline-neutral">&nbsp;</span>
3410
+ <span class="cline-any cline-neutral">&nbsp;</span>
3411
+ <span class="cline-any cline-neutral">&nbsp;</span>
3412
+ <span class="cline-any cline-neutral">&nbsp;</span>
3413
+ <span class="cline-any cline-neutral">&nbsp;</span>
3414
+ <span class="cline-any cline-neutral">&nbsp;</span>
3415
+ <span class="cline-any cline-no">&nbsp;</span>
3416
+ <span class="cline-any cline-neutral">&nbsp;</span>
3417
+ <span class="cline-any cline-no">&nbsp;</span>
3418
+ <span class="cline-any cline-no">&nbsp;</span>
3419
+ <span class="cline-any cline-neutral">&nbsp;</span>
3420
+ <span class="cline-any cline-neutral">&nbsp;</span>
3421
+ <span class="cline-any cline-neutral">&nbsp;</span>
3422
+ <span class="cline-any cline-neutral">&nbsp;</span>
3423
+ <span class="cline-any cline-no">&nbsp;</span>
3424
+ <span class="cline-any cline-no">&nbsp;</span>
3425
+ <span class="cline-any cline-neutral">&nbsp;</span>
3426
+ <span class="cline-any cline-neutral">&nbsp;</span>
3116
3427
  <span class="cline-any cline-yes">1x</span>
3117
3428
  <span class="cline-any cline-neutral">&nbsp;</span>
3118
- <span class="cline-any cline-yes">8x</span>
3119
- <span class="cline-any cline-yes">8x</span>
3120
- <span class="cline-any cline-yes">8x</span>
3121
3429
  <span class="cline-any cline-neutral">&nbsp;</span>
3122
3430
  <span class="cline-any cline-neutral">&nbsp;</span>
3123
3431
  <span class="cline-any cline-neutral">&nbsp;</span>
3124
- <span class="cline-any cline-yes">14x</span>
3125
- <span class="cline-any cline-yes">14x</span>
3432
+ <span class="cline-any cline-no">&nbsp;</span>
3433
+ <span class="cline-any cline-no">&nbsp;</span>
3434
+ <span class="cline-any cline-no">&nbsp;</span>
3126
3435
  <span class="cline-any cline-neutral">&nbsp;</span>
3127
- <span class="cline-any cline-yes">14x</span>
3128
- <span class="cline-any cline-yes">14x</span>
3129
- <span class="cline-any cline-yes">14x</span>
3436
+ <span class="cline-any cline-no">&nbsp;</span>
3437
+ <span class="cline-any cline-no">&nbsp;</span>
3130
3438
  <span class="cline-any cline-neutral">&nbsp;</span>
3439
+ <span class="cline-any cline-no">&nbsp;</span>
3440
+ <span class="cline-any cline-no">&nbsp;</span>
3441
+ <span class="cline-any cline-no">&nbsp;</span>
3131
3442
  <span class="cline-any cline-neutral">&nbsp;</span>
3132
3443
  <span class="cline-any cline-neutral">&nbsp;</span>
3444
+ <span class="cline-any cline-no">&nbsp;</span>
3445
+ <span class="cline-any cline-no">&nbsp;</span>
3446
+ <span class="cline-any cline-no">&nbsp;</span>
3133
3447
  <span class="cline-any cline-neutral">&nbsp;</span>
3134
3448
  <span class="cline-any cline-neutral">&nbsp;</span>
3449
+ <span class="cline-any cline-no">&nbsp;</span>
3450
+ <span class="cline-any cline-no">&nbsp;</span>
3135
3451
  <span class="cline-any cline-neutral">&nbsp;</span>
3136
3452
  <span class="cline-any cline-neutral">&nbsp;</span>
3453
+ <span class="cline-any cline-no">&nbsp;</span>
3454
+ <span class="cline-any cline-no">&nbsp;</span>
3455
+ <span class="cline-any cline-no">&nbsp;</span>
3137
3456
  <span class="cline-any cline-neutral">&nbsp;</span>
3457
+ <span class="cline-any cline-no">&nbsp;</span>
3138
3458
  <span class="cline-any cline-neutral">&nbsp;</span>
3139
3459
  <span class="cline-any cline-neutral">&nbsp;</span>
3140
3460
  <span class="cline-any cline-neutral">&nbsp;</span>
3141
3461
  <span class="cline-any cline-neutral">&nbsp;</span>
3142
3462
  <span class="cline-any cline-neutral">&nbsp;</span>
3463
+ <span class="cline-any cline-no">&nbsp;</span>
3143
3464
  <span class="cline-any cline-neutral">&nbsp;</span>
3144
3465
  <span class="cline-any cline-neutral">&nbsp;</span>
3145
3466
  <span class="cline-any cline-neutral">&nbsp;</span>
3146
3467
  <span class="cline-any cline-neutral">&nbsp;</span>
3147
3468
  <span class="cline-any cline-neutral">&nbsp;</span>
3148
- <span class="cline-any cline-yes">2x</span>
3149
3469
  <span class="cline-any cline-neutral">&nbsp;</span>
3150
3470
  <span class="cline-any cline-neutral">&nbsp;</span>
3151
3471
  <span class="cline-any cline-neutral">&nbsp;</span>
3152
3472
  <span class="cline-any cline-neutral">&nbsp;</span>
3153
- <span class="cline-any cline-yes">15x</span>
3154
- <span class="cline-any cline-yes">15x</span>
3155
- <span class="cline-any cline-yes">15x</span>
3156
3473
  <span class="cline-any cline-neutral">&nbsp;</span>
3157
- <span class="cline-any cline-yes">14x</span>
3158
- <span class="cline-any cline-yes">14x</span>
3474
+ <span class="cline-any cline-no">&nbsp;</span>
3475
+ <span class="cline-any cline-no">&nbsp;</span>
3476
+ <span class="cline-any cline-no">&nbsp;</span>
3477
+ <span class="cline-any cline-no">&nbsp;</span>
3159
3478
  <span class="cline-any cline-neutral">&nbsp;</span>
3160
- <span class="cline-any cline-yes">14x</span>
3161
- <span class="cline-any cline-yes">5x</span>
3162
3479
  <span class="cline-any cline-neutral">&nbsp;</span>
3480
+ <span class="cline-any cline-no">&nbsp;</span>
3163
3481
  <span class="cline-any cline-neutral">&nbsp;</span>
3164
3482
  <span class="cline-any cline-neutral">&nbsp;</span>
3165
- <span class="cline-any cline-yes">9x</span>
3483
+ <span class="cline-any cline-no">&nbsp;</span>
3166
3484
  <span class="cline-any cline-neutral">&nbsp;</span>
3167
- <span class="cline-any cline-yes">9x</span>
3168
- <span class="cline-any cline-yes">9x</span>
3169
- <span class="cline-any cline-yes">9x</span>
3170
3485
  <span class="cline-any cline-neutral">&nbsp;</span>
3171
3486
  <span class="cline-any cline-neutral">&nbsp;</span>
3172
- <span class="cline-any cline-yes">14x</span>
3173
- <span class="cline-any cline-yes">14x</span>
3174
- <span class="cline-any cline-yes">14x</span>
3487
+ <span class="cline-any cline-yes">1x</span>
3175
3488
  <span class="cline-any cline-neutral">&nbsp;</span>
3176
3489
  <span class="cline-any cline-neutral">&nbsp;</span>
3177
- <span class="cline-any cline-yes">14x</span>
3178
- <span class="cline-any cline-yes">14x</span>
3179
3490
  <span class="cline-any cline-neutral">&nbsp;</span>
3180
3491
  <span class="cline-any cline-neutral">&nbsp;</span>
3181
- <span class="cline-any cline-yes">140x</span>
3182
- <span class="cline-any cline-yes">140x</span>
3183
- <span class="cline-any cline-yes">140x</span>
3184
3492
  <span class="cline-any cline-neutral">&nbsp;</span>
3185
- <span class="cline-any cline-yes">140x</span>
3186
3493
  <span class="cline-any cline-neutral">&nbsp;</span>
3187
3494
  <span class="cline-any cline-neutral">&nbsp;</span>
3188
3495
  <span class="cline-any cline-neutral">&nbsp;</span>
3189
3496
  <span class="cline-any cline-neutral">&nbsp;</span>
3190
3497
  <span class="cline-any cline-neutral">&nbsp;</span>
3191
- <span class="cline-any cline-yes">140x</span>
3192
3498
  <span class="cline-any cline-neutral">&nbsp;</span>
3499
+ <span class="cline-any cline-no">&nbsp;</span>
3193
3500
  <span class="cline-any cline-neutral">&nbsp;</span>
3194
3501
  <span class="cline-any cline-neutral">&nbsp;</span>
3195
3502
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3199,20 +3506,13 @@
3199
3506
  <span class="cline-any cline-neutral">&nbsp;</span>
3200
3507
  <span class="cline-any cline-neutral">&nbsp;</span>
3201
3508
  <span class="cline-any cline-neutral">&nbsp;</span>
3202
- <span class="cline-any cline-yes">140x</span>
3203
- <span class="cline-any cline-yes">14x</span>
3204
- <span class="cline-any cline-yes">14x</span>
3205
- <span class="cline-any cline-yes">14x</span>
3206
3509
  <span class="cline-any cline-neutral">&nbsp;</span>
3207
3510
  <span class="cline-any cline-neutral">&nbsp;</span>
3208
- <span class="cline-any cline-yes">126x</span>
3209
3511
  <span class="cline-any cline-neutral">&nbsp;</span>
3210
3512
  <span class="cline-any cline-neutral">&nbsp;</span>
3211
- <span class="cline-any cline-yes">14x</span>
3212
3513
  <span class="cline-any cline-neutral">&nbsp;</span>
3213
3514
  <span class="cline-any cline-neutral">&nbsp;</span>
3214
3515
  <span class="cline-any cline-neutral">&nbsp;</span>
3215
- <span class="cline-any cline-yes">2x</span>
3216
3516
  <span class="cline-any cline-neutral">&nbsp;</span>
3217
3517
  <span class="cline-any cline-neutral">&nbsp;</span>
3218
3518
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3224,7 +3524,6 @@
3224
3524
  <span class="cline-any cline-neutral">&nbsp;</span>
3225
3525
  <span class="cline-any cline-neutral">&nbsp;</span>
3226
3526
  <span class="cline-any cline-neutral">&nbsp;</span>
3227
- <span class="cline-any cline-yes">49x</span>
3228
3527
  <span class="cline-any cline-neutral">&nbsp;</span>
3229
3528
  <span class="cline-any cline-neutral">&nbsp;</span>
3230
3529
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3256,6 +3555,7 @@
3256
3555
  <span class="cline-any cline-neutral">&nbsp;</span>
3257
3556
  <span class="cline-any cline-neutral">&nbsp;</span>
3258
3557
  <span class="cline-any cline-neutral">&nbsp;</span>
3558
+ <span class="cline-any cline-no">&nbsp;</span>
3259
3559
  <span class="cline-any cline-neutral">&nbsp;</span>
3260
3560
  <span class="cline-any cline-neutral">&nbsp;</span>
3261
3561
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3281,7 +3581,6 @@
3281
3581
  <span class="cline-any cline-neutral">&nbsp;</span>
3282
3582
  <span class="cline-any cline-neutral">&nbsp;</span>
3283
3583
  <span class="cline-any cline-neutral">&nbsp;</span>
3284
- <span class="cline-any cline-yes">15x</span>
3285
3584
  <span class="cline-any cline-neutral">&nbsp;</span>
3286
3585
  <span class="cline-any cline-neutral">&nbsp;</span>
3287
3586
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3292,11 +3591,23 @@
3292
3591
  <span class="cline-any cline-neutral">&nbsp;</span>
3293
3592
  <span class="cline-any cline-neutral">&nbsp;</span>
3294
3593
  <span class="cline-any cline-neutral">&nbsp;</span>
3594
+ <span class="cline-any cline-no">&nbsp;</span>
3595
+ <span class="cline-any cline-no">&nbsp;</span>
3596
+ <span class="cline-any cline-no">&nbsp;</span>
3295
3597
  <span class="cline-any cline-neutral">&nbsp;</span>
3296
3598
  <span class="cline-any cline-neutral">&nbsp;</span>
3599
+ <span class="cline-any cline-no">&nbsp;</span>
3600
+ <span class="cline-any cline-no">&nbsp;</span>
3601
+ <span class="cline-any cline-no">&nbsp;</span>
3297
3602
  <span class="cline-any cline-neutral">&nbsp;</span>
3298
3603
  <span class="cline-any cline-neutral">&nbsp;</span>
3604
+ <span class="cline-any cline-no">&nbsp;</span>
3605
+ <span class="cline-any cline-no">&nbsp;</span>
3606
+ <span class="cline-any cline-no">&nbsp;</span>
3607
+ <span class="cline-any cline-no">&nbsp;</span>
3299
3608
  <span class="cline-any cline-neutral">&nbsp;</span>
3609
+ <span class="cline-any cline-no">&nbsp;</span>
3610
+ <span class="cline-any cline-no">&nbsp;</span>
3300
3611
  <span class="cline-any cline-neutral">&nbsp;</span>
3301
3612
  <span class="cline-any cline-neutral">&nbsp;</span>
3302
3613
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3306,172 +3617,174 @@
3306
3617
  <span class="cline-any cline-neutral">&nbsp;</span>
3307
3618
  <span class="cline-any cline-neutral">&nbsp;</span>
3308
3619
  <span class="cline-any cline-neutral">&nbsp;</span>
3620
+ <span class="cline-any cline-no">&nbsp;</span>
3621
+ <span class="cline-any cline-no">&nbsp;</span>
3309
3622
  <span class="cline-any cline-neutral">&nbsp;</span>
3623
+ <span class="cline-any cline-no">&nbsp;</span>
3310
3624
  <span class="cline-any cline-neutral">&nbsp;</span>
3625
+ <span class="cline-any cline-no">&nbsp;</span>
3311
3626
  <span class="cline-any cline-neutral">&nbsp;</span>
3312
3627
  <span class="cline-any cline-neutral">&nbsp;</span>
3313
3628
  <span class="cline-any cline-neutral">&nbsp;</span>
3629
+ <span class="cline-any cline-no">&nbsp;</span>
3314
3630
  <span class="cline-any cline-neutral">&nbsp;</span>
3315
3631
  <span class="cline-any cline-neutral">&nbsp;</span>
3316
3632
  <span class="cline-any cline-neutral">&nbsp;</span>
3633
+ <span class="cline-any cline-no">&nbsp;</span>
3317
3634
  <span class="cline-any cline-neutral">&nbsp;</span>
3318
3635
  <span class="cline-any cline-neutral">&nbsp;</span>
3319
3636
  <span class="cline-any cline-neutral">&nbsp;</span>
3320
- <span class="cline-any cline-yes">17x</span>
3321
- <span class="cline-any cline-yes">17x</span>
3322
- <span class="cline-any cline-yes">17x</span>
3323
3637
  <span class="cline-any cline-neutral">&nbsp;</span>
3324
3638
  <span class="cline-any cline-neutral">&nbsp;</span>
3325
- <span class="cline-any cline-yes">3x</span>
3326
- <span class="cline-any cline-yes">3x</span>
3327
- <span class="cline-any cline-yes">3x</span>
3328
3639
  <span class="cline-any cline-neutral">&nbsp;</span>
3329
3640
  <span class="cline-any cline-neutral">&nbsp;</span>
3641
+ <span class="cline-any cline-no">&nbsp;</span>
3642
+ <span class="cline-any cline-no">&nbsp;</span>
3643
+ <span class="cline-any cline-no">&nbsp;</span>
3330
3644
  <span class="cline-any cline-neutral">&nbsp;</span>
3331
3645
  <span class="cline-any cline-neutral">&nbsp;</span>
3646
+ <span class="cline-any cline-no">&nbsp;</span>
3332
3647
  <span class="cline-any cline-neutral">&nbsp;</span>
3648
+ <span class="cline-any cline-no">&nbsp;</span>
3333
3649
  <span class="cline-any cline-neutral">&nbsp;</span>
3334
3650
  <span class="cline-any cline-neutral">&nbsp;</span>
3335
- <span class="cline-any cline-yes">2x</span>
3336
- <span class="cline-any cline-yes">2x</span>
3337
- <span class="cline-any cline-yes">2x</span>
3338
3651
  <span class="cline-any cline-neutral">&nbsp;</span>
3652
+ <span class="cline-any cline-no">&nbsp;</span>
3339
3653
  <span class="cline-any cline-neutral">&nbsp;</span>
3340
- <span class="cline-any cline-yes">2x</span>
3341
3654
  <span class="cline-any cline-neutral">&nbsp;</span>
3342
- <span class="cline-any cline-yes">2x</span>
3655
+ <span class="cline-any cline-no">&nbsp;</span>
3343
3656
  <span class="cline-any cline-neutral">&nbsp;</span>
3344
3657
  <span class="cline-any cline-neutral">&nbsp;</span>
3345
3658
  <span class="cline-any cline-neutral">&nbsp;</span>
3346
- <span class="cline-any cline-yes">2x</span>
3347
3659
  <span class="cline-any cline-neutral">&nbsp;</span>
3348
3660
  <span class="cline-any cline-neutral">&nbsp;</span>
3349
- <span class="cline-any cline-yes">2x</span>
3350
3661
  <span class="cline-any cline-neutral">&nbsp;</span>
3662
+ <span class="cline-any cline-no">&nbsp;</span>
3351
3663
  <span class="cline-any cline-neutral">&nbsp;</span>
3352
3664
  <span class="cline-any cline-neutral">&nbsp;</span>
3353
3665
  <span class="cline-any cline-neutral">&nbsp;</span>
3354
3666
  <span class="cline-any cline-neutral">&nbsp;</span>
3667
+ <span class="cline-any cline-no">&nbsp;</span>
3668
+ <span class="cline-any cline-no">&nbsp;</span>
3355
3669
  <span class="cline-any cline-neutral">&nbsp;</span>
3356
- <span class="cline-any cline-yes">2x</span>
3670
+ <span class="cline-any cline-no">&nbsp;</span>
3671
+ <span class="cline-any cline-no">&nbsp;</span>
3357
3672
  <span class="cline-any cline-neutral">&nbsp;</span>
3673
+ <span class="cline-any cline-no">&nbsp;</span>
3674
+ <span class="cline-any cline-no">&nbsp;</span>
3358
3675
  <span class="cline-any cline-neutral">&nbsp;</span>
3359
3676
  <span class="cline-any cline-neutral">&nbsp;</span>
3677
+ <span class="cline-any cline-no">&nbsp;</span>
3360
3678
  <span class="cline-any cline-neutral">&nbsp;</span>
3361
- <span class="cline-any cline-yes">14x</span>
3362
- <span class="cline-any cline-yes">14x</span>
3363
3679
  <span class="cline-any cline-neutral">&nbsp;</span>
3364
- <span class="cline-any cline-yes">14x</span>
3365
- <span class="cline-any cline-yes">14x</span>
3366
3680
  <span class="cline-any cline-neutral">&nbsp;</span>
3367
- <span class="cline-any cline-yes">14x</span>
3368
- <span class="cline-any cline-yes">9x</span>
3681
+ <span class="cline-any cline-no">&nbsp;</span>
3369
3682
  <span class="cline-any cline-neutral">&nbsp;</span>
3683
+ <span class="cline-any cline-no">&nbsp;</span>
3684
+ <span class="cline-any cline-no">&nbsp;</span>
3370
3685
  <span class="cline-any cline-neutral">&nbsp;</span>
3371
- <span class="cline-any cline-yes">14x</span>
3686
+ <span class="cline-any cline-no">&nbsp;</span>
3372
3687
  <span class="cline-any cline-neutral">&nbsp;</span>
3373
3688
  <span class="cline-any cline-neutral">&nbsp;</span>
3374
3689
  <span class="cline-any cline-neutral">&nbsp;</span>
3375
3690
  <span class="cline-any cline-neutral">&nbsp;</span>
3376
- <span class="cline-any cline-yes">42x</span>
3377
- <span class="cline-any cline-yes">42x</span>
3691
+ <span class="cline-any cline-no">&nbsp;</span>
3378
3692
  <span class="cline-any cline-neutral">&nbsp;</span>
3693
+ <span class="cline-any cline-no">&nbsp;</span>
3379
3694
  <span class="cline-any cline-neutral">&nbsp;</span>
3695
+ <span class="cline-any cline-no">&nbsp;</span>
3696
+ <span class="cline-any cline-no">&nbsp;</span>
3380
3697
  <span class="cline-any cline-neutral">&nbsp;</span>
3698
+ <span class="cline-any cline-no">&nbsp;</span>
3699
+ <span class="cline-any cline-no">&nbsp;</span>
3381
3700
  <span class="cline-any cline-neutral">&nbsp;</span>
3382
- <span class="cline-any cline-yes">41x</span>
3383
3701
  <span class="cline-any cline-neutral">&nbsp;</span>
3384
- <span class="cline-any cline-yes">41x</span>
3702
+ <span class="cline-any cline-no">&nbsp;</span>
3385
3703
  <span class="cline-any cline-neutral">&nbsp;</span>
3386
- <span class="cline-any cline-yes">41x</span>
3387
- <span class="cline-any cline-yes">289x</span>
3388
3704
  <span class="cline-any cline-neutral">&nbsp;</span>
3389
- <span class="cline-any cline-yes">129x</span>
3390
- <span class="cline-any cline-yes">44x</span>
3391
3705
  <span class="cline-any cline-neutral">&nbsp;</span>
3392
3706
  <span class="cline-any cline-neutral">&nbsp;</span>
3393
- <span class="cline-any cline-yes">85x</span>
3707
+ <span class="cline-any cline-no">&nbsp;</span>
3394
3708
  <span class="cline-any cline-neutral">&nbsp;</span>
3395
3709
  <span class="cline-any cline-neutral">&nbsp;</span>
3396
3710
  <span class="cline-any cline-neutral">&nbsp;</span>
3397
3711
  <span class="cline-any cline-neutral">&nbsp;</span>
3398
- <span class="cline-any cline-yes">41x</span>
3712
+ <span class="cline-any cline-no">&nbsp;</span>
3713
+ <span class="cline-any cline-no">&nbsp;</span>
3399
3714
  <span class="cline-any cline-neutral">&nbsp;</span>
3400
3715
  <span class="cline-any cline-neutral">&nbsp;</span>
3401
3716
  <span class="cline-any cline-neutral">&nbsp;</span>
3402
3717
  <span class="cline-any cline-neutral">&nbsp;</span>
3403
- <span class="cline-any cline-yes">1x</span>
3404
- <span class="cline-any cline-yes">1x</span>
3718
+ <span class="cline-any cline-no">&nbsp;</span>
3405
3719
  <span class="cline-any cline-neutral">&nbsp;</span>
3720
+ <span class="cline-any cline-no">&nbsp;</span>
3406
3721
  <span class="cline-any cline-neutral">&nbsp;</span>
3407
3722
  <span class="cline-any cline-neutral">&nbsp;</span>
3408
3723
  <span class="cline-any cline-neutral">&nbsp;</span>
3409
- <span class="cline-any cline-yes">68x</span>
3410
3724
  <span class="cline-any cline-neutral">&nbsp;</span>
3411
- <span class="cline-any cline-yes">68x</span>
3412
3725
  <span class="cline-any cline-neutral">&nbsp;</span>
3413
3726
  <span class="cline-any cline-neutral">&nbsp;</span>
3414
3727
  <span class="cline-any cline-neutral">&nbsp;</span>
3415
3728
  <span class="cline-any cline-neutral">&nbsp;</span>
3729
+ <span class="cline-any cline-no">&nbsp;</span>
3416
3730
  <span class="cline-any cline-neutral">&nbsp;</span>
3731
+ <span class="cline-any cline-no">&nbsp;</span>
3417
3732
  <span class="cline-any cline-neutral">&nbsp;</span>
3733
+ <span class="cline-any cline-no">&nbsp;</span>
3418
3734
  <span class="cline-any cline-neutral">&nbsp;</span>
3419
3735
  <span class="cline-any cline-neutral">&nbsp;</span>
3420
- <span class="cline-any cline-yes">4x</span>
3421
3736
  <span class="cline-any cline-neutral">&nbsp;</span>
3422
- <span class="cline-any cline-yes">4x</span>
3423
3737
  <span class="cline-any cline-neutral">&nbsp;</span>
3424
- <span class="cline-any cline-yes">4x</span>
3738
+ <span class="cline-any cline-no">&nbsp;</span>
3739
+ <span class="cline-any cline-no">&nbsp;</span>
3740
+ <span class="cline-any cline-no">&nbsp;</span>
3425
3741
  <span class="cline-any cline-neutral">&nbsp;</span>
3742
+ <span class="cline-any cline-no">&nbsp;</span>
3426
3743
  <span class="cline-any cline-neutral">&nbsp;</span>
3427
3744
  <span class="cline-any cline-neutral">&nbsp;</span>
3745
+ <span class="cline-any cline-no">&nbsp;</span>
3428
3746
  <span class="cline-any cline-neutral">&nbsp;</span>
3429
- <span class="cline-any cline-yes">1x</span>
3430
- <span class="cline-any cline-yes">3x</span>
3431
- <span class="cline-any cline-yes">1x</span>
3432
3747
  <span class="cline-any cline-neutral">&nbsp;</span>
3433
- <span class="cline-any cline-yes">2x</span>
3434
3748
  <span class="cline-any cline-neutral">&nbsp;</span>
3435
3749
  <span class="cline-any cline-neutral">&nbsp;</span>
3436
- <span class="cline-any cline-yes">4x</span>
3750
+ <span class="cline-any cline-no">&nbsp;</span>
3751
+ <span class="cline-any cline-no">&nbsp;</span>
3437
3752
  <span class="cline-any cline-neutral">&nbsp;</span>
3753
+ <span class="cline-any cline-no">&nbsp;</span>
3754
+ <span class="cline-any cline-no">&nbsp;</span>
3438
3755
  <span class="cline-any cline-neutral">&nbsp;</span>
3756
+ <span class="cline-any cline-no">&nbsp;</span>
3757
+ <span class="cline-any cline-no">&nbsp;</span>
3439
3758
  <span class="cline-any cline-neutral">&nbsp;</span>
3440
3759
  <span class="cline-any cline-neutral">&nbsp;</span>
3441
- <span class="cline-any cline-yes">4x</span>
3442
- <span class="cline-any cline-yes">18x</span>
3760
+ <span class="cline-any cline-no">&nbsp;</span>
3443
3761
  <span class="cline-any cline-neutral">&nbsp;</span>
3444
- <span class="cline-any cline-yes">4x</span>
3445
- <span class="cline-any cline-yes">4x</span>
3446
3762
  <span class="cline-any cline-neutral">&nbsp;</span>
3447
- <span class="cline-any cline-yes">16x</span>
3448
- <span class="cline-any cline-yes">8x</span>
3449
3763
  <span class="cline-any cline-neutral">&nbsp;</span>
3764
+ <span class="cline-any cline-no">&nbsp;</span>
3450
3765
  <span class="cline-any cline-neutral">&nbsp;</span>
3451
- <span class="cline-any cline-yes">8x</span>
3452
3766
  <span class="cline-any cline-neutral">&nbsp;</span>
3453
3767
  <span class="cline-any cline-neutral">&nbsp;</span>
3454
3768
  <span class="cline-any cline-neutral">&nbsp;</span>
3455
- <span class="cline-any cline-yes">4x</span>
3456
3769
  <span class="cline-any cline-neutral">&nbsp;</span>
3457
3770
  <span class="cline-any cline-neutral">&nbsp;</span>
3771
+ <span class="cline-any cline-no">&nbsp;</span>
3458
3772
  <span class="cline-any cline-neutral">&nbsp;</span>
3459
3773
  <span class="cline-any cline-neutral">&nbsp;</span>
3460
3774
  <span class="cline-any cline-neutral">&nbsp;</span>
3461
3775
  <span class="cline-any cline-neutral">&nbsp;</span>
3462
- <span class="cline-any cline-yes">4x</span>
3776
+ <span class="cline-any cline-no">&nbsp;</span>
3463
3777
  <span class="cline-any cline-neutral">&nbsp;</span>
3464
3778
  <span class="cline-any cline-neutral">&nbsp;</span>
3779
+ <span class="cline-any cline-no">&nbsp;</span>
3465
3780
  <span class="cline-any cline-neutral">&nbsp;</span>
3466
3781
  <span class="cline-any cline-neutral">&nbsp;</span>
3467
- <span class="cline-any cline-yes">37x</span>
3468
3782
  <span class="cline-any cline-neutral">&nbsp;</span>
3783
+ <span class="cline-any cline-no">&nbsp;</span>
3469
3784
  <span class="cline-any cline-neutral">&nbsp;</span>
3470
- <span class="cline-any cline-yes">37x</span>
3471
3785
  <span class="cline-any cline-neutral">&nbsp;</span>
3472
3786
  <span class="cline-any cline-neutral">&nbsp;</span>
3473
3787
  <span class="cline-any cline-neutral">&nbsp;</span>
3474
- <span class="cline-any cline-yes">37x</span>
3475
3788
  <span class="cline-any cline-neutral">&nbsp;</span>
3476
3789
  <span class="cline-any cline-neutral">&nbsp;</span>
3477
3790
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3479,82 +3792,85 @@
3479
3792
  <span class="cline-any cline-neutral">&nbsp;</span>
3480
3793
  <span class="cline-any cline-neutral">&nbsp;</span>
3481
3794
  <span class="cline-any cline-neutral">&nbsp;</span>
3795
+ <span class="cline-any cline-no">&nbsp;</span>
3796
+ <span class="cline-any cline-no">&nbsp;</span>
3797
+ <span class="cline-any cline-no">&nbsp;</span>
3482
3798
  <span class="cline-any cline-neutral">&nbsp;</span>
3799
+ <span class="cline-any cline-no">&nbsp;</span>
3483
3800
  <span class="cline-any cline-neutral">&nbsp;</span>
3801
+ <span class="cline-any cline-no">&nbsp;</span>
3802
+ <span class="cline-any cline-no">&nbsp;</span>
3484
3803
  <span class="cline-any cline-neutral">&nbsp;</span>
3485
3804
  <span class="cline-any cline-neutral">&nbsp;</span>
3486
- <span class="cline-any cline-yes">12x</span>
3487
- <span class="cline-any cline-yes">12x</span>
3488
- <span class="cline-any cline-yes">42x</span>
3805
+ <span class="cline-any cline-no">&nbsp;</span>
3806
+ <span class="cline-any cline-no">&nbsp;</span>
3489
3807
  <span class="cline-any cline-neutral">&nbsp;</span>
3490
- <span class="cline-any cline-yes">12x</span>
3491
3808
  <span class="cline-any cline-neutral">&nbsp;</span>
3492
- <span class="cline-any cline-yes">12x</span>
3493
- <span class="cline-any cline-yes">2x</span>
3494
3809
  <span class="cline-any cline-neutral">&nbsp;</span>
3810
+ <span class="cline-any cline-no">&nbsp;</span>
3495
3811
  <span class="cline-any cline-neutral">&nbsp;</span>
3496
- <span class="cline-any cline-yes">53x</span>
3497
- <span class="cline-any cline-yes">10x</span>
3812
+ <span class="cline-any cline-no">&nbsp;</span>
3498
3813
  <span class="cline-any cline-neutral">&nbsp;</span>
3499
3814
  <span class="cline-any cline-neutral">&nbsp;</span>
3500
3815
  <span class="cline-any cline-neutral">&nbsp;</span>
3501
- <span class="cline-any cline-yes">10x</span>
3816
+ <span class="cline-any cline-no">&nbsp;</span>
3502
3817
  <span class="cline-any cline-neutral">&nbsp;</span>
3503
- <span class="cline-any cline-yes">10x</span>
3504
3818
  <span class="cline-any cline-neutral">&nbsp;</span>
3819
+ <span class="cline-any cline-no">&nbsp;</span>
3820
+ <span class="cline-any cline-no">&nbsp;</span>
3505
3821
  <span class="cline-any cline-neutral">&nbsp;</span>
3506
3822
  <span class="cline-any cline-neutral">&nbsp;</span>
3507
- <span class="cline-any cline-yes">105x</span>
3508
3823
  <span class="cline-any cline-neutral">&nbsp;</span>
3824
+ <span class="cline-any cline-no">&nbsp;</span>
3509
3825
  <span class="cline-any cline-neutral">&nbsp;</span>
3510
- <span class="cline-any cline-yes">4279x</span>
3511
- <span class="cline-any cline-yes">4279x</span>
3512
3826
  <span class="cline-any cline-neutral">&nbsp;</span>
3827
+ <span class="cline-any cline-no">&nbsp;</span>
3828
+ <span class="cline-any cline-no">&nbsp;</span>
3513
3829
  <span class="cline-any cline-neutral">&nbsp;</span>
3514
3830
  <span class="cline-any cline-neutral">&nbsp;</span>
3515
- <span class="cline-any cline-yes">102x</span>
3516
3831
  <span class="cline-any cline-neutral">&nbsp;</span>
3517
3832
  <span class="cline-any cline-neutral">&nbsp;</span>
3518
- <span class="cline-any cline-yes">140x</span>
3519
- <span class="cline-any cline-yes">140x</span>
3520
3833
  <span class="cline-any cline-neutral">&nbsp;</span>
3521
3834
  <span class="cline-any cline-neutral">&nbsp;</span>
3522
3835
  <span class="cline-any cline-neutral">&nbsp;</span>
3523
3836
  <span class="cline-any cline-neutral">&nbsp;</span>
3524
3837
  <span class="cline-any cline-neutral">&nbsp;</span>
3525
3838
  <span class="cline-any cline-neutral">&nbsp;</span>
3839
+ <span class="cline-any cline-no">&nbsp;</span>
3526
3840
  <span class="cline-any cline-neutral">&nbsp;</span>
3841
+ <span class="cline-any cline-no">&nbsp;</span>
3842
+ <span class="cline-any cline-no">&nbsp;</span>
3843
+ <span class="cline-any cline-no">&nbsp;</span>
3844
+ <span class="cline-any cline-no">&nbsp;</span>
3527
3845
  <span class="cline-any cline-neutral">&nbsp;</span>
3528
3846
  <span class="cline-any cline-neutral">&nbsp;</span>
3529
3847
  <span class="cline-any cline-neutral">&nbsp;</span>
3530
- <span class="cline-any cline-yes">3x</span>
3531
3848
  <span class="cline-any cline-neutral">&nbsp;</span>
3532
- <span class="cline-any cline-yes">3x</span>
3533
- <span class="cline-any cline-yes">2x</span>
3534
- <span class="cline-any cline-yes">2x</span>
3535
- <span class="cline-any cline-yes">2x</span>
3849
+ <span class="cline-any cline-no">&nbsp;</span>
3850
+ <span class="cline-any cline-no">&nbsp;</span>
3536
3851
  <span class="cline-any cline-neutral">&nbsp;</span>
3537
3852
  <span class="cline-any cline-neutral">&nbsp;</span>
3538
3853
  <span class="cline-any cline-neutral">&nbsp;</span>
3854
+ <span class="cline-any cline-no">&nbsp;</span>
3539
3855
  <span class="cline-any cline-neutral">&nbsp;</span>
3540
- <span class="cline-any cline-yes">2x</span>
3541
- <span class="cline-any cline-yes">2x</span>
3542
3856
  <span class="cline-any cline-neutral">&nbsp;</span>
3543
3857
  <span class="cline-any cline-neutral">&nbsp;</span>
3544
3858
  <span class="cline-any cline-neutral">&nbsp;</span>
3545
- <span class="cline-any cline-yes">2x</span>
3546
3859
  <span class="cline-any cline-neutral">&nbsp;</span>
3547
3860
  <span class="cline-any cline-neutral">&nbsp;</span>
3548
3861
  <span class="cline-any cline-neutral">&nbsp;</span>
3549
3862
  <span class="cline-any cline-neutral">&nbsp;</span>
3550
3863
  <span class="cline-any cline-neutral">&nbsp;</span>
3864
+ <span class="cline-any cline-no">&nbsp;</span>
3865
+ <span class="cline-any cline-no">&nbsp;</span>
3866
+ <span class="cline-any cline-no">&nbsp;</span>
3551
3867
  <span class="cline-any cline-neutral">&nbsp;</span>
3552
3868
  <span class="cline-any cline-neutral">&nbsp;</span>
3553
3869
  <span class="cline-any cline-neutral">&nbsp;</span>
3554
3870
  <span class="cline-any cline-neutral">&nbsp;</span>
3555
- <span class="cline-any cline-yes">4479x</span>
3556
- <span class="cline-any cline-yes">13784x</span>
3557
- <span class="cline-any cline-yes">9134x</span>
3871
+ <span class="cline-any cline-no">&nbsp;</span>
3872
+ <span class="cline-any cline-neutral">&nbsp;</span>
3873
+ <span class="cline-any cline-no">&nbsp;</span>
3558
3874
  <span class="cline-any cline-neutral">&nbsp;</span>
3559
3875
  <span class="cline-any cline-neutral">&nbsp;</span>
3560
3876
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3606,12 +3922,12 @@ export interface ParsedPixelUnit {
3606
3922
  &nbsp;
3607
3923
  type ParsedUnit = ParsedPercentUnit | ParsedPixelUnit;
3608
3924
  &nbsp;
3609
- export function makePercentUnit(value: number): ParsedPercentUnit {
3610
- return { type: "percent", value: new Big(value) };
3925
+ export function <span class="fstat-no" title="function not covered" >makePercentUnit(v</span>alue: number): ParsedPercentUnit {
3926
+ <span class="cstat-no" title="statement not covered" > return { type: "percent", value: new Big(value) };</span>
3611
3927
  }
3612
3928
  &nbsp;
3613
- export function makePixelUnit(value: number): ParsedPixelUnit {
3614
- return { type: "pixel", value: new Big(value) };
3929
+ export function <span class="fstat-no" title="function not covered" >makePixelUnit(v</span>alue: number): ParsedPixelUnit {
3930
+ <span class="cstat-no" title="statement not covered" > return { type: "pixel", value: new Big(value) };</span>
3615
3931
  }
3616
3932
  &nbsp;
3617
3933
  interface MoveMoveEvent {
@@ -3681,40 +3997,40 @@ export interface PanelData
3681
3997
  | { duration: number; easing: CollapseAnimation | ((t: number) =&gt; number) };
3682
3998
  }
3683
3999
  &nbsp;
3684
- function getCollapseAnimation(panel: PanelData) {
3685
- let easeFn = collapseAnimations.linear;
3686
- let duration = 300;
4000
+ function <span class="fstat-no" title="function not covered" >getCollapseAnimation(p</span>anel: PanelData) {
4001
+ let easeFn = <span class="cstat-no" title="statement not covered" >collapseAnimations.linear;</span>
4002
+ let duration = <span class="cstat-no" title="statement not covered" >300;</span>
3687
4003
  &nbsp;
3688
- if (panel.collapseAnimation) {
3689
- if (typeof panel.collapseAnimation === "string") {
3690
- easeFn = collapseAnimations[panel.collapseAnimation];
4004
+ <span class="cstat-no" title="statement not covered" > if (panel.collapseAnimation) {</span>
4005
+ <span class="cstat-no" title="statement not covered" > if (typeof panel.collapseAnimation === "string") {</span>
4006
+ <span class="cstat-no" title="statement not covered" > easeFn = collapseAnimations[panel.collapseAnimation];</span>
3691
4007
  } else {
3692
- duration = panel.collapseAnimation.duration;
3693
- easeFn =
4008
+ <span class="cstat-no" title="statement not covered" > duration = panel.collapseAnimation.duration;</span>
4009
+ <span class="cstat-no" title="statement not covered" > easeFn =</span>
3694
4010
  typeof panel.collapseAnimation.easing === "function"
3695
4011
  ? panel.collapseAnimation.easing
3696
4012
  : collapseAnimations[panel.collapseAnimation.easing];
3697
4013
  }
3698
4014
  }
3699
4015
  &nbsp;
3700
- return { ease: easeFn, duration };
4016
+ <span class="cstat-no" title="statement not covered" > return { ease: easeFn, duration };</span>
3701
4017
  }
3702
4018
  &nbsp;
3703
4019
  /** Copied from https://github.com/d3/d3-ease */
3704
4020
  const collapseAnimations = {
3705
- "ease-in-out": function quadInOut(t: number) {
3706
- return ((t *= 2) &lt;= 1 ? t * t : --t * (2 - t) + 1) / 2;
4021
+ "ease-in-out": function <span class="fstat-no" title="function not covered" >quadInOut(t</span>: number) {
4022
+ <span class="cstat-no" title="statement not covered" > return ((t *= 2) &lt;= 1 ? t * t : --t * (2 - t) + 1) / 2;</span>
3707
4023
  },
3708
- bounce: function backInOut(t: number) {
3709
- const s = 1.70158;
3710
- return (
4024
+ bounce: function <span class="fstat-no" title="function not covered" >backInOut(t</span>: number) {
4025
+ const s = <span class="cstat-no" title="statement not covered" >1.70158;</span>
4026
+ <span class="cstat-no" title="statement not covered" > return (</span>
3711
4027
  ((t *= 2) &lt; 1
3712
4028
  ? t * t * ((s + 1) * t - s)
3713
4029
  : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2
3714
4030
  );
3715
4031
  },
3716
- linear: function linear(t: number) {
3717
- return +t;
4032
+ linear: function <span class="fstat-no" title="function not covered" >linear(t</span>: number) {
4033
+ <span class="cstat-no" title="statement not covered" > return +t;</span>
3718
4034
  },
3719
4035
  };
3720
4036
  &nbsp;
@@ -3799,6 +4115,7 @@ interface SetSizeEvent {
3799
4115
  /** Set the size of the whole group */
3800
4116
  type: "setSize";
3801
4117
  size: Rect;
4118
+ handleOverflow?: boolean;
3802
4119
  }
3803
4120
  &nbsp;
3804
4121
  interface SetActualItemsSizeEvent {
@@ -3893,66 +4210,66 @@ type EventForType&lt;T extends GroupMachineEvent["type"]&gt; = Extract&lt;
3893
4210
  &nbsp;
3894
4211
  // #region Helpers
3895
4212
  &nbsp;
3896
- export function getCursor(
4213
+ export function <span class="fstat-no" title="function not covered" >getCursor(</span>
3897
4214
  context: Pick&lt;GroupMachineContextValue, "dragOvershoot" | "orientation"&gt;
3898
4215
  ) {
3899
- if (context.orientation === "horizontal") {
3900
- if (context.dragOvershoot.gt(0)) {
3901
- return "w-resize";
3902
- } else if (context.dragOvershoot.lt(0)) {
3903
- return "e-resize";
4216
+ <span class="cstat-no" title="statement not covered" > if (context.orientation === "horizontal") {</span>
4217
+ <span class="cstat-no" title="statement not covered" > if (context.dragOvershoot.gt(0)) {</span>
4218
+ <span class="cstat-no" title="statement not covered" > return "w-resize";</span>
4219
+ <span class="cstat-no" title="statement not covered" > } else if (context.dragOvershoot.lt(0)) {</span>
4220
+ <span class="cstat-no" title="statement not covered" > return "e-resize";</span>
3904
4221
  } else {
3905
- return "ew-resize";
4222
+ <span class="cstat-no" title="statement not covered" > return "ew-resize";</span>
3906
4223
  }
3907
4224
  } else {
3908
- if (context.dragOvershoot.gt(0)) {
3909
- return "n-resize";
3910
- } else if (context.dragOvershoot.lt(0)) {
3911
- return "s-resize";
4225
+ <span class="cstat-no" title="statement not covered" > if (context.dragOvershoot.gt(0)) {</span>
4226
+ <span class="cstat-no" title="statement not covered" > return "n-resize";</span>
4227
+ <span class="cstat-no" title="statement not covered" > } else if (context.dragOvershoot.lt(0)) {</span>
4228
+ <span class="cstat-no" title="statement not covered" > return "s-resize";</span>
3912
4229
  } else {
3913
- return "ns-resize";
4230
+ <span class="cstat-no" title="statement not covered" > return "ns-resize";</span>
3914
4231
  }
3915
4232
  }
3916
4233
  }
3917
4234
  &nbsp;
3918
- export function prepareSnapshot(snapshot: Snapshot&lt;unknown&gt;) {
4235
+ export function <span class="fstat-no" title="function not covered" >prepareSnapshot(s</span>napshot: Snapshot&lt;unknown&gt;) {
3919
4236
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3920
- const snapshotContext = (snapshot as any)
4237
+ const snapshotContext = (<span class="cstat-no" title="statement not covered" >snapshot as any)</span>
3921
4238
  .context as unknown as GroupMachineContextValue;
3922
4239
  &nbsp;
3923
- snapshotContext.dragOvershoot = new Big(snapshotContext.dragOvershoot);
4240
+ <span class="cstat-no" title="statement not covered" > snapshotContext.dragOvershoot = new Big(snapshotContext.dragOvershoot);</span>
3924
4241
  &nbsp;
3925
- for (const item of snapshotContext.items) {
3926
- if (isPanelData(item)) {
3927
- item.currentValue.value = new Big(item.currentValue.value);
3928
- item.collapsedSize.value = new Big(item.collapsedSize.value);
3929
- item.min.value = new Big(item.min.value);
4242
+ <span class="cstat-no" title="statement not covered" > for (const item of snapshotContext.items) {</span>
4243
+ <span class="cstat-no" title="statement not covered" > if (isPanelData(item)) {</span>
4244
+ <span class="cstat-no" title="statement not covered" > item.currentValue.value = new Big(item.currentValue.value);</span>
4245
+ <span class="cstat-no" title="statement not covered" > item.collapsedSize.value = new Big(item.collapsedSize.value);</span>
4246
+ <span class="cstat-no" title="statement not covered" > item.min.value = new Big(item.min.value);</span>
3930
4247
  &nbsp;
3931
- if (item.max &amp;&amp; item.max !== "1fr") {
3932
- item.max.value = new Big(item.max.value);
4248
+ <span class="cstat-no" title="statement not covered" > if (item.max &amp;&amp; item.max !== "1fr") {</span>
4249
+ <span class="cstat-no" title="statement not covered" > item.max.value = new Big(item.max.value);</span>
3933
4250
  }
3934
4251
  } else {
3935
- item.size.value = new Big(item.size.value);
4252
+ <span class="cstat-no" title="statement not covered" > item.size.value = new Big(item.size.value);</span>
3936
4253
  }
3937
4254
  }
3938
4255
  &nbsp;
3939
- return snapshot;
4256
+ <span class="cstat-no" title="statement not covered" > return snapshot;</span>
3940
4257
  }
3941
4258
  &nbsp;
3942
4259
  /** Assert that the provided event is one of the accepted types */
3943
- function isEvent&lt;T extends GroupMachineEvent["type"]&gt;(
4260
+ function <span class="fstat-no" title="function not covered" >isEvent&lt;T extends GroupMachineEvent["type"]&gt;(</span>
3944
4261
  event: GroupMachineEvent,
3945
4262
  eventType: T[]
3946
4263
  ): asserts event is EventForType&lt;T&gt; {
3947
- invariant(
4264
+ <span class="cstat-no" title="statement not covered" > invariant(</span>
3948
4265
  eventType.includes(event.type as T),
3949
4266
  `Invalid event type: ${eventType}. Expected: ${eventType.join(" | ")}`
3950
4267
  );
3951
4268
  }
3952
4269
  &nbsp;
3953
4270
  /** Determine if an item is a panel */
3954
- export function isPanelData(value: unknown): value is PanelData {
3955
- return Boolean(
4271
+ export function <span class="fstat-no" title="function not covered" >isPanelData(v</span>alue: unknown): value is PanelData {
4272
+ <span class="cstat-no" title="statement not covered" > return Boolean(</span>
3956
4273
  value &amp;&amp;
3957
4274
  typeof value === "object" &amp;&amp;
3958
4275
  "type" in value &amp;&amp;
@@ -3961,8 +4278,8 @@ export function isPanelData(value: unknown): value is PanelData {
3961
4278
  }
3962
4279
  &nbsp;
3963
4280
  /** Determine if an item is a panel handle */
3964
- export function isPanelHandle(value: unknown): value is PanelHandleData {
3965
- return Boolean(
4281
+ export function <span class="fstat-no" title="function not covered" >isPanelHandle(v</span>alue: unknown): value is PanelHandleData {
4282
+ <span class="cstat-no" title="statement not covered" > return Boolean(</span>
3966
4283
  value &amp;&amp;
3967
4284
  typeof value === "object" &amp;&amp;
3968
4285
  "type" in value &amp;&amp;
@@ -4001,29 +4318,29 @@ export function initializePanel(item: InitializePanelOptionsWithId): PanelData;
4001
4318
  export function initializePanel(
4002
4319
  item: InitializePanelOptions
4003
4320
  ): Omit&lt;PanelData, "id"&gt;;
4004
- export function initializePanel(
4321
+ export function <span class="fstat-no" title="function not covered" >initializePanel(</span>
4005
4322
  item: InitializePanelOptions | InitializePanelOptionsWithId
4006
4323
  ): PanelData | Omit&lt;PanelData, "id"&gt; {
4007
- const onResize = () =&gt; {
4008
- let lastCall: OnResizeSize | null = null;
4324
+ const onResize = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
4325
+ let lastCall: OnResizeSize | null = <span class="cstat-no" title="statement not covered" >null;</span>
4009
4326
  &nbsp;
4010
4327
  // Memo-ize so we only call the callback once per size
4011
- return ((size) =&gt; {
4012
- if (
4328
+ <span class="cstat-no" title="statement not covered" > return (<span class="fstat-no" title="function not covered" >(s</span>ize) =&gt; {</span>
4329
+ <span class="cstat-no" title="statement not covered" > if (</span>
4013
4330
  !lastCall ||
4014
4331
  (lastCall.pixel === size.pixel &amp;&amp;
4015
4332
  lastCall.percentage === size.percentage)
4016
4333
  ) {
4017
- lastCall = size;
4018
- return;
4334
+ <span class="cstat-no" title="statement not covered" > lastCall = size;</span>
4335
+ <span class="cstat-no" title="statement not covered" > return;</span>
4019
4336
  }
4020
4337
  &nbsp;
4021
- lastCall = size;
4022
- item.onResize?.current?.(size);
4338
+ <span class="cstat-no" title="statement not covered" > lastCall = size;</span>
4339
+ <span class="cstat-no" title="statement not covered" > item.onResize?.current?.(size);</span>
4023
4340
  }) satisfies OnResizeCallback;
4024
4341
  };
4025
4342
  &nbsp;
4026
- const data = {
4343
+ const data = <span class="cstat-no" title="statement not covered" >{</span>
4027
4344
  type: "panel" as const,
4028
4345
  min: parseUnit(item.min || "0px"),
4029
4346
  max: item.max ? parseUnit(item.max) : "1fr",
@@ -4041,14 +4358,14 @@ export function initializePanel(
4041
4358
  default: item.default ? parseUnit(item.default) : undefined,
4042
4359
  } satisfies Omit&lt;PanelData, "id" | "currentValue"&gt; &amp; { id?: string };
4043
4360
  &nbsp;
4044
- return { ...data, currentValue: makePixelUnit(-1) } satisfies Omit&lt;
4361
+ <span class="cstat-no" title="statement not covered" > return { ...data, currentValue: makePixelUnit(-1) } satisfies Omit&lt;</span>
4045
4362
  PanelData,
4046
4363
  "id"
4047
4364
  &gt;;
4048
4365
  }
4049
4366
  &nbsp;
4050
- export function initializePanelHandleData(item: InitializePanelHandleData) {
4051
- return {
4367
+ export function <span class="fstat-no" title="function not covered" >initializePanelHandleData(i</span>tem: InitializePanelHandleData) {
4368
+ <span class="cstat-no" title="statement not covered" > return {</span>
4052
4369
  type: "handle" as const,
4053
4370
  ...item,
4054
4371
  size:
@@ -4059,212 +4376,209 @@ export function initializePanelHandleData(item: InitializePanelHandleData) {
4059
4376
  }
4060
4377
  &nbsp;
4061
4378
  /** Parse a `Unit` string or `clamp` value */
4062
- export function parseUnit(unit: Unit | "1fr"): ParsedUnit {
4063
- if (unit === "1fr") {
4064
- unit = "100%";
4379
+ export function <span class="fstat-no" title="function not covered" >parseUnit(u</span>nit: Unit | "1fr"): ParsedUnit {
4380
+ <span class="cstat-no" title="statement not covered" > if (unit === "1fr") {</span>
4381
+ <span class="cstat-no" title="statement not covered" > unit = "100%";</span>
4065
4382
  }
4066
4383
  &nbsp;
4067
- if (unit.endsWith("px")) {
4068
- return makePixelUnit(parseFloat(unit));
4384
+ <span class="cstat-no" title="statement not covered" > if (unit.endsWith("px")) {</span>
4385
+ <span class="cstat-no" title="statement not covered" > return makePixelUnit(parseFloat(unit));</span>
4069
4386
  }
4070
4387
  &nbsp;
4071
- if (unit.endsWith("%")) {
4072
- return makePercentUnit(parseFloat(unit));
4388
+ <span class="cstat-no" title="statement not covered" > if (unit.endsWith("%")) {</span>
4389
+ <span class="cstat-no" title="statement not covered" > return makePercentUnit(parseFloat(unit) / 100);</span>
4073
4390
  }
4074
4391
  &nbsp;
4075
- throw new Error(`Invalid unit: ${unit}`);
4392
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid unit: ${unit}`);</span>
4076
4393
  }
4077
4394
  &nbsp;
4078
4395
  /** Convert a `Unit` to a percentage of the group size */
4079
- export function getUnitPercentageValue(groupsSize: number, unit: ParsedUnit) {
4080
- if (unit.type === "pixel") {
4081
- return groupsSize === 0 ? 0 : unit.value.div(groupsSize).toNumber();
4396
+ export function <span class="fstat-no" title="function not covered" >getUnitPercentageValue(g</span>roupsSize: number, unit: ParsedUnit) {
4397
+ <span class="cstat-no" title="statement not covered" > if (unit.type === "pixel") {</span>
4398
+ <span class="cstat-no" title="statement not covered" > return groupsSize === 0 ? 0 : unit.value.div(groupsSize).toNumber();</span>
4082
4399
  }
4083
4400
  &nbsp;
4084
- return unit.value.toNumber();
4401
+ <span class="cstat-no" title="statement not covered" > return unit.value.toNumber();</span>
4085
4402
  }
4086
4403
  &nbsp;
4087
- export function getGroupSize(context: GroupMachineContextValue) {
4088
- return context.orientation === "horizontal"
4404
+ export function <span class="fstat-no" title="function not covered" >getGroupSize(c</span>ontext: GroupMachineContextValue) {
4405
+ <span class="cstat-no" title="statement not covered" > return context.orientation === "horizontal"</span>
4089
4406
  ? context.size.width
4090
4407
  : context.size.height;
4091
4408
  }
4092
4409
  &nbsp;
4093
4410
  /** Get the size of a panel in pixels */
4094
- function getUnitPixelValue(
4411
+ function <span class="fstat-no" title="function not covered" >getUnitPixelValue(</span>
4095
4412
  context: GroupMachineContextValue,
4096
4413
  unit: ParsedUnit | "1fr"
4097
4414
  ) {
4098
- const parsed = unit === "1fr" ? parseUnit(unit) : unit;
4099
- return parsed.type === "pixel"
4415
+ const parsed = <span class="cstat-no" title="statement not covered" >unit === "1fr" ? parseUnit(unit) : unit;</span>
4416
+ <span class="cstat-no" title="statement not covered" > return parsed.type === "pixel"</span>
4100
4417
  ? parsed.value
4101
- : new Big(parsed.value).div(100).mul(getGroupSize(context));
4418
+ : parsed.value.mul(getGroupSize(context));
4102
4419
  }
4103
4420
  &nbsp;
4104
4421
  /** Clamp a new `currentValue` given the panel's constraints. */
4105
- function clampUnit(
4422
+ function <span class="fstat-no" title="function not covered" >clampUnit(</span>
4106
4423
  context: GroupMachineContextValue,
4107
4424
  item: PanelData,
4108
4425
  value: Big.Big
4109
4426
  ) {
4110
- const min = getUnitPixelValue(context, item.min);
4111
- const max = getUnitPixelValue(context, item.max);
4427
+ const min = <span class="cstat-no" title="statement not covered" >getUnitPixelValue(context, item.min);</span>
4428
+ const max = <span class="cstat-no" title="statement not covered" >getUnitPixelValue(context, item.max);</span>
4112
4429
  &nbsp;
4113
- if (value.gte(min) &amp;&amp; value.lte(max)) {
4114
- return value;
4430
+ <span class="cstat-no" title="statement not covered" > if (value.gte(min) &amp;&amp; value.lte(max)) {</span>
4431
+ <span class="cstat-no" title="statement not covered" > return value;</span>
4115
4432
  }
4116
4433
  &nbsp;
4117
- return value.lt(min) ? min : max;
4434
+ <span class="cstat-no" title="statement not covered" > return value.lt(min) ? min : max;</span>
4118
4435
  }
4119
4436
  &nbsp;
4120
4437
  /** Get a panel with a particular ID. */
4121
- export function getPanelWithId(
4438
+ export function <span class="fstat-no" title="function not covered" >getPanelWithId(</span>
4122
4439
  context: GroupMachineContextValue,
4123
4440
  panelId: string
4124
4441
  ) {
4125
- const item = context.items.find((i) =&gt; i.id === panelId);
4442
+ const item = <span class="cstat-no" title="statement not covered" >context.items.find(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === panelId)</span>;</span>
4126
4443
  &nbsp;
4127
- if (item &amp;&amp; isPanelData(item)) {
4128
- return item;
4444
+ <span class="cstat-no" title="statement not covered" > if (item &amp;&amp; isPanelData(item)) {</span>
4445
+ <span class="cstat-no" title="statement not covered" > return item;</span>
4129
4446
  }
4130
4447
  &nbsp;
4131
- throw new Error(`Expected panel with id: ${panelId}`);
4448
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Expected panel with id: ${panelId}`);</span>
4132
4449
  }
4133
4450
  &nbsp;
4134
4451
  /** Get a panel with a particular ID. */
4135
- function getPanelHandleIndex(
4452
+ function <span class="fstat-no" title="function not covered" >getPanelHandleIndex(</span>
4136
4453
  context: GroupMachineContextValue,
4137
4454
  handleId: string
4138
4455
  ) {
4139
- const item = context.items.findIndex((i) =&gt; i.id === handleId);
4456
+ const item = <span class="cstat-no" title="statement not covered" >context.items.findIndex(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === handleId)</span>;</span>
4140
4457
  &nbsp;
4141
- if (item !== -1 &amp;&amp; isPanelHandle(context.items[item])) {
4142
- return item;
4458
+ <span class="cstat-no" title="statement not covered" > if (item !== -1 &amp;&amp; isPanelHandle(context.items[item])) {</span>
4459
+ <span class="cstat-no" title="statement not covered" > return item;</span>
4143
4460
  }
4144
4461
  &nbsp;
4145
- throw new Error(`Expected panel handle with id: ${handleId}`);
4462
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Expected panel handle with id: ${handleId}`);</span>
4146
4463
  }
4147
4464
  &nbsp;
4148
4465
  /**
4149
4466
  * Get the panel that's collapsible next to a resize handle.
4150
4467
  * Will first check the left panel then the right.
4151
4468
  */
4152
- export function getCollapsiblePanelForHandleId(
4469
+ export function <span class="fstat-no" title="function not covered" >getCollapsiblePanelForHandleId(</span>
4153
4470
  context: GroupMachineContextValue,
4154
4471
  handleId: string
4155
4472
  ) {
4156
- if (!context.items.length) {
4157
- throw new Error("No items in group");
4473
+ <span class="cstat-no" title="statement not covered" > if (!context.items.length) {</span>
4474
+ <span class="cstat-no" title="statement not covered" > throw new Error("No items in group");</span>
4158
4475
  }
4159
4476
  &nbsp;
4160
- const handleIndex = getPanelHandleIndex(context, handleId);
4161
- const panelBefore = context.items[handleIndex - 1];
4162
- const panelAfter = context.items[handleIndex + 1];
4477
+ const handleIndex = <span class="cstat-no" title="statement not covered" >getPanelHandleIndex(context, handleId);</span>
4478
+ const panelBefore = <span class="cstat-no" title="statement not covered" >context.items[handleIndex - 1];</span>
4479
+ const panelAfter = <span class="cstat-no" title="statement not covered" >context.items[handleIndex + 1];</span>
4163
4480
  &nbsp;
4164
- if (panelBefore &amp;&amp; isPanelData(panelBefore) &amp;&amp; panelBefore.collapsible) {
4165
- return panelBefore;
4481
+ <span class="cstat-no" title="statement not covered" > if (panelBefore &amp;&amp; isPanelData(panelBefore) &amp;&amp; panelBefore.collapsible) {</span>
4482
+ <span class="cstat-no" title="statement not covered" > return panelBefore;</span>
4166
4483
  }
4167
4484
  &nbsp;
4168
- if (panelAfter &amp;&amp; isPanelData(panelAfter) &amp;&amp; panelAfter.collapsible) {
4169
- return panelAfter;
4485
+ <span class="cstat-no" title="statement not covered" > if (panelAfter &amp;&amp; isPanelData(panelAfter) &amp;&amp; panelAfter.collapsible) {</span>
4486
+ <span class="cstat-no" title="statement not covered" > return panelAfter;</span>
4170
4487
  }
4171
4488
  &nbsp;
4172
- throw new Error(`No collapsible panel found for handle: ${handleId}`);
4489
+ <span class="cstat-no" title="statement not covered" > throw new Error(`No collapsible panel found for handle: ${handleId}`);</span>
4173
4490
  }
4174
4491
  &nbsp;
4175
4492
  /**
4176
4493
  * Get the handle closest to the target panel.
4177
4494
  * This is used to simulate collapse/expand
4178
4495
  */
4179
- function getHandleForPanelId(
4496
+ function <span class="fstat-no" title="function not covered" >getHandleForPanelId(</span>
4180
4497
  context: GroupMachineContextValue,
4181
4498
  panelId: string
4182
4499
  ) {
4183
- const panelIndex = context.items.findIndex((item) =&gt; item.id === panelId);
4500
+ const panelIndex = <span class="cstat-no" title="statement not covered" >context.items.findIndex(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.id === panelId)</span>;</span>
4184
4501
  &nbsp;
4185
- invariant(panelIndex !== -1, `Expected panel before: ${panelId}`);
4502
+ <span class="cstat-no" title="statement not covered" > invariant(panelIndex !== -1, `Expected panel before: ${panelId}`);</span>
4186
4503
  &nbsp;
4187
- let item = context.items[panelIndex + 1];
4504
+ let item = <span class="cstat-no" title="statement not covered" >context.items[panelIndex + 1];</span>
4188
4505
  &nbsp;
4189
- if (item &amp;&amp; isPanelHandle(item)) {
4190
- return { item, direction: 1 as const };
4506
+ <span class="cstat-no" title="statement not covered" > if (item &amp;&amp; isPanelHandle(item)) {</span>
4507
+ <span class="cstat-no" title="statement not covered" > return { item, direction: 1 as const };</span>
4191
4508
  }
4192
4509
  &nbsp;
4193
- item = context.items[panelIndex - 1];
4510
+ <span class="cstat-no" title="statement not covered" > item = context.items[panelIndex - 1];</span>
4194
4511
  &nbsp;
4195
- if (item &amp;&amp; isPanelHandle(item)) {
4196
- return { item, direction: -1 as const };
4512
+ <span class="cstat-no" title="statement not covered" > if (item &amp;&amp; isPanelHandle(item)) {</span>
4513
+ <span class="cstat-no" title="statement not covered" > return { item, direction: -1 as const };</span>
4197
4514
  }
4198
4515
  &nbsp;
4199
- throw new Error(`Cant find handle for panel: ${panelId}`);
4516
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Cant find handle for panel: ${panelId}`);</span>
4200
4517
  }
4201
4518
  &nbsp;
4202
4519
  /** Given the specified order props and default order of the items, order the items */
4203
- function sortWithOrder(items: Array&lt;Item&gt;) {
4204
- const defaultPlacement: Record&lt;string, number&gt; = {};
4205
- const takenPlacements = items
4206
- .map((i) =&gt; i.order)
4207
- .filter((i): i is number =&gt; i !== undefined);
4520
+ function <span class="fstat-no" title="function not covered" >sortWithOrder(i</span>tems: Array&lt;Item&gt;) {
4521
+ const defaultPlacement: Record&lt;string, number&gt; = <span class="cstat-no" title="statement not covered" >{};</span>
4522
+ const takenPlacements = <span class="cstat-no" title="statement not covered" >items</span>
4523
+ .map(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.order)</span>
4524
+ .filter(<span class="fstat-no" title="function not covered" >(i</span>): i is number =&gt; <span class="cstat-no" title="statement not covered" >i !== undefined)</span>;
4208
4525
  &nbsp;
4209
- let defaultOrder = 0;
4526
+ let defaultOrder = <span class="cstat-no" title="statement not covered" >0;</span>
4210
4527
  &nbsp;
4211
4528
  // Generate default orders for items that don't have it
4212
- for (const item of items) {
4213
- if (item.order === undefined) {
4214
- while (
4529
+ <span class="cstat-no" title="statement not covered" > for (const item of items) {</span>
4530
+ <span class="cstat-no" title="statement not covered" > if (item.order === undefined) {</span>
4531
+ <span class="cstat-no" title="statement not covered" > while (</span>
4215
4532
  takenPlacements.includes(defaultOrder) ||
4216
4533
  Object.values(defaultPlacement).includes(defaultOrder)
4217
4534
  ) {
4218
- defaultOrder++;
4535
+ <span class="cstat-no" title="statement not covered" > defaultOrder++;</span>
4219
4536
  }
4220
4537
  &nbsp;
4221
- defaultPlacement[item.id] = defaultOrder;
4538
+ <span class="cstat-no" title="statement not covered" > defaultPlacement[item.id] = defaultOrder;</span>
4222
4539
  }
4223
4540
  }
4224
4541
  &nbsp;
4225
- const withoutOrder = items.filter((i) =&gt; i.order === undefined);
4226
- const sortedWithOrder = items
4227
- .filter((i) =&gt; i.order !== undefined)
4228
- .sort((a, b) =&gt; a.order! - b.order!);
4542
+ const withoutOrder = <span class="cstat-no" title="statement not covered" >items.filter(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.order === undefined)</span>;</span>
4543
+ const sortedWithOrder = <span class="cstat-no" title="statement not covered" >items</span>
4544
+ .filter(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.order !== undefined)</span>
4545
+ .sort(<span class="fstat-no" title="function not covered" >(a</span>, b) =&gt; <span class="cstat-no" title="statement not covered" >a.order! - b.order!)</span>;
4229
4546
  &nbsp;
4230
- for (const item of sortedWithOrder) {
4547
+ <span class="cstat-no" title="statement not covered" > for (const item of sortedWithOrder) {</span>
4231
4548
  // insert item at order index
4232
- withoutOrder.splice(item.order!, 0, item);
4549
+ <span class="cstat-no" title="statement not covered" > withoutOrder.splice(item.order!, 0, item);</span>
4233
4550
  }
4234
4551
  &nbsp;
4235
- return withoutOrder;
4552
+ <span class="cstat-no" title="statement not covered" > return withoutOrder;</span>
4236
4553
  }
4237
4554
  &nbsp;
4238
4555
  /** Check if the panel has space available to add to */
4239
- function panelHasSpace(
4556
+ function <span class="fstat-no" title="function not covered" >panelHasSpace(</span>
4240
4557
  context: GroupMachineContextValue,
4241
4558
  item: PanelData,
4242
4559
  adjustment: "add" | "subtract"
4243
4560
  ) {
4244
- invariant(
4561
+ <span class="cstat-no" title="statement not covered" > invariant(</span>
4245
4562
  item.currentValue.type === "pixel",
4246
4563
  `panelHasSpace only works with number values: ${item.id} ${item.currentValue}`
4247
4564
  );
4248
4565
  &nbsp;
4249
- if (item.collapsible &amp;&amp; !item.collapsed) {
4250
- return true;
4566
+ <span class="cstat-no" title="statement not covered" > if (item.collapsible &amp;&amp; !item.collapsed) {</span>
4567
+ <span class="cstat-no" title="statement not covered" > return true;</span>
4251
4568
  }
4252
4569
  &nbsp;
4253
- if (adjustment === "add") {
4254
- return (
4570
+ <span class="cstat-no" title="statement not covered" > if (adjustment === "add") {</span>
4571
+ <span class="cstat-no" title="statement not covered" > return (</span>
4255
4572
  item.currentValue.value.gte(getUnitPixelValue(context, item.min)) &amp;&amp;
4256
4573
  item.currentValue.value.lt(getUnitPixelValue(context, item.max))
4257
4574
  );
4258
4575
  }
4259
4576
  &nbsp;
4260
- return (
4261
- item.currentValue.value.gt(getUnitPixelValue(context, item.min)) &amp;&amp;
4262
- item.currentValue.value.lte(getUnitPixelValue(context, item.max))
4263
- );
4577
+ <span class="cstat-no" title="statement not covered" > return item.currentValue.value.gt(getUnitPixelValue(context, item.min));</span>
4264
4578
  }
4265
4579
  &nbsp;
4266
4580
  /** Search in a `direction` for a panel that still has space to expand. */
4267
- function findPanelWithSpace(
4581
+ function <span class="fstat-no" title="function not covered" >findPanelWithSpace(</span>
4268
4582
  context: GroupMachineContextValue,
4269
4583
  items: Array&lt;Item&gt;,
4270
4584
  start: number,
@@ -4273,146 +4587,163 @@ function findPanelWithSpace(
4273
4587
  disregardCollapseBuffer?: boolean
4274
4588
  ) {
4275
4589
  const slice =
4276
- direction === -1 ? items.slice(0, start + 1).reverse() : items.slice(start);
4590
+ <span class="cstat-no" title="statement not covered" > direction === -1 ? items.slice(0, start + 1).reverse() : items.slice(start);</span>
4277
4591
  &nbsp;
4278
- for (const panel of slice) {
4279
- if (!isPanelData(panel)) {
4280
- continue;
4592
+ <span class="cstat-no" title="statement not covered" > for (const panel of slice) {</span>
4593
+ <span class="cstat-no" title="statement not covered" > if (!isPanelData(panel)) {</span>
4594
+ <span class="cstat-no" title="statement not covered" > continue;</span>
4281
4595
  }
4282
4596
  &nbsp;
4283
- const targetPanel = disregardCollapseBuffer
4597
+ const targetPanel = <span class="cstat-no" title="statement not covered" >disregardCollapseBuffer</span>
4284
4598
  ? createUnrestrainedPanel(context, panel)
4285
4599
  : panel;
4286
4600
  &nbsp;
4287
- if (panelHasSpace(context, targetPanel, adjustment)) {
4288
- return panel;
4601
+ <span class="cstat-no" title="statement not covered" > if (panelHasSpace(context, targetPanel, adjustment)) {</span>
4602
+ <span class="cstat-no" title="statement not covered" > return panel;</span>
4289
4603
  }
4290
4604
  }
4291
4605
  }
4292
4606
  &nbsp;
4293
4607
  /** Add up all the static values in the layout */
4294
- function getStaticWidth(context: GroupMachineContextValue) {
4295
- let width = new Big(0);
4608
+ function <span class="fstat-no" title="function not covered" >getStaticWidth(c</span>ontext: GroupMachineContextValue) {
4609
+ let width = <span class="cstat-no" title="statement not covered" >new Big(0);</span>
4296
4610
  &nbsp;
4297
- for (const item of context.items) {
4298
- if (isPanelHandle(item)) {
4299
- width = width.add(item.size.value);
4300
- } else if (
4611
+ <span class="cstat-no" title="statement not covered" > for (const item of context.items) {</span>
4612
+ <span class="cstat-no" title="statement not covered" > if (isPanelHandle(item)) {</span>
4613
+ <span class="cstat-no" title="statement not covered" > width = width.add(item.size.value);</span>
4614
+ <span class="cstat-no" title="statement not covered" > } else if (</span>
4301
4615
  isPanelData(item) &amp;&amp;
4302
4616
  item.collapsed &amp;&amp;
4303
4617
  item.currentValue.type === "pixel"
4304
4618
  ) {
4305
- width = width.add(item.currentValue.value);
4619
+ <span class="cstat-no" title="statement not covered" > width = width.add(item.currentValue.value);</span>
4306
4620
  }
4307
4621
  }
4308
4622
  &nbsp;
4309
- return width;
4623
+ <span class="cstat-no" title="statement not covered" > return width;</span>
4310
4624
  }
4311
4625
  &nbsp;
4312
- function formatUnit(unit: ParsedUnit): Unit {
4313
- if (unit.type === "pixel") {
4314
- return `${unit.value.toNumber()}px`;
4626
+ function <span class="fstat-no" title="function not covered" >formatUnit(u</span>nit: ParsedUnit): Unit {
4627
+ <span class="cstat-no" title="statement not covered" > if (unit.type === "pixel") {</span>
4628
+ <span class="cstat-no" title="statement not covered" > return `${unit.value.toNumber()}px`;</span>
4315
4629
  }
4316
4630
  &nbsp;
4317
- return `${unit.value.toNumber()}%`;
4631
+ <span class="cstat-no" title="statement not covered" > return `${unit.value.mul(100).toNumber()}%`;</span>
4318
4632
  }
4319
4633
  &nbsp;
4320
- export function getPanelGroupPixelSizes(context: GroupMachineContextValue) {
4321
- return prepareItems(context).map((i) =&gt;
4322
- isPanelData(i)
4634
+ export function <span class="fstat-no" title="function not covered" >getPanelGroupPixelSizes(c</span>ontext: GroupMachineContextValue) {
4635
+ <span class="cstat-no" title="statement not covered" > return prepareItems(context).map(<span class="fstat-no" title="function not covered" >(i</span>) =&gt;</span>
4636
+ <span class="cstat-no" title="statement not covered" > isPanelData(i)</span>
4323
4637
  ? i.currentValue.value.toNumber()
4324
4638
  : getUnitPixelValue(context, i.size).toNumber()
4325
4639
  );
4326
4640
  }
4327
4641
  &nbsp;
4328
- export function getPanelPixelSize(
4642
+ export function <span class="fstat-no" title="function not covered" >getPanelPixelSize(</span>
4329
4643
  context: GroupMachineContextValue,
4330
4644
  panelId: string
4331
4645
  ) {
4332
- const p = getPanelWithId(
4646
+ const p = <span class="cstat-no" title="statement not covered" >getPanelWithId(</span>
4333
4647
  { ...context, items: prepareItems(context) },
4334
4648
  panelId
4335
4649
  );
4336
4650
  &nbsp;
4337
- return p.currentValue.value.toNumber();
4651
+ <span class="cstat-no" title="statement not covered" > return p.currentValue.value.toNumber();</span>
4338
4652
  }
4339
4653
  &nbsp;
4340
- export function getPanelGroupPercentageSizes(
4654
+ export function <span class="fstat-no" title="function not covered" >getPanelGroupPercentageSizes(</span>
4341
4655
  context: GroupMachineContextValue
4342
4656
  ) {
4343
- const clamped = commitLayout({
4657
+ const clamped = <span class="cstat-no" title="statement not covered" >commitLayout({</span>
4344
4658
  ...context,
4345
4659
  items: prepareItems(context),
4346
4660
  });
4347
4661
  &nbsp;
4348
- return clamped.map((i) =&gt; {
4349
- if (isPanelHandle(i)) {
4350
- return getUnitPercentageValue(getGroupSize(context), i.size);
4662
+ <span class="cstat-no" title="statement not covered" > return clamped.map(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; {</span>
4663
+ <span class="cstat-no" title="statement not covered" > if (isPanelHandle(i)) {</span>
4664
+ <span class="cstat-no" title="statement not covered" > return getUnitPercentageValue(getGroupSize(context), i.size);</span>
4351
4665
  }
4352
4666
  &nbsp;
4353
- return getUnitPercentageValue(getGroupSize(context), i.currentValue);
4667
+ <span class="cstat-no" title="statement not covered" > return getUnitPercentageValue(getGroupSize(context), i.currentValue);</span>
4354
4668
  });
4355
4669
  }
4356
4670
  &nbsp;
4357
- export function getPanelPercentageSize(
4671
+ export function <span class="fstat-no" title="function not covered" >getPanelPercentageSize(</span>
4358
4672
  context: GroupMachineContextValue,
4359
4673
  panelId: string
4360
4674
  ) {
4361
- const items = prepareItems(context);
4362
- const p = getPanelWithId({ ...context, items }, panelId);
4363
- return getUnitPercentageValue(getGroupSize(context), p.currentValue);
4675
+ const items = <span class="cstat-no" title="statement not covered" >prepareItems(context);</span>
4676
+ const p = <span class="cstat-no" title="statement not covered" >getPanelWithId({ ...context, items }, panelId);</span>
4677
+ <span class="cstat-no" title="statement not covered" > return getUnitPercentageValue(getGroupSize(context), p.currentValue);</span>
4364
4678
  }
4365
4679
  &nbsp;
4366
4680
  /** Build the grid template from the item values. */
4367
- export function buildTemplate(context: GroupMachineContextValue) {
4368
- const staticWidth = getStaticWidth(context);
4681
+ export function <span class="fstat-no" title="function not covered" >buildTemplate(c</span>ontext: GroupMachineContextValue) {
4682
+ const staticWidth = <span class="cstat-no" title="statement not covered" >getStaticWidth(context);</span>
4369
4683
  &nbsp;
4370
- return context.items
4371
- .map((item) =&gt; {
4372
- if (item.type === "panel") {
4373
- const min = formatUnit(item.min);
4684
+ <span class="cstat-no" title="statement not covered" > return context.items</span>
4685
+ .map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {
4686
+ <span class="cstat-no" title="statement not covered" > if (item.type === "panel") {</span>
4687
+ const min = <span class="cstat-no" title="statement not covered" >formatUnit(item.min);</span>
4374
4688
  &nbsp;
4375
- if (
4689
+ <span class="cstat-no" title="statement not covered" > if (</span>
4376
4690
  item.currentValue.type === "pixel" &amp;&amp;
4377
4691
  item.currentValue.value.toNumber() !== -1
4378
4692
  ) {
4379
- return formatUnit(item.currentValue);
4380
- } else if (item.currentValue.type === "percent") {
4381
- const max = item.max === "1fr" ? "100%" : formatUnit(item.max);
4382
- return `minmax(${min}, min(calc(${item.currentValue.value} * (100% - ${staticWidth}px)), ${max}))`;
4383
- } else if (item.collapsible &amp;&amp; item.collapsed) {
4384
- return formatUnit(item.collapsedSize);
4385
- } else if (item.default) {
4386
- return formatUnit(item.default);
4387
- }
4693
+ <span class="cstat-no" title="statement not covered" > return formatUnit(item.currentValue);</span>
4694
+ <span class="cstat-no" title="statement not covered" > } else if (item.currentValue.type === "percent") {</span>
4695
+ const max = <span class="cstat-no" title="statement not covered" >item.max === "1fr" ? "100%" : formatUnit(item.max);</span>
4696
+ <span class="cstat-no" title="statement not covered" > return `minmax(${min}, min(calc(${item.currentValue.value} * (100% - ${staticWidth}px)), ${max}))`;</span>
4697
+ <span class="cstat-no" title="statement not covered" > } else if (item.collapsible &amp;&amp; item.collapsed) {</span>
4698
+ <span class="cstat-no" title="statement not covered" > return formatUnit(item.collapsedSize);</span>
4699
+ <span class="cstat-no" title="statement not covered" > } else if (item.default) {</span>
4700
+ const siblingHasFill = <span class="cstat-no" title="statement not covered" >context.items.some(</span>
4701
+ <span class="fstat-no" title="function not covered" > (i</span>) =&gt;
4702
+ <span class="cstat-no" title="statement not covered" > isPanelData(i) &amp;&amp;</span>
4703
+ i.id !== item.id &amp;&amp;
4704
+ !i.collapsed &amp;&amp;
4705
+ (i.max === "1fr" ||
4706
+ (i.max.type === "percent" &amp;&amp; i.max.value.eq(100)))
4707
+ );
4708
+ &nbsp;
4709
+ // If a sibling has a fill, this item doesn't need to expand
4710
+ // So we can just use the default value
4711
+ <span class="cstat-no" title="statement not covered" > if (siblingHasFill) {</span>
4712
+ <span class="cstat-no" title="statement not covered" > return formatUnit(item.default);</span>
4713
+ }
4388
4714
  &nbsp;
4389
- const max = item.max === "1fr" ? "1fr" : formatUnit(item.max);
4390
- return `minmax(${min}, ${max})`;
4715
+ // Use 1fr so that panel fills ths space if needed
4716
+ const max = <span class="cstat-no" title="statement not covered" >item.max === "1fr" ? "1fr" : formatUnit(item.max);</span>
4717
+ <span class="cstat-no" title="statement not covered" > return `minmax(${formatUnit(item.default)}, ${max})`;</span>
4718
+ } else {
4719
+ const max = <span class="cstat-no" title="statement not covered" >item.max === "1fr" ? "1fr" : formatUnit(item.max);</span>
4720
+ <span class="cstat-no" title="statement not covered" > return `minmax(${min}, ${max})`;</span>
4721
+ }
4391
4722
  }
4392
4723
  &nbsp;
4393
- return formatUnit(item.size);
4724
+ <span class="cstat-no" title="statement not covered" > return formatUnit(item.size);</span>
4394
4725
  })
4395
4726
  .join(" ");
4396
4727
  }
4397
4728
  &nbsp;
4398
- function addDeDuplicatedItems(items: Array&lt;Item&gt;, newItem: Item) {
4399
- const currentItemIndex = items.findIndex(
4400
- (item) =&gt;
4401
- item.id === newItem.id ||
4729
+ function <span class="fstat-no" title="function not covered" >addDeDuplicatedItems(i</span>tems: Array&lt;Item&gt;, newItem: Item) {
4730
+ const currentItemIndex = <span class="cstat-no" title="statement not covered" >items.findIndex(</span>
4731
+ <span class="fstat-no" title="function not covered" > (i</span>tem) =&gt;
4732
+ <span class="cstat-no" title="statement not covered" > item.id === newItem.id ||</span>
4402
4733
  (typeof item.order === "number" &amp;&amp; item.order === newItem.order)
4403
4734
  );
4404
4735
  &nbsp;
4405
- let restItems = items;
4736
+ let restItems = <span class="cstat-no" title="statement not covered" >items;</span>
4406
4737
  &nbsp;
4407
- if (currentItemIndex !== -1) {
4408
- restItems = items.filter((_, index) =&gt; index !== currentItemIndex);
4738
+ <span class="cstat-no" title="statement not covered" > if (currentItemIndex !== -1) {</span>
4739
+ <span class="cstat-no" title="statement not covered" > restItems = items.filter(<span class="fstat-no" title="function not covered" >(_</span>, index) =&gt; <span class="cstat-no" title="statement not covered" >index !== currentItemIndex)</span>;</span>
4409
4740
  }
4410
4741
  &nbsp;
4411
- return sortWithOrder([...restItems, newItem]);
4742
+ <span class="cstat-no" title="statement not covered" > return sortWithOrder([...restItems, newItem]);</span>
4412
4743
  }
4413
4744
  &nbsp;
4414
- function createUnrestrainedPanel(_: GroupMachineContextValue, data: PanelData) {
4415
- return {
4745
+ function <span class="fstat-no" title="function not covered" >createUnrestrainedPanel(_</span>: GroupMachineContextValue, data: PanelData) {
4746
+ <span class="cstat-no" title="statement not covered" > return {</span>
4416
4747
  ...data,
4417
4748
  min: makePixelUnit(-100000),
4418
4749
  max: makePixelUnit(100000),
@@ -4473,31 +4804,36 @@ function createUnrestrainedPanel(_: GroupMachineContextValue, data: PanelData) {
4473
4804
  */
4474
4805
  &nbsp;
4475
4806
  /** Converts the items to pixels */
4476
- export function prepareItems(context: GroupMachineContextValue) {
4477
- const newItems = [...context.items];
4478
- const staticWidth = getStaticWidth(context);
4479
- &nbsp;
4480
- for (const item of newItems) {
4481
- if (!item || !isPanelData(item)) {
4482
- continue;
4807
+ export function <span class="fstat-no" title="function not covered" >prepareItems(c</span>ontext: GroupMachineContextValue): Item[] {
4808
+ const staticWidth = <span class="cstat-no" title="statement not covered" >getStaticWidth(context);</span>
4809
+ const newItems = <span class="cstat-no" title="statement not covered" >[];</span>
4810
+ &nbsp;
4811
+ <span class="cstat-no" title="statement not covered" > for (const item of context.items) {</span>
4812
+ <span class="cstat-no" title="statement not covered" > if (!item || !isPanelData(item)) {</span>
4813
+ <span class="cstat-no" title="statement not covered" > newItems.push({ ...item });</span>
4814
+ <span class="cstat-no" title="statement not covered" > continue;</span>
4483
4815
  }
4484
4816
  &nbsp;
4485
- if (item.currentValue.type === "pixel") {
4486
- continue;
4817
+ <span class="cstat-no" title="statement not covered" > if (item.currentValue.type === "pixel") {</span>
4818
+ <span class="cstat-no" title="statement not covered" > newItems.push({ ...item });</span>
4819
+ <span class="cstat-no" title="statement not covered" > continue;</span>
4487
4820
  }
4488
4821
  &nbsp;
4489
- const pixel = new Big(getGroupSize(context))
4822
+ const pixel = <span class="cstat-no" title="statement not covered" >new Big(getGroupSize(context))</span>
4490
4823
  .minus(staticWidth)
4491
4824
  .mul(item.currentValue.value);
4492
4825
  &nbsp;
4493
- item.currentValue = makePixelUnit(pixel.toNumber());
4826
+ <span class="cstat-no" title="statement not covered" > newItems.push({</span>
4827
+ ...item,
4828
+ currentValue: makePixelUnit(pixel.toNumber()),
4829
+ });
4494
4830
  }
4495
4831
  &nbsp;
4496
- return newItems;
4832
+ <span class="cstat-no" title="statement not covered" > return newItems;</span>
4497
4833
  }
4498
4834
  &nbsp;
4499
4835
  /** On every mouse move we distribute the space added */
4500
- function updateLayout(
4836
+ function <span class="fstat-no" title="function not covered" >updateLayout(</span>
4501
4837
  context: GroupMachineContextValue,
4502
4838
  dragEvent:
4503
4839
  | (DragHandleEvent &amp; {
@@ -4512,27 +4848,27 @@ function updateLayout(
4512
4848
  disregardCollapseBuffer?: boolean;
4513
4849
  }
4514
4850
  ): Partial&lt;GroupMachineContextValue&gt; {
4515
- const handleIndex = getPanelHandleIndex(context, dragEvent.handleId);
4516
- const handle = context.items[handleIndex] as PanelHandleData;
4517
- const newItems = [...context.items];
4851
+ const handleIndex = <span class="cstat-no" title="statement not covered" >getPanelHandleIndex(context, dragEvent.handleId);</span>
4852
+ const handle = <span class="cstat-no" title="statement not covered" >context.items[handleIndex] as PanelHandleData;</span>
4853
+ const newItems = <span class="cstat-no" title="statement not covered" >[...context.items];</span>
4518
4854
  &nbsp;
4519
4855
  let moveAmount =
4520
- context.orientation === "horizontal"
4856
+ <span class="cstat-no" title="statement not covered" > context.orientation === "horizontal"</span>
4521
4857
  ? dragEvent.value.deltaX
4522
4858
  : dragEvent.value.deltaY;
4523
4859
  &nbsp;
4524
- if (dragEvent.value.shiftKey) {
4525
- moveAmount *= 15;
4860
+ <span class="cstat-no" title="statement not covered" > if (dragEvent.value.shiftKey) {</span>
4861
+ <span class="cstat-no" title="statement not covered" > moveAmount *= 15;</span>
4526
4862
  }
4527
4863
  &nbsp;
4528
- if (moveAmount === 0) {
4529
- return {};
4864
+ <span class="cstat-no" title="statement not covered" > if (moveAmount === 0) {</span>
4865
+ <span class="cstat-no" title="statement not covered" > return {};</span>
4530
4866
  }
4531
4867
  &nbsp;
4532
- const moveDirection = moveAmount / Math.abs(moveAmount);
4868
+ const moveDirection = <span class="cstat-no" title="statement not covered" >moveAmount / Math.abs(moveAmount);</span>
4533
4869
  &nbsp;
4534
4870
  // Go forward into the shrinking panels to find a panel that still has space.
4535
- const panelBefore = findPanelWithSpace(
4871
+ const panelBefore = <span class="cstat-no" title="statement not covered" >findPanelWithSpace(</span>
4536
4872
  context,
4537
4873
  newItems,
4538
4874
  handleIndex + moveDirection,
@@ -4542,120 +4878,122 @@ function updateLayout(
4542
4878
  );
4543
4879
  &nbsp;
4544
4880
  // No panel with space, just record the drag overshoot
4545
- if (!panelBefore) {
4546
- return {
4881
+ <span class="cstat-no" title="statement not covered" > if (!panelBefore) {</span>
4882
+ <span class="cstat-no" title="statement not covered" > return {</span>
4547
4883
  dragOvershoot: context.dragOvershoot.add(moveAmount),
4548
4884
  };
4549
4885
  }
4550
4886
  &nbsp;
4551
- invariant(isPanelData(panelBefore), `Expected panel before: ${handle.id}`);
4887
+ <span class="cstat-no" title="statement not covered" > invariant(isPanelData(panelBefore), `Expected panel before: ${handle.id}`);</span>
4552
4888
  &nbsp;
4553
- const panelAfter = newItems[handleIndex - moveDirection];
4889
+ const panelAfter = <span class="cstat-no" title="statement not covered" >newItems[handleIndex - moveDirection];</span>
4554
4890
  &nbsp;
4555
- invariant(
4891
+ <span class="cstat-no" title="statement not covered" > invariant(</span>
4556
4892
  panelAfter &amp;&amp; isPanelData(panelAfter),
4557
4893
  `Expected panel after: ${handle.id}`
4558
4894
  );
4559
4895
  &nbsp;
4560
- if (
4896
+ <span class="cstat-no" title="statement not covered" > if (</span>
4561
4897
  panelAfter.currentValue.value.eq(getUnitPixelValue(context, panelAfter.max))
4562
4898
  ) {
4563
- return {
4899
+ <span class="cstat-no" title="statement not covered" > return {</span>
4564
4900
  dragOvershoot: context.dragOvershoot.add(moveAmount),
4565
4901
  };
4566
4902
  }
4567
4903
  &nbsp;
4568
- const newDragOvershoot = context.dragOvershoot.add(moveAmount);
4904
+ const newDragOvershoot = <span class="cstat-no" title="statement not covered" >context.dragOvershoot.add(moveAmount);</span>
4569
4905
  &nbsp;
4570
4906
  // Don't let the panel expand until the threshold is reached
4571
- if (!dragEvent.disregardCollapseBuffer) {
4572
- const isInLeftBuffer = newDragOvershoot.lt(0) &amp;&amp; moveDirection &gt; 0;
4573
- const isInLeftOvershoot = newDragOvershoot.gt(0) &amp;&amp; moveDirection &gt; 0;
4574
- const isInRightBuffer = newDragOvershoot.gt(0) &amp;&amp; moveDirection &lt; 0;
4575
- const isInRightOvershoot = newDragOvershoot.lt(0) &amp;&amp; moveDirection &lt; 0;
4576
- const potentialNewValue = panelAfter.currentValue.value.add(
4907
+ <span class="cstat-no" title="statement not covered" > if (!dragEvent.disregardCollapseBuffer) {</span>
4908
+ const isInLeftBuffer = <span class="cstat-no" title="statement not covered" >newDragOvershoot.lt(0) &amp;&amp; moveDirection &gt; 0;</span>
4909
+ const isInLeftOvershoot = <span class="cstat-no" title="statement not covered" >newDragOvershoot.gt(0) &amp;&amp; moveDirection &gt; 0;</span>
4910
+ const isInRightBuffer = <span class="cstat-no" title="statement not covered" >newDragOvershoot.gt(0) &amp;&amp; moveDirection &lt; 0;</span>
4911
+ const isInRightOvershoot = <span class="cstat-no" title="statement not covered" >newDragOvershoot.lt(0) &amp;&amp; moveDirection &lt; 0;</span>
4912
+ const potentialNewValue = <span class="cstat-no" title="statement not covered" >panelAfter.currentValue.value.add(</span>
4577
4913
  new Big(newDragOvershoot).mul(isInRightBuffer ? moveDirection : 1)
4578
4914
  );
4579
- const min = getUnitPixelValue(context, panelAfter.min);
4915
+ const min = <span class="cstat-no" title="statement not covered" >getUnitPixelValue(context, panelAfter.min);</span>
4580
4916
  &nbsp;
4581
4917
  const isInDragBugger =
4582
- newDragOvershoot.abs().lt(COLLAPSE_THRESHOLD) &amp;&amp;
4918
+ <span class="cstat-no" title="statement not covered" > newDragOvershoot.abs().lt(COLLAPSE_THRESHOLD) &amp;&amp;</span>
4583
4919
  panelAfter.collapsible &amp;&amp;
4584
4920
  panelAfter.collapsed &amp;&amp;
4585
4921
  (isInLeftOvershoot || isInRightOvershoot);
4586
4922
  &nbsp;
4587
- if (
4923
+ <span class="cstat-no" title="statement not covered" > if (</span>
4588
4924
  potentialNewValue.lte(min) &amp;&amp;
4589
4925
  (newDragOvershoot.eq(0) ||
4590
4926
  isInRightBuffer ||
4591
4927
  isInLeftBuffer ||
4592
4928
  isInDragBugger)
4593
4929
  ) {
4594
- return { dragOvershoot: newDragOvershoot };
4930
+ <span class="cstat-no" title="statement not covered" > return { dragOvershoot: newDragOvershoot };</span>
4595
4931
  }
4596
4932
  }
4597
4933
  &nbsp;
4598
4934
  // Don't let the panel collapse until the threshold is reached
4599
- if (
4935
+ <span class="cstat-no" title="statement not covered" > if (</span>
4936
+ !dragEvent.disregardCollapseBuffer &amp;&amp;
4600
4937
  panelBefore.collapsible &amp;&amp;
4601
- panelBefore.currentValue.value ===
4938
+ panelBefore.currentValue.value.eq(
4602
4939
  getUnitPixelValue(context, panelBefore.min)
4940
+ )
4603
4941
  ) {
4604
- const potentialNewValue = panelBefore.currentValue.value.sub(
4942
+ const potentialNewValue = <span class="cstat-no" title="statement not covered" >panelBefore.currentValue.value.sub(</span>
4605
4943
  newDragOvershoot.abs()
4606
4944
  );
4607
4945
  &nbsp;
4608
- if (
4946
+ <span class="cstat-no" title="statement not covered" > if (</span>
4609
4947
  newDragOvershoot.abs().lt(COLLAPSE_THRESHOLD) &amp;&amp;
4610
4948
  potentialNewValue.gt(
4611
4949
  getUnitPixelValue(context, panelBefore.collapsedSize)
4612
4950
  )
4613
4951
  ) {
4614
- return { dragOvershoot: newDragOvershoot };
4952
+ <span class="cstat-no" title="statement not covered" > return { dragOvershoot: newDragOvershoot };</span>
4615
4953
  }
4616
4954
  }
4617
4955
  &nbsp;
4618
4956
  // Apply the move amount to the panel before the slider
4619
- const unrestrainedPanelBefore = createUnrestrainedPanel(context, panelBefore);
4620
- const panelBeforePreviousValue = panelBefore.currentValue.value;
4621
- const panelBeforeNewValueRaw = panelBefore.currentValue.value.minus(
4957
+ const unrestrainedPanelBefore = <span class="cstat-no" title="statement not covered" >createUnrestrainedPanel(context, panelBefore);</span>
4958
+ const panelBeforePreviousValue = <span class="cstat-no" title="statement not covered" >panelBefore.currentValue.value;</span>
4959
+ const panelBeforeNewValueRaw = <span class="cstat-no" title="statement not covered" >panelBefore.currentValue.value.minus(</span>
4622
4960
  new Big(moveAmount).mul(moveDirection)
4623
4961
  );
4624
- let panelBeforeNewValue = dragEvent.disregardCollapseBuffer
4962
+ let panelBeforeNewValue = <span class="cstat-no" title="statement not covered" >dragEvent.disregardCollapseBuffer</span>
4625
4963
  ? clampUnit(context, unrestrainedPanelBefore, panelBeforeNewValueRaw)
4626
4964
  : clampUnit(context, panelBefore, panelBeforeNewValueRaw);
4627
4965
  &nbsp;
4628
4966
  // Also apply the move amount the panel after the slider
4629
- const unrestrainedPanelAfter = createUnrestrainedPanel(context, panelAfter);
4630
- const panelAfterPreviousValue = panelAfter.currentValue.value;
4631
- const applied = panelBeforePreviousValue.minus(panelBeforeNewValue);
4632
- const panelAfterNewValueRaw = panelAfter.currentValue.value.add(applied);
4633
- let panelAfterNewValue = dragEvent.disregardCollapseBuffer
4967
+ const unrestrainedPanelAfter = <span class="cstat-no" title="statement not covered" >createUnrestrainedPanel(context, panelAfter);</span>
4968
+ const panelAfterPreviousValue = <span class="cstat-no" title="statement not covered" >panelAfter.currentValue.value;</span>
4969
+ const applied = <span class="cstat-no" title="statement not covered" >panelBeforePreviousValue.minus(panelBeforeNewValue);</span>
4970
+ const panelAfterNewValueRaw = <span class="cstat-no" title="statement not covered" >panelAfter.currentValue.value.add(applied);</span>
4971
+ let panelAfterNewValue = <span class="cstat-no" title="statement not covered" >dragEvent.disregardCollapseBuffer</span>
4634
4972
  ? clampUnit(context, unrestrainedPanelAfter, panelAfterNewValueRaw)
4635
4973
  : clampUnit(context, panelAfter, panelAfterNewValueRaw);
4636
4974
  &nbsp;
4637
- if (dragEvent.disregardCollapseBuffer) {
4638
- if (panelAfter.collapsible &amp;&amp; panelAfter.collapsed) {
4639
- panelAfter.collapsed = false;
4975
+ <span class="cstat-no" title="statement not covered" > if (dragEvent.disregardCollapseBuffer) {</span>
4976
+ <span class="cstat-no" title="statement not covered" > if (panelAfter.collapsible &amp;&amp; panelAfter.collapsed) {</span>
4977
+ <span class="cstat-no" title="statement not covered" > panelAfter.collapsed = false;</span>
4640
4978
  }
4641
- }
4979
+ <span class="cstat-no" title="statement not covered" > }</span>
4642
4980
  // If the panel was collapsed, expand it
4643
4981
  // We need to re-apply the move amount since the the expansion of the
4644
4982
  // collapsed panel disregards that.
4645
4983
  else if (panelAfter.collapsible &amp;&amp; panelAfter.collapsed) {
4646
- if (
4984
+ <span class="cstat-no" title="statement not covered" > if (</span>
4647
4985
  panelAfter.onCollapseChange?.current &amp;&amp;
4648
4986
  panelAfter.collapseIsControlled &amp;&amp;
4649
4987
  !dragEvent.controlled
4650
4988
  ) {
4651
- panelAfter.onCollapseChange.current(false);
4652
- return { dragOvershoot: newDragOvershoot };
4989
+ <span class="cstat-no" title="statement not covered" > panelAfter.onCollapseChange.current(false);</span>
4990
+ <span class="cstat-no" title="statement not covered" > return { dragOvershoot: newDragOvershoot };</span>
4653
4991
  }
4654
4992
  &nbsp;
4655
4993
  // Calculate the amount "extra" after the minSize the panel should grow
4656
4994
  const extra =
4657
4995
  // Take the size it was at
4658
- getUnitPixelValue(context, panelAfter.collapsedSize)
4996
+ <span class="cstat-no" title="statement not covered" > getUnitPixelValue(context, panelAfter.collapsedSize)</span>
4659
4997
  // Add in the full overshoot so the cursor is near the slider
4660
4998
  .add(context.dragOvershoot.abs())
4661
4999
  // Subtract the min size of the panel
@@ -4665,13 +5003,11 @@ function updateLayout(
4665
5003
  .add(Math.abs(moveAmount))
4666
5004
  );
4667
5005
  &nbsp;
4668
- panelAfter.collapsed = false;
4669
- &nbsp;
4670
- if (extra.gt(0)) {
4671
- panelAfterNewValue = panelAfterNewValue.add(extra);
5006
+ <span class="cstat-no" title="statement not covered" > if (extra.gt(0)) {</span>
5007
+ <span class="cstat-no" title="statement not covered" > panelAfterNewValue = panelAfterNewValue.add(extra);</span>
4672
5008
  }
4673
5009
  &nbsp;
4674
- panelBeforeNewValue = panelBeforeNewValue
5010
+ <span class="cstat-no" title="statement not covered" > panelBeforeNewValue = panelBeforeNewValue</span>
4675
5011
  // Subtract the delta of the after panel's size
4676
5012
  .minus(
4677
5013
  panelAfterNewValue
@@ -4680,95 +5016,105 @@ function updateLayout(
4680
5016
  .minus(Math.abs(moveAmount))
4681
5017
  );
4682
5018
  &nbsp;
4683
- if (
5019
+ <span class="cstat-no" title="statement not covered" > if (panelBeforeNewValue.lt(panelBefore.min.value)) {</span>
5020
+ // TODO this should probably distribute the space between the panels?
5021
+ <span class="cstat-no" title="statement not covered" > return { dragOvershoot: newDragOvershoot };</span>
5022
+ }
5023
+ &nbsp;
5024
+ <span class="cstat-no" title="statement not covered" > panelAfter.collapsed = false;</span>
5025
+ &nbsp;
5026
+ <span class="cstat-no" title="statement not covered" > if (</span>
4684
5027
  panelAfter.onCollapseChange?.current &amp;&amp;
4685
5028
  !panelAfter.collapseIsControlled &amp;&amp;
4686
5029
  !dragEvent.controlled
4687
5030
  ) {
4688
- panelAfter.onCollapseChange.current(false);
5031
+ <span class="cstat-no" title="statement not covered" > panelAfter.onCollapseChange.current(false);</span>
4689
5032
  }
4690
5033
  }
4691
5034
  &nbsp;
4692
- const panelBeforeIsAboutToCollapse =
4693
- panelBefore.currentValue.value ===
4694
- getUnitPixelValue(context, panelBefore.min);
5035
+ const panelBeforeIsAboutToCollapse = <span class="cstat-no" title="statement not covered" >panelBefore.currentValue.value.eq(</span>
5036
+ getUnitPixelValue(context, panelBefore.min)
5037
+ );
4695
5038
  &nbsp;
4696
5039
  // If the panel was expanded and now is at it's min size, collapse it
4697
- if (
5040
+ <span class="cstat-no" title="statement not covered" > if (</span>
4698
5041
  !dragEvent.disregardCollapseBuffer &amp;&amp;
4699
5042
  panelBefore.collapsible &amp;&amp;
4700
5043
  panelBeforeIsAboutToCollapse
4701
5044
  ) {
4702
- if (
5045
+ <span class="cstat-no" title="statement not covered" > if (</span>
4703
5046
  panelBefore.onCollapseChange?.current &amp;&amp;
4704
5047
  panelBefore.collapseIsControlled &amp;&amp;
4705
5048
  !dragEvent.controlled
4706
5049
  ) {
4707
- panelBefore.onCollapseChange.current(true);
4708
- return { dragOvershoot: newDragOvershoot };
5050
+ <span class="cstat-no" title="statement not covered" > panelBefore.onCollapseChange.current(true);</span>
5051
+ <span class="cstat-no" title="statement not covered" > return { dragOvershoot: newDragOvershoot };</span>
4709
5052
  }
4710
5053
  &nbsp;
4711
5054
  // Make it collapsed
4712
- panelBefore.collapsed = true;
4713
- panelBeforeNewValue = getUnitPixelValue(context, panelBefore.collapsedSize);
5055
+ <span class="cstat-no" title="statement not covered" > panelBefore.collapsed = true;</span>
5056
+ <span class="cstat-no" title="statement not covered" > panelBeforeNewValue = getUnitPixelValue(context, panelBefore.collapsedSize);</span>
4714
5057
  // Add the extra space created to the before panel
4715
- panelAfterNewValue = panelAfterNewValue.add(
5058
+ <span class="cstat-no" title="statement not covered" > panelAfterNewValue = panelAfterNewValue.add(</span>
4716
5059
  panelBeforePreviousValue.minus(panelBeforeNewValue)
4717
5060
  );
4718
5061
  &nbsp;
4719
- if (
5062
+ <span class="cstat-no" title="statement not covered" > if (</span>
4720
5063
  panelBefore.onCollapseChange?.current &amp;&amp;
4721
5064
  !panelBefore.collapseIsControlled &amp;&amp;
4722
5065
  !dragEvent.controlled
4723
5066
  ) {
4724
- panelBefore.onCollapseChange.current(true);
5067
+ <span class="cstat-no" title="statement not covered" > panelBefore.onCollapseChange.current(true);</span>
4725
5068
  }
4726
5069
  }
4727
5070
  &nbsp;
4728
- panelBefore.currentValue = { type: "pixel", value: panelBeforeNewValue };
4729
- panelAfter.currentValue = { type: "pixel", value: panelAfterNewValue };
5071
+ <span class="cstat-no" title="statement not covered" > panelBefore.currentValue = { type: "pixel", value: panelBeforeNewValue };</span>
5072
+ <span class="cstat-no" title="statement not covered" > panelAfter.currentValue = { type: "pixel", value: panelAfterNewValue };</span>
4730
5073
  &nbsp;
4731
- const leftoverSpace = new Big(getGroupSize(context)).minus(
5074
+ const leftoverSpace = <span class="cstat-no" title="statement not covered" >new Big(getGroupSize(context)).minus(</span>
4732
5075
  newItems.reduce(
4733
- (acc, b) =&gt; acc.add(isPanelData(b) ? b.currentValue.value : b.size.value),
5076
+ <span class="fstat-no" title="function not covered" > (a</span>cc, b) =&gt; <span class="cstat-no" title="statement not covered" >acc.add(isPanelData(b) ? b.currentValue.value : b.size.value),</span>
4734
5077
  new Big(0)
4735
5078
  )
4736
5079
  );
4737
5080
  &nbsp;
4738
- if (!leftoverSpace.eq(0)) {
4739
- panelBefore.currentValue.value =
4740
- panelBefore.currentValue.value.add(leftoverSpace);
5081
+ <span class="cstat-no" title="statement not covered" > if (!leftoverSpace.eq(0)) {</span>
5082
+ <span class="cstat-no" title="statement not covered" > panelBefore.currentValue.value = clampUnit(</span>
5083
+ context,
5084
+ panelBefore,
5085
+ panelBefore.currentValue.value.add(leftoverSpace)
5086
+ );
4741
5087
  }
4742
5088
  &nbsp;
4743
- return { items: newItems };
5089
+ <span class="cstat-no" title="statement not covered" > return { items: newItems };</span>
4744
5090
  }
4745
5091
  &nbsp;
4746
5092
  /** Converts the items to percentages */
4747
- function commitLayout(context: GroupMachineContextValue) {
4748
- const newItems = [...context.items];
5093
+ function <span class="fstat-no" title="function not covered" >commitLayout(c</span>ontext: GroupMachineContextValue) {
5094
+ const newItems = <span class="cstat-no" title="statement not covered" >[...context.items];</span>
4749
5095
  &nbsp;
4750
5096
  // First set all the static width
4751
- newItems.forEach((item, index) =&gt; {
4752
- if (item.type !== "panel") {
4753
- return;
5097
+ <span class="cstat-no" title="statement not covered" > newItems.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, index) =&gt; {</span>
5098
+ <span class="cstat-no" title="statement not covered" > if (item.type !== "panel") {</span>
5099
+ <span class="cstat-no" title="statement not covered" > return;</span>
4754
5100
  }
4755
5101
  &nbsp;
4756
- if (item.collapsed) {
4757
- newItems[index] = {
5102
+ <span class="cstat-no" title="statement not covered" > if (item.collapsed) {</span>
5103
+ <span class="cstat-no" title="statement not covered" > newItems[index] = {</span>
4758
5104
  ...item,
4759
5105
  currentValue: item.collapsedSize,
4760
5106
  };
4761
5107
  }
4762
5108
  });
4763
5109
  &nbsp;
4764
- const staticWidth = getStaticWidth({ ...context, items: newItems });
5110
+ const staticWidth = <span class="cstat-no" title="statement not covered" >getStaticWidth({ ...context, items: newItems });</span>
4765
5111
  &nbsp;
4766
- newItems.forEach((item, index) =&gt; {
4767
- if (item.type !== "panel" || item.collapsed) {
4768
- return;
5112
+ <span class="cstat-no" title="statement not covered" > newItems.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, index) =&gt; {</span>
5113
+ <span class="cstat-no" title="statement not covered" > if (item.type !== "panel" || item.collapsed) {</span>
5114
+ <span class="cstat-no" title="statement not covered" > return;</span>
4769
5115
  }
4770
5116
  &nbsp;
4771
- newItems[index] = {
5117
+ <span class="cstat-no" title="statement not covered" > newItems[index] = {</span>
4772
5118
  ...item,
4773
5119
  currentValue: {
4774
5120
  type: "percent",
@@ -4779,19 +5125,19 @@ function commitLayout(context: GroupMachineContextValue) {
4779
5125
  };
4780
5126
  });
4781
5127
  &nbsp;
4782
- return newItems;
5128
+ <span class="cstat-no" title="statement not covered" > return newItems;</span>
4783
5129
  }
4784
5130
  &nbsp;
4785
- export function dragHandlePayload({
5131
+ export function <span class="fstat-no" title="function not covered" >dragHandlePayload({</span>
4786
5132
  delta,
4787
- orientation = "horizontal",
4788
- shiftKey = false,
5133
+ orientation = <span class="branch-0 cbranch-no" title="branch not covered" >"horizontal",</span>
5134
+ shiftKey = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
4789
5135
  }: {
4790
5136
  delta: number;
4791
5137
  orientation?: Orientation;
4792
5138
  shiftKey?: boolean;
4793
5139
  }) {
4794
- return {
5140
+ <span class="cstat-no" title="statement not covered" > return {</span>
4795
5141
  type: "move",
4796
5142
  pointerType: "keyboard",
4797
5143
  shiftKey,
@@ -4804,7 +5150,7 @@ export function dragHandlePayload({
4804
5150
  }
4805
5151
  &nbsp;
4806
5152
  /** Iteratively applies a large delta value simulating a user's drag */
4807
- function iterativelyUpdateLayout({
5153
+ function <span class="fstat-no" title="function not covered" >iterativelyUpdateLayout({</span>
4808
5154
  context,
4809
5155
  handleId,
4810
5156
  delta,
@@ -4819,10 +5165,10 @@ function iterativelyUpdateLayout({
4819
5165
  controlled?: boolean;
4820
5166
  disregardCollapseBuffer?: boolean;
4821
5167
  }) {
4822
- let newContext: Partial&lt;GroupMachineContextValue&gt; = context;
5168
+ let newContext: Partial&lt;GroupMachineContextValue&gt; = <span class="cstat-no" title="statement not covered" >context;</span>
4823
5169
  &nbsp;
4824
- for (let i = 0; i &lt; delta.abs().toNumber(); i++) {
4825
- newContext = updateLayout(
5170
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0; i</span> &lt; delta.abs().toNumber(); i++) {</span>
5171
+ <span class="cstat-no" title="statement not covered" > newContext = updateLayout(</span>
4826
5172
  {
4827
5173
  ...context,
4828
5174
  ...newContext,
@@ -4840,23 +5186,23 @@ function iterativelyUpdateLayout({
4840
5186
  );
4841
5187
  }
4842
5188
  &nbsp;
4843
- return newContext;
5189
+ <span class="cstat-no" title="statement not covered" > return newContext;</span>
4844
5190
  }
4845
5191
  &nbsp;
4846
- function applyDeltaInBothDirections(
5192
+ function <span class="fstat-no" title="function not covered" >applyDeltaInBothDirections(</span>
4847
5193
  context: GroupMachineContextValue,
4848
5194
  newItems: Array&lt;Item&gt;,
4849
5195
  itemIndex: number,
4850
5196
  delta: Big.Big
4851
5197
  ) {
4852
- let hasTriedBothDirections = false;
4853
- let direction = 1;
4854
- let deltaLeft = new Big(delta);
5198
+ let hasTriedBothDirections = <span class="cstat-no" title="statement not covered" >false;</span>
5199
+ let direction = <span class="cstat-no" title="statement not covered" >1;</span>
5200
+ let deltaLeft = <span class="cstat-no" title="statement not covered" >new Big(delta);</span>
4855
5201
  &nbsp;
4856
5202
  // Starting from where the items was removed add space to the panels around it.
4857
5203
  // This is only needed for conditional rendering.
4858
- while (deltaLeft.toNumber() !== 0) {
4859
- const targetPanel = findPanelWithSpace(
5204
+ <span class="cstat-no" title="statement not covered" > while (deltaLeft.toNumber() !== 0) {</span>
5205
+ const targetPanel = <span class="cstat-no" title="statement not covered" >findPanelWithSpace(</span>
4860
5206
  context,
4861
5207
  newItems,
4862
5208
  itemIndex + direction,
@@ -4864,23 +5210,98 @@ function applyDeltaInBothDirections(
4864
5210
  delta.gt(0) ? "add" : "subtract"
4865
5211
  );
4866
5212
  &nbsp;
4867
- if (!targetPanel) {
4868
- if (hasTriedBothDirections) {
4869
- break;
5213
+ <span class="cstat-no" title="statement not covered" > if (!targetPanel) {</span>
5214
+ <span class="cstat-no" title="statement not covered" > if (hasTriedBothDirections) {</span>
5215
+ <span class="cstat-no" title="statement not covered" > break;</span>
4870
5216
  } else {
4871
- direction = direction === 1 ? -1 : 1;
4872
- hasTriedBothDirections = true;
4873
- continue;
5217
+ <span class="cstat-no" title="statement not covered" > direction = direction === 1 ? -1 : 1;</span>
5218
+ <span class="cstat-no" title="statement not covered" > hasTriedBothDirections = true;</span>
5219
+ <span class="cstat-no" title="statement not covered" > continue;</span>
4874
5220
  }
4875
5221
  }
4876
5222
  &nbsp;
4877
- const oldValue = targetPanel.currentValue.value;
4878
- const newValue = clampUnit(context, targetPanel, oldValue.add(deltaLeft));
5223
+ const oldValue = <span class="cstat-no" title="statement not covered" >targetPanel.currentValue.value;</span>
5224
+ const newValue = <span class="cstat-no" title="statement not covered" >clampUnit(context, targetPanel, oldValue.add(deltaLeft));</span>
5225
+ &nbsp;
5226
+ <span class="cstat-no" title="statement not covered" > targetPanel.currentValue.value = newValue;</span>
5227
+ <span class="cstat-no" title="statement not covered" > deltaLeft = deltaLeft.sub(newValue.sub(oldValue));</span>
5228
+ <span class="cstat-no" title="statement not covered" > direction = direction === 1 ? -1 : 1;</span>
5229
+ }
5230
+ }
5231
+ &nbsp;
5232
+ /**
5233
+ * A layout might overflow at small screen sizes.
5234
+ * This function tries to fix that by:
5235
+ *
5236
+ * 1. It will try to collapse a panel if it can.
5237
+ */
5238
+ function <span class="fstat-no" title="function not covered" >handleOverflow(c</span>ontext: GroupMachineContextValue) {
5239
+ // If we haven't measured yet we can't do anything
5240
+ <span class="cstat-no" title="statement not covered" > if (</span>
5241
+ context.items.some(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >isPanelData(i) &amp;&amp; i.currentValue.value.eq(-1))</span>
5242
+ ) {
5243
+ <span class="cstat-no" title="statement not covered" > return context;</span>
5244
+ }
5245
+ &nbsp;
5246
+ const groupSize = <span class="cstat-no" title="statement not covered" >new Big(getGroupSize(context));</span>
5247
+ const nonStaticWidth = <span class="cstat-no" title="statement not covered" >groupSize.sub(getStaticWidth(context).toNumber());</span>
5248
+ const pixelItems = <span class="cstat-no" title="statement not covered" >context.items.map(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; {</span>
5249
+ <span class="cstat-no" title="statement not covered" > if (isPanelHandle(i)) <span class="cstat-no" title="statement not covered" >return i.size.value;</span></span>
5250
+ <span class="cstat-no" title="statement not covered" > if (i.collapsed) <span class="cstat-no" title="statement not covered" >return getUnitPixelValue(context, i.currentValue);</span></span>
5251
+ &nbsp;
5252
+ const pixel =
5253
+ (<span class="cstat-no" title="statement not covered" >i.currentValue.type === "pixel" &amp;&amp; i.currentValue.value) ||</span>
5254
+ i.currentValue.value.mul(nonStaticWidth);
5255
+ &nbsp;
5256
+ <span class="cstat-no" title="statement not covered" > return clampUnit(context, i, pixel);</span>
5257
+ });
5258
+ const totalSize = <span class="cstat-no" title="statement not covered" >pixelItems.reduce(<span class="fstat-no" title="function not covered" >(a</span>cc, i) =&gt; <span class="cstat-no" title="statement not covered" >acc.add(i), n</span>ew Big(0));</span>
5259
+ const overflow = <span class="cstat-no" title="statement not covered" >totalSize.abs().sub(groupSize);</span>
5260
+ &nbsp;
5261
+ <span class="cstat-no" title="statement not covered" > if (overflow.eq(0) || groupSize.eq(0)) {</span>
5262
+ <span class="cstat-no" title="statement not covered" > return context;</span>
5263
+ }
5264
+ &nbsp;
5265
+ let newContext = <span class="cstat-no" title="statement not covered" >{ ...context, items: prepareItems(context) };</span>
5266
+ &nbsp;
5267
+ const collapsiblePanel = <span class="cstat-no" title="statement not covered" >newContext.items.find(<span class="fstat-no" title="function not covered" >(i</span>): i is PanelData =&gt;</span>
5268
+ <span class="cstat-no" title="statement not covered" > Boolean(isPanelData(i) &amp;&amp; i.collapsible)</span>
5269
+ );
5270
+ &nbsp;
5271
+ <span class="cstat-no" title="statement not covered" > if (collapsiblePanel) {</span>
5272
+ const collapsiblePanelIndex = <span class="cstat-no" title="statement not covered" >newContext.items.findIndex(</span>
5273
+ <span class="fstat-no" title="function not covered" > (i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === collapsiblePanel.id</span>
5274
+ );
5275
+ const handleId = <span class="cstat-no" title="statement not covered" >getHandleForPanelId(newContext, collapsiblePanel.id);</span>
5276
+ const sizeChange = <span class="cstat-no" title="statement not covered" >collapsiblePanel.currentValue.value.sub(</span>
5277
+ getUnitPixelValue(newContext, collapsiblePanel.collapsedSize)
5278
+ );
4879
5279
  &nbsp;
4880
- targetPanel.currentValue.value = newValue;
4881
- deltaLeft = deltaLeft.sub(newValue.sub(oldValue));
4882
- direction = direction === 1 ? -1 : 1;
5280
+ // Try to collapse the panel
5281
+ <span class="cstat-no" title="statement not covered" > newContext = {</span>
5282
+ ...newContext,
5283
+ ...iterativelyUpdateLayout({
5284
+ handleId: handleId.item.id,
5285
+ delta: sizeChange,
5286
+ direction: (handleId.direction * -1) as -1 | 1,
5287
+ context: {
5288
+ ...newContext,
5289
+ // act like its the old size so the space is distributed correctly
5290
+ size: { width: totalSize.toNumber(), height: totalSize.toNumber() },
5291
+ },
5292
+ }),
5293
+ };
5294
+ &nbsp;
5295
+ // Then remove all the overflow
5296
+ <span class="cstat-no" title="statement not covered" > applyDeltaInBothDirections(</span>
5297
+ newContext,
5298
+ newContext.items,
5299
+ collapsiblePanelIndex,
5300
+ overflow.neg()
5301
+ );
4883
5302
  }
5303
+ &nbsp;
5304
+ <span class="cstat-no" title="statement not covered" > return { ...newContext, items: commitLayout(newContext) };</span>
4884
5305
  }
4885
5306
  &nbsp;
4886
5307
  // #endregion
@@ -4898,50 +5319,59 @@ interface AnimationActorOutput {
4898
5319
  action: "expand" | "collapse";
4899
5320
  }
4900
5321
  &nbsp;
5322
+ function <span class="fstat-no" title="function not covered" >getDeltaForEvent(</span>
5323
+ context: GroupMachineContextValue,
5324
+ event: CollapsePanelEvent | ExpandPanelEvent
5325
+ ) {
5326
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, event.panelId);</span>
5327
+ &nbsp;
5328
+ <span class="cstat-no" title="statement not covered" > if (event.type === "expandPanel") {</span>
5329
+ <span class="cstat-no" title="statement not covered" > return new Big(</span>
5330
+ panel.sizeBeforeCollapse ?? getUnitPixelValue(context, panel.min)
5331
+ ).minus(panel.currentValue.value);
5332
+ }
5333
+ &nbsp;
5334
+ const collapsedSize = <span class="cstat-no" title="statement not covered" >getUnitPixelValue(context, panel.collapsedSize);</span>
5335
+ <span class="cstat-no" title="statement not covered" > return panel.currentValue.value.minus(collapsedSize);</span>
5336
+ }
5337
+ &nbsp;
4901
5338
  const animationActor = fromPromise&lt;
4902
5339
  AnimationActorOutput | undefined,
4903
5340
  AnimationActorInput
4904
5341
  &gt;(
4905
- ({ input: { send, context, event } }) =&gt;
4906
- new Promise&lt;AnimationActorOutput | undefined&gt;((resolve) =&gt; {
4907
- const panel = getPanelWithId(context, event.panelId);
4908
- const handle = getHandleForPanelId(context, event.panelId);
4909
- &nbsp;
4910
- let direction = new Big(handle.direction);
4911
- let fullDelta = new Big(0);
4912
- &nbsp;
4913
- if (event.type === "expandPanel") {
4914
- fullDelta = new Big(
4915
- panel.sizeBeforeCollapse ?? getUnitPixelValue(context, panel.min)
4916
- ).minus(panel.currentValue.value);
4917
- } else {
4918
- const collapsedSize = getUnitPixelValue(context, panel.collapsedSize);
5342
+ <span class="fstat-no" title="function not covered" > ({</span> input: { send, context, event } }) =&gt;
5343
+ <span class="cstat-no" title="statement not covered" > new Promise&lt;AnimationActorOutput | undefined&gt;(<span class="fstat-no" title="function not covered" >(r</span>esolve) =&gt; {</span>
5344
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, event.panelId);</span>
5345
+ const handle = <span class="cstat-no" title="statement not covered" >getHandleForPanelId(context, event.panelId);</span>
4919
5346
  &nbsp;
4920
- panel.sizeBeforeCollapse = panel.currentValue.value.toNumber();
4921
- direction = direction.mul(new Big(-1));
4922
- fullDelta = panel.currentValue.value.minus(collapsedSize);
5347
+ let direction = <span class="cstat-no" title="statement not covered" >new Big(handle.direction);</span>
5348
+ const fullDelta = <span class="cstat-no" title="statement not covered" >getDeltaForEvent(context, event);</span>
5349
+ &nbsp;
5350
+ <span class="cstat-no" title="statement not covered" > if (event.type === "collapsePanel") {</span>
5351
+ <span class="cstat-no" title="statement not covered" > panel.sizeBeforeCollapse = panel.currentValue.value.toNumber();</span>
5352
+ <span class="cstat-no" title="statement not covered" > direction = direction.mul(new Big(-1));</span>
4923
5353
  }
4924
5354
  &nbsp;
4925
- const fps = 60;
4926
- const { duration, ease } = getCollapseAnimation(panel);
4927
- const totalFrames = Math.ceil(
5355
+ const fps = <span class="cstat-no" title="statement not covered" >60;</span>
5356
+ const { duration, ease } = <span class="cstat-no" title="statement not covered" >getCollapseAnimation(panel);</span>
5357
+ const totalFrames = <span class="cstat-no" title="statement not covered" >Math.ceil(</span>
4928
5358
  panel.collapseAnimation ? duration / (1000 / fps) : 1
4929
5359
  );
4930
- let frame = 0;
4931
- let appliedDelta = new Big(0);
5360
+ let frame = <span class="cstat-no" title="statement not covered" >0;</span>
5361
+ let appliedDelta = <span class="cstat-no" title="statement not covered" >new Big(0);</span>
4932
5362
  &nbsp;
4933
- function renderFrame() {
4934
- const progress = ++frame / totalFrames;
4935
- const e = new Big(panel.collapseAnimation ? ease(progress) : 1);
4936
- const delta = e.mul(fullDelta).sub(appliedDelta).mul(direction);
5363
+ function <span class="fstat-no" title="function not covered" >renderFrame() {</span>
5364
+ const progress = <span class="cstat-no" title="statement not covered" >++frame / totalFrames;</span>
5365
+ const e = <span class="cstat-no" title="statement not covered" >new Big(panel.collapseAnimation ? ease(progress) : 1);</span>
5366
+ const delta = <span class="cstat-no" title="statement not covered" >e.mul(fullDelta).sub(appliedDelta).mul(direction);</span>
4937
5367
  &nbsp;
4938
- send({
5368
+ <span class="cstat-no" title="statement not covered" > send({</span>
4939
5369
  type: "applyDelta",
4940
5370
  handleId: handle.item.id,
4941
5371
  delta: delta.toNumber(),
4942
5372
  });
4943
5373
  &nbsp;
4944
- appliedDelta = appliedDelta.add(
5374
+ <span class="cstat-no" title="statement not covered" > appliedDelta = appliedDelta.add(</span>
4945
5375
  delta
4946
5376
  .abs()
4947
5377
  .mul(
@@ -4952,16 +5382,16 @@ const animationActor = fromPromise&lt;
4952
5382
  )
4953
5383
  );
4954
5384
  &nbsp;
4955
- if (e.eq(1)) {
4956
- const action = event.type === "expandPanel" ? "expand" : "collapse";
4957
- resolve({ panelId: panel.id, action });
4958
- return false;
5385
+ <span class="cstat-no" title="statement not covered" > if (e.eq(1)) {</span>
5386
+ const action = <span class="cstat-no" title="statement not covered" >event.type === "expandPanel" ? "expand" : "collapse";</span>
5387
+ <span class="cstat-no" title="statement not covered" > resolve({ panelId: panel.id, action });</span>
5388
+ <span class="cstat-no" title="statement not covered" > return false;</span>
4959
5389
  }
4960
5390
  &nbsp;
4961
- return true;
5391
+ <span class="cstat-no" title="statement not covered" > return true;</span>
4962
5392
  }
4963
5393
  &nbsp;
4964
- raf(renderFrame);
5394
+ <span class="cstat-no" title="statement not covered" > raf(renderFrame);</span>
4965
5395
  })
4966
5396
  );
4967
5397
  &nbsp;
@@ -4977,7 +5407,7 @@ export const groupMachine = createMachine(
4977
5407
  initialItems?: Item[];
4978
5408
  },
4979
5409
  },
4980
- context: ({ input }) =&gt; ({
5410
+ context: <span class="fstat-no" title="function not covered" >({</span> input }) =&gt; (<span class="cstat-no" title="statement not covered" >{</span>
4981
5411
  size: { width: 0, height: 0 },
4982
5412
  items: input.initialItems || [],
4983
5413
  orientation: input.orientation || "horizontal",
@@ -4987,7 +5417,7 @@ export const groupMachine = createMachine(
4987
5417
  states: {
4988
5418
  idle: {
4989
5419
  on: {
4990
- setActualItemsSize: { actions: ["recordActualItemSize"] },
5420
+ setActualItemsSize: { actions: ["recordActualItemSize", "onResize"] },
4991
5421
  dragHandleStart: { target: "dragging" },
4992
5422
  setPanelPixelSize: {
4993
5423
  actions: [
@@ -5006,6 +5436,8 @@ export const groupMachine = createMachine(
5006
5436
  { target: "togglingCollapse" },
5007
5437
  ],
5008
5438
  expandPanel: [
5439
+ // This will match if we can't expand and the expansion won't happen
5440
+ { guard: "cannotExpandPanel" },
5009
5441
  {
5010
5442
  actions: "notifyCollapseToggle",
5011
5443
  guard: "shouldNotifyCollapseToggle",
@@ -5034,7 +5466,7 @@ export const groupMachine = createMachine(
5034
5466
  entry: ["prepare"],
5035
5467
  invoke: {
5036
5468
  src: "animation",
5037
- input: (i) =&gt; ({ ...i, send: i.self.send }),
5469
+ input: <span class="fstat-no" title="function not covered" >(i</span>) =&gt; (<span class="cstat-no" title="statement not covered" >{ ...i, send: i.self.send }),</span>
5038
5470
  onDone: {
5039
5471
  target: "idle",
5040
5472
  actions: ["onToggleCollapseComplete", "commit", "onAutosave"],
@@ -5069,99 +5501,134 @@ export const groupMachine = createMachine(
5069
5501
  },
5070
5502
  {
5071
5503
  guards: {
5072
- shouldNotifyCollapseToggle: ({ context, event }) =&gt; {
5073
- isEvent(event, ["collapsePanel", "expandPanel"]);
5074
- const panel = getPanelWithId(context, event.panelId);
5075
- return !event.controlled &amp;&amp; panel.collapseIsControlled === true;
5504
+ shouldNotifyCollapseToggle: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5505
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["collapsePanel", "expandPanel"]);</span>
5506
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, event.panelId);</span>
5507
+ <span class="cstat-no" title="statement not covered" > return !event.controlled &amp;&amp; panel.collapseIsControlled === true;</span>
5076
5508
  },
5077
- shouldCollapseToggle: ({ context, event }) =&gt; {
5078
- isEvent(event, ["collapsePanel", "expandPanel"]);
5079
- const panel = getPanelWithId(context, event.panelId);
5080
- return panel.collapseIsControlled === true;
5509
+ shouldCollapseToggle: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5510
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["collapsePanel", "expandPanel"]);</span>
5511
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, event.panelId);</span>
5512
+ <span class="cstat-no" title="statement not covered" > return panel.collapseIsControlled === true;</span>
5513
+ },
5514
+ cannotExpandPanel: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5515
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["expandPanel"]);</span>
5516
+ const delta = <span class="cstat-no" title="statement not covered" >getDeltaForEvent(context, event);</span>
5517
+ const handle = <span class="cstat-no" title="statement not covered" >getHandleForPanelId(context, event.panelId);</span>
5518
+ const pixelItems = <span class="cstat-no" title="statement not covered" >prepareItems(context);</span>
5519
+ &nbsp;
5520
+ let interimContext = <span class="cstat-no" title="statement not covered" >{ ...context, items: pixelItems };</span>
5521
+ <span class="cstat-no" title="statement not covered" > interimContext = {</span>
5522
+ ...interimContext,
5523
+ ...iterativelyUpdateLayout({
5524
+ context: interimContext,
5525
+ handleId: handle.item.id,
5526
+ controlled: event.controlled,
5527
+ delta: delta,
5528
+ direction: handle.direction,
5529
+ }),
5530
+ };
5531
+ const updatedPanel = <span class="cstat-no" title="statement not covered" >interimContext.items.find(</span>
5532
+ <span class="fstat-no" title="function not covered" > (i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === event.panelId</span>
5533
+ );
5534
+ const totalSize = <span class="cstat-no" title="statement not covered" >interimContext.items.reduce(</span>
5535
+ <span class="fstat-no" title="function not covered" > (a</span>cc, i) =&gt;
5536
+ <span class="cstat-no" title="statement not covered" > acc.add(isPanelData(i) ? i.currentValue.value : i.size.value),</span>
5537
+ new Big(0)
5538
+ );
5539
+ const didExpand =
5540
+ <span class="cstat-no" title="statement not covered" > updatedPanel &amp;&amp;</span>
5541
+ isPanelData(updatedPanel) &amp;&amp;
5542
+ !updatedPanel.currentValue.value.eq(updatedPanel.collapsedSize.value);
5543
+ &nbsp;
5544
+ <span class="cstat-no" title="statement not covered" > return totalSize.gt(getGroupSize(context)) || !didExpand;</span>
5081
5545
  },
5082
5546
  },
5083
5547
  actors: {
5084
5548
  animation: animationActor,
5085
5549
  },
5086
5550
  actions: {
5087
- notifyCollapseToggle: ({ context, event }) =&gt; {
5088
- isEvent(event, ["collapsePanel", "expandPanel"]);
5089
- const panel = getPanelWithId(context, event.panelId);
5090
- panel.onCollapseChange?.current?.(!panel.collapsed);
5551
+ notifyCollapseToggle: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5552
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["collapsePanel", "expandPanel"]);</span>
5553
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, event.panelId);</span>
5554
+ <span class="cstat-no" title="statement not covered" > panel.onCollapseChange?.current?.(!panel.collapsed);</span>
5091
5555
  },
5092
- runCollapseToggle: enqueueActions(({ context, event, enqueue }) =&gt; {
5093
- isEvent(event, ["collapsePanel", "expandPanel"]);
5556
+ runCollapseToggle: enqueueActions(<span class="fstat-no" title="function not covered" >({</span> context, event, enqueue }) =&gt; {
5557
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["collapsePanel", "expandPanel"]);</span>
5094
5558
  &nbsp;
5095
- const handle = getHandleForPanelId(context, event.panelId);
5559
+ const handle = <span class="cstat-no" title="statement not covered" >getHandleForPanelId(context, event.panelId);</span>
5096
5560
  // When collapsing a panel it will be in the opposite direction
5097
5561
  // that handle assumes
5098
5562
  const delta =
5099
- event.type === "collapsePanel"
5563
+ <span class="cstat-no" title="statement not covered" > event.type === "collapsePanel"</span>
5100
5564
  ? handle.direction * -1
5101
5565
  : handle.direction;
5102
- const newContext = updateLayout(context, {
5566
+ const newContext = <span class="cstat-no" title="statement not covered" >updateLayout(context, {</span>
5103
5567
  handleId: handle.item.id,
5104
5568
  type: "dragHandle",
5105
5569
  controlled: event.controlled,
5106
5570
  value: dragHandlePayload({ delta, orientation: context.orientation }),
5107
5571
  });
5108
5572
  &nbsp;
5109
- enqueue.assign(newContext);
5573
+ <span class="cstat-no" title="statement not covered" > enqueue.assign(newContext);</span>
5110
5574
  }),
5111
5575
  onToggleCollapseComplete: assign({
5112
- items: ({ context, event: e }) =&gt; {
5576
+ items: <span class="fstat-no" title="function not covered" >({</span> context, event: e }) =&gt; {
5113
5577
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5114
- const output = (e as any).output as AnimationActorOutput;
5115
- invariant(output, "Expected output from animation actor");
5578
+ const output = (<span class="cstat-no" title="statement not covered" >e as any).output as AnimationActorOutput;</span>
5579
+ <span class="cstat-no" title="statement not covered" > invariant(output, "Expected output from animation actor");</span>
5116
5580
  &nbsp;
5117
- const panel = getPanelWithId(context, output.panelId);
5118
- panel.collapsed = output.action === "collapse";
5581
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, output.panelId);</span>
5582
+ <span class="cstat-no" title="statement not covered" > panel.collapsed = output.action === "collapse";</span>
5119
5583
  &nbsp;
5120
- if (panel.collapsed) {
5121
- panel.currentValue = panel.collapsedSize;
5584
+ <span class="cstat-no" title="statement not covered" > if (panel.collapsed) {</span>
5585
+ <span class="cstat-no" title="statement not covered" > panel.currentValue = panel.collapsedSize;</span>
5122
5586
  }
5123
5587
  &nbsp;
5124
- return context.items;
5588
+ <span class="cstat-no" title="statement not covered" > return context.items;</span>
5125
5589
  },
5126
5590
  }),
5127
- updateSize: assign({
5128
- size: ({ event }) =&gt; {
5129
- isEvent(event, ["setSize"]);
5130
- return event.size;
5131
- },
5591
+ updateSize: enqueueActions(<span class="fstat-no" title="function not covered" >({</span> context, event, enqueue }) =&gt; {
5592
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["setSize"]);</span>
5593
+ &nbsp;
5594
+ <span class="cstat-no" title="statement not covered" > if (event.handleOverflow) {</span>
5595
+ <span class="cstat-no" title="statement not covered" > enqueue.assign(handleOverflow({ ...context, size: event.size }));</span>
5596
+ } else {
5597
+ <span class="cstat-no" title="statement not covered" > enqueue.assign({ size: event.size });</span>
5598
+ }
5132
5599
  }),
5133
5600
  recordActualItemSize: assign({
5134
- items: ({ context, event }) =&gt; {
5135
- isEvent(event, ["setActualItemsSize"]);
5601
+ items: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5602
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["setActualItemsSize"]);</span>
5136
5603
  &nbsp;
5137
- const orientation = context.orientation;
5604
+ const orientation = <span class="cstat-no" title="statement not covered" >context.orientation;</span>
5138
5605
  &nbsp;
5139
- for (const [id, size] of Object.entries(event.childrenSizes)) {
5140
- const item = context.items.find((i) =&gt; i.id === id);
5606
+ <span class="cstat-no" title="statement not covered" > for (const [id, size] of Object.entries(event.childrenSizes)) {</span>
5607
+ const item = <span class="cstat-no" title="statement not covered" >context.items.find(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === id)</span>;</span>
5141
5608
  &nbsp;
5142
- if (!isPanelData(item)) {
5143
- continue;
5609
+ <span class="cstat-no" title="statement not covered" > if (!isPanelData(item)) {</span>
5610
+ <span class="cstat-no" title="statement not covered" > continue;</span>
5144
5611
  }
5145
5612
  &nbsp;
5146
- item.currentValue = makePixelUnit(
5613
+ <span class="cstat-no" title="statement not covered" > item.currentValue = makePixelUnit(</span>
5147
5614
  orientation === "horizontal" ? size.width : size.height
5148
5615
  );
5149
5616
  }
5150
5617
  &nbsp;
5151
- return commitLayout(context);
5618
+ <span class="cstat-no" title="statement not covered" > return commitLayout(context);</span>
5152
5619
  },
5153
5620
  }),
5154
5621
  updateOrientation: assign({
5155
- orientation: ({ event }) =&gt; {
5156
- isEvent(event, ["setOrientation"]);
5157
- return event.orientation;
5622
+ orientation: <span class="fstat-no" title="function not covered" >({</span> event }) =&gt; {
5623
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["setOrientation"]);</span>
5624
+ <span class="cstat-no" title="statement not covered" > return event.orientation;</span>
5158
5625
  },
5159
5626
  }),
5160
5627
  assignPanelData: assign({
5161
- items: ({ context, event }) =&gt; {
5162
- isEvent(event, ["registerPanel"]);
5628
+ items: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5629
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["registerPanel"]);</span>
5163
5630
  &nbsp;
5164
- return addDeDuplicatedItems(context.items, {
5631
+ <span class="cstat-no" title="statement not covered" > return addDeDuplicatedItems(context.items, {</span>
5165
5632
  type: "panel",
5166
5633
  currentValue: makePixelUnit(-1),
5167
5634
  ...event.data,
@@ -5169,62 +5636,62 @@ export const groupMachine = createMachine(
5169
5636
  },
5170
5637
  }),
5171
5638
  onRegisterDynamicPanel: assign({
5172
- items: ({ context, event }) =&gt; {
5173
- isEvent(event, ["registerDynamicPanel"]);
5639
+ items: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5640
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["registerDynamicPanel"]);</span>
5174
5641
  &nbsp;
5175
- let currentValue: ParsedUnit = makePixelUnit(0);
5642
+ let currentValue: ParsedUnit = <span class="cstat-no" title="statement not covered" >makePixelUnit(0);</span>
5176
5643
  &nbsp;
5177
- if (
5644
+ <span class="cstat-no" title="statement not covered" > if (</span>
5178
5645
  event.data.collapsible &amp;&amp;
5179
5646
  event.data.collapsed &amp;&amp;
5180
5647
  event.data.collapsedSize
5181
5648
  ) {
5182
- currentValue = event.data.collapsedSize;
5183
- } else if (event.data.default) {
5184
- currentValue = event.data.default;
5649
+ <span class="cstat-no" title="statement not covered" > currentValue = event.data.collapsedSize;</span>
5650
+ <span class="cstat-no" title="statement not covered" > } else if (event.data.default) {</span>
5651
+ <span class="cstat-no" title="statement not covered" > currentValue = event.data.default;</span>
5185
5652
  } else {
5186
- currentValue = event.data.min;
5653
+ <span class="cstat-no" title="statement not covered" > currentValue = event.data.min;</span>
5187
5654
  }
5188
5655
  &nbsp;
5189
- const newItems = addDeDuplicatedItems(context.items, {
5656
+ const newItems = <span class="cstat-no" title="statement not covered" >addDeDuplicatedItems(context.items, {</span>
5190
5657
  type: "panel",
5191
5658
  ...event.data,
5192
5659
  currentValue,
5193
5660
  });
5194
- const itemIndex = newItems.findIndex(
5195
- (item) =&gt; item.id === event.data.id
5661
+ const itemIndex = <span class="cstat-no" title="statement not covered" >newItems.findIndex(</span>
5662
+ <span class="fstat-no" title="function not covered" > (i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.id === event.data.id</span>
5196
5663
  );
5197
- const newContext = { ...context, items: newItems };
5198
- const overflowDueToHandles = context.items
5199
- .reduce((acc, i) =&gt; {
5200
- if (isPanelHandle(i)) {
5201
- return acc.add(getUnitPixelValue(context, i.size));
5664
+ const newContext = <span class="cstat-no" title="statement not covered" >{ ...context, items: newItems };</span>
5665
+ const overflowDueToHandles = <span class="cstat-no" title="statement not covered" >context.items</span>
5666
+ .reduce(<span class="fstat-no" title="function not covered" >(a</span>cc, i) =&gt; {
5667
+ <span class="cstat-no" title="statement not covered" > if (isPanelHandle(i)) {</span>
5668
+ <span class="cstat-no" title="statement not covered" > return acc.add(getUnitPixelValue(context, i.size));</span>
5202
5669
  }
5203
5670
  &nbsp;
5204
- return acc.add(i.currentValue.value);
5671
+ <span class="cstat-no" title="statement not covered" > return acc.add(i.currentValue.value);</span>
5205
5672
  }, new Big(0))
5206
5673
  .minus(getGroupSize(context));
5207
5674
  &nbsp;
5208
- applyDeltaInBothDirections(
5675
+ <span class="cstat-no" title="statement not covered" > applyDeltaInBothDirections(</span>
5209
5676
  newContext,
5210
5677
  newItems,
5211
5678
  itemIndex,
5212
5679
  currentValue.value.add(overflowDueToHandles).neg()
5213
5680
  );
5214
5681
  &nbsp;
5215
- return newItems;
5682
+ <span class="cstat-no" title="statement not covered" > return newItems;</span>
5216
5683
  },
5217
5684
  }),
5218
5685
  assignPanelHandleData: assign({
5219
- items: ({ context, event }) =&gt; {
5220
- isEvent(event, ["registerPanelHandle"]);
5686
+ items: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5687
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["registerPanelHandle"]);</span>
5221
5688
  &nbsp;
5222
5689
  const unit =
5223
- typeof event.data.size === "string"
5690
+ <span class="cstat-no" title="statement not covered" > typeof event.data.size === "string"</span>
5224
5691
  ? parseUnit(event.data.size)
5225
5692
  : event.data.size;
5226
5693
  &nbsp;
5227
- return addDeDuplicatedItems(context.items, {
5694
+ <span class="cstat-no" title="statement not covered" > return addDeDuplicatedItems(context.items, {</span>
5228
5695
  type: "handle",
5229
5696
  ...event.data,
5230
5697
  size: {
@@ -5235,41 +5702,41 @@ export const groupMachine = createMachine(
5235
5702
  },
5236
5703
  }),
5237
5704
  removeItem: assign({
5238
- items: ({ context, event }) =&gt; {
5239
- isEvent(event, ["unregisterPanel", "unregisterPanelHandle"]);
5240
- const itemIndex = context.items.findIndex(
5241
- (item) =&gt; item.id === event.id
5705
+ items: <span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5706
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["unregisterPanel", "unregisterPanelHandle"]);</span>
5707
+ const itemIndex = <span class="cstat-no" title="statement not covered" >context.items.findIndex(</span>
5708
+ <span class="fstat-no" title="function not covered" > (i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.id === event.id</span>
5242
5709
  );
5243
- const item = context.items[itemIndex];
5710
+ const item = <span class="cstat-no" title="statement not covered" >context.items[itemIndex];</span>
5244
5711
  &nbsp;
5245
- if (!item) {
5246
- return context.items;
5712
+ <span class="cstat-no" title="statement not covered" > if (!item) {</span>
5713
+ <span class="cstat-no" title="statement not covered" > return context.items;</span>
5247
5714
  }
5248
5715
  &nbsp;
5249
- const newItems = context.items.filter((i) =&gt; i.id !== event.id);
5250
- const removedSize = isPanelData(item)
5716
+ const newItems = <span class="cstat-no" title="statement not covered" >context.items.filter(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id !== event.id)</span>;</span>
5717
+ const removedSize = <span class="cstat-no" title="statement not covered" >isPanelData(item)</span>
5251
5718
  ? item.currentValue.value
5252
5719
  : item.size.value;
5253
5720
  &nbsp;
5254
- applyDeltaInBothDirections(context, newItems, itemIndex, removedSize);
5721
+ <span class="cstat-no" title="statement not covered" > applyDeltaInBothDirections(context, newItems, itemIndex, removedSize);</span>
5255
5722
  &nbsp;
5256
- return newItems;
5723
+ <span class="cstat-no" title="statement not covered" > return newItems;</span>
5257
5724
  },
5258
5725
  }),
5259
5726
  prepare: assign({
5260
- items: ({ context }) =&gt; prepareItems(context),
5727
+ items: <span class="fstat-no" title="function not covered" >({</span> context }) =&gt; <span class="cstat-no" title="statement not covered" >prepareItems(context),</span>
5261
5728
  }),
5262
- onDragHandle: enqueueActions(({ context, event, enqueue }) =&gt; {
5263
- isEvent(event, ["dragHandle"]);
5264
- enqueue.assign(updateLayout(context, event));
5729
+ onDragHandle: enqueueActions(<span class="fstat-no" title="function not covered" >({</span> context, event, enqueue }) =&gt; {
5730
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["dragHandle"]);</span>
5731
+ <span class="cstat-no" title="statement not covered" > enqueue.assign(updateLayout(context, event));</span>
5265
5732
  }),
5266
5733
  commit: assign({
5267
5734
  dragOvershoot: new Big(0),
5268
- items: ({ context }) =&gt; commitLayout(context),
5735
+ items: <span class="fstat-no" title="function not covered" >({</span> context }) =&gt; <span class="cstat-no" title="statement not covered" >commitLayout(context),</span>
5269
5736
  }),
5270
- onApplyDelta: assign(({ context, event }) =&gt; {
5271
- isEvent(event, ["applyDelta"]);
5272
- return updateLayout(context, {
5737
+ onApplyDelta: assign(<span class="fstat-no" title="function not covered" >({</span> context, event }) =&gt; {
5738
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["applyDelta"]);</span>
5739
+ <span class="cstat-no" title="statement not covered" > return updateLayout(context, {</span>
5273
5740
  handleId: event.handleId,
5274
5741
  type: "collapsePanel",
5275
5742
  disregardCollapseBuffer: true,
@@ -5279,23 +5746,23 @@ export const groupMachine = createMachine(
5279
5746
  }),
5280
5747
  });
5281
5748
  }),
5282
- onSetPanelSize: enqueueActions(({ context, event, enqueue }) =&gt; {
5283
- isEvent(event, ["setPanelPixelSize"]);
5749
+ onSetPanelSize: enqueueActions(<span class="fstat-no" title="function not covered" >({</span> context, event, enqueue }) =&gt; {
5750
+ <span class="cstat-no" title="statement not covered" > isEvent(event, ["setPanelPixelSize"]);</span>
5284
5751
  &nbsp;
5285
- const panel = getPanelWithId(context, event.panelId);
5286
- const handle = getHandleForPanelId(context, event.panelId);
5287
- const current = panel.currentValue.value;
5288
- const newSize = clampUnit(
5752
+ const panel = <span class="cstat-no" title="statement not covered" >getPanelWithId(context, event.panelId);</span>
5753
+ const handle = <span class="cstat-no" title="statement not covered" >getHandleForPanelId(context, event.panelId);</span>
5754
+ const current = <span class="cstat-no" title="statement not covered" >panel.currentValue.value;</span>
5755
+ const newSize = <span class="cstat-no" title="statement not covered" >clampUnit(</span>
5289
5756
  context,
5290
5757
  panel,
5291
5758
  getUnitPixelValue(context, parseUnit(event.size))
5292
5759
  );
5293
- const isBigger = newSize &gt; current;
5294
- const delta = isBigger
5760
+ const isBigger = <span class="cstat-no" title="statement not covered" >newSize &gt; current;</span>
5761
+ const delta = <span class="cstat-no" title="statement not covered" >isBigger</span>
5295
5762
  ? newSize.minus(current)
5296
5763
  : current.minus(newSize);
5297
5764
  &nbsp;
5298
- enqueue.assign(
5765
+ <span class="cstat-no" title="statement not covered" > enqueue.assign(</span>
5299
5766
  iterativelyUpdateLayout({
5300
5767
  context,
5301
5768
  direction: (handle.direction * (isBigger ? 1 : -1)) as -1 | 1,
@@ -5304,15 +5771,22 @@ export const groupMachine = createMachine(
5304
5771
  })
5305
5772
  );
5306
5773
  }),
5307
- onResize: ({ context }) =&gt; {
5308
- for (const item of context.items) {
5309
- if (isPanelData(item)) {
5310
- item.onResize?.current?.({
5311
- pixel: getUnitPixelValue(context, item.currentValue).toNumber(),
5312
- percentage: getUnitPercentageValue(
5313
- getGroupSize(context),
5314
- item.currentValue
5315
- ),
5774
+ onResize: <span class="fstat-no" title="function not covered" >({</span> context }) =&gt; {
5775
+ <span class="cstat-no" title="statement not covered" > for (const item of context.items) {</span>
5776
+ <span class="cstat-no" title="statement not covered" > if (isPanelData(item)) {</span>
5777
+ const pixel = <span class="cstat-no" title="statement not covered" >clampUnit(</span>
5778
+ context,
5779
+ item,
5780
+ getUnitPixelValue(context, item.currentValue)
5781
+ );
5782
+ const groupSize = <span class="cstat-no" title="statement not covered" >getGroupSize(context);</span>
5783
+ &nbsp;
5784
+ <span class="cstat-no" title="statement not covered" > item.onResize?.current?.({</span>
5785
+ pixel: pixel.toNumber(),
5786
+ percentage:
5787
+ groupSize &gt; 0
5788
+ ? pixel.div(getGroupSize(context)).toNumber()
5789
+ : -1,
5316
5790
  });
5317
5791
  }
5318
5792
  }
@@ -5329,7 +5803,7 @@ export const groupMachine = createMachine(
5329
5803
  <div class='footer quiet pad2 space-top1 center small'>
5330
5804
  Code coverage generated by
5331
5805
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
5332
- at 2024-08-19T02:57:22.782Z
5806
+ at 2024-08-23T00:52:02.778Z
5333
5807
  </div>
5334
5808
  <script src="prettify.js"></script>
5335
5809
  <script>