giblish 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This class can convert the following paths:
4
+ # basedir/file_1
5
+ # basedir/file_2
6
+ # basedir/dir1/file_3
7
+ # basedir/dir1/file_4
8
+ # basedir2/dir2/dir3/file_5
9
+ #
10
+ # into the following tree:
11
+ # basedir
12
+ # file_1
13
+ # file_2
14
+ # dir1
15
+ # file_3
16
+ # file_4
17
+ # basedir2
18
+ # dir2
19
+ # dir3
20
+ # file_5
21
+ class PathTree
22
+ attr_reader :name
23
+ attr_reader :data
24
+
25
+ def initialize(tail = nil, data = nil)
26
+ @children = []
27
+ @it = nil
28
+ @name = nil
29
+ return unless tail
30
+
31
+ tail = tail.split("/") unless tail.is_a?(Array)
32
+ @name = tail.shift
33
+ if tail.length.positive?
34
+ @children << PathTree.new(tail, data)
35
+ else
36
+ @data = data
37
+ end
38
+ end
39
+
40
+ def add_path(tail,data = nil)
41
+ tail = tail.split("/") unless tail.is_a?(Array)
42
+ return if tail.empty?
43
+
44
+ ch = get_child tail[0]
45
+ if ch
46
+ tail.shift
47
+ ch.add_path tail, data
48
+ else
49
+ @children << PathTree.new(tail, data)
50
+ end
51
+ end
52
+
53
+ # Public: Visits each node by following each branch down from the
54
+ # root, one at the time.
55
+ #
56
+ # level - the number of hops from the root node
57
+ # block - the user supplied block that is executed for every visited node
58
+ # the level and node are given as block parameters
59
+ #
60
+ # Examples
61
+ # Print the name of each node together with the level of the node
62
+ # traverse_top_down{ |level, n| puts "#{level} #{n.name}" }
63
+ def traverse_top_down(level = 0, &block)
64
+ @children.each do |c|
65
+ yield(level, c)
66
+ c.traverse_top_down(level + 1, &block)
67
+ end
68
+ end
69
+
70
+ # Public: Sort the nodes on each level in the tree in lexical order but put
71
+ # leafs before non-leafs.
72
+ def sort_children
73
+ @children.sort! do |a, b|
74
+ if (a.leaf? && b.leaf?) || (!a.leaf? && !b.leaf?)
75
+ a.name <=> b.name
76
+ elsif a.leaf? && !b.leaf?
77
+ -1
78
+ else
79
+ 1
80
+ end
81
+ end
82
+ @children.each(&:sort_children)
83
+ end
84
+
85
+ # Public: is this node a leaf
86
+ #
87
+ # Returns: true if the node is a leaf, false otherwise
88
+ def leaf?
89
+ @children.length.zero?
90
+ end
91
+
92
+ private
93
+
94
+ def get_child(segment_name)
95
+ ch = @children.select { |c| c.name == segment_name }
96
+ ch.length.zero? ? nil : ch[0]
97
+ end
98
+ end
99
+
100
+ # test the class...
101
+ if __FILE__ == $PROGRAM_NAME
102
+ paths = %w[basedir/file_a
103
+ basedir/file_a
104
+ basedir/dira/file_c
105
+ basedir/dirb/file_e
106
+ basedir/dira/file_d
107
+ basedir2/dir2/dir3/file_k
108
+ basedir2/dir1/dir3/file_l
109
+ basedir2/dir1/dir3/file_l
110
+ basedir2/file_h
111
+ basedir2/dir2/dir3/file_m]
112
+
113
+ root = PathTree.new
114
+ paths.each do |p|
115
+ puts "adding path: #{p}"
116
+ root.add_path p
117
+ end
118
+ root.sort_children
119
+ root.traverse_top_down do |level, node|
120
+ puts "#{' ' * level} - #{node.name}"
121
+ end
122
+ end
@@ -0,0 +1,149 @@
1
+ require "logger"
2
+ require "pathname"
3
+ require "fileutils"
4
+
5
+ class Giblog
6
+ def self.setup
7
+ if @logger.nil?
8
+ @logger = Logger.new(STDOUT)
9
+ @logger.formatter = proc do |_severity, datetime, _progname, msg|
10
+ "#{datetime.strftime('%H:%M:%S')} - #{msg}\n"
11
+ end
12
+ end
13
+ end
14
+
15
+ def self.logger
16
+ @logger
17
+ end
18
+ end
19
+
20
+ # Public: Contains a number of generic utility methods.
21
+ module Giblish
22
+ # Helper class to ease construction of different paths for input and output
23
+ # files and directories
24
+ class PathManager
25
+ attr_reader :src_root_abs
26
+ attr_reader :dst_root_abs
27
+ attr_reader :resource_dir_abs
28
+
29
+ # Public:
30
+ #
31
+ # src_root - a string or pathname with the top directory of the input file
32
+ # tree
33
+ # dst_root - a string or pathname with the top directory of the output file
34
+ # tree
35
+ # resource_dir - a string or pathname with the directory containing
36
+ # resources
37
+ def initialize(src_root, dst_root, resource_dir = nil)
38
+ # Make sure that the source root exists in the file system
39
+ @src_root_abs = Pathname.new(src_root).realpath
40
+
41
+ # Make sure that the destination root exists and expand it to an
42
+ # absolute path
43
+ Pathname.new(dst_root).mkpath
44
+ @dst_root_abs = Pathname.new(dst_root).realpath
45
+
46
+ # Make sure that the resource dir exists if user gives a path to it
47
+ resource_dir && (@resource_dir_abs = Pathname.new(resource_dir).realpath)
48
+ end
49
+
50
+ # Public: Get the relative path from the source root dir to the
51
+ # source file dir.
52
+ #
53
+ # in_path - an absolute or relative path
54
+ def reldir_from_src_root(in_path)
55
+ p = in_path.is_a?(Pathname) ? in_path : Pathname.new(in_path)
56
+
57
+ # Get absolute source dir path
58
+ src_abs = p.directory? ? p.realpath : p.dirname.realpath
59
+
60
+ # Get relative path from source root dir
61
+ src_abs.relative_path_from(@src_root_abs)
62
+ end
63
+
64
+ # Public: Get the path to the directory where to generate the given
65
+ # file. The path is given as the relative path from the source adoc
66
+ # file to the desired output directory (required by the Asciidoctor
67
+ # API).
68
+ #
69
+ # infile_path - a string or Pathname containing the absolute path of the
70
+ # source adoc file
71
+ #
72
+ # Returns: a Pathname with the relative path from the source file to the
73
+ # output directory
74
+ def adoc_output_dir(infile_path)
75
+ # Get absolute source dir path
76
+ src_abs = self.class.closest_dir infile_path
77
+
78
+ # Get relative path from source root dir
79
+ src_rel = src_abs.relative_path_from(@src_root_abs)
80
+
81
+ # Get the destination path relative the absolute source
82
+ # root
83
+ dst_abs = @dst_root_abs.realpath.join(src_rel)
84
+ dst_abs.relative_path_from(src_abs)
85
+ end
86
+
87
+ # Public: Get the basename for a file by replacing the file
88
+ # extention of the source file with the supplied one.
89
+ #
90
+ # src_filepath - the full path of the source file
91
+ # file_ext - the file extention of the resulting file name
92
+ #
93
+ # Example
94
+ #
95
+ # Giblish::PathManager.get_new_basename(
96
+ # "/my/old/file.txt","pdf") => "file.pdf"
97
+ #
98
+ # Returns: the basename of a file that uses the supplied file extention.
99
+ def self.get_new_basename(src_filepath, file_ext)
100
+ p = Pathname.new src_filepath
101
+ newname = p.basename.to_s.reverse.sub(p.extname.reverse, ".").reverse
102
+ newname << file_ext
103
+ end
104
+
105
+ # Public: Return the absolute path to the closest directory (defined as
106
+ # - the parent dir when called with an existing file
107
+ # - the directory itself when called with an existing directory
108
+ # - the parent dir when called with a non-existing file/directory
109
+ def self.closest_dir(in_path)
110
+ sr = in_path.is_a?(Pathname) ? in_path : Pathname.new(in_path)
111
+ if sr.exist?
112
+ sr.directory? ? sr.realpath : sr.dirname.realpath
113
+ else
114
+ sr.ascend.expand_path
115
+ end
116
+ end
117
+
118
+ # Public: Find the root directory of the git repo in which the
119
+ # given dirpath resides.
120
+ #
121
+ # dirpath - a relative or absolute path to a directory that resides
122
+ # within a git repo.
123
+ #
124
+ # Returns: the root direcotry of the git repo or nil if the input path
125
+ # does not reside within a git repo.
126
+ def self.find_gitrepo_root(dirpath)
127
+ Pathname.new(dirpath).expand_path.ascend do |p|
128
+ git_dir = p.join(".git")
129
+ return p if git_dir.directory?
130
+ end
131
+ end
132
+ end
133
+
134
+ def with_captured_stderr
135
+ old_stdout = $stderr
136
+ $stderr = StringIO.new("", "w")
137
+ yield
138
+ $stderr.string
139
+ ensure
140
+ $stderr = old_stdout
141
+ end
142
+ module_function :with_captured_stderr
143
+
144
+ def to_valid_id(input_str)
145
+ id_str = "_#{input_str.downcase}"
146
+ id_str.gsub(%r{[^a-z0-9]+},"_")
147
+ end
148
+ module_function :to_valid_id
149
+ end
@@ -0,0 +1,3 @@
1
+ module Giblish
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,1979 @@
1
+ /* giblish default style sheet for asciidoc */
2
+
3
+ :root {
4
+ --giblish-green: rgba(75, 176, 3, 1);
5
+ --giblish-grey: rgba(101, 101, 101, 1);
6
+ --giblish-brown: rgba(193, 132, 11, 1);
7
+ --giblish-lightblue: rgba(51, 183, 255, 0.4);
8
+ }
9
+
10
+ @font-face {
11
+ font-family: "Ubuntu";
12
+ src: url("../fonts/Ubuntu-R.ttf") format('truetype');
13
+ font-weight: normal;
14
+ }
15
+ @font-face {
16
+ font-family: "Ubuntu";
17
+ src: url("../fonts/Ubuntu-B.ttf") format('truetype');
18
+ font-weight: bold;
19
+ }
20
+ @font-face {
21
+ font-family: "Ubuntu";
22
+ src: url("../fonts/Ubuntu-RI.ttf") format('truetype');
23
+ font-weight: normal;
24
+ font-style: italic;
25
+ }
26
+ @font-face {
27
+ font-family: "Ubuntu";
28
+ src: url("../fonts/Ubuntu-BI.ttf") format('truetype');
29
+ font-weight: bold;
30
+ font-style: italic;
31
+ }
32
+
33
+ article,
34
+ aside,
35
+ details,
36
+ figcaption,
37
+ figure,
38
+ footer,
39
+ header,
40
+ hgroup,
41
+ main,
42
+ nav,
43
+ section,
44
+ summary {
45
+ display: block
46
+ }
47
+ audio,
48
+ canvas,
49
+ video {
50
+ display: inline-block
51
+ }
52
+ audio:not([controls]) {
53
+ display: none;
54
+ height: 0
55
+ }
56
+ [hidden],
57
+ template {
58
+ display: none
59
+ }
60
+ script {
61
+ display: none!important
62
+ }
63
+ html {
64
+ font-family: Ubuntu;
65
+ -ms-text-size-adjust: 100%;
66
+ -webkit-text-size-adjust: 100%
67
+ }
68
+ a {
69
+ background: transparent
70
+ }
71
+ a:focus {
72
+ outline: thin dotted
73
+ }
74
+ a:active,
75
+ a:hover {
76
+ outline: 0
77
+ }
78
+ h1 {
79
+ font-size: 2.125em;
80
+ margin: .67em 0
81
+ }
82
+ h2 {
83
+ font-size: 1.6875em;
84
+ }
85
+ abbr[title] {
86
+ border-bottom: 1px dotted
87
+ }
88
+ b,
89
+ strong {
90
+ font-weight: bold
91
+ }
92
+ dfn {
93
+ font-style: italic
94
+ }
95
+ hr {
96
+ -moz-box-sizing: content-box;
97
+ box-sizing: content-box;
98
+ height: 0
99
+ }
100
+ mark {
101
+ background: #ff0;
102
+ color: #000
103
+ }
104
+ code,
105
+ kbd,
106
+ pre,
107
+ samp {
108
+ font-family: monospace;
109
+ font-size: 0.8em;
110
+ }
111
+ pre {
112
+ white-space: pre-wrap
113
+ }
114
+ q {
115
+ quotes: "\201C" "\201D" "\2018" "\2019"
116
+ }
117
+ small {
118
+ font-size: 80%
119
+ }
120
+ sub,
121
+ sup {
122
+ font-size: 75%;
123
+ line-height: 0;
124
+ position: relative;
125
+ vertical-align: baseline
126
+ }
127
+ sup {
128
+ top: -.5em
129
+ }
130
+ sub {
131
+ bottom: -.25em
132
+ }
133
+ img {
134
+ border: 0
135
+ }
136
+ svg:not(:root) {
137
+ overflow: hidden
138
+ }
139
+ figure {
140
+ margin: 0
141
+ }
142
+ fieldset {
143
+ border: 1px solid silver;
144
+ margin: 0 2px;
145
+ padding: .35em .625em .75em
146
+ }
147
+ legend {
148
+ border: 0;
149
+ padding: 0
150
+ }
151
+ button,
152
+ input,
153
+ select,
154
+ textarea {
155
+ font-family: inherit;
156
+ font-size: 100%;
157
+ margin: 0
158
+ }
159
+ button,
160
+ input {
161
+ line-height: normal
162
+ }
163
+ button,
164
+ select {
165
+ text-transform: none
166
+ }
167
+ button,
168
+ html input[type="button"],
169
+ input[type="reset"],
170
+ input[type="submit"] {
171
+ -webkit-appearance: button;
172
+ cursor: pointer
173
+ }
174
+ button[disabled],
175
+ html input[disabled] {
176
+ cursor: default
177
+ }
178
+ input[type="checkbox"],
179
+ input[type="radio"] {
180
+ box-sizing: border-box;
181
+ padding: 0
182
+ }
183
+ input[type="search"] {
184
+ -webkit-appearance: textfield;
185
+ -moz-box-sizing: content-box;
186
+ -webkit-box-sizing: content-box;
187
+ box-sizing: content-box
188
+ }
189
+ input[type="search"]::-webkit-search-cancel-button,
190
+ input[type="search"]::-webkit-search-decoration {
191
+ -webkit-appearance: none
192
+ }
193
+ button::-moz-focus-inner,
194
+ input::-moz-focus-inner {
195
+ border: 0;
196
+ padding: 0
197
+ }
198
+ textarea {
199
+ overflow: auto;
200
+ vertical-align: top
201
+ }
202
+ table {
203
+ border-collapse: collapse;
204
+ border-spacing: 0
205
+ }
206
+ *,
207
+ *:before,
208
+ *:after {
209
+ -moz-box-sizing: border-box;
210
+ -webkit-box-sizing: border-box;
211
+ box-sizing: border-box
212
+ }
213
+ html,
214
+ body {
215
+ color: black;
216
+ padding: 0;
217
+ margin: 0;
218
+ font-size: 16pt;
219
+ font-weight: 400;
220
+ font-style: normal;
221
+ line-height: 1;
222
+ position: relative;
223
+ cursor: auto;
224
+ tab-size: 4;
225
+ -moz-osx-font-smoothing: grayscale;
226
+ -webkit-font-smoothing: antialiased
227
+ }
228
+ html {
229
+ background-color: #fff;
230
+ }
231
+ body {
232
+ background-image: url("../images/giblish_logo.png");
233
+ background-position: 31px 31px;
234
+ background-repeat: no-repeat;
235
+ /*padding-top: 93px;*/
236
+ }
237
+ a:hover {
238
+ cursor: pointer
239
+ }
240
+ img,
241
+ object,
242
+ embed {
243
+ max-width: 100%;
244
+ height: auto
245
+ }
246
+ object,
247
+ embed {
248
+ height: 100%
249
+ }
250
+ img {
251
+ -ms-interpolation-mode: bicubic
252
+ }
253
+ .left {
254
+ float: left!important
255
+ }
256
+ .right {
257
+ float: right!important
258
+ }
259
+ .text-left {
260
+ text-align: left!important
261
+ }
262
+ .text-right {
263
+ text-align: right!important
264
+ }
265
+ .text-center {
266
+ text-align: center!important
267
+ }
268
+ .text-justify {
269
+ text-align: justify!important
270
+ }
271
+ .hide {
272
+ display: none
273
+ }
274
+ img,
275
+ object,
276
+ svg {
277
+ display: inline-block;
278
+ vertical-align: middle
279
+ }
280
+ textarea {
281
+ height: auto;
282
+ min-height: 50px
283
+ }
284
+ select {
285
+ width: 100%
286
+ }
287
+ .center {
288
+ margin-left: auto;
289
+ margin-right: auto
290
+ }
291
+ .spread {
292
+ width: 100%
293
+ }
294
+ p.lead,
295
+ .paragraph.lead>p,
296
+ #preamble>.sectionbody>.paragraph:first-of-type p {
297
+ line-height: 1.6
298
+ }
299
+ .subheader,
300
+ .admonitionblock td.content>.title,
301
+ .audioblock>.title,
302
+ .exampleblock>.title,
303
+ .imageblock>.title,
304
+ .listingblock>.title,
305
+ .literalblock>.title,
306
+ .stemblock>.title,
307
+ .openblock>.title,
308
+ .paragraph>.title,
309
+ .quoteblock>.title,
310
+ table.tableblock>.title,
311
+ .verseblock>.title,
312
+ .videoblock>.title,
313
+ .dlist>.title,
314
+ .olist>.title,
315
+ .ulist>.title,
316
+ .qlist>.title,
317
+ .hdlist>.title {
318
+ font-size:0.8em;
319
+ line-height: 1.45;
320
+ font-weight: 400;
321
+ margin-top: 0;
322
+ margin-bottom: .25em
323
+ }
324
+ div,
325
+ dl,
326
+ dt,
327
+ dd,
328
+ ul,
329
+ ol,
330
+ li,
331
+ h1,
332
+ h2,
333
+ h3,
334
+ #toctitle,
335
+ .sidebarblock>.content>.title,
336
+ h4,
337
+ h5,
338
+ h6,
339
+ pre,
340
+ form,
341
+ p,
342
+ blockquote,
343
+ th,
344
+ td {
345
+ margin: 0;
346
+ padding: 0;
347
+ direction: ltr
348
+ }
349
+ a {
350
+ color: var(--giblish-brown);
351
+ text-decoration: none;
352
+ line-height: inherit
353
+ }
354
+ a:hover,
355
+ a:focus {
356
+ color: var(--giblish-lightblue);
357
+ text-decoration: underline;
358
+ }
359
+ a img {
360
+ border: none
361
+ }
362
+ p {
363
+ font-family: inherit;
364
+ font-weight: 400;
365
+ line-height: 1.4;
366
+ margin-bottom: 1.25em;
367
+ text-rendering: optimizeLegibility
368
+ }
369
+ p aside {
370
+ font-size: .875em;
371
+ line-height: 1.35;
372
+ font-style: italic
373
+ }
374
+ h1,
375
+ h2,
376
+ h3,
377
+ #toctitle,
378
+ .sidebarblock>.content>.title,
379
+ h4,
380
+ h5,
381
+ h6 {
382
+ font-weight: 300;
383
+ font-style: normal;
384
+ color: var(--giblish-green);
385
+ text-rendering: optimizeLegibility;
386
+ margin-top: 1em;
387
+ margin-bottom: .5em;
388
+ line-height: 1.0125em
389
+ }
390
+ h1 small,
391
+ h2 small,
392
+ h3 small,
393
+ #toctitle small,
394
+ .sidebarblock>.content>.title small,
395
+ h4 small,
396
+ h5 small,
397
+ h6 small {
398
+ font-size: 60%;
399
+ line-height: 0
400
+ }
401
+ h1 {
402
+ font-size: 2.125em;
403
+ }
404
+ h2,
405
+ #toctitle,
406
+ .sidebarblock>.content>.title {
407
+ font-size: 1.6875em;
408
+ }
409
+ h3 {
410
+ font-size: 1.375em
411
+ }
412
+ h4,
413
+ h5 {
414
+ font-size: 1.125em
415
+ }
416
+ h6 {
417
+ font-size: 1em
418
+ }
419
+ h1:first-of-type {
420
+ padding: 5px 0 0;
421
+ border: solid #ddddd8;
422
+ border-width: 0px 0 0;
423
+ }
424
+ hr {
425
+ border: solid #ddddd8;
426
+ border-width: 1px 0 0;
427
+ clear: both;
428
+ margin: 1.25em 0 1.1875em;
429
+ height: 0
430
+ }
431
+ em,
432
+ i {
433
+ font-style: italic;
434
+ line-height: inherit
435
+ }
436
+ strong,
437
+ b {
438
+ font-weight: bold;
439
+ line-height: inherit
440
+ }
441
+ small {
442
+ font-size: 60%;
443
+ line-height: inherit
444
+ }
445
+ code {
446
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
447
+ font-weight: 400;
448
+ color: rgba(0, 0, 0, .9)
449
+ }
450
+ ul,
451
+ ol,
452
+ dl {
453
+ /*font-size: 1em;*/
454
+ line-height: 1.3;
455
+ margin-bottom: 1.25em;
456
+ list-style-position: outside;
457
+ font-family: inherit
458
+ }
459
+ ul,
460
+ ol,
461
+ ul.no-bullet,
462
+ ol.no-bullet {
463
+ margin-left: 1.5em
464
+ }
465
+ ul li ul,
466
+ ul li ol {
467
+ margin-left: 1.25em;
468
+ margin-bottom: 0;
469
+ font-size: 1em
470
+ }
471
+ ul.square li ul,
472
+ ul.circle li ul,
473
+ ul.disc li ul {
474
+ list-style: inherit
475
+ }
476
+ ul.square {
477
+ list-style-type: square
478
+ }
479
+ ul.circle {
480
+ list-style-type: circle
481
+ }
482
+ ul.disc {
483
+ list-style-type: disc
484
+ }
485
+ ul.no-bullet {
486
+ list-style: none
487
+ }
488
+ ol li ul,
489
+ ol li ol {
490
+ margin-left: 1.25em;
491
+ margin-bottom: 0
492
+ }
493
+ dl dt {
494
+ margin-bottom: .3125em;
495
+ font-weight: bold
496
+ }
497
+ dl dd {
498
+ margin-bottom: 1.25em
499
+ }
500
+ abbr,
501
+ acronym {
502
+ text-transform: uppercase;
503
+ font-size: 90%;
504
+ color: rgba(0, 0, 0, .8);
505
+ border-bottom: 1px dotted #ddd;
506
+ cursor: help
507
+ }
508
+ abbr {
509
+ text-transform: none
510
+ }
511
+ blockquote {
512
+ margin: 0 0 1.25em;
513
+ padding: .5625em 1.25em 0 1.1875em;
514
+ border-left: 1px solid #ddd
515
+ }
516
+ blockquote cite {
517
+ display: block;
518
+ /* font-size: .9375em; */
519
+ color: black;
520
+ }
521
+ blockquote cite:before {
522
+ content: "\2014 \0020"
523
+ }
524
+ blockquote cite a,
525
+ blockquote cite a:visited {
526
+ color: black
527
+ }
528
+ blockquote,
529
+ blockquote p {
530
+ line-height: 1.6;
531
+ color: rgba(0, 0, 0, .85)
532
+ }
533
+ table {
534
+ background: #fff;
535
+ margin-bottom: 1.25em;
536
+ /*border: solid 3px var(--giblish-green)*/
537
+ border: solid 1px #dedede
538
+ }
539
+ table thead,
540
+ table tfoot {
541
+ background: #f7f8f7;
542
+ font-weight: bold
543
+ }
544
+ table thead tr th,
545
+ table thead tr td,
546
+ table tfoot tr th,
547
+ table tfoot tr td {
548
+ padding: .5em .625em .625em;
549
+ font-size: inherit;
550
+ color: black;
551
+ text-align: left
552
+ }
553
+ table tr th,
554
+ table tr td {
555
+ padding: .5625em .625em;
556
+ font-size: inherit;
557
+ color: black;
558
+ }
559
+ table tr.even,
560
+ table tr.alt,
561
+ table tr:nth-of-type(even) {
562
+ background: #f8f8f7
563
+ }
564
+ table thead tr th,
565
+ table tfoot tr th,
566
+ table tbody tr td,
567
+ table tr td,
568
+ table tfoot tr td {
569
+ display: table-cell;
570
+ line-height: 1.6
571
+ }
572
+ h1,
573
+ h2,
574
+ h3,
575
+ #toctitle,
576
+ .sidebarblock>.content>.title,
577
+ h4,
578
+ h5,
579
+ h6 {
580
+ line-height: 1.2;
581
+ word-spacing: -.05em
582
+ }
583
+ h1 strong,
584
+ h2 strong,
585
+ h3 strong,
586
+ #toctitle strong,
587
+ .sidebarblock>.content>.title strong,
588
+ h4 strong,
589
+ h5 strong,
590
+ h6 strong {
591
+ font-weight: 400
592
+ }
593
+ .clearfix:before,
594
+ .clearfix:after,
595
+ .float-group:before,
596
+ .float-group:after {
597
+ content: " ";
598
+ display: table
599
+ }
600
+ .clearfix:after,
601
+ .float-group:after {
602
+ clear: both
603
+ }
604
+ *:not(pre)>code {
605
+ /* font-size: .9375em; */
606
+ font-style: normal!important;
607
+ letter-spacing: 0;
608
+ padding: .1em .5ex;
609
+ word-spacing: -.15em;
610
+ background-color: #f7f7f8;
611
+ -webkit-border-radius: 4px;
612
+ border-radius: 4px;
613
+ line-height: 1.45;
614
+ text-rendering: optimizeSpeed;
615
+ word-wrap: break-word
616
+ }
617
+ *:not(pre)>code.nobreak {
618
+ word-wrap: normal
619
+ }
620
+ *:not(pre)>code.nowrap {
621
+ white-space: nowrap
622
+ }
623
+ pre,
624
+ pre>code {
625
+ line-height: 1.45;
626
+ color: rgba(0, 0, 0, .9);
627
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
628
+ font-weight: 400;
629
+ text-rendering: optimizeSpeed
630
+ }
631
+ em em {
632
+ font-style: normal
633
+ }
634
+ strong strong {
635
+ font-weight: 400
636
+ }
637
+ .keyseq {
638
+ color: rgba(51, 51, 51, .8)
639
+ }
640
+ kbd {
641
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
642
+ display: inline-block;
643
+ color: rgba(0, 0, 0, .8);
644
+ font-size: .65em;
645
+ line-height: 1.45;
646
+ background-color: #f7f7f7;
647
+ border: 1px solid #ccc;
648
+ -webkit-border-radius: 3px;
649
+ border-radius: 3px;
650
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .2), 0 0 0 .1em white inset;
651
+ box-shadow: 0 1px 0 rgba(0, 0, 0, .2), 0 0 0 .1em #fff inset;
652
+ margin: 0 .15em;
653
+ padding: .2em .5em;
654
+ vertical-align: middle;
655
+ position: relative;
656
+ top: -.1em;
657
+ white-space: nowrap
658
+ }
659
+ .keyseq kbd:first-child {
660
+ margin-left: 0
661
+ }
662
+ .keyseq kbd:last-child {
663
+ margin-right: 0
664
+ }
665
+ .menuseq,
666
+ .menu {
667
+ color: rgba(0, 0, 0, .8)
668
+ }
669
+ b.button:before,
670
+ b.button:after {
671
+ position: relative;
672
+ top: -1px;
673
+ font-weight: 400
674
+ }
675
+ b.button:before {
676
+ content: "[";
677
+ padding: 0 3px 0 2px
678
+ }
679
+ b.button:after {
680
+ content: "]";
681
+ padding: 0 2px 0 3px
682
+ }
683
+ p a>code:hover {
684
+ color: rgba(0, 0, 0, .9)
685
+ }
686
+ #header,
687
+ #content,
688
+ #footnotes,
689
+ #footer {
690
+ width: 100%;
691
+ margin-left: auto;
692
+ margin-right: auto;
693
+ margin-top: 0;
694
+ margin-bottom: 0;
695
+ max-width: 62.5em;
696
+ *zoom: 1;
697
+ position: relative;
698
+ padding-left: .9375em;
699
+ padding-right: .9375em
700
+ }
701
+ #header:before,
702
+ #header:after,
703
+ #content:before,
704
+ #content:after,
705
+ #footnotes:before,
706
+ #footnotes:after,
707
+ #footer:before,
708
+ #footer:after {
709
+ content: " ";
710
+ display: table
711
+ }
712
+ #header:after,
713
+ #content:after,
714
+ #footnotes:after,
715
+ #footer:after {
716
+ clear: both
717
+ }
718
+ #content {
719
+ margin-top: 1.25em
720
+ }
721
+ #content:before {
722
+ content: none
723
+ }
724
+ #header>h1:first-child {
725
+ margin-top: 2.25rem;
726
+ margin-bottom: 0
727
+ }
728
+ #header>h1:first-child+#toc {
729
+ margin-top: 8px;
730
+ border-top: 0px solid #ddddd8
731
+ }
732
+ #header>h1:only-child,
733
+ body.toc2 #header>h1:nth-last-child(2) {
734
+ border-bottom: 0px solid #ddddd8;
735
+ padding-bottom: 8px
736
+ }
737
+ #header .details {
738
+ border-bottom: 0px solid #ddddd8;
739
+ line-height: 1.45;
740
+ padding-top: .25em;
741
+ padding-bottom: .25em;
742
+ padding-left: .25em;
743
+ color: rgba(0, 0, 0, .6);
744
+ display: -ms-flexbox;
745
+ display: -webkit-flex;
746
+ display: flex;
747
+ -ms-flex-flow: row wrap;
748
+ -webkit-flex-flow: row wrap;
749
+ flex-flow: row wrap
750
+ }
751
+ #header .details span:first-child {
752
+ margin-left: -.125em
753
+ }
754
+ #header .details span.email a {
755
+ color: rgba(0, 0, 0, .85)
756
+ }
757
+ #header .details br {
758
+ display: none
759
+ }
760
+ #header .details br+span:before {
761
+ content: "\00a0\2013\00a0"
762
+ }
763
+ #header .details br+span.author:before {
764
+ content: "\00a0\22c5\00a0";
765
+ color: rgba(0, 0, 0, .85)
766
+ }
767
+ #header .details br+span#revremark:before {
768
+ content: "\00a0|\00a0"
769
+ }
770
+ #header #revnumber {
771
+ text-transform: capitalize
772
+ }
773
+ #header #revnumber:after {
774
+ content: "\00a0"
775
+ }
776
+ #content>h1:first-child:not([class]) {
777
+ border-bottom: 0px solid #ddddd8;
778
+ padding-bottom: 8px;
779
+ margin-top: 0;
780
+ padding-top: 1rem;
781
+ margin-bottom: 1.25rem
782
+ }
783
+ #toc {
784
+ border-bottom: 0px solid #efefed;
785
+ padding-bottom: .5em
786
+ }
787
+ #toc>ul {
788
+ margin-left: .125em
789
+ }
790
+ #toc ul.sectlevel0>li>a {
791
+ font-style: italic
792
+ }
793
+ #toc ul.sectlevel0 ul.sectlevel1 {
794
+ margin: .5em 0
795
+ }
796
+ #toc ul {
797
+ list-style-type: none
798
+ }
799
+ #toc li {
800
+ line-height: 1.3334;
801
+ margin-top: .3334em
802
+ }
803
+ #toc a {
804
+ text-decoration: none
805
+ }
806
+ #toc a:active {
807
+ text-decoration: underline
808
+ }
809
+ #toctitle {
810
+ color: var(--giblish-green);
811
+ font-size: 1.6875em
812
+ }
813
+ @media only screen and (min-width: 768px) {
814
+ body.toc2 {
815
+ background-position: 286px 31px;
816
+ padding-left: 255px;
817
+ padding-right: 0
818
+ }
819
+ #toc.toc2 {
820
+ margin-top: 0!important;
821
+ background-color: #f8f8f7;
822
+ position: fixed;
823
+ width: 255px;
824
+ left: 0;
825
+ top: 0;
826
+ border-right: 1px solid #efefed;
827
+ border-top-width: 0!important;
828
+ border-bottom-width: 0!important;
829
+ z-index: 1000;
830
+ padding: 1.25em 1em;
831
+ height: 100%;
832
+ overflow: auto
833
+ }
834
+ #toc.toc2 #toctitle {
835
+ margin-top: 0;
836
+ margin-bottom: .8rem;
837
+ font-size: 1.2em
838
+ }
839
+ #toc.toc2>ul {
840
+ font-size: .9em;
841
+ margin-bottom: 0
842
+ }
843
+ #toc.toc2 ul ul {
844
+ margin-left: 0;
845
+ padding-left: 1em
846
+ }
847
+ #toc.toc2 ul.sectlevel0 ul.sectlevel1 {
848
+ padding-left: 0;
849
+ margin-top: .5em;
850
+ margin-bottom: .5em
851
+ }
852
+ body.toc2.toc-right {
853
+ padding-left: 0;
854
+ padding-right: 255px;
855
+ }
856
+ body.toc2.toc-right #toc.toc2 {
857
+ border-right-width: 0;
858
+ border-left: 1px solid #efefed;
859
+ left: auto;
860
+ right: 0
861
+ }
862
+ }
863
+ @media only screen and (min-width: 1280px) {
864
+ body.toc2 {
865
+ background-position: 371px 31px;
866
+ padding-left: 340px;
867
+ padding-right: 0
868
+ }
869
+ #toc.toc2 {
870
+ width: 340px
871
+ }
872
+ #toc.toc2 #toctitle {
873
+ font-size: 1.375em
874
+ }
875
+ #toc.toc2>ul {
876
+ font-size: .95em
877
+ }
878
+ #toc.toc2 ul ul {
879
+ padding-left: 1.25em
880
+ }
881
+ body.toc2.toc-right {
882
+ padding-left: 0;
883
+ padding-right: 340px
884
+ }
885
+ }
886
+ #content #toc {
887
+ border-style: solid;
888
+ border-width: 0px;
889
+ border-color: #e0e0dc;
890
+ margin-bottom: 1.25em;
891
+ padding: 1.25em;
892
+ background: #f8f8f7;
893
+ -webkit-border-radius: 4px;
894
+ border-radius: 4px
895
+ }
896
+ #content #toc>:first-child {
897
+ margin-top: 0
898
+ }
899
+ #content #toc>:last-child {
900
+ margin-bottom: 0
901
+ }
902
+ #footer {
903
+ max-width: 100%;
904
+ background-color: var(--giblish-green);
905
+ padding: 1.25em
906
+ }
907
+ #footer-text {
908
+ color: white;
909
+ line-height: 1.44
910
+ }
911
+ .sect1 {
912
+ padding-bottom: .625em
913
+ }
914
+ .sect1+.sect1 {
915
+ border-top: 0px solid #efefed
916
+ }
917
+ #content h1>a.anchor,
918
+ h2>a.anchor,
919
+ h3>a.anchor,
920
+ #toctitle>a.anchor,
921
+ .sidebarblock>.content>.title>a.anchor,
922
+ h4>a.anchor,
923
+ h5>a.anchor,
924
+ h6>a.anchor {
925
+ position: absolute;
926
+ z-index: 1001;
927
+ width: 1.5ex;
928
+ margin-left: -1.5ex;
929
+ display: block;
930
+ text-decoration: none!important;
931
+ visibility: hidden;
932
+ text-align: center;
933
+ font-weight: 400
934
+ }
935
+ #content h1>a.anchor:before,
936
+ h2>a.anchor:before,
937
+ h3>a.anchor:before,
938
+ #toctitle>a.anchor:before,
939
+ .sidebarblock>.content>.title>a.anchor:before,
940
+ h4>a.anchor:before,
941
+ h5>a.anchor:before,
942
+ h6>a.anchor:before {
943
+ content: "\00A7";
944
+ /*font-size: .85em;*/
945
+ display: block;
946
+ padding-top: .1em
947
+ }
948
+ #content h1:hover>a.anchor,
949
+ #content h1>a.anchor:hover,
950
+ h2:hover>a.anchor,
951
+ h2>a.anchor:hover,
952
+ h3:hover>a.anchor,
953
+ #toctitle:hover>a.anchor,
954
+ .sidebarblock>.content>.title:hover>a.anchor,
955
+ h3>a.anchor:hover,
956
+ #toctitle>a.anchor:hover,
957
+ .sidebarblock>.content>.title>a.anchor:hover,
958
+ h4:hover>a.anchor,
959
+ h4>a.anchor:hover,
960
+ h5:hover>a.anchor,
961
+ h5>a.anchor:hover,
962
+ h6:hover>a.anchor,
963
+ h6>a.anchor:hover {
964
+ visibility: visible
965
+ }
966
+ #content h1>a.link,
967
+ h2>a.link,
968
+ h3>a.link,
969
+ #toctitle>a.link,
970
+ .sidebarblock>.content>.title>a.link,
971
+ h4>a.link,
972
+ h5>a.link,
973
+ h6>a.link {
974
+ color: #656565;
975
+ text-decoration: none
976
+ }
977
+ #content h1>a.link:hover,
978
+ h2>a.link:hover,
979
+ h3>a.link:hover,
980
+ #toctitle>a.link:hover,
981
+ .sidebarblock>.content>.title>a.link:hover,
982
+ h4>a.link:hover,
983
+ h5>a.link:hover,
984
+ h6>a.link:hover {
985
+ color: #a53221
986
+ }
987
+ .audioblock,
988
+ .imageblock,
989
+ .literalblock,
990
+ .listingblock,
991
+ .stemblock,
992
+ .videoblock {
993
+ margin-bottom: 1.25em
994
+ }
995
+ .admonitionblock td.content>.title,
996
+ .audioblock>.title,
997
+ .exampleblock>.title,
998
+ .imageblock>.title,
999
+ .listingblock>.title,
1000
+ .literalblock>.title,
1001
+ .stemblock>.title,
1002
+ .openblock>.title,
1003
+ .paragraph>.title,
1004
+ .quoteblock>.title,
1005
+ table.tableblock>.title,
1006
+ .verseblock>.title,
1007
+ .videoblock>.title,
1008
+ .dlist>.title,
1009
+ .olist>.title,
1010
+ .ulist>.title,
1011
+ .qlist>.title,
1012
+ .hdlist>.title {
1013
+ text-rendering: optimizeLegibility;
1014
+ text-align: left;
1015
+ font-size: 1em;
1016
+ font-style: italic;
1017
+ }
1018
+ table.tableblock>caption.title {
1019
+ font-size: 0.8em;
1020
+ white-space: nowrap;
1021
+ overflow: visible;
1022
+ max-width: 0
1023
+ }
1024
+ .paragraph.lead>p,
1025
+ #preamble>.sectionbody>.paragraph:first-of-type p {
1026
+ color: rgba(0, 0, 0, .85)
1027
+ }
1028
+ table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p {
1029
+ font-size: inherit
1030
+ }
1031
+ .admonitionblock>table {
1032
+ border-collapse: separate;
1033
+ border: 0;
1034
+ background: none;
1035
+ width: 100%
1036
+ }
1037
+ .admonitionblock>table td.icon {
1038
+ text-align: center;
1039
+ width: 80px
1040
+ }
1041
+ .admonitionblock>table td.icon img {
1042
+ max-width: none
1043
+ }
1044
+ .admonitionblock>table td.icon .title {
1045
+ font-size: 0.8em;
1046
+ font-weight: bold;
1047
+ text-transform: uppercase
1048
+ }
1049
+ .admonitionblock>table td.content {
1050
+ padding-left: 1.125em;
1051
+ padding-right: 1.25em;
1052
+ border-left: 1px solid #ddddd8;
1053
+ color: black;
1054
+ }
1055
+ .admonitionblock>table td.content>:last-child>:last-child {
1056
+ margin-bottom: 0
1057
+ }
1058
+ .exampleblock>.content {
1059
+ border-style: solid;
1060
+ border-width: 1px;
1061
+ border-color: #e6e6e6;
1062
+ margin-bottom: 1.25em;
1063
+ padding: 1.25em;
1064
+ background: #fff;
1065
+ -webkit-border-radius: 4px;
1066
+ border-radius: 4px
1067
+ }
1068
+ .exampleblock>.content>:first-child {
1069
+ margin-top: 0
1070
+ }
1071
+ .exampleblock>.content>:last-child {
1072
+ margin-bottom: 0
1073
+ }
1074
+ .sidebarblock {
1075
+ border-style: solid;
1076
+ border-width: 1px;
1077
+ border-color: #e0e0dc;
1078
+ margin-bottom: 1.25em;
1079
+ padding: 1.25em;
1080
+ background: #f8f8f7;
1081
+ -webkit-border-radius: 4px;
1082
+ border-radius: 4px
1083
+ }
1084
+ .sidebarblock>:first-child {
1085
+ margin-top: 0
1086
+ }
1087
+ .sidebarblock>:last-child {
1088
+ margin-bottom: 0
1089
+ }
1090
+ .sidebarblock>.content>.title {
1091
+ color: #7a2518;
1092
+ margin-top: 0;
1093
+ text-align: center
1094
+ }
1095
+ .exampleblock>.content>:last-child>:last-child,
1096
+ .exampleblock>.content .olist>ol>li:last-child>:last-child,
1097
+ .exampleblock>.content .ulist>ul>li:last-child>:last-child,
1098
+ .exampleblock>.content .qlist>ol>li:last-child>:last-child,
1099
+ .sidebarblock>.content>:last-child>:last-child,
1100
+ .sidebarblock>.content .olist>ol>li:last-child>:last-child,
1101
+ .sidebarblock>.content .ulist>ul>li:last-child>:last-child,
1102
+ .sidebarblock>.content .qlist>ol>li:last-child>:last-child {
1103
+ margin-bottom: 0
1104
+ }
1105
+ .literalblock pre,
1106
+ .listingblock pre:not(.highlight),
1107
+ .listingblock pre[class="highlight"],
1108
+ .listingblock pre[class^="highlight "],
1109
+ .listingblock pre.CodeRay,
1110
+ .listingblock pre.prettyprint {
1111
+ background: #f7f7f8
1112
+ }
1113
+ .sidebarblock .literalblock pre,
1114
+ .sidebarblock .listingblock pre:not(.highlight),
1115
+ .sidebarblock .listingblock pre[class="highlight"],
1116
+ .sidebarblock .listingblock pre[class^="highlight "],
1117
+ .sidebarblock .listingblock pre.CodeRay,
1118
+ .sidebarblock .listingblock pre.prettyprint {
1119
+ background: #f2f1f1
1120
+ }
1121
+ .literalblock pre,
1122
+ .literalblock pre[class],
1123
+ .listingblock pre,
1124
+ .listingblock pre[class] {
1125
+ -webkit-border-radius: 4px;
1126
+ border-radius: 4px;
1127
+ word-wrap: break-word;
1128
+ padding: 1em;
1129
+ /*font-size: .8125em*/
1130
+ }
1131
+ .literalblock pre.nowrap,
1132
+ .literalblock pre[class].nowrap,
1133
+ .listingblock pre.nowrap,
1134
+ .listingblock pre[class].nowrap {
1135
+ overflow-x: auto;
1136
+ white-space: pre;
1137
+ word-wrap: normal
1138
+ }
1139
+ .literalblock.output pre {
1140
+ color: #f7f7f8;
1141
+ background-color: rgba(0, 0, 0, .9)
1142
+ }
1143
+ .listingblock pre.highlightjs {
1144
+ padding: 0
1145
+ }
1146
+ .listingblock pre.highlightjs>code {
1147
+ padding: 1em;
1148
+ -webkit-border-radius: 4px;
1149
+ border-radius: 4px
1150
+ }
1151
+ .listingblock pre.prettyprint {
1152
+ border-width: 0
1153
+ }
1154
+ .listingblock>.content {
1155
+ position: relative
1156
+ }
1157
+ .listingblock code[data-lang]:before {
1158
+ display: none;
1159
+ content: attr(data-lang);
1160
+ position: absolute;
1161
+ font-size: .75em;
1162
+ top: .425rem;
1163
+ right: .5rem;
1164
+ line-height: 1;
1165
+ text-transform: uppercase;
1166
+ color: #999
1167
+ }
1168
+ .listingblock:hover code[data-lang]:before {
1169
+ display: block
1170
+ }
1171
+ .listingblock.terminal pre .command:before {
1172
+ content: attr(data-prompt);
1173
+ padding-right: .5em;
1174
+ color: #999
1175
+ }
1176
+ .listingblock.terminal pre .command:not([data-prompt]):before {
1177
+ content: "$"
1178
+ }
1179
+ table.pyhltable {
1180
+ border-collapse: separate;
1181
+ border: 0;
1182
+ margin-bottom: 0;
1183
+ background: none
1184
+ }
1185
+ table.pyhltable td {
1186
+ vertical-align: top;
1187
+ padding-top: 0;
1188
+ padding-bottom: 0;
1189
+ line-height: 1.45
1190
+ }
1191
+ table.pyhltable td.code {
1192
+ padding-left: .75em;
1193
+ padding-right: 0
1194
+ }
1195
+ pre.pygments .lineno,
1196
+ table.pyhltable td:not(.code) {
1197
+ color: #999;
1198
+ padding-left: 0;
1199
+ padding-right: .5em;
1200
+ border-right: 1px solid #ddddd8
1201
+ }
1202
+ pre.pygments .lineno {
1203
+ display: inline-block;
1204
+ margin-right: .25em
1205
+ }
1206
+ table.pyhltable .linenodiv {
1207
+ background: none!important;
1208
+ padding-right: 0!important
1209
+ }
1210
+ .quoteblock {
1211
+ margin: 0 1em 1.25em 1.5em;
1212
+ display: table
1213
+ }
1214
+ .quoteblock>.title {
1215
+ margin-left: -1.5em;
1216
+ margin-bottom: .75em
1217
+ }
1218
+ .quoteblock blockquote,
1219
+ .quoteblock blockquote p {
1220
+ color: black;
1221
+ /* font-size: 1.15rem; */
1222
+ line-height: 1.75;
1223
+ word-spacing: .1em;
1224
+ letter-spacing: 0;
1225
+ font-style: italic;
1226
+ text-align: justify
1227
+ }
1228
+ .quoteblock blockquote {
1229
+ margin: 0;
1230
+ padding: 0;
1231
+ border: 0
1232
+ }
1233
+ .quoteblock blockquote:before {
1234
+ content: "\201c";
1235
+ float: left;
1236
+ /* font-size: 2.75em; */
1237
+ font-weight: bold;
1238
+ line-height: .6em;
1239
+ margin-left: -.6em;
1240
+ color: #7a2518;
1241
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .1)
1242
+ }
1243
+ .quoteblock blockquote>.paragraph:last-child p {
1244
+ margin-bottom: 0
1245
+ }
1246
+ .quoteblock .attribution {
1247
+ margin-top: .5em;
1248
+ margin-right: .5ex;
1249
+ text-align: right
1250
+ }
1251
+ .quoteblock .quoteblock {
1252
+ margin-left: 0;
1253
+ margin-right: 0;
1254
+ padding: .5em 0;
1255
+ border-left: 3px solid black
1256
+ }
1257
+ .quoteblock .quoteblock blockquote {
1258
+ padding: 0 0 0 .75em
1259
+ }
1260
+ .quoteblock .quoteblock blockquote:before {
1261
+ display: none
1262
+ }
1263
+ .verseblock {
1264
+ margin: 0 1em 1.25em 1em
1265
+ }
1266
+ .verseblock pre {
1267
+ /* font-size: 1.15rem; */
1268
+ color: rgba(0, 0, 0, .85);
1269
+ font-weight: 300;
1270
+ text-rendering: optimizeLegibility
1271
+ }
1272
+ .verseblock pre strong {
1273
+ font-weight: 400
1274
+ }
1275
+ .verseblock .attribution {
1276
+ margin-top: 1.25rem;
1277
+ margin-left: .5ex
1278
+ }
1279
+ .quoteblock .attribution,
1280
+ .verseblock .attribution {
1281
+ /* font-size: .9375em; */
1282
+ line-height: 1.45;
1283
+ font-style: italic
1284
+ }
1285
+ .quoteblock .attribution br,
1286
+ .verseblock .attribution br {
1287
+ display: none
1288
+ }
1289
+ .quoteblock .attribution cite,
1290
+ .verseblock .attribution cite {
1291
+ display: block;
1292
+ letter-spacing: -.025em;
1293
+ color: black
1294
+ }
1295
+ .quoteblock.abstract {
1296
+ margin: 0 0 1.25em 0;
1297
+ display: block
1298
+ }
1299
+ .quoteblock.abstract blockquote,
1300
+ .quoteblock.abstract blockquote p {
1301
+ text-align: left;
1302
+ word-spacing: 0
1303
+ }
1304
+ .quoteblock.abstract blockquote:before,
1305
+ .quoteblock.abstract blockquote p:first-of-type:before {
1306
+ display: none
1307
+ }
1308
+ table.tableblock {
1309
+ max-width: 100%;
1310
+ border-collapse: separate
1311
+ }
1312
+ table.tableblock td>.paragraph:last-child p>p:last-child,
1313
+ table.tableblock th>p:last-child,
1314
+ table.tableblock td>p:last-child {
1315
+ margin-bottom: 0
1316
+ }
1317
+ table.tableblock,
1318
+ th.tableblock,
1319
+ td.tableblock {
1320
+ border: 0 solid #dedede
1321
+ }
1322
+ table.grid-all th.tableblock,
1323
+ table.grid-all td.tableblock {
1324
+ border-width: 0 1px 1px 0
1325
+ }
1326
+ table.grid-all tfoot>tr>th.tableblock,
1327
+ table.grid-all tfoot>tr>td.tableblock {
1328
+ border-width: 1px 1px 0 0
1329
+ }
1330
+ table.grid-cols th.tableblock,
1331
+ table.grid-cols td.tableblock {
1332
+ border-width: 0 1px 0 0
1333
+ }
1334
+ table.grid-all *>tr>.tableblock:last-child,
1335
+ table.grid-cols *>tr>.tableblock:last-child {
1336
+ border-right-width: 0
1337
+ }
1338
+ table.grid-rows th.tableblock,
1339
+ table.grid-rows td.tableblock {
1340
+ border-width: 0 0 1px 0
1341
+ }
1342
+ table.grid-all tbody>tr:last-child>th.tableblock,
1343
+ table.grid-all tbody>tr:last-child>td.tableblock,
1344
+ table.grid-all thead:last-child>tr>th.tableblock,
1345
+ table.grid-rows tbody>tr:last-child>th.tableblock,
1346
+ table.grid-rows tbody>tr:last-child>td.tableblock,
1347
+ table.grid-rows thead:last-child>tr>th.tableblock {
1348
+ border-bottom-width: 0
1349
+ }
1350
+ table.grid-rows tfoot>tr>th.tableblock,
1351
+ table.grid-rows tfoot>tr>td.tableblock {
1352
+ border-width: 1px 0 0 0
1353
+ }
1354
+ table.frame-all {
1355
+ border-width: 1px
1356
+ }
1357
+ table.frame-sides {
1358
+ border-width: 0 1px
1359
+ }
1360
+ table.frame-topbot {
1361
+ border-width: 1px 0
1362
+ }
1363
+ th.halign-left,
1364
+ td.halign-left {
1365
+ text-align: left
1366
+ }
1367
+ th.halign-right,
1368
+ td.halign-right {
1369
+ text-align: right
1370
+ }
1371
+ th.halign-center,
1372
+ td.halign-center {
1373
+ text-align: center
1374
+ }
1375
+ th.valign-top,
1376
+ td.valign-top {
1377
+ vertical-align: top
1378
+ }
1379
+ th.valign-bottom,
1380
+ td.valign-bottom {
1381
+ vertical-align: bottom
1382
+ }
1383
+ th.valign-middle,
1384
+ td.valign-middle {
1385
+ vertical-align: middle
1386
+ }
1387
+ table thead th,
1388
+ table tfoot th {
1389
+ font-weight: bold
1390
+ }
1391
+ tbody tr th {
1392
+ display: table-cell;
1393
+ line-height: 1.6;
1394
+ background: #f7f8f7
1395
+ }
1396
+ tbody tr th,
1397
+ tbody tr th p,
1398
+ tfoot tr th,
1399
+ tfoot tr th p {
1400
+ color: rgba(0, 0, 0, .8);
1401
+ font-weight: bold
1402
+ }
1403
+ p.tableblock>code:only-child {
1404
+ background: none;
1405
+ padding: 0
1406
+ }
1407
+ p.tableblock {
1408
+ /* font-size: 1em */
1409
+ }
1410
+ td>div.verse {
1411
+ white-space: pre
1412
+ }
1413
+ ol {
1414
+ margin-left: 1.75em
1415
+ }
1416
+ ul li ol {
1417
+ margin-left: 1.5em
1418
+ }
1419
+ dl dd {
1420
+ margin-left: 1.125em
1421
+ }
1422
+ dl dd:last-child,
1423
+ dl dd:last-child>:last-child {
1424
+ margin-bottom: 0
1425
+ }
1426
+ ol>li p,
1427
+ ul>li p,
1428
+ ul dd,
1429
+ ol dd,
1430
+ .olist .olist,
1431
+ .ulist .ulist,
1432
+ .ulist .olist,
1433
+ .olist .ulist {
1434
+ margin-bottom: .625em
1435
+ }
1436
+ ul.unstyled,
1437
+ ol.unnumbered,
1438
+ ul.checklist,
1439
+ ul.none {
1440
+ list-style-type: none
1441
+ }
1442
+ ul.unstyled,
1443
+ ol.unnumbered,
1444
+ ul.checklist {
1445
+ margin-left: .625em
1446
+ }
1447
+ ul.checklist li>p:first-child>.fa-square-o:first-child,
1448
+ ul.checklist li>p:first-child>.fa-check-square-o:first-child {
1449
+ width: 1em;
1450
+ /* font-size: .85em */
1451
+ }
1452
+ ul.checklist li>p:first-child>input[type="checkbox"]:first-child {
1453
+ width: 1em;
1454
+ position: relative;
1455
+ top: 1px
1456
+ }
1457
+ ul.inline {
1458
+ margin: 0 auto .625em auto;
1459
+ margin-left: -1.375em;
1460
+ margin-right: 0;
1461
+ padding: 0;
1462
+ list-style: none;
1463
+ overflow: hidden
1464
+ }
1465
+ ul.inline>li {
1466
+ list-style: none;
1467
+ float: left;
1468
+ margin-left: 1.375em;
1469
+ display: block
1470
+ }
1471
+ ul.inline>li>* {
1472
+ display: block
1473
+ }
1474
+ .unstyled dl dt {
1475
+ font-weight: 400;
1476
+ font-style: normal
1477
+ }
1478
+ ol.arabic {
1479
+ list-style-type: decimal
1480
+ }
1481
+ ol.decimal {
1482
+ list-style-type: decimal-leading-zero
1483
+ }
1484
+ ol.loweralpha {
1485
+ list-style-type: lower-alpha
1486
+ }
1487
+ ol.upperalpha {
1488
+ list-style-type: upper-alpha
1489
+ }
1490
+ ol.lowerroman {
1491
+ list-style-type: lower-roman
1492
+ }
1493
+ ol.upperroman {
1494
+ list-style-type: upper-roman
1495
+ }
1496
+ ol.lowergreek {
1497
+ list-style-type: lower-greek
1498
+ }
1499
+ .hdlist>table,
1500
+ .colist>table {
1501
+ border: 0;
1502
+ background: none
1503
+ }
1504
+ .hdlist>table>tbody>tr,
1505
+ .colist>table>tbody>tr {
1506
+ background: none
1507
+ }
1508
+ td.hdlist1,
1509
+ td.hdlist2 {
1510
+ vertical-align: top;
1511
+ padding: 0 .625em
1512
+ }
1513
+ td.hdlist1 {
1514
+ font-weight: bold;
1515
+ padding-bottom: 1.25em
1516
+ }
1517
+ .literalblock+.colist,
1518
+ .listingblock+.colist {
1519
+ margin-top: -.5em
1520
+ }
1521
+ .colist>table tr>td:first-of-type {
1522
+ padding: 0 .75em;
1523
+ line-height: 1
1524
+ }
1525
+ .colist>table tr>td:last-of-type {
1526
+ padding: .25em 0
1527
+ }
1528
+ .thumb,
1529
+ .th {
1530
+ line-height: 0;
1531
+ display: inline-block;
1532
+ border: solid 4px #fff;
1533
+ -webkit-box-shadow: 0 0 0 1px #ddd;
1534
+ box-shadow: 0 0 0 1px #ddd
1535
+ }
1536
+ .imageblock.left,
1537
+ .imageblock[style*="float: left"] {
1538
+ margin: .25em .625em 1.25em 0
1539
+ }
1540
+ .imageblock.right,
1541
+ .imageblock[style*="float: right"] {
1542
+ margin: .25em 0 1.25em .625em
1543
+ }
1544
+ .imageblock>.title {
1545
+ margin-bottom: 0
1546
+ }
1547
+ .imageblock.thumb,
1548
+ .imageblock.th {
1549
+ border-width: 6px
1550
+ }
1551
+ .imageblock.thumb>.title,
1552
+ .imageblock.th>.title {
1553
+ padding: 0 .125em
1554
+ }
1555
+ .image.left,
1556
+ .image.right {
1557
+ margin-top: .25em;
1558
+ margin-bottom: .25em;
1559
+ display: inline-block;
1560
+ line-height: 0
1561
+ }
1562
+ .image.left {
1563
+ margin-right: .625em
1564
+ }
1565
+ .image.right {
1566
+ margin-left: .625em
1567
+ }
1568
+ a.image {
1569
+ text-decoration: none;
1570
+ display: inline-block
1571
+ }
1572
+ a.image object {
1573
+ pointer-events: none
1574
+ }
1575
+ sup.footnote,
1576
+ sup.footnoteref {
1577
+ /* font-size: .875em; */
1578
+ position: static;
1579
+ vertical-align: super
1580
+ }
1581
+ sup.footnote a,
1582
+ sup.footnoteref a {
1583
+ text-decoration: none
1584
+ }
1585
+ sup.footnote a:active,
1586
+ sup.footnoteref a:active {
1587
+ text-decoration: underline
1588
+ }
1589
+ #footnotes {
1590
+ padding-top: .75em;
1591
+ padding-bottom: .75em;
1592
+ margin-bottom: .625em
1593
+ }
1594
+ #footnotes hr {
1595
+ width: 20%;
1596
+ min-width: 6.25em;
1597
+ margin: -.25em 0 .75em 0;
1598
+ border-width: 1px 0 0 0
1599
+ }
1600
+ #footnotes .footnote {
1601
+ padding: 0 .375em 0 .225em;
1602
+ line-height: 1.3334;
1603
+ /* font-size: .875em; */
1604
+ margin-left: 1.2em;
1605
+ text-indent: -1.05em;
1606
+ margin-bottom: .2em
1607
+ }
1608
+ #footnotes .footnote a:first-of-type {
1609
+ font-weight: bold;
1610
+ text-decoration: none
1611
+ }
1612
+ #footnotes .footnote:last-of-type {
1613
+ margin-bottom: 0
1614
+ }
1615
+ #content #footnotes {
1616
+ margin-top: -.625em;
1617
+ margin-bottom: 0;
1618
+ padding: .75em 0
1619
+ }
1620
+ .gist .file-data>table {
1621
+ border: 0;
1622
+ background: #fff;
1623
+ width: 100%;
1624
+ margin-bottom: 0
1625
+ }
1626
+ .gist .file-data>table td.line-data {
1627
+ width: 99%
1628
+ }
1629
+ div.unbreakable {
1630
+ page-break-inside: avoid
1631
+ }
1632
+ .big {
1633
+ font-size: larger
1634
+ }
1635
+ .small {
1636
+ font-size: smaller
1637
+ }
1638
+ .underline {
1639
+ text-decoration: underline
1640
+ }
1641
+ .overline {
1642
+ text-decoration: overline
1643
+ }
1644
+ .line-through {
1645
+ text-decoration: line-through
1646
+ }
1647
+ .aqua {
1648
+ color: #00bfbf
1649
+ }
1650
+ .aqua-background {
1651
+ background-color: #00fafa
1652
+ }
1653
+ .black {
1654
+ color: #000
1655
+ }
1656
+ .black-background {
1657
+ background-color: #000
1658
+ }
1659
+ .blue {
1660
+ color: #0000bf
1661
+ }
1662
+ .blue-background {
1663
+ background-color: #0000fa
1664
+ }
1665
+ .fuchsia {
1666
+ color: #bf00bf
1667
+ }
1668
+ .fuchsia-background {
1669
+ background-color: #fa00fa
1670
+ }
1671
+ .gray {
1672
+ color: #606060
1673
+ }
1674
+ .gray-background {
1675
+ background-color: #7d7d7d
1676
+ }
1677
+ .green {
1678
+ color: #006000
1679
+ }
1680
+ .green-background {
1681
+ background-color: #007d00
1682
+ }
1683
+ .lime {
1684
+ color: #00bf00
1685
+ }
1686
+ .lime-background {
1687
+ background-color: #00fa00
1688
+ }
1689
+ .maroon {
1690
+ color: #600000
1691
+ }
1692
+ .maroon-background {
1693
+ background-color: #7d0000
1694
+ }
1695
+ .navy {
1696
+ color: #000060
1697
+ }
1698
+ .navy-background {
1699
+ background-color: #00007d
1700
+ }
1701
+ .olive {
1702
+ color: #606000
1703
+ }
1704
+ .olive-background {
1705
+ background-color: #7d7d00
1706
+ }
1707
+ .purple {
1708
+ color: #600060
1709
+ }
1710
+ .purple-background {
1711
+ background-color: #7d007d
1712
+ }
1713
+ .red {
1714
+ color: #bf0000
1715
+ }
1716
+ .red-background {
1717
+ background-color: #fa0000
1718
+ }
1719
+ .silver {
1720
+ color: #909090
1721
+ }
1722
+ .silver-background {
1723
+ background-color: #bcbcbc
1724
+ }
1725
+ .teal {
1726
+ color: #006060
1727
+ }
1728
+ .teal-background {
1729
+ background-color: #007d7d
1730
+ }
1731
+ .white {
1732
+ color: #bfbfbf
1733
+ }
1734
+ .white-background {
1735
+ background-color: #fafafa
1736
+ }
1737
+ .yellow {
1738
+ color: #bfbf00
1739
+ }
1740
+ .yellow-background {
1741
+ background-color: #fafa00
1742
+ }
1743
+ .giblish-green {
1744
+ color: var(--giblish-green);
1745
+ }
1746
+ span.icon>.fa {
1747
+ cursor: default
1748
+ }
1749
+ .admonitionblock td.icon [class^="fa icon-"] {
1750
+ /* font-size: 2.5em; */
1751
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, .5);
1752
+ cursor: default
1753
+ }
1754
+ .admonitionblock td.icon .icon-note:before {
1755
+ content: "\f05a";
1756
+ color: #19407c
1757
+ }
1758
+ .admonitionblock td.icon .icon-tip:before {
1759
+ content: "\f0eb";
1760
+ text-shadow: 1px 1px 2px rgba(155, 155, 0, .8);
1761
+ color: #111
1762
+ }
1763
+ .admonitionblock td.icon .icon-warning:before {
1764
+ content: "\f071";
1765
+ color: #bf6900
1766
+ }
1767
+ .admonitionblock td.icon .icon-caution:before {
1768
+ content: "\f06d";
1769
+ color: #bf3400
1770
+ }
1771
+ .admonitionblock td.icon .icon-important:before {
1772
+ content: "\f06a";
1773
+ color: #bf0000
1774
+ }
1775
+ .conum[data-value] {
1776
+ display: inline-block;
1777
+ color: #fff!important;
1778
+ background-color: rgba(0, 0, 0, .8);
1779
+ -webkit-border-radius: 100px;
1780
+ border-radius: 100px;
1781
+ text-align: center;
1782
+ /* font-size: .75em; */
1783
+ width: 1.67em;
1784
+ height: 1.67em;
1785
+ line-height: 1.67em;
1786
+ font-style: normal;
1787
+ font-weight: bold
1788
+ }
1789
+ .conum[data-value] * {
1790
+ color: #fff!important
1791
+ }
1792
+ .conum[data-value]+b {
1793
+ display: none
1794
+ }
1795
+ .conum[data-value]:after {
1796
+ content: attr(data-value)
1797
+ }
1798
+ pre .conum[data-value] {
1799
+ position: relative;
1800
+ top: -.125em
1801
+ }
1802
+ b.conum * {
1803
+ color: inherit!important
1804
+ }
1805
+ .conum:not([data-value]):empty {
1806
+ display: none
1807
+ }
1808
+ dt,
1809
+ th.tableblock,
1810
+ td.content,
1811
+ div.footnote {
1812
+ text-rendering: optimizeLegibility
1813
+ }
1814
+ h1,
1815
+ h2,
1816
+ p,
1817
+ td.content,
1818
+ span.alt {
1819
+ letter-spacing: -.01em
1820
+ }
1821
+ p strong,
1822
+ td.content strong,
1823
+ div.footnote strong {
1824
+ letter-spacing: -.005em
1825
+ }
1826
+ p,
1827
+ blockquote,
1828
+ dt,
1829
+ td.content,
1830
+ span.alt {
1831
+ /* font-size: 1.0625rem */
1832
+ }
1833
+ p {
1834
+ margin-bottom: 1.25rem
1835
+ }
1836
+ .sidebarblock p,
1837
+ .sidebarblock dt,
1838
+ .sidebarblock td.content,
1839
+ p.tableblock {
1840
+ /* font-size: 1em */
1841
+ }
1842
+ .exampleblock>.content {
1843
+ background-color: #fffef7;
1844
+ border-color: #e0e0dc;
1845
+ -webkit-box-shadow: 0 1px 4px #e0e0dc;
1846
+ box-shadow: 0 1px 4px #e0e0dc
1847
+ }
1848
+ .print-only {
1849
+ display: none!important
1850
+ }
1851
+ @media print {
1852
+ @page {
1853
+ margin: 1.25cm .75cm
1854
+ }
1855
+ * {
1856
+ -webkit-box-shadow: none!important;
1857
+ box-shadow: none!important;
1858
+ text-shadow: none!important
1859
+ }
1860
+ a {
1861
+ color: inherit!important;
1862
+ text-decoration: underline!important
1863
+ }
1864
+ a.bare,
1865
+ a[href^="#"],
1866
+ a[href^="mailto:"] {
1867
+ text-decoration: none!important
1868
+ }
1869
+ a[href^="http:"]:not(.bare):after,
1870
+ a[href^="https:"]:not(.bare):after {
1871
+ content: "(" attr(href) ")";
1872
+ display: inline-block;
1873
+ padding-left: .25em
1874
+ }
1875
+ abbr[title]:after {
1876
+ content: " (" attr(title) ")"
1877
+ }
1878
+ pre,
1879
+ blockquote,
1880
+ tr,
1881
+ img,
1882
+ object,
1883
+ svg {
1884
+ page-break-inside: avoid
1885
+ }
1886
+ thead {
1887
+ display: table-header-group
1888
+ }
1889
+ svg {
1890
+ max-width: 100%
1891
+ }
1892
+ p,
1893
+ blockquote,
1894
+ dt,
1895
+ td.content {
1896
+ orphans: 3;
1897
+ widows: 3
1898
+ }
1899
+ h2,
1900
+ h3,
1901
+ #toctitle,
1902
+ .sidebarblock>.content>.title {
1903
+ font-size:0.8em;
1904
+ page-break-after: avoid
1905
+ }
1906
+ #toc,
1907
+ .sidebarblock,
1908
+ .exampleblock>.content {
1909
+ background: none!important
1910
+ }
1911
+ #toc {
1912
+ border-bottom: 1px solid #ddddd8!important;
1913
+ padding-bottom: 0!important
1914
+ }
1915
+ .sect1 {
1916
+ padding-bottom: 0!important
1917
+ }
1918
+ .sect1+.sect1 {
1919
+ border: 0!important
1920
+ }
1921
+ #header>h1:first-child {
1922
+ margin-top: 1.25rem
1923
+ }
1924
+ body.book #header {
1925
+ text-align: center
1926
+ }
1927
+ body.book #header>h1:first-child {
1928
+ border: 0!important;
1929
+ margin: 2.5em 0 1em 0
1930
+ }
1931
+ body.book #header .details {
1932
+ border: 0!important;
1933
+ display: block;
1934
+ padding: 0!important
1935
+ }
1936
+ body.book #header .details span:first-child {
1937
+ margin-left: 0!important
1938
+ }
1939
+ body.book #header .details br {
1940
+ display: block
1941
+ }
1942
+ body.book #header .details br+span:before {
1943
+ content: none!important
1944
+ }
1945
+ body.book #toc {
1946
+ border: 0!important;
1947
+ text-align: left!important;
1948
+ padding: 0!important;
1949
+ margin: 0!important
1950
+ }
1951
+ body.book #toc,
1952
+ body.book #preamble,
1953
+ body.book h1.sect0,
1954
+ body.book .sect1>h2 {
1955
+ page-break-before: always
1956
+ }
1957
+ .listingblock code[data-lang]:before {
1958
+ display: block
1959
+ }
1960
+ #footer {
1961
+ background: none!important;
1962
+ padding: 0 .9375em
1963
+ }
1964
+ #footer-text {
1965
+ color: black!important;
1966
+ }
1967
+ .hide-on-print {
1968
+ display: none!important
1969
+ }
1970
+ .print-only {
1971
+ display: block!important
1972
+ }
1973
+ .hide-for-print {
1974
+ display: none!important
1975
+ }
1976
+ .show-for-print {
1977
+ display: inherit!important
1978
+ }
1979
+ }