Very cut-down NDCODE site to use as basis for personal site
authorNick Downing <nick@ndcode.org>
Mon, 31 Jan 2022 05:14:43 +0000 (16:14 +1100)
committerNick Downing <nick@ndcode.org>
Sat, 12 Feb 2022 01:52:57 +0000 (12:52 +1100)
204 files changed:
.gitignore [new file with mode: 0644]
_config/Problem.mjs [new file with mode: 0644]
_config/Session.mjs [new file with mode: 0644]
_config/get.mjs [new file with mode: 0755]
_config/globals.json [new file with mode: 0644]
_config/n.sh [new file with mode: 0755]
_config/navigation.json [new file with mode: 0644]
_config/nodemailers.json [new file with mode: 0644]
_config/server.jst [new file with mode: 0644]
_config/set.mjs [new file with mode: 0755]
_config/sign_in.mjs [new file with mode: 0755]
_config/sign_out.mjs [new file with mode: 0755]
_config/site.jst [new file with mode: 0644]
_favicon/favicons.html [new file with mode: 0644]
_favicon/favicons.zip [new file with mode: 0644]
_lib/blog_post.jst [new file with mode: 0644]
_lib/breadcrumbs.jst [new file with mode: 0644]
_lib/get_account.jst [new file with mode: 0644]
_lib/get_navigation.jst [new file with mode: 0644]
_lib/get_nodemailer.jst [new file with mode: 0644]
_lib/get_placeholder.jst [new file with mode: 0644]
_lib/get_session.jst [new file with mode: 0644]
_lib/navbar.jst [new file with mode: 0644]
_lib/page.jst [new file with mode: 0644]
_lib/post_request.jst [new file with mode: 0644]
_placeholder/data.json [new file with mode: 0644]
_ssl/ca.conf [new file with mode: 0644]
_ssl/ca_cert.pem [new file with mode: 0644]
_ssl/ca_cert.srl [new file with mode: 0644]
_ssl/ca_key.pem [new file with mode: 0644]
_ssl/localhost.conf [new file with mode: 0644]
_ssl/localhost_cert.pem [new file with mode: 0644]
_ssl/localhost_cert_bundle.pem [new file with mode: 0644]
_ssl/localhost_csr.pem [new file with mode: 0644]
_ssl/localhost_ext.conf [new file with mode: 0644]
_ssl/localhost_key.pem [new file with mode: 0644]
_ssl/n.sh [new file with mode: 0755]
_svg/fa_arrow-circle-left.svg [new file with mode: 0644]
_svg/fa_check-circle.svg [new file with mode: 0644]
_svg/fa_cloud-upload-alt.svg [new file with mode: 0644]
_svg/fa_envelope.svg [new file with mode: 0644]
_svg/fa_redo.svg [new file with mode: 0644]
_svg/fa_search.svg [new file with mode: 0644]
_svg/fa_times-circle.svg [new file with mode: 0644]
_svg/fa_trash.svg [new file with mode: 0644]
_svg/fa_unlock-alt.svg [new file with mode: 0644]
_svg/fa_user-check.svg [new file with mode: 0644]
_svg/fa_user-edit.svg [new file with mode: 0644]
_svg/fa_user-plus.svg [new file with mode: 0644]
_svg/icon_cross.svg [new file with mode: 0644]
_svg/icon_password_reset.svg [new file with mode: 0644]
_svg/icon_sign_up.svg [new file with mode: 0644]
_svg/icon_tick.svg [new file with mode: 0644]
_svg/logo_large.svg [new file with mode: 0644]
_zet/index.sh [new file with mode: 0755]
api/account/change_details/get.json.jst [new file with mode: 0644]
api/account/change_details/get_draft.json.jst [new file with mode: 0644]
api/account/change_details/set.json.jst [new file with mode: 0644]
api/account/change_details/set_draft.json.jst [new file with mode: 0644]
api/account/change_password.json.jst [new file with mode: 0644]
api/account/password_reset.json.jst [new file with mode: 0644]
api/account/send_email_verification_link.json.jst [new file with mode: 0644]
api/account/sign_in.json.jst [new file with mode: 0644]
api/account/sign_out.json.jst [new file with mode: 0644]
api/account/sign_up/create_account.json.jst [new file with mode: 0644]
api/account/sign_up/get_draft.json.jst [new file with mode: 0644]
api/account/sign_up/set_draft.json.jst [new file with mode: 0644]
api/account/verify_email.json.jst [new file with mode: 0644]
api/account/verify_password.json.jst [new file with mode: 0644]
api/contact/get_draft.json.jst [new file with mode: 0644]
api/contact/send_enquiry.json.jst [new file with mode: 0644]
api/contact/set_draft.json.jst [new file with mode: 0644]
api/errors.json [new file with mode: 0644]
api/feedback/get_draft.json.jst [new file with mode: 0644]
api/feedback/send_message.json.jst [new file with mode: 0644]
api/feedback/set_draft.json.jst [new file with mode: 0644]
api/globals/get.json.jst [new file with mode: 0644]
api/globals/set.json.jst [new file with mode: 0644]
api/navigation/get.json.jst [new file with mode: 0644]
api/navigation/set.json.jst [new file with mode: 0644]
api/nodemailers/get.json.jst [new file with mode: 0644]
api/nodemailers/set.json.jst [new file with mode: 0644]
api/verification_image.png.jst [new file with mode: 0644]
blog/20220131/_render/gears.FCStd [new file with mode: 0644]
blog/20220131/_render/gears2.FCStd [new file with mode: 0644]
blog/20220131/_render/gears2.pov [new file with mode: 0644]
blog/20220131/_render/gears2_256x171.jpg [new file with mode: 0644]
blog/20220131/_render/gears2_256x171.png [new file with mode: 0644]
blog/20220131/_render/gears2_768x512.jpg [new file with mode: 0644]
blog/20220131/_render/gears2_768x512.png [new file with mode: 0644]
blog/20220131/_render/n.sh [new file with mode: 0755]
blog/20220131/a [new file with mode: 0644]
blog/20220131/fa_server.svg [new file with mode: 0644]
blog/20220131/factors.py [new file with mode: 0755]
blog/20220131/image.svg [new file with mode: 0644]
blog/20220131/index.html.jst [new file with mode: 0644]
blog/20220131/pips.svg [new file with mode: 0644]
blog/20220131/thumbnail.svg [new file with mode: 0644]
blog/index.html.jst [new file with mode: 0644]
contact/index.html.jst [new file with mode: 0644]
css/bootstrap/_alert.scss [new file with mode: 0644]
css/bootstrap/_badge.scss [new file with mode: 0644]
css/bootstrap/_breadcrumb.scss [new file with mode: 0644]
css/bootstrap/_button-group.scss [new file with mode: 0644]
css/bootstrap/_buttons.scss [new file with mode: 0644]
css/bootstrap/_card.scss [new file with mode: 0644]
css/bootstrap/_carousel.scss [new file with mode: 0644]
css/bootstrap/_close.scss [new file with mode: 0644]
css/bootstrap/_code.scss [new file with mode: 0644]
css/bootstrap/_custom-forms.scss [new file with mode: 0644]
css/bootstrap/_custom.scss [new file with mode: 0644]
css/bootstrap/_dropdown.scss [new file with mode: 0644]
css/bootstrap/_forms.scss [new file with mode: 0644]
css/bootstrap/_functions.scss [new file with mode: 0644]
css/bootstrap/_grid.scss [new file with mode: 0644]
css/bootstrap/_images.scss [new file with mode: 0644]
css/bootstrap/_input-group.scss [new file with mode: 0644]
css/bootstrap/_jumbotron.scss [new file with mode: 0644]
css/bootstrap/_list-group.scss [new file with mode: 0644]
css/bootstrap/_media.scss [new file with mode: 0644]
css/bootstrap/_mixins.scss [new file with mode: 0644]
css/bootstrap/_modal.scss [new file with mode: 0644]
css/bootstrap/_nav.scss [new file with mode: 0644]
css/bootstrap/_navbar.scss [new file with mode: 0644]
css/bootstrap/_pagination.scss [new file with mode: 0644]
css/bootstrap/_popover.scss [new file with mode: 0644]
css/bootstrap/_print.scss [new file with mode: 0644]
css/bootstrap/_progress.scss [new file with mode: 0644]
css/bootstrap/_reboot.scss [new file with mode: 0644]
css/bootstrap/_root.scss [new file with mode: 0644]
css/bootstrap/_spinners.scss [new file with mode: 0644]
css/bootstrap/_tables.scss [new file with mode: 0644]
css/bootstrap/_toasts.scss [new file with mode: 0644]
css/bootstrap/_tooltip.scss [new file with mode: 0644]
css/bootstrap/_transitions.scss [new file with mode: 0644]
css/bootstrap/_type.scss [new file with mode: 0644]
css/bootstrap/_utilities.scss [new file with mode: 0644]
css/bootstrap/_variables.scss [new file with mode: 0644]
css/bootstrap/bootstrap-grid.css.scss [new file with mode: 0644]
css/bootstrap/bootstrap-reboot.css.scss [new file with mode: 0644]
css/bootstrap/bootstrap.css.scss [new file with mode: 0644]
css/bootstrap/mixins/_alert.scss [new file with mode: 0644]
css/bootstrap/mixins/_background-variant.scss [new file with mode: 0644]
css/bootstrap/mixins/_badge.scss [new file with mode: 0644]
css/bootstrap/mixins/_border-radius.scss [new file with mode: 0644]
css/bootstrap/mixins/_box-shadow.scss [new file with mode: 0644]
css/bootstrap/mixins/_breakpoints.scss [new file with mode: 0644]
css/bootstrap/mixins/_buttons.scss [new file with mode: 0644]
css/bootstrap/mixins/_caret.scss [new file with mode: 0644]
css/bootstrap/mixins/_clearfix.scss [new file with mode: 0644]
css/bootstrap/mixins/_deprecate.scss [new file with mode: 0644]
css/bootstrap/mixins/_float.scss [new file with mode: 0644]
css/bootstrap/mixins/_forms.scss [new file with mode: 0644]
css/bootstrap/mixins/_gradients.scss [new file with mode: 0644]
css/bootstrap/mixins/_grid-framework.scss [new file with mode: 0644]
css/bootstrap/mixins/_grid.scss [new file with mode: 0644]
css/bootstrap/mixins/_hover.scss [new file with mode: 0644]
css/bootstrap/mixins/_image.scss [new file with mode: 0644]
css/bootstrap/mixins/_list-group.scss [new file with mode: 0644]
css/bootstrap/mixins/_lists.scss [new file with mode: 0644]
css/bootstrap/mixins/_nav-divider.scss [new file with mode: 0644]
css/bootstrap/mixins/_pagination.scss [new file with mode: 0644]
css/bootstrap/mixins/_reset-text.scss [new file with mode: 0644]
css/bootstrap/mixins/_resize.scss [new file with mode: 0644]
css/bootstrap/mixins/_screen-reader.scss [new file with mode: 0644]
css/bootstrap/mixins/_size.scss [new file with mode: 0644]
css/bootstrap/mixins/_table-row.scss [new file with mode: 0644]
css/bootstrap/mixins/_text-emphasis.scss [new file with mode: 0644]
css/bootstrap/mixins/_text-hide.scss [new file with mode: 0644]
css/bootstrap/mixins/_text-truncate.scss [new file with mode: 0644]
css/bootstrap/mixins/_transition.scss [new file with mode: 0644]
css/bootstrap/mixins/_visibility.scss [new file with mode: 0644]
css/bootstrap/utilities/_align.scss [new file with mode: 0644]
css/bootstrap/utilities/_background.scss [new file with mode: 0644]
css/bootstrap/utilities/_borders.scss [new file with mode: 0644]
css/bootstrap/utilities/_clearfix.scss [new file with mode: 0644]
css/bootstrap/utilities/_display.scss [new file with mode: 0644]
css/bootstrap/utilities/_embed.scss [new file with mode: 0644]
css/bootstrap/utilities/_flex.scss [new file with mode: 0644]
css/bootstrap/utilities/_float.scss [new file with mode: 0644]
css/bootstrap/utilities/_interactions.scss [new file with mode: 0644]
css/bootstrap/utilities/_overflow.scss [new file with mode: 0644]
css/bootstrap/utilities/_position.scss [new file with mode: 0644]
css/bootstrap/utilities/_screenreaders.scss [new file with mode: 0644]
css/bootstrap/utilities/_shadows.scss [new file with mode: 0644]
css/bootstrap/utilities/_sizing.scss [new file with mode: 0644]
css/bootstrap/utilities/_spacing.scss [new file with mode: 0644]
css/bootstrap/utilities/_stretched-link.scss [new file with mode: 0644]
css/bootstrap/utilities/_text.scss [new file with mode: 0644]
css/bootstrap/utilities/_visibility.scss [new file with mode: 0644]
css/bootstrap/vendor/_rfs.scss [new file with mode: 0644]
ids.sh [new file with mode: 0755]
images/by-sa_3.0_88x31.png [new file with mode: 0644]
index.html.jst [new file with mode: 0644]
js/utils.js.min [new file with mode: 0644]
link.sh [new file with mode: 0755]
my_account/index.html.jst [new file with mode: 0644]
my_account/password_reset/index.html.jst [new file with mode: 0644]
my_account/send_verification_email/index.html.jst [new file with mode: 0644]
my_account/sign_up/index.html.jst [new file with mode: 0644]
my_account/verify_email/index.html.jst [new file with mode: 0644]
my_account/verify_password/index.html.jst [new file with mode: 0644]
package.json [new file with mode: 0644]
search/index.html.jst [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..99a87d2
--- /dev/null
@@ -0,0 +1,19 @@
+.*.deps
+.*.html
+.*.json
+.*.jst
+.*.less
+.*.min
+.*.sass
+.*.scss
+.*.svg
+/_config/session.json
+/_placeholder/node_modules
+/_placeholder/package-lock.json
+/_zet/site.*
+/blog/20220128/_render/*.jpg
+/blog/20220128/_render/*.png
+/database.logjson
+/database.logjson.*
+/node_modules
+/package-lock.json
diff --git a/_config/Problem.mjs b/_config/Problem.mjs
new file mode 100644 (file)
index 0000000..170b735
--- /dev/null
@@ -0,0 +1,23 @@
+class Problem {
+  constructor(title, detail, status) {
+    this.title = title
+    this.detail = detail
+    this.status = status
+  }
+
+  // note: Javascript errors return status 400 (Bad request) in the client
+  // version of Problem, 500 (Internal server error) in the server version
+  static from(error) {
+    return (
+      error instanceof Problem ?
+        error :
+        new Problem(
+          'Bad request',
+          (error.stack || error.message),
+          400
+        )
+    )
+  }
+}
+
+export default Problem
diff --git a/_config/Session.mjs b/_config/Session.mjs
new file mode 100644 (file)
index 0000000..b8ef0a3
--- /dev/null
@@ -0,0 +1,185 @@
+import assert from 'assert'
+import fsPromises from 'fs/promises'
+import http from 'http'
+import https from 'https'
+import stream_buffers from 'stream-buffers'
+import Problem from './Problem.mjs'
+import XDate from 'xdate'
+
+class Session {
+  constructor(path) {
+    this.path = path
+    this.persistent = {url: 'http://localhost:8080', cookies: {}}
+  }
+
+  async load() {
+    let buffer
+    try {
+      buffer = await fsPromises.readFile(this.path)
+    }
+    catch (error) {
+      if (error.code !== 'ENOENT')
+        throw error
+
+      try {
+        await fsPromises.rename(this.path + '.new', this.path)
+      }
+      catch (error1) {
+        throw error // ENOENT will make more sense to the user
+      }
+
+      buffer = await fsPromises.readFile(this.path)
+    }
+    this.persistent = JSON.parse(buffer.toString('utf-8'))
+  }
+
+  async save() {
+    await fsPromises.writeFile(
+      this.path + '.new',
+      Buffer.from(JSON.stringify(this.persistent, null, 2) + '\n', 'utf-8')
+    )
+    try {
+      await fsPromises.unlink(this.path)
+    }
+    catch (error) {
+      if (error.code !== 'ENOENT')
+        throw error
+    }
+    await fsPromises.rename(this.path + '.new', this.path)
+  }
+
+  async api_call(endpoint, ...args) {
+    let url = new URL(this.persistent.url + endpoint)
+
+    let http_or_https, default_port
+    if (url.protocol === 'https:') {
+      http_or_https = https
+      default_port = 443
+    }
+    else {
+      http_or_https = http
+      default_port = 80
+    }
+
+    let buffer = Buffer.from(
+      JSON.stringify(args) + '\n',
+      'utf-8'
+    )
+
+    let headers = {
+      'Content-Type': 'application/json',
+      'Content-Length': buffer.length
+    }
+
+    let cookies = []
+    let now = XDate.now()
+    for (let i in this.persistent.cookies) {
+      let cookie = this.persistent.cookies[i]
+
+      let expires = cookie.expires
+      if (expires !== undefined && now >= new XDate(expires).getTime())
+        continue
+
+      let path = cookie.path
+      if (path !== undefined) {
+        if (path.slice(-1) != '/')
+          path += '/'
+        if (url.pathname.slice(0, path.length) !== path)
+          continue
+      }
+
+      cookies.push(`${i}=${cookie.value}`)
+    }
+    if (cookies.length)
+      headers.Cookie = cookies.join(', ')
+
+    let response = await new Promise(
+      (resolve, reject) => {
+        let request = http_or_https.request(
+          {
+            hostname: url.hostname,
+            port: url.port.length === 0 ? default_port : parseInt(url.port),
+            path: url.pathname,
+            method: 'POST',
+            headers: headers
+          },
+          response => {resolve(response)}
+        )
+        request.on('error', error => {reject(error)})
+        request.write(buffer)
+        request.end()
+      }
+    )
+
+    let response_cookies = response.headers['set-cookie'] || []
+    for (let i = 0; i < response_cookies.length; ++i) {
+      let fields = response_cookies[i].split(';')
+      assert(fields.length >= 1)
+
+      let j = fields[0].indexOf('=')
+      assert(j >= 0)
+      let name = fields[0].slice(0, j).trim()
+      let value = fields[0].slice(j + 1).trim()
+      if (
+        value.length >= 2 &&
+        value.charAt(0) === 0x22 &&
+          value.charAt(value.length - 1) === 0x22
+      )
+        value = value.slice(1, -1)
+      let attrs = {value}
+
+      for (/*let*/ j = 1; j < fields.length; ++j) {
+        let k = fields[j].indexOf('=')
+        let attr/*, value*/
+        if (k >= 0) {
+          attr = fields[j].slice(0, k).trim()
+          value = fields[j].slice(k + 1).trim()
+        }
+        else {
+          attr = fields[j].trim()
+          if (attr.length === 0)
+            continue
+          value = null
+        }
+        attr = attr.toLowerCase()
+        assert(
+          attr === 'expires' ||
+            attr === 'max-age' ||
+            attr === 'domain' ||
+            attr === 'path' ||
+            attr === 'secure' ||
+            attr === 'httponly' ||
+            attr === 'samesite'
+        ) // cannot be 'value'
+        attrs[attr] = value
+      }
+
+      let max_age = attrs['max-age']
+      if (max_age !== undefined) {
+        let expires = new XDate()
+        expires.addSeconds(parseInt(max_age))
+        attrs['expires'] = expires.toUTCString()
+        delete attrs['max-age']
+      }
+
+      this.persistent.cookies[name] = attrs
+    }
+
+    let write_stream = new stream_buffers.WritableStreamBuffer()
+    let data = new Promise(
+      (resolve, reject) => {
+        write_stream.
+        on('finish', () => {resolve(write_stream.getContents())}).
+        on('error', () => {reject()})
+      }
+    )
+    response.pipe(write_stream)
+
+    let result = JSON.parse((await data).toString('utf-8'))
+    if (response.statusCode < 200 || response.statusCode >= 300)
+      throw new Problem(result.title, result.detail, result.status)
+    return result
+  }
+}
+
+export default Session
diff --git a/_config/get.mjs b/_config/get.mjs
new file mode 100755 (executable)
index 0000000..1a0e95d
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env node
+
+import stream_buffers from 'stream-buffers'
+import Problem from './Problem.mjs'
+import Session from './Session.mjs'
+
+if (process.argv.length < 3) {
+  console.log(
+    `usage: ${process.argv[0]} ${process.argv[1]} endpoint [args]`
+  )
+  process.exit(1)
+}
+let endpoint = process.argv[2]
+let args = []
+for (let i = 3; i < process.argv.length; ++i)
+  args.push(JSON.parse(process.argv[i]))
+
+let session = new Session('session.json')
+await session.load()
+
+let result
+try {
+  result = await session.api_call(endpoint, ...args)
+}
+catch (error) {
+  let problem = Problem.from(error)
+  console.error('problem:')
+  console.error('  title:', problem.title)
+  console.error('  detail:', problem.detail)
+  console.error('  status:', problem.status)
+
+  await session.save()
+  process.exit(1)
+}
+process.stdout.write(JSON.stringify(result, null, 2) + '\n')
+
+await session.save()
diff --git a/_config/globals.json b/_config/globals.json
new file mode 100644 (file)
index 0000000..798870f
--- /dev/null
@@ -0,0 +1,11 @@
+{
+  "site_url": "https://www.ndcode.org",
+  "site_title": "NDCODE",
+  "contact_from": "NDCODE contact <contact@ndcode.org>",
+  "contact_to": "Nick Downing <nick@ndcode.org>",
+  "feedback_from": "NDCODE feedback <feedback@ndcode.org>",
+  "feedback_to": "Nick Downing <nick@ndcode.org>",
+  "noreply_from": "NDCODE <noreply@ndcode.org>",
+  "noreply_signature": "NDCODE Team",
+  "copyright": "Integration Logic Pty Ltd trading as NDCODE and contributors"
+}
diff --git a/_config/n.sh b/_config/n.sh
new file mode 100755 (executable)
index 0000000..b89228d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+./set.mjs /api/globals/set.json <globals.json
+./set.mjs /api/nodemailers/set.json <nodemailers.json
+./set.mjs /api/navigation/set.json <navigation.json
diff --git a/_config/navigation.json b/_config/navigation.json
new file mode 100644 (file)
index 0000000..b3f374c
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "title": "Home",
+  "children": {
+    "blog": {
+      "title": "Blog",
+      "children": {
+        "20220131": {
+          "title": "31/01/2022",
+          "children": {},
+          "menu": [],
+          "description": "Numeracy, literacy",
+          "author": "Nick Downing",
+          "image": "image.svg",
+          "thumbnail": "thumbnail.svg"
+        }
+      },
+      "menu": [
+        "20220131"
+      ]
+    },
+    "contact": {
+      "title": "Contact",
+      "children": {},
+      "menu": []
+    },
+    "my_account": {
+      "title": "My account",
+      "children": {
+        "sign_up": {
+          "title": "Sign up",
+          "children": {},
+          "menu": [],
+          "icon": "/_svg/icon_sign_up.svg"
+        },
+        "send_verification_email": {
+          "title": "Send verification email",
+          "children": {},
+          "menu": []
+        },
+        "verify_email": {
+          "title": "Verify email",
+          "children": {},
+          "menu": []
+        },
+        "password_reset": {
+          "title": "Password reset",
+          "children": {},
+          "menu": [],
+          "icon": "/_svg/icon_password_reset.svg"
+        },
+        "verify_password": {
+          "title": "Verify password",
+          "children": {},
+          "menu": []
+        }
+      },
+      "menu": [
+        "sign_up",
+        "password_reset"
+      ]
+    },
+    "search": {
+      "title": "Search",
+      "children": {},
+      "menu": []
+    }
+  },
+  "menu": [
+    "blog",
+    "contact",
+    "my_account"
+  ]
+}
diff --git a/_config/nodemailers.json b/_config/nodemailers.json
new file mode 100644 (file)
index 0000000..ca93c17
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "contact": {
+    "host": "mail.ndcode.org",
+    "port": 587,
+    "secure": false,
+    "auth": {
+      "user": "contact@ndcode.org",
+      "pass": "XXXContact12"
+    },
+    "requireTLS": true
+  },
+  "feedback": {
+    "host": "mail.ndcode.org",
+    "port": 587,
+    "secure": false,
+    "auth": {
+      "user": "feedback@ndcode.org",
+      "pass": "XXXFeedback12"
+    },
+    "requireTLS": true
+  },
+  "noreply": {
+    "host": "mail.ndcode.org",
+    "port": 587,
+    "secure": false,
+    "auth": {
+      "user": "noreply@ndcode.org",
+      "pass": "XXXNoreply12"
+    },
+    "requireTLS": true
+  }
+}
diff --git a/_config/server.jst b/_config/server.jst
new file mode 100644 (file)
index 0000000..f0cd853
--- /dev/null
@@ -0,0 +1,18 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async (resources, prev_server) => new jst_server.Server(
+  resources,
+  {
+    hosts: {
+      'localhost': {
+        type: 'site',
+        root: '.'
+      },
+      'localhost.localdomain': {
+        type: 'redirect',
+        host: 'localhost'
+      }
+    }
+  },
+  prev_server
+)
diff --git a/_config/set.mjs b/_config/set.mjs
new file mode 100755 (executable)
index 0000000..cf8c4dc
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/env node
+
+import stream_buffers from 'stream-buffers'
+import Problem from './Problem.mjs'
+import Session from './Session.mjs'
+
+if (process.argv.length < 3) {
+  console.log(
+    `usage: ${process.argv[0]} ${process.argv[1]} endpoint [args]`
+  )
+  process.exit(1)
+}
+let endpoint = process.argv[2]
+let args = []
+for (let i = 3; i < process.argv.length; ++i)
+  args.push(JSON.parse(process.argv[i]))
+
+let write_stream = new stream_buffers.WritableStreamBuffer()
+let data = new Promise(
+  (resolve, reject) => {
+    write_stream.
+    on('finish', () => {resolve(write_stream.getContents())}).
+    on('error', () => {reject()})
+  }
+)
+process.stdin.pipe(write_stream)
+args.push(JSON.parse((await data).toString('utf-8')))
+
+let session = new Session('session.json')
+await session.load()
+
+try {
+  await session.api_call(endpoint, ...args)
+}
+catch (error) {
+  let problem = Problem.from(error)
+  console.error('problem:')
+  console.error('  title:', problem.title)
+  console.error('  detail:', problem.detail)
+  console.error('  status:', problem.status)
+
+  await session.save()
+  process.exit(1)
+}
+
+await session.save()
diff --git a/_config/sign_in.mjs b/_config/sign_in.mjs
new file mode 100755 (executable)
index 0000000..bc1ef48
--- /dev/null
@@ -0,0 +1,70 @@
+#!/usr/bin/env node
+
+import readline from 'readline'
+import util from 'util'
+import Problem from './Problem.mjs'
+import Session from './Session.mjs'
+
+let session = new Session('session.json')
+try {
+  await session.load()
+}
+catch (error) {
+  if (error.code !== 'ENOENT')
+    throw error
+
+  console.log('warning: session.json not found, using defaults')
+}
+
+let rl = readline.createInterface(
+  {
+    input: process.stdin,
+    output: process.stdout,
+    terminal: false
+  }
+)
+let rl_question = util.promisify(rl.question).bind(rl)
+
+let url = await rl_question(`url: [${session.persistent.url || ''}] `)
+if (url.length)
+  session.persistent.url = url
+else if (session.persistent.url === undefined) {
+  console.log('url is required')
+  process.exit(1)
+}
+
+let username = await rl_question(`username: [${session.persistent.username || ''}] `)
+if (username.length)
+  session.persistent.username = username
+else if (session.persistent.username === undefined) {
+  console.log('username is required')
+  process.exit(1)
+}
+
+let password = await rl_question('password: ')
+if (password.length < 8) {
+  console.log('password is minimum 8 characters')
+  process.exit(1)
+}
+
+rl.close()
+
+try {
+  await session.api_call(
+    '/api/account/sign_in.json',
+    session.persistent.username,
+    password
+  )
+}
+catch (error) {
+  let problem = Problem.from(error)
+  console.error('problem:')
+  console.error('  title:', problem.title)
+  console.error('  detail:', problem.detail)
+  console.error('  status:', problem.status)
+
+  await session.save()
+  process.exit(1)
+}
+
+await session.save()
diff --git a/_config/sign_out.mjs b/_config/sign_out.mjs
new file mode 100755 (executable)
index 0000000..ad21215
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/env node
+
+import Problem from './Problem.mjs'
+import Session from './Session.mjs'
+
+let session = new Session('session.json')
+await session.load()
+
+try {
+  await session.api_call('/api/account/sign_out.json')
+}
+catch (error) {
+  let problem = Problem.from(error)
+  console.error('problem:')
+  console.error('  title:', problem.title)
+  console.error('  detail:', problem.detail)
+  console.error('  status:', problem.status)
+
+  await session.save()
+  process.exit(1)
+}
+
+await session.save()
diff --git a/_config/site.jst b/_config/site.jst
new file mode 100644 (file)
index 0000000..a346221
--- /dev/null
@@ -0,0 +1,184 @@
+let assert = require('assert')
+let cookie = require('cookie')
+let crypto = require('crypto')
+let jst_server = (await import('@ndcode/jst_server')).default
+let logjson = (await import('@ndcode/logjson')).default
+//let NodeMailerCache = require('@ndcode/nodemailer_cache')
+let XDate = require('xdate')
+let ZettairCache = require('@ndcode/zettair_cache')
+
+return async (resources, root, prev_site) => {
+  class CustomSite extends jst_server.Site {
+    constructor(resources, root, options, prev_site) {
+      super(resources, root, options, prev_site)
+      this.database = undefined
+      this.database_date = new XDate().toUTCString('yyyyMMdd')
+      this.nodemailer_cache = undefined
+      this.zettair_cache = undefined
+    }
+
+    // called when the server starts or the site.jst file is modified
+    // in latter case it will carry over the previously created resource objects
+    async start() {
+      await super.start()
+
+      assert(this.database === undefined)
+      this.database = await this.resources.ref(
+        'database',
+        async () => {
+          let database = new logjson.Database()
+          await database.open(this.root + '/database.logjson')
+          return database
+        }
+      )
+
+      //assert(this.nodemailer_cache === undefined)
+      //this.nodemailer_cache = await this.resources.ref(
+      //  'nodemailer_cache',
+      //  async () => new NodeMailerCache(true)
+      //)
+
+      assert(this.zettair_cache === undefined)
+      this.zettair_cache = await this.resources.ref(
+        'zettair_cache',
+        async () => new ZettairCache(true)
+      )
+    }
+
+    // called when the server starts or the site.jst file is modified
+    // in latter case the start() method of the new CustomSite object is called
+    // first and then the stop() method of the old CustomSite object, so that the
+    // reference counting can keep the resource objects alive during changeover
+    async stop() {
+      await super.stop()
+
+      assert(this.database !== undefined)
+      await this.resources.unref('database')
+
+      //assert(this.nodemailer_cache !== undefined)
+      //await this.resources.unref('nodemailer_cache')
+
+      assert(this.zettair_cache !== undefined)
+      await this.resources.unref('zettair_cache')
+    }
+
+    // called once per second, responsible for cache cleaning and flushing
+    async kick() {
+      await super.kick()
+
+      assert(this.database !== undefined)
+      await this.database.kick()
+
+      let new_database_date = new XDate().toUTCString('yyyyMMdd')
+      if (new_database_date !== this.database_date) {
+        console.log(
+          'rotate database',
+          this.database_date,
+          '->',
+          new_database_date
+        )
+        await this.database.rotate(
+          `${this.root}/database.logjson.${this.database_date}`
+        )
+        this.database_date = new_database_date
+      }
+
+      //assert(this.nodemailer_cache !== undefined)
+      //this.nodemailer_cache.kick()
+
+      assert(this.zettair_cache !== undefined)
+      this.zettair_cache.kick()
+    }
+
+    //// retrieves a particular email account (as a nodemailer transport)
+    //get_nodemailer(pathname) {
+    //  return /*await*/ this.nodemailer_cache.get(this.root + pathname)
+    //}
+
+    // retrieves a particular search index (node.js wrapper of a zettair object)
+    get_zettair(pathname) {
+      return /*await*/ this.zettair_cache.get(this.root + pathname)
+    }
+
+    // customize template serving to initialize env.now, env.session_key first
+    async serve_jst(env, pathname, ...args) {
+      let template
+      try {
+        template = await this.jst_cache.get(pathname)
+      }
+      catch (err) {
+        if (!(err instanceof Error) || err.code !== 'ENOENT')
+          throw err
+        return false
+      }
+      env.site = this
+
+      // added part
+      env.now = XDate.now()
+      let transaction = await this.database.Transaction()
+      try {
+        let root = await transaction.get({})
+        let sessions = await root.get('sessions', {})
+
+        let cookies = cookie.parse(env.request.headers.cookie || '')
+        let session, expires = new XDate(env.now)
+        if (
+          Object.prototype.hasOwnProperty.call(cookies, 'session_key') &&
+            (
+              session = await sessions.get(
+                env.session_key = cookies.session_key
+              )
+            ) !== undefined &&
+            env.now < await session.get('expires', 0)
+        )
+          // if session key is already in database, the requester supports
+          // cookies, and each access extends the session expiry by 1 month
+          expires.addMonths(1)
+        else {
+          // first request for session, maybe a bot, retain for only 1 day
+          expires.addDays(1)
+
+          do {
+            env.session_key = crypto.randomBytes(16).toString('hex')
+          } while (sessions.has(env.session_key))
+          session = transaction.LazyObject()
+          sessions.set(env.session_key, session)
+        }
+
+        await session.set('expires', expires.getTime())
+        env.response.setHeader(
+          'Set-Cookie',
+          `session_key=${env.session_key}; expires=${expires.toUTCString()}; path=/; httponly;`
+        )
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+
+      await template(env, ...args)
+      return true
+    }
+
+    // customize the file search/serving algorithm for this particular website
+    async respond(env) {
+      if (
+        env.parsed_url.pathname === '/node_modules' ||
+        env.parsed_url.pathname.slice(0, 14) === '/node_modules/' ||
+        env.parsed_url.pathname === '/package.json' ||
+        env.parsed_url.pathname === '/package-lock.json'
+      ) {
+        throw new jst_server.Problem(
+          'Not found',
+          `Banned file \"${env.parsed_url.pathname}\"`,
+          404
+        )
+      }
+      return /*await*/ super.respond(env)
+    }
+  }
+
+  return new CustomSite(resources, root, {}, prev_site)
+}
diff --git a/_favicon/favicons.html b/_favicon/favicons.html
new file mode 100644 (file)
index 0000000..02ba31d
--- /dev/null
@@ -0,0 +1,6 @@
+<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+<link rel="manifest" href="/manifest.json">
+<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
+<meta name="theme-color" content="#ffffff">
diff --git a/_favicon/favicons.zip b/_favicon/favicons.zip
new file mode 100644 (file)
index 0000000..11ac24b
Binary files /dev/null and b/_favicon/favicons.zip differ
diff --git a/_lib/blog_post.jst b/_lib/blog_post.jst
new file mode 100644 (file)
index 0000000..401761b
--- /dev/null
@@ -0,0 +1,40 @@
+let assert = require('assert')
+
+return async (env, head, body, scripts) => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let get_navigation = await _require('/_lib/get_navigation.jst')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  await navbar(
+    env,
+    head,
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let p = await get_navigation(root, env.component_names)
+
+        div.row.mb-3 {
+          div.col-sm-12 {
+            img.img-responsive(
+              src=await p.get_json('image') || 'image.jpg'
+            ) {}
+          }
+        }
+
+        h3 {
+          `${await p.get_json('description')}—by ${await p.get_json('author')}`
+        }
+      }
+      finally {
+        transaction.rollback()
+      }
+
+      await body(_out)
+    },
+    scripts
+  )
+}
diff --git a/_lib/breadcrumbs.jst b/_lib/breadcrumbs.jst
new file mode 100644 (file)
index 0000000..754a211
--- /dev/null
@@ -0,0 +1,24 @@
+let assert = require('assert')
+
+return async (env, _out) => {
+  // the breadcrumbs have already been determined by navbar.jst, as
+  // the HTML title is similar to the breadcrumbs (but without links)
+  let component_names = env.component_names
+  let component_titles = env.component_titles
+
+  // present component_titles as breadcrumbs, except last one as text
+  h2.mt-3 {
+    for (let i = 0; i < component_names.length; ++i) {
+      a.h4(
+        href=
+          `${
+            component_names.slice(0, i).map(name => '/' + name).join('')
+          }/index.html`
+      ) {`${component_titles[i]}`}
+      ' '
+      span.h5 {'>'}
+      ' '
+    }
+    `${component_titles[component_names.length]}`
+  }
+}
diff --git a/_lib/get_account.jst b/_lib/get_account.jst
new file mode 100644 (file)
index 0000000..f5af367
--- /dev/null
@@ -0,0 +1,20 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async (root, session) => {
+  let signed_in_as = await session.get_json('signed_in_as')
+  if (signed_in_as === undefined)
+    throw new jst_server.Problem(
+      'Unauthorized',
+      'Please sign in first.',
+      401
+    )
+  let accounts = await root.get('accounts')
+  let account = accounts.get(signed_in_as)
+  if (account === undefined)
+    throw new jst_server.Problem(
+      'Account expired',
+      'Database is inconsistent, please sign out and recreate your account.'
+      507
+    )
+  return account
+}
diff --git a/_lib/get_navigation.jst b/_lib/get_navigation.jst
new file mode 100644 (file)
index 0000000..fc0de7c
--- /dev/null
@@ -0,0 +1,24 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async (root, component_names) => {
+  let p = await root.get('navigation')
+  if (p === undefined)
+    throw new jst_server.Problem(
+      'Navigation error',
+      'Please import the navigation tree into the database.',
+      508
+    )
+  for (let i = 0; i < component_names.length; ++i) {
+    let children = await p.get('children')
+    p = await children.get(component_names[i])
+    if (p === undefined)
+      throw new jst_server.Problem(
+        'Navigation error',
+        `Can't find the path "${
+          component_names.slice(0, i + 1).map(name => '/' + name).join('')
+        }" in the navigation tree.`,
+        508
+      )
+  }
+  return p
+}
diff --git a/_lib/get_nodemailer.jst b/_lib/get_nodemailer.jst
new file mode 100644 (file)
index 0000000..fefa21a
--- /dev/null
@@ -0,0 +1,19 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let nodemailer = require('nodemailer')
+
+return async (root, name) => {
+  let nodemailers = await root.get('nodemailers')
+  if (nodemailers === undefined)
+    throw new Problem(
+      'Nodemailer error',
+      'Please import the nodemailers data into the database.',
+      509
+    )
+  let _nodemailer = await nodemailers.get_json(name)
+    throw new Problem(
+      'Nodemailer error',
+      `Can't find the nodemailer "${name}" in the nodemailers data.',
+      509
+    )
+  return nodemailer.createTransport(_nodemailer)
+}
diff --git a/_lib/get_placeholder.jst b/_lib/get_placeholder.jst
new file mode 100644 (file)
index 0000000..e1a9a7b
--- /dev/null
@@ -0,0 +1,70 @@
+let logjson = (await import('@ndcode/logjson')).default
+let XDate = require('xdate')
+
+return async (env, session) => {
+  let data = await env.site.get_json('/_placeholder/data.json')
+
+  // placeholder data (name, email, address etc) is generated randomly)
+  // it is stored in session, so user shouldn't normally realize it's random,
+  // and updated every 24 hours (in case we generated an embarrassing one)
+  let placeholder = await session.get_json('placeholder')
+  if (placeholder === undefined || env.now >= placeholder.expires) {
+    let given_name = data.given_names[
+      Math.floor(Math.random() * data.given_names.length)
+    ]
+
+    let family_name = data.family_names[
+      Math.floor(Math.random() * data.family_names.length)
+    ]
+
+    let user =
+      Math.random() < .5 ?
+        [given_name, family_name] :
+        [family_name, given_name]
+    if (Math.random() < .5)
+      user = user.map(name => name.toLowerCase())
+    user = user.join(
+      data.email_separators[
+        Math.floor(Math.random() * data.email_separators.length)
+      ]
+    )
+    let email_domain = data.email_domains[
+      Math.floor(Math.random() * data.email_domains.length)
+    ]
+    let email = `${user}@${email_domain}`
+
+    let company_prefix =
+      Math.random() < .5 ?
+        data.company_prefixes[
+          Math.floor(Math.random() * data.company_prefixes.length)
+        ] :
+        data.family_names[
+          Math.floor(Math.random() * data.family_names.length)
+        ] + (
+          Math.random() < .5 ?
+          '' :
+          ' & ' + data.family_names[
+            Math.floor(Math.random() * data.family_names.length)
+          ]
+        )
+    let company_suffix = data.company_suffixes[
+      Math.floor(Math.random() * data.company_suffixes.length)
+    ]
+    if (company_suffix.charAt(0) === '&')
+       company_prefix = company_prefix.replaceAll(' & ', ', ')
+    let company = `${company_prefix} ${company_suffix}`
+
+    let expires = new XDate(env.now)
+    expires.addDays(1)
+
+    placeholder = {
+      given_names: given_name,
+      family_name,
+      email,
+      company: company,
+      expires: expires.getTime()
+    }
+    session.set_json('placeholder', placeholder)
+  }
+  return placeholder
+}
diff --git a/_lib/get_session.jst b/_lib/get_session.jst
new file mode 100644 (file)
index 0000000..d72d2ab
--- /dev/null
@@ -0,0 +1,15 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async (env, root) => {
+  let sessions = await root.get('sessions')
+  let session = await sessions.get(env.session_key)
+  if (session === undefined || env.now >= await session.get_json('expires'))
+    // this should never happen, but could happen if we take more than a day
+    // to process an incoming request, and database is cleaned in the meantime
+    throw new jst_server.Problem(
+      'Session expired',
+      'We took too long to process an incoming request, please try again.'
+      506
+    )
+  return session
+}
diff --git a/_lib/navbar.jst b/_lib/navbar.jst
new file mode 100644 (file)
index 0000000..be95539
--- /dev/null
@@ -0,0 +1,763 @@
+let assert = require('assert')
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+let arrays_equal =
+  (a, b) =>
+    a.length === b.length && a.every((value, index) => value === b[index])
+return async (env, head, body, scripts) => {
+  //let cart = await _require('/online_store/cart.jst')
+  let fa_arrow_circle_left = await env.site.get_min_svg('/_svg/fa_arrow-circle-left.svg')
+  let fa_times_circle = await env.site.get_min_svg('/_svg/fa_times-circle.svg')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let fa_unlock_alt = await env.site.get_min_svg('/_svg/fa_unlock-alt.svg')
+  let fa_search = await env.site.get_min_svg('/_svg/fa_search.svg')
+  let get_session = await _require('/_lib/get_session.jst')
+  //let icon_cart_small = await env.site.get_min_svg('/_svg/icon_cart_small.svg')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  //let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let logo_large = await env.site.get_min_svg('/_svg/logo_large.svg')
+  let page = await _require('/_lib/page.jst')
+
+  // initialize env.cart
+  //await cart(env)
+
+  // compute breadcrumbs from directories of the path
+  let component_names = env.parsed_url.pathname.split('/')
+  assert(component_names.length >= 2)
+  assert(component_names[0].length === 0)
+  assert(component_names[component_names.length - 1].length)
+  component_names = component_names.slice(1, -1)
+
+  let transaction = await env.site.database.Transaction()
+  let signed_in_as
+  let site_title, copyright
+  let component_titles // collects breadcrumb titles for current page
+  let menu_names, menu_titles // collects top level of menu for the navbar
+  let feedback_draft
+  try {
+    let root = await transaction.get()
+
+    let session = await get_session(env, root)
+    signed_in_as = await session.get_json('signed_in_as')
+
+    let globals = await root.get('globals')
+    site_title = await globals.get_json('site_title')
+    copyright = await globals.get_json('copyright')
+
+    let navigation = await root.get('navigation')
+    if (navigation === undefined)
+      throw new jst_server.Problem(
+        'Navigation error',
+        'Please import the navigation tree into the database.',
+        508
+      )
+
+    // this code is taken from get_navigation.jst and instrumented
+    let p = navigation
+    component_titles = [await p.get_json('title')] // Home
+    for (let i = 0; i < component_names.length; ++i) {
+      let children = await p.get('children')
+      p = await children.get(component_names[i])
+      if (navigation === undefined)
+        throw new jst_server.Problem(
+          'Navigation error',
+          `Can't find the path "${
+            component_names.slice(0, i + 1).map(name => '/' + name).join('')
+          }" in the navigation tree.`,
+          508
+        )
+      component_titles.push(await p.get_json('title'))
+    }
+
+    // similar to above but walks the top level laterally (not deeply)
+    menu_names = await navigation.get_json('menu')
+    let children = await navigation.get('children')
+    menu_titles = [await navigation.get_json('title')] // Home
+    for (let i = 0; i < menu_names.length; ++i) {
+      let child = await children.get(menu_names[i])
+      if (child === undefined)
+        throw new jst_server.Problem(
+          'Navigation error',
+          `Can't find the path "/${menu_names[i]}" in the navigation tree.`
+          508
+        )
+      menu_titles.push(await child.get('title'))
+    }
+
+    feedback_draft = await session.get_json('feedback_draft')
+    if (feedback_draft === undefined || env.now >= feedback_draft.expires)
+      feedback_draft = null
+  }
+  finally {
+    transaction.rollback()
+  }
+
+  // save breadcrumbs and their titles for breadcrumbs.jst
+  // note: component_titles.length === component_names.length + 1
+  // component_titles[0] corresponds to /, is 'Home' or similar
+  // component_titles[i] corresponds to component_names[i - 1], i >= 1
+  env.component_names = component_names
+  env.component_titles = component_titles
+  console.log('cn', component_names)
+  console.log('ct', component_titles)
+
+  // note: menu_titles.length === menu_names.length + 1
+  // menu_titles[0] corresponds to /, is 'Home' or similar
+  // menu_titles[i] corresponds to menu_names[i - 1], i >= 1a
+  // (navbar has Home appearing at same level as its immediate children)
+  console.log('mn', menu_names)
+  console.log('mt', menu_titles)
+
+  await page(
+    env,
+    // head
+    async _out => {
+      title {
+        `${site_title}: ${
+          component_titles[
+            component_names.length >= 2 ? 1 : component_names.length
+          ]
+        }`
+      }
+
+      await head(_out)
+    },
+    // body
+    async _out => {
+      // extract top-level directory name
+      assert(env.parsed_url.pathname.slice(0, 1) === '/')
+      let index = env.parsed_url.pathname.indexOf('/', 1)
+      let dir = index === -1 ? '' : env.parsed_url.pathname.slice(1, index)
+
+      div.scrollbar-fix {
+        div.container {
+          div.row.align-items-center.py-3 {
+            div.col-sm-8 {
+              _out.push(logo_large)
+            }
+            div.'col-sm-4' {
+              div.'mb-1'.text-right {
+                span#navbar-signed-in-status {
+                  if (signed_in_as !== undefined)
+                    'Signed in.' //`Signed in as ${signed_in_as}.`
+                  else
+                    'Browsing as guest.'
+                }
+                ' '
+                if (signed_in_as !== undefined)
+                  a#navbar-sign-in(href="#" hidden) {'Sign in'}
+                else
+                  a#navbar-sign-in(href="#") {'Sign in'}
+                ' '
+                if (signed_in_as !== undefined)
+                  a#navbar-sign-up(href="/my_account/sign_up/index.html" hidden) {'Sign up'}
+                else
+                  a#navbar-sign-up(href="/my_account/sign_up/index.html") {'Sign up'}
+                ' '
+                if (signed_in_as !== undefined)
+                  a#navbar-sign-out(href="#") {'Sign out'}
+                else
+                  a#navbar-sign-out(href="#" hidden) {'Sign out'}
+              }
+
+              form(action="/search/index.html") {
+                div.input-group {
+                  input.form-control(name="query" type="text" placeholder="Search" aria-describedby="search-button") {}
+                  div.input-group-append {
+                    button.btn.btn-outline-secondary#navbar-search-button(type="submit") {
+                      div.icon24-outer {
+                        div.icon24-inner {_out.push(fa_search)}
+                      }
+                    }
+                  }
+                }
+              }
+            }
+
+            //div.'col-sm-1'.vbottom {
+            //  // a nested div is used to avoid hover colour on the padding
+            //  div.nav-li-a(style="text-align: center;") {
+            //    a(href="/online_store/view_cart/index.html") {
+            //      div.cart-icon {
+            //        _out.push(icon_cart_small)
+            //      }
+            //      div.cart-number {
+            //        div.cart-circle {
+            //          `${(env.cart.items || []).length}`
+            //        }
+            //      }
+            //    }
+            //  }
+            //}
+          }
+        }
+      }
+      nav.navbar.navbar-expand-lg.navbar-dark.bg-primary.scrollbar-fix {
+        div.container {
+          //a.navbar-brand(href="#") {'Navbar'}
+          //' '
+          button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation") {
+            span.navbar-toggler-icon {}
+          }
+          div.collapse.navbar-collapse#navbarSupportedContent {
+            ul.navbar-nav.mr-auto {
+              // the active entry in the navbar bar is based on which top-level
+              // page we are under, even if we are not directly on that page
+              // but one of its children, this may be unexpected as the active
+              // entry does not highlight on hover, but you can still click it;
+              // we determine here the path to the corresponding top-level page
+              let component_prefix = component_names.slice(0, 1)
+
+              for (let i = 0; i < menu_titles.length; ++i) {
+                // construct path to the top-level page about to be described
+                let menu_prefix =
+                  i == 0 ? [] : [menu_names[i - 1]]
+                let menu_prefix_path =
+                  menu_prefix.map(name => '/' + name).join('') + '/index.html'
+
+                if (arrays_equal(menu_prefix, component_prefix))
+                  li.nav-item.active {
+                    a.nav-link(href=menu_prefix_path) {
+                      `${menu_titles[i]}`
+                      span.sr-only {' (current)'}
+                    }
+                  }
+                else
+                  li.nav-item {
+                    a.nav-link(href=menu_prefix_path) {
+                      `${menu_titles[i]}`
+                    }
+                  }
+              }
+              //li.nav-item.dropdown {
+              //  a.nav-link.dropdown-toggle#navbarDropdown(href="#" role="button" data-toggle="dropdown" aria-expanded="false") {
+              //    'Dropdown'
+              //  }
+              //  div.dropdown-menu(aria-labelledby="navbarDropdown") {
+              //    a.dropdown-item(href="#") {
+              //      'Action'
+              //    }
+              //    ' '
+              //    a.dropdown-item(href="#") {
+              //      'Another action'
+              //    }
+              //    div.dropdown-divider {}
+              //    a.dropdown-item(href="#") {
+              //      'Something else here'
+              //    }
+              //  }
+              //}
+              //li.nav-item {
+              //  a.nav-link.disabled {
+              //    'Disabled'
+              //  }
+              //}
+            }
+            ul.navbar-nav.ml-auto {
+              li.nav-item {
+                a.nav-link#navbar-give-feedback(href="#") {'Give feedback'}
+              }
+            }
+          }
+        }
+      }
+      div.scrollbar-fix {
+        div.container {
+          await body(_out)
+        }
+      }
+      footer.scrollbar-fix {
+        div.container {
+          a(rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/") {
+            img(alt="Creative Commons License" style="border-width:0;" src="/images/by-sa_3.0_88x31.png") {}
+          }
+          p {
+            'This website is '
+            a(href="https://git.ndcode.org/public/ndcode_site.git") {
+              'open source'
+            }
+            ' and licensed under a '
+            a(rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/") {
+              'Creative Commons Attribution-ShareAlike 3.0 Unported License'
+            }
+            '.'
+          }
+
+          p {'Example code fragments embedded within the text are placed in the public domain unless otherwise noted.'}
+
+          p {`Copyright © ${new XDate(env.now).getUTCFullYear()} ${copyright}.`}
+        }
+      }
+
+      // hidden part
+      div.modal#navbar-sign-in-modal(tabindex="-1") {
+        div.modal-dialog {
+          div.modal-content {
+            div.modal-header {
+              span.h4.modal-title {'Sign in'}
+            }
+            div.modal-body {
+              form#navbar-sign-in-form {
+                div.row {
+                  div.col-md-12 {
+                    div.form-group {
+                      label.form-label(for="navbar-sign-in-email") {'Email'}
+                      input.form-control#navbar-sign-in-email(type="email" required maxlength=256) {}
+                      div.invalid-feedback {'Please enter your account\'s email address.'}
+                    }
+                  }
+                }
+                div.row {
+                  div.col-md-12 {
+                    div.form-group {
+                      label.form-label(for="navbar-sign-in-password") {'Password'}
+                      input.form-control#navbar-sign-in-password(type="password" required minlength=8 maxlength=256) {}
+                      div.invalid-feedback {'Please enter at least 8 characters.'}
+                    }
+                  }
+                }
+              }
+
+              p.mt-2 {
+                'No account yet? '
+                a(href="/my_account/sign_up/index.html") {'Sign up'}
+              }
+
+              p.mb-0 {
+                'Forgot password? '
+                a(href="/my_account/password_reset/index.html") {'Password reset'}
+              }
+
+              p.'mt-3'.mb-0#navbar-sign-in-message(hidden) {}
+            }
+            div.modal-footer {
+              button.btn.btn-outline-secondary(type="button" data-dismiss="modal") {
+                div.icon24-outer.mr-2 {
+                  div.icon24-inner {_out.push(fa_arrow_circle_left)}
+                }
+                'Back'
+              }
+              button.btn.btn-primary#navbar-sign-in-sign-in(type="button") {
+                div.icon24-outer.mr-2#navbar-sign-in-icon {
+                  div.icon24-inner {_out.push(fa_unlock_alt)}
+                }
+                //div.icon24-outer.mr-2#navbar-sign-in-tick(hidden) {
+                //  div.icon24-inner {_out.push(icon_tick)}
+                //}
+                div.icon24-outer.mr-2#navbar-sign-in-cross(hidden) {
+                  div.icon24-inner {_out.push(icon_cross)}
+                }
+                div.icon24-outer.mr-2#navbar-sign-in-spinner(hidden) {
+                  div.icon24-inner {
+                    div.spinner-border.spinner-border-sm(role="status") {}
+                  }
+                }
+                'Sign in'
+              }
+            }
+          }
+        }
+      }
+
+      div.modal#navbar-feedback-modal(tabindex="-1") {
+        div.modal-dialog {
+          div.modal-content {
+            div.modal-header {
+              span.h4.modal-title {'Give feedback'}
+            }
+            div.modal-body {
+              p {
+                'Did you notice something not quite right, or just want to share your impression of this page?'
+              }
+
+              form#navbar-feedback-form {
+                div.row {
+                  div.col-md-12 {
+                    div.form-group {
+                      label.form-label(for="navbar-feedback-message1") {'Message'}
+                      textarea.form-control#navbar-feedback-message1(placeholder="I noticed that..." required rows=4 maxlength=65536) {
+                        if (feedback_draft)
+                          `${feedback_draft.message}`
+                      }
+                      div.invalid-feedback {'Please let us have your thoughts.'}
+                    }
+                  }
+                }
+              }
+
+              p.'mt-3'.mb-0#navbar-feedback-message(hidden) {}
+            }
+            div.modal-footer {
+              button.btn.btn-outline-secondary(type="button" data-dismiss="modal") {
+                div.icon24-outer.mr-2 {
+                  div.icon24-inner {_out.push(fa_arrow_circle_left)}
+                }
+                'Back'
+              }
+              if (feedback_draft)
+                button.btn.btn-primary#navbar-feedback-send-message(type="button") {
+                  div.icon24-outer.mr-2#navbar-feedback-icon {
+                    div.icon24-inner {_out.push(fa_envelope)}
+                  }
+                  //div.icon24-outer.mr-2#navbar-feedback-tick(hidden) {
+                  //  div.icon24-inner {_out.push(icon_tick)}
+                  //}
+                  div.icon24-outer.mr-2#navbar-feedback-cross(hidden) {
+                    div.icon24-inner {_out.push(icon_cross)}
+                  }
+                  div.icon24-outer.mr-2#navbar-feedback-spinner(hidden) {
+                    div.icon24-inner {
+                      div.spinner-border.spinner-border-sm(role="status") {}
+                    }
+                  }
+                  'Send message'
+                }
+              else
+                button.btn.btn-primary#navbar-feedback-send-message(type="button" disabled) {
+                  div.icon24-outer.mr-2#navbar-feedback-icon {
+                    div.icon24-inner {_out.push(fa_envelope)}
+                  }
+                  //div.icon24-outer.mr-2#navbar-feedback-tick(hidden) {
+                  //  div.icon24-inner {_out.push(icon_tick)}
+                  //}
+                  div.icon24-outer.mr-2#navbar-feedback-cross(hidden) {
+                    div.icon24-inner {_out.push(icon_cross)}
+                  }
+                  div.icon24-outer.mr-2#navbar-feedback-spinner(hidden) {
+                    div.icon24-inner {
+                      div.spinner-border.spinner-border-sm(role="status") {}
+                    }
+                  }
+                  'Send message'
+                }
+            }
+          }
+        }
+      }
+
+      div.modal#navbar-message-modal(tabindex="-1") {
+        div.modal-dialog {
+          div.modal-content {
+            div.modal-header {
+              span.h4.modal-title {'Message'}
+            }
+            div.modal-body#navbar-message-modal-message {
+            }
+            div.modal-footer {
+              button.btn.btn-outline-secondary(type="button" data-dismiss="modal") {
+                div.icon24-outer.mr-2 {
+                  div.icon24-inner {_out.push(fa_times_circle)}
+                }
+                'Close'
+              }
+            }
+          }
+        }
+      }
+    },
+    // scripts
+    async _out => {
+      script(src="/js/utils.js") {}
+
+      script {
+        // this function can be overridden in a further script
+        function sign_in_out(status) {
+          return false
+        }
+
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_navbar_feedback_cross = document.getElementById('navbar-feedback-cross')
+            let id_navbar_feedback_form = document.getElementById('navbar-feedback-form')
+            let id_navbar_feedback_icon = document.getElementById('navbar-feedback-icon')
+            let id_navbar_feedback_message = document.getElementById('navbar-feedback-message')
+            let id_navbar_feedback_message1 = document.getElementById('navbar-feedback-message1')
+            let id_navbar_feedback_modal = document.getElementById('navbar-feedback-modal')
+            let id_navbar_feedback_send_message = document.getElementById('navbar-feedback-send-message')
+            let id_navbar_feedback_spinner = document.getElementById('navbar-feedback-spinner')
+            let id_navbar_feedback_tick = document.getElementById('navbar-feedback-tick')
+            let id_navbar_give_feedback = document.getElementById('navbar-give-feedback')
+            let id_navbar_message_modal = document.getElementById('navbar-message-modal')
+            let id_navbar_message_modal_message = document.getElementById('navbar-message-modal-message')
+            let id_navbar_search_button = document.getElementById('navbar-search-button')
+            let id_navbar_sign_in = document.getElementById('navbar-sign-in')
+            let id_navbar_sign_in_cross = document.getElementById('navbar-sign-in-cross')
+            let id_navbar_sign_in_email = document.getElementById('navbar-sign-in-email')
+            let id_navbar_sign_in_form = document.getElementById('navbar-sign-in-form')
+            let id_navbar_sign_in_icon = document.getElementById('navbar-sign-in-icon')
+            let id_navbar_sign_in_message = document.getElementById('navbar-sign-in-message')
+            let id_navbar_sign_in_modal = document.getElementById('navbar-sign-in-modal')
+            let id_navbar_sign_in_password = document.getElementById('navbar-sign-in-password')
+            let id_navbar_sign_in_sign_in = document.getElementById('navbar-sign-in-sign-in')
+            let id_navbar_sign_in_spinner = document.getElementById('navbar-sign-in-spinner')
+            let id_navbar_sign_in_tick = document.getElementById('navbar-sign-in-tick')
+            let id_navbar_sign_out = document.getElementById('navbar-sign-out')
+            let id_navbar_sign_up = document.getElementById('navbar-sign-up')
+            let id_navbar_signed_in_status = document.getElementById('navbar-signed-in-status')
+            //let id_navbarDropdown = document.getElementById('navbarDropdown')
+            //let id_navbarSupportedContent = document.getElementById('navbarSupportedContent')
+
+            // sign in form
+            id_navbar_sign_in.addEventListener(
+              'click',
+              () => {
+                id_navbar_sign_in_email.value = ''
+                id_navbar_sign_in_password.value = ''
+                id_navbar_sign_in_sign_in.disabled = true
+                $('#navbar-sign-in-modal').modal('show')
+              }
+            )
+
+            $('#navbar-sign-in-modal').on(
+              'shown.bs.modal',
+              () => {id_navbar_sign_in_email.focus()}
+            )
+
+            let sign_in_edited = () => {
+              id_navbar_sign_in_sign_in.disabled =
+                id_navbar_sign_in_email.value.length === 0 &&
+                  id_navbar_sign_in_password.value.length === 0
+              id_navbar_sign_in_icon.hidden = false
+              //id_navbar_sign_in_tick.hidden = true
+              id_navbar_sign_in_cross.hidden = true
+              id_navbar_sign_in_spinner.hidden = true
+              id_navbar_sign_in_message.hidden = true
+            }
+
+            id_navbar_sign_in_email.addEventListener(
+              'input',
+              sign_in_edited
+            )
+            id_navbar_sign_in_password.addEventListener(
+              'input',
+              sign_in_edited
+            )
+
+            id_navbar_sign_in_sign_in.addEventListener(
+              'click',
+              async () => {
+                id_navbar_sign_in_icon.hidden = false
+                //id_navbar_sign_in_tick.hidden = true
+                id_navbar_sign_in_cross.hidden = true
+                id_navbar_sign_in_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_navbar_sign_in_message.hidden = true
+
+                if (!id_navbar_sign_in_form.checkValidity()) {
+                  id_navbar_sign_in_form.classList.add('was-validated');
+
+                  id_navbar_sign_in_icon.hidden = true
+                  id_navbar_sign_in_cross.hidden = false
+                  return
+                }
+                id_navbar_sign_in_form.classList.remove('was-validated');
+
+                let email = id_navbar_sign_in_email.value.slice(0, 256).toLowerCase()
+
+                id_navbar_sign_in_icon.hidden = true
+                id_navbar_sign_in_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/account/sign_in.json',
+                    email,
+                    id_navbar_sign_in_password.value.slice(0, 256)
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  if (problem.title === 'Email not yet verified') {
+                    location.href = `/my_account/send_verification_email?email=${encodeURIComponent(email)}`
+                    return
+                  }
+
+                  id_navbar_sign_in_cross.hidden = false
+                  id_navbar_sign_in_spinner.hidden = true
+
+                  id_navbar_sign_in_message.textContent = problem.detail
+                  //id_navbar_sign_in_message.classList.remove('text-success')
+                  id_navbar_sign_in_message.classList.add('text-danger')
+                  id_navbar_sign_in_message.hidden = false
+                  return
+                }
+                //id_navbar_sign_in_tick.hidden = false
+                //id_navbar_sign_in_spinner.hidden = true
+                //id_navbar_sign_in_message.textContent = `You are now signed in as "${email}".`
+                //id_navbar_sign_in_message.classList.add('text-success')
+                //id_navbar_sign_in_message.classList.remove('text-danger')
+                //id_navbar_sign_in_message.hidden = false
+
+                if (sign_in_out(true))
+                  // if location has been changed, leave the spinner and do
+                  // not show status/dialog, as it causes an annoying flicker
+                  return
+
+                id_navbar_signed_in_status.textContent = 'Signed in.' //`Signed in as ${email}.`
+                id_navbar_sign_in.hidden = true
+                id_navbar_sign_up.hidden = true
+                id_navbar_sign_out.hidden = false
+
+                id_navbar_sign_in_icon.hidden = false
+                id_navbar_sign_in_spinner.hidden = true
+                id_navbar_sign_in_message.hidden = true
+                id_navbar_message_modal_message.textContent = `You are now signed in as "${email}".`
+                $('#navbar-sign-in-modal').modal('hide')
+                $('#navbar-message-modal').modal('show')
+              }
+            )
+
+            // sign out button
+            id_navbar_sign_out.addEventListener(
+              'click',
+              async () => {
+                try {
+                  await api_call(
+                    '/api/account/sign_out.json'
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_navbar_message_modal_message.textContent = problem.detail
+                  $('#navbar-sign-in-modal').modal('hide')
+                  $('#navbar-message-modal').modal('show')
+                  return
+                }
+
+                if (sign_in_out(false))
+                  // if location has been changed, leave the spinner and do
+                  // not show status/dialog, as it causes an annoying flicker
+                  return
+
+                id_navbar_signed_in_status.textContent = 'Browsing as guest.'
+                id_navbar_sign_in.hidden = false
+                id_navbar_sign_up.hidden = false
+                id_navbar_sign_out.hidden = true
+
+                id_navbar_message_modal_message.textContent = `You are now signed out.`
+                $('#navbar-sign-in-modal').modal('hide')
+                $('#navbar-message-modal').modal('show')
+              }
+            )
+
+            // feedback form
+            id_navbar_give_feedback.addEventListener(
+              'click',
+              () => {
+                // hack to move cursor to end of textarea
+                let temp = id_navbar_feedback_message1.value
+                id_navbar_feedback_message1.value = ''
+                id_navbar_feedback_message1.value = temp
+
+                $('#navbar-feedback-modal').modal('show')
+                return false
+              }
+            )
+
+            $('#navbar-feedback-modal').on(
+              'shown.bs.modal',
+              () => {id_navbar_feedback_message1.focus()}
+            )
+
+            let feedback_input_semaphore = new BinarySemaphore(false)
+            ;(
+              async () => {
+                while (true) {
+                  await feedback_input_semaphore.acquire()
+                  await new Promise(resolve => setTimeout(resolve, 3000))
+                  feedback_input_semaphore.try_acquire()
+                  await api_call(
+                    '/api/feedback/set_draft.json',
+                    id_navbar_feedback_message1.value.length === 0 ?
+                      null :
+                      {
+                        message: id_navbar_feedback_message1.value.slice(0, 65536)
+                      }
+                  )
+                }
+              }
+            )() // ignore returned promise (start thread)
+
+            let feedback_edited = () => {
+              feedback_input_semaphore.release()
+
+              id_navbar_feedback_send_message.disabled =
+                id_navbar_feedback_message1.value.length === 0
+              id_navbar_feedback_icon.hidden = false
+              //id_navbar_feedback_tick.hidden = true
+              id_navbar_feedback_cross.hidden = true
+              id_navbar_feedback_spinner.hidden = true
+              id_navbar_feedback_message.hidden = true
+            }
+
+            id_navbar_feedback_message1.addEventListener(
+              'input',
+              feedback_edited
+            )
+
+            id_navbar_feedback_send_message.addEventListener(
+              'click',
+              async () => {
+                id_navbar_feedback_icon.hidden = false
+                //id_navbar_feedback_tick.hidden = true
+                id_navbar_feedback_cross.hidden = true
+                id_navbar_feedback_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_navbar_feedback_message.hidden = true
+
+                if (!id_navbar_feedback_form.checkValidity()) {
+                  id_navbar_feedback_form.classList.add('was-validated');
+
+                  id_navbar_feedback_icon.hidden = true
+                  id_navbar_feedback_cross.hidden = false
+                  return
+                }
+                id_navbar_feedback_form.classList.remove('was-validated');
+
+                id_navbar_feedback_icon.hidden = true
+                id_navbar_feedback_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/feedback/send_message.json',
+                    location.href,
+                    id_navbar_feedback_message1.value.slice(0, 65536)
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_navbar_feedback_cross.hidden = false
+                  id_navbar_feedback_spinner.hidden = true
+
+                  id_navbar_feedback_message.textContent = problem.detail
+                  //id_navbar_feedback_message.classList.remove('text-success')
+                  id_navbar_feedback_message.classList.add('text-danger')
+                  id_navbar_feedback_message.hidden = false
+                  return
+                }
+                //id_navbar_feedback_tick.hidden = false
+                //id_navbar_feedback_spinner.hidden = true
+                //id_navbar_feedback_message.textContent = 'We have received your message. We will be in touch as soon as possible.'
+                //id_navbar_feedback_message.classList.add('text-success')
+                //id_navbar_feedback_message.classList.remove('text-danger')
+                //id_navbar_feedback_message.hidden = false
+
+                id_navbar_feedback_icon.hidden = false
+                id_navbar_feedback_spinner.hidden = true
+                id_navbar_feedback_message.hidden = true
+                id_navbar_message_modal_message.textContent = 'Thanks! We have received your feedback.'
+                $('#navbar-feedback-modal').modal('hide')
+                $('#navbar-message-modal').modal('show')
+              }
+            )
+          }
+        )
+      }
+
+      await scripts(_out)
+    }
+  )
+}
diff --git a/_lib/page.jst b/_lib/page.jst
new file mode 100644 (file)
index 0000000..d07619c
--- /dev/null
@@ -0,0 +1,71 @@
+let XDate = require('xdate')
+let cookie = require('cookie')
+let crypto = require('crypto')
+
+return async (env, head, body, scripts) => {
+  let favicons = await env.site.get_min_html('/_favicon/favicons.html')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  // initialize env.session_key, set cookie in env.response
+  let transaction = await env.site.database.Transaction()
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+
+    let pageviews = await root.get('pageviews', {})
+    let pageview = await pageviews.get(env.parsed_url.pathname, {})
+    pageview.set('visits', (await pageview.get('visits') || 0) + 1)
+
+    let session_pageviews = await session.get('pageviews', {})
+    let i = await session_pageviews.get(env.parsed_url.pathname)
+    if (i === undefined) {
+      pageview.set(
+        'unique_visits',
+        (await pageview.get('unique_visits') || 0) + 1
+      )
+      i = 0
+    }
+    session_pageviews.set(env.parsed_url.pathname, i + 1)
+
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  let _out = []
+  _out.push('<!doctype html>')
+  html(lang="en") {
+    head {
+      // Required meta tags
+      meta(charset="utf-8") {}
+      meta(name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no") {}
+
+      // Bootstrap CSS
+      //link(rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous") {}
+      link(rel="stylesheet" href="/css/bootstrap/bootstrap.css") {}
+      link(rel="stylesheet" href="//fonts.googleapis.com/css?family=Frank+Ruhl+Libre:regular,regularitalic,semibold,semibolditalic,bold,bolditalic,black,blackitalic") {}
+      link(rel="stylesheet" href="//fonts.googleapis.com/css?family=Nunito+Sans:regular,regularitalic,semibold,semibolditalic,bold,bolditalic,black,blackitalic") {}
+
+      await head(_out) //title {'Hello, world!'}
+    }
+    body {
+      await body(_out) //h1 {'Hello, world!'}
+
+      // Optional JavaScript; choose one of the two!
+
+      // Option 1: jQuery and Bootstrap Bundle (includes Popper)
+      script(src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous") {}
+      script(src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous") {}
+
+      // Option 2: Separate Popper and Bootstrap JS
+      //script(src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous") {}
+      //script(src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous") {}
+      //script(src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous") {}
+
+      await scripts(_out)
+    }
+  }
+  env.site.serve(env, 200, Buffer.from(_out.join('')), 'page.jst')
+}
diff --git a/_lib/post_request.jst b/_lib/post_request.jst
new file mode 100644 (file)
index 0000000..1757f86
--- /dev/null
@@ -0,0 +1,37 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let stream_buffers = require('stream-buffers')
+
+return async (env, handler) => {
+  if (env.request.method !== 'POST') {
+    env.response.setHeader('Allow', 'POST')
+    throw new jst_server.Problem(
+      'Method not allowed',
+      `The endpoint "${env.parsed_url.path}" requires a POST request.`,
+      405
+    )
+  }
+
+  let write_stream = new stream_buffers.WritableStreamBuffer()
+  let data = new Promise(
+    (resolve, reject) => {
+      write_stream.
+      on('finish', () => {resolve(write_stream.getContents())}).
+      on('error', () => {reject()})
+    }
+  )
+  env.request.pipe(write_stream)
+  let args = JSON.parse((await data).toString('utf-8'))
+  console.log('endpoint', env.parsed_url.path, 'args', JSON.stringify(args))
+
+  let result = await handler(...args)
+  if (result === undefined)
+    result = null
+  console.log('endpoint', env.parsed_url.path, 'result', JSON.stringify(result))
+
+  env.site.serve(
+    env,
+    200,
+    Buffer.from(JSON.stringify(result, null, 2) + '\n', 'utf-8'),
+    'post_request.jst'
+  )
+}
diff --git a/_placeholder/data.json b/_placeholder/data.json
new file mode 100644 (file)
index 0000000..ac3e9e7
--- /dev/null
@@ -0,0 +1,2424 @@
+{
+  "family_names": [
+    "Abbott",
+    "Adams",
+    "Adkins",
+    "Aguilar",
+    "Alexander",
+    "Allen",
+    "Allison",
+    "Alvarado",
+    "Alvarez",
+    "Anderson",
+    "Andrews",
+    "Armstrong",
+    "Arnold",
+    "Atkins",
+    "Austin",
+    "Bailey",
+    "Baker",
+    "Baldwin",
+    "Ball",
+    "Ballard",
+    "Banks",
+    "Barber",
+    "Barker",
+    "Barnes",
+    "Barnett",
+    "Barrett",
+    "Barton",
+    "Bass",
+    "Bates",
+    "Beck",
+    "Becker",
+    "Bell",
+    "Bennett",
+    "Benson",
+    "Berry",
+    "Bishop",
+    "Black",
+    "Blair",
+    "Blake",
+    "Boone",
+    "Bowen",
+    "Bowers",
+    "Bowman",
+    "Boyd",
+    "Bradley",
+    "Brady",
+    "Brewer",
+    "Bridges",
+    "Briggs",
+    "Brock",
+    "Brooks",
+    "Brown",
+    "Bryan",
+    "Bryant",
+    "Buchanan",
+    "Burgess",
+    "Burke",
+    "Burns",
+    "Burton",
+    "Bush",
+    "Butler",
+    "Byrd",
+    "Cain",
+    "Caldwell",
+    "Campbell",
+    "Cannon",
+    "Carlson",
+    "Carpenter",
+    "Carr",
+    "Carroll",
+    "Carson",
+    "Carter",
+    "Casey",
+    "Castillo",
+    "Castro",
+    "Chambers",
+    "Chandler",
+    "Chapman",
+    "Chavez",
+    "Christensen",
+    "Clark",
+    "Clarke",
+    "Clayton",
+    "Cobb",
+    "Cohen",
+    "Cole",
+    "Coleman",
+    "Collier",
+    "Collins",
+    "Colon",
+    "Conner",
+    "Cook",
+    "Cooper",
+    "Copeland",
+    "Cortez",
+    "Cox",
+    "Craig",
+    "Crawford",
+    "Cross",
+    "Cruz",
+    "Cummings",
+    "Cunningham",
+    "Curry",
+    "Curtis",
+    "Daniel",
+    "Daniels",
+    "Davidson",
+    "Davis",
+    "Dawson",
+    "Day",
+    "Dean",
+    "Delgado",
+    "Dennis",
+    "Diaz",
+    "Dixon",
+    "Douglas",
+    "Doyle",
+    "Drake",
+    "Duncan",
+    "Dunn",
+    "Edwards",
+    "Elliott",
+    "Ellis",
+    "Erickson",
+    "Estrada",
+    "Evans",
+    "Farmer",
+    "Ferguson",
+    "Fernandez",
+    "Fields",
+    "Figueroa",
+    "Fisher",
+    "Fitzgerald",
+    "Fleming",
+    "Fletcher",
+    "Flores",
+    "Flowers",
+    "Floyd",
+    "Ford",
+    "Foster",
+    "Fowler",
+    "Fox",
+    "Francis",
+    "Frank",
+    "Franklin",
+    "Frazier",
+    "Freeman",
+    "French",
+    "Fuller",
+    "Garcia",
+    "Gardner",
+    "Garner",
+    "Garrett",
+    "Garza",
+    "George",
+    "Gibbs",
+    "Gibson",
+    "Gilbert",
+    "Gill",
+    "Glover",
+    "Gomez",
+    "Gonzales",
+    "Gonzalez",
+    "Goodman",
+    "Goodwin",
+    "Gordon",
+    "Graham",
+    "Grant",
+    "Graves",
+    "Gray",
+    "Green",
+    "Greene",
+    "Greer",
+    "Gregory",
+    "Griffin",
+    "Griffith",
+    "Gross",
+    "Guerrero",
+    "Gutierrez",
+    "Guzman",
+    "Hale",
+    "Hall",
+    "Hamilton",
+    "Hammond",
+    "Hampton",
+    "Hansen",
+    "Hanson",
+    "Hardy",
+    "Harmon",
+    "Harper",
+    "Harrington",
+    "Harris",
+    "Harrison",
+    "Hart",
+    "Harvey",
+    "Hawkins",
+    "Hayes",
+    "Haynes",
+    "Henderson",
+    "Henry",
+    "Hernandez",
+    "Herrera",
+    "Hicks",
+    "Higgins",
+    "Hill",
+    "Hines",
+    "Hodges",
+    "Hoffman",
+    "Hogan",
+    "Holland",
+    "Holloway",
+    "Holmes",
+    "Holt",
+    "Hopkins",
+    "Horton",
+    "Houston",
+    "Howard",
+    "Howell",
+    "Hubbard",
+    "Hudson",
+    "Huff",
+    "Hughes",
+    "Hunt",
+    "Hunter",
+    "Ingram",
+    "Jackson",
+    "Jacobs",
+    "James",
+    "Jefferson",
+    "Jenkins",
+    "Jennings",
+    "Jensen",
+    "Jimenez",
+    "Johnson",
+    "Johnston",
+    "Jones",
+    "Jordan",
+    "Joseph",
+    "Keller",
+    "Kelley",
+    "Kelly",
+    "Kennedy",
+    "Kim",
+    "King",
+    "Klein",
+    "Knight",
+    "Lamb",
+    "Lambert",
+    "Lane",
+    "Larson",
+    "Lawrence",
+    "Lawson",
+    "Lee",
+    "Leonard",
+    "Lewis",
+    "Lindsey",
+    "Little",
+    "Lloyd",
+    "Logan",
+    "Long",
+    "Lopez",
+    "Love",
+    "Lowe",
+    "Lucas",
+    "Luna",
+    "Lynch",
+    "Lyons",
+    "Mack",
+    "Maldonado",
+    "Malone",
+    "Mann",
+    "Manning",
+    "Marsh",
+    "Marshall",
+    "Martin",
+    "Martinez",
+    "Mason",
+    "Massey",
+    "Mathis",
+    "Matthews",
+    "Maxwell",
+    "May",
+    "McBride",
+    "McCarthy",
+    "McCormick",
+    "McCoy",
+    "McDaniel",
+    "McDonald",
+    "McGee",
+    "McGuire",
+    "McKenzie",
+    "McKinney",
+    "McLaughlin",
+    "Medina",
+    "Mendez",
+    "Mendoza",
+    "Meyer",
+    "Miles",
+    "Miller",
+    "Mills",
+    "Mitchell",
+    "Montgomery",
+    "Moody",
+    "Moore",
+    "Morales",
+    "Moran",
+    "Moreno",
+    "Morgan",
+    "Morris",
+    "Morrison",
+    "Morton",
+    "Moss",
+    "Mullins",
+    "Munoz",
+    "Murphy",
+    "Murray",
+    "Myers",
+    "Nash",
+    "Neal",
+    "Nelson",
+    "Newman",
+    "Newton",
+    "Nguyen",
+    "Nichols",
+    "Norman",
+    "Norris",
+    "Norton",
+    "Nunez",
+    "Obrien",
+    "Oliver",
+    "Olson",
+    "Ortega",
+    "Ortiz",
+    "Osborne",
+    "Owen",
+    "Owens",
+    "Padilla",
+    "Page",
+    "Palmer",
+    "Park",
+    "Parker",
+    "Parks",
+    "Parsons",
+    "Patrick",
+    "Patterson",
+    "Patton",
+    "Paul",
+    "Payne",
+    "Pearson",
+    "Pena",
+    "Perez",
+    "Perkins",
+    "Perry",
+    "Peters",
+    "Peterson",
+    "Phelps",
+    "Phillips",
+    "Pierce",
+    "Pittman",
+    "Poole",
+    "Pope",
+    "Porter",
+    "Potter",
+    "Powell",
+    "Powers",
+    "Pratt",
+    "Price",
+    "Quinn",
+    "Ramirez",
+    "Ramos",
+    "Ramsey",
+    "Ray",
+    "Reed",
+    "Reese",
+    "Reeves",
+    "Reid",
+    "Reyes",
+    "Reynolds",
+    "Rhodes",
+    "Rice",
+    "Richards",
+    "Richardson",
+    "Riley",
+    "Rios",
+    "Rivera",
+    "Robbins",
+    "Roberson",
+    "Roberts",
+    "Robertson",
+    "Robinson",
+    "Rodgers",
+    "Rodriguez",
+    "Rodriquez",
+    "Rogers",
+    "Romero",
+    "Rose",
+    "Ross",
+    "Rowe",
+    "Roy",
+    "Ruiz",
+    "Russell",
+    "Ryan",
+    "Salazar",
+    "Sanchez",
+    "Sanders",
+    "Sandoval",
+    "Santiago",
+    "Santos",
+    "Saunders",
+    "Schmidt",
+    "Schneider",
+    "Schultz",
+    "Schwartz",
+    "Scott",
+    "Sharp",
+    "Shaw",
+    "Shelton",
+    "Sherman",
+    "Silva",
+    "Simmons",
+    "Simon",
+    "Simpson",
+    "Sims",
+    "Singleton",
+    "Smith",
+    "Snyder",
+    "Soto",
+    "Sparks",
+    "Spencer",
+    "Stanley",
+    "Steele",
+    "Stephens",
+    "Stevens",
+    "Stevenson",
+    "Stewart",
+    "Stokes",
+    "Stone",
+    "Strickland",
+    "Sullivan",
+    "Summers",
+    "Sutton",
+    "Swanson",
+    "Tate",
+    "Taylor",
+    "Terry",
+    "Thomas",
+    "Thompson",
+    "Thornton",
+    "Todd",
+    "Torres",
+    "Townsend",
+    "Tran",
+    "Tucker",
+    "Turner",
+    "Tyler",
+    "Underwood",
+    "Valdez",
+    "Vargas",
+    "Vasquez",
+    "Vaughn",
+    "Vega",
+    "Wade",
+    "Wagner",
+    "Walker",
+    "Wallace",
+    "Walsh",
+    "Walters",
+    "Walton",
+    "Ward",
+    "Warner",
+    "Warren",
+    "Washington",
+    "Waters",
+    "Watkins",
+    "Watson",
+    "Watts",
+    "Weaver",
+    "Webb",
+    "Weber",
+    "Webster",
+    "Welch",
+    "Wells",
+    "West",
+    "Wheeler",
+    "White",
+    "Wilkerson",
+    "Wilkins",
+    "Williams",
+    "Williamson",
+    "Willis",
+    "Wilson",
+    "Wise",
+    "Wolfe",
+    "Wong",
+    "Wood",
+    "Woods",
+    "Wright",
+    "Yates",
+    "Young",
+    "Zimmerman"
+  ],
+  "given_names": [
+    "Aaron",
+    "Adam",
+    "Adrian",
+    "Agnes",
+    "Alan",
+    "Albert",
+    "Alex",
+    "Alexander",
+    "Alfred",
+    "Alice",
+    "Alicia",
+    "Allan",
+    "Allen",
+    "Allison",
+    "Alma",
+    "Alvin",
+    "Amanda",
+    "Amber",
+    "Amy",
+    "Ana",
+    "Andre",
+    "Andrea",
+    "Andrew",
+    "Angel",
+    "Angela",
+    "Anita",
+    "Ann",
+    "Anna",
+    "Anne",
+    "Annette",
+    "Annie",
+    "Anthony",
+    "Antonio",
+    "April",
+    "Arlene",
+    "Arnold",
+    "Arthur",
+    "Ashley",
+    "Audrey",
+    "Barbara",
+    "Barry",
+    "Beatrice",
+    "Ben",
+    "Benjamin",
+    "Bernard",
+    "Bernice",
+    "Bertha",
+    "Bessie",
+    "Beth",
+    "Betty",
+    "Beverly",
+    "Bill",
+    "Billy",
+    "Bobby",
+    "Bonnie",
+    "Brad",
+    "Bradley",
+    "Brandon",
+    "Brenda",
+    "Brent",
+    "Brett",
+    "Brian",
+    "Brittany",
+    "Bruce",
+    "Bryan",
+    "Calvin",
+    "Carl",
+    "Carla",
+    "Carlos",
+    "Carmen",
+    "Carol",
+    "Caroline",
+    "Carolyn",
+    "Carrie",
+    "Catherine",
+    "Cathy",
+    "Cecil",
+    "Chad",
+    "Charlene",
+    "Charles",
+    "Charlie",
+    "Charlotte",
+    "Cheryl",
+    "Chester",
+    "Chris",
+    "Christian",
+    "Christina",
+    "Christine",
+    "Christopher",
+    "Cindy",
+    "Clara",
+    "Clarence",
+    "Claude",
+    "Claudia",
+    "Clifford",
+    "Clinton",
+    "Clyde",
+    "Cody",
+    "Colleen",
+    "Connie",
+    "Constance",
+    "Corey",
+    "Cory",
+    "Courtney",
+    "Craig",
+    "Crystal",
+    "Curtis",
+    "Cynthia",
+    "Dale",
+    "Dan",
+    "Dana",
+    "Daniel",
+    "Danielle",
+    "Danny",
+    "Darlene",
+    "Darrell",
+    "Darren",
+    "Darryl",
+    "David",
+    "Dawn",
+    "Dean",
+    "Debbie",
+    "Deborah",
+    "Debra",
+    "Delores",
+    "Denise",
+    "Dennis",
+    "Derek",
+    "Derrick",
+    "Diana",
+    "Diane",
+    "Dolores",
+    "Don",
+    "Donald",
+    "Donna",
+    "Dora",
+    "Doris",
+    "Dorothy",
+    "Douglas",
+    "Duane",
+    "Dustin",
+    "Earl",
+    "Eddie",
+    "Edgar",
+    "Edith",
+    "Edna",
+    "Edward",
+    "Edwin",
+    "Eileen",
+    "Elaine",
+    "Eleanor",
+    "Elizabeth",
+    "Ella",
+    "Ellen",
+    "Elmer",
+    "Elsie",
+    "Emily",
+    "Emma",
+    "Eric",
+    "Erica",
+    "Erik",
+    "Erin",
+    "Ernest",
+    "Esther",
+    "Ethel",
+    "Eugene",
+    "Eva",
+    "Evelyn",
+    "Fernando",
+    "Florence",
+    "Floyd",
+    "Frances",
+    "Francis",
+    "Francisco",
+    "Frank",
+    "Franklin",
+    "Fred",
+    "Frederick",
+    "Gabriel",
+    "Gail",
+    "Gary",
+    "Gene",
+    "George",
+    "Georgia",
+    "Gerald",
+    "Geraldine",
+    "Gertrude",
+    "Gilbert",
+    "Gina",
+    "Gladys",
+    "Glen",
+    "Glenda",
+    "Glenn",
+    "Gloria",
+    "Gordon",
+    "Grace",
+    "Greg",
+    "Gregory",
+    "Harold",
+    "Harry",
+    "Harvey",
+    "Hazel",
+    "Heather",
+    "Hector",
+    "Heidi",
+    "Helen",
+    "Henry",
+    "Herbert",
+    "Herman",
+    "Holly",
+    "Howard",
+    "Ida",
+    "Irene",
+    "Jack",
+    "Jackie",
+    "Jacob",
+    "Jacqueline",
+    "James",
+    "Jamie",
+    "Jamie",
+    "Jane",
+    "Janet",
+    "Janice",
+    "Jared",
+    "Jason",
+    "Javier",
+    "Jay",
+    "Jean",
+    "Jeanette",
+    "Jeanne",
+    "Jeff",
+    "Jeffery",
+    "Jeffrey",
+    "Jennifer",
+    "Jeremy",
+    "Jerome",
+    "Jerry",
+    "Jesse",
+    "Jessica",
+    "Jessie",
+    "Jessie",
+    "Jesus",
+    "Jill",
+    "Jim",
+    "Jimmy",
+    "Jo",
+    "Joan",
+    "Joann",
+    "Joanne",
+    "Joe",
+    "Joel",
+    "John",
+    "Johnny",
+    "Jon",
+    "Jonathan",
+    "Jorge",
+    "Jose",
+    "Joseph",
+    "Josephine",
+    "Joshua",
+    "Joy",
+    "Joyce",
+    "Juan",
+    "Juanita",
+    "Judith",
+    "Judy",
+    "Julia",
+    "Julie",
+    "Julio",
+    "June",
+    "Justin",
+    "Karen",
+    "Karl",
+    "Katherine",
+    "Kathleen",
+    "Kathryn",
+    "Kathy",
+    "Katie",
+    "Keith",
+    "Kelly",
+    "Kelly",
+    "Kenneth",
+    "Kevin",
+    "Kim",
+    "Kimberly",
+    "Kristen",
+    "Kristin",
+    "Kurt",
+    "Kyle",
+    "Lance",
+    "Larry",
+    "Laura",
+    "Lauren",
+    "Laurie",
+    "Lawrence",
+    "Lee",
+    "Leo",
+    "Leon",
+    "Leonard",
+    "Leroy",
+    "Leslie",
+    "Leslie",
+    "Lester",
+    "Lewis",
+    "Lillian",
+    "Lillie",
+    "Linda",
+    "Lisa",
+    "Lloyd",
+    "Lois",
+    "Lonnie",
+    "Loretta",
+    "Lori",
+    "Lorraine",
+    "Louis",
+    "Louise",
+    "Lucille",
+    "Lucy",
+    "Luis",
+    "Lydia",
+    "Lynn",
+    "Manuel",
+    "Marc",
+    "Marcia",
+    "Marcus",
+    "Margaret",
+    "Maria",
+    "Marian",
+    "Marie",
+    "Marilyn",
+    "Mario",
+    "Marion",
+    "Marjorie",
+    "Mark",
+    "Marlene",
+    "Martha",
+    "Martin",
+    "Marvin",
+    "Mary",
+    "Mathew",
+    "Matthew",
+    "Maureen",
+    "Maurice",
+    "Megan",
+    "Melanie",
+    "Melinda",
+    "Melissa",
+    "Melvin",
+    "Michael",
+    "Micheal",
+    "Michele",
+    "Michelle",
+    "Miguel",
+    "Mike",
+    "Mildred",
+    "Milton",
+    "Minnie",
+    "Mitchell",
+    "Monica",
+    "Nancy",
+    "Natalie",
+    "Nathan",
+    "Nathaniel",
+    "Neil",
+    "Nellie",
+    "Nicholas",
+    "Nicole",
+    "Norma",
+    "Norman",
+    "Oscar",
+    "Pamela",
+    "Patricia",
+    "Patrick",
+    "Paul",
+    "Paula",
+    "Pauline",
+    "Pearl",
+    "Pedro",
+    "Peggy",
+    "Peter",
+    "Philip",
+    "Phillip",
+    "Phyllis",
+    "Rachel",
+    "Rafael",
+    "Ralph",
+    "Ramon",
+    "Randall",
+    "Randy",
+    "Raul",
+    "Ray",
+    "Raymond",
+    "Rebecca",
+    "Regina",
+    "Reginald",
+    "Renee",
+    "Rhonda",
+    "Ricardo",
+    "Richard",
+    "Rick",
+    "Ricky",
+    "Rita",
+    "Robert",
+    "Roberta",
+    "Roberto",
+    "Robin",
+    "Rodney",
+    "Roger",
+    "Roland",
+    "Ron",
+    "Ronald",
+    "Ronnie",
+    "Rosa",
+    "Rose",
+    "Rosemary",
+    "Roy",
+    "Ruben",
+    "Ruby",
+    "Russell",
+    "Ruth",
+    "Ryan",
+    "Sally",
+    "Sam",
+    "Samantha",
+    "Samuel",
+    "Sandra",
+    "Sara",
+    "Sarah",
+    "Scott",
+    "Sean",
+    "Shane",
+    "Shannon",
+    "Sharon",
+    "Shawn",
+    "Sheila",
+    "Sherry",
+    "Shirley",
+    "Stacey",
+    "Stacy",
+    "Stanley",
+    "Stella",
+    "Stephanie",
+    "Stephen",
+    "Steve",
+    "Steven",
+    "Sue",
+    "Susan",
+    "Suzanne",
+    "Sylvia",
+    "Tamara",
+    "Tammy",
+    "Tanya",
+    "Tara",
+    "Ted",
+    "Teresa",
+    "Terri",
+    "Terry",
+    "Thelma",
+    "Theodore",
+    "Theresa",
+    "Thomas",
+    "Tiffany",
+    "Tim",
+    "Timothy",
+    "Tina",
+    "Todd",
+    "Tom",
+    "Tommy",
+    "Tony",
+    "Tonya",
+    "Tracy",
+    "Travis",
+    "Troy",
+    "Tyler",
+    "Tyrone",
+    "Valerie",
+    "Vanessa",
+    "Vera",
+    "Vernon",
+    "Veronica",
+    "Vicki",
+    "Victor",
+    "Victoria",
+    "Vincent",
+    "Viola",
+    "Virginia",
+    "Vivian",
+    "Walter",
+    "Wanda",
+    "Warren",
+    "Wayne",
+    "Wendy",
+    "Wesley",
+    "William",
+    "Willie",
+    "Willie",
+    "Wilma",
+    "Yolanda",
+    "Yvonne",
+    "Zachary"
+  ],
+  "email_separators": [
+    "",
+    "-",
+    ".",
+    "_"
+  ],
+  "email_domains": [
+    "101mail.com",
+    "99mail.com",
+    "airmail.com",
+    "allmail.com",
+    "amail.com",
+    "bestmail.com",
+    "bestofmail.com",
+    "betamail.com",
+    "bitmail.com",
+    "buymail.com",
+    "comail.com",
+    "coolmail.com",
+    "digimail.com",
+    "drmail.com",
+    "easymail.com",
+    "email.ai",
+    "email.app",
+    "email.ca",
+    "email.ch",
+    "email.co",
+    "email.com",
+    "email.com",
+    "email.com",
+    "email.edu",
+    "email.io",
+    "email.net",
+    "email.org",
+    "email.ru",
+    "email.site",
+    "email.ua",
+    "email.uk",
+    "email.us",
+    "email101.com",
+    "email247.com",
+    "email24x7.com",
+    "email360.com",
+    "emailal.com",
+    "emailality.com",
+    "emailall.com",
+    "emailally.com",
+    "emailalness.com",
+    "emailapp.com",
+    "emailapps.com",
+    "emailbase.com",
+    "emailbee.com",
+    "emailbit.com",
+    "emailbits.com",
+    "emailblog.com",
+    "emailbot.com",
+    "emailbots.com",
+    "emailbox.com",
+    "emailbros.com",
+    "emailbyte.com",
+    "emailcart.com",
+    "emailcenter.com",
+    "emailco.com",
+    "emailcorp.com",
+    "emaildoc.com",
+    "emailegg.com",
+    "emailfree.com",
+    "emailguru.com",
+    "emailhd.com",
+    "emailhq.com",
+    "emailhub.com",
+    "emailinc.com",
+    "emailinfo.com",
+    "emailio.com",
+    "emailipital.com",
+    "emailiput.com",
+    "emaility.com",
+    "emailjar.com",
+    "emailkit.com",
+    "emaillab.com",
+    "emaillabs.com",
+    "emaillink.com",
+    "emaillist.com",
+    "emailllc.com",
+    "emailme.com",
+    "emailmob.com",
+    "emailnet.com",
+    "emailnew.com",
+    "emailnow.com",
+    "emailonline.com",
+    "emailpad.com",
+    "emailpage.com",
+    "emailplace.com",
+    "emailpro.com",
+    "emailpros.com",
+    "emailsale.com",
+    "emailshop.com",
+    "emailsite.com",
+    "emailsoft.com",
+    "emailspace.com",
+    "emailspot.com",
+    "emailstore.com",
+    "emailsumo.com",
+    "emailtalk.com",
+    "emailtip.com",
+    "emailtips.com",
+    "emailtool.com",
+    "emailup.com",
+    "emailware.com",
+    "emailweb.com",
+    "emailworld.com",
+    "emailyou.com",
+    "emailzone.com",
+    "emailzoom.com",
+    "ezmail.com",
+    "findmail.com",
+    "formail.com",
+    "freemail.com",
+    "getmail.com",
+    "gomail.com",
+    "hdmail.com",
+    "hitmail.com",
+    "hotmail.com",
+    "imail.com",
+    "instamail.com",
+    "justmail.com",
+    "livemail.com",
+    "mail.ai",
+    "mail.app",
+    "mail.ca",
+    "mail.ch",
+    "mail.co",
+    "mail.com",
+    "mail.com",
+    "mail.edu",
+    "mail.io",
+    "mail.net",
+    "mail.org",
+    "mail.ru",
+    "mail.site",
+    "mail.ua",
+    "mail.uk",
+    "mail.us",
+    "mail101.com",
+    "mail247.com",
+    "mail24x7.com",
+    "mail360.com",
+    "mailal.com",
+    "mailality.com",
+    "mailall.com",
+    "mailally.com",
+    "mailalness.com",
+    "mailapp.com",
+    "mailapps.com",
+    "mailbase.com",
+    "mailbee.com",
+    "mailbit.com",
+    "mailbits.com",
+    "mailblog.com",
+    "mailbot.com",
+    "mailbots.com",
+    "mailbox.com",
+    "mailbros.com",
+    "mailbyte.com",
+    "mailcart.com",
+    "mailcenter.com",
+    "mailco.com",
+    "mailcorp.com",
+    "maildoc.com",
+    "mailegg.com",
+    "mailfree.com",
+    "mailguru.com",
+    "mailhd.com",
+    "mailhq.com",
+    "mailhub.com",
+    "mailinc.com",
+    "mailinfo.com",
+    "mailio.com",
+    "mailipital.com",
+    "mailiput.com",
+    "maility.com",
+    "mailjar.com",
+    "mailkit.com",
+    "maillab.com",
+    "maillabs.com",
+    "maillink.com",
+    "maillist.com",
+    "mailllc.com",
+    "mailme.com",
+    "mailmob.com",
+    "mailnet.com",
+    "mailnew.com",
+    "mailnow.com",
+    "mailonline.com",
+    "mailpad.com",
+    "mailpage.com",
+    "mailplace.com",
+    "mailpro.com",
+    "mailpros.com",
+    "mailsale.com",
+    "mailshop.com",
+    "mailsite.com",
+    "mailsoft.com",
+    "mailspace.com",
+    "mailspot.com",
+    "mailstore.com",
+    "mailsumo.com",
+    "mailtalk.com",
+    "mailtip.com",
+    "mailtips.com",
+    "mailtool.com",
+    "mailup.com",
+    "mailware.com",
+    "mailweb.com",
+    "mailworld.com",
+    "mailyou.com",
+    "mailzone.com",
+    "mailzoom.com",
+    "maxmail.com",
+    "memail.com",
+    "metamail.com",
+    "mrmail.com",
+    "mymail.com",
+    "netmail.com",
+    "newmail.com",
+    "nextmail.com",
+    "numail.com",
+    "onmail.com",
+    "ourmail.com",
+    "promail.com",
+    "remail.com",
+    "themail.com",
+    "topmail.com",
+    "trymail.com",
+    "ubermail.com",
+    "upmail.com",
+    "verymail.com",
+    "vmail.com",
+    "wemail.com",
+    "xmail.com",
+    "youmail.com"
+  ],
+  "company_prefixes": [
+    "Abilene",
+    "Addison",
+    "Akron",
+    "Alameda",
+    "Albany",
+    "Albuquerque",
+    "Alexandria",
+    "Alhambra",
+    "Aliso Viejo",
+    "Allen",
+    "Allentown",
+    "Alpharetta",
+    "Altamonte Springs",
+    "Altoona",
+    "Amarillo",
+    "Ames",
+    "Anaheim",
+    "Anchorage",
+    "Anderson",
+    "Ankeny",
+    "Ann Arbor",
+    "Annapolis",
+    "Antioch",
+    "Apache Junction",
+    "Apex",
+    "Apopka",
+    "Apple Valley",
+    "Appleton",
+    "Arcadia",
+    "Arlington",
+    "Arlington Heights",
+    "Arvada",
+    "Asheville",
+    "Athens-Clarke County",
+    "Atlanta",
+    "Atlantic City",
+    "Attleboro",
+    "Auburn",
+    "Augusta-Richmond County",
+    "Aurora",
+    "Austin",
+    "Aventura",
+    "Avondale",
+    "Azusa",
+    "Bakersfield",
+    "Baldwin Park",
+    "Baltimore",
+    "Barnstable Town",
+    "Bartlett",
+    "Baton Rouge",
+    "Battle Creek",
+    "Bayonne",
+    "Baytown",
+    "Beaumont",
+    "Beavercreek",
+    "Beaverton",
+    "Bedford",
+    "Bell Gardens",
+    "Belleville",
+    "Bellevue",
+    "Bellflower",
+    "Bellingham",
+    "Beloit",
+    "Bend",
+    "Bentonville",
+    "Berkeley",
+    "Berwyn",
+    "Bethlehem",
+    "Beverly",
+    "Billings",
+    "Biloxi",
+    "Binghamton",
+    "Birmingham",
+    "Bismarck",
+    "Blacksburg",
+    "Blaine",
+    "Bloomington",
+    "Blue Springs",
+    "Boca Raton",
+    "Boise City",
+    "Bolingbrook",
+    "Bonita Springs",
+    "Bossier City",
+    "Boston",
+    "Boulder",
+    "Bountiful",
+    "Bowie",
+    "Bowling Green",
+    "Boynton Beach",
+    "Bozeman",
+    "Bradenton",
+    "Brea",
+    "Bremerton",
+    "Brentwood",
+    "Bridgeport",
+    "Bristol",
+    "Brockton",
+    "Broken Arrow",
+    "Brookfield",
+    "Brookhaven",
+    "Brooklyn Park",
+    "Broomfield",
+    "Brownsville",
+    "Bryan",
+    "Buckeye",
+    "Buena Park",
+    "Buffalo",
+    "Buffalo Grove",
+    "Bullhead City",
+    "Burbank",
+    "Burien",
+    "Burleson",
+    "Burlington",
+    "Burnsville",
+    "Caldwell",
+    "Calexico",
+    "Calumet City",
+    "Camarillo",
+    "Cambridge",
+    "Camden",
+    "Campbell",
+    "Canton",
+    "Cape Coral",
+    "Cape Girardeau",
+    "Carlsbad",
+    "Carmel",
+    "Carol Stream",
+    "Carpentersville",
+    "Carrollton",
+    "Carson",
+    "Carson City",
+    "Cary",
+    "Casa Grande",
+    "Casper",
+    "Castle Rock",
+    "Cathedral City",
+    "Cedar Falls",
+    "Cedar Hill",
+    "Cedar Park",
+    "Cedar Rapids",
+    "Centennial",
+    "Ceres",
+    "Cerritos",
+    "Champaign",
+    "Chandler",
+    "Chapel Hill",
+    "Charleston",
+    "Charlotte",
+    "Charlottesville",
+    "Chattanooga",
+    "Chelsea",
+    "Chesapeake",
+    "Chesterfield",
+    "Cheyenne",
+    "Chicago",
+    "Chico",
+    "Chicopee",
+    "Chino",
+    "Chino Hills",
+    "Chula Vista",
+    "Cicero",
+    "Cincinnati",
+    "Citrus Heights",
+    "Clarksville",
+    "Clearwater",
+    "Cleveland",
+    "Cleveland Heights",
+    "Clifton",
+    "Clovis",
+    "Coachella",
+    "Coconut Creek",
+    "Coeur d'Alene",
+    "College Station",
+    "Collierville",
+    "Colorado Springs",
+    "Colton",
+    "Columbia",
+    "Columbus",
+    "Commerce City",
+    "Compton",
+    "Concord",
+    "Conroe",
+    "Conway",
+    "Coon Rapids",
+    "Coppell",
+    "Coral Gables",
+    "Coral Springs",
+    "Corona",
+    "Corpus Christi",
+    "Corvallis",
+    "Costa Mesa",
+    "Council Bluffs",
+    "Covina",
+    "Covington",
+    "Cranston",
+    "Crystal Lake",
+    "Culver City",
+    "Cupertino",
+    "Cutler Bay",
+    "Cuyahoga Falls",
+    "Cypress",
+    "Dallas",
+    "Daly City",
+    "Danbury",
+    "Danville",
+    "Davenport",
+    "Davie",
+    "Davis",
+    "Dayton",
+    "Daytona Beach",
+    "DeKalb",
+    "DeSoto",
+    "Dearborn",
+    "Dearborn Heights",
+    "Decatur",
+    "Deerfield Beach",
+    "Delano",
+    "Delray Beach",
+    "Deltona",
+    "Denton",
+    "Denver",
+    "Des Moines",
+    "Des Plaines",
+    "Detroit",
+    "Diamond Bar",
+    "Doral",
+    "Dothan",
+    "Dover",
+    "Downers Grove",
+    "Downey",
+    "Draper",
+    "Dublin",
+    "Dubuque",
+    "Duluth",
+    "Duncanville",
+    "Dunwoody",
+    "Durham",
+    "Eagan",
+    "East Lansing",
+    "East Orange",
+    "East Providence",
+    "Eastvale",
+    "Eau Claire",
+    "Eden Prairie",
+    "Edina",
+    "Edinburg",
+    "Edmond",
+    "Edmonds",
+    "El Cajon",
+    "El Centro",
+    "El Monte",
+    "El Paso",
+    "Elgin",
+    "Elizabeth",
+    "Elk Grove",
+    "Elkhart",
+    "Elmhurst",
+    "Elyria",
+    "Encinitas",
+    "Enid",
+    "Erie",
+    "Escondido",
+    "Euclid",
+    "Eugene",
+    "Euless",
+    "Evanston",
+    "Evansville",
+    "Everett",
+    "Fairfield",
+    "Fall River",
+    "Fargo",
+    "Farmington",
+    "Farmington Hills",
+    "Fayetteville",
+    "Federal Way",
+    "Findlay",
+    "Fishers",
+    "Fitchburg",
+    "Flagstaff",
+    "Flint",
+    "Florence",
+    "Florissant",
+    "Flower Mound",
+    "Folsom",
+    "Fond du Lac",
+    "Fontana",
+    "Fort Collins",
+    "Fort Lauderdale",
+    "Fort Myers",
+    "Fort Pierce",
+    "Fort Smith",
+    "Fort Wayne",
+    "Fort Worth",
+    "Fountain Valley",
+    "Franklin",
+    "Frederick",
+    "Freeport",
+    "Fremont",
+    "Fresno",
+    "Friendswood",
+    "Frisco",
+    "Fullerton",
+    "Gainesville",
+    "Gaithersburg",
+    "Galveston",
+    "Garden Grove",
+    "Gardena",
+    "Garland",
+    "Gary",
+    "Gastonia",
+    "Georgetown",
+    "Germantown",
+    "Gilbert",
+    "Gilroy",
+    "Glendale",
+    "Glendora",
+    "Glenview",
+    "Goodyear",
+    "Goose Creek",
+    "Grand Forks",
+    "Grand Island",
+    "Grand Junction",
+    "Grand Prairie",
+    "Grand Rapids",
+    "Grapevine",
+    "Great Falls",
+    "Greeley",
+    "Green Bay",
+    "Greenacres",
+    "Greenfield",
+    "Greensboro",
+    "Greenville",
+    "Greenwood",
+    "Gresham",
+    "Grove City",
+    "Gulfport",
+    "Hackensack",
+    "Hagerstown",
+    "Hallandale Beach",
+    "Haltom City",
+    "Hamilton",
+    "Hammond",
+    "Hampton",
+    "Hanford",
+    "Hanover Park",
+    "Harlingen",
+    "Harrisburg",
+    "Harrisonburg",
+    "Hartford",
+    "Hattiesburg",
+    "Haverhill",
+    "Hawthorne",
+    "Hayward",
+    "Hemet",
+    "Hempstead",
+    "Henderson",
+    "Hendersonville",
+    "Hesperia",
+    "Hialeah",
+    "Hickory",
+    "High Point",
+    "Highland",
+    "Hillsboro",
+    "Hilton Head Island",
+    "Hoboken",
+    "Hoffman Estates",
+    "Hollywood",
+    "Holyoke",
+    "Homestead",
+    "Honolulu",
+    "Hoover",
+    "Houston",
+    "Huber Heights",
+    "Huntersville",
+    "Huntington",
+    "Huntington Beach",
+    "Huntington Park",
+    "Huntsville",
+    "Hurst",
+    "Hutchinson",
+    "Idaho Falls",
+    "Independence",
+    "Indianapolis",
+    "Indio",
+    "Inglewood",
+    "Iowa City",
+    "Irvine",
+    "Irving",
+    "Jackson",
+    "Jacksonville",
+    "Janesville",
+    "Jefferson City",
+    "Jeffersonville",
+    "Jersey City",
+    "Johns Creek",
+    "Johnson City",
+    "Joliet",
+    "Jonesboro",
+    "Joplin",
+    "Jupiter",
+    "Jurupa Valley",
+    "Kalamazoo",
+    "Kannapolis",
+    "Kansas City",
+    "Kearny",
+    "Keizer",
+    "Keller",
+    "Kenner",
+    "Kennewick",
+    "Kenosha",
+    "Kent",
+    "Kentwood",
+    "Kettering",
+    "Killeen",
+    "Kingsport",
+    "Kirkland",
+    "Kissimmee",
+    "Knoxville",
+    "Kokomo",
+    "La Crosse",
+    "La Habra",
+    "La Mesa",
+    "La Mirada",
+    "La Puente",
+    "La Quinta",
+    "Lacey",
+    "Lafayette",
+    "Laguna Niguel",
+    "Lake Charles",
+    "Lake Elsinore",
+    "Lake Forest",
+    "Lake Havasu City",
+    "Lake Oswego",
+    "Lakeland",
+    "Lakeville",
+    "Lakewood",
+    "Lancaster",
+    "Lansing",
+    "Laredo",
+    "Largo",
+    "Las Cruces",
+    "Las Vegas",
+    "Lauderhill",
+    "Lawrence",
+    "Lawton",
+    "Layton",
+    "League City",
+    "Lee's Summit",
+    "Leesburg",
+    "Lehi",
+    "Lenexa",
+    "Leominster",
+    "Lewisville",
+    "Lexington-Fayette",
+    "Lima",
+    "Lincoln",
+    "Lincoln Park",
+    "Linden",
+    "Little Rock",
+    "Littleton",
+    "Livermore",
+    "Livonia",
+    "Lodi",
+    "Logan",
+    "Lombard",
+    "Lompoc",
+    "Long Beach",
+    "Longmont",
+    "Longview",
+    "Lorain",
+    "Los Angeles",
+    "Louisville/Jefferson County",
+    "Loveland",
+    "Lowell",
+    "Lubbock",
+    "Lynchburg",
+    "Lynn",
+    "Lynwood",
+    "Macon",
+    "Madera",
+    "Madison",
+    "Malden",
+    "Manassas",
+    "Manchester",
+    "Manhattan",
+    "Mankato",
+    "Mansfield",
+    "Manteca",
+    "Maple Grove",
+    "Maplewood",
+    "Marana",
+    "Margate",
+    "Maricopa",
+    "Marietta",
+    "Marlborough",
+    "Martinez",
+    "Marysville",
+    "McAllen",
+    "McKinney",
+    "Medford",
+    "Melbourne",
+    "Memphis",
+    "Menifee",
+    "Mentor",
+    "Merced",
+    "Meriden",
+    "Meridian",
+    "Mesa",
+    "Mesquite",
+    "Methuen",
+    "Miami",
+    "Miami Beach",
+    "Miami Gardens",
+    "Middletown",
+    "Midland",
+    "Midwest City",
+    "Milford",
+    "Milpitas",
+    "Milwaukee",
+    "Minneapolis",
+    "Minnetonka",
+    "Minot",
+    "Miramar",
+    "Mishawaka",
+    "Mission",
+    "Mission Viejo",
+    "Missoula",
+    "Missouri City",
+    "Mobile",
+    "Modesto",
+    "Moline",
+    "Monroe",
+    "Monrovia",
+    "Montclair",
+    "Montebello",
+    "Monterey Park",
+    "Montgomery",
+    "Moore",
+    "Moorhead",
+    "Moreno Valley",
+    "Morgan Hill",
+    "Mount Pleasant",
+    "Mount Prospect",
+    "Mount Vernon",
+    "Mountain View",
+    "Muncie",
+    "Murfreesboro",
+    "Murray",
+    "Murrieta",
+    "Muskegon",
+    "Muskogee",
+    "Nampa",
+    "Napa",
+    "Naperville",
+    "Nashua",
+    "Nashville-Davidson",
+    "National City",
+    "New Bedford",
+    "New Berlin",
+    "New Braunfels",
+    "New Britain",
+    "New Brunswick",
+    "New Haven",
+    "New Orleans",
+    "New Rochelle",
+    "New York",
+    "Newark",
+    "Newport Beach",
+    "Newport News",
+    "Newton",
+    "Niagara Falls",
+    "Noblesville",
+    "Norfolk",
+    "Normal",
+    "Norman",
+    "North Charleston",
+    "North Las Vegas",
+    "North Lauderdale",
+    "North Little Rock",
+    "North Miami",
+    "North Miami Beach",
+    "North Port",
+    "North Richland Hills",
+    "Northglenn",
+    "Norwalk",
+    "Norwich",
+    "Novato",
+    "Novi",
+    "O'Fallon",
+    "Oak Lawn",
+    "Oak Park",
+    "Oakland",
+    "Oakland Park",
+    "Oakley",
+    "Ocala",
+    "Oceanside",
+    "Ocoee",
+    "Odessa",
+    "Ogden",
+    "Oklahoma City",
+    "Olathe",
+    "Olympia",
+    "Omaha",
+    "Ontario",
+    "Orange",
+    "Orem",
+    "Orland Park",
+    "Orlando",
+    "Ormond Beach",
+    "Oro Valley",
+    "Oshkosh",
+    "Overland Park",
+    "Owensboro",
+    "Oxnard",
+    "Pacifica",
+    "Palatine",
+    "Palm Bay",
+    "Palm Beach Gardens",
+    "Palm Coast",
+    "Palm Desert",
+    "Palm Springs",
+    "Palmdale",
+    "Palo Alto",
+    "Panama City",
+    "Paramount",
+    "Park Ridge",
+    "Parker",
+    "Parma",
+    "Pasadena",
+    "Pasco",
+    "Passaic",
+    "Paterson",
+    "Pawtucket",
+    "Peabody",
+    "Peachtree Corners",
+    "Pearland",
+    "Pembroke Pines",
+    "Pensacola",
+    "Peoria",
+    "Perris",
+    "Perth Amboy",
+    "Petaluma",
+    "Pflugerville",
+    "Pharr",
+    "Phenix City",
+    "Philadelphia",
+    "Phoenix",
+    "Pico Rivera",
+    "Pine Bluff",
+    "Pinellas Park",
+    "Pittsburg",
+    "Pittsburgh",
+    "Pittsfield",
+    "Placentia",
+    "Plainfield",
+    "Plano",
+    "Plantation",
+    "Pleasanton",
+    "Plymouth",
+    "Pocatello",
+    "Pomona",
+    "Pompano Beach",
+    "Pontiac",
+    "Port Arthur",
+    "Port Orange",
+    "Port St. Lucie",
+    "Portage",
+    "Porterville",
+    "Portland",
+    "Portsmouth",
+    "Poway",
+    "Prescott",
+    "Prescott Valley",
+    "Providence",
+    "Provo",
+    "Pueblo",
+    "Puyallup",
+    "Quincy",
+    "Racine",
+    "Raleigh",
+    "Rancho Cordova",
+    "Rancho Cucamonga",
+    "Rancho Palos Verdes",
+    "Rancho Santa Margarita",
+    "Rapid City",
+    "Reading",
+    "Redding",
+    "Redlands",
+    "Redmond",
+    "Redondo Beach",
+    "Redwood City",
+    "Reno",
+    "Renton",
+    "Revere",
+    "Rialto",
+    "Richardson",
+    "Richland",
+    "Richmond",
+    "Rio Rancho",
+    "Riverside",
+    "Riverton",
+    "Roanoke",
+    "Rochester",
+    "Rochester Hills",
+    "Rock Hill",
+    "Rock Island",
+    "Rockford",
+    "Rocklin",
+    "Rockville",
+    "Rockwall",
+    "Rocky Mount",
+    "Rogers",
+    "Rohnert Park",
+    "Romeoville",
+    "Rosemead",
+    "Roseville",
+    "Roswell",
+    "Round Rock",
+    "Rowlett",
+    "Roy",
+    "Royal Oak",
+    "Sacramento",
+    "Saginaw",
+    "Salem",
+    "Salina",
+    "Salinas",
+    "Salt Lake City",
+    "Sammamish",
+    "San Angelo",
+    "San Antonio",
+    "San Bernardino",
+    "San Bruno",
+    "San Buenaventura (Ventura)",
+    "San Clemente",
+    "San Diego",
+    "San Francisco",
+    "San Gabriel",
+    "San Jacinto",
+    "San Jose",
+    "San Leandro",
+    "San Luis Obispo",
+    "San Marcos",
+    "San Mateo",
+    "San Rafael",
+    "San Ramon",
+    "Sandy",
+    "Sandy Springs",
+    "Sanford",
+    "Santa Ana",
+    "Santa Barbara",
+    "Santa Clara",
+    "Santa Clarita",
+    "Santa Cruz",
+    "Santa Fe",
+    "Santa Maria",
+    "Santa Monica",
+    "Santa Rosa",
+    "Santee",
+    "Sarasota",
+    "Savannah",
+    "Sayreville",
+    "Schaumburg",
+    "Schenectady",
+    "Scottsdale",
+    "Scranton",
+    "Seattle",
+    "Shakopee",
+    "Shawnee",
+    "Sheboygan",
+    "Shelton",
+    "Sherman",
+    "Shoreline",
+    "Shreveport",
+    "Sierra Vista",
+    "Simi Valley",
+    "Sioux City",
+    "Sioux Falls",
+    "Skokie",
+    "Smyrna",
+    "Somerville",
+    "South Bend",
+    "South Gate",
+    "South Jordan",
+    "South San Francisco",
+    "Southaven",
+    "Southfield",
+    "Spanish Fork",
+    "Sparks",
+    "Spartanburg",
+    "Spokane",
+    "Spokane Valley",
+    "Springdale",
+    "Springfield",
+    "St. Charles",
+    "St. Clair Shores",
+    "St. Cloud",
+    "St. George",
+    "St. Joseph",
+    "St. Louis",
+    "St. Louis Park",
+    "St. Paul",
+    "St. Peters",
+    "St. Petersburg",
+    "Stamford",
+    "Stanton",
+    "State College",
+    "Sterling Heights",
+    "Stillwater",
+    "Stockton",
+    "Streamwood",
+    "Strongsville",
+    "Suffolk",
+    "Sugar Land",
+    "Summerville",
+    "Sumter",
+    "Sunnyvale",
+    "Sunrise",
+    "Surprise",
+    "Syracuse",
+    "Tacoma",
+    "Tallahassee",
+    "Tamarac",
+    "Tampa",
+    "Taunton",
+    "Taylor",
+    "Taylorsville",
+    "Temecula",
+    "Tempe",
+    "Temple",
+    "Terre Haute",
+    "Texarkana",
+    "Texas City",
+    "The Colony",
+    "Thornton",
+    "Thousand Oaks",
+    "Tigard",
+    "Tinley Park",
+    "Titusville",
+    "Toledo",
+    "Topeka",
+    "Torrance",
+    "Tracy",
+    "Trenton",
+    "Troy",
+    "Tucson",
+    "Tulare",
+    "Tulsa",
+    "Turlock",
+    "Tuscaloosa",
+    "Tustin",
+    "Twin Falls",
+    "Tyler",
+    "Union City",
+    "Upland",
+    "Urbana",
+    "Urbandale",
+    "Utica",
+    "Vacaville",
+    "Valdosta",
+    "Vallejo",
+    "Valley Stream",
+    "Vancouver",
+    "Victoria",
+    "Victorville",
+    "Vineland",
+    "Virginia Beach",
+    "Visalia",
+    "Vista",
+    "Waco",
+    "Walnut Creek",
+    "Waltham",
+    "Warner Robins",
+    "Warren",
+    "Warwick",
+    "Washington",
+    "Waterbury",
+    "Waterloo",
+    "Watsonville",
+    "Waukegan",
+    "Waukesha",
+    "Wausau",
+    "Wauwatosa",
+    "Wellington",
+    "Weslaco",
+    "West Allis",
+    "West Covina",
+    "West Des Moines",
+    "West Haven",
+    "West Jordan",
+    "West New York",
+    "West Palm Beach",
+    "West Sacramento",
+    "West Valley City",
+    "Westerville",
+    "Westfield",
+    "Westland",
+    "Westminster",
+    "Weston",
+    "Weymouth Town",
+    "Wheaton",
+    "Wheeling",
+    "White Plains",
+    "Whittier",
+    "Wichita",
+    "Wichita Falls",
+    "Wilkes-Barre",
+    "Wilmington",
+    "Wilson",
+    "Winston-Salem",
+    "Winter Garden",
+    "Woburn",
+    "Woodbury",
+    "Woodland",
+    "Woonsocket",
+    "Worcester",
+    "Wylie",
+    "Wyoming",
+    "Yakima",
+    "Yonkers",
+    "Yorba Linda",
+    "York",
+    "Youngstown",
+    "Yuba City",
+    "Yucaipa",
+    "Yuma",
+    "Alabama",
+    "Alaska",
+    "Arizona",
+    "Arkansas",
+    "California",
+    "Colorado",
+    "Connecticut",
+    "Delaware",
+    "District of Columbia",
+    "Florida",
+    "Georgia",
+    "Hawaii",
+    "Idaho",
+    "Illinois",
+    "Indiana",
+    "Iowa",
+    "Kansas",
+    "Kentucky",
+    "Louisiana",
+    "Maine",
+    "Maryland",
+    "Massachusetts",
+    "Michigan",
+    "Minnesota",
+    "Mississippi",
+    "Missouri",
+    "Montana",
+    "Nebraska",
+    "Nevada",
+    "New Hampshire",
+    "New Jersey",
+    "New Mexico",
+    "New York",
+    "North Carolina",
+    "North Dakota",
+    "Ohio",
+    "Oklahoma",
+    "Oregon",
+    "Pennsylvania",
+    "Rhode Island",
+    "South Carolina",
+    "South Dakota",
+    "Tennessee",
+    "Texas",
+    "Utah",
+    "Vermont",
+    "Virginia",
+    "Washington",
+    "West Virginia",
+    "Wisconsin",
+    "Wyoming",
+    "North",
+    "Northern",
+    "Northeast",
+    "Northeastern",
+    "North East",
+    "North Eastern",
+    "East",
+    "Eastern",
+    "Southeast",
+    "Southeastern",
+    "South East",
+    "South Eastern",
+    "South",
+    "Southern",
+    "Southwest",
+    "Southwestern",
+    "South West",
+    "South Western",
+    "West",
+    "Western",
+    "Northwest",
+    "Northwestern",
+    "North West",
+    "North Western"
+  ],
+  "company_suffixes": [
+    "& Co",
+    "& Company",
+    "& Sons",
+    "Aerospace",
+    "Aid",
+    "Air",
+    "Airlines",
+    "Airways",
+    "Alliance",
+    "Aluminium",
+    "America",
+    "Analytics",
+    "Armour",
+    "Arts",
+    "Automation",
+    "Automotive",
+    "Bank",
+    "Beauty",
+    "Beverage",
+    "Brake",
+    "Brands",
+    "Bros",
+    "Brothers",
+    "Buy",
+    "Capital",
+    "Care",
+    "Chase",
+    "Chemical",
+    "Chemicals",
+    "Club",
+    "Co",
+    "Communications",
+    "Communities",
+    "Company",
+    "Computer",
+    "Connection",
+    "Consolidated",
+    "Construction",
+    "Consulting",
+    "Corp",
+    "Corporation",
+    "Data",
+    "Depot",
+    "Destinations",
+    "Devices",
+    "Diagnostics",
+    "Digital",
+    "Direct",
+    "Dynamics",
+    "Education",
+    "Electric",
+    "Electronics",
+    "Energy",
+    "Enterprise",
+    "Enterprises",
+    "Entertainment",
+    "Exchange",
+    "Express",
+    "Factory",
+    "Farms",
+    "Financial",
+    "Foods",
+    "Fragrances",
+    "Games",
+    "Gaming",
+    "Gas",
+    "General",
+    "Glass",
+    "Global",
+    "Goods",
+    "Group",
+    "Handling",
+    "Harbors",
+    "Health",
+    "Healthcare",
+    "Holding",
+    "Holdings",
+    "Home",
+    "Homes",
+    "Hotels",
+    "Inc",
+    "Incorporated",
+    "Industries",
+    "Ingredients",
+    "Instruments",
+    "Insurance",
+    "International",
+    "Intertechnology",
+    "Investment",
+    "Laboratories",
+    "Lease",
+    "Life",
+    "Lifesciences",
+    "Line",
+    "Lines",
+    "Living",
+    "Logistics",
+    "Lots",
+    "Management",
+    "Manufacturing",
+    "Market",
+    "Markets",
+    "Masonry",
+    "Materials",
+    "Media",
+    "Metals",
+    "Mills",
+    "Motion",
+    "Motor",
+    "Motors",
+    "Mountain",
+    "Mutual",
+    "National",
+    "Network",
+    "Networks",
+    "Oil",
+    "Outdoor",
+    "Outfitters",
+    "Pacific",
+    "Paper",
+    "Partners",
+    "Parts",
+    "Payments",
+    "Pet",
+    "Petroleum",
+    "Pharmaceuticals",
+    "Pizza",
+    "Power",
+    "Processing",
+    "Products",
+    "Properties",
+    "Rentals",
+    "Research",
+    "Residential",
+    "Resorts",
+    "Resources",
+    "Restaurants",
+    "Retail",
+    "Roadhouse",
+    "Rubber",
+    "Sands",
+    "Sciences",
+    "Scientific",
+    "Security",
+    "Semiconductor",
+    "Service",
+    "Services",
+    "Software",
+    "Solar",
+    "Solutions",
+    "Soup",
+    "Sportswear",
+    "Steel",
+    "Storage",
+    "Store",
+    "Stores",
+    "Supply",
+    "Surgical",
+    "System",
+    "Systems",
+    "Tech",
+    "Technologies",
+    "Technology",
+    "Television",
+    "Transfer",
+    "Tree",
+    "Trust",
+    "USA",
+    "Union",
+    "Wholesale",
+    "Works",
+    "Worldwide"
+  ]
+}
diff --git a/_ssl/ca.conf b/_ssl/ca.conf
new file mode 100644 (file)
index 0000000..d0d9a5f
--- /dev/null
@@ -0,0 +1,25 @@
+[ ca ]
+default_ca      = CA_default            # The default ca section
+
+[ CA_default ]
+
+#dir            = ./demoCA              # top dir
+#database       = $dir/index.txt        # index file.
+#new_certs_dir  = $dir/newcerts         # new certs dir
+#
+#certificate    = $dir/cacert.pem       # The CA cert
+#serial         = $dir/serial           # serial no file
+#private_key    = $dir/private/cakey.pem# CA private key
+#RANDFILE       = $dir/private/.rand    # random number file
+#
+default_days   = 365                   # how long to certify for
+#default_crl_days= 30                   # how long before next CRL
+#default_md     = md5                   # md to use
+#
+#policy         = policy_any            # default policy
+#email_in_dn    = no                    # Don't add the email into cert DN
+#
+#name_opt       = ca_default            # Subject name display option
+#cert_opt       = ca_default            # Certificate display option
+#copy_extensions = none
+copy_extensions = copyall
diff --git a/_ssl/ca_cert.pem b/_ssl/ca_cert.pem
new file mode 100644 (file)
index 0000000..a77b130
--- /dev/null
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDYDCCAkigAwIBAgIJANSi4mXBF9a+MA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTgxMTE2MTAyNjU1WhcNMTgxMjE2MTAyNjU1WjBF
+MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAy2PngRdvbUTVsDW+Lg3VlALPu4w8m3qLPeBPLYDyjiRHNn5QcKJZGvRl
+N+e8fSeb9igpzrgpCgK4S9rZpJrOX9heBHs2/5fQ568lHXJKgjCNm8AM/2v0/txy
+46iOJeZmsBNtSVzYIKgHHIsUVGP4Ct/lezPsznacEXOL+wmtEbAcMH73vFrPMaiq
+8lRb8yTNEF4gI2b8TKS8oHW55owiilQmNNDH4dtCqh2ATCDB2jNEYXUa74vP9qD3
+0XDAco2XY5/AUPslMEF28z9jAvoqvO5S7sVMRGBmkFOJ8yDB9exmtObes4ReNY6g
+5624yoG4MTxjTcb2rv666Qp6/vjUPwIDAQABo1MwUTAdBgNVHQ4EFgQUQbZw0emw
+0IwXLQAg13thU7AEgRMwHwYDVR0jBBgwFoAUQbZw0emw0IwXLQAg13thU7AEgRMw
+DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAv9RHAheIwsVqdvbF
+USorz0z7PjDM8dmI1yanPNBUjNIMceZ0h+CcFOztMH8dvMM0r5pCQkIJJyFCyXtK
+y61AOrNbOAgnDm3z1YrVB8NEnji9Qicctpbse8UymD2kOdBXjU1Egrd/uUAgJZmP
+ASYeEYf/n7/bMwTNAJ+qc0o793ILIwJ20Ois43oh3RB57xDzHlHWEbN+lZFZWjmT
+yuVPvwULYmgLP8huh3EOwnsh0eCYkhgImhJICawjWQLT+EHbD3xt+QRYElDgv/Av
+kqRliJCa3yF8NLUdsQp7jD5QdpWUfcnl0Kfrc1I3KlM3SpneGcv6FT/U4hjW++AZ
+ezss0w==
+-----END CERTIFICATE-----
diff --git a/_ssl/ca_cert.srl b/_ssl/ca_cert.srl
new file mode 100644 (file)
index 0000000..401cc51
--- /dev/null
@@ -0,0 +1 @@
+D29D1C6A226490AC
diff --git a/_ssl/ca_key.pem b/_ssl/ca_key.pem
new file mode 100644 (file)
index 0000000..e65d8ce
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAy2PngRdvbUTVsDW+Lg3VlALPu4w8m3qLPeBPLYDyjiRHNn5Q
+cKJZGvRlN+e8fSeb9igpzrgpCgK4S9rZpJrOX9heBHs2/5fQ568lHXJKgjCNm8AM
+/2v0/txy46iOJeZmsBNtSVzYIKgHHIsUVGP4Ct/lezPsznacEXOL+wmtEbAcMH73
+vFrPMaiq8lRb8yTNEF4gI2b8TKS8oHW55owiilQmNNDH4dtCqh2ATCDB2jNEYXUa
+74vP9qD30XDAco2XY5/AUPslMEF28z9jAvoqvO5S7sVMRGBmkFOJ8yDB9exmtObe
+s4ReNY6g5624yoG4MTxjTcb2rv666Qp6/vjUPwIDAQABAoIBAA3vOEsl2eJ4ltNN
+u0vYcsuDLcxBnV1hleyVU5dggD2wypg3KzesR8KK/+xGmilQ72R79/FLuLQQ36OC
+yOp4GK+EWVyhPHFia1OUMkzEKcqlnO4QyFMviEd1vwFN6P87u8lQa2pdTAlguawA
+81Gcz7+e+0/njM/QXHztl6eJUCwn7zEbG8+we0g8GkLILOBA3Tuy5Vu+ox1LQZQp
+WPqIMhm0GXPOVRKBr0mPVWtJvyAYvTX13GqNM1YFbElkbnkbsTaJhg/L3J9UJNsm
+BbOg0oUdq1yWoy7cjOXiq3aG9rNws9PBXbbDB/G67aae/1SJ7eBTV/kCEuYh0YDx
+MSn5xYECgYEA/uZueW4dFTKMBebNFvJreQei1ecaGwEFckUYD5u02VugtYc9inQ2
+sK7ENq/CsA10WKBxV84lIdiG5yXjG1RwCLvTV6YBP5uL9dVMln25x6ZDUxOlYzuZ
+OZUcabR3Y3Ar349vDV+vFle47J0YW8H89O5YlVxvLfZ+CFFFSBSMRCECgYEAzESS
+5IvNH1RUCR0tqRkHA0SXMiNxF85lFbUrbS2yMI60LCaTE2q/uK5008f5laD3LYKU
+Gq7SVP1U4z0+g9jGa0rvYd1h3o6fJMrFBiBN1ZRRzMFaiQxxNbyjCV7LR86m6aSo
+pz4f7k8EmzrsmZw7MF/l9Dy3AWHpg1cwYdR6DF8CgYB17kS0d6aK9Rzlahf/At+I
+WmkTD937Gmjbqm3sYry0R3k+IzjswsG+0szDBGRNsZvfmTN3TU/OrfAUJ2pAbbt7
+vvKTvaEcPanubeYGRlrarOi/GfrNw3grtPo1SaJm5jHWN/VIObm225UaG8B2S3Tu
+GQvw5pglqsI6tOcZ5y/SIQKBgBVJuD1VTIVNVoy0m8OZth9jEJbLFsgyXFqMzP/N
+2VoyJRjM1FsbrutiUw6XMq2jXt9BUooNWiI9XJFqGo/HEbaw0o3ScpatKmy9LRdc
+WoA9uuCp7fOGdm3xQNSDKpBLOx3yaRk04kMFvScoVuwTWh/Kfr6bbT8Zoypq9cHc
+UPPlAoGBAIEtVPhH6R51/HREPMWXWgwZujkeD0VQX+hNP8VOgSlts9L4bDn7res5
+DXHDXU3Q+vY+86qDvJgJaOdmt7IoNXgRlU9tUZP4MD8YG32Xjn3dnB5e/3SmBJwD
+NV4mVx+7X6me5rb4NdpMcSzulVXy3SfnQTaDsNghpcTqOXLFI0ti
+-----END RSA PRIVATE KEY-----
diff --git a/_ssl/localhost.conf b/_ssl/localhost.conf
new file mode 100644 (file)
index 0000000..fa3ef54
--- /dev/null
@@ -0,0 +1,66 @@
+# The main section is named req because the command we are using is req
+# (openssl req ...)
+[ req ]
+## This specifies the default key size in bits. If not specified then 512 is
+## used. It is used if the -new option is used. It can be overridden by using
+## the -newkey option. 
+#default_bits = 2048
+#
+## This is the default filename to write a private key to. If not specified the
+## key is written to standard output. This can be overridden by the -keyout
+## option.
+#default_keyfile = oats.key
+#
+## If this is set to no then if a private key is generated it is not encrypted.
+## This is equivalent to the -nodes command line option. For compatibility
+## encrypt_rsa_key is an equivalent option. 
+#encrypt_key = no
+
+# This option specifies the digest algorithm to use. Possible values include
+# md5 sha1 mdc2. If not present then MD5 is used. This option can be overridden
+# on the command line.
+default_md = sha1
+
+# if set to the value no this disables prompting of certificate fields and just
+# takes values from the config file directly. It also changes the expected
+# format of the distinguished_name and attributes sections.
+prompt = no
+
+# if set to the value yes then field values to be interpreted as UTF8 strings,
+# by default they are interpreted as ASCII. This means that the field values,
+# whether prompted from a terminal or obtained from a configuration file, must
+# be valid UTF8 strings.
+utf8 = yes
+
+# This specifies the section containing the distinguished name fields to
+# prompt for when generating a certificate or certificate request.
+distinguished_name = my_req_distinguished_name
+
+# this specifies the configuration file section containing a list of extensions
+# to add to the certificate request. It can be overridden by the -reqexts
+# command line switch. See the x509v3_config(5) manual page for details of the
+# extension section format.
+req_extensions = my_extensions
+
+[ my_req_distinguished_name ]
+C = PT
+ST = Lisboa
+L = Lisboa
+O  = Oats In The Water
+#CN = *.oats.org
+CN = localhost
+
+[ my_extensions ]
+basicConstraints=CA:FALSE
+subjectAltName=@my_subject_alt_names
+subjectKeyIdentifier = hash
+
+[ my_subject_alt_names ]
+#DNS.1 = *.oats.org
+#DNS.2 = *.oats.net
+#DNS.3 = *.oats.in
+#DNS.4 = oats.org
+#DNS.5 = oats.net
+#DNS.6 = oats.in
+DNS.1 = localhost
+DNS.2 = localhost.localdomain
diff --git a/_ssl/localhost_cert.pem b/_ssl/localhost_cert.pem
new file mode 100644 (file)
index 0000000..8820da7
--- /dev/null
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDgDCCAmigAwIBAgIJANKdHGoiZJCsMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTgxMTE2MTAyNjU1WhcNMTgxMjE2MTAyNjU1WjBf
+MQswCQYDVQQGEwJQVDEPMA0GA1UECAwGTGlzYm9hMQ8wDQYDVQQHDAZMaXNib2Ex
+GjAYBgNVBAoMEU9hdHMgSW4gVGhlIFdhdGVyMRIwEAYDVQQDDAlsb2NhbGhvc3Qw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDJLav5I1Dxx9Lzv7DyHig
+ApIkm9U8tcRKuM3Q4q3xj8P2VmSHVHZ0FfjKs/NZ8hLi3go+EzGolmiRKPA7V9UQ
+Zgm5MmC6tewiol76lsjehUKuG+DmT3n79xSHsj5PC6wkE/IkifcQIeGVJWgQbRR4
+JSGaX4tmmpxNrDDgpVnaXEO8I5KR/jvniAn2DoTKlY5XSIUXlbZQPHdlLdLUU7in
+5M19b9qnIdJRxa4mcOWNtsUHU16SJZAmQBmg4vAhMc4XyJ23YE8cNxUxusKrhoUB
+sWmvjGgbbaYgtwBmCFQNSFiJhyzgg6sdUot7wVXDkXBTJPQRQO82CJyw6YoDnTCL
+AgMBAAGjWTBXMAkGA1UdEwQCMAAwKwYDVR0RBCQwIoIJbG9jYWxob3N0ghVsb2Nh
+bGhvc3QubG9jYWxkb21haW4wHQYDVR0OBBYEFPKfGhTkosDI90l245Si/Ce/CLr/
+MA0GCSqGSIb3DQEBCwUAA4IBAQBYjiwzD88QKfJvnmU6TTRTKOOWKpKdEIlZGPBu
+4opyLgB0N/cuiNKYN2WW2Z57TPZLwwKMTlMODco1MTnyVBU0kft+yPxcc9yao7wV
+Fxrb8WWylY5bFWKXwxB0SW01tgaDCAlKtCrTZVoXi/3578cru2/gf4pqoXhuIuG6
+pp5Z9baVOwVTbkNX+vSU8vxkWgpFoAcSaFkULbKCqnilqjn49myydJuorgvxvdOB
+hMHUpGWjhdkb121BvJjZfDxC6jGWmQ2ZGhJkLKU5OmOhl8GocEyDsYglx5PSJTvA
+zGvABNuodcksOPLyzPiKcTPVks5Ls1WxDgOYoRNeEYHszYDW
+-----END CERTIFICATE-----
diff --git a/_ssl/localhost_cert_bundle.pem b/_ssl/localhost_cert_bundle.pem
new file mode 100644 (file)
index 0000000..48fa2d7
--- /dev/null
@@ -0,0 +1,42 @@
+-----BEGIN CERTIFICATE-----
+MIIDgDCCAmigAwIBAgIJANKdHGoiZJCsMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTgxMTE2MTAyNjU1WhcNMTgxMjE2MTAyNjU1WjBf
+MQswCQYDVQQGEwJQVDEPMA0GA1UECAwGTGlzYm9hMQ8wDQYDVQQHDAZMaXNib2Ex
+GjAYBgNVBAoMEU9hdHMgSW4gVGhlIFdhdGVyMRIwEAYDVQQDDAlsb2NhbGhvc3Qw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDJLav5I1Dxx9Lzv7DyHig
+ApIkm9U8tcRKuM3Q4q3xj8P2VmSHVHZ0FfjKs/NZ8hLi3go+EzGolmiRKPA7V9UQ
+Zgm5MmC6tewiol76lsjehUKuG+DmT3n79xSHsj5PC6wkE/IkifcQIeGVJWgQbRR4
+JSGaX4tmmpxNrDDgpVnaXEO8I5KR/jvniAn2DoTKlY5XSIUXlbZQPHdlLdLUU7in
+5M19b9qnIdJRxa4mcOWNtsUHU16SJZAmQBmg4vAhMc4XyJ23YE8cNxUxusKrhoUB
+sWmvjGgbbaYgtwBmCFQNSFiJhyzgg6sdUot7wVXDkXBTJPQRQO82CJyw6YoDnTCL
+AgMBAAGjWTBXMAkGA1UdEwQCMAAwKwYDVR0RBCQwIoIJbG9jYWxob3N0ghVsb2Nh
+bGhvc3QubG9jYWxkb21haW4wHQYDVR0OBBYEFPKfGhTkosDI90l245Si/Ce/CLr/
+MA0GCSqGSIb3DQEBCwUAA4IBAQBYjiwzD88QKfJvnmU6TTRTKOOWKpKdEIlZGPBu
+4opyLgB0N/cuiNKYN2WW2Z57TPZLwwKMTlMODco1MTnyVBU0kft+yPxcc9yao7wV
+Fxrb8WWylY5bFWKXwxB0SW01tgaDCAlKtCrTZVoXi/3578cru2/gf4pqoXhuIuG6
+pp5Z9baVOwVTbkNX+vSU8vxkWgpFoAcSaFkULbKCqnilqjn49myydJuorgvxvdOB
+hMHUpGWjhdkb121BvJjZfDxC6jGWmQ2ZGhJkLKU5OmOhl8GocEyDsYglx5PSJTvA
+zGvABNuodcksOPLyzPiKcTPVks5Ls1WxDgOYoRNeEYHszYDW
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDYDCCAkigAwIBAgIJANSi4mXBF9a+MA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTgxMTE2MTAyNjU1WhcNMTgxMjE2MTAyNjU1WjBF
+MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAy2PngRdvbUTVsDW+Lg3VlALPu4w8m3qLPeBPLYDyjiRHNn5QcKJZGvRl
+N+e8fSeb9igpzrgpCgK4S9rZpJrOX9heBHs2/5fQ568lHXJKgjCNm8AM/2v0/txy
+46iOJeZmsBNtSVzYIKgHHIsUVGP4Ct/lezPsznacEXOL+wmtEbAcMH73vFrPMaiq
+8lRb8yTNEF4gI2b8TKS8oHW55owiilQmNNDH4dtCqh2ATCDB2jNEYXUa74vP9qD3
+0XDAco2XY5/AUPslMEF28z9jAvoqvO5S7sVMRGBmkFOJ8yDB9exmtObes4ReNY6g
+5624yoG4MTxjTcb2rv666Qp6/vjUPwIDAQABo1MwUTAdBgNVHQ4EFgQUQbZw0emw
+0IwXLQAg13thU7AEgRMwHwYDVR0jBBgwFoAUQbZw0emw0IwXLQAg13thU7AEgRMw
+DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAv9RHAheIwsVqdvbF
+USorz0z7PjDM8dmI1yanPNBUjNIMceZ0h+CcFOztMH8dvMM0r5pCQkIJJyFCyXtK
+y61AOrNbOAgnDm3z1YrVB8NEnji9Qicctpbse8UymD2kOdBXjU1Egrd/uUAgJZmP
+ASYeEYf/n7/bMwTNAJ+qc0o793ILIwJ20Ois43oh3RB57xDzHlHWEbN+lZFZWjmT
+yuVPvwULYmgLP8huh3EOwnsh0eCYkhgImhJICawjWQLT+EHbD3xt+QRYElDgv/Av
+kqRliJCa3yF8NLUdsQp7jD5QdpWUfcnl0Kfrc1I3KlM3SpneGcv6FT/U4hjW++AZ
+ezss0w==
+-----END CERTIFICATE-----
diff --git a/_ssl/localhost_csr.pem b/_ssl/localhost_csr.pem
new file mode 100644 (file)
index 0000000..b28c691
--- /dev/null
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIDDDCCAfQCAQAwXzELMAkGA1UEBhMCUFQxDzANBgNVBAgMBkxpc2JvYTEPMA0G
+A1UEBwwGTGlzYm9hMRowGAYDVQQKDBFPYXRzIEluIFRoZSBXYXRlcjESMBAGA1UE
+AwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwyS2
+r+SNQ8cfS87+w8h4oAKSJJvVPLXESrjN0OKt8Y/D9lZkh1R2dBX4yrPzWfIS4t4K
+PhMxqJZokSjwO1fVEGYJuTJgurXsIqJe+pbI3oVCrhvg5k95+/cUh7I+TwusJBPy
+JIn3ECHhlSVoEG0UeCUhml+LZpqcTaww4KVZ2lxDvCOSkf4754gJ9g6EypWOV0iF
+F5W2UDx3ZS3S1FO4p+TNfW/apyHSUcWuJnDljbbFB1NekiWQJkAZoOLwITHOF8id
+t2BPHDcVMbrCq4aFAbFpr4xoG22mILcAZghUDUhYiYcs4IOrHVKLe8FVw5FwUyT0
+EUDvNgicsOmKA50wiwIDAQABoGgwZgYJKoZIhvcNAQkOMVkwVzAJBgNVHRMEAjAA
+MCsGA1UdEQQkMCKCCWxvY2FsaG9zdIIVbG9jYWxob3N0LmxvY2FsZG9tYWluMB0G
+A1UdDgQWBBTynxoU5KLAyPdJduOUovwnvwi6/zANBgkqhkiG9w0BAQUFAAOCAQEA
+L4XofNRjzahIDCj/pHVnsaXtioidv5Hp0vE+9LPhzZz/bH/e7s8lJnTalEkPNUxD
+FPwiRar6MILQwn5N1b+kToSoiYDsCL77Y5WSlhcwe7gLwgDTlNwu2H030BZEr0ve
+AEAems45TJk8o3kC5s3dt0KaGbRikub1HMTpFrlQUBLbO848t6qXcZCVjoAWYKlp
+jaYn7r3bWVyZ2W2oIlQ19Tbxz+kG81Vxrg1FtAo7aBHTaOvEskgnEQ2Emc0mbLoe
+YoT0Gg7Vrurl+T5gazmV1WMKszSjP8NKhTUcMESiRIUsmQczWiDBONiH9PGmGKHI
+7aEBzQIK7m3goyS3I4q6nw==
+-----END CERTIFICATE REQUEST-----
diff --git a/_ssl/localhost_ext.conf b/_ssl/localhost_ext.conf
new file mode 100644 (file)
index 0000000..d5005dc
--- /dev/null
@@ -0,0 +1,13 @@
+basicConstraints=CA:FALSE
+subjectAltName=@my_subject_alt_names
+subjectKeyIdentifier = hash
+
+[ my_subject_alt_names ]
+#DNS.1 = *.oats.org
+#DNS.2 = *.oats.net
+#DNS.3 = *.oats.in
+#DNS.4 = oats.org
+#DNS.5 = oats.net
+#DNS.6 = oats.in
+DNS.1 = localhost
+DNS.2 = localhost.localdomain
diff --git a/_ssl/localhost_key.pem b/_ssl/localhost_key.pem
new file mode 100644 (file)
index 0000000..6c94353
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAwyS2r+SNQ8cfS87+w8h4oAKSJJvVPLXESrjN0OKt8Y/D9lZk
+h1R2dBX4yrPzWfIS4t4KPhMxqJZokSjwO1fVEGYJuTJgurXsIqJe+pbI3oVCrhvg
+5k95+/cUh7I+TwusJBPyJIn3ECHhlSVoEG0UeCUhml+LZpqcTaww4KVZ2lxDvCOS
+kf4754gJ9g6EypWOV0iFF5W2UDx3ZS3S1FO4p+TNfW/apyHSUcWuJnDljbbFB1Ne
+kiWQJkAZoOLwITHOF8idt2BPHDcVMbrCq4aFAbFpr4xoG22mILcAZghUDUhYiYcs
+4IOrHVKLe8FVw5FwUyT0EUDvNgicsOmKA50wiwIDAQABAoIBAEuOiImcJbIrhAuX
+Lv9hPIs/05QHHk4uVr1TxqTtT8orDwXvN2dKpb6Wz0i02jFmUDe1HyQfzGdpLT2f
+Kzze6ik6SOODBP7l93MFiV7fSREXadT+CFtERIfxh+pucj+q1lD1xBivrpB5fd2A
+qUVK5tUKE3OxMMlebcyJMjeY7ixkRVgjROFeXs0t50xitzn/wPN0dVPZ6JFCPgRD
+fc72E1K+DmfrzFZ2+rzqoVzAE7OSYQns3r2jNXlCEVw2jXsmnIRIi9wejbRthjbx
+gA1IdenZcf4FkOMTTFuWGynT5tfF3cVzy5QtYemGZWSK4LNuWaTSzZCk3/sCxWk5
+Vbz/AdkCgYEA8gc2WEfbk5kVhU7UV5SRDRFtGuS8fmZ0RnqFdx6qy2EWYnwYXgzT
+cZc6TiEuJ5getmEVsqzxFm3gWMyD0bEhY0jqoMVKMM70QQOQOZOB4lykXmpRDKny
+/DU7/0bp7sBzFCKCWISCjGKWc98KWy24ZdKl8ZAr3zjDxE5UYvquKIcCgYEAzmie
+r+1Y7DUtniogqpDLr6NnuvH52d1s4DEsHZQ6KRWE82d/X+2YU2R7/0QwfLBvcbT7
+OxlQP5rRoL6pX+ViZBmky0CSc/HYZZ+8uGwFc1X46zGfuvTSWaAStdIFPOX2O0JF
+LLyF5/0/CK56agL3YxGREx2iQdauqTsOyr2LLN0CgYEAzYEgPN9u6ymd415m4KKO
+c1krmh1Ei9M0wa9A6j9I6H3cgu05x4n+c8HjyPlVdlstINDYmqlL4C6VwvCMsR1E
+60e7qZ07fKwNK7L54FmGfI0LJ/wAK8+WOV5+PiiZc5dHX35ZzQ1eyBLiCysEYR02
+KIcvTiiLh/NsDqAv+Qc/n7sCgYAup0z+3LnVoeturXz2sIWpbFi804ayrK64OcUL
+5n4C3T9QuNr8drqQVs0EFIiVFlgKLmr+n6kYx0iMeavU5gcIMxehbTXtCQPtbF5+
+nMPantsFZhEBc+a7pUe1WwQeEKhIGqGCDBaEKiR+NNmsboE2HjlZRcBv+zM9QwED
+6DW17QKBgQCRZfGUWasWXW6s9aZ1FgLPAXz/M9BLZjnx627KvbF4C+ZwfszntJxn
+1A74mhHWJyKbt8YzfOTsTj40lp/npSpgjRQmUoqThx8d2cA41ALo0ktk6E9Zpp1j
+phi0woa+TdEpqE2Jb8hJcyRKGCOVOKL/bnZL/QVgMebhg02n//wa9w==
+-----END RSA PRIVATE KEY-----
diff --git a/_ssl/n.sh b/_ssl/n.sh
new file mode 100755 (executable)
index 0000000..9fbf379
--- /dev/null
+++ b/_ssl/n.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# see https://gist.github.com/Soarez/9688998
+
+# note that the CSR contains X509 extensions, particularly the SAN which
+# is mandatory for getting Google Chrome to accept the certificate, but
+# unfortunately "openssl x509" will strip extensions -- this can be fixed
+# by using the "openssl ca" command with "extensions = copyall" (or in
+# the normal case filters would be specified on what extensions to copy),
+# but the "openssl ca" command is very complicated and requires a directory
+# structure to be set up, so we fake it with the "localhost_ext.conf" file
+
+# generate a key for the subject
+#openssl genrsa -out localhost_key.pem 2048
+
+# generate a CSR
+openssl req -new -key localhost_key.pem -out localhost_csr.pem -config localhost.conf
+
+# generate a key for the CA
+#openssl genrsa -out ca_key.pem 2048
+
+# generate a self signed certificate for the CA
+openssl req -new -x509 -key ca_key.pem -out ca_cert.pem
+
+# sign the certificate
+#openssl x509 -req -in localhost_csr.pem -extfile localhost_ext.conf -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial -out localhost_cert.pem
+openssl x509 -req -in localhost_csr.pem -extfile localhost_ext.conf -CA ca_cert.pem -CAkey ca_key.pem -CAserial ca_cert.srl -out localhost_cert.pem
+
+# resolve problems with not including the signing chain (can improve this?)
+cat localhost_cert.pem ca_cert.pem > localhost_cert_bundle.pem
diff --git a/_svg/fa_arrow-circle-left.svg b/_svg/fa_arrow-circle-left.svg
new file mode 100644 (file)
index 0000000..1f21c63
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_check-circle.svg b/_svg/fa_check-circle.svg
new file mode 100644 (file)
index 0000000..e8fc914
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_cloud-upload-alt.svg b/_svg/fa_cloud-upload-alt.svg
new file mode 100644 (file)
index 0000000..6a57f68
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_envelope.svg b/_svg/fa_envelope.svg
new file mode 100644 (file)
index 0000000..2da8a00
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_redo.svg b/_svg/fa_redo.svg
new file mode 100644 (file)
index 0000000..fd68111
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_search.svg b/_svg/fa_search.svg
new file mode 100644 (file)
index 0000000..1309464
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_times-circle.svg b/_svg/fa_times-circle.svg
new file mode 100644 (file)
index 0000000..3ef8c3f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_trash.svg b/_svg/fa_trash.svg
new file mode 100644 (file)
index 0000000..18f52c5
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_unlock-alt.svg b/_svg/fa_unlock-alt.svg
new file mode 100644 (file)
index 0000000..e58c569
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_user-check.svg b/_svg/fa_user-check.svg
new file mode 100644 (file)
index 0000000..5a8f74b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_user-edit.svg b/_svg/fa_user-edit.svg
new file mode 100644 (file)
index 0000000..6f4d888
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"/></svg>
\ No newline at end of file
diff --git a/_svg/fa_user-plus.svg b/_svg/fa_user-plus.svg
new file mode 100644 (file)
index 0000000..4c79099
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"/></svg>
\ No newline at end of file
diff --git a/_svg/icon_cross.svg b/_svg/icon_cross.svg
new file mode 100644 (file)
index 0000000..3f6165e
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 32 32"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="icon_cross.svg"
+   inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
+   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"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     id="namedview8"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="true"
+     inkscape:snap-grids="false"
+     inkscape:zoom="12.96875"
+     inkscape:cx="11.951807"
+     inkscape:cy="12.298795"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg6"
+     width="32px">
+    <inkscape:grid
+       type="xygrid"
+       id="grid185" />
+  </sodipodi:namedview>
+  <title
+     id="title2">search</title>
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>search</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     style="fill:#fa1720;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 26.127748,0.60356667 C 21.323712,4.7760534 19.39603,6.1001693 14.14991,11.460655 10.08656,7.2934366 9.1394689,5.6742678 5.229046,0.77026407 L 0.54800536,4.6835388 C 4.4051896,9.7048918 5.9538686,11.768963 9.7925761,15.997549 5.3873768,20.696095 4.3988259,21.597724 0.60067596,26.59564 l 3.98109814,4.735046 c 3.8047726,-4.920915 4.9670589,-6.883722 9.2364119,-10.928729 4.960552,4.804229 6.695836,6.638634 11.679148,11.093176 L 30.16834,27.854854 C 25.209086,23.709646 22.678834,21.353901 18.271886,16.112901 23.220491,10.884885 26.353651,8.4082373 31.2022,4.4887182 Z"
+     id="path9055"
+     sodipodi:nodetypes="ccccccccccccc" />
+</svg>
diff --git a/_svg/icon_password_reset.svg b/_svg/icon_password_reset.svg
new file mode 100644 (file)
index 0000000..9906e7a
--- /dev/null
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="128"
+   height="128"
+   viewBox="0 0 64 64"
+   version="1.1"
+   id="svg31"
+   sodipodi:docname="icon_password_reset.svg"
+   inkscape:version="1.1 (1:1.1+202105261517+ce6663b3b7)"
+   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"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs24">
+    <inkscape:path-effect
+       effect="bspline"
+       id="path-effect12759"
+       is_visible="true"
+       lpeversion="1"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false" />
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter961"
+       x="-0.13054262"
+       y="-0.17431795"
+       width="1.315478"
+       height="1.3957831">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood951" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite953" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="0.7071067811865476"
+         result="blur"
+         id="feGaussianBlur955" />
+      <feOffset
+         dx="0.7071067811865476"
+         dy="0.7071067811865476"
+         result="offset"
+         id="feOffset957" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite959" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter868"
+       x="-0.64166667"
+       y="-0.42777778"
+       width="2.7833333"
+       height="2.1888889">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood858" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite860" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="3"
+         result="blur"
+         id="feGaussianBlur862" />
+      <feOffset
+         dx="6"
+         dy="6"
+         result="offset"
+         id="feOffset864" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite866" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter961-3"
+       x="-0.54926406"
+       y="-0.62773036"
+       width="2.2753048"
+       height="2.4574912">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood951-6" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite953-7" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="0.7071067811865476"
+         result="blur"
+         id="feGaussianBlur955-5" />
+      <feOffset
+         dx="0.7071067811865476"
+         dy="0.7071067811865476"
+         result="offset"
+         id="feOffset957-3" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite959-5" />
+    </filter>
+  </defs>
+  <metadata
+     id="metadata35">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     id="namedview33"
+     showgrid="true"
+     inkscape:zoom="1.3037281"
+     inkscape:cx="88.208575"
+     inkscape:cy="92.04373"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg31"
+     inkscape:measure-start="0,0"
+     inkscape:measure-end="0,0"
+     inkscape:snap-text-baseline="true"
+     inkscape:pagecheckerboard="0"
+     inkscape:snap-smooth-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid821"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <g
+     id="text870"
+     style="fill:#ff0000;fill-opacity:1;stroke:none;filter:url(#filter961)"
+     transform="translate(2,2)" />
+  <g
+     id="text882"
+     style="fill:#0000ff;fill-opacity:1;stroke:none;filter:url(#filter961)"
+     transform="translate(2,2)" />
+  <rect
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="rect11777"
+     width="42"
+     height="8"
+     x="10"
+     y="14" />
+  <rect
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="rect11777-2"
+     width="42"
+     height="8"
+     x="10"
+     y="34" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path12014"
+     cx="18"
+     cy="38"
+     r="1" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path12014-9"
+     cx="14"
+     cy="38"
+     r="1" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path12014-1"
+     cx="22"
+     cy="38"
+     r="1" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path12014-2"
+     cx="26"
+     cy="38"
+     r="1" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path12014-7"
+     cx="30"
+     cy="38"
+     r="1" />
+  <path
+     style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path12579"
+     sodipodi:type="arc"
+     sodipodi:cx="52"
+     sodipodi:cy="54"
+     sodipodi:rx="6"
+     sodipodi:ry="6"
+     sodipodi:start="0"
+     sodipodi:end="5.4977871"
+     sodipodi:arc-type="arc"
+     d="m 58,54 a 6,6 0 0 1 -4.829458,5.884712 6,6 0 0 1 -6.713819,-3.588611 6,6 0 0 1 2.209855,-7.284919 6,6 0 0 1 7.576063,0.746177"
+     sodipodi:open="true" />
+  <path
+     style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     d="m 57,47 c 0,0 0,3.5 0,3.5 0,0 -4,0 -4,0"
+     id="path12757"
+     inkscape:path-effect="#path-effect12759"
+     inkscape:original-d="m 57,47 v 3.5 h -4"
+     sodipodi:nodetypes="ccc" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square;filter:url(#filter961-3)"
+     d="m 10,10 h 12 m 0,20 H 10"
+     id="path1744"
+     sodipodi:nodetypes="cccc" />
+</svg>
diff --git a/_svg/icon_sign_up.svg b/_svg/icon_sign_up.svg
new file mode 100644 (file)
index 0000000..9a3cf6d
--- /dev/null
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="128"
+   height="128"
+   viewBox="0 0 64 64"
+   version="1.1"
+   id="svg31"
+   sodipodi:docname="icon_sign_up.svg"
+   inkscape:version="1.1 (1:1.1+202105261517+ce6663b3b7)"
+   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"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs24">
+    <inkscape:path-effect
+       effect="bspline"
+       id="path-effect1268"
+       is_visible="true"
+       lpeversion="1"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false" />
+    <inkscape:path-effect
+       effect="bspline"
+       id="path-effect1119"
+       is_visible="true"
+       lpeversion="1"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false" />
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter961"
+       x="-0.18308802"
+       y="-inf"
+       width="1.4251016"
+       height="inf">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood951" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite953" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="0.7071067811865476"
+         result="blur"
+         id="feGaussianBlur955" />
+      <feOffset
+         dx="0.7071067811865476"
+         dy="0.7071067811865476"
+         result="offset"
+         id="feOffset957" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite959" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter868"
+       x="-0.64166667"
+       y="-inf"
+       width="2.7833333"
+       height="inf">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood858" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite860" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="3"
+         result="blur"
+         id="feGaussianBlur862" />
+      <feOffset
+         dx="6"
+         dy="6"
+         result="offset"
+         id="feOffset864" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite866" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter961-3"
+       x="-0.36617604"
+       y="-0.36617604"
+       width="1.8502032"
+       height="1.8502032">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood951-6" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite953-7" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="0.7071067811865476"
+         result="blur"
+         id="feGaussianBlur955-5" />
+      <feOffset
+         dx="0.7071067811865476"
+         dy="0.7071067811865476"
+         result="offset"
+         id="feOffset957-3" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite959-5" />
+    </filter>
+  </defs>
+  <metadata
+     id="metadata35">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     id="namedview33"
+     showgrid="true"
+     inkscape:zoom="3.6875"
+     inkscape:cx="84.610169"
+     inkscape:cy="57.220339"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg31"
+     inkscape:measure-start="0,0"
+     inkscape:measure-end="0,0"
+     inkscape:snap-text-baseline="true"
+     inkscape:pagecheckerboard="0"
+     inkscape:snap-smooth-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid821"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <g
+     id="text870"
+     style="fill:#ff0000;fill-opacity:1;stroke:none;filter:url(#filter961)" />
+  <g
+     id="text882"
+     style="fill:#0000ff;fill-opacity:1;stroke:none;filter:url(#filter961)" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961)"
+     id="path224"
+     sodipodi:type="arc"
+     sodipodi:cx="32"
+     sodipodi:cy="52"
+     sodipodi:rx="26"
+     sodipodi:ry="14"
+     sodipodi:start="3.1415927"
+     sodipodi:end="4.3545965"
+     sodipodi:arc-type="arc"
+     d="M 6,52 A 26,14 0 0 1 22.894608,38.886589"
+     sodipodi:open="true" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961-3)"
+     id="path224-6"
+     sodipodi:type="arc"
+     sodipodi:cx="32"
+     sodipodi:cy="52"
+     sodipodi:rx="26"
+     sodipodi:ry="14"
+     sodipodi:start="5.0701815"
+     sodipodi:end="0"
+     sodipodi:arc-type="arc"
+     sodipodi:open="true"
+     d="M 41.105392,38.886589 A 26,14 0 0 1 58,52" />
+  <circle
+     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter961)"
+     id="path1487"
+     cx="32"
+     cy="28"
+     r="14" />
+  <path
+     style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;filter:url(#filter961-3)"
+     d="m 48,16 c 0,0 6,0 6,0 0,0 0,6 0,6"
+     id="path1117"
+     inkscape:path-effect="#path-effect1119"
+     inkscape:original-d="m 48,16 h 6 v 6"
+     sodipodi:nodetypes="ccc" />
+  <path
+     style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;filter:url(#filter961-3)"
+     d="m 54,10 c 0,0 0,6 0,6 0,0 6,0 6,0"
+     id="path1117-3"
+     inkscape:path-effect="#path-effect1268"
+     inkscape:original-d="m 54,10 v 6 h 6"
+     sodipodi:nodetypes="ccc" />
+</svg>
diff --git a/_svg/icon_tick.svg b/_svg/icon_tick.svg
new file mode 100644 (file)
index 0000000..03ddcd3
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 32 32"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="icon_tick.svg"
+   inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
+   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"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     id="namedview8"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="true"
+     inkscape:snap-grids="false"
+     inkscape:zoom="9.1702911"
+     inkscape:cx="8.1785845"
+     inkscape:cy="14.885024"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg6">
+    <inkscape:grid
+       type="xygrid"
+       id="grid185" />
+  </sodipodi:namedview>
+  <title
+     id="title2">search</title>
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>search</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     style="fill:#58de3c;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 0.65784194,23 c 4.40859616,2.335726 7.40731946,4.430144 10.28601406,8.13666 5.999999,-10 12.28308,-19.953491 20.28308,-27.9534908 L 25.815106,0.61162685 C 16.815106,9.6116268 14.702575,14.248489 9.7025747,22.248489 7.6201919,20.458382 6.4247757,19.633322 3.7585125,18.51688 Z"
+     id="path198"
+     sodipodi:nodetypes="ccccccc" />
+</svg>
diff --git a/_svg/logo_large.svg b/_svg/logo_large.svg
new file mode 100644 (file)
index 0000000..8ae064d
--- /dev/null
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="391"
+   height="60"
+   viewBox="0 0 391 60"
+   version="1.1"
+   id="svg16"
+   sodipodi:docname="logo_large.svg"
+   inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <metadata
+     id="metadata20">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     id="namedview18"
+     showgrid="false"
+     inkscape:zoom="5.0709658"
+     inkscape:cx="108.6578"
+     inkscape:cy="38.355613"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg16"
+     inkscape:pagecheckerboard="0"
+     units="mm" />
+  <defs
+     id="defs10">
+    <linearGradient
+       id="gradient"
+       x1="45.111488"
+       x2="80.816856"
+       y1="23.461231"
+       y2="128.81818"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         offset="0%"
+         stop-color="#e0e0e0"
+         id="stop5" />
+      <stop
+         offset="100%"
+         stop-color="#303030"
+         id="stop7" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       x="-0.028138157"
+       y="-0.1659751"
+       width="1.0680005"
+       height="1.4011065"
+       id="filter40">
+      <feFlood
+         flood-opacity="0.752941"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood30" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite32" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="3"
+         result="blur"
+         id="feGaussianBlur34" />
+      <feOffset
+         dx="3"
+         dy="3"
+         result="offset"
+         id="feOffset36" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite38" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient104"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient106"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient108"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient112"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient"
+       id="linearGradient114"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(2.4286988,0.41174311)"
+       x1="45.111488"
+       y1="23.461231"
+       x2="80.816856"
+       y2="128.81818" />
+  </defs>
+  <g
+     aria-label="NDCODE"
+     transform="matrix(1.4,0,-0.364,1,-8.121558,-2.6148403)"
+     style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black, Heavy';fill:url(#linearGradient114);filter:url(#filter40)"
+     id="text14">
+    <path
+       d="M 52.26,10.2 H 62.58 V 52.5 H 54.42 L 35.1,28.32 V 52.5 H 24.84 V 10.2 h 8.04 l 19.38,24.18 z"
+       style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black,  Heavy';fill:url(#linearGradient102)"
+       id="path818" />
+    <path
+       d="m 70.30875,10.2 h 17.22 q 7.02,0 12.06,2.52 5.1,2.52 7.8,7.32 2.7,4.74 2.7,11.28 0,6.6 -2.7,11.4 -2.64,4.74 -7.74,7.26 -5.04,2.52 -12.12,2.52 h -17.22 z m 16.44,33.42 q 6.24,0 9.3,-3.06 3.06,-3.06 3.06,-9.24 0,-6.18 -3.06,-9.18 -3.06,-3.06 -9.3,-3.06 h -5.4 v 24.54 z"
+       style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black,  Heavy';fill:url(#linearGradient104)"
+       id="path820" />
+    <path
+       d="m 137.235,53.04 q -6.6,0 -11.52,-2.7 -4.86,-2.7 -7.5,-7.62 -2.58,-4.92 -2.58,-11.4 0,-6.48 2.58,-11.34 2.64,-4.92 7.5,-7.62 4.92,-2.7 11.52,-2.7 4.14,0 7.98,1.26 3.9,1.26 6.36,3.36 l -3.42,7.8 q -5.22,-3.66 -10.68,-3.66 -5.16,0 -7.92,3.24 -2.7,3.24 -2.7,9.66 0,6.42 2.7,9.72 2.76,3.24 7.92,3.24 5.46,0 10.68,-3.66 l 3.42,7.8 q -2.46,2.1 -6.36,3.36 -3.84,1.26 -7.98,1.26 z"
+       style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black,  Heavy';fill:url(#linearGradient106)"
+       id="path822" />
+    <path
+       d="m 176.54157,53.04 q -6.48,0 -11.28002,-2.64 -4.73998,-2.7 -7.31998,-7.56 -2.58,-4.92 -2.58,-11.52 0,-6.6 2.58,-11.46 2.58,-4.92 7.31998,-7.56 4.80002,-2.64 11.28002,-2.64 6.48,0 11.21998,2.64 4.8,2.64 7.32,7.56 2.58,4.86 2.58,11.46 0,6.6 -2.58,11.52 -2.58,4.86 -7.37998,7.56 -4.74,2.64 -11.16,2.64 z m 0,-8.46 q 4.79998,0 7.5,-3.36 2.7,-3.42 2.7,-9.9 0,-6.48 -2.76,-9.84 -2.7,-3.36 -7.44,-3.36 -4.8,0 -7.5,3.36 -2.70002,3.3 -2.70002,9.84 0,6.54 2.70002,9.9 2.7,3.36 7.5,3.36 z"
+       style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black,  Heavy';fill:url(#linearGradient108)"
+       id="path824" />
+    <path
+       d="m 204.25405,10.2 h 17.22 q 7.02,0 12.06,2.52 5.1,2.52 7.8,7.32 2.7,4.74 2.7,11.28 0,6.6 -2.7,11.4 -2.63999,4.74 -7.74,7.26 -5.04,2.52 -12.12,2.52 h -17.22 z m 16.44,33.42 q 6.24,0 9.3,-3.06 3.06,-3.06 3.06,-9.24 0,-6.18 -3.06,-9.18 -3.06,-3.06 -9.3,-3.06 h -5.4 v 24.54 z"
+       style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black,  Heavy';fill:url(#linearGradient110)"
+       id="path826" />
+    <path
+       d="M 250.6603,52.5 V 10.2 h 30.06 v 8.52 h -19.32 v 8.04 h 18.12 v 8.46 h -18.12 v 8.76 h 19.32 v 8.52 z"
+       style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:40px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans Black,  Heavy';fill:url(#linearGradient112)"
+       id="path828" />
+  </g>
+</svg>
diff --git a/_zet/index.sh b/_zet/index.sh
new file mode 100755 (executable)
index 0000000..fb70cef
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if test $# -lt 1
+then
+  url=http://localhost:8080
+else
+  url="$1"
+fi
+  
+rm -rf site.*
+
+mkdir site.dir
+wget -r -l inf --accept=.html --domains=localhost --directory-prefix=site.dir --no-host-directories $url
+
+for i in `find site.dir -type f`
+do
+  echo -n $i |sed -e 's/^site\.dir\(.*\)/<DOC><DOCNO>\1<\/DOCNO>/'
+  recode --diacritics UTF-8..HTML <$i
+  echo -n '</DOC>'
+done >site.txt
+
+zet -f site -i site.txt
diff --git a/api/account/change_details/get.json.jst b/api/account/change_details/get.json.jst
new file mode 100644 (file)
index 0000000..49b0cd9
--- /dev/null
@@ -0,0 +1,31 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        return {
+          given_names: await account.get_json('given_names'),
+          family_name: await account.get_json('family_name'),
+          contact_me: await account.get_json('contact_me')
+        }
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/account/change_details/get_draft.json.jst b/api/account/change_details/get_draft.json.jst
new file mode 100644 (file)
index 0000000..c8e8031
--- /dev/null
@@ -0,0 +1,25 @@
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let change_details_draft = await session.get_json('change_details_draft')
+        if (change_details_draft === undefined || env.now >= change_details_draft.expires)
+          change_details_draft = null
+        return change_details_draft
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/account/change_details/set.json.jst b/api/account/change_details/set.json.jst
new file mode 100644 (file)
index 0000000..bc276f6
--- /dev/null
@@ -0,0 +1,43 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async details => {
+      details = {
+        given_names: details.given_names.slice(0, 256),
+        family_name: details.family_name.slice(0, 256),
+        contact_me: details.contact_me ? true : false
+      }
+      if (details.given_names.length === 0)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        account.set_json('given_names', details.given_names)
+        account.set_json('family_name', details.family_name)
+        account.set_json('contact_me', details.contact_me)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/change_details/set_draft.json.jst b/api/account/change_details/set_draft.json.jst
new file mode 100644 (file)
index 0000000..cf72d73
--- /dev/null
@@ -0,0 +1,50 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async details => {
+      // coerce and/or validate
+      if (details !== null)
+        details = {
+          given_names: details.given_names.slice(0, 256),
+          family_name: details.family_name.slice(0, 256),
+          contact_me: details.contact_me ? true : false
+        }
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        if (details) {
+          let expires = new XDate(env.now)
+          expires.addDays(1)
+          session.set_json(
+            'change_details_draft',
+            {
+              given_names: details.given_names,
+              family_name: details.family_name,
+              contact_me: details.contact_me,
+              expires: expires.getTime()
+            }
+          )
+        }
+        else
+          session.delete('change_details_draft')
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/change_password.json.jst b/api/account/change_password.json.jst
new file mode 100644 (file)
index 0000000..5adc47c
--- /dev/null
@@ -0,0 +1,47 @@
+let crypto = require('crypto')
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (old_password, new_password) => {
+      // coerce and/or validate
+      old_password = old_password.slice(0, 256)
+      new_password = new_password.slice(0, 256)
+      if (old_password.length < 8 || new_password.length < 8)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (old_password !== await account.get_json('password'))
+          throw new jst_server.Problem(
+            'Incorrect password',
+            `Provided old password did not match the expected value.`,
+            426
+          )
+
+        account.set_json('password', new_password)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/password_reset.json.jst b/api/account/password_reset.json.jst
new file mode 100644 (file)
index 0000000..7a6dba9
--- /dev/null
@@ -0,0 +1,88 @@
+let crypto = require('crypto')
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let get_nodemailer = await _require('/_lib/get_nodemailer.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (email, password) => {
+      // coerce and/or validate
+      email = email.slice(0, 256).toLowerCase()
+      password = password.slice(0, 256)
+      if (email.length === 0 || password.length < 8)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      let link_code
+      let nodemailer
+      let noreply_from, noreply_signature
+      let given_names, family_name
+      try {
+        let root = await transaction.get({})
+        let accounts = await root.get('accounts', {})
+        let account = await accounts.get(email)
+        if (account === undefined)
+          throw new jst_server.Problem(
+            'Account does not exist',
+            `Please create the account for "${email}" before attempting to reset its password.`
+            421
+          )
+
+        link_code = crypto.randomBytes(16).toString('hex')
+        let expires = new XDate(env.now)
+        expires.addDays(1)
+        account.set_json(
+          'verify_password',
+          {password, link_code, expires: expires.getTime()}
+        )
+
+        nodemailer = await get_nodemailer(root, 'noreply')
+
+        let globals = await root.get('globals', {})
+        site_url = await globals.get_json('site_url')
+        noreply_from = await globals.get_json('noreply_from')
+        noreply_signature = await globals.get_json('noreply_signature')
+
+        given_names = await account.get_json('given_names', '')
+        family_name = await account.get_json('family_name', '')
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+
+      let name =
+        family_name.length ? `${given_names} ${family_name}` : given_names
+      await nodemailer.sendMail(
+        {
+          from: noreply_from,
+          to: `${name} <${email}>`,
+          subject: 'Password reset',
+          text: `Dear ${given_names},
+
+We have received a request to reset the account password for your email address.
+
+If this request is valid, please verify the new password by visiting the below link:
+${site_url}/my_account/verify_password/index.html?email=${encodeURIComponent(email)}&link_code=${encodeURIComponent(link_code)}
+
+The link is valid for 24 hours.
+
+Thanks,
+${noreply_signature}
+`
+        }
+      )
+    }
+  )
+}
diff --git a/api/account/send_email_verification_link.json.jst b/api/account/send_email_verification_link.json.jst
new file mode 100644 (file)
index 0000000..f039e0d
--- /dev/null
@@ -0,0 +1,94 @@
+let crypto = require('crypto')
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let get_nodemailer = await _require('/_lib/get_nodemailer.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async email => {
+      // coerce and/or validate
+      email = email.slice(0, 256).toLowerCase()
+      if (email.length === 0)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      let link_code
+      let nodemailer
+      let site_url, noreply_from, noreply_signature
+      let given_names, family_name
+      try {
+        let root = await transaction.get({})
+        let accounts = await root.get('accounts', {})
+        let account = await accounts.get(email)
+        if (account === undefined)
+          throw new jst_server.Problem(
+            'Account does not exist',
+            `Please create the account for "${email}" before attempting to send an email verification link.`
+            421
+          )
+
+        if (await account.get_json('email_verified'))
+          throw new jst_server.Problem(
+            'Email already verified',
+            `Your email "${email}" is already verified. You can now sign in.`
+            422
+          )
+
+        link_code = crypto.randomBytes(16).toString('hex')
+        let expires = new XDate(env.now)
+        expires.addDays(1)
+        account.set_json(
+          'verify_email',
+          {link_code, expires: expires.getTime()}
+        )
+
+        nodemailer = await get_nodemailer(root, 'noreply')
+
+        let globals = await root.get('globals', {})
+        site_url = await globals.get_json('site_url')
+        noreply_from = await globals.get_json('noreply_from')
+        noreply_signature = await globals.get_json('noreply_signature')
+
+        given_names = await account.get_json('given_names', '')
+        family_name = await account.get_json('family_name', '')
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+
+      let name =
+        family_name.length ? `${given_names} ${family_name}` : given_names
+      await nodemailer.sendMail(
+        {
+          from: noreply_from,
+          to: `${name} <${email}>`,
+          subject: 'Email address verification',
+          text: `Dear ${given_names},
+
+We have received a request to sign up using your email address.
+
+If this request is valid, please verify your email address by visiting the below link:
+${site_url}/my_account/verify_email/index.html?email=${encodeURIComponent(email)}&link_code=${encodeURIComponent(link_code)}
+
+The link is valid for 24 hours.
+
+Thanks,
+${noreply_signature}
+`
+        }
+      )
+    }
+  )
+}
diff --git a/api/account/sign_in.json.jst b/api/account/sign_in.json.jst
new file mode 100644 (file)
index 0000000..87961f5
--- /dev/null
@@ -0,0 +1,55 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (email, password) => {
+      // coerce and/or validate
+      email = email.slice(0, 256).toLowerCase()
+      password = password.slice(0, 256)
+      if (email.length === 0 || password.length < 8)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let accounts = await root.get('accounts', {})
+        let account = await accounts.get(email)
+        if (
+          account === undefined ||
+            password !== await account.get_json('password')
+        )
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Email and password combination was incorrect.'
+            401
+          )
+
+        if (!await account.get_json('email_verified'))
+          throw new jst_server.Problem(
+            'Email not yet verified',
+            'Please verify your email address via email link before trying to sign in.',
+            425
+          )
+
+        session.set_json('signed_in_as', email)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/sign_out.json.jst b/api/account/sign_out.json.jst
new file mode 100644 (file)
index 0000000..992cfa0
--- /dev/null
@@ -0,0 +1,25 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+        session.delete('signed_in_as')
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/sign_up/create_account.json.jst b/api/account/sign_up/create_account.json.jst
new file mode 100644 (file)
index 0000000..c00faf4
--- /dev/null
@@ -0,0 +1,76 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (verification_code, details) => {
+      // coerce and/or validate
+      verification_code = verification_code.slice(0, 6).toLowerCase()
+      details = {
+        email: details.email.slice(0, 256).toLowerCase(),
+        given_names: details.given_names.slice(0, 256),
+        family_name: details.family_name.slice(0, 256),
+        password: details.password.slice(0, 256),
+        contact_me: details.contact_me ? true : false
+      }
+      if (
+        verification_code.length < 6 ||
+          details.given_names.length === 0 ||
+          details.password.length < 8
+      )
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let captcha = await session.get('captcha')
+        if (
+          captcha === undefined ||
+            env.now >= await captcha.get_json('expires')
+        )
+          throw new jst_server.Problem(
+            'No verification image in session',
+            `Please call the "/api/verification_image.png" endpoint to create a verification image, in same session as the "/api/account/sign_up/create_account.json" call and less than one hour prior.`,
+            418
+          )
+
+        let captcha_text = await captcha.get_json('text')
+        if (verification_code !== captcha_text) {
+          console.log(`verification code mismatch, \"${verification_code}\" should be \"${captcha_text}\"`)
+
+          throw new jst_server.Problem(
+            'Verification code mismatch',
+            `The provided verification code "${verification_code}" did not match the verification image.`,
+            419
+          )
+        }
+
+        let accounts = await root.get('accounts', {})
+        if (accounts.has(details.email))
+          throw new jst_server.Problem(
+            'Account already exists',
+            `The email "${details.email}" already has an account registered.`,
+            420
+          )
+
+        accounts.set_json(details.email, details)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/sign_up/get_draft.json.jst b/api/account/sign_up/get_draft.json.jst
new file mode 100644 (file)
index 0000000..d9616cb
--- /dev/null
@@ -0,0 +1,25 @@
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let sign_up_draft = await session.get_json('sign_up_draft')
+        if (sign_up_draft === undefined || env.now >= sign_up_draft.expires)
+          sign_up_draft = null
+        return sign_up_draft
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/account/sign_up/set_draft.json.jst b/api/account/sign_up/set_draft.json.jst
new file mode 100644 (file)
index 0000000..4bd2271
--- /dev/null
@@ -0,0 +1,52 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async details => {
+      // coerce and/or validate
+      if (details !== null)
+        details = {
+          email: details.email.slice(0, 256).toLowerCase(),
+          given_names: details.given_names.slice(0, 256),
+          family_name: details.family_name.slice(0, 256),
+          contact_me: details.contact_me ? true : false
+        }
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        if (details) {
+          let expires = new XDate(env.now)
+          expires.addDays(1)
+          session.set_json(
+            'sign_up_draft',
+            {
+              email: details.email,
+              given_names: details.given_names,
+              family_name: details.family_name,
+              contact_me: details.contact_me,
+              expires: expires.getTime()
+            }
+          )
+        }
+        else
+          session.delete('sign_up_draft')
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/verify_email.json.jst b/api/account/verify_email.json.jst
new file mode 100644 (file)
index 0000000..a90d900
--- /dev/null
@@ -0,0 +1,68 @@
+let crypto = require('crypto')
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (email, link_code) => {
+      // coerce and/or validate
+      email = email.slice(0, 256).toLowerCase()
+      link_code = link_code.slice(0, 256).toLowerCase()
+      if (email.length === 0 || link_code.length < 32)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get({})
+        let accounts = await root.get('accounts', {})
+        let account = await accounts.get(email)
+        if (account === undefined)
+          throw new jst_server.Problem(
+            'Account does not exist',
+            `Please create the account for "${email}" before attempting to verify the email verification link.`
+            421
+          )
+
+        if (await account.get_json('email_verified'))
+          throw new jst_server.Problem(
+            'Email already verified',
+            `Your email "${email}" is already verified. You can now sign in.`
+            422
+          )
+
+        let verify_email = await account.get('verify_email')
+        if (
+          verify_email === undefined ||
+            env.now >= await verify_email.get_json('expires')
+        )
+          throw new jst_server.Problem(
+            'Link code missing',
+            `Email verification link code for account "${email}" does not exist or has expired.`,
+            423
+          )
+        if (link_code !== await verify_email.get_json('link_code'))
+          throw new jst_server.Problem(
+            'Link code mismatch',
+            `Provided email verification link code "${link_code}" does not match expected value.`,
+            423
+          )
+
+        await account.delete('verify_email')
+        await account.set('email_verified', true)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/account/verify_password.json.jst b/api/account/verify_password.json.jst
new file mode 100644 (file)
index 0000000..c396b56
--- /dev/null
@@ -0,0 +1,62 @@
+let crypto = require('crypto')
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (email, link_code) => {
+      // coerce and/or validate
+      email = email.slice(0, 256).toLowerCase()
+      link_code = link_code.slice(0, 256).toLowerCase()
+      if (email.length === 0 || link_code.length < 32)
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get({})
+        let accounts = await root.get('accounts', {})
+        let account = await accounts.get(email)
+        if (account === undefined)
+          throw new jst_server.Problem(
+            'Account does not exist',
+            `Please create the account for "${email}" before attempting to verify the password reset link.`
+            421
+          )
+
+        let verify_password = await account.get('verify_password')
+        if (
+          verify_password === undefined ||
+            env.now >= await verify_password.get_json('expires')
+        )
+          throw new jst_server.Problem(
+            'Link code missing',
+            `Password reset link code for account "${email}" does not exist or has expired.`,
+            423
+          )
+        if (link_code !== await verify_password.get_json('link_code'))
+          throw new jst_server.Problem(
+            'Link code mismatch',
+            `Provided password reset link code "${link_code}" does not match expected value.`,
+            423
+          )
+
+        await account.delete('verify_password')
+        await account.set('password', await verify_password.get('password'))
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/contact/get_draft.json.jst b/api/contact/get_draft.json.jst
new file mode 100644 (file)
index 0000000..b106653
--- /dev/null
@@ -0,0 +1,25 @@
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let contact_draft = await session.get_json('contact_draft')
+        if (contact_draft === undefined || env.now >= contact_draft.expires)
+          contact_draft = null
+        return contact_draft
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/contact/send_enquiry.json.jst b/api/contact/send_enquiry.json.jst
new file mode 100644 (file)
index 0000000..daa735b
--- /dev/null
@@ -0,0 +1,67 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let get_nodemailer = await _require('/_lib/get_nodemailer.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async details => {
+      // coerce and/or validate
+      details = {
+        given_names: details.given_names.slice(0, 256),
+        family_name: details.family_name.slice(0, 256),
+        company: details.company.slice(0, 256),
+        email: details.email.slice(0, 256).toLowerCase(),
+        message: details.message.slice(0, 65536),
+      }
+      if (
+        details.given_names.length === 0 ||
+          details.email.length === 0 ||
+          details.message.length === 0
+      )
+        throw new jst_server.Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      let nodemailer
+      let contact_from, contact_to
+      try {
+        let root = await transaction.get({})
+
+        nodemailer = await get_nodemailer(root, 'contact')
+
+        let globals = await root.get('globals', {})
+        contact_from = await globals.get_json('contact_from')
+        contact_to = await globals.get_json('contact_to')
+      }
+      finally {
+        transaction.rollback()
+      }
+
+      let name =
+        details.family_name.length ?
+          `${details.given_names} ${details.family_name}` :
+          details.given_names
+      let subject =
+        details.company.length ?
+          `Enquiry: ${details.company}` :
+          'Enquiry'
+      await nodemailer.sendMail(
+        {
+          from: contact_from,
+          to: contact_to,
+          replyTo: `${name} <${details.email}>`,
+          subject,
+          text: details.message
+        }
+      )
+    }
+  )
+}
diff --git a/api/contact/set_draft.json.jst b/api/contact/set_draft.json.jst
new file mode 100644 (file)
index 0000000..a596d4a
--- /dev/null
@@ -0,0 +1,54 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async details => {
+      // coerce and/or validate
+      if (details !== null)
+        details = {
+          given_names: details.given_names.slice(0, 256),
+          family_name: details.family_name.slice(0, 256),
+          company: details.company.slice(0, 256),
+          email: details.email.slice(0, 256).toLowerCase(),
+          message: details.message.slice(0, 65536),
+        }
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        if (details) {
+          let expires = new XDate(env.now)
+          expires.addDays(1)
+          session.set_json(
+            'contact_draft',
+            {
+              given_names: details.given_names,
+              family_name: details.family_name,
+              company: details.company,
+              email: details.email,
+              message: details.message,
+              expires: expires.getTime()
+            }
+          )
+        }
+        else
+          session.delete('contact_draft')
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/errors.json b/api/errors.json
new file mode 100644 (file)
index 0000000..81f27b8
--- /dev/null
@@ -0,0 +1,38 @@
+{
+  "400": "Bad request",
+  "401": "Unauthorized",
+  "402": "Payment required",
+  "403": "Forbidden",
+  "404": "Not found",
+  "405": "Method not allowed",
+  "406": "Not acceptable",
+  "407": "Proxy authentication required",
+  "408": "Request timeout",
+  "409": "Conflict",
+  "410": "Gone",
+  "411": "Length required",
+  "412": "Precondition failed",
+  "413": "Request entity too large",
+  "414": "Request URI too long",
+  "415": "Unsupported media type",
+  "417": "Expectation failed",
+  "418": "No verification image in session",
+  "419": "Verification code mismatch",
+  "420": "Account already exists",
+  "421": "Account does not exist",
+  "422": "Email already verified",
+  "423": "Link code missing",
+  "424": "Link code mismatch",
+  "425": "Email not yet verified",
+  "426": "Incorrect password",
+  "500": "Internal server error",
+  "501": "Not implemented",
+  "502": "Bad gateway",
+  "503": "Service unavailable",
+  "504": "Gateway timeout",
+  "505": "HTTP version not supported",
+  "506": "Session expired",
+  "507": "Account expired",
+  "508": "Navigation error",
+  "509": "Nodemailer error"
+}
diff --git a/api/feedback/get_draft.json.jst b/api/feedback/get_draft.json.jst
new file mode 100644 (file)
index 0000000..52b2196
--- /dev/null
@@ -0,0 +1,25 @@
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let feedback_draft = await session.get_json('feedback_draft')
+        if (feedback_draft === undefined || env.now >= feedback_draft.expires)
+          feedback_draft = null
+        return feedback_draft
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/feedback/send_message.json.jst b/api/feedback/send_message.json.jst
new file mode 100644 (file)
index 0000000..4d3ea47
--- /dev/null
@@ -0,0 +1,48 @@
+let XDate = require('xdate')
+
+return async env => {
+  let get_nodemailer = await _require('/_lib/get_nodemailer.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async (page, message) => {
+      // coerce and/or validate
+      page = page.slice(0, 256)
+      mesage = message.slice(0, 65536)
+      if (page.length === 0 || message.length === 0)
+        throw new Problem(
+          'Bad request',
+          'Minimum length check failed',
+          400
+        )
+
+      let transaction = await env.site.database.Transaction()
+      let nodemailer
+      let feedback_from, feedback_to
+      try {
+        let root = await transaction.get({})
+
+        nodemailer = await get_nodemailer(root, 'feedback')
+
+        let globals = await root.get('globals', {})
+        feedback_from = await globals.get_json('feedback_from')
+        feedback_to = await globals.get_json('feedback_to')
+      }
+      finally {
+        transaction.rollback()
+      }
+
+      await nodemailer.sendMail(
+        {
+          from: feedback_from,
+          to: feedback_to,
+          subject: 'Page: ' + page,
+          text: message
+        }
+      )
+    }
+  )
+}
diff --git a/api/feedback/set_draft.json.jst b/api/feedback/set_draft.json.jst
new file mode 100644 (file)
index 0000000..26ebddf
--- /dev/null
@@ -0,0 +1,46 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+let XDate = require('xdate')
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async details => {
+      // coerce and/or validate
+      if (details !== null)
+        details = {
+          message: details.message.slice(0, 65536)
+        }
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        if (details) {
+          let expires = new XDate(env.now)
+          expires.addDays(1)
+          session.set_json(
+            'feedback_draft',
+            {
+              message: details.message,
+              expires: expires.getTime()
+            }
+          )
+        }
+        else
+          session.delete('feedback_draft')
+
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/globals/get.json.jst b/api/globals/get.json.jst
new file mode 100644 (file)
index 0000000..47e07b9
--- /dev/null
@@ -0,0 +1,33 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (!await account.get_json('administrator'))
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Not administrator.',
+            401
+          )
+
+        return /*await*/ root.get_json('globals', {})
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/globals/set.json.jst b/api/globals/set.json.jst
new file mode 100644 (file)
index 0000000..70c684a
--- /dev/null
@@ -0,0 +1,48 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let post_request = await _require('/_lib/post_request.jst')
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async globals => {
+      // coerce and/or validate
+      globals = {
+        site_url: globals.site_url.slice(0, 1024),
+        site_title: globals.site_title.slice(0, 1024),
+        contact_from: globals.contact_from.slice(0, 1024),
+        contact_to: globals.contact_to.slice(0, 1024),
+        feedback_from: globals.feedback_from.slice(0, 1024),
+        feedback_to: globals.feedback_to.slice(0, 1024),
+        noreply_from: globals.noreply_from.slice(0, 1024),
+        noreply_signature: globals.noreply_signature.slice(0, 1024),
+        copyright: globals.copyright.slice(0, 1024)
+      }
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (!await account.get_json('administrator'))
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Not administrator.',
+            401
+          )
+
+        root.set_json('globals', globals)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/navigation/get.json.jst b/api/navigation/get.json.jst
new file mode 100644 (file)
index 0000000..0ce121c
--- /dev/null
@@ -0,0 +1,33 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (!await account.get_json('administrator'))
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Not administrator.',
+            401
+          )
+
+        return /*await*/ root.get_json('navigation', {})
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/navigation/set.json.jst b/api/navigation/set.json.jst
new file mode 100644 (file)
index 0000000..6ef4a88
--- /dev/null
@@ -0,0 +1,38 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async navigation => {
+      // do not bother trying to coerce and/or validate
+      // too complex and nested (do it when we have an automated routine)
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (!await account.get_json('administrator'))
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Not administrator.',
+            401
+          )
+
+        root.set_json('navigation', navigation)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/nodemailers/get.json.jst b/api/nodemailers/get.json.jst
new file mode 100644 (file)
index 0000000..656a4d1
--- /dev/null
@@ -0,0 +1,33 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async () => {
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (!await account.get_json('administrator'))
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Not administrator.',
+            401
+          )
+
+        return /*await*/ root.get_json('nodemailers', {})
+      }
+      finally {
+        transaction.rollback()
+      }
+    }
+  )
+}
diff --git a/api/nodemailers/set.json.jst b/api/nodemailers/set.json.jst
new file mode 100644 (file)
index 0000000..38d9000
--- /dev/null
@@ -0,0 +1,38 @@
+let jst_server = (await import('@ndcode/jst_server')).default
+
+return async env => {
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let post_request = await _require('/_lib/post_request.jst')
+
+  await post_request(
+    // env
+    env,
+    // handler
+    async nodemailers => {
+      // do not bother trying to coerce and/or validate
+      // too complex and nested (do it when we have an automated routine)
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let session = await get_session(env, root)
+
+        let account = await get_account(root, session)
+        if (!await account.get_json('administrator'))
+          throw new jst_server.Problem(
+            'Unauthorized',
+            'Not administrator.',
+            401
+          )
+
+        root.set_json('nodemailers', nodemailers)
+        await transaction.commit()
+      }
+      catch (error) {
+        transaction.rollback()
+        throw error
+      }
+    }
+  )
+}
diff --git a/api/verification_image.png.jst b/api/verification_image.png.jst
new file mode 100644 (file)
index 0000000..3a41041
--- /dev/null
@@ -0,0 +1,35 @@
+let captchagen = require('captchagen')
+let util = require('util')
+let XDate = require('xdate')
+
+return async env => {
+  let get_session = await _require('/_lib/get_session.jst')
+
+  let captcha = captchagen.create()
+  captcha.generate()
+
+  let transaction = await env.site.database.Transaction()
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+
+    // store captcha text in the session for validation when form submitted
+    let expires = new XDate(env.now)
+    expires.addHours(1)
+    session.set_json(
+      'captcha',
+      {text: captcha.text(), expires: expires.getTime()}
+    )
+
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  // serve the png file
+  env.caching = false
+  let captcha_buffer = util.promisify(captcha.buffer).bind(captcha)
+  env.site.serve(env, 200, await captcha_buffer(), 'verification_image.png.jst')
+}
diff --git a/blog/20220131/_render/gears.FCStd b/blog/20220131/_render/gears.FCStd
new file mode 100644 (file)
index 0000000..66c9698
Binary files /dev/null and b/blog/20220131/_render/gears.FCStd differ
diff --git a/blog/20220131/_render/gears2.FCStd b/blog/20220131/_render/gears2.FCStd
new file mode 100644 (file)
index 0000000..b1ac71c
Binary files /dev/null and b/blog/20220131/_render/gears2.FCStd differ
diff --git a/blog/20220131/_render/gears2.pov b/blog/20220131/_render/gears2.pov
new file mode 100644 (file)
index 0000000..2933a1a
--- /dev/null
@@ -0,0 +1,31311 @@
+// Persistence of Vision Ray Tracer Scene Description File
+// for FreeCAD (http://www.freecadweb.org)
+
+#version 3.6;
+
+#include "colors.inc"    // The include files contain
+#include "stones.inc"    // pre-defined scene elements
+#include "textures.inc"    // pre-defined scene elements
+#include "shapes.inc"
+#include "glass.inc"
+#include "metals.inc"
+#include "woods.inc"
+
+global_settings {
+  assumed_gamma 1.0
+  ambient_light color rgb <0.1, 0.1, 0.1>
+  max_trace_level 20
+}  
+
+// Generated by FreeCAD (http://www.freecadweb.org/)
+//#declare cam_location =  <68.8262,75.6316,-74.8594>;
+//#declare cam_look_at  = <31.1463,-4.1183,3.84135>;
+//#declare cam_sky      = <-0.26491,0.737828,0.620832>;
+//#declare cam_angle    = 45; 
+camera {
+  location  <75, 75, 125> //cam_location
+  look_at   <25, 15, 0> //cam_look_at
+  //sky       cam_sky
+  angle     45 //cam_angle 
+  right x*800/600
+}
+
+//default light
+//light_source {
+//  cam_location + cam_angle * 100
+//  color rgb <10, 10, 10>
+//}
+
+//light_source {
+//  <50, 100, -100>     // position
+//  color White
+//  spotlight    // specifies spotlight
+//  radius 15    // cone opening from its axis in degrees. Light start to dim outside of this.
+//  falloff 20   // outside of this, there is no light.
+//  tightness 1  // over-all coherence of the light beam
+//  point_at <0, 0, 0>
+//}
+
+light_source {
+  <0, 100, 100> // position of a coner of the light plane
+  color White
+  area_light <50, 0, 0>, <0, 0, -50>, 4, 4 // light plane's edges; m by n bulbs
+}
+
+sky_sphere {
+  pigment {
+    gradient y
+    color_map {
+      [0.0 rgb <0.6,0.7,1.0>]
+      [0.7 rgb <0.0,0.1,0.8>]
+    }
+  }
+}
+
+plane {
+  y, -5
+  texture {
+    //pigment {rgb <0.0,0.0,0.0>}
+    //finish {ambient 0.0 reflection 0.05 specular 0.0}
+
+    //pigment {DMFWood4 scale 40}
+    //finish {Shiny}
+
+    //Metal
+
+    //pigment {granite scale 40}
+    //finish {Shiny}
+
+    pigment {color White}
+    finish {ambient 0.0 reflection 0.1 specular 0.0}
+  }
+}
+
+//sphere {
+//  <0, 0, 0>, 25
+//  //pigment {
+//  //  White
+//  //  filter 1
+//  //}
+//  //finish {
+//  //  ambient 0
+//  //  diffuse 0
+//  //  reflection .25
+//  //  specular 1
+//  //  roughness .001
+//  //}
+//  //interior {
+//  //  ior 1.33
+//  //}
+//  pigment { Gray50 }
+//  finish {
+//    ambient .2
+//    diffuse .6
+//    phong .75
+//    phong_size 25
+//  }
+//}
+
+// Written by FreeCAD http://www.freecadweb.org/
+// face number1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body1 = mesh2{
+  vertex_vectors {
+    4,
+    <30.2121,-5,-2.27988>,
+    <30.2121,5,-2.27988>,
+    <30.5025,5,-2.29991>,
+    <30.5025,-5,-2.29991>,
+  }
+  normal_vectors {
+    4,
+    <-0.068802,-0,-0.99763>,
+    <-0.068802,-0,-0.99763>,
+    <-0.068802,-0,-0.99763>,
+    <-0.068802,-0,-0.99763>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face1
+
+
+// face number2 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body2 = mesh2{
+  vertex_vectors {
+    16,
+    <29.2094,-5,-3.11486>,
+    <29.2094,5,-3.11486>,
+    <29.2536,5,-2.91392>,
+    <29.3406,5,-2.72746>,
+    <29.4662,5,-2.56448>,
+    <29.6243,5,-2.43282>,
+    <29.8073,5,-2.33881>,
+    <30.0065,5,-2.287>,
+    <30.2121,5,-2.27988>,
+    <30.2121,-5,-2.27988>,
+    <29.2536,-5,-2.91392>,
+    <29.3406,-5,-2.72746>,
+    <29.4662,-5,-2.56448>,
+    <29.6243,-5,-2.43282>,
+    <29.8073,-5,-2.33881>,
+    <30.0065,-5,-2.287>,
+  }
+  normal_vectors {
+    16,
+    <0.994311,-0,-0.106513>,
+    <0.994311,-0,-0.106513>,
+    <0.947129,-0,-0.320853>,
+    <0.854325,-0,-0.519739>,
+    <0.720371,-0,-0.693589>,
+    <0.551718,-0,-0.83403>,
+    <0.356491,-0,-0.934299>,
+    <0.144091,-0,-0.989564>,
+    <-0.0752489,-0,-0.997165>,
+    <-0.0752489,-0,-0.997165>,
+    <0.947129,-0,-0.320853>,
+    <0.854325,-0,-0.519739>,
+    <0.720371,-0,-0.693589>,
+    <0.551718,-0,-0.83403>,
+    <0.356491,-0,-0.934299>,
+    <0.144091,-0,-0.989564>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face2
+
+// face number3 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body3 = mesh2{
+  vertex_vectors {
+    5,
+    <30.5025,-5,-2.29991>,
+    <30.5025,5,-2.29991>,
+    <31.6763,5,-2.15807>,
+    <31.6763,-5,-2.15807>,
+    <30.8936,0,-2.28129>,
+  }
+  normal_vectors {
+    5,
+    <-0.0188336,0,-0.999823>,
+    <-0.0188336,0,-0.999823>,
+    <0.205624,-0,-0.978631>,
+    <0.205624,-0,-0.978631>,
+    <0.0948188,-0,-0.995495>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face3
+
+// face number4 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body4 = mesh2{
+  vertex_vectors {
+    731,
+    <27.3425,-5,-1e-15>,
+    <27.1432,-5,3.29578>,
+    <26.548,-5,6.5435>,
+    <25.5657,-5,9.6958>,
+    <24.2106,-5,12.7067>,
+    <22.5025,-5,15.5323>,
+    <20.4662,-5,18.1315>,
+    <18.1315,-5,20.4662>,
+    <15.5323,-5,22.5025>,
+    <12.7067,-5,24.2106>,
+    <9.6958,-5,25.5657>,
+    <6.5435,-5,26.548>,
+    <3.29578,-5,27.1432>,
+    <1.38168e-14,-5,27.3425>,
+    <-3.29578,-5,27.1432>,
+    <-6.5435,-5,26.548>,
+    <-9.6958,-5,25.5657>,
+    <-12.7067,-5,24.2106>,
+    <-15.5323,-5,22.5025>,
+    <-18.1315,-5,20.4662>,
+    <-20.4662,-5,18.1315>,
+    <-22.5025,-5,15.5323>,
+    <-24.2106,-5,12.7067>,
+    <-25.5657,-5,9.6958>,
+    <-26.548,-5,6.5435>,
+    <-27.1432,-5,3.29578>,
+    <-27.3425,-5,5.08086e-14>,
+    <-27.1432,-5,-3.29578>,
+    <-26.548,-5,-6.5435>,
+    <-25.5657,-5,-9.6958>,
+    <-24.2106,-5,-12.7067>,
+    <-22.5025,-5,-15.5323>,
+    <-20.4662,-5,-18.1315>,
+    <-18.1315,-5,-20.4662>,
+    <-15.5323,-5,-22.5025>,
+    <-12.7067,-5,-24.2106>,
+    <-9.6958,-5,-25.5657>,
+    <-6.5435,-5,-26.548>,
+    <-3.29578,-5,-27.1432>,
+    <-2.93078e-14,-5,-27.3425>,
+    <3.29578,-5,-27.1432>,
+    <6.5435,-5,-26.548>,
+    <9.6958,-5,-25.5657>,
+    <12.7067,-5,-24.2106>,
+    <15.5323,-5,-22.5025>,
+    <18.1315,-5,-20.4662>,
+    <20.4662,-5,-18.1315>,
+    <22.5025,-5,-15.5323>,
+    <24.2106,-5,-12.7067>,
+    <25.5657,-5,-9.6958>,
+    <26.548,-5,-6.5435>,
+    <27.1432,-5,-3.29578>,
+    <29.2094,-5,-3.11486>,
+    <29.2536,-5,-2.91392>,
+    <29.3406,-5,-2.72746>,
+    <29.4662,-5,-2.56448>,
+    <29.6243,-5,-2.43282>,
+    <29.8073,-5,-2.33881>,
+    <30.0065,-5,-2.287>,
+    <30.2121,-5,-2.27988>,
+    <30.5025,-5,-2.29991>,
+    <31.6763,-5,-2.15807>,
+    <32.1825,-5,-2.03556>,
+    <32.2182,-5,-1.35754>,
+    <32.2397,-5,-0.678921>,
+    <32.2468,-5,-1e-15>,
+    <32.2397,-5,0.678921>,
+    <32.2182,-5,1.35754>,
+    <32.1825,-5,2.03556>,
+    <31.6763,-5,2.15807>,
+    <30.5025,-5,2.29991>,
+    <30.2121,-5,2.27988>,
+    <30.0065,-5,2.287>,
+    <29.8073,-5,2.33881>,
+    <29.6243,-5,2.43282>,
+    <29.4662,-5,2.56448>,
+    <29.3406,-5,2.72746>,
+    <29.2536,-5,2.91392>,
+    <29.2094,-5,3.11486>,
+    <29.1777,-5,3.39888>,
+    <29.1433,-5,3.68257>,
+    <29.1061,-5,3.96591>,
+    <29.1009,-5,4.1716>,
+    <29.1408,-5,4.37346>,
+    <29.2237,-5,4.56176>,
+    <29.3457,-5,4.72744>,
+    <29.5009,-5,4.86251>,
+    <29.6819,-5,4.96047>,
+    <29.8798,-5,5.0166>,
+    <30.1666,-5,5.06666>,
+    <31.2723,-5,5.48527>,
+    <31.7345,-5,5.72537>,
+    <31.4653,-5,7.05627>,
+    <31.1404,-5,8.37465>,
+    <30.7602,-5,9.67819>,
+    <30.2393,-5,9.67598>,
+    <29.0658,-5,9.53281>,
+    <28.7886,-5,9.44386>,
+    <28.5872,-5,9.40156>,
+    <28.3815,-5,9.40422>,
+    <28.1813,-5,9.45168>,
+    <27.9963,-5,9.54169>,
+    <27.8353,-5,9.66988>,
+    <27.7062,-5,9.8301>,
+    <27.6152,-5,10.0146>,
+    <27.5164,-5,10.2828>,
+    <27.4151,-5,10.55>,
+    <27.3112,-5,10.8162>,
+    <27.257,-5,11.0147>,
+    <27.2473,-5,11.2202>,
+    <27.2828,-5,11.4229>,
+    <27.3616,-5,11.613>,
+    <27.48,-5,11.7812>,
+    <27.6322,-5,11.9197>,
+    <27.811,-5,12.0215>,
+    <28.0775,-5,12.1388>,
+    <29.0508,-5,12.8098>,
+    <29.4422,-5,13.1536>,
+    <28.8623,-5,14.3814>,
+    <28.2313,-5,15.5837>,
+    <27.5502,-5,16.7584>,
+    <27.045,-5,16.6316>,
+    <25.9398,-5,16.2117>,
+    <25.692,-5,16.059>,
+    <25.5066,-5,15.9697>,
+    <25.3062,-5,15.9231>,
+    <25.1004,-5,15.9213>,
+    <24.8993,-5,15.9644>,
+    <24.7123,-5,16.0503>,
+    <24.5486,-5,16.175>,
+    <24.4161,-5,16.3324>,
+    <24.256,-5,16.5691>,
+    <24.0937,-5,16.8043>,
+    <23.9291,-5,17.0379>,
+    <23.8289,-5,17.2176>,
+    <23.7704,-5,17.4149>,
+    <23.7563,-5,17.6202>,
+    <23.7874,-5,17.8236>,
+    <23.862,-5,18.0153>,
+    <23.9767,-5,18.1861>,
+    <24.1259,-5,18.3278>,
+    <24.3566,-5,18.5054>,
+    <25.1411,-5,19.3899>,
+    <25.4388,-5,19.8173>,
+    <24.582,-5,20.8707>,
+    <23.6815,-5,21.887>,
+    <22.7391,-5,22.8646>,
+    <22.279,-5,22.6206>,
+    <21.3064,-5,21.9484>,
+    <21.1022,-5,21.7408>,
+    <20.9436,-5,21.6098>,
+    <20.7602,-5,21.5166>,
+    <20.5609,-5,21.4655>,
+    <20.3552,-5,21.4592>,
+    <20.1531,-5,21.498>,
+    <19.9644,-5,21.5798>,
+    <19.798,-5,21.7009>,
+    <19.586,-5,21.8925>,
+    <19.372,-5,22.082>,
+    <19.1563,-5,22.2694>,
+    <19.0161,-5,22.42>,
+    <18.912,-5,22.5975>,
+    <18.8492,-5,22.7934>,
+    <18.8307,-5,22.9983>,
+    <18.8573,-5,23.2024>,
+    <18.9278,-5,23.3957>,
+    <19.0387,-5,23.569>,
+    <19.2202,-5,23.7966>,
+    <19.7702,-5,24.8431>,
+    <19.957,-5,25.3294>,
+    <18.873,-5,26.1471>,
+    <17.7555,-5,26.9184>,
+    <16.6065,-5,27.642>,
+    <16.2181,-5,27.295>,
+    <15.4346,-5,26.4096>,
+    <15.2861,-5,26.1592>,
+    <15.1635,-5,25.994>,
+    <15.0077,-5,25.8596>,
+    <14.8264,-5,25.7623>,
+    <14.6282,-5,25.707>,
+    <14.4227,-5,25.6962>,
+    <14.2198,-5,25.7306>,
+    <14.0293,-5,25.8083>,
+    <13.7776,-5,25.9436>,
+    <13.5246,-5,26.0764>,
+    <13.2702,-5,26.2067>,
+    <13.098,-5,26.3193>,
+    <12.9546,-5,26.4668>,
+    <12.8467,-5,26.642>,
+    <12.7796,-5,26.8365>,
+    <12.7567,-5,27.041>,
+    <12.7788,-5,27.2456>,
+    <12.8451,-5,27.4403>,
+    <12.9668,-5,27.7048>,
+    <13.2504,-5,28.8526>,
+    <13.3154,-5,29.3694>,
+    <12.0672,-5,29.9039>,
+    <10.7975,-5,30.3854>,
+    <9.5088,-5,30.813>,
+    <9.21473,-5,30.3831>,
+    <8.6659,-5,29.3359>,
+    <8.58164,-5,29.0573>,
+    <8.50206,-5,28.8675>,
+    <8.383,-5,28.6997>,
+    <8.23021,-5,28.5619>,
+    <8.05103,-5,28.4608>,
+    <7.8541,-5,28.4011>,
+    <7.64891,-5,28.3859>,
+    <7.44534,-5,28.4158>,
+    <7.16855,-5,28.4869>,
+    <6.89108,-5,28.5553>,
+    <6.61295,-5,28.621>,
+    <6.41881,-5,28.6891>,
+    <6.2442,-5,28.7979>,
+    <6.09754,-5,28.9422>,
+    <5.98589,-5,29.1151>,
+    <5.91464,-5,29.3081>,
+    <5.88721,-5,29.512>,
+    <5.90492,-5,29.717>,
+    <5.95981,-5,30.0029>,
+    <5.96049,-5,31.1852>,
+    <5.89989,-5,31.7025>,
+    <4.56004,-5,31.9228>,
+    <3.21209,-5,32.0865>,
+    <1.85846,-5,32.1932>,
+    <1.67582,-5,31.7054>,
+    <1.39354,-5,30.5574>,
+    <1.37841,-5,30.2666>,
+    <1.34655,-5,30.0634>,
+    <1.27112,-5,29.8719>,
+    <1.15574,-5,29.7016>,
+    <1.00598,-5,29.5605>,
+    <0.829043,-5,29.4555>,
+    <0.633461,-5,29.3916>,
+    <0.428651,-5,29.3719>,
+    <0.142888,-5,29.3747>,
+    <-0.142888,-5,29.3747>,
+    <-0.428651,-5,29.3719>,
+    <-0.633461,-5,29.3916>,
+    <-0.829043,-5,29.4555>,
+    <-1.00598,-5,29.5605>,
+    <-1.15574,-5,29.7016>,
+    <-1.27112,-5,29.8719>,
+    <-1.34655,-5,30.0634>,
+    <-1.37841,-5,30.2666>,
+    <-1.39354,-5,30.5574>,
+    <-1.67582,-5,31.7054>,
+    <-1.85846,-5,32.1932>,
+    <-3.21209,-5,32.0865>,
+    <-4.56004,-5,31.9228>,
+    <-5.89989,-5,31.7025>,
+    <-5.96049,-5,31.1852>,
+    <-5.95981,-5,30.0029>,
+    <-5.90492,-5,29.717>,
+    <-5.88721,-5,29.512>,
+    <-5.91464,-5,29.3081>,
+    <-5.98589,-5,29.1151>,
+    <-6.09754,-5,28.9422>,
+    <-6.2442,-5,28.7979>,
+    <-6.41881,-5,28.6891>,
+    <-6.61295,-5,28.621>,
+    <-6.89108,-5,28.5553>,
+    <-7.16855,-5,28.4869>,
+    <-7.44534,-5,28.4158>,
+    <-7.64891,-5,28.3859>,
+    <-7.8541,-5,28.4011>,
+    <-8.05103,-5,28.4608>,
+    <-8.23021,-5,28.5619>,
+    <-8.383,-5,28.6997>,
+    <-8.50206,-5,28.8675>,
+    <-8.58164,-5,29.0573>,
+    <-8.6659,-5,29.3359>,
+    <-9.21473,-5,30.3831>,
+    <-9.5088,-5,30.813>,
+    <-10.7975,-5,30.3854>,
+    <-12.0672,-5,29.9039>,
+    <-13.3154,-5,29.3694>,
+    <-13.2504,-5,28.8526>,
+    <-12.9668,-5,27.7048>,
+    <-12.8451,-5,27.4403>,
+    <-12.7788,-5,27.2456>,
+    <-12.7567,-5,27.041>,
+    <-12.7796,-5,26.8365>,
+    <-12.8467,-5,26.642>,
+    <-12.9546,-5,26.4668>,
+    <-13.098,-5,26.3193>,
+    <-13.2702,-5,26.2067>,
+    <-13.5246,-5,26.0764>,
+    <-13.7776,-5,25.9436>,
+    <-14.0293,-5,25.8083>,
+    <-14.2198,-5,25.7306>,
+    <-14.4227,-5,25.6962>,
+    <-14.6282,-5,25.707>,
+    <-14.8264,-5,25.7623>,
+    <-15.0077,-5,25.8596>,
+    <-15.1635,-5,25.994>,
+    <-15.2861,-5,26.1592>,
+    <-15.4346,-5,26.4096>,
+    <-16.2181,-5,27.295>,
+    <-16.6065,-5,27.642>,
+    <-17.7555,-5,26.9184>,
+    <-18.873,-5,26.1471>,
+    <-19.957,-5,25.3294>,
+    <-19.7702,-5,24.8431>,
+    <-19.2202,-5,23.7966>,
+    <-19.0387,-5,23.569>,
+    <-18.9278,-5,23.3957>,
+    <-18.8573,-5,23.2024>,
+    <-18.8307,-5,22.9983>,
+    <-18.8492,-5,22.7934>,
+    <-18.912,-5,22.5975>,
+    <-19.0161,-5,22.42>,
+    <-19.1563,-5,22.2694>,
+    <-19.372,-5,22.082>,
+    <-19.586,-5,21.8925>,
+    <-19.798,-5,21.7009>,
+    <-19.9644,-5,21.5798>,
+    <-20.1531,-5,21.498>,
+    <-20.3552,-5,21.4592>,
+    <-20.5609,-5,21.4655>,
+    <-20.7602,-5,21.5166>,
+    <-20.9436,-5,21.6098>,
+    <-21.1022,-5,21.7408>,
+    <-21.3064,-5,21.9484>,
+    <-22.279,-5,22.6206>,
+    <-22.7391,-5,22.8646>,
+    <-23.6815,-5,21.887>,
+    <-24.582,-5,20.8707>,
+    <-25.4388,-5,19.8173>,
+    <-25.1411,-5,19.3899>,
+    <-24.3566,-5,18.5054>,
+    <-24.1259,-5,18.3278>,
+    <-23.9767,-5,18.1861>,
+    <-23.862,-5,18.0153>,
+    <-23.7874,-5,17.8236>,
+    <-23.7563,-5,17.6202>,
+    <-23.7704,-5,17.4149>,
+    <-23.8289,-5,17.2176>,
+    <-23.9291,-5,17.0379>,
+    <-24.0937,-5,16.8043>,
+    <-24.256,-5,16.5691>,
+    <-24.4161,-5,16.3324>,
+    <-24.5486,-5,16.175>,
+    <-24.7123,-5,16.0503>,
+    <-24.8993,-5,15.9644>,
+    <-25.1004,-5,15.9213>,
+    <-25.3062,-5,15.9231>,
+    <-25.5066,-5,15.9697>,
+    <-25.692,-5,16.059>,
+    <-25.9398,-5,16.2117>,
+    <-27.045,-5,16.6316>,
+    <-27.5502,-5,16.7584>,
+    <-28.2313,-5,15.5837>,
+    <-28.8623,-5,14.3814>,
+    <-29.4422,-5,13.1536>,
+    <-29.0508,-5,12.8098>,
+    <-28.0775,-5,12.1388>,
+    <-27.811,-5,12.0215>,
+    <-27.6322,-5,11.9197>,
+    <-27.48,-5,11.7812>,
+    <-27.3616,-5,11.613>,
+    <-27.2828,-5,11.4229>,
+    <-27.2473,-5,11.2202>,
+    <-27.257,-5,11.0147>,
+    <-27.3112,-5,10.8162>,
+    <-27.4151,-5,10.55>,
+    <-27.5164,-5,10.2828>,
+    <-27.6152,-5,10.0146>,
+    <-27.7062,-5,9.8301>,
+    <-27.8353,-5,9.66988>,
+    <-27.9963,-5,9.54169>,
+    <-28.1813,-5,9.45168>,
+    <-28.3815,-5,9.40422>,
+    <-28.5872,-5,9.40156>,
+    <-28.7886,-5,9.44386>,
+    <-29.0658,-5,9.53281>,
+    <-30.2393,-5,9.67598>,
+    <-30.7602,-5,9.67819>,
+    <-31.1404,-5,8.37465>,
+    <-31.4653,-5,7.05627>,
+    <-31.7345,-5,5.72537>,
+    <-31.2723,-5,5.48527>,
+    <-30.1666,-5,5.06666>,
+    <-29.8798,-5,5.0166>,
+    <-29.6819,-5,4.96047>,
+    <-29.5009,-5,4.86251>,
+    <-29.3457,-5,4.72744>,
+    <-29.2237,-5,4.56176>,
+    <-29.1408,-5,4.37346>,
+    <-29.1009,-5,4.1716>,
+    <-29.1061,-5,3.96591>,
+    <-29.1433,-5,3.68257>,
+    <-29.1777,-5,3.39888>,
+    <-29.2094,-5,3.11486>,
+    <-29.2536,-5,2.91392>,
+    <-29.3406,-5,2.72746>,
+    <-29.4662,-5,2.56448>,
+    <-29.6243,-5,2.43282>,
+    <-29.8073,-5,2.33881>,
+    <-30.0065,-5,2.287>,
+    <-30.2121,-5,2.27988>,
+    <-30.5025,-5,2.29991>,
+    <-31.6763,-5,2.15807>,
+    <-32.1825,-5,2.03556>,
+    <-32.2397,-5,0.678921>,
+    <-32.2397,-5,-0.678921>,
+    <-32.1825,-5,-2.03556>,
+    <-31.6763,-5,-2.15807>,
+    <-30.5025,-5,-2.29991>,
+    <-30.2121,-5,-2.27988>,
+    <-30.0065,-5,-2.287>,
+    <-29.8073,-5,-2.33881>,
+    <-29.6243,-5,-2.43282>,
+    <-29.4662,-5,-2.56448>,
+    <-29.3406,-5,-2.72746>,
+    <-29.2536,-5,-2.91392>,
+    <-29.2094,-5,-3.11486>,
+    <-29.1777,-5,-3.39888>,
+    <-29.1433,-5,-3.68257>,
+    <-29.1061,-5,-3.96591>,
+    <-29.1009,-5,-4.1716>,
+    <-29.1408,-5,-4.37346>,
+    <-29.2237,-5,-4.56176>,
+    <-29.3457,-5,-4.72744>,
+    <-29.5009,-5,-4.86251>,
+    <-29.6819,-5,-4.96047>,
+    <-29.8798,-5,-5.0166>,
+    <-30.1666,-5,-5.06666>,
+    <-31.2723,-5,-5.48527>,
+    <-31.7345,-5,-5.72537>,
+    <-31.4653,-5,-7.05627>,
+    <-31.1404,-5,-8.37465>,
+    <-30.7602,-5,-9.67819>,
+    <-30.2393,-5,-9.67598>,
+    <-29.0658,-5,-9.53281>,
+    <-28.7886,-5,-9.44386>,
+    <-28.5872,-5,-9.40156>,
+    <-28.3815,-5,-9.40422>,
+    <-28.1813,-5,-9.45168>,
+    <-27.9963,-5,-9.54169>,
+    <-27.8353,-5,-9.66988>,
+    <-27.7062,-5,-9.8301>,
+    <-27.6152,-5,-10.0146>,
+    <-27.5164,-5,-10.2828>,
+    <-27.4151,-5,-10.55>,
+    <-27.3112,-5,-10.8162>,
+    <-27.257,-5,-11.0147>,
+    <-27.2473,-5,-11.2202>,
+    <-27.2828,-5,-11.4229>,
+    <-27.3616,-5,-11.613>,
+    <-27.48,-5,-11.7812>,
+    <-27.6322,-5,-11.9197>,
+    <-27.811,-5,-12.0215>,
+    <-28.0775,-5,-12.1388>,
+    <-29.0508,-5,-12.8098>,
+    <-29.4422,-5,-13.1536>,
+    <-28.8623,-5,-14.3814>,
+    <-28.2313,-5,-15.5837>,
+    <-27.5502,-5,-16.7584>,
+    <-27.045,-5,-16.6316>,
+    <-25.9398,-5,-16.2117>,
+    <-25.692,-5,-16.059>,
+    <-25.5066,-5,-15.9697>,
+    <-25.3062,-5,-15.9231>,
+    <-25.1004,-5,-15.9213>,
+    <-24.8993,-5,-15.9644>,
+    <-24.7123,-5,-16.0503>,
+    <-24.5486,-5,-16.175>,
+    <-24.4161,-5,-16.3324>,
+    <-24.256,-5,-16.5691>,
+    <-24.0937,-5,-16.8043>,
+    <-23.9291,-5,-17.0379>,
+    <-23.8289,-5,-17.2176>,
+    <-23.7704,-5,-17.4149>,
+    <-23.7563,-5,-17.6202>,
+    <-23.7874,-5,-17.8236>,
+    <-23.862,-5,-18.0153>,
+    <-23.9767,-5,-18.1861>,
+    <-24.1259,-5,-18.3278>,
+    <-24.3566,-5,-18.5054>,
+    <-25.1411,-5,-19.3899>,
+    <-25.4388,-5,-19.8173>,
+    <-24.582,-5,-20.8707>,
+    <-23.6815,-5,-21.887>,
+    <-22.7391,-5,-22.8646>,
+    <-22.279,-5,-22.6206>,
+    <-21.3064,-5,-21.9484>,
+    <-21.1022,-5,-21.7408>,
+    <-20.9436,-5,-21.6098>,
+    <-20.7602,-5,-21.5166>,
+    <-20.5609,-5,-21.4655>,
+    <-20.3552,-5,-21.4592>,
+    <-20.1531,-5,-21.498>,
+    <-19.9644,-5,-21.5798>,
+    <-19.798,-5,-21.7009>,
+    <-19.586,-5,-21.8925>,
+    <-19.372,-5,-22.082>,
+    <-19.1563,-5,-22.2694>,
+    <-19.0161,-5,-22.42>,
+    <-18.912,-5,-22.5975>,
+    <-18.8492,-5,-22.7934>,
+    <-18.8307,-5,-22.9983>,
+    <-18.8573,-5,-23.2024>,
+    <-18.9278,-5,-23.3957>,
+    <-19.0387,-5,-23.569>,
+    <-19.2202,-5,-23.7966>,
+    <-19.7702,-5,-24.8431>,
+    <-19.957,-5,-25.3294>,
+    <-18.873,-5,-26.1471>,
+    <-17.7555,-5,-26.9184>,
+    <-16.6065,-5,-27.642>,
+    <-16.2181,-5,-27.295>,
+    <-15.4346,-5,-26.4096>,
+    <-15.2861,-5,-26.1592>,
+    <-15.1635,-5,-25.994>,
+    <-15.0077,-5,-25.8596>,
+    <-14.8264,-5,-25.7623>,
+    <-14.6282,-5,-25.707>,
+    <-14.4227,-5,-25.6962>,
+    <-14.2198,-5,-25.7306>,
+    <-14.0293,-5,-25.8083>,
+    <-13.7776,-5,-25.9436>,
+    <-13.5246,-5,-26.0764>,
+    <-13.2702,-5,-26.2067>,
+    <-13.098,-5,-26.3193>,
+    <-12.9546,-5,-26.4668>,
+    <-12.8467,-5,-26.642>,
+    <-12.7796,-5,-26.8365>,
+    <-12.7567,-5,-27.041>,
+    <-12.7788,-5,-27.2456>,
+    <-12.8451,-5,-27.4403>,
+    <-12.9668,-5,-27.7048>,
+    <-13.2504,-5,-28.8526>,
+    <-13.3154,-5,-29.3694>,
+    <-12.0672,-5,-29.9039>,
+    <-10.7975,-5,-30.3854>,
+    <-9.5088,-5,-30.813>,
+    <-9.21473,-5,-30.3831>,
+    <-8.6659,-5,-29.3359>,
+    <-8.58164,-5,-29.0573>,
+    <-8.50206,-5,-28.8675>,
+    <-8.383,-5,-28.6997>,
+    <-8.23021,-5,-28.5619>,
+    <-8.05103,-5,-28.4608>,
+    <-7.8541,-5,-28.4011>,
+    <-7.64891,-5,-28.3859>,
+    <-7.44534,-5,-28.4158>,
+    <-7.16855,-5,-28.4869>,
+    <-6.89108,-5,-28.5553>,
+    <-6.61295,-5,-28.621>,
+    <-6.41881,-5,-28.6891>,
+    <-6.2442,-5,-28.7979>,
+    <-6.09754,-5,-28.9422>,
+    <-5.98589,-5,-29.1151>,
+    <-5.91464,-5,-29.3081>,
+    <-5.88721,-5,-29.512>,
+    <-5.90492,-5,-29.717>,
+    <-5.95981,-5,-30.0029>,
+    <-5.96049,-5,-31.1852>,
+    <-5.89989,-5,-31.7025>,
+    <-4.56004,-5,-31.9228>,
+    <-3.21209,-5,-32.0865>,
+    <-1.85846,-5,-32.1932>,
+    <-1.67582,-5,-31.7054>,
+    <-1.39354,-5,-30.5574>,
+    <-1.37841,-5,-30.2666>,
+    <-1.34655,-5,-30.0634>,
+    <-1.27112,-5,-29.8719>,
+    <-1.15574,-5,-29.7016>,
+    <-1.00598,-5,-29.5605>,
+    <-0.829043,-5,-29.4555>,
+    <-0.633461,-5,-29.3916>,
+    <-0.428651,-5,-29.3719>,
+    <-0.142888,-5,-29.3747>,
+    <0.142888,-5,-29.3747>,
+    <0.428651,-5,-29.3719>,
+    <0.633461,-5,-29.3916>,
+    <0.829043,-5,-29.4555>,
+    <1.00598,-5,-29.5605>,
+    <1.15574,-5,-29.7016>,
+    <1.27112,-5,-29.8719>,
+    <1.34655,-5,-30.0634>,
+    <1.37841,-5,-30.2666>,
+    <1.39354,-5,-30.5574>,
+    <1.67582,-5,-31.7054>,
+    <1.85846,-5,-32.1932>,
+    <3.21209,-5,-32.0865>,
+    <4.56004,-5,-31.9228>,
+    <5.89989,-5,-31.7025>,
+    <5.96049,-5,-31.1852>,
+    <5.95981,-5,-30.0029>,
+    <5.90492,-5,-29.717>,
+    <5.88721,-5,-29.512>,
+    <5.91464,-5,-29.3081>,
+    <5.98589,-5,-29.1151>,
+    <6.09754,-5,-28.9422>,
+    <6.2442,-5,-28.7979>,
+    <6.41881,-5,-28.6891>,
+    <6.61295,-5,-28.621>,
+    <6.89108,-5,-28.5553>,
+    <7.16855,-5,-28.4869>,
+    <7.44534,-5,-28.4158>,
+    <7.64891,-5,-28.3859>,
+    <7.8541,-5,-28.4011>,
+    <8.05103,-5,-28.4608>,
+    <8.23021,-5,-28.5619>,
+    <8.383,-5,-28.6997>,
+    <8.50206,-5,-28.8675>,
+    <8.58164,-5,-29.0573>,
+    <8.6659,-5,-29.3359>,
+    <9.21473,-5,-30.3831>,
+    <9.5088,-5,-30.813>,
+    <10.7975,-5,-30.3854>,
+    <12.0672,-5,-29.9039>,
+    <13.3154,-5,-29.3694>,
+    <13.2504,-5,-28.8526>,
+    <12.9668,-5,-27.7048>,
+    <12.8451,-5,-27.4403>,
+    <12.7788,-5,-27.2456>,
+    <12.7567,-5,-27.041>,
+    <12.7796,-5,-26.8365>,
+    <12.8467,-5,-26.642>,
+    <12.9546,-5,-26.4668>,
+    <13.098,-5,-26.3193>,
+    <13.2702,-5,-26.2067>,
+    <13.5246,-5,-26.0764>,
+    <13.7776,-5,-25.9436>,
+    <14.0293,-5,-25.8083>,
+    <14.2198,-5,-25.7306>,
+    <14.4227,-5,-25.6962>,
+    <14.6282,-5,-25.707>,
+    <14.8264,-5,-25.7623>,
+    <15.0077,-5,-25.8596>,
+    <15.1635,-5,-25.994>,
+    <15.2861,-5,-26.1592>,
+    <15.4346,-5,-26.4096>,
+    <16.2181,-5,-27.295>,
+    <16.6065,-5,-27.642>,
+    <17.7555,-5,-26.9184>,
+    <18.873,-5,-26.1471>,
+    <19.957,-5,-25.3294>,
+    <19.7702,-5,-24.8431>,
+    <19.2202,-5,-23.7966>,
+    <19.0387,-5,-23.569>,
+    <18.9278,-5,-23.3957>,
+    <18.8573,-5,-23.2024>,
+    <18.8307,-5,-22.9983>,
+    <18.8492,-5,-22.7934>,
+    <18.912,-5,-22.5975>,
+    <19.0161,-5,-22.42>,
+    <19.1563,-5,-22.2694>,
+    <19.372,-5,-22.082>,
+    <19.586,-5,-21.8925>,
+    <19.798,-5,-21.7009>,
+    <19.9644,-5,-21.5798>,
+    <20.1531,-5,-21.498>,
+    <20.3552,-5,-21.4592>,
+    <20.5609,-5,-21.4655>,
+    <20.7602,-5,-21.5166>,
+    <20.9436,-5,-21.6098>,
+    <21.1022,-5,-21.7408>,
+    <21.3064,-5,-21.9484>,
+    <22.279,-5,-22.6206>,
+    <22.7391,-5,-22.8646>,
+    <23.6815,-5,-21.887>,
+    <24.582,-5,-20.8707>,
+    <25.4388,-5,-19.8173>,
+    <25.1411,-5,-19.3899>,
+    <24.3566,-5,-18.5054>,
+    <24.1259,-5,-18.3278>,
+    <23.9767,-5,-18.1861>,
+    <23.862,-5,-18.0153>,
+    <23.7874,-5,-17.8236>,
+    <23.7563,-5,-17.6202>,
+    <23.7704,-5,-17.4149>,
+    <23.8289,-5,-17.2176>,
+    <23.9291,-5,-17.0379>,
+    <24.0937,-5,-16.8043>,
+    <24.256,-5,-16.5691>,
+    <24.4161,-5,-16.3324>,
+    <24.5486,-5,-16.175>,
+    <24.7123,-5,-16.0503>,
+    <24.8993,-5,-15.9644>,
+    <25.1004,-5,-15.9213>,
+    <25.3062,-5,-15.9231>,
+    <25.5066,-5,-15.9697>,
+    <25.692,-5,-16.059>,
+    <25.9398,-5,-16.2117>,
+    <27.045,-5,-16.6316>,
+    <27.5502,-5,-16.7584>,
+    <28.2313,-5,-15.5837>,
+    <28.8623,-5,-14.3814>,
+    <29.4422,-5,-13.1536>,
+    <29.0508,-5,-12.8098>,
+    <28.0775,-5,-12.1388>,
+    <27.811,-5,-12.0215>,
+    <27.6322,-5,-11.9197>,
+    <27.48,-5,-11.7812>,
+    <27.3616,-5,-11.613>,
+    <27.2828,-5,-11.4229>,
+    <27.2473,-5,-11.2202>,
+    <27.257,-5,-11.0147>,
+    <27.3112,-5,-10.8162>,
+    <27.4151,-5,-10.55>,
+    <27.5164,-5,-10.2828>,
+    <27.6152,-5,-10.0146>,
+    <27.7062,-5,-9.8301>,
+    <27.8353,-5,-9.66988>,
+    <27.9963,-5,-9.54169>,
+    <28.1813,-5,-9.45168>,
+    <28.3815,-5,-9.40422>,
+    <28.5872,-5,-9.40156>,
+    <28.7886,-5,-9.44386>,
+    <29.0658,-5,-9.53281>,
+    <30.2393,-5,-9.67598>,
+    <30.7602,-5,-9.67819>,
+    <31.1404,-5,-8.37465>,
+    <31.4653,-5,-7.05627>,
+    <31.7345,-5,-5.72537>,
+    <31.2723,-5,-5.48527>,
+    <30.1666,-5,-5.06666>,
+    <29.8798,-5,-5.0166>,
+    <29.6819,-5,-4.96047>,
+    <29.5009,-5,-4.86251>,
+    <29.3457,-5,-4.72744>,
+    <29.2237,-5,-4.56176>,
+    <29.1408,-5,-4.37346>,
+    <29.1009,-5,-4.1716>,
+    <29.1061,-5,-3.96591>,
+    <29.1433,-5,-3.68257>,
+    <29.1777,-5,-3.39888>,
+  }
+  normal_vectors {
+    731,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+  }
+  face_indices {
+    731,
+    <483,484,485>,
+    <507,508,506>,
+    <481,482,480>,
+    <457,458,459>,
+    <509,510,511>,
+    <483,485,486>,
+    <506,508,505>,
+    <480,482,479>,
+    <483,486,487>,
+    <508,509,504>,
+    <505,508,504>,
+    <479,482,478>,
+    <483,487,478>,
+    <482,483,478>,
+    <478,487,477>,
+    <487,488,477>,
+    <457,459,460>,
+    <532,533,534>,
+    <455,456,454>,
+    <509,511,512>,
+    <456,457,461>,
+    <457,460,461>,
+    <509,512,513>,
+    <504,509,513>,
+    <504,513,514>,
+    <503,504,514>,
+    <532,534,531>,
+    <534,535,530>,
+    <531,534,530>,
+    <454,456,453>,
+    <456,461,452>,
+    <453,456,452>,
+    <535,536,537>,
+    <452,461,451>,
+    <461,462,451>,
+    <432,433,431>,
+    <431,433,434>,
+    <492,493,33>,
+    <493,494,33>,
+    <494,495,33>,
+    <495,496,33>,
+    <496,497,33>,
+    <497,498,33>,
+    <498,499,33>,
+    <492,33,32>,
+    <473,474,32>,
+    <474,475,32>,
+    <475,476,32>,
+    <476,477,32>,
+    <488,489,32>,
+    <489,490,32>,
+    <477,488,32>,
+    <490,491,32>,
+    <491,492,32>,
+    <431,434,435>,
+    <430,431,435>,
+    <514,515,34>,
+    <515,516,34>,
+    <516,517,34>,
+    <517,518,34>,
+    <33,499,34>,
+    <503,514,34>,
+    <499,500,34>,
+    <500,501,34>,
+    <501,502,34>,
+    <502,503,34>,
+    <473,32,31>,
+    <466,467,31>,
+    <467,468,31>,
+    <468,469,31>,
+    <469,470,31>,
+    <470,471,31>,
+    <471,472,31>,
+    <472,473,31>,
+    <535,537,538>,
+    <530,535,539>,
+    <535,538,539>,
+    <529,530,540>,
+    <530,539,540>,
+    <518,519,35>,
+    <519,520,35>,
+    <520,521,35>,
+    <521,522,35>,
+    <522,523,35>,
+    <523,524,35>,
+    <524,525,35>,
+    <34,518,35>,
+    <451,462,30>,
+    <447,448,30>,
+    <448,449,30>,
+    <449,450,30>,
+    <450,451,30>,
+    <466,31,30>,
+    <462,463,30>,
+    <463,464,30>,
+    <464,465,30>,
+    <465,466,30>,
+    <429,430,428>,
+    <558,559,560>,
+    <558,560,557>,
+    <557,560,556>,
+    <525,526,36>,
+    <526,527,36>,
+    <527,528,36>,
+    <528,529,36>,
+    <540,541,36>,
+    <541,542,36>,
+    <542,543,36>,
+    <543,544,36>,
+    <529,540,36>,
+    <35,525,36>,
+    <447,30,29>,
+    <440,441,29>,
+    <441,442,29>,
+    <442,443,29>,
+    <443,444,29>,
+    <444,445,29>,
+    <445,446,29>,
+    <446,447,29>,
+    <428,430,427>,
+    <427,430,426>,
+    <430,435,426>,
+    <435,436,425>,
+    <426,435,425>,
+    <561,562,563>,
+    <544,545,37>,
+    <545,546,37>,
+    <546,547,37>,
+    <547,548,37>,
+    <548,549,37>,
+    <549,550,37>,
+    <550,551,37>,
+    <36,544,37>,
+    <425,436,28>,
+    <421,422,28>,
+    <422,423,28>,
+    <423,424,28>,
+    <424,425,28>,
+    <436,437,28>,
+    <437,438,28>,
+    <438,439,28>,
+    <439,440,28>,
+    <440,29,28>,
+    <406,407,405>,
+    <405,407,408>,
+    <405,408,409>,
+    <561,563,564>,
+    <560,561,565>,
+    <556,560,565>,
+    <561,564,565>,
+    <555,556,566>,
+    <556,565,566>,
+    <551,552,38>,
+    <552,553,38>,
+    <553,554,38>,
+    <554,555,38>,
+    <566,567,38>,
+    <567,568,38>,
+    <37,551,38>,
+    <568,569,38>,
+    <555,566,38>,
+    <414,415,27>,
+    <415,416,27>,
+    <416,417,27>,
+    <417,418,27>,
+    <418,419,27>,
+    <419,420,27>,
+    <420,421,27>,
+    <421,28,27>,
+    <38,569,570>,
+    <403,404,402>,
+    <582,583,586>,
+    <583,584,586>,
+    <584,585,586>,
+    <402,404,401>,
+    <404,405,400>,
+    <401,404,400>,
+    <405,409,400>,
+    <409,410,399>,
+    <400,409,399>,
+    <582,586,587>,
+    <570,571,39>,
+    <571,572,39>,
+    <572,573,39>,
+    <573,574,39>,
+    <574,575,39>,
+    <575,576,39>,
+    <576,577,39>,
+    <38,570,39>,
+    <410,411,26>,
+    <411,412,26>,
+    <412,413,26>,
+    <413,414,26>,
+    <399,410,26>,
+    <414,27,26>,
+    <398,399,26>,
+    <398,26,397>,
+    <397,26,396>,
+    <396,26,395>,
+    <587,588,589>,
+    <380,381,379>,
+    <381,382,379>,
+    <382,383,379>,
+    <587,589,590>,
+    <577,578,40>,
+    <578,579,40>,
+    <579,580,40>,
+    <580,581,40>,
+    <39,577,40>,
+    <395,26,25>,
+    <388,389,25>,
+    <389,390,25>,
+    <390,391,25>,
+    <391,392,25>,
+    <392,393,25>,
+    <393,394,25>,
+    <394,395,25>,
+    <582,587,591>,
+    <587,590,591>,
+    <40,581,592>,
+    <582,591,592>,
+    <581,582,592>,
+    <40,592,593>,
+    <40,593,594>,
+    <40,594,595>,
+    <379,383,378>,
+    <40,595,596>,
+    <377,378,376>,
+    <40,596,41>,
+    <596,597,41>,
+    <597,598,41>,
+    <598,599,41>,
+    <599,600,41>,
+    <600,601,41>,
+    <601,602,41>,
+    <602,603,41>,
+    <388,25,24>,
+    <384,385,24>,
+    <385,386,24>,
+    <386,387,24>,
+    <387,388,24>,
+    <608,609,612>,
+    <609,610,612>,
+    <610,611,612>,
+    <376,378,375>,
+    <375,378,374>,
+    <378,383,374>,
+    <383,384,374>,
+    <384,24,373>,
+    <374,384,373>,
+    <373,24,372>,
+    <372,24,371>,
+    <371,24,370>,
+    <370,24,369>,
+    <605,606,42>,
+    <606,607,42>,
+    <41,603,42>,
+    <603,604,42>,
+    <604,605,42>,
+    <369,24,23>,
+    <362,363,23>,
+    <363,364,23>,
+    <364,365,23>,
+    <365,366,23>,
+    <366,367,23>,
+    <367,368,23>,
+    <368,369,23>,
+    <613,614,615>,
+    <613,615,616>,
+    <612,613,617>,
+    <608,612,617>,
+    <613,616,617>,
+    <354,355,353>,
+    <355,356,353>,
+    <356,357,353>,
+    <607,608,618>,
+    <42,607,618>,
+    <608,617,618>,
+    <42,618,619>,
+    <42,619,620>,
+    <42,620,621>,
+    <42,621,622>,
+    <353,357,352>,
+    <622,623,43>,
+    <623,624,43>,
+    <624,625,43>,
+    <625,626,43>,
+    <626,627,43>,
+    <627,628,43>,
+    <42,622,43>,
+    <362,23,22>,
+    <358,359,22>,
+    <359,360,22>,
+    <360,361,22>,
+    <361,362,22>,
+    <43,628,629>,
+    <351,352,350>,
+    <350,352,349>,
+    <349,352,348>,
+    <352,357,348>,
+    <358,22,347>,
+    <348,357,347>,
+    <357,358,347>,
+    <347,22,346>,
+    <346,22,345>,
+    <634,635,638>,
+    <635,636,638>,
+    <636,637,638>,
+    <345,22,344>,
+    <344,22,343>,
+    <43,629,44>,
+    <629,630,44>,
+    <630,631,44>,
+    <631,632,44>,
+    <632,633,44>,
+    <339,340,21>,
+    <340,341,21>,
+    <341,342,21>,
+    <342,343,21>,
+    <343,22,21>,
+    <339,21,338>,
+    <338,21,337>,
+    <337,21,336>,
+    <639,640,641>,
+    <639,641,642>,
+    <638,639,643>,
+    <634,638,643>,
+    <639,642,643>,
+    <634,643,644>,
+    <633,634,644>,
+    <44,633,644>,
+    <44,644,645>,
+    <44,645,646>,
+    <44,646,647>,
+    <328,329,327>,
+    <329,330,327>,
+    <330,331,327>,
+    <44,647,648>,
+    <44,648,45>,
+    <648,649,45>,
+    <649,650,45>,
+    <650,651,45>,
+    <332,333,20>,
+    <333,334,20>,
+    <334,335,20>,
+    <335,336,20>,
+    <336,21,20>,
+    <45,651,652>,
+    <45,652,653>,
+    <327,331,326>,
+    <45,653,654>,
+    <45,654,655>,
+    <325,326,324>,
+    <326,331,322>,
+    <324,326,323>,
+    <326,322,323>,
+    <331,332,321>,
+    <322,331,321>,
+    <332,20,321>,
+    <321,20,320>,
+    <320,20,319>,
+    <319,20,318>,
+    <318,20,317>,
+    <660,661,664>,
+    <661,662,664>,
+    <662,663,664>,
+    <45,655,46>,
+    <655,656,46>,
+    <656,657,46>,
+    <657,658,46>,
+    <658,659,46>,
+    <314,315,19>,
+    <315,316,19>,
+    <316,317,19>,
+    <317,20,19>,
+    <314,19,313>,
+    <313,19,312>,
+    <312,19,311>,
+    <311,19,310>,
+    <660,664,665>,
+    <665,666,667>,
+    <46,659,670>,
+    <659,660,669>,
+    <670,659,669>,
+    <660,665,669>,
+    <46,670,671>,
+    <665,667,668>,
+    <669,665,668>,
+    <46,671,672>,
+    <46,672,673>,
+    <46,673,674>,
+    <306,307,18>,
+    <307,308,18>,
+    <308,309,18>,
+    <309,310,18>,
+    <310,19,18>,
+    <674,675,47>,
+    <675,676,47>,
+    <46,674,47>,
+    <302,303,301>,
+    <303,304,301>,
+    <304,305,301>,
+    <47,676,677>,
+    <47,677,678>,
+    <47,678,679>,
+    <47,679,680>,
+    <47,680,681>,
+    <306,18,295>,
+    <295,18,294>,
+    <305,306,296>,
+    <306,295,296>,
+    <301,305,296>,
+    <300,301,296>,
+    <294,18,293>,
+    <300,296,297>,
+    <300,297,298>,
+    <299,300,298>,
+    <293,18,292>,
+    <292,18,291>,
+    <291,18,17>,
+    <47,681,48>,
+    <681,682,48>,
+    <682,683,48>,
+    <683,684,48>,
+    <684,685,48>,
+    <291,17,290>,
+    <290,17,289>,
+    <289,17,288>,
+    <288,17,287>,
+    <686,687,690>,
+    <687,688,690>,
+    <688,689,690>,
+    <287,17,286>,
+    <286,17,285>,
+    <285,17,284>,
+    <686,690,691>,
+    <697,48,696>,
+    <48,685,696>,
+    <685,686,696>,
+    <48,697,698>,
+    <686,691,695>,
+    <696,686,695>,
+    <48,698,699>,
+    <280,281,16>,
+    <281,282,16>,
+    <282,283,16>,
+    <283,284,16>,
+    <284,17,16>,
+    <695,691,694>,
+    <48,699,700>,
+    <49,48,700>,
+    <694,691,693>,
+    <49,700,701>,
+    <693,691,692>,
+    <49,701,702>,
+    <49,702,703>,
+    <49,703,704>,
+    <49,704,705>,
+    <276,277,275>,
+    <277,278,275>,
+    <278,279,275>,
+    <49,705,706>,
+    <49,706,707>,
+    <707,708,50>,
+    <708,709,50>,
+    <709,710,50>,
+    <710,711,50>,
+    <49,707,50>,
+    <268,16,267>,
+    <16,268,269>,
+    <280,16,269>,
+    <267,16,266>,
+    <274,275,270>,
+    <279,280,270>,
+    <280,269,270>,
+    <275,279,270>,
+    <16,15,265>,
+    <266,16,265>,
+    <274,270,271>,
+    <265,15,264>,
+    <264,15,263>,
+    <274,271,272>,
+    <274,272,273>,
+    <263,15,262>,
+    <262,15,261>,
+    <261,15,260>,
+    <260,15,259>,
+    <259,15,258>,
+    <712,713,716>,
+    <713,714,716>,
+    <714,715,716>,
+    <254,255,14>,
+    <255,256,14>,
+    <256,257,14>,
+    <257,258,14>,
+    <258,15,14>,
+    <724,50,723>,
+    <50,724,725>,
+    <50,711,722>,
+    <723,50,722>,
+    <50,725,726>,
+    <51,50,726>,
+    <711,712,721>,
+    <716,717,721>,
+    <722,711,721>,
+    <712,716,721>,
+    <51,726,727>,
+    <721,717,720>,
+    <51,727,728>,
+    <51,728,729>,
+    <51,729,730>,
+    <720,717,719>,
+    <719,717,718>,
+    <51,730,52>,
+    <51,52,53>,
+    <51,53,54>,
+    <54,55,0>,
+    <55,56,0>,
+    <51,54,0>,
+    <250,251,249>,
+    <251,252,249>,
+    <252,253,249>,
+    <0,56,57>,
+    <0,57,58>,
+    <241,14,240>,
+    <14,241,242>,
+    <14,13,239>,
+    <240,14,239>,
+    <254,14,243>,
+    <14,242,243>,
+    <239,13,238>,
+    <248,249,244>,
+    <253,254,244>,
+    <249,253,244>,
+    <254,243,244>,
+    <238,13,237>,
+    <248,244,245>,
+    <237,13,236>,
+    <236,13,235>,
+    <235,13,234>,
+    <234,13,233>,
+    <248,245,246>,
+    <233,13,232>,
+    <248,246,247>,
+    <232,13,12>,
+    <232,12,231>,
+    <231,12,230>,
+    <60,61,63>,
+    <61,62,63>,
+    <230,12,229>,
+    <229,12,228>,
+    <60,63,64>,
+    <59,60,64>,
+    <75,0,74>,
+    <1,0,76>,
+    <0,75,76>,
+    <74,0,73>,
+    <1,76,77>,
+    <59,64,65>,
+    <58,59,65>,
+    <73,0,72>,
+    <58,65,72>,
+    <0,58,72>,
+    <1,77,78>,
+    <72,65,71>,
+    <1,78,79>,
+    <1,79,80>,
+    <71,65,66>,
+    <70,71,66>,
+    <1,80,81>,
+    <1,81,82>,
+    <2,1,83>,
+    <1,82,83>,
+    <70,66,67>,
+    <2,83,84>,
+    <70,67,69>,
+    <2,84,85>,
+    <69,67,68>,
+    <2,85,86>,
+    <2,86,87>,
+    <12,11,213>,
+    <214,12,213>,
+    <12,214,215>,
+    <213,11,212>,
+    <12,215,216>,
+    <212,11,211>,
+    <224,225,223>,
+    <225,226,223>,
+    <226,227,223>,
+    <228,12,217>,
+    <12,216,217>,
+    <211,11,210>,
+    <227,228,218>,
+    <228,217,218>,
+    <223,227,218>,
+    <210,11,209>,
+    <209,11,208>,
+    <208,11,207>,
+    <11,10,206>,
+    <207,11,206>,
+    <218,219,222>,
+    <223,218,222>,
+    <206,10,205>,
+    <205,10,204>,
+    <204,10,203>,
+    <222,219,220>,
+    <203,10,202>,
+    <3,2,102>,
+    <3,102,103>,
+    <102,2,101>,
+    <222,220,221>,
+    <3,103,104>,
+    <101,2,100>,
+    <100,2,99>,
+    <3,104,105>,
+    <3,105,106>,
+    <99,2,98>,
+    <2,87,98>,
+    <3,106,107>,
+    <87,88,97>,
+    <98,87,97>,
+    <3,107,108>,
+    <4,3,109>,
+    <3,108,109>,
+    <97,88,92>,
+    <88,89,92>,
+    <89,90,92>,
+    <90,91,92>,
+    <4,109,110>,
+    <4,110,111>,
+    <4,111,112>,
+    <10,9,187>,
+    <9,186,187>,
+    <186,9,185>,
+    <10,187,188>,
+    <97,92,93>,
+    <96,97,93>,
+    <4,112,113>,
+    <185,9,184>,
+    <10,188,189>,
+    <184,9,183>,
+    <10,189,190>,
+    <183,9,182>,
+    <96,93,95>,
+    <182,9,181>,
+    <10,190,191>,
+    <202,10,191>,
+    <9,8,180>,
+    <181,9,180>,
+    <201,202,192>,
+    <202,191,192>,
+    <180,8,179>,
+    <95,93,94>,
+    <179,8,178>,
+    <5,129,130>,
+    <129,5,128>,
+    <5,4,128>,
+    <5,130,131>,
+    <128,4,127>,
+    <178,8,177>,
+    <5,131,132>,
+    <5,132,133>,
+    <127,4,126>,
+    <5,133,134>,
+    <177,8,176>,
+    <198,199,197>,
+    <199,200,197>,
+    <200,201,197>,
+    <6,5,135>,
+    <5,134,135>,
+    <126,4,125>,
+    <6,135,136>,
+    <7,159,160>,
+    <159,7,158>,
+    <125,4,124>,
+    <4,113,124>,
+    <158,7,157>,
+    <157,7,156>,
+    <8,7,161>,
+    <7,160,161>,
+    <156,7,155>,
+    <6,136,137>,
+    <8,161,162>,
+    <7,6,154>,
+    <155,7,154>,
+    <124,113,123>,
+    <113,114,123>,
+    <154,6,153>,
+    <8,162,163>,
+    <6,137,138>,
+    <197,201,196>,
+    <192,193,196>,
+    <201,192,196>,
+    <153,6,152>,
+    <8,163,164>,
+    <196,193,194>,
+    <6,138,139>,
+    <152,6,151>,
+    <176,8,165>,
+    <8,164,165>,
+    <151,6,150>,
+    <6,139,150>,
+    <176,165,166>,
+    <175,176,166>,
+    <196,194,195>,
+    <139,140,149>,
+    <150,139,149>,
+    <114,115,118>,
+    <115,116,118>,
+    <116,117,118>,
+    <121,122,119>,
+    <122,123,119>,
+    <114,118,119>,
+    <123,114,119>,
+    <121,119,120>,
+    <172,173,171>,
+    <173,174,171>,
+    <174,175,171>,
+    <175,166,170>,
+    <171,175,170>,
+    <166,167,170>,
+    <167,168,170>,
+    <170,168,169>,
+    <140,141,144>,
+    <141,142,144>,
+    <142,143,144>,
+    <149,140,145>,
+    <147,148,145>,
+    <148,149,145>,
+    <140,144,145>,
+    <147,145,146>,
+  }
+} // end of Face4
+
+// face number5 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body5 = mesh2{
+  vertex_vectors {
+    731,
+    <27.3425,5,-1e-15>,
+    <27.1432,5,-3.29578>,
+    <26.548,5,-6.5435>,
+    <25.5657,5,-9.6958>,
+    <24.2106,5,-12.7067>,
+    <22.5025,5,-15.5323>,
+    <20.4662,5,-18.1315>,
+    <18.1315,5,-20.4662>,
+    <15.5323,5,-22.5025>,
+    <12.7067,5,-24.2106>,
+    <9.6958,5,-25.5657>,
+    <6.5435,5,-26.548>,
+    <3.29578,5,-27.1432>,
+    <1.38168e-14,5,-27.3425>,
+    <-3.29578,5,-27.1432>,
+    <-6.5435,5,-26.548>,
+    <-9.6958,5,-25.5657>,
+    <-12.7067,5,-24.2106>,
+    <-15.5323,5,-22.5025>,
+    <-18.1315,5,-20.4662>,
+    <-20.4662,5,-18.1315>,
+    <-22.5025,5,-15.5323>,
+    <-24.2106,5,-12.7067>,
+    <-25.5657,5,-9.6958>,
+    <-26.548,5,-6.5435>,
+    <-27.1432,5,-3.29578>,
+    <-27.3425,5,-5.30286e-14>,
+    <-27.1432,5,3.29578>,
+    <-26.548,5,6.5435>,
+    <-25.5657,5,9.6958>,
+    <-24.2106,5,12.7067>,
+    <-22.5025,5,15.5323>,
+    <-20.4662,5,18.1315>,
+    <-18.1315,5,20.4662>,
+    <-15.5323,5,22.5025>,
+    <-12.7067,5,24.2106>,
+    <-9.6958,5,25.5657>,
+    <-6.5435,5,26.548>,
+    <-3.29578,5,27.1432>,
+    <-2.93078e-14,5,27.3425>,
+    <3.29578,5,27.1432>,
+    <6.5435,5,26.548>,
+    <9.6958,5,25.5657>,
+    <12.7067,5,24.2106>,
+    <15.5323,5,22.5025>,
+    <18.1315,5,20.4662>,
+    <20.4662,5,18.1315>,
+    <22.5025,5,15.5323>,
+    <24.2106,5,12.7067>,
+    <25.5657,5,9.6958>,
+    <26.548,5,6.5435>,
+    <27.1432,5,3.29578>,
+    <29.2094,5,-3.11486>,
+    <29.2536,5,-2.91392>,
+    <29.3406,5,-2.72746>,
+    <29.4662,5,-2.56448>,
+    <29.6243,5,-2.43282>,
+    <29.8073,5,-2.33881>,
+    <30.0065,5,-2.287>,
+    <30.2121,5,-2.27988>,
+    <30.5025,5,-2.29991>,
+    <31.6763,5,-2.15807>,
+    <32.1825,5,-2.03556>,
+    <32.2468,5,-1e-15>,
+    <32.2397,5,-0.678921>,
+    <32.2182,5,-1.35754>,
+    <32.1825,5,2.03556>,
+    <32.2182,5,1.35754>,
+    <32.2397,5,0.678921>,
+    <31.6763,5,2.15807>,
+    <30.5025,5,2.29991>,
+    <30.2121,5,2.27988>,
+    <30.0065,5,2.287>,
+    <29.8073,5,2.33881>,
+    <29.6243,5,2.43282>,
+    <29.4662,5,2.56448>,
+    <29.3406,5,2.72746>,
+    <29.2536,5,2.91392>,
+    <29.2094,5,3.11486>,
+    <29.1777,5,3.39888>,
+    <29.1433,5,3.68257>,
+    <29.1061,5,3.96591>,
+    <29.1009,5,4.1716>,
+    <29.1408,5,4.37346>,
+    <29.2237,5,4.56176>,
+    <29.3457,5,4.72744>,
+    <29.5009,5,4.86251>,
+    <29.6819,5,4.96047>,
+    <29.8798,5,5.0166>,
+    <30.1666,5,5.06666>,
+    <31.2723,5,5.48527>,
+    <31.7345,5,5.72537>,
+    <30.7602,5,9.67819>,
+    <31.1404,5,8.37465>,
+    <31.4653,5,7.05627>,
+    <30.2393,5,9.67598>,
+    <29.0658,5,9.53281>,
+    <28.7886,5,9.44386>,
+    <28.5872,5,9.40156>,
+    <28.3815,5,9.40422>,
+    <28.1813,5,9.45168>,
+    <27.9963,5,9.54169>,
+    <27.8353,5,9.66988>,
+    <27.7062,5,9.8301>,
+    <27.6152,5,10.0146>,
+    <27.5164,5,10.2828>,
+    <27.4151,5,10.55>,
+    <27.3112,5,10.8162>,
+    <27.257,5,11.0147>,
+    <27.2473,5,11.2202>,
+    <27.2828,5,11.4229>,
+    <27.3616,5,11.613>,
+    <27.48,5,11.7812>,
+    <27.6322,5,11.9197>,
+    <27.811,5,12.0215>,
+    <28.0775,5,12.1388>,
+    <29.0508,5,12.8098>,
+    <29.4422,5,13.1536>,
+    <27.5502,5,16.7584>,
+    <28.2313,5,15.5837>,
+    <28.8623,5,14.3814>,
+    <27.045,5,16.6316>,
+    <25.9398,5,16.2117>,
+    <25.692,5,16.059>,
+    <25.5066,5,15.9697>,
+    <25.3062,5,15.9231>,
+    <25.1004,5,15.9213>,
+    <24.8993,5,15.9644>,
+    <24.7123,5,16.0503>,
+    <24.5486,5,16.175>,
+    <24.4161,5,16.3324>,
+    <24.256,5,16.5691>,
+    <24.0937,5,16.8043>,
+    <23.9291,5,17.0379>,
+    <23.8289,5,17.2176>,
+    <23.7704,5,17.4149>,
+    <23.7563,5,17.6202>,
+    <23.7874,5,17.8236>,
+    <23.862,5,18.0153>,
+    <23.9767,5,18.1861>,
+    <24.1259,5,18.3278>,
+    <24.3566,5,18.5054>,
+    <25.1411,5,19.3899>,
+    <25.4388,5,19.8173>,
+    <22.7391,5,22.8646>,
+    <23.6815,5,21.887>,
+    <24.582,5,20.8707>,
+    <22.279,5,22.6206>,
+    <21.3064,5,21.9484>,
+    <21.1022,5,21.7408>,
+    <20.9436,5,21.6098>,
+    <20.7602,5,21.5166>,
+    <20.5609,5,21.4655>,
+    <20.3552,5,21.4592>,
+    <20.1531,5,21.498>,
+    <19.9644,5,21.5798>,
+    <19.798,5,21.7009>,
+    <19.586,5,21.8925>,
+    <19.372,5,22.082>,
+    <19.1563,5,22.2694>,
+    <19.0161,5,22.42>,
+    <18.912,5,22.5975>,
+    <18.8492,5,22.7934>,
+    <18.8307,5,22.9983>,
+    <18.8573,5,23.2024>,
+    <18.9278,5,23.3957>,
+    <19.0387,5,23.569>,
+    <19.2202,5,23.7966>,
+    <19.7702,5,24.8431>,
+    <19.957,5,25.3294>,
+    <16.6065,5,27.642>,
+    <17.7555,5,26.9184>,
+    <18.873,5,26.1471>,
+    <16.2181,5,27.295>,
+    <15.4346,5,26.4096>,
+    <15.2861,5,26.1592>,
+    <15.1635,5,25.994>,
+    <15.0077,5,25.8596>,
+    <14.8264,5,25.7623>,
+    <14.6282,5,25.707>,
+    <14.4227,5,25.6962>,
+    <14.2198,5,25.7306>,
+    <14.0293,5,25.8083>,
+    <13.7776,5,25.9436>,
+    <13.5246,5,26.0764>,
+    <13.2702,5,26.2067>,
+    <13.098,5,26.3193>,
+    <12.9546,5,26.4668>,
+    <12.8467,5,26.642>,
+    <12.7796,5,26.8365>,
+    <12.7567,5,27.041>,
+    <12.7788,5,27.2456>,
+    <12.8451,5,27.4403>,
+    <12.9668,5,27.7048>,
+    <13.2504,5,28.8526>,
+    <13.3154,5,29.3694>,
+    <9.5088,5,30.813>,
+    <10.7975,5,30.3854>,
+    <12.0672,5,29.9039>,
+    <9.21473,5,30.3831>,
+    <8.6659,5,29.3359>,
+    <8.58164,5,29.0573>,
+    <8.50206,5,28.8675>,
+    <8.383,5,28.6997>,
+    <8.23021,5,28.5619>,
+    <8.05103,5,28.4608>,
+    <7.8541,5,28.4011>,
+    <7.64891,5,28.3859>,
+    <7.44534,5,28.4158>,
+    <7.16855,5,28.4869>,
+    <6.89108,5,28.5553>,
+    <6.61295,5,28.621>,
+    <6.41881,5,28.6891>,
+    <6.2442,5,28.7979>,
+    <6.09754,5,28.9422>,
+    <5.98589,5,29.1151>,
+    <5.91464,5,29.3081>,
+    <5.88721,5,29.512>,
+    <5.90492,5,29.717>,
+    <5.95981,5,30.0029>,
+    <5.96049,5,31.1852>,
+    <5.89989,5,31.7025>,
+    <1.85846,5,32.1932>,
+    <3.21209,5,32.0865>,
+    <4.56004,5,31.9228>,
+    <1.67582,5,31.7054>,
+    <1.39354,5,30.5574>,
+    <1.37841,5,30.2666>,
+    <1.34655,5,30.0634>,
+    <1.27112,5,29.8719>,
+    <1.15574,5,29.7016>,
+    <1.00598,5,29.5605>,
+    <0.829043,5,29.4555>,
+    <0.633461,5,29.3916>,
+    <0.428651,5,29.3719>,
+    <0.142888,5,29.3747>,
+    <-0.142888,5,29.3747>,
+    <-0.428651,5,29.3719>,
+    <-0.633461,5,29.3916>,
+    <-0.829043,5,29.4555>,
+    <-1.00598,5,29.5605>,
+    <-1.15574,5,29.7016>,
+    <-1.27112,5,29.8719>,
+    <-1.34655,5,30.0634>,
+    <-1.37841,5,30.2666>,
+    <-1.39354,5,30.5574>,
+    <-1.67582,5,31.7054>,
+    <-1.85846,5,32.1932>,
+    <-5.89989,5,31.7025>,
+    <-4.56004,5,31.9228>,
+    <-3.21209,5,32.0865>,
+    <-5.96049,5,31.1852>,
+    <-5.95981,5,30.0029>,
+    <-5.90492,5,29.717>,
+    <-5.88721,5,29.512>,
+    <-5.91464,5,29.3081>,
+    <-5.98589,5,29.1151>,
+    <-6.09754,5,28.9422>,
+    <-6.2442,5,28.7979>,
+    <-6.41881,5,28.6891>,
+    <-6.61295,5,28.621>,
+    <-6.89108,5,28.5553>,
+    <-7.16855,5,28.4869>,
+    <-7.44534,5,28.4158>,
+    <-7.64891,5,28.3859>,
+    <-7.8541,5,28.4011>,
+    <-8.05103,5,28.4608>,
+    <-8.23021,5,28.5619>,
+    <-8.383,5,28.6997>,
+    <-8.50206,5,28.8675>,
+    <-8.58164,5,29.0573>,
+    <-8.6659,5,29.3359>,
+    <-9.21473,5,30.3831>,
+    <-9.5088,5,30.813>,
+    <-13.3154,5,29.3694>,
+    <-12.0672,5,29.9039>,
+    <-10.7975,5,30.3854>,
+    <-13.2504,5,28.8526>,
+    <-12.9668,5,27.7048>,
+    <-12.8451,5,27.4403>,
+    <-12.7788,5,27.2456>,
+    <-12.7567,5,27.041>,
+    <-12.7796,5,26.8365>,
+    <-12.8467,5,26.642>,
+    <-12.9546,5,26.4668>,
+    <-13.098,5,26.3193>,
+    <-13.2702,5,26.2067>,
+    <-13.5246,5,26.0764>,
+    <-13.7776,5,25.9436>,
+    <-14.0293,5,25.8083>,
+    <-14.2198,5,25.7306>,
+    <-14.4227,5,25.6962>,
+    <-14.6282,5,25.707>,
+    <-14.8264,5,25.7623>,
+    <-15.0077,5,25.8596>,
+    <-15.1635,5,25.994>,
+    <-15.2861,5,26.1592>,
+    <-15.4346,5,26.4096>,
+    <-16.2181,5,27.295>,
+    <-16.6065,5,27.642>,
+    <-19.957,5,25.3294>,
+    <-18.873,5,26.1471>,
+    <-17.7555,5,26.9184>,
+    <-19.7702,5,24.8431>,
+    <-19.2202,5,23.7966>,
+    <-19.0387,5,23.569>,
+    <-18.9278,5,23.3957>,
+    <-18.8573,5,23.2024>,
+    <-18.8307,5,22.9983>,
+    <-18.8492,5,22.7934>,
+    <-18.912,5,22.5975>,
+    <-19.0161,5,22.42>,
+    <-19.1563,5,22.2694>,
+    <-19.372,5,22.082>,
+    <-19.586,5,21.8925>,
+    <-19.798,5,21.7009>,
+    <-19.9644,5,21.5798>,
+    <-20.1531,5,21.498>,
+    <-20.3552,5,21.4592>,
+    <-20.5609,5,21.4655>,
+    <-20.7602,5,21.5166>,
+    <-20.9436,5,21.6098>,
+    <-21.1022,5,21.7408>,
+    <-21.3064,5,21.9484>,
+    <-22.279,5,22.6206>,
+    <-22.7391,5,22.8646>,
+    <-25.4388,5,19.8173>,
+    <-24.582,5,20.8707>,
+    <-23.6815,5,21.887>,
+    <-25.1411,5,19.3899>,
+    <-24.3566,5,18.5054>,
+    <-24.1259,5,18.3278>,
+    <-23.9767,5,18.1861>,
+    <-23.862,5,18.0153>,
+    <-23.7874,5,17.8236>,
+    <-23.7563,5,17.6202>,
+    <-23.7704,5,17.4149>,
+    <-23.8289,5,17.2176>,
+    <-23.9291,5,17.0379>,
+    <-24.0937,5,16.8043>,
+    <-24.256,5,16.5691>,
+    <-24.4161,5,16.3324>,
+    <-24.5486,5,16.175>,
+    <-24.7123,5,16.0503>,
+    <-24.8993,5,15.9644>,
+    <-25.1004,5,15.9213>,
+    <-25.3062,5,15.9231>,
+    <-25.5066,5,15.9697>,
+    <-25.692,5,16.059>,
+    <-25.9398,5,16.2117>,
+    <-27.045,5,16.6316>,
+    <-27.5502,5,16.7584>,
+    <-29.4422,5,13.1536>,
+    <-28.8623,5,14.3814>,
+    <-28.2313,5,15.5837>,
+    <-29.0508,5,12.8098>,
+    <-28.0775,5,12.1388>,
+    <-27.811,5,12.0215>,
+    <-27.6322,5,11.9197>,
+    <-27.48,5,11.7812>,
+    <-27.3616,5,11.613>,
+    <-27.2828,5,11.4229>,
+    <-27.2473,5,11.2202>,
+    <-27.257,5,11.0147>,
+    <-27.3112,5,10.8162>,
+    <-27.4151,5,10.55>,
+    <-27.5164,5,10.2828>,
+    <-27.6152,5,10.0146>,
+    <-27.7062,5,9.8301>,
+    <-27.8353,5,9.66988>,
+    <-27.9963,5,9.54169>,
+    <-28.1813,5,9.45168>,
+    <-28.3815,5,9.40422>,
+    <-28.5872,5,9.40156>,
+    <-28.7886,5,9.44386>,
+    <-29.0658,5,9.53281>,
+    <-30.2393,5,9.67598>,
+    <-30.7602,5,9.67819>,
+    <-31.7345,5,5.72537>,
+    <-31.4653,5,7.05627>,
+    <-31.1404,5,8.37465>,
+    <-31.2723,5,5.48527>,
+    <-30.1666,5,5.06666>,
+    <-29.8798,5,5.0166>,
+    <-29.6819,5,4.96047>,
+    <-29.5009,5,4.86251>,
+    <-29.3457,5,4.72744>,
+    <-29.2237,5,4.56176>,
+    <-29.1408,5,4.37346>,
+    <-29.1009,5,4.1716>,
+    <-29.1061,5,3.96591>,
+    <-29.1433,5,3.68257>,
+    <-29.1777,5,3.39888>,
+    <-29.2094,5,3.11486>,
+    <-29.2536,5,2.91392>,
+    <-29.3406,5,2.72746>,
+    <-29.4662,5,2.56448>,
+    <-29.6243,5,2.43282>,
+    <-29.8073,5,2.33881>,
+    <-30.0065,5,2.287>,
+    <-30.2121,5,2.27988>,
+    <-30.5025,5,2.29991>,
+    <-31.6763,5,2.15807>,
+    <-32.1825,5,2.03556>,
+    <-32.1825,5,-2.03556>,
+    <-32.2397,5,-0.678921>,
+    <-32.2397,5,0.678921>,
+    <-31.6763,5,-2.15807>,
+    <-30.5025,5,-2.29991>,
+    <-30.2121,5,-2.27988>,
+    <-30.0065,5,-2.287>,
+    <-29.8073,5,-2.33881>,
+    <-29.6243,5,-2.43282>,
+    <-29.4662,5,-2.56448>,
+    <-29.3406,5,-2.72746>,
+    <-29.2536,5,-2.91392>,
+    <-29.2094,5,-3.11486>,
+    <-29.1777,5,-3.39888>,
+    <-29.1433,5,-3.68257>,
+    <-29.1061,5,-3.96591>,
+    <-29.1009,5,-4.1716>,
+    <-29.1408,5,-4.37346>,
+    <-29.2237,5,-4.56176>,
+    <-29.3457,5,-4.72744>,
+    <-29.5009,5,-4.86251>,
+    <-29.6819,5,-4.96047>,
+    <-29.8798,5,-5.0166>,
+    <-30.1666,5,-5.06666>,
+    <-31.2723,5,-5.48527>,
+    <-31.7345,5,-5.72537>,
+    <-30.7602,5,-9.67819>,
+    <-31.1404,5,-8.37465>,
+    <-31.4653,5,-7.05627>,
+    <-30.2393,5,-9.67598>,
+    <-29.0658,5,-9.53281>,
+    <-28.7886,5,-9.44386>,
+    <-28.5872,5,-9.40156>,
+    <-28.3815,5,-9.40422>,
+    <-28.1813,5,-9.45168>,
+    <-27.9963,5,-9.54169>,
+    <-27.8353,5,-9.66988>,
+    <-27.7062,5,-9.8301>,
+    <-27.6152,5,-10.0146>,
+    <-27.5164,5,-10.2828>,
+    <-27.4151,5,-10.55>,
+    <-27.3112,5,-10.8162>,
+    <-27.257,5,-11.0147>,
+    <-27.2473,5,-11.2202>,
+    <-27.2828,5,-11.4229>,
+    <-27.3616,5,-11.613>,
+    <-27.48,5,-11.7812>,
+    <-27.6322,5,-11.9197>,
+    <-27.811,5,-12.0215>,
+    <-28.0775,5,-12.1388>,
+    <-29.0508,5,-12.8098>,
+    <-29.4422,5,-13.1536>,
+    <-27.5502,5,-16.7584>,
+    <-28.2313,5,-15.5837>,
+    <-28.8623,5,-14.3814>,
+    <-27.045,5,-16.6316>,
+    <-25.9398,5,-16.2117>,
+    <-25.692,5,-16.059>,
+    <-25.5066,5,-15.9697>,
+    <-25.3062,5,-15.9231>,
+    <-25.1004,5,-15.9213>,
+    <-24.8993,5,-15.9644>,
+    <-24.7123,5,-16.0503>,
+    <-24.5486,5,-16.175>,
+    <-24.4161,5,-16.3324>,
+    <-24.256,5,-16.5691>,
+    <-24.0937,5,-16.8043>,
+    <-23.9291,5,-17.0379>,
+    <-23.8289,5,-17.2176>,
+    <-23.7704,5,-17.4149>,
+    <-23.7563,5,-17.6202>,
+    <-23.7874,5,-17.8236>,
+    <-23.862,5,-18.0153>,
+    <-23.9767,5,-18.1861>,
+    <-24.1259,5,-18.3278>,
+    <-24.3566,5,-18.5054>,
+    <-25.1411,5,-19.3899>,
+    <-25.4388,5,-19.8173>,
+    <-22.7391,5,-22.8646>,
+    <-23.6815,5,-21.887>,
+    <-24.582,5,-20.8707>,
+    <-22.279,5,-22.6206>,
+    <-21.3064,5,-21.9484>,
+    <-21.1022,5,-21.7408>,
+    <-20.9436,5,-21.6098>,
+    <-20.7602,5,-21.5166>,
+    <-20.5609,5,-21.4655>,
+    <-20.3552,5,-21.4592>,
+    <-20.1531,5,-21.498>,
+    <-19.9644,5,-21.5798>,
+    <-19.798,5,-21.7009>,
+    <-19.586,5,-21.8925>,
+    <-19.372,5,-22.082>,
+    <-19.1563,5,-22.2694>,
+    <-19.0161,5,-22.42>,
+    <-18.912,5,-22.5975>,
+    <-18.8492,5,-22.7934>,
+    <-18.8307,5,-22.9983>,
+    <-18.8573,5,-23.2024>,
+    <-18.9278,5,-23.3957>,
+    <-19.0387,5,-23.569>,
+    <-19.2202,5,-23.7966>,
+    <-19.7702,5,-24.8431>,
+    <-19.957,5,-25.3294>,
+    <-16.6065,5,-27.642>,
+    <-17.7555,5,-26.9184>,
+    <-18.873,5,-26.1471>,
+    <-16.2181,5,-27.295>,
+    <-15.4346,5,-26.4096>,
+    <-15.2861,5,-26.1592>,
+    <-15.1635,5,-25.994>,
+    <-15.0077,5,-25.8596>,
+    <-14.8264,5,-25.7623>,
+    <-14.6282,5,-25.707>,
+    <-14.4227,5,-25.6962>,
+    <-14.2198,5,-25.7306>,
+    <-14.0293,5,-25.8083>,
+    <-13.7776,5,-25.9436>,
+    <-13.5246,5,-26.0764>,
+    <-13.2702,5,-26.2067>,
+    <-13.098,5,-26.3193>,
+    <-12.9546,5,-26.4668>,
+    <-12.8467,5,-26.642>,
+    <-12.7796,5,-26.8365>,
+    <-12.7567,5,-27.041>,
+    <-12.7788,5,-27.2456>,
+    <-12.8451,5,-27.4403>,
+    <-12.9668,5,-27.7048>,
+    <-13.2504,5,-28.8526>,
+    <-13.3154,5,-29.3694>,
+    <-9.5088,5,-30.813>,
+    <-10.7975,5,-30.3854>,
+    <-12.0672,5,-29.9039>,
+    <-9.21473,5,-30.3831>,
+    <-8.6659,5,-29.3359>,
+    <-8.58164,5,-29.0573>,
+    <-8.50206,5,-28.8675>,
+    <-8.383,5,-28.6997>,
+    <-8.23021,5,-28.5619>,
+    <-8.05103,5,-28.4608>,
+    <-7.8541,5,-28.4011>,
+    <-7.64891,5,-28.3859>,
+    <-7.44534,5,-28.4158>,
+    <-7.16855,5,-28.4869>,
+    <-6.89108,5,-28.5553>,
+    <-6.61295,5,-28.621>,
+    <-6.41881,5,-28.6891>,
+    <-6.2442,5,-28.7979>,
+    <-6.09754,5,-28.9422>,
+    <-5.98589,5,-29.1151>,
+    <-5.91464,5,-29.3081>,
+    <-5.88721,5,-29.512>,
+    <-5.90492,5,-29.717>,
+    <-5.95981,5,-30.0029>,
+    <-5.96049,5,-31.1852>,
+    <-5.89989,5,-31.7025>,
+    <-1.85846,5,-32.1932>,
+    <-3.21209,5,-32.0865>,
+    <-4.56004,5,-31.9228>,
+    <-1.67582,5,-31.7054>,
+    <-1.39354,5,-30.5574>,
+    <-1.37841,5,-30.2666>,
+    <-1.34655,5,-30.0634>,
+    <-1.27112,5,-29.8719>,
+    <-1.15574,5,-29.7016>,
+    <-1.00598,5,-29.5605>,
+    <-0.829043,5,-29.4555>,
+    <-0.633461,5,-29.3916>,
+    <-0.428651,5,-29.3719>,
+    <-0.142888,5,-29.3747>,
+    <0.142888,5,-29.3747>,
+    <0.428651,5,-29.3719>,
+    <0.633461,5,-29.3916>,
+    <0.829043,5,-29.4555>,
+    <1.00598,5,-29.5605>,
+    <1.15574,5,-29.7016>,
+    <1.27112,5,-29.8719>,
+    <1.34655,5,-30.0634>,
+    <1.37841,5,-30.2666>,
+    <1.39354,5,-30.5574>,
+    <1.67582,5,-31.7054>,
+    <1.85846,5,-32.1932>,
+    <5.89989,5,-31.7025>,
+    <4.56004,5,-31.9228>,
+    <3.21209,5,-32.0865>,
+    <5.96049,5,-31.1852>,
+    <5.95981,5,-30.0029>,
+    <5.90492,5,-29.717>,
+    <5.88721,5,-29.512>,
+    <5.91464,5,-29.3081>,
+    <5.98589,5,-29.1151>,
+    <6.09754,5,-28.9422>,
+    <6.2442,5,-28.7979>,
+    <6.41881,5,-28.6891>,
+    <6.61295,5,-28.621>,
+    <6.89108,5,-28.5553>,
+    <7.16855,5,-28.4869>,
+    <7.44534,5,-28.4158>,
+    <7.64891,5,-28.3859>,
+    <7.8541,5,-28.4011>,
+    <8.05103,5,-28.4608>,
+    <8.23021,5,-28.5619>,
+    <8.383,5,-28.6997>,
+    <8.50206,5,-28.8675>,
+    <8.58164,5,-29.0573>,
+    <8.6659,5,-29.3359>,
+    <9.21473,5,-30.3831>,
+    <9.5088,5,-30.813>,
+    <13.3154,5,-29.3694>,
+    <12.0672,5,-29.9039>,
+    <10.7975,5,-30.3854>,
+    <13.2504,5,-28.8526>,
+    <12.9668,5,-27.7048>,
+    <12.8451,5,-27.4403>,
+    <12.7788,5,-27.2456>,
+    <12.7567,5,-27.041>,
+    <12.7796,5,-26.8365>,
+    <12.8467,5,-26.642>,
+    <12.9546,5,-26.4668>,
+    <13.098,5,-26.3193>,
+    <13.2702,5,-26.2067>,
+    <13.5246,5,-26.0764>,
+    <13.7776,5,-25.9436>,
+    <14.0293,5,-25.8083>,
+    <14.2198,5,-25.7306>,
+    <14.4227,5,-25.6962>,
+    <14.6282,5,-25.707>,
+    <14.8264,5,-25.7623>,
+    <15.0077,5,-25.8596>,
+    <15.1635,5,-25.994>,
+    <15.2861,5,-26.1592>,
+    <15.4346,5,-26.4096>,
+    <16.2181,5,-27.295>,
+    <16.6065,5,-27.642>,
+    <19.957,5,-25.3294>,
+    <18.873,5,-26.1471>,
+    <17.7555,5,-26.9184>,
+    <19.7702,5,-24.8431>,
+    <19.2202,5,-23.7966>,
+    <19.0387,5,-23.569>,
+    <18.9278,5,-23.3957>,
+    <18.8573,5,-23.2024>,
+    <18.8307,5,-22.9983>,
+    <18.8492,5,-22.7934>,
+    <18.912,5,-22.5975>,
+    <19.0161,5,-22.42>,
+    <19.1563,5,-22.2694>,
+    <19.372,5,-22.082>,
+    <19.586,5,-21.8925>,
+    <19.798,5,-21.7009>,
+    <19.9644,5,-21.5798>,
+    <20.1531,5,-21.498>,
+    <20.3552,5,-21.4592>,
+    <20.5609,5,-21.4655>,
+    <20.7602,5,-21.5166>,
+    <20.9436,5,-21.6098>,
+    <21.1022,5,-21.7408>,
+    <21.3064,5,-21.9484>,
+    <22.279,5,-22.6206>,
+    <22.7391,5,-22.8646>,
+    <25.4388,5,-19.8173>,
+    <24.582,5,-20.8707>,
+    <23.6815,5,-21.887>,
+    <25.1411,5,-19.3899>,
+    <24.3566,5,-18.5054>,
+    <24.1259,5,-18.3278>,
+    <23.9767,5,-18.1861>,
+    <23.862,5,-18.0153>,
+    <23.7874,5,-17.8236>,
+    <23.7563,5,-17.6202>,
+    <23.7704,5,-17.4149>,
+    <23.8289,5,-17.2176>,
+    <23.9291,5,-17.0379>,
+    <24.0937,5,-16.8043>,
+    <24.256,5,-16.5691>,
+    <24.4161,5,-16.3324>,
+    <24.5486,5,-16.175>,
+    <24.7123,5,-16.0503>,
+    <24.8993,5,-15.9644>,
+    <25.1004,5,-15.9213>,
+    <25.3062,5,-15.9231>,
+    <25.5066,5,-15.9697>,
+    <25.692,5,-16.059>,
+    <25.9398,5,-16.2117>,
+    <27.045,5,-16.6316>,
+    <27.5502,5,-16.7584>,
+    <29.4422,5,-13.1536>,
+    <28.8623,5,-14.3814>,
+    <28.2313,5,-15.5837>,
+    <29.0508,5,-12.8098>,
+    <28.0775,5,-12.1388>,
+    <27.811,5,-12.0215>,
+    <27.6322,5,-11.9197>,
+    <27.48,5,-11.7812>,
+    <27.3616,5,-11.613>,
+    <27.2828,5,-11.4229>,
+    <27.2473,5,-11.2202>,
+    <27.257,5,-11.0147>,
+    <27.3112,5,-10.8162>,
+    <27.4151,5,-10.55>,
+    <27.5164,5,-10.2828>,
+    <27.6152,5,-10.0146>,
+    <27.7062,5,-9.8301>,
+    <27.8353,5,-9.66988>,
+    <27.9963,5,-9.54169>,
+    <28.1813,5,-9.45168>,
+    <28.3815,5,-9.40422>,
+    <28.5872,5,-9.40156>,
+    <28.7886,5,-9.44386>,
+    <29.0658,5,-9.53281>,
+    <30.2393,5,-9.67598>,
+    <30.7602,5,-9.67819>,
+    <31.7345,5,-5.72537>,
+    <31.4653,5,-7.05627>,
+    <31.1404,5,-8.37465>,
+    <31.2723,5,-5.48527>,
+    <30.1666,5,-5.06666>,
+    <29.8798,5,-5.0166>,
+    <29.6819,5,-4.96047>,
+    <29.5009,5,-4.86251>,
+    <29.3457,5,-4.72744>,
+    <29.2237,5,-4.56176>,
+    <29.1408,5,-4.37346>,
+    <29.1009,5,-4.1716>,
+    <29.1061,5,-3.96591>,
+    <29.1433,5,-3.68257>,
+    <29.1777,5,-3.39888>,
+  }
+  normal_vectors {
+    731,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+  }
+  face_indices {
+    731,
+    <485,482,483>,
+    <506,510,507>,
+    <480,484,481>,
+    <459,456,457>,
+    <511,508,509>,
+    <486,485,483>,
+    <505,510,506>,
+    <479,484,480>,
+    <487,486,483>,
+    <487,483,484>,
+    <504,510,505>,
+    <478,484,479>,
+    <478,487,484>,
+    <477,487,478>,
+    <477,488,487>,
+    <460,459,457>,
+    <536,533,532>,
+    <454,458,455>,
+    <512,511,509>,
+    <461,460,457>,
+    <513,509,510>,
+    <513,510,504>,
+    <513,512,509>,
+    <514,513,504>,
+    <514,504,503>,
+    <531,536,532>,
+    <530,535,536>,
+    <530,536,531>,
+    <453,458,454>,
+    <452,458,453>,
+    <452,457,458>,
+    <452,461,457>,
+    <537,534,535>,
+    <451,461,452>,
+    <451,462,461>,
+    <431,433,430>,
+    <434,433,431>,
+    <20,474,473>,
+    <20,475,474>,
+    <20,476,475>,
+    <20,477,476>,
+    <20,489,488>,
+    <20,490,489>,
+    <20,488,477>,
+    <20,491,490>,
+    <20,492,491>,
+    <19,493,492>,
+    <19,494,493>,
+    <19,495,494>,
+    <19,496,495>,
+    <19,497,496>,
+    <19,498,497>,
+    <19,499,498>,
+    <19,492,20>,
+    <435,434,431>,
+    <435,431,432>,
+    <21,20,473>,
+    <21,467,466>,
+    <21,468,467>,
+    <21,469,468>,
+    <21,470,469>,
+    <21,471,470>,
+    <21,472,471>,
+    <21,473,472>,
+    <18,515,514>,
+    <18,516,515>,
+    <18,517,516>,
+    <18,518,517>,
+    <18,499,19>,
+    <18,514,503>,
+    <18,500,499>,
+    <18,501,500>,
+    <18,502,501>,
+    <18,503,502>,
+    <538,537,535>,
+    <539,538,535>,
+    <539,535,530>,
+    <540,539,530>,
+    <540,530,529>,
+    <22,462,451>,
+    <22,448,447>,
+    <22,449,448>,
+    <22,450,449>,
+    <22,451,450>,
+    <22,463,462>,
+    <22,464,463>,
+    <22,465,464>,
+    <22,466,465>,
+    <22,21,466>,
+    <17,519,518>,
+    <17,520,519>,
+    <17,521,520>,
+    <17,522,521>,
+    <17,518,18>,
+    <17,523,522>,
+    <17,524,523>,
+    <17,525,524>,
+    <428,432,429>,
+    <562,559,558>,
+    <557,562,558>,
+    <556,562,557>,
+    <23,441,440>,
+    <23,442,441>,
+    <23,443,442>,
+    <23,444,443>,
+    <23,445,444>,
+    <23,446,445>,
+    <23,447,446>,
+    <23,22,447>,
+    <16,525,17>,
+    <16,526,525>,
+    <16,527,526>,
+    <16,528,527>,
+    <16,529,528>,
+    <16,541,540>,
+    <16,542,541>,
+    <16,543,542>,
+    <16,544,543>,
+    <16,540,529>,
+    <427,432,428>,
+    <426,432,427>,
+    <426,435,432>,
+    <425,436,435>,
+    <425,435,426>,
+    <563,560,561>,
+    <24,422,421>,
+    <24,423,422>,
+    <24,424,423>,
+    <24,425,424>,
+    <24,437,436>,
+    <24,438,437>,
+    <24,439,438>,
+    <24,440,439>,
+    <24,436,425>,
+    <24,23,440>,
+    <15,545,544>,
+    <15,546,545>,
+    <15,547,546>,
+    <15,548,547>,
+    <15,549,548>,
+    <15,550,549>,
+    <15,551,550>,
+    <15,544,16>,
+    <405,407,404>,
+    <408,407,405>,
+    <409,408,405>,
+    <564,563,561>,
+    <565,564,561>,
+    <565,561,562>,
+    <565,562,556>,
+    <566,556,555>,
+    <566,565,556>,
+    <25,415,414>,
+    <25,416,415>,
+    <25,417,416>,
+    <25,418,417>,
+    <25,24,421>,
+    <25,419,418>,
+    <25,420,419>,
+    <25,421,420>,
+    <14,551,15>,
+    <14,552,551>,
+    <14,553,552>,
+    <14,554,553>,
+    <14,555,554>,
+    <14,567,566>,
+    <14,568,567>,
+    <14,569,568>,
+    <14,566,555>,
+    <570,569,14>,
+    <402,406,403>,
+    <588,583,582>,
+    <588,584,583>,
+    <588,585,584>,
+    <401,406,402>,
+    <400,405,406>,
+    <400,406,401>,
+    <400,409,405>,
+    <399,410,409>,
+    <399,409,400>,
+    <26,411,410>,
+    <26,412,411>,
+    <26,413,412>,
+    <26,414,413>,
+    <26,25,414>,
+    <26,410,399>,
+    <26,399,398>,
+    <13,571,570>,
+    <13,572,571>,
+    <13,573,572>,
+    <13,574,573>,
+    <13,575,574>,
+    <13,576,575>,
+    <13,577,576>,
+    <13,570,14>,
+    <397,26,398>,
+    <396,26,397>,
+    <395,26,396>,
+    <589,586,587>,
+    <379,381,378>,
+    <379,382,381>,
+    <379,383,382>,
+    <590,589,587>,
+    <27,26,395>,
+    <27,389,388>,
+    <27,390,389>,
+    <27,391,390>,
+    <27,392,391>,
+    <27,393,392>,
+    <27,394,393>,
+    <27,395,394>,
+    <12,577,13>,
+    <12,578,577>,
+    <12,579,578>,
+    <12,580,579>,
+    <12,581,580>,
+    <591,588,582>,
+    <591,590,587>,
+    <591,582,581>,
+    <591,587,588>,
+    <592,581,12>,
+    <592,591,581>,
+    <593,592,12>,
+    <594,593,12>,
+    <595,594,12>,
+    <596,595,12>,
+    <376,380,377>,
+    <28,27,388>,
+    <28,385,384>,
+    <28,386,385>,
+    <28,387,386>,
+    <28,388,387>,
+    <11,596,12>,
+    <11,597,596>,
+    <11,598,597>,
+    <11,599,598>,
+    <11,600,599>,
+    <11,601,600>,
+    <11,602,601>,
+    <11,603,602>,
+    <614,609,608>,
+    <614,610,609>,
+    <614,611,610>,
+    <375,380,376>,
+    <374,380,375>,
+    <374,383,379>,
+    <374,379,380>,
+    <373,28,384>,
+    <373,383,374>,
+    <373,384,383>,
+    <372,28,373>,
+    <371,28,372>,
+    <370,28,371>,
+    <369,28,370>,
+    <29,28,369>,
+    <29,363,362>,
+    <29,364,363>,
+    <29,365,364>,
+    <29,366,365>,
+    <29,367,366>,
+    <29,368,367>,
+    <29,369,368>,
+    <10,606,605>,
+    <10,607,606>,
+    <10,603,11>,
+    <10,604,603>,
+    <10,605,604>,
+    <615,612,613>,
+    <616,615,613>,
+    <617,613,614>,
+    <617,614,608>,
+    <617,616,613>,
+    <353,355,352>,
+    <353,356,355>,
+    <353,357,356>,
+    <618,608,607>,
+    <618,607,10>,
+    <618,617,608>,
+    <619,618,10>,
+    <620,619,10>,
+    <621,620,10>,
+    <622,621,10>,
+    <30,29,362>,
+    <30,359,358>,
+    <30,360,359>,
+    <30,361,360>,
+    <30,362,361>,
+    <9,623,622>,
+    <9,624,623>,
+    <9,625,624>,
+    <9,626,625>,
+    <9,627,626>,
+    <9,628,627>,
+    <9,622,10>,
+    <629,628,9>,
+    <350,354,351>,
+    <349,354,350>,
+    <348,354,349>,
+    <348,353,354>,
+    <348,357,353>,
+    <347,357,348>,
+    <347,358,357>,
+    <347,30,358>,
+    <346,30,347>,
+    <345,30,346>,
+    <640,635,634>,
+    <640,636,635>,
+    <640,637,636>,
+    <344,30,345>,
+    <343,30,344>,
+    <31,340,339>,
+    <31,341,340>,
+    <31,342,341>,
+    <31,343,342>,
+    <31,30,343>,
+    <8,629,9>,
+    <8,630,629>,
+    <8,631,630>,
+    <8,632,631>,
+    <8,633,632>,
+    <338,31,339>,
+    <337,31,338>,
+    <336,31,337>,
+    <641,638,639>,
+    <642,641,639>,
+    <643,642,639>,
+    <643,639,640>,
+    <643,640,634>,
+    <644,643,634>,
+    <644,634,633>,
+    <644,633,8>,
+    <645,644,8>,
+    <646,645,8>,
+    <647,646,8>,
+    <327,329,326>,
+    <327,330,329>,
+    <327,331,330>,
+    <648,647,8>,
+    <32,333,332>,
+    <32,334,333>,
+    <32,335,334>,
+    <32,336,335>,
+    <32,31,336>,
+    <7,648,8>,
+    <7,649,648>,
+    <7,650,649>,
+    <7,651,650>,
+    <652,651,7>,
+    <653,652,7>,
+    <654,653,7>,
+    <655,654,7>,
+    <324,328,325>,
+    <322,327,328>,
+    <322,331,327>,
+    <323,322,328>,
+    <323,328,324>,
+    <321,332,331>,
+    <321,331,322>,
+    <321,32,332>,
+    <320,32,321>,
+    <319,32,320>,
+    <318,32,319>,
+    <317,32,318>,
+    <666,661,660>,
+    <666,662,661>,
+    <666,663,662>,
+    <33,315,314>,
+    <33,316,315>,
+    <33,317,316>,
+    <33,32,317>,
+    <6,655,7>,
+    <6,656,655>,
+    <6,657,656>,
+    <6,658,657>,
+    <6,659,658>,
+    <313,33,314>,
+    <312,33,313>,
+    <311,33,312>,
+    <310,33,311>,
+    <667,664,665>,
+    <670,659,6>,
+    <670,660,659>,
+    <669,660,670>,
+    <669,665,666>,
+    <669,666,660>,
+    <671,670,6>,
+    <668,667,665>,
+    <668,665,669>,
+    <672,671,6>,
+    <673,672,6>,
+    <674,673,6>,
+    <34,307,306>,
+    <34,308,307>,
+    <34,309,308>,
+    <34,310,309>,
+    <34,33,310>,
+    <5,674,6>,
+    <5,675,674>,
+    <5,676,675>,
+    <301,303,300>,
+    <301,304,303>,
+    <301,305,304>,
+    <677,676,5>,
+    <678,677,5>,
+    <679,678,5>,
+    <680,679,5>,
+    <681,680,5>,
+    <302,305,301>,
+    <295,34,306>,
+    <294,34,295>,
+    <296,306,305>,
+    <296,305,302>,
+    <296,295,306>,
+    <293,34,294>,
+    <297,296,302>,
+    <298,297,302>,
+    <298,302,299>,
+    <292,34,293>,
+    <291,34,292>,
+    <35,34,291>,
+    <4,681,5>,
+    <4,682,681>,
+    <4,683,682>,
+    <4,684,683>,
+    <4,685,684>,
+    <290,35,291>,
+    <289,35,290>,
+    <288,35,289>,
+    <287,35,288>,
+    <692,687,686>,
+    <692,688,687>,
+    <692,689,688>,
+    <286,35,287>,
+    <285,35,286>,
+    <284,35,285>,
+    <696,4,697>,
+    <696,685,4>,
+    <696,686,685>,
+    <698,697,4>,
+    <695,686,696>,
+    <695,692,686>,
+    <695,691,692>,
+    <699,698,4>,
+    <36,281,280>,
+    <36,282,281>,
+    <36,283,282>,
+    <36,284,283>,
+    <36,35,284>,
+    <694,691,695>,
+    <700,4,3>,
+    <700,699,4>,
+    <693,691,694>,
+    <701,700,3>,
+    <690,691,693>,
+    <702,701,3>,
+    <703,702,3>,
+    <704,703,3>,
+    <705,704,3>,
+    <275,277,274>,
+    <275,278,277>,
+    <275,279,278>,
+    <706,705,3>,
+    <707,706,3>,
+    <2,708,707>,
+    <2,709,708>,
+    <2,710,709>,
+    <2,711,710>,
+    <2,707,3>,
+    <267,36,268>,
+    <269,36,280>,
+    <269,268,36>,
+    <269,280,279>,
+    <266,36,267>,
+    <270,279,275>,
+    <270,269,279>,
+    <270,275,276>,
+    <265,37,36>,
+    <265,36,266>,
+    <271,270,276>,
+    <264,37,265>,
+    <263,37,264>,
+    <272,271,276>,
+    <273,272,276>,
+    <262,37,263>,
+    <261,37,262>,
+    <260,37,261>,
+    <259,37,260>,
+    <258,37,259>,
+    <718,713,712>,
+    <718,714,713>,
+    <718,715,714>,
+    <38,37,258>,
+    <38,255,254>,
+    <38,256,255>,
+    <38,257,256>,
+    <38,258,257>,
+    <723,2,724>,
+    <725,724,2>,
+    <722,2,723>,
+    <722,711,2>,
+    <726,2,1>,
+    <726,725,2>,
+    <721,712,711>,
+    <721,717,718>,
+    <721,711,722>,
+    <721,718,712>,
+    <727,726,1>,
+    <720,717,721>,
+    <728,727,1>,
+    <729,728,1>,
+    <730,729,1>,
+    <719,717,720>,
+    <716,717,719>,
+    <52,730,1>,
+    <53,52,1>,
+    <54,53,1>,
+    <0,55,54>,
+    <0,56,55>,
+    <0,54,1>,
+    <249,251,248>,
+    <249,252,251>,
+    <249,253,252>,
+    <57,56,0>,
+    <58,57,0>,
+    <240,38,241>,
+    <242,241,38>,
+    <239,39,38>,
+    <239,38,240>,
+    <243,242,38>,
+    <243,38,254>,
+    <238,39,239>,
+    <244,249,250>,
+    <244,254,253>,
+    <244,253,249>,
+    <244,243,254>,
+    <237,39,238>,
+    <245,244,250>,
+    <236,39,237>,
+    <235,39,236>,
+    <234,39,235>,
+    <233,39,234>,
+    <246,245,250>,
+    <232,39,233>,
+    <247,246,250>,
+    <40,39,232>,
+    <231,40,232>,
+    <230,40,231>,
+    <65,61,60>,
+    <65,62,61>,
+    <229,40,230>,
+    <228,40,229>,
+    <64,65,60>,
+    <64,60,59>,
+    <74,0,75>,
+    <76,75,0>,
+    <76,0,51>,
+    <73,0,74>,
+    <77,76,51>,
+    <63,64,59>,
+    <63,59,58>,
+    <72,0,73>,
+    <72,63,58>,
+    <72,58,0>,
+    <78,77,51>,
+    <71,63,72>,
+    <79,78,51>,
+    <80,79,51>,
+    <68,63,71>,
+    <68,71,70>,
+    <81,80,51>,
+    <82,81,51>,
+    <83,51,50>,
+    <83,82,51>,
+    <67,68,70>,
+    <84,83,50>,
+    <69,67,70>,
+    <85,84,50>,
+    <66,67,69>,
+    <86,85,50>,
+    <87,86,50>,
+    <213,40,214>,
+    <213,41,40>,
+    <215,214,40>,
+    <212,41,213>,
+    <216,215,40>,
+    <211,41,212>,
+    <223,225,222>,
+    <223,226,225>,
+    <223,227,226>,
+    <217,40,228>,
+    <217,216,40>,
+    <210,41,211>,
+    <218,228,227>,
+    <218,217,228>,
+    <218,227,223>,
+    <209,41,210>,
+    <208,41,209>,
+    <207,41,208>,
+    <206,41,207>,
+    <206,42,41>,
+    <224,218,223>,
+    <224,219,218>,
+    <205,42,206>,
+    <204,42,205>,
+    <203,42,204>,
+    <220,219,224>,
+    <202,42,203>,
+    <102,50,49>,
+    <103,102,49>,
+    <101,50,102>,
+    <221,220,224>,
+    <104,103,49>,
+    <100,50,101>,
+    <99,50,100>,
+    <105,104,49>,
+    <106,105,49>,
+    <98,50,99>,
+    <98,87,50>,
+    <98,88,87>,
+    <107,106,49>,
+    <97,88,98>,
+    <108,107,49>,
+    <109,49,48>,
+    <109,108,49>,
+    <94,89,88>,
+    <94,90,89>,
+    <94,91,90>,
+    <110,109,48>,
+    <111,110,48>,
+    <112,111,48>,
+    <187,43,42>,
+    <187,186,43>,
+    <185,43,186>,
+    <188,187,42>,
+    <93,88,97>,
+    <93,94,88>,
+    <93,97,96>,
+    <113,112,48>,
+    <184,43,185>,
+    <189,188,42>,
+    <183,43,184>,
+    <190,189,42>,
+    <182,43,183>,
+    <95,93,96>,
+    <181,43,182>,
+    <191,190,42>,
+    <191,42,202>,
+    <180,43,181>,
+    <180,44,43>,
+    <192,202,201>,
+    <192,191,202>,
+    <179,44,180>,
+    <92,93,95>,
+    <178,44,179>,
+    <130,129,47>,
+    <128,48,47>,
+    <128,47,129>,
+    <131,130,47>,
+    <127,48,128>,
+    <177,44,178>,
+    <132,131,47>,
+    <133,132,47>,
+    <126,48,127>,
+    <134,133,47>,
+    <176,44,177>,
+    <197,199,196>,
+    <197,200,199>,
+    <197,201,200>,
+    <135,47,46>,
+    <135,134,47>,
+    <125,48,126>,
+    <136,135,46>,
+    <160,159,45>,
+    <158,45,159>,
+    <124,113,48>,
+    <124,48,125>,
+    <157,45,158>,
+    <156,45,157>,
+    <161,45,44>,
+    <161,160,45>,
+    <155,45,156>,
+    <137,136,46>,
+    <162,161,44>,
+    <154,46,45>,
+    <154,45,155>,
+    <123,114,113>,
+    <123,113,124>,
+    <153,46,154>,
+    <163,162,44>,
+    <138,137,46>,
+    <198,201,197>,
+    <198,192,201>,
+    <198,193,192>,
+    <152,46,153>,
+    <164,163,44>,
+    <194,193,198>,
+    <139,138,46>,
+    <151,46,152>,
+    <165,44,176>,
+    <165,164,44>,
+    <150,46,151>,
+    <150,139,46>,
+    <166,165,176>,
+    <166,176,175>,
+    <195,194,198>,
+    <149,139,150>,
+    <149,140,139>,
+    <120,115,114>,
+    <120,116,115>,
+    <120,117,116>,
+    <119,122,121>,
+    <119,123,122>,
+    <119,120,114>,
+    <119,114,123>,
+    <118,119,121>,
+    <171,173,170>,
+    <171,174,173>,
+    <171,175,174>,
+    <172,166,175>,
+    <172,167,166>,
+    <172,168,167>,
+    <172,175,171>,
+    <169,168,172>,
+    <146,141,140>,
+    <146,142,141>,
+    <146,143,142>,
+    <145,140,149>,
+    <145,148,147>,
+    <145,149,148>,
+    <145,146,140>,
+    <144,145,147>,
+  }
+} // end of Face5
+
+// face number6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body6 = mesh2{
+  vertex_vectors {
+    8,
+    <29.1061,-5,-3.96591>,
+    <29.1061,5,-3.96591>,
+    <29.1433,5,-3.68257>,
+    <29.1777,5,-3.39888>,
+    <29.2094,5,-3.11486>,
+    <29.2094,-5,-3.11486>,
+    <29.1433,-5,-3.68257>,
+    <29.1777,-5,-3.39888>,
+  }
+  normal_vectors {
+    8,
+    <0.990844,-0,-0.13501>,
+    <0.990844,-0,-0.13501>,
+    <0.992111,-0,-0.125364>,
+    <0.993283,-0,-0.115706>,
+    <0.994362,-0,-0.106038>,
+    <0.994362,-0,-0.106038>,
+    <0.992111,-0,-0.125364>,
+    <0.993283,-0,-0.115706>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <3,4,7>,
+    <6,2,7>,
+    <7,4,5>,
+  }
+} // end of Face6
+
+// face number7 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body7 = mesh2{
+  vertex_vectors {
+    13,
+    <31.6763,-5,-2.15807>,
+    <32.1825,-5,-2.03556>,
+    <31.6763,5,-2.15807>,
+    <32.1825,5,-2.03556>,
+    <33.5572,4.56445,-1.5702>,
+    <34.9909,4.109,-0.903734>,
+    <34.9909,-4.109,-0.903734>,
+    <33.5573,-4.56443,-1.57017>,
+    <32.5194,-0.217773,-1.93864>,
+    <33.6499,1.94562,-1.53247>,
+    <33.6499,-2.16339,-1.53247>,
+    <32.5579,3.47281,-1.92681>,
+    <32.5579,-3.58169,-1.92681>,
+  }
+  normal_vectors {
+    13,
+    <0.208052,-0,-0.978118>,
+    <0.260749,-0,-0.965407>,
+    <0.208052,-0,-0.978118>,
+    <0.260749,-0,-0.965407>,
+    <0.373796,-0,-0.927511>,
+    <0.464757,-0,-0.885438>,
+    <0.464757,-0,-0.885438>,
+    <0.373802,-0,-0.927508>,
+    <0.291763,-0,-0.956491>,
+    <0.380349,-0,-0.924843>,
+    <0.380349,-0,-0.924843>,
+    <0.295148,-0,-0.955451>,
+    <0.295148,-0,-0.955451>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face7
+
+// face number8 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body8 = mesh2{
+  vertex_vectors {
+    16,
+    <29.8798,-5,-5.0166>,
+    <29.8798,5,-5.0166>,
+    <29.6819,5,-4.96047>,
+    <29.5009,5,-4.86251>,
+    <29.3457,5,-4.72744>,
+    <29.2237,5,-4.56176>,
+    <29.1408,5,-4.37346>,
+    <29.1009,5,-4.1716>,
+    <29.1061,5,-3.96591>,
+    <29.1061,-5,-3.96591>,
+    <29.6819,-5,-4.96047>,
+    <29.5009,-5,-4.86251>,
+    <29.3457,-5,-4.72744>,
+    <29.2237,-5,-4.56176>,
+    <29.1408,-5,-4.37346>,
+    <29.1009,-5,-4.1716>,
+  }
+  normal_vectors {
+    16,
+    <0.165575,0,0.986197>,
+    <0.165575,0,0.986197>,
+    <0.376722,0,0.926326>,
+    <0.569723,0,0.821837>,
+    <0.735283,0,0.67776>,
+    <0.865426,0,0.501037>,
+    <0.953882,0,0.300182>,
+    <0.996392,0,0.0848672>,
+    <0.990909,-0,-0.134536>,
+    <0.990909,-0,-0.134536>,
+    <0.376722,0,0.926326>,
+    <0.569723,0,0.821837>,
+    <0.735283,0,0.67776>,
+    <0.865426,0,0.501037>,
+    <0.953882,0,0.300182>,
+    <0.996392,0,0.0848672>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face8
+
+// face number9 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body9 = mesh2{
+  vertex_vectors {
+    4,
+    <30.1666,-5,-5.06666>,
+    <30.1666,5,-5.06666>,
+    <29.8798,5,-5.0166>,
+    <29.8798,-5,-5.0166>,
+  }
+  normal_vectors {
+    4,
+    <0.171946,0,0.985106>,
+    <0.171946,0,0.985106>,
+    <0.171946,0,0.985106>,
+    <0.171946,0,0.985106>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face9
+
+// face number10 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body10 = mesh2{
+  vertex_vectors {
+    5,
+    <31.2723,-5,-5.48527>,
+    <31.2723,5,-5.48527>,
+    <30.1666,5,-5.06666>,
+    <30.1666,-5,-5.06666>,
+    <30.5418,0,-5.17831>,
+  }
+  normal_vectors {
+    5,
+    <0.433851,-0,0.900985>,
+    <0.433851,-0,0.900985>,
+    <0.220987,-0,0.975277>,
+    <0.220987,-0,0.975277>,
+    <0.330301,-0,0.943876>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face10
+
+// face number11 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body11 = mesh2{
+  vertex_vectors {
+    13,
+    <31.7345,-5,-5.72537>,
+    <31.2723,-5,-5.48527>,
+    <32.9579,-4.56445,-6.50619>,
+    <34.1904,-4.109,-7.4964>,
+    <34.1904,4.109,-7.4964>,
+    <31.7345,5,-5.72537>,
+    <32.9579,4.56445,-6.50619>,
+    <31.2723,5,-5.48527>,
+    <32.0384,-0.217773,-5.90009>,
+    <33.0388,1.94562,-6.56501>,
+    <33.0388,-2.16339,-6.56501>,
+    <32.073,3.47281,-5.9208>,
+    <32.073,-3.58169,-5.9208>,
+  }
+  normal_vectors {
+    13,
+    <0.484209,-0,0.874952>,
+    <0.436085,-0,0.899905>,
+    <0.584902,-0,0.811104>,
+    <0.663152,-0,0.748485>,
+    <0.663152,-0,0.748485>,
+    <0.484209,-0,0.874952>,
+    <0.584902,-0,0.811104>,
+    <0.436085,-0,0.899905>,
+    <0.512188,-0,0.858873>,
+    <0.590626,-0,0.806945>,
+    <0.590626,-0,0.806945>,
+    <0.515226,-0,0.857054>,
+    <0.515226,-0,0.857054>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face11
+
+// face number12 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body12 = mesh2{
+  vertex_vectors {
+    8,
+    <33.7579,-4.109,-9.25134>,
+    <32.2064,-4.56443,-9.55533>,
+    <30.7602,-5,-9.67819>,
+    <31.1404,-5,-8.37465>,
+    <31.4653,-5,-7.05627>,
+    <31.7345,-5,-5.72537>,
+    <32.9579,-4.56445,-6.50619>,
+    <34.1904,-4.109,-7.4964>,
+  }
+  normal_vectors {
+    8,
+    <0.296704,-0.951502,-0.0813116>,
+    <0.294936,-0.951502,-0.0875047>,
+    <0.293461,-0.951502,-0.0923326>,
+    <0.297088,-0.951502,-0.0798965>,
+    <0.300188,-0.951502,-0.0673187>,
+    <0.302756,-0.951502,-0.0546216>,
+    <0.301819,-0.951502,-0.0595818>,
+    <0.300505,-0.951502,-0.0658871>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face12
+
+// face number13 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body13 = mesh2{
+  vertex_vectors {
+    13,
+    <30.2393,-5,-9.67598>,
+    <30.7602,-5,-9.67819>,
+    <30.2393,5,-9.67598>,
+    <30.7602,5,-9.67819>,
+    <32.2063,4.56445,-9.55534>,
+    <33.7579,4.109,-9.25134>,
+    <33.7579,-4.109,-9.25134>,
+    <32.2064,-4.56443,-9.55533>,
+    <31.1105,-0.217773,-9.6647>,
+    <32.3053,1.94562,-9.54088>,
+    <32.3053,-2.16339,-9.54088>,
+    <31.1507,3.47281,-9.66243>,
+    <31.1507,-3.58169,-9.66243>,
+  }
+  normal_vectors {
+    13,
+    <-0.0320724,0,-0.999486>,
+    <0.022135,-0,-0.999755>,
+    <-0.0320724,0,-0.999486>,
+    <0.022135,-0,-0.999755>,
+    <0.140967,-0,-0.990014>,
+    <0.239353,-0,-0.970933>,
+    <0.239353,-0,-0.970933>,
+    <0.140973,-0,-0.990013>,
+    <0.0543816,-0,-0.99852>,
+    <0.147967,-0,-0.988992>,
+    <0.147967,-0,-0.988992>,
+    <0.0579173,-0,-0.998321>,
+    <0.0579173,-0,-0.998321>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face13
+
+// face number14 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body14 = mesh2{
+  vertex_vectors {
+    5,
+    <29.0658,-5,-9.53281>,
+    <29.0658,5,-9.53281>,
+    <30.2393,5,-9.67598>,
+    <30.2393,-5,-9.67598>,
+    <29.4499,0,-9.60832>,
+  }
+  normal_vectors {
+    5,
+    <-0.25756,0,-0.966262>,
+    <-0.25756,0,-0.966262>,
+    <-0.0345529,0,-0.999403>,
+    <-0.0345529,0,-0.999403>,
+    <-0.146174,0,-0.989259>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face14
+
+// face number15 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body15 = mesh2{
+  vertex_vectors {
+    4,
+    <28.7886,-5,-9.44386>,
+    <28.7886,5,-9.44386>,
+    <29.0658,5,-9.53281>,
+    <29.0658,-5,-9.53281>,
+  }
+  normal_vectors {
+    4,
+    <-0.305551,-0,-0.952176>,
+    <-0.305551,-0,-0.952176>,
+    <-0.305551,-0,-0.952176>,
+    <-0.305551,-0,-0.952176>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face15
+
+// face number16 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body16 = mesh2{
+  vertex_vectors {
+    16,
+    <27.6152,-5,-10.0146>,
+    <27.6152,5,-10.0146>,
+    <27.7062,5,-9.8301>,
+    <27.8353,5,-9.66988>,
+    <27.9963,5,-9.54169>,
+    <28.1813,5,-9.45168>,
+    <28.3815,5,-9.40422>,
+    <28.5872,5,-9.40156>,
+    <28.7886,5,-9.44386>,
+    <28.7886,-5,-9.44386>,
+    <27.7062,-5,-9.8301>,
+    <27.8353,-5,-9.66988>,
+    <27.9963,-5,-9.54169>,
+    <28.1813,-5,-9.45168>,
+    <28.3815,-5,-9.40422>,
+    <28.5872,-5,-9.40156>,
+  }
+  normal_vectors {
+    16,
+    <0.939928,-0,-0.341372>,
+    <0.939928,-0,-0.341372>,
+    <0.842822,-0,-0.538193>,
+    <0.705119,-0,-0.709089>,
+    <0.533452,-0,-0.84583>,
+    <0.336089,-0,-0.94183>,
+    <0.122539,-0,-0.992464>,
+    <-0.0969145,-0,-0.995293>,
+    <-0.311699,-0,-0.950181>,
+    <-0.311699,-0,-0.950181>,
+    <0.842822,-0,-0.538193>,
+    <0.705119,-0,-0.709089>,
+    <0.533452,-0,-0.84583>,
+    <0.336089,-0,-0.94183>,
+    <0.122539,-0,-0.992464>,
+    <-0.0969145,-0,-0.995293>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face16
+
+// face number17 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body17 = mesh2{
+  vertex_vectors {
+    8,
+    <27.3112,-5,-10.8162>,
+    <27.3112,5,-10.8162>,
+    <27.4151,5,-10.55>,
+    <27.5164,5,-10.2828>,
+    <27.6152,5,-10.0146>,
+    <27.6152,-5,-10.0146>,
+    <27.4151,-5,-10.55>,
+    <27.5164,-5,-10.2828>,
+  }
+  normal_vectors {
+    8,
+    <0.929742,-0,-0.368211>,
+    <0.929742,-0,-0.368211>,
+    <0.93328,-0,-0.359149>,
+    <0.93673,-0,-0.350053>,
+    <0.940091,-0,-0.340923>,
+    <0.940091,-0,-0.340923>,
+    <0.93328,-0,-0.359149>,
+    <0.93673,-0,-0.350053>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face17
+
+// face number18 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body18 = mesh2{
+  vertex_vectors {
+    16,
+    <27.811,-5,-12.0215>,
+    <27.811,5,-12.0215>,
+    <27.6322,5,-11.9197>,
+    <27.48,5,-11.7812>,
+    <27.3616,5,-11.613>,
+    <27.2828,5,-11.4229>,
+    <27.2473,5,-11.2202>,
+    <27.257,5,-11.0147>,
+    <27.3112,5,-10.8162>,
+    <27.3112,-5,-10.8162>,
+    <27.6322,-5,-11.9197>,
+    <27.48,-5,-11.7812>,
+    <27.3616,-5,-11.613>,
+    <27.2828,-5,-11.4229>,
+    <27.2473,-5,-11.2202>,
+    <27.257,-5,-11.0147>,
+  }
+  normal_vectors {
+    16,
+    <0.396776,0,0.917916>,
+    <0.396776,0,0.917916>,
+    <0.58746,0,0.809253>,
+    <0.749848,0,0.661611>,
+    <0.876115,0,0.482101>,
+    <0.960184,0,0.279369>,
+    <0.998002,0,0.0631805>,
+    <0.987749,-0,-0.156052>,
+    <0.929918,-0,-0.367766>,
+    <0.929918,-0,-0.367766>,
+    <0.58746,0,0.809253>,
+    <0.749848,0,0.661611>,
+    <0.876115,0,0.482101>,
+    <0.960184,0,0.279369>,
+    <0.998002,0,0.0631805>,
+    <0.987749,-0,-0.156052>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <5,6,13>,
+    <12,5,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face18
+
+// face number19 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body19 = mesh2{
+  vertex_vectors {
+    4,
+    <28.0775,-5,-12.1388>,
+    <28.0775,5,-12.1388>,
+    <27.811,5,-12.0215>,
+    <27.811,-5,-12.0215>,
+  }
+  normal_vectors {
+    4,
+    <0.402701,0,0.915332>,
+    <0.402701,0,0.915332>,
+    <0.402701,0,0.915332>,
+    <0.402701,0,0.915332>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face19
+
+// face number20 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body20 = mesh2{
+  vertex_vectors {
+    5,
+    <29.0508,-5,-12.8098>,
+    <29.0508,5,-12.8098>,
+    <28.0775,5,-12.1388>,
+    <28.0775,-5,-12.1388>,
+    <28.4151,0,-12.337>,
+  }
+  normal_vectors {
+    5,
+    <0.636864,-0,0.770977>,
+    <0.636864,-0,0.770977>,
+    <0.447964,-0,0.894051>,
+    <0.447964,-0,0.894051>,
+    <0.546587,-0,0.837402>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face20
+
+// face number21 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body21 = mesh2{
+  vertex_vectors {
+    13,
+    <29.4422,-5,-13.1536>,
+    <29.0508,-5,-12.8098>,
+    <30.4431,-4.56445,-14.2045>,
+    <31.4029,-4.109,-15.4609>,
+    <31.4029,4.109,-15.4609>,
+    <29.4422,5,-13.1536>,
+    <30.4431,4.56445,-14.2045>,
+    <29.0508,5,-12.8098>,
+    <29.6954,-0.217773,-13.3959>,
+    <30.5077,1.94562,-14.281>,
+    <30.5077,-2.16339,-14.281>,
+    <29.724,3.47281,-13.4243>,
+    <29.724,-3.58169,-13.4243>,
+  }
+  normal_vectors {
+    13,
+    <0.679529,-0,0.733649>,
+    <0.638775,-0,0.769394>,
+    <0.762016,-0,0.647558>,
+    <0.823006,-0,0.568033>,
+    <0.823006,-0,0.568033>,
+    <0.679529,-0,0.733649>,
+    <0.762016,-0,0.647558>,
+    <0.638775,-0,0.769394>,
+    <0.702847,-0,0.711342>,
+    <0.766578,-0,0.642151>,
+    <0.766578,-0,0.642151>,
+    <0.705361,-0,0.708848>,
+    <0.705361,-0,0.708848>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face21
+
+// face number22 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body22 = mesh2{
+  vertex_vectors {
+    8,
+    <30.5629,-4.109,-17.0613>,
+    <28.9838,-4.56443,-16.9852>,
+    <27.5502,-5,-16.7584>,
+    <28.2313,-5,-15.5837>,
+    <28.8623,-5,-14.3814>,
+    <29.4422,-5,-13.1536>,
+    <30.4431,-4.56445,-14.2045>,
+    <31.4029,-4.109,-15.4609>,
+  }
+  normal_vectors {
+    8,
+    <0.268623,-0.951502,-0.149955>,
+    <0.265425,-0.951502,-0.155545>,
+    <0.262837,-0.951502,-0.159879>,
+    <0.269334,-0.951502,-0.148673>,
+    <0.275355,-0.951502,-0.137202>,
+    <0.280886,-0.951502,-0.125489>,
+    <0.27879,-0.951502,-0.13008>,
+    <0.276005,-0.951502,-0.135888>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face22
+
+// face number23 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body23 = mesh2{
+  vertex_vectors {
+    13,
+    <27.045,-5,-16.6316>,
+    <27.5502,-5,-16.7584>,
+    <27.045,5,-16.6316>,
+    <27.5502,5,-16.7584>,
+    <28.9837,4.56445,-16.9852>,
+    <30.5629,4.109,-17.0613>,
+    <30.5629,-4.109,-17.0613>,
+    <28.9838,-4.56443,-16.9852>,
+    <27.8935,-0.217773,-16.8291>,
+    <29.0833,1.94562,-16.9948>,
+    <29.0833,-2.16339,-16.9948>,
+    <27.9332,3.47281,-16.8365>,
+    <27.9332,-3.58169,-16.8365>,
+  }
+  normal_vectors {
+    13,
+    <-0.270333,0,-0.962767>,
+    <-0.217765,0,-0.976001>,
+    <-0.270333,0,-0.962767>,
+    <-0.217765,0,-0.976001>,
+    <-0.100055,0,-0.994982>,
+    <3.87409e-05,-0,-1>,
+    <3.87409e-05,-0,-1>,
+    <-0.100049,0,-0.994982>,
+    <-0.18616,0,-0.982519>,
+    <-0.0930141,0,-0.995665>,
+    <-0.0930141,0,-0.995665>,
+    <-0.18268,0,-0.983172>,
+    <-0.18268,0,-0.983172>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face23
+
+// face number24 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body24 = mesh2{
+  vertex_vectors {
+    5,
+    <25.9398,-5,-16.2117>,
+    <25.9398,5,-16.2117>,
+    <27.045,5,-16.6316>,
+    <27.045,-5,-16.6316>,
+    <26.2947,0,-16.3769>,
+  }
+  normal_vectors {
+    5,
+    <-0.481317,0,-0.876547>,
+    <-0.481317,0,-0.876547>,
+    <-0.272722,0,-0.962093>,
+    <-0.272722,0,-0.962093>,
+    <-0.378672,0,-0.925531>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face24
+
+// face number25 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body25 = mesh2{
+  vertex_vectors {
+    4,
+    <25.692,-5,-16.059>,
+    <25.692,5,-16.059>,
+    <25.9398,5,-16.2117>,
+    <25.9398,-5,-16.2117>,
+  }
+  normal_vectors {
+    4,
+    <-0.524543,-0,-0.851384>,
+    <-0.524543,-0,-0.851384>,
+    <-0.524543,-0,-0.851384>,
+    <-0.524543,-0,-0.851384>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face25
+
+// face number26 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body26 = mesh2{
+  vertex_vectors {
+    16,
+    <24.4161,-5,-16.3324>,
+    <24.4161,5,-16.3324>,
+    <24.5486,5,-16.175>,
+    <24.7123,5,-16.0503>,
+    <24.8993,5,-15.9644>,
+    <25.1004,5,-15.9213>,
+    <25.3062,5,-15.9231>,
+    <25.5066,5,-15.9697>,
+    <25.692,5,-16.059>,
+    <25.692,-5,-16.059>,
+    <24.5486,-5,-16.175>,
+    <24.7123,-5,-16.0503>,
+    <24.8993,-5,-15.9644>,
+    <25.1004,-5,-15.9213>,
+    <25.3062,-5,-15.9231>,
+    <25.5066,-5,-15.9697>,
+  }
+  normal_vectors {
+    16,
+    <0.83092,-0,-0.556392>,
+    <0.83092,-0,-0.556392>,
+    <0.689533,-0,-0.724254>,
+    <0.514934,-0,-0.85723>,
+    <0.31553,-0,-0.948915>,
+    <0.100929,-0,-0.994894>,
+    <-0.118533,-0,-0.99295>,
+    <-0.332287,-0,-0.943178>,
+    <-0.530034,-0,-0.847976>,
+    <-0.530034,-0,-0.847976>,
+    <0.689533,-0,-0.724254>,
+    <0.514934,-0,-0.85723>,
+    <0.31553,-0,-0.948915>,
+    <0.100929,-0,-0.994894>,
+    <-0.118533,-0,-0.99295>,
+    <-0.332287,-0,-0.943178>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face26
+
+// face number27 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body27 = mesh2{
+  vertex_vectors {
+    8,
+    <23.9291,-5,-17.0379>,
+    <23.9291,5,-17.0379>,
+    <24.0937,5,-16.8043>,
+    <24.256,5,-16.5691>,
+    <24.4161,5,-16.3324>,
+    <24.4161,-5,-16.3324>,
+    <24.0937,-5,-16.8043>,
+    <24.256,-5,-16.5691>,
+  }
+  normal_vectors {
+    8,
+    <0.814607,-0,-0.580014>,
+    <0.814607,-0,-0.580014>,
+    <0.820211,-0,-0.572061>,
+    <0.825737,-0,-0.564055>,
+    <0.831186,-0,-0.555995>,
+    <0.831186,-0,-0.555995>,
+    <0.820211,-0,-0.572061>,
+    <0.825737,-0,-0.564055>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face27
+
+// face number28 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body28 = mesh2{
+  vertex_vectors {
+    16,
+    <24.1259,-5,-18.3278>,
+    <24.1259,5,-18.3278>,
+    <23.9767,5,-18.1861>,
+    <23.862,5,-18.0153>,
+    <23.7874,5,-17.8236>,
+    <23.7563,5,-17.6202>,
+    <23.7704,5,-17.4149>,
+    <23.8289,5,-17.2176>,
+    <23.9291,5,-17.0379>,
+    <23.9291,-5,-17.0379>,
+    <23.9767,-5,-18.1861>,
+    <23.862,-5,-18.0153>,
+    <23.7874,-5,-17.8236>,
+    <23.7563,-5,-17.6202>,
+    <23.7704,-5,-17.4149>,
+    <23.8289,-5,-17.2176>,
+  }
+  normal_vectors {
+    16,
+    <0.604918,0,0.796288>,
+    <0.604918,0,0.796288>,
+    <0.764056,0,0.645149>,
+    <0.886392,0,0.462935>,
+    <0.966031,0,0.258424>,
+    <0.99914,0,0.041463>,
+    <0.984122,-0,-0.177492>,
+    <0.921701,-0,-0.387901>,
+    <0.814884,-0,-0.579624>,
+    <0.814884,-0,-0.579624>,
+    <0.764056,0,0.645149>,
+    <0.886392,0,0.462935>,
+    <0.966031,0,0.258424>,
+    <0.99914,0,0.041463>,
+    <0.984122,-0,-0.177492>,
+    <0.921701,-0,-0.387901>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face28
+
+// face number29 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body29 = mesh2{
+  vertex_vectors {
+    4,
+    <24.3566,-5,-18.5054>,
+    <24.3566,5,-18.5054>,
+    <24.1259,5,-18.3278>,
+    <24.1259,-5,-18.3278>,
+  }
+  normal_vectors {
+    4,
+    <0.610052,0,0.792361>,
+    <0.610052,0,0.792361>,
+    <0.610052,0,0.792361>,
+    <0.610052,0,0.792361>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face29
+
+// face number30 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body30 = mesh2{
+  vertex_vectors {
+    5,
+    <25.1411,-5,-19.3899>,
+    <25.1411,5,-19.3899>,
+    <24.3566,5,-18.5054>,
+    <24.3566,-5,-18.5054>,
+    <24.6369,0,-18.7787>,
+  }
+  normal_vectors {
+    5,
+    <0.802864,-0,0.596162>,
+    <0.802864,-0,0.596162>,
+    <0.648908,-0,0.760867>,
+    <0.648908,-0,0.760867>,
+    <0.731108,-0,0.682262>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face30
+
+// face number31 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body31 = mesh2{
+  vertex_vectors {
+    13,
+    <25.4388,-5,-19.8173>,
+    <25.1411,-5,-19.3899>,
+    <26.1592,-4.56445,-21.0772>,
+    <26.7904,-4.109,-22.5268>,
+    <26.7904,4.109,-22.5268>,
+    <25.4388,5,-19.8173>,
+    <26.1592,4.56445,-21.0772>,
+    <25.1411,5,-19.3899>,
+    <25.6266,0.217773,-20.1132>,
+    <26.2035,2.16339,-21.1669>,
+    <26.2035,-1.94562,-21.1669>,
+    <25.6477,3.58169,-20.1477>,
+    <25.6477,-3.47281,-20.1477>,
+  }
+  normal_vectors {
+    13,
+    <0.835356,-0,0.549709>,
+    <0.804341,-0,0.594168>,
+    <0.894844,-0,0.446379>,
+    <0.93503,-0,0.354569>,
+    <0.93503,-0,0.354569>,
+    <0.835356,-0,0.549709>,
+    <0.894844,-0,0.446379>,
+    <0.804341,-0,0.594168>,
+    <0.852658,-0,0.522469>,
+    <0.89798,-0,0.440037>,
+    <0.89798,-0,0.440037>,
+    <0.854503,-0,0.519446>,
+    <0.854503,-0,0.519446>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face31
+
+// face number32 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body32 = mesh2{
+  vertex_vectors {
+    8,
+    <25.5918,-4.109,-23.8797>,
+    <24.0768,-4.56443,-23.4279>,
+    <22.7391,-5,-22.8646>,
+    <23.6815,-5,-21.887>,
+    <24.582,-5,-20.8707>,
+    <25.4388,-5,-19.8173>,
+    <26.1592,-4.56445,-21.0772>,
+    <26.7904,-4.109,-22.5268>,
+  }
+  normal_vectors {
+    8,
+    <0.224931,-0.951502,-0.209883>,
+    <0.220488,-0.951502,-0.214545>,
+    <0.216938,-0.951502,-0.218134>,
+    <0.225928,-0.951502,-0.208808>,
+    <0.234519,-0.951502,-0.199112>,
+    <0.242693,-0.951502,-0.189063>,
+    <0.239558,-0.951502,-0.193019>,
+    <0.235465,-0.951502,-0.197992>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face32
+
+// face number33 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body33 = mesh2{
+  vertex_vectors {
+    13,
+    <22.279,-5,-22.6206>,
+    <22.7391,-5,-22.8646>,
+    <22.279,5,-22.6206>,
+    <22.7391,5,-22.8646>,
+    <24.0767,4.56445,-23.4279>,
+    <25.5918,4.109,-23.8797>,
+    <25.5918,-4.109,-23.8797>,
+    <24.0768,-4.56443,-23.4279>,
+    <23.0555,-0.217773,-23.0154>,
+    <24.1711,1.94562,-23.4611>,
+    <24.1711,-2.16339,-23.4611>,
+    <23.0922,3.47281,-23.0321>,
+    <23.0922,-3.58169,-23.0321>,
+  }
+  normal_vectors {
+    13,
+    <-0.492883,0,-0.870096>,
+    <-0.44501,0,-0.895526>,
+    <-0.492883,0,-0.870096>,
+    <-0.44501,0,-0.895526>,
+    <-0.335263,0,-0.942125>,
+    <-0.239278,0,-0.970951>,
+    <-0.239278,0,-0.970951>,
+    <-0.335257,0,-0.942127>,
+    <-0.415883,0,-0.909418>,
+    <-0.328589,0,-0.944473>,
+    <-0.328589,0,-0.944473>,
+    <-0.41266,0,-0.910885>,
+    <-0.41266,0,-0.910885>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face33
+
+// face number34 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body34 = mesh2{
+  vertex_vectors {
+    5,
+    <21.3064,-5,-21.9484>,
+    <21.3064,5,-21.9484>,
+    <22.279,5,-22.6206>,
+    <22.279,-5,-22.6206>,
+    <21.6114,0,-22.1938>,
+  }
+  normal_vectors {
+    5,
+    <-0.677102,0,-0.735889>,
+    <-0.677102,0,-0.735889>,
+    <-0.495041,0,-0.86887>,
+    <-0.495041,0,-0.86887>,
+    <-0.589162,0,-0.808015>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face34
+
+// face number35 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body35 = mesh2{
+  vertex_vectors {
+    4,
+    <21.1022,-5,-21.7408>,
+    <21.1022,5,-21.7408>,
+    <21.3064,5,-21.9484>,
+    <21.3064,-5,-21.9484>,
+  }
+  normal_vectors {
+    4,
+    <-0.71305,-0,-0.701113>,
+    <-0.71305,-0,-0.701113>,
+    <-0.71305,-0,-0.701113>,
+    <-0.71305,-0,-0.701113>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face35
+
+// face number36 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body36 = mesh2{
+  vertex_vectors {
+    16,
+    <19.798,-5,-21.7009>,
+    <19.798,5,-21.7009>,
+    <19.9644,5,-21.5798>,
+    <20.1531,5,-21.498>,
+    <20.3552,5,-21.4592>,
+    <20.5609,5,-21.4655>,
+    <20.7602,5,-21.5166>,
+    <20.9436,5,-21.6098>,
+    <21.1022,5,-21.7408>,
+    <21.1022,-5,-21.7408>,
+    <19.9644,-5,-21.5798>,
+    <20.1531,-5,-21.498>,
+    <20.3552,-5,-21.4592>,
+    <20.5609,-5,-21.4655>,
+    <20.7602,-5,-21.5166>,
+    <20.9436,-5,-21.6098>,
+  }
+  normal_vectors {
+    16,
+    <0.673621,-0,-0.739077>,
+    <0.673621,-0,-0.739077>,
+    <0.496171,-0,-0.868225>,
+    <0.294822,-0,-0.955552>,
+    <0.0792706,-0,-0.996853>,
+    <-0.140098,-0,-0.990138>,
+    <-0.352718,-0,-0.93573>,
+    <-0.548348,-0,-0.83625>,
+    <-0.717567,-0,-0.696489>,
+    <-0.717567,-0,-0.696489>,
+    <0.496171,-0,-0.868225>,
+    <0.294822,-0,-0.955552>,
+    <0.0792706,-0,-0.996853>,
+    <-0.140098,-0,-0.990138>,
+    <-0.352718,-0,-0.93573>,
+    <-0.548348,-0,-0.83625>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face36
+
+// face number37 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body37 = mesh2{
+  vertex_vectors {
+    8,
+    <19.1563,-5,-22.2694>,
+    <19.1563,5,-22.2694>,
+    <19.372,5,-22.082>,
+    <19.586,5,-21.8925>,
+    <19.798,5,-21.7009>,
+    <19.798,-5,-21.7009>,
+    <19.372,-5,-22.082>,
+    <19.586,-5,-21.8925>,
+  }
+  normal_vectors {
+    8,
+    <0.65213,-0,-0.758108>,
+    <0.65213,-0,-0.758108>,
+    <0.659474,-0,-0.751728>,
+    <0.666756,-0,-0.745276>,
+    <0.673975,-0,-0.738755>,
+    <0.673975,-0,-0.738755>,
+    <0.659474,-0,-0.751728>,
+    <0.666756,-0,-0.745276>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face37
+
+// face number38 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body38 = mesh2{
+  vertex_vectors {
+    16,
+    <19.0387,-5,-23.569>,
+    <19.0387,5,-23.569>,
+    <18.9278,5,-23.3957>,
+    <18.8573,5,-23.2024>,
+    <18.8307,5,-22.9983>,
+    <18.8492,5,-22.7934>,
+    <18.912,5,-22.5975>,
+    <19.0161,5,-22.42>,
+    <19.1563,5,-22.2694>,
+    <19.1563,-5,-22.2694>,
+    <18.9278,-5,-23.3957>,
+    <18.8573,-5,-23.2024>,
+    <18.8307,-5,-22.9983>,
+    <18.8492,-5,-22.7934>,
+    <18.912,-5,-22.5975>,
+    <19.0161,-5,-22.42>,
+  }
+  normal_vectors {
+    16,
+    <0.777904,0,0.628383>,
+    <0.777904,0,0.628383>,
+    <0.896249,0,0.443552>,
+    <0.971422,0,0.237357>,
+    <0.999805,0,0.0197282>,
+    <0.98003,-0,-0.198851>,
+    <0.913048,-0,-0.407852>,
+    <0.802088,-0,-0.597207>,
+    <0.652491,-0,-0.757797>,
+    <0.652491,-0,-0.757797>,
+    <0.896249,0,0.443552>,
+    <0.971422,0,0.237357>,
+    <0.999805,0,0.0197282>,
+    <0.98003,-0,-0.198851>,
+    <0.913048,-0,-0.407852>,
+    <0.802088,-0,-0.597207>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face38
+
+// face number39 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body39 = mesh2{
+  vertex_vectors {
+    4,
+    <19.2202,-5,-23.7966>,
+    <19.2202,5,-23.7966>,
+    <19.0387,5,-23.569>,
+    <19.0387,-5,-23.569>,
+  }
+  normal_vectors {
+    4,
+    <0.78195,0,0.623342>,
+    <0.78195,0,0.623342>,
+    <0.78195,0,0.623342>,
+    <0.78195,0,0.623342>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face39
+
+// face number40 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body40 = mesh2{
+  vertex_vectors {
+    5,
+    <19.7702,-5,-24.8431>,
+    <19.7702,5,-24.8431>,
+    <19.2202,5,-23.7966>,
+    <19.2202,-5,-23.7966>,
+    <19.427,0,-24.129>,
+  }
+  normal_vectors {
+    5,
+    <0.922205,-0,0.386701>,
+    <0.922205,-0,0.386701>,
+    <0.812139,-0,0.583464>,
+    <0.812139,-0,0.583464>,
+    <0.873139,-0,0.487471>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face40
+
+// face number41 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body41 = mesh2{
+  vertex_vectors {
+    13,
+    <19.957,-5,-25.3294>,
+    <19.7702,-5,-24.8431>,
+    <20.3549,-4.56445,-26.7251>,
+    <20.6209,-4.109,-28.2836>,
+    <20.6209,4.109,-28.2836>,
+    <19.957,5,-25.3294>,
+    <20.3549,4.56445,-26.7251>,
+    <19.7702,5,-24.8431>,
+    <20.0686,0.217773,-25.6616>,
+    <20.3765,2.16339,-26.8228>,
+    <20.3765,-1.94562,-26.8228>,
+    <20.0807,3.58169,-25.7001>,
+    <20.0807,-3.47281,-25.7001>,
+  }
+  normal_vectors {
+    13,
+    <0.942636,-0,0.333821>,
+    <0.923162,-0,0.384411>,
+    <0.975667,-0,0.219258>,
+    <0.992714,-0,0.120498>,
+    <0.992714,-0,0.120498>,
+    <0.942636,-0,0.333821>,
+    <0.975667,-0,0.219258>,
+    <0.923162,-0,0.384411>,
+    <0.952917,-0,0.303232>,
+    <0.977194,-0,0.21235>,
+    <0.977194,-0,0.21235>,
+    <0.953984,-0,0.299856>,
+    <0.953984,-0,0.299856>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face41
+
+// face number42 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body42 = mesh2{
+  vertex_vectors {
+    8,
+    <19.1333,-4.109,-29.3103>,
+    <17.7705,-4.56443,-28.5091>,
+    <16.6065,-5,-27.642>,
+    <17.7555,-5,-26.9184>,
+    <18.873,-5,-26.1471>,
+    <19.957,-5,-25.3294>,
+    <20.3549,-4.56445,-26.7251>,
+    <20.6209,-4.109,-28.2836>,
+  }
+  normal_vectors {
+    8,
+    <0.168166,-0.951502,-0.257613>,
+    <0.162737,-0.951502,-0.261077>,
+    <0.158431,-0.951502,-0.263712>,
+    <0.169392,-0.951502,-0.256809>,
+    <0.180053,-0.951502,-0.24945>,
+    <0.190395,-0.951502,-0.241649>,
+    <0.186405,-0.951502,-0.244741>,
+    <0.18124,-0.951502,-0.248589>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face42
+
+// face number43 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body43 = mesh2{
+  vertex_vectors {
+    13,
+    <16.2181,-5,-27.295>,
+    <16.6065,-5,-27.642>,
+    <16.2181,5,-27.295>,
+    <16.6065,5,-27.642>,
+    <17.7704,4.56445,-28.509>,
+    <19.1333,4.109,-29.3103>,
+    <19.1333,-4.109,-29.3103>,
+    <17.7705,-4.56443,-28.5091>,
+    <16.8776,-0.217773,-27.8642>,
+    <17.8541,1.94562,-28.5639>,
+    <17.8541,-2.16339,-28.5639>,
+    <16.9093,3.47281,-27.8892>,
+    <16.9093,-3.58169,-27.8892>,
+  }
+  normal_vectors {
+    13,
+    <-0.686788,0,-0.726858>,
+    <-0.646392,0,-0.763006>,
+    <-0.686788,0,-0.726858>,
+    <-0.646392,0,-0.763006>,
+    <-0.550986,0,-0.834515>,
+    <-0.464689,0,-0.885474>,
+    <-0.464689,0,-0.885474>,
+    <-0.550981,0,-0.834518>,
+    <-0.621436,0,-0.783465>,
+    <-0.545068,0,-0.838392>,
+    <-0.545068,0,-0.838392>,
+    <-0.618658,0,-0.785661>,
+    <-0.618658,0,-0.785661>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face43
+
+// face number44 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body44 = mesh2{
+  vertex_vectors {
+    5,
+    <15.4346,-5,-26.4096>,
+    <15.4346,5,-26.4096>,
+    <16.2181,5,-27.295>,
+    <16.2181,-5,-27.295>,
+    <15.6721,0,-26.7208>,
+  }
+  normal_vectors {
+    5,
+    <-0.833537,0,-0.552464>,
+    <-0.833537,0,-0.552464>,
+    <-0.68859,0,-0.725151>,
+    <-0.68859,0,-0.725151>,
+    <-0.765413,0,-0.64354>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face44
+
+// face number45 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body45 = mesh2{
+  vertex_vectors {
+    4,
+    <15.2861,-5,-26.1592>,
+    <15.2861,5,-26.1592>,
+    <15.4346,5,-26.4096>,
+    <15.4346,-5,-26.4096>,
+  }
+  normal_vectors {
+    4,
+    <-0.860118,-0,-0.510096>,
+    <-0.860118,-0,-0.510096>,
+    <-0.860118,-0,-0.510096>,
+    <-0.860118,-0,-0.510096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face45
+
+// face number46 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body46 = mesh2{
+  vertex_vectors {
+    16,
+    <14.0293,-5,-25.8083>,
+    <14.0293,5,-25.8083>,
+    <14.2198,5,-25.7306>,
+    <14.4227,5,-25.6962>,
+    <14.6282,5,-25.707>,
+    <14.8264,5,-25.7623>,
+    <15.0077,5,-25.8596>,
+    <15.1635,5,-25.994>,
+    <15.2861,5,-26.1592>,
+    <15.2861,-5,-26.1592>,
+    <14.2198,-5,-25.7306>,
+    <14.4227,-5,-25.6962>,
+    <14.6282,-5,-25.707>,
+    <14.8264,-5,-25.7623>,
+    <15.0077,-5,-25.8596>,
+    <15.1635,-5,-25.994>,
+  }
+  normal_vectors {
+    16,
+    <0.477175,-0,-0.878808>,
+    <0.477175,-0,-0.878808>,
+    <0.273974,-0,-0.961737>,
+    <0.0575763,-0,-0.998341>,
+    <-0.161595,-0,-0.986857>,
+    <-0.372982,-0,-0.927839>,
+    <-0.566403,-0,-0.824128>,
+    <-0.732542,-0,-0.680722>,
+    <-0.863396,-0,-0.504526>,
+    <-0.863396,-0,-0.504526>,
+    <0.273974,-0,-0.961737>,
+    <0.0575763,-0,-0.998341>,
+    <-0.161595,-0,-0.986857>,
+    <-0.372982,-0,-0.927839>,
+    <-0.566403,-0,-0.824128>,
+    <-0.732542,-0,-0.680722>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face46
+
+// face number47 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body47 = mesh2{
+  vertex_vectors {
+    8,
+    <13.2702,-5,-26.2067>,
+    <13.2702,5,-26.2067>,
+    <13.5246,5,-26.0764>,
+    <13.7776,5,-25.9436>,
+    <14.0293,5,-25.8083>,
+    <14.0293,-5,-25.8083>,
+    <13.5246,-5,-26.0764>,
+    <13.7776,-5,-25.9436>,
+  }
+  normal_vectors {
+    8,
+    <0.451753,-0,-0.892143>,
+    <0.451753,-0,-0.892143>,
+    <0.460411,-0,-0.887706>,
+    <0.469025,-0,-0.883185>,
+    <0.477595,-0,-0.87858>,
+    <0.477595,-0,-0.87858>,
+    <0.460411,-0,-0.887706>,
+    <0.469025,-0,-0.883185>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face47
+
+// face number48 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body48 = mesh2{
+  vertex_vectors {
+    16,
+    <12.8451,-5,-27.4403>,
+    <12.8451,5,-27.4403>,
+    <12.7788,5,-27.2456>,
+    <12.7567,5,-27.041>,
+    <12.7796,5,-26.8365>,
+    <12.8467,5,-26.642>,
+    <12.9546,5,-26.4668>,
+    <13.098,5,-26.3193>,
+    <13.2702,5,-26.2067>,
+    <13.2702,-5,-26.2067>,
+    <12.7788,-5,-27.2456>,
+    <12.7567,-5,-27.041>,
+    <12.7796,-5,-26.8365>,
+    <12.8467,-5,-26.642>,
+    <12.9546,-5,-26.4668>,
+    <13.098,-5,-26.3193>,
+  }
+  normal_vectors {
+    16,
+    <0.905682,0,0.423958>,
+    <0.905682,0,0.423958>,
+    <0.976354,0,0.216176>,
+    <0.999998,-0,-0.00201832>,
+    <0.975474,-0,-0.220115>,
+    <0.903964,-0,-0.427608>,
+    <0.788912,-0,-0.614506>,
+    <0.63586,-0,-0.771805>,
+    <0.45218,-0,-0.891927>,
+    <0.45218,-0,-0.891927>,
+    <0.976354,0,0.216176>,
+    <0.999998,-0,-0.00201832>,
+    <0.975474,-0,-0.220115>,
+    <0.903964,-0,-0.427608>,
+    <0.788912,-0,-0.614506>,
+    <0.63586,-0,-0.771805>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face48
+
+// face number49 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body49 = mesh2{
+  vertex_vectors {
+    4,
+    <12.9668,-5,-27.7048>,
+    <12.9668,5,-27.7048>,
+    <12.8451,5,-27.4403>,
+    <12.8451,-5,-27.4403>,
+  }
+  normal_vectors {
+    4,
+    <0.908403,0,0.418096>,
+    <0.908403,0,0.418096>,
+    <0.908403,0,0.418096>,
+    <0.908403,0,0.418096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face49
+
+// face number50 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body50 = mesh2{
+  vertex_vectors {
+    5,
+    <13.2504,-5,-28.8526>,
+    <13.2504,5,-28.8526>,
+    <12.9668,5,-27.7048>,
+    <12.9668,-5,-27.7048>,
+    <13.0881,0,-28.077>,
+  }
+  normal_vectors {
+    5,
+    <0.987951,-0,0.154766>,
+    <0.987951,-0,0.154766>,
+    <0.928172,-0,0.372152>,
+    <0.928172,-0,0.372152>,
+    <0.964427,-0,0.26435>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face50
+
+// face number51 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body51 = mesh2{
+  vertex_vectors {
+    13,
+    <13.3154,-5,-29.3694>,
+    <13.2504,-5,-28.8526>,
+    <13.3677,-4.56445,-30.8197>,
+    <13.253,-4.109,-32.3966>,
+    <13.253,4.109,-32.3966>,
+    <13.3154,5,-29.3694>,
+    <13.3677,4.56445,-30.8197>,
+    <13.2504,5,-28.8526>,
+    <13.3442,-0.217773,-29.7187>,
+    <13.3653,1.94562,-30.9198>,
+    <13.3653,-2.16339,-30.9198>,
+    <13.3468,3.47281,-29.7589>,
+    <13.3468,-3.58169,-29.7589>,
+  }
+  normal_vectors {
+    13,
+    <0.995134,-0,0.0985334>,
+    <0.988332,-0,0.152313>,
+    <0.999788,-0,-0.0206059>,
+    <0.992704,-0,-0.120575>,
+    <0.992704,-0,-0.120575>,
+    <0.995134,-0,0.0985334>,
+    <0.999788,-0,-0.0206059>,
+    <0.988332,-0,0.152313>,
+    <0.997795,-0,0.0663732>,
+    <0.999617,-0,-0.0276783>,
+    <0.999617,-0,-0.0276783>,
+    <0.998024,-0,0.0628393>,
+    <0.998024,-0,0.0628393>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face51
+
+// face number52 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body52 = mesh2{
+  vertex_vectors {
+    8,
+    <11.5629,-4.109,-33.0375>,
+    <10.4314,-4.56443,-31.9334>,
+    <9.5088,-5,-30.813>,
+    <10.7975,-5,-30.3854>,
+    <12.0672,-5,-29.9039>,
+    <13.3154,-5,-29.3694>,
+    <13.3677,-4.56445,-30.8197>,
+    <13.253,-4.109,-32.3966>,
+  }
+  normal_vectors {
+    8,
+    <0.101629,-0.951502,-0.290372>,
+    <0.095528,-0.951502,-0.292436>,
+    <0.0907165,-0.951502,-0.293964>,
+    <0.103012,-0.951502,-0.289885>,
+    <0.115124,-0.951502,-0.285291>,
+    <0.127032,-0.951502,-0.280192>,
+    <0.122418,-0.951502,-0.282238>,
+    <0.116482,-0.951502,-0.284739>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face52
+
+// face number53 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body53 = mesh2{
+  vertex_vectors {
+    13,
+    <9.21473,-5,-30.3831>,
+    <9.5088,-5,-30.813>,
+    <9.21473,5,-30.3831>,
+    <9.5088,5,-30.813>,
+    <10.4314,4.56445,-31.9333>,
+    <11.5629,4.109,-33.0375>,
+    <11.5629,-4.109,-33.0375>,
+    <10.4314,-4.56443,-31.9334>,
+    <9.71887,-0.217773,-31.0936>,
+    <10.4995,1.94562,-32.0066>,
+    <10.4995,-2.16339,-32.0066>,
+    <9.7436,3.47281,-31.1254>,
+    <9.7436,-3.58169,-31.1254>,
+  }
+  normal_vectors {
+    13,
+    <-0.84078,0,-0.541377>,
+    <-0.810208,0,-0.586142>,
+    <-0.84078,0,-0.541377>,
+    <-0.810208,0,-0.586142>,
+    <-0.734688,0,-0.678406>,
+    <-0.663094,0,-0.748536>,
+    <-0.663094,0,-0.748536>,
+    <-0.734683,0,-0.67841>,
+    <-0.790874,0,-0.611979>,
+    <-0.72987,0,-0.683586>,
+    <-0.72987,0,-0.683586>,
+    <-0.788702,0,-0.614776>,
+    <-0.788702,0,-0.614776>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face53
+
+// face number54 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body54 = mesh2{
+  vertex_vectors {
+    5,
+    <8.6659,-5,-29.3359>,
+    <8.6659,5,-29.3359>,
+    <9.21473,5,-30.3831>,
+    <9.21473,-5,-30.3831>,
+    <8.82197,0,-29.6949>,
+  }
+  normal_vectors {
+    5,
+    <-0.941529,0,-0.336932>,
+    <-0.941529,0,-0.336932>,
+    <-0.842121,0,-0.539289>,
+    <-0.842121,0,-0.539289>,
+    <-0.89718,0,-0.441664>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face54
+
+// face number55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body55 = mesh2{
+  vertex_vectors {
+    4,
+    <8.58164,-5,-29.0573>,
+    <8.58164,5,-29.0573>,
+    <8.6659,5,-29.3359>,
+    <8.6659,-5,-29.3359>,
+  }
+  normal_vectors {
+    4,
+    <-0.957198,-0,-0.289434>,
+    <-0.957198,-0,-0.289434>,
+    <-0.957198,-0,-0.289434>,
+    <-0.957198,-0,-0.289434>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face55
+
+// face number56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body56 = mesh2{
+  vertex_vectors {
+    16,
+    <7.44534,-5,-28.4158>,
+    <7.44534,5,-28.4158>,
+    <7.64891,5,-28.3859>,
+    <7.8541,5,-28.4011>,
+    <8.05103,5,-28.4608>,
+    <8.23021,5,-28.5619>,
+    <8.383,5,-28.6997>,
+    <8.50206,5,-28.8675>,
+    <8.58164,5,-29.0573>,
+    <8.58164,-5,-29.0573>,
+    <7.64891,-5,-28.3859>,
+    <7.8541,-5,-28.4011>,
+    <8.05103,-5,-28.4608>,
+    <8.23021,-5,-28.5619>,
+    <8.383,-5,-28.6997>,
+    <8.50206,-5,-28.8675>,
+  }
+  normal_vectors {
+    16,
+    <0.252996,-0,-0.967467>,
+    <0.252996,-0,-0.967467>,
+    <0.0358537,-0,-0.999357>,
+    <-0.183016,-0,-0.98311>,
+    <-0.39307,-0,-0.919509>,
+    <-0.58419,-0,-0.811617>,
+    <-0.747172,-0,-0.664631>,
+    <-0.874164,-0,-0.485631>,
+    <-0.959049,-0,-0.283241>,
+    <-0.959049,-0,-0.283241>,
+    <0.0358537,-0,-0.999357>,
+    <-0.183016,-0,-0.98311>,
+    <-0.39307,-0,-0.919509>,
+    <-0.58419,-0,-0.811617>,
+    <-0.747172,-0,-0.664631>,
+    <-0.874164,-0,-0.485631>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face56
+
+// face number57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body57 = mesh2{
+  vertex_vectors {
+    8,
+    <6.61295,-5,-28.621>,
+    <6.61295,5,-28.621>,
+    <6.89108,5,-28.5553>,
+    <7.16855,5,-28.4869>,
+    <7.44534,5,-28.4158>,
+    <7.44534,-5,-28.4158>,
+    <6.89108,-5,-28.5553>,
+    <7.16855,-5,-28.4869>,
+  }
+  normal_vectors {
+    8,
+    <0.225122,-0,-0.974331>,
+    <0.225122,-0,-0.974331>,
+    <0.23459,-0,-0.972094>,
+    <0.244036,-0,-0.969766>,
+    <0.253459,-0,-0.967346>,
+    <0.253459,-0,-0.967346>,
+    <0.23459,-0,-0.972094>,
+    <0.244036,-0,-0.969766>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face57
+
+// face number58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body58 = mesh2{
+  vertex_vectors {
+    16,
+    <5.90492,-5,-29.717>,
+    <5.90492,5,-29.717>,
+    <5.88721,5,-29.512>,
+    <5.91464,5,-29.3081>,
+    <5.98589,5,-29.1151>,
+    <6.09754,5,-28.9422>,
+    <6.2442,5,-28.7979>,
+    <6.41881,5,-28.6891>,
+    <6.61295,5,-28.621>,
+    <6.61295,-5,-28.621>,
+    <5.88721,-5,-29.512>,
+    <5.91464,-5,-29.3081>,
+    <5.98589,-5,-29.1151>,
+    <6.09754,-5,-28.9422>,
+    <6.2442,-5,-28.7979>,
+    <6.41881,-5,-28.6891>,
+  }
+  normal_vectors {
+    16,
+    <0.980824,0,0.194896>,
+    <0.980824,0,0.194896>,
+    <0.999718,-0,-0.0237628>,
+    <0.970457,-0,-0.241274>,
+    <0.894452,-0,-0.447164>,
+    <0.775363,-0,-0.631516>,
+    <0.618926,-0,-0.785449>,
+    <0.432678,-0,-0.901549>,
+    <0.225588,-0,-0.974223>,
+    <0.225588,-0,-0.974223>,
+    <0.999718,-0,-0.0237628>,
+    <0.970457,-0,-0.241274>,
+    <0.894452,-0,-0.447164>,
+    <0.775363,-0,-0.631516>,
+    <0.618926,-0,-0.785449>,
+    <0.432678,-0,-0.901549>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face58
+
+// face number59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body59 = mesh2{
+  vertex_vectors {
+    4,
+    <5.95981,-5,-30.0029>,
+    <5.95981,5,-30.0029>,
+    <5.90492,5,-29.717>,
+    <5.90492,-5,-29.717>,
+  }
+  normal_vectors {
+    4,
+    <0.982063,0,0.188551>,
+    <0.982063,0,0.188551>,
+    <0.982063,0,0.188551>,
+    <0.982063,0,0.188551>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face59
+
+// face number60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body60 = mesh2{
+  vertex_vectors {
+    5,
+    <5.96049,-5,-31.1852>,
+    <5.96049,5,-31.1852>,
+    <5.95981,5,-30.0029>,
+    <5.95981,-5,-30.0029>,
+    <5.98847,0,-30.3933>,
+  }
+  normal_vectors {
+    5,
+    <0.996281,-0,-0.0861639>,
+    <0.996281,-0,-0.0861639>,
+    <0.990263,-0,0.139211>,
+    <0.990263,-0,0.139211>,
+    <0.999665,-0,0.0258663>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face60
+
+// face number61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body61 = mesh2{
+  vertex_vectors {
+    13,
+    <5.89989,-5,-31.7025>,
+    <5.96049,-5,-31.1852>,
+    <5.60363,-4.56445,-33.1233>,
+    <5.11483,-4.109,-34.6268>,
+    <5.11483,4.109,-34.6268>,
+    <5.89989,5,-31.7025>,
+    <5.60363,4.56445,-33.1233>,
+    <5.96049,5,-31.1852>,
+    <5.84428,0.217773,-32.0486>,
+    <5.57734,2.16339,-33.2198>,
+    <5.57734,-1.94562,-33.2198>,
+    <5.83718,3.58169,-32.0883>,
+    <5.83718,-3.47281,-32.0883>,
+  }
+  normal_vectors {
+    13,
+    <0.989798,-0,-0.142481>,
+    <0.996064,-0,-0.0886361>,
+    <0.965804,-0,-0.259272>,
+    <0.935003,-0,-0.354641>,
+    <0.935003,-0,-0.354641>,
+    <0.989798,-0,-0.142481>,
+    <0.965804,-0,-0.259272>,
+    <0.996064,-0,-0.0886361>,
+    <0.984685,-0,-0.174343>,
+    <0.963946,-0,-0.266098>,
+    <0.963946,-0,-0.266098>,
+    <0.984061,-0,-0.177829>,
+    <0.984061,-0,-0.177829>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face61
+
+// face number62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body62 = mesh2{
+  vertex_vectors {
+    8,
+    <3.32054,-4.109,-34.8447>,
+    <2.48617,-4.56443,-33.5019>,
+    <1.85846,-5,-32.1932>,
+    <3.21209,-5,-32.0865>,
+    <4.56004,-5,-31.9228>,
+    <5.89989,-5,-31.7025>,
+    <5.60363,-4.56445,-33.1233>,
+    <5.11483,-4.109,-34.6268>,
+  }
+  normal_vectors {
+    8,
+    <0.0291848,-0.951502,-0.306256>,
+    <0.0227675,-0.951502,-0.3068>,
+    <0.0177302,-0.951502,-0.307132>,
+    <0.0306443,-0.951502,-0.306114>,
+    <0.043504,-0.951502,-0.304552>,
+    <0.0562866,-0.951502,-0.302451>,
+    <0.0513164,-0.951502,-0.303333>,
+    <0.0449551,-0.951502,-0.304341>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face62
+
+// face number63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body63 = mesh2{
+  vertex_vectors {
+    13,
+    <1.67582,-5,-31.7054>,
+    <1.85846,-5,-32.1932>,
+    <1.67582,5,-31.7054>,
+    <1.85846,5,-32.1932>,
+    <2.48612,4.56445,-33.5018>,
+    <3.32054,4.109,-34.8447>,
+    <3.32054,-4.109,-34.8447>,
+    <2.48617,-4.56443,-33.5019>,
+    <1.99527,-0.217773,-32.5159>,
+    <2.53475,1.94562,-33.5893>,
+    <2.53475,-2.16339,-33.5893>,
+    <2.01167,3.47281,-32.5528>,
+    <2.01167,-3.58169,-32.5528>,
+  }
+  normal_vectors {
+    13,
+    <-0.945908,0,-0.324434>,
+    <-0.926938,0,-0.375215>,
+    <-0.945908,0,-0.324434>,
+    <-0.926938,0,-0.375215>,
+    <-0.875692,0,-0.48287>,
+    <-0.822962,0,-0.568097>,
+    <-0.822962,0,-0.568097>,
+    <-0.875689,0,-0.482876>,
+    <-0.914349,0,-0.404928>,
+    <-0.872254,0,-0.489053>,
+    <-0.872254,0,-0.489053>,
+    <-0.912909,0,-0.408163>,
+    <-0.912909,0,-0.408163>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face63
+
+// face number64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body64 = mesh2{
+  vertex_vectors {
+    5,
+    <1.39354,-5,-30.5574>,
+    <1.39354,5,-30.5574>,
+    <1.67582,5,-31.7054>,
+    <1.67582,-5,-31.7054>,
+    <1.45915,0,-30.9433>,
+  }
+  normal_vectors {
+    5,
+    <-0.994803,0,-0.101819>,
+    <-0.994803,0,-0.101819>,
+    <-0.946711,0,-0.322086>,
+    <-0.946711,0,-0.322086>,
+    <-0.976807,0,-0.214121>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face64
+
+// face number65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body65 = mesh2{
+  vertex_vectors {
+    4,
+    <1.37841,-5,-30.2666>,
+    <1.37841,5,-30.2666>,
+    <1.39354,5,-30.5574>,
+    <1.39354,-5,-30.5574>,
+  }
+  normal_vectors {
+    4,
+    <-0.99865,-0,-0.0519507>,
+    <-0.99865,-0,-0.0519507>,
+    <-0.99865,-0,-0.0519507>,
+    <-0.99865,-0,-0.0519507>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face65
+
+// face number66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body66 = mesh2{
+  vertex_vectors {
+    16,
+    <0.428651,-5,-29.3719>,
+    <0.428651,5,-29.3719>,
+    <0.633461,5,-29.3916>,
+    <0.829043,5,-29.4555>,
+    <1.00598,5,-29.5605>,
+    <1.15574,5,-29.7016>,
+    <1.27112,5,-29.8719>,
+    <1.34655,5,-30.0634>,
+    <1.37841,5,-30.2666>,
+    <1.37841,-5,-30.2666>,
+    <0.633461,-5,-29.3916>,
+    <0.829043,-5,-29.4555>,
+    <1.00598,-5,-29.5605>,
+    <1.15574,-5,-29.7016>,
+    <1.27112,-5,-29.8719>,
+    <1.34655,-5,-30.0634>,
+  }
+  normal_vectors {
+    16,
+    <0.0141142,-0,-0.9999>,
+    <0.0141142,-0,-0.9999>,
+    <-0.20435,-0,-0.978898>,
+    <-0.412971,-0,-0.910744>,
+    <-0.6017,-0,-0.798722>,
+    <-0.761447,-0,-0.648227>,
+    <-0.884517,-0,-0.466508>,
+    <-0.964981,-0,-0.262319>,
+    <-0.998965,-0,-0.0454941>,
+    <-0.998965,-0,-0.0454941>,
+    <-0.20435,-0,-0.978898>,
+    <-0.412971,-0,-0.910744>,
+    <-0.6017,-0,-0.798722>,
+    <-0.761447,-0,-0.648227>,
+    <-0.884517,-0,-0.466508>,
+    <-0.964981,-0,-0.262319>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face66
+
+// face number67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body67 = mesh2{
+  vertex_vectors {
+    8,
+    <-0.428651,-5,-29.3719>,
+    <-0.428651,5,-29.3719>,
+    <-0.142888,5,-29.3747>,
+    <0.142888,5,-29.3747>,
+    <0.428651,5,-29.3719>,
+    <0.428651,-5,-29.3719>,
+    <-0.142888,-5,-29.3747>,
+    <0.142888,-5,-29.3747>,
+  }
+  normal_vectors {
+    8,
+    <-0.0145924,0,-0.999894>,
+    <-0.0145924,0,-0.999894>,
+    <-0.00486427,0,-0.999988>,
+    <0.00486427,-0,-0.999988>,
+    <0.0145924,-0,-0.999894>,
+    <0.0145924,-0,-0.999894>,
+    <-0.00486427,0,-0.999988>,
+    <0.00486427,-0,-0.999988>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face67
+
+// face number68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body68 = mesh2{
+  vertex_vectors {
+    16,
+    <-1.37841,-5,-30.2666>,
+    <-1.37841,5,-30.2666>,
+    <-1.34655,5,-30.0634>,
+    <-1.27112,5,-29.8719>,
+    <-1.15574,5,-29.7016>,
+    <-1.00598,5,-29.5605>,
+    <-0.829043,5,-29.4555>,
+    <-0.633461,5,-29.3916>,
+    <-0.428651,5,-29.3719>,
+    <-0.428651,-5,-29.3719>,
+    <-1.34655,-5,-30.0634>,
+    <-1.27112,-5,-29.8719>,
+    <-1.15574,-5,-29.7016>,
+    <-1.00598,-5,-29.5605>,
+    <-0.829043,-5,-29.4555>,
+    <-0.633461,-5,-29.3916>,
+  }
+  normal_vectors {
+    16,
+    <0.998965,-0,-0.0454941>,
+    <0.998965,-0,-0.0454941>,
+    <0.964981,-0,-0.262319>,
+    <0.884517,-0,-0.466508>,
+    <0.761447,-0,-0.648227>,
+    <0.6017,-0,-0.798722>,
+    <0.412971,-0,-0.910744>,
+    <0.20435,-0,-0.978898>,
+    <-0.0141142,-0,-0.9999>,
+    <-0.0141142,-0,-0.9999>,
+    <0.964981,-0,-0.262319>,
+    <0.884517,-0,-0.466508>,
+    <0.761447,-0,-0.648227>,
+    <0.6017,-0,-0.798722>,
+    <0.412971,-0,-0.910744>,
+    <0.20435,-0,-0.978898>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face68
+
+// face number69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body69 = mesh2{
+  vertex_vectors {
+    4,
+    <-1.39354,-5,-30.5574>,
+    <-1.39354,5,-30.5574>,
+    <-1.37841,5,-30.2666>,
+    <-1.37841,-5,-30.2666>,
+  }
+  normal_vectors {
+    4,
+    <0.99865,-0,-0.0519507>,
+    <0.99865,-0,-0.0519507>,
+    <0.99865,-0,-0.0519507>,
+    <0.99865,-0,-0.0519507>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face69
+
+// face number70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body70 = mesh2{
+  vertex_vectors {
+    5,
+    <-1.67582,-5,-31.7054>,
+    <-1.67582,5,-31.7054>,
+    <-1.39354,5,-30.5574>,
+    <-1.39354,-5,-30.5574>,
+    <-1.45915,0,-30.9433>,
+  }
+  normal_vectors {
+    5,
+    <0.946711,-0,-0.322086>,
+    <0.946711,-0,-0.322086>,
+    <0.994803,-0,-0.101819>,
+    <0.994803,-0,-0.101819>,
+    <0.976807,-0,-0.214121>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face70
+
+// face number71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body71 = mesh2{
+  vertex_vectors {
+    13,
+    <-1.85846,-5,-32.1932>,
+    <-1.67582,-5,-31.7054>,
+    <-2.48612,-4.56445,-33.5018>,
+    <-3.32054,-4.109,-34.8447>,
+    <-3.32054,4.109,-34.8447>,
+    <-1.85846,5,-32.1932>,
+    <-2.48612,4.56445,-33.5018>,
+    <-1.67582,5,-31.7054>,
+    <-1.99527,-0.217773,-32.5159>,
+    <-2.53475,1.94562,-33.5893>,
+    <-2.53475,-2.16339,-33.5893>,
+    <-2.01167,3.47281,-32.5528>,
+    <-2.01167,-3.58169,-32.5528>,
+  }
+  normal_vectors {
+    13,
+    <0.926938,-0,-0.375215>,
+    <0.945908,-0,-0.324434>,
+    <0.875692,-0,-0.48287>,
+    <0.822962,-0,-0.568097>,
+    <0.822962,-0,-0.568097>,
+    <0.926938,-0,-0.375215>,
+    <0.875692,-0,-0.48287>,
+    <0.945908,-0,-0.324434>,
+    <0.914349,-0,-0.404928>,
+    <0.872254,-0,-0.489053>,
+    <0.872254,-0,-0.489053>,
+    <0.912909,-0,-0.408163>,
+    <0.912909,-0,-0.408163>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face71
+
+// face number72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body72 = mesh2{
+  vertex_vectors {
+    8,
+    <-5.11483,-4.109,-34.6268>,
+    <-5.6036,-4.56443,-33.1234>,
+    <-5.89989,-5,-31.7025>,
+    <-4.56004,-5,-31.9228>,
+    <-3.21209,-5,-32.0865>,
+    <-1.85846,-5,-32.1932>,
+    <-2.48612,-4.56445,-33.5018>,
+    <-3.32054,-4.109,-34.8447>,
+  }
+  normal_vectors {
+    8,
+    <-0.0449551,-0.951502,-0.304341>,
+    <-0.0513161,-0.951502,-0.303334>,
+    <-0.0562866,-0.951502,-0.302451>,
+    <-0.043504,-0.951502,-0.304552>,
+    <-0.0306443,-0.951502,-0.306114>,
+    <-0.0177302,-0.951502,-0.307132>,
+    <-0.0227672,-0.951502,-0.3068>,
+    <-0.0291848,-0.951502,-0.306256>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face72
+
+// face number73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body73 = mesh2{
+  vertex_vectors {
+    13,
+    <-5.96049,-5,-31.1852>,
+    <-5.89989,-5,-31.7025>,
+    <-5.96049,5,-31.1852>,
+    <-5.89989,5,-31.7025>,
+    <-5.60363,4.56445,-33.1233>,
+    <-5.11483,4.109,-34.6268>,
+    <-5.11483,-4.109,-34.6268>,
+    <-5.6036,-4.56443,-33.1234>,
+    <-5.84428,-0.217773,-32.0486>,
+    <-5.57734,1.94562,-33.2198>,
+    <-5.57734,-2.16339,-33.2198>,
+    <-5.83718,3.47281,-32.0883>,
+    <-5.83718,-3.58169,-32.0883>,
+  }
+  normal_vectors {
+    13,
+    <-0.996064,0,-0.0886361>,
+    <-0.989798,0,-0.142481>,
+    <-0.996064,0,-0.0886361>,
+    <-0.989798,0,-0.142481>,
+    <-0.965804,0,-0.259272>,
+    <-0.935003,0,-0.354641>,
+    <-0.935003,0,-0.354641>,
+    <-0.965803,0,-0.259278>,
+    <-0.984685,0,-0.174343>,
+    <-0.963946,0,-0.266098>,
+    <-0.963946,0,-0.266098>,
+    <-0.984061,0,-0.177829>,
+    <-0.984061,0,-0.177829>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face73
+
+// face number74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body74 = mesh2{
+  vertex_vectors {
+    5,
+    <-5.95981,-5,-30.0029>,
+    <-5.95981,5,-30.0029>,
+    <-5.96049,5,-31.1852>,
+    <-5.96049,-5,-31.1852>,
+    <-5.98847,0,-30.3933>,
+  }
+  normal_vectors {
+    5,
+    <-0.990263,-0,0.139211>,
+    <-0.990263,-0,0.139211>,
+    <-0.996281,0,-0.0861639>,
+    <-0.996281,0,-0.0861639>,
+    <-0.999665,-0,0.0258663>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face74
+
+// face number75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body75 = mesh2{
+  vertex_vectors {
+    4,
+    <-5.90492,-5,-29.717>,
+    <-5.90492,5,-29.717>,
+    <-5.95981,5,-30.0029>,
+    <-5.95981,-5,-30.0029>,
+  }
+  normal_vectors {
+    4,
+    <-0.982063,-0,0.188551>,
+    <-0.982063,-0,0.188551>,
+    <-0.982063,-0,0.188551>,
+    <-0.982063,-0,0.188551>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face75
+
+// face number76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body76 = mesh2{
+  vertex_vectors {
+    16,
+    <-6.61295,-5,-28.621>,
+    <-6.61295,5,-28.621>,
+    <-6.41881,5,-28.6891>,
+    <-6.2442,5,-28.7979>,
+    <-6.09754,5,-28.9422>,
+    <-5.98589,5,-29.1151>,
+    <-5.91464,5,-29.3081>,
+    <-5.88721,5,-29.512>,
+    <-5.90492,5,-29.717>,
+    <-5.90492,-5,-29.717>,
+    <-6.41881,-5,-28.6891>,
+    <-6.2442,-5,-28.7979>,
+    <-6.09754,-5,-28.9422>,
+    <-5.98589,-5,-29.1151>,
+    <-5.91464,-5,-29.3081>,
+    <-5.88721,-5,-29.512>,
+  }
+  normal_vectors {
+    16,
+    <-0.225588,-0,-0.974223>,
+    <-0.225588,-0,-0.974223>,
+    <-0.432678,-0,-0.901549>,
+    <-0.618926,-0,-0.785449>,
+    <-0.775363,-0,-0.631516>,
+    <-0.894452,-0,-0.447164>,
+    <-0.970457,-0,-0.241274>,
+    <-0.999718,-0,-0.0237628>,
+    <-0.980824,-0,0.194896>,
+    <-0.980824,-0,0.194896>,
+    <-0.432678,-0,-0.901549>,
+    <-0.618926,-0,-0.785449>,
+    <-0.775363,-0,-0.631516>,
+    <-0.894452,-0,-0.447164>,
+    <-0.970457,-0,-0.241274>,
+    <-0.999718,-0,-0.0237628>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face76
+
+// face number77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body77 = mesh2{
+  vertex_vectors {
+    8,
+    <-7.44534,-5,-28.4158>,
+    <-7.44534,5,-28.4158>,
+    <-7.16855,5,-28.4869>,
+    <-6.89108,5,-28.5553>,
+    <-6.61295,5,-28.621>,
+    <-6.61295,-5,-28.621>,
+    <-7.16855,-5,-28.4869>,
+    <-6.89108,-5,-28.5553>,
+  }
+  normal_vectors {
+    8,
+    <-0.253459,0,-0.967346>,
+    <-0.253459,0,-0.967346>,
+    <-0.244036,0,-0.969766>,
+    <-0.23459,0,-0.972094>,
+    <-0.225122,0,-0.974331>,
+    <-0.225122,0,-0.974331>,
+    <-0.244036,0,-0.969766>,
+    <-0.23459,0,-0.972094>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face77
+
+// face number78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body78 = mesh2{
+  vertex_vectors {
+    16,
+    <-8.58164,-5,-29.0573>,
+    <-8.58164,5,-29.0573>,
+    <-8.50206,5,-28.8675>,
+    <-8.383,5,-28.6997>,
+    <-8.23021,5,-28.5619>,
+    <-8.05103,5,-28.4608>,
+    <-7.8541,5,-28.4011>,
+    <-7.64891,5,-28.3859>,
+    <-7.44534,5,-28.4158>,
+    <-7.44534,-5,-28.4158>,
+    <-8.50206,-5,-28.8675>,
+    <-8.383,-5,-28.6997>,
+    <-8.23021,-5,-28.5619>,
+    <-8.05103,-5,-28.4608>,
+    <-7.8541,-5,-28.4011>,
+    <-7.64891,-5,-28.3859>,
+  }
+  normal_vectors {
+    16,
+    <0.959049,-0,-0.283241>,
+    <0.959049,-0,-0.283241>,
+    <0.874164,-0,-0.485631>,
+    <0.747172,-0,-0.664631>,
+    <0.58419,-0,-0.811617>,
+    <0.39307,-0,-0.919509>,
+    <0.183016,-0,-0.98311>,
+    <-0.0358537,-0,-0.999357>,
+    <-0.252996,-0,-0.967467>,
+    <-0.252996,-0,-0.967467>,
+    <0.874164,-0,-0.485631>,
+    <0.747172,-0,-0.664631>,
+    <0.58419,-0,-0.811617>,
+    <0.39307,-0,-0.919509>,
+    <0.183016,-0,-0.98311>,
+    <-0.0358537,-0,-0.999357>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face78
+
+// face number79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body79 = mesh2{
+  vertex_vectors {
+    4,
+    <-8.6659,-5,-29.3359>,
+    <-8.6659,5,-29.3359>,
+    <-8.58164,5,-29.0573>,
+    <-8.58164,-5,-29.0573>,
+  }
+  normal_vectors {
+    4,
+    <0.957198,-0,-0.289434>,
+    <0.957198,-0,-0.289434>,
+    <0.957198,-0,-0.289434>,
+    <0.957198,-0,-0.289434>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face79
+
+// face number80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body80 = mesh2{
+  vertex_vectors {
+    5,
+    <-9.21473,-5,-30.3831>,
+    <-9.21473,5,-30.3831>,
+    <-8.6659,5,-29.3359>,
+    <-8.6659,-5,-29.3359>,
+    <-8.82197,0,-29.6949>,
+  }
+  normal_vectors {
+    5,
+    <0.842121,-0,-0.539289>,
+    <0.842121,-0,-0.539289>,
+    <0.941529,-0,-0.336932>,
+    <0.941529,-0,-0.336932>,
+    <0.89718,-0,-0.441664>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face80
+
+// face number81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body81 = mesh2{
+  vertex_vectors {
+    13,
+    <-9.5088,-5,-30.813>,
+    <-9.21473,-5,-30.3831>,
+    <-10.4314,-4.56445,-31.9333>,
+    <-11.5629,-4.109,-33.0375>,
+    <-11.5629,4.109,-33.0375>,
+    <-9.5088,5,-30.813>,
+    <-10.4314,4.56445,-31.9333>,
+    <-9.21473,5,-30.3831>,
+    <-9.71887,-0.217773,-31.0936>,
+    <-10.4995,1.94562,-32.0066>,
+    <-10.4995,-2.16339,-32.0066>,
+    <-9.7436,3.47281,-31.1254>,
+    <-9.7436,-3.58169,-31.1254>,
+  }
+  normal_vectors {
+    13,
+    <0.810208,-0,-0.586142>,
+    <0.84078,-0,-0.541377>,
+    <0.734688,-0,-0.678406>,
+    <0.663094,-0,-0.748536>,
+    <0.663094,-0,-0.748536>,
+    <0.810208,-0,-0.586142>,
+    <0.734688,-0,-0.678406>,
+    <0.84078,-0,-0.541377>,
+    <0.790874,-0,-0.611979>,
+    <0.72987,-0,-0.683586>,
+    <0.72987,-0,-0.683586>,
+    <0.788702,-0,-0.614776>,
+    <0.788702,-0,-0.614776>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face81
+
+// face number82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body82 = mesh2{
+  vertex_vectors {
+    8,
+    <-13.253,-4.109,-32.3966>,
+    <-13.3677,-4.56443,-30.8198>,
+    <-13.3154,-5,-29.3694>,
+    <-12.0672,-5,-29.9039>,
+    <-10.7975,-5,-30.3854>,
+    <-9.5088,-5,-30.813>,
+    <-10.4314,-4.56445,-31.9333>,
+    <-11.5629,-4.109,-33.0375>,
+  }
+  normal_vectors {
+    8,
+    <-0.116482,-0.951502,-0.284739>,
+    <-0.122417,-0.951502,-0.282238>,
+    <-0.127032,-0.951502,-0.280192>,
+    <-0.115124,-0.951502,-0.285291>,
+    <-0.103012,-0.951502,-0.289885>,
+    <-0.0907165,-0.951502,-0.293964>,
+    <-0.0955277,-0.951502,-0.292436>,
+    <-0.101629,-0.951502,-0.290372>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face82
+
+// face number83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body83 = mesh2{
+  vertex_vectors {
+    13,
+    <-13.2504,-5,-28.8526>,
+    <-13.3154,-5,-29.3694>,
+    <-13.2504,5,-28.8526>,
+    <-13.3154,5,-29.3694>,
+    <-13.3677,4.56445,-30.8197>,
+    <-13.253,4.109,-32.3966>,
+    <-13.253,-4.109,-32.3966>,
+    <-13.3677,-4.56443,-30.8198>,
+    <-13.3442,-0.217773,-29.7187>,
+    <-13.3653,1.94562,-30.9198>,
+    <-13.3653,-2.16339,-30.9198>,
+    <-13.3468,3.47281,-29.7589>,
+    <-13.3468,-3.58169,-29.7589>,
+  }
+  normal_vectors {
+    13,
+    <-0.988332,-0,0.152313>,
+    <-0.995134,-0,0.0985334>,
+    <-0.988332,-0,0.152313>,
+    <-0.995134,-0,0.0985334>,
+    <-0.999788,0,-0.0206059>,
+    <-0.992704,0,-0.120575>,
+    <-0.992704,0,-0.120575>,
+    <-0.999788,0,-0.0206122>,
+    <-0.997795,-0,0.0663732>,
+    <-0.999617,0,-0.0276783>,
+    <-0.999617,0,-0.0276783>,
+    <-0.998024,-0,0.0628393>,
+    <-0.998024,-0,0.0628393>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face83
+
+// face number84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body84 = mesh2{
+  vertex_vectors {
+    5,
+    <-12.9668,-5,-27.7048>,
+    <-12.9668,5,-27.7048>,
+    <-13.2504,5,-28.8526>,
+    <-13.2504,-5,-28.8526>,
+    <-13.0881,0,-28.077>,
+  }
+  normal_vectors {
+    5,
+    <-0.928172,-0,0.372152>,
+    <-0.928172,-0,0.372152>,
+    <-0.987951,-0,0.154766>,
+    <-0.987951,-0,0.154766>,
+    <-0.964427,-0,0.26435>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face84
+
+// face number85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body85 = mesh2{
+  vertex_vectors {
+    4,
+    <-12.8451,-5,-27.4403>,
+    <-12.8451,5,-27.4403>,
+    <-12.9668,5,-27.7048>,
+    <-12.9668,-5,-27.7048>,
+  }
+  normal_vectors {
+    4,
+    <-0.908403,-0,0.418096>,
+    <-0.908403,-0,0.418096>,
+    <-0.908403,-0,0.418096>,
+    <-0.908403,-0,0.418096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face85
+
+// face number86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body86 = mesh2{
+  vertex_vectors {
+    16,
+    <-13.2702,-5,-26.2067>,
+    <-13.2702,5,-26.2067>,
+    <-13.098,5,-26.3193>,
+    <-12.9546,5,-26.4668>,
+    <-12.8467,5,-26.642>,
+    <-12.7796,5,-26.8365>,
+    <-12.7567,5,-27.041>,
+    <-12.7788,5,-27.2456>,
+    <-12.8451,5,-27.4403>,
+    <-12.8451,-5,-27.4403>,
+    <-13.098,-5,-26.3193>,
+    <-12.9546,-5,-26.4668>,
+    <-12.8467,-5,-26.642>,
+    <-12.7796,-5,-26.8365>,
+    <-12.7567,-5,-27.041>,
+    <-12.7788,-5,-27.2456>,
+  }
+  normal_vectors {
+    16,
+    <-0.45218,-0,-0.891927>,
+    <-0.45218,-0,-0.891927>,
+    <-0.63586,-0,-0.771805>,
+    <-0.788912,-0,-0.614506>,
+    <-0.903964,-0,-0.427608>,
+    <-0.975474,-0,-0.220115>,
+    <-0.999998,-0,-0.00201832>,
+    <-0.976354,-0,0.216176>,
+    <-0.905682,-0,0.423958>,
+    <-0.905682,-0,0.423958>,
+    <-0.63586,-0,-0.771805>,
+    <-0.788912,-0,-0.614506>,
+    <-0.903964,-0,-0.427608>,
+    <-0.975474,-0,-0.220115>,
+    <-0.999998,-0,-0.00201832>,
+    <-0.976354,-0,0.216176>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face86
+
+// face number87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body87 = mesh2{
+  vertex_vectors {
+    8,
+    <-14.0293,-5,-25.8083>,
+    <-14.0293,5,-25.8083>,
+    <-13.7776,5,-25.9436>,
+    <-13.5246,5,-26.0764>,
+    <-13.2702,5,-26.2067>,
+    <-13.2702,-5,-26.2067>,
+    <-13.7776,-5,-25.9436>,
+    <-13.5246,-5,-26.0764>,
+  }
+  normal_vectors {
+    8,
+    <-0.477595,0,-0.87858>,
+    <-0.477595,0,-0.87858>,
+    <-0.469025,0,-0.883185>,
+    <-0.460411,0,-0.887706>,
+    <-0.451753,0,-0.892143>,
+    <-0.451753,0,-0.892143>,
+    <-0.469025,0,-0.883185>,
+    <-0.460411,0,-0.887706>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face87
+
+// face number88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body88 = mesh2{
+  vertex_vectors {
+    16,
+    <-15.2861,-5,-26.1592>,
+    <-15.2861,5,-26.1592>,
+    <-15.1635,5,-25.994>,
+    <-15.0077,5,-25.8596>,
+    <-14.8264,5,-25.7623>,
+    <-14.6282,5,-25.707>,
+    <-14.4227,5,-25.6962>,
+    <-14.2198,5,-25.7306>,
+    <-14.0293,5,-25.8083>,
+    <-14.0293,-5,-25.8083>,
+    <-15.1635,-5,-25.994>,
+    <-15.0077,-5,-25.8596>,
+    <-14.8264,-5,-25.7623>,
+    <-14.6282,-5,-25.707>,
+    <-14.4227,-5,-25.6962>,
+    <-14.2198,-5,-25.7306>,
+  }
+  normal_vectors {
+    16,
+    <0.863396,-0,-0.504526>,
+    <0.863396,-0,-0.504526>,
+    <0.732542,-0,-0.680722>,
+    <0.566403,-0,-0.824128>,
+    <0.372982,-0,-0.927839>,
+    <0.161595,-0,-0.986857>,
+    <-0.0575763,-0,-0.998341>,
+    <-0.273974,-0,-0.961737>,
+    <-0.477175,-0,-0.878808>,
+    <-0.477175,-0,-0.878808>,
+    <0.732542,-0,-0.680722>,
+    <0.566403,-0,-0.824128>,
+    <0.372982,-0,-0.927839>,
+    <0.161595,-0,-0.986857>,
+    <-0.0575763,-0,-0.998341>,
+    <-0.273974,-0,-0.961737>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face88
+
+// face number89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body89 = mesh2{
+  vertex_vectors {
+    4,
+    <-15.4346,-5,-26.4096>,
+    <-15.4346,5,-26.4096>,
+    <-15.2861,5,-26.1592>,
+    <-15.2861,-5,-26.1592>,
+  }
+  normal_vectors {
+    4,
+    <0.860118,-0,-0.510096>,
+    <0.860118,-0,-0.510096>,
+    <0.860118,-0,-0.510096>,
+    <0.860118,-0,-0.510096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face89
+
+// face number90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body90 = mesh2{
+  vertex_vectors {
+    5,
+    <-16.2181,-5,-27.295>,
+    <-16.2181,5,-27.295>,
+    <-15.4346,5,-26.4096>,
+    <-15.4346,-5,-26.4096>,
+    <-15.6721,0,-26.7208>,
+  }
+  normal_vectors {
+    5,
+    <0.68859,-0,-0.725151>,
+    <0.68859,-0,-0.725151>,
+    <0.833537,-0,-0.552464>,
+    <0.833537,-0,-0.552464>,
+    <0.765413,-0,-0.64354>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face90
+
+// face number91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body91 = mesh2{
+  vertex_vectors {
+    13,
+    <-16.6065,-5,-27.642>,
+    <-16.2181,-5,-27.295>,
+    <-17.7704,-4.56445,-28.509>,
+    <-19.1333,-4.109,-29.3103>,
+    <-19.1333,4.109,-29.3103>,
+    <-16.6065,5,-27.642>,
+    <-17.7704,4.56445,-28.509>,
+    <-16.2181,5,-27.295>,
+    <-16.8776,-0.217773,-27.8642>,
+    <-17.8541,1.94562,-28.5639>,
+    <-17.8541,-2.16339,-28.5639>,
+    <-16.9093,3.47281,-27.8892>,
+    <-16.9093,-3.58169,-27.8892>,
+  }
+  normal_vectors {
+    13,
+    <0.646392,-0,-0.763006>,
+    <0.686788,-0,-0.726858>,
+    <0.550986,-0,-0.834515>,
+    <0.464689,-0,-0.885474>,
+    <0.464689,-0,-0.885474>,
+    <0.646392,-0,-0.763006>,
+    <0.550986,-0,-0.834515>,
+    <0.686788,-0,-0.726858>,
+    <0.621436,-0,-0.783465>,
+    <0.545068,-0,-0.838392>,
+    <0.545068,-0,-0.838392>,
+    <0.618658,-0,-0.785661>,
+    <0.618658,-0,-0.785661>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face91
+
+// face number92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body92 = mesh2{
+  vertex_vectors {
+    8,
+    <-20.6209,-4.109,-28.2836>,
+    <-20.3549,-4.56443,-26.7251>,
+    <-19.957,-5,-25.3294>,
+    <-18.873,-5,-26.1471>,
+    <-17.7555,-5,-26.9184>,
+    <-16.6065,-5,-27.642>,
+    <-17.7704,-4.56445,-28.509>,
+    <-19.1333,-4.109,-29.3103>,
+  }
+  normal_vectors {
+    8,
+    <-0.18124,-0.951502,-0.248589>,
+    <-0.186404,-0.951502,-0.244741>,
+    <-0.190395,-0.951502,-0.241649>,
+    <-0.180053,-0.951502,-0.24945>,
+    <-0.169392,-0.951502,-0.256809>,
+    <-0.158431,-0.951502,-0.263712>,
+    <-0.162736,-0.951502,-0.261077>,
+    <-0.168166,-0.951502,-0.257613>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face92
+
+// face number93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body93 = mesh2{
+  vertex_vectors {
+    13,
+    <-19.7702,-5,-24.8431>,
+    <-19.957,-5,-25.3294>,
+    <-19.7702,5,-24.8431>,
+    <-19.957,5,-25.3294>,
+    <-20.3549,4.56445,-26.7251>,
+    <-20.6209,4.109,-28.2836>,
+    <-20.6209,-4.109,-28.2836>,
+    <-20.3549,-4.56443,-26.7251>,
+    <-20.0686,-0.217773,-25.6616>,
+    <-20.3765,1.94562,-26.8228>,
+    <-20.3765,-2.16339,-26.8228>,
+    <-20.0807,3.47281,-25.7001>,
+    <-20.0807,-3.58169,-25.7001>,
+  }
+  normal_vectors {
+    13,
+    <-0.923162,-0,0.384411>,
+    <-0.942636,-0,0.333821>,
+    <-0.923162,-0,0.384411>,
+    <-0.942636,-0,0.333821>,
+    <-0.975667,-0,0.219258>,
+    <-0.992714,-0,0.120498>,
+    <-0.992714,-0,0.120498>,
+    <-0.975668,-0,0.219252>,
+    <-0.952917,-0,0.303232>,
+    <-0.977194,-0,0.21235>,
+    <-0.977194,-0,0.21235>,
+    <-0.953984,-0,0.299856>,
+    <-0.953984,-0,0.299856>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <8,10,12>,
+    <0,8,12>,
+    <10,7,12>,
+  }
+} // end of Face93
+
+// face number94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body94 = mesh2{
+  vertex_vectors {
+    5,
+    <-19.2202,-5,-23.7966>,
+    <-19.2202,5,-23.7966>,
+    <-19.7702,5,-24.8431>,
+    <-19.7702,-5,-24.8431>,
+    <-19.427,0,-24.129>,
+  }
+  normal_vectors {
+    5,
+    <-0.812139,-0,0.583464>,
+    <-0.812139,-0,0.583464>,
+    <-0.922205,-0,0.386701>,
+    <-0.922205,-0,0.386701>,
+    <-0.873139,-0,0.487471>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face94
+
+// face number95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body95 = mesh2{
+  vertex_vectors {
+    4,
+    <-19.0387,-5,-23.569>,
+    <-19.0387,5,-23.569>,
+    <-19.2202,5,-23.7966>,
+    <-19.2202,-5,-23.7966>,
+  }
+  normal_vectors {
+    4,
+    <-0.78195,-0,0.623342>,
+    <-0.78195,-0,0.623342>,
+    <-0.78195,-0,0.623342>,
+    <-0.78195,-0,0.623342>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face95
+
+// face number96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body96 = mesh2{
+  vertex_vectors {
+    16,
+    <-19.1563,-5,-22.2694>,
+    <-19.1563,5,-22.2694>,
+    <-19.0161,5,-22.42>,
+    <-18.912,5,-22.5975>,
+    <-18.8492,5,-22.7934>,
+    <-18.8307,5,-22.9983>,
+    <-18.8573,5,-23.2024>,
+    <-18.9278,5,-23.3957>,
+    <-19.0387,5,-23.569>,
+    <-19.0387,-5,-23.569>,
+    <-19.0161,-5,-22.42>,
+    <-18.912,-5,-22.5975>,
+    <-18.8492,-5,-22.7934>,
+    <-18.8307,-5,-22.9983>,
+    <-18.8573,-5,-23.2024>,
+    <-18.9278,-5,-23.3957>,
+  }
+  normal_vectors {
+    16,
+    <-0.652491,-0,-0.757797>,
+    <-0.652491,-0,-0.757797>,
+    <-0.802088,-0,-0.597207>,
+    <-0.913048,-0,-0.407852>,
+    <-0.98003,-0,-0.198851>,
+    <-0.999805,-0,0.0197282>,
+    <-0.971422,-0,0.237357>,
+    <-0.896249,-0,0.443552>,
+    <-0.777904,-0,0.628383>,
+    <-0.777904,-0,0.628383>,
+    <-0.802088,-0,-0.597207>,
+    <-0.913048,-0,-0.407852>,
+    <-0.98003,-0,-0.198851>,
+    <-0.999805,-0,0.0197282>,
+    <-0.971422,-0,0.237357>,
+    <-0.896249,-0,0.443552>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face96
+
+// face number97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body97 = mesh2{
+  vertex_vectors {
+    8,
+    <-19.798,-5,-21.7009>,
+    <-19.798,5,-21.7009>,
+    <-19.586,5,-21.8925>,
+    <-19.372,5,-22.082>,
+    <-19.1563,5,-22.2694>,
+    <-19.1563,-5,-22.2694>,
+    <-19.586,-5,-21.8925>,
+    <-19.372,-5,-22.082>,
+  }
+  normal_vectors {
+    8,
+    <-0.673975,0,-0.738755>,
+    <-0.673975,0,-0.738755>,
+    <-0.666756,0,-0.745276>,
+    <-0.659474,0,-0.751728>,
+    <-0.65213,0,-0.758108>,
+    <-0.65213,0,-0.758108>,
+    <-0.666756,0,-0.745276>,
+    <-0.659474,0,-0.751728>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face97
+
+// face number98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body98 = mesh2{
+  vertex_vectors {
+    16,
+    <-21.1022,-5,-21.7408>,
+    <-21.1022,5,-21.7408>,
+    <-20.9436,5,-21.6098>,
+    <-20.7602,5,-21.5166>,
+    <-20.5609,5,-21.4655>,
+    <-20.3552,5,-21.4592>,
+    <-20.1531,5,-21.498>,
+    <-19.9644,5,-21.5798>,
+    <-19.798,5,-21.7009>,
+    <-19.798,-5,-21.7009>,
+    <-20.9436,-5,-21.6098>,
+    <-20.7602,-5,-21.5166>,
+    <-20.5609,-5,-21.4655>,
+    <-20.3552,-5,-21.4592>,
+    <-20.1531,-5,-21.498>,
+    <-19.9644,-5,-21.5798>,
+  }
+  normal_vectors {
+    16,
+    <0.717567,-0,-0.696489>,
+    <0.717567,-0,-0.696489>,
+    <0.548348,-0,-0.83625>,
+    <0.352718,-0,-0.93573>,
+    <0.140098,-0,-0.990138>,
+    <-0.0792706,-0,-0.996853>,
+    <-0.294822,-0,-0.955552>,
+    <-0.496171,-0,-0.868225>,
+    <-0.673621,-0,-0.739077>,
+    <-0.673621,-0,-0.739077>,
+    <0.548348,-0,-0.83625>,
+    <0.352718,-0,-0.93573>,
+    <0.140098,-0,-0.990138>,
+    <-0.0792706,-0,-0.996853>,
+    <-0.294822,-0,-0.955552>,
+    <-0.496171,-0,-0.868225>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face98
+
+// face number99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body99 = mesh2{
+  vertex_vectors {
+    4,
+    <-21.3064,-5,-21.9484>,
+    <-21.3064,5,-21.9484>,
+    <-21.1022,5,-21.7408>,
+    <-21.1022,-5,-21.7408>,
+  }
+  normal_vectors {
+    4,
+    <0.71305,-0,-0.701113>,
+    <0.71305,-0,-0.701113>,
+    <0.71305,-0,-0.701113>,
+    <0.71305,-0,-0.701113>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face99
+
+// face number100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body100 = mesh2{
+  vertex_vectors {
+    5,
+    <-22.279,-5,-22.6206>,
+    <-22.279,5,-22.6206>,
+    <-21.3064,5,-21.9484>,
+    <-21.3064,-5,-21.9484>,
+    <-21.6114,0,-22.1938>,
+  }
+  normal_vectors {
+    5,
+    <0.495041,-0,-0.86887>,
+    <0.495041,-0,-0.86887>,
+    <0.677102,-0,-0.735889>,
+    <0.677102,-0,-0.735889>,
+    <0.589162,-0,-0.808015>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face100
+
+// face number101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body101 = mesh2{
+  vertex_vectors {
+    13,
+    <-22.7391,-5,-22.8646>,
+    <-22.279,-5,-22.6206>,
+    <-24.0767,-4.56445,-23.4279>,
+    <-25.5918,-4.109,-23.8797>,
+    <-25.5918,4.109,-23.8797>,
+    <-22.7391,5,-22.8646>,
+    <-24.0767,4.56445,-23.4279>,
+    <-22.279,5,-22.6206>,
+    <-23.0555,-0.217773,-23.0154>,
+    <-24.1711,1.94562,-23.4611>,
+    <-24.1711,-2.16339,-23.4611>,
+    <-23.0922,3.47281,-23.0321>,
+    <-23.0922,-3.58169,-23.0321>,
+  }
+  normal_vectors {
+    13,
+    <0.44501,-0,-0.895526>,
+    <0.492883,-0,-0.870096>,
+    <0.335263,-0,-0.942125>,
+    <0.239278,-0,-0.970951>,
+    <0.239278,-0,-0.970951>,
+    <0.44501,-0,-0.895526>,
+    <0.335263,-0,-0.942125>,
+    <0.492883,-0,-0.870096>,
+    <0.415883,-0,-0.909418>,
+    <0.328589,-0,-0.944473>,
+    <0.328589,-0,-0.944473>,
+    <0.41266,-0,-0.910885>,
+    <0.41266,-0,-0.910885>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face101
+
+// face number102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body102 = mesh2{
+  vertex_vectors {
+    8,
+    <-26.7904,-4.109,-22.5268>,
+    <-26.1592,-4.56443,-21.0773>,
+    <-25.4388,-5,-19.8173>,
+    <-24.582,-5,-20.8707>,
+    <-23.6815,-5,-21.887>,
+    <-22.7391,-5,-22.8646>,
+    <-24.0767,-4.56445,-23.4279>,
+    <-25.5918,-4.109,-23.8797>,
+  }
+  normal_vectors {
+    8,
+    <-0.235465,-0.951502,-0.197992>,
+    <-0.239558,-0.951502,-0.19302>,
+    <-0.242693,-0.951502,-0.189063>,
+    <-0.234519,-0.951502,-0.199112>,
+    <-0.225928,-0.951502,-0.208808>,
+    <-0.216938,-0.951502,-0.218134>,
+    <-0.220487,-0.951502,-0.214546>,
+    <-0.224931,-0.951502,-0.209883>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face102
+
+// face number103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body103 = mesh2{
+  vertex_vectors {
+    13,
+    <-25.1411,-5,-19.3899>,
+    <-25.4388,-5,-19.8173>,
+    <-25.1411,5,-19.3899>,
+    <-25.4388,5,-19.8173>,
+    <-26.1592,4.56445,-21.0772>,
+    <-26.7904,4.109,-22.5268>,
+    <-26.7904,-4.109,-22.5268>,
+    <-26.1592,-4.56443,-21.0773>,
+    <-25.6266,-0.217773,-20.1132>,
+    <-26.2035,1.94562,-21.1669>,
+    <-26.2035,-2.16339,-21.1669>,
+    <-25.6477,3.47281,-20.1477>,
+    <-25.6477,-3.58169,-20.1477>,
+  }
+  normal_vectors {
+    13,
+    <-0.804341,-0,0.594168>,
+    <-0.835356,-0,0.549709>,
+    <-0.804341,-0,0.594168>,
+    <-0.835356,-0,0.549709>,
+    <-0.894844,-0,0.446379>,
+    <-0.93503,-0,0.354569>,
+    <-0.93503,-0,0.354569>,
+    <-0.894847,-0,0.446373>,
+    <-0.852658,-0,0.522469>,
+    <-0.89798,-0,0.440037>,
+    <-0.89798,-0,0.440037>,
+    <-0.854503,-0,0.519446>,
+    <-0.854503,-0,0.519446>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face103
+
+// face number104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body104 = mesh2{
+  vertex_vectors {
+    5,
+    <-24.3566,-5,-18.5054>,
+    <-24.3566,5,-18.5054>,
+    <-25.1411,5,-19.3899>,
+    <-25.1411,-5,-19.3899>,
+    <-24.6369,0,-18.7787>,
+  }
+  normal_vectors {
+    5,
+    <-0.648908,-0,0.760867>,
+    <-0.648908,-0,0.760867>,
+    <-0.802864,-0,0.596162>,
+    <-0.802864,-0,0.596162>,
+    <-0.731108,-0,0.682262>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face104
+
+// face number105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body105 = mesh2{
+  vertex_vectors {
+    4,
+    <-24.1259,-5,-18.3278>,
+    <-24.1259,5,-18.3278>,
+    <-24.3566,5,-18.5054>,
+    <-24.3566,-5,-18.5054>,
+  }
+  normal_vectors {
+    4,
+    <-0.610052,-0,0.792361>,
+    <-0.610052,-0,0.792361>,
+    <-0.610052,-0,0.792361>,
+    <-0.610052,-0,0.792361>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face105
+
+// face number106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body106 = mesh2{
+  vertex_vectors {
+    16,
+    <-23.9291,-5,-17.0379>,
+    <-23.9291,5,-17.0379>,
+    <-23.8289,5,-17.2176>,
+    <-23.7704,5,-17.4149>,
+    <-23.7563,5,-17.6202>,
+    <-23.7874,5,-17.8236>,
+    <-23.862,5,-18.0153>,
+    <-23.9767,5,-18.1861>,
+    <-24.1259,5,-18.3278>,
+    <-24.1259,-5,-18.3278>,
+    <-23.8289,-5,-17.2176>,
+    <-23.7704,-5,-17.4149>,
+    <-23.7563,-5,-17.6202>,
+    <-23.7874,-5,-17.8236>,
+    <-23.862,-5,-18.0153>,
+    <-23.9767,-5,-18.1861>,
+  }
+  normal_vectors {
+    16,
+    <-0.814884,-0,-0.579624>,
+    <-0.814884,-0,-0.579624>,
+    <-0.921701,-0,-0.387901>,
+    <-0.984122,-0,-0.177492>,
+    <-0.99914,-0,0.041463>,
+    <-0.966031,-0,0.258424>,
+    <-0.886392,-0,0.462935>,
+    <-0.764056,-0,0.645149>,
+    <-0.604918,-0,0.796288>,
+    <-0.604918,-0,0.796288>,
+    <-0.921701,-0,-0.387901>,
+    <-0.984122,-0,-0.177492>,
+    <-0.99914,-0,0.041463>,
+    <-0.966031,-0,0.258424>,
+    <-0.886392,-0,0.462935>,
+    <-0.764056,-0,0.645149>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face106
+
+// face number107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body107 = mesh2{
+  vertex_vectors {
+    8,
+    <-24.4161,-5,-16.3324>,
+    <-24.4161,5,-16.3324>,
+    <-24.256,5,-16.5691>,
+    <-24.0937,5,-16.8043>,
+    <-23.9291,5,-17.0379>,
+    <-23.9291,-5,-17.0379>,
+    <-24.256,-5,-16.5691>,
+    <-24.0937,-5,-16.8043>,
+  }
+  normal_vectors {
+    8,
+    <-0.831186,0,-0.555995>,
+    <-0.831186,0,-0.555995>,
+    <-0.825737,0,-0.564055>,
+    <-0.820211,0,-0.572061>,
+    <-0.814607,0,-0.580014>,
+    <-0.814607,0,-0.580014>,
+    <-0.825737,0,-0.564055>,
+    <-0.820211,0,-0.572061>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face107
+
+// face number108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body108 = mesh2{
+  vertex_vectors {
+    16,
+    <-25.692,-5,-16.059>,
+    <-25.692,5,-16.059>,
+    <-25.5066,5,-15.9697>,
+    <-25.3062,5,-15.9231>,
+    <-25.1004,5,-15.9213>,
+    <-24.8993,5,-15.9644>,
+    <-24.7123,5,-16.0503>,
+    <-24.5486,5,-16.175>,
+    <-24.4161,5,-16.3324>,
+    <-24.4161,-5,-16.3324>,
+    <-25.5066,-5,-15.9697>,
+    <-25.3062,-5,-15.9231>,
+    <-25.1004,-5,-15.9213>,
+    <-24.8993,-5,-15.9644>,
+    <-24.7123,-5,-16.0503>,
+    <-24.5486,-5,-16.175>,
+  }
+  normal_vectors {
+    16,
+    <0.530034,-0,-0.847976>,
+    <0.530034,-0,-0.847976>,
+    <0.332287,-0,-0.943178>,
+    <0.118533,-0,-0.99295>,
+    <-0.100929,-0,-0.994894>,
+    <-0.31553,-0,-0.948915>,
+    <-0.514934,-0,-0.85723>,
+    <-0.689533,-0,-0.724254>,
+    <-0.83092,-0,-0.556392>,
+    <-0.83092,-0,-0.556392>,
+    <0.332287,-0,-0.943178>,
+    <0.118533,-0,-0.99295>,
+    <-0.100929,-0,-0.994894>,
+    <-0.31553,-0,-0.948915>,
+    <-0.514934,-0,-0.85723>,
+    <-0.689533,-0,-0.724254>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face108
+
+// face number109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body109 = mesh2{
+  vertex_vectors {
+    4,
+    <-25.9398,-5,-16.2117>,
+    <-25.9398,5,-16.2117>,
+    <-25.692,5,-16.059>,
+    <-25.692,-5,-16.059>,
+  }
+  normal_vectors {
+    4,
+    <0.524543,-0,-0.851384>,
+    <0.524543,-0,-0.851384>,
+    <0.524543,-0,-0.851384>,
+    <0.524543,-0,-0.851384>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face109
+
+// face number110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body110 = mesh2{
+  vertex_vectors {
+    5,
+    <-27.045,-5,-16.6316>,
+    <-27.045,5,-16.6316>,
+    <-25.9398,5,-16.2117>,
+    <-25.9398,-5,-16.2117>,
+    <-26.2947,0,-16.3769>,
+  }
+  normal_vectors {
+    5,
+    <0.272722,-0,-0.962093>,
+    <0.272722,-0,-0.962093>,
+    <0.481317,-0,-0.876547>,
+    <0.481317,-0,-0.876547>,
+    <0.378672,-0,-0.925531>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face110
+
+// face number111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body111 = mesh2{
+  vertex_vectors {
+    13,
+    <-27.5502,-5,-16.7584>,
+    <-27.045,-5,-16.6316>,
+    <-28.9837,-4.56445,-16.9852>,
+    <-30.5629,-4.109,-17.0613>,
+    <-30.5629,4.109,-17.0613>,
+    <-27.5502,5,-16.7584>,
+    <-28.9837,4.56445,-16.9852>,
+    <-27.045,5,-16.6316>,
+    <-27.8935,-0.217773,-16.8291>,
+    <-29.0833,1.94562,-16.9948>,
+    <-29.0833,-2.16339,-16.9948>,
+    <-27.9332,3.47281,-16.8365>,
+    <-27.9332,-3.58169,-16.8365>,
+  }
+  normal_vectors {
+    13,
+    <0.217765,-0,-0.976001>,
+    <0.270333,-0,-0.962767>,
+    <0.100055,-0,-0.994982>,
+    <-3.87409e-05,0,-1>,
+    <-3.87409e-05,0,-1>,
+    <0.217765,-0,-0.976001>,
+    <0.100055,-0,-0.994982>,
+    <0.270333,-0,-0.962767>,
+    <0.18616,-0,-0.982519>,
+    <0.0930141,-0,-0.995665>,
+    <0.0930141,-0,-0.995665>,
+    <0.18268,-0,-0.983172>,
+    <0.18268,-0,-0.983172>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face111
+
+// face number112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body112 = mesh2{
+  vertex_vectors {
+    8,
+    <-31.4029,-4.109,-15.4609>,
+    <-30.4432,-4.56443,-14.2045>,
+    <-29.4422,-5,-13.1536>,
+    <-28.8623,-5,-14.3814>,
+    <-28.2313,-5,-15.5837>,
+    <-27.5502,-5,-16.7584>,
+    <-28.9837,-4.56445,-16.9852>,
+    <-30.5629,-4.109,-17.0613>,
+  }
+  normal_vectors {
+    8,
+    <-0.276005,-0.951502,-0.135888>,
+    <-0.278789,-0.951502,-0.130081>,
+    <-0.280886,-0.951502,-0.125489>,
+    <-0.275355,-0.951502,-0.137202>,
+    <-0.269334,-0.951502,-0.148673>,
+    <-0.262837,-0.951502,-0.159879>,
+    <-0.265425,-0.951502,-0.155545>,
+    <-0.268623,-0.951502,-0.149955>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face112
+
+// face number113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body113 = mesh2{
+  vertex_vectors {
+    13,
+    <-29.0508,-5,-12.8098>,
+    <-29.4422,-5,-13.1536>,
+    <-29.0508,5,-12.8098>,
+    <-29.4422,5,-13.1536>,
+    <-30.4431,4.56445,-14.2045>,
+    <-31.4029,4.109,-15.4609>,
+    <-31.4029,-4.109,-15.4609>,
+    <-30.4432,-4.56443,-14.2045>,
+    <-29.6954,-0.217773,-13.3959>,
+    <-30.5077,1.94562,-14.281>,
+    <-30.5077,-2.16339,-14.281>,
+    <-29.724,3.47281,-13.4243>,
+    <-29.724,-3.58169,-13.4243>,
+  }
+  normal_vectors {
+    13,
+    <-0.638775,-0,0.769394>,
+    <-0.679529,-0,0.733649>,
+    <-0.638775,-0,0.769394>,
+    <-0.679529,-0,0.733649>,
+    <-0.762016,-0,0.647558>,
+    <-0.823006,-0,0.568033>,
+    <-0.823006,-0,0.568033>,
+    <-0.76202,-0,0.647553>,
+    <-0.702847,-0,0.711342>,
+    <-0.766578,-0,0.642151>,
+    <-0.766578,-0,0.642151>,
+    <-0.705361,-0,0.708848>,
+    <-0.705361,-0,0.708848>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face113
+
+// face number114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body114 = mesh2{
+  vertex_vectors {
+    5,
+    <-28.0775,-5,-12.1388>,
+    <-28.0775,5,-12.1388>,
+    <-29.0508,5,-12.8098>,
+    <-29.0508,-5,-12.8098>,
+    <-28.4151,0,-12.337>,
+  }
+  normal_vectors {
+    5,
+    <-0.447964,-0,0.894051>,
+    <-0.447964,-0,0.894051>,
+    <-0.636864,-0,0.770977>,
+    <-0.636864,-0,0.770977>,
+    <-0.546587,-0,0.837402>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face114
+
+// face number115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body115 = mesh2{
+  vertex_vectors {
+    4,
+    <-27.811,-5,-12.0215>,
+    <-27.811,5,-12.0215>,
+    <-28.0775,5,-12.1388>,
+    <-28.0775,-5,-12.1388>,
+  }
+  normal_vectors {
+    4,
+    <-0.402701,-0,0.915332>,
+    <-0.402701,-0,0.915332>,
+    <-0.402701,-0,0.915332>,
+    <-0.402701,-0,0.915332>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face115
+
+// face number116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body116 = mesh2{
+  vertex_vectors {
+    16,
+    <-27.3112,-5,-10.8162>,
+    <-27.3112,5,-10.8162>,
+    <-27.257,5,-11.0147>,
+    <-27.2473,5,-11.2202>,
+    <-27.2828,5,-11.4229>,
+    <-27.3616,5,-11.613>,
+    <-27.48,5,-11.7812>,
+    <-27.6322,5,-11.9197>,
+    <-27.811,5,-12.0215>,
+    <-27.811,-5,-12.0215>,
+    <-27.257,-5,-11.0147>,
+    <-27.2473,-5,-11.2202>,
+    <-27.2828,-5,-11.4229>,
+    <-27.3616,-5,-11.613>,
+    <-27.48,-5,-11.7812>,
+    <-27.6322,-5,-11.9197>,
+  }
+  normal_vectors {
+    16,
+    <-0.929918,-0,-0.367766>,
+    <-0.929918,-0,-0.367766>,
+    <-0.987749,-0,-0.156052>,
+    <-0.998002,-0,0.0631805>,
+    <-0.960184,-0,0.279369>,
+    <-0.876115,-0,0.482101>,
+    <-0.749848,-0,0.661611>,
+    <-0.58746,-0,0.809253>,
+    <-0.396776,-0,0.917916>,
+    <-0.396776,-0,0.917916>,
+    <-0.987749,-0,-0.156052>,
+    <-0.998002,-0,0.0631805>,
+    <-0.960184,-0,0.279369>,
+    <-0.876115,-0,0.482101>,
+    <-0.749848,-0,0.661611>,
+    <-0.58746,-0,0.809253>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face116
+
+// face number117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body117 = mesh2{
+  vertex_vectors {
+    8,
+    <-27.6152,-5,-10.0146>,
+    <-27.6152,5,-10.0146>,
+    <-27.5164,5,-10.2828>,
+    <-27.4151,5,-10.55>,
+    <-27.3112,5,-10.8162>,
+    <-27.3112,-5,-10.8162>,
+    <-27.5164,-5,-10.2828>,
+    <-27.4151,-5,-10.55>,
+  }
+  normal_vectors {
+    8,
+    <-0.940091,0,-0.340923>,
+    <-0.940091,0,-0.340923>,
+    <-0.93673,0,-0.350053>,
+    <-0.93328,0,-0.359149>,
+    <-0.929742,0,-0.368211>,
+    <-0.929742,0,-0.368211>,
+    <-0.93673,0,-0.350053>,
+    <-0.93328,0,-0.359149>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <3,4,7>,
+    <6,2,7>,
+    <7,4,5>,
+  }
+} // end of Face117
+
+// face number118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body118 = mesh2{
+  vertex_vectors {
+    16,
+    <-28.7886,-5,-9.44386>,
+    <-28.7886,5,-9.44386>,
+    <-28.5872,5,-9.40156>,
+    <-28.3815,5,-9.40422>,
+    <-28.1813,5,-9.45168>,
+    <-27.9963,5,-9.54169>,
+    <-27.8353,5,-9.66988>,
+    <-27.7062,5,-9.8301>,
+    <-27.6152,5,-10.0146>,
+    <-27.6152,-5,-10.0146>,
+    <-28.5872,-5,-9.40156>,
+    <-28.3815,-5,-9.40422>,
+    <-28.1813,-5,-9.45168>,
+    <-27.9963,-5,-9.54169>,
+    <-27.8353,-5,-9.66988>,
+    <-27.7062,-5,-9.8301>,
+  }
+  normal_vectors {
+    16,
+    <0.311699,-0,-0.950181>,
+    <0.311699,-0,-0.950181>,
+    <0.0969145,-0,-0.995293>,
+    <-0.122539,-0,-0.992464>,
+    <-0.336089,-0,-0.94183>,
+    <-0.533452,-0,-0.84583>,
+    <-0.705119,-0,-0.709089>,
+    <-0.842822,-0,-0.538193>,
+    <-0.939928,-0,-0.341372>,
+    <-0.939928,-0,-0.341372>,
+    <0.0969145,-0,-0.995293>,
+    <-0.122539,-0,-0.992464>,
+    <-0.336089,-0,-0.94183>,
+    <-0.533452,-0,-0.84583>,
+    <-0.705119,-0,-0.709089>,
+    <-0.842822,-0,-0.538193>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face118
+
+// face number119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body119 = mesh2{
+  vertex_vectors {
+    4,
+    <-29.0658,-5,-9.53281>,
+    <-29.0658,5,-9.53281>,
+    <-28.7886,5,-9.44386>,
+    <-28.7886,-5,-9.44386>,
+  }
+  normal_vectors {
+    4,
+    <0.305551,-0,-0.952176>,
+    <0.305551,-0,-0.952176>,
+    <0.305551,-0,-0.952176>,
+    <0.305551,-0,-0.952176>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face119
+
+// face number120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body120 = mesh2{
+  vertex_vectors {
+    5,
+    <-30.2393,-5,-9.67598>,
+    <-30.2393,5,-9.67598>,
+    <-29.0658,5,-9.53281>,
+    <-29.0658,-5,-9.53281>,
+    <-29.4499,0,-9.60832>,
+  }
+  normal_vectors {
+    5,
+    <0.0345529,-0,-0.999403>,
+    <0.0345529,-0,-0.999403>,
+    <0.25756,-0,-0.966262>,
+    <0.25756,-0,-0.966262>,
+    <0.146174,-0,-0.989259>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face120
+
+// face number121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body121 = mesh2{
+  vertex_vectors {
+    13,
+    <-30.7602,-5,-9.67819>,
+    <-30.2393,-5,-9.67598>,
+    <-32.2063,-4.56445,-9.55534>,
+    <-33.7579,-4.109,-9.25134>,
+    <-33.7579,4.109,-9.25134>,
+    <-30.7602,5,-9.67819>,
+    <-32.2063,4.56445,-9.55534>,
+    <-30.2393,5,-9.67598>,
+    <-31.1105,-0.217773,-9.6647>,
+    <-32.3053,1.94562,-9.54088>,
+    <-32.3053,-2.16339,-9.54088>,
+    <-31.1507,3.47281,-9.66243>,
+    <-31.1507,-3.58169,-9.66243>,
+  }
+  normal_vectors {
+    13,
+    <-0.022135,0,-0.999755>,
+    <0.0320724,-0,-0.999486>,
+    <-0.140967,0,-0.990014>,
+    <-0.239353,0,-0.970933>,
+    <-0.239353,0,-0.970933>,
+    <-0.022135,0,-0.999755>,
+    <-0.140967,0,-0.990014>,
+    <0.0320724,-0,-0.999486>,
+    <-0.0543816,0,-0.99852>,
+    <-0.147967,0,-0.988992>,
+    <-0.147967,0,-0.988992>,
+    <-0.0579173,0,-0.998321>,
+    <-0.0579173,0,-0.998321>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face121
+
+// face number122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body122 = mesh2{
+  vertex_vectors {
+    8,
+    <-34.1904,-4.109,-7.4964>,
+    <-32.9579,-4.56443,-6.50624>,
+    <-31.7345,-5,-5.72537>,
+    <-31.4653,-5,-7.05627>,
+    <-31.1404,-5,-8.37465>,
+    <-30.7602,-5,-9.67819>,
+    <-32.2063,-4.56445,-9.55534>,
+    <-33.7579,-4.109,-9.25134>,
+  }
+  normal_vectors {
+    8,
+    <-0.300505,-0.951502,-0.0658871>,
+    <-0.301819,-0.951502,-0.0595822>,
+    <-0.302756,-0.951502,-0.0546216>,
+    <-0.300188,-0.951502,-0.0673187>,
+    <-0.297088,-0.951502,-0.0798965>,
+    <-0.293461,-0.951502,-0.0923326>,
+    <-0.294936,-0.951502,-0.0875051>,
+    <-0.296704,-0.951502,-0.0813116>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face122
+
+// face number123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body123 = mesh2{
+  vertex_vectors {
+    13,
+    <-31.2723,-5,-5.48527>,
+    <-31.7345,-5,-5.72537>,
+    <-31.2723,5,-5.48527>,
+    <-31.7345,5,-5.72537>,
+    <-32.9579,4.56445,-6.50619>,
+    <-34.1904,4.109,-7.4964>,
+    <-34.1904,-4.109,-7.4964>,
+    <-32.9579,-4.56443,-6.50624>,
+    <-32.0384,-0.217773,-5.90009>,
+    <-33.0388,1.94562,-6.56501>,
+    <-33.0388,-2.16339,-6.56501>,
+    <-32.073,3.47281,-5.9208>,
+    <-32.073,-3.58169,-5.9208>,
+  }
+  normal_vectors {
+    13,
+    <-0.436085,-0,0.899905>,
+    <-0.484209,-0,0.874952>,
+    <-0.436085,-0,0.899905>,
+    <-0.484209,-0,0.874952>,
+    <-0.584902,-0,0.811104>,
+    <-0.663152,-0,0.748485>,
+    <-0.663152,-0,0.748485>,
+    <-0.584908,-0,0.8111>,
+    <-0.512188,-0,0.858873>,
+    <-0.590626,-0,0.806945>,
+    <-0.590626,-0,0.806945>,
+    <-0.515226,-0,0.857054>,
+    <-0.515226,-0,0.857054>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face123
+
+// face number124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body124 = mesh2{
+  vertex_vectors {
+    5,
+    <-30.1666,-5,-5.06666>,
+    <-30.1666,5,-5.06666>,
+    <-31.2723,5,-5.48527>,
+    <-31.2723,-5,-5.48527>,
+    <-30.5418,0,-5.17831>,
+  }
+  normal_vectors {
+    5,
+    <-0.220987,-0,0.975277>,
+    <-0.220987,-0,0.975277>,
+    <-0.433851,-0,0.900985>,
+    <-0.433851,-0,0.900985>,
+    <-0.330301,-0,0.943876>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face124
+
+// face number125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body125 = mesh2{
+  vertex_vectors {
+    4,
+    <-29.8798,-5,-5.0166>,
+    <-29.8798,5,-5.0166>,
+    <-30.1666,5,-5.06666>,
+    <-30.1666,-5,-5.06666>,
+  }
+  normal_vectors {
+    4,
+    <-0.171946,-0,0.985106>,
+    <-0.171946,-0,0.985106>,
+    <-0.171946,-0,0.985106>,
+    <-0.171946,-0,0.985106>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face125
+
+// face number126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body126 = mesh2{
+  vertex_vectors {
+    16,
+    <-29.1061,-5,-3.96591>,
+    <-29.1061,5,-3.96591>,
+    <-29.1009,5,-4.1716>,
+    <-29.1408,5,-4.37346>,
+    <-29.2237,5,-4.56176>,
+    <-29.3457,5,-4.72744>,
+    <-29.5009,5,-4.86251>,
+    <-29.6819,5,-4.96047>,
+    <-29.8798,5,-5.0166>,
+    <-29.8798,-5,-5.0166>,
+    <-29.1009,-5,-4.1716>,
+    <-29.1408,-5,-4.37346>,
+    <-29.2237,-5,-4.56176>,
+    <-29.3457,-5,-4.72744>,
+    <-29.5009,-5,-4.86251>,
+    <-29.6819,-5,-4.96047>,
+  }
+  normal_vectors {
+    16,
+    <-0.990909,-0,-0.134536>,
+    <-0.990909,-0,-0.134536>,
+    <-0.996392,-0,0.0848672>,
+    <-0.953882,-0,0.300182>,
+    <-0.865426,-0,0.501037>,
+    <-0.735283,-0,0.67776>,
+    <-0.569723,-0,0.821837>,
+    <-0.376722,-0,0.926326>,
+    <-0.165575,-0,0.986197>,
+    <-0.165575,-0,0.986197>,
+    <-0.996392,-0,0.0848672>,
+    <-0.953882,-0,0.300182>,
+    <-0.865426,-0,0.501037>,
+    <-0.735283,-0,0.67776>,
+    <-0.569723,-0,0.821837>,
+    <-0.376722,-0,0.926326>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face126
+
+// face number127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body127 = mesh2{
+  vertex_vectors {
+    8,
+    <-29.2094,-5,-3.11486>,
+    <-29.2094,5,-3.11486>,
+    <-29.1777,5,-3.39888>,
+    <-29.1433,5,-3.68257>,
+    <-29.1061,5,-3.96591>,
+    <-29.1061,-5,-3.96591>,
+    <-29.1777,-5,-3.39888>,
+    <-29.1433,-5,-3.68257>,
+  }
+  normal_vectors {
+    8,
+    <-0.994362,0,-0.106038>,
+    <-0.994362,0,-0.106038>,
+    <-0.993283,0,-0.115706>,
+    <-0.992111,0,-0.125364>,
+    <-0.990844,0,-0.13501>,
+    <-0.990844,0,-0.13501>,
+    <-0.993283,0,-0.115706>,
+    <-0.992111,0,-0.125364>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face127
+
+// face number128 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body128 = mesh2{
+  vertex_vectors {
+    16,
+    <-30.2121,-5,-2.27988>,
+    <-30.2121,5,-2.27988>,
+    <-30.0065,5,-2.287>,
+    <-29.8073,5,-2.33881>,
+    <-29.6243,5,-2.43282>,
+    <-29.4662,5,-2.56448>,
+    <-29.3406,5,-2.72746>,
+    <-29.2536,5,-2.91392>,
+    <-29.2094,5,-3.11486>,
+    <-29.2094,-5,-3.11486>,
+    <-30.0065,-5,-2.287>,
+    <-29.8073,-5,-2.33881>,
+    <-29.6243,-5,-2.43282>,
+    <-29.4662,-5,-2.56448>,
+    <-29.3406,-5,-2.72746>,
+    <-29.2536,-5,-2.91392>,
+  }
+  normal_vectors {
+    16,
+    <0.0752489,-0,-0.997165>,
+    <0.0752489,-0,-0.997165>,
+    <-0.144091,-0,-0.989564>,
+    <-0.356491,-0,-0.934299>,
+    <-0.551718,-0,-0.83403>,
+    <-0.720371,-0,-0.693589>,
+    <-0.854325,-0,-0.519739>,
+    <-0.947129,-0,-0.320853>,
+    <-0.994311,-0,-0.106513>,
+    <-0.994311,-0,-0.106513>,
+    <-0.144091,-0,-0.989564>,
+    <-0.356491,-0,-0.934299>,
+    <-0.551718,-0,-0.83403>,
+    <-0.720371,-0,-0.693589>,
+    <-0.854325,-0,-0.519739>,
+    <-0.947129,-0,-0.320853>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face128
+
+// face number129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body129 = mesh2{
+  vertex_vectors {
+    4,
+    <-30.5025,-5,-2.29991>,
+    <-30.5025,5,-2.29991>,
+    <-30.2121,5,-2.27988>,
+    <-30.2121,-5,-2.27988>,
+  }
+  normal_vectors {
+    4,
+    <0.068802,-0,-0.99763>,
+    <0.068802,-0,-0.99763>,
+    <0.068802,-0,-0.99763>,
+    <0.068802,-0,-0.99763>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face129
+
+// face number130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body130 = mesh2{
+  vertex_vectors {
+    5,
+    <-31.6763,-5,-2.15807>,
+    <-31.6763,5,-2.15807>,
+    <-30.5025,5,-2.29991>,
+    <-30.5025,-5,-2.29991>,
+    <-30.8936,0,-2.28129>,
+  }
+  normal_vectors {
+    5,
+    <-0.205624,0,-0.978631>,
+    <-0.205624,0,-0.978631>,
+    <0.0188336,-0,-0.999823>,
+    <0.0188336,-0,-0.999823>,
+    <-0.0948188,0,-0.995495>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face130
+
+// face number131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body131 = mesh2{
+  vertex_vectors {
+    13,
+    <-32.1825,-5,-2.03556>,
+    <-31.6763,-5,-2.15807>,
+    <-33.5572,-4.56445,-1.5702>,
+    <-34.9909,-4.109,-0.903734>,
+    <-34.9909,4.109,-0.903734>,
+    <-32.1825,5,-2.03556>,
+    <-33.5572,4.56445,-1.5702>,
+    <-31.6763,5,-2.15807>,
+    <-32.5194,-0.217773,-1.93864>,
+    <-33.6499,1.94562,-1.53247>,
+    <-33.6499,-2.16339,-1.53247>,
+    <-32.5579,3.47281,-1.92681>,
+    <-32.5579,-3.58169,-1.92681>,
+  }
+  normal_vectors {
+    13,
+    <-0.260749,0,-0.965407>,
+    <-0.208052,0,-0.978118>,
+    <-0.373796,0,-0.927511>,
+    <-0.464757,0,-0.885438>,
+    <-0.464757,0,-0.885438>,
+    <-0.260749,0,-0.965407>,
+    <-0.373796,0,-0.927511>,
+    <-0.208052,0,-0.978118>,
+    <-0.291763,0,-0.956491>,
+    <-0.380349,0,-0.924843>,
+    <-0.380349,0,-0.924843>,
+    <-0.295148,0,-0.955451>,
+    <-0.295148,0,-0.955451>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face131
+
+// face number132 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body132 = mesh2{
+  vertex_vectors {
+    8,
+    <-34.9909,-4.109,0.903734>,
+    <-33.5573,-4.56443,1.57017>,
+    <-32.1825,-5,2.03556>,
+    <-32.2397,-5,0.678921>,
+    <-32.2397,-5,-0.678921>,
+    <-32.1825,-5,-2.03556>,
+    <-33.5572,-4.56445,-1.5702>,
+    <-34.9909,-4.109,-0.903734>,
+  }
+  normal_vectors {
+    8,
+    <-0.307541,-0.951502,0.00794307>,
+    <-0.307307,-0.951502,0.0143791>,
+    <-0.30703,-0.951502,0.0194198>,
+    <-0.307575,-0.951502,0.00647709>,
+    <-0.307575,-0.951502,-0.00647709>,
+    <-0.30703,-0.951502,-0.0194198>,
+    <-0.307307,-0.951502,-0.0143794>,
+    <-0.307541,-0.951502,-0.00794307>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face132
+
+// face number133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body133 = mesh2{
+  vertex_vectors {
+    13,
+    <-31.6763,-5,2.15807>,
+    <-32.1825,-5,2.03556>,
+    <-31.6763,5,2.15807>,
+    <-32.1825,5,2.03556>,
+    <-33.5572,4.56445,1.5702>,
+    <-34.9909,4.109,0.903734>,
+    <-34.9909,-4.109,0.903734>,
+    <-33.5573,-4.56443,1.57017>,
+    <-32.5194,-0.217773,1.93864>,
+    <-33.6499,1.94562,1.53247>,
+    <-33.6499,-2.16339,1.53247>,
+    <-32.5579,3.47281,1.92681>,
+    <-32.5579,-3.58169,1.92681>,
+  }
+  normal_vectors {
+    13,
+    <-0.208052,-0,0.978118>,
+    <-0.260749,-0,0.965407>,
+    <-0.208052,-0,0.978118>,
+    <-0.260749,-0,0.965407>,
+    <-0.373796,-0,0.927511>,
+    <-0.464757,-0,0.885438>,
+    <-0.464757,-0,0.885438>,
+    <-0.373802,-0,0.927508>,
+    <-0.291763,-0,0.956491>,
+    <-0.380349,-0,0.924843>,
+    <-0.380349,-0,0.924843>,
+    <-0.295148,-0,0.955451>,
+    <-0.295148,-0,0.955451>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face133
+
+// face number134 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body134 = mesh2{
+  vertex_vectors {
+    5,
+    <-30.5025,-5,2.29991>,
+    <-30.5025,5,2.29991>,
+    <-31.6763,5,2.15807>,
+    <-31.6763,-5,2.15807>,
+    <-30.8936,0,2.28129>,
+  }
+  normal_vectors {
+    5,
+    <0.0188336,-0,0.999823>,
+    <0.0188336,-0,0.999823>,
+    <-0.205624,-0,0.978631>,
+    <-0.205624,-0,0.978631>,
+    <-0.0948188,-0,0.995495>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face134
+
+// face number135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body135 = mesh2{
+  vertex_vectors {
+    4,
+    <-30.2121,-5,2.27988>,
+    <-30.2121,5,2.27988>,
+    <-30.5025,5,2.29991>,
+    <-30.5025,-5,2.29991>,
+  }
+  normal_vectors {
+    4,
+    <0.068802,0,0.99763>,
+    <0.068802,0,0.99763>,
+    <0.068802,0,0.99763>,
+    <0.068802,0,0.99763>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face135
+
+// face number136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body136 = mesh2{
+  vertex_vectors {
+    16,
+    <-29.2094,-5,3.11486>,
+    <-29.2094,5,3.11486>,
+    <-29.2536,5,2.91392>,
+    <-29.3406,5,2.72746>,
+    <-29.4662,5,2.56448>,
+    <-29.6243,5,2.43282>,
+    <-29.8073,5,2.33881>,
+    <-30.0065,5,2.287>,
+    <-30.2121,5,2.27988>,
+    <-30.2121,-5,2.27988>,
+    <-29.2536,-5,2.91392>,
+    <-29.3406,-5,2.72746>,
+    <-29.4662,-5,2.56448>,
+    <-29.6243,-5,2.43282>,
+    <-29.8073,-5,2.33881>,
+    <-30.0065,-5,2.287>,
+  }
+  normal_vectors {
+    16,
+    <-0.994311,-0,0.106513>,
+    <-0.994311,-0,0.106513>,
+    <-0.947129,-0,0.320853>,
+    <-0.854325,-0,0.519739>,
+    <-0.720371,-0,0.693589>,
+    <-0.551718,-0,0.83403>,
+    <-0.356491,-0,0.934299>,
+    <-0.144091,-0,0.989564>,
+    <0.0752489,0,0.997165>,
+    <0.0752489,0,0.997165>,
+    <-0.947129,-0,0.320853>,
+    <-0.854325,-0,0.519739>,
+    <-0.720371,-0,0.693589>,
+    <-0.551718,-0,0.83403>,
+    <-0.356491,-0,0.934299>,
+    <-0.144091,-0,0.989564>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face136
+
+// face number137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body137 = mesh2{
+  vertex_vectors {
+    8,
+    <-29.1061,-5,3.96591>,
+    <-29.1061,5,3.96591>,
+    <-29.1433,5,3.68257>,
+    <-29.1777,5,3.39888>,
+    <-29.2094,5,3.11486>,
+    <-29.2094,-5,3.11486>,
+    <-29.1433,-5,3.68257>,
+    <-29.1777,-5,3.39888>,
+  }
+  normal_vectors {
+    8,
+    <-0.990844,-0,0.13501>,
+    <-0.990844,-0,0.13501>,
+    <-0.992111,-0,0.125364>,
+    <-0.993283,-0,0.115706>,
+    <-0.994362,-0,0.106038>,
+    <-0.994362,-0,0.106038>,
+    <-0.992111,-0,0.125364>,
+    <-0.993283,-0,0.115706>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face137
+
+// face number138 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body138 = mesh2{
+  vertex_vectors {
+    16,
+    <-29.8798,-5,5.0166>,
+    <-29.8798,5,5.0166>,
+    <-29.6819,5,4.96047>,
+    <-29.5009,5,4.86251>,
+    <-29.3457,5,4.72744>,
+    <-29.2237,5,4.56176>,
+    <-29.1408,5,4.37346>,
+    <-29.1009,5,4.1716>,
+    <-29.1061,5,3.96591>,
+    <-29.1061,-5,3.96591>,
+    <-29.6819,-5,4.96047>,
+    <-29.5009,-5,4.86251>,
+    <-29.3457,-5,4.72744>,
+    <-29.2237,-5,4.56176>,
+    <-29.1408,-5,4.37346>,
+    <-29.1009,-5,4.1716>,
+  }
+  normal_vectors {
+    16,
+    <-0.165575,-0,-0.986197>,
+    <-0.165575,-0,-0.986197>,
+    <-0.376722,-0,-0.926326>,
+    <-0.569723,-0,-0.821837>,
+    <-0.735283,-0,-0.67776>,
+    <-0.865426,-0,-0.501037>,
+    <-0.953882,-0,-0.300182>,
+    <-0.996392,-0,-0.0848672>,
+    <-0.990909,-0,0.134536>,
+    <-0.990909,-0,0.134536>,
+    <-0.376722,-0,-0.926326>,
+    <-0.569723,-0,-0.821837>,
+    <-0.735283,-0,-0.67776>,
+    <-0.865426,-0,-0.501037>,
+    <-0.953882,-0,-0.300182>,
+    <-0.996392,-0,-0.0848672>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face138
+
+// face number139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body139 = mesh2{
+  vertex_vectors {
+    4,
+    <-30.1666,-5,5.06666>,
+    <-30.1666,5,5.06666>,
+    <-29.8798,5,5.0166>,
+    <-29.8798,-5,5.0166>,
+  }
+  normal_vectors {
+    4,
+    <-0.171946,-0,-0.985106>,
+    <-0.171946,-0,-0.985106>,
+    <-0.171946,-0,-0.985106>,
+    <-0.171946,-0,-0.985106>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face139
+
+// face number140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body140 = mesh2{
+  vertex_vectors {
+    5,
+    <-31.2723,-5,5.48527>,
+    <-31.2723,5,5.48527>,
+    <-30.1666,5,5.06666>,
+    <-30.1666,-5,5.06666>,
+    <-30.5418,0,5.17831>,
+  }
+  normal_vectors {
+    5,
+    <-0.433851,0,-0.900985>,
+    <-0.433851,0,-0.900985>,
+    <-0.220987,0,-0.975277>,
+    <-0.220987,0,-0.975277>,
+    <-0.330301,0,-0.943876>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face140
+
+// face number141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body141 = mesh2{
+  vertex_vectors {
+    13,
+    <-31.7345,-5,5.72537>,
+    <-31.2723,-5,5.48527>,
+    <-32.9579,-4.56445,6.50619>,
+    <-34.1904,-4.109,7.4964>,
+    <-34.1904,4.109,7.4964>,
+    <-31.7345,5,5.72537>,
+    <-32.9579,4.56445,6.50619>,
+    <-31.2723,5,5.48527>,
+    <-32.0384,-0.217773,5.90009>,
+    <-33.0388,1.94562,6.56501>,
+    <-33.0388,-2.16339,6.56501>,
+    <-32.073,3.47281,5.9208>,
+    <-32.073,-3.58169,5.9208>,
+  }
+  normal_vectors {
+    13,
+    <-0.484209,0,-0.874952>,
+    <-0.436085,0,-0.899905>,
+    <-0.584902,0,-0.811104>,
+    <-0.663152,0,-0.748485>,
+    <-0.663152,0,-0.748485>,
+    <-0.484209,0,-0.874952>,
+    <-0.584902,0,-0.811104>,
+    <-0.436085,0,-0.899905>,
+    <-0.512188,0,-0.858873>,
+    <-0.590626,0,-0.806945>,
+    <-0.590626,0,-0.806945>,
+    <-0.515226,0,-0.857054>,
+    <-0.515226,0,-0.857054>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face141
+
+// face number142 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body142 = mesh2{
+  vertex_vectors {
+    8,
+    <-33.7579,-4.109,9.25134>,
+    <-32.2064,-4.56443,9.55533>,
+    <-30.7602,-5,9.67819>,
+    <-31.1404,-5,8.37465>,
+    <-31.4653,-5,7.05627>,
+    <-31.7345,-5,5.72537>,
+    <-32.9579,-4.56445,6.50619>,
+    <-34.1904,-4.109,7.4964>,
+  }
+  normal_vectors {
+    8,
+    <-0.296704,-0.951502,0.0813116>,
+    <-0.294936,-0.951502,0.0875047>,
+    <-0.293461,-0.951502,0.0923326>,
+    <-0.297088,-0.951502,0.0798965>,
+    <-0.300188,-0.951502,0.0673187>,
+    <-0.302756,-0.951502,0.0546216>,
+    <-0.301819,-0.951502,0.0595818>,
+    <-0.300505,-0.951502,0.0658871>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face142
+
+// face number143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body143 = mesh2{
+  vertex_vectors {
+    13,
+    <-30.2393,-5,9.67598>,
+    <-30.7602,-5,9.67819>,
+    <-30.2393,5,9.67598>,
+    <-30.7602,5,9.67819>,
+    <-32.2063,4.56445,9.55534>,
+    <-33.7579,4.109,9.25134>,
+    <-33.7579,-4.109,9.25134>,
+    <-32.2064,-4.56443,9.55533>,
+    <-31.1105,-0.217773,9.6647>,
+    <-32.3053,1.94562,9.54088>,
+    <-32.3053,-2.16339,9.54088>,
+    <-31.1507,3.47281,9.66243>,
+    <-31.1507,-3.58169,9.66243>,
+  }
+  normal_vectors {
+    13,
+    <0.0320724,-0,0.999486>,
+    <-0.022135,-0,0.999755>,
+    <0.0320724,-0,0.999486>,
+    <-0.022135,-0,0.999755>,
+    <-0.140967,-0,0.990014>,
+    <-0.239353,-0,0.970933>,
+    <-0.239353,-0,0.970933>,
+    <-0.140973,-0,0.990013>,
+    <-0.0543816,-0,0.99852>,
+    <-0.147967,-0,0.988992>,
+    <-0.147967,-0,0.988992>,
+    <-0.0579173,-0,0.998321>,
+    <-0.0579173,-0,0.998321>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face143
+
+// face number144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body144 = mesh2{
+  vertex_vectors {
+    5,
+    <-29.0658,-5,9.53281>,
+    <-29.0658,5,9.53281>,
+    <-30.2393,5,9.67598>,
+    <-30.2393,-5,9.67598>,
+    <-29.4499,0,9.60832>,
+  }
+  normal_vectors {
+    5,
+    <0.25756,-0,0.966262>,
+    <0.25756,-0,0.966262>,
+    <0.0345529,-0,0.999403>,
+    <0.0345529,-0,0.999403>,
+    <0.146174,-0,0.989259>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face144
+
+// face number145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body145 = mesh2{
+  vertex_vectors {
+    4,
+    <-28.7886,-5,9.44386>,
+    <-28.7886,5,9.44386>,
+    <-29.0658,5,9.53281>,
+    <-29.0658,-5,9.53281>,
+  }
+  normal_vectors {
+    4,
+    <0.305551,0,0.952176>,
+    <0.305551,0,0.952176>,
+    <0.305551,0,0.952176>,
+    <0.305551,0,0.952176>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face145
+
+// face number146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body146 = mesh2{
+  vertex_vectors {
+    16,
+    <-27.6152,-5,10.0146>,
+    <-27.6152,5,10.0146>,
+    <-27.7062,5,9.8301>,
+    <-27.8353,5,9.66988>,
+    <-27.9963,5,9.54169>,
+    <-28.1813,5,9.45168>,
+    <-28.3815,5,9.40422>,
+    <-28.5872,5,9.40156>,
+    <-28.7886,5,9.44386>,
+    <-28.7886,-5,9.44386>,
+    <-27.7062,-5,9.8301>,
+    <-27.8353,-5,9.66988>,
+    <-27.9963,-5,9.54169>,
+    <-28.1813,-5,9.45168>,
+    <-28.3815,-5,9.40422>,
+    <-28.5872,-5,9.40156>,
+  }
+  normal_vectors {
+    16,
+    <-0.939928,-0,0.341372>,
+    <-0.939928,-0,0.341372>,
+    <-0.842822,-0,0.538193>,
+    <-0.705119,-0,0.709089>,
+    <-0.533452,-0,0.84583>,
+    <-0.336089,-0,0.94183>,
+    <-0.122539,-0,0.992464>,
+    <0.0969145,0,0.995293>,
+    <0.311699,0,0.950181>,
+    <0.311699,0,0.950181>,
+    <-0.842822,-0,0.538193>,
+    <-0.705119,-0,0.709089>,
+    <-0.533452,-0,0.84583>,
+    <-0.336089,-0,0.94183>,
+    <-0.122539,-0,0.992464>,
+    <0.0969145,0,0.995293>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face146
+
+// face number147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body147 = mesh2{
+  vertex_vectors {
+    8,
+    <-27.3112,-5,10.8162>,
+    <-27.3112,5,10.8162>,
+    <-27.4151,5,10.55>,
+    <-27.5164,5,10.2828>,
+    <-27.6152,5,10.0146>,
+    <-27.6152,-5,10.0146>,
+    <-27.4151,-5,10.55>,
+    <-27.5164,-5,10.2828>,
+  }
+  normal_vectors {
+    8,
+    <-0.929742,-0,0.368211>,
+    <-0.929742,-0,0.368211>,
+    <-0.93328,-0,0.359149>,
+    <-0.93673,-0,0.350053>,
+    <-0.940091,-0,0.340923>,
+    <-0.940091,-0,0.340923>,
+    <-0.93328,-0,0.359149>,
+    <-0.93673,-0,0.350053>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face147
+
+// face number148 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body148 = mesh2{
+  vertex_vectors {
+    16,
+    <-27.811,-5,12.0215>,
+    <-27.811,5,12.0215>,
+    <-27.6322,5,11.9197>,
+    <-27.48,5,11.7812>,
+    <-27.3616,5,11.613>,
+    <-27.2828,5,11.4229>,
+    <-27.2473,5,11.2202>,
+    <-27.257,5,11.0147>,
+    <-27.3112,5,10.8162>,
+    <-27.3112,-5,10.8162>,
+    <-27.6322,-5,11.9197>,
+    <-27.48,-5,11.7812>,
+    <-27.3616,-5,11.613>,
+    <-27.2828,-5,11.4229>,
+    <-27.2473,-5,11.2202>,
+    <-27.257,-5,11.0147>,
+  }
+  normal_vectors {
+    16,
+    <-0.396776,-0,-0.917916>,
+    <-0.396776,-0,-0.917916>,
+    <-0.58746,-0,-0.809253>,
+    <-0.749848,-0,-0.661611>,
+    <-0.876115,-0,-0.482101>,
+    <-0.960184,-0,-0.279369>,
+    <-0.998002,-0,-0.0631805>,
+    <-0.987749,-0,0.156052>,
+    <-0.929918,-0,0.367766>,
+    <-0.929918,-0,0.367766>,
+    <-0.58746,-0,-0.809253>,
+    <-0.749848,-0,-0.661611>,
+    <-0.876115,-0,-0.482101>,
+    <-0.960184,-0,-0.279369>,
+    <-0.998002,-0,-0.0631805>,
+    <-0.987749,-0,0.156052>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face148
+
+// face number149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body149 = mesh2{
+  vertex_vectors {
+    4,
+    <-28.0775,-5,12.1388>,
+    <-28.0775,5,12.1388>,
+    <-27.811,5,12.0215>,
+    <-27.811,-5,12.0215>,
+  }
+  normal_vectors {
+    4,
+    <-0.402701,-0,-0.915332>,
+    <-0.402701,-0,-0.915332>,
+    <-0.402701,-0,-0.915332>,
+    <-0.402701,-0,-0.915332>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face149
+
+// face number150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body150 = mesh2{
+  vertex_vectors {
+    5,
+    <-29.0508,-5,12.8098>,
+    <-29.0508,5,12.8098>,
+    <-28.0775,5,12.1388>,
+    <-28.0775,-5,12.1388>,
+    <-28.4151,0,12.337>,
+  }
+  normal_vectors {
+    5,
+    <-0.636864,0,-0.770977>,
+    <-0.636864,0,-0.770977>,
+    <-0.447964,0,-0.894051>,
+    <-0.447964,0,-0.894051>,
+    <-0.546587,0,-0.837402>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face150
+
+// face number151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body151 = mesh2{
+  vertex_vectors {
+    13,
+    <-29.4422,-5,13.1536>,
+    <-29.0508,-5,12.8098>,
+    <-30.4431,-4.56445,14.2045>,
+    <-31.4029,-4.109,15.4609>,
+    <-31.4029,4.109,15.4609>,
+    <-29.4422,5,13.1536>,
+    <-30.4431,4.56445,14.2045>,
+    <-29.0508,5,12.8098>,
+    <-29.6954,-0.217773,13.3959>,
+    <-30.5077,1.94562,14.281>,
+    <-30.5077,-2.16339,14.281>,
+    <-29.724,3.47281,13.4243>,
+    <-29.724,-3.58169,13.4243>,
+  }
+  normal_vectors {
+    13,
+    <-0.679529,0,-0.733649>,
+    <-0.638775,0,-0.769394>,
+    <-0.762016,0,-0.647558>,
+    <-0.823006,0,-0.568033>,
+    <-0.823006,0,-0.568033>,
+    <-0.679529,0,-0.733649>,
+    <-0.762016,0,-0.647558>,
+    <-0.638775,0,-0.769394>,
+    <-0.702847,0,-0.711342>,
+    <-0.766578,0,-0.642151>,
+    <-0.766578,0,-0.642151>,
+    <-0.705361,0,-0.708848>,
+    <-0.705361,0,-0.708848>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face151
+
+// face number152 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body152 = mesh2{
+  vertex_vectors {
+    8,
+    <-30.5629,-4.109,17.0613>,
+    <-28.9838,-4.56443,16.9852>,
+    <-27.5502,-5,16.7584>,
+    <-28.2313,-5,15.5837>,
+    <-28.8623,-5,14.3814>,
+    <-29.4422,-5,13.1536>,
+    <-30.4431,-4.56445,14.2045>,
+    <-31.4029,-4.109,15.4609>,
+  }
+  normal_vectors {
+    8,
+    <-0.268623,-0.951502,0.149955>,
+    <-0.265425,-0.951502,0.155545>,
+    <-0.262837,-0.951502,0.159879>,
+    <-0.269334,-0.951502,0.148673>,
+    <-0.275355,-0.951502,0.137202>,
+    <-0.280886,-0.951502,0.125489>,
+    <-0.27879,-0.951502,0.13008>,
+    <-0.276005,-0.951502,0.135888>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face152
+
+// face number153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body153 = mesh2{
+  vertex_vectors {
+    13,
+    <-27.045,-5,16.6316>,
+    <-27.5502,-5,16.7584>,
+    <-27.045,5,16.6316>,
+    <-27.5502,5,16.7584>,
+    <-28.9837,4.56445,16.9852>,
+    <-30.5629,4.109,17.0613>,
+    <-30.5629,-4.109,17.0613>,
+    <-28.9838,-4.56443,16.9852>,
+    <-27.8935,-0.217773,16.8291>,
+    <-29.0833,1.94562,16.9948>,
+    <-29.0833,-2.16339,16.9948>,
+    <-27.9332,3.47281,16.8365>,
+    <-27.9332,-3.58169,16.8365>,
+  }
+  normal_vectors {
+    13,
+    <0.270333,-0,0.962767>,
+    <0.217765,-0,0.976001>,
+    <0.270333,-0,0.962767>,
+    <0.217765,-0,0.976001>,
+    <0.100055,-0,0.994982>,
+    <-3.87409e-05,-0,1>,
+    <-3.87409e-05,-0,1>,
+    <0.100049,-0,0.994982>,
+    <0.18616,-0,0.982519>,
+    <0.0930141,-0,0.995665>,
+    <0.0930141,-0,0.995665>,
+    <0.18268,-0,0.983172>,
+    <0.18268,-0,0.983172>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face153
+
+// face number154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body154 = mesh2{
+  vertex_vectors {
+    5,
+    <-25.9398,-5,16.2117>,
+    <-25.9398,5,16.2117>,
+    <-27.045,5,16.6316>,
+    <-27.045,-5,16.6316>,
+    <-26.2947,0,16.3769>,
+  }
+  normal_vectors {
+    5,
+    <0.481317,-0,0.876547>,
+    <0.481317,-0,0.876547>,
+    <0.272722,-0,0.962093>,
+    <0.272722,-0,0.962093>,
+    <0.378672,-0,0.925531>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face154
+
+// face number155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body155 = mesh2{
+  vertex_vectors {
+    4,
+    <-25.692,-5,16.059>,
+    <-25.692,5,16.059>,
+    <-25.9398,5,16.2117>,
+    <-25.9398,-5,16.2117>,
+  }
+  normal_vectors {
+    4,
+    <0.524543,0,0.851384>,
+    <0.524543,0,0.851384>,
+    <0.524543,0,0.851384>,
+    <0.524543,0,0.851384>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face155
+
+// face number156 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body156 = mesh2{
+  vertex_vectors {
+    16,
+    <-24.4161,-5,16.3324>,
+    <-24.4161,5,16.3324>,
+    <-24.5486,5,16.175>,
+    <-24.7123,5,16.0503>,
+    <-24.8993,5,15.9644>,
+    <-25.1004,5,15.9213>,
+    <-25.3062,5,15.9231>,
+    <-25.5066,5,15.9697>,
+    <-25.692,5,16.059>,
+    <-25.692,-5,16.059>,
+    <-24.5486,-5,16.175>,
+    <-24.7123,-5,16.0503>,
+    <-24.8993,-5,15.9644>,
+    <-25.1004,-5,15.9213>,
+    <-25.3062,-5,15.9231>,
+    <-25.5066,-5,15.9697>,
+  }
+  normal_vectors {
+    16,
+    <-0.83092,-0,0.556392>,
+    <-0.83092,-0,0.556392>,
+    <-0.689533,-0,0.724254>,
+    <-0.514934,-0,0.85723>,
+    <-0.31553,-0,0.948915>,
+    <-0.100929,-0,0.994894>,
+    <0.118533,0,0.99295>,
+    <0.332287,0,0.943178>,
+    <0.530034,0,0.847976>,
+    <0.530034,0,0.847976>,
+    <-0.689533,-0,0.724254>,
+    <-0.514934,-0,0.85723>,
+    <-0.31553,-0,0.948915>,
+    <-0.100929,-0,0.994894>,
+    <0.118533,0,0.99295>,
+    <0.332287,0,0.943178>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face156
+
+// face number157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body157 = mesh2{
+  vertex_vectors {
+    8,
+    <-23.9291,-5,17.0379>,
+    <-23.9291,5,17.0379>,
+    <-24.0937,5,16.8043>,
+    <-24.256,5,16.5691>,
+    <-24.4161,5,16.3324>,
+    <-24.4161,-5,16.3324>,
+    <-24.0937,-5,16.8043>,
+    <-24.256,-5,16.5691>,
+  }
+  normal_vectors {
+    8,
+    <-0.814607,-0,0.580014>,
+    <-0.814607,-0,0.580014>,
+    <-0.820211,-0,0.572061>,
+    <-0.825737,-0,0.564055>,
+    <-0.831186,-0,0.555995>,
+    <-0.831186,-0,0.555995>,
+    <-0.820211,-0,0.572061>,
+    <-0.825737,-0,0.564055>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face157
+
+// face number158 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body158 = mesh2{
+  vertex_vectors {
+    16,
+    <-24.1259,-5,18.3278>,
+    <-24.1259,5,18.3278>,
+    <-23.9767,5,18.1861>,
+    <-23.862,5,18.0153>,
+    <-23.7874,5,17.8236>,
+    <-23.7563,5,17.6202>,
+    <-23.7704,5,17.4149>,
+    <-23.8289,5,17.2176>,
+    <-23.9291,5,17.0379>,
+    <-23.9291,-5,17.0379>,
+    <-23.9767,-5,18.1861>,
+    <-23.862,-5,18.0153>,
+    <-23.7874,-5,17.8236>,
+    <-23.7563,-5,17.6202>,
+    <-23.7704,-5,17.4149>,
+    <-23.8289,-5,17.2176>,
+  }
+  normal_vectors {
+    16,
+    <-0.604918,-0,-0.796288>,
+    <-0.604918,-0,-0.796288>,
+    <-0.764056,-0,-0.645149>,
+    <-0.886392,-0,-0.462935>,
+    <-0.966031,-0,-0.258424>,
+    <-0.99914,-0,-0.041463>,
+    <-0.984122,-0,0.177492>,
+    <-0.921701,-0,0.387901>,
+    <-0.814884,-0,0.579624>,
+    <-0.814884,-0,0.579624>,
+    <-0.764056,-0,-0.645149>,
+    <-0.886392,-0,-0.462935>,
+    <-0.966031,-0,-0.258424>,
+    <-0.99914,-0,-0.041463>,
+    <-0.984122,-0,0.177492>,
+    <-0.921701,-0,0.387901>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face158
+
+// face number159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body159 = mesh2{
+  vertex_vectors {
+    4,
+    <-24.3566,-5,18.5054>,
+    <-24.3566,5,18.5054>,
+    <-24.1259,5,18.3278>,
+    <-24.1259,-5,18.3278>,
+  }
+  normal_vectors {
+    4,
+    <-0.610052,-0,-0.792361>,
+    <-0.610052,-0,-0.792361>,
+    <-0.610052,-0,-0.792361>,
+    <-0.610052,-0,-0.792361>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face159
+
+// face number160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body160 = mesh2{
+  vertex_vectors {
+    5,
+    <-25.1411,-5,19.3899>,
+    <-25.1411,5,19.3899>,
+    <-24.3566,5,18.5054>,
+    <-24.3566,-5,18.5054>,
+    <-24.6369,0,18.7787>,
+  }
+  normal_vectors {
+    5,
+    <-0.802864,0,-0.596162>,
+    <-0.802864,0,-0.596162>,
+    <-0.648908,0,-0.760867>,
+    <-0.648908,0,-0.760867>,
+    <-0.731108,0,-0.682262>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face160
+
+// face number161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body161 = mesh2{
+  vertex_vectors {
+    13,
+    <-25.4388,-5,19.8173>,
+    <-25.1411,-5,19.3899>,
+    <-26.1592,-4.56445,21.0772>,
+    <-26.7904,-4.109,22.5268>,
+    <-26.7904,4.109,22.5268>,
+    <-25.4388,5,19.8173>,
+    <-26.1592,4.56445,21.0772>,
+    <-25.1411,5,19.3899>,
+    <-25.6266,-0.217773,20.1132>,
+    <-26.2035,1.94562,21.1669>,
+    <-26.2035,-2.16339,21.1669>,
+    <-25.6477,3.47281,20.1477>,
+    <-25.6477,-3.58169,20.1477>,
+  }
+  normal_vectors {
+    13,
+    <-0.835356,0,-0.549709>,
+    <-0.804341,0,-0.594168>,
+    <-0.894844,0,-0.446379>,
+    <-0.93503,0,-0.354569>,
+    <-0.93503,0,-0.354569>,
+    <-0.835356,0,-0.549709>,
+    <-0.894844,0,-0.446379>,
+    <-0.804341,0,-0.594168>,
+    <-0.852658,0,-0.522469>,
+    <-0.89798,0,-0.440037>,
+    <-0.89798,0,-0.440037>,
+    <-0.854503,0,-0.519446>,
+    <-0.854503,0,-0.519446>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face161
+
+// face number162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body162 = mesh2{
+  vertex_vectors {
+    8,
+    <-25.5918,-4.109,23.8797>,
+    <-24.0768,-4.56443,23.4279>,
+    <-22.7391,-5,22.8646>,
+    <-23.6815,-5,21.887>,
+    <-24.582,-5,20.8707>,
+    <-25.4388,-5,19.8173>,
+    <-26.1592,-4.56445,21.0772>,
+    <-26.7904,-4.109,22.5268>,
+  }
+  normal_vectors {
+    8,
+    <-0.224931,-0.951502,0.209883>,
+    <-0.220488,-0.951502,0.214545>,
+    <-0.216938,-0.951502,0.218134>,
+    <-0.225928,-0.951502,0.208808>,
+    <-0.234519,-0.951502,0.199112>,
+    <-0.242693,-0.951502,0.189063>,
+    <-0.239558,-0.951502,0.193019>,
+    <-0.235465,-0.951502,0.197992>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face162
+
+// face number163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body163 = mesh2{
+  vertex_vectors {
+    13,
+    <-22.279,-5,22.6206>,
+    <-22.7391,-5,22.8646>,
+    <-22.279,5,22.6206>,
+    <-22.7391,5,22.8646>,
+    <-24.0767,4.56445,23.4279>,
+    <-25.5918,4.109,23.8797>,
+    <-25.5918,-4.109,23.8797>,
+    <-24.0768,-4.56443,23.4279>,
+    <-23.0555,-0.217773,23.0154>,
+    <-24.1711,1.94562,23.4611>,
+    <-24.1711,-2.16339,23.4611>,
+    <-23.0922,3.47281,23.0321>,
+    <-23.0922,-3.58169,23.0321>,
+  }
+  normal_vectors {
+    13,
+    <0.492883,-0,0.870096>,
+    <0.44501,-0,0.895526>,
+    <0.492883,-0,0.870096>,
+    <0.44501,-0,0.895526>,
+    <0.335263,-0,0.942125>,
+    <0.239278,-0,0.970951>,
+    <0.239278,-0,0.970951>,
+    <0.335257,-0,0.942127>,
+    <0.415883,-0,0.909418>,
+    <0.328589,-0,0.944473>,
+    <0.328589,-0,0.944473>,
+    <0.41266,-0,0.910885>,
+    <0.41266,-0,0.910885>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face163
+
+// face number164 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body164 = mesh2{
+  vertex_vectors {
+    5,
+    <-21.3064,-5,21.9484>,
+    <-21.3064,5,21.9484>,
+    <-22.279,5,22.6206>,
+    <-22.279,-5,22.6206>,
+    <-21.6114,0,22.1938>,
+  }
+  normal_vectors {
+    5,
+    <0.677102,-0,0.735889>,
+    <0.677102,-0,0.735889>,
+    <0.495041,-0,0.86887>,
+    <0.495041,-0,0.86887>,
+    <0.589162,-0,0.808015>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face164
+
+// face number165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body165 = mesh2{
+  vertex_vectors {
+    4,
+    <-21.1022,-5,21.7408>,
+    <-21.1022,5,21.7408>,
+    <-21.3064,5,21.9484>,
+    <-21.3064,-5,21.9484>,
+  }
+  normal_vectors {
+    4,
+    <0.71305,0,0.701113>,
+    <0.71305,0,0.701113>,
+    <0.71305,0,0.701113>,
+    <0.71305,0,0.701113>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face165
+
+// face number166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body166 = mesh2{
+  vertex_vectors {
+    16,
+    <-19.798,-5,21.7009>,
+    <-19.798,5,21.7009>,
+    <-19.9644,5,21.5798>,
+    <-20.1531,5,21.498>,
+    <-20.3552,5,21.4592>,
+    <-20.5609,5,21.4655>,
+    <-20.7602,5,21.5166>,
+    <-20.9436,5,21.6098>,
+    <-21.1022,5,21.7408>,
+    <-21.1022,-5,21.7408>,
+    <-19.9644,-5,21.5798>,
+    <-20.1531,-5,21.498>,
+    <-20.3552,-5,21.4592>,
+    <-20.5609,-5,21.4655>,
+    <-20.7602,-5,21.5166>,
+    <-20.9436,-5,21.6098>,
+  }
+  normal_vectors {
+    16,
+    <-0.673621,-0,0.739077>,
+    <-0.673621,-0,0.739077>,
+    <-0.496171,-0,0.868225>,
+    <-0.294822,-0,0.955552>,
+    <-0.0792706,-0,0.996853>,
+    <0.140098,0,0.990138>,
+    <0.352718,0,0.93573>,
+    <0.548348,0,0.83625>,
+    <0.717567,0,0.696489>,
+    <0.717567,0,0.696489>,
+    <-0.496171,-0,0.868225>,
+    <-0.294822,-0,0.955552>,
+    <-0.0792706,-0,0.996853>,
+    <0.140098,0,0.990138>,
+    <0.352718,0,0.93573>,
+    <0.548348,0,0.83625>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face166
+
+// face number167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body167 = mesh2{
+  vertex_vectors {
+    8,
+    <-19.1563,-5,22.2694>,
+    <-19.1563,5,22.2694>,
+    <-19.372,5,22.082>,
+    <-19.586,5,21.8925>,
+    <-19.798,5,21.7009>,
+    <-19.798,-5,21.7009>,
+    <-19.372,-5,22.082>,
+    <-19.586,-5,21.8925>,
+  }
+  normal_vectors {
+    8,
+    <-0.65213,-0,0.758108>,
+    <-0.65213,-0,0.758108>,
+    <-0.659474,-0,0.751728>,
+    <-0.666756,-0,0.745276>,
+    <-0.673975,-0,0.738755>,
+    <-0.673975,-0,0.738755>,
+    <-0.659474,-0,0.751728>,
+    <-0.666756,-0,0.745276>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face167
+
+// face number168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body168 = mesh2{
+  vertex_vectors {
+    16,
+    <-19.0387,-5,23.569>,
+    <-19.0387,5,23.569>,
+    <-18.9278,5,23.3957>,
+    <-18.8573,5,23.2024>,
+    <-18.8307,5,22.9983>,
+    <-18.8492,5,22.7934>,
+    <-18.912,5,22.5975>,
+    <-19.0161,5,22.42>,
+    <-19.1563,5,22.2694>,
+    <-19.1563,-5,22.2694>,
+    <-18.9278,-5,23.3957>,
+    <-18.8573,-5,23.2024>,
+    <-18.8307,-5,22.9983>,
+    <-18.8492,-5,22.7934>,
+    <-18.912,-5,22.5975>,
+    <-19.0161,-5,22.42>,
+  }
+  normal_vectors {
+    16,
+    <-0.777904,-0,-0.628383>,
+    <-0.777904,-0,-0.628383>,
+    <-0.896249,-0,-0.443552>,
+    <-0.971422,-0,-0.237357>,
+    <-0.999805,-0,-0.0197282>,
+    <-0.98003,-0,0.198851>,
+    <-0.913048,-0,0.407852>,
+    <-0.802088,-0,0.597207>,
+    <-0.652491,-0,0.757797>,
+    <-0.652491,-0,0.757797>,
+    <-0.896249,-0,-0.443552>,
+    <-0.971422,-0,-0.237357>,
+    <-0.999805,-0,-0.0197282>,
+    <-0.98003,-0,0.198851>,
+    <-0.913048,-0,0.407852>,
+    <-0.802088,-0,0.597207>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face168
+
+// face number169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body169 = mesh2{
+  vertex_vectors {
+    4,
+    <-19.2202,-5,23.7966>,
+    <-19.2202,5,23.7966>,
+    <-19.0387,5,23.569>,
+    <-19.0387,-5,23.569>,
+  }
+  normal_vectors {
+    4,
+    <-0.78195,-0,-0.623342>,
+    <-0.78195,-0,-0.623342>,
+    <-0.78195,-0,-0.623342>,
+    <-0.78195,-0,-0.623342>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face169
+
+// face number170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body170 = mesh2{
+  vertex_vectors {
+    5,
+    <-19.7702,-5,24.8431>,
+    <-19.7702,5,24.8431>,
+    <-19.2202,5,23.7966>,
+    <-19.2202,-5,23.7966>,
+    <-19.427,0,24.129>,
+  }
+  normal_vectors {
+    5,
+    <-0.922205,0,-0.386701>,
+    <-0.922205,0,-0.386701>,
+    <-0.812139,0,-0.583464>,
+    <-0.812139,0,-0.583464>,
+    <-0.873139,0,-0.487471>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face170
+
+// face number171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body171 = mesh2{
+  vertex_vectors {
+    13,
+    <-19.957,-5,25.3294>,
+    <-19.7702,-5,24.8431>,
+    <-20.3549,-4.56445,26.7251>,
+    <-20.6209,-4.109,28.2836>,
+    <-20.6209,4.109,28.2836>,
+    <-19.957,5,25.3294>,
+    <-20.3549,4.56445,26.7251>,
+    <-19.7702,5,24.8431>,
+    <-20.0686,0.217773,25.6616>,
+    <-20.3765,2.16339,26.8228>,
+    <-20.3765,-1.94562,26.8228>,
+    <-20.0807,3.58169,25.7001>,
+    <-20.0807,-3.47281,25.7001>,
+  }
+  normal_vectors {
+    13,
+    <-0.942636,0,-0.333821>,
+    <-0.923162,0,-0.384411>,
+    <-0.975667,0,-0.219258>,
+    <-0.992714,0,-0.120498>,
+    <-0.992714,0,-0.120498>,
+    <-0.942636,0,-0.333821>,
+    <-0.975667,0,-0.219258>,
+    <-0.923162,0,-0.384411>,
+    <-0.952917,0,-0.303232>,
+    <-0.977194,0,-0.21235>,
+    <-0.977194,0,-0.21235>,
+    <-0.953984,0,-0.299856>,
+    <-0.953984,0,-0.299856>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face171
+
+// face number172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body172 = mesh2{
+  vertex_vectors {
+    8,
+    <-19.1333,-4.109,29.3103>,
+    <-17.7705,-4.56443,28.5091>,
+    <-16.6065,-5,27.642>,
+    <-17.7555,-5,26.9184>,
+    <-18.873,-5,26.1471>,
+    <-19.957,-5,25.3294>,
+    <-20.3549,-4.56445,26.7251>,
+    <-20.6209,-4.109,28.2836>,
+  }
+  normal_vectors {
+    8,
+    <-0.168166,-0.951502,0.257613>,
+    <-0.162737,-0.951502,0.261077>,
+    <-0.158431,-0.951502,0.263712>,
+    <-0.169392,-0.951502,0.256809>,
+    <-0.180053,-0.951502,0.24945>,
+    <-0.190395,-0.951502,0.241649>,
+    <-0.186405,-0.951502,0.244741>,
+    <-0.18124,-0.951502,0.248589>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face172
+
+// face number173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body173 = mesh2{
+  vertex_vectors {
+    13,
+    <-16.2181,-5,27.295>,
+    <-16.6065,-5,27.642>,
+    <-16.2181,5,27.295>,
+    <-16.6065,5,27.642>,
+    <-17.7704,4.56445,28.509>,
+    <-19.1333,4.109,29.3103>,
+    <-19.1333,-4.109,29.3103>,
+    <-17.7705,-4.56443,28.5091>,
+    <-16.8776,-0.217773,27.8642>,
+    <-17.8541,1.94562,28.5639>,
+    <-17.8541,-2.16339,28.5639>,
+    <-16.9093,3.47281,27.8892>,
+    <-16.9093,-3.58169,27.8892>,
+  }
+  normal_vectors {
+    13,
+    <0.686788,-0,0.726858>,
+    <0.646392,-0,0.763006>,
+    <0.686788,-0,0.726858>,
+    <0.646392,-0,0.763006>,
+    <0.550986,-0,0.834515>,
+    <0.464689,-0,0.885474>,
+    <0.464689,-0,0.885474>,
+    <0.550981,-0,0.834518>,
+    <0.621436,-0,0.783465>,
+    <0.545068,-0,0.838392>,
+    <0.545068,-0,0.838392>,
+    <0.618658,-0,0.785661>,
+    <0.618658,-0,0.785661>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <8,10,12>,
+    <0,8,12>,
+    <10,7,12>,
+  }
+} // end of Face173
+
+// face number174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body174 = mesh2{
+  vertex_vectors {
+    5,
+    <-15.4346,-5,26.4096>,
+    <-15.4346,5,26.4096>,
+    <-16.2181,5,27.295>,
+    <-16.2181,-5,27.295>,
+    <-15.6721,0,26.7208>,
+  }
+  normal_vectors {
+    5,
+    <0.833537,-0,0.552464>,
+    <0.833537,-0,0.552464>,
+    <0.68859,-0,0.725151>,
+    <0.68859,-0,0.725151>,
+    <0.765413,-0,0.64354>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face174
+
+// face number175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body175 = mesh2{
+  vertex_vectors {
+    4,
+    <-15.2861,-5,26.1592>,
+    <-15.2861,5,26.1592>,
+    <-15.4346,5,26.4096>,
+    <-15.4346,-5,26.4096>,
+  }
+  normal_vectors {
+    4,
+    <0.860118,0,0.510096>,
+    <0.860118,0,0.510096>,
+    <0.860118,0,0.510096>,
+    <0.860118,0,0.510096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face175
+
+// face number176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body176 = mesh2{
+  vertex_vectors {
+    16,
+    <-14.0293,-5,25.8083>,
+    <-14.0293,5,25.8083>,
+    <-14.2198,5,25.7306>,
+    <-14.4227,5,25.6962>,
+    <-14.6282,5,25.707>,
+    <-14.8264,5,25.7623>,
+    <-15.0077,5,25.8596>,
+    <-15.1635,5,25.994>,
+    <-15.2861,5,26.1592>,
+    <-15.2861,-5,26.1592>,
+    <-14.2198,-5,25.7306>,
+    <-14.4227,-5,25.6962>,
+    <-14.6282,-5,25.707>,
+    <-14.8264,-5,25.7623>,
+    <-15.0077,-5,25.8596>,
+    <-15.1635,-5,25.994>,
+  }
+  normal_vectors {
+    16,
+    <-0.477175,-0,0.878808>,
+    <-0.477175,-0,0.878808>,
+    <-0.273974,-0,0.961737>,
+    <-0.0575763,-0,0.998341>,
+    <0.161595,0,0.986857>,
+    <0.372982,0,0.927839>,
+    <0.566403,0,0.824128>,
+    <0.732542,0,0.680722>,
+    <0.863396,0,0.504526>,
+    <0.863396,0,0.504526>,
+    <-0.273974,-0,0.961737>,
+    <-0.0575763,-0,0.998341>,
+    <0.161595,0,0.986857>,
+    <0.372982,0,0.927839>,
+    <0.566403,0,0.824128>,
+    <0.732542,0,0.680722>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face176
+
+// face number177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body177 = mesh2{
+  vertex_vectors {
+    8,
+    <-13.2702,-5,26.2067>,
+    <-13.2702,5,26.2067>,
+    <-13.5246,5,26.0764>,
+    <-13.7776,5,25.9436>,
+    <-14.0293,5,25.8083>,
+    <-14.0293,-5,25.8083>,
+    <-13.5246,-5,26.0764>,
+    <-13.7776,-5,25.9436>,
+  }
+  normal_vectors {
+    8,
+    <-0.451753,-0,0.892143>,
+    <-0.451753,-0,0.892143>,
+    <-0.460411,-0,0.887706>,
+    <-0.469025,-0,0.883185>,
+    <-0.477595,-0,0.87858>,
+    <-0.477595,-0,0.87858>,
+    <-0.460411,-0,0.887706>,
+    <-0.469025,-0,0.883185>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face177
+
+// face number178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body178 = mesh2{
+  vertex_vectors {
+    16,
+    <-12.8451,-5,27.4403>,
+    <-12.8451,5,27.4403>,
+    <-12.7788,5,27.2456>,
+    <-12.7567,5,27.041>,
+    <-12.7796,5,26.8365>,
+    <-12.8467,5,26.642>,
+    <-12.9546,5,26.4668>,
+    <-13.098,5,26.3193>,
+    <-13.2702,5,26.2067>,
+    <-13.2702,-5,26.2067>,
+    <-12.7788,-5,27.2456>,
+    <-12.7567,-5,27.041>,
+    <-12.7796,-5,26.8365>,
+    <-12.8467,-5,26.642>,
+    <-12.9546,-5,26.4668>,
+    <-13.098,-5,26.3193>,
+  }
+  normal_vectors {
+    16,
+    <-0.905682,-0,-0.423958>,
+    <-0.905682,-0,-0.423958>,
+    <-0.976354,-0,-0.216176>,
+    <-0.999998,-0,0.00201832>,
+    <-0.975474,-0,0.220115>,
+    <-0.903964,-0,0.427608>,
+    <-0.788912,-0,0.614506>,
+    <-0.63586,-0,0.771805>,
+    <-0.45218,-0,0.891927>,
+    <-0.45218,-0,0.891927>,
+    <-0.976354,-0,-0.216176>,
+    <-0.999998,-0,0.00201832>,
+    <-0.975474,-0,0.220115>,
+    <-0.903964,-0,0.427608>,
+    <-0.788912,-0,0.614506>,
+    <-0.63586,-0,0.771805>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face178
+
+// face number179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body179 = mesh2{
+  vertex_vectors {
+    4,
+    <-12.9668,-5,27.7048>,
+    <-12.9668,5,27.7048>,
+    <-12.8451,5,27.4403>,
+    <-12.8451,-5,27.4403>,
+  }
+  normal_vectors {
+    4,
+    <-0.908403,-0,-0.418096>,
+    <-0.908403,-0,-0.418096>,
+    <-0.908403,-0,-0.418096>,
+    <-0.908403,-0,-0.418096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face179
+
+// face number180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body180 = mesh2{
+  vertex_vectors {
+    5,
+    <-13.2504,-5,28.8526>,
+    <-13.2504,5,28.8526>,
+    <-12.9668,5,27.7048>,
+    <-12.9668,-5,27.7048>,
+    <-13.0881,0,28.077>,
+  }
+  normal_vectors {
+    5,
+    <-0.987951,0,-0.154766>,
+    <-0.987951,0,-0.154766>,
+    <-0.928172,0,-0.372152>,
+    <-0.928172,0,-0.372152>,
+    <-0.964427,0,-0.26435>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face180
+
+// face number181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body181 = mesh2{
+  vertex_vectors {
+    13,
+    <-13.3154,-5,29.3694>,
+    <-13.2504,-5,28.8526>,
+    <-13.3677,-4.56445,30.8197>,
+    <-13.253,-4.109,32.3966>,
+    <-13.253,4.109,32.3966>,
+    <-13.3154,5,29.3694>,
+    <-13.3677,4.56445,30.8197>,
+    <-13.2504,5,28.8526>,
+    <-13.3442,-0.217773,29.7187>,
+    <-13.3653,1.94562,30.9198>,
+    <-13.3653,-2.16339,30.9198>,
+    <-13.3468,3.47281,29.7589>,
+    <-13.3468,-3.58169,29.7589>,
+  }
+  normal_vectors {
+    13,
+    <-0.995134,0,-0.0985334>,
+    <-0.988332,0,-0.152313>,
+    <-0.999788,-0,0.0206059>,
+    <-0.992704,-0,0.120575>,
+    <-0.992704,-0,0.120575>,
+    <-0.995134,0,-0.0985334>,
+    <-0.999788,-0,0.0206059>,
+    <-0.988332,0,-0.152313>,
+    <-0.997795,0,-0.0663732>,
+    <-0.999617,-0,0.0276783>,
+    <-0.999617,-0,0.0276783>,
+    <-0.998024,0,-0.0628393>,
+    <-0.998024,0,-0.0628393>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face181
+
+// face number182 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body182 = mesh2{
+  vertex_vectors {
+    8,
+    <-11.5629,-4.109,33.0375>,
+    <-10.4314,-4.56443,31.9334>,
+    <-9.5088,-5,30.813>,
+    <-10.7975,-5,30.3854>,
+    <-12.0672,-5,29.9039>,
+    <-13.3154,-5,29.3694>,
+    <-13.3677,-4.56445,30.8197>,
+    <-13.253,-4.109,32.3966>,
+  }
+  normal_vectors {
+    8,
+    <-0.101629,-0.951502,0.290372>,
+    <-0.095528,-0.951502,0.292436>,
+    <-0.0907165,-0.951502,0.293964>,
+    <-0.103012,-0.951502,0.289885>,
+    <-0.115124,-0.951502,0.285291>,
+    <-0.127032,-0.951502,0.280192>,
+    <-0.122418,-0.951502,0.282238>,
+    <-0.116482,-0.951502,0.284739>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face182
+
+// face number183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body183 = mesh2{
+  vertex_vectors {
+    13,
+    <-9.21473,-5,30.3831>,
+    <-9.5088,-5,30.813>,
+    <-9.21473,5,30.3831>,
+    <-9.5088,5,30.813>,
+    <-10.4314,4.56445,31.9333>,
+    <-11.5629,4.109,33.0375>,
+    <-11.5629,-4.109,33.0375>,
+    <-10.4314,-4.56443,31.9334>,
+    <-9.71887,-0.217773,31.0936>,
+    <-10.4995,1.94562,32.0066>,
+    <-10.4995,-2.16339,32.0066>,
+    <-9.7436,3.47281,31.1254>,
+    <-9.7436,-3.58169,31.1254>,
+  }
+  normal_vectors {
+    13,
+    <0.84078,-0,0.541377>,
+    <0.810208,-0,0.586142>,
+    <0.84078,-0,0.541377>,
+    <0.810208,-0,0.586142>,
+    <0.734688,-0,0.678406>,
+    <0.663094,-0,0.748536>,
+    <0.663094,-0,0.748536>,
+    <0.734683,-0,0.67841>,
+    <0.790874,-0,0.611979>,
+    <0.72987,-0,0.683586>,
+    <0.72987,-0,0.683586>,
+    <0.788702,-0,0.614776>,
+    <0.788702,-0,0.614776>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face183
+
+// face number184 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body184 = mesh2{
+  vertex_vectors {
+    5,
+    <-8.6659,-5,29.3359>,
+    <-8.6659,5,29.3359>,
+    <-9.21473,5,30.3831>,
+    <-9.21473,-5,30.3831>,
+    <-8.82197,0,29.6949>,
+  }
+  normal_vectors {
+    5,
+    <0.941529,-0,0.336932>,
+    <0.941529,-0,0.336932>,
+    <0.842121,-0,0.539289>,
+    <0.842121,-0,0.539289>,
+    <0.89718,-0,0.441664>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face184
+
+// face number185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body185 = mesh2{
+  vertex_vectors {
+    4,
+    <-8.58164,-5,29.0573>,
+    <-8.58164,5,29.0573>,
+    <-8.6659,5,29.3359>,
+    <-8.6659,-5,29.3359>,
+  }
+  normal_vectors {
+    4,
+    <0.957198,0,0.289434>,
+    <0.957198,0,0.289434>,
+    <0.957198,0,0.289434>,
+    <0.957198,0,0.289434>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face185
+
+// face number186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body186 = mesh2{
+  vertex_vectors {
+    16,
+    <-7.44534,-5,28.4158>,
+    <-7.44534,5,28.4158>,
+    <-7.64891,5,28.3859>,
+    <-7.8541,5,28.4011>,
+    <-8.05103,5,28.4608>,
+    <-8.23021,5,28.5619>,
+    <-8.383,5,28.6997>,
+    <-8.50206,5,28.8675>,
+    <-8.58164,5,29.0573>,
+    <-8.58164,-5,29.0573>,
+    <-7.64891,-5,28.3859>,
+    <-7.8541,-5,28.4011>,
+    <-8.05103,-5,28.4608>,
+    <-8.23021,-5,28.5619>,
+    <-8.383,-5,28.6997>,
+    <-8.50206,-5,28.8675>,
+  }
+  normal_vectors {
+    16,
+    <-0.252996,-0,0.967467>,
+    <-0.252996,-0,0.967467>,
+    <-0.0358537,-0,0.999357>,
+    <0.183016,0,0.98311>,
+    <0.39307,0,0.919509>,
+    <0.58419,0,0.811617>,
+    <0.747172,0,0.664631>,
+    <0.874164,0,0.485631>,
+    <0.959049,0,0.283241>,
+    <0.959049,0,0.283241>,
+    <-0.0358537,-0,0.999357>,
+    <0.183016,0,0.98311>,
+    <0.39307,0,0.919509>,
+    <0.58419,0,0.811617>,
+    <0.747172,0,0.664631>,
+    <0.874164,0,0.485631>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <4,5,12>,
+    <11,4,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face186
+
+// face number187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body187 = mesh2{
+  vertex_vectors {
+    8,
+    <-6.61295,-5,28.621>,
+    <-6.61295,5,28.621>,
+    <-6.89108,5,28.5553>,
+    <-7.16855,5,28.4869>,
+    <-7.44534,5,28.4158>,
+    <-7.44534,-5,28.4158>,
+    <-6.89108,-5,28.5553>,
+    <-7.16855,-5,28.4869>,
+  }
+  normal_vectors {
+    8,
+    <-0.225122,-0,0.974331>,
+    <-0.225122,-0,0.974331>,
+    <-0.23459,-0,0.972094>,
+    <-0.244036,-0,0.969766>,
+    <-0.253459,-0,0.967346>,
+    <-0.253459,-0,0.967346>,
+    <-0.23459,-0,0.972094>,
+    <-0.244036,-0,0.969766>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face187
+
+// face number188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body188 = mesh2{
+  vertex_vectors {
+    16,
+    <-5.90492,-5,29.717>,
+    <-5.90492,5,29.717>,
+    <-5.88721,5,29.512>,
+    <-5.91464,5,29.3081>,
+    <-5.98589,5,29.1151>,
+    <-6.09754,5,28.9422>,
+    <-6.2442,5,28.7979>,
+    <-6.41881,5,28.6891>,
+    <-6.61295,5,28.621>,
+    <-6.61295,-5,28.621>,
+    <-5.88721,-5,29.512>,
+    <-5.91464,-5,29.3081>,
+    <-5.98589,-5,29.1151>,
+    <-6.09754,-5,28.9422>,
+    <-6.2442,-5,28.7979>,
+    <-6.41881,-5,28.6891>,
+  }
+  normal_vectors {
+    16,
+    <-0.980824,-0,-0.194896>,
+    <-0.980824,-0,-0.194896>,
+    <-0.999718,-0,0.0237628>,
+    <-0.970457,-0,0.241274>,
+    <-0.894452,-0,0.447164>,
+    <-0.775363,-0,0.631516>,
+    <-0.618926,-0,0.785449>,
+    <-0.432678,-0,0.901549>,
+    <-0.225588,-0,0.974223>,
+    <-0.225588,-0,0.974223>,
+    <-0.999718,-0,0.0237628>,
+    <-0.970457,-0,0.241274>,
+    <-0.894452,-0,0.447164>,
+    <-0.775363,-0,0.631516>,
+    <-0.618926,-0,0.785449>,
+    <-0.432678,-0,0.901549>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face188
+
+// face number189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body189 = mesh2{
+  vertex_vectors {
+    4,
+    <-5.95981,-5,30.0029>,
+    <-5.95981,5,30.0029>,
+    <-5.90492,5,29.717>,
+    <-5.90492,-5,29.717>,
+  }
+  normal_vectors {
+    4,
+    <-0.982063,-0,-0.188551>,
+    <-0.982063,-0,-0.188551>,
+    <-0.982063,-0,-0.188551>,
+    <-0.982063,-0,-0.188551>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face189
+
+// face number190 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body190 = mesh2{
+  vertex_vectors {
+    5,
+    <-5.96049,-5,31.1852>,
+    <-5.96049,5,31.1852>,
+    <-5.95981,5,30.0029>,
+    <-5.95981,-5,30.0029>,
+    <-5.98847,0,30.3933>,
+  }
+  normal_vectors {
+    5,
+    <-0.996281,-0,0.0861639>,
+    <-0.996281,-0,0.0861639>,
+    <-0.990263,0,-0.139211>,
+    <-0.990263,0,-0.139211>,
+    <-0.999665,0,-0.0258663>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face190
+
+// face number191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body191 = mesh2{
+  vertex_vectors {
+    13,
+    <-5.89989,-5,31.7025>,
+    <-5.96049,-5,31.1852>,
+    <-5.60363,-4.56445,33.1233>,
+    <-5.11483,-4.109,34.6268>,
+    <-5.11483,4.109,34.6268>,
+    <-5.89989,5,31.7025>,
+    <-5.60363,4.56445,33.1233>,
+    <-5.96049,5,31.1852>,
+    <-5.84428,0.217773,32.0486>,
+    <-5.57734,2.16339,33.2198>,
+    <-5.57734,-1.94562,33.2198>,
+    <-5.83718,3.58169,32.0883>,
+    <-5.83718,-3.47281,32.0883>,
+  }
+  normal_vectors {
+    13,
+    <-0.989798,-0,0.142481>,
+    <-0.996064,-0,0.0886361>,
+    <-0.965804,-0,0.259272>,
+    <-0.935003,-0,0.354641>,
+    <-0.935003,-0,0.354641>,
+    <-0.989798,-0,0.142481>,
+    <-0.965804,-0,0.259272>,
+    <-0.996064,-0,0.0886361>,
+    <-0.984685,-0,0.174343>,
+    <-0.963946,-0,0.266098>,
+    <-0.963946,-0,0.266098>,
+    <-0.984061,-0,0.177829>,
+    <-0.984061,-0,0.177829>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face191
+
+// face number192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body192 = mesh2{
+  vertex_vectors {
+    8,
+    <-3.32054,-4.109,34.8447>,
+    <-2.48617,-4.56443,33.5019>,
+    <-1.85846,-5,32.1932>,
+    <-3.21209,-5,32.0865>,
+    <-4.56004,-5,31.9228>,
+    <-5.89989,-5,31.7025>,
+    <-5.60363,-4.56445,33.1233>,
+    <-5.11483,-4.109,34.6268>,
+  }
+  normal_vectors {
+    8,
+    <-0.0291848,-0.951502,0.306256>,
+    <-0.0227675,-0.951502,0.3068>,
+    <-0.0177302,-0.951502,0.307132>,
+    <-0.0306443,-0.951502,0.306114>,
+    <-0.043504,-0.951502,0.304552>,
+    <-0.0562866,-0.951502,0.302451>,
+    <-0.0513164,-0.951502,0.303333>,
+    <-0.0449551,-0.951502,0.304341>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face192
+
+// face number193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body193 = mesh2{
+  vertex_vectors {
+    13,
+    <-1.67582,-5,31.7054>,
+    <-1.85846,-5,32.1932>,
+    <-1.67582,5,31.7054>,
+    <-1.85846,5,32.1932>,
+    <-2.48612,4.56445,33.5018>,
+    <-3.32054,4.109,34.8447>,
+    <-3.32054,-4.109,34.8447>,
+    <-2.48617,-4.56443,33.5019>,
+    <-1.99527,-0.217773,32.5159>,
+    <-2.53475,1.94562,33.5893>,
+    <-2.53475,-2.16339,33.5893>,
+    <-2.01167,3.47281,32.5528>,
+    <-2.01167,-3.58169,32.5528>,
+  }
+  normal_vectors {
+    13,
+    <0.945908,-0,0.324434>,
+    <0.926938,-0,0.375215>,
+    <0.945908,-0,0.324434>,
+    <0.926938,-0,0.375215>,
+    <0.875692,-0,0.48287>,
+    <0.822962,-0,0.568097>,
+    <0.822962,-0,0.568097>,
+    <0.875689,-0,0.482876>,
+    <0.914349,-0,0.404928>,
+    <0.872254,-0,0.489053>,
+    <0.872254,-0,0.489053>,
+    <0.912909,-0,0.408163>,
+    <0.912909,-0,0.408163>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face193
+
+// face number194 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body194 = mesh2{
+  vertex_vectors {
+    5,
+    <-1.39354,-5,30.5574>,
+    <-1.39354,5,30.5574>,
+    <-1.67582,5,31.7054>,
+    <-1.67582,-5,31.7054>,
+    <-1.45915,0,30.9433>,
+  }
+  normal_vectors {
+    5,
+    <0.994803,-0,0.101819>,
+    <0.994803,-0,0.101819>,
+    <0.946711,-0,0.322086>,
+    <0.946711,-0,0.322086>,
+    <0.976807,-0,0.214121>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face194
+
+// face number195 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body195 = mesh2{
+  vertex_vectors {
+    4,
+    <-1.37841,-5,30.2666>,
+    <-1.37841,5,30.2666>,
+    <-1.39354,5,30.5574>,
+    <-1.39354,-5,30.5574>,
+  }
+  normal_vectors {
+    4,
+    <0.99865,0,0.0519507>,
+    <0.99865,0,0.0519507>,
+    <0.99865,0,0.0519507>,
+    <0.99865,0,0.0519507>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face195
+
+// face number196 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body196 = mesh2{
+  vertex_vectors {
+    16,
+    <-0.428651,-5,29.3719>,
+    <-0.428651,5,29.3719>,
+    <-0.633461,5,29.3916>,
+    <-0.829043,5,29.4555>,
+    <-1.00598,5,29.5605>,
+    <-1.15574,5,29.7016>,
+    <-1.27112,5,29.8719>,
+    <-1.34655,5,30.0634>,
+    <-1.37841,5,30.2666>,
+    <-1.37841,-5,30.2666>,
+    <-0.633461,-5,29.3916>,
+    <-0.829043,-5,29.4555>,
+    <-1.00598,-5,29.5605>,
+    <-1.15574,-5,29.7016>,
+    <-1.27112,-5,29.8719>,
+    <-1.34655,-5,30.0634>,
+  }
+  normal_vectors {
+    16,
+    <-0.0141142,-0,0.9999>,
+    <-0.0141142,-0,0.9999>,
+    <0.20435,0,0.978898>,
+    <0.412971,0,0.910744>,
+    <0.6017,0,0.798722>,
+    <0.761447,0,0.648227>,
+    <0.884517,0,0.466508>,
+    <0.964981,0,0.262319>,
+    <0.998965,0,0.0454941>,
+    <0.998965,0,0.0454941>,
+    <0.20435,0,0.978898>,
+    <0.412971,0,0.910744>,
+    <0.6017,0,0.798722>,
+    <0.761447,0,0.648227>,
+    <0.884517,0,0.466508>,
+    <0.964981,0,0.262319>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face196
+
+// face number197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body197 = mesh2{
+  vertex_vectors {
+    8,
+    <0.428651,-5,29.3719>,
+    <0.428651,5,29.3719>,
+    <0.142888,5,29.3747>,
+    <-0.142888,5,29.3747>,
+    <-0.428651,5,29.3719>,
+    <-0.428651,-5,29.3719>,
+    <0.142888,-5,29.3747>,
+    <-0.142888,-5,29.3747>,
+  }
+  normal_vectors {
+    8,
+    <0.0145924,0,0.999894>,
+    <0.0145924,0,0.999894>,
+    <0.00486427,0,0.999988>,
+    <-0.00486427,-0,0.999988>,
+    <-0.0145924,-0,0.999894>,
+    <-0.0145924,-0,0.999894>,
+    <0.00486427,0,0.999988>,
+    <-0.00486427,-0,0.999988>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face197
+
+// face number198 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body198 = mesh2{
+  vertex_vectors {
+    16,
+    <1.37841,-5,30.2666>,
+    <1.37841,5,30.2666>,
+    <1.34655,5,30.0634>,
+    <1.27112,5,29.8719>,
+    <1.15574,5,29.7016>,
+    <1.00598,5,29.5605>,
+    <0.829043,5,29.4555>,
+    <0.633461,5,29.3916>,
+    <0.428651,5,29.3719>,
+    <0.428651,-5,29.3719>,
+    <1.34655,-5,30.0634>,
+    <1.27112,-5,29.8719>,
+    <1.15574,-5,29.7016>,
+    <1.00598,-5,29.5605>,
+    <0.829043,-5,29.4555>,
+    <0.633461,-5,29.3916>,
+  }
+  normal_vectors {
+    16,
+    <-0.998965,-0,0.0454941>,
+    <-0.998965,-0,0.0454941>,
+    <-0.964981,-0,0.262319>,
+    <-0.884517,-0,0.466508>,
+    <-0.761447,-0,0.648227>,
+    <-0.6017,-0,0.798722>,
+    <-0.412971,-0,0.910744>,
+    <-0.20435,-0,0.978898>,
+    <0.0141142,0,0.9999>,
+    <0.0141142,0,0.9999>,
+    <-0.964981,-0,0.262319>,
+    <-0.884517,-0,0.466508>,
+    <-0.761447,-0,0.648227>,
+    <-0.6017,-0,0.798722>,
+    <-0.412971,-0,0.910744>,
+    <-0.20435,-0,0.978898>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face198
+
+// face number199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body199 = mesh2{
+  vertex_vectors {
+    4,
+    <1.39354,-5,30.5574>,
+    <1.39354,5,30.5574>,
+    <1.37841,5,30.2666>,
+    <1.37841,-5,30.2666>,
+  }
+  normal_vectors {
+    4,
+    <-0.99865,-0,0.0519507>,
+    <-0.99865,-0,0.0519507>,
+    <-0.99865,-0,0.0519507>,
+    <-0.99865,-0,0.0519507>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face199
+
+// face number200 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body200 = mesh2{
+  vertex_vectors {
+    5,
+    <1.67582,-5,31.7054>,
+    <1.67582,5,31.7054>,
+    <1.39354,5,30.5574>,
+    <1.39354,-5,30.5574>,
+    <1.45915,0,30.9433>,
+  }
+  normal_vectors {
+    5,
+    <-0.946711,-0,0.322086>,
+    <-0.946711,-0,0.322086>,
+    <-0.994803,-0,0.101819>,
+    <-0.994803,-0,0.101819>,
+    <-0.976807,-0,0.214121>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face200
+
+// face number201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body201 = mesh2{
+  vertex_vectors {
+    13,
+    <1.85846,-5,32.1932>,
+    <1.67582,-5,31.7054>,
+    <2.48612,-4.56445,33.5018>,
+    <3.32054,-4.109,34.8447>,
+    <3.32054,4.109,34.8447>,
+    <1.85846,5,32.1932>,
+    <2.48612,4.56445,33.5018>,
+    <1.67582,5,31.7054>,
+    <1.99527,0.217773,32.5159>,
+    <2.53475,2.16339,33.5893>,
+    <2.53475,-1.94562,33.5893>,
+    <2.01167,3.58169,32.5528>,
+    <2.01167,-3.47281,32.5528>,
+  }
+  normal_vectors {
+    13,
+    <-0.926938,-0,0.375215>,
+    <-0.945908,-0,0.324434>,
+    <-0.875692,-0,0.48287>,
+    <-0.822962,-0,0.568097>,
+    <-0.822962,-0,0.568097>,
+    <-0.926938,-0,0.375215>,
+    <-0.875692,-0,0.48287>,
+    <-0.945908,-0,0.324434>,
+    <-0.914349,-0,0.404928>,
+    <-0.872254,-0,0.489053>,
+    <-0.872254,-0,0.489053>,
+    <-0.912909,-0,0.408163>,
+    <-0.912909,-0,0.408163>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face201
+
+// face number202 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body202 = mesh2{
+  vertex_vectors {
+    8,
+    <5.11483,-4.109,34.6268>,
+    <5.6036,-4.56443,33.1234>,
+    <5.89989,-5,31.7025>,
+    <4.56004,-5,31.9228>,
+    <3.21209,-5,32.0865>,
+    <1.85846,-5,32.1932>,
+    <2.48612,-4.56445,33.5018>,
+    <3.32054,-4.109,34.8447>,
+  }
+  normal_vectors {
+    8,
+    <0.0449551,-0.951502,0.304341>,
+    <0.0513161,-0.951502,0.303334>,
+    <0.0562866,-0.951502,0.302451>,
+    <0.043504,-0.951502,0.304552>,
+    <0.0306443,-0.951502,0.306114>,
+    <0.0177302,-0.951502,0.307132>,
+    <0.0227672,-0.951502,0.3068>,
+    <0.0291848,-0.951502,0.306256>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face202
+
+// face number203 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body203 = mesh2{
+  vertex_vectors {
+    13,
+    <5.96049,-5,31.1852>,
+    <5.89989,-5,31.7025>,
+    <5.96049,5,31.1852>,
+    <5.89989,5,31.7025>,
+    <5.60363,4.56445,33.1233>,
+    <5.11483,4.109,34.6268>,
+    <5.11483,-4.109,34.6268>,
+    <5.6036,-4.56443,33.1234>,
+    <5.84428,-0.217773,32.0486>,
+    <5.57734,1.94562,33.2198>,
+    <5.57734,-2.16339,33.2198>,
+    <5.83718,3.47281,32.0883>,
+    <5.83718,-3.58169,32.0883>,
+  }
+  normal_vectors {
+    13,
+    <0.996064,-0,0.0886361>,
+    <0.989798,-0,0.142481>,
+    <0.996064,-0,0.0886361>,
+    <0.989798,-0,0.142481>,
+    <0.965804,-0,0.259272>,
+    <0.935003,-0,0.354641>,
+    <0.935003,-0,0.354641>,
+    <0.965803,-0,0.259278>,
+    <0.984685,-0,0.174343>,
+    <0.963946,-0,0.266098>,
+    <0.963946,-0,0.266098>,
+    <0.984061,-0,0.177829>,
+    <0.984061,-0,0.177829>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face203
+
+// face number204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body204 = mesh2{
+  vertex_vectors {
+    5,
+    <5.95981,-5,30.0029>,
+    <5.95981,5,30.0029>,
+    <5.96049,5,31.1852>,
+    <5.96049,-5,31.1852>,
+    <5.98847,0,30.3933>,
+  }
+  normal_vectors {
+    5,
+    <0.990263,-0,-0.139211>,
+    <0.990263,-0,-0.139211>,
+    <0.996281,-0,0.0861639>,
+    <0.996281,-0,0.0861639>,
+    <0.999665,-0,-0.0258663>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face204
+
+// face number205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body205 = mesh2{
+  vertex_vectors {
+    4,
+    <5.90492,-5,29.717>,
+    <5.90492,5,29.717>,
+    <5.95981,5,30.0029>,
+    <5.95981,-5,30.0029>,
+  }
+  normal_vectors {
+    4,
+    <0.982063,-0,-0.188551>,
+    <0.982063,-0,-0.188551>,
+    <0.982063,-0,-0.188551>,
+    <0.982063,-0,-0.188551>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face205
+
+// face number206 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body206 = mesh2{
+  vertex_vectors {
+    16,
+    <6.61295,-5,28.621>,
+    <6.61295,5,28.621>,
+    <6.41881,5,28.6891>,
+    <6.2442,5,28.7979>,
+    <6.09754,5,28.9422>,
+    <5.98589,5,29.1151>,
+    <5.91464,5,29.3081>,
+    <5.88721,5,29.512>,
+    <5.90492,5,29.717>,
+    <5.90492,-5,29.717>,
+    <6.41881,-5,28.6891>,
+    <6.2442,-5,28.7979>,
+    <6.09754,-5,28.9422>,
+    <5.98589,-5,29.1151>,
+    <5.91464,-5,29.3081>,
+    <5.88721,-5,29.512>,
+  }
+  normal_vectors {
+    16,
+    <0.225588,0,0.974223>,
+    <0.225588,0,0.974223>,
+    <0.432678,0,0.901549>,
+    <0.618926,0,0.785449>,
+    <0.775363,0,0.631516>,
+    <0.894452,0,0.447164>,
+    <0.970457,0,0.241274>,
+    <0.999718,0,0.0237628>,
+    <0.980824,-0,-0.194896>,
+    <0.980824,-0,-0.194896>,
+    <0.432678,0,0.901549>,
+    <0.618926,0,0.785449>,
+    <0.775363,0,0.631516>,
+    <0.894452,0,0.447164>,
+    <0.970457,0,0.241274>,
+    <0.999718,0,0.0237628>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face206
+
+// face number207 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body207 = mesh2{
+  vertex_vectors {
+    8,
+    <7.44534,-5,28.4158>,
+    <7.44534,5,28.4158>,
+    <7.16855,5,28.4869>,
+    <6.89108,5,28.5553>,
+    <6.61295,5,28.621>,
+    <6.61295,-5,28.621>,
+    <7.16855,-5,28.4869>,
+    <6.89108,-5,28.5553>,
+  }
+  normal_vectors {
+    8,
+    <0.253459,0,0.967346>,
+    <0.253459,0,0.967346>,
+    <0.244036,0,0.969766>,
+    <0.23459,0,0.972094>,
+    <0.225122,0,0.974331>,
+    <0.225122,0,0.974331>,
+    <0.244036,0,0.969766>,
+    <0.23459,0,0.972094>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face207
+
+// face number208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body208 = mesh2{
+  vertex_vectors {
+    16,
+    <8.58164,-5,29.0573>,
+    <8.58164,5,29.0573>,
+    <8.50206,5,28.8675>,
+    <8.383,5,28.6997>,
+    <8.23021,5,28.5619>,
+    <8.05103,5,28.4608>,
+    <7.8541,5,28.4011>,
+    <7.64891,5,28.3859>,
+    <7.44534,5,28.4158>,
+    <7.44534,-5,28.4158>,
+    <8.50206,-5,28.8675>,
+    <8.383,-5,28.6997>,
+    <8.23021,-5,28.5619>,
+    <8.05103,-5,28.4608>,
+    <7.8541,-5,28.4011>,
+    <7.64891,-5,28.3859>,
+  }
+  normal_vectors {
+    16,
+    <-0.959049,-0,0.283241>,
+    <-0.959049,-0,0.283241>,
+    <-0.874164,-0,0.485631>,
+    <-0.747172,-0,0.664631>,
+    <-0.58419,-0,0.811617>,
+    <-0.39307,-0,0.919509>,
+    <-0.183016,-0,0.98311>,
+    <0.0358537,0,0.999357>,
+    <0.252996,0,0.967467>,
+    <0.252996,0,0.967467>,
+    <-0.874164,-0,0.485631>,
+    <-0.747172,-0,0.664631>,
+    <-0.58419,-0,0.811617>,
+    <-0.39307,-0,0.919509>,
+    <-0.183016,-0,0.98311>,
+    <0.0358537,0,0.999357>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face208
+
+// face number209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body209 = mesh2{
+  vertex_vectors {
+    4,
+    <8.6659,-5,29.3359>,
+    <8.6659,5,29.3359>,
+    <8.58164,5,29.0573>,
+    <8.58164,-5,29.0573>,
+  }
+  normal_vectors {
+    4,
+    <-0.957198,-0,0.289434>,
+    <-0.957198,-0,0.289434>,
+    <-0.957198,-0,0.289434>,
+    <-0.957198,-0,0.289434>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face209
+
+// face number210 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body210 = mesh2{
+  vertex_vectors {
+    5,
+    <9.21473,-5,30.3831>,
+    <9.21473,5,30.3831>,
+    <8.6659,5,29.3359>,
+    <8.6659,-5,29.3359>,
+    <8.82197,0,29.6949>,
+  }
+  normal_vectors {
+    5,
+    <-0.842121,-0,0.539289>,
+    <-0.842121,-0,0.539289>,
+    <-0.941529,-0,0.336932>,
+    <-0.941529,-0,0.336932>,
+    <-0.89718,-0,0.441664>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face210
+
+// face number211 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body211 = mesh2{
+  vertex_vectors {
+    13,
+    <9.5088,-5,30.813>,
+    <9.21473,-5,30.3831>,
+    <10.4314,-4.56445,31.9333>,
+    <11.5629,-4.109,33.0375>,
+    <11.5629,4.109,33.0375>,
+    <9.5088,5,30.813>,
+    <10.4314,4.56445,31.9333>,
+    <9.21473,5,30.3831>,
+    <9.71887,-0.217773,31.0936>,
+    <10.4995,1.94562,32.0066>,
+    <10.4995,-2.16339,32.0066>,
+    <9.7436,3.47281,31.1254>,
+    <9.7436,-3.58169,31.1254>,
+  }
+  normal_vectors {
+    13,
+    <-0.810208,-0,0.586142>,
+    <-0.84078,-0,0.541377>,
+    <-0.734688,-0,0.678406>,
+    <-0.663094,-0,0.748536>,
+    <-0.663094,-0,0.748536>,
+    <-0.810208,-0,0.586142>,
+    <-0.734688,-0,0.678406>,
+    <-0.84078,-0,0.541377>,
+    <-0.790874,-0,0.611979>,
+    <-0.72987,-0,0.683586>,
+    <-0.72987,-0,0.683586>,
+    <-0.788702,-0,0.614776>,
+    <-0.788702,-0,0.614776>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face211
+
+// face number212 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body212 = mesh2{
+  vertex_vectors {
+    8,
+    <13.253,-4.109,32.3966>,
+    <13.3677,-4.56443,30.8198>,
+    <13.3154,-5,29.3694>,
+    <12.0672,-5,29.9039>,
+    <10.7975,-5,30.3854>,
+    <9.5088,-5,30.813>,
+    <10.4314,-4.56445,31.9333>,
+    <11.5629,-4.109,33.0375>,
+  }
+  normal_vectors {
+    8,
+    <0.116482,-0.951502,0.284739>,
+    <0.122417,-0.951502,0.282238>,
+    <0.127032,-0.951502,0.280192>,
+    <0.115124,-0.951502,0.285291>,
+    <0.103012,-0.951502,0.289885>,
+    <0.0907165,-0.951502,0.293964>,
+    <0.0955277,-0.951502,0.292436>,
+    <0.101629,-0.951502,0.290372>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face212
+
+// face number213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body213 = mesh2{
+  vertex_vectors {
+    13,
+    <13.2504,-5,28.8526>,
+    <13.3154,-5,29.3694>,
+    <13.2504,5,28.8526>,
+    <13.3154,5,29.3694>,
+    <13.3677,4.56445,30.8197>,
+    <13.253,4.109,32.3966>,
+    <13.253,-4.109,32.3966>,
+    <13.3677,-4.56443,30.8198>,
+    <13.3442,-0.217773,29.7187>,
+    <13.3653,1.94562,30.9198>,
+    <13.3653,-2.16339,30.9198>,
+    <13.3468,3.47281,29.7589>,
+    <13.3468,-3.58169,29.7589>,
+  }
+  normal_vectors {
+    13,
+    <0.988332,-0,-0.152313>,
+    <0.995134,-0,-0.0985334>,
+    <0.988332,-0,-0.152313>,
+    <0.995134,-0,-0.0985334>,
+    <0.999788,-0,0.0206059>,
+    <0.992704,-0,0.120575>,
+    <0.992704,-0,0.120575>,
+    <0.999788,-0,0.0206122>,
+    <0.997795,-0,-0.0663732>,
+    <0.999617,-0,0.0276783>,
+    <0.999617,-0,0.0276783>,
+    <0.998024,-0,-0.0628393>,
+    <0.998024,-0,-0.0628393>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face213
+
+// face number214 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body214 = mesh2{
+  vertex_vectors {
+    5,
+    <12.9668,-5,27.7048>,
+    <12.9668,5,27.7048>,
+    <13.2504,5,28.8526>,
+    <13.2504,-5,28.8526>,
+    <13.0881,0,28.077>,
+  }
+  normal_vectors {
+    5,
+    <0.928172,-0,-0.372152>,
+    <0.928172,-0,-0.372152>,
+    <0.987951,-0,-0.154766>,
+    <0.987951,-0,-0.154766>,
+    <0.964427,-0,-0.26435>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face214
+
+// face number215 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body215 = mesh2{
+  vertex_vectors {
+    4,
+    <12.8451,-5,27.4403>,
+    <12.8451,5,27.4403>,
+    <12.9668,5,27.7048>,
+    <12.9668,-5,27.7048>,
+  }
+  normal_vectors {
+    4,
+    <0.908403,-0,-0.418096>,
+    <0.908403,-0,-0.418096>,
+    <0.908403,-0,-0.418096>,
+    <0.908403,-0,-0.418096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face215
+
+// face number216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body216 = mesh2{
+  vertex_vectors {
+    16,
+    <13.2702,-5,26.2067>,
+    <13.2702,5,26.2067>,
+    <13.098,5,26.3193>,
+    <12.9546,5,26.4668>,
+    <12.8467,5,26.642>,
+    <12.7796,5,26.8365>,
+    <12.7567,5,27.041>,
+    <12.7788,5,27.2456>,
+    <12.8451,5,27.4403>,
+    <12.8451,-5,27.4403>,
+    <13.098,-5,26.3193>,
+    <12.9546,-5,26.4668>,
+    <12.8467,-5,26.642>,
+    <12.7796,-5,26.8365>,
+    <12.7567,-5,27.041>,
+    <12.7788,-5,27.2456>,
+  }
+  normal_vectors {
+    16,
+    <0.45218,0,0.891927>,
+    <0.45218,0,0.891927>,
+    <0.63586,0,0.771805>,
+    <0.788912,0,0.614506>,
+    <0.903964,0,0.427608>,
+    <0.975474,0,0.220115>,
+    <0.999998,0,0.00201832>,
+    <0.976354,-0,-0.216176>,
+    <0.905682,-0,-0.423958>,
+    <0.905682,-0,-0.423958>,
+    <0.63586,0,0.771805>,
+    <0.788912,0,0.614506>,
+    <0.903964,0,0.427608>,
+    <0.975474,0,0.220115>,
+    <0.999998,0,0.00201832>,
+    <0.976354,-0,-0.216176>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face216
+
+// face number217 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body217 = mesh2{
+  vertex_vectors {
+    8,
+    <14.0293,-5,25.8083>,
+    <14.0293,5,25.8083>,
+    <13.7776,5,25.9436>,
+    <13.5246,5,26.0764>,
+    <13.2702,5,26.2067>,
+    <13.2702,-5,26.2067>,
+    <13.7776,-5,25.9436>,
+    <13.5246,-5,26.0764>,
+  }
+  normal_vectors {
+    8,
+    <0.477595,0,0.87858>,
+    <0.477595,0,0.87858>,
+    <0.469025,0,0.883185>,
+    <0.460411,0,0.887706>,
+    <0.451753,0,0.892143>,
+    <0.451753,0,0.892143>,
+    <0.469025,0,0.883185>,
+    <0.460411,0,0.887706>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face217
+
+// face number218 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body218 = mesh2{
+  vertex_vectors {
+    16,
+    <15.2861,-5,26.1592>,
+    <15.2861,5,26.1592>,
+    <15.1635,5,25.994>,
+    <15.0077,5,25.8596>,
+    <14.8264,5,25.7623>,
+    <14.6282,5,25.707>,
+    <14.4227,5,25.6962>,
+    <14.2198,5,25.7306>,
+    <14.0293,5,25.8083>,
+    <14.0293,-5,25.8083>,
+    <15.1635,-5,25.994>,
+    <15.0077,-5,25.8596>,
+    <14.8264,-5,25.7623>,
+    <14.6282,-5,25.707>,
+    <14.4227,-5,25.6962>,
+    <14.2198,-5,25.7306>,
+  }
+  normal_vectors {
+    16,
+    <-0.863396,-0,0.504526>,
+    <-0.863396,-0,0.504526>,
+    <-0.732542,-0,0.680722>,
+    <-0.566403,-0,0.824128>,
+    <-0.372982,-0,0.927839>,
+    <-0.161595,-0,0.986857>,
+    <0.0575763,0,0.998341>,
+    <0.273974,0,0.961737>,
+    <0.477175,0,0.878808>,
+    <0.477175,0,0.878808>,
+    <-0.732542,-0,0.680722>,
+    <-0.566403,-0,0.824128>,
+    <-0.372982,-0,0.927839>,
+    <-0.161595,-0,0.986857>,
+    <0.0575763,0,0.998341>,
+    <0.273974,0,0.961737>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face218
+
+// face number219 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body219 = mesh2{
+  vertex_vectors {
+    4,
+    <15.4346,-5,26.4096>,
+    <15.4346,5,26.4096>,
+    <15.2861,5,26.1592>,
+    <15.2861,-5,26.1592>,
+  }
+  normal_vectors {
+    4,
+    <-0.860118,-0,0.510096>,
+    <-0.860118,-0,0.510096>,
+    <-0.860118,-0,0.510096>,
+    <-0.860118,-0,0.510096>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face219
+
+// face number220 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body220 = mesh2{
+  vertex_vectors {
+    5,
+    <16.2181,-5,27.295>,
+    <16.2181,5,27.295>,
+    <15.4346,5,26.4096>,
+    <15.4346,-5,26.4096>,
+    <15.6721,0,26.7208>,
+  }
+  normal_vectors {
+    5,
+    <-0.68859,-0,0.725151>,
+    <-0.68859,-0,0.725151>,
+    <-0.833537,-0,0.552464>,
+    <-0.833537,-0,0.552464>,
+    <-0.765413,-0,0.64354>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face220
+
+// face number221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body221 = mesh2{
+  vertex_vectors {
+    13,
+    <16.6065,-5,27.642>,
+    <16.2181,-5,27.295>,
+    <17.7704,-4.56445,28.509>,
+    <19.1333,-4.109,29.3103>,
+    <19.1333,4.109,29.3103>,
+    <16.6065,5,27.642>,
+    <17.7704,4.56445,28.509>,
+    <16.2181,5,27.295>,
+    <16.8776,0.217773,27.8642>,
+    <17.8541,2.16339,28.5639>,
+    <17.8541,-1.94562,28.5639>,
+    <16.9093,3.58169,27.8892>,
+    <16.9093,-3.47281,27.8892>,
+  }
+  normal_vectors {
+    13,
+    <-0.646392,-0,0.763006>,
+    <-0.686788,-0,0.726858>,
+    <-0.550986,-0,0.834515>,
+    <-0.464689,-0,0.885474>,
+    <-0.464689,-0,0.885474>,
+    <-0.646392,-0,0.763006>,
+    <-0.550986,-0,0.834515>,
+    <-0.686788,-0,0.726858>,
+    <-0.621436,-0,0.783465>,
+    <-0.545068,-0,0.838392>,
+    <-0.545068,-0,0.838392>,
+    <-0.618658,-0,0.785661>,
+    <-0.618658,-0,0.785661>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face221
+
+// face number222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body222 = mesh2{
+  vertex_vectors {
+    8,
+    <20.6209,-4.109,28.2836>,
+    <20.3549,-4.56443,26.7251>,
+    <19.957,-5,25.3294>,
+    <18.873,-5,26.1471>,
+    <17.7555,-5,26.9184>,
+    <16.6065,-5,27.642>,
+    <17.7704,-4.56445,28.509>,
+    <19.1333,-4.109,29.3103>,
+  }
+  normal_vectors {
+    8,
+    <0.18124,-0.951502,0.248589>,
+    <0.186404,-0.951502,0.244741>,
+    <0.190395,-0.951502,0.241649>,
+    <0.180053,-0.951502,0.24945>,
+    <0.169392,-0.951502,0.256809>,
+    <0.158431,-0.951502,0.263712>,
+    <0.162736,-0.951502,0.261077>,
+    <0.168166,-0.951502,0.257613>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face222
+
+// face number223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body223 = mesh2{
+  vertex_vectors {
+    13,
+    <19.7702,-5,24.8431>,
+    <19.957,-5,25.3294>,
+    <19.7702,5,24.8431>,
+    <19.957,5,25.3294>,
+    <20.3549,4.56445,26.7251>,
+    <20.6209,4.109,28.2836>,
+    <20.6209,-4.109,28.2836>,
+    <20.3549,-4.56443,26.7251>,
+    <20.0686,-0.217773,25.6616>,
+    <20.3765,1.94562,26.8228>,
+    <20.3765,-2.16339,26.8228>,
+    <20.0807,3.47281,25.7001>,
+    <20.0807,-3.58169,25.7001>,
+  }
+  normal_vectors {
+    13,
+    <0.923162,-0,-0.384411>,
+    <0.942636,-0,-0.333821>,
+    <0.923162,-0,-0.384411>,
+    <0.942636,-0,-0.333821>,
+    <0.975667,-0,-0.219258>,
+    <0.992714,-0,-0.120498>,
+    <0.992714,-0,-0.120498>,
+    <0.975668,-0,-0.219252>,
+    <0.952917,-0,-0.303232>,
+    <0.977194,-0,-0.21235>,
+    <0.977194,-0,-0.21235>,
+    <0.953984,-0,-0.299856>,
+    <0.953984,-0,-0.299856>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face223
+
+// face number224 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body224 = mesh2{
+  vertex_vectors {
+    5,
+    <19.2202,-5,23.7966>,
+    <19.2202,5,23.7966>,
+    <19.7702,5,24.8431>,
+    <19.7702,-5,24.8431>,
+    <19.427,0,24.129>,
+  }
+  normal_vectors {
+    5,
+    <0.812139,-0,-0.583464>,
+    <0.812139,-0,-0.583464>,
+    <0.922205,-0,-0.386701>,
+    <0.922205,-0,-0.386701>,
+    <0.873139,-0,-0.487471>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face224
+
+// face number225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body225 = mesh2{
+  vertex_vectors {
+    4,
+    <19.0387,-5,23.569>,
+    <19.0387,5,23.569>,
+    <19.2202,5,23.7966>,
+    <19.2202,-5,23.7966>,
+  }
+  normal_vectors {
+    4,
+    <0.78195,-0,-0.623342>,
+    <0.78195,-0,-0.623342>,
+    <0.78195,-0,-0.623342>,
+    <0.78195,-0,-0.623342>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face225
+
+// face number226 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body226 = mesh2{
+  vertex_vectors {
+    16,
+    <19.1563,-5,22.2694>,
+    <19.1563,5,22.2694>,
+    <19.0161,5,22.42>,
+    <18.912,5,22.5975>,
+    <18.8492,5,22.7934>,
+    <18.8307,5,22.9983>,
+    <18.8573,5,23.2024>,
+    <18.9278,5,23.3957>,
+    <19.0387,5,23.569>,
+    <19.0387,-5,23.569>,
+    <19.0161,-5,22.42>,
+    <18.912,-5,22.5975>,
+    <18.8492,-5,22.7934>,
+    <18.8307,-5,22.9983>,
+    <18.8573,-5,23.2024>,
+    <18.9278,-5,23.3957>,
+  }
+  normal_vectors {
+    16,
+    <0.652491,0,0.757797>,
+    <0.652491,0,0.757797>,
+    <0.802088,0,0.597207>,
+    <0.913048,0,0.407852>,
+    <0.98003,0,0.198851>,
+    <0.999805,-0,-0.0197282>,
+    <0.971422,-0,-0.237357>,
+    <0.896249,-0,-0.443552>,
+    <0.777904,-0,-0.628383>,
+    <0.777904,-0,-0.628383>,
+    <0.802088,0,0.597207>,
+    <0.913048,0,0.407852>,
+    <0.98003,0,0.198851>,
+    <0.999805,-0,-0.0197282>,
+    <0.971422,-0,-0.237357>,
+    <0.896249,-0,-0.443552>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face226
+
+// face number227 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body227 = mesh2{
+  vertex_vectors {
+    8,
+    <19.798,-5,21.7009>,
+    <19.798,5,21.7009>,
+    <19.586,5,21.8925>,
+    <19.372,5,22.082>,
+    <19.1563,5,22.2694>,
+    <19.1563,-5,22.2694>,
+    <19.586,-5,21.8925>,
+    <19.372,-5,22.082>,
+  }
+  normal_vectors {
+    8,
+    <0.673975,0,0.738755>,
+    <0.673975,0,0.738755>,
+    <0.666756,0,0.745276>,
+    <0.659474,0,0.751728>,
+    <0.65213,0,0.758108>,
+    <0.65213,0,0.758108>,
+    <0.666756,0,0.745276>,
+    <0.659474,0,0.751728>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face227
+
+// face number228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body228 = mesh2{
+  vertex_vectors {
+    16,
+    <21.1022,-5,21.7408>,
+    <21.1022,5,21.7408>,
+    <20.9436,5,21.6098>,
+    <20.7602,5,21.5166>,
+    <20.5609,5,21.4655>,
+    <20.3552,5,21.4592>,
+    <20.1531,5,21.498>,
+    <19.9644,5,21.5798>,
+    <19.798,5,21.7009>,
+    <19.798,-5,21.7009>,
+    <20.9436,-5,21.6098>,
+    <20.7602,-5,21.5166>,
+    <20.5609,-5,21.4655>,
+    <20.3552,-5,21.4592>,
+    <20.1531,-5,21.498>,
+    <19.9644,-5,21.5798>,
+  }
+  normal_vectors {
+    16,
+    <-0.717567,-0,0.696489>,
+    <-0.717567,-0,0.696489>,
+    <-0.548348,-0,0.83625>,
+    <-0.352718,-0,0.93573>,
+    <-0.140098,-0,0.990138>,
+    <0.0792706,0,0.996853>,
+    <0.294822,0,0.955552>,
+    <0.496171,0,0.868225>,
+    <0.673621,0,0.739077>,
+    <0.673621,0,0.739077>,
+    <-0.548348,-0,0.83625>,
+    <-0.352718,-0,0.93573>,
+    <-0.140098,-0,0.990138>,
+    <0.0792706,0,0.996853>,
+    <0.294822,0,0.955552>,
+    <0.496171,0,0.868225>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face228
+
+// face number229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body229 = mesh2{
+  vertex_vectors {
+    4,
+    <21.3064,-5,21.9484>,
+    <21.3064,5,21.9484>,
+    <21.1022,5,21.7408>,
+    <21.1022,-5,21.7408>,
+  }
+  normal_vectors {
+    4,
+    <-0.71305,-0,0.701113>,
+    <-0.71305,-0,0.701113>,
+    <-0.71305,-0,0.701113>,
+    <-0.71305,-0,0.701113>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face229
+
+// face number230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body230 = mesh2{
+  vertex_vectors {
+    5,
+    <22.279,-5,22.6206>,
+    <22.279,5,22.6206>,
+    <21.3064,5,21.9484>,
+    <21.3064,-5,21.9484>,
+    <21.6114,0,22.1938>,
+  }
+  normal_vectors {
+    5,
+    <-0.495041,-0,0.86887>,
+    <-0.495041,-0,0.86887>,
+    <-0.677102,-0,0.735889>,
+    <-0.677102,-0,0.735889>,
+    <-0.589162,-0,0.808015>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face230
+
+// face number231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body231 = mesh2{
+  vertex_vectors {
+    13,
+    <22.7391,-5,22.8646>,
+    <22.279,-5,22.6206>,
+    <24.0767,-4.56445,23.4279>,
+    <25.5918,-4.109,23.8797>,
+    <25.5918,4.109,23.8797>,
+    <22.7391,5,22.8646>,
+    <24.0767,4.56445,23.4279>,
+    <22.279,5,22.6206>,
+    <23.0555,0.217773,23.0154>,
+    <24.1711,2.16339,23.4611>,
+    <24.1711,-1.94562,23.4611>,
+    <23.0922,3.58169,23.0321>,
+    <23.0922,-3.47281,23.0321>,
+  }
+  normal_vectors {
+    13,
+    <-0.44501,-0,0.895526>,
+    <-0.492883,-0,0.870096>,
+    <-0.335263,-0,0.942125>,
+    <-0.239278,-0,0.970951>,
+    <-0.239278,-0,0.970951>,
+    <-0.44501,-0,0.895526>,
+    <-0.335263,-0,0.942125>,
+    <-0.492883,-0,0.870096>,
+    <-0.415883,-0,0.909418>,
+    <-0.328589,-0,0.944473>,
+    <-0.328589,-0,0.944473>,
+    <-0.41266,-0,0.910885>,
+    <-0.41266,-0,0.910885>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face231
+
+// face number232 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body232 = mesh2{
+  vertex_vectors {
+    8,
+    <26.7904,-4.109,22.5268>,
+    <26.1592,-4.56443,21.0773>,
+    <25.4388,-5,19.8173>,
+    <24.582,-5,20.8707>,
+    <23.6815,-5,21.887>,
+    <22.7391,-5,22.8646>,
+    <24.0767,-4.56445,23.4279>,
+    <25.5918,-4.109,23.8797>,
+  }
+  normal_vectors {
+    8,
+    <0.235465,-0.951502,0.197992>,
+    <0.239558,-0.951502,0.19302>,
+    <0.242693,-0.951502,0.189063>,
+    <0.234519,-0.951502,0.199112>,
+    <0.225928,-0.951502,0.208808>,
+    <0.216938,-0.951502,0.218134>,
+    <0.220487,-0.951502,0.214546>,
+    <0.224931,-0.951502,0.209883>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face232
+
+// face number233 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body233 = mesh2{
+  vertex_vectors {
+    13,
+    <25.1411,-5,19.3899>,
+    <25.4388,-5,19.8173>,
+    <25.1411,5,19.3899>,
+    <25.4388,5,19.8173>,
+    <26.1592,4.56445,21.0772>,
+    <26.7904,4.109,22.5268>,
+    <26.7904,-4.109,22.5268>,
+    <26.1592,-4.56443,21.0773>,
+    <25.6266,-0.217773,20.1132>,
+    <26.2035,1.94562,21.1669>,
+    <26.2035,-2.16339,21.1669>,
+    <25.6477,3.47281,20.1477>,
+    <25.6477,-3.58169,20.1477>,
+  }
+  normal_vectors {
+    13,
+    <0.804341,-0,-0.594168>,
+    <0.835356,-0,-0.549709>,
+    <0.804341,-0,-0.594168>,
+    <0.835356,-0,-0.549709>,
+    <0.894844,-0,-0.446379>,
+    <0.93503,-0,-0.354569>,
+    <0.93503,-0,-0.354569>,
+    <0.894847,-0,-0.446373>,
+    <0.852658,-0,-0.522469>,
+    <0.89798,-0,-0.440037>,
+    <0.89798,-0,-0.440037>,
+    <0.854503,-0,-0.519446>,
+    <0.854503,-0,-0.519446>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face233
+
+// face number234 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body234 = mesh2{
+  vertex_vectors {
+    5,
+    <24.3566,-5,18.5054>,
+    <24.3566,5,18.5054>,
+    <25.1411,5,19.3899>,
+    <25.1411,-5,19.3899>,
+    <24.6369,0,18.7787>,
+  }
+  normal_vectors {
+    5,
+    <0.648908,-0,-0.760867>,
+    <0.648908,-0,-0.760867>,
+    <0.802864,-0,-0.596162>,
+    <0.802864,-0,-0.596162>,
+    <0.731108,-0,-0.682262>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face234
+
+// face number235 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body235 = mesh2{
+  vertex_vectors {
+    4,
+    <24.1259,-5,18.3278>,
+    <24.1259,5,18.3278>,
+    <24.3566,5,18.5054>,
+    <24.3566,-5,18.5054>,
+  }
+  normal_vectors {
+    4,
+    <0.610052,-0,-0.792361>,
+    <0.610052,-0,-0.792361>,
+    <0.610052,-0,-0.792361>,
+    <0.610052,-0,-0.792361>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face235
+
+// face number236 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body236 = mesh2{
+  vertex_vectors {
+    16,
+    <23.9291,-5,17.0379>,
+    <23.9291,5,17.0379>,
+    <23.8289,5,17.2176>,
+    <23.7704,5,17.4149>,
+    <23.7563,5,17.6202>,
+    <23.7874,5,17.8236>,
+    <23.862,5,18.0153>,
+    <23.9767,5,18.1861>,
+    <24.1259,5,18.3278>,
+    <24.1259,-5,18.3278>,
+    <23.8289,-5,17.2176>,
+    <23.7704,-5,17.4149>,
+    <23.7563,-5,17.6202>,
+    <23.7874,-5,17.8236>,
+    <23.862,-5,18.0153>,
+    <23.9767,-5,18.1861>,
+  }
+  normal_vectors {
+    16,
+    <0.814884,0,0.579624>,
+    <0.814884,0,0.579624>,
+    <0.921701,0,0.387901>,
+    <0.984122,0,0.177492>,
+    <0.99914,-0,-0.041463>,
+    <0.966031,-0,-0.258424>,
+    <0.886392,-0,-0.462935>,
+    <0.764056,-0,-0.645149>,
+    <0.604918,-0,-0.796288>,
+    <0.604918,-0,-0.796288>,
+    <0.921701,0,0.387901>,
+    <0.984122,0,0.177492>,
+    <0.99914,-0,-0.041463>,
+    <0.966031,-0,-0.258424>,
+    <0.886392,-0,-0.462935>,
+    <0.764056,-0,-0.645149>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <14,7,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face236
+
+// face number237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body237 = mesh2{
+  vertex_vectors {
+    8,
+    <24.4161,-5,16.3324>,
+    <24.4161,5,16.3324>,
+    <24.256,5,16.5691>,
+    <24.0937,5,16.8043>,
+    <23.9291,5,17.0379>,
+    <23.9291,-5,17.0379>,
+    <24.256,-5,16.5691>,
+    <24.0937,-5,16.8043>,
+  }
+  normal_vectors {
+    8,
+    <0.831186,0,0.555995>,
+    <0.831186,0,0.555995>,
+    <0.825737,0,0.564055>,
+    <0.820211,0,0.572061>,
+    <0.814607,0,0.580014>,
+    <0.814607,0,0.580014>,
+    <0.825737,0,0.564055>,
+    <0.820211,0,0.572061>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face237
+
+// face number238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body238 = mesh2{
+  vertex_vectors {
+    16,
+    <25.692,-5,16.059>,
+    <25.692,5,16.059>,
+    <25.5066,5,15.9697>,
+    <25.3062,5,15.9231>,
+    <25.1004,5,15.9213>,
+    <24.8993,5,15.9644>,
+    <24.7123,5,16.0503>,
+    <24.5486,5,16.175>,
+    <24.4161,5,16.3324>,
+    <24.4161,-5,16.3324>,
+    <25.5066,-5,15.9697>,
+    <25.3062,-5,15.9231>,
+    <25.1004,-5,15.9213>,
+    <24.8993,-5,15.9644>,
+    <24.7123,-5,16.0503>,
+    <24.5486,-5,16.175>,
+  }
+  normal_vectors {
+    16,
+    <-0.530034,-0,0.847976>,
+    <-0.530034,-0,0.847976>,
+    <-0.332287,-0,0.943178>,
+    <-0.118533,-0,0.99295>,
+    <0.100929,0,0.994894>,
+    <0.31553,0,0.948915>,
+    <0.514934,0,0.85723>,
+    <0.689533,0,0.724254>,
+    <0.83092,0,0.556392>,
+    <0.83092,0,0.556392>,
+    <-0.332287,-0,0.943178>,
+    <-0.118533,-0,0.99295>,
+    <0.100929,0,0.994894>,
+    <0.31553,0,0.948915>,
+    <0.514934,0,0.85723>,
+    <0.689533,0,0.724254>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face238
+
+// face number239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body239 = mesh2{
+  vertex_vectors {
+    4,
+    <25.9398,-5,16.2117>,
+    <25.9398,5,16.2117>,
+    <25.692,5,16.059>,
+    <25.692,-5,16.059>,
+  }
+  normal_vectors {
+    4,
+    <-0.524543,-0,0.851384>,
+    <-0.524543,-0,0.851384>,
+    <-0.524543,-0,0.851384>,
+    <-0.524543,-0,0.851384>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face239
+
+// face number240 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body240 = mesh2{
+  vertex_vectors {
+    5,
+    <27.045,-5,16.6316>,
+    <27.045,5,16.6316>,
+    <25.9398,5,16.2117>,
+    <25.9398,-5,16.2117>,
+    <26.2947,0,16.3769>,
+  }
+  normal_vectors {
+    5,
+    <-0.272722,-0,0.962093>,
+    <-0.272722,-0,0.962093>,
+    <-0.481317,-0,0.876547>,
+    <-0.481317,-0,0.876547>,
+    <-0.378672,-0,0.925531>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face240
+
+// face number241 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body241 = mesh2{
+  vertex_vectors {
+    13,
+    <27.5502,-5,16.7584>,
+    <27.045,-5,16.6316>,
+    <28.9837,-4.56445,16.9852>,
+    <30.5629,-4.109,17.0613>,
+    <30.5629,4.109,17.0613>,
+    <27.5502,5,16.7584>,
+    <28.9837,4.56445,16.9852>,
+    <27.045,5,16.6316>,
+    <27.8935,-0.217773,16.8291>,
+    <29.0833,1.94562,16.9948>,
+    <29.0833,-2.16339,16.9948>,
+    <27.9332,3.47281,16.8365>,
+    <27.9332,-3.58169,16.8365>,
+  }
+  normal_vectors {
+    13,
+    <-0.217765,-0,0.976001>,
+    <-0.270333,-0,0.962767>,
+    <-0.100055,-0,0.994982>,
+    <3.87409e-05,-0,1>,
+    <3.87409e-05,-0,1>,
+    <-0.217765,-0,0.976001>,
+    <-0.100055,-0,0.994982>,
+    <-0.270333,-0,0.962767>,
+    <-0.18616,-0,0.982519>,
+    <-0.0930141,-0,0.995665>,
+    <-0.0930141,-0,0.995665>,
+    <-0.18268,-0,0.983172>,
+    <-0.18268,-0,0.983172>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face241
+
+// face number242 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body242 = mesh2{
+  vertex_vectors {
+    8,
+    <31.4029,-4.109,15.4609>,
+    <30.4432,-4.56443,14.2045>,
+    <29.4422,-5,13.1536>,
+    <28.8623,-5,14.3814>,
+    <28.2313,-5,15.5837>,
+    <27.5502,-5,16.7584>,
+    <28.9837,-4.56445,16.9852>,
+    <30.5629,-4.109,17.0613>,
+  }
+  normal_vectors {
+    8,
+    <0.276005,-0.951502,0.135888>,
+    <0.278789,-0.951502,0.130081>,
+    <0.280886,-0.951502,0.125489>,
+    <0.275355,-0.951502,0.137202>,
+    <0.269334,-0.951502,0.148673>,
+    <0.262837,-0.951502,0.159879>,
+    <0.265425,-0.951502,0.155545>,
+    <0.268623,-0.951502,0.149955>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face242
+
+// face number243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body243 = mesh2{
+  vertex_vectors {
+    13,
+    <29.0508,-5,12.8098>,
+    <29.4422,-5,13.1536>,
+    <29.0508,5,12.8098>,
+    <29.4422,5,13.1536>,
+    <30.4431,4.56445,14.2045>,
+    <31.4029,4.109,15.4609>,
+    <31.4029,-4.109,15.4609>,
+    <30.4432,-4.56443,14.2045>,
+    <29.6954,-0.217773,13.3959>,
+    <30.5077,1.94562,14.281>,
+    <30.5077,-2.16339,14.281>,
+    <29.724,3.47281,13.4243>,
+    <29.724,-3.58169,13.4243>,
+  }
+  normal_vectors {
+    13,
+    <0.638775,-0,-0.769394>,
+    <0.679529,-0,-0.733649>,
+    <0.638775,-0,-0.769394>,
+    <0.679529,-0,-0.733649>,
+    <0.762016,-0,-0.647558>,
+    <0.823006,-0,-0.568033>,
+    <0.823006,-0,-0.568033>,
+    <0.76202,-0,-0.647553>,
+    <0.702847,-0,-0.711342>,
+    <0.766578,-0,-0.642151>,
+    <0.766578,-0,-0.642151>,
+    <0.705361,-0,-0.708848>,
+    <0.705361,-0,-0.708848>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face243
+
+// face number244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body244 = mesh2{
+  vertex_vectors {
+    5,
+    <28.0775,-5,12.1388>,
+    <28.0775,5,12.1388>,
+    <29.0508,5,12.8098>,
+    <29.0508,-5,12.8098>,
+    <28.4151,0,12.337>,
+  }
+  normal_vectors {
+    5,
+    <0.447964,-0,-0.894051>,
+    <0.447964,-0,-0.894051>,
+    <0.636864,-0,-0.770977>,
+    <0.636864,-0,-0.770977>,
+    <0.546587,-0,-0.837402>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face244
+
+// face number245 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body245 = mesh2{
+  vertex_vectors {
+    4,
+    <27.811,-5,12.0215>,
+    <27.811,5,12.0215>,
+    <28.0775,5,12.1388>,
+    <28.0775,-5,12.1388>,
+  }
+  normal_vectors {
+    4,
+    <0.402701,-0,-0.915332>,
+    <0.402701,-0,-0.915332>,
+    <0.402701,-0,-0.915332>,
+    <0.402701,-0,-0.915332>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face245
+
+// face number246 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body246 = mesh2{
+  vertex_vectors {
+    16,
+    <27.3112,-5,10.8162>,
+    <27.3112,5,10.8162>,
+    <27.257,5,11.0147>,
+    <27.2473,5,11.2202>,
+    <27.2828,5,11.4229>,
+    <27.3616,5,11.613>,
+    <27.48,5,11.7812>,
+    <27.6322,5,11.9197>,
+    <27.811,5,12.0215>,
+    <27.811,-5,12.0215>,
+    <27.257,-5,11.0147>,
+    <27.2473,-5,11.2202>,
+    <27.2828,-5,11.4229>,
+    <27.3616,-5,11.613>,
+    <27.48,-5,11.7812>,
+    <27.6322,-5,11.9197>,
+  }
+  normal_vectors {
+    16,
+    <0.929918,0,0.367766>,
+    <0.929918,0,0.367766>,
+    <0.987749,0,0.156052>,
+    <0.998002,-0,-0.0631805>,
+    <0.960184,-0,-0.279369>,
+    <0.876115,-0,-0.482101>,
+    <0.749848,-0,-0.661611>,
+    <0.58746,-0,-0.809253>,
+    <0.396776,-0,-0.917916>,
+    <0.396776,-0,-0.917916>,
+    <0.987749,0,0.156052>,
+    <0.998002,-0,-0.0631805>,
+    <0.960184,-0,-0.279369>,
+    <0.876115,-0,-0.482101>,
+    <0.749848,-0,-0.661611>,
+    <0.58746,-0,-0.809253>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face246
+
+// face number247 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body247 = mesh2{
+  vertex_vectors {
+    8,
+    <27.6152,-5,10.0146>,
+    <27.6152,5,10.0146>,
+    <27.5164,5,10.2828>,
+    <27.4151,5,10.55>,
+    <27.3112,5,10.8162>,
+    <27.3112,-5,10.8162>,
+    <27.5164,-5,10.2828>,
+    <27.4151,-5,10.55>,
+  }
+  normal_vectors {
+    8,
+    <0.940091,0,0.340923>,
+    <0.940091,0,0.340923>,
+    <0.93673,0,0.350053>,
+    <0.93328,0,0.359149>,
+    <0.929742,0,0.368211>,
+    <0.929742,0,0.368211>,
+    <0.93673,0,0.350053>,
+    <0.93328,0,0.359149>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face247
+
+// face number248 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body248 = mesh2{
+  vertex_vectors {
+    16,
+    <28.7886,-5,9.44386>,
+    <28.7886,5,9.44386>,
+    <28.5872,5,9.40156>,
+    <28.3815,5,9.40422>,
+    <28.1813,5,9.45168>,
+    <27.9963,5,9.54169>,
+    <27.8353,5,9.66988>,
+    <27.7062,5,9.8301>,
+    <27.6152,5,10.0146>,
+    <27.6152,-5,10.0146>,
+    <28.5872,-5,9.40156>,
+    <28.3815,-5,9.40422>,
+    <28.1813,-5,9.45168>,
+    <27.9963,-5,9.54169>,
+    <27.8353,-5,9.66988>,
+    <27.7062,-5,9.8301>,
+  }
+  normal_vectors {
+    16,
+    <-0.311699,-0,0.950181>,
+    <-0.311699,-0,0.950181>,
+    <-0.0969145,-0,0.995293>,
+    <0.122539,0,0.992464>,
+    <0.336089,0,0.94183>,
+    <0.533452,0,0.84583>,
+    <0.705119,0,0.709089>,
+    <0.842822,0,0.538193>,
+    <0.939928,0,0.341372>,
+    <0.939928,0,0.341372>,
+    <-0.0969145,-0,0.995293>,
+    <0.122539,0,0.992464>,
+    <0.336089,0,0.94183>,
+    <0.533452,0,0.84583>,
+    <0.705119,0,0.709089>,
+    <0.842822,0,0.538193>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face248
+
+// face number249 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body249 = mesh2{
+  vertex_vectors {
+    4,
+    <29.0658,-5,9.53281>,
+    <29.0658,5,9.53281>,
+    <28.7886,5,9.44386>,
+    <28.7886,-5,9.44386>,
+  }
+  normal_vectors {
+    4,
+    <-0.305551,-0,0.952176>,
+    <-0.305551,-0,0.952176>,
+    <-0.305551,-0,0.952176>,
+    <-0.305551,-0,0.952176>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face249
+
+// face number250 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body250 = mesh2{
+  vertex_vectors {
+    5,
+    <30.2393,-5,9.67598>,
+    <30.2393,5,9.67598>,
+    <29.0658,5,9.53281>,
+    <29.0658,-5,9.53281>,
+    <29.4499,0,9.60832>,
+  }
+  normal_vectors {
+    5,
+    <-0.0345529,-0,0.999403>,
+    <-0.0345529,-0,0.999403>,
+    <-0.25756,-0,0.966262>,
+    <-0.25756,-0,0.966262>,
+    <-0.146174,-0,0.989259>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face250
+
+// face number251 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body251 = mesh2{
+  vertex_vectors {
+    13,
+    <30.7602,-5,9.67819>,
+    <30.2393,-5,9.67598>,
+    <32.2063,-4.56445,9.55534>,
+    <33.7579,-4.109,9.25134>,
+    <33.7579,4.109,9.25134>,
+    <30.7602,5,9.67819>,
+    <32.2063,4.56445,9.55534>,
+    <30.2393,5,9.67598>,
+    <31.1105,0.217773,9.6647>,
+    <32.3053,2.16339,9.54088>,
+    <32.3053,-1.94562,9.54088>,
+    <31.1507,3.58169,9.66243>,
+    <31.1507,-3.47281,9.66243>,
+  }
+  normal_vectors {
+    13,
+    <0.022135,-0,0.999755>,
+    <-0.0320724,-0,0.999486>,
+    <0.140967,-0,0.990014>,
+    <0.239353,-0,0.970933>,
+    <0.239353,-0,0.970933>,
+    <0.022135,-0,0.999755>,
+    <0.140967,-0,0.990014>,
+    <-0.0320724,-0,0.999486>,
+    <0.0543816,-0,0.99852>,
+    <0.147967,-0,0.988992>,
+    <0.147967,-0,0.988992>,
+    <0.0579173,-0,0.998321>,
+    <0.0579173,-0,0.998321>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,4,10>,
+    <4,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face251
+
+// face number252 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body252 = mesh2{
+  vertex_vectors {
+    8,
+    <34.1904,-4.109,7.4964>,
+    <32.9579,-4.56443,6.50624>,
+    <31.7345,-5,5.72537>,
+    <31.4653,-5,7.05627>,
+    <31.1404,-5,8.37465>,
+    <30.7602,-5,9.67819>,
+    <32.2063,-4.56445,9.55534>,
+    <33.7579,-4.109,9.25134>,
+  }
+  normal_vectors {
+    8,
+    <0.300505,-0.951502,0.0658871>,
+    <0.301819,-0.951502,0.0595822>,
+    <0.302756,-0.951502,0.0546216>,
+    <0.300188,-0.951502,0.0673187>,
+    <0.297088,-0.951502,0.0798965>,
+    <0.293461,-0.951502,0.0923326>,
+    <0.294936,-0.951502,0.0875051>,
+    <0.296704,-0.951502,0.0813116>,
+  }
+  face_indices {
+    6,
+    <1,3,2>,
+    <4,3,1>,
+    <6,5,4>,
+    <6,4,1>,
+    <7,1,0>,
+    <7,6,1>,
+  }
+} // end of Face252
+
+// face number253 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body253 = mesh2{
+  vertex_vectors {
+    13,
+    <31.2723,-5,5.48527>,
+    <31.7345,-5,5.72537>,
+    <31.2723,5,5.48527>,
+    <31.7345,5,5.72537>,
+    <32.9579,4.56445,6.50619>,
+    <34.1904,4.109,7.4964>,
+    <34.1904,-4.109,7.4964>,
+    <32.9579,-4.56443,6.50624>,
+    <32.0384,-0.217773,5.90009>,
+    <33.0388,1.94562,6.56501>,
+    <33.0388,-2.16339,6.56501>,
+    <32.073,3.47281,5.9208>,
+    <32.073,-3.58169,5.9208>,
+  }
+  normal_vectors {
+    13,
+    <0.436085,-0,-0.899905>,
+    <0.484209,-0,-0.874952>,
+    <0.436085,-0,-0.899905>,
+    <0.484209,-0,-0.874952>,
+    <0.584902,-0,-0.811104>,
+    <0.663152,-0,-0.748485>,
+    <0.663152,-0,-0.748485>,
+    <0.584908,-0,-0.8111>,
+    <0.512188,-0,-0.858873>,
+    <0.590626,-0,-0.806945>,
+    <0.590626,-0,-0.806945>,
+    <0.515226,-0,-0.857054>,
+    <0.515226,-0,-0.857054>,
+  }
+  face_indices {
+    16,
+    <0,2,8>,
+    <4,5,9>,
+    <5,6,9>,
+    <6,7,10>,
+    <9,6,10>,
+    <8,9,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <8,2,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <1,0,12>,
+    <7,1,12>,
+    <10,7,12>,
+    <8,10,12>,
+    <0,8,12>,
+  }
+} // end of Face253
+
+// face number254 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body254 = mesh2{
+  vertex_vectors {
+    5,
+    <30.1666,-5,5.06666>,
+    <30.1666,5,5.06666>,
+    <31.2723,5,5.48527>,
+    <31.2723,-5,5.48527>,
+    <30.5418,0,5.17831>,
+  }
+  normal_vectors {
+    5,
+    <0.220987,-0,-0.975277>,
+    <0.220987,-0,-0.975277>,
+    <0.433851,-0,-0.900985>,
+    <0.433851,-0,-0.900985>,
+    <0.330301,-0,-0.943876>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face254
+
+// face number255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body255 = mesh2{
+  vertex_vectors {
+    4,
+    <29.8798,-5,5.0166>,
+    <29.8798,5,5.0166>,
+    <30.1666,5,5.06666>,
+    <30.1666,-5,5.06666>,
+  }
+  normal_vectors {
+    4,
+    <0.171946,-0,-0.985106>,
+    <0.171946,-0,-0.985106>,
+    <0.171946,-0,-0.985106>,
+    <0.171946,-0,-0.985106>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face255
+
+// face number256 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body256 = mesh2{
+  vertex_vectors {
+    16,
+    <29.1061,-5,3.96591>,
+    <29.1061,5,3.96591>,
+    <29.1009,5,4.1716>,
+    <29.1408,5,4.37346>,
+    <29.2237,5,4.56176>,
+    <29.3457,5,4.72744>,
+    <29.5009,5,4.86251>,
+    <29.6819,5,4.96047>,
+    <29.8798,5,5.0166>,
+    <29.8798,-5,5.0166>,
+    <29.1009,-5,4.1716>,
+    <29.1408,-5,4.37346>,
+    <29.2237,-5,4.56176>,
+    <29.3457,-5,4.72744>,
+    <29.5009,-5,4.86251>,
+    <29.6819,-5,4.96047>,
+  }
+  normal_vectors {
+    16,
+    <0.990909,0,0.134536>,
+    <0.990909,0,0.134536>,
+    <0.996392,-0,-0.0848672>,
+    <0.953882,-0,-0.300182>,
+    <0.865426,-0,-0.501037>,
+    <0.735283,-0,-0.67776>,
+    <0.569723,-0,-0.821837>,
+    <0.376722,-0,-0.926326>,
+    <0.165575,-0,-0.986197>,
+    <0.165575,-0,-0.986197>,
+    <0.996392,-0,-0.0848672>,
+    <0.953882,-0,-0.300182>,
+    <0.865426,-0,-0.501037>,
+    <0.735283,-0,-0.67776>,
+    <0.569723,-0,-0.821837>,
+    <0.376722,-0,-0.926326>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face256
+
+// face number257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body257 = mesh2{
+  vertex_vectors {
+    8,
+    <29.2094,-5,3.11486>,
+    <29.2094,5,3.11486>,
+    <29.1777,5,3.39888>,
+    <29.1433,5,3.68257>,
+    <29.1061,5,3.96591>,
+    <29.1061,-5,3.96591>,
+    <29.1777,-5,3.39888>,
+    <29.1433,-5,3.68257>,
+  }
+  normal_vectors {
+    8,
+    <0.994362,0,0.106038>,
+    <0.994362,0,0.106038>,
+    <0.993283,0,0.115706>,
+    <0.992111,0,0.125364>,
+    <0.990844,0,0.13501>,
+    <0.990844,0,0.13501>,
+    <0.993283,0,0.115706>,
+    <0.992111,0,0.125364>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face257
+
+// face number258 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body258 = mesh2{
+  vertex_vectors {
+    16,
+    <30.2121,-5,2.27988>,
+    <30.2121,5,2.27988>,
+    <30.0065,5,2.287>,
+    <29.8073,5,2.33881>,
+    <29.6243,5,2.43282>,
+    <29.4662,5,2.56448>,
+    <29.3406,5,2.72746>,
+    <29.2536,5,2.91392>,
+    <29.2094,5,3.11486>,
+    <29.2094,-5,3.11486>,
+    <30.0065,-5,2.287>,
+    <29.8073,-5,2.33881>,
+    <29.6243,-5,2.43282>,
+    <29.4662,-5,2.56448>,
+    <29.3406,-5,2.72746>,
+    <29.2536,-5,2.91392>,
+  }
+  normal_vectors {
+    16,
+    <-0.0752489,-0,0.997165>,
+    <-0.0752489,-0,0.997165>,
+    <0.144091,0,0.989564>,
+    <0.356491,0,0.934299>,
+    <0.551718,0,0.83403>,
+    <0.720371,0,0.693589>,
+    <0.854325,0,0.519739>,
+    <0.947129,0,0.320853>,
+    <0.994311,0,0.106513>,
+    <0.994311,0,0.106513>,
+    <0.144091,0,0.989564>,
+    <0.356491,0,0.934299>,
+    <0.551718,0,0.83403>,
+    <0.720371,0,0.693589>,
+    <0.854325,0,0.519739>,
+    <0.947129,0,0.320853>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face258
+
+// face number259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body259 = mesh2{
+  vertex_vectors {
+    4,
+    <30.5025,-5,2.29991>,
+    <30.5025,5,2.29991>,
+    <30.2121,5,2.27988>,
+    <30.2121,-5,2.27988>,
+  }
+  normal_vectors {
+    4,
+    <-0.068802,-0,0.99763>,
+    <-0.068802,-0,0.99763>,
+    <-0.068802,-0,0.99763>,
+    <-0.068802,-0,0.99763>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face259
+
+// face number260 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body260 = mesh2{
+  vertex_vectors {
+    5,
+    <31.6763,-5,2.15807>,
+    <31.6763,5,2.15807>,
+    <30.5025,5,2.29991>,
+    <30.5025,-5,2.29991>,
+    <30.8936,0,2.28129>,
+  }
+  normal_vectors {
+    5,
+    <0.205624,-0,0.978631>,
+    <0.205624,-0,0.978631>,
+    <-0.0188336,-0,0.999823>,
+    <-0.0188336,-0,0.999823>,
+    <0.0948188,-0,0.995495>,
+  }
+  face_indices {
+    4,
+    <0,1,4>,
+    <1,2,4>,
+    <2,3,4>,
+    <3,0,4>,
+  }
+} // end of Face260
+
+// face number261 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body261 = mesh2{
+  vertex_vectors {
+    13,
+    <32.1825,-5,2.03556>,
+    <31.6763,-5,2.15807>,
+    <33.5572,-4.56445,1.5702>,
+    <34.9909,-4.109,0.903734>,
+    <34.9909,4.109,0.903734>,
+    <32.1825,5,2.03556>,
+    <33.5572,4.56445,1.5702>,
+    <31.6763,5,2.15807>,
+    <32.5194,-0.217773,1.93864>,
+    <33.6499,1.94562,1.53247>,
+    <33.6499,-2.16339,1.53247>,
+    <32.5579,3.47281,1.92681>,
+    <32.5579,-3.58169,1.92681>,
+  }
+  normal_vectors {
+    13,
+    <0.260749,-0,0.965407>,
+    <0.208052,-0,0.978118>,
+    <0.373796,-0,0.927511>,
+    <0.464757,-0,0.885438>,
+    <0.464757,-0,0.885438>,
+    <0.260749,-0,0.965407>,
+    <0.373796,-0,0.927511>,
+    <0.208052,-0,0.978118>,
+    <0.291763,-0,0.956491>,
+    <0.380349,-0,0.924843>,
+    <0.380349,-0,0.924843>,
+    <0.295148,-0,0.955451>,
+    <0.295148,-0,0.955451>,
+  }
+  face_indices {
+    16,
+    <7,1,8>,
+    <3,4,9>,
+    <4,6,9>,
+    <2,3,10>,
+    <3,9,10>,
+    <9,8,10>,
+    <6,5,11>,
+    <5,7,11>,
+    <7,8,11>,
+    <9,6,11>,
+    <8,9,11>,
+    <1,0,12>,
+    <0,2,12>,
+    <10,8,12>,
+    <2,10,12>,
+    <8,1,12>,
+  }
+} // end of Face261
+
+// face number262 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body262 = mesh2{
+  vertex_vectors {
+    7,
+    <32.2468,-5,-1e-15>,
+    <35.0026,-4.109,-1e-15>,
+    <32.2397,-5,0.678921>,
+    <32.2182,-5,1.35754>,
+    <32.1825,-5,2.03556>,
+    <33.5572,-4.56445,1.5702>,
+    <34.9909,-4.109,0.903734>,
+  }
+  normal_vectors {
+    7,
+    <0.307644,-0.951502,-2.0933e-16>,
+    <0.307644,-0.951502,-2.0933e-16>,
+    <0.307575,-0.951502,0.00647709>,
+    <0.307371,-0.951502,0.0129513>,
+    <0.30703,-0.951502,0.0194198>,
+    <0.307307,-0.951502,0.0143794>,
+    <0.307541,-0.951502,0.00794307>,
+  }
+  face_indices {
+    5,
+    <5,0,1>,
+    <5,2,0>,
+    <5,3,2>,
+    <5,4,3>,
+    <6,5,1>,
+  }
+} // end of Face262
+
+// face number263 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body263 = mesh2{
+  vertex_vectors {
+    7,
+    <32.1825,-5,-2.03556>,
+    <32.2182,-5,-1.35754>,
+    <32.2397,-5,-0.678921>,
+    <32.2468,-5,-1e-15>,
+    <35.0026,-4.109,-1e-15>,
+    <34.9909,-4.109,-0.903734>,
+    <33.5573,-4.56443,-1.57017>,
+  }
+  normal_vectors {
+    7,
+    <0.30703,-0.951502,-0.0194198>,
+    <0.307371,-0.951502,-0.0129513>,
+    <0.307575,-0.951502,-0.00647709>,
+    <0.307644,-0.951502,-2.0933e-16>,
+    <0.307644,-0.951502,-2.0933e-16>,
+    <0.307541,-0.951502,-0.00794307>,
+    <0.307307,-0.951502,-0.0143791>,
+  }
+  face_indices {
+    5,
+    <6,1,0>,
+    <6,2,1>,
+    <3,2,6>,
+    <4,6,5>,
+    <4,3,6>,
+  }
+} // end of Face263
+
+// face number264 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body264 = mesh2{
+  vertex_vectors {
+    106,
+    <27.3425,-5,-1e-15>,
+    <27.1432,-5,3.29578>,
+    <26.548,-5,6.5435>,
+    <25.5657,-5,9.6958>,
+    <24.2106,-5,12.7067>,
+    <22.5025,-5,15.5323>,
+    <20.4662,-5,18.1315>,
+    <18.1315,-5,20.4662>,
+    <15.5323,-5,22.5025>,
+    <12.7067,-5,24.2106>,
+    <9.6958,-5,25.5657>,
+    <6.5435,-5,26.548>,
+    <3.29578,-5,27.1432>,
+    <1.38168e-14,-5,27.3425>,
+    <-3.29578,-5,27.1432>,
+    <-6.5435,-5,26.548>,
+    <-9.6958,-5,25.5657>,
+    <-12.7067,-5,24.2106>,
+    <-15.5323,-5,22.5025>,
+    <-18.1315,-5,20.4662>,
+    <-20.4662,-5,18.1315>,
+    <-22.5025,-5,15.5323>,
+    <-24.2106,-5,12.7067>,
+    <-25.5657,-5,9.6958>,
+    <-26.548,-5,6.5435>,
+    <-27.1432,-5,3.29578>,
+    <-27.3425,-5,5.08086e-14>,
+    <-27.1432,-5,-3.29578>,
+    <-26.548,-5,-6.5435>,
+    <-25.5657,-5,-9.6958>,
+    <-24.2106,-5,-12.7067>,
+    <-22.5025,-5,-15.5323>,
+    <-20.4662,-5,-18.1315>,
+    <-18.1315,-5,-20.4662>,
+    <-15.5323,-5,-22.5025>,
+    <-12.7067,-5,-24.2106>,
+    <-9.6958,-5,-25.5657>,
+    <-6.5435,-5,-26.548>,
+    <-3.29578,-5,-27.1432>,
+    <-2.93078e-14,-5,-27.3425>,
+    <3.29578,-5,-27.1432>,
+    <6.5435,-5,-26.548>,
+    <9.6958,-5,-25.5657>,
+    <12.7067,-5,-24.2106>,
+    <15.5323,-5,-22.5025>,
+    <18.1315,-5,-20.4662>,
+    <20.4662,-5,-18.1315>,
+    <22.5025,-5,-15.5323>,
+    <24.2106,-5,-12.7067>,
+    <25.5657,-5,-9.6958>,
+    <26.548,-5,-6.5435>,
+    <27.1432,-5,-3.29578>,
+    <27.3425,-5,-1e-15>,
+    <27.3425,-1.8502,0>,
+    <27.3425,-1.8502,0>,
+    <27.1432,-1.8502,3.29578>,
+    <26.548,-1.8502,6.5435>,
+    <25.5657,-1.8502,9.6958>,
+    <24.2106,-1.8502,12.7067>,
+    <22.5025,-1.8502,15.5323>,
+    <20.4662,-1.8502,18.1315>,
+    <18.1315,-1.8502,20.4662>,
+    <15.5323,-1.8502,22.5025>,
+    <12.7067,-1.8502,24.2106>,
+    <9.6958,-1.8502,25.5657>,
+    <6.5435,-1.8502,26.548>,
+    <3.29578,-1.8502,27.1432>,
+    <1.38168e-14,-1.8502,27.3425>,
+    <-3.29578,-1.8502,27.1432>,
+    <-6.5435,-1.8502,26.548>,
+    <-9.6958,-1.8502,25.5657>,
+    <-12.7067,-1.8502,24.2106>,
+    <-15.5323,-1.8502,22.5025>,
+    <-18.1315,-1.8502,20.4662>,
+    <-20.4662,-1.8502,18.1315>,
+    <-22.5025,-1.8502,15.5323>,
+    <-24.2106,-1.8502,12.7067>,
+    <-25.5657,-1.8502,9.6958>,
+    <-26.548,-1.8502,6.5435>,
+    <-27.1432,-1.8502,3.29578>,
+    <-27.3425,-1.8502,5.15086e-14>,
+    <-27.1432,-1.8502,-3.29578>,
+    <-26.548,-1.8502,-6.5435>,
+    <-25.5657,-1.8502,-9.6958>,
+    <-24.2106,-1.8502,-12.7067>,
+    <-22.5025,-1.8502,-15.5323>,
+    <-20.4662,-1.8502,-18.1315>,
+    <-18.1315,-1.8502,-20.4662>,
+    <-15.5323,-1.8502,-22.5025>,
+    <-12.7067,-1.8502,-24.2106>,
+    <-9.6958,-1.8502,-25.5657>,
+    <-6.5435,-1.8502,-26.548>,
+    <-3.29578,-1.8502,-27.1432>,
+    <-2.93078e-14,-1.8502,-27.3425>,
+    <3.29578,-1.8502,-27.1432>,
+    <6.5435,-1.8502,-26.548>,
+    <9.6958,-1.8502,-25.5657>,
+    <12.7067,-1.8502,-24.2106>,
+    <15.5323,-1.8502,-22.5025>,
+    <18.1315,-1.8502,-20.4662>,
+    <20.4662,-1.8502,-18.1315>,
+    <22.5025,-1.8502,-15.5323>,
+    <24.2106,-1.8502,-12.7067>,
+    <25.5657,-1.8502,-9.6958>,
+    <26.548,-1.8502,-6.5435>,
+    <27.1432,-1.8502,-3.29578>,
+  }
+  normal_vectors {
+    106,
+    <-1,-0,0>,
+    <-0.992709,2.65181e-17,-0.120537>,
+    <-0.970942,5.26494e-17,-0.239316>,
+    <-0.935016,7.80131e-17,-0.354605>,
+    <-0.885456,1.02239e-16,-0.464723>,
+    <-0.822984,1.24974e-16,-0.568065>,
+    <-0.748511,1.45887e-16,-0.663123>,
+    <-0.663123,1.64672e-16,-0.748511>,
+    <-0.568065,1.81056e-16,-0.822984>,
+    <-0.464723,1.948e-16,-0.885456>,
+    <-0.354605,2.05704e-16,-0.935016>,
+    <-0.239316,2.13607e-16,-0.970942>,
+    <-0.120537,2.18396e-16,-0.992709>,
+    <-5.05322e-16,2.2e-16,-1>,
+    <0.120537,2.18396e-16,-0.992709>,
+    <0.239316,2.13607e-16,-0.970942>,
+    <0.354605,2.05704e-16,-0.935016>,
+    <0.464723,1.948e-16,-0.885456>,
+    <0.568065,1.81056e-16,-0.822984>,
+    <0.663123,1.64672e-16,-0.748511>,
+    <0.748511,1.45887e-16,-0.663123>,
+    <0.822984,1.24974e-16,-0.568065>,
+    <0.885456,1.02239e-16,-0.464723>,
+    <0.935016,7.80131e-17,-0.354605>,
+    <0.970942,5.26494e-17,-0.239316>,
+    <0.992709,2.65181e-17,-0.120537>,
+    <1,4.17741e-31,-1.89882e-15>,
+    <0.992709,-2.65181e-17,0.120537>,
+    <0.970942,-5.26494e-17,0.239316>,
+    <0.935016,-7.80131e-17,0.354605>,
+    <0.885456,-1.02239e-16,0.464723>,
+    <0.822984,-1.24974e-16,0.568065>,
+    <0.748511,-1.45887e-16,0.663123>,
+    <0.663123,-1.64672e-16,0.748511>,
+    <0.568065,-1.81056e-16,0.822984>,
+    <0.464723,-1.948e-16,0.885456>,
+    <0.354605,-2.05704e-16,0.935016>,
+    <0.239316,-2.13607e-16,0.970942>,
+    <0.120537,-2.18396e-16,0.992709>,
+    <1.07188e-15,-2.2e-16,1>,
+    <-0.120537,-2.18396e-16,0.992709>,
+    <-0.239316,-2.13607e-16,0.970942>,
+    <-0.354605,-2.05704e-16,0.935016>,
+    <-0.464723,-1.948e-16,0.885456>,
+    <-0.568065,-1.81056e-16,0.822984>,
+    <-0.663123,-1.64672e-16,0.748511>,
+    <-0.748511,-1.45887e-16,0.663123>,
+    <-0.822984,-1.24974e-16,0.568065>,
+    <-0.885456,-1.02239e-16,0.464723>,
+    <-0.935016,-7.80131e-17,0.354605>,
+    <-0.970942,-5.26494e-17,0.239316>,
+    <-0.992709,-2.65181e-17,0.120537>,
+    <-1,-0,0>,
+    <-1,-0,0>,
+    <-1,-0,0>,
+    <-0.992709,2.65181e-17,-0.120537>,
+    <-0.970942,5.26494e-17,-0.239316>,
+    <-0.935016,7.80131e-17,-0.354605>,
+    <-0.885456,1.02239e-16,-0.464723>,
+    <-0.822984,1.24974e-16,-0.568065>,
+    <-0.748511,1.45887e-16,-0.663123>,
+    <-0.663123,1.64672e-16,-0.748511>,
+    <-0.568065,1.81056e-16,-0.822984>,
+    <-0.464723,1.948e-16,-0.885456>,
+    <-0.354605,2.05704e-16,-0.935016>,
+    <-0.239316,2.13607e-16,-0.970942>,
+    <-0.120537,2.18396e-16,-0.992709>,
+    <-5.05322e-16,2.2e-16,-1>,
+    <0.120537,2.18396e-16,-0.992709>,
+    <0.239316,2.13607e-16,-0.970942>,
+    <0.354605,2.05704e-16,-0.935016>,
+    <0.464723,1.948e-16,-0.885456>,
+    <0.568065,1.81056e-16,-0.822984>,
+    <0.663123,1.64672e-16,-0.748511>,
+    <0.748511,1.45887e-16,-0.663123>,
+    <0.822984,1.24974e-16,-0.568065>,
+    <0.885456,1.02239e-16,-0.464723>,
+    <0.935016,7.80131e-17,-0.354605>,
+    <0.970942,5.26494e-17,-0.239316>,
+    <0.992709,2.65181e-17,-0.120537>,
+    <1,4.17741e-31,-1.89882e-15>,
+    <0.992709,-2.65181e-17,0.120537>,
+    <0.970942,-5.26494e-17,0.239316>,
+    <0.935016,-7.80131e-17,0.354605>,
+    <0.885456,-1.02239e-16,0.464723>,
+    <0.822984,-1.24974e-16,0.568065>,
+    <0.748511,-1.45887e-16,0.663123>,
+    <0.663123,-1.64672e-16,0.748511>,
+    <0.568065,-1.81056e-16,0.822984>,
+    <0.464723,-1.948e-16,0.885456>,
+    <0.354605,-2.05704e-16,0.935016>,
+    <0.239316,-2.13607e-16,0.970942>,
+    <0.120537,-2.18396e-16,0.992709>,
+    <1.07188e-15,-2.2e-16,1>,
+    <-0.120537,-2.18396e-16,0.992709>,
+    <-0.239316,-2.13607e-16,0.970942>,
+    <-0.354605,-2.05704e-16,0.935016>,
+    <-0.464723,-1.948e-16,0.885456>,
+    <-0.568065,-1.81056e-16,0.822984>,
+    <-0.663123,-1.64672e-16,0.748511>,
+    <-0.748511,-1.45887e-16,0.663123>,
+    <-0.822984,-1.24974e-16,0.568065>,
+    <-0.885456,-1.02239e-16,0.464723>,
+    <-0.935016,-7.80131e-17,0.354605>,
+    <-0.970942,-5.26494e-17,0.239316>,
+    <-0.992709,-2.65181e-17,0.120537>,
+  }
+  face_indices {
+    104,
+    <0,1,55>,
+    <54,0,55>,
+    <1,2,56>,
+    <55,1,56>,
+    <2,3,57>,
+    <56,2,57>,
+    <3,4,58>,
+    <4,5,58>,
+    <57,3,58>,
+    <5,6,59>,
+    <58,5,59>,
+    <59,6,60>,
+    <6,7,61>,
+    <60,6,61>,
+    <7,8,62>,
+    <61,7,62>,
+    <8,9,63>,
+    <62,8,63>,
+    <9,10,64>,
+    <63,9,64>,
+    <10,11,65>,
+    <11,12,65>,
+    <64,10,65>,
+    <65,12,66>,
+    <12,13,67>,
+    <66,12,67>,
+    <13,14,68>,
+    <67,13,68>,
+    <14,15,69>,
+    <68,14,69>,
+    <15,16,70>,
+    <69,15,70>,
+    <16,17,71>,
+    <70,16,71>,
+    <17,18,72>,
+    <71,17,72>,
+    <18,19,73>,
+    <72,18,73>,
+    <19,20,74>,
+    <73,19,74>,
+    <20,21,75>,
+    <21,22,75>,
+    <74,20,75>,
+    <75,22,76>,
+    <76,22,77>,
+    <22,23,77>,
+    <77,23,78>,
+    <23,24,78>,
+    <24,25,78>,
+    <78,25,79>,
+    <79,25,80>,
+    <25,26,80>,
+    <80,26,81>,
+    <26,27,81>,
+    <81,27,82>,
+    <27,28,82>,
+    <82,28,83>,
+    <28,29,83>,
+    <29,30,84>,
+    <83,29,84>,
+    <30,31,85>,
+    <84,30,85>,
+    <31,32,86>,
+    <85,31,86>,
+    <32,33,87>,
+    <86,32,87>,
+    <33,34,88>,
+    <87,33,88>,
+    <34,35,89>,
+    <88,34,89>,
+    <35,36,90>,
+    <89,35,90>,
+    <36,37,91>,
+    <37,38,91>,
+    <90,36,91>,
+    <91,38,92>,
+    <38,39,93>,
+    <92,38,93>,
+    <39,40,94>,
+    <93,39,94>,
+    <40,41,95>,
+    <41,42,95>,
+    <94,40,95>,
+    <95,42,96>,
+    <42,43,97>,
+    <43,44,97>,
+    <96,42,97>,
+    <97,44,98>,
+    <44,45,99>,
+    <45,46,99>,
+    <98,44,99>,
+    <99,46,100>,
+    <46,47,101>,
+    <47,48,101>,
+    <100,46,101>,
+    <101,48,102>,
+    <48,49,103>,
+    <49,50,103>,
+    <102,48,103>,
+    <103,50,104>,
+    <104,50,105>,
+    <50,51,105>,
+    <51,52,105>,
+    <105,52,53>,
+  }
+} // end of Face264
+
+// face number265 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body265 = mesh2{
+  vertex_vectors {
+    8,
+    <30.7602,5,-9.67819>,
+    <32.2063,4.56445,-9.55534>,
+    <33.7579,4.109,-9.25134>,
+    <31.7345,5,-5.72537>,
+    <31.4653,5,-7.05627>,
+    <31.1404,5,-8.37465>,
+    <32.9579,4.56445,-6.50619>,
+    <34.1904,4.109,-7.4964>,
+  }
+  normal_vectors {
+    8,
+    <0.293461,0.951502,-0.0923326>,
+    <0.294936,0.951502,-0.0875051>,
+    <0.296704,0.951502,-0.0813116>,
+    <0.302756,0.951502,-0.0546216>,
+    <0.300188,0.951502,-0.0673187>,
+    <0.297088,0.951502,-0.0798965>,
+    <0.301819,0.951502,-0.0595818>,
+    <0.300505,0.951502,-0.0658871>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face265
+
+// face number266 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body266 = mesh2{
+  vertex_vectors {
+    8,
+    <27.5502,5,-16.7584>,
+    <28.9837,4.56445,-16.9852>,
+    <30.5629,4.109,-17.0613>,
+    <29.4422,5,-13.1536>,
+    <28.8623,5,-14.3814>,
+    <28.2313,5,-15.5837>,
+    <30.4431,4.56445,-14.2045>,
+    <31.4029,4.109,-15.4609>,
+  }
+  normal_vectors {
+    8,
+    <0.262837,0.951502,-0.159879>,
+    <0.265425,0.951502,-0.155545>,
+    <0.268623,0.951502,-0.149955>,
+    <0.280886,0.951502,-0.125489>,
+    <0.275355,0.951502,-0.137202>,
+    <0.269334,0.951502,-0.148673>,
+    <0.27879,0.951502,-0.13008>,
+    <0.276005,0.951502,-0.135888>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face266
+
+// face number267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body267 = mesh2{
+  vertex_vectors {
+    8,
+    <22.7391,5,-22.8646>,
+    <24.0767,4.56445,-23.4279>,
+    <25.5918,4.109,-23.8797>,
+    <25.4388,5,-19.8173>,
+    <24.582,5,-20.8707>,
+    <23.6815,5,-21.887>,
+    <26.1592,4.56445,-21.0772>,
+    <26.7904,4.109,-22.5268>,
+  }
+  normal_vectors {
+    8,
+    <0.216938,0.951502,-0.218134>,
+    <0.220487,0.951502,-0.214546>,
+    <0.224931,0.951502,-0.209883>,
+    <0.242693,0.951502,-0.189063>,
+    <0.234519,0.951502,-0.199112>,
+    <0.225928,0.951502,-0.208808>,
+    <0.239558,0.951502,-0.193019>,
+    <0.235465,0.951502,-0.197992>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face267
+
+// face number268 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body268 = mesh2{
+  vertex_vectors {
+    8,
+    <16.6065,5,-27.642>,
+    <17.7704,4.56445,-28.509>,
+    <19.1333,4.109,-29.3103>,
+    <19.957,5,-25.3294>,
+    <18.873,5,-26.1471>,
+    <17.7555,5,-26.9184>,
+    <20.3549,4.56445,-26.7251>,
+    <20.6209,4.109,-28.2836>,
+  }
+  normal_vectors {
+    8,
+    <0.158431,0.951502,-0.263712>,
+    <0.162736,0.951502,-0.261077>,
+    <0.168166,0.951502,-0.257613>,
+    <0.190395,0.951502,-0.241649>,
+    <0.180053,0.951502,-0.24945>,
+    <0.169392,0.951502,-0.256809>,
+    <0.186405,0.951502,-0.244741>,
+    <0.18124,0.951502,-0.248589>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face268
+
+// face number269 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body269 = mesh2{
+  vertex_vectors {
+    8,
+    <9.5088,5,-30.813>,
+    <10.4314,4.56445,-31.9333>,
+    <11.5629,4.109,-33.0375>,
+    <13.3154,5,-29.3694>,
+    <12.0672,5,-29.9039>,
+    <10.7975,5,-30.3854>,
+    <13.3677,4.56445,-30.8197>,
+    <13.253,4.109,-32.3966>,
+  }
+  normal_vectors {
+    8,
+    <0.0907165,0.951502,-0.293964>,
+    <0.0955277,0.951502,-0.292436>,
+    <0.101629,0.951502,-0.290372>,
+    <0.127032,0.951502,-0.280192>,
+    <0.115124,0.951502,-0.285291>,
+    <0.103012,0.951502,-0.289885>,
+    <0.122418,0.951502,-0.282238>,
+    <0.116482,0.951502,-0.284739>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face269
+
+// face number270 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body270 = mesh2{
+  vertex_vectors {
+    8,
+    <1.85846,5,-32.1932>,
+    <2.48612,4.56445,-33.5018>,
+    <3.32054,4.109,-34.8447>,
+    <5.89989,5,-31.7025>,
+    <4.56004,5,-31.9228>,
+    <3.21209,5,-32.0865>,
+    <5.60363,4.56445,-33.1233>,
+    <5.11483,4.109,-34.6268>,
+  }
+  normal_vectors {
+    8,
+    <0.0177302,0.951502,-0.307132>,
+    <0.0227672,0.951502,-0.3068>,
+    <0.0291848,0.951502,-0.306256>,
+    <0.0562866,0.951502,-0.302451>,
+    <0.043504,0.951502,-0.304552>,
+    <0.0306443,0.951502,-0.306114>,
+    <0.0513164,0.951502,-0.303333>,
+    <0.0449551,0.951502,-0.304341>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face270
+
+// face number271 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body271 = mesh2{
+  vertex_vectors {
+    8,
+    <-5.89989,5,-31.7025>,
+    <-5.60363,4.56445,-33.1233>,
+    <-5.11483,4.109,-34.6268>,
+    <-1.85846,5,-32.1932>,
+    <-3.21209,5,-32.0865>,
+    <-4.56004,5,-31.9228>,
+    <-2.48612,4.56445,-33.5018>,
+    <-3.32054,4.109,-34.8447>,
+  }
+  normal_vectors {
+    8,
+    <-0.0562866,0.951502,-0.302451>,
+    <-0.0513164,0.951502,-0.303333>,
+    <-0.0449551,0.951502,-0.304341>,
+    <-0.0177302,0.951502,-0.307132>,
+    <-0.0306443,0.951502,-0.306114>,
+    <-0.043504,0.951502,-0.304552>,
+    <-0.0227672,0.951502,-0.3068>,
+    <-0.0291848,0.951502,-0.306256>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face271
+
+// face number272 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body272 = mesh2{
+  vertex_vectors {
+    8,
+    <-13.3154,5,-29.3694>,
+    <-13.3677,4.56445,-30.8197>,
+    <-13.253,4.109,-32.3966>,
+    <-9.5088,5,-30.813>,
+    <-10.7975,5,-30.3854>,
+    <-12.0672,5,-29.9039>,
+    <-10.4314,4.56445,-31.9333>,
+    <-11.5629,4.109,-33.0375>,
+  }
+  normal_vectors {
+    8,
+    <-0.127032,0.951502,-0.280192>,
+    <-0.122418,0.951502,-0.282238>,
+    <-0.116482,0.951502,-0.284739>,
+    <-0.0907165,0.951502,-0.293964>,
+    <-0.103012,0.951502,-0.289885>,
+    <-0.115124,0.951502,-0.285291>,
+    <-0.0955277,0.951502,-0.292436>,
+    <-0.101629,0.951502,-0.290372>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face272
+
+// face number273 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body273 = mesh2{
+  vertex_vectors {
+    8,
+    <-19.957,5,-25.3294>,
+    <-20.3549,4.56445,-26.7251>,
+    <-20.6209,4.109,-28.2836>,
+    <-16.6065,5,-27.642>,
+    <-17.7555,5,-26.9184>,
+    <-18.873,5,-26.1471>,
+    <-17.7704,4.56445,-28.509>,
+    <-19.1333,4.109,-29.3103>,
+  }
+  normal_vectors {
+    8,
+    <-0.190395,0.951502,-0.241649>,
+    <-0.186405,0.951502,-0.244741>,
+    <-0.18124,0.951502,-0.248589>,
+    <-0.158431,0.951502,-0.263712>,
+    <-0.169392,0.951502,-0.256809>,
+    <-0.180053,0.951502,-0.24945>,
+    <-0.162736,0.951502,-0.261077>,
+    <-0.168166,0.951502,-0.257613>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face273
+
+// face number274 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body274 = mesh2{
+  vertex_vectors {
+    8,
+    <-25.4388,5,-19.8173>,
+    <-26.1592,4.56445,-21.0772>,
+    <-26.7904,4.109,-22.5268>,
+    <-22.7391,5,-22.8646>,
+    <-23.6815,5,-21.887>,
+    <-24.582,5,-20.8707>,
+    <-24.0767,4.56445,-23.4279>,
+    <-25.5918,4.109,-23.8797>,
+  }
+  normal_vectors {
+    8,
+    <-0.242693,0.951502,-0.189063>,
+    <-0.239558,0.951502,-0.193019>,
+    <-0.235465,0.951502,-0.197992>,
+    <-0.216938,0.951502,-0.218134>,
+    <-0.225928,0.951502,-0.208808>,
+    <-0.234519,0.951502,-0.199112>,
+    <-0.220487,0.951502,-0.214546>,
+    <-0.224931,0.951502,-0.209883>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face274
+
+// face number275 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body275 = mesh2{
+  vertex_vectors {
+    8,
+    <-29.4422,5,-13.1536>,
+    <-30.4431,4.56445,-14.2045>,
+    <-31.4029,4.109,-15.4609>,
+    <-27.5502,5,-16.7584>,
+    <-28.2313,5,-15.5837>,
+    <-28.8623,5,-14.3814>,
+    <-28.9837,4.56445,-16.9852>,
+    <-30.5629,4.109,-17.0613>,
+  }
+  normal_vectors {
+    8,
+    <-0.280886,0.951502,-0.125489>,
+    <-0.27879,0.951502,-0.13008>,
+    <-0.276005,0.951502,-0.135888>,
+    <-0.262837,0.951502,-0.159879>,
+    <-0.269334,0.951502,-0.148673>,
+    <-0.275355,0.951502,-0.137202>,
+    <-0.265425,0.951502,-0.155545>,
+    <-0.268623,0.951502,-0.149955>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face275
+
+// face number276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body276 = mesh2{
+  vertex_vectors {
+    8,
+    <-31.7345,5,-5.72537>,
+    <-32.9579,4.56445,-6.50619>,
+    <-34.1904,4.109,-7.4964>,
+    <-30.7602,5,-9.67819>,
+    <-31.1404,5,-8.37465>,
+    <-31.4653,5,-7.05627>,
+    <-32.2063,4.56445,-9.55534>,
+    <-33.7579,4.109,-9.25134>,
+  }
+  normal_vectors {
+    8,
+    <-0.302756,0.951502,-0.0546216>,
+    <-0.301819,0.951502,-0.0595818>,
+    <-0.300505,0.951502,-0.0658871>,
+    <-0.293461,0.951502,-0.0923326>,
+    <-0.297088,0.951502,-0.0798965>,
+    <-0.300188,0.951502,-0.0673187>,
+    <-0.294936,0.951502,-0.0875051>,
+    <-0.296704,0.951502,-0.0813116>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face276
+
+// face number277 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body277 = mesh2{
+  vertex_vectors {
+    8,
+    <-32.1825,5,2.03556>,
+    <-33.5572,4.56445,1.5702>,
+    <-34.9909,4.109,0.903734>,
+    <-32.1825,5,-2.03556>,
+    <-32.2397,5,-0.678921>,
+    <-32.2397,5,0.678921>,
+    <-33.5572,4.56445,-1.5702>,
+    <-34.9909,4.109,-0.903734>,
+  }
+  normal_vectors {
+    8,
+    <-0.30703,0.951502,0.0194198>,
+    <-0.307307,0.951502,0.0143794>,
+    <-0.307541,0.951502,0.00794307>,
+    <-0.30703,0.951502,-0.0194198>,
+    <-0.307575,0.951502,-0.00647709>,
+    <-0.307575,0.951502,0.00647709>,
+    <-0.307307,0.951502,-0.0143794>,
+    <-0.307541,0.951502,-0.00794307>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face277
+
+// face number278 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body278 = mesh2{
+  vertex_vectors {
+    8,
+    <-30.7602,5,9.67819>,
+    <-32.2063,4.56445,9.55534>,
+    <-33.7579,4.109,9.25134>,
+    <-31.7345,5,5.72537>,
+    <-31.4653,5,7.05627>,
+    <-31.1404,5,8.37465>,
+    <-32.9579,4.56445,6.50619>,
+    <-34.1904,4.109,7.4964>,
+  }
+  normal_vectors {
+    8,
+    <-0.293461,0.951502,0.0923326>,
+    <-0.294936,0.951502,0.0875051>,
+    <-0.296704,0.951502,0.0813116>,
+    <-0.302756,0.951502,0.0546216>,
+    <-0.300188,0.951502,0.0673187>,
+    <-0.297088,0.951502,0.0798965>,
+    <-0.301819,0.951502,0.0595818>,
+    <-0.300505,0.951502,0.0658871>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face278
+
+// face number279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body279 = mesh2{
+  vertex_vectors {
+    8,
+    <-27.5502,5,16.7584>,
+    <-28.9837,4.56445,16.9852>,
+    <-30.5629,4.109,17.0613>,
+    <-29.4422,5,13.1536>,
+    <-28.8623,5,14.3814>,
+    <-28.2313,5,15.5837>,
+    <-30.4431,4.56445,14.2045>,
+    <-31.4029,4.109,15.4609>,
+  }
+  normal_vectors {
+    8,
+    <-0.262837,0.951502,0.159879>,
+    <-0.265425,0.951502,0.155545>,
+    <-0.268623,0.951502,0.149955>,
+    <-0.280886,0.951502,0.125489>,
+    <-0.275355,0.951502,0.137202>,
+    <-0.269334,0.951502,0.148673>,
+    <-0.27879,0.951502,0.13008>,
+    <-0.276005,0.951502,0.135888>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face279
+
+// face number280 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body280 = mesh2{
+  vertex_vectors {
+    8,
+    <-22.7391,5,22.8646>,
+    <-24.0767,4.56445,23.4279>,
+    <-25.5918,4.109,23.8797>,
+    <-25.4388,5,19.8173>,
+    <-24.582,5,20.8707>,
+    <-23.6815,5,21.887>,
+    <-26.1592,4.56445,21.0772>,
+    <-26.7904,4.109,22.5268>,
+  }
+  normal_vectors {
+    8,
+    <-0.216938,0.951502,0.218134>,
+    <-0.220487,0.951502,0.214546>,
+    <-0.224931,0.951502,0.209883>,
+    <-0.242693,0.951502,0.189063>,
+    <-0.234519,0.951502,0.199112>,
+    <-0.225928,0.951502,0.208808>,
+    <-0.239558,0.951502,0.193019>,
+    <-0.235465,0.951502,0.197992>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face280
+
+// face number281 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body281 = mesh2{
+  vertex_vectors {
+    8,
+    <-16.6065,5,27.642>,
+    <-17.7704,4.56445,28.509>,
+    <-19.1333,4.109,29.3103>,
+    <-19.957,5,25.3294>,
+    <-18.873,5,26.1471>,
+    <-17.7555,5,26.9184>,
+    <-20.3549,4.56445,26.7251>,
+    <-20.6209,4.109,28.2836>,
+  }
+  normal_vectors {
+    8,
+    <-0.158431,0.951502,0.263712>,
+    <-0.162736,0.951502,0.261077>,
+    <-0.168166,0.951502,0.257613>,
+    <-0.190395,0.951502,0.241649>,
+    <-0.180053,0.951502,0.24945>,
+    <-0.169392,0.951502,0.256809>,
+    <-0.186405,0.951502,0.244741>,
+    <-0.18124,0.951502,0.248589>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face281
+
+// face number282 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body282 = mesh2{
+  vertex_vectors {
+    8,
+    <-9.5088,5,30.813>,
+    <-10.4314,4.56445,31.9333>,
+    <-11.5629,4.109,33.0375>,
+    <-13.3154,5,29.3694>,
+    <-12.0672,5,29.9039>,
+    <-10.7975,5,30.3854>,
+    <-13.3677,4.56445,30.8197>,
+    <-13.253,4.109,32.3966>,
+  }
+  normal_vectors {
+    8,
+    <-0.0907165,0.951502,0.293964>,
+    <-0.0955277,0.951502,0.292436>,
+    <-0.101629,0.951502,0.290372>,
+    <-0.127032,0.951502,0.280192>,
+    <-0.115124,0.951502,0.285291>,
+    <-0.103012,0.951502,0.289885>,
+    <-0.122418,0.951502,0.282238>,
+    <-0.116482,0.951502,0.284739>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <2,1,6>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,6,7>,
+  }
+} // end of Face282
+
+// face number283 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body283 = mesh2{
+  vertex_vectors {
+    8,
+    <-1.85846,5,32.1932>,
+    <-2.48612,4.56445,33.5018>,
+    <-3.32054,4.109,34.8447>,
+    <-5.89989,5,31.7025>,
+    <-4.56004,5,31.9228>,
+    <-3.21209,5,32.0865>,
+    <-5.60363,4.56445,33.1233>,
+    <-5.11483,4.109,34.6268>,
+  }
+  normal_vectors {
+    8,
+    <-0.0177302,0.951502,0.307132>,
+    <-0.0227672,0.951502,0.3068>,
+    <-0.0291848,0.951502,0.306256>,
+    <-0.0562866,0.951502,0.302451>,
+    <-0.043504,0.951502,0.304552>,
+    <-0.0306443,0.951502,0.306114>,
+    <-0.0513164,0.951502,0.303333>,
+    <-0.0449551,0.951502,0.304341>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face283
+
+// face number284 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body284 = mesh2{
+  vertex_vectors {
+    8,
+    <5.89989,5,31.7025>,
+    <5.60363,4.56445,33.1233>,
+    <5.11483,4.109,34.6268>,
+    <1.85846,5,32.1932>,
+    <3.21209,5,32.0865>,
+    <4.56004,5,31.9228>,
+    <2.48612,4.56445,33.5018>,
+    <3.32054,4.109,34.8447>,
+  }
+  normal_vectors {
+    8,
+    <0.0562866,0.951502,0.302451>,
+    <0.0513164,0.951502,0.303333>,
+    <0.0449551,0.951502,0.304341>,
+    <0.0177302,0.951502,0.307132>,
+    <0.0306443,0.951502,0.306114>,
+    <0.043504,0.951502,0.304552>,
+    <0.0227672,0.951502,0.3068>,
+    <0.0291848,0.951502,0.306256>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face284
+
+// face number285 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body285 = mesh2{
+  vertex_vectors {
+    8,
+    <13.3154,5,29.3694>,
+    <13.3677,4.56445,30.8197>,
+    <13.253,4.109,32.3966>,
+    <9.5088,5,30.813>,
+    <10.7975,5,30.3854>,
+    <12.0672,5,29.9039>,
+    <10.4314,4.56445,31.9333>,
+    <11.5629,4.109,33.0375>,
+  }
+  normal_vectors {
+    8,
+    <0.127032,0.951502,0.280192>,
+    <0.122418,0.951502,0.282238>,
+    <0.116482,0.951502,0.284739>,
+    <0.0907165,0.951502,0.293964>,
+    <0.103012,0.951502,0.289885>,
+    <0.115124,0.951502,0.285291>,
+    <0.0955277,0.951502,0.292436>,
+    <0.101629,0.951502,0.290372>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face285
+
+// face number286 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body286 = mesh2{
+  vertex_vectors {
+    8,
+    <19.957,5,25.3294>,
+    <20.3549,4.56445,26.7251>,
+    <20.6209,4.109,28.2836>,
+    <16.6065,5,27.642>,
+    <17.7555,5,26.9184>,
+    <18.873,5,26.1471>,
+    <17.7704,4.56445,28.509>,
+    <19.1333,4.109,29.3103>,
+  }
+  normal_vectors {
+    8,
+    <0.190395,0.951502,0.241649>,
+    <0.186405,0.951502,0.244741>,
+    <0.18124,0.951502,0.248589>,
+    <0.158431,0.951502,0.263712>,
+    <0.169392,0.951502,0.256809>,
+    <0.180053,0.951502,0.24945>,
+    <0.162736,0.951502,0.261077>,
+    <0.168166,0.951502,0.257613>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face286
+
+// face number287 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body287 = mesh2{
+  vertex_vectors {
+    8,
+    <25.4388,5,19.8173>,
+    <26.1592,4.56445,21.0772>,
+    <26.7904,4.109,22.5268>,
+    <22.7391,5,22.8646>,
+    <23.6815,5,21.887>,
+    <24.582,5,20.8707>,
+    <24.0767,4.56445,23.4279>,
+    <25.5918,4.109,23.8797>,
+  }
+  normal_vectors {
+    8,
+    <0.242693,0.951502,0.189063>,
+    <0.239558,0.951502,0.193019>,
+    <0.235465,0.951502,0.197992>,
+    <0.216938,0.951502,0.218134>,
+    <0.225928,0.951502,0.208808>,
+    <0.234519,0.951502,0.199112>,
+    <0.220487,0.951502,0.214546>,
+    <0.224931,0.951502,0.209883>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <1,5,4>,
+    <4,3,6>,
+    <1,4,6>,
+    <2,1,7>,
+    <1,6,7>,
+  }
+} // end of Face287
+
+// face number288 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body288 = mesh2{
+  vertex_vectors {
+    8,
+    <29.4422,5,13.1536>,
+    <30.4431,4.56445,14.2045>,
+    <31.4029,4.109,15.4609>,
+    <27.5502,5,16.7584>,
+    <28.2313,5,15.5837>,
+    <28.8623,5,14.3814>,
+    <28.9837,4.56445,16.9852>,
+    <30.5629,4.109,17.0613>,
+  }
+  normal_vectors {
+    8,
+    <0.280886,0.951502,0.125489>,
+    <0.27879,0.951502,0.13008>,
+    <0.276005,0.951502,0.135888>,
+    <0.262837,0.951502,0.159879>,
+    <0.269334,0.951502,0.148673>,
+    <0.275355,0.951502,0.137202>,
+    <0.265425,0.951502,0.155545>,
+    <0.268623,0.951502,0.149955>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face288
+
+// face number289 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body289 = mesh2{
+  vertex_vectors {
+    8,
+    <31.7345,5,5.72537>,
+    <32.9579,4.56445,6.50619>,
+    <34.1904,4.109,7.4964>,
+    <30.7602,5,9.67819>,
+    <31.1404,5,8.37465>,
+    <31.4653,5,7.05627>,
+    <32.2063,4.56445,9.55534>,
+    <33.7579,4.109,9.25134>,
+  }
+  normal_vectors {
+    8,
+    <0.302756,0.951502,0.0546216>,
+    <0.301819,0.951502,0.0595818>,
+    <0.300505,0.951502,0.0658871>,
+    <0.293461,0.951502,0.0923326>,
+    <0.297088,0.951502,0.0798965>,
+    <0.300188,0.951502,0.0673187>,
+    <0.294936,0.951502,0.0875051>,
+    <0.296704,0.951502,0.0813116>,
+  }
+  face_indices {
+    6,
+    <0,5,1>,
+    <2,1,6>,
+    <4,3,6>,
+    <5,4,6>,
+    <1,5,6>,
+    <2,6,7>,
+  }
+} // end of Face289
+
+// face number290 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body290 = mesh2{
+  vertex_vectors {
+    7,
+    <32.2468,5,-1e-15>,
+    <35.0026,4.109,-1e-15>,
+    <32.1825,5,2.03556>,
+    <32.2182,5,1.35754>,
+    <32.2397,5,0.678921>,
+    <33.5572,4.56445,1.5702>,
+    <34.9909,4.109,0.903734>,
+  }
+  normal_vectors {
+    7,
+    <0.307644,0.951502,-2.0933e-16>,
+    <0.307644,0.951502,-2.0933e-16>,
+    <0.30703,0.951502,0.0194198>,
+    <0.307371,0.951502,0.0129513>,
+    <0.307575,0.951502,0.00647709>,
+    <0.307307,0.951502,0.0143794>,
+    <0.307541,0.951502,0.00794307>,
+  }
+  face_indices {
+    5,
+    <1,0,5>,
+    <3,2,5>,
+    <4,3,5>,
+    <0,4,5>,
+    <1,5,6>,
+  }
+} // end of Face290
+
+// face number291 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body291 = mesh2{
+  vertex_vectors {
+    7,
+    <32.2468,5,-1e-15>,
+    <32.2397,5,-0.678921>,
+    <32.2182,5,-1.35754>,
+    <32.1825,5,-2.03556>,
+    <35.0026,4.109,-1e-15>,
+    <34.9909,4.109,-0.903734>,
+    <33.5572,4.56445,-1.5702>,
+  }
+  normal_vectors {
+    7,
+    <0.307644,0.951502,-2.0933e-16>,
+    <0.307575,0.951502,-0.00647709>,
+    <0.307371,0.951502,-0.0129513>,
+    <0.30703,0.951502,-0.0194198>,
+    <0.307644,0.951502,-2.0933e-16>,
+    <0.307541,0.951502,-0.00794307>,
+    <0.307307,0.951502,-0.0143794>,
+  }
+  face_indices {
+    5,
+    <2,1,6>,
+    <3,2,6>,
+    <6,1,0>,
+    <5,6,4>,
+    <6,0,4>,
+  }
+} // end of Face291
+
+// face number292 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body292 = mesh2{
+  vertex_vectors {
+    106,
+    <27.3425,5,-1e-15>,
+    <27.1432,5,-3.29578>,
+    <26.548,5,-6.5435>,
+    <25.5657,5,-9.6958>,
+    <24.2106,5,-12.7067>,
+    <22.5025,5,-15.5323>,
+    <20.4662,5,-18.1315>,
+    <18.1315,5,-20.4662>,
+    <15.5323,5,-22.5025>,
+    <12.7067,5,-24.2106>,
+    <9.6958,5,-25.5657>,
+    <6.5435,5,-26.548>,
+    <3.29578,5,-27.1432>,
+    <1.38168e-14,5,-27.3425>,
+    <-3.29578,5,-27.1432>,
+    <-6.5435,5,-26.548>,
+    <-9.6958,5,-25.5657>,
+    <-12.7067,5,-24.2106>,
+    <-15.5323,5,-22.5025>,
+    <-18.1315,5,-20.4662>,
+    <-20.4662,5,-18.1315>,
+    <-22.5025,5,-15.5323>,
+    <-24.2106,5,-12.7067>,
+    <-25.5657,5,-9.6958>,
+    <-26.548,5,-6.5435>,
+    <-27.1432,5,-3.29578>,
+    <-27.3425,5,-5.30286e-14>,
+    <-27.1432,5,3.29578>,
+    <-26.548,5,6.5435>,
+    <-25.5657,5,9.6958>,
+    <-24.2106,5,12.7067>,
+    <-22.5025,5,15.5323>,
+    <-20.4662,5,18.1315>,
+    <-18.1315,5,20.4662>,
+    <-15.5323,5,22.5025>,
+    <-12.7067,5,24.2106>,
+    <-9.6958,5,25.5657>,
+    <-6.5435,5,26.548>,
+    <-3.29578,5,27.1432>,
+    <-2.93078e-14,5,27.3425>,
+    <3.29578,5,27.1432>,
+    <6.5435,5,26.548>,
+    <9.6958,5,25.5657>,
+    <12.7067,5,24.2106>,
+    <15.5323,5,22.5025>,
+    <18.1315,5,20.4662>,
+    <20.4662,5,18.1315>,
+    <22.5025,5,15.5323>,
+    <24.2106,5,12.7067>,
+    <25.5657,5,9.6958>,
+    <26.548,5,6.5435>,
+    <27.1432,5,3.29578>,
+    <27.3425,5,-1e-15>,
+    <27.3425,1.8502,0>,
+    <27.3425,1.8502,0>,
+    <27.1432,1.8502,3.29578>,
+    <26.548,1.8502,6.5435>,
+    <25.5657,1.8502,9.6958>,
+    <24.2106,1.8502,12.7067>,
+    <22.5025,1.8502,15.5323>,
+    <20.4662,1.8502,18.1315>,
+    <18.1315,1.8502,20.4662>,
+    <15.5323,1.8502,22.5025>,
+    <12.7067,1.8502,24.2106>,
+    <9.6958,1.8502,25.5657>,
+    <6.5435,1.8502,26.548>,
+    <3.29578,1.8502,27.1432>,
+    <1.38168e-14,1.8502,27.3425>,
+    <-3.29578,1.8502,27.1432>,
+    <-6.5435,1.8502,26.548>,
+    <-9.6958,1.8502,25.5657>,
+    <-12.7067,1.8502,24.2106>,
+    <-15.5323,1.8502,22.5025>,
+    <-18.1315,1.8502,20.4662>,
+    <-20.4662,1.8502,18.1315>,
+    <-22.5025,1.8502,15.5323>,
+    <-24.2106,1.8502,12.7067>,
+    <-25.5657,1.8502,9.6958>,
+    <-26.548,1.8502,6.5435>,
+    <-27.1432,1.8502,3.29578>,
+    <-27.3425,1.8502,5.15086e-14>,
+    <-27.1432,1.8502,-3.29578>,
+    <-26.548,1.8502,-6.5435>,
+    <-25.5657,1.8502,-9.6958>,
+    <-24.2106,1.8502,-12.7067>,
+    <-22.5025,1.8502,-15.5323>,
+    <-20.4662,1.8502,-18.1315>,
+    <-18.1315,1.8502,-20.4662>,
+    <-15.5323,1.8502,-22.5025>,
+    <-12.7067,1.8502,-24.2106>,
+    <-9.6958,1.8502,-25.5657>,
+    <-6.5435,1.8502,-26.548>,
+    <-3.29578,1.8502,-27.1432>,
+    <-2.93078e-14,1.8502,-27.3425>,
+    <3.29578,1.8502,-27.1432>,
+    <6.5435,1.8502,-26.548>,
+    <9.6958,1.8502,-25.5657>,
+    <12.7067,1.8502,-24.2106>,
+    <15.5323,1.8502,-22.5025>,
+    <18.1315,1.8502,-20.4662>,
+    <20.4662,1.8502,-18.1315>,
+    <22.5025,1.8502,-15.5323>,
+    <24.2106,1.8502,-12.7067>,
+    <25.5657,1.8502,-9.6958>,
+    <26.548,1.8502,-6.5435>,
+    <27.1432,1.8502,-3.29578>,
+  }
+  normal_vectors {
+    106,
+    <-1,0,0>,
+    <-0.992709,2.65181e-17,0.120537>,
+    <-0.970942,5.26494e-17,0.239316>,
+    <-0.935016,7.80131e-17,0.354605>,
+    <-0.885456,1.02239e-16,0.464723>,
+    <-0.822984,1.24974e-16,0.568065>,
+    <-0.748511,1.45887e-16,0.663123>,
+    <-0.663123,1.64672e-16,0.748511>,
+    <-0.568065,1.81056e-16,0.822984>,
+    <-0.464723,1.948e-16,0.885456>,
+    <-0.354605,2.05704e-16,0.935016>,
+    <-0.239316,2.13607e-16,0.970942>,
+    <-0.120537,2.18396e-16,0.992709>,
+    <1.83697e-16,2.2e-16,1>,
+    <0.120537,2.18396e-16,0.992709>,
+    <0.239316,2.13607e-16,0.970942>,
+    <0.354605,2.05704e-16,0.935016>,
+    <0.464723,1.948e-16,0.885456>,
+    <0.568065,1.81056e-16,0.822984>,
+    <0.663123,1.64672e-16,0.748511>,
+    <0.748511,1.45887e-16,0.663123>,
+    <0.822984,1.24974e-16,0.568065>,
+    <0.885456,1.02239e-16,0.464723>,
+    <0.935016,7.80131e-17,0.354605>,
+    <0.970942,5.26494e-17,0.239316>,
+    <0.992709,2.65181e-17,0.120537>,
+    <1,3.63856e-31,1.65389e-15>,
+    <0.992709,-2.65181e-17,-0.120537>,
+    <0.970942,-5.26494e-17,-0.239316>,
+    <0.935016,-7.80131e-17,-0.354605>,
+    <0.885456,-1.02239e-16,-0.464723>,
+    <0.822984,-1.24974e-16,-0.568065>,
+    <0.748511,-1.45887e-16,-0.663123>,
+    <0.663123,-1.64672e-16,-0.748511>,
+    <0.568065,-1.81056e-16,-0.822984>,
+    <0.464723,-1.948e-16,-0.885456>,
+    <0.354605,-2.05704e-16,-0.935016>,
+    <0.239316,-2.13607e-16,-0.970942>,
+    <0.120537,-2.18396e-16,-0.992709>,
+    <1.04899e-15,-2.2e-16,-1>,
+    <-0.120537,-2.18396e-16,-0.992709>,
+    <-0.239316,-2.13607e-16,-0.970942>,
+    <-0.354605,-2.05704e-16,-0.935016>,
+    <-0.464723,-1.948e-16,-0.885456>,
+    <-0.568065,-1.81056e-16,-0.822984>,
+    <-0.663123,-1.64672e-16,-0.748511>,
+    <-0.748511,-1.45887e-16,-0.663123>,
+    <-0.822984,-1.24974e-16,-0.568065>,
+    <-0.885456,-1.02239e-16,-0.464723>,
+    <-0.935016,-7.80131e-17,-0.354605>,
+    <-0.970942,-5.26494e-17,-0.239316>,
+    <-0.992709,-2.65181e-17,-0.120537>,
+    <-1,0,0>,
+    <-1,0,0>,
+    <-1,0,0>,
+    <-0.992709,-2.65181e-17,-0.120537>,
+    <-0.970942,-5.26494e-17,-0.239316>,
+    <-0.935016,-7.80131e-17,-0.354605>,
+    <-0.885456,-1.02239e-16,-0.464723>,
+    <-0.822984,-1.24974e-16,-0.568065>,
+    <-0.748511,-1.45887e-16,-0.663123>,
+    <-0.663123,-1.64672e-16,-0.748511>,
+    <-0.568065,-1.81056e-16,-0.822984>,
+    <-0.464723,-1.948e-16,-0.885456>,
+    <-0.354605,-2.05704e-16,-0.935016>,
+    <-0.239316,-2.13607e-16,-0.970942>,
+    <-0.120537,-2.18396e-16,-0.992709>,
+    <-5.05322e-16,-2.2e-16,-1>,
+    <0.120537,-2.18396e-16,-0.992709>,
+    <0.239316,-2.13607e-16,-0.970942>,
+    <0.354605,-2.05704e-16,-0.935016>,
+    <0.464723,-1.948e-16,-0.885456>,
+    <0.568065,-1.81056e-16,-0.822984>,
+    <0.663123,-1.64672e-16,-0.748511>,
+    <0.748511,-1.45887e-16,-0.663123>,
+    <0.822984,-1.24974e-16,-0.568065>,
+    <0.885456,-1.02239e-16,-0.464723>,
+    <0.935016,-7.80131e-17,-0.354605>,
+    <0.970942,-5.26494e-17,-0.239316>,
+    <0.992709,-2.65181e-17,-0.120537>,
+    <1,-4.17741e-31,-1.89882e-15>,
+    <0.992709,2.65181e-17,0.120537>,
+    <0.970942,5.26494e-17,0.239316>,
+    <0.935016,7.80131e-17,0.354605>,
+    <0.885456,1.02239e-16,0.464723>,
+    <0.822984,1.24974e-16,0.568065>,
+    <0.748511,1.45887e-16,0.663123>,
+    <0.663123,1.64672e-16,0.748511>,
+    <0.568065,1.81056e-16,0.822984>,
+    <0.464723,1.948e-16,0.885456>,
+    <0.354605,2.05704e-16,0.935016>,
+    <0.239316,2.13607e-16,0.970942>,
+    <0.120537,2.18396e-16,0.992709>,
+    <1.07188e-15,2.2e-16,1>,
+    <-0.120537,2.18396e-16,0.992709>,
+    <-0.239316,2.13607e-16,0.970942>,
+    <-0.354605,2.05704e-16,0.935016>,
+    <-0.464723,1.948e-16,0.885456>,
+    <-0.568065,1.81056e-16,0.822984>,
+    <-0.663123,1.64672e-16,0.748511>,
+    <-0.748511,1.45887e-16,0.663123>,
+    <-0.822984,1.24974e-16,0.568065>,
+    <-0.885456,1.02239e-16,0.464723>,
+    <-0.935016,7.80131e-17,0.354605>,
+    <-0.970942,5.26494e-17,0.239316>,
+    <-0.992709,2.65181e-17,0.120537>,
+  }
+  face_indices {
+    104,
+    <54,51,52>,
+    <55,51,54>,
+    <55,50,51>,
+    <56,50,55>,
+    <56,49,50>,
+    <57,49,56>,
+    <57,48,49>,
+    <58,48,57>,
+    <58,47,48>,
+    <59,47,58>,
+    <59,46,47>,
+    <60,46,59>,
+    <60,45,46>,
+    <61,45,60>,
+    <61,44,45>,
+    <62,44,61>,
+    <63,42,43>,
+    <63,43,44>,
+    <63,44,62>,
+    <64,42,63>,
+    <65,41,42>,
+    <65,42,64>,
+    <66,40,41>,
+    <66,41,65>,
+    <67,39,40>,
+    <67,40,66>,
+    <68,38,39>,
+    <68,39,67>,
+    <69,37,38>,
+    <69,38,68>,
+    <70,36,37>,
+    <70,37,69>,
+    <71,35,36>,
+    <71,36,70>,
+    <72,34,35>,
+    <72,35,71>,
+    <73,33,34>,
+    <73,34,72>,
+    <74,32,33>,
+    <74,33,73>,
+    <75,31,32>,
+    <75,32,74>,
+    <76,30,31>,
+    <76,31,75>,
+    <77,30,76>,
+    <77,29,30>,
+    <78,29,77>,
+    <78,28,29>,
+    <79,28,78>,
+    <79,27,28>,
+    <80,27,79>,
+    <80,25,26>,
+    <80,26,27>,
+    <81,25,80>,
+    <82,25,81>,
+    <82,23,24>,
+    <82,24,25>,
+    <83,23,82>,
+    <84,22,23>,
+    <84,23,83>,
+    <85,21,22>,
+    <85,22,84>,
+    <86,20,21>,
+    <86,21,85>,
+    <87,19,20>,
+    <87,20,86>,
+    <88,18,19>,
+    <88,19,87>,
+    <89,16,17>,
+    <89,17,18>,
+    <89,18,88>,
+    <90,16,89>,
+    <91,15,16>,
+    <91,16,90>,
+    <92,14,15>,
+    <92,15,91>,
+    <93,13,14>,
+    <93,14,92>,
+    <94,12,13>,
+    <94,13,93>,
+    <95,10,11>,
+    <95,11,12>,
+    <95,12,94>,
+    <96,10,95>,
+    <97,8,9>,
+    <97,9,10>,
+    <97,10,96>,
+    <98,8,97>,
+    <99,7,8>,
+    <99,8,98>,
+    <100,5,6>,
+    <100,6,7>,
+    <100,7,99>,
+    <101,5,100>,
+    <102,4,5>,
+    <102,5,101>,
+    <103,3,4>,
+    <103,4,102>,
+    <104,2,3>,
+    <104,3,103>,
+    <105,1,2>,
+    <105,2,104>,
+    <53,0,1>,
+    <53,1,105>,
+  }
+} // end of Face292
+
+// face number293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body293 = mesh2{
+  vertex_vectors {
+    6,
+    <34.9909,-4.109,-0.903734>,
+    <35.0026,-4.109,-1e-15>,
+    <34.9909,4.109,-0.903734>,
+    <35.0026,4.109,-1e-15>,
+    <34.9909,4.109,0.903734>,
+    <34.9909,-4.109,0.903734>,
+  }
+  normal_vectors {
+    6,
+    <0.999667,-0,-0.025821>,
+    <1,-0,-2.85486e-17>,
+    <0.999667,-0,-0.025821>,
+    <1,-0,-2.85486e-17>,
+    <0.999667,0,0.025821>,
+    <0.999667,0,0.025821>,
+  }
+  face_indices {
+    4,
+    <2,3,0>,
+    <0,3,1>,
+    <3,4,5>,
+    <1,3,5>,
+  }
+} // end of Face293
+
+// face number294 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body294 = mesh2{
+  vertex_vectors {
+    4,
+    <33.7579,-4.109,-9.25134>,
+    <34.1904,-4.109,-7.4964>,
+    <33.7579,4.109,-9.25134>,
+    <34.1904,4.109,-7.4964>,
+  }
+  normal_vectors {
+    4,
+    <0.964439,-0,-0.264307>,
+    <0.976797,-0,-0.214165>,
+    <0.964439,-0,-0.264307>,
+    <0.976797,-0,-0.214165>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face294
+
+// face number295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body295 = mesh2{
+  vertex_vectors {
+    4,
+    <30.5629,-4.109,-17.0613>,
+    <31.4029,-4.109,-15.4609>,
+    <30.5629,4.109,-17.0613>,
+    <31.4029,4.109,-15.4609>,
+  }
+  normal_vectors {
+    4,
+    <0.873161,-0,-0.487432>,
+    <0.89716,-0,-0.441705>,
+    <0.873161,-0,-0.487432>,
+    <0.89716,-0,-0.441705>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face295
+
+// face number296 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body296 = mesh2{
+  vertex_vectors {
+    4,
+    <25.5918,-4.109,-23.8797>,
+    <26.7904,-4.109,-22.5268>,
+    <25.5918,4.109,-23.8797>,
+    <26.7904,4.109,-22.5268>,
+  }
+  normal_vectors {
+    4,
+    <0.731139,-0,-0.682229>,
+    <0.765384,-0,-0.643574>,
+    <0.731139,-0,-0.682229>,
+    <0.765384,-0,-0.643574>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face296
+
+// face number297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body297 = mesh2{
+  vertex_vectors {
+    4,
+    <19.1333,-4.109,-29.3103>,
+    <20.6209,-4.109,-28.2836>,
+    <19.1333,4.109,-29.3103>,
+    <20.6209,4.109,-28.2836>,
+  }
+  normal_vectors {
+    4,
+    <0.546625,-0,-0.837377>,
+    <0.589126,-0,-0.808041>,
+    <0.546625,-0,-0.837377>,
+    <0.589126,-0,-0.808041>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face297
+
+// face number298 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body298 = mesh2{
+  vertex_vectors {
+    4,
+    <11.5629,-4.109,-33.0375>,
+    <13.253,-4.109,-32.3966>,
+    <11.5629,4.109,-33.0375>,
+    <13.253,4.109,-32.3966>,
+  }
+  normal_vectors {
+    4,
+    <0.330344,-0,-0.943861>,
+    <0.37863,-0,-0.925548>,
+    <0.330344,-0,-0.943861>,
+    <0.37863,-0,-0.925548>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face298
+
+// face number299 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body299 = mesh2{
+  vertex_vectors {
+    4,
+    <3.32054,-4.109,-34.8447>,
+    <5.11483,-4.109,-34.6268>,
+    <3.32054,4.109,-34.8447>,
+    <5.11483,4.109,-34.6268>,
+  }
+  normal_vectors {
+    4,
+    <0.0948638,-0,-0.99549>,
+    <0.146129,-0,-0.989266>,
+    <0.0948638,-0,-0.99549>,
+    <0.146129,-0,-0.989266>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face299
+
+// face number300 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body300 = mesh2{
+  vertex_vectors {
+    4,
+    <-5.11483,-4.109,-34.6268>,
+    <-3.32054,-4.109,-34.8447>,
+    <-5.11483,4.109,-34.6268>,
+    <-3.32054,4.109,-34.8447>,
+  }
+  normal_vectors {
+    4,
+    <-0.146129,0,-0.989266>,
+    <-0.0948638,0,-0.99549>,
+    <-0.146129,0,-0.989266>,
+    <-0.0948638,0,-0.99549>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face300
+
+// face number301 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body301 = mesh2{
+  vertex_vectors {
+    4,
+    <-13.253,-4.109,-32.3966>,
+    <-11.5629,-4.109,-33.0375>,
+    <-13.253,4.109,-32.3966>,
+    <-11.5629,4.109,-33.0375>,
+  }
+  normal_vectors {
+    4,
+    <-0.37863,0,-0.925548>,
+    <-0.330344,0,-0.943861>,
+    <-0.37863,0,-0.925548>,
+    <-0.330344,0,-0.943861>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face301
+
+// face number302 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body302 = mesh2{
+  vertex_vectors {
+    4,
+    <-20.6209,-4.109,-28.2836>,
+    <-19.1333,-4.109,-29.3103>,
+    <-20.6209,4.109,-28.2836>,
+    <-19.1333,4.109,-29.3103>,
+  }
+  normal_vectors {
+    4,
+    <-0.589126,0,-0.808041>,
+    <-0.546625,0,-0.837377>,
+    <-0.589126,0,-0.808041>,
+    <-0.546625,0,-0.837377>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face302
+
+// face number303 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body303 = mesh2{
+  vertex_vectors {
+    4,
+    <-26.7904,-4.109,-22.5268>,
+    <-25.5918,-4.109,-23.8797>,
+    <-26.7904,4.109,-22.5268>,
+    <-25.5918,4.109,-23.8797>,
+  }
+  normal_vectors {
+    4,
+    <-0.765384,0,-0.643574>,
+    <-0.731139,0,-0.682229>,
+    <-0.765384,0,-0.643574>,
+    <-0.731139,0,-0.682229>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face303
+
+// face number304 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body304 = mesh2{
+  vertex_vectors {
+    4,
+    <-31.4029,-4.109,-15.4609>,
+    <-30.5629,-4.109,-17.0613>,
+    <-31.4029,4.109,-15.4609>,
+    <-30.5629,4.109,-17.0613>,
+  }
+  normal_vectors {
+    4,
+    <-0.89716,0,-0.441705>,
+    <-0.873161,0,-0.487432>,
+    <-0.89716,0,-0.441705>,
+    <-0.873161,0,-0.487432>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face304
+
+// face number305 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body305 = mesh2{
+  vertex_vectors {
+    4,
+    <-34.1904,-4.109,-7.4964>,
+    <-33.7579,-4.109,-9.25134>,
+    <-34.1904,4.109,-7.4964>,
+    <-33.7579,4.109,-9.25134>,
+  }
+  normal_vectors {
+    4,
+    <-0.976797,0,-0.214165>,
+    <-0.964439,0,-0.264307>,
+    <-0.976797,0,-0.214165>,
+    <-0.964439,0,-0.264307>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face305
+
+// face number306 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body306 = mesh2{
+  vertex_vectors {
+    4,
+    <-34.9909,-4.109,0.903734>,
+    <-34.9909,-4.109,-0.903734>,
+    <-34.9909,4.109,0.903734>,
+    <-34.9909,4.109,-0.903734>,
+  }
+  normal_vectors {
+    4,
+    <-0.999667,-0,0.025821>,
+    <-0.999667,0,-0.025821>,
+    <-0.999667,-0,0.025821>,
+    <-0.999667,0,-0.025821>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face306
+
+// face number307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body307 = mesh2{
+  vertex_vectors {
+    4,
+    <-33.7579,-4.109,9.25134>,
+    <-34.1904,-4.109,7.4964>,
+    <-33.7579,4.109,9.25134>,
+    <-34.1904,4.109,7.4964>,
+  }
+  normal_vectors {
+    4,
+    <-0.964439,-0,0.264307>,
+    <-0.976797,-0,0.214165>,
+    <-0.964439,-0,0.264307>,
+    <-0.976797,-0,0.214165>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face307
+
+// face number308 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body308 = mesh2{
+  vertex_vectors {
+    4,
+    <-30.5629,-4.109,17.0613>,
+    <-31.4029,-4.109,15.4609>,
+    <-30.5629,4.109,17.0613>,
+    <-31.4029,4.109,15.4609>,
+  }
+  normal_vectors {
+    4,
+    <-0.873161,-0,0.487432>,
+    <-0.89716,-0,0.441705>,
+    <-0.873161,-0,0.487432>,
+    <-0.89716,-0,0.441705>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face308
+
+// face number309 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body309 = mesh2{
+  vertex_vectors {
+    4,
+    <-25.5918,-4.109,23.8797>,
+    <-26.7904,-4.109,22.5268>,
+    <-25.5918,4.109,23.8797>,
+    <-26.7904,4.109,22.5268>,
+  }
+  normal_vectors {
+    4,
+    <-0.731139,-0,0.682229>,
+    <-0.765384,-0,0.643574>,
+    <-0.731139,-0,0.682229>,
+    <-0.765384,-0,0.643574>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face309
+
+// face number310 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body310 = mesh2{
+  vertex_vectors {
+    4,
+    <-19.1333,-4.109,29.3103>,
+    <-20.6209,-4.109,28.2836>,
+    <-19.1333,4.109,29.3103>,
+    <-20.6209,4.109,28.2836>,
+  }
+  normal_vectors {
+    4,
+    <-0.546625,-0,0.837377>,
+    <-0.589126,-0,0.808041>,
+    <-0.546625,-0,0.837377>,
+    <-0.589126,-0,0.808041>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face310
+
+// face number311 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body311 = mesh2{
+  vertex_vectors {
+    4,
+    <-11.5629,-4.109,33.0375>,
+    <-13.253,-4.109,32.3966>,
+    <-11.5629,4.109,33.0375>,
+    <-13.253,4.109,32.3966>,
+  }
+  normal_vectors {
+    4,
+    <-0.330344,-0,0.943861>,
+    <-0.37863,-0,0.925548>,
+    <-0.330344,-0,0.943861>,
+    <-0.37863,-0,0.925548>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face311
+
+// face number312 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body312 = mesh2{
+  vertex_vectors {
+    4,
+    <-3.32054,-4.109,34.8447>,
+    <-5.11483,-4.109,34.6268>,
+    <-3.32054,4.109,34.8447>,
+    <-5.11483,4.109,34.6268>,
+  }
+  normal_vectors {
+    4,
+    <-0.0948638,-0,0.99549>,
+    <-0.146129,-0,0.989266>,
+    <-0.0948638,-0,0.99549>,
+    <-0.146129,-0,0.989266>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face312
+
+// face number313 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body313 = mesh2{
+  vertex_vectors {
+    4,
+    <5.11483,-4.109,34.6268>,
+    <3.32054,-4.109,34.8447>,
+    <5.11483,4.109,34.6268>,
+    <3.32054,4.109,34.8447>,
+  }
+  normal_vectors {
+    4,
+    <0.146129,0,0.989266>,
+    <0.0948638,0,0.99549>,
+    <0.146129,0,0.989266>,
+    <0.0948638,0,0.99549>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face313
+
+// face number314 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body314 = mesh2{
+  vertex_vectors {
+    4,
+    <13.253,-4.109,32.3966>,
+    <11.5629,-4.109,33.0375>,
+    <13.253,4.109,32.3966>,
+    <11.5629,4.109,33.0375>,
+  }
+  normal_vectors {
+    4,
+    <0.37863,0,0.925548>,
+    <0.330344,0,0.943861>,
+    <0.37863,0,0.925548>,
+    <0.330344,0,0.943861>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face314
+
+// face number315 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body315 = mesh2{
+  vertex_vectors {
+    4,
+    <20.6209,-4.109,28.2836>,
+    <19.1333,-4.109,29.3103>,
+    <20.6209,4.109,28.2836>,
+    <19.1333,4.109,29.3103>,
+  }
+  normal_vectors {
+    4,
+    <0.589126,0,0.808041>,
+    <0.546625,0,0.837377>,
+    <0.589126,0,0.808041>,
+    <0.546625,0,0.837377>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face315
+
+// face number316 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body316 = mesh2{
+  vertex_vectors {
+    4,
+    <26.7904,-4.109,22.5268>,
+    <25.5918,-4.109,23.8797>,
+    <26.7904,4.109,22.5268>,
+    <25.5918,4.109,23.8797>,
+  }
+  normal_vectors {
+    4,
+    <0.765384,0,0.643574>,
+    <0.731139,0,0.682229>,
+    <0.765384,0,0.643574>,
+    <0.731139,0,0.682229>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face316
+
+// face number317 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body317 = mesh2{
+  vertex_vectors {
+    4,
+    <31.4029,-4.109,15.4609>,
+    <30.5629,-4.109,17.0613>,
+    <31.4029,4.109,15.4609>,
+    <30.5629,4.109,17.0613>,
+  }
+  normal_vectors {
+    4,
+    <0.89716,0,0.441705>,
+    <0.873161,0,0.487432>,
+    <0.89716,0,0.441705>,
+    <0.873161,0,0.487432>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face317
+
+// face number318 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body318 = mesh2{
+  vertex_vectors {
+    4,
+    <34.1904,-4.109,7.4964>,
+    <33.7579,-4.109,9.25134>,
+    <34.1904,4.109,7.4964>,
+    <33.7579,4.109,9.25134>,
+  }
+  normal_vectors {
+    4,
+    <0.976797,0,0.214165>,
+    <0.964439,0,0.264307>,
+    <0.976797,0,0.214165>,
+    <0.964439,0,0.264307>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face318
+
+// face number319 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body319 = mesh2{
+  vertex_vectors {
+    78,
+    <27.3425,-1.8502,0>,
+    <27.1432,-1.8502,3.29578>,
+    <26.548,-1.8502,6.5435>,
+    <25.5657,-1.8502,9.6958>,
+    <24.2106,-1.8502,12.7067>,
+    <22.5025,-1.8502,15.5323>,
+    <20.4662,-1.8502,18.1315>,
+    <18.1315,-1.8502,20.4662>,
+    <15.5323,-1.8502,22.5025>,
+    <12.7067,-1.8502,24.2106>,
+    <9.6958,-1.8502,25.5657>,
+    <6.5435,-1.8502,26.548>,
+    <3.29578,-1.8502,27.1432>,
+    <1.38168e-14,-1.8502,27.3425>,
+    <-3.29578,-1.8502,27.1432>,
+    <-6.5435,-1.8502,26.548>,
+    <-9.6958,-1.8502,25.5657>,
+    <-12.7067,-1.8502,24.2106>,
+    <-15.5323,-1.8502,22.5025>,
+    <-18.1315,-1.8502,20.4662>,
+    <-20.4662,-1.8502,18.1315>,
+    <-22.5025,-1.8502,15.5323>,
+    <-24.2106,-1.8502,12.7067>,
+    <-25.5657,-1.8502,9.6958>,
+    <-26.548,-1.8502,6.5435>,
+    <-27.1432,-1.8502,3.29578>,
+    <-27.3425,-1.8502,5.15086e-14>,
+    <-27.1432,-1.8502,-3.29578>,
+    <-26.548,-1.8502,-6.5435>,
+    <-25.5657,-1.8502,-9.6958>,
+    <-24.2106,-1.8502,-12.7067>,
+    <-22.5025,-1.8502,-15.5323>,
+    <-20.4662,-1.8502,-18.1315>,
+    <-18.1315,-1.8502,-20.4662>,
+    <-15.5323,-1.8502,-22.5025>,
+    <-12.7067,-1.8502,-24.2106>,
+    <-9.6958,-1.8502,-25.5657>,
+    <-6.5435,-1.8502,-26.548>,
+    <-3.29578,-1.8502,-27.1432>,
+    <-2.93078e-14,-1.8502,-27.3425>,
+    <3.29578,-1.8502,-27.1432>,
+    <6.5435,-1.8502,-26.548>,
+    <9.6958,-1.8502,-25.5657>,
+    <12.7067,-1.8502,-24.2106>,
+    <15.5323,-1.8502,-22.5025>,
+    <18.1315,-1.8502,-20.4662>,
+    <20.4662,-1.8502,-18.1315>,
+    <22.5025,-1.8502,-15.5323>,
+    <24.2106,-1.8502,-12.7067>,
+    <25.5657,-1.8502,-9.6958>,
+    <26.548,-1.8502,-6.5435>,
+    <27.1432,-1.8502,-3.29578>,
+    <5.29512,-1.8502,0>,
+    <5.14126,-1.8502,1.26721>,
+    <4.6886,-1.8502,2.46077>,
+    <3.96346,-1.8502,3.51132>,
+    <3.00797,-1.8502,4.3578>,
+    <1.87768,-1.8502,4.95103>,
+    <0.638257,-1.8502,5.25652>,
+    <-0.638257,-1.8502,5.25652>,
+    <-1.87768,-1.8502,4.95103>,
+    <-3.00797,-1.8502,4.3578>,
+    <-3.96346,-1.8502,3.51132>,
+    <-4.6886,-1.8502,2.46077>,
+    <-5.14126,-1.8502,1.26721>,
+    <-5.29512,-1.8502,4.94148e-15>,
+    <-5.14126,-1.8502,-1.26721>,
+    <-4.6886,-1.8502,-2.46077>,
+    <-3.96346,-1.8502,-3.51132>,
+    <-3.00797,-1.8502,-4.3578>,
+    <-1.87768,-1.8502,-4.95103>,
+    <-0.638257,-1.8502,-5.25652>,
+    <0.638257,-1.8502,-5.25652>,
+    <1.87768,-1.8502,-4.95103>,
+    <3.00797,-1.8502,-4.3578>,
+    <3.96346,-1.8502,-3.51132>,
+    <4.6886,-1.8502,-2.46077>,
+    <5.14126,-1.8502,-1.26721>,
+  }
+  normal_vectors {
+    78,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+    <0,-1,-2.2e-16>,
+  }
+  face_indices {
+    78,
+    <31,32,68>,
+    <32,33,68>,
+    <68,33,69>,
+    <33,34,69>,
+    <34,35,69>,
+    <31,68,67>,
+    <29,30,67>,
+    <30,31,67>,
+    <35,36,70>,
+    <36,37,70>,
+    <69,35,70>,
+    <27,28,66>,
+    <28,29,66>,
+    <29,67,66>,
+    <70,37,71>,
+    <37,38,71>,
+    <38,39,71>,
+    <27,66,65>,
+    <25,26,65>,
+    <26,27,65>,
+    <39,40,72>,
+    <40,41,72>,
+    <71,39,72>,
+    <25,65,64>,
+    <23,24,64>,
+    <24,25,64>,
+    <72,41,73>,
+    <41,42,73>,
+    <42,43,73>,
+    <23,64,63>,
+    <21,22,63>,
+    <22,23,63>,
+    <73,43,74>,
+    <43,44,74>,
+    <44,45,74>,
+    <20,21,62>,
+    <21,63,62>,
+    <74,45,75>,
+    <20,62,19>,
+    <62,61,19>,
+    <75,45,46>,
+    <19,61,18>,
+    <75,46,47>,
+    <76,75,47>,
+    <61,60,17>,
+    <18,61,17>,
+    <76,47,48>,
+    <17,60,16>,
+    <76,48,49>,
+    <77,76,49>,
+    <60,59,15>,
+    <16,60,15>,
+    <77,49,50>,
+    <15,59,14>,
+    <77,50,51>,
+    <52,77,51>,
+    <52,51,0>,
+    <14,59,13>,
+    <59,58,13>,
+    <52,0,1>,
+    <53,52,1>,
+    <13,58,12>,
+    <12,58,11>,
+    <58,57,11>,
+    <53,1,2>,
+    <53,2,3>,
+    <54,53,3>,
+    <11,57,10>,
+    <54,3,4>,
+    <10,57,9>,
+    <57,56,9>,
+    <9,56,8>,
+    <54,4,5>,
+    <55,54,5>,
+    <8,56,7>,
+    <56,55,7>,
+    <55,5,6>,
+    <7,55,6>,
+  }
+} // end of Face319
+
+// face number320 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body320 = mesh2{
+  vertex_vectors {
+    78,
+    <27.3425,1.8502,0>,
+    <27.1432,1.8502,3.29578>,
+    <26.548,1.8502,6.5435>,
+    <25.5657,1.8502,9.6958>,
+    <24.2106,1.8502,12.7067>,
+    <22.5025,1.8502,15.5323>,
+    <20.4662,1.8502,18.1315>,
+    <18.1315,1.8502,20.4662>,
+    <15.5323,1.8502,22.5025>,
+    <12.7067,1.8502,24.2106>,
+    <9.6958,1.8502,25.5657>,
+    <6.5435,1.8502,26.548>,
+    <3.29578,1.8502,27.1432>,
+    <1.38168e-14,1.8502,27.3425>,
+    <-3.29578,1.8502,27.1432>,
+    <-6.5435,1.8502,26.548>,
+    <-9.6958,1.8502,25.5657>,
+    <-12.7067,1.8502,24.2106>,
+    <-15.5323,1.8502,22.5025>,
+    <-18.1315,1.8502,20.4662>,
+    <-20.4662,1.8502,18.1315>,
+    <-22.5025,1.8502,15.5323>,
+    <-24.2106,1.8502,12.7067>,
+    <-25.5657,1.8502,9.6958>,
+    <-26.548,1.8502,6.5435>,
+    <-27.1432,1.8502,3.29578>,
+    <-27.3425,1.8502,5.15086e-14>,
+    <-27.1432,1.8502,-3.29578>,
+    <-26.548,1.8502,-6.5435>,
+    <-25.5657,1.8502,-9.6958>,
+    <-24.2106,1.8502,-12.7067>,
+    <-22.5025,1.8502,-15.5323>,
+    <-20.4662,1.8502,-18.1315>,
+    <-18.1315,1.8502,-20.4662>,
+    <-15.5323,1.8502,-22.5025>,
+    <-12.7067,1.8502,-24.2106>,
+    <-9.6958,1.8502,-25.5657>,
+    <-6.5435,1.8502,-26.548>,
+    <-3.29578,1.8502,-27.1432>,
+    <-2.93078e-14,1.8502,-27.3425>,
+    <3.29578,1.8502,-27.1432>,
+    <6.5435,1.8502,-26.548>,
+    <9.6958,1.8502,-25.5657>,
+    <12.7067,1.8502,-24.2106>,
+    <15.5323,1.8502,-22.5025>,
+    <18.1315,1.8502,-20.4662>,
+    <20.4662,1.8502,-18.1315>,
+    <22.5025,1.8502,-15.5323>,
+    <24.2106,1.8502,-12.7067>,
+    <25.5657,1.8502,-9.6958>,
+    <26.548,1.8502,-6.5435>,
+    <27.1432,1.8502,-3.29578>,
+    <5.29512,1.8502,0>,
+    <5.14126,1.8502,1.26721>,
+    <4.6886,1.8502,2.46077>,
+    <3.96346,1.8502,3.51132>,
+    <3.00797,1.8502,4.3578>,
+    <1.87768,1.8502,4.95103>,
+    <0.638257,1.8502,5.25652>,
+    <-0.638257,1.8502,5.25652>,
+    <-1.87768,1.8502,4.95103>,
+    <-3.00797,1.8502,4.3578>,
+    <-3.96346,1.8502,3.51132>,
+    <-4.6886,1.8502,2.46077>,
+    <-5.14126,1.8502,1.26721>,
+    <-5.29512,1.8502,4.94148e-15>,
+    <-5.14126,1.8502,-1.26721>,
+    <-4.6886,1.8502,-2.46077>,
+    <-3.96346,1.8502,-3.51132>,
+    <-3.00797,1.8502,-4.3578>,
+    <-1.87768,1.8502,-4.95103>,
+    <-0.638257,1.8502,-5.25652>,
+    <0.638257,1.8502,-5.25652>,
+    <1.87768,1.8502,-4.95103>,
+    <3.00797,1.8502,-4.3578>,
+    <3.96346,1.8502,-3.51132>,
+    <4.6886,1.8502,-2.46077>,
+    <5.14126,1.8502,-1.26721>,
+  }
+  normal_vectors {
+    78,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+    <0,1,-2.2e-16>,
+  }
+  face_indices {
+    78,
+    <68,32,31>,
+    <68,33,32>,
+    <69,33,68>,
+    <69,34,33>,
+    <69,35,34>,
+    <67,68,31>,
+    <67,30,29>,
+    <67,31,30>,
+    <70,36,35>,
+    <70,37,36>,
+    <70,35,69>,
+    <66,28,27>,
+    <66,29,28>,
+    <66,67,29>,
+    <71,37,70>,
+    <71,38,37>,
+    <71,39,38>,
+    <65,66,27>,
+    <65,26,25>,
+    <65,27,26>,
+    <72,40,39>,
+    <72,41,40>,
+    <72,39,71>,
+    <64,65,25>,
+    <64,24,23>,
+    <64,25,24>,
+    <73,41,72>,
+    <73,42,41>,
+    <73,43,42>,
+    <63,64,23>,
+    <63,22,21>,
+    <63,23,22>,
+    <74,43,73>,
+    <74,44,43>,
+    <74,45,44>,
+    <62,21,20>,
+    <62,63,21>,
+    <75,45,74>,
+    <19,62,20>,
+    <19,61,62>,
+    <46,45,75>,
+    <18,61,19>,
+    <47,46,75>,
+    <47,75,76>,
+    <17,60,61>,
+    <17,61,18>,
+    <48,47,76>,
+    <16,60,17>,
+    <49,48,76>,
+    <49,76,77>,
+    <15,59,60>,
+    <15,60,16>,
+    <50,49,77>,
+    <14,59,15>,
+    <51,50,77>,
+    <51,77,52>,
+    <0,51,52>,
+    <13,59,14>,
+    <13,58,59>,
+    <1,0,52>,
+    <1,52,53>,
+    <12,58,13>,
+    <11,58,12>,
+    <11,57,58>,
+    <2,1,53>,
+    <3,2,53>,
+    <3,53,54>,
+    <10,57,11>,
+    <4,3,54>,
+    <9,57,10>,
+    <9,56,57>,
+    <8,56,9>,
+    <5,4,54>,
+    <5,54,55>,
+    <7,56,8>,
+    <7,55,56>,
+    <6,5,55>,
+    <6,55,7>,
+  }
+} // end of Face320
+
+// face number321 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body321 = mesh2{
+  vertex_vectors {
+    54,
+    <5.29512,-5,-1e-15>,
+    <5.14126,-5,1.26721>,
+    <4.6886,-5,2.46077>,
+    <3.96346,-5,3.51132>,
+    <3.00797,-5,4.3578>,
+    <1.87768,-5,4.95103>,
+    <0.638257,-5,5.25652>,
+    <-0.638257,-5,5.25652>,
+    <-1.87768,-5,4.95103>,
+    <-3.00797,-5,4.3578>,
+    <-3.96346,-5,3.51132>,
+    <-4.6886,-5,2.46077>,
+    <-5.14126,-5,1.26721>,
+    <-5.29512,-5,4.24148e-15>,
+    <-5.14126,-5,-1.26721>,
+    <-4.6886,-5,-2.46077>,
+    <-3.96346,-5,-3.51132>,
+    <-3.00797,-5,-4.3578>,
+    <-1.87768,-5,-4.95103>,
+    <-0.638257,-5,-5.25652>,
+    <0.638257,-5,-5.25652>,
+    <1.87768,-5,-4.95103>,
+    <3.00797,-5,-4.3578>,
+    <3.96346,-5,-3.51132>,
+    <4.6886,-5,-2.46077>,
+    <5.14126,-5,-1.26721>,
+    <5.29512,-5,-1e-15>,
+    <5.29512,-1.8502,0>,
+    <5.29512,-1.8502,0>,
+    <5.14126,-1.8502,1.26721>,
+    <4.6886,-1.8502,2.46077>,
+    <3.96346,-1.8502,3.51132>,
+    <3.00797,-1.8502,4.3578>,
+    <1.87768,-1.8502,4.95103>,
+    <0.638257,-1.8502,5.25652>,
+    <-0.638257,-1.8502,5.25652>,
+    <-1.87768,-1.8502,4.95103>,
+    <-3.00797,-1.8502,4.3578>,
+    <-3.96346,-1.8502,3.51132>,
+    <-4.6886,-1.8502,2.46077>,
+    <-5.14126,-1.8502,1.26721>,
+    <-5.29512,-1.8502,4.94148e-15>,
+    <-5.14126,-1.8502,-1.26721>,
+    <-4.6886,-1.8502,-2.46077>,
+    <-3.96346,-1.8502,-3.51132>,
+    <-3.00797,-1.8502,-4.3578>,
+    <-1.87768,-1.8502,-4.95103>,
+    <-0.638257,-1.8502,-5.25652>,
+    <0.638257,-1.8502,-5.25652>,
+    <1.87768,-1.8502,-4.95103>,
+    <3.00797,-1.8502,-4.3578>,
+    <3.96346,-1.8502,-3.51132>,
+    <4.6886,-1.8502,-2.46077>,
+    <5.14126,-1.8502,-1.26721>,
+  }
+  normal_vectors {
+    54,
+    <1,0,-0>,
+    <0.970942,-5.26494e-17,0.239316>,
+    <0.885456,-1.02239e-16,0.464723>,
+    <0.748511,-1.45887e-16,0.663123>,
+    <0.568065,-1.81056e-16,0.822984>,
+    <0.354605,-2.05704e-16,0.935016>,
+    <0.120537,-2.18396e-16,0.992709>,
+    <-0.120537,-2.18396e-16,0.992709>,
+    <-0.354605,-2.05704e-16,0.935016>,
+    <-0.568065,-1.81056e-16,0.822984>,
+    <-0.748511,-1.45887e-16,0.663123>,
+    <-0.885456,-1.02239e-16,0.464723>,
+    <-0.970942,-5.26494e-17,0.239316>,
+    <-1,-2.22341e-31,1.01064e-15>,
+    <-0.970942,5.26494e-17,-0.239316>,
+    <-0.885456,1.02239e-16,-0.464723>,
+    <-0.748511,1.45887e-16,-0.663123>,
+    <-0.568065,1.81056e-16,-0.822984>,
+    <-0.354605,2.05704e-16,-0.935016>,
+    <-0.120537,2.18396e-16,-0.992709>,
+    <0.120537,2.18396e-16,-0.992709>,
+    <0.354605,2.05704e-16,-0.935016>,
+    <0.568065,1.81056e-16,-0.822984>,
+    <0.748511,1.45887e-16,-0.663123>,
+    <0.885456,1.02239e-16,-0.464723>,
+    <0.970942,5.26494e-17,-0.239316>,
+    <1,0,-0>,
+    <1,0,-0>,
+    <1,0,-0>,
+    <0.970942,-5.26494e-17,0.239316>,
+    <0.885456,-1.02239e-16,0.464723>,
+    <0.748511,-1.45887e-16,0.663123>,
+    <0.568065,-1.81056e-16,0.822984>,
+    <0.354605,-2.05704e-16,0.935016>,
+    <0.120537,-2.18396e-16,0.992709>,
+    <-0.120537,-2.18396e-16,0.992709>,
+    <-0.354605,-2.05704e-16,0.935016>,
+    <-0.568065,-1.81056e-16,0.822984>,
+    <-0.748511,-1.45887e-16,0.663123>,
+    <-0.885456,-1.02239e-16,0.464723>,
+    <-0.970942,-5.26494e-17,0.239316>,
+    <-1,-2.22341e-31,1.01064e-15>,
+    <-0.970942,5.26494e-17,-0.239316>,
+    <-0.885456,1.02239e-16,-0.464723>,
+    <-0.748511,1.45887e-16,-0.663123>,
+    <-0.568065,1.81056e-16,-0.822984>,
+    <-0.354605,2.05704e-16,-0.935016>,
+    <-0.120537,2.18396e-16,-0.992709>,
+    <0.120537,2.18396e-16,-0.992709>,
+    <0.354605,2.05704e-16,-0.935016>,
+    <0.568065,1.81056e-16,-0.822984>,
+    <0.748511,1.45887e-16,-0.663123>,
+    <0.885456,1.02239e-16,-0.464723>,
+    <0.970942,5.26494e-17,-0.239316>,
+  }
+  face_indices {
+    52,
+    <29,1,0>,
+    <29,0,28>,
+    <30,2,1>,
+    <30,1,29>,
+    <31,3,2>,
+    <31,2,30>,
+    <32,4,3>,
+    <32,5,4>,
+    <32,3,31>,
+    <33,5,32>,
+    <34,6,5>,
+    <34,7,6>,
+    <34,5,33>,
+    <35,7,34>,
+    <36,8,7>,
+    <36,9,8>,
+    <36,7,35>,
+    <37,9,36>,
+    <38,10,9>,
+    <38,9,37>,
+    <39,10,38>,
+    <39,11,10>,
+    <40,11,39>,
+    <40,12,11>,
+    <40,13,12>,
+    <41,13,40>,
+    <41,14,13>,
+    <42,14,41>,
+    <42,15,14>,
+    <43,15,42>,
+    <44,16,15>,
+    <44,15,43>,
+    <45,17,16>,
+    <45,16,44>,
+    <46,18,17>,
+    <46,17,45>,
+    <47,19,18>,
+    <47,18,46>,
+    <48,20,19>,
+    <48,19,47>,
+    <49,21,20>,
+    <49,20,48>,
+    <50,22,21>,
+    <50,21,49>,
+    <51,23,22>,
+    <51,24,23>,
+    <51,22,50>,
+    <52,24,51>,
+    <53,25,24>,
+    <53,24,52>,
+    <27,26,25>,
+    <27,25,53>,
+  }
+} // end of Face321
+
+// face number322 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body322 = mesh2{
+  vertex_vectors {
+    54,
+    <5.29512,5,-1e-15>,
+    <5.14126,5,-1.26721>,
+    <4.6886,5,-2.46077>,
+    <3.96346,5,-3.51132>,
+    <3.00797,5,-4.3578>,
+    <1.87768,5,-4.95103>,
+    <0.638257,5,-5.25652>,
+    <-0.638257,5,-5.25652>,
+    <-1.87768,5,-4.95103>,
+    <-3.00797,5,-4.3578>,
+    <-3.96346,5,-3.51132>,
+    <-4.6886,5,-2.46077>,
+    <-5.14126,5,-1.26721>,
+    <-5.29512,5,-6.46148e-15>,
+    <-5.14126,5,1.26721>,
+    <-4.6886,5,2.46077>,
+    <-3.96346,5,3.51132>,
+    <-3.00797,5,4.3578>,
+    <-1.87768,5,4.95103>,
+    <-0.638257,5,5.25652>,
+    <0.638257,5,5.25652>,
+    <1.87768,5,4.95103>,
+    <3.00797,5,4.3578>,
+    <3.96346,5,3.51132>,
+    <4.6886,5,2.46077>,
+    <5.14126,5,1.26721>,
+    <5.29512,5,-1e-15>,
+    <5.29512,1.8502,0>,
+    <5.29512,1.8502,0>,
+    <5.14126,1.8502,1.26721>,
+    <4.6886,1.8502,2.46077>,
+    <3.96346,1.8502,3.51132>,
+    <3.00797,1.8502,4.3578>,
+    <1.87768,1.8502,4.95103>,
+    <0.638257,1.8502,5.25652>,
+    <-0.638257,1.8502,5.25652>,
+    <-1.87768,1.8502,4.95103>,
+    <-3.00797,1.8502,4.3578>,
+    <-3.96346,1.8502,3.51132>,
+    <-4.6886,1.8502,2.46077>,
+    <-5.14126,1.8502,1.26721>,
+    <-5.29512,1.8502,4.94148e-15>,
+    <-5.14126,1.8502,-1.26721>,
+    <-4.6886,1.8502,-2.46077>,
+    <-3.96346,1.8502,-3.51132>,
+    <-3.00797,1.8502,-4.3578>,
+    <-1.87768,1.8502,-4.95103>,
+    <-0.638257,1.8502,-5.25652>,
+    <0.638257,1.8502,-5.25652>,
+    <1.87768,1.8502,-4.95103>,
+    <3.00797,1.8502,-4.3578>,
+    <3.96346,1.8502,-3.51132>,
+    <4.6886,1.8502,-2.46077>,
+    <5.14126,1.8502,-1.26721>,
+  }
+  normal_vectors {
+    54,
+    <1,-0,-0>,
+    <0.970942,-5.26494e-17,-0.239316>,
+    <0.885456,-1.02239e-16,-0.464723>,
+    <0.748511,-1.45887e-16,-0.663123>,
+    <0.568065,-1.81056e-16,-0.822984>,
+    <0.354605,-2.05704e-16,-0.935016>,
+    <0.120537,-2.18396e-16,-0.992709>,
+    <-0.120537,-2.18396e-16,-0.992709>,
+    <-0.354605,-2.05704e-16,-0.935016>,
+    <-0.568065,-1.81056e-16,-0.822984>,
+    <-0.748511,-1.45887e-16,-0.663123>,
+    <-0.885456,-1.02239e-16,-0.464723>,
+    <-0.970942,-5.26494e-17,-0.239316>,
+    <-1,-1.68457e-31,-7.65714e-16>,
+    <-0.970942,5.26494e-17,0.239316>,
+    <-0.885456,1.02239e-16,0.464723>,
+    <-0.748511,1.45887e-16,0.663123>,
+    <-0.568065,1.81056e-16,0.822984>,
+    <-0.354605,2.05704e-16,0.935016>,
+    <-0.120537,2.18396e-16,0.992709>,
+    <0.120537,2.18396e-16,0.992709>,
+    <0.354605,2.05704e-16,0.935016>,
+    <0.568065,1.81056e-16,0.822984>,
+    <0.748511,1.45887e-16,0.663123>,
+    <0.885456,1.02239e-16,0.464723>,
+    <0.970942,5.26494e-17,0.239316>,
+    <1,-0,-0>,
+    <1,-0,-0>,
+    <1,-0,-0>,
+    <0.970942,5.26494e-17,0.239316>,
+    <0.885456,1.02239e-16,0.464723>,
+    <0.748511,1.45887e-16,0.663123>,
+    <0.568065,1.81056e-16,0.822984>,
+    <0.354605,2.05704e-16,0.935016>,
+    <0.120537,2.18396e-16,0.992709>,
+    <-0.120537,2.18396e-16,0.992709>,
+    <-0.354605,2.05704e-16,0.935016>,
+    <-0.568065,1.81056e-16,0.822984>,
+    <-0.748511,1.45887e-16,0.663123>,
+    <-0.885456,1.02239e-16,0.464723>,
+    <-0.970942,5.26494e-17,0.239316>,
+    <-1,2.22341e-31,1.01064e-15>,
+    <-0.970942,-5.26494e-17,-0.239316>,
+    <-0.885456,-1.02239e-16,-0.464723>,
+    <-0.748511,-1.45887e-16,-0.663123>,
+    <-0.568065,-1.81056e-16,-0.822984>,
+    <-0.354605,-2.05704e-16,-0.935016>,
+    <-0.120537,-2.18396e-16,-0.992709>,
+    <0.120537,-2.18396e-16,-0.992709>,
+    <0.354605,-2.05704e-16,-0.935016>,
+    <0.568065,-1.81056e-16,-0.822984>,
+    <0.748511,-1.45887e-16,-0.663123>,
+    <0.885456,-1.02239e-16,-0.464723>,
+    <0.970942,-5.26494e-17,-0.239316>,
+  }
+  face_indices {
+    52,
+    <26,25,29>,
+    <28,26,29>,
+    <25,24,30>,
+    <29,25,30>,
+    <24,23,31>,
+    <30,24,31>,
+    <23,22,32>,
+    <31,23,32>,
+    <22,21,33>,
+    <32,22,33>,
+    <21,20,34>,
+    <33,21,34>,
+    <20,19,35>,
+    <34,20,35>,
+    <19,18,36>,
+    <35,19,36>,
+    <18,17,37>,
+    <36,18,37>,
+    <17,16,38>,
+    <37,17,38>,
+    <38,16,39>,
+    <16,15,39>,
+    <39,15,40>,
+    <15,14,40>,
+    <40,14,41>,
+    <14,13,41>,
+    <41,13,42>,
+    <13,12,42>,
+    <12,11,43>,
+    <42,12,43>,
+    <11,10,44>,
+    <43,11,44>,
+    <10,9,45>,
+    <44,10,45>,
+    <9,8,46>,
+    <45,9,46>,
+    <7,6,47>,
+    <8,7,47>,
+    <46,8,47>,
+    <6,5,48>,
+    <47,6,48>,
+    <48,5,49>,
+    <5,4,50>,
+    <49,5,50>,
+    <4,3,51>,
+    <50,4,51>,
+    <3,2,52>,
+    <51,3,52>,
+    <1,0,53>,
+    <2,1,53>,
+    <52,2,53>,
+    <53,0,27>,
+  }
+} // end of Face322
+
+// face number323 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body323 = mesh2{
+  vertex_vectors {
+    52,
+    <5.29512,-5,-1e-15>,
+    <5.14126,-5,1.26721>,
+    <4.6886,-5,2.46077>,
+    <3.96346,-5,3.51132>,
+    <3.00797,-5,4.3578>,
+    <1.87768,-5,4.95103>,
+    <0.638257,-5,5.25652>,
+    <-0.638257,-5,5.25652>,
+    <-1.87768,-5,4.95103>,
+    <-3.00797,-5,4.3578>,
+    <-3.96346,-5,3.51132>,
+    <-4.6886,-5,2.46077>,
+    <-5.14126,-5,1.26721>,
+    <-5.29512,-5,4.24148e-15>,
+    <-5.14126,-5,-1.26721>,
+    <-4.6886,-5,-2.46077>,
+    <-3.96346,-5,-3.51132>,
+    <-3.00797,-5,-4.3578>,
+    <-1.87768,-5,-4.95103>,
+    <-0.638257,-5,-5.25652>,
+    <0.638257,-5,-5.25652>,
+    <1.87768,-5,-4.95103>,
+    <3.00797,-5,-4.3578>,
+    <3.96346,-5,-3.51132>,
+    <4.6886,-5,-2.46077>,
+    <5.14126,-5,-1.26721>,
+    <3,-5,-1e-15>,
+    <2.91283,-5,0.717947>,
+    <2.65637,-5,1.39417>,
+    <2.24553,-5,1.98937>,
+    <1.70419,-5,2.46895>,
+    <1.06381,-5,2.80505>,
+    <0.36161,-5,2.97813>,
+    <-0.36161,-5,2.97813>,
+    <-1.06381,-5,2.80505>,
+    <-1.70419,-5,2.46895>,
+    <-2.24553,-5,1.98937>,
+    <-2.65637,-5,1.39417>,
+    <-2.91283,-5,0.717947>,
+    <-3,-5,3.03193e-15>,
+    <-2.91283,-5,-0.717947>,
+    <-2.65637,-5,-1.39417>,
+    <-2.24553,-5,-1.98937>,
+    <-1.70419,-5,-2.46895>,
+    <-1.06381,-5,-2.80505>,
+    <-0.36161,-5,-2.97813>,
+    <0.36161,-5,-2.97813>,
+    <1.06381,-5,-2.80505>,
+    <1.70419,-5,-2.46895>,
+    <2.24553,-5,-1.98937>,
+    <2.65637,-5,-1.39417>,
+    <2.91283,-5,-0.717947>,
+  }
+  normal_vectors {
+    52,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+    <-0,-1,-0>,
+  }
+  face_indices {
+    52,
+    <15,16,42>,
+    <16,17,43>,
+    <42,16,43>,
+    <14,15,41>,
+    <15,42,41>,
+    <17,18,44>,
+    <43,17,44>,
+    <14,41,40>,
+    <18,19,45>,
+    <44,18,45>,
+    <12,13,39>,
+    <13,14,39>,
+    <14,40,39>,
+    <19,20,46>,
+    <45,19,46>,
+    <12,39,38>,
+    <20,21,47>,
+    <46,20,47>,
+    <11,12,37>,
+    <12,38,37>,
+    <21,22,48>,
+    <47,21,48>,
+    <10,11,36>,
+    <11,37,36>,
+    <48,22,23>,
+    <49,48,23>,
+    <10,36,35>,
+    <49,23,50>,
+    <10,35,9>,
+    <50,23,24>,
+    <9,35,8>,
+    <35,34,8>,
+    <50,24,25>,
+    <51,50,25>,
+    <8,34,7>,
+    <33,32,7>,
+    <34,33,7>,
+    <51,25,0>,
+    <26,51,0>,
+    <7,32,6>,
+    <27,26,1>,
+    <28,27,1>,
+    <26,0,1>,
+    <32,31,5>,
+    <6,32,5>,
+    <28,1,2>,
+    <31,30,4>,
+    <5,31,4>,
+    <29,28,3>,
+    <30,29,3>,
+    <28,2,3>,
+    <4,30,3>,
+  }
+} // end of Face323
+
+// face number324 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body324 = mesh2{
+  vertex_vectors {
+    52,
+    <5.29512,5,-1e-15>,
+    <5.14126,5,-1.26721>,
+    <4.6886,5,-2.46077>,
+    <3.96346,5,-3.51132>,
+    <3.00797,5,-4.3578>,
+    <1.87768,5,-4.95103>,
+    <0.638257,5,-5.25652>,
+    <-0.638257,5,-5.25652>,
+    <-1.87768,5,-4.95103>,
+    <-3.00797,5,-4.3578>,
+    <-3.96346,5,-3.51132>,
+    <-4.6886,5,-2.46077>,
+    <-5.14126,5,-1.26721>,
+    <-5.29512,5,-6.46148e-15>,
+    <-5.14126,5,1.26721>,
+    <-4.6886,5,2.46077>,
+    <-3.96346,5,3.51132>,
+    <-3.00797,5,4.3578>,
+    <-1.87768,5,4.95103>,
+    <-0.638257,5,5.25652>,
+    <0.638257,5,5.25652>,
+    <1.87768,5,4.95103>,
+    <3.00797,5,4.3578>,
+    <3.96346,5,3.51132>,
+    <4.6886,5,2.46077>,
+    <5.14126,5,1.26721>,
+    <3,5,-1e-15>,
+    <2.91283,5,0.717947>,
+    <2.65637,5,1.39417>,
+    <2.24553,5,1.98937>,
+    <1.70419,5,2.46895>,
+    <1.06381,5,2.80505>,
+    <0.36161,5,2.97813>,
+    <-0.36161,5,2.97813>,
+    <-1.06381,5,2.80505>,
+    <-1.70419,5,2.46895>,
+    <-2.24553,5,1.98937>,
+    <-2.65637,5,1.39417>,
+    <-2.91283,5,0.717947>,
+    <-3,5,3.03193e-15>,
+    <-2.91283,5,-0.717947>,
+    <-2.65637,5,-1.39417>,
+    <-2.24553,5,-1.98937>,
+    <-1.70419,5,-2.46895>,
+    <-1.06381,5,-2.80505>,
+    <-0.36161,5,-2.97813>,
+    <0.36161,5,-2.97813>,
+    <1.06381,5,-2.80505>,
+    <1.70419,5,-2.46895>,
+    <2.24553,5,-1.98937>,
+    <2.65637,5,-1.39417>,
+    <2.91283,5,-0.717947>,
+  }
+  normal_vectors {
+    52,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+    <0,1,0>,
+  }
+  face_indices {
+    52,
+    <42,10,11>,
+    <43,9,10>,
+    <43,10,42>,
+    <41,11,12>,
+    <41,42,11>,
+    <44,8,9>,
+    <44,9,43>,
+    <40,12,13>,
+    <40,41,12>,
+    <45,7,8>,
+    <45,8,44>,
+    <39,13,14>,
+    <39,40,13>,
+    <46,6,7>,
+    <46,7,45>,
+    <38,14,15>,
+    <38,39,14>,
+    <47,5,6>,
+    <47,6,46>,
+    <37,38,15>,
+    <48,4,5>,
+    <48,5,47>,
+    <36,15,16>,
+    <36,37,15>,
+    <3,4,48>,
+    <3,48,49>,
+    <35,36,16>,
+    <50,3,49>,
+    <17,35,16>,
+    <2,3,50>,
+    <2,50,51>,
+    <18,35,17>,
+    <18,34,35>,
+    <1,2,51>,
+    <19,34,18>,
+    <19,33,34>,
+    <0,26,27>,
+    <0,1,51>,
+    <0,51,26>,
+    <20,32,33>,
+    <20,33,19>,
+    <25,0,27>,
+    <25,27,28>,
+    <21,31,32>,
+    <21,32,20>,
+    <24,28,29>,
+    <24,25,28>,
+    <22,30,31>,
+    <22,31,21>,
+    <23,29,30>,
+    <23,24,29>,
+    <23,30,22>,
+  }
+} // end of Face324
+
+// face number325 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body325 = mesh2{
+  vertex_vectors {
+    54,
+    <3,5,-1e-15>,
+    <2.91283,5,0.717947>,
+    <2.65637,5,1.39417>,
+    <2.24553,5,1.98937>,
+    <1.70419,5,2.46895>,
+    <1.06381,5,2.80505>,
+    <0.36161,5,2.97813>,
+    <-0.36161,5,2.97813>,
+    <-1.06381,5,2.80505>,
+    <-1.70419,5,2.46895>,
+    <-2.24553,5,1.98937>,
+    <-2.65637,5,1.39417>,
+    <-2.91283,5,0.717947>,
+    <-3,5,3.03193e-15>,
+    <-2.91283,5,-0.717947>,
+    <-2.65637,5,-1.39417>,
+    <-2.24553,5,-1.98937>,
+    <-1.70419,5,-2.46895>,
+    <-1.06381,5,-2.80505>,
+    <-0.36161,5,-2.97813>,
+    <0.36161,5,-2.97813>,
+    <1.06381,5,-2.80505>,
+    <1.70419,5,-2.46895>,
+    <2.24553,5,-1.98937>,
+    <2.65637,5,-1.39417>,
+    <2.91283,5,-0.717947>,
+    <3,5,-1e-15>,
+    <3,-5,-1e-15>,
+    <2.91283,-5,0.717947>,
+    <2.65637,-5,1.39417>,
+    <2.24553,-5,1.98937>,
+    <1.70419,-5,2.46895>,
+    <1.06381,-5,2.80505>,
+    <0.36161,-5,2.97813>,
+    <-0.36161,-5,2.97813>,
+    <-1.06381,-5,2.80505>,
+    <-1.70419,-5,2.46895>,
+    <-2.24553,-5,1.98937>,
+    <-2.65637,-5,1.39417>,
+    <-2.91283,-5,0.717947>,
+    <-3,-5,3.03193e-15>,
+    <-2.91283,-5,-0.717947>,
+    <-2.65637,-5,-1.39417>,
+    <-2.24553,-5,-1.98937>,
+    <-1.70419,-5,-2.46895>,
+    <-1.06381,-5,-2.80505>,
+    <-0.36161,-5,-2.97813>,
+    <0.36161,-5,-2.97813>,
+    <1.06381,-5,-2.80505>,
+    <1.70419,-5,-2.46895>,
+    <2.24553,-5,-1.98937>,
+    <2.65637,-5,-1.39417>,
+    <2.91283,-5,-0.717947>,
+    <3,-5,-1e-15>,
+  }
+  normal_vectors {
+    54,
+    <-1,-0,-0>,
+    <-0.970942,0,-0.239316>,
+    <-0.885456,0,-0.464723>,
+    <-0.748511,0,-0.663123>,
+    <-0.568065,0,-0.822984>,
+    <-0.354605,0,-0.935016>,
+    <-0.120537,0,-0.992709>,
+    <0.120537,-0,-0.992709>,
+    <0.354605,-0,-0.935016>,
+    <0.568065,-0,-0.822984>,
+    <0.748511,-0,-0.663123>,
+    <0.885456,-0,-0.464723>,
+    <0.970942,-0,-0.239316>,
+    <1,-0,-1.01064e-15>,
+    <0.970942,-0,0.239316>,
+    <0.885456,-0,0.464723>,
+    <0.748511,-0,0.663123>,
+    <0.568065,-0,0.822984>,
+    <0.354605,-0,0.935016>,
+    <0.120537,-0,0.992709>,
+    <-0.120537,-0,0.992709>,
+    <-0.354605,-0,0.935016>,
+    <-0.568065,-0,0.822984>,
+    <-0.748511,-0,0.663123>,
+    <-0.885456,-0,0.464723>,
+    <-0.970942,-0,0.239316>,
+    <-1,-0,-0>,
+    <-1,-0,-0>,
+    <-0.970942,0,-0.239316>,
+    <-0.885456,0,-0.464723>,
+    <-0.748511,0,-0.663123>,
+    <-0.568065,0,-0.822984>,
+    <-0.354605,0,-0.935016>,
+    <-0.120537,0,-0.992709>,
+    <0.120537,-0,-0.992709>,
+    <0.354605,-0,-0.935016>,
+    <0.568065,-0,-0.822984>,
+    <0.748511,-0,-0.663123>,
+    <0.885456,-0,-0.464723>,
+    <0.970942,-0,-0.239316>,
+    <1,-0,-1.01064e-15>,
+    <0.970942,-0,0.239316>,
+    <0.885456,-0,0.464723>,
+    <0.748511,-0,0.663123>,
+    <0.568065,-0,0.822984>,
+    <0.354605,-0,0.935016>,
+    <0.120537,-0,0.992709>,
+    <-0.120537,-0,0.992709>,
+    <-0.354605,-0,0.935016>,
+    <-0.568065,-0,0.822984>,
+    <-0.748511,-0,0.663123>,
+    <-0.885456,-0,0.464723>,
+    <-0.970942,-0,0.239316>,
+    <-1,-0,-0>,
+  }
+  face_indices {
+    52,
+    <27,28,0>,
+    <28,29,1>,
+    <0,28,1>,
+    <1,29,2>,
+    <29,30,3>,
+    <30,31,3>,
+    <2,29,3>,
+    <3,31,4>,
+    <31,32,5>,
+    <4,31,5>,
+    <32,33,6>,
+    <5,32,6>,
+    <33,34,7>,
+    <34,35,7>,
+    <6,33,7>,
+    <7,35,8>,
+    <35,36,9>,
+    <8,35,9>,
+    <36,37,10>,
+    <9,36,10>,
+    <37,38,11>,
+    <38,39,11>,
+    <10,37,11>,
+    <11,39,12>,
+    <12,39,13>,
+    <39,40,13>,
+    <13,40,14>,
+    <40,41,14>,
+    <14,41,15>,
+    <41,42,15>,
+    <15,42,16>,
+    <42,43,16>,
+    <16,43,17>,
+    <43,44,17>,
+    <44,45,17>,
+    <17,45,18>,
+    <18,45,19>,
+    <45,46,19>,
+    <19,46,20>,
+    <46,47,20>,
+    <20,47,21>,
+    <47,48,21>,
+    <21,48,22>,
+    <48,49,22>,
+    <49,50,22>,
+    <22,50,23>,
+    <50,51,23>,
+    <51,52,24>,
+    <23,51,24>,
+    <24,52,25>,
+    <52,53,26>,
+    <25,52,26>,
+  }
+} // end of Face325
+
+
+
+// Declare all together +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body = union {
+mesh2{ Pov_Body1}
+mesh2{ Pov_Body2}
+mesh2{ Pov_Body3}
+mesh2{ Pov_Body4}
+mesh2{ Pov_Body5}
+mesh2{ Pov_Body6}
+mesh2{ Pov_Body7}
+mesh2{ Pov_Body8}
+mesh2{ Pov_Body9}
+mesh2{ Pov_Body10}
+mesh2{ Pov_Body11}
+mesh2{ Pov_Body12}
+mesh2{ Pov_Body13}
+mesh2{ Pov_Body14}
+mesh2{ Pov_Body15}
+mesh2{ Pov_Body16}
+mesh2{ Pov_Body17}
+mesh2{ Pov_Body18}
+mesh2{ Pov_Body19}
+mesh2{ Pov_Body20}
+mesh2{ Pov_Body21}
+mesh2{ Pov_Body22}
+mesh2{ Pov_Body23}
+mesh2{ Pov_Body24}
+mesh2{ Pov_Body25}
+mesh2{ Pov_Body26}
+mesh2{ Pov_Body27}
+mesh2{ Pov_Body28}
+mesh2{ Pov_Body29}
+mesh2{ Pov_Body30}
+mesh2{ Pov_Body31}
+mesh2{ Pov_Body32}
+mesh2{ Pov_Body33}
+mesh2{ Pov_Body34}
+mesh2{ Pov_Body35}
+mesh2{ Pov_Body36}
+mesh2{ Pov_Body37}
+mesh2{ Pov_Body38}
+mesh2{ Pov_Body39}
+mesh2{ Pov_Body40}
+mesh2{ Pov_Body41}
+mesh2{ Pov_Body42}
+mesh2{ Pov_Body43}
+mesh2{ Pov_Body44}
+mesh2{ Pov_Body45}
+mesh2{ Pov_Body46}
+mesh2{ Pov_Body47}
+mesh2{ Pov_Body48}
+mesh2{ Pov_Body49}
+mesh2{ Pov_Body50}
+mesh2{ Pov_Body51}
+mesh2{ Pov_Body52}
+mesh2{ Pov_Body53}
+mesh2{ Pov_Body54}
+mesh2{ Pov_Body55}
+mesh2{ Pov_Body56}
+mesh2{ Pov_Body57}
+mesh2{ Pov_Body58}
+mesh2{ Pov_Body59}
+mesh2{ Pov_Body60}
+mesh2{ Pov_Body61}
+mesh2{ Pov_Body62}
+mesh2{ Pov_Body63}
+mesh2{ Pov_Body64}
+mesh2{ Pov_Body65}
+mesh2{ Pov_Body66}
+mesh2{ Pov_Body67}
+mesh2{ Pov_Body68}
+mesh2{ Pov_Body69}
+mesh2{ Pov_Body70}
+mesh2{ Pov_Body71}
+mesh2{ Pov_Body72}
+mesh2{ Pov_Body73}
+mesh2{ Pov_Body74}
+mesh2{ Pov_Body75}
+mesh2{ Pov_Body76}
+mesh2{ Pov_Body77}
+mesh2{ Pov_Body78}
+mesh2{ Pov_Body79}
+mesh2{ Pov_Body80}
+mesh2{ Pov_Body81}
+mesh2{ Pov_Body82}
+mesh2{ Pov_Body83}
+mesh2{ Pov_Body84}
+mesh2{ Pov_Body85}
+mesh2{ Pov_Body86}
+mesh2{ Pov_Body87}
+mesh2{ Pov_Body88}
+mesh2{ Pov_Body89}
+mesh2{ Pov_Body90}
+mesh2{ Pov_Body91}
+mesh2{ Pov_Body92}
+mesh2{ Pov_Body93}
+mesh2{ Pov_Body94}
+mesh2{ Pov_Body95}
+mesh2{ Pov_Body96}
+mesh2{ Pov_Body97}
+mesh2{ Pov_Body98}
+mesh2{ Pov_Body99}
+mesh2{ Pov_Body100}
+mesh2{ Pov_Body101}
+mesh2{ Pov_Body102}
+mesh2{ Pov_Body103}
+mesh2{ Pov_Body104}
+mesh2{ Pov_Body105}
+mesh2{ Pov_Body106}
+mesh2{ Pov_Body107}
+mesh2{ Pov_Body108}
+mesh2{ Pov_Body109}
+mesh2{ Pov_Body110}
+mesh2{ Pov_Body111}
+mesh2{ Pov_Body112}
+mesh2{ Pov_Body113}
+mesh2{ Pov_Body114}
+mesh2{ Pov_Body115}
+mesh2{ Pov_Body116}
+mesh2{ Pov_Body117}
+mesh2{ Pov_Body118}
+mesh2{ Pov_Body119}
+mesh2{ Pov_Body120}
+mesh2{ Pov_Body121}
+mesh2{ Pov_Body122}
+mesh2{ Pov_Body123}
+mesh2{ Pov_Body124}
+mesh2{ Pov_Body125}
+mesh2{ Pov_Body126}
+mesh2{ Pov_Body127}
+mesh2{ Pov_Body128}
+mesh2{ Pov_Body129}
+mesh2{ Pov_Body130}
+mesh2{ Pov_Body131}
+mesh2{ Pov_Body132}
+mesh2{ Pov_Body133}
+mesh2{ Pov_Body134}
+mesh2{ Pov_Body135}
+mesh2{ Pov_Body136}
+mesh2{ Pov_Body137}
+mesh2{ Pov_Body138}
+mesh2{ Pov_Body139}
+mesh2{ Pov_Body140}
+mesh2{ Pov_Body141}
+mesh2{ Pov_Body142}
+mesh2{ Pov_Body143}
+mesh2{ Pov_Body144}
+mesh2{ Pov_Body145}
+mesh2{ Pov_Body146}
+mesh2{ Pov_Body147}
+mesh2{ Pov_Body148}
+mesh2{ Pov_Body149}
+mesh2{ Pov_Body150}
+mesh2{ Pov_Body151}
+mesh2{ Pov_Body152}
+mesh2{ Pov_Body153}
+mesh2{ Pov_Body154}
+mesh2{ Pov_Body155}
+mesh2{ Pov_Body156}
+mesh2{ Pov_Body157}
+mesh2{ Pov_Body158}
+mesh2{ Pov_Body159}
+mesh2{ Pov_Body160}
+mesh2{ Pov_Body161}
+mesh2{ Pov_Body162}
+mesh2{ Pov_Body163}
+mesh2{ Pov_Body164}
+mesh2{ Pov_Body165}
+mesh2{ Pov_Body166}
+mesh2{ Pov_Body167}
+mesh2{ Pov_Body168}
+mesh2{ Pov_Body169}
+mesh2{ Pov_Body170}
+mesh2{ Pov_Body171}
+mesh2{ Pov_Body172}
+mesh2{ Pov_Body173}
+mesh2{ Pov_Body174}
+mesh2{ Pov_Body175}
+mesh2{ Pov_Body176}
+mesh2{ Pov_Body177}
+mesh2{ Pov_Body178}
+mesh2{ Pov_Body179}
+mesh2{ Pov_Body180}
+mesh2{ Pov_Body181}
+mesh2{ Pov_Body182}
+mesh2{ Pov_Body183}
+mesh2{ Pov_Body184}
+mesh2{ Pov_Body185}
+mesh2{ Pov_Body186}
+mesh2{ Pov_Body187}
+mesh2{ Pov_Body188}
+mesh2{ Pov_Body189}
+mesh2{ Pov_Body190}
+mesh2{ Pov_Body191}
+mesh2{ Pov_Body192}
+mesh2{ Pov_Body193}
+mesh2{ Pov_Body194}
+mesh2{ Pov_Body195}
+mesh2{ Pov_Body196}
+mesh2{ Pov_Body197}
+mesh2{ Pov_Body198}
+mesh2{ Pov_Body199}
+mesh2{ Pov_Body200}
+mesh2{ Pov_Body201}
+mesh2{ Pov_Body202}
+mesh2{ Pov_Body203}
+mesh2{ Pov_Body204}
+mesh2{ Pov_Body205}
+mesh2{ Pov_Body206}
+mesh2{ Pov_Body207}
+mesh2{ Pov_Body208}
+mesh2{ Pov_Body209}
+mesh2{ Pov_Body210}
+mesh2{ Pov_Body211}
+mesh2{ Pov_Body212}
+mesh2{ Pov_Body213}
+mesh2{ Pov_Body214}
+mesh2{ Pov_Body215}
+mesh2{ Pov_Body216}
+mesh2{ Pov_Body217}
+mesh2{ Pov_Body218}
+mesh2{ Pov_Body219}
+mesh2{ Pov_Body220}
+mesh2{ Pov_Body221}
+mesh2{ Pov_Body222}
+mesh2{ Pov_Body223}
+mesh2{ Pov_Body224}
+mesh2{ Pov_Body225}
+mesh2{ Pov_Body226}
+mesh2{ Pov_Body227}
+mesh2{ Pov_Body228}
+mesh2{ Pov_Body229}
+mesh2{ Pov_Body230}
+mesh2{ Pov_Body231}
+mesh2{ Pov_Body232}
+mesh2{ Pov_Body233}
+mesh2{ Pov_Body234}
+mesh2{ Pov_Body235}
+mesh2{ Pov_Body236}
+mesh2{ Pov_Body237}
+mesh2{ Pov_Body238}
+mesh2{ Pov_Body239}
+mesh2{ Pov_Body240}
+mesh2{ Pov_Body241}
+mesh2{ Pov_Body242}
+mesh2{ Pov_Body243}
+mesh2{ Pov_Body244}
+mesh2{ Pov_Body245}
+mesh2{ Pov_Body246}
+mesh2{ Pov_Body247}
+mesh2{ Pov_Body248}
+mesh2{ Pov_Body249}
+mesh2{ Pov_Body250}
+mesh2{ Pov_Body251}
+mesh2{ Pov_Body252}
+mesh2{ Pov_Body253}
+mesh2{ Pov_Body254}
+mesh2{ Pov_Body255}
+mesh2{ Pov_Body256}
+mesh2{ Pov_Body257}
+mesh2{ Pov_Body258}
+mesh2{ Pov_Body259}
+mesh2{ Pov_Body260}
+mesh2{ Pov_Body261}
+mesh2{ Pov_Body262}
+mesh2{ Pov_Body263}
+mesh2{ Pov_Body264}
+mesh2{ Pov_Body265}
+mesh2{ Pov_Body266}
+mesh2{ Pov_Body267}
+mesh2{ Pov_Body268}
+mesh2{ Pov_Body269}
+mesh2{ Pov_Body270}
+mesh2{ Pov_Body271}
+mesh2{ Pov_Body272}
+mesh2{ Pov_Body273}
+mesh2{ Pov_Body274}
+mesh2{ Pov_Body275}
+mesh2{ Pov_Body276}
+mesh2{ Pov_Body277}
+mesh2{ Pov_Body278}
+mesh2{ Pov_Body279}
+mesh2{ Pov_Body280}
+mesh2{ Pov_Body281}
+mesh2{ Pov_Body282}
+mesh2{ Pov_Body283}
+mesh2{ Pov_Body284}
+mesh2{ Pov_Body285}
+mesh2{ Pov_Body286}
+mesh2{ Pov_Body287}
+mesh2{ Pov_Body288}
+mesh2{ Pov_Body289}
+mesh2{ Pov_Body290}
+mesh2{ Pov_Body291}
+mesh2{ Pov_Body292}
+mesh2{ Pov_Body293}
+mesh2{ Pov_Body294}
+mesh2{ Pov_Body295}
+mesh2{ Pov_Body296}
+mesh2{ Pov_Body297}
+mesh2{ Pov_Body298}
+mesh2{ Pov_Body299}
+mesh2{ Pov_Body300}
+mesh2{ Pov_Body301}
+mesh2{ Pov_Body302}
+mesh2{ Pov_Body303}
+mesh2{ Pov_Body304}
+mesh2{ Pov_Body305}
+mesh2{ Pov_Body306}
+mesh2{ Pov_Body307}
+mesh2{ Pov_Body308}
+mesh2{ Pov_Body309}
+mesh2{ Pov_Body310}
+mesh2{ Pov_Body311}
+mesh2{ Pov_Body312}
+mesh2{ Pov_Body313}
+mesh2{ Pov_Body314}
+mesh2{ Pov_Body315}
+mesh2{ Pov_Body316}
+mesh2{ Pov_Body317}
+mesh2{ Pov_Body318}
+mesh2{ Pov_Body319}
+mesh2{ Pov_Body320}
+mesh2{ Pov_Body321}
+mesh2{ Pov_Body322}
+mesh2{ Pov_Body323}
+mesh2{ Pov_Body324}
+mesh2{ Pov_Body325}
+}
+// instance to render
+object {
+  Pov_Body
+  texture {
+    Chrome_Metal
+  }
+}
+
+
+
+// Written by FreeCAD http://www.freecadweb.org/
+// face number1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0011 = mesh2{
+  vertex_vectors {
+    4,
+    <70.7283,-5,-6.14555>,
+    <70.7283,5,-6.14555>,
+    <71.77,5,-6.26193>,
+    <71.77,-5,-6.26193>,
+  }
+  normal_vectors {
+    4,
+    <-0.11102,-0,-0.993818>,
+    <-0.11102,-0,-0.993818>,
+    <-0.11102,-0,-0.993818>,
+    <-0.11102,-0,-0.993818>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face1
+
+// face number2 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0012 = mesh2{
+  vertex_vectors {
+    16,
+    <69.698,-5,-6.92119>,
+    <69.698,5,-6.92119>,
+    <69.7532,5,-6.72608>,
+    <69.8489,5,-6.54738>,
+    <69.9809,5,-6.39346>,
+    <70.1429,5,-6.27152>,
+    <70.3273,5,-6.18725>,
+    <70.5255,5,-6.14459>,
+    <70.7283,5,-6.14555>,
+    <70.7283,-5,-6.14555>,
+    <69.7532,-5,-6.72608>,
+    <69.8489,-5,-6.54738>,
+    <69.9809,-5,-6.39346>,
+    <70.1429,-5,-6.27152>,
+    <70.3273,-5,-6.18725>,
+    <70.5255,-5,-6.14459>,
+  }
+  normal_vectors {
+    16,
+    <0.98608,-0,-0.16627>,
+    <0.98608,-0,-0.16627>,
+    <0.927272,-0,-0.374389>,
+    <0.825095,-0,-0.564993>,
+    <0.684326,-0,-0.729176>,
+    <0.511554,-0,-0.859251>,
+    <0.314851,-0,-0.949141>,
+    <0.103425,-0,-0.994637>,
+    <-0.112843,-0,-0.993613>,
+    <-0.112843,-0,-0.993613>,
+    <0.927272,-0,-0.374389>,
+    <0.825095,-0,-0.564993>,
+    <0.684326,-0,-0.729176>,
+    <0.511554,-0,-0.859251>,
+    <0.314851,-0,-0.949141>,
+    <0.103425,-0,-0.994637>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face2
+
+// face number3 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0013 = mesh2{
+  vertex_vectors {
+    7,
+    <71.77,-5,-6.26193>,
+    <72.4974,-5,-6.19857>,
+    <71.77,5,-6.26193>,
+    <72.4974,5,-6.19857>,
+    <72.7683,4.91329,-6.14468>,
+    <72.7683,-4.91329,-6.14468>,
+    <72.1022,0.0433537,-6.25144>,
+  }
+  normal_vectors {
+    7,
+    <-0.0464192,0,-0.998922>,
+    <0.172264,-0,-0.985051>,
+    <-0.0464192,0,-0.998922>,
+    <0.172264,-0,-0.985051>,
+    <0.216539,-0,-0.976274>,
+    <0.216539,-0,-0.976274>,
+    <0.0871408,-0,-0.996196>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face3
+
+// face number4 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0014 = mesh2{
+  vertex_vectors {
+    435,
+    <68.3443,-5,-4.13841>,
+    <68.2135,-5,-2.14262>,
+    <67.8233,-5,-0.18099>,
+    <67.1804,-5,1.71293>,
+    <66.2958,-5,3.50674>,
+    <65.1846,-5,5.16973>,
+    <63.8659,-5,6.67346>,
+    <62.3622,-5,7.99219>,
+    <60.6992,-5,9.10337>,
+    <58.9054,-5,9.98797>,
+    <57.0115,-5,10.6309>,
+    <55.0498,-5,11.0211>,
+    <53.054,-5,11.1519>,
+    <51.0583,-5,11.0211>,
+    <49.0966,-5,10.6309>,
+    <47.2027,-5,9.98797>,
+    <45.4089,-5,9.10337>,
+    <43.7459,-5,7.99219>,
+    <42.2422,-5,6.67346>,
+    <40.9234,-5,5.16973>,
+    <39.8123,-5,3.50674>,
+    <38.9277,-5,1.71293>,
+    <38.2848,-5,-0.18099>,
+    <37.8946,-5,-2.14262>,
+    <37.7638,-5,-4.13841>,
+    <37.8946,-5,-6.13419>,
+    <38.2848,-5,-8.09582>,
+    <38.9277,-5,-9.98975>,
+    <39.8123,-5,-11.7835>,
+    <40.9234,-5,-13.4465>,
+    <42.2422,-5,-14.9503>,
+    <43.7459,-5,-16.269>,
+    <45.4089,-5,-17.3802>,
+    <47.2027,-5,-18.2648>,
+    <49.0966,-5,-18.9077>,
+    <51.0583,-5,-19.2979>,
+    <53.054,-5,-19.4287>,
+    <55.0498,-5,-19.2979>,
+    <57.0115,-5,-18.9077>,
+    <58.9054,-5,-18.2648>,
+    <60.6992,-5,-17.3802>,
+    <62.3622,-5,-16.269>,
+    <63.8659,-5,-14.9503>,
+    <65.1846,-5,-13.4465>,
+    <66.2958,-5,-11.7835>,
+    <67.1804,-5,-9.98975>,
+    <67.8233,-5,-8.09582>,
+    <68.2135,-5,-6.13419>,
+    <69.698,-5,-6.92119>,
+    <69.7532,-5,-6.72608>,
+    <69.8489,-5,-6.54738>,
+    <69.9809,-5,-6.39346>,
+    <70.1429,-5,-6.27152>,
+    <70.3273,-5,-6.18725>,
+    <70.5255,-5,-6.14459>,
+    <70.7283,-5,-6.14555>,
+    <71.77,-5,-6.26193>,
+    <72.4974,-5,-6.19857>,
+    <72.5579,-5,-5.51327>,
+    <72.5941,-5,-4.82626>,
+    <72.6062,-5,-4.13841>,
+    <72.5941,-5,-3.45055>,
+    <72.5579,-5,-2.76355>,
+    <72.4974,-5,-2.07824>,
+    <71.77,-5,-2.01489>,
+    <70.7283,-5,-2.13126>,
+    <70.5255,-5,-2.13222>,
+    <70.3273,-5,-2.08957>,
+    <70.1429,-5,-2.0053>,
+    <69.9809,-5,-1.88335>,
+    <69.8489,-5,-1.72943>,
+    <69.7532,-5,-1.55074>,
+    <69.698,-5,-1.35563>,
+    <69.6376,-5,-1.01573>,
+    <69.5703,-5,-0.677133>,
+    <69.496,-5,-0.339989>,
+    <69.4723,-5,-0.138633>,
+    <69.4924,-5,0.0631166>,
+    <69.5554,-5,0.255823>,
+    <69.6584,-5,0.430473>,
+    <69.7965,-5,0.578898>,
+    <69.9633,-5,0.694157>,
+    <70.151,-5,0.770858>,
+    <71.158,-5,1.062>,
+    <71.8058,-5,1.3989>,
+    <71.37,-5,2.70377>,
+    <70.8435,-5,3.97476>,
+    <70.229,-5,5.20559>,
+    <69.5327,-5,4.98575>,
+    <68.6148,-5,4.47958>,
+    <68.4278,-5,4.40111>,
+    <68.2284,-5,4.36466>,
+    <68.0258,-5,4.37195>,
+    <67.8295,-5,4.42263>,
+    <67.6486,-5,4.51433>,
+    <67.4917,-5,4.64276>,
+    <67.3661,-5,4.80192>,
+    <67.1803,-5,5.09283>,
+    <66.9885,-5,5.37987>,
+    <66.7908,-5,5.66293>,
+    <66.6919,-5,5.83988>,
+    <66.6332,-5,6.03397>,
+    <66.6177,-5,6.23613>,
+    <66.646,-5,6.43689>,
+    <66.7168,-5,6.62688>,
+    <66.8268,-5,6.79719>,
+    <66.9709,-5,6.93988>,
+    <67.7898,-5,7.59421>,
+    <68.2593,-5,8.15337>,
+    <67.3574,-5,9.19214>,
+    <66.3846,-5,10.1649>,
+    <65.3458,-5,11.0669>,
+    <64.7867,-5,10.5973>,
+    <64.1323,-5,9.77841>,
+    <63.9896,-5,9.63437>,
+    <63.8193,-5,9.52437>,
+    <63.6293,-5,9.45357>,
+    <63.4286,-5,9.42526>,
+    <63.2264,-5,9.44078>,
+    <63.0323,-5,9.4994>,
+    <62.8554,-5,9.59838>,
+    <62.5723,-5,9.79601>,
+    <62.2853,-5,9.98781>,
+    <61.9944,-5,10.1737>,
+    <61.8352,-5,10.2993>,
+    <61.7068,-5,10.4562>,
+    <61.6151,-5,10.637>,
+    <61.5644,-5,10.8333>,
+    <61.5571,-5,11.0359>,
+    <61.5936,-5,11.2354>,
+    <61.672,-5,11.4223>,
+    <62.1782,-5,12.3402>,
+    <62.398,-5,13.0365>,
+    <61.1672,-5,13.6511>,
+    <59.8962,-5,14.1775>,
+    <58.5914,-5,14.6133>,
+    <58.2545,-5,13.9655>,
+    <57.9633,-5,12.9585>,
+    <57.8866,-5,12.7709>,
+    <57.7714,-5,12.6041>,
+    <57.6229,-5,12.4659>,
+    <57.4483,-5,12.363>,
+    <57.2556,-5,12.2999>,
+    <57.0538,-5,12.2798>,
+    <56.8525,-5,12.3035>,
+    <56.5153,-5,12.3778>,
+    <56.1767,-5,12.4452>,
+    <55.8368,-5,12.5056>,
+    <55.6417,-5,12.5607>,
+    <55.463,-5,12.6565>,
+    <55.3091,-5,12.7885>,
+    <55.1872,-5,12.9504>,
+    <55.1029,-5,13.1348>,
+    <55.0602,-5,13.3331>,
+    <55.0612,-5,13.5358>,
+    <55.1776,-5,14.5775>,
+    <55.1142,-5,15.305>,
+    <53.7419,-5,15.4017>,
+    <52.3662,-5,15.4017>,
+    <50.9939,-5,15.305>,
+    <50.9305,-5,14.5775>,
+    <51.0469,-5,13.5358>,
+    <51.0479,-5,13.3331>,
+    <51.0052,-5,13.1348>,
+    <50.9209,-5,12.9504>,
+    <50.799,-5,12.7885>,
+    <50.6451,-5,12.6565>,
+    <50.4664,-5,12.5607>,
+    <50.2713,-5,12.5056>,
+    <49.9314,-5,12.4452>,
+    <49.5928,-5,12.3778>,
+    <49.2556,-5,12.3035>,
+    <49.0543,-5,12.2798>,
+    <48.8525,-5,12.2999>,
+    <48.6598,-5,12.363>,
+    <48.4852,-5,12.4659>,
+    <48.3367,-5,12.6041>,
+    <48.2215,-5,12.7709>,
+    <48.1448,-5,12.9585>,
+    <47.8536,-5,13.9655>,
+    <47.5167,-5,14.6133>,
+    <46.2119,-5,14.1775>,
+    <44.9409,-5,13.6511>,
+    <43.71,-5,13.0365>,
+    <43.9299,-5,12.3402>,
+    <44.4361,-5,11.4223>,
+    <44.5145,-5,11.2354>,
+    <44.551,-5,11.0359>,
+    <44.5437,-5,10.8333>,
+    <44.493,-5,10.637>,
+    <44.4013,-5,10.4562>,
+    <44.2729,-5,10.2993>,
+    <44.1137,-5,10.1737>,
+    <43.8228,-5,9.98781>,
+    <43.5358,-5,9.79601>,
+    <43.2527,-5,9.59838>,
+    <43.0758,-5,9.4994>,
+    <42.8817,-5,9.44078>,
+    <42.6795,-5,9.42526>,
+    <42.4787,-5,9.45357>,
+    <42.2888,-5,9.52437>,
+    <42.1184,-5,9.63437>,
+    <41.9758,-5,9.77841>,
+    <41.3214,-5,10.5973>,
+    <40.7623,-5,11.0669>,
+    <39.7235,-5,10.1649>,
+    <38.7507,-5,9.19214>,
+    <37.8488,-5,8.15337>,
+    <38.3183,-5,7.59421>,
+    <39.1372,-5,6.93988>,
+    <39.2813,-5,6.79719>,
+    <39.3913,-5,6.62688>,
+    <39.4621,-5,6.43689>,
+    <39.4904,-5,6.23613>,
+    <39.4749,-5,6.03397>,
+    <39.4162,-5,5.83988>,
+    <39.3173,-5,5.66293>,
+    <39.1196,-5,5.37987>,
+    <38.9278,-5,5.09283>,
+    <38.7419,-5,4.80192>,
+    <38.6163,-5,4.64276>,
+    <38.4595,-5,4.51433>,
+    <38.2786,-5,4.42263>,
+    <38.0823,-5,4.37195>,
+    <37.8797,-5,4.36466>,
+    <37.6803,-5,4.40111>,
+    <37.4933,-5,4.47958>,
+    <36.5754,-5,4.98575>,
+    <35.8791,-5,5.20559>,
+    <35.2646,-5,3.97476>,
+    <34.7381,-5,2.70377>,
+    <34.3023,-5,1.3989>,
+    <34.9501,-5,1.062>,
+    <35.9571,-5,0.770858>,
+    <36.1448,-5,0.694157>,
+    <36.3116,-5,0.578898>,
+    <36.4497,-5,0.430473>,
+    <36.5527,-5,0.255823>,
+    <36.6157,-5,0.0631166>,
+    <36.6358,-5,-0.138633>,
+    <36.6121,-5,-0.339989>,
+    <36.5378,-5,-0.677133>,
+    <36.4705,-5,-1.01573>,
+    <36.4101,-5,-1.35563>,
+    <36.3549,-5,-1.55074>,
+    <36.2592,-5,-1.72943>,
+    <36.1272,-5,-1.88335>,
+    <35.9652,-5,-2.0053>,
+    <35.7808,-5,-2.08957>,
+    <35.5826,-5,-2.13222>,
+    <35.3798,-5,-2.13126>,
+    <34.3381,-5,-2.01489>,
+    <33.6107,-5,-2.07824>,
+    <33.5139,-5,-3.45055>,
+    <33.5139,-5,-4.82626>,
+    <33.6107,-5,-6.19857>,
+    <34.3381,-5,-6.26193>,
+    <35.3798,-5,-6.14555>,
+    <35.5826,-5,-6.14459>,
+    <35.7808,-5,-6.18725>,
+    <35.9652,-5,-6.27152>,
+    <36.1272,-5,-6.39346>,
+    <36.2592,-5,-6.54738>,
+    <36.3549,-5,-6.72608>,
+    <36.4101,-5,-6.92119>,
+    <36.4705,-5,-7.26109>,
+    <36.5378,-5,-7.59968>,
+    <36.6121,-5,-7.93682>,
+    <36.6358,-5,-8.13818>,
+    <36.6157,-5,-8.33993>,
+    <36.5527,-5,-8.53264>,
+    <36.4497,-5,-8.70729>,
+    <36.3116,-5,-8.85571>,
+    <36.1448,-5,-8.97097>,
+    <35.9571,-5,-9.04767>,
+    <34.9501,-5,-9.33881>,
+    <34.3023,-5,-9.67572>,
+    <34.7381,-5,-10.9806>,
+    <35.2646,-5,-12.2516>,
+    <35.8791,-5,-13.4824>,
+    <36.5754,-5,-13.2626>,
+    <37.4933,-5,-12.7564>,
+    <37.6803,-5,-12.6779>,
+    <37.8797,-5,-12.6415>,
+    <38.0823,-5,-12.6488>,
+    <38.2786,-5,-12.6994>,
+    <38.4595,-5,-12.7911>,
+    <38.6163,-5,-12.9196>,
+    <38.7419,-5,-13.0787>,
+    <38.9278,-5,-13.3696>,
+    <39.1196,-5,-13.6567>,
+    <39.3173,-5,-13.9397>,
+    <39.4162,-5,-14.1167>,
+    <39.4749,-5,-14.3108>,
+    <39.4904,-5,-14.5129>,
+    <39.4621,-5,-14.7137>,
+    <39.3913,-5,-14.9037>,
+    <39.2813,-5,-15.074>,
+    <39.1372,-5,-15.2167>,
+    <38.3183,-5,-15.871>,
+    <37.8488,-5,-16.4302>,
+    <38.7507,-5,-17.469>,
+    <39.7235,-5,-18.4417>,
+    <40.7623,-5,-19.3437>,
+    <41.3214,-5,-18.8741>,
+    <41.9758,-5,-18.0552>,
+    <42.1184,-5,-17.9112>,
+    <42.2888,-5,-17.8012>,
+    <42.4787,-5,-17.7304>,
+    <42.6795,-5,-17.7021>,
+    <42.8817,-5,-17.7176>,
+    <43.0758,-5,-17.7762>,
+    <43.2527,-5,-17.8752>,
+    <43.5358,-5,-18.0728>,
+    <43.8228,-5,-18.2646>,
+    <44.1137,-5,-18.4505>,
+    <44.2729,-5,-18.5761>,
+    <44.4013,-5,-18.733>,
+    <44.493,-5,-18.9138>,
+    <44.5437,-5,-19.1101>,
+    <44.551,-5,-19.3127>,
+    <44.5145,-5,-19.5122>,
+    <44.4361,-5,-19.6991>,
+    <43.9299,-5,-20.6171>,
+    <43.71,-5,-21.3133>,
+    <44.9409,-5,-21.9279>,
+    <46.2119,-5,-22.4543>,
+    <47.5167,-5,-22.8901>,
+    <47.8536,-5,-22.2423>,
+    <48.1448,-5,-21.2353>,
+    <48.2215,-5,-21.0477>,
+    <48.3367,-5,-20.8809>,
+    <48.4852,-5,-20.7427>,
+    <48.6598,-5,-20.6398>,
+    <48.8525,-5,-20.5767>,
+    <49.0543,-5,-20.5566>,
+    <49.2556,-5,-20.5804>,
+    <49.5928,-5,-20.6546>,
+    <49.9314,-5,-20.722>,
+    <50.2713,-5,-20.7824>,
+    <50.4664,-5,-20.8375>,
+    <50.6451,-5,-20.9333>,
+    <50.799,-5,-21.0653>,
+    <50.9209,-5,-21.2272>,
+    <51.0052,-5,-21.4117>,
+    <51.0479,-5,-21.6099>,
+    <51.0469,-5,-21.8126>,
+    <50.9305,-5,-22.8544>,
+    <50.9939,-5,-23.5818>,
+    <52.3662,-5,-23.6785>,
+    <53.7419,-5,-23.6785>,
+    <55.1142,-5,-23.5818>,
+    <55.1776,-5,-22.8544>,
+    <55.0612,-5,-21.8126>,
+    <55.0602,-5,-21.6099>,
+    <55.1029,-5,-21.4117>,
+    <55.1872,-5,-21.2272>,
+    <55.3091,-5,-21.0653>,
+    <55.463,-5,-20.9333>,
+    <55.6417,-5,-20.8375>,
+    <55.8368,-5,-20.7824>,
+    <56.1767,-5,-20.722>,
+    <56.5153,-5,-20.6546>,
+    <56.8525,-5,-20.5804>,
+    <57.0538,-5,-20.5566>,
+    <57.2556,-5,-20.5767>,
+    <57.4483,-5,-20.6398>,
+    <57.6229,-5,-20.7427>,
+    <57.7714,-5,-20.8809>,
+    <57.8866,-5,-21.0477>,
+    <57.9633,-5,-21.2353>,
+    <58.2545,-5,-22.2423>,
+    <58.5914,-5,-22.8901>,
+    <59.8962,-5,-22.4543>,
+    <61.1672,-5,-21.9279>,
+    <62.398,-5,-21.3133>,
+    <62.1782,-5,-20.6171>,
+    <61.672,-5,-19.6991>,
+    <61.5936,-5,-19.5122>,
+    <61.5571,-5,-19.3127>,
+    <61.5644,-5,-19.1101>,
+    <61.6151,-5,-18.9138>,
+    <61.7068,-5,-18.733>,
+    <61.8352,-5,-18.5761>,
+    <61.9944,-5,-18.4505>,
+    <62.2853,-5,-18.2646>,
+    <62.5723,-5,-18.0728>,
+    <62.8554,-5,-17.8752>,
+    <63.0323,-5,-17.7762>,
+    <63.2264,-5,-17.7176>,
+    <63.4286,-5,-17.7021>,
+    <63.6293,-5,-17.7304>,
+    <63.8193,-5,-17.8012>,
+    <63.9896,-5,-17.9112>,
+    <64.1323,-5,-18.0552>,
+    <64.7867,-5,-18.8741>,
+    <65.3458,-5,-19.3437>,
+    <66.3846,-5,-18.4417>,
+    <67.3574,-5,-17.469>,
+    <68.2593,-5,-16.4302>,
+    <67.7898,-5,-15.871>,
+    <66.9709,-5,-15.2167>,
+    <66.8268,-5,-15.074>,
+    <66.7168,-5,-14.9037>,
+    <66.646,-5,-14.7137>,
+    <66.6177,-5,-14.5129>,
+    <66.6332,-5,-14.3108>,
+    <66.6919,-5,-14.1167>,
+    <66.7908,-5,-13.9397>,
+    <66.9885,-5,-13.6567>,
+    <67.1803,-5,-13.3696>,
+    <67.3661,-5,-13.0787>,
+    <67.4917,-5,-12.9196>,
+    <67.6486,-5,-12.7911>,
+    <67.8295,-5,-12.6994>,
+    <68.0258,-5,-12.6488>,
+    <68.2284,-5,-12.6415>,
+    <68.4278,-5,-12.6779>,
+    <68.6148,-5,-12.7564>,
+    <69.5327,-5,-13.2626>,
+    <70.229,-5,-13.4824>,
+    <70.8435,-5,-12.2516>,
+    <71.37,-5,-10.9806>,
+    <71.8058,-5,-9.67572>,
+    <71.158,-5,-9.33881>,
+    <70.151,-5,-9.04767>,
+    <69.9633,-5,-8.97097>,
+    <69.7965,-5,-8.85571>,
+    <69.6584,-5,-8.70729>,
+    <69.5554,-5,-8.53264>,
+    <69.4924,-5,-8.33993>,
+    <69.4723,-5,-8.13818>,
+    <69.496,-5,-7.93682>,
+    <69.5703,-5,-7.59968>,
+    <69.6376,-5,-7.26109>,
+  }
+  normal_vectors {
+    435,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+  }
+  face_indices {
+    435,
+    <396,397,395>,
+    <398,399,400>,
+    <420,421,419>,
+    <374,375,376>,
+    <395,397,394>,
+    <397,398,394>,
+    <398,400,401>,
+    <394,398,401>,
+    <394,401,402>,
+    <393,394,402>,
+    <421,422,418>,
+    <419,421,418>,
+    <374,376,377>,
+    <422,423,424>,
+    <372,373,371>,
+    <418,422,425>,
+    <422,424,425>,
+    <374,377,370>,
+    <373,374,370>,
+    <371,373,370>,
+    <418,425,426>,
+    <417,418,426>,
+    <370,377,369>,
+    <377,378,369>,
+    <403,404,42>,
+    <393,402,42>,
+    <391,392,42>,
+    <392,393,42>,
+    <402,403,42>,
+    <404,405,43>,
+    <405,406,43>,
+    <406,407,43>,
+    <407,408,43>,
+    <408,409,43>,
+    <42,404,43>,
+    <391,42,41>,
+    <385,386,41>,
+    <386,387,41>,
+    <387,388,41>,
+    <388,389,41>,
+    <389,390,41>,
+    <390,391,41>,
+    <409,410,44>,
+    <410,411,44>,
+    <411,412,44>,
+    <412,413,44>,
+    <413,414,44>,
+    <414,415,44>,
+    <43,409,44>,
+    <385,41,40>,
+    <380,381,40>,
+    <381,382,40>,
+    <382,383,40>,
+    <383,384,40>,
+    <384,385,40>,
+    <57,58,56>,
+    <56,58,59>,
+    <351,352,350>,
+    <415,416,45>,
+    <416,417,45>,
+    <426,427,45>,
+    <427,428,45>,
+    <417,426,45>,
+    <44,415,45>,
+    <380,40,39>,
+    <367,368,39>,
+    <368,369,39>,
+    <378,379,39>,
+    <379,380,39>,
+    <369,378,39>,
+    <56,59,55>,
+    <350,352,353>,
+    <55,59,60>,
+    <55,60,54>,
+    <428,429,46>,
+    <429,430,46>,
+    <430,431,46>,
+    <431,432,46>,
+    <432,433,46>,
+    <45,428,46>,
+    <362,363,38>,
+    <363,364,38>,
+    <364,365,38>,
+    <365,366,38>,
+    <366,367,38>,
+    <367,39,38>,
+    <46,433,47>,
+    <433,434,47>,
+    <434,48,47>,
+    <48,49,47>,
+    <49,50,47>,
+    <50,51,47>,
+    <51,52,47>,
+    <356,357,37>,
+    <357,358,37>,
+    <358,359,37>,
+    <359,360,37>,
+    <360,361,37>,
+    <361,362,37>,
+    <362,38,37>,
+    <61,62,64>,
+    <62,63,64>,
+    <348,349,347>,
+    <61,64,65>,
+    <60,61,65>,
+    <350,353,346>,
+    <347,349,346>,
+    <349,350,346>,
+    <54,60,66>,
+    <60,65,66>,
+    <353,354,345>,
+    <346,353,345>,
+    <54,66,0>,
+    <47,52,0>,
+    <52,53,0>,
+    <53,54,0>,
+    <356,37,36>,
+    <354,355,36>,
+    <355,356,36>,
+    <345,354,36>,
+    <0,66,67>,
+    <345,36,344>,
+    <0,67,68>,
+    <344,36,343>,
+    <68,69,1>,
+    <69,70,1>,
+    <70,71,1>,
+    <71,72,1>,
+    <72,73,1>,
+    <0,68,1>,
+    <338,339,35>,
+    <339,340,35>,
+    <340,341,35>,
+    <341,342,35>,
+    <342,343,35>,
+    <343,36,35>,
+    <1,73,74>,
+    <82,83,85>,
+    <83,84,85>,
+    <327,328,326>,
+    <328,329,326>,
+    <1,74,2>,
+    <74,75,2>,
+    <75,76,2>,
+    <76,77,2>,
+    <77,78,2>,
+    <78,79,2>,
+    <332,333,34>,
+    <333,334,34>,
+    <334,335,34>,
+    <335,336,34>,
+    <336,337,34>,
+    <337,338,34>,
+    <338,35,34>,
+    <82,85,86>,
+    <2,79,3>,
+    <79,80,3>,
+    <80,81,3>,
+    <330,331,33>,
+    <331,332,33>,
+    <332,34,33>,
+    <86,87,88>,
+    <324,325,323>,
+    <325,326,322>,
+    <329,330,322>,
+    <326,329,322>,
+    <323,325,322>,
+    <82,86,89>,
+    <86,88,89>,
+    <81,82,89>,
+    <330,33,321>,
+    <322,330,321>,
+    <3,81,90>,
+    <81,89,90>,
+    <321,33,320>,
+    <3,90,91>,
+    <320,33,319>,
+    <3,91,92>,
+    <3,92,4>,
+    <92,93,4>,
+    <93,94,4>,
+    <94,95,4>,
+    <316,317,32>,
+    <317,318,32>,
+    <318,319,32>,
+    <319,33,32>,
+    <4,95,96>,
+    <316,32,315>,
+    <4,96,97>,
+    <315,32,314>,
+    <4,97,98>,
+    <100,101,5>,
+    <101,102,5>,
+    <102,103,5>,
+    <4,98,5>,
+    <98,99,5>,
+    <99,100,5>,
+    <308,309,31>,
+    <309,310,31>,
+    <310,311,31>,
+    <311,312,31>,
+    <312,313,31>,
+    <314,32,31>,
+    <313,314,31>,
+    <106,107,109>,
+    <107,108,109>,
+    <303,304,302>,
+    <304,305,302>,
+    <103,104,6>,
+    <104,105,6>,
+    <5,103,6>,
+    <306,307,30>,
+    <307,308,30>,
+    <308,31,30>,
+    <302,305,301>,
+    <6,105,114>,
+    <105,106,114>,
+    <305,306,297>,
+    <306,30,297>,
+    <109,110,113>,
+    <106,109,113>,
+    <114,106,113>,
+    <305,297,298>,
+    <301,305,298>,
+    <297,30,296>,
+    <6,114,115>,
+    <110,111,112>,
+    <113,110,112>,
+    <301,298,299>,
+    <300,301,299>,
+    <7,6,116>,
+    <6,115,116>,
+    <30,29,295>,
+    <296,30,295>,
+    <7,116,117>,
+    <295,29,294>,
+    <7,117,118>,
+    <294,29,293>,
+    <7,118,119>,
+    <293,29,292>,
+    <7,119,120>,
+    <292,29,291>,
+    <7,120,121>,
+    <291,29,290>,
+    <121,122,8>,
+    <7,121,8>,
+    <122,123,8>,
+    <290,29,28>,
+    <288,289,28>,
+    <289,290,28>,
+    <8,123,124>,
+    <288,28,287>,
+    <8,124,125>,
+    <287,28,286>,
+    <286,28,285>,
+    <8,125,126>,
+    <8,126,127>,
+    <285,28,284>,
+    <127,128,9>,
+    <128,129,9>,
+    <8,127,9>,
+    <284,28,27>,
+    <282,283,27>,
+    <283,284,27>,
+    <130,131,133>,
+    <131,132,133>,
+    <279,280,278>,
+    <280,281,278>,
+    <278,281,277>,
+    <27,26,271>,
+    <272,27,271>,
+    <10,9,140>,
+    <9,139,140>,
+    <27,272,273>,
+    <282,27,273>,
+    <129,130,138>,
+    <9,129,138>,
+    <139,9,138>,
+    <271,26,270>,
+    <10,140,141>,
+    <281,282,274>,
+    <277,281,274>,
+    <282,273,274>,
+    <130,133,137>,
+    <133,134,137>,
+    <138,130,137>,
+    <270,26,269>,
+    <10,141,142>,
+    <269,26,268>,
+    <10,142,143>,
+    <268,26,267>,
+    <10,143,144>,
+    <137,134,136>,
+    <277,274,275>,
+    <10,144,145>,
+    <267,26,266>,
+    <10,145,11>,
+    <277,275,276>,
+    <136,134,135>,
+    <11,145,146>,
+    <26,25,265>,
+    <266,26,265>,
+    <265,25,264>,
+    <11,146,147>,
+    <11,147,148>,
+    <264,25,263>,
+    <11,148,149>,
+    <263,25,262>,
+    <262,25,261>,
+    <11,149,150>,
+    <11,150,151>,
+    <261,25,260>,
+    <260,25,24>,
+    <259,260,24>,
+    <151,152,12>,
+    <11,151,12>,
+    <259,24,258>,
+    <12,152,153>,
+    <154,155,157>,
+    <155,156,157>,
+    <255,256,254>,
+    <256,257,254>,
+    <13,165,166>,
+    <246,23,245>,
+    <13,12,164>,
+    <165,13,164>,
+    <24,23,247>,
+    <23,246,247>,
+    <13,166,167>,
+    <245,23,244>,
+    <164,12,163>,
+    <24,247,248>,
+    <13,167,168>,
+    <244,23,243>,
+    <163,12,162>,
+    <153,154,162>,
+    <12,153,162>,
+    <24,248,249>,
+    <258,24,249>,
+    <162,154,161>,
+    <258,249,250>,
+    <257,258,250>,
+    <254,257,250>,
+    <13,168,169>,
+    <243,23,242>,
+    <14,13,170>,
+    <13,169,170>,
+    <242,23,241>,
+    <23,22,241>,
+    <254,250,253>,
+    <161,154,158>,
+    <154,157,158>,
+    <14,170,171>,
+    <241,22,240>,
+    <14,171,172>,
+    <240,22,239>,
+    <14,172,173>,
+    <239,22,238>,
+    <161,158,160>,
+    <253,250,251>,
+    <14,173,174>,
+    <238,22,237>,
+    <15,14,175>,
+    <14,174,175>,
+    <22,21,236>,
+    <237,22,236>,
+    <15,175,176>,
+    <236,21,235>,
+    <253,251,252>,
+    <160,158,159>,
+    <15,176,177>,
+    <235,21,234>,
+    <191,16,190>,
+    <20,220,221>,
+    <16,191,192>,
+    <220,20,219>,
+    <190,16,189>,
+    <20,221,222>,
+    <16,192,193>,
+    <219,20,218>,
+    <20,19,218>,
+    <17,16,194>,
+    <16,193,194>,
+    <218,19,217>,
+    <189,16,188>,
+    <16,15,188>,
+    <21,20,223>,
+    <20,222,223>,
+    <17,194,195>,
+    <217,19,216>,
+    <17,195,196>,
+    <216,19,215>,
+    <188,15,187>,
+    <21,223,224>,
+    <17,196,197>,
+    <215,19,214>,
+    <15,177,186>,
+    <187,15,186>,
+    <21,224,225>,
+    <234,21,225>,
+    <17,197,198>,
+    <214,19,213>,
+    <18,17,199>,
+    <17,198,199>,
+    <19,18,212>,
+    <213,19,212>,
+    <186,177,185>,
+    <177,178,185>,
+    <233,234,226>,
+    <234,225,226>,
+    <18,199,200>,
+    <212,18,211>,
+    <18,200,201>,
+    <211,18,210>,
+    <18,201,210>,
+    <201,202,209>,
+    <210,201,209>,
+    <178,179,181>,
+    <179,180,181>,
+    <231,232,230>,
+    <232,233,230>,
+    <185,178,182>,
+    <178,181,182>,
+    <184,185,182>,
+    <230,233,229>,
+    <226,227,229>,
+    <233,226,229>,
+    <229,227,228>,
+    <184,182,183>,
+    <202,203,205>,
+    <203,204,205>,
+    <209,202,205>,
+    <207,208,206>,
+    <208,209,206>,
+    <209,205,206>,
+  }
+} // end of Face4
+
+// face number5 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0015 = mesh2{
+  vertex_vectors {
+    435,
+    <68.3443,5,-4.13841>,
+    <68.2135,5,-6.13419>,
+    <67.8233,5,-8.09582>,
+    <67.1804,5,-9.98975>,
+    <66.2958,5,-11.7835>,
+    <65.1846,5,-13.4465>,
+    <63.8659,5,-14.9503>,
+    <62.3622,5,-16.269>,
+    <60.6992,5,-17.3802>,
+    <58.9054,5,-18.2648>,
+    <57.0115,5,-18.9077>,
+    <55.0498,5,-19.2979>,
+    <53.054,5,-19.4287>,
+    <51.0583,5,-19.2979>,
+    <49.0966,5,-18.9077>,
+    <47.2027,5,-18.2648>,
+    <45.4089,5,-17.3802>,
+    <43.7459,5,-16.269>,
+    <42.2422,5,-14.9503>,
+    <40.9234,5,-13.4465>,
+    <39.8123,5,-11.7835>,
+    <38.9277,5,-9.98975>,
+    <38.2848,5,-8.09582>,
+    <37.8946,5,-6.13419>,
+    <37.7638,5,-4.13841>,
+    <37.8946,5,-2.14262>,
+    <38.2848,5,-0.18099>,
+    <38.9277,5,1.71293>,
+    <39.8123,5,3.50674>,
+    <40.9234,5,5.16973>,
+    <42.2422,5,6.67346>,
+    <43.7459,5,7.99219>,
+    <45.4089,5,9.10337>,
+    <47.2027,5,9.98797>,
+    <49.0966,5,10.6309>,
+    <51.0583,5,11.0211>,
+    <53.054,5,11.1519>,
+    <55.0498,5,11.0211>,
+    <57.0115,5,10.6309>,
+    <58.9054,5,9.98797>,
+    <60.6992,5,9.10337>,
+    <62.3622,5,7.99219>,
+    <63.8659,5,6.67346>,
+    <65.1846,5,5.16973>,
+    <66.2958,5,3.50674>,
+    <67.1804,5,1.71293>,
+    <67.8233,5,-0.18099>,
+    <68.2135,5,-2.14262>,
+    <69.698,5,-6.92119>,
+    <69.7532,5,-6.72608>,
+    <69.8489,5,-6.54738>,
+    <69.9809,5,-6.39346>,
+    <70.1429,5,-6.27152>,
+    <70.3273,5,-6.18725>,
+    <70.5255,5,-6.14459>,
+    <70.7283,5,-6.14555>,
+    <71.77,5,-6.26193>,
+    <72.4974,5,-6.19857>,
+    <72.6062,5,-4.13841>,
+    <72.5941,5,-4.82626>,
+    <72.5579,5,-5.51327>,
+    <72.4974,5,-2.07824>,
+    <72.5579,5,-2.76355>,
+    <72.5941,5,-3.45055>,
+    <71.77,5,-2.01489>,
+    <70.7283,5,-2.13126>,
+    <70.5255,5,-2.13222>,
+    <70.3273,5,-2.08957>,
+    <70.1429,5,-2.0053>,
+    <69.9809,5,-1.88335>,
+    <69.8489,5,-1.72943>,
+    <69.7532,5,-1.55074>,
+    <69.698,5,-1.35563>,
+    <69.6376,5,-1.01573>,
+    <69.5703,5,-0.677133>,
+    <69.496,5,-0.339989>,
+    <69.4723,5,-0.138633>,
+    <69.4924,5,0.0631166>,
+    <69.5554,5,0.255823>,
+    <69.6584,5,0.430473>,
+    <69.7965,5,0.578898>,
+    <69.9633,5,0.694157>,
+    <70.151,5,0.770858>,
+    <71.158,5,1.062>,
+    <71.8058,5,1.3989>,
+    <70.229,5,5.20559>,
+    <70.8435,5,3.97476>,
+    <71.37,5,2.70377>,
+    <69.5327,5,4.98575>,
+    <68.6148,5,4.47958>,
+    <68.4278,5,4.40111>,
+    <68.2284,5,4.36466>,
+    <68.0258,5,4.37195>,
+    <67.8295,5,4.42263>,
+    <67.6486,5,4.51433>,
+    <67.4917,5,4.64276>,
+    <67.3661,5,4.80192>,
+    <67.1803,5,5.09283>,
+    <66.9885,5,5.37987>,
+    <66.7908,5,5.66293>,
+    <66.6919,5,5.83988>,
+    <66.6332,5,6.03397>,
+    <66.6177,5,6.23613>,
+    <66.646,5,6.43689>,
+    <66.7168,5,6.62688>,
+    <66.8268,5,6.79719>,
+    <66.9709,5,6.93988>,
+    <67.7898,5,7.59421>,
+    <68.2593,5,8.15337>,
+    <65.3458,5,11.0669>,
+    <66.3846,5,10.1649>,
+    <67.3574,5,9.19214>,
+    <64.7867,5,10.5973>,
+    <64.1323,5,9.77841>,
+    <63.9896,5,9.63437>,
+    <63.8193,5,9.52437>,
+    <63.6293,5,9.45357>,
+    <63.4286,5,9.42526>,
+    <63.2264,5,9.44078>,
+    <63.0323,5,9.4994>,
+    <62.8554,5,9.59838>,
+    <62.5723,5,9.79601>,
+    <62.2853,5,9.98781>,
+    <61.9944,5,10.1737>,
+    <61.8352,5,10.2993>,
+    <61.7068,5,10.4562>,
+    <61.6151,5,10.637>,
+    <61.5644,5,10.8333>,
+    <61.5571,5,11.0359>,
+    <61.5936,5,11.2354>,
+    <61.672,5,11.4223>,
+    <62.1782,5,12.3402>,
+    <62.398,5,13.0365>,
+    <58.5914,5,14.6133>,
+    <59.8962,5,14.1775>,
+    <61.1672,5,13.6511>,
+    <58.2545,5,13.9655>,
+    <57.9633,5,12.9585>,
+    <57.8866,5,12.7709>,
+    <57.7714,5,12.6041>,
+    <57.6229,5,12.4659>,
+    <57.4483,5,12.363>,
+    <57.2556,5,12.2999>,
+    <57.0538,5,12.2798>,
+    <56.8525,5,12.3035>,
+    <56.5153,5,12.3778>,
+    <56.1767,5,12.4452>,
+    <55.8368,5,12.5056>,
+    <55.6417,5,12.5607>,
+    <55.463,5,12.6565>,
+    <55.3091,5,12.7885>,
+    <55.1872,5,12.9504>,
+    <55.1029,5,13.1348>,
+    <55.0602,5,13.3331>,
+    <55.0612,5,13.5358>,
+    <55.1776,5,14.5775>,
+    <55.1142,5,15.305>,
+    <50.9939,5,15.305>,
+    <52.3662,5,15.4017>,
+    <53.7419,5,15.4017>,
+    <50.9305,5,14.5775>,
+    <51.0469,5,13.5358>,
+    <51.0479,5,13.3331>,
+    <51.0052,5,13.1348>,
+    <50.9209,5,12.9504>,
+    <50.799,5,12.7885>,
+    <50.6451,5,12.6565>,
+    <50.4664,5,12.5607>,
+    <50.2713,5,12.5056>,
+    <49.9314,5,12.4452>,
+    <49.5928,5,12.3778>,
+    <49.2556,5,12.3035>,
+    <49.0543,5,12.2798>,
+    <48.8525,5,12.2999>,
+    <48.6598,5,12.363>,
+    <48.4852,5,12.4659>,
+    <48.3367,5,12.6041>,
+    <48.2215,5,12.7709>,
+    <48.1448,5,12.9585>,
+    <47.8536,5,13.9655>,
+    <47.5167,5,14.6133>,
+    <43.71,5,13.0365>,
+    <44.9409,5,13.6511>,
+    <46.2119,5,14.1775>,
+    <43.9299,5,12.3402>,
+    <44.4361,5,11.4223>,
+    <44.5145,5,11.2354>,
+    <44.551,5,11.0359>,
+    <44.5437,5,10.8333>,
+    <44.493,5,10.637>,
+    <44.4013,5,10.4562>,
+    <44.2729,5,10.2993>,
+    <44.1137,5,10.1737>,
+    <43.8228,5,9.98781>,
+    <43.5358,5,9.79601>,
+    <43.2527,5,9.59838>,
+    <43.0758,5,9.4994>,
+    <42.8817,5,9.44078>,
+    <42.6795,5,9.42526>,
+    <42.4787,5,9.45357>,
+    <42.2888,5,9.52437>,
+    <42.1184,5,9.63437>,
+    <41.9758,5,9.77841>,
+    <41.3214,5,10.5973>,
+    <40.7623,5,11.0669>,
+    <37.8488,5,8.15337>,
+    <38.7507,5,9.19214>,
+    <39.7235,5,10.1649>,
+    <38.3183,5,7.59421>,
+    <39.1372,5,6.93988>,
+    <39.2813,5,6.79719>,
+    <39.3913,5,6.62688>,
+    <39.4621,5,6.43689>,
+    <39.4904,5,6.23613>,
+    <39.4749,5,6.03397>,
+    <39.4162,5,5.83988>,
+    <39.3173,5,5.66293>,
+    <39.1196,5,5.37987>,
+    <38.9278,5,5.09283>,
+    <38.7419,5,4.80192>,
+    <38.6163,5,4.64276>,
+    <38.4595,5,4.51433>,
+    <38.2786,5,4.42263>,
+    <38.0823,5,4.37195>,
+    <37.8797,5,4.36466>,
+    <37.6803,5,4.40111>,
+    <37.4933,5,4.47958>,
+    <36.5754,5,4.98575>,
+    <35.8791,5,5.20559>,
+    <34.3023,5,1.3989>,
+    <34.7381,5,2.70377>,
+    <35.2646,5,3.97476>,
+    <34.9501,5,1.062>,
+    <35.9571,5,0.770858>,
+    <36.1448,5,0.694157>,
+    <36.3116,5,0.578898>,
+    <36.4497,5,0.430473>,
+    <36.5527,5,0.255823>,
+    <36.6157,5,0.0631166>,
+    <36.6358,5,-0.138633>,
+    <36.6121,5,-0.339989>,
+    <36.5378,5,-0.677133>,
+    <36.4705,5,-1.01573>,
+    <36.4101,5,-1.35563>,
+    <36.3549,5,-1.55074>,
+    <36.2592,5,-1.72943>,
+    <36.1272,5,-1.88335>,
+    <35.9652,5,-2.0053>,
+    <35.7808,5,-2.08957>,
+    <35.5826,5,-2.13222>,
+    <35.3798,5,-2.13126>,
+    <34.3381,5,-2.01489>,
+    <33.6107,5,-2.07824>,
+    <33.6107,5,-6.19857>,
+    <33.5139,5,-4.82626>,
+    <33.5139,5,-3.45055>,
+    <34.3381,5,-6.26193>,
+    <35.3798,5,-6.14555>,
+    <35.5826,5,-6.14459>,
+    <35.7808,5,-6.18725>,
+    <35.9652,5,-6.27152>,
+    <36.1272,5,-6.39346>,
+    <36.2592,5,-6.54738>,
+    <36.3549,5,-6.72608>,
+    <36.4101,5,-6.92119>,
+    <36.4705,5,-7.26109>,
+    <36.5378,5,-7.59968>,
+    <36.6121,5,-7.93682>,
+    <36.6358,5,-8.13818>,
+    <36.6157,5,-8.33993>,
+    <36.5527,5,-8.53264>,
+    <36.4497,5,-8.70729>,
+    <36.3116,5,-8.85571>,
+    <36.1448,5,-8.97097>,
+    <35.9571,5,-9.04767>,
+    <34.9501,5,-9.33881>,
+    <34.3023,5,-9.67572>,
+    <35.8791,5,-13.4824>,
+    <35.2646,5,-12.2516>,
+    <34.7381,5,-10.9806>,
+    <36.5754,5,-13.2626>,
+    <37.4933,5,-12.7564>,
+    <37.6803,5,-12.6779>,
+    <37.8797,5,-12.6415>,
+    <38.0823,5,-12.6488>,
+    <38.2786,5,-12.6994>,
+    <38.4595,5,-12.7911>,
+    <38.6163,5,-12.9196>,
+    <38.7419,5,-13.0787>,
+    <38.9278,5,-13.3696>,
+    <39.1196,5,-13.6567>,
+    <39.3173,5,-13.9397>,
+    <39.4162,5,-14.1167>,
+    <39.4749,5,-14.3108>,
+    <39.4904,5,-14.5129>,
+    <39.4621,5,-14.7137>,
+    <39.3913,5,-14.9037>,
+    <39.2813,5,-15.074>,
+    <39.1372,5,-15.2167>,
+    <38.3183,5,-15.871>,
+    <37.8488,5,-16.4302>,
+    <40.7623,5,-19.3437>,
+    <39.7235,5,-18.4417>,
+    <38.7507,5,-17.469>,
+    <41.3214,5,-18.8741>,
+    <41.9758,5,-18.0552>,
+    <42.1184,5,-17.9112>,
+    <42.2888,5,-17.8012>,
+    <42.4787,5,-17.7304>,
+    <42.6795,5,-17.7021>,
+    <42.8817,5,-17.7176>,
+    <43.0758,5,-17.7762>,
+    <43.2527,5,-17.8752>,
+    <43.5358,5,-18.0728>,
+    <43.8228,5,-18.2646>,
+    <44.1137,5,-18.4505>,
+    <44.2729,5,-18.5761>,
+    <44.4013,5,-18.733>,
+    <44.493,5,-18.9138>,
+    <44.5437,5,-19.1101>,
+    <44.551,5,-19.3127>,
+    <44.5145,5,-19.5122>,
+    <44.4361,5,-19.6991>,
+    <43.9299,5,-20.6171>,
+    <43.71,5,-21.3133>,
+    <47.5167,5,-22.8901>,
+    <46.2119,5,-22.4543>,
+    <44.9409,5,-21.9279>,
+    <47.8536,5,-22.2423>,
+    <48.1448,5,-21.2353>,
+    <48.2215,5,-21.0477>,
+    <48.3367,5,-20.8809>,
+    <48.4852,5,-20.7427>,
+    <48.6598,5,-20.6398>,
+    <48.8525,5,-20.5767>,
+    <49.0543,5,-20.5566>,
+    <49.2556,5,-20.5804>,
+    <49.5928,5,-20.6546>,
+    <49.9314,5,-20.722>,
+    <50.2713,5,-20.7824>,
+    <50.4664,5,-20.8375>,
+    <50.6451,5,-20.9333>,
+    <50.799,5,-21.0653>,
+    <50.9209,5,-21.2272>,
+    <51.0052,5,-21.4117>,
+    <51.0479,5,-21.6099>,
+    <51.0469,5,-21.8126>,
+    <50.9305,5,-22.8544>,
+    <50.9939,5,-23.5818>,
+    <55.1142,5,-23.5818>,
+    <53.7419,5,-23.6785>,
+    <52.3662,5,-23.6785>,
+    <55.1776,5,-22.8544>,
+    <55.0612,5,-21.8126>,
+    <55.0602,5,-21.6099>,
+    <55.1029,5,-21.4117>,
+    <55.1872,5,-21.2272>,
+    <55.3091,5,-21.0653>,
+    <55.463,5,-20.9333>,
+    <55.6417,5,-20.8375>,
+    <55.8368,5,-20.7824>,
+    <56.1767,5,-20.722>,
+    <56.5153,5,-20.6546>,
+    <56.8525,5,-20.5804>,
+    <57.0538,5,-20.5566>,
+    <57.2556,5,-20.5767>,
+    <57.4483,5,-20.6398>,
+    <57.6229,5,-20.7427>,
+    <57.7714,5,-20.8809>,
+    <57.8866,5,-21.0477>,
+    <57.9633,5,-21.2353>,
+    <58.2545,5,-22.2423>,
+    <58.5914,5,-22.8901>,
+    <62.398,5,-21.3133>,
+    <61.1672,5,-21.9279>,
+    <59.8962,5,-22.4543>,
+    <62.1782,5,-20.6171>,
+    <61.672,5,-19.6991>,
+    <61.5936,5,-19.5122>,
+    <61.5571,5,-19.3127>,
+    <61.5644,5,-19.1101>,
+    <61.6151,5,-18.9138>,
+    <61.7068,5,-18.733>,
+    <61.8352,5,-18.5761>,
+    <61.9944,5,-18.4505>,
+    <62.2853,5,-18.2646>,
+    <62.5723,5,-18.0728>,
+    <62.8554,5,-17.8752>,
+    <63.0323,5,-17.7762>,
+    <63.2264,5,-17.7176>,
+    <63.4286,5,-17.7021>,
+    <63.6293,5,-17.7304>,
+    <63.8193,5,-17.8012>,
+    <63.9896,5,-17.9112>,
+    <64.1323,5,-18.0552>,
+    <64.7867,5,-18.8741>,
+    <65.3458,5,-19.3437>,
+    <68.2593,5,-16.4302>,
+    <67.3574,5,-17.469>,
+    <66.3846,5,-18.4417>,
+    <67.7898,5,-15.871>,
+    <66.9709,5,-15.2167>,
+    <66.8268,5,-15.074>,
+    <66.7168,5,-14.9037>,
+    <66.646,5,-14.7137>,
+    <66.6177,5,-14.5129>,
+    <66.6332,5,-14.3108>,
+    <66.6919,5,-14.1167>,
+    <66.7908,5,-13.9397>,
+    <66.9885,5,-13.6567>,
+    <67.1803,5,-13.3696>,
+    <67.3661,5,-13.0787>,
+    <67.4917,5,-12.9196>,
+    <67.6486,5,-12.7911>,
+    <67.8295,5,-12.6994>,
+    <68.0258,5,-12.6488>,
+    <68.2284,5,-12.6415>,
+    <68.4278,5,-12.6779>,
+    <68.6148,5,-12.7564>,
+    <69.5327,5,-13.2626>,
+    <70.229,5,-13.4824>,
+    <71.8058,5,-9.67572>,
+    <71.37,5,-10.9806>,
+    <70.8435,5,-12.2516>,
+    <71.158,5,-9.33881>,
+    <70.151,5,-9.04767>,
+    <69.9633,5,-8.97097>,
+    <69.7965,5,-8.85571>,
+    <69.6584,5,-8.70729>,
+    <69.5554,5,-8.53264>,
+    <69.4924,5,-8.33993>,
+    <69.4723,5,-8.13818>,
+    <69.496,5,-7.93682>,
+    <69.5703,5,-7.59968>,
+    <69.6376,5,-7.26109>,
+  }
+  normal_vectors {
+    435,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+  }
+  face_indices {
+    435,
+    <400,397,398>,
+    <395,399,396>,
+    <419,423,420>,
+    <376,373,374>,
+    <394,399,395>,
+    <401,400,398>,
+    <401,399,394>,
+    <401,398,399>,
+    <402,401,394>,
+    <393,402,394>,
+    <377,376,374>,
+    <418,423,419>,
+    <424,421,422>,
+    <371,375,372>,
+    <425,424,422>,
+    <425,418,417>,
+    <425,422,423>,
+    <425,423,418>,
+    <370,377,374>,
+    <370,374,375>,
+    <370,375,371>,
+    <426,425,417>,
+    <369,378,377>,
+    <369,377,370>,
+    <6,404,403>,
+    <6,402,393>,
+    <6,392,391>,
+    <6,393,392>,
+    <6,403,402>,
+    <5,405,404>,
+    <5,406,405>,
+    <5,407,406>,
+    <5,408,407>,
+    <5,409,408>,
+    <5,404,6>,
+    <7,6,391>,
+    <7,386,385>,
+    <7,387,386>,
+    <7,388,387>,
+    <7,389,388>,
+    <7,390,389>,
+    <7,391,390>,
+    <4,410,409>,
+    <4,411,410>,
+    <4,412,411>,
+    <4,413,412>,
+    <4,414,413>,
+    <4,415,414>,
+    <4,409,5>,
+    <8,381,380>,
+    <8,382,381>,
+    <8,383,382>,
+    <8,384,383>,
+    <8,385,384>,
+    <8,7,385>,
+    <56,60,57>,
+    <59,60,56>,
+    <350,352,349>,
+    <9,8,380>,
+    <9,368,367>,
+    <9,369,368>,
+    <9,379,378>,
+    <9,380,379>,
+    <9,378,369>,
+    <3,416,415>,
+    <3,417,416>,
+    <3,415,4>,
+    <3,427,426>,
+    <3,428,427>,
+    <3,426,417>,
+    <55,59,56>,
+    <353,352,350>,
+    <58,59,55>,
+    <54,58,55>,
+    <2,429,428>,
+    <2,430,429>,
+    <2,431,430>,
+    <2,432,431>,
+    <2,433,432>,
+    <2,428,3>,
+    <10,9,367>,
+    <10,363,362>,
+    <10,364,363>,
+    <10,365,364>,
+    <10,366,365>,
+    <10,367,366>,
+    <1,434,433>,
+    <1,48,434>,
+    <1,433,2>,
+    <1,49,48>,
+    <1,50,49>,
+    <1,51,50>,
+    <1,52,51>,
+    <11,357,356>,
+    <11,358,357>,
+    <11,359,358>,
+    <11,360,359>,
+    <11,361,360>,
+    <11,362,361>,
+    <11,10,362>,
+    <64,61,62>,
+    <64,62,63>,
+    <347,351,348>,
+    <65,64,63>,
+    <65,63,58>,
+    <346,353,350>,
+    <346,350,351>,
+    <346,351,347>,
+    <66,58,54>,
+    <66,65,58>,
+    <345,354,353>,
+    <345,353,346>,
+    <0,53,52>,
+    <0,54,53>,
+    <0,66,54>,
+    <0,52,1>,
+    <12,11,356>,
+    <12,355,354>,
+    <12,356,355>,
+    <12,354,345>,
+    <67,66,0>,
+    <344,12,345>,
+    <68,67,0>,
+    <343,12,344>,
+    <13,339,338>,
+    <13,340,339>,
+    <13,341,340>,
+    <13,342,341>,
+    <13,343,342>,
+    <13,12,343>,
+    <47,68,0>,
+    <47,69,68>,
+    <47,70,69>,
+    <47,71,70>,
+    <47,72,71>,
+    <47,73,72>,
+    <74,73,47>,
+    <87,83,82>,
+    <87,84,83>,
+    <326,328,325>,
+    <326,329,328>,
+    <14,13,338>,
+    <14,333,332>,
+    <14,334,333>,
+    <14,335,334>,
+    <14,336,335>,
+    <14,337,336>,
+    <14,338,337>,
+    <46,74,47>,
+    <46,75,74>,
+    <46,76,75>,
+    <46,77,76>,
+    <46,78,77>,
+    <46,79,78>,
+    <15,331,330>,
+    <15,332,331>,
+    <15,14,332>,
+    <45,79,46>,
+    <45,80,79>,
+    <45,81,80>,
+    <88,85,86>,
+    <323,327,324>,
+    <89,88,86>,
+    <89,87,82>,
+    <89,86,87>,
+    <322,326,327>,
+    <322,329,326>,
+    <322,327,323>,
+    <90,89,82>,
+    <90,81,45>,
+    <90,82,81>,
+    <321,330,329>,
+    <321,15,330>,
+    <321,329,322>,
+    <91,90,45>,
+    <320,15,321>,
+    <319,15,320>,
+    <92,91,45>,
+    <16,317,316>,
+    <16,318,317>,
+    <16,319,318>,
+    <16,15,319>,
+    <44,92,45>,
+    <44,93,92>,
+    <44,94,93>,
+    <44,95,94>,
+    <96,95,44>,
+    <315,16,316>,
+    <97,96,44>,
+    <314,16,315>,
+    <313,16,314>,
+    <17,309,308>,
+    <17,310,309>,
+    <17,311,310>,
+    <17,312,311>,
+    <17,313,312>,
+    <17,16,313>,
+    <43,101,100>,
+    <43,102,101>,
+    <43,103,102>,
+    <43,98,97>,
+    <43,97,44>,
+    <43,99,98>,
+    <43,100,99>,
+    <302,304,301>,
+    <302,305,304>,
+    <111,107,106>,
+    <111,108,107>,
+    <18,307,306>,
+    <18,308,307>,
+    <18,17,308>,
+    <42,104,103>,
+    <42,105,104>,
+    <42,103,43>,
+    <114,105,42>,
+    <297,18,306>,
+    <113,106,105>,
+    <113,110,111>,
+    <113,111,106>,
+    <113,105,114>,
+    <298,306,305>,
+    <298,305,302>,
+    <298,297,306>,
+    <298,302,303>,
+    <115,114,42>,
+    <296,18,297>,
+    <112,109,110>,
+    <112,110,113>,
+    <299,303,300>,
+    <299,298,303>,
+    <116,42,41>,
+    <116,115,42>,
+    <295,19,18>,
+    <295,18,296>,
+    <117,116,41>,
+    <294,19,295>,
+    <118,117,41>,
+    <293,19,294>,
+    <119,118,41>,
+    <292,19,293>,
+    <120,119,41>,
+    <291,19,292>,
+    <121,120,41>,
+    <290,19,291>,
+    <20,19,290>,
+    <20,289,288>,
+    <20,290,289>,
+    <40,122,121>,
+    <40,123,122>,
+    <40,121,41>,
+    <124,123,40>,
+    <287,20,288>,
+    <125,124,40>,
+    <286,20,287>,
+    <126,125,40>,
+    <285,20,286>,
+    <127,126,40>,
+    <284,20,285>,
+    <21,20,284>,
+    <21,283,282>,
+    <21,284,283>,
+    <39,128,127>,
+    <39,129,128>,
+    <39,127,40>,
+    <135,131,130>,
+    <135,132,131>,
+    <278,280,277>,
+    <278,281,280>,
+    <279,281,278>,
+    <140,39,38>,
+    <140,139,39>,
+    <271,22,21>,
+    <271,21,272>,
+    <138,129,39>,
+    <138,39,139>,
+    <273,272,21>,
+    <273,21,282>,
+    <270,22,271>,
+    <141,140,38>,
+    <137,130,129>,
+    <137,134,135>,
+    <137,135,130>,
+    <137,129,138>,
+    <274,282,281>,
+    <274,281,279>,
+    <274,273,282>,
+    <142,141,38>,
+    <269,22,270>,
+    <143,142,38>,
+    <268,22,269>,
+    <144,143,38>,
+    <267,22,268>,
+    <136,134,137>,
+    <275,274,279>,
+    <145,144,38>,
+    <266,22,267>,
+    <23,22,266>,
+    <37,145,38>,
+    <133,134,136>,
+    <276,275,279>,
+    <146,145,37>,
+    <265,23,266>,
+    <147,146,37>,
+    <264,23,265>,
+    <263,23,264>,
+    <148,147,37>,
+    <149,148,37>,
+    <262,23,263>,
+    <150,149,37>,
+    <261,23,262>,
+    <260,23,261>,
+    <151,150,37>,
+    <24,23,260>,
+    <24,260,259>,
+    <36,152,151>,
+    <36,151,37>,
+    <153,152,36>,
+    <258,24,259>,
+    <254,256,253>,
+    <254,257,256>,
+    <159,155,154>,
+    <159,156,155>,
+    <166,165,35>,
+    <245,25,246>,
+    <164,36,35>,
+    <164,35,165>,
+    <247,25,24>,
+    <247,246,25>,
+    <167,166,35>,
+    <244,25,245>,
+    <163,36,164>,
+    <248,247,24>,
+    <168,167,35>,
+    <243,25,244>,
+    <162,36,163>,
+    <162,154,153>,
+    <162,153,36>,
+    <249,248,24>,
+    <249,24,258>,
+    <161,154,162>,
+    <250,249,258>,
+    <250,258,257>,
+    <169,168,35>,
+    <242,25,243>,
+    <170,169,35>,
+    <170,35,34>,
+    <241,26,25>,
+    <241,25,242>,
+    <255,250,257>,
+    <255,257,254>,
+    <158,154,161>,
+    <158,159,154>,
+    <171,170,34>,
+    <240,26,241>,
+    <172,171,34>,
+    <239,26,240>,
+    <173,172,34>,
+    <238,26,239>,
+    <160,158,161>,
+    <251,250,255>,
+    <174,173,34>,
+    <237,26,238>,
+    <175,34,33>,
+    <175,174,34>,
+    <236,27,26>,
+    <236,26,237>,
+    <176,175,33>,
+    <235,27,236>,
+    <157,158,160>,
+    <252,251,255>,
+    <177,176,33>,
+    <234,27,235>,
+    <221,220,28>,
+    <190,32,191>,
+    <192,191,32>,
+    <219,28,220>,
+    <189,32,190>,
+    <222,221,28>,
+    <193,192,32>,
+    <218,28,219>,
+    <194,193,32>,
+    <194,32,31>,
+    <217,28,218>,
+    <217,29,28>,
+    <223,28,27>,
+    <223,222,28>,
+    <188,33,32>,
+    <188,32,189>,
+    <195,194,31>,
+    <216,29,217>,
+    <215,29,216>,
+    <196,195,31>,
+    <187,33,188>,
+    <224,223,27>,
+    <197,196,31>,
+    <214,29,215>,
+    <225,27,234>,
+    <225,224,27>,
+    <186,177,33>,
+    <186,33,187>,
+    <198,197,31>,
+    <213,29,214>,
+    <199,31,30>,
+    <199,198,31>,
+    <212,29,213>,
+    <212,30,29>,
+    <185,178,177>,
+    <185,177,186>,
+    <226,234,233>,
+    <226,225,234>,
+    <200,199,30>,
+    <211,30,212>,
+    <201,200,30>,
+    <210,30,211>,
+    <210,201,30>,
+    <209,202,201>,
+    <209,201,210>,
+    <183,179,178>,
+    <183,180,179>,
+    <230,232,229>,
+    <230,233,232>,
+    <230,226,233>,
+    <182,178,185>,
+    <182,183,178>,
+    <182,185,184>,
+    <231,227,226>,
+    <231,226,230>,
+    <181,182,184>,
+    <228,227,231>,
+    <206,208,205>,
+    <206,209,208>,
+    <207,203,202>,
+    <207,204,203>,
+    <207,202,209>,
+    <207,209,206>,
+  }
+} // end of Face5
+
+// face number6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0016 = mesh2{
+  vertex_vectors {
+    8,
+    <69.496,-5,-7.93682>,
+    <69.496,5,-7.93682>,
+    <69.5703,5,-7.59968>,
+    <69.6376,5,-7.26109>,
+    <69.698,5,-6.92119>,
+    <69.698,-5,-6.92119>,
+    <69.5703,-5,-7.59968>,
+    <69.6376,-5,-7.26109>,
+  }
+  normal_vectors {
+    8,
+    <0.974338,-0,-0.225091>,
+    <0.974338,-0,-0.225091>,
+    <0.978738,-0,-0.205112>,
+    <0.98273,-0,-0.185048>,
+    <0.986309,-0,-0.164906>,
+    <0.986309,-0,-0.164906>,
+    <0.978738,-0,-0.205112>,
+    <0.98273,-0,-0.185048>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face6
+
+// face number7 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0017 = mesh2{
+  vertex_vectors {
+    9,
+    <72.4974,-5,-6.19857>,
+    <72.5579,-5,-5.51327>,
+    <72.5941,-5,-4.82626>,
+    <72.6062,-5,-4.13841>,
+    <75.557,-4.03035,-4.13841>,
+    <75.5417,-4.03035,-4.96916>,
+    <74.3225,-4.41925,-5.61244>,
+    <73.5459,-4.66578,-5.92154>,
+    <72.7683,-4.91329,-6.14468>,
+  }
+  normal_vectors {
+    9,
+    <0.310449,-0.950021,-0.0328943>,
+    <0.311414,-0.950021,-0.0219522>,
+    <0.311993,-0.950021,-0.0109829>,
+    <0.312187,-0.950021,-2.82461e-09>,
+    <0.312187,-0.950021,-2.45422e-09>,
+    <0.311974,-0.950021,-0.0115251>,
+    <0.311439,-0.950021,-0.0215846>,
+    <0.311011,-0.950021,-0.0270632>,
+    <0.310582,-0.950021,-0.0316073>,
+  }
+  face_indices {
+    7,
+    <1,0,8>,
+    <7,1,8>,
+    <2,1,7>,
+    <6,3,2>,
+    <6,2,7>,
+    <4,6,5>,
+    <4,3,6>,
+  }
+} // end of Face7
+
+// face number8 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0018 = mesh2{
+  vertex_vectors {
+    8,
+    <75.5417,-4.03035,-4.96916>,
+    <74.3225,-4.41925,-5.61244>,
+    <73.5459,-4.66578,-5.92154>,
+    <72.7683,-4.91329,-6.14468>,
+    <72.7683,4.91329,-6.14468>,
+    <75.5417,4.03035,-4.96916>,
+    <74.3225,4.41925,-5.61244>,
+    <73.5459,4.66578,-5.92154>,
+  }
+  normal_vectors {
+    8,
+    <0.516979,-0,-0.855998>,
+    <0.410291,-0,-0.911955>,
+    <0.325849,-0,-0.945422>,
+    <0.220453,-0,-0.975398>,
+    <0.220453,-0,-0.975398>,
+    <0.516979,-0,-0.855998>,
+    <0.410291,-0,-0.911955>,
+    <0.325849,-0,-0.945422>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face8
+
+// face number9 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body0019 = mesh2{
+  vertex_vectors {
+    9,
+    <72.6062,5,-4.13841>,
+    <72.5941,5,-4.82626>,
+    <72.5579,5,-5.51327>,
+    <72.4974,5,-6.19857>,
+    <75.557,4.03035,-4.13841>,
+    <75.5417,4.03035,-4.96916>,
+    <74.3225,4.41925,-5.61244>,
+    <73.5459,4.66578,-5.92154>,
+    <72.7683,4.91329,-6.14468>,
+  }
+  normal_vectors {
+    9,
+    <0.312187,0.950021,-2.82461e-09>,
+    <0.311993,0.950021,-0.0109829>,
+    <0.311414,0.950021,-0.0219522>,
+    <0.310449,0.950021,-0.0328943>,
+    <0.312187,0.950021,-2.45422e-09>,
+    <0.311974,0.950021,-0.0115251>,
+    <0.311439,0.950021,-0.0215846>,
+    <0.311011,0.950021,-0.0270632>,
+    <0.310582,0.950021,-0.0316073>,
+  }
+  face_indices {
+    7,
+    <8,3,2>,
+    <8,2,7>,
+    <7,2,1>,
+    <1,0,6>,
+    <7,1,6>,
+    <5,6,4>,
+    <6,0,4>,
+  }
+} // end of Face9
+
+// face number10 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00110 = mesh2{
+  vertex_vectors {
+    16,
+    <70.151,-5,-9.04767>,
+    <70.151,5,-9.04767>,
+    <69.9633,5,-8.97097>,
+    <69.7965,5,-8.85571>,
+    <69.6584,5,-8.70729>,
+    <69.5554,5,-8.53264>,
+    <69.4924,5,-8.33993>,
+    <69.4723,5,-8.13818>,
+    <69.496,5,-7.93682>,
+    <69.496,-5,-7.93682>,
+    <69.9633,-5,-8.97097>,
+    <69.7965,-5,-8.85571>,
+    <69.6584,-5,-8.70729>,
+    <69.5554,-5,-8.53264>,
+    <69.4924,-5,-8.33993>,
+    <69.4723,-5,-8.13818>,
+  }
+  normal_vectors {
+    16,
+    <0.275989,0,0.961161>,
+    <0.275989,0,0.961161>,
+    <0.476184,0,0.879346>,
+    <0.654106,0,0.756403>,
+    <0.801435,0,0.598082>,
+    <0.911278,0,0.411791>,
+    <0.978502,0,0.206236>,
+    <0.99996,-0,-0.00896247>,
+    <0.974648,-0,-0.223743>,
+    <0.974648,-0,-0.223743>,
+    <0.476184,0,0.879346>,
+    <0.654106,0,0.756403>,
+    <0.801435,0,0.598082>,
+    <0.911278,0,0.411791>,
+    <0.978502,0,0.206236>,
+    <0.99996,-0,-0.00896247>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face10
+
+// face number11 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00111 = mesh2{
+  vertex_vectors {
+    4,
+    <71.158,-5,-9.33881>,
+    <71.158,5,-9.33881>,
+    <70.151,5,-9.04767>,
+    <70.151,-5,-9.04767>,
+  }
+  normal_vectors {
+    4,
+    <0.277749,0,0.960654>,
+    <0.277749,0,0.960654>,
+    <0.277749,0,0.960654>,
+    <0.277749,0,0.960654>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face11
+
+// face number12 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00112 = mesh2{
+  vertex_vectors {
+    7,
+    <71.8058,-5,-9.67572>,
+    <71.158,-5,-9.33881>,
+    <72.0354,-4.91329,-9.82916>,
+    <72.0354,4.91329,-9.82916>,
+    <71.8058,5,-9.67572>,
+    <71.158,5,-9.33881>,
+    <71.4609,-0.0433537,-9.47563>,
+  }
+  normal_vectors {
+    7,
+    <0.536115,-0,0.844145>,
+    <0.339383,-0,0.940648>,
+    <0.57366,-0,0.819094>,
+    <0.57366,-0,0.819094>,
+    <0.536115,-0,0.844145>,
+    <0.339383,-0,0.940648>,
+    <0.461735,-0,0.887018>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face12
+
+// face number13 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00113 = mesh2{
+  vertex_vectors {
+    12,
+    <70.4999,-4.91329,-13.5363>,
+    <70.229,-5,-13.4824>,
+    <70.8435,-5,-12.2516>,
+    <71.37,-5,-10.9806>,
+    <71.8058,-5,-9.67572>,
+    <72.0354,-4.91329,-9.82916>,
+    <73.0323,-4.5176,-10.6742>,
+    <73.6092,-4.27253,-11.2968>,
+    <74.1478,-4.03035,-11.9765>,
+    <73.512,-4.03035,-13.5116>,
+    <72.1395,-4.41925,-13.6393>,
+    <71.3036,-4.66578,-13.6277>,
+  }
+  normal_vectors {
+    12,
+    <0.274845,-0.950021,-0.148056>,
+    <0.274229,-0.950021,-0.149194>,
+    <0.284041,-0.950021,-0.129542>,
+    <0.292447,-0.950021,-0.109248>,
+    <0.299405,-0.950021,-0.0884132>,
+    <0.299036,-0.950021,-0.0896534>,
+    <0.296713,-0.950021,-0.0970677>,
+    <0.29482,-0.950021,-0.102671>,
+    <0.292637,-0.950021,-0.108739>,
+    <0.283816,-0.950021,-0.130035>,
+    <0.279472,-0.950021,-0.139124>,
+    <0.27698,-0.950021,-0.144022>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face13
+
+// face number14 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00114 = mesh2{
+  vertex_vectors {
+    7,
+    <69.5327,-5,-13.2626>,
+    <70.229,-5,-13.4824>,
+    <69.5327,5,-13.2626>,
+    <70.229,5,-13.4824>,
+    <70.4999,4.91329,-13.5363>,
+    <70.4999,-4.91329,-13.5363>,
+    <69.8436,0.0433537,-13.38>,
+  }
+  normal_vectors {
+    7,
+    <-0.425158,0,-0.905119>,
+    <-0.217811,0,-0.975991>,
+    <-0.425158,0,-0.905119>,
+    <-0.217811,0,-0.975991>,
+    <-0.173548,0,-0.984825>,
+    <-0.173548,0,-0.984825>,
+    <-0.300721,0,-0.953712>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face14
+
+// face number15 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00115 = mesh2{
+  vertex_vectors {
+    4,
+    <68.6148,-5,-12.7564>,
+    <68.6148,5,-12.7564>,
+    <69.5327,5,-13.2626>,
+    <69.5327,-5,-13.2626>,
+  }
+  normal_vectors {
+    4,
+    <-0.482886,-0,-0.875683>,
+    <-0.482886,-0,-0.875683>,
+    <-0.482886,-0,-0.875683>,
+    <-0.482886,-0,-0.875683>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face15
+
+// face number16 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00116 = mesh2{
+  vertex_vectors {
+    16,
+    <67.3661,-5,-13.0787>,
+    <67.3661,5,-13.0787>,
+    <67.4917,5,-12.9196>,
+    <67.6486,5,-12.7911>,
+    <67.8295,5,-12.6994>,
+    <68.0258,5,-12.6488>,
+    <68.2284,5,-12.6415>,
+    <68.4278,5,-12.6779>,
+    <68.6148,5,-12.7564>,
+    <68.6148,-5,-12.7564>,
+    <67.4917,-5,-12.9196>,
+    <67.6486,-5,-12.7911>,
+    <67.8295,-5,-12.6994>,
+    <68.0258,-5,-12.6488>,
+    <68.2284,-5,-12.6415>,
+    <68.4278,-5,-12.6779>,
+  }
+  normal_vectors {
+    16,
+    <0.847391,-0,-0.530969>,
+    <0.847391,-0,-0.530969>,
+    <0.713416,-0,-0.70074>,
+    <0.546074,-0,-0.837737>,
+    <0.353195,-0,-0.93555>,
+    <0.143788,-0,-0.989609>,
+    <-0.0723334,-0,-0.997381>,
+    <-0.285078,-0,-0.958504>,
+    <-0.484491,-0,-0.874796>,
+    <-0.484491,-0,-0.874796>,
+    <0.713416,-0,-0.70074>,
+    <0.546074,-0,-0.837737>,
+    <0.353195,-0,-0.93555>,
+    <0.143788,-0,-0.989609>,
+    <-0.0723334,-0,-0.997381>,
+    <-0.285078,-0,-0.958504>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face16
+
+// face number17 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00117 = mesh2{
+  vertex_vectors {
+    8,
+    <66.7908,-5,-13.9397>,
+    <66.7908,5,-13.9397>,
+    <66.9885,5,-13.6567>,
+    <67.1803,5,-13.3696>,
+    <67.3661,5,-13.0787>,
+    <67.3661,-5,-13.0787>,
+    <66.9885,-5,-13.6567>,
+    <67.1803,-5,-13.3696>,
+  }
+  normal_vectors {
+    8,
+    <0.814032,-0,-0.58082>,
+    <0.814032,-0,-0.58082>,
+    <0.825743,-0,-0.564046>,
+    <0.837109,-0,-0.547036>,
+    <0.848124,-0,-0.529797>,
+    <0.848124,-0,-0.529797>,
+    <0.825743,-0,-0.564046>,
+    <0.837109,-0,-0.547036>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face17
+
+// face number18 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00118 = mesh2{
+  vertex_vectors {
+    16,
+    <66.9709,-5,-15.2167>,
+    <66.9709,5,-15.2167>,
+    <66.8268,5,-15.074>,
+    <66.7168,5,-14.9037>,
+    <66.646,5,-14.7137>,
+    <66.6177,5,-14.5129>,
+    <66.6332,5,-14.3108>,
+    <66.6919,5,-14.1167>,
+    <66.7908,5,-13.9397>,
+    <66.7908,-5,-13.9397>,
+    <66.8268,-5,-15.074>,
+    <66.7168,-5,-14.9037>,
+    <66.646,-5,-14.7137>,
+    <66.6177,-5,-14.5129>,
+    <66.6332,-5,-14.3108>,
+    <66.6919,-5,-14.1167>,
+  }
+  normal_vectors {
+    16,
+    <0.622802,0,0.782379>,
+    <0.622802,0,0.782379>,
+    <0.776448,0,0.630182>,
+    <0.893777,0,0.448512>,
+    <0.969305,0,0.245862>,
+    <0.999497,0,0.0317133>,
+    <0.982941,-0,-0.183919>,
+    <0.920412,-0,-0.390949>,
+    <0.814835,-0,-0.579693>,
+    <0.814835,-0,-0.579693>,
+    <0.776448,0,0.630182>,
+    <0.893777,0,0.448512>,
+    <0.969305,0,0.245862>,
+    <0.999497,0,0.0317133>,
+    <0.982941,-0,-0.183919>,
+    <0.920412,-0,-0.390949>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face18
+
+// face number19 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00119 = mesh2{
+  vertex_vectors {
+    4,
+    <67.7898,-5,-15.871>,
+    <67.7898,5,-15.871>,
+    <66.9709,5,-15.2167>,
+    <66.9709,-5,-15.2167>,
+  }
+  normal_vectors {
+    4,
+    <0.624233,0,0.781238>,
+    <0.624233,0,0.781238>,
+    <0.624233,0,0.781238>,
+    <0.624233,0,0.781238>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face19
+
+// face number20 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00120 = mesh2{
+  vertex_vectors {
+    7,
+    <68.2593,-5,-16.4302>,
+    <67.7898,-5,-15.871>,
+    <68.4128,-4.91329,-16.6598>,
+    <68.4128,4.91329,-16.6598>,
+    <68.2593,5,-16.4302>,
+    <67.7898,5,-15.871>,
+    <68.0173,0.0433537,-16.1133>,
+  }
+  normal_vectors {
+    7,
+    <0.818346,-0,0.574726>,
+    <0.673519,-0,0.73917>,
+    <0.843446,-0,0.537214>,
+    <0.843446,-0,0.537214>,
+    <0.818346,-0,0.574726>,
+    <0.673519,-0,0.73917>,
+    <0.766034,-0,0.6428>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face20
+
+// face number21 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00121 = mesh2{
+  vertex_vectors {
+    12,
+    <65.5755,-4.91329,-19.4971>,
+    <65.3458,-5,-19.3437>,
+    <66.3846,-5,-18.4417>,
+    <67.3574,-5,-17.469>,
+    <68.2593,-5,-16.4302>,
+    <68.4128,-4.91329,-16.6598>,
+    <69.0104,-4.5176,-17.822>,
+    <69.3052,-4.27253,-18.618>,
+    <69.5426,-4.03035,-19.4521>,
+    <68.3678,-4.03035,-20.627>,
+    <67.0508,-4.41925,-20.2198>,
+    <66.2831,-4.66578,-19.8892>,
+  }
+  normal_vectors {
+    12,
+    <0.197265,-0.950021,-0.241965>,
+    <0.196261,-0.950021,-0.24278>,
+    <0.212847,-0.950021,-0.228379>,
+    <0.228379,-0.950021,-0.212847>,
+    <0.24278,-0.950021,-0.196261>,
+    <0.241965,-0.950021,-0.197265>,
+    <0.23698,-0.950021,-0.203226>,
+    <0.233088,-0.950021,-0.207679>,
+    <0.228748,-0.950021,-0.212449>,
+    <0.212449,-0.950021,-0.228748>,
+    <0.204958,-0.950021,-0.235484>,
+    <0.200782,-0.950021,-0.239055>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face21
+
+// face number22 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00122 = mesh2{
+  vertex_vectors {
+    7,
+    <64.7867,-5,-18.8741>,
+    <65.3458,-5,-19.3437>,
+    <64.7867,5,-18.8741>,
+    <65.3458,5,-19.3437>,
+    <65.5755,4.91329,-19.4971>,
+    <65.5755,-4.91329,-19.4971>,
+    <65.029,-0.0433537,-19.1016>,
+  }
+  normal_vectors {
+    7,
+    <-0.739168,0,-0.673521>,
+    <-0.574726,0,-0.818346>,
+    <-0.739168,0,-0.673521>,
+    <-0.574726,0,-0.818346>,
+    <-0.537214,0,-0.843446>,
+    <-0.537214,0,-0.843446>,
+    <-0.642799,0,-0.766035>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face22
+
+// face number23 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00123 = mesh2{
+  vertex_vectors {
+    4,
+    <64.1323,-5,-18.0552>,
+    <64.1323,5,-18.0552>,
+    <64.7867,5,-18.8741>,
+    <64.7867,-5,-18.8741>,
+  }
+  normal_vectors {
+    4,
+    <-0.781238,-0,-0.624233>,
+    <-0.781238,-0,-0.624233>,
+    <-0.781238,-0,-0.624233>,
+    <-0.781238,-0,-0.624233>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face23
+
+// face number24 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00124 = mesh2{
+  vertex_vectors {
+    16,
+    <62.8554,-5,-17.8752>,
+    <62.8554,5,-17.8752>,
+    <63.0323,5,-17.7762>,
+    <63.2264,5,-17.7176>,
+    <63.4286,5,-17.7021>,
+    <63.6293,5,-17.7304>,
+    <63.8193,5,-17.8012>,
+    <63.9896,5,-17.9112>,
+    <64.1323,5,-18.0552>,
+    <64.1323,-5,-18.0552>,
+    <63.0323,-5,-17.7762>,
+    <63.2264,-5,-17.7176>,
+    <63.4286,-5,-17.7021>,
+    <63.6293,-5,-17.7304>,
+    <63.8193,-5,-17.8012>,
+    <63.9896,-5,-17.9112>,
+  }
+  normal_vectors {
+    16,
+    <0.579694,-0,-0.814834>,
+    <0.579694,-0,-0.814834>,
+    <0.390949,-0,-0.920412>,
+    <0.183918,-0,-0.982942>,
+    <-0.0317147,-0,-0.999497>,
+    <-0.245863,-0,-0.969305>,
+    <-0.448511,-0,-0.893777>,
+    <-0.630181,-0,-0.776448>,
+    <-0.782381,-0,-0.622801>,
+    <-0.782381,-0,-0.622801>,
+    <0.390949,-0,-0.920412>,
+    <0.183918,-0,-0.982942>,
+    <-0.0317147,-0,-0.999497>,
+    <-0.245863,-0,-0.969305>,
+    <-0.448511,-0,-0.893777>,
+    <-0.630181,-0,-0.776448>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face24
+
+// face number25 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00125 = mesh2{
+  vertex_vectors {
+    8,
+    <61.9944,-5,-18.4505>,
+    <61.9944,5,-18.4505>,
+    <62.2853,5,-18.2646>,
+    <62.5723,5,-18.0728>,
+    <62.8554,5,-17.8752>,
+    <62.8554,-5,-17.8752>,
+    <62.2853,-5,-18.2646>,
+    <62.5723,-5,-18.0728>,
+  }
+  normal_vectors {
+    8,
+    <0.529797,-0,-0.848124>,
+    <0.529797,-0,-0.848124>,
+    <0.547036,-0,-0.837109>,
+    <0.564046,-0,-0.825743>,
+    <0.58082,-0,-0.814032>,
+    <0.58082,-0,-0.814032>,
+    <0.547036,-0,-0.837109>,
+    <0.564046,-0,-0.825743>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face25
+
+// face number26 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00126 = mesh2{
+  vertex_vectors {
+    16,
+    <61.672,-5,-19.6991>,
+    <61.672,5,-19.6991>,
+    <61.5936,5,-19.5122>,
+    <61.5571,5,-19.3127>,
+    <61.5644,5,-19.1101>,
+    <61.6151,5,-18.9138>,
+    <61.7068,5,-18.733>,
+    <61.8352,5,-18.5761>,
+    <61.9944,5,-18.4505>,
+    <61.9944,-5,-18.4505>,
+    <61.5936,-5,-19.5122>,
+    <61.5571,-5,-19.3127>,
+    <61.5644,-5,-19.1101>,
+    <61.6151,-5,-18.9138>,
+    <61.7068,-5,-18.733>,
+    <61.8352,-5,-18.5761>,
+  }
+  normal_vectors {
+    16,
+    <0.874797,0,0.484489>,
+    <0.874797,0,0.484489>,
+    <0.958504,0,0.28508>,
+    <0.99738,0,0.0723363>,
+    <0.989608,-0,-0.143792>,
+    <0.93555,-0,-0.353193>,
+    <0.837736,-0,-0.546075>,
+    <0.70074,-0,-0.713417>,
+    <0.530972,-0,-0.84739>,
+    <0.530972,-0,-0.84739>,
+    <0.958504,0,0.28508>,
+    <0.99738,0,0.0723363>,
+    <0.989608,-0,-0.143792>,
+    <0.93555,-0,-0.353193>,
+    <0.837736,-0,-0.546075>,
+    <0.70074,-0,-0.713417>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face26
+
+// face number27 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00127 = mesh2{
+  vertex_vectors {
+    4,
+    <62.1782,-5,-20.6171>,
+    <62.1782,5,-20.6171>,
+    <61.672,5,-19.6991>,
+    <61.672,-5,-19.6991>,
+  }
+  normal_vectors {
+    4,
+    <0.875683,0,0.482886>,
+    <0.875683,0,0.482886>,
+    <0.875683,0,0.482886>,
+    <0.875683,0,0.482886>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face27
+
+// face number28 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00128 = mesh2{
+  vertex_vectors {
+    7,
+    <62.398,-5,-21.3133>,
+    <62.1782,-5,-20.6171>,
+    <62.4519,-4.91329,-21.5842>,
+    <62.4519,4.91329,-21.5842>,
+    <62.398,5,-21.3133>,
+    <62.1782,5,-20.6171>,
+    <62.2957,-0.0433537,-20.928>,
+  }
+  normal_vectors {
+    7,
+    <0.975991,-0,0.217811>,
+    <0.905119,-0,0.425159>,
+    <0.984825,-0,0.173548>,
+    <0.984825,-0,0.173548>,
+    <0.975991,-0,0.217811>,
+    <0.905119,-0,0.425159>,
+    <0.953712,-0,0.30072>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face28
+
+// face number29 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00129 = mesh2{
+  vertex_vectors {
+    12,
+    <58.7448,-4.91329,-23.1198>,
+    <58.5914,-5,-22.8901>,
+    <59.8962,-5,-22.4543>,
+    <61.1672,-5,-21.9279>,
+    <62.398,-5,-21.3133>,
+    <62.4519,-4.91329,-21.5842>,
+    <62.5593,-4.5176,-22.8867>,
+    <62.527,-4.27253,-23.7349>,
+    <62.4272,-4.03035,-24.5964>,
+    <60.8922,-4.03035,-25.2322>,
+    <59.8313,-4.41925,-24.352>,
+    <59.2485,-4.66578,-23.7528>,
+  }
+  normal_vectors {
+    12,
+    <0.0896534,-0.950021,-0.299036>,
+    <0.0884132,-0.950021,-0.299405>,
+    <0.109248,-0.950021,-0.292447>,
+    <0.129542,-0.950021,-0.284041>,
+    <0.149194,-0.950021,-0.274229>,
+    <0.148056,-0.950021,-0.274845>,
+    <0.14117,-0.950021,-0.278445>,
+    <0.13587,-0.950021,-0.281069>,
+    <0.130035,-0.950021,-0.283816>,
+    <0.108739,-0.950021,-0.292637>,
+    <0.0992412,-0.950021,-0.295993>,
+    <0.0940158,-0.950021,-0.297694>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face29
+
+// face number30 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00130 = mesh2{
+  vertex_vectors {
+    7,
+    <58.2545,-5,-22.2423>,
+    <58.5914,-5,-22.8901>,
+    <58.2545,5,-22.2423>,
+    <58.5914,5,-22.8901>,
+    <58.7448,4.91329,-23.1198>,
+    <58.7448,-4.91329,-23.1198>,
+    <58.3913,0.0433537,-22.5452>,
+  }
+  normal_vectors {
+    7,
+    <-0.940648,0,-0.339383>,
+    <-0.844145,0,-0.536114>,
+    <-0.940648,0,-0.339383>,
+    <-0.844145,0,-0.536114>,
+    <-0.819094,0,-0.57366>,
+    <-0.819094,0,-0.57366>,
+    <-0.887018,0,-0.461735>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face30
+
+// face number31 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00131 = mesh2{
+  vertex_vectors {
+    4,
+    <57.9633,-5,-21.2353>,
+    <57.9633,5,-21.2353>,
+    <58.2545,5,-22.2423>,
+    <58.2545,-5,-22.2423>,
+  }
+  normal_vectors {
+    4,
+    <-0.960654,-0,-0.277749>,
+    <-0.960654,-0,-0.277749>,
+    <-0.960654,-0,-0.277749>,
+    <-0.960654,-0,-0.277749>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face31
+
+// face number32 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00132 = mesh2{
+  vertex_vectors {
+    16,
+    <56.8525,-5,-20.5804>,
+    <56.8525,5,-20.5804>,
+    <57.0538,5,-20.5566>,
+    <57.2556,5,-20.5767>,
+    <57.4483,5,-20.6398>,
+    <57.6229,5,-20.7427>,
+    <57.7714,5,-20.8809>,
+    <57.8866,5,-21.0477>,
+    <57.9633,5,-21.2353>,
+    <57.9633,-5,-21.2353>,
+    <57.0538,-5,-20.5566>,
+    <57.2556,-5,-20.5767>,
+    <57.4483,-5,-20.6398>,
+    <57.6229,-5,-20.7427>,
+    <57.7714,-5,-20.8809>,
+    <57.8866,-5,-21.0477>,
+  }
+  normal_vectors {
+    16,
+    <0.223743,-0,-0.974648>,
+    <0.223743,-0,-0.974648>,
+    <0.0089641,-0,-0.99996>,
+    <-0.206238,-0,-0.978502>,
+    <-0.411788,-0,-0.91128>,
+    <-0.598083,-0,-0.801434>,
+    <-0.756404,-0,-0.654105>,
+    <-0.879346,-0,-0.476184>,
+    <-0.961161,-0,-0.275989>,
+    <-0.961161,-0,-0.275989>,
+    <0.0089641,-0,-0.99996>,
+    <-0.206238,-0,-0.978502>,
+    <-0.411788,-0,-0.91128>,
+    <-0.598083,-0,-0.801434>,
+    <-0.756404,-0,-0.654105>,
+    <-0.879346,-0,-0.476184>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face32
+
+// face number33 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00133 = mesh2{
+  vertex_vectors {
+    8,
+    <55.8368,-5,-20.7824>,
+    <55.8368,5,-20.7824>,
+    <56.1767,5,-20.722>,
+    <56.5153,5,-20.6546>,
+    <56.8525,5,-20.5804>,
+    <56.8525,-5,-20.5804>,
+    <56.1767,-5,-20.722>,
+    <56.5153,-5,-20.6546>,
+  }
+  normal_vectors {
+    8,
+    <0.164906,-0,-0.986309>,
+    <0.164906,-0,-0.986309>,
+    <0.185048,-0,-0.98273>,
+    <0.205113,-0,-0.978738>,
+    <0.225091,-0,-0.974338>,
+    <0.225091,-0,-0.974338>,
+    <0.185048,-0,-0.98273>,
+    <0.205113,-0,-0.978738>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face33
+
+// face number34 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00134 = mesh2{
+  vertex_vectors {
+    16,
+    <55.0612,-5,-21.8126>,
+    <55.0612,5,-21.8126>,
+    <55.0602,5,-21.6099>,
+    <55.1029,5,-21.4117>,
+    <55.1872,5,-21.2272>,
+    <55.3091,5,-21.0653>,
+    <55.463,5,-20.9333>,
+    <55.6417,5,-20.8375>,
+    <55.8368,5,-20.7824>,
+    <55.8368,-5,-20.7824>,
+    <55.0602,-5,-21.6099>,
+    <55.1029,-5,-21.4117>,
+    <55.1872,-5,-21.2272>,
+    <55.3091,-5,-21.0653>,
+    <55.463,-5,-20.9333>,
+    <55.6417,-5,-20.8375>,
+  }
+  normal_vectors {
+    16,
+    <0.993613,0,0.11284>,
+    <0.993613,0,0.11284>,
+    <0.994637,-0,-0.103424>,
+    <0.949141,-0,-0.314852>,
+    <0.859252,-0,-0.511553>,
+    <0.729176,-0,-0.684326>,
+    <0.564995,-0,-0.825094>,
+    <0.374387,-0,-0.927272>,
+    <0.16627,-0,-0.98608>,
+    <0.16627,-0,-0.98608>,
+    <0.994637,-0,-0.103424>,
+    <0.949141,-0,-0.314852>,
+    <0.859252,-0,-0.511553>,
+    <0.729176,-0,-0.684326>,
+    <0.564995,-0,-0.825094>,
+    <0.374387,-0,-0.927272>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face34
+
+// face number35 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00135 = mesh2{
+  vertex_vectors {
+    4,
+    <55.1776,-5,-22.8544>,
+    <55.1776,5,-22.8544>,
+    <55.0612,5,-21.8126>,
+    <55.0612,-5,-21.8126>,
+  }
+  normal_vectors {
+    4,
+    <0.993818,0,0.11102>,
+    <0.993818,0,0.11102>,
+    <0.993818,0,0.11102>,
+    <0.993818,0,0.11102>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face35
+
+// face number36 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00136 = mesh2{
+  vertex_vectors {
+    7,
+    <55.1142,-5,-23.5818>,
+    <55.1776,-5,-22.8544>,
+    <55.0603,-4.91329,-23.8526>,
+    <55.0603,4.91329,-23.8526>,
+    <55.1142,5,-23.5818>,
+    <55.1776,5,-22.8544>,
+    <55.1671,-0.0433537,-23.1866>,
+  }
+  normal_vectors {
+    7,
+    <0.985051,-0,-0.172265>,
+    <0.998922,-0,0.0464217>,
+    <0.976274,-0,-0.216539>,
+    <0.976274,-0,-0.216539>,
+    <0.985051,-0,-0.172265>,
+    <0.998922,-0,0.0464217>,
+    <0.996196,-0,-0.0871405>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face36
+
+// face number37 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00137 = mesh2{
+  vertex_vectors {
+    12,
+    <51.0478,-4.91329,-23.8526>,
+    <50.9939,-5,-23.5818>,
+    <52.3662,-5,-23.6785>,
+    <53.7419,-5,-23.6785>,
+    <55.1142,-5,-23.5818>,
+    <55.0603,-4.91329,-23.8526>,
+    <54.6611,-4.5176,-25.0971>,
+    <54.3067,-4.27253,-25.8683>,
+    <53.8848,-4.03035,-26.626>,
+    <52.2233,-4.03035,-26.626>,
+    <51.58,-4.41925,-25.4069>,
+    <51.2709,-4.66578,-24.6302>,
+  }
+  normal_vectors {
+    12,
+    <-0.0316073,-0.950021,-0.310582>,
+    <-0.0328943,-0.950021,-0.310449>,
+    <-0.0109829,-0.950021,-0.311993>,
+    <0.0109829,-0.950021,-0.311993>,
+    <0.0328943,-0.950021,-0.310449>,
+    <0.0316073,-0.950021,-0.310582>,
+    <0.0238681,-0.950021,-0.311273>,
+    <0.0179668,-0.950021,-0.311669>,
+    <0.0115251,-0.950021,-0.311974>,
+    <-0.0115251,-0.950021,-0.311974>,
+    <-0.0215846,-0.950021,-0.311439>,
+    <-0.0270631,-0.950021,-0.311011>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face37
+
+// face number38 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00138 = mesh2{
+  vertex_vectors {
+    7,
+    <50.9305,-5,-22.8544>,
+    <50.9939,-5,-23.5818>,
+    <50.9305,5,-22.8544>,
+    <50.9939,5,-23.5818>,
+    <51.0478,4.91329,-23.8526>,
+    <51.0478,-4.91329,-23.8526>,
+    <50.941,-0.0433537,-23.1866>,
+  }
+  normal_vectors {
+    7,
+    <-0.998922,-0,0.0464218>,
+    <-0.985051,0,-0.172265>,
+    <-0.998922,-0,0.0464218>,
+    <-0.985051,0,-0.172265>,
+    <-0.976274,0,-0.216539>,
+    <-0.976274,0,-0.216539>,
+    <-0.996196,0,-0.0871405>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face38
+
+// face number39 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00139 = mesh2{
+  vertex_vectors {
+    4,
+    <51.0469,-5,-21.8126>,
+    <51.0469,5,-21.8126>,
+    <50.9305,5,-22.8544>,
+    <50.9305,-5,-22.8544>,
+  }
+  normal_vectors {
+    4,
+    <-0.993818,-0,0.11102>,
+    <-0.993818,-0,0.11102>,
+    <-0.993818,-0,0.11102>,
+    <-0.993818,-0,0.11102>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face39
+
+// face number40 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00140 = mesh2{
+  vertex_vectors {
+    16,
+    <50.2713,-5,-20.7824>,
+    <50.2713,5,-20.7824>,
+    <50.4664,5,-20.8375>,
+    <50.6451,5,-20.9333>,
+    <50.799,5,-21.0653>,
+    <50.9209,5,-21.2272>,
+    <51.0052,5,-21.4117>,
+    <51.0479,5,-21.6099>,
+    <51.0469,5,-21.8126>,
+    <51.0469,-5,-21.8126>,
+    <50.4664,-5,-20.8375>,
+    <50.6451,-5,-20.9333>,
+    <50.799,-5,-21.0653>,
+    <50.9209,-5,-21.2272>,
+    <51.0052,-5,-21.4117>,
+    <51.0479,-5,-21.6099>,
+  }
+  normal_vectors {
+    16,
+    <-0.166269,-0,-0.98608>,
+    <-0.166269,-0,-0.98608>,
+    <-0.374387,-0,-0.927273>,
+    <-0.564995,-0,-0.825095>,
+    <-0.729176,-0,-0.684326>,
+    <-0.859253,-0,-0.511551>,
+    <-0.949141,-0,-0.314852>,
+    <-0.994637,-0,-0.103424>,
+    <-0.993613,-0,0.11284>,
+    <-0.993613,-0,0.11284>,
+    <-0.374387,-0,-0.927273>,
+    <-0.564995,-0,-0.825095>,
+    <-0.729176,-0,-0.684326>,
+    <-0.859253,-0,-0.511551>,
+    <-0.949141,-0,-0.314852>,
+    <-0.994637,-0,-0.103424>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face40
+
+// face number41 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00141 = mesh2{
+  vertex_vectors {
+    8,
+    <49.2556,-5,-20.5804>,
+    <49.2556,5,-20.5804>,
+    <49.5928,5,-20.6546>,
+    <49.9314,5,-20.722>,
+    <50.2713,5,-20.7824>,
+    <50.2713,-5,-20.7824>,
+    <49.5928,-5,-20.6546>,
+    <49.9314,-5,-20.722>,
+  }
+  normal_vectors {
+    8,
+    <-0.225091,0,-0.974338>,
+    <-0.225091,0,-0.974338>,
+    <-0.205112,0,-0.978738>,
+    <-0.185048,0,-0.98273>,
+    <-0.164906,0,-0.986309>,
+    <-0.164906,0,-0.986309>,
+    <-0.205112,0,-0.978738>,
+    <-0.185048,0,-0.98273>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face41
+
+// face number42 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00142 = mesh2{
+  vertex_vectors {
+    16,
+    <48.1448,-5,-21.2353>,
+    <48.1448,5,-21.2353>,
+    <48.2215,5,-21.0477>,
+    <48.3367,5,-20.8809>,
+    <48.4852,5,-20.7427>,
+    <48.6598,5,-20.6398>,
+    <48.8525,5,-20.5767>,
+    <49.0543,5,-20.5566>,
+    <49.2556,5,-20.5804>,
+    <49.2556,-5,-20.5804>,
+    <48.2215,-5,-21.0477>,
+    <48.3367,-5,-20.8809>,
+    <48.4852,-5,-20.7427>,
+    <48.6598,-5,-20.6398>,
+    <48.8525,-5,-20.5767>,
+    <49.0543,-5,-20.5566>,
+  }
+  normal_vectors {
+    16,
+    <0.961161,-0,-0.275988>,
+    <0.961161,-0,-0.275988>,
+    <0.879346,-0,-0.476184>,
+    <0.756404,-0,-0.654104>,
+    <0.598084,-0,-0.801434>,
+    <0.411789,-0,-0.911279>,
+    <0.206235,-0,-0.978503>,
+    <-0.00896319,-0,-0.99996>,
+    <-0.223742,-0,-0.974648>,
+    <-0.223742,-0,-0.974648>,
+    <0.879346,-0,-0.476184>,
+    <0.756404,-0,-0.654104>,
+    <0.598084,-0,-0.801434>,
+    <0.411789,-0,-0.911279>,
+    <0.206235,-0,-0.978503>,
+    <-0.00896319,-0,-0.99996>,
+  }
+  face_indices {
+    14,
+    <1,2,0>,
+    <0,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <6,7,14>,
+    <13,5,14>,
+    <7,8,15>,
+    <14,7,15>,
+    <15,8,9>,
+  }
+} // end of Face42
+
+// face number43 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00143 = mesh2{
+  vertex_vectors {
+    4,
+    <47.8536,-5,-22.2423>,
+    <47.8536,5,-22.2423>,
+    <48.1448,5,-21.2353>,
+    <48.1448,-5,-21.2353>,
+  }
+  normal_vectors {
+    4,
+    <0.960654,-0,-0.277749>,
+    <0.960654,-0,-0.277749>,
+    <0.960654,-0,-0.277749>,
+    <0.960654,-0,-0.277749>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face43
+
+// face number44 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00144 = mesh2{
+  vertex_vectors {
+    7,
+    <47.5167,-5,-22.8901>,
+    <47.8536,-5,-22.2423>,
+    <47.3633,-4.91329,-23.1198>,
+    <47.3633,4.91329,-23.1198>,
+    <47.5167,5,-22.8901>,
+    <47.8536,5,-22.2423>,
+    <47.7168,-0.0433537,-22.5452>,
+  }
+  normal_vectors {
+    7,
+    <0.844145,-0,-0.536114>,
+    <0.940648,-0,-0.339383>,
+    <0.819094,-0,-0.57366>,
+    <0.819094,-0,-0.57366>,
+    <0.844145,-0,-0.536114>,
+    <0.940648,-0,-0.339383>,
+    <0.887018,-0,-0.461735>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face44
+
+// face number45 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00145 = mesh2{
+  vertex_vectors {
+    12,
+    <43.6562,-4.91329,-21.5842>,
+    <43.71,-5,-21.3133>,
+    <44.9409,-5,-21.9279>,
+    <46.2119,-5,-22.4543>,
+    <47.5167,-5,-22.8901>,
+    <47.3633,-4.91329,-23.1198>,
+    <46.5183,-4.5176,-24.1167>,
+    <45.8957,-4.27253,-24.6936>,
+    <45.2159,-4.03035,-25.2322>,
+    <43.6809,-4.03035,-24.5964>,
+    <43.5531,-4.41925,-23.2238>,
+    <43.5648,-4.66578,-22.388>,
+  }
+  normal_vectors {
+    12,
+    <-0.148056,-0.950021,-0.274845>,
+    <-0.149194,-0.950021,-0.274229>,
+    <-0.129542,-0.950021,-0.284041>,
+    <-0.109248,-0.950021,-0.292447>,
+    <-0.0884132,-0.950021,-0.299405>,
+    <-0.0896534,-0.950021,-0.299036>,
+    <-0.0970677,-0.950021,-0.296713>,
+    <-0.102671,-0.950021,-0.29482>,
+    <-0.108739,-0.950021,-0.292637>,
+    <-0.130035,-0.950021,-0.283816>,
+    <-0.139124,-0.950021,-0.279473>,
+    <-0.144022,-0.950021,-0.27698>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face45
+
+// face number46 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00146 = mesh2{
+  vertex_vectors {
+    7,
+    <43.9299,-5,-20.6171>,
+    <43.71,-5,-21.3133>,
+    <43.9299,5,-20.6171>,
+    <43.71,5,-21.3133>,
+    <43.6562,4.91329,-21.5842>,
+    <43.6562,-4.91329,-21.5842>,
+    <43.8124,0.0433537,-20.928>,
+  }
+  normal_vectors {
+    7,
+    <-0.905119,-0,0.425159>,
+    <-0.975991,-0,0.217811>,
+    <-0.905119,-0,0.425159>,
+    <-0.975991,-0,0.217811>,
+    <-0.984825,-0,0.173548>,
+    <-0.984825,-0,0.173548>,
+    <-0.953712,-0,0.30072>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face46
+
+// face number47 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00147 = mesh2{
+  vertex_vectors {
+    4,
+    <44.4361,-5,-19.6991>,
+    <44.4361,5,-19.6991>,
+    <43.9299,5,-20.6171>,
+    <43.9299,-5,-20.6171>,
+  }
+  normal_vectors {
+    4,
+    <-0.875683,-0,0.482886>,
+    <-0.875683,-0,0.482886>,
+    <-0.875683,-0,0.482886>,
+    <-0.875683,-0,0.482886>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face47
+
+// face number48 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00148 = mesh2{
+  vertex_vectors {
+    16,
+    <44.1137,-5,-18.4505>,
+    <44.1137,5,-18.4505>,
+    <44.2729,5,-18.5761>,
+    <44.4013,5,-18.733>,
+    <44.493,5,-18.9138>,
+    <44.5437,5,-19.1101>,
+    <44.551,5,-19.3127>,
+    <44.5145,5,-19.5122>,
+    <44.4361,5,-19.6991>,
+    <44.4361,-5,-19.6991>,
+    <44.2729,-5,-18.5761>,
+    <44.4013,-5,-18.733>,
+    <44.493,-5,-18.9138>,
+    <44.5437,-5,-19.1101>,
+    <44.551,-5,-19.3127>,
+    <44.5145,-5,-19.5122>,
+  }
+  normal_vectors {
+    16,
+    <-0.530971,-0,-0.84739>,
+    <-0.530971,-0,-0.84739>,
+    <-0.700742,-0,-0.713415>,
+    <-0.837737,-0,-0.546074>,
+    <-0.935551,-0,-0.353192>,
+    <-0.989608,-0,-0.143791>,
+    <-0.99738,-0,0.0723361>,
+    <-0.958504,-0,0.285081>,
+    <-0.874798,-0,0.484488>,
+    <-0.874798,-0,0.484488>,
+    <-0.700742,-0,-0.713415>,
+    <-0.837737,-0,-0.546074>,
+    <-0.935551,-0,-0.353192>,
+    <-0.989608,-0,-0.143791>,
+    <-0.99738,-0,0.0723361>,
+    <-0.958504,-0,0.285081>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face48
+
+// face number49 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00149 = mesh2{
+  vertex_vectors {
+    8,
+    <43.2527,-5,-17.8752>,
+    <43.2527,5,-17.8752>,
+    <43.5358,5,-18.0728>,
+    <43.8228,5,-18.2646>,
+    <44.1137,5,-18.4505>,
+    <44.1137,-5,-18.4505>,
+    <43.5358,-5,-18.0728>,
+    <43.8228,-5,-18.2646>,
+  }
+  normal_vectors {
+    8,
+    <-0.58082,0,-0.814032>,
+    <-0.58082,0,-0.814032>,
+    <-0.564046,0,-0.825743>,
+    <-0.547036,0,-0.837109>,
+    <-0.529797,0,-0.848124>,
+    <-0.529797,0,-0.848124>,
+    <-0.564046,0,-0.825743>,
+    <-0.547036,0,-0.837109>,
+  }
+  face_indices {
+    6,
+    <1,2,0>,
+    <2,3,6>,
+    <0,2,6>,
+    <6,3,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face49
+
+// face number50 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00150 = mesh2{
+  vertex_vectors {
+    16,
+    <41.9758,-5,-18.0552>,
+    <41.9758,5,-18.0552>,
+    <42.1184,5,-17.9112>,
+    <42.2888,5,-17.8012>,
+    <42.4787,5,-17.7304>,
+    <42.6795,5,-17.7021>,
+    <42.8817,5,-17.7176>,
+    <43.0758,5,-17.7762>,
+    <43.2527,5,-17.8752>,
+    <43.2527,-5,-17.8752>,
+    <42.1184,-5,-17.9112>,
+    <42.2888,-5,-17.8012>,
+    <42.4787,-5,-17.7304>,
+    <42.6795,-5,-17.7021>,
+    <42.8817,-5,-17.7176>,
+    <43.0758,-5,-17.7762>,
+  }
+  normal_vectors {
+    16,
+    <0.782379,-0,-0.622802>,
+    <0.782379,-0,-0.622802>,
+    <0.630182,-0,-0.776448>,
+    <0.448512,-0,-0.893777>,
+    <0.24586,-0,-0.969305>,
+    <0.0317115,-0,-0.999497>,
+    <-0.183918,-0,-0.982942>,
+    <-0.390949,-0,-0.920413>,
+    <-0.579694,-0,-0.814834>,
+    <-0.579694,-0,-0.814834>,
+    <0.630182,-0,-0.776448>,
+    <0.448512,-0,-0.893777>,
+    <0.24586,-0,-0.969305>,
+    <0.0317115,-0,-0.999497>,
+    <-0.183918,-0,-0.982942>,
+    <-0.390949,-0,-0.920413>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face50
+
+// face number51 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00151 = mesh2{
+  vertex_vectors {
+    4,
+    <41.3214,-5,-18.8741>,
+    <41.3214,5,-18.8741>,
+    <41.9758,5,-18.0552>,
+    <41.9758,-5,-18.0552>,
+  }
+  normal_vectors {
+    4,
+    <0.781238,-0,-0.624233>,
+    <0.781238,-0,-0.624233>,
+    <0.781238,-0,-0.624233>,
+    <0.781238,-0,-0.624233>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face51
+
+// face number52 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00152 = mesh2{
+  vertex_vectors {
+    7,
+    <40.7623,-5,-19.3437>,
+    <41.3214,-5,-18.8741>,
+    <40.5326,-4.91329,-19.4971>,
+    <40.5326,4.91329,-19.4971>,
+    <40.7623,5,-19.3437>,
+    <41.3214,5,-18.8741>,
+    <41.0791,-0.0433537,-19.1016>,
+  }
+  normal_vectors {
+    7,
+    <0.574726,-0,-0.818346>,
+    <0.73917,-0,-0.673519>,
+    <0.537214,-0,-0.843446>,
+    <0.537214,-0,-0.843446>,
+    <0.574726,-0,-0.818346>,
+    <0.73917,-0,-0.673519>,
+    <0.642799,-0,-0.766035>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face52
+
+// face number53 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00153 = mesh2{
+  vertex_vectors {
+    12,
+    <37.6953,-4.91329,-16.6598>,
+    <37.8488,-5,-16.4302>,
+    <38.7507,-5,-17.469>,
+    <39.7235,-5,-18.4417>,
+    <40.7623,-5,-19.3437>,
+    <40.5326,-4.91329,-19.4971>,
+    <39.3704,-4.5176,-20.0948>,
+    <38.5744,-4.27253,-20.3895>,
+    <37.7403,-4.03035,-20.627>,
+    <36.5655,-4.03035,-19.4521>,
+    <36.9727,-4.41925,-18.1352>,
+    <37.3033,-4.66578,-17.3675>,
+  }
+  normal_vectors {
+    12,
+    <-0.241965,-0.950021,-0.197265>,
+    <-0.24278,-0.950021,-0.196261>,
+    <-0.228379,-0.950021,-0.212847>,
+    <-0.212847,-0.950021,-0.228379>,
+    <-0.196261,-0.950021,-0.24278>,
+    <-0.197265,-0.950021,-0.241965>,
+    <-0.203226,-0.950021,-0.23698>,
+    <-0.207679,-0.950021,-0.233088>,
+    <-0.212449,-0.950021,-0.228748>,
+    <-0.228748,-0.950021,-0.212449>,
+    <-0.235484,-0.950021,-0.204958>,
+    <-0.239055,-0.950021,-0.200782>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face53
+
+// face number54 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00154 = mesh2{
+  vertex_vectors {
+    7,
+    <38.3183,-5,-15.871>,
+    <37.8488,-5,-16.4302>,
+    <38.3183,5,-15.871>,
+    <37.8488,5,-16.4302>,
+    <37.6953,4.91329,-16.6598>,
+    <37.6953,-4.91329,-16.6598>,
+    <38.0908,0.0433537,-16.1133>,
+  }
+  normal_vectors {
+    7,
+    <-0.673519,-0,0.73917>,
+    <-0.818346,-0,0.574727>,
+    <-0.673519,-0,0.73917>,
+    <-0.818346,-0,0.574727>,
+    <-0.843446,-0,0.537214>,
+    <-0.843446,-0,0.537214>,
+    <-0.766035,-0,0.642799>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face54
+
+// face number55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00155 = mesh2{
+  vertex_vectors {
+    4,
+    <39.1372,-5,-15.2167>,
+    <39.1372,5,-15.2167>,
+    <38.3183,5,-15.871>,
+    <38.3183,-5,-15.871>,
+  }
+  normal_vectors {
+    4,
+    <-0.624233,-0,0.781238>,
+    <-0.624233,-0,0.781238>,
+    <-0.624233,-0,0.781238>,
+    <-0.624233,-0,0.781238>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face55
+
+// face number56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00156 = mesh2{
+  vertex_vectors {
+    16,
+    <39.3173,-5,-13.9397>,
+    <39.3173,5,-13.9397>,
+    <39.4162,5,-14.1167>,
+    <39.4749,5,-14.3108>,
+    <39.4904,5,-14.5129>,
+    <39.4621,5,-14.7137>,
+    <39.3913,5,-14.9037>,
+    <39.2813,5,-15.074>,
+    <39.1372,5,-15.2167>,
+    <39.1372,-5,-15.2167>,
+    <39.4162,-5,-14.1167>,
+    <39.4749,-5,-14.3108>,
+    <39.4904,-5,-14.5129>,
+    <39.4621,-5,-14.7137>,
+    <39.3913,-5,-14.9037>,
+    <39.2813,-5,-15.074>,
+  }
+  normal_vectors {
+    16,
+    <-0.814835,-0,-0.579693>,
+    <-0.814835,-0,-0.579693>,
+    <-0.920413,-0,-0.390948>,
+    <-0.982941,-0,-0.183919>,
+    <-0.999497,-0,0.0317132>,
+    <-0.969305,-0,0.245861>,
+    <-0.893778,-0,0.44851>,
+    <-0.776447,-0,0.630182>,
+    <-0.622802,-0,0.78238>,
+    <-0.622802,-0,0.78238>,
+    <-0.920413,-0,-0.390948>,
+    <-0.982941,-0,-0.183919>,
+    <-0.999497,-0,0.0317132>,
+    <-0.969305,-0,0.245861>,
+    <-0.893778,-0,0.44851>,
+    <-0.776447,-0,0.630182>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face56
+
+// face number57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00157 = mesh2{
+  vertex_vectors {
+    8,
+    <38.7419,-5,-13.0787>,
+    <38.7419,5,-13.0787>,
+    <38.9278,5,-13.3696>,
+    <39.1196,5,-13.6567>,
+    <39.3173,5,-13.9397>,
+    <39.3173,-5,-13.9397>,
+    <38.9278,-5,-13.3696>,
+    <39.1196,-5,-13.6567>,
+  }
+  normal_vectors {
+    8,
+    <-0.848124,0,-0.529797>,
+    <-0.848124,0,-0.529797>,
+    <-0.837109,0,-0.547036>,
+    <-0.825743,0,-0.564046>,
+    <-0.814032,0,-0.58082>,
+    <-0.814032,0,-0.58082>,
+    <-0.837109,0,-0.547036>,
+    <-0.825743,0,-0.564046>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face57
+
+// face number58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00158 = mesh2{
+  vertex_vectors {
+    16,
+    <37.4933,-5,-12.7564>,
+    <37.4933,5,-12.7564>,
+    <37.6803,5,-12.6779>,
+    <37.8797,5,-12.6415>,
+    <38.0823,5,-12.6488>,
+    <38.2786,5,-12.6994>,
+    <38.4595,5,-12.7911>,
+    <38.6163,5,-12.9196>,
+    <38.7419,5,-13.0787>,
+    <38.7419,-5,-13.0787>,
+    <37.6803,-5,-12.6779>,
+    <37.8797,-5,-12.6415>,
+    <38.0823,-5,-12.6488>,
+    <38.2786,-5,-12.6994>,
+    <38.4595,-5,-12.7911>,
+    <38.6163,-5,-12.9196>,
+  }
+  normal_vectors {
+    16,
+    <0.484488,-0,-0.874798>,
+    <0.484488,-0,-0.874798>,
+    <0.285078,-0,-0.958504>,
+    <0.0723344,-0,-0.99738>,
+    <-0.143791,-0,-0.989608>,
+    <-0.353191,-0,-0.935551>,
+    <-0.546074,-0,-0.837737>,
+    <-0.713416,-0,-0.700741>,
+    <-0.847391,-0,-0.53097>,
+    <-0.847391,-0,-0.53097>,
+    <0.285078,-0,-0.958504>,
+    <0.0723344,-0,-0.99738>,
+    <-0.143791,-0,-0.989608>,
+    <-0.353191,-0,-0.935551>,
+    <-0.546074,-0,-0.837737>,
+    <-0.713416,-0,-0.700741>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face58
+
+// face number59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00159 = mesh2{
+  vertex_vectors {
+    4,
+    <36.5754,-5,-13.2626>,
+    <36.5754,5,-13.2626>,
+    <37.4933,5,-12.7564>,
+    <37.4933,-5,-12.7564>,
+  }
+  normal_vectors {
+    4,
+    <0.482886,-0,-0.875683>,
+    <0.482886,-0,-0.875683>,
+    <0.482886,-0,-0.875683>,
+    <0.482886,-0,-0.875683>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face59
+
+// face number60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00160 = mesh2{
+  vertex_vectors {
+    7,
+    <35.8791,-5,-13.4824>,
+    <36.5754,-5,-13.2626>,
+    <35.6082,-4.91329,-13.5363>,
+    <35.6082,4.91329,-13.5363>,
+    <35.8791,5,-13.4824>,
+    <36.5754,5,-13.2626>,
+    <36.2645,-0.0433537,-13.38>,
+  }
+  normal_vectors {
+    7,
+    <0.217811,-0,-0.975991>,
+    <0.425159,-0,-0.905119>,
+    <0.173548,-0,-0.984825>,
+    <0.173548,-0,-0.984825>,
+    <0.217811,-0,-0.975991>,
+    <0.425159,-0,-0.905119>,
+    <0.300721,-0,-0.953712>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face60
+
+// face number61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00161 = mesh2{
+  vertex_vectors {
+    12,
+    <34.0727,-4.91329,-9.82916>,
+    <34.3023,-5,-9.67572>,
+    <34.7381,-5,-10.9806>,
+    <35.2646,-5,-12.2516>,
+    <35.8791,-5,-13.4824>,
+    <35.6082,-4.91329,-13.5363>,
+    <34.3058,-4.5176,-13.6437>,
+    <33.4576,-4.27253,-13.6114>,
+    <32.5961,-4.03035,-13.5116>,
+    <31.9603,-4.03035,-11.9765>,
+    <32.8405,-4.41925,-10.9157>,
+    <33.4397,-4.66578,-10.3329>,
+  }
+  normal_vectors {
+    12,
+    <-0.299036,-0.950021,-0.0896534>,
+    <-0.299405,-0.950021,-0.0884132>,
+    <-0.292447,-0.950021,-0.109248>,
+    <-0.284041,-0.950021,-0.129542>,
+    <-0.274229,-0.950021,-0.149194>,
+    <-0.274845,-0.950021,-0.148056>,
+    <-0.278445,-0.950021,-0.14117>,
+    <-0.281069,-0.950021,-0.13587>,
+    <-0.283816,-0.950021,-0.130035>,
+    <-0.292637,-0.950021,-0.108739>,
+    <-0.295993,-0.950021,-0.0992412>,
+    <-0.297694,-0.950021,-0.0940158>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face61
+
+// face number62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00162 = mesh2{
+  vertex_vectors {
+    7,
+    <34.9501,-5,-9.33881>,
+    <34.3023,-5,-9.67572>,
+    <34.9501,5,-9.33881>,
+    <34.3023,5,-9.67572>,
+    <34.0727,4.91329,-9.82916>,
+    <34.0727,-4.91329,-9.82916>,
+    <34.6472,0.0433537,-9.47563>,
+  }
+  normal_vectors {
+    7,
+    <-0.339384,-0,0.940648>,
+    <-0.536115,-0,0.844145>,
+    <-0.339384,-0,0.940648>,
+    <-0.536115,-0,0.844145>,
+    <-0.57366,-0,0.819094>,
+    <-0.57366,-0,0.819094>,
+    <-0.461736,-0,0.887018>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face62
+
+// face number63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00163 = mesh2{
+  vertex_vectors {
+    4,
+    <35.9571,-5,-9.04767>,
+    <35.9571,5,-9.04767>,
+    <34.9501,5,-9.33881>,
+    <34.9501,-5,-9.33881>,
+  }
+  normal_vectors {
+    4,
+    <-0.277749,-0,0.960654>,
+    <-0.277749,-0,0.960654>,
+    <-0.277749,-0,0.960654>,
+    <-0.277749,-0,0.960654>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face63
+
+// face number64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00164 = mesh2{
+  vertex_vectors {
+    16,
+    <36.6121,-5,-7.93682>,
+    <36.6121,5,-7.93682>,
+    <36.6358,5,-8.13818>,
+    <36.6157,5,-8.33993>,
+    <36.5527,5,-8.53264>,
+    <36.4497,5,-8.70729>,
+    <36.3116,5,-8.85571>,
+    <36.1448,5,-8.97097>,
+    <35.9571,5,-9.04767>,
+    <35.9571,-5,-9.04767>,
+    <36.6358,-5,-8.13818>,
+    <36.6157,-5,-8.33993>,
+    <36.5527,-5,-8.53264>,
+    <36.4497,-5,-8.70729>,
+    <36.3116,-5,-8.85571>,
+    <36.1448,-5,-8.97097>,
+  }
+  normal_vectors {
+    16,
+    <-0.974648,-0,-0.223742>,
+    <-0.974648,-0,-0.223742>,
+    <-0.99996,-0,-0.00896244>,
+    <-0.978502,-0,0.206236>,
+    <-0.911279,-0,0.41179>,
+    <-0.801435,-0,0.598082>,
+    <-0.654105,-0,0.756403>,
+    <-0.476184,-0,0.879346>,
+    <-0.275988,-0,0.961161>,
+    <-0.275988,-0,0.961161>,
+    <-0.99996,-0,-0.00896244>,
+    <-0.978502,-0,0.206236>,
+    <-0.911279,-0,0.41179>,
+    <-0.801435,-0,0.598082>,
+    <-0.654105,-0,0.756403>,
+    <-0.476184,-0,0.879346>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face64
+
+// face number65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00165 = mesh2{
+  vertex_vectors {
+    8,
+    <36.4101,-5,-6.92119>,
+    <36.4101,5,-6.92119>,
+    <36.4705,5,-7.26109>,
+    <36.5378,5,-7.59968>,
+    <36.6121,5,-7.93682>,
+    <36.6121,-5,-7.93682>,
+    <36.4705,-5,-7.26109>,
+    <36.5378,-5,-7.59968>,
+  }
+  normal_vectors {
+    8,
+    <-0.986309,0,-0.164906>,
+    <-0.986309,0,-0.164906>,
+    <-0.98273,0,-0.185048>,
+    <-0.978738,0,-0.205112>,
+    <-0.974338,0,-0.225091>,
+    <-0.974338,0,-0.225091>,
+    <-0.98273,0,-0.185048>,
+    <-0.978738,0,-0.205112>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face65
+
+// face number66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00166 = mesh2{
+  vertex_vectors {
+    16,
+    <35.3798,-5,-6.14555>,
+    <35.3798,5,-6.14555>,
+    <35.5826,5,-6.14459>,
+    <35.7808,5,-6.18725>,
+    <35.9652,5,-6.27152>,
+    <36.1272,5,-6.39346>,
+    <36.2592,5,-6.54738>,
+    <36.3549,5,-6.72608>,
+    <36.4101,5,-6.92119>,
+    <36.4101,-5,-6.92119>,
+    <35.5826,-5,-6.14459>,
+    <35.7808,-5,-6.18725>,
+    <35.9652,-5,-6.27152>,
+    <36.1272,-5,-6.39346>,
+    <36.2592,-5,-6.54738>,
+    <36.3549,-5,-6.72608>,
+  }
+  normal_vectors {
+    16,
+    <0.11284,-0,-0.993613>,
+    <0.11284,-0,-0.993613>,
+    <-0.103424,-0,-0.994637>,
+    <-0.31485,-0,-0.949141>,
+    <-0.511553,-0,-0.859251>,
+    <-0.684327,-0,-0.729175>,
+    <-0.825095,-0,-0.564994>,
+    <-0.927272,-0,-0.374387>,
+    <-0.98608,-0,-0.16627>,
+    <-0.98608,-0,-0.16627>,
+    <-0.103424,-0,-0.994637>,
+    <-0.31485,-0,-0.949141>,
+    <-0.511553,-0,-0.859251>,
+    <-0.684327,-0,-0.729175>,
+    <-0.825095,-0,-0.564994>,
+    <-0.927272,-0,-0.374387>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face66
+
+// face number67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00167 = mesh2{
+  vertex_vectors {
+    4,
+    <34.3381,-5,-6.26193>,
+    <34.3381,5,-6.26193>,
+    <35.3798,5,-6.14555>,
+    <35.3798,-5,-6.14555>,
+  }
+  normal_vectors {
+    4,
+    <0.11102,-0,-0.993818>,
+    <0.11102,-0,-0.993818>,
+    <0.11102,-0,-0.993818>,
+    <0.11102,-0,-0.993818>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face67
+
+// face number68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00168 = mesh2{
+  vertex_vectors {
+    7,
+    <33.6107,-5,-6.19857>,
+    <34.3381,-5,-6.26193>,
+    <33.3398,-4.91329,-6.14468>,
+    <33.3398,4.91329,-6.14468>,
+    <33.6107,5,-6.19857>,
+    <34.3381,5,-6.26193>,
+    <34.0059,0.0433537,-6.25144>,
+  }
+  normal_vectors {
+    7,
+    <-0.172265,0,-0.985051>,
+    <0.0464216,-0,-0.998922>,
+    <-0.216539,0,-0.976274>,
+    <-0.216539,0,-0.976274>,
+    <-0.172265,0,-0.985051>,
+    <0.0464216,-0,-0.998922>,
+    <-0.0871411,0,-0.996196>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face68
+
+// face number69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00169 = mesh2{
+  vertex_vectors {
+    12,
+    <33.3398,-4.91329,-2.13213>,
+    <33.6107,-5,-2.07824>,
+    <33.5139,-5,-3.45055>,
+    <33.5139,-5,-4.82626>,
+    <33.6107,-5,-6.19857>,
+    <33.3398,-4.91329,-6.14468>,
+    <32.0954,-4.5176,-5.7455>,
+    <31.3241,-4.27253,-5.39107>,
+    <30.5664,-4.03035,-4.96916>,
+    <30.5664,-4.03035,-3.30766>,
+    <31.7856,-4.41925,-2.66438>,
+    <32.5622,-4.66578,-2.35528>,
+  }
+  normal_vectors {
+    12,
+    <-0.310582,-0.950021,0.0316073>,
+    <-0.310449,-0.950021,0.0328943>,
+    <-0.311993,-0.950021,0.0109829>,
+    <-0.311993,-0.950021,-0.0109829>,
+    <-0.310449,-0.950021,-0.0328943>,
+    <-0.310582,-0.950021,-0.0316073>,
+    <-0.311273,-0.950021,-0.0238681>,
+    <-0.311669,-0.950021,-0.0179668>,
+    <-0.311974,-0.950021,-0.0115251>,
+    <-0.311974,-0.950021,0.0115251>,
+    <-0.311439,-0.950021,0.0215846>,
+    <-0.311011,-0.950021,0.0270632>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face69
+
+// face number70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00170 = mesh2{
+  vertex_vectors {
+    7,
+    <34.3381,-5,-2.01489>,
+    <33.6107,-5,-2.07824>,
+    <34.3381,5,-2.01489>,
+    <33.6107,5,-2.07824>,
+    <33.3398,4.91329,-2.13213>,
+    <33.3398,-4.91329,-2.13213>,
+    <34.0059,0.0433537,-2.02537>,
+  }
+  normal_vectors {
+    7,
+    <0.0464216,-0,0.998922>,
+    <-0.172265,-0,0.985051>,
+    <0.0464216,-0,0.998922>,
+    <-0.172265,-0,0.985051>,
+    <-0.216539,-0,0.976274>,
+    <-0.216539,-0,0.976274>,
+    <-0.0871411,-0,0.996196>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face70
+
+// face number71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00171 = mesh2{
+  vertex_vectors {
+    4,
+    <35.3798,-5,-2.13126>,
+    <35.3798,5,-2.13126>,
+    <34.3381,5,-2.01489>,
+    <34.3381,-5,-2.01489>,
+  }
+  normal_vectors {
+    4,
+    <0.11102,0,0.993818>,
+    <0.11102,0,0.993818>,
+    <0.11102,0,0.993818>,
+    <0.11102,0,0.993818>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face71
+
+// face number72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00172 = mesh2{
+  vertex_vectors {
+    16,
+    <36.4101,-5,-1.35563>,
+    <36.4101,5,-1.35563>,
+    <36.3549,5,-1.55074>,
+    <36.2592,5,-1.72943>,
+    <36.1272,5,-1.88335>,
+    <35.9652,5,-2.0053>,
+    <35.7808,5,-2.08957>,
+    <35.5826,5,-2.13222>,
+    <35.3798,5,-2.13126>,
+    <35.3798,-5,-2.13126>,
+    <36.3549,-5,-1.55074>,
+    <36.2592,-5,-1.72943>,
+    <36.1272,-5,-1.88335>,
+    <35.9652,-5,-2.0053>,
+    <35.7808,-5,-2.08957>,
+    <35.5826,-5,-2.13222>,
+  }
+  normal_vectors {
+    16,
+    <-0.98608,-0,0.16627>,
+    <-0.98608,-0,0.16627>,
+    <-0.927272,-0,0.374388>,
+    <-0.825095,-0,0.564994>,
+    <-0.684327,-0,0.729175>,
+    <-0.511553,-0,0.859252>,
+    <-0.31485,-0,0.949141>,
+    <-0.103424,-0,0.994637>,
+    <0.11284,0,0.993613>,
+    <0.11284,0,0.993613>,
+    <-0.927272,-0,0.374388>,
+    <-0.825095,-0,0.564994>,
+    <-0.684327,-0,0.729175>,
+    <-0.511553,-0,0.859252>,
+    <-0.31485,-0,0.949141>,
+    <-0.103424,-0,0.994637>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face72
+
+// face number73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00173 = mesh2{
+  vertex_vectors {
+    8,
+    <36.6121,-5,-0.339989>,
+    <36.6121,5,-0.339989>,
+    <36.5378,5,-0.677133>,
+    <36.4705,5,-1.01573>,
+    <36.4101,5,-1.35563>,
+    <36.4101,-5,-1.35563>,
+    <36.5378,-5,-0.677133>,
+    <36.4705,-5,-1.01573>,
+  }
+  normal_vectors {
+    8,
+    <-0.974338,-0,0.225091>,
+    <-0.974338,-0,0.225091>,
+    <-0.978738,-0,0.205112>,
+    <-0.98273,-0,0.185048>,
+    <-0.986309,-0,0.164906>,
+    <-0.986309,-0,0.164906>,
+    <-0.978738,-0,0.205112>,
+    <-0.98273,-0,0.185048>,
+  }
+  face_indices {
+    6,
+    <1,2,0>,
+    <2,3,6>,
+    <0,2,6>,
+    <6,3,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face73
+
+// face number74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00174 = mesh2{
+  vertex_vectors {
+    16,
+    <35.9571,-5,0.770858>,
+    <35.9571,5,0.770858>,
+    <36.1448,5,0.694157>,
+    <36.3116,5,0.578898>,
+    <36.4497,5,0.430473>,
+    <36.5527,5,0.255823>,
+    <36.6157,5,0.0631166>,
+    <36.6358,5,-0.138633>,
+    <36.6121,5,-0.339989>,
+    <36.6121,-5,-0.339989>,
+    <36.1448,-5,0.694157>,
+    <36.3116,-5,0.578898>,
+    <36.4497,-5,0.430473>,
+    <36.5527,-5,0.255823>,
+    <36.6157,-5,0.0631166>,
+    <36.6358,-5,-0.138633>,
+  }
+  normal_vectors {
+    16,
+    <-0.275988,-0,-0.961161>,
+    <-0.275988,-0,-0.961161>,
+    <-0.476184,-0,-0.879346>,
+    <-0.654105,-0,-0.756404>,
+    <-0.801435,-0,-0.598082>,
+    <-0.911279,-0,-0.41179>,
+    <-0.978502,-0,-0.206236>,
+    <-0.99996,-0,0.00896261>,
+    <-0.974648,-0,0.223742>,
+    <-0.974648,-0,0.223742>,
+    <-0.476184,-0,-0.879346>,
+    <-0.654105,-0,-0.756404>,
+    <-0.801435,-0,-0.598082>,
+    <-0.911279,-0,-0.41179>,
+    <-0.978502,-0,-0.206236>,
+    <-0.99996,-0,0.00896261>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face74
+
+// face number75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00175 = mesh2{
+  vertex_vectors {
+    4,
+    <34.9501,-5,1.062>,
+    <34.9501,5,1.062>,
+    <35.9571,5,0.770858>,
+    <35.9571,-5,0.770858>,
+  }
+  normal_vectors {
+    4,
+    <-0.277749,-0,-0.960654>,
+    <-0.277749,-0,-0.960654>,
+    <-0.277749,-0,-0.960654>,
+    <-0.277749,-0,-0.960654>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face75
+
+// face number76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00176 = mesh2{
+  vertex_vectors {
+    7,
+    <34.3023,-5,1.3989>,
+    <34.9501,-5,1.062>,
+    <34.0727,-4.91329,1.55235>,
+    <34.0727,4.91329,1.55235>,
+    <34.3023,5,1.3989>,
+    <34.9501,5,1.062>,
+    <34.6472,0.0433537,1.19882>,
+  }
+  normal_vectors {
+    7,
+    <-0.536115,0,-0.844145>,
+    <-0.339384,0,-0.940648>,
+    <-0.57366,0,-0.819094>,
+    <-0.57366,0,-0.819094>,
+    <-0.536115,0,-0.844145>,
+    <-0.339384,0,-0.940648>,
+    <-0.461736,0,-0.887018>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face76
+
+// face number77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00177 = mesh2{
+  vertex_vectors {
+    12,
+    <35.6082,-4.91329,5.25946>,
+    <35.8791,-5,5.20559>,
+    <35.2646,-5,3.97476>,
+    <34.7381,-5,2.70377>,
+    <34.3023,-5,1.3989>,
+    <34.0727,-4.91329,1.55235>,
+    <33.0758,-4.5176,2.39737>,
+    <32.4988,-4.27253,3.01996>,
+    <31.9603,-4.03035,3.69972>,
+    <32.5961,-4.03035,5.23475>,
+    <33.9686,-4.41925,5.36251>,
+    <34.8044,-4.66578,5.35087>,
+  }
+  normal_vectors {
+    12,
+    <-0.274845,-0.950021,0.148056>,
+    <-0.274229,-0.950021,0.149194>,
+    <-0.284041,-0.950021,0.129542>,
+    <-0.292447,-0.950021,0.109248>,
+    <-0.299405,-0.950021,0.0884132>,
+    <-0.299036,-0.950021,0.0896534>,
+    <-0.296713,-0.950021,0.0970677>,
+    <-0.29482,-0.950021,0.102671>,
+    <-0.292637,-0.950021,0.108739>,
+    <-0.283816,-0.950021,0.130035>,
+    <-0.279472,-0.950021,0.139124>,
+    <-0.27698,-0.950021,0.144022>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face77
+
+// face number78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00178 = mesh2{
+  vertex_vectors {
+    7,
+    <36.5754,-5,4.98575>,
+    <35.8791,-5,5.20559>,
+    <36.5754,5,4.98575>,
+    <35.8791,5,5.20559>,
+    <35.6082,4.91329,5.25946>,
+    <35.6082,-4.91329,5.25946>,
+    <36.2645,0.0433537,5.1032>,
+  }
+  normal_vectors {
+    7,
+    <0.425159,-0,0.905119>,
+    <0.217811,-0,0.975991>,
+    <0.425159,-0,0.905119>,
+    <0.217811,-0,0.975991>,
+    <0.173548,-0,0.984825>,
+    <0.173548,-0,0.984825>,
+    <0.300721,-0,0.953712>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face78
+
+// face number79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00179 = mesh2{
+  vertex_vectors {
+    4,
+    <37.4933,-5,4.47958>,
+    <37.4933,5,4.47958>,
+    <36.5754,5,4.98575>,
+    <36.5754,-5,4.98575>,
+  }
+  normal_vectors {
+    4,
+    <0.482886,0,0.875683>,
+    <0.482886,0,0.875683>,
+    <0.482886,0,0.875683>,
+    <0.482886,0,0.875683>,
+  }
+  face_indices {
+    2,
+    <1,2,0>,
+    <0,2,3>,
+  }
+} // end of Face79
+
+// face number80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00180 = mesh2{
+  vertex_vectors {
+    16,
+    <38.7419,-5,4.80192>,
+    <38.7419,5,4.80192>,
+    <38.6163,5,4.64276>,
+    <38.4595,5,4.51433>,
+    <38.2786,5,4.42263>,
+    <38.0823,5,4.37195>,
+    <37.8797,5,4.36466>,
+    <37.6803,5,4.40111>,
+    <37.4933,5,4.47958>,
+    <37.4933,-5,4.47958>,
+    <38.6163,-5,4.64276>,
+    <38.4595,-5,4.51433>,
+    <38.2786,-5,4.42263>,
+    <38.0823,-5,4.37195>,
+    <37.8797,-5,4.36466>,
+    <37.6803,-5,4.40111>,
+  }
+  normal_vectors {
+    16,
+    <-0.847391,-0,0.530969>,
+    <-0.847391,-0,0.530969>,
+    <-0.713416,-0,0.700741>,
+    <-0.546074,-0,0.837737>,
+    <-0.353191,-0,0.935551>,
+    <-0.143791,-0,0.989608>,
+    <0.0723344,0,0.99738>,
+    <0.285079,0,0.958504>,
+    <0.484489,0,0.874797>,
+    <0.484489,0,0.874797>,
+    <-0.713416,-0,0.700741>,
+    <-0.546074,-0,0.837737>,
+    <-0.353191,-0,0.935551>,
+    <-0.143791,-0,0.989608>,
+    <0.0723344,0,0.99738>,
+    <0.285079,0,0.958504>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face80
+
+// face number81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00181 = mesh2{
+  vertex_vectors {
+    8,
+    <39.3173,-5,5.66293>,
+    <39.3173,5,5.66293>,
+    <39.1196,5,5.37987>,
+    <38.9278,5,5.09283>,
+    <38.7419,5,4.80192>,
+    <38.7419,-5,4.80192>,
+    <39.1196,-5,5.37987>,
+    <38.9278,-5,5.09283>,
+  }
+  normal_vectors {
+    8,
+    <-0.814032,-0,0.58082>,
+    <-0.814032,-0,0.58082>,
+    <-0.825743,-0,0.564046>,
+    <-0.837109,-0,0.547036>,
+    <-0.848124,-0,0.529797>,
+    <-0.848124,-0,0.529797>,
+    <-0.825743,-0,0.564046>,
+    <-0.837109,-0,0.547036>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face81
+
+// face number82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00182 = mesh2{
+  vertex_vectors {
+    16,
+    <39.1372,-5,6.93988>,
+    <39.1372,5,6.93988>,
+    <39.2813,5,6.79719>,
+    <39.3913,5,6.62688>,
+    <39.4621,5,6.43689>,
+    <39.4904,5,6.23613>,
+    <39.4749,5,6.03397>,
+    <39.4162,5,5.83988>,
+    <39.3173,5,5.66293>,
+    <39.3173,-5,5.66293>,
+    <39.2813,-5,6.79719>,
+    <39.3913,-5,6.62688>,
+    <39.4621,-5,6.43689>,
+    <39.4904,-5,6.23613>,
+    <39.4749,-5,6.03397>,
+    <39.4162,-5,5.83988>,
+  }
+  normal_vectors {
+    16,
+    <-0.622801,-0,-0.78238>,
+    <-0.622801,-0,-0.78238>,
+    <-0.776447,-0,-0.630182>,
+    <-0.893777,-0,-0.448511>,
+    <-0.969305,-0,-0.245861>,
+    <-0.999497,-0,-0.0317129>,
+    <-0.982941,-0,0.183919>,
+    <-0.920413,-0,0.390948>,
+    <-0.814835,-0,0.579693>,
+    <-0.814835,-0,0.579693>,
+    <-0.776447,-0,-0.630182>,
+    <-0.893777,-0,-0.448511>,
+    <-0.969305,-0,-0.245861>,
+    <-0.999497,-0,-0.0317129>,
+    <-0.982941,-0,0.183919>,
+    <-0.920413,-0,0.390948>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face82
+
+// face number83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00183 = mesh2{
+  vertex_vectors {
+    4,
+    <38.3183,-5,7.59421>,
+    <38.3183,5,7.59421>,
+    <39.1372,5,6.93988>,
+    <39.1372,-5,6.93988>,
+  }
+  normal_vectors {
+    4,
+    <-0.624233,-0,-0.781238>,
+    <-0.624233,-0,-0.781238>,
+    <-0.624233,-0,-0.781238>,
+    <-0.624233,-0,-0.781238>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face83
+
+// face number84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00184 = mesh2{
+  vertex_vectors {
+    7,
+    <37.8488,-5,8.15337>,
+    <38.3183,-5,7.59421>,
+    <37.6953,-4.91329,8.38302>,
+    <37.6953,4.91329,8.38302>,
+    <37.8488,5,8.15337>,
+    <38.3183,5,7.59421>,
+    <38.0908,0.0433537,7.83654>,
+  }
+  normal_vectors {
+    7,
+    <-0.818346,0,-0.574727>,
+    <-0.673519,0,-0.73917>,
+    <-0.843446,0,-0.537214>,
+    <-0.843446,0,-0.537214>,
+    <-0.818346,0,-0.574727>,
+    <-0.673519,0,-0.73917>,
+    <-0.766035,0,-0.642799>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face84
+
+// face number85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00185 = mesh2{
+  vertex_vectors {
+    12,
+    <40.5326,-4.91329,11.2203>,
+    <40.7623,-5,11.0669>,
+    <39.7235,-5,10.1649>,
+    <38.7507,-5,9.19214>,
+    <37.8488,-5,8.15337>,
+    <37.6953,-4.91329,8.38302>,
+    <37.0976,-4.5176,9.54522>,
+    <36.8029,-4.27253,10.3412>,
+    <36.5655,-4.03035,11.1753>,
+    <37.7403,-4.03035,12.3502>,
+    <39.0573,-4.41925,11.943>,
+    <39.825,-4.66578,11.6124>,
+  }
+  normal_vectors {
+    12,
+    <-0.197265,-0.950021,0.241965>,
+    <-0.196261,-0.950021,0.24278>,
+    <-0.212847,-0.950021,0.228379>,
+    <-0.228379,-0.950021,0.212847>,
+    <-0.24278,-0.950021,0.196261>,
+    <-0.241965,-0.950021,0.197265>,
+    <-0.23698,-0.950021,0.203226>,
+    <-0.233088,-0.950021,0.207679>,
+    <-0.228748,-0.950021,0.212449>,
+    <-0.212449,-0.950021,0.228748>,
+    <-0.204958,-0.950021,0.235484>,
+    <-0.200782,-0.950021,0.239055>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face85
+
+// face number86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00186 = mesh2{
+  vertex_vectors {
+    7,
+    <41.3214,-5,10.5973>,
+    <40.7623,-5,11.0669>,
+    <41.3214,5,10.5973>,
+    <40.7623,5,11.0669>,
+    <40.5326,4.91329,11.2203>,
+    <40.5326,-4.91329,11.2203>,
+    <41.0791,0.0433537,10.8248>,
+  }
+  normal_vectors {
+    7,
+    <0.73917,-0,0.673519>,
+    <0.574726,-0,0.818346>,
+    <0.73917,-0,0.673519>,
+    <0.574726,-0,0.818346>,
+    <0.537214,-0,0.843446>,
+    <0.537214,-0,0.843446>,
+    <0.642799,-0,0.766035>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face86
+
+// face number87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00187 = mesh2{
+  vertex_vectors {
+    4,
+    <41.9758,-5,9.77841>,
+    <41.9758,5,9.77841>,
+    <41.3214,5,10.5973>,
+    <41.3214,-5,10.5973>,
+  }
+  normal_vectors {
+    4,
+    <0.781238,0,0.624233>,
+    <0.781238,0,0.624233>,
+    <0.781238,0,0.624233>,
+    <0.781238,0,0.624233>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face87
+
+// face number88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00188 = mesh2{
+  vertex_vectors {
+    16,
+    <43.2527,-5,9.59838>,
+    <43.2527,5,9.59838>,
+    <43.0758,5,9.4994>,
+    <42.8817,5,9.44078>,
+    <42.6795,5,9.42526>,
+    <42.4787,5,9.45357>,
+    <42.2888,5,9.52437>,
+    <42.1184,5,9.63437>,
+    <41.9758,5,9.77841>,
+    <41.9758,-5,9.77841>,
+    <43.0758,-5,9.4994>,
+    <42.8817,-5,9.44078>,
+    <42.6795,-5,9.42526>,
+    <42.4787,-5,9.45357>,
+    <42.2888,-5,9.52437>,
+    <42.1184,-5,9.63437>,
+  }
+  normal_vectors {
+    16,
+    <-0.579694,-0,0.814835>,
+    <-0.579694,-0,0.814835>,
+    <-0.390949,-0,0.920412>,
+    <-0.183918,-0,0.982942>,
+    <0.0317115,0,0.999497>,
+    <0.24586,0,0.969305>,
+    <0.448512,0,0.893777>,
+    <0.630182,0,0.776447>,
+    <0.78238,0,0.622802>,
+    <0.78238,0,0.622802>,
+    <-0.390949,-0,0.920412>,
+    <-0.183918,-0,0.982942>,
+    <0.0317115,0,0.999497>,
+    <0.24586,0,0.969305>,
+    <0.448512,0,0.893777>,
+    <0.630182,0,0.776447>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face88
+
+// face number89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00189 = mesh2{
+  vertex_vectors {
+    8,
+    <44.1137,-5,10.1737>,
+    <44.1137,5,10.1737>,
+    <43.8228,5,9.98781>,
+    <43.5358,5,9.79601>,
+    <43.2527,5,9.59838>,
+    <43.2527,-5,9.59838>,
+    <43.8228,-5,9.98781>,
+    <43.5358,-5,9.79601>,
+  }
+  normal_vectors {
+    8,
+    <-0.529797,-0,0.848124>,
+    <-0.529797,-0,0.848124>,
+    <-0.547036,-0,0.837109>,
+    <-0.564046,-0,0.825743>,
+    <-0.58082,-0,0.814032>,
+    <-0.58082,-0,0.814032>,
+    <-0.547036,-0,0.837109>,
+    <-0.564046,-0,0.825743>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face89
+
+// face number90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00190 = mesh2{
+  vertex_vectors {
+    16,
+    <44.4361,-5,11.4223>,
+    <44.4361,5,11.4223>,
+    <44.5145,5,11.2354>,
+    <44.551,5,11.0359>,
+    <44.5437,5,10.8333>,
+    <44.493,5,10.637>,
+    <44.4013,5,10.4562>,
+    <44.2729,5,10.2993>,
+    <44.1137,5,10.1737>,
+    <44.1137,-5,10.1737>,
+    <44.5145,-5,11.2354>,
+    <44.551,-5,11.0359>,
+    <44.5437,-5,10.8333>,
+    <44.493,-5,10.637>,
+    <44.4013,-5,10.4562>,
+    <44.2729,-5,10.2993>,
+  }
+  normal_vectors {
+    16,
+    <-0.874798,-0,-0.484488>,
+    <-0.874798,-0,-0.484488>,
+    <-0.958504,-0,-0.285079>,
+    <-0.99738,-0,-0.0723357>,
+    <-0.989608,-0,0.143791>,
+    <-0.935551,-0,0.353192>,
+    <-0.837737,-0,0.546074>,
+    <-0.700742,-0,0.713415>,
+    <-0.530971,-0,0.84739>,
+    <-0.530971,-0,0.84739>,
+    <-0.958504,-0,-0.285079>,
+    <-0.99738,-0,-0.0723357>,
+    <-0.989608,-0,0.143791>,
+    <-0.935551,-0,0.353192>,
+    <-0.837737,-0,0.546074>,
+    <-0.700742,-0,0.713415>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <12,4,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face90
+
+// face number91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00191 = mesh2{
+  vertex_vectors {
+    4,
+    <43.9299,-5,12.3402>,
+    <43.9299,5,12.3402>,
+    <44.4361,5,11.4223>,
+    <44.4361,-5,11.4223>,
+  }
+  normal_vectors {
+    4,
+    <-0.875683,-0,-0.482886>,
+    <-0.875683,-0,-0.482886>,
+    <-0.875683,-0,-0.482886>,
+    <-0.875683,-0,-0.482886>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face91
+
+// face number92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00192 = mesh2{
+  vertex_vectors {
+    7,
+    <43.71,-5,13.0365>,
+    <43.9299,-5,12.3402>,
+    <43.6562,-4.91329,13.3074>,
+    <43.6562,4.91329,13.3074>,
+    <43.71,5,13.0365>,
+    <43.9299,5,12.3402>,
+    <43.8124,0.0433537,12.6512>,
+  }
+  normal_vectors {
+    7,
+    <-0.975991,0,-0.217811>,
+    <-0.905119,0,-0.425159>,
+    <-0.984825,0,-0.173548>,
+    <-0.984825,0,-0.173548>,
+    <-0.975991,0,-0.217811>,
+    <-0.905119,0,-0.425159>,
+    <-0.953712,0,-0.30072>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face92
+
+// face number93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00193 = mesh2{
+  vertex_vectors {
+    12,
+    <47.3633,-4.91329,14.8429>,
+    <47.5167,-5,14.6133>,
+    <46.2119,-5,14.1775>,
+    <44.9409,-5,13.6511>,
+    <43.71,-5,13.0365>,
+    <43.6562,-4.91329,13.3074>,
+    <43.5488,-4.5176,14.6099>,
+    <43.5811,-4.27253,15.458>,
+    <43.6809,-4.03035,16.3195>,
+    <45.2159,-4.03035,16.9554>,
+    <46.2768,-4.41925,16.0752>,
+    <46.8596,-4.66578,15.4759>,
+  }
+  normal_vectors {
+    12,
+    <-0.0896534,-0.950021,0.299036>,
+    <-0.0884132,-0.950021,0.299405>,
+    <-0.109248,-0.950021,0.292447>,
+    <-0.129542,-0.950021,0.284041>,
+    <-0.149194,-0.950021,0.274229>,
+    <-0.148056,-0.950021,0.274845>,
+    <-0.14117,-0.950021,0.278445>,
+    <-0.13587,-0.950021,0.281069>,
+    <-0.130035,-0.950021,0.283816>,
+    <-0.108739,-0.950021,0.292637>,
+    <-0.0992412,-0.950021,0.295993>,
+    <-0.0940158,-0.950021,0.297694>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face93
+
+// face number94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00194 = mesh2{
+  vertex_vectors {
+    7,
+    <47.8536,-5,13.9655>,
+    <47.5167,-5,14.6133>,
+    <47.8536,5,13.9655>,
+    <47.5167,5,14.6133>,
+    <47.3633,4.91329,14.8429>,
+    <47.3633,-4.91329,14.8429>,
+    <47.7168,-0.0433537,14.2684>,
+  }
+  normal_vectors {
+    7,
+    <0.940648,-0,0.339383>,
+    <0.844145,-0,0.536114>,
+    <0.940648,-0,0.339383>,
+    <0.844145,-0,0.536114>,
+    <0.819094,-0,0.57366>,
+    <0.819094,-0,0.57366>,
+    <0.887018,-0,0.461735>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face94
+
+// face number95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00195 = mesh2{
+  vertex_vectors {
+    4,
+    <48.1448,-5,12.9585>,
+    <48.1448,5,12.9585>,
+    <47.8536,5,13.9655>,
+    <47.8536,-5,13.9655>,
+  }
+  normal_vectors {
+    4,
+    <0.960654,0,0.277749>,
+    <0.960654,0,0.277749>,
+    <0.960654,0,0.277749>,
+    <0.960654,0,0.277749>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face95
+
+// face number96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00196 = mesh2{
+  vertex_vectors {
+    16,
+    <49.2556,-5,12.3035>,
+    <49.2556,5,12.3035>,
+    <49.0543,5,12.2798>,
+    <48.8525,5,12.2999>,
+    <48.6598,5,12.363>,
+    <48.4852,5,12.4659>,
+    <48.3367,5,12.6041>,
+    <48.2215,5,12.7709>,
+    <48.1448,5,12.9585>,
+    <48.1448,-5,12.9585>,
+    <49.0543,-5,12.2798>,
+    <48.8525,-5,12.2999>,
+    <48.6598,-5,12.363>,
+    <48.4852,-5,12.4659>,
+    <48.3367,-5,12.6041>,
+    <48.2215,-5,12.7709>,
+  }
+  normal_vectors {
+    16,
+    <-0.223742,-0,0.974648>,
+    <-0.223742,-0,0.974648>,
+    <-0.00896319,-0,0.99996>,
+    <0.206235,0,0.978503>,
+    <0.411789,0,0.911279>,
+    <0.598084,0,0.801433>,
+    <0.756405,0,0.654104>,
+    <0.879346,0,0.476183>,
+    <0.961161,0,0.275989>,
+    <0.961161,0,0.275989>,
+    <-0.00896319,-0,0.99996>,
+    <0.206235,0,0.978503>,
+    <0.411789,0,0.911279>,
+    <0.598084,0,0.801433>,
+    <0.756405,0,0.654104>,
+    <0.879346,0,0.476183>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face96
+
+// face number97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00197 = mesh2{
+  vertex_vectors {
+    8,
+    <50.2713,-5,12.5056>,
+    <50.2713,5,12.5056>,
+    <49.9314,5,12.4452>,
+    <49.5928,5,12.3778>,
+    <49.2556,5,12.3035>,
+    <49.2556,-5,12.3035>,
+    <49.9314,-5,12.4452>,
+    <49.5928,-5,12.3778>,
+  }
+  normal_vectors {
+    8,
+    <-0.164906,-0,0.986309>,
+    <-0.164906,-0,0.986309>,
+    <-0.185048,-0,0.98273>,
+    <-0.205112,-0,0.978738>,
+    <-0.225091,-0,0.974338>,
+    <-0.225091,-0,0.974338>,
+    <-0.185048,-0,0.98273>,
+    <-0.205112,-0,0.978738>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face97
+
+// face number98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00198 = mesh2{
+  vertex_vectors {
+    16,
+    <51.0469,-5,13.5358>,
+    <51.0469,5,13.5358>,
+    <51.0479,5,13.3331>,
+    <51.0052,5,13.1348>,
+    <50.9209,5,12.9504>,
+    <50.799,5,12.7885>,
+    <50.6451,5,12.6565>,
+    <50.4664,5,12.5607>,
+    <50.2713,5,12.5056>,
+    <50.2713,-5,12.5056>,
+    <51.0479,-5,13.3331>,
+    <51.0052,-5,13.1348>,
+    <50.9209,-5,12.9504>,
+    <50.799,-5,12.7885>,
+    <50.6451,-5,12.6565>,
+    <50.4664,-5,12.5607>,
+  }
+  normal_vectors {
+    16,
+    <-0.993613,-0,-0.112839>,
+    <-0.993613,-0,-0.112839>,
+    <-0.994637,-0,0.103425>,
+    <-0.949141,-0,0.314851>,
+    <-0.859253,-0,0.511551>,
+    <-0.729176,-0,0.684327>,
+    <-0.564995,-0,0.825094>,
+    <-0.374387,-0,0.927273>,
+    <-0.166269,-0,0.98608>,
+    <-0.166269,-0,0.98608>,
+    <-0.994637,-0,0.103425>,
+    <-0.949141,-0,0.314851>,
+    <-0.859253,-0,0.511551>,
+    <-0.729176,-0,0.684327>,
+    <-0.564995,-0,0.825094>,
+    <-0.374387,-0,0.927273>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face98
+
+// face number99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body00199 = mesh2{
+  vertex_vectors {
+    4,
+    <50.9305,-5,14.5775>,
+    <50.9305,5,14.5775>,
+    <51.0469,5,13.5358>,
+    <51.0469,-5,13.5358>,
+  }
+  normal_vectors {
+    4,
+    <-0.993818,-0,-0.11102>,
+    <-0.993818,-0,-0.11102>,
+    <-0.993818,-0,-0.11102>,
+    <-0.993818,-0,-0.11102>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face99
+
+// face number100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001100 = mesh2{
+  vertex_vectors {
+    7,
+    <50.9939,-5,15.305>,
+    <50.9305,-5,14.5775>,
+    <51.0478,-4.91329,15.5758>,
+    <51.0478,4.91329,15.5758>,
+    <50.9939,5,15.305>,
+    <50.9305,5,14.5775>,
+    <50.941,0.0433537,14.9098>,
+  }
+  normal_vectors {
+    7,
+    <-0.985051,-0,0.172265>,
+    <-0.998922,0,-0.046422>,
+    <-0.976274,-0,0.216539>,
+    <-0.976274,-0,0.216539>,
+    <-0.985051,-0,0.172265>,
+    <-0.998922,0,-0.046422>,
+    <-0.996196,-0,0.0871406>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face100
+
+// face number101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001101 = mesh2{
+  vertex_vectors {
+    12,
+    <55.0603,-4.91329,15.5758>,
+    <55.1142,-5,15.305>,
+    <53.7419,-5,15.4017>,
+    <52.3662,-5,15.4017>,
+    <50.9939,-5,15.305>,
+    <51.0478,-4.91329,15.5758>,
+    <51.447,-4.5176,16.8203>,
+    <51.8014,-4.27253,17.5915>,
+    <52.2233,-4.03035,18.3492>,
+    <53.8848,-4.03035,18.3492>,
+    <54.5281,-4.41925,17.1301>,
+    <54.8372,-4.66578,16.3534>,
+  }
+  normal_vectors {
+    12,
+    <0.0316073,-0.950021,0.310582>,
+    <0.0328943,-0.950021,0.310449>,
+    <0.0109829,-0.950021,0.311993>,
+    <-0.0109829,-0.950021,0.311993>,
+    <-0.0328943,-0.950021,0.310449>,
+    <-0.0316073,-0.950021,0.310582>,
+    <-0.0238681,-0.950021,0.311273>,
+    <-0.0179668,-0.950021,0.311669>,
+    <-0.0115251,-0.950021,0.311974>,
+    <0.0115251,-0.950021,0.311974>,
+    <0.0215846,-0.950021,0.311439>,
+    <0.0270631,-0.950021,0.311011>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face101
+
+// face number102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001102 = mesh2{
+  vertex_vectors {
+    7,
+    <55.1776,-5,14.5775>,
+    <55.1142,-5,15.305>,
+    <55.1776,5,14.5775>,
+    <55.1142,5,15.305>,
+    <55.0603,4.91329,15.5758>,
+    <55.0603,-4.91329,15.5758>,
+    <55.1671,-0.0433537,14.9098>,
+  }
+  normal_vectors {
+    7,
+    <0.998922,-0,-0.046422>,
+    <0.985051,-0,0.172265>,
+    <0.998922,-0,-0.046422>,
+    <0.985051,-0,0.172265>,
+    <0.976274,-0,0.216539>,
+    <0.976274,-0,0.216539>,
+    <0.996196,-0,0.0871406>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face102
+
+// face number103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001103 = mesh2{
+  vertex_vectors {
+    4,
+    <55.0612,-5,13.5358>,
+    <55.0612,5,13.5358>,
+    <55.1776,5,14.5775>,
+    <55.1776,-5,14.5775>,
+  }
+  normal_vectors {
+    4,
+    <0.993818,-0,-0.11102>,
+    <0.993818,-0,-0.11102>,
+    <0.993818,-0,-0.11102>,
+    <0.993818,-0,-0.11102>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face103
+
+// face number104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001104 = mesh2{
+  vertex_vectors {
+    16,
+    <55.8368,-5,12.5056>,
+    <55.8368,5,12.5056>,
+    <55.6417,5,12.5607>,
+    <55.463,5,12.6565>,
+    <55.3091,5,12.7885>,
+    <55.1872,5,12.9504>,
+    <55.1029,5,13.1348>,
+    <55.0602,5,13.3331>,
+    <55.0612,5,13.5358>,
+    <55.0612,-5,13.5358>,
+    <55.6417,-5,12.5607>,
+    <55.463,-5,12.6565>,
+    <55.3091,-5,12.7885>,
+    <55.1872,-5,12.9504>,
+    <55.1029,-5,13.1348>,
+    <55.0602,-5,13.3331>,
+  }
+  normal_vectors {
+    16,
+    <0.16627,0,0.98608>,
+    <0.16627,0,0.98608>,
+    <0.374388,0,0.927272>,
+    <0.564996,0,0.825094>,
+    <0.729176,0,0.684326>,
+    <0.859252,0,0.511552>,
+    <0.949141,0,0.314852>,
+    <0.994637,0,0.103424>,
+    <0.993613,-0,-0.112839>,
+    <0.993613,-0,-0.112839>,
+    <0.374388,0,0.927272>,
+    <0.564996,0,0.825094>,
+    <0.729176,0,0.684326>,
+    <0.859252,0,0.511552>,
+    <0.949141,0,0.314852>,
+    <0.994637,0,0.103424>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face104
+
+// face number105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001105 = mesh2{
+  vertex_vectors {
+    8,
+    <56.8525,-5,12.3035>,
+    <56.8525,5,12.3035>,
+    <56.5153,5,12.3778>,
+    <56.1767,5,12.4452>,
+    <55.8368,5,12.5056>,
+    <55.8368,-5,12.5056>,
+    <56.5153,-5,12.3778>,
+    <56.1767,-5,12.4452>,
+  }
+  normal_vectors {
+    8,
+    <0.225091,0,0.974338>,
+    <0.225091,0,0.974338>,
+    <0.205113,0,0.978738>,
+    <0.185048,0,0.98273>,
+    <0.164906,0,0.986309>,
+    <0.164906,0,0.986309>,
+    <0.205113,0,0.978738>,
+    <0.185048,0,0.98273>,
+  }
+  face_indices {
+    6,
+    <1,2,0>,
+    <2,3,6>,
+    <0,2,6>,
+    <6,3,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face105
+
+// face number106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001106 = mesh2{
+  vertex_vectors {
+    16,
+    <57.9633,-5,12.9585>,
+    <57.9633,5,12.9585>,
+    <57.8866,5,12.7709>,
+    <57.7714,5,12.6041>,
+    <57.6229,5,12.4659>,
+    <57.4483,5,12.363>,
+    <57.2556,5,12.2999>,
+    <57.0538,5,12.2798>,
+    <56.8525,5,12.3035>,
+    <56.8525,-5,12.3035>,
+    <57.8866,-5,12.7709>,
+    <57.7714,-5,12.6041>,
+    <57.6229,-5,12.4659>,
+    <57.4483,-5,12.363>,
+    <57.2556,-5,12.2999>,
+    <57.0538,-5,12.2798>,
+  }
+  normal_vectors {
+    16,
+    <-0.961161,-0,0.275989>,
+    <-0.961161,-0,0.275989>,
+    <-0.879346,-0,0.476184>,
+    <-0.756404,-0,0.654105>,
+    <-0.598084,-0,0.801434>,
+    <-0.411788,-0,0.91128>,
+    <-0.206238,-0,0.978502>,
+    <0.0089641,0,0.99996>,
+    <0.223743,0,0.974648>,
+    <0.223743,0,0.974648>,
+    <-0.879346,-0,0.476184>,
+    <-0.756404,-0,0.654105>,
+    <-0.598084,-0,0.801434>,
+    <-0.411788,-0,0.91128>,
+    <-0.206238,-0,0.978502>,
+    <0.0089641,0,0.99996>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face106
+
+// face number107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001107 = mesh2{
+  vertex_vectors {
+    4,
+    <58.2545,-5,13.9655>,
+    <58.2545,5,13.9655>,
+    <57.9633,5,12.9585>,
+    <57.9633,-5,12.9585>,
+  }
+  normal_vectors {
+    4,
+    <-0.960654,-0,0.277749>,
+    <-0.960654,-0,0.277749>,
+    <-0.960654,-0,0.277749>,
+    <-0.960654,-0,0.277749>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face107
+
+// face number108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001108 = mesh2{
+  vertex_vectors {
+    7,
+    <58.5914,-5,14.6133>,
+    <58.2545,-5,13.9655>,
+    <58.7448,-4.91329,14.8429>,
+    <58.7448,4.91329,14.8429>,
+    <58.5914,5,14.6133>,
+    <58.2545,5,13.9655>,
+    <58.3913,0.0433537,14.2684>,
+  }
+  normal_vectors {
+    7,
+    <-0.844145,-0,0.536114>,
+    <-0.940648,-0,0.339383>,
+    <-0.819094,-0,0.57366>,
+    <-0.819094,-0,0.57366>,
+    <-0.844145,-0,0.536114>,
+    <-0.940648,-0,0.339383>,
+    <-0.887018,-0,0.461735>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face108
+
+// face number109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001109 = mesh2{
+  vertex_vectors {
+    12,
+    <62.4519,-4.91329,13.3074>,
+    <62.398,-5,13.0365>,
+    <61.1672,-5,13.6511>,
+    <59.8962,-5,14.1775>,
+    <58.5914,-5,14.6133>,
+    <58.7448,-4.91329,14.8429>,
+    <59.5898,-4.5176,15.8399>,
+    <60.2124,-4.27253,16.4168>,
+    <60.8922,-4.03035,16.9554>,
+    <62.4272,-4.03035,16.3195>,
+    <62.555,-4.41925,14.947>,
+    <62.5433,-4.66578,14.1112>,
+  }
+  normal_vectors {
+    12,
+    <0.148056,-0.950021,0.274845>,
+    <0.149194,-0.950021,0.274229>,
+    <0.129542,-0.950021,0.284041>,
+    <0.109248,-0.950021,0.292447>,
+    <0.0884132,-0.950021,0.299405>,
+    <0.0896534,-0.950021,0.299036>,
+    <0.0970677,-0.950021,0.296713>,
+    <0.102671,-0.950021,0.29482>,
+    <0.108739,-0.950021,0.292637>,
+    <0.130035,-0.950021,0.283816>,
+    <0.139124,-0.950021,0.279472>,
+    <0.144022,-0.950021,0.27698>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face109
+
+// face number110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001110 = mesh2{
+  vertex_vectors {
+    7,
+    <62.1782,-5,12.3402>,
+    <62.398,-5,13.0365>,
+    <62.1782,5,12.3402>,
+    <62.398,5,13.0365>,
+    <62.4519,4.91329,13.3074>,
+    <62.4519,-4.91329,13.3074>,
+    <62.2957,-0.0433537,12.6512>,
+  }
+  normal_vectors {
+    7,
+    <0.905119,-0,-0.425159>,
+    <0.975991,-0,-0.217811>,
+    <0.905119,-0,-0.425159>,
+    <0.975991,-0,-0.217811>,
+    <0.984825,-0,-0.173548>,
+    <0.984825,-0,-0.173548>,
+    <0.953712,-0,-0.30072>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face110
+
+// face number111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001111 = mesh2{
+  vertex_vectors {
+    4,
+    <61.672,-5,11.4223>,
+    <61.672,5,11.4223>,
+    <62.1782,5,12.3402>,
+    <62.1782,-5,12.3402>,
+  }
+  normal_vectors {
+    4,
+    <0.875683,-0,-0.482886>,
+    <0.875683,-0,-0.482886>,
+    <0.875683,-0,-0.482886>,
+    <0.875683,-0,-0.482886>,
+  }
+  face_indices {
+    2,
+    <1,2,0>,
+    <0,2,3>,
+  }
+} // end of Face111
+
+// face number112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001112 = mesh2{
+  vertex_vectors {
+    16,
+    <61.9944,-5,10.1737>,
+    <61.9944,5,10.1737>,
+    <61.8352,5,10.2993>,
+    <61.7068,5,10.4562>,
+    <61.6151,5,10.637>,
+    <61.5644,5,10.8333>,
+    <61.5571,5,11.0359>,
+    <61.5936,5,11.2354>,
+    <61.672,5,11.4223>,
+    <61.672,-5,11.4223>,
+    <61.8352,-5,10.2993>,
+    <61.7068,-5,10.4562>,
+    <61.6151,-5,10.637>,
+    <61.5644,-5,10.8333>,
+    <61.5571,-5,11.0359>,
+    <61.5936,-5,11.2354>,
+  }
+  normal_vectors {
+    16,
+    <0.530971,0,0.84739>,
+    <0.530971,0,0.84739>,
+    <0.70074,0,0.713417>,
+    <0.837736,0,0.546075>,
+    <0.935551,0,0.353193>,
+    <0.989608,0,0.143791>,
+    <0.99738,-0,-0.0723359>,
+    <0.958504,-0,-0.285079>,
+    <0.874797,-0,-0.48449>,
+    <0.874797,-0,-0.48449>,
+    <0.70074,0,0.713417>,
+    <0.837736,0,0.546075>,
+    <0.935551,0,0.353193>,
+    <0.989608,0,0.143791>,
+    <0.99738,-0,-0.0723359>,
+    <0.958504,-0,-0.285079>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face112
+
+// face number113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001113 = mesh2{
+  vertex_vectors {
+    8,
+    <62.8554,-5,9.59838>,
+    <62.8554,5,9.59838>,
+    <62.5723,5,9.79601>,
+    <62.2853,5,9.98781>,
+    <61.9944,5,10.1737>,
+    <61.9944,-5,10.1737>,
+    <62.5723,-5,9.79601>,
+    <62.2853,-5,9.98781>,
+  }
+  normal_vectors {
+    8,
+    <0.58082,0,0.814032>,
+    <0.58082,0,0.814032>,
+    <0.564046,0,0.825743>,
+    <0.547036,0,0.837109>,
+    <0.529797,0,0.848124>,
+    <0.529797,0,0.848124>,
+    <0.564046,0,0.825743>,
+    <0.547036,0,0.837109>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face113
+
+// face number114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001114 = mesh2{
+  vertex_vectors {
+    16,
+    <64.1323,-5,9.77841>,
+    <64.1323,5,9.77841>,
+    <63.9896,5,9.63437>,
+    <63.8193,5,9.52437>,
+    <63.6293,5,9.45357>,
+    <63.4286,5,9.42526>,
+    <63.2264,5,9.44078>,
+    <63.0323,5,9.4994>,
+    <62.8554,5,9.59838>,
+    <62.8554,-5,9.59838>,
+    <63.9896,-5,9.63437>,
+    <63.8193,-5,9.52437>,
+    <63.6293,-5,9.45357>,
+    <63.4286,-5,9.42526>,
+    <63.2264,-5,9.44078>,
+    <63.0323,-5,9.4994>,
+  }
+  normal_vectors {
+    16,
+    <-0.782381,-0,0.6228>,
+    <-0.782381,-0,0.6228>,
+    <-0.630181,-0,0.776448>,
+    <-0.448511,-0,0.893777>,
+    <-0.245863,-0,0.969305>,
+    <-0.0317147,-0,0.999497>,
+    <0.183919,0,0.982941>,
+    <0.39095,0,0.920412>,
+    <0.579694,0,0.814834>,
+    <0.579694,0,0.814834>,
+    <-0.630181,-0,0.776448>,
+    <-0.448511,-0,0.893777>,
+    <-0.245863,-0,0.969305>,
+    <-0.0317147,-0,0.999497>,
+    <0.183919,0,0.982941>,
+    <0.39095,0,0.920412>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <11,3,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face114
+
+// face number115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001115 = mesh2{
+  vertex_vectors {
+    4,
+    <64.7867,-5,10.5973>,
+    <64.7867,5,10.5973>,
+    <64.1323,5,9.77841>,
+    <64.1323,-5,9.77841>,
+  }
+  normal_vectors {
+    4,
+    <-0.781238,-0,0.624233>,
+    <-0.781238,-0,0.624233>,
+    <-0.781238,-0,0.624233>,
+    <-0.781238,-0,0.624233>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face115
+
+// face number116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001116 = mesh2{
+  vertex_vectors {
+    7,
+    <65.3458,-5,11.0669>,
+    <64.7867,-5,10.5973>,
+    <65.5755,-4.91329,11.2203>,
+    <65.5755,4.91329,11.2203>,
+    <65.3458,5,11.0669>,
+    <64.7867,5,10.5973>,
+    <65.029,-0.0433537,10.8248>,
+  }
+  normal_vectors {
+    7,
+    <-0.574726,-0,0.818346>,
+    <-0.739169,-0,0.67352>,
+    <-0.537214,-0,0.843446>,
+    <-0.537214,-0,0.843446>,
+    <-0.574726,-0,0.818346>,
+    <-0.739169,-0,0.67352>,
+    <-0.642799,-0,0.766035>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face116
+
+// face number117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001117 = mesh2{
+  vertex_vectors {
+    12,
+    <68.4128,-4.91329,8.38302>,
+    <68.2593,-5,8.15337>,
+    <67.3574,-5,9.19214>,
+    <66.3846,-5,10.1649>,
+    <65.3458,-5,11.0669>,
+    <65.5755,-4.91329,11.2203>,
+    <66.7377,-4.5176,11.818>,
+    <67.5336,-4.27253,12.1127>,
+    <68.3678,-4.03035,12.3502>,
+    <69.5426,-4.03035,11.1753>,
+    <69.1354,-4.41925,9.85838>,
+    <68.8048,-4.66578,9.09064>,
+  }
+  normal_vectors {
+    12,
+    <0.241965,-0.950021,0.197265>,
+    <0.24278,-0.950021,0.196261>,
+    <0.228379,-0.950021,0.212847>,
+    <0.212847,-0.950021,0.228379>,
+    <0.196261,-0.950021,0.24278>,
+    <0.197265,-0.950021,0.241965>,
+    <0.203226,-0.950021,0.23698>,
+    <0.207679,-0.950021,0.233088>,
+    <0.212449,-0.950021,0.228748>,
+    <0.228748,-0.950021,0.212449>,
+    <0.235484,-0.950021,0.204958>,
+    <0.239055,-0.950021,0.200782>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face117
+
+// face number118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001118 = mesh2{
+  vertex_vectors {
+    7,
+    <67.7898,-5,7.59421>,
+    <68.2593,-5,8.15337>,
+    <67.7898,5,7.59421>,
+    <68.2593,5,8.15337>,
+    <68.4128,4.91329,8.38302>,
+    <68.4128,-4.91329,8.38302>,
+    <68.0173,-0.0433537,7.83654>,
+  }
+  normal_vectors {
+    7,
+    <0.673519,-0,-0.73917>,
+    <0.818346,-0,-0.574726>,
+    <0.673519,-0,-0.73917>,
+    <0.818346,-0,-0.574726>,
+    <0.843446,-0,-0.537214>,
+    <0.843446,-0,-0.537214>,
+    <0.766034,-0,-0.642799>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face118
+
+// face number119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001119 = mesh2{
+  vertex_vectors {
+    4,
+    <66.9709,-5,6.93988>,
+    <66.9709,5,6.93988>,
+    <67.7898,5,7.59421>,
+    <67.7898,-5,7.59421>,
+  }
+  normal_vectors {
+    4,
+    <0.624233,-0,-0.781238>,
+    <0.624233,-0,-0.781238>,
+    <0.624233,-0,-0.781238>,
+    <0.624233,-0,-0.781238>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face119
+
+// face number120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001120 = mesh2{
+  vertex_vectors {
+    16,
+    <66.7908,-5,5.66293>,
+    <66.7908,5,5.66293>,
+    <66.6919,5,5.83988>,
+    <66.6332,5,6.03397>,
+    <66.6177,5,6.23613>,
+    <66.646,5,6.43689>,
+    <66.7168,5,6.62688>,
+    <66.8268,5,6.79719>,
+    <66.9709,5,6.93988>,
+    <66.9709,-5,6.93988>,
+    <66.6919,-5,5.83988>,
+    <66.6332,-5,6.03397>,
+    <66.6177,-5,6.23613>,
+    <66.646,-5,6.43689>,
+    <66.7168,-5,6.62688>,
+    <66.8268,-5,6.79719>,
+  }
+  normal_vectors {
+    16,
+    <0.814835,0,0.579693>,
+    <0.814835,0,0.579693>,
+    <0.920412,0,0.390949>,
+    <0.982941,0,0.183919>,
+    <0.999497,-0,-0.031713>,
+    <0.969305,-0,-0.245862>,
+    <0.893777,-0,-0.448512>,
+    <0.776447,-0,-0.630182>,
+    <0.622802,-0,-0.78238>,
+    <0.622802,-0,-0.78238>,
+    <0.920412,0,0.390949>,
+    <0.982941,0,0.183919>,
+    <0.999497,-0,-0.031713>,
+    <0.969305,-0,-0.245862>,
+    <0.893777,-0,-0.448512>,
+    <0.776447,-0,-0.630182>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face120
+
+// face number121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001121 = mesh2{
+  vertex_vectors {
+    8,
+    <67.3661,-5,4.80192>,
+    <67.3661,5,4.80192>,
+    <67.1803,5,5.09283>,
+    <66.9885,5,5.37987>,
+    <66.7908,5,5.66293>,
+    <66.7908,-5,5.66293>,
+    <67.1803,-5,5.09283>,
+    <66.9885,-5,5.37987>,
+  }
+  normal_vectors {
+    8,
+    <0.848124,0,0.529797>,
+    <0.848124,0,0.529797>,
+    <0.837109,0,0.547036>,
+    <0.825743,0,0.564046>,
+    <0.814032,0,0.58082>,
+    <0.814032,0,0.58082>,
+    <0.837109,0,0.547036>,
+    <0.825743,0,0.564046>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <3,4,7>,
+    <6,2,7>,
+    <7,4,5>,
+  }
+} // end of Face121
+
+// face number122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001122 = mesh2{
+  vertex_vectors {
+    16,
+    <68.6148,-5,4.47958>,
+    <68.6148,5,4.47958>,
+    <68.4278,5,4.40111>,
+    <68.2284,5,4.36466>,
+    <68.0258,5,4.37195>,
+    <67.8295,5,4.42263>,
+    <67.6486,5,4.51433>,
+    <67.4917,5,4.64276>,
+    <67.3661,5,4.80192>,
+    <67.3661,-5,4.80192>,
+    <68.4278,-5,4.40111>,
+    <68.2284,-5,4.36466>,
+    <68.0258,-5,4.37195>,
+    <67.8295,-5,4.42263>,
+    <67.6486,-5,4.51433>,
+    <67.4917,-5,4.64276>,
+  }
+  normal_vectors {
+    16,
+    <-0.484491,-0,0.874796>,
+    <-0.484491,-0,0.874796>,
+    <-0.285078,-0,0.958504>,
+    <-0.0723335,-0,0.997381>,
+    <0.143788,0,0.989609>,
+    <0.353195,0,0.93555>,
+    <0.546074,0,0.837737>,
+    <0.713416,0,0.70074>,
+    <0.847391,0,0.530969>,
+    <0.847391,0,0.530969>,
+    <-0.285078,-0,0.958504>,
+    <-0.0723335,-0,0.997381>,
+    <0.143788,0,0.989609>,
+    <0.353195,0,0.93555>,
+    <0.546074,0,0.837737>,
+    <0.713416,0,0.70074>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <10,2,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face122
+
+// face number123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001123 = mesh2{
+  vertex_vectors {
+    4,
+    <69.5327,-5,4.98575>,
+    <69.5327,5,4.98575>,
+    <68.6148,5,4.47958>,
+    <68.6148,-5,4.47958>,
+  }
+  normal_vectors {
+    4,
+    <-0.482886,-0,0.875683>,
+    <-0.482886,-0,0.875683>,
+    <-0.482886,-0,0.875683>,
+    <-0.482886,-0,0.875683>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face123
+
+// face number124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001124 = mesh2{
+  vertex_vectors {
+    7,
+    <70.229,-5,5.20559>,
+    <69.5327,-5,4.98575>,
+    <70.4999,-4.91329,5.25946>,
+    <70.4999,4.91329,5.25946>,
+    <70.229,5,5.20559>,
+    <69.5327,5,4.98575>,
+    <69.8436,-0.0433537,5.1032>,
+  }
+  normal_vectors {
+    7,
+    <-0.217811,-0,0.975991>,
+    <-0.425158,-0,0.905119>,
+    <-0.173548,-0,0.984825>,
+    <-0.173548,-0,0.984825>,
+    <-0.217811,-0,0.975991>,
+    <-0.425158,-0,0.905119>,
+    <-0.300721,-0,0.953712>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face124
+
+// face number125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001125 = mesh2{
+  vertex_vectors {
+    12,
+    <72.0354,-4.91329,1.55235>,
+    <71.8058,-5,1.3989>,
+    <71.37,-5,2.70377>,
+    <70.8435,-5,3.97476>,
+    <70.229,-5,5.20559>,
+    <70.4999,-4.91329,5.25946>,
+    <71.8023,-4.5176,5.36689>,
+    <72.6505,-4.27253,5.33458>,
+    <73.512,-4.03035,5.23475>,
+    <74.1478,-4.03035,3.69972>,
+    <73.2676,-4.41925,2.63886>,
+    <72.6684,-4.66578,2.05608>,
+  }
+  normal_vectors {
+    12,
+    <0.299036,-0.950021,0.0896534>,
+    <0.299405,-0.950021,0.0884132>,
+    <0.292447,-0.950021,0.109248>,
+    <0.284041,-0.950021,0.129542>,
+    <0.274229,-0.950021,0.149194>,
+    <0.274845,-0.950021,0.148056>,
+    <0.278445,-0.950021,0.14117>,
+    <0.281069,-0.950021,0.13587>,
+    <0.283816,-0.950021,0.130035>,
+    <0.292637,-0.950021,0.108739>,
+    <0.295993,-0.950021,0.0992411>,
+    <0.297694,-0.950021,0.0940158>,
+  }
+  face_indices {
+    10,
+    <2,1,0>,
+    <2,0,11>,
+    <10,2,11>,
+    <3,2,10>,
+    <5,4,3>,
+    <6,5,3>,
+    <7,10,9>,
+    <7,3,10>,
+    <7,6,3>,
+    <8,7,9>,
+  }
+} // end of Face125
+
+// face number126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001126 = mesh2{
+  vertex_vectors {
+    7,
+    <71.158,-5,1.062>,
+    <71.8058,-5,1.3989>,
+    <71.158,5,1.062>,
+    <71.8058,5,1.3989>,
+    <72.0354,4.91329,1.55235>,
+    <72.0354,-4.91329,1.55235>,
+    <71.4609,0.0433537,1.19882>,
+  }
+  normal_vectors {
+    7,
+    <0.339383,-0,-0.940648>,
+    <0.536115,-0,-0.844145>,
+    <0.339383,-0,-0.940648>,
+    <0.536115,-0,-0.844145>,
+    <0.57366,-0,-0.819094>,
+    <0.57366,-0,-0.819094>,
+    <0.461735,-0,-0.887018>,
+  }
+  face_indices {
+    6,
+    <2,3,4>,
+    <1,0,5>,
+    <0,2,6>,
+    <4,5,6>,
+    <2,4,6>,
+    <5,0,6>,
+  }
+} // end of Face126
+
+// face number127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001127 = mesh2{
+  vertex_vectors {
+    4,
+    <70.151,-5,0.770858>,
+    <70.151,5,0.770858>,
+    <71.158,5,1.062>,
+    <71.158,-5,1.062>,
+  }
+  normal_vectors {
+    4,
+    <0.277749,-0,-0.960654>,
+    <0.277749,-0,-0.960654>,
+    <0.277749,-0,-0.960654>,
+    <0.277749,-0,-0.960654>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face127
+
+// face number128 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001128 = mesh2{
+  vertex_vectors {
+    16,
+    <69.496,-5,-0.339989>,
+    <69.496,5,-0.339989>,
+    <69.4723,5,-0.138633>,
+    <69.4924,5,0.0631166>,
+    <69.5554,5,0.255823>,
+    <69.6584,5,0.430473>,
+    <69.7965,5,0.578898>,
+    <69.9633,5,0.694157>,
+    <70.151,5,0.770858>,
+    <70.151,-5,0.770858>,
+    <69.4723,-5,-0.138633>,
+    <69.4924,-5,0.0631166>,
+    <69.5554,-5,0.255823>,
+    <69.6584,-5,0.430473>,
+    <69.7965,-5,0.578898>,
+    <69.9633,-5,0.694157>,
+  }
+  normal_vectors {
+    16,
+    <0.974648,0,0.223743>,
+    <0.974648,0,0.223743>,
+    <0.99996,0,0.00896264>,
+    <0.978502,-0,-0.206236>,
+    <0.911278,-0,-0.411791>,
+    <0.801435,-0,-0.598082>,
+    <0.654106,-0,-0.756403>,
+    <0.476184,-0,-0.879346>,
+    <0.275989,-0,-0.961161>,
+    <0.275989,-0,-0.961161>,
+    <0.99996,0,0.00896264>,
+    <0.978502,-0,-0.206236>,
+    <0.911278,-0,-0.411791>,
+    <0.801435,-0,-0.598082>,
+    <0.654106,-0,-0.756403>,
+    <0.476184,-0,-0.879346>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,11>,
+    <3,4,11>,
+    <10,2,11>,
+    <11,4,12>,
+    <4,5,13>,
+    <5,6,13>,
+    <12,4,13>,
+    <13,6,14>,
+    <6,7,15>,
+    <14,6,15>,
+    <7,8,9>,
+    <15,7,9>,
+  }
+} // end of Face128
+
+// face number129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001129 = mesh2{
+  vertex_vectors {
+    8,
+    <69.698,-5,-1.35563>,
+    <69.698,5,-1.35563>,
+    <69.6376,5,-1.01573>,
+    <69.5703,5,-0.677133>,
+    <69.496,5,-0.339989>,
+    <69.496,-5,-0.339989>,
+    <69.6376,-5,-1.01573>,
+    <69.5703,-5,-0.677133>,
+  }
+  normal_vectors {
+    8,
+    <0.986309,0,0.164906>,
+    <0.986309,0,0.164906>,
+    <0.98273,0,0.185048>,
+    <0.978738,0,0.205112>,
+    <0.974338,0,0.225091>,
+    <0.974338,0,0.225091>,
+    <0.98273,0,0.185048>,
+    <0.978738,0,0.205112>,
+  }
+  face_indices {
+    6,
+    <0,1,6>,
+    <1,2,6>,
+    <2,3,7>,
+    <6,2,7>,
+    <3,4,5>,
+    <7,3,5>,
+  }
+} // end of Face129
+
+// face number130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001130 = mesh2{
+  vertex_vectors {
+    16,
+    <70.7283,-5,-2.13126>,
+    <70.7283,5,-2.13126>,
+    <70.5255,5,-2.13222>,
+    <70.3273,5,-2.08957>,
+    <70.1429,5,-2.0053>,
+    <69.9809,5,-1.88335>,
+    <69.8489,5,-1.72943>,
+    <69.7532,5,-1.55074>,
+    <69.698,5,-1.35563>,
+    <69.698,-5,-1.35563>,
+    <70.5255,-5,-2.13222>,
+    <70.3273,-5,-2.08957>,
+    <70.1429,-5,-2.0053>,
+    <69.9809,-5,-1.88335>,
+    <69.8489,-5,-1.72943>,
+    <69.7532,-5,-1.55074>,
+  }
+  normal_vectors {
+    16,
+    <-0.112843,-0,0.993613>,
+    <-0.112843,-0,0.993613>,
+    <0.103425,0,0.994637>,
+    <0.314851,0,0.949141>,
+    <0.511554,0,0.859251>,
+    <0.684326,0,0.729176>,
+    <0.825095,0,0.564994>,
+    <0.927272,0,0.374389>,
+    <0.98608,0,0.16627>,
+    <0.98608,0,0.16627>,
+    <0.103425,0,0.994637>,
+    <0.314851,0,0.949141>,
+    <0.511554,0,0.859251>,
+    <0.684326,0,0.729176>,
+    <0.825095,0,0.564994>,
+    <0.927272,0,0.374389>,
+  }
+  face_indices {
+    14,
+    <0,1,10>,
+    <1,2,10>,
+    <2,3,10>,
+    <10,3,11>,
+    <3,4,12>,
+    <4,5,12>,
+    <11,3,12>,
+    <12,5,13>,
+    <5,6,14>,
+    <13,5,14>,
+    <6,7,15>,
+    <7,8,15>,
+    <14,6,15>,
+    <15,8,9>,
+  }
+} // end of Face130
+
+// face number131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001131 = mesh2{
+  vertex_vectors {
+    4,
+    <71.77,-5,-2.01489>,
+    <71.77,5,-2.01489>,
+    <70.7283,5,-2.13126>,
+    <70.7283,-5,-2.13126>,
+  }
+  normal_vectors {
+    4,
+    <-0.11102,-0,0.993818>,
+    <-0.11102,-0,0.993818>,
+    <-0.11102,-0,0.993818>,
+    <-0.11102,-0,0.993818>,
+  }
+  face_indices {
+    2,
+    <0,1,3>,
+    <1,2,3>,
+  }
+} // end of Face131
+
+// face number132 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001132 = mesh2{
+  vertex_vectors {
+    7,
+    <72.4974,-5,-2.07824>,
+    <71.77,-5,-2.01489>,
+    <72.7683,-4.91329,-2.13213>,
+    <72.7683,4.91329,-2.13213>,
+    <72.4974,5,-2.07824>,
+    <71.77,5,-2.01489>,
+    <72.1022,-0.0433537,-2.02537>,
+  }
+  normal_vectors {
+    7,
+    <0.172264,-0,0.985051>,
+    <-0.0464192,-0,0.998922>,
+    <0.216539,-0,0.976274>,
+    <0.216539,-0,0.976274>,
+    <0.172264,-0,0.985051>,
+    <-0.0464192,-0,0.998922>,
+    <0.0871409,-0,0.996196>,
+  }
+  face_indices {
+    6,
+    <3,4,5>,
+    <0,2,1>,
+    <2,3,6>,
+    <5,1,6>,
+    <3,5,6>,
+    <1,2,6>,
+  }
+} // end of Face132
+
+// face number133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001133 = mesh2{
+  vertex_vectors {
+    9,
+    <72.6062,-5,-4.13841>,
+    <75.557,-4.03035,-4.13841>,
+    <72.5941,-5,-3.45055>,
+    <72.5579,-5,-2.76355>,
+    <72.4974,-5,-2.07824>,
+    <72.7683,-4.91329,-2.13213>,
+    <74.0127,-4.5176,-2.53131>,
+    <74.784,-4.27253,-2.88574>,
+    <75.5417,-4.03035,-3.30766>,
+  }
+  normal_vectors {
+    9,
+    <0.312187,-0.950021,-2.82461e-09>,
+    <0.312187,-0.950021,-2.45422e-09>,
+    <0.311993,-0.950021,0.0109829>,
+    <0.311414,-0.950021,0.0219522>,
+    <0.310449,-0.950021,0.0328943>,
+    <0.310582,-0.950021,0.0316073>,
+    <0.311273,-0.950021,0.0238681>,
+    <0.311669,-0.950021,0.0179668>,
+    <0.311974,-0.950021,0.0115251>,
+  }
+  face_indices {
+    7,
+    <5,4,3>,
+    <6,2,0>,
+    <6,3,2>,
+    <6,5,3>,
+    <7,0,1>,
+    <7,6,0>,
+    <8,7,1>,
+  }
+} // end of Face133
+
+// face number134 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001134 = mesh2{
+  vertex_vectors {
+    98,
+    <68.3443,-5,-4.13841>,
+    <68.2135,-5,-2.14262>,
+    <67.8233,-5,-0.18099>,
+    <67.1804,-5,1.71293>,
+    <66.2958,-5,3.50674>,
+    <65.1846,-5,5.16973>,
+    <63.8659,-5,6.67346>,
+    <62.3622,-5,7.99219>,
+    <60.6992,-5,9.10337>,
+    <58.9054,-5,9.98797>,
+    <57.0115,-5,10.6309>,
+    <55.0498,-5,11.0211>,
+    <53.054,-5,11.1519>,
+    <51.0583,-5,11.0211>,
+    <49.0966,-5,10.6309>,
+    <47.2027,-5,9.98797>,
+    <45.4089,-5,9.10337>,
+    <43.7459,-5,7.99219>,
+    <42.2422,-5,6.67346>,
+    <40.9234,-5,5.16973>,
+    <39.8123,-5,3.50674>,
+    <38.9277,-5,1.71293>,
+    <38.2848,-5,-0.18099>,
+    <37.8946,-5,-2.14262>,
+    <37.7638,-5,-4.13841>,
+    <37.8946,-5,-6.13419>,
+    <38.2848,-5,-8.09582>,
+    <38.9277,-5,-9.98975>,
+    <39.8123,-5,-11.7835>,
+    <40.9234,-5,-13.4465>,
+    <42.2422,-5,-14.9503>,
+    <43.7459,-5,-16.269>,
+    <45.4089,-5,-17.3802>,
+    <47.2027,-5,-18.2648>,
+    <49.0966,-5,-18.9077>,
+    <51.0583,-5,-19.2979>,
+    <53.054,-5,-19.4287>,
+    <55.0498,-5,-19.2979>,
+    <57.0115,-5,-18.9077>,
+    <58.9054,-5,-18.2648>,
+    <60.6992,-5,-17.3802>,
+    <62.3622,-5,-16.269>,
+    <63.8659,-5,-14.9503>,
+    <65.1846,-5,-13.4465>,
+    <66.2958,-5,-11.7835>,
+    <67.1804,-5,-9.98975>,
+    <67.8233,-5,-8.09582>,
+    <68.2135,-5,-6.13419>,
+    <68.3443,-5,-4.13841>,
+    <68.3443,-1.87464,-4.13841>,
+    <68.3443,-1.87464,-4.13841>,
+    <68.2135,-1.87464,-2.14262>,
+    <67.8233,-1.87464,-0.18099>,
+    <67.1804,-1.87464,1.71293>,
+    <66.2958,-1.87464,3.50674>,
+    <65.1846,-1.87464,5.16973>,
+    <63.8659,-1.87464,6.67346>,
+    <62.3622,-1.87464,7.99219>,
+    <60.6992,-1.87464,9.10337>,
+    <58.9054,-1.87464,9.98797>,
+    <57.0115,-1.87464,10.6309>,
+    <55.0498,-1.87464,11.0211>,
+    <53.054,-1.87464,11.1519>,
+    <51.0583,-1.87464,11.0211>,
+    <49.0966,-1.87464,10.6309>,
+    <47.2027,-1.87464,9.98797>,
+    <45.4089,-1.87464,9.10337>,
+    <43.7459,-1.87464,7.99219>,
+    <42.2422,-1.87464,6.67346>,
+    <40.9234,-1.87464,5.16973>,
+    <39.8123,-1.87464,3.50674>,
+    <38.9277,-1.87464,1.71293>,
+    <38.2848,-1.87464,-0.18099>,
+    <37.8946,-1.87464,-2.14262>,
+    <37.7638,-1.87464,-4.13841>,
+    <37.8946,-1.87464,-6.13419>,
+    <38.2848,-1.87464,-8.09582>,
+    <38.9277,-1.87464,-9.98975>,
+    <39.8123,-1.87464,-11.7835>,
+    <40.9234,-1.87464,-13.4465>,
+    <42.2422,-1.87464,-14.9503>,
+    <43.7459,-1.87464,-16.269>,
+    <45.4089,-1.87464,-17.3802>,
+    <47.2027,-1.87464,-18.2648>,
+    <49.0966,-1.87464,-18.9077>,
+    <51.0583,-1.87464,-19.2979>,
+    <53.054,-1.87464,-19.4287>,
+    <55.0498,-1.87464,-19.2979>,
+    <57.0115,-1.87464,-18.9077>,
+    <58.9054,-1.87464,-18.2648>,
+    <60.6992,-1.87464,-17.3802>,
+    <62.3622,-1.87464,-16.269>,
+    <63.8659,-1.87464,-14.9503>,
+    <65.1846,-1.87464,-13.4465>,
+    <66.2958,-1.87464,-11.7835>,
+    <67.1804,-1.87464,-9.98975>,
+    <67.8233,-1.87464,-8.09582>,
+    <68.2135,-1.87464,-6.13419>,
+  }
+  normal_vectors {
+    98,
+    <-1,-2.54534e-24,1.15697e-08>,
+    <-0.991445,2.87158e-17,-0.130526>,
+    <-0.965926,5.69402e-17,-0.258819>,
+    <-0.92388,8.41903e-17,-0.382683>,
+    <-0.866025,1.1e-16,-0.5>,
+    <-0.793353,1.33927e-16,-0.608761>,
+    <-0.707107,1.55563e-16,-0.707107>,
+    <-0.608761,1.74538e-16,-0.793353>,
+    <-0.5,1.90526e-16,-0.866025>,
+    <-0.382683,2.03253e-16,-0.92388>,
+    <-0.258819,2.12504e-16,-0.965926>,
+    <-0.130526,2.18118e-16,-0.991445>,
+    <-9.67241e-08,2.2e-16,-1>,
+    <0.130526,2.18118e-16,-0.991445>,
+    <0.258819,2.12504e-16,-0.965926>,
+    <0.382684,2.03253e-16,-0.92388>,
+    <0.5,1.90526e-16,-0.866025>,
+    <0.608761,1.74538e-16,-0.793353>,
+    <0.707107,1.55563e-16,-0.707107>,
+    <0.793353,1.33928e-16,-0.608761>,
+    <0.866025,1.1e-16,-0.5>,
+    <0.92388,8.41904e-17,-0.382683>,
+    <0.965926,5.69402e-17,-0.258819>,
+    <0.991445,2.87158e-17,-0.130526>,
+    <1,-2.54534e-24,1.15697e-08>,
+    <0.991445,-2.87158e-17,0.130526>,
+    <0.965926,-5.69402e-17,0.258819>,
+    <0.92388,-8.41904e-17,0.382683>,
+    <0.866025,-1.1e-16,0.5>,
+    <0.793353,-1.33928e-16,0.608761>,
+    <0.707107,-1.55563e-16,0.707107>,
+    <0.608761,-1.74538e-16,0.793353>,
+    <0.5,-1.90526e-16,0.866025>,
+    <0.382683,-2.03253e-16,0.92388>,
+    <0.258819,-2.12504e-16,0.965926>,
+    <0.130526,-2.18118e-16,0.991445>,
+    <-9.67241e-08,-2.2e-16,1>,
+    <-0.130526,-2.18118e-16,0.991445>,
+    <-0.258819,-2.12504e-16,0.965926>,
+    <-0.382683,-2.03253e-16,0.92388>,
+    <-0.5,-1.90526e-16,0.866025>,
+    <-0.608761,-1.74538e-16,0.793353>,
+    <-0.707107,-1.55563e-16,0.707107>,
+    <-0.793353,-1.33927e-16,0.608761>,
+    <-0.866025,-1.1e-16,0.5>,
+    <-0.92388,-8.41903e-17,0.382683>,
+    <-0.965926,-5.69402e-17,0.258819>,
+    <-0.991445,-2.87158e-17,0.130526>,
+    <-1,-2.54534e-24,1.15697e-08>,
+    <-1,-2.54534e-24,1.15697e-08>,
+    <-1,-2.54534e-24,1.15697e-08>,
+    <-0.991445,2.87158e-17,-0.130526>,
+    <-0.965926,5.69402e-17,-0.258819>,
+    <-0.92388,8.41903e-17,-0.382683>,
+    <-0.866025,1.1e-16,-0.5>,
+    <-0.793353,1.33927e-16,-0.608761>,
+    <-0.707107,1.55563e-16,-0.707107>,
+    <-0.608761,1.74538e-16,-0.793353>,
+    <-0.5,1.90526e-16,-0.866025>,
+    <-0.382683,2.03253e-16,-0.92388>,
+    <-0.258819,2.12504e-16,-0.965926>,
+    <-0.130526,2.18118e-16,-0.991445>,
+    <-9.67241e-08,2.2e-16,-1>,
+    <0.130526,2.18118e-16,-0.991445>,
+    <0.258819,2.12504e-16,-0.965926>,
+    <0.382684,2.03253e-16,-0.92388>,
+    <0.5,1.90526e-16,-0.866025>,
+    <0.608761,1.74538e-16,-0.793353>,
+    <0.707107,1.55563e-16,-0.707107>,
+    <0.793353,1.33928e-16,-0.608761>,
+    <0.866025,1.1e-16,-0.5>,
+    <0.92388,8.41904e-17,-0.382683>,
+    <0.965926,5.69402e-17,-0.258819>,
+    <0.991445,2.87158e-17,-0.130526>,
+    <1,-2.54534e-24,1.15697e-08>,
+    <0.991445,-2.87158e-17,0.130526>,
+    <0.965926,-5.69402e-17,0.258819>,
+    <0.92388,-8.41904e-17,0.382683>,
+    <0.866025,-1.1e-16,0.5>,
+    <0.793353,-1.33928e-16,0.608761>,
+    <0.707107,-1.55563e-16,0.707107>,
+    <0.608761,-1.74538e-16,0.793353>,
+    <0.5,-1.90526e-16,0.866025>,
+    <0.382683,-2.03253e-16,0.92388>,
+    <0.258819,-2.12504e-16,0.965926>,
+    <0.130526,-2.18118e-16,0.991445>,
+    <-9.67241e-08,-2.2e-16,1>,
+    <-0.130526,-2.18118e-16,0.991445>,
+    <-0.258819,-2.12504e-16,0.965926>,
+    <-0.382683,-2.03253e-16,0.92388>,
+    <-0.5,-1.90526e-16,0.866025>,
+    <-0.608761,-1.74538e-16,0.793353>,
+    <-0.707107,-1.55563e-16,0.707107>,
+    <-0.793353,-1.33927e-16,0.608761>,
+    <-0.866025,-1.1e-16,0.5>,
+    <-0.92388,-8.41903e-17,0.382683>,
+    <-0.965926,-5.69402e-17,0.258819>,
+    <-0.991445,-2.87158e-17,0.130526>,
+  }
+  face_indices {
+    96,
+    <0,1,51>,
+    <50,0,51>,
+    <51,1,52>,
+    <1,2,52>,
+    <2,3,53>,
+    <52,2,53>,
+    <3,4,54>,
+    <53,3,54>,
+    <4,5,55>,
+    <54,4,55>,
+    <5,6,56>,
+    <55,5,56>,
+    <6,7,57>,
+    <7,8,57>,
+    <56,6,57>,
+    <57,8,58>,
+    <8,9,59>,
+    <9,10,59>,
+    <58,8,59>,
+    <59,10,60>,
+    <10,11,61>,
+    <60,10,61>,
+    <11,12,62>,
+    <12,13,62>,
+    <61,11,62>,
+    <13,14,63>,
+    <62,13,63>,
+    <63,14,64>,
+    <14,15,65>,
+    <15,16,65>,
+    <64,14,65>,
+    <16,17,66>,
+    <65,16,66>,
+    <66,17,67>,
+    <17,18,68>,
+    <67,17,68>,
+    <18,19,69>,
+    <19,20,69>,
+    <68,18,69>,
+    <69,20,70>,
+    <20,21,71>,
+    <70,20,71>,
+    <21,22,72>,
+    <71,21,72>,
+    <22,23,73>,
+    <72,22,73>,
+    <23,24,74>,
+    <73,23,74>,
+    <24,25,75>,
+    <74,24,75>,
+    <75,25,76>,
+    <25,26,76>,
+    <76,26,77>,
+    <26,27,77>,
+    <77,27,78>,
+    <27,28,78>,
+    <78,28,79>,
+    <28,29,79>,
+    <79,29,80>,
+    <29,30,80>,
+    <80,30,81>,
+    <30,31,81>,
+    <81,31,82>,
+    <31,32,82>,
+    <32,33,82>,
+    <82,33,83>,
+    <33,34,83>,
+    <83,34,84>,
+    <34,35,85>,
+    <35,36,85>,
+    <84,34,85>,
+    <36,37,86>,
+    <85,36,86>,
+    <86,37,87>,
+    <37,38,88>,
+    <87,37,88>,
+    <38,39,89>,
+    <88,38,89>,
+    <39,40,90>,
+    <40,41,90>,
+    <89,39,90>,
+    <90,41,91>,
+    <41,42,92>,
+    <42,43,92>,
+    <91,41,92>,
+    <92,43,93>,
+    <43,44,94>,
+    <93,43,94>,
+    <44,45,95>,
+    <45,46,95>,
+    <94,44,95>,
+    <95,46,96>,
+    <46,47,97>,
+    <47,48,97>,
+    <96,46,97>,
+    <97,48,49>,
+  }
+} // end of Face134
+
+// face number135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001135 = mesh2{
+  vertex_vectors {
+    12,
+    <70.229,5,-13.4824>,
+    <70.4999,4.91329,-13.5363>,
+    <71.8058,5,-9.67572>,
+    <71.37,5,-10.9806>,
+    <70.8435,5,-12.2516>,
+    <72.0354,4.91329,-9.82916>,
+    <73.0323,4.5176,-10.6742>,
+    <73.6092,4.27253,-11.2968>,
+    <74.1478,4.03035,-11.9765>,
+    <73.512,4.03035,-13.5116>,
+    <72.1395,4.41925,-13.6393>,
+    <71.3036,4.66578,-13.6277>,
+  }
+  normal_vectors {
+    12,
+    <0.274229,0.950021,-0.149194>,
+    <0.274845,0.950021,-0.148056>,
+    <0.299405,0.950021,-0.0884132>,
+    <0.292447,0.950021,-0.109248>,
+    <0.284041,0.950021,-0.129542>,
+    <0.299036,0.950021,-0.0896534>,
+    <0.296713,0.950021,-0.0970677>,
+    <0.29482,0.950021,-0.102671>,
+    <0.292637,0.950021,-0.108739>,
+    <0.283816,0.950021,-0.130035>,
+    <0.279472,0.950021,-0.139124>,
+    <0.27698,0.950021,-0.144022>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face135
+
+// face number136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001136 = mesh2{
+  vertex_vectors {
+    12,
+    <65.3458,5,-19.3437>,
+    <65.5755,4.91329,-19.4971>,
+    <68.2593,5,-16.4302>,
+    <67.3574,5,-17.469>,
+    <66.3846,5,-18.4417>,
+    <68.4128,4.91329,-16.6598>,
+    <69.0104,4.5176,-17.822>,
+    <69.3052,4.27253,-18.618>,
+    <69.5426,4.03035,-19.4521>,
+    <68.3678,4.03035,-20.627>,
+    <67.0508,4.41925,-20.2198>,
+    <66.2831,4.66578,-19.8892>,
+  }
+  normal_vectors {
+    12,
+    <0.196261,0.950021,-0.24278>,
+    <0.197265,0.950021,-0.241965>,
+    <0.24278,0.950021,-0.196261>,
+    <0.228379,0.950021,-0.212847>,
+    <0.212847,0.950021,-0.228379>,
+    <0.241965,0.950021,-0.197265>,
+    <0.23698,0.950021,-0.203226>,
+    <0.233088,0.950021,-0.207679>,
+    <0.228748,0.950021,-0.212449>,
+    <0.212449,0.950021,-0.228748>,
+    <0.204958,0.950021,-0.235484>,
+    <0.200782,0.950021,-0.239055>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face136
+
+// face number137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001137 = mesh2{
+  vertex_vectors {
+    12,
+    <58.5914,5,-22.8901>,
+    <58.7448,4.91329,-23.1198>,
+    <62.398,5,-21.3133>,
+    <61.1672,5,-21.9279>,
+    <59.8962,5,-22.4543>,
+    <62.4519,4.91329,-21.5842>,
+    <62.5593,4.5176,-22.8867>,
+    <62.527,4.27253,-23.7349>,
+    <62.4272,4.03035,-24.5964>,
+    <60.8922,4.03035,-25.2322>,
+    <59.8313,4.41925,-24.352>,
+    <59.2485,4.66578,-23.7528>,
+  }
+  normal_vectors {
+    12,
+    <0.0884132,0.950021,-0.299405>,
+    <0.0896534,0.950021,-0.299036>,
+    <0.149194,0.950021,-0.274229>,
+    <0.129542,0.950021,-0.284041>,
+    <0.109248,0.950021,-0.292447>,
+    <0.148056,0.950021,-0.274845>,
+    <0.14117,0.950021,-0.278445>,
+    <0.13587,0.950021,-0.281069>,
+    <0.130035,0.950021,-0.283816>,
+    <0.108739,0.950021,-0.292637>,
+    <0.0992412,0.950021,-0.295993>,
+    <0.0940158,0.950021,-0.297694>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face137
+
+// face number138 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001138 = mesh2{
+  vertex_vectors {
+    12,
+    <50.9939,5,-23.5818>,
+    <51.0478,4.91329,-23.8526>,
+    <55.1142,5,-23.5818>,
+    <53.7419,5,-23.6785>,
+    <52.3662,5,-23.6785>,
+    <55.0603,4.91329,-23.8526>,
+    <54.6611,4.5176,-25.0971>,
+    <54.3067,4.27253,-25.8683>,
+    <53.8848,4.03035,-26.626>,
+    <52.2233,4.03035,-26.626>,
+    <51.58,4.41925,-25.4069>,
+    <51.2709,4.66578,-24.6302>,
+  }
+  normal_vectors {
+    12,
+    <-0.0328943,0.950021,-0.310449>,
+    <-0.0316073,0.950021,-0.310582>,
+    <0.0328943,0.950021,-0.310449>,
+    <0.0109829,0.950021,-0.311993>,
+    <-0.0109829,0.950021,-0.311993>,
+    <0.0316073,0.950021,-0.310582>,
+    <0.0238681,0.950021,-0.311273>,
+    <0.0179668,0.950021,-0.311669>,
+    <0.0115251,0.950021,-0.311974>,
+    <-0.0115251,0.950021,-0.311974>,
+    <-0.0215846,0.950021,-0.311439>,
+    <-0.0270631,0.950021,-0.311011>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face138
+
+// face number139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001139 = mesh2{
+  vertex_vectors {
+    12,
+    <43.71,5,-21.3133>,
+    <43.6562,4.91329,-21.5842>,
+    <47.5167,5,-22.8901>,
+    <46.2119,5,-22.4543>,
+    <44.9409,5,-21.9279>,
+    <47.3633,4.91329,-23.1198>,
+    <46.5183,4.5176,-24.1167>,
+    <45.8957,4.27253,-24.6936>,
+    <45.2159,4.03035,-25.2322>,
+    <43.6809,4.03035,-24.5964>,
+    <43.5531,4.41925,-23.2238>,
+    <43.5648,4.66578,-22.388>,
+  }
+  normal_vectors {
+    12,
+    <-0.149194,0.950021,-0.274229>,
+    <-0.148056,0.950021,-0.274845>,
+    <-0.0884132,0.950021,-0.299405>,
+    <-0.109248,0.950021,-0.292447>,
+    <-0.129542,0.950021,-0.284041>,
+    <-0.0896534,0.950021,-0.299036>,
+    <-0.0970676,0.950021,-0.296713>,
+    <-0.102671,0.950021,-0.29482>,
+    <-0.108739,0.950021,-0.292637>,
+    <-0.130035,0.950021,-0.283816>,
+    <-0.139124,0.950021,-0.279473>,
+    <-0.144022,0.950021,-0.27698>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face139
+
+// face number140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001140 = mesh2{
+  vertex_vectors {
+    12,
+    <37.8488,5,-16.4302>,
+    <37.6953,4.91329,-16.6598>,
+    <40.7623,5,-19.3437>,
+    <39.7235,5,-18.4417>,
+    <38.7507,5,-17.469>,
+    <40.5326,4.91329,-19.4971>,
+    <39.3704,4.5176,-20.0948>,
+    <38.5744,4.27253,-20.3895>,
+    <37.7403,4.03035,-20.627>,
+    <36.5655,4.03035,-19.4521>,
+    <36.9727,4.41925,-18.1352>,
+    <37.3033,4.66578,-17.3675>,
+  }
+  normal_vectors {
+    12,
+    <-0.24278,0.950021,-0.196261>,
+    <-0.241965,0.950021,-0.197265>,
+    <-0.196261,0.950021,-0.24278>,
+    <-0.212847,0.950021,-0.228379>,
+    <-0.228379,0.950021,-0.212847>,
+    <-0.197265,0.950021,-0.241965>,
+    <-0.203226,0.950021,-0.23698>,
+    <-0.207679,0.950021,-0.233088>,
+    <-0.212449,0.950021,-0.228748>,
+    <-0.228748,0.950021,-0.212449>,
+    <-0.235484,0.950021,-0.204958>,
+    <-0.239055,0.950021,-0.200782>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face140
+
+// face number141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001141 = mesh2{
+  vertex_vectors {
+    12,
+    <34.3023,5,-9.67572>,
+    <34.0727,4.91329,-9.82916>,
+    <35.8791,5,-13.4824>,
+    <35.2646,5,-12.2516>,
+    <34.7381,5,-10.9806>,
+    <35.6082,4.91329,-13.5363>,
+    <34.3058,4.5176,-13.6437>,
+    <33.4576,4.27253,-13.6114>,
+    <32.5961,4.03035,-13.5116>,
+    <31.9603,4.03035,-11.9765>,
+    <32.8405,4.41925,-10.9157>,
+    <33.4397,4.66578,-10.3329>,
+  }
+  normal_vectors {
+    12,
+    <-0.299405,0.950021,-0.0884132>,
+    <-0.299036,0.950021,-0.0896534>,
+    <-0.274229,0.950021,-0.149194>,
+    <-0.284041,0.950021,-0.129542>,
+    <-0.292447,0.950021,-0.109248>,
+    <-0.274845,0.950021,-0.148056>,
+    <-0.278445,0.950021,-0.14117>,
+    <-0.281069,0.950021,-0.13587>,
+    <-0.283816,0.950021,-0.130035>,
+    <-0.292637,0.950021,-0.108739>,
+    <-0.295993,0.950021,-0.0992412>,
+    <-0.297694,0.950021,-0.0940158>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face141
+
+// face number142 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001142 = mesh2{
+  vertex_vectors {
+    12,
+    <33.6107,5,-2.07824>,
+    <33.3398,4.91329,-2.13213>,
+    <33.6107,5,-6.19857>,
+    <33.5139,5,-4.82626>,
+    <33.5139,5,-3.45055>,
+    <33.3398,4.91329,-6.14468>,
+    <32.0954,4.5176,-5.7455>,
+    <31.3241,4.27253,-5.39107>,
+    <30.5664,4.03035,-4.96916>,
+    <30.5664,4.03035,-3.30766>,
+    <31.7856,4.41925,-2.66438>,
+    <32.5622,4.66578,-2.35528>,
+  }
+  normal_vectors {
+    12,
+    <-0.310449,0.950021,0.0328943>,
+    <-0.310582,0.950021,0.0316073>,
+    <-0.310449,0.950021,-0.0328943>,
+    <-0.311993,0.950021,-0.0109829>,
+    <-0.311993,0.950021,0.0109829>,
+    <-0.310582,0.950021,-0.0316073>,
+    <-0.311273,0.950021,-0.0238681>,
+    <-0.311669,0.950021,-0.0179668>,
+    <-0.311974,0.950021,-0.0115251>,
+    <-0.311974,0.950021,0.0115251>,
+    <-0.311439,0.950021,0.0215846>,
+    <-0.311011,0.950021,0.0270632>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face142
+
+// face number143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001143 = mesh2{
+  vertex_vectors {
+    12,
+    <35.8791,5,5.20559>,
+    <35.6082,4.91329,5.25946>,
+    <34.3023,5,1.3989>,
+    <34.7381,5,2.70377>,
+    <35.2646,5,3.97476>,
+    <34.0727,4.91329,1.55235>,
+    <33.0758,4.5176,2.39737>,
+    <32.4988,4.27253,3.01996>,
+    <31.9603,4.03035,3.69972>,
+    <32.5961,4.03035,5.23475>,
+    <33.9686,4.41925,5.36251>,
+    <34.8044,4.66578,5.35087>,
+  }
+  normal_vectors {
+    12,
+    <-0.274229,0.950021,0.149194>,
+    <-0.274845,0.950021,0.148056>,
+    <-0.299405,0.950021,0.0884132>,
+    <-0.292447,0.950021,0.109248>,
+    <-0.284041,0.950021,0.129542>,
+    <-0.299036,0.950021,0.0896534>,
+    <-0.296713,0.950021,0.0970677>,
+    <-0.29482,0.950021,0.102671>,
+    <-0.292637,0.950021,0.108739>,
+    <-0.283816,0.950021,0.130035>,
+    <-0.279472,0.950021,0.139124>,
+    <-0.27698,0.950021,0.144022>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face143
+
+// face number144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001144 = mesh2{
+  vertex_vectors {
+    12,
+    <40.7623,5,11.0669>,
+    <40.5326,4.91329,11.2203>,
+    <37.8488,5,8.15337>,
+    <38.7507,5,9.19214>,
+    <39.7235,5,10.1649>,
+    <37.6953,4.91329,8.38302>,
+    <37.0976,4.5176,9.54522>,
+    <36.8029,4.27253,10.3412>,
+    <36.5655,4.03035,11.1753>,
+    <37.7403,4.03035,12.3502>,
+    <39.0573,4.41925,11.943>,
+    <39.825,4.66578,11.6124>,
+  }
+  normal_vectors {
+    12,
+    <-0.196261,0.950021,0.24278>,
+    <-0.197265,0.950021,0.241965>,
+    <-0.24278,0.950021,0.196261>,
+    <-0.228379,0.950021,0.212847>,
+    <-0.212847,0.950021,0.228379>,
+    <-0.241965,0.950021,0.197265>,
+    <-0.23698,0.950021,0.203226>,
+    <-0.233088,0.950021,0.207679>,
+    <-0.228748,0.950021,0.212449>,
+    <-0.212449,0.950021,0.228748>,
+    <-0.204958,0.950021,0.235484>,
+    <-0.200782,0.950021,0.239055>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face144
+
+// face number145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001145 = mesh2{
+  vertex_vectors {
+    12,
+    <47.5167,5,14.6133>,
+    <47.3633,4.91329,14.8429>,
+    <43.71,5,13.0365>,
+    <44.9409,5,13.6511>,
+    <46.2119,5,14.1775>,
+    <43.6562,4.91329,13.3074>,
+    <43.5488,4.5176,14.6099>,
+    <43.5811,4.27253,15.458>,
+    <43.6809,4.03035,16.3195>,
+    <45.2159,4.03035,16.9554>,
+    <46.2768,4.41925,16.0752>,
+    <46.8596,4.66578,15.4759>,
+  }
+  normal_vectors {
+    12,
+    <-0.0884132,0.950021,0.299405>,
+    <-0.0896534,0.950021,0.299036>,
+    <-0.149194,0.950021,0.274229>,
+    <-0.129542,0.950021,0.284041>,
+    <-0.109248,0.950021,0.292447>,
+    <-0.148056,0.950021,0.274845>,
+    <-0.14117,0.950021,0.278445>,
+    <-0.13587,0.950021,0.281069>,
+    <-0.130035,0.950021,0.283816>,
+    <-0.108739,0.950021,0.292637>,
+    <-0.0992412,0.950021,0.295993>,
+    <-0.0940158,0.950021,0.297694>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face145
+
+// face number146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001146 = mesh2{
+  vertex_vectors {
+    12,
+    <55.1142,5,15.305>,
+    <55.0603,4.91329,15.5758>,
+    <50.9939,5,15.305>,
+    <52.3662,5,15.4017>,
+    <53.7419,5,15.4017>,
+    <51.0478,4.91329,15.5758>,
+    <51.447,4.5176,16.8203>,
+    <51.8014,4.27253,17.5915>,
+    <52.2233,4.03035,18.3492>,
+    <53.8848,4.03035,18.3492>,
+    <54.5281,4.41925,17.1301>,
+    <54.8372,4.66578,16.3534>,
+  }
+  normal_vectors {
+    12,
+    <0.0328943,0.950021,0.310449>,
+    <0.0316073,0.950021,0.310582>,
+    <-0.0328943,0.950021,0.310449>,
+    <-0.0109829,0.950021,0.311993>,
+    <0.0109829,0.950021,0.311993>,
+    <-0.0316073,0.950021,0.310582>,
+    <-0.0238681,0.950021,0.311273>,
+    <-0.0179668,0.950021,0.311669>,
+    <-0.0115251,0.950021,0.311974>,
+    <0.0115251,0.950021,0.311974>,
+    <0.0215846,0.950021,0.311439>,
+    <0.0270631,0.950021,0.311011>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face146
+
+// face number147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001147 = mesh2{
+  vertex_vectors {
+    12,
+    <62.398,5,13.0365>,
+    <62.4519,4.91329,13.3074>,
+    <58.5914,5,14.6133>,
+    <59.8962,5,14.1775>,
+    <61.1672,5,13.6511>,
+    <58.7448,4.91329,14.8429>,
+    <59.5898,4.5176,15.8399>,
+    <60.2124,4.27253,16.4168>,
+    <60.8922,4.03035,16.9554>,
+    <62.4272,4.03035,16.3195>,
+    <62.555,4.41925,14.947>,
+    <62.5433,4.66578,14.1112>,
+  }
+  normal_vectors {
+    12,
+    <0.149194,0.950021,0.274229>,
+    <0.148056,0.950021,0.274845>,
+    <0.0884132,0.950021,0.299405>,
+    <0.109248,0.950021,0.292447>,
+    <0.129542,0.950021,0.284041>,
+    <0.0896534,0.950021,0.299036>,
+    <0.0970677,0.950021,0.296713>,
+    <0.102671,0.950021,0.29482>,
+    <0.108739,0.950021,0.292637>,
+    <0.130035,0.950021,0.283816>,
+    <0.139124,0.950021,0.279472>,
+    <0.144022,0.950021,0.27698>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face147
+
+// face number148 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001148 = mesh2{
+  vertex_vectors {
+    12,
+    <68.2593,5,8.15337>,
+    <68.4128,4.91329,8.38302>,
+    <65.3458,5,11.0669>,
+    <66.3846,5,10.1649>,
+    <67.3574,5,9.19214>,
+    <65.5755,4.91329,11.2203>,
+    <66.7377,4.5176,11.818>,
+    <67.5336,4.27253,12.1127>,
+    <68.3678,4.03035,12.3502>,
+    <69.5426,4.03035,11.1753>,
+    <69.1354,4.41925,9.85838>,
+    <68.8048,4.66578,9.09064>,
+  }
+  normal_vectors {
+    12,
+    <0.24278,0.950021,0.196261>,
+    <0.241965,0.950021,0.197265>,
+    <0.196261,0.950021,0.24278>,
+    <0.212847,0.950021,0.228379>,
+    <0.228379,0.950021,0.212847>,
+    <0.197265,0.950021,0.241965>,
+    <0.203226,0.950021,0.23698>,
+    <0.207679,0.950021,0.233088>,
+    <0.212449,0.950021,0.228748>,
+    <0.228748,0.950021,0.212449>,
+    <0.235484,0.950021,0.204958>,
+    <0.239055,0.950021,0.200782>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face148
+
+// face number149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001149 = mesh2{
+  vertex_vectors {
+    12,
+    <71.8058,5,1.3989>,
+    <72.0354,4.91329,1.55235>,
+    <70.229,5,5.20559>,
+    <70.8435,5,3.97476>,
+    <71.37,5,2.70377>,
+    <70.4999,4.91329,5.25946>,
+    <71.8023,4.5176,5.36689>,
+    <72.6505,4.27253,5.33458>,
+    <73.512,4.03035,5.23475>,
+    <74.1478,4.03035,3.69972>,
+    <73.2676,4.41925,2.63886>,
+    <72.6684,4.66578,2.05608>,
+  }
+  normal_vectors {
+    12,
+    <0.299405,0.950021,0.0884132>,
+    <0.299036,0.950021,0.0896534>,
+    <0.274229,0.950021,0.149194>,
+    <0.284041,0.950021,0.129542>,
+    <0.292447,0.950021,0.109248>,
+    <0.274845,0.950021,0.148056>,
+    <0.278445,0.950021,0.14117>,
+    <0.281069,0.950021,0.13587>,
+    <0.283816,0.950021,0.130035>,
+    <0.292637,0.950021,0.108739>,
+    <0.295993,0.950021,0.0992411>,
+    <0.297694,0.950021,0.0940158>,
+  }
+  face_indices {
+    10,
+    <1,0,4>,
+    <11,1,4>,
+    <11,4,10>,
+    <10,4,3>,
+    <3,2,5>,
+    <3,5,6>,
+    <9,10,7>,
+    <10,3,7>,
+    <3,6,7>,
+    <9,7,8>,
+  }
+} // end of Face149
+
+// face number150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001150 = mesh2{
+  vertex_vectors {
+    9,
+    <72.6062,5,-4.13841>,
+    <75.557,4.03035,-4.13841>,
+    <72.4974,5,-2.07824>,
+    <72.5579,5,-2.76355>,
+    <72.5941,5,-3.45055>,
+    <72.7683,4.91329,-2.13213>,
+    <74.0127,4.5176,-2.53131>,
+    <74.784,4.27253,-2.88574>,
+    <75.5417,4.03035,-3.30766>,
+  }
+  normal_vectors {
+    9,
+    <0.312187,0.950021,-2.82461e-09>,
+    <0.312187,0.950021,-2.45422e-09>,
+    <0.310449,0.950021,0.0328943>,
+    <0.311414,0.950021,0.0219522>,
+    <0.311993,0.950021,0.0109829>,
+    <0.310582,0.950021,0.0316073>,
+    <0.311273,0.950021,0.0238681>,
+    <0.311669,0.950021,0.0179668>,
+    <0.311974,0.950021,0.0115251>,
+  }
+  face_indices {
+    7,
+    <3,2,5>,
+    <4,3,6>,
+    <0,4,6>,
+    <3,5,6>,
+    <1,0,7>,
+    <0,6,7>,
+    <1,7,8>,
+  }
+} // end of Face150
+
+// face number151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001151 = mesh2{
+  vertex_vectors {
+    98,
+    <68.3443,5,-4.13841>,
+    <68.2135,5,-6.13419>,
+    <67.8233,5,-8.09582>,
+    <67.1804,5,-9.98975>,
+    <66.2958,5,-11.7835>,
+    <65.1846,5,-13.4465>,
+    <63.8659,5,-14.9503>,
+    <62.3622,5,-16.269>,
+    <60.6992,5,-17.3802>,
+    <58.9054,5,-18.2648>,
+    <57.0115,5,-18.9077>,
+    <55.0498,5,-19.2979>,
+    <53.054,5,-19.4287>,
+    <51.0583,5,-19.2979>,
+    <49.0966,5,-18.9077>,
+    <47.2027,5,-18.2648>,
+    <45.4089,5,-17.3802>,
+    <43.7459,5,-16.269>,
+    <42.2422,5,-14.9503>,
+    <40.9234,5,-13.4465>,
+    <39.8123,5,-11.7835>,
+    <38.9277,5,-9.98975>,
+    <38.2848,5,-8.09582>,
+    <37.8946,5,-6.13419>,
+    <37.7638,5,-4.13841>,
+    <37.8946,5,-2.14262>,
+    <38.2848,5,-0.18099>,
+    <38.9277,5,1.71293>,
+    <39.8123,5,3.50674>,
+    <40.9234,5,5.16973>,
+    <42.2422,5,6.67346>,
+    <43.7459,5,7.99219>,
+    <45.4089,5,9.10337>,
+    <47.2027,5,9.98797>,
+    <49.0966,5,10.6309>,
+    <51.0583,5,11.0211>,
+    <53.054,5,11.1519>,
+    <55.0498,5,11.0211>,
+    <57.0115,5,10.6309>,
+    <58.9054,5,9.98797>,
+    <60.6992,5,9.10337>,
+    <62.3622,5,7.99219>,
+    <63.8659,5,6.67346>,
+    <65.1846,5,5.16973>,
+    <66.2958,5,3.50674>,
+    <67.1804,5,1.71293>,
+    <67.8233,5,-0.18099>,
+    <68.2135,5,-2.14262>,
+    <68.3443,5,-4.13841>,
+    <68.3443,1.87464,-4.13841>,
+    <68.3443,1.87464,-4.13841>,
+    <68.2135,1.87464,-2.14262>,
+    <67.8233,1.87464,-0.18099>,
+    <67.1804,1.87464,1.71293>,
+    <66.2958,1.87464,3.50674>,
+    <65.1846,1.87464,5.16973>,
+    <63.8659,1.87464,6.67346>,
+    <62.3622,1.87464,7.99219>,
+    <60.6992,1.87464,9.10337>,
+    <58.9054,1.87464,9.98797>,
+    <57.0115,1.87464,10.6309>,
+    <55.0498,1.87464,11.0211>,
+    <53.054,1.87464,11.1519>,
+    <51.0583,1.87464,11.0211>,
+    <49.0966,1.87464,10.6309>,
+    <47.2027,1.87464,9.98797>,
+    <45.4089,1.87464,9.10337>,
+    <43.7459,1.87464,7.99219>,
+    <42.2422,1.87464,6.67346>,
+    <40.9234,1.87464,5.16973>,
+    <39.8123,1.87464,3.50674>,
+    <38.9277,1.87464,1.71293>,
+    <38.2848,1.87464,-0.18099>,
+    <37.8946,1.87464,-2.14262>,
+    <37.7638,1.87464,-4.13841>,
+    <37.8946,1.87464,-6.13419>,
+    <38.2848,1.87464,-8.09582>,
+    <38.9277,1.87464,-9.98975>,
+    <39.8123,1.87464,-11.7835>,
+    <40.9234,1.87464,-13.4465>,
+    <42.2422,1.87464,-14.9503>,
+    <43.7459,1.87464,-16.269>,
+    <45.4089,1.87464,-17.3802>,
+    <47.2027,1.87464,-18.2648>,
+    <49.0966,1.87464,-18.9077>,
+    <51.0583,1.87464,-19.2979>,
+    <53.054,1.87464,-19.4287>,
+    <55.0498,1.87464,-19.2979>,
+    <57.0115,1.87464,-18.9077>,
+    <58.9054,1.87464,-18.2648>,
+    <60.6992,1.87464,-17.3802>,
+    <62.3622,1.87464,-16.269>,
+    <63.8659,1.87464,-14.9503>,
+    <65.1846,1.87464,-13.4465>,
+    <66.2958,1.87464,-11.7835>,
+    <67.1804,1.87464,-9.98975>,
+    <67.8233,1.87464,-8.09582>,
+    <68.2135,1.87464,-6.13419>,
+  }
+  normal_vectors {
+    98,
+    <-1,2.54534e-24,1.15697e-08>,
+    <-0.991445,2.87158e-17,0.130526>,
+    <-0.965926,5.69402e-17,0.258819>,
+    <-0.92388,8.41903e-17,0.382683>,
+    <-0.866025,1.1e-16,0.5>,
+    <-0.793353,1.33927e-16,0.608761>,
+    <-0.707107,1.55563e-16,0.707107>,
+    <-0.608761,1.74538e-16,0.793353>,
+    <-0.5,1.90526e-16,0.866025>,
+    <-0.382683,2.03253e-16,0.92388>,
+    <-0.258819,2.12504e-16,0.965926>,
+    <-0.130526,2.18118e-16,0.991445>,
+    <-9.67241e-08,2.2e-16,1>,
+    <0.130526,2.18118e-16,0.991445>,
+    <0.258819,2.12504e-16,0.965926>,
+    <0.382683,2.03253e-16,0.92388>,
+    <0.5,1.90526e-16,0.866025>,
+    <0.608761,1.74538e-16,0.793353>,
+    <0.707107,1.55563e-16,0.707107>,
+    <0.793353,1.33928e-16,0.608761>,
+    <0.866025,1.1e-16,0.5>,
+    <0.92388,8.41904e-17,0.382683>,
+    <0.965926,5.69402e-17,0.258819>,
+    <0.991445,2.87158e-17,0.130526>,
+    <1,2.54534e-24,1.15697e-08>,
+    <0.991445,-2.87158e-17,-0.130526>,
+    <0.965926,-5.69402e-17,-0.258819>,
+    <0.92388,-8.41904e-17,-0.382683>,
+    <0.866025,-1.1e-16,-0.5>,
+    <0.793353,-1.33928e-16,-0.608761>,
+    <0.707107,-1.55563e-16,-0.707107>,
+    <0.608761,-1.74538e-16,-0.793353>,
+    <0.5,-1.90526e-16,-0.866025>,
+    <0.382684,-2.03253e-16,-0.92388>,
+    <0.258819,-2.12504e-16,-0.965926>,
+    <0.130526,-2.18118e-16,-0.991445>,
+    <-9.67241e-08,-2.2e-16,-1>,
+    <-0.130526,-2.18118e-16,-0.991445>,
+    <-0.258819,-2.12504e-16,-0.965926>,
+    <-0.382683,-2.03253e-16,-0.92388>,
+    <-0.5,-1.90526e-16,-0.866025>,
+    <-0.608761,-1.74538e-16,-0.793353>,
+    <-0.707107,-1.55563e-16,-0.707107>,
+    <-0.793353,-1.33927e-16,-0.608761>,
+    <-0.866025,-1.1e-16,-0.5>,
+    <-0.92388,-8.41903e-17,-0.382683>,
+    <-0.965926,-5.69402e-17,-0.258819>,
+    <-0.991445,-2.87158e-17,-0.130526>,
+    <-1,2.54534e-24,1.15697e-08>,
+    <-1,2.54534e-24,1.15697e-08>,
+    <-1,2.54534e-24,1.15697e-08>,
+    <-0.991445,-2.87158e-17,-0.130526>,
+    <-0.965926,-5.69402e-17,-0.258819>,
+    <-0.92388,-8.41903e-17,-0.382683>,
+    <-0.866025,-1.1e-16,-0.5>,
+    <-0.793353,-1.33927e-16,-0.608761>,
+    <-0.707107,-1.55563e-16,-0.707107>,
+    <-0.608761,-1.74538e-16,-0.793353>,
+    <-0.5,-1.90526e-16,-0.866025>,
+    <-0.382683,-2.03253e-16,-0.92388>,
+    <-0.258819,-2.12504e-16,-0.965926>,
+    <-0.130526,-2.18118e-16,-0.991445>,
+    <-9.67241e-08,-2.2e-16,-1>,
+    <0.130526,-2.18118e-16,-0.991445>,
+    <0.258819,-2.12504e-16,-0.965926>,
+    <0.382684,-2.03253e-16,-0.92388>,
+    <0.5,-1.90526e-16,-0.866025>,
+    <0.608761,-1.74538e-16,-0.793353>,
+    <0.707107,-1.55563e-16,-0.707107>,
+    <0.793353,-1.33928e-16,-0.608761>,
+    <0.866025,-1.1e-16,-0.5>,
+    <0.92388,-8.41904e-17,-0.382683>,
+    <0.965926,-5.69402e-17,-0.258819>,
+    <0.991445,-2.87158e-17,-0.130526>,
+    <1,2.54534e-24,1.15697e-08>,
+    <0.991445,2.87158e-17,0.130526>,
+    <0.965926,5.69402e-17,0.258819>,
+    <0.92388,8.41904e-17,0.382683>,
+    <0.866025,1.1e-16,0.5>,
+    <0.793353,1.33928e-16,0.608761>,
+    <0.707107,1.55563e-16,0.707107>,
+    <0.608761,1.74538e-16,0.793353>,
+    <0.5,1.90526e-16,0.866025>,
+    <0.382683,2.03253e-16,0.92388>,
+    <0.258819,2.12504e-16,0.965926>,
+    <0.130526,2.18118e-16,0.991445>,
+    <-9.67241e-08,2.2e-16,1>,
+    <-0.130526,2.18118e-16,0.991445>,
+    <-0.258819,2.12504e-16,0.965926>,
+    <-0.382683,2.03253e-16,0.92388>,
+    <-0.5,1.90526e-16,0.866025>,
+    <-0.608761,1.74538e-16,0.793353>,
+    <-0.707107,1.55563e-16,0.707107>,
+    <-0.793353,1.33927e-16,0.608761>,
+    <-0.866025,1.1e-16,0.5>,
+    <-0.92388,8.41903e-17,0.382683>,
+    <-0.965926,5.69402e-17,0.258819>,
+    <-0.991445,2.87158e-17,0.130526>,
+  }
+  face_indices {
+    96,
+    <51,47,48>,
+    <51,48,50>,
+    <52,47,51>,
+    <52,46,47>,
+    <53,46,52>,
+    <53,45,46>,
+    <54,45,53>,
+    <54,44,45>,
+    <55,44,54>,
+    <55,43,44>,
+    <56,43,55>,
+    <56,42,43>,
+    <57,42,56>,
+    <57,41,42>,
+    <58,41,57>,
+    <58,40,41>,
+    <59,40,58>,
+    <59,39,40>,
+    <60,38,39>,
+    <60,39,59>,
+    <61,37,38>,
+    <61,38,60>,
+    <62,36,37>,
+    <62,37,61>,
+    <63,35,36>,
+    <63,36,62>,
+    <64,34,35>,
+    <64,35,63>,
+    <65,33,34>,
+    <65,34,64>,
+    <66,32,33>,
+    <66,33,65>,
+    <67,31,32>,
+    <67,32,66>,
+    <68,30,31>,
+    <68,31,67>,
+    <69,29,30>,
+    <69,30,68>,
+    <70,28,29>,
+    <70,29,69>,
+    <71,27,28>,
+    <71,28,70>,
+    <72,26,27>,
+    <72,27,71>,
+    <73,24,25>,
+    <73,25,26>,
+    <73,26,72>,
+    <74,24,73>,
+    <75,24,74>,
+    <75,23,24>,
+    <76,23,75>,
+    <76,21,22>,
+    <76,22,23>,
+    <77,21,76>,
+    <78,21,77>,
+    <78,20,21>,
+    <79,20,78>,
+    <79,19,20>,
+    <80,17,18>,
+    <80,18,19>,
+    <80,19,79>,
+    <81,17,80>,
+    <82,16,17>,
+    <82,17,81>,
+    <83,15,16>,
+    <83,16,82>,
+    <84,14,15>,
+    <84,15,83>,
+    <85,13,14>,
+    <85,14,84>,
+    <86,12,13>,
+    <86,13,85>,
+    <87,11,12>,
+    <87,12,86>,
+    <88,10,11>,
+    <88,11,87>,
+    <89,9,10>,
+    <89,10,88>,
+    <90,7,8>,
+    <90,8,9>,
+    <90,9,89>,
+    <91,7,90>,
+    <92,5,6>,
+    <92,6,7>,
+    <92,7,91>,
+    <93,5,92>,
+    <94,3,4>,
+    <94,4,5>,
+    <94,5,93>,
+    <95,3,94>,
+    <96,2,3>,
+    <96,3,95>,
+    <97,1,2>,
+    <97,2,96>,
+    <49,0,1>,
+    <49,1,97>,
+  }
+} // end of Face151
+
+// face number152 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001152 = mesh2{
+  vertex_vectors {
+    6,
+    <75.5417,-4.03035,-4.96916>,
+    <75.557,-4.03035,-4.13841>,
+    <75.5417,4.03035,-4.96916>,
+    <75.557,4.03035,-4.13841>,
+    <75.5417,4.03035,-3.30766>,
+    <75.5417,-4.03035,-3.30766>,
+  }
+  normal_vectors {
+    6,
+    <0.999318,-0,-0.0369222>,
+    <1,-0,-7.86243e-09>,
+    <0.999318,-0,-0.0369222>,
+    <1,-0,-7.86243e-09>,
+    <0.999318,0,0.0369222>,
+    <0.999318,0,0.0369222>,
+  }
+  face_indices {
+    4,
+    <0,2,1>,
+    <2,3,1>,
+    <3,4,1>,
+    <1,4,5>,
+  }
+} // end of Face152
+
+// face number153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001153 = mesh2{
+  vertex_vectors {
+    14,
+    <72.0354,-4.91329,-9.82916>,
+    <73.0323,-4.5176,-10.6742>,
+    <73.6092,-4.27253,-11.2968>,
+    <74.1478,-4.03035,-11.9765>,
+    <74.1478,4.03035,-11.9765>,
+    <72.0354,4.91329,-9.82916>,
+    <73.0323,4.5176,-10.6742>,
+    <73.6092,4.27253,-11.2968>,
+    <72.502,-0.197844,-10.1895>,
+    <73.2817,1.91625,-10.9307>,
+    <73.0315,2.03734,-10.6733>,
+    <73.5631,-0.065948,-11.2431>,
+    <73.2817,-2.1141,-10.9307>,
+    <73.0315,-2.23519,-10.6733>,
+  }
+  normal_vectors {
+    14,
+    <0.576941,-0,0.816786>,
+    <0.703896,-0,0.710303>,
+    <0.760273,-0,0.649603>,
+    <0.805202,-0,0.593>,
+    <0.805202,-0,0.593>,
+    <0.576941,-0,0.816786>,
+    <0.703896,-0,0.710303>,
+    <0.760273,-0,0.649603>,
+    <0.642313,-0,0.766443>,
+    <0.729444,-0,0.68404>,
+    <0.703806,-0,0.710392>,
+    <0.756102,-0,0.654453>,
+    <0.729444,-0,0.68404>,
+    <0.703806,-0,0.710392>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face153
+
+// face number154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001154 = mesh2{
+  vertex_vectors {
+    8,
+    <73.512,-4.03035,-13.5116>,
+    <72.1395,-4.41925,-13.6393>,
+    <71.3036,-4.66578,-13.6277>,
+    <70.4999,-4.91329,-13.5363>,
+    <70.4999,4.91329,-13.5363>,
+    <73.512,4.03035,-13.5116>,
+    <72.1395,4.41925,-13.6393>,
+    <71.3036,4.66578,-13.6277>,
+  }
+  normal_vectors {
+    8,
+    <0.15005,-0,-0.988678>,
+    <0.0300697,-0,-0.999548>,
+    <-0.0607526,0,-0.998153>,
+    <-0.169596,0,-0.985514>,
+    <-0.169596,0,-0.985514>,
+    <0.15005,-0,-0.988678>,
+    <0.0300697,-0,-0.999548>,
+    <-0.0607526,0,-0.998153>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face154
+
+// face number155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001155 = mesh2{
+  vertex_vectors {
+    4,
+    <73.512,-4.03035,-13.5116>,
+    <74.1478,-4.03035,-11.9765>,
+    <73.512,4.03035,-13.5116>,
+    <74.1478,4.03035,-11.9765>,
+  }
+  normal_vectors {
+    4,
+    <0.90912,-0,-0.416534>,
+    <0.937379,-0,-0.348311>,
+    <0.90912,-0,-0.416534>,
+    <0.937379,-0,-0.348311>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face155
+
+// face number156 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001156 = mesh2{
+  vertex_vectors {
+    14,
+    <68.4128,-4.91329,-16.6598>,
+    <69.0104,-4.5176,-17.822>,
+    <69.3052,-4.27253,-18.618>,
+    <69.5426,-4.03035,-19.4521>,
+    <69.5426,4.03035,-19.4521>,
+    <68.4128,4.91329,-16.6598>,
+    <69.0104,4.5176,-17.822>,
+    <69.3052,4.27253,-18.618>,
+    <68.7059,0.197844,-17.1713>,
+    <69.1427,2.1141,-18.1545>,
+    <69.01,2.23519,-17.8209>,
+    <69.2831,0.065948,-18.5508>,
+    <69.1427,-1.91625,-18.1545>,
+    <69.01,-2.03734,-17.8209>,
+  }
+  normal_vectors {
+    14,
+    <0.845594,-0,0.533826>,
+    <0.922137,-0,0.386864>,
+    <0.950993,-0,0.309212>,
+    <0.970841,-0,0.239723>,
+    <0.970841,-0,0.239723>,
+    <0.845594,-0,0.533826>,
+    <0.922137,-0,0.386864>,
+    <0.950993,-0,0.309212>,
+    <0.886724,-0,0.462298>,
+    <0.935689,-0,0.352825>,
+    <0.922087,-0,0.386982>,
+    <0.948996,-0,0.315288>,
+    <0.935689,-0,0.352825>,
+    <0.922087,-0,0.386982>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face156
+
+// face number157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001157 = mesh2{
+  vertex_vectors {
+    8,
+    <68.3678,-4.03035,-20.627>,
+    <67.0508,-4.41925,-20.2198>,
+    <66.2831,-4.66578,-19.8892>,
+    <65.5755,-4.91329,-19.4971>,
+    <65.5755,4.91329,-19.4971>,
+    <68.3678,4.03035,-20.627>,
+    <67.0508,4.41925,-20.2198>,
+    <66.2831,4.66578,-19.8892>,
+  }
+  normal_vectors {
+    8,
+    <-0.239723,0,-0.970841>,
+    <-0.35473,0,-0.934969>,
+    <-0.438105,0,-0.898924>,
+    <-0.533826,0,-0.845594>,
+    <-0.533826,0,-0.845594>,
+    <-0.239723,0,-0.970841>,
+    <-0.35473,0,-0.934969>,
+    <-0.438105,0,-0.898924>,
+  }
+  face_indices {
+    6,
+    <3,4,2>,
+    <7,6,2>,
+    <4,7,2>,
+    <2,6,1>,
+    <6,5,0>,
+    <1,6,0>,
+  }
+} // end of Face157
+
+// face number158 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001158 = mesh2{
+  vertex_vectors {
+    4,
+    <68.3678,-4.03035,-20.627>,
+    <69.5426,-4.03035,-19.4521>,
+    <68.3678,4.03035,-20.627>,
+    <69.5426,4.03035,-19.4521>,
+  }
+  normal_vectors {
+    4,
+    <0.680517,-0,-0.732733>,
+    <0.732732,-0,-0.680517>,
+    <0.680517,-0,-0.732733>,
+    <0.732732,-0,-0.680517>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face158
+
+// face number159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001159 = mesh2{
+  vertex_vectors {
+    14,
+    <62.4519,-4.91329,-21.5842>,
+    <62.5593,-4.5176,-22.8867>,
+    <62.527,-4.27253,-23.7349>,
+    <62.4272,-4.03035,-24.5964>,
+    <62.4272,4.03035,-24.5964>,
+    <62.4519,4.91329,-21.5842>,
+    <62.5593,4.5176,-22.8867>,
+    <62.527,4.27253,-23.7349>,
+    <62.527,-0.197844,-22.169>,
+    <62.5543,1.91625,-23.2444>,
+    <62.5593,2.03734,-22.8855>,
+    <62.5323,-0.065948,-23.6643>,
+    <62.5543,-2.1141,-23.2444>,
+    <62.5593,-2.23519,-22.8855>,
+  }
+  normal_vectors {
+    14,
+    <0.985514,-0,0.169597>,
+    <0.99999,-0,0.00452956>,
+    <0.996933,-0,-0.0782551>,
+    <0.988678,-0,-0.15005>,
+    <0.988678,-0,-0.15005>,
+    <0.985514,-0,0.169597>,
+    <0.99999,-0,0.00452956>,
+    <0.996933,-0,-0.0782551>,
+    <0.99614,-0,0.0877734>,
+    <0.999484,-0,-0.0321053>,
+    <0.999989,-0,0.00465698>,
+    <0.997414,-0,-0.0718766>,
+    <0.999484,-0,-0.0321053>,
+    <0.999989,-0,0.00465698>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face159
+
+// face number160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001160 = mesh2{
+  vertex_vectors {
+    8,
+    <60.8922,-4.03035,-25.2322>,
+    <59.8313,-4.41925,-24.352>,
+    <59.2485,-4.66578,-23.7528>,
+    <58.7448,-4.91329,-23.1198>,
+    <58.7448,4.91329,-23.1198>,
+    <60.8922,4.03035,-25.2322>,
+    <59.8313,4.41925,-24.352>,
+    <59.2485,4.66578,-23.7528>,
+  }
+  normal_vectors {
+    8,
+    <-0.593,0,-0.805202>,
+    <-0.685525,0,-0.728049>,
+    <-0.748759,0,-0.662842>,
+    <-0.816786,0,-0.57694>,
+    <-0.816786,0,-0.57694>,
+    <-0.593,0,-0.805202>,
+    <-0.685525,0,-0.728049>,
+    <-0.748759,0,-0.662842>,
+  }
+  face_indices {
+    6,
+    <3,4,2>,
+    <4,7,2>,
+    <7,6,1>,
+    <2,7,1>,
+    <6,5,0>,
+    <1,6,0>,
+  }
+} // end of Face160
+
+// face number161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001161 = mesh2{
+  vertex_vectors {
+    4,
+    <60.8922,-4.03035,-25.2322>,
+    <62.4272,-4.03035,-24.5964>,
+    <60.8922,4.03035,-25.2322>,
+    <62.4272,4.03035,-24.5964>,
+  }
+  normal_vectors {
+    4,
+    <0.348311,-0,-0.937379>,
+    <0.416534,-0,-0.90912>,
+    <0.348311,-0,-0.937379>,
+    <0.416534,-0,-0.90912>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face161
+
+// face number162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001162 = mesh2{
+  vertex_vectors {
+    14,
+    <55.0603,-4.91329,-23.8526>,
+    <54.6611,-4.5176,-25.0971>,
+    <54.3067,-4.27253,-25.8683>,
+    <53.8848,-4.03035,-26.626>,
+    <53.8848,4.03035,-26.626>,
+    <55.0603,4.91329,-23.8526>,
+    <54.6611,4.5176,-25.0971>,
+    <54.3067,4.27253,-25.8683>,
+    <54.906,-0.197844,-24.4216>,
+    <54.5196,1.91625,-25.4257>,
+    <54.6616,2.03734,-25.096>,
+    <54.3386,-0.065948,-25.8052>,
+    <54.5196,-2.1141,-25.4257>,
+    <54.6616,-2.23519,-25.096>,
+  }
+  normal_vectors {
+    14,
+    <0.975398,-0,-0.220453>,
+    <0.925603,-0,-0.378495>,
+    <0.891099,-0,-0.453808>,
+    <0.855998,-0,-0.516979>,
+    <0.855998,-0,-0.516979>,
+    <0.975398,-0,-0.220453>,
+    <0.925603,-0,-0.378495>,
+    <0.891099,-0,-0.453808>,
+    <0.953903,-0,-0.300115>,
+    <0.911117,-0,-0.412148>,
+    <0.925652,-0,-0.378377>,
+    <0.893984,-0,-0.448099>,
+    <0.911117,-0,-0.412148>,
+    <0.925652,-0,-0.378377>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face162
+
+// face number163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001163 = mesh2{
+  vertex_vectors {
+    8,
+    <52.2233,-4.03035,-26.626>,
+    <51.58,-4.41925,-25.4069>,
+    <51.2709,-4.66578,-24.6302>,
+    <51.0478,-4.91329,-23.8526>,
+    <51.0478,4.91329,-23.8526>,
+    <52.2233,4.03035,-26.626>,
+    <51.58,4.41925,-25.4069>,
+    <51.2709,4.66578,-24.6302>,
+  }
+  normal_vectors {
+    8,
+    <-0.855998,0,-0.516979>,
+    <-0.911955,0,-0.410291>,
+    <-0.945422,0,-0.325849>,
+    <-0.975398,0,-0.220453>,
+    <-0.975398,0,-0.220453>,
+    <-0.855998,0,-0.516979>,
+    <-0.911955,0,-0.410291>,
+    <-0.945422,0,-0.325849>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face163
+
+// face number164 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001164 = mesh2{
+  vertex_vectors {
+    4,
+    <52.2233,-4.03035,-26.626>,
+    <53.8848,-4.03035,-26.626>,
+    <52.2233,4.03035,-26.626>,
+    <53.8848,4.03035,-26.626>,
+  }
+  normal_vectors {
+    4,
+    <-0.0369221,0,-0.999318>,
+    <0.0369221,-0,-0.999318>,
+    <-0.0369221,0,-0.999318>,
+    <0.0369221,-0,-0.999318>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face164
+
+// face number165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001165 = mesh2{
+  vertex_vectors {
+    14,
+    <47.3633,-4.91329,-23.1198>,
+    <46.5183,-4.5176,-24.1167>,
+    <45.8957,-4.27253,-24.6936>,
+    <45.2159,-4.03035,-25.2322>,
+    <45.2159,4.03035,-25.2322>,
+    <47.3633,4.91329,-23.1198>,
+    <46.5183,4.5176,-24.1167>,
+    <45.8957,4.27253,-24.6936>,
+    <47.0029,-0.197844,-23.5864>,
+    <46.2618,1.91625,-24.3661>,
+    <46.5191,2.03734,-24.1158>,
+    <45.9493,-0.065948,-24.6475>,
+    <46.2618,-2.1141,-24.3661>,
+    <46.5191,-2.23519,-24.1158>,
+  }
+  normal_vectors {
+    14,
+    <0.816786,-0,-0.57694>,
+    <0.710302,-0,-0.703897>,
+    <0.649604,-0,-0.760273>,
+    <0.593,-0,-0.805202>,
+    <0.593,-0,-0.805202>,
+    <0.816786,-0,-0.57694>,
+    <0.710303,-0,-0.703897>,
+    <0.649604,-0,-0.760273>,
+    <0.766443,-0,-0.642313>,
+    <0.68404,-0,-0.729444>,
+    <0.710392,-0,-0.703806>,
+    <0.654453,-0,-0.756102>,
+    <0.68404,-0,-0.729444>,
+    <0.710392,-0,-0.703806>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face165
+
+// face number166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001166 = mesh2{
+  vertex_vectors {
+    8,
+    <43.6809,-4.03035,-24.5964>,
+    <43.5531,-4.41925,-23.2238>,
+    <43.5648,-4.66578,-22.388>,
+    <43.6562,-4.91329,-21.5842>,
+    <43.6562,4.91329,-21.5842>,
+    <43.6809,4.03035,-24.5964>,
+    <43.5531,4.41925,-23.2238>,
+    <43.5648,4.66578,-22.388>,
+  }
+  normal_vectors {
+    8,
+    <-0.988678,0,-0.15005>,
+    <-0.999548,0,-0.0300696>,
+    <-0.998153,-0,0.0607526>,
+    <-0.985514,-0,0.169597>,
+    <-0.985514,-0,0.169597>,
+    <-0.988678,0,-0.15005>,
+    <-0.999548,0,-0.0300696>,
+    <-0.998153,-0,0.0607526>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <2,6,1>,
+    <6,5,0>,
+    <1,6,0>,
+  }
+} // end of Face166
+
+// face number167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001167 = mesh2{
+  vertex_vectors {
+    4,
+    <43.6809,-4.03035,-24.5964>,
+    <45.2159,-4.03035,-25.2322>,
+    <43.6809,4.03035,-24.5964>,
+    <45.2159,4.03035,-25.2322>,
+  }
+  normal_vectors {
+    4,
+    <-0.416534,0,-0.90912>,
+    <-0.348311,0,-0.937379>,
+    <-0.416534,0,-0.90912>,
+    <-0.348311,0,-0.937379>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face167
+
+// face number168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001168 = mesh2{
+  vertex_vectors {
+    14,
+    <40.5326,-4.91329,-19.4971>,
+    <39.3704,-4.5176,-20.0948>,
+    <38.5744,-4.27253,-20.3895>,
+    <37.7403,-4.03035,-20.627>,
+    <37.7403,4.03035,-20.627>,
+    <40.5326,4.91329,-19.4971>,
+    <39.3704,4.5176,-20.0948>,
+    <38.5744,4.27253,-20.3895>,
+    <40.0211,-0.197844,-19.7903>,
+    <39.038,1.91625,-20.2271>,
+    <39.3715,2.03734,-20.0943>,
+    <38.6417,-0.065948,-20.3674>,
+    <39.038,-2.1141,-20.2271>,
+    <39.3715,-2.23519,-20.0943>,
+  }
+  normal_vectors {
+    14,
+    <0.533827,-0,-0.845594>,
+    <0.386864,-0,-0.922137>,
+    <0.309212,-0,-0.950993>,
+    <0.239723,-0,-0.970841>,
+    <0.239723,-0,-0.970841>,
+    <0.533827,-0,-0.845594>,
+    <0.386864,-0,-0.922137>,
+    <0.309212,-0,-0.950993>,
+    <0.462298,-0,-0.886724>,
+    <0.352825,-0,-0.935689>,
+    <0.386982,-0,-0.922087>,
+    <0.315288,-0,-0.948996>,
+    <0.352825,-0,-0.935689>,
+    <0.386982,-0,-0.922087>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face168
+
+// face number169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001169 = mesh2{
+  vertex_vectors {
+    8,
+    <36.5655,-4.03035,-19.4521>,
+    <36.9727,-4.41925,-18.1352>,
+    <37.3033,-4.66578,-17.3675>,
+    <37.6953,-4.91329,-16.6598>,
+    <37.6953,4.91329,-16.6598>,
+    <36.5655,4.03035,-19.4521>,
+    <36.9727,4.41925,-18.1352>,
+    <37.3033,4.66578,-17.3675>,
+  }
+  normal_vectors {
+    8,
+    <-0.970841,-0,0.239723>,
+    <-0.934969,-0,0.35473>,
+    <-0.898924,-0,0.438105>,
+    <-0.845594,-0,0.533827>,
+    <-0.845594,-0,0.533827>,
+    <-0.970841,-0,0.239723>,
+    <-0.934969,-0,0.35473>,
+    <-0.898924,-0,0.438105>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <2,6,1>,
+    <6,5,0>,
+    <1,6,0>,
+  }
+} // end of Face169
+
+// face number170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001170 = mesh2{
+  vertex_vectors {
+    4,
+    <36.5655,-4.03035,-19.4521>,
+    <37.7403,-4.03035,-20.627>,
+    <36.5655,4.03035,-19.4521>,
+    <37.7403,4.03035,-20.627>,
+  }
+  normal_vectors {
+    4,
+    <-0.732733,0,-0.680517>,
+    <-0.680517,0,-0.732733>,
+    <-0.732733,0,-0.680517>,
+    <-0.680517,0,-0.732733>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face170
+
+// face number171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001171 = mesh2{
+  vertex_vectors {
+    14,
+    <35.6082,-4.91329,-13.5363>,
+    <34.3058,-4.5176,-13.6437>,
+    <33.4576,-4.27253,-13.6114>,
+    <32.5961,-4.03035,-13.5116>,
+    <32.5961,4.03035,-13.5116>,
+    <35.6082,4.91329,-13.5363>,
+    <34.3058,4.5176,-13.6437>,
+    <33.4576,4.27253,-13.6114>,
+    <35.0235,-0.197844,-13.6114>,
+    <33.948,1.91625,-13.6387>,
+    <34.307,2.03734,-13.6437>,
+    <33.5282,-0.065948,-13.6167>,
+    <33.948,-2.1141,-13.6387>,
+    <34.307,-2.23519,-13.6437>,
+  }
+  normal_vectors {
+    14,
+    <0.169597,-0,-0.985514>,
+    <0.00452973,-0,-0.99999>,
+    <-0.0782551,0,-0.996933>,
+    <-0.15005,0,-0.988678>,
+    <-0.15005,0,-0.988678>,
+    <0.169597,-0,-0.985514>,
+    <0.00452973,-0,-0.99999>,
+    <-0.0782551,0,-0.996933>,
+    <0.0877731,-0,-0.99614>,
+    <-0.0321053,0,-0.999484>,
+    <0.00465675,-0,-0.999989>,
+    <-0.0718768,0,-0.997414>,
+    <-0.0321053,0,-0.999484>,
+    <0.00465675,-0,-0.999989>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face171
+
+// face number172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001172 = mesh2{
+  vertex_vectors {
+    8,
+    <31.9603,-4.03035,-11.9765>,
+    <32.8405,-4.41925,-10.9157>,
+    <33.4397,-4.66578,-10.3329>,
+    <34.0727,-4.91329,-9.82916>,
+    <34.0727,4.91329,-9.82916>,
+    <31.9603,4.03035,-11.9765>,
+    <32.8405,4.41925,-10.9157>,
+    <33.4397,4.66578,-10.3329>,
+  }
+  normal_vectors {
+    8,
+    <-0.805202,-0,0.593>,
+    <-0.72805,-0,0.685525>,
+    <-0.662842,-0,0.748759>,
+    <-0.57694,-0,0.816786>,
+    <-0.57694,-0,0.816786>,
+    <-0.805202,-0,0.593>,
+    <-0.728049,-0,0.685525>,
+    <-0.662842,-0,0.748759>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face172
+
+// face number173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001173 = mesh2{
+  vertex_vectors {
+    4,
+    <31.9603,-4.03035,-11.9765>,
+    <32.5961,-4.03035,-13.5116>,
+    <31.9603,4.03035,-11.9765>,
+    <32.5961,4.03035,-13.5116>,
+  }
+  normal_vectors {
+    4,
+    <-0.937379,0,-0.348311>,
+    <-0.90912,0,-0.416534>,
+    <-0.937379,0,-0.348311>,
+    <-0.90912,0,-0.416534>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face173
+
+// face number174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001174 = mesh2{
+  vertex_vectors {
+    14,
+    <33.3398,-4.91329,-6.14468>,
+    <32.0954,-4.5176,-5.7455>,
+    <31.3241,-4.27253,-5.39107>,
+    <30.5664,-4.03035,-4.96916>,
+    <30.5664,4.03035,-4.96916>,
+    <33.3398,4.91329,-6.14468>,
+    <32.0954,4.5176,-5.7455>,
+    <31.3241,4.27253,-5.39107>,
+    <32.7708,-0.197844,-5.99032>,
+    <31.7668,1.91625,-5.60397>,
+    <32.0965,2.03734,-5.74595>,
+    <31.3873,-0.065948,-5.42298>,
+    <31.7668,-2.1141,-5.60397>,
+    <32.0965,-2.23519,-5.74595>,
+  }
+  normal_vectors {
+    14,
+    <-0.220453,0,-0.975398>,
+    <-0.378495,0,-0.925603>,
+    <-0.453808,0,-0.891099>,
+    <-0.516979,0,-0.855998>,
+    <-0.516979,0,-0.855998>,
+    <-0.220453,0,-0.975398>,
+    <-0.378495,0,-0.925603>,
+    <-0.453808,0,-0.891099>,
+    <-0.300115,0,-0.953903>,
+    <-0.412148,0,-0.911117>,
+    <-0.378377,0,-0.925652>,
+    <-0.448099,0,-0.893984>,
+    <-0.412148,0,-0.911117>,
+    <-0.378377,0,-0.925652>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face174
+
+// face number175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001175 = mesh2{
+  vertex_vectors {
+    8,
+    <30.5664,-4.03035,-3.30766>,
+    <31.7856,-4.41925,-2.66438>,
+    <32.5622,-4.66578,-2.35528>,
+    <33.3398,-4.91329,-2.13213>,
+    <33.3398,4.91329,-2.13213>,
+    <30.5664,4.03035,-3.30766>,
+    <31.7856,4.41925,-2.66438>,
+    <32.5622,4.66578,-2.35528>,
+  }
+  normal_vectors {
+    8,
+    <-0.516979,-0,0.855998>,
+    <-0.410291,-0,0.911955>,
+    <-0.325849,-0,0.945422>,
+    <-0.220453,-0,0.975398>,
+    <-0.220453,-0,0.975398>,
+    <-0.516979,-0,0.855998>,
+    <-0.410291,-0,0.911955>,
+    <-0.325849,-0,0.945422>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face175
+
+// face number176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001176 = mesh2{
+  vertex_vectors {
+    4,
+    <30.5664,-4.03035,-3.30766>,
+    <30.5664,-4.03035,-4.96916>,
+    <30.5664,4.03035,-3.30766>,
+    <30.5664,4.03035,-4.96916>,
+  }
+  normal_vectors {
+    4,
+    <-0.999318,-0,0.0369222>,
+    <-0.999318,0,-0.0369222>,
+    <-0.999318,-0,0.0369222>,
+    <-0.999318,0,-0.0369222>,
+  }
+  face_indices {
+    2,
+    <2,3,0>,
+    <0,3,1>,
+  }
+} // end of Face176
+
+// face number177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001177 = mesh2{
+  vertex_vectors {
+    14,
+    <34.0727,-4.91329,1.55235>,
+    <33.0758,-4.5176,2.39737>,
+    <32.4988,-4.27253,3.01996>,
+    <31.9603,-4.03035,3.69972>,
+    <31.9603,4.03035,3.69972>,
+    <34.0727,4.91329,1.55235>,
+    <33.0758,4.5176,2.39737>,
+    <32.4988,4.27253,3.01996>,
+    <33.6061,-0.197844,1.91271>,
+    <32.8263,1.91625,2.65387>,
+    <33.0766,2.03734,2.39653>,
+    <32.545,-0.065948,2.96631>,
+    <32.8263,-2.1141,2.65387>,
+    <33.0766,-2.23519,2.39653>,
+  }
+  normal_vectors {
+    14,
+    <-0.57694,0,-0.816786>,
+    <-0.703897,0,-0.710303>,
+    <-0.760273,0,-0.649604>,
+    <-0.805202,0,-0.593>,
+    <-0.805202,0,-0.593>,
+    <-0.57694,0,-0.816786>,
+    <-0.703897,0,-0.710303>,
+    <-0.760273,0,-0.649604>,
+    <-0.642313,0,-0.766443>,
+    <-0.729444,0,-0.684041>,
+    <-0.703806,0,-0.710392>,
+    <-0.756102,0,-0.654453>,
+    <-0.729444,0,-0.684041>,
+    <-0.703806,0,-0.710392>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face177
+
+// face number178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001178 = mesh2{
+  vertex_vectors {
+    8,
+    <32.5961,-4.03035,5.23475>,
+    <33.9686,-4.41925,5.36251>,
+    <34.8044,-4.66578,5.35087>,
+    <35.6082,-4.91329,5.25946>,
+    <35.6082,4.91329,5.25946>,
+    <32.5961,4.03035,5.23475>,
+    <33.9686,4.41925,5.36251>,
+    <34.8044,4.66578,5.35087>,
+  }
+  normal_vectors {
+    8,
+    <-0.15005,-0,0.988678>,
+    <-0.0300694,-0,0.999548>,
+    <0.0607525,-0,0.998153>,
+    <0.169597,-0,0.985514>,
+    <0.169597,-0,0.985514>,
+    <-0.15005,-0,0.988678>,
+    <-0.0300694,-0,0.999548>,
+    <0.0607525,-0,0.998153>,
+  }
+  face_indices {
+    6,
+    <3,4,2>,
+    <4,7,2>,
+    <7,6,1>,
+    <2,7,1>,
+    <6,5,0>,
+    <1,6,0>,
+  }
+} // end of Face178
+
+// face number179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001179 = mesh2{
+  vertex_vectors {
+    4,
+    <32.5961,-4.03035,5.23475>,
+    <31.9603,-4.03035,3.69972>,
+    <32.5961,4.03035,5.23475>,
+    <31.9603,4.03035,3.69972>,
+  }
+  normal_vectors {
+    4,
+    <-0.90912,-0,0.416534>,
+    <-0.937379,-0,0.348311>,
+    <-0.90912,-0,0.416534>,
+    <-0.937379,-0,0.348311>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face179
+
+// face number180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001180 = mesh2{
+  vertex_vectors {
+    14,
+    <37.6953,-4.91329,8.38302>,
+    <37.0976,-4.5176,9.54522>,
+    <36.8029,-4.27253,10.3412>,
+    <36.5655,-4.03035,11.1753>,
+    <36.5655,4.03035,11.1753>,
+    <37.6953,4.91329,8.38302>,
+    <37.0976,4.5176,9.54522>,
+    <36.8029,4.27253,10.3412>,
+    <37.4021,0.197844,8.8945>,
+    <36.9654,2.1141,9.87764>,
+    <37.0981,2.23519,9.54412>,
+    <36.825,0.065948,10.274>,
+    <36.9654,-1.91625,9.87764>,
+    <37.0981,-2.03734,9.54412>,
+  }
+  normal_vectors {
+    14,
+    <-0.845594,0,-0.533827>,
+    <-0.922137,0,-0.386864>,
+    <-0.950993,0,-0.309212>,
+    <-0.970841,0,-0.239723>,
+    <-0.970841,0,-0.239723>,
+    <-0.845594,0,-0.533827>,
+    <-0.922137,0,-0.386864>,
+    <-0.950993,0,-0.309212>,
+    <-0.886724,0,-0.462298>,
+    <-0.935689,0,-0.352825>,
+    <-0.922087,0,-0.386982>,
+    <-0.948996,0,-0.315288>,
+    <-0.935689,0,-0.352825>,
+    <-0.922087,0,-0.386982>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face180
+
+// face number181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001181 = mesh2{
+  vertex_vectors {
+    8,
+    <37.7403,-4.03035,12.3502>,
+    <39.0573,-4.41925,11.943>,
+    <39.825,-4.66578,11.6124>,
+    <40.5326,-4.91329,11.2203>,
+    <40.5326,4.91329,11.2203>,
+    <37.7403,4.03035,12.3502>,
+    <39.0573,4.41925,11.943>,
+    <39.825,4.66578,11.6124>,
+  }
+  normal_vectors {
+    8,
+    <0.239723,-0,0.970841>,
+    <0.35473,-0,0.934969>,
+    <0.438104,-0,0.898924>,
+    <0.533827,-0,0.845594>,
+    <0.533827,-0,0.845594>,
+    <0.239723,-0,0.970841>,
+    <0.35473,-0,0.934969>,
+    <0.438104,-0,0.898924>,
+  }
+  face_indices {
+    6,
+    <3,4,2>,
+    <4,7,2>,
+    <7,6,1>,
+    <2,7,1>,
+    <6,5,0>,
+    <1,6,0>,
+  }
+} // end of Face181
+
+// face number182 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001182 = mesh2{
+  vertex_vectors {
+    4,
+    <37.7403,-4.03035,12.3502>,
+    <36.5655,-4.03035,11.1753>,
+    <37.7403,4.03035,12.3502>,
+    <36.5655,4.03035,11.1753>,
+  }
+  normal_vectors {
+    4,
+    <-0.680517,-0,0.732733>,
+    <-0.732733,-0,0.680517>,
+    <-0.680517,-0,0.732733>,
+    <-0.732733,-0,0.680517>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face182
+
+// face number183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001183 = mesh2{
+  vertex_vectors {
+    14,
+    <43.6562,-4.91329,13.3074>,
+    <43.5488,-4.5176,14.6099>,
+    <43.5811,-4.27253,15.458>,
+    <43.6809,-4.03035,16.3195>,
+    <43.6809,4.03035,16.3195>,
+    <43.6562,4.91329,13.3074>,
+    <43.5488,4.5176,14.6099>,
+    <43.5811,4.27253,15.458>,
+    <43.581,-0.197844,13.8922>,
+    <43.5538,1.91625,14.9676>,
+    <43.5488,2.03734,14.6087>,
+    <43.5757,-0.065948,15.3875>,
+    <43.5538,-2.1141,14.9676>,
+    <43.5488,-2.23519,14.6087>,
+  }
+  normal_vectors {
+    14,
+    <-0.985514,0,-0.169597>,
+    <-0.99999,0,-0.0045296>,
+    <-0.996933,-0,0.0782551>,
+    <-0.988678,-0,0.15005>,
+    <-0.988678,-0,0.15005>,
+    <-0.985514,0,-0.169597>,
+    <-0.99999,0,-0.0045296>,
+    <-0.996933,-0,0.0782551>,
+    <-0.99614,0,-0.0877733>,
+    <-0.999484,-0,0.0321052>,
+    <-0.999989,0,-0.00465691>,
+    <-0.997414,-0,0.0718766>,
+    <-0.999484,-0,0.0321052>,
+    <-0.999989,0,-0.00465691>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face183
+
+// face number184 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001184 = mesh2{
+  vertex_vectors {
+    8,
+    <45.2159,-4.03035,16.9554>,
+    <46.2768,-4.41925,16.0752>,
+    <46.8596,-4.66578,15.4759>,
+    <47.3633,-4.91329,14.8429>,
+    <47.3633,4.91329,14.8429>,
+    <45.2159,4.03035,16.9554>,
+    <46.2768,4.41925,16.0752>,
+    <46.8596,4.66578,15.4759>,
+  }
+  normal_vectors {
+    8,
+    <0.593,-0,0.805202>,
+    <0.685525,-0,0.728049>,
+    <0.748759,-0,0.662842>,
+    <0.816786,-0,0.57694>,
+    <0.816786,-0,0.57694>,
+    <0.593,-0,0.805202>,
+    <0.685525,-0,0.728049>,
+    <0.748759,-0,0.662842>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face184
+
+// face number185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001185 = mesh2{
+  vertex_vectors {
+    4,
+    <45.2159,-4.03035,16.9554>,
+    <43.6809,-4.03035,16.3195>,
+    <45.2159,4.03035,16.9554>,
+    <43.6809,4.03035,16.3195>,
+  }
+  normal_vectors {
+    4,
+    <-0.348311,-0,0.937379>,
+    <-0.416534,-0,0.90912>,
+    <-0.348311,-0,0.937379>,
+    <-0.416534,-0,0.90912>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face185
+
+// face number186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001186 = mesh2{
+  vertex_vectors {
+    14,
+    <51.0478,-4.91329,15.5758>,
+    <51.447,-4.5176,16.8203>,
+    <51.8014,-4.27253,17.5915>,
+    <52.2233,-4.03035,18.3492>,
+    <52.2233,4.03035,18.3492>,
+    <51.0478,4.91329,15.5758>,
+    <51.447,4.5176,16.8203>,
+    <51.8014,4.27253,17.5915>,
+    <51.2021,-0.197844,16.1448>,
+    <51.5885,1.91625,17.1488>,
+    <51.4465,2.03734,16.8192>,
+    <51.7695,-0.065948,17.5284>,
+    <51.5885,-2.1141,17.1488>,
+    <51.4465,-2.23519,16.8192>,
+  }
+  normal_vectors {
+    14,
+    <-0.975398,-0,0.220453>,
+    <-0.925603,-0,0.378495>,
+    <-0.891099,-0,0.453808>,
+    <-0.855998,-0,0.516979>,
+    <-0.855998,-0,0.516979>,
+    <-0.975398,-0,0.220453>,
+    <-0.925603,-0,0.378495>,
+    <-0.891099,-0,0.453808>,
+    <-0.953903,-0,0.300115>,
+    <-0.911117,-0,0.412147>,
+    <-0.925652,-0,0.378377>,
+    <-0.893984,-0,0.448099>,
+    <-0.911117,-0,0.412147>,
+    <-0.925652,-0,0.378377>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face186
+
+// face number187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001187 = mesh2{
+  vertex_vectors {
+    8,
+    <53.8848,-4.03035,18.3492>,
+    <54.5281,-4.41925,17.1301>,
+    <54.8372,-4.66578,16.3534>,
+    <55.0603,-4.91329,15.5758>,
+    <55.0603,4.91329,15.5758>,
+    <53.8848,4.03035,18.3492>,
+    <54.5281,4.41925,17.1301>,
+    <54.8372,4.66578,16.3534>,
+  }
+  normal_vectors {
+    8,
+    <0.855998,-0,0.516979>,
+    <0.911955,-0,0.410291>,
+    <0.945422,-0,0.325849>,
+    <0.975398,-0,0.220453>,
+    <0.975398,-0,0.220453>,
+    <0.855998,-0,0.516979>,
+    <0.911955,-0,0.410291>,
+    <0.945422,-0,0.325849>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face187
+
+// face number188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001188 = mesh2{
+  vertex_vectors {
+    4,
+    <53.8848,-4.03035,18.3492>,
+    <52.2233,-4.03035,18.3492>,
+    <53.8848,4.03035,18.3492>,
+    <52.2233,4.03035,18.3492>,
+  }
+  normal_vectors {
+    4,
+    <0.0369221,0,0.999318>,
+    <-0.0369221,-0,0.999318>,
+    <0.0369221,0,0.999318>,
+    <-0.0369221,-0,0.999318>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face188
+
+// face number189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001189 = mesh2{
+  vertex_vectors {
+    14,
+    <58.7448,-4.91329,14.8429>,
+    <59.5898,-4.5176,15.8399>,
+    <60.2124,-4.27253,16.4168>,
+    <60.8922,-4.03035,16.9554>,
+    <60.8922,4.03035,16.9554>,
+    <58.7448,4.91329,14.8429>,
+    <59.5898,4.5176,15.8399>,
+    <60.2124,4.27253,16.4168>,
+    <59.1052,-0.197844,15.3095>,
+    <59.8463,1.91625,16.0893>,
+    <59.589,2.03734,15.839>,
+    <60.1588,-0.065948,16.3707>,
+    <59.8463,-2.1141,16.0893>,
+    <59.589,-2.23519,15.839>,
+  }
+  normal_vectors {
+    14,
+    <-0.816786,-0,0.57694>,
+    <-0.710302,-0,0.703897>,
+    <-0.649604,-0,0.760273>,
+    <-0.593,-0,0.805202>,
+    <-0.593,-0,0.805202>,
+    <-0.816786,-0,0.57694>,
+    <-0.710302,-0,0.703897>,
+    <-0.649604,-0,0.760273>,
+    <-0.766443,-0,0.642313>,
+    <-0.68404,-0,0.729444>,
+    <-0.710392,-0,0.703806>,
+    <-0.654453,-0,0.756102>,
+    <-0.68404,-0,0.729444>,
+    <-0.710392,-0,0.703806>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face189
+
+// face number190 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001190 = mesh2{
+  vertex_vectors {
+    8,
+    <62.4272,-4.03035,16.3195>,
+    <62.555,-4.41925,14.947>,
+    <62.5433,-4.66578,14.1112>,
+    <62.4519,-4.91329,13.3074>,
+    <62.4519,4.91329,13.3074>,
+    <62.4272,4.03035,16.3195>,
+    <62.555,4.41925,14.947>,
+    <62.5433,4.66578,14.1112>,
+  }
+  normal_vectors {
+    8,
+    <0.988678,-0,0.15005>,
+    <0.999548,-0,0.0300695>,
+    <0.998153,-0,-0.0607526>,
+    <0.985514,-0,-0.169597>,
+    <0.985514,-0,-0.169597>,
+    <0.988678,-0,0.15005>,
+    <0.999548,-0,0.0300695>,
+    <0.998153,-0,-0.0607526>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <3,7,2>,
+    <6,5,1>,
+    <7,6,1>,
+    <2,7,1>,
+    <1,5,0>,
+  }
+} // end of Face190
+
+// face number191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001191 = mesh2{
+  vertex_vectors {
+    4,
+    <62.4272,-4.03035,16.3195>,
+    <60.8922,-4.03035,16.9554>,
+    <62.4272,4.03035,16.3195>,
+    <60.8922,4.03035,16.9554>,
+  }
+  normal_vectors {
+    4,
+    <0.416534,0,0.90912>,
+    <0.348311,0,0.937379>,
+    <0.416534,0,0.90912>,
+    <0.348311,0,0.937379>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face191
+
+// face number192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001192 = mesh2{
+  vertex_vectors {
+    14,
+    <65.5755,-4.91329,11.2203>,
+    <66.7377,-4.5176,11.818>,
+    <67.5336,-4.27253,12.1127>,
+    <68.3678,-4.03035,12.3502>,
+    <68.3678,4.03035,12.3502>,
+    <65.5755,4.91329,11.2203>,
+    <66.7377,4.5176,11.818>,
+    <67.5336,4.27253,12.1127>,
+    <66.087,0.197844,11.5135>,
+    <67.0701,2.1141,11.9503>,
+    <66.7366,2.23519,11.8175>,
+    <67.4664,0.065948,12.0906>,
+    <67.0701,-1.91625,11.9503>,
+    <66.7366,-2.03734,11.8175>,
+  }
+  normal_vectors {
+    14,
+    <-0.533826,-0,0.845594>,
+    <-0.386865,-0,0.922137>,
+    <-0.309212,-0,0.950993>,
+    <-0.239723,-0,0.970841>,
+    <-0.239723,-0,0.970841>,
+    <-0.533826,-0,0.845594>,
+    <-0.386865,-0,0.922137>,
+    <-0.309212,-0,0.950993>,
+    <-0.462299,-0,0.886724>,
+    <-0.352825,-0,0.93569>,
+    <-0.386982,-0,0.922087>,
+    <-0.315288,-0,0.948996>,
+    <-0.352825,-0,0.93569>,
+    <-0.386982,-0,0.922087>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face192
+
+// face number193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001193 = mesh2{
+  vertex_vectors {
+    8,
+    <69.5426,-4.03035,11.1753>,
+    <69.1354,-4.41925,9.85838>,
+    <68.8048,-4.66578,9.09064>,
+    <68.4128,-4.91329,8.38302>,
+    <68.4128,4.91329,8.38302>,
+    <69.5426,4.03035,11.1753>,
+    <69.1354,4.41925,9.85838>,
+    <68.8048,4.66578,9.09064>,
+  }
+  normal_vectors {
+    8,
+    <0.970841,-0,-0.239723>,
+    <0.934969,-0,-0.35473>,
+    <0.898924,-0,-0.438105>,
+    <0.845594,-0,-0.533826>,
+    <0.845594,-0,-0.533826>,
+    <0.970841,-0,-0.239723>,
+    <0.934969,-0,-0.35473>,
+    <0.898924,-0,-0.438105>,
+  }
+  face_indices {
+    6,
+    <4,7,3>,
+    <7,6,2>,
+    <3,7,2>,
+    <6,5,1>,
+    <2,6,1>,
+    <1,5,0>,
+  }
+} // end of Face193
+
+// face number194 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001194 = mesh2{
+  vertex_vectors {
+    4,
+    <69.5426,-4.03035,11.1753>,
+    <68.3678,-4.03035,12.3502>,
+    <69.5426,4.03035,11.1753>,
+    <68.3678,4.03035,12.3502>,
+  }
+  normal_vectors {
+    4,
+    <0.732733,0,0.680517>,
+    <0.680517,0,0.732733>,
+    <0.732733,0,0.680517>,
+    <0.680517,0,0.732733>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face194
+
+// face number195 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001195 = mesh2{
+  vertex_vectors {
+    14,
+    <70.4999,-4.91329,5.25946>,
+    <71.8023,-4.5176,5.36689>,
+    <72.6505,-4.27253,5.33458>,
+    <73.512,-4.03035,5.23475>,
+    <73.512,4.03035,5.23475>,
+    <70.4999,4.91329,5.25946>,
+    <71.8023,4.5176,5.36689>,
+    <72.6505,4.27253,5.33458>,
+    <71.0846,-0.197844,5.33459>,
+    <72.16,1.91625,5.36187>,
+    <71.8011,2.03734,5.36688>,
+    <72.5799,-0.065948,5.3399>,
+    <72.16,-2.1141,5.36187>,
+    <71.8011,-2.23519,5.36688>,
+  }
+  normal_vectors {
+    14,
+    <-0.169596,-0,0.985514>,
+    <-0.00452942,-0,0.99999>,
+    <0.0782554,-0,0.996933>,
+    <0.15005,-0,0.988678>,
+    <0.15005,-0,0.988678>,
+    <-0.169596,-0,0.985514>,
+    <-0.00452942,-0,0.99999>,
+    <0.0782554,-0,0.996933>,
+    <-0.0877732,-0,0.99614>,
+    <0.0321049,-0,0.999485>,
+    <-0.00465684,-0,0.999989>,
+    <0.0718767,-0,0.997414>,
+    <0.0321049,-0,0.999485>,
+    <-0.00465684,-0,0.999989>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face195
+
+// face number196 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001196 = mesh2{
+  vertex_vectors {
+    8,
+    <74.1478,-4.03035,3.69972>,
+    <73.2676,-4.41925,2.63886>,
+    <72.6684,-4.66578,2.05608>,
+    <72.0354,-4.91329,1.55235>,
+    <72.0354,4.91329,1.55235>,
+    <74.1478,4.03035,3.69972>,
+    <73.2676,4.41925,2.63886>,
+    <72.6684,4.66578,2.05608>,
+  }
+  normal_vectors {
+    8,
+    <0.805202,-0,-0.593>,
+    <0.728049,-0,-0.685525>,
+    <0.662842,-0,-0.748759>,
+    <0.576941,-0,-0.816786>,
+    <0.576941,-0,-0.816786>,
+    <0.805202,-0,-0.593>,
+    <0.728049,-0,-0.685525>,
+    <0.662842,-0,-0.748759>,
+  }
+  face_indices {
+    6,
+    <3,4,2>,
+    <4,7,2>,
+    <6,5,1>,
+    <7,6,1>,
+    <2,7,1>,
+    <1,5,0>,
+  }
+} // end of Face196
+
+// face number197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001197 = mesh2{
+  vertex_vectors {
+    4,
+    <74.1478,-4.03035,3.69972>,
+    <73.512,-4.03035,5.23475>,
+    <74.1478,4.03035,3.69972>,
+    <73.512,4.03035,5.23475>,
+  }
+  normal_vectors {
+    4,
+    <0.937379,0,0.348311>,
+    <0.90912,0,0.416534>,
+    <0.937379,0,0.348311>,
+    <0.90912,0,0.416534>,
+  }
+  face_indices {
+    2,
+    <0,2,1>,
+    <2,3,1>,
+  }
+} // end of Face197
+
+// face number198 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001198 = mesh2{
+  vertex_vectors {
+    14,
+    <72.7683,-4.91329,-2.13213>,
+    <74.0127,-4.5176,-2.53131>,
+    <74.784,-4.27253,-2.88574>,
+    <75.5417,-4.03035,-3.30766>,
+    <75.5417,4.03035,-3.30766>,
+    <72.7683,4.91329,-2.13213>,
+    <74.0127,4.5176,-2.53131>,
+    <74.784,4.27253,-2.88574>,
+    <73.3373,-0.197844,-2.2865>,
+    <74.3413,1.91625,-2.67285>,
+    <74.0116,2.03734,-2.53086>,
+    <74.7208,-0.065948,-2.85383>,
+    <74.3413,-2.1141,-2.67285>,
+    <74.0116,-2.23519,-2.53086>,
+  }
+  normal_vectors {
+    14,
+    <0.220453,-0,0.975398>,
+    <0.378495,-0,0.925604>,
+    <0.453808,-0,0.891099>,
+    <0.516979,-0,0.855998>,
+    <0.516979,-0,0.855998>,
+    <0.220453,-0,0.975398>,
+    <0.378495,-0,0.925604>,
+    <0.453808,-0,0.891099>,
+    <0.300114,-0,0.953903>,
+    <0.412147,-0,0.911117>,
+    <0.378377,-0,0.925652>,
+    <0.448099,-0,0.893984>,
+    <0.412147,-0,0.911117>,
+    <0.378377,-0,0.925652>,
+  }
+  face_indices {
+    18,
+    <5,0,8>,
+    <4,7,9>,
+    <6,5,10>,
+    <7,6,10>,
+    <5,8,10>,
+    <9,7,10>,
+    <8,9,10>,
+    <3,4,11>,
+    <4,9,11>,
+    <9,8,11>,
+    <2,3,12>,
+    <3,11,12>,
+    <11,8,12>,
+    <0,1,13>,
+    <1,2,13>,
+    <2,12,13>,
+    <8,0,13>,
+    <12,8,13>,
+  }
+} // end of Face198
+
+// face number199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001199 = mesh2{
+  vertex_vectors {
+    76,
+    <68.3443,-1.87464,-4.13841>,
+    <68.2135,-1.87464,-2.14262>,
+    <67.8233,-1.87464,-0.18099>,
+    <67.1804,-1.87464,1.71293>,
+    <66.2958,-1.87464,3.50674>,
+    <65.1846,-1.87464,5.16973>,
+    <63.8659,-1.87464,6.67346>,
+    <62.3622,-1.87464,7.99219>,
+    <60.6992,-1.87464,9.10337>,
+    <58.9054,-1.87464,9.98797>,
+    <57.0115,-1.87464,10.6309>,
+    <55.0498,-1.87464,11.0211>,
+    <53.054,-1.87464,11.1519>,
+    <51.0583,-1.87464,11.0211>,
+    <49.0966,-1.87464,10.6309>,
+    <47.2027,-1.87464,9.98797>,
+    <45.4089,-1.87464,9.10337>,
+    <43.7459,-1.87464,7.99219>,
+    <42.2422,-1.87464,6.67346>,
+    <40.9234,-1.87464,5.16973>,
+    <39.8123,-1.87464,3.50674>,
+    <38.9277,-1.87464,1.71293>,
+    <38.2848,-1.87464,-0.18099>,
+    <37.8946,-1.87464,-2.14262>,
+    <37.7638,-1.87464,-4.13841>,
+    <37.8946,-1.87464,-6.13419>,
+    <38.2848,-1.87464,-8.09582>,
+    <38.9277,-1.87464,-9.98975>,
+    <39.8123,-1.87464,-11.7835>,
+    <40.9234,-1.87464,-13.4465>,
+    <42.2422,-1.87464,-14.9503>,
+    <43.7459,-1.87464,-16.269>,
+    <45.4089,-1.87464,-17.3802>,
+    <47.2027,-1.87464,-18.2648>,
+    <49.0966,-1.87464,-18.9077>,
+    <51.0583,-1.87464,-19.2979>,
+    <53.054,-1.87464,-19.4287>,
+    <55.0498,-1.87464,-19.2979>,
+    <57.0115,-1.87464,-18.9077>,
+    <58.9054,-1.87464,-18.2648>,
+    <60.6992,-1.87464,-17.3802>,
+    <62.3622,-1.87464,-16.269>,
+    <63.8659,-1.87464,-14.9503>,
+    <65.1846,-1.87464,-13.4465>,
+    <66.2958,-1.87464,-11.7835>,
+    <67.1804,-1.87464,-9.98975>,
+    <67.8233,-1.87464,-8.09582>,
+    <68.2135,-1.87464,-6.13419>,
+    <58.3492,-1.87464,-4.13841>,
+    <58.2164,-1.87464,-2.96013>,
+    <57.8248,-1.87464,-1.84094>,
+    <57.1939,-1.87464,-0.836953>,
+    <56.3555,-1.87464,0.00148494>,
+    <55.3515,-1.87464,0.632332>,
+    <54.2323,-1.87464,1.02395>,
+    <53.054,-1.87464,1.15671>,
+    <51.8758,-1.87464,1.02395>,
+    <50.7566,-1.87464,0.632332>,
+    <49.7526,-1.87464,0.00148494>,
+    <48.9142,-1.87464,-0.836953>,
+    <48.2833,-1.87464,-1.84094>,
+    <47.8917,-1.87464,-2.96013>,
+    <47.7589,-1.87464,-4.13841>,
+    <47.8917,-1.87464,-5.31668>,
+    <48.2833,-1.87464,-6.43587>,
+    <48.9142,-1.87464,-7.43986>,
+    <49.7526,-1.87464,-8.2783>,
+    <50.7566,-1.87464,-8.90914>,
+    <51.8758,-1.87464,-9.30077>,
+    <53.054,-1.87464,-9.43353>,
+    <54.2323,-1.87464,-9.30077>,
+    <55.3515,-1.87464,-8.90914>,
+    <56.3555,-1.87464,-8.2783>,
+    <57.1939,-1.87464,-7.43986>,
+    <57.8248,-1.87464,-6.43587>,
+    <58.2164,-1.87464,-5.31668>,
+  }
+  normal_vectors {
+    76,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+    <-0,-1,-2.2e-16>,
+  }
+  face_indices {
+    76,
+    <73,42,43>,
+    <73,43,44>,
+    <72,40,41>,
+    <72,41,42>,
+    <72,42,73>,
+    <74,44,45>,
+    <74,73,44>,
+    <71,39,40>,
+    <71,40,72>,
+    <75,74,45>,
+    <75,45,46>,
+    <75,46,47>,
+    <70,37,38>,
+    <70,38,39>,
+    <70,39,71>,
+    <48,0,1>,
+    <48,75,47>,
+    <48,47,0>,
+    <69,37,70>,
+    <69,35,36>,
+    <69,36,37>,
+    <68,35,69>,
+    <68,33,34>,
+    <68,34,35>,
+    <49,1,2>,
+    <49,2,3>,
+    <49,48,1>,
+    <67,32,33>,
+    <67,33,68>,
+    <50,3,4>,
+    <50,49,3>,
+    <51,4,5>,
+    <51,50,4>,
+    <66,32,67>,
+    <66,31,32>,
+    <6,51,5>,
+    <30,31,66>,
+    <65,30,66>,
+    <52,51,6>,
+    <7,52,6>,
+    <29,30,65>,
+    <8,53,52>,
+    <8,52,7>,
+    <28,29,65>,
+    <28,65,64>,
+    <9,54,53>,
+    <9,53,8>,
+    <27,64,63>,
+    <27,28,64>,
+    <10,54,9>,
+    <26,27,63>,
+    <11,55,54>,
+    <11,54,10>,
+    <25,63,62>,
+    <25,26,63>,
+    <12,55,11>,
+    <24,25,62>,
+    <13,55,12>,
+    <13,56,55>,
+    <23,24,62>,
+    <23,62,61>,
+    <14,56,13>,
+    <22,23,61>,
+    <15,56,14>,
+    <15,57,56>,
+    <21,61,60>,
+    <21,22,61>,
+    <16,57,15>,
+    <16,58,57>,
+    <20,21,60>,
+    <20,60,59>,
+    <17,58,16>,
+    <19,20,59>,
+    <18,19,59>,
+    <18,58,17>,
+    <18,59,58>,
+  }
+} // end of Face199
+
+// face number200 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001200 = mesh2{
+  vertex_vectors {
+    76,
+    <68.3443,1.87464,-4.13841>,
+    <68.2135,1.87464,-2.14262>,
+    <67.8233,1.87464,-0.18099>,
+    <67.1804,1.87464,1.71293>,
+    <66.2958,1.87464,3.50674>,
+    <65.1846,1.87464,5.16973>,
+    <63.8659,1.87464,6.67346>,
+    <62.3622,1.87464,7.99219>,
+    <60.6992,1.87464,9.10337>,
+    <58.9054,1.87464,9.98797>,
+    <57.0115,1.87464,10.6309>,
+    <55.0498,1.87464,11.0211>,
+    <53.054,1.87464,11.1519>,
+    <51.0583,1.87464,11.0211>,
+    <49.0966,1.87464,10.6309>,
+    <47.2027,1.87464,9.98797>,
+    <45.4089,1.87464,9.10337>,
+    <43.7459,1.87464,7.99219>,
+    <42.2422,1.87464,6.67346>,
+    <40.9234,1.87464,5.16973>,
+    <39.8123,1.87464,3.50674>,
+    <38.9277,1.87464,1.71293>,
+    <38.2848,1.87464,-0.18099>,
+    <37.8946,1.87464,-2.14262>,
+    <37.7638,1.87464,-4.13841>,
+    <37.8946,1.87464,-6.13419>,
+    <38.2848,1.87464,-8.09582>,
+    <38.9277,1.87464,-9.98975>,
+    <39.8123,1.87464,-11.7835>,
+    <40.9234,1.87464,-13.4465>,
+    <42.2422,1.87464,-14.9503>,
+    <43.7459,1.87464,-16.269>,
+    <45.4089,1.87464,-17.3802>,
+    <47.2027,1.87464,-18.2648>,
+    <49.0966,1.87464,-18.9077>,
+    <51.0583,1.87464,-19.2979>,
+    <53.054,1.87464,-19.4287>,
+    <55.0498,1.87464,-19.2979>,
+    <57.0115,1.87464,-18.9077>,
+    <58.9054,1.87464,-18.2648>,
+    <60.6992,1.87464,-17.3802>,
+    <62.3622,1.87464,-16.269>,
+    <63.8659,1.87464,-14.9503>,
+    <65.1846,1.87464,-13.4465>,
+    <66.2958,1.87464,-11.7835>,
+    <67.1804,1.87464,-9.98975>,
+    <67.8233,1.87464,-8.09582>,
+    <68.2135,1.87464,-6.13419>,
+    <58.3492,1.87464,-4.13841>,
+    <58.2164,1.87464,-2.96013>,
+    <57.8248,1.87464,-1.84094>,
+    <57.1939,1.87464,-0.836953>,
+    <56.3555,1.87464,0.00148494>,
+    <55.3515,1.87464,0.632332>,
+    <54.2323,1.87464,1.02395>,
+    <53.054,1.87464,1.15671>,
+    <51.8758,1.87464,1.02395>,
+    <50.7566,1.87464,0.632332>,
+    <49.7526,1.87464,0.00148494>,
+    <48.9142,1.87464,-0.836953>,
+    <48.2833,1.87464,-1.84094>,
+    <47.8917,1.87464,-2.96013>,
+    <47.7589,1.87464,-4.13841>,
+    <47.8917,1.87464,-5.31668>,
+    <48.2833,1.87464,-6.43587>,
+    <48.9142,1.87464,-7.43986>,
+    <49.7526,1.87464,-8.2783>,
+    <50.7566,1.87464,-8.90914>,
+    <51.8758,1.87464,-9.30077>,
+    <53.054,1.87464,-9.43353>,
+    <54.2323,1.87464,-9.30077>,
+    <55.3515,1.87464,-8.90914>,
+    <56.3555,1.87464,-8.2783>,
+    <57.1939,1.87464,-7.43986>,
+    <57.8248,1.87464,-6.43587>,
+    <58.2164,1.87464,-5.31668>,
+  }
+  normal_vectors {
+    76,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+    <-0,1,-2.2e-16>,
+  }
+  face_indices {
+    76,
+    <43,42,73>,
+    <44,43,73>,
+    <41,40,72>,
+    <42,41,72>,
+    <73,42,72>,
+    <45,44,74>,
+    <44,73,74>,
+    <40,39,71>,
+    <72,40,71>,
+    <45,74,75>,
+    <46,45,75>,
+    <47,46,75>,
+    <38,37,70>,
+    <39,38,70>,
+    <71,39,70>,
+    <1,0,48>,
+    <47,75,48>,
+    <0,47,48>,
+    <70,37,69>,
+    <36,35,69>,
+    <37,36,69>,
+    <69,35,68>,
+    <34,33,68>,
+    <35,34,68>,
+    <2,1,49>,
+    <3,2,49>,
+    <1,48,49>,
+    <33,32,67>,
+    <68,33,67>,
+    <4,3,50>,
+    <3,49,50>,
+    <5,4,51>,
+    <4,50,51>,
+    <67,32,66>,
+    <32,31,66>,
+    <5,51,6>,
+    <66,31,30>,
+    <66,30,65>,
+    <6,51,52>,
+    <6,52,7>,
+    <65,30,29>,
+    <52,53,8>,
+    <7,52,8>,
+    <65,29,28>,
+    <64,65,28>,
+    <53,54,9>,
+    <8,53,9>,
+    <63,64,27>,
+    <64,28,27>,
+    <9,54,10>,
+    <63,27,26>,
+    <54,55,11>,
+    <10,54,11>,
+    <62,63,25>,
+    <63,26,25>,
+    <11,55,12>,
+    <62,25,24>,
+    <12,55,13>,
+    <55,56,13>,
+    <62,24,23>,
+    <61,62,23>,
+    <13,56,14>,
+    <61,23,22>,
+    <14,56,15>,
+    <56,57,15>,
+    <60,61,21>,
+    <61,22,21>,
+    <15,57,16>,
+    <57,58,16>,
+    <60,21,20>,
+    <59,60,20>,
+    <16,58,17>,
+    <59,20,19>,
+    <59,19,18>,
+    <17,58,18>,
+    <58,59,18>,
+  }
+} // end of Face200
+
+// face number201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001201 = mesh2{
+  vertex_vectors {
+    58,
+    <58.3492,-5,-4.13841>,
+    <58.2164,-5,-2.96013>,
+    <57.8248,-5,-1.84094>,
+    <57.1939,-5,-0.836953>,
+    <56.3555,-5,0.00148494>,
+    <55.3515,-5,0.632332>,
+    <54.2323,-5,1.02395>,
+    <53.054,-5,1.15671>,
+    <51.8758,-5,1.02395>,
+    <50.7566,-5,0.632332>,
+    <49.7526,-5,0.00148494>,
+    <48.9142,-5,-0.836953>,
+    <48.2833,-5,-1.84094>,
+    <47.8917,-5,-2.96013>,
+    <47.7589,-5,-4.13841>,
+    <47.8917,-5,-5.31668>,
+    <48.2833,-5,-6.43587>,
+    <48.9142,-5,-7.43986>,
+    <49.7526,-5,-8.2783>,
+    <50.7566,-5,-8.90914>,
+    <51.8758,-5,-9.30077>,
+    <53.054,-5,-9.43353>,
+    <54.2323,-5,-9.30077>,
+    <55.3515,-5,-8.90914>,
+    <56.3555,-5,-8.2783>,
+    <57.1939,-5,-7.43986>,
+    <57.8248,-5,-6.43587>,
+    <58.2164,-5,-5.31668>,
+    <58.3492,-5,-4.13841>,
+    <58.3492,-1.87464,-4.13841>,
+    <58.3492,-1.87464,-4.13841>,
+    <58.2164,-1.87464,-2.96013>,
+    <57.8248,-1.87464,-1.84094>,
+    <57.1939,-1.87464,-0.836953>,
+    <56.3555,-1.87464,0.00148494>,
+    <55.3515,-1.87464,0.632332>,
+    <54.2323,-1.87464,1.02395>,
+    <53.054,-1.87464,1.15671>,
+    <51.8758,-1.87464,1.02395>,
+    <50.7566,-1.87464,0.632332>,
+    <49.7526,-1.87464,0.00148494>,
+    <48.9142,-1.87464,-0.836953>,
+    <48.2833,-1.87464,-1.84094>,
+    <47.8917,-1.87464,-2.96013>,
+    <47.7589,-1.87464,-4.13841>,
+    <47.8917,-1.87464,-5.31668>,
+    <48.2833,-1.87464,-6.43587>,
+    <48.9142,-1.87464,-7.43986>,
+    <49.7526,-1.87464,-8.2783>,
+    <50.7566,-1.87464,-8.90914>,
+    <51.8758,-1.87464,-9.30077>,
+    <53.054,-1.87464,-9.43353>,
+    <54.2323,-1.87464,-9.30077>,
+    <55.3515,-1.87464,-8.90914>,
+    <56.3555,-1.87464,-8.2783>,
+    <57.1939,-1.87464,-7.43986>,
+    <57.8248,-1.87464,-6.43587>,
+    <58.2164,-1.87464,-5.31668>,
+  }
+  normal_vectors {
+    58,
+    <1,7.34998e-24,-3.3409e-08>,
+    <0.974928,-4.89546e-17,0.222521>,
+    <0.900969,-9.54544e-17,0.433884>,
+    <0.781831,-1.37168e-16,0.62349>,
+    <0.62349,-1.72003e-16,0.781831>,
+    <0.433884,-1.98213e-16,0.900969>,
+    <0.222521,-2.14484e-16,0.974928>,
+    <2.79302e-07,-2.2e-16,1>,
+    <-0.222521,-2.14484e-16,0.974928>,
+    <-0.433883,-1.98213e-16,0.900969>,
+    <-0.62349,-1.72003e-16,0.781831>,
+    <-0.781831,-1.37168e-16,0.62349>,
+    <-0.900969,-9.54544e-17,0.433884>,
+    <-0.974928,-4.89546e-17,0.222521>,
+    <-1,7.34998e-24,-3.3409e-08>,
+    <-0.974928,4.89546e-17,-0.222521>,
+    <-0.900969,9.54544e-17,-0.433884>,
+    <-0.781831,1.37168e-16,-0.62349>,
+    <-0.62349,1.72003e-16,-0.781831>,
+    <-0.433884,1.98213e-16,-0.900969>,
+    <-0.222521,2.14484e-16,-0.974928>,
+    <2.79302e-07,2.2e-16,-1>,
+    <0.222521,2.14484e-16,-0.974928>,
+    <0.433884,1.98213e-16,-0.900969>,
+    <0.62349,1.72003e-16,-0.781831>,
+    <0.781831,1.37168e-16,-0.62349>,
+    <0.900969,9.54544e-17,-0.433884>,
+    <0.974928,4.89546e-17,-0.222521>,
+    <1,7.34998e-24,-3.3409e-08>,
+    <1,7.34998e-24,-3.3409e-08>,
+    <1,7.34998e-24,-3.3409e-08>,
+    <0.974928,-4.89546e-17,0.222521>,
+    <0.900969,-9.54544e-17,0.433884>,
+    <0.781831,-1.37168e-16,0.62349>,
+    <0.62349,-1.72003e-16,0.781831>,
+    <0.433884,-1.98213e-16,0.900969>,
+    <0.222521,-2.14484e-16,0.974928>,
+    <2.79302e-07,-2.2e-16,1>,
+    <-0.222521,-2.14484e-16,0.974928>,
+    <-0.433883,-1.98213e-16,0.900969>,
+    <-0.62349,-1.72003e-16,0.781831>,
+    <-0.781831,-1.37168e-16,0.62349>,
+    <-0.900969,-9.54544e-17,0.433884>,
+    <-0.974928,-4.89546e-17,0.222521>,
+    <-1,7.34998e-24,-3.3409e-08>,
+    <-0.974928,4.89546e-17,-0.222521>,
+    <-0.900969,9.54544e-17,-0.433884>,
+    <-0.781831,1.37168e-16,-0.62349>,
+    <-0.62349,1.72003e-16,-0.781831>,
+    <-0.433884,1.98213e-16,-0.900969>,
+    <-0.222521,2.14484e-16,-0.974928>,
+    <2.79302e-07,2.2e-16,-1>,
+    <0.222521,2.14484e-16,-0.974928>,
+    <0.433884,1.98213e-16,-0.900969>,
+    <0.62349,1.72003e-16,-0.781831>,
+    <0.781831,1.37168e-16,-0.62349>,
+    <0.900969,9.54544e-17,-0.433884>,
+    <0.974928,4.89546e-17,-0.222521>,
+  }
+  face_indices {
+    56,
+    <31,1,0>,
+    <31,0,30>,
+    <32,2,1>,
+    <32,1,31>,
+    <33,3,2>,
+    <33,2,32>,
+    <34,4,3>,
+    <34,3,33>,
+    <35,5,4>,
+    <35,4,34>,
+    <36,6,5>,
+    <36,5,35>,
+    <37,7,6>,
+    <37,6,36>,
+    <38,8,7>,
+    <38,7,37>,
+    <39,9,8>,
+    <39,8,38>,
+    <40,9,39>,
+    <40,10,9>,
+    <40,11,10>,
+    <41,11,40>,
+    <42,11,41>,
+    <42,12,11>,
+    <42,13,12>,
+    <43,13,42>,
+    <44,14,13>,
+    <44,13,43>,
+    <45,15,14>,
+    <45,14,44>,
+    <46,16,15>,
+    <46,17,16>,
+    <46,15,45>,
+    <47,17,46>,
+    <48,18,17>,
+    <48,19,18>,
+    <48,17,47>,
+    <49,19,48>,
+    <50,20,19>,
+    <50,19,49>,
+    <51,21,20>,
+    <51,20,50>,
+    <52,22,21>,
+    <52,21,51>,
+    <53,23,22>,
+    <53,22,52>,
+    <54,24,23>,
+    <54,23,53>,
+    <55,25,24>,
+    <55,24,54>,
+    <56,26,25>,
+    <56,25,55>,
+    <57,27,26>,
+    <57,26,56>,
+    <29,28,27>,
+    <29,27,57>,
+  }
+} // end of Face201
+
+// face number202 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001202 = mesh2{
+  vertex_vectors {
+    58,
+    <58.3492,5,-4.13841>,
+    <58.2164,5,-5.31668>,
+    <57.8248,5,-6.43587>,
+    <57.1939,5,-7.43986>,
+    <56.3555,5,-8.2783>,
+    <55.3515,5,-8.90914>,
+    <54.2323,5,-9.30077>,
+    <53.054,5,-9.43353>,
+    <51.8758,5,-9.30077>,
+    <50.7566,5,-8.90914>,
+    <49.7526,5,-8.2783>,
+    <48.9142,5,-7.43986>,
+    <48.2833,5,-6.43587>,
+    <47.8917,5,-5.31668>,
+    <47.7589,5,-4.13841>,
+    <47.8917,5,-2.96013>,
+    <48.2833,5,-1.84094>,
+    <48.9142,5,-0.836953>,
+    <49.7526,5,0.00148494>,
+    <50.7566,5,0.632332>,
+    <51.8758,5,1.02395>,
+    <53.054,5,1.15671>,
+    <54.2323,5,1.02395>,
+    <55.3515,5,0.632332>,
+    <56.3555,5,0.00148494>,
+    <57.1939,5,-0.836953>,
+    <57.8248,5,-1.84094>,
+    <58.2164,5,-2.96013>,
+    <58.3492,5,-4.13841>,
+    <58.3492,1.87464,-4.13841>,
+    <58.3492,1.87464,-4.13841>,
+    <58.2164,1.87464,-2.96013>,
+    <57.8248,1.87464,-1.84094>,
+    <57.1939,1.87464,-0.836953>,
+    <56.3555,1.87464,0.00148494>,
+    <55.3515,1.87464,0.632332>,
+    <54.2323,1.87464,1.02395>,
+    <53.054,1.87464,1.15671>,
+    <51.8758,1.87464,1.02395>,
+    <50.7566,1.87464,0.632332>,
+    <49.7526,1.87464,0.00148494>,
+    <48.9142,1.87464,-0.836953>,
+    <48.2833,1.87464,-1.84094>,
+    <47.8917,1.87464,-2.96013>,
+    <47.7589,1.87464,-4.13841>,
+    <47.8917,1.87464,-5.31668>,
+    <48.2833,1.87464,-6.43587>,
+    <48.9142,1.87464,-7.43986>,
+    <49.7526,1.87464,-8.2783>,
+    <50.7566,1.87464,-8.90914>,
+    <51.8758,1.87464,-9.30077>,
+    <53.054,1.87464,-9.43353>,
+    <54.2323,1.87464,-9.30077>,
+    <55.3515,1.87464,-8.90914>,
+    <56.3555,1.87464,-8.2783>,
+    <57.1939,1.87464,-7.43986>,
+    <57.8248,1.87464,-6.43587>,
+    <58.2164,1.87464,-5.31668>,
+  }
+  normal_vectors {
+    58,
+    <1,-7.34998e-24,-3.3409e-08>,
+    <0.974928,-4.89546e-17,-0.222521>,
+    <0.900969,-9.54544e-17,-0.433884>,
+    <0.781831,-1.37168e-16,-0.62349>,
+    <0.62349,-1.72003e-16,-0.781831>,
+    <0.433884,-1.98213e-16,-0.900969>,
+    <0.222521,-2.14484e-16,-0.974928>,
+    <2.79302e-07,-2.2e-16,-1>,
+    <-0.222521,-2.14484e-16,-0.974928>,
+    <-0.433884,-1.98213e-16,-0.900969>,
+    <-0.62349,-1.72003e-16,-0.781831>,
+    <-0.781831,-1.37168e-16,-0.62349>,
+    <-0.900969,-9.54544e-17,-0.433884>,
+    <-0.974928,-4.89546e-17,-0.222521>,
+    <-1,-7.34998e-24,-3.3409e-08>,
+    <-0.974928,4.89546e-17,0.222521>,
+    <-0.900969,9.54544e-17,0.433884>,
+    <-0.781831,1.37168e-16,0.62349>,
+    <-0.62349,1.72003e-16,0.781831>,
+    <-0.433883,1.98213e-16,0.900969>,
+    <-0.222521,2.14484e-16,0.974928>,
+    <2.79302e-07,2.2e-16,1>,
+    <0.222521,2.14484e-16,0.974928>,
+    <0.433884,1.98213e-16,0.900969>,
+    <0.62349,1.72003e-16,0.781831>,
+    <0.781831,1.37168e-16,0.62349>,
+    <0.900969,9.54544e-17,0.433884>,
+    <0.974928,4.89546e-17,0.222521>,
+    <1,-7.34998e-24,-3.3409e-08>,
+    <1,-7.34998e-24,-3.3409e-08>,
+    <1,-7.34998e-24,-3.3409e-08>,
+    <0.974928,4.89546e-17,0.222521>,
+    <0.900969,9.54544e-17,0.433884>,
+    <0.781831,1.37168e-16,0.62349>,
+    <0.62349,1.72003e-16,0.781831>,
+    <0.433884,1.98213e-16,0.900969>,
+    <0.222521,2.14484e-16,0.974928>,
+    <2.79302e-07,2.2e-16,1>,
+    <-0.222521,2.14484e-16,0.974928>,
+    <-0.433883,1.98213e-16,0.900969>,
+    <-0.62349,1.72003e-16,0.781831>,
+    <-0.781831,1.37168e-16,0.62349>,
+    <-0.900969,9.54544e-17,0.433884>,
+    <-0.974928,4.89546e-17,0.222521>,
+    <-1,-7.34998e-24,-3.3409e-08>,
+    <-0.974928,-4.89546e-17,-0.222521>,
+    <-0.900969,-9.54544e-17,-0.433884>,
+    <-0.781831,-1.37168e-16,-0.62349>,
+    <-0.62349,-1.72003e-16,-0.781831>,
+    <-0.433884,-1.98213e-16,-0.900969>,
+    <-0.222521,-2.14484e-16,-0.974928>,
+    <2.79302e-07,-2.2e-16,-1>,
+    <0.222521,-2.14484e-16,-0.974928>,
+    <0.433884,-1.98213e-16,-0.900969>,
+    <0.62349,-1.72003e-16,-0.781831>,
+    <0.781831,-1.37168e-16,-0.62349>,
+    <0.900969,-9.54544e-17,-0.433884>,
+    <0.974928,-4.89546e-17,-0.222521>,
+  }
+  face_indices {
+    56,
+    <28,27,31>,
+    <30,28,31>,
+    <26,25,32>,
+    <27,26,32>,
+    <31,27,32>,
+    <32,25,33>,
+    <25,24,34>,
+    <33,25,34>,
+    <23,22,35>,
+    <24,23,35>,
+    <34,24,35>,
+    <35,22,36>,
+    <22,21,37>,
+    <36,22,37>,
+    <21,20,38>,
+    <37,21,38>,
+    <20,19,39>,
+    <38,20,39>,
+    <39,19,40>,
+    <19,18,40>,
+    <40,18,41>,
+    <17,16,41>,
+    <18,17,41>,
+    <41,16,42>,
+    <16,15,42>,
+    <42,15,43>,
+    <15,14,44>,
+    <43,15,44>,
+    <44,14,45>,
+    <14,13,45>,
+    <13,12,46>,
+    <45,13,46>,
+    <12,11,47>,
+    <46,12,47>,
+    <11,10,48>,
+    <47,11,48>,
+    <10,9,49>,
+    <48,10,49>,
+    <9,8,50>,
+    <49,9,50>,
+    <8,7,51>,
+    <50,8,51>,
+    <6,5,52>,
+    <7,6,52>,
+    <51,7,52>,
+    <5,4,53>,
+    <52,5,53>,
+    <53,4,54>,
+    <3,2,55>,
+    <4,3,55>,
+    <54,4,55>,
+    <55,2,56>,
+    <1,0,57>,
+    <2,1,57>,
+    <56,2,57>,
+    <57,0,29>,
+  }
+} // end of Face202
+
+// face number203 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001203 = mesh2{
+  vertex_vectors {
+    54,
+    <58.3492,-5,-4.13841>,
+    <58.2164,-5,-2.96013>,
+    <57.8248,-5,-1.84094>,
+    <57.1939,-5,-0.836953>,
+    <56.3555,-5,0.00148494>,
+    <55.3515,-5,0.632332>,
+    <54.2323,-5,1.02395>,
+    <53.054,-5,1.15671>,
+    <51.8758,-5,1.02395>,
+    <50.7566,-5,0.632332>,
+    <49.7526,-5,0.00148494>,
+    <48.9142,-5,-0.836953>,
+    <48.2833,-5,-1.84094>,
+    <47.8917,-5,-2.96013>,
+    <47.7589,-5,-4.13841>,
+    <47.8917,-5,-5.31668>,
+    <48.2833,-5,-6.43587>,
+    <48.9142,-5,-7.43986>,
+    <49.7526,-5,-8.2783>,
+    <50.7566,-5,-8.90914>,
+    <51.8758,-5,-9.30077>,
+    <53.054,-5,-9.43353>,
+    <54.2323,-5,-9.30077>,
+    <55.3515,-5,-8.90914>,
+    <56.3555,-5,-8.2783>,
+    <57.1939,-5,-7.43986>,
+    <57.8248,-5,-6.43587>,
+    <58.2164,-5,-5.31668>,
+    <56.054,-5,-4.13841>,
+    <55.9669,-5,-3.42046>,
+    <55.7104,-5,-2.74424>,
+    <55.2996,-5,-2.14904>,
+    <54.7582,-5,-1.66945>,
+    <54.1179,-5,-1.33336>,
+    <53.4157,-5,-1.16028>,
+    <52.6924,-5,-1.16028>,
+    <51.9902,-5,-1.33336>,
+    <51.3498,-5,-1.66945>,
+    <50.8085,-5,-2.14904>,
+    <50.3977,-5,-2.74424>,
+    <50.1412,-5,-3.42046>,
+    <50.054,-5,-4.13841>,
+    <50.1412,-5,-4.85635>,
+    <50.3977,-5,-5.53258>,
+    <50.8085,-5,-6.12777>,
+    <51.3498,-5,-6.60736>,
+    <51.9902,-5,-6.94346>,
+    <52.6924,-5,-7.11653>,
+    <53.4157,-5,-7.11653>,
+    <54.1179,-5,-6.94346>,
+    <54.7582,-5,-6.60736>,
+    <55.2996,-5,-6.12777>,
+    <55.7104,-5,-5.53258>,
+    <55.9669,-5,-4.85635>,
+  }
+  normal_vectors {
+    54,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+    <-0,-1,0>,
+  }
+  face_indices {
+    54,
+    <24,25,51>,
+    <23,24,50>,
+    <24,51,50>,
+    <25,26,52>,
+    <51,25,52>,
+    <22,23,49>,
+    <23,50,49>,
+    <26,27,53>,
+    <52,26,53>,
+    <21,22,48>,
+    <22,49,48>,
+    <0,1,28>,
+    <27,0,28>,
+    <53,27,28>,
+    <20,21,47>,
+    <21,48,47>,
+    <1,2,29>,
+    <28,1,29>,
+    <19,20,46>,
+    <20,47,46>,
+    <29,2,30>,
+    <30,2,3>,
+    <18,19,45>,
+    <19,46,45>,
+    <30,3,31>,
+    <18,45,44>,
+    <18,44,17>,
+    <32,31,4>,
+    <31,3,4>,
+    <17,44,43>,
+    <17,43,16>,
+    <43,42,16>,
+    <32,4,5>,
+    <33,32,5>,
+    <16,42,15>,
+    <42,41,15>,
+    <33,5,6>,
+    <34,33,6>,
+    <15,41,14>,
+    <34,6,7>,
+    <35,34,7>,
+    <36,35,8>,
+    <35,7,8>,
+    <41,40,13>,
+    <14,41,13>,
+    <37,36,9>,
+    <36,8,9>,
+    <40,39,12>,
+    <13,40,12>,
+    <38,37,10>,
+    <37,9,10>,
+    <39,38,11>,
+    <12,39,11>,
+    <38,10,11>,
+  }
+} // end of Face203
+
+// face number204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001204 = mesh2{
+  vertex_vectors {
+    54,
+    <58.3492,5,-4.13841>,
+    <58.2164,5,-5.31668>,
+    <57.8248,5,-6.43587>,
+    <57.1939,5,-7.43986>,
+    <56.3555,5,-8.2783>,
+    <55.3515,5,-8.90914>,
+    <54.2323,5,-9.30077>,
+    <53.054,5,-9.43353>,
+    <51.8758,5,-9.30077>,
+    <50.7566,5,-8.90914>,
+    <49.7526,5,-8.2783>,
+    <48.9142,5,-7.43986>,
+    <48.2833,5,-6.43587>,
+    <47.8917,5,-5.31668>,
+    <47.7589,5,-4.13841>,
+    <47.8917,5,-2.96013>,
+    <48.2833,5,-1.84094>,
+    <48.9142,5,-0.836953>,
+    <49.7526,5,0.00148494>,
+    <50.7566,5,0.632332>,
+    <51.8758,5,1.02395>,
+    <53.054,5,1.15671>,
+    <54.2323,5,1.02395>,
+    <55.3515,5,0.632332>,
+    <56.3555,5,0.00148494>,
+    <57.1939,5,-0.836953>,
+    <57.8248,5,-1.84094>,
+    <58.2164,5,-2.96013>,
+    <56.054,5,-4.13841>,
+    <55.9669,5,-3.42046>,
+    <55.7104,5,-2.74424>,
+    <55.2996,5,-2.14904>,
+    <54.7582,5,-1.66945>,
+    <54.1179,5,-1.33336>,
+    <53.4157,5,-1.16028>,
+    <52.6924,5,-1.16028>,
+    <51.9902,5,-1.33336>,
+    <51.3498,5,-1.66945>,
+    <50.8085,5,-2.14904>,
+    <50.3977,5,-2.74424>,
+    <50.1412,5,-3.42046>,
+    <50.054,5,-4.13841>,
+    <50.1412,5,-4.85635>,
+    <50.3977,5,-5.53258>,
+    <50.8085,5,-6.12777>,
+    <51.3498,5,-6.60736>,
+    <51.9902,5,-6.94346>,
+    <52.6924,5,-7.11653>,
+    <53.4157,5,-7.11653>,
+    <54.1179,5,-6.94346>,
+    <54.7582,5,-6.60736>,
+    <55.2996,5,-6.12777>,
+    <55.7104,5,-5.53258>,
+    <55.9669,5,-4.85635>,
+  }
+  normal_vectors {
+    54,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+    <0,1,-0>,
+  }
+  face_indices {
+    54,
+    <51,3,4>,
+    <50,4,5>,
+    <50,51,4>,
+    <52,2,3>,
+    <52,3,51>,
+    <49,5,6>,
+    <49,50,5>,
+    <53,1,2>,
+    <53,2,52>,
+    <48,6,7>,
+    <48,49,6>,
+    <28,0,1>,
+    <28,27,0>,
+    <28,1,53>,
+    <47,7,8>,
+    <47,48,7>,
+    <29,26,27>,
+    <29,27,28>,
+    <46,8,9>,
+    <46,47,8>,
+    <30,26,29>,
+    <25,26,30>,
+    <45,9,10>,
+    <45,46,9>,
+    <31,25,30>,
+    <44,45,10>,
+    <11,44,10>,
+    <24,31,32>,
+    <24,25,31>,
+    <43,44,11>,
+    <12,43,11>,
+    <12,42,43>,
+    <23,24,32>,
+    <23,32,33>,
+    <13,42,12>,
+    <13,41,42>,
+    <22,23,33>,
+    <22,33,34>,
+    <14,41,13>,
+    <21,22,34>,
+    <21,34,35>,
+    <15,40,41>,
+    <15,41,14>,
+    <20,35,36>,
+    <20,21,35>,
+    <16,39,40>,
+    <16,40,15>,
+    <19,36,37>,
+    <19,20,36>,
+    <17,38,39>,
+    <17,39,16>,
+    <18,37,38>,
+    <18,19,37>,
+    <18,38,17>,
+  }
+} // end of Face204
+
+// face number205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001205 = mesh2{
+  vertex_vectors {
+    54,
+    <56.054,5,-4.13841>,
+    <55.9669,5,-3.42046>,
+    <55.7104,5,-2.74424>,
+    <55.2996,5,-2.14904>,
+    <54.7582,5,-1.66945>,
+    <54.1179,5,-1.33336>,
+    <53.4157,5,-1.16028>,
+    <52.6924,5,-1.16028>,
+    <51.9902,5,-1.33336>,
+    <51.3498,5,-1.66945>,
+    <50.8085,5,-2.14904>,
+    <50.3977,5,-2.74424>,
+    <50.1412,5,-3.42046>,
+    <50.054,5,-4.13841>,
+    <50.1412,5,-4.85635>,
+    <50.3977,5,-5.53258>,
+    <50.8085,5,-6.12777>,
+    <51.3498,5,-6.60736>,
+    <51.9902,5,-6.94346>,
+    <52.6924,5,-7.11653>,
+    <53.4157,5,-7.11653>,
+    <54.1179,5,-6.94346>,
+    <54.7582,5,-6.60736>,
+    <55.2996,5,-6.12777>,
+    <55.7104,5,-5.53258>,
+    <55.9669,5,-4.85635>,
+    <56.054,5,-4.13841>,
+    <56.054,-5,-4.13841>,
+    <55.9669,-5,-3.42046>,
+    <55.7104,-5,-2.74424>,
+    <55.2996,-5,-2.14904>,
+    <54.7582,-5,-1.66945>,
+    <54.1179,-5,-1.33336>,
+    <53.4157,-5,-1.16028>,
+    <52.6924,-5,-1.16028>,
+    <51.9902,-5,-1.33336>,
+    <51.3498,-5,-1.66945>,
+    <50.8085,-5,-2.14904>,
+    <50.3977,-5,-2.74424>,
+    <50.1412,-5,-3.42046>,
+    <50.054,-5,-4.13841>,
+    <50.1412,-5,-4.85635>,
+    <50.3977,-5,-5.53258>,
+    <50.8085,-5,-6.12777>,
+    <51.3498,-5,-6.60736>,
+    <51.9902,-5,-6.94346>,
+    <52.6924,-5,-7.11653>,
+    <53.4157,-5,-7.11653>,
+    <54.1179,-5,-6.94346>,
+    <54.7582,-5,-6.60736>,
+    <55.2996,-5,-6.12777>,
+    <55.7104,-5,-5.53258>,
+    <55.9669,-5,-4.85635>,
+    <56.054,-5,-4.13841>,
+  }
+  normal_vectors {
+    54,
+    <-1,-0,5.89682e-08>,
+    <-0.970942,0,-0.239316>,
+    <-0.885456,0,-0.464723>,
+    <-0.748511,0,-0.663123>,
+    <-0.568065,0,-0.822984>,
+    <-0.354605,0,-0.935016>,
+    <-0.120537,0,-0.992709>,
+    <0.120536,-0,-0.992709>,
+    <0.354605,-0,-0.935016>,
+    <0.568065,-0,-0.822984>,
+    <0.748511,-0,-0.663123>,
+    <0.885456,-0,-0.464723>,
+    <0.970942,-0,-0.239316>,
+    <1,-0,5.89682e-08>,
+    <0.970942,-0,0.239316>,
+    <0.885456,-0,0.464723>,
+    <0.748511,-0,0.663123>,
+    <0.568065,-0,0.822984>,
+    <0.354605,-0,0.935016>,
+    <0.120536,-0,0.992709>,
+    <-0.120537,-0,0.992709>,
+    <-0.354605,-0,0.935016>,
+    <-0.568065,-0,0.822984>,
+    <-0.74851,-0,0.663123>,
+    <-0.885456,-0,0.464723>,
+    <-0.970942,-0,0.239316>,
+    <-1,-0,5.89682e-08>,
+    <-1,-0,5.89682e-08>,
+    <-0.970942,0,-0.239316>,
+    <-0.885456,0,-0.464723>,
+    <-0.748511,0,-0.663123>,
+    <-0.568065,0,-0.822984>,
+    <-0.354605,0,-0.935016>,
+    <-0.120537,0,-0.992709>,
+    <0.120536,-0,-0.992709>,
+    <0.354605,-0,-0.935016>,
+    <0.568065,-0,-0.822984>,
+    <0.748511,-0,-0.663123>,
+    <0.885456,-0,-0.464723>,
+    <0.970942,-0,-0.239316>,
+    <1,-0,5.89682e-08>,
+    <0.970942,-0,0.239316>,
+    <0.885456,-0,0.464723>,
+    <0.748511,-0,0.663123>,
+    <0.568065,-0,0.822984>,
+    <0.354605,-0,0.935016>,
+    <0.120536,-0,0.992709>,
+    <-0.120537,-0,0.992709>,
+    <-0.354605,-0,0.935016>,
+    <-0.568065,-0,0.822984>,
+    <-0.74851,-0,0.663123>,
+    <-0.885456,-0,0.464723>,
+    <-0.970942,-0,0.239316>,
+    <-1,-0,5.89682e-08>,
+  }
+  face_indices {
+    52,
+    <0,27,1>,
+    <27,28,1>,
+    <28,29,2>,
+    <1,28,2>,
+    <29,30,3>,
+    <30,31,3>,
+    <2,29,3>,
+    <3,31,4>,
+    <31,32,5>,
+    <4,31,5>,
+    <32,33,6>,
+    <5,32,6>,
+    <33,34,7>,
+    <6,33,7>,
+    <34,35,8>,
+    <7,34,8>,
+    <35,36,9>,
+    <36,37,9>,
+    <8,35,9>,
+    <9,37,10>,
+    <10,37,11>,
+    <37,38,11>,
+    <11,38,12>,
+    <38,39,12>,
+    <12,39,13>,
+    <39,40,13>,
+    <13,40,14>,
+    <40,41,14>,
+    <14,41,15>,
+    <41,42,15>,
+    <15,42,16>,
+    <42,43,16>,
+    <16,43,17>,
+    <43,44,17>,
+    <17,44,18>,
+    <44,45,18>,
+    <18,45,19>,
+    <45,46,19>,
+    <19,46,20>,
+    <46,47,20>,
+    <20,47,21>,
+    <47,48,21>,
+    <21,48,22>,
+    <48,49,22>,
+    <22,49,23>,
+    <49,50,23>,
+    <23,50,24>,
+    <50,51,24>,
+    <51,52,25>,
+    <52,53,25>,
+    <24,51,25>,
+    <25,53,26>,
+  }
+} // end of Face205
+
+
+
+// Declare all together +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#declare Pov_Body001 = union {
+mesh2{ Pov_Body0011}
+mesh2{ Pov_Body0012}
+mesh2{ Pov_Body0013}
+mesh2{ Pov_Body0014}
+mesh2{ Pov_Body0015}
+mesh2{ Pov_Body0016}
+mesh2{ Pov_Body0017}
+mesh2{ Pov_Body0018}
+mesh2{ Pov_Body0019}
+mesh2{ Pov_Body00110}
+mesh2{ Pov_Body00111}
+mesh2{ Pov_Body00112}
+mesh2{ Pov_Body00113}
+mesh2{ Pov_Body00114}
+mesh2{ Pov_Body00115}
+mesh2{ Pov_Body00116}
+mesh2{ Pov_Body00117}
+mesh2{ Pov_Body00118}
+mesh2{ Pov_Body00119}
+mesh2{ Pov_Body00120}
+mesh2{ Pov_Body00121}
+mesh2{ Pov_Body00122}
+mesh2{ Pov_Body00123}
+mesh2{ Pov_Body00124}
+mesh2{ Pov_Body00125}
+mesh2{ Pov_Body00126}
+mesh2{ Pov_Body00127}
+mesh2{ Pov_Body00128}
+mesh2{ Pov_Body00129}
+mesh2{ Pov_Body00130}
+mesh2{ Pov_Body00131}
+mesh2{ Pov_Body00132}
+mesh2{ Pov_Body00133}
+mesh2{ Pov_Body00134}
+mesh2{ Pov_Body00135}
+mesh2{ Pov_Body00136}
+mesh2{ Pov_Body00137}
+mesh2{ Pov_Body00138}
+mesh2{ Pov_Body00139}
+mesh2{ Pov_Body00140}
+mesh2{ Pov_Body00141}
+mesh2{ Pov_Body00142}
+mesh2{ Pov_Body00143}
+mesh2{ Pov_Body00144}
+mesh2{ Pov_Body00145}
+mesh2{ Pov_Body00146}
+mesh2{ Pov_Body00147}
+mesh2{ Pov_Body00148}
+mesh2{ Pov_Body00149}
+mesh2{ Pov_Body00150}
+mesh2{ Pov_Body00151}
+mesh2{ Pov_Body00152}
+mesh2{ Pov_Body00153}
+mesh2{ Pov_Body00154}
+mesh2{ Pov_Body00155}
+mesh2{ Pov_Body00156}
+mesh2{ Pov_Body00157}
+mesh2{ Pov_Body00158}
+mesh2{ Pov_Body00159}
+mesh2{ Pov_Body00160}
+mesh2{ Pov_Body00161}
+mesh2{ Pov_Body00162}
+mesh2{ Pov_Body00163}
+mesh2{ Pov_Body00164}
+mesh2{ Pov_Body00165}
+mesh2{ Pov_Body00166}
+mesh2{ Pov_Body00167}
+mesh2{ Pov_Body00168}
+mesh2{ Pov_Body00169}
+mesh2{ Pov_Body00170}
+mesh2{ Pov_Body00171}
+mesh2{ Pov_Body00172}
+mesh2{ Pov_Body00173}
+mesh2{ Pov_Body00174}
+mesh2{ Pov_Body00175}
+mesh2{ Pov_Body00176}
+mesh2{ Pov_Body00177}
+mesh2{ Pov_Body00178}
+mesh2{ Pov_Body00179}
+mesh2{ Pov_Body00180}
+mesh2{ Pov_Body00181}
+mesh2{ Pov_Body00182}
+mesh2{ Pov_Body00183}
+mesh2{ Pov_Body00184}
+mesh2{ Pov_Body00185}
+mesh2{ Pov_Body00186}
+mesh2{ Pov_Body00187}
+mesh2{ Pov_Body00188}
+mesh2{ Pov_Body00189}
+mesh2{ Pov_Body00190}
+mesh2{ Pov_Body00191}
+mesh2{ Pov_Body00192}
+mesh2{ Pov_Body00193}
+mesh2{ Pov_Body00194}
+mesh2{ Pov_Body00195}
+mesh2{ Pov_Body00196}
+mesh2{ Pov_Body00197}
+mesh2{ Pov_Body00198}
+mesh2{ Pov_Body00199}
+mesh2{ Pov_Body001100}
+mesh2{ Pov_Body001101}
+mesh2{ Pov_Body001102}
+mesh2{ Pov_Body001103}
+mesh2{ Pov_Body001104}
+mesh2{ Pov_Body001105}
+mesh2{ Pov_Body001106}
+mesh2{ Pov_Body001107}
+mesh2{ Pov_Body001108}
+mesh2{ Pov_Body001109}
+mesh2{ Pov_Body001110}
+mesh2{ Pov_Body001111}
+mesh2{ Pov_Body001112}
+mesh2{ Pov_Body001113}
+mesh2{ Pov_Body001114}
+mesh2{ Pov_Body001115}
+mesh2{ Pov_Body001116}
+mesh2{ Pov_Body001117}
+mesh2{ Pov_Body001118}
+mesh2{ Pov_Body001119}
+mesh2{ Pov_Body001120}
+mesh2{ Pov_Body001121}
+mesh2{ Pov_Body001122}
+mesh2{ Pov_Body001123}
+mesh2{ Pov_Body001124}
+mesh2{ Pov_Body001125}
+mesh2{ Pov_Body001126}
+mesh2{ Pov_Body001127}
+mesh2{ Pov_Body001128}
+mesh2{ Pov_Body001129}
+mesh2{ Pov_Body001130}
+mesh2{ Pov_Body001131}
+mesh2{ Pov_Body001132}
+mesh2{ Pov_Body001133}
+mesh2{ Pov_Body001134}
+mesh2{ Pov_Body001135}
+mesh2{ Pov_Body001136}
+mesh2{ Pov_Body001137}
+mesh2{ Pov_Body001138}
+mesh2{ Pov_Body001139}
+mesh2{ Pov_Body001140}
+mesh2{ Pov_Body001141}
+mesh2{ Pov_Body001142}
+mesh2{ Pov_Body001143}
+mesh2{ Pov_Body001144}
+mesh2{ Pov_Body001145}
+mesh2{ Pov_Body001146}
+mesh2{ Pov_Body001147}
+mesh2{ Pov_Body001148}
+mesh2{ Pov_Body001149}
+mesh2{ Pov_Body001150}
+mesh2{ Pov_Body001151}
+mesh2{ Pov_Body001152}
+mesh2{ Pov_Body001153}
+mesh2{ Pov_Body001154}
+mesh2{ Pov_Body001155}
+mesh2{ Pov_Body001156}
+mesh2{ Pov_Body001157}
+mesh2{ Pov_Body001158}
+mesh2{ Pov_Body001159}
+mesh2{ Pov_Body001160}
+mesh2{ Pov_Body001161}
+mesh2{ Pov_Body001162}
+mesh2{ Pov_Body001163}
+mesh2{ Pov_Body001164}
+mesh2{ Pov_Body001165}
+mesh2{ Pov_Body001166}
+mesh2{ Pov_Body001167}
+mesh2{ Pov_Body001168}
+mesh2{ Pov_Body001169}
+mesh2{ Pov_Body001170}
+mesh2{ Pov_Body001171}
+mesh2{ Pov_Body001172}
+mesh2{ Pov_Body001173}
+mesh2{ Pov_Body001174}
+mesh2{ Pov_Body001175}
+mesh2{ Pov_Body001176}
+mesh2{ Pov_Body001177}
+mesh2{ Pov_Body001178}
+mesh2{ Pov_Body001179}
+mesh2{ Pov_Body001180}
+mesh2{ Pov_Body001181}
+mesh2{ Pov_Body001182}
+mesh2{ Pov_Body001183}
+mesh2{ Pov_Body001184}
+mesh2{ Pov_Body001185}
+mesh2{ Pov_Body001186}
+mesh2{ Pov_Body001187}
+mesh2{ Pov_Body001188}
+mesh2{ Pov_Body001189}
+mesh2{ Pov_Body001190}
+mesh2{ Pov_Body001191}
+mesh2{ Pov_Body001192}
+mesh2{ Pov_Body001193}
+mesh2{ Pov_Body001194}
+mesh2{ Pov_Body001195}
+mesh2{ Pov_Body001196}
+mesh2{ Pov_Body001197}
+mesh2{ Pov_Body001198}
+mesh2{ Pov_Body001199}
+mesh2{ Pov_Body001200}
+mesh2{ Pov_Body001201}
+mesh2{ Pov_Body001202}
+mesh2{ Pov_Body001203}
+mesh2{ Pov_Body001204}
+mesh2{ Pov_Body001205}
+}
+// instance to render
+object {
+  Pov_Body001
+  texture {
+    Chrome_Metal
+  }
+}
+
diff --git a/blog/20220131/_render/gears2_256x171.jpg b/blog/20220131/_render/gears2_256x171.jpg
new file mode 100644 (file)
index 0000000..5b53cca
Binary files /dev/null and b/blog/20220131/_render/gears2_256x171.jpg differ
diff --git a/blog/20220131/_render/gears2_256x171.png b/blog/20220131/_render/gears2_256x171.png
new file mode 100644 (file)
index 0000000..6637923
Binary files /dev/null and b/blog/20220131/_render/gears2_256x171.png differ
diff --git a/blog/20220131/_render/gears2_768x512.jpg b/blog/20220131/_render/gears2_768x512.jpg
new file mode 100644 (file)
index 0000000..a903e60
Binary files /dev/null and b/blog/20220131/_render/gears2_768x512.jpg differ
diff --git a/blog/20220131/_render/gears2_768x512.png b/blog/20220131/_render/gears2_768x512.png
new file mode 100644 (file)
index 0000000..dc537c4
Binary files /dev/null and b/blog/20220131/_render/gears2_768x512.png differ
diff --git a/blog/20220131/_render/n.sh b/blog/20220131/_render/n.sh
new file mode 100755 (executable)
index 0000000..abb02a0
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+povray +A Antialias_Threshold=0 +W768 +H512 +Ogears2_768x512 gears2.pov
+convert gears2_768x512.png gears2_768x512.jpg
+
+povray +A Antialias_Threshold=0 +W256 +H171 +Ogears2_256x171 gears2.pov
+convert gears2_256x171.png gears2_256x171.jpg
diff --git a/blog/20220131/a b/blog/20220131/a
new file mode 100644 (file)
index 0000000..c12edde
--- /dev/null
@@ -0,0 +1,255 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload draft details if any
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  let contact_draft
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+
+    placeholder = await get_placeholder(env, session)
+
+    contact_draft = await session.get_json('contact_draft')
+    if (contact_draft === undefined || env.now >= contact_draft.expires)
+      contact_draft = null
+
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'Do you require more information, or assistance with integrating the projects on this site? We’d love to hear from you.'}
+
+      form#form {
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="given-names") {'Given names *'}
+              input.form-control#given-names(type="text" value=contact_draft ? contact_draft.given_names : '' placeholder=placeholder.given_names required maxlength=256) {}
+              div.invalid-feedback {'Please enter a name we can address you by.'}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="family-name") {'Family name'}
+              input.form-control#family-name(type="text" value=contact_draft ? contact_draft.family_name : '' placeholder=placeholder.family_name maxlength=256) {}
+            }
+          }
+        }
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="company") {'Company'}
+              input.form-control#company(type="company" value=contact_draft ? contact_draft.company : '' placeholder=placeholder.company maxlength=256) {}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="email") {'Email *'}
+              input.form-control#email(type="email" value=contact_draft ? contact_draft.email : '' placeholder=placeholder.email required maxlength=256) {}
+              div.invalid-feedback {'Please enter an email address we can contact you on.'}
+            }
+          }
+        }
+        div.row {
+          div.col-md-12 {
+            div.form-group {
+              label.form-label(for="message1") {'Message *'}
+              textarea.form-control#message1(placeholder="I would like to..." required rows=6 maxlength=65536) {
+                if (contact_draft)
+                  `${contact_draft.message}`
+              }
+              div.invalid-feedback {'Please let us know your application or question.'}
+            }
+          }
+        }
+      }
+
+      if (contact_draft !== null)
+        button.btn.btn-success#send-enquiry(type="button") {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_envelope)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Send enquiry'
+        }
+      else
+        button.btn.btn-success#send-enquiry(type="button" disabled) {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_envelope)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Send enquiry'
+        }
+
+      p.'mt-3'.mb-0#message(hidden) {}
+
+      p.text-muted.mt-3 {'* These fields are required.'}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_company = document.getElementById('company')
+            let id_cross = document.getElementById('cross')
+            let id_email = document.getElementById('email')
+            let id_family_name = document.getElementById('family-name')
+            let id_form = document.getElementById('form')
+            let id_given_names = document.getElementById('given-names')
+            let id_icon = document.getElementById('icon')
+            let id_message = document.getElementById('message')
+            let id_message1 = document.getElementById('message1')
+            let id_send_enquiry = document.getElementById('send-enquiry')
+            let id_spinner = document.getElementById('spinner')
+            let id_tick = document.getElementById('tick')
+
+            let input_semaphore = new BinarySemaphore(false)
+            ;(
+              async () => {
+                while (true) {
+                  await input_semaphore.acquire()
+                  await new Promise(resolve => setTimeout(resolve, 3000))
+                  input_semaphore.try_acquire()
+                  await api_call(
+                    '/api/contact/set_draft.json',
+                    id_given_names.value.length === 0 &&
+                      id_family_name.value.length === 0 &&
+                      id_company.value.length === 0 &&
+                      id_email.value.length === 0 &&
+                      id_message1.value.length === 0 ?
+                      null :
+                      {
+                        given_names: id_given_names.value.slice(0, 256),
+                        family_name: id_family_name.value.slice(0, 256),
+                        company: id_company.value.slice(0, 256),
+                        email: id_email.value.slice(0, 256).toLowerCase(),
+                        message: id_message1.value.slice(0, 65536)
+                      }
+                  )
+                }
+              }
+            )() // ignore returned promise (start thread)
+
+            let edited = () => {
+              input_semaphore.release()
+
+              id_send_enquiry.disabled =
+                id_given_names.value.length === 0 &&
+                  id_family_name.value.length === 0 &&
+                  id_company.value.length === 0 &&
+                  id_email.value.length === 0 &&
+                  id_message1.value.length === 0
+              id_icon.hidden = false
+              id_tick.hidden = true
+              id_cross.hidden = true
+              id_spinner.hidden = true
+              id_message.hidden = true
+            }
+
+            id_given_names.addEventListener('input', edited)
+            id_family_name.addEventListener('input', edited)
+            id_company.addEventListener('input', edited)
+            id_email.addEventListener('input', edited)
+            id_message1.addEventListener('input', edited)
+
+            id_send_enquiry.addEventListener(
+              'click',
+              async () => {
+                id_icon.hidden = false
+                id_tick.hidden = true
+                id_cross.hidden = true
+                id_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_message.hidden = true
+
+                if (!id_form.checkValidity()) {
+                  id_form.classList.add('was-validated');
+
+                  id_icon.hidden = true
+                  id_cross.hidden = false
+                  return
+                }
+                id_form.classList.remove('was-validated');
+
+                id_icon.hidden = true
+                id_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/contact/send_enquiry.json',
+                    {
+                      given_names: id_given_names.value.slice(0, 256),
+                      family_name: id_family_name.value.slice(0, 256),
+                      company: id_company.value.slice(0, 256),
+                      email: id_email.value.slice(0, 256).toLowerCase(),
+                      message: id_message1.value.slice(0, 65536)
+                    }
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_cross.hidden = false
+                  id_spinner.hidden = true
+
+                  id_message.textContent = problem.detail
+                  //id_message.classList.remove('text-success')
+                  id_message.classList.add('text-danger')
+                  id_message.hidden = false
+                  return
+                }
+                id_tick.hidden = false
+                id_spinner.hidden = true
+                id_message.textContent = 'We have received your enquiry. We will be in touch as soon as possible.'
+                //id_message.classList.add('text-success')
+                id_message.classList.remove('text-danger')
+                id_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/blog/20220131/fa_server.svg b/blog/20220131/fa_server.svg
new file mode 100644 (file)
index 0000000..869a391
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"/></svg>
\ No newline at end of file
diff --git a/blog/20220131/factors.py b/blog/20220131/factors.py
new file mode 100755 (executable)
index 0000000..641432d
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+import random
+
+def prod(vec):
+  result = 1
+  for n in vec:
+    result *= n
+  return result
+
+# 2 × (2 × 3 × 5) × 5 × (11 × 17) × 239 = 2 × 30 × 5 × 187 × 239 = 13407900
+factors = [3, 11, 17, 19, 37] #[2, 3, 3, 5, 11, 17, 239]
+
+done_segments = set()
+for line in range(12):
+  while True:
+    segments = []
+    i = 0
+    while i < len(factors):
+      j = random.randint(1, len(factors) - i)
+      segments.append(j)
+      i += j
+    for i in range(len(segments) - 1):
+      j = random.randint(i, len(segments) - 1)
+      segments[i], segments[j] = segments[j], segments[i]
+    assert sum(segments) == len(factors)
+    if (
+      len(segments) >= 3 and
+        len(segments) < len(factors) and
+        tuple(segments) not in done_segments
+    ):
+      break
+  done_segments.add(tuple(segments))
+
+  long_form = []
+  short_form = []
+  i = 0
+  for j in segments:
+    factor = ' × '.join([str(k) for k in factors[i:i + j]])
+    if j > 1:
+      factor = '(' + factor + ')'
+    long_form.append(factor)
+    short_form.append(str(prod(factors[i:i + j])))
+    i += j
+  long_form = ' × '.join(long_form)
+  short_form = ' × '.join(short_form)
+  answer = str(prod(factors))
+
+  print(long_form + ' = ' + short_form + ' = ' + answer)
diff --git a/blog/20220131/image.svg b/blog/20220131/image.svg
new file mode 100644 (file)
index 0000000..09c0cb7
--- /dev/null
@@ -0,0 +1,1172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   sodipodi:docname="image.svg"
+   inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
+   id="svg5"
+   version="1.1"
+   viewBox="0 0 203.2 135.46667"
+   height="512"
+   width="768"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   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"
+     units="px"
+     width="768px"
+     inkscape:zoom="0.35355339"
+     inkscape:cx="743.87634"
+     inkscape:cy="24.041631"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter33502"
+       x="-1.9213956"
+       y="-1.2894872"
+       width="5.4425183"
+       height="4.0236252">
+      <feFlood
+         flood-opacity="1"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood33492" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite33494" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur33496" />
+      <feOffset
+         dx="1"
+         dy="1"
+         result="offset"
+         id="feOffset33498" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite33500" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter7816"
+       x="-0.017123455"
+       y="-0.076442801"
+       width="1.0390678"
+       height="1.1792452">
+      <feFlood
+         flood-opacity="1"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood7806" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite7808" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur7810" />
+      <feOffset
+         dx="1"
+         dy="1"
+         result="offset"
+         id="feOffset7812" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite7814" />
+    </filter>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-size:7.05556px;line-height:1.25;font-family:'times new roman';-inkscape-font-specification:'times new roman, ';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+       x="113.54689"
+       y="107.48225"
+       id="text8749"><tspan
+         sodipodi:role="line"
+         id="tspan8747"
+         style="stroke-width:0.264583"
+         x="113.54689"
+         y="107.48225" /></text>
+    <image
+       width="203.2"
+       height="135.46666"
+       preserveAspectRatio="none"
+       xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gBQUmVuZGVyIERhdGU6IDIwMjItMDEtMjkgMDA6MDc6NTRa
+ClBsYXRmb3JtOiB4ODZfNjQtcGMtbGludXgtZ251CkNvbXBpbGVyOiBnKysK/9sAQwAIBgYHBgUI
+BwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy
+/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+MjIyMjIyMjIyMjIy/8AAEQgCAAMAAwEiAAIRAQMRAf/EABwAAAMAAwEBAQAAAAAAAAAAAAABAgME
+BQYHCP/EAEgQAAICAgAEAggCCAMECQQDAAABAhEDBAUSITFBUQYTIjJhcYGRobEUI0JSYnLB0RUz
+8AckkuEWJTRDU3OTwvFjgrLSVFWi/8QAGAEBAQEBAQAAAAAAAAAAAAAAAAECAwT/xAAjEQEBAAIC
+AgMBAAMBAAAAAAAAAQIREjEDIRNBUSIEMmEj/9oADAMBAAIRAxEAPwDmUFFUFHZlNBRVBQE0FFUF
+ATQUVQUBNDoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJodFUFATQUVQUBNBRVBQE0FFUFATQUVQUBN
+BRVBQE0FF0FARQ6KoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKIJoKKoKKJoKKodARQU
+XQUBFBRdBQEUFF0FEEUFF0FARQUXQUBFBRdBQEUFF0FARQUXQUBFBRdBQEUFF0FARQUXQUBFBRdB
+QEUFFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFARQUXQUURQUXQUQRQUVQUBNBRVBRQ
+UFFUFATQUVQUBNBRVBQE0FFUFAKgodDoCaCiqCgJoKKoKAmgoqgoCaCiqHRBNBRVBQE0FFUFATQU
+VQUBNBRVBQE0FFUOgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKLoKAih0VQUBNBRVB
+QE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBN
+BRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNCougoCKCi6CgIoKLoKAigoqgoCaCiqCgJoKK
+oKAmgoqgoCaCiqCgJodDoKAVBRVBQE0FFUFATQUVQUBNDodBQCoKKoKAmgoqgoCaCiqCgJodDoKA
+VBRVBQE0FFUFATQUVQUBNBRVBQE0OiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgougoCaCiqCgJoK
+KoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqHQEUFF0FARQUXQUBFBRdBQEUOiqCgJoKKoKAmgoqg
+oCaCiqCgJoKKoKAigougoCKCi6CgIoKLoKAigougoCKCi6CgIoKKoKAmgoqgoCaCiqCgJoKKoKAm
+goqgoCaCiqCgIoKLoKAigouhUBNBRVBQE0FFUFATQUVQUAqCh0OgJoKKoKAmgoqgoBUFDodATQUV
+QUBNBRVBQE0FFUFAKgoqgoCaCiqCgJoKKoKAmgoqgoBUFFUFATQUVQUBNBRVBQE0FFUFATQ6KoKA
+mgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqHQEUOiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaC
+iqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqg
+oCaCiqCgIoKLoKAigouhUBNBRVBQE0FFUFATQUVQUBNBRVBQEUFDodATQUVQUBNBRVBQCoKHQ6Am
+goqgoCaCiqCgFQUOh0BNBRVBQE0FFUFATQ6HQ6AmgoqgoCaCiqCgJoKKodATQUVQUBNBRVBQE0FF
+UFATQ6HQ6AmgoqgoCaCiqCgJoKKoKAmgoqgoCaHRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQU
+BNBRVBQE0FF0FARQUXQUBFDoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAigougoCKCi6CgIo
+KLoKAigoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAigougoCKCi6FQE0FFUFAY6CiqCgJodD
+oKAVBRVBQE0FFUFAKgodDoCaCiqCgJodDoKAVBQ6HQE0FFUFATQUVQUAqCh0OgJoKKoKAmgoqgoB
+UFDodATQUVQUBNBRVBQE0Oh0FAKgoqgoCaCiqCgJoKKoKAmgoqgoBUFFUFATQUVQUBNBRVBQE0FF
+UFATQUVQUBNBRVDoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgo
+CaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAigougoCKCi6FQE0FFUFATQUVQUBNBRVBQE0FFUFATQ
+qLoKAxUFDoKAVBRVBQE0FFUFAKgodDoCaCiqCgJodDoKAVBQ6HQE0FFUFAKgodBQCoKKoKAmgoqg
+oBUFDodATQUVQUBNBRVBQCoKHQ6AmgoqgoCaCiqCgJodDoKAVBRVBQE0FFUFATQUVQUAqCh0OgJo
+KKoKAmgoqgoCaCiqCgJoKKoKAmh0Oh0BNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRV
+BQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0Ki6CgIoKKoKA
+mgoqgoCaCiqCgJoKKoKAw0FDoKAVBRVBQCoKHQUAqCh0OgJodDoKAVBQ6HQE0FFUFAKgodBQCoKK
+oKAmh0OgoBUFDodATQUVQUBNDodBQCoKHQ6AmgoqgoCaHQ6CgFQUVQUBNBRVBQE0Oh0FAKgoqgoC
+aCiqCgJoKKoKAVBQ6HQE0FFUFATQUVQUBNBRVBQE0FFUFAKgodDoCaCiqCgJoKKoKAmgoqgoCaCi
+qCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgo
+CaCiqCgJoVF0FARQUVQUBNBRVBQE0FFUFAYKCh0FAKgoqgoBUFDoKAVBRVBQE0Oh0FAKgodDoCaH
+Q6CgFQUOh0BNBRVBQCoKHQUAqCiqCgJodDoKAVBQ6HQE0FFUFAKgodBQCoKKoKAmgoqgoBUFDodA
+TQUVQUBNBRVBQCoKHQ6AmgoqgoCaCiqCgJodDoKAVBRVBQE0FFUFATQUVQUBNBRVBQCoKHQUAqCi
+qCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKAmgoqgo
+CaCiqCgJoKKoKAmgoqgoCaCiqCgJoVF0KgJoKKoKAmgoqgoDXoKHQUAqCh0OgFQUOgoBUFDodATQ
+6HQUAqCh0OgJodDoKAVBQ6HQE0FFUFAKgodBQCoKKoKAVBQ6CgFQUVQUBNDodBQCoKHQ6Amgoqgo
+BUFDoKAVBRVBQE0Oh0FAKgodDoCaCiqCgJodDoKAVBQ6HQE0FFUFATQUVQUAqCh0FAKgoqgoCaCi
+qCgJoKKoKAmh0OgoBUFDoKAVBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFA
+TQUVQUQTQUVQUBNBRVBQE0FFUFATQUVQUBNBRVCoCaCiqCgJoKKoKAmgoqgoDVodDoChAMKAVDod
+AAqAYUAqHQ6ABUFDCgFQ6HQUAqCh0FAKgoqgAVBQ6CgFQUVQUAqCh0FAKgoqgoBUFDoKAVBQ6HQE
+0Oh0FAKgodDoCaCiqCgFQUOgoBUFFUFATQ6HQUAqCh0FAKgoqgoCaHQ6CgFQUOgoBUFFUFATQUVQ
+UAqCh0FAKgodDoCaCiqCiCaCiqCgJoKKoKAVBQ6CgFQUOgoBUFDoKAVBRVBQE0FFUFATQUVQUBNB
+RVBQE0FFUFATQUVQUBNBQ6CgFQUOgoCaCiqCgJoKKoKAmgoqgoCaCiqCgJoKKoKA1AGOiiaHQwAQ
+UOh0AqAYAIKHQ6AVAMAEFDodAKgGACCh0OgFQUMAFQUOh0AqChgAqCh0OgJodDCgFQUOh0BNDodB
+QCoKHQ6AmgoqgoBUFDoKAVBRVBQE0Oh0FAKgodDoCaCiqCgFQUOgoBUFFUFATQUVQUQKgodBQCoK
+HQ6AmgoqgoCaCiqCgFQUOgoBUFDoKAVBRVBQE0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQ
+E0FFUFATQUVQUBNBRVBQE0FFUFATQUVQUBNBRVBQE0FFUKgFQUOgoCaCiqCgNOh0OgKEFDCgCgGA
+CCh0OgFQDABBQ6HQCoBgAgodDoBUAwoBUOh0ACoBhQCodDoAEAwoBUOh0ACoKGFAKgoqgAVBQwoB
+UFFUFAKgodBQCoKHQ6Amh0OgoBUFDodATQUVQUAqCh0FAKgoqgogmh0OgoBUFDoKAVBQ6HQE0FFU
+FAKgodBQCoKHQUAqCh0OgJoKKoKAmgoqgoCaCiqCgFQUOgoBUFDoKAVBQ6CgFQUOgoBUFDoKAVBQ
+6CgFQUOgoBUFDoKAVCoqgoCaCiqCgJoKKoKAmgoqgoCaCiqCgNIBgUKh0OgAQDCgCgHQAIKGOgFQ
+DABBQ6HQCoBgAqHQUMBAMKAVDodAAgGFAKh0OgAQDCgFQ6HQAIBhQCodDoAEAwoBUOh0ACChhQCo
+dDoCBUFDCgFQUVQAKgGACoKHQ6AmgoqgAVAOgAVBQ6HQE0FGPJta2JtZNjFBrvzTSMS4pw9ulva1
+/wDmx/uBtUFEYdjBsRcsGbHlS7uElKvsZKKFQUYNze1+H4lk2cnJFul0bt/Q5v8A0p4bffL/AMA1
+R2aCjkw9JuFy75pQ/mg/6HUwZsWzhjmwzU8clakvEasFUFFUa2ff09bJyZ9nFjnV8spJMDPQUace
+McNl23cH1ml+Zs4dnX2L9RnxZK78k0/yAyUFDoKIFQUOgAVBQ6CgFQUOgoBUFDodATQUVQUBNBRV
+BQE0FFUFATQUVQqAVBQ6CgFQUOgoBUFDoKAmgoqgoCaCiqCgNEKGFFBQDABDoKHQCAYAKh0FDAQD
+CgCgHQAIKGOgFQDABDoKHQCAYAKh0OgAQDCgFQ6HQAIBhQCodDoAEFDHQCoBgAgodDoBUAwAQDod
+EE0Oh0ACAYUAqHQ6OLxb0j1uF5XgeHJlzJXS6L6v/kB2aA8Zk9Md6b/VauDGv47k/wA0YZelPE5d
+p4o/y4/7m5ham49yczi3G8PCXjjkxZMk8ibSjVdPM4mr6X54tLa14Tj+9j6P7f8AwaPpBxXBxbLg
+lgjkisaafOl415MXDI3G/L0xytvk0oJeHNkv+hC9L9rx1sP4nn8eKc+kIyk/gjaxcL2cj6xjBecm
+b44ztN16nR9KNPYqOwnrz831i/qb+TjPDccbe7if8sub8jyuLgSfXJnfyjE3sPAtKPvqeT+aVfkY
+twX28sl07DPcYuGaMFS1MT/mjf5m9hw4sSrHihBfwxSL8snUOLwenLc1s8curHKpr92L6/B+Z6LH
+x3jLgubhM5Pzjimkejiy0zN8m/peLx3E1xriscccnD5QhB2lGL6v42znrgPFHX+5z6/Ff3PoVibE
+8tnUOL5++AcUXfUl/wAUf7nQ4euO8Kxyx4tVSxt8zjOn+TPWSZhkxfLb3Di4kuNcbinfDsd10qLf
+9Tz2zh3s+xkz5sGZzm+ZvkZ7WbNebE8mvo4vFSw5Ye9inH5xaFjnLFkjOLalF2mnTPWzZq5Upd0n
+8zXy/wDE4upi9KOGZIJznkxvxUoN19hbfpRw/DhbwTefJ4RUWl9W0cDJhxPvjh9jVnr4vCNfUzLi
+uq3H6VcScrvCl5chkx+l29F+3iwTX8rT/M488MV2bMTVG94VPb2/BvSBcU2JYJ6/q5qPNalafb+5
+2z5tw7ieThmw82FY3Nx5Xzq1X+kdyHplk5Pa04Sl5xyUvyZm47v8m/160KPA7vpFxDbdLK8EL6Rx
+Ovx7mHHxvieL3d3K/wCZ8352X46bfRKCjw+H0q4lia9Y8WZeKlCn+FHq+EcQlxPQWzLEsbcnGlK+
+3iZss7XbdoCqCjIkCqCgJAqgoCaCiqCgJoKKoVAKgHQUAqCh0FAKgodBQCoVFUFAaAUMdFCAYAKh
+0FDAQDAAoB0ACChhQAAwAVDoKHQCAYAKhjoAEFDCgCgGACHQUOgEAwAVDoKGAgGFAKh0OgAQDCgF
+Qx0BAgGFAFAOgAQClOjmcZ2smLhey4TlCah0lHoyja2uI6mn0z54xf7qTk/supzc/pTo4fdx58nx
+UUvzdniXs5X3nb+KNTLvOGfkyQbv9pMuPG9l29vH0xwuXtaeRR81NN/Y89xrchxHiMtnFGUYyilU
+kk+iNLuJtRVt0db48dMy0JNFJN9jGslvp2M0GZ5zGaxXW+1wwOXvOvkbmLXxR/ZTfx6mHGzMs2OH
+vTSOdzyq6jex0kkuhswZyf8AEIR9yLl+Af4hmfu8sfkjCu/BmZZYQ96cY/N0eZ/SM0/eyzf1CIHp
+/wDENWHfNH6dfyB8Z1Y9vWS+Uf7nnEjIkQd//HsK93DN/NpEv0g/d1vvP/kcRIoo674/krpgin8Z
+Evj2f/wsf4nKoAOk+OZ3f6vH+P8Ach8azP8A7qH4nPJYG++MTffDH6Mxvit98P2l/wAjRZDA3XxK
+D745L5OzFLdxP95fNGpIxSA25bOKXaf3MMpxfaSf1NaRikBnmzXmyG2uzZDnLzKFNmGTp9C5SZik
+ALPkh2lfzLjvV78PqjXkY2amViajpQ2sOTpz0/J9D0/CPSSHDtDHqz1nNQupxn3tt9q+J4NjhmyY
+n7E2vh4GucvcTX4+hbHpjkfTX1YR+OSV/gqNaHpbxCMrlHBNeTi1/U8hi4k10ywv4xN7FnxZvcmm
+/LxNyYXpPb1uH0zXRbGlKvGWOd/g/wC52dLj3Dd/ljj2IwyS6eryezK/L4/Q+fKut/Q2+DYvXcc1
+IvpWRS6/w9f6HPOavpqe30gDXnxHRx2p7mvFrweRf3KwbmrsusGziyNeEZpsgzAVQUQTQUOgoBUF
+DoKAQUOgoBUFDCgFQUOgA54UMKKABgAqGFDoBAMACgHQAIdAFAADABUMKGAgGABQDoAEOgHQCAYA
+Kh0FDAQDCgCgHQAIKGFAFAMAEOgodAIBgAhOcV3Y3G18TWy2u/3Ayyzwj4HO3+PYNJqPK8mR/sxf
+b5mLYy8tptL4nzf0gy5FxXOuZq5eD+A6Hstn0n2sifq8ePEvP3mv9fI4u1xLa27WXPNx/dul9keS
+hkzc7qWS6vuzd19nY5WpSlJ10tX1NY54z6SyurSJeODkpOCbXZtCwOcsMZZFU2uqJ2M6wY7/AGn2
+R29a2z7GXPHF07y8jW55TlcnZgUnKTlJ22ZFKjhlncm5NNqDov8ASIx91WzTty7suKMK2XnyT6XS
+8kOKIhFvwMqjRqYW9JuMkUZVS7ujDbEbni/U5Nr10I+N/IP0pLtFv5s1qA3PFinKtj9MyeEYol7e
+Z/t18kYQNcMfxN1kexmf/eS+4nlyPvOT+pAUXUD5n5v7iGACH9QAofM/N/cfrJ/vy+5NDomhXrZ/
+vMPWz8XZIE4z8N1XO33RL6gBOGK7qHFmOUX5Mz0OjN8UOTTZjaN9wi+6TMcteD7WjF8V+l5NJoxu
+KfgbktWX7LTME8c4e9FozcbO121pYvJmKUZLujboVEVpsSbTtOmbMsUZfB/AxSwyj26oDYwcRyY6
+jkXPHz8TpYdjFnVwl18U+6OAOMpQkpRbTXijczsZsejE4qXdHP1eJW1DP0/j/udNPxXU673PTOmf
+FxXi+l7Wvu5ZR/cyPmX4npOC+lc9vPi1d7WcMs2oxyY+sW/ivA8vknz9jY4PmxanFsGxsNrFjbbp
+W+zr8ThZd9N7j6SBztbj/Ddp1HYUJeWT2fz6HRTUknFpp9mhrQAGBAqChhQCoKHQAKgodBQHOChg
+UADoAEOgHQCAYAFAFDAQUMKAAGACoYDoBAKeSGKDlknGEV4ydI5mT0j4Tik4vbUmnXsxk/xSoDq0
+BwZ+lvDor2Y55/KCX5s3eHcd0uJS5MU3DJ+5kpN/LzLxvZt0SM2bFr4pZc2SOPHHvKTpGQ876VbO
+rk4X6qOxilljkjJQUk34oSboy5vSzhuN1j9dl+MYUvxo1v8Aplr83/ZMvL58ys8eZMeLLlv1eOc6
+/di2dfin3WeT3fDfSHU4ls/o8IZMeRq0ppU/sdg+b62pxHBmjmw4cuPJF9JNU19zqviXpBy080Yv
+z5YX+RjLGfVWWvZSkoRcn2Stni9r0u3ckpLXhjxQ7RbXNJfHy/A1tra4ts43jz7bcH0cU6T+dI5k
+sEo92hjwndLv6bz9IOKybf6ZJfKMf7FYvSPiuKak9rnS7xnFNM5Mny9yHmj4pmv/ADT+n1nFP1mK
+E1TUop9Cj5zg9K9/XxxxrZThCKjFSxp0l8asNj0m3tzE8M9uKhJVJQSja/MzMP8Aq7ev2vSXhurm
+lic55JR7+rjav5mo/TLRT/7Ps1/LH+54u77Ab+KJye2xemPDpySnj2MfxcU1+DOzp7uvv6/r9bJz
+47aumuv1PluRtY5tdGkew9AJOfAcyk7a2JfkjjZq6aj1EsiiYZ7PL4r7Grv8S09GTjn2Ixl+6usv
+sjjZPSDSl0jPK/gscn+RdXsdvJv8q7v5mlscTxqDlOSVLxdnEz8Sxz9znlF+cZKvujznGN/ZxR5I
+tpSdqS/Iuvseg2uNOdrFDp5yOPlrJllllFPJLvKup579N2ZLrmn9HRePYzXfrZ/8TJPJjPpONdwD
+X1cjlFucrpeJGjmz5fWetT5U/ZbVWdcfJMrpLjptnJ2sry7M14QfKjrUcTGnOUpSXVttk8t9SGLJ
+FdC0EU20krZu4dZRpz6vyOWONy6at0w48Mp9UqXmzahhjH4v4mQDvjhIzaVDADbIAKHQCAYAFAAU
+FADE3QAOjBPLUW/JGXFkhmxqcHaYFdEVij651Bp/EwbeKeXA4wdO7rz+BscNTjFJqmcfJncempNs
+s9WcI23H7mlPZw45VOXL80dbZl+rZ5biEvbZz+bJeMdiEoZI80JKS80x0ee18maGaHqLcm+y7P5n
+o6O2GfKM2aSBTFRtCodDoKAQDoKAQUOh0Bhnr45+FPzRrz05LrBp/A3qCjNwlXdcmUXF01T+IqOt
+KEZqpJNGtk0/HG/ozlfHZ0srnzxRn3VPzRrZMUsb69V5nQlCUXUk0yXG+5hpzjc092WvJQm7xP8A
+Ax5cFdY/YwFl17iPSxanFSi00+zQ6ORw3aePIsM37Eu3wZ2Gk1T7HfHLcZsOMJ37MXfwRu6u7tan
+XFlnifik+j+hixZoxbck10oieRS7HPLLK/SyR6jhnpPz5Vh3nH2mlHJFV1+KPT0fNeG4Hs8U1cdX
+F5Y81+V2/wAD6WYUqChgQKhUUFATQUVQUBzQGBQqGA6AQUMAAB0ACHQDoBAMUpRjFyk0kurbfYB0
+Bxtn0p4PrNx/Slmn+7hi5X9e34nJzem05Scdbh8kq6Tzyr8F/cT30PXgeHXpdxLn5msDX7vI6/Oz
+cx+mLcX67U9rzhPob+PJNxzfShT/AMcyqU5ODUXFN2l0X26o46rwOhxXe/xXejmjicWoKHLdt9X/
+AHHrcKy5Wnkaxx+7NYzh7yS++nPNrW0NzZaeDBkfipdl92ei1OG6mCmsSnL96fU6+Nky835FmLhY
+PRvd2Ipbm64wr3FJzf49Do4PRbh2LrNZMr/jlX5UdWDMqZyvkyq6jUhw3Swf5erhi148iv7jyKux
+nyTjFXKSS+LNHNva0e+aL+XX8jHbTHlRoZkZM3EcHWlN/Q0cu+n2xv6saGLMjRyxXUzZdpv9j8TT
+yZpPwRdIwZEjUyGxkm34GvPqUa0zDI2JRswygyjGpSi7jJp/BmWG5nh+1zLyl1MUoSXgQWWzpHRx
+8Ri+mSDXxXU6GrvZMeGWPU2Z48cnco45OKb+KR54cZOLuLafmjc8l+0073caTbSSbfhRztfiDtRz
+dv3l/U6OKaU4ZI1KnapnWZbnpnX63McM8Mbnk5VFeEn1ZzN/b9fB4fURkn59X9Dp5tuGXDSTUvI5
+eLBOOSc8k0+bskuxx1nlfc016jQw8Nk3zZZcq/dXc6GHXw41Ucceni1bNiGFZOinUvJruXhwqE6z
+RlfnF9DesME91jSS8KGdJa2i8MpLJPnrorrr9jjcT2lo5YwhDmvr1Y+XE41nOZkxOGaUa7ybXxs6
+WOccmOM49pK0J44vIptdUqNZY8okumPBgWJW+svyMwwNSSTUCodABUADoAEAwCigChgIKGFAFETX
+QyBVgaOfpinf7rObhz5MEubHJrzXgzs7OLmwTS/dZxJQlB1JUcvLfcXF08PE4yVZYNPzj2N3FsQl
+1hOn9jgQ7nQ1V1Rj5L9rp1pTnkjTba+Rqz4diyyuWKUn82dXRXY7eL3Cc5+Lq/ry2LT9Uv1eBxXm
+okZsiwr2k2/I9DuP2WeZ331Zflv0cWHWzz2NuTl0jGLpL5m9Rz+GRbnllXTorOjR1w6ZpUFFUFGk
+KgodDoCaCiqCgFQUOh0BNBRVBQETxxmqkkzTy6sodY+1H8Ub9BRnLGVZdOS42jUz4fFdzs5tbmuU
+FT8V5mjlh0do4XG41qXblp0ei0c36RqQm3cl7MvmjgZo8srOrwPrr5v/ADP6GsL7SunQUVRUKjjj
+G2+WNWzpllZ1EkRF8srO1p8c3tOksvrYfu5Ov49zTwNLD3Vt2TNnK+Tfca09lw7j2txDJHDyyxZn
+2i+qfyZ1T51o88uI60ccnGTyxSa8Op9GozuXoIB0FAIBgBzKGA6KEFDAAAdAAqGFpCc4r9pAMUnS
+JeaK8zHl2IqPh9WA55KVnj/SLezfpj15tS13FSUPD6+fY7G1xjWwKXNkTa8I9WeV4pvQ388MkIyT
+UeVuXiXjb0bjXew+XlxxUF8DA5JSpvq1YxUnJS8UqN4TOM3RmTFieR+S8zFzLmo2sT7Gs/Jr1CYt
+7Wxwx+7Hr5+J0cTOdikkrbpFviEIdMa535+B5rbe23bxMyPf18PSU05Lwj1Z5yW1mze9N15LoioA
+dufGpdsOJL4yf9DXnxDayqnmkl/D0/I04l2krbpAOTlJ3JtvzZLNbY38eK4wqc/wRz8u1myv2puv
+JdEdMfFalykdLJlxw6SnFPys1p7WLwbf0MGvp5NjtUY+bNjJw2OKFvI5P4Ki3Hx491N2sEs8H4Mx
+SmpeZp7eeeBvlSfzMOLiNq5w+qYnx0/puzRryRnx5IZYKcHaZTjGXdGr4vynL9aMiGbzwQfh+JD1
+YvtJonxZHKNITin3NuWnLwkn8zFLXyR/Zb+XUzcMp9LuNWWJeHQxuLRtUTKPQyNWza09t4cqxzf6
+uT8f2WYJxowz6x+RZbPcHpCoQlN1FNur6GDUm8mpik+7irNvWlHHmc5Ok40ejK3juMSe1w1Mza6R
+j8XJGbNKOCKeWUW/h4kZNpR9xczNHItjZk24uVK6XgYx5Z/7eot1Omwtz1lqMUvn3MOTFDNPnyQj
+OXnJWa6jNTpJqSN2OOTgm3HmfgmbswxSbqKGZlrt95I52bfx6+y8WSLpftL+xPkx/V41t0ARalFS
+i00+zQ6NoQDABUOgHQCAYUAqGOgAQ6HQUAgodDogxZ+mGRz3BSVNWjquKlFp9maOTDLG+vVeZy8k
+vbWLU/RY37Lr4G3r4JRa7MUV1NvAuqOLTpaa5avodeOWCh1kjlYF0NquhBj3MsWnTs4GzFTk77HX
+2Oxys3cB6kVGEqXSzYojBBwx011bsy0erCaxYvaaHQ6HRpE0FFUFAKgodBQCoKKoKIJoKKoKAVBR
+VBQE0a21g5o88V1Xf4m3RE+xLNzSvObC7nW4LgePRc33yScvp2NbJpS2NtQh0hLq35I7cMcccIwi
+qjFUkYwx1fa2lQURs+tWF+pVzbS+SvqzHtZZQyxhB10VlyzmPZJtno2MUOfG78zW128mWMZO0+50
+YqMI8qXQzfJjTVZ+B4Yx43ryySioRt3J11p1+J7yj545RPS+jOxlzQzwnklOGPl5U32u/wCxjU+l
+d6godBRAqFRVBQHLAYFAAUMBN0rMUshll7rNaaAxzz15fU1cm3yv3ic06bVr6nN2czUuki6D3eL+
+plyY03Lxt9EcjPv7GxankfL+6uiNHYlNbGT2n7z8TFbfdsc5DS82TmfKuyMQs/8AlxfkzWhlvYhG
+Kb835Gp5vqROLaMefJ6rHfi+iLiuWKXkqNLel+uxx8Ks655ax2zJ7ZcTNtZo4116vyNCM+VfEabb
+t9zyujceaeV+0+nkjNjNXGbCnyroWY29Fum5BpK26Q3t48fa5P4GhKUpd2Sztj4Z9sXJtZOIZX0j
+UF8OrNaWaeWXtTlL5sxyZiytxxSlF00rR1mMxnpne20Y8rkopx7X1+Rhw7uPIqm1CXx7G0mmrXVE
+usp6Xqurw+dwRs7PWDOPh2MmF+xVeTRmnxDJONOEPoea+HJvlHH4l0bOZhuUnFJtvskdzLgx55Xk
+Tf1MmvqP3dfA3/JGyzw37OTW0deWvham/ak7a8jZ7K32N6PC9iubJFY18e5qbeJY4uKOvPHGajOr
+e2DDk9bGUuy5qRlNbT9ya/i/obJvG7m0oAYGkTLHCfvRTNfJqd3B/Rm0D7GbjL2u642bHKDakqZr
+SXdHbzQjki4yVo1cGi3s80uuOPVfH4HK+KzpqZN3VxvFq44S7qPUzCnJQg5PslY8cvW8JyZaqdrq
+vDubyzmE0kmzo3NCHNOcvBKjz0M+XmS9ZKvmei4TJvFO34ox80q8W1PBDJ78EzDPRjFc2Kb6fsy/
+uZdjPLFkSjVVfU0NricoReOPK5yVfL4mLccrpfcW8sYRXM0r7HKy8Ohn2JZcspO/2V0FKUpu5OzJ
+jzSj0l1R2x8Ek99s3NsQxxxwUIKorsihRkpq0xt8qtmrZO07FBROXJHFinkkm1FW6Fh2MWf/AC5J
+vy8STPG9U1VjodBRoIdDoKAVDodBQCodDoKIFQUVQUAqCr7lUFAYngg+tU/gXCHI+9l0FGbhjV3W
+xizwj3T+xme5irtL7GlQUZ+LFd1ly5VPsma6xxTuupdDo1MMZ0m6mh0Ogo0hUFFUFEVNDoqgoCaC
+iqHQE0FFUOgIodFUFATQUXQn0Al9EYZKWSXLEz+rc+/RGSMFFUlQRjxYo4o0u77vzLoMkvV4pT5X
+LlV8q7s0cO7kycPnsySi3L2EvBf6sxlnMe1k23qE4Rl70U/mjj4eMZuflnjhJea6M6GLfhklFShK
+Lbrp1J8mNXVb2nq82ZyiqSXVmfJCWN1JfU39b9HWNQxTT+fdmSeJSTUlaM3GXpZbHGbPW+i2Hk4b
+kytdcmR0/NJf3s8xta0sPtLrD8j2/BsPqOD6sPOCl9+v9TnJq+1boDAqEAwA5VDAxzbTKKc0jHLM
+l4owZcnTo7NPNmdP+pRuz2lT9roaWXbXXq38jnZdxpO5R+dnG2+LLC3zZHXw7lmOzbsZ9pXfb5nP
+z7CfdxfwicDLxxTfsqTXxFh2cmzHmtRhdUu7OkwrO21nkp5XJO7Mb6IVjjjnN+zFiYYz3TdvSX1V
+PsBsYtSWSTXMlTMubSjiwSnztySv4Fvkwica0jU3sbahkX7LpmfJmjj2I432muj+JkaUk01aZfWe
+Po6rmoz4ouT6A9aSypL3X4m3GKhGl2OWPjtvtq5CMVFDAD0SSeowAaAYGNxMc1cJLzVGxQnFMo4S
+KjKUXcZOL+DoyZMDjOSj1pmOmn1VHjdGziz5r/zW/mdHWbm1zOzk431Opqvqibv6PQaWDC6bxwb+
+MbO7iSUEkqSOHoy7HaxyShbaS+Jmq1txdGea313PQbuzjSaT5n8DzW7OU276LyEGpqKvWfOzaNbW
+9+S+Bs0evx/6ud7A6ADaAmTod+QKHi+oGNQc35RMySSpLoVjip5Y47pydGDf2VobPqZRc1V8y6GL
+5MZ6tWSs1DSSxPGlUJd0jVjxHWklc3G/CSPRcI4dg2ccdmWXHlXdQhJNfX+w3jTVc7X9HP0jA8qk
+8TfuJ9U/mbGjr5dRzx5ocsk19T0zgY8uCOWDjJdDjlhL03K8jxndWCSru4nnsO63mlzq0/HxOp6V
+a2TWz41L3ZL2ZeZwMPvnKW4XcXW49Nr6GTYhDInGMJJNN+Rs5OH48GOLbc5N9fBGfhz/AOrtb/y4
+/kXuP9XH5nTLzZ1JjGlSj0SSXwMeR+yy5SS6vyNHZ2koyS8ji0zZ08uHLjh1k4pULV0I4JLJJ82R
+fZFaWN+q9ZLvOn9DcUT1ePxam6xamh0VyMic4Y/ekl8DpfXbJ0FGrHdWTK4Qj0S7srPsyw58MFFN
+T7/A5/LivGtmgox4diGbLkxq1KHdMz0dJZfcRFDoqg5QFQUVQUAqCh0OgFQUOh0FTQ6HQ6IJodDo
+dATQ6HQ6Amh0Oh0BNBRdBQE0FF0FATQUXysfKBFBRk5R0QY+VjUUi6OfxXLu4ccXrR9j9qSVtf8A
+Ilupsb1Do423ny4uEYZLJP1kqfNzdf8AXU5+vx/bwpLJy5o3+0qdfNGJ5YvF6mjHm14Z8TxzXR+R
+qanGdXO4LNeBy7yauK+3X8D2fD+Gafqo5oZIbN9pppx+hrlKmq8Nm9HdrBhlt4oyngXV2vaS8/iv
+iYtOPNs415Oz6e4Hl+J8Djq7L3daNYnfPBfsvzXw/L8uOWH3G5WkjNDazY+2R15PqYEwsyKnnzb+
+9jwdErUUl25n4n0uMVGKiuiSpHzr0dw/pPHsN3Syc1r+FWj6OagQDAIQDADlGLIvgZW67mKcl49C
+jWzQtd0c/PiXK7dnQyTVdfsaeadJukl8GWDi7GFdejZwN3X6tqF/kej2sytqU0l5HH2pY3duTRuJ
+Xlc2N45tOvkje4ZK4ZIPwaf+vsXs4IzT5cf1swaCli2nGXaUXR0zu8LpmT26sUl4GxjZrotZFFW3
+0PJ26NiE1jzybdLvbI29qOTFLHjdpr3jnbGw80/JLoY4ZXD4ryPRh/j+t5MXP8ZnihJ43Jc0odmW
+TGcZ+6/obOLTzZevLyrzl0Ov84T8Z91gA28unHDFe022jm/pSjklCcap1aMTy437XjWehiTUoqSd
+pq0M6IAAKAAGAGhmjWaS+NkUb2XCsivtJeJqywzh3i/mjzZ4WVuVMYRvsjc10k+xqRNvB3RzadfX
+k1VNo3Y9VbNDXdVZuLPiivayRX1GqJzLocjaXc6Ofcw1UW5P4I585c8rao3j48qlsYMOPkTb7syj
+ozYdbJnVwSq6ts9HrGMdsNBXmZ9jWevr5Mjkm4Lsvkc7W4hizy5JLknXZvoyTyY262arbCrVFRi5
+Oopt+SOpqej+7stOcPUw/en3+3c1aOThi4Z8Ur6RkurNL0i/7cmuzifQtP0f09X2px9dPzyLp9jz
+/p1wlvBDiWKKqHsZq8n2f36fVHmzwneLcv68JP3YHR0Zyx7GJwk4vmXVOjnS/wAuPzN7VdZ8f8y/
+M4tPXYeJ7eNV61yXlPqbEuN5ceDJOWKEnGDaq11o5cR5euvlX8D/ACN8qmnmeI7WbenPPnm5Tb+i
+XkvgaWH/ADEbGT/LkYMMW8nTqYV7Phz/AOr9f/y0Pemo4o/Mx8Pm/wDD8Nqny0YeJT/3e77Mo0Nj
+YqL6nL9bGeZLI3yNrmrysrYzX0s19eKy7OODum66EHqdfNhzRXqpxlS7LuvobDahHml2PPS4fmhK
+8WSPTs22mej3n+pj/Md/nuumeLWybLaqHRefic+bt234mw2ak3RyyyuXayaLWaWabfkbO113dVL4
+/kcxZayTOpXPxXRj3uRIrow1ngTuDTk7bruVR2oxG9bFk97HF/geyevTm4lDOpn0dXFillyZHihF
+dW30R4/iPE5ZVLHgbjiuubs5L+hnLOYkm3Wx7OLLNxxy5q8V2L9bCrbo5fCemP8A+02szrDP+VnL
+5cmuMbsJQyRUoSUovs07Ko5vAl/uWR+eR/kjqUdsbubZqeUfKVQ6KI5R8pp7G88e9DWxqLtJyb8L
+8Da9Y/gYvkkul1V8ocpzsfFo/wCI/omSCSbqM0/H4nVo1Mpeks0jlDlLodFEco+Ux7WSeDVyZYRU
+pRjdMjXzTya8JzpSkrdIxlnMeyTbPyj5TkcT4pm0cuP1ajJNO4yR0NDew8QwLJidSXvQfeLGOcpZ
+psUOiqCjQ19nZx6mJZMt03ypJdWzX1+Ix2MzhDE0krts35662YvFKHOpfs1Zy8ejm4bt54Z4TjUF
+KPNFq4u+v4HPO5TpZIUeO6y2ZYc0XjqVKfdfXyOpCUckFOElKL7NO0zwOeTnmb8WzJg3tnTzOWvl
+lDr1XdP6GMfLftbi95Rnwaexsv8AU4Z5PjGPRfUfox6TcEz8mvxLVx4Nl1FZZ3LHN/X3X+HxPocY
+xcFyVy105ex0mcvSafOOM+iG9scLy504xyYYuaxLq514dPE+crwXwP0Y4nxz034IuE+kTniio6+1
++sgkqUX+0vv1+qOWc+2o4cFSR3uCbGfUhLLgyzxycq6Po/p4nCid3Rjy6mP4qzEV6nV9JZJKO1h5
+vOcOj+xn3/SLTxYKwL1+SS91ppL5nmUYH7WevjRvlU03ea+tJX4LshSlyxb8kFkZblDlj1lJqKXn
+ZhXpPQzQzRyy3JwaxvG4xk/Ft/8AI9kYtTWjqamLXgqjjgor6IzG4hAMAEAwCOFKf/yaubI034Lz
+Niav4mnng3Lxv4mhq7GxUbUq+Jy8+4lGXft3Zv7GGTh1Ry82vJ3ZqI4W5xKcW2klH95nJzcSzZLU
+XS+R1dvRk7b9r6HF2NWWJtpeydsdM3bFLLkmqlOTXk2XqT5NrG/4q+/QwDTpprujdm5pl6KzBnnK
++WqX5mWMlKKa7NWC5XNKSTV9mePDKY5bsdbNxqwhPJKoRcn8EdDW4PkyO80ljj5LqzfxKMElFJLy
+RtY2dMv8jK9JMJ9tbX1cOtNqEOq6cz6s2bMWaShmbfj1NHa4jHF0T6nnttu62yb2aEYwTau6OU9e
+Es0sknafZeBijmlsZJTl2TpGeKPT4fFLOVc8svpkHQlZkjicu3Y7X17rKDLkwTx4nN108EYMvszr
+y6nQyNSwP4pHny813/Lcx/XPjNTxrIu1WOE45I80XaMeonLAod2m4mXHryxY1FQl0+Hc3488su0y
+khgVyS/df2HyT/dl9jqyjlT7pGWGvOUOaMfZ8zBt8+DWlKUZRtUrVHQ1Jc2l9jj5PJxuo1JtgeCa
+i266Grh2Mee1B9V3T7nQyTqDR5vBlWtxKpNKDbhJvslfcxj5bv2txdoDuYfRyWSKk9qHK+qcI3aN
+7D6OakeuSeSfwukd+UZ08sb/AAyo4pwXZM9Tg4To4Pc1oN+cva/M1eNSUJ62KKSTU5dPhy/3OXls
+saxmnA4k71c0fFxf5Hi4/wCZ9KPZ7ntKa84r+p4xdMsfqeetuzwX0k2uDbbShDNglXNCS6rp4S7r
+8j6Hwz0h4bxRRWLOoZX/AN1k9mX/AD+h8il/nL6GzB1OL+KNTOxNPtXKa+9q4tvRz6+ZL1eSDjK/
+D4nitHjW9pzSjnc4duTJ7S/5fQ3Nre2Nr/NyuS/dXRfY3c5pNPAZ8csTlilXNCbi6dq0bOu6yw/m
+Ri243tZ15ZZfmZtSPrM8I/HqcWnoYlz64ZrzizHEyP3H8jSPHbeSGPC5Tkoq/E2eBTx7OPLkjfSX
+Km18DqcH4Jj4vj29fPHmXq01Xh17nIlp7fopsSxbWJz05yuOeC7fMyr0+KXLgivJHK4tnbx8qfSz
+Pi3cObBF4s0JJrwkc3flzY5Mv0jmynfczaT/AN9xfzGq3bM+lJLewJtJuXTqRXpUb28/1Mf5jSRu
+bybwppdn1A58n0OfmydfqbWbJSOZmn1YGLmvJI7jmsfFdOT7Rds865NOzsetWTd13fXlRYPZ4uIa
+s+nrVF/xKitvierpYuaU1OTVxhF23/yPOmntP9b9DpfJdM6HFOJ7HEMi9bKoL3YR7L/mcrI/Y+pn
+yv2jXyP2Pqc7dtOtwuXsNfwf1NnZda2V/wAD/I0uFdpvySNrcdamV/wgdL0B2IZMm5pZIxl0WWNq
+/g//AGntnw3Tn31sf0VfkfI+C8RfCuL6+3b5IzqaXjF9H+DPsuLJjypPHkhNPqnGSZ18d9aZrTfA
+9GfbE4/yyZz+L8O4dwrh2Xcy5MyUVUYqS9qXgl0PQZcuLWwTzZpqGKEXKUpdkj5P6TekWXju/wCw
+5Q08V+qxvx6dZP4v8F9TWWeoSNTh+WexxF5sjuUpps70pUmef4P/ANpXzf5Hck+hwaeY35t705Jt
+NTfVeFHu/RfB/wBIdOXLsY4bOKvWY5Lq14SXwPn+zLm2Jv8AibN/gvGc/AuM4d3B15Fy5IX0nB91
+/rxSLjlxqWbfUF6JbP8A/Iw/ZlL0Q2H32cX2Z6LhfEdbi3D8W7qT58WRWvNPxT+KN5I78qzp4niH
+otLV4Zs7GXcgo48UpSqD8EeWwrl18a8VFfke39P99afo49ZSrLt5I44pd6TuX4KvqeIbpV5HLO7r
+Uee47Pm2kvKP9TnYM+XWfrcM5QmmqaNri8+bdn8KX4Gi+mKPxZzV9U9CeI8E49jjqbmBQ4lFN8rn
+LlypeMfj8Pr8vc4+DcOx+7pYP/ugn+Z+d9Wc8WaOTHKUJwalGUXTT8GmfU/Rb/aNDK8elxtqE3UY
+bSXR/wA68Pn2867nSZ/qafQIYYY1WOEYryiqPEf7RcXq9fBspdXCeNv8V+bPaZd/SwK823gxp9ub
+IkeE/wBo/FNHa4PihrbOPLOM+vI7pFy6SPlF82VP6/1Mcfamviyl0cn5IMSua+ByabB630Z9IOI8
+L1lHHmeTBzOsOTrGvh5fQ8kd3Rjy6eNeassH0fH6a8Olq+syYs0c3Z4kk/s/L/VHjvTD0h/xnVw4
+v0WOKMMnNBuVy7NP6dTTXY5nFZXPFHyTZq5WxGlE9FijyY4x8kkcTTwPNmSXZdWzuozFUjDh65b+
+pkk6gzLo6W3tKc9bWy5lHo+Rdih2bXC8H6VxvRw1aeVSfyj1f5ELhnGJSqPB9qrrmk4Jf/lZ7T0c
+4GuHRls5uuxOPLVe4vL/AF5EHcfcBhRtCAYAIBgBxHj+BE8V9eqNgmdqJUc7LgT8E/kc/PgXVfgz
+rZJdH16Ghmmk3S+pRxdnXTTTXzo4e5q1F0u/4HpNqXkl8DkbTuDTr434m5UeNz4niyNU68LMdnR4
+hGrfLzPy/dOaeie4510cOzWCCvsqM2DOsk2vI4mbZhr4+acq8l4svhfEMWbaUIuSk0+jR5PJjxyd
+cbuPa4Zc0IvzRsRmomjqz/UR+HQyPIc1YeJ7HLyu+6aPN7WxKeW7OxxRuWta/Zds8/k94zVdnUhW
+vD4q/ubMY2YdKXPp4n5Kvt0O7wqMOScuVc6ff4Hqnnkx1pjj7a2PRnGEZ5Vyp+HiZZpRhSVJHQ2u
+uG/JnPn2ZwzzuV9tSacza6NP5ixbfrJRhfeNEcQnSS8mc3Vy1uY0/OvuYV1NSXJmyr93JzHoYK0m
+jzmP2d3Mv3kpf0OvwjaWxquEmlkwyeOX07P7HfxX6ZydKKM0VRji4+a+5zeJb3NCWDE+naUl4/A6
+ZZTGMyOVxzee5mcIP9Tj6R+L8WbHD8t6nL/CcnN4mzwvJ7Kj8Gjy27u3RvTdo85vJx25r+J/iehk
+cLiSrbb86/IUeh9GvSV6mVaO7JvXb/V5H/3fwfw/I97jlHJCM4SUoyVpp2mj4zF/rYvzSPTcA4xt
+6mX9GhkvFJOoS6qL72vxN4569VLH0VI8nxfc9d6UvWT9nBrU1/E2m/woyT4nuZOjzyS/h6fkecwz
+a9J8vM25Tvq336WXLPc1CR1Nh915pnjMi5c9eUqPZ5+/0f8AQ8ftrl25L+N/mc6rDP8AzV9DPZhm
+v1kf9eJmIO+u6Oq2cmPuq+9HTTuKZpHmNvWyy3dhwxtp5G7NvQ1JYryZFUvBeRv7EJRm3KLSl1Ta
+7k4+xlWSJlRrvJDH784x+bo3uG6ebieb1evCVeM5Raj966mkbXofgS4hsL/6Pl8Uej3eHY9iDx5M
+cZwkusZK0zf4VwfBwrS9Xj9rLLrkyV1k/wCxtvFfgjKvCbPolw1xfLw3X/8ATRxd30a1oa+TFDDH
+EmqTxqmj6o9VSh2OftcLjli/ZA/PPEdbc4bsywZsk6fWMuZ1JC4O2+M6rbt8/ifVvSH0SW7rSg4X
+XWMkusX8D5jg0s3CfSHBh20oOM/efRNeYHtl3NniEn+jNR7s1o90zY2nzRoDg5MjumzSyy+JvbOJ
+22u/kczJ0XUCJM3tLLe3hT79F+JyMu7hxy5W3J+UTc4Vs4svE8ME2pdXTXwLOh6s0tp/rn8kbpz9
+mS9fL6fkKNXN3NTK+iRs5JdDTyO2QdbhUlWRfBGzxB1o5fkvzOdw7JyTl8kbG7m5tScfl+Zfocfv
+SXVtnr49Eq8DyWNc2XGvNo9aINXjGxm/w543lnySmrjzOn9Dzvn8jucYf+7RX8VnDXZijp8HV5m/
+g2dibpHH4N/mP+V/mdTO6w5H5RYg8tk6zCf+YwfXL9hPrN/Mg9X6Hce3uD58mPXcZ4ckXKWPJbjf
+g1T79j2C9NuI/wDgav8Awy//AGPn3BY/r5PyhX4o7lmpajX9IeNbXHPSDW/SVBRwxUYwgmo9XbfV
+v4fYzSfQ48f1npBkfk/ySOtJ9GFeV4hLm28r/jaNefuwXwsybL5s8m/FtmPJ7yXkkZGTCujZta0e
+baxL+JGDGuWKRucOjzb2PyVsD0Xgc3jMq1Ix85HROXxqMngg0rSbstHn/wBiTLwxpNlRglFp9epa
+7EDPR448mOEfJJHF0ddbGa3fJHq/j8DuFgrwOftak9ja5uZKKSRvl5NbNgaebDkx83Vc8Wr+Qo19
+XWhrr2bbfdvxNlEopCBZH7B9A9B9X1fAXlkk/XZpSXTwVL80zw2tobHEdmGDWhzSfdvsvmz6pwnR
+/wAO4Xr6lqTxwpteL7v8QNh4Y+HQiKrm+xnfYwr3PmIFQ6ADbIoKAAooKCgoDkEzXsliatFRpzhb
+7GjmxNt0zrOC+RilhvtT+ZRwNjA67dTm5tV8rSV/BnrJ6qa91/Q1cmipeT/Aso8Hs6Dt0m/n3OLs
+6Ti24o+jbHD0204nJ2uE8ybSv4o6Y56ZsfMuJ4nKEH2cZV/r7Gvw9eo38M7upV9+n9T13F+Cylhn
+SprqmkeRyYsmvl5ZpxkuqMeSS5bWbke71J3ja8jO5HP0Mqmk0+ko2bWTIkji01OI5/V60ku8uhwr
+vv3N7iGX1kq8DnEqu7wqXNqtfuyZ3uFSqeSPmkzzPBpe1mj8Ez0HD5cu3FfvJoDrZuuGXyObklUW
+dOXtRa81Rx9luFxfdAcfendnLx5fV7CyeUrN7cdtnMZB6ByS3YSXaeNr8bI0/Z4htx86l/r7mjj2
+bjrtvrC1+BsamVS4o3+9jr/X2KjrIxTMqMWTuxVc/Mu4+GzrIl/FQ869o19SXLmfwaZB2mcbiyrN
+F/wr8zsSku5y+KrmxwmvC0y0c1OpxZ1uHOt/E/i/yZyf3Tpacq28L/jRB6dM40/Y9JYS81/7aOum
+cndfJxrWfny/nRR1M/eP+vA8zxPXlHZ9ZXsydpnpczOPxGLni5ZJxfNatUKOQ12NvSwvJlU2vZj1
++pu4NfGteMZRjPrdtGzCEYRSjFJeSRAHQi/1cfkjn+JvY3+qj8jSPd8Ejj2OA68ckIzjTTUkmukm
+bH+C8Mld6Gt1/wDpo1/Rx3wPD8HL/wDJnXiZVqYeE6GD/J09fH/LiSNpYeX3YpfIyItAYK7iXcyR
+jzTaFODg+oGSC9lClFeReLrApxso054YS7o4fGfRDhfGsTjs68XLwmujX1PSygY3GiD5VP8A2dcV
+4fspcM4nF63/AIewnKjbfonxlr9dv6a/k15f/ufR3BNmR60EuybA+Zz9E2sd5diUpePJDl/B2cni
+HAML1cuDlcZSi1HI+rTPrObSjNPocjc4MskXUbA/O21qZtHblr54uM4v7rzR0eBdePYPlL8me+9J
+/ROW3gtRrLj6wn5fB/A8LwXFPB6RwxZouGSCknF+Dpmp0j2Zo7es3N5IvqzeHOPNBEqvP5YzXh9j
+VkpN9mdvNgTbOhp+juZw/SM8aS6xxyXV/FkHm8UvVJ26Yp7EXGUW31R6Li3DI7es8aXJkivZroeB
+y5djVyyxzb5oOmpGvpHa1Y823g/nX5nqjzvC4qWXFa7Oz0KJFc7i79nEvn/Q4sqp0dvieGWWWOnV
+JnOlpycXy9ZeC8yUbPCvYjKT+RuZMnPCcfOLRn1+CcQWunHVnVeLSf2Zp5sG1gb58E0l3+BfocRJ
++sd+DCEfasz48Xr9ibuld9DN+gZk7glNfBkHQ4NH/Ol8l+Z1rOfwzDPDgl6yNScu1m/ZYORopy4l
+s5fBSf5nQcurMvBuAcS2tfJn19d5ISm/a5orr492bWf0d4rhi5SwL4pTVgeK2MMobM4PwE4pzs6m
+bUlLiEvXxcGqTg1Tsyz4fgyu0nB/wkHIOnwjC/WPM65acUZYcMwRdvmn8JPob2KCg6SSSXZCDLZj
+3tTN+jfrcOTHDJH2Jzg0n5NeZdn1eWlhnpw1c2OM8agoOMld0i0fF48PwLHGLjb8ZeY4cO1k7cW/
+mz33FPQmMm8nDcnI/wDwcj6fR/3PKb2js8LTe9hngiu85qo/8XYg1owjCKUUkl4IoiOSGRXCcZL4
+Oy+yssGXBiefZxYY+9kmorr5uj68scXDkcU41VPqfOfRjhWfd4jr7cYJ62Kam5tqm11VfU+koUcz
+Y9HOD7TvLw3VcvNY0n90crP6Aej+WSb0ZQp2uTLJL8z1SKRBzeG8N1OFYo4tTDGEV0OqYIq8q+Zs
+UBGTpBmLwSMmXsl5sijWKEA6A0EAwAQDADjjACoAr4AMBcqE4JlABqZsK5+yNTNqwlB9KOnkim7M
+bx2nTKOBn0I5ItOKkjy/FfRnBtqSrll4M+gywecfsamXTUm/yaM5VY+SYuFcY4VncYYVnwrtc6/+
+C8uxvVWXS5H/AOan/Q+l5uGKSfs38jlbXBOZPp9KMW0fMdvflinWTBNX430NR8Tj1/VSv5nteJej
+/NGSePoeI4lwzNpZZNxbx+fkL0rocA3pZeK8kqjGUGkl59H/AEZ7DXly7GN/xI+ecIy+p4tqzq/1
+ij9+n9T36dNPyEHeb6HE3+ZZpPwZ1+a42vFHP3YcysUed2n0ZzpeJ09vG0mcTeyZdfHzRg+v7VdE
+QbCk1HobXD51v4m341+B5xbOaWNt5JX8HR0OGbM3t43OV00+vzN69I9qTmSUIyvvaZRmhCOXDKMl
+fUzVcjOzTwX+kNI62fTXhdGTg/BXu7surjjhH2ml17kGrlz0qs0smwpYpwb8D1u16OYIr2Yybru2
+zyfF+CbOByyYHKkvd8zX0jWwYZZoXGrT7HU09WWOccmRdU+iOVwfM54rkqlfVfE9FDrBGVdBMwvB
+iycR1p5Y8y5oxavwvqZE+hjzKUpY1D3rpfMtH1HDwvT1YcuDXhDpV11f17mjvcG1d2EoZsUZJ+aO
+115VfejXn3YHhNz0L2MNy0MiyQ7rHN018n4nE2NHf0+mfh+1Gv3cTmvvGz6p4DroQfG4Z55c6xY9
+PclNuq/R5L80j1/CfRvZzrHPah6rFXWLftM9n6uPNfKr86MkYN9uxRh19bFqYFhwQUIR7JGaI5R5
+XXwCJBSMiIRaKIg1HK2/iGWfPXTsJ++/mDVlk9Iy4fcMiMWJpRpsyprzRNKfLZjyRSizKYsklytW
+Brrubckaq7o3GBgkjG0vIzyRjkiDXnr4ssWpwTXxPM8Y/wBn3A+MZHly4pY8rVc0JUetUejJA+ZZ
+P9mPEtbLfD+OzWP93PHnpHc1PQRRSe5xHNl84Y4xgvys9lRaSSA4mv6P8P0oJYNaKkv25e1L7vqT
+n4dfZHcZPKm+wHi+IcIb6pU/M+f+lXAZyxy2sWN+vxq5JL3l/c+45NeE+jRy97gGDbg10TKPi/BJ
+xyyxSj26noTLu/7O+N6PFMm3weWvLHktyxZG6vzRglwj0twy5cnBsWR3V48tL8RBOWKl3Oj6O8Ie
+/wAUhJxfqsLWSb8LXZfc7XCPQ7Yzxhl4m44V3eHHLmf3pfkey19PX1MEcOvijjxx7KKIOXn0Wo2l
+9Th7/DllTtVLz8/me4liTiaebRhkT6FHxjb4bLhu7JcjWObbXkn5GfWdo+hcU9HY7eCUJQteDXdf
+I+c8Rjs+ju16viGGT1m/Y2cauPyku6f3IOlD3Ryfsv5GjHi/DeVf79r/APqI6PDMMuNZVi0JRzW6
+c4u4x+LZR9B9EMCXo1ruusnN/wD+mv6HUz66kqaMvD9WOlw/BrQdxxQUb8/iZJkHkeNejOPiEOfH
+UM8fdl/RniNjVz6Gw8GzjcJ+F9pfFeZ9h5U/A1d3hepxDXlh2sEMuN/szVgfKCod2d3iv+zvbxuW
+TgnE8mK3fqdj9ZH6N9Uamt6F+k+SCWbY0ML8WoSl/wC5CDDw3F+kcU1MLVqeaEX8rVn1aXWR530d
+9Fo8Ll63cyQ2diLuE+WuX5I9E+5QvEHFSTTSafdMCiDgcS9DPR/ilvZ4XruT/bhHll90avDvQHgP
+DX+q15TV2llm5JfKz1I6AxYMGLXgoYscYRXhFGZCRSAaK7JsSCfSDKJwr22/gZqMOOXKn0L9Z8Bq
+icnvpeSJKbt2I3JpCAYAKh0AAFBQAEccYAUAAMAAAAA5V5DACeRESxqzKDjZLNq13hi/BEvWUl2N
+hxpDj1RhXNzcMx5FTiji8Q9E8G3BpRSbPW0JoD4nxb/Z7xTS2VscPxrLGMuZRvs11MS4hxPXyrFu
+cHzqVdXiTl+H/M+30vIl4cbduEb+RB8505bu1hx+p4VuyuPWU4qCX/E0zoR4Dv54/rVixLyUud/b
+p+Z7qGDn7LoZf0aEV2t+dAfP8noxjgm5805fxf2OLxHgLcX7H4dD6pk1oy8DTy8Nx5PBAfAuI8Fy
+6bnKEXyPq15GloyrLH4qj7pu+i+LZi0krZ4TjH+zfiKyvJw+MW7um6+puX1pGWEuaCkvFWbOu/eR
+q4uAelmLDjx/4frPlio25vrR6Lg3opxPJ+s4lPDgT/YxJt/d/wBjKuYsM8+RY8UJTm+0Yq2z13AO
+BZOH4ck9ilmytXFO1FLw+fU62jw3W0IVgxpN95Pq39Tb8SDSzaEZr3UczZ4LHIn7P3R6OXZEUUfM
+uK+iGbFKexoxSyd3B9pf2PPPij0c36Pv6mxr5OybhzRfya7n21wi+8UYZaGrkkpSwY5S82iD5dh2
+Z51Fa2nt5pOvdwuK+8qPZcE9HXHJi3NxVKHtRxV2fg2elx4YQVY4KK8oqjI4SUbapAbK9xP4GDIv
+aZnh1xx+RhydwMfgNCKQCM2P3DF4mXH7n1KJydyUVk7olAWjIjGi00gMb/zGMH1k2M3PSAAAqAH2
+YwfYKhd0bhqLujbOapZjkjKzHIgIL2JGHxMsZVBrzMbVMugGTwMZlIIYkupTCCuSAUl1EXkVSIKG
+lY+QI9y0QY2q6Ahy95hFdUBbIZlkupifiUIwbOhq7mNw2MGPJF91KN2bHgNEHIXovwT/APrNb/00
+b2pw/U0ItauvDEn4RVHSSIze6l8QHFVFGKfcz10Rgn3AldgQeA0AFRx2rsRmS9lARyqKbMZln7pi
+AEUJDAAGgKBFISKQDROTskWiMiuSQErsMa6AbQgoYAFBQAAAAAAAFAccAGVAAAADAAAAGAAAAHgK
+HkUTHpMzksZOUOQpFoyrA8bJap0biSMOdU0wHrvpJGVow679trzRsNAa8kYmjZlEwyRBAFxjaJAE
+hqPUEUu4A1SJZkZDAt+6iDKleMxtFC8RoPFAiDYxe4PKv1TJw+6/mXkV45fIoMXXEjFlXUy4P8sn
+OuiYGBDQhkAZcXuv5mIzYuzKCfgTSKmSbnSAAGUAAAQDAAAAGFKkZfWvyRjAmhbyN+RLbfcAGgCk
+MTF6CMrMRlZhUMeP30DBKuok2Kye+Y2WS0WxDj4lkw8SkRWN92VBe0iWXj99WQZZLqYH3NhtX3Rr
+y7lB4Dj3QiodZr5kGwY8vvRRlMU/82PyKMrXQ1pdzYc4+Zry7gIYhkAZzDFXJGcox5OxjMku7Jcf
+IuhIwoZAAMAGAAbQAFDoBAMAFQ6AAAAAAAAAACh0BxgAZUAAAAAwAAAAAYAABXWwGBSaKU0vExgT
+jF2zrLH4mLLPnXYQn2GobPC6yo2zSi6kn5M3jCoaMU4mdmKa6ALD4oxTVSZcJODsT9p2yyVNoRQq
+pjIq2RXUvwJZBmx9cTRDjaDHPli1XcOY1JUYxobXiSSxWfC7TMsvcfyMODu0ZwNeE5RjSBtvu7Ji
+UbnSE15CplDFgin5GTG+W7EBOJs5SsAA0AAAAGABAADCgAAIBgAAADCgAAIVFXYhk1FAABQA10GB
+KFHsWSuhV9DOqrGVFdAURlkSgTVoYGhBeJfrEJx8i8K9v6HOxWYwz/zWZzBLrOTLOwgq0MDSIqgL
+FymeIeNe2ZTHD2XZTn8BqrtL7gAGmQADCkFDAAAAAAAKAAGAQh0ABQAAAAAAABQUBxwACoBgAAAD
+AQwAAABgAAAAMAAAAYEUzcUlyptrqjWAzxXbYeSPnfyMcp32RAF4w2AAZRLXVAhtWFGLPYte6Sxp
+1EBIbC7AAzYKJaZQCzYeH338jYtLu0a6AzxNiqbABmgAABAMQwoAACAYAAAAwoAACAYAAAAwoAAC
+AAGFAAAQDAAAAAKBgAQAAwoAACAE2uwDCnb82IAIgABlUqGABAAAFAwAIAACKAChgKhgAQAABQAD
+oBAMAhUOgAKAAAAAADjDACoAAYAAAAAAwAAAAGAAAAMAAAABgAAADAAAAAYAAAAAMAAAGIYUAABA
+MAAAAYUAABAMAAAAYUAABAMACgAABgABAADCgAAIBgAUAAAAwAIAAYUAABAADCgAAIAAYUAABAAD
+CgAAIAAAoGABAAARQADAVDAAgAACgACgABgEKh0AAAAAV//Z
+"
+       id="image1357"
+       x="0"
+       y="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Layer 2">
+    <g
+       aria-label="3 × 11 × (17 × 19 × 37) = 3 × 11 × 11951 = 394383 3 × (11 × 17 × 19) × 37 = 3 × 3553 × 37 = 394383 (3 × 11) × (17 × 19) × 37 = 33 × 323 × 37 = 394383 3 × (11 × 17) × 19 × 37 = 3 × 187 × 19 × 37 = 394383 (3 × 11) × 17 × 19 × 37 = 33 × 17 × 19 × 37 = 394383"
+       id="text2132"
+       style="font-size:6.35px;line-height:1.25;font-family:'times new roman';-inkscape-font-specification:'times new roman, ';letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke:#000000;paint-order:stroke fill markers;filter:url(#filter7816)">
+      <path
+         d="m 12.69945,10.929151 -1.193725,-0.21394 q 0.148828,-0.570508 0.570508,-0.8743654 0.42478,-0.3038575 1.199926,-0.3038575 0.889868,0 1.286743,0.3317627 0.396875,0.3317632 0.396875,0.8340572 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.36897 0.127124,0.226343 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356567,-0.145728 -0.589111,-0.42478 -0.229444,-0.282154 -0.353467,-0.706934 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.530201 0.15813,0.145727 0.399975,0.145727 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489892 -0.16123,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.158129 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124023,-0.124024 -0.341064,-0.124024 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8182" />
+      <path
+         d="m 18.668078,10.191212 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8184" />
+      <path
+         d="M 26.999352,9.5369881 V 14.159962 H 25.72191 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8186" />
+      <path
+         d="m 31.234753,9.5369881 v 4.6229739 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558106,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8188" />
+      <path
+         d="m 35.566271,10.191212 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8190" />
+      <path
+         d="m 42.210826,9.5369881 h 0.787549 q -0.406176,0.8991699 -0.58601,1.6619139 -0.151929,0.648023 -0.151929,1.382861 0,1.416968 0.737939,2.914551 h -0.787549 q -0.601513,-0.852661 -0.846459,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491381 0.257348,-0.706934 0.834057,-1.4789799 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8192" />
+      <path
+         d="m 46.368714,9.5369881 v 4.6229739 h -1.277442 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8194" />
+      <path
+         d="m 47.763974,9.6145028 h 3.686597 v 0.8526612 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617016,1.367359 -0.179834,0.586011 -0.241846,1.385962 h -1.258838 q 0.148828,-1.113111 0.468189,-1.866553 0.31936,-0.753442 1.010791,-1.612305 h -2.244825 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8196" />
+      <path
+         d="m 54.935629,10.191212 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8198" />
+      <path
+         d="m 63.266903,9.5369881 v 4.6229739 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8200" />
+      <path
+         d="m 64.696274,13.139869 1.255737,-0.15813 q 0.04961,0.26355 0.167432,0.37207 0.117822,0.108521 0.288355,0.108521 0.303857,0 0.474389,-0.306958 0.124024,-0.226343 0.186035,-0.958081 -0.226342,0.232544 -0.465087,0.341064 -0.238746,0.108521 -0.551905,0.108521 -0.610815,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097608 0,-0.452685 0.21394,-0.824755 0.213941,-0.3720708 0.589112,-0.5612065 0.375171,-0.1922364 0.942578,-0.1922364 0.682129,0 1.094507,0.2356446 0.412378,0.2325443 0.657324,0.7441403 0.248047,0.508496 0.248047,1.345655 0,1.230932 -0.517798,1.804541 -0.517798,0.570507 -1.435571,0.570507 -0.542603,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.20774,-0.241846 -0.319361,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.186036,-0.576709 -0.186035,-0.21084 -0.452685,-0.21084 -0.251148,0 -0.418579,0.189136 -0.164331,0.189135 -0.164331,0.567407 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430981,0.201538 0.266651,0 0.443384,-0.195337 0.176734,-0.195337 0.176734,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8202" />
+      <path
+         d="m 71.833822,10.191212 0.985987,0.976684 0.976684,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8204" />
+      <path
+         d="m 78.527987,10.929151 -1.193725,-0.21394 q 0.148828,-0.570508 0.570508,-0.8743654 0.42478,-0.3038575 1.199926,-0.3038575 0.889868,0 1.286743,0.3317627 0.396875,0.3317632 0.396875,0.8340572 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.36897 0.127124,0.226343 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356567,-0.145728 -0.589111,-0.42478 -0.229444,-0.282154 -0.353467,-0.706934 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.530201 0.15813,0.145727 0.399975,0.145727 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489892 -0.16123,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.158129 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124023,-0.124024 -0.341064,-0.124024 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8206" />
+      <path
+         d="m 81.560365,9.6145028 h 3.686597 v 0.8526612 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617017,1.367359 -0.179834,0.586011 -0.241846,1.385962 H 82.32621 q 0.148828,-1.113111 0.468188,-1.866553 0.31936,-0.753442 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8208" />
+      <path
+         d="m 86.549205,9.5369881 h -0.787549 q 0.406177,0.8991699 0.586011,1.6619139 0.151928,0.648023 0.151928,1.382861 0,1.416968 -0.737939,2.914551 h 0.787549 q 0.601513,-0.852661 0.843359,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491381 -0.254248,-0.706934 -0.830957,-1.4789799 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8210" />
+      <path
+         d="m 90.49315,10.622193 h 3.38584 v 1.007691 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8212" />
+      <path
+         d="m 97.897349,10.929151 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.8743654 0.424781,-0.3038575 1.199927,-0.3038575 0.889868,0 1.286743,0.3317627 0.396879,0.3317632 0.396879,0.8340572 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.207738,0.362769 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589112,-0.42478 -0.229443,-0.282154 -0.353466,-0.706934 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.530201 0.158129,0.145727 0.399975,0.145727 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489892 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.158129 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8214" />
+      <path
+         d="m 103.86597,10.191212 0.98599,0.976684 0.97668,-0.976684 0.71934,0.716235 -0.98289,0.976685 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8216" />
+      <path
+         d="m 112.19725,9.5369881 v 4.6229739 h -1.27744 v -3.029273 q -0.31006,0.235645 -0.60152,0.381372 -0.28835,0.145728 -0.72554,0.279053 v -1.035596 q 0.64493,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8218" />
+      <path
+         d="m 116.43265,9.5369881 v 4.6229739 h -1.27744 v -3.029273 q -0.31006,0.235645 -0.60151,0.381372 -0.28836,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.5581,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8220" />
+      <path
+         d="m 120.76417,10.191212 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976685 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8222" />
+      <path
+         d="M 129.09544,9.5369881 V 14.159962 H 127.818 v -3.029273 q -0.31006,0.235645 -0.60151,0.381372 -0.28836,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35656,-0.291455 0.5581,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8224" />
+      <path
+         d="m 133.33085,9.5369881 v 4.6229739 h -1.27745 v -3.029273 q -0.31005,0.235645 -0.60151,0.381372 -0.28835,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8226" />
+      <path
+         d="m 134.76021,13.139869 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28836,0.108521 0.30385,0 0.47439,-0.306958 0.12402,-0.226343 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341064 -0.23874,0.108521 -0.5519,0.108521 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824755 0.21395,-0.3720708 0.58912,-0.5612065 0.37517,-0.1922364 0.94257,-0.1922364 0.68213,0 1.09451,0.2356446 0.41238,0.2325443 0.65733,0.7441403 0.24804,0.508496 0.24804,1.345655 0,1.230932 -0.5178,1.804541 -0.51779,0.570507 -1.43557,0.570507 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189135 -0.16433,0.567407 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8228" />
+      <path
+         d="m 139.4514,9.6145028 h 2.99827 v 1.0076902 h -2.03088 l -0.10852,0.682129 q 0.21084,-0.09922 0.41547,-0.148828 0.20774,-0.04961 0.40928,-0.04961 0.68213,0 1.10691,0.412378 0.42478,0.412377 0.42478,1.038696 0,0.440283 -0.22014,0.84646 -0.21704,0.406176 -0.62012,0.620117 -0.39997,0.21394 -1.02629,0.21394 -0.44959,0 -0.77205,-0.08371 -0.31936,-0.08682 -0.5457,-0.254249 -0.22324,-0.170532 -0.36277,-0.384472 -0.13953,-0.213941 -0.23254,-0.533301 l 1.27744,-0.139526 q 0.0465,0.306958 0.21704,0.468188 0.17053,0.15813 0.40618,0.15813 0.26355,0 0.43408,-0.198437 0.17363,-0.201539 0.17363,-0.598414 0,-0.406176 -0.17363,-0.595312 -0.17363,-0.189136 -0.46199,-0.189136 -0.18293,0 -0.35347,0.08992 -0.12712,0.06511 -0.27905,0.235645 l -1.0759,-0.15503 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8230" />
+      <path
+         d="m 146.03704,9.5369881 v 4.6229739 h -1.27744 v -3.029273 q -0.31006,0.235645 -0.60151,0.381372 -0.28835,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8232" />
+      <path
+         d="m 149.65853,10.622193 h 3.38584 v 1.007691 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8234" />
+      <path
+         d="m 157.06273,10.929151 -1.19372,-0.21394 q 0.14882,-0.570508 0.5705,-0.8743654 0.42478,-0.3038575 1.19993,-0.3038575 0.88987,0 1.28674,0.3317627 0.39688,0.3317632 0.39688,0.8340572 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.42478 -0.22944,-0.282154 -0.35347,-0.706934 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.530201 0.15813,0.145727 0.39998,0.145727 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489892 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.158129 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8236" />
+      <path
+         d="m 160.12921,13.139869 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28835,0.108521 0.30386,0 0.47439,-0.306958 0.12402,-0.226343 0.18604,-0.958081 -0.22635,0.232544 -0.46509,0.341064 -0.23875,0.108521 -0.55191,0.108521 -0.61081,0 -1.03249,-0.434082 -0.41858,-0.434082 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824755 0.21394,-0.3720708 0.58911,-0.5612065 0.37517,-0.1922364 0.94258,-0.1922364 0.68213,0 1.09451,0.2356446 0.41237,0.2325443 0.65732,0.7441403 0.24805,0.508496 0.24805,1.345655 0,1.230932 -0.5178,1.804541 -0.5178,0.570507 -1.43557,0.570507 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18604,-0.576709 -0.18603,-0.21084 -0.45268,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189135 -0.16433,0.567407 0,0.381372 0.17053,0.58291 0.17363,0.201538 0.43098,0.201538 0.26665,0 0.44338,-0.195337 0.17674,-0.195337 0.17674,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8238" />
+      <path
+         d="m 166.4792,13.310401 h -2.30063 v -1.038696 l 2.30063,-2.7347169 h 1.10071 v 2.7936279 h 0.57051 v 0.979785 h -0.57051 v 0.849561 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21542,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8240" />
+      <path
+         d="m 169.76892,10.929151 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.8743654 0.42478,-0.3038575 1.19992,-0.3038575 0.88987,0 1.28675,0.3317627 0.39687,0.3317632 0.39687,0.8340572 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.42478 -0.22944,-0.282154 -0.35346,-0.706934 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.530201 0.15813,0.145727 0.39997,0.145727 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489892 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.158129 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8242" />
+      <path
+         d="m 173.53923,11.7167 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18603,-0.26665 -0.18603,-0.613916 0,-0.570508 0.5364,-0.9332761 0.41858,-0.2790528 1.10691,-0.2790528 0.91157,0 1.34565,0.3472657 0.43718,0.3472652 0.43718,0.8743652 0,0.306958 -0.17363,0.573608 -0.13022,0.198438 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291456 0.18293,0.644922 0,0.341065 -0.15813,0.638721 -0.15503,0.294556 -0.38447,0.455786 -0.22634,0.161231 -0.56741,0.235645 -0.33796,0.07751 -0.72243,0.07751 -0.72244,0 -1.10381,-0.170532 -0.38138,-0.170532 -0.57981,-0.502295 -0.19844,-0.331762 -0.19844,-0.74104 0,-0.399975 0.18603,-0.675928 0.18604,-0.279052 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235645 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.368969 0,-0.235645 -0.14573,-0.381372 -0.14573,-0.148829 -0.37207,-0.148829 -0.22945,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300757 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22634,0 0.40618,-0.192236 0.17983,-0.195337 0.17983,-0.492994 0,-0.300756 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23565,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8244" />
+      <path
+         d="m 178.23973,10.929151 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.8743654 0.42478,-0.3038575 1.19992,-0.3038575 0.88987,0 1.28675,0.3317627 0.39687,0.3317632 0.39687,0.8340572 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.42478 -0.22944,-0.282154 -0.35346,-0.706934 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.530201 0.15813,0.145727 0.39997,0.145727 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489892 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10541,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.158129 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8246" />
+      <path
+         d="m 12.69945,18.923535 -1.193725,-0.21394 q 0.148828,-0.570508 0.570508,-0.874366 0.42478,-0.303857 1.199926,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.36897 0.127124,0.226342 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356567,-0.145728 -0.589111,-0.424781 -0.229444,-0.282153 -0.353467,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.15813,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.16123,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124023,-0.124024 -0.341064,-0.124024 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8248" />
+      <path
+         d="m 18.668078,18.185596 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8250" />
+      <path
+         d="m 25.312633,17.531372 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648023 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254249,-1.491382 0.257348,-0.706933 0.834057,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8252" />
+      <path
+         d="m 29.470519,17.531372 v 4.622974 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8254" />
+      <path
+         d="m 33.70592,17.531372 v 4.622974 h -1.277442 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725538,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8256" />
+      <path
+         d="m 38.037437,18.185596 0.985987,0.976684 0.976684,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8258" />
+      <path
+         d="m 46.368714,17.531372 v 4.622974 h -1.277442 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8260" />
+      <path
+         d="m 47.763974,17.608887 h 3.686597 v 0.852661 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617016,1.367359 -0.179834,0.58601 -0.241846,1.385962 h -1.258838 q 0.148828,-1.113111 0.468189,-1.866553 0.31936,-0.753443 1.010791,-1.612305 h -2.244825 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8262" />
+      <path
+         d="m 54.935629,18.185596 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8264" />
+      <path
+         d="m 63.266903,17.531372 v 4.622974 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8266" />
+      <path
+         d="m 64.696274,21.134253 1.255737,-0.15813 q 0.04961,0.26355 0.167432,0.37207 0.117822,0.108521 0.288355,0.108521 0.303857,0 0.474389,-0.306958 0.124024,-0.226343 0.186035,-0.958081 -0.226342,0.232544 -0.465087,0.341064 -0.238746,0.108521 -0.551905,0.108521 -0.610815,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097608 0,-0.452685 0.21394,-0.824756 0.213941,-0.37207 0.589112,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235645 0.412378,0.232543 0.657324,0.74414 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517798,0.570508 -1.435571,0.570508 -0.542603,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.20774,-0.241846 -0.319361,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.186036,-0.576709 -0.186035,-0.21084 -0.452685,-0.21084 -0.251148,0 -0.418579,0.189136 -0.164331,0.189135 -0.164331,0.567407 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430981,0.201538 0.266651,0 0.443384,-0.195337 0.176734,-0.195337 0.176734,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8268" />
+      <path
+         d="m 69.651011,17.531372 h -0.787549 q 0.406177,0.89917 0.586011,1.661914 0.151929,0.648023 0.151929,1.382861 0,1.416968 -0.73794,2.914551 h 0.787549 q 0.601514,-0.852661 0.84336,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257349,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8270" />
+      <path
+         d="m 74.304991,18.185596 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8272" />
+      <path
+         d="m 80.999156,18.923535 -1.193726,-0.21394 q 0.148828,-0.570508 0.570508,-0.874366 0.42478,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.161231,0.533301 -0.16123,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403077,0.151929 0.226342,0.139526 0.350366,0.36897 0.127124,0.226342 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.20774,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620118,0 -0.979786,-0.145727 -0.356567,-0.145728 -0.589111,-0.424781 -0.229443,-0.282153 -0.353467,-0.706933 l 1.261939,-0.167432 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.421679,-0.186035 0.170533,-0.186035 0.170533,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173632 -0.440284,-0.173632 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167432,-0.15813 0.167432,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139527,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8274" />
+      <path
+         d="m 84.031526,17.608887 h 3.686596 v 0.852661 q -0.48059,0.434082 -0.803051,0.939477 -0.390674,0.613916 -0.617017,1.367359 -0.179834,0.58601 -0.241846,1.385962 h -1.258837 q 0.148828,-1.113111 0.468188,-1.866553 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8276" />
+      <path
+         d="m 90.49315,18.616577 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8278" />
+      <path
+         d="m 97.897349,18.923535 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.874366 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396879,0.331762 0.396879,0.834057 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.36897 0.12712,0.226342 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.207738,0.362769 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589112,-0.424781 -0.229443,-0.282153 -0.353466,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8280" />
+      <path
+         d="m 103.86597,18.185596 0.98599,0.976684 0.97668,-0.976684 0.71934,0.716235 -0.98289,0.976685 0.98289,0.989086 -0.71934,0.710035 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710035 0.98598,-0.989086 -0.98598,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8282" />
+      <path
+         d="m 110.56014,18.923535 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62011,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12403,-0.124024 -0.34107,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8284" />
+      <path
+         d="m 114.08241,17.608887 h 2.99826 v 1.00769 h -2.03088 l -0.10852,0.682129 q 0.21084,-0.09922 0.41548,-0.148828 0.20774,-0.04961 0.40928,-0.04961 0.68212,0 1.10691,0.412378 0.42478,0.412378 0.42478,1.038697 0,0.440283 -0.22015,0.84646 -0.21704,0.406176 -0.62011,0.620117 -0.39998,0.21394 -1.0263,0.21394 -0.44958,0 -0.77204,-0.08372 -0.31936,-0.08682 -0.54571,-0.254248 -0.22324,-0.170532 -0.36276,-0.384472 -0.13953,-0.213941 -0.23255,-0.533301 l 1.27744,-0.139526 q 0.0465,0.306958 0.21704,0.468188 0.17054,0.15813 0.40618,0.15813 0.26355,0 0.43408,-0.198438 0.17364,-0.201538 0.17364,-0.598413 0,-0.406176 -0.17364,-0.595312 -0.17363,-0.189136 -0.46199,-0.189136 -0.18293,0 -0.35346,0.08992 -0.12713,0.06511 -0.27905,0.235645 l -1.07591,-0.15503 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8286" />
+      <path
+         d="m 118.31781,17.608887 h 2.99826 v 1.00769 h -2.03088 l -0.10852,0.682129 q 0.21084,-0.09922 0.41548,-0.148828 0.20774,-0.04961 0.40927,-0.04961 0.68213,0 1.10691,0.412378 0.42478,0.412378 0.42478,1.038697 0,0.440283 -0.22014,0.84646 -0.21704,0.406176 -0.62012,0.620117 -0.39997,0.21394 -1.02629,0.21394 -0.44959,0 -0.77205,-0.08372 -0.31936,-0.08682 -0.5457,-0.254248 -0.22324,-0.170532 -0.36277,-0.384472 -0.13952,-0.213941 -0.23254,-0.533301 l 1.27744,-0.139526 q 0.0465,0.306958 0.21704,0.468188 0.17053,0.15813 0.40618,0.15813 0.26355,0 0.43408,-0.198438 0.17363,-0.201538 0.17363,-0.598413 0,-0.406176 -0.17363,-0.595312 -0.17363,-0.189136 -0.46199,-0.189136 -0.18293,0 -0.35346,0.08992 -0.12713,0.06511 -0.27906,0.235645 l -1.0759,-0.15503 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8288" />
+      <path
+         d="m 123.26634,18.923535 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186035 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8290" />
+      <path
+         d="m 129.23497,18.185596 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976685 0.98288,0.989086 -0.71933,0.710035 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710035 0.98599,-0.989086 -0.98599,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8292" />
+      <path
+         d="m 135.92913,18.923535 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226342 0.12712,0.542602 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16434,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8294" />
+      <path
+         d="m 138.96151,17.608887 h 3.6866 v 0.852661 q -0.48059,0.434082 -0.80305,0.939477 -0.39068,0.613916 -0.61702,1.367359 -0.17983,0.58601 -0.24185,1.385962 h -1.25883 q 0.14882,-1.113111 0.46818,-1.866553 0.31936,-0.753443 1.0108,-1.612305 h -2.24483 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8296" />
+      <path
+         d="m 145.42313,18.616577 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8298" />
+      <path
+         d="m 152.82733,18.923535 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186035 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8300" />
+      <path
+         d="m 155.89381,21.134253 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28835,0.108521 0.30386,0 0.47439,-0.306958 0.12403,-0.226343 0.18604,-0.958081 -0.22634,0.232544 -0.46509,0.341064 -0.23874,0.108521 -0.5519,0.108521 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824756 0.21394,-0.37207 0.58911,-0.561206 0.37518,-0.192236 0.94258,-0.192236 0.68213,0 1.09451,0.235645 0.41238,0.232543 0.65732,0.74414 0.24805,0.508496 0.24805,1.345654 0,1.230933 -0.5178,1.804541 -0.5178,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18604,-0.576709 -0.18603,-0.21084 -0.45268,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189135 -0.16433,0.567407 0,0.381372 0.17053,0.58291 0.17363,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8302" />
+      <path
+         d="m 162.24381,21.304785 h -2.30064 v -1.038696 l 2.30064,-2.734717 h 1.10071 V 20.325 h 0.5705 v 0.979785 h -0.5705 v 0.849561 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21543,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8304" />
+      <path
+         d="m 165.53353,18.923535 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58912,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42167,-0.186035 0.17054,-0.186035 0.17054,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14883,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8306" />
+      <path
+         d="m 169.30384,19.711084 q -0.29766,-0.15813 -0.43409,-0.353467 -0.18603,-0.26665 -0.18603,-0.613916 0,-0.570508 0.5364,-0.933276 0.41858,-0.279053 1.10691,-0.279053 0.91157,0 1.34565,0.347266 0.43719,0.347265 0.43719,0.874365 0,0.306958 -0.17364,0.573608 -0.13022,0.198438 -0.40927,0.384473 0.36897,0.176733 0.5488,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341065 -0.15813,0.638721 -0.15503,0.294556 -0.38447,0.455786 -0.22634,0.161231 -0.56741,0.235645 -0.33796,0.07751 -0.72243,0.07751 -0.72244,0 -1.10381,-0.170532 -0.38137,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18604,-0.675928 0.18603,-0.279052 0.57361,-0.430981 z m 0.5674,-0.892969 q 0,0.235645 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21705,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.368969 0,-0.235645 -0.14573,-0.381373 -0.14573,-0.148828 -0.37207,-0.148828 -0.22944,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300757 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22635,0 0.40618,-0.192237 0.17983,-0.195336 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17983,-0.192236 -0.41858,-0.192236 -0.23564,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8308" />
+      <path
+         d="m 174.00432,18.923535 -1.19372,-0.21394 q 0.14882,-0.570508 0.5705,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22634,0.139526 0.35037,0.36897 0.12712,0.226342 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8310" />
+      <path
+         d="m 12.649841,25.525756 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491382 0.257349,-0.706933 0.834058,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8312" />
+      <path
+         d="m 15.170617,26.917919 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.874366 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589112,-0.424781 -0.229443,-0.282153 -0.353466,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8314" />
+      <path
+         d="m 21.139245,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8316" />
+      <path
+         d="m 29.470519,25.525756 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8318" />
+      <path
+         d="m 33.70592,25.525756 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725538,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8320" />
+      <path
+         d="m 35.854625,25.525756 h -0.787549 q 0.406176,0.89917 0.58601,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.737939,2.914551 h 0.787549 q 0.601513,-0.852661 0.843359,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8322" />
+      <path
+         d="m 40.508604,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8324" />
+      <path
+         d="m 47.15316,25.525756 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 H 47.15316 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491382 0.257349,-0.706933 0.834058,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8326" />
+      <path
+         d="m 51.311047,25.525756 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235645 -0.601514,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8328" />
+      <path
+         d="m 52.706308,25.603271 h 3.686596 v 0.852661 q -0.480591,0.434082 -0.803052,0.939477 -0.390673,0.613916 -0.617016,1.367359 -0.179834,0.58601 -0.241846,1.385961 h -1.258838 q 0.148828,-1.11311 0.468189,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8330" />
+      <path
+         d="m 59.877966,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8332" />
+      <path
+         d="m 68.20924,25.525756 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8334" />
+      <path
+         d="m 69.638607,29.128637 1.255738,-0.15813 q 0.04961,0.26355 0.167431,0.37207 0.117823,0.108521 0.288355,0.108521 0.303857,0 0.474389,-0.306958 0.124024,-0.226343 0.186036,-0.958081 -0.226343,0.232544 -0.465088,0.341064 -0.238745,0.108521 -0.551905,0.108521 -0.610815,0 -1.032495,-0.434082 -0.418579,-0.434083 -0.418579,-1.097608 0,-0.452685 0.213941,-0.824756 0.21394,-0.37207 0.589111,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235644 0.412378,0.232544 0.657324,0.744141 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517798,0.570508 -1.435571,0.570508 -0.542603,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.20774,-0.241846 -0.319361,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.186035,-0.576709 -0.186035,-0.21084 -0.452686,-0.21084 -0.251147,0 -0.418579,0.189135 -0.164331,0.189136 -0.164331,0.567408 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430982,0.201538 0.26665,0 0.443383,-0.195337 0.176734,-0.195337 0.176734,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8336" />
+      <path
+         d="m 74.593344,25.525756 h -0.787548 q 0.406176,0.89917 0.58601,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.737939,2.914551 h 0.787548 q 0.601514,-0.852661 0.84336,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491382 -0.254249,-0.706933 -0.830958,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8338" />
+      <path
+         d="m 79.24732,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8340" />
+      <path
+         d="m 85.941485,26.917919 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.874366 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589111,-0.424781 -0.229444,-0.282153 -0.353467,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.16123,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8342" />
+      <path
+         d="m 88.973863,25.603271 h 3.686596 v 0.852661 q -0.48059,0.434082 -0.803051,0.939477 -0.390674,0.613916 -0.617017,1.367359 -0.179834,0.58601 -0.241846,1.385961 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8344" />
+      <path
+         d="m 95.435479,26.610961 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8346" />
+      <path
+         d="m 102.83968,26.917919 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16124,0.238745 -0.4868,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62011,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12403,-0.124024 -0.34107,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8348" />
+      <path
+         d="m 107.07508,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10541,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8350" />
+      <path
+         d="m 113.04371,26.17998 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989086 -0.98598,0.989086 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8352" />
+      <path
+         d="m 119.73787,26.917919 -1.19372,-0.21394 q 0.14882,-0.570508 0.5705,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8354" />
+      <path
+         d="m 126.44444,30.148729 h -3.78891 q 0.0651,-0.561206 0.39377,-1.054199 0.33176,-0.496093 1.24024,-1.168921 0.555,-0.412378 0.71003,-0.626318 0.15503,-0.21394 0.15503,-0.406177 0,-0.207739 -0.15503,-0.353467 -0.15193,-0.148828 -0.38447,-0.148828 -0.24185,0 -0.39688,0.151929 -0.15193,0.151929 -0.20464,0.536401 l -1.26503,-0.102319 q 0.0744,-0.533301 0.27285,-0.830957 0.19843,-0.300757 0.5581,-0.458887 0.36277,-0.16123 1.00149,-0.16123 0.66663,0 1.0356,0.151929 0.37207,0.151928 0.58291,0.468188 0.21394,0.313159 0.21394,0.703833 0,0.415479 -0.24495,0.79375 -0.24184,0.378272 -0.88367,0.830957 -0.38137,0.26355 -0.51159,0.36897 -0.12713,0.10542 -0.30076,0.275952 h 1.97197 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8356" />
+      <path
+         d="m 128.20867,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186036 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8358" />
+      <path
+         d="m 134.17731,26.17998 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989086 -0.98598,0.989086 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8360" />
+      <path
+         d="m 140.87146,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.5705,-0.874366 0.42479,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20773,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16434,0.0155 0.24804,0 0.41237,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8362" />
+      <path
+         d="m 143.90385,25.603271 h 3.68659 v 0.852661 q -0.48059,0.434082 -0.80305,0.939477 -0.39067,0.613916 -0.61701,1.367359 -0.17984,0.58601 -0.24185,1.385961 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866552 0.31936,-0.753443 1.01079,-1.612305 h -2.24482 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8364" />
+      <path
+         d="m 150.36546,26.610961 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8366" />
+      <path
+         d="m 157.76966,26.917919 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58912,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186036 0.17054,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14883,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8368" />
+      <path
+         d="m 160.83613,29.128637 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28836,0.108521 0.30385,0 0.47439,-0.306958 0.12402,-0.226343 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341064 -0.23874,0.108521 -0.5519,0.108521 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434083 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824756 0.21395,-0.37207 0.58912,-0.561206 0.37517,-0.192236 0.94257,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65733,0.744141 0.24804,0.508496 0.24804,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189135 -0.16433,0.189136 -0.16433,0.567408 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26666,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8370" />
+      <path
+         d="m 167.18614,29.299169 h -2.30063 v -1.038696 l 2.30063,-2.734717 h 1.10071 v 2.793628 h 0.57051 v 0.979785 h -0.57051 v 0.84956 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21543,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8372" />
+      <path
+         d="m 170.47586,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16434,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8374" />
+      <path
+         d="m 174.24617,27.705468 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18603,-0.26665 -0.18603,-0.613916 0,-0.570508 0.5364,-0.933276 0.41858,-0.279053 1.10691,-0.279053 0.91157,0 1.34565,0.347266 0.43718,0.347265 0.43718,0.874365 0,0.306958 -0.17363,0.573608 -0.13022,0.198438 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341065 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22634,0.16123 -0.56741,0.235644 -0.33796,0.07752 -0.72244,0.07752 -0.72243,0 -1.1038,-0.170532 -0.38138,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18603,-0.675928 0.18604,-0.279053 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235645 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.36897 0,-0.235644 -0.14573,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22945,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300757 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22634,0 0.40618,-0.192237 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23565,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8376" />
+      <path
+         d="m 178.94666,26.917919 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16124,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62011,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12403,-0.124024 -0.34107,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8378" />
+      <path
+         d="m 12.69945,34.912303 -1.193725,-0.213941 q 0.148828,-0.570507 0.570508,-0.874365 0.42478,-0.303857 1.199926,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356567,-0.145727 -0.589111,-0.42478 -0.229444,-0.282153 -0.353467,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.15813,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.16123,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124023,-0.124023 -0.341064,-0.124023 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8380" />
+      <path
+         d="m 18.668078,34.174363 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8382" />
+      <path
+         d="m 25.312633,33.52014 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254249,-1.491382 0.257348,-0.706933 0.834057,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8384" />
+      <path
+         d="m 29.470519,33.52014 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235644 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 V 34.73867 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8386" />
+      <path
+         d="m 33.70592,33.52014 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145728 -0.725538,0.279053 V 34.73867 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8388" />
+      <path
+         d="m 38.037437,34.174363 0.985987,0.976685 0.976684,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8390" />
+      <path
+         d="m 46.368714,33.52014 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 V 34.73867 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8392" />
+      <path
+         d="m 47.763974,33.597654 h 3.686597 v 0.852662 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617016,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258838 q 0.148828,-1.11311 0.468189,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244825 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8394" />
+      <path
+         d="m 52.752818,33.52014 h -0.787549 q 0.406177,0.89917 0.586011,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.73794,2.914551 h 0.787549 q 0.601514,-0.852661 0.843359,-1.540991 0.244947,-0.691431 0.244947,-1.447974 0,-0.784448 -0.257349,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8396" />
+      <path
+         d="m 57.406797,34.174363 0.985987,0.976685 0.976684,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8398" />
+      <path
+         d="m 65.738072,33.52014 v 4.622973 H 64.46063 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 V 34.73867 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8400" />
+      <path
+         d="m 67.167443,37.123021 1.255737,-0.15813 q 0.04961,0.263549 0.167432,0.37207 0.117822,0.108521 0.288354,0.108521 0.303858,0 0.47439,-0.306959 0.124023,-0.226342 0.186035,-0.958081 -0.226343,0.232544 -0.465088,0.341065 -0.238745,0.10852 -0.551904,0.10852 -0.610816,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.589111,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235644 0.412378,0.232544 0.657324,0.744141 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517797,0.570508 -1.435571,0.570508 -0.542602,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.207739,-0.241846 -0.31936,-0.604614 z m 2.325439,-2.027784 q 0,-0.368969 -0.186035,-0.576709 -0.186035,-0.210839 -0.452686,-0.210839 -0.251147,0 -0.418579,0.189135 -0.164331,0.189136 -0.164331,0.567408 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430982,0.201538 0.26665,0 0.443384,-0.195337 0.176733,-0.195337 0.176733,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8402" />
+      <path
+         d="m 74.304991,34.174363 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8404" />
+      <path
+         d="M 80.999156,34.912303 79.80543,34.698362 q 0.148828,-0.570507 0.570508,-0.874365 0.42478,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.161231,0.533301 -0.16123,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403077,0.151929 0.226342,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.20774,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620118,0 -0.979786,-0.145728 -0.356567,-0.145727 -0.589111,-0.42478 -0.229443,-0.282153 -0.353467,-0.706933 l 1.261939,-0.167432 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.421679,-0.186035 0.170533,-0.186036 0.170533,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440284,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167432,-0.15813 0.167432,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139527,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8406" />
+      <path
+         d="m 84.031526,33.597654 h 3.686596 v 0.852662 q -0.48059,0.434082 -0.803051,0.939477 -0.390674,0.613916 -0.617017,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8408" />
+      <path
+         d="m 90.49315,34.605345 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8410" />
+      <path
+         d="m 97.897349,34.912303 -1.193725,-0.213941 q 0.148828,-0.570507 0.570507,-0.874365 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396879,0.331763 0.396879,0.834058 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.207738,0.362769 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356568,-0.145727 -0.589112,-0.42478 -0.229443,-0.282153 -0.353466,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8412" />
+      <path
+         d="m 103.86597,34.174363 0.98599,0.976685 0.97668,-0.976685 0.71934,0.716236 -0.98289,0.976684 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8414" />
+      <path
+         d="m 112.19725,33.52014 v 4.622973 h -1.27744 v -3.029272 q -0.31006,0.235644 -0.60152,0.381372 -0.28835,0.145728 -0.72554,0.279053 V 34.73867 q 0.64493,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8416" />
+      <path
+         d="m 114.33045,35.699852 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18603,-0.266651 -0.18603,-0.613916 0,-0.570508 0.5364,-0.933277 0.41858,-0.279052 1.10691,-0.279052 0.91157,0 1.34565,0.347265 0.43718,0.347266 0.43718,0.874366 0,0.306958 -0.17363,0.573608 -0.13022,0.198437 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341064 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22634,0.16123 -0.56741,0.235644 -0.33796,0.07751 -0.72243,0.07751 -0.72244,0 -1.10381,-0.170532 -0.38137,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18604,-0.675928 0.18603,-0.279053 0.5736,-0.430981 z m 0.56741,-0.892969 q 0,0.235644 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.36897 0,-0.235644 -0.14573,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22944,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300756 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22635,0 0.40618,-0.192237 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23564,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8418" />
+      <path
+         d="m 117.82791,33.597654 h 3.6866 v 0.852662 q -0.48059,0.434082 -0.80305,0.939477 -0.39068,0.613916 -0.61702,1.367358 -0.17983,0.586011 -0.24184,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866552 0.31936,-0.753443 1.01079,-1.612305 h -2.24483 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8420" />
+      <path
+         d="m 124.99957,34.174363 0.98599,0.976685 0.97668,-0.976685 0.71934,0.716236 -0.98289,0.976684 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8422" />
+      <path
+         d="m 133.33085,33.52014 v 4.622973 h -1.27745 v -3.029272 q -0.31005,0.235644 -0.60151,0.381372 -0.28835,0.145728 -0.72554,0.279053 V 34.73867 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8424" />
+      <path
+         d="m 134.76021,37.123021 1.25574,-0.15813 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.108521 0.28836,0.108521 0.30385,0 0.47439,-0.306959 0.12402,-0.226342 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21395,-0.37207 0.58912,-0.561206 0.37517,-0.192236 0.94257,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65733,0.744141 0.24804,0.508496 0.24804,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027784 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.210839 -0.45269,-0.210839 -0.25115,0 -0.41858,0.189135 -0.16433,0.189136 -0.16433,0.567408 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8426" />
+      <path
+         d="m 141.89776,34.174363 0.98598,0.976685 0.97669,-0.976685 0.71933,0.716236 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8428" />
+      <path
+         d="m 148.59192,34.912303 -1.19372,-0.213941 q 0.14882,-0.570507 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8430" />
+      <path
+         d="m 151.62431,33.597654 h 3.68659 v 0.852662 q -0.48059,0.434082 -0.80305,0.939477 -0.39067,0.613916 -0.61701,1.367358 -0.17984,0.586011 -0.24185,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866552 0.31936,-0.753443 1.01079,-1.612305 h -2.24482 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8432" />
+      <path
+         d="m 158.08592,34.605345 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8434" />
+      <path
+         d="m 165.49011,34.912303 -1.19372,-0.213941 q 0.14883,-0.570507 0.57051,-0.874365 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35656,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186036 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8436" />
+      <path
+         d="m 168.55659,37.123021 1.25574,-0.15813 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.108521 0.28835,0.108521 0.30386,0 0.47439,-0.306959 0.12403,-0.226342 0.18604,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.58911,-0.561206 0.37518,-0.192236 0.94258,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65732,0.744141 0.24805,0.508496 0.24805,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027784 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.210839 -0.45269,-0.210839 -0.25115,0 -0.41858,0.189135 -0.16433,0.189136 -0.16433,0.567408 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8438" />
+      <path
+         d="m 174.9066,37.293553 h -2.30063 v -1.038696 l 2.30063,-2.734717 h 1.10071 v 2.793628 h 0.57051 v 0.979785 h -0.57051 v 0.84956 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21543,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8440" />
+      <path
+         d="m 178.19632,34.912303 -1.19372,-0.213941 q 0.14882,-0.570507 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8442" />
+      <path
+         d="m 181.96663,35.699852 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18604,-0.266651 -0.18604,-0.613916 0,-0.570508 0.53641,-0.933277 0.41857,-0.279052 1.10691,-0.279052 0.91157,0 1.34565,0.347265 0.43718,0.347266 0.43718,0.874366 0,0.306958 -0.17363,0.573608 -0.13023,0.198437 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341064 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22635,0.16123 -0.56741,0.235644 -0.33796,0.07751 -0.72244,0.07751 -0.72243,0 -1.1038,-0.170532 -0.38138,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18603,-0.675928 0.18604,-0.279053 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235644 0.14573,0.381372 0.14882,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13952,-0.142627 0.13952,-0.36897 0,-0.235644 -0.14572,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22945,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300756 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22634,0 0.40618,-0.192237 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23565,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8444" />
+      <path
+         d="m 186.66712,34.912303 -1.19373,-0.213941 q 0.14883,-0.570507 0.57051,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62012,0 -0.97978,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44029,-0.173633 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12403,-0.124023 -0.34107,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8446" />
+      <path
+         d="m 12.649841,41.514524 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491382 0.257349,-0.706933 0.834058,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8448" />
+      <path
+         d="m 15.170617,42.906687 -1.193725,-0.213941 q 0.148828,-0.570508 0.570507,-0.874365 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362768 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356568,-0.145727 -0.589112,-0.42478 -0.229443,-0.282153 -0.353466,-0.706934 l 1.261938,-0.167431 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.42168,-0.186036 0.170532,-0.186035 0.170532,-0.496093 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8450" />
+      <path
+         d="m 21.139245,42.168747 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8452" />
+      <path
+         d="m 29.470519,41.514524 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235644 -0.601514,0.381372 -0.288354,0.145727 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291456 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8454" />
+      <path
+         d="m 33.70592,41.514524 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145727 -0.725538,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291456 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8456" />
+      <path
+         d="m 35.854625,41.514524 h -0.787549 q 0.406176,0.89917 0.58601,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.737939,2.914551 h 0.787549 q 0.601513,-0.852661 0.843359,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8458" />
+      <path
+         d="m 40.508604,42.168747 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8460" />
+      <path
+         d="m 48.839878,41.514524 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235644 -0.601514,0.381372 -0.288354,0.145727 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291456 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8462" />
+      <path
+         d="m 50.235143,41.592038 h 3.686597 v 0.852661 q -0.480591,0.434082 -0.803052,0.939478 -0.390674,0.613916 -0.617017,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866553 0.31936,-0.753442 1.010791,-1.612304 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8464" />
+      <path
+         d="m 57.406797,42.168747 0.985987,0.976685 0.976684,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8466" />
+      <path
+         d="m 65.738072,41.514524 v 4.622973 H 64.46063 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145727 -0.725537,0.279053 v -1.035596 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291456 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8468" />
+      <path
+         d="m 67.167443,45.117404 1.255737,-0.158129 q 0.04961,0.263549 0.167432,0.37207 0.117822,0.10852 0.288354,0.10852 0.303858,0 0.47439,-0.306958 0.124023,-0.226342 0.186035,-0.958081 -0.226343,0.232544 -0.465088,0.341065 -0.238745,0.10852 -0.551904,0.10852 -0.610816,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.589111,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235644 0.412378,0.232544 0.657324,0.744141 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517797,0.570508 -1.435571,0.570508 -0.542602,0 -0.855762,-0.124024 -0.313159,-0.127124 -0.520898,-0.368969 -0.207739,-0.241846 -0.31936,-0.604615 z m 2.325439,-2.027783 q 0,-0.368969 -0.186035,-0.576709 -0.186035,-0.21084 -0.452686,-0.21084 -0.251147,0 -0.418579,0.189136 -0.164331,0.189136 -0.164331,0.567407 0,0.381372 0.170532,0.582911 0.173633,0.201538 0.430982,0.201538 0.26665,0 0.443384,-0.195337 0.176733,-0.195337 0.176733,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8470" />
+      <path
+         d="m 74.304991,42.168747 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8472" />
+      <path
+         d="M 80.999156,42.906687 79.80543,42.692746 q 0.148828,-0.570508 0.570508,-0.874365 0.42478,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.161231,0.533301 -0.16123,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403077,0.151929 0.226342,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.20774,0.362768 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620118,0 -0.979786,-0.145728 -0.356567,-0.145727 -0.589111,-0.42478 -0.229443,-0.282153 -0.353467,-0.706934 l 1.261939,-0.167431 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.421679,-0.186036 0.170533,-0.186035 0.170533,-0.496093 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440284,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167432,-0.15813 0.167432,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139527,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8474" />
+      <path
+         d="m 84.031526,41.592038 h 3.686596 v 0.852661 q -0.48059,0.434082 -0.803051,0.939478 -0.390674,0.613916 -0.617017,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866553 0.31936,-0.753442 1.010791,-1.612304 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8476" />
+      <path
+         d="m 90.49315,42.599729 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8478" />
+      <path
+         d="m 97.897349,42.906687 -1.193725,-0.213941 q 0.148828,-0.570508 0.570507,-0.874365 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396879,0.331763 0.396879,0.834058 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.207738,0.362768 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356568,-0.145727 -0.589112,-0.42478 -0.229443,-0.282153 -0.353466,-0.706934 l 1.261938,-0.167431 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186036 0.170532,-0.186035 0.170532,-0.496093 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8480" />
+      <path
+         d="m 102.13275,42.906687 -1.19373,-0.213941 q 0.14883,-0.570508 0.57051,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62012,0 -0.97978,-0.145728 -0.35657,-0.145727 -0.58912,-0.42478 -0.22944,-0.282153 -0.35346,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44029,-0.173633 -0.14883,0 -0.40927,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12403,-0.124023 -0.34107,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8482" />
+      <path
+         d="m 108.10138,42.168747 0.98598,0.976685 0.97669,-0.976685 0.71933,0.716236 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8484" />
+      <path
+         d="m 116.43265,41.514524 v 4.622973 h -1.27744 v -3.029272 q -0.31006,0.235644 -0.60151,0.381372 -0.28836,0.145727 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291456 0.5581,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8486" />
+      <path
+         d="m 117.82791,41.592038 h 3.6866 v 0.852661 q -0.48059,0.434082 -0.80305,0.939478 -0.39068,0.613916 -0.61702,1.367358 -0.17983,0.586011 -0.24184,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866553 0.31936,-0.753442 1.01079,-1.612304 h -2.24483 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8488" />
+      <path
+         d="m 124.99957,42.168747 0.98599,0.976685 0.97668,-0.976685 0.71934,0.716236 -0.98289,0.976684 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8490" />
+      <path
+         d="m 133.33085,41.514524 v 4.622973 h -1.27745 v -3.029272 q -0.31005,0.235644 -0.60151,0.381372 -0.28835,0.145727 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291456 0.55811,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8492" />
+      <path
+         d="m 134.76021,45.117404 1.25574,-0.158129 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.10852 0.28836,0.10852 0.30385,0 0.47439,-0.306958 0.12402,-0.226342 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21395,-0.37207 0.58912,-0.561206 0.37517,-0.192236 0.94257,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65733,0.744141 0.24804,0.508496 0.24804,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124024 -0.31316,-0.127124 -0.5209,-0.368969 -0.20774,-0.241846 -0.31936,-0.604615 z m 2.32544,-2.027783 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189136 -0.16433,0.567407 0,0.381372 0.17053,0.582911 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8494" />
+      <path
+         d="m 141.89776,42.168747 0.98598,0.976685 0.97669,-0.976685 0.71933,0.716236 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8496" />
+      <path
+         d="m 148.59192,42.906687 -1.19372,-0.213941 q 0.14882,-0.570508 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8498" />
+      <path
+         d="m 151.62431,41.592038 h 3.68659 v 0.852661 q -0.48059,0.434082 -0.80305,0.939478 -0.39067,0.613916 -0.61701,1.367358 -0.17984,0.586011 -0.24185,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866553 0.31936,-0.753442 1.01079,-1.612304 h -2.24482 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8500" />
+      <path
+         d="m 158.08592,42.599729 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8502" />
+      <path
+         d="m 165.49011,42.906687 -1.19372,-0.213941 q 0.14883,-0.570508 0.57051,-0.874365 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35656,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35346,-0.706934 l 1.26193,-0.167431 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186036 0.17054,-0.186035 0.17054,-0.496093 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8504" />
+      <path
+         d="m 168.55659,45.117404 1.25574,-0.158129 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.10852 0.28835,0.10852 0.30386,0 0.47439,-0.306958 0.12403,-0.226342 0.18604,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.58911,-0.561206 0.37518,-0.192236 0.94258,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65732,0.744141 0.24805,0.508496 0.24805,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124024 -0.31316,-0.127124 -0.5209,-0.368969 -0.20774,-0.241846 -0.31936,-0.604615 z m 2.32544,-2.027783 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189136 -0.16433,0.567407 0,0.381372 0.17053,0.582911 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8506" />
+      <path
+         d="m 174.9066,45.287937 h -2.30063 V 44.24924 l 2.30063,-2.734716 h 1.10071 v 2.793628 h 0.57051 v 0.979785 h -0.57051 v 0.84956 h -1.10071 z m 0,-0.979785 v -1.429371 l -1.21543,1.429371 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8508" />
+      <path
+         d="m 178.19632,42.906687 -1.19372,-0.213941 q 0.14882,-0.570508 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8510" />
+      <path
+         d="m 181.96663,43.694236 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18604,-0.266651 -0.18604,-0.613916 0,-0.570508 0.53641,-0.933277 0.41857,-0.279052 1.10691,-0.279052 0.91157,0 1.34565,0.347265 0.43718,0.347266 0.43718,0.874365 0,0.306958 -0.17363,0.573609 -0.13023,0.198437 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341064 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22635,0.16123 -0.56741,0.235644 -0.33796,0.07751 -0.72244,0.07751 -0.72243,0 -1.1038,-0.170532 -0.38138,-0.170533 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18603,-0.675928 0.18604,-0.279053 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235644 0.14573,0.381372 0.14882,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13952,-0.142627 0.13952,-0.36897 0,-0.235644 -0.14572,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22945,0 -0.37517,0.145727 -0.14263,0.142627 -0.14263,0.372071 z m -0.0682,1.956469 q 0,0.300757 0.18293,0.492994 0.18294,0.189135 0.41858,0.189135 0.22634,0 0.40618,-0.192236 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192237 -0.41858,-0.192237 -0.23565,0 -0.41238,0.186036 -0.17363,0.186035 -0.17363,0.502294 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8512" />
+      <path
+         d="m 186.66712,42.906687 -1.19373,-0.213941 q 0.14883,-0.570508 0.57051,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62012,0 -0.97978,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22945,-0.282153 -0.35347,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44029,-0.173633 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12403,-0.124023 -0.34107,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8514" />
+    </g>
+  </g>
+</svg>
diff --git a/blog/20220131/index.html.jst b/blog/20220131/index.html.jst
new file mode 100644 (file)
index 0000000..edb52af
--- /dev/null
@@ -0,0 +1,872 @@
+return async env => {
+  let blog_post = await _require('/_lib/blog_post.jst')
+  let fa_cloud_upload_alt = await env.site.get_min_svg('/_svg/fa_cloud-upload-alt.svg')
+  let fa_server = await env.site.get_min_svg('/blog/20220128/fa_server.svg')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+
+  await blog_post(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      p {
+        'So after gaining considerable momentum to complete the refactoring project of the last 3–4 weeks, I am happy with things and can take a breather. Whilst the site still has the same basic functionality (read static content, sign up, verify email, password reset, sign in/out, change details and password), things are very different under the hood, and there are also visible UX improvements.'
+      }
+
+      p {
+        'The '
+        a (href="../20220114/index.html") {
+          tt {'LogJSON'}
+        }
+        ' database has been in a useable state for about 2 weeks and since then I have been changing all the flows to store the data (such as user-account data upon sign up) in the central '
+        tt {'LogJSON'}
+        ' database for the site, rather than individual JSON files. But since this required rewriting almost all code, I decided the rewrite would encompass the following points:'
+        ul {
+          li {
+            'Change data storage to use '
+            tt {'LogJSON'}
+            ' (the original goal of the rewrite).'
+          }
+          li {
+            'Partition the logic into API endpoints and pages.'
+          }
+          li {
+            'Rearrange the code into a sensible directory structure.'
+          }
+          li {
+            'UX improvements, such as custom forms and fewer pop-ups.'
+          }
+        }
+        'I will discuss each point in further detail next.'
+      }
+
+      h4 {
+        'Change data storage to use '
+        tt {'LogJSON'}
+      }
+
+      h5 {
+        'The experience with '
+        tt {'LogJSON'}
+        ' to date'
+      }
+
+      p {
+        'After some weeks of using '
+        tt {'LogJSON'}
+        ' for the backend storage, the experience has been very good. Compared to the traditional 2-dimensional structure of a relational database (SQL), the tree-like structure of '
+        tt {'LogJSON'}
+        ' proves to be quite convenient.'
+      }
+
+      p {
+        'The JSON structure of the database at the moment looks like '
+        pre {
+        `{
+  "globals": {...},
+  "sessions": {...},
+  "accounts": {...},
+  "navigation: {...}
+  "nodemailers: {...}
+}
+`
+        }
+        'where '
+        tt {'globals'}
+        ' stores miscellaneous information such as the site’s title and copyright message, '
+        tt {'sessions'}
+        ' stores information about each browser session connected to the site (including sign-in status), '
+        tt {'accounts'}
+        ' stores information about signed-up users, '
+        tt {'navigation'}
+        ' stores the navigation tree of the site (basically a mapping from directory names to page titles, in a hierarchical structure), and '
+        tt {'nodemailers'}
+        ' stores information about mail accounts and servers which we use for verifying users’ email addresses and similar purposes.'
+      }
+
+      p {
+        'The '
+        tt {'sessions'}
+        ' and '
+        tt {'accounts'}
+        ' JSON Objects are keyed by the user’s session or account identifier respectively, and lead to a JSON Object per session or account. These latter do not have a predefined structure, as any part of the business logic is able to add a new key to the session or account as required. This is useful because normally this kind of addition would require a SQL structure change or a new table, both of which are inconvenient and time-consuming to implement.'
+      }
+
+      p {
+        'Of course, it is also easy to add new top-level keys to the database for new functionality that doesn’t reside in the session or account. The general approach I have taken is that any code accessing the database and expecting a particular key should add that key if it does not exist. Ultimately we might want to have a schema for the database, and predefined objects with predefined field sets. This would also work well, but would require a bit more effort upfront.'
+      }
+
+      p {
+        'From a historical perspective, my understanding was that IBM was making object-oriented databases in the 70s and 80s before Oracle popularized the relational paradigm with SQL in the late 80s and 90s. Having taught the relational algebra at undergraduate level, I appreciate there are many good things about it, and I would not want to dismiss it out of hand. But I still think that the idea of object databases deserves reconsideration, hence my experiment here.'
+      }
+
+      h5 {
+        'Use of '
+        tt {'LogJSON'}
+        ' transactions'
+      }
+
+      p {
+        'In my initial attempt at the conversion to '
+        tt {'LogJSON'}
+        ', I was trying to keep the number of transactions to a minimum, particularly considering that all parent objects to a changed object must be rewritten to the log every transaction.'
+      }
+
+      p {
+        'So each API endpoint would, for example, invoke the code to generate a new session cookie and enter or locate a session object in the database, after having opened the transaction it would use to perform its own operation. This avoided having an extra transaction just to deal with the session cookie, but also made the logic for each API endpoint more complex. A similar issue arose when serving pages and dealing with analytics or sign in/out status for the navbar.'
+      }
+
+      p {
+        'A particularly annoying thing about this â€˜optimization’ was that transactions which were inherently read-only were becoming read-write in general, since they might write a new session even if the rest of the transaction was only reading. This added considerable complexity to the read-only transactions such as â€˜get’ API endpoints and the navbar template.'
+      }
+
+      p {
+        'Therefore, I eventually realized that this was not really an optimization, and so I changed it so that when you hit the server, it will usually run 3 or 4 smaller database transactions throughout the process, e.g. for the session cookie, the analytics, the navbar, and whatever operation is needed by the page itself. Some of these are read-only, which will improve concurrency. A cost is that the log grows slightly faster, as there are multiple write transactions too.'
+      }
+
+      h5 {
+        'Potential issues with '
+        tt {'LogJSON'}
+        ' and solutions'
+      }
+
+      p {
+        'It must be admitted that the '
+        tt {'accounts'}
+        ' object is not scalable as things stand, since for example when I create a management interface for users, I will want to display something like 20 users per page sorted by email, and at present you would have to extract the entire set of keys from the '
+        tt {'accounts'}
+        ' object simultaneously and sort them to make any sense of them.'
+      }
+
+      p {
+        'Therefore, I plan to create a B-Tree index of email addresses in sorted order, which will be maintained as accounts are added and removed. This B-Tree will be encoded into JSON and stored in the database as well. I will do this before attempting to create the management interface.'
+      }
+
+      p {
+        'Another scalability issue is that '
+        tt {'LogJSON'}
+        ' generally writes out an entire JSON Object (plus all its parent objects) when it changes. Although it does not write out the child objects that have not changed, an object with many keys will still place a strain on the system (since all keys and pointers to their corresponding child objects must be written out even if only one key or pointer has changed). I see two possible solutions to this issue:'
+      }
+
+      p {
+        b {
+          'Improve '
+          tt {'LogJSON'}
+          ' to only write out changed keys.'
+        }
+        ' Later on we will need to track the deltas (changed keys) of each transaction precisely in order to improve concurrency (needed in turn if the load on the webserver is high). If we write the transactions to the log in delta-format, then they will be quicker to write. But conversely, they will be slower to read.'
+      }
+
+      p {
+        b {
+          'Modify database clients to avoid writing large objects.'
+        }
+        ' We could use a hashing approach to implement this. Suppose the user’s account key was '
+        tt {'jane@doe.com'}
+        ', we could hash this to find a hex value of say '
+        tt {'0x569a'}
+        ', and then we break up the '
+        tt {'accounts'}
+        ' object by storing under the hash first, e.g.'
+        pre {
+          `{
+  ...
+  "accounts": {
+    ...
+    "56": {
+      ...
+      "9a": {
+        ...
+        "jane@doe.com": {...},
+        ...
+      },
+      ...
+    },
+    ...
+  },
+  ...
+}
+`
+        }
+        'and this way the top 2 levels of the '
+        tt {'accounts'}
+        ' table would have at most 256 entries each (easy to write out each time they change) and the next level would have about 1/65536 the number of entries as the original table. This would scale to at least hundreds of thousands of accounts. An adaptive scheme might also be considered.'
+      }
+
+      p {
+        'A cheap way to achieve the second goal might be simply to store the data in B-Trees (implemented via JSON Arrays of some fixed maximum size corresponding to the B-Tree block size) rather than JSON Objects directly. It would give the advantage of being able to extract data in order as well as by key. Even if we didn’t use this latter feature, the nature of the B-Tree itself provides an adaptive way of keeping the index in manageably sized chunks.'
+      }
+
+      h5 {
+        'Final comments on the '
+        tt {'LogJSON'}
+        ' experiment'
+      }
+
+      p {
+        'I also fixed several minor bugs in '
+        tt {'LogJSON'}
+        ' over the last few weeks and it appears to be stable at this point. I must admit I have not constructed a large-scale programmatic test (add and remove thousands of items at different hierarchical levels, perhaps concurrently, and test that everything is stored correctly throughout the process) but I will do so eventually. I’ll also make a similar test to simulate heavy load on the website and exercise the database in the process.'
+      }
+
+      p {
+        'Overall, I’m satisfied with the progress of the '
+        tt {'LogJSON'}
+        ' experiment, though I haven’t implemented the planned B-Tree layer yet. (I have been doing some research into B-Trees in preparation and have found some MIT-licensed sample code, although it’s not perfect for my requirement).'
+      }
+
+      h4 {
+        'Partition the logic into API endpoints and pages'
+      }
+
+      p {
+        'Under the new scheme, API endpoints use POST requests and return machine-readable responses, whereas pages use GET requests and return human-readable markup. This helps to separate business logic from presentation logic. Whilst I’m not generally a huge fan of model/view/controller type schemes, I must admit that my previous code was a bit messy when both logics were intermixed, and it was hard to see what was happening when you returned to the code later on.'
+      }
+
+      p {
+        'In the previous way, with the business logic encoded into the particular pages it was used on, the page would generally check for a POST request and do something different in such case, for instance it might save something in the database and return a thank-you page.'
+      }
+
+      p {
+        'I did have a few machine-readable API endpoints for special cases such as the sign-in, and some interesting API endpoints uch as the sign-out which would return status text to be displayed in the page. But as there was no clear separation between API endpoints and pages, these endpoints simply appeared as pages that the user would not normally read directly.'
+      }
+
+      p {
+        'The new API-based way is much better from the UX perspective too, as we do not have to return a new page to the user each time they interact with the site, and given that APIs return machine-readable responses it is easy to indicate the progress of an operation with ticks, crosses and the like. And we can make the API more granular and present a running status to the user during a sequence of several API calls, which is easier to implement and better for the UX.'
+      }
+
+      p {
+        'Interestingly, I can still use some text-based status messages (where the API endpoint returns text to be embedded in the page, like it used to) because I have standardized all API errors to return an '
+        tt {'application/problem+json'}
+        ' object mostly following IETF standards, and this contains a '
+        tt {'detail'}
+        ' field where I can describe an error message for the user. However, in the success case, any message for the user is generated by client-side code rather than being returned from the API as in the old way.'
+      }
+
+      p {
+        'The new API endpoints are very easy to use, since I have the utility class '
+        tt {'Problem'}
+        ' and utility function '
+        tt {'api_call()'}
+        ' which take care of marshalling the call across the client/server boundary. At the server side, each endpoint such as '
+        tt {'/api/account/sign_in.json'}
+        ' is held in a corresponding source file such as '
+        tt {'/api/account/sign_in.json.jst'}
+        ' and the marshalling is done by a subroutine '
+        tt {'post_request()'}
+        ' in '
+        tt {'/_lib/post_request.jst'}
+        ', which also avoids a lot of duplication compared to before. To create a new endpoint, you simply copy a similar endpoint source file to the new endpoint name.'
+      }
+
+      h4 {
+        'Rearrange the code into a sensible directory structure'
+      }
+
+      p {
+        'Basically under the new system, things are placed in different directories from the root according to their function, similar to how in a '
+        tt {'unix'}
+        ' system you have '
+        tt {'/bin'}
+        ', '
+        tt {'/lib'}
+        ', '
+        tt {'/usr'}
+        ' and so on, and a package will divide up its files between these directories. Whilst there is some argument about this (would it not be better to have each package keep all its files in the same place?), there are also advantages to separating things out by function.'
+      }
+
+      p {
+        'So under the new scheme, API endpoints are under '
+        tt {'/api'}
+        ', utility code and templates are under '
+        tt {'/_lib'}
+        ', and pages are under the original directory structure reflecting the navigation tree of the site.'
+      }
+
+      p {
+        'In the previous way, it mainly followed the navigation tree of the site, which was not very flexible, since the navigation tree does not necessarily reflect the structure we need for the logic, and also was quite messy as API, utility and template code occurred at various levels of the hierarchy among the code that generated the pages.'
+      }
+
+      p {
+        'The previous theory was that if for example I wanted to add a blog functionality to some other website, I’d just copy the '
+        tt {'/blog'}
+        ' directory and all business logic and templates would automatically be installed as well. But I have decided that mixing everything together was too impractical, so I might have to write an installation procedure at some point if I want a component system for sites. For the time being I’ll just install things in the needed places manually, which is not really much of a hassle.'
+      }
+
+      h4 {
+        'UX improvements, such as custom forms and fewer pop-ups'
+      }
+
+      h5 {
+        'Old style form filling'
+      }
+
+      p {
+        'In the old way we were simply using plain old HTML forms with a â€˜Submit’ button, and the browser would encode them into something like JSON (I am not entirely clear how this encoding works) and submit them with a POST request.'
+      }
+
+      p {
+        'I created a little in-browser simulation to demonstrate how this the old style of form worked. Please have a play with it, and then we will demonstrate some UX improvements. Note that for example purposes, you can trigger a server-side error by entering the name â€˜Jane Doe’.'
+      }
+
+      div.row.mb-3 {
+        div.col-md-8 {
+          div.card {
+            div.card-body(style="height: 400px;") {
+              p {
+                a#old-refresh(href='#') {'Refresh'}
+              }
+
+              div#old-main {
+                p {
+                  'Please enter your details to receive a greeting message!'
+                }
+
+                form#old-form {
+                  div.row {
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="old-given-names") {'Given names *'}
+                        input.form-control#old-given-names(type="text" placeholder="Your given names" required maxlength=256) {}
+                      }
+                    }
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="old-family-name") {'Family name *'}
+                        input.form-control#old-family-name(type="text" placeholder="Your family name" required maxlength=256) {}
+                      }
+                    }
+                  }
+                }
+                button.btn.btn-success#old-submit(type="button") {'Submit'}
+                p.text-muted.'mt-3'.mb-0 {'* This field is required.'}
+              }
+
+              p.mb-0#old-message(hidden) {}
+            }
+          }
+        }
+        div.'col-md-4'.align-self-center {
+          div.icon {
+            svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512") {
+              circle#old-pip0(cx="64" cy="256" r="16") {}
+              circle#old-pip1(cx="128" cy="256" r="16") {}
+              circle#old-pip2(cx="192" cy="256" r="16") {}
+              circle#old-pip3(cx="256" cy="256" r="16") {}
+              circle#old-pip4(cx="320" cy="256" r="16") {}
+              circle#old-pip5(cx="384" cy="256" r="16") {}
+              circle#old-pip6(cx="448" cy="256" r="16") {}
+            }
+          }
+          div.icon.'ml-3'#old-server {
+            _out.push(fa_server)
+          }
+          pre.wrap#old-details(style="height: 250px;") {
+            `details = undefined
+`
+          }
+        }
+      }
+
+      p {
+        'In the above demonstration form, we had followed one good UX practice:'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Tell the user why we need this information and what we will do with it.'
+      }
+
+      p {
+        'However, we had also broken another recommended UX practice:'
+      }
+      div.alert.alert-danger {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_cross)}
+        }
+        'Don’t repeat the field name in the placeholder text.'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Use a real person’s name or details for example purposes, as this will speed data entry.'
+      }
+
+      p {
+        'We are using the browser’s built-in validation style above, which isn’t consistent across browsers. On Chromium, if you do not fill in a required field, a tooltip appears saying â€˜Please fill in this field’. I don’t think this text can be changed, and more annoyingly, only the first error is indicted. Whilst this doesn’t specifically violate any UX guidelines, we can do better:'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Use a custom validation style to highlight errors with colour and provide useful hints for the expected input.'
+      }
+
+      p {
+        'Another UX issue that is demonstrated in the above example is:'
+      }
+      div.alert.alert-danger {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_cross)}
+        }
+        'Don’t throw away the user’s partial input if they have to refresh the page!'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Save a draft to the server during data entry, and pre-populate the form on refresh.'
+      }
+
+      p {
+        'Form filling was one of the killer applications for the early web, and the old way of doing things worked well for its time. Whilst the traditional way is often like it is for a reason, and I do not agree with change for the sake of change, there are definitely improvements to be made in this case. We will look at the improved form UX next.'
+      }
+
+      h5 {
+        'New style form filling'
+      }
+
+      p {
+        'In the new way we use an API endpoint, or several, to receive the user’s input. This allows us to stay on the same page and provide interactive feedback to the user, e.g. if something goes wrong. We can also implement advanced features, such as the saving of drafts, etc.'
+      }
+
+      p {
+        'Here is an in-browser simulation to demonstrate the improved form-filling UX. Please have a play with it, and recall that for example purposes, you can trigger a server-side error by entering the name â€˜Jane Doe’.'
+      }
+
+      div.row.mb-3 {
+        div.col-md-8 {
+          div.card {
+            div.card-body(style="height: 450px;") {
+              p {
+                a#new-refresh(href='#') {'Refresh'}
+              }
+
+              div#new-main {
+                p {
+                  'Please enter your details to receive a greeting message!'
+                }
+
+                form#new-form {
+                  div.row {
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="new-given-names") {'Given names *'}
+                        input.form-control#new-given-names(type="text" placeholder="Jane" required maxlength=256) {}
+                        div.invalid-feedback {'Please enter a name we can address you by.'}
+                      }
+                    }
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="new-family-name") {'Family name *'}
+                        input.form-control#new-family-name(type="text" placeholder="Doe" required maxlength=256) {}
+                        div.invalid-feedback {'Please enter something. You can enter â€˜X’ if you do not have a family name.'}
+                      }
+                    }
+                  }
+                }
+                button.btn.btn-success#new-submit(type="button" disabled) {
+                  div.icon24-outer.mr-2#new-icon {
+                    div.icon24-inner {_out.push(fa_cloud_upload_alt)}
+                  }
+                  div.icon24-outer.mr-2#new-tick(hidden) {
+                    div.icon24-inner {_out.push(icon_tick)}
+                  }
+                  div.icon24-outer.mr-2#new-cross(hidden) {
+                    div.icon24-inner {_out.push(icon_cross)}
+                  }
+                  div.icon24-outer.mr-2#new-spinner(hidden) {
+                    div.icon24-inner {
+                      div.spinner-border.spinner-border-sm(role="status") {}
+                    }
+                  }
+                  'Submit'
+                }
+                p.text-muted.'mt-3'.mb-0 {'* This field is required.'}
+              }
+
+              div.alert.mb-0#new-message(hidden) {}
+            }
+          }
+        }
+        div.'col-md-4'.align-self-center {
+          div.icon {
+            svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512") {
+              circle#new-pip0(cx="64" cy="256" r="16") {}
+              circle#new-pip1(cx="128" cy="256" r="16") {}
+              circle#new-pip2(cx="192" cy="256" r="16") {}
+              circle#new-pip3(cx="256" cy="256" r="16") {}
+              circle#new-pip4(cx="320" cy="256" r="16") {}
+              circle#new-pip5(cx="384" cy="256" r="16") {}
+              circle#new-pip6(cx="448" cy="256" r="16") {}
+            }
+          }
+          div.icon.'ml-3'#new-server {
+            _out.push(fa_server)
+          }
+          pre.wrap#new-details(style="height: 250px;") {
+            `draft_details = undefined
+details = undefined
+`
+          }
+        }
+      }
+
+      p {
+        'In this simulation we are able to see all communication with the server, including the saving of the draft which is normally silent from the user’s viewpoint. The draft is saved every 3 seconds (plus the round-trip time) whilst editing is taking place. The simulation correctly shows also that you can trick the system by refreshing the page very quickly after an edit.'
+      }
+
+      p {
+        'Note that the draft can be saved '
+        i {'after'}
+        ' the form is submitted, which is probably redundant but harmless. It might be good to clear the form once submitted, and the corresponding draft, but I have not formed a clear policy on this. For the time being, I’m relying on stale drafts expiring at the server after a timeout of 1 day.'
+      }
+
+      p {
+        'Some other good UX practices that we are adopting in the improved form are:'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Provide an icon in every button, this speeds entry and also assists non-English speaking users.'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Provide strong visual indication of completion, success or failure by means of icons and colours.'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Show a pacifier when undertaking an operation that takes time, this confirms that the last click was received and also makes the operation seem quicker.'
+      }
+      div.alert.alert-success {
+        div.icon24-outer.mr-2 {
+          div.icon24-inner {_out.push(icon_tick)}
+        }
+        'Disable UI elements such as buttons when it doesn’t make sense to interact with them yet.'
+      }
+
+      h5 {
+        'Final comments on form filling'
+      }
+
+      p {
+      }
+
+      p {
+        'Whilst the old way was sufficient, it was only that, sufficient. The new way provides a more vibrant experience for the user, while capturing the data in a more efficient way by guiding the user through the process. We are also striving to reduce user frustration that could result in them leaving the form (and lost sales/conversions in a commercial context).'
+      }
+
+      p {
+        'Sadly I have not had time to make the form accessible yet, and that will probably be the subject of a future article. Apart from that, the experiment with providing a modern form-filling UX has been very successful. Although it has taken a week or so of experimentation, I consider this time well spent, as I learned something about modern UX design.'
+      }
+
+      h4 {
+        'Conclusions'
+      }
+
+      p {
+        'The new internals of the site are much more pleasant to work on, as things are much more organized, and the '
+        tt {'LogJSON'}
+        ' database allows plenty of flexibility. Thus we can quickly implement UX features such as the saving of drafts. Moreover, the new UX (implemented during the database upgrade) is much more visually pleasing and easier to use.'
+      }
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_old_details = document.getElementById('old-details')
+            let id_old_family_name = document.getElementById('old-family-name')
+            let id_old_form = document.getElementById('old-form')
+            let id_old_given_names = document.getElementById('old-given-names')
+            let id_old_main = document.getElementById('old-main')
+            let id_old_message = document.getElementById('old-message')
+            let id_old_pips = [
+              document.getElementById('old-pip0'),
+              document.getElementById('old-pip1'),
+              document.getElementById('old-pip2'),
+              document.getElementById('old-pip3'),
+              document.getElementById('old-pip4'),
+              document.getElementById('old-pip5'),
+              document.getElementById('old-pip6')
+            ]
+            let id_old_refresh = document.getElementById('old-refresh')
+            let id_old_server = document.getElementById('old-server')
+            let id_old_submit = document.getElementById('old-submit')
+
+            let id_new_cross = document.getElementById('new-cross')
+            let id_new_details = document.getElementById('new-details')
+            let id_new_family_name = document.getElementById('new-family-name')
+            let id_new_form = document.getElementById('new-form')
+            let id_new_given_names = document.getElementById('new-given-names')
+            let id_new_icon = document.getElementById('new-icon')
+            let id_new_main = document.getElementById('new-main')
+            let id_new_message = document.getElementById('new-message')
+            let id_new_pips = [
+              document.getElementById('new-pip0'),
+              document.getElementById('new-pip1'),
+              document.getElementById('new-pip2'),
+              document.getElementById('new-pip3'),
+              document.getElementById('new-pip4'),
+              document.getElementById('new-pip5'),
+              document.getElementById('new-pip6')
+            ]
+            let id_new_refresh = document.getElementById('new-refresh')
+            let id_new_server = document.getElementById('new-server')
+            let id_new_spinner = document.getElementById('new-spinner')
+            let id_new_submit = document.getElementById('new-submit')
+            let id_new_tick = document.getElementById('new-tick')
+
+            // old simulation
+            let old_pips_to_server = async () => {
+              for (let i = 0; i < 7; ++i) {
+                id_old_pips[i].setAttribute('r', 32)
+                await new Promise(resolve => setTimeout(resolve, 100))
+                id_old_pips[i].setAttribute('r', 16)
+              }
+            }
+            let old_pips_at_server = async success => {
+              id_old_server.classList.add(
+                success ? 'text-success' : 'text-danger'
+              )
+              await new Promise(resolve => setTimeout(resolve, 100))
+              id_old_server.classList.remove(
+                success ? 'text-success' : 'text-danger'
+              )
+            }
+            let old_pips_from_server = async () => {
+              for (let i = 6; i >= 0; --i) {
+                id_old_pips[i].setAttribute('r', 32)
+                await new Promise(resolve => setTimeout(resolve, 100))
+                id_old_pips[i].setAttribute('r', 16)
+              }
+            }
+
+            id_old_refresh.addEventListener(
+              'click'
+              async event => {
+                event.preventDefault()
+                id_old_main.hidden = true
+                id_old_message.hidden = true
+                await old_pips_to_server()
+                id_old_details.textContent =
+                  `details = undefined
+`
+                await old_pips_at_server(true)
+                await old_pips_from_server()
+                id_old_given_names.value = ''
+                id_old_family_name.value = ''
+                id_old_main.hidden = false
+              }
+            )
+            id_old_submit.addEventListener(
+              'click',
+              async () => {
+                if (!id_old_form.reportValidity())
+                  return
+                let details = {
+                  given_names: id_old_given_names.value.slice(0, 256),
+                  family_name: id_old_family_name.value.slice(0, 256)
+                }
+                await old_pips_to_server()
+                id_old_details.textContent =
+                  `details = ${JSON.stringify(details, null, 2)}
+`
+                let success =
+                  details.given_names.toLowerCase() !== 'jane' ||
+                    details.family_name.toLowerCase() !== 'doe'
+                await old_pips_at_server(success)
+                await old_pips_from_server()
+                if (success) {
+                  //id_old_message.classList.remove('text-danger')
+                  id_old_message.textContent = `Hello, ${details.given_names} ${details.family_name}!`
+                }
+                else {
+                  //id_old_message.classList.add('text-danger')
+                  id_old_message.textContent = 'Our server has determined that you are not a real person!'
+                }
+                id_old_main.hidden = true
+                id_old_message.hidden = false
+              }
+            )
+
+            // new simulation
+            let new_pips_to_server = async () => {
+              for (let i = 0; i < 7; ++i) {
+                id_new_pips[i].setAttribute('r', 32)
+                await new Promise(resolve => setTimeout(resolve, 100))
+                id_new_pips[i].setAttribute('r', 16)
+              }
+            }
+            let new_pips_at_server = async success => {
+              id_new_server.classList.add(
+                success ? 'text-success' : 'text-danger'
+              )
+              await new Promise(resolve => setTimeout(resolve, 100))
+              id_new_server.classList.remove(
+                success ? 'text-success' : 'text-danger'
+              )
+            }
+            let new_pips_from_server = async () => {
+              for (let i = 6; i >= 0; --i) {
+                id_new_pips[i].setAttribute('r', 32)
+                await new Promise(resolve => setTimeout(resolve, 100))
+                id_new_pips[i].setAttribute('r', 16)
+              }
+            }
+
+            let new_details, new_draft_details
+            let new_refresh_details = () => {
+              id_new_details.textContent =
+                `draft_details = ${JSON.stringify(new_draft_details, null, 2)}
+details = ${JSON.stringify(new_details, null, 2)}
+`
+            }
+
+            let new_input_semaphore = new BinarySemaphore(false)
+            ;(
+              async () => {
+                while (true) {
+                  await new_input_semaphore.acquire()
+                  await new Promise(resolve => setTimeout(resolve, 3000))
+                  new_input_semaphore.try_acquire()
+                  draft_details =
+                    id_new_given_names.value.length === 0 &&
+                      id_new_family_name.value.length === 0 ?
+                      undefined :
+                      {
+                        given_names: id_new_given_names.value.slice(0, 256),
+                        family_name: id_new_family_name.value.slice(0, 256)
+                      }
+                  await new_pips_to_server()
+                  new_draft_details = draft_details
+                  new_refresh_details()
+                  await new_pips_at_server(true)
+                  await new_pips_from_server()
+                }
+              }
+            )() // ignore returned promise (start thread)
+
+            let new_edited = () => {
+              new_input_semaphore.release()
+
+              id_new_submit.disabled =
+                id_new_given_names.value.length === 0 &&
+                  id_new_family_name.value.length === 0
+              id_new_icon.hidden = false
+              id_new_tick.hidden = true
+              id_new_cross.hidden = true
+              id_new_spinner.hidden = true
+              id_new_message.hidden = true
+            }
+
+            id_new_given_names.addEventListener('input', new_edited)
+            id_new_family_name.addEventListener('input', new_edited)
+
+            id_new_refresh.addEventListener(
+              'click'
+              async event => {
+                event.preventDefault()
+                id_new_main.hidden = true
+                id_new_message.hidden = true
+                await new_pips_to_server()
+                await new_pips_at_server(true)
+                let draft_details = new_draft_details
+                await new_pips_from_server()
+                id_new_given_names.value =
+                  draft_details ? draft_details.given_names : ''
+                id_new_family_name.value =
+                  draft_details ? draft_details.family_name : ''
+                id_new_submit.disabled =
+                  id_new_given_names.value.length === 0 &&
+                    id_new_family_name.value.length === 0
+                id_new_main.hidden = false
+              }
+            )
+            id_new_submit.addEventListener(
+              'click',
+              async () => {
+                id_new_icon.hidden = false
+                id_new_tick.hidden = true
+                id_new_cross.hidden = true
+                id_new_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_new_message.hidden = true
+
+                if (!id_new_form.checkValidity()) {
+                  id_new_form.classList.add('was-validated');
+
+                  id_new_icon.hidden = true
+                  id_new_cross.hidden = false
+                  return
+                }
+                id_new_form.classList.remove('was-validated');
+
+                let details = {
+                  given_names: id_new_given_names.value.slice(0, 256),
+                  family_name: id_new_family_name.value.slice(0, 256)
+                }
+
+                id_new_icon.hidden = true
+                id_new_spinner.hidden = false
+                await new_pips_to_server()
+                new_details = details
+                new_refresh_details()
+                let success =
+                  details.given_names.toLowerCase() !== 'jane' ||
+                    details.family_name.toLowerCase() !== 'doe'
+                await new_pips_at_server(success)
+                await new_pips_from_server()
+
+                id_new_spinner.hidden = true
+                if (success) {
+                  id_new_tick.hidden = false
+
+                  id_new_message.classList.add('alert-success')
+                  id_new_message.classList.remove('alert-danger')
+                  id_new_message.textContent = `Hello, ${details.given_names} ${details.family_name}!`
+                }
+                else {
+                  id_new_cross.hidden = false
+
+                  id_new_message.classList.remove('alert-success')
+                  id_new_message.classList.add('alert-danger')
+                  id_new_message.textContent = 'Our server has determined that you are not a real person!'
+                }
+                id_new_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+
+      style {
+        .wrap {
+          white-space: pre-wrap;
+          word-wrap: break-word;
+        }
+
+        .icon {
+          display: inline-block;
+          vertical-align: center;
+          width: 128px;
+          height: 128px;
+          fill: currentColor;
+          stroke: currentColor;
+        }
+      }
+    }
+  )
+}
diff --git a/blog/20220131/pips.svg b/blog/20220131/pips.svg
new file mode 100644 (file)
index 0000000..d65eec2
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 512 512"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="pips.svg"
+   inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
+   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">
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     id="namedview6"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="true"
+     inkscape:zoom="1.6210938"
+     inkscape:cx="256"
+     inkscape:cy="262.47711"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4">
+    <inkscape:grid
+       type="xygrid"
+       id="grid1004"
+       spacingx="16"
+       spacingy="16"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->
+  <circle
+     style="fill:#000000;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000;fill-opacity:1"
+     id="path1033"
+     cx="64"
+     cy="256"
+     r="16" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000"
+     id="path1033-3"
+     cx="128"
+     cy="256"
+     r="16" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000"
+     id="path1033-6"
+     cx="192"
+     cy="256"
+     r="16" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000"
+     id="path1033-7"
+     cx="256"
+     cy="256"
+     r="16" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000"
+     id="path1033-5"
+     cx="320"
+     cy="256"
+     r="16" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000"
+     id="path1033-35"
+     cx="384"
+     cy="256"
+     r="16" />
+  <circle
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;paint-order:stroke fill markers;stop-color:#000000"
+     id="path1033-62"
+     cx="448"
+     cy="256"
+     r="16" />
+</svg>
diff --git a/blog/20220131/thumbnail.svg b/blog/20220131/thumbnail.svg
new file mode 100644 (file)
index 0000000..d95db99
--- /dev/null
@@ -0,0 +1,892 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   sodipodi:docname="thumbnail.svg"
+   inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
+   id="svg5"
+   version="1.1"
+   viewBox="0 0 203.2 135.73125"
+   height="171"
+   width="256"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   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"
+     units="px"
+     width="768px"
+     inkscape:zoom="0.35355339"
+     inkscape:cx="743.87634"
+     inkscape:cy="323.85491"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter33502"
+       x="-1.9213957"
+       y="-1.2894872"
+       width="5.4425182"
+       height="4.0236254">
+      <feFlood
+         flood-opacity="1"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood33492" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite33494" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur33496" />
+      <feOffset
+         dx="1"
+         dy="1"
+         result="offset"
+         id="feOffset33498" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite33500" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter7816"
+       x="-0.017123455"
+       y="-0.076442801"
+       width="1.0390678"
+       height="1.1792452">
+      <feFlood
+         flood-opacity="1"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood7806" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite7808" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur7810" />
+      <feOffset
+         dx="1"
+         dy="1"
+         result="offset"
+         id="feOffset7812" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite7814" />
+    </filter>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-size:7.05556px;line-height:1.25;font-family:'times new roman';-inkscape-font-specification:'times new roman, ';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+       x="113.54689"
+       y="107.48225"
+       id="text8749"><tspan
+         sodipodi:role="line"
+         id="tspan8747"
+         style="stroke-width:0.264583"
+         x="113.54689"
+         y="107.48225" /></text>
+    <image
+       width="203.2"
+       height="135.46666"
+       preserveAspectRatio="none"
+       xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gBQUmVuZGVyIERhdGU6IDIwMjItMDEtMjkgMDA6MDc6NTZa
+ClBsYXRmb3JtOiB4ODZfNjQtcGMtbGludXgtZ251CkNvbXBpbGVyOiBnKysK/9sAQwAIBgYHBgUI
+BwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy
+/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+MjIyMjIyMjIyMjIy/8AAEQgAqwEAAwEiAAIRAQMRAf/EABwAAAIDAQEBAQAAAAAAAAAAAAADAQIF
+BgQHCP/EADgQAAEEAgECAwcDAgUEAwAAAAEAAgMSBBEFITEGQVETFCJhcYGRMqGxwdEVIyRCQwcz
+U2Nz4fD/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQID/8QAIxEBAQACAwACAQUBAAAAAAAAAAECERIh
+MQMTQSJRUmFxgf/aAAwDAQACEQMRAD8AzqoqnVRVdmSaqaptVNVAmqKp1UVVCqoqnVRVQJqiqdVT
+VUJoiqdVFVAmqKp1VNUCKIon1RVAiimidRFECaIonURRAmiKJ9EUQIoiifRRRAiiKJ9EUQIoiqfV
+FUCKoon0RRAiiiifRFUFqoqm1U1QKqiqbVTVAqqKptVNUCqoqm1U1QKqiqbVTVAmqmqbVTVAmqKp
+1UVQJqpqnVRVAmqKp1UVQJqiqdVTVAiiKJ9UVQIoiifVFUCKoqn1RVAiqKJ9VFUCaKKJ9UVQIqiq
+fVRVBFVNUyqmqBVVNUyqmqBdUVTKqaoF1RVNqiqBdUVTaoqgXVFU2qmqBVUVTaqaoE1U1TaoqgVV
+FU6qKoFVRVNqpqgTVFU6qKoE1RVOqiqBNUVTqoqgTVFU6qKoE1UVT6oqgRVFU6qKoFVU1V9KdIKV
+RVMqiqClVNVeqmqBdVNUyqKoKVRVMqpqgXVTVMqiqBdVNUyqKoF1U1TKqaoFVRVNqiqBdUVTaoqg
+VVTVNqiqgVVFU2qKoFVRVNqiqBVUVTaoqgVVRVOqiqBNUVTqqKoPPpTpW0p0qK6RpX0p0gppTpX0
+p0gppTpW0p0gpVTVX0p0gpVTVX0jSClVNVfSmqBdVNUzSrJJHBG6SV7Y2N7ucdAfdQRVFV5BzPGF
+9ffYd+tun57LLyPFIjypIYMMzBjiLCTv8xoHotSUdBVFVjycvlZGI04WFIycnqJQKj18wr4UvObJ
+yIcZ7SO16kfPYBU0NWqmqx8iDn3zukjy8aKMn4Yx8QH3Ldq82VyjMWgZiibQBkuSPrqv9U/6NWqK
+rnsfmOQxpj76xk0Wv+LQIP7KJ/FhjlIZhEx+r36P7bTQ6KqKrPg5/j5MNuRLOyJx/VHbbh9h1Kfj
+cvx+ZKI4Mlrnu7NIIJ/ITVHpqiqbVFVAqqKptUVQKqoqnVUVQePSnStpTpUV0p0raU6QV0p0raUO
+cyNtnua1vq46CA0p0qxTQzFwiljkLf1BrgdfVZHIeJcfAy343sJJHsOnHYA7bVktG1pGllw+IcCT
+GEsjnxOO9sMbiR+AseTxlK1/TDY1u+znnf8ACcabdbpTpZE/ibjIYQ9k3tnHXwRjr+6XgeKcbNzo
+sX3eRj5TppJBG9E9fwmr6bbmlV7442l0j2taOpLjrS8uVymPjEtc5pcO7bDa4rxB4ixM+OTCa97d
+kBxG+mjtTQ6DmPEbMeIMwZWPltonW9D5eXouXyedz8mB8eTkEsf0LNDro/ILNghiY74JHu0AdF3q
+vKHvyJS4bO+w9At6kietGKSMdX616LSgz2RgCOPf7LIjx69XHZTwE+vLL03I228zK3s6Nn22Vf8A
+x2bXXKd9m6/osHSnS19MTk23c5IenvMp/KU7lpHb/wBRIfqsjYqTvYHfStNWHEGQ7Zaeuh3WbhhP
+Vlte2TOkf/y7+oXimme7vpVhkZPGHxnbVfSv1T8U5PBI529gkH5FGPyeZgTtmhfp7eziN6XudE13
+doKQ/CB6sOvkVOGU8Nx64fFOY6W7s2djyd9Xbb+Oy6zj/FWOMOIZrpHzkmzmMGtb6Hv6L55Nhlv6
+m6+Y7KkM82E8A/FGfL+ym/5H+PsOFyWFyIPus7XuHUt7OH2PVeuq+b8XyM+NKMjElaC8aNgCCPQr
+seE5yTk8h+PLCA9rLXZ276/qpZpY16oqm6UVWR4NKdKdKHGrd6VE6SsnJhxIHTTOqxo2Vm5/NjDj
+c6u9dguV5Pn8nMaWOc1kb+hAHdWQbc/jKJrtQYbnD1e8D+NrN5HKPiCeB7YjAGNINnW/C56SUMc0
+eZXrgzngARmo9Vcv09T1J26fA4rAxQHzPLnern1H4C9zs3jsZlceJo/+OMD+y5E54YN6L3epKRJy
+Es4LQ4N1/tb0Thnl6bkbedyEbyQG/krn8t99kDS9GX7E8cPYa9try77Xjxosn2BdONgfLt91JhKu
+2fIw72CiLLycZ4c17unqVoiOORgcWDqNqj8Njh8JIW/rynibhuFmxzOc5wNwO2/P1Vo8ISSmZ4s8
+9S8hZ+LjyR52+zWg7PkVrRuE00eK550dGo8weqv91P8AFZA1kjGxfG0j4ndBoqkcLYt1Hcr1yxY+
+GP8AuW6/pPdeWFrqkukvskg61oei1jdlW0p0rAAkgHt3U1W0V0iuxpMDVIagyJ2zQ5bnROOunZbn
+GYzM6KuTst9F5347ZDvsfVezFkbAypBP0XDLHLfTU08mfEIsqOGDYYHDfXyVqpkjBJN7Q/YKareE
+snaUqqmqbVTRbQmu+4XkysJro3Fo6eYWlRQWEjTR1WbJVnTK4cO9nMw/pa7oVt4z3QPvE97JfItO
+l5Q3HxYzGXhuz8R3rqf4XvwsV0gfNG4Obvp131+SxeppXbcJNPlcVFNkGz3bG9aJAJC0NLD8LMk9
+hkveXauGhp8iBs/yF0GlyVkSvLG7AXP8rzE2NG7THHS1szJdG06bvouI57lZmEgQEt13W8ZuleN3
+LS8kXtLagHqCVLcazS5zw0AbWVgZF8p+2tbZu+i048WfLkBuGMB6Hv8Ast3rLXjM7jyyxe2APZzS
+db9ExjAxugvfJHjYkJ9obSdhvzP0XhjB1rZctYWZXchZYkjY6rPy4SJw5p8lp10wO9XV0qOjbK0W
+H/0rlrOaiTr1bhiRMPa9R8+q3uYyGPw6sae30CxcSKlnxuHwnR2vVAczlIWuihe9h6fC3p+Vw4W3
+W29vDENRNGtdFfRPTstN/GS4mO5+VEGucDT4gf4WNwvLYbMgM5SF8kfk9jta+o8/z+V1+zGXTPG3
+tORPHhtiLmuIkBPTy0tzjoeLnx2TCUe273cKluvL6Kvi8cZk8LDLhlntInfCGNI+E9CD09dLL4w/
+6Ifdcss7vV7akeTHk968RSsc/wBrCS7WuxHkvXnTxYznAADroNCzeMY6DkS+aN0ZLA6IuHR7SDsj
+6Ly5+SZ+R0f03HRct3WmnQRxNYDI6oe4fE71S/emlzg1pNRvr02oLWQ4TA0aFiVmY+QPfiD20Onr
+1XS/LfMemeP7t5rdgEjR9FbQ3rY2m53NQRY3+XBeU9vaAaCw8Kd8oyHvcXOJBJ+y6X5ZPE4tmikM
+PotbgOJxuR4PFyI5nglga4dNAjof4WJNlQnl8iDFnMsELa3A0HO3116jy2rfkkmzR4Z8lYM+SPCY
+bzs02HJktjyYyXMDhu7d/wAhbHN8I7iIIJX5TXOe/QY0a2NHZ/j8pzmtppkCP5IIazV3Nbs6Gz3W
+Px/Nsi5d0Oe9/ubpS0va2zox668x/wDvkvoWf4d4l/h6bkcbKfkNjiM0bw9paS0b8h8ip9ks6XTl
+2BkjbMcHN9QdhePkMvI46Fk7sW0LpCwOG9dt99d/kub43kcnj8xs+O+rmm1XDbSd+YK7/lPFEPK+
+FpsbMwtZD4x1Y7TA4dQRvr38v3WPs3F4vJxI4nmYi3KcWvHZj/hG/k5DsYcdK6COYPDCdPaf5+ax
+eLbTFJPmdrX47EmzZoseJhLpHd9dh5lYuW/V07nw5C6PhIXPBvKTI7fc7PT9tLW0rBoAAA0B2U6V
+GHkRtMfVu1ynMYzZGOHst912ZaHDqkvw4ZBpzVqXSPiGW2Tj5nvq4BuyPmtng8/2/HiXRBJPQ913
+PKeGcXMje1zO+wuNPhnkOHEjMdomgJ23ZIc39uqfJlMtUxmmZNMZeb052x1+3Ta6FmPFFiMkb1c4
+dSVw82TPicxG2eBzHukHUnprfVdsHl3FEDu3a58rJpdMUZJdmSRA/CCHD8hb8XJQjGEgabkdGkea
+4jLyRjZRe51SegW5xsnvPHscDsu39+pVxyuM6LDMWd8kmQHuJc51yfmqcHzGRxXJyRM06GSTTo3H
+p37j0KrjY+ScmZ0UD3gN66HZeOCMz8jIerHNdtzXDRWd2dq67P5KTNzAxzQ1jYttA+vXr+FxIicJ
+ywDrst1913vCcZFyvLiKWR7WiFx+Dz6tXqy/Az45nyYU7H7O6zdCOnqAluxh42BJykHucbQ57ySB
+bW9de/2WlieFOUbSM47YmDptzwdfglbHh/w5l4OU3JynMaWE1Y023sa6rrYx2QYkfh3E9xhxJGtl
+ETdBzmjuuJ8U/wDTrIfLHm8U3bo3BzoWnVgD5eW19SYBduh67Kc+MFpKg+LT4eZPhhrMTKa4OPR0
+Lm6+uwuXmdJh8rFjzxvZI5zfLponS/RYgZJEbMB2uY5/wRx/NBjwTj5Ebg+OVrd6O99R5joqPm3I
+nQHQ613Xhw8kRRzh3+4dF9Jg8AufHrNzmvH/AKo67/JOl4PEXgJ03HGPAbpzASzR67T8jlOPkfFw
+0pa9zSQ/sdfJI4lwaJyenQLSwcDKfjMwnYswnILTEWGy6iDwEIuK+MEZLurqu/T8kHzvi5JYeUx5
+YZHxva8EOadEdV1GZn5WbyDTlTyS+zi+G7tgWPl+F4RxLuMz/Y5UdZm7LSelh6hdl4c8N4nKYE+X
+lRus51I3BxHQDv8AkpB8sIJmJI18RK38djv8GLf9zmO0Prtb/K+DZ+Oc6WLH95x9k7ayz2/UDqfs
+tXwdx0/v755cZ7IGxFoMjCASSOg336bUHzeDjpy/RYWg62466LqMHipuXkdiwNa5wbYhx10BH913
+Wb4P43LJfCHYzz/4/wBO/of6aXo4Lw5DwznSCV007m1LyNAD0A+yo42Hwty3tWQOwjE1x1cuaWtH
+r0K+kwYzcXDggb1ETGsB130NJxHYfNTJokaSBWkaVtI0toyVKFKqI0PRVMLCerQdpinSlm1Y/J+G
+OK5aIsy8NjwfMdCPulYXhDAhY5hknlbvepH/ANgF0TXgdwphO5XdO/VY0rjuX8B8dyMRjaBEfIgd
+isjifAXJYGsd+TjOga8kSAutr6a1+6+kvYLjfZKA0U7Gdx3CYvHxOY1t3v8A1vd3K8mf4U47PeJN
+PhlH/JEQD+40VvgC432UEaKg8fEcJj8T1is97xoySEFxH2AC9pHxn6p29Rsd6JbhZxPqrq0S0bY5
+Szp3QzoCPVStTFBpClStC8ehHolVdogoRpZ4m0AfCpLdNBUgdNKddNKcTatRXelbX+WCp18IU9aV
+UkUh+FjZZAyII5QOouwO1+U9sTIYaRtDWN6AAaAVoR8R+iCSQR5bSQLAV3tDQAFAb1CY7RKSBYCs
+0dUaU6VmKbS7rrSjSlGlqTQjSNK2kaQY6lClVApQpQCs01dsd1ClBJcXd1GlIUhNKFOkBATQts1D
+fJCgKQglSoClESpUKUVKEKUApQpRApQEIqR0QhSgFKEIBShAUAp0hCAQpQg//9k=
+"
+       id="image1311"
+       x="0"
+       y="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Layer 2">
+    <g
+       aria-label="3 × 11 × (17 × 19 × 37) = 3 × 11 × 11951 = 394383 3 × (11 × 17 × 19) × 37 = 3 × 3553 × 37 = 394383 (3 × 11) × (17 × 19) × 37 = 33 × 323 × 37 = 394383 3 × (11 × 17) × 19 × 37 = 3 × 187 × 19 × 37 = 394383 (3 × 11) × 17 × 19 × 37 = 33 × 17 × 19 × 37 = 394383"
+       id="text2132"
+       style="font-size:6.35px;line-height:1.25;font-family:'times new roman';-inkscape-font-specification:'times new roman, ';letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke:#000000;paint-order:stroke fill markers;filter:url(#filter7816)">
+      <path
+         d="m 12.69945,10.929151 -1.193725,-0.21394 q 0.148828,-0.570508 0.570508,-0.8743654 0.42478,-0.3038575 1.199926,-0.3038575 0.889868,0 1.286743,0.3317627 0.396875,0.3317632 0.396875,0.8340572 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.36897 0.127124,0.226343 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356567,-0.145728 -0.589111,-0.42478 -0.229444,-0.282154 -0.353467,-0.706934 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.530201 0.15813,0.145727 0.399975,0.145727 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489892 -0.16123,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.158129 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124023,-0.124024 -0.341064,-0.124024 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8182" />
+      <path
+         d="m 18.668078,10.191212 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8184" />
+      <path
+         d="M 26.999352,9.5369881 V 14.159962 H 25.72191 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8186" />
+      <path
+         d="m 31.234753,9.5369881 v 4.6229739 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558106,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8188" />
+      <path
+         d="m 35.566271,10.191212 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8190" />
+      <path
+         d="m 42.210826,9.5369881 h 0.787549 q -0.406176,0.8991699 -0.58601,1.6619139 -0.151929,0.648023 -0.151929,1.382861 0,1.416968 0.737939,2.914551 h -0.787549 q -0.601513,-0.852661 -0.846459,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491381 0.257348,-0.706934 0.834057,-1.4789799 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8192" />
+      <path
+         d="m 46.368714,9.5369881 v 4.6229739 h -1.277442 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8194" />
+      <path
+         d="m 47.763974,9.6145028 h 3.686597 v 0.8526612 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617016,1.367359 -0.179834,0.586011 -0.241846,1.385962 h -1.258838 q 0.148828,-1.113111 0.468189,-1.866553 0.31936,-0.753442 1.010791,-1.612305 h -2.244825 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8196" />
+      <path
+         d="m 54.935629,10.191212 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8198" />
+      <path
+         d="m 63.266903,9.5369881 v 4.6229739 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8200" />
+      <path
+         d="m 64.696274,13.139869 1.255737,-0.15813 q 0.04961,0.26355 0.167432,0.37207 0.117822,0.108521 0.288355,0.108521 0.303857,0 0.474389,-0.306958 0.124024,-0.226343 0.186035,-0.958081 -0.226342,0.232544 -0.465087,0.341064 -0.238746,0.108521 -0.551905,0.108521 -0.610815,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097608 0,-0.452685 0.21394,-0.824755 0.213941,-0.3720708 0.589112,-0.5612065 0.375171,-0.1922364 0.942578,-0.1922364 0.682129,0 1.094507,0.2356446 0.412378,0.2325443 0.657324,0.7441403 0.248047,0.508496 0.248047,1.345655 0,1.230932 -0.517798,1.804541 -0.517798,0.570507 -1.435571,0.570507 -0.542603,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.20774,-0.241846 -0.319361,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.186036,-0.576709 -0.186035,-0.21084 -0.452685,-0.21084 -0.251148,0 -0.418579,0.189136 -0.164331,0.189135 -0.164331,0.567407 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430981,0.201538 0.266651,0 0.443384,-0.195337 0.176734,-0.195337 0.176734,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8202" />
+      <path
+         d="m 71.833822,10.191212 0.985987,0.976684 0.976684,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8204" />
+      <path
+         d="m 78.527987,10.929151 -1.193725,-0.21394 q 0.148828,-0.570508 0.570508,-0.8743654 0.42478,-0.3038575 1.199926,-0.3038575 0.889868,0 1.286743,0.3317627 0.396875,0.3317632 0.396875,0.8340572 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.36897 0.127124,0.226343 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356567,-0.145728 -0.589111,-0.42478 -0.229444,-0.282154 -0.353467,-0.706934 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.530201 0.15813,0.145727 0.399975,0.145727 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489892 -0.16123,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.158129 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124023,-0.124024 -0.341064,-0.124024 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8206" />
+      <path
+         d="m 81.560365,9.6145028 h 3.686597 v 0.8526612 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617017,1.367359 -0.179834,0.586011 -0.241846,1.385962 H 82.32621 q 0.148828,-1.113111 0.468188,-1.866553 0.31936,-0.753442 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8208" />
+      <path
+         d="m 86.549205,9.5369881 h -0.787549 q 0.406177,0.8991699 0.586011,1.6619139 0.151928,0.648023 0.151928,1.382861 0,1.416968 -0.737939,2.914551 h 0.787549 q 0.601513,-0.852661 0.843359,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491381 -0.254248,-0.706934 -0.830957,-1.4789799 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8210" />
+      <path
+         d="m 90.49315,10.622193 h 3.38584 v 1.007691 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8212" />
+      <path
+         d="m 97.897349,10.929151 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.8743654 0.424781,-0.3038575 1.199927,-0.3038575 0.889868,0 1.286743,0.3317627 0.396879,0.3317632 0.396879,0.8340572 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.207738,0.362769 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589112,-0.42478 -0.229443,-0.282154 -0.353466,-0.706934 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.530201 0.158129,0.145727 0.399975,0.145727 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489892 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.158129 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8214" />
+      <path
+         d="m 103.86597,10.191212 0.98599,0.976684 0.97668,-0.976684 0.71934,0.716235 -0.98289,0.976685 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8216" />
+      <path
+         d="m 112.19725,9.5369881 v 4.6229739 h -1.27744 v -3.029273 q -0.31006,0.235645 -0.60152,0.381372 -0.28835,0.145728 -0.72554,0.279053 v -1.035596 q 0.64493,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8218" />
+      <path
+         d="m 116.43265,9.5369881 v 4.6229739 h -1.27744 v -3.029273 q -0.31006,0.235645 -0.60151,0.381372 -0.28836,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.5581,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8220" />
+      <path
+         d="m 120.76417,10.191212 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976685 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8222" />
+      <path
+         d="M 129.09544,9.5369881 V 14.159962 H 127.818 v -3.029273 q -0.31006,0.235645 -0.60151,0.381372 -0.28836,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35656,-0.291455 0.5581,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8224" />
+      <path
+         d="m 133.33085,9.5369881 v 4.6229739 h -1.27745 v -3.029273 q -0.31005,0.235645 -0.60151,0.381372 -0.28835,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8226" />
+      <path
+         d="m 134.76021,13.139869 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28836,0.108521 0.30385,0 0.47439,-0.306958 0.12402,-0.226343 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341064 -0.23874,0.108521 -0.5519,0.108521 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824755 0.21395,-0.3720708 0.58912,-0.5612065 0.37517,-0.1922364 0.94257,-0.1922364 0.68213,0 1.09451,0.2356446 0.41238,0.2325443 0.65733,0.7441403 0.24804,0.508496 0.24804,1.345655 0,1.230932 -0.5178,1.804541 -0.51779,0.570507 -1.43557,0.570507 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189135 -0.16433,0.567407 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8228" />
+      <path
+         d="m 139.4514,9.6145028 h 2.99827 v 1.0076902 h -2.03088 l -0.10852,0.682129 q 0.21084,-0.09922 0.41547,-0.148828 0.20774,-0.04961 0.40928,-0.04961 0.68213,0 1.10691,0.412378 0.42478,0.412377 0.42478,1.038696 0,0.440283 -0.22014,0.84646 -0.21704,0.406176 -0.62012,0.620117 -0.39997,0.21394 -1.02629,0.21394 -0.44959,0 -0.77205,-0.08371 -0.31936,-0.08682 -0.5457,-0.254249 -0.22324,-0.170532 -0.36277,-0.384472 -0.13953,-0.213941 -0.23254,-0.533301 l 1.27744,-0.139526 q 0.0465,0.306958 0.21704,0.468188 0.17053,0.15813 0.40618,0.15813 0.26355,0 0.43408,-0.198437 0.17363,-0.201539 0.17363,-0.598414 0,-0.406176 -0.17363,-0.595312 -0.17363,-0.189136 -0.46199,-0.189136 -0.18293,0 -0.35347,0.08992 -0.12712,0.06511 -0.27905,0.235645 l -1.0759,-0.15503 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8230" />
+      <path
+         d="m 146.03704,9.5369881 v 4.6229739 h -1.27744 v -3.029273 q -0.31006,0.235645 -0.60151,0.381372 -0.28835,0.145728 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.7193359 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8232" />
+      <path
+         d="m 149.65853,10.622193 h 3.38584 v 1.007691 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8234" />
+      <path
+         d="m 157.06273,10.929151 -1.19372,-0.21394 q 0.14882,-0.570508 0.5705,-0.8743654 0.42478,-0.3038575 1.19993,-0.3038575 0.88987,0 1.28674,0.3317627 0.39688,0.3317632 0.39688,0.8340572 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.42478 -0.22944,-0.282154 -0.35347,-0.706934 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.530201 0.15813,0.145727 0.39998,0.145727 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489892 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.158129 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8236" />
+      <path
+         d="m 160.12921,13.139869 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28835,0.108521 0.30386,0 0.47439,-0.306958 0.12402,-0.226343 0.18604,-0.958081 -0.22635,0.232544 -0.46509,0.341064 -0.23875,0.108521 -0.55191,0.108521 -0.61081,0 -1.03249,-0.434082 -0.41858,-0.434082 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824755 0.21394,-0.3720708 0.58911,-0.5612065 0.37517,-0.1922364 0.94258,-0.1922364 0.68213,0 1.09451,0.2356446 0.41237,0.2325443 0.65732,0.7441403 0.24805,0.508496 0.24805,1.345655 0,1.230932 -0.5178,1.804541 -0.5178,0.570507 -1.43557,0.570507 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18604,-0.576709 -0.18603,-0.21084 -0.45268,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189135 -0.16433,0.567407 0,0.381372 0.17053,0.58291 0.17363,0.201538 0.43098,0.201538 0.26665,0 0.44338,-0.195337 0.17674,-0.195337 0.17674,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8238" />
+      <path
+         d="m 166.4792,13.310401 h -2.30063 v -1.038696 l 2.30063,-2.7347169 h 1.10071 v 2.7936279 h 0.57051 v 0.979785 h -0.57051 v 0.849561 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21542,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8240" />
+      <path
+         d="m 169.76892,10.929151 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.8743654 0.42478,-0.3038575 1.19992,-0.3038575 0.88987,0 1.28675,0.3317627 0.39687,0.3317632 0.39687,0.8340572 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.42478 -0.22944,-0.282154 -0.35346,-0.706934 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.530201 0.15813,0.145727 0.39997,0.145727 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489892 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.158129 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8242" />
+      <path
+         d="m 173.53923,11.7167 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18603,-0.26665 -0.18603,-0.613916 0,-0.570508 0.5364,-0.9332761 0.41858,-0.2790528 1.10691,-0.2790528 0.91157,0 1.34565,0.3472657 0.43718,0.3472652 0.43718,0.8743652 0,0.306958 -0.17363,0.573608 -0.13022,0.198438 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291456 0.18293,0.644922 0,0.341065 -0.15813,0.638721 -0.15503,0.294556 -0.38447,0.455786 -0.22634,0.161231 -0.56741,0.235645 -0.33796,0.07751 -0.72243,0.07751 -0.72244,0 -1.10381,-0.170532 -0.38138,-0.170532 -0.57981,-0.502295 -0.19844,-0.331762 -0.19844,-0.74104 0,-0.399975 0.18603,-0.675928 0.18604,-0.279052 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235645 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.368969 0,-0.235645 -0.14573,-0.381372 -0.14573,-0.148829 -0.37207,-0.148829 -0.22945,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300757 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22634,0 0.40618,-0.192236 0.17983,-0.195337 0.17983,-0.492994 0,-0.300756 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23565,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8244" />
+      <path
+         d="m 178.23973,10.929151 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.8743654 0.42478,-0.3038575 1.19992,-0.3038575 0.88987,0 1.28675,0.3317627 0.39687,0.3317632 0.39687,0.8340572 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226343 0.12712,0.542602 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.42478 -0.22944,-0.282154 -0.35346,-0.706934 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.530201 0.15813,0.145727 0.39997,0.145727 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489892 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10541,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.158129 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8246" />
+      <path
+         d="m 12.69945,18.923535 -1.193725,-0.21394 q 0.148828,-0.570508 0.570508,-0.874366 0.42478,-0.303857 1.199926,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.36897 0.127124,0.226342 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356567,-0.145728 -0.589111,-0.424781 -0.229444,-0.282153 -0.353467,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.15813,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.16123,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409277,0.07441 L 12.9723,19.2894 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124023,-0.124024 -0.341064,-0.124024 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8248" />
+      <path
+         d="m 18.668078,18.185596 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8250" />
+      <path
+         d="m 25.312633,17.531372 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648023 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254249,-1.491382 0.257348,-0.706933 0.834057,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8252" />
+      <path
+         d="m 29.470519,17.531372 v 4.622974 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8254" />
+      <path
+         d="m 33.70592,17.531372 v 4.622974 h -1.277442 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725538,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8256" />
+      <path
+         d="m 38.037437,18.185596 0.985987,0.976684 0.976684,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8258" />
+      <path
+         d="m 46.368714,17.531372 v 4.622974 h -1.277442 v -3.029273 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8260" />
+      <path
+         d="m 47.763974,17.608887 h 3.686597 v 0.852661 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617016,1.367359 -0.179834,0.58601 -0.241846,1.385962 h -1.258838 q 0.148828,-1.113111 0.468189,-1.866553 0.31936,-0.753443 1.010791,-1.612305 h -2.244825 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8262" />
+      <path
+         d="m 54.935629,18.185596 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8264" />
+      <path
+         d="m 63.266903,17.531372 v 4.622974 h -1.277441 v -3.029273 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8266" />
+      <path
+         d="m 64.696274,21.134253 1.255737,-0.15813 q 0.04961,0.26355 0.167432,0.37207 0.117822,0.108521 0.288355,0.108521 0.303857,0 0.474389,-0.306958 0.124024,-0.226343 0.186035,-0.958081 -0.226342,0.232544 -0.465087,0.341064 -0.238746,0.108521 -0.551905,0.108521 -0.610815,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097608 0,-0.452685 0.21394,-0.824756 0.213941,-0.37207 0.589112,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235645 0.412378,0.232543 0.657324,0.74414 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517798,0.570508 -1.435571,0.570508 -0.542603,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.20774,-0.241846 -0.319361,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.186036,-0.576709 -0.186035,-0.21084 -0.452685,-0.21084 -0.251148,0 -0.418579,0.189136 -0.164331,0.189135 -0.164331,0.567407 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430981,0.201538 0.266651,0 0.443384,-0.195337 0.176734,-0.195337 0.176734,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8268" />
+      <path
+         d="m 69.651011,17.531372 h -0.787549 q 0.406177,0.89917 0.586011,1.661914 0.151929,0.648023 0.151929,1.382861 0,1.416968 -0.73794,2.914551 h 0.787549 q 0.601514,-0.852661 0.84336,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257349,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8270" />
+      <path
+         d="m 74.304991,18.185596 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976685 0.982886,0.989086 -0.719336,0.710035 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710035 0.985986,-0.989086 -0.985986,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8272" />
+      <path
+         d="m 80.999156,18.923535 -1.193726,-0.21394 q 0.148828,-0.570508 0.570508,-0.874366 0.42478,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.161231,0.533301 -0.16123,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403077,0.151929 0.226342,0.139526 0.350366,0.36897 0.127124,0.226342 0.127124,0.542602 0,0.396875 -0.207739,0.762744 -0.20774,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620118,0 -0.979786,-0.145727 -0.356567,-0.145728 -0.589111,-0.424781 -0.229443,-0.282153 -0.353467,-0.706933 l 1.261939,-0.167432 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.421679,-0.186035 0.170533,-0.186035 0.170533,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173632 -0.440284,-0.173632 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167432,-0.15813 0.167432,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139527,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8274" />
+      <path
+         d="m 84.031526,17.608887 h 3.686596 v 0.852661 q -0.48059,0.434082 -0.803051,0.939477 -0.390674,0.613916 -0.617017,1.367359 -0.179834,0.58601 -0.241846,1.385962 h -1.258837 q 0.148828,-1.113111 0.468188,-1.866553 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8276" />
+      <path
+         d="m 90.49315,18.616577 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8278" />
+      <path
+         d="m 97.897349,18.923535 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.874366 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396879,0.331762 0.396879,0.834057 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.36897 0.12712,0.226342 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.207738,0.362769 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589112,-0.424781 -0.229443,-0.282153 -0.353466,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186035 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8280" />
+      <path
+         d="m 103.86597,18.185596 0.98599,0.976684 0.97668,-0.976684 0.71934,0.716235 -0.98289,0.976685 0.98289,0.989086 -0.71934,0.710035 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710035 0.98598,-0.989086 -0.98598,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8282" />
+      <path
+         d="m 110.56014,18.923535 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62011,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12403,-0.124024 -0.34107,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8284" />
+      <path
+         d="m 114.08241,17.608887 h 2.99826 v 1.00769 h -2.03088 l -0.10852,0.682129 q 0.21084,-0.09922 0.41548,-0.148828 0.20774,-0.04961 0.40928,-0.04961 0.68212,0 1.10691,0.412378 0.42478,0.412378 0.42478,1.038697 0,0.440283 -0.22015,0.84646 -0.21704,0.406176 -0.62011,0.620117 -0.39998,0.21394 -1.0263,0.21394 -0.44958,0 -0.77204,-0.08372 -0.31936,-0.08682 -0.54571,-0.254248 -0.22324,-0.170532 -0.36276,-0.384472 -0.13953,-0.213941 -0.23255,-0.533301 l 1.27744,-0.139526 q 0.0465,0.306958 0.21704,0.468188 0.17054,0.15813 0.40618,0.15813 0.26355,0 0.43408,-0.198438 0.17364,-0.201538 0.17364,-0.598413 0,-0.406176 -0.17364,-0.595312 -0.17363,-0.189136 -0.46199,-0.189136 -0.18293,0 -0.35346,0.08992 -0.12713,0.06511 -0.27905,0.235645 l -1.07591,-0.15503 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8286" />
+      <path
+         d="m 118.31781,17.608887 h 2.99826 v 1.00769 h -2.03088 l -0.10852,0.682129 q 0.21084,-0.09922 0.41548,-0.148828 0.20774,-0.04961 0.40927,-0.04961 0.68213,0 1.10691,0.412378 0.42478,0.412378 0.42478,1.038697 0,0.440283 -0.22014,0.84646 -0.21704,0.406176 -0.62012,0.620117 -0.39997,0.21394 -1.02629,0.21394 -0.44959,0 -0.77205,-0.08372 -0.31936,-0.08682 -0.5457,-0.254248 -0.22324,-0.170532 -0.36277,-0.384472 -0.13952,-0.213941 -0.23254,-0.533301 l 1.27744,-0.139526 q 0.0465,0.306958 0.21704,0.468188 0.17053,0.15813 0.40618,0.15813 0.26355,0 0.43408,-0.198438 0.17363,-0.201538 0.17363,-0.598413 0,-0.406176 -0.17363,-0.595312 -0.17363,-0.189136 -0.46199,-0.189136 -0.18293,0 -0.35346,0.08992 -0.12713,0.06511 -0.27906,0.235645 l -1.0759,-0.15503 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8288" />
+      <path
+         d="m 123.26634,18.923535 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186035 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8290" />
+      <path
+         d="m 129.23497,18.185596 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976685 0.98288,0.989086 -0.71933,0.710035 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710035 0.98599,-0.989086 -0.98599,-0.976685 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8292" />
+      <path
+         d="m 135.92913,18.923535 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.36897 0.12712,0.226342 0.12712,0.542602 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16434,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8294" />
+      <path
+         d="m 138.96151,17.608887 h 3.6866 v 0.852661 q -0.48059,0.434082 -0.80305,0.939477 -0.39068,0.613916 -0.61702,1.367359 -0.17983,0.58601 -0.24185,1.385962 h -1.25883 q 0.14882,-1.113111 0.46818,-1.866553 0.31936,-0.753443 1.0108,-1.612305 h -2.24483 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8296" />
+      <path
+         d="m 145.42313,18.616577 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8298" />
+      <path
+         d="m 152.82733,18.923535 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186035 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8300" />
+      <path
+         d="m 155.89381,21.134253 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28835,0.108521 0.30386,0 0.47439,-0.306958 0.12403,-0.226343 0.18604,-0.958081 -0.22634,0.232544 -0.46509,0.341064 -0.23874,0.108521 -0.5519,0.108521 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824756 0.21394,-0.37207 0.58911,-0.561206 0.37518,-0.192236 0.94258,-0.192236 0.68213,0 1.09451,0.235645 0.41238,0.232543 0.65732,0.74414 0.24805,0.508496 0.24805,1.345654 0,1.230933 -0.5178,1.804541 -0.5178,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18604,-0.576709 -0.18603,-0.21084 -0.45268,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189135 -0.16433,0.567407 0,0.381372 0.17053,0.58291 0.17363,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8302" />
+      <path
+         d="m 162.24381,21.304785 h -2.30064 v -1.038696 l 2.30064,-2.734717 h 1.10071 V 20.325 h 0.5705 v 0.979785 h -0.5705 v 0.849561 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21543,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8304" />
+      <path
+         d="m 165.53353,18.923535 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.36897 0.12713,0.226342 0.12713,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58912,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42167,-0.186035 0.17054,-0.186035 0.17054,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14883,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8306" />
+      <path
+         d="m 169.30384,19.711084 q -0.29766,-0.15813 -0.43409,-0.353467 -0.18603,-0.26665 -0.18603,-0.613916 0,-0.570508 0.5364,-0.933276 0.41858,-0.279053 1.10691,-0.279053 0.91157,0 1.34565,0.347266 0.43719,0.347265 0.43719,0.874365 0,0.306958 -0.17364,0.573608 -0.13022,0.198438 -0.40927,0.384473 0.36897,0.176733 0.5488,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341065 -0.15813,0.638721 -0.15503,0.294556 -0.38447,0.455786 -0.22634,0.161231 -0.56741,0.235645 -0.33796,0.07751 -0.72243,0.07751 -0.72244,0 -1.10381,-0.170532 -0.38137,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18604,-0.675928 0.18603,-0.279052 0.57361,-0.430981 z m 0.5674,-0.892969 q 0,0.235645 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21705,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.368969 0,-0.235645 -0.14573,-0.381373 -0.14573,-0.148828 -0.37207,-0.148828 -0.22944,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300757 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22635,0 0.40618,-0.192237 0.17983,-0.195336 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17983,-0.192236 -0.41858,-0.192236 -0.23564,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8308" />
+      <path
+         d="m 174.00432,18.923535 -1.19372,-0.21394 q 0.14882,-0.570508 0.5705,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22634,0.139526 0.35037,0.36897 0.12712,0.226342 0.12712,0.542602 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186035 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8310" />
+      <path
+         d="m 12.649841,25.525756 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491382 0.257349,-0.706933 0.834058,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8312" />
+      <path
+         d="m 15.170617,26.917919 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.874366 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589112,-0.424781 -0.229443,-0.282153 -0.353466,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8314" />
+      <path
+         d="m 21.139245,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8316" />
+      <path
+         d="m 29.470519,25.525756 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8318" />
+      <path
+         d="m 33.70592,25.525756 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235645 -0.601513,0.381372 -0.288355,0.145728 -0.725538,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8320" />
+      <path
+         d="m 35.854625,25.525756 h -0.787549 q 0.406176,0.89917 0.58601,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.737939,2.914551 h 0.787549 q 0.601513,-0.852661 0.843359,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8322" />
+      <path
+         d="m 40.508604,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8324" />
+      <path
+         d="m 47.15316,25.525756 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 H 47.15316 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491382 0.257349,-0.706933 0.834058,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8326" />
+      <path
+         d="m 51.311047,25.525756 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235645 -0.601514,0.381372 -0.288355,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8328" />
+      <path
+         d="m 52.706308,25.603271 h 3.686596 v 0.852661 q -0.480591,0.434082 -0.803052,0.939477 -0.390673,0.613916 -0.617016,1.367359 -0.179834,0.58601 -0.241846,1.385961 h -1.258838 q 0.148828,-1.11311 0.468189,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8330" />
+      <path
+         d="m 59.877966,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8332" />
+      <path
+         d="m 68.20924,25.525756 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235645 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8334" />
+      <path
+         d="m 69.638607,29.128637 1.255738,-0.15813 q 0.04961,0.26355 0.167431,0.37207 0.117823,0.108521 0.288355,0.108521 0.303857,0 0.474389,-0.306958 0.124024,-0.226343 0.186036,-0.958081 -0.226343,0.232544 -0.465088,0.341064 -0.238745,0.108521 -0.551905,0.108521 -0.610815,0 -1.032495,-0.434082 -0.418579,-0.434083 -0.418579,-1.097608 0,-0.452685 0.213941,-0.824756 0.21394,-0.37207 0.589111,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235644 0.412378,0.232544 0.657324,0.744141 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517798,0.570508 -1.435571,0.570508 -0.542603,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.20774,-0.241846 -0.319361,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.186035,-0.576709 -0.186035,-0.21084 -0.452686,-0.21084 -0.251147,0 -0.418579,0.189135 -0.164331,0.189136 -0.164331,0.567408 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430982,0.201538 0.26665,0 0.443383,-0.195337 0.176734,-0.195337 0.176734,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8336" />
+      <path
+         d="m 74.593344,25.525756 h -0.787548 q 0.406176,0.89917 0.58601,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.737939,2.914551 h 0.787548 q 0.601514,-0.852661 0.84336,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491382 -0.254249,-0.706933 -0.830958,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8338" />
+      <path
+         d="m 79.24732,26.17998 0.985986,0.976684 0.976685,-0.976684 0.719336,0.716235 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989086 -0.985986,0.989086 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8340" />
+      <path
+         d="m 85.941485,26.917919 -1.193725,-0.21394 q 0.148828,-0.570508 0.570507,-0.874366 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331763 0.396875,0.331762 0.396875,0.834057 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145727 -0.356568,-0.145728 -0.589111,-0.424781 -0.229444,-0.282153 -0.353467,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.16123,-0.173632 -0.440283,-0.173632 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.902271 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331762 -0.124024,-0.124024 -0.341065,-0.124024 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8342" />
+      <path
+         d="m 88.973863,25.603271 h 3.686596 v 0.852661 q -0.48059,0.434082 -0.803051,0.939477 -0.390674,0.613916 -0.617017,1.367359 -0.179834,0.58601 -0.241846,1.385961 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8344" />
+      <path
+         d="m 95.435479,26.610961 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8346" />
+      <path
+         d="m 102.83968,26.917919 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16124,0.238745 -0.4868,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62011,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12403,-0.124024 -0.34107,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8348" />
+      <path
+         d="m 107.07508,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10541,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8350" />
+      <path
+         d="m 113.04371,26.17998 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989086 -0.98598,0.989086 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8352" />
+      <path
+         d="m 119.73787,26.917919 -1.19372,-0.21394 q 0.14882,-0.570508 0.5705,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8354" />
+      <path
+         d="m 126.44444,30.148729 h -3.78891 q 0.0651,-0.561206 0.39377,-1.054199 0.33176,-0.496093 1.24024,-1.168921 0.555,-0.412378 0.71003,-0.626318 0.15503,-0.21394 0.15503,-0.406177 0,-0.207739 -0.15503,-0.353467 -0.15193,-0.148828 -0.38447,-0.148828 -0.24185,0 -0.39688,0.151929 -0.15193,0.151929 -0.20464,0.536401 l -1.26503,-0.102319 q 0.0744,-0.533301 0.27285,-0.830957 0.19843,-0.300757 0.5581,-0.458887 0.36277,-0.16123 1.00149,-0.16123 0.66663,0 1.0356,0.151929 0.37207,0.151928 0.58291,0.468188 0.21394,0.313159 0.21394,0.703833 0,0.415479 -0.24495,0.79375 -0.24184,0.378272 -0.88367,0.830957 -0.38137,0.26355 -0.51159,0.36897 -0.12713,0.10542 -0.30076,0.275952 h 1.97197 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8356" />
+      <path
+         d="m 128.20867,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186036 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8358" />
+      <path
+         d="m 134.17731,26.17998 0.98598,0.976684 0.97669,-0.976684 0.71933,0.716235 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989086 -0.98598,0.989086 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8360" />
+      <path
+         d="m 140.87146,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.5705,-0.874366 0.42479,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20773,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16434,0.0155 0.24804,0 0.41237,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8362" />
+      <path
+         d="m 143.90385,25.603271 h 3.68659 v 0.852661 q -0.48059,0.434082 -0.80305,0.939477 -0.39067,0.613916 -0.61701,1.367359 -0.17984,0.58601 -0.24185,1.385961 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866552 0.31936,-0.753443 1.01079,-1.612305 h -2.24482 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8364" />
+      <path
+         d="m 150.36546,26.610961 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8366" />
+      <path
+         d="m 157.76966,26.917919 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58912,-0.424781 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186036 0.17054,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14883,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8368" />
+      <path
+         d="m 160.83613,29.128637 1.25574,-0.15813 q 0.0496,0.26355 0.16743,0.37207 0.11782,0.108521 0.28836,0.108521 0.30385,0 0.47439,-0.306958 0.12402,-0.226343 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341064 -0.23874,0.108521 -0.5519,0.108521 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434083 -0.41858,-1.097608 0,-0.452685 0.21394,-0.824756 0.21395,-0.37207 0.58912,-0.561206 0.37517,-0.192236 0.94257,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65733,0.744141 0.24804,0.508496 0.24804,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027783 q 0,-0.36897 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189135 -0.16433,0.189136 -0.16433,0.567408 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26666,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558105 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8370" />
+      <path
+         d="m 167.18614,29.299169 h -2.30063 v -1.038696 l 2.30063,-2.734717 h 1.10071 v 2.793628 h 0.57051 v 0.979785 h -0.57051 v 0.84956 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21543,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8372" />
+      <path
+         d="m 170.47586,26.917919 -1.19372,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331763 0.39687,0.331762 0.39687,0.834057 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20773,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145727 -0.35656,-0.145728 -0.58911,-0.424781 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44028,-0.173632 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16434,0.0155 0.24804,0 0.41237,-0.15813 0.16744,-0.15813 0.16744,-0.375171 0,-0.207739 -0.12403,-0.331762 -0.12402,-0.124024 -0.34106,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8374" />
+      <path
+         d="m 174.24617,27.705468 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18603,-0.26665 -0.18603,-0.613916 0,-0.570508 0.5364,-0.933276 0.41858,-0.279053 1.10691,-0.279053 0.91157,0 1.34565,0.347266 0.43718,0.347265 0.43718,0.874365 0,0.306958 -0.17363,0.573608 -0.13022,0.198438 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341065 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22634,0.16123 -0.56741,0.235644 -0.33796,0.07752 -0.72244,0.07752 -0.72243,0 -1.1038,-0.170532 -0.38138,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18603,-0.675928 0.18604,-0.279053 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235645 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.36897 0,-0.235644 -0.14573,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22945,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300757 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22634,0 0.40618,-0.192237 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23565,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8376" />
+      <path
+         d="m 178.94666,26.917919 -1.19373,-0.21394 q 0.14883,-0.570508 0.57051,-0.874366 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331763 0.39688,0.331762 0.39688,0.834057 0,0.294556 -0.16124,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62011,0 -0.97978,-0.145727 -0.35657,-0.145728 -0.58911,-0.424781 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173632 -0.44029,-0.173632 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.902271 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331762 -0.12403,-0.124024 -0.34107,-0.124024 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8378" />
+      <path
+         d="m 12.69945,34.912303 -1.193725,-0.213941 q 0.148828,-0.570507 0.570508,-0.874365 0.42478,-0.303857 1.199926,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356567,-0.145727 -0.589111,-0.42478 -0.229444,-0.282153 -0.353467,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.15813,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.16123,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124023,-0.124023 -0.341064,-0.124023 -0.223243,0 -0.362769,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8380" />
+      <path
+         d="m 18.668078,34.174363 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8382" />
+      <path
+         d="m 25.312633,33.52014 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254249,-1.491382 0.257348,-0.706933 0.834057,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8384" />
+      <path
+         d="m 29.470519,33.52014 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235644 -0.601514,0.381372 -0.288354,0.145728 -0.725537,0.279053 V 34.73867 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291455 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8386" />
+      <path
+         d="m 33.70592,33.52014 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145728 -0.725538,0.279053 V 34.73867 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8388" />
+      <path
+         d="m 38.037437,34.174363 0.985987,0.976685 0.976684,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8390" />
+      <path
+         d="m 46.368714,33.52014 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 V 34.73867 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8392" />
+      <path
+         d="m 47.763974,33.597654 h 3.686597 v 0.852662 q -0.480591,0.434082 -0.803052,0.939477 -0.390674,0.613916 -0.617016,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258838 q 0.148828,-1.11311 0.468189,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244825 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8394" />
+      <path
+         d="m 52.752818,33.52014 h -0.787549 q 0.406177,0.89917 0.586011,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.73794,2.914551 h 0.787549 q 0.601514,-0.852661 0.843359,-1.540991 0.244947,-0.691431 0.244947,-1.447974 0,-0.784448 -0.257349,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8396" />
+      <path
+         d="m 57.406797,34.174363 0.985987,0.976685 0.976684,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8398" />
+      <path
+         d="m 65.738072,33.52014 v 4.622973 H 64.46063 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145728 -0.725537,0.279053 V 34.73867 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291455 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8400" />
+      <path
+         d="m 67.167443,37.123021 1.255737,-0.15813 q 0.04961,0.263549 0.167432,0.37207 0.117822,0.108521 0.288354,0.108521 0.303858,0 0.47439,-0.306959 0.124023,-0.226342 0.186035,-0.958081 -0.226343,0.232544 -0.465088,0.341065 -0.238745,0.10852 -0.551904,0.10852 -0.610816,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.589111,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235644 0.412378,0.232544 0.657324,0.744141 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517797,0.570508 -1.435571,0.570508 -0.542602,0 -0.855762,-0.124023 -0.313159,-0.127124 -0.520898,-0.36897 -0.207739,-0.241846 -0.31936,-0.604614 z m 2.325439,-2.027784 q 0,-0.368969 -0.186035,-0.576709 -0.186035,-0.210839 -0.452686,-0.210839 -0.251147,0 -0.418579,0.189135 -0.164331,0.189136 -0.164331,0.567408 0,0.381372 0.170532,0.58291 0.173633,0.201538 0.430982,0.201538 0.26665,0 0.443384,-0.195337 0.176733,-0.195337 0.176733,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8402" />
+      <path
+         d="m 74.304991,34.174363 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8404" />
+      <path
+         d="M 80.999156,34.912303 79.80543,34.698362 q 0.148828,-0.570507 0.570508,-0.874365 0.42478,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.161231,0.533301 -0.16123,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403077,0.151929 0.226342,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.20774,0.362769 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620118,0 -0.979786,-0.145728 -0.356567,-0.145727 -0.589111,-0.42478 -0.229443,-0.282153 -0.353467,-0.706933 l 1.261939,-0.167432 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.421679,-0.186035 0.170533,-0.186036 0.170533,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440284,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167432,-0.15813 0.167432,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139527,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8406" />
+      <path
+         d="m 84.031526,33.597654 h 3.686596 v 0.852662 q -0.48059,0.434082 -0.803051,0.939477 -0.390674,0.613916 -0.617017,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866552 0.31936,-0.753443 1.010791,-1.612305 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8408" />
+      <path
+         d="m 90.49315,34.605345 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8410" />
+      <path
+         d="m 97.897349,34.912303 -1.193725,-0.213941 q 0.148828,-0.570507 0.570507,-0.874365 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396879,0.331763 0.396879,0.834058 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.207738,0.362769 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356568,-0.145727 -0.589112,-0.42478 -0.229443,-0.282153 -0.353466,-0.706933 l 1.261938,-0.167432 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186035 0.170532,-0.186036 0.170532,-0.496094 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8412" />
+      <path
+         d="m 103.86597,34.174363 0.98599,0.976685 0.97668,-0.976685 0.71934,0.716236 -0.98289,0.976684 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8414" />
+      <path
+         d="m 112.19725,33.52014 v 4.622973 h -1.27744 v -3.029272 q -0.31006,0.235644 -0.60152,0.381372 -0.28835,0.145728 -0.72554,0.279053 V 34.73867 q 0.64493,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8416" />
+      <path
+         d="m 114.33045,35.699852 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18603,-0.266651 -0.18603,-0.613916 0,-0.570508 0.5364,-0.933277 0.41858,-0.279052 1.10691,-0.279052 0.91157,0 1.34565,0.347265 0.43718,0.347266 0.43718,0.874366 0,0.306958 -0.17363,0.573608 -0.13022,0.198437 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341064 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22634,0.16123 -0.56741,0.235644 -0.33796,0.07751 -0.72243,0.07751 -0.72244,0 -1.10381,-0.170532 -0.38137,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18604,-0.675928 0.18603,-0.279053 0.5736,-0.430981 z m 0.56741,-0.892969 q 0,0.235644 0.14573,0.381372 0.14883,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13953,-0.142627 0.13953,-0.36897 0,-0.235644 -0.14573,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22944,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300756 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22635,0 0.40618,-0.192237 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23564,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8418" />
+      <path
+         d="m 117.82791,33.597654 h 3.6866 v 0.852662 q -0.48059,0.434082 -0.80305,0.939477 -0.39068,0.613916 -0.61702,1.367358 -0.17983,0.586011 -0.24184,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866552 0.31936,-0.753443 1.01079,-1.612305 h -2.24483 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8420" />
+      <path
+         d="m 124.99957,34.174363 0.98599,0.976685 0.97668,-0.976685 0.71934,0.716236 -0.98289,0.976684 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8422" />
+      <path
+         d="m 133.33085,33.52014 v 4.622973 h -1.27745 v -3.029272 q -0.31005,0.235644 -0.60151,0.381372 -0.28835,0.145728 -0.72554,0.279053 V 34.73867 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291455 0.55811,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8424" />
+      <path
+         d="m 134.76021,37.123021 1.25574,-0.15813 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.108521 0.28836,0.108521 0.30385,0 0.47439,-0.306959 0.12402,-0.226342 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21395,-0.37207 0.58912,-0.561206 0.37517,-0.192236 0.94257,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65733,0.744141 0.24804,0.508496 0.24804,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027784 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.210839 -0.45269,-0.210839 -0.25115,0 -0.41858,0.189135 -0.16433,0.189136 -0.16433,0.567408 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8426" />
+      <path
+         d="m 141.89776,34.174363 0.98598,0.976685 0.97669,-0.976685 0.71933,0.716236 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8428" />
+      <path
+         d="m 148.59192,34.912303 -1.19372,-0.213941 q 0.14882,-0.570507 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8430" />
+      <path
+         d="m 151.62431,33.597654 h 3.68659 v 0.852662 q -0.48059,0.434082 -0.80305,0.939477 -0.39067,0.613916 -0.61701,1.367358 -0.17984,0.586011 -0.24185,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866552 0.31936,-0.753443 1.01079,-1.612305 h -2.24482 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8432" />
+      <path
+         d="m 158.08592,34.605345 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8434" />
+      <path
+         d="m 165.49011,34.912303 -1.19372,-0.213941 q 0.14883,-0.570507 0.57051,-0.874365 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35656,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35346,-0.706933 l 1.26193,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17054,-0.186036 0.17054,-0.496094 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8436" />
+      <path
+         d="m 168.55659,37.123021 1.25574,-0.15813 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.108521 0.28835,0.108521 0.30386,0 0.47439,-0.306959 0.12403,-0.226342 0.18604,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.58911,-0.561206 0.37518,-0.192236 0.94258,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65732,0.744141 0.24805,0.508496 0.24805,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124023 -0.31316,-0.127124 -0.5209,-0.36897 -0.20774,-0.241846 -0.31936,-0.604614 z m 2.32544,-2.027784 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.210839 -0.45269,-0.210839 -0.25115,0 -0.41858,0.189135 -0.16433,0.189136 -0.16433,0.567408 0,0.381372 0.17053,0.58291 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8438" />
+      <path
+         d="m 174.9066,37.293553 h -2.30063 v -1.038696 l 2.30063,-2.734717 h 1.10071 v 2.793628 h 0.57051 v 0.979785 h -0.57051 v 0.84956 h -1.10071 z m 0,-0.979785 v -1.42937 l -1.21543,1.42937 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8440" />
+      <path
+         d="m 178.19632,34.912303 -1.19372,-0.213941 q 0.14882,-0.570507 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8442" />
+      <path
+         d="m 181.96663,35.699852 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18604,-0.266651 -0.18604,-0.613916 0,-0.570508 0.53641,-0.933277 0.41857,-0.279052 1.10691,-0.279052 0.91157,0 1.34565,0.347265 0.43718,0.347266 0.43718,0.874366 0,0.306958 -0.17363,0.573608 -0.13023,0.198437 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341064 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22635,0.16123 -0.56741,0.235644 -0.33796,0.07751 -0.72244,0.07751 -0.72243,0 -1.1038,-0.170532 -0.38138,-0.170532 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18603,-0.675928 0.18604,-0.279053 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235644 0.14573,0.381372 0.14882,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13952,-0.142627 0.13952,-0.36897 0,-0.235644 -0.14572,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22945,0 -0.37517,0.145728 -0.14263,0.142627 -0.14263,0.37207 z m -0.0682,1.95647 q 0,0.300756 0.18293,0.492993 0.18294,0.189136 0.41858,0.189136 0.22634,0 0.40618,-0.192237 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192236 -0.41858,-0.192236 -0.23565,0 -0.41238,0.186035 -0.17363,0.186035 -0.17363,0.502295 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8444" />
+      <path
+         d="m 186.66712,34.912303 -1.19373,-0.213941 q 0.14883,-0.570507 0.57051,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362769 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62012,0 -0.97978,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22945,-0.282153 -0.35347,-0.706933 l 1.26194,-0.167432 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186035 0.17053,-0.186036 0.17053,-0.496094 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44029,-0.173633 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12403,-0.124023 -0.34107,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8446" />
+      <path
+         d="m 12.649841,41.514524 h 0.787549 q -0.406177,0.89917 -0.586011,1.661914 -0.151929,0.648022 -0.151929,1.382861 0,1.416968 0.73794,2.914551 h -0.787549 q -0.601514,-0.852661 -0.84646,-1.540991 -0.241846,-0.691431 -0.241846,-1.447974 0,-0.784448 0.254248,-1.491382 0.257349,-0.706933 0.834058,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8448" />
+      <path
+         d="m 15.170617,42.906687 -1.193725,-0.213941 q 0.148828,-0.570508 0.570507,-0.874365 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.16123,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.226343,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.207739,0.362768 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356568,-0.145727 -0.589112,-0.42478 -0.229443,-0.282153 -0.353466,-0.706934 l 1.261938,-0.167431 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.42168,-0.186036 0.170532,-0.186035 0.170532,-0.496093 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8450" />
+      <path
+         d="m 21.139245,42.168747 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8452" />
+      <path
+         d="m 29.470519,41.514524 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235644 -0.601514,0.381372 -0.288354,0.145727 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.001489,-0.499194 0.356568,-0.291456 0.558106,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8454" />
+      <path
+         d="m 33.70592,41.514524 v 4.622973 h -1.277442 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145727 -0.725538,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291456 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8456" />
+      <path
+         d="m 35.854625,41.514524 h -0.787549 q 0.406176,0.89917 0.58601,1.661914 0.151929,0.648022 0.151929,1.382861 0,1.416968 -0.737939,2.914551 h 0.787549 q 0.601513,-0.852661 0.843359,-1.540991 0.244946,-0.691431 0.244946,-1.447974 0,-0.784448 -0.257348,-1.491382 -0.254248,-0.706933 -0.830957,-1.478979 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8458" />
+      <path
+         d="m 40.508604,42.168747 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985987,-0.989087 -0.985987,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8460" />
+      <path
+         d="m 48.839878,41.514524 v 4.622973 h -1.277441 v -3.029272 q -0.310059,0.235644 -0.601514,0.381372 -0.288354,0.145727 -0.725537,0.279053 v -1.035596 q 0.644922,-0.207739 1.00149,-0.499194 0.356567,-0.291456 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8462" />
+      <path
+         d="m 50.235143,41.592038 h 3.686597 v 0.852661 q -0.480591,0.434082 -0.803052,0.939478 -0.390674,0.613916 -0.617017,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866553 0.31936,-0.753442 1.010791,-1.612304 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8464" />
+      <path
+         d="m 57.406797,42.168747 0.985987,0.976685 0.976684,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976684,-0.989087 -0.985987,0.989087 -0.713134,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8466" />
+      <path
+         d="m 65.738072,41.514524 v 4.622973 H 64.46063 v -3.029272 q -0.310058,0.235644 -0.601513,0.381372 -0.288355,0.145727 -0.725537,0.279053 v -1.035596 q 0.644921,-0.207739 1.001489,-0.499194 0.356567,-0.291456 0.558105,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8468" />
+      <path
+         d="m 67.167443,45.117404 1.255737,-0.158129 q 0.04961,0.263549 0.167432,0.37207 0.117822,0.10852 0.288354,0.10852 0.303858,0 0.47439,-0.306958 0.124023,-0.226342 0.186035,-0.958081 -0.226343,0.232544 -0.465088,0.341065 -0.238745,0.10852 -0.551904,0.10852 -0.610816,0 -1.032495,-0.434082 -0.418579,-0.434082 -0.418579,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.589111,-0.561206 0.375171,-0.192236 0.942578,-0.192236 0.682129,0 1.094507,0.235644 0.412378,0.232544 0.657324,0.744141 0.248047,0.508496 0.248047,1.345654 0,1.230933 -0.517798,1.804541 -0.517797,0.570508 -1.435571,0.570508 -0.542602,0 -0.855762,-0.124024 -0.313159,-0.127124 -0.520898,-0.368969 -0.207739,-0.241846 -0.31936,-0.604615 z m 2.325439,-2.027783 q 0,-0.368969 -0.186035,-0.576709 -0.186035,-0.21084 -0.452686,-0.21084 -0.251147,0 -0.418579,0.189136 -0.164331,0.189136 -0.164331,0.567407 0,0.381372 0.170532,0.582911 0.173633,0.201538 0.430982,0.201538 0.26665,0 0.443384,-0.195337 0.176733,-0.195337 0.176733,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8470" />
+      <path
+         d="m 74.304991,42.168747 0.985986,0.976685 0.976685,-0.976685 0.719336,0.716236 -0.982886,0.976684 0.982886,0.989087 -0.719336,0.710034 -0.976685,-0.989087 -0.985986,0.989087 -0.713135,-0.710034 0.985986,-0.989087 -0.985986,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8472" />
+      <path
+         d="M 80.999156,42.906687 79.80543,42.692746 q 0.148828,-0.570508 0.570508,-0.874365 0.42478,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396875,0.331763 0.396875,0.834058 0,0.294556 -0.161231,0.533301 -0.16123,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403077,0.151929 0.226342,0.139526 0.350366,0.368969 0.127124,0.226343 0.127124,0.542603 0,0.396875 -0.207739,0.762744 -0.20774,0.362768 -0.598413,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620118,0 -0.979786,-0.145728 -0.356567,-0.145727 -0.589111,-0.42478 -0.229443,-0.282153 -0.353467,-0.706934 l 1.261939,-0.167431 q 0.07441,0.381372 0.229443,0.5302 0.15813,0.145728 0.399976,0.145728 0.254248,0 0.421679,-0.186036 0.170533,-0.186035 0.170533,-0.496093 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440284,-0.173633 -0.148828,0 -0.409277,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167432,-0.15813 0.167432,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139527,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8474" />
+      <path
+         d="m 84.031526,41.592038 h 3.686596 v 0.852661 q -0.48059,0.434082 -0.803051,0.939478 -0.390674,0.613916 -0.617017,1.367358 -0.179834,0.586011 -0.241846,1.385962 h -1.258837 q 0.148828,-1.11311 0.468188,-1.866553 0.31936,-0.753442 1.010791,-1.612304 h -2.244824 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8476" />
+      <path
+         d="m 90.49315,42.599729 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8478" />
+      <path
+         d="m 97.897349,42.906687 -1.193725,-0.213941 q 0.148828,-0.570508 0.570507,-0.874365 0.424781,-0.303857 1.199927,-0.303857 0.889868,0 1.286743,0.331762 0.396879,0.331763 0.396879,0.834058 0,0.294556 -0.161234,0.533301 -0.161231,0.238745 -0.486792,0.418579 0.26355,0.06511 0.403076,0.151929 0.22634,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.207738,0.362768 -0.598412,0.561206 -0.390674,0.195337 -1.026294,0.195337 -0.620117,0 -0.979785,-0.145728 -0.356568,-0.145727 -0.589112,-0.42478 -0.229443,-0.282153 -0.353466,-0.706934 l 1.261938,-0.167431 q 0.07441,0.381372 0.229444,0.5302 0.158129,0.145728 0.399975,0.145728 0.254248,0 0.42168,-0.186036 0.170532,-0.186035 0.170532,-0.496093 0,-0.31626 -0.164331,-0.489893 -0.161231,-0.173633 -0.440283,-0.173633 -0.148828,0 -0.409278,0.07441 l 0.06511,-0.90227 q 0.10542,0.0155 0.164331,0.0155 0.248047,0 0.412378,-0.15813 0.167431,-0.15813 0.167431,-0.375171 0,-0.207739 -0.124023,-0.331763 -0.124024,-0.124023 -0.341065,-0.124023 -0.223242,0 -0.362768,0.136426 -0.139526,0.133325 -0.189136,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8480" />
+      <path
+         d="m 102.13275,42.906687 -1.19373,-0.213941 q 0.14883,-0.570508 0.57051,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62012,0 -0.97978,-0.145728 -0.35657,-0.145727 -0.58912,-0.42478 -0.22944,-0.282153 -0.35346,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44029,-0.173633 -0.14883,0 -0.40927,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12403,-0.124023 -0.34107,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8482" />
+      <path
+         d="m 108.10138,42.168747 0.98598,0.976685 0.97669,-0.976685 0.71933,0.716236 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8484" />
+      <path
+         d="m 116.43265,41.514524 v 4.622973 h -1.27744 v -3.029272 q -0.31006,0.235644 -0.60151,0.381372 -0.28836,0.145727 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291456 0.5581,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8486" />
+      <path
+         d="m 117.82791,41.592038 h 3.6866 v 0.852661 q -0.48059,0.434082 -0.80305,0.939478 -0.39068,0.613916 -0.61702,1.367358 -0.17983,0.586011 -0.24184,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866553 0.31936,-0.753442 1.01079,-1.612304 h -2.24483 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8488" />
+      <path
+         d="m 124.99957,42.168747 0.98599,0.976685 0.97668,-0.976685 0.71934,0.716236 -0.98289,0.976684 0.98289,0.989087 -0.71934,0.710034 -0.97668,-0.989087 -0.98599,0.989087 -0.71313,-0.710034 0.98598,-0.989087 -0.98598,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8490" />
+      <path
+         d="m 133.33085,41.514524 v 4.622973 h -1.27745 v -3.029272 q -0.31005,0.235644 -0.60151,0.381372 -0.28835,0.145727 -0.72554,0.279053 v -1.035596 q 0.64492,-0.207739 1.00149,-0.499194 0.35657,-0.291456 0.55811,-0.719336 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8492" />
+      <path
+         d="m 134.76021,45.117404 1.25574,-0.158129 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.10852 0.28836,0.10852 0.30385,0 0.47439,-0.306958 0.12402,-0.226342 0.18603,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21395,-0.37207 0.58912,-0.561206 0.37517,-0.192236 0.94257,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65733,0.744141 0.24804,0.508496 0.24804,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124024 -0.31316,-0.127124 -0.5209,-0.368969 -0.20774,-0.241846 -0.31936,-0.604615 z m 2.32544,-2.027783 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189136 -0.16433,0.567407 0,0.381372 0.17053,0.582911 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8494" />
+      <path
+         d="m 141.89776,42.168747 0.98598,0.976685 0.97669,-0.976685 0.71933,0.716236 -0.98288,0.976684 0.98288,0.989087 -0.71933,0.710034 -0.97669,-0.989087 -0.98598,0.989087 -0.71314,-0.710034 0.98599,-0.989087 -0.98599,-0.976684 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8496" />
+      <path
+         d="m 148.59192,42.906687 -1.19372,-0.213941 q 0.14882,-0.570508 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25425,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8498" />
+      <path
+         d="m 151.62431,41.592038 h 3.68659 v 0.852661 q -0.48059,0.434082 -0.80305,0.939478 -0.39067,0.613916 -0.61701,1.367358 -0.17984,0.586011 -0.24185,1.385962 h -1.25884 q 0.14883,-1.11311 0.46819,-1.866553 0.31936,-0.753442 1.01079,-1.612304 h -2.24482 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8500" />
+      <path
+         d="m 158.08592,42.599729 h 3.38584 v 1.00769 h -3.38584 z m 0,1.525488 h 3.38584 v 1.00459 h -3.38584 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8502" />
+      <path
+         d="m 165.49011,42.906687 -1.19372,-0.213941 q 0.14883,-0.570508 0.57051,-0.874365 0.42478,-0.303857 1.19992,-0.303857 0.88987,0 1.28675,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59842,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35656,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35346,-0.706934 l 1.26193,-0.167431 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186036 0.17054,-0.186035 0.17054,-0.496093 0,-0.31626 -0.16434,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24804,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12403,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8504" />
+      <path
+         d="m 168.55659,45.117404 1.25574,-0.158129 q 0.0496,0.263549 0.16743,0.37207 0.11782,0.10852 0.28835,0.10852 0.30386,0 0.47439,-0.306958 0.12403,-0.226342 0.18604,-0.958081 -0.22634,0.232544 -0.46509,0.341065 -0.23874,0.10852 -0.5519,0.10852 -0.61082,0 -1.0325,-0.434082 -0.41858,-0.434082 -0.41858,-1.097607 0,-0.452686 0.21394,-0.824756 0.21394,-0.37207 0.58911,-0.561206 0.37518,-0.192236 0.94258,-0.192236 0.68213,0 1.09451,0.235644 0.41238,0.232544 0.65732,0.744141 0.24805,0.508496 0.24805,1.345654 0,1.230933 -0.5178,1.804541 -0.51779,0.570508 -1.43557,0.570508 -0.5426,0 -0.85576,-0.124024 -0.31316,-0.127124 -0.5209,-0.368969 -0.20774,-0.241846 -0.31936,-0.604615 z m 2.32544,-2.027783 q 0,-0.368969 -0.18603,-0.576709 -0.18604,-0.21084 -0.45269,-0.21084 -0.25115,0 -0.41858,0.189136 -0.16433,0.189136 -0.16433,0.567407 0,0.381372 0.17053,0.582911 0.17364,0.201538 0.43098,0.201538 0.26665,0 0.44339,-0.195337 0.17673,-0.195337 0.17673,-0.558106 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8506" />
+      <path
+         d="m 174.9066,45.287937 h -2.30063 V 44.24924 l 2.30063,-2.734716 h 1.10071 v 2.793628 h 0.57051 v 0.979785 h -0.57051 v 0.84956 h -1.10071 z m 0,-0.979785 v -1.429371 l -1.21543,1.429371 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8508" />
+      <path
+         d="m 178.19632,42.906687 -1.19372,-0.213941 q 0.14882,-0.570508 0.5705,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88987,0 1.28674,0.331762 0.39688,0.331763 0.39688,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40307,0.151929 0.22635,0.139526 0.35037,0.368969 0.12712,0.226343 0.12712,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39067,0.195337 -1.02629,0.195337 -0.62012,0 -0.97979,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22944,-0.282153 -0.35347,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22945,0.5302 0.15813,0.145728 0.39997,0.145728 0.25425,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44028,-0.173633 -0.14883,0 -0.40928,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12402,-0.124023 -0.34106,-0.124023 -0.22325,0 -0.36277,0.136426 -0.13953,0.133325 -0.18914,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8510" />
+      <path
+         d="m 181.96663,43.694236 q -0.29765,-0.15813 -0.43408,-0.353467 -0.18604,-0.266651 -0.18604,-0.613916 0,-0.570508 0.53641,-0.933277 0.41857,-0.279052 1.10691,-0.279052 0.91157,0 1.34565,0.347265 0.43718,0.347266 0.43718,0.874365 0,0.306958 -0.17363,0.573609 -0.13023,0.198437 -0.40928,0.384473 0.36897,0.176733 0.54881,0.468188 0.18293,0.291455 0.18293,0.644922 0,0.341064 -0.15813,0.638721 -0.15503,0.294555 -0.38447,0.455786 -0.22635,0.16123 -0.56741,0.235644 -0.33796,0.07751 -0.72244,0.07751 -0.72243,0 -1.1038,-0.170532 -0.38138,-0.170533 -0.57981,-0.502295 -0.19844,-0.331763 -0.19844,-0.74104 0,-0.399976 0.18603,-0.675928 0.18604,-0.279053 0.57361,-0.430981 z m 0.56741,-0.892969 q 0,0.235644 0.14573,0.381372 0.14882,0.142627 0.39377,0.142627 0.21704,0 0.35657,-0.142627 0.13952,-0.142627 0.13952,-0.36897 0,-0.235644 -0.14572,-0.381372 -0.14573,-0.148828 -0.37207,-0.148828 -0.22945,0 -0.37517,0.145727 -0.14263,0.142627 -0.14263,0.372071 z m -0.0682,1.956469 q 0,0.300757 0.18293,0.492994 0.18294,0.189135 0.41858,0.189135 0.22634,0 0.40618,-0.192236 0.17983,-0.195337 0.17983,-0.492993 0,-0.300757 -0.18293,-0.492993 -0.17984,-0.192237 -0.41858,-0.192237 -0.23565,0 -0.41238,0.186036 -0.17363,0.186035 -0.17363,0.502294 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8512" />
+      <path
+         d="m 186.66712,42.906687 -1.19373,-0.213941 q 0.14883,-0.570508 0.57051,-0.874365 0.42478,-0.303857 1.19993,-0.303857 0.88986,0 1.28674,0.331762 0.39687,0.331763 0.39687,0.834058 0,0.294556 -0.16123,0.533301 -0.16123,0.238745 -0.48679,0.418579 0.26355,0.06511 0.40308,0.151929 0.22634,0.139526 0.35036,0.368969 0.12713,0.226343 0.12713,0.542603 0,0.396875 -0.20774,0.762744 -0.20774,0.362768 -0.59841,0.561206 -0.39068,0.195337 -1.0263,0.195337 -0.62012,0 -0.97978,-0.145728 -0.35657,-0.145727 -0.58911,-0.42478 -0.22945,-0.282153 -0.35347,-0.706934 l 1.26194,-0.167431 q 0.0744,0.381372 0.22944,0.5302 0.15813,0.145728 0.39998,0.145728 0.25424,0 0.42168,-0.186036 0.17053,-0.186035 0.17053,-0.496093 0,-0.31626 -0.16433,-0.489893 -0.16123,-0.173633 -0.44029,-0.173633 -0.14882,0 -0.40927,0.07441 l 0.0651,-0.90227 q 0.10542,0.0155 0.16433,0.0155 0.24805,0 0.41238,-0.15813 0.16743,-0.15813 0.16743,-0.375171 0,-0.207739 -0.12402,-0.331763 -0.12403,-0.124023 -0.34107,-0.124023 -0.22324,0 -0.36277,0.136426 -0.13952,0.133325 -0.18913,0.471289 z"
+         style="font-family:'arial black';-inkscape-font-specification:'arial black, '"
+         id="path8514" />
+    </g>
+  </g>
+</svg>
diff --git a/blog/index.html.jst b/blog/index.html.jst
new file mode 100644 (file)
index 0000000..cacd4a1
--- /dev/null
@@ -0,0 +1,55 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let get_navigation = await _require('/_lib/get_navigation.jst')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  await navbar(
+    env,
+    async _out => {},
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      let transaction = await env.site.database.Transaction()
+      try {
+        let root = await transaction.get()
+        let p = await get_navigation(root, env.component_names)
+        let children = await p.get('children')
+        let menu = await p.get_json('menu')
+
+        ul.nav.flex-column {
+          for (let i = 0; i < menu.length; ++i) {
+            let name = menu[i]
+            let q = await children.get(name)
+
+            li.nav-item {
+              a.nav-link(href=`${name}/index.html`) {
+                table.icon-and-text {
+                  tr {
+                    td {
+                      img(
+                        src=`${name}/${await q.get_json('thumbnail') || 'thumbnail.jpg'}`
+                      ) {}
+                    }
+                    td {
+                      span.h2{
+                        `${await q.get_json('title')}`
+                      }
+                      br {}
+                      span.h4{
+                        `${await q.get_json('description')}—by ${await q.get_json('author')}`
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      finally {
+        transaction.rollback()
+      }
+    },
+    async _out => {}
+  )
+}
diff --git a/contact/index.html.jst b/contact/index.html.jst
new file mode 100644 (file)
index 0000000..c12edde
--- /dev/null
@@ -0,0 +1,255 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload draft details if any
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  let contact_draft
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+
+    placeholder = await get_placeholder(env, session)
+
+    contact_draft = await session.get_json('contact_draft')
+    if (contact_draft === undefined || env.now >= contact_draft.expires)
+      contact_draft = null
+
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'Do you require more information, or assistance with integrating the projects on this site? We’d love to hear from you.'}
+
+      form#form {
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="given-names") {'Given names *'}
+              input.form-control#given-names(type="text" value=contact_draft ? contact_draft.given_names : '' placeholder=placeholder.given_names required maxlength=256) {}
+              div.invalid-feedback {'Please enter a name we can address you by.'}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="family-name") {'Family name'}
+              input.form-control#family-name(type="text" value=contact_draft ? contact_draft.family_name : '' placeholder=placeholder.family_name maxlength=256) {}
+            }
+          }
+        }
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="company") {'Company'}
+              input.form-control#company(type="company" value=contact_draft ? contact_draft.company : '' placeholder=placeholder.company maxlength=256) {}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="email") {'Email *'}
+              input.form-control#email(type="email" value=contact_draft ? contact_draft.email : '' placeholder=placeholder.email required maxlength=256) {}
+              div.invalid-feedback {'Please enter an email address we can contact you on.'}
+            }
+          }
+        }
+        div.row {
+          div.col-md-12 {
+            div.form-group {
+              label.form-label(for="message1") {'Message *'}
+              textarea.form-control#message1(placeholder="I would like to..." required rows=6 maxlength=65536) {
+                if (contact_draft)
+                  `${contact_draft.message}`
+              }
+              div.invalid-feedback {'Please let us know your application or question.'}
+            }
+          }
+        }
+      }
+
+      if (contact_draft !== null)
+        button.btn.btn-success#send-enquiry(type="button") {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_envelope)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Send enquiry'
+        }
+      else
+        button.btn.btn-success#send-enquiry(type="button" disabled) {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_envelope)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Send enquiry'
+        }
+
+      p.'mt-3'.mb-0#message(hidden) {}
+
+      p.text-muted.mt-3 {'* These fields are required.'}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_company = document.getElementById('company')
+            let id_cross = document.getElementById('cross')
+            let id_email = document.getElementById('email')
+            let id_family_name = document.getElementById('family-name')
+            let id_form = document.getElementById('form')
+            let id_given_names = document.getElementById('given-names')
+            let id_icon = document.getElementById('icon')
+            let id_message = document.getElementById('message')
+            let id_message1 = document.getElementById('message1')
+            let id_send_enquiry = document.getElementById('send-enquiry')
+            let id_spinner = document.getElementById('spinner')
+            let id_tick = document.getElementById('tick')
+
+            let input_semaphore = new BinarySemaphore(false)
+            ;(
+              async () => {
+                while (true) {
+                  await input_semaphore.acquire()
+                  await new Promise(resolve => setTimeout(resolve, 3000))
+                  input_semaphore.try_acquire()
+                  await api_call(
+                    '/api/contact/set_draft.json',
+                    id_given_names.value.length === 0 &&
+                      id_family_name.value.length === 0 &&
+                      id_company.value.length === 0 &&
+                      id_email.value.length === 0 &&
+                      id_message1.value.length === 0 ?
+                      null :
+                      {
+                        given_names: id_given_names.value.slice(0, 256),
+                        family_name: id_family_name.value.slice(0, 256),
+                        company: id_company.value.slice(0, 256),
+                        email: id_email.value.slice(0, 256).toLowerCase(),
+                        message: id_message1.value.slice(0, 65536)
+                      }
+                  )
+                }
+              }
+            )() // ignore returned promise (start thread)
+
+            let edited = () => {
+              input_semaphore.release()
+
+              id_send_enquiry.disabled =
+                id_given_names.value.length === 0 &&
+                  id_family_name.value.length === 0 &&
+                  id_company.value.length === 0 &&
+                  id_email.value.length === 0 &&
+                  id_message1.value.length === 0
+              id_icon.hidden = false
+              id_tick.hidden = true
+              id_cross.hidden = true
+              id_spinner.hidden = true
+              id_message.hidden = true
+            }
+
+            id_given_names.addEventListener('input', edited)
+            id_family_name.addEventListener('input', edited)
+            id_company.addEventListener('input', edited)
+            id_email.addEventListener('input', edited)
+            id_message1.addEventListener('input', edited)
+
+            id_send_enquiry.addEventListener(
+              'click',
+              async () => {
+                id_icon.hidden = false
+                id_tick.hidden = true
+                id_cross.hidden = true
+                id_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_message.hidden = true
+
+                if (!id_form.checkValidity()) {
+                  id_form.classList.add('was-validated');
+
+                  id_icon.hidden = true
+                  id_cross.hidden = false
+                  return
+                }
+                id_form.classList.remove('was-validated');
+
+                id_icon.hidden = true
+                id_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/contact/send_enquiry.json',
+                    {
+                      given_names: id_given_names.value.slice(0, 256),
+                      family_name: id_family_name.value.slice(0, 256),
+                      company: id_company.value.slice(0, 256),
+                      email: id_email.value.slice(0, 256).toLowerCase(),
+                      message: id_message1.value.slice(0, 65536)
+                    }
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_cross.hidden = false
+                  id_spinner.hidden = true
+
+                  id_message.textContent = problem.detail
+                  //id_message.classList.remove('text-success')
+                  id_message.classList.add('text-danger')
+                  id_message.hidden = false
+                  return
+                }
+                id_tick.hidden = false
+                id_spinner.hidden = true
+                id_message.textContent = 'We have received your enquiry. We will be in touch as soon as possible.'
+                //id_message.classList.add('text-success')
+                id_message.classList.remove('text-danger')
+                id_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/css/bootstrap/_alert.scss b/css/bootstrap/_alert.scss
new file mode 100644 (file)
index 0000000..4aa1fc2
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// Base styles
+//
+
+.alert {
+  position: relative;
+  padding: $alert-padding-y $alert-padding-x;
+  margin-bottom: $alert-margin-bottom;
+  border: $alert-border-width solid transparent;
+  @include border-radius($alert-border-radius);
+}
+
+// Headings for larger alerts
+.alert-heading {
+  // Specified to prevent conflicts of changing $headings-color
+  color: inherit;
+}
+
+// Provide class for links that match alerts
+.alert-link {
+  font-weight: $alert-link-font-weight;
+}
+
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissible {
+  padding-right: $close-font-size + $alert-padding-x * 2;
+
+  // Adjust close link position
+  .close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 2;
+    padding: $alert-padding-y $alert-padding-x;
+    color: inherit;
+  }
+}
+
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+@each $color, $value in $theme-colors {
+  .alert-#{$color} {
+    @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));
+  }
+}
diff --git a/css/bootstrap/_badge.scss b/css/bootstrap/_badge.scss
new file mode 100644 (file)
index 0000000..42c5d08
--- /dev/null
@@ -0,0 +1,54 @@
+// Base class
+//
+// Requires one of the contextual, color modifier classes for `color` and
+// `background-color`.
+
+.badge {
+  display: inline-block;
+  padding: $badge-padding-y $badge-padding-x;
+  @include font-size($badge-font-size);
+  font-weight: $badge-font-weight;
+  line-height: 1;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  @include border-radius($badge-border-radius);
+  @include transition($badge-transition);
+
+  @at-root a#{&} {
+    @include hover-focus() {
+      text-decoration: none;
+    }
+  }
+
+  // Empty badges collapse automatically
+  &:empty {
+    display: none;
+  }
+}
+
+// Quick fix for badges in buttons
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+
+// Pill badges
+//
+// Make them extra rounded with a modifier to replace v3's badges.
+
+.badge-pill {
+  padding-right: $badge-pill-padding-x;
+  padding-left: $badge-pill-padding-x;
+  @include border-radius($badge-pill-border-radius);
+}
+
+// Colors
+//
+// Contextual variations (linked badges get darker on :hover).
+
+@each $color, $value in $theme-colors {
+  .badge-#{$color} {
+    @include badge-variant($value);
+  }
+}
diff --git a/css/bootstrap/_breadcrumb.scss b/css/bootstrap/_breadcrumb.scss
new file mode 100644 (file)
index 0000000..9c204c7
--- /dev/null
@@ -0,0 +1,42 @@
+.breadcrumb {
+  display: flex;
+  flex-wrap: wrap;
+  padding: $breadcrumb-padding-y $breadcrumb-padding-x;
+  margin-bottom: $breadcrumb-margin-bottom;
+  @include font-size($breadcrumb-font-size);
+  list-style: none;
+  background-color: $breadcrumb-bg;
+  @include border-radius($breadcrumb-border-radius);
+}
+
+.breadcrumb-item {
+  // The separator between breadcrumbs (by default, a forward-slash: "/")
+  + .breadcrumb-item {
+    padding-left: $breadcrumb-item-padding;
+
+    &::before {
+      float: left; // Suppress inline spacings and underlining of the separator
+      padding-right: $breadcrumb-item-padding;
+      color: $breadcrumb-divider-color;
+      content: escape-svg($breadcrumb-divider);
+    }
+  }
+
+  // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
+  // without `<ul>`s. The `::before` pseudo-element generates an element
+  // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
+  //
+  // To trick IE into suppressing the underline, we give the pseudo-element an
+  // underline and then immediately remove it.
+  + .breadcrumb-item:hover::before {
+    text-decoration: underline;
+  }
+  // stylelint-disable-next-line no-duplicate-selectors
+  + .breadcrumb-item:hover::before {
+    text-decoration: none;
+  }
+
+  &.active {
+    color: $breadcrumb-active-color;
+  }
+}
diff --git a/css/bootstrap/_button-group.scss b/css/bootstrap/_button-group.scss
new file mode 100644 (file)
index 0000000..da02d79
--- /dev/null
@@ -0,0 +1,163 @@
+// stylelint-disable selector-no-qualifying-type
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-flex;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+
+  > .btn {
+    position: relative;
+    flex: 1 1 auto;
+
+    // Bring the hover, focused, and "active" buttons to the front to overlay
+    // the borders properly
+    @include hover() {
+      z-index: 1;
+    }
+    &:focus,
+    &:active,
+    &.active {
+      z-index: 1;
+    }
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+
+  .input-group {
+    width: auto;
+  }
+}
+
+.btn-group {
+  // Prevent double borders when buttons are next to each other
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-left: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-right-radius(0);
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) > .btn {
+    @include border-left-radius(0);
+  }
+}
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
+
+//
+// Split button dropdowns
+//
+
+.dropdown-toggle-split {
+  padding-right: $btn-padding-x * .75;
+  padding-left: $btn-padding-x * .75;
+
+  &::after,
+  .dropup &::after,
+  .dropright &::after {
+    margin-left: 0;
+  }
+
+  .dropleft &::before {
+    margin-right: 0;
+  }
+}
+
+.btn-sm + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-sm * .75;
+  padding-left: $btn-padding-x-sm * .75;
+}
+
+.btn-lg + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-lg * .75;
+  padding-left: $btn-padding-x-lg * .75;
+}
+
+
+// The clickable button for toggling the menu
+// Set the same inset shadow as the :active state
+.btn-group.show .dropdown-toggle {
+  @include box-shadow($btn-active-box-shadow);
+
+  // Show no shadow for `.btn-link` since it has no other button styles.
+  &.btn-link {
+    @include box-shadow(none);
+  }
+}
+
+
+//
+// Vertical button groups
+//
+
+.btn-group-vertical {
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: center;
+
+  > .btn,
+  > .btn-group {
+    width: 100%;
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-top: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-bottom-radius(0);
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) > .btn {
+    @include border-top-radius(0);
+  }
+}
+
+
+// Checkbox and radio options
+//
+// In order to support the browser's form validation feedback, powered by the
+// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
+// `display: none;` or `visibility: hidden;` as that also hides the popover.
+// Simply visually hiding the inputs via `opacity` would leave them clickable in
+// certain cases which is prevented by using `clip` and `pointer-events`.
+// This way, we ensure a DOM element is visible to position the popover from.
+//
+// See https://github.com/twbs/bootstrap/pull/12794 and
+// https://github.com/twbs/bootstrap/pull/14559 for more information.
+
+.btn-group-toggle {
+  > .btn,
+  > .btn-group > .btn {
+    margin-bottom: 0; // Override default `<label>` value
+
+    input[type="radio"],
+    input[type="checkbox"] {
+      position: absolute;
+      clip: rect(0, 0, 0, 0);
+      pointer-events: none;
+    }
+  }
+}
diff --git a/css/bootstrap/_buttons.scss b/css/bootstrap/_buttons.scss
new file mode 100644 (file)
index 0000000..e8effb2
--- /dev/null
@@ -0,0 +1,145 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Base styles
+//
+
+.btn {
+  display: inline-block;
+  font-family: $btn-font-family;
+  font-weight: $btn-font-weight;
+  color: $body-color;
+  text-align: center;
+  text-decoration: if($link-decoration == none, null, none);
+  white-space: $btn-white-space;
+  vertical-align: middle;
+  user-select: none;
+  background-color: transparent;
+  border: $btn-border-width solid transparent;
+  //@include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
+  @include button-size($btn-padding-yt, $btn-padding-yb, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius); // Nick
+  @include transition($btn-transition);
+
+  @include hover() {
+    color: $body-color;
+    text-decoration: none;
+  }
+
+  &:focus,
+  &.focus {
+    outline: 0;
+    box-shadow: $btn-focus-box-shadow;
+  }
+
+  // Disabled comes first so active can properly restyle
+  &.disabled,
+  &:disabled {
+    opacity: $btn-disabled-opacity;
+    @include box-shadow(none);
+  }
+
+  &:not(:disabled):not(.disabled) {
+    cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
+
+    &:active,
+    &.active {
+      @include box-shadow($btn-active-box-shadow);
+
+      &:focus {
+        @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
+      }
+    }
+  }
+}
+
+// Future-proof disabling of clicks on `<a>` elements
+a.btn.disabled,
+fieldset:disabled a.btn {
+  pointer-events: none;
+}
+
+
+//
+// Alternate buttons
+//
+
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @include button-variant($value, $value);
+  }
+}
+
+@each $color, $value in $theme-colors {
+  .btn-outline-#{$color} {
+    @include button-outline-variant($value);
+  }
+}
+
+
+//
+// Link buttons
+//
+
+// Make a button look and behave like a link
+.btn-link {
+  font-weight: $font-weight-normal;
+  color: $link-color;
+  text-decoration: $link-decoration;
+
+  @include hover() {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+  }
+
+  &:focus,
+  &.focus {
+    text-decoration: $link-hover-decoration;
+  }
+
+  &:disabled,
+  &.disabled {
+    color: $btn-link-disabled-color;
+    pointer-events: none;
+  }
+
+  // No need for an active state here
+}
+
+
+//
+// Button Sizes
+//
+
+.btn-lg {
+  //@include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);
+  @include button-size($btn-padding-yt-lg, $btn-padding-yb-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg); // Nick
+}
+
+.btn-sm {
+  //@include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);
+  @include button-size($btn-padding-yb-sm, $btn-padding-yt-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);
+}
+
+
+//
+// Block button
+//
+
+.btn-block {
+  display: block;
+  width: 100%;
+
+  // Vertically space out multiple block buttons
+  + .btn-block {
+    margin-top: $btn-block-spacing-y;
+  }
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+  &.btn-block {
+    width: 100%;
+  }
+}
diff --git a/css/bootstrap/_card.scss b/css/bootstrap/_card.scss
new file mode 100644 (file)
index 0000000..6affdf6
--- /dev/null
@@ -0,0 +1,288 @@
+//
+// Base styles
+//
+
+.card {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
+  height: $card-height;
+  word-wrap: break-word;
+  background-color: $card-bg;
+  background-clip: border-box;
+  border: $card-border-width solid $card-border-color;
+  @include border-radius($card-border-radius);
+
+  > hr {
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  > .list-group {
+    border-top: inherit;
+    border-bottom: inherit;
+
+    &:first-child {
+      border-top-width: 0;
+      @include border-top-radius($card-inner-border-radius);
+    }
+
+    &:last-child  {
+      border-bottom-width: 0;
+      @include border-bottom-radius($card-inner-border-radius);
+    }
+  }
+
+  // Due to specificity of the above selector (`.card > .list-group`), we must
+  // use a child selector here to prevent double borders.
+  > .card-header + .list-group,
+  > .list-group + .card-footer {
+    border-top: 0;
+  }
+}
+
+.card-body {
+  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
+  // as much space as possible, ensuring footers are aligned to the bottom.
+  flex: 1 1 auto;
+  // Workaround for the image size bug in IE
+  // See: https://github.com/twbs/bootstrap/pull/28855
+  min-height: 1px;
+  padding: $card-spacer-x;
+  color: $card-color;
+}
+
+.card-title {
+  margin-bottom: $card-spacer-y;
+}
+
+.card-subtitle {
+  margin-top: -$card-spacer-y * .5;
+  margin-bottom: 0;
+}
+
+.card-text:last-child {
+  margin-bottom: 0;
+}
+
+.card-link {
+  @include hover() {
+    text-decoration: none;
+  }
+
+  + .card-link {
+    margin-left: $card-spacer-x;
+  }
+}
+
+//
+// Optional textual caps
+//
+
+.card-header {
+  //padding: $card-spacer-y $card-spacer-x;
+  padding: $card-spacer-yt $card-spacer-x $card-spacer-yb $card-spacer-x; // Nick
+  margin-bottom: 0; // Removes the default margin-bottom of <hN>
+  color: $card-cap-color;
+  background-color: $card-cap-bg;
+  border-bottom: $card-border-width solid $card-border-color;
+
+  &:first-child {
+    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
+  }
+}
+
+.card-footer {
+  //padding: $card-spacer-y $card-spacer-x;
+  padding: $card-spacer-yt $card-spacer-x $card-spacer-yb $card-spacer-x; // Nick
+  color: $card-cap-color;
+  background-color: $card-cap-bg;
+  border-top: $card-border-width solid $card-border-color;
+
+  &:last-child {
+    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);
+  }
+}
+
+
+//
+// Header navs
+//
+
+.card-header-tabs {
+  margin-right: -$card-spacer-x * .5;
+  margin-bottom: -$card-spacer-y;
+  margin-left: -$card-spacer-x * .5;
+  border-bottom: 0;
+}
+
+.card-header-pills {
+  margin-right: -$card-spacer-x * .5;
+  margin-left: -$card-spacer-x * .5;
+}
+
+// Card image
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: $card-img-overlay-padding;
+  @include border-radius($card-inner-border-radius);
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+  flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
+  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+}
+
+.card-img,
+.card-img-top {
+  @include border-top-radius($card-inner-border-radius);
+}
+
+.card-img,
+.card-img-bottom {
+  @include border-bottom-radius($card-inner-border-radius);
+}
+
+
+// Card deck
+
+.card-deck {
+  .card {
+    margin-bottom: $card-deck-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    display: flex;
+    flex-flow: row wrap;
+    margin-right: -$card-deck-margin;
+    margin-left: -$card-deck-margin;
+
+    .card {
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      margin-right: $card-deck-margin;
+      margin-bottom: 0; // Override the default
+      margin-left: $card-deck-margin;
+    }
+  }
+}
+
+
+//
+// Card groups
+//
+
+.card-group {
+  // The child selector allows nested `.card` within `.card-group`
+  // to display properly.
+  > .card {
+    margin-bottom: $card-group-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    display: flex;
+    flex-flow: row wrap;
+    // The child selector allows nested `.card` within `.card-group`
+    // to display properly.
+    > .card {
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      margin-bottom: 0;
+
+      + .card {
+        margin-left: 0;
+        border-left: 0;
+      }
+
+      // Handle rounded corners
+      @if $enable-rounded {
+        &:not(:last-child) {
+          @include border-right-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-disallowed-list
+            border-top-right-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-disallowed-list
+            border-bottom-right-radius: 0;
+          }
+        }
+
+        &:not(:first-child) {
+          @include border-left-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-disallowed-list
+            border-top-left-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-disallowed-list
+            border-bottom-left-radius: 0;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+//
+// Columns
+//
+
+.card-columns {
+  .card {
+    margin-bottom: $card-columns-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    column-count: $card-columns-count;
+    column-gap: $card-columns-gap;
+    orphans: 1;
+    widows: 1;
+
+    .card {
+      display: inline-block; // Don't let them vertically span multiple columns
+      width: 100%; // Don't let their width change
+    }
+  }
+}
+
+
+//
+// Accordion
+//
+
+.accordion {
+  overflow-anchor: none;
+
+  > .card {
+    overflow: hidden;
+
+    &:not(:last-of-type) {
+      border-bottom: 0;
+      @include border-bottom-radius(0);
+    }
+
+    &:not(:first-of-type) {
+      @include border-top-radius(0);
+    }
+
+    > .card-header {
+      @include border-radius(0);
+      margin-bottom: -$card-border-width;
+    }
+  }
+}
diff --git a/css/bootstrap/_carousel.scss b/css/bootstrap/_carousel.scss
new file mode 100644 (file)
index 0000000..25aaf58
--- /dev/null
@@ -0,0 +1,200 @@
+// Notes on the classes:
+//
+// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
+//    even when their scroll action started on a carousel, but for compatibility (with Firefox)
+//    we're preventing all actions instead
+// 2. The .carousel-item-left and .carousel-item-right is used to indicate where
+//    the active slide is heading.
+// 3. .active.carousel-item is the current slide.
+// 4. .active.carousel-item-left and .active.carousel-item-right is the current
+//    slide in its in-transition state. Only one of these occurs at a time.
+// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
+//    is the upcoming slide in transition.
+
+.carousel {
+  position: relative;
+}
+
+.carousel.pointer-event {
+  touch-action: pan-y;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+  @include clearfix();
+}
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: left;
+  width: 100%;
+  margin-right: -100%;
+  backface-visibility: hidden;
+  @include transition($carousel-transition);
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block;
+}
+
+.carousel-item-next:not(.carousel-item-left),
+.active.carousel-item-right {
+  transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-right),
+.active.carousel-item-left {
+  transform: translateX(-100%);
+}
+
+
+//
+// Alternate transitions
+//
+
+.carousel-fade {
+  .carousel-item {
+    opacity: 0;
+    transition-property: opacity;
+    transform: none;
+  }
+
+  .carousel-item.active,
+  .carousel-item-next.carousel-item-left,
+  .carousel-item-prev.carousel-item-right {
+    z-index: 1;
+    opacity: 1;
+  }
+
+  .active.carousel-item-left,
+  .active.carousel-item-right {
+    z-index: 0;
+    opacity: 0;
+    @include transition(opacity 0s $carousel-transition-duration);
+  }
+}
+
+
+//
+// Left/right controls for nav
+//
+
+.carousel-control-prev,
+.carousel-control-next {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  // Use flex for alignment (1-3)
+  display: flex; // 1. allow flex styles
+  align-items: center; // 2. vertically center contents
+  justify-content: center; // 3. horizontally center contents
+  width: $carousel-control-width;
+  padding: 0;
+  color: $carousel-control-color;
+  text-align: center;
+  background: none;
+  border: 0;
+  opacity: $carousel-control-opacity;
+  @include transition($carousel-control-transition);
+
+  // Hover/focus state
+  @include hover-focus() {
+    color: $carousel-control-color;
+    text-decoration: none;
+    outline: 0;
+    opacity: $carousel-control-hover-opacity;
+  }
+}
+.carousel-control-prev {
+  left: 0;
+  @if $enable-gradients {
+    background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
+  }
+}
+.carousel-control-next {
+  right: 0;
+  @if $enable-gradients {
+    background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
+  }
+}
+
+// Icons for within
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: $carousel-control-icon-width;
+  height: $carousel-control-icon-width;
+  background: 50% / 100% 100% no-repeat;
+}
+.carousel-control-prev-icon {
+  background-image: escape-svg($carousel-control-prev-icon-bg);
+}
+.carousel-control-next-icon {
+  background-image: escape-svg($carousel-control-next-icon-bg);
+}
+
+
+// Optional indicator pips
+//
+// Add an ordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.carousel-indicators {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 15;
+  display: flex;
+  justify-content: center;
+  padding-left: 0; // override <ol> default
+  // Use the .carousel-control's width as margin so we don't overlay those
+  margin-right: $carousel-control-width;
+  margin-left: $carousel-control-width;
+  list-style: none;
+
+  li {
+    box-sizing: content-box;
+    flex: 0 1 auto;
+    width: $carousel-indicator-width;
+    height: $carousel-indicator-height;
+    margin-right: $carousel-indicator-spacer;
+    margin-left: $carousel-indicator-spacer;
+    text-indent: -999px;
+    cursor: pointer;
+    background-color: $carousel-indicator-active-bg;
+    background-clip: padding-box;
+    // Use transparent borders to increase the hit area by 10px on top and bottom.
+    border-top: $carousel-indicator-hit-area-height solid transparent;
+    border-bottom: $carousel-indicator-hit-area-height solid transparent;
+    opacity: .5;
+    @include transition($carousel-indicator-transition);
+  }
+
+  .active {
+    opacity: 1;
+  }
+}
+
+
+// Optional captions
+//
+//
+
+.carousel-caption {
+  position: absolute;
+  right: (100% - $carousel-caption-width) * .5;
+  bottom: 20px;
+  left: (100% - $carousel-caption-width) * .5;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: $carousel-caption-color;
+  text-align: center;
+}
diff --git a/css/bootstrap/_close.scss b/css/bootstrap/_close.scss
new file mode 100644 (file)
index 0000000..82e9593
--- /dev/null
@@ -0,0 +1,40 @@
+.close {
+  float: right;
+  @include font-size($close-font-size);
+  font-weight: $close-font-weight;
+  line-height: 1;
+  color: $close-color;
+  text-shadow: $close-text-shadow;
+  opacity: .5;
+
+  // Override <a>'s hover style
+  @include hover() {
+    color: $close-color;
+    text-decoration: none;
+  }
+
+  &:not(:disabled):not(.disabled) {
+    @include hover-focus() {
+      opacity: .75;
+    }
+  }
+}
+
+// Additional properties for button version
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+// stylelint-disable-next-line selector-no-qualifying-type
+button.close {
+  padding: 0;
+  background-color: transparent;
+  border: 0;
+}
+
+// Future-proof disabling of clicks on `<a>` elements
+
+// stylelint-disable-next-line selector-no-qualifying-type
+a.close.disabled {
+  pointer-events: none;
+}
diff --git a/css/bootstrap/_code.scss b/css/bootstrap/_code.scss
new file mode 100644 (file)
index 0000000..03a5309
--- /dev/null
@@ -0,0 +1,53 @@
+// Inline code
+code {
+  @include font-size($code-font-size);
+  color: $code-color;
+  word-wrap: break-word;
+
+  // Streamline the style when inside anchors to avoid broken underline and more
+  a > & {
+    color: inherit;
+  }
+}
+
+// User input typically entered via keyboard
+kbd {
+  padding: $kbd-padding-y $kbd-padding-x;
+  @include font-size($kbd-font-size);
+  color: $kbd-color;
+  background-color: $kbd-bg;
+  @include border-radius($border-radius-sm);
+  @include box-shadow($kbd-box-shadow);
+
+  kbd {
+    padding: 0;
+    @include font-size(100%);
+    font-weight: $nested-kbd-font-weight;
+    @include box-shadow(none);
+  }
+}
+
+// Blocks of code
+pre {
+  display: block;
+  @include font-size($code-font-size);
+  color: $pre-color;
+  // Nick
+  padding: $pre-padding;
+  background-color: $pre-bg;
+  border: $pre-border-width solid $pre-border-color;
+  @include border-radius($pre-border-radius);
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    @include font-size(inherit);
+    color: inherit;
+    word-break: normal;
+  }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+  max-height: $pre-scrollable-max-height;
+  overflow-y: scroll;
+}
diff --git a/css/bootstrap/_custom-forms.scss b/css/bootstrap/_custom-forms.scss
new file mode 100644 (file)
index 0000000..c1b99a2
--- /dev/null
@@ -0,0 +1,527 @@
+// Embedded icons from Open Iconic.
+// Released under MIT and copyright 2014 Waybury.
+// https://useiconic.com/open
+
+
+// Checkboxes and radios
+//
+// Base class takes care of all the key behavioral aspects.
+
+.custom-control {
+  position: relative;
+  z-index: 1;
+  display: block;
+  min-height: $font-size-base * $line-height-base;
+  padding-left: $custom-control-gutter + $custom-control-indicator-size;
+  color-adjust: exact; // Keep themed appearance for print
+}
+
+.custom-control-inline {
+  display: inline-flex;
+  margin-right: $custom-control-spacer-x;
+}
+
+.custom-control-input {
+  position: absolute;
+  left: 0;
+  z-index: -1; // Put the input behind the label so it doesn't overlay text
+  width: $custom-control-indicator-size;
+  height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;
+  opacity: 0;
+
+  &:checked ~ .custom-control-label::before {
+    color: $custom-control-indicator-checked-color;
+    border-color: $custom-control-indicator-checked-border-color;
+    @include gradient-bg($custom-control-indicator-checked-bg);
+    @include box-shadow($custom-control-indicator-checked-box-shadow);
+  }
+
+  &:focus ~ .custom-control-label::before {
+    // the mixin is not used here to make sure there is feedback
+    @if $enable-shadows {
+      box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
+    } @else {
+      box-shadow: $custom-control-indicator-focus-box-shadow;
+    }
+  }
+
+  &:focus:not(:checked) ~ .custom-control-label::before {
+    border-color: $custom-control-indicator-focus-border-color;
+  }
+
+  &:not(:disabled):active ~ .custom-control-label::before {
+    color: $custom-control-indicator-active-color;
+    background-color: $custom-control-indicator-active-bg;
+    border-color: $custom-control-indicator-active-border-color;
+    @include box-shadow($custom-control-indicator-active-box-shadow);
+  }
+
+  // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
+  &[disabled],
+  &:disabled {
+    ~ .custom-control-label {
+      color: $custom-control-label-disabled-color;
+
+      &::before {
+        background-color: $custom-control-indicator-disabled-bg;
+      }
+    }
+  }
+}
+
+// Custom control indicators
+//
+// Build the custom controls out of pseudo-elements.
+
+.custom-control-label {
+  font-weight: $label-font-weight; // Nick
+  position: relative;
+  margin-bottom: 0;
+  color: $custom-control-label-color;
+  vertical-align: top;
+  cursor: $custom-control-cursor;
+
+  // Background-color and (when enabled) gradient
+  &::before {
+    position: absolute;
+    top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
+    left: -($custom-control-gutter + $custom-control-indicator-size);
+    display: block;
+    width: $custom-control-indicator-size;
+    height: $custom-control-indicator-size;
+    pointer-events: none;
+    content: "";
+    background-color: $custom-control-indicator-bg;
+    border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;
+    @include box-shadow($custom-control-indicator-box-shadow);
+  }
+
+  // Foreground (icon)
+  &::after {
+    position: absolute;
+    top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
+    left: -($custom-control-gutter + $custom-control-indicator-size);
+    display: block;
+    width: $custom-control-indicator-size;
+    height: $custom-control-indicator-size;
+    content: "";
+    background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
+  }
+}
+
+
+// Checkboxes
+//
+// Tweak just a few things for checkboxes.
+
+.custom-checkbox {
+  .custom-control-label::before {
+    @include border-radius($custom-checkbox-indicator-border-radius);
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-image: escape-svg($custom-checkbox-indicator-icon-checked);
+    }
+  }
+
+  .custom-control-input:indeterminate ~ .custom-control-label {
+    &::before {
+      border-color: $custom-checkbox-indicator-indeterminate-border-color;
+      @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
+      @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
+    }
+    &::after {
+      background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+    &:indeterminate ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+  }
+}
+
+// Radios
+//
+// Tweak just a few things for radios.
+
+.custom-radio {
+  .custom-control-label::before {
+    // stylelint-disable-next-line property-disallowed-list
+    border-radius: $custom-radio-indicator-border-radius;
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-image: escape-svg($custom-radio-indicator-icon-checked);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+  }
+}
+
+
+// switches
+//
+// Tweak a few things for switches
+
+.custom-switch {
+  padding-left: $custom-switch-width + $custom-control-gutter;
+
+  .custom-control-label {
+    &::before {
+      left: -($custom-switch-width + $custom-control-gutter);
+      width: $custom-switch-width;
+      pointer-events: all;
+      // stylelint-disable-next-line property-disallowed-list
+      border-radius: $custom-switch-indicator-border-radius;
+    }
+
+    &::after {
+      top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);
+      left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
+      width: $custom-switch-indicator-size;
+      height: $custom-switch-indicator-size;
+      background-color: $custom-control-indicator-border-color;
+      // stylelint-disable-next-line property-disallowed-list
+      border-radius: $custom-switch-indicator-border-radius;
+      @include transition(transform .15s ease-in-out, $custom-forms-transition);
+    }
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-color: $custom-control-indicator-bg;
+      transform: translateX($custom-switch-width - $custom-control-indicator-size);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+  }
+}
+
+
+// Select
+//
+// Replaces the browser default select with a custom one, mostly pulled from
+// https://primer.github.io/.
+//
+
+.custom-select {
+  display: inline-block;
+  width: 100%;
+  height: $custom-select-height;
+  padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
+  font-family: $custom-select-font-family;
+  @include font-size($custom-select-font-size);
+  font-weight: $custom-select-font-weight;
+  line-height: $custom-select-line-height;
+  color: $custom-select-color;
+  vertical-align: middle;
+  background: $custom-select-bg $custom-select-background;
+  border: $custom-select-border-width solid $custom-select-border-color;
+  @include border-radius($custom-select-border-radius, 0);
+  @include box-shadow($custom-select-box-shadow);
+  appearance: none;
+
+  &:focus {
+    border-color: $custom-select-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $custom-select-focus-box-shadow;
+    }
+
+    &::-ms-value {
+      // For visual consistency with other platforms/browsers,
+      // suppress the default white text on blue background highlight given to
+      // the selected option text when the (still closed) <select> receives focus
+      // in IE and (under certain conditions) Edge.
+      // See https://github.com/twbs/bootstrap/issues/19398.
+      color: $input-color;
+      background-color: $input-bg;
+    }
+  }
+
+  &[multiple],
+  &[size]:not([size="1"]) {
+    height: auto;
+    padding-right: $custom-select-padding-x;
+    background-image: none;
+  }
+
+  &:disabled {
+    color: $custom-select-disabled-color;
+    background-color: $custom-select-disabled-bg;
+  }
+
+  // Hides the default caret in IE11
+  &::-ms-expand {
+    display: none;
+  }
+
+  // Remove outline from select box in FF
+  &:-moz-focusring {
+    color: transparent;
+    text-shadow: 0 0 0 $custom-select-color;
+  }
+}
+
+.custom-select-sm {
+  height: $custom-select-height-sm;
+  padding-top: $custom-select-padding-y-sm;
+  padding-bottom: $custom-select-padding-y-sm;
+  padding-left: $custom-select-padding-x-sm;
+  @include font-size($custom-select-font-size-sm);
+}
+
+.custom-select-lg {
+  height: $custom-select-height-lg;
+  padding-top: $custom-select-padding-y-lg;
+  padding-bottom: $custom-select-padding-y-lg;
+  padding-left: $custom-select-padding-x-lg;
+  @include font-size($custom-select-font-size-lg);
+}
+
+
+// File
+//
+// Custom file input.
+
+.custom-file {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  height: $custom-file-height;
+  margin-bottom: 0;
+}
+
+.custom-file-input {
+  position: relative;
+  z-index: 2;
+  width: 100%;
+  height: $custom-file-height;
+  margin: 0;
+  overflow: hidden;
+  opacity: 0;
+
+  &:focus ~ .custom-file-label {
+    border-color: $custom-file-focus-border-color;
+    box-shadow: $custom-file-focus-box-shadow;
+  }
+
+  // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
+  &[disabled] ~ .custom-file-label,
+  &:disabled ~ .custom-file-label {
+    background-color: $custom-file-disabled-bg;
+  }
+
+  @each $lang, $value in $custom-file-text {
+    &:lang(#{$lang}) ~ .custom-file-label::after {
+      content: $value;
+    }
+  }
+
+  ~ .custom-file-label[data-browse]::after {
+    content: attr(data-browse);
+  }
+}
+
+.custom-file-label {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1;
+  height: $custom-file-height;
+  padding: $custom-file-padding-y $custom-file-padding-x;
+  overflow: hidden;
+  font-family: $custom-file-font-family;
+  font-weight: $custom-file-font-weight;
+  line-height: $custom-file-line-height;
+  color: $custom-file-color;
+  background-color: $custom-file-bg;
+  border: $custom-file-border-width solid $custom-file-border-color;
+  @include border-radius($custom-file-border-radius);
+  @include box-shadow($custom-file-box-shadow);
+
+  &::after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 3;
+    display: block;
+    height: $custom-file-height-inner;
+    padding: $custom-file-padding-y $custom-file-padding-x;
+    line-height: $custom-file-line-height;
+    color: $custom-file-button-color;
+    content: "Browse";
+    @include gradient-bg($custom-file-button-bg);
+    border-left: inherit;
+    @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
+  }
+}
+
+// Range
+//
+// Style range inputs the same across browsers. Vendor-specific rules for pseudo
+// elements cannot be mixed. As such, there are no shared styles for focus or
+// active states on prefixed selectors.
+
+.custom-range {
+  width: 100%;
+  height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);
+  padding: 0; // Need to reset padding
+  background-color: transparent;
+  appearance: none;
+
+  &:focus {
+    outline: 0;
+
+    // Pseudo-elements must be split across multiple rulesets to have an effect.
+    // No box-shadow() mixin for focus accessibility.
+    &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
+    &::-moz-range-thumb     { box-shadow: $custom-range-thumb-focus-box-shadow; }
+    &::-ms-thumb            { box-shadow: $custom-range-thumb-focus-box-shadow; }
+  }
+
+  &::-moz-focus-outer {
+    border: 0;
+  }
+
+  &::-webkit-slider-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-webkit-slider-runnable-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent; // Why?
+    cursor: $custom-range-track-cursor;
+    background-color: $custom-range-track-bg;
+    border-color: transparent;
+    @include border-radius($custom-range-track-border-radius);
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-moz-range-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-moz-range-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent;
+    cursor: $custom-range-track-cursor;
+    background-color: $custom-range-track-bg;
+    border-color: transparent; // Firefox specific?
+    @include border-radius($custom-range-track-border-radius);
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-ms-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    margin-top: 0; // Edge specific
+    margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
+    margin-left: $custom-range-thumb-focus-box-shadow-width;  // Workaround that overflowed box-shadow is hidden.
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-ms-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent;
+    cursor: $custom-range-track-cursor;
+    background-color: transparent;
+    border-color: transparent;
+    border-width: $custom-range-thumb-height * .5;
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-ms-fill-lower {
+    background-color: $custom-range-track-bg;
+    @include border-radius($custom-range-track-border-radius);
+  }
+
+  &::-ms-fill-upper {
+    margin-right: 15px; // arbitrary?
+    background-color: $custom-range-track-bg;
+    @include border-radius($custom-range-track-border-radius);
+  }
+
+  &:disabled {
+    &::-webkit-slider-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+
+    &::-webkit-slider-runnable-track {
+      cursor: default;
+    }
+
+    &::-moz-range-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+
+    &::-moz-range-track {
+      cursor: default;
+    }
+
+    &::-ms-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+  }
+}
+
+.custom-control-label::before,
+.custom-file-label,
+.custom-select {
+  @include transition($custom-forms-transition);
+}
diff --git a/css/bootstrap/_custom.scss b/css/bootstrap/_custom.scss
new file mode 100644 (file)
index 0000000..53b4834
--- /dev/null
@@ -0,0 +1,73 @@
+// Nick
+
+$footer-link-color: darken(theme-color("success"), 10%);
+$footer-link-hover-color: darken($footer-link-color, 10%);
+
+// apply this to a div inside the body tag
+// prevents page shifting to left/right as scrollbar appears/disappears
+// it works by calculating the width of the scrollbar and then adding
+// the corresponding amount of padding to left to keep things centered
+// see https://stackoverflow.com/questions/45524214/how-do-i-stop-my-web-content-from-shifting-left-when-the-vertical-scrollbar-appe
+.scrollbar-fix {
+  padding-left: calc(100vw - 100%);
+}
+
+// needed for svg icons inside buttons, card headers, etc
+// creates an inline element with correct width but no height
+// the svg is positioned within this to vertically centre on a capital letter
+$icon-sizes: (
+  24: 24px,
+  32: 32px,
+  48: 48px,
+  64: 64px
+);
+@each $icon-size, $icon-size-px in $icon-sizes {
+  .icon#{$icon-size}-outer {
+    display: inline-block;
+    position: relative;
+    width: $icon-size-px;
+    height: 0;
+    vertical-align: baseline;
+  }
+  .icon#{$icon-size}-inner {
+    position: absolute;
+    left: 0px;
+    top: calc(-.5 * $icon-size-px - .35em); // .35em = approx half cap height
+    width: $icon-size-px;
+    height: $icon-size-px;
+    fill: currentColor;
+    stroke: currentColor;
+  }
+}
+
+// use this to display the pi symbol without horrible blocky look in Sans
+.serif {
+  font-family: $font-family-serif;
+}
+
+// apply this to table to get an icon with vertically centred text next to it
+.icon-and-text {
+  vertical-align: middle;
+  td {
+    padding: .25em .5em;
+  }
+}
+
+.search-results li {
+  margin-bottom: .5em;
+}
+
+footer, .footer {
+  padding-top: 35px;
+  padding-bottom: 25px;
+  background-color: $gray-400;
+  a {
+    color: $footer-link-color;
+
+    &:hover,
+    &:focus {
+      color: $footer-link-hover-color;
+      //background-color: $footer-link-hover-bg;
+    }
+  }
+}
diff --git a/css/bootstrap/_dropdown.scss b/css/bootstrap/_dropdown.scss
new file mode 100644 (file)
index 0000000..f39de11
--- /dev/null
@@ -0,0 +1,192 @@
+// The dropdown wrapper (`<div>`)
+.dropup,
+.dropright,
+.dropdown,
+.dropleft {
+  position: relative;
+}
+
+.dropdown-toggle {
+  white-space: nowrap;
+
+  // Generate the caret automatically
+  @include caret();
+}
+
+// The dropdown menu
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: $zindex-dropdown;
+  display: none; // none by default, but block on "open" of the menu
+  float: left;
+  min-width: $dropdown-min-width;
+  padding: $dropdown-padding-y $dropdown-padding-x;
+  margin: $dropdown-spacer 0 0; // override default ul
+  @include font-size($dropdown-font-size);
+  color: $dropdown-color;
+  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+  list-style: none;
+  background-color: $dropdown-bg;
+  background-clip: padding-box;
+  border: $dropdown-border-width solid $dropdown-border-color;
+  @include border-radius($dropdown-border-radius);
+  @include box-shadow($dropdown-box-shadow);
+}
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .dropdown-menu#{$infix}-left {
+      right: auto;
+      left: 0;
+    }
+
+    .dropdown-menu#{$infix}-right {
+      right: 0;
+      left: auto;
+    }
+  }
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+// Just add .dropup after the standard .dropdown class and you're set.
+.dropup {
+  .dropdown-menu {
+    top: auto;
+    bottom: 100%;
+    margin-top: 0;
+    margin-bottom: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(up);
+  }
+}
+
+.dropright {
+  .dropdown-menu {
+    top: 0;
+    right: auto;
+    left: 100%;
+    margin-top: 0;
+    margin-left: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(right);
+    &::after {
+      vertical-align: 0;
+    }
+  }
+}
+
+.dropleft {
+  .dropdown-menu {
+    top: 0;
+    right: 100%;
+    left: auto;
+    margin-top: 0;
+    margin-right: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(left);
+    &::before {
+      vertical-align: 0;
+    }
+  }
+}
+
+// When Popper is enabled, reset the basic dropdown position
+// stylelint-disable-next-line no-duplicate-selectors
+.dropdown-menu {
+  &[x-placement^="top"],
+  &[x-placement^="right"],
+  &[x-placement^="bottom"],
+  &[x-placement^="left"] {
+    right: auto;
+    bottom: auto;
+  }
+}
+
+// Dividers (basically an `<hr>`) within the dropdown
+.dropdown-divider {
+  @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y, true);
+}
+
+// Links, buttons, and more within the dropdown menu
+//
+// `<button>`-specific styles are denoted with `// For <button>s`
+.dropdown-item {
+  display: block;
+  width: 100%; // For `<button>`s
+  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
+  clear: both;
+  font-weight: $font-weight-normal;
+  color: $dropdown-link-color;
+  text-align: inherit; // For `<button>`s
+  text-decoration: if($link-decoration == none, null, none);
+  white-space: nowrap; // prevent links from randomly breaking onto new lines
+  background-color: transparent; // For `<button>`s
+  border: 0; // For `<button>`s
+
+  // Prevent dropdown overflow if there's no padding
+  // See https://github.com/twbs/bootstrap/pull/27703
+  @if $dropdown-padding-y == 0 {
+    &:first-child {
+      @include border-top-radius($dropdown-inner-border-radius);
+    }
+
+    &:last-child {
+      @include border-bottom-radius($dropdown-inner-border-radius);
+    }
+  }
+
+  @include hover-focus() {
+    color: $dropdown-link-hover-color;
+    text-decoration: none;
+    @include gradient-bg($dropdown-link-hover-bg);
+  }
+
+  &.active,
+  &:active {
+    color: $dropdown-link-active-color;
+    text-decoration: none;
+    @include gradient-bg($dropdown-link-active-bg);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $dropdown-link-disabled-color;
+    pointer-events: none;
+    background-color: transparent;
+    // Remove CSS gradients if they're enabled
+    @if $enable-gradients {
+      background-image: none;
+    }
+  }
+}
+
+.dropdown-menu.show {
+  display: block;
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: $dropdown-header-padding;
+  margin-bottom: 0; // for use with heading elements
+  @include font-size($font-size-sm);
+  color: $dropdown-header-color;
+  white-space: nowrap; // as with > li > a
+}
+
+// Dropdown text
+.dropdown-item-text {
+  display: block;
+  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
+  color: $dropdown-link-color;
+}
diff --git a/css/bootstrap/_forms.scss b/css/bootstrap/_forms.scss
new file mode 100644 (file)
index 0000000..a23625c
--- /dev/null
@@ -0,0 +1,353 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Textual form controls
+//
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: $input-height;
+  padding: $input-padding-y $input-padding-x;
+  font-family: $input-font-family;
+  @include font-size($input-font-size);
+  font-weight: $input-font-weight;
+  line-height: $input-line-height;
+  color: $input-color;
+  background-color: $input-bg;
+  background-clip: padding-box;
+  border: $input-border-width solid $input-border-color;
+
+  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
+  @include border-radius($input-border-radius, 0);
+
+  @include box-shadow($input-box-shadow);
+  @include transition($input-transition);
+
+  // Unstyle the caret on `<select>`s in IE10+.
+  &::-ms-expand {
+    background-color: transparent;
+    border: 0;
+  }
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  @include form-control-focus($ignore-warning: true);
+
+  // Placeholder
+  &::placeholder {
+    color: $input-placeholder-color;
+    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
+    opacity: 1;
+  }
+
+  // Disabled and read-only inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &:disabled,
+  &[readonly] {
+    background-color: $input-disabled-bg;
+    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
+    opacity: 1;
+  }
+}
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+  &.form-control {
+    appearance: none; // Fix appearance for date inputs in Safari
+  }
+}
+
+select.form-control {
+  // Remove select outline from select box in FF
+  &:-moz-focusring {
+    color: transparent;
+    text-shadow: 0 0 0 $input-color;
+  }
+
+  &:focus::-ms-value {
+    // Suppress the nested default white text on blue background highlight given to
+    // the selected option text when the (still closed) <select> receives focus
+    // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
+    // match the appearance of the native widget.
+    // See https://github.com/twbs/bootstrap/issues/19398.
+    color: $input-color;
+    background-color: $input-bg;
+  }
+}
+
+// Make file inputs better match text inputs by forcing them to new lines.
+.form-control-file,
+.form-control-range {
+  display: block;
+  width: 100%;
+}
+
+
+//
+// Labels
+//
+
+// Nick
+.form-label {
+  font-weight: $label-font-weight;
+}
+// For use with horizontal and inline forms, when you need the label (or legend)
+// text to align with the form controls.
+.col-form-label {
+  padding-top: add($input-padding-y, $input-border-width);
+  padding-bottom: add($input-padding-y, $input-border-width);
+  margin-bottom: 0; // Override the `<label>/<legend>` default
+  @include font-size(inherit); // Override the `<legend>` default
+  line-height: $input-line-height;
+}
+
+.col-form-label-lg {
+  padding-top: add($input-padding-y-lg, $input-border-width);
+  padding-bottom: add($input-padding-y-lg, $input-border-width);
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+}
+
+.col-form-label-sm {
+  padding-top: add($input-padding-y-sm, $input-border-width);
+  padding-bottom: add($input-padding-y-sm, $input-border-width);
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+}
+
+
+// Readonly controls as plain text
+//
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding: $input-padding-y 0;
+  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+  @include font-size($input-font-size);
+  line-height: $input-line-height;
+  color: $input-plaintext-color;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: $input-border-width 0;
+
+  &.form-control-sm,
+  &.form-control-lg {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// Repeated in `_input_group.scss` to avoid Sass extend issues.
+
+.form-control-sm {
+  height: $input-height-sm;
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+  @include border-radius($input-border-radius-sm);
+}
+
+.form-control-lg {
+  height: $input-height-lg;
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+  @include border-radius($input-border-radius-lg);
+}
+
+// stylelint-disable-next-line no-duplicate-selectors
+select.form-control {
+  &[size],
+  &[multiple] {
+    height: auto;
+  }
+}
+
+textarea.form-control {
+  height: auto;
+}
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+  margin-bottom: $form-group-margin-bottom;
+}
+
+.form-text {
+  display: block;
+  margin-top: $form-text-margin-top;
+}
+
+
+// Form grid
+//
+// Special replacement for our grid system's `.row` for tighter form layouts.
+
+.form-row {
+  display: flex;
+  flex-wrap: wrap;
+  margin-right: -$form-grid-gutter-width * .5;
+  margin-left: -$form-grid-gutter-width * .5;
+
+  > .col,
+  > [class*="col-"] {
+    padding-right: $form-grid-gutter-width * .5;
+    padding-left: $form-grid-gutter-width * .5;
+  }
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.form-check {
+  position: relative;
+  display: block;
+  padding-left: $form-check-input-gutter;
+}
+
+.form-check-input {
+  position: absolute;
+  margin-top: $form-check-input-margin-y;
+  margin-left: -$form-check-input-gutter;
+
+  // Use [disabled] and :disabled for workaround https://github.com/twbs/bootstrap/issues/28247
+  &[disabled] ~ .form-check-label,
+  &:disabled ~ .form-check-label {
+    color: $text-muted;
+  }
+}
+
+.form-check-label {
+  font-weight: $label-font-weight; // Nick
+  margin-bottom: 0; // Override default `<label>` bottom margin
+}
+
+.form-check-inline {
+  display: inline-flex;
+  align-items: center;
+  padding-left: 0; // Override base .form-check
+  margin-right: $form-check-inline-margin-x;
+
+  // Undo .form-check-input defaults and add some `margin-right`.
+  .form-check-input {
+    position: static;
+    margin-top: 0;
+    margin-right: $form-check-inline-input-margin-x;
+    margin-left: 0;
+  }
+}
+
+
+// Form validation
+//
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server side validation.
+
+@each $state, $data in $form-validation-states {
+  @include form-validation-state($state, map-get($data, color), map-get($data, icon));
+}
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+
+.form-inline {
+  display: flex;
+  flex-flow: row wrap;
+  align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
+
+  // Because we use flex, the initial sizing of checkboxes is collapsed and
+  // doesn't occupy the full-width (which is what we want for xs grid tier),
+  // so we force that here.
+  .form-check {
+    width: 100%;
+  }
+
+  // Kick in the inline
+  @include media-breakpoint-up(sm) {
+    label {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-bottom: 0;
+    }
+
+    // Inline-block all the things for "inline"
+    .form-group {
+      display: flex;
+      flex: 0 0 auto;
+      flex-flow: row wrap;
+      align-items: center;
+      margin-bottom: 0;
+    }
+
+    // Allow folks to *not* use `.form-group`
+    .form-control {
+      display: inline-block;
+      width: auto; // Prevent labels from stacking above inputs in `.form-group`
+      vertical-align: middle;
+    }
+
+    // Make static controls behave like regular ones
+    .form-control-plaintext {
+      display: inline-block;
+    }
+
+    .input-group,
+    .custom-select {
+      width: auto;
+    }
+
+    // Remove default margin on radios/checkboxes that were used for stacking, and
+    // then undo the floating of radios and checkboxes to match.
+    .form-check {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: auto;
+      padding-left: 0;
+    }
+    .form-check-input {
+      position: relative;
+      flex-shrink: 0;
+      margin-top: 0;
+      margin-right: $form-check-input-margin-x;
+      margin-left: 0;
+    }
+
+    .custom-control {
+      align-items: center;
+      justify-content: center;
+    }
+    .custom-control-label {
+      margin-bottom: 0;
+    }
+  }
+}
diff --git a/css/bootstrap/_functions.scss b/css/bootstrap/_functions.scss
new file mode 100644 (file)
index 0000000..13d9de0
--- /dev/null
@@ -0,0 +1,190 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+@mixin _assert-ascending($map, $map-name) {
+  $prev-key: null;
+  $prev-num: null;
+  @each $key, $num in $map {
+    @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
+      // Do nothing
+    } @else if not comparable($prev-num, $num) {
+      @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    } @else if $prev-num >= $num {
+      @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    }
+    $prev-key: $key;
+    $prev-num: $num;
+  }
+}
+
+// Starts at zero
+// Used to ensure the min-width of the lowest breakpoint starts at 0.
+@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
+  @if length($map) > 0 {
+    $values: map-values($map);
+    $first-value: nth($values, 1);
+    @if $first-value != 0 {
+      @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
+    }
+  }
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Hugo Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+@function str-replace($string, $search, $replace: "") {
+  $index: str-index($string, $search);
+
+  @if $index {
+    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+  }
+
+  @return $string;
+}
+
+// See https://codepen.io/kevinweber/pen/dXWoRw
+//
+// Requires the use of quotes around data URIs.
+
+@function escape-svg($string) {
+  @if str-index($string, "data:image/svg+xml") {
+    @each $char, $encoded in $escaped-characters {
+      // Do not escape the url brackets
+      @if str-index($string, "url(") == 1 {
+        $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
+      } @else {
+        $string: str-replace($string, $char, $encoded);
+      }
+    }
+  }
+
+  @return $string;
+}
+
+// Color contrast
+@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
+  $r: red($color);
+  $g: green($color);
+  $b: blue($color);
+
+  $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
+
+  @if ($yiq >= $yiq-contrasted-threshold) {
+    @return $dark;
+  } @else {
+    @return $light;
+  }
+}
+
+// Retrieve color Sass maps
+@function color($key: "blue") {
+  @return map-get($colors, $key);
+}
+
+@function theme-color($key: "primary") {
+  @return map-get($theme-colors, $key);
+}
+
+@function gray($key: "100") {
+  @return map-get($grays, $key);
+}
+
+// Request a theme color level
+@function theme-color-level($color-name: "primary", $level: 0) {
+  $color: theme-color($color-name);
+  $color-base: if($level > 0, $black, $white);
+  $level: abs($level);
+
+  @return mix($color-base, $color, $level * $theme-color-interval);
+}
+
+// Return valid calc
+@function add($value1, $value2, $return-calc: true) {
+  @if $value1 == null {
+    @return $value2;
+  }
+
+  @if $value2 == null {
+    @return $value1;
+  }
+
+  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+    @return $value1 + $value2;
+  }
+
+  @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
+}
+
+@function subtract($value1, $value2, $return-calc: true) {
+  @if $value1 == null and $value2 == null {
+    @return null;
+  }
+
+  @if $value1 == null {
+    @return -$value2;
+  }
+
+  @if $value2 == null {
+    @return $value1;
+  }
+
+  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+    @return $value1 - $value2;
+  }
+
+  @if type-of($value2) != number {
+    $value2: unquote("(") + $value2 + unquote(")");
+  }
+
+  @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
+}
+
+@function divide($dividend, $divisor, $precision: 10) {
+  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+  $dividend: abs($dividend);
+  $divisor: abs($divisor);
+  @if $dividend == 0 {
+    @return 0;
+  }
+  @if $divisor == 0 {
+    @error "Cannot divide by 0";
+  }
+  $remainder: $dividend;
+  $result: 0;
+  $factor: 10;
+  @while ($remainder > 0 and $precision >= 0) {
+    $quotient: 0;
+    @while ($remainder >= $divisor) {
+      $remainder: $remainder - $divisor;
+      $quotient: $quotient + 1;
+    }
+    $result: $result * 10 + $quotient;
+    $factor: $factor * .1;
+    $remainder: $remainder * 10;
+    $precision: $precision - 1;
+    @if ($precision < 0 and $remainder >= $divisor * 5) {
+      $result: $result + 1;
+    }
+  }
+  $result: $result * $factor * $sign;
+  $dividend-unit: unit($dividend);
+  $divisor-unit: unit($divisor);
+  $unit-map: (
+    "px": 1px,
+    "rem": 1rem,
+    "em": 1em,
+    "%": 1%
+  );
+  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+    $result: $result * map-get($unit-map, $dividend-unit);
+  }
+  @return $result;
+}
diff --git a/css/bootstrap/_grid.scss b/css/bootstrap/_grid.scss
new file mode 100644 (file)
index 0000000..0bfe530
--- /dev/null
@@ -0,0 +1,73 @@
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+@if $enable-grid-classes {
+  // Single container class with breakpoint max-widths
+  .container,
+  // 100% wide container at all breakpoints
+  .container-fluid {
+    @include make-container();
+  }
+
+  // Responsive containers that are 100% wide until a breakpoint
+  @each $breakpoint, $container-max-width in $container-max-widths {
+    .container-#{$breakpoint} {
+      @extend .container-fluid;
+    }
+
+    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
+      %responsive-container-#{$breakpoint} {
+        max-width: $container-max-width;
+      }
+
+      // Extend each breakpoint which is smaller or equal to the current breakpoint
+      $extend-breakpoint: true;
+
+      @each $name, $width in $grid-breakpoints {
+        @if ($extend-breakpoint) {
+          .container#{breakpoint-infix($name, $grid-breakpoints)} {
+            @extend %responsive-container-#{$breakpoint};
+          }
+
+          // Once the current breakpoint is reached, stop extending
+          @if ($breakpoint == $name) {
+            $extend-breakpoint: false;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+// Row
+//
+// Rows contain your columns.
+
+@if $enable-grid-classes {
+  .row {
+    @include make-row();
+  }
+
+  // Remove the negative margin from default .row, then the horizontal padding
+  // from all immediate children columns (to prevent runaway style inheritance).
+  .no-gutters {
+    margin-right: 0;
+    margin-left: 0;
+
+    > .col,
+    > [class*="col-"] {
+      padding-right: 0;
+      padding-left: 0;
+    }
+  }
+}
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+@if $enable-grid-classes {
+  @include make-grid-columns();
+}
diff --git a/css/bootstrap/_images.scss b/css/bootstrap/_images.scss
new file mode 100644 (file)
index 0000000..3d6a101
--- /dev/null
@@ -0,0 +1,42 @@
+// Responsive images (ensure images don't scale beyond their parents)
+//
+// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
+// We previously tried the "images are responsive by default" approach in Bootstrap v2,
+// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
+// which weren't expecting the images within themselves to be involuntarily resized.
+// See also https://github.com/twbs/bootstrap/issues/18178
+.img-fluid {
+  @include img-fluid();
+}
+
+
+// Image thumbnails
+.img-thumbnail {
+  padding: $thumbnail-padding;
+  background-color: $thumbnail-bg;
+  border: $thumbnail-border-width solid $thumbnail-border-color;
+  @include border-radius($thumbnail-border-radius);
+  @include box-shadow($thumbnail-box-shadow);
+
+  // Keep them at most 100% wide
+  @include img-fluid();
+}
+
+//
+// Figures
+//
+
+.figure {
+  // Ensures the caption's text aligns with the image.
+  display: inline-block;
+}
+
+.figure-img {
+  margin-bottom: $spacer * .5;
+  line-height: 1;
+}
+
+.figure-caption {
+  @include font-size($figure-caption-font-size);
+  color: $figure-caption-color;
+}
diff --git a/css/bootstrap/_input-group.scss b/css/bootstrap/_input-group.scss
new file mode 100644 (file)
index 0000000..5acedd6
--- /dev/null
@@ -0,0 +1,211 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Base styles
+//
+
+.input-group {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap; // For form validation feedback
+  align-items: stretch;
+  width: 100%;
+
+  > .form-control,
+  > .form-control-plaintext,
+  > .custom-select,
+  > .custom-file {
+    position: relative; // For focus state's z-index
+    flex: 1 1 auto;
+    width: 1%;
+    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
+    margin-bottom: 0;
+
+    + .form-control,
+    + .custom-select,
+    + .custom-file {
+      margin-left: -$input-border-width;
+    }
+  }
+
+  // Bring the "active" form control to the top of surrounding elements
+  > .form-control:focus,
+  > .custom-select:focus,
+  > .custom-file .custom-file-input:focus ~ .custom-file-label {
+    z-index: 3;
+  }
+
+  // Bring the custom file input above the label
+  > .custom-file .custom-file-input:focus {
+    z-index: 4;
+  }
+
+  > .form-control,
+  > .custom-select {
+    &:not(:first-child) { @include border-left-radius(0); }
+  }
+
+  // Custom file inputs have more complex markup, thus requiring different
+  // border-radius overrides.
+  > .custom-file {
+    display: flex;
+    align-items: center;
+
+    &:not(:last-child) .custom-file-label,
+    &:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
+    &:not(:first-child) .custom-file-label { @include border-left-radius(0); }
+  }
+
+  &:not(.has-validation) {
+    > .form-control:not(:last-child),
+    > .custom-select:not(:last-child),
+    > .custom-file:not(:last-child) .custom-file-label,
+    > .custom-file:not(:last-child) .custom-file-label::after {
+      @include border-right-radius(0);
+    }
+  }
+
+  &.has-validation {
+    > .form-control:nth-last-child(n + 3),
+    > .custom-select:nth-last-child(n + 3),
+    > .custom-file:nth-last-child(n + 3) .custom-file-label,
+    > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
+      @include border-right-radius(0);
+    }
+  }
+}
+
+
+// Prepend and append
+//
+// While it requires one extra layer of HTML for each, dedicated prepend and
+// append elements allow us to 1) be less clever, 2) simplify our selectors, and
+// 3) support HTML5 form validation.
+
+.input-group-prepend,
+.input-group-append {
+  display: flex;
+
+  // Ensure buttons are always above inputs for more visually pleasing borders.
+  // This isn't needed for `.input-group-text` since it shares the same border-color
+  // as our inputs.
+  .btn {
+    position: relative;
+    z-index: 2;
+
+    &:focus {
+      z-index: 3;
+    }
+  }
+
+  .btn + .btn,
+  .btn + .input-group-text,
+  .input-group-text + .input-group-text,
+  .input-group-text + .btn {
+    margin-left: -$input-border-width;
+  }
+}
+
+.input-group-prepend { margin-right: -$input-border-width; }
+.input-group-append { margin-left: -$input-border-width; }
+
+
+// Textual addons
+//
+// Serves as a catch-all element for any text or radio/checkbox input you wish
+// to prepend or append to an input.
+
+.input-group-text {
+  display: flex;
+  align-items: center;
+  padding: $input-padding-y $input-padding-x;
+  margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom
+  @include font-size($input-font-size); // Match inputs
+  font-weight: $font-weight-normal;
+  line-height: $input-line-height;
+  color: $input-group-addon-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $input-group-addon-bg;
+  border: $input-border-width solid $input-group-addon-border-color;
+  @include border-radius($input-border-radius);
+
+  // Nuke default margins from checkboxes and radios to vertically center within.
+  input[type="radio"],
+  input[type="checkbox"] {
+    margin-top: 0;
+  }
+}
+
+
+// Sizing
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control:not(textarea),
+.input-group-lg > .custom-select {
+  height: $input-height-lg;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .custom-select,
+.input-group-lg > .input-group-prepend > .input-group-text,
+.input-group-lg > .input-group-append > .input-group-text,
+.input-group-lg > .input-group-prepend > .btn,
+.input-group-lg > .input-group-append > .btn {
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+  @include border-radius($input-border-radius-lg);
+}
+
+.input-group-sm > .form-control:not(textarea),
+.input-group-sm > .custom-select {
+  height: $input-height-sm;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .custom-select,
+.input-group-sm > .input-group-prepend > .input-group-text,
+.input-group-sm > .input-group-append > .input-group-text,
+.input-group-sm > .input-group-prepend > .btn,
+.input-group-sm > .input-group-append > .btn {
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+  @include border-radius($input-border-radius-sm);
+}
+
+.input-group-lg > .custom-select,
+.input-group-sm > .custom-select {
+  padding-right: $custom-select-padding-x + $custom-select-indicator-padding;
+}
+
+
+// Prepend and append rounded corners
+//
+// These rulesets must come after the sizing ones to properly override sm and lg
+// border-radius values when extending. They're more specific than we'd like
+// with the `.input-group >` part, but without it, we cannot override the sizing.
+
+
+.input-group > .input-group-prepend > .btn,
+.input-group > .input-group-prepend > .input-group-text,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
+.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
+  @include border-right-radius(0);
+}
+
+.input-group > .input-group-append > .btn,
+.input-group > .input-group-append > .input-group-text,
+.input-group > .input-group-prepend:not(:first-child) > .btn,
+.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
+.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
+.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
+  @include border-left-radius(0);
+}
diff --git a/css/bootstrap/_jumbotron.scss b/css/bootstrap/_jumbotron.scss
new file mode 100644 (file)
index 0000000..2c617ed
--- /dev/null
@@ -0,0 +1,17 @@
+.jumbotron {
+  padding: $jumbotron-padding ($jumbotron-padding * .5);
+  margin-bottom: $jumbotron-padding;
+  color: $jumbotron-color;
+  background-color: $jumbotron-bg;
+  @include border-radius($border-radius-lg);
+
+  @include media-breakpoint-up(sm) {
+    padding: ($jumbotron-padding * 2) $jumbotron-padding;
+  }
+}
+
+.jumbotron-fluid {
+  padding-right: 0;
+  padding-left: 0;
+  @include border-radius(0);
+}
diff --git a/css/bootstrap/_list-group.scss b/css/bootstrap/_list-group.scss
new file mode 100644 (file)
index 0000000..ec25ba8
--- /dev/null
@@ -0,0 +1,154 @@
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+
+.list-group {
+  display: flex;
+  flex-direction: column;
+
+  // No need to set list-style: none; since .list-group-item is block level
+  padding-left: 0; // reset padding because ul and ol
+  margin-bottom: 0;
+  @include border-radius($list-group-border-radius);
+}
+
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive
+// list items. Includes an extra `.active` modifier class for selected items.
+
+.list-group-item-action {
+  width: 100%; // For `<button>`s (anchors become 100% by default though)
+  color: $list-group-action-color;
+  text-align: inherit; // For `<button>`s (anchors inherit)
+
+  // Hover state
+  @include hover-focus() {
+    z-index: 1; // Place hover/focus items above their siblings for proper border styling
+    color: $list-group-action-hover-color;
+    text-decoration: none;
+    background-color: $list-group-hover-bg;
+  }
+
+  &:active {
+    color: $list-group-action-active-color;
+    background-color: $list-group-action-active-bg;
+  }
+}
+
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: $list-group-item-padding-y $list-group-item-padding-x;
+  color: $list-group-color;
+  text-decoration: if($link-decoration == none, null, none);
+  background-color: $list-group-bg;
+  border: $list-group-border-width solid $list-group-border-color;
+
+  &:first-child {
+    @include border-top-radius(inherit);
+  }
+
+  &:last-child {
+    @include border-bottom-radius(inherit);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $list-group-disabled-color;
+    pointer-events: none;
+    background-color: $list-group-disabled-bg;
+  }
+
+  // Include both here for `<a>`s and `<button>`s
+  &.active {
+    z-index: 2; // Place active items above their siblings for proper border styling
+    color: $list-group-active-color;
+    background-color: $list-group-active-bg;
+    border-color: $list-group-active-border-color;
+  }
+
+  & + & {
+    border-top-width: 0;
+
+    &.active {
+      margin-top: -$list-group-border-width;
+      border-top-width: $list-group-border-width;
+    }
+  }
+}
+
+
+// Horizontal
+//
+// Change the layout of list group items from vertical (default) to horizontal.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .list-group-horizontal#{$infix} {
+      flex-direction: row;
+
+      > .list-group-item {
+        &:first-child {
+          @include border-bottom-left-radius($list-group-border-radius);
+          @include border-top-right-radius(0);
+        }
+
+        &:last-child {
+          @include border-top-right-radius($list-group-border-radius);
+          @include border-bottom-left-radius(0);
+        }
+
+        &.active {
+          margin-top: 0;
+        }
+
+        + .list-group-item {
+          border-top-width: $list-group-border-width;
+          border-left-width: 0;
+
+          &.active {
+            margin-left: -$list-group-border-width;
+            border-left-width: $list-group-border-width;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+// Flush list items
+//
+// Remove borders and border-radius to keep list group items edge-to-edge. Most
+// useful within other components (e.g., cards).
+
+.list-group-flush {
+  @include border-radius(0);
+
+  > .list-group-item {
+    border-width: 0 0 $list-group-border-width;
+
+    &:last-child {
+      border-bottom-width: 0;
+    }
+  }
+}
+
+
+// Contextual variants
+//
+// Add modifier classes to change text and background color on individual items.
+// Organizationally, this must come after the `:hover` states.
+
+@each $color, $value in $theme-colors {
+  @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));
+}
diff --git a/css/bootstrap/_media.scss b/css/bootstrap/_media.scss
new file mode 100644 (file)
index 0000000..b573052
--- /dev/null
@@ -0,0 +1,8 @@
+.media {
+  display: flex;
+  align-items: flex-start;
+}
+
+.media-body {
+  flex: 1;
+}
diff --git a/css/bootstrap/_mixins.scss b/css/bootstrap/_mixins.scss
new file mode 100644 (file)
index 0000000..7e7a23d
--- /dev/null
@@ -0,0 +1,47 @@
+// Toggles
+//
+// Used in conjunction with global variables to enable certain theme features.
+
+// Vendor
+@import "vendor/rfs";
+
+// Deprecate
+@import "mixins/deprecate";
+
+// Utilities
+@import "mixins/breakpoints";
+@import "mixins/hover";
+@import "mixins/image";
+@import "mixins/badge";
+@import "mixins/resize";
+@import "mixins/screen-reader";
+@import "mixins/size";
+@import "mixins/reset-text";
+@import "mixins/text-emphasis";
+@import "mixins/text-hide";
+@import "mixins/text-truncate";
+@import "mixins/visibility";
+
+// Components
+@import "mixins/alert";
+@import "mixins/buttons";
+@import "mixins/caret";
+@import "mixins/pagination";
+@import "mixins/lists";
+@import "mixins/list-group";
+@import "mixins/nav-divider";
+@import "mixins/forms";
+@import "mixins/table-row";
+
+// Skins
+@import "mixins/background-variant";
+@import "mixins/border-radius";
+@import "mixins/box-shadow";
+@import "mixins/gradients";
+@import "mixins/transition";
+
+// Layout
+@import "mixins/clearfix";
+@import "mixins/grid-framework";
+@import "mixins/grid";
+@import "mixins/float";
diff --git a/css/bootstrap/_modal.scss b/css/bootstrap/_modal.scss
new file mode 100644 (file)
index 0000000..4d01788
--- /dev/null
@@ -0,0 +1,240 @@
+// .modal-open      - body class for killing the scroll
+// .modal           - container to scroll within
+// .modal-dialog    - positioning shell for the actual modal
+// .modal-content   - actual modal w/ bg and corners and stuff
+
+
+.modal-open {
+  // Kill the scroll on the body
+  overflow: hidden;
+
+  .modal {
+    overflow-x: hidden;
+    overflow-y: auto;
+  }
+}
+
+// Container that the modal scrolls within
+.modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex-modal;
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  // Prevent Chrome on Windows from adding a focus outline. For details, see
+  // https://github.com/twbs/bootstrap/pull/10951.
+  outline: 0;
+  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
+  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
+  // See also https://github.com/twbs/bootstrap/issues/17695
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: $modal-dialog-margin;
+  // allow clicks to pass through for custom click handling to close modal
+  pointer-events: none;
+
+  // When fading in the modal, animate it to slide down
+  .modal.fade & {
+    @include transition($modal-transition);
+    transform: $modal-fade-transform;
+  }
+  .modal.show & {
+    transform: $modal-show-transform;
+  }
+
+  // When trying to close, animate focus to scale
+  .modal.modal-static & {
+    transform: $modal-scale-transform;
+  }
+}
+
+.modal-dialog-scrollable {
+  display: flex; // IE10/11
+  max-height: subtract(100%, $modal-dialog-margin * 2);
+
+  .modal-content {
+    max-height: subtract(100vh, $modal-dialog-margin * 2); // IE10/11
+    overflow: hidden;
+  }
+
+  .modal-header,
+  .modal-footer {
+    flex-shrink: 0;
+  }
+
+  .modal-body {
+    overflow-y: auto;
+  }
+}
+
+.modal-dialog-centered {
+  display: flex;
+  align-items: center;
+  min-height: subtract(100%, $modal-dialog-margin * 2);
+
+  // Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)
+  &::before {
+    display: block; // IE10
+    height: subtract(100vh, $modal-dialog-margin * 2);
+    height: min-content; // Reset height to 0 except on IE
+    content: "";
+  }
+
+  // Ensure `.modal-body` shows scrollbar (IE10/11)
+  &.modal-dialog-scrollable {
+    flex-direction: column;
+    justify-content: center;
+    height: 100%;
+
+    .modal-content {
+      max-height: none;
+    }
+
+    &::before {
+      content: none;
+    }
+  }
+}
+
+// Actual modal
+.modal-content {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
+  // counteract the pointer-events: none; in the .modal-dialog
+  color: $modal-content-color;
+  pointer-events: auto;
+  background-color: $modal-content-bg;
+  background-clip: padding-box;
+  border: $modal-content-border-width solid $modal-content-border-color;
+  @include border-radius($modal-content-border-radius);
+  @include box-shadow($modal-content-box-shadow-xs);
+  // Remove focus outline from opened modal
+  outline: 0;
+}
+
+// Modal background
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex-modal-backdrop;
+  width: 100vw;
+  height: 100vh;
+  background-color: $modal-backdrop-bg;
+
+  // Fade for backdrop
+  &.fade { opacity: 0; }
+  &.show { opacity: $modal-backdrop-opacity; }
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+  display: flex;
+  align-items: flex-start; // so the close btn always stays on the upper right corner
+  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
+  padding: $modal-header-padding;
+  border-bottom: $modal-header-border-width solid $modal-header-border-color;
+  @include border-top-radius($modal-content-inner-border-radius);
+
+  .close {
+    padding: $modal-header-padding;
+    // auto on the left force icon to the right even when there is no .modal-title
+    margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;
+  }
+}
+
+// Title text within header
+.modal-title {
+  margin-bottom: 0;
+  line-height: $modal-title-line-height;
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+  position: relative;
+  // Enable `flex-grow: 1` so that the body take up as much space as possible
+  // when there should be a fixed height on `.modal-dialog`.
+  flex: 1 1 auto;
+  padding: $modal-inner-padding;
+}
+
+// Footer (for actions)
+.modal-footer {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center; // vertically center
+  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
+  padding: $modal-inner-padding - $modal-footer-margin-between * .5;
+  border-top: $modal-footer-border-width solid $modal-footer-border-color;
+  @include border-bottom-radius($modal-content-inner-border-radius);
+
+  // Place margin between footer elements
+  // This solution is far from ideal because of the universal selector usage,
+  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800
+  > * {
+    margin: $modal-footer-margin-between * .5;
+  }
+}
+
+// Measure scrollbar width for padding body during modal show/hide
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+
+// Scale up the modal
+@include media-breakpoint-up(sm) {
+  // Automatically set modal's width for larger viewports
+  .modal-dialog {
+    max-width: $modal-md;
+    margin: $modal-dialog-margin-y-sm-up auto;
+  }
+
+  .modal-dialog-scrollable {
+    max-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
+
+    .modal-content {
+      max-height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
+    }
+  }
+
+  .modal-dialog-centered {
+    min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
+
+    &::before {
+      height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
+      height: min-content;
+    }
+  }
+
+  .modal-content {
+    @include box-shadow($modal-content-box-shadow-sm-up);
+  }
+
+  .modal-sm { max-width: $modal-sm; }
+}
+
+@include media-breakpoint-up(lg) {
+  .modal-lg,
+  .modal-xl {
+    max-width: $modal-lg;
+  }
+}
+
+@include media-breakpoint-up(xl) {
+  .modal-xl { max-width: $modal-xl; }
+}
diff --git a/css/bootstrap/_nav.scss b/css/bootstrap/_nav.scss
new file mode 100644 (file)
index 0000000..82a3ec0
--- /dev/null
@@ -0,0 +1,121 @@
+// Base class
+//
+// Kickstart any navigation component with a set of style resets. Works with
+// `<nav>`s, `<ul>`s or `<ol>`s.
+
+.nav {
+  display: flex;
+  flex-wrap: wrap;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+
+.nav-link {
+  display: block;
+  padding: $nav-link-padding-y $nav-link-padding-x;
+  text-decoration: if($link-decoration == none, null, none);
+
+  @include hover-focus() {
+    text-decoration: none;
+    background: $nav-link-hover-bg; // Nick
+  }
+
+  // Disabled state lightens text
+  &.disabled {
+    color: $nav-link-disabled-color;
+    pointer-events: none;
+    cursor: default;
+  }
+}
+
+//
+// Tabs
+//
+
+.nav-tabs {
+  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
+
+  .nav-link {
+    margin-bottom: -$nav-tabs-border-width;
+    border: $nav-tabs-border-width solid transparent;
+    @include border-top-radius($nav-tabs-border-radius);
+
+    @include hover-focus() {
+      border-color: $nav-tabs-link-hover-border-color;
+    }
+
+    &.disabled {
+      color: $nav-link-disabled-color;
+      background-color: transparent;
+      border-color: transparent;
+    }
+  }
+
+  .nav-link.active,
+  .nav-item.show .nav-link {
+    color: $nav-tabs-link-active-color;
+    background-color: $nav-tabs-link-active-bg;
+    border-color: $nav-tabs-link-active-border-color;
+  }
+
+  .dropdown-menu {
+    // Make dropdown border overlap tab border
+    margin-top: -$nav-tabs-border-width;
+    // Remove the top rounded corners here since there is a hard edge above the menu
+    @include border-top-radius(0);
+  }
+}
+
+
+//
+// Pills
+//
+
+.nav-pills {
+  .nav-link {
+    @include border-radius($nav-pills-border-radius);
+  }
+
+  .nav-link.active,
+  .show > .nav-link {
+    color: $nav-pills-link-active-color;
+    background-color: $nav-pills-link-active-bg;
+  }
+}
+
+
+//
+// Justified variants
+//
+
+.nav-fill {
+  > .nav-link,
+  .nav-item {
+    flex: 1 1 auto;
+    text-align: center;
+  }
+}
+
+.nav-justified {
+  > .nav-link,
+  .nav-item {
+    flex-basis: 0;
+    flex-grow: 1;
+    text-align: center;
+  }
+}
+
+
+// Tabbable tabs
+//
+// Hide tabbable panes to start, show them when `.active`
+
+.tab-content {
+  > .tab-pane {
+    display: none;
+  }
+  > .active {
+    display: block;
+  }
+}
diff --git a/css/bootstrap/_navbar.scss b/css/bootstrap/_navbar.scss
new file mode 100644 (file)
index 0000000..9a27f3f
--- /dev/null
@@ -0,0 +1,338 @@
+// Contents
+//
+// Navbar
+// Navbar brand
+// Navbar nav
+// Navbar text
+// Navbar divider
+// Responsive navbar
+// Navbar position
+// Navbar themes
+
+
+// Navbar
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap; // allow us to do the line break for collapsing content
+  align-items: center;
+  justify-content: space-between; // space out brand from logo
+  //padding: $navbar-padding-y $navbar-padding-x;
+  padding-y: $navbar-padding-y; // Nick
+
+  // Because flex properties aren't inherited, we need to redeclare these first
+  // few properties so that content nested within behave properly.
+  %container-flex-properties {
+    display: flex;
+    flex-wrap: wrap;
+    align-items: center;
+    justify-content: space-between;
+  }
+
+  .container,
+  .container-fluid {
+    @extend %container-flex-properties;
+  }
+
+  @each $breakpoint, $container-max-width in $container-max-widths {
+    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
+      @extend %container-flex-properties;
+    }
+  }
+}
+
+
+// Navbar brand
+//
+// Used for brand, project, or site names.
+
+.navbar-brand {
+  display: inline-block;
+  padding-top: $navbar-brand-padding-y;
+  padding-bottom: $navbar-brand-padding-y;
+  margin-right: $navbar-padding-x;
+  @include font-size($navbar-brand-font-size);
+  line-height: inherit;
+  white-space: nowrap;
+
+  @include hover-focus() {
+    text-decoration: none;
+  }
+}
+
+
+// Navbar nav
+//
+// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
+
+.navbar-nav {
+  display: flex;
+  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+
+  .nav-link {
+    padding-right: 0;
+    padding-left: 0;
+  }
+
+  .dropdown-menu {
+    position: static;
+    float: none;
+  }
+}
+
+
+// Navbar text
+//
+//
+
+.navbar-text {
+  display: inline-block;
+  padding-top: $nav-link-padding-y;
+  padding-bottom: $nav-link-padding-y;
+}
+
+
+// Responsive navbar
+//
+// Custom styles for responsive collapsing and toggling of navbar contents.
+// Powered by the collapse Bootstrap JavaScript plugin.
+
+// When collapsed, prevent the toggleable navbar contents from appearing in
+// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
+// on the `.navbar` parent.
+.navbar-collapse {
+  flex-basis: 100%;
+  flex-grow: 1;
+  // For always expanded or extra full navbars, ensure content aligns itself
+  // properly vertically. Can be easily overridden with flex utilities.
+  align-items: center;
+}
+
+// Button for toggling the navbar when in its collapsed state
+.navbar-toggler {
+  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
+  @include font-size($navbar-toggler-font-size);
+  line-height: 1;
+  background-color: transparent; // remove default button style
+  border: $border-width solid transparent; // remove default button style
+  @include border-radius($navbar-toggler-border-radius);
+
+  @include hover-focus() {
+    text-decoration: none;
+  }
+}
+
+// Keep as a separate element so folks can easily override it with another icon
+// or image file as needed.
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  content: "";
+  background: 50% / 100% 100% no-repeat;
+}
+
+.navbar-nav-scroll {
+  max-height: $navbar-nav-scroll-max-height;
+  overflow-y: auto;
+}
+
+// Generate series of `.navbar-expand-*` responsive classes for configuring
+// where your navbar collapses.
+.navbar-expand {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    &#{$infix} {
+      @include media-breakpoint-down($breakpoint) {
+        %container-navbar-expand-#{$breakpoint} {
+          padding-right: 0;
+          padding-left: 0;
+        }
+
+        > .container,
+        > .container-fluid {
+          @extend %container-navbar-expand-#{$breakpoint};
+        }
+
+        @each $size, $container-max-width in $container-max-widths {
+          > .container#{breakpoint-infix($size, $container-max-widths)} {
+            @extend %container-navbar-expand-#{$breakpoint};
+          }
+        }
+      }
+
+      @include media-breakpoint-up($next) {
+        flex-flow: row nowrap;
+        justify-content: flex-start;
+
+        .navbar-nav {
+          flex-direction: row;
+
+          .dropdown-menu {
+            position: absolute;
+          }
+
+          .nav-link {
+            //padding-right: $navbar-nav-link-padding-x;
+            //padding-left: $navbar-nav-link-padding-x;
+            padding: $navbar-nav-link-padding-y $navbar-nav-link-padding-x; // Nick
+          }
+        }
+
+        // For nesting containers, have to redeclare for alignment purposes
+        %container-nesting-#{$breakpoint} {
+          flex-wrap: nowrap;
+        }
+
+        > .container,
+        > .container-fluid {
+          @extend %container-nesting-#{$breakpoint};
+        }
+
+        @each $size, $container-max-width in $container-max-widths {
+          > .container#{breakpoint-infix($size, $container-max-widths)} {
+            @extend %container-nesting-#{$breakpoint};
+          }
+        }
+
+        .navbar-nav-scroll {
+          overflow: visible;
+        }
+
+        .navbar-collapse {
+          display: flex !important; // stylelint-disable-line declaration-no-important
+
+          // Changes flex-bases to auto because of an IE10 bug
+          flex-basis: auto;
+        }
+
+        .navbar-toggler {
+          display: none;
+        }
+      }
+    }
+  }
+}
+
+
+// Navbar themes
+//
+// Styles for switching between navbars with light or dark background.
+
+// Dark links against a light background
+.navbar-light {
+  .navbar-brand {
+    color: $navbar-light-brand-color;
+
+    @include hover-focus() {
+      color: $navbar-light-brand-hover-color;
+    }
+  }
+
+  .navbar-nav {
+    .nav-link {
+      color: $navbar-light-color;
+
+      @include hover-focus() {
+        color: $navbar-light-hover-color;
+        background-color: $navbar-light-hover-bg; // Nick
+      }
+
+      &.disabled {
+        color: $navbar-light-disabled-color;
+      }
+    }
+
+    .show > .nav-link,
+    .active > .nav-link,
+    .nav-link.show,
+    .nav-link.active {
+      color: $navbar-light-active-color;
+      background-color: $navbar-light-active-bg; // Nick
+    }
+  }
+
+  .navbar-toggler {
+    color: $navbar-light-color;
+    border-color: $navbar-light-toggler-border-color;
+  }
+
+  .navbar-toggler-icon {
+    background-image: escape-svg($navbar-light-toggler-icon-bg);
+  }
+
+  .navbar-text {
+    color: $navbar-light-color;
+    a {
+      color: $navbar-light-active-color;
+
+      @include hover-focus() {
+        color: $navbar-light-active-color;
+      }
+    }
+  }
+}
+
+// White links against a dark background
+.navbar-dark {
+  .navbar-brand {
+    color: $navbar-dark-brand-color;
+
+    @include hover-focus() {
+      color: $navbar-dark-brand-hover-color;
+    }
+  }
+
+  .navbar-nav {
+    .nav-link {
+      color: $navbar-dark-color;
+
+      @include hover-focus() {
+        color: $navbar-dark-hover-color;
+        background-color: $navbar-dark-hover-bg; // Nick
+      }
+
+      &.disabled {
+        color: $navbar-dark-disabled-color;
+      }
+    }
+
+    .show > .nav-link,
+    .active > .nav-link,
+    .nav-link.show,
+    .nav-link.active {
+      color: $navbar-dark-active-color;
+      background-color: $navbar-dark-active-bg; // Nick
+    }
+  }
+
+  .navbar-toggler {
+    color: $navbar-dark-color;
+    border-color: $navbar-dark-toggler-border-color;
+  }
+
+  .navbar-toggler-icon {
+    background-image: escape-svg($navbar-dark-toggler-icon-bg);
+  }
+
+  .navbar-text {
+    color: $navbar-dark-color;
+    a {
+      color: $navbar-dark-active-color;
+
+      @include hover-focus() {
+        color: $navbar-dark-active-color;
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/_pagination.scss b/css/bootstrap/_pagination.scss
new file mode 100644 (file)
index 0000000..9313cc5
--- /dev/null
@@ -0,0 +1,74 @@
+.pagination {
+  display: flex;
+  @include list-unstyled();
+  @include border-radius();
+}
+
+.page-link {
+  position: relative;
+  display: block;
+  padding: $pagination-padding-y $pagination-padding-x;
+  margin-left: -$pagination-border-width;
+  line-height: $pagination-line-height;
+  color: $pagination-color;
+  text-decoration: if($link-decoration == none, null, none);
+  background-color: $pagination-bg;
+  border: $pagination-border-width solid $pagination-border-color;
+
+  &:hover {
+    z-index: 2;
+    color: $pagination-hover-color;
+    text-decoration: none;
+    background-color: $pagination-hover-bg;
+    border-color: $pagination-hover-border-color;
+  }
+
+  &:focus {
+    z-index: 3;
+    outline: $pagination-focus-outline;
+    box-shadow: $pagination-focus-box-shadow;
+  }
+}
+
+.page-item {
+  &:first-child {
+    .page-link {
+      margin-left: 0;
+      @include border-left-radius($border-radius);
+    }
+  }
+  &:last-child {
+    .page-link {
+      @include border-right-radius($border-radius);
+    }
+  }
+
+  &.active .page-link {
+    z-index: 3;
+    color: $pagination-active-color;
+    background-color: $pagination-active-bg;
+    border-color: $pagination-active-border-color;
+  }
+
+  &.disabled .page-link {
+    color: $pagination-disabled-color;
+    pointer-events: none;
+    // Opinionated: remove the "hand" cursor set previously for .page-link
+    cursor: auto;
+    background-color: $pagination-disabled-bg;
+    border-color: $pagination-disabled-border-color;
+  }
+}
+
+
+//
+// Sizing
+//
+
+.pagination-lg {
+  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $pagination-border-radius-lg);
+}
+
+.pagination-sm {
+  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $pagination-border-radius-sm);
+}
diff --git a/css/bootstrap/_popover.scss b/css/bootstrap/_popover.scss
new file mode 100644 (file)
index 0000000..c7106a8
--- /dev/null
@@ -0,0 +1,170 @@
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: $zindex-popover;
+  display: block;
+  max-width: $popover-max-width;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size($popover-font-size);
+  // Allow breaking very long words so they don't overflow the popover's bounds
+  word-wrap: break-word;
+  background-color: $popover-bg;
+  background-clip: padding-box;
+  border: $popover-border-width solid $popover-border-color;
+  @include border-radius($popover-border-radius);
+  @include box-shadow($popover-box-shadow);
+
+  .arrow {
+    position: absolute;
+    display: block;
+    width: $popover-arrow-width;
+    height: $popover-arrow-height;
+    margin: 0 $popover-border-radius;
+
+    &::before,
+    &::after {
+      position: absolute;
+      display: block;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-popover-top {
+  margin-bottom: $popover-arrow-height;
+
+  > .arrow {
+    bottom: subtract(-$popover-arrow-height, $popover-border-width);
+
+    &::before {
+      bottom: 0;
+      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
+      border-top-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      bottom: $popover-border-width;
+      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
+      border-top-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-right {
+  margin-left: $popover-arrow-height;
+
+  > .arrow {
+    left: subtract(-$popover-arrow-height, $popover-border-width);
+    width: $popover-arrow-height;
+    height: $popover-arrow-width;
+    margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners
+
+    &::before {
+      left: 0;
+      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
+      border-right-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      left: $popover-border-width;
+      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
+      border-right-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-bottom {
+  margin-top: $popover-arrow-height;
+
+  > .arrow {
+    top: subtract(-$popover-arrow-height, $popover-border-width);
+
+    &::before {
+      top: 0;
+      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
+      border-bottom-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      top: $popover-border-width;
+      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
+      border-bottom-color: $popover-arrow-color;
+    }
+  }
+
+  // This will remove the popover-header's border just below the arrow
+  .popover-header::before {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    display: block;
+    width: $popover-arrow-width;
+    margin-left: -$popover-arrow-width * .5;
+    content: "";
+    border-bottom: $popover-border-width solid $popover-header-bg;
+  }
+}
+
+.bs-popover-left {
+  margin-right: $popover-arrow-height;
+
+  > .arrow {
+    right: subtract(-$popover-arrow-height, $popover-border-width);
+    width: $popover-arrow-height;
+    height: $popover-arrow-width;
+    margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners
+
+    &::before {
+      right: 0;
+      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
+      border-left-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      right: $popover-border-width;
+      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
+      border-left-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-auto {
+  &[x-placement^="top"] {
+    @extend .bs-popover-top;
+  }
+  &[x-placement^="right"] {
+    @extend .bs-popover-right;
+  }
+  &[x-placement^="bottom"] {
+    @extend .bs-popover-bottom;
+  }
+  &[x-placement^="left"] {
+    @extend .bs-popover-left;
+  }
+}
+
+
+// Offset the popover to account for the popover arrow
+.popover-header {
+  padding: $popover-header-padding-y $popover-header-padding-x;
+  margin-bottom: 0; // Reset the default from Reboot
+  @include font-size($font-size-base);
+  color: $popover-header-color;
+  background-color: $popover-header-bg;
+  border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
+  @include border-top-radius($popover-inner-border-radius);
+
+  &:empty {
+    display: none;
+  }
+}
+
+.popover-body {
+  padding: $popover-body-padding-y $popover-body-padding-x;
+  color: $popover-body-color;
+}
diff --git a/css/bootstrap/_print.scss b/css/bootstrap/_print.scss
new file mode 100644 (file)
index 0000000..915298a
--- /dev/null
@@ -0,0 +1,132 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type
+
+// Source: https://github.com/h5bp/main.css/blob/master/src/_print.css
+
+// ==========================================================================
+// Print styles.
+// Inlined to avoid the additional HTTP request:
+// https://www.phpied.com/delay-loading-your-print-css/
+// ==========================================================================
+
+@if $enable-print-styles {
+  @media print {
+    *,
+    *::before,
+    *::after {
+      // Bootstrap specific; comment out `color` and `background`
+      //color: $black !important; // Black prints faster
+      text-shadow: none !important;
+      //background: transparent !important;
+      box-shadow: none !important;
+    }
+
+    a {
+      &:not(.btn) {
+        text-decoration: underline;
+      }
+    }
+
+    // Bootstrap specific; comment the following selector out
+    //a[href]::after {
+    //  content: " (" attr(href) ")";
+    //}
+
+    abbr[title]::after {
+      content: " (" attr(title) ")";
+    }
+
+    // Bootstrap specific; comment the following selector out
+    //
+    // Don't show links that are fragment identifiers,
+    // or use the `javascript:` pseudo protocol
+    //
+
+    //a[href^="#"]::after,
+    //a[href^="javascript:"]::after {
+    // content: "";
+    //}
+
+    pre {
+      white-space: pre-wrap !important;
+    }
+    pre,
+    blockquote {
+      border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
+      page-break-inside: avoid;
+    }
+
+    tr,
+    img {
+      page-break-inside: avoid;
+    }
+
+    p,
+    h2,
+    h3 {
+      orphans: 3;
+      widows: 3;
+    }
+
+    h2,
+    h3 {
+      page-break-after: avoid;
+    }
+
+    // Bootstrap specific changes start
+
+    // Specify a size and min-width to make printing closer across browsers.
+    // We don't set margin here because it breaks `size` in Chrome. We also
+    // don't use `!important` on `size` as it breaks in Chrome.
+    @page {
+      size: $print-page-size;
+    }
+    body {
+      min-width: $print-body-min-width !important;
+    }
+    .container {
+      min-width: $print-body-min-width !important;
+    }
+
+    // Bootstrap components
+    .navbar {
+      display: none;
+    }
+    .badge {
+      border: $border-width solid $black;
+    }
+
+    .table {
+      border-collapse: collapse !important;
+
+      td,
+      th {
+        background-color: $white !important;
+      }
+    }
+
+    .table-bordered {
+      th,
+      td {
+        border: 1px solid $gray-300 !important;
+      }
+    }
+
+    .table-dark {
+      color: inherit;
+
+      th,
+      td,
+      thead th,
+      tbody + tbody {
+        border-color: $table-border-color;
+      }
+    }
+
+    .table .thead-dark th {
+      color: inherit;
+      border-color: $table-border-color;
+    }
+
+    // Bootstrap specific changes end
+  }
+}
diff --git a/css/bootstrap/_progress.scss b/css/bootstrap/_progress.scss
new file mode 100644 (file)
index 0000000..e206474
--- /dev/null
@@ -0,0 +1,47 @@
+// Disable animation if transitions are disabled
+@if $enable-transitions {
+  @keyframes progress-bar-stripes {
+    from { background-position: $progress-height 0; }
+    to { background-position: 0 0; }
+  }
+}
+
+.progress {
+  display: flex;
+  height: $progress-height;
+  overflow: hidden; // force rounded corners by cropping it
+  line-height: 0;
+  @include font-size($progress-font-size);
+  background-color: $progress-bg;
+  @include border-radius($progress-border-radius);
+  @include box-shadow($progress-box-shadow);
+}
+
+.progress-bar {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  overflow: hidden;
+  color: $progress-bar-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $progress-bar-bg;
+  @include transition($progress-bar-transition);
+}
+
+.progress-bar-striped {
+  @include gradient-striped();
+  background-size: $progress-height $progress-height;
+}
+
+@if $enable-transitions {
+  .progress-bar-animated {
+    animation: $progress-bar-animation-timing progress-bar-stripes;
+
+    @if $enable-prefers-reduced-motion-media-query {
+      @media (prefers-reduced-motion: reduce) {
+        animation: none;
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/_reboot.scss b/css/bootstrap/_reboot.scss
new file mode 100644 (file)
index 0000000..5339e13
--- /dev/null
@@ -0,0 +1,485 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
+
+// Reboot
+//
+// Normalization of HTML elements, manually forked from Normalize.css to remove
+// styles targeting irrelevant browsers while applying new styles.
+//
+// Normalize is licensed MIT. https://github.com/necolas/normalize.css
+
+
+// Document
+//
+// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
+// 2. Change the default font family in all browsers.
+// 3. Correct the line height in all browsers.
+// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
+// 5. Change the default tap highlight to be completely transparent in iOS.
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box; // 1
+}
+
+html {
+  font-family: sans-serif; // 2
+  line-height: 1.15; // 3
+  -webkit-text-size-adjust: 100%; // 4
+  -webkit-tap-highlight-color: rgba($black, 0); // 5
+}
+
+// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
+// TODO: remove in v5
+// stylelint-disable-next-line selector-list-comma-newline-after
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
+  display: block;
+}
+
+// Body
+//
+// 1. Remove the margin in all browsers.
+// 2. As a best practice, apply a default `background-color`.
+// 3. Set an explicit initial text-align value so that we can later use
+//    the `inherit` value on things like `<th>` elements.
+
+body {
+  margin: 0; // 1
+  font-family: $font-family-base;
+  @include font-size($font-size-base);
+  font-weight: $font-weight-base;
+  line-height: $line-height-base;
+  color: $body-color;
+  text-align: left; // 3
+  background-color: $body-bg; // 2
+}
+
+// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline
+// on elements that programmatically receive focus but wouldn't normally show a visible
+// focus outline. In general, this would mean that the outline is only applied if the
+// interaction that led to the element receiving programmatic focus was a keyboard interaction,
+// or the browser has somehow determined that the user is primarily a keyboard user and/or
+// wants focus outlines to always be presented.
+//
+// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
+// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/
+[tabindex="-1"]:focus:not(:focus-visible) {
+  outline: 0 !important;
+}
+
+
+// Content grouping
+//
+// 1. Add the correct box sizing in Firefox.
+// 2. Show the overflow in Edge and IE.
+
+hr {
+  box-sizing: content-box; // 1
+  height: 0; // 1
+  overflow: visible; // 2
+}
+
+
+//
+// Typography
+//
+
+// Remove top margins from headings
+//
+// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
+// margin for easier control within type scales as it avoids margin collapsing.
+// stylelint-disable-next-line selector-list-comma-newline-after
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: $headings-margin-bottom;
+}
+
+// Reset margins on paragraphs
+//
+// Similarly, the top margin on `<p>`s get reset. However, we also reset the
+// bottom margin to use `rem` units instead of `em`.
+p {
+  margin-top: 0;
+  margin-bottom: $paragraph-margin-bottom;
+}
+
+// Abbreviations
+//
+// 1. Duplicate behavior to the data-* attribute for our tooltip plugin
+// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+// 3. Add explicit cursor to indicate changed behavior.
+// 4. Remove the bottom border in Firefox 39-.
+// 5. Prevent the text-decoration to be skipped.
+
+abbr[title],
+abbr[data-original-title] { // 1
+  text-decoration: underline; // 2
+  text-decoration: underline dotted; // 2
+  cursor: help; // 3
+  border-bottom: 0; // 4
+  text-decoration-skip-ink: none; // 5
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: $dt-font-weight;
+}
+
+dd {
+  margin-bottom: .5rem;
+  margin-left: 0; // Undo browser default
+}
+
+blockquote {
+  margin: 0 0 1rem;
+}
+
+b,
+strong {
+  font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
+}
+
+small {
+  @include font-size(80%); // Add the correct font size in all browsers
+}
+
+//
+// Prevent `sub` and `sup` elements from affecting the line height in
+// all browsers.
+//
+
+sub,
+sup {
+  position: relative;
+  @include font-size(75%);
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub { bottom: -.25em; }
+sup { top: -.5em; }
+
+
+//
+// Links
+//
+
+a {
+  color: $link-color;
+  text-decoration: $link-decoration;
+  background-color: transparent; // Remove the gray background on active links in IE 10.
+
+  @include hover() {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+  }
+}
+
+// And undo these styles for placeholder links/named anchors (without href).
+// It would be more straightforward to just use a[href] in previous block, but that
+// causes specificity issues in many other styles that are too complex to fix.
+// See https://github.com/twbs/bootstrap/issues/19402
+
+a:not([href]):not([class]) {
+  color: inherit;
+  text-decoration: none;
+
+  @include hover() {
+    color: inherit;
+    text-decoration: none;
+  }
+}
+
+
+//
+// Code
+//
+
+pre,
+code,
+kbd,
+samp {
+  font-family: $font-family-monospace;
+  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
+}
+
+pre {
+  // Remove browser default top margin
+  margin-top: 0;
+  // Reset browser default of `1em` to use `rem`s
+  margin-bottom: 1rem;
+  // Don't allow content to break outside
+  overflow: auto;
+  // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,
+  // making it impossible to interact with the content
+  -ms-overflow-style: scrollbar;
+}
+
+
+//
+// Figures
+//
+
+figure {
+  // Apply a consistent margin strategy (matches our type styles).
+  margin: 0 0 1rem;
+}
+
+
+//
+// Images and content
+//
+
+img {
+  vertical-align: middle;
+  border-style: none; // Remove the border on images inside links in IE 10-.
+}
+
+// Nick
+//svg {
+//  // Workaround for the SVG overflow bug in IE10/11 is still required.
+//  // See https://github.com/twbs/bootstrap/issues/26878
+//  overflow: hidden;
+//  vertical-align: middle;
+//}
+
+
+//
+// Tables
+//
+
+table {
+  border-collapse: collapse; // Prevent double borders
+}
+
+caption {
+  padding-top: $table-cell-padding;
+  padding-bottom: $table-cell-padding;
+  color: $table-caption-color;
+  text-align: left;
+  caption-side: bottom;
+}
+
+// 1. Removes font-weight bold by inheriting
+// 2. Matches default `<td>` alignment by inheriting `text-align`.
+// 3. Fix alignment for Safari
+
+th {
+  font-weight: $table-th-font-weight; // 1
+  text-align: inherit; // 2
+  text-align: -webkit-match-parent; // 3
+}
+
+
+//
+// Forms
+//
+
+label {
+  // Allow labels to use `margin` for spacing.
+  display: inline-block;
+  margin-bottom: $label-margin-bottom;
+}
+
+// Remove the default `border-radius` that macOS Chrome adds.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24093
+button {
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 0;
+}
+
+// Explicitly remove focus outline in Chromium when it shouldn't be
+// visible (e.g. as result of mouse click or touch tap). It already
+// should be doing this automatically, but seems to currently be
+// confused and applies its very visible two-tone outline anyway.
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0; // Remove the margin in Firefox and Safari
+  font-family: inherit;
+  @include font-size(inherit);
+  line-height: inherit;
+}
+
+button,
+input {
+  overflow: visible; // Show the overflow in Edge
+}
+
+button,
+select {
+  text-transform: none; // Remove the inheritance of text transform in Firefox
+}
+
+// Set the cursor for non-`<button>` buttons
+//
+// Details at https://github.com/twbs/bootstrap/pull/30562
+[role="button"] {
+  cursor: pointer;
+}
+
+// Remove the inheritance of word-wrap in Safari.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24990
+select {
+  word-wrap: normal;
+}
+
+
+// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+//    controls in Android 4.
+// 2. Correct the inability to style clickable types in iOS and Safari.
+button,
+[type="button"], // 1
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; // 2
+}
+
+// Opinionated: add "hand" cursor to non-disabled button elements.
+@if $enable-pointer-cursor-for-buttons {
+  button,
+  [type="button"],
+  [type="reset"],
+  [type="submit"] {
+    &:not(:disabled) {
+      cursor: pointer;
+    }
+  }
+}
+
+// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+  box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
+  padding: 0; // 2. Remove the padding in IE 10-
+}
+
+
+textarea {
+  overflow: auto; // Remove the default vertical scrollbar in IE.
+  // Textareas should really only resize vertically so they don't break their (horizontal) containers.
+  resize: vertical;
+}
+
+fieldset {
+  // Browsers set a default `min-width: min-content;` on fieldsets,
+  // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
+  // So we reset that to ensure fieldsets behave more like a standard block element.
+  // See https://github.com/twbs/bootstrap/issues/12359
+  // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
+  min-width: 0;
+  // Reset the default outline behavior of fieldsets so they don't affect page layout.
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+// 1. Correct the text wrapping in Edge and IE.
+// 2. Correct the color inheritance from `fieldset` elements in IE.
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%; // 1
+  padding: 0;
+  margin-bottom: .5rem;
+  @include font-size(1.5rem);
+  line-height: inherit;
+  color: inherit; // 2
+  white-space: normal; // 1
+}
+
+progress {
+  vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
+}
+
+// Correct the cursor style of increment and decrement buttons in Chrome.
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+[type="search"] {
+  // This overrides the extra rounded corners on search inputs in iOS so that our
+  // `.form-control` class can properly style them. Note that this cannot simply
+  // be added to `.form-control` as it's not specific enough. For details, see
+  // https://github.com/twbs/bootstrap/issues/11586.
+  outline-offset: -2px; // 2. Correct the outline style in Safari.
+  -webkit-appearance: none;
+}
+
+//
+// Remove the inner padding in Chrome and Safari on macOS.
+//
+
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+//
+// 1. Correct the inability to style clickable types in iOS and Safari.
+// 2. Change font properties to `inherit` in Safari.
+//
+
+::-webkit-file-upload-button {
+  font: inherit; // 2
+  -webkit-appearance: button; // 1
+}
+
+//
+// Correct element displays
+//
+
+output {
+  display: inline-block;
+}
+
+summary {
+  display: list-item; // Add the correct display in all browsers
+  cursor: pointer;
+}
+
+template {
+  display: none; // Add the correct display in IE
+}
+
+// Always hide an element with the `hidden` HTML attribute (from PureCSS).
+// Needed for proper display in IE 10-.
+[hidden] {
+  display: none !important;
+}
diff --git a/css/bootstrap/_root.scss b/css/bootstrap/_root.scss
new file mode 100644 (file)
index 0000000..ad550df
--- /dev/null
@@ -0,0 +1,19 @@
+:root {
+  // Custom variable values only support SassScript inside `#{}`.
+  @each $color, $value in $colors {
+    --#{$color}: #{$value};
+  }
+
+  @each $color, $value in $theme-colors {
+    --#{$color}: #{$value};
+  }
+
+  @each $bp, $value in $grid-breakpoints {
+    --breakpoint-#{$bp}: #{$value};
+  }
+
+  // Use `inspect` for lists so that quoted items keep the quotes.
+  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
+  --font-family-sans-serif: #{inspect($font-family-sans-serif)};
+  --font-family-monospace: #{inspect($font-family-monospace)};
+}
diff --git a/css/bootstrap/_spinners.scss b/css/bootstrap/_spinners.scss
new file mode 100644 (file)
index 0000000..98c0108
--- /dev/null
@@ -0,0 +1,65 @@
+//
+// Rotating border
+//
+
+@keyframes spinner-border {
+  to { transform: rotate(360deg); }
+}
+
+.spinner-border {
+  display: inline-block;
+  width: $spinner-width;
+  height: $spinner-height;
+  vertical-align: $spinner-vertical-align;
+  border: $spinner-border-width solid currentColor;
+  border-right-color: transparent;
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 50%;
+  animation: .75s linear infinite spinner-border;
+}
+
+.spinner-border-sm {
+  width: $spinner-width-sm;
+  height: $spinner-height-sm;
+  border-width: $spinner-border-width-sm;
+}
+
+//
+// Growing circle
+//
+
+@keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+
+.spinner-grow {
+  display: inline-block;
+  width: $spinner-width;
+  height: $spinner-height;
+  vertical-align: $spinner-vertical-align;
+  background-color: currentColor;
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 50%;
+  opacity: 0;
+  animation: .75s linear infinite spinner-grow;
+}
+
+.spinner-grow-sm {
+  width: $spinner-width-sm;
+  height: $spinner-height-sm;
+}
+
+@if $enable-prefers-reduced-motion-media-query {
+  @media (prefers-reduced-motion: reduce) {
+    .spinner-border,
+    .spinner-grow {
+      animation-duration: 1.5s;
+    }
+  }
+}
diff --git a/css/bootstrap/_tables.scss b/css/bootstrap/_tables.scss
new file mode 100644 (file)
index 0000000..5fd77a4
--- /dev/null
@@ -0,0 +1,185 @@
+//
+// Basic Bootstrap table
+//
+
+.table {
+  width: 100%;
+  margin-bottom: $spacer;
+  color: $table-color;
+  background-color: $table-bg; // Reset for nesting within parents with `background-color`.
+
+  th,
+  td {
+    padding: $table-cell-padding;
+    vertical-align: top;
+    border-top: $table-border-width solid $table-border-color;
+  }
+
+  thead th {
+    vertical-align: bottom;
+    border-bottom: (2 * $table-border-width) solid $table-border-color;
+  }
+
+  tbody + tbody {
+    border-top: (2 * $table-border-width) solid $table-border-color;
+  }
+}
+
+
+//
+// Condensed table w/ half padding
+//
+
+.table-sm {
+  th,
+  td {
+    padding: $table-cell-padding-sm;
+  }
+}
+
+
+// Border versions
+//
+// Add or remove borders all around the table and between all the columns.
+
+.table-bordered {
+  border: $table-border-width solid $table-border-color;
+
+  th,
+  td {
+    border: $table-border-width solid $table-border-color;
+  }
+
+  thead {
+    th,
+    td {
+      border-bottom-width: 2 * $table-border-width;
+    }
+  }
+}
+
+.table-borderless {
+  th,
+  td,
+  thead th,
+  tbody + tbody {
+    border: 0;
+  }
+}
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+  tbody tr:nth-of-type(#{$table-striped-order}) {
+    background-color: $table-accent-bg;
+  }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+  tbody tr {
+    @include hover() {
+      color: $table-hover-color;
+      background-color: $table-hover-bg;
+    }
+  }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+@each $color, $value in $theme-colors {
+  @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));
+}
+
+@include table-row-variant(active, $table-active-bg);
+
+
+// Dark styles
+//
+// Same table markup, but inverted color scheme: dark background and light text.
+
+// stylelint-disable-next-line no-duplicate-selectors
+.table {
+  .thead-dark {
+    th {
+      color: $table-dark-color;
+      background-color: $table-dark-bg;
+      border-color: $table-dark-border-color;
+    }
+  }
+
+  .thead-light {
+    th {
+      color: $table-head-color;
+      background-color: $table-head-bg;
+      border-color: $table-border-color;
+    }
+  }
+}
+
+.table-dark {
+  color: $table-dark-color;
+  background-color: $table-dark-bg;
+
+  th,
+  td,
+  thead th {
+    border-color: $table-dark-border-color;
+  }
+
+  &.table-bordered {
+    border: 0;
+  }
+
+  &.table-striped {
+    tbody tr:nth-of-type(#{$table-striped-order}) {
+      background-color: $table-dark-accent-bg;
+    }
+  }
+
+  &.table-hover {
+    tbody tr {
+      @include hover() {
+        color: $table-dark-hover-color;
+        background-color: $table-dark-hover-bg;
+      }
+    }
+  }
+}
+
+
+// Responsive tables
+//
+// Generate series of `.table-responsive-*` classes for configuring the screen
+// size of where your table will overflow.
+
+.table-responsive {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    &#{$infix} {
+      @include media-breakpoint-down($breakpoint) {
+        display: block;
+        width: 100%;
+        overflow-x: auto;
+        -webkit-overflow-scrolling: touch;
+
+        // Prevent double border on horizontal scroll due to use of `display: block;`
+        > .table-bordered {
+          border: 0;
+        }
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/_toasts.scss b/css/bootstrap/_toasts.scss
new file mode 100644 (file)
index 0000000..f9ca8d9
--- /dev/null
@@ -0,0 +1,46 @@
+.toast {
+  // Prevents from shrinking in IE11, when in a flex container
+  // See https://github.com/twbs/bootstrap/issues/28341
+  flex-basis: $toast-max-width;
+  max-width: $toast-max-width;
+  @include font-size($toast-font-size);
+  color: $toast-color;
+  background-color: $toast-background-color;
+  background-clip: padding-box;
+  border: $toast-border-width solid $toast-border-color;
+  box-shadow: $toast-box-shadow;
+  opacity: 0;
+  @include border-radius($toast-border-radius);
+
+  &:not(:last-child) {
+    margin-bottom: $toast-padding-x;
+  }
+
+  &.showing {
+    opacity: 1;
+  }
+
+  &.show {
+    display: block;
+    opacity: 1;
+  }
+
+  &.hide {
+    display: none;
+  }
+}
+
+.toast-header {
+  display: flex;
+  align-items: center;
+  padding: $toast-padding-y $toast-padding-x;
+  color: $toast-header-color;
+  background-color: $toast-header-background-color;
+  background-clip: padding-box;
+  border-bottom: $toast-border-width solid $toast-header-border-color;
+  @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
+}
+
+.toast-body {
+  padding: $toast-padding-x; // apply to both vertical and horizontal
+}
diff --git a/css/bootstrap/_tooltip.scss b/css/bootstrap/_tooltip.scss
new file mode 100644 (file)
index 0000000..6771b4e
--- /dev/null
@@ -0,0 +1,115 @@
+// Base class
+.tooltip {
+  position: absolute;
+  z-index: $zindex-tooltip;
+  display: block;
+  margin: $tooltip-margin;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size($tooltip-font-size);
+  // Allow breaking very long words so they don't overflow the tooltip's bounds
+  word-wrap: break-word;
+  opacity: 0;
+
+  &.show { opacity: $tooltip-opacity; }
+
+  .arrow {
+    position: absolute;
+    display: block;
+    width: $tooltip-arrow-width;
+    height: $tooltip-arrow-height;
+
+    &::before {
+      position: absolute;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-tooltip-top {
+  padding: $tooltip-arrow-height 0;
+
+  .arrow {
+    bottom: 0;
+
+    &::before {
+      top: 0;
+      border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;
+      border-top-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-right {
+  padding: 0 $tooltip-arrow-height;
+
+  .arrow {
+    left: 0;
+    width: $tooltip-arrow-height;
+    height: $tooltip-arrow-width;
+
+    &::before {
+      right: 0;
+      border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;
+      border-right-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-bottom {
+  padding: $tooltip-arrow-height 0;
+
+  .arrow {
+    top: 0;
+
+    &::before {
+      bottom: 0;
+      border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;
+      border-bottom-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-left {
+  padding: 0 $tooltip-arrow-height;
+
+  .arrow {
+    right: 0;
+    width: $tooltip-arrow-height;
+    height: $tooltip-arrow-width;
+
+    &::before {
+      left: 0;
+      border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;
+      border-left-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-auto {
+  &[x-placement^="top"] {
+    @extend .bs-tooltip-top;
+  }
+  &[x-placement^="right"] {
+    @extend .bs-tooltip-right;
+  }
+  &[x-placement^="bottom"] {
+    @extend .bs-tooltip-bottom;
+  }
+  &[x-placement^="left"] {
+    @extend .bs-tooltip-left;
+  }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+  max-width: $tooltip-max-width;
+  padding: $tooltip-padding-y $tooltip-padding-x;
+  color: $tooltip-color;
+  text-align: center;
+  background-color: $tooltip-bg;
+  @include border-radius($tooltip-border-radius);
+}
diff --git a/css/bootstrap/_transitions.scss b/css/bootstrap/_transitions.scss
new file mode 100644 (file)
index 0000000..40be4d9
--- /dev/null
@@ -0,0 +1,20 @@
+.fade {
+  @include transition($transition-fade);
+
+  &:not(.show) {
+    opacity: 0;
+  }
+}
+
+.collapse {
+  &:not(.show) {
+    display: none;
+  }
+}
+
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  @include transition($transition-collapse);
+}
diff --git a/css/bootstrap/_type.scss b/css/bootstrap/_type.scss
new file mode 100644 (file)
index 0000000..24ee03d
--- /dev/null
@@ -0,0 +1,135 @@
+// stylelint-disable selector-list-comma-newline-after
+
+//
+// Headings
+//
+
+// Nick
+h1, h2, h3, h4, h5, h6 {
+  margin-bottom: $headings-margin-bottom;
+}
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  //margin-bottom: $headings-margin-bottom;
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+  line-height: $headings-line-height;
+  color: $headings-color;
+}
+
+h1, .h1 { @include font-size($h1-font-size); }
+h2, .h2 { @include font-size($h2-font-size); }
+h3, .h3 { @include font-size($h3-font-size); }
+h4, .h4 { @include font-size($h4-font-size); }
+h5, .h5 { @include font-size($h5-font-size); }
+h6, .h6 { @include font-size($h6-font-size); }
+
+.lead {
+  @include font-size($lead-font-size);
+  font-weight: $lead-font-weight;
+}
+
+// Type display classes
+.display-1 {
+  @include font-size($display1-size);
+  font-weight: $display1-weight;
+  line-height: $display-line-height;
+}
+.display-2 {
+  @include font-size($display2-size);
+  font-weight: $display2-weight;
+  line-height: $display-line-height;
+}
+.display-3 {
+  @include font-size($display3-size);
+  font-weight: $display3-weight;
+  line-height: $display-line-height;
+}
+.display-4 {
+  @include font-size($display4-size);
+  font-weight: $display4-weight;
+  line-height: $display-line-height;
+}
+
+
+//
+// Horizontal rules
+//
+
+hr {
+  margin-top: $hr-margin-y;
+  margin-bottom: $hr-margin-y;
+  border: 0;
+  border-top: $hr-border-width solid $hr-border-color;
+}
+
+
+//
+// Emphasis
+//
+
+small,
+.small {
+  @include font-size($small-font-size);
+  font-weight: $font-weight-normal;
+}
+
+mark,
+.mark {
+  padding: $mark-padding;
+  background-color: $mark-bg;
+}
+
+
+//
+// Lists
+//
+
+.list-unstyled {
+  @include list-unstyled();
+}
+
+// Inline turns list items into inline-block
+.list-inline {
+  @include list-unstyled();
+}
+.list-inline-item {
+  display: inline-block;
+
+  &:not(:last-child) {
+    margin-right: $list-inline-padding;
+  }
+}
+
+
+//
+// Misc
+//
+
+// Builds on `abbr`
+.initialism {
+  @include font-size(90%);
+  text-transform: uppercase;
+}
+
+// Blockquotes
+.blockquote {
+  margin-bottom: $spacer;
+  @include font-size($blockquote-font-size);
+}
+
+.blockquote-footer {
+  display: block;
+  @include font-size($blockquote-small-font-size);
+  color: $blockquote-small-color;
+
+  &::before {
+    content: "\2014\00A0"; // em dash, nbsp
+  }
+}
+
+// Nick
+tt {
+  font-size: $font-size-tt;
+}
diff --git a/css/bootstrap/_utilities.scss b/css/bootstrap/_utilities.scss
new file mode 100644 (file)
index 0000000..10e31dd
--- /dev/null
@@ -0,0 +1,18 @@
+@import "utilities/align";
+@import "utilities/background";
+@import "utilities/borders";
+@import "utilities/clearfix";
+@import "utilities/display";
+@import "utilities/embed";
+@import "utilities/flex";
+@import "utilities/float";
+@import "utilities/interactions";
+@import "utilities/overflow";
+@import "utilities/position";
+@import "utilities/screenreaders";
+@import "utilities/shadows";
+@import "utilities/sizing";
+@import "utilities/spacing";
+@import "utilities/stretched-link";
+@import "utilities/text";
+@import "utilities/visibility";
diff --git a/css/bootstrap/_variables.scss b/css/bootstrap/_variables.scss
new file mode 100644 (file)
index 0000000..5ed78b6
--- /dev/null
@@ -0,0 +1,1169 @@
+// Variables
+//
+// Variables should follow the `$component-state-property-size` formula for
+// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
+
+// Color system
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$grays: () !default;
+$grays: map-merge(
+  (
+    "100": $gray-100,
+    "200": $gray-200,
+    "300": $gray-300,
+    "400": $gray-400,
+    "500": $gray-500,
+    "600": $gray-600,
+    "700": $gray-700,
+    "800": $gray-800,
+    "900": $gray-900
+  ),
+  $grays
+);
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #dc3545 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #28a745 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$colors: () !default;
+$colors: map-merge(
+  (
+    "blue":       $blue,
+    "indigo":     $indigo,
+    "purple":     $purple,
+    "pink":       $pink,
+    "red":        $red,
+    "orange":     $orange,
+    "yellow":     $yellow,
+    "green":      $green,
+    "teal":       $teal,
+    "cyan":       $cyan,
+    "white":      $white,
+    "gray":       $gray-600,
+    "gray-dark":  $gray-800
+  ),
+  $colors
+);
+
+$primary:       #00a000 !default; //$blue !default;
+$secondary:     $gray-600 !default;
+$success:       #ff8000 !default; //$green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$theme-colors: () !default;
+$theme-colors: map-merge(
+  (
+    "primary":    $primary,
+    "secondary":  $secondary,
+    "success":    $success,
+    "info":       $info,
+    "warning":    $warning,
+    "danger":     $danger,
+    "light":      $light,
+    "dark":       $dark
+  ),
+  $theme-colors
+);
+
+// Set a specific jump point for requesting color jumps
+$theme-color-interval:      8% !default;
+
+// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
+$yiq-contrasted-threshold:  150 !default;
+
+// Customize the light and dark text colors for use in our YIQ color contrast function.
+$yiq-text-dark:             $gray-900 !default;
+$yiq-text-light:            $white !default;
+
+// Characters which are escaped by the escape-svg function
+$escaped-characters: (
+  ("<", "%3c"),
+  (">", "%3e"),
+  ("#", "%23"),
+  ("(", "%28"),
+  (")", "%29"),
+) !default;
+
+
+// Options
+//
+// Quickly modify global styling by enabling or disabling optional features.
+
+$enable-caret:                                true !default;
+$enable-rounded:                              true !default;
+$enable-shadows:                              false !default;
+$enable-gradients:                            false !default;
+$enable-transitions:                          true !default;
+$enable-prefers-reduced-motion-media-query:   true !default;
+$enable-hover-media-query:                    false !default; // Deprecated, no longer affects any compiled CSS
+$enable-grid-classes:                         true !default;
+$enable-pointer-cursor-for-buttons:           true !default;
+$enable-print-styles:                         true !default;
+$enable-responsive-font-sizes:                false !default;
+$enable-validation-icons:                     true !default;
+$enable-deprecation-messages:                 true !default;
+
+
+// Spacing
+//
+// Control the default styling of most Bootstrap elements by modifying these
+// variables. Mostly focused on spacing.
+// You can add more entries to the $spacers map, should you need more variation.
+
+$spacer: 1rem !default;
+$spacers: () !default;
+$spacers: map-merge(
+  (
+    0: 0,
+    1: ($spacer * .25),
+    2: ($spacer * .5),
+    3: $spacer,
+    4: ($spacer * 1.5),
+    5: ($spacer * 3)
+  ),
+  $spacers
+);
+
+// This variable affects the `.h-*` and `.w-*` classes.
+$sizes: () !default;
+$sizes: map-merge(
+  (
+    25: 25%,
+    50: 50%,
+    75: 75%,
+    100: 100%,
+    auto: auto
+  ),
+  $sizes
+);
+
+
+// Body
+//
+// Settings for the `<body>` element.
+
+$body-bg:                   $white !default;
+$body-color:                $black !default; //$gray-900 !default;
+
+
+// Links
+//
+// Style anchor elements.
+
+$link-color:                              darken(theme-color("primary"), 5%) !default; //theme-color("primary") !default
+$link-decoration:                         none !default;
+$link-hover-color:                        darken($link-color, 10%) !default; //15%) !default;
+$link-hover-decoration:                   underline !default;
+// Darken percentage for links with `.text-*` class (e.g. `.text-success`)
+$emphasized-link-hover-darken-percentage: 15% !default;
+
+// Paragraphs
+//
+// Style p element.
+
+$paragraph-margin-bottom:   1rem !default;
+
+
+// Grid breakpoints
+//
+// Define the minimum dimensions at which your layout will change,
+// adapting to different screen sizes, for use in media queries.
+
+$grid-breakpoints: (
+  xs: 0,
+  sm: 576px,
+  md: 768px,
+  lg: 992px,
+  xl: 1200px
+) !default;
+
+@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
+@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
+
+
+// Grid containers
+//
+// Define the maximum width of `.container` for different screen sizes.
+
+$container-max-widths: (
+  sm: 540px,
+  md: 720px,
+  lg: 960px,
+  xl: 1140px
+) !default;
+
+@include _assert-ascending($container-max-widths, "$container-max-widths");
+
+
+// Grid columns
+//
+// Set the number of columns and specify the width of the gutters.
+
+$grid-columns:                12 !default;
+$grid-gutter-width:           30px !default;
+$grid-row-columns:            6 !default;
+
+
+// Components
+//
+// Define common padding and border radius sizes and more.
+
+$line-height-lg:              1.5 !default;
+$line-height-sm:              1.5 !default;
+
+$border-width:                1px !default;
+$border-color:                $gray-300 !default;
+
+$border-radius:               .25rem !default;
+$border-radius-lg:            .3rem !default;
+$border-radius-sm:            .2rem !default;
+
+$rounded-pill:                50rem !default;
+
+$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;
+$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;
+$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;
+
+$component-active-color:      $white !default;
+$component-active-bg:         theme-color("primary") !default;
+
+$caret-width:                 .3em !default;
+$caret-vertical-align:        $caret-width * .85 !default;
+$caret-spacing:               $caret-width * .85 !default;
+
+$transition-base:             all .2s ease-in-out !default;
+$transition-fade:             opacity .15s linear !default;
+$transition-collapse:         height .35s ease !default;
+
+$embed-responsive-aspect-ratios: () !default;
+$embed-responsive-aspect-ratios: join(
+  (
+    (21 9),
+    (16 9),
+    (4 3),
+    (1 1),
+  ),
+  $embed-responsive-aspect-ratios
+);
+
+// Typography
+//
+// Font, line-height, and color for body text, headings, and more.
+
+// stylelint-disable value-keyword-case
+$font-family-sans-serif:      "Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default; // Nick added Nunito Sans
+$font-family-serif:           "Frank Ruhl Libre", Georgia, "Times New Roman", Times, serif !default; // Nick
+$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
+$font-family-base:            $font-family-sans-serif !default;
+// stylelint-enable value-keyword-case
+
+$font-size-base:              1.25rem !default; //1rem !default; // Assumes the browser default, typically `16px`
+$font-size-lg:                $font-size-base * 1.25 !default;
+$font-size-sm:                $font-size-base * .875 !default;
+$font-size-tt:                $font-size-base * .925 !default; // Nick, improves flow for monospace text embedded within paragraphs
+
+$font-weight-lighter:         lighter !default;
+$font-weight-light:           300 !default;
+$font-weight-normal:          400 !default;
+$font-weight-bold:            700 !default;
+$font-weight-bolder:          bolder !default;
+
+$font-weight-base:            $font-weight-normal !default;
+$line-height-base:            1.5 !default;
+
+$h6-font-size:                $font-size-base !default;
+$h5-font-size:                $h6-font-size * 1.1 !default; //$font-size-base * 1.25 !default;
+$h4-font-size:                $h5-font-size * 1.1 !default; //$font-size-base * 1.5 !default;
+$h3-font-size:                $h4-font-size * 1.1 !default; //$font-size-base * 1.75 !default;
+$h2-font-size:                $h3-font-size * 1.1 !default; //$font-size-base * 2 !default;
+$h1-font-size:                $h2-font-size * 1.1 !default; //$font-size-base * 2.5 !default;
+
+$headings-margin-bottom:      $spacer !default; //$spacer * .5 !default;
+$headings-font-family:        null !default;
+$headings-font-weight:        600 !default; //500 !default;
+$headings-line-height:        1.2 !default;
+$headings-color:              null !default;
+
+$display1-size:               6rem !default;
+$display2-size:               5.5rem !default;
+$display3-size:               4.5rem !default;
+$display4-size:               3.5rem !default;
+
+$display1-weight:             300 !default;
+$display2-weight:             300 !default;
+$display3-weight:             300 !default;
+$display4-weight:             300 !default;
+$display-line-height:         $headings-line-height !default;
+
+$lead-font-size:              $font-size-base * 1.25 !default;
+$lead-font-weight:            300 !default;
+
+$small-font-size:             80% !default;
+
+$text-muted:                  $gray-600 !default;
+
+$blockquote-small-color:      $gray-600 !default;
+$blockquote-small-font-size:  $small-font-size !default;
+$blockquote-font-size:        $font-size-base * 1.25 !default;
+
+$hr-border-color:             rgba($black, .1) !default;
+$hr-border-width:             $border-width !default;
+
+$mark-padding:                .2em !default;
+
+$dt-font-weight:              $font-weight-bold !default;
+
+$kbd-box-shadow:              inset 0 -.1rem 0 rgba($black, .25) !default;
+$nested-kbd-font-weight:      $font-weight-bold !default;
+
+$list-inline-padding:         .5rem !default;
+
+$mark-bg:                     #fcf8e3 !default;
+
+$hr-margin-y:                 $spacer !default;
+
+
+// Tables
+//
+// Customizes the `.table` component with basic values, each used across all table variations.
+
+$table-cell-padding:          .75rem !default;
+$table-cell-padding-sm:       .3rem !default;
+
+$table-color:                 $body-color !default;
+$table-bg:                    null !default;
+$table-accent-bg:             rgba($black, .05) !default;
+$table-hover-color:           $table-color !default;
+$table-hover-bg:              rgba($black, .075) !default;
+$table-active-bg:             $table-hover-bg !default;
+
+$table-border-width:          $border-width !default;
+$table-border-color:          $border-color !default;
+
+$table-head-bg:               $gray-200 !default;
+$table-head-color:            $gray-700 !default;
+$table-th-font-weight:        null !default;
+
+$table-dark-color:            $white !default;
+$table-dark-bg:               $gray-800 !default;
+$table-dark-accent-bg:        rgba($white, .05) !default;
+$table-dark-hover-color:      $table-dark-color !default;
+$table-dark-hover-bg:         rgba($white, .075) !default;
+$table-dark-border-color:     lighten($table-dark-bg, 7.5%) !default;
+
+$table-striped-order:         odd !default;
+
+$table-caption-color:         $text-muted !default;
+
+$table-bg-level:              -9 !default;
+$table-border-level:          -6 !default;
+
+
+// Buttons + Forms
+//
+// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
+
+$input-btn-padding-y:         .375rem !default;
+$input-btn-padding-x:         .75rem !default;
+$input-btn-font-family:       null !default;
+$input-btn-font-size:         $font-size-base !default;
+$input-btn-line-height:       $line-height-base !default;
+
+$input-btn-focus-width:       .2rem !default;
+$input-btn-focus-color:       rgba(darken($component-active-bg, 10%), .25) !default; //rgba($component-active-bg, .25) !default;
+$input-btn-focus-box-shadow:  0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
+
+$input-btn-padding-y-sm:      .25rem !default;
+$input-btn-padding-x-sm:      .5rem !default;
+$input-btn-font-size-sm:      $font-size-sm !default;
+$input-btn-line-height-sm:    $line-height-sm !default;
+
+$input-btn-padding-y-lg:      .5rem !default;
+$input-btn-padding-x-lg:      1rem !default;
+$input-btn-font-size-lg:      $font-size-lg !default;
+$input-btn-line-height-lg:    $line-height-lg !default;
+
+$input-btn-border-width:      $border-width !default;
+
+
+// Buttons
+//
+// For each of Bootstrap's buttons, define text, background, and border color.
+
+$btn-padding-y:               $input-btn-padding-y !default;
+$btn-padding-yt:              $btn-padding-y * 1.1 !default; // Nick
+$btn-padding-yb:              $btn-padding-y * .9 !default; // Nick
+$btn-padding-x:               $input-btn-padding-x !default;
+$btn-font-family:             $input-btn-font-family !default;
+$btn-font-size:               $input-btn-font-size !default;
+$btn-line-height:             $input-btn-line-height !default;
+$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping
+
+$btn-padding-y-sm:            $input-btn-padding-y-sm !default;
+$btn-padding-yt-sm:           $btn-padding-y-sm * 1.1 !default; // Nick
+$btn-padding-yb-sm:           $btn-padding-y-sm * .9 !default; // Nick
+$btn-padding-x-sm:            $input-btn-padding-x-sm !default;
+$btn-font-size-sm:            $input-btn-font-size-sm !default;
+$btn-line-height-sm:          $input-btn-line-height-sm !default;
+
+$btn-padding-y-lg:            $input-btn-padding-y-lg !default;
+$btn-padding-yt-lg:           $btn-padding-y-lg * 1.1 !default; // Nick
+$btn-padding-yb-lg:           $btn-padding-y-lg * .9 !default; // Nick
+$btn-padding-x-lg:            $input-btn-padding-x-lg !default;
+$btn-font-size-lg:            $input-btn-font-size-lg !default;
+$btn-line-height-lg:          $input-btn-line-height-lg !default;
+
+$btn-border-width:            $input-btn-border-width !default;
+
+$btn-font-weight:             $font-weight-normal !default;
+$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
+$btn-focus-width:             $input-btn-focus-width !default;
+$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;
+$btn-disabled-opacity:        .65 !default;
+$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;
+
+$btn-link-disabled-color:     $gray-600 !default;
+
+$btn-block-spacing-y:         .5rem !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius:           $border-radius !default;
+$btn-border-radius-lg:        $border-radius-lg !default;
+$btn-border-radius-sm:        $border-radius-sm !default;
+
+$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+
+// Forms
+
+$label-font-weight:                     $font-weight-bold !default; // Nick
+$label-margin-bottom:                   .5rem !default;
+
+$input-padding-y:                       $input-btn-padding-y !default;
+$input-padding-x:                       $input-btn-padding-x !default;
+$input-font-family:                     $input-btn-font-family !default;
+$input-font-size:                       $input-btn-font-size !default;
+$input-font-weight:                     $font-weight-base !default;
+$input-line-height:                     $input-btn-line-height !default;
+
+$input-padding-y-sm:                    $input-btn-padding-y-sm !default;
+$input-padding-x-sm:                    $input-btn-padding-x-sm !default;
+$input-font-size-sm:                    $input-btn-font-size-sm !default;
+$input-line-height-sm:                  $input-btn-line-height-sm !default;
+
+$input-padding-y-lg:                    $input-btn-padding-y-lg !default;
+$input-padding-x-lg:                    $input-btn-padding-x-lg !default;
+$input-font-size-lg:                    $input-btn-font-size-lg !default;
+$input-line-height-lg:                  $input-btn-line-height-lg !default;
+
+$input-bg:                              $white !default;
+$input-disabled-bg:                     $gray-200 !default;
+
+$input-color:                           $black !default; //$gray-700 !default;
+$input-border-color:                    $gray-400 !default;
+$input-border-width:                    $input-btn-border-width !default;
+$input-box-shadow:                      inset 0 1px 1px rgba($black, .075) !default;
+
+$input-border-radius:                   $border-radius !default;
+$input-border-radius-lg:                $border-radius-lg !default;
+$input-border-radius-sm:                $border-radius-sm !default;
+
+$input-focus-bg:                        $input-bg !default;
+$input-focus-border-color:              $gray-600 !default; //lighten($component-active-bg, 25%) !default;
+$input-focus-color:                     $input-color !default;
+$input-focus-width:                     $input-btn-focus-width !default;
+$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;
+
+$input-placeholder-color:               $gray-500 !default; //$gray-600 !default;
+$input-plaintext-color:                 $body-color !default;
+
+$input-height-border:                   $input-border-width * 2 !default;
+
+$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;
+$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;
+$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;
+
+$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
+$input-height-sm:                       add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
+$input-height-lg:                       add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
+
+$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$form-text-margin-top:                  .25rem !default;
+
+$form-check-input-gutter:               1.25rem !default;
+$form-check-input-margin-y:             .3rem !default;
+$form-check-input-margin-x:             .25rem !default;
+
+$form-check-inline-margin-x:            .75rem !default;
+$form-check-inline-input-margin-x:      .3125rem !default;
+
+$form-grid-gutter-width:                10px !default;
+$form-group-margin-bottom:              1rem !default;
+
+$input-group-addon-color:               $input-color !default;
+$input-group-addon-bg:                  $gray-200 !default;
+$input-group-addon-border-color:        $input-border-color !default;
+
+$custom-forms-transition:               background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$custom-control-gutter:                 .5rem !default;
+$custom-control-spacer-x:               1rem !default;
+$custom-control-cursor:                 null !default;
+
+$custom-control-indicator-size:         1rem !default;
+$custom-control-indicator-bg:           $input-bg !default;
+
+$custom-control-indicator-bg-size:      50% 50% !default;
+$custom-control-indicator-box-shadow:   $input-box-shadow !default;
+$custom-control-indicator-border-color: $gray-500 !default;
+$custom-control-indicator-border-width: $input-border-width !default;
+
+$custom-control-label-color:            null !default;
+
+$custom-control-indicator-disabled-bg:          $input-disabled-bg !default;
+$custom-control-label-disabled-color:           $gray-600 !default;
+
+$custom-control-indicator-checked-color:        $component-active-color !default;
+$custom-control-indicator-checked-bg:           $component-active-bg !default;
+$custom-control-indicator-checked-disabled-bg:  rgba(theme-color("primary"), .5) !default;
+$custom-control-indicator-checked-box-shadow:   null !default;
+$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
+
+$custom-control-indicator-focus-box-shadow:     $input-focus-box-shadow !default;
+$custom-control-indicator-focus-border-color:   $input-focus-border-color !default;
+
+$custom-control-indicator-active-color:         $component-active-color !default;
+$custom-control-indicator-active-bg:            lighten($component-active-bg, 35%) !default;
+$custom-control-indicator-active-box-shadow:    null !default;
+$custom-control-indicator-active-border-color:  $custom-control-indicator-active-bg !default;
+
+$custom-checkbox-indicator-border-radius:       $border-radius !default;
+$custom-checkbox-indicator-icon-checked:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/></svg>") !default;
+
+$custom-checkbox-indicator-indeterminate-bg:           $component-active-bg !default;
+$custom-checkbox-indicator-indeterminate-color:        $custom-control-indicator-checked-color !default;
+$custom-checkbox-indicator-icon-indeterminate:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'><path stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/></svg>") !default;
+$custom-checkbox-indicator-indeterminate-box-shadow:   null !default;
+$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
+
+$custom-radio-indicator-border-radius:          50% !default;
+$custom-radio-indicator-icon-checked:           url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'><circle r='3' fill='#{$custom-control-indicator-checked-color}'/></svg>") !default;
+
+$custom-switch-width:                           $custom-control-indicator-size * 1.75 !default;
+$custom-switch-indicator-border-radius:         $custom-control-indicator-size * .5 !default;
+$custom-switch-indicator-size:                  subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;
+
+$custom-select-padding-y:           $input-padding-y !default;
+$custom-select-padding-x:           $input-padding-x !default;
+$custom-select-font-family:         $input-font-family !default;
+$custom-select-font-size:           $input-font-size !default;
+$custom-select-height:              $input-height !default;
+$custom-select-indicator-padding:   1rem !default; // Extra padding to account for the presence of the background-image based indicator
+$custom-select-font-weight:         $input-font-weight !default;
+$custom-select-line-height:         $input-line-height !default;
+$custom-select-color:               $input-color !default;
+$custom-select-disabled-color:      $gray-600 !default;
+$custom-select-bg:                  $input-bg !default;
+$custom-select-disabled-bg:         $gray-200 !default;
+$custom-select-bg-size:             8px 10px !default; // In pixels because image dimensions
+$custom-select-indicator-color:     $gray-800 !default;
+$custom-select-indicator:           url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'><path fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>") !default;
+$custom-select-background:          escape-svg($custom-select-indicator) right $custom-select-padding-x center / $custom-select-bg-size no-repeat !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
+
+$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;
+$custom-select-feedback-icon-position:      center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
+$custom-select-feedback-icon-size:          $input-height-inner-half $input-height-inner-half !default;
+
+$custom-select-border-width:        $input-border-width !default;
+$custom-select-border-color:        $input-border-color !default;
+$custom-select-border-radius:       $border-radius !default;
+$custom-select-box-shadow:          inset 0 1px 2px rgba($black, .075) !default;
+
+$custom-select-focus-border-color:  $input-focus-border-color !default;
+$custom-select-focus-width:         $input-focus-width !default;
+$custom-select-focus-box-shadow:    0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
+
+$custom-select-padding-y-sm:        $input-padding-y-sm !default;
+$custom-select-padding-x-sm:        $input-padding-x-sm !default;
+$custom-select-font-size-sm:        $input-font-size-sm !default;
+$custom-select-height-sm:           $input-height-sm !default;
+
+$custom-select-padding-y-lg:        $input-padding-y-lg !default;
+$custom-select-padding-x-lg:        $input-padding-x-lg !default;
+$custom-select-font-size-lg:        $input-font-size-lg !default;
+$custom-select-height-lg:           $input-height-lg !default;
+
+$custom-range-track-width:          100% !default;
+$custom-range-track-height:         .5rem !default;
+$custom-range-track-cursor:         pointer !default;
+$custom-range-track-bg:             $gray-300 !default;
+$custom-range-track-border-radius:  1rem !default;
+$custom-range-track-box-shadow:     inset 0 .25rem .25rem rgba($black, .1) !default;
+
+$custom-range-thumb-width:                   1rem !default;
+$custom-range-thumb-height:                  $custom-range-thumb-width !default;
+$custom-range-thumb-bg:                      $component-active-bg !default;
+$custom-range-thumb-border:                  0 !default;
+$custom-range-thumb-border-radius:           1rem !default;
+$custom-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;
+$custom-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;
+$custom-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in IE/Edge
+$custom-range-thumb-active-bg:               lighten($component-active-bg, 35%) !default;
+$custom-range-thumb-disabled-bg:             $gray-500 !default;
+
+$custom-file-height:                $input-height !default;
+$custom-file-height-inner:          $input-height-inner !default;
+$custom-file-focus-border-color:    $input-focus-border-color !default;
+$custom-file-focus-box-shadow:      $input-focus-box-shadow !default;
+$custom-file-disabled-bg:           $input-disabled-bg !default;
+
+$custom-file-padding-y:             $input-padding-y !default;
+$custom-file-padding-x:             $input-padding-x !default;
+$custom-file-line-height:           $input-line-height !default;
+$custom-file-font-family:           $input-font-family !default;
+$custom-file-font-weight:           $input-font-weight !default;
+$custom-file-color:                 $input-color !default;
+$custom-file-bg:                    $input-bg !default;
+$custom-file-border-width:          $input-border-width !default;
+$custom-file-border-color:          $input-border-color !default;
+$custom-file-border-radius:         $input-border-radius !default;
+$custom-file-box-shadow:            $input-box-shadow !default;
+$custom-file-button-color:          $custom-file-color !default;
+$custom-file-button-bg:             $input-group-addon-bg !default;
+$custom-file-text: (
+  en: "Browse"
+) !default;
+
+
+// Form validation
+
+$form-feedback-margin-top:          $form-text-margin-top !default;
+$form-feedback-font-size:           $small-font-size !default;
+$form-feedback-valid-color:         theme-color("success") !default;
+$form-feedback-invalid-color:       theme-color("danger") !default;
+
+$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;
+$form-feedback-icon-valid:          url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
+$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;
+$form-feedback-icon-invalid:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
+
+$form-validation-states: () !default;
+$form-validation-states: map-merge(
+  (
+    "valid": (
+      "color": $form-feedback-valid-color,
+      "icon": $form-feedback-icon-valid
+    ),
+    "invalid": (
+      "color": $form-feedback-invalid-color,
+      "icon": $form-feedback-icon-invalid
+    ),
+  ),
+  $form-validation-states
+);
+
+// Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+
+$zindex-dropdown:                   1000 !default;
+$zindex-sticky:                     1020 !default;
+$zindex-fixed:                      1030 !default;
+$zindex-modal-backdrop:             1040 !default;
+$zindex-modal:                      1050 !default;
+$zindex-popover:                    1060 !default;
+$zindex-tooltip:                    1070 !default;
+
+
+// Navs
+
+$nav-link-padding-y:                .5rem !default;
+$nav-link-padding-x:                1rem !default;
+$nav-link-disabled-color:           $gray-600 !default;
+$nav-link-hover-bg:                 $gray-200 !default; // Nick
+
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-border-width:             $border-width !default;
+$nav-tabs-border-radius:            $border-radius !default;
+$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $gray-700 !default;
+$nav-tabs-link-active-bg:           $body-bg !default;
+$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
+
+$nav-pills-border-radius:           $border-radius !default;
+$nav-pills-link-active-color:       $component-active-color !default;
+$nav-pills-link-active-bg:          $component-active-bg !default;
+
+$nav-divider-color:                 $gray-200 !default;
+$nav-divider-margin-y:              $spacer * .5 !default;
+
+
+// Navbar
+
+$navbar-padding-y:                  0 !default; //$spacer * .5 !default;
+$navbar-padding-x:                  $spacer !default;
+
+$navbar-nav-link-padding-y:         0.75rem !default; // Nick
+$navbar-nav-link-padding-x:         1rem !default; //.5rem !default;
+
+$navbar-brand-font-size:            $font-size-lg !default;
+// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
+$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
+$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;
+$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;
+
+$navbar-toggler-padding-y:          .25rem !default;
+$navbar-toggler-padding-x:          .75rem !default;
+$navbar-toggler-font-size:          $font-size-lg !default;
+$navbar-toggler-border-radius:      $btn-border-radius !default;
+
+$navbar-nav-scroll-max-height:      75vh !default;
+
+$navbar-dark-color:                 $white !default; //rgba($white, .5) !default;
+$navbar-dark-hover-color:           $black !default; //rgba($white, .75) !default;
+$navbar-dark-hover-bg:              $gray-400 !default; // Nick
+$navbar-dark-active-color:          $white !default;
+$navbar-dark-active-bg:             darken(theme-color("primary"), 6%) !default; // Nick
+$navbar-dark-disabled-color:        rgba($white, .25) !default;
+$navbar-dark-toggler-icon-bg:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
+$navbar-dark-toggler-border-color:  rgba($white, .1) !default;
+
+$navbar-light-color:                $black !default; //rgba($black, .5) !default;
+$navbar-light-hover-color:          $white !default; //rgba($black, .7) !default;
+$navbar-light-hover-bg:             $gray-600 !default; // Nick
+$navbar-light-active-color:         rgba($black, .9) !default;
+$navbar-light-active-bg:            lighten(theme-color("primary"), 6%) !default; // Nick
+$navbar-light-disabled-color:       rgba($black, .3) !default;
+$navbar-light-toggler-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
+$navbar-light-toggler-border-color: rgba($black, .1) !default;
+
+$navbar-light-brand-color:                $navbar-light-active-color !default;
+$navbar-light-brand-hover-color:          $navbar-light-active-color !default;
+$navbar-dark-brand-color:                 $navbar-dark-active-color !default;
+$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;
+
+
+// Dropdowns
+//
+// Dropdown menu container and contents.
+
+$dropdown-min-width:                10rem !default;
+$dropdown-padding-x:                0 !default;
+$dropdown-padding-y:                .5rem !default;
+$dropdown-spacer:                   .125rem !default;
+$dropdown-font-size:                $font-size-base !default;
+$dropdown-color:                    $body-color !default;
+$dropdown-bg:                       $white !default;
+$dropdown-border-color:             rgba($black, .15) !default;
+$dropdown-border-radius:            $border-radius !default;
+$dropdown-border-width:             $border-width !default;
+$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;
+$dropdown-divider-bg:               $gray-200 !default;
+$dropdown-divider-margin-y:         $nav-divider-margin-y !default;
+$dropdown-box-shadow:               0 .5rem 1rem rgba($black, .175) !default;
+
+$dropdown-link-color:               $gray-900 !default;
+$dropdown-link-hover-color:         darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg:            $gray-200 !default;
+
+$dropdown-link-active-color:        $component-active-color !default;
+$dropdown-link-active-bg:           $component-active-bg !default;
+
+$dropdown-link-disabled-color:      $gray-500 !default;
+
+$dropdown-item-padding-y:           .25rem !default;
+$dropdown-item-padding-x:           1.5rem !default;
+
+$dropdown-header-color:             $gray-600 !default;
+$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;
+
+
+// Pagination
+
+$pagination-padding-y:              .5rem !default;
+$pagination-padding-x:              .75rem !default;
+$pagination-padding-y-sm:           .25rem !default;
+$pagination-padding-x-sm:           .5rem !default;
+$pagination-padding-y-lg:           .75rem !default;
+$pagination-padding-x-lg:           1.5rem !default;
+$pagination-line-height:            1.25 !default;
+
+$pagination-color:                  $link-color !default;
+$pagination-bg:                     $white !default;
+$pagination-border-width:           $border-width !default;
+$pagination-border-color:           $gray-300 !default;
+
+$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;
+$pagination-focus-outline:          0 !default;
+
+$pagination-hover-color:            $link-hover-color !default;
+$pagination-hover-bg:               $gray-200 !default;
+$pagination-hover-border-color:     $gray-300 !default;
+
+$pagination-active-color:           $component-active-color !default;
+$pagination-active-bg:              $component-active-bg !default;
+$pagination-active-border-color:    $pagination-active-bg !default;
+
+$pagination-disabled-color:         $gray-600 !default;
+$pagination-disabled-bg:            $white !default;
+$pagination-disabled-border-color:  $gray-300 !default;
+
+$pagination-border-radius-sm:       $border-radius-sm !default;
+$pagination-border-radius-lg:       $border-radius-lg !default;
+
+
+// Jumbotron
+
+$jumbotron-padding:                 2rem !default;
+$jumbotron-color:                   null !default;
+$jumbotron-bg:                      $gray-200 !default;
+
+
+// Cards
+
+$card-spacer-y:                     .75rem !default;
+$card-spacer-yt:                    $card-spacer-y * 1.05 !default; // Nick
+$card-spacer-yb:                    $card-spacer-y * .95 !default; // Nick
+$card-spacer-x:                     1.25rem !default;
+$card-border-width:                 $border-width !default;
+$card-border-radius:                $border-radius !default;
+$card-border-color:                 $gray-400 !default; //rgba($black, .125) !default;
+$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;
+$card-cap-bg:                       $gray-200 !default; //rgba($black, .03) !default;
+$card-cap-color:                    null !default;
+$card-height:                       null !default;
+$card-color:                        null !default;
+$card-bg:                           $white !default;
+
+$card-img-overlay-padding:          1.25rem !default;
+
+$card-group-margin:                 $grid-gutter-width * .5 !default;
+$card-deck-margin:                  $card-group-margin !default;
+
+$card-columns-count:                3 !default;
+$card-columns-gap:                  1.25rem !default;
+$card-columns-margin:               $card-spacer-y !default;
+
+
+// Tooltips
+
+$tooltip-font-size:                 $font-size-sm !default;
+$tooltip-max-width:                 200px !default;
+$tooltip-color:                     $white !default;
+$tooltip-bg:                        $black !default;
+$tooltip-border-radius:             $border-radius !default;
+$tooltip-opacity:                   .9 !default;
+$tooltip-padding-y:                 .25rem !default;
+$tooltip-padding-x:                 .5rem !default;
+$tooltip-margin:                    0 !default;
+
+$tooltip-arrow-width:               .8rem !default;
+$tooltip-arrow-height:              .4rem !default;
+$tooltip-arrow-color:               $tooltip-bg !default;
+
+// Form tooltips must come after regular tooltips
+$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;
+$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;
+$form-feedback-tooltip-font-size:     $tooltip-font-size !default;
+$form-feedback-tooltip-line-height:   $line-height-base !default;
+$form-feedback-tooltip-opacity:       $tooltip-opacity !default;
+$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
+
+
+// Popovers
+
+$popover-font-size:                 $font-size-sm !default;
+$popover-bg:                        $white !default;
+$popover-max-width:                 276px !default;
+$popover-border-width:              $border-width !default;
+$popover-border-color:              rgba($black, .2) !default;
+$popover-border-radius:             $border-radius-lg !default;
+$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;
+$popover-box-shadow:                0 .25rem .5rem rgba($black, .2) !default;
+
+$popover-header-bg:                 darken($popover-bg, 3%) !default;
+$popover-header-color:              $headings-color !default;
+$popover-header-padding-y:          .5rem !default;
+$popover-header-padding-x:          .75rem !default;
+
+$popover-body-color:                $body-color !default;
+$popover-body-padding-y:            $popover-header-padding-y !default;
+$popover-body-padding-x:            $popover-header-padding-x !default;
+
+$popover-arrow-width:               1rem !default;
+$popover-arrow-height:              .5rem !default;
+$popover-arrow-color:               $popover-bg !default;
+
+$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;
+
+
+// Toasts
+
+$toast-max-width:                   350px !default;
+$toast-padding-x:                   .75rem !default;
+$toast-padding-y:                   .25rem !default;
+$toast-font-size:                   .875rem !default;
+$toast-color:                       null !default;
+$toast-background-color:            rgba($white, .85) !default;
+$toast-border-width:                1px !default;
+$toast-border-color:                rgba(0, 0, 0, .1) !default;
+$toast-border-radius:               .25rem !default;
+$toast-box-shadow:                  0 .25rem .75rem rgba($black, .1) !default;
+
+$toast-header-color:                $gray-600 !default;
+$toast-header-background-color:     rgba($white, .85) !default;
+$toast-header-border-color:         rgba(0, 0, 0, .05) !default;
+
+
+// Badges
+
+$badge-font-size:                   75% !default;
+$badge-font-weight:                 $font-weight-bold !default;
+$badge-padding-y:                   .25em !default;
+$badge-padding-x:                   .4em !default;
+$badge-border-radius:               $border-radius !default;
+
+$badge-transition:                  $btn-transition !default;
+$badge-focus-width:                 $input-btn-focus-width !default;
+
+$badge-pill-padding-x:              .6em !default;
+// Use a higher than normal value to ensure completely rounded edges when
+// customizing padding or font-size on labels.
+$badge-pill-border-radius:          10rem !default;
+
+
+// Modals
+
+// Padding applied to the modal body
+$modal-inner-padding:               1rem !default;
+
+// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding
+$modal-footer-margin-between:       .5rem !default;
+
+$modal-dialog-margin:               .5rem !default;
+$modal-dialog-margin-y-sm-up:       1.75rem !default;
+
+$modal-title-line-height:           $line-height-base !default;
+
+$modal-content-color:               null !default;
+$modal-content-bg:                  $white !default;
+$modal-content-border-color:        rgba($black, .2) !default;
+$modal-content-border-width:        $border-width !default;
+$modal-content-border-radius:       0 !default; //$border-radius-lg !default;
+$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
+$modal-content-box-shadow-xs:       0 .25rem .5rem rgba($black, .5) !default;
+$modal-content-box-shadow-sm-up:    0 .5rem 1rem rgba($black, .5) !default;
+
+$modal-backdrop-bg:                 $black !default;
+$modal-backdrop-opacity:            .5 !default;
+$modal-header-border-color:         $border-color !default;
+$modal-footer-border-color:         $modal-header-border-color !default;
+$modal-header-border-width:         $modal-content-border-width !default;
+$modal-footer-border-width:         $modal-header-border-width !default;
+$modal-header-padding-y:            0.5rem !default; //1rem !default;
+$modal-header-padding-x:            1rem !default;
+$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
+
+$modal-xl:                          1140px !default;
+$modal-lg:                          800px !default;
+$modal-md:                          500px !default;
+$modal-sm:                          300px !default;
+
+$modal-fade-transform:              translate(0, -50px) !default;
+$modal-show-transform:              none !default;
+$modal-transition:                  transform .3s ease-out !default;
+$modal-scale-transform:             scale(1.02) !default;
+
+
+// Alerts
+//
+// Define alert colors, border radius, and padding.
+
+$alert-padding-y:                   .75rem !default;
+$alert-padding-x:                   1.25rem !default;
+$alert-margin-bottom:               1rem !default;
+$alert-border-radius:               $border-radius !default;
+$alert-link-font-weight:            $font-weight-bold !default;
+$alert-border-width:                $border-width !default;
+
+$alert-bg-level:                    -10 !default;
+$alert-border-level:                -9 !default;
+$alert-color-level:                 6 !default;
+
+
+// Progress bars
+
+$progress-height:                   1rem !default;
+$progress-font-size:                $font-size-base * .75 !default;
+$progress-bg:                       $gray-200 !default;
+$progress-border-radius:            $border-radius !default;
+$progress-box-shadow:               inset 0 .1rem .1rem rgba($black, .1) !default;
+$progress-bar-color:                $white !default;
+$progress-bar-bg:                   theme-color("primary") !default;
+$progress-bar-animation-timing:     1s linear infinite !default;
+$progress-bar-transition:           width .6s ease !default;
+
+
+// List group
+
+$list-group-color:                  null !default;
+$list-group-bg:                     $white !default;
+$list-group-border-color:           rgba($black, .125) !default;
+$list-group-border-width:           $border-width !default;
+$list-group-border-radius:          $border-radius !default;
+
+$list-group-item-padding-y:         .75rem !default;
+$list-group-item-padding-x:         1.25rem !default;
+
+$list-group-hover-bg:               $gray-100 !default;
+$list-group-active-color:           $component-active-color !default;
+$list-group-active-bg:              $component-active-bg !default;
+$list-group-active-border-color:    $list-group-active-bg !default;
+
+$list-group-disabled-color:         $gray-600 !default;
+$list-group-disabled-bg:            $list-group-bg !default;
+
+$list-group-action-color:           $gray-700 !default;
+$list-group-action-hover-color:     $list-group-action-color !default;
+
+$list-group-action-active-color:    $body-color !default;
+$list-group-action-active-bg:       $gray-200 !default;
+
+
+// Image thumbnails
+
+$thumbnail-padding:                 .25rem !default;
+$thumbnail-bg:                      $body-bg !default;
+$thumbnail-border-width:            $border-width !default;
+$thumbnail-border-color:            $gray-300 !default;
+$thumbnail-border-radius:           $border-radius !default;
+$thumbnail-box-shadow:              0 1px 2px rgba($black, .075) !default;
+
+
+// Figures
+
+$figure-caption-font-size:          90% !default;
+$figure-caption-color:              $gray-600 !default;
+
+
+// Breadcrumbs
+
+$breadcrumb-font-size:              null !default;
+
+$breadcrumb-padding-y:              .75rem !default;
+$breadcrumb-padding-x:              1rem !default;
+$breadcrumb-item-padding:           .5rem !default;
+
+$breadcrumb-margin-bottom:          1rem !default;
+
+$breadcrumb-bg:                     $gray-200 !default;
+$breadcrumb-divider-color:          $gray-600 !default;
+$breadcrumb-active-color:           $gray-600 !default;
+$breadcrumb-divider:                quote("/") !default;
+
+$breadcrumb-border-radius:          $border-radius !default;
+
+
+// Carousel
+
+$carousel-control-color:             $white !default;
+$carousel-control-width:             15% !default;
+$carousel-control-opacity:           .5 !default;
+$carousel-control-hover-opacity:     .9 !default;
+$carousel-control-transition:        opacity .15s ease !default;
+
+$carousel-indicator-width:           30px !default;
+$carousel-indicator-height:          3px !default;
+$carousel-indicator-hit-area-height: 10px !default;
+$carousel-indicator-spacer:          3px !default;
+$carousel-indicator-active-bg:       $white !default;
+$carousel-indicator-transition:      opacity .6s ease !default;
+
+$carousel-caption-width:             70% !default;
+$carousel-caption-color:             $white !default;
+
+$carousel-control-icon-width:        20px !default;
+
+$carousel-control-prev-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/></svg>") !default;
+$carousel-control-next-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/></svg>") !default;
+
+$carousel-transition-duration:       .6s !default;
+$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
+
+
+// Spinners
+
+$spinner-width:           32px !default; //2rem !default;
+$spinner-height:          $spinner-width !default;
+$spinner-vertical-align:  baseline !default; //-.125em !default;
+$spinner-border-width:    .25em !default;
+
+$spinner-width-sm:        24px !default; //1rem !default;
+$spinner-height-sm:       $spinner-width-sm !default;
+$spinner-border-width-sm: .2em !default;
+
+
+// Close
+
+$close-font-size:                   $font-size-base * 1.5 !default;
+$close-font-weight:                 $font-weight-bold !default;
+$close-color:                       $black !default;
+$close-text-shadow:                 0 1px 0 $white !default;
+
+
+// Code
+
+$code-font-size:                    87.5% !default;
+$code-color:                        $pink !default;
+
+$kbd-padding-y:                     .2rem !default;
+$kbd-padding-x:                     .4rem !default;
+$kbd-font-size:                     $code-font-size !default;
+$kbd-color:                         $white !default;
+$kbd-bg:                            $gray-900 !default;
+
+$pre-color:                         $black !default; //$gray-900 !default;
+$pre-bg:                            $gray-200 !default; // Nick
+$pre-padding:                       .4rem !default; // Nick
+$pre-border-width:                  $border-width !default; // Nick
+$pre-border-color:                  $gray-500 !default; // Nick
+$pre-border-radius:                 $border-radius !default; // Nick
+$pre-scrollable-max-height:         340px !default;
+
+// Utilities
+
+$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
+$overflows: auto, hidden !default;
+$positions: static, relative, absolute, fixed, sticky !default;
+$user-selects: all, auto, none !default;
+
+
+// Printing
+
+$print-page-size:                   a3 !default;
+$print-body-min-width:              map-get($grid-breakpoints, "lg") !default;
diff --git a/css/bootstrap/bootstrap-grid.css.scss b/css/bootstrap/bootstrap-grid.css.scss
new file mode 100644 (file)
index 0000000..0de912b
--- /dev/null
@@ -0,0 +1,30 @@
+/*!
+ * Bootstrap Grid v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+html {
+  box-sizing: border-box;
+  -ms-overflow-style: scrollbar;
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: inherit;
+}
+
+@import "functions";
+@import "variables";
+
+@import "mixins/deprecate";
+@import "mixins/breakpoints";
+@import "mixins/grid-framework";
+@import "mixins/grid";
+
+@import "grid";
+@import "utilities/display";
+@import "utilities/flex";
+@import "utilities/spacing";
diff --git a/css/bootstrap/bootstrap-reboot.css.scss b/css/bootstrap/bootstrap-reboot.css.scss
new file mode 100644 (file)
index 0000000..aed4e37
--- /dev/null
@@ -0,0 +1,12 @@
+/*!
+ * Bootstrap Reboot v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "reboot";
diff --git a/css/bootstrap/bootstrap.css.scss b/css/bootstrap/bootstrap.css.scss
new file mode 100644 (file)
index 0000000..38c6016
--- /dev/null
@@ -0,0 +1,45 @@
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "root";
+@import "reboot";
+@import "type";
+@import "images";
+@import "code";
+@import "grid";
+@import "tables";
+@import "forms";
+@import "buttons";
+@import "transitions";
+@import "dropdown";
+@import "button-group";
+@import "input-group";
+@import "custom-forms";
+@import "nav";
+@import "navbar";
+@import "card";
+@import "breadcrumb";
+@import "pagination";
+@import "badge";
+@import "jumbotron";
+@import "alert";
+@import "progress";
+@import "media";
+@import "list-group";
+@import "close";
+@import "toasts";
+@import "modal";
+@import "tooltip";
+@import "popover";
+@import "carousel";
+@import "spinners";
+@import "utilities";
+@import "print";
+@import "custom"; // Nick
diff --git a/css/bootstrap/mixins/_alert.scss b/css/bootstrap/mixins/_alert.scss
new file mode 100644 (file)
index 0000000..db5a7eb
--- /dev/null
@@ -0,0 +1,13 @@
+@mixin alert-variant($background, $border, $color) {
+  color: $color;
+  @include gradient-bg($background);
+  border-color: $border;
+
+  hr {
+    border-top-color: darken($border, 5%);
+  }
+
+  .alert-link {
+    color: darken($color, 10%);
+  }
+}
diff --git a/css/bootstrap/mixins/_background-variant.scss b/css/bootstrap/mixins/_background-variant.scss
new file mode 100644 (file)
index 0000000..8058018
--- /dev/null
@@ -0,0 +1,23 @@
+// stylelint-disable declaration-no-important
+
+// Contextual backgrounds
+
+@mixin bg-variant($parent, $color, $ignore-warning: false) {
+  #{$parent} {
+    background-color: $color !important;
+  }
+  a#{$parent},
+  button#{$parent} {
+    @include hover-focus() {
+      background-color: darken($color, 10%) !important;
+    }
+  }
+  @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning);
+}
+
+@mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {
+  #{$parent} {
+    background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
+  }
+  @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning);
+}
diff --git a/css/bootstrap/mixins/_badge.scss b/css/bootstrap/mixins/_badge.scss
new file mode 100644 (file)
index 0000000..f1c4991
--- /dev/null
@@ -0,0 +1,17 @@
+@mixin badge-variant($bg) {
+  color: color-yiq($bg);
+  background-color: $bg;
+
+  @at-root a#{&} {
+    @include hover-focus() {
+      color: color-yiq($bg);
+      background-color: darken($bg, 10%);
+    }
+
+    &:focus,
+    &.focus {
+      outline: 0;
+      box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_border-radius.scss b/css/bootstrap/mixins/_border-radius.scss
new file mode 100644 (file)
index 0000000..4fad91d
--- /dev/null
@@ -0,0 +1,76 @@
+// stylelint-disable property-disallowed-list
+// Single side border-radius
+
+// Helper function to replace negative values with 0
+@function valid-radius($radius) {
+  $return: ();
+  @each $value in $radius {
+    @if type-of($value) == number {
+      $return: append($return, max($value, 0));
+    } @else {
+      $return: append($return, $value);
+    }
+  }
+  @return $return;
+}
+
+@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
+  @if $enable-rounded {
+    border-radius: valid-radius($radius);
+  }
+  @else if $fallback-border-radius != false {
+    border-radius: $fallback-border-radius;
+  }
+}
+
+@mixin border-top-radius($radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+    border-top-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-right-radius($radius) {
+  @if $enable-rounded {
+    border-top-right-radius: valid-radius($radius);
+    border-bottom-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-radius($radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: valid-radius($radius);
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-left-radius($radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-top-left-radius($radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-top-right-radius($radius) {
+  @if $enable-rounded {
+    border-top-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-right-radius($radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-left-radius($radius) {
+  @if $enable-rounded {
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
diff --git a/css/bootstrap/mixins/_box-shadow.scss b/css/bootstrap/mixins/_box-shadow.scss
new file mode 100644 (file)
index 0000000..0726d43
--- /dev/null
@@ -0,0 +1,20 @@
+@mixin box-shadow($shadow...) {
+  @if $enable-shadows {
+    $result: ();
+
+    @if (length($shadow) == 1) {
+      // We can pass `@include box-shadow(none);`
+      $result: $shadow;
+    } @else {
+      // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`
+      @for $i from 1 through length($shadow) {
+        @if nth($shadow, $i) != "none" {
+          $result: append($result, nth($shadow, $i), "comma");
+        }
+      }
+    }
+    @if (length($result) > 0) {
+      box-shadow: $result;
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_breakpoints.scss b/css/bootstrap/mixins/_breakpoints.scss
new file mode 100644 (file)
index 0000000..23a5de9
--- /dev/null
@@ -0,0 +1,123 @@
+// Breakpoint viewport sizes and media queries.
+//
+// Breakpoints are defined as a map of (name: minimum width), order from small to large:
+//
+//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)
+//
+// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
+
+// Name of the next breakpoint, or null for the last breakpoint.
+//
+//    >> breakpoint-next(sm)
+//    md
+//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    md
+//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))
+//    md
+@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
+  $n: index($breakpoint-names, $name);
+  @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
+}
+
+// Minimum breakpoint width. Null for the smallest (first) breakpoint.
+//
+//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    576px
+@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
+  $min: map-get($breakpoints, $name);
+  @return if($min != 0, $min, null);
+}
+
+// Maximum breakpoint width. Null for the largest (last) breakpoint.
+// The maximum value is calculated as the minimum of the next one less 0.02px
+// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.
+// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max
+// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.
+// See https://bugs.webkit.org/show_bug.cgi?id=178261
+//
+//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    767.98px
+@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
+  $next: breakpoint-next($name, $breakpoints);
+  @return if($next, breakpoint-min($next, $breakpoints) - .02, null);
+}
+
+// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.
+// Useful for making responsive utilities.
+//
+//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    ""  (Returns a blank string)
+//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    "-sm"
+@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
+  @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
+}
+
+// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
+// Makes the @content apply to the given breakpoint and wider.
+@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($name, $breakpoints);
+  @if $min {
+    @media (min-width: $min) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
+// Makes the @content apply to the given breakpoint and narrower.
+@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
+  $max: breakpoint-max($name, $breakpoints);
+  @if $max {
+    @media (max-width: $max) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media that spans multiple breakpoint widths.
+// Makes the @content apply between the min and max breakpoints
+@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($lower, $breakpoints);
+  $max: breakpoint-max($upper, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($lower, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($upper, $breakpoints) {
+      @content;
+    }
+  }
+}
+
+// Media between the breakpoint's minimum and maximum widths.
+// No minimum for the smallest breakpoint, and no maximum for the largest one.
+// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
+@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($name, $breakpoints);
+  $max: breakpoint-max($name, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($name, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($name, $breakpoints) {
+      @content;
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_buttons.scss b/css/bootstrap/mixins/_buttons.scss
new file mode 100644 (file)
index 0000000..4e03ce0
--- /dev/null
@@ -0,0 +1,112 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {
+  color: color-yiq($background);
+  @include gradient-bg($background);
+  border-color: $border;
+  @include box-shadow($btn-box-shadow);
+
+  @include hover() {
+    color: color-yiq($hover-background);
+    @include gradient-bg($hover-background);
+    border-color: $hover-border;
+  }
+
+  &:focus,
+  &.focus {
+    color: color-yiq($hover-background);
+    @include gradient-bg($hover-background);
+    border-color: $hover-border;
+    @if $enable-shadows {
+      @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+    }
+  }
+
+  // Disabled comes first so active can properly restyle
+  &.disabled,
+  &:disabled {
+    color: color-yiq($background);
+    background-color: $background;
+    border-color: $border;
+    // Remove CSS gradients if they're enabled
+    @if $enable-gradients {
+      background-image: none;
+    }
+  }
+
+  &:not(:disabled):not(.disabled):active,
+  &:not(:disabled):not(.disabled).active,
+  .show > &.dropdown-toggle {
+    color: color-yiq($active-background);
+    background-color: $active-background;
+    @if $enable-gradients {
+      background-image: none; // Remove the gradient for the pressed/active state
+    }
+    border-color: $active-border;
+
+    &:focus {
+      @if $enable-shadows and $btn-active-box-shadow != none {
+        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
+      } @else {
+        // Avoid using mixin so we can pass custom focus shadow properly
+        box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+      }
+    }
+  }
+}
+
+@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {
+  color: $color;
+  border-color: $color;
+
+  @include hover() {
+    color: $color-hover;
+    background-color: $active-background;
+    border-color: $active-border;
+  }
+
+  &:focus,
+  &.focus {
+    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $color;
+    background-color: transparent;
+  }
+
+  &:not(:disabled):not(.disabled):active,
+  &:not(:disabled):not(.disabled).active,
+  .show > &.dropdown-toggle {
+    color: color-yiq($active-background);
+    background-color: $active-background;
+    border-color: $active-border;
+
+    &:focus {
+      @if $enable-shadows and $btn-active-box-shadow != none {
+        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));
+      } @else {
+        // Avoid using mixin so we can pass custom focus shadow properly
+        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+      }
+    }
+  }
+}
+
+// Button sizes
+// Nick $padding-y changes to $padding-yt, $padding-yb
+@mixin button-size($padding-yt, $padding-yb, $padding-x, $font-size, $line-height, $border-radius) {
+  //padding: $padding-y $padding-x;
+  padding: $padding-yt $padding-x $padding-yb $padding-x;
+  @include font-size($font-size);
+  line-height: $line-height;
+  // Manually declare to provide an override to the browser default
+  @include border-radius($border-radius, 0);
+}
diff --git a/css/bootstrap/mixins/_caret.scss b/css/bootstrap/mixins/_caret.scss
new file mode 100644 (file)
index 0000000..2746649
--- /dev/null
@@ -0,0 +1,62 @@
+@mixin caret-down() {
+  border-top: $caret-width solid;
+  border-right: $caret-width solid transparent;
+  border-bottom: 0;
+  border-left: $caret-width solid transparent;
+}
+
+@mixin caret-up() {
+  border-top: 0;
+  border-right: $caret-width solid transparent;
+  border-bottom: $caret-width solid;
+  border-left: $caret-width solid transparent;
+}
+
+@mixin caret-right() {
+  border-top: $caret-width solid transparent;
+  border-right: 0;
+  border-bottom: $caret-width solid transparent;
+  border-left: $caret-width solid;
+}
+
+@mixin caret-left() {
+  border-top: $caret-width solid transparent;
+  border-right: $caret-width solid;
+  border-bottom: $caret-width solid transparent;
+}
+
+@mixin caret($direction: down) {
+  @if $enable-caret {
+    &::after {
+      display: inline-block;
+      margin-left: $caret-spacing;
+      vertical-align: $caret-vertical-align;
+      content: "";
+      @if $direction == down {
+        @include caret-down();
+      } @else if $direction == up {
+        @include caret-up();
+      } @else if $direction == right {
+        @include caret-right();
+      }
+    }
+
+    @if $direction == left {
+      &::after {
+        display: none;
+      }
+
+      &::before {
+        display: inline-block;
+        margin-right: $caret-spacing;
+        vertical-align: $caret-vertical-align;
+        content: "";
+        @include caret-left();
+      }
+    }
+
+    &:empty::after {
+      margin-left: 0;
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_clearfix.scss b/css/bootstrap/mixins/_clearfix.scss
new file mode 100644 (file)
index 0000000..11a977b
--- /dev/null
@@ -0,0 +1,7 @@
+@mixin clearfix() {
+  &::after {
+    display: block;
+    clear: both;
+    content: "";
+  }
+}
diff --git a/css/bootstrap/mixins/_deprecate.scss b/css/bootstrap/mixins/_deprecate.scss
new file mode 100644 (file)
index 0000000..df070bc
--- /dev/null
@@ -0,0 +1,10 @@
+// Deprecate mixin
+//
+// This mixin can be used to deprecate mixins or functions.
+// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
+// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
+@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
+  @if ($enable-deprecation-messages != false and $ignore-warning != true) {
+    @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
+  }
+}
diff --git a/css/bootstrap/mixins/_float.scss b/css/bootstrap/mixins/_float.scss
new file mode 100644 (file)
index 0000000..6b376a2
--- /dev/null
@@ -0,0 +1,14 @@
+// stylelint-disable declaration-no-important
+
+@mixin float-left() {
+  float: left !important;
+  @include deprecate("The `float-left` mixin", "v4.3.0", "v5");
+}
+@mixin float-right() {
+  float: right !important;
+  @include deprecate("The `float-right` mixin", "v4.3.0", "v5");
+}
+@mixin float-none() {
+  float: none !important;
+  @include deprecate("The `float-none` mixin", "v4.3.0", "v5");
+}
diff --git a/css/bootstrap/mixins/_forms.scss b/css/bootstrap/mixins/_forms.scss
new file mode 100644 (file)
index 0000000..b8847cc
--- /dev/null
@@ -0,0 +1,195 @@
+// Form control focus state
+//
+// Generate a customized focus state and for any input with the specified color,
+// which defaults to the `$input-focus-border-color` variable.
+//
+// We highly encourage you to not customize the default value, but instead use
+// this to tweak colors on an as-needed basis. This aesthetic change is based on
+// WebKit's default styles, but applicable to a wider range of browsers. Its
+// usability and accessibility should be taken into account with any change.
+//
+// Example usage: change the default blue border and shadow to white for better
+// contrast against a dark gray background.
+@mixin form-control-focus($ignore-warning: false) {
+  &:focus {
+    color: $input-focus-color;
+    background-color: $input-focus-bg;
+    border-color: $input-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($input-box-shadow, $input-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $input-focus-box-shadow;
+    }
+  }
+  @include deprecate("The `form-control-focus()` mixin", "v4.4.0", "v5", $ignore-warning);
+}
+
+// This mixin uses an `if()` technique to be compatible with Dart Sass
+// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
+@mixin form-validation-state-selector($state) {
+  @if ($state == "valid" or $state == "invalid") {
+    .was-validated #{if(&, "&", "")}:#{$state},
+    #{if(&, "&", "")}.is-#{$state} {
+      @content;
+    }
+  } @else {
+    #{if(&, "&", "")}.is-#{$state} {
+      @content;
+    }
+  }
+}
+
+@mixin form-validation-state($state, $color, $icon) {
+  .#{$state}-feedback {
+    display: none;
+    width: 100%;
+    margin-top: $form-feedback-margin-top;
+    @include font-size($form-feedback-font-size);
+    color: $color;
+  }
+
+  .#{$state}-tooltip {
+    position: absolute;
+    top: 100%;
+    left: 0;
+    z-index: 5;
+    display: none;
+    max-width: 100%; // Contain to parent when possible
+    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
+    margin-top: .1rem;
+    @include font-size($form-feedback-tooltip-font-size);
+    line-height: $form-feedback-tooltip-line-height;
+    color: color-yiq($color);
+    background-color: rgba($color, $form-feedback-tooltip-opacity);
+    @include border-radius($form-feedback-tooltip-border-radius);
+
+    // See https://github.com/twbs/bootstrap/pull/31557
+    // Align tooltip to form elements
+    .form-row > .col > &,
+    .form-row > [class*="col-"] > & {
+      left: $form-grid-gutter-width * .5;
+    }
+  }
+
+  @include form-validation-state-selector($state) {
+    ~ .#{$state}-feedback,
+    ~ .#{$state}-tooltip {
+      display: block;
+    }
+  }
+
+  .form-control {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      @if $enable-validation-icons {
+        padding-right: $input-height-inner !important; // stylelint-disable-line declaration-no-important
+        background-image: escape-svg($icon);
+        background-repeat: no-repeat;
+        background-position: right $input-height-inner-quarter center;
+        background-size: $input-height-inner-half $input-height-inner-half;
+      }
+
+      &:focus {
+        border-color: $color;
+        box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+      }
+    }
+  }
+
+  // stylelint-disable-next-line selector-no-qualifying-type
+  select.form-control {
+    @include form-validation-state-selector($state) {
+      @if $enable-validation-icons {
+        padding-right: $input-padding-x * 4 !important; // stylelint-disable-line declaration-no-important
+        background-position: right $input-padding-x * 2 center;
+      }
+    }
+  }
+
+  // stylelint-disable-next-line selector-no-qualifying-type
+  textarea.form-control {
+    @include form-validation-state-selector($state) {
+      @if $enable-validation-icons {
+        padding-right: $input-height-inner;
+        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
+      }
+    }
+  }
+
+  .custom-select {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      @if $enable-validation-icons {
+        padding-right: $custom-select-feedback-icon-padding-right !important; // stylelint-disable-line declaration-no-important
+        background: $custom-select-background, $custom-select-bg escape-svg($icon) $custom-select-feedback-icon-position / $custom-select-feedback-icon-size no-repeat;
+      }
+
+      &:focus {
+        border-color: $color;
+        box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+      }
+    }
+  }
+
+  .form-check-input {
+    @include form-validation-state-selector($state) {
+      ~ .form-check-label {
+        color: $color;
+      }
+
+      ~ .#{$state}-feedback,
+      ~ .#{$state}-tooltip {
+        display: block;
+      }
+    }
+  }
+
+  .custom-control-input {
+    @include form-validation-state-selector($state) {
+      ~ .custom-control-label {
+        color: $color;
+
+        &::before {
+          border-color: $color;
+        }
+      }
+
+      &:checked {
+        ~ .custom-control-label::before {
+          border-color: lighten($color, 10%);
+          @include gradient-bg(lighten($color, 10%));
+        }
+      }
+
+      &:focus {
+        ~ .custom-control-label::before {
+          box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+        }
+
+        &:not(:checked) ~ .custom-control-label::before {
+          border-color: $color;
+        }
+      }
+    }
+  }
+
+  // custom file
+  .custom-file-input {
+    @include form-validation-state-selector($state) {
+      ~ .custom-file-label {
+        border-color: $color;
+      }
+
+      &:focus {
+        ~ .custom-file-label {
+          border-color: $color;
+          box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+        }
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_gradients.scss b/css/bootstrap/mixins/_gradients.scss
new file mode 100644 (file)
index 0000000..88c4d64
--- /dev/null
@@ -0,0 +1,45 @@
+// Gradients
+
+@mixin gradient-bg($color) {
+  @if $enable-gradients {
+    background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;
+  } @else {
+    background-color: $color;
+  }
+}
+
+// Horizontal gradient, from left to right
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
+  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
+  background-repeat: repeat-x;
+}
+
+// Vertical gradient, from top to bottom
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
+  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
+  background-repeat: repeat-x;
+}
+
+@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
+  background-image: linear-gradient($deg, $start-color, $end-color);
+  background-repeat: repeat-x;
+}
+@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+  background-repeat: no-repeat;
+}
+@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+  background-repeat: no-repeat;
+}
+@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
+  background-image: radial-gradient(circle, $inner-color, $outer-color);
+  background-repeat: no-repeat;
+}
+@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
+  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+}
diff --git a/css/bootstrap/mixins/_grid-framework.scss b/css/bootstrap/mixins/_grid-framework.scss
new file mode 100644 (file)
index 0000000..ef32917
--- /dev/null
@@ -0,0 +1,80 @@
+// Framework grid generation
+//
+// Used only by Bootstrap to generate the correct number of grid classes given
+// any value of `$grid-columns`.
+
+@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
+  // Common properties for all breakpoints
+  %grid-column {
+    position: relative;
+    width: 100%;
+    padding-right: $gutter * .5;
+    padding-left: $gutter * .5;
+  }
+
+  @each $breakpoint in map-keys($breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $breakpoints);
+
+    @if $columns > 0 {
+      // Allow columns to stretch full width below their breakpoints
+      @for $i from 1 through $columns {
+        .col#{$infix}-#{$i} {
+          @extend %grid-column;
+        }
+      }
+    }
+
+    .col#{$infix},
+    .col#{$infix}-auto {
+      @extend %grid-column;
+    }
+
+    @include media-breakpoint-up($breakpoint, $breakpoints) {
+      // Provide basic `.col-{bp}` classes for equal-width flexbox columns
+      .col#{$infix} {
+        flex-basis: 0;
+        flex-grow: 1;
+        max-width: 100%;
+      }
+
+      @if $grid-row-columns > 0 {
+        @for $i from 1 through $grid-row-columns {
+          .row-cols#{$infix}-#{$i} {
+            @include row-cols($i);
+          }
+        }
+      }
+
+      .col#{$infix}-auto {
+        @include make-col-auto();
+      }
+
+      @if $columns > 0 {
+        @for $i from 1 through $columns {
+          .col#{$infix}-#{$i} {
+            @include make-col($i, $columns);
+          }
+        }
+      }
+
+      .order#{$infix}-first { order: -1; }
+
+      .order#{$infix}-last { order: $columns + 1; }
+
+      @for $i from 0 through $columns {
+        .order#{$infix}-#{$i} { order: $i; }
+      }
+
+      @if $columns > 0 {
+        // `$columns - 1` because offsetting by the width of an entire row isn't possible
+        @for $i from 0 through ($columns - 1) {
+          @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
+            .offset#{$infix}-#{$i} {
+              @include make-col-offset($i, $columns);
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_grid.scss b/css/bootstrap/mixins/_grid.scss
new file mode 100644 (file)
index 0000000..0eb0991
--- /dev/null
@@ -0,0 +1,69 @@
+/// Grid system
+//
+// Generate semantic grid columns with these mixins.
+
+@mixin make-container($gutter: $grid-gutter-width) {
+  width: 100%;
+  padding-right: $gutter * .5;
+  padding-left: $gutter * .5;
+  margin-right: auto;
+  margin-left: auto;
+}
+
+@mixin make-row($gutter: $grid-gutter-width) {
+  display: flex;
+  flex-wrap: wrap;
+  margin-right: -$gutter * .5;
+  margin-left: -$gutter * .5;
+}
+
+// For each breakpoint, define the maximum width of the container in a media query
+@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {
+  @each $breakpoint, $container-max-width in $max-widths {
+    @include media-breakpoint-up($breakpoint, $breakpoints) {
+      max-width: $container-max-width;
+    }
+  }
+  @include deprecate("The `make-container-max-widths` mixin", "v4.5.2", "v5");
+}
+
+@mixin make-col-ready($gutter: $grid-gutter-width) {
+  position: relative;
+  // Prevent columns from becoming too narrow when at smaller grid tiers by
+  // always setting `width: 100%;`. This works because we use `flex` values
+  // later on to override this initial width.
+  width: 100%;
+  padding-right: $gutter * .5;
+  padding-left: $gutter * .5;
+}
+
+@mixin make-col($size, $columns: $grid-columns) {
+  flex: 0 0 percentage(divide($size, $columns));
+  // Add a `max-width` to ensure content within each column does not blow out
+  // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari
+  // do not appear to require this.
+  max-width: percentage(divide($size, $columns));
+}
+
+@mixin make-col-auto() {
+  flex: 0 0 auto;
+  width: auto;
+  max-width: 100%; // Reset earlier grid tiers
+}
+
+@mixin make-col-offset($size, $columns: $grid-columns) {
+  $num: divide($size, $columns);
+  margin-left: if($num == 0, 0, percentage($num));
+}
+
+// Row columns
+//
+// Specify on a parent element(e.g., .row) to force immediate children into NN
+// numberof columns. Supports wrapping to new lines, but does not do a Masonry
+// style grid.
+@mixin row-cols($count) {
+  > * {
+    flex: 0 0 divide(100%, $count);
+    max-width: divide(100%, $count);
+  }
+}
diff --git a/css/bootstrap/mixins/_hover.scss b/css/bootstrap/mixins/_hover.scss
new file mode 100644 (file)
index 0000000..409f824
--- /dev/null
@@ -0,0 +1,37 @@
+// Hover mixin and `$enable-hover-media-query` are deprecated.
+//
+// Originally added during our alphas and maintained during betas, this mixin was
+// designed to prevent `:hover` stickiness on iOS-an issue where hover styles
+// would persist after initial touch.
+//
+// For backward compatibility, we've kept these mixins and updated them to
+// always return their regular pseudo-classes instead of a shimmed media query.
+//
+// Issue: https://github.com/twbs/bootstrap/issues/25195
+
+@mixin hover() {
+  &:hover { @content; }
+}
+
+@mixin hover-focus() {
+  &:hover,
+  &:focus {
+    @content;
+  }
+}
+
+@mixin plain-hover-focus() {
+  &,
+  &:hover,
+  &:focus {
+    @content;
+  }
+}
+
+@mixin hover-focus-active() {
+  &:hover,
+  &:focus,
+  &:active {
+    @content;
+  }
+}
diff --git a/css/bootstrap/mixins/_image.scss b/css/bootstrap/mixins/_image.scss
new file mode 100644 (file)
index 0000000..3aaa0d7
--- /dev/null
@@ -0,0 +1,36 @@
+// Image Mixins
+// - Responsive image
+// - Retina image
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+
+@mixin img-fluid() {
+  // Part 1: Set a maximum relative to the parent
+  max-width: 100%;
+  // Part 2: Override the height to auto, otherwise images will be stretched
+  // when setting a width and height attribute on the img element.
+  height: auto;
+}
+
+
+// Retina image
+//
+// Short retina mixin for setting background-image and -size.
+
+@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
+  background-image: url($file-1x);
+
+  // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,
+  // but doesn't convert dppx=>dpi.
+  // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.
+  // Compatibility info: https://caniuse.com/css-media-resolution
+  @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx
+    only screen and (min-resolution: 2dppx) { // Standardized
+    background-image: url($file-2x);
+    background-size: $width-1x $height-1x;
+  }
+  @include deprecate("`img-retina()`", "v4.3.0", "v5");
+}
diff --git a/css/bootstrap/mixins/_list-group.scss b/css/bootstrap/mixins/_list-group.scss
new file mode 100644 (file)
index 0000000..0da3531
--- /dev/null
@@ -0,0 +1,21 @@
+// List Groups
+
+@mixin list-group-item-variant($state, $background, $color) {
+  .list-group-item-#{$state} {
+    color: $color;
+    background-color: $background;
+
+    &.list-group-item-action {
+      @include hover-focus() {
+        color: $color;
+        background-color: darken($background, 5%);
+      }
+
+      &.active {
+        color: $white;
+        background-color: $color;
+        border-color: $color;
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_lists.scss b/css/bootstrap/mixins/_lists.scss
new file mode 100644 (file)
index 0000000..251cb07
--- /dev/null
@@ -0,0 +1,7 @@
+// Lists
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+@mixin list-unstyled() {
+  padding-left: 0;
+  list-style: none;
+}
diff --git a/css/bootstrap/mixins/_nav-divider.scss b/css/bootstrap/mixins/_nav-divider.scss
new file mode 100644 (file)
index 0000000..3e0ccea
--- /dev/null
@@ -0,0 +1,11 @@
+// Horizontal dividers
+//
+// Dividers (basically an hr) within dropdowns and nav lists
+
+@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) {
+  height: 0;
+  margin: $margin-y 0;
+  overflow: hidden;
+  border-top: 1px solid $color;
+  @include deprecate("The `nav-divider()` mixin", "v4.4.0", "v5", $ignore-warning);
+}
diff --git a/css/bootstrap/mixins/_pagination.scss b/css/bootstrap/mixins/_pagination.scss
new file mode 100644 (file)
index 0000000..af8e16d
--- /dev/null
@@ -0,0 +1,22 @@
+// Pagination
+
+@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
+  .page-link {
+    padding: $padding-y $padding-x;
+    @include font-size($font-size);
+    line-height: $line-height;
+  }
+
+  .page-item {
+    &:first-child {
+      .page-link {
+        @include border-left-radius($border-radius);
+      }
+    }
+    &:last-child {
+      .page-link {
+        @include border-right-radius($border-radius);
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_reset-text.scss b/css/bootstrap/mixins/_reset-text.scss
new file mode 100644 (file)
index 0000000..15b4407
--- /dev/null
@@ -0,0 +1,17 @@
+@mixin reset-text() {
+  font-family: $font-family-base;
+  // We deliberately do NOT reset font-size or word-wrap.
+  font-style: normal;
+  font-weight: $font-weight-normal;
+  line-height: $line-height-base;
+  text-align: left; // Fallback for where `start` is not supported
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+}
diff --git a/css/bootstrap/mixins/_resize.scss b/css/bootstrap/mixins/_resize.scss
new file mode 100644 (file)
index 0000000..66f233a
--- /dev/null
@@ -0,0 +1,6 @@
+// Resize anything
+
+@mixin resizable($direction) {
+  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
+  resize: $direction; // Options: horizontal, vertical, both
+}
diff --git a/css/bootstrap/mixins/_screen-reader.scss b/css/bootstrap/mixins/_screen-reader.scss
new file mode 100644 (file)
index 0000000..70b677e
--- /dev/null
@@ -0,0 +1,34 @@
+// Only display content to screen readers
+//
+// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
+// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
+
+@mixin sr-only() {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  white-space: nowrap;
+  border: 0;
+}
+
+// Use in conjunction with .sr-only to only display content when it's focused.
+//
+// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+//
+// Credit: HTML5 Boilerplate
+
+@mixin sr-only-focusable() {
+  &:active,
+  &:focus {
+    position: static;
+    width: auto;
+    height: auto;
+    overflow: visible;
+    clip: auto;
+    white-space: normal;
+  }
+}
diff --git a/css/bootstrap/mixins/_size.scss b/css/bootstrap/mixins/_size.scss
new file mode 100644 (file)
index 0000000..69e056d
--- /dev/null
@@ -0,0 +1,7 @@
+// Sizing shortcuts
+
+@mixin size($width, $height: $width) {
+  width: $width;
+  height: $height;
+  @include deprecate("`size()`", "v4.3.0", "v5");
+}
diff --git a/css/bootstrap/mixins/_table-row.scss b/css/bootstrap/mixins/_table-row.scss
new file mode 100644 (file)
index 0000000..1ccde6b
--- /dev/null
@@ -0,0 +1,39 @@
+// Tables
+
+@mixin table-row-variant($state, $background, $border: null) {
+  // Exact selectors below required to override `.table-striped` and prevent
+  // inheritance to nested tables.
+  .table-#{$state} {
+    &,
+    > th,
+    > td {
+      background-color: $background;
+    }
+
+    @if $border != null {
+      th,
+      td,
+      thead th,
+      tbody + tbody {
+        border-color: $border;
+      }
+    }
+  }
+
+  // Hover states for `.table-hover`
+  // Note: this is not available for cells or rows within `thead` or `tfoot`.
+  .table-hover {
+    $hover-background: darken($background, 5%);
+
+    .table-#{$state} {
+      @include hover() {
+        background-color: $hover-background;
+
+        > td,
+        > th {
+          background-color: $hover-background;
+        }
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_text-emphasis.scss b/css/bootstrap/mixins/_text-emphasis.scss
new file mode 100644 (file)
index 0000000..5eb8a55
--- /dev/null
@@ -0,0 +1,17 @@
+// stylelint-disable declaration-no-important
+
+// Typography
+
+@mixin text-emphasis-variant($parent, $color, $ignore-warning: false) {
+  #{$parent} {
+    color: $color !important;
+  }
+  @if $emphasized-link-hover-darken-percentage != 0 {
+    a#{$parent} {
+      @include hover-focus() {
+        color: darken($color, $emphasized-link-hover-darken-percentage) !important;
+      }
+    }
+  }
+  @include deprecate("`text-emphasis-variant()`", "v4.4.0", "v5", $ignore-warning);
+}
diff --git a/css/bootstrap/mixins/_text-hide.scss b/css/bootstrap/mixins/_text-hide.scss
new file mode 100644 (file)
index 0000000..3a92301
--- /dev/null
@@ -0,0 +1,11 @@
+// CSS image replacement
+@mixin text-hide($ignore-warning: false) {
+  // stylelint-disable-next-line font-family-no-missing-generic-family-keyword
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+
+  @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning);
+}
diff --git a/css/bootstrap/mixins/_text-truncate.scss b/css/bootstrap/mixins/_text-truncate.scss
new file mode 100644 (file)
index 0000000..3504bb1
--- /dev/null
@@ -0,0 +1,8 @@
+// Text truncate
+// Requires inline-block or block for proper styling
+
+@mixin text-truncate() {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
diff --git a/css/bootstrap/mixins/_transition.scss b/css/bootstrap/mixins/_transition.scss
new file mode 100644 (file)
index 0000000..54870bf
--- /dev/null
@@ -0,0 +1,26 @@
+// stylelint-disable property-disallowed-list
+@mixin transition($transition...) {
+  @if length($transition) == 0 {
+    $transition: $transition-base;
+  }
+
+  @if length($transition) > 1 {
+    @each $value in $transition {
+      @if $value == null or $value == none {
+        @warn "The keyword 'none' or 'null' must be used as a single argument.";
+      }
+    }
+  }
+
+  @if $enable-transitions {
+    @if nth($transition, 1) != null {
+      transition: $transition;
+    }
+
+    @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none {
+      @media (prefers-reduced-motion: reduce) {
+        transition: none;
+      }
+    }
+  }
+}
diff --git a/css/bootstrap/mixins/_visibility.scss b/css/bootstrap/mixins/_visibility.scss
new file mode 100644 (file)
index 0000000..f174673
--- /dev/null
@@ -0,0 +1,8 @@
+// stylelint-disable declaration-no-important
+
+// Visibility
+
+@mixin invisible($visibility) {
+  visibility: $visibility !important;
+  @include deprecate("`invisible()`", "v4.3.0", "v5");
+}
diff --git a/css/bootstrap/utilities/_align.scss b/css/bootstrap/utilities/_align.scss
new file mode 100644 (file)
index 0000000..8b7df9f
--- /dev/null
@@ -0,0 +1,8 @@
+// stylelint-disable declaration-no-important
+
+.align-baseline    { vertical-align: baseline !important; } // Browser default
+.align-top         { vertical-align: top !important; }
+.align-middle      { vertical-align: middle !important; }
+.align-bottom      { vertical-align: bottom !important; }
+.align-text-bottom { vertical-align: text-bottom !important; }
+.align-text-top    { vertical-align: text-top !important; }
diff --git a/css/bootstrap/utilities/_background.scss b/css/bootstrap/utilities/_background.scss
new file mode 100644 (file)
index 0000000..0291ade
--- /dev/null
@@ -0,0 +1,24 @@
+// stylelint-disable declaration-no-important
+
+@each $color, $value in $theme-colors {
+  @include bg-variant(".bg-#{$color}", $value, true);
+}
+
+// Nick
+@each $color, $value in $grays {
+  @include bg-variant(".bg-gray-#{$color}", $value, true);
+}
+
+@if $enable-gradients {
+  @each $color, $value in $theme-colors {
+    @include bg-gradient-variant(".bg-gradient-#{$color}", $value, true);
+  }
+}
+
+.bg-white {
+  background-color: $white !important;
+}
+
+.bg-transparent {
+  background-color: transparent !important;
+}
diff --git a/css/bootstrap/utilities/_borders.scss b/css/bootstrap/utilities/_borders.scss
new file mode 100644 (file)
index 0000000..205f3fc
--- /dev/null
@@ -0,0 +1,75 @@
+// stylelint-disable property-disallowed-list, declaration-no-important
+
+//
+// Border
+//
+
+.border         { border: $border-width solid $border-color !important; }
+.border-top     { border-top: $border-width solid $border-color !important; }
+.border-right   { border-right: $border-width solid $border-color !important; }
+.border-bottom  { border-bottom: $border-width solid $border-color !important; }
+.border-left    { border-left: $border-width solid $border-color !important; }
+
+.border-0        { border: 0 !important; }
+.border-top-0    { border-top: 0 !important; }
+.border-right-0  { border-right: 0 !important; }
+.border-bottom-0 { border-bottom: 0 !important; }
+.border-left-0   { border-left: 0 !important; }
+
+@each $color, $value in $theme-colors {
+  .border-#{$color} {
+    border-color: $value !important;
+  }
+}
+
+.border-white {
+  border-color: $white !important;
+}
+
+//
+// Border-radius
+//
+
+.rounded-sm {
+  border-radius: $border-radius-sm !important;
+}
+
+.rounded {
+  border-radius: $border-radius !important;
+}
+
+.rounded-top {
+  border-top-left-radius: $border-radius !important;
+  border-top-right-radius: $border-radius !important;
+}
+
+.rounded-right {
+  border-top-right-radius: $border-radius !important;
+  border-bottom-right-radius: $border-radius !important;
+}
+
+.rounded-bottom {
+  border-bottom-right-radius: $border-radius !important;
+  border-bottom-left-radius: $border-radius !important;
+}
+
+.rounded-left {
+  border-top-left-radius: $border-radius !important;
+  border-bottom-left-radius: $border-radius !important;
+}
+
+.rounded-lg {
+  border-radius: $border-radius-lg !important;
+}
+
+.rounded-circle {
+  border-radius: 50% !important;
+}
+
+.rounded-pill {
+  border-radius: $rounded-pill !important;
+}
+
+.rounded-0 {
+  border-radius: 0 !important;
+}
diff --git a/css/bootstrap/utilities/_clearfix.scss b/css/bootstrap/utilities/_clearfix.scss
new file mode 100644 (file)
index 0000000..e92522a
--- /dev/null
@@ -0,0 +1,3 @@
+.clearfix {
+  @include clearfix();
+}
diff --git a/css/bootstrap/utilities/_display.scss b/css/bootstrap/utilities/_display.scss
new file mode 100644 (file)
index 0000000..1303679
--- /dev/null
@@ -0,0 +1,26 @@
+// stylelint-disable declaration-no-important
+
+//
+// Utilities for common `display` values
+//
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    @each $value in $displays {
+      .d#{$infix}-#{$value} { display: $value !important; }
+    }
+  }
+}
+
+
+//
+// Utilities for toggling `display` in print
+//
+
+@media print {
+  @each $value in $displays {
+    .d-print-#{$value} { display: $value !important; }
+  }
+}
diff --git a/css/bootstrap/utilities/_embed.scss b/css/bootstrap/utilities/_embed.scss
new file mode 100644 (file)
index 0000000..e37465e
--- /dev/null
@@ -0,0 +1,39 @@
+// Credit: Nicolas Gallagher and SUIT CSS.
+
+.embed-responsive {
+  position: relative;
+  display: block;
+  width: 100%;
+  padding: 0;
+  overflow: hidden;
+
+  &::before {
+    display: block;
+    content: "";
+  }
+
+  .embed-responsive-item,
+  iframe,
+  embed,
+  object,
+  video {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    border: 0;
+  }
+}
+
+@each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios {
+  $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1);
+  $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2);
+
+  .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {
+    &::before {
+      padding-top: percentage(divide($embed-responsive-aspect-ratio-y, $embed-responsive-aspect-ratio-x));
+    }
+  }
+}
diff --git a/css/bootstrap/utilities/_flex.scss b/css/bootstrap/utilities/_flex.scss
new file mode 100644 (file)
index 0000000..3d4266e
--- /dev/null
@@ -0,0 +1,51 @@
+// stylelint-disable declaration-no-important
+
+// Flex variation
+//
+// Custom styles for additional flex alignment options.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .flex#{$infix}-row            { flex-direction: row !important; }
+    .flex#{$infix}-column         { flex-direction: column !important; }
+    .flex#{$infix}-row-reverse    { flex-direction: row-reverse !important; }
+    .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }
+
+    .flex#{$infix}-wrap         { flex-wrap: wrap !important; }
+    .flex#{$infix}-nowrap       { flex-wrap: nowrap !important; }
+    .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
+    .flex#{$infix}-fill         { flex: 1 1 auto !important; }
+    .flex#{$infix}-grow-0       { flex-grow: 0 !important; }
+    .flex#{$infix}-grow-1       { flex-grow: 1 !important; }
+    .flex#{$infix}-shrink-0     { flex-shrink: 0 !important; }
+    .flex#{$infix}-shrink-1     { flex-shrink: 1 !important; }
+
+    .justify-content#{$infix}-start   { justify-content: flex-start !important; }
+    .justify-content#{$infix}-end     { justify-content: flex-end !important; }
+    .justify-content#{$infix}-center  { justify-content: center !important; }
+    .justify-content#{$infix}-between { justify-content: space-between !important; }
+    .justify-content#{$infix}-around  { justify-content: space-around !important; }
+
+    .align-items#{$infix}-start    { align-items: flex-start !important; }
+    .align-items#{$infix}-end      { align-items: flex-end !important; }
+    .align-items#{$infix}-center   { align-items: center !important; }
+    .align-items#{$infix}-baseline { align-items: baseline !important; }
+    .align-items#{$infix}-stretch  { align-items: stretch !important; }
+
+    .align-content#{$infix}-start   { align-content: flex-start !important; }
+    .align-content#{$infix}-end     { align-content: flex-end !important; }
+    .align-content#{$infix}-center  { align-content: center !important; }
+    .align-content#{$infix}-between { align-content: space-between !important; }
+    .align-content#{$infix}-around  { align-content: space-around !important; }
+    .align-content#{$infix}-stretch { align-content: stretch !important; }
+
+    .align-self#{$infix}-auto     { align-self: auto !important; }
+    .align-self#{$infix}-start    { align-self: flex-start !important; }
+    .align-self#{$infix}-end      { align-self: flex-end !important; }
+    .align-self#{$infix}-center   { align-self: center !important; }
+    .align-self#{$infix}-baseline { align-self: baseline !important; }
+    .align-self#{$infix}-stretch  { align-self: stretch !important; }
+  }
+}
diff --git a/css/bootstrap/utilities/_float.scss b/css/bootstrap/utilities/_float.scss
new file mode 100644 (file)
index 0000000..5425084
--- /dev/null
@@ -0,0 +1,11 @@
+// stylelint-disable declaration-no-important
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .float#{$infix}-left  { float: left !important; }
+    .float#{$infix}-right { float: right !important; }
+    .float#{$infix}-none  { float: none !important; }
+  }
+}
diff --git a/css/bootstrap/utilities/_interactions.scss b/css/bootstrap/utilities/_interactions.scss
new file mode 100644 (file)
index 0000000..cc75fc2
--- /dev/null
@@ -0,0 +1,5 @@
+// stylelint-disable declaration-no-important
+
+@each $value in $user-selects {
+  .user-select-#{$value} { user-select: $value !important; }
+}
diff --git a/css/bootstrap/utilities/_overflow.scss b/css/bootstrap/utilities/_overflow.scss
new file mode 100644 (file)
index 0000000..8326c30
--- /dev/null
@@ -0,0 +1,5 @@
+// stylelint-disable declaration-no-important
+
+@each $value in $overflows {
+  .overflow-#{$value} { overflow: $value !important; }
+}
diff --git a/css/bootstrap/utilities/_position.scss b/css/bootstrap/utilities/_position.scss
new file mode 100644 (file)
index 0000000..cdf6c11
--- /dev/null
@@ -0,0 +1,32 @@
+// stylelint-disable declaration-no-important
+
+// Common values
+@each $position in $positions {
+  .position-#{$position} { position: $position !important; }
+}
+
+// Shorthand
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: $zindex-fixed;
+}
+
+.fixed-bottom {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: $zindex-fixed;
+}
+
+.sticky-top {
+  @supports (position: sticky) {
+    position: sticky;
+    top: 0;
+    z-index: $zindex-sticky;
+  }
+}
diff --git a/css/bootstrap/utilities/_screenreaders.scss b/css/bootstrap/utilities/_screenreaders.scss
new file mode 100644 (file)
index 0000000..9f26fde
--- /dev/null
@@ -0,0 +1,11 @@
+//
+// Screenreaders
+//
+
+.sr-only {
+  @include sr-only();
+}
+
+.sr-only-focusable {
+  @include sr-only-focusable();
+}
diff --git a/css/bootstrap/utilities/_shadows.scss b/css/bootstrap/utilities/_shadows.scss
new file mode 100644 (file)
index 0000000..f5d03fc
--- /dev/null
@@ -0,0 +1,6 @@
+// stylelint-disable declaration-no-important
+
+.shadow-sm { box-shadow: $box-shadow-sm !important; }
+.shadow { box-shadow: $box-shadow !important; }
+.shadow-lg { box-shadow: $box-shadow-lg !important; }
+.shadow-none { box-shadow: none !important; }
diff --git a/css/bootstrap/utilities/_sizing.scss b/css/bootstrap/utilities/_sizing.scss
new file mode 100644 (file)
index 0000000..f376488
--- /dev/null
@@ -0,0 +1,20 @@
+// stylelint-disable declaration-no-important
+
+// Width and height
+
+@each $prop, $abbrev in (width: w, height: h) {
+  @each $size, $length in $sizes {
+    .#{$abbrev}-#{$size} { #{$prop}: $length !important; }
+  }
+}
+
+.mw-100 { max-width: 100% !important; }
+.mh-100 { max-height: 100% !important; }
+
+// Viewport additional helpers
+
+.min-vw-100 { min-width: 100vw !important; }
+.min-vh-100 { min-height: 100vh !important; }
+
+.vw-100 { width: 100vw !important; }
+.vh-100 { height: 100vh !important; }
diff --git a/css/bootstrap/utilities/_spacing.scss b/css/bootstrap/utilities/_spacing.scss
new file mode 100644 (file)
index 0000000..3e98581
--- /dev/null
@@ -0,0 +1,73 @@
+// stylelint-disable declaration-no-important
+
+// Margin and Padding
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    @each $prop, $abbrev in (margin: m, padding: p) {
+      @each $size, $length in $spacers {
+        .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
+        .#{$abbrev}t#{$infix}-#{$size},
+        .#{$abbrev}y#{$infix}-#{$size} {
+          #{$prop}-top: $length !important;
+        }
+        .#{$abbrev}r#{$infix}-#{$size},
+        .#{$abbrev}x#{$infix}-#{$size} {
+          #{$prop}-right: $length !important;
+        }
+        .#{$abbrev}b#{$infix}-#{$size},
+        .#{$abbrev}y#{$infix}-#{$size} {
+          #{$prop}-bottom: $length !important;
+        }
+        .#{$abbrev}l#{$infix}-#{$size},
+        .#{$abbrev}x#{$infix}-#{$size} {
+          #{$prop}-left: $length !important;
+        }
+      }
+    }
+
+    // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
+    @each $size, $length in $spacers {
+      @if "#{$size}" != "0" {
+        .m#{$infix}-n#{$size} { margin: -$length !important; }
+        .mt#{$infix}-n#{$size},
+        .my#{$infix}-n#{$size} {
+          margin-top: -$length !important;
+        }
+        .mr#{$infix}-n#{$size},
+        .mx#{$infix}-n#{$size} {
+          margin-right: -$length !important;
+        }
+        .mb#{$infix}-n#{$size},
+        .my#{$infix}-n#{$size} {
+          margin-bottom: -$length !important;
+        }
+        .ml#{$infix}-n#{$size},
+        .mx#{$infix}-n#{$size} {
+          margin-left: -$length !important;
+        }
+      }
+    }
+
+    // Some special margin utils
+    .m#{$infix}-auto { margin: auto !important; }
+    .mt#{$infix}-auto,
+    .my#{$infix}-auto {
+      margin-top: auto !important;
+    }
+    .mr#{$infix}-auto,
+    .mx#{$infix}-auto {
+      margin-right: auto !important;
+    }
+    .mb#{$infix}-auto,
+    .my#{$infix}-auto {
+      margin-bottom: auto !important;
+    }
+    .ml#{$infix}-auto,
+    .mx#{$infix}-auto {
+      margin-left: auto !important;
+    }
+  }
+}
diff --git a/css/bootstrap/utilities/_stretched-link.scss b/css/bootstrap/utilities/_stretched-link.scss
new file mode 100644 (file)
index 0000000..fb5066b
--- /dev/null
@@ -0,0 +1,19 @@
+//
+// Stretched link
+//
+
+.stretched-link {
+  &::after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1;
+    // Just in case `pointer-events: none` is set on a parent
+    pointer-events: auto;
+    content: "";
+    // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color
+    background-color: rgba(0, 0, 0, 0);
+  }
+}
diff --git a/css/bootstrap/utilities/_text.scss b/css/bootstrap/utilities/_text.scss
new file mode 100644 (file)
index 0000000..3a9f83e
--- /dev/null
@@ -0,0 +1,72 @@
+// stylelint-disable declaration-no-important
+
+//
+// Text
+//
+
+.text-monospace { font-family: $font-family-monospace !important; }
+
+// Alignment
+
+.text-justify  { text-align: justify !important; }
+.text-wrap     { white-space: normal !important; }
+.text-nowrap   { white-space: nowrap !important; }
+.text-truncate { @include text-truncate(); }
+
+// Responsive alignment
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .text#{$infix}-left   { text-align: left !important; }
+    .text#{$infix}-right  { text-align: right !important; }
+    .text#{$infix}-center { text-align: center !important; }
+  }
+}
+
+// Transformation
+
+.text-lowercase  { text-transform: lowercase !important; }
+.text-uppercase  { text-transform: uppercase !important; }
+.text-capitalize { text-transform: capitalize !important; }
+
+// Weight and italics
+
+.font-weight-light   { font-weight: $font-weight-light !important; }
+.font-weight-lighter { font-weight: $font-weight-lighter !important; }
+.font-weight-normal  { font-weight: $font-weight-normal !important; }
+.font-weight-bold    { font-weight: $font-weight-bold !important; }
+.font-weight-bolder  { font-weight: $font-weight-bolder !important; }
+.font-italic         { font-style: italic !important; }
+
+// Contextual colors
+
+.text-white { color: $white !important; }
+
+@each $color, $value in $theme-colors {
+  @include text-emphasis-variant(".text-#{$color}", $value, true);
+}
+
+.text-body { color: $body-color !important; }
+.text-muted { color: $text-muted !important; }
+
+.text-black-50 { color: rgba($black, .5) !important; }
+.text-white-50 { color: rgba($white, .5) !important; }
+
+// Misc
+
+.text-hide {
+  @include text-hide($ignore-warning: true);
+}
+
+.text-decoration-none { text-decoration: none !important; }
+
+.text-break {
+  word-break: break-word !important; // Deprecated, but avoids issues with flex containers
+  word-wrap: break-word !important; // Used instead of `overflow-wrap` for IE & Edge Legacy
+}
+
+// Reset
+
+.text-reset { color: inherit !important; }
diff --git a/css/bootstrap/utilities/_visibility.scss b/css/bootstrap/utilities/_visibility.scss
new file mode 100644 (file)
index 0000000..7756c3b
--- /dev/null
@@ -0,0 +1,13 @@
+// stylelint-disable declaration-no-important
+
+//
+// Visibility utilities
+//
+
+.visible {
+  visibility: visible !important;
+}
+
+.invisible {
+  visibility: hidden !important;
+}
diff --git a/css/bootstrap/vendor/_rfs.scss b/css/bootstrap/vendor/_rfs.scss
new file mode 100644 (file)
index 0000000..e453f44
--- /dev/null
@@ -0,0 +1,228 @@
+// stylelint-disable property-blacklist, scss/dollar-variable-default
+
+// SCSS RFS mixin
+//
+// Automated responsive font sizes
+//
+// Licensed under MIT (https://github.com/twbs/rfs/blob/v8.x/LICENSE)
+
+// Configuration
+
+// Base font size
+$rfs-base-font-size: 1.25rem !default;
+$rfs-font-size-unit: rem !default;
+
+@if $rfs-font-size-unit != rem and $rfs-font-size-unit != px {
+  @error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
+}
+
+// Breakpoint at where font-size starts decreasing if screen width is smaller
+$rfs-breakpoint: 1200px !default;
+$rfs-breakpoint-unit: px !default;
+
+@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
+  @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
+}
+
+// Resize font size based on screen height and width
+$rfs-two-dimensional: false !default;
+
+// Factor of decrease
+$rfs-factor: 10 !default;
+
+@if type-of($rfs-factor) != "number" or $rfs-factor <= 1 {
+  @error "`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.";
+}
+
+// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
+$rfs-class: false !default;
+
+// 1 rem = $rfs-rem-value px
+$rfs-rem-value: 16 !default;
+
+// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
+$rfs-safari-iframe-resize-bug-fix: false !default;
+
+// Disable RFS by setting $enable-responsive-font-sizes to false
+$enable-responsive-font-sizes: true !default;
+
+// Cache $rfs-base-font-size unit
+$rfs-base-font-size-unit: unit($rfs-base-font-size);
+
+@function divide($dividend, $divisor, $precision: 10) {
+  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+  $dividend: abs($dividend);
+  $divisor: abs($divisor);
+  @if $dividend == 0 {
+    @return 0;
+  }
+  @if $divisor == 0 {
+    @error "Cannot divide by 0";
+  }
+  $remainder: $dividend;
+  $result: 0;
+  $factor: 10;
+  @while ($remainder > 0 and $precision >= 0) {
+    $quotient: 0;
+    @while ($remainder >= $divisor) {
+      $remainder: $remainder - $divisor;
+      $quotient: $quotient + 1;
+    }
+    $result: $result * 10 + $quotient;
+    $factor: $factor * .1;
+    $remainder: $remainder * 10;
+    $precision: $precision - 1;
+    @if ($precision < 0 and $remainder >= $divisor * 5) {
+      $result: $result + 1;
+    }
+  }
+  $result: $result * $factor * $sign;
+  $dividend-unit: unit($dividend);
+  $divisor-unit: unit($divisor);
+  $unit-map: (
+    "px": 1px,
+    "rem": 1rem,
+    "em": 1em,
+    "%": 1%
+  );
+  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+    $result: $result * map-get($unit-map, $dividend-unit);
+  }
+  @return $result;
+}
+
+// Remove px-unit from $rfs-base-font-size for calculations
+@if $rfs-base-font-size-unit == "px" {
+  $rfs-base-font-size: divide($rfs-base-font-size, $rfs-base-font-size * 0 + 1);
+}
+@else if $rfs-base-font-size-unit == "rem" {
+  $rfs-base-font-size: divide($rfs-base-font-size, divide($rfs-base-font-size * 0 + 1, $rfs-rem-value));
+}
+
+// Cache $rfs-breakpoint unit to prevent multiple calls
+$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
+
+// Remove unit from $rfs-breakpoint for calculations
+@if $rfs-breakpoint-unit-cache == "px" {
+  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);
+}
+@else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" {
+  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));
+}
+
+// Internal mixin that adds disable classes to the selector if needed.
+@mixin _rfs-disable-class {
+  @if $rfs-class == "disable" {
+    // Adding an extra class increases specificity, which prevents the media query to override the font size
+    &,
+    .disable-responsive-font-size &,
+    &.disable-responsive-font-size {
+      @content;
+    }
+  }
+  @else {
+    @content;
+  }
+}
+
+// Internal mixin that adds enable classes to the selector if needed.
+@mixin _rfs-enable-class {
+  @if $rfs-class == "enable" {
+    .enable-responsive-font-size &,
+    &.enable-responsive-font-size {
+      @content;
+    }
+  }
+  @else {
+    @content;
+  }
+}
+
+// Internal mixin used to determine which media query needs to be used
+@mixin _rfs-media-query($mq-value) {
+  @if $rfs-two-dimensional {
+    @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
+      @content;
+    }
+  }
+  @else {
+    @media (max-width: #{$mq-value}) {
+      @content;
+    }
+  }
+}
+
+// Responsive font size mixin
+@mixin rfs($fs, $important: false) {
+  // Cache $fs unit
+  $fs-unit: if(type-of($fs) == "number", unit($fs), false);
+
+  // Add !important suffix if needed
+  $rfs-suffix: if($important, " !important", "");
+
+  // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+  @if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
+    font-size: #{$fs}#{$rfs-suffix};
+  }
+  @else {
+    // Remove unit from $fs for calculations
+    @if $fs-unit == "px" {
+      $fs: divide($fs, $fs * 0 + 1);
+    }
+    @else if $fs-unit == "rem" {
+      $fs: divide($fs, divide($fs * 0 + 1, $rfs-rem-value));
+    }
+
+    // Set default font size
+    $rfs-static: if($rfs-font-size-unit == rem, #{divide($fs, $rfs-rem-value)}rem, #{$fs}px);
+
+    // Only add the media query if the font size is bigger than the minimum font size
+    @if $fs <= $rfs-base-font-size or not $enable-responsive-font-sizes {
+      font-size: #{$rfs-static}#{$rfs-suffix};
+    }
+    @else {
+      // Calculate the minimum font size for $fs
+      $fs-min: $rfs-base-font-size + divide($fs - $rfs-base-font-size, $rfs-factor);
+
+      // Calculate difference between $fs and the minimum font size
+      $fs-diff: $fs - $fs-min;
+
+      // Base font-size formatting
+      $min-width: if($rfs-font-size-unit == rem, #{divide($fs-min, $rfs-rem-value)}rem, #{$fs-min}px);
+
+      // Use `vmin` if two-dimensional is enabled
+      $variable-unit: if($rfs-two-dimensional, vmin, vw);
+
+      // Calculate the variable width between 0 and $rfs-breakpoint
+      $variable-width: #{divide($fs-diff * 100, $rfs-breakpoint)}#{$variable-unit};
+
+      // Set the calculated font-size
+      $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};
+
+      // Breakpoint formatting
+      $mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});
+
+      @include _rfs-disable-class {
+        font-size: #{$rfs-static}#{$rfs-suffix};
+      }
+
+      @include _rfs-media-query($mq-value) {
+        @include _rfs-enable-class {
+          font-size: $rfs-fluid;
+        }
+
+        // Include safari iframe resize fix if needed
+        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
+      }
+    }
+  }
+}
+
+// The font-size & responsive-font-size mixins use RFS to rescale the font size
+@mixin font-size($fs, $important: false) {
+  @include rfs($fs, $important);
+}
+
+@mixin responsive-font-size($fs, $important: false) {
+  @include rfs($fs, $important);
+}
diff --git a/ids.sh b/ids.sh
new file mode 100755 (executable)
index 0000000..1b3d62e
--- /dev/null
+++ b/ids.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+sed -e 's/#/\n#/g' |sed -ne "s/#'\?\([A-Za-z0-9_-]\+\).*/\1/p" |LC_ALL=C sort |uniq >temp.a
+sed -e 's/-/_/g' <temp.a >temp.b
+paste temp.a temp.b |sed -e "s/\(.*\)\t\(.*\)/let id_\2 = document.getElementById('\1')/"
+rm -f temp.a temp.b
diff --git a/images/by-sa_3.0_88x31.png b/images/by-sa_3.0_88x31.png
new file mode 100644 (file)
index 0000000..e76aeff
Binary files /dev/null and b/images/by-sa_3.0_88x31.png differ
diff --git a/index.html.jst b/index.html.jst
new file mode 100644 (file)
index 0000000..c806094
--- /dev/null
@@ -0,0 +1,136 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      h4 {'About Dr. Nick'}
+
+      p {'The NDCODE project founder is Dr. Nick Downing. Nick has always been a technical guy, and he is usually found building something—unless he is spending quality time with his wife Laura or parenting a large brood of children. Nick enjoys working with his hands, and equally his mind.'}
+
+      p {'Nick’s background is in embedded software and hardware. This shows in his focus on writing efficient code that uses minimal resources. Nick was creating networked point-of-sale systems long before the Internet became a thing. Since then he has become an Internet of Things (IoT) expert.'}
+
+      p {'As well as his successful industry career, Nick holds a PhD in Computer Science from the University of Melbourne, with specializations in Pure Mathematics and Business. Nick is an effective teacher and has taught all aspects of Computer Science to subsequent students at the University.'}
+
+      h4 {'About this site'}
+
+      p {'This site serves as a repository for open-source projects. Smaller projects will show up as a blog entry, and for longer-term projects this expands to a project page, tutorials, online documentation and so forth. The project would also welcome any feedback or contributions you may have.'}
+
+      p {
+        'Public '
+        tt {'git'}
+        ' source code repositories are at '
+        a(href="https://git.ndcode.org") {'https://git.ndcode.org'}
+        ', and eventually there will be an '
+        tt {'apt'}
+        ' repository there too, for the binary versions of packages. Project pages contain the explanations of what things are, with links to the appropriate repositories. We host our own repositories because we are opposed to the idea of for-profit companies leveraging our work to bring valuable traffic to their sites.'
+      }
+
+      h4 {'How to contribute'}
+
+      p {
+        'For a casual contribution please send patches to nick â€˜at’ ndcode â€˜dot’ org. We can give '
+        tt {'git'}
+        ' write access to trusted contributors. Note that we do not use Pull Requests (PRs). Besides being excessively bureaucratic, the use of PRs tends to shift the responsibility onto a contributor to push his/her contribution through the system. We see this as a shared responsibility, not just the contributor’s.'
+      }
+
+      h4 {'Copyright and licensing'}
+
+      p {'The projects on this site are open source and they are mainly MIT licensed or GPLv2’d. Generally, projects you would use in production will be MIT licensed, to give you complete freedom. Projects you would use in development, such as code generators, are more likely to be GPLv2’d, but with appropriate exceptions to allow unrestricted use of the resulting output. We prefer GPLv2 over GPLv3 as we don’t support the anti-Tivoization clauses.'}
+
+      p {'We do not charge individual licensing fees for use of the software. We prefer that you use the software unrestricted, and promote its use within and outside your organization. This policy allows us to benefit from consulting fees if you require further development or customization, usually on a non-exclusive basis so that all users can make use of any improvements. Our fees are very reasonable and we encourage you to make contact if you have any requirements.'}
+
+      h4 {'About our coding style'}
+
+      p {'We emphasize precision and we generally don’t leave unhandled cases in our logic, unless they are clearly flagged by assertions and such like. (In a long career as a professional programmer, one encounters Murphy’s Law on a regular basis). We also prefer consistency in matters such as identifier naming, indenting and so on.'}
+
+      p {'Having said that, our emphasis is on productivity rather than dotting i’s and crossing t’s. So the code can be rough until we decide to polish it up for release. As an example, we would implement a language compiler with nearly all language features as stubs that crash the compiler with an assertion message. This allows us to get up and running and handling trivial test cases almost immediately. A feedback process then tells us which further language features are needed. Esoteric features are never added, since those assertion messages are not triggered. We rely on your input in such cases.'}
+
+      p {'Commenting in the code is sparse at best. This is because our emphasis is on refactoring the code until it solves a problem appropriately, according to our evolving understanding of the problem. To spend inordinate effort writing up the interfaces and algorithms used in the code is a waste of time when the code is experimental. And once it has stabilized there is rarely a reason to revisit it, unless we’re adding documentation comments for the API reference.'}
+
+      p {
+        'Because we use few comments (only in cases where the logic relies on subtleties that won’t be obvious later), we tend to write code that is self-documenting. This means writing out longer code for operations that can be accomplished with language tricks ('
+        tt {'p == NULL'}
+        ' rather than '
+        tt {'!p'}
+        '), and avoiding abbreviations in most places. Of course if we find we cannot understand our code later, we will comment it once we have figured it out again!'
+      }
+
+      h4 {'About our testing style'}
+
+      p {
+        'We refer the reader to an excellent article, â€˜'
+        a(href="https://techbeacon.com/app-dev-testing/no-1-unit-testing-best-practice-stop-doing-it") {'The No. 1 unit testing best practice: Stop doing it'}
+        '’. We do in fact use tests, and they are often to be found in a '
+        tt {'/test'}
+        ' or '
+        tt {'/tests'}
+        ' directory in our repositories, but the tests are only what we needed during development to exercise the code, and they might not be maintained once we are satisfied that the code works.'
+      }
+
+      p {'The problem with unit tests that are required to be maintained (usually as a matter of company policy) is similar to the issue with extensive code commenting: You end up investing too much into the current way the code works, making it difficult to change it when you see a better way. Thus tests should be kept more general (End-to-End or E2E testing is best) and used as a means to an end rather than an end in themselves.'}
+
+      h4 {'Why these projects?'}
+
+      p {'The project members are established professional programmers who have spent their lives working in salaried work or for clients. And in this environment, we have to fit into established practices. This usually means unneeded complexity (for example, the use of many middleware layers just to achieve a simple task) and wasted time dealing with internal processes (code review, unit testing and the like). In our free time, we are free to seek a better way.'}
+
+      p {'The NDCODE project aims to challenge established practices in the areas we touch. The goal is to find new ways of doing things that improve efficiency, as measured by how much we can achieve or build in a limited time. By making a frank assessment of what works and what doesn’t work, both in the existing method and in our experimental new methods, we are able to find a synergy, but paradigms are not upended overnight, and the process takes tedious experimentation.'}
+
+      p {
+        'We tend to use established tools such as '
+        tt {'Linux'}
+        ', '
+        tt {'Python'}
+        ', '
+        tt {'node.js'}
+        ', and the extensive infrastructure that comes along with them, as a platform for our experiments. Whilst these tools are far from perfect, they provide significant power for rapidly prototyping solutions to problems. However, we try not to add a lot of middleware layers like '
+        tt {'Docker'}
+        ', '
+        tt {'MySQL'}
+        ', '
+        tt {'nginx'}
+        ', and the like. Not only do they add complexity, but they work in very prescribed ways and the rest of a system tends to become designed around them. Thus, complexity gets ossified and rusted on over time.'
+      }
+
+      p {
+        'Some of the specific projects on this site are:'
+        ul {
+          li {
+            'The JST project—allows to build websites efficiently.'
+          }
+          li {
+            'The '
+            span.serif {'Ï€'}
+            'tree project—allows to build languages efficiently.'
+          }
+          li {
+            'The LogJSON project—allows to build databases efficiently.'
+          }
+        }
+        'In keeping with our mission, these projects are rather lean compared with competing offerings such as, say, '
+        tt {'Django'}
+        ', '
+        tt {'ANTLR'}
+        ', '
+        tt {'MySQL'}
+        '. Whilst we have nothing against the competing tools, and they may be a good fit for certain applications, they may also be more complex, more fragile and/or have a steeper learning curve. Our philosophy is â€˜less is more’.'
+      }
+
+      p {
+        'There are also some associated Computer Aided Software Engineering (CASE) tools that we built as examples, such as the '
+        tt {'c_to_python'}
+        ' tool which (roughly) translates C code into Python using the '
+        span.serif {'Ï€'}
+        'tree framework. Having custom-built CASE tools can really turbocharge a refactoring project and make the impossible possible. CASE tools can also make it possible to develop larger and more ambitious projects efficiently.'
+      }
+    },
+    // scripts
+    async _out => {}
+  )
+}
diff --git a/js/utils.js.min b/js/utils.js.min
new file mode 100644 (file)
index 0000000..89a90e1
--- /dev/null
@@ -0,0 +1,99 @@
+Mutex = class {
+  constructor() {
+    this.done = null
+  }
+
+  async acquire() {
+    while (this.done !== null)
+      await this.done.promise
+    let done = {}
+    done.promise = new Promise(
+      (resolve, reject) => {done.resolve = resolve}
+    )
+    this.done = done
+  }
+
+  release() {
+    let done = this.done
+    assert(done !== null)
+    this.done = null
+    done.resolve()
+  }
+}
+
+BinarySemaphore = class {
+  constructor(value) {
+    if (value)
+      this.done = null
+    else {
+      let done = {}
+      done.promise = new Promise(
+        (resolve, reject) => {done.resolve = resolve}
+      )
+      this.done = done
+    }
+  }
+
+  async acquire() {
+    while (this.done !== null)
+      await this.done.promise
+    let done = {}
+    done.promise = new Promise(
+      (resolve, reject) => {done.resolve = resolve}
+    )
+    this.done = done
+  }
+
+  try_acquire() {
+    if (this.done !== null)
+      return false
+    let done = {}
+    done.promise = new Promise(
+      (resolve, reject) => {done.resolve = resolve}
+    )
+    this.done = done
+    return true
+  }
+
+  release() {
+    let done = this.done
+    if (done === null)
+      return false
+    this.done = null
+    done.resolve()
+    return true
+  }
+}
+
+Problem = class {
+  constructor(title, detail, status) {
+    this.title = title
+    this.detail = detail
+    this.status = status
+  }
+
+  // note: Javascript errors return status 400 (Bad request) in the client
+  // version of Problem, 500 (Internal server error) in the server version
+  static from(error) {
+    return (
+      error instanceof Problem ?
+        error :
+        new Problem(
+          'Bad request',
+          (error.stack || error.message),
+          400
+        )
+    )
+  }
+}
+
+api_call = async (endpoint, ...args) => {
+  let response = await fetch(
+    endpoint,
+    {method: 'POST', body: JSON.stringify(args)}
+  )
+  let result = await response.json()
+  if (!response.ok)
+    throw new Problem(result.title, result.detail, result.status)
+  return result
+}
diff --git a/link.sh b/link.sh
new file mode 100755 (executable)
index 0000000..8eec3cd
--- /dev/null
+++ b/link.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+rm -rf node_modules package-lock.json
+npm link @ndcode/jst_server @ndcode/logjson @ndcode/zettair_cache
+npm install
+npm link
diff --git a/my_account/index.html.jst b/my_account/index.html.jst
new file mode 100644 (file)
index 0000000..11b72f1
--- /dev/null
@@ -0,0 +1,541 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_arrow_circle_left = await env.site.get_min_svg('/_svg/fa_arrow-circle-left.svg')
+  let fa_cloud_upload_alt = await env.site.get_min_svg('/_svg/fa_cloud-upload-alt.svg')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let fa_redo = await env.site.get_min_svg('/_svg/fa_redo.svg')
+  let fa_trash = await env.site.get_min_svg('/_svg/fa_trash.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_account = await _require('/_lib/get_account.jst')
+  let get_navigation = await _require('/_lib/get_navigation.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload draft details if any
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  let signed_in_as, details, change_details_draft
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+
+    placeholder = await get_placeholder(env, session)
+
+    signed_in_as = await session.get_json('signed_in_as')
+    if (signed_in_as === undefined)
+      details = null
+    else {
+      account = await get_account(root, session)
+      details = {
+        given_names: await account.get_json('given_names'),
+        family_name: await account.get_json('family_name'),
+        contact_me: await account.get_json('contact_me')
+      }
+    }
+
+    change_details_draft = await session.get_json('change_details_draft')
+    if (change_details_draft === undefined || env.now >= change_details_draft.expires)
+      change_details_draft = null
+
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  // cheat a little by ignoring the draft if it matches the original details,
+  // because user might have saved the details and left page before the timeout
+  if (
+    change_details_draft &&
+      change_details_draft.given_names === details.given_names &&
+      change_details_draft.family_name === details.family_name &&
+      change_details_draft.contact_me === details.contact_me
+  )
+    change_details_draft = null
+
+  await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      if (signed_in_as !== undefined) {
+        // signed in
+        p {'Your given names are visible to other users if you comment on our blog. Your email and family name remain private. If your name is one word or does not fit given names/family name pattern, then please enter given names only.'}
+
+        div.accordion#accordion(role="tablist" aria-multiselectable="true") {
+          div.card#card-1 {
+            div.card-header#card-1-heading(role="tab") {
+              a.h5(data-toggle="collapse" data-parent="#accordion" href="#card-1-collapse" aria-expanded="true" aria-controls="card-1-collapse") {
+                'Change details'
+              }
+            }
+            div#card-1-collapse.collapse.show(role="tabpanel" aria-labelledby="card-1-heading" data-parent="#accordion") {
+              div.card-body {
+                form#card-1-form {
+                  div.row {
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="given-names") {'Given names *'}
+                        input.form-control#given-names(type="text" value=change_details_draft ? change_details_draft.given_names : details.given_names placeholder=placeholder.given_names required maxlength=256) {}
+                        div.invalid-feedback {'Please enter a name we can address you by.'}
+                      }
+                    }
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="family-name") {'Family name'}
+                        input.form-control#family-name(type="text" value=change_details_draft ? change_details_draft.family_name : details.family_name placeholder=placeholder.family_name maxlength=256) {}
+                      }
+                    }
+                  }
+                  div.row.mb-3 {
+                    div.col-md-12 {
+                      div.custom-control.custom-checkbox {
+                        if (change_details_draft ? change_details_draft.contact_me : details.contact_me)
+                          input.custom-control-input#contact-me(type="checkbox" checked) {}
+                        else
+                          input.custom-control-input#contact-me(type="checkbox") {}
+                        ' '
+                        label.custom-control-label(for="contact-me") {
+                          'Contact me by email with updates and special offers'
+                        }
+                      }
+                    }
+                  }
+                }
+
+                if (change_details_draft)
+                  button.btn.btn-outline-secondary#card-1-revert(type="button") {
+                    div.icon24-outer.mr-2 {
+                      div.icon24-inner {_out.push(fa_trash)}
+                    }
+                    'Revert'
+                  }
+                else
+                  button.btn.btn-outline-secondary#card-1-revert(type="button" disabled) {
+                    div.icon24-outer.mr-2 {
+                      div.icon24-inner {_out.push(fa_trash)}
+                    }
+                    'Revert'
+                  }
+                if (change_details_draft)
+                  button.btn.btn-success.ml-3#card-1-save(type="button") {
+                    div.icon24-outer.mr-2#card-1-icon {
+                      div.icon24-inner {_out.push(fa_cloud_upload_alt)}
+                    }
+                    div.icon24-outer.mr-2#card-1-tick(hidden) {
+                      div.icon24-inner {_out.push(icon_tick)}
+                    }
+                    div.icon24-outer.mr-2#card-1-cross(hidden) {
+                      div.icon24-inner {_out.push(icon_cross)}
+                    }
+                    div.icon24-outer.mr-2#card-1-spinner(hidden) {
+                      div.icon24-inner {
+                        div.spinner-border.spinner-border-sm(role="status") {}
+                      }
+                    }
+                    'Save'
+                  }
+                else
+                  button.btn.btn-success.ml-3#card-1-save(type="button" disabled) {
+                    div.icon24-outer.mr-2#card-1-icon {
+                      div.icon24-inner {_out.push(fa_cloud_upload_alt)}
+                    }
+                    div.icon24-outer.mr-2#card-1-tick(hidden) {
+                      div.icon24-inner {_out.push(icon_tick)}
+                    }
+                    div.icon24-outer.mr-2#card-1-cross(hidden) {
+                      div.icon24-inner {_out.push(icon_cross)}
+                    }
+                    div.icon24-outer.mr-2#card-1-spinner(hidden) {
+                      div.icon24-inner {
+                        div.spinner-border.spinner-border-sm(role="status") {}
+                      }
+                    }
+                    'Save'
+                  }
+
+                p.'mt-3'.mb-0#card-1-message(hidden) {}
+              }
+            }
+          }
+          div.card#card-2 {
+            div.card-header#card-2-heading(role="tab") {
+              a.h5.collapsed(data-toggle="collapse" data-parent="#accordion" href="#card-2-collapse" aria-expanded="false" aria-controls="card-2-collapse") {
+                'Change password'
+              }
+            }
+            div#card-2-collapse.collapse(role="tabpanel" aria-labelledby="step-2-heading" data-parent="#accordion") {
+              div.card-body {
+                form#card-2-form {
+                  div.row {
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="old-password") {'Old password *'}
+                        input.form-control#old-password(type="password" placeholder="Verify" required minlength=8 maxlength=256) {}
+                        div.invalid-feedback {'Please enter your account\'s password of at least 8 characters.'}
+                      }
+                    }
+                    div.col-md-6 {
+                      div.form-group {
+                        label.form-label(for="new-password") {'New password *'}
+                        input.form-control#'new-password'(type="password" placeholder="Choose" required minlength=8 maxlength=256) {}
+                        div.invalid-feedback {'Please choose a secure password of at least 8 characters.'}
+                      }
+                    }
+                  }
+                }
+
+                button.btn.btn-outline-secondary#card-2-clear(type="button" disabled) {
+                  div.icon24-outer.mr-2 {
+                    div.icon24-inner {_out.push(fa_trash)}
+                  }
+                  'Clear'
+                }
+                button.btn.btn-success.ml-3#card-2-save(type="button" disabled) {
+                  div.icon24-outer.mr-2#card-2-icon {
+                    div.icon24-inner {_out.push(fa_cloud_upload_alt)}
+                  }
+                  div.icon24-outer.mr-2#card-2-tick(hidden) {
+                    div.icon24-inner {_out.push(icon_tick)}
+                  }
+                  div.icon24-outer.mr-2#card-2-cross(hidden) {
+                    div.icon24-inner {_out.push(icon_cross)}
+                  }
+                  div.icon24-outer.mr-2#card-2-spinner(hidden) {
+                    div.icon24-inner {
+                      div.spinner-border.spinner-border-sm(role="status") {}
+                    }
+                  }
+                  'Save'
+                }
+
+                p.'mt-3'.mb-0#card-2-message(hidden) {}
+              }
+            }
+          }
+        }
+
+        p.text-muted.mt-3 {'* These fields are required.'}
+      }
+      else {
+        // signed out
+        p {'For account maintenance, please click on one of the options below.'}
+
+        let transaction = await env.site.database.Transaction()
+        try {
+          let root = await transaction.get()
+          let p = await get_navigation(root, env.component_names)
+          let children = await p.get('children')
+          let menu = await p.get_json('menu')
+  
+          ul.nav.flex-column {
+            for (let i = 0; i < menu.length; ++i) {
+              let name = menu[i]
+              let q = await children.get(name)
+  
+              li.nav-item {
+                a.nav-link(href=`${name}/index.html`) {
+                  table.icon-and-text {
+                    tr {
+                      td {
+                        _out.push(
+                          await env.site.get_min_svg(await q.get_json('icon'))
+                        )
+                      }
+                      td {
+                        span.h2{
+                          `${await q.get_json('title')}`
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+        finally {
+          transaction.rollback()
+        }
+      }
+    },
+    // scripts
+    async _out => {
+      console.log('details', details)
+      script {
+        // this will be called by navbar logic after sign in/out
+        function sign_in_out(status) {
+          window.location.reload()
+          return true // suppresses status/dialog
+        }
+      }
+
+      if (signed_in_as !== undefined) {
+        //script(src="/js/utils.js") {}
+
+        script {
+          document.addEventListener(
+            'DOMContentLoaded',
+            () => {
+              let id_accordion = document.getElementById('accordion')
+              let id_card_1 = document.getElementById('card-1')
+              let id_card_1_collapse = document.getElementById('card-1-collapse')
+              let id_card_1_cross = document.getElementById('card-1-cross')
+              let id_card_1_form = document.getElementById('card-1-form')
+              let id_card_1_heading = document.getElementById('card-1-heading')
+              let id_card_1_icon = document.getElementById('card-1-icon')
+              let id_card_1_message = document.getElementById('card-1-message')
+              let id_card_1_revert = document.getElementById('card-1-revert')
+              let id_card_1_save = document.getElementById('card-1-save')
+              let id_card_1_spinner = document.getElementById('card-1-spinner')
+              let id_card_1_tick = document.getElementById('card-1-tick')
+              let id_card_2 = document.getElementById('card-2')
+              let id_card_2_clear = document.getElementById('card-2-clear')
+              let id_card_2_collapse = document.getElementById('card-2-collapse')
+              let id_card_2_cross = document.getElementById('card-2-cross')
+              let id_card_2_form = document.getElementById('card-2-form')
+              let id_card_2_heading = document.getElementById('card-2-heading')
+              let id_card_2_icon = document.getElementById('card-2-icon')
+              let id_card_2_message = document.getElementById('card-2-message')
+              let id_card_2_save = document.getElementById('card-2-save')
+              let id_card_2_spinner = document.getElementById('card-2-spinner')
+              let id_card_2_tick = document.getElementById('card-2-tick')
+              let id_contact_me = document.getElementById('contact-me')
+              let id_family_name = document.getElementById('family-name')
+              let id_given_names = document.getElementById('given-names')
+              let id_new_password = document.getElementById('new-password')
+              let id_old_password = document.getElementById('old-password')
+
+              // pass original values in from server side
+              let orig_details = ${JSON.stringify(details)}
+
+              // change details card
+              let input_semaphore = new BinarySemaphore(false)
+              ;(
+                async () => {
+                  while (true) {
+                    await input_semaphore.acquire()
+                    await new Promise(resolve => setTimeout(resolve, 3000))
+                    input_semaphore.try_acquire()
+                    await api_call(
+                      '/api/account/change_details/set_draft.json',
+                      id_given_names.value === orig_details.given_names &&
+                        id_family_name.value === orig_details.family_name &&
+                        id_contact_me.checked === orig_details.contact_me ?
+                        null :
+                        {
+                          given_names: id_given_names.value.slice(0, 256),
+                          family_name: id_family_name.value.slice(0, 256),
+                          contact_me: id_contact_me.checked
+                        }
+                    )
+                  }
+                }
+              )() // ignore returned promise (start thread)
+
+              let card_1_edited = () => {
+                input_semaphore.release()
+
+                let disabled =
+                  id_given_names.value === orig_details.given_names &&
+                    id_family_name.value === orig_details.family_name &&
+                    id_contact_me.checked === orig_details.contact_me
+                id_card_1_revert.disabled = disabled
+                id_card_1_save.disabled = disabled
+                id_card_1_icon.hidden = false
+                id_card_1_tick.hidden = true
+                id_card_1_cross.hidden = true
+                id_card_1_spinner.hidden = true
+                id_card_1_message.hidden = true
+              }
+
+              id_given_names.addEventListener('input', card_1_edited)
+              id_family_name.addEventListener('input', card_1_edited)
+              id_contact_me.addEventListener('input', card_1_edited)
+
+              id_card_1_revert.addEventListener(
+                'click',
+                async () => {
+                  id_given_names.value = orig_details.given_names
+                  id_family_name.value = orig_details.family_name
+                  id_contact_me.checked = orig_details.contact_me
+
+                  // cut down form of card_1_edited() logic:
+                  input_semaphore.release()
+
+                  id_card_1_revert.disabled = true
+                  id_card_1_save.disabled = true
+                  id_card_1_icon.hidden = false
+                  id_card_1_tick.hidden = true
+                  id_card_1_cross.hidden = true
+                  id_card_1_spinner.hidden = true
+                  id_card_1_message.hidden = true
+                }
+              )
+
+              id_card_1_save.addEventListener(
+                'click',
+                async () => {
+                  id_card_1_icon.hidden = false
+                  id_card_1_tick.hidden = true
+                  id_card_1_cross.hidden = true
+                  id_card_1_spinner.hidden = true
+                  // the below causes an ugly flicker, so just keep the message
+                  //id_card_1_message.hidden = true
+
+                  if (!id_card_1_form.checkValidity()) {
+                    id_card_1_form.classList.add('was-validated');
+
+                    id_card_1_icon.hidden = true
+                    id_card_1_cross.hidden = false
+                    return
+                  }
+                  id_card_1_form.classList.remove('was-validated');
+
+                  id_card_1_icon.hidden = true
+                  id_card_1_spinner.hidden = false
+                  try {
+                    await api_call(
+                      '/api/account/change_details/set.json',
+                      {
+                        given_names: id_given_names.value.slice(0, 256),
+                        family_name: id_family_name.value.slice(0, 256),
+                        contact_me: id_contact_me.checked
+                      }
+                    )
+                  }
+                  catch (error) {
+                    let problem = Problem.from(error)
+
+                    id_card_1_cross.hidden = false
+                    id_card_1_spinner.hidden = true
+
+                    id_card_1_message.textContent = problem.detail
+                    //id_card_1_message.classList.remove('text-success')
+                    id_card_1_message.classList.add('text-danger')
+                    id_card_1_message.hidden = false
+                    return
+                  }
+                  id_card_1_tick.hidden = false
+                  id_card_1_spinner.hidden = true
+
+                  orig_details.given_names = id_given_names.value
+                  orig_details.family_name = id_family_name.value
+                  orig_details.contact_me = id_contact_me.checked
+
+                  // cut down form of card_1_edited() logic:
+                  input_semaphore.release()
+
+                  id_card_1_revert.disabled = true
+                  id_card_1_save.disabled = true
+                  //id_card_1_icon.hidden = false
+                  //id_card_1_tick.hidden = true
+                  //id_card_1_cross.hidden = true
+                  //id_card_1_spinner.hidden = true
+                  id_card_1_message.hidden = true
+                }
+              )
+
+              // change password card
+              let card_2_edited = () => {
+                let disabled =
+                  id_old_password.value.length === 0 &&
+                    id_new_password.value.length === 0
+                id_card_2_clear.disabled = disabled
+                id_card_2_save.disabled = disabled
+                id_card_2_icon.hidden = false
+                id_card_2_tick.hidden = true
+                id_card_2_cross.hidden = true
+                id_card_2_spinner.hidden = true
+                id_card_2_message.hidden = true
+              }
+
+              id_old_password.addEventListener('input', card_2_edited)
+              id_new_password.addEventListener('input', card_2_edited)
+
+              id_card_2_clear.addEventListener(
+                'click',
+                async () => {
+                  id_old_password.value = ''
+                  id_new_password.value = ''
+
+                  // cut down form of card_2_edited() logic:
+                  id_card_2_clear.disabled = true
+                  id_card_2_save.disabled = true
+                  id_card_2_icon.hidden = false
+                  id_card_2_tick.hidden = true
+                  id_card_2_cross.hidden = true
+                  id_card_2_spinner.hidden = true
+                  id_card_2_message.hidden = true
+                }
+              )
+
+              id_card_2_save.addEventListener(
+                'click',
+                async () => {
+                  id_card_2_icon.hidden = false
+                  id_card_2_tick.hidden = true
+                  id_card_2_cross.hidden = true
+                  id_card_2_spinner.hidden = true
+                  // the below causes an ugly flicker, so just keep the message
+                  //id_card_2_message.hidden = true
+
+                  if (!id_card_2_form.checkValidity()) {
+                    id_card_2_form.classList.add('was-validated');
+
+                    id_card_2_icon.hidden = true
+                    id_card_2_cross.hidden = false
+                    return
+                  }
+                  id_card_2_form.classList.remove('was-validated');
+
+                  id_card_2_icon.hidden = true
+                  id_card_2_spinner.hidden = false
+                  try {
+                    await api_call(
+                      '/api/account/change_password.json',
+                      id_old_password.value.slice(0, 256),
+                      id_new_password.value.slice(0, 256)
+                    )
+                  }
+                  catch (error) {
+                    let problem = Problem.from(error)
+
+                    id_card_2_cross.hidden = false
+                    id_card_2_spinner.hidden = true
+
+                    id_card_2_message.textContent = problem.detail
+                    //id_card_2_message.classList.remove('text-success')
+                    id_card_2_message.classList.add('text-danger')
+                    id_card_2_message.hidden = false
+                    return
+                  }
+                  id_card_2_tick.hidden = false
+                  id_card_2_spinner.hidden = true
+
+                  id_old_password.value = ''
+                  id_new_password.value = ''
+
+                  // cut down form of card_2_edited() logic:
+                  id_card_2_clear.disabled = true
+                  id_card_2_save.disabled = true
+                  //id_card_2_icon.hidden = false
+                  //id_card_2_tick.hidden = true
+                  //id_card_2_cross.hidden = true
+                  //id_card_2_spinner.hidden = true
+                  id_card_2_message.hidden = true
+                }
+              )
+            }
+          )
+        }
+      }
+    }
+  )
+}
diff --git a/my_account/password_reset/index.html.jst b/my_account/password_reset/index.html.jst
new file mode 100644 (file)
index 0000000..e06abce
--- /dev/null
@@ -0,0 +1,191 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload placeholder
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+    placeholder = await get_placeholder(env, session)
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  // preload URL details if any
+  let email =
+    Object.prototype.hasOwnProperty.call(
+      env.parsed_url.query,
+      'email'
+    ) ?
+      decodeURIComponent(env.parsed_url.query.email) :
+      ''
+
+   await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'To reset your password, please enter new details below and we will send you a password reset link.'}
+
+      form#form {
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="email") {'Email *'}
+              input.form-control#email(type="email" value=email placeholder=placeholder.email required="required" maxlength=256) {}
+              div.invalid-feedback {'Please enter your account\'s email address.'}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="new-password") {'New password *'}
+              input.form-control#new-password(type="password" placeholder="Choose" required="required" minlength=8 maxlength=256) {}
+              div.invalid-feedback {'Please choose a secure password of at least 8 characters.'}
+            }
+          }
+        }
+      }
+
+      if (email.length)
+        button.btn.btn-success#password-reset(type="button") {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_envelope)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Password reset'
+        }
+      else
+        button.btn.btn-success#password-reset(type="button" disabled) {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_envelope)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Password reset'
+        }
+
+      p.'mt-3'.mb-0#message(hidden) {}
+
+      p.text-muted.mt-3 {'* These fields are required.'}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_cross = document.getElementById('cross')
+            let id_email = document.getElementById('email')
+            let id_form = document.getElementById('form')
+            let id_icon = document.getElementById('icon')
+            let id_message = document.getElementById('message')
+            let id_new_password = document.getElementById('new-password')
+            let id_password_reset = document.getElementById('password-reset')
+            let id_spinner = document.getElementById('spinner')
+            let id_tick = document.getElementById('tick')
+
+            let edited = () => {
+              id_password_reset.disabled =
+                id_email.value.length === 0 &&
+                  id_new_password.value.length === 0
+              id_icon.hidden = false
+              id_tick.hidden = true
+              id_cross.hidden = true
+              id_spinner.hidden = true
+              id_message.hidden = true
+            }
+
+            id_email.addEventListener('input', edited)
+            id_new_password.addEventListener('input', edited)
+
+            id_password_reset.addEventListener(
+              'click',
+              async () => {
+                id_icon.hidden = false
+                id_tick.hidden = true
+                id_cross.hidden = true
+                id_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_message.hidden = true
+
+                if (!id_form.checkValidity()) {
+                  id_form.classList.add('was-validated');
+
+                  id_icon.hidden = true
+                  id_cross.hidden = false
+                  return
+                }
+                id_form.classList.remove('was-validated');
+
+                let email = id_email.value.slice(0, 256).toLowerCase()
+                let new_password = id_new_password.value.slice(0, 256)
+
+                id_icon.hidden = true
+                id_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/account/password_reset.json',
+                    email,
+                    new_password
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_cross.hidden = false
+                  id_spinner.hidden = true
+
+                  id_message.textContent = problem.detail
+                  //id_message.classList.remove('text-success')
+                  id_message.classList.add('text-danger')
+                  id_message.hidden = false
+                  return
+                }
+                id_tick.hidden = false
+                id_spinner.hidden = true
+                id_message.textContent = `Password reset link has been sent to "${email}". Please check your email for next steps.`
+                //id_message.classList.add('text-success')
+                id_message.classList.remove('text-danger')
+                id_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/my_account/send_verification_email/index.html.jst b/my_account/send_verification_email/index.html.jst
new file mode 100644 (file)
index 0000000..935071e
--- /dev/null
@@ -0,0 +1,180 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload placeholder
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+    placeholder = await get_placeholder(env, session)
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  // preload URL details if any
+  let email =
+    Object.prototype.hasOwnProperty.call(
+      env.parsed_url.query,
+      'email'
+    ) ?
+      decodeURIComponent(env.parsed_url.query.email) :
+      ''
+
+   await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'Your email is not yet verified. Check your email for next steps, or re-send the verification email below.'}
+
+      form#form {
+        div.row.align-items-center {
+          div.col-md-1 {
+            label.form-label.mb-3(for="email") {'Email'}
+          }
+          div.col-md-6 {
+            div.form-group {
+              input.form-control#email(type="email" value=email placeholder=placeholder.email required="required" maxlength=256) {}
+              div.invalid-feedback {'Please enter your account\'s email address.'}
+            }
+          }
+          div.col-md-5 {
+            if (email.length)
+              button.btn.btn-success.mb-3#send-verification-email(type="button") {
+                div.icon24-outer.mr-2#icon {
+                  div.icon24-inner {_out.push(fa_envelope)}
+                }
+                div.icon24-outer.mr-2#tick(hidden) {
+                  div.icon24-inner {_out.push(icon_tick)}
+                }
+                div.icon24-outer.mr-2#cross(hidden) {
+                  div.icon24-inner {_out.push(icon_cross)}
+                }
+                div.icon24-outer.mr-2#spinner(hidden) {
+                  div.icon24-inner {
+                    div.spinner-border.spinner-border-sm(role="status") {}
+                  }
+                }
+                'Send verification email'
+              }
+            else
+              button.btn.btn-success#send-verification-email(type="button" disabled) {
+                div.icon24-outer.mr-2#icon {
+                  div.icon24-inner {_out.push(fa_envelope)}
+                }
+                div.icon24-outer.mr-2#tick(hidden) {
+                  div.icon24-inner {_out.push(icon_tick)}
+                }
+                div.icon24-outer.mr-2#cross(hidden) {
+                  div.icon24-inner {_out.push(icon_cross)}
+                }
+                div.icon24-outer.mr-2#spinner(hidden) {
+                  div.icon24-inner {
+                    div.spinner-border.spinner-border-sm(role="status") {}
+                  }
+                }
+                'Send verification email'
+              }
+          }
+        }
+      }
+
+      p#message(hidden) {}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_cross = document.getElementById('cross')
+            let id_email = document.getElementById('email')
+            let id_form = document.getElementById('form')
+            let id_icon = document.getElementById('icon')
+            let id_message = document.getElementById('message')
+            let id_send_verification_email = document.getElementById('send-verification-email')
+            let id_spinner = document.getElementById('spinner')
+            let id_tick = document.getElementById('tick')
+
+            let edited = () => {
+              id_send_verification_email.disabled =
+                id_email.value.length === 0
+              id_icon.hidden = false
+              id_tick.hidden = true
+              id_cross.hidden = true
+              id_spinner.hidden = true
+              id_message.hidden = true
+            }
+
+            id_email.addEventListener('input', edited)
+
+            id_send_verification_email.addEventListener(
+              'click',
+              async () => {
+                id_icon.hidden = false
+                id_tick.hidden = true
+                id_cross.hidden = true
+                id_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_message.hidden = true
+
+                if (!id_form.checkValidity()) {
+                  id_form.classList.add('was-validated');
+
+                  id_icon.hidden = true
+                  id_cross.hidden = false
+                  return
+                }
+                id_form.classList.remove('was-validated');
+
+                let email = id_email.value.slice(0, 256).toLowerCase()
+
+                id_icon.hidden = true
+                id_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/account/send_email_verification_link.json',
+                    email
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_cross.hidden = false
+                  id_spinner.hidden = true
+
+                  id_message.textContent = problem.detail
+                  //id_message.classList.remove('text-success')
+                  id_message.classList.add('text-danger')
+                  id_message.hidden = false
+                  return
+                }
+                id_tick.hidden = false
+                id_spinner.hidden = true
+                id_message.textContent = `Email verification link has been sent to "${email}". Please check your email for next steps.`
+                //id_message.classList.add('text-success')
+                id_message.classList.remove('text-danger')
+                id_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/my_account/sign_up/index.html.jst b/my_account/sign_up/index.html.jst
new file mode 100644 (file)
index 0000000..27eb438
--- /dev/null
@@ -0,0 +1,445 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_arrow_circle_left = await env.site.get_min_svg('/_svg/fa_arrow-circle-left.svg')
+  let fa_envelope = await env.site.get_min_svg('/_svg/fa_envelope.svg')
+  let fa_redo = await env.site.get_min_svg('/_svg/fa_redo.svg')
+  let fa_user_plus = await env.site.get_min_svg('/_svg/fa_user-plus.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload draft details if any
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  let sign_up_draft
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+
+    placeholder = await get_placeholder(env, session)
+
+    sign_up_draft = await session.get_json('sign_up_draft')
+    if (sign_up_draft === undefined || env.now >= sign_up_draft.expires)
+      sign_up_draft = null
+
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'Signing up allows you to leave comments on our blog and receive communications from us.'}
+
+      p {'Your given names are visible to other users if you comment on our blog. Your email and family name remain private. If your name is one word or does not fit given names/family name pattern, then please enter given names only.'}
+
+      div.accordion#accordion(role="tablist" aria-multiselectable="true") {
+        div.card#card-1 {
+          div.card-header#card-1-heading(role="tab") {
+            div.icon32-outer.mr-2#card-1-tick(hidden) {
+              div.icon32-inner {_out.push(icon_tick)}
+            }
+            div.icon32-outer.mr-2#card-1-cross(hidden) {
+              div.icon32-inner {_out.push(icon_cross)}
+            }
+            div.icon32-outer.mr-2#card-1-spinner(hidden) {
+              div.icon32-inner {
+                div.spinner-border(role="status") {}
+              }
+            }
+            a.h5(data-toggle="collapse" data-parent="#accordion" href="#card-1-collapse" aria-expanded="true" aria-controls="card-1-collapse") {
+              'Create account'
+            }
+          }
+          div#card-1-collapse.collapse.show(role="tabpanel" aria-labelledby="card-1-heading" data-parent="#accordion") {
+            div.card-body {
+              form#form {
+                div.row {
+                  div.col-md-6 {
+                    div.form-group {
+                      label.form-label(for="given-names") {'Given names *'}
+                      input.form-control#given-names(type="text" value=sign_up_draft ? sign_up_draft.given_names : '' placeholder=placeholder.given_names required maxlength=256) {}
+                      div.invalid-feedback {'Please enter a name we can address you by.'}
+                    }
+                  }
+                  div.col-md-6 {
+                    div.form-group {
+                      label.form-label(for="family-name") {'Family name'}
+                      input.form-control#family-name(type="text" value=sign_up_draft ? sign_up_draft.family_name : '' placeholder=placeholder.family_name maxlength=256) {}
+                    }
+                  }
+                }
+                div.row {
+                  div.col-md-6 {
+                    div.form-group {
+                      label.form-label(for="email") {'Email *'}
+                      input.form-control#email(type="email" value=sign_up_draft ? sign_up_draft.email : '' placeholder=placeholder.email required maxlength=256) {}
+                      div.invalid-feedback {'Please enter an email address we can contact you on.'}
+                    }
+                  }
+                  div.col-md-6 {
+                    div.form-group {
+                      label.form-label(for="password") {'Password *'}
+                      input.form-control#password(type="password" placeholder="Choose" required minlength=8 maxlength=256) {}
+                      div.invalid-feedback {'Please choose a secure password of at least 8 characters.'}
+                    }
+                  }
+                }
+                div.row/*.align-items-center*/ {
+                  div.col-md-6 {
+                    div.custom-control.custom-checkbox {
+                      if (sign_up_draft === null || sign_up_draft.contact_me)
+                        input.custom-control-input#contact-me(type="checkbox" checked) {}
+                      else
+                        input.custom-control-input#contact-me(type="checkbox") {}
+                      ' '
+                      label.custom-control-label(for="contact-me") {
+                        'Contact me by email with updates and special offers'
+                      }
+                    }
+                  }
+                  div.col-md-6 {
+                    div.form-group {
+                      label.form-label(for="verification-code") {'Verification code *'}
+                      div.mb-3 {
+                        img#verification-image(src="/api/verification_image.png?seq=0" width="300px" height="150px") {}
+                      }
+                      div.input-group#valid-workaround(style="width: 300px;") {
+                        input.form-control#verification-code(type="text" placeholder='xxxxxx' required minlength=6 maxlength=6) {}
+                        div.input-group-append {
+                          button.btn.btn-outline-secondary#'card-1-new'(type="button") {
+                            div.icon24-outer.mr-2 {
+                              div.icon24-inner {_out.push(fa_redo)}
+                            }
+                            'New'
+                          }
+                        }
+                      }
+                      div.invalid-feedback(for="verification-code") {'Please enter the 6 characters from the verification image above. We need this to protect us from spam and bots.'}
+                    }
+                  }
+                }
+              }
+
+              if (sign_up_draft)
+                button.btn.btn-success#card-1-create-account(type="button") {
+                  div.icon24-outer.mr-2 {
+                    div.icon24-inner {_out.push(fa_user_plus)}
+                  }
+                  'Create account'
+                }
+              else
+                button.btn.btn-success#card-1-create-account(type="button" disabled) {
+                  div.icon24-outer.mr-2 {
+                    div.icon24-inner {_out.push(fa_user_plus)}
+                  }
+                  'Create account'
+                }
+
+              p.'mt-3'.mb-0#card-1-message(hidden) {}
+            }
+          }
+        }
+        div.card#card-2 {
+          div.card-header#card-2-heading(role="tab") {
+            div.icon32-outer.mr-2#card-2-tick(hidden) {
+              div.icon32-inner {_out.push(icon_tick)}
+            }
+            div.icon32-outer.mr-2#card-2-cross(hidden) {
+              div.icon32-inner {_out.push(icon_cross)}
+            }
+            div.icon32-outer.mr-2#card-2-spinner(hidden) {
+              div.icon32-inner {
+                div.spinner-border(role="status") {}
+              }
+            }
+            a.h5.collapsed(data-toggle="collapse" data-parent="#accordion" href="#card-2-collapse" aria-expanded="false" aria-controls="card-2-collapse") {
+              'Send email verification link'
+            }
+          }
+          div#card-2-collapse.collapse(role="tabpanel" aria-labelledby="card-2-heading" data-parent="#accordion") {
+            div.card-body {
+              button.btn.btn-outline-secondary#card-2-back(type="button") {
+                div.icon24-outer.mr-2 {
+                  div.icon24-inner {_out.push(fa_arrow_circle_left)}
+                }
+                'Back'
+              }
+              button.btn.btn-outline-secondary.ml-3#card-2-resend-email(type="button" disabled) {
+                div.icon24-outer.mr-2 {
+                  div.icon24-inner {_out.push(fa_envelope)}
+                }
+                'Re-send email'
+              }
+
+              p.'mt-3'.mb-0#card-2-message(hidden) {}
+            }
+          }
+        }
+      }
+
+      p.text-muted.mt-3 {'* These fields are required.'}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_accordion = document.getElementById('accordion')
+            let id_card_1 = document.getElementById('card-1')
+            let id_card_1_collapse = document.getElementById('card-1-collapse')
+            let id_card_1_create_account = document.getElementById('card-1-create-account')
+            let id_card_1_cross = document.getElementById('card-1-cross')
+            let id_card_1_heading = document.getElementById('card-1-heading')
+            let id_card_1_message = document.getElementById('card-1-message')
+            let id_card_1_new = document.getElementById('card-1-new')
+            let id_card_1_spinner = document.getElementById('card-1-spinner')
+            let id_card_1_tick = document.getElementById('card-1-tick')
+            let id_card_2 = document.getElementById('card-2')
+            let id_card_2_back = document.getElementById('card-2-back')
+            let id_card_2_collapse = document.getElementById('card-2-collapse')
+            let id_card_2_cross = document.getElementById('card-2-cross')
+            let id_card_2_heading = document.getElementById('card-2-heading')
+            let id_card_2_message = document.getElementById('card-2-message')
+            let id_card_2_resend_email = document.getElementById('card-2-resend-email')
+            let id_card_2_spinner = document.getElementById('card-2-spinner')
+            let id_card_2_tick = document.getElementById('card-2-tick')
+            let id_contact_me = document.getElementById('contact-me')
+            let id_email = document.getElementById('email')
+            let id_family_name = document.getElementById('family-name')
+            let id_form = document.getElementById('form')
+            let id_given_names = document.getElementById('given-names')
+            let id_password = document.getElementById('password')
+            let id_valid_workaround = document.getElementById('valid-workaround')
+            let id_verification_code = document.getElementById('verification-code')
+            let id_verification_image = document.getElementById('verification-image')
+
+            let input_semaphore = new BinarySemaphore(false)
+            ;(
+              async () => {
+                while (true) {
+                  await input_semaphore.acquire()
+                  await new Promise(resolve => setTimeout(resolve, 3000))
+                  input_semaphore.try_acquire()
+                  await api_call(
+                    '/api/account/sign_up/set_draft.json',
+                    id_given_names.value.length === 0 &&
+                      id_family_name.value.length === 0 &&
+                      id_contact_me.checked &&
+                      id_email.value.length === 0 ?
+                      null :
+                      {
+                        email: id_email.value.slice(0, 256).toLowerCase(),
+                        given_names: id_given_names.value.slice(0, 256),
+                        family_name: id_family_name.value.slice(0, 256),
+                        contact_me: id_contact_me.checked
+                      }
+                  )
+                }
+              }
+            )() // ignore returned promise (start thread)
+
+            let card_1_edited = in_draft => {
+              if (in_draft)
+                input_semaphore.release()
+
+              id_card_1_create_account.disabled =
+                id_given_names.value.length === 0 &&
+                  id_family_name.value.length === 0 &&
+                  id_contact_me.checked &&
+                  id_email.value.length === 0 &&
+                  id_password.value.length === 0 &&
+                  id_verification_code.value.length === 0
+              id_card_1_tick.hidden = true
+              id_card_1_cross.hidden = true
+              id_card_1_spinner.hidden = true
+              id_card_1_message.hidden = true
+
+              id_card_2_resend_email.disabled = true
+              id_card_2_tick.hidden = true
+              id_card_2_cross.hidden = true
+              id_card_2_spinner.hidden = true
+              id_card_2_message.hidden = true
+            }
+
+            let details
+            let card_1 = async () => {
+              id_card_1_tick.hidden = true
+              id_card_1_cross.hidden = true
+              id_card_1_spinner.hidden = true
+              // the below causes an ugly flicker, so just keep the message
+              //id_card_1_message.hidden = true
+
+              if (!id_form.checkValidity()) {
+                // workaround for https://github.com/twbs/bootstrap/issues/23454
+                if (id_verification_code.validity.valid) {
+                  id_valid_workaround.classList.add('is-valid')
+                  id_valid_workaround.classList.remove('is-invalid')
+                }
+                else {
+                  id_valid_workaround.classList.remove('is-valid')
+                  id_valid_workaround.classList.add('is-invalid')
+                }
+                id_form.classList.add('was-validated');
+
+                id_card_1_cross.hidden = false
+                return false
+              }
+              // workaround for https://github.com/twbs/bootstrap/issues/23454
+              id_valid_workaround.classList.remove('is-valid')
+              id_valid_workaround.classList.remove('is-invalid')
+              id_form.classList.remove('was-validated');
+
+              details = {
+                email: id_email.value.slice(0, 256).toLowerCase(),
+                given_names: id_given_names.value.slice(0, 256),
+                family_name: id_family_name.value.slice(0, 256),
+                password: id_password.value.slice(0, 256),
+                contact_me: id_contact_me.checked
+              }
+
+              id_card_1_spinner.hidden = false
+              try {
+                await api_call(
+                  '/api/account/sign_up/create_account.json',
+                  id_verification_code.value.slice(0, 6).toLowerCase(),
+                  details
+                )
+              }
+              catch (error) {
+                let problem = Problem.from(error)
+
+                id_card_1_cross.hidden = false
+                id_card_1_spinner.hidden = true
+
+                id_card_1_message.textContent = problem.detail
+                //id_card_1_message.classList.remove('text-success')
+                id_card_1_message.classList.add('text-danger')
+                id_card_1_message.hidden = false
+
+                $('#card-1-collapse').collapse('show')
+                return false
+              }
+              id_card_1_tick.hidden = false
+              id_card_1_spinner.hidden = true
+              id_card_1_message.textContent = `Your account with email "${details.email}" has been created.`
+              //id_card_1_message.classList.add('text-success')
+              id_card_1_message.classList.remove('text-danger')
+              id_card_1_message.hidden = false
+
+              id_card_2_resend_email.disabled = false
+              id_card_2.scrollIntoView()
+              return true
+            }
+
+            let card_2 = async () => {
+              id_card_2_tick.hidden = true
+              id_card_2_cross.hidden = true
+              id_card_2_spinner.hidden = false
+              // the below causes an ugly flicker, so just keep the message
+              //id_card_2_message.hidden = true
+
+              try {
+                await api_call(
+                  '/api/account/send_email_verification_link.json',
+                  details.email
+                )
+              }
+              catch (error) {
+                let problem = Problem.from(error)
+
+                id_card_2_cross.hidden = false
+                id_card_2_spinner.hidden = true
+
+                id_card_2_message.textContent = problem.detail
+                //id_card_2_message.classList.remove('text-success')
+                id_card_2_message.classList.add('text-danger')
+                id_card_2_message.hidden = false
+
+                $('#card-2-collapse').collapse('show')
+                return false
+              }
+              id_card_2_tick.hidden = false
+              id_card_2_spinner.hidden = true
+
+              id_card_2_message.textContent = `Email verification link has been sent to "${details.email}". Please check your email for next steps.`
+              //id_card_2_message.classList.add('text-success')
+              id_card_2_message.classList.remove('text-danger')
+              id_card_2_message.hidden = false
+              return true
+            }
+
+            id_given_names.addEventListener(
+              'input',
+              () => {card_1_edited(true)}
+            )
+            id_family_name.addEventListener(
+              'input',
+              () => {card_1_edited(true)}
+            )
+            id_email.addEventListener(
+              'input',
+              () => {card_1_edited(true)}
+            )
+            id_password.addEventListener(
+              'input',
+              () => {card_1_edited(false)}
+            )
+            id_contact_me.addEventListener(
+              'input',
+              () => {card_1_edited(true)}
+            )
+            id_verification_code.addEventListener(
+              'input',
+              () => {card_1_edited(false)}
+            )
+
+            let image_seq = 1
+            id_card_1_new.addEventListener(
+              'click',
+              () => {
+                id_verification_image.src =
+                  `/api/verification_image.png?seq=${image_seq}`
+                image_seq += 1
+              }
+            )
+
+            id_card_1_create_account.addEventListener(
+              'click',
+              async () => {
+                if (await card_1() && await card_2())
+                  $('#card-2-collapse').collapse('show')
+              }
+            )
+
+            id_card_2_back.addEventListener(
+              'click',
+              () => {$('#card-1-collapse').collapse('show')}
+            )
+
+            id_card_2_resend_email.addEventListener(
+              'click',
+              async () => {
+                if (await card_2())
+                  $('#card-2-collapse').collapse('show')
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/my_account/verify_email/index.html.jst b/my_account/verify_email/index.html.jst
new file mode 100644 (file)
index 0000000..e618f33
--- /dev/null
@@ -0,0 +1,198 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_user_check = await env.site.get_min_svg('/_svg/fa_user-check.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload placeholder
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+    placeholder = await get_placeholder(env, session)
+    transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  // preload URL details if any
+  let email =
+    Object.prototype.hasOwnProperty.call(
+      env.parsed_url.query,
+      'email'
+    ) ?
+      decodeURIComponent(env.parsed_url.query.email) :
+      ''
+  let link_code =
+    Object.prototype.hasOwnProperty.call(
+      env.parsed_url.query,
+      'link_code'
+    ) ?
+      decodeURIComponent(env.parsed_url.query.link_code) :
+      ''
+
+   await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'You will need to verify your email address via an emailed link before you can sign in to your account.'}
+
+      form#form {
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="email") {'Email *'}
+              input.form-control#email(type="email" value=email placeholder=placeholder.email required="required" maxlength=256) {}
+              div.invalid-feedback {'Please enter your account\'s email address.'}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="link-code") {'Link code *'}
+              input.form-control#link-code(type="text" value=link_code placeholder="00000000000000000000000000000000" required="required" minlength=32 maxlength=32) {}
+              div.invalid-feedback {'Please enter the 32-character code from the link we have emailed to you.'}
+            }
+          }
+        }
+      }
+
+      if (email.length || details.length)
+        button.btn.btn-success#verify-email(type="button") {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_user_check)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Verify email'
+        }
+      else
+        button.btn.btn-success#verify-email(type="button" disabled) {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_user_check)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Verify email'
+        }
+
+      p.'mt-3'.mb-0#message(hidden) {}
+
+      p.text-muted.mt-3 {'* These fields are required.'}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_cross = document.getElementById('cross')
+            let id_email = document.getElementById('email')
+            let id_form = document.getElementById('form')
+            let id_icon = document.getElementById('icon')
+            let id_link_code = document.getElementById('link-code')
+            let id_message = document.getElementById('message')
+            let id_spinner = document.getElementById('spinner')
+            let id_tick = document.getElementById('tick')
+            let id_verify_email = document.getElementById('verify-email')
+
+            let edited = () => {
+              id_verify_email.disabled =
+                id_email.value.length === 0 &&
+                  id_link_code.value.length === 0
+              id_icon.hidden = false
+              id_tick.hidden = true
+              id_cross.hidden = true
+              id_spinner.hidden = true
+              id_message.hidden = true
+            }
+
+            id_email.addEventListener('input', edited)
+            id_link_code.addEventListener('input', edited)
+
+            id_verify_email.addEventListener(
+              'click',
+              async () => {
+                id_icon.hidden = false
+                id_tick.hidden = true
+                id_cross.hidden = true
+                id_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_message.hidden = true
+
+                if (!id_form.checkValidity()) {
+                  id_form.classList.add('was-validated');
+
+                  id_icon.hidden = true
+                  id_cross.hidden = false
+                  return
+                }
+                id_form.classList.remove('was-validated');
+
+                let email = id_email.value.slice(0, 256).toLowerCase()
+                let link_code = id_link_code.value.slice(0, 32)
+
+                id_icon.hidden = true
+                id_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/account/verify_email.json',
+                    email,
+                    link_code
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_cross.hidden = false
+                  id_spinner.hidden = true
+
+                  id_message.textContent = problem.detail
+                  //id_message.classList.remove('text-success')
+                  id_message.classList.add('text-danger')
+                  id_message.hidden = false
+                  return
+                }
+                id_tick.hidden = false
+                id_spinner.hidden = true
+                id_message.textContent = `Your email "${email}" has been verified. You can now sign in.`
+                //id_message.classList.add('text-success')
+                id_message.classList.remove('text-danger')
+                id_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/my_account/verify_password/index.html.jst b/my_account/verify_password/index.html.jst
new file mode 100644 (file)
index 0000000..7b42eb1
--- /dev/null
@@ -0,0 +1,198 @@
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let fa_user_check = await env.site.get_min_svg('/_svg/fa_user-check.svg')
+  let get_placeholder = await _require('/_lib/get_placeholder.jst')
+  let get_session = await _require('/_lib/get_session.jst')
+  let icon_cross = await env.site.get_min_svg('/_svg/icon_cross.svg')
+  let icon_tick = await env.site.get_min_svg('/_svg/icon_tick.svg')
+  let navbar = await _require('/_lib/navbar.jst')
+
+  // preload placeholder
+  let transaction = await env.site.database.Transaction()
+  let placeholder
+  try {
+    let root = await transaction.get()
+    let session = await get_session(env, root)
+    placeholder = await get_placeholder(env, session)
+    await transaction.commit()
+  }
+  catch (error) {
+    transaction.rollback()
+    throw error
+  }
+
+  // preload URL details if any
+  let email =
+    Object.prototype.hasOwnProperty.call(
+      env.parsed_url.query,
+      'email'
+    ) ?
+      decodeURIComponent(env.parsed_url.query.email) :
+      ''
+  let link_code =
+    Object.prototype.hasOwnProperty.call(
+      env.parsed_url.query,
+      'link_code'
+    ) ?
+      decodeURIComponent(env.parsed_url.query.link_code) :
+      ''
+
+   await navbar(
+    env,
+    // head
+    async _out => {},
+    // body
+    async _out => {
+      await breadcrumbs(env, _out)
+
+      p {'You will need to verify your new password via an emailed link before you can use it to sign in to your account.'}
+
+      form#form {
+        div.row {
+          div.col-md-6 {
+            div.form-group {
+             label.form-label(for="email") {'Email *'}
+              input.form-control#email(type="email" value=email placeholder=placeholder.email required="required" maxlength=256) {}
+              div.invalid-feedback {'Please enter your account\'s email address.'}
+            }
+          }
+          div.col-md-6 {
+            div.form-group {
+              label.form-label(for="link-code") {'Link code *'}
+              input.form-control#link-code(type="text" value=link_code placeholder="00000000000000000000000000000000" required="required" minlength=32 maxlength=32) {}
+              div.invalid-feedback {'Please enter the 32-character code from the link we have emailed to you.'}
+            }
+          }
+        }
+      }
+
+      if (email.length || details.length)
+        button.btn.btn-success#verify-password(type="button") {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_user_check)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Verify password'
+        }
+      else
+        button.btn.btn-success#verify-password(type="button" disabled) {
+          div.icon24-outer.mr-2#icon {
+            div.icon24-inner {_out.push(fa_user_check)}
+          }
+          div.icon24-outer.mr-2#tick(hidden) {
+            div.icon24-inner {_out.push(icon_tick)}
+          }
+          div.icon24-outer.mr-2#cross(hidden) {
+            div.icon24-inner {_out.push(icon_cross)}
+          }
+          div.icon24-outer.mr-2#spinner(hidden) {
+            div.icon24-inner {
+              div.spinner-border.spinner-border-sm(role="status") {}
+            }
+          }
+          'Verify password'
+        }
+
+      p.'mt-3'.mb-0#message(hidden) {}
+
+      p.text-muted.mt-3 {'* These fields are required.'}
+    },
+    // scripts
+    async _out => {
+      //script(src="/js/utils.js") {}
+
+      script {
+        document.addEventListener(
+          'DOMContentLoaded',
+          () => {
+            let id_cross = document.getElementById('cross')
+            let id_email = document.getElementById('email')
+            let id_form = document.getElementById('form')
+            let id_icon = document.getElementById('icon')
+            let id_link_code = document.getElementById('link-code')
+            let id_message = document.getElementById('message')
+            let id_spinner = document.getElementById('spinner')
+            let id_tick = document.getElementById('tick')
+            let id_verify_password = document.getElementById('verify-password')
+
+            let edited = () => {
+              id_verify_password.disabled =
+                id_email.value.length === 0 &&
+                  id_link_code.value.length === 0
+              id_icon.hidden = false
+              id_tick.hidden = true
+              id_cross.hidden = true
+              id_spinner.hidden = true
+              id_message.hidden = true
+            }
+
+            id_email.addEventListener('input', edited)
+            id_link_code.addEventListener('input', edited)
+
+            id_verify_password.addEventListener(
+              'click',
+              async () => {
+                id_icon.hidden = false
+                id_tick.hidden = true
+                id_cross.hidden = true
+                id_spinner.hidden = true
+                // the below causes an ugly flicker, so just keep the message
+                //id_message.hidden = true
+
+                if (!id_form.checkValidity()) {
+                  id_form.classList.add('was-validated');
+
+                  id_icon.hidden = true
+                  id_cross.hidden = false
+                  return
+                }
+                id_form.classList.remove('was-validated');
+
+                let email = id_email.value.slice(0, 256).toLowerCase()
+                let link_code = id_link_code.value.slice(0, 32)
+
+                id_icon.hidden = true
+                id_spinner.hidden = false
+                try {
+                  await api_call(
+                    '/api/account/verify_password.json',
+                    email,
+                    link_code
+                  )
+                }
+                catch (error) {
+                  let problem = Problem.from(error)
+
+                  id_cross.hidden = false
+                  id_spinner.hidden = true
+
+                  id_message.textContent = problem.detail
+                  //id_message.classList.remove('text-success')
+                  id_message.classList.add('text-danger')
+                  id_message.hidden = false
+                  return
+                }
+                id_tick.hidden = false
+                id_spinner.hidden = true
+                id_message.textContent = `New password for "${email}" has been verified. You can now sign in.`
+                //id_message.classList.add('text-success')
+                id_message.classList.remove('text-danger')
+                id_message.hidden = false
+              }
+            )
+          }
+        )
+      }
+    }
+  )
+}
diff --git a/package.json b/package.json
new file mode 100644 (file)
index 0000000..4792a60
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "name": "@ndcode/ndcode_site",
+  "version": "0.0.1",
+  "description": "Example website using JavaScript Template system",
+  "directories": {},
+  "dependencies": {
+    "@ndcode/jst_server": "^0.1.0",
+    "@ndcode/logjson": "^0.1.0",
+    "@ndcode/zettair_cache": "^0.1.0",
+    "captchagen": "^1.2.0",
+    "cookie": "^0.3.1",
+    "nodemailer": "^6.7.2",
+    "querystring": "^0.2.0",
+    "stream-buffers": "^3.0.2",
+    "xdate": "^0.8.2"
+  },
+  "scripts": {},
+  "author": "Nick Downing",
+  "license": "CC-BY-SA-3.0"
+}
diff --git a/search/index.html.jst b/search/index.html.jst
new file mode 100644 (file)
index 0000000..a066789
--- /dev/null
@@ -0,0 +1,89 @@
+let assert = require('assert')
+let querystring = require('querystring')
+
+return async env => {
+  let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
+  let navbar = await _require('/_lib/navbar.jst')
+  let zet_site = await env.site.get_zettair('/_zet/site')
+
+  let query = env.parsed_url.query.query
+  let first = parseInt(env.parsed_url.query.first || '0')
+  let search = zet_site.search(query, first, 10)
+  console.log(
+    `${env.parsed_url.host} search "${query}" first ${first} results ${search.results.length} total results ${search.total_results}`
+  )
+
+  await navbar(
+    env,
+    async _out => {},
+    async _out => {
+      async function breadcrumbs_str(pathname) {
+        assert(pathname.slice(0, 1) === '/')
+
+        // find names of path components
+        console.log('pathname', pathname)
+        let components = ['Home']
+        for (let i = 1, j; (j = pathname.indexOf('/', i)) !== -1; i = j + 1) {
+          let menu
+          try {
+            menu = await env.site.get_menu(`${pathname.slice(0, i)}_menu.json`)
+          }
+          catch (error) {
+            return pathname // fallback
+          }
+          let dir = pathname.slice(i, j)
+          if (!Object.prototype.hasOwnProperty.call(menu.index, dir))
+            return pathname // fallback
+          components.push(menu.entries[menu.index[dir]].name)
+        }
+
+        return components.join(' > ')
+      }
+
+      await breadcrumbs(env, _out)
+
+      h4 {
+        'Query: '
+        strong {`${query}`}
+      }
+
+      if (search.results.length) {
+        p {`Showing results ${first + 1}–${first + search.results.length} of ${search.total_results}`}
+
+        ol(start=first + 1) {
+          for (let i = 0; i < search.results.length; ++i) {
+            let page = search.results[i].auxiliary
+            li {
+              a(href=page) {`${await breadcrumbs_str(page)}`}
+              br {}
+              p {_out.push(search.results[i].summary)} // note: contains HTML
+            }
+          }
+        }
+
+        ul.pagination {
+          for (let i = 0; i * 10 < search.total_results; ++i) {
+            let page = '/search/index.html?' + querystring.stringify(
+              {query: query, first: i * 10}
+            )
+            let text = (i + 1).toString()
+            if (i * 10 === first)
+              li.page-item.active {
+                a.page-link(href=page) {
+                  `${text}`
+                  span.sr-only {'(current)'}
+                }
+              }
+            else
+              li.page-item {
+                a.page-link(href=page) {`${text}`}
+              }
+          }
+        }
+      }
+      else
+        p {'No results'}
+    },
+    async _out => {}
+  )
+}