Compare commits
10 Commits
5c728f7d9d
...
bbebb50dc8
Author | SHA1 | Date |
---|---|---|
Marcell Mars | bbebb50dc8 | |
Marcell Mars | aaf9f0aa66 | |
Marcell Mars | 57db02f8f8 | |
Marcell Mars | 9ef3b18546 | |
Marcell Mars | 405f295828 | |
Marcell Mars | 1508b957a7 | |
Marcell Mars | b92b1e02bd | |
Marcell Mars | e1a6a85089 | |
Marcell Mars | 781a1ada35 | |
Marcell Mars | 4743e6f143 |
|
@ -1,24 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset='utf-8'>
|
|
||||||
<meta name='viewport' content='width=device-width'>
|
|
||||||
|
|
||||||
<title>Memory of the World Library</title>
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="static/favicons/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="static/favicons/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="static/favicons/favicon-16x16.png">
|
|
||||||
<link rel="mask-icon" href="static/favicons/safari-pinned-tab.svg" color="#5bbad5">
|
|
||||||
<meta name="msapplication-TileColor" content="#da532c">
|
|
||||||
<meta name="theme-color" content="#ffffff">
|
|
||||||
|
|
||||||
<link rel='stylesheet' href='static/css/bundle.css'>
|
|
||||||
|
|
||||||
<script rel="prefetch" src="static/data1.js"></script>
|
|
||||||
<script defer src='static/js/bundle.js'></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="pl-2 pr-2 monocle:p-0 phone:p-0">
|
|
||||||
</body>
|
|
||||||
</html>
|
|
90
cmd/build.go
|
@ -7,6 +7,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/araddon/dateparse"
|
"github.com/araddon/dateparse"
|
||||||
"github.com/beevik/etree"
|
"github.com/beevik/etree"
|
||||||
|
@ -20,17 +21,19 @@ import (
|
||||||
|
|
||||||
type ZoteroItem struct {
|
type ZoteroItem struct {
|
||||||
XMLName xml.Name `xml:"zoteroItem"`
|
XMLName xml.Name `xml:"zoteroItem"`
|
||||||
FilePath string `xml:"filePath"`
|
Attachments struct {
|
||||||
MimeType string `xml:"mimeType"`
|
Attachment []struct {
|
||||||
Publisher string `xml:"publisher,omitempty"`
|
Path string `xml:",chardata"`
|
||||||
Authors []ZoteroAuthor `xml:"authors"`
|
MimeType string `xml:"mimeType,attr"`
|
||||||
|
} `xml:"attachment"`
|
||||||
|
} `xml:"attachments"`
|
||||||
|
Date string `xml:"date"`
|
||||||
|
Authors struct {
|
||||||
|
Author []string `xml:"author"`
|
||||||
|
} `xml:"authors"`
|
||||||
Title string `xml:"title"`
|
Title string `xml:"title"`
|
||||||
Description string `xml:"description,omitempty"`
|
Description string `xml:"description"`
|
||||||
}
|
Publisher string `xml:"publisher"`
|
||||||
|
|
||||||
type ZoteroAuthor struct {
|
|
||||||
XMLName xml.Name `xml:"authors"`
|
|
||||||
Author string `xml:"author"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var buildCmd = &cobra.Command{
|
var buildCmd = &cobra.Command{
|
||||||
|
@ -83,27 +86,41 @@ should be enough for the next successful build).`,
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
root := doc.SelectElement("rdf:RDF")
|
root := doc.SelectElement("rdf:RDF")
|
||||||
|
attachmentsIDs := map[string]bool{}
|
||||||
for _, attachmentNode := range root.FindElements("[name()='link:type']") {
|
for _, attachmentNode := range root.FindElements("[name()='link:type']") {
|
||||||
var zoteroItem ZoteroItem
|
|
||||||
var bookOpf calibre.BookOpfW
|
var bookOpf calibre.BookOpfW
|
||||||
|
var zoteroItem ZoteroItem
|
||||||
|
|
||||||
if attachmentNode.Text() != "application/pdf" {
|
attachmentID := attachmentNode.Parent().SelectAttr("rdf:about").Value
|
||||||
|
if attachmentNode.Text() == "text/html" || attachmentsIDs[attachmentID] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bibliographyNode := root.FindElement(fmt.Sprintf("[@rdf:resource='%s']", attachmentID)).Parent().Copy()
|
||||||
|
|
||||||
newDoc := etree.NewDocument()
|
newDoc := etree.NewDocument()
|
||||||
zoteroUnion := newDoc.CreateElement("zoteroItem")
|
zoteroUnion := newDoc.CreateElement("zoteroItem")
|
||||||
filePathElement := zoteroUnion.CreateElement("filePath")
|
|
||||||
filePathQuery := attachmentNode.Parent().FindElement("[name()='rdf:resource']").SelectAttr("rdf:resource").Value
|
|
||||||
filePathElement.CreateText(filePathQuery)
|
|
||||||
|
|
||||||
mimeTypeElement := zoteroUnion.CreateElement("mimeType")
|
attachmentsQuery := bibliographyNode.FindElements("[name()='link:link']")
|
||||||
mimeType := attachmentNode.Text()
|
itemAttachments := zoteroUnion.CreateElement("attachments")
|
||||||
mimeTypeElement.CreateText(mimeType)
|
mimeTypeMap := make(map[string]bool)
|
||||||
|
for _, attachment := range attachmentsQuery {
|
||||||
bibliographyNode := root.FindElement(fmt.Sprintf("[@rdf:resource='%s']", attachmentNode.Parent().SelectAttr("rdf:about").Value)).Parent().Copy()
|
attachmentID := attachment.SelectAttr("rdf:resource").Value
|
||||||
|
zAttachment := root.FindElement(fmt.Sprintf("[@rdf:about='%s']", attachmentID))
|
||||||
// newDoc.AddChild(bibliographyNode)
|
mimeType := zAttachment.FindElement("[name()='link:type']").Text()
|
||||||
// newDoc.WriteTo(os.Stdout)
|
if mimeType != "text/html" {
|
||||||
|
if !mimeTypeMap[mimeType] {
|
||||||
|
attachmentsIDs[attachmentID] = true
|
||||||
|
filePath := zAttachment.FindElement("[name()='rdf:resource']").SelectAttr("rdf:resource").Value
|
||||||
|
attachment := itemAttachments.CreateElement("attachment")
|
||||||
|
attachment.SetText(filePath)
|
||||||
|
attachment.CreateAttr("mimeType", mimeType)
|
||||||
|
mimeTypeMap[mimeType] = true
|
||||||
|
} else {
|
||||||
|
fmt.Println("DUPLICATE mimeType:", mimeType, attachmentID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dateQuery := bibliographyNode.FindElement("[name()='dc:date']")
|
dateQuery := bibliographyNode.FindElement("[name()='dc:date']")
|
||||||
if dateQuery != nil {
|
if dateQuery != nil {
|
||||||
|
@ -149,18 +166,17 @@ should be enough for the next successful build).`,
|
||||||
authors := zoteroUnion.CreateElement("authors")
|
authors := zoteroUnion.CreateElement("authors")
|
||||||
for _, authorNode := range authorsQuery {
|
for _, authorNode := range authorsQuery {
|
||||||
var firstName, surName string
|
var firstName, surName string
|
||||||
author := authors.CreateElement("author")
|
|
||||||
|
|
||||||
firstNameNode := authorNode.FindElement("[name()='foaf:givenName']")
|
firstNameNode := authorNode.FindElement("[name()='foaf:givenName']")
|
||||||
if firstNameNode != nil {
|
if firstNameNode != nil {
|
||||||
firstName = firstNameNode.Text()
|
firstName = firstNameNode.Text() + " "
|
||||||
}
|
}
|
||||||
surNameNode := authorNode.FindElement("[name()='foaf:surname']")
|
surNameNode := authorNode.FindElement("[name()='foaf:surname']")
|
||||||
if surNameNode != nil {
|
if surNameNode != nil {
|
||||||
surName = surNameNode.Text()
|
surName = surNameNode.Text() + " "
|
||||||
}
|
}
|
||||||
fullName := fmt.Sprintf("%s %s", firstName, surName)
|
fullName := strings.TrimSuffix(fmt.Sprintf("%s%s", firstName, surName), " ")
|
||||||
author.CreateText(fullName)
|
authors.CreateElement("author").SetText(fullName)
|
||||||
|
|
||||||
bookOpf.Metadata.Creators = append(bookOpf.Metadata.Creators, calibre.Creator{
|
bookOpf.Metadata.Creators = append(bookOpf.Metadata.Creators, calibre.Creator{
|
||||||
Role: "aut",
|
Role: "aut",
|
||||||
|
@ -186,16 +202,22 @@ should be enough for the next successful build).`,
|
||||||
bookOpf.Metadata.Description = description
|
bookOpf.Metadata.Description = description
|
||||||
}
|
}
|
||||||
|
|
||||||
// newDoc.WriteTo(os.Stdout)
|
|
||||||
// fmt.Println("")
|
|
||||||
|
|
||||||
b, err := newDoc.WriteToBytes()
|
b, err := newDoc.WriteToBytes()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := xml.Unmarshal(b, &zoteroItem); err != nil {
|
if err := xml.Unmarshal(b, &zoteroItem); err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, a := range zoteroItem.Attachments.Attachment {
|
||||||
|
fmt.Println(a.Path, a.MimeType)
|
||||||
|
}
|
||||||
|
zi, _ := xml.MarshalIndent(zoteroItem, " ", " ")
|
||||||
|
_ = zi
|
||||||
|
// os.Stdout.Write(zi)
|
||||||
|
// fmt.Println("\n~+~ ~ ~ ~ ~")
|
||||||
// fmt.Printf("\nZoteroItem: %#v\n", zoteroItem)
|
// fmt.Printf("\nZoteroItem: %#v\n", zoteroItem)
|
||||||
|
|
||||||
bookOpf.Version = "2.0"
|
bookOpf.Version = "2.0"
|
||||||
|
@ -214,9 +236,9 @@ should be enough for the next successful build).`,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
// _ = bookOpfOutput
|
_ = bookOpfOutput
|
||||||
os.Stdout.Write(bookOpfOutput)
|
// os.Stdout.Write(bookOpfOutput)
|
||||||
fmt.Println("")
|
// fmt.Println("\n ~ ~ ~ ~ ~")
|
||||||
}
|
}
|
||||||
calibre.RenderStandaloneApp(calibrePath, librarianName, libraryUUID, librarySecret, jsonPath)
|
calibre.RenderStandaloneApp(calibrePath, librarianName, libraryUUID, librarySecret, jsonPath)
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,194 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"accorder/pkg/calibre"
|
||||||
|
"encoding/xml"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/araddon/dateparse"
|
||||||
|
"github.com/beevik/etree"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ImportZoteroRDF(cmd *cobra.Command) {
|
||||||
|
|
||||||
|
zoteroRDFPath := CliFlagValue(cmd, "import-zotero")
|
||||||
|
doc := etree.NewDocument()
|
||||||
|
if err := doc.ReadFromFile(zoteroRDFPath); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
root := doc.SelectElement("rdf:RDF")
|
||||||
|
attachmentsIDs := map[string]bool{}
|
||||||
|
for _, attachmentNode := range root.FindElements("[name()='link:type']") {
|
||||||
|
var bookOpf calibre.BookOpfW
|
||||||
|
var zoteroItem ZoteroItem
|
||||||
|
|
||||||
|
attachmentID := attachmentNode.Parent().SelectAttr("rdf:about").Value
|
||||||
|
if attachmentNode.Text() == "text/html" || attachmentsIDs[attachmentID] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
bibliographyNode := root.FindElement(fmt.Sprintf("[@rdf:resource='%s']", attachmentID)).Parent().Copy()
|
||||||
|
|
||||||
|
newDoc := etree.NewDocument()
|
||||||
|
zoteroUnion := newDoc.CreateElement("zoteroItem")
|
||||||
|
|
||||||
|
attachmentsQuery := bibliographyNode.FindElements("[name()='link:link']")
|
||||||
|
itemAttachments := zoteroUnion.CreateElement("attachments")
|
||||||
|
mimeTypeMap := make(map[string]bool)
|
||||||
|
for _, attachment := range attachmentsQuery {
|
||||||
|
attachmentID := attachment.SelectAttr("rdf:resource").Value
|
||||||
|
zAttachment := root.FindElement(fmt.Sprintf("[@rdf:about='%s']", attachmentID))
|
||||||
|
mimeType := zAttachment.FindElement("[name()='link:type']").Text()
|
||||||
|
if mimeType != "text/html" {
|
||||||
|
if !mimeTypeMap[mimeType] {
|
||||||
|
attachmentsIDs[attachmentID] = true
|
||||||
|
filePath := zAttachment.FindElement("[name()='rdf:resource']").SelectAttr("rdf:resource").Value
|
||||||
|
attachment := itemAttachments.CreateElement("attachment")
|
||||||
|
attachment.SetText(filePath)
|
||||||
|
attachment.CreateAttr("mimeType", mimeType)
|
||||||
|
mimeTypeMap[mimeType] = true
|
||||||
|
} else {
|
||||||
|
fmt.Println("DUPLICATE mimeType:", mimeType, attachmentID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dateQuery := bibliographyNode.FindElement("[name()='dc:date']")
|
||||||
|
if dateQuery != nil {
|
||||||
|
dateElement := zoteroUnion.CreateElement("date")
|
||||||
|
date, err := dateparse.ParseAny(dateQuery.Text())
|
||||||
|
if err == nil {
|
||||||
|
formattedDate := date.Format("2006-01-02")
|
||||||
|
dateElement.CreateText(formattedDate)
|
||||||
|
|
||||||
|
bookOpf.Metadata.Published = formattedDate
|
||||||
|
} else {
|
||||||
|
newDateQuery := fmt.Sprintf("1 %s", dateQuery.Text())
|
||||||
|
newDate, err := dateparse.ParseAny(newDateQuery)
|
||||||
|
if err == nil {
|
||||||
|
newFormattedDate := newDate.Format("2006-01-02")
|
||||||
|
dateElement.CreateText(newFormattedDate)
|
||||||
|
bookOpf.Metadata.Published = newFormattedDate
|
||||||
|
} else {
|
||||||
|
lastChanceDate := dateQuery.Text()[len(dateQuery.Text())-4:]
|
||||||
|
year, err := strconv.Atoi(lastChanceDate)
|
||||||
|
if err == nil {
|
||||||
|
justYear := fmt.Sprintf("%d-01-01", year)
|
||||||
|
dateElement.CreateText(justYear)
|
||||||
|
bookOpf.Metadata.Published = justYear
|
||||||
|
} else {
|
||||||
|
fmt.Println("ERROR parsing date...", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
publisherQuery := bibliographyNode.FindElement("[name()='foaf:name']")
|
||||||
|
if publisherQuery != nil {
|
||||||
|
publisherElement := zoteroUnion.CreateElement("publisher")
|
||||||
|
publisher := publisherQuery.Text()
|
||||||
|
publisherElement.CreateText(publisher)
|
||||||
|
|
||||||
|
bookOpf.Metadata.Publisher = publisher
|
||||||
|
}
|
||||||
|
|
||||||
|
authorsQuery := bibliographyNode.FindElements("[name()='foaf:Person']")
|
||||||
|
authors := zoteroUnion.CreateElement("authors")
|
||||||
|
for _, authorNode := range authorsQuery {
|
||||||
|
var firstName, surName string
|
||||||
|
|
||||||
|
firstNameNode := authorNode.FindElement("[name()='foaf:givenName']")
|
||||||
|
if firstNameNode != nil {
|
||||||
|
firstName = firstNameNode.Text() + " "
|
||||||
|
}
|
||||||
|
surNameNode := authorNode.FindElement("[name()='foaf:surname']")
|
||||||
|
if surNameNode != nil {
|
||||||
|
surName = surNameNode.Text() + " "
|
||||||
|
}
|
||||||
|
fullName := strings.TrimSuffix(fmt.Sprintf("%s%s", firstName, surName), " ")
|
||||||
|
authors.CreateElement("author").SetText(fullName)
|
||||||
|
|
||||||
|
bookOpf.Metadata.Creators = append(bookOpf.Metadata.Creators, calibre.Creator{
|
||||||
|
Role: "aut",
|
||||||
|
Name: fullName,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
titleQuery := bibliographyNode.FindElement("[name()='dc:title']")
|
||||||
|
if titleQuery != nil {
|
||||||
|
titleNode := zoteroUnion.CreateElement("title")
|
||||||
|
title := titleQuery.Text()
|
||||||
|
titleNode.CreateText(title)
|
||||||
|
|
||||||
|
bookOpf.Metadata.Title = title
|
||||||
|
}
|
||||||
|
|
||||||
|
descriptionQuery := bibliographyNode.FindElement("[name()='dcterms:abstract']")
|
||||||
|
if descriptionQuery != nil {
|
||||||
|
descriptionNode := zoteroUnion.CreateElement("description")
|
||||||
|
description := descriptionQuery.Text()
|
||||||
|
descriptionNode.CreateText(description)
|
||||||
|
|
||||||
|
bookOpf.Metadata.Description = description
|
||||||
|
}
|
||||||
|
|
||||||
|
// identifiers
|
||||||
|
identifiersQuery := bibliographyNode.FindElements("//[name()='dc:identifier'][not()]")
|
||||||
|
if len(identifiersQuery) > 0 {
|
||||||
|
for _, identifier := range identifiersQuery {
|
||||||
|
identifierLine := identifier.Text()
|
||||||
|
var id []string
|
||||||
|
if strings.Contains(identifierLine, " ") {
|
||||||
|
id = strings.Split(identifier.Text(), " ")
|
||||||
|
}
|
||||||
|
if len(id) > 1 && id[0] != "" {
|
||||||
|
fmt.Println(bookOpf.Metadata.Title, "TYPE:", id[0], "VALUE:", id[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := newDoc.WriteToBytes()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := xml.Unmarshal(b, &zoteroItem); err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, a := range zoteroItem.Attachments.Attachment {
|
||||||
|
// fmt.Println(a.Path, a.MimeType)
|
||||||
|
_ = a
|
||||||
|
}
|
||||||
|
|
||||||
|
zi, _ := xml.MarshalIndent(zoteroItem, " ", " ")
|
||||||
|
_ = zi
|
||||||
|
// os.Stdout.Write(zi)
|
||||||
|
// fmt.Println("\n~+~ ~ ~ ~ ~")
|
||||||
|
|
||||||
|
bookOpf.Version = "2.0"
|
||||||
|
bookOpf.Xmlns = "http://www.idpf.org/2007/opf"
|
||||||
|
bookOpf.UniqueIdentifier = "uuid_id"
|
||||||
|
bookOpf.Metadata.DC = "http://purl.org/dc/elements/1.1/"
|
||||||
|
bookOpf.Metadata.OPF = "http://www.idpf.org/2007/opf"
|
||||||
|
|
||||||
|
bookOpf.Metadata.Identifiers = append(bookOpf.Metadata.Identifiers, calibre.Identifier{
|
||||||
|
Scheme: "calibre",
|
||||||
|
Id: "calibre_id",
|
||||||
|
Value: "-1",
|
||||||
|
})
|
||||||
|
|
||||||
|
bookOpfOutput, err := xml.MarshalIndent(bookOpf, " ", " ")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
_ = bookOpfOutput
|
||||||
|
// os.Stdout.Write(bookOpfOutput)
|
||||||
|
// fmt.Println("\n ~ ~ ~ ~ ~")
|
||||||
|
}
|
||||||
|
}
|
|
@ -110,8 +110,8 @@ type BookOpfW struct {
|
||||||
Name string `xml:",chardata"`
|
Name string `xml:",chardata"`
|
||||||
} `xml:"dc:creator"`
|
} `xml:"dc:creator"`
|
||||||
Published string `xml:"dc:date"`
|
Published string `xml:"dc:date"`
|
||||||
Description string `xml:"dc:description"`
|
Description string `xml:"dc:description,omitempty"`
|
||||||
Publisher string `xml:"dc:publisher"`
|
Publisher string `xml:"dc:publisher,omitempty"`
|
||||||
Languages []struct {
|
Languages []struct {
|
||||||
Language string `xml:",chardata"`
|
Language string `xml:",chardata"`
|
||||||
} `xml:"dc:language"`
|
} `xml:"dc:language"`
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS1={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS2={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS3={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS4={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS5={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS6={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS7={"portable":true,"books":null}
|
|
|
@ -1 +0,0 @@
|
||||||
CALIBRE_BOOKS8={"portable":true,"books":null}
|
|
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 8.6 KiB |
Before Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 6.4 KiB |
|
@ -1,106 +0,0 @@
|
||||||
<?xml version="1.0" standalone="no"?>
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
|
||||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
|
||||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1374.000000pt" height="1374.000000pt" viewBox="0 0 1374.000000 1374.000000"
|
|
||||||
preserveAspectRatio="xMidYMid meet">
|
|
||||||
<metadata>
|
|
||||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
|
||||||
</metadata>
|
|
||||||
<g transform="translate(0.000000,1374.000000) scale(0.100000,-0.100000)"
|
|
||||||
fill="#000000" stroke="none">
|
|
||||||
<path d="M6869 11514 c-24 -18 -49 -33 -56 -33 -6 -1 -13 -4 -15 -8 -1 -5 -48
|
|
||||||
-37 -103 -73 -55 -36 -102 -68 -105 -71 -3 -3 -9 -8 -15 -10 -20 -8 -280 -184
|
|
||||||
-283 -191 -2 -5 -8 -8 -13 -8 -6 0 -15 -5 -22 -10 -14 -12 -155 -105 -203
|
|
||||||
-135 -19 -11 -42 -28 -53 -37 -11 -9 -22 -14 -25 -11 -3 3 -8 -2 -12 -11 -3
|
|
||||||
-9 -10 -16 -16 -16 -5 0 -35 -17 -66 -39 -31 -21 -61 -39 -66 -39 -5 0 -12 -4
|
|
||||||
-15 -9 -10 -14 -79 -63 -89 -63 -5 0 -17 -9 -27 -20 -10 -11 -22 -20 -26 -20
|
|
||||||
-10 0 -133 -83 -137 -92 -2 -5 -7 -8 -12 -8 -10 0 -134 -82 -138 -92 -2 -4 -8
|
|
||||||
-8 -13 -8 -11 0 -133 -81 -137 -92 -2 -5 -7 -8 -12 -8 -8 0 -374 -239 -397
|
|
||||||
-259 -7 -6 -16 -11 -20 -11 -5 0 -20 -11 -35 -25 -15 -14 -31 -25 -36 -25 -4
|
|
||||||
0 -17 -7 -27 -15 -11 -9 -101 -69 -200 -135 -99 -65 -184 -122 -190 -127 -5
|
|
||||||
-4 -22 -14 -37 -22 -16 -8 -28 -18 -28 -23 0 -4 -5 -8 -10 -8 -6 0 -33 -16
|
|
||||||
-60 -35 -27 -19 -54 -35 -59 -35 -5 0 -11 -3 -13 -7 -3 -8 -174 -124 -193
|
|
||||||
-132 -5 -2 -33 -21 -62 -43 -29 -21 -55 -38 -58 -38 -3 0 -27 -16 -54 -35 -26
|
|
||||||
-19 -53 -35 -59 -35 -6 0 -12 -4 -14 -8 -4 -11 -155 -112 -167 -112 -5 0 -11
|
|
||||||
-3 -13 -7 -5 -12 -95 -73 -107 -73 -6 0 -11 -4 -11 -8 0 -5 -12 -15 -27 -23
|
|
||||||
-16 -8 -30 -16 -33 -20 -6 -6 -389 -261 -405 -269 -5 -3 -51 -33 -102 -67 -51
|
|
||||||
-35 -97 -63 -103 -63 -5 0 -10 -4 -10 -8 0 -4 -22 -21 -50 -37 -27 -17 -50
|
|
||||||
-33 -50 -37 0 -5 -7 -8 -15 -8 -8 0 -15 -4 -15 -10 0 -5 -4 -10 -10 -10 -5 0
|
|
||||||
-32 -16 -59 -35 -26 -19 -53 -35 -59 -35 -6 0 -12 -3 -14 -8 -1 -4 -50 -38
|
|
||||||
-108 -77 -58 -38 -108 -74 -112 -80 -5 -6 -8 -6 -8 0 0 6 -6 3 -13 -6 -7 -9
|
|
||||||
-22 -19 -35 -23 -12 -4 -22 -11 -22 -15 0 -5 -13 -14 -30 -21 -16 -7 -30 -16
|
|
||||||
-30 -20 0 -4 -16 -15 -35 -24 -19 -9 -35 -21 -35 -27 0 -6 -5 -7 -10 -4 -6 3
|
|
||||||
-10 1 -10 -4 0 -6 -4 -11 -9 -11 -6 0 -31 -15 -56 -32 -26 -18 -54 -38 -63
|
|
||||||
-43 -37 -22 -77 -50 -82 -56 -3 -3 -16 -12 -30 -19 -14 -7 -42 -26 -62 -42
|
|
||||||
-21 -16 -38 -27 -38 -23 0 3 -7 0 -15 -7 -33 -30 -45 -38 -54 -38 -5 0 -16 -6
|
|
||||||
-23 -13 -17 -17 -488 -330 -510 -339 -9 -4 -37 -26 -61 -50 -74 -74 -100 -190
|
|
||||||
-98 -438 1 -118 4 -169 16 -285 4 -27 8 -69 10 -93 3 -24 7 -56 11 -70 5 -27
|
|
||||||
11 -64 18 -112 2 -14 7 -41 11 -60 4 -19 9 -45 11 -57 1 -11 5 -30 8 -41 4
|
|
||||||
-11 8 -29 10 -39 10 -48 39 -164 56 -223 11 -36 22 -76 24 -90 3 -14 5 -25 6
|
|
||||||
-25 1 0 3 -7 5 -15 4 -17 62 -187 72 -210 3 -8 7 -17 7 -20 1 -3 7 -15 14 -27
|
|
||||||
7 -13 10 -23 7 -23 -3 0 6 -20 19 -45 14 -25 23 -45 20 -45 -7 0 64 -136 98
|
|
||||||
-187 15 -23 28 -45 28 -49 0 -4 7 -14 15 -23 8 -9 29 -32 47 -52 18 -20 51
|
|
||||||
-49 73 -65 22 -16 49 -37 59 -46 11 -10 26 -18 33 -18 7 0 13 -4 13 -10 0 -5
|
|
||||||
7 -10 15 -10 8 0 15 -4 15 -9 0 -5 20 -21 44 -35 25 -14 51 -32 58 -39 7 -7
|
|
||||||
47 -36 88 -65 41 -28 98 -67 125 -87 28 -20 68 -48 90 -63 22 -15 41 -30 43
|
|
||||||
-34 2 -5 10 -8 18 -8 8 0 14 -3 14 -8 0 -4 18 -18 40 -32 22 -14 40 -28 40
|
|
||||||
-32 0 -5 6 -8 13 -8 8 0 22 -9 32 -20 10 -11 22 -20 27 -20 5 0 14 -5 21 -10
|
|
||||||
7 -6 48 -36 92 -67 44 -32 82 -60 85 -63 3 -3 12 -9 21 -15 10 -5 37 -24 60
|
|
||||||
-41 24 -16 76 -52 114 -79 39 -27 76 -55 83 -61 6 -7 21 -16 32 -19 11 -3 20
|
|
||||||
-10 20 -14 0 -4 18 -17 40 -30 22 -12 40 -26 40 -32 0 -5 5 -9 11 -9 6 0 28
|
|
||||||
-14 49 -30 21 -17 42 -30 48 -30 6 0 12 -3 14 -7 4 -9 174 -133 182 -133 3 0
|
|
||||||
14 -7 24 -16 9 -8 60 -45 112 -82 52 -37 97 -70 98 -74 2 -5 9 -8 15 -8 7 0
|
|
||||||
24 -11 39 -25 15 -14 31 -25 35 -25 4 0 19 -9 33 -20 63 -51 120 -90 129 -90
|
|
||||||
5 0 11 -3 13 -7 5 -11 147 -113 157 -113 5 0 11 -4 13 -8 1 -5 26 -23 53 -42
|
|
||||||
28 -18 52 -36 55 -39 12 -14 70 -51 80 -51 5 0 10 -3 10 -8 0 -4 18 -18 40
|
|
||||||
-32 22 -14 40 -28 40 -32 0 -5 7 -8 15 -8 9 0 18 -7 21 -15 4 -8 10 -15 15
|
|
||||||
-15 8 0 113 -71 144 -98 6 -5 24 -17 40 -27 17 -11 56 -39 87 -62 31 -24 59
|
|
||||||
-43 62 -43 3 0 14 -6 23 -14 39 -31 113 -86 118 -86 4 0 132 -90 180 -127 6
|
|
||||||
-4 33 -24 60 -43 28 -19 52 -38 53 -42 2 -4 8 -8 13 -8 9 0 67 -38 79 -51 3
|
|
||||||
-3 28 -21 55 -39 28 -19 52 -37 53 -42 2 -4 10 -8 18 -8 8 0 14 -4 14 -10 0
|
|
||||||
-5 6 -10 14 -10 8 0 16 -4 18 -8 2 -5 26 -23 53 -42 28 -18 52 -36 55 -39 12
|
|
||||||
-14 70 -51 80 -51 5 0 10 -3 10 -7 0 -5 25 -24 55 -43 30 -19 54 -38 55 -42 0
|
|
||||||
-5 5 -8 11 -8 11 0 92 -60 97 -72 2 -5 10 -8 18 -8 8 0 14 -4 14 -10 0 -5 7
|
|
||||||
-10 15 -10 8 0 15 -4 15 -10 0 -5 7 -10 15 -10 8 0 15 -4 15 -10 0 -5 6 -10
|
|
||||||
14 -10 8 0 16 -3 18 -8 4 -9 202 -150 223 -158 15 -6 52 13 84 44 9 9 31 28
|
|
||||||
49 42 18 14 45 36 61 50 57 52 91 80 96 80 3 0 16 10 28 23 12 12 47 43 77 67
|
|
||||||
67 55 95 79 124 105 12 11 41 35 64 53 22 19 50 41 60 50 11 10 34 28 52 42
|
|
||||||
17 13 47 38 65 55 18 16 50 44 70 60 21 17 47 39 59 50 12 11 45 38 72 60 27
|
|
||||||
22 65 54 84 72 19 18 41 33 48 33 6 0 12 7 12 15 0 8 4 15 8 15 5 0 18 8 30
|
|
||||||
17 41 35 108 91 187 158 26 22 58 50 71 63 13 12 25 22 28 22 6 0 44 33 91 78
|
|
||||||
13 12 27 22 30 22 3 0 13 8 23 17 10 10 40 36 67 58 26 22 59 49 71 60 12 11
|
|
||||||
39 34 60 50 20 17 44 37 53 46 9 8 39 33 66 55 28 21 52 42 55 45 3 3 34 30
|
|
||||||
70 60 36 29 70 58 76 64 6 5 30 26 54 45 25 19 62 51 84 70 23 19 45 38 51 43
|
|
||||||
5 4 21 17 35 30 14 12 45 38 69 57 24 19 56 46 71 60 15 14 43 37 62 52 19 15
|
|
||||||
45 37 59 50 14 13 45 39 69 58 24 19 61 51 83 70 22 19 62 52 89 72 28 21 46
|
|
||||||
38 42 38 -5 1 1 6 12 13 21 12 69 52 162 134 26 24 53 43 60 43 6 0 12 7 12
|
|
||||||
15 0 8 4 15 10 15 10 0 27 14 98 78 21 18 58 49 85 69 26 21 47 41 47 45 0 4
|
|
||||||
5 8 10 8 6 0 18 8 28 17 31 30 85 77 117 101 17 13 50 41 75 62 40 35 154 131
|
|
||||||
219 185 13 11 58 49 101 85 84 71 84 70 215 179 50 41 97 81 106 90 9 9 25 23
|
|
||||||
36 31 26 21 137 113 143 120 5 5 118 99 135 113 6 4 21 17 35 30 14 12 45 38
|
|
||||||
69 57 24 19 48 40 55 45 6 6 38 33 71 60 33 28 67 58 76 67 9 10 19 18 23 18
|
|
||||||
4 0 21 13 39 29 34 32 160 139 242 206 70 57 104 87 131 114 13 13 24 21 24
|
|
||||||
18 0 -4 15 8 33 26 19 18 49 43 67 57 18 14 43 34 55 45 12 11 41 36 66 55 24
|
|
||||||
19 53 44 64 55 11 11 36 32 55 47 19 15 47 37 61 50 15 13 46 39 69 58 132
|
|
||||||
108 133 110 128 165 -5 64 -34 105 -96 136 -26 13 -49 24 -52 24 -3 0 -12 5
|
|
||||||
-20 10 -8 5 -60 32 -115 60 -102 52 -117 60 -170 88 -29 15 -51 57 -61 117 -4
|
|
||||||
29 -8 44 -19 85 -5 16 -9 39 -10 50 -1 11 -5 36 -8 55 -4 19 -10 49 -13 65 -7
|
|
||||||
41 -11 68 -18 150 -4 39 -9 90 -12 115 -6 50 -6 368 0 415 2 17 7 62 11 100 8
|
|
||||||
80 9 87 20 138 4 20 10 37 14 37 4 0 20 12 38 28 40 35 59 51 108 87 22 16 47
|
|
||||||
36 57 45 9 8 31 26 49 40 18 14 58 45 89 70 31 25 69 54 85 65 69 49 85 72 85
|
|
||||||
120 0 65 -34 115 -102 148 -29 14 -93 44 -143 67 -49 23 -112 52 -140 65 -54
|
|
||||||
25 -137 64 -308 144 -59 28 -109 51 -112 51 -2 0 -50 22 -105 49 -55 28 -103
|
|
||||||
50 -105 51 -5 1 -84 37 -230 105 -171 80 -233 109 -295 138 -36 17 -67 31 -70
|
|
||||||
32 -44 15 -70 29 -70 38 0 6 -3 8 -6 4 -4 -3 -27 5 -53 18 -76 39 -146 69
|
|
||||||
-153 67 -5 -1 -8 3 -8 10 0 6 -3 9 -6 6 -3 -4 -31 6 -62 22 -70 34 -202 97
|
|
||||||
-302 142 -41 19 -102 48 -135 64 -33 16 -62 29 -65 29 -3 0 -40 18 -83 38
|
|
||||||
-106 51 -191 91 -197 92 -3 1 -43 19 -90 42 -47 22 -119 57 -161 76 -115 53
|
|
||||||
-173 80 -291 136 -59 28 -109 51 -111 51 -3 0 -65 29 -138 63 -155 74 -171 81
|
|
||||||
-181 79 -5 -1 -8 3 -8 8 0 6 -4 10 -9 10 -5 0 -51 20 -102 44 -157 73 -209 96
|
|
||||||
-219 96 -6 0 -10 5 -10 10 0 6 -5 10 -12 10 -6 0 -49 18 -94 40 -46 22 -88 40
|
|
||||||
-93 40 -6 0 -11 5 -11 12 0 6 -3 9 -6 6 -3 -4 -41 11 -85 33 -43 21 -81 39
|
|
||||||
-83 39 -3 0 -49 20 -103 45 -132 62 -147 69 -153 76 -9 10 -94 30 -121 27 -14
|
|
||||||
-1 -45 -17 -70 -34z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.2 KiB |