@basementuniverse/kanbn 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-summary.json +31 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +146 -0
- package/coverage/kanbn/index.html +116 -0
- package/coverage/kanbn/index.js.html +217 -0
- package/coverage/kanbn/src/board.js.html +646 -0
- package/coverage/kanbn/src/controller/add.js.html +1729 -0
- package/coverage/kanbn/src/controller/archive.js.html +277 -0
- package/coverage/kanbn/src/controller/board.js.html +217 -0
- package/coverage/kanbn/src/controller/burndown.js.html +607 -0
- package/coverage/kanbn/src/controller/comment.js.html +397 -0
- package/coverage/kanbn/src/controller/edit.js.html +2920 -0
- package/coverage/kanbn/src/controller/find.js.html +1597 -0
- package/coverage/kanbn/src/controller/gantt.js.html +1342 -0
- package/coverage/kanbn/src/controller/help.js.html +115 -0
- package/coverage/kanbn/src/controller/history.js.html +400 -0
- package/coverage/kanbn/src/controller/index.html +431 -0
- package/coverage/kanbn/src/controller/init.js.html +511 -0
- package/coverage/kanbn/src/controller/move.js.html +514 -0
- package/coverage/kanbn/src/controller/remove-all.js.html +226 -0
- package/coverage/kanbn/src/controller/remove.js.html +307 -0
- package/coverage/kanbn/src/controller/rename.js.html +397 -0
- package/coverage/kanbn/src/controller/restore.js.html +268 -0
- package/coverage/kanbn/src/controller/sort.js.html +1318 -0
- package/coverage/kanbn/src/controller/sprint.js.html +361 -0
- package/coverage/kanbn/src/controller/status.js.html +310 -0
- package/coverage/kanbn/src/controller/task.js.html +244 -0
- package/coverage/kanbn/src/controller/validate.js.html +367 -0
- package/coverage/kanbn/src/controller/version.js.html +100 -0
- package/coverage/kanbn/src/index.html +191 -0
- package/coverage/kanbn/src/main.js.html +9787 -0
- package/coverage/kanbn/src/parse-index.js.html +1063 -0
- package/coverage/kanbn/src/parse-markdown.js.html +202 -0
- package/coverage/kanbn/src/parse-task.js.html +2191 -0
- package/coverage/kanbn/src/utility.js.html +616 -0
- package/coverage/lcov.info +11837 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/tmp/coverage-214292-1787777191526-0.json +1 -0
- package/coverage/tmp/coverage-214293-1787777184569-0.json +1 -0
- package/docs/advanced-configuration.md +2 -0
- package/docs/commands/add.txt +10 -0
- package/docs/commands/board.txt +3 -1
- package/docs/commands/burndown.txt +2 -4
- package/docs/commands/edit.txt +22 -0
- package/docs/commands/find.txt +45 -1
- package/docs/commands/help.txt +1 -0
- package/docs/commands/move.txt +1 -1
- package/docs/commands/sort.txt +13 -2
- package/docs/commands/validate.txt +12 -0
- package/docs/filtering-and-sorting.md +218 -0
- package/docs/index-structure.md +68 -19
- package/docs/index.md +26 -2
- package/docs/migration-2.0.md +92 -0
- package/docs/quick-start.md +37 -1
- package/docs/task-structure.md +12 -3
- package/docs/views.md +229 -0
- package/example/README.md +70 -0
- package/example/advanced/.kanbn/index.md +26 -0
- package/example/advanced/.kanbn/tasks/add-rate-limiting.md +18 -0
- package/example/advanced/.kanbn/tasks/add-sso-support.md +15 -0
- package/example/advanced/.kanbn/tasks/migrate-to-new-cdn.md +14 -0
- package/example/advanced/.kanbn/tasks/refresh-marketing-site.md +14 -0
- package/example/advanced/.kanbn/tasks/rotate-api-keys.md +15 -0
- package/example/advanced/.kanbn/tasks/split-billing-service.md +17 -0
- package/example/advanced/.kanbn/tasks/upgrade-node-runtime.md +19 -0
- package/example/advanced/kanbn.yml +59 -0
- package/example/views/.kanbn/index.md +140 -0
- package/example/views/.kanbn/tasks/add-audit-log-export.md +18 -0
- package/example/views/.kanbn/tasks/add-dark-mode-toggle.md +16 -0
- package/example/views/.kanbn/tasks/build-webhook-retry-queue.md +15 -0
- package/example/views/.kanbn/tasks/fix-avatar-upload-crash.md +13 -0
- package/example/views/.kanbn/tasks/fix-expired-session-redirect.md +15 -0
- package/example/views/.kanbn/tasks/investigate-offline-mode.md +12 -0
- package/example/views/.kanbn/tasks/rewrite-search-indexer.md +12 -0
- package/example/views/.kanbn/tasks/tidy-up-settings-copy.md +12 -0
- package/package.json +4 -3
- package/routes/edit.json +2 -1
- package/routes/validate.json +4 -2
- package/skills/kanbn-plan/references/index-structure.md +1 -0
- package/skills/kanbn-plan/references/task-structure.md +2 -0
- package/src/board.js +1 -0
- package/src/controller/board.js +6 -0
- package/src/controller/edit.js +65 -12
- package/src/controller/gantt.js +46 -1
- package/src/controller/status.js +12 -0
- package/src/controller/task.js +1 -1
- package/src/controller/validate.js +78 -15
- package/src/main.js +324 -152
- package/src/parse-index.js +3 -0
- package/src/parse-markdown.js +3 -1
- package/src/parse-task.js +28 -1
- package/src/utility.js +26 -1
- /package/example/{.kanbn → basic/.kanbn}/index.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/add-basic-activity-feed.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/add-passwordless-login-option.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/add-usage-alert-email-thresholds.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/build-email-template-system.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/build-invoice-download-endpoint.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/build-tenant-settings-page.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/create-organization-switcher.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/create-sandbox-environment-provisioner.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/create-self-serve-cancellation-flow.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/define-product-pricing-strategy.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/design-onboarding-checklist.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/design-team-invite-expiry-flow.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/implement-data-retention-policy-jobs.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/implement-feature-flags-foundation.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/implement-project-creation-wizard.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/implement-stripe-webhook-signature-check.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/implement-team-permissions-ui.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/implement-user-signup-and-login.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/integrate-crm-lead-sync.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/legal-review-terms-and-privacy.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/migrate-legacy-events-to-new-schema.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/optimize-dashboard-first-load.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/prototype-report-export-scheduler.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/publish-internal-qa-checklist.md +0 -0
- /package/example/{.kanbn → basic/.kanbn}/tasks/setup-ci-pipeline.md +0 -0
|
@@ -0,0 +1,1729 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for kanbn/src/controller/add.js</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">kanbn/src/controller</a> add.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">93.06% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>510/548</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">87.39% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>104/119</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">94.73% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>18/19</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">93.06% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>510/548</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 high'></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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
|
|
615
|
+
<span class="cline-any cline-yes">17x</span>
|
|
616
|
+
<span class="cline-any cline-yes">17x</span>
|
|
617
|
+
<span class="cline-any cline-yes">17x</span>
|
|
618
|
+
<span class="cline-any cline-yes">17x</span>
|
|
619
|
+
<span class="cline-any cline-yes">17x</span>
|
|
620
|
+
<span class="cline-any cline-yes">17x</span>
|
|
621
|
+
<span class="cline-any cline-yes">17x</span>
|
|
622
|
+
<span class="cline-any cline-yes">17x</span>
|
|
623
|
+
<span class="cline-any cline-yes">17x</span>
|
|
624
|
+
<span class="cline-any cline-yes">17x</span>
|
|
625
|
+
<span class="cline-any cline-yes">17x</span>
|
|
626
|
+
<span class="cline-any cline-yes">17x</span>
|
|
627
|
+
<span class="cline-any cline-yes">17x</span>
|
|
628
|
+
<span class="cline-any cline-yes">17x</span>
|
|
629
|
+
<span class="cline-any cline-yes">17x</span>
|
|
630
|
+
<span class="cline-any cline-yes">17x</span>
|
|
631
|
+
<span class="cline-any cline-yes">17x</span>
|
|
632
|
+
<span class="cline-any cline-yes">17x</span>
|
|
633
|
+
<span class="cline-any cline-yes">14x</span>
|
|
634
|
+
<span class="cline-any cline-yes">14x</span>
|
|
635
|
+
<span class="cline-any cline-yes">14x</span>
|
|
636
|
+
<span class="cline-any cline-yes">14x</span>
|
|
637
|
+
<span class="cline-any cline-no"> </span>
|
|
638
|
+
<span class="cline-any cline-yes">14x</span>
|
|
639
|
+
<span class="cline-any cline-yes">14x</span>
|
|
640
|
+
<span class="cline-any cline-yes">14x</span>
|
|
641
|
+
<span class="cline-any cline-yes">14x</span>
|
|
642
|
+
<span class="cline-any cline-no"> </span>
|
|
643
|
+
<span class="cline-any cline-yes">14x</span>
|
|
644
|
+
<span class="cline-any cline-yes">14x</span>
|
|
645
|
+
<span class="cline-any cline-yes">14x</span>
|
|
646
|
+
<span class="cline-any cline-yes">14x</span>
|
|
647
|
+
<span class="cline-any cline-no"> </span>
|
|
648
|
+
<span class="cline-any cline-yes">14x</span>
|
|
649
|
+
<span class="cline-any cline-yes">14x</span>
|
|
650
|
+
<span class="cline-any cline-yes">14x</span>
|
|
651
|
+
<span class="cline-any cline-yes">14x</span>
|
|
652
|
+
<span class="cline-any cline-no"> </span>
|
|
653
|
+
<span class="cline-any cline-yes">14x</span>
|
|
654
|
+
<span class="cline-any cline-yes">14x</span>
|
|
655
|
+
<span class="cline-any cline-yes">14x</span>
|
|
656
|
+
<span class="cline-any cline-yes">14x</span>
|
|
657
|
+
<span class="cline-any cline-yes">14x</span>
|
|
658
|
+
<span class="cline-any cline-yes">14x</span>
|
|
659
|
+
<span class="cline-any cline-yes">14x</span>
|
|
660
|
+
<span class="cline-any cline-yes">14x</span>
|
|
661
|
+
<span class="cline-any cline-yes">13x</span>
|
|
662
|
+
<span class="cline-any cline-yes">1x</span>
|
|
663
|
+
<span class="cline-any cline-yes">1x</span>
|
|
664
|
+
<span class="cline-any cline-yes">12x</span>
|
|
665
|
+
<span class="cline-any cline-yes">13x</span>
|
|
666
|
+
<span class="cline-any cline-yes">14x</span>
|
|
667
|
+
<span class="cline-any cline-yes">14x</span>
|
|
668
|
+
<span class="cline-any cline-yes">14x</span>
|
|
669
|
+
<span class="cline-any cline-yes">14x</span>
|
|
670
|
+
<span class="cline-any cline-yes">14x</span>
|
|
671
|
+
<span class="cline-any cline-yes">14x</span>
|
|
672
|
+
<span class="cline-any cline-yes">14x</span>
|
|
673
|
+
<span class="cline-any cline-yes">14x</span>
|
|
674
|
+
<span class="cline-any cline-yes">14x</span>
|
|
675
|
+
<span class="cline-any cline-yes">14x</span>
|
|
676
|
+
<span class="cline-any cline-yes">14x</span>
|
|
677
|
+
<span class="cline-any cline-yes">14x</span>
|
|
678
|
+
<span class="cline-any cline-yes">14x</span>
|
|
679
|
+
<span class="cline-any cline-yes">14x</span>
|
|
680
|
+
<span class="cline-any cline-yes">14x</span>
|
|
681
|
+
<span class="cline-any cline-yes">14x</span>
|
|
682
|
+
<span class="cline-any cline-yes">14x</span>
|
|
683
|
+
<span class="cline-any cline-yes">14x</span>
|
|
684
|
+
<span class="cline-any cline-yes">14x</span>
|
|
685
|
+
<span class="cline-any cline-yes">14x</span>
|
|
686
|
+
<span class="cline-any cline-yes">14x</span>
|
|
687
|
+
<span class="cline-any cline-yes">14x</span>
|
|
688
|
+
<span class="cline-any cline-yes">14x</span>
|
|
689
|
+
<span class="cline-any cline-yes">14x</span>
|
|
690
|
+
<span class="cline-any cline-yes">14x</span>
|
|
691
|
+
<span class="cline-any cline-yes">14x</span>
|
|
692
|
+
<span class="cline-any cline-yes">14x</span>
|
|
693
|
+
<span class="cline-any cline-yes">14x</span>
|
|
694
|
+
<span class="cline-any cline-yes">14x</span>
|
|
695
|
+
<span class="cline-any cline-yes">14x</span>
|
|
696
|
+
<span class="cline-any cline-yes">14x</span>
|
|
697
|
+
<span class="cline-any cline-yes">14x</span>
|
|
698
|
+
<span class="cline-any cline-yes">14x</span>
|
|
699
|
+
<span class="cline-any cline-yes">14x</span>
|
|
700
|
+
<span class="cline-any cline-yes">14x</span>
|
|
701
|
+
<span class="cline-any cline-yes">14x</span>
|
|
702
|
+
<span class="cline-any cline-yes">14x</span>
|
|
703
|
+
<span class="cline-any cline-yes">14x</span>
|
|
704
|
+
<span class="cline-any cline-yes">14x</span>
|
|
705
|
+
<span class="cline-any cline-yes">14x</span>
|
|
706
|
+
<span class="cline-any cline-yes">14x</span>
|
|
707
|
+
<span class="cline-any cline-yes">14x</span>
|
|
708
|
+
<span class="cline-any cline-yes">14x</span>
|
|
709
|
+
<span class="cline-any cline-yes">14x</span>
|
|
710
|
+
<span class="cline-any cline-yes">14x</span>
|
|
711
|
+
<span class="cline-any cline-yes">14x</span>
|
|
712
|
+
<span class="cline-any cline-yes">14x</span>
|
|
713
|
+
<span class="cline-any cline-yes">14x</span>
|
|
714
|
+
<span class="cline-any cline-yes">14x</span>
|
|
715
|
+
<span class="cline-any cline-yes">14x</span>
|
|
716
|
+
<span class="cline-any cline-yes">14x</span>
|
|
717
|
+
<span class="cline-any cline-yes">14x</span>
|
|
718
|
+
<span class="cline-any cline-yes">14x</span>
|
|
719
|
+
<span class="cline-any cline-yes">14x</span>
|
|
720
|
+
<span class="cline-any cline-yes">14x</span>
|
|
721
|
+
<span class="cline-any cline-yes">14x</span>
|
|
722
|
+
<span class="cline-any cline-yes">14x</span>
|
|
723
|
+
<span class="cline-any cline-yes">14x</span>
|
|
724
|
+
<span class="cline-any cline-yes">14x</span>
|
|
725
|
+
<span class="cline-any cline-yes">14x</span>
|
|
726
|
+
<span class="cline-any cline-yes">14x</span>
|
|
727
|
+
<span class="cline-any cline-yes">14x</span>
|
|
728
|
+
<span class="cline-any cline-yes">14x</span>
|
|
729
|
+
<span class="cline-any cline-yes">14x</span>
|
|
730
|
+
<span class="cline-any cline-yes">14x</span>
|
|
731
|
+
<span class="cline-any cline-yes">14x</span>
|
|
732
|
+
<span class="cline-any cline-yes">14x</span>
|
|
733
|
+
<span class="cline-any cline-yes">14x</span>
|
|
734
|
+
<span class="cline-any cline-yes">14x</span>
|
|
735
|
+
<span class="cline-any cline-yes">14x</span>
|
|
736
|
+
<span class="cline-any cline-yes">14x</span>
|
|
737
|
+
<span class="cline-any cline-yes">14x</span>
|
|
738
|
+
<span class="cline-any cline-yes">14x</span>
|
|
739
|
+
<span class="cline-any cline-yes">14x</span>
|
|
740
|
+
<span class="cline-any cline-yes">14x</span>
|
|
741
|
+
<span class="cline-any cline-yes">14x</span>
|
|
742
|
+
<span class="cline-any cline-yes">14x</span>
|
|
743
|
+
<span class="cline-any cline-yes">14x</span>
|
|
744
|
+
<span class="cline-any cline-yes">14x</span>
|
|
745
|
+
<span class="cline-any cline-yes">14x</span>
|
|
746
|
+
<span class="cline-any cline-yes">14x</span>
|
|
747
|
+
<span class="cline-any cline-yes">14x</span>
|
|
748
|
+
<span class="cline-any cline-yes">14x</span>
|
|
749
|
+
<span class="cline-any cline-yes">14x</span>
|
|
750
|
+
<span class="cline-any cline-yes">14x</span>
|
|
751
|
+
<span class="cline-any cline-yes">14x</span>
|
|
752
|
+
<span class="cline-any cline-yes">14x</span>
|
|
753
|
+
<span class="cline-any cline-yes">14x</span>
|
|
754
|
+
<span class="cline-any cline-yes">14x</span>
|
|
755
|
+
<span class="cline-any cline-yes">14x</span>
|
|
756
|
+
<span class="cline-any cline-yes">14x</span>
|
|
757
|
+
<span class="cline-any cline-yes">14x</span>
|
|
758
|
+
<span class="cline-any cline-yes">3x</span>
|
|
759
|
+
<span class="cline-any cline-yes">1x</span>
|
|
760
|
+
<span class="cline-any cline-yes">1x</span>
|
|
761
|
+
<span class="cline-any cline-yes">2x</span>
|
|
762
|
+
<span class="cline-any cline-yes">3x</span>
|
|
763
|
+
<span class="cline-any cline-yes">14x</span>
|
|
764
|
+
<span class="cline-any cline-yes">14x</span>
|
|
765
|
+
<span class="cline-any cline-yes">14x</span>
|
|
766
|
+
<span class="cline-any cline-yes">14x</span>
|
|
767
|
+
<span class="cline-any cline-yes">14x</span>
|
|
768
|
+
<span class="cline-any cline-yes">14x</span>
|
|
769
|
+
<span class="cline-any cline-yes">14x</span>
|
|
770
|
+
<span class="cline-any cline-yes">14x</span>
|
|
771
|
+
<span class="cline-any cline-yes">14x</span>
|
|
772
|
+
<span class="cline-any cline-yes">14x</span>
|
|
773
|
+
<span class="cline-any cline-yes">14x</span>
|
|
774
|
+
<span class="cline-any cline-yes">14x</span>
|
|
775
|
+
<span class="cline-any cline-yes">14x</span>
|
|
776
|
+
<span class="cline-any cline-yes">14x</span>
|
|
777
|
+
<span class="cline-any cline-yes">14x</span>
|
|
778
|
+
<span class="cline-any cline-yes">14x</span>
|
|
779
|
+
<span class="cline-any cline-yes">14x</span>
|
|
780
|
+
<span class="cline-any cline-yes">14x</span>
|
|
781
|
+
<span class="cline-any cline-yes">14x</span>
|
|
782
|
+
<span class="cline-any cline-yes">14x</span>
|
|
783
|
+
<span class="cline-any cline-yes">14x</span>
|
|
784
|
+
<span class="cline-any cline-yes">3x</span>
|
|
785
|
+
<span class="cline-any cline-yes">1x</span>
|
|
786
|
+
<span class="cline-any cline-yes">1x</span>
|
|
787
|
+
<span class="cline-any cline-yes">2x</span>
|
|
788
|
+
<span class="cline-any cline-yes">3x</span>
|
|
789
|
+
<span class="cline-any cline-yes">14x</span>
|
|
790
|
+
<span class="cline-any cline-yes">14x</span>
|
|
791
|
+
<span class="cline-any cline-yes">14x</span>
|
|
792
|
+
<span class="cline-any cline-yes">14x</span>
|
|
793
|
+
<span class="cline-any cline-yes">14x</span>
|
|
794
|
+
<span class="cline-any cline-yes">14x</span>
|
|
795
|
+
<span class="cline-any cline-yes">14x</span>
|
|
796
|
+
<span class="cline-any cline-yes">14x</span>
|
|
797
|
+
<span class="cline-any cline-yes">14x</span>
|
|
798
|
+
<span class="cline-any cline-yes">14x</span>
|
|
799
|
+
<span class="cline-any cline-yes">14x</span>
|
|
800
|
+
<span class="cline-any cline-yes">14x</span>
|
|
801
|
+
<span class="cline-any cline-yes">14x</span>
|
|
802
|
+
<span class="cline-any cline-yes">14x</span>
|
|
803
|
+
<span class="cline-any cline-yes">14x</span>
|
|
804
|
+
<span class="cline-any cline-yes">14x</span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
806
|
+
<span class="cline-any cline-no"> </span>
|
|
807
|
+
<span class="cline-any cline-no"> </span>
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-yes">14x</span>
|
|
812
|
+
<span class="cline-any cline-yes">14x</span>
|
|
813
|
+
<span class="cline-any cline-yes">14x</span>
|
|
814
|
+
<span class="cline-any cline-yes">14x</span>
|
|
815
|
+
<span class="cline-any cline-yes">14x</span>
|
|
816
|
+
<span class="cline-any cline-yes">14x</span>
|
|
817
|
+
<span class="cline-any cline-yes">14x</span>
|
|
818
|
+
<span class="cline-any cline-yes">14x</span>
|
|
819
|
+
<span class="cline-any cline-yes">14x</span>
|
|
820
|
+
<span class="cline-any cline-yes">14x</span>
|
|
821
|
+
<span class="cline-any cline-yes">17x</span>
|
|
822
|
+
<span class="cline-any cline-yes">17x</span>
|
|
823
|
+
<span class="cline-any cline-yes">17x</span>
|
|
824
|
+
<span class="cline-any cline-yes">17x</span>
|
|
825
|
+
<span class="cline-any cline-yes">17x</span>
|
|
826
|
+
<span class="cline-any cline-yes">17x</span>
|
|
827
|
+
<span class="cline-any cline-yes">17x</span>
|
|
828
|
+
<span class="cline-any cline-yes">1x</span>
|
|
829
|
+
<span class="cline-any cline-yes">1x</span>
|
|
830
|
+
<span class="cline-any cline-yes">1x</span>
|
|
831
|
+
<span class="cline-any cline-yes">1x</span>
|
|
832
|
+
<span class="cline-any cline-yes">1x</span>
|
|
833
|
+
<span class="cline-any cline-yes">1x</span>
|
|
834
|
+
<span class="cline-any cline-yes">1x</span>
|
|
835
|
+
<span class="cline-any cline-yes">1x</span>
|
|
836
|
+
<span class="cline-any cline-yes">1x</span>
|
|
837
|
+
<span class="cline-any cline-yes">1x</span>
|
|
838
|
+
<span class="cline-any cline-yes">1x</span>
|
|
839
|
+
<span class="cline-any cline-yes">1x</span>
|
|
840
|
+
<span class="cline-any cline-yes">1x</span>
|
|
841
|
+
<span class="cline-any cline-yes">1x</span>
|
|
842
|
+
<span class="cline-any cline-yes">1x</span>
|
|
843
|
+
<span class="cline-any cline-yes">1x</span>
|
|
844
|
+
<span class="cline-any cline-yes">1x</span>
|
|
845
|
+
<span class="cline-any cline-yes">17x</span>
|
|
846
|
+
<span class="cline-any cline-yes">17x</span>
|
|
847
|
+
<span class="cline-any cline-yes">17x</span>
|
|
848
|
+
<span class="cline-any cline-yes">17x</span>
|
|
849
|
+
<span class="cline-any cline-yes">17x</span>
|
|
850
|
+
<span class="cline-any cline-yes">17x</span>
|
|
851
|
+
<span class="cline-any cline-yes">23x</span>
|
|
852
|
+
<span class="cline-any cline-yes">23x</span>
|
|
853
|
+
<span class="cline-any cline-yes">23x</span>
|
|
854
|
+
<span class="cline-any cline-yes">23x</span>
|
|
855
|
+
<span class="cline-any cline-yes">23x</span>
|
|
856
|
+
<span class="cline-any cline-yes">23x</span>
|
|
857
|
+
<span class="cline-any cline-yes">23x</span>
|
|
858
|
+
<span class="cline-any cline-no"> </span>
|
|
859
|
+
<span class="cline-any cline-yes">23x</span>
|
|
860
|
+
<span class="cline-any cline-yes">23x</span>
|
|
861
|
+
<span class="cline-any cline-yes">17x</span>
|
|
862
|
+
<span class="cline-any cline-yes">17x</span>
|
|
863
|
+
<span class="cline-any cline-yes">17x</span>
|
|
864
|
+
<span class="cline-any cline-yes">17x</span>
|
|
865
|
+
<span class="cline-any cline-yes">17x</span>
|
|
866
|
+
<span class="cline-any cline-yes">17x</span>
|
|
867
|
+
<span class="cline-any cline-yes">3x</span>
|
|
868
|
+
<span class="cline-any cline-yes">3x</span>
|
|
869
|
+
<span class="cline-any cline-yes">4x</span>
|
|
870
|
+
<span class="cline-any cline-yes">4x</span>
|
|
871
|
+
<span class="cline-any cline-yes">4x</span>
|
|
872
|
+
<span class="cline-any cline-no"> </span>
|
|
873
|
+
<span class="cline-any cline-no"> </span>
|
|
874
|
+
<span class="cline-any cline-no"> </span>
|
|
875
|
+
<span class="cline-any cline-yes">4x</span>
|
|
876
|
+
<span class="cline-any cline-yes">3x</span>
|
|
877
|
+
<span class="cline-any cline-yes">3x</span>
|
|
878
|
+
<span class="cline-any cline-yes">3x</span>
|
|
879
|
+
<span class="cline-any cline-yes">3x</span>
|
|
880
|
+
<span class="cline-any cline-yes">17x</span>
|
|
881
|
+
<span class="cline-any cline-yes">17x</span>
|
|
882
|
+
<span class="cline-any cline-yes">41x</span>
|
|
883
|
+
<span class="cline-any cline-yes">41x</span>
|
|
884
|
+
<span class="cline-any cline-yes">41x</span>
|
|
885
|
+
<span class="cline-any cline-yes">1x</span>
|
|
886
|
+
<span class="cline-any cline-yes">1x</span>
|
|
887
|
+
<span class="cline-any cline-yes">1x</span>
|
|
888
|
+
<span class="cline-any cline-yes">40x</span>
|
|
889
|
+
<span class="cline-any cline-yes">40x</span>
|
|
890
|
+
<span class="cline-any cline-yes">40x</span>
|
|
891
|
+
<span class="cline-any cline-yes">40x</span>
|
|
892
|
+
<span class="cline-any cline-yes">40x</span>
|
|
893
|
+
<span class="cline-any cline-yes">41x</span>
|
|
894
|
+
<span class="cline-any cline-no"> </span>
|
|
895
|
+
<span class="cline-any cline-no"> </span>
|
|
896
|
+
<span class="cline-any cline-no"> </span>
|
|
897
|
+
<span class="cline-any cline-yes">40x</span>
|
|
898
|
+
<span class="cline-any cline-yes">41x</span>
|
|
899
|
+
<span class="cline-any cline-yes">1x</span>
|
|
900
|
+
<span class="cline-any cline-yes">1x</span>
|
|
901
|
+
<span class="cline-any cline-yes">1x</span>
|
|
902
|
+
<span class="cline-any cline-yes">39x</span>
|
|
903
|
+
<span class="cline-any cline-yes">39x</span>
|
|
904
|
+
<span class="cline-any cline-yes">39x</span>
|
|
905
|
+
<span class="cline-any cline-yes">41x</span>
|
|
906
|
+
<span class="cline-any cline-yes">3x</span>
|
|
907
|
+
<span class="cline-any cline-yes">3x</span>
|
|
908
|
+
<span class="cline-any cline-yes">1x</span>
|
|
909
|
+
<span class="cline-any cline-yes">1x</span>
|
|
910
|
+
<span class="cline-any cline-yes">1x</span>
|
|
911
|
+
<span class="cline-any cline-yes">3x</span>
|
|
912
|
+
<span class="cline-any cline-yes">38x</span>
|
|
913
|
+
<span class="cline-any cline-yes">38x</span>
|
|
914
|
+
<span class="cline-any cline-yes">41x</span>
|
|
915
|
+
<span class="cline-any cline-yes">4x</span>
|
|
916
|
+
<span class="cline-any cline-yes">4x</span>
|
|
917
|
+
<span class="cline-any cline-no"> </span>
|
|
918
|
+
<span class="cline-any cline-yes">4x</span>
|
|
919
|
+
<span class="cline-any cline-yes">1x</span>
|
|
920
|
+
<span class="cline-any cline-yes">4x</span>
|
|
921
|
+
<span class="cline-any cline-yes">3x</span>
|
|
922
|
+
<span class="cline-any cline-yes">3x</span>
|
|
923
|
+
<span class="cline-any cline-yes">3x</span>
|
|
924
|
+
<span class="cline-any cline-no"> </span>
|
|
925
|
+
<span class="cline-any cline-no"> </span>
|
|
926
|
+
<span class="cline-any cline-no"> </span>
|
|
927
|
+
<span class="cline-any cline-yes">3x</span>
|
|
928
|
+
<span class="cline-any cline-yes">4x</span>
|
|
929
|
+
<span class="cline-any cline-yes">4x</span>
|
|
930
|
+
<span class="cline-any cline-yes">4x</span>
|
|
931
|
+
<span class="cline-any cline-yes">1x</span>
|
|
932
|
+
<span class="cline-any cline-yes">1x</span>
|
|
933
|
+
<span class="cline-any cline-yes">1x</span>
|
|
934
|
+
<span class="cline-any cline-yes">3x</span>
|
|
935
|
+
<span class="cline-any cline-yes">3x</span>
|
|
936
|
+
<span class="cline-any cline-yes">4x</span>
|
|
937
|
+
<span class="cline-any cline-yes">1x</span>
|
|
938
|
+
<span class="cline-any cline-yes">1x</span>
|
|
939
|
+
<span class="cline-any cline-yes">1x</span>
|
|
940
|
+
<span class="cline-any cline-yes">1x</span>
|
|
941
|
+
<span class="cline-any cline-yes">1x</span>
|
|
942
|
+
<span class="cline-any cline-no"> </span>
|
|
943
|
+
<span class="cline-any cline-yes">1x</span>
|
|
944
|
+
<span class="cline-any cline-yes">1x</span>
|
|
945
|
+
<span class="cline-any cline-yes">4x</span>
|
|
946
|
+
<span class="cline-any cline-yes">2x</span>
|
|
947
|
+
<span class="cline-any cline-yes">2x</span>
|
|
948
|
+
<span class="cline-any cline-yes">2x</span>
|
|
949
|
+
<span class="cline-any cline-yes">4x</span>
|
|
950
|
+
<span class="cline-any cline-yes">34x</span>
|
|
951
|
+
<span class="cline-any cline-yes">34x</span>
|
|
952
|
+
<span class="cline-any cline-yes">34x</span>
|
|
953
|
+
<span class="cline-any cline-yes">34x</span>
|
|
954
|
+
<span class="cline-any cline-yes">34x</span>
|
|
955
|
+
<span class="cline-any cline-yes">34x</span>
|
|
956
|
+
<span class="cline-any cline-yes">34x</span>
|
|
957
|
+
<span class="cline-any cline-yes">34x</span>
|
|
958
|
+
<span class="cline-any cline-yes">34x</span>
|
|
959
|
+
<span class="cline-any cline-yes">34x</span>
|
|
960
|
+
<span class="cline-any cline-yes">34x</span>
|
|
961
|
+
<span class="cline-any cline-yes">41x</span>
|
|
962
|
+
<span class="cline-any cline-yes">20x</span>
|
|
963
|
+
<span class="cline-any cline-yes">20x</span>
|
|
964
|
+
<span class="cline-any cline-yes">34x</span>
|
|
965
|
+
<span class="cline-any cline-yes">34x</span>
|
|
966
|
+
<span class="cline-any cline-yes">41x</span>
|
|
967
|
+
<span class="cline-any cline-yes">1x</span>
|
|
968
|
+
<span class="cline-any cline-yes">1x</span>
|
|
969
|
+
<span class="cline-any cline-yes">34x</span>
|
|
970
|
+
<span class="cline-any cline-yes">34x</span>
|
|
971
|
+
<span class="cline-any cline-yes">41x</span>
|
|
972
|
+
<span class="cline-any cline-yes">2x</span>
|
|
973
|
+
<span class="cline-any cline-yes">2x</span>
|
|
974
|
+
<span class="cline-any cline-yes">1x</span>
|
|
975
|
+
<span class="cline-any cline-yes">1x</span>
|
|
976
|
+
<span class="cline-any cline-yes">1x</span>
|
|
977
|
+
<span class="cline-any cline-yes">2x</span>
|
|
978
|
+
<span class="cline-any cline-yes">33x</span>
|
|
979
|
+
<span class="cline-any cline-yes">33x</span>
|
|
980
|
+
<span class="cline-any cline-yes">41x</span>
|
|
981
|
+
<span class="cline-any cline-yes">2x</span>
|
|
982
|
+
<span class="cline-any cline-yes">2x</span>
|
|
983
|
+
<span class="cline-any cline-yes">1x</span>
|
|
984
|
+
<span class="cline-any cline-yes">1x</span>
|
|
985
|
+
<span class="cline-any cline-yes">1x</span>
|
|
986
|
+
<span class="cline-any cline-yes">2x</span>
|
|
987
|
+
<span class="cline-any cline-yes">32x</span>
|
|
988
|
+
<span class="cline-any cline-yes">32x</span>
|
|
989
|
+
<span class="cline-any cline-yes">41x</span>
|
|
990
|
+
<span class="cline-any cline-yes">2x</span>
|
|
991
|
+
<span class="cline-any cline-yes">2x</span>
|
|
992
|
+
<span class="cline-any cline-yes">1x</span>
|
|
993
|
+
<span class="cline-any cline-yes">1x</span>
|
|
994
|
+
<span class="cline-any cline-yes">1x</span>
|
|
995
|
+
<span class="cline-any cline-yes">2x</span>
|
|
996
|
+
<span class="cline-any cline-yes">31x</span>
|
|
997
|
+
<span class="cline-any cline-yes">31x</span>
|
|
998
|
+
<span class="cline-any cline-yes">41x</span>
|
|
999
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1000
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1001
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1002
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1003
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1004
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1005
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1006
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1007
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1008
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1009
|
+
<span class="cline-any cline-no"> </span>
|
|
1010
|
+
<span class="cline-any cline-no"> </span>
|
|
1011
|
+
<span class="cline-any cline-no"> </span>
|
|
1012
|
+
<span class="cline-any cline-no"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1014
|
+
<span class="cline-any cline-no"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1016
|
+
<span class="cline-any cline-no"> </span>
|
|
1017
|
+
<span class="cline-any cline-no"> </span>
|
|
1018
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1019
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1020
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1021
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1022
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1023
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1024
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1025
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1026
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1027
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1028
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1029
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1030
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1031
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1032
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1033
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1034
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1035
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1036
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1037
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1038
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1039
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1040
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1041
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1042
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1043
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1044
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1045
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1046
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1047
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1048
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1049
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1050
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1051
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1052
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1053
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1054
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1055
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1056
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1057
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1058
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1059
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1060
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1061
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1062
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1063
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1064
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1065
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1066
|
+
<span class="cline-any cline-yes">29x</span>
|
|
1067
|
+
<span class="cline-any cline-yes">29x</span>
|
|
1068
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1069
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1070
|
+
<span class="cline-any cline-yes">36x</span>
|
|
1071
|
+
<span class="cline-any cline-yes">36x</span>
|
|
1072
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1073
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1074
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1075
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1076
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1077
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1078
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1079
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1080
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1081
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1082
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1083
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1084
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1085
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1086
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1087
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1088
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1089
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1090
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1091
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1092
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1093
|
+
<span class="cline-any cline-no"> </span>
|
|
1094
|
+
<span class="cline-any cline-no"> </span>
|
|
1095
|
+
<span class="cline-any cline-no"> </span>
|
|
1096
|
+
<span class="cline-any cline-no"> </span>
|
|
1097
|
+
<span class="cline-any cline-no"> </span>
|
|
1098
|
+
<span class="cline-any cline-no"> </span>
|
|
1099
|
+
<span class="cline-any cline-no"> </span>
|
|
1100
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1101
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1102
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1103
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1104
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1105
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1106
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1107
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1108
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1109
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1110
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1111
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1112
|
+
<span class="cline-any cline-yes">36x</span>
|
|
1113
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1114
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1115
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1116
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1117
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1118
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1119
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1120
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1121
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1122
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1123
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1124
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1125
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1126
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1127
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1128
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1129
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1130
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1131
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1132
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1133
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1134
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1135
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1136
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1137
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1138
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1139
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1140
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1141
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1142
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1143
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1144
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1145
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1146
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1147
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1148
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1149
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1150
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1151
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1152
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1153
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1154
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1155
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1156
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1157
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1158
|
+
<span class="cline-any cline-yes">41x</span>
|
|
1159
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1160
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1161
|
+
<span class="cline-any cline-yes">17x</span>
|
|
1162
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const kanbn = require('../main');
|
|
1163
|
+
const utility = require('../utility');
|
|
1164
|
+
const inquirer = require('inquirer');
|
|
1165
|
+
const fuzzy = require('fuzzy');
|
|
1166
|
+
const chrono = require('chrono-node');
|
|
1167
|
+
const getGitUsername = require('git-user-name');
|
|
1168
|
+
|
|
1169
|
+
inquirer.registerPrompt('datepicker', require('inquirer-datepicker'));
|
|
1170
|
+
inquirer.registerPrompt('recursive', require('inquirer-recursive'));
|
|
1171
|
+
inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt'));
|
|
1172
|
+
|
|
1173
|
+
/**
|
|
1174
|
+
* Create a task interactively
|
|
1175
|
+
* @param {object} taskData
|
|
1176
|
+
* @param {string[]} taskIds
|
|
1177
|
+
* @param {string} columnName
|
|
1178
|
+
* @param {string[]} columnNames
|
|
1179
|
+
* @return {Promise<any>}
|
|
1180
|
+
*/
|
|
1181
|
+
async function interactiveCreateTask(taskData, taskIds, columnName, columnNames) {
|
|
1182
|
+
const dueDateExists = (
|
|
1183
|
+
'metadata' in taskData &&
|
|
1184
|
+
'due' in taskData.metadata <span class="branch-0 cbranch-no" title="branch not covered" >&&</span>
|
|
1185
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata.due != null</span>
|
|
1186
|
+
);
|
|
1187
|
+
const plannedStartDateExists = (
|
|
1188
|
+
'metadata' in taskData &&
|
|
1189
|
+
'plannedStart' in taskData.metadata <span class="branch-0 cbranch-no" title="branch not covered" >&&</span>
|
|
1190
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata.plannedStart != null</span>
|
|
1191
|
+
);
|
|
1192
|
+
const plannedFinishDateExists = (
|
|
1193
|
+
'metadata' in taskData &&
|
|
1194
|
+
'plannedFinish' in taskData.metadata <span class="branch-0 cbranch-no" title="branch not covered" >&&</span>
|
|
1195
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata.plannedFinish != null</span>
|
|
1196
|
+
);
|
|
1197
|
+
const assignedExists = (
|
|
1198
|
+
'metadata' in taskData &&
|
|
1199
|
+
'assigned' in taskData.metadata <span class="branch-0 cbranch-no" title="branch not covered" >&&</span>
|
|
1200
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata.assigned != null</span>
|
|
1201
|
+
);
|
|
1202
|
+
return await inquirer.prompt([
|
|
1203
|
+
{
|
|
1204
|
+
type: 'input',
|
|
1205
|
+
name: 'name',
|
|
1206
|
+
message: 'Task name:',
|
|
1207
|
+
default: taskData.name || '',
|
|
1208
|
+
validate: async value => {
|
|
1209
|
+
if (!value) {
|
|
1210
|
+
return 'Task name cannot be empty';
|
|
1211
|
+
}
|
|
1212
|
+
return true;
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
{
|
|
1216
|
+
type: 'confirm',
|
|
1217
|
+
name: 'setDescription',
|
|
1218
|
+
message: 'Add a description?',
|
|
1219
|
+
default: false
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
type: 'editor',
|
|
1223
|
+
name: 'description',
|
|
1224
|
+
message: 'Task description:',
|
|
1225
|
+
default: taskData.description,
|
|
1226
|
+
when: answers => answers.setDescription
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
type: 'list',
|
|
1230
|
+
name: 'column',
|
|
1231
|
+
message: 'Column:',
|
|
1232
|
+
default: columnName,
|
|
1233
|
+
choices: columnNames
|
|
1234
|
+
},
|
|
1235
|
+
{
|
|
1236
|
+
type: 'confirm',
|
|
1237
|
+
name: 'setDue',
|
|
1238
|
+
message: 'Set a due date?',
|
|
1239
|
+
default: false,
|
|
1240
|
+
when: answers => !dueDateExists
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
type: 'datepicker',
|
|
1244
|
+
name: 'due',
|
|
1245
|
+
message: 'Due date:',
|
|
1246
|
+
default: dueDateExists <span class="branch-0 cbranch-no" title="branch not covered" >? taskData.metadata.due </span>: new Date(),
|
|
1247
|
+
format: ['Y', '/', 'MM', '/', 'DD'],
|
|
1248
|
+
when: answers => answers.setDue,
|
|
1249
|
+
},
|
|
1250
|
+
{
|
|
1251
|
+
type: 'confirm',
|
|
1252
|
+
name: 'setPlannedStart',
|
|
1253
|
+
message: 'Set a planned start date?',
|
|
1254
|
+
default: false,
|
|
1255
|
+
when: answers => !plannedStartDateExists
|
|
1256
|
+
},
|
|
1257
|
+
{
|
|
1258
|
+
type: 'datepicker',
|
|
1259
|
+
name: 'plannedStart',
|
|
1260
|
+
message: 'Planned start date:',
|
|
1261
|
+
default: plannedStartDateExists <span class="branch-0 cbranch-no" title="branch not covered" >? taskData.metadata.plannedStart </span>: new Date(),
|
|
1262
|
+
format: ['Y', '/', 'MM', '/', 'DD'],
|
|
1263
|
+
when: answers => answers.setPlannedStart,
|
|
1264
|
+
},
|
|
1265
|
+
{
|
|
1266
|
+
type: 'confirm',
|
|
1267
|
+
name: 'setPlannedFinish',
|
|
1268
|
+
message: 'Set a planned finish date?',
|
|
1269
|
+
default: false,
|
|
1270
|
+
when: answers => !plannedFinishDateExists
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
type: 'datepicker',
|
|
1274
|
+
name: 'plannedFinish',
|
|
1275
|
+
message: 'Planned finish date:',
|
|
1276
|
+
default: plannedFinishDateExists <span class="branch-0 cbranch-no" title="branch not covered" >? taskData.metadata.plannedFinish </span>: new Date(),
|
|
1277
|
+
format: ['Y', '/', 'MM', '/', 'DD'],
|
|
1278
|
+
when: answers => answers.setPlannedFinish,
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
type: 'confirm',
|
|
1282
|
+
name: 'setAssigned',
|
|
1283
|
+
message: 'Assign this task?',
|
|
1284
|
+
default: false,
|
|
1285
|
+
when: answers => !assignedExists
|
|
1286
|
+
},
|
|
1287
|
+
{
|
|
1288
|
+
type: 'input',
|
|
1289
|
+
name: 'assigned',
|
|
1290
|
+
message: 'Assigned to:',
|
|
1291
|
+
default: assignedExists <span class="branch-0 cbranch-no" title="branch not covered" >? taskData.metadata.assigned </span>: getGitUsername(),
|
|
1292
|
+
when: answers => answers.setAssigned || assignedExists
|
|
1293
|
+
},
|
|
1294
|
+
{
|
|
1295
|
+
type: 'recursive',
|
|
1296
|
+
name: 'subTasks',
|
|
1297
|
+
initialMessage: 'Add a sub-task?',
|
|
1298
|
+
message: 'Add another sub-task?',
|
|
1299
|
+
default: false,
|
|
1300
|
+
prompts: [
|
|
1301
|
+
{
|
|
1302
|
+
type: 'input',
|
|
1303
|
+
name: 'text',
|
|
1304
|
+
message: 'Sub-task text:',
|
|
1305
|
+
validate: value => {
|
|
1306
|
+
if (!value) {
|
|
1307
|
+
return 'Sub-task text cannot be empty';
|
|
1308
|
+
}
|
|
1309
|
+
return true;
|
|
1310
|
+
}
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
type: 'confirm',
|
|
1314
|
+
name: 'completed',
|
|
1315
|
+
message: 'Sub-task completed?',
|
|
1316
|
+
default: false
|
|
1317
|
+
}
|
|
1318
|
+
]
|
|
1319
|
+
},
|
|
1320
|
+
{
|
|
1321
|
+
type: 'recursive',
|
|
1322
|
+
name: 'tags',
|
|
1323
|
+
initialMessage: 'Add a tag?',
|
|
1324
|
+
message: 'Add another tag?',
|
|
1325
|
+
default: false,
|
|
1326
|
+
prompts: [
|
|
1327
|
+
{
|
|
1328
|
+
type: 'input',
|
|
1329
|
+
name: 'name',
|
|
1330
|
+
message: 'Tag name:',
|
|
1331
|
+
validate: value => {
|
|
1332
|
+
if (!value) {
|
|
1333
|
+
return 'Tag name cannot be empty';
|
|
1334
|
+
}
|
|
1335
|
+
return true;
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
]
|
|
1339
|
+
},
|
|
1340
|
+
{
|
|
1341
|
+
type: 'recursive',
|
|
1342
|
+
name: 'relations',
|
|
1343
|
+
initialMessage: 'Add a relation?',
|
|
1344
|
+
message: 'Add another relation?',
|
|
1345
|
+
default: false,
|
|
1346
|
+
when: answers => taskIds.length > 0,
|
|
1347
|
+
prompts: [
|
|
1348
|
+
{
|
|
1349
|
+
type: 'autocomplete',
|
|
1350
|
+
name: 'task',
|
|
1351
|
+
message: 'Related task id:',
|
|
1352
|
+
source: <span class="fstat-no" title="function not covered" >(answers, input) => {</span>
|
|
1353
|
+
<span class="cstat-no" title="statement not covered" > input = input || '';</span>
|
|
1354
|
+
<span class="cstat-no" title="statement not covered" > const result = fuzzy.filter(input, taskIds);</span>
|
|
1355
|
+
<span class="cstat-no" title="statement not covered" > return new Promise(resolve => {</span>
|
|
1356
|
+
<span class="cstat-no" title="statement not covered" > resolve(result.map(result => result.string));</span>
|
|
1357
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1358
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1359
|
+
},
|
|
1360
|
+
{
|
|
1361
|
+
type: 'input',
|
|
1362
|
+
name: 'type',
|
|
1363
|
+
message: 'Relation type:'
|
|
1364
|
+
}
|
|
1365
|
+
]
|
|
1366
|
+
}
|
|
1367
|
+
]);
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
/**
|
|
1371
|
+
* Add untracked tasks interactively
|
|
1372
|
+
* @param {string[]} untrackedTasks
|
|
1373
|
+
* @param {string} columnName
|
|
1374
|
+
* @param {string[]} columnNames
|
|
1375
|
+
*/
|
|
1376
|
+
async function interactiveAddUntrackedTasks(untrackedTasks, columnName, columnNames) {
|
|
1377
|
+
return await inquirer.prompt([
|
|
1378
|
+
{
|
|
1379
|
+
type: 'checkbox',
|
|
1380
|
+
name: 'untrackedTasks',
|
|
1381
|
+
message: 'Choose which tasks to add:',
|
|
1382
|
+
choices: untrackedTasks
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
type: 'list',
|
|
1386
|
+
name: 'column',
|
|
1387
|
+
message: 'Column:',
|
|
1388
|
+
default: columnName,
|
|
1389
|
+
choices: columnNames
|
|
1390
|
+
}
|
|
1391
|
+
]);
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
/**
|
|
1395
|
+
* Create a task
|
|
1396
|
+
* @param {object} taskData
|
|
1397
|
+
* @param {string} columnName
|
|
1398
|
+
*/
|
|
1399
|
+
function createTask(taskData, columnName) {
|
|
1400
|
+
kanbn
|
|
1401
|
+
.createTask(taskData, columnName)
|
|
1402
|
+
.then(taskId => {
|
|
1403
|
+
console.log(`Created task "${taskId}" in column "${columnName}"`);
|
|
1404
|
+
})
|
|
1405
|
+
.catch(error => {
|
|
1406
|
+
<span class="cstat-no" title="statement not covered" > utility.error(error);</span>
|
|
1407
|
+
});
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
/**
|
|
1411
|
+
* Add untracked tasks to the index
|
|
1412
|
+
* @param {string[]} untrackedTasks
|
|
1413
|
+
* @param {string} columnName
|
|
1414
|
+
*/
|
|
1415
|
+
async function addUntrackedTasks(untrackedTasks, columnName) {
|
|
1416
|
+
for (let untrackedTask of untrackedTasks) {
|
|
1417
|
+
try {
|
|
1418
|
+
await kanbn.addUntrackedTaskToIndex(untrackedTask, columnName);
|
|
1419
|
+
} <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
|
|
1420
|
+
<span class="cstat-no" title="statement not covered" > utility.error(error);</span>
|
|
1421
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1422
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1423
|
+
}
|
|
1424
|
+
console.log(
|
|
1425
|
+
`Added ${untrackedTasks.length} task${untrackedTasks.length !== 1 ? 's' : ''} to column "${columnName}"`
|
|
1426
|
+
);
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
module.exports = async args => {
|
|
1430
|
+
|
|
1431
|
+
// Make sure kanbn has been initialised
|
|
1432
|
+
if (!await kanbn.initialised()) {
|
|
1433
|
+
utility.error('Kanbn has not been initialised in this folder\nTry running: {b}kanbn init{b}');
|
|
1434
|
+
return;
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
// Get the index and make sure it has some columns
|
|
1438
|
+
let index;
|
|
1439
|
+
try {
|
|
1440
|
+
index = await kanbn.getIndex();
|
|
1441
|
+
} <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
|
|
1442
|
+
<span class="cstat-no" title="statement not covered" > utility.error(error);</span>
|
|
1443
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1444
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1445
|
+
const columnNames = Object.keys(index.columns);
|
|
1446
|
+
if (!columnNames.length) {
|
|
1447
|
+
utility.error('No columns defined in the index\nTry running {b}kanbn init -c "column name"{b}');
|
|
1448
|
+
return;
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
// Get column name if specified, otherwise default to the first available column
|
|
1452
|
+
let columnName = columnNames[0];
|
|
1453
|
+
if (args.column) {
|
|
1454
|
+
columnName = utility.strArg(args.column);
|
|
1455
|
+
if (columnNames.indexOf(columnName) === -1) {
|
|
1456
|
+
utility.error(`Column "${columnName}" doesn't exist`);
|
|
1457
|
+
return;
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
// Add untracked file(s)
|
|
1462
|
+
if (args.untracked) {
|
|
1463
|
+
const untrackedTasks = [];
|
|
1464
|
+
if (Array.isArray(args.untracked)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1465
|
+
<span class="cstat-no" title="statement not covered" > untrackedTasks.push(...args.untracked);</span>
|
|
1466
|
+
} else if (typeof args.untracked === 'string') {
|
|
1467
|
+
untrackedTasks.push(args.untracked);
|
|
1468
|
+
} else if (args.untracked === true) {
|
|
1469
|
+
try {
|
|
1470
|
+
untrackedTasks.push(...await kanbn.findUntrackedTasks());
|
|
1471
|
+
} <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
|
|
1472
|
+
<span class="cstat-no" title="statement not covered" > utility.error(error);</span>
|
|
1473
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1474
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
// Make sure there are some untracked tasks to add
|
|
1478
|
+
if (untrackedTasks.length === 0) {
|
|
1479
|
+
utility.error('No untracked tasks to add');
|
|
1480
|
+
return;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
// Add untracked files interactively
|
|
1484
|
+
if (args.interactive) {
|
|
1485
|
+
interactiveAddUntrackedTasks(untrackedTasks, columnName, columnNames)
|
|
1486
|
+
.then(async answers => {
|
|
1487
|
+
await addUntrackedTasks(answers.untrackedTasks, answers.column);
|
|
1488
|
+
})
|
|
1489
|
+
.catch(error => {
|
|
1490
|
+
<span class="cstat-no" title="statement not covered" > utility.error(error);</span>
|
|
1491
|
+
});
|
|
1492
|
+
return;
|
|
1493
|
+
} else {
|
|
1494
|
+
await addUntrackedTasks(untrackedTasks, columnName);
|
|
1495
|
+
return;
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
// Otherwise, create a task from arguments or interactively
|
|
1500
|
+
const taskData = {
|
|
1501
|
+
metadata: {}
|
|
1502
|
+
};
|
|
1503
|
+
|
|
1504
|
+
// Get a list of existing task ids
|
|
1505
|
+
const taskIds = [...await kanbn.findTrackedTasks()];
|
|
1506
|
+
|
|
1507
|
+
// Get task settings from arguments
|
|
1508
|
+
// Name
|
|
1509
|
+
if (args.name) {
|
|
1510
|
+
taskData.name = utility.strArg(args.name);
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
// Description
|
|
1514
|
+
if (args.description) {
|
|
1515
|
+
taskData.description = utility.strArg(args.description);
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
// Due date
|
|
1519
|
+
if (args.due) {
|
|
1520
|
+
taskData.metadata.due = chrono.parseDate(utility.strArg(args.due));
|
|
1521
|
+
if (taskData.metadata.due === null) {
|
|
1522
|
+
utility.error('Unable to parse due date');
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
// Planned start date
|
|
1528
|
+
if (args.plannedStart) {
|
|
1529
|
+
taskData.metadata.plannedStart = chrono.parseDate(utility.strArg(args.plannedStart));
|
|
1530
|
+
if (taskData.metadata.plannedStart === null) {
|
|
1531
|
+
utility.error('Unable to parse plannedStart date');
|
|
1532
|
+
return;
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
// Planned finish date
|
|
1537
|
+
if (args.plannedFinish) {
|
|
1538
|
+
taskData.metadata.plannedFinish = chrono.parseDate(utility.strArg(args.plannedFinish));
|
|
1539
|
+
if (taskData.metadata.plannedFinish === null) {
|
|
1540
|
+
utility.error('Unable to parse plannedFinish date');
|
|
1541
|
+
return;
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
// Progress
|
|
1546
|
+
if (args.progress) {
|
|
1547
|
+
const progressValue = parseFloat(utility.strArg(args.progress));
|
|
1548
|
+
if (isNaN(progressValue)) {
|
|
1549
|
+
utility.error('Progress value is not a number');
|
|
1550
|
+
return;
|
|
1551
|
+
}
|
|
1552
|
+
taskData.metadata.progress = progressValue;
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
// Assigned
|
|
1556
|
+
if (args.assigned) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1557
|
+
<span class="cstat-no" title="statement not covered" > const gitUsername = getGitUsername();</span>
|
|
1558
|
+
<span class="cstat-no" title="statement not covered" > if (args.assigned === true) {</span>
|
|
1559
|
+
<span class="cstat-no" title="statement not covered" > if (gitUsername) {</span>
|
|
1560
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata.assigned = gitUsername;</span>
|
|
1561
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1562
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1563
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata.assigned = utility.strArg(args.assigned);</span>
|
|
1564
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1565
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1566
|
+
|
|
1567
|
+
// Sub-tasks
|
|
1568
|
+
if (args['sub-task']) {
|
|
1569
|
+
const subTasks = utility.arrayArg(args['sub-task']);
|
|
1570
|
+
taskData.subTasks = subTasks.map(subTask => {
|
|
1571
|
+
const match = subTask.match(/^\[([x ])\] (.*)/);
|
|
1572
|
+
if (match !== null) {
|
|
1573
|
+
return {
|
|
1574
|
+
completed: match[1] === 'x',
|
|
1575
|
+
text: match[2]
|
|
1576
|
+
};
|
|
1577
|
+
}
|
|
1578
|
+
return {
|
|
1579
|
+
completed: false,
|
|
1580
|
+
text: subTask
|
|
1581
|
+
};
|
|
1582
|
+
});
|
|
1583
|
+
}
|
|
1584
|
+
|
|
1585
|
+
// Tags
|
|
1586
|
+
if (args.tag) {
|
|
1587
|
+
taskData.metadata.tags = utility.arrayArg(args.tag);
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
// Relations
|
|
1591
|
+
if (args.relation) {
|
|
1592
|
+
const relations = utility.arrayArg(args.relation).map(relation => {
|
|
1593
|
+
const parts = relation.split(':');
|
|
1594
|
+
return parts.length === 1
|
|
1595
|
+
? {
|
|
1596
|
+
type: '',
|
|
1597
|
+
task: parts[0].trim()
|
|
1598
|
+
}
|
|
1599
|
+
: {
|
|
1600
|
+
type: parts[0].trim(),
|
|
1601
|
+
task: parts[1].trim()
|
|
1602
|
+
};
|
|
1603
|
+
});
|
|
1604
|
+
|
|
1605
|
+
// Make sure each relation is an existing task
|
|
1606
|
+
for (let relation of relations) {
|
|
1607
|
+
if (taskIds.indexOf(relation.task) === -1) {
|
|
1608
|
+
utility.error(`Related task ${relation.task} doesn't exist`);
|
|
1609
|
+
return;
|
|
1610
|
+
}
|
|
1611
|
+
}
|
|
1612
|
+
taskData.relations = relations;
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
// Check metadata field types
|
|
1616
|
+
if ('customFields' in index.options) {
|
|
1617
|
+
for (let arg of Object.keys(args)) {
|
|
1618
|
+
const customField = index.options.customFields.find(p => p.name === arg);
|
|
1619
|
+
if (customField !== undefined) {
|
|
1620
|
+
|
|
1621
|
+
// Check value type
|
|
1622
|
+
switch (customField.type) {
|
|
1623
|
+
case 'boolean':
|
|
1624
|
+
if (typeof args[arg] === 'boolean') {
|
|
1625
|
+
taskData.metadata[arg] = args[arg];
|
|
1626
|
+
} else {
|
|
1627
|
+
utility.error(`Custom field "${arg}" value is not a boolean`);
|
|
1628
|
+
return;
|
|
1629
|
+
}
|
|
1630
|
+
break;
|
|
1631
|
+
case 'number':
|
|
1632
|
+
const numberValue = parseFloat(args[arg]);
|
|
1633
|
+
if (!isNaN(numberValue)) {
|
|
1634
|
+
taskData.metadata[arg] = numberValue;
|
|
1635
|
+
} else {
|
|
1636
|
+
utility.error(`Custom field "${arg}" value is not a number`);
|
|
1637
|
+
return;
|
|
1638
|
+
}
|
|
1639
|
+
break;
|
|
1640
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > case 'string':</span>
|
|
1641
|
+
<span class="cstat-no" title="statement not covered" > if (typeof args[arg] === 'string') {</span>
|
|
1642
|
+
<span class="cstat-no" title="statement not covered" > taskData.metadata[arg] = args[arg];</span>
|
|
1643
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1644
|
+
<span class="cstat-no" title="statement not covered" > utility.error(`Custom field "${arg}" value is not a string`);</span>
|
|
1645
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1646
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1647
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1648
|
+
case 'date':
|
|
1649
|
+
const dateValue = chrono.parseDate(args[arg]);
|
|
1650
|
+
if (dateValue instanceof Date) {
|
|
1651
|
+
taskData.metadata[arg] = dateValue;
|
|
1652
|
+
} else {
|
|
1653
|
+
utility.error(`Unable to parse date for custom field "${arg}"`);
|
|
1654
|
+
return;
|
|
1655
|
+
}
|
|
1656
|
+
break;
|
|
1657
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > default: break;</span>
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
// Create task interactively
|
|
1664
|
+
if (args.interactive) {
|
|
1665
|
+
interactiveCreateTask(taskData, taskIds, columnName, columnNames)
|
|
1666
|
+
.then(answers => {
|
|
1667
|
+
taskData.name = answers.name;
|
|
1668
|
+
if ('description' in answers) {
|
|
1669
|
+
taskData.description = answers.description;
|
|
1670
|
+
}
|
|
1671
|
+
if ('due' in answers) {
|
|
1672
|
+
taskData.metadata.due = answers.due;
|
|
1673
|
+
}
|
|
1674
|
+
if ('plannedStart' in answers) {
|
|
1675
|
+
taskData.metadata.plannedStart = answers.plannedStart;
|
|
1676
|
+
}
|
|
1677
|
+
if ('plannedFinish' in answers) {
|
|
1678
|
+
taskData.metadata.plannedFinish = answers.plannedFinish;
|
|
1679
|
+
}
|
|
1680
|
+
if ('assigned' in answers) {
|
|
1681
|
+
taskData.metadata.assigned = answers.assigned;
|
|
1682
|
+
}
|
|
1683
|
+
if ('subTasks' in answers) {
|
|
1684
|
+
taskData.subTasks = answers.subTasks.map(subTask => ({
|
|
1685
|
+
text: subTask.text,
|
|
1686
|
+
completed: subTask.completed
|
|
1687
|
+
}));
|
|
1688
|
+
}
|
|
1689
|
+
if ('tags' in answers && answers.tags.length > 0) {
|
|
1690
|
+
taskData.metadata.tags = answers.tags.map(tag => tag.name);
|
|
1691
|
+
}
|
|
1692
|
+
if ('relations' in answers) {
|
|
1693
|
+
taskData.relations = answers.relations.map(relation => ({
|
|
1694
|
+
task: relation.task,
|
|
1695
|
+
type: relation.type
|
|
1696
|
+
}));
|
|
1697
|
+
}
|
|
1698
|
+
columnName = answers.column;
|
|
1699
|
+
createTask(taskData, columnName);
|
|
1700
|
+
})
|
|
1701
|
+
.catch(error => {
|
|
1702
|
+
utility.error(error);
|
|
1703
|
+
});
|
|
1704
|
+
|
|
1705
|
+
// Otherwise create task non-interactively
|
|
1706
|
+
} else {
|
|
1707
|
+
createTask(taskData, columnName);
|
|
1708
|
+
}
|
|
1709
|
+
};
|
|
1710
|
+
</pre></td></tr></table></pre>
|
|
1711
|
+
|
|
1712
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
1713
|
+
</div><!-- /wrapper -->
|
|
1714
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
1715
|
+
Code coverage generated by
|
|
1716
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1717
|
+
at 2026-08-26T20:46:31.702Z
|
|
1718
|
+
</div>
|
|
1719
|
+
<script src="../../../prettify.js"></script>
|
|
1720
|
+
<script>
|
|
1721
|
+
window.onload = function () {
|
|
1722
|
+
prettyPrint();
|
|
1723
|
+
};
|
|
1724
|
+
</script>
|
|
1725
|
+
<script src="../../../sorter.js"></script>
|
|
1726
|
+
<script src="../../../block-navigation.js"></script>
|
|
1727
|
+
</body>
|
|
1728
|
+
</html>
|
|
1729
|
+
|