pixelize-design-library 2.3.10 → 2.3.11

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.
Files changed (148) hide show
  1. package/package.json +1 -1
  2. package/.claude/settings.local.json +0 -51
  3. package/coverage/clover.xml +0 -405
  4. package/coverage/coverage-final.json +0 -16
  5. package/coverage/coverage-summary.json +0 -50
  6. package/coverage/lcov-report/Button/Button.tsx.html +0 -244
  7. package/coverage/lcov-report/Button/index.html +0 -116
  8. package/coverage/lcov-report/Checkbox/Checkbox.tsx.html +0 -433
  9. package/coverage/lcov-report/Checkbox/index.html +0 -116
  10. package/coverage/lcov-report/Common/ErrorMessage.tsx.html +0 -148
  11. package/coverage/lcov-report/Common/FormLabel.tsx.html +0 -331
  12. package/coverage/lcov-report/Common/HelperText.tsx.html +0 -124
  13. package/coverage/lcov-report/Common/index.html +0 -146
  14. package/coverage/lcov-report/Components/Button/Button.tsx.html +0 -244
  15. package/coverage/lcov-report/Components/Button/index.html +0 -116
  16. package/coverage/lcov-report/Components/Checkbox/Checkbox.tsx.html +0 -433
  17. package/coverage/lcov-report/Components/Checkbox/index.html +0 -116
  18. package/coverage/lcov-report/Components/Common/ErrorMessage.tsx.html +0 -148
  19. package/coverage/lcov-report/Components/Common/FormLabel.tsx.html +0 -331
  20. package/coverage/lcov-report/Components/Common/HelperText.tsx.html +0 -124
  21. package/coverage/lcov-report/Components/Common/index.html +0 -146
  22. package/coverage/lcov-report/Components/CustomModulesTable/CustomModulesTable.tsx.html +0 -712
  23. package/coverage/lcov-report/Components/CustomModulesTable/DeleteModuleModal.tsx.html +0 -343
  24. package/coverage/lcov-report/Components/CustomModulesTable/EditModuleModal.tsx.html +0 -313
  25. package/coverage/lcov-report/Components/CustomModulesTable/index.html +0 -146
  26. package/coverage/lcov-report/Components/Divider/Divider.tsx.html +0 -133
  27. package/coverage/lcov-report/Components/Divider/index.html +0 -116
  28. package/coverage/lcov-report/Components/Dropdown/DropDown.tsx.html +0 -994
  29. package/coverage/lcov-report/Components/Dropdown/index.html +0 -116
  30. package/coverage/lcov-report/Components/EmptyState/EmptyState.tsx.html +0 -466
  31. package/coverage/lcov-report/Components/EmptyState/index.html +0 -116
  32. package/coverage/lcov-report/Components/Header/HeaderActions.tsx.html +0 -373
  33. package/coverage/lcov-report/Components/Header/index.html +0 -116
  34. package/coverage/lcov-report/Components/Input/TextInput.tsx.html +0 -487
  35. package/coverage/lcov-report/Components/Input/index.html +0 -116
  36. package/coverage/lcov-report/Components/Input/textInputIconSize.ts.html +0 -205
  37. package/coverage/lcov-report/Components/KanbanBoard/AccountCard.tsx.html +0 -547
  38. package/coverage/lcov-report/Components/KanbanBoard/AccountRow.tsx.html +0 -190
  39. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/KanbanActions.tsx.html +0 -247
  40. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/index.html +0 -116
  41. package/coverage/lcov-report/Components/KanbanBoard/KanbanBoard.tsx.html +0 -3598
  42. package/coverage/lcov-report/Components/KanbanBoard/MeasuredItem.tsx.html +0 -283
  43. package/coverage/lcov-report/Components/KanbanBoard/index.html +0 -161
  44. package/coverage/lcov-report/Components/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
  45. package/coverage/lcov-report/Components/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
  46. package/coverage/lcov-report/Components/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
  47. package/coverage/lcov-report/Components/OrganizationDetails/index.html +0 -146
  48. package/coverage/lcov-report/Components/RolesPermission/DeleteRoleModal.tsx.html +0 -328
  49. package/coverage/lcov-report/Components/RolesPermission/RolesPermission.tsx.html +0 -1732
  50. package/coverage/lcov-report/Components/RolesPermission/index.html +0 -131
  51. package/coverage/lcov-report/Components/SearchSelect/SearchSelect.tsx.html +0 -2575
  52. package/coverage/lcov-report/Components/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
  53. package/coverage/lcov-report/Components/SearchSelect/index.html +0 -146
  54. package/coverage/lcov-report/Components/SearchSelect/searchSelectSize.ts.html +0 -496
  55. package/coverage/lcov-report/Components/Select/Select.tsx.html +0 -361
  56. package/coverage/lcov-report/Components/Select/index.html +0 -116
  57. package/coverage/lcov-report/Components/SideBar/components/OtherApps.tsx.html +0 -562
  58. package/coverage/lcov-report/Components/SideBar/components/OverflowTooltipText.tsx.html +0 -346
  59. package/coverage/lcov-report/Components/SideBar/components/index.html +0 -116
  60. package/coverage/lcov-report/Components/SignInActivityTable/SignInActivityTable.tsx.html +0 -490
  61. package/coverage/lcov-report/Components/SignInActivityTable/index.html +0 -116
  62. package/coverage/lcov-report/Components/Table/components/TableActions.tsx.html +0 -595
  63. package/coverage/lcov-report/Components/Table/components/TableBody.tsx.html +0 -2212
  64. package/coverage/lcov-report/Components/Table/components/TableGroupRow.tsx.html +0 -358
  65. package/coverage/lcov-report/Components/Table/components/TableLoading.tsx.html +0 -358
  66. package/coverage/lcov-report/Components/Table/components/index.html +0 -161
  67. package/coverage/lcov-report/Components/Table/settings/ManageColumns.tsx.html +0 -856
  68. package/coverage/lcov-report/Components/Table/settings/index.html +0 -116
  69. package/coverage/lcov-report/Components/Tag/Tag.styles.tsx.html +0 -331
  70. package/coverage/lcov-report/Components/Tag/Tag.tsx.html +0 -256
  71. package/coverage/lcov-report/Components/Tag/index.html +0 -131
  72. package/coverage/lcov-report/Components/ToolTip/ToolTip.tsx.html +0 -286
  73. package/coverage/lcov-report/Components/ToolTip/index.html +0 -116
  74. package/coverage/lcov-report/Components/UserDetails/AddUserModal.tsx.html +0 -709
  75. package/coverage/lcov-report/Components/UserDetails/ChangeRoleModal.tsx.html +0 -505
  76. package/coverage/lcov-report/Components/UserDetails/DeactivateConfirmModal.tsx.html +0 -379
  77. package/coverage/lcov-report/Components/UserDetails/UserDetails.tsx.html +0 -1900
  78. package/coverage/lcov-report/Components/UserDetails/index.html +0 -161
  79. package/coverage/lcov-report/EmptyState/EmptyState.tsx.html +0 -466
  80. package/coverage/lcov-report/EmptyState/index.html +0 -116
  81. package/coverage/lcov-report/Hooks/index.html +0 -116
  82. package/coverage/lcov-report/Hooks/usePreferences.ts.html +0 -421
  83. package/coverage/lcov-report/Input/TextInput.tsx.html +0 -487
  84. package/coverage/lcov-report/Input/index.html +0 -131
  85. package/coverage/lcov-report/Input/textInputIconSize.ts.html +0 -205
  86. package/coverage/lcov-report/KanbanBoard.tsx.html +0 -3481
  87. package/coverage/lcov-report/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
  88. package/coverage/lcov-report/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
  89. package/coverage/lcov-report/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
  90. package/coverage/lcov-report/OrganizationDetails/index.html +0 -146
  91. package/coverage/lcov-report/RolesPermission/DeleteRoleModal.tsx.html +0 -328
  92. package/coverage/lcov-report/RolesPermission/RolesPermission.tsx.html +0 -1732
  93. package/coverage/lcov-report/RolesPermission/index.html +0 -116
  94. package/coverage/lcov-report/SearchSelect/SearchSelect.tsx.html +0 -2575
  95. package/coverage/lcov-report/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
  96. package/coverage/lcov-report/SearchSelect/index.html +0 -146
  97. package/coverage/lcov-report/SearchSelect/searchSelectSize.ts.html +0 -496
  98. package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
  99. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
  100. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
  101. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
  102. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
  103. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
  104. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
  105. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
  106. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
  107. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
  108. package/coverage/lcov-report/Table/Components/index.html +0 -266
  109. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
  110. package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
  111. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
  112. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
  113. package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
  114. package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
  115. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
  116. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
  117. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
  118. package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
  119. package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
  120. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
  121. package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
  122. package/coverage/lcov-report/Table/index.html +0 -176
  123. package/coverage/lcov-report/Table/settings/ManageColumns.tsx.html +0 -856
  124. package/coverage/lcov-report/Table/settings/index.html +0 -116
  125. package/coverage/lcov-report/Tag/Tag.tsx.html +0 -256
  126. package/coverage/lcov-report/Tag/index.html +0 -116
  127. package/coverage/lcov-report/Theme/buildBrandTokens.ts.html +0 -175
  128. package/coverage/lcov-report/Theme/chartColorsFromTheme.ts.html +0 -214
  129. package/coverage/lcov-report/Theme/index.html +0 -131
  130. package/coverage/lcov-report/Theme/useCustomTheme.ts.html +0 -100
  131. package/coverage/lcov-report/ToolTip/ToolTip.tsx.html +0 -286
  132. package/coverage/lcov-report/ToolTip/index.html +0 -116
  133. package/coverage/lcov-report/UserDetails/AddUserModal.tsx.html +0 -709
  134. package/coverage/lcov-report/UserDetails/ChangeRoleModal.tsx.html +0 -505
  135. package/coverage/lcov-report/UserDetails/index.html +0 -116
  136. package/coverage/lcov-report/Utils/functions.ts.html +0 -106
  137. package/coverage/lcov-report/Utils/index.html +0 -116
  138. package/coverage/lcov-report/Utils/table.ts.html +0 -1189
  139. package/coverage/lcov-report/base.css +0 -224
  140. package/coverage/lcov-report/block-navigation.js +0 -87
  141. package/coverage/lcov-report/favicon.png +0 -0
  142. package/coverage/lcov-report/index.html +0 -251
  143. package/coverage/lcov-report/prettify.css +0 -1
  144. package/coverage/lcov-report/prettify.js +0 -2
  145. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  146. package/coverage/lcov-report/sorter.js +0 -210
  147. package/coverage/lcov.info +0 -981
  148. package/dist/Assets/defaultLogo.tsx +0 -30
@@ -1,1810 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for Table/LeftFilterPane.tsx</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">Table</a> LeftFilterPane.tsx</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">79.02% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>113/143</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">66.88% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>103/154</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">72.72% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>40/55</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">82.5% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>99/120</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-yes">2x</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-yes">25x</span>
726
- <span class="cline-any cline-yes">25x</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-yes">4x</span>
729
- <span class="cline-any cline-yes">4x</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-yes">4x</span>
732
- <span class="cline-any cline-yes">4x</span>
733
- <span class="cline-any cline-yes">4x</span>
734
- <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-yes">4x</span>
737
- <span class="cline-any cline-no">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-yes">4x</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-yes">2x</span>
752
- <span class="cline-any cline-yes">25x</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-yes">25x</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-yes">25x</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-yes">4x</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-yes">2x</span>
790
- <span class="cline-any cline-yes">1x</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-yes">1x</span>
793
- <span class="cline-any cline-no">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-no">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-yes">1x</span>
803
- <span class="cline-any cline-yes">1x</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-no">&nbsp;</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-no">&nbsp;</span>
818
- <span class="cline-any cline-no">&nbsp;</span>
819
- <span class="cline-any cline-no">&nbsp;</span>
820
- <span class="cline-any cline-no">&nbsp;</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-no">&nbsp;</span>
825
- <span class="cline-any cline-neutral">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-no">&nbsp;</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-no">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-neutral">&nbsp;</span>
849
- <span class="cline-any cline-neutral">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-yes">2x</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-yes">25x</span>
864
- <span class="cline-any cline-yes">3x</span>
865
- <span class="cline-any cline-yes">3x</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-yes">3x</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-yes">1x</span>
874
- <span class="cline-any cline-yes">1x</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-yes">3x</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-no">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-yes">22x</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-yes">22x</span>
906
- <span class="cline-any cline-yes">22x</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-yes">22x</span>
910
- <span class="cline-any cline-yes">22x</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-yes">22x</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-yes">2x</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-yes">1x</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-no">&nbsp;</span>
949
- <span class="cline-any cline-no">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-no">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-no">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-yes">2x</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-yes">56x</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-yes">56x</span>
996
- <span class="cline-any cline-yes">56x</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-yes">56x</span>
999
- <span class="cline-any cline-yes">24x</span>
1000
- <span class="cline-any cline-yes">24x</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">56x</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-yes">56x</span>
1008
- <span class="cline-any cline-yes">5x</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-yes">56x</span>
1012
- <span class="cline-any cline-yes">1x</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-yes">56x</span>
1016
- <span class="cline-any cline-yes">1x</span>
1017
- <span class="cline-any cline-yes">1x</span>
1018
- <span class="cline-any cline-yes">1x</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-yes">1x</span>
1022
- <span class="cline-any cline-yes">1x</span>
1023
- <span class="cline-any cline-yes">1x</span>
1024
- <span class="cline-any cline-yes">1x</span>
1025
- <span class="cline-any cline-yes">1x</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-yes">56x</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-yes">56x</span>
1033
- <span class="cline-any cline-yes">1x</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-yes">56x</span>
1036
- <span class="cline-any cline-yes">2x</span>
1037
- <span class="cline-any cline-yes">2x</span>
1038
- <span class="cline-any cline-yes">2x</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-yes">2x</span>
1042
- <span class="cline-any cline-yes">2x</span>
1043
- <span class="cline-any cline-yes">2x</span>
1044
- <span class="cline-any cline-yes">2x</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-no">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-yes">56x</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-yes">8x</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-yes">56x</span>
1058
- <span class="cline-any cline-yes">40x</span>
1059
- <span class="cline-any cline-yes">1x</span>
1060
- <span class="cline-any cline-yes">1x</span>
1061
- <span class="cline-any cline-yes">2x</span>
1062
- <span class="cline-any cline-yes">2x</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-yes">56x</span>
1066
- <span class="cline-any cline-yes">53x</span>
1067
- <span class="cline-any cline-yes">9x</span>
1068
- <span class="cline-any cline-yes">7x</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-yes">56x</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-yes">56x</span>
1075
- <span class="cline-any cline-yes">1x</span>
1076
- <span class="cline-any cline-yes">1x</span>
1077
- <span class="cline-any cline-yes">1x</span>
1078
- <span class="cline-any cline-yes">1x</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-yes">56x</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-yes">56x</span>
1084
- <span class="cline-any cline-yes">56x</span>
1085
- <span class="cline-any cline-yes">36x</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-yes">20x</span>
1093
- <span class="cline-any cline-yes">5x</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-yes">10x</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-yes">10x</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-yes">15x</span>
1116
- <span class="cline-any cline-yes">15x</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-yes">56x</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-yes">1x</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-neutral">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-yes">1x</span>
1171
- <span class="cline-any cline-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-no">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-neutral">&nbsp;</span>
1191
- <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-neutral">&nbsp;</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-neutral">&nbsp;</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useEffect, useMemo, useRef, useState } from "react";
1217
- import {
1218
- Box,
1219
- Text,
1220
- Input,
1221
- InputGroup,
1222
- InputLeftElement,
1223
- InputRightElement,
1224
- Accordion,
1225
- AccordionItem,
1226
- AccordionButton,
1227
- AccordionPanel,
1228
- AccordionIcon,
1229
- VStack,
1230
- Button,
1231
- Flex,
1232
- Icon,
1233
- IconButton,
1234
- Tooltip,
1235
- HStack,
1236
- } from "@chakra-ui/react";
1237
- import { Search, X } from "lucide-react";
1238
- import { motion } from "framer-motion";
1239
- import { useOutsideClick } from "@chakra-ui/react";
1240
- import CheckBox from "../Checkbox/Checkbox";
1241
- import { RadioButtonGroup } from "../RadioButton/RadioButton";
1242
- import { TextOperationControls } from "./TextOperationControls";
1243
- import { SelectOperationControls } from "./SelectOperationControls";
1244
- import CompactSelect, { Options } from "./CompactSelect";
1245
- import DatePicker from "../DatePicker/DatePicker";
1246
- import type { CustomThemeProps } from "../../Theme/themeProps";
1247
- import type { FilterValues } from "./filterTypes";
1248
- &nbsp;
1249
- // ─── Types ────────────────────────────────────────────────────────────────────
1250
- &nbsp;
1251
- export type FilterItem = {
1252
- id: string;
1253
- label: string;
1254
- type?: "text" | "select" | "user" | "date";
1255
- option?: { id: string; label: string }[];
1256
- /** Alternate options key used by some consumers */
1257
- selectOption?: Options[];
1258
- };
1259
- &nbsp;
1260
- export type FilterSection = {
1261
- id: string;
1262
- label: string;
1263
- items?: FilterItem[];
1264
- initiallyExpanded?: boolean;
1265
- radio?: boolean;
1266
- };
1267
- &nbsp;
1268
- export type SelectedFilterValue =
1269
- | string
1270
- | number
1271
- | Date
1272
- | Options
1273
- | null
1274
- | undefined;
1275
- &nbsp;
1276
- export type SelectedFilterItem = {
1277
- id: string;
1278
- condition?: string;
1279
- value?: SelectedFilterValue;
1280
- type?: "text" | "select" | "user" | "date";
1281
- };
1282
- &nbsp;
1283
- export type LeftFilterPaneProps = {
1284
- title?: string;
1285
- height?: number | string;
1286
- sections: FilterSection[];
1287
- selected?: FilterValues;
1288
- onApply?: (selected: FilterValues) =&gt; void;
1289
- onClear?: () =&gt; void;
1290
- theme: CustomThemeProps;
1291
- isApplyLoading?: boolean;
1292
- filterMode?: "sidebar" | "modal";
1293
- };
1294
- &nbsp;
1295
- // ─── Helpers ──────────────────────────────────────────────────────────────────
1296
- &nbsp;
1297
- const LABEL_MAX_LENGTH = 18;
1298
- &nbsp;
1299
- function formatHeaderLabel(label: string): string {
1300
- const text = (label || <span class="branch-1 cbranch-no" title="branch not covered" >"")</span>.trim();
1301
- if (text.length &lt;= LABEL_MAX_LENGTH) return text;
1302
- &nbsp;
1303
- let parts = text.split(/\s+/);
1304
- <span class="missing-if-branch" title="if path not taken" >I</span>if (parts.length &lt; 2) <span class="cstat-no" title="statement not covered" >return text;</span>
1305
- &nbsp;
1306
- const removable = new Set(["filters", "fields", "modules", "status", "action"]);
1307
- <span class="missing-if-branch" title="else path not taken" >E</span>if (removable.has(parts[parts.length - 1].toLowerCase())) {
1308
- parts = parts.slice(0, -1);
1309
- }
1310
- &nbsp;
1311
- while (parts.join(" ").length &gt; LABEL_MAX_LENGTH &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >parts.length &gt; 2)</span> {
1312
- <span class="cstat-no" title="statement not covered" > parts = parts.slice(0, -1);</span>
1313
- }
1314
- &nbsp;
1315
- return `${parts.join(" ")}..`;
1316
- }
1317
- &nbsp;
1318
- // ─── Sub-components ───────────────────────────────────────────────────────────
1319
- &nbsp;
1320
- type SectionLabelProps = {
1321
- label: string;
1322
- flex?: boolean;
1323
- theme: CustomThemeProps;
1324
- };
1325
- &nbsp;
1326
- const SectionLabel = ({ label, flex = false, theme }: SectionLabelProps) =&gt; {
1327
- const needsTooltip = label.length &gt; LABEL_MAX_LENGTH;
1328
- const content = (
1329
- &lt;Box
1330
- as="span"
1331
- flex={flex ? "1" : undefined}
1332
- textAlign="left"
1333
- fontWeight="medium"
1334
- fontSize="sm"
1335
- sx={{ whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }}
1336
- &gt;
1337
- {formatHeaderLabel(label)}
1338
- &lt;/Box&gt;
1339
- );
1340
- &nbsp;
1341
- if (!needsTooltip) return content;
1342
- &nbsp;
1343
- return (
1344
- &lt;Tooltip
1345
- label={label}
1346
- hasArrow
1347
- placement="top"
1348
- bg={theme.colors.gray[600]}
1349
- color={theme.colors.white}
1350
- fontSize="0.75rem"
1351
- &gt;
1352
- {content}
1353
- &lt;/Tooltip&gt;
1354
- );
1355
- };
1356
- &nbsp;
1357
- type ActiveItemControlsProps = {
1358
- activeItem: SelectedFilterItem;
1359
- sec: FilterSection;
1360
- setTextOperator: (sectionId: string, itemId: string, op: string) =&gt; void;
1361
- setTextValue: (sectionId: string, itemId: string, val: SelectedFilterValue) =&gt; void;
1362
- };
1363
- &nbsp;
1364
- const ActiveItemControls = ({ activeItem, sec, setTextOperator, setTextValue }: ActiveItemControlsProps) =&gt; {
1365
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!activeItem) <span class="cstat-no" title="statement not covered" >return null;</span>
1366
- &nbsp;
1367
- <span class="missing-if-branch" title="if path not taken" >I</span>if (activeItem.type === "date") {
1368
- <span class="cstat-no" title="statement not covered" > return (</span>
1369
- &lt;DatePicker
1370
- size="sm"
1371
- selectedDate={activeItem!.value as Date | null | undefined}
1372
- onChange={<span class="fstat-no" title="function not covered" >(v</span>al) =&gt; <span class="cstat-no" title="statement not covered" >setTextValue(sec.id, activeItem.id, val)}</span>
1373
- /&gt;
1374
- );
1375
- }
1376
- &nbsp;
1377
- <span class="missing-if-branch" title="else path not taken" >E</span>if (activeItem.type === "text") {
1378
- return (
1379
- &lt;TextOperationControls
1380
- operator={activeItem.condition || <span class="branch-1 cbranch-no" title="branch not covered" >"contains"}</span>
1381
- value={
1382
- typeof activeItem.value === "string" || <span class="branch-1 cbranch-no" title="branch not covered" >typeof activeItem.value === "number"</span>
1383
- ? String(activeItem.value)
1384
- : <span class="branch-1 cbranch-no" title="branch not covered" >""</span>
1385
- }
1386
- onOperatorChange={<span class="fstat-no" title="function not covered" >(o</span>p) =&gt; <span class="cstat-no" title="statement not covered" >setTextOperator(sec.id, activeItem.id, op)}</span>
1387
- onValueChange={<span class="fstat-no" title="function not covered" >(v</span>al) =&gt; <span class="cstat-no" title="statement not covered" >setTextValue(sec.id, activeItem.id, val)}</span>
1388
- /&gt;
1389
- );
1390
- }
1391
- &nbsp;
1392
- <span class="cstat-no" title="statement not covered" > if (activeItem.type === "select" || activeItem.type === "user") {</span>
1393
- const def = <span class="cstat-no" title="statement not covered" >(sec.items || []).find(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === activeItem.id)</span>;</span>
1394
- const opts = <span class="cstat-no" title="statement not covered" >def?.selectOption || def?.option || [];</span>
1395
- <span class="cstat-no" title="statement not covered" > return (</span>
1396
- &lt;&gt;
1397
- &lt;SelectOperationControls
1398
- operator={activeItem.condition || "is"}
1399
- onOperatorChange={<span class="fstat-no" title="function not covered" >(o</span>p) =&gt; <span class="cstat-no" title="statement not covered" >setTextOperator(sec.id, activeItem.id, op)}</span>
1400
- size="xs"
1401
- ml="1.25rem"
1402
- mt={2}
1403
- /&gt;
1404
- &lt;Box mt={2} ml="1.25rem"&gt;
1405
- &lt;CompactSelect
1406
- placeholder={def?.label}
1407
- size="xs"
1408
- height="22px"
1409
- options={opts}
1410
- value={activeItem.value as Options | undefined}
1411
- onSelect={<span class="fstat-no" title="function not covered" >(o</span>ption: Options) =&gt; <span class="cstat-no" title="statement not covered" >setTextValue(sec.id, activeItem.id, option)}</span>
1412
- /&gt;
1413
- &lt;/Box&gt;
1414
- &lt;/&gt;
1415
- );
1416
- }
1417
- &nbsp;
1418
- <span class="cstat-no" title="statement not covered" > return null;</span>
1419
- };
1420
- &nbsp;
1421
- type SectionContentProps = {
1422
- sec: FilterSection;
1423
- selected: FilterValues;
1424
- toggleItem: (sectionId: string, itemId: string, checked: boolean, type?: FilterItem["type"]) =&gt; void;
1425
- setTextOperator: (sectionId: string, itemId: string, op: string) =&gt; void;
1426
- setTextValue: (sectionId: string, itemId: string, val: SelectedFilterValue) =&gt; void;
1427
- setSelected: (updater: React.SetStateAction&lt;FilterValues&gt;) =&gt; void;
1428
- };
1429
- &nbsp;
1430
- const SectionContent = ({
1431
- sec,
1432
- selected,
1433
- toggleItem,
1434
- setTextOperator,
1435
- setTextValue,
1436
- setSelected,
1437
- }: SectionContentProps) =&gt; {
1438
- if (sec.radio) {
1439
- const sectionRows = selected[sec.id];
1440
- const activeItem: SelectedFilterItem | undefined = Array.isArray(sectionRows)
1441
- ? (sectionRows as SelectedFilterItem[])[0]
1442
- : undefined;
1443
- return (
1444
- &lt;&gt;
1445
- &lt;RadioButtonGroup
1446
- value={activeItem?.id || ""}
1447
- onChange={(val: string) =&gt; {
1448
- const item = (sec.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.find((i) =&gt; i.id === val);
1449
- setSelected((prev: FilterValues) =&gt; ({
1450
- ...prev,
1451
- [sec.id]: val
1452
- ? [{ id: val, type: item?.type, condition: item?.type === "text" ? "contains" : <span class="branch-1 cbranch-no" title="branch not covered" >"is",</span> value: "" }]
1453
- : <span class="branch-1 cbranch-no" title="branch not covered" >[],</span>
1454
- }));
1455
- }}
1456
- options={(sec.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.map((it) =&gt; ({ label: it.label, id: it.id }))}
1457
- size="sm"
1458
- spacing="0.35rem"
1459
- direction="column"
1460
- align="start"
1461
- labelFontSize="0.75rem"
1462
- labelClampLines={1}
1463
- showLabelTooltip={<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.label.length &gt; LABEL_MAX_LENGTH}</span>
1464
- /&gt;
1465
- {activeItem &amp;&amp; (
1466
- &lt;ActiveItemControls
1467
- activeItem={activeItem}
1468
- sec={sec}
1469
- setTextOperator={setTextOperator}
1470
- setTextValue={setTextValue}
1471
- /&gt;
1472
- )}
1473
- &lt;/&gt;
1474
- );
1475
- }
1476
- &nbsp;
1477
- return (
1478
- &lt;VStack spacing={2} align="stretch"&gt;
1479
- {(sec.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.map((it) =&gt; {
1480
- const raw = selected[sec.id];
1481
- const sectionItems: SelectedFilterItem[] = Array.isArray(raw)
1482
- ? (raw as SelectedFilterItem[])
1483
- : [];
1484
- const activeItem = sectionItems.find((i) =&gt; i.id === it.id);
1485
- const checked = !!activeItem;
1486
- &nbsp;
1487
- return (
1488
- &lt;React.Fragment key={it.id}&gt;
1489
- &lt;CheckBox
1490
- label={it.label}
1491
- labelFontSize="0.75rem"
1492
- showLabelTooltip={it.label.length &gt; LABEL_MAX_LENGTH}
1493
- labelTooltip={it.label}
1494
- labelClampLines={1}
1495
- isChecked={checked}
1496
- onChange={(e) =&gt; toggleItem(sec.id, it.id, e.target.checked, it.type)}
1497
- size="sm"
1498
- iconSize="0.5rem"
1499
- spacing="0.5rem"
1500
- sx={{
1501
- ".chakra-checkbox__control": { width: "12px", height: "12px", mt: "2px" },
1502
- ".chakra-checkbox__label": { lineHeight: "1rem", whiteSpace: "normal", wordBreak: "break-word" },
1503
- }}
1504
- /&gt;
1505
- {checked &amp;&amp; it.type === "date" &amp;&amp; (
1506
- &lt;Box ml="1.25rem"&gt;
1507
- &lt;DatePicker
1508
- size="sm"
1509
- selectedDate={activeItem!.value as Date | null | undefined}
1510
- onChange={(val) =&gt; setTextValue(sec.id, it.id, val)}
1511
- /&gt;
1512
- &lt;/Box&gt;
1513
- )}
1514
- {checked &amp;&amp; it.type === "text" &amp;&amp; (
1515
- &lt;TextOperationControls
1516
- operator={activeItem!.condition || <span class="branch-1 cbranch-no" title="branch not covered" >"contains"}</span>
1517
- value={
1518
- typeof activeItem!.value === "string" ||
1519
- <span class="branch-1 cbranch-no" title="branch not covered" > typeof activeItem!.value === "number"</span>
1520
- ? String(activeItem!.value)
1521
- : <span class="branch-1 cbranch-no" title="branch not covered" >""</span>
1522
- }
1523
- onOperatorChange={<span class="fstat-no" title="function not covered" >(o</span>p) =&gt; <span class="cstat-no" title="statement not covered" >setTextOperator(sec.id, it.id, op)}</span>
1524
- onValueChange={<span class="fstat-no" title="function not covered" >(v</span>al) =&gt; <span class="cstat-no" title="statement not covered" >setTextValue(sec.id, it.id, val)}</span>
1525
- /&gt;
1526
- )}
1527
- {checked &amp;&amp; (it.type === "select" || it.type === "user") &amp;&amp; (
1528
- <span class="branch-3 cbranch-no" title="branch not covered" > &lt;Box&gt;</span>
1529
- &lt;SelectOperationControls
1530
- operator={activeItem!.condition || "is"}
1531
- onOperatorChange={<span class="fstat-no" title="function not covered" >(o</span>p) =&gt; <span class="cstat-no" title="statement not covered" >setTextOperator(sec.id, it.id, op)}</span>
1532
- size="xs"
1533
- ml="1.25rem"
1534
- /&gt;
1535
- &lt;Box mt={2} ml="1.25rem"&gt;
1536
- &lt;CompactSelect
1537
- placeholder={it.label}
1538
- size="xs"
1539
- height="30px"
1540
- options={it.selectOption || it.option || []}
1541
- value={activeItem!.value as Options | undefined}
1542
- onSelect={<span class="fstat-no" title="function not covered" >(o</span>ption: Options) =&gt; <span class="cstat-no" title="statement not covered" >setTextValue(sec.id, it.id, option)}</span>
1543
- /&gt;
1544
- &lt;/Box&gt;
1545
- &lt;/Box&gt;
1546
- )}
1547
- &lt;/React.Fragment&gt;
1548
- );
1549
- })}
1550
- &lt;/VStack&gt;
1551
- );
1552
- };
1553
- &nbsp;
1554
- // ─── Main Component ───────────────────────────────────────────────────────────
1555
- &nbsp;
1556
- const LeftFilterPane = ({
1557
- title = "Filter",
1558
- height = 300,
1559
- sections,
1560
- selected: selectedProp,
1561
- onApply,
1562
- onClear,
1563
- theme,
1564
- isApplyLoading = false,
1565
- filterMode = "sidebar",
1566
- }: LeftFilterPaneProps) =&gt; {
1567
- const [isSearching, setIsSearching] = useState(
1568
- typeof selectedProp?.search === "string" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!!selectedProp.search</span>
1569
- );
1570
- const [localSelected, setLocalSelected] = useState&lt;FilterValues&gt;({});
1571
- const searchRef = useRef&lt;HTMLDivElement | null&gt;(null);
1572
- &nbsp;
1573
- useEffect(() =&gt; {
1574
- setLocalSelected(selectedProp || {});
1575
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof selectedProp?.search === "string" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >selectedProp.search)</span>
1576
- <span class="cstat-no" title="statement not covered" > setIsSearching(true);</span>
1577
- }, [selectedProp]);
1578
- &nbsp;
1579
- const search =
1580
- typeof localSelected.search === "string" ? localSelected.search : "";
1581
- &nbsp;
1582
- const setSelected = (updater: React.SetStateAction&lt;FilterValues&gt;) =&gt; {
1583
- setLocalSelected((prev) =&gt; (typeof updater === "function" ? updater(prev) : <span class="branch-1 cbranch-no" title="branch not covered" >updater)</span>);
1584
- };
1585
- &nbsp;
1586
- const setSearch = (val: string) =&gt; {
1587
- setSelected((prev) =&gt; ({ ...prev, search: val }));
1588
- };
1589
- &nbsp;
1590
- const updateItem = (sectionId: string, itemId: string, updates: Partial&lt;SelectedFilterItem&gt;) =&gt; {
1591
- setSelected((prev) =&gt; {
1592
- const prevSection = prev[sectionId];
1593
- const items: SelectedFilterItem[] = Array.isArray(prevSection)
1594
- ? (prevSection as SelectedFilterItem[])
1595
- : <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
1596
- const idx = items.findIndex((i) =&gt; i.id === itemId);
1597
- <span class="missing-if-branch" title="if path not taken" >I</span>if (idx === -1) <span class="cstat-no" title="statement not covered" >return prev;</span>
1598
- const updated = [...items];
1599
- updated[idx] = { ...updated[idx], ...updates };
1600
- return { ...prev, [sectionId]: updated };
1601
- });
1602
- };
1603
- &nbsp;
1604
- const setTextOperator = <span class="fstat-no" title="function not covered" >(s</span>ectionId: string, itemId: string, operator: string) =&gt;
1605
- <span class="cstat-no" title="statement not covered" > updateItem(sectionId, itemId, { condition: operator });</span>
1606
- &nbsp;
1607
- const setTextValue = (sectionId: string, itemId: string, value: SelectedFilterValue) =&gt;
1608
- updateItem(sectionId, itemId, { value });
1609
- &nbsp;
1610
- const toggleItem = (sectionId: string, itemId: string, checked: boolean, type?: FilterItem["type"]) =&gt; {
1611
- setSelected((prev) =&gt; {
1612
- const prevSection = prev[sectionId];
1613
- const items: SelectedFilterItem[] = Array.isArray(prevSection)
1614
- ? (<span class="branch-0 cbranch-no" title="branch not covered" >prevSection as SelectedFilterItem[])</span>
1615
- : [];
1616
- <span class="missing-if-branch" title="else path not taken" >E</span>if (checked) {
1617
- <span class="missing-if-branch" title="if path not taken" >I</span>if (items.some(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id === itemId)</span>) <span class="cstat-no" title="statement not covered" >return prev;</span>
1618
- const condition = type === "select" || type === "user" ? <span class="branch-0 cbranch-no" title="branch not covered" >"is" </span>: "contains";
1619
- return { ...prev, [sectionId]: [...items, { id: itemId, type, condition, value: "" }] };
1620
- }
1621
- <span class="cstat-no" title="statement not covered" > return { ...prev, [sectionId]: items.filter(<span class="fstat-no" title="function not covered" >(i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.id !== itemId)</span> };</span>
1622
- });
1623
- };
1624
- &nbsp;
1625
- useOutsideClick({
1626
- ref: searchRef,
1627
- handler: () =&gt; {
1628
- <span class="missing-if-branch" title="if path not taken" >I</span>if (isSearching &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!search.trim())</span> <span class="cstat-no" title="statement not covered" >setIsSearching(false);</span>
1629
- },
1630
- });
1631
- &nbsp;
1632
- const filteredSections = useMemo(() =&gt; {
1633
- if (!search.trim()) return sections;
1634
- const q = search.toLowerCase();
1635
- return sections
1636
- .map((sec) =&gt; ({ ...sec, items: (sec.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.filter((i) =&gt; i.label.toLowerCase().includes(q)) }))
1637
- .filter((sec) =&gt; (sec.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.length &gt; 0);
1638
- }, [search, sections]);
1639
- &nbsp;
1640
- const hasActiveFilters = useMemo(() =&gt; {
1641
- return Object.entries(localSelected).some(([key, value]) =&gt; {
1642
- if (key === "search") return !!(value &amp;&amp; typeof value === "string" &amp;&amp; value.trim());
1643
- return Array.isArray(value) &amp;&amp; value.length &gt; 0;
1644
- });
1645
- }, [localSelected]);
1646
- &nbsp;
1647
- const handleApply = () =&gt; onApply?.(localSelected);
1648
- &nbsp;
1649
- const handleClear = () =&gt; {
1650
- const cleared = { search: "" };
1651
- setLocalSelected(cleared);
1652
- onClear?.();
1653
- <span class="missing-if-branch" title="else path not taken" >E</span>if (filterMode === "sidebar") onApply?.(cleared);
1654
- };
1655
- &nbsp;
1656
- const sectionContentProps = { selected: localSelected, toggleItem, setTextOperator, setTextValue, setSelected };
1657
- &nbsp;
1658
- const renderSections = () =&gt; {
1659
- if (filteredSections.length === 0) {
1660
- return (
1661
- &lt;Box p={4} textAlign="center"&gt;
1662
- &lt;Text fontSize="xs" color="gray.500"&gt;No filters found&lt;/Text&gt;
1663
- &lt;/Box&gt;
1664
- );
1665
- }
1666
- &nbsp;
1667
- if (filteredSections.length &gt; 1) {
1668
- return (
1669
- &lt;Accordion
1670
- allowMultiple
1671
- defaultIndex={filteredSections.map((s, i) =&gt; (s.initiallyExpanded ? <span class="branch-0 cbranch-no" title="branch not covered" >i </span>: -1)).filter((i) =&gt; i &gt;= 0)}
1672
- &gt;
1673
- {filteredSections.map((sec) =&gt; (
1674
- &lt;AccordionItem key={sec.id} border="none"&gt;
1675
- &lt;h2&gt;
1676
- &lt;AccordionButton px={3} py={2} _expanded={{ bg: "gray.50" }}&gt;
1677
- &lt;SectionLabel label={sec.label} flex theme={theme} /&gt;
1678
- &lt;AccordionIcon /&gt;
1679
- &lt;/AccordionButton&gt;
1680
- &lt;/h2&gt;
1681
- &lt;AccordionPanel px={3} pt={2} pb={1}&gt;
1682
- &lt;SectionContent sec={sec} {...sectionContentProps} /&gt;
1683
- &lt;/AccordionPanel&gt;
1684
- &lt;/AccordionItem&gt;
1685
- ))}
1686
- &lt;/Accordion&gt;
1687
- );
1688
- }
1689
- &nbsp;
1690
- return filteredSections.map((sec) =&gt; (
1691
- &lt;Box key={sec.id}&gt;
1692
- &lt;Box px={3} py={2} borderBottom="1px solid" borderColor="gray.200"&gt;
1693
- &lt;SectionLabel label={sec.label} theme={theme} /&gt;
1694
- &lt;/Box&gt;
1695
- &lt;Box px={3} pt={2} pb={1}&gt;
1696
- &lt;SectionContent sec={sec} {...sectionContentProps} /&gt;
1697
- &lt;/Box&gt;
1698
- &lt;/Box&gt;
1699
- ));
1700
- };
1701
- &nbsp;
1702
- return (
1703
- &lt;Box
1704
- width={filterMode === "modal" ? "100%" : "180px"}
1705
- height={filterMode === "modal" ? "100%" : height}
1706
- minHeight={"32rem"}
1707
- bg="white"
1708
- borderRight="1px solid"
1709
- borderColor="gray.200"
1710
- borderRadius="md"
1711
- overflow="hidden"
1712
- display="flex"
1713
- flexDirection="column"
1714
- marginBottom={filterMode === "modal" &amp;&amp; hasActiveFilters ? '3.5rem' : 0}
1715
- &gt;
1716
- &lt;Box p={3} borderBottom="1px solid" borderColor="gray.200"&gt;
1717
- {!isSearching ? (
1718
- &lt;Flex align="center" justify="space-between"&gt;
1719
- &lt;Text fontWeight="semibold" fontSize="sm"&gt;{title}&lt;/Text&gt;
1720
- &lt;Icon
1721
- as={Search}
1722
- transform="scaleX(-1)"
1723
- cursor="pointer"
1724
- boxSize={4}
1725
- color={theme.colors?.text?.[500]}
1726
- onClick={() =&gt; setIsSearching(true)}
1727
- mr={filterMode === "modal" ? 8 : 2}
1728
- mt={filterMode === "modal" ? -1 : 0}
1729
- /&gt;
1730
- &lt;/Flex&gt;
1731
- ) : (
1732
- &lt;motion.div
1733
- ref={searchRef}
1734
- initial={{ opacity: 0, x: 40 }}
1735
- animate={{ opacity: 1, x: 0 }}
1736
- transition={{ type: "tween", duration: 0.2 }}
1737
- &gt;
1738
- &lt;InputGroup size="sm"&gt;
1739
- &lt;InputLeftElement pointerEvents="none"&gt;
1740
- &lt;Search size={16} color={theme.colors?.text?.[500]} /&gt;
1741
- &lt;/InputLeftElement&gt;
1742
- &lt;Input
1743
- placeholder="Search"
1744
- value={search}
1745
- onChange={(e) =&gt; setSearch(e.target.value)}
1746
- autoFocus
1747
- /&gt;
1748
- {search.length &gt; 0 &amp;&amp; (
1749
- &lt;InputRightElement&gt;
1750
- &lt;IconButton
1751
- aria-label="Clear"
1752
- size="xs"
1753
- variant="ghost"
1754
- icon={&lt;X size={14} /&gt;}
1755
- onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; { <span class="cstat-no" title="statement not covered" >setSearch(""); <span class="cstat-no" title="statement not covered" ></span>setIsSearching(false); </span>}}
1756
- /&gt;
1757
- &lt;/InputRightElement&gt;
1758
- )}
1759
- &lt;/InputGroup&gt;
1760
- &lt;/motion.div&gt;
1761
- )}
1762
- &lt;/Box&gt;
1763
- &nbsp;
1764
- &lt;Box flex="1" overflowY="auto"&gt;
1765
- {renderSections()}
1766
- &lt;/Box&gt;
1767
- &nbsp;
1768
- {hasActiveFilters &amp;&amp; (
1769
- &lt;HStack px={2} py={1} borderTop="1px solid" borderColor="gray.200" spacing={2} position={filterMode === "modal" ? "absolute" : "relative"} bottom={0} left={0} right={0} bg="white"&gt;
1770
- &lt;Button flex={1} variant="outline" size="sm" onClick={handleClear} fontSize="xs" colorScheme="red"&gt;
1771
- Clear All
1772
- &lt;/Button&gt;
1773
- &lt;Button
1774
- flex={1}
1775
- colorScheme="primary"
1776
- color="white"
1777
- size="sm"
1778
- onClick={handleApply}
1779
- fontSize="xs"
1780
- isLoading={isApplyLoading}
1781
- &gt;
1782
- Apply
1783
- &lt;/Button&gt;
1784
- &lt;/HStack&gt;
1785
- )}
1786
- &lt;/Box&gt;
1787
- );
1788
- };
1789
- &nbsp;
1790
- export default LeftFilterPane;
1791
- &nbsp;</pre></td></tr></table></pre>
1792
-
1793
- <div class='push'></div><!-- for sticky footer -->
1794
- </div><!-- /wrapper -->
1795
- <div class='footer quiet pad2 space-top1 center small'>
1796
- Code coverage generated by
1797
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1798
- at 2026-04-25T11:11:29.488Z
1799
- </div>
1800
- <script src="../prettify.js"></script>
1801
- <script>
1802
- window.onload = function () {
1803
- prettyPrint();
1804
- };
1805
- </script>
1806
- <script src="../sorter.js"></script>
1807
- <script src="../block-navigation.js"></script>
1808
- </body>
1809
- </html>
1810
-