bootstrap-generators 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/.rvmrc +1 -0
  2. data/README.md +128 -22
  3. data/Rakefile +59 -0
  4. data/bootstrap-generators.gemspec +1 -1
  5. data/lib/bootstrap/generators/version.rb +1 -1
  6. data/lib/generators/bootstrap/install/install_generator.rb +1 -0
  7. data/lib/generators/bootstrap/install/templates/assets/stylesheets/bootstrap-variables.css.less +98 -0
  8. data/lib/generators/bootstrap/install/templates/assets/stylesheets/bootstrap-variables.css.scss +99 -0
  9. data/lib/generators/bootstrap/install/templates/assets/stylesheets/fluid.css.less +3 -100
  10. data/lib/generators/bootstrap/install/templates/assets/stylesheets/fluid.css.scss +4 -4
  11. data/lib/generators/bootstrap/install/templates/assets/stylesheets/hero.css +1 -0
  12. data/lib/generators/bootstrap/install/templates/assets/stylesheets/hero.css.less +4 -100
  13. data/lib/generators/bootstrap/install/templates/assets/stylesheets/hero.css.scss +5 -4
  14. data/lib/generators/bootstrap/install/templates/config/initializers/simple_form.rb +23 -22
  15. data/lib/generators/bootstrap/install/templates/form_builders/simple_form/_form.html.erb +4 -7
  16. data/lib/generators/bootstrap/install/templates/form_builders/simple_form/_form.html.haml +4 -6
  17. data/lib/generators/bootstrap/install/templates/layouts/fluid.html.erb +3 -2
  18. data/lib/generators/bootstrap/install/templates/layouts/fluid.html.haml +3 -2
  19. data/lib/generators/bootstrap/install/templates/layouts/hero.html.erb +15 -7
  20. data/lib/generators/bootstrap/install/templates/layouts/hero.html.haml +16 -10
  21. data/test/lib/generators/bootstrap/install_generator_test.rb +2 -0
  22. data/vendor/assets/javascripts/bootstrap-alert.js +8 -5
  23. data/vendor/assets/javascripts/bootstrap-button.js +5 -3
  24. data/vendor/assets/javascripts/bootstrap-carousel.js +5 -2
  25. data/vendor/assets/javascripts/bootstrap-collapse.js +2 -2
  26. data/vendor/assets/javascripts/bootstrap-dropdown.js +2 -2
  27. data/vendor/assets/javascripts/bootstrap-modal.js +6 -5
  28. data/vendor/assets/javascripts/bootstrap-popover.js +2 -2
  29. data/vendor/assets/javascripts/bootstrap-scrollspy.js +2 -2
  30. data/vendor/assets/javascripts/bootstrap-tab.js +2 -2
  31. data/vendor/assets/javascripts/bootstrap-tooltip.js +2 -2
  32. data/vendor/assets/javascripts/bootstrap-transition.js +3 -3
  33. data/vendor/assets/javascripts/bootstrap-typeahead.js +2 -2
  34. data/vendor/assets/stylesheets/less/bootstrap.less +1 -1
  35. data/vendor/assets/stylesheets/less/breadcrumbs.less +1 -1
  36. data/vendor/assets/stylesheets/less/button-groups.less +2 -1
  37. data/vendor/assets/stylesheets/less/buttons.less +25 -7
  38. data/vendor/assets/stylesheets/less/code.less +13 -0
  39. data/vendor/assets/stylesheets/less/dropdowns.less +1 -2
  40. data/vendor/assets/stylesheets/less/forms.less +48 -41
  41. data/vendor/assets/stylesheets/less/labels.less +23 -7
  42. data/vendor/assets/stylesheets/less/mixins.less +78 -25
  43. data/vendor/assets/stylesheets/less/modals.less +11 -0
  44. data/vendor/assets/stylesheets/less/navbar.less +11 -4
  45. data/vendor/assets/stylesheets/less/navs.less +20 -11
  46. data/vendor/assets/stylesheets/less/reset.less +1 -1
  47. data/vendor/assets/stylesheets/less/responsive.less +9 -5
  48. data/vendor/assets/stylesheets/less/sprites.less +7 -5
  49. data/vendor/assets/stylesheets/less/tables.less +14 -3
  50. data/vendor/assets/stylesheets/less/thumbnails.less +2 -2
  51. data/vendor/assets/stylesheets/less/type.less +3 -2
  52. data/vendor/assets/stylesheets/less/variables.less +15 -7
  53. data/vendor/assets/stylesheets/scss/accordion.scss +28 -0
  54. data/vendor/assets/stylesheets/scss/alerts.scss +70 -0
  55. data/vendor/assets/stylesheets/scss/bootstrap.scss +62 -0
  56. data/vendor/assets/stylesheets/scss/breadcrumbs.scss +22 -0
  57. data/vendor/assets/stylesheets/scss/button-groups.scss +148 -0
  58. data/vendor/assets/stylesheets/scss/buttons.scss +183 -0
  59. data/vendor/assets/stylesheets/scss/carousel.scss +121 -0
  60. data/vendor/assets/stylesheets/scss/close.scss +18 -0
  61. data/vendor/assets/stylesheets/scss/code.scss +57 -0
  62. data/vendor/assets/stylesheets/scss/component-animations.scss +18 -0
  63. data/vendor/assets/stylesheets/scss/dropdowns.scss +130 -0
  64. data/vendor/assets/stylesheets/scss/forms.scss +522 -0
  65. data/vendor/assets/stylesheets/scss/grid.scss +8 -0
  66. data/vendor/assets/stylesheets/scss/hero-unit.scss +20 -0
  67. data/vendor/assets/stylesheets/scss/labels.scss +32 -0
  68. data/vendor/assets/stylesheets/scss/layouts.scss +17 -0
  69. data/vendor/assets/stylesheets/scss/mixins.scss +579 -0
  70. data/vendor/assets/stylesheets/scss/modals.scss +83 -0
  71. data/vendor/assets/stylesheets/scss/navbar.scss +299 -0
  72. data/vendor/assets/stylesheets/scss/navs.scss +353 -0
  73. data/vendor/assets/stylesheets/scss/pager.scss +30 -0
  74. data/vendor/assets/stylesheets/scss/pagination.scss +55 -0
  75. data/vendor/assets/stylesheets/scss/popovers.scss +49 -0
  76. data/vendor/assets/stylesheets/scss/progress-bars.scss +95 -0
  77. data/vendor/assets/stylesheets/scss/reset.scss +126 -0
  78. data/vendor/assets/stylesheets/scss/responsive.scss +327 -0
  79. data/vendor/assets/stylesheets/scss/scaffolding.scss +29 -0
  80. data/vendor/assets/stylesheets/scss/sprites.scss +158 -0
  81. data/vendor/assets/stylesheets/scss/tables.scss +150 -0
  82. data/vendor/assets/stylesheets/scss/thumbnails.scss +35 -0
  83. data/vendor/assets/stylesheets/scss/tooltip.scss +35 -0
  84. data/vendor/assets/stylesheets/scss/type.scss +218 -0
  85. data/vendor/assets/stylesheets/scss/utilities.scss +23 -0
  86. data/vendor/assets/stylesheets/scss/variables.scss +107 -0
  87. data/vendor/assets/stylesheets/scss/wells.scss +17 -0
  88. metadata +49 -11
@@ -3,12 +3,13 @@
3
3
  %head
4
4
  %meta{:charset => "utf-8"}
5
5
  %title Bootstrap, from Twitter
6
+ %meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}
6
7
  %meta{:content => "", :name => "description"}
7
8
  %meta{:content => "", :name => "author"}
8
9
 
9
- / Le HTML5 shim, for IE6-8 support of HTML elements
10
+ / Le HTML5 shim, for IE6-8 support of HTML5 elements
10
11
  /[if lt IE 9]
11
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
+ <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
13
  = stylesheet_link_tag "application"
13
14
  = javascript_include_tag "application"
14
15
  = csrf_meta_tags
@@ -16,18 +17,23 @@
16
17
  .navbar.navbar-fixed-top
17
18
  .navbar-inner
18
19
  .container
20
+ %a.btn.btn-navbar{:data => {:toggle => "collapse", :target => ".nav-collapse"} }
21
+ %span.icon-bar
22
+ %span.icon-bar
23
+ %span.icon-bar
19
24
  = link_to "Project name", "#", :class => "brand"
20
- %ul.nav
21
- %li.active
22
- %a{:href => "#"} Home
23
- %li
24
- %a{:href => "#about"} About
25
- %li
26
- %a{:href => "#contact"} Contact
25
+ .nav-collapse
26
+ %ul.nav
27
+ %li.active
28
+ %a{:href => "#"} Home
29
+ %li
30
+ %a{:href => "#about"} About
31
+ %li
32
+ %a{:href => "#contact"} Contact
27
33
  .container
28
34
  - flash.each do |name, msg|
29
35
  = content_tag :div, :class => "alert #{name == :error ? "alert-error" : "alert-success" }" do
30
- %a.close{:href => "#", :"data-dismiss" => "alert"} ×
36
+ %a.close{:href => "#", :data => {:dismiss => "alert"} } ×
31
37
  = msg
32
38
  = yield
33
39
  %hr
@@ -56,12 +56,14 @@ class Bootstrap::Generators::InstallGeneratorTest < ::Rails::Generators::TestCas
56
56
  run_generator %w(--stylesheet-engine scss)
57
57
 
58
58
  assert_file "app/assets/stylesheets/bootstrap-generators.css.scss"
59
+ assert_file "app/assets/stylesheets/bootstrap-variables.css.scss"
59
60
  end
60
61
 
61
62
  test "should copy less files" do
62
63
  run_generator %w(--stylesheet-engine less)
63
64
 
64
65
  assert_file "app/assets/stylesheets/bootstrap-generators.css.less"
66
+ assert_file "app/assets/stylesheets/bootstrap-variables.css.less"
65
67
  end
66
68
 
67
69
  test "should create erb layout" do
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-alert.js v2.0.0
2
+ * bootstrap-alert.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#alerts
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -51,11 +51,14 @@
51
51
 
52
52
  $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
53
53
 
54
- $parent.removeClass('in')
54
+ $parent
55
+ .trigger('close')
56
+ .removeClass('in')
55
57
 
56
58
  function removeElement() {
57
- $parent.remove()
58
- $parent.trigger('closed')
59
+ $parent
60
+ .trigger('closed')
61
+ .remove()
59
62
  }
60
63
 
61
64
  $.support.transition && $parent.hasClass('fade') ?
@@ -88,4 +91,4 @@
88
91
  $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
89
92
  })
90
93
 
91
- }( window.jQuery )
94
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-button.js v2.0.0
2
+ * bootstrap-button.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#buttons
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -91,8 +91,10 @@
91
91
 
92
92
  $(function () {
93
93
  $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
94
- $(e.target).button('toggle')
94
+ var $btn = $(e.target)
95
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
96
+ $btn.button('toggle')
95
97
  })
96
98
  })
97
99
 
98
- }( window.jQuery )
100
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-carousel.js v2.0.0
2
+ * bootstrap-carousel.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#carousel
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -61,6 +61,7 @@
61
61
 
62
62
  , pause: function () {
63
63
  clearInterval(this.interval)
64
+ this.interval = null
64
65
  return this
65
66
  }
66
67
 
@@ -82,6 +83,8 @@
82
83
  , fallback = type == 'next' ? 'first' : 'last'
83
84
  , that = this
84
85
 
86
+ if (!$next.length) return
87
+
85
88
  this.sliding = true
86
89
 
87
90
  isCycling && this.pause()
@@ -151,4 +154,4 @@
151
154
  })
152
155
  })
153
156
 
154
- }( window.jQuery )
157
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-collapse.js v2.0.0
2
+ * bootstrap-collapse.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#collapse
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -133,4 +133,4 @@
133
133
  })
134
134
  })
135
135
 
136
- }( window.jQuery )
136
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-dropdown.js v2.0.0
2
+ * bootstrap-dropdown.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -89,4 +89,4 @@
89
89
  $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
90
90
  })
91
91
 
92
- }( window.jQuery )
92
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =========================================================
2
- * bootstrap-modal.js v2.0.0
2
+ * bootstrap-modal.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#modals
4
4
  * =========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -26,7 +26,7 @@
26
26
  * ====================== */
27
27
 
28
28
  var Modal = function ( content, options ) {
29
- this.options = $.extend({}, $.fn.modal.defaults, options)
29
+ this.options = options
30
30
  this.$element = $(content)
31
31
  .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
32
32
  }
@@ -177,16 +177,17 @@
177
177
  return this.each(function () {
178
178
  var $this = $(this)
179
179
  , data = $this.data('modal')
180
- , options = typeof option == 'object' && option
180
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
181
181
  if (!data) $this.data('modal', (data = new Modal(this, options)))
182
182
  if (typeof option == 'string') data[option]()
183
- else data.show()
183
+ else if (options.show) data.show()
184
184
  })
185
185
  }
186
186
 
187
187
  $.fn.modal.defaults = {
188
188
  backdrop: true
189
189
  , keyboard: true
190
+ , show: true
190
191
  }
191
192
 
192
193
  $.fn.modal.Constructor = Modal
@@ -206,4 +207,4 @@
206
207
  })
207
208
  })
208
209
 
209
- }( window.jQuery )
210
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-popover.js v2.0.0
2
+ * bootstrap-popover.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#popovers
4
4
  * ===========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -92,4 +92,4 @@
92
92
  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
93
93
  })
94
94
 
95
- }( window.jQuery )
95
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-scrollspy.js v2.0.0
2
+ * bootstrap-scrollspy.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -122,4 +122,4 @@
122
122
  })
123
123
  })
124
124
 
125
- }( window.jQuery )
125
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ========================================================
2
- * bootstrap-tab.js v2.0.0
2
+ * bootstrap-tab.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tabs
4
4
  * ========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -127,4 +127,4 @@
127
127
  })
128
128
  })
129
129
 
130
- }( window.jQuery )
130
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-tooltip.js v2.0.0
2
+ * bootstrap-tooltip.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
4
4
  * Inspired by the original jQuery.tipsy by Jason Frame
5
5
  * ===========================================================
@@ -267,4 +267,4 @@
267
267
  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
268
268
  }
269
269
 
270
- }( window.jQuery )
270
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ===================================================
2
- * bootstrap-transition.js v2.0.0
2
+ * bootstrap-transition.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#transitions
4
4
  * ===================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -47,5 +47,5 @@
47
47
  })()
48
48
 
49
49
  })
50
-
51
- }( window.jQuery )
50
+
51
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-typeahead.js v2.0.0
2
+ * bootstrap-typeahead.js v2.0.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#typeahead
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -268,4 +268,4 @@
268
268
  })
269
269
  })
270
270
 
271
- }( window.jQuery )
271
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap v2.0.0
2
+ * Bootstrap v2.0.1
3
3
  *
4
4
  * Copyright 2012 Twitter, Inc
5
5
  * Licensed under the Apache License v2.0
@@ -9,7 +9,7 @@
9
9
  .border-radius(3px);
10
10
  .box-shadow(inset 0 1px 0 @white);
11
11
  li {
12
- display: inline;
12
+ display: inline-block;
13
13
  text-shadow: 0 1px 0 @white;
14
14
  }
15
15
  .divider {
@@ -133,7 +133,8 @@
133
133
  .btn-primary,
134
134
  .btn-danger,
135
135
  .btn-info,
136
- .btn-success {
136
+ .btn-success,
137
+ .btn-inverse {
137
138
  .caret {
138
139
  border-top-color: @white;
139
140
  .opacity(75);
@@ -9,12 +9,14 @@
9
9
  .btn {
10
10
  display: inline-block;
11
11
  padding: 4px 10px 4px;
12
+ margin-bottom: 0; // For input.btn
12
13
  font-size: @baseFontSize;
13
14
  line-height: @baseLineHeight;
14
15
  color: @grayDark;
15
16
  text-align: center;
16
17
  text-shadow: 0 1px 1px rgba(255,255,255,.75);
17
- #gradient > .vertical-three-colors(@white, @white, 25%, darken(@white, 10%)); // Don't use .gradientbar() here since it does a three-color gradient
18
+ vertical-align: middle;
19
+ .buttonBackground(@white, darken(@white, 10%));
18
20
  border: 1px solid #ccc;
19
21
  border-bottom-color: #bbb;
20
22
  .border-radius(4px);
@@ -23,6 +25,7 @@
23
25
  cursor: pointer;
24
26
 
25
27
  // Give IE7 some love
28
+ .reset-filter();
26
29
  .ie7-restore-left-whitespace();
27
30
  }
28
31
 
@@ -51,7 +54,6 @@
51
54
  .box-shadow(@shadow);
52
55
  background-color: darken(@white, 10%);
53
56
  background-color: darken(@white, 15%) e("\9");
54
- color: rgba(0,0,0,.5);
55
57
  outline: 0;
56
58
  }
57
59
 
@@ -76,7 +78,7 @@
76
78
  line-height: normal;
77
79
  .border-radius(5px);
78
80
  }
79
- .btn-large .icon {
81
+ .btn-large [class^="icon-"] {
80
82
  margin-top: 1px;
81
83
  }
82
84
 
@@ -86,10 +88,17 @@
86
88
  font-size: @baseFontSize - 2px;
87
89
  line-height: @baseLineHeight - 2px;
88
90
  }
89
- .btn-small .icon {
91
+ .btn-small [class^="icon-"] {
90
92
  margin-top: -1px;
91
93
  }
92
94
 
95
+ // Mini
96
+ .btn-mini {
97
+ padding: 2px 6px;
98
+ font-size: @baseFontSize - 2px;
99
+ line-height: @baseLineHeight - 4px;
100
+ }
101
+
93
102
 
94
103
  // Alternate buttons
95
104
  // --------------------------------------------------
@@ -105,7 +114,9 @@
105
114
  .btn-success,
106
115
  .btn-success:hover,
107
116
  .btn-info,
108
- .btn-info:hover {
117
+ .btn-info:hover,
118
+ .btn-inverse,
119
+ .btn-inverse:hover {
109
120
  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
110
121
  color: @white;
111
122
  }
@@ -114,7 +125,8 @@
114
125
  .btn-warning.active,
115
126
  .btn-danger.active,
116
127
  .btn-success.active,
117
- .btn-info.active {
128
+ .btn-info.active,
129
+ .btn-dark.active {
118
130
  color: rgba(255,255,255,.75);
119
131
  }
120
132
 
@@ -139,6 +151,10 @@
139
151
  .btn-info {
140
152
  .buttonBackground(#5bc0de, #2f96b4);
141
153
  }
154
+ // Inverse appears as dark gray
155
+ .btn-inverse {
156
+ .buttonBackground(#454545, #262626);
157
+ }
142
158
 
143
159
 
144
160
  // Cross-browser Jank
@@ -146,8 +162,10 @@
146
162
 
147
163
  button.btn,
148
164
  input[type="submit"].btn {
165
+
166
+ // Firefox 3.6 only I believe
149
167
  &::-moz-focus-inner {
150
- padding: 0;
168
+ padding: 0;
151
169
  border: 0;
152
170
  }
153
171
 
@@ -11,12 +11,16 @@ pre {
11
11
  color: @grayDark;
12
12
  .border-radius(3px);
13
13
  }
14
+
15
+ // Inline code
14
16
  code {
15
17
  padding: 3px 4px;
16
18
  color: #d14;
17
19
  background-color: #f7f7f9;
18
20
  border: 1px solid #e1e1e8;
19
21
  }
22
+
23
+ // Blocks of code
20
24
  pre {
21
25
  display: block;
22
26
  padding: (@baseLineHeight - 1) / 2;
@@ -30,6 +34,7 @@ pre {
30
34
  white-space: pre;
31
35
  white-space: pre-wrap;
32
36
  word-break: break-all;
37
+ word-wrap: break-word;
33
38
 
34
39
  // Make prettyprint styles more spaced out for readability
35
40
  &.prettyprint {
@@ -39,6 +44,14 @@ pre {
39
44
  // Account for some code outputs that place code tags in pre tags
40
45
  code {
41
46
  padding: 0;
47
+ color: inherit;
42
48
  background-color: transparent;
49
+ border: 0;
43
50
  }
44
51
  }
52
+
53
+ // Enable scrollable blocks of code
54
+ .pre-scrollable {
55
+ max-height: 340px;
56
+ overflow-y: scroll;
57
+ }