asciidoctor-csd 0.1.0 → 0.2.2

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,174 @@
1
+ require "asciidoctor"
2
+ require "asciidoctor/csd/version"
3
+ require "asciidoctor/csd/csdconvert"
4
+ require "asciidoctor/iso/converter"
5
+
6
+ module Asciidoctor
7
+ module Csd
8
+ CSD_NAMESPACE = "https://www.calconnect.org/standards/csd"
9
+
10
+ # A {Converter} implementation that generates CSD output, and a document
11
+ # schema encapsulation of the document for validation
12
+ class Converter < ISO::Converter
13
+
14
+ register_for "csd"
15
+
16
+ def metadata_author(node, xml)
17
+ xml.contributor do |c|
18
+ c.role **{ type: "author" }
19
+ c.organization do |a|
20
+ a.name "CalConnect"
21
+ end
22
+ end
23
+ end
24
+
25
+ def metadata_publisher(node, xml)
26
+ xml.contributor do |c|
27
+ c.role **{ type: "publisher" }
28
+ c.organization do |a|
29
+ a.name "CalConnect"
30
+ end
31
+ end
32
+ end
33
+
34
+ def metadata_committee(node, xml)
35
+ xml.editorialgroup do |a|
36
+ a.technical_committee node.attr("technical-committee"),
37
+ **attr_code(type: node.attr("technical-committee-type"))
38
+ end
39
+ end
40
+
41
+ def title(node, xml)
42
+ ["en"].each do |lang|
43
+ xml.title **{ language: lang, format: "plain" } do |t|
44
+ t << node.attr("title")
45
+ end
46
+ end
47
+ end
48
+
49
+ def metadata_status(node, xml)
50
+ xml.status **{ format: "plain" } { |s| s << node.attr("status") }
51
+ end
52
+
53
+ def metadata_id(node, xml)
54
+ xml.docidentifier { |i| i << node.attr("docnumber") }
55
+ end
56
+
57
+ def metadata_copyright(node, xml)
58
+ from = node.attr("copyright-year") || Date.today.year
59
+ xml.copyright do |c|
60
+ c.from from
61
+ c.owner do |owner|
62
+ owner.organization do |o|
63
+ o.name "CalConnect"
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def title_validate(root)
70
+ nil
71
+ end
72
+
73
+ def makexml(node)
74
+ result = ["<?xml version='1.0' encoding='UTF-8'?>\n<csd-standard>"]
75
+ @draft = node.attributes.has_key?("draft")
76
+ result << noko { |ixml| front node, ixml }
77
+ result << noko { |ixml| middle node, ixml }
78
+ result << "</csd-standard>"
79
+ result = textcleanup(result.flatten * "\n")
80
+ ret1 = cleanup(Nokogiri::XML(result))
81
+ validate(ret1)
82
+ ret1.root.add_namespace(nil, CSD_NAMESPACE)
83
+ ret1
84
+ end
85
+
86
+ def document(node)
87
+ init(node)
88
+ ret1 = makexml(node)
89
+ ret = ret1.to_xml(indent: 2)
90
+ filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
91
+ gsub(%r{^.*/}, "")
92
+ File.open(filename, "w") { |f| f.write(ret) }
93
+ html_converter(node).convert filename unless node.attr("nodoc")
94
+ @files_to_delete.each { |f| system "rm #{f}" }
95
+ ret
96
+ end
97
+
98
+ def validate(doc)
99
+ content_validate(doc)
100
+ schema_validate(formattedstr_strip(doc.dup),
101
+ File.join(File.dirname(__FILE__), "csd.rng"))
102
+ end
103
+
104
+ def html_doc_path(file)
105
+ File.join(File.dirname(__FILE__), File.join("html", file))
106
+ end
107
+
108
+ def literal(node)
109
+ noko do |xml|
110
+ xml.figure **id_attr(node) do |f|
111
+ figure_title(node, f)
112
+ f.pre node.lines.join("\n")
113
+ end
114
+ end
115
+ end
116
+
117
+ def sections_cleanup(x)
118
+ super
119
+ x.xpath("//*[@inline-header]").each do |h|
120
+ h.delete("inline-header")
121
+ end
122
+ end
123
+
124
+ def style(n, t)
125
+ return
126
+ end
127
+
128
+ def html_converter(_node)
129
+ CsdConvert.new(
130
+ htmlstylesheet: generate_css(html_doc_path("htmlstyle.scss"), true),
131
+ standardstylesheet: generate_css(html_doc_path("csd.scss"), true),
132
+ htmlcoverpage: html_doc_path("html_csd_titlepage.html"),
133
+ htmlintropage: html_doc_path("html_csd_intro.html"),
134
+ scripts: html_doc_path("scripts.html"),
135
+ )
136
+ end
137
+
138
+ def default_fonts(node)
139
+ b = node.attr("body-font") ||
140
+ (node.attr("script") == "Hans" ? '"SimSun",serif' :
141
+ '"Overpass",sans-serif')
142
+ h = node.attr("header-font") ||
143
+ (node.attr("script") == "Hans" ? '"SimHei",sans-serif' :
144
+ '"Overpass",sans-serif')
145
+ m = node.attr("monospace-font") || '"Space Mono",monospace'
146
+ "$bodyfont: #{b};\n$headerfont: #{h};\n$monospacefont: #{m};\n"
147
+ end
148
+
149
+ def inline_quoted(node)
150
+ noko do |xml|
151
+ case node.type
152
+ when :emphasis then xml.em node.text
153
+ when :strong then xml.strong node.text
154
+ when :monospaced then xml.tt node.text
155
+ when :double then xml << "\"#{node.text}\""
156
+ when :single then xml << "'#{node.text}'"
157
+ when :superscript then xml.sup node.text
158
+ when :subscript then xml.sub node.text
159
+ when :asciimath then stem_parse(node.text, xml)
160
+ else
161
+ case node.role
162
+ when "strike" then xml.strike node.text
163
+ when "smallcap" then xml.smallcap node.text
164
+ when "keyword" then xml.keyword node.text
165
+ else
166
+ xml << node.text
167
+ end
168
+ end
169
+ end.join
170
+ end
171
+
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,134 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
+ <!--
4
+ default namespace = "http://riboseinc.com/csd"
5
+ Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
6
+ we cannot have a new default namespace: we will end up with a grammar with two different
7
+ namespaces, one for isostandard and one for csd additions. And we do not want that.
8
+ -->
9
+ <include href="isostandard.rng">
10
+ <start>
11
+ <ref name="csd-standard"/>
12
+ </start>
13
+ <define name="language">
14
+ <element name="language">
15
+ <value>en</value>
16
+ </element>
17
+ </define>
18
+ <define name="docidentifier">
19
+ <element name="docidentifier">
20
+ <text/>
21
+ </element>
22
+ </define>
23
+ <define name="btitle">
24
+ <element name="title">
25
+ <ref name="FormattedString"/>
26
+ </element>
27
+ </define>
28
+ <define name="status">
29
+ <element name="status">
30
+ <choice>
31
+ <value>proposal</value>
32
+ <value>working-draft</value>
33
+ <value>committee-draft</value>
34
+ <value>draft-standard</value>
35
+ <value>final-draft</value>
36
+ <value>published</value>
37
+ <value>withdrawn</value>
38
+ </choice>
39
+ </element>
40
+ </define>
41
+ <define name="figure">
42
+ <element name="figure">
43
+ <attribute name="id">
44
+ <data type="ID"/>
45
+ </attribute>
46
+ <optional>
47
+ <ref name="source"/>
48
+ </optional>
49
+ <optional>
50
+ <ref name="tname"/>
51
+ </optional>
52
+ <choice>
53
+ <oneOrMore>
54
+ <ref name="figure"/>
55
+ </oneOrMore>
56
+ <group>
57
+ <choice>
58
+ <zeroOrMore>
59
+ <ref name="TextElement"/>
60
+ </zeroOrMore>
61
+ <ref name="pre"/>
62
+ </choice>
63
+ <zeroOrMore>
64
+ <ref name="note"/>
65
+ </zeroOrMore>
66
+ <optional>
67
+ <ref name="dl"/>
68
+ </optional>
69
+ </group>
70
+ </choice>
71
+ </element>
72
+ </define>
73
+ <!-- TextElement |= keyword -->
74
+ <define name="TextElement">
75
+ <choice>
76
+ <text/>
77
+ <ref name="em"/>
78
+ <ref name="eref"/>
79
+ <ref name="strong"/>
80
+ <ref name="stem"/>
81
+ <ref name="sub"/>
82
+ <ref name="sup"/>
83
+ <ref name="tt"/>
84
+ <ref name="strike"/>
85
+ <ref name="smallcap"/>
86
+ <ref name="xref"/>
87
+ <ref name="br"/>
88
+ <ref name="hyperlink"/>
89
+ <ref name="hr"/>
90
+ <ref name="pagebreak"/>
91
+ <ref name="bookmark"/>
92
+ <ref name="keyword"/>
93
+ </choice>
94
+ </define>
95
+ </include>
96
+ <define name="BibItemType" combine="choice">
97
+ <choice>
98
+ <value>code</value>
99
+ <value>presentation</value>
100
+ <value>proposal</value>
101
+ <value>standard</value>
102
+ <value>report</value>
103
+ </choice>
104
+ </define>
105
+ <define name="pre">
106
+ <element name="pre">
107
+ <text/>
108
+ </element>
109
+ </define>
110
+ <define name="keyword">
111
+ <element name="keyword">
112
+ <text/>
113
+ </element>
114
+ </define>
115
+ <define name="csd-standard">
116
+ <element name="csd-standard">
117
+ <ref name="bibdata"/>
118
+ <optional>
119
+ <ref name="version"/>
120
+ </optional>
121
+ <zeroOrMore>
122
+ <ref name="termdocsource"/>
123
+ </zeroOrMore>
124
+ <ref name="preface"/>
125
+ <oneOrMore>
126
+ <ref name="sections"/>
127
+ </oneOrMore>
128
+ <zeroOrMore>
129
+ <ref name="annex"/>
130
+ </zeroOrMore>
131
+ <ref name="bibliography"/>
132
+ </element>
133
+ </define>
134
+ </grammar>
@@ -0,0 +1,135 @@
1
+ require "isodoc"
2
+
3
+ module Asciidoctor
4
+ module Csd
5
+ # A {Converter} implementation that generates CSD output, and a document
6
+ # schema encapsulation of the document for validation
7
+ class CsdConvert < IsoDoc::Convert
8
+ def initialize(options)
9
+ super
10
+ set_metadata(:status, "XXX")
11
+ end
12
+
13
+ def init_metadata
14
+ super
15
+ end
16
+
17
+ def title(isoxml, _out)
18
+ main = isoxml&.at(ns("//title[@language='en']"))&.text
19
+ set_metadata(:doctitle, main)
20
+ end
21
+
22
+ def subtitle(_isoxml, _out)
23
+ nil
24
+ end
25
+
26
+ def author(isoxml, _out)
27
+ set_metadata(:tc, "XXXX")
28
+ tc = isoxml.at(ns("//editorialgroup/technical-committee"))
29
+ set_metadata(:tc, tc.text) if tc
30
+ end
31
+
32
+
33
+ def docid(isoxml, _out)
34
+ docnumber = isoxml.at(ns("//bibdata/docidentifier"))
35
+ docstatus = isoxml.at(ns("//bibdata/status"))
36
+ dn = docnumber&.text
37
+ if docstatus
38
+ set_metadata(:status, status_print(docstatus.text))
39
+ abbr = status_abbr(docstatus.text)
40
+ dn = "#{dn}(#{abbr})" unless abbr.empty?
41
+ end
42
+ set_metadata(:docnumber, dn)
43
+ end
44
+
45
+ def status_print(status)
46
+ status.split(/-/).map{ |w| w.capitalize }.join(" ")
47
+ end
48
+
49
+ def status_abbr(status)
50
+ case status
51
+ when "working-draft" then "wd"
52
+ when "committee-draft" then "cd"
53
+ when "draft-standard" then "d"
54
+ else
55
+ ""
56
+ end
57
+ end
58
+
59
+ def pre_parse(node, out)
60
+ out.pre node.text # content.gsub(/</, "&lt;").gsub(/>/, "&gt;")
61
+ end
62
+
63
+ def term_defs_boilerplate(div, source, term)
64
+ if source.empty? && term.nil?
65
+ div << @no_terms_boilerplate
66
+ else
67
+ div << term_defs_boilerplate_cont(source, term)
68
+ end
69
+ end
70
+
71
+ def i18n_init(lang, script)
72
+ super
73
+ @annex_lbl = "Appendix"
74
+ end
75
+
76
+ def error_parse(node, out)
77
+ # catch elements not defined in ISO
78
+ case node.name
79
+ when "pre"
80
+ pre_parse(node, out)
81
+ when "keyword"
82
+ out.span node.text, **{ class: "keyword" }
83
+ else
84
+ super
85
+ end
86
+ end
87
+
88
+ HEAD = <<~HEAD.freeze
89
+ <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
90
+
91
+ <!--TOC script import-->
92
+ <script type="text/javascript" src="https://cdn.rawgit.com/jgallen23/toc/0.3.2/dist/toc.min.js"></script>
93
+
94
+ <!--Google fonts-->
95
+ <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i|Space+Mono:400,700" rel="stylesheet">
96
+ <link href="https://fonts.googleapis.com/css?family=Overpass:300,300i,600,900" rel="stylesheet">
97
+ <!--Font awesome import for the link icon-->
98
+ <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.8/css/solid.css" integrity="sha384-v2Tw72dyUXeU3y4aM2Y0tBJQkGfplr39mxZqlTBDUZAb9BGoC40+rdFCG0m10lXk" crossorigin="anonymous">
99
+ <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.8/css/fontawesome.css" integrity="sha384-q3jl8XQu1OpdLgGFvNRnPdj5VIlCvgsDQTQB6owSOHWlAurxul7f+JpUOVdAiJ5P" crossorigin="anonymous">
100
+ HEAD
101
+
102
+ BUTTON = '<button onclick="topFunction()" id="myBtn" '\
103
+ 'title="Go to top">Top</button>'.freeze
104
+
105
+
106
+ def html_main(docxml)
107
+ d = docxml.at('//div[@class="WordSection3"]')
108
+ s = d.replace("<main></main>")
109
+ s.first.children = d
110
+ s.first.children.first.previous = BUTTON
111
+ end
112
+
113
+ def html_preface(docxml)
114
+ super
115
+ docxml.at("//head").add_child(HEAD)
116
+ html_main(docxml)
117
+ docxml
118
+ end
119
+
120
+ def make_body(xml, docxml)
121
+ body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72", "xml:lang": "EN-US", class: "container" }
122
+ xml.body **body_attr do |body|
123
+ make_body1(body, docxml)
124
+ make_body2(body, docxml)
125
+ make_body3(body, docxml)
126
+ end
127
+ end
128
+
129
+ def html_toc(docxml)
130
+ docxml
131
+ end
132
+ end
133
+ end
134
+ end
135
+
@@ -0,0 +1,541 @@
1
+ p.Sourcecode, li.Sourcecode, div.Sourcecode, pre.Sourcecode
2
+ {mso-style-unhide:no;
3
+ mso-style-qformat:yes;
4
+ mso-style-parent:"";
5
+ margin-top:0cm;
6
+ margin-right:0cm;
7
+ margin-bottom:12.0pt;
8
+ margin-left:0cm;
9
+ text-align:left;
10
+ line-height:12.0pt;
11
+ mso-pagination:widow-orphan;
12
+ tab-stops:20.15pt;
13
+ font-size:9.0pt;
14
+ font-family:$monospacefont;
15
+ mso-fareast-font-family:Calibri;
16
+ mso-bidi-font-family:"Courier New";
17
+ mso-ansi-language:EN-GB;}
18
+ p.Biblio, li.Biblio, div.Biblio
19
+ {mso-style-unhide:no;
20
+ mso-style-qformat:yes;
21
+ mso-style-parent:"";
22
+ margin-top:0cm;
23
+ margin-right:0cm;
24
+ margin-bottom:12.0pt;
25
+ margin-left:33.15pt;
26
+ text-indent:-33.15pt;
27
+ tab-stops: 33.15pt;
28
+ line-height:12.0pt;
29
+ mso-pagination:widow-orphan;
30
+ font-size:11.0pt;
31
+ font-weight:bold;
32
+ font-family:$bodyfont;
33
+ mso-fareast-font-family:$bodyfont;
34
+ mso-bidi-font-family:$bodyfont;
35
+ mso-ansi-language:EN-GB;}
36
+ p.FigureTitle
37
+ {mso-style-unhide:no;
38
+ mso-style-qformat:yes;
39
+ mso-style-parent:"";
40
+ margin-top:0cm;
41
+ margin-right:0cm;
42
+ margin-bottom:6.0pt;
43
+ margin-left:0cm;
44
+ text-align:center;
45
+ line-height:12.0pt;
46
+ page-break-before:avoid;
47
+ mso-pagination:widow-orphan;
48
+ tab-stops:20.15pt;
49
+ font-size:11.0pt;
50
+ font-weight:bold;
51
+ font-family:$bodyfont;
52
+ mso-fareast-font-family:$bodyfont;
53
+ mso-bidi-font-family:$bodyfont;
54
+ mso-ansi-language:EN-GB;}
55
+ p.TableTitle
56
+ {mso-style-unhide:no;
57
+ mso-style-qformat:yes;
58
+ mso-style-parent:"";
59
+ margin-top:0cm;
60
+ margin-right:0cm;
61
+ margin-bottom:6.0pt;
62
+ margin-left:0cm;
63
+ text-align:center;
64
+ page-break-after:avoid;
65
+ line-height:12.0pt;
66
+ mso-pagination:widow-orphan;
67
+ tab-stops:20.15pt;
68
+ font-size:11.0pt;
69
+ font-family:$bodyfont;
70
+ mso-fareast-font-family:$bodyfont;
71
+ mso-bidi-font-family:$bodyfont;
72
+ mso-ansi-language:EN-GB;}
73
+ p.Note, div.Note, li.Note, p.TableFootnote, div.TableFootnote, li.TableFootnote
74
+ {mso-style-unhide:no;
75
+ mso-style-qformat:yes;
76
+ mso-style-parent:"";
77
+ margin-top:0cm;
78
+ margin-right:0cm;
79
+ margin-bottom:12.0pt;
80
+ margin-left:0cm;
81
+ text-align:justify;
82
+ line-height:12.0pt;
83
+ mso-pagination:widow-orphan;
84
+ tab-stops:20.15pt;
85
+ font-size:10.0pt;
86
+ mso-bidi-font-size:11.0pt;
87
+ font-family:$bodyfont;
88
+ font-size:10.0pt;
89
+ mso-fareast-font-family:$bodyfont;
90
+ mso-bidi-font-family:$bodyfont;
91
+ mso-ansi-language:EN-GB;}
92
+ p.ANNEX, li.ANNEX, div.ANNEX
93
+ {mso-style-name:ANNEX;
94
+ mso-style-priority:10;
95
+ mso-style-unhide:no;
96
+ mso-style-next:Normal;
97
+ margin-top:0cm;
98
+ margin-right:0cm;
99
+ margin-bottom:24.0pt;
100
+ margin-left:0cm;
101
+ text-align:center;
102
+ text-indent:0cm;
103
+ line-height:15.5pt;
104
+ mso-line-height-rule:exactly;
105
+ page-break-before:always;
106
+ mso-pagination:widow-orphan;
107
+ page-break-after:avoid;
108
+ mso-outline-level:1;
109
+ mso-list:l0 level1 lfo12;
110
+ tab-stops:20.15pt;
111
+ font-size:14.0pt;
112
+ mso-bidi-font-size:11.0pt;
113
+ font-family:$headerfont;
114
+ mso-fareast-font-family:$headerfont;
115
+ mso-bidi-font-family:$headerfont;
116
+ mso-ansi-language:EN-GB;
117
+ mso-fareast-language:JA;
118
+ font-weight:bold;
119
+ mso-bidi-font-weight:normal;}
120
+ p.BiblioTitle, li.BiblioTitle, div.BiblioTitle
121
+ {mso-style-name:"Biblio Title";
122
+ mso-style-noshow:yes;
123
+ mso-style-unhide:no;
124
+ margin-top:0cm;
125
+ margin-right:0cm;
126
+ margin-bottom:15.5pt;
127
+ margin-left:0cm;
128
+ text-align:center;
129
+ line-height:15.5pt;
130
+ mso-pagination:widow-orphan;
131
+ mso-outline-level:1;
132
+ tab-stops:20.15pt;
133
+ font-size:14.0pt;
134
+ mso-bidi-font-size:11.0pt;
135
+ font-family:$headerfont;
136
+ mso-fareast-font-family:$headerfont;
137
+ mso-bidi-font-family:$headerfont;
138
+ mso-ansi-language:EN-GB;
139
+ font-weight:bold;
140
+ mso-bidi-font-weight:normal;}
141
+ p.Definition, li.Definition, div.Definition
142
+ {mso-style-name:Definition;
143
+ mso-style-priority:9;
144
+ mso-style-unhide:no;
145
+ margin-top:0cm;
146
+ margin-right:0cm;
147
+ margin-bottom:12.0pt;
148
+ margin-left:0cm;
149
+ text-align:justify;
150
+ line-height:12.0pt;
151
+ mso-pagination:widow-orphan;
152
+ tab-stops:20.15pt;
153
+ font-size:11.0pt;
154
+ font-family:$bodyfont;
155
+ mso-fareast-font-family:$bodyfont;
156
+ mso-bidi-font-family:$bodyfont;
157
+ mso-ansi-language:EN-GB;}
158
+ p.ForewordTitle, li.ForewordTitle, div.ForewordTitle
159
+ {mso-style-name:"Foreword Title";
160
+ mso-style-noshow:yes;
161
+ mso-style-unhide:no;
162
+ margin-top:0cm;
163
+ margin-right:0cm;
164
+ margin-bottom:15.5pt;
165
+ margin-left:0cm;
166
+ text-align:justify;
167
+ line-height:15.5pt;
168
+ page-break-before:always;
169
+ mso-pagination:widow-orphan;
170
+ page-break-after:avoid;
171
+ mso-outline-level:1;
172
+ mso-hyphenate:none;
173
+ tab-stops:20.15pt;
174
+ font-size:14.0pt;
175
+ mso-bidi-font-size:11.0pt;
176
+ font-family:$headerfont;
177
+ mso-fareast-font-family:$headerfont;
178
+ mso-bidi-font-family:$headerfont;
179
+ mso-ansi-language:EN-GB;
180
+ font-weight:bold;
181
+ mso-bidi-font-weight:normal;}
182
+ p.IntroTitle, li.IntroTitle, div.IntroTitle
183
+ {mso-style-name:"Intro Title";
184
+ mso-style-noshow:yes;
185
+ mso-style-unhide:no;
186
+ mso-style-parent:"Foreword Title";
187
+ margin-top:0cm;
188
+ margin-right:0cm;
189
+ margin-bottom:15.5pt;
190
+ margin-left:0cm;
191
+ text-align:justify;
192
+ line-height:15.5pt;
193
+ mso-pagination:widow-orphan;
194
+ page-break-after:avoid;
195
+ mso-outline-level:1;
196
+ mso-hyphenate:none;
197
+ tab-stops:20.15pt;
198
+ font-size:14.0pt;
199
+ mso-bidi-font-size:11.0pt;
200
+ page-break-before:always;
201
+ font-family:$headerfont;
202
+ mso-fareast-font-family:$headerfont;
203
+ mso-bidi-font-family:$headerfont;
204
+ mso-ansi-language:EN-GB;
205
+ font-weight:bold;
206
+ mso-bidi-font-weight:normal;}
207
+ p.zzContents, li.zzContents, div.zzContents
208
+ {mso-style-name:zzContents;
209
+ mso-style-noshow:yes;
210
+ mso-style-unhide:no;
211
+ mso-style-next:"TOC 1";
212
+ margin-top:48.0pt;
213
+ margin-right:0cm;
214
+ margin-bottom:15.5pt;
215
+ margin-left:0cm;
216
+ line-height:15.5pt;
217
+ mso-line-height-rule:exactly;
218
+ page-break-before:always;
219
+ mso-pagination:widow-orphan;
220
+ page-break-after:avoid;
221
+ mso-hyphenate:none;
222
+ tab-stops:20.15pt;
223
+ font-size:14.0pt;
224
+ mso-bidi-font-size:11.0pt;
225
+ font-family:$headerfont;
226
+ mso-fareast-font-family:$headerfont;
227
+ mso-bidi-font-family:$headerfont;
228
+ mso-ansi-language:EN-GB;
229
+ font-weight:bold;
230
+ mso-bidi-font-weight:normal;}
231
+ p.zzCopyright, li.zzCopyright
232
+ {mso-style-name:zzCopyright;
233
+ mso-style-noshow:yes;
234
+ mso-style-unhide:no;
235
+ mso-style-next:Normal;
236
+ margin-top:0cm;
237
+ margin-right:14.2pt;
238
+ margin-bottom:12.0pt;
239
+ margin-left:14.2pt;
240
+ text-align:justify;
241
+ line-height:12.0pt;
242
+ mso-pagination:widow-orphan;
243
+ tab-stops:20.15pt 25.7pt 481.15pt;
244
+ padding:0cm;
245
+ mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
246
+ font-size:11.0pt;
247
+ font-family:$bodyfont;
248
+ mso-fareast-font-family:$bodyfont;
249
+ mso-bidi-font-family:$bodyfont;
250
+ mso-ansi-language:EN-GB;}
251
+ div.zzCopyright
252
+ {mso-element:para-border-div;
253
+ border:solid windowtext 1.0pt;
254
+ mso-border-top-alt:solid windowtext .5pt;
255
+ mso-border-left-alt:solid windowtext .5pt;
256
+ mso-border-right-alt:solid windowtext .5pt;
257
+ mso-border-bottom-alt:solid windowtext .5pt;
258
+ padding:1.0pt 4.0pt 0cm 4.0pt;
259
+ margin-left:5.1pt;
260
+ margin-right:5.1pt;}
261
+ p.zzCopyright_address
262
+ {margin-top:0cm;
263
+ margin-right:14.2pt;
264
+ margin-bottom:0.0pt;
265
+ margin-left:14.2pt;
266
+ mso-layout-grid-align:none;
267
+ text-autospace:none;
268
+ padding-left:20pt;
269
+ mso-padding-alt-left:20pt;
270
+ font-size:10.0pt;
271
+ text-align:left;
272
+ mso-bidi-font-size:11.0pt;}
273
+ p.zzSTDTitle, li.zzSTDTitle, div.zzSTDTitle
274
+ {mso-style-name:zzSTDTitle;
275
+ mso-style-noshow:yes;
276
+ mso-style-unhide:no;
277
+ mso-style-next:Normal;
278
+ margin-top:20.0pt;
279
+ margin-right:0cm;
280
+ margin-bottom:38.0pt;
281
+ margin-left:0cm;
282
+ line-height:17.5pt;
283
+ mso-line-height-rule:exactly;
284
+ mso-pagination:widow-orphan;
285
+ mso-hyphenate:none;
286
+ tab-stops:20.15pt;
287
+ font-size:16.0pt;
288
+ mso-bidi-font-size:11.0pt;
289
+ font-family:$headerfont;
290
+ mso-fareast-font-family:$headerfont;
291
+ mso-bidi-font-family:$headerfont;
292
+ mso-ansi-language:EN-GB;
293
+ font-weight:bold;
294
+ mso-bidi-font-weight:normal;}
295
+ p.zzSTDTitle1, li.zzSTDTitle1, div.zzSTDTitle1
296
+ {mso-style-name:zzSTDTitle;
297
+ mso-style-noshow:yes;
298
+ mso-style-unhide:no;
299
+ mso-style-next:Normal;
300
+ margin-top:0pt;
301
+ margin-right:0cm;
302
+ margin-bottom:18.0pt;
303
+ margin-left:0cm;
304
+ line-height:17.5pt;
305
+ mso-line-height-rule:exactly;
306
+ mso-pagination:widow-orphan;
307
+ mso-hyphenate:none;
308
+ tab-stops:20.15pt;
309
+ font-size:16.0pt;
310
+ mso-bidi-font-size:11.0pt;
311
+ font-family:$headerfont;
312
+ mso-fareast-font-family:$headerfont;
313
+ mso-bidi-font-family:$headerfont;
314
+ mso-ansi-language:EN-GB;
315
+ font-weight:bold;
316
+ mso-bidi-font-weight:normal;}
317
+ p.Quote, li.Quote, div.Quote
318
+ {mso-style-priority:99;
319
+ margin-top:0cm;
320
+ margin-right:36.0pt;
321
+ margin-bottom:0cm;
322
+ margin-left:36.0pt;
323
+ text-align:justify;
324
+ line-height:12.0pt;
325
+ mso-pagination:widow-orphan;
326
+ tab-stops:20.15pt;
327
+ font-size:11.0pt;
328
+ font-family:$bodyfont;
329
+ mso-fareast-font-family:$bodyfont;
330
+ mso-bidi-font-family:$bodyfont;
331
+ mso-ansi-language:EN-GB;}
332
+ p.QuoteAttribution
333
+ {text-align:right;}
334
+ p.Admonition, li.Admonition, div.Admonition
335
+ {mso-style-priority:99;
336
+ margin-top:0cm;
337
+ margin-right:57.6pt;
338
+ margin-bottom:0cm;
339
+ margin-left:57.6pt;
340
+ margin-bottom:.0001pt;
341
+ mso-pagination:widow-orphan;
342
+ border:none;
343
+ mso-border-alt:solid #4472C4 .25pt;
344
+ mso-border-themecolor:accent1;
345
+ padding:0cm;
346
+ mso-padding-alt:10.0pt 10.0pt 10.0pt 10.0pt;
347
+ font-size:12.0pt;
348
+ font-family:$bodyfont;
349
+ mso-ascii-font-family:$bodyfont;
350
+ mso-ascii-theme-font:minor-latin;
351
+ mso-fareast-font-family:$bodyfont;
352
+ mso-fareast-theme-font:minor-fareast;
353
+ mso-hansi-font-family:$bodyfont;
354
+ mso-hansi-theme-font:minor-latin;
355
+ mso-bidi-font-family:$bodyfont;
356
+ mso-bidi-theme-font:minor-bidi;
357
+ color:#4472C4;
358
+ mso-themecolor:accent1;
359
+ mso-ansi-language:EN-AU;
360
+ font-style:italic;}
361
+ p.Code, li.Code, div.Code
362
+ {mso-style-name:Code;
363
+ mso-style-priority:16;
364
+ mso-style-unhide:no;
365
+ mso-style-qformat:yes;
366
+ margin:0cm;
367
+ margin-bottom:.0001pt;
368
+ line-height:10.0pt;
369
+ mso-pagination:widow-orphan;
370
+ tab-stops:20.15pt;
371
+ font-size:9.0pt;
372
+ mso-bidi-font-size:11.0pt;
373
+ font-family:$monospacefont;
374
+ mso-fareast-font-family:Calibri;
375
+ mso-bidi-font-family:"Source Sans Pro";
376
+ mso-ansi-language:EN-GB;}
377
+ p.Formula, li.Formula, div.Formula
378
+ {mso-style-name:Formula;
379
+ mso-style-noshow:yes;
380
+ mso-style-unhide:no;
381
+ margin-top:0cm;
382
+ margin-right:0cm;
383
+ margin-bottom:11.0pt;
384
+ margin-left:20.15pt;
385
+ line-height:12.0pt;
386
+ mso-pagination:widow-orphan;
387
+ tab-stops:right 487.45pt;
388
+ font-size:11.0pt;
389
+ font-family:$bodyfont;
390
+ mso-fareast-font-family:$bodyfont;
391
+ mso-bidi-font-family:$bodyfont;
392
+ mso-ansi-language:EN-GB;}
393
+ @page WordSection1
394
+ {size:595.3pt 841.9pt;
395
+ margin:39.7pt 53.85pt 1.0cm 53.85pt;
396
+ mso-header-margin:35.45pt;
397
+ mso-footer-margin:14.2pt;
398
+ mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html") eh1;
399
+ mso-header:url("file:///C:/Doc/FILENAME_files/header.html") h1;
400
+ mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html") ef1;
401
+ mso-paper-source:0;}
402
+ div.WordSection1
403
+ {page:WordSection1;}
404
+ @page WordSection2
405
+ {size:595.3pt 841.9pt;
406
+ margin:39.7pt 53.85pt 1.0cm 53.85pt;
407
+ mso-header-margin:35.45pt;
408
+ mso-footer-margin:14.2pt;
409
+ mso-page-numbers:roman-lower;
410
+ mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html") eh2;
411
+ mso-header:url("file:///C:/Doc/FILENAME_files/header.html") h2;
412
+ mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html") ef2;
413
+ mso-footer:url("file:///C:/Doc/FILENAME_files/header.html") f2;
414
+ mso-paper-source:0;}
415
+ div.WordSection2
416
+ {page:WordSection2;}
417
+ @page WordSection3
418
+ {size:595.3pt 841.9pt;
419
+ margin:39.7pt 53.85pt 1.0cm 53.85pt;
420
+ mso-header-margin:35.45pt;
421
+ mso-footer-margin:14.2pt;
422
+ mso-page-numbers:1;
423
+ mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html") eh2;
424
+ mso-header:url("file:///C:/Doc/FILENAME_files/header.html") h2;
425
+ mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html") ef3;
426
+ mso-footer:url("file:///C:/Doc/FILENAME_files/header.html") f3;
427
+ mso-paper-source:0;}
428
+ div.WordSection3
429
+ {page:WordSection3;}
430
+ ol
431
+ {margin-bottom:0cm;}
432
+ ul
433
+ {margin-bottom:0cm;}
434
+ table.MsoISOTable
435
+ {mso-style-name:"Table ISO";
436
+ mso-tstyle-rowband-size:0;
437
+ mso-tstyle-colband-size:0;
438
+ mso-style-noshow:yes;
439
+ mso-style-priority:99;
440
+ mso-style-parent:"";
441
+ mso-padding-alt:0cm 2.85pt 0cm 2.85pt;
442
+ mso-para-margin:0cm;
443
+ mso-para-margin-bottom:.0001pt;
444
+ mso-pagination:widow-orphan;
445
+ border-collapse:collapse;
446
+ mso-table-layout-alt:fixed;
447
+ border:solid windowtext 2pt;
448
+ mso-border-alt:solid windowtext 2pt;
449
+ mso-yfti-tbllook:480;
450
+ mso-border-insideh:.75pt solid windowtext;
451
+ mso-border-insidev:.75pt solid windowtext;
452
+ font-size:10.0pt;
453
+ font-family:$bodyfont;}
454
+ table.MsoISOTable tr
455
+ {page-break-inside:avoid;}
456
+ table.MsoISOTable th
457
+ {border:solid windowtext 1pt;
458
+ mso-border-alt:solid windowtext 1pt;
459
+ padding:0cm 2.85pt 0cm 2.85pt;}
460
+ table.MsoISOTable td
461
+ {border:solid windowtext 1pt;
462
+ mso-border-alt:solid windowtext 1pt;
463
+ padding:0cm 2.85pt 0cm 2.85pt;}
464
+ table.MsoTableGrid
465
+ {mso-style-name:"Table Grid";
466
+ mso-tstyle-rowband-size:0;
467
+ mso-tstyle-colband-size:0;
468
+ mso-style-priority:39;
469
+ mso-style-unhide:no;
470
+ border:solid windowtext 1.0pt;
471
+ mso-border-alt:solid windowtext .5pt;
472
+ mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
473
+ mso-border-insideh:.5pt solid windowtext;
474
+ mso-border-insidev:.5pt solid windowtext;
475
+ mso-para-margin:0cm;
476
+ mso-para-margin-bottom:.0001pt;
477
+ mso-pagination:widow-orphan;
478
+ font-size:10.0pt;
479
+ font-family:$bodyfont;}
480
+ td { page-break-inside:avoid; }
481
+ tr { page-break-after:avoid; }
482
+ span.stem
483
+ {font-family:"Cambria Math",serif;
484
+ mso-ascii-font-family:"Cambria Math";
485
+ font-style:
486
+ italic;}
487
+ div.formula
488
+ {tab-stops:right 487.45pt;}
489
+ body
490
+ {tab-interval:36.0pt;}
491
+ dt
492
+ {page-break-inside:avoid;
493
+ page-break-after:avoid}
494
+ .coverpage_docnumber
495
+ {text-align:center;
496
+ font-size:14.0pt;
497
+ font-weight:bold;}
498
+ .coverpage_techcommittee
499
+ {text-align:center;}
500
+ .coverpage_docstage
501
+ {text-align:center;
502
+ font-size:30.0pt;
503
+ color:#485094;}
504
+ div.coverpage_warning
505
+ {mso-element:para-border-div;
506
+ border:solid windowtext 1.0pt #485094;
507
+ mso-border-alt:solid windowtext .5pt;
508
+ padding:1.0pt 4.0pt 1.0pt 4.0pt #485094;
509
+ margin-left:4.25pt;
510
+ margin-right:4.25pt}
511
+ .coverpage_warning
512
+ {color:#485094;
513
+ font-size:10.0pt;}
514
+
515
+ a.TableFootnoteRef
516
+ {mso-style-priority:99;
517
+ vertical-align:super;}
518
+
519
+ aside {
520
+ font-size:10.0pt;
521
+ }
522
+ div.example {
523
+ border:solid black .25pt;
524
+ mso-border-alt:solid black .25pt;
525
+ padding:10pt;
526
+ mso-padding-alt:10.0pt 10.0pt 10.0pt 10.0pt;
527
+ margin:10pt;
528
+ mso-margin-alt:10.0pt 10.0pt 10.0pt 10.0pt;
529
+ }
530
+ table.dl
531
+ {margin-top:0cm;
532
+ margin-right:0cm;
533
+ margin-bottom:11.0pt;
534
+ margin-left:20.15pt;}
535
+ ol
536
+ {margin-bottom:0cm;
537
+ margin-left:0cm;}
538
+ ul
539
+ {margin-bottom:0cm;
540
+ margin-left:0cm;}
541
+