perfbook.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion
@ 2024-01-05  9:44 Akira Yokosawa
  2024-01-05  9:47 ` Akira Yokosawa
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:44 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Leonardo Bras, Akira Yokosawa

Hi Paul,

[Cc 0/8 and 8/8 to Leo, Patch 8/8 touches gitlab-ci.yml]

Frequent crashes of Inkscape I encountered in 2023, which was mitigated
in commit f307e19f2be0 ("Prevent inkscape from interacting with desktop
manager"), made me look into alternative SVG --> PDF converters.

It turns out that recent versions of rsvg-convert work reasonably well
for perfbook.  By "recent versions", I mean 2.52.5 and 2.57.x.
rsvg-convert is a light-weight CLI command and is much faster than inkscape.

Sequential SVG --> PDF conversion time I get from
"make cleanfigs-svg; env time make figs":

                elapsed
Inkscape:        21.45s
rsvg-convert:     6.05s

So patches 1/8--4/8 add rules in Makefile for using rsvg-convert if it
is recent enough.

One caveat: There is a SVG cartoon drawn by an ancient version of Inkscape,
for which very recent versions of rsvg-convert produce distorted background
of outlined text.

Patch 5/8 retouches the cartoon and put a SVG compatible with librsvg as
cartoons/r-2023-Memory-barriers.svg.

Patches 6/8 and 7/8 adjust FAQ-BUILD and Dockerfiles accordingly.

Patch 8/8 updates gitlab-ci.yml.  It needs an explicit ACK or Tested-by:
from Leo before applying.

Finally, this series wouldn't affect those of you who don't have
rsvg-convert.


        Thanks, Akira
--
Akira Yokosawa (8):
  Makefile: Add rules to use rsvg-convert for SVG --> PDF conversion
  Makefile: Don't use rsvg-convert < 2.57
  Makefile: Allow rsvg-convert 2.52
  Makefile: Use rsvg-convert anyway if no inkscape is found
  cartoons: Retouch r-2014-Memory-barrier.svg
  FAQ-BUILD: List package for rsvg-convert in package lists
  docker: Add packages for rsvg-convert
  gitlab-ci.yml: Install librsvg instead of inkscape

 FAQ-BUILD.txt                      |   23 +-
 Makefile                           |   48 +-
 cartoons/r-2023-Memory-barrier.svg | 1130 ++++++++++++++++++++++++++++
 cpu/overview.tex                   |    2 +-
 docker/Dockerfile                  |    4 +-
 docker/Dockerfile.fedora           |    7 +-
 utilities/gitlab-ci.yml            |    2 +-
 7 files changed, 1198 insertions(+), 18 deletions(-)
 create mode 100644 cartoons/r-2023-Memory-barrier.svg


base-commit: 1ea46c6d43475fbdf97404dec28a58036d505bc3
-- 
2.34.1



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
@ 2024-01-05  9:47 ` Akira Yokosawa
  2024-01-05  9:50 ` [PATCH -perfbook 2/8] Makefile: Don't use rsvg-convert < 2.57 Akira Yokosawa
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:47 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

Subject: [PATCH -perfbook 1/8] Makefile: Add rules to use rsvg-convert for SVG --> PDF conversion

Recently, Inkscape has had a number of stability issues in both of
its GUI- and CLI- modes.  We have experienced crashes of CLI-mode
Inkscape caused by a change in glib, which can been resolved
by an update in the GTK3 library now released in GTK 3.24.39.
Commit f307e19f2be0 ("Prevent inkscape from interacting with desktop
manager") was an ugly hack for mitigating such crashes.

There is an alternative converter called rsvg-convert.
It is a light-weight CLI-only converter.

Up until Ubuntu 20.04 LTS, rsvg-convert's coverage of SVG features
was not good enough for some of the figures in perfbook drawn by
using Inkscape.

rsvg-convert has improved since, and version 2.52.5, which is the
version on Ubuntu 22.04 LTS, and later versions do fairly good jobs
in this respect.

So let's use rsvg-convert when it is available.

For Ubuntu and Debian, rsvg-convert belongs to the librsvg2-bin
package.  For Fedora, it is provided in the librsvg2-tools package.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 Makefile | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 424a166c..f869862c 100644
--- a/Makefile
+++ b/Makefile
@@ -103,6 +103,8 @@ PDFTARGETS_OF_EPSOTHER := $(filter-out $(PDFTARGETS_OF_EPSORIG) $(PDFTARGETS_OF_
 BIBSOURCES := bib/*.bib alphapf.bst
 
 # required commands
+SED ?= sed
+
 LATEX_CMD := $(shell $(WHICH) $(LATEX) 2>/dev/null)
 DOT := $(shell $(WHICH) dot 2>/dev/null)
 FIG2EPS := $(shell $(WHICH) fig2eps 2>/dev/null)
@@ -111,6 +113,13 @@ INKSCAPE := $(shell $(WHICH) inkscape 2>/dev/null)
 ifdef INKSCAPE
   INKSCAPE_ONE := $(shell inkscape --version 2>/dev/null | grep -c "Inkscape 1")
 endif
+# rsvg-convert is preferred to inkscape in SVG --> PDF conversion
+RSVG_CONVERT := $(shell $(WHICH) rsvg-convert 2>/dev/null)
+ifdef RSVG_CONVERT
+  SVG_PDF_CONVERTER = (rsvg-convert)
+else
+  SVG_PDF_CONVERTER = (inkscape)
+endif
 LATEXPAND := $(shell $(WHICH) latexpand 2>/dev/null)
 QPDF := $(shell $(WHICH) qpdf 2>/dev/null)
 
@@ -455,12 +464,14 @@ ISOLATE_INKSCAPE ?= XDG_RUNTIME_DIR=na DBUS_SESSION_BUS_ADDRESS=na
 
 $(PDFTARGETS_OF_SVG): $(FIXSVGFONTS)
 $(PDFTARGETS_OF_SVG): %.pdf: %.svg
-	@echo "$< --> $(suffix $@)"
+	@echo "$< --> $(suffix $@) $(SVG_PDF_CONVERTER)"
 ifeq ($(STEELFONT),0)
 	$(error "Steel City Comic" font not found. See #1 in FAQ.txt)
 endif
-ifndef INKSCAPE
-	$(error $< --> $@ inkscape not found. Please install it)
+ifndef RSVG_CONVERT
+  ifndef INKSCAPE
+	$(error $< --> $@ inkscape nor rsvg-convert not found. Please install either one)
+  endif
 endif
 ifeq ($(STEELFONTID),0)
 	@sh $(FIXSVGFONTS) < $< | sed -e 's/Steel City Comic/Test/g' > $<i
@@ -483,10 +494,14 @@ ifeq ($(RECOMMEND_LIBERATIONMONO),1)
 	$(info Nice-to-have font family 'Liberation Mono' not found. See #9 in FAQ-BUILD.txt)
 endif
 
-ifeq ($(INKSCAPE_ONE),0)
-	@inkscape --export-pdf=$@ $<i > /dev/null 2>&1
+ifdef RSVG_CONVERT
+	@cat $<i | rsvg-convert --format=pdf > $@
 else
+  ifeq ($(INKSCAPE_ONE),0)
+	@inkscape --export-pdf=$@ $<i > /dev/null 2>&1
+  else
 	@$(ISOLATE_INKSCAPE) inkscape -o $@ $<i > /dev/null 2>&1
+  endif
 endif
 	@rm -f $<i
 ifeq ($(chkpagegroup),on)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 2/8] Makefile: Don't use rsvg-convert < 2.57
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
  2024-01-05  9:47 ` Akira Yokosawa
@ 2024-01-05  9:50 ` Akira Yokosawa
  2024-01-05  9:52 ` [PATCH -perfbook 3/8] Makefile: Allow rsvg-convert 2.52 Akira Yokosawa
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:50 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

rsvg-convert versions prior to 2.57 doesn't recognize options for
specifying output PDF version.  Default PDF output version depends
on the version of rsvg-convert.  Version 2.57's default is PDF 1.7.

For the moment, don't use younger versions of rsvg-convert.  Use
inkscape as a fallback.

For rsvg-convert >= 2.57, specify --format=pdf1.5, which matches
inkscape's default behavior.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 Makefile | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index f869862c..9f19ce52 100644
--- a/Makefile
+++ b/Makefile
@@ -116,7 +116,15 @@ endif
 # rsvg-convert is preferred to inkscape in SVG --> PDF conversion
 RSVG_CONVERT := $(shell $(WHICH) rsvg-convert 2>/dev/null)
 ifdef RSVG_CONVERT
-  SVG_PDF_CONVERTER = (rsvg-convert)
+  RSVG_CONVERT_VER := $(shell rsvg-convert --version | $(SED) -e 's/rsvg-convert version //')
+  RSVG_CONVERT_VER_MINOR := $(shell echo $(RSVG_CONVERT_VER) | $(SED) -E -e 's/^([0-9]+\.[0-9]+).*/\1/')
+  RSVG_CONVERT_GOOD_VER ?= 2.57
+  RSVG_CONVERT_GOOD := $(shell echo $(RSVG_CONVERT_VER_MINOR) $(RSVG_CONVERT_GOOD_VER) | awk '{if ($$1 >= $$2) print 1;}')
+  ifeq ($(RSVG_CONVERT_GOOD),1)
+    SVG_PDF_CONVERTER = (rsvg-convert v$(RSVG_CONVERT_VER))
+  else
+    SVG_PDF_CONVERTER = (inkscape)
+  endif
 else
   SVG_PDF_CONVERTER = (inkscape)
 endif
@@ -468,7 +476,7 @@ $(PDFTARGETS_OF_SVG): %.pdf: %.svg
 ifeq ($(STEELFONT),0)
 	$(error "Steel City Comic" font not found. See #1 in FAQ.txt)
 endif
-ifndef RSVG_CONVERT
+ifneq ($(RSVG_CONVERT_GOOD),1)
   ifndef INKSCAPE
 	$(error $< --> $@ inkscape nor rsvg-convert not found. Please install either one)
   endif
@@ -494,8 +502,8 @@ ifeq ($(RECOMMEND_LIBERATIONMONO),1)
 	$(info Nice-to-have font family 'Liberation Mono' not found. See #9 in FAQ-BUILD.txt)
 endif
 
-ifdef RSVG_CONVERT
-	@cat $<i | rsvg-convert --format=pdf > $@
+ifeq ($(RSVG_CONVERT_GOOD),1)
+	@cat $<i | rsvg-convert --format=pdf1.5 > $@
 else
   ifeq ($(INKSCAPE_ONE),0)
 	@inkscape --export-pdf=$@ $<i > /dev/null 2>&1
-- 
2.34.1




^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 3/8] Makefile: Allow rsvg-convert 2.52
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
  2024-01-05  9:47 ` Akira Yokosawa
  2024-01-05  9:50 ` [PATCH -perfbook 2/8] Makefile: Don't use rsvg-convert < 2.57 Akira Yokosawa
@ 2024-01-05  9:52 ` Akira Yokosawa
  2024-01-05  9:53 ` [PATCH -perfbook 4/8] Makefile: Use rsvg-convert anyway if no inkscape is found Akira Yokosawa
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:52 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

rsvg-convert 2.52.5 (on Ubuntu 22.04 LTS) output PDF 1.5 by default
and is good enough for perfbook.
Add rules for using it in SVG --> PDF conversion.

rsvg-convert versions >= 2.54 and < 2.57 default to PDF 1.7 and don't
have option of --format pdf1.5.  Avoid using those interim versions
by default.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 Makefile | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 9f19ce52..3844c37b 100644
--- a/Makefile
+++ b/Makefile
@@ -119,12 +119,24 @@ ifdef RSVG_CONVERT
   RSVG_CONVERT_VER := $(shell rsvg-convert --version | $(SED) -e 's/rsvg-convert version //')
   RSVG_CONVERT_VER_MINOR := $(shell echo $(RSVG_CONVERT_VER) | $(SED) -E -e 's/^([0-9]+\.[0-9]+).*/\1/')
   RSVG_CONVERT_GOOD_VER ?= 2.57
+  RSVG_CONVERT_PDFFMT_VER := 2.57
+  RSVG_CONVERT_ACCEPTABLE_VER := 2.52
   RSVG_CONVERT_GOOD := $(shell echo $(RSVG_CONVERT_VER_MINOR) $(RSVG_CONVERT_GOOD_VER) | awk '{if ($$1 >= $$2) print 1;}')
+  RSVG_CONVERT_ACCEPTABLE := $(shell echo $(RSVG_CONVERT_VER_MINOR) $(RSVG_CONVERT_ACCEPTABLE_VER) | awk '{if ($$1 == $$2) print 1;}')
+  ifeq ($(RSVG_CONVERT_ACCEPTABLE),1)
+    RSVG_CONVERT_GOOD := 1
+  endif
+  RSVG_CONVERT_PDFFMT := $(shell echo $(RSVG_CONVERT_VER_MINOR) $(RSVG_CONVERT_PDFFMT_VER) | awk '{if ($$1 >= $$2) print 1;}')
   ifeq ($(RSVG_CONVERT_GOOD),1)
     SVG_PDF_CONVERTER = (rsvg-convert v$(RSVG_CONVERT_VER))
   else
     SVG_PDF_CONVERTER = (inkscape)
   endif
+  ifeq ($(RSVG_CONVERT_PDFFMT),1)
+    RSVG_FMT_OPT := --format=pdf1.5
+  else
+    RSVG_FMT_OPT := --format=pdf
+  endif
 else
   SVG_PDF_CONVERTER = (inkscape)
 endif
@@ -503,7 +515,7 @@ ifeq ($(RECOMMEND_LIBERATIONMONO),1)
 endif
 
 ifeq ($(RSVG_CONVERT_GOOD),1)
-	@cat $<i | rsvg-convert --format=pdf1.5 > $@
+	@cat $<i | rsvg-convert $(RSVG_FMT_OPT) > $@
 else
   ifeq ($(INKSCAPE_ONE),0)
 	@inkscape --export-pdf=$@ $<i > /dev/null 2>&1
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 4/8] Makefile: Use rsvg-convert anyway if no inkscape is found
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
                   ` (2 preceding siblings ...)
  2024-01-05  9:52 ` [PATCH -perfbook 3/8] Makefile: Allow rsvg-convert 2.52 Akira Yokosawa
@ 2024-01-05  9:53 ` Akira Yokosawa
  2024-01-05  9:54 ` [PATCH -perfbook 5/8] cartoons: Retouch r-2014-Memory-barrier.svg Akira Yokosawa
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:53 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

Even if rsvg-convert is too young and its SVG --> PDF conversion
sometimes results in poor-looking figures, using it is much better
than giving up the conversion at all.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Makefile b/Makefile
index 3844c37b..46c2bfb4 100644
--- a/Makefile
+++ b/Makefile
@@ -126,6 +126,9 @@ ifdef RSVG_CONVERT
   ifeq ($(RSVG_CONVERT_ACCEPTABLE),1)
     RSVG_CONVERT_GOOD := 1
   endif
+  ifndef INKSCAPE
+    RSVG_CONVERT_GOOD := 1
+  endif
   RSVG_CONVERT_PDFFMT := $(shell echo $(RSVG_CONVERT_VER_MINOR) $(RSVG_CONVERT_PDFFMT_VER) | awk '{if ($$1 >= $$2) print 1;}')
   ifeq ($(RSVG_CONVERT_GOOD),1)
     SVG_PDF_CONVERTER = (rsvg-convert v$(RSVG_CONVERT_VER))
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 5/8] cartoons: Retouch r-2014-Memory-barrier.svg
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
                   ` (3 preceding siblings ...)
  2024-01-05  9:53 ` [PATCH -perfbook 4/8] Makefile: Use rsvg-convert anyway if no inkscape is found Akira Yokosawa
@ 2024-01-05  9:54 ` Akira Yokosawa
  2024-01-05  9:55 ` [PATCH -perfbook 6/8] FAQ-BUILD: List package for rsvg-convert in package lists Akira Yokosawa
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:54 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

r-2014-Memory-barrier.svg was drawn by Inkscape 0.48.3.1.
Recent versions of rsvg-convert have trouble with outlined text
in the cartoon.
Retouch the figure by importing a properly rendered PDF into modern
Inkscape and saving it as r-2023-Memory-barrier.svg.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 cartoons/r-2023-Memory-barrier.svg | 1130 ++++++++++++++++++++++++++++
 cpu/overview.tex                   |    2 +-
 2 files changed, 1131 insertions(+), 1 deletion(-)
 create mode 100644 cartoons/r-2023-Memory-barrier.svg

diff --git a/cartoons/r-2023-Memory-barrier.svg b/cartoons/r-2023-Memory-barrier.svg
new file mode 100644
index 00000000..bf17f3e0
--- /dev/null
+++ b/cartoons/r-2023-Memory-barrier.svg
@@ -0,0 +1,1130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="107.60958mm"
+   height="106.15136mm"
+   viewBox="0 0 107.60958 106.15136"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   sodipodi:docname="r-2023-Memory-barrier.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     inkscape:zoom="1.4609989"
+     inkscape:cx="326.83119"
+     inkscape:cy="269.33628"
+     inkscape:window-width="1850"
+     inkscape:window-height="1009"
+     inkscape:window-x="70"
+     inkscape:window-y="34"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2" />
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8.3137535,-6.8747199)">
+    <g
+       id="g848"
+       transform="matrix(0.35277777,0,0,0.35277777,6.9953373,5.5544504)">
+      <g
+         id="g850">
+        <path
+           d="m 147.367,220.855 -71.926,21.383 70.469,-14.582 -79.215,52.489 98.168,-28.188 8.746,32.559 22.844,-29.157 58.317,20.895 -28.188,-25.27 57.832,2.43 -52,-20.41 76.297,-12.637 -84.559,-5.344 24.301,-31.105 -32.562,18.953"
+           style="fill:#ffffc5;fill-opacity:1;fill-rule:nonzero;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path852" />
+      </g>
+      <g
+         id="g854"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -193.215,338.583 v 16.554 l 105.649,30.425 42.351,-20.606 v -17.371 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path856" />
+      </g>
+      <g
+         id="g858"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -196.445,338.481 106.597,33.264 45.961,-25.072 -110.929,-10.392 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path860" />
+      </g>
+      <g
+         id="g862"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -90.418,365.072 38.113,-17.133 -0.679,-214.99 -54.391,27.79 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path864" />
+      </g>
+      <g
+         id="g866"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -189.484,135.564 v 201.698 l 101.66,27.81 V 146.439 Z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path868" />
+      </g>
+      <g
+         id="g870"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -192.953,118.853 v 16.561 l 105.652,20.803 39.352,-15.376 V 123.47 Z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path872" />
+      </g>
+      <g
+         id="g874"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -193.816,120.127 104.234,22.274 41.23,-18.202 -106.203,-17.262 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path876" />
+      </g>
+      <g
+         id="g878"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -177.234,174.079 42.519,8.457 V 168.44 l -44.152,-7.327 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path880" />
+      </g>
+      <g
+         id="g882"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -160.062,191.116 42.519,10.541 v -14.096 l -44.152,-9.492 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path884" />
+      </g>
+      <g
+         id="g886"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -181.32,200.697 42.519,10.541 v -14.096 l -44.156,-9.485 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path888" />
+      </g>
+      <g
+         id="g890"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -137.168,210.85 42.523,10.534 v -14.095 l -44.156,-9.486 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path892" />
+      </g>
+      <g
+         id="g894"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -162.516,219.301 42.52,10.541 v -14.096 l -44.152,-9.486 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path896" />
+      </g>
+      <g
+         id="g898"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -137.168,167.875 25.352,5.08"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path900" />
+      </g>
+      <g
+         id="g902"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -155.156,163.932 -1.633,-12.965"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path904" />
+      </g>
+      <g
+         id="g906"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -143.707,223.686 -1.637,14.096"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path908" />
+      </g>
+      <g
+         id="g910"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -178.051,230.448 62.961,14.096"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path912" />
+      </g>
+      <g
+         id="g914"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -59.648,324.583 -18.532,8.457 v -14.089 l 19.242,-7.334 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#a7a7a7;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path916" />
+      </g>
+      <g
+         id="g918"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -67.133,341.62 -18.527,10.541 v -14.095 l 19.242,-9.486 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#a7a7a7;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path920" />
+      </g>
+      <g
+         id="g922"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -77.109,318.386 -11.047,5.073"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#a7a7a7;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path924" />
+      </g>
+      <g
+         id="g926"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -69.27,314.437 0.711,-12.966"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#a7a7a7;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path928" />
+      </g>
+      <g
+         id="g930"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -60.363,296.398 -27.434,14.096"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#a7a7a7;stroke-width:2.97071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path932" />
+      </g>
+      <g
+         id="g934"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -194.273,337.317 v 16.553 l 105.652,30.425 42.348,-20.605 v -17.371 z"
+           style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.990238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path936" />
+      </g>
+      <g
+         id="g938"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -197.504,337.214 106.598,33.265 45.961,-25.073 -110.93,-10.391 z"
+           style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.990238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path940" />
+      </g>
+      <g
+         id="g942"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -91.473,363.806 38.11,-17.133 -0.676,-214.99 -54.395,27.789 z"
+           style="fill:#a02c2c;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.74197;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path944" />
+      </g>
+      <g
+         id="g946"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -190.543,134.297 v 201.698 l 101.66,27.811 V 145.172 Z"
+           style="fill:#de8787;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path948" />
+      </g>
+      <g
+         id="g950"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -194.012,117.587 v 16.561 l 105.653,20.803 39.351,-15.376 v -17.371 z"
+           style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.990238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path952" />
+      </g>
+      <g
+         id="g954"
+         transform="scale(-1,0.573645)">
+        <path
+           d="M -194.875,118.86 -90.641,141.134 -49.41,122.932 -155.613,105.67 Z"
+           style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.990238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path956" />
+      </g>
+      <g
+         id="g958"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -178.289,172.812 42.519,8.457 v -14.095 l -44.156,-7.327 z"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path960" />
+      </g>
+      <g
+         id="g962"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -161.121,189.849 42.523,10.542 v -14.096 l -44.156,-9.493 z"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path964" />
+      </g>
+      <g
+         id="g966"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -182.379,199.437 42.52,10.535 v -14.096 l -44.157,-9.486 z"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path968" />
+      </g>
+      <g
+         id="g970"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -138.223,209.583 42.52,10.535 v -14.089 l -44.156,-9.493 z"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path972" />
+      </g>
+      <g
+         id="g974"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -163.574,218.034 42.523,10.541 V 214.48 l -44.156,-9.486 z"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path976" />
+      </g>
+      <g
+         id="g978"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -138.223,166.615 25.348,5.073"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path980" />
+      </g>
+      <g
+         id="g982"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -156.215,162.666 -1.633,-12.965"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path984" />
+      </g>
+      <g
+         id="g986"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -144.766,222.419 -1.636,14.096"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path988" />
+      </g>
+      <g
+         id="g990"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -179.109,229.181 62.964,14.096"
+           style="fill:none;stroke:#ffffff;stroke-width:1.19263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path992" />
+      </g>
+      <g
+         id="g994"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -60.707,323.316 -18.527,8.458 v -14.089 l 19.238,-7.334 z"
+           style="fill:none;stroke:#a7a7a7;stroke-width:0.787275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path996" />
+      </g>
+      <g
+         id="g998"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -68.191,340.36 -18.528,10.535 v -14.096 l 19.242,-9.486 z"
+           style="fill:none;stroke:#a7a7a7;stroke-width:0.787275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1000" />
+      </g>
+      <g
+         id="g1002"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -78.168,317.119 -11.043,5.074"
+           style="fill:none;stroke:#a7a7a7;stroke-width:0.787275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1004" />
+      </g>
+      <g
+         id="g1006"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -70.328,313.17 0.715,-12.965"
+           style="fill:none;stroke:#a7a7a7;stroke-width:0.787275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1008" />
+      </g>
+      <g
+         id="g1010"
+         transform="scale(-1,0.573645)">
+        <path
+           d="m -61.418,295.132 -27.437,14.095"
+           style="fill:none;stroke:#a7a7a7;stroke-width:0.787275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1012" />
+      </g>
+      <text
+         transform="matrix(0.99843443,-0.12261972,-0.05593468,0.98402427,106.35877,103.34223)"
+         style="font-variant:normal;font-weight:bold;font-size:20.7019px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:DejaVuSansMono-Bold;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="text1016"><tspan
+           x="0 12.007111 24.034922 36.042034 48.069843 60.076954"
+           y="0"
+           sodipodi:role="line"
+           id="tspan1014">Memory</tspan></text>
+      <g
+         id="g1018"
+         transform="matrix(1,-0.122812,-0.0560224,0.985567,0,0)">
+        <path
+           d="m 113.897,103.862 3.546,-0.002 1.793,6.612 1.786,-6.61 3.578,0.002 0.001,15.077 -2.563,-0.002 -0.004,-12.066 -1.6,6.587 -2.359,-0.009 -1.635,-6.577 0.005,12.065 h -2.547 z m 22.246,14.512 c -0.694,0.294 -1.393,0.508 -2.104,0.641 -0.712,0.134 -1.465,0.206 -2.254,0.211 -1.899,-0.003 -3.341,-0.504 -4.335,-1.507 -0.994,-1.012 -1.493,-2.469 -1.495,-4.372 -0.001,-1.847 0.479,-3.309 1.442,-4.386 0.96,-1.074 2.273,-1.612 3.941,-1.618 1.676,0.011 2.974,0.509 3.896,1.5 0.919,0.995 1.377,2.399 1.377,4.215 l 0.004,1.189 -7.656,-0.003 c -0.005,0.888 0.251,1.554 0.768,1.999 0.525,0.437 1.302,0.653 2.334,0.655 0.675,0.001 1.342,-0.094 1.999,-0.29 0.664,-0.202 1.362,-0.512 2.089,-0.929 z m -2.496,-6.352 c -0.013,-0.782 -0.218,-1.374 -0.615,-1.773 -0.39,-0.397 -0.955,-0.594 -1.705,-0.593 -0.688,0.002 -1.235,0.207 -1.637,0.621 -0.395,0.418 -0.627,1.008 -0.698,1.768 z m 10.333,-3.25 c 0.224,-0.48 0.505,-0.833 0.847,-1.068 0.35,-0.23 0.777,-0.347 1.277,-0.348 0.976,-0.005 1.648,0.332 2.01,1.011 0.37,0.673 0.557,2.068 0.563,4.193 l -0.002,6.373 -2.407,10e-4 v -7.261 c 0.003,-0.844 -0.059,-1.403 -0.188,-1.672 -0.132,-0.278 -0.367,-0.419 -0.711,-0.422 -0.335,0.002 -0.57,0.147 -0.71,0.435 -0.14,0.28 -0.211,0.83 -0.204,1.655 l 10e-4,7.261 -2.391,0.003 v -7.261 c -0.007,-0.825 -0.073,-1.376 -0.203,-1.658 -0.132,-0.278 -0.363,-0.426 -0.696,-0.435 -0.344,0 -0.582,0.141 -0.711,0.418 -0.121,0.271 -0.184,0.83 -0.187,1.673 v 7.261 l -2.421,0.016 0.008,-11.303 2.156,-0.001 -0.013,1.172 c 0.163,-0.444 0.429,-0.795 0.801,-1.058 0.379,-0.27 0.797,-0.4 1.258,-0.398 0.445,-0.008 0.859,0.131 1.242,0.409 0.378,0.269 0.604,0.606 0.681,1.004 z m 11.256,1.002 c -0.699,0 -1.256,0.311 -1.667,0.934 -0.414,0.614 -0.62,1.476 -0.62,2.586 -0.001,1.11 0.204,1.976 0.614,2.597 0.418,0.623 0.978,0.939 1.677,0.939 0.708,0.005 1.264,-0.307 1.667,-0.934 0.402,-0.624 0.604,-1.494 0.604,-2.604 0,-1.11 -0.204,-1.968 -0.613,-2.581 -0.402,-0.621 -0.955,-0.932 -1.662,-0.937 z m -5.225,3.519 c -0.001,-1.828 0.473,-3.275 1.413,-4.343 0.948,-1.063 2.223,-1.597 3.817,-1.601 1.601,0.002 2.873,0.533 3.808,1.6 0.943,1.069 1.414,2.519 1.415,4.346 -0.003,1.819 -0.473,3.263 -1.414,4.327 -0.94,1.067 -2.215,1.602 -3.816,1.601 -1.594,0.003 -2.866,-0.532 -3.809,-1.6 -0.946,-1.07 -1.418,-2.512 -1.414,-4.33 z m 22.604,-2.53 c -0.309,-0.3 -0.681,-0.521 -1.115,-0.662 -0.438,-0.15 -0.911,-0.225 -1.419,-0.225 -0.637,-0.004 -1.189,0.102 -1.654,0.317 -0.468,0.219 -0.829,0.539 -1.087,0.959 -0.166,0.245 -0.277,0.552 -0.339,0.925 -0.065,0.364 -0.097,0.915 -0.094,1.652 l -0.005,5.216 -2.953,-0.004 0.007,-11.303 2.953,0.004 -0.011,1.742 c 0.295,-0.649 0.74,-1.148 1.337,-1.498 0.605,-0.356 1.306,-0.534 2.111,-0.529 0.395,-0.003 0.784,0.05 1.166,0.161 0.388,0.104 0.756,0.245 1.101,0.422 z m 7.59,9.407 c -0.41,1.059 -0.894,1.827 -1.449,2.309 -0.547,0.491 -1.22,0.74 -2.021,0.747 l -2.437,-0.003 -0.001,-2.251 1.202,-0.009 c 0.602,0 1.045,-0.103 1.327,-0.31 0.278,-0.199 0.563,-0.675 0.857,-1.431 l 0.233,-0.589 -4.304,-11 3.11,0.007 2.566,7.327 2.496,-7.33 3.094,0.005 z"
+           style="fill:none;stroke:#000000;stroke-width:1.89531;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1020" />
+      </g>
+      <text
+         transform="matrix(0.99843443,-0.12261972,-0.05593468,0.98402427,98.913462,129.54535)"
+         style="font-variant:normal;font-weight:bold;font-size:20.7019px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:DejaVuSansMono-Bold;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="text1024"><tspan
+           x="0 12.007111 24.034922 36.042034 48.069843 60.076954 72.084068"
+           y="0"
+           sodipodi:role="line"
+           id="tspan1022">Barrier</tspan></text>
+      <g
+         id="g1026"
+         transform="matrix(1,-0.122812,-0.0560224,0.985567,0,0)">
+        <path
+           d="m 111.173,137.941 v 4.455 l 1.969,0.008 c 0.945,0.002 1.608,-0.157 1.989,-0.482 0.388,-0.32 0.579,-0.883 0.577,-1.688 0.005,-0.812 -0.196,-1.395 -0.599,-1.755 -0.394,-0.354 -1.053,-0.531 -1.967,-0.53 z m -0.002,-5.898 -0.006,3.519 1.969,0.008 c 0.758,-0.001 1.297,-0.132 1.618,-0.401 0.317,-0.266 0.476,-0.71 0.472,-1.337 0.005,-0.609 -0.153,-1.057 -0.481,-1.344 -0.322,-0.293 -0.853,-0.439 -1.603,-0.437 z m -2.898,-2.358 4.86,0.003 c 1.687,0 2.947,0.319 3.788,0.963 0.848,0.637 1.268,1.585 1.269,2.854 -0.001,0.963 -0.247,1.721 -0.748,2.269 -0.5,0.552 -1.232,0.869 -2.197,0.947 1.151,0.111 2.017,0.5 2.597,1.163 0.576,0.655 0.869,1.575 0.873,2.757 -0.005,1.45 -0.438,2.506 -1.307,3.166 -0.87,0.653 -2.297,0.978 -4.274,0.974 l -4.859,-0.003 z m 17.825,9.775 c -1.117,0 -1.894,0.145 -2.335,0.438 -0.433,0.287 -0.652,0.771 -0.653,1.457 0.005,0.508 0.161,0.916 0.459,1.214 0.306,0.304 0.717,0.454 1.229,0.455 0.781,-0.006 1.389,-0.303 1.825,-0.883 0.436,-0.587 0.648,-1.413 0.643,-2.472 l 0.004,-0.206 z m 4.108,-1.137 0.002,6.453 -2.937,-0.001 -0.008,-1.254 c -0.359,0.494 -0.818,0.877 -1.373,1.145 -0.559,0.271 -1.173,0.405 -1.837,0.405 -1.281,-0.001 -2.285,-0.34 -3.011,-1.025 -0.717,-0.68 -1.071,-1.624 -1.064,-2.828 -0.004,-1.32 0.422,-2.298 1.273,-2.933 0.859,-0.63 2.185,-0.948 3.978,-0.947 l 2.047,0.002 -0.012,-0.493 c 0.004,-0.483 -0.169,-0.85 -0.514,-1.095 -0.339,-0.252 -0.846,-0.379 -1.522,-0.38 -0.71,0.007 -1.396,0.104 -2.062,0.282 -0.669,0.183 -1.36,0.473 -2.076,0.867 l -0.002,-2.536 c 0.661,-0.267 1.326,-0.461 1.998,-0.592 0.68,-0.137 1.395,-0.206 2.145,-0.208 1.832,0.006 3.119,0.389 3.861,1.147 0.737,0.75 1.109,2.08 1.114,3.991 z m 12.419,-1.722 c -0.309,-0.3 -0.681,-0.521 -1.115,-0.662 -0.438,-0.15 -0.911,-0.225 -1.419,-0.225 -0.637,-0.004 -1.189,0.102 -1.654,0.317 -0.468,0.22 -0.829,0.539 -1.087,0.959 -0.166,0.245 -0.277,0.552 -0.339,0.925 -0.065,0.364 -0.097,0.915 -0.094,1.653 l -0.005,5.215 -2.953,-0.003 0.007,-11.303 2.953,0.003 -0.011,1.743 c 0.295,-0.649 0.74,-1.149 1.337,-1.498 0.605,-0.357 1.306,-0.535 2.111,-0.53 0.395,-0.002 0.784,0.05 1.166,0.161 0.388,0.104 0.756,0.245 1.102,0.423 z m 11.996,0.001 c -0.309,-0.301 -0.681,-0.521 -1.115,-0.663 -0.438,-0.149 -0.911,-0.224 -1.419,-0.224 -0.636,-0.004 -1.189,0.101 -1.654,0.317 -0.468,0.219 -0.829,0.539 -1.087,0.959 -0.166,0.244 -0.277,0.552 -0.338,0.924 -0.066,0.365 -0.098,0.916 -0.095,1.653 l -0.005,5.216 -2.953,-0.004 0.007,-11.303 2.953,0.004 -0.011,1.742 c 0.295,-0.649 0.74,-1.148 1.338,-1.498 0.605,-0.356 1.306,-0.535 2.111,-0.529 0.394,-0.003 0.784,0.05 1.165,0.161 0.388,0.104 0.756,0.244 1.102,0.422 z m 2.634,-3.132 5.843,-0.002 -0.009,9.036 3.673,0.014 0.002,2.267 -10.313,-0.001 -0.002,-2.267 3.703,0.002 -0.004,-6.771 -2.907,-0.013 z m 2.895,-5.49 2.937,-0.014 0.006,3.457 -2.937,0.014 z m 17.988,16.237 c -0.695,0.294 -1.393,0.508 -2.105,0.641 -0.711,0.133 -1.465,0.206 -2.254,0.211 -1.898,-0.003 -3.34,-0.504 -4.334,-1.507 -0.994,-1.012 -1.494,-2.47 -1.495,-4.372 -0.002,-1.847 0.479,-3.309 1.442,-4.386 0.959,-1.074 2.273,-1.612 3.94,-1.618 1.677,0.011 2.974,0.509 3.897,1.5 0.919,0.995 1.377,2.399 1.377,4.215 l 0.004,1.189 -7.657,-0.003 c -0.004,0.887 0.252,1.554 0.769,1.998 0.524,0.438 1.302,0.654 2.333,0.656 0.676,10e-4 1.343,-0.094 2,-0.29 0.664,-0.203 1.362,-0.512 2.088,-0.929 z m -2.496,-6.352 c -0.013,-0.782 -0.218,-1.374 -0.615,-1.773 -0.39,-0.397 -0.956,-0.594 -1.706,-0.593 -0.687,0.002 -1.234,0.207 -1.637,0.621 -0.394,0.418 -0.627,1.008 -0.697,1.768 z m 14.972,-1.265 c -0.31,-0.3 -0.682,-0.521 -1.116,-0.662 -0.438,-0.15 -0.911,-0.225 -1.418,-0.225 -0.637,-0.004 -1.19,0.102 -1.655,0.317 -0.468,0.22 -0.829,0.539 -1.086,0.959 -0.166,0.245 -0.278,0.552 -0.339,0.925 -0.066,0.364 -0.097,0.915 -0.095,1.653 l -0.005,5.215 -2.953,-0.003 0.007,-11.303 2.954,0.003 -0.012,1.743 c 0.295,-0.649 0.74,-1.149 1.338,-1.498 0.605,-0.357 1.306,-0.535 2.111,-0.53 0.394,-0.002 0.784,0.05 1.165,0.161 0.389,0.104 0.756,0.245 1.102,0.423 z"
+           style="fill:none;stroke:#000000;stroke-width:1.89531;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1028" />
+      </g>
+      <g
+         id="g1030">
+        <path
+           d="m 153.957,229.41 -12.887,13.613 26.293,-6.05 10.313,24.199 7.734,-21.68 30.938,16.133 -6.188,-13.105 28.875,5.542 -26.812,-16.636 38.152,-7.055 -38.668,-2.019 5.672,-14.114 -15.984,3.024"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1032" />
+      </g>
+      <g
+         id="g1034"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -191.873,201.832 24.349,37.349 -8.716,2.584 -22.574,-37.513 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1036" />
+      </g>
+      <g
+         id="g1038"
+         transform="matrix(0.0127232,1,1,-0.0127232,0,0)">
+        <path
+           d="m 203.257,203.219 c 0.001,4.316 -3.498,7.814 -7.814,7.814 -4.317,0 -7.818,-3.498 -7.818,-7.815 -0.001,-4.32 3.502,-7.818 7.818,-7.818 4.317,0 7.814,3.498 7.814,7.819 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1040" />
+      </g>
+      <g
+         id="g1042"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -169.712,250.282 -27.98,28.531 -1.749,-9.269 25.739,-25.574 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1044" />
+      </g>
+      <g
+         id="g1046"
+         transform="matrix(0.0458165,1,1,-0.0458165,0,0)">
+        <path
+           d="m 188.647,237.591 c 0.003,4.313 -3.497,7.809 -7.81,7.807 -4.312,0.003 -7.808,-3.494 -7.807,-7.806 -0.002,-4.316 3.494,-7.813 7.81,-7.811 4.313,0.002 7.809,3.498 7.807,7.81 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24764;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1048" />
+      </g>
+      <g
+         id="g1050"
+         transform="matrix(0.0458165,1,1,-0.0458165,0,0)">
+        <path
+           d="m 185.999,237.591 c 0.001,2.848 -2.311,5.161 -5.162,5.159 -2.848,0.001 -5.161,-2.311 -5.158,-5.158 -0.002,-2.852 2.31,-5.161 5.158,-5.162 2.851,-0.002 5.164,2.31 5.162,5.161 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24764;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1052" />
+      </g>
+      <g
+         id="g1054"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -200.195,269.57 -11.094,-2.454 -9.191,4.52 3.901,9.64 8.335,-2.328 12.422,0.271 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1056" />
+      </g>
+      <g
+         id="g1058"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -199.37,267.967 -7.845,11.775 -14.097,9.427 10.942,8.873 13.948,-7.604 5.174,-14.918 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1060" />
+      </g>
+      <g
+         id="g1062"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -204.414,283.04 7.438,6.747"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1064" />
+      </g>
+      <g
+         id="g1066"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -208.204,278.558 -1.747,-7.604"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.24982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1068" />
+      </g>
+      <g
+         id="g1070">
+        <path
+           d="m 206.793,185.195 3.48,12.43 -8.375,21 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1072" />
+      </g>
+      <g
+         id="g1074"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -187.807,-116.419 -21.69,38.377 8.763,2.004 19.925,-38.424 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.22418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1076" />
+      </g>
+      <g
+         id="g1078"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -178.516,-114 c 0,4.266 -3.459,7.728 -7.729,7.728 -4.266,0 -7.728,-3.459 -7.728,-7.729 0,-4.269 3.46,-7.728 7.729,-7.728 4.266,0.001 7.728,3.46 7.728,7.729 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.22418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1080" />
+      </g>
+      <g
+         id="g1082"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -181.137,-114.001 c 0.001,2.82 -2.286,5.107 -5.106,5.108 -2.821,-0.002 -5.107,-2.286 -5.109,-5.106 0.003,-2.821 2.286,-5.107 5.106,-5.108 2.821,-0.002 5.108,2.286 5.109,5.106 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.22418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1084" />
+      </g>
+      <g
+         id="g1086"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -207.581,-64.737 20.497,31.676 6.228,-4.058 -23.214,-34.245 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.22418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1088" />
+      </g>
+      <g
+         id="g1090"
+         transform="matrix(-1,-0.352206,0.352206,-1,0,0)">
+        <path
+           d="m -199.765,-30.399 c 0,4.07 -3.302,7.374 -7.376,7.375 -4.071,-0.004 -7.373,-3.302 -7.374,-7.375 0.003,-4.072 3.301,-7.374 7.375,-7.375 4.07,0 7.373,3.301 7.375,7.375 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.12222;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1092" />
+      </g>
+      <g
+         id="g1094"
+         transform="matrix(-1,-0.352206,0.352206,-1,0,0)">
+        <path
+           d="m -202.266,-30.401 c -0.001,2.692 -2.182,4.874 -4.874,4.873 -2.69,0.002 -4.872,-2.179 -4.871,-4.871 -0.003,-2.69 2.182,-4.873 4.87,-4.871 2.69,-0.002 4.873,2.178 4.875,4.869 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.12222;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1096" />
+      </g>
+      <g
+         id="g1098"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -205.437,-15.717 25.314,-23.81 5.618,12.864 -29.024,23.967 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.22418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1100" />
+      </g>
+      <g
+         id="g1102">
+        <path
+           d="m 218.414,231.812 2,7.145 c -21.941,0.508 -43.371,-2.711 -71.644,-24.832 l -4.247,-10.078 c 21.352,17.969 43.434,31.223 73.891,27.765 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1104" />
+      </g>
+      <g
+         id="g1106">
+        <path
+           d="m 150.668,152.371 c 6.902,-1.406 13.805,-2.816 20.711,-4.223 8.383,0.157 6.121,-17.027 -7.406,-12.46 -4.532,0.46 -9.02,1.246 -13.551,1.703"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1108" />
+      </g>
+      <g
+         id="g1110">
+        <path
+           d="m 144.953,206.062 c 15.633,14.559 31.25,27.489 73.832,27.071 -12.691,-19.078 -16.765,-13.766 -10.777,-46.141 -28.555,-19.008 -32.328,-29.605 -44.387,-51.695 -21.703,26.754 -21.793,49.086 -18.668,70.765 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1112" />
+      </g>
+      <g
+         id="g1114"
+         transform="matrix(-1,0.837792,-0.837792,-1,0,0)">
+        <path
+           d="m -18.549,-152.911 31.244,-13.868 -4.53,-5.298 -27.176,12.869 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.72471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1116" />
+      </g>
+      <g
+         id="g1118"
+         transform="matrix(-1,0.837792,-0.837792,-1,0,0)">
+        <path
+           d="m 7.213,-163.938 6.482,28.529 5.62,-1.296 -7.78,-31.123 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.72471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1120" />
+      </g>
+      <g
+         id="g1122"
+         transform="matrix(-1,0.837792,-0.837792,-1,0,0)">
+        <path
+           d="m 14.972,-171.632 c -2.648,-0.258 -5.298,-0.517 -7.948,-0.776 -3.25,2.07 -5.98,11.087 -1.291,11.211 1.824,0.774 3.664,1.488 5.485,2.275"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.72471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1124" />
+      </g>
+      <g
+         id="g1126"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -142.856,-64.142 c 0,3.214 -2.607,5.822 -5.82,5.82 -3.215,0 -5.821,-2.604 -5.822,-5.819 -0.001,-3.214 2.607,-5.822 5.819,-5.82 3.216,0 5.822,2.604 5.823,5.819 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.0277;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1128" />
+      </g>
+      <g
+         id="g1130"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -144.831,-64.142 c -0.001,2.125 -1.72,3.848 -3.846,3.848 -2.125,0 -3.846,-1.722 -3.846,-3.847 0,-2.125 1.721,-3.845 3.846,-3.848 2.125,0 3.847,1.725 3.846,3.847 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.0277;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1132" />
+      </g>
+      <g
+         id="g1134"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -152.965,-24.927 c 0,3.215 -2.604,5.82 -5.82,5.821 -3.215,0 -5.821,-2.605 -5.819,-5.821 -10e-4,-3.215 2.604,-5.82 5.82,-5.82 3.215,-0.001 5.818,2.606 5.819,5.82 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.0277;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1136" />
+      </g>
+      <g
+         id="g1138"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -154.937,-24.929 c 0,2.126 -1.723,3.851 -3.849,3.851 -2.122,-0.003 -3.846,-1.722 -3.846,-3.847 0,-2.125 1.724,-3.848 3.847,-3.845 2.124,-0.003 3.846,1.722 3.848,3.841 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.0277;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1140" />
+      </g>
+      <g
+         id="g1142">
+        <path
+           d="m 100.227,148.441 -6.801,-15.55 -34.508,-8.262 -1.941,8.75 39.363,21.383 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1144" />
+      </g>
+      <g
+         id="g1146"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 182.723,-79.805 -11.809,-1.339 -6.838,9.516 2.529,11.789 16.942,-2.055 -3.914,-8.349 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.16676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1148" />
+      </g>
+      <g
+         id="g1150"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 232.598,-71.863 -33.167,27.273 -3.398,-8.068 33.512,-25.591 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.16676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1152" />
+      </g>
+      <g
+         id="g1154"
+         transform="matrix(-0.279838,-1,-1,0.279838,0,0)">
+        <path
+           d="m -222.802,-80.479 c -0.001,4.156 -3.371,7.525 -7.53,7.529 -4.157,-10e-4 -7.53,-3.374 -7.529,-7.53 10e-4,-4.157 3.369,-7.529 7.53,-7.529 4.156,0.001 7.528,3.369 7.529,7.53 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.16676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1156" />
+      </g>
+      <g
+         id="g1158"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 166.731,-71.862 10.078,2.137"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.16676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1160" />
+      </g>
+      <g
+         id="g1162"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 176.565,-75.75 -2.395,8.376 -7.28,4.897 16.698,-1.629 2.765,-3.644 -2.116,-7.123 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.16676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1164" />
+      </g>
+      <g
+         id="g1166"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 196.275,-49.532 -21.967,-31.608 9.082,0.014 19.574,28.95 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.16676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1168" />
+      </g>
+      <g
+         id="g1170"
+         transform="matrix(0.92804,-1,-1,-0.92804,0,0)">
+        <path
+           d="m -41.345,-149.213 c 10e-4,3.164 -2.563,5.73 -5.728,5.731 -3.165,0 -5.732,-2.566 -5.731,-5.729 0,-3.165 2.566,-5.732 5.731,-5.733 3.162,0.002 5.73,2.568 5.728,5.731 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.64922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1172" />
+      </g>
+      <g
+         id="g1174"
+         transform="matrix(0.92804,-1,-1,-0.92804,0,0)">
+        <path
+           d="m -43.287,-149.212 c 10e-4,2.091 -1.695,3.788 -3.788,3.787 -2.09,0.001 -3.785,-1.697 -3.786,-3.788 -0.001,-2.09 1.697,-3.785 3.787,-3.786 2.091,-0.001 3.787,1.695 3.787,3.787 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.64922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1176" />
+      </g>
+      <g
+         id="g1178">
+        <path
+           d="M 116.266,240.777 53.09,260.219"
+           style="fill:none;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1180" />
+      </g>
+      <g
+         id="g1182">
+        <path
+           d="m 153.684,268.965 -22.84,35.476"
+           style="fill:none;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1184" />
+      </g>
+      <g
+         id="g1186">
+        <path
+           d="m 202.285,264.594 22.352,39.363"
+           style="fill:none;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1188" />
+      </g>
+      <g
+         id="g1190">
+        <path
+           d="m 250.883,260.219 42.277,16.523"
+           style="fill:none;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1192" />
+      </g>
+      <g
+         id="g1194">
+        <path
+           d="m 270.32,236.406 31.102,1.457"
+           style="fill:none;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1196" />
+      </g>
+      <g
+         id="g1198">
+        <path
+           d="m 243.59,207.734 20.898,-12.152"
+           style="fill:none;stroke:#747474;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1200" />
+      </g>
+      <g
+         id="g1202">
+        <path
+           d="M 166.32,42.5 144.051,3.93"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1204" />
+      </g>
+      <g
+         id="g1206">
+        <path
+           d="M 173.609,38.613 162.098,18.676"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1208" />
+      </g>
+      <g
+         id="g1210">
+        <path
+           d="M 39.965,111.508 4.062,49.324"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1212" />
+      </g>
+      <g
+         id="g1214">
+        <path
+           d="M 255.254,156.219 238.262,92.801"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1216" />
+      </g>
+      <g
+         id="g1218">
+        <path
+           d="m 221.238,164.48 -8.613,-32.144"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1220" />
+      </g>
+      <g
+         id="g1222">
+        <path
+           d="m 293.16,188.781 -5.281,-19.719"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1224" />
+      </g>
+      <g
+         id="g1226">
+        <path
+           d="M 272.266,173.715 263.207,139.91"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1228" />
+      </g>
+      <g
+         id="g1230">
+        <path
+           d="M 279.066,179.059 272.684,155.23"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1232" />
+      </g>
+      <g
+         id="g1234">
+        <path
+           d="M 228.609,160.996 207.406,81.863"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1236" />
+      </g>
+      <g
+         id="g1238">
+        <path
+           d="M 100.227,136.293 38.965,30.184"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1240" />
+      </g>
+      <g
+         id="g1242">
+        <path
+           d="M 127.441,138.723 73.73,45.691"
+           style="fill:none;stroke:#c8c8c8;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1244" />
+      </g>
+      <g
+         id="g1246"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -191.531,202.637 24.349,37.349 -8.717,2.585 -22.573,-37.514 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1248" />
+      </g>
+      <g
+         id="g1250"
+         transform="matrix(0.0127232,1,1,-0.0127232,0,0)">
+        <path
+           d="m 202.916,204.024 c 0,4.316 -3.498,7.814 -7.814,7.814 -4.317,0 -7.818,-3.498 -7.819,-7.815 0,-4.316 3.499,-7.818 7.819,-7.818 4.316,0 7.814,3.498 7.814,7.819 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1252" />
+      </g>
+      <g
+         id="g1254"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -169.37,251.087 -27.981,28.531 -1.749,-9.268 25.74,-25.575 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1256" />
+      </g>
+      <g
+         id="g1258"
+         transform="matrix(0.0458165,1,1,-0.0458165,0,0)">
+        <path
+           d="m 188.333,238.406 c 0.002,4.313 -3.498,7.809 -7.81,7.807 -4.313,0.003 -7.809,-3.493 -7.807,-7.806 -0.002,-4.316 3.494,-7.812 7.81,-7.811 4.313,0.002 7.809,3.498 7.807,7.81 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1260" />
+      </g>
+      <g
+         id="g1262"
+         transform="matrix(0.0458165,1,1,-0.0458165,0,0)">
+        <path
+           d="m 185.685,238.407 c 0.001,2.847 -2.311,5.16 -5.162,5.158 -2.848,0.002 -5.161,-2.31 -5.159,-5.158 -0.001,-2.852 2.311,-5.161 5.158,-5.162 2.852,-0.002 5.165,2.31 5.163,5.162 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1264" />
+      </g>
+      <g
+         id="g1266"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -199.85,270.375 -11.098,-2.453 -9.19,4.519 3.901,9.64 8.334,-2.328 12.422,0.272 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1268" />
+      </g>
+      <g
+         id="g1270"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -199.029,268.772 -7.845,11.776 -14.097,9.426 10.942,8.873 13.948,-7.603 5.175,-14.919 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1272" />
+      </g>
+      <g
+         id="g1274"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -204.072,283.845 7.437,6.747"
+           style="fill:none;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1276" />
+      </g>
+      <g
+         id="g1278"
+         transform="matrix(-0.0127232,-1,1,-0.0127232,0,0)">
+        <path
+           d="m -207.863,279.363 -1.747,-7.604"
+           style="fill:none;stroke:#000000;stroke-width:0.749939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1280" />
+      </g>
+      <g
+         id="g1282">
+        <path
+           d="m 207.594,184.844 3.48,12.429 -8.375,21 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1284" />
+      </g>
+      <g
+         id="g1286"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -188.537,-115.953 -21.69,38.374 8.763,2.004 19.925,-38.424 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.741392;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1288" />
+      </g>
+      <g
+         id="g1290"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -179.246,-113.536 c 0,4.265 -3.459,7.727 -7.729,7.728 -4.266,-10e-4 -7.728,-3.46 -7.728,-7.73 0,-4.269 3.46,-7.727 7.729,-7.728 4.266,0.001 7.728,3.46 7.728,7.73 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.741392;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1292" />
+      </g>
+      <g
+         id="g1294"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -181.867,-113.538 c 10e-4,2.82 -2.286,5.107 -5.106,5.108 -2.821,-0.002 -5.107,-2.286 -5.109,-5.106 -0.001,-2.82 2.286,-5.107 5.106,-5.108 2.821,-0.002 5.108,2.286 5.109,5.106 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.741392;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1296" />
+      </g>
+      <g
+         id="g1298"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -208.311,-64.274 20.497,31.676 6.228,-4.057 -23.214,-34.246 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.741392;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1300" />
+      </g>
+      <g
+         id="g1302"
+         transform="matrix(-1,-0.352206,0.352206,-1,0,0)">
+        <path
+           d="m -200.368,-29.835 c 0,4.07 -3.301,7.373 -7.375,7.374 -4.071,-0.003 -7.373,-3.301 -7.375,-7.375 0.004,-4.071 3.302,-7.373 7.375,-7.375 4.072,0.004 7.374,3.302 7.375,7.376 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.707406;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1304" />
+      </g>
+      <g
+         id="g1306"
+         transform="matrix(-1,-0.352206,0.352206,-1,0,0)">
+        <path
+           d="m -202.868,-29.838 c -0.001,2.692 -2.182,4.874 -4.874,4.873 -2.691,0.003 -4.873,-2.178 -4.872,-4.87 -0.002,-2.69 2.179,-4.873 4.871,-4.871 2.69,-0.003 4.872,2.178 4.875,4.868 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.707406;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1308" />
+      </g>
+      <g
+         id="g1310"
+         transform="matrix(-1,-0.152825,0.152825,-1,0,0)">
+        <path
+           d="m -206.167,-15.254 25.314,-23.81 5.618,12.864 -29.024,23.967 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.741392;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1312" />
+      </g>
+      <g
+         id="g1314">
+        <path
+           d="m 219.215,231.461 2,7.144 c -21.942,0.508 -43.371,-2.71 -71.645,-24.832 l -4.246,-10.078 c 21.352,17.969 43.434,31.223 73.891,27.766 z"
+           style="fill:#ceae83;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1316" />
+      </g>
+      <g
+         id="g1318">
+        <path
+           d="m 151.469,152.02 c 6.902,-1.407 13.804,-2.817 20.711,-4.223 8.382,0.156 6.121,-17.027 -7.407,-12.461 -4.531,0.461 -9.019,1.246 -13.55,1.703"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1320" />
+      </g>
+      <g
+         id="g1322">
+        <path
+           d="m 145.754,205.711 c 15.633,14.559 31.25,27.488 73.832,27.07 -12.691,-19.078 -16.766,-13.765 -10.777,-46.14 -28.555,-19.008 -32.329,-29.606 -44.387,-51.696 -21.703,26.754 -21.793,49.086 -18.668,70.766 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1324" />
+      </g>
+      <g
+         id="g1326"
+         transform="matrix(-1,0.837792,-0.837792,-1,0,0)">
+        <path
+           d="m -19.192,-153.099 31.243,-13.867 -4.529,-5.299 -27.176,12.869 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.574903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1328" />
+      </g>
+      <g
+         id="g1330"
+         transform="matrix(-1,0.837792,-0.837792,-1,0,0)">
+        <path
+           d="m 6.569,-164.125 6.482,28.528 5.621,-1.295 -7.781,-31.124 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.574903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1332" />
+      </g>
+      <g
+         id="g1334"
+         transform="matrix(-1,0.837792,-0.837792,-1,0,0)">
+        <path
+           d="m 14.328,-171.82 c -2.647,-0.257 -5.297,-0.517 -7.947,-0.776 -3.25,2.07 -5.981,11.088 -1.291,11.212 1.822,0.776 3.663,1.487 5.484,2.274"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.574903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1336" />
+      </g>
+      <g
+         id="g1338"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -143.414,-63.372 c 0,3.214 -2.607,5.821 -5.82,5.82 -3.215,0 -5.821,-2.604 -5.822,-5.819 -10e-4,-3.214 2.607,-5.822 5.819,-5.82 3.216,0 5.822,2.604 5.823,5.819 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.675901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1340" />
+      </g>
+      <g
+         id="g1342"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -145.389,-63.372 c -10e-4,2.125 -1.72,3.848 -3.846,3.848 -2.125,0 -3.846,-1.722 -3.846,-3.847 0,-2.125 1.721,-3.845 3.847,-3.845 2.124,-0.003 3.846,1.722 3.845,3.844 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.675901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1344" />
+      </g>
+      <g
+         id="g1346"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -153.523,-24.157 c 0,3.215 -2.604,5.82 -5.82,5.82 -3.215,0.001 -5.821,-2.604 -5.819,-5.82 -0.001,-3.215 2.604,-5.82 5.82,-5.82 3.215,-0.001 5.818,2.606 5.819,5.82 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.675901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1348" />
+      </g>
+      <g
+         id="g1350"
+         transform="matrix(-0.988785,-0.749731,0.323443,-1,0,0)">
+        <path
+           d="m -155.495,-24.159 c 0,2.125 -1.723,3.851 -3.849,3.851 -2.122,-0.003 -3.846,-1.722 -3.846,-3.847 0,-2.125 1.724,-3.848 3.847,-3.845 2.124,-0.003 3.846,1.722 3.848,3.841 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.675901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1352" />
+      </g>
+      <g
+         id="g1354">
+        <path
+           d="m 101.027,148.09 -6.8,-15.551 -34.508,-8.262 -1.942,8.75 39.364,21.383 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1356" />
+      </g>
+      <g
+         id="g1358"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 182.605,-80.638 -11.809,-1.34 -6.839,9.516 2.529,11.79 16.943,-2.056 -3.914,-8.349 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.722253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1360" />
+      </g>
+      <g
+         id="g1362"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 232.48,-72.697 -33.167,27.273 -3.399,-8.068 33.513,-25.591 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.722253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1364" />
+      </g>
+      <g
+         id="g1366"
+         transform="matrix(-0.279838,-1,-1,0.279838,0,0)">
+        <path
+           d="m -222.684,-81.313 c -0.001,4.156 -3.371,7.525 -7.53,7.529 -4.157,-10e-4 -7.53,-3.374 -7.529,-7.53 0.001,-4.157 3.373,-7.53 7.53,-7.529 4.156,0.001 7.529,3.37 7.529,7.53 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.722253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1368" />
+      </g>
+      <g
+         id="g1370"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 166.613,-72.696 10.077,2.137"
+           style="fill:none;stroke:#000000;stroke-width:0.722253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1372" />
+      </g>
+      <g
+         id="g1374"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 176.447,-76.584 -2.395,8.376 -7.28,4.897 16.697,-1.628 2.766,-3.644 -2.116,-7.124 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.722253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1376" />
+      </g>
+      <g
+         id="g1378"
+         transform="matrix(0.279838,1,-1,0.279838,0,0)">
+        <path
+           d="m 196.157,-50.366 -21.968,-31.608 9.082,0.014 19.575,28.951 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.722253;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1380" />
+      </g>
+      <g
+         id="g1382"
+         transform="matrix(0.92804,-1,-1,-0.92804,0,0)">
+        <path
+           d="m -40.754,-149.466 c -0.002,3.163 -2.566,5.728 -5.731,5.729 -3.164,0 -5.732,-2.566 -5.73,-5.729 -10e-4,-3.164 2.565,-5.732 5.73,-5.733 3.163,0.002 5.73,2.568 5.731,5.733 z"
+           style="fill:#fff2a2;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.549741;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1384" />
+      </g>
+      <g
+         id="g1386"
+         transform="matrix(0.92804,-1,-1,-0.92804,0,0)">
+        <path
+           d="m -42.699,-149.466 c 10e-4,2.09 -1.694,3.787 -3.787,3.786 -2.091,0.001 -3.786,-1.697 -3.787,-3.787 -10e-4,-2.091 1.697,-3.786 3.788,-3.787 2.09,-0.001 3.787,1.695 3.786,3.788 z"
+           style="fill:#ffffd7;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.549741;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1388" />
+      </g>
+      <text
+         transform="matrix(0.99843443,-0.12261972,-0.05593468,0.98402427,106.65956,103.50629)"
+         style="font-variant:normal;font-weight:bold;font-size:20.7019px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:DejaVuSansMono-Bold;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="text1392"><tspan
+           x="0 12.007111 24.034922 36.042034 48.069843 60.076954"
+           y="0"
+           sodipodi:role="line"
+           id="tspan1390">Memory</tspan></text>
+      <g
+         id="g1394"
+         transform="matrix(1,-0.122812,-0.0560224,0.985567,0,0)">
+        <path
+           d="m 114.209,104.067 3.547,-0.002 1.792,6.613 1.786,-6.611 3.578,0.002 10e-4,15.077 -2.562,-0.002 -0.005,-12.065 -1.599,6.586 -2.36,-0.009 -1.634,-6.577 0.004,12.066 -2.547,-10e-4 z m 22.247,14.512 c -0.695,0.294 -1.394,0.508 -2.105,0.642 -0.711,0.133 -1.465,0.205 -2.254,0.21 -1.899,-0.003 -3.341,-0.503 -4.334,-1.507 -0.995,-1.012 -1.494,-2.469 -1.495,-4.372 -0.002,-1.847 0.478,-3.309 1.441,-4.386 0.96,-1.073 2.274,-1.611 3.941,-1.617 1.677,0.01 2.974,0.509 3.897,1.5 0.919,0.994 1.376,2.399 1.376,4.214 l 0.005,1.19 -7.657,-0.003 c -0.005,0.887 0.251,1.553 0.768,1.998 0.525,0.438 1.303,0.654 2.334,0.655 0.676,0.001 1.342,-0.094 1.999,-0.29 0.665,-0.202 1.362,-0.512 2.089,-0.928 z m -2.497,-6.351 c -0.012,-0.783 -0.217,-1.375 -0.615,-1.773 -0.389,-0.398 -0.955,-0.595 -1.705,-0.593 -0.687,0.001 -1.234,0.207 -1.637,0.62 -0.395,0.419 -0.627,1.008 -0.698,1.768 z m 10.334,-3.251 c 0.223,-0.479 0.504,-0.833 0.846,-1.067 0.351,-0.23 0.778,-0.347 1.277,-0.349 0.977,-0.005 1.648,0.333 2.01,1.012 0.37,0.672 0.557,2.067 0.563,4.192 l -0.002,6.373 -2.406,10e-4 -10e-4,-7.261 c 0.004,-0.844 -0.059,-1.402 -0.187,-1.672 -0.133,-0.278 -0.367,-0.418 -0.711,-0.421 -0.336,0.001 -0.57,0.147 -0.71,0.434 -0.141,0.28 -0.212,0.83 -0.205,1.655 l 0.001,7.261 -2.39,0.004 -10e-4,-7.261 c -0.007,-0.826 -0.073,-1.377 -0.202,-1.658 -0.133,-0.279 -0.364,-0.426 -0.697,-0.436 -0.343,10e-4 -0.581,0.141 -0.71,0.419 -0.122,0.27 -0.184,0.829 -0.188,1.673 l 10e-4,7.261 -2.421,0.015 0.007,-11.303 h 2.156 l -0.012,1.171 c 0.162,-0.443 0.428,-0.795 0.8,-1.057 0.379,-0.27 0.798,-0.4 1.259,-0.398 0.445,-0.008 0.859,0.13 1.241,0.408 0.379,0.269 0.605,0.606 0.682,1.004 z m 11.255,1.003 c -0.699,0 -1.256,0.311 -1.666,0.933 -0.415,0.615 -0.621,1.477 -0.621,2.586 0,1.11 0.204,1.976 0.614,2.598 0.418,0.623 0.978,0.938 1.678,0.938 0.707,0.005 1.264,-0.306 1.666,-0.934 0.403,-0.623 0.604,-1.494 0.604,-2.604 0.001,-1.109 -0.204,-1.967 -0.613,-2.581 -0.402,-0.621 -0.955,-0.932 -1.662,-0.936 z m -5.225,3.518 c -0.001,-1.827 0.473,-3.274 1.413,-4.342 0.949,-1.063 2.223,-1.598 3.817,-1.602 1.601,0.002 2.873,0.533 3.808,1.601 0.943,1.068 1.415,2.518 1.416,4.346 -0.004,1.818 -0.474,3.262 -1.414,4.326 -0.941,1.068 -2.215,1.603 -3.817,1.601 -1.593,0.004 -2.866,-0.531 -3.808,-1.6 -0.947,-1.069 -1.418,-2.511 -1.415,-4.33 z m 22.605,-2.53 c -0.31,-0.3 -0.682,-0.521 -1.116,-0.662 -0.438,-0.15 -0.911,-0.225 -1.418,-0.224 -0.637,-0.004 -1.19,0.101 -1.655,0.317 -0.468,0.219 -0.829,0.538 -1.086,0.958 -0.166,0.245 -0.278,0.552 -0.339,0.925 -0.066,0.364 -0.097,0.915 -0.095,1.653 l -0.005,5.215 -2.953,-0.003 0.007,-11.303 2.954,0.003 -0.012,1.743 c 0.295,-0.649 0.74,-1.149 1.338,-1.498 0.605,-0.357 1.306,-0.535 2.111,-0.53 0.394,-0.002 0.784,0.05 1.165,0.161 0.389,0.104 0.756,0.245 1.102,0.423 z m 7.589,9.408 c -0.409,1.059 -0.894,1.827 -1.449,2.308 -0.546,0.491 -1.22,0.74 -2.02,0.747 l -2.438,-0.002 -0.001,-2.252 1.203,-0.008 c 0.601,-10e-4 1.045,-0.104 1.326,-0.311 0.278,-0.199 0.564,-0.675 0.857,-1.431 l 0.233,-0.589 -4.304,-11 3.11,0.007 2.567,7.328 2.495,-7.331 3.094,0.005 z"
+           style="fill:none;stroke:#000000;stroke-width:0.68231;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1396" />
+      </g>
+      <text
+         transform="matrix(0.99843443,-0.12261972,-0.05593468,0.98402427,99.210337,129.70941)"
+         style="font-variant:normal;font-weight:bold;font-size:20.7019px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:DejaVuSansMono-Bold;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="text1400"><tspan
+           x="0 12.007111 24.034922 36.042034 48.069843 60.076954 72.084068"
+           y="0"
+           sodipodi:role="line"
+           id="tspan1398">Barrier</tspan></text>
+      <g
+         id="g1402"
+         transform="matrix(1,-0.122812,-0.0560224,0.985567,0,0)">
+        <path
+           d="m 111.481,138.146 v 4.455 l 1.969,0.007 c 0.946,0.003 1.609,-0.156 1.989,-0.481 0.388,-0.32 0.579,-0.883 0.577,-1.688 0.005,-0.812 -0.195,-1.396 -0.598,-1.755 -0.395,-0.354 -1.053,-0.531 -1.967,-0.53 z m -0.002,-5.898 -0.006,3.519 1.969,0.007 c 0.758,0 1.298,-0.131 1.619,-0.4 0.317,-0.266 0.475,-0.71 0.472,-1.337 0.004,-0.609 -0.153,-1.057 -0.482,-1.344 -0.321,-0.293 -0.853,-0.439 -1.603,-0.437 z m -2.898,-2.359 4.86,0.004 c 1.687,0 2.948,0.319 3.788,0.963 0.848,0.637 1.269,1.585 1.27,2.853 -10e-4,0.963 -0.248,1.721 -0.748,2.269 -0.501,0.552 -1.233,0.869 -2.197,0.947 1.15,0.112 2.016,0.501 2.596,1.164 0.576,0.655 0.87,1.575 0.873,2.757 -0.004,1.45 -0.437,2.505 -1.307,3.166 -0.869,0.653 -2.296,0.978 -4.273,0.974 l -4.86,-0.003 z m 17.825,9.776 c -1.117,-0.001 -1.894,0.144 -2.334,0.438 -0.434,0.287 -0.653,0.771 -0.653,1.457 0.005,0.508 0.16,0.916 0.458,1.214 0.307,0.304 0.717,0.454 1.229,0.455 0.781,-0.006 1.389,-0.303 1.826,-0.883 0.435,-0.587 0.647,-1.413 0.642,-2.472 l 0.004,-0.206 z m 4.109,-1.137 0.002,6.453 -2.938,-0.002 -0.008,-1.253 c -0.359,0.494 -0.818,0.877 -1.373,1.145 -0.559,0.271 -1.173,0.405 -1.837,0.405 -1.281,-0.001 -2.284,-0.34 -3.01,-1.025 -0.718,-0.68 -1.072,-1.624 -1.065,-2.828 -0.004,-1.32 0.422,-2.298 1.273,-2.933 0.86,-0.63 2.185,-0.948 3.979,-0.947 l 2.046,0.002 -0.012,-0.493 c 0.005,-0.483 -0.168,-0.85 -0.514,-1.095 -0.338,-0.252 -0.845,-0.379 -1.521,-0.38 -0.711,0.007 -1.397,0.104 -2.063,0.282 -0.669,0.182 -1.36,0.473 -2.076,0.867 l -10e-4,-2.537 c 0.66,-0.266 1.325,-0.461 1.998,-0.591 0.679,-0.137 1.394,-0.207 2.144,-0.208 1.833,0.006 3.12,0.388 3.861,1.147 0.738,0.75 1.109,2.08 1.115,3.991 z m 12.419,-1.722 c -0.31,-0.3 -0.682,-0.521 -1.116,-0.662 -0.438,-0.15 -0.911,-0.225 -1.418,-0.225 -0.637,-0.004 -1.19,0.102 -1.654,0.317 -0.469,0.219 -0.83,0.539 -1.087,0.959 -0.166,0.245 -0.278,0.552 -0.339,0.925 -0.066,0.364 -0.097,0.915 -0.095,1.653 l -0.005,5.215 -2.953,-0.004 0.007,-11.302 2.954,0.003 -0.012,1.742 c 0.296,-0.648 0.74,-1.148 1.338,-1.497 0.605,-0.357 1.306,-0.535 2.111,-0.53 0.394,-0.003 0.784,0.05 1.165,0.161 0.389,0.104 0.756,0.245 1.102,0.423 z m 11.996,0 c -0.31,-0.3 -0.682,-0.52 -1.115,-0.662 -0.438,-0.149 -0.911,-0.224 -1.419,-0.224 -0.637,-0.004 -1.19,0.101 -1.654,0.317 -0.468,0.219 -0.829,0.539 -1.087,0.958 -0.166,0.245 -0.278,0.552 -0.339,0.925 -0.066,0.365 -0.097,0.916 -0.095,1.653 l -0.005,5.215 -2.953,-0.003 0.007,-11.303 2.954,0.004 -0.012,1.742 c 0.296,-0.649 0.74,-1.148 1.338,-1.498 0.605,-0.356 1.306,-0.535 2.111,-0.53 0.394,-0.002 0.784,0.051 1.165,0.162 0.389,0.103 0.756,0.244 1.102,0.422 z m 2.633,-3.132 5.844,-0.001 -0.01,9.036 3.673,0.014 0.002,2.267 -10.313,-0.001 -0.002,-2.267 3.704,0.001 -0.005,-6.77 -2.907,-0.013 z m 2.896,-5.489 2.936,-0.014 0.006,3.457 -2.936,0.014 z m 17.987,16.237 c -0.694,0.294 -1.393,0.508 -2.104,0.641 -0.712,0.133 -1.465,0.206 -2.254,0.211 -1.899,-0.003 -3.341,-0.504 -4.335,-1.508 -0.994,-1.011 -1.493,-2.469 -1.495,-4.371 -0.001,-1.847 0.479,-3.31 1.442,-4.386 0.96,-1.074 2.273,-1.612 3.941,-1.618 1.676,0.011 2.974,0.509 3.896,1.5 0.919,0.995 1.377,2.399 1.377,4.214 l 0.004,1.19 -7.656,-0.003 c -0.005,0.887 0.251,1.553 0.768,1.998 0.525,0.438 1.302,0.654 2.334,0.656 0.675,0.001 1.342,-0.095 1.999,-0.29 0.664,-0.203 1.362,-0.512 2.089,-0.929 z m -2.496,-6.352 c -0.013,-0.782 -0.218,-1.374 -0.615,-1.773 -0.39,-0.397 -0.955,-0.594 -1.705,-0.593 -0.688,0.002 -1.235,0.207 -1.637,0.621 -0.395,0.418 -0.627,1.008 -0.698,1.768 z m 14.972,-1.265 c -0.31,-0.3 -0.682,-0.521 -1.115,-0.662 -0.438,-0.15 -0.911,-0.225 -1.419,-0.225 -0.637,-0.004 -1.19,0.102 -1.654,0.317 -0.468,0.219 -0.829,0.539 -1.087,0.959 -0.166,0.245 -0.278,0.552 -0.339,0.925 -0.065,0.364 -0.097,0.915 -0.095,1.653 l -0.005,5.215 -2.953,-0.004 0.008,-11.302 2.953,0.003 -0.012,1.742 c 0.296,-0.648 0.74,-1.148 1.338,-1.497 0.605,-0.357 1.306,-0.535 2.111,-0.53 0.394,-0.003 0.784,0.05 1.165,0.161 0.389,0.104 0.756,0.245 1.102,0.423 z"
+           style="fill:none;stroke:#000000;stroke-width:0.68231;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1404" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/cpu/overview.tex b/cpu/overview.tex
index 1d233189..0bd6e18d 100644
--- a/cpu/overview.tex
+++ b/cpu/overview.tex
@@ -260,7 +260,7 @@ spin_unlock(&mylock);
 
 \begin{figure}
 \centering
-\resizebox{3in}{!}{\includegraphics{cartoons/r-2014-Memory-barrier}}
+\resizebox{3in}{!}{\includegraphics{cartoons/r-2023-Memory-barrier}}
 \caption{CPU Meets a Memory Barrier}
 \ContributedBy{fig:cpu:CPU Meets a Memory Barrier}{Melissa Broussard}
 \end{figure}
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 6/8] FAQ-BUILD: List package for rsvg-convert in package lists
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
                   ` (4 preceding siblings ...)
  2024-01-05  9:54 ` [PATCH -perfbook 5/8] cartoons: Retouch r-2014-Memory-barrier.svg Akira Yokosawa
@ 2024-01-05  9:55 ` Akira Yokosawa
  2024-01-05  9:57 ` [PATCH -perfbook 7/8] docker: Add packages for rsvg-convert Akira Yokosawa
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:55 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

Instead of inkscape, name package for rsvg-convert.  Unfortunately,
the package name varies wildly among distros.

Adjust surrounding text accordingly.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 FAQ-BUILD.txt | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/FAQ-BUILD.txt b/FAQ-BUILD.txt
index e9719a60..e86dffb7 100644
--- a/FAQ-BUILD.txt
+++ b/FAQ-BUILD.txt
@@ -40,11 +40,13 @@
 		Alternatively, you can use the container image described
 		in #13 below.  Otherwise, instructions follow.
 
-		On Ubuntu Focal and later, the following list should cover
+		On Ubuntu jammy and later, the following list should cover
 		necessary packages (except for -doc packages):
 			texlive-publishers texlive-pstricks
 			texlive-science texlive-fonts-extra
-			xfig inkscape graphviz
+			xfig librsvg2-bin graphviz
+
+		On Ubuntu focal, install inkscape instead of librsvg2-bin.
 
 		On Fedora, installing the following set of packages
 		suffices:
@@ -53,7 +55,7 @@
 			texlive-collection-latexextra
 			texlive-collection-fontsextra
 			texlive-collection-fontutils
-			transfig graphviz inkscape
+			transfig graphviz librsvg2-tools
 
 		On other Linux distributions such as RHEL/CentOS and
 		Scientific Linux, where support of TeX Live packages
@@ -70,7 +72,20 @@
 
 		Besides TeX Live, you need the following list of
 		packages:
-			fig2dev (or transfig) graphviz inkscape
+			fig2dev (or transfig) graphviz librsvg2-tools
+			(or librsvg2-bin, rsvg-convert, etc.)
+
+	    Note: For building on Git repo prior to January 2024,  you need
+		inkscape as well.
+
+		Preferred SVG --> PDF converter is rsvg-convert >= v2.57.
+		rsvg-convert v2.52 should also suffice.  If there is
+		no inkscape installed, any version of rsvg-convert is
+		used for the conversion, albeit there can be poor looking
+		figures in the end.
+		You can continue building perfbook without rsvg-convert
+		if you have inkscape, that is, as long as command-line
+		mode inkscape works reliably...
 
 6.	I cannot build perfbook, and the perfbook.log file complains
 	about some obscure package being missing.  What do I do?
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 7/8] docker: Add packages for rsvg-convert
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
                   ` (5 preceding siblings ...)
  2024-01-05  9:55 ` [PATCH -perfbook 6/8] FAQ-BUILD: List package for rsvg-convert in package lists Akira Yokosawa
@ 2024-01-05  9:57 ` Akira Yokosawa
  2024-01-05  9:58 ` [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape Akira Yokosawa
  2024-01-05 13:31 ` [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Paul E. McKenney
  8 siblings, 0 replies; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:57 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

Make rsvg-convert available in these container images.

Also go forward to Fedora 39 as the regression of font info corruption
observed in Fedora 38 has been resolved.

Keep inkscape as well so that the resulting container images can work
on top of Git repos before January 2024.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 docker/Dockerfile        | 4 ++--
 docker/Dockerfile.fedora | 7 ++-----
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/docker/Dockerfile b/docker/Dockerfile
index ec89c6f2..66fd2b3f 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,7 +1,7 @@
 ARG rel=latest
 FROM ubuntu:$rel
 
-RUN apt-get update && apt-get install -y locales && \
+RUN apt-get update && apt-get upgrade -y && apt-get install -y locales && \
     localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \
     rm -rf /var/lib/apt/lists/*
 ENV LANG en_US.utf8
@@ -9,7 +9,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=UTC apt-get install -y t
     rm -rf /var/lib/apt/lists/*
 RUN apt-get update && apt-get install -y fig2ps inkscape xfig graphviz psutils \
     texlive-publishers texlive-pstricks texlive-science texlive-fonts-extra \
-    make nano vim git curl gnuplot-nox time poppler-utils && \
+    make nano vim git curl gnuplot-nox time poppler-utils librsvg2-bin && \
     rm -rf /var/lib/apt/lists/*
 COPY steel-city-comic.regular.ttf /usr/local/share/fonts/
 RUN fc-cache /usr/local/share/fonts/
diff --git a/docker/Dockerfile.fedora b/docker/Dockerfile.fedora
index 5eff2a2a..6812163a 100644
--- a/docker/Dockerfile.fedora
+++ b/docker/Dockerfile.fedora
@@ -1,15 +1,12 @@
-# As of June 2023, Inkscape of Fedora 38 has a regression of font markup
-# corruption.
-# Stay with Fedora 37 for the moment.
 # You can override "rel" by saying:
 #    docker build -t <tag> --build-arg rel=latest -f Dockerfile.fedora .
 #
-ARG rel=37
+ARG rel=latest
 FROM fedora:$rel
 
 RUN dnf -y update && dnf install -y --setopt=tsflags=nodocs \
     fig2ps graphviz inkscape make git vim nano gnuplot-minimal groff time \
-    liberation-fonts dejavu-fonts-all poppler-utils \
+    liberation-fonts dejavu-fonts-all poppler-utils librsvg2-tools \
     texlive-collection-plaingeneric texlive-collection-binextra \
     texlive-collection-latexextra texlive-epstopdf texlive-fontools \
     texlive-newtx texlive-newtxtt texlive-nimbus15 texlive-courier-scaled \
-- 
2.34.1




^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
                   ` (6 preceding siblings ...)
  2024-01-05  9:57 ` [PATCH -perfbook 7/8] docker: Add packages for rsvg-convert Akira Yokosawa
@ 2024-01-05  9:58 ` Akira Yokosawa
  2024-01-05 21:39   ` Leonardo Brás
  2024-01-05 13:31 ` [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Paul E. McKenney
  8 siblings, 1 reply; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05  9:58 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Leonardo Bras, Akira Yokosawa

On Arch Linux, rsvg-convert is provided in the librsvg package.
Install it instead of inkscape.

Using rsvg-convert can shorten runtime of CI job for building PDFs
a bit.

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
Cc: Leonardo Bras <leobras.c@gmail.com>
---
Needs an explicit ACK or Tested-by from Leo.
Expected order of reduction of build time:  ~10s

 utilities/gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/utilities/gitlab-ci.yml b/utilities/gitlab-ci.yml
index bcda8712..17525fb4 100644
--- a/utilities/gitlab-ci.yml
+++ b/utilities/gitlab-ci.yml
@@ -19,7 +19,7 @@ generate_pdfs:
     stage: build
 
     before_script:
-        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz inkscape wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
+        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz librsvg wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
         - mkdir -p ~/.local/share/fonts && cp fonts/steel-city-comic.regular.ttf ~/.local/share/fonts/ && fc-cache
 
     script:
-- 
2.34.1




^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion
  2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
                   ` (7 preceding siblings ...)
  2024-01-05  9:58 ` [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape Akira Yokosawa
@ 2024-01-05 13:31 ` Paul E. McKenney
  2024-01-05 14:51   ` Akira Yokosawa
  8 siblings, 1 reply; 16+ messages in thread
From: Paul E. McKenney @ 2024-01-05 13:31 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: perfbook, Leonardo Bras

On Fri, Jan 05, 2024 at 06:44:47PM +0900, Akira Yokosawa wrote:
> Hi Paul,
> 
> [Cc 0/8 and 8/8 to Leo, Patch 8/8 touches gitlab-ci.yml]
> 
> Frequent crashes of Inkscape I encountered in 2023, which was mitigated
> in commit f307e19f2be0 ("Prevent inkscape from interacting with desktop
> manager"), made me look into alternative SVG --> PDF converters.
> 
> It turns out that recent versions of rsvg-convert work reasonably well
> for perfbook.  By "recent versions", I mean 2.52.5 and 2.57.x.
> rsvg-convert is a light-weight CLI command and is much faster than inkscape.
> 
> Sequential SVG --> PDF conversion time I get from
> "make cleanfigs-svg; env time make figs":
> 
>                 elapsed
> Inkscape:        21.45s
> rsvg-convert:     6.05s
> 
> So patches 1/8--4/8 add rules in Makefile for using rsvg-convert if it
> is recent enough.
> 
> One caveat: There is a SVG cartoon drawn by an ancient version of Inkscape,
> for which very recent versions of rsvg-convert produce distorted background
> of outlined text.
> 
> Patch 5/8 retouches the cartoon and put a SVG compatible with librsvg as
> cartoons/r-2023-Memory-barriers.svg.
> 
> Patches 6/8 and 7/8 adjust FAQ-BUILD and Dockerfiles accordingly.
> 
> Patch 8/8 updates gitlab-ci.yml.  It needs an explicit ACK or Tested-by:
> from Leo before applying.
> 
> Finally, this series wouldn't affect those of you who don't have
> rsvg-convert.

It does seem to deal well with rsvg-convert v2.52.5, so queued.
Especially given that I was having difficulty with inkscape's conversions
to PDF for another document.  I overcame these (I kid you not!) by
hand-editing one of perfbook's .svg files.

So thank you very much!

Again, queued, and I will be pushing this out shortly.

							Thanx, Paul

>         Thanks, Akira
> --
> Akira Yokosawa (8):
>   Makefile: Add rules to use rsvg-convert for SVG --> PDF conversion
>   Makefile: Don't use rsvg-convert < 2.57
>   Makefile: Allow rsvg-convert 2.52
>   Makefile: Use rsvg-convert anyway if no inkscape is found
>   cartoons: Retouch r-2014-Memory-barrier.svg
>   FAQ-BUILD: List package for rsvg-convert in package lists
>   docker: Add packages for rsvg-convert
>   gitlab-ci.yml: Install librsvg instead of inkscape
> 
>  FAQ-BUILD.txt                      |   23 +-
>  Makefile                           |   48 +-
>  cartoons/r-2023-Memory-barrier.svg | 1130 ++++++++++++++++++++++++++++
>  cpu/overview.tex                   |    2 +-
>  docker/Dockerfile                  |    4 +-
>  docker/Dockerfile.fedora           |    7 +-
>  utilities/gitlab-ci.yml            |    2 +-
>  7 files changed, 1198 insertions(+), 18 deletions(-)
>  create mode 100644 cartoons/r-2023-Memory-barrier.svg
> 
> 
> base-commit: 1ea46c6d43475fbdf97404dec28a58036d505bc3
> -- 
> 2.34.1
> 
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion
  2024-01-05 13:31 ` [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Paul E. McKenney
@ 2024-01-05 14:51   ` Akira Yokosawa
  2024-01-05 15:32     ` Paul E. McKenney
  0 siblings, 1 reply; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-05 14:51 UTC (permalink / raw)
  To: paulmck; +Cc: perfbook, Leonardo Bras, Akira Yokosawa

On Fri, 5 Jan 2024 05:31:36 -0800, Paul E. McKenney wrote:
> On Fri, Jan 05, 2024 at 06:44:47PM +0900, Akira Yokosawa wrote:
>> Hi Paul,
>>
>> [Cc 0/8 and 8/8 to Leo, Patch 8/8 touches gitlab-ci.yml]
>>
>> Frequent crashes of Inkscape I encountered in 2023, which was mitigated
>> in commit f307e19f2be0 ("Prevent inkscape from interacting with desktop
>> manager"), made me look into alternative SVG --> PDF converters.
>>
>> It turns out that recent versions of rsvg-convert work reasonably well
>> for perfbook.  By "recent versions", I mean 2.52.5 and 2.57.x.
>> rsvg-convert is a light-weight CLI command and is much faster than inkscape.
>>
>> Sequential SVG --> PDF conversion time I get from
>> "make cleanfigs-svg; env time make figs":
>>
>>                 elapsed
>> Inkscape:        21.45s
>> rsvg-convert:     6.05s
>>
>> So patches 1/8--4/8 add rules in Makefile for using rsvg-convert if it
>> is recent enough.
>>
>> One caveat: There is a SVG cartoon drawn by an ancient version of Inkscape,
>> for which very recent versions of rsvg-convert produce distorted background
>> of outlined text.
>>
>> Patch 5/8 retouches the cartoon and put a SVG compatible with librsvg as
>> cartoons/r-2023-Memory-barriers.svg.
>>
>> Patches 6/8 and 7/8 adjust FAQ-BUILD and Dockerfiles accordingly.
>>
>> Patch 8/8 updates gitlab-ci.yml.  It needs an explicit ACK or Tested-by:
>> from Leo before applying.
>>
>> Finally, this series wouldn't affect those of you who don't have
>> rsvg-convert.
> 
> It does seem to deal well with rsvg-convert v2.52.5, so queued.
> Especially given that I was having difficulty with inkscape's conversions
> to PDF for another document.  I overcame these (I kid you not!) by
> hand-editing one of perfbook's .svg files.

Hmm...

I remember hand-editing defer/RCUusecases.svg.  Let me see ...

Yes, it was commit 25238915b129 ("defer: Retouch SVG files for browser
compatibility (2nd attempt)").

Which perfbook's SVG file did you need to hand-edit?

        Thanks, Akira


> 
> So thank you very much!
> 
> Again, queued, and I will be pushing this out shortly.
> 
> 							Thanx, Paul
> 
>>         Thanks, Akira
>> --
>> Akira Yokosawa (8):
>>   Makefile: Add rules to use rsvg-convert for SVG --> PDF conversion
>>   Makefile: Don't use rsvg-convert < 2.57
>>   Makefile: Allow rsvg-convert 2.52
>>   Makefile: Use rsvg-convert anyway if no inkscape is found
>>   cartoons: Retouch r-2014-Memory-barrier.svg
>>   FAQ-BUILD: List package for rsvg-convert in package lists
>>   docker: Add packages for rsvg-convert
>>   gitlab-ci.yml: Install librsvg instead of inkscape
>>
>>  FAQ-BUILD.txt                      |   23 +-
>>  Makefile                           |   48 +-
>>  cartoons/r-2023-Memory-barrier.svg | 1130 ++++++++++++++++++++++++++++
>>  cpu/overview.tex                   |    2 +-
>>  docker/Dockerfile                  |    4 +-
>>  docker/Dockerfile.fedora           |    7 +-
>>  utilities/gitlab-ci.yml            |    2 +-
>>  7 files changed, 1198 insertions(+), 18 deletions(-)
>>  create mode 100644 cartoons/r-2023-Memory-barrier.svg
>>
>>
>> base-commit: 1ea46c6d43475fbdf97404dec28a58036d505bc3
>> -- 
>> 2.34.1
>>
>>
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion
  2024-01-05 14:51   ` Akira Yokosawa
@ 2024-01-05 15:32     ` Paul E. McKenney
  0 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2024-01-05 15:32 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: perfbook, Leonardo Bras

On Fri, Jan 05, 2024 at 11:51:55PM +0900, Akira Yokosawa wrote:
> On Fri, 5 Jan 2024 05:31:36 -0800, Paul E. McKenney wrote:
> > On Fri, Jan 05, 2024 at 06:44:47PM +0900, Akira Yokosawa wrote:
> >> Hi Paul,
> >>
> >> [Cc 0/8 and 8/8 to Leo, Patch 8/8 touches gitlab-ci.yml]
> >>
> >> Frequent crashes of Inkscape I encountered in 2023, which was mitigated
> >> in commit f307e19f2be0 ("Prevent inkscape from interacting with desktop
> >> manager"), made me look into alternative SVG --> PDF converters.
> >>
> >> It turns out that recent versions of rsvg-convert work reasonably well
> >> for perfbook.  By "recent versions", I mean 2.52.5 and 2.57.x.
> >> rsvg-convert is a light-weight CLI command and is much faster than inkscape.
> >>
> >> Sequential SVG --> PDF conversion time I get from
> >> "make cleanfigs-svg; env time make figs":
> >>
> >>                 elapsed
> >> Inkscape:        21.45s
> >> rsvg-convert:     6.05s
> >>
> >> So patches 1/8--4/8 add rules in Makefile for using rsvg-convert if it
> >> is recent enough.
> >>
> >> One caveat: There is a SVG cartoon drawn by an ancient version of Inkscape,
> >> for which very recent versions of rsvg-convert produce distorted background
> >> of outlined text.
> >>
> >> Patch 5/8 retouches the cartoon and put a SVG compatible with librsvg as
> >> cartoons/r-2023-Memory-barriers.svg.
> >>
> >> Patches 6/8 and 7/8 adjust FAQ-BUILD and Dockerfiles accordingly.
> >>
> >> Patch 8/8 updates gitlab-ci.yml.  It needs an explicit ACK or Tested-by:
> >> from Leo before applying.
> >>
> >> Finally, this series wouldn't affect those of you who don't have
> >> rsvg-convert.
> > 
> > It does seem to deal well with rsvg-convert v2.52.5, so queued.
> > Especially given that I was having difficulty with inkscape's conversions
> > to PDF for another document.  I overcame these (I kid you not!) by
> > hand-editing one of perfbook's .svg files.
> 
> Hmm...
> 
> I remember hand-editing defer/RCUusecases.svg.  Let me see ...
> 
> Yes, it was commit 25238915b129 ("defer: Retouch SVG files for browser
> compatibility (2nd attempt)").
> 
> Which perfbook's SVG file did you need to hand-edit?

They were {co,fr,rf}.svg in the memorder directory.

But first, I should hasten to add that there is a good chance that
I was confused and used the wrong inkscape command-line arguments
and environment variables, as opposed to having -really- needed to
hand-edit the document.  I used my usual lazy approach of sticking
with the first thing that gave reasonable results instead of carefully
analyzing the problem.  In this case, that was hand-edit the .svg files
in the perfbook directory, use perfbook's "make" to generate the .pdfs,
and move the .pdfs to the other document's directory.

So it is just as likely to be me being confused as it is that the files
themselves have any real problem.

							Thanx, Paul

>         Thanks, Akira
> 
> 
> > 
> > So thank you very much!
> > 
> > Again, queued, and I will be pushing this out shortly.
> > 
> > 							Thanx, Paul
> > 
> >>         Thanks, Akira
> >> --
> >> Akira Yokosawa (8):
> >>   Makefile: Add rules to use rsvg-convert for SVG --> PDF conversion
> >>   Makefile: Don't use rsvg-convert < 2.57
> >>   Makefile: Allow rsvg-convert 2.52
> >>   Makefile: Use rsvg-convert anyway if no inkscape is found
> >>   cartoons: Retouch r-2014-Memory-barrier.svg
> >>   FAQ-BUILD: List package for rsvg-convert in package lists
> >>   docker: Add packages for rsvg-convert
> >>   gitlab-ci.yml: Install librsvg instead of inkscape
> >>
> >>  FAQ-BUILD.txt                      |   23 +-
> >>  Makefile                           |   48 +-
> >>  cartoons/r-2023-Memory-barrier.svg | 1130 ++++++++++++++++++++++++++++
> >>  cpu/overview.tex                   |    2 +-
> >>  docker/Dockerfile                  |    4 +-
> >>  docker/Dockerfile.fedora           |    7 +-
> >>  utilities/gitlab-ci.yml            |    2 +-
> >>  7 files changed, 1198 insertions(+), 18 deletions(-)
> >>  create mode 100644 cartoons/r-2023-Memory-barrier.svg
> >>
> >>
> >> base-commit: 1ea46c6d43475fbdf97404dec28a58036d505bc3
> >> -- 
> >> 2.34.1
> >>
> >>
> > 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape
  2024-01-05  9:58 ` [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape Akira Yokosawa
@ 2024-01-05 21:39   ` Leonardo Brás
  2024-01-06  1:15     ` Akira Yokosawa
  0 siblings, 1 reply; 16+ messages in thread
From: Leonardo Brás @ 2024-01-05 21:39 UTC (permalink / raw)
  To: Akira Yokosawa, Paul E. McKenney; +Cc: perfbook

On Fri, 2024-01-05 at 18:58 +0900, Akira Yokosawa wrote:
> On Arch Linux, rsvg-convert is provided in the librsvg package.
> Install it instead of inkscape.
> 
> Using rsvg-convert can shorten runtime of CI job for building PDFs
> a bit.
> 
> Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
> Cc: Leonardo Bras <leobras.c@gmail.com>
> ---

Hello Akira, 

I used the leobras-ci branch from gitlab/linux_kernel/perfbook to test your
patchset: 
https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547

It generated the pdf successfully, could you check if the images were generated
correctly?
https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547/artifacts/browse

> Needs an explicit ACK or Tested-by from Leo.
> Expected order of reduction of build time:  ~10s
> 
>  utilities/gitlab-ci.yml | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/utilities/gitlab-ci.yml b/utilities/gitlab-ci.yml
> index bcda8712..17525fb4 100644
> --- a/utilities/gitlab-ci.yml
> +++ b/utilities/gitlab-ci.yml
> @@ -19,7 +19,7 @@ generate_pdfs:
>      stage: build
>  
>      before_script:
> -        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz inkscape wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
> +        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz librsvg wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation

so s/inkscape/librsvg/ right? 

It's fine by me.

Thanks!
Leo

>          - mkdir -p ~/.local/share/fonts && cp fonts/steel-city-comic.regular.ttf ~/.local/share/fonts/ && fc-cache
>  
>      script:


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape
  2024-01-05 21:39   ` Leonardo Brás
@ 2024-01-06  1:15     ` Akira Yokosawa
  2024-01-06  3:37       ` Leonardo Brás
  0 siblings, 1 reply; 16+ messages in thread
From: Akira Yokosawa @ 2024-01-06  1:15 UTC (permalink / raw)
  To: Leonardo Brás; +Cc: perfbook, Paul E. McKenney, Akira Yokosawa

Hi Leo,

On Fri, 05 Jan 2024 18:39:15 -0300, Leonardo Brás wrote:
> On Fri, 2024-01-05 at 18:58 +0900, Akira Yokosawa wrote:
>> On Arch Linux, rsvg-convert is provided in the librsvg package.
>> Install it instead of inkscape.
>>
>> Using rsvg-convert can shorten runtime of CI job for building PDFs
>> a bit.
>>
>> Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
>> Cc: Leonardo Bras <leobras.c@gmail.com>
>> ---
> 
> Hello Akira, 
> 
> I used the leobras-ci branch from gitlab/linux_kernel/perfbook to test your
> patchset: 
> https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547

Thank you for taking the time!

> 
> It generated the pdf successfully, could you check if the images were generated
> correctly?
> https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547/artifacts/browse

Looks good to me.

> 
>> Needs an explicit ACK or Tested-by from Leo.
>> Expected order of reduction of build time:  ~10s

And the job took 11m53s.
Previous runs: 13m29s, 12m57s, 13m50s, 13m45s, 12m26s ...
Not installing inkscape should also help reduce the time.

>>
>>  utilities/gitlab-ci.yml | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/utilities/gitlab-ci.yml b/utilities/gitlab-ci.yml
>> index bcda8712..17525fb4 100644
>> --- a/utilities/gitlab-ci.yml
>> +++ b/utilities/gitlab-ci.yml
>> @@ -19,7 +19,7 @@ generate_pdfs:
>>      stage: build
>>  
>>      before_script:
>> -        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz inkscape wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
>> +        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz librsvg wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
> 
> so s/inkscape/librsvg/ right? 

Yes.

> 
> It's fine by me.

May I take that as your Acked-by: ?

        Thanks, Akira

> 
> Thanks!
> Leo
> 
>>          - mkdir -p ~/.local/share/fonts && cp fonts/steel-city-comic.regular.ttf ~/.local/share/fonts/ && fc-cache
>>  
>>      script:
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape
  2024-01-06  1:15     ` Akira Yokosawa
@ 2024-01-06  3:37       ` Leonardo Brás
  2024-01-07 21:17         ` Paul E. McKenney
  0 siblings, 1 reply; 16+ messages in thread
From: Leonardo Brás @ 2024-01-06  3:37 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: perfbook, Paul E. McKenney

On Sat, 2024-01-06 at 10:15 +0900, Akira Yokosawa wrote:
> Hi Leo,
> 
> On Fri, 05 Jan 2024 18:39:15 -0300, Leonardo Brás wrote:
> > On Fri, 2024-01-05 at 18:58 +0900, Akira Yokosawa wrote:
> > > On Arch Linux, rsvg-convert is provided in the librsvg package.
> > > Install it instead of inkscape.
> > > 
> > > Using rsvg-convert can shorten runtime of CI job for building PDFs
> > > a bit.
> > > 
> > > Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
> > > Cc: Leonardo Bras <leobras.c@gmail.com>
> > > ---
> > 
> > Hello Akira, 
> > 
> > I used the leobras-ci branch from gitlab/linux_kernel/perfbook to test your
> > patchset: 
> > https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547
> 
> Thank you for taking the time!
> 
> > 
> > It generated the pdf successfully, could you check if the images were generated
> > correctly?
> > https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547/artifacts/browse
> 
> Looks good to me.
> 

Amazing! so
Tested-by: Leonardo Bras <leobras.c@gmail.com>

> > 
> > > Needs an explicit ACK or Tested-by from Leo.
> > > Expected order of reduction of build time:  ~10s
> 
> And the job took 11m53s.
> Previous runs: 13m29s, 12m57s, 13m50s, 13m45s, 12m26s ...
> Not installing inkscape should also help reduce the time.
> 

Yeah, it's a pretty big suite, you are most probably correct.

> > > 
> > >  utilities/gitlab-ci.yml | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/utilities/gitlab-ci.yml b/utilities/gitlab-ci.yml
> > > index bcda8712..17525fb4 100644
> > > --- a/utilities/gitlab-ci.yml
> > > +++ b/utilities/gitlab-ci.yml
> > > @@ -19,7 +19,7 @@ generate_pdfs:
> > >      stage: build
> > >  
> > >      before_script:
> > > -        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz inkscape wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
> > > +        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz librsvg wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
> > 
> > so s/inkscape/librsvg/ right? 
> 
> Yes.
> 
> > 
> > It's fine by me.
> 
> May I take that as your Acked-by: ?
> 

Sure:

Acked-by: Leonardo Bras <leobras.c@gmail.com>


>         Thanks, Akira
> 

Thank you!
Leo

> > 
> > Thanks!
> > Leo
> > 
> > >          - mkdir -p ~/.local/share/fonts && cp fonts/steel-city-comic.regular.ttf ~/.local/share/fonts/ && fc-cache
> > >  
> > >      script:
> > 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape
  2024-01-06  3:37       ` Leonardo Brás
@ 2024-01-07 21:17         ` Paul E. McKenney
  0 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2024-01-07 21:17 UTC (permalink / raw)
  To: Leonardo Brás; +Cc: Akira Yokosawa, perfbook

On Sat, Jan 06, 2024 at 12:37:38AM -0300, Leonardo Brás wrote:
> On Sat, 2024-01-06 at 10:15 +0900, Akira Yokosawa wrote:
> > Hi Leo,
> > 
> > On Fri, 05 Jan 2024 18:39:15 -0300, Leonardo Brás wrote:
> > > On Fri, 2024-01-05 at 18:58 +0900, Akira Yokosawa wrote:
> > > > On Arch Linux, rsvg-convert is provided in the librsvg package.
> > > > Install it instead of inkscape.
> > > > 
> > > > Using rsvg-convert can shorten runtime of CI job for building PDFs
> > > > a bit.
> > > > 
> > > > Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
> > > > Cc: Leonardo Bras <leobras.c@gmail.com>
> > > > ---
> > > 
> > > Hello Akira, 
> > > 
> > > I used the leobras-ci branch from gitlab/linux_kernel/perfbook to test your
> > > patchset: 
> > > https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547
> > 
> > Thank you for taking the time!
> > 
> > > 
> > > It generated the pdf successfully, could you check if the images were generated
> > > correctly?
> > > https://gitlab.com/linux-kernel/perfbook/-/jobs/5872530547/artifacts/browse
> > 
> > Looks good to me.
> > 
> 
> Amazing! so
> Tested-by: Leonardo Bras <leobras.c@gmail.com>
> 
> > > 
> > > > Needs an explicit ACK or Tested-by from Leo.
> > > > Expected order of reduction of build time:  ~10s
> > 
> > And the job took 11m53s.
> > Previous runs: 13m29s, 12m57s, 13m50s, 13m45s, 12m26s ...
> > Not installing inkscape should also help reduce the time.
> > 
> 
> Yeah, it's a pretty big suite, you are most probably correct.
> 
> > > > 
> > > >  utilities/gitlab-ci.yml | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > 
> > > > diff --git a/utilities/gitlab-ci.yml b/utilities/gitlab-ci.yml
> > > > index bcda8712..17525fb4 100644
> > > > --- a/utilities/gitlab-ci.yml
> > > > +++ b/utilities/gitlab-ci.yml
> > > > @@ -19,7 +19,7 @@ generate_pdfs:
> > > >      stage: build
> > > >  
> > > >      before_script:
> > > > -        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz inkscape wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
> > > > +        - pacman --noconfirm -Syu texlive-meta fig2dev ghostscript graphviz librsvg wget make which fontconfig git ttf-dejavu gnu-free-fonts ttf-liberation
> > > 
> > > so s/inkscape/librsvg/ right? 
> > 
> > Yes.
> > 
> > > 
> > > It's fine by me.
> > 
> > May I take that as your Acked-by: ?
> > 
> 
> Sure:
> 
> Acked-by: Leonardo Bras <leobras.c@gmail.com>

Applied both, thank you!

							Thanx, Paul

> 
> >         Thanks, Akira
> > 
> 
> Thank you!
> Leo
> 
> > > 
> > > Thanks!
> > > Leo
> > > 
> > > >          - mkdir -p ~/.local/share/fonts && cp fonts/steel-city-comic.regular.ttf ~/.local/share/fonts/ && fc-cache
> > > >  
> > > >      script:
> > > 
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2024-01-07 21:17 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-05  9:44 [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Akira Yokosawa
2024-01-05  9:47 ` Akira Yokosawa
2024-01-05  9:50 ` [PATCH -perfbook 2/8] Makefile: Don't use rsvg-convert < 2.57 Akira Yokosawa
2024-01-05  9:52 ` [PATCH -perfbook 3/8] Makefile: Allow rsvg-convert 2.52 Akira Yokosawa
2024-01-05  9:53 ` [PATCH -perfbook 4/8] Makefile: Use rsvg-convert anyway if no inkscape is found Akira Yokosawa
2024-01-05  9:54 ` [PATCH -perfbook 5/8] cartoons: Retouch r-2014-Memory-barrier.svg Akira Yokosawa
2024-01-05  9:55 ` [PATCH -perfbook 6/8] FAQ-BUILD: List package for rsvg-convert in package lists Akira Yokosawa
2024-01-05  9:57 ` [PATCH -perfbook 7/8] docker: Add packages for rsvg-convert Akira Yokosawa
2024-01-05  9:58 ` [PATCH -perfbook 8/8] gitlab-ci.yml: Install librsvg instead of inkscape Akira Yokosawa
2024-01-05 21:39   ` Leonardo Brás
2024-01-06  1:15     ` Akira Yokosawa
2024-01-06  3:37       ` Leonardo Brás
2024-01-07 21:17         ` Paul E. McKenney
2024-01-05 13:31 ` [PATCH -perfbook 0/8] Use rsvg-convert for SVG --> PDF conversion Paul E. McKenney
2024-01-05 14:51   ` Akira Yokosawa
2024-01-05 15:32     ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).