@c15t/backend 0.0.1-rc.21 → 0.0.1-rc.22

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 (132) hide show
  1. package/.turbo/turbo-build.log +28 -28
  2. package/.turbo/turbo-fmt.log +3 -3
  3. package/.turbo/turbo-test.log +382 -35
  4. package/coverage/coverage-final.json +83 -0
  5. package/coverage/coverage-summary.json +84 -0
  6. package/coverage/html/backend/index.html +116 -0
  7. package/coverage/html/backend/rslib.config.ts.html +424 -0
  8. package/coverage/html/backend/src/core.ts.html +796 -0
  9. package/coverage/html/backend/src/index.html +131 -0
  10. package/coverage/html/backend/src/init.ts.html +1072 -0
  11. package/coverage/html/backend/src/integrations/cloudflare.ts.html +889 -0
  12. package/coverage/html/backend/src/integrations/index.html +146 -0
  13. package/coverage/html/backend/src/integrations/next.ts.html +691 -0
  14. package/coverage/html/backend/src/integrations/node.ts.html +505 -0
  15. package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +116 -0
  16. package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +538 -0
  17. package/coverage/html/backend/src/pkgs/api-router/index.html +131 -0
  18. package/coverage/html/backend/src/pkgs/api-router/index.ts.html +529 -0
  19. package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +334 -0
  20. package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +304 -0
  21. package/coverage/html/backend/src/pkgs/api-router/utils/define-route.ts.html +1315 -0
  22. package/coverage/html/backend/src/pkgs/api-router/utils/index.html +146 -0
  23. package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +361 -0
  24. package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +709 -0
  25. package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +256 -0
  26. package/coverage/html/backend/src/pkgs/data-model/fields/index.html +161 -0
  27. package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +136 -0
  28. package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +496 -0
  29. package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +349 -0
  30. package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +176 -0
  31. package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +358 -0
  32. package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +613 -0
  33. package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +538 -0
  34. package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +289 -0
  35. package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +277 -0
  36. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +2212 -0
  37. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +116 -0
  38. package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +116 -0
  39. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +676 -0
  40. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +131 -0
  41. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +3637 -0
  42. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +116 -0
  43. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +1417 -0
  44. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +116 -0
  45. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +2074 -0
  46. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +116 -0
  47. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +1837 -0
  48. package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +316 -0
  49. package/coverage/html/backend/src/pkgs/db-adapters/index.html +131 -0
  50. package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +238 -0
  51. package/coverage/html/backend/src/pkgs/logger/console-formatter.ts.html +310 -0
  52. package/coverage/html/backend/src/pkgs/logger/index.html +176 -0
  53. package/coverage/html/backend/src/pkgs/logger/log-levels.ts.html +223 -0
  54. package/coverage/html/backend/src/pkgs/logger/logger-factory.ts.html +448 -0
  55. package/coverage/html/backend/src/pkgs/logger/result-logging.ts.html +487 -0
  56. package/coverage/html/backend/src/pkgs/logger/telemetry.ts.html +373 -0
  57. package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +343 -0
  58. package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +217 -0
  59. package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +146 -0
  60. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +280 -0
  61. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +289 -0
  62. package/coverage/html/backend/src/pkgs/migrations/index.html +176 -0
  63. package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +595 -0
  64. package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +301 -0
  65. package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +691 -0
  66. package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +817 -0
  67. package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +1012 -0
  68. package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +703 -0
  69. package/coverage/html/backend/src/pkgs/results/core/index.html +146 -0
  70. package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +280 -0
  71. package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +271 -0
  72. package/coverage/html/backend/src/pkgs/results/h3-integration.ts.html +511 -0
  73. package/coverage/html/backend/src/pkgs/results/index.html +131 -0
  74. package/coverage/html/backend/src/pkgs/results/pipeline/index.html +131 -0
  75. package/coverage/html/backend/src/pkgs/results/pipeline/retrieval-pipeline.ts.html +649 -0
  76. package/coverage/html/backend/src/pkgs/results/pipeline/validation-pipeline.ts.html +577 -0
  77. package/coverage/html/backend/src/pkgs/results/results/index.html +131 -0
  78. package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +628 -0
  79. package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +1234 -0
  80. package/coverage/html/backend/src/pkgs/utils/env.ts.html +337 -0
  81. package/coverage/html/backend/src/pkgs/utils/index.html +131 -0
  82. package/coverage/html/backend/src/pkgs/utils/url.ts.html +400 -0
  83. package/coverage/html/backend/src/routes/index.html +176 -0
  84. package/coverage/html/backend/src/routes/index.ts.html +121 -0
  85. package/coverage/html/backend/src/routes/set-consent.ts.html +832 -0
  86. package/coverage/html/backend/src/routes/show-consent-banner.ts.html +478 -0
  87. package/coverage/html/backend/src/routes/status.ts.html +268 -0
  88. package/coverage/html/backend/src/routes/verify-consent.ts.html +703 -0
  89. package/coverage/html/backend/src/schema/audit-log/index.html +146 -0
  90. package/coverage/html/backend/src/schema/audit-log/registry.ts.html +436 -0
  91. package/coverage/html/backend/src/schema/audit-log/schema.ts.html +223 -0
  92. package/coverage/html/backend/src/schema/audit-log/table.ts.html +640 -0
  93. package/coverage/html/backend/src/schema/consent/index.html +146 -0
  94. package/coverage/html/backend/src/schema/consent/registry.ts.html +616 -0
  95. package/coverage/html/backend/src/schema/consent/schema.ts.html +238 -0
  96. package/coverage/html/backend/src/schema/consent/table.ts.html +748 -0
  97. package/coverage/html/backend/src/schema/consent-policy/index.html +146 -0
  98. package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +1063 -0
  99. package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +265 -0
  100. package/coverage/html/backend/src/schema/consent-policy/table.ts.html +535 -0
  101. package/coverage/html/backend/src/schema/consent-purpose/index.html +146 -0
  102. package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +589 -0
  103. package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +259 -0
  104. package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +547 -0
  105. package/coverage/html/backend/src/schema/consent-record/index.html +131 -0
  106. package/coverage/html/backend/src/schema/consent-record/schema.ts.html +211 -0
  107. package/coverage/html/backend/src/schema/consent-record/table.ts.html +457 -0
  108. package/coverage/html/backend/src/schema/create-registry.ts.html +148 -0
  109. package/coverage/html/backend/src/schema/definition.ts.html +685 -0
  110. package/coverage/html/backend/src/schema/domain/index.html +146 -0
  111. package/coverage/html/backend/src/schema/domain/registry.ts.html +973 -0
  112. package/coverage/html/backend/src/schema/domain/schema.ts.html +214 -0
  113. package/coverage/html/backend/src/schema/domain/table.ts.html +496 -0
  114. package/coverage/html/backend/src/schema/index.html +146 -0
  115. package/coverage/html/backend/src/schema/schemas.ts.html +166 -0
  116. package/coverage/html/backend/src/schema/subject/index.html +146 -0
  117. package/coverage/html/backend/src/schema/subject/registry.ts.html +973 -0
  118. package/coverage/html/backend/src/schema/subject/schema.ts.html +208 -0
  119. package/coverage/html/backend/src/schema/subject/table.ts.html +499 -0
  120. package/coverage/html/base.css +224 -0
  121. package/coverage/html/block-navigation.js +87 -0
  122. package/coverage/html/favicon.png +0 -0
  123. package/coverage/html/index.html +581 -0
  124. package/coverage/html/prettify.css +1 -0
  125. package/coverage/html/prettify.js +2 -0
  126. package/coverage/html/sort-arrow-sprite.png +0 -0
  127. package/coverage/html/sorter.js +196 -0
  128. package/dist/index.cjs +1 -1
  129. package/dist/index.js +1 -1
  130. package/package.json +8 -6
  131. package/vitest.config.ts +14 -11
  132. package/.turbo/turbo-lint.log +0 -6
@@ -0,0 +1,3637 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts</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">backend/src/pkgs/db-adapters/adapters/kysely-adapter</a> kysely-adapter.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">46.02% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>139/302</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">40.43% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>93/230</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">41.37% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>24/58</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">46.02% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>139/302</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 low'></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>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a>
792
+ <a name='L727'></a><a href='#L727'>727</a>
793
+ <a name='L728'></a><a href='#L728'>728</a>
794
+ <a name='L729'></a><a href='#L729'>729</a>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a>
1027
+ <a name='L962'></a><a href='#L962'>962</a>
1028
+ <a name='L963'></a><a href='#L963'>963</a>
1029
+ <a name='L964'></a><a href='#L964'>964</a>
1030
+ <a name='L965'></a><a href='#L965'>965</a>
1031
+ <a name='L966'></a><a href='#L966'>966</a>
1032
+ <a name='L967'></a><a href='#L967'>967</a>
1033
+ <a name='L968'></a><a href='#L968'>968</a>
1034
+ <a name='L969'></a><a href='#L969'>969</a>
1035
+ <a name='L970'></a><a href='#L970'>970</a>
1036
+ <a name='L971'></a><a href='#L971'>971</a>
1037
+ <a name='L972'></a><a href='#L972'>972</a>
1038
+ <a name='L973'></a><a href='#L973'>973</a>
1039
+ <a name='L974'></a><a href='#L974'>974</a>
1040
+ <a name='L975'></a><a href='#L975'>975</a>
1041
+ <a name='L976'></a><a href='#L976'>976</a>
1042
+ <a name='L977'></a><a href='#L977'>977</a>
1043
+ <a name='L978'></a><a href='#L978'>978</a>
1044
+ <a name='L979'></a><a href='#L979'>979</a>
1045
+ <a name='L980'></a><a href='#L980'>980</a>
1046
+ <a name='L981'></a><a href='#L981'>981</a>
1047
+ <a name='L982'></a><a href='#L982'>982</a>
1048
+ <a name='L983'></a><a href='#L983'>983</a>
1049
+ <a name='L984'></a><a href='#L984'>984</a>
1050
+ <a name='L985'></a><a href='#L985'>985</a>
1051
+ <a name='L986'></a><a href='#L986'>986</a>
1052
+ <a name='L987'></a><a href='#L987'>987</a>
1053
+ <a name='L988'></a><a href='#L988'>988</a>
1054
+ <a name='L989'></a><a href='#L989'>989</a>
1055
+ <a name='L990'></a><a href='#L990'>990</a>
1056
+ <a name='L991'></a><a href='#L991'>991</a>
1057
+ <a name='L992'></a><a href='#L992'>992</a>
1058
+ <a name='L993'></a><a href='#L993'>993</a>
1059
+ <a name='L994'></a><a href='#L994'>994</a>
1060
+ <a name='L995'></a><a href='#L995'>995</a>
1061
+ <a name='L996'></a><a href='#L996'>996</a>
1062
+ <a name='L997'></a><a href='#L997'>997</a>
1063
+ <a name='L998'></a><a href='#L998'>998</a>
1064
+ <a name='L999'></a><a href='#L999'>999</a>
1065
+ <a name='L1000'></a><a href='#L1000'>1000</a>
1066
+ <a name='L1001'></a><a href='#L1001'>1001</a>
1067
+ <a name='L1002'></a><a href='#L1002'>1002</a>
1068
+ <a name='L1003'></a><a href='#L1003'>1003</a>
1069
+ <a name='L1004'></a><a href='#L1004'>1004</a>
1070
+ <a name='L1005'></a><a href='#L1005'>1005</a>
1071
+ <a name='L1006'></a><a href='#L1006'>1006</a>
1072
+ <a name='L1007'></a><a href='#L1007'>1007</a>
1073
+ <a name='L1008'></a><a href='#L1008'>1008</a>
1074
+ <a name='L1009'></a><a href='#L1009'>1009</a>
1075
+ <a name='L1010'></a><a href='#L1010'>1010</a>
1076
+ <a name='L1011'></a><a href='#L1011'>1011</a>
1077
+ <a name='L1012'></a><a href='#L1012'>1012</a>
1078
+ <a name='L1013'></a><a href='#L1013'>1013</a>
1079
+ <a name='L1014'></a><a href='#L1014'>1014</a>
1080
+ <a name='L1015'></a><a href='#L1015'>1015</a>
1081
+ <a name='L1016'></a><a href='#L1016'>1016</a>
1082
+ <a name='L1017'></a><a href='#L1017'>1017</a>
1083
+ <a name='L1018'></a><a href='#L1018'>1018</a>
1084
+ <a name='L1019'></a><a href='#L1019'>1019</a>
1085
+ <a name='L1020'></a><a href='#L1020'>1020</a>
1086
+ <a name='L1021'></a><a href='#L1021'>1021</a>
1087
+ <a name='L1022'></a><a href='#L1022'>1022</a>
1088
+ <a name='L1023'></a><a href='#L1023'>1023</a>
1089
+ <a name='L1024'></a><a href='#L1024'>1024</a>
1090
+ <a name='L1025'></a><a href='#L1025'>1025</a>
1091
+ <a name='L1026'></a><a href='#L1026'>1026</a>
1092
+ <a name='L1027'></a><a href='#L1027'>1027</a>
1093
+ <a name='L1028'></a><a href='#L1028'>1028</a>
1094
+ <a name='L1029'></a><a href='#L1029'>1029</a>
1095
+ <a name='L1030'></a><a href='#L1030'>1030</a>
1096
+ <a name='L1031'></a><a href='#L1031'>1031</a>
1097
+ <a name='L1032'></a><a href='#L1032'>1032</a>
1098
+ <a name='L1033'></a><a href='#L1033'>1033</a>
1099
+ <a name='L1034'></a><a href='#L1034'>1034</a>
1100
+ <a name='L1035'></a><a href='#L1035'>1035</a>
1101
+ <a name='L1036'></a><a href='#L1036'>1036</a>
1102
+ <a name='L1037'></a><a href='#L1037'>1037</a>
1103
+ <a name='L1038'></a><a href='#L1038'>1038</a>
1104
+ <a name='L1039'></a><a href='#L1039'>1039</a>
1105
+ <a name='L1040'></a><a href='#L1040'>1040</a>
1106
+ <a name='L1041'></a><a href='#L1041'>1041</a>
1107
+ <a name='L1042'></a><a href='#L1042'>1042</a>
1108
+ <a name='L1043'></a><a href='#L1043'>1043</a>
1109
+ <a name='L1044'></a><a href='#L1044'>1044</a>
1110
+ <a name='L1045'></a><a href='#L1045'>1045</a>
1111
+ <a name='L1046'></a><a href='#L1046'>1046</a>
1112
+ <a name='L1047'></a><a href='#L1047'>1047</a>
1113
+ <a name='L1048'></a><a href='#L1048'>1048</a>
1114
+ <a name='L1049'></a><a href='#L1049'>1049</a>
1115
+ <a name='L1050'></a><a href='#L1050'>1050</a>
1116
+ <a name='L1051'></a><a href='#L1051'>1051</a>
1117
+ <a name='L1052'></a><a href='#L1052'>1052</a>
1118
+ <a name='L1053'></a><a href='#L1053'>1053</a>
1119
+ <a name='L1054'></a><a href='#L1054'>1054</a>
1120
+ <a name='L1055'></a><a href='#L1055'>1055</a>
1121
+ <a name='L1056'></a><a href='#L1056'>1056</a>
1122
+ <a name='L1057'></a><a href='#L1057'>1057</a>
1123
+ <a name='L1058'></a><a href='#L1058'>1058</a>
1124
+ <a name='L1059'></a><a href='#L1059'>1059</a>
1125
+ <a name='L1060'></a><a href='#L1060'>1060</a>
1126
+ <a name='L1061'></a><a href='#L1061'>1061</a>
1127
+ <a name='L1062'></a><a href='#L1062'>1062</a>
1128
+ <a name='L1063'></a><a href='#L1063'>1063</a>
1129
+ <a name='L1064'></a><a href='#L1064'>1064</a>
1130
+ <a name='L1065'></a><a href='#L1065'>1065</a>
1131
+ <a name='L1066'></a><a href='#L1066'>1066</a>
1132
+ <a name='L1067'></a><a href='#L1067'>1067</a>
1133
+ <a name='L1068'></a><a href='#L1068'>1068</a>
1134
+ <a name='L1069'></a><a href='#L1069'>1069</a>
1135
+ <a name='L1070'></a><a href='#L1070'>1070</a>
1136
+ <a name='L1071'></a><a href='#L1071'>1071</a>
1137
+ <a name='L1072'></a><a href='#L1072'>1072</a>
1138
+ <a name='L1073'></a><a href='#L1073'>1073</a>
1139
+ <a name='L1074'></a><a href='#L1074'>1074</a>
1140
+ <a name='L1075'></a><a href='#L1075'>1075</a>
1141
+ <a name='L1076'></a><a href='#L1076'>1076</a>
1142
+ <a name='L1077'></a><a href='#L1077'>1077</a>
1143
+ <a name='L1078'></a><a href='#L1078'>1078</a>
1144
+ <a name='L1079'></a><a href='#L1079'>1079</a>
1145
+ <a name='L1080'></a><a href='#L1080'>1080</a>
1146
+ <a name='L1081'></a><a href='#L1081'>1081</a>
1147
+ <a name='L1082'></a><a href='#L1082'>1082</a>
1148
+ <a name='L1083'></a><a href='#L1083'>1083</a>
1149
+ <a name='L1084'></a><a href='#L1084'>1084</a>
1150
+ <a name='L1085'></a><a href='#L1085'>1085</a>
1151
+ <a name='L1086'></a><a href='#L1086'>1086</a>
1152
+ <a name='L1087'></a><a href='#L1087'>1087</a>
1153
+ <a name='L1088'></a><a href='#L1088'>1088</a>
1154
+ <a name='L1089'></a><a href='#L1089'>1089</a>
1155
+ <a name='L1090'></a><a href='#L1090'>1090</a>
1156
+ <a name='L1091'></a><a href='#L1091'>1091</a>
1157
+ <a name='L1092'></a><a href='#L1092'>1092</a>
1158
+ <a name='L1093'></a><a href='#L1093'>1093</a>
1159
+ <a name='L1094'></a><a href='#L1094'>1094</a>
1160
+ <a name='L1095'></a><a href='#L1095'>1095</a>
1161
+ <a name='L1096'></a><a href='#L1096'>1096</a>
1162
+ <a name='L1097'></a><a href='#L1097'>1097</a>
1163
+ <a name='L1098'></a><a href='#L1098'>1098</a>
1164
+ <a name='L1099'></a><a href='#L1099'>1099</a>
1165
+ <a name='L1100'></a><a href='#L1100'>1100</a>
1166
+ <a name='L1101'></a><a href='#L1101'>1101</a>
1167
+ <a name='L1102'></a><a href='#L1102'>1102</a>
1168
+ <a name='L1103'></a><a href='#L1103'>1103</a>
1169
+ <a name='L1104'></a><a href='#L1104'>1104</a>
1170
+ <a name='L1105'></a><a href='#L1105'>1105</a>
1171
+ <a name='L1106'></a><a href='#L1106'>1106</a>
1172
+ <a name='L1107'></a><a href='#L1107'>1107</a>
1173
+ <a name='L1108'></a><a href='#L1108'>1108</a>
1174
+ <a name='L1109'></a><a href='#L1109'>1109</a>
1175
+ <a name='L1110'></a><a href='#L1110'>1110</a>
1176
+ <a name='L1111'></a><a href='#L1111'>1111</a>
1177
+ <a name='L1112'></a><a href='#L1112'>1112</a>
1178
+ <a name='L1113'></a><a href='#L1113'>1113</a>
1179
+ <a name='L1114'></a><a href='#L1114'>1114</a>
1180
+ <a name='L1115'></a><a href='#L1115'>1115</a>
1181
+ <a name='L1116'></a><a href='#L1116'>1116</a>
1182
+ <a name='L1117'></a><a href='#L1117'>1117</a>
1183
+ <a name='L1118'></a><a href='#L1118'>1118</a>
1184
+ <a name='L1119'></a><a href='#L1119'>1119</a>
1185
+ <a name='L1120'></a><a href='#L1120'>1120</a>
1186
+ <a name='L1121'></a><a href='#L1121'>1121</a>
1187
+ <a name='L1122'></a><a href='#L1122'>1122</a>
1188
+ <a name='L1123'></a><a href='#L1123'>1123</a>
1189
+ <a name='L1124'></a><a href='#L1124'>1124</a>
1190
+ <a name='L1125'></a><a href='#L1125'>1125</a>
1191
+ <a name='L1126'></a><a href='#L1126'>1126</a>
1192
+ <a name='L1127'></a><a href='#L1127'>1127</a>
1193
+ <a name='L1128'></a><a href='#L1128'>1128</a>
1194
+ <a name='L1129'></a><a href='#L1129'>1129</a>
1195
+ <a name='L1130'></a><a href='#L1130'>1130</a>
1196
+ <a name='L1131'></a><a href='#L1131'>1131</a>
1197
+ <a name='L1132'></a><a href='#L1132'>1132</a>
1198
+ <a name='L1133'></a><a href='#L1133'>1133</a>
1199
+ <a name='L1134'></a><a href='#L1134'>1134</a>
1200
+ <a name='L1135'></a><a href='#L1135'>1135</a>
1201
+ <a name='L1136'></a><a href='#L1136'>1136</a>
1202
+ <a name='L1137'></a><a href='#L1137'>1137</a>
1203
+ <a name='L1138'></a><a href='#L1138'>1138</a>
1204
+ <a name='L1139'></a><a href='#L1139'>1139</a>
1205
+ <a name='L1140'></a><a href='#L1140'>1140</a>
1206
+ <a name='L1141'></a><a href='#L1141'>1141</a>
1207
+ <a name='L1142'></a><a href='#L1142'>1142</a>
1208
+ <a name='L1143'></a><a href='#L1143'>1143</a>
1209
+ <a name='L1144'></a><a href='#L1144'>1144</a>
1210
+ <a name='L1145'></a><a href='#L1145'>1145</a>
1211
+ <a name='L1146'></a><a href='#L1146'>1146</a>
1212
+ <a name='L1147'></a><a href='#L1147'>1147</a>
1213
+ <a name='L1148'></a><a href='#L1148'>1148</a>
1214
+ <a name='L1149'></a><a href='#L1149'>1149</a>
1215
+ <a name='L1150'></a><a href='#L1150'>1150</a>
1216
+ <a name='L1151'></a><a href='#L1151'>1151</a>
1217
+ <a name='L1152'></a><a href='#L1152'>1152</a>
1218
+ <a name='L1153'></a><a href='#L1153'>1153</a>
1219
+ <a name='L1154'></a><a href='#L1154'>1154</a>
1220
+ <a name='L1155'></a><a href='#L1155'>1155</a>
1221
+ <a name='L1156'></a><a href='#L1156'>1156</a>
1222
+ <a name='L1157'></a><a href='#L1157'>1157</a>
1223
+ <a name='L1158'></a><a href='#L1158'>1158</a>
1224
+ <a name='L1159'></a><a href='#L1159'>1159</a>
1225
+ <a name='L1160'></a><a href='#L1160'>1160</a>
1226
+ <a name='L1161'></a><a href='#L1161'>1161</a>
1227
+ <a name='L1162'></a><a href='#L1162'>1162</a>
1228
+ <a name='L1163'></a><a href='#L1163'>1163</a>
1229
+ <a name='L1164'></a><a href='#L1164'>1164</a>
1230
+ <a name='L1165'></a><a href='#L1165'>1165</a>
1231
+ <a name='L1166'></a><a href='#L1166'>1166</a>
1232
+ <a name='L1167'></a><a href='#L1167'>1167</a>
1233
+ <a name='L1168'></a><a href='#L1168'>1168</a>
1234
+ <a name='L1169'></a><a href='#L1169'>1169</a>
1235
+ <a name='L1170'></a><a href='#L1170'>1170</a>
1236
+ <a name='L1171'></a><a href='#L1171'>1171</a>
1237
+ <a name='L1172'></a><a href='#L1172'>1172</a>
1238
+ <a name='L1173'></a><a href='#L1173'>1173</a>
1239
+ <a name='L1174'></a><a href='#L1174'>1174</a>
1240
+ <a name='L1175'></a><a href='#L1175'>1175</a>
1241
+ <a name='L1176'></a><a href='#L1176'>1176</a>
1242
+ <a name='L1177'></a><a href='#L1177'>1177</a>
1243
+ <a name='L1178'></a><a href='#L1178'>1178</a>
1244
+ <a name='L1179'></a><a href='#L1179'>1179</a>
1245
+ <a name='L1180'></a><a href='#L1180'>1180</a>
1246
+ <a name='L1181'></a><a href='#L1181'>1181</a>
1247
+ <a name='L1182'></a><a href='#L1182'>1182</a>
1248
+ <a name='L1183'></a><a href='#L1183'>1183</a>
1249
+ <a name='L1184'></a><a href='#L1184'>1184</a>
1250
+ <a name='L1185'></a><a href='#L1185'>1185</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-neutral">&nbsp;</span>
1252
+ <span class="cline-any cline-neutral">&nbsp;</span>
1253
+ <span class="cline-any cline-neutral">&nbsp;</span>
1254
+ <span class="cline-any cline-neutral">&nbsp;</span>
1255
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-neutral">&nbsp;</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-neutral">&nbsp;</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-neutral">&nbsp;</span>
1273
+ <span class="cline-any cline-neutral">&nbsp;</span>
1274
+ <span class="cline-any cline-neutral">&nbsp;</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-neutral">&nbsp;</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-neutral">&nbsp;</span>
1284
+ <span class="cline-any cline-neutral">&nbsp;</span>
1285
+ <span class="cline-any cline-neutral">&nbsp;</span>
1286
+ <span class="cline-any cline-neutral">&nbsp;</span>
1287
+ <span class="cline-any cline-neutral">&nbsp;</span>
1288
+ <span class="cline-any cline-neutral">&nbsp;</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-neutral">&nbsp;</span>
1291
+ <span class="cline-any cline-neutral">&nbsp;</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-neutral">&nbsp;</span>
1294
+ <span class="cline-any cline-neutral">&nbsp;</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-neutral">&nbsp;</span>
1297
+ <span class="cline-any cline-neutral">&nbsp;</span>
1298
+ <span class="cline-any cline-neutral">&nbsp;</span>
1299
+ <span class="cline-any cline-neutral">&nbsp;</span>
1300
+ <span class="cline-any cline-neutral">&nbsp;</span>
1301
+ <span class="cline-any cline-neutral">&nbsp;</span>
1302
+ <span class="cline-any cline-neutral">&nbsp;</span>
1303
+ <span class="cline-any cline-neutral">&nbsp;</span>
1304
+ <span class="cline-any cline-neutral">&nbsp;</span>
1305
+ <span class="cline-any cline-neutral">&nbsp;</span>
1306
+ <span class="cline-any cline-neutral">&nbsp;</span>
1307
+ <span class="cline-any cline-neutral">&nbsp;</span>
1308
+ <span class="cline-any cline-neutral">&nbsp;</span>
1309
+ <span class="cline-any cline-neutral">&nbsp;</span>
1310
+ <span class="cline-any cline-neutral">&nbsp;</span>
1311
+ <span class="cline-any cline-neutral">&nbsp;</span>
1312
+ <span class="cline-any cline-neutral">&nbsp;</span>
1313
+ <span class="cline-any cline-neutral">&nbsp;</span>
1314
+ <span class="cline-any cline-neutral">&nbsp;</span>
1315
+ <span class="cline-any cline-neutral">&nbsp;</span>
1316
+ <span class="cline-any cline-neutral">&nbsp;</span>
1317
+ <span class="cline-any cline-neutral">&nbsp;</span>
1318
+ <span class="cline-any cline-neutral">&nbsp;</span>
1319
+ <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-neutral">&nbsp;</span>
1321
+ <span class="cline-any cline-neutral">&nbsp;</span>
1322
+ <span class="cline-any cline-neutral">&nbsp;</span>
1323
+ <span class="cline-any cline-neutral">&nbsp;</span>
1324
+ <span class="cline-any cline-neutral">&nbsp;</span>
1325
+ <span class="cline-any cline-neutral">&nbsp;</span>
1326
+ <span class="cline-any cline-neutral">&nbsp;</span>
1327
+ <span class="cline-any cline-neutral">&nbsp;</span>
1328
+ <span class="cline-any cline-neutral">&nbsp;</span>
1329
+ <span class="cline-any cline-neutral">&nbsp;</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-neutral">&nbsp;</span>
1332
+ <span class="cline-any cline-neutral">&nbsp;</span>
1333
+ <span class="cline-any cline-neutral">&nbsp;</span>
1334
+ <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-neutral">&nbsp;</span>
1338
+ <span class="cline-any cline-neutral">&nbsp;</span>
1339
+ <span class="cline-any cline-neutral">&nbsp;</span>
1340
+ <span class="cline-any cline-neutral">&nbsp;</span>
1341
+ <span class="cline-any cline-neutral">&nbsp;</span>
1342
+ <span class="cline-any cline-neutral">&nbsp;</span>
1343
+ <span class="cline-any cline-neutral">&nbsp;</span>
1344
+ <span class="cline-any cline-neutral">&nbsp;</span>
1345
+ <span class="cline-any cline-neutral">&nbsp;</span>
1346
+ <span class="cline-any cline-neutral">&nbsp;</span>
1347
+ <span class="cline-any cline-neutral">&nbsp;</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-neutral">&nbsp;</span>
1350
+ <span class="cline-any cline-neutral">&nbsp;</span>
1351
+ <span class="cline-any cline-neutral">&nbsp;</span>
1352
+ <span class="cline-any cline-neutral">&nbsp;</span>
1353
+ <span class="cline-any cline-neutral">&nbsp;</span>
1354
+ <span class="cline-any cline-neutral">&nbsp;</span>
1355
+ <span class="cline-any cline-neutral">&nbsp;</span>
1356
+ <span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-neutral">&nbsp;</span>
1359
+ <span class="cline-any cline-neutral">&nbsp;</span>
1360
+ <span class="cline-any cline-neutral">&nbsp;</span>
1361
+ <span class="cline-any cline-neutral">&nbsp;</span>
1362
+ <span class="cline-any cline-neutral">&nbsp;</span>
1363
+ <span class="cline-any cline-neutral">&nbsp;</span>
1364
+ <span class="cline-any cline-neutral">&nbsp;</span>
1365
+ <span class="cline-any cline-neutral">&nbsp;</span>
1366
+ <span class="cline-any cline-neutral">&nbsp;</span>
1367
+ <span class="cline-any cline-neutral">&nbsp;</span>
1368
+ <span class="cline-any cline-neutral">&nbsp;</span>
1369
+ <span class="cline-any cline-neutral">&nbsp;</span>
1370
+ <span class="cline-any cline-neutral">&nbsp;</span>
1371
+ <span class="cline-any cline-neutral">&nbsp;</span>
1372
+ <span class="cline-any cline-neutral">&nbsp;</span>
1373
+ <span class="cline-any cline-neutral">&nbsp;</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-neutral">&nbsp;</span>
1376
+ <span class="cline-any cline-neutral">&nbsp;</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-neutral">&nbsp;</span>
1382
+ <span class="cline-any cline-neutral">&nbsp;</span>
1383
+ <span class="cline-any cline-neutral">&nbsp;</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-neutral">&nbsp;</span>
1386
+ <span class="cline-any cline-neutral">&nbsp;</span>
1387
+ <span class="cline-any cline-neutral">&nbsp;</span>
1388
+ <span class="cline-any cline-neutral">&nbsp;</span>
1389
+ <span class="cline-any cline-neutral">&nbsp;</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-neutral">&nbsp;</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-neutral">&nbsp;</span>
1394
+ <span class="cline-any cline-neutral">&nbsp;</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-yes">3x</span>
1401
+ <span class="cline-any cline-neutral">&nbsp;</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-yes">4x</span>
1406
+ <span class="cline-any cline-neutral">&nbsp;</span>
1407
+ <span class="cline-any cline-neutral">&nbsp;</span>
1408
+ <span class="cline-any cline-neutral">&nbsp;</span>
1409
+ <span class="cline-any cline-neutral">&nbsp;</span>
1410
+ <span class="cline-any cline-neutral">&nbsp;</span>
1411
+ <span class="cline-any cline-neutral">&nbsp;</span>
1412
+ <span class="cline-any cline-neutral">&nbsp;</span>
1413
+ <span class="cline-any cline-neutral">&nbsp;</span>
1414
+ <span class="cline-any cline-neutral">&nbsp;</span>
1415
+ <span class="cline-any cline-neutral">&nbsp;</span>
1416
+ <span class="cline-any cline-neutral">&nbsp;</span>
1417
+ <span class="cline-any cline-neutral">&nbsp;</span>
1418
+ <span class="cline-any cline-neutral">&nbsp;</span>
1419
+ <span class="cline-any cline-neutral">&nbsp;</span>
1420
+ <span class="cline-any cline-yes">10x</span>
1421
+ <span class="cline-any cline-yes">10x</span>
1422
+ <span class="cline-any cline-neutral">&nbsp;</span>
1423
+ <span class="cline-any cline-no">&nbsp;</span>
1424
+ <span class="cline-any cline-no">&nbsp;</span>
1425
+ <span class="cline-any cline-neutral">&nbsp;</span>
1426
+ <span class="cline-any cline-neutral">&nbsp;</span>
1427
+ <span class="cline-any cline-no">&nbsp;</span>
1428
+ <span class="cline-any cline-neutral">&nbsp;</span>
1429
+ <span class="cline-any cline-neutral">&nbsp;</span>
1430
+ <span class="cline-any cline-no">&nbsp;</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-no">&nbsp;</span>
1433
+ <span class="cline-any cline-neutral">&nbsp;</span>
1434
+ <span class="cline-any cline-neutral">&nbsp;</span>
1435
+ <span class="cline-any cline-neutral">&nbsp;</span>
1436
+ <span class="cline-any cline-neutral">&nbsp;</span>
1437
+ <span class="cline-any cline-neutral">&nbsp;</span>
1438
+ <span class="cline-any cline-neutral">&nbsp;</span>
1439
+ <span class="cline-any cline-neutral">&nbsp;</span>
1440
+ <span class="cline-any cline-neutral">&nbsp;</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span>
1443
+ <span class="cline-any cline-neutral">&nbsp;</span>
1444
+ <span class="cline-any cline-neutral">&nbsp;</span>
1445
+ <span class="cline-any cline-neutral">&nbsp;</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-neutral">&nbsp;</span>
1448
+ <span class="cline-any cline-neutral">&nbsp;</span>
1449
+ <span class="cline-any cline-neutral">&nbsp;</span>
1450
+ <span class="cline-any cline-neutral">&nbsp;</span>
1451
+ <span class="cline-any cline-neutral">&nbsp;</span>
1452
+ <span class="cline-any cline-neutral">&nbsp;</span>
1453
+ <span class="cline-any cline-yes">66x</span>
1454
+ <span class="cline-any cline-yes">10x</span>
1455
+ <span class="cline-any cline-neutral">&nbsp;</span>
1456
+ <span class="cline-any cline-yes">56x</span>
1457
+ <span class="cline-any cline-yes">56x</span>
1458
+ <span class="cline-any cline-yes">56x</span>
1459
+ <span class="cline-any cline-neutral">&nbsp;</span>
1460
+ <span class="cline-any cline-neutral">&nbsp;</span>
1461
+ <span class="cline-any cline-yes">56x</span>
1462
+ <span class="cline-any cline-neutral">&nbsp;</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-neutral">&nbsp;</span>
1465
+ <span class="cline-any cline-neutral">&nbsp;</span>
1466
+ <span class="cline-any cline-neutral">&nbsp;</span>
1467
+ <span class="cline-any cline-yes">3x</span>
1468
+ <span class="cline-any cline-neutral">&nbsp;</span>
1469
+ <span class="cline-any cline-yes">53x</span>
1470
+ <span class="cline-any cline-yes">14x</span>
1471
+ <span class="cline-any cline-neutral">&nbsp;</span>
1472
+ <span class="cline-any cline-neutral">&nbsp;</span>
1473
+ <span class="cline-any cline-yes">39x</span>
1474
+ <span class="cline-any cline-neutral">&nbsp;</span>
1475
+ <span class="cline-any cline-no">&nbsp;</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span>
1477
+ <span class="cline-any cline-no">&nbsp;</span>
1478
+ <span class="cline-any cline-neutral">&nbsp;</span>
1479
+ <span class="cline-any cline-neutral">&nbsp;</span>
1480
+ <span class="cline-any cline-no">&nbsp;</span>
1481
+ <span class="cline-any cline-neutral">&nbsp;</span>
1482
+ <span class="cline-any cline-yes">39x</span>
1483
+ <span class="cline-any cline-neutral">&nbsp;</span>
1484
+ <span class="cline-any cline-neutral">&nbsp;</span>
1485
+ <span class="cline-any cline-neutral">&nbsp;</span>
1486
+ <span class="cline-any cline-neutral">&nbsp;</span>
1487
+ <span class="cline-any cline-neutral">&nbsp;</span>
1488
+ <span class="cline-any cline-neutral">&nbsp;</span>
1489
+ <span class="cline-any cline-neutral">&nbsp;</span>
1490
+ <span class="cline-any cline-neutral">&nbsp;</span>
1491
+ <span class="cline-any cline-neutral">&nbsp;</span>
1492
+ <span class="cline-any cline-neutral">&nbsp;</span>
1493
+ <span class="cline-any cline-neutral">&nbsp;</span>
1494
+ <span class="cline-any cline-neutral">&nbsp;</span>
1495
+ <span class="cline-any cline-neutral">&nbsp;</span>
1496
+ <span class="cline-any cline-neutral">&nbsp;</span>
1497
+ <span class="cline-any cline-neutral">&nbsp;</span>
1498
+ <span class="cline-any cline-neutral">&nbsp;</span>
1499
+ <span class="cline-any cline-neutral">&nbsp;</span>
1500
+ <span class="cline-any cline-neutral">&nbsp;</span>
1501
+ <span class="cline-any cline-neutral">&nbsp;</span>
1502
+ <span class="cline-any cline-neutral">&nbsp;</span>
1503
+ <span class="cline-any cline-yes">77x</span>
1504
+ <span class="cline-any cline-neutral">&nbsp;</span>
1505
+ <span class="cline-any cline-yes">77x</span>
1506
+ <span class="cline-any cline-yes">77x</span>
1507
+ <span class="cline-any cline-neutral">&nbsp;</span>
1508
+ <span class="cline-any cline-neutral">&nbsp;</span>
1509
+ <span class="cline-any cline-yes">77x</span>
1510
+ <span class="cline-any cline-neutral">&nbsp;</span>
1511
+ <span class="cline-any cline-neutral">&nbsp;</span>
1512
+ <span class="cline-any cline-neutral">&nbsp;</span>
1513
+ <span class="cline-any cline-neutral">&nbsp;</span>
1514
+ <span class="cline-any cline-yes">4x</span>
1515
+ <span class="cline-any cline-neutral">&nbsp;</span>
1516
+ <span class="cline-any cline-yes">73x</span>
1517
+ <span class="cline-any cline-yes">22x</span>
1518
+ <span class="cline-any cline-neutral">&nbsp;</span>
1519
+ <span class="cline-any cline-neutral">&nbsp;</span>
1520
+ <span class="cline-any cline-yes">51x</span>
1521
+ <span class="cline-any cline-neutral">&nbsp;</span>
1522
+ <span class="cline-any cline-no">&nbsp;</span>
1523
+ <span class="cline-any cline-neutral">&nbsp;</span>
1524
+ <span class="cline-any cline-neutral">&nbsp;</span>
1525
+ <span class="cline-any cline-neutral">&nbsp;</span>
1526
+ <span class="cline-any cline-no">&nbsp;</span>
1527
+ <span class="cline-any cline-neutral">&nbsp;</span>
1528
+ <span class="cline-any cline-neutral">&nbsp;</span>
1529
+ <span class="cline-any cline-no">&nbsp;</span>
1530
+ <span class="cline-any cline-no">&nbsp;</span>
1531
+ <span class="cline-any cline-neutral">&nbsp;</span>
1532
+ <span class="cline-any cline-no">&nbsp;</span>
1533
+ <span class="cline-any cline-neutral">&nbsp;</span>
1534
+ <span class="cline-any cline-neutral">&nbsp;</span>
1535
+ <span class="cline-any cline-no">&nbsp;</span>
1536
+ <span class="cline-any cline-no">&nbsp;</span>
1537
+ <span class="cline-any cline-neutral">&nbsp;</span>
1538
+ <span class="cline-any cline-neutral">&nbsp;</span>
1539
+ <span class="cline-any cline-no">&nbsp;</span>
1540
+ <span class="cline-any cline-neutral">&nbsp;</span>
1541
+ <span class="cline-any cline-neutral">&nbsp;</span>
1542
+ <span class="cline-any cline-neutral">&nbsp;</span>
1543
+ <span class="cline-any cline-neutral">&nbsp;</span>
1544
+ <span class="cline-any cline-yes">51x</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-neutral">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
+ <span class="cline-any cline-neutral">&nbsp;</span>
1550
+ <span class="cline-any cline-neutral">&nbsp;</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-neutral">&nbsp;</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
1555
+ <span class="cline-any cline-neutral">&nbsp;</span>
1556
+ <span class="cline-any cline-neutral">&nbsp;</span>
1557
+ <span class="cline-any cline-neutral">&nbsp;</span>
1558
+ <span class="cline-any cline-yes">16x</span>
1559
+ <span class="cline-any cline-neutral">&nbsp;</span>
1560
+ <span class="cline-any cline-neutral">&nbsp;</span>
1561
+ <span class="cline-any cline-yes">4x</span>
1562
+ <span class="cline-any cline-neutral">&nbsp;</span>
1563
+ <span class="cline-any cline-neutral">&nbsp;</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-neutral">&nbsp;</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-neutral">&nbsp;</span>
1569
+ <span class="cline-any cline-neutral">&nbsp;</span>
1570
+ <span class="cline-any cline-neutral">&nbsp;</span>
1571
+ <span class="cline-any cline-neutral">&nbsp;</span>
1572
+ <span class="cline-any cline-neutral">&nbsp;</span>
1573
+ <span class="cline-any cline-neutral">&nbsp;</span>
1574
+ <span class="cline-any cline-neutral">&nbsp;</span>
1575
+ <span class="cline-any cline-neutral">&nbsp;</span>
1576
+ <span class="cline-any cline-neutral">&nbsp;</span>
1577
+ <span class="cline-any cline-neutral">&nbsp;</span>
1578
+ <span class="cline-any cline-yes">8x</span>
1579
+ <span class="cline-any cline-neutral">&nbsp;</span>
1580
+ <span class="cline-any cline-neutral">&nbsp;</span>
1581
+ <span class="cline-any cline-yes">8x</span>
1582
+ <span class="cline-any cline-neutral">&nbsp;</span>
1583
+ <span class="cline-any cline-neutral">&nbsp;</span>
1584
+ <span class="cline-any cline-neutral">&nbsp;</span>
1585
+ <span class="cline-any cline-yes">6x</span>
1586
+ <span class="cline-any cline-neutral">&nbsp;</span>
1587
+ <span class="cline-any cline-neutral">&nbsp;</span>
1588
+ <span class="cline-any cline-neutral">&nbsp;</span>
1589
+ <span class="cline-any cline-yes">6x</span>
1590
+ <span class="cline-any cline-neutral">&nbsp;</span>
1591
+ <span class="cline-any cline-neutral">&nbsp;</span>
1592
+ <span class="cline-any cline-neutral">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-neutral">&nbsp;</span>
1595
+ <span class="cline-any cline-neutral">&nbsp;</span>
1596
+ <span class="cline-any cline-yes">8x</span>
1597
+ <span class="cline-any cline-yes">8x</span>
1598
+ <span class="cline-any cline-yes">56x</span>
1599
+ <span class="cline-any cline-yes">56x</span>
1600
+ <span class="cline-any cline-yes">56x</span>
1601
+ <span class="cline-any cline-yes">56x</span>
1602
+ <span class="cline-any cline-yes">56x</span>
1603
+ <span class="cline-any cline-yes">56x</span>
1604
+ <span class="cline-any cline-neutral">&nbsp;</span>
1605
+ <span class="cline-any cline-neutral">&nbsp;</span>
1606
+ <span class="cline-any cline-neutral">&nbsp;</span>
1607
+ <span class="cline-any cline-neutral">&nbsp;</span>
1608
+ <span class="cline-any cline-neutral">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-neutral">&nbsp;</span>
1611
+ <span class="cline-any cline-neutral">&nbsp;</span>
1612
+ <span class="cline-any cline-yes">8x</span>
1613
+ <span class="cline-any cline-neutral">&nbsp;</span>
1614
+ <span class="cline-any cline-neutral">&nbsp;</span>
1615
+ <span class="cline-any cline-neutral">&nbsp;</span>
1616
+ <span class="cline-any cline-neutral">&nbsp;</span>
1617
+ <span class="cline-any cline-neutral">&nbsp;</span>
1618
+ <span class="cline-any cline-neutral">&nbsp;</span>
1619
+ <span class="cline-any cline-neutral">&nbsp;</span>
1620
+ <span class="cline-any cline-neutral">&nbsp;</span>
1621
+ <span class="cline-any cline-neutral">&nbsp;</span>
1622
+ <span class="cline-any cline-neutral">&nbsp;</span>
1623
+ <span class="cline-any cline-neutral">&nbsp;</span>
1624
+ <span class="cline-any cline-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-neutral">&nbsp;</span>
1626
+ <span class="cline-any cline-neutral">&nbsp;</span>
1627
+ <span class="cline-any cline-neutral">&nbsp;</span>
1628
+ <span class="cline-any cline-neutral">&nbsp;</span>
1629
+ <span class="cline-any cline-neutral">&nbsp;</span>
1630
+ <span class="cline-any cline-yes">11x</span>
1631
+ <span class="cline-any cline-no">&nbsp;</span>
1632
+ <span class="cline-any cline-neutral">&nbsp;</span>
1633
+ <span class="cline-any cline-neutral">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-yes">11x</span>
1636
+ <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-yes">11x</span>
1639
+ <span class="cline-any cline-yes">11x</span>
1640
+ <span class="cline-any cline-neutral">&nbsp;</span>
1641
+ <span class="cline-any cline-neutral">&nbsp;</span>
1642
+ <span class="cline-any cline-yes">11x</span>
1643
+ <span class="cline-any cline-yes">11x</span>
1644
+ <span class="cline-any cline-yes">77x</span>
1645
+ <span class="cline-any cline-no">&nbsp;</span>
1646
+ <span class="cline-any cline-neutral">&nbsp;</span>
1647
+ <span class="cline-any cline-yes">77x</span>
1648
+ <span class="cline-any cline-yes">77x</span>
1649
+ <span class="cline-any cline-yes">77x</span>
1650
+ <span class="cline-any cline-neutral">&nbsp;</span>
1651
+ <span class="cline-any cline-neutral">&nbsp;</span>
1652
+ <span class="cline-any cline-neutral">&nbsp;</span>
1653
+ <span class="cline-any cline-neutral">&nbsp;</span>
1654
+ <span class="cline-any cline-neutral">&nbsp;</span>
1655
+ <span class="cline-any cline-neutral">&nbsp;</span>
1656
+ <span class="cline-any cline-yes">11x</span>
1657
+ <span class="cline-any cline-neutral">&nbsp;</span>
1658
+ <span class="cline-any cline-neutral">&nbsp;</span>
1659
+ <span class="cline-any cline-neutral">&nbsp;</span>
1660
+ <span class="cline-any cline-neutral">&nbsp;</span>
1661
+ <span class="cline-any cline-neutral">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span>
1663
+ <span class="cline-any cline-neutral">&nbsp;</span>
1664
+ <span class="cline-any cline-neutral">&nbsp;</span>
1665
+ <span class="cline-any cline-neutral">&nbsp;</span>
1666
+ <span class="cline-any cline-neutral">&nbsp;</span>
1667
+ <span class="cline-any cline-neutral">&nbsp;</span>
1668
+ <span class="cline-any cline-neutral">&nbsp;</span>
1669
+ <span class="cline-any cline-neutral">&nbsp;</span>
1670
+ <span class="cline-any cline-neutral">&nbsp;</span>
1671
+ <span class="cline-any cline-neutral">&nbsp;</span>
1672
+ <span class="cline-any cline-neutral">&nbsp;</span>
1673
+ <span class="cline-any cline-neutral">&nbsp;</span>
1674
+ <span class="cline-any cline-neutral">&nbsp;</span>
1675
+ <span class="cline-any cline-yes">10x</span>
1676
+ <span class="cline-any cline-no">&nbsp;</span>
1677
+ <span class="cline-any cline-neutral">&nbsp;</span>
1678
+ <span class="cline-any cline-neutral">&nbsp;</span>
1679
+ <span class="cline-any cline-neutral">&nbsp;</span>
1680
+ <span class="cline-any cline-neutral">&nbsp;</span>
1681
+ <span class="cline-any cline-neutral">&nbsp;</span>
1682
+ <span class="cline-any cline-yes">10x</span>
1683
+ <span class="cline-any cline-neutral">&nbsp;</span>
1684
+ <span class="cline-any cline-neutral">&nbsp;</span>
1685
+ <span class="cline-any cline-neutral">&nbsp;</span>
1686
+ <span class="cline-any cline-neutral">&nbsp;</span>
1687
+ <span class="cline-any cline-yes">10x</span>
1688
+ <span class="cline-any cline-neutral">&nbsp;</span>
1689
+ <span class="cline-any cline-neutral">&nbsp;</span>
1690
+ <span class="cline-any cline-neutral">&nbsp;</span>
1691
+ <span class="cline-any cline-neutral">&nbsp;</span>
1692
+ <span class="cline-any cline-neutral">&nbsp;</span>
1693
+ <span class="cline-any cline-yes">10x</span>
1694
+ <span class="cline-any cline-yes">10x</span>
1695
+ <span class="cline-any cline-yes">10x</span>
1696
+ <span class="cline-any cline-neutral">&nbsp;</span>
1697
+ <span class="cline-any cline-yes">10x</span>
1698
+ <span class="cline-any cline-neutral">&nbsp;</span>
1699
+ <span class="cline-any cline-yes">10x</span>
1700
+ <span class="cline-any cline-neutral">&nbsp;</span>
1701
+ <span class="cline-any cline-yes">10x</span>
1702
+ <span class="cline-any cline-no">&nbsp;</span>
1703
+ <span class="cline-any cline-neutral">&nbsp;</span>
1704
+ <span class="cline-any cline-neutral">&nbsp;</span>
1705
+ <span class="cline-any cline-yes">10x</span>
1706
+ <span class="cline-any cline-no">&nbsp;</span>
1707
+ <span class="cline-any cline-neutral">&nbsp;</span>
1708
+ <span class="cline-any cline-neutral">&nbsp;</span>
1709
+ <span class="cline-any cline-yes">10x</span>
1710
+ <span class="cline-any cline-no">&nbsp;</span>
1711
+ <span class="cline-any cline-neutral">&nbsp;</span>
1712
+ <span class="cline-any cline-neutral">&nbsp;</span>
1713
+ <span class="cline-any cline-yes">10x</span>
1714
+ <span class="cline-any cline-no">&nbsp;</span>
1715
+ <span class="cline-any cline-neutral">&nbsp;</span>
1716
+ <span class="cline-any cline-neutral">&nbsp;</span>
1717
+ <span class="cline-any cline-yes">10x</span>
1718
+ <span class="cline-any cline-neutral">&nbsp;</span>
1719
+ <span class="cline-any cline-no">&nbsp;</span>
1720
+ <span class="cline-any cline-no">&nbsp;</span>
1721
+ <span class="cline-any cline-neutral">&nbsp;</span>
1722
+ <span class="cline-any cline-neutral">&nbsp;</span>
1723
+ <span class="cline-any cline-no">&nbsp;</span>
1724
+ <span class="cline-any cline-neutral">&nbsp;</span>
1725
+ <span class="cline-any cline-neutral">&nbsp;</span>
1726
+ <span class="cline-any cline-neutral">&nbsp;</span>
1727
+ <span class="cline-any cline-neutral">&nbsp;</span>
1728
+ <span class="cline-any cline-neutral">&nbsp;</span>
1729
+ <span class="cline-any cline-neutral">&nbsp;</span>
1730
+ <span class="cline-any cline-yes">10x</span>
1731
+ <span class="cline-any cline-no">&nbsp;</span>
1732
+ <span class="cline-any cline-neutral">&nbsp;</span>
1733
+ <span class="cline-any cline-neutral">&nbsp;</span>
1734
+ <span class="cline-any cline-yes">10x</span>
1735
+ <span class="cline-any cline-no">&nbsp;</span>
1736
+ <span class="cline-any cline-neutral">&nbsp;</span>
1737
+ <span class="cline-any cline-neutral">&nbsp;</span>
1738
+ <span class="cline-any cline-yes">10x</span>
1739
+ <span class="cline-any cline-no">&nbsp;</span>
1740
+ <span class="cline-any cline-neutral">&nbsp;</span>
1741
+ <span class="cline-any cline-neutral">&nbsp;</span>
1742
+ <span class="cline-any cline-yes">10x</span>
1743
+ <span class="cline-any cline-no">&nbsp;</span>
1744
+ <span class="cline-any cline-neutral">&nbsp;</span>
1745
+ <span class="cline-any cline-neutral">&nbsp;</span>
1746
+ <span class="cline-any cline-yes">10x</span>
1747
+ <span class="cline-any cline-no">&nbsp;</span>
1748
+ <span class="cline-any cline-neutral">&nbsp;</span>
1749
+ <span class="cline-any cline-neutral">&nbsp;</span>
1750
+ <span class="cline-any cline-yes">10x</span>
1751
+ <span class="cline-any cline-no">&nbsp;</span>
1752
+ <span class="cline-any cline-neutral">&nbsp;</span>
1753
+ <span class="cline-any cline-neutral">&nbsp;</span>
1754
+ <span class="cline-any cline-yes">10x</span>
1755
+ <span class="cline-any cline-neutral">&nbsp;</span>
1756
+ <span class="cline-any cline-neutral">&nbsp;</span>
1757
+ <span class="cline-any cline-yes">10x</span>
1758
+ <span class="cline-any cline-no">&nbsp;</span>
1759
+ <span class="cline-any cline-neutral">&nbsp;</span>
1760
+ <span class="cline-any cline-yes">10x</span>
1761
+ <span class="cline-any cline-neutral">&nbsp;</span>
1762
+ <span class="cline-any cline-neutral">&nbsp;</span>
1763
+ <span class="cline-any cline-neutral">&nbsp;</span>
1764
+ <span class="cline-any cline-yes">10x</span>
1765
+ <span class="cline-any cline-neutral">&nbsp;</span>
1766
+ <span class="cline-any cline-neutral">&nbsp;</span>
1767
+ <span class="cline-any cline-neutral">&nbsp;</span>
1768
+ <span class="cline-any cline-neutral">&nbsp;</span>
1769
+ <span class="cline-any cline-neutral">&nbsp;</span>
1770
+ <span class="cline-any cline-neutral">&nbsp;</span>
1771
+ <span class="cline-any cline-neutral">&nbsp;</span>
1772
+ <span class="cline-any cline-neutral">&nbsp;</span>
1773
+ <span class="cline-any cline-neutral">&nbsp;</span>
1774
+ <span class="cline-any cline-neutral">&nbsp;</span>
1775
+ <span class="cline-any cline-neutral">&nbsp;</span>
1776
+ <span class="cline-any cline-neutral">&nbsp;</span>
1777
+ <span class="cline-any cline-neutral">&nbsp;</span>
1778
+ <span class="cline-any cline-neutral">&nbsp;</span>
1779
+ <span class="cline-any cline-neutral">&nbsp;</span>
1780
+ <span class="cline-any cline-neutral">&nbsp;</span>
1781
+ <span class="cline-any cline-neutral">&nbsp;</span>
1782
+ <span class="cline-any cline-neutral">&nbsp;</span>
1783
+ <span class="cline-any cline-neutral">&nbsp;</span>
1784
+ <span class="cline-any cline-neutral">&nbsp;</span>
1785
+ <span class="cline-any cline-neutral">&nbsp;</span>
1786
+ <span class="cline-any cline-neutral">&nbsp;</span>
1787
+ <span class="cline-any cline-neutral">&nbsp;</span>
1788
+ <span class="cline-any cline-neutral">&nbsp;</span>
1789
+ <span class="cline-any cline-neutral">&nbsp;</span>
1790
+ <span class="cline-any cline-neutral">&nbsp;</span>
1791
+ <span class="cline-any cline-neutral">&nbsp;</span>
1792
+ <span class="cline-any cline-neutral">&nbsp;</span>
1793
+ <span class="cline-any cline-neutral">&nbsp;</span>
1794
+ <span class="cline-any cline-yes">8x</span>
1795
+ <span class="cline-any cline-yes">8x</span>
1796
+ <span class="cline-any cline-neutral">&nbsp;</span>
1797
+ <span class="cline-any cline-no">&nbsp;</span>
1798
+ <span class="cline-any cline-neutral">&nbsp;</span>
1799
+ <span class="cline-any cline-no">&nbsp;</span>
1800
+ <span class="cline-any cline-no">&nbsp;</span>
1801
+ <span class="cline-any cline-neutral">&nbsp;</span>
1802
+ <span class="cline-any cline-neutral">&nbsp;</span>
1803
+ <span class="cline-any cline-neutral">&nbsp;</span>
1804
+ <span class="cline-any cline-no">&nbsp;</span>
1805
+ <span class="cline-any cline-neutral">&nbsp;</span>
1806
+ <span class="cline-any cline-neutral">&nbsp;</span>
1807
+ <span class="cline-any cline-no">&nbsp;</span>
1808
+ <span class="cline-any cline-neutral">&nbsp;</span>
1809
+ <span class="cline-any cline-neutral">&nbsp;</span>
1810
+ <span class="cline-any cline-neutral">&nbsp;</span>
1811
+ <span class="cline-any cline-neutral">&nbsp;</span>
1812
+ <span class="cline-any cline-neutral">&nbsp;</span>
1813
+ <span class="cline-any cline-neutral">&nbsp;</span>
1814
+ <span class="cline-any cline-neutral">&nbsp;</span>
1815
+ <span class="cline-any cline-neutral">&nbsp;</span>
1816
+ <span class="cline-any cline-no">&nbsp;</span>
1817
+ <span class="cline-any cline-neutral">&nbsp;</span>
1818
+ <span class="cline-any cline-neutral">&nbsp;</span>
1819
+ <span class="cline-any cline-neutral">&nbsp;</span>
1820
+ <span class="cline-any cline-no">&nbsp;</span>
1821
+ <span class="cline-any cline-neutral">&nbsp;</span>
1822
+ <span class="cline-any cline-neutral">&nbsp;</span>
1823
+ <span class="cline-any cline-neutral">&nbsp;</span>
1824
+ <span class="cline-any cline-neutral">&nbsp;</span>
1825
+ <span class="cline-any cline-neutral">&nbsp;</span>
1826
+ <span class="cline-any cline-neutral">&nbsp;</span>
1827
+ <span class="cline-any cline-neutral">&nbsp;</span>
1828
+ <span class="cline-any cline-neutral">&nbsp;</span>
1829
+ <span class="cline-any cline-neutral">&nbsp;</span>
1830
+ <span class="cline-any cline-neutral">&nbsp;</span>
1831
+ <span class="cline-any cline-no">&nbsp;</span>
1832
+ <span class="cline-any cline-neutral">&nbsp;</span>
1833
+ <span class="cline-any cline-yes">8x</span>
1834
+ <span class="cline-any cline-no">&nbsp;</span>
1835
+ <span class="cline-any cline-neutral">&nbsp;</span>
1836
+ <span class="cline-any cline-neutral">&nbsp;</span>
1837
+ <span class="cline-any cline-no">&nbsp;</span>
1838
+ <span class="cline-any cline-neutral">&nbsp;</span>
1839
+ <span class="cline-any cline-yes">8x</span>
1840
+ <span class="cline-any cline-neutral">&nbsp;</span>
1841
+ <span class="cline-any cline-neutral">&nbsp;</span>
1842
+ <span class="cline-any cline-neutral">&nbsp;</span>
1843
+ <span class="cline-any cline-yes">8x</span>
1844
+ <span class="cline-any cline-neutral">&nbsp;</span>
1845
+ <span class="cline-any cline-neutral">&nbsp;</span>
1846
+ <span class="cline-any cline-neutral">&nbsp;</span>
1847
+ <span class="cline-any cline-neutral">&nbsp;</span>
1848
+ <span class="cline-any cline-neutral">&nbsp;</span>
1849
+ <span class="cline-any cline-neutral">&nbsp;</span>
1850
+ <span class="cline-any cline-neutral">&nbsp;</span>
1851
+ <span class="cline-any cline-neutral">&nbsp;</span>
1852
+ <span class="cline-any cline-neutral">&nbsp;</span>
1853
+ <span class="cline-any cline-neutral">&nbsp;</span>
1854
+ <span class="cline-any cline-neutral">&nbsp;</span>
1855
+ <span class="cline-any cline-neutral">&nbsp;</span>
1856
+ <span class="cline-any cline-neutral">&nbsp;</span>
1857
+ <span class="cline-any cline-neutral">&nbsp;</span>
1858
+ <span class="cline-any cline-neutral">&nbsp;</span>
1859
+ <span class="cline-any cline-neutral">&nbsp;</span>
1860
+ <span class="cline-any cline-neutral">&nbsp;</span>
1861
+ <span class="cline-any cline-neutral">&nbsp;</span>
1862
+ <span class="cline-any cline-neutral">&nbsp;</span>
1863
+ <span class="cline-any cline-neutral">&nbsp;</span>
1864
+ <span class="cline-any cline-neutral">&nbsp;</span>
1865
+ <span class="cline-any cline-neutral">&nbsp;</span>
1866
+ <span class="cline-any cline-neutral">&nbsp;</span>
1867
+ <span class="cline-any cline-neutral">&nbsp;</span>
1868
+ <span class="cline-any cline-neutral">&nbsp;</span>
1869
+ <span class="cline-any cline-neutral">&nbsp;</span>
1870
+ <span class="cline-any cline-neutral">&nbsp;</span>
1871
+ <span class="cline-any cline-neutral">&nbsp;</span>
1872
+ <span class="cline-any cline-neutral">&nbsp;</span>
1873
+ <span class="cline-any cline-neutral">&nbsp;</span>
1874
+ <span class="cline-any cline-neutral">&nbsp;</span>
1875
+ <span class="cline-any cline-neutral">&nbsp;</span>
1876
+ <span class="cline-any cline-neutral">&nbsp;</span>
1877
+ <span class="cline-any cline-neutral">&nbsp;</span>
1878
+ <span class="cline-any cline-neutral">&nbsp;</span>
1879
+ <span class="cline-any cline-neutral">&nbsp;</span>
1880
+ <span class="cline-any cline-neutral">&nbsp;</span>
1881
+ <span class="cline-any cline-neutral">&nbsp;</span>
1882
+ <span class="cline-any cline-neutral">&nbsp;</span>
1883
+ <span class="cline-any cline-neutral">&nbsp;</span>
1884
+ <span class="cline-any cline-neutral">&nbsp;</span>
1885
+ <span class="cline-any cline-neutral">&nbsp;</span>
1886
+ <span class="cline-any cline-neutral">&nbsp;</span>
1887
+ <span class="cline-any cline-neutral">&nbsp;</span>
1888
+ <span class="cline-any cline-neutral">&nbsp;</span>
1889
+ <span class="cline-any cline-neutral">&nbsp;</span>
1890
+ <span class="cline-any cline-neutral">&nbsp;</span>
1891
+ <span class="cline-any cline-neutral">&nbsp;</span>
1892
+ <span class="cline-any cline-yes">3x</span>
1893
+ <span class="cline-any cline-yes">4x</span>
1894
+ <span class="cline-any cline-neutral">&nbsp;</span>
1895
+ <span class="cline-any cline-neutral">&nbsp;</span>
1896
+ <span class="cline-any cline-neutral">&nbsp;</span>
1897
+ <span class="cline-any cline-neutral">&nbsp;</span>
1898
+ <span class="cline-any cline-neutral">&nbsp;</span>
1899
+ <span class="cline-any cline-neutral">&nbsp;</span>
1900
+ <span class="cline-any cline-neutral">&nbsp;</span>
1901
+ <span class="cline-any cline-yes">4x</span>
1902
+ <span class="cline-any cline-yes">4x</span>
1903
+ <span class="cline-any cline-neutral">&nbsp;</span>
1904
+ <span class="cline-any cline-neutral">&nbsp;</span>
1905
+ <span class="cline-any cline-neutral">&nbsp;</span>
1906
+ <span class="cline-any cline-neutral">&nbsp;</span>
1907
+ <span class="cline-any cline-neutral">&nbsp;</span>
1908
+ <span class="cline-any cline-neutral">&nbsp;</span>
1909
+ <span class="cline-any cline-neutral">&nbsp;</span>
1910
+ <span class="cline-any cline-neutral">&nbsp;</span>
1911
+ <span class="cline-any cline-neutral">&nbsp;</span>
1912
+ <span class="cline-any cline-neutral">&nbsp;</span>
1913
+ <span class="cline-any cline-neutral">&nbsp;</span>
1914
+ <span class="cline-any cline-neutral">&nbsp;</span>
1915
+ <span class="cline-any cline-neutral">&nbsp;</span>
1916
+ <span class="cline-any cline-neutral">&nbsp;</span>
1917
+ <span class="cline-any cline-neutral">&nbsp;</span>
1918
+ <span class="cline-any cline-neutral">&nbsp;</span>
1919
+ <span class="cline-any cline-neutral">&nbsp;</span>
1920
+ <span class="cline-any cline-neutral">&nbsp;</span>
1921
+ <span class="cline-any cline-neutral">&nbsp;</span>
1922
+ <span class="cline-any cline-yes">6x</span>
1923
+ <span class="cline-any cline-yes">6x</span>
1924
+ <span class="cline-any cline-neutral">&nbsp;</span>
1925
+ <span class="cline-any cline-neutral">&nbsp;</span>
1926
+ <span class="cline-any cline-neutral">&nbsp;</span>
1927
+ <span class="cline-any cline-neutral">&nbsp;</span>
1928
+ <span class="cline-any cline-neutral">&nbsp;</span>
1929
+ <span class="cline-any cline-neutral">&nbsp;</span>
1930
+ <span class="cline-any cline-yes">6x</span>
1931
+ <span class="cline-any cline-neutral">&nbsp;</span>
1932
+ <span class="cline-any cline-neutral">&nbsp;</span>
1933
+ <span class="cline-any cline-yes">6x</span>
1934
+ <span class="cline-any cline-neutral">&nbsp;</span>
1935
+ <span class="cline-any cline-neutral">&nbsp;</span>
1936
+ <span class="cline-any cline-neutral">&nbsp;</span>
1937
+ <span class="cline-any cline-yes">6x</span>
1938
+ <span class="cline-any cline-neutral">&nbsp;</span>
1939
+ <span class="cline-any cline-neutral">&nbsp;</span>
1940
+ <span class="cline-any cline-neutral">&nbsp;</span>
1941
+ <span class="cline-any cline-neutral">&nbsp;</span>
1942
+ <span class="cline-any cline-neutral">&nbsp;</span>
1943
+ <span class="cline-any cline-neutral">&nbsp;</span>
1944
+ <span class="cline-any cline-neutral">&nbsp;</span>
1945
+ <span class="cline-any cline-neutral">&nbsp;</span>
1946
+ <span class="cline-any cline-neutral">&nbsp;</span>
1947
+ <span class="cline-any cline-neutral">&nbsp;</span>
1948
+ <span class="cline-any cline-yes">6x</span>
1949
+ <span class="cline-any cline-neutral">&nbsp;</span>
1950
+ <span class="cline-any cline-neutral">&nbsp;</span>
1951
+ <span class="cline-any cline-neutral">&nbsp;</span>
1952
+ <span class="cline-any cline-neutral">&nbsp;</span>
1953
+ <span class="cline-any cline-neutral">&nbsp;</span>
1954
+ <span class="cline-any cline-yes">6x</span>
1955
+ <span class="cline-any cline-neutral">&nbsp;</span>
1956
+ <span class="cline-any cline-neutral">&nbsp;</span>
1957
+ <span class="cline-any cline-neutral">&nbsp;</span>
1958
+ <span class="cline-any cline-neutral">&nbsp;</span>
1959
+ <span class="cline-any cline-neutral">&nbsp;</span>
1960
+ <span class="cline-any cline-neutral">&nbsp;</span>
1961
+ <span class="cline-any cline-neutral">&nbsp;</span>
1962
+ <span class="cline-any cline-neutral">&nbsp;</span>
1963
+ <span class="cline-any cline-neutral">&nbsp;</span>
1964
+ <span class="cline-any cline-neutral">&nbsp;</span>
1965
+ <span class="cline-any cline-neutral">&nbsp;</span>
1966
+ <span class="cline-any cline-neutral">&nbsp;</span>
1967
+ <span class="cline-any cline-neutral">&nbsp;</span>
1968
+ <span class="cline-any cline-neutral">&nbsp;</span>
1969
+ <span class="cline-any cline-neutral">&nbsp;</span>
1970
+ <span class="cline-any cline-neutral">&nbsp;</span>
1971
+ <span class="cline-any cline-neutral">&nbsp;</span>
1972
+ <span class="cline-any cline-yes">6x</span>
1973
+ <span class="cline-any cline-neutral">&nbsp;</span>
1974
+ <span class="cline-any cline-yes">6x</span>
1975
+ <span class="cline-any cline-neutral">&nbsp;</span>
1976
+ <span class="cline-any cline-neutral">&nbsp;</span>
1977
+ <span class="cline-any cline-yes">6x</span>
1978
+ <span class="cline-any cline-neutral">&nbsp;</span>
1979
+ <span class="cline-any cline-neutral">&nbsp;</span>
1980
+ <span class="cline-any cline-yes">6x</span>
1981
+ <span class="cline-any cline-yes">6x</span>
1982
+ <span class="cline-any cline-neutral">&nbsp;</span>
1983
+ <span class="cline-any cline-neutral">&nbsp;</span>
1984
+ <span class="cline-any cline-neutral">&nbsp;</span>
1985
+ <span class="cline-any cline-yes">6x</span>
1986
+ <span class="cline-any cline-yes">6x</span>
1987
+ <span class="cline-any cline-yes">6x</span>
1988
+ <span class="cline-any cline-yes">6x</span>
1989
+ <span class="cline-any cline-neutral">&nbsp;</span>
1990
+ <span class="cline-any cline-yes">6x</span>
1991
+ <span class="cline-any cline-neutral">&nbsp;</span>
1992
+ <span class="cline-any cline-neutral">&nbsp;</span>
1993
+ <span class="cline-any cline-yes">6x</span>
1994
+ <span class="cline-any cline-no">&nbsp;</span>
1995
+ <span class="cline-any cline-no">&nbsp;</span>
1996
+ <span class="cline-any cline-no">&nbsp;</span>
1997
+ <span class="cline-any cline-neutral">&nbsp;</span>
1998
+ <span class="cline-any cline-no">&nbsp;</span>
1999
+ <span class="cline-any cline-neutral">&nbsp;</span>
2000
+ <span class="cline-any cline-neutral">&nbsp;</span>
2001
+ <span class="cline-any cline-yes">6x</span>
2002
+ <span class="cline-any cline-yes">6x</span>
2003
+ <span class="cline-any cline-yes">3x</span>
2004
+ <span class="cline-any cline-neutral">&nbsp;</span>
2005
+ <span class="cline-any cline-yes">3x</span>
2006
+ <span class="cline-any cline-neutral">&nbsp;</span>
2007
+ <span class="cline-any cline-neutral">&nbsp;</span>
2008
+ <span class="cline-any cline-neutral">&nbsp;</span>
2009
+ <span class="cline-any cline-neutral">&nbsp;</span>
2010
+ <span class="cline-any cline-neutral">&nbsp;</span>
2011
+ <span class="cline-any cline-neutral">&nbsp;</span>
2012
+ <span class="cline-any cline-neutral">&nbsp;</span>
2013
+ <span class="cline-any cline-neutral">&nbsp;</span>
2014
+ <span class="cline-any cline-neutral">&nbsp;</span>
2015
+ <span class="cline-any cline-neutral">&nbsp;</span>
2016
+ <span class="cline-any cline-neutral">&nbsp;</span>
2017
+ <span class="cline-any cline-neutral">&nbsp;</span>
2018
+ <span class="cline-any cline-neutral">&nbsp;</span>
2019
+ <span class="cline-any cline-neutral">&nbsp;</span>
2020
+ <span class="cline-any cline-neutral">&nbsp;</span>
2021
+ <span class="cline-any cline-neutral">&nbsp;</span>
2022
+ <span class="cline-any cline-neutral">&nbsp;</span>
2023
+ <span class="cline-any cline-neutral">&nbsp;</span>
2024
+ <span class="cline-any cline-neutral">&nbsp;</span>
2025
+ <span class="cline-any cline-neutral">&nbsp;</span>
2026
+ <span class="cline-any cline-neutral">&nbsp;</span>
2027
+ <span class="cline-any cline-neutral">&nbsp;</span>
2028
+ <span class="cline-any cline-neutral">&nbsp;</span>
2029
+ <span class="cline-any cline-no">&nbsp;</span>
2030
+ <span class="cline-any cline-neutral">&nbsp;</span>
2031
+ <span class="cline-any cline-no">&nbsp;</span>
2032
+ <span class="cline-any cline-neutral">&nbsp;</span>
2033
+ <span class="cline-any cline-neutral">&nbsp;</span>
2034
+ <span class="cline-any cline-neutral">&nbsp;</span>
2035
+ <span class="cline-any cline-neutral">&nbsp;</span>
2036
+ <span class="cline-any cline-no">&nbsp;</span>
2037
+ <span class="cline-any cline-neutral">&nbsp;</span>
2038
+ <span class="cline-any cline-neutral">&nbsp;</span>
2039
+ <span class="cline-any cline-no">&nbsp;</span>
2040
+ <span class="cline-any cline-no">&nbsp;</span>
2041
+ <span class="cline-any cline-neutral">&nbsp;</span>
2042
+ <span class="cline-any cline-no">&nbsp;</span>
2043
+ <span class="cline-any cline-no">&nbsp;</span>
2044
+ <span class="cline-any cline-no">&nbsp;</span>
2045
+ <span class="cline-any cline-no">&nbsp;</span>
2046
+ <span class="cline-any cline-neutral">&nbsp;</span>
2047
+ <span class="cline-any cline-no">&nbsp;</span>
2048
+ <span class="cline-any cline-neutral">&nbsp;</span>
2049
+ <span class="cline-any cline-neutral">&nbsp;</span>
2050
+ <span class="cline-any cline-no">&nbsp;</span>
2051
+ <span class="cline-any cline-no">&nbsp;</span>
2052
+ <span class="cline-any cline-no">&nbsp;</span>
2053
+ <span class="cline-any cline-no">&nbsp;</span>
2054
+ <span class="cline-any cline-neutral">&nbsp;</span>
2055
+ <span class="cline-any cline-no">&nbsp;</span>
2056
+ <span class="cline-any cline-neutral">&nbsp;</span>
2057
+ <span class="cline-any cline-neutral">&nbsp;</span>
2058
+ <span class="cline-any cline-no">&nbsp;</span>
2059
+ <span class="cline-any cline-no">&nbsp;</span>
2060
+ <span class="cline-any cline-no">&nbsp;</span>
2061
+ <span class="cline-any cline-neutral">&nbsp;</span>
2062
+ <span class="cline-any cline-neutral">&nbsp;</span>
2063
+ <span class="cline-any cline-no">&nbsp;</span>
2064
+ <span class="cline-any cline-neutral">&nbsp;</span>
2065
+ <span class="cline-any cline-no">&nbsp;</span>
2066
+ <span class="cline-any cline-neutral">&nbsp;</span>
2067
+ <span class="cline-any cline-no">&nbsp;</span>
2068
+ <span class="cline-any cline-neutral">&nbsp;</span>
2069
+ <span class="cline-any cline-no">&nbsp;</span>
2070
+ <span class="cline-any cline-neutral">&nbsp;</span>
2071
+ <span class="cline-any cline-neutral">&nbsp;</span>
2072
+ <span class="cline-any cline-neutral">&nbsp;</span>
2073
+ <span class="cline-any cline-neutral">&nbsp;</span>
2074
+ <span class="cline-any cline-no">&nbsp;</span>
2075
+ <span class="cline-any cline-no">&nbsp;</span>
2076
+ <span class="cline-any cline-no">&nbsp;</span>
2077
+ <span class="cline-any cline-neutral">&nbsp;</span>
2078
+ <span class="cline-any cline-no">&nbsp;</span>
2079
+ <span class="cline-any cline-neutral">&nbsp;</span>
2080
+ <span class="cline-any cline-no">&nbsp;</span>
2081
+ <span class="cline-any cline-neutral">&nbsp;</span>
2082
+ <span class="cline-any cline-no">&nbsp;</span>
2083
+ <span class="cline-any cline-neutral">&nbsp;</span>
2084
+ <span class="cline-any cline-neutral">&nbsp;</span>
2085
+ <span class="cline-any cline-neutral">&nbsp;</span>
2086
+ <span class="cline-any cline-no">&nbsp;</span>
2087
+ <span class="cline-any cline-no">&nbsp;</span>
2088
+ <span class="cline-any cline-no">&nbsp;</span>
2089
+ <span class="cline-any cline-neutral">&nbsp;</span>
2090
+ <span class="cline-any cline-no">&nbsp;</span>
2091
+ <span class="cline-any cline-neutral">&nbsp;</span>
2092
+ <span class="cline-any cline-no">&nbsp;</span>
2093
+ <span class="cline-any cline-neutral">&nbsp;</span>
2094
+ <span class="cline-any cline-neutral">&nbsp;</span>
2095
+ <span class="cline-any cline-neutral">&nbsp;</span>
2096
+ <span class="cline-any cline-neutral">&nbsp;</span>
2097
+ <span class="cline-any cline-neutral">&nbsp;</span>
2098
+ <span class="cline-any cline-neutral">&nbsp;</span>
2099
+ <span class="cline-any cline-neutral">&nbsp;</span>
2100
+ <span class="cline-any cline-neutral">&nbsp;</span>
2101
+ <span class="cline-any cline-neutral">&nbsp;</span>
2102
+ <span class="cline-any cline-neutral">&nbsp;</span>
2103
+ <span class="cline-any cline-neutral">&nbsp;</span>
2104
+ <span class="cline-any cline-neutral">&nbsp;</span>
2105
+ <span class="cline-any cline-neutral">&nbsp;</span>
2106
+ <span class="cline-any cline-neutral">&nbsp;</span>
2107
+ <span class="cline-any cline-neutral">&nbsp;</span>
2108
+ <span class="cline-any cline-neutral">&nbsp;</span>
2109
+ <span class="cline-any cline-neutral">&nbsp;</span>
2110
+ <span class="cline-any cline-neutral">&nbsp;</span>
2111
+ <span class="cline-any cline-neutral">&nbsp;</span>
2112
+ <span class="cline-any cline-neutral">&nbsp;</span>
2113
+ <span class="cline-any cline-neutral">&nbsp;</span>
2114
+ <span class="cline-any cline-yes">2x</span>
2115
+ <span class="cline-any cline-neutral">&nbsp;</span>
2116
+ <span class="cline-any cline-yes">2x</span>
2117
+ <span class="cline-any cline-neutral">&nbsp;</span>
2118
+ <span class="cline-any cline-neutral">&nbsp;</span>
2119
+ <span class="cline-any cline-yes">2x</span>
2120
+ <span class="cline-any cline-yes">2x</span>
2121
+ <span class="cline-any cline-neutral">&nbsp;</span>
2122
+ <span class="cline-any cline-neutral">&nbsp;</span>
2123
+ <span class="cline-any cline-neutral">&nbsp;</span>
2124
+ <span class="cline-any cline-neutral">&nbsp;</span>
2125
+ <span class="cline-any cline-neutral">&nbsp;</span>
2126
+ <span class="cline-any cline-neutral">&nbsp;</span>
2127
+ <span class="cline-any cline-yes">2x</span>
2128
+ <span class="cline-any cline-yes">2x</span>
2129
+ <span class="cline-any cline-neutral">&nbsp;</span>
2130
+ <span class="cline-any cline-neutral">&nbsp;</span>
2131
+ <span class="cline-any cline-neutral">&nbsp;</span>
2132
+ <span class="cline-any cline-yes">2x</span>
2133
+ <span class="cline-any cline-yes">2x</span>
2134
+ <span class="cline-any cline-yes">2x</span>
2135
+ <span class="cline-any cline-yes">2x</span>
2136
+ <span class="cline-any cline-neutral">&nbsp;</span>
2137
+ <span class="cline-any cline-yes">2x</span>
2138
+ <span class="cline-any cline-neutral">&nbsp;</span>
2139
+ <span class="cline-any cline-neutral">&nbsp;</span>
2140
+ <span class="cline-any cline-yes">2x</span>
2141
+ <span class="cline-any cline-no">&nbsp;</span>
2142
+ <span class="cline-any cline-no">&nbsp;</span>
2143
+ <span class="cline-any cline-no">&nbsp;</span>
2144
+ <span class="cline-any cline-neutral">&nbsp;</span>
2145
+ <span class="cline-any cline-no">&nbsp;</span>
2146
+ <span class="cline-any cline-neutral">&nbsp;</span>
2147
+ <span class="cline-any cline-neutral">&nbsp;</span>
2148
+ <span class="cline-any cline-yes">2x</span>
2149
+ <span class="cline-any cline-neutral">&nbsp;</span>
2150
+ <span class="cline-any cline-neutral">&nbsp;</span>
2151
+ <span class="cline-any cline-neutral">&nbsp;</span>
2152
+ <span class="cline-any cline-neutral">&nbsp;</span>
2153
+ <span class="cline-any cline-neutral">&nbsp;</span>
2154
+ <span class="cline-any cline-neutral">&nbsp;</span>
2155
+ <span class="cline-any cline-neutral">&nbsp;</span>
2156
+ <span class="cline-any cline-neutral">&nbsp;</span>
2157
+ <span class="cline-any cline-neutral">&nbsp;</span>
2158
+ <span class="cline-any cline-neutral">&nbsp;</span>
2159
+ <span class="cline-any cline-yes">2x</span>
2160
+ <span class="cline-any cline-neutral">&nbsp;</span>
2161
+ <span class="cline-any cline-neutral">&nbsp;</span>
2162
+ <span class="cline-any cline-neutral">&nbsp;</span>
2163
+ <span class="cline-any cline-neutral">&nbsp;</span>
2164
+ <span class="cline-any cline-neutral">&nbsp;</span>
2165
+ <span class="cline-any cline-neutral">&nbsp;</span>
2166
+ <span class="cline-any cline-neutral">&nbsp;</span>
2167
+ <span class="cline-any cline-neutral">&nbsp;</span>
2168
+ <span class="cline-any cline-neutral">&nbsp;</span>
2169
+ <span class="cline-any cline-neutral">&nbsp;</span>
2170
+ <span class="cline-any cline-neutral">&nbsp;</span>
2171
+ <span class="cline-any cline-neutral">&nbsp;</span>
2172
+ <span class="cline-any cline-neutral">&nbsp;</span>
2173
+ <span class="cline-any cline-neutral">&nbsp;</span>
2174
+ <span class="cline-any cline-neutral">&nbsp;</span>
2175
+ <span class="cline-any cline-neutral">&nbsp;</span>
2176
+ <span class="cline-any cline-neutral">&nbsp;</span>
2177
+ <span class="cline-any cline-no">&nbsp;</span>
2178
+ <span class="cline-any cline-neutral">&nbsp;</span>
2179
+ <span class="cline-any cline-no">&nbsp;</span>
2180
+ <span class="cline-any cline-neutral">&nbsp;</span>
2181
+ <span class="cline-any cline-neutral">&nbsp;</span>
2182
+ <span class="cline-any cline-no">&nbsp;</span>
2183
+ <span class="cline-any cline-no">&nbsp;</span>
2184
+ <span class="cline-any cline-neutral">&nbsp;</span>
2185
+ <span class="cline-any cline-neutral">&nbsp;</span>
2186
+ <span class="cline-any cline-neutral">&nbsp;</span>
2187
+ <span class="cline-any cline-neutral">&nbsp;</span>
2188
+ <span class="cline-any cline-neutral">&nbsp;</span>
2189
+ <span class="cline-any cline-neutral">&nbsp;</span>
2190
+ <span class="cline-any cline-no">&nbsp;</span>
2191
+ <span class="cline-any cline-no">&nbsp;</span>
2192
+ <span class="cline-any cline-neutral">&nbsp;</span>
2193
+ <span class="cline-any cline-neutral">&nbsp;</span>
2194
+ <span class="cline-any cline-neutral">&nbsp;</span>
2195
+ <span class="cline-any cline-no">&nbsp;</span>
2196
+ <span class="cline-any cline-no">&nbsp;</span>
2197
+ <span class="cline-any cline-no">&nbsp;</span>
2198
+ <span class="cline-any cline-no">&nbsp;</span>
2199
+ <span class="cline-any cline-neutral">&nbsp;</span>
2200
+ <span class="cline-any cline-no">&nbsp;</span>
2201
+ <span class="cline-any cline-neutral">&nbsp;</span>
2202
+ <span class="cline-any cline-neutral">&nbsp;</span>
2203
+ <span class="cline-any cline-no">&nbsp;</span>
2204
+ <span class="cline-any cline-no">&nbsp;</span>
2205
+ <span class="cline-any cline-no">&nbsp;</span>
2206
+ <span class="cline-any cline-no">&nbsp;</span>
2207
+ <span class="cline-any cline-neutral">&nbsp;</span>
2208
+ <span class="cline-any cline-no">&nbsp;</span>
2209
+ <span class="cline-any cline-neutral">&nbsp;</span>
2210
+ <span class="cline-any cline-neutral">&nbsp;</span>
2211
+ <span class="cline-any cline-no">&nbsp;</span>
2212
+ <span class="cline-any cline-neutral">&nbsp;</span>
2213
+ <span class="cline-any cline-neutral">&nbsp;</span>
2214
+ <span class="cline-any cline-neutral">&nbsp;</span>
2215
+ <span class="cline-any cline-no">&nbsp;</span>
2216
+ <span class="cline-any cline-neutral">&nbsp;</span>
2217
+ <span class="cline-any cline-neutral">&nbsp;</span>
2218
+ <span class="cline-any cline-neutral">&nbsp;</span>
2219
+ <span class="cline-any cline-no">&nbsp;</span>
2220
+ <span class="cline-any cline-no">&nbsp;</span>
2221
+ <span class="cline-any cline-no">&nbsp;</span>
2222
+ <span class="cline-any cline-no">&nbsp;</span>
2223
+ <span class="cline-any cline-neutral">&nbsp;</span>
2224
+ <span class="cline-any cline-no">&nbsp;</span>
2225
+ <span class="cline-any cline-neutral">&nbsp;</span>
2226
+ <span class="cline-any cline-neutral">&nbsp;</span>
2227
+ <span class="cline-any cline-no">&nbsp;</span>
2228
+ <span class="cline-any cline-no">&nbsp;</span>
2229
+ <span class="cline-any cline-no">&nbsp;</span>
2230
+ <span class="cline-any cline-no">&nbsp;</span>
2231
+ <span class="cline-any cline-neutral">&nbsp;</span>
2232
+ <span class="cline-any cline-no">&nbsp;</span>
2233
+ <span class="cline-any cline-neutral">&nbsp;</span>
2234
+ <span class="cline-any cline-neutral">&nbsp;</span>
2235
+ <span class="cline-any cline-neutral">&nbsp;</span>
2236
+ <span class="cline-any cline-no">&nbsp;</span>
2237
+ <span class="cline-any cline-neutral">&nbsp;</span>
2238
+ <span class="cline-any cline-neutral">&nbsp;</span>
2239
+ <span class="cline-any cline-no">&nbsp;</span>
2240
+ <span class="cline-any cline-no">&nbsp;</span>
2241
+ <span class="cline-any cline-neutral">&nbsp;</span>
2242
+ <span class="cline-any cline-neutral">&nbsp;</span>
2243
+ <span class="cline-any cline-no">&nbsp;</span>
2244
+ <span class="cline-any cline-neutral">&nbsp;</span>
2245
+ <span class="cline-any cline-no">&nbsp;</span>
2246
+ <span class="cline-any cline-neutral">&nbsp;</span>
2247
+ <span class="cline-any cline-neutral">&nbsp;</span>
2248
+ <span class="cline-any cline-neutral">&nbsp;</span>
2249
+ <span class="cline-any cline-neutral">&nbsp;</span>
2250
+ <span class="cline-any cline-neutral">&nbsp;</span>
2251
+ <span class="cline-any cline-neutral">&nbsp;</span>
2252
+ <span class="cline-any cline-neutral">&nbsp;</span>
2253
+ <span class="cline-any cline-neutral">&nbsp;</span>
2254
+ <span class="cline-any cline-neutral">&nbsp;</span>
2255
+ <span class="cline-any cline-neutral">&nbsp;</span>
2256
+ <span class="cline-any cline-neutral">&nbsp;</span>
2257
+ <span class="cline-any cline-neutral">&nbsp;</span>
2258
+ <span class="cline-any cline-neutral">&nbsp;</span>
2259
+ <span class="cline-any cline-neutral">&nbsp;</span>
2260
+ <span class="cline-any cline-neutral">&nbsp;</span>
2261
+ <span class="cline-any cline-neutral">&nbsp;</span>
2262
+ <span class="cline-any cline-no">&nbsp;</span>
2263
+ <span class="cline-any cline-neutral">&nbsp;</span>
2264
+ <span class="cline-any cline-no">&nbsp;</span>
2265
+ <span class="cline-any cline-neutral">&nbsp;</span>
2266
+ <span class="cline-any cline-neutral">&nbsp;</span>
2267
+ <span class="cline-any cline-neutral">&nbsp;</span>
2268
+ <span class="cline-any cline-neutral">&nbsp;</span>
2269
+ <span class="cline-any cline-no">&nbsp;</span>
2270
+ <span class="cline-any cline-neutral">&nbsp;</span>
2271
+ <span class="cline-any cline-neutral">&nbsp;</span>
2272
+ <span class="cline-any cline-no">&nbsp;</span>
2273
+ <span class="cline-any cline-no">&nbsp;</span>
2274
+ <span class="cline-any cline-neutral">&nbsp;</span>
2275
+ <span class="cline-any cline-no">&nbsp;</span>
2276
+ <span class="cline-any cline-neutral">&nbsp;</span>
2277
+ <span class="cline-any cline-no">&nbsp;</span>
2278
+ <span class="cline-any cline-no">&nbsp;</span>
2279
+ <span class="cline-any cline-no">&nbsp;</span>
2280
+ <span class="cline-any cline-no">&nbsp;</span>
2281
+ <span class="cline-any cline-neutral">&nbsp;</span>
2282
+ <span class="cline-any cline-no">&nbsp;</span>
2283
+ <span class="cline-any cline-neutral">&nbsp;</span>
2284
+ <span class="cline-any cline-neutral">&nbsp;</span>
2285
+ <span class="cline-any cline-no">&nbsp;</span>
2286
+ <span class="cline-any cline-no">&nbsp;</span>
2287
+ <span class="cline-any cline-no">&nbsp;</span>
2288
+ <span class="cline-any cline-no">&nbsp;</span>
2289
+ <span class="cline-any cline-neutral">&nbsp;</span>
2290
+ <span class="cline-any cline-no">&nbsp;</span>
2291
+ <span class="cline-any cline-neutral">&nbsp;</span>
2292
+ <span class="cline-any cline-neutral">&nbsp;</span>
2293
+ <span class="cline-any cline-no">&nbsp;</span>
2294
+ <span class="cline-any cline-neutral">&nbsp;</span>
2295
+ <span class="cline-any cline-no">&nbsp;</span>
2296
+ <span class="cline-any cline-no">&nbsp;</span>
2297
+ <span class="cline-any cline-neutral">&nbsp;</span>
2298
+ <span class="cline-any cline-neutral">&nbsp;</span>
2299
+ <span class="cline-any cline-neutral">&nbsp;</span>
2300
+ <span class="cline-any cline-neutral">&nbsp;</span>
2301
+ <span class="cline-any cline-neutral">&nbsp;</span>
2302
+ <span class="cline-any cline-neutral">&nbsp;</span>
2303
+ <span class="cline-any cline-neutral">&nbsp;</span>
2304
+ <span class="cline-any cline-neutral">&nbsp;</span>
2305
+ <span class="cline-any cline-neutral">&nbsp;</span>
2306
+ <span class="cline-any cline-neutral">&nbsp;</span>
2307
+ <span class="cline-any cline-neutral">&nbsp;</span>
2308
+ <span class="cline-any cline-yes">2x</span>
2309
+ <span class="cline-any cline-neutral">&nbsp;</span>
2310
+ <span class="cline-any cline-yes">2x</span>
2311
+ <span class="cline-any cline-neutral">&nbsp;</span>
2312
+ <span class="cline-any cline-neutral">&nbsp;</span>
2313
+ <span class="cline-any cline-yes">2x</span>
2314
+ <span class="cline-any cline-neutral">&nbsp;</span>
2315
+ <span class="cline-any cline-neutral">&nbsp;</span>
2316
+ <span class="cline-any cline-yes">2x</span>
2317
+ <span class="cline-any cline-yes">2x</span>
2318
+ <span class="cline-any cline-neutral">&nbsp;</span>
2319
+ <span class="cline-any cline-yes">2x</span>
2320
+ <span class="cline-any cline-yes">2x</span>
2321
+ <span class="cline-any cline-yes">2x</span>
2322
+ <span class="cline-any cline-yes">2x</span>
2323
+ <span class="cline-any cline-neutral">&nbsp;</span>
2324
+ <span class="cline-any cline-yes">2x</span>
2325
+ <span class="cline-any cline-neutral">&nbsp;</span>
2326
+ <span class="cline-any cline-neutral">&nbsp;</span>
2327
+ <span class="cline-any cline-neutral">&nbsp;</span>
2328
+ <span class="cline-any cline-yes">2x</span>
2329
+ <span class="cline-any cline-no">&nbsp;</span>
2330
+ <span class="cline-any cline-no">&nbsp;</span>
2331
+ <span class="cline-any cline-no">&nbsp;</span>
2332
+ <span class="cline-any cline-neutral">&nbsp;</span>
2333
+ <span class="cline-any cline-no">&nbsp;</span>
2334
+ <span class="cline-any cline-neutral">&nbsp;</span>
2335
+ <span class="cline-any cline-neutral">&nbsp;</span>
2336
+ <span class="cline-any cline-yes">2x</span>
2337
+ <span class="cline-any cline-neutral">&nbsp;</span>
2338
+ <span class="cline-any cline-neutral">&nbsp;</span>
2339
+ <span class="cline-any cline-neutral">&nbsp;</span>
2340
+ <span class="cline-any cline-neutral">&nbsp;</span>
2341
+ <span class="cline-any cline-neutral">&nbsp;</span>
2342
+ <span class="cline-any cline-neutral">&nbsp;</span>
2343
+ <span class="cline-any cline-neutral">&nbsp;</span>
2344
+ <span class="cline-any cline-neutral">&nbsp;</span>
2345
+ <span class="cline-any cline-neutral">&nbsp;</span>
2346
+ <span class="cline-any cline-neutral">&nbsp;</span>
2347
+ <span class="cline-any cline-neutral">&nbsp;</span>
2348
+ <span class="cline-any cline-neutral">&nbsp;</span>
2349
+ <span class="cline-any cline-no">&nbsp;</span>
2350
+ <span class="cline-any cline-neutral">&nbsp;</span>
2351
+ <span class="cline-any cline-no">&nbsp;</span>
2352
+ <span class="cline-any cline-neutral">&nbsp;</span>
2353
+ <span class="cline-any cline-neutral">&nbsp;</span>
2354
+ <span class="cline-any cline-no">&nbsp;</span>
2355
+ <span class="cline-any cline-neutral">&nbsp;</span>
2356
+ <span class="cline-any cline-neutral">&nbsp;</span>
2357
+ <span class="cline-any cline-no">&nbsp;</span>
2358
+ <span class="cline-any cline-no">&nbsp;</span>
2359
+ <span class="cline-any cline-no">&nbsp;</span>
2360
+ <span class="cline-any cline-no">&nbsp;</span>
2361
+ <span class="cline-any cline-no">&nbsp;</span>
2362
+ <span class="cline-any cline-no">&nbsp;</span>
2363
+ <span class="cline-any cline-neutral">&nbsp;</span>
2364
+ <span class="cline-any cline-no">&nbsp;</span>
2365
+ <span class="cline-any cline-neutral">&nbsp;</span>
2366
+ <span class="cline-any cline-neutral">&nbsp;</span>
2367
+ <span class="cline-any cline-no">&nbsp;</span>
2368
+ <span class="cline-any cline-no">&nbsp;</span>
2369
+ <span class="cline-any cline-no">&nbsp;</span>
2370
+ <span class="cline-any cline-no">&nbsp;</span>
2371
+ <span class="cline-any cline-neutral">&nbsp;</span>
2372
+ <span class="cline-any cline-no">&nbsp;</span>
2373
+ <span class="cline-any cline-neutral">&nbsp;</span>
2374
+ <span class="cline-any cline-neutral">&nbsp;</span>
2375
+ <span class="cline-any cline-no">&nbsp;</span>
2376
+ <span class="cline-any cline-no">&nbsp;</span>
2377
+ <span class="cline-any cline-no">&nbsp;</span>
2378
+ <span class="cline-any cline-neutral">&nbsp;</span>
2379
+ <span class="cline-any cline-neutral">&nbsp;</span>
2380
+ <span class="cline-any cline-neutral">&nbsp;</span>
2381
+ <span class="cline-any cline-neutral">&nbsp;</span>
2382
+ <span class="cline-any cline-neutral">&nbsp;</span>
2383
+ <span class="cline-any cline-neutral">&nbsp;</span>
2384
+ <span class="cline-any cline-neutral">&nbsp;</span>
2385
+ <span class="cline-any cline-neutral">&nbsp;</span>
2386
+ <span class="cline-any cline-neutral">&nbsp;</span>
2387
+ <span class="cline-any cline-neutral">&nbsp;</span>
2388
+ <span class="cline-any cline-neutral">&nbsp;</span>
2389
+ <span class="cline-any cline-neutral">&nbsp;</span>
2390
+ <span class="cline-any cline-neutral">&nbsp;</span>
2391
+ <span class="cline-any cline-neutral">&nbsp;</span>
2392
+ <span class="cline-any cline-neutral">&nbsp;</span>
2393
+ <span class="cline-any cline-neutral">&nbsp;</span>
2394
+ <span class="cline-any cline-yes">2x</span>
2395
+ <span class="cline-any cline-neutral">&nbsp;</span>
2396
+ <span class="cline-any cline-neutral">&nbsp;</span>
2397
+ <span class="cline-any cline-neutral">&nbsp;</span>
2398
+ <span class="cline-any cline-yes">2x</span>
2399
+ <span class="cline-any cline-neutral">&nbsp;</span>
2400
+ <span class="cline-any cline-neutral">&nbsp;</span>
2401
+ <span class="cline-any cline-yes">2x</span>
2402
+ <span class="cline-any cline-no">&nbsp;</span>
2403
+ <span class="cline-any cline-no">&nbsp;</span>
2404
+ <span class="cline-any cline-neutral">&nbsp;</span>
2405
+ <span class="cline-any cline-neutral">&nbsp;</span>
2406
+ <span class="cline-any cline-yes">2x</span>
2407
+ <span class="cline-any cline-yes">2x</span>
2408
+ <span class="cline-any cline-yes">2x</span>
2409
+ <span class="cline-any cline-yes">2x</span>
2410
+ <span class="cline-any cline-neutral">&nbsp;</span>
2411
+ <span class="cline-any cline-neutral">&nbsp;</span>
2412
+ <span class="cline-any cline-neutral">&nbsp;</span>
2413
+ <span class="cline-any cline-yes">1x</span>
2414
+ <span class="cline-any cline-neutral">&nbsp;</span>
2415
+ <span class="cline-any cline-neutral">&nbsp;</span>
2416
+ <span class="cline-any cline-neutral">&nbsp;</span>
2417
+ <span class="cline-any cline-neutral">&nbsp;</span>
2418
+ <span class="cline-any cline-neutral">&nbsp;</span>
2419
+ <span class="cline-any cline-neutral">&nbsp;</span>
2420
+ <span class="cline-any cline-no">&nbsp;</span>
2421
+ <span class="cline-any cline-neutral">&nbsp;</span>
2422
+ <span class="cline-any cline-neutral">&nbsp;</span>
2423
+ <span class="cline-any cline-neutral">&nbsp;</span>
2424
+ <span class="cline-any cline-neutral">&nbsp;</span>
2425
+ <span class="cline-any cline-no">&nbsp;</span>
2426
+ <span class="cline-any cline-no">&nbsp;</span>
2427
+ <span class="cline-any cline-neutral">&nbsp;</span>
2428
+ <span class="cline-any cline-yes">1x</span>
2429
+ <span class="cline-any cline-neutral">&nbsp;</span>
2430
+ <span class="cline-any cline-neutral">&nbsp;</span>
2431
+ <span class="cline-any cline-neutral">&nbsp;</span>
2432
+ <span class="cline-any cline-neutral">&nbsp;</span>
2433
+ <span class="cline-any cline-neutral">&nbsp;</span>
2434
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type {
2435
+ Expression,
2436
+ ExpressionBuilder,
2437
+ ExpressionOrFactory,
2438
+ InsertQueryBuilder,
2439
+ Kysely,
2440
+ OperandExpression,
2441
+ ReferenceExpression,
2442
+ SqlBool,
2443
+ UpdateQueryBuilder,
2444
+ } from 'kysely';
2445
+ import type {
2446
+ BinaryOperatorExpression,
2447
+ OperandValueExpressionOrList,
2448
+ } from 'node_modules/kysely/dist/esm/parser/binary-operation-parser';
2449
+ import type { InsertExpression } from 'node_modules/kysely/dist/esm/parser/insert-values-parser';
2450
+ import type { TableReference } from 'node_modules/kysely/dist/esm/parser/table-parser';
2451
+ import superjson from 'superjson';
2452
+ import {
2453
+ type EntityInput,
2454
+ type EntityName,
2455
+ type EntityOutput,
2456
+ type EntityTypeMap,
2457
+ type Field,
2458
+ type Primitive,
2459
+ generateId,
2460
+ } from '~/pkgs/data-model';
2461
+ &nbsp;
2462
+ import { getConsentTables } from '~/schema/definition';
2463
+ import type { C15TOptions } from '~/types';
2464
+ import {
2465
+ type Adapter,
2466
+ type TableFields,
2467
+ type Where,
2468
+ applyDefaultValue,
2469
+ } from '../..';
2470
+ import type { Database, KyselyDatabaseType } from './types';
2471
+ &nbsp;
2472
+ /**
2473
+ * Type alias for Kysely field references
2474
+ *
2475
+ * This type helps bridge the gap between c15t's field paths and Kysely's
2476
+ * strongly typed reference expressions.
2477
+ *
2478
+ * @internal
2479
+ */
2480
+ type KyselyFieldRef = ReferenceExpression&lt;Database, keyof Database&gt;;
2481
+ &nbsp;
2482
+ /**
2483
+ * Type for expression builder functions used in queries
2484
+ *
2485
+ * @internal
2486
+ */
2487
+ type ExpressionFn = (
2488
+ eb: ExpressionBuilder&lt;Database, keyof Database&gt;
2489
+ ) =&gt; unknown;
2490
+ &nbsp;
2491
+ /**
2492
+ * Interface for where conditions in Kysely queries
2493
+ *
2494
+ * This interface defines the structure of query conditions used
2495
+ * in database operations. It supports various operators and connectors
2496
+ * for building complex query conditions.
2497
+ *
2498
+ * @typeParam EntityType - The entity type being queried
2499
+ */
2500
+ export interface WhereCondition&lt;EntityType extends EntityName&gt; {
2501
+ /**
2502
+ * The field to apply the condition to
2503
+ */
2504
+ field: keyof EntityTypeMap[EntityType] | 'id';
2505
+ &nbsp;
2506
+ /**
2507
+ * The value to compare against
2508
+ */
2509
+ value: unknown;
2510
+ &nbsp;
2511
+ /**
2512
+ * The operator to use for comparison
2513
+ *
2514
+ * @default "="
2515
+ */
2516
+ operator?:
2517
+ | 'in'
2518
+ | 'eq'
2519
+ | 'ne'
2520
+ | 'lt'
2521
+ | 'lte'
2522
+ | 'gt'
2523
+ | 'gte'
2524
+ | 'contains'
2525
+ | 'starts_with'
2526
+ | 'ends_with'
2527
+ | 'ilike'
2528
+ | '=';
2529
+ &nbsp;
2530
+ /**
2531
+ * The logical connector to use with previous conditions
2532
+ *
2533
+ * @default "AND"
2534
+ */
2535
+ connector?: 'AND' | 'OR';
2536
+ }
2537
+ &nbsp;
2538
+ /**
2539
+ * Configuration options for the Kysely adapter
2540
+ *
2541
+ * @example
2542
+ * ```typescript
2543
+ * const config: KyselyAdapterConfig = {
2544
+ * type: 'postgres' // Explicitly set the database type
2545
+ * };
2546
+ * ```
2547
+ */
2548
+ export interface KyselyAdapterConfig {
2549
+ /**
2550
+ * Database type to use with the adapter
2551
+ *
2552
+ * Setting this explicitly can override the auto-detected type
2553
+ * and can be necessary in some environments where detection fails.
2554
+ */
2555
+ type?: KyselyDatabaseType;
2556
+ }
2557
+ &nbsp;
2558
+ /**
2559
+ * Type alias for expression results in Kysely queries
2560
+ *
2561
+ * @internal
2562
+ */
2563
+ type ExpressionResult&lt;DB&gt; = Expression&lt;DB&gt;;
2564
+ &nbsp;
2565
+ // Note: Throughout this adapter, we use "as any" type assertions in several places
2566
+ // to bridge the gap between our runtime-generated field references and Kysely's
2567
+ // strongly typed query builder. This is necessary due to the dynamic nature of our
2568
+ // schema, where field names and references are determined at runtime.
2569
+ // An alternative approach would be to generate fully typed interfaces at build time.
2570
+ &nbsp;
2571
+ /**
2572
+ * Creates entity transformation utilities for the Kysely adapter
2573
+ *
2574
+ * This function creates helper methods for converting between c15t's
2575
+ * data format and Kysely's query format, handling field mapping,
2576
+ * value transformation, and query building.
2577
+ *
2578
+ * @internal This function is used internally by the kyselyAdapter
2579
+ * @param db - The Kysely database instance
2580
+ * @param options - The c15t options
2581
+ * @param config - Optional Kysely adapter configuration
2582
+ * @returns An object containing entity transformation utilities
2583
+ */
2584
+ const createEntityTransformer = (
2585
+ db: Kysely&lt;Database&gt;,
2586
+ options: C15TOptions,
2587
+ config?: KyselyAdapterConfig
2588
+ ) =&gt; {
2589
+ const schema = getConsentTables(options);
2590
+ &nbsp;
2591
+ /**
2592
+ * Gets the database field name for a model field
2593
+ *
2594
+ * @internal
2595
+ * @typeParam EntityType - The entity type
2596
+ * @param model - The model name
2597
+ * @param field - The field name in the c15t model
2598
+ * @returns The corresponding field name in the database schema
2599
+ */
2600
+ function getField&lt;EntityType extends EntityName&gt;(
2601
+ model: EntityType,
2602
+ field: keyof EntityTypeMap[EntityType] | string
2603
+ ) {
2604
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (field === 'id') {
2605
+ return field;
2606
+ }
2607
+ const modelFields = <span class="cstat-no" title="statement not covered" >schema[model]?.fields;</span>
2608
+ const f = <span class="cstat-no" title="statement not covered" >modelFields</span>
2609
+ ? (modelFields as Record&lt;string, Field&gt;)[field as string]
2610
+ : undefined;
2611
+ <span class="cstat-no" title="statement not covered" > if (!f) {</span>
2612
+ // biome-ignore lint/suspicious/noConsoleLog: no Logger implementation
2613
+ // biome-ignore lint/suspicious/noConsole: no Logger implementation
2614
+ <span class="cstat-no" title="statement not covered" > console.log('Field not found', model, field);</span>
2615
+ }
2616
+ <span class="cstat-no" title="statement not covered" > return f?.fieldName || (field as string);</span>
2617
+ }
2618
+ &nbsp;
2619
+ /**
2620
+ * Transforms a value from c15t format to database format
2621
+ *
2622
+ * Handles type conversions like booleans to integers for SQLite,
2623
+ * dates to ISO strings, etc.
2624
+ *
2625
+ * @internal
2626
+ * @typeParam EntityType - The entity type
2627
+ * @param value - The value to transform
2628
+ * @param model - The model name
2629
+ * @param field - The field name
2630
+ * @returns The transformed value for database storage
2631
+ */
2632
+ function transformValueToDB&lt;EntityType extends EntityName&gt;(
2633
+ value: unknown,
2634
+ model: EntityType,
2635
+ field: keyof EntityTypeMap[EntityType] | string
2636
+ ): unknown {
2637
+ if (field === 'id') {
2638
+ return value;
2639
+ }
2640
+ const { type = <span class="branch-0 cbranch-no" title="branch not covered" >'sqlite' }</span> = config || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
2641
+ const modelFields = schema[model]?.fields;
2642
+ const f = modelFields
2643
+ ? (modelFields as Record&lt;string, Field&gt;)[field as string]
2644
+ : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
2645
+ if (
2646
+ f?.type === 'boolean' &amp;&amp;
2647
+ (type === 'sqlite' || type === 'mssql') &amp;&amp;
2648
+ value !== null &amp;&amp;
2649
+ value !== undefined
2650
+ ) {
2651
+ return value ? 1 : 0;
2652
+ }
2653
+ if (f?.type === 'date' &amp;&amp; value &amp;&amp; value instanceof Date) {
2654
+ return type === 'sqlite' ? value.toISOString() : value;
2655
+ }
2656
+ // Handle JSON field type
2657
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (f?.type === 'json' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >value !== null &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >v</span>alue !== undefined) {</span>
2658
+ // For PostgreSQL and MySQL, we can use the native JSON types
2659
+ <span class="cstat-no" title="statement not covered" > if (type === 'postgres' || type === 'mysql') {</span>
2660
+ // The database handles the JSON as is
2661
+ <span class="cstat-no" title="statement not covered" > return value;</span>
2662
+ }
2663
+ // For SQLite and other databases, stringify the JSON using SuperJSON
2664
+ <span class="cstat-no" title="statement not covered" > return superjson.stringify(value);</span>
2665
+ }
2666
+ return value;
2667
+ }
2668
+ &nbsp;
2669
+ /**
2670
+ * Transforms a value from database format to c15t format
2671
+ *
2672
+ * Handles type conversions like integers to booleans for SQLite,
2673
+ * ISO strings to Date objects, etc.
2674
+ *
2675
+ * @internal
2676
+ * @typeParam EntityType - The entity type
2677
+ * @param value - The value from the database
2678
+ * @param model - The model name
2679
+ * @param field - The field name
2680
+ * @returns The transformed value for c15t usage
2681
+ */
2682
+ function transformValueFromDB&lt;EntityType extends EntityName&gt;(
2683
+ value: unknown,
2684
+ model: EntityType,
2685
+ field: keyof EntityTypeMap[EntityType] | string
2686
+ ): unknown {
2687
+ const { type = <span class="branch-0 cbranch-no" title="branch not covered" >'sqlite' }</span> = config || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
2688
+ &nbsp;
2689
+ const modelFields = schema[model]?.fields;
2690
+ const f = modelFields
2691
+ ? (modelFields as Record&lt;string, Field&gt;)[field as string]
2692
+ : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
2693
+ if (
2694
+ f?.type === 'boolean' &amp;&amp;
2695
+ (type === 'sqlite' || type === 'mssql') &amp;&amp;
2696
+ value !== null
2697
+ ) {
2698
+ return value === 1;
2699
+ }
2700
+ if (f?.type === 'date' &amp;&amp; value) {
2701
+ return new Date(value as string);
2702
+ }
2703
+ // Handle JSON field type
2704
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (f?.type === 'json' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >value !== null &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >v</span>alue !== undefined) {</span>
2705
+ // For PostgreSQL and MySQL, the value might already be an object
2706
+ <span class="cstat-no" title="statement not covered" > if (</span>
2707
+ (type === 'postgres' || type === 'mysql') &amp;&amp;
2708
+ typeof value === 'object'
2709
+ ) {
2710
+ <span class="cstat-no" title="statement not covered" > return value;</span>
2711
+ }
2712
+ // For SQLite and other databases or string JSON from any database
2713
+ <span class="cstat-no" title="statement not covered" > if (typeof value === 'string') {</span>
2714
+ <span class="cstat-no" title="statement not covered" > try {</span>
2715
+ // Use SuperJSON to parse the JSON string, preserving complex types
2716
+ <span class="cstat-no" title="statement not covered" > return superjson.parse(value as string);</span>
2717
+ } catch {
2718
+ // If SuperJSON parsing fails, try standard JSON.parse as fallback
2719
+ <span class="cstat-no" title="statement not covered" > try {</span>
2720
+ <span class="cstat-no" title="statement not covered" > return JSON.parse(value as string);</span>
2721
+ } catch {
2722
+ // If all parsing fails, return the original value
2723
+ <span class="cstat-no" title="statement not covered" > return value;</span>
2724
+ }
2725
+ }
2726
+ }
2727
+ }
2728
+ return value;
2729
+ }
2730
+ &nbsp;
2731
+ /**
2732
+ * Gets the database entity name for a model
2733
+ *
2734
+ * @internal
2735
+ * @typeParam EntityType - The entity type
2736
+ * @param model - The model name
2737
+ * @returns The database table name
2738
+ */
2739
+ function getEntityName&lt;EntityType extends EntityName&gt;(
2740
+ model: EntityType
2741
+ ): TableReference&lt;Database&gt; {
2742
+ return schema[model].entityName as TableReference&lt;Database&gt;;
2743
+ }
2744
+ &nbsp;
2745
+ return {
2746
+ /**
2747
+ * Transforms input data from c15t format to database format
2748
+ *
2749
+ * @internal
2750
+ * @typeParam EntityType - The entity type
2751
+ * @param data - The data to transform
2752
+ * @param model - The model name
2753
+ * @param action - Whether this is a create or update operation
2754
+ * @returns Transformed data for database insertion/update
2755
+ */
2756
+ transformInput&lt;EntityType extends EntityName&gt;(
2757
+ data: EntityInput&lt;EntityType&gt;,
2758
+ model: EntityType,
2759
+ action: 'create' | 'update'
2760
+ ): InsertExpression&lt;Database, keyof Database&gt; {
2761
+ // Initialize with empty object
2762
+ const transformedData: Record&lt;string, unknown&gt; = {};
2763
+ &nbsp;
2764
+ // Handle ID for create operations
2765
+ if (action === 'create') {
2766
+ // If an ID is provided in the input data, use it
2767
+ // Otherwise generate a new one with the appropriate prefix
2768
+ const advancedOptions =
2769
+ (options.advanced as {
2770
+ generateId?: (params: { model: string; size?: number }) =&gt; string;
2771
+ disableTransactions?: boolean;
2772
+ }) || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
2773
+ transformedData.id =
2774
+ data.id ||
2775
+ (advancedOptions.generateId
2776
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >advancedOptions.generateId({ model })</span>
2777
+ : generateId(schema[model].entityPrefix));
2778
+ }
2779
+ &nbsp;
2780
+ const fields = schema[model].fields;
2781
+ for (const field in fields) {
2782
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (Object.hasOwn(fields, field)) {
2783
+ const value = data[field as keyof typeof data];
2784
+ const fieldInfo = (fields as Record&lt;string, Field&gt;)[field];
2785
+ const fieldName = fieldInfo?.fieldName || <span class="branch-1 cbranch-no" title="branch not covered" >field;</span>
2786
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (fieldInfo) {
2787
+ transformedData[fieldName] = applyDefaultValue(
2788
+ transformValueToDB(value, model, field) as Primitive,
2789
+ fieldInfo,
2790
+ action
2791
+ );
2792
+ }
2793
+ }
2794
+ }
2795
+ &nbsp;
2796
+ return transformedData as InsertExpression&lt;Database, keyof Database&gt;;
2797
+ },
2798
+ &nbsp;
2799
+ /**
2800
+ * Transforms output data from database format to c15t format
2801
+ *
2802
+ * @internal
2803
+ * @typeParam EntityType - The entity type
2804
+ * @param data - The data from the database
2805
+ * @param model - The model name
2806
+ * @param select - Optional array of fields to select
2807
+ * @returns Transformed data for c15t or null if no data
2808
+ */
2809
+ transformOutput&lt;EntityType extends EntityName&gt;(
2810
+ data: Record&lt;string, unknown&gt; | null,
2811
+ model: EntityType,
2812
+ select: string[] = []
2813
+ ): EntityOutput&lt;EntityType&gt; | null {
2814
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!data) {
2815
+ <span class="cstat-no" title="statement not covered" > return null;</span>
2816
+ }
2817
+ &nbsp;
2818
+ // Initialize transformedData based on conditions
2819
+ const transformedData: Record&lt;string, unknown&gt; = {};
2820
+ &nbsp;
2821
+ // Add id to transformed data if needed
2822
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (data.id &amp;&amp; (select.length === 0 || <span class="branch-2 cbranch-no" title="branch not covered" >select.includes('id'))) {</span>
2823
+ transformedData.id = data.id;
2824
+ }
2825
+ &nbsp;
2826
+ const tableSchema = schema[model]?.fields;
2827
+ for (const key in tableSchema) {
2828
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (select.length &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!select.includes(key)) {</span>
2829
+ <span class="cstat-no" title="statement not covered" > continue;</span>
2830
+ }
2831
+ const field = (tableSchema as Record&lt;string, Field&gt;)[key];
2832
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (field) {
2833
+ transformedData[key] = transformValueFromDB(
2834
+ data[field.fieldName || <span class="branch-1 cbranch-no" title="branch not covered" >key]</span>,
2835
+ model,
2836
+ key
2837
+ );
2838
+ }
2839
+ }
2840
+ return transformedData as EntityOutput&lt;EntityType&gt;;
2841
+ },
2842
+ &nbsp;
2843
+ /**
2844
+ * Converts c15t where clauses to Kysely query conditions
2845
+ *
2846
+ * @internal
2847
+ * @typeParam EntityType - The entity type
2848
+ * @param model - The model name
2849
+ * @param whereConditions - Array of where conditions
2850
+ * @returns Object with AND and OR expressions for Kysely
2851
+ */
2852
+ convertWhereClause&lt;EntityType extends EntityName&gt;(
2853
+ model: EntityType,
2854
+ whereConditions?: WhereCondition&lt;EntityType&gt;[]
2855
+ ): {
2856
+ and: ExpressionFn[] | null;
2857
+ or: ExpressionFn[] | null;
2858
+ } {
2859
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!whereConditions || whereConditions.length === 0) {
2860
+ <span class="cstat-no" title="statement not covered" > return {</span>
2861
+ and: null,
2862
+ or: null,
2863
+ };
2864
+ }
2865
+ &nbsp;
2866
+ const conditions = {
2867
+ and: [] as ExpressionFn[],
2868
+ or: [] as ExpressionFn[],
2869
+ };
2870
+ &nbsp;
2871
+ for (const condition of whereConditions) {
2872
+ let {
2873
+ field: _field,
2874
+ value,
2875
+ operator = '=',
2876
+ connector = 'AND',
2877
+ } = condition;
2878
+ const fieldString = getField&lt;EntityType&gt;(model, _field);
2879
+ value = transformValueToDB&lt;EntityType&gt;(value, model, _field);
2880
+ &nbsp;
2881
+ const expr: ExpressionFn = (eb) =&gt; {
2882
+ // For type safety, cast field to a reference expression
2883
+ const dbField = fieldString as unknown as KyselyFieldRef;
2884
+ &nbsp;
2885
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator.toLowerCase() === 'in') {
2886
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, 'in', Array.isArray(value) ? value : [value]);</span>
2887
+ }
2888
+ &nbsp;
2889
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'contains') {
2890
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, 'like', `%${value}%`);</span>
2891
+ }
2892
+ &nbsp;
2893
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'starts_with') {
2894
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, 'like', `${value}%`);</span>
2895
+ }
2896
+ &nbsp;
2897
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'ends_with') {
2898
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, 'like', `%${value}`);</span>
2899
+ }
2900
+ &nbsp;
2901
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'ilike') {
2902
+ // Use SQL LOWER function for case-insensitive comparison
2903
+ const lowerField = <span class="cstat-no" title="statement not covered" >eb.fn&lt;string&gt;('lower', [dbField]);</span>
2904
+ const lowerValue = <span class="cstat-no" title="statement not covered" >eb.fn&lt;string&gt;('lower', [</span>
2905
+ eb.val(value?.toString()),
2906
+ ]);
2907
+ <span class="cstat-no" title="statement not covered" > return eb(</span>
2908
+ lowerField,
2909
+ 'like',
2910
+ lowerValue
2911
+ ) as ExpressionResult&lt;Database&gt;;
2912
+ }
2913
+ &nbsp;
2914
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'eq') {
2915
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, '=', value);</span>
2916
+ }
2917
+ &nbsp;
2918
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'ne') {
2919
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, '&lt;&gt;', value);</span>
2920
+ }
2921
+ &nbsp;
2922
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'gt') {
2923
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, '&gt;', value);</span>
2924
+ }
2925
+ &nbsp;
2926
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'gte') {
2927
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, '&gt;=', value);</span>
2928
+ }
2929
+ &nbsp;
2930
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'lt') {
2931
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, '&lt;', value);</span>
2932
+ }
2933
+ &nbsp;
2934
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operator === 'lte') {
2935
+ <span class="cstat-no" title="statement not covered" > return eb(dbField, '&lt;=', value);</span>
2936
+ }
2937
+ &nbsp;
2938
+ return eb(dbField, operator as BinaryOperatorExpression, value);
2939
+ };
2940
+ &nbsp;
2941
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (connector === 'OR') {
2942
+ <span class="cstat-no" title="statement not covered" > conditions.or.push(expr);</span>
2943
+ } else {
2944
+ conditions.and.push(expr);
2945
+ }
2946
+ }
2947
+ &nbsp;
2948
+ return {
2949
+ and: conditions.and.length ? conditions.and : <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
2950
+ or: conditions.or.length ? <span class="branch-0 cbranch-no" title="branch not covered" >conditions.or : n</span>ull,
2951
+ };
2952
+ },
2953
+ &nbsp;
2954
+ /**
2955
+ * Helper for returning data from operations in different database types
2956
+ *
2957
+ * @internal
2958
+ * @typeParam EntityType - The entity type
2959
+ * @param values - The values being inserted/updated
2960
+ * @param builder - The query builder
2961
+ * @param model - The model name
2962
+ * @param where - Where conditions for finding the modified record
2963
+ * @returns The result of the operation
2964
+ */
2965
+ async withReturning&lt;EntityType extends EntityName&gt;(
2966
+ values: EntityInput&lt;EntityType&gt;,
2967
+ builder:
2968
+ | InsertQueryBuilder&lt;Database, keyof Database, keyof Database&gt;
2969
+ | UpdateQueryBuilder&lt;
2970
+ Database,
2971
+ keyof Database,
2972
+ keyof Database,
2973
+ keyof Database
2974
+ &gt;,
2975
+ model: EntityType,
2976
+ where: WhereCondition&lt;EntityType&gt;[]
2977
+ ): Promise&lt;Record&lt;string, unknown&gt; | null&gt; {
2978
+ let res: Record&lt;string, unknown&gt; | null = null;
2979
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (config?.type === 'mysql') {
2980
+ //this isn't good, but kysely doesn't support returning in mysql and it doesn't return the inserted id. Change this if there is a better way.
2981
+ <span class="cstat-no" title="statement not covered" > await builder.execute();</span>
2982
+ // Get the field and value to find the created/updated record
2983
+ const whereCondition = <span class="cstat-no" title="statement not covered" >where[0];</span>
2984
+ const field = <span class="cstat-no" title="statement not covered" >values.id</span>
2985
+ ? 'id'
2986
+ : ((whereCondition?.field ?? 'id') as string);
2987
+ const value =
2988
+ <span class="cstat-no" title="statement not covered" > values[field as keyof typeof values] ?? whereCondition?.value;</span>
2989
+ &nbsp;
2990
+ // Safe cast for where field
2991
+ const fieldString = <span class="cstat-no" title="statement not covered" >getField(</span>
2992
+ model,
2993
+ field
2994
+ ) as unknown as ExpressionOrFactory&lt;
2995
+ Database,
2996
+ keyof Database,
2997
+ KyselyFieldRef
2998
+ &gt;;
2999
+ &nbsp;
3000
+ <span class="cstat-no" title="statement not covered" > res = (await db</span>
3001
+ .selectFrom(getEntityName(model))
3002
+ .selectAll()
3003
+ .where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt;
3004
+ <span class="cstat-no" title="statement not covered" > eb(</span>
3005
+ fieldString,
3006
+ '=',
3007
+ value as OperandValueExpressionOrList&lt;
3008
+ Database,
3009
+ keyof Database,
3010
+ KyselyFieldRef
3011
+ &gt;
3012
+ )
3013
+ )
3014
+ .executeTakeFirst()) as Record&lt;string, unknown&gt; | null;
3015
+ <span class="cstat-no" title="statement not covered" > return res;</span>
3016
+ }
3017
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (config?.type === 'mssql') {
3018
+ <span class="cstat-no" title="statement not covered" > res = (await builder</span>
3019
+ .outputAll('inserted')
3020
+ .executeTakeFirst()) as Record&lt;string, unknown&gt; | null;
3021
+ <span class="cstat-no" title="statement not covered" > return res;</span>
3022
+ }
3023
+ res = (await builder.returningAll().executeTakeFirst()) as Record&lt;
3024
+ string,
3025
+ unknown
3026
+ &gt; | null;
3027
+ return res;
3028
+ },
3029
+ getEntityName,
3030
+ getField,
3031
+ };
3032
+ };
3033
+ &nbsp;
3034
+ /**
3035
+ * Creates a c15t adapter for Kysely ORM
3036
+ *
3037
+ * This factory function creates an adapter that allows c15t to use Kysely ORM
3038
+ * as its database layer. It supports PostgreSQL, MySQL, SQLite, and MSSQL.
3039
+ *
3040
+ * @param db - The Kysely database instance
3041
+ * @param config - Optional configuration for the Kysely adapter
3042
+ * @returns A c15t adapter factory function
3043
+ *
3044
+ * @example
3045
+ * ```typescript
3046
+ * import { Kysely, PostgresDialect } from 'kysely';
3047
+ * import { Pool } from 'pg';
3048
+ * import { c15tInstance } from '@c15t/backend';
3049
+ * import { kyselyAdapter } from '@c15t/adapters/kysely';
3050
+ *
3051
+ * // Create a Postgres connection pool
3052
+ * const pool = new Pool({
3053
+ * host: 'localhost',
3054
+ * database: 'consent_db',
3055
+ * user: 'postgres',
3056
+ * password: 'password'
3057
+ * });
3058
+ *
3059
+ * // Create Kysely instance
3060
+ * const db = new Kysely({
3061
+ * dialect: new PostgresDialect({ pool })
3062
+ * });
3063
+ *
3064
+ * // Create the c15t instance with Kysely adapter
3065
+ * const c15t = c15tInstance({
3066
+ * storage: kyselyAdapter(db, { type: 'postgres' }),
3067
+ * // Other c15t options...
3068
+ * secret: process.env.SECRET
3069
+ * });
3070
+ *
3071
+ * // Use in your application
3072
+ * export default c15tInstance.handler;
3073
+ * ```
3074
+ */
3075
+ export const kyselyAdapter =
3076
+ (db: Kysely&lt;Database&gt;, config?: KyselyAdapterConfig) =&gt;
3077
+ (opts: C15TOptions): Adapter =&gt; {
3078
+ const {
3079
+ transformInput,
3080
+ withReturning,
3081
+ transformOutput,
3082
+ convertWhereClause,
3083
+ getEntityName,
3084
+ getField,
3085
+ } = createEntityTransformer(db, opts, config);
3086
+ return {
3087
+ id: 'kysely',
3088
+ /**
3089
+ * Creates a new record in the database
3090
+ *
3091
+ * @typeParam Model - The model type
3092
+ * @typeParam Data - The data type
3093
+ * @typeParam Result - The result type
3094
+ * @param data - The data for the create operation
3095
+ * @returns The created record
3096
+ */
3097
+ async create&lt;
3098
+ Model extends EntityName,
3099
+ Data extends Record&lt;string, unknown&gt;,
3100
+ Result extends TableFields&lt;Model&gt;,
3101
+ &gt;(data: {
3102
+ model: Model;
3103
+ data: Data;
3104
+ select?: (keyof Result)[];
3105
+ }): Promise&lt;Result&gt; {
3106
+ const { model, data: values, select } = data;
3107
+ const transformed = transformInput(
3108
+ values as EntityInput&lt;Model&gt;,
3109
+ model,
3110
+ 'create'
3111
+ );
3112
+ &nbsp;
3113
+ // Safe cast for table name
3114
+ const tableName = getEntityName(model);
3115
+ &nbsp;
3116
+ // Use type assertion for builder to match Kysely's expectations
3117
+ const builder = db
3118
+ .insertInto(tableName as keyof Database)
3119
+ .values(transformed);
3120
+ &nbsp;
3121
+ const result = await withReturning(
3122
+ transformed as EntityInput&lt;Model&gt;,
3123
+ builder as unknown as InsertQueryBuilder&lt;
3124
+ Database,
3125
+ keyof Database,
3126
+ keyof Database
3127
+ &gt;,
3128
+ model,
3129
+ []
3130
+ );
3131
+ &nbsp;
3132
+ const output = transformOutput(
3133
+ result,
3134
+ model,
3135
+ select as string[]
3136
+ ) as unknown as Result;
3137
+ &nbsp;
3138
+ return output;
3139
+ },
3140
+ /**
3141
+ * Finds a single record matching the where conditions
3142
+ *
3143
+ * @typeParam Model - The model type
3144
+ * @typeParam Result - The result type
3145
+ * @param data - The data for the find operation
3146
+ * @returns The found record or null if not found
3147
+ */
3148
+ async findOne&lt;
3149
+ Model extends EntityName,
3150
+ Result extends TableFields&lt;Model&gt;,
3151
+ &gt;(data: {
3152
+ model: Model;
3153
+ where: Where&lt;Model&gt;;
3154
+ select?: (keyof Result)[];
3155
+ }): Promise&lt;Result | null&gt; {
3156
+ const { model, where, select } = data;
3157
+ // Convert Where from Adapter type to internal WhereCondition type
3158
+ const whereArray = (Array.isArray(where)
3159
+ ? where
3160
+ : <span class="branch-1 cbranch-no" title="branch not covered" >[where]) as unknown as WhereCondition&lt;Model&gt;[];</span>
3161
+ const { and, or } = convertWhereClause(model, whereArray);
3162
+ &nbsp;
3163
+ // Safe cast for table name
3164
+ const tableName = getEntityName(model);
3165
+ let query = db
3166
+ .selectFrom(tableName as unknown as keyof Database)
3167
+ .selectAll();
3168
+ &nbsp;
3169
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (and) {
3170
+ query = query.where((eb) =&gt; {
3171
+ const conditions = and.map((expr) =&gt;
3172
+ expr(eb)
3173
+ ) as OperandExpression&lt;SqlBool&gt;[];
3174
+ return eb.and(conditions);
3175
+ });
3176
+ }
3177
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (or) {
3178
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3179
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3180
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3181
+ ) as OperandExpression&lt;SqlBool&gt;[];
3182
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3183
+ });
3184
+ }
3185
+ const res = await query.executeTakeFirst();
3186
+ if (!res) {
3187
+ return null;
3188
+ }
3189
+ return transformOutput(
3190
+ res as Record&lt;string, unknown&gt;,
3191
+ model,
3192
+ select as string[]
3193
+ ) as unknown as Result | null;
3194
+ },
3195
+ /**
3196
+ * Finds multiple records matching the where conditions
3197
+ *
3198
+ * @typeParam Model - The model type
3199
+ * @typeParam Result - The result type
3200
+ * @param data - The data for the find operation
3201
+ * @returns Array of matching records
3202
+ */
3203
+ <span class="fstat-no" title="function not covered" > async f</span>indMany&lt;
3204
+ Model extends EntityName,
3205
+ Result extends TableFields&lt;Model&gt;,
3206
+ &gt;(data: {
3207
+ model: Model;
3208
+ where?: Where&lt;Model&gt;;
3209
+ limit?: number;
3210
+ sortBy?: { field: 'id' | keyof Result; direction: 'asc' | 'desc' };
3211
+ offset?: number;
3212
+ }): Promise&lt;Result[]&gt; {
3213
+ const { model, where, limit, offset, sortBy } = <span class="cstat-no" title="statement not covered" >data;</span>
3214
+ // Convert Where from Adapter type to internal WhereCondition type
3215
+ const whereArray = <span class="cstat-no" title="statement not covered" >where</span>
3216
+ ? ((Array.isArray(where)
3217
+ ? where
3218
+ : [where]) as unknown as WhereCondition&lt;Model&gt;[])
3219
+ : undefined;
3220
+ const { and, or } = <span class="cstat-no" title="statement not covered" >convertWhereClause(model, whereArray);</span>
3221
+ &nbsp;
3222
+ // Safe cast for table name
3223
+ const tableName = <span class="cstat-no" title="statement not covered" >getEntityName(model);</span>
3224
+ let query = <span class="cstat-no" title="statement not covered" >db.selectFrom(tableName as unknown as keyof Database);</span>
3225
+ &nbsp;
3226
+ <span class="cstat-no" title="statement not covered" > if (and) {</span>
3227
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3228
+ const conditions = <span class="cstat-no" title="statement not covered" >and.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3229
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3230
+ ) as OperandExpression&lt;SqlBool&gt;[];
3231
+ <span class="cstat-no" title="statement not covered" > return eb.and(conditions);</span>
3232
+ });
3233
+ }
3234
+ <span class="cstat-no" title="statement not covered" > if (or) {</span>
3235
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3236
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3237
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3238
+ ) as OperandExpression&lt;SqlBool&gt;[];
3239
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3240
+ });
3241
+ }
3242
+ <span class="cstat-no" title="statement not covered" > if (config?.type === 'mssql') {</span>
3243
+ <span class="cstat-no" title="statement not covered" > if (!offset) {</span>
3244
+ <span class="cstat-no" title="statement not covered" > query = query.top(limit || 100);</span>
3245
+ }
3246
+ } else {
3247
+ <span class="cstat-no" title="statement not covered" > query = query.limit(limit || 100);</span>
3248
+ }
3249
+ <span class="cstat-no" title="statement not covered" > if (sortBy) {</span>
3250
+ // Safe cast for sort field
3251
+ const sortFieldString = <span class="cstat-no" title="statement not covered" >getField(model, sortBy.field as string);</span>
3252
+ &nbsp;
3253
+ <span class="cstat-no" title="statement not covered" > query = query.orderBy(</span>
3254
+ sortFieldString as unknown as KyselyFieldRef,
3255
+ sortBy.direction
3256
+ );
3257
+ }
3258
+ <span class="cstat-no" title="statement not covered" > if (offset) {</span>
3259
+ <span class="cstat-no" title="statement not covered" > if (config?.type === 'mssql') {</span>
3260
+ <span class="cstat-no" title="statement not covered" > if (!sortBy) {</span>
3261
+ // Safe cast for id field
3262
+ <span class="cstat-no" title="statement not covered" > query = query.orderBy('id' as unknown as KyselyFieldRef);</span>
3263
+ }
3264
+ <span class="cstat-no" title="statement not covered" > query = query.offset(offset).fetch(limit || 100);</span>
3265
+ } else {
3266
+ <span class="cstat-no" title="statement not covered" > query = query.offset(offset);</span>
3267
+ }
3268
+ }
3269
+ &nbsp;
3270
+ const res = <span class="cstat-no" title="statement not covered" >await query.selectAll().execute();</span>
3271
+ <span class="cstat-no" title="statement not covered" > if (!res) {</span>
3272
+ <span class="cstat-no" title="statement not covered" > return [] as unknown as Result[];</span>
3273
+ }
3274
+ <span class="cstat-no" title="statement not covered" > return res.map(</span>
3275
+ <span class="fstat-no" title="function not covered" > (r</span>) =&gt;
3276
+ <span class="cstat-no" title="statement not covered" > transformOutput(</span>
3277
+ r as Record&lt;string, unknown&gt;,
3278
+ model
3279
+ ) as unknown as Result
3280
+ );
3281
+ },
3282
+ /**
3283
+ * Updates a single record matching the where conditions
3284
+ *
3285
+ * @typeParam Model - The model type
3286
+ * @typeParam Result - The result type
3287
+ * @param data - The data for the update operation
3288
+ * @returns The updated record or null if not found
3289
+ */
3290
+ async update&lt;
3291
+ Model extends EntityName,
3292
+ Result extends TableFields&lt;Model&gt;,
3293
+ &gt;(data: {
3294
+ model: Model;
3295
+ where: Where&lt;Model&gt;;
3296
+ update: EntityInput&lt;Model&gt;;
3297
+ }): Promise&lt;Result | null&gt; {
3298
+ const { model, where, update: values } = data;
3299
+ // Convert Where from Adapter type to internal WhereCondition type
3300
+ const whereArray = (Array.isArray(where)
3301
+ ? where
3302
+ : <span class="branch-1 cbranch-no" title="branch not covered" >[where]) as unknown as WhereCondition&lt;Model&gt;[];</span>
3303
+ const { and, or } = convertWhereClause(model, whereArray);
3304
+ const transformedData = transformInput(
3305
+ values as EntityInput&lt;Model&gt;,
3306
+ model,
3307
+ 'update'
3308
+ );
3309
+ &nbsp;
3310
+ // Safe cast for table name
3311
+ const tableName = getEntityName(model);
3312
+ let query = db
3313
+ .updateTable(tableName as unknown as keyof Database)
3314
+ .set(transformedData as Record&lt;string, unknown&gt;);
3315
+ &nbsp;
3316
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (and) {
3317
+ query = query.where((eb) =&gt; {
3318
+ const conditions = and.map((expr) =&gt;
3319
+ expr(eb)
3320
+ ) as OperandExpression&lt;SqlBool&gt;[];
3321
+ return eb.and(conditions);
3322
+ });
3323
+ }
3324
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (or) {
3325
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3326
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3327
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3328
+ ) as OperandExpression&lt;SqlBool&gt;[];
3329
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3330
+ });
3331
+ }
3332
+ const result = await withReturning(
3333
+ transformedData as EntityInput&lt;Model&gt;,
3334
+ query as unknown as UpdateQueryBuilder&lt;
3335
+ Database,
3336
+ keyof Database,
3337
+ keyof Database,
3338
+ keyof Database
3339
+ &gt;,
3340
+ model,
3341
+ whereArray
3342
+ );
3343
+ return transformOutput(result, model) as unknown as Result | null;
3344
+ },
3345
+ /**
3346
+ * Updates multiple records matching the where conditions
3347
+ *
3348
+ * @typeParam Model - The model type
3349
+ * @typeParam Result - The result type
3350
+ * @param data - The data for the update operation
3351
+ * @returns Array of updated records
3352
+ */
3353
+ <span class="fstat-no" title="function not covered" > async u</span>pdateMany&lt;
3354
+ Model extends EntityName,
3355
+ Result extends TableFields&lt;Model&gt;,
3356
+ &gt;(data: {
3357
+ model: Model;
3358
+ where: Where&lt;Model&gt;;
3359
+ update: Partial&lt;EntityInput&lt;Model&gt;&gt;;
3360
+ }): Promise&lt;Result[]&gt; {
3361
+ const { model, where, update: values } = <span class="cstat-no" title="statement not covered" >data;</span>
3362
+ // Convert Where from Adapter type to internal WhereCondition type
3363
+ const whereArray = (<span class="cstat-no" title="statement not covered" >Array.isArray(where)</span>
3364
+ ? where
3365
+ : [where]) as unknown as WhereCondition&lt;Model&gt;[];
3366
+ const { and, or } = <span class="cstat-no" title="statement not covered" >convertWhereClause(model, whereArray);</span>
3367
+ const transformedData = <span class="cstat-no" title="statement not covered" >transformInput(</span>
3368
+ values as EntityInput&lt;Model&gt;,
3369
+ model,
3370
+ 'update'
3371
+ );
3372
+ &nbsp;
3373
+ // Safe cast for table name
3374
+ const tableName = <span class="cstat-no" title="statement not covered" >getEntityName(model);</span>
3375
+ let query = <span class="cstat-no" title="statement not covered" >db</span>
3376
+ .updateTable(tableName as unknown as keyof Database)
3377
+ .set(transformedData as Record&lt;string, unknown&gt;);
3378
+ &nbsp;
3379
+ <span class="cstat-no" title="statement not covered" > if (and) {</span>
3380
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3381
+ const conditions = <span class="cstat-no" title="statement not covered" >and.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3382
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3383
+ ) as OperandExpression&lt;SqlBool&gt;[];
3384
+ <span class="cstat-no" title="statement not covered" > return eb.and(conditions);</span>
3385
+ });
3386
+ }
3387
+ <span class="cstat-no" title="statement not covered" > if (or) {</span>
3388
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3389
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3390
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3391
+ ) as OperandExpression&lt;SqlBool&gt;[];
3392
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3393
+ });
3394
+ }
3395
+ <span class="cstat-no" title="statement not covered" > await query.execute();</span>
3396
+ &nbsp;
3397
+ // After update is complete, fetch the updated records using the same where conditions
3398
+ // Safe cast for table name
3399
+ let selectQuery = <span class="cstat-no" title="statement not covered" >db</span>
3400
+ .selectFrom(tableName as unknown as keyof Database)
3401
+ .selectAll();
3402
+ &nbsp;
3403
+ <span class="cstat-no" title="statement not covered" > if (and) {</span>
3404
+ <span class="cstat-no" title="statement not covered" > selectQuery = selectQuery.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3405
+ const conditions = <span class="cstat-no" title="statement not covered" >and.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3406
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3407
+ ) as OperandExpression&lt;SqlBool&gt;[];
3408
+ <span class="cstat-no" title="statement not covered" > return eb.and(conditions);</span>
3409
+ });
3410
+ }
3411
+ <span class="cstat-no" title="statement not covered" > if (or) {</span>
3412
+ <span class="cstat-no" title="statement not covered" > selectQuery = selectQuery.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3413
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3414
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3415
+ ) as OperandExpression&lt;SqlBool&gt;[];
3416
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3417
+ });
3418
+ }
3419
+ &nbsp;
3420
+ const fetchedResults = <span class="cstat-no" title="statement not covered" >await selectQuery.execute();</span>
3421
+ &nbsp;
3422
+ // Transform the results using the same pattern as findMany
3423
+ <span class="cstat-no" title="statement not covered" > if (!fetchedResults || fetchedResults.length === 0) {</span>
3424
+ <span class="cstat-no" title="statement not covered" > return [] as unknown as Result[];</span>
3425
+ }
3426
+ &nbsp;
3427
+ <span class="cstat-no" title="statement not covered" > return fetchedResults.map(</span>
3428
+ <span class="fstat-no" title="function not covered" > (r</span>ecord) =&gt;
3429
+ <span class="cstat-no" title="statement not covered" > transformOutput(</span>
3430
+ record as Record&lt;string, unknown&gt;,
3431
+ model
3432
+ ) as unknown as Result
3433
+ );
3434
+ },
3435
+ /**
3436
+ * Counts records matching the where conditions
3437
+ *
3438
+ * @typeParam Model - The model type
3439
+ * @param data - The data for the count operation
3440
+ * @returns The count of matching records
3441
+ */
3442
+ <span class="fstat-no" title="function not covered" > async c</span>ount&lt;Model extends EntityName&gt;(data: {
3443
+ model: Model;
3444
+ where?: Where&lt;Model&gt;;
3445
+ }): Promise&lt;number&gt; {
3446
+ const { model, where } = <span class="cstat-no" title="statement not covered" >data;</span>
3447
+ // Convert Where from Adapter type to internal WhereCondition type
3448
+ const whereArray = <span class="cstat-no" title="statement not covered" >where</span>
3449
+ ? ((Array.isArray(where)
3450
+ ? where
3451
+ : [where]) as unknown as WhereCondition&lt;Model&gt;[])
3452
+ : undefined;
3453
+ const { and, or } = <span class="cstat-no" title="statement not covered" >convertWhereClause(model, whereArray);</span>
3454
+ &nbsp;
3455
+ // Safe cast for table name
3456
+ const tableName = <span class="cstat-no" title="statement not covered" >getEntityName(model);</span>
3457
+ let query = <span class="cstat-no" title="statement not covered" >db</span>
3458
+ .selectFrom(tableName as unknown as keyof Database)
3459
+ .select(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; <span class="cstat-no" title="statement not covered" >eb.fn.count&lt;number&gt;('id').as('count'))</span>;
3460
+ &nbsp;
3461
+ <span class="cstat-no" title="statement not covered" > if (and) {</span>
3462
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3463
+ const conditions = <span class="cstat-no" title="statement not covered" >and.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3464
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3465
+ ) as OperandExpression&lt;SqlBool&gt;[];
3466
+ <span class="cstat-no" title="statement not covered" > return eb.and(conditions);</span>
3467
+ });
3468
+ }
3469
+ <span class="cstat-no" title="statement not covered" > if (or) {</span>
3470
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3471
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3472
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3473
+ ) as OperandExpression&lt;SqlBool&gt;[];
3474
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3475
+ });
3476
+ }
3477
+ const res = <span class="cstat-no" title="statement not covered" >await query.execute();</span>
3478
+ // Get count from result
3479
+ const count = (<span class="cstat-no" title="statement not covered" >res[0] as Record&lt;string, unknown&gt;)?.count;</span>
3480
+ <span class="cstat-no" title="statement not covered" > return typeof count === 'number' ? count : 0;</span>
3481
+ },
3482
+ /**
3483
+ * Deletes a single record matching the where conditions
3484
+ *
3485
+ * @typeParam Model - The model type
3486
+ * @param data - The data for the delete operation
3487
+ */
3488
+ async delete&lt;Model extends EntityName&gt;(data: {
3489
+ model: Model;
3490
+ where: Where&lt;Model&gt;;
3491
+ }): Promise&lt;void&gt; {
3492
+ const { model, where } = data;
3493
+ // Convert Where from Adapter type to internal WhereCondition type
3494
+ const whereArray = (Array.isArray(where)
3495
+ ? where
3496
+ : <span class="branch-1 cbranch-no" title="branch not covered" >[where]) as unknown as WhereCondition&lt;Model&gt;[];</span>
3497
+ const { and, or } = convertWhereClause(model, whereArray);
3498
+ &nbsp;
3499
+ // Safe cast for table name
3500
+ const tableName = getEntityName(model);
3501
+ let query = db.deleteFrom(tableName as unknown as keyof Database);
3502
+ &nbsp;
3503
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (and) {
3504
+ query = query.where((eb) =&gt; {
3505
+ const conditions = and.map((expr) =&gt;
3506
+ expr(eb)
3507
+ ) as OperandExpression&lt;SqlBool&gt;[];
3508
+ return eb.and(conditions);
3509
+ });
3510
+ }
3511
+ &nbsp;
3512
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (or) {
3513
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3514
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3515
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3516
+ ) as OperandExpression&lt;SqlBool&gt;[];
3517
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3518
+ });
3519
+ }
3520
+ await query.execute();
3521
+ },
3522
+ /**
3523
+ * Deletes multiple records matching the where conditions
3524
+ *
3525
+ * @typeParam Model - The model type
3526
+ * @param data - The data for the delete operation
3527
+ * @returns The number of records deleted
3528
+ */
3529
+ <span class="fstat-no" title="function not covered" > async d</span>eleteMany&lt;Model extends EntityName&gt;(data: {
3530
+ model: Model;
3531
+ where: Where&lt;Model&gt;;
3532
+ }): Promise&lt;number&gt; {
3533
+ const { model, where } = <span class="cstat-no" title="statement not covered" >data;</span>
3534
+ // Convert Where from Adapter type to internal WhereCondition type
3535
+ const whereArray = (<span class="cstat-no" title="statement not covered" >Array.isArray(where)</span>
3536
+ ? where
3537
+ : [where]) as unknown as WhereCondition&lt;Model&gt;[];
3538
+ const { and, or } = <span class="cstat-no" title="statement not covered" >convertWhereClause(model, whereArray);</span>
3539
+ &nbsp;
3540
+ // Safe cast for table name
3541
+ const tableName = <span class="cstat-no" title="statement not covered" >getEntityName(model);</span>
3542
+ let query = <span class="cstat-no" title="statement not covered" >db.deleteFrom(tableName as unknown as keyof Database);</span>
3543
+ <span class="cstat-no" title="statement not covered" > if (and) {</span>
3544
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3545
+ const conditions = <span class="cstat-no" title="statement not covered" >and.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3546
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3547
+ ) as OperandExpression&lt;SqlBool&gt;[];
3548
+ <span class="cstat-no" title="statement not covered" > return eb.and(conditions);</span>
3549
+ });
3550
+ }
3551
+ <span class="cstat-no" title="statement not covered" > if (or) {</span>
3552
+ <span class="cstat-no" title="statement not covered" > query = query.where(<span class="fstat-no" title="function not covered" >(e</span>b) =&gt; {</span>
3553
+ const conditions = <span class="cstat-no" title="statement not covered" >or.map(<span class="fstat-no" title="function not covered" >(e</span>xpr) =&gt;</span>
3554
+ <span class="cstat-no" title="statement not covered" > expr(eb)</span>
3555
+ ) as OperandExpression&lt;SqlBool&gt;[];
3556
+ <span class="cstat-no" title="statement not covered" > return eb.or(conditions);</span>
3557
+ });
3558
+ }
3559
+ const result = <span class="cstat-no" title="statement not covered" >await query.execute();</span>
3560
+ const count = <span class="cstat-no" title="statement not covered" >result.length;</span>
3561
+ <span class="cstat-no" title="statement not covered" > return count;</span>
3562
+ },
3563
+ /**
3564
+ * Executes a function within a database transaction
3565
+ *
3566
+ * This method wraps Kysely's transaction functionality to provide a consistent interface
3567
+ * for executing multiple database operations atomically. Falls back to direct execution
3568
+ * if transactions are disabled or not supported by the database.
3569
+ *
3570
+ * @typeParam ResultType - The type of data returned by the transaction
3571
+ * @param data - The transaction data containing the callback function
3572
+ * @returns A promise that resolves with the result of the callback function
3573
+ * @throws {Error} If the transaction fails to complete
3574
+ */
3575
+ async transaction&lt;ResultType&gt;(data: {
3576
+ callback: (transactionAdapter: Adapter) =&gt; Promise&lt;ResultType&gt;;
3577
+ }): Promise&lt;ResultType&gt; {
3578
+ const { callback } = data;
3579
+ &nbsp;
3580
+ // Check if transactions are explicitly disabled
3581
+ const advancedOptions =
3582
+ (opts.advanced as {
3583
+ disableTransactions?: boolean;
3584
+ }) || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
3585
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (advancedOptions.disableTransactions) {
3586
+ const regularAdapter = <span class="cstat-no" title="statement not covered" >kyselyAdapter(db, config)(opts);</span>
3587
+ <span class="cstat-no" title="statement not covered" > return await callback(regularAdapter);</span>
3588
+ }
3589
+ &nbsp;
3590
+ try {
3591
+ return await db.transaction().execute(async (trx) =&gt; {
3592
+ const transactionAdapter = kyselyAdapter(trx, config)(opts);
3593
+ return await callback(transactionAdapter);
3594
+ });
3595
+ } catch (error) {
3596
+ // Check if the error indicates transactions are not supported
3597
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
3598
+ error instanceof Error &amp;&amp;
3599
+ (error.message.includes('transactions are not supported') ||
3600
+ error.message.toLowerCase().includes('no transaction support'))
3601
+ ) {
3602
+ // Log warning about disableTransactions option
3603
+ // biome-ignore lint/suspicious/noConsole: this is a warning
3604
+ <span class="cstat-no" title="statement not covered" > console.warn(</span>
3605
+ 'Warning: Database transaction failed. If your database does not support transactions, ' +
3606
+ 'you can disable this warning by setting opts.advanced.disableTransactions to true.'
3607
+ );
3608
+ // Fallback: execute without transaction
3609
+ const regularAdapter = <span class="cstat-no" title="statement not covered" >kyselyAdapter(db, config)(opts);</span>
3610
+ <span class="cstat-no" title="statement not covered" > return await callback(regularAdapter);</span>
3611
+ }
3612
+ throw error;
3613
+ }
3614
+ },
3615
+ options: config,
3616
+ };
3617
+ };
3618
+ &nbsp;</pre></td></tr></table></pre>
3619
+
3620
+ <div class='push'></div><!-- for sticky footer -->
3621
+ </div><!-- /wrapper -->
3622
+ <div class='footer quiet pad2 space-top1 center small'>
3623
+ Code coverage generated by
3624
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3625
+ at 2025-04-14T01:06:14.959Z
3626
+ </div>
3627
+ <script src="../../../../../../prettify.js"></script>
3628
+ <script>
3629
+ window.onload = function () {
3630
+ prettyPrint();
3631
+ };
3632
+ </script>
3633
+ <script src="../../../../../../sorter.js"></script>
3634
+ <script src="../../../../../../block-navigation.js"></script>
3635
+ </body>
3636
+ </html>
3637
+