qpp-style 9.22.2 → 9.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/coverage/clover.xml +386 -382
  2. package/coverage/coverage-final.json +72 -73
  3. package/coverage/lcov-report/components/Accordion/index.html +1 -1
  4. package/coverage/lcov-report/components/Accordion/index.jsx.html +4 -4
  5. package/coverage/lcov-report/components/Button/index.html +116 -0
  6. package/coverage/lcov-report/components/Button/index.js.html +355 -0
  7. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +1 -1
  8. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +1 -1
  9. package/coverage/lcov-report/components/Error/index.html +1 -1
  10. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +189 -348
  11. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +11 -11
  12. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +11 -11
  13. package/coverage/lcov-report/components/Footer/index.html +29 -44
  14. package/coverage/lcov-report/components/{SideNav/UI → GovBanner}/index.html +27 -42
  15. package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
  16. package/coverage/lcov-report/components/{SideNav/Links/NavLinkInline.jsx.html → Header/HeaderAccountMenu.jsx.html} +118 -157
  17. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Header/HeaderCancel.jsx.html} +18 -24
  18. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  19. package/coverage/lcov-report/components/{SideNav/Links/CmsSwitchLink.jsx.html → Header/HeaderLogo.jsx.html} +61 -58
  20. package/coverage/lcov-report/components/{SideNav/Links/NavItemInline.jsx.html → Header/HeaderMenuButton.js.html} +63 -75
  21. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → Header/HeaderMenuItem.jsx.html} +305 -236
  22. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  23. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  24. package/coverage/lcov-report/components/{SideNav/Links/NavLinkToggle.jsx.html → Header/HeaderMobileButton.js.html} +54 -45
  25. package/coverage/lcov-report/components/{Footer/LegacyFooterUI.jsx.html → Header/HeaderUI.jsx.html} +198 -303
  26. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  27. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +331 -0
  28. package/coverage/lcov-report/components/{SideNav/AnimationGroup/AnimationGroup.jsx.html → Header/NavigationButtonIcon.jsx.html} +48 -48
  29. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  30. package/coverage/lcov-report/components/Header/index.html +326 -0
  31. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +28 -40
  32. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +5 -5
  33. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +5 -5
  34. package/coverage/lcov-report/components/Infotip/index.html +1 -1
  35. package/coverage/lcov-report/components/Infotip/index.js.html +1 -1
  36. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +3 -3
  37. package/coverage/lcov-report/components/Modal/Modal.jsx.html +5 -5
  38. package/coverage/lcov-report/components/Modal/index.html +1 -1
  39. package/coverage/lcov-report/components/Modal/index.jsx.html +5 -5
  40. package/coverage/lcov-report/components/{SideNav/Links/NavLinkContainer.jsx.html → NotificationBanner/CollapsedView.js.html} +61 -58
  41. package/coverage/lcov-report/components/{SideNav/Details/PracticeDetails.jsx.html → NotificationBanner/ExpandedView.js.html} +64 -64
  42. package/coverage/lcov-report/components/{SideNav/Details → NotificationBanner}/index.html +46 -46
  43. package/coverage/lcov-report/components/{SideNav/Content/LevelOneContent.jsx.html → NotificationBanner/index.js.html} +281 -242
  44. package/coverage/lcov-report/components/SanitizedContent/index.html +1 -1
  45. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +1 -1
  46. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +4 -4
  47. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +7 -7
  48. package/coverage/lcov-report/components/SideNav/Chart/index.html +1 -16
  49. package/coverage/lcov-report/components/SideNav/{AnimationGroup → Content/SelectRole}/index.html +30 -30
  50. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  51. package/coverage/lcov-report/components/SideNav/helpers.js.html +895 -10
  52. package/coverage/lcov-report/components/SideNav/index.html +17 -17
  53. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +8 -8
  54. package/coverage/lcov-report/components/Tooltip/index.html +1 -1
  55. package/coverage/lcov-report/components/Tooltip/index.js.html +1 -1
  56. package/coverage/lcov-report/components/Tooltip/position.js.html +1 -1
  57. package/coverage/lcov-report/components/hooks/index.html +5 -5
  58. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +18 -15
  59. package/coverage/lcov-report/components/index.html +1 -1
  60. package/coverage/lcov-report/index.html +56 -56
  61. package/coverage/lcov-report/lib/Chevron.jsx.html +5 -5
  62. package/coverage/lcov-report/lib/SvgComponents.jsx.html +105 -12
  63. package/coverage/lcov-report/lib/index.html +15 -30
  64. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  65. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  66. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  67. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  68. package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
  69. package/coverage/lcov-report/react/components/Dropdown/index.js.html +1 -1
  70. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  71. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  72. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  73. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  74. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +32 -17
  75. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +1 -1
  76. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
  77. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
  78. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  79. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  80. package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
  81. package/coverage/lcov-report/react/components/GovBanner/index.js.html +3 -3
  82. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +26 -251
  83. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
  84. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +2 -2
  85. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +4 -4
  86. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
  87. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +19 -19
  88. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +1 -1
  89. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
  90. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +2 -2
  91. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +89 -113
  92. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +2 -2
  93. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +5 -5
  94. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
  95. package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
  96. package/coverage/lcov-report/react/components/Header/hooks.js.html +59 -17
  97. package/coverage/lcov-report/react/components/Header/index.html +28 -28
  98. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
  99. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +4 -4
  100. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  101. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  102. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  103. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
  104. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
  105. package/coverage/lcov-report/react/components/Modal/index.html +1 -1
  106. package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
  107. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +49 -28
  108. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +1 -1
  109. package/coverage/lcov-report/react/components/NotificationBanner/index.html +11 -11
  110. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +32 -32
  111. package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
  112. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +1 -1
  113. package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
  114. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +1 -1
  115. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +1 -1
  116. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +1 -1
  117. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
  118. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +1 -1
  119. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
  120. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
  121. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +1 -1
  122. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
  123. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +13 -13
  124. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +1 -1
  125. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +60 -24
  126. package/coverage/lcov-report/react/components/SideNav/Content/index.html +1 -1
  127. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
  128. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
  129. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
  130. package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
  131. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
  132. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
  133. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
  134. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
  135. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +3 -3
  136. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
  137. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +1 -1
  138. package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
  139. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
  140. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +2 -20
  141. package/coverage/lcov-report/react/components/SideNav/UI/index.html +1 -1
  142. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
  143. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +78 -12
  144. package/coverage/lcov-report/react/components/SideNav/index.html +19 -19
  145. package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
  146. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  147. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  148. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  149. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  150. package/coverage/lcov-report/react/components/hooks/index.html +19 -19
  151. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +37 -37
  152. package/coverage/lcov-report/react/components/index.html +1 -1
  153. package/coverage/lcov-report/react/index.html +1 -1
  154. package/coverage/lcov-report/react/index.js.html +1 -1
  155. package/coverage/lcov-report/react/lib/Chevron.jsx.html +2 -2
  156. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +7 -4
  157. package/coverage/lcov-report/react/lib/index.html +5 -20
  158. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
  159. package/coverage/lcov-report/react/session/index.html +1 -1
  160. package/coverage/lcov-report/react/session/index.js.html +1 -1
  161. package/coverage/lcov-report/react/session/logout.js.html +1 -1
  162. package/coverage/lcov-report/react/session/refresh.js.html +1 -1
  163. package/coverage/lcov-report/react/session/ttl.js.html +1 -1
  164. package/coverage/lcov-report/session/index.html +20 -20
  165. package/coverage/lcov-report/session/index.js.html +1 -1
  166. package/coverage/lcov-report/session/logout.js.html +24 -15
  167. package/coverage/lcov-report/session/refresh.js.html +2 -2
  168. package/coverage/lcov-report/session/ttl.js.html +2 -2
  169. package/coverage/lcov.info +581 -577
  170. package/dist/browser.js +1 -1
  171. package/dist/index.js +1 -1
  172. package/dist/react/index.js +1 -1
  173. package/package.json +4 -4
  174. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -94
  175. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -146
  176. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -97
  177. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -97
  178. package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -832
  179. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -206
  180. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1084
  181. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -94
  182. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -460
  183. package/styles/components/_footer.scss +0 -593
  184. package/styles/components/_header.scss +0 -890
  185. package/styles/components/_sidebar.scss +0 -8
  186. package/styles/components/sidebar/_animations.scss +0 -38
  187. package/styles/components/sidebar/_cms.scss +0 -61
  188. package/styles/components/sidebar/_details.scss +0 -58
  189. package/styles/components/sidebar/_links.scss +0 -415
  190. package/styles/components/sidebar/_sidebar-animation.scss +0 -121
  191. package/styles/components/sidebar/_sidebar-tooltip.scss +0 -33
  192. package/styles/components/sidebar/_sidebar.scss +0 -141
  193. package/styles/components/sidebar/project-specific/_wi.scss +0 -42
  194. package/styles/qppds/components/_infotip-content.scss +0 -47
  195. package/styles/qppds/components/_spinner.scss +0 -46
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">54.54% </span>
26
+ <span class="strong">32.09% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>12/22</span>
28
+ <span class='fraction'>26/81</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/4</span>
35
+ <span class='fraction'>0/31</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/3</span>
42
+ <span class='fraction'>0/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">54.54% </span>
47
+ <span class="strong">32.91% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>12/22</span>
49
+ <span class='fraction'>26/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -114,7 +114,323 @@
114
114
  <a name='L49'></a><a href='#L49'>49</a>
115
115
  <a name='L50'></a><a href='#L50'>50</a>
116
116
  <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-yes">1x</span>
433
+ <span class="cline-any cline-yes">1x</span>
118
434
  <span class="cline-any cline-yes">1x</span>
119
435
  <span class="cline-any cline-yes">1x</span>
120
436
  <span class="cline-any cline-yes">1x</span>
@@ -152,7 +468,237 @@
152
468
  <span class="cline-any cline-neutral">&nbsp;</span>
153
469
  <span class="cline-any cline-neutral">&nbsp;</span>
154
470
  <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-yes">1x</span>
477
+ <span class="cline-any cline-no">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-no">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-yes">1x</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-yes">1x</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-yes">1x</span>
525
+ <span class="cline-any cline-no">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-no">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-yes">1x</span>
553
+ <span class="cline-any cline-no">&nbsp;</span>
554
+ <span class="cline-any cline-no">&nbsp;</span>
555
+ <span class="cline-any cline-no">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
558
+ <span class="cline-any cline-no">&nbsp;</span>
559
+ <span class="cline-any cline-no">&nbsp;</span>
560
+ <span class="cline-any cline-no">&nbsp;</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-yes">1x</span>
571
+ <span class="cline-any cline-no">&nbsp;</span>
572
+ <span class="cline-any cline-no">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
+ <span class="cline-any cline-neutral">&nbsp;</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-yes">1x</span>
583
+ <span class="cline-any cline-no">&nbsp;</span>
584
+ <span class="cline-any cline-no">&nbsp;</span>
585
+ <span class="cline-any cline-no">&nbsp;</span>
586
+ <span class="cline-any cline-no">&nbsp;</span>
587
+ <span class="cline-any cline-no">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-no">&nbsp;</span>
591
+ <span class="cline-any cline-no">&nbsp;</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-no">&nbsp;</span>
598
+ <span class="cline-any cline-no">&nbsp;</span>
599
+ <span class="cline-any cline-no">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-no">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-no">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-yes">1x</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-no">&nbsp;</span>
621
+ <span class="cline-any cline-no">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-neutral">&nbsp;</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-yes">1x</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-neutral">&nbsp;</span>
654
+ <span class="cline-any cline-neutral">&nbsp;</span>
655
+ <span class="cline-any cline-neutral">&nbsp;</span>
656
+ <span class="cline-any cline-neutral">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-neutral">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-yes">1x</span>
668
+ <span class="cline-any cline-no">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-neutral">&nbsp;</span>
678
+ <span class="cline-any cline-neutral">&nbsp;</span>
679
+ <span class="cline-any cline-neutral">&nbsp;</span>
680
+ <span class="cline-any cline-yes">1x</span>
681
+ <span class="cline-any cline-no">&nbsp;</span>
682
+ <span class="cline-any cline-no">&nbsp;</span>
683
+ <span class="cline-any cline-no">&nbsp;</span>
684
+ <span class="cline-any cline-no">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-no">&nbsp;</span>
687
+ <span class="cline-any cline-no">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-no">&nbsp;</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-neutral">&nbsp;</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
698
  <span class="cline-any cline-yes">1x</span>
699
+ <span class="cline-any cline-no">&nbsp;</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
702
  <span class="cline-any cline-neutral">&nbsp;</span>
157
703
  <span class="cline-any cline-neutral">&nbsp;</span>
158
704
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -165,7 +711,71 @@
165
711
  <span class="cline-any cline-neutral">&nbsp;</span>
166
712
  <span class="cline-any cline-neutral">&nbsp;</span>
167
713
  <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const submissionsUrl = '/user/submissions';
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-no">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-no">&nbsp;</span>
734
+ <span class="cline-any cline-no">&nbsp;</span>
735
+ <span class="cline-any cline-no">&nbsp;</span>
736
+ <span class="cline-any cline-neutral">&nbsp;</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-yes">1x</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import cookie from 'cookie';
759
+ import {
760
+ AccountHomeIcon,
761
+ DashboardIcon,
762
+ FacilityBasedPreviewIcon,
763
+ HardshipIcon,
764
+ HelpSupportIcon,
765
+ ManageUsersIcon,
766
+ MyApplicationsIcon,
767
+ MyTestDataIcon,
768
+ PaymentIcon,
769
+ PhysicianCompareIcon,
770
+ StarIcon,
771
+ TargetIcon,
772
+ IndividualReporting,
773
+ ManageDocumentsIcon,
774
+ AuthorContentIcon,
775
+ } from '../../lib/SvgComponents';
776
+ import { isReviewerRole } from './Content/SelectRole/utils';
777
+ &nbsp;
778
+ const submissionsUrl = '/user/submissions';
169
779
  const dashboardUrl = '/user/dashboard';
170
780
  const manageUrl = '/user/manage-access';
171
781
  const feedbackUrl = `${submissionsUrl}/feedback`;
@@ -173,6 +783,7 @@ const physicianCompareUrl = `${submissionsUrl}/doctors-clinicians-preview`;
173
783
  const reportsPortalUrl = `${submissionsUrl}/reports`;
174
784
  const facilityBasedPreviewBaseUrl = `${submissionsUrl}/facility-based-preview`;
175
785
  const viewingToolUrl = '/user/helpdesk-viewing-tool';
786
+ const contentMgrDashboardUrl = '/user/content-management';
176
787
  &nbsp;
177
788
  const performanceFeedbackUrl = <span class="fstat-no" title="function not covered" >(p</span>erformanceYear) =&gt; {
178
789
  <span class="cstat-no" title="statement not covered" > if (performanceYear) {</span>
@@ -203,6 +814,273 @@ const handleNavigation = <span class="fstat-no" title="function not covered" >(e
203
814
  });
204
815
  };
205
816
  &nbsp;
817
+ /**
818
+ * Load icon by url
819
+ * @param {string} url
820
+ * @returns svg icon
821
+ */
822
+ const getIcon = <span class="fstat-no" title="function not covered" >(u</span>rl, linkLabel) =&gt; {
823
+ const icons = <span class="cstat-no" title="statement not covered" >{</span>
824
+ [dashboardUrl]: DashboardIcon,
825
+ [feedbackUrl]: StarIcon,
826
+ [manageUrl]: ManageUsersIcon,
827
+ [physicianCompareUrl]: PhysicianCompareIcon,
828
+ [reportsPortalUrl]: HardshipIcon,
829
+ [submissionsUrl]: AccountHomeIcon,
830
+ [facilityBasedPreviewBaseUrl]: FacilityBasedPreviewIcon,
831
+ '/developers': HelpSupportIcon,
832
+ '/resources/help-and-support': HelpSupportIcon,
833
+ '/user/apm-incentive-payments': PaymentIcon,
834
+ '/user/applications': MyApplicationsIcon,
835
+ '/user/exception/#/landing': HardshipIcon,
836
+ '/user/targeted-review/#/landing': TargetIcon,
837
+ '/user/test-data': MyTestDataIcon,
838
+ '/user/self-nomination/#/landing': IndividualReporting,
839
+ '/user/reviewers': AccountHomeIcon,
840
+ '/reviewer/exception': HardshipIcon,
841
+ '/reviewer/targeted-review': TargetIcon,
842
+ '/self-nomination': IndividualReporting,
843
+ '/cases/needs-review': FacilityBasedPreviewIcon,
844
+ [contentMgrDashboardUrl]: AccountHomeIcon,
845
+ 'Manage Documents': ManageDocumentsIcon,
846
+ 'Author Content': AuthorContentIcon,
847
+ };
848
+ &nbsp;
849
+ <span class="cstat-no" title="statement not covered" > if (linkLabel) <span class="cstat-no" title="statement not covered" >return icons[linkLabel];</span></span>
850
+ <span class="cstat-no" title="statement not covered" > return icons[url];</span>
851
+ };
852
+ &nbsp;
853
+ const singleRoleContentMap = {
854
+ 'QPP Content Management - Author': 'contentManager',
855
+ 'QPP Content Management - Approver': 'contentManager',
856
+ 'QPP Content Management - Admin': 'contentManager',
857
+ 'QPP Front-end - Author': 'contentManager',
858
+ 'QPP Self-Nomination': 'internalReviewers',
859
+ 'QPP Targeted Review &amp; Exceptions': 'internalReviewers',
860
+ 'QPP Case Management - PIMMS Reviewer': 'internalReviewers',
861
+ 'QPP Case Management - ACO PAC Reviewer': 'internalReviewers',
862
+ 'QPP Case Management - CMS Reviewer': 'internalReviewers',
863
+ };
864
+ &nbsp;
865
+ const multiRoleContentMap = {
866
+ Reviewer: 'internalReviewers',
867
+ 'Content Manager': 'contentManager',
868
+ };
869
+ &nbsp;
870
+ const replaceDefaultContentMgrLinks = <span class="fstat-no" title="function not covered" >(d</span>efaultContent) =&gt; {
871
+ const host = <span class="cstat-no" title="statement not covered" >window.location.host;</span>
872
+ const updatedDefaultContent = <span class="cstat-no" title="statement not covered" >{</span>
873
+ ...defaultContent,
874
+ contentManager: [
875
+ defaultContent.contentManager.find(
876
+ <span class="fstat-no" title="function not covered" > (o</span>bj) =&gt; <span class="cstat-no" title="statement not covered" >obj.label === 'Dashboard Home'</span>
877
+ ),
878
+ {
879
+ url: `${host}.qpp.cms.gov/cm/`,
880
+ label: 'Manage Documents',
881
+ },
882
+ {
883
+ url: `${host}.qpp.cms.gov/content-management/`,
884
+ label: 'Author Content',
885
+ },
886
+ ],
887
+ };
888
+ <span class="cstat-no" title="statement not covered" > return updatedDefaultContent;</span>
889
+ };
890
+ &nbsp;
891
+ /**
892
+ * Load the side nav content for the given role
893
+ * @param {string} roleName role of given user from internalReviewerNames
894
+ * @param {object} navContent object of side nav links by role (levelOneContent &amp; defaultContent)
895
+ * @returns {array} returns an array of objects (side nav menu links) from levelOneContent
896
+ * || defaultContent
897
+ */
898
+ const loadSideNavContent = <span class="fstat-no" title="function not covered" >(r</span>oleName, navContent, isMultiRoleUser = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span> =&gt; {
899
+ const { levelOneContent, defaultContent } = <span class="cstat-no" title="statement not covered" >navContent;</span>
900
+ const updatedDefaultContent = <span class="cstat-no" title="statement not covered" >replaceDefaultContentMgrLinks(defaultContent);</span>
901
+ const roleContentMap = <span class="cstat-no" title="statement not covered" >isMultiRoleUser</span>
902
+ ? multiRoleContentMap
903
+ : singleRoleContentMap;
904
+ const contentByRole = <span class="cstat-no" title="statement not covered" >roleContentMap[roleName];</span>
905
+ <span class="cstat-no" title="statement not covered" > if (levelOneContent) {</span>
906
+ <span class="cstat-no" title="statement not covered" > return levelOneContent[contentByRole] || levelOneContent.default;</span>
907
+ }
908
+ <span class="cstat-no" title="statement not covered" > return updatedDefaultContent[contentByRole] || updatedDefaultContent.default;</span>
909
+ };
910
+ &nbsp;
911
+ /**
912
+ * Check if user is currently impersonating
913
+ * @param {string} docCookie document cookie
914
+ * @returns {boolean}
915
+ */
916
+ const isImpersonating = <span class="fstat-no" title="function not covered" >(d</span>ocCookie) =&gt; {
917
+ const parsedCookies = <span class="cstat-no" title="statement not covered" >cookie.parse(docCookie);</span>
918
+ <span class="cstat-no" title="statement not covered" > return (</span>
919
+ parsedCookies.qpp_can_impersonate &amp;&amp; parsedCookies.qpp_impersonated_user
920
+ );
921
+ };
922
+ &nbsp;
923
+ /**
924
+ * Check if user has multiple roles, used to display Select Role dropdown
925
+ * @param {string} docCookie document cookie
926
+ * @returns {boolean}
927
+ */
928
+ const isMultiRoleUser = <span class="fstat-no" title="function not covered" >(d</span>ocCookie) =&gt; {
929
+ const activeRoles = <span class="cstat-no" title="statement not covered" >new Set();</span>
930
+ const { qpp_cms_internal_authorized } = <span class="cstat-no" title="statement not covered" >cookie.parse(docCookie);</span>
931
+ let internalAuthz = <span class="cstat-no" title="statement not covered" >[];</span>
932
+ <span class="cstat-no" title="statement not covered" > if (qpp_cms_internal_authorized) {</span>
933
+ <span class="cstat-no" title="statement not covered" > internalAuthz = JSON.parse(qpp_cms_internal_authorized);</span>
934
+ }
935
+ // Filter out test internalCms authz
936
+ const filteredInternalAuthz = <span class="cstat-no" title="statement not covered" >internalAuthz.filter(<span class="fstat-no" title="function not covered" >(i</span>nternalAuth) =&gt; {</span>
937
+ <span class="cstat-no" title="statement not covered" > return (</span>
938
+ internalAuth !== 'Test internalCms Resource' &amp;&amp;
939
+ internalAuth !== 'Test internalCms Resource 2'
940
+ );
941
+ });
942
+ &nbsp;
943
+ <span class="cstat-no" title="statement not covered" > filteredInternalAuthz.forEach(<span class="fstat-no" title="function not covered" >(e</span>lement) =&gt; {</span>
944
+ <span class="cstat-no" title="statement not covered" > if (isReviewerRole(element)) {</span>
945
+ <span class="cstat-no" title="statement not covered" > return activeRoles.add('reviewer');</span>
946
+ }
947
+ <span class="cstat-no" title="statement not covered" > return activeRoles.add(element);</span>
948
+ });
949
+ &nbsp;
950
+ <span class="cstat-no" title="statement not covered" > return activeRoles.size &gt; 1;</span>
951
+ };
952
+ &nbsp;
953
+ /**
954
+ * Transform cookie values to permissions object
955
+ * @param {object} cookies parsed document.cookie values
956
+ * @returns {object}
957
+ */
958
+ const transformCookieValues = <span class="fstat-no" title="function not covered" >(c</span>ookies) =&gt; {
959
+ const {
960
+ qpp_can_impersonate,
961
+ qpp_has_authorizations,
962
+ user_has_apm_payments,
963
+ qpp_cms_internal_authorized,
964
+ qpp_ehr_authorized,
965
+ qpp_has_non_registry_authorizations,
966
+ } = <span class="cstat-no" title="statement not covered" >cookies;</span>
967
+ <span class="cstat-no" title="statement not covered" > return {</span>
968
+ canImpersonate: qpp_can_impersonate === 'true',
969
+ hasAuthorizations: qpp_has_authorizations === 'true',
970
+ hasApmPayments: user_has_apm_payments === 'true',
971
+ internalReviewerNames: qpp_cms_internal_authorized
972
+ ? JSON.parse(qpp_cms_internal_authorized)
973
+ : [],
974
+ ehrAuthorized: qpp_ehr_authorized === 'true',
975
+ hasNonRegistryAuthorizations:
976
+ qpp_has_non_registry_authorizations === 'true',
977
+ };
978
+ };
979
+ &nbsp;
980
+ const permissionsByRole = {
981
+ 'QPP User': {
982
+ canImpersonate: false,
983
+ hasAuthorizations: true,
984
+ hasApmPayments: true,
985
+ },
986
+ Reviewer: {
987
+ hasAuthorizations: false,
988
+ hasApmPaymentss: false,
989
+ },
990
+ 'Helpdesk Viewer': {
991
+ hasAuthorizations: false,
992
+ hasApmPayments: false,
993
+ hasNonRegistryAuthorizations: false,
994
+ internalReviewerNames: ['QPP Helpdesk'],
995
+ },
996
+ // Helpdesk role &amp;&amp; impersonating (use impersonated user authz values)
997
+ Impersonation: {
998
+ internalReviewerNames: ['QPP Helpdesk'],
999
+ },
1000
+ 'Content Manager': {
1001
+ hasAuthorizations: false,
1002
+ hasApmPaymentss: false,
1003
+ hasNonRegistryAuthorizations: false,
1004
+ },
1005
+ };
1006
+ &nbsp;
1007
+ /**
1008
+ * Return permissions by role
1009
+ * @param {string} selectedRole selected user role
1010
+ * @param {object} permissionValues default permission values from transformed parsed cookie
1011
+ * @returns {object}
1012
+ */
1013
+ const loadUserPermissionsByRole = <span class="fstat-no" title="function not covered" >(s</span>electedRole, permissionValues) =&gt; {
1014
+ <span class="cstat-no" title="statement not covered" > return {</span>
1015
+ ...permissionValues,
1016
+ ...permissionsByRole[selectedRole],
1017
+ };
1018
+ };
1019
+ &nbsp;
1020
+ /**
1021
+ * Helper fn to return user permissions/properties from cookies set on login
1022
+ * @param {string} docCookie cookie values set on login
1023
+ * @param {string} selectedRole string of selected role if user has multiple roles
1024
+ * @returns {object}
1025
+ */
1026
+ const loadUserPermissions = <span class="fstat-no" title="function not covered" >(d</span>ocCookie, selectedRole) =&gt; {
1027
+ const parsedCookies = <span class="cstat-no" title="statement not covered" >cookie.parse(docCookie);</span>
1028
+ const permissionValues = <span class="cstat-no" title="statement not covered" >transformCookieValues(parsedCookies);</span>
1029
+ const impersonating = <span class="cstat-no" title="statement not covered" >isImpersonating(docCookie);</span>
1030
+ const role = <span class="cstat-no" title="statement not covered" >impersonating ? 'Impersonation' : selectedRole;</span>
1031
+ &nbsp;
1032
+ <span class="cstat-no" title="statement not covered" > if (role) {</span>
1033
+ <span class="cstat-no" title="statement not covered" > return loadUserPermissionsByRole(role, permissionValues);</span>
1034
+ }
1035
+ &nbsp;
1036
+ <span class="cstat-no" title="statement not covered" > return permissionValues;</span>
1037
+ };
1038
+ &nbsp;
1039
+ /**
1040
+ * Return map of link conditionals based on user cookies for side nav
1041
+ * @param {object} userPermissions user permissions/properties derived from cookies set on login
1042
+ * @returns {object}
1043
+ */
1044
+ const getUrlConditionMap = <span class="fstat-no" title="function not covered" >(u</span>serPermissions) =&gt; {
1045
+ <span class="cstat-no" title="statement not covered" > return {</span>
1046
+ [dashboardUrl]: userPermissions.hasAuthorizations,
1047
+ [feedbackUrl]: userPermissions.hasAuthorizations,
1048
+ '/user/apm-incentive-payments': userPermissions.hasApmPayments,
1049
+ [physicianCompareUrl]: userPermissions.hasNonRegistryAuthorizations,
1050
+ [reportsPortalUrl]: userPermissions.hasAuthorizations,
1051
+ [facilityBasedPreviewBaseUrl]: userPermissions.hasAuthorizations,
1052
+ '/user/helpdesk-viewing-tool': userPermissions.canImpersonate,
1053
+ '/reviewer/exception': userPermissions.internalReviewerNames?.includes(
1054
+ 'QPP Targeted Review &amp; Exceptions'
1055
+ ),
1056
+ '/reviewer/targeted-review':
1057
+ userPermissions.internalReviewerNames?.includes(
1058
+ 'QPP Targeted Review &amp; Exceptions'
1059
+ ),
1060
+ '/self-nomination': userPermissions.internalReviewerNames?.includes(
1061
+ 'QPP Self-Nomination'
1062
+ ),
1063
+ &nbsp;
1064
+ '/cases/needs-review': userPermissions.internalReviewerNames?.some(<span class="fstat-no" title="function not covered" >(v</span>al) =&gt;
1065
+ <span class="cstat-no" title="statement not covered" > [</span>
1066
+ 'QPP Case Management - PIMMS Reviewer',
1067
+ 'QPP Case Management - ACO PAC Reviewer',
1068
+ 'QPP Case Management - CMS Reviewer',
1069
+ ].includes(val)
1070
+ ),
1071
+ &nbsp;
1072
+ // dev pre
1073
+ '/user/applications': userPermissions.ehrAuthorized,
1074
+ '/user/test-data': userPermissions.ehrAuthorized,
1075
+ };
1076
+ };
1077
+ &nbsp;
1078
+ const isImpersonationLink = <span class="fstat-no" title="function not covered" >(d</span>ocCookie, linkLabel) =&gt; {
1079
+ <span class="cstat-no" title="statement not covered" > if (!isImpersonating(docCookie)) <span class="cstat-no" title="statement not covered" >return;</span></span>
1080
+ const helpdeskLinks = <span class="cstat-no" title="statement not covered" >['Account Home', 'Manage Access', 'Help and Support'];</span>
1081
+ <span class="cstat-no" title="statement not covered" > return !helpdeskLinks.includes(linkLabel);</span>
1082
+ };
1083
+ &nbsp;
206
1084
  module.exports = {
207
1085
  submissionsUrl,
208
1086
  dashboardUrl,
@@ -215,6 +1093,13 @@ module.exports = {
215
1093
  reportsPortalUrl,
216
1094
  facilityBasedPreviewBaseUrl,
217
1095
  viewingToolUrl,
1096
+ loadUserPermissions,
1097
+ getUrlConditionMap,
1098
+ isMultiRoleUser,
1099
+ getIcon,
1100
+ isImpersonating,
1101
+ isImpersonationLink,
1102
+ loadSideNavContent,
218
1103
  };
219
1104
  &nbsp;</pre></td></tr></table></pre>
220
1105
 
@@ -223,7 +1108,7 @@ module.exports = {
223
1108
  <div class='footer quiet pad2 space-top1 center small'>
224
1109
  Code coverage generated by
225
1110
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
226
- at Fri Apr 29 2022 13:58:50 GMT-0400 (Eastern Daylight Time)
1111
+ at Tue Nov 29 2022 19:35:20 GMT-0800 (Pacific Standard Time)
227
1112
  </div>
228
1113
  <script src="../../prettify.js"></script>
229
1114
  <script>