metanorma-iso 1.6.0 → 1.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +16 -29
  3. data/.rubocop.yml +0 -4
  4. data/lib/asciidoctor/iso/base.rb +13 -13
  5. data/lib/asciidoctor/iso/basicdoc.rng +5 -3
  6. data/lib/asciidoctor/iso/cleanup.rb +1 -1
  7. data/lib/asciidoctor/iso/front.rb +5 -5
  8. data/lib/asciidoctor/iso/isodoc.rng +134 -5
  9. data/lib/asciidoctor/iso/isostandard-amd.rng +11 -4
  10. data/lib/asciidoctor/iso/isostandard.rng +33 -107
  11. data/lib/asciidoctor/iso/validate.rb +79 -0
  12. data/lib/asciidoctor/iso/validate_section.rb +12 -9
  13. data/lib/isodoc/iso/base_convert.rb +11 -0
  14. data/lib/isodoc/iso/html/header.html +12 -12
  15. data/lib/isodoc/iso/html/html_iso_intro.html +1 -1
  16. data/lib/isodoc/iso/html/html_iso_titlepage.html +1 -1
  17. data/lib/isodoc/iso/html/word_iso_intro.html +1 -1
  18. data/lib/isodoc/iso/html/word_iso_titlepage.html +1 -1
  19. data/lib/isodoc/iso/html_convert.rb +2 -2
  20. data/lib/isodoc/iso/i18n-en.yaml +6 -0
  21. data/lib/isodoc/iso/i18n-fr.yaml +4 -0
  22. data/lib/isodoc/iso/i18n-zh-Hans.yaml +4 -0
  23. data/lib/isodoc/iso/index.rb +139 -0
  24. data/lib/isodoc/iso/iso.amendment.xsl +1006 -317
  25. data/lib/isodoc/iso/iso.international-standard.xsl +1006 -317
  26. data/lib/isodoc/iso/presentation_xml_convert.rb +1 -4
  27. data/lib/isodoc/iso/sections.rb +1 -1
  28. data/lib/isodoc/iso/word_convert.rb +2 -2
  29. data/lib/isodoc/iso/xref.rb +33 -12
  30. data/lib/metanorma/iso/version.rb +1 -1
  31. data/metanorma-iso.gemspec +3 -3
  32. data/spec/asciidoctor/amd_spec.rb +696 -0
  33. data/spec/asciidoctor/base_spec.rb +704 -0
  34. data/spec/asciidoctor/blocks_spec.rb +527 -0
  35. data/spec/asciidoctor/cleanup_spec.rb +1134 -0
  36. data/spec/asciidoctor/inline_spec.rb +195 -0
  37. data/spec/asciidoctor/lists_spec.rb +197 -0
  38. data/spec/asciidoctor/refs_spec.rb +375 -0
  39. data/spec/asciidoctor/section_spec.rb +393 -0
  40. data/spec/asciidoctor/table_spec.rb +329 -0
  41. data/spec/asciidoctor/validate_spec.rb +1555 -0
  42. data/spec/isodoc/amd_spec.rb +967 -946
  43. data/spec/isodoc/blocks_spec.rb +530 -507
  44. data/spec/isodoc/i18n_spec.rb +953 -911
  45. data/spec/isodoc/inline_spec.rb +355 -293
  46. data/spec/isodoc/iso_spec.rb +340 -316
  47. data/spec/isodoc/metadata_spec.rb +392 -382
  48. data/spec/isodoc/postproc_spec.rb +834 -656
  49. data/spec/isodoc/ref_spec.rb +374 -331
  50. data/spec/isodoc/section_spec.rb +821 -519
  51. data/spec/isodoc/table_spec.rb +472 -411
  52. data/spec/isodoc/terms_spec.rb +209 -185
  53. data/spec/isodoc/xref_spec.rb +1370 -1236
  54. data/spec/metanorma/processor_spec.rb +28 -26
  55. data/spec/spec_helper.rb +184 -189
  56. metadata +22 -23
  57. data/.rubocop.ribose.yml +0 -66
  58. data/spec/asciidoctor-iso/amd_spec.rb +0 -694
  59. data/spec/asciidoctor-iso/base_spec.rb +0 -713
  60. data/spec/asciidoctor-iso/blocks_spec.rb +0 -482
  61. data/spec/asciidoctor-iso/cleanup_spec.rb +0 -1025
  62. data/spec/asciidoctor-iso/inline_spec.rb +0 -170
  63. data/spec/asciidoctor-iso/lists_spec.rb +0 -190
  64. data/spec/asciidoctor-iso/refs_spec.rb +0 -317
  65. data/spec/asciidoctor-iso/section_spec.rb +0 -362
  66. data/spec/asciidoctor-iso/table_spec.rb +0 -313
  67. data/spec/asciidoctor-iso/validate_spec.rb +0 -1251
  68. data/spec/assets/xref_error.adoc +0 -7
@@ -79,19 +79,6 @@
79
79
  </choice>
80
80
  </element>
81
81
  </define>
82
- <define name="ul">
83
- <element name="ul">
84
- <attribute name="id">
85
- <data type="ID"/>
86
- </attribute>
87
- <oneOrMore>
88
- <ref name="ul_li"/>
89
- </oneOrMore>
90
- <zeroOrMore>
91
- <ref name="note"/>
92
- </zeroOrMore>
93
- </element>
94
- </define>
95
82
  <define name="sections">
96
83
  <element name="sections">
97
84
  <zeroOrMore>
@@ -140,22 +127,28 @@
140
127
  </choice>
141
128
  </attribute>
142
129
  </optional>
130
+ <optional>
131
+ <attribute name="type"/>
132
+ </optional>
143
133
  <optional>
144
134
  <ref name="section-title"/>
145
135
  </optional>
146
- <choice>
147
- <group>
148
- <oneOrMore>
149
- <ref name="BasicBlock"/>
150
- </oneOrMore>
151
- <zeroOrMore>
152
- <ref name="note"/>
153
- </zeroOrMore>
154
- </group>
136
+ <group>
137
+ <choice>
138
+ <group>
139
+ <oneOrMore>
140
+ <ref name="BasicBlock"/>
141
+ </oneOrMore>
142
+ <zeroOrMore>
143
+ <ref name="note"/>
144
+ </zeroOrMore>
145
+ </group>
146
+ <ref name="amend"/>
147
+ </choice>
155
148
  <oneOrMore>
156
149
  <ref name="clause-subsection"/>
157
150
  </oneOrMore>
158
- </choice>
151
+ </group>
159
152
  </define>
160
153
  <define name="term">
161
154
  <element name="term">
@@ -186,17 +179,6 @@
186
179
  </zeroOrMore>
187
180
  </element>
188
181
  </define>
189
- <define name="definition">
190
- <element name="definition">
191
- <oneOrMore>
192
- <choice>
193
- <ref name="paragraph"/>
194
- <ref name="figure"/>
195
- <ref name="formula"/>
196
- </choice>
197
- </oneOrMore>
198
- </element>
199
- </define>
200
182
  <define name="annex">
201
183
  <element name="annex">
202
184
  <optional>
@@ -327,6 +309,11 @@
327
309
  <optional>
328
310
  <attribute name="script"/>
329
311
  </optional>
312
+ <optional>
313
+ <attribute name="inline-header">
314
+ <data type="boolean"/>
315
+ </attribute>
316
+ </optional>
330
317
  <optional>
331
318
  <attribute name="obligation">
332
319
  <choice>
@@ -335,6 +322,12 @@
335
322
  </choice>
336
323
  </attribute>
337
324
  </optional>
325
+ <optional>
326
+ <attribute name="number"/>
327
+ </optional>
328
+ <optional>
329
+ <attribute name="type"/>
330
+ </optional>
338
331
  <optional>
339
332
  <ref name="section-title"/>
340
333
  </optional>
@@ -352,57 +345,6 @@
352
345
  </oneOrMore>
353
346
  </choice>
354
347
  </define>
355
- <define name="table">
356
- <element name="table">
357
- <attribute name="id">
358
- <data type="ID"/>
359
- </attribute>
360
- <optional>
361
- <attribute name="width"/>
362
- </optional>
363
- <optional>
364
- <attribute name="unnumbered">
365
- <data type="boolean"/>
366
- </attribute>
367
- </optional>
368
- <optional>
369
- <attribute name="number"/>
370
- </optional>
371
- <optional>
372
- <attribute name="subsequence"/>
373
- </optional>
374
- <optional>
375
- <attribute name="alt"/>
376
- </optional>
377
- <optional>
378
- <attribute name="summary"/>
379
- </optional>
380
- <optional>
381
- <attribute name="uri">
382
- <data type="anyURI"/>
383
- </attribute>
384
- </optional>
385
- <optional>
386
- <ref name="colgroup"/>
387
- </optional>
388
- <optional>
389
- <ref name="tname"/>
390
- </optional>
391
- <optional>
392
- <ref name="thead"/>
393
- </optional>
394
- <ref name="tbody"/>
395
- <optional>
396
- <ref name="tfoot"/>
397
- </optional>
398
- <zeroOrMore>
399
- <ref name="table-note"/>
400
- </zeroOrMore>
401
- <optional>
402
- <ref name="dl"/>
403
- </optional>
404
- </element>
405
- </define>
406
348
  </include>
407
349
  <!-- end overrides -->
408
350
  <!--
@@ -422,6 +364,9 @@
422
364
  <zeroOrMore>
423
365
  <ref name="termdocsource"/>
424
366
  </zeroOrMore>
367
+ <optional>
368
+ <ref name="misccontainer"/>
369
+ </optional>
425
370
  <optional>
426
371
  <ref name="boilerplate"/>
427
372
  </optional>
@@ -433,6 +378,9 @@
433
378
  <ref name="annex"/>
434
379
  </zeroOrMore>
435
380
  <ref name="bibliography"/>
381
+ <zeroOrMore>
382
+ <ref name="indexsect"/>
383
+ </zeroOrMore>
436
384
  </element>
437
385
  </define>
438
386
  <define name="horizontal">
@@ -521,28 +469,6 @@
521
469
  <ref name="Clause-Section"/>
522
470
  </element>
523
471
  </define>
524
- <define name="ul_li">
525
- <element name="li">
526
- <optional>
527
- <attribute name="id">
528
- <data type="ID"/>
529
- </attribute>
530
- </optional>
531
- <optional>
532
- <attribute name="uncheckedcheckbox">
533
- <data type="boolean"/>
534
- </attribute>
535
- </optional>
536
- <optional>
537
- <attribute name="checkedcheckbox">
538
- <data type="boolean"/>
539
- </attribute>
540
- </optional>
541
- <oneOrMore>
542
- <ref name="BasicBlock"/>
543
- </oneOrMore>
544
- </element>
545
- </define>
546
472
  <define name="stagename">
547
473
  <element name="stagename">
548
474
  <text/>
@@ -146,6 +146,84 @@ module Asciidoctor
146
146
  "#{iteration} is not a recognised iteration")
147
147
  end
148
148
 
149
+ # DRG directives 3.7; but anticipated by standoc
150
+ def subfigure_validate(xmldoc)
151
+ xmldoc.xpath("//figure//figure").each do |f|
152
+ { footnote: "fn", note: "note", key: "dl" }.each do |k, v|
153
+ f.xpath(".//#{v}").each do |n|
154
+ @log.add("Style", n, "#{k} is not permitted in a subfigure")
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ def image_name_prefix(xmldoc)
161
+ std = xmldoc&.at("//bibdata/ext/structuredidentifier/project-number") or return
162
+ num = xmldoc&.at("//bibdata/docnumber")&.text or return
163
+ ed = xmldoc&.at("//bibdata/edition")&.text || "1"
164
+ prefix = num
165
+ part = std["part"] and prefix += "-#{std['part']}"
166
+ prefix += "_ed#{ed}"
167
+ amd = std["amendment"] and prefix += "amd#{amd}"
168
+ prefix
169
+ end
170
+
171
+ def image_name_suffix(xmldoc)
172
+ case xmldoc&.at("//bibdata/language")&.text
173
+ when "fr" then "_f"
174
+ when "de" then "_d"
175
+ when "ru" then "_r"
176
+ when "es" then "_s"
177
+ when "ar" then "_a"
178
+ when "en" then "_e"
179
+ else
180
+ "_e"
181
+ end
182
+ end
183
+
184
+ def disjunct_error(i, cond1, cond2, msg1, msg2)
185
+ cond1 && !cond2 and @log.add("Style", i, "image name #{i['src']} #{msg1}")
186
+ !cond1 && cond2 and @log.add("Style", i, "image name #{i['src']} #{msg2}")
187
+ end
188
+
189
+ def image_name_validate1(i, prefix)
190
+ m = %r[(SL)?#{prefix}fig(?<tab>Tab)?(?<annex>[A-Z])?(Text)?(?<num>\d+)
191
+ (?<subfig>[a-z])?(?<key>_key\d+)?(?<lang>_[a-z])?$]x.match(File.basename(i["src"], ".*"))
192
+ if m.nil?
193
+ @log.add("Style", i, "image name #{i['src']} does not match DRG requirements")
194
+ return
195
+ end
196
+ warn i['src']
197
+ disjunct_error(i, i.at("./ancestor::table"), !m[:tab].nil?,
198
+ "is under a table but is not so labelled", "is labelled as under a table but is not")
199
+ disjunct_error(i, i.at("./ancestor::annex"), !m[:annex].nil?,
200
+ "is under an annex but is not so labelled", "is labelled as under an annex but is not")
201
+ disjunct_error(i, i.xpath("./ancestor::figure").size > 1, !m[:subfig].nil?,
202
+ "does not have a subfigure letter but is a subfigure",
203
+ "has a subfigure letter but is not a subfigure")
204
+ lang = image_name_suffix(i.document.root)
205
+ (m[:lang] || "_e") == lang or @log.add("Style", i, "image name #{i['src']} expected to have suffix #{lang}")
206
+ end
207
+
208
+ # DRG directives 3.2
209
+ def image_name_validate(xmldoc)
210
+ prefix = image_name_prefix(xmldoc) or return
211
+ xmldoc.xpath("//image").each do |i|
212
+ next if i["src"].start_with?("data:")
213
+ if /^ISO_\d+_/.match(File.basename(i["src"]))
214
+ elsif /^(SL)?#{prefix}fig/.match(File.basename(i["src"]))
215
+ image_name_validate1(i, prefix)
216
+ else
217
+ @log.add("Style", i, "image name #{i['src']} does not match DRG requirements: expect #{prefix}fig")
218
+ end
219
+ end
220
+ end
221
+
222
+ def figure_validate(xmldoc)
223
+ image_name_validate(xmldoc)
224
+ subfigure_validate(xmldoc)
225
+ end
226
+
149
227
  def bibdata_validate(doc)
150
228
  doctype_validate(doc)
151
229
  script_validate(doc)
@@ -166,6 +244,7 @@ module Asciidoctor
166
244
  locality_erefs_validate(doc.root)
167
245
  bibdata_validate(doc.root)
168
246
  bibitem_validate(doc.root)
247
+ figure_validate(doc.root)
169
248
  end
170
249
 
171
250
  def bibitem_validate(xmldoc)
@@ -4,11 +4,14 @@ module Asciidoctor
4
4
  module ISO
5
5
  class Converter < Standoc::Converter
6
6
  def section_validate(doc)
7
- foreword_validate(doc.root)
8
- normref_validate(doc.root)
9
- symbols_validate(doc.root)
10
- sections_presence_validate(doc.root)
11
- sections_sequence_validate(doc.root)
7
+ doctype = doc&.at("//bibdata/ext/doctype")&.text
8
+ unless %w(amendment technical-corrigendum).include? doctype
9
+ foreword_validate(doc.root)
10
+ normref_validate(doc.root)
11
+ symbols_validate(doc.root)
12
+ sections_presence_validate(doc.root)
13
+ sections_sequence_validate(doc.root)
14
+ end
12
15
  section_style(doc.root)
13
16
  subclause_validate(doc.root)
14
17
  super
@@ -111,13 +114,13 @@ module Asciidoctor
111
114
  end
112
115
  n&.at("./self::clause") ||
113
116
  @log.add("Style", nil, "Document must contain clause after "\
114
- "Terms and Definitions")
117
+ "Terms and Definitions")
115
118
  n&.at("./self::clause[@type = 'scope']") &&
116
119
  @log.add("Style", nil, "Scope must occur before Terms and Definitions")
117
120
  n = names.shift
118
121
  while n&.name == "clause"
119
122
  n&.at("./self::clause[@type = 'scope']")
120
- @log.add("Style", nil, "Scope must occur before Terms and Definitions")
123
+ @log.add("Style", nil, "Scope must occur before Terms and Definitions")
121
124
  n = names.shift
122
125
  end
123
126
  unless %w(annex references).include? n&.name
@@ -127,12 +130,12 @@ module Asciidoctor
127
130
  n = names.shift
128
131
  if n.nil?
129
132
  @log.add("Style", nil, "Document must include (references) "\
130
- "Normative References")
133
+ "Normative References")
131
134
  end
132
135
  end
133
136
  n&.at("./self::references[@normative = 'true']") ||
134
137
  @log.add("Style", nil, "Document must include (references) "\
135
- "Normative References")
138
+ "Normative References")
136
139
  n = names&.shift
137
140
  n&.at("./self::references[@normative = 'false']") ||
138
141
  @log.add("Style", nil, "Final section must be (references) Bibliography")
@@ -152,6 +152,17 @@ module IsoDoc
152
152
  name and name.children.each { |n| parse(n, div) }
153
153
  end
154
154
  end
155
+
156
+ def middle(isoxml, out)
157
+ super
158
+ indexsect isoxml, out
159
+ end
160
+
161
+ def indexsect(isoxml, out)
162
+ isoxml.xpath(ns("//indexsect")).each do |i|
163
+ clause_parse(i, out)
164
+ end
165
+ end
155
166
  end
156
167
  end
157
168
  end
@@ -74,7 +74,7 @@ mso-line-height-rule:exactly'><span lang=EN-GB>{{ docnumber_reference }}{{ draft
74
74
 
75
75
  <p class=MsoHeader style='margin-bottom:18.0pt'><span lang=EN-GB
76
76
  style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-weight:normal'>©
77
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}</span><span lang=EN-GB
77
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}</span><span lang=EN-GB
78
78
  style='font-weight:normal'><o:p></o:p></span></p>
79
79
 
80
80
  </div>
@@ -93,7 +93,7 @@ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
93
93
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
94
94
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
95
95
  style='mso-tab-count:1'>                                                                                                                                                                           </span>©
96
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<o:p></o:p></span></p>
96
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<o:p></o:p></span></p>
97
97
 
98
98
  </div>
99
99
 
@@ -129,7 +129,7 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
129
129
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
130
130
  style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
131
131
  1'>                                                                                                                                                                           </span>©
132
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<o:p></o:p></span></p>
132
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<o:p></o:p></span></p>
133
133
  </div>
134
134
 
135
135
  <div style='mso-element:footer' id=ef2l>
@@ -144,12 +144,12 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
144
144
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
145
145
  style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
146
146
  1'>                                                                                                                                                                           </span>©
147
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<o:p></o:p></span></p>
147
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<o:p></o:p></span></p>
148
148
  </div>
149
149
 
150
150
  <div style='mso-element:footer' id=f2>
151
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'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
152
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
153
153
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
154
154
  style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
155
155
  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
@@ -162,7 +162,7 @@ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
162
162
 
163
163
  <div style='mso-element:footer' id=f2l>
164
164
  <p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
165
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
165
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
166
166
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
167
167
  style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
168
168
  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
@@ -186,7 +186,7 @@ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
186
186
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
187
187
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
188
188
  style='mso-tab-count:1'>                                                                                                                                                                           </span>©
189
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<o:p></o:p></span></p>
189
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<o:p></o:p></span></p>
190
190
  </div>
191
191
 
192
192
  <div style='mso-element:footer' id=ef3l>
@@ -202,12 +202,12 @@ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
202
202
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
203
203
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
204
204
  style='mso-tab-count:1'>                                                                                                                                                                           </span>©
205
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<o:p></o:p></span></p>
205
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<o:p></o:p></span></p>
206
206
  </div>
207
207
 
208
208
  <div style='mso-element:footer' id=f3>
209
209
  <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
210
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
210
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
211
211
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
212
212
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
213
213
  PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
@@ -221,7 +221,7 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span>
221
221
 
222
222
  <div style='mso-element:footer' id=f3l>
223
223
  <p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
224
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
224
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
225
225
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
226
226
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
227
227
  PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
@@ -242,10 +242,10 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span>
242
242
  {% endif %}
243
243
 
244
244
  <p class=MsoFooter style='margin-top:0cm'><span lang=EN-AU style='font-size:
245
- 10.0pt;mso-ansi-language:EN-AU'>{{ price_based_on | replace: "%", "<span style='mso-element:field-begin'></span><span style='mso-spacerun:yes'> </span>NUMPAGES<span style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span><span style='mso-no-proof:yes'>26</span><span style='mso-element:field-end'></span>" }}</span></p>
245
+ 10.0pt;mso-ansi-language:EN-AU'>{{ labels["price_based_on"] | replace: "%", "<span style='mso-element:field-begin'></span><span style='mso-spacerun:yes'> </span>NUMPAGES<span style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span><span style='mso-no-proof:yes'>26</span><span style='mso-element:field-end'></span>" }}</span></p>
246
246
 
247
247
  <p class=MsoFooter><span lang=EN-AU style='font-size:10.0pt;'>©
248
- {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<o:p></o:p></span></p>
248
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ labels["all_rights_reserved"] }}<o:p></o:p></span></p>
249
249
 
250
250
  </div>
251
251