metanorma-mpfd 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +17 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE +25 -0
- data/README.adoc +1 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/rspec +18 -0
- data/bin/setup +8 -0
- data/lib/asciidoctor/mpfd/biblio.rng +836 -0
- data/lib/asciidoctor/mpfd/converter.rb +204 -0
- data/lib/asciidoctor/mpfd/isodoc.rng +1041 -0
- data/lib/asciidoctor/mpfd/isostandard.rng +1001 -0
- data/lib/asciidoctor/mpfd/pdf.js +31 -0
- data/lib/asciidoctor/mpfd/rsd.rng +212 -0
- data/lib/asciidoctor/mpfd/section.rb +94 -0
- data/lib/asciidoctor/mpfd/version.rb +5 -0
- data/lib/asciidoctor/mpfd.rb +9 -0
- data/lib/isodoc/mpfd/html/header.html +184 -0
- data/lib/isodoc/mpfd/html/html_rsd_intro.html +8 -0
- data/lib/isodoc/mpfd/html/html_rsd_titlepage.html +58 -0
- data/lib/isodoc/mpfd/html/htmlstyle.scss +1094 -0
- data/lib/isodoc/mpfd/html/logo.jpg +0 -0
- data/lib/isodoc/mpfd/html/logo.svg +1 -0
- data/lib/isodoc/mpfd/html/mpfa-logo-no-text@4x.png +0 -0
- data/lib/isodoc/mpfd/html/mpfa-logo@4x.png +0 -0
- data/lib/isodoc/mpfd/html/rsd.scss +564 -0
- data/lib/isodoc/mpfd/html/scripts.html +82 -0
- data/lib/isodoc/mpfd/html/word_rsd_intro.html +3 -0
- data/lib/isodoc/mpfd/html/word_rsd_titlepage.html +42 -0
- data/lib/isodoc/mpfd/html/wordstyle.scss +1096 -0
- data/lib/isodoc/mpfd/html_convert.rb +370 -0
- data/lib/isodoc/mpfd/i18n-en.yaml +1 -0
- data/lib/isodoc/mpfd/metadata.rb +98 -0
- data/lib/isodoc/mpfd/pdf_convert.rb +367 -0
- data/lib/isodoc/mpfd/word_convert.rb +347 -0
- data/lib/metanorma/mpfd/processor.rb +43 -0
- data/lib/metanorma/mpfd.rb +7 -0
- data/lib/metanorma-mpfd.rb +11 -0
- data/metanorma-mpfd.gemspec +46 -0
- metadata +326 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
try {
|
4
|
+
require.resolve("puppeteer");
|
5
|
+
} catch(e) {
|
6
|
+
console.error("puppeteer Node library is not installed; will not generate PDF");
|
7
|
+
process.exit(e.code);
|
8
|
+
}
|
9
|
+
|
10
|
+
const puppeteer = require('puppeteer');
|
11
|
+
|
12
|
+
const createPdf = async() => {
|
13
|
+
let browser;
|
14
|
+
try {
|
15
|
+
browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
|
16
|
+
const page = await browser.newPage();
|
17
|
+
await page.goto(process.argv[2], {waitUntil: 'networkidle2'});
|
18
|
+
await page.pdf({
|
19
|
+
path: process.argv[3],
|
20
|
+
format: 'A4'
|
21
|
+
});
|
22
|
+
} catch (err) {
|
23
|
+
console.log(err.message);
|
24
|
+
} finally {
|
25
|
+
if (browser) {
|
26
|
+
browser.close();
|
27
|
+
}
|
28
|
+
process.exit();
|
29
|
+
}
|
30
|
+
};
|
31
|
+
createPdf();
|
@@ -0,0 +1,212 @@
|
|
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
|
+
Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
|
5
|
+
we cannot have a new default namespace: we will end up with a grammar with two different
|
6
|
+
namespaces, one for isostandard and one for csand additions. And we do not want that.
|
7
|
+
-->
|
8
|
+
<include href="isostandard.rng">
|
9
|
+
<start>
|
10
|
+
<ref name="rsd-standard"/>
|
11
|
+
</start>
|
12
|
+
<define name="language">
|
13
|
+
<element name="language">
|
14
|
+
<value>en</value>
|
15
|
+
</element>
|
16
|
+
</define>
|
17
|
+
<define name="docidentifier">
|
18
|
+
<element name="docidentifier">
|
19
|
+
<text/>
|
20
|
+
</element>
|
21
|
+
</define>
|
22
|
+
<define name="btitle">
|
23
|
+
<element name="title">
|
24
|
+
<ref name="FormattedString"/>
|
25
|
+
</element>
|
26
|
+
</define>
|
27
|
+
<define name="figure">
|
28
|
+
<element name="figure">
|
29
|
+
<attribute name="id">
|
30
|
+
<data type="ID"/>
|
31
|
+
</attribute>
|
32
|
+
<optional>
|
33
|
+
<ref name="source"/>
|
34
|
+
</optional>
|
35
|
+
<optional>
|
36
|
+
<ref name="tname"/>
|
37
|
+
</optional>
|
38
|
+
<choice>
|
39
|
+
<oneOrMore>
|
40
|
+
<ref name="figure"/>
|
41
|
+
</oneOrMore>
|
42
|
+
<group>
|
43
|
+
<choice>
|
44
|
+
<zeroOrMore>
|
45
|
+
<ref name="TextElement"/>
|
46
|
+
</zeroOrMore>
|
47
|
+
<ref name="pre"/>
|
48
|
+
</choice>
|
49
|
+
<zeroOrMore>
|
50
|
+
<ref name="note"/>
|
51
|
+
</zeroOrMore>
|
52
|
+
<optional>
|
53
|
+
<ref name="dl"/>
|
54
|
+
</optional>
|
55
|
+
</group>
|
56
|
+
</choice>
|
57
|
+
</element>
|
58
|
+
</define>
|
59
|
+
<define name="status">
|
60
|
+
<element name="status">
|
61
|
+
<choice>
|
62
|
+
<value>proposal</value>
|
63
|
+
<value>working-draft</value>
|
64
|
+
<value>committee-draft</value>
|
65
|
+
<value>draft-standard</value>
|
66
|
+
<value>final-draft</value>
|
67
|
+
<value>published</value>
|
68
|
+
<value>withdrawn</value>
|
69
|
+
<ref name="LocalizedString"/>
|
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
|
+
<define name="BibItemType" combine="choice">
|
96
|
+
<choice>
|
97
|
+
<value>policy-and-procedures</value>
|
98
|
+
<value>best-practices</value>
|
99
|
+
<value>supporting-document</value>
|
100
|
+
<value>report</value>
|
101
|
+
<value>legal</value>
|
102
|
+
<value>directives</value>
|
103
|
+
<value>proposal</value>
|
104
|
+
<value>standard</value>
|
105
|
+
</choice>
|
106
|
+
</define>
|
107
|
+
<define name="editorialgroup">
|
108
|
+
<element name="editorialgroup">
|
109
|
+
<ref name="committee"/>
|
110
|
+
</element>
|
111
|
+
</define>
|
112
|
+
<define name="BibData">
|
113
|
+
<optional>
|
114
|
+
<attribute name="type">
|
115
|
+
<ref name="BibItemType"/>
|
116
|
+
</attribute>
|
117
|
+
</optional>
|
118
|
+
<oneOrMore>
|
119
|
+
<ref name="btitle"/>
|
120
|
+
</oneOrMore>
|
121
|
+
<optional>
|
122
|
+
<ref name="formattedref"/>
|
123
|
+
</optional>
|
124
|
+
<zeroOrMore>
|
125
|
+
<ref name="bsource"/>
|
126
|
+
</zeroOrMore>
|
127
|
+
<zeroOrMore>
|
128
|
+
<ref name="docidentifier"/>
|
129
|
+
</zeroOrMore>
|
130
|
+
<zeroOrMore>
|
131
|
+
<ref name="bdate"/>
|
132
|
+
</zeroOrMore>
|
133
|
+
<zeroOrMore>
|
134
|
+
<ref name="contributor"/>
|
135
|
+
</zeroOrMore>
|
136
|
+
<optional>
|
137
|
+
<ref name="edition"/>
|
138
|
+
</optional>
|
139
|
+
<zeroOrMore>
|
140
|
+
<ref name="biblionote"/>
|
141
|
+
</zeroOrMore>
|
142
|
+
<zeroOrMore>
|
143
|
+
<ref name="language"/>
|
144
|
+
</zeroOrMore>
|
145
|
+
<zeroOrMore>
|
146
|
+
<ref name="script"/>
|
147
|
+
</zeroOrMore>
|
148
|
+
<zeroOrMore>
|
149
|
+
<ref name="abstract"/>
|
150
|
+
</zeroOrMore>
|
151
|
+
<optional>
|
152
|
+
<ref name="status"/>
|
153
|
+
</optional>
|
154
|
+
<ref name="copyright"/>
|
155
|
+
<zeroOrMore>
|
156
|
+
<ref name="docrelation"/>
|
157
|
+
</zeroOrMore>
|
158
|
+
<ref name="editorialgroup"/>
|
159
|
+
<zeroOrMore>
|
160
|
+
<ref name="ics"/>
|
161
|
+
</zeroOrMore>
|
162
|
+
<optional>
|
163
|
+
<ref name="security"/>
|
164
|
+
</optional>
|
165
|
+
</define>
|
166
|
+
</include>
|
167
|
+
<define name="committee">
|
168
|
+
<element name="committee">
|
169
|
+
<attribute name="type">
|
170
|
+
<choice>
|
171
|
+
<value>technical</value>
|
172
|
+
<value>provisional</value>
|
173
|
+
</choice>
|
174
|
+
</attribute>
|
175
|
+
<text/>
|
176
|
+
</element>
|
177
|
+
</define>
|
178
|
+
<define name="pre">
|
179
|
+
<element name="pre">
|
180
|
+
<text/>
|
181
|
+
</element>
|
182
|
+
</define>
|
183
|
+
<define name="keyword">
|
184
|
+
<element name="keyword">
|
185
|
+
<text/>
|
186
|
+
</element>
|
187
|
+
</define>
|
188
|
+
<define name="security">
|
189
|
+
<element name="security">
|
190
|
+
<text/>
|
191
|
+
</element>
|
192
|
+
</define>
|
193
|
+
<define name="rsd-standard">
|
194
|
+
<element name="rsd-standard">
|
195
|
+
<ref name="bibdata"/>
|
196
|
+
<optional>
|
197
|
+
<ref name="version"/>
|
198
|
+
</optional>
|
199
|
+
<zeroOrMore>
|
200
|
+
<ref name="termdocsource"/>
|
201
|
+
</zeroOrMore>
|
202
|
+
<ref name="preface"/>
|
203
|
+
<oneOrMore>
|
204
|
+
<ref name="sections"/>
|
205
|
+
</oneOrMore>
|
206
|
+
<zeroOrMore>
|
207
|
+
<ref name="annex"/>
|
208
|
+
</zeroOrMore>
|
209
|
+
<ref name="bibliography"/>
|
210
|
+
</element>
|
211
|
+
</define>
|
212
|
+
</grammar>
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require "asciidoctor"
|
2
|
+
require "asciidoctor/mpfd"
|
3
|
+
require "asciidoctor/iso/converter"
|
4
|
+
require "isodoc/mpfd/html_convert"
|
5
|
+
require "isodoc/mpfd/word_convert"
|
6
|
+
|
7
|
+
module Asciidoctor
|
8
|
+
module Mpfd
|
9
|
+
|
10
|
+
# A {Converter} implementation that generates MPFD output, and a document
|
11
|
+
# schema encapsulation of the document for validation
|
12
|
+
#
|
13
|
+
class Converter < ISO::Converter
|
14
|
+
|
15
|
+
def sections_cleanup(x)
|
16
|
+
super
|
17
|
+
x.xpath("//*[@inline-header]").each do |h|
|
18
|
+
h.delete("inline-header")
|
19
|
+
end
|
20
|
+
x.xpath("//[@guidance]").each do |h|
|
21
|
+
require "byebug"; byebug
|
22
|
+
c = h.previous_element || next
|
23
|
+
c.add_child h.remove
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def section(node)
|
28
|
+
a = { id: Asciidoctor::ISO::Utils::anchor_or_uuid(node) }
|
29
|
+
noko do |xml|
|
30
|
+
case sectiontype(node)
|
31
|
+
when "introduction" then
|
32
|
+
if node.level == 1 then introduction_parse(a, xml, node)
|
33
|
+
else
|
34
|
+
clause_parse(a, xml, node)
|
35
|
+
end
|
36
|
+
when "terms and definitions",
|
37
|
+
"terms, definitions, symbols and abbreviated terms",
|
38
|
+
"terms, definitions, symbols and abbreviations",
|
39
|
+
"terms, definitions and symbols",
|
40
|
+
"terms, definitions and abbreviations",
|
41
|
+
"terms, definitions and abbreviated terms",
|
42
|
+
"glossary"
|
43
|
+
@term_def = true
|
44
|
+
term_def_parse(a, xml, node, true)
|
45
|
+
@term_def = false
|
46
|
+
when "symbols and abbreviated terms"
|
47
|
+
symbols_parse(a, xml, node)
|
48
|
+
when "bibliography" then bibliography_parse(a, xml, node)
|
49
|
+
else
|
50
|
+
if @term_def then term_def_subclause_parse(a, xml, node)
|
51
|
+
elsif @biblio then bibliography_parse(a, xml, node)
|
52
|
+
elsif node.attr("style") == "bibliography" && node.level == 1
|
53
|
+
bibliography_parse(a, xml, node)
|
54
|
+
elsif node.attr("style") == "appendix" && node.level == 1
|
55
|
+
annex_parse(a, xml, node)
|
56
|
+
elsif node.option? "appendix"
|
57
|
+
appendix_parse(a, xml, node)
|
58
|
+
else
|
59
|
+
clause_parse(a, xml, node)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end.join("\n")
|
63
|
+
end
|
64
|
+
|
65
|
+
def term_def_title(_toplevel, node)
|
66
|
+
return node.title
|
67
|
+
end
|
68
|
+
|
69
|
+
def make_preface(x, s)
|
70
|
+
if x.at("//foreword | //introduction | //terms")
|
71
|
+
preface = s.add_previous_sibling("<preface/>").first
|
72
|
+
foreword = x.at("//foreword")
|
73
|
+
preface.add_child foreword.remove if foreword
|
74
|
+
introduction = x.at("//introduction")
|
75
|
+
preface.add_child introduction.remove if introduction
|
76
|
+
terms = x.at("//terms")
|
77
|
+
preface.add_child terms.remove if terms
|
78
|
+
end
|
79
|
+
x.xpath("//clause[@preface]").each do |c|
|
80
|
+
c.delete("preface")
|
81
|
+
preface.add_child c.remove
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def clause_parse(attrs, xml, node)
|
86
|
+
attrs[:preface] = true if node.attr("style") == "preface"
|
87
|
+
attrs[:guidance] = true if node.role == "guidance"
|
88
|
+
attrs[:container] = true if node.role == "container"
|
89
|
+
super
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
2
|
+
xmlns:o="urn:schemas-microsoft-com:office:office"
|
3
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
4
|
+
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
5
|
+
xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
|
6
|
+
|
7
|
+
<head>
|
8
|
+
<meta name=Title content="">
|
9
|
+
<meta name=Keywords content="">
|
10
|
+
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
|
11
|
+
<meta name=ProgId content=Word.Document>
|
12
|
+
<meta name=Generator content="Microsoft Word 15">
|
13
|
+
<meta name=Originator content="Microsoft Word 15">
|
14
|
+
<link id=Main-File rel=Main-File href="../{{ filename }}.html">
|
15
|
+
<!--[if gte mso 9]><xml>
|
16
|
+
<o:shapedefaults v:ext="edit" spidmax="2049"/>
|
17
|
+
</xml><![endif]-->
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<body lang=EN link=blue vlink="#954F72">
|
21
|
+
|
22
|
+
<div style='mso-element:footnote-separator' id=fs>
|
23
|
+
|
24
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
25
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
26
|
+
|
27
|
+
<hr align=left size=1 width="33%">
|
28
|
+
|
29
|
+
<![endif]></span></span></p>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div style='mso-element:footnote-continuation-separator' id=fcs>
|
34
|
+
|
35
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
36
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
37
|
+
|
38
|
+
<hr align=left size=1>
|
39
|
+
|
40
|
+
<![endif]></span></span></p>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div style='mso-element:endnote-separator' id=es>
|
45
|
+
|
46
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
47
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
48
|
+
|
49
|
+
<hr align=left size=1 width="33%">
|
50
|
+
|
51
|
+
<![endif]></span></span></p>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div style='mso-element:endnote-continuation-separator' id=ecs>
|
56
|
+
|
57
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
58
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
59
|
+
|
60
|
+
<hr align=left size=1>
|
61
|
+
|
62
|
+
<![endif]></span></span></p>
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div style='mso-element:header' id=eh1>
|
67
|
+
|
68
|
+
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
69
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>CS {{ docnumber }}:{{ docyear }}</span></p>
|
70
|
+
|
71
|
+
</div>
|
72
|
+
|
73
|
+
<div style='mso-element:header' id=h1>
|
74
|
+
|
75
|
+
<p class=MsoHeader style='margin-bottom:18.0pt'><span lang=EN-GB
|
76
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-weight:normal'>©
|
77
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved</span><span lang=EN-GB
|
78
|
+
style='font-weight:normal'><o:p></o:p></span></p>
|
79
|
+
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<div style='mso-element:footer' id=ef1>
|
83
|
+
|
84
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
85
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
86
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
87
|
+
style='mso-element:field-begin'></span><span
|
88
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
89
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
90
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
91
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
92
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
93
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
94
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
95
|
+
style='mso-tab-count:1'> </span>©
|
96
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
97
|
+
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<div style='mso-element:header' id=eh2>
|
101
|
+
|
102
|
+
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
103
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose Group Inc. {{ docnumber }}:{{ docyear }}</span></p>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<div style='mso-element:header' id=h2>
|
108
|
+
|
109
|
+
<p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
|
110
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose Group Inc. {{ docnumber }}:{{ docyear }}</span></p>
|
111
|
+
|
112
|
+
</div>
|
113
|
+
|
114
|
+
<div style='mso-element:footer' id=ef2>
|
115
|
+
|
116
|
+
<p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
|
117
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
118
|
+
style='mso-element:field-begin'></span><span
|
119
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
120
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
121
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
122
|
+
style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
|
123
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
124
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
125
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
|
126
|
+
1'> </span>©
|
127
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<div style='mso-element:footer' id=f2>
|
132
|
+
|
133
|
+
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
134
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
135
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><span
|
136
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
137
|
+
style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>
|
138
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
139
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
140
|
+
style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
|
141
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
142
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
143
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
|
147
|
+
<div style='mso-element:footer' id=ef3>
|
148
|
+
|
149
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
150
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
151
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
152
|
+
style='mso-element:field-begin'></span><span
|
153
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
154
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
155
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
156
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
157
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
158
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
159
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
160
|
+
style='mso-tab-count:1'> </span>©
|
161
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
162
|
+
|
163
|
+
</div>
|
164
|
+
|
165
|
+
<div style='mso-element:footer' id=f3>
|
166
|
+
|
167
|
+
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
168
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
169
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><b
|
170
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
171
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
|
172
|
+
PAGE<span style='mso-spacerun:yes'> </span>\* MERGEFORMAT <span
|
173
|
+
style='mso-element:field-separator'></span></span></b><![endif]--><b
|
174
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
175
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
|
176
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
177
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
178
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
179
|
+
|
180
|
+
</div>
|
181
|
+
|
182
|
+
</body>
|
183
|
+
|
184
|
+
</html>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<!--
|
2
|
+
<div class="document-stage-band" id='{{ status | downcase | replace: " ", "-" }}-band'>
|
3
|
+
<p class="document-stage">{{ status }}</p>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div class="document-type-band" id='{{ doctype | downcase | replace: " ", "-" }}-band'>
|
7
|
+
<p class="document-type">Ribose {{ doctype }}</p>
|
8
|
+
</div>
|
9
|
+
-->
|
10
|
+
|
11
|
+
|
12
|
+
<div id='toggle'> <span>•</span> </div>
|
13
|
+
|
14
|
+
<header>
|
15
|
+
|
16
|
+
<div class="coverpage">
|
17
|
+
<div class="wrapper-top">
|
18
|
+
|
19
|
+
<div class="coverpage-doc-identity">
|
20
|
+
<img src="mpfa-logo-no-text@4x.png" width="50px">
|
21
|
+
</div>
|
22
|
+
|
23
|
+
{% if docnumber %}
|
24
|
+
<div class="doc-number">
|
25
|
+
<span class="docnumber">{{ docnumber }}</span>
|
26
|
+
<span class="docyear">{{ docyear }} {{ draftinfo }}</span>
|
27
|
+
</div>
|
28
|
+
{% endif %}
|
29
|
+
|
30
|
+
<div class="coverpage-title">
|
31
|
+
<span class="title-1">{{ doctype }}</span>
|
32
|
+
<span class="title-3">{{ doctitle }}</span>
|
33
|
+
<!--<span class="title-second">{{ docsubtitle }}</span>-->
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div class="coverpage-footer">
|
37
|
+
<div class="coverpage-logo">
|
38
|
+
<span class="doc-edition">{{ edition }} Edition</span>
|
39
|
+
<span>{{ revdate_monthyear }} {{ draftinfo }}</span>
|
40
|
+
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div class="coverpage-location">
|
44
|
+
<span>Hong Kong</span>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
<div class="info-section">
|
51
|
+
<div class="copyright">
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
</header>
|