sw2at-ui 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (387) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/Gemfile +21 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +19 -0
  6. data/Rakefile +51 -0
  7. data/VERSION +1 -0
  8. data/app/assets/images/swat/loading-green.gif +0 -0
  9. data/app/assets/javascripts/swat/.bowerrc +3 -0
  10. data/app/assets/javascripts/swat/app/app.coffee +38 -0
  11. data/app/assets/javascripts/swat/app/controllers/revision.coffee +25 -0
  12. data/app/assets/javascripts/swat/app/controllers/revisions.coffee +10 -0
  13. data/app/assets/javascripts/swat/app/controllers/root.coffee +8 -0
  14. data/app/assets/javascripts/swat/app/factories/response.coffee +9 -0
  15. data/app/assets/javascripts/swat/app/factories/revision_model.coffee +20 -0
  16. data/app/assets/javascripts/swat/app/services/revision.coffee +16 -0
  17. data/app/assets/javascripts/swat/app/services/test_case.coffee +8 -0
  18. data/app/assets/javascripts/swat/application.coffee +5 -0
  19. data/app/assets/javascripts/swat/bower.json +16 -0
  20. data/app/assets/javascripts/swat/bower_components/angular/angular-csp.css +21 -0
  21. data/app/assets/javascripts/swat/bower_components/angular/angular.js +28133 -0
  22. data/app/assets/javascripts/swat/bower_components/angular/angular.min.js +289 -0
  23. data/app/assets/javascripts/swat/bower_components/angular/index.js +2 -0
  24. data/app/assets/javascripts/swat/bower_components/angular-animate/angular-animate.js +2137 -0
  25. data/app/assets/javascripts/swat/bower_components/angular-animate/angular-animate.min.js +33 -0
  26. data/app/assets/javascripts/swat/bower_components/angular-aria/angular-aria.js +339 -0
  27. data/app/assets/javascripts/swat/bower_components/angular-aria/angular-aria.min.js +12 -0
  28. data/app/assets/javascripts/swat/bower_components/angular-bootstrap/ui-bootstrap-csp.css +6 -0
  29. data/app/assets/javascripts/swat/bower_components/angular-bootstrap/ui-bootstrap-tpls.js +4840 -0
  30. data/app/assets/javascripts/swat/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js +10 -0
  31. data/app/assets/javascripts/swat/bower_components/angular-bootstrap/ui-bootstrap.js +4461 -0
  32. data/app/assets/javascripts/swat/bower_components/angular-bootstrap/ui-bootstrap.min.js +9 -0
  33. data/app/assets/javascripts/swat/bower_components/angular-material/LICENSE.txt +21 -0
  34. data/app/assets/javascripts/swat/bower_components/angular-material/angular-material.css +6228 -0
  35. data/app/assets/javascripts/swat/bower_components/angular-material/angular-material.js +8602 -0
  36. data/app/assets/javascripts/swat/bower_components/angular-material/angular-material.min.css +6 -0
  37. data/app/assets/javascripts/swat/bower_components/angular-material/angular-material.min.js +277 -0
  38. data/app/assets/javascripts/swat/bower_components/angular-material/default-theme.css +394 -0
  39. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/backdrop/backdrop-default-theme.css +8 -0
  40. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/backdrop/backdrop.css +54 -0
  41. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/backdrop/backdrop.js +40 -0
  42. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet-default-theme.css +15 -0
  43. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet.css +161 -0
  44. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet.js +263 -0
  45. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/button/button-default-theme.css +49 -0
  46. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/button/button.css +134 -0
  47. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/button/button.js +101 -0
  48. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/card/card-default-theme.css +10 -0
  49. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/card/card.css +26 -0
  50. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/card/card.js +60 -0
  51. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/checkbox/checkbox-default-theme.css +38 -0
  52. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/checkbox/checkbox.css +78 -0
  53. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/checkbox/checkbox.js +135 -0
  54. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/content/content-default-theme.css +8 -0
  55. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/content/content.css +24 -0
  56. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/content/content.js +87 -0
  57. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/core/core.css +2736 -0
  58. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/core/core.js +3090 -0
  59. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/core/default-theme.js +1 -0
  60. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/dialog/dialog-default-theme.css +11 -0
  61. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/dialog/dialog.css +75 -0
  62. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/dialog/dialog.js +500 -0
  63. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/divider/divider-default-theme.css +8 -0
  64. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/divider/divider.css +12 -0
  65. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/divider/divider.js +50 -0
  66. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/icon/icon.css +24 -0
  67. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/icon/icon.js +52 -0
  68. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/input/input-default-theme.css +39 -0
  69. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/input/input.css +113 -0
  70. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/input/input.js +355 -0
  71. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/list/list.css +56 -0
  72. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/list/list.js +96 -0
  73. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/menu/menu.css +6 -0
  74. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/menu/menu.js +29 -0
  75. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/progressCircular/progressCircular-default-theme.css +35 -0
  76. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/progressCircular/progressCircular.css +1395 -0
  77. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/progressCircular/progressCircular.js +129 -0
  78. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/progressLinear/progressLinear-default-theme.css +26 -0
  79. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/progressLinear/progressLinear.css +366 -0
  80. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/progressLinear/progressLinear.js +130 -0
  81. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/radioButton/radioButton-default-theme.css +39 -0
  82. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/radioButton/radioButton.css +66 -0
  83. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/radioButton/radioButton.js +302 -0
  84. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/sidenav/sidenav-default-theme.css +8 -0
  85. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/sidenav/sidenav.css +86 -0
  86. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/sidenav/sidenav.js +320 -0
  87. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/slider/slider-default-theme.css +55 -0
  88. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/slider/slider.css +210 -0
  89. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/slider/slider.js +391 -0
  90. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/sticky/sticky.css +20 -0
  91. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/sticky/sticky.js +314 -0
  92. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/subheader/subheader-default-theme.css +15 -0
  93. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/subheader/subheader.css +62 -0
  94. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/subheader/subheader.js +89 -0
  95. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/swipe/swipe.js +79 -0
  96. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/switch/switch-default-theme.css +29 -0
  97. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/switch/switch.css +81 -0
  98. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/switch/switch.js +171 -0
  99. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/tabs/tabs-default-theme.css +34 -0
  100. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/tabs/tabs.css +171 -0
  101. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/tabs/tabs.js +1009 -0
  102. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/textField/textField-default-theme.css +29 -0
  103. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/textField/textField.css +72 -0
  104. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/textField/textField.js +145 -0
  105. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/toast/toast-default-theme.css +17 -0
  106. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/toast/toast.css +110 -0
  107. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/toast/toast.js +236 -0
  108. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/toolbar/toolbar-default-theme.css +17 -0
  109. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/toolbar/toolbar.css +69 -0
  110. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/toolbar/toolbar.js +161 -0
  111. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/tooltip/tooltip-default-theme.css +10 -0
  112. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/tooltip/tooltip.css +133 -0
  113. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/tooltip/tooltip.js +199 -0
  114. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/whiteframe/whiteframe.css +20 -0
  115. data/app/assets/javascripts/swat/bower_components/angular-material/modules/closure/whiteframe/whiteframe.js +17 -0
  116. data/app/assets/javascripts/swat/bower_components/angular-material/modules/css/angular-material-layout.css +2582 -0
  117. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/backdrop-default-theme.css +8 -0
  118. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/backdrop-default-theme.min.css +6 -0
  119. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/backdrop.css +54 -0
  120. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/backdrop.js +38 -0
  121. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/backdrop.min.css +6 -0
  122. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/backdrop.min.js +7 -0
  123. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/backdrop/bower.json +7 -0
  124. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bottomSheet-default-theme.css +15 -0
  125. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bottomSheet-default-theme.min.css +6 -0
  126. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.css +188 -0
  127. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.js +293 -0
  128. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.min.css +6 -0
  129. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.min.js +7 -0
  130. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/bottomSheet/bower.json +8 -0
  131. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/bower.json +7 -0
  132. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/button-default-theme.css +42 -0
  133. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/button-default-theme.min.css +6 -0
  134. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/button.css +132 -0
  135. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/button.js +94 -0
  136. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/button.min.css +6 -0
  137. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/button/button.min.js +7 -0
  138. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/bower.json +7 -0
  139. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/card-default-theme.css +10 -0
  140. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/card-default-theme.min.css +6 -0
  141. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/card.css +31 -0
  142. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/card.js +58 -0
  143. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/card.min.css +6 -0
  144. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/card/card.min.js +7 -0
  145. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/bower.json +7 -0
  146. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/checkbox-default-theme.css +38 -0
  147. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/checkbox-default-theme.min.css +6 -0
  148. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/checkbox.css +79 -0
  149. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/checkbox.js +133 -0
  150. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/checkbox.min.css +6 -0
  151. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/checkbox/checkbox.min.js +7 -0
  152. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/bower.json +7 -0
  153. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/content-default-theme.css +8 -0
  154. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/content-default-theme.min.css +6 -0
  155. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/content.css +24 -0
  156. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/content.js +60 -0
  157. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/content.min.css +6 -0
  158. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/content/content.min.js +7 -0
  159. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/core/bower.json +7 -0
  160. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/core/core.css +3067 -0
  161. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/core/core.js +2780 -0
  162. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/core/core.min.css +6 -0
  163. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/core/core.min.js +7 -0
  164. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/core/default-theme.js +1 -0
  165. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/bower.json +8 -0
  166. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/dialog-default-theme.css +11 -0
  167. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/dialog-default-theme.min.css +6 -0
  168. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/dialog.css +88 -0
  169. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/dialog.js +495 -0
  170. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/dialog.min.css +6 -0
  171. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/dialog/dialog.min.js +7 -0
  172. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/bower.json +7 -0
  173. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/divider-default-theme.css +8 -0
  174. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/divider-default-theme.min.css +6 -0
  175. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/divider.css +12 -0
  176. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/divider.js +48 -0
  177. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/divider.min.css +6 -0
  178. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/divider/divider.min.js +7 -0
  179. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/icon/bower.json +7 -0
  180. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/icon/icon.css +24 -0
  181. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/icon/icon.js +50 -0
  182. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/icon/icon.min.css +6 -0
  183. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/icon/icon.min.js +7 -0
  184. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/bower.json +7 -0
  185. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/input-default-theme.css +40 -0
  186. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/input-default-theme.min.css +6 -0
  187. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/input.css +102 -0
  188. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/input.js +333 -0
  189. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/input.min.css +6 -0
  190. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/input/input.min.js +7 -0
  191. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/list/bower.json +7 -0
  192. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/list/list.css +61 -0
  193. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/list/list.js +94 -0
  194. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/list/list.min.css +6 -0
  195. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/list/list.min.js +7 -0
  196. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/menu/bower.json +5 -0
  197. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/menu/menu.css +6 -0
  198. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/menu/menu.js +27 -0
  199. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/menu/menu.min.css +6 -0
  200. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/menu/menu.min.js +7 -0
  201. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/bower.json +7 -0
  202. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/progressCircular-default-theme.css +35 -0
  203. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/progressCircular-default-theme.min.css +6 -0
  204. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/progressCircular.css +1445 -0
  205. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/progressCircular.js +127 -0
  206. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/progressCircular.min.css +6 -0
  207. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressCircular/progressCircular.min.js +7 -0
  208. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/bower.json +7 -0
  209. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/progressLinear-default-theme.css +28 -0
  210. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/progressLinear-default-theme.min.css +6 -0
  211. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/progressLinear.css +368 -0
  212. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/progressLinear.js +128 -0
  213. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/progressLinear.min.css +6 -0
  214. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/progressLinear/progressLinear.min.js +7 -0
  215. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/bower.json +7 -0
  216. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/radioButton-default-theme.css +39 -0
  217. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/radioButton-default-theme.min.css +6 -0
  218. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/radioButton.css +67 -0
  219. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/radioButton.js +296 -0
  220. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/radioButton.min.css +6 -0
  221. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/radioButton/radioButton.min.js +7 -0
  222. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/bower.json +8 -0
  223. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/sidenav-default-theme.css +8 -0
  224. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/sidenav-default-theme.min.css +6 -0
  225. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/sidenav.css +90 -0
  226. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/sidenav.js +302 -0
  227. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/sidenav.min.css +6 -0
  228. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sidenav/sidenav.min.js +7 -0
  229. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/bower.json +7 -0
  230. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/slider-default-theme.css +55 -0
  231. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/slider-default-theme.min.css +6 -0
  232. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/slider.css +218 -0
  233. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/slider.js +411 -0
  234. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/slider.min.css +6 -0
  235. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/slider/slider.min.js +7 -0
  236. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sticky/bower.json +8 -0
  237. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sticky/sticky.css +20 -0
  238. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sticky/sticky.js +309 -0
  239. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sticky/sticky.min.css +6 -0
  240. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/sticky/sticky.min.js +7 -0
  241. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/bower.json +8 -0
  242. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/subheader-default-theme.css +15 -0
  243. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/subheader-default-theme.min.css +6 -0
  244. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/subheader.css +61 -0
  245. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/subheader.js +86 -0
  246. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/subheader.min.css +6 -0
  247. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/subheader/subheader.min.js +7 -0
  248. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/swipe/bower.json +5 -0
  249. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/swipe/swipe.js +213 -0
  250. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/swipe/swipe.min.js +7 -0
  251. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/bower.json +8 -0
  252. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/switch-default-theme.css +29 -0
  253. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/switch-default-theme.min.css +6 -0
  254. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/switch.css +77 -0
  255. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/switch.js +144 -0
  256. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/switch.min.css +6 -0
  257. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/switch/switch.min.js +7 -0
  258. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/bower.json +7 -0
  259. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/tabs-default-theme.css +34 -0
  260. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/tabs-default-theme.min.css +6 -0
  261. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/tabs.css +181 -0
  262. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/tabs.js +992 -0
  263. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/tabs.min.css +6 -0
  264. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tabs/tabs.min.js +7 -0
  265. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/bower.json +7 -0
  266. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/textField-default-theme.css +29 -0
  267. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/textField-default-theme.min.css +6 -0
  268. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/textField.css +76 -0
  269. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/textField.js +143 -0
  270. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/textField.min.css +6 -0
  271. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/textField/textField.min.js +7 -0
  272. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/bower.json +9 -0
  273. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/toast-default-theme.css +17 -0
  274. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/toast-default-theme.min.css +6 -0
  275. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/toast.css +115 -0
  276. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/toast.js +235 -0
  277. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/toast.min.css +6 -0
  278. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toast/toast.min.js +7 -0
  279. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/bower.json +8 -0
  280. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/toolbar-default-theme.css +17 -0
  281. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/toolbar-default-theme.min.css +6 -0
  282. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/toolbar.css +78 -0
  283. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/toolbar.js +158 -0
  284. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/toolbar.min.css +6 -0
  285. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/toolbar/toolbar.min.js +7 -0
  286. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/bower.json +7 -0
  287. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/tooltip-default-theme.css +10 -0
  288. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/tooltip-default-theme.min.css +6 -0
  289. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/tooltip.css +136 -0
  290. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/tooltip.js +197 -0
  291. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/tooltip.min.css +6 -0
  292. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/tooltip/tooltip.min.js +7 -0
  293. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/whiteframe/bower.json +5 -0
  294. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/whiteframe/whiteframe.css +20 -0
  295. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/whiteframe/whiteframe.js +15 -0
  296. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/whiteframe/whiteframe.min.css +6 -0
  297. data/app/assets/javascripts/swat/bower_components/angular-material/modules/js/whiteframe/whiteframe.min.js +7 -0
  298. data/app/assets/javascripts/swat/bower_components/angular-resource/angular-resource.js +668 -0
  299. data/app/assets/javascripts/swat/bower_components/angular-resource/angular-resource.min.js +13 -0
  300. data/app/assets/javascripts/swat/bower_components/angular-resource/index.js +2 -0
  301. data/app/assets/javascripts/swat/bower_components/angular-route/angular-route.js +991 -0
  302. data/app/assets/javascripts/swat/bower_components/angular-route/angular-route.min.js +15 -0
  303. data/app/assets/javascripts/swat/bower_components/angular-route/index.js +2 -0
  304. data/app/assets/javascripts/swat/bower_components/angular-ui-router/LICENSE.txt +21 -0
  305. data/app/assets/javascripts/swat/bower_components/angular-ui-router/api/angular-ui-router.d.ts +126 -0
  306. data/app/assets/javascripts/swat/bower_components/angular-ui-router/release/angular-ui-router.js +4370 -0
  307. data/app/assets/javascripts/swat/bower_components/angular-ui-router/release/angular-ui-router.min.js +7 -0
  308. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/common.js +292 -0
  309. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/resolve.js +252 -0
  310. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/state.js +1465 -0
  311. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/stateDirectives.js +285 -0
  312. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/stateFilters.js +39 -0
  313. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/templateFactory.js +110 -0
  314. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/urlMatcherFactory.js +1050 -0
  315. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/urlRouter.js +427 -0
  316. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/view.js +71 -0
  317. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/viewDirective.js +303 -0
  318. data/app/assets/javascripts/swat/bower_components/angular-ui-router/src/viewScroll.js +52 -0
  319. data/app/assets/javascripts/swat/bower_components/lodash/lodash.js +12235 -0
  320. data/app/assets/javascripts/swat/bower_components/lodash/lodash.min.js +98 -0
  321. data/app/assets/javascripts/swat/bower_components/ng-clip/.editorconfig +10 -0
  322. data/app/assets/javascripts/swat/bower_components/ng-clip/.gitignore +3 -0
  323. data/app/assets/javascripts/swat/bower_components/ng-clip/Gruntfile.js +96 -0
  324. data/app/assets/javascripts/swat/bower_components/ng-clip/dest/ng-clip.min.js +2 -0
  325. data/app/assets/javascripts/swat/bower_components/ng-clip/example/bootstrap-tooltip.html +49 -0
  326. data/app/assets/javascripts/swat/bower_components/ng-clip/example/index.html +68 -0
  327. data/app/assets/javascripts/swat/bower_components/ng-clip/example/ng-repeat.html +44 -0
  328. data/app/assets/javascripts/swat/bower_components/ng-clip/npm-debug.log +145 -0
  329. data/app/assets/javascripts/swat/bower_components/ng-clip/src/ngClip.js +84 -0
  330. data/app/assets/javascripts/swat/bower_components/zeroclipboard/dist/.jshintrc +70 -0
  331. data/app/assets/javascripts/swat/bower_components/zeroclipboard/dist/ZeroClipboard.Core.js +2017 -0
  332. data/app/assets/javascripts/swat/bower_components/zeroclipboard/dist/ZeroClipboard.Core.min.js +10 -0
  333. data/app/assets/javascripts/swat/bower_components/zeroclipboard/dist/ZeroClipboard.js +2581 -0
  334. data/app/assets/javascripts/swat/bower_components/zeroclipboard/dist/ZeroClipboard.min.js +10 -0
  335. data/app/assets/javascripts/swat/bower_components/zeroclipboard/dist/ZeroClipboard.swf +0 -0
  336. data/app/assets/javascripts/swat/bower_components.coffee +12 -0
  337. data/app/assets/stylesheets/swat/application.sass +59 -0
  338. data/app/assets/stylesheets/swat/default-theme.css +394 -0
  339. data/app/assets/stylesheets/swat/font-awesome.css +1801 -0
  340. data/app/assets/stylesheets/swat/fonts/FontAwesome.otf +0 -0
  341. data/app/assets/stylesheets/swat/fonts/fontawesome-webfont.eot +0 -0
  342. data/app/assets/stylesheets/swat/fonts/fontawesome-webfont.svg +565 -0
  343. data/app/assets/stylesheets/swat/fonts/fontawesome-webfont.ttf +0 -0
  344. data/app/assets/stylesheets/swat/fonts/fontawesome-webfont.woff +0 -0
  345. data/app/assets/stylesheets/swat/fonts/fontawesome-webfont.woff2 +0 -0
  346. data/app/assets/stylesheets/swat/swat_theme.sass +177 -0
  347. data/app/controllers/swat/api/revisions_controller.rb +27 -0
  348. data/app/controllers/swat/api/test_cases_controller.rb +20 -0
  349. data/app/controllers/swat/application_controller.rb +4 -0
  350. data/app/controllers/swat/info/states_controller.rb +12 -0
  351. data/app/controllers/swat/pages/base_pages_controller.rb +7 -0
  352. data/app/controllers/swat/pages/revisions_controller.rb +8 -0
  353. data/app/controllers/swat/revisions_controller.rb +4 -0
  354. data/app/helpers/swat/application_helper.rb +4 -0
  355. data/app/models/concerns/root_revision_ext.rb +14 -0
  356. data/app/models/full_revision.rb +88 -0
  357. data/app/models/revision.rb +84 -0
  358. data/app/models/revision_status_calculator.rb +98 -0
  359. data/app/models/test_case.rb +25 -0
  360. data/app/views/layouts/swat/application.slim +36 -0
  361. data/app/views/layouts/swat/page.slim +2 -0
  362. data/app/views/swat/application/index.slim +0 -0
  363. data/app/views/swat/pages/revisions/index.slim +25 -0
  364. data/app/views/swat/pages/revisions/show.slim +43 -0
  365. data/app/views/swat/shared/_footer.slim +5 -0
  366. data/app/views/swat/shared/_header.slim +9 -0
  367. data/bin/rails +12 -0
  368. data/config/routes.rb +38 -0
  369. data/fixtures/firebase_collection.rb +97 -0
  370. data/lib/sw2at-ui.rb +19 -0
  371. data/lib/swat/engine.rb +5 -0
  372. data/lib/swat/ui/config.rb +28 -0
  373. data/lib/swat/ui/rspec_commands.rb +191 -0
  374. data/lib/swat/ui/rspec_setup.rb +42 -0
  375. data/lib/swat/ui/stats_collector.rb +90 -0
  376. data/lib/swat/ui/version.rb +5 -0
  377. data/lib/tasks/swat_tasks.rake +36 -0
  378. data/spec/lib/commands_spec.rb +88 -0
  379. data/spec/models/calculator_spec.rb +130 -0
  380. data/spec/models/full_revision_spec.rb +263 -0
  381. data/spec/models/revision_spec.rb +59 -0
  382. data/spec/models/testcase_spec.rb +94 -0
  383. data/spec/spec_helper.rb +45 -0
  384. data/sw2at-ui.gemspec +465 -0
  385. data/test/helper.rb +34 -0
  386. data/test/test_sw2at-ui.rb +7 -0
  387. metadata +628 -0
@@ -0,0 +1,302 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.7.0-rc3
6
+ */
7
+ (function() {
8
+ 'use strict';
9
+
10
+ /**
11
+ * @ngdoc module
12
+ * @name material.components.sidenav
13
+ *
14
+ * @description
15
+ * A Sidenav QP component.
16
+ */
17
+ angular.module('material.components.sidenav', [
18
+ 'material.core',
19
+ 'material.components.backdrop'
20
+ ])
21
+ .factory('$mdSidenav', SidenavService )
22
+ .directive('mdSidenav', SidenavDirective)
23
+ .controller('$mdSidenavController', SidenavController);
24
+
25
+
26
+ /**
27
+ * @private
28
+ * @ngdoc service
29
+ * @name $mdSidenav
30
+ * @module material.components.sidenav
31
+ *
32
+ * @description
33
+ * $mdSidenav makes it easy to interact with multiple sidenavs
34
+ * in an app.
35
+ *
36
+ * @usage
37
+ *
38
+ * ```javascript
39
+ * // Toggle the given sidenav
40
+ * $mdSidenav(componentId).toggle();
41
+ *
42
+ * // Open the given sidenav
43
+ * $mdSidenav(componentId).open();
44
+ *
45
+ * // Close the given sidenav
46
+ * $mdSidenav(componentId).close();
47
+ * ```
48
+ */
49
+ function SidenavService($mdComponentRegistry, $q) {
50
+ return function(handle) {
51
+ var errorMsg = "SideNav '" + handle + "' is not available!";
52
+
53
+ // Lookup the controller instance for the specified sidNav instance
54
+ var instance = $mdComponentRegistry.get(handle);
55
+ if(!instance) {
56
+ $mdComponentRegistry.notFoundError(handle);
57
+ }
58
+
59
+ return {
60
+ isOpen: function() {
61
+ return instance && instance.isOpen();
62
+ },
63
+ toggle: function() {
64
+ return instance ? instance.toggle() : $q.reject(errorMsg);
65
+ },
66
+ open: function() {
67
+ return instance ? instance.open() : $q.reject(errorMsg);
68
+ },
69
+ close: function() {
70
+ return instance ? instance.close() : $q.reject(errorMsg);
71
+ }
72
+ };
73
+ };
74
+ }
75
+ SidenavService.$inject = ["$mdComponentRegistry", "$q"];
76
+
77
+ /**
78
+ * @ngdoc directive
79
+ * @name mdSidenav
80
+ * @module material.components.sidenav
81
+ * @restrict E
82
+ *
83
+ * @description
84
+ *
85
+ * A Sidenav component that can be opened and closed programatically.
86
+ *
87
+ * By default, upon opening it will slide out on top of the main content area.
88
+ *
89
+ * @usage
90
+ * <hljs lang="html">
91
+ * <div layout="row" ng-controller="MyController">
92
+ * <md-sidenav md-component-id="left" class="md-sidenav-left">
93
+ * Left Nav!
94
+ * </md-sidenav>
95
+ *
96
+ * <md-content>
97
+ * Center Content
98
+ * <md-button ng-click="openLeftMenu()">
99
+ * Open Left Menu
100
+ * </md-button>
101
+ * </md-content>
102
+ *
103
+ * <md-sidenav md-component-id="right"
104
+ * md-is-locked-open="$media('min-width: 333px')"
105
+ * class="md-sidenav-right">
106
+ * Right Nav!
107
+ * </md-sidenav>
108
+ * </div>
109
+ * </hljs>
110
+ *
111
+ * <hljs lang="js">
112
+ * var app = angular.module('myApp', ['ngMaterial']);
113
+ * app.controller('MyController', function($scope, $mdSidenav) {
114
+ * $scope.openLeftMenu = function() {
115
+ * $mdSidenav('left').toggle();
116
+ * };
117
+ * });
118
+ * </hljs>
119
+ *
120
+ * @param {expression=} md-is-open A model bound to whether the sidenav is opened.
121
+ * @param {string=} md-component-id componentId to use with $mdSidenav service.
122
+ * @param {expression=} md-is-locked-open When this expression evalutes to true,
123
+ * the sidenav 'locks open': it falls into the content's flow instead
124
+ * of appearing over it. This overrides the `is-open` attribute.
125
+ *
126
+ * A $media() function is exposed to the is-locked-open attribute, which
127
+ * can be given a media query or one of the `sm`, `gt-sm`, `md`, `gt-md`, `lg` or `gt-lg` presets.
128
+ * Examples:
129
+ *
130
+ * - `<md-sidenav md-is-locked-open="shouldLockOpen"></md-sidenav>`
131
+ * - `<md-sidenav md-is-locked-open="$media('min-width: 1000px')"></md-sidenav>`
132
+ * - `<md-sidenav md-is-locked-open="$media('sm')"></md-sidenav>` (locks open on small screens)
133
+ */
134
+ function SidenavDirective($timeout, $animate, $parse, $mdMedia, $mdConstant, $compile, $mdTheming, $q, $document) {
135
+ return {
136
+ restrict: 'E',
137
+ scope: {
138
+ isOpen: '=?mdIsOpen'
139
+ },
140
+ controller: '$mdSidenavController',
141
+ compile: function(element) {
142
+ element.addClass('md-closed');
143
+ element.attr('tabIndex', '-1');
144
+ return postLink;
145
+ }
146
+ };
147
+
148
+ /**
149
+ * Directive Post Link function...
150
+ */
151
+ function postLink(scope, element, attr, sidenavCtrl) {
152
+ var triggeringElement = null;
153
+ var promise = $q.when(true);
154
+
155
+ var isLockedOpenParsed = $parse(attr.mdIsLockedOpen);
156
+ var isLocked = function() {
157
+ return isLockedOpenParsed(scope.$parent, {
158
+ $media: $mdMedia
159
+ });
160
+ };
161
+ var backdrop = $compile(
162
+ '<md-backdrop class="md-sidenav-backdrop md-opaque ng-enter">'
163
+ )(scope);
164
+
165
+ element.on('$destroy', sidenavCtrl.destroy);
166
+ $mdTheming.inherit(backdrop, element);
167
+
168
+ scope.$watch(isLocked, updateIsLocked);
169
+ scope.$watch('isOpen', updateIsOpen);
170
+
171
+
172
+ // Publish special accessor for the Controller instance
173
+ sidenavCtrl.$toggleOpen = toggleOpen;
174
+
175
+ /**
176
+ * Toggle the DOM classes to indicate `locked`
177
+ * @param isLocked
178
+ */
179
+ function updateIsLocked(isLocked, oldValue) {
180
+ if (isLocked === oldValue) {
181
+ element.toggleClass('md-locked-open', !!isLocked);
182
+ } else {
183
+ $animate[isLocked ? 'addClass' : 'removeClass'](element, 'md-locked-open');
184
+ }
185
+ backdrop.toggleClass('md-locked-open', !!isLocked);
186
+ }
187
+
188
+ /**
189
+ * Toggle the SideNav view and attach/detach listeners
190
+ * @param isOpen
191
+ */
192
+ function updateIsOpen(isOpen) {
193
+ var parent = element.parent();
194
+
195
+ parent[isOpen ? 'on' : 'off']('keydown', onKeyDown);
196
+ backdrop[isOpen ? 'on' : 'off']('click', close);
197
+
198
+ if ( isOpen ) {
199
+ // Capture upon opening..
200
+ triggeringElement = $document[0].activeElement;
201
+ }
202
+
203
+ return promise = $q.all([
204
+ $animate[isOpen ? 'enter' : 'leave'](backdrop, parent),
205
+ $animate[isOpen ? 'removeClass' : 'addClass'](element, 'md-closed').then(function() {
206
+ // If we opened, and haven't closed again before the animation finished
207
+ if (scope.isOpen) {
208
+ element.focus();
209
+ }
210
+ })
211
+ ]);
212
+ }
213
+
214
+ /**
215
+ * Toggle the sideNav view and publish a promise to be resolved when
216
+ * the view animation finishes.
217
+ *
218
+ * @param isOpen
219
+ * @returns {*}
220
+ */
221
+ function toggleOpen( isOpen ) {
222
+ if (scope.isOpen == isOpen ) {
223
+
224
+ return $q.when(true);
225
+
226
+ } else {
227
+ var deferred = $q.defer();
228
+
229
+ // Toggle value to force an async `updateIsOpen()` to run
230
+ scope.isOpen = isOpen;
231
+
232
+ $timeout(function() {
233
+
234
+ // When the current `updateIsOpen()` animation finishes
235
+ promise.then(function(result){
236
+
237
+ if ( !scope.isOpen ) {
238
+ // reset focus to originating element (if available) upon close
239
+ triggeringElement && triggeringElement.focus();
240
+ triggeringElement = null;
241
+ }
242
+
243
+ deferred.resolve(result);
244
+ });
245
+
246
+ },0,false);
247
+
248
+ return deferred.promise;
249
+ }
250
+ }
251
+
252
+ /**
253
+ * Auto-close sideNav when the `escape` key is pressed.
254
+ * @param evt
255
+ */
256
+ function onKeyDown(ev) {
257
+ var isEscape = (ev.keyCode === $mdConstant.KEY_CODE.ESCAPE);
258
+ return isEscape ? close(ev) : $q.when(true);
259
+ }
260
+
261
+ /**
262
+ * With backdrop `clicks` or `escape` key-press, immediately
263
+ * apply the CSS close transition... Then notify the controller
264
+ * to close() and perform its own actions.
265
+ */
266
+ function close(ev) {
267
+ ev.preventDefault();
268
+ ev.stopPropagation();
269
+
270
+ return sidenavCtrl.close();
271
+ }
272
+
273
+ }
274
+ }
275
+ SidenavDirective.$inject = ["$timeout", "$animate", "$parse", "$mdMedia", "$mdConstant", "$compile", "$mdTheming", "$q", "$document"];
276
+
277
+ /*
278
+ * @private
279
+ * @ngdoc controller
280
+ * @name SidenavController
281
+ * @module material.components.sidenav
282
+ *
283
+ */
284
+ function SidenavController($scope, $element, $attrs, $mdComponentRegistry, $q) {
285
+
286
+ var self = this;
287
+
288
+ // Use Default internal method until overridden by directive postLink
289
+
290
+ self.$toggleOpen = function() { return $q.when($scope.isOpen); };
291
+ self.isOpen = function() { return !!$scope.isOpen; };
292
+ self.open = function() { return self.$toggleOpen( true ); };
293
+ self.close = function() { return self.$toggleOpen( false ); };
294
+ self.toggle = function() { return self.$toggleOpen( !$scope.isOpen ); };
295
+
296
+ self.destroy = $mdComponentRegistry.register(self, $attrs.mdComponentId);
297
+ }
298
+ SidenavController.$inject = ["$scope", "$element", "$attrs", "$mdComponentRegistry", "$q"];
299
+
300
+
301
+
302
+ })();
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.7.0-rc3
6
+ */md-sidenav{position:absolute;width:304px;min-width:304px;bottom:0;z-index:60;background-color:#fff;overflow:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:0s all;transition:0s all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{-webkit-transition:all .4s cubic-bezier(0.25,.8,.25,1);transition:all .4s cubic-bezier(0.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}md-sidenav.md-locked-open{width:304px;min-width:304px}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{-webkit-transition:width .3s cubic-bezier(0.55,0,.55,.2),min-width .3s cubic-bezier(0.55,0,.55,.2);transition:width .3s cubic-bezier(0.55,0,.55,.2),min-width .3s cubic-bezier(0.55,0,.55,.2);width:0;min-width:0}md-sidenav.md-closed.md-locked-open-add{width:0;min-width:0;-webkit-transform:translate3d(0%,0,0);transform:translate3d(0%,0,0)}md-sidenav.md-closed.md-locked-open-add-active{-webkit-transition:width .3s cubic-bezier(0.55,0,.55,.2),min-width .3s cubic-bezier(0.55,0,.55,.2);transition:width .3s cubic-bezier(0.55,0,.55,.2),min-width .3s cubic-bezier(0.55,0,.55,.2);width:304px;min-width:304px;-webkit-transform:translate3d(0%,0,0);transform:translate3d(0%,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;-webkit-transform:translate3d(0%,0,0);transform:translate3d(0%,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.md-sidenav-right.md-closed{-webkit-transform:translate3d(0%,0,0);transform:translate3d(0%,0,0)}
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.7.0-rc3
6
+ */
7
+ !function(){"use strict";function e(e,n){return function(t){var o="SideNav '"+t+"' is not available!",r=e.get(t);return r||e.notFoundError(t),{isOpen:function(){return r&&r.isOpen()},toggle:function(){return r?r.toggle():n.reject(o)},open:function(){return r?r.open():n.reject(o)},close:function(){return r?r.close():n.reject(o)}}}}function n(e,n,t,o,r,i,c,s,a){function d(d,l,u,p){function m(e,t){e===t?l.toggleClass("md-locked-open",!!e):n[e?"addClass":"removeClass"](l,"md-locked-open"),y.toggleClass("md-locked-open",!!e)}function f(e){var t=l.parent();return t[e?"on":"off"]("keydown",g),y[e?"on":"off"]("click",v),e&&(O=a[0].activeElement),C=s.all([n[e?"enter":"leave"](y,t),n[e?"removeClass":"addClass"](l,"md-closed").then(function(){d.isOpen&&l.focus()})])}function $(n){if(d.isOpen==n)return s.when(!0);var t=s.defer();return d.isOpen=n,e(function(){C.then(function(e){d.isOpen||(O&&O.focus(),O=null),t.resolve(e)})},0,!1),t.promise}function g(e){var n=e.keyCode===r.KEY_CODE.ESCAPE;return n?v(e):s.when(!0)}function v(e){return e.preventDefault(),e.stopPropagation(),p.close()}var O=null,C=s.when(!0),h=t(u.mdIsLockedOpen),k=function(){return h(d.$parent,{$media:o})},y=i('<md-backdrop class="md-sidenav-backdrop md-opaque ng-enter">')(d);l.on("$destroy",p.destroy),c.inherit(y,l),d.$watch(k,m),d.$watch("isOpen",f),p.$toggleOpen=$}return{restrict:"E",scope:{isOpen:"=?mdIsOpen"},controller:"$mdSidenavController",compile:function(e){return e.addClass("md-closed"),e.attr("tabIndex","-1"),d}}}function t(e,n,t,o,r){var i=this;i.$toggleOpen=function(){return r.when(e.isOpen)},i.isOpen=function(){return!!e.isOpen},i.open=function(){return i.$toggleOpen(!0)},i.close=function(){return i.$toggleOpen(!1)},i.toggle=function(){return i.$toggleOpen(!e.isOpen)},i.destroy=o.register(i,t.mdComponentId)}angular.module("material.components.sidenav",["material.core","material.components.backdrop"]).factory("$mdSidenav",e).directive("mdSidenav",n).controller("$mdSidenavController",t),e.$inject=["$mdComponentRegistry","$q"],n.$inject=["$timeout","$animate","$parse","$mdMedia","$mdConstant","$compile","$mdTheming","$q","$document"],t.$inject=["$scope","$element","$attrs","$mdComponentRegistry","$q"]}();
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "angular-material-slider",
3
+ "version": "0.7.0-rc3",
4
+ "dependencies": {
5
+ "angular-material-core": "0.7.0-rc3"
6
+ }
7
+ }
@@ -0,0 +1,55 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.7.0-rc3
6
+ */
7
+ md-slider.md-THEME_NAME-theme .md-track {
8
+ background-color: '{{foreground-3}}'; }
9
+ md-slider.md-THEME_NAME-theme .md-track-ticks {
10
+ background-color: '{{foreground-4}}'; }
11
+ md-slider.md-THEME_NAME-theme .md-focus-thumb {
12
+ background-color: '{{foreground-2}}'; }
13
+ md-slider.md-THEME_NAME-theme .md-focus-ring {
14
+ border-color: '{{foreground-4}}'; }
15
+ md-slider.md-THEME_NAME-theme .md-disabled-thumb {
16
+ border-color: '{{background-hue-3}}'; }
17
+ md-slider.md-THEME_NAME-theme.md-min .md-thumb:after {
18
+ background-color: '{{background-hue-3}}'; }
19
+ md-slider.md-THEME_NAME-theme .md-track.md-track-fill {
20
+ background-color: '{{primary-color}}'; }
21
+ md-slider.md-THEME_NAME-theme .md-thumb:after {
22
+ border-color: '{{primary-color}}';
23
+ background-color: '{{primary-color}}'; }
24
+ md-slider.md-THEME_NAME-theme .md-sign {
25
+ background-color: '{{primary-color}}'; }
26
+ md-slider.md-THEME_NAME-theme .md-sign:after {
27
+ border-top-color: '{{primary-color}}'; }
28
+ md-slider.md-THEME_NAME-theme .md-thumb-text {
29
+ color: '{{primary-contrast}}'; }
30
+ md-slider.md-THEME_NAME-theme.md-warn .md-track-fill {
31
+ background-color: '{{warn-color}}'; }
32
+ md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after {
33
+ border-color: '{{warn-color}}';
34
+ background-color: '{{warn-color}}'; }
35
+ md-slider.md-THEME_NAME-theme.md-warn .md-sign {
36
+ background-color: '{{warn-color}}'; }
37
+ md-slider.md-THEME_NAME-theme.md-warn .md-sign:after {
38
+ border-top-color: '{{warn-color}}'; }
39
+ md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text {
40
+ color: '{{warn-contrast}}'; }
41
+ md-slider.md-THEME_NAME-theme.md-accent .md-track-fill {
42
+ background-color: '{{accent-color}}'; }
43
+ md-slider.md-THEME_NAME-theme.md-accent .md-thumb:after {
44
+ border-color: '{{accent-color}}';
45
+ background-color: '{{accent-color}}'; }
46
+ md-slider.md-THEME_NAME-theme.md-accent .md-sign {
47
+ background-color: '{{accent-color}}'; }
48
+ md-slider.md-THEME_NAME-theme.md-accent .md-sign:after {
49
+ border-top-color: '{{accent-color}}'; }
50
+ md-slider.md-THEME_NAME-theme.md-accent .md-thumb-text {
51
+ color: '{{accent-contrast}}'; }
52
+ md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after {
53
+ border-color: '{{foreground-3}}'; }
54
+ md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after {
55
+ background-color: '{{foreground-3}}'; }
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.7.0-rc3
6
+ */md-slider.md-THEME_NAME-theme .md-track{background-color:'{{foreground-3}}'}md-slider.md-THEME_NAME-theme .md-track-ticks{background-color:'{{foreground-4}}'}md-slider.md-THEME_NAME-theme .md-focus-thumb{background-color:'{{foreground-2}}'}md-slider.md-THEME_NAME-theme .md-focus-ring{border-color:'{{foreground-4}}'}md-slider.md-THEME_NAME-theme .md-disabled-thumb{border-color:'{{background-hue-3}}'}md-slider.md-THEME_NAME-theme.md-min .md-thumb:after{background-color:'{{background-hue-3}}'}md-slider.md-THEME_NAME-theme .md-track.md-track-fill{background-color:'{{primary-color}}'}md-slider.md-THEME_NAME-theme .md-thumb:after{border-color:'{{primary-color}}';background-color:'{{primary-color}}'}md-slider.md-THEME_NAME-theme .md-sign{background-color:'{{primary-color}}'}md-slider.md-THEME_NAME-theme .md-sign:after{border-top-color:'{{primary-color}}'}md-slider.md-THEME_NAME-theme .md-thumb-text{color:'{{primary-contrast}}'}md-slider.md-THEME_NAME-theme.md-warn .md-track-fill{background-color:'{{warn-color}}'}md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after{border-color:'{{warn-color}}';background-color:'{{warn-color}}'}md-slider.md-THEME_NAME-theme.md-warn .md-sign{background-color:'{{warn-color}}'}md-slider.md-THEME_NAME-theme.md-warn .md-sign:after{border-top-color:'{{warn-color}}'}md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text{color:'{{warn-contrast}}'}md-slider.md-THEME_NAME-theme.md-accent .md-track-fill{background-color:'{{accent-color}}'}md-slider.md-THEME_NAME-theme.md-accent .md-thumb:after{border-color:'{{accent-color}}';background-color:'{{accent-color}}'}md-slider.md-THEME_NAME-theme.md-accent .md-sign{background-color:'{{accent-color}}'}md-slider.md-THEME_NAME-theme.md-accent .md-sign:after{border-top-color:'{{accent-color}}'}md-slider.md-THEME_NAME-theme.md-accent .md-thumb-text{color:'{{accent-contrast}}'}md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after{border-color:'{{foreground-3}}'}md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after{background-color:'{{foreground-3}}'}
@@ -0,0 +1,218 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.7.0-rc3
6
+ */
7
+ @-webkit-keyframes sliderFocusThumb {
8
+ 0% {
9
+ opacity: 0;
10
+ -webkit-transform: scale(0);
11
+ transform: scale(0); }
12
+
13
+ 50% {
14
+ -webkit-transform: scale(1);
15
+ transform: scale(1);
16
+ opacity: 1; }
17
+
18
+ 100% {
19
+ opacity: 0; } }
20
+
21
+ @keyframes sliderFocusThumb {
22
+ 0% {
23
+ opacity: 0;
24
+ -webkit-transform: scale(0);
25
+ transform: scale(0); }
26
+
27
+ 50% {
28
+ -webkit-transform: scale(1);
29
+ transform: scale(1);
30
+ opacity: 1; }
31
+
32
+ 100% {
33
+ opacity: 0; } }
34
+
35
+ md-slider {
36
+ height: 48px;
37
+ position: relative;
38
+ display: block;
39
+ margin-left: 4px;
40
+ margin-right: 4px;
41
+ /**
42
+ * Track
43
+ */
44
+ /**
45
+ * Slider thumb
46
+ */
47
+ /* The sign that's focused in discrete mode */
48
+ /**
49
+ * The border/background that comes in when focused in non-discrete mode
50
+ */
51
+ /* Don't animate left/right while panning */ }
52
+ md-slider .md-track-container {
53
+ width: 100%;
54
+ position: absolute;
55
+ top: 23px;
56
+ height: 2px; }
57
+ md-slider .md-track {
58
+ position: absolute;
59
+ left: 0;
60
+ right: 0;
61
+ height: 100%; }
62
+ md-slider .md-track-fill {
63
+ -webkit-transition: width 0.05s linear;
64
+ transition: width 0.05s linear; }
65
+ md-slider .md-track-ticks {
66
+ position: absolute;
67
+ left: 0;
68
+ right: 0;
69
+ height: 100%; }
70
+ md-slider .md-thumb-container {
71
+ position: absolute;
72
+ left: 0;
73
+ top: 0;
74
+ -webkit-transform: translate3d(0, 0, 0);
75
+ transform: translate3d(0, 0, 0);
76
+ -webkit-transition: -webkit-transform 0.1s linear;
77
+ transition: transform 0.1s linear; }
78
+ md-slider .md-thumb {
79
+ z-index: 1;
80
+ position: absolute;
81
+ left: -19px;
82
+ top: 5px;
83
+ width: 38px;
84
+ height: 38px;
85
+ border-radius: 38px;
86
+ -webkit-transform: scale(0.5);
87
+ transform: scale(0.5);
88
+ -webkit-transition: all 0.1s linear;
89
+ transition: all 0.1s linear; }
90
+ md-slider .md-thumb:after {
91
+ content: '';
92
+ position: absolute;
93
+ left: 3px;
94
+ top: 3px;
95
+ width: 32px;
96
+ height: 32px;
97
+ border-radius: 32px;
98
+ border: 3px solid; }
99
+ md-slider .md-sign {
100
+ /* Center the children (slider-thumb-text) */
101
+ display: -webkit-box;
102
+ display: -webkit-flex;
103
+ display: -ms-flexbox;
104
+ display: flex;
105
+ -webkit-box-align: center;
106
+ -webkit-align-items: center;
107
+ -ms-flex-align: center;
108
+ align-items: center;
109
+ -webkit-box-pack: center;
110
+ -webkit-justify-content: center;
111
+ -ms-flex-pack: center;
112
+ justify-content: center;
113
+ position: absolute;
114
+ left: -14px;
115
+ top: -20px;
116
+ width: 28px;
117
+ height: 28px;
118
+ border-radius: 28px;
119
+ -webkit-transform: scale(0.4) translate3d(0, 70px, 0);
120
+ transform: scale(0.4) translate3d(0, 70px, 0);
121
+ -webkit-transition: all 0.2s ease-in-out;
122
+ transition: all 0.2s ease-in-out;
123
+ /* The arrow pointing down under the sign */ }
124
+ md-slider .md-sign:after {
125
+ position: absolute;
126
+ content: '';
127
+ left: 0px;
128
+ border-radius: 16px;
129
+ top: 19px;
130
+ border-left: 14px solid transparent;
131
+ border-right: 14px solid transparent;
132
+ border-top: 16px solid;
133
+ opacity: 0;
134
+ -webkit-transform: translate3d(0, -8px, 0);
135
+ transform: translate3d(0, -8px, 0);
136
+ -webkit-transition: all 0.2s ease-in-out;
137
+ transition: all 0.2s ease-in-out; }
138
+ md-slider .md-sign .md-thumb-text {
139
+ z-index: 1;
140
+ font-size: 12px;
141
+ font-weight: bold; }
142
+ md-slider .md-focus-thumb {
143
+ position: absolute;
144
+ left: -24px;
145
+ top: 0px;
146
+ width: 48px;
147
+ height: 48px;
148
+ border-radius: 48px;
149
+ display: none;
150
+ opacity: 0;
151
+ background-color: #C0C0C0;
152
+ -webkit-animation: sliderFocusThumb 0.4s linear;
153
+ animation: sliderFocusThumb 0.4s linear; }
154
+ md-slider .md-focus-ring {
155
+ position: absolute;
156
+ left: -24px;
157
+ top: 0px;
158
+ width: 48px;
159
+ height: 48px;
160
+ border-radius: 48px;
161
+ border: 2px solid #D6D6D6;
162
+ background-color: transparent;
163
+ -webkit-transform: scale(0);
164
+ transform: scale(0);
165
+ -webkit-transition: all 0.2s linear;
166
+ transition: all 0.2s linear; }
167
+ md-slider .md-disabled-thumb {
168
+ position: absolute;
169
+ left: -22px;
170
+ top: 2px;
171
+ width: 44px;
172
+ height: 44px;
173
+ border-radius: 44px;
174
+ -webkit-transform: scale(0.35);
175
+ transform: scale(0.35);
176
+ border: 6px solid;
177
+ display: none; }
178
+ md-slider.md-min .md-thumb:after {
179
+ background-color: white; }
180
+ md-slider.md-min .md-sign {
181
+ opacity: 0; }
182
+ md-slider:focus {
183
+ outline: none; }
184
+ md-slider.panning .md-thumb-container, md-slider.panning .md-track-fill {
185
+ -webkit-transition: none;
186
+ transition: none; }
187
+ md-slider:not([md-discrete]) {
188
+ /* Hide the sign and ticks in non-discrete mode */ }
189
+ md-slider:not([md-discrete]) .md-track-ticks, md-slider:not([md-discrete]) .md-sign {
190
+ display: none; }
191
+ md-slider:not([md-discrete]):not([disabled]):hover .md-thumb {
192
+ -webkit-transform: scale(0.6);
193
+ transform: scale(0.6); }
194
+ md-slider:not([md-discrete]):not([disabled]):focus .md-focus-thumb, md-slider:not([md-discrete]):not([disabled]).active .md-focus-thumb {
195
+ display: block; }
196
+ md-slider:not([md-discrete]):not([disabled]):focus .md-focus-ring, md-slider:not([md-discrete]):not([disabled]).active .md-focus-ring {
197
+ -webkit-transform: scale(1);
198
+ transform: scale(1); }
199
+ md-slider:not([md-discrete]):not([disabled]):focus .md-thumb, md-slider:not([md-discrete]):not([disabled]).active .md-thumb {
200
+ -webkit-transform: scale(0.85);
201
+ transform: scale(0.85); }
202
+ md-slider[md-discrete] {
203
+ /* Hide the focus thumb in discrete mode */ }
204
+ md-slider[md-discrete] .md-focus-thumb, md-slider[md-discrete] .md-focus-ring {
205
+ display: none; }
206
+ md-slider[md-discrete]:not([disabled]):focus .md-sign, md-slider[md-discrete]:not([disabled]):focus .md-sign:after, md-slider[md-discrete]:not([disabled]).active .md-sign, md-slider[md-discrete]:not([disabled]).active .md-sign:after {
207
+ opacity: 1;
208
+ -webkit-transform: translate3d(0, 0, 0) scale(1);
209
+ transform: translate3d(0, 0, 0) scale(1); }
210
+ md-slider[disabled] .md-track-fill {
211
+ display: none; }
212
+ md-slider[disabled] .md-sign {
213
+ display: none; }
214
+ md-slider[disabled] .md-thumb {
215
+ -webkit-transform: scale(0.35);
216
+ transform: scale(0.35); }
217
+ md-slider[disabled] .md-disabled-thumb {
218
+ display: block; }