metanorma-ribose 1.6.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.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/macos.yml +41 -0
  3. data/.github/workflows/ubuntu.yml +45 -0
  4. data/.github/workflows/windows.yml +43 -0
  5. data/.gitignore +1 -0
  6. data/.hound.yml +3 -0
  7. data/.rubocop.yml +10 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +11 -0
  10. data/LICENSE +25 -0
  11. data/README.adoc +70 -0
  12. data/Rakefile +8 -0
  13. data/bin/console +14 -0
  14. data/bin/rspec +18 -0
  15. data/bin/setup +8 -0
  16. data/lib/asciidoctor/ribose.rb +4 -0
  17. data/lib/asciidoctor/ribose/basicdoc.rng +1059 -0
  18. data/lib/asciidoctor/ribose/biblio.rng +1237 -0
  19. data/lib/asciidoctor/ribose/boilerplate.xml +47 -0
  20. data/lib/asciidoctor/ribose/converter.rb +75 -0
  21. data/lib/asciidoctor/ribose/isodoc.rng +1510 -0
  22. data/lib/asciidoctor/ribose/reqt.rng +194 -0
  23. data/lib/asciidoctor/ribose/rsd.rng +79 -0
  24. data/lib/isodoc/ribose/base_convert.rb +21 -0
  25. data/lib/isodoc/ribose/html/header.html +242 -0
  26. data/lib/isodoc/ribose/html/html_rsd_intro.html +8 -0
  27. data/lib/isodoc/ribose/html/html_rsd_titlepage.html +90 -0
  28. data/lib/isodoc/ribose/html/htmlstyle.css +1004 -0
  29. data/lib/isodoc/ribose/html/htmlstyle.scss +751 -0
  30. data/lib/isodoc/ribose/html/logo.png +0 -0
  31. data/lib/isodoc/ribose/html/logo.svg +1 -0
  32. data/lib/isodoc/ribose/html/rsd.css +798 -0
  33. data/lib/isodoc/ribose/html/rsd.scss +759 -0
  34. data/lib/isodoc/ribose/html/scripts.html +71 -0
  35. data/lib/isodoc/ribose/html/word_rsd_intro.html +8 -0
  36. data/lib/isodoc/ribose/html/word_rsd_titlepage.html +119 -0
  37. data/lib/isodoc/ribose/html/wordstyle.css +1266 -0
  38. data/lib/isodoc/ribose/html/wordstyle.scss +1169 -0
  39. data/lib/isodoc/ribose/html_convert.rb +36 -0
  40. data/lib/isodoc/ribose/init.rb +19 -0
  41. data/lib/isodoc/ribose/metadata.rb +17 -0
  42. data/lib/isodoc/ribose/pdf_convert.rb +19 -0
  43. data/lib/isodoc/ribose/presentation_xml_convert.rb +17 -0
  44. data/lib/isodoc/ribose/rsd.standard.xsl +3458 -0
  45. data/lib/isodoc/ribose/word_convert.rb +33 -0
  46. data/lib/isodoc/ribose/xref.rb +31 -0
  47. data/lib/metanorma-ribose.rb +14 -0
  48. data/lib/metanorma/ribose.rb +32 -0
  49. data/lib/metanorma/ribose/processor.rb +38 -0
  50. data/lib/metanorma/ribose/version.rb +5 -0
  51. data/metanorma-ribose.gemspec +44 -0
  52. data/metanorma.yml +36 -0
  53. metadata +267 -0
@@ -0,0 +1,194 @@
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
+ Presupposes isodoc.rnc, is included in it
5
+ include "isodoc.rnc" { }
6
+ -->
7
+ <define name="requirement">
8
+ <element name="requirement">
9
+ <ref name="RequirementType"/>
10
+ </element>
11
+ </define>
12
+ <define name="recommendation">
13
+ <element name="recommendation">
14
+ <ref name="RequirementType"/>
15
+ </element>
16
+ </define>
17
+ <define name="permission">
18
+ <element name="permission">
19
+ <ref name="RequirementType"/>
20
+ </element>
21
+ </define>
22
+ <define name="RequirementType">
23
+ <optional>
24
+ <attribute name="obligation">
25
+ <ref name="ObligationType"/>
26
+ </attribute>
27
+ </optional>
28
+ <optional>
29
+ <attribute name="unnumbered">
30
+ <data type="boolean"/>
31
+ </attribute>
32
+ </optional>
33
+ <optional>
34
+ <attribute name="number"/>
35
+ </optional>
36
+ <optional>
37
+ <attribute name="subsequence"/>
38
+ </optional>
39
+ <optional>
40
+ <attribute name="keep-with-next">
41
+ <data type="boolean"/>
42
+ </attribute>
43
+ </optional>
44
+ <optional>
45
+ <attribute name="keep-lines-together">
46
+ <data type="boolean"/>
47
+ </attribute>
48
+ </optional>
49
+ <attribute name="id">
50
+ <data type="ID"/>
51
+ </attribute>
52
+ <optional>
53
+ <attribute name="filename"/>
54
+ </optional>
55
+ <optional>
56
+ <attribute name="model"/>
57
+ </optional>
58
+ <optional>
59
+ <attribute name="type"/>
60
+ </optional>
61
+ <optional>
62
+ <ref name="reqtitle"/>
63
+ </optional>
64
+ <optional>
65
+ <ref name="label"/>
66
+ </optional>
67
+ <optional>
68
+ <ref name="subject"/>
69
+ </optional>
70
+ <zeroOrMore>
71
+ <ref name="reqinherit"/>
72
+ </zeroOrMore>
73
+ <zeroOrMore>
74
+ <ref name="classification"/>
75
+ </zeroOrMore>
76
+ <zeroOrMore>
77
+ <choice>
78
+ <ref name="measurementtarget"/>
79
+ <ref name="specification"/>
80
+ <ref name="verification"/>
81
+ <ref name="import"/>
82
+ <ref name="description"/>
83
+ </choice>
84
+ </zeroOrMore>
85
+ <optional>
86
+ <ref name="reqt_references"/>
87
+ </optional>
88
+ <zeroOrMore>
89
+ <choice>
90
+ <ref name="requirement"/>
91
+ <ref name="recommendation"/>
92
+ <ref name="permission"/>
93
+ </choice>
94
+ </zeroOrMore>
95
+ </define>
96
+ <define name="reqtitle">
97
+ <element name="title">
98
+ <ref name="FormattedString"/>
99
+ </element>
100
+ </define>
101
+ <define name="label">
102
+ <element name="label">
103
+ <text/>
104
+ </element>
105
+ </define>
106
+ <define name="subject">
107
+ <element name="subject">
108
+ <text/>
109
+ </element>
110
+ </define>
111
+ <define name="reqinherit">
112
+ <element name="inherit">
113
+ <text/>
114
+ </element>
115
+ </define>
116
+ <define name="measurementtarget">
117
+ <element name="measurement-target">
118
+ <ref name="RequirementSubpart"/>
119
+ </element>
120
+ </define>
121
+ <define name="specification">
122
+ <element name="specification">
123
+ <ref name="RequirementSubpart"/>
124
+ </element>
125
+ </define>
126
+ <define name="verification">
127
+ <element name="verification">
128
+ <ref name="RequirementSubpart"/>
129
+ </element>
130
+ </define>
131
+ <define name="import">
132
+ <element name="import">
133
+ <ref name="RequirementSubpart"/>
134
+ </element>
135
+ </define>
136
+ <define name="description">
137
+ <element name="description">
138
+ <ref name="RequirementSubpart"/>
139
+ </element>
140
+ </define>
141
+ <define name="reqt_references">
142
+ <element name="references">
143
+ <oneOrMore>
144
+ <ref name="bibitem"/>
145
+ </oneOrMore>
146
+ </element>
147
+ </define>
148
+ <define name="RequirementSubpart">
149
+ <optional>
150
+ <attribute name="type"/>
151
+ </optional>
152
+ <optional>
153
+ <attribute name="exclude">
154
+ <data type="boolean"/>
155
+ </attribute>
156
+ </optional>
157
+ <optional>
158
+ <attribute name="keep-with-next">
159
+ <data type="boolean"/>
160
+ </attribute>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-lines-together">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
167
+ <oneOrMore>
168
+ <ref name="BasicBlock"/>
169
+ </oneOrMore>
170
+ </define>
171
+ <define name="ObligationType">
172
+ <choice>
173
+ <value>requirement</value>
174
+ <value>recommendation</value>
175
+ <value>permission</value>
176
+ </choice>
177
+ </define>
178
+ <define name="classification">
179
+ <element name="classification">
180
+ <ref name="classification_tag"/>
181
+ <ref name="classification_value"/>
182
+ </element>
183
+ </define>
184
+ <define name="classification_tag">
185
+ <element name="tag">
186
+ <text/>
187
+ </element>
188
+ </define>
189
+ <define name="classification_value">
190
+ <element name="value">
191
+ <text/>
192
+ </element>
193
+ </define>
194
+ </grammar>
@@ -0,0 +1,79 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar ns="https://www.metanorma.org/ns/rsd" xmlns="http://relaxng.org/ns/structure/1.0">
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="isodoc.rng">
9
+ <start>
10
+ <ref name="rsd-standard"/>
11
+ </start>
12
+ <define name="DocumentType">
13
+ <choice>
14
+ <value>policy-and-procedures</value>
15
+ <value>best-practices</value>
16
+ <value>supporting-document</value>
17
+ <value>report</value>
18
+ <value>legal</value>
19
+ <value>directives</value>
20
+ <value>proposal</value>
21
+ <value>standard</value>
22
+ </choice>
23
+ </define>
24
+ <define name="editorialgroup">
25
+ <element name="editorialgroup">
26
+ <oneOrMore>
27
+ <ref name="committee"/>
28
+ </oneOrMore>
29
+ </element>
30
+ </define>
31
+ <define name="BibDataExtensionType">
32
+ <optional>
33
+ <ref name="doctype"/>
34
+ </optional>
35
+ <ref name="editorialgroup"/>
36
+ <zeroOrMore>
37
+ <ref name="ics"/>
38
+ </zeroOrMore>
39
+ <optional>
40
+ <ref name="security"/>
41
+ </optional>
42
+ </define>
43
+ </include>
44
+ <define name="committee">
45
+ <element name="committee">
46
+ <attribute name="type">
47
+ <choice>
48
+ <value>technical</value>
49
+ <value>provisional</value>
50
+ </choice>
51
+ </attribute>
52
+ <text/>
53
+ </element>
54
+ </define>
55
+ <define name="security">
56
+ <element name="security">
57
+ <text/>
58
+ </element>
59
+ </define>
60
+ <define name="rsd-standard">
61
+ <element name="rsd-standard">
62
+ <ref name="bibdata"/>
63
+ <zeroOrMore>
64
+ <ref name="termdocsource"/>
65
+ </zeroOrMore>
66
+ <optional>
67
+ <ref name="boilerplate"/>
68
+ </optional>
69
+ <ref name="preface"/>
70
+ <oneOrMore>
71
+ <ref name="sections"/>
72
+ </oneOrMore>
73
+ <zeroOrMore>
74
+ <ref name="annex"/>
75
+ </zeroOrMore>
76
+ <ref name="bibliography"/>
77
+ </element>
78
+ </define>
79
+ </grammar>
@@ -0,0 +1,21 @@
1
+ module IsoDoc
2
+ module Ribose
3
+ module BaseConvert
4
+ def executivesummary docxml, out
5
+ f = docxml.at(ns("//executivesummary")) || return
6
+ title_attr = { class: "IntroTitle" }
7
+ page_break(out)
8
+ out.div **{ class: "Section3", id: f["id"] } do |div|
9
+ clause_name(nil, f&.at(ns("./title")), div, title_attr)
10
+ f.elements.each do |e|
11
+ parse(e, div) unless e.name == "title"
12
+ end
13
+ end
14
+ end
15
+
16
+ def clausedelim
17
+ ""
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,242 @@
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>RR&nbsp;{{ 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 Asia Limited&nbsp;{{ docyear }}&nbsp;– 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 Asia Limited&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
97
+
98
+ </div>
99
+
100
+ <div style='mso-element:header' id=eh2>
101
+ <p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
102
+ mso-line-height-rule:exactly'><span lang=EN-GB>RR&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
103
+ </div>
104
+
105
+ <div style='mso-element:header' id=eh2l>
106
+ <p class=MsoHeaderLandscape align=left style='text-align:left;line-height:12.0pt;
107
+ mso-line-height-rule:exactly'><span lang=EN-GB>RR&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
108
+ </div>
109
+
110
+ <div style='mso-element:header' id=h2>
111
+ <p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
112
+ mso-line-height-rule:exactly'><span lang=EN-GB>RR&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
113
+ </div>
114
+
115
+ <div style='mso-element:header' id=h2l>
116
+ <p class=MsoHeaderLandscape align=right style='text-align:right;line-height:12.0pt;
117
+ mso-line-height-rule:exactly'><span lang=EN-GB>RR&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
118
+ </div>
119
+
120
+ <div style='mso-element:footer' id=ef2>
121
+ <p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
122
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
123
+ style='mso-element:field-begin'></span><span
124
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
125
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
126
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
127
+ style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
128
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
129
+ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
130
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
131
+ 1'>                                                                                                                                                                           </span>©
132
+ Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
133
+ </div>
134
+
135
+ <div style='mso-element:footer' id=ef2l>
136
+ <p class=MsoFooterLandscape style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
137
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
138
+ style='mso-element:field-begin'></span><span
139
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
140
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
141
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
142
+ style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
143
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
144
+ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
145
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
146
+ 1'>                                                                                                                                                                           </span>©
147
+ Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
148
+ </div>
149
+
150
+ <div style='mso-element:footer' id=f2>
151
+ <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
152
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All
153
+ rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
154
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
155
+ style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
156
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
157
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
158
+ style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
159
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
160
+ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
161
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
162
+ </div>
163
+
164
+ <div style='mso-element:footer' id=f2l>
165
+ <p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
166
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All
167
+ rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
168
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
169
+ style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
170
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
171
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
172
+ style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
173
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
174
+ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
175
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
176
+ </div>
177
+
178
+ <div style='mso-element:footer' id=ef3>
179
+ <p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
180
+ exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
181
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
182
+ style='mso-element:field-begin'></span><span
183
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
184
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
185
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
186
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
187
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
188
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
189
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
190
+ style='mso-tab-count:1'>                                                                                                                                                                           </span>©
191
+ Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
192
+ </div>
193
+
194
+ <div style='mso-element:footer' id=ef3l>
195
+ <p class=MsoFooterLandscape style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
196
+ exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
197
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
198
+ style='mso-element:field-begin'></span><span
199
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
200
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
201
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
202
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
203
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
204
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
205
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
206
+ style='mso-tab-count:1'>                                                                                                                                                                           </span>©
207
+ Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
208
+ </div>
209
+
210
+ <div style='mso-element:footer' id=f3>
211
+ <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
212
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All
213
+ rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
214
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
215
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
216
+ PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
217
+ style='mso-element:field-separator'></span></span></b><![endif]--><b
218
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
219
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
220
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
221
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
222
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
223
+ </div>
224
+
225
+ <div style='mso-element:footer' id=f3l>
226
+ <p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
227
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Asia Limited&nbsp;{{ docyear }}&nbsp;– All
228
+ rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
229
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
230
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
231
+ PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
232
+ style='mso-element:field-separator'></span></span></b><![endif]--><b
233
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
234
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
235
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
236
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
237
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
238
+ </div>
239
+
240
+ </body>
241
+
242
+ </html>