mockuper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "shoulda", ">= 0"
10
+ gem "rdoc", "~> 3.12"
11
+ gem "bundler"
12
+ gem "jeweler", "~> 1.8.3"
13
+ gem "rcov", ">= 0"
14
+ gem "thor"
15
+ end
@@ -0,0 +1,31 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ git (1.2.5)
5
+ jeweler (1.8.3)
6
+ bundler (~> 1.0)
7
+ git (>= 1.2.5)
8
+ rake
9
+ rdoc
10
+ json (1.7.3)
11
+ rake (0.9.2.2)
12
+ rcov (1.0.0)
13
+ rdoc (3.12)
14
+ json (~> 1.4)
15
+ shoulda (3.0.1)
16
+ shoulda-context (~> 1.0.0)
17
+ shoulda-matchers (~> 1.0.0)
18
+ shoulda-context (1.0.0)
19
+ shoulda-matchers (1.0.0)
20
+ thor (0.14.6)
21
+
22
+ PLATFORMS
23
+ ruby
24
+
25
+ DEPENDENCIES
26
+ bundler
27
+ jeweler (~> 1.8.3)
28
+ rcov
29
+ rdoc (~> 3.12)
30
+ shoulda
31
+ thor
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Edmagne Lira dos Santos
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
File without changes
@@ -0,0 +1,19 @@
1
+ = mockuper
2
+
3
+ Description goes here.
4
+
5
+ == Contributing to mockuper
6
+
7
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
8
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
9
+ * Fork the project.
10
+ * Start a feature/bugfix branch.
11
+ * Commit and push until you are happy with your contribution.
12
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2012 Edmagne Lira dos Santos. See LICENSE.txt for
18
+ further details.
19
+
@@ -0,0 +1,57 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+
16
+ Jeweler::Tasks.new do |gem|
17
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
18
+ gem.name = "mockuper"
19
+ gem.homepage = "http://github.com/edmagne/mockuper"
20
+ gem.license = "MIT"
21
+ gem.summary = "Mockuper"
22
+ gem.description = "Easy way to generate mockups"
23
+ gem.email = "edmagne@yahoo.com.br"
24
+ gem.authors = ["Edmagne Lira dos Santos"]
25
+ # dependencies defined in Gemfile
26
+
27
+ gem.executables = ['mockuper']
28
+
29
+ end
30
+ Jeweler::RubygemsDotOrgTasks.new
31
+
32
+ require 'rake/testtask'
33
+ Rake::TestTask.new(:test) do |test|
34
+ test.libs << 'lib' << 'test'
35
+ test.pattern = 'test/**/test_*.rb'
36
+ test.verbose = true
37
+ end
38
+
39
+ require 'rcov/rcovtask'
40
+ Rcov::RcovTask.new do |test|
41
+ test.libs << 'test'
42
+ test.pattern = 'test/**/test_*.rb'
43
+ test.verbose = true
44
+ test.rcov_opts << '--exclude "gems/*"'
45
+ end
46
+
47
+ task :default => :test
48
+
49
+ require 'rdoc/task'
50
+ Rake::RDocTask.new do |rdoc|
51
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
52
+
53
+ rdoc.rdoc_dir = 'rdoc'
54
+ rdoc.title = "mockuper #{version}"
55
+ rdoc.rdoc_files.include('README*')
56
+ rdoc.rdoc_files.include('lib/**/*.rb')
57
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+ defaults = File.expand_path(File.dirname(__FILE__) + '/../defaults')
5
+ templates_path = File.expand_path(File.dirname(__FILE__) + '/../templates')
6
+ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
7
+
8
+ require "#{lib}/mockuper.rb"
9
+
10
+ valid_templates = ["c-f", "c-rb", "h-c-c-f", "h-c-f", "h-c-rb-f", "h-c", "h-clb-c-f", "h-crb-c-f", "h-lb-c-f", "h-rb-c-f", "lb-c", "lb-h-c-f", "rb-h-c-f"]
11
+ valid_generators = ["new", "add_template", "list_templates"]
12
+ args = ARGV.dup
13
+ generator = args[0]
14
+
15
+ if generator and valid_generators.include?(generator)
16
+ if generator == "new"
17
+ source_name = args[1]
18
+ if source_name
19
+ puts "Creating mockup..."
20
+ Mockuper::create_source(source_name, defaults)
21
+ puts "Mockup \"#{source_name}\" successfully created"
22
+ else
23
+ print "you must type a valid name"
24
+ end
25
+ elsif generator == "add_template"
26
+ template_name = args[1]
27
+ source_path = args[2]
28
+
29
+ if source_path.nil?
30
+ puts "you must type a valid mockup path"
31
+ elsif not valid_templates.include?(template_name)
32
+ puts "you must type a valid template"
33
+ else
34
+ puts "Adding template..."
35
+ Mockuper::add_template(source_path, template_name, templates_path)
36
+ puts "Template \"#{template_name}\" successfully added"
37
+ end
38
+ elsif generator == "list_templates"
39
+ puts valid_templates.join("\n")
40
+ end
41
+ else
42
+ print "you must type a valid generator"
43
+ end
@@ -0,0 +1,62 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
5
+ <title>Testes</title>
6
+ <script src="../jQuery.js"></script>
7
+ <script src="core/js/mockuper.js"></script>
8
+ <style>
9
+ div.even {
10
+ background-color: #DDDDDD;
11
+ }
12
+ div.menu {
13
+ background-color: #CCCCCC;
14
+ }
15
+ div.img {
16
+ display: block;
17
+ }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <img></img>
22
+ <img id="img1" data-placeholder="200x300"></img>
23
+ <img class="img" data-placeholder="300x900"></img>
24
+ <div id="menu23"></div>
25
+ <div id="list"></div>
26
+ <script>
27
+ (function($) {
28
+
29
+ mockuper.includeTemplateInto('menu', '#menu23');
30
+
31
+ mockuper.people.getNames(function(){
32
+ for (i in mockuper.people.names) {
33
+ $('#list').append($('<div></div>').html(mockuper.people.names[i]).addClass('even'));
34
+ }
35
+ });
36
+
37
+ mockuper.people.getNames(function() {
38
+ for (i in mockuper.people.names) {
39
+ $('#list').append($('<div></div>').html(mockuper.people.names[i]));
40
+ }
41
+ },{array: [1, 0, 4]}
42
+ );
43
+
44
+ mockuper.people.getNames(function() {
45
+ for (i in mockuper.people.names) {
46
+ $('#list').append($('<div></div>').html(mockuper.people.names[i]).addClass('even'));
47
+ }
48
+ },{length: 3}
49
+ );
50
+
51
+ mockuper.people.getNames(
52
+ function() {
53
+ for (i in mockuper.people.names) {
54
+ $('#list').append($('<div></div>').html(mockuper.people.names[i]));
55
+ }
56
+ },{random: true,length: 3,}
57
+ );
58
+
59
+ })(jQuery);
60
+ </script>
61
+ </body>
62
+ </html>
@@ -0,0 +1,10 @@
1
+ /* ############################# */
2
+ /* ######### CSS RESET ######### */
3
+ a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,dialog,div,dl,dt,em,embed,fieldset,figcaption,figure,font,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,meter,nav,object,ol,output,p,pre,progress,q,rp,rt,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video,xmp{border:0;margin:0;padding:0;font-size:100%}html,body{height:100%}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}b,strong{font-weight:bold}img{color:transparent;font-size:0;vertical-align:middle;-ms-interpolation-mode:bicubic}ol,ul{list-style:none}li{display:list-item}table{border-collapse:collapse;border-spacing:0}th,td,caption{font-weight:normal;vertical-align:top;text-align:left}q{quotes:none}q:before,q:after{content:'';content:none}sub,sup,small{font-size:75%}sub,sup{line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}svg{overflow:hidden}
4
+
5
+ /* ################################## */
6
+ /* ######### 960 12 COLUMNS ######### */
7
+ body{min-width:960px}.container_12{margin-left:auto;margin-right:auto;width:960px}.grid_1,.grid_2,.grid_3,.grid_4,.grid_5,.grid_6,.grid_7,.grid_8,.grid_9,.grid_10,.grid_11,.grid_12{display:inline;float:left;margin-left:10px;margin-right:10px}.push_1,.pull_1,.push_2,.pull_2,.push_3,.pull_3,.push_4,.pull_4,.push_5,.pull_5,.push_6,.pull_6,.push_7,.pull_7,.push_8,.pull_8,.push_9,.pull_9,.push_10,.pull_10,.push_11,.pull_11{position:relative}.alpha{margin-left:0}.omega{margin-right:0}.container_12 .grid_1{width:60px}.container_12 .grid_2{width:140px}.container_12 .grid_3{width:220px}.container_12 .grid_4{width:300px}.container_12 .grid_5{width:380px}.container_12 .grid_6{width:460px}.container_12 .grid_7{width:540px}.container_12 .grid_8{width:620px}.container_12 .grid_9{width:700px}.container_12 .grid_10{width:780px}.container_12 .grid_11{width:860px}.container_12 .grid_12{width:940px}.container_12 .prefix_1{padding-left:80px}.container_12 .prefix_2{padding-left:160px}.container_12 .prefix_3{padding-left:240px}.container_12 .prefix_4{padding-left:320px}.container_12 .prefix_5{padding-left:400px}.container_12 .prefix_6{padding-left:480px}.container_12 .prefix_7{padding-left:560px}.container_12 .prefix_8{padding-left:640px}.container_12 .prefix_9{padding-left:720px}.container_12 .prefix_10{padding-left:800px}.container_12 .prefix_11{padding-left:880px}.container_12 .suffix_1{padding-right:80px}.container_12 .suffix_2{padding-right:160px}.container_12 .suffix_3{padding-right:240px}.container_12 .suffix_4{padding-right:320px}.container_12 .suffix_5{padding-right:400px}.container_12 .suffix_6{padding-right:480px}.container_12 .suffix_7{padding-right:560px}.container_12 .suffix_8{padding-right:640px}.container_12 .suffix_9{padding-right:720px}.container_12 .suffix_10{padding-right:800px}.container_12 .suffix_11{padding-right:880px}.container_12 .push_1{left:80px}.container_12 .push_2{left:160px}.container_12 .push_3{left:240px}.container_12 .push_4{left:320px}.container_12 .push_5{left:400px}.container_12 .push_6{left:480px}.container_12 .push_7{left:560px}.container_12 .push_8{left:640px}.container_12 .push_9{left:720px}.container_12 .push_10{left:800px}.container_12 .push_11{left:880px}.container_12 .pull_1{left:-80px}.container_12 .pull_2{left:-160px}.container_12 .pull_3{left:-240px}.container_12 .pull_4{left:-320px}.container_12 .pull_5{left:-400px}.container_12 .pull_6{left:-480px}.container_12 .pull_7{left:-560px}.container_12 .pull_8{left:-640px}.container_12 .pull_9{left:-720px}.container_12 .pull_10{left:-800px}.container_12 .pull_11{left:-880px}.clear{clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0}.clearfix:before,.clearfix:after,.container_12:before,.container_12:after{content:'.';display:block;overflow:hidden;visibility:hidden;font-size:0;line-height:0;width:0;height:0}.clearfix:after,.container_12:after{clear:both}.clearfix,.container_12{zoom:1}
8
+
9
+ /* ################################### */
10
+ /* ######### MOCKUPER STYLES ######### */
@@ -0,0 +1,73 @@
1
+ header { height: 200px; background-color: #eee;}
2
+ footer { height: 100px; background-color: #eee;}
3
+
4
+ /**
5
+ * Content and footer model
6
+ */
7
+ .c-f {}
8
+ .c-f header { display: none;}
9
+
10
+ /**
11
+ * Content and right sidebar model
12
+ */
13
+ .c-rb {}
14
+ .c-rb header { display: none;}
15
+ .c-rb footer { display: none;}
16
+
17
+ /**
18
+ * Header, two-column content and footer model
19
+ */
20
+ .h-c-c-f {}
21
+
22
+ /**
23
+ * Header, content and footer model
24
+ */
25
+ .h-c-f {}
26
+
27
+ /**
28
+ * Header, content, right sidebar and footer model
29
+ */
30
+ .h-c-rb-f {}
31
+
32
+ /**
33
+ * Header and content model
34
+ */
35
+ .h-c {}
36
+ .h-c footer { display: none;}
37
+
38
+ /**
39
+ * Header, content, left sidebar aligned with content and footer model
40
+ */
41
+ .h-clb-c-f {}
42
+
43
+ /**
44
+ * Header, content, right sidebar aligned with content and footer model
45
+ */
46
+ .h-crb-c-f {}
47
+
48
+ /**
49
+ * Header, left sidebar, content and footer model
50
+ */
51
+ .h-lb-c-f {}
52
+
53
+ /**
54
+ * Header, content, footer and right sidebar model
55
+ */
56
+ .h-rb-c-f {}
57
+
58
+ /**
59
+ * Left sidebar and content model
60
+ */
61
+ .lb-c {}
62
+ .lb-c header { display: none;}
63
+ .lb-c footer { display: none;}
64
+
65
+ /**
66
+ * Left sidebar, header, content and footer model
67
+ */
68
+ .lb-h-c-f {}
69
+
70
+ /**
71
+ * Right sidebar, header, content and footer model
72
+ */
73
+ .rb-h-c-f {}
@@ -0,0 +1,69 @@
1
+ $(document).ready(function() {
2
+ if (mockuper.replaceImagePlaceHolders)
3
+ $('img').each(function() {
4
+ if ($(this).data('placeholder'))
5
+ $(this).attr('src', 'http://placehold.it/' + $(this).data('placeholder'));
6
+ });
7
+ });
8
+
9
+ mockuper = [];
10
+
11
+ mockuper.people = [];
12
+
13
+ mockuper.people.names = [];
14
+
15
+ mockuper.people.getNames = function(callback, options) {
16
+ $.ajax({
17
+ type: 'GET',
18
+ dataType: 'json',
19
+ url: 'core/json/people.json',
20
+ success: function(content) {
21
+ var o = mockuper.people;
22
+ o.names = content.people;
23
+ if (options) {
24
+ if (options.array)
25
+ o.names = o.subarray(options.array);
26
+ if (options.random)
27
+ o.names = o.shuffle();
28
+ if (options.length > 0)
29
+ o.names = o.subarray(options.length);
30
+ }
31
+ mockuper.people.names = o.names;
32
+ callback();
33
+ }
34
+ });
35
+ };
36
+
37
+ mockuper.people.shuffle = function() {
38
+ var auxNames = [];
39
+ for (var i = 0; i < mockuper.people.names.length; i++) {
40
+ var j = Math.floor(Math.random() * 6);
41
+ auxNames[i] = mockuper.people.names[j];
42
+ }
43
+ return auxNames;
44
+ };
45
+
46
+ mockuper.people.subarray = function(n) {
47
+ var auxNames = [];
48
+ if (n.length)
49
+ for(var i = 0; i < n.length; i++)
50
+ auxNames[i] = mockuper.people.names[n[i]];
51
+ else
52
+ for(var i = 0; i < n; i++)
53
+ auxNames[i] = mockuper.people.names[i];
54
+
55
+ return auxNames;
56
+ };
57
+
58
+ mockuper.includeTemplateInto = function(fileName, element) {
59
+ $.ajax({
60
+ type: 'GET',
61
+ dataType: 'html',
62
+ url: 'core/templates/' + fileName + '.html',
63
+ success: function(content) {
64
+ $(element).append($(content));
65
+ }
66
+ });
67
+ }
68
+
69
+ mockuper.replaceImagePlaceHolders = true;
@@ -0,0 +1,23 @@
1
+ /* =========================================================
2
+ * bootstrap-modal.js v2.0.3
3
+ * http://twitter.github.com/bootstrap/javascript.html#modals
4
+ * ========================================================= */
5
+ !function($){var Modal=function(content,options){this.options=options;this.$element=$(content).delegate('[data-dismiss="modal"]',"click.dismiss.modal",$.proxy(this.hide,this))};Modal.prototype={constructor:Modal,toggle:function(){return this[!this.isShown?"show":"hide"]()},show:function(){var that=this,e=$.Event("show");this.$element.trigger(e);if(this.isShown||e.isDefaultPrevented()){return}$("body").addClass("modal-open");this.isShown=true;escape.call(this);backdrop.call(this,function(){var transition=$.support.transition&&that.$element.hasClass("fade");if(!that.$element.parent().length){that.$element.appendTo(document.body)}that.$element.show();if(transition){that.$element[0].offsetWidth}that.$element.addClass("in");transition?that.$element.one($.support.transition.end,function(){that.$element.trigger("shown")}):that.$element.trigger("shown")})},hide:function(e){e&&e.preventDefault();var that=this;e=$.Event("hide");this.$element.trigger(e);if(!this.isShown||e.isDefaultPrevented()){return}this.isShown=false;$("body").removeClass("modal-open");escape.call(this);this.$element.removeClass("in");$.support.transition&&this.$element.hasClass("fade")?hideWithTransition.call(this):hideModal.call(this)}};function hideWithTransition(){var that=this,timeout=setTimeout(function(){that.$element.off($.support.transition.end);hideModal.call(that)},500);this.$element.one($.support.transition.end,function(){clearTimeout(timeout);hideModal.call(that)})}function hideModal(that){this.$element.hide().trigger("hidden");backdrop.call(this)}function backdrop(callback){var that=this,animate=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var doAnimate=$.support.transition&&animate;this.$backdrop=$('<div class="modal-backdrop '+animate+'" />').appendTo(document.body);if(this.options.backdrop!="static"){this.$backdrop.click($.proxy(this.hide,this))}if(doAnimate){this.$backdrop[0].offsetWidth}this.$backdrop.addClass("in");doAnimate?this.$backdrop.one($.support.transition.end,callback):callback()}else{if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");$.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one($.support.transition.end,$.proxy(removeBackdrop,this)):removeBackdrop.call(this)}else{if(callback){callback()}}}}function removeBackdrop(){this.$backdrop.remove();this.$backdrop=null}function escape(){var that=this;if(this.isShown&&this.options.keyboard){$(document).on("keyup.dismiss.modal",function(e){e.which==27&&that.hide()})}else{if(!this.isShown){$(document).off("keyup.dismiss.modal")}}}$.fn.modal=function(option){return this.each(function(){var $this=$(this),data=$this.data("modal"),options=$.extend({},$.fn.modal.defaults,$this.data(),typeof option=="object"&&option);if(!data){$this.data("modal",(data=new Modal(this,options)))}if(typeof option=="string"){data[option]()}else{if(options.show){data.show()}}})};$.fn.modal.defaults={backdrop:true,keyboard:true,show:true};$.fn.modal.Constructor=Modal;$(function(){$("body").on("click.modal.data-api",'[data-toggle="modal"]',function(e){var $this=$(this),href,$target=$($this.attr("data-target")||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")),option=$target.data("modal")?"toggle":$.extend({},$target.data(),$this.data());e.preventDefault();$target.modal(option)})})}(window.jQuery);
6
+
7
+ /* ===========================================================
8
+ * bootstrap-tooltip.js v2.0.3
9
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
10
+ * ========================================================== */
11
+ !function($){var Tooltip=function(element,options){this.init("tooltip",element,options)};Tooltip.prototype={constructor:Tooltip,init:function(type,element,options){var eventIn,eventOut;this.type=type;this.$element=$(element);this.options=this.getOptions(options);this.enabled=true;if(this.options.trigger!="manual"){eventIn=this.options.trigger=="hover"?"mouseenter":"focus";eventOut=this.options.trigger=="hover"?"mouseleave":"blur";this.$element.on(eventIn,this.options.selector,$.proxy(this.enter,this));this.$element.on(eventOut,this.options.selector,$.proxy(this.leave,this))}this.options.selector?(this._options=$.extend({},this.options,{trigger:"manual",selector:""})):this.fixTitle()},getOptions:function(options){options=$.extend({},$.fn[this.type].defaults,options,this.$element.data());if(options.delay&&typeof options.delay=="number"){options.delay={show:options.delay,hide:options.delay}}return options},enter:function(e){var self=$(e.currentTarget)[this.type](this._options).data(this.type);if(!self.options.delay||!self.options.delay.show){return self.show()}clearTimeout(this.timeout);self.hoverState="in";this.timeout=setTimeout(function(){if(self.hoverState=="in"){self.show()}},self.options.delay.show)},leave:function(e){var self=$(e.currentTarget)[this.type](this._options).data(this.type);if(!self.options.delay||!self.options.delay.hide){return self.hide()}clearTimeout(this.timeout);self.hoverState="out";this.timeout=setTimeout(function(){if(self.hoverState=="out"){self.hide()}},self.options.delay.hide)},show:function(){var $tip,inside,pos,actualWidth,actualHeight,placement,tp;if(this.hasContent()&&this.enabled){$tip=this.tip();this.setContent();if(this.options.animation){$tip.addClass("fade")}placement=typeof this.options.placement=="function"?this.options.placement.call(this,$tip[0],this.$element[0]):this.options.placement;inside=/in/.test(placement);$tip.remove().css({top:0,left:0,display:"block"}).appendTo(inside?this.$element:document.body);pos=this.getPosition(inside);actualWidth=$tip[0].offsetWidth;actualHeight=$tip[0].offsetHeight;switch(inside?placement.split(" ")[1]:placement){case"bottom":tp={top:pos.top+pos.height,left:pos.left+pos.width/2-actualWidth/2};break;case"top":tp={top:pos.top-actualHeight,left:pos.left+pos.width/2-actualWidth/2};break;case"left":tp={top:pos.top+pos.height/2-actualHeight/2,left:pos.left-actualWidth};break;case"right":tp={top:pos.top+pos.height/2-actualHeight/2,left:pos.left+pos.width};break}$tip.css(tp).addClass(placement).addClass("in")}},isHTML:function(text){return typeof text!="string"||(text.charAt(0)==="<"&&text.charAt(text.length-1)===">"&&text.length>=3)||/^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text)},setContent:function(){var $tip=this.tip(),title=this.getTitle();$tip.find(".tooltip-inner")[this.isHTML(title)?"html":"text"](title);$tip.removeClass("fade in top bottom left right")},hide:function(){var that=this,$tip=this.tip();$tip.removeClass("in");function removeWithAnimation(){var timeout=setTimeout(function(){$tip.off($.support.transition.end).remove()},500);$tip.one($.support.transition.end,function(){clearTimeout(timeout);$tip.remove()})}$.support.transition&&this.$tip.hasClass("fade")?removeWithAnimation():$tip.remove()},fixTitle:function(){var $e=this.$element;if($e.attr("title")||typeof($e.attr("data-original-title"))!="string"){$e.attr("data-original-title",$e.attr("title")||"").removeAttr("title")}},hasContent:function(){return this.getTitle()},getPosition:function(inside){return $.extend({},(inside?{top:0,left:0}:this.$element.offset()),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var title,$e=this.$element,o=this.options;title=$e.attr("data-original-title")||(typeof o.title=="function"?o.title.call($e[0]):o.title);return title},tip:function(){return this.$tip=this.$tip||$(this.options.template)},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=true},disable:function(){this.enabled=false},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}};$.fn.tooltip=function(option){return this.each(function(){var $this=$(this),data=$this.data("tooltip"),options=typeof option=="object"&&option;if(!data){$this.data("tooltip",(data=new Tooltip(this,options)))}if(typeof option=="string"){data[option]()}})};$.fn.tooltip.Constructor=Tooltip;$.fn.tooltip.defaults={animation:true,placement:"top",selector:false,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0}}(window.jQuery);
12
+
13
+ /* ========================================================
14
+ * bootstrap-tab.js v2.0.3
15
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
16
+ * ======================================================== */
17
+ !function($){var Tab=function(element){this.element=$(element)};Tab.prototype={constructor:Tab,show:function(){var $this=this.element,$ul=$this.closest("ul:not(.dropdown-menu)"),selector=$this.attr("data-target"),previous,$target,e;if(!selector){selector=$this.attr("href");selector=selector&&selector.replace(/.*(?=#[^\s]*$)/,"")}if($this.parent("li").hasClass("active")){return}previous=$ul.find(".active a").last()[0];e=$.Event("show",{relatedTarget:previous});$this.trigger(e);if(e.isDefaultPrevented()){return}$target=$(selector);this.activate($this.parent("li"),$ul);this.activate($target,$target.parent(),function(){$this.trigger({type:"shown",relatedTarget:previous})})},activate:function(element,container,callback){var $active=container.find("> .active"),transition=callback&&$.support.transition&&$active.hasClass("fade");function next(){$active.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");element.addClass("active");if(transition){element[0].offsetWidth;element.addClass("in")}else{element.removeClass("fade")}if(element.parent(".dropdown-menu")){element.closest("li.dropdown").addClass("active")}callback&&callback()}transition?$active.one($.support.transition.end,next):next();$active.removeClass("in")}};$.fn.tab=function(option){return this.each(function(){var $this=$(this),data=$this.data("tab");if(!data){$this.data("tab",(data=new Tab(this)))}if(typeof option=="string"){data[option]()}})};$.fn.tab.Constructor=Tab;$(function(){$("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(e){e.preventDefault();$(this).tab("show")})})}(window.jQuery);
18
+
19
+ /* =============================================================
20
+ * bootstrap-typeahead.js v2.0.3
21
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
22
+ * ============================================================ */
23
+ !function($){var Typeahead=function(element,options){this.$element=$(element);this.options=$.extend({},$.fn.typeahead.defaults,options);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.$menu=$(this.options.menu).appendTo("body");this.source=this.options.source;this.shown=false;this.listen()};Typeahead.prototype={constructor:Typeahead,select:function(){var val=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(val)).change();return this.hide()},updater:function(item){return item},show:function(){var pos=$.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});this.$menu.css({top:pos.top+pos.height,left:pos.left});this.$menu.show();this.shown=true;return this},hide:function(){this.$menu.hide();this.shown=false;return this},lookup:function(event){var that=this,items,q;this.query=this.$element.val();if(!this.query){return this.shown?this.hide():this}items=$.grep(this.source,function(item){return that.matcher(item)});items=this.sorter(items);if(!items.length){return this.shown?this.hide():this}return this.render(items.slice(0,this.options.items)).show()},matcher:function(item){return ~item.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(items){var beginswith=[],caseSensitive=[],caseInsensitive=[],item;while(item=items.shift()){if(!item.toLowerCase().indexOf(this.query.toLowerCase())){beginswith.push(item)}else{if(~item.indexOf(this.query)){caseSensitive.push(item)}else{caseInsensitive.push(item)}}}return beginswith.concat(caseSensitive,caseInsensitive)},highlighter:function(item){var query=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return item.replace(new RegExp("("+query+")","ig"),function($1,match){return"<strong>"+match+"</strong>"})},render:function(items){var that=this;items=$(items).map(function(i,item){i=$(that.options.item).attr("data-value",item);i.find("a").html(that.highlighter(item));return i[0]});items.first().addClass("active");this.$menu.html(items);return this},next:function(event){var active=this.$menu.find(".active").removeClass("active"),next=active.next();if(!next.length){next=$(this.$menu.find("li")[0])}next.addClass("active")},prev:function(event){var active=this.$menu.find(".active").removeClass("active"),prev=active.prev();if(!prev.length){prev=this.$menu.find("li").last()}prev.addClass("active")},listen:function(){this.$element.on("blur",$.proxy(this.blur,this)).on("keypress",$.proxy(this.keypress,this)).on("keyup",$.proxy(this.keyup,this));if($.browser.webkit||$.browser.msie){this.$element.on("keydown",$.proxy(this.keypress,this))}this.$menu.on("click",$.proxy(this.click,this)).on("mouseenter","li",$.proxy(this.mouseenter,this))},keyup:function(e){switch(e.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown){return}this.select();break;case 27:if(!this.shown){return}this.hide();break;default:this.lookup()}e.stopPropagation();e.preventDefault()},keypress:function(e){if(!this.shown){return}switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:if(e.type!="keydown"){break}e.preventDefault();this.prev();break;case 40:if(e.type!="keydown"){break}e.preventDefault();this.next();break}e.stopPropagation()},blur:function(e){var that=this;setTimeout(function(){that.hide()},150)},click:function(e){e.stopPropagation();e.preventDefault();this.select()},mouseenter:function(e){this.$menu.find(".active").removeClass("active");$(e.currentTarget).addClass("active")}};$.fn.typeahead=function(option){return this.each(function(){var $this=$(this),data=$this.data("typeahead"),options=typeof option=="object"&&option;if(!data){$this.data("typeahead",(data=new Typeahead(this,options)))}if(typeof option=="string"){data[option]()}})};$.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'};$.fn.typeahead.Constructor=Typeahead;$(function(){$("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(e){var $this=$(this);if($this.data("typeahead")){return}e.preventDefault();$this.typeahead($this.data())})})}(window.jQuery);
@@ -0,0 +1,35 @@
1
+ paragraph: [
2
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis tellus non nunc convallis elementum. Nulla auctor porta fermentum. Nulla quis sem dolor, a hendrerit est. Pellentesque pulvinar quam dui. Morbi dapibus adipiscing metus, et porttitor enim imperdiet id. Nulla nibh nunc, tempus nec faucibus eget, rutrum sagittis mi. Aliquam dictum, tellus nec dapibus adipiscing, sapien eros imperdiet nisi, ut faucibus velit turpis quis libero. Nullam convallis, velit eget porttitor egestas, urna purus vehicula ipsum, in posuere sapien felis non lectus. Donec pretium dignissim ligula, sit amet euismod risus porta vel. Donec erat tellus, hendrerit quis rutrum nec, suscipit id lacus. Fusce neque nulla, adipiscing et tempus in, dictum ac augue.",
3
+ "Nulla libero risus, interdum et pharetra et, congue sit amet odio. Proin sit amet lorem a diam facilisis tempus nec nec mauris. Praesent sed erat orci. Ut eleifend feugiat laoreet. Duis libero est, scelerisque a bibendum non, imperdiet nec felis. Donec eget arcu ac nunc molestie convallis ac eget libero. Pellentesque lacinia aliquam ante sed mollis. Nunc non turpis quis nisi ultricies scelerisque ut vel orci. Donec semper pharetra sapien condimentum ultricies. Ut eu lacus vel mauris blandit volutpat quis vestibulum augue. Nullam nec lectus lacus. Nam mattis viverra eros sed accumsan. In dignissim tincidunt nisi, ut imperdiet turpis convallis sit amet. Praesent lobortis semper urna, quis malesuada libero porta eget.",
4
+ "Sed ornare convallis leo sed dignissim. Nulla turpis risus, semper ac elementum ac, vulputate iaculis tortor. Mauris nec erat ut dolor volutpat viverra sit amet congue justo. In blandit, diam nec pellentesque vestibulum, ipsum nunc euismod sem, elementum posuere nisi arcu in nibh. Sed commodo, turpis eu laoreet vulputate, diam sem dapibus erat, vel rutrum dui diam eget neque. Cras nunc ante, consequat non gravida at, tincidunt at enim. Aliquam eu ipsum dolor, sit amet varius augue. Phasellus non lacus at lorem tempus tempor at in quam. Praesent dignissim facilisis tristique. Proin ultrices sodales lorem, ac posuere nisi dapibus vitae. Vivamus a dui sit amet elit gravida mattis ullamcorper ac libero. Donec laoreet vestibulum iaculis.",
5
+ "Fusce lacus felis, dapibus sed blandit quis, interdum quis est. Nam consectetur, ipsum eu viverra venenatis, sapien nisl malesuada velit, quis ultrices enim lacus a nibh. Fusce risus odio, porta quis gravida vel, fermentum quis est. Suspendisse velit arcu, ultrices in dictum in, varius eget diam. Mauris a mollis leo. Pellentesque lacus nunc, ultrices in rhoncus id, tristique in metus. Pellentesque eu sapien nec sem laoreet auctor. Integer lobortis eros et enim fermentum a malesuada libero adipiscing. Praesent dapibus dignissim risus, quis adipiscing elit porta scelerisque. Nullam vitae urna justo.",
6
+ "Aenean vitae dolor eu odio interdum sodales. Curabitur scelerisque posuere enim, sit amet facilisis felis bibendum id. Aliquam fermentum elementum dui, sit amet condimentum ipsum tristique a. Aenean elit dui, facilisis nec gravida ac, lacinia non lectus. Cras ullamcorper urna vel dolor molestie a dapibus enim sollicitudin. Proin et lobortis turpis. Phasellus viverra mi sem, a consequat quam. Ut egestas rhoncus iaculis. Nulla turpis urna, blandit eu malesuada id, euismod eu sapien.",
7
+ "In vitae pulvinar nisl. Nullam eget vulputate mi. Pellentesque viverra arcu et magna lacinia luctus. Praesent risus enim, auctor at viverra quis, vulputate sit amet metus. Mauris luctus lectus id nisl facilisis mattis. Vestibulum adipiscing, lacus vestibulum egestas ultrices, nibh mauris iaculis metus, ut malesuada dui metus sed ipsum. In sit amet porta nisi. Suspendisse tincidunt bibendum odio non sollicitudin. Mauris lobortis fringilla tortor ut mattis. Proin sed enim nulla, in pulvinar erat. In feugiat, felis vitae luctus accumsan, lorem nisi ullamcorper eros, id consequat elit mi non lectus. Suspendisse sit amet odio leo. Aenean varius leo eu sem ullamcorper id volutpat nulla dapibus. Pellentesque sed orci nisi, eu posuere leo. Duis in justo quis est condimentum ultricies.",
8
+ "Cras tristique tincidunt arcu sit amet scelerisque. Donec tempor condimentum massa, nec convallis odio posuere eget. Maecenas ut magna ac orci blandit suscipit. Quisque dictum felis sed nisl aliquam sit amet scelerisque eros lacinia. In mollis aliquam dapibus. Aenean eu turpis id odio commodo dictum. Nunc tristique turpis orci, at volutpat sem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Cras fringilla risus sit amet eros pretium elementum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam risus est, posuere quis dignissim quis, pulvinar ut nunc. In at mauris a elit vulputate malesuada sed quis massa. Fusce lacinia turpis ante, vitae ultricies nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam condimentum odio at sapien sagittis porttitor.",
9
+ "Aenean lobortis pulvinar iaculis. Duis luctus leo non urna pellentesque porta at sed quam. Curabitur tempus vulputate pharetra. Ut bibendum, metus a congue venenatis, libero diam hendrerit elit, et elementum tortor augue in justo. Vestibulum mollis nisi libero, eu ornare nibh. Maecenas quis dictum lorem. Nulla sit amet augue sit amet nulla blandit egestas. Proin gravida, dolor viverra lobortis mollis, elit arcu lobortis diam, in molestie tortor nibh et tellus. Proin pretium adipiscing tincidunt. Curabitur commodo dignissim interdum. In hac habitasse platea dictumst.",
10
+ "Proin iaculis nisl eu augue tincidunt facilisis. Etiam in diam arcu. Nunc nec erat sit amet justo vestibulum posuere. Nam quis diam diam. Cras vitae pharetra sapien. Curabitur vitae leo neque. Aenean non magna a nunc aliquet vulputate. Fusce ut lacinia sapien. Cras id eros justo, pharetra pharetra dui. Mauris id orci at erat sagittis dignissim. Vestibulum placerat tellus ut nunc ultrices eget viverra purus laoreet. Donec mi eros, accumsan consequat laoreet ac, semper vel tellus.",
11
+ "Praesent rutrum luctus ipsum et ultrices. Nunc iaculis tempus rutrum. Phasellus eu quam orci, ornare molestie ante. Suspendisse mi leo, tristique at ornare vitae, egestas at leo. Morbi mollis sem vitae mauris luctus at feugiat dui sagittis. Fusce eget justo neque, volutpat condimentum tellus. Aliquam et massa velit, vel tempus eros. Vivamus id risus odio. Duis condimentum enim volutpat mauris molestie in egestas tellus vehicula. Etiam nulla nisi, laoreet tincidunt tincidunt vitae, condimentum sit amet elit. Sed vel magna quis dui sodales molestie at eget urna. Integer et molestie enim. Nunc pulvinar nibh eget elit luctus laoreet nec tristique sem. Ut porttitor metus nec nisl gravida ornare. Phasellus scelerisque vulputate vestibulum.",
12
+ "Fusce et mi vitae dolor dapibus cursus id vel diam. Nulla facilisi. Mauris congue purus a ante laoreet pretium. Curabitur ac lacus a metus vulputate tincidunt. Mauris quis lacus purus, quis dictum urna. Maecenas non faucibus quam. Morbi et purus a metus elementum gravida. Vestibulum pharetra, lorem vel accumsan porttitor, ante elit scelerisque nibh, vel sodales odio orci quis quam. Fusce a convallis nibh. Praesent accumsan sem id eros ultricies consequat. Morbi vel tellus purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut enim quam, vestibulum non fringilla ut, tempus eget metus.",
13
+ "Donec justo leo, volutpat vitae interdum viverra, luctus nec libero. Suspendisse id urna massa. Pellentesque vitae felis metus, quis gravida leo. Pellentesque posuere urna ultricies lectus condimentum commodo. Mauris dictum volutpat nisi vitae suscipit. Sed leo ipsum, sodales quis ultricies non, elementum a augue. Cras vitae lorem lacus.",
14
+ "Etiam orci risus, sodales non tempus vel, molestie at eros. Aenean sit amet ullamcorper libero. Ut aliquet quam ante. Phasellus felis risus, volutpat non sodales vel, vestibulum eget enim. Aenean fermentum hendrerit sodales. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In laoreet dui ac dolor luctus ornare.",
15
+ "Praesent quis vulputate ipsum. Morbi auctor laoreet viverra. Morbi posuere ligula faucibus lacus lacinia vehicula. Cras ac ligula leo. Etiam neque massa, venenatis nec adipiscing nec, scelerisque in turpis. Integer odio ipsum, pharetra ac auctor vulputate, dapibus vitae tellus. Cras eu ligula at lorem cursus posuere. Maecenas ut facilisis ante. Donec porttitor est pulvinar justo ullamcorper eu pellentesque nisl porta. Aliquam lobortis nulla vel eros facilisis eleifend. Proin sit amet lorem at leo ornare venenatis nec at risus.",
16
+ "Sed neque urna, dictum in fringilla quis, vulputate at mauris. Cras tristique sodales metus ut scelerisque. Praesent lorem neque, pellentesque ac lobortis quis, facilisis et quam. Aliquam tincidunt tincidunt orci, eu malesuada quam eleifend ac. Vestibulum non odio tortor. Integer eu commodo dolor. Proin feugiat, urna hendrerit convallis vehicula, diam nibh posuere mi, a vehicula lacus diam vel orci. In suscipit vehicula tempus. Donec in nisl eget tortor rutrum sodales. Proin faucibus tempus facilisis. Praesent pellentesque, ligula ac luctus suscipit, ligula ante tristique leo, ut porttitor risus ligula aliquam arcu. Vivamus egestas porta est, in consequat mauris interdum eu. In quis odio et est viverra rutrum.",
17
+ "Proin eros augue, tincidunt et viverra blandit, aliquam eu justo. Aenean molestie tempus faucibus. Cras non turpis lorem. Pellentesque hendrerit sollicitudin elit sed rutrum. Duis justo mi, suscipit ac feugiat eu, feugiat venenatis ligula. Morbi erat tellus, tincidunt vitae congue in, sollicitudin non sapien. Morbi tempor nisi non turpis dictum sed molestie mi tempor. Duis pulvinar rutrum bibendum. Ut sed erat nunc, eu faucibus velit. Integer rhoncus arcu id turpis semper non aliquam libero sodales. In neque tortor, scelerisque sed ornare eget, pharetra eget lacus.",
18
+ "Morbi lobortis, magna sed pellentesque tempor, lorem sem placerat justo, id fermentum tortor arcu non elit. Curabitur ac magna arcu. Donec in nibh metus, ut bibendum diam. Suspendisse eget justo arcu. Cras et purus id lectus porttitor imperdiet. Etiam sed metus tincidunt orci adipiscing tincidunt. Sed blandit fermentum tempus. Nunc vehicula eleifend dolor eget interdum. Vivamus eu dictum mi. Suspendisse in erat at urna sollicitudin consequat eu imperdiet quam.",
19
+ "Morbi sem mi, condimentum et accumsan id, pulvinar in nisl. In urna nisl, elementum nec fringilla feugiat, dapibus sit amet leo. Etiam metus velit, scelerisque in ultrices non, pellentesque vel mi. Donec id velit at risus consectetur iaculis in at diam. Sed quis magna risus, sed pellentesque lorem. Praesent felis urna, sodales ac elementum sed, viverra id mauris. In adipiscing, massa dignissim tincidunt vulputate, dui erat posuere diam, a condimentum leo massa ut est.",
20
+ "Nam ut nunc quis purus tristique semper suscipit vel sem. In enim quam, faucibus sed consequat id, luctus non libero. Praesent laoreet sodales ultrices. Maecenas fermentum tempor odio eu scelerisque. Cras id dui eu arcu egestas vehicula. Nunc sagittis metus id mi adipiscing scelerisque vitae et sem. Nunc et justo tortor, sit amet malesuada turpis. Vestibulum justo lectus, tristique vitae volutpat eget, mattis vitae sem. Aliquam erat volutpat. Quisque hendrerit condimentum quam. Proin at risus augue. Aenean nisl magna, tincidunt non vulputate ut, scelerisque quis orci. Praesent at urna eu mi condimentum adipiscing convallis et justo. Fusce bibendum porttitor gravida.",
21
+ "Ut orci lectus, convallis vitae commodo non, semper quis ipsum. Curabitur fermentum, risus non porta auctor, orci lectus sagittis ante, vel interdum nulla augue ac nisi. Proin felis metus, euismod aliquet elementum ac, convallis rhoncus odio. Aliquam tristique imperdiet dolor a luctus. Sed magna quam, ornare in condimentum ac, hendrerit eu erat. Curabitur volutpat tristique magna et dignissim. Nam vehicula, libero eu interdum euismod, nulla dui vestibulum purus, at pulvinar augue mi nec mauris. Donec suscipit eros et metus bibendum aliquet. Duis dignissim lobortis quam, nec consectetur nulla vestibulum non.",
22
+ "Sed porta convallis mi at ornare. Curabitur eu magna lacus. Praesent rutrum pellentesque malesuada. Morbi massa arcu, pharetra id cursus malesuada, volutpat a velit. Ut varius nibh vel lacus sagittis sit amet ultricies metus pretium. Ut vel lacus ac nisl consequat tempor id sit amet turpis. Nam vitae hendrerit magna. Aliquam mattis elit at ligula aliquet imperdiet. Etiam venenatis tincidunt lobortis. Mauris ornare mauris at neque varius ac blandit lorem porta. Morbi at sem diam. Pellentesque aliquet consectetur cursus.",
23
+ "Duis faucibus massa est, id laoreet erat. Sed et rutrum neque. Mauris tortor nunc, pellentesque nec porta id, mollis vel turpis. In pulvinar vehicula nibh quis commodo. Morbi turpis risus, pulvinar sed rutrum non, suscipit tempor odio. Phasellus dapibus mauris lacinia arcu interdum facilisis. In non ante vel ante faucibus rhoncus pellentesque faucibus ante.",
24
+ "Curabitur feugiat odio non nibh eleifend rhoncus mattis erat luctus. Donec pellentesque vulputate ligula in ullamcorper. Proin vel tellus non eros lacinia sodales. Sed adipiscing diam ac tellus convallis bibendum. Sed non metus augue, et vehicula velit. Ut lacus orci, consequat ac mollis ac, porta at felis. Integer faucibus dapibus ante. Integer et metus sit amet risus porttitor placerat quis non ante.",
25
+ "Nulla sem neque, tincidunt sit amet tincidunt vel, ornare sed odio. Duis laoreet ligula consequat arcu egestas condimentum. Phasellus blandit nunc diam. Integer posuere arcu magna. Morbi pellentesque erat nec metus porttitor ut semper orci adipiscing. Aliquam erat volutpat. Suspendisse eget adipiscing elit. Donec faucibus velit non nisi pretium volutpat. Nullam gravida suscipit neque, in ultrices elit rutrum sed. Maecenas dictum nisi id nulla volutpat ac sodales erat consectetur.",
26
+ "Ut id massa ornare purus consequat laoreet vel sollicitudin sapien. Sed quis magna quis odio convallis dignissim. Nulla molestie, ipsum ut vestibulum commodo, massa enim porttitor mauris, eget rhoncus eros felis nec mauris. Cras sed ante elit, a porttitor augue. Nulla consectetur, ligula nec condimentum dapibus, nulla purus dapibus eros, vel egestas tortor ante ac sem. Curabitur fringilla purus a urna porta placerat vehicula dolor adipiscing. Praesent at elit in risus egestas congue. Praesent dignissim commodo nulla eu tristique. Aenean tristique venenatis posuere. Integer blandit aliquam felis, vitae malesuada nisl venenatis at. Integer sed magna vitae felis auctor euismod porta non nunc. Nullam bibendum, est quis sodales pharetra, mi turpis luctus mi, eget convallis lacus sapien ac nulla. Vestibulum vestibulum congue vulputate.",
27
+ "Aenean laoreet sollicitudin facilisis. Nulla fringilla metus sed sapien luctus cursus. Quisque nec volutpat libero. Praesent blandit massa eu dolor egestas sagittis. Cras eget tincidunt turpis. Vivamus imperdiet euismod nunc non dictum. Ut tristique, ante sit amet imperdiet viverra, ipsum lectus congue est, sed aliquet ipsum mi eget massa. Nulla facilisi. Cras mollis fringilla mi, vitae tincidunt nisi ultrices at. Maecenas lorem justo, imperdiet bibendum faucibus vitae, hendrerit commodo lorem. Donec purus sapien, lacinia eu semper ac, congue sit amet tortor. Donec auctor, lectus quis feugiat viverra, lorem ligula volutpat odio, eu convallis mi ante eget leo.",
28
+ "Etiam non nisl ante. Aliquam bibendum semper tempus. In fermentum feugiat lobortis. Sed egestas luctus congue. Suspendisse potenti. Sed at tempus sem. Sed dapibus feugiat tortor eget malesuada. Aliquam elementum pellentesque fermentum.",
29
+ "Nunc rhoncus lectus ut arcu consequat accumsan vehicula elit vestibulum. Vivamus vitae magna tincidunt nunc aliquet volutpat. Cras eget metus arcu, pretium tempus dolor. Donec non sapien odio, ut facilisis magna. Phasellus libero mi, aliquam non interdum quis, mattis non dui. Vestibulum euismod suscipit venenatis. Sed nec lectus vel eros ullamcorper ornare. Vivamus bibendum ipsum augue, in faucibus arcu. Integer luctus vestibulum pulvinar. Curabitur hendrerit luctus congue. Nunc ultricies nunc sit amet velit placerat in sodales augue consectetur. Maecenas elementum laoreet vulputate. Mauris commodo iaculis nibh, at suscipit purus auctor vel. Integer vestibulum congue justo in porttitor.",
30
+ "Nulla sit amet odio viverra urna dapibus luctus. Pellentesque nisl purus, rutrum non rutrum at, interdum vel arcu. Duis rutrum felis quis odio egestas at iaculis nisl rutrum. Quisque orci tortor, laoreet eget suscipit vitae, faucibus ut dolor. Phasellus volutpat, eros at facilisis laoreet, arcu enim consequat lorem, gravida rhoncus nulla nunc ac nibh. Maecenas dui ipsum, lacinia vitae malesuada sit amet, lacinia vel lacus. Aenean fringilla mi consequat magna iaculis sollicitudin. Phasellus vulputate, justo et aliquet consectetur, mauris nulla malesuada diam, vel vehicula libero nibh at magna. Aliquam erat volutpat. Curabitur sem velit, pharetra sit amet sodales nec, sollicitudin eu arcu.",
31
+ "Phasellus neque purus, sollicitudin non suscipit at, dapibus et augue. Suspendisse faucibus accumsan turpis ac elementum. Nullam egestas sem nec lacus aliquam rhoncus. Aliquam in feugiat urna. Cras hendrerit venenatis justo at aliquet. Pellentesque suscipit tortor at risus mattis eget sagittis odio egestas. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.",
32
+ "Nulla eu nunc in eros bibendum ullamcorper. Nulla nec sapien mi, ac porttitor eros. Pellentesque turpis est, dapibus a tempus a, auctor non lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam sit amet augue sit amet felis condimentum elementum sit amet id nisl. Aliquam condimentum posuere ipsum eu molestie. Sed porta tempor convallis. Praesent orci nisi, tincidunt quis iaculis a, lacinia fringilla sem. Donec sed augue ipsum, sed pharetra nisl. Morbi vel aliquam mauris.",
33
+ "Duis aliquam lectus a eros ultricies id lobortis nisl rutrum. Morbi scelerisque, sem vulputate vulputate accumsan, velit purus convallis velit, eu fringilla dolor nisi ac sem. Nam ut erat eu neque commodo pharetra et pulvinar augue. Vivamus vitae massa eros. Etiam ac diam et purus molestie lacinia vitae sed odio. Donec et sapien metus. Vivamus ut augue nulla. Nunc posuere turpis risus.",
34
+ "Nullam porta mollis nunc quis luctus. Vivamus massa turpis, vestibulum in auctor in, porttitor eget massa. Phasellus molestie fringilla ante at rutrum. Donec at libero nulla, eu accumsan dui. Phasellus et augue quis sem hendrerit malesuada commodo eu justo. Donec pulvinar tellus sed elit congue ullamcorper. Nunc libero dolor, volutpat ut tempus eget, convallis nec purus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sit amet dui purus, id congue mauris. Nullam imperdiet, ipsum nec blandit mollis, mauris mi interdum metus, et vehicula nulla magna in lorem. Morbi luctus orci vitae orci vestibulum sollicitudin. Aenean vulputate venenatis metus, varius fringilla orci varius in."
35
+ ]