gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-marketing] branch master updated: adding workshop pr


From: gnunet
Subject: [GNUnet-SVN] [taler-marketing] branch master updated: adding workshop presenation
Date: Sat, 15 Apr 2017 20:07:59 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository marketing.

The following commit(s) were added to refs/heads/master by this push:
     new dd343f8  adding workshop presenation
dd343f8 is described below

commit dd343f856368e36fa1ea5229d5ba91e96ac9b60d
Author: Christian Grothoff <address@hidden>
AuthorDate: Sat Apr 15 20:07:54 2017 +0200

    adding workshop presenation
---
 presentations/workshop/README                      |   1 +
 presentations/workshop/ashoka.png                  | Bin 0 -> 45399 bytes
 presentations/workshop/figs/Makefile               |  15 ++
 presentations/workshop/figs/taler-402.html         |  10 +
 presentations/workshop/figs/taler-contract.html    |   6 +
 presentations/workshop/figs/taler-contract.json    |  20 ++
 presentations/workshop/figs/taler-pay.pdf          | Bin 0 -> 172900 bytes
 presentations/workshop/figs/taler-pay.pml          |  47 ++++
 presentations/workshop/figs/taler-pay.svg          |   1 +
 presentations/workshop/figs/taler-presence-js.html |   9 +
 presentations/workshop/figs/taler-withdraw.pdf     | Bin 0 -> 126620 bytes
 presentations/workshop/figs/taler-withdraw.pml     |  37 +++
 presentations/workshop/figs/taler-withdraw.png     | Bin 0 -> 36010 bytes
 presentations/workshop/figs/taler-withdraw.svg     |   1 +
 presentations/workshop/gnu.png                     | Bin 0 -> 8396 bytes
 .../workshop/illustrations/taler-arch-full.pdf     | Bin 0 -> 293747 bytes
 presentations/workshop/inria.pdf                   | Bin 0 -> 13345 bytes
 presentations/workshop/main.tex                    | 279 +++++++++++++++++++++
 presentations/workshop/taler-big-accent.pdf        | Bin 0 -> 15605 bytes
 presentations/workshop/taler-big-accent.svg        |  44 ++++
 20 files changed, 470 insertions(+)

diff --git a/presentations/workshop/README b/presentations/workshop/README
new file mode 100644
index 0000000..d531c5f
--- /dev/null
+++ b/presentations/workshop/README
@@ -0,0 +1 @@
+This directory contains a presentation for Taler workshops.
diff --git a/presentations/workshop/ashoka.png 
b/presentations/workshop/ashoka.png
new file mode 100644
index 0000000..ba43566
Binary files /dev/null and b/presentations/workshop/ashoka.png differ
diff --git a/presentations/workshop/figs/Makefile 
b/presentations/workshop/figs/Makefile
new file mode 100644
index 0000000..bf5ac52
--- /dev/null
+++ b/presentations/workshop/figs/Makefile
@@ -0,0 +1,15 @@
+
+plantuml = plantuml
+
+%.svg : %.pml
+       $(plantuml) -tsvg $<
+
+%.pdf : %.pml
+       $(plantuml) -tpdf $<
+
+files = taler-pay.pml taler-withdraw.pml \
+cc3ds.pml contract.pml paypal.pml \
+bitcoin.pml
+
+all : $(files:.pml=.pdf) $(files:.pml=.svg)
+
diff --git a/presentations/workshop/figs/taler-402.html 
b/presentations/workshop/figs/taler-402.html
new file mode 100644
index 0000000..2a4ab8f
--- /dev/null
+++ b/presentations/workshop/figs/taler-402.html
@@ -0,0 +1,10 @@
+HTTP/1.1 402 Payment Required
+Content-Type: text/html; charset=UTF-8
+X-Taler-Contract-Url: https://shop/generate-contract/42
+
+<!DOCTYPE html>
+<html>
+  <!-- fallback for browsers without the Taler extension -->
+  You do not seem to have Taler installed, here are other
+  payment options ...
+</html>
diff --git a/presentations/workshop/figs/taler-contract.html 
b/presentations/workshop/figs/taler-contract.html
new file mode 100644
index 0000000..affdbe9
--- /dev/null
+++ b/presentations/workshop/figs/taler-contract.html
@@ -0,0 +1,6 @@
+<script src="taler-wallet-lib.js"></script>
+<script>
+  taler.offerContractFrom("https://shop/generate-contract/42";, (err) => {
+    alert("Error while offering contract");
+  });
+</script>
diff --git a/presentations/workshop/figs/taler-contract.json 
b/presentations/workshop/figs/taler-contract.json
new file mode 100644
index 0000000..e12b0f1
--- /dev/null
+++ b/presentations/workshop/figs/taler-contract.json
@@ -0,0 +1,20 @@
+{
+  "H_wire":"YTH0C4QBCQ10VDNTJN0DCTTV2Z6JHT5NF43F0RQHZ8JYB5NG4W4G...",
+  "amount":{"currency":"EUR","fraction":0,"value":1},
+  "max_fee":{"currency":"EUR","fraction":100000,"value":0},
+  "auditors":[{"auditor_pub":"42V6TH91Q83FB846DK1GW3JQ5E8DS273W4..."}],
+  "exchanges":[{"master_pub":"1T5FA8VQHMMKBHDMYPRZA2ZFK2S63AKF0Y...",
+                "url":"https://exchange/"}],
+  "fulfillment_url": "https://shop/article/42?tid=249&time=14714744";,
+  "merchant":{"address":"Mailbox 4242","jurisdiction":"Jersey",
+                "name":"Shop Inc."},
+  "merchant_pub":"Y1ZAR5346J3ZTEXJCHQY9NJN78EZ2HSKZK8M0MYTNRJG5N...",
+  "products":[{
+    "description":"Essay: The GNU Project",
+    "price":{"currency":"EUR","fraction":0,"value":1},
+    "product_id":42,"quantity":1}],
+  "pay_deadline":"/Date(1480119270)/",
+  "refund_deadline":"/Date(1471522470)/",
+  "timestamp":"/Date(1471479270)/",
+  "transaction_id":249960194066269
+}
diff --git a/presentations/workshop/figs/taler-pay.pdf 
b/presentations/workshop/figs/taler-pay.pdf
new file mode 100644
index 0000000..0856fa8
Binary files /dev/null and b/presentations/workshop/figs/taler-pay.pdf differ
diff --git a/presentations/workshop/figs/taler-pay.pml 
b/presentations/workshop/figs/taler-pay.pml
new file mode 100644
index 0000000..93b21f8
--- /dev/null
+++ b/presentations/workshop/figs/taler-pay.pml
@@ -0,0 +1,47 @@
address@hidden
+autonumber
+
+Actor "Payer (Shopper) Browser" as Payer
+Participant "Payee (Merchant) Site" as Payee
+Participant "Taler Exchange" as Exchange
+
+note over Payer, Payee: Tor/HTTPS
+note over Payee, Exchange: HTTP/HTTPS
+
+title Taler (Payment)
+
+== Request Offer ==
+
+Payer->Payee: Choose goods by navigating to offer URL
+
+Payee->Payer: Send signed digital contract proposal
+
+opt
+Payer->Payer: Select Taler payment method (skippable with auto-detection)
+end
+
+== Execute Payment ==
+
+opt
+Payer->Payer: Affirm contract
+end
+
+Payer->Payee: Navigate to fulfillment URL
+
+Payee->Payer: Send hash of digital contract and payment information
+
+Payer->Payee: Send payment
+
+Payee->Exchange: Forward payment
+
+Exchange->Payee: Confirm payment
+
+Payee->Payer: Confirm payment
+
+== Fulfilment ==
+
+Payer->Payee: Reload fulfillment URL for delivery
+
+Payee->Payer: Provide product resource
+
address@hidden
diff --git a/presentations/workshop/figs/taler-pay.svg 
b/presentations/workshop/figs/taler-pay.svg
new file mode 100644
index 0000000..95d83e4
--- /dev/null
+++ b/presentations/workshop/figs/taler-pay.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
height="866px" style="width:753px;height:866px;" version="1.1" viewBox="0 0 753 
866" width="753px"><defs><filter height="300%" id="f1" width="300%" x="-1" 
y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix 
in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0"  [...]
\ No newline at end of file
diff --git a/presentations/workshop/figs/taler-presence-js.html 
b/presentations/workshop/figs/taler-presence-js.html
new file mode 100644
index 0000000..9770815
--- /dev/null
+++ b/presentations/workshop/figs/taler-presence-js.html
@@ -0,0 +1,9 @@
+<script src="taler-wallet-lib.js"></script>
+<script>
+  taler.onPresent(() => {
+    alert("Taler wallet is installed");
+  });
+  taler.onAbsent(() => {
+    alert("Taler wallet is not installed");
+  });
+</script>
diff --git a/presentations/workshop/figs/taler-withdraw.pdf 
b/presentations/workshop/figs/taler-withdraw.pdf
new file mode 100644
index 0000000..d1cd720
Binary files /dev/null and b/presentations/workshop/figs/taler-withdraw.pdf 
differ
diff --git a/presentations/workshop/figs/taler-withdraw.pml 
b/presentations/workshop/figs/taler-withdraw.pml
new file mode 100644
index 0000000..33f5dac
--- /dev/null
+++ b/presentations/workshop/figs/taler-withdraw.pml
@@ -0,0 +1,37 @@
address@hidden
+autonumber
+
+Actor "Customer Browser" as Customer
+Participant "Bank Site" as Bank
+Participant "Taler Exchange" as Exchange
+
+note over Customer, Bank: HTTPS
+note over Customer, Exchange: HTTPS
+note over Bank, Exchange: wire transfer
+
+title Taler (Withdraw coins)
+
+Customer->Bank: user authentication
+Bank->Customer: send account portal
+
+Customer->Customer: initiate withdrawal (specify amount and exchange)
+
+Customer->Exchange: request coin denomination keys and wire transfer data
+Exchange->Customer: send coin denomination keys and wire transfer data
+
+Customer->Bank: execute withdrawal
+
+opt
+Bank->Customer: request transaction authorization
+Customer->Bank: transaction authorization
+end
+
+Bank->Customer: withdrawal confirmation
+Bank->Exchange: execute wire transfer
+
+
+Customer->Exchange: withdraw request
+Customer<-Exchange: signed blinded coins
+Customer->Customer: unblind coins
+
address@hidden
diff --git a/presentations/workshop/figs/taler-withdraw.png 
b/presentations/workshop/figs/taler-withdraw.png
new file mode 100644
index 0000000..04a4d8d
Binary files /dev/null and b/presentations/workshop/figs/taler-withdraw.png 
differ
diff --git a/presentations/workshop/figs/taler-withdraw.svg 
b/presentations/workshop/figs/taler-withdraw.svg
new file mode 100644
index 0000000..3618d92
--- /dev/null
+++ b/presentations/workshop/figs/taler-withdraw.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
height="774px" style="width:652px;height:774px;" version="1.1" viewBox="0 0 652 
774" width="652px"><defs><filter height="300%" id="f1" width="300%" x="-1" 
y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix 
in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0"  [...]
\ No newline at end of file
diff --git a/presentations/workshop/gnu.png b/presentations/workshop/gnu.png
new file mode 100644
index 0000000..3d060a0
Binary files /dev/null and b/presentations/workshop/gnu.png differ
diff --git a/presentations/workshop/illustrations/taler-arch-full.pdf 
b/presentations/workshop/illustrations/taler-arch-full.pdf
new file mode 100644
index 0000000..e983a9f
Binary files /dev/null and 
b/presentations/workshop/illustrations/taler-arch-full.pdf differ
diff --git a/presentations/workshop/inria.pdf b/presentations/workshop/inria.pdf
new file mode 100644
index 0000000..c3576d4
Binary files /dev/null and b/presentations/workshop/inria.pdf differ
diff --git a/presentations/workshop/main.tex b/presentations/workshop/main.tex
new file mode 100644
index 0000000..da550f8
--- /dev/null
+++ b/presentations/workshop/main.tex
@@ -0,0 +1,279 @@
+\documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer}
+\usepackage{amsmath}
+\usepackage{multimedia}
+\usepackage[utf8]{inputenc}
+\usepackage{framed,color,ragged2e}
+\usepackage[absolute,overlay]{textpos}
+\definecolor{shadecolor}{rgb}{0.8,0.8,0.8}
+\usetheme{boxes}
+\setbeamertemplate{navigation symbols}{}
+\usepackage{xcolor}
+\usepackage{tikz,eurosym}
+\usepackage[normalem]{ulem}
+\usepackage{listings}
+
+% CSS
+\lstdefinelanguage{CSS}{
+  basicstyle=\ttfamily\scriptsize,
+  
keywords={color,background-image:,margin,padding,font,weight,display,position,top,left,right,bottom,list,style,border,size,white,space,min,width,
 transition:, transform:, transition-property, transition-duration, 
transition-timing-function},
+  sensitive=true,
+  morecomment=[l]{//},
+  morecomment=[s]{/*}{*/},
+  morestring=[b]',
+  morestring=[b]",
+  alsoletter={:},
+  alsodigit={-}
+}
+
+% JavaScript
+\lstdefinelanguage{JavaScript}{
+  basicstyle=\ttfamily\scriptsize,
+  morekeywords={typeof, new, true, false, catch, function, return, null, 
catch, switch, var, if, in, while, do, else, case, break},
+  morecomment=[s]{/*}{*/},
+  morecomment=[l]//,
+  morestring=[b]",
+  morestring=[b]'
+}
+
+\lstdefinelanguage{HTML5}{
+  basicstyle=\ttfamily\scriptsize,
+  language=html,
+  sensitive=true,
+  alsoletter={<>=-},
+  morecomment=[s]{<!-}{-->},
+  tag=[s],
+  otherkeywords={
+  % General
+  >,
+  % Standard tags
+       <!DOCTYPE,
+  </html, <html, <head, <title, </title, <style, </style, <link, </head, 
<meta, />,
+       % body
+       </body, <body,
+       % Divs
+       </div, <div, </div>,
+       % Paragraphs
+       </p, <p, </p>,
+       % scripts
+       </script, <script,
+  % More tags...
+  <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, 
<source, <iframe, </iframe>, </video>, <image, </image>
+  },
+  ndkeywords={
+  % General
+  =,
+  % HTML attributes
+  charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
+  % SVG attributes
+  fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, 
repeatCount=, xlink:href=,
+  % CSS properties
+  margin:, padding:, background-image:, border:, top:, left:, position:, 
width:, height:,
+       % CSS3 properties
+  transform:, -moz-transform:, -webkit-transform:,
+  animation:, -webkit-animation:,
+  transition:,  transition-duration:, transition-property:, 
transition-timing-function:,
+  }
+}
+
+\lstdefinelanguage{JavaScript}{
+  basicstyle=\ttfamily\scriptsize,
+  keywords={typeof, new, true, false, catch, function, return, null, catch, 
switch, var, if, in, while, do, else, case, break, for},
+  keywordstyle=\color{blue}\bfseries,
+  ndkeywords={class, export, boolean, throw, implements, import, this},
+  ndkeywordstyle=\color{darkgray}\bfseries,
+  identifierstyle=\color{black},
+  sensitive=false,
+  comment=[l]{//},
+  morecomment=[s]{/*}{*/},
+  commentstyle=\color{purple}\ttfamily,
+  stringstyle=\color{red}\ttfamily,
+  morestring=[b]',
+  morestring=[b]"
+}
+
+\usetikzlibrary{shapes,arrows}
+\usetikzlibrary{positioning}
+\usetikzlibrary{calc}
+
+\title{Enabling Secure Web Payments with GNU Taler}
+%\subtitle{}
+
+\setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf} 
\includegraphics[width=0.5cm]{gnu.png} 
\includegraphics[width=0.5cm]{ashoka.png}\hfill}
+%\setbeamercovered{transparent=1}
+
+\author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci}
+\date{\today}
+\institute{The GNU Project}
+
+
+\begin{document}
+
+\justifying
+\begin{frame}[plain]
+\titlepage
+
+\vfill
+\begin{center}
+\tiny
+``I think one of the big things that we need to do, is we need
+to get a way from true-name payments on the Internet. The credit
+card payment system is one of the worst things that happened for the
+user, in terms of being able to divorce their access from their
+identity.'' \hfill --Edward Snowden, IETF 93 (2015)
+\end{center}
+\end{frame}
+
+
+
+\begin{frame}
+  % TODO: replace with simplified NEW architecture picture!
+\frametitle{Architecture of GNU Taler}
+\begin{center}
+  \includegraphics[width=0.9\textwidth]{illustrations/taler-arch-full.pdf}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Taler.net Services}
+  \vfill
+  \begin{enumerate}
+  \item \url{https://api.taler.net/}
+  \item \url{https://www.git.taler.net/}
+  \item \url{https://bank.demo.taler.net/}
+  \item \url{https://exchange.demo.taler.net/}
+  \item \url{http://backend.demo.taler.net/}
+  \item \url{https://shop.demo.taler.net/}
+  \item {\tt demo} $\Rightarrow$ {\tt test}
+  \end{enumerate}
+  \vfill
+\end{frame}
+
+
+\begin{frame}{Merchant Integration: Wallet Detection}
+ \lstset{language=JavaScript}
+ \lstinputlisting{figs/taler-presence-js.html}
+% \caption{Sample code to detect the Taler wallet. Allowing the
+%  Web site to detect the presence of the wallet leaks one bit
+%  of information about the user. The above logic also works
+%  if the wallet is installed while the page is open.}
+%  \label{listing:presence}
+\end{frame}
+
+
+\begin{frame}{Merchant Integration: Payment Request}
+% \begin{figure}[p!]
+ \lstset{language=HTML5}
+ \lstinputlisting{figs/taler-402.html}
+%  \caption{Sample HTTP response to prompt the wallet to show an offer.}
+%   \label{listing:http-contract}
+% \end{figure}
+
+% \begin{figure*}[p!]
+% \lstset{language=HTML5}
+% \lstinputlisting{figs/taler-contract.html}
+% \caption{Sample JavaScript code to prompt the wallet to show an offer.
+%          Here, the contract is fetched on-demand from the server.
+%          The {\tt taler\_pay()} function needs to be invoked
+%          when the user triggers the checkout.}
+% \label{listing:contract}
+% \end{figure*}
+\end{frame}
+
+
+\begin{frame}{Merchant Integration: Contract}
+  % \begin{figure*}[t!]
+  {\tiny
+ \lstset{language=JavaScript}
+ \lstinputlisting{figs/taler-contract.json}
+%   \caption{Minimal Taler contract over a digital article with a value of 
\EUR{0.10}. The merchant will pay transaction fees up to \EUR{0.01}.  The hash 
over the wire transfer information was truncated to make it fit to the page.}
+%   \label{listing:json-contract}
+ % \end{figure*}
+ }
+\end{frame}
+
+
+\begin{frame}{Withdrawing coins on the Web}
+  \begin{center}
+    \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf}
+  \end{center}
+\end{frame}
+
+
+\begin{frame}{Payment processing with Taler}
+  \begin{center}
+    \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf}
+  \end{center}
+\end{frame}
+
+
+\begin{frame}{Current technical developments}
+  \begin{itemize}
+  \item Improving wallet (error handling, features, browser support)
+  \item Support for refunds
+  \item Ongoing work on exchange auditing
+  \item Tutorial for Web shop integration (more languages, gain experience 
from workshops)
+  \end{itemize}
+  \vfill
+  \begin{center}
+    \url{https://taler.net/en/merchants.html}
+  \end{center}
+\end{frame}
+
+
+\begin{frame}{Business considerations}
+  \begin{itemize}
+  \item Exchange needs to be a legal (!) business to operate.
+  \item Exchange operator income is from {\em transaction fees}.
+  \item Created Taler Systems S.A. in Luxemburgh.
+  \item Now trying to find partners and financing for startup.
+  \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Community considerations}
+  \begin{itemize}
+  \item Initial accumulation: Who gets to mint currency?
+  \item Speculation: Who controls the money supply?
+  \item Social welfare:
+    \begin{itemize}
+    \item Who gets to set tax rules and rates?
+    \item Who gets to allocate tax revenue?
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+
+\begin{frame}
+\frametitle{Do you have any questions?}
+\vfill
+References:
+{\tiny
+  \begin{enumerate}
+ \item{Christian Grothoff, Bart Polot and Carlo von Loesch.
+       {\em The Internet is broken: Idealistic Ideas for Building a GNU 
Network}.
+       {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive 
Monitoring (STRINT)}, 2014.}
+ \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci.
+       {\em Enabling Secure Web Payments with GNU Taler}.
+       {\bf SPACE 2016}.}
+ \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges 
and Christian Grothoff.
+       {\em Taler: Taxable Anonymous Libre Electronic Reserves}.
+       Available upon request. 2016.}
+ \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian 
Miers, Eran Tromer and Madars Virza.
+       {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}.
+       {\bf IEEE Symposium on Security \& Privacy, 2016}.}
+ \item{David Chaum, Amos Fiat and Moni Naor.
+       {\em Untraceable electronic cash}.
+       {\bf Proceedings on Advances in Cryptology, 1990}.}
+  \item{Phillip Rogaway.
+       {\em The Moral Character of Cryptographic Work}.
+       {\bf Asiacrypt}, 2015.} \label{bib:rogaway}
+\end{enumerate}
+}
+\begin{center}
+  {\bf This is a Free Software project. \\
+       It will NOT happen without your help!}
+\end{center}
+\end{frame}
+
+
+\end{document}
diff --git a/presentations/workshop/taler-big-accent.pdf 
b/presentations/workshop/taler-big-accent.pdf
new file mode 100644
index 0000000..5ba9ea7
Binary files /dev/null and b/presentations/workshop/taler-big-accent.pdf differ
diff --git a/presentations/workshop/taler-big-accent.svg 
b/presentations/workshop/taler-big-accent.svg
new file mode 100644
index 0000000..8dd2cf5
--- /dev/null
+++ b/presentations/workshop/taler-big-accent.svg
@@ -0,0 +1,44 @@
+<svg xmlns="http://www.w3.org/2000/svg"; version="1.1" viewBox="-50 -50 100 100"
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+  <style>
+    .ts1 { fill: #aa3939; letter-spacing:0; }
+    .ts2 { letter-spacing:0; }
+  </style>
+
+  <circle cx="0" cy="0" r="40" stroke="black" stroke-width="7.5" fill="none" />
+  <circle cx="0" cy="0" r="45" stroke="black" stroke-width="1" fill="none" />
+  <!-- big horizontal T stroke -->
+  <rect x="-30" y="-14" width="60" height="4"/>
+  <rect x="-30" y="-9" width="60" height="1"/>
+  <rect x="-4" y="-14" width="8" height="54"/>
+
+
+
+  <text font-family="'Lucida Console', Monaco, monospace" font-weight="bold" 
font-size="9" color="red" x="0" y="-18" text-anchor="middle" 
letter-spacing="0.20em">
+    <tspan class="ts1">&#10092;</tspan>Tale<tspan class="ts2">r<tspan 
class="ts1">&#10093;</tspan></tspan>
+  </text>
+
+
+  <defs>
+    <path id="MyPath1"
+          d="M -38 0 A 38 38 1 0 1 38 0" />
+  </defs>
+
+  <defs>
+    <path id="MyPath2"
+          d="M 0 42 A 42 42 1 0 0 0 -42" />
+  </defs>
+
+
+  <text font-family="Verdana" font-size="6" color="red" fill="white">
+    <textPath xlink:href="#MyPath1">
+      Taxable Anonymous Libre
+    </textPath>
+  </text>
+
+  <text font-family="Verdana" font-size="6" color="red" fill="white">
+    <textPath xlink:href="#MyPath2">
+      Electronic Reserves
+    </textPath>
+  </text>
+</svg> 

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]