ydoc 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +70 -0
- data/README.md +93 -0
- data/README.rdoc +6 -0
- data/Rakefile +44 -0
- data/appcom-ydoc-ruby.gemspec +23 -0
- data/appcom-ydoc-ruby.rdoc +5 -0
- data/bin/ydoc +124 -0
- data/features/appcom-ydoc-ruby.feature +8 -0
- data/features/step_definitions/appcom-ydoc-ruby_steps.rb +6 -0
- data/features/support/env.rb +15 -0
- data/lib/appcom-ydoc-ruby.rb +22 -0
- data/lib/appcom-ydoc-ruby/config.rb +13 -0
- data/lib/appcom-ydoc-ruby/email/email_builder.rb +58 -0
- data/lib/appcom-ydoc-ruby/email/templates/attachment.erb +6 -0
- data/lib/appcom-ydoc-ruby/email/templates/body.erb +6 -0
- data/lib/appcom-ydoc-ruby/email/templates/header.erb +6 -0
- data/lib/appcom-ydoc-ruby/html/html_builder.rb +51 -0
- data/lib/appcom-ydoc-ruby/html/templates/default.html +77 -0
- data/lib/appcom-ydoc-ruby/html/templates/styles.css +1052 -0
- data/lib/appcom-ydoc-ruby/markdown/markdown_builder.rb +33 -0
- data/lib/appcom-ydoc-ruby/markdown/templates/document.erb +35 -0
- data/lib/appcom-ydoc-ruby/version.rb +3 -0
- data/lib/appcom-ydoc-ruby/yaml/templates/empty.erb +17 -0
- data/lib/appcom-ydoc-ruby/yaml/yaml_builder.rb +37 -0
- data/test/default_test.rb +14 -0
- data/test/test_helper.rb +9 -0
- metadata +135 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
module YDoc
|
2
|
+
class Config
|
3
|
+
ATTRIBUTES = [:name, :verbose, :output_dir, :temp_dir, :input_dir]
|
4
|
+
attr_reader *ATTRIBUTES
|
5
|
+
|
6
|
+
def initialize options = {}
|
7
|
+
options.each { |key, value|
|
8
|
+
instance_variable_set("@#{key.to_s}", value) if ATTRIBUTES.include?(key.to_sym)
|
9
|
+
}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'map'
|
2
|
+
require 'mail'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module YDoc
|
6
|
+
class EmailBuilder
|
7
|
+
|
8
|
+
def mail_to(to, subject, body, file_or_directory, options = {})
|
9
|
+
is_file = File.file?(file_or_directory) && File.exists?(file_or_directory)
|
10
|
+
is_directory = File.directory?(file_or_directory) && File.exists?(file_or_directory)
|
11
|
+
|
12
|
+
options = Map[options]
|
13
|
+
options = load_config(options[:config]) || options
|
14
|
+
|
15
|
+
check_options options
|
16
|
+
|
17
|
+
if is_file
|
18
|
+
send_file to, subject, body, file_or_directory, options
|
19
|
+
elsif is_directory
|
20
|
+
Dir["#{file_or_directory}/*.html"].each { |file| send_file to, subject, body, file, options }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def send_file(to, subject, body, file, options)
|
27
|
+
Mail.defaults do
|
28
|
+
delivery_method :smtp, {
|
29
|
+
:address => 'smtp.gmail.com',
|
30
|
+
:port => 587,
|
31
|
+
:user_name => options[:username],
|
32
|
+
:password => options[:password],
|
33
|
+
:authentication => :plain,
|
34
|
+
:enable_starttls_auto => true
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
Mail.deliver do
|
39
|
+
to to
|
40
|
+
from options[:address]
|
41
|
+
subject subject
|
42
|
+
body body
|
43
|
+
add_file file
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def check_options(options)
|
48
|
+
abort 'There are some crucial options missing' unless options[:address] and options[:port] and options[:host] and options[:username] and options[:password]
|
49
|
+
end
|
50
|
+
|
51
|
+
def load_config(path)
|
52
|
+
if path
|
53
|
+
config = Map[JSON.parse(File.open(path).read)]
|
54
|
+
config[:email]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'mkmf'
|
3
|
+
require 'json'
|
4
|
+
require 'map'
|
5
|
+
|
6
|
+
module YDoc
|
7
|
+
class HtmlBuilder
|
8
|
+
def initialize
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_html file_or_directory, output_directory, options = {}
|
12
|
+
abort 'Pandoc command is not available. Make sure it is installed and added to the path' unless find_executable('pandoc')
|
13
|
+
is_file = File.file?(file_or_directory) && File.exists?(file_or_directory)
|
14
|
+
is_directory = File.directory?(file_or_directory) && File.exists?(file_or_directory)
|
15
|
+
|
16
|
+
options = load_config(options[:config]) || options
|
17
|
+
|
18
|
+
if is_file
|
19
|
+
file_to_html file_or_directory, output_directory, options
|
20
|
+
elsif is_directory
|
21
|
+
Dir["#{file_or_directory}/*.md"].each { |file| file_to_html file, output_directory, options }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def file_to_html file, output_directory, options
|
28
|
+
FileUtils.mkdir_p output_directory
|
29
|
+
system(command file, output_directory, options)
|
30
|
+
end
|
31
|
+
|
32
|
+
def command file, output_directory, options
|
33
|
+
command = "pandoc #{file} --template \"#{File.join(File.dirname(__FILE__), 'templates/default.html')}\" --css=\"#{File.join(File.dirname(__FILE__), 'templates/styles.css')}\""
|
34
|
+
|
35
|
+
command += ' --toc' if options[:toc]
|
36
|
+
command += " --toc-depth #{options[:tocDepth]}" if options[:tocDepth]
|
37
|
+
command += ' -N' if options[:numbered]
|
38
|
+
command += ' -s' if options[:standAlone]
|
39
|
+
command += ' --self-contained' if options[:selfContained]
|
40
|
+
|
41
|
+
command += " -o \"#{File.join(output_directory, File.basename(file, 'md'))}html\""
|
42
|
+
end
|
43
|
+
|
44
|
+
def load_config path
|
45
|
+
if path
|
46
|
+
config = Map[JSON.parse(File.open(path).read)]
|
47
|
+
config[:html]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" $if(lang)$ lang="$lang$" xml:lang="$lang$" $endif$$if(dir)$ dir="$dir$"
|
3
|
+
$endif$>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
6
|
+
<meta http-equiv="Content-Style-Type" content="text/css"/>
|
7
|
+
<meta name="generator" content="pandoc"/>
|
8
|
+
$for(author-meta)$
|
9
|
+
<meta name="author" content="$author-meta$"/>
|
10
|
+
$endfor$
|
11
|
+
$if(date-meta)$
|
12
|
+
<meta name="date" content="$date-meta$"/>
|
13
|
+
$endif$
|
14
|
+
$if(keywords)$
|
15
|
+
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$"/>
|
16
|
+
$endif$
|
17
|
+
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
|
18
|
+
<style type="text/css">code {
|
19
|
+
white-space: pre;
|
20
|
+
}</style>
|
21
|
+
$if(quotes)$
|
22
|
+
<style type="text/css">q {
|
23
|
+
quotes: "“" "”" "‘" "’";
|
24
|
+
}</style>
|
25
|
+
$endif$
|
26
|
+
$if(highlighting-css)$
|
27
|
+
<style type="text/css">
|
28
|
+
$highlighting-css$
|
29
|
+
</style>
|
30
|
+
$endif$
|
31
|
+
$for(css)$
|
32
|
+
<link rel="stylesheet" href="$css$" type="text/css"/>
|
33
|
+
$endfor$
|
34
|
+
$if(math)$
|
35
|
+
$math$
|
36
|
+
$endif$
|
37
|
+
$for(header-includes)$
|
38
|
+
$header-includes$
|
39
|
+
$endfor$
|
40
|
+
</head>
|
41
|
+
<body>
|
42
|
+
$for(include-before)$
|
43
|
+
$include-before$
|
44
|
+
$endfor$
|
45
|
+
$if(title)$
|
46
|
+
<div id="$idprefix$header" style="display: inline-block;">
|
47
|
+
<h1 class="title">$title$</h1>
|
48
|
+
$if(subtitle)$
|
49
|
+
<h1 class="subtitle">$subtitle$</h1>
|
50
|
+
$endif$
|
51
|
+
$for(author)$
|
52
|
+
<h2 class="author">$author$</h2>
|
53
|
+
$endfor$
|
54
|
+
$if(date)$
|
55
|
+
<h3 class="date">$date$</h3>
|
56
|
+
$endif$
|
57
|
+
</div>
|
58
|
+
$endif$
|
59
|
+
<div id="logo"
|
60
|
+
style="float: right;margin: 0px 0 0 0;height: 84px;background-size: 113%;overflow: hidden;width: 185px;background-position: -13px -40px;background-image: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAtADmAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/VOiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApM4rwr47fth+CPghLNpkkra/4mQEf2TYMMxHGR5zniMe3Lf7NfDnxQ/bJ+IvxUea3Opf8I5pDkgWGksYyV54eX7zcdcYHtX0WAyLF45KduWL6v8ARb/ofLZlxFg8uvC/PNdF+r2/N+R+g/xK/aX+H3wtMkOq67Fc6ioyNOsP3859iBwv/AiK+YfHv7fviLWd8HhHSbfQbc8C7vMT3H1CkbF+hDfWvjmCfDEnlicsxOSfqe9aEM/Tmv0DBcN4HDWlUXPLz2+7/O5+T5nxVmeMvGlL2cf7u/8A4Fv91j0PxD8UfFfjO5FxrfiLUNQfcWAkuGCISc/KoOFHsBXceBv2mfiF4HZEt9el1K0XH+i6mftCEdgC3zKP90ivEoLjBFQax4qttDjYMwe4H8HZT2z/AIda+irUMK6XJVguXtZfgj4zBxzKvi19RlJ1X1Tafzd9u93bufoB8P8A9uLRNW8q38V6VLo854N3Z5mgJ9Sv3lH/AH1X0P4b8XaL4wsRd6Jqlrqduf47eQNt9iOoPsa/ES/+JGp3bMIW8pDkAdOPw/nmneE/i74u8Casup6Lr15ZXqjAdJTjrnlc4P418PjOH8JXvLC3g/vX53X3/I/cMtxGeYGCWY1KdRfNSXzUbP7te5+6FLX5zfBb/gpvqthNbad8SdHTUrThG1nSlCTL6s8JO1v+AkfSvvT4ffEjw38U/DcOu+FtWt9X0yX5fMhbmNsAlHU8owyMqQDzXw+My3E4F/vo6d+n9ep9nhcfh8XpSlr26nS0UUV5Z6IUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWN4z1abQfB+u6nbhTcWVhPcxhuhZI2YZ/EVs1zPxO/5Jt4s/7BN3/6JetKaTnFPuRP4WfiBNrd1reoXWpX073F9dzPPPM5yzuxJJJ9zVu3uMnmuWs7giNOe3rnNa1vcZr+gFZKyP5+r0dWdLb3HQE1oQXFc3b3HQZ5960re4YlVUFmY4VR1JPQVqmeJVonqfws+FniP4wajqeneG40N3ZWMl40koO0bR8qDA+8x4Uf0BrwHU7mW4u5VnVo5InZHjkzuVwSGznvkHNfsR+yT8Ff+FN/C22W+hC+ItX23mokj5kJHyQ/8AB6f3mavh7/AIKG/s+n4c/EpPGmkW5j8P8AiaQmdUHyQXoGWHXgOBuHuDXxtHOKeNzCWGv7q0i+7W/39PTzP1LLctnkmV/WOX95PWXdLov8/N+R8lNLk4FOjgLnnmrUFn0yKvwWmeAK+qjBR2PmcTj51n7zKkFn6ivsL/gmv4i1DSvjPqmhxTuNL1LS5J5rfPyGWNl2vj1wzD8a+V4bXHvX1D/wT1h8v9oRT/1CLn+aV5mbxTwFa6+yyMqxD/tGik95L8z9NxS0UV+In7sFFFfNS/E34pfHnxPrsPwru9I8K+DdDvG09/EWr2ZupNSuUOJVgjyAI0PG49T0oA+laK8J+F3xe8X6T8Rp/hr8UrbTk8RfYm1LS9c0kMlpqlshxIdjcpIndemCK5rSviJ8X/2g7vUdW+Gt9ofgvwJaXUtpY6rq9m13c6q0Z2PIqZASIOCAepwaAPpuivDPhH8bPEI8U6/4B+KFnY6V4w0SyGqLqGnEiy1KxyQZ4w3KFSMMueCa5PQPG/xt/aBtZPFHgPUNB8BeCnkcaS2r2DXl3qcanAmcbgI0bHAHOKAPp+ivDfhd+0Deyp4y0H4l2Nv4d8XeDLX7dqb2jFrS6sirMt3ATztIQgqeQeO9cj4b8TftA/G7R18Y+Gr3w98PfDl2pl0jSdWsGvLq6gzlJZ2DAR7xj5V6Ag0AfUFFfO/i/wCOXxE8N6B4Q8KL4X0qX4yeJWnSPTorlpNOs4Ymw95K458vG0hepLY7Vj+I/Gnxx/Z/05fFnje/0Hx/4Ntyp1iPSLBrS70+IsAZohkiRVzyDzgE/QA+oKK+XfHnxc+Kfin49xeA/hneaJb6Te+HoNY/tjUrYzC0R3/1gUEbywwADx1P1y9S+LXx48MeOrL4S3Fp4d1fxdrEJvtO8XKjRWkVmpImeW36mRDtAAIB3CgD62or578EfEX4kfDz4r6L4C+KF3pHiGDxFDNJo/iLSbc2v7+Jdz28sRJH3clWHpivoSgAooooAK534jRCf4e+J4y4QPpd0pY9BmJua6Kua+Jn/JOPFf8A2Cbv/wBEvW9Bc1WC81+Zx4yo6OGq1VvGLf3I/CKW0NuzxMMNGxUjnqD70sMxRsHrXWfEXQW0bXpZUTbbXDF1x0BPP+fxrk3jDDIr9yjNxbjLofm9XCwx2HhjMPtNJ/f/AJbGlb3ORX1d+wP8E/8AhZ3xIPibU7bzfD3htlkAcfJNd9Y06chR8xH0r5S8I+HdS8Y+JtL8P6RAbrVNRuEtraFf4nY4GfQDuewr9sfgd8JNN+CPw00fwpp22Q2se66ucc3Fw3Mkh+rZx6DA7V4Of5isJhvZQfvz09F1f6L/AIBlk2UPE4r2lRe5DV+b6L/PyO8riPjT8K9O+M3w21rwpqQCpexfuJ8ZaCZeY5B7qwB9+R3ruKK/KKdSVKaqQdmtUfqlWnCtCVOaumrM/DTX/CGo+D/EWo6Fq9ubXU9Pna2uIm7OpwceoPUHuCKZDak/Svuv/goP8DFY2vxL0qDlQlnrCIAAR0imPv0Qn02V8WRWtfuWW4yOPw0a8d3v5Pr/AF2P55zehUy7FTw8+m3muj/rqVYbXGK+mP2BICnx9Q44/sq5/mlfP0NrX0h+wjD5fx3Q4/5hdwM/ilLNl/wn1v8ACzlyWtfNMOv78fzP0Zooor8KP6VCvkj4V/Eqy/ZLn174ffES0v8AStHXU7jUND8SQ2UlxaXtvM5fYzRqxSVCSMEcj9freobi0gvI9k8Mc6ZztkUMPyNAHxbf/Fib4zftV+BtW0vw/qtn4NsdE1eKx1m+s3gF9KYP3hVWAKoBgDcBnkiq/wCyN+1Ronw2+C3h/wAOfEKx1Hw1HbxSSaXqwsJp7O/tmlcgh41ba4bcpU46A96+zdd0z7boV9bW8UfnPbSxQggAAshAAPbtXn37OHw6v/AHwK8I+GPEtlAuq6bBIk8WVmVGMrsMMMg8EdKAPEHutQ+N3ifx78WF0m90Twbpng+90PRZNSgNvc37SAtLPsb5ljG0Bc4J64qn+zD+1p4e8AfBLwr4e+IlhqnhPUrDTYls5n06Wa31K22jypIXiVgSV25U4wa+qviPoVz4i+HniTR9PRWu73Tp7aBGYKpdoyqjPQDJFYfwS8EXXhL4OeCtA1+0gOq6XpdvbzxnbKscioAwVuhweMigDw3wz4F1j9pbV/it4zv9Nu/DGg+JvDn/AAi2gwajGYrmaAb2N1InVAXYYB5wDwKt/DX9q/QPhd4KsfCHxPsNV8KeMdBt1sZbNdMnuIr7ZhVktpI0ZXDjBxkYJxX1PjGAOlQz2NvdOrzW8Urr91pEDEfQmgD5Y8c+LdaHij4ffH/TvB+utodvY3Wk6xoU9pjU4LOSXMd0sIJJwVyV67WFN+MP7R+j/HLwHqPw9+FdrqPijxJ4mgOnPKdOngttMhk+WWa4kkRQu1Cx2jJJwK+r8ZGDUNvZW9oWMFvFCWOW8tAufrigD5s+Gnhh/CX7WtxpCRzPa6b4AsLFbgxtsYxylfvdM8dM1seNLeZv22Ph3OsMhhXwtqStKEJQEzRHBPQHg17/AOUgkMmxRIRgtjnHpmgxIZBIUUyAYDY5A9M0AfP/AMd4ZZP2ivgM0cMsiJqN8WdIyyr/AKK3UgYH419B0x4Y3dHZFZ05ViMlfpT6ACiiigArmviZ/wAk48V/9gm7/wDRL10tc18TP+SceK/+wTd/+iXrpw38eHqvzPOzL/ca/wDgl+TPyl8S6Fb6/YGCf5SM7Hx0/wDrV5Hq3ga90ybAX90SfnPKY553du3HvXt1x9ysi6JXODz7V/QNfDxqvm2Z/MeRcSYzKqfsIpTp78r6ej6X+a62ue3f8E5fhLo+lX1/8TfEuo6dbyDfY6NBcXCKy9pZsE5BP3R7E+tffX/Cc+G/+hg0r/wNj/8Aiq/Hi+USEs4DN6kZrBvYYyG/dr+VfHY7hv67WdadZ/dsvvP0fCcazhHljh0vm/8AI/aT/hPPDI/5mLSf/A6L/wCKpR478NHp4h0o/wDb7F/8VX4dX0ER6xqfwrnruCLfjy05PPyivMfCcF/y+f3f8E+iocVyqtJ0vx/4B+6niXWPBvizw/qGjalrekz2F/A9vNGb2LlWGDj5uvoa/LL4heAj8PfG2qaALuHUILWXFvd28gdJojyjAjjOCAfQg186Gzt9o/cx/wDfAr1P4cQ7tIcZ+X5SqBcKv3hxj6fyr2cmwDy2q4KpzRl0tbVddzy+MKUcZl/161pU7fNN2t8m018zoIrbivoj9h6Hy/jjGcY/4ltwP1WvC47b2r6B/Yri2fGyI/8AUOuB/wCg17mbr/hPr/4WflGQVb5vhV/fj+Z9/UUUV+CH9XhXCaj8WbGw8M+K9ZFhdTp4fuZLWWBMb5nQKfk+u4Dmu7rw7V/CmsyfD34n2iabO9zqGrTzWkSgbpkPl4ZeenB/KgDtNJ+MGl6zbeD5re1uceI3kijRwA1tIi5dJB2YEFSPUVlP8ZdWXxd/wjw8Cas13t84OJY9pg8zZ5v0z261zd94O1rSfjV4fS00qabw7LezawbqLHl2krwhJY25/icF+B/Ea7o6Re/8LvGp/ZZP7P8A7B8j7Tj5PM8/O3645oAp6p8W9Qi8Uato+keD9R1z+zHjjnubeVEQM67gBn0HWrfjD4n3XhvxDa6Jp/hm/wBe1CazN88dq6r5abiuCT3yDXnWp6X/AGP8WPE+p6jpPi2aOa4tprSTQz+4lVE53jeM89j2rpvHfgzXPE/xQtrzStQ1DQUXQZIV1C0WMjzTISqPvDdMg8D8aAOpsPippV/8O7vxcI7iC0tEl+0WsybZopYyVeIj+9uGPxFL4O+Jtn4o8J3+t3dncaH/AGfJLFe2l7jzLdoxk7se2CPrXmj+Fddn+B/h/wAM6bo8ljq15qUaal9r/eKrJMZZZ5DkbkkaMdO0gFXtH8FeLftvxJ0fVY7Vhr9ktxbXljG0dsJTGY2XDMSGJwTQB13hD4nap4vjF1H4N1Ky0ue1a7s7u4kQfaFxmMbOqlwQRn1qn4R+MOo+KvFEuit4K1TTpLVkS+mnljK2xdSy5x1Bx2qz8LfGlze6bpPh++8N6xpOo2VikNzJdQKLdXjUKQsgY7skZBA6elP8B6NfWHxI+IN5c2skNreTWjW8zD5ZQsbBsfQkUAOj+MGnvoFtrDWNzHZy6wdHdmxmJxKYvMP+zuH61sXXjy1tvFeo6ELeWSWw01dTuJ1xsRWZwqf7x8tj+VedWXgTUtV+B/inRp7KW21KW+v7m1jcDfu89nidfrxj61p/Dmz1bXrDxt4l1LSbrSdR1oiKGxuwokSOO2VAOCRgyGQ9e/vQBreA/inqXjq4spF8Halp2k3aNJHqNzImzaM4JUc844+teh14P+z7aL4ej0ywudI8W2mpm1eKc6k26xjO4sdo3nHQAYHfFe8UAFFFFABUF9ZQalZXFpcxrNbXEbRSxsMh0YYIP1BNT0U02ndEyipJxkrpn5x/Gz9n/wARfCnUbqY2k2oeHN5NvqcK7lVTjAlx9xuQOeCema8Wuuh5z71+wbxrKjI6h0YYKsMgivCvid+x54H8ffaLrT4X8M6rICRPp4AiLY4LRfdx9MH3r9My/iyLiqeOjr/Mv1X+X3H4hmnh/UpzdbK53j/I9GvJPZ/O3qz81bzj3rCvuQ1fRPxS/ZA+Inw/864g04eJdLjBb7XpY3OB/tRH5h+GRXzxqSPbySRSo0Mq8GORSrA/Q19tRxVDFR56E1JeR8U8HiMFU9liIOMuzVv+HXmc7e1z12f3gHvXQ3vI/CudvCFbJIAz1NOR9Jg90Bzhcda9m+HmkyWWhK0gI8wjaCOcDJ/m36Vh/CL4L+IfiTqkP9n6PeX0SsCEgiJ39856Ae54r7o+HP7EGp3kcE3ivUE0i1UY+wWREk2McAv90fhmvJljMLgpe1xM0rbLq/RbnuZ9PF5rh45VllNzk2nNr4Y22i5bXvq1e6ttqfNGm6Tc6peQ2tnbS3d1K22OCBC7ufQAcmvtX9lP4Bal8PpLrxN4jhFpqt1D5FtZEgtDESCxfHAY4HHUAc8nA9h8BfCfwt8NLUxaBpMNrIww9y3zzSf7znk/TpXX18Vm/EssdTlh8PHlg9293/l+J38OcDxyytDG42fPUjqkvhT73erfba3mFFFFfDH6uFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXC/ED4H+BfijCy+JPDVjqEpH/AB9BPLnH/bRMN+GcV3VFa06s6MuenJp91oY1qFLER5K0VJdmrr8T4t8W/wDBMfw1qd55mgeM9S0WAkkwXlql5j2Vg0ZH45rsfhn/AME8Phd4GuIb3V4rrxhqMZ3B9SbbAp9ViTA/76LV9Q0V6lTOcfVh7OVV2+Sf3rU8ujk2X0J+0p0lf5v8G2inpej2GiWi2unWVvYWy8LDbRLGg/AACrlFFeO25O7PYjFRXLFWQUUUUigooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==)">
|
61
|
+
</div>
|
62
|
+
$if(toc)$
|
63
|
+
<div id="$idprefix$TOC">
|
64
|
+
$toc$
|
65
|
+
</div>
|
66
|
+
$endif$
|
67
|
+
$body$
|
68
|
+
$for(include-after)$
|
69
|
+
$include-after$
|
70
|
+
$endfor$
|
71
|
+
<footer>
|
72
|
+
<hr>
|
73
|
+
<div style="text-align: center; text-transform: uppercase; color: #888888; font-size: 10px">Version $version$
|
74
|
+
</div>
|
75
|
+
</footer>
|
76
|
+
</body>
|
77
|
+
</html>
|
@@ -0,0 +1,1052 @@
|
|
1
|
+
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
|
2
|
+
|
3
|
+
/* ==========================================================================
|
4
|
+
HTML5 display definitions
|
5
|
+
========================================================================== */
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Correct `block` display not defined in IE 8/9.
|
9
|
+
*/
|
10
|
+
|
11
|
+
article,
|
12
|
+
aside,
|
13
|
+
details,
|
14
|
+
figcaption,
|
15
|
+
figure,
|
16
|
+
footer,
|
17
|
+
header,
|
18
|
+
hgroup,
|
19
|
+
main,
|
20
|
+
nav,
|
21
|
+
section,
|
22
|
+
summary {
|
23
|
+
display: block;
|
24
|
+
}
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Correct `inline-block` display not defined in IE 8/9.
|
28
|
+
*/
|
29
|
+
|
30
|
+
audio,
|
31
|
+
canvas,
|
32
|
+
video {
|
33
|
+
display: inline-block;
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Prevent modern browsers from displaying `audio` without controls.
|
38
|
+
* Remove excess height in iOS 5 devices.
|
39
|
+
*/
|
40
|
+
|
41
|
+
audio:not([controls]) {
|
42
|
+
display: none;
|
43
|
+
height: 0;
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Address `[hidden]` styling not present in IE 8/9.
|
48
|
+
* Hide the `template` element in IE, Safari, and Firefox < 22.
|
49
|
+
*/
|
50
|
+
|
51
|
+
[hidden],
|
52
|
+
template {
|
53
|
+
display: none;
|
54
|
+
}
|
55
|
+
|
56
|
+
/* ==========================================================================
|
57
|
+
Base
|
58
|
+
========================================================================== */
|
59
|
+
|
60
|
+
/**
|
61
|
+
* 1. Set default font family to sans-serif.
|
62
|
+
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
63
|
+
* user zoom.
|
64
|
+
*/
|
65
|
+
|
66
|
+
html {
|
67
|
+
font-family: sans-serif; /* 1 */
|
68
|
+
-ms-text-size-adjust: 100%; /* 2 */
|
69
|
+
-webkit-text-size-adjust: 100%; /* 2 */
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Remove default margin.
|
74
|
+
*/
|
75
|
+
|
76
|
+
body {
|
77
|
+
margin: 0;
|
78
|
+
}
|
79
|
+
|
80
|
+
/* ==========================================================================
|
81
|
+
Links
|
82
|
+
========================================================================== */
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Remove the gray background color from active links in IE 10.
|
86
|
+
*/
|
87
|
+
|
88
|
+
a {
|
89
|
+
background: transparent;
|
90
|
+
}
|
91
|
+
|
92
|
+
/**
|
93
|
+
* Address `outline` inconsistency between Chrome and other browsers.
|
94
|
+
*/
|
95
|
+
|
96
|
+
a:focus {
|
97
|
+
outline: thin dotted;
|
98
|
+
}
|
99
|
+
|
100
|
+
/**
|
101
|
+
* Improve readability when focused and also mouse hovered in all browsers.
|
102
|
+
*/
|
103
|
+
|
104
|
+
a:active,
|
105
|
+
a:hover {
|
106
|
+
outline: 0;
|
107
|
+
}
|
108
|
+
|
109
|
+
/* ==========================================================================
|
110
|
+
Typography
|
111
|
+
========================================================================== */
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Address variable `h1` font-size and margin within `section` and `article`
|
115
|
+
* contexts in Firefox 4+, Safari 5, and Chrome.
|
116
|
+
*/
|
117
|
+
|
118
|
+
h1 {
|
119
|
+
font-size: 2em;
|
120
|
+
margin: 0.67em 0;
|
121
|
+
}
|
122
|
+
|
123
|
+
/**
|
124
|
+
* Address styling not present in IE 8/9, Safari 5, and Chrome.
|
125
|
+
*/
|
126
|
+
|
127
|
+
abbr[title] {
|
128
|
+
border-bottom: 1px dotted;
|
129
|
+
}
|
130
|
+
|
131
|
+
/**
|
132
|
+
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
|
133
|
+
*/
|
134
|
+
|
135
|
+
b,
|
136
|
+
strong {
|
137
|
+
font-weight: bold;
|
138
|
+
}
|
139
|
+
|
140
|
+
/**
|
141
|
+
* Address styling not present in Safari 5 and Chrome.
|
142
|
+
*/
|
143
|
+
|
144
|
+
dfn {
|
145
|
+
font-style: italic;
|
146
|
+
}
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Address differences between Firefox and other browsers.
|
150
|
+
*/
|
151
|
+
|
152
|
+
hr {
|
153
|
+
-moz-box-sizing: content-box;
|
154
|
+
box-sizing: content-box;
|
155
|
+
height: 0;
|
156
|
+
}
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Address styling not present in IE 8/9.
|
160
|
+
*/
|
161
|
+
|
162
|
+
mark {
|
163
|
+
background: #ff0;
|
164
|
+
color: #000;
|
165
|
+
}
|
166
|
+
|
167
|
+
/**
|
168
|
+
* Correct font family set oddly in Safari 5 and Chrome.
|
169
|
+
*/
|
170
|
+
|
171
|
+
code,
|
172
|
+
kbd,
|
173
|
+
pre,
|
174
|
+
samp {
|
175
|
+
font-family: monospace, serif;
|
176
|
+
font-size: 1em;
|
177
|
+
}
|
178
|
+
|
179
|
+
/**
|
180
|
+
* Improve readability of pre-formatted text in all browsers.
|
181
|
+
*/
|
182
|
+
|
183
|
+
pre {
|
184
|
+
white-space: pre-wrap;
|
185
|
+
}
|
186
|
+
|
187
|
+
/**
|
188
|
+
* Set consistent quote types.
|
189
|
+
*/
|
190
|
+
|
191
|
+
q {
|
192
|
+
quotes: "\201C" "\201D" "\2018" "\2019";
|
193
|
+
}
|
194
|
+
|
195
|
+
/**
|
196
|
+
* Address inconsistent and variable font size in all browsers.
|
197
|
+
*/
|
198
|
+
|
199
|
+
small {
|
200
|
+
font-size: 80%;
|
201
|
+
}
|
202
|
+
|
203
|
+
/**
|
204
|
+
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
205
|
+
*/
|
206
|
+
|
207
|
+
sub,
|
208
|
+
sup {
|
209
|
+
font-size: 75%;
|
210
|
+
line-height: 0;
|
211
|
+
position: relative;
|
212
|
+
vertical-align: baseline;
|
213
|
+
}
|
214
|
+
|
215
|
+
sup {
|
216
|
+
top: -0.5em;
|
217
|
+
}
|
218
|
+
|
219
|
+
sub {
|
220
|
+
bottom: -0.25em;
|
221
|
+
}
|
222
|
+
|
223
|
+
/* ==========================================================================
|
224
|
+
Embedded content
|
225
|
+
========================================================================== */
|
226
|
+
|
227
|
+
/**
|
228
|
+
* Remove border when inside `a` element in IE 8/9.
|
229
|
+
*/
|
230
|
+
|
231
|
+
img {
|
232
|
+
border: 0;
|
233
|
+
}
|
234
|
+
|
235
|
+
/**
|
236
|
+
* Correct overflow displayed oddly in IE 9.
|
237
|
+
*/
|
238
|
+
|
239
|
+
svg:not(:root) {
|
240
|
+
overflow: hidden;
|
241
|
+
}
|
242
|
+
|
243
|
+
/* ==========================================================================
|
244
|
+
Figures
|
245
|
+
========================================================================== */
|
246
|
+
|
247
|
+
/**
|
248
|
+
* Address margin not present in IE 8/9 and Safari 5.
|
249
|
+
*/
|
250
|
+
|
251
|
+
.figure {
|
252
|
+
margin: 0;
|
253
|
+
padding: 20px;
|
254
|
+
text-align: center;
|
255
|
+
box-sizing: border-box;
|
256
|
+
}
|
257
|
+
|
258
|
+
.caption {
|
259
|
+
color: #6e6e6e;
|
260
|
+
font-size: 12px
|
261
|
+
}
|
262
|
+
|
263
|
+
/* ==========================================================================
|
264
|
+
Forms
|
265
|
+
========================================================================== */
|
266
|
+
|
267
|
+
/**
|
268
|
+
* Define consistent border, margin, and padding.
|
269
|
+
*/
|
270
|
+
|
271
|
+
fieldset {
|
272
|
+
border: 1px solid #c0c0c0;
|
273
|
+
margin: 0 2px;
|
274
|
+
padding: 0.35em 0.625em 0.75em;
|
275
|
+
}
|
276
|
+
|
277
|
+
/**
|
278
|
+
* 1. Correct `color` not being inherited in IE 8/9.
|
279
|
+
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
280
|
+
*/
|
281
|
+
|
282
|
+
legend {
|
283
|
+
border: 0; /* 1 */
|
284
|
+
padding: 0; /* 2 */
|
285
|
+
}
|
286
|
+
|
287
|
+
/**
|
288
|
+
* 1. Correct font family not being inherited in all browsers.
|
289
|
+
* 2. Correct font size not being inherited in all browsers.
|
290
|
+
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
|
291
|
+
*/
|
292
|
+
|
293
|
+
button,
|
294
|
+
input,
|
295
|
+
select,
|
296
|
+
textarea {
|
297
|
+
font-family: inherit; /* 1 */
|
298
|
+
font-size: 100%; /* 2 */
|
299
|
+
margin: 0; /* 3 */
|
300
|
+
}
|
301
|
+
|
302
|
+
/**
|
303
|
+
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
304
|
+
* the UA stylesheet.
|
305
|
+
*/
|
306
|
+
|
307
|
+
button,
|
308
|
+
input {
|
309
|
+
line-height: normal;
|
310
|
+
}
|
311
|
+
|
312
|
+
/**
|
313
|
+
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
314
|
+
* All other form control elements do not inherit `text-transform` values.
|
315
|
+
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
|
316
|
+
* Correct `select` style inheritance in Firefox 4+ and Opera.
|
317
|
+
*/
|
318
|
+
|
319
|
+
button,
|
320
|
+
select {
|
321
|
+
text-transform: none;
|
322
|
+
}
|
323
|
+
|
324
|
+
/**
|
325
|
+
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
326
|
+
* and `video` controls.
|
327
|
+
* 2. Correct inability to style clickable `input` types in iOS.
|
328
|
+
* 3. Improve usability and consistency of cursor style between image-type
|
329
|
+
* `input` and others.
|
330
|
+
*/
|
331
|
+
|
332
|
+
button,
|
333
|
+
html input[type="button"], /* 1 */
|
334
|
+
input[type="reset"],
|
335
|
+
input[type="submit"] {
|
336
|
+
-webkit-appearance: button; /* 2 */
|
337
|
+
cursor: pointer; /* 3 */
|
338
|
+
}
|
339
|
+
|
340
|
+
/**
|
341
|
+
* Re-set default cursor for disabled elements.
|
342
|
+
*/
|
343
|
+
|
344
|
+
button[disabled],
|
345
|
+
html input[disabled] {
|
346
|
+
cursor: default;
|
347
|
+
}
|
348
|
+
|
349
|
+
/**
|
350
|
+
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
351
|
+
* 2. Remove excess padding in IE 8/9/10.
|
352
|
+
*/
|
353
|
+
|
354
|
+
input[type="checkbox"],
|
355
|
+
input[type="radio"] {
|
356
|
+
box-sizing: border-box; /* 1 */
|
357
|
+
padding: 0; /* 2 */
|
358
|
+
}
|
359
|
+
|
360
|
+
/**
|
361
|
+
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
|
362
|
+
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
|
363
|
+
* (include `-moz` to future-proof).
|
364
|
+
*/
|
365
|
+
|
366
|
+
input[type="search"] {
|
367
|
+
-webkit-appearance: textfield; /* 1 */
|
368
|
+
-moz-box-sizing: content-box;
|
369
|
+
-webkit-box-sizing: content-box; /* 2 */
|
370
|
+
box-sizing: content-box;
|
371
|
+
}
|
372
|
+
|
373
|
+
/**
|
374
|
+
* Remove inner padding and search cancel button in Safari 5 and Chrome
|
375
|
+
* on OS X.
|
376
|
+
*/
|
377
|
+
|
378
|
+
input[type="search"]::-webkit-search-cancel-button,
|
379
|
+
input[type="search"]::-webkit-search-decoration {
|
380
|
+
-webkit-appearance: none;
|
381
|
+
}
|
382
|
+
|
383
|
+
/**
|
384
|
+
* Remove inner padding and border in Firefox 4+.
|
385
|
+
*/
|
386
|
+
|
387
|
+
button::-moz-focus-inner,
|
388
|
+
input::-moz-focus-inner {
|
389
|
+
border: 0;
|
390
|
+
padding: 0;
|
391
|
+
}
|
392
|
+
|
393
|
+
/**
|
394
|
+
* 1. Remove default vertical scrollbar in IE 8/9.
|
395
|
+
* 2. Improve readability and alignment in all browsers.
|
396
|
+
*/
|
397
|
+
|
398
|
+
textarea {
|
399
|
+
overflow: auto; /* 1 */
|
400
|
+
vertical-align: top; /* 2 */
|
401
|
+
}
|
402
|
+
|
403
|
+
/* ==========================================================================
|
404
|
+
Tables
|
405
|
+
========================================================================== */
|
406
|
+
|
407
|
+
/**
|
408
|
+
* Remove most spacing between table cells.
|
409
|
+
*/
|
410
|
+
|
411
|
+
table {
|
412
|
+
border-collapse: collapse;
|
413
|
+
border-spacing: 0;
|
414
|
+
width: 100% !important;
|
415
|
+
}
|
416
|
+
|
417
|
+
.go-top {
|
418
|
+
position: fixed;
|
419
|
+
bottom: 2em;
|
420
|
+
right: 2em;
|
421
|
+
text-decoration: none;
|
422
|
+
background-color: #E0E0E0;
|
423
|
+
font-size: 12px;
|
424
|
+
padding: 1em;
|
425
|
+
display: inline;
|
426
|
+
}
|
427
|
+
|
428
|
+
/* Github css */
|
429
|
+
|
430
|
+
html, body {
|
431
|
+
margin: auto;
|
432
|
+
padding-right: 1em;
|
433
|
+
padding-left: 1em;
|
434
|
+
max-width: 60em;
|
435
|
+
color: black;
|
436
|
+
}
|
437
|
+
|
438
|
+
*:not('#mkdbuttons') {
|
439
|
+
margin: 0;
|
440
|
+
padding: 0
|
441
|
+
}
|
442
|
+
|
443
|
+
body {
|
444
|
+
font: 13.34px helvetica, arial, freesans, clean, sans-serif;
|
445
|
+
-webkit-font-smoothing: subpixel-antialiased;
|
446
|
+
line-height: 1.4;
|
447
|
+
padding: 3px;
|
448
|
+
background: #fff;
|
449
|
+
border-radius: 3px;
|
450
|
+
-moz-border-radius: 3px;
|
451
|
+
-webkit-border-radius: 3px
|
452
|
+
}
|
453
|
+
|
454
|
+
p {
|
455
|
+
margin: 1em 0
|
456
|
+
}
|
457
|
+
|
458
|
+
a {
|
459
|
+
color: #4183c4;
|
460
|
+
text-decoration: none
|
461
|
+
}
|
462
|
+
|
463
|
+
body {
|
464
|
+
background-color: #fff;
|
465
|
+
padding: 30px;
|
466
|
+
margin: 15px;
|
467
|
+
font-size: 14px;
|
468
|
+
line-height: 1.6
|
469
|
+
}
|
470
|
+
|
471
|
+
body > *:first-child {
|
472
|
+
margin-top: 0 !important
|
473
|
+
}
|
474
|
+
|
475
|
+
body > *:last-child {
|
476
|
+
margin-bottom: 0 !important
|
477
|
+
}
|
478
|
+
|
479
|
+
@media screen {
|
480
|
+
body {
|
481
|
+
box-shadow: 0 0 0 1px #cacaca, 0 0 0 4px #eee
|
482
|
+
}
|
483
|
+
}
|
484
|
+
|
485
|
+
h1, h2, h3, h4, h5, h6 {
|
486
|
+
margin: 20px 0 10px;
|
487
|
+
padding: 0;
|
488
|
+
font-weight: bold;
|
489
|
+
-webkit-font-smoothing: subpixel-antialiased;
|
490
|
+
cursor: text
|
491
|
+
}
|
492
|
+
|
493
|
+
h1 {
|
494
|
+
font-size: 28px;
|
495
|
+
color: #000
|
496
|
+
}
|
497
|
+
|
498
|
+
h2 {
|
499
|
+
font-size: 24px;
|
500
|
+
border-bottom: 1px solid #ccc;
|
501
|
+
color: #000
|
502
|
+
}
|
503
|
+
|
504
|
+
h3 {
|
505
|
+
font-size: 18px;
|
506
|
+
color: #333
|
507
|
+
}
|
508
|
+
|
509
|
+
h4 {
|
510
|
+
font-size: 16px;
|
511
|
+
color: #333
|
512
|
+
}
|
513
|
+
|
514
|
+
h5 {
|
515
|
+
font-size: 14px;
|
516
|
+
color: #333
|
517
|
+
}
|
518
|
+
|
519
|
+
h6 {
|
520
|
+
color: #777;
|
521
|
+
font-size: 14px
|
522
|
+
}
|
523
|
+
|
524
|
+
p, blockquote, table, pre {
|
525
|
+
margin: 15px 0
|
526
|
+
}
|
527
|
+
|
528
|
+
ul {
|
529
|
+
padding-left: 30px
|
530
|
+
}
|
531
|
+
|
532
|
+
ol {
|
533
|
+
padding-left: 30px
|
534
|
+
}
|
535
|
+
|
536
|
+
ol li ul:first-of-type {
|
537
|
+
margin-top: 0
|
538
|
+
}
|
539
|
+
|
540
|
+
hr {
|
541
|
+
background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;
|
542
|
+
border: 0 none;
|
543
|
+
color: #ccc;
|
544
|
+
height: 4px;
|
545
|
+
padding: 0
|
546
|
+
}
|
547
|
+
|
548
|
+
body > h2:first-child {
|
549
|
+
margin-top: 0;
|
550
|
+
padding-top: 0
|
551
|
+
}
|
552
|
+
|
553
|
+
body > h1:first-child {
|
554
|
+
margin-top: 0;
|
555
|
+
padding-top: 0
|
556
|
+
}
|
557
|
+
|
558
|
+
body > h1:first-child + h2 {
|
559
|
+
margin-top: 0;
|
560
|
+
padding-top: 0
|
561
|
+
}
|
562
|
+
|
563
|
+
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
|
564
|
+
margin-top: 0;
|
565
|
+
padding-top: 0
|
566
|
+
}
|
567
|
+
|
568
|
+
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
|
569
|
+
margin-top: 0;
|
570
|
+
padding-top: 0
|
571
|
+
}
|
572
|
+
|
573
|
+
h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p, ul li > :first-child, ol li > :first-child {
|
574
|
+
margin-top: 0
|
575
|
+
}
|
576
|
+
|
577
|
+
dl {
|
578
|
+
padding: 0
|
579
|
+
}
|
580
|
+
|
581
|
+
dl dt {
|
582
|
+
font-size: 14px;
|
583
|
+
font-weight: bold;
|
584
|
+
font-style: italic;
|
585
|
+
padding: 0;
|
586
|
+
margin: 15px 0 5px
|
587
|
+
}
|
588
|
+
|
589
|
+
dl dt:first-child {
|
590
|
+
padding: 0
|
591
|
+
}
|
592
|
+
|
593
|
+
dl dt > :first-child {
|
594
|
+
margin-top: 0
|
595
|
+
}
|
596
|
+
|
597
|
+
dl dt > :last-child {
|
598
|
+
margin-bottom: 0
|
599
|
+
}
|
600
|
+
|
601
|
+
dl dd {
|
602
|
+
margin: 0 0 15px;
|
603
|
+
padding: 0 15px
|
604
|
+
}
|
605
|
+
|
606
|
+
dl dd > :first-child {
|
607
|
+
margin-top: 0
|
608
|
+
}
|
609
|
+
|
610
|
+
dl dd > :last-child {
|
611
|
+
margin-bottom: 0
|
612
|
+
}
|
613
|
+
|
614
|
+
blockquote {
|
615
|
+
border-left: 4px solid #DDD;
|
616
|
+
padding: 0 15px;
|
617
|
+
color: #777
|
618
|
+
}
|
619
|
+
|
620
|
+
blockquote > :first-child {
|
621
|
+
margin-top: 0
|
622
|
+
}
|
623
|
+
|
624
|
+
blockquote > :last-child {
|
625
|
+
margin-bottom: 0
|
626
|
+
}
|
627
|
+
|
628
|
+
table {
|
629
|
+
border-collapse: collapse;
|
630
|
+
border-spacing: 0;
|
631
|
+
font-size: 100%;
|
632
|
+
font: inherit
|
633
|
+
}
|
634
|
+
|
635
|
+
table th {
|
636
|
+
font-weight: bold;
|
637
|
+
border: 1px solid #ccc;
|
638
|
+
padding: 6px 13px
|
639
|
+
}
|
640
|
+
|
641
|
+
table td {
|
642
|
+
border: 1px solid #ccc;
|
643
|
+
padding: 6px 13px
|
644
|
+
}
|
645
|
+
|
646
|
+
table tr {
|
647
|
+
border-top: 1px solid #ccc;
|
648
|
+
background-color: #fff
|
649
|
+
}
|
650
|
+
|
651
|
+
table tr:nth-child(2n) {
|
652
|
+
background-color: #f8f8f8
|
653
|
+
}
|
654
|
+
|
655
|
+
img {
|
656
|
+
max-width: 100%
|
657
|
+
}
|
658
|
+
|
659
|
+
code, tt {
|
660
|
+
margin: 0 2px;
|
661
|
+
padding: 0 5px;
|
662
|
+
white-space: nowrap;
|
663
|
+
border: 1px solid #eaeaea;
|
664
|
+
background-color: #f8f8f8;
|
665
|
+
border-radius: 3px;
|
666
|
+
font-family: Consolas, 'Liberation Mono', Courier, monospace;
|
667
|
+
font-size: 12px;
|
668
|
+
color: #333
|
669
|
+
}
|
670
|
+
|
671
|
+
pre > code {
|
672
|
+
margin: 0;
|
673
|
+
padding: 0;
|
674
|
+
white-space: pre;
|
675
|
+
border: 0;
|
676
|
+
background: transparent
|
677
|
+
}
|
678
|
+
|
679
|
+
.highlight pre {
|
680
|
+
background-color: #f8f8f8;
|
681
|
+
border: 1px solid #ccc;
|
682
|
+
font-size: 13px;
|
683
|
+
line-height: 19px;
|
684
|
+
overflow: auto;
|
685
|
+
padding: 6px 10px;
|
686
|
+
border-radius: 3px
|
687
|
+
}
|
688
|
+
|
689
|
+
pre {
|
690
|
+
background-color: #f8f8f8;
|
691
|
+
border: 1px solid #ccc;
|
692
|
+
font-size: 13px;
|
693
|
+
line-height: 19px;
|
694
|
+
overflow: auto;
|
695
|
+
padding: 6px 10px;
|
696
|
+
border-radius: 3px
|
697
|
+
}
|
698
|
+
|
699
|
+
pre code, pre tt {
|
700
|
+
background-color: transparent;
|
701
|
+
border: 0
|
702
|
+
}
|
703
|
+
|
704
|
+
.poetry pre {
|
705
|
+
font-family: Georgia, Garamond, serif !important;
|
706
|
+
font-style: italic;
|
707
|
+
font-size: 110% !important;
|
708
|
+
line-height: 1.6em;
|
709
|
+
display: block;
|
710
|
+
margin-left: 1em
|
711
|
+
}
|
712
|
+
|
713
|
+
.poetry pre code {
|
714
|
+
font-family: Georgia, Garamond, serif !important;
|
715
|
+
word-break: break-all;
|
716
|
+
word-break: break-word;
|
717
|
+
-webkit-hyphens: auto;
|
718
|
+
-moz-hyphens: auto;
|
719
|
+
hyphens: auto;
|
720
|
+
white-space: pre-wrap
|
721
|
+
}
|
722
|
+
|
723
|
+
sup, sub, a.footnote {
|
724
|
+
font-size: 1.4ex;
|
725
|
+
height: 0;
|
726
|
+
line-height: 1;
|
727
|
+
vertical-align: super;
|
728
|
+
position: relative
|
729
|
+
}
|
730
|
+
|
731
|
+
sub {
|
732
|
+
vertical-align: sub;
|
733
|
+
top: -1px
|
734
|
+
}
|
735
|
+
|
736
|
+
@media print {
|
737
|
+
body {
|
738
|
+
background: #fff
|
739
|
+
}
|
740
|
+
|
741
|
+
img, pre, blockquote, table, figure {
|
742
|
+
page-break-inside: avoid
|
743
|
+
}
|
744
|
+
|
745
|
+
body {
|
746
|
+
background: #fff;
|
747
|
+
border: 0
|
748
|
+
}
|
749
|
+
|
750
|
+
code {
|
751
|
+
background-color: #fff;
|
752
|
+
color: #333 !important;
|
753
|
+
padding: 0 .2em;
|
754
|
+
border: 1px solid #dedede
|
755
|
+
}
|
756
|
+
|
757
|
+
pre {
|
758
|
+
background: #fff
|
759
|
+
}
|
760
|
+
|
761
|
+
pre code {
|
762
|
+
background-color: white !important;
|
763
|
+
overflow: visible
|
764
|
+
}
|
765
|
+
}
|
766
|
+
|
767
|
+
@media screen {
|
768
|
+
body.inverted {
|
769
|
+
color: #eee !important;
|
770
|
+
border-color: #555;
|
771
|
+
box-shadow: none
|
772
|
+
}
|
773
|
+
|
774
|
+
.inverted body, .inverted hr .inverted p, .inverted td, .inverted li, .inverted h1, .inverted h2, .inverted h3, .inverted h4, .inverted h5, .inverted h6, .inverted th, .inverted .math, .inverted caption, .inverted dd, .inverted dt, .inverted blockquote {
|
775
|
+
color: #eee !important;
|
776
|
+
border-color: #555;
|
777
|
+
box-shadow: none
|
778
|
+
}
|
779
|
+
|
780
|
+
.inverted td, .inverted th {
|
781
|
+
background: #333
|
782
|
+
}
|
783
|
+
|
784
|
+
.inverted h2 {
|
785
|
+
border-color: #555
|
786
|
+
}
|
787
|
+
|
788
|
+
.inverted hr {
|
789
|
+
border-color: #777;
|
790
|
+
border-width: 1px !important
|
791
|
+
}
|
792
|
+
|
793
|
+
::selection {
|
794
|
+
background: rgba(157, 193, 200, 0.5)
|
795
|
+
}
|
796
|
+
|
797
|
+
h1::selection {
|
798
|
+
background-color: rgba(45, 156, 208, 0.3)
|
799
|
+
}
|
800
|
+
|
801
|
+
h2::selection {
|
802
|
+
background-color: rgba(90, 182, 224, 0.3)
|
803
|
+
}
|
804
|
+
|
805
|
+
h3::selection, h4::selection, h5::selection, h6::selection, li::selection, ol::selection {
|
806
|
+
background-color: rgba(133, 201, 232, 0.3)
|
807
|
+
}
|
808
|
+
|
809
|
+
code::selection {
|
810
|
+
background-color: rgba(0, 0, 0, 0.7);
|
811
|
+
color: #eee
|
812
|
+
}
|
813
|
+
|
814
|
+
code span::selection {
|
815
|
+
background-color: rgba(0, 0, 0, 0.7) !important;
|
816
|
+
color: #eee !important
|
817
|
+
}
|
818
|
+
|
819
|
+
a::selection {
|
820
|
+
background-color: rgba(255, 230, 102, 0.2)
|
821
|
+
}
|
822
|
+
|
823
|
+
.inverted a::selection {
|
824
|
+
background-color: rgba(255, 230, 102, 0.6)
|
825
|
+
}
|
826
|
+
|
827
|
+
td::selection, th::selection, caption::selection {
|
828
|
+
background-color: rgba(180, 237, 95, 0.5)
|
829
|
+
}
|
830
|
+
|
831
|
+
.inverted {
|
832
|
+
background: #0b2531;
|
833
|
+
background: #252a2a
|
834
|
+
}
|
835
|
+
|
836
|
+
.inverted body {
|
837
|
+
background: #252a2a
|
838
|
+
}
|
839
|
+
|
840
|
+
.inverted a {
|
841
|
+
color: #acd1d5
|
842
|
+
}
|
843
|
+
}
|
844
|
+
|
845
|
+
.highlight .c {
|
846
|
+
color: #998;
|
847
|
+
font-style: italic
|
848
|
+
}
|
849
|
+
|
850
|
+
.highlight .err {
|
851
|
+
color: #a61717;
|
852
|
+
background-color: #e3d2d2
|
853
|
+
}
|
854
|
+
|
855
|
+
.highlight .k, .highlight .o {
|
856
|
+
font-weight: bold
|
857
|
+
}
|
858
|
+
|
859
|
+
.highlight .cm {
|
860
|
+
color: #998;
|
861
|
+
font-style: italic
|
862
|
+
}
|
863
|
+
|
864
|
+
.highlight .cp {
|
865
|
+
color: #999;
|
866
|
+
font-weight: bold
|
867
|
+
}
|
868
|
+
|
869
|
+
.highlight .c1 {
|
870
|
+
color: #998;
|
871
|
+
font-style: italic
|
872
|
+
}
|
873
|
+
|
874
|
+
.highlight .cs {
|
875
|
+
color: #999;
|
876
|
+
font-weight: bold;
|
877
|
+
font-style: italic
|
878
|
+
}
|
879
|
+
|
880
|
+
.highlight .gd {
|
881
|
+
color: #000;
|
882
|
+
background-color: #fdd
|
883
|
+
}
|
884
|
+
|
885
|
+
.highlight .gd .x {
|
886
|
+
color: #000;
|
887
|
+
background-color: #faa
|
888
|
+
}
|
889
|
+
|
890
|
+
.highlight .ge {
|
891
|
+
font-style: italic
|
892
|
+
}
|
893
|
+
|
894
|
+
.highlight .gr {
|
895
|
+
color: #a00
|
896
|
+
}
|
897
|
+
|
898
|
+
.highlight .gh {
|
899
|
+
color: #999
|
900
|
+
}
|
901
|
+
|
902
|
+
.highlight .gi {
|
903
|
+
color: #000;
|
904
|
+
background-color: #dfd
|
905
|
+
}
|
906
|
+
|
907
|
+
.highlight .gi .x {
|
908
|
+
color: #000;
|
909
|
+
background-color: #afa
|
910
|
+
}
|
911
|
+
|
912
|
+
.highlight .go {
|
913
|
+
color: #888
|
914
|
+
}
|
915
|
+
|
916
|
+
.highlight .gp {
|
917
|
+
color: #555
|
918
|
+
}
|
919
|
+
|
920
|
+
.highlight .gs {
|
921
|
+
font-weight: bold
|
922
|
+
}
|
923
|
+
|
924
|
+
.highlight .gu {
|
925
|
+
color: #800080;
|
926
|
+
font-weight: bold
|
927
|
+
}
|
928
|
+
|
929
|
+
.highlight .gt {
|
930
|
+
color: #a00
|
931
|
+
}
|
932
|
+
|
933
|
+
.highlight .kc, .highlight .kd, .highlight .kn, .highlight .kp, .highlight .kr {
|
934
|
+
font-weight: bold
|
935
|
+
}
|
936
|
+
|
937
|
+
.highlight .kt {
|
938
|
+
color: #458;
|
939
|
+
font-weight: bold
|
940
|
+
}
|
941
|
+
|
942
|
+
.highlight .m {
|
943
|
+
color: #099
|
944
|
+
}
|
945
|
+
|
946
|
+
.highlight .s {
|
947
|
+
color: #d14
|
948
|
+
}
|
949
|
+
|
950
|
+
.highlight .na {
|
951
|
+
color: #008080
|
952
|
+
}
|
953
|
+
|
954
|
+
.highlight .nb {
|
955
|
+
color: #0086b3
|
956
|
+
}
|
957
|
+
|
958
|
+
.highlight .nc {
|
959
|
+
color: #458;
|
960
|
+
font-weight: bold
|
961
|
+
}
|
962
|
+
|
963
|
+
.highlight .no {
|
964
|
+
color: #008080
|
965
|
+
}
|
966
|
+
|
967
|
+
.highlight .ni {
|
968
|
+
color: #800080
|
969
|
+
}
|
970
|
+
|
971
|
+
.highlight .ne, .highlight .nf {
|
972
|
+
color: #900;
|
973
|
+
font-weight: bold
|
974
|
+
}
|
975
|
+
|
976
|
+
.highlight .nn {
|
977
|
+
color: #555
|
978
|
+
}
|
979
|
+
|
980
|
+
.highlight .nt {
|
981
|
+
color: #000080
|
982
|
+
}
|
983
|
+
|
984
|
+
.highlight .nv {
|
985
|
+
color: #008080
|
986
|
+
}
|
987
|
+
|
988
|
+
.highlight .ow {
|
989
|
+
font-weight: bold
|
990
|
+
}
|
991
|
+
|
992
|
+
.highlight .w {
|
993
|
+
color: #bbb
|
994
|
+
}
|
995
|
+
|
996
|
+
.highlight .mf, .highlight .mh, .highlight .mi, .highlight .mo {
|
997
|
+
color: #099
|
998
|
+
}
|
999
|
+
|
1000
|
+
.highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .si, .highlight .sx {
|
1001
|
+
color: #d14
|
1002
|
+
}
|
1003
|
+
|
1004
|
+
.highlight .sr {
|
1005
|
+
color: #009926
|
1006
|
+
}
|
1007
|
+
|
1008
|
+
.highlight .s1 {
|
1009
|
+
color: #d14
|
1010
|
+
}
|
1011
|
+
|
1012
|
+
.highlight .ss {
|
1013
|
+
color: #990073
|
1014
|
+
}
|
1015
|
+
|
1016
|
+
.highlight .bp {
|
1017
|
+
color: #999
|
1018
|
+
}
|
1019
|
+
|
1020
|
+
.highlight .vc, .highlight .vg, .highlight .vi {
|
1021
|
+
color: #008080
|
1022
|
+
}
|
1023
|
+
|
1024
|
+
.highlight .il {
|
1025
|
+
color: #099
|
1026
|
+
}
|
1027
|
+
|
1028
|
+
.highlight .gc {
|
1029
|
+
color: #999;
|
1030
|
+
background-color: #eaf2f5
|
1031
|
+
}
|
1032
|
+
|
1033
|
+
.type-csharp .highlight .k, .type-csharp .highlight .kt {
|
1034
|
+
color: #00F
|
1035
|
+
}
|
1036
|
+
|
1037
|
+
.type-csharp .highlight .nf {
|
1038
|
+
color: #000;
|
1039
|
+
font-weight: normal
|
1040
|
+
}
|
1041
|
+
|
1042
|
+
.type-csharp .highlight .nc {
|
1043
|
+
color: #2b91af
|
1044
|
+
}
|
1045
|
+
|
1046
|
+
.type-csharp .highlight .nn {
|
1047
|
+
color: #000
|
1048
|
+
}
|
1049
|
+
|
1050
|
+
.type-csharp .highlight .s, .type-csharp .highlight .sc {
|
1051
|
+
color: #a31515
|
1052
|
+
}
|