In Haskell, ad-hoc polymorphism is achieved through the use of \emph{type
classes}, where a class definition provides the general interface of a
function, and class \emph{instances} define the functionality for the
- specific types. For example, all numeric types are gathered in the
- \hs{Num} class, and the type of \emph{addition} is expressed by prefixing
- by prefixing the type signature with a constraint on the type parameter:
+ specific types. For example, all numeric operators are gathered in the
+ \hs{Num} class, so every type that wants to use those operators must be
+ made an instance of \hs{Num}.
+
+ By prefixing a type signature with class constraints, the constrained type
+ parameters are forced to belong to that type class. For example, the
+ arguments of the \hs{add} function must belong to the \hs{Num} type class
+ because the \hs{add} function adds them with the (+) operator:
\begin{code}
- (+) :: Num a => a -> a -> a
+ add :: Num a => a -> a -> a
+ add a b = a + b
\end{code}
% An example of a type signature that includes such a constraint if the
argument depending on how the function is applied. There is however one
constraint: the top level function that is being translated can not have
polymorphic arguments. The arguments of the top-level can not be
- polymorphic as there would be no way to infer the specific types of
- the arguments.
+ polymorphic as there is no way to infer the \emph{specific} types of the
+ arguments.
With regard to the built-in types, it should be noted that members of
some of the standard Haskell type classes are supported as built-in
\subsection{Higher-order functions \& values}
Another powerful abstraction mechanism in functional languages, is
- the concept of \emph{functions as a first class value}, also called
- \emph{higher-order functions}. This allows a function to be treated as a
- value and be passed around, even as the argument of another
+ the concept of \emph{functions as a first class value} and
+ \emph{higher-order functions}. These concepts allows a function to be
+ treated as a value and be passed around, even as the argument of another
function. The following example should clarify this concept:
\hspace{-1.7em}
\begin{minipage}{0.93\linewidth}
%format not = "\mathit{not}"
\begin{code}
- negateVector xs = map not xs
+ negate{-"\!\!\!"-}Vector xs = map not xs
\end{code}
\end{minipage}
\begin{minipage}{0.07\linewidth}
\end{example}
\end{minipage}
- The code above defines the \hs{negateVector} function, which takes a
- vector of booleans, \hs{xs}, and returns a vector where all the values are
- negated. It achieves this by calling the \hs{map} function, and passing it
- \emph{another function}, boolean negation, and the vector of booleans,
- \hs{xs}. The \hs{map} function applies the negation function to all the
- elements in the vector.
+ The code above defines the \hs{negate{-"\!\!\!"-}Vector} function, which
+ takes a vector of booleans, \hs{xs}, and returns a vector where all the
+ values are negated. It achieves this by calling the \hs{map} function, and
+ passing it \emph{another function}, boolean negation, and the vector of
+ booleans, \hs{xs}. The \hs{map} function applies the negation function to
+ all the elements in the vector.
The \hs{map} function is called a higher-order function, since it takes
another function as an argument. Also note that \hs{map} is again a
map :: (a -> b) -> [a|n] -> [b|n]
\end{code}
- So far, only functions have been used as higher-order values. In
- Haskell, there are two more ways to obtain a function-typed value:
+ In Haskell, there are two more ways to obtain a function-typed value:
partial application and lambda abstraction. Partial application
means that a function that takes multiple arguments can be applied
to a single argument, and the result will again be a function (but
Here, the expression \hs{(add 1)} is the partial application of the
addition function to the value \hs{1}, which is again a function that
- adds one to its (next) argument. A lambda expression allows one to
- introduce an anonymous function in any expression. Consider the following
- expression, which again adds one to every element of a vector:
+ adds one to its (next) argument.
+
+ A lambda expression allows one to introduce an anonymous function in any
+ expression. Consider the following expression, which again adds one to
+ every element of a vector:
\hspace{-1.7em}
\begin{minipage}{0.93\linewidth}
Finally, not only built-in functions can have higher order arguments (such
as the \hs{map} function), but any function defined in \CLaSH\ may have
- functions as arguments. This allows the circuit designer to use a
- powerful amount of code reuse. The only exception is again the top-level
- function: if a function-typed argument is not applied with an actual
+ functions as arguments. This allows the circuit designer to apply a
+ large amount of code reuse. The only exception is again the top-level
+ function: if a function-typed argument is not instantiated with an actual
function, no hardware can be generated.
An example of a common circuit where higher-order functions and partial
\label{code:crossbar}
\end{example}
\end{minipage}
-
- The crossbar is polymorphic in the width of the input (defined by the
- length of \hs{inputs}), the width of the output (defined by the length of
+
+ The the \hs{crossbar} function selects those values from \hs{inputs} that
+ are indicated by the indexes in the vector \hs{selects}. The crossbar is
+ polymorphic in the width of the input (defined by the length of
+ \hs{inputs}), the width of the output (defined by the length of
\hs{selects}), and the signal type (defined by the element type of
\hs{inputs}). The type-checker can also automatically infer that
\hs{selects} is a vector of \hs{Index} values due to the use of the vector
In a stateful design, the outputs depend on the history of the inputs, or
the state. State is usually stored in registers, which retain their value
during a clock cycle. As \CLaSH\ has to be able to describe more than
- simple combinational designs, there is a need for an abstraction mechanism
+ plain combinational designs, there is a need for an abstraction mechanism
for state.
An important property in Haskell, and in many other functional languages,
% correct for impure functions.
Pure functions are as such a perfect match for combinational circuits,
where the output solely depends on the inputs. When a circuit has state
- however, it can no longer be simply described by a pure function.
+ however, it can no longer be described by a pure function.
% Simply removing the purity property is not a valid option, as the
% language would then lose many of it mathematical properties.
- In \CLaSH\ deals with the concept of state in pure functions by making
- the current state an additional argument of the function, and the
- updated state part of result. In this sense the descriptions made in
- \CLaSH\ are the combinational parts of a mealy machine.
+ \CLaSH\ deals with the concept of state by making the current state an
+ additional argument of the function, and the updated state part of the
+ result. In this sense the descriptions made in \CLaSH\ are the
+ combinational parts of a mealy machine.
A simple example is adding an accumulator register to the earlier
multiply-accumulate circuit, of which the resulting netlist can be seen in
explicit: which variables are part of the state is completely determined
by the type signature. This approach to state is well suited to be used in
combination with the existing code and language features, such as all the
- choice elements, as state values are just normal values. Stateful
- descriptions are simulated using the recursive \hs{run} function:
+ choice elements, as state values are just normal values from Haskell's
+ point of view. Stateful descriptions are simulated using the recursive
+ \hs{run} function:
\hspace{-1.7em}
\begin{minipage}{0.93\linewidth}
and the updated state \hs{s'}. The next iteration of the \hs{run} function
is then called with the updated state, \hs{s'}, and the rest of the
inputs, \hs{inps}. For the time being, and in the context of this paper,
- it is assumed that there is one input per clock cycle. Also note how the
- order of the input, output, and state in the \hs{run} function corresponds
+ it is assumed that there is one input per clock cycle. Note that the order
+ of \hs{s',o,s,i} in the where clause of the \hs{run} functions corresponds
with the order of the input, output and state of the \hs{macS} function
- described earlier.
+ described earlier. Thus, in Haskell the expression \hs{run macS 0 inputs}
+ simulates \hs{macS} on \hs{inputs} starting with the value \hs{0}
\begin{figure}
\centerline{\includegraphics{mac-state.svg}}
\vspace{-1.5em}
\end{figure}
- As the \hs{run} function, the hardware description, and the test
- inputs are also valid Haskell, the complete simulation can be compiled to
- an executable binary by an optimizing Haskell compiler, or executed in an
- Haskell interpreter. Both simulation paths require less effort from a
- circuit designer than first translating the description to \VHDL\ and then
- running a \VHDL\ simulation; it is also very likely that both simulation
- paths are much faster.
+ The complete simulation can be compiled to an executable binary by an
+ optimizing Haskell compiler, or executed in an Haskell interpreter. Both
+ simulation paths require less effort from a circuit designer than first
+ translating the description to \VHDL\ and then running a \VHDL\
+ simulation; it is also very likely that both simulation paths are much
+ faster.
\section{The \CLaSH\ compiler}
An important aspect in this research is the creation of the prototype
% , allowing a designer to actually run a \CLaSH\ design on an \acro{FPGA}.
The Glasgow Haskell Compiler (\GHC)~\cite{ghc} is an open-source Haskell
-compiler that also provides a high level API to most of its internals. The
-availability of this high-level API obviated the need to design many of the
-tedious parts of the prototype compiler, such as the parser, semantics
-checker, and especially the type-checker. These parts together form the
-front-end of the prototype compiler pipeline, as seen in
+compiler that also provides a high level \acro{API} to most of its internals.
+The availability of this high-level \acro{API} obviated the need to design
+many of the tedious parts of the prototype compiler, such as the parser,
+semantics checker, and especially the type-checker. These parts together form
+the front-end of the prototype compiler pipeline, as seen in
\Cref{img:compilerpipeline}.
\begin{figure}
\end{figure}
The output of the \GHC\ front-end consists of the translation of the original
-Haskell description to \emph{Core}~\cite{Sulzmann2007}, which is a smaller,
-typed, functional language. This \emph{Core} language is relatively easy to
+Haskell description to \emph{Core}~\cite{Sulzmann2007}, which is a small
+typed functional language. This \emph{Core} language is relatively easy to
process compared to the larger Haskell language. A description in \emph{Core}
can still contain elements which have no direct translation to hardware, such
as polymorphic types and function-valued arguments. Such a description needs
\section{Use cases}
\label{sec:usecases}
\subsection{FIR Filter}
-As an example of a common hardware design where the relation between functional languages and mathematical functions, combined with the use of higher-order functions leads to a very natural description is a \acro{FIR} filter:
+As an example of a common hardware design where the relation between
+functional languages and mathematical functions, combined with the use of
+higher-order functions leads to a very natural description is a \acro{FIR}
+filter:
\begin{equation}
y_t = \sum\nolimits_{i = 0}^{n - 1} {x_{t - i} \cdot h_i }
A \acro{FIR} filter multiplies fixed constants ($h$) with the current
and a few previous input samples ($x$). Each of these multiplications
are summed, to produce the result at time $t$. The equation of a \acro{FIR}
-filter is equivalent to the equation of the dot-product, which is shown below:
+filter is equivalent to the equation of the dot-product of two vectors, which
+is shown below:
\begin{equation}
\mathbf{a}\bullet\mathbf{b} = \sum\nolimits_{i = 0}^{n - 1} {a_i \cdot b_i }
\end{example}
\end{minipage}
-Where the vector \hs{xs} contains the previous input samples, the vector
+where the vector \hs{xs} contains the previous input samples, the vector
\hs{hs} contains the \acro{FIR} coefficients, and \hs{x} is the current input
sample. The concatenate operator (\hs{+>}) creates a new vector by placing the
current sample (\hs{x}) in front of the previous samples vector (\hs{xs}). The
\end{example}
\end{minipage}
-Where the \hs{init} function returns all but the last element of a vector.
+where the \hs{init} function returns all but the last element of a vector.
The resulting netlist of a 4-taps \acro{FIR} filter, created by specializing
the vectors of the \acro{FIR} code to a length of 4, is depicted in
\Cref{img:4tapfir}.
\end{figure}
\subsection{Higher-order CPU}
-The following simple \acro{CPU} is an example of user-defined higher-order
-functions and pattern matching. The \acro{CPU} consists of four function
-units, of which three have a fixed function and one can perform certain less
-common operations.
-
-The \acro{CPU} contains a number of data sources, represented by the
-horizontal wires in \Cref{img:highordcpu}. These data sources offer the
-previous output of every function unit, along with the single data input of
-the \acro{CPU} and two fixed initialization values.
+%format fun x = "\textit{fu}_" x
+In this section discusses a somewhat more serious example in which
+user-defined higher-order function, partial application, lambda expressions,
+and pattern matching are exploited. The example concerns a \acro{CPU} which
+consists of four function unites \hs{fun 0,{-"\ldots"-},fun 3} (see
+\Cref{img:highordcpu}) that each perform some binary operation.
\begin{figure}
\centerline{\includegraphics{highordcpu.svg}}
\vspace{-1.5em}
\end{figure}
-Each of the function units has both its operands connected to all data
-sources, and can be programmed to select any data source for either
-operand. In addition, the leftmost function unit has an additional
-opcode input to select the operation it performs. The previous output of the
-rightmost function unit is the output of the entire \acro{CPU}.
+Every function unit has seven data inputs (of type \hs{Word}), and two address
+inputs (of type \hs{Index 6}) which indicate which data inputs have to be
+chosen as arguments for the the binary operation that the unit performs. These
+data inputs consists of one external input \hs{x}, two fixed initialization
+values (0 and 1), and the previous outputs of the four function units. The
+output of the \acro{CPU} as a whole is the previous output of \hs{fun 3}.
-The code of the function unit (\ref{code:functionunit}), which arranges the operand selection for the function unit, is shown below. Note that the actual operation that takes place inside the function unit is supplied as the (higher-order) argument \hs{op}, which is a function that takes two arguments.
+The function units \hs{fun 1, fun 2, fun 3} can perform a fixed binary
+operation, whereas \hs{fun 0} has an additional input for an opcode to choose
+a binary operation out of a few possibilities.
+
+Each function unit outputs its result into a register, i.e., the state of the
+\acro{CPU}. This can can e.g. be defined as follows:
+
+\begin{code}
+type CpuState = State [Word | 4]
+\end{code}
+
+Every function unit can now be defined by the following higher-order function
+\hs{fu}, which takes three arguments: the operation \hs{op} that the function
+unit performs, the seven \hs{inputs}, and the pair \hs{(a1,a2)} of two
+addresses:
\hspace{-1.7em}
\begin{minipage}{0.93\linewidth}
\begin{code}
-fu op inputs (addr1, addr2) = regIn
+fu op inputs (a1, a2) = regIn
where
- in1 = inputs!addr1
- in2 = inputs!addr2
- regIn = op in1 in2
+ arg1 = inputs!a1
+ arg2 = inputs!a2
+ regIn = op arg1 arg2
\end{code}
\end{minipage}
\begin{minipage}{0.07\linewidth}
\end{example}
\end{minipage}
-The \hs{multiop} function (\ref{code:multiop}) defines the operation that takes place in the leftmost function unit. It is essentially a simple three operation \acro{ALU} that makes good use of pattern matching and guards in its description. The \hs{shift} function used here shifts its first operand by the number of bits indicated in the second operand, the \hs{xor} function produces
-the bitwise xor of its operands.
+Using partial application we now define:
+
+\hspace{-1.7em}
+\begin{minipage}{0.93\linewidth}
+\begin{code}
+fun 1 = fu add
+fun 2 = fu sub
+fun 3 = fu mul
+\end{code}
+\end{minipage}
+\begin{minipage}{0.07\linewidth}
+ \begin{example}
+ \label{code:functionunits1to3}
+ \end{example}
+\end{minipage}
+
+In order to define \hs{fun 0} we first define the type \hs{Opcode} for the
+opcode and the function \hs{multiop} that chooses a specific operation given
+the opcode. We assume that the functions \hs{shifts} (which shifts its first
+operand by the number of bits indicate in the second operand), \hs{xor} (for
+the bitwise \hs{xor}), and (==) (for equality) already exits.
\hspace{-1.7em}
\begin{minipage}{0.93\linewidth}
\begin{code}
data Opcode = Shift | Xor | Equal
-multiop :: Opcode -> Word -> Word -> Word
-multiop Shift a b = shift a b
-multiop Xor a b = xor a b
-multiop Equal a b | a == b = 1
- | otherwise = 0
+multiop Shift = shift
+multiop Xor = xor
+multiop Equal = \a b -> if a == b then 1 else 0
\end{code}
\end{minipage}
\begin{minipage}{0.07\linewidth}
\end{example}
\end{minipage}
-The \acro{CPU} function (\ref{code:cpu}) ties everything together. It applies
-the function unit (\hs{fu}) to several operations, to create a different
-function unit each time. The first application is interesting, as it does not
-just pass a function to \hs{fu}, but a partial application of \hs{multiop}.
-This demonstrates how one function unit can effectively get extra inputs
-compared to the others.
-
-The vector \hs{inputs} is the set of data sources, which is passed to
-each function unit as a set of possible operants. The \acro{CPU} also receives
-a vector of address pairs, which are used by each function unit to select
-their operand.
-% The application of the function units to the \hs{inputs} and
-% \hs{addrs} arguments seems quite repetitive and could be rewritten to use
-% a combination of the \hs{map} and \hs{zipwith} functions instead.
-% However, the prototype compiler does not currently support working with
-% lists of functions, so a more explicit version of the code is given instead.
+Note that the result of \hs{multiop} is a binary function; this is supported
+by \CLaSH. We can now define \hs{fun 0} as a function which takes an opcode as
+additional argument:
\hspace{-1.7em}
\begin{minipage}{0.93\linewidth}
\begin{code}
-type CpuState = State [Word | 4]
+fun 0 c = fu (multiop c)
+\end{code}
+\end{minipage}
+\begin{minipage}{0.07\linewidth}
+ \begin{example}
+ \label{code:functionunit0}
+ \end{example}
+\end{minipage}
+
+Now we come to the definition \hs{cpu} of the full \acro{CPU}. Its type is:
-cpu :: CpuState -> Word -> [(Index 6, Index 6) | 4]
- -> Opcode -> (CpuState, Word)
-cpu (State s) input addrs opc = (State s', out)
+\begin{code}
+cpu :: CpuState
+ -> (Word, Opcode, [(Index 6, Index 6) | 4])
+ -> (CpuState, Word)
+\end{code}
+
+Note that this type fits the requirements of the function \hs{run}. The
+definition of the \hs{cpu} now is:
+
+\hspace{-1.7em}
+\begin{minipage}{0.93\linewidth}
+\begin{code}
+cpu (State s) (x,opc,addrs) = (State s', out)
where
- s' = [ fu (multiop opc) inputs (addrs!0)
- , fu add inputs (addrs!1)
- , fu sub inputs (addrs!2)
- , fu mul inputs (addrs!3)
- ]
- inputs = 0 +> (1 +> (input +> s))
+ inputs = x +> (0 +> (1 +> s))
+ s' = [{-"\;"-}fun 0 opc inputs (addrs!0)
+ ,{-"\;"-}fun 1 inputs (addrs!1)
+ ,{-"\;"-}fun 2 inputs (addrs!2)
+ ,{-"\;"-}fun 3 inputs (addrs!3)
+ ]
out = last s
\end{code}
\end{minipage}
\end{example}
\end{minipage}
-While this is still a simple example, it could form the basis of an actual
-design, in which the same techniques can be reused.
+While this is still a simple (and maybe not very useful) design, it
+illustrates some possibilities that \CLaSH\ offers and suggests how to write
+actual designs.
+
+% Each of the function units has both its operands connected to all data
+% sources, and can be programmed to select any data source for either
+% operand. In addition, the leftmost function unit has an additional
+% opcode input to select the operation it performs. The previous output of the
+% rightmost function unit is the output of the entire \acro{CPU}.
+%
+% The code of the function unit (\ref{code:functionunit}), which arranges the
+% operand selection for the function unit, is shown below. Note that the actual
+% operation that takes place inside the function unit is supplied as the
+% (higher-order) argument \hs{op}, which is a function that takes two arguments.
+%
+%
+%
+% The \hs{multiop} function (\ref{code:multiop}) defines the operation that takes place in the leftmost function unit. It is essentially a simple three operation \acro{ALU} that makes good use of pattern matching and guards in its description. The \hs{shift} function used here shifts its first operand by the number of bits indicated in the second operand, the \hs{xor} function produces
+% the bitwise xor of its operands.
+%
+%
+% The \acro{CPU} function (\ref{code:cpu}) ties everything together. It applies
+% the function unit (\hs{fu}) to several operations, to create a different
+% function unit each time. The first application is interesting, as it does not
+% just pass a function to \hs{fu}, but a partial application of \hs{multiop}.
+% This demonstrates how one function unit can effectively get extra inputs
+% compared to the others.
+%
+% The vector \hs{inputs} is the set of data sources, which is passed to
+% each function unit as a set of possible operants. The \acro{CPU} also receives
+% a vector of address pairs, which are used by each function unit to select
+% their operand.
+% The application of the function units to the \hs{inputs} and
+% \hs{addrs} arguments seems quite repetitive and could be rewritten to use
+% a combination of the \hs{map} and \hs{zipwith} functions instead.
+% However, the prototype compiler does not currently support working with
+% lists of functions, so a more explicit version of the code is given instead.
+
+% While this is still a simple example, it could form the basis of an actual
+% design, in which the same techniques can be reused.
\section{Related work}
This section describes the features of existing (functional) hardware
\acro{HML}~\cite{HML2} is a hardware modeling language based on the strict
functional language \acro{ML}, and has support for polymorphic types and
higher-order functions. There is no direct simulation support for \acro{HML},
-so a description in \acro{HML} has to be translated to \VHDL\ and that the
+so a description in \acro{HML} has to be translated to \VHDL\ and the
translated description can then be simulated in a \VHDL\ simulator. Certain
aspects of HML, such as higher-order functions are however not supported by
the \VHDL\ translator~\cite{HML3}. The \CLaSH\ compiler on the other hand can
-correctly translate all of the language constructs mentioned in this paper.
+correctly translate all of its language constructs.
Like the research presented in this paper, many functional hardware
description languages have some sort of foundation in the functional
programming language Haskell. Hawk~\cite{Hawk1} is a hardware modeling
language embedded in Haskell and has sequential environments that make it
-easier to specify stateful computation. Hawk specifications can be simulated;
-to the best knowledge of the authors there is however no support for automated
-circuit synthesis.
+easier to specify stateful computation (by using the \acro{ST} monad). Hawk
+specifications can be simulated; to the best knowledge of the authors there is
+however no support for automated circuit synthesis.
The ForSyDe~\cite{ForSyDe2} system uses Haskell to specify abstract system
models. A designer can model systems using heterogeneous models of
computation, which include continuous time, synchronous and untimed models of
computation. Using so-called domain interfaces a designer can simulate
-electronic systems which have both analog as digital parts. ForSyDe has
+electronic systems which have both analog and digital parts. ForSyDe has
several backends including simulation and automated synthesis, though
automated synthesis is restricted to the synchronous model of computation.
Though ForSyDe offers higher-order functions and polymorphism, ForSyDe's
choice elements are limited to \hs{if} and \hs{case} expressions. ForSyDe's
-explicit conversions, where function have to be wrapped in processes and
+explicit conversions, where functions have to be wrapped in processes and
processes have to be wrapped in systems, combined with the explicit
-instantiations of components, also makes ForSyDe more verbose than \CLaSH.
+instantiations of components, also makes ForSyDe far more verbose than \CLaSH.
-Lava~\cite{Lava,kansaslava} is a hardware description language, embedded in
-Haskell, and focuses on the structural representation of hardware. Like
+Lava~\cite{Lava,kansaslava} is a hardware description language embedded in
+Haskell which focuses on the structural representation of hardware. Like
\CLaSH, Lava has support for polymorphic types and higher-order functions.
Besides support for simulation and circuit synthesis, Lava descriptions can be
interfaced with formal method tools for formal verification. As discussed in
elements, such as \hs{case}-expressions and pattern matching, are synthesized
to choice elements in the eventual circuit. Consequently, descriptions
containing rich control structures can be specified in a more user-friendly
-way in \CLaSH\ than possible within Lava, and are hence less error-prone.
+way in \CLaSH\ than possible within Lava, and hence are less error-prone.
Bluespec~\cite{Bluespec} is a high-level synthesis language that features
guarded atomic transactions and allows for the automated derivation of control
standard~\cite{VHDL2008}. \VHDL-2008 support for generics has been extended to
types and subprograms, allowing a designer to describe components with
polymorphic ports and function-valued arguments. Note that the types and
-subprograms still require an explicit generic map, whereas types can be
-automatically inferred, and function-values can be automatically propagated
-by the \CLaSH\ compiler. There are also no (generally available) \VHDL\
-synthesis tools that currently support the \VHDL-2008 standard.
+subprograms still require an explicit generic map, while the \CLaSH\ compiler
+automatically infers types, and automatically propagates function-valued
+arguments. There are also no (generally available) \VHDL\ synthesis tools that
+currently support the \VHDL-2008 standard.
% Wired~\cite{Wired},, T-Ruby~\cite{T-Ruby}, Hydra~\cite{Hydra}.
%
for hardware descriptions: function applications provide an elegant notation
for component instantiation. While circuit descriptions made in \CLaSH\ are
very concise when compared to other (traditional) \acrop{HDL}, their intended
-functionality remains clear. Where \CLaSH\ goes beyond the existing
-(functional) hardware descriptions languages is the inclusion of advanced
-choice elements, such as pattern matching and guards, that are well suited to
-describe the conditional assignments in control-oriented circuits. Besides
-being able to translate these basic constructs to synthesizable \VHDL, the
-prototype compiler can also correctly translate descriptions that contain both
-polymorphic types and user-defined higher-order functions.
+functionality remains clear. \CLaSH\ goes beyond the existing (functional)
+hardware descriptions languages by including advanced choice elements, such as
+pattern matching and guards, which are well suited to describe the conditional
+assignments in control-oriented circuits. Besides being able to translate
+these basic constructs to synthesizable \VHDL, the prototype compiler can also
+correctly translate descriptions that contain both polymorphic types and
+user-defined higher-order functions.
% Where recent functional hardware description languages have mostly opted to
% embed themselves in an existing functional language, this research features
numbers.
\section{Future Work}
-The choice of describing state explicitly as extra arguments and results can
-be seen as a mixed blessing. Even though the description that use state are
+The choice of describing state explicitly as and extra argument and result can
+be seen as a mixed blessing. Even though descriptions that use state are
usually very clear, one finds that distributing and collecting substate can
-become tedious and even error-prone. Removing the required boilerplate for
-distribution and collection, or finding a more suitable abstraction mechanism
-for state would make \CLaSH\ easier to use.
+become tedious and even error-prone. Automating the required distribution and
+collection, or finding a more suitable abstraction mechanism for state would
+make \CLaSH\ easier to use. Currently, one of the examined approaches to
+suppress state in the specification is by using Haskell's arrow-abstraction.
-The transformations in normalization phase of the prototype compiler are
+The transformations in the normalization phase of the prototype compiler are
developed in an ad-hoc manner, which makes the existence of many desirable
properties unclear. Such properties include whether the complete set of
-transformations will always lead to a normal form or if the normalization
+transformations will always lead to a normal form or whether the normalization
process always terminates. Though extensive use of the compiler suggests that
these properties usually hold, they have not been formally proven. A
systematic approach to defining the set of transformations allows one to proof
-that the earlier mentioned properties do indeed exist.
+that the earlier mentioned properties do indeed hold.
% conference papers do not normally have an appendix
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="268.49905"
- height="160.43082"
+ height="182.57144"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8842873"
- inkscape:cx="120.61935"
- inkscape:cy="81.310286"
+ inkscape:cx="122.04944"
+ inkscape:cy="53.169603"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
- type="xygrid"
- id="grid2818"
- empspacing="5"
- visible="true"
+ snapvisiblegridlinesonly="true"
enabled="true"
- snapvisiblegridlinesonly="true" />
+ visible="true"
+ empspacing="5"
+ id="grid2818"
+ type="xygrid" />
</sodipodi:namedview>
<defs
id="defs4">
<marker
- inkscape:stockid="Arrow1Mstart"
- orient="auto"
- refY="0"
- refX="0"
+ style="overflow:visible"
id="Arrow1Mstart"
- style="overflow:visible">
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mstart">
<path
- id="path6180"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ transform="matrix(0.4,0,0,0.4,4,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.4,0,0,0.4,4,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ id="path6180" />
</marker>
<marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
+ style="overflow:visible"
id="Arrow1Lend"
- style="overflow:visible">
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
<path
- id="path6177"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ id="path6177" />
</marker>
<marker
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refY="0"
- refX="0"
+ style="overflow:visible"
id="Arrow1Mend"
- style="overflow:visible">
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
<path
- id="path3732"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ id="path3732" />
</marker>
<marker
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refY="0"
- refX="0"
+ style="overflow:visible"
id="Arrow1Send"
- style="overflow:visible">
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send">
<path
- id="path3738"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ id="path3738" />
</marker>
<inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
+ id="perspective10"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective3098"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
+ inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
- id="perspective3128"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ id="perspective3098" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ id="perspective3128" />
</defs>
<metadata
id="metadata7">
</rdf:RDF>
</metadata>
<g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
+ transform="translate(-347.22,-807.8203)"
id="layer1"
- transform="translate(-347.22,-807.8203)">
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
<rect
- transform="translate(347.22,820.7037)"
- y="-5.2674403"
- x="26"
- height="152.31485"
- width="231"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect9258"
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ width="229.48787"
+ height="173.92477"
+ x="27.136841"
+ y="-4.7367358"
+ transform="translate(347.22,820.7037)" />
<path
- sodipodi:nodetypes="cccc"
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
+ id="path3366"
d="m 407.909,879.80127 0,-45.19995 167.73323,0 -0.022,45.19994"
- id="path3366" />
- <path
- id="path3368"
- d="m 417.875,879.80127 0,-37.19995 168.899,0 0,37.19994"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
sodipodi:nodetypes="cccc" />
<path
+ sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
- d="m 412.899,879.80127 0,-41.19995 168.275,0 0,41.19994"
+ d="m 417.875,879.80127 0,-37.19995 168.899,0 0,37.19994"
+ id="path3368" />
+ <path
+ sodipodi:nodetypes="cccc"
id="path3370"
- sodipodi:nodetypes="cccc" />
+ d="m 412.899,879.80127 0,-41.19995 168.275,0 0,41.19994"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)" />
<path
- id="path3373"
- d="m 422.987,879.80127 0,-33.19995 175.889,0 0,94.79994 -12.133,-0.1"
+ sodipodi:nodetypes="ccccc"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
- sodipodi:nodetypes="ccccc" />
+ d="m 422.987,879.80127 0,-33.19995 175.889,0 0,94.79994 -12.133,-0.1"
+ id="path3373" />
<path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
- d="m 378.165,838.60132 -0.096,-16 180.504,0 0,57.19994"
+ sodipodi:nodetypes="cccc"
id="path3375"
- sodipodi:nodetypes="cccc" />
+ d="m 378.165,838.60132 -0.096,-12 186.504,0 0,53.19994"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
<path
- id="path3377"
- d="m 384.065,838.50112 -0.0206,-11.8998 180.07961,0 0,53.19994"
+ sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
- sodipodi:nodetypes="cccc" />
+ d="m 384.065,838.50112 -0.0206,-7.8998 186.07961,0 0,49.19994"
+ id="path3377" />
<path
- id="path3381"
- d="m 347.96478,830.60132 222.15922,0 0,49.19994"
+ sodipodi:nodetypes="ccc"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
- sodipodi:nodetypes="ccc" />
+ d="m 347.96478,822.60132 211.05922,0 0,57.19994"
+ id="path3381" />
<path
- sodipodi:nodetypes="ccc"
- id="path3197"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
d="m 418.12999,941.60132 12.99001,0 0,-106.7"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
+ id="path3197"
+ sodipodi:nodetypes="ccc" />
<rect
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect3343"
- width="40"
- height="30"
+ y="881.60132"
x="387.72"
- y="881.60132" />
+ height="30"
+ width="40"
+ id="rect3343"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
- id="g3345"
- transform="matrix(1,0,0,-1,179.265,1556.175)"
- xml:space="preserve"
- stroke-miterlimit="10.433"
- font-style="normal"
- font-variant="normal"
- font-weight="normal"
- font-stretch="normal"
- font-size-adjust="none"
- letter-spacing="normal"
- word-spacing="normal"
- ns0:text="$\\mathbf{fu}$\n\n\n\n"
- ns0:preamble=""
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
-<path
- style="fill:#000000;stroke-width:0"
- d="m 224.6,661.66 h -0.75 v -0.47 h 0.75 v -3.49 h -0.69 v -0.47 c 0.35,0.01 0.8,0.03 1.26,0.03 0.37,0 1.01,0 1.37,-0.03 v 0.47 h -0.87 v 3.49 h 1.15 v 0.47 h -1.21 v 1 c 0,1.1 0.76,1.19 1.01,1.19 0.05,0 0.1,0 0.17,-0.02 -0.15,-0.11 -0.23,-0.3 -0.23,-0.49 0,-0.43 0.35,-0.62 0.61,-0.62 0.3,0 0.62,0.21 0.62,0.62 0,0.42 -0.36,0.87 -1.14,0.87 -0.98,0 -2.05,-0.42 -2.05,-1.55 z"
- id="path3347" />
-<path
- style="fill:#000000;stroke-width:0"
- d="m 231.3,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.68,0 -0.68,0.39 v 3.63 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.76,0 -0.79,0.25 -0.79,0.79 v 3.4 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
- id="path3349" />
-</g> <g
- id="g3351"
- transform="matrix(1.0476464,0,0,1,-56.24068,254.76497)">
+ transform="matrix(1.0476464,0,0,1,-56.24068,254.76497)"
+ id="g3351">
<rect
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect3353"
- width="20"
- height="30"
- x="65"
+ transform="translate(367.86,538.7295)"
y="139.43002"
- transform="translate(367.86,538.7295)" />
+ x="65"
+ height="30"
+ width="20"
+ id="rect3353"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 65,164.43002 5,-5 -5,-5"
+ transform="translate(367.86,538.7295)"
id="path3355"
- transform="translate(367.86,538.7295)" />
+ d="m 65,164.43002 5,-5 -5,-5"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
- sodipodi:nodetypes="cc"
- id="path3358"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 407.72,911.53732 0,19.19"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+ id="path3358"
+ sodipodi:nodetypes="cc" />
<g
- id="g8349"
- transform="matrix(-1,0,0,1,815.24,0)">
+ transform="matrix(-1,0,0,1,815.24,0)"
+ id="g8349">
<g
id="g8323">
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 413.12,830.60132 0,49.2"
- id="path4381"
- sodipodi:nodetypes="cc" />
- <path
- transform="matrix(0.31195247,0,0,0.31195247,429.28726,820.4831)"
- d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- sodipodi:ry="5.4800777"
- sodipodi:rx="5.4800777"
- sodipodi:cy="32.435127"
- sodipodi:cx="-51.79557"
- id="path4383"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- sodipodi:type="arc" />
- </g>
- <g
- id="g8319">
<path
sodipodi:nodetypes="cc"
- id="path4387"
- d="m 418.62,826.60132 0,53.2"
+ id="path4381"
+ d="m 413.12,830.60132 0,49.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path4389"
+ id="path4383"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,434.78726,816.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,429.28726,820.4831)" />
</g>
<g
- id="g8315">
+ id="g8319">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 424.12,822.60132 0,57.2"
- id="path4393"
+ d="m 418.62,826.60132 0,53.2"
+ id="path4387"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,440.28726,812.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,434.78726,816.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path4395"
+ id="path4389"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
+ <g
+ id="g8315">
+ <path
+ sodipodi:nodetypes="cc"
+ id="path4393"
+ d="m 424.12,822.60132 0,57.2"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4395"
+ sodipodi:cx="-51.79557"
+ sodipodi:cy="32.435127"
+ sodipodi:rx="5.4800777"
+ sodipodi:ry="5.4800777"
+ d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
+ transform="matrix(0.31195247,0,0,0.31195247,440.28726,812.4831)" />
+ </g>
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 347.72,896.60132 38,0"
- id="path4422"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 376.72,896.60132 0,25 57.5,0 0,-25 8,0"
- id="path4796"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
- d="m 474.12999,941.60132 12.99001,0 0,-102.7"
+ sodipodi:nodetypes="ccc"
id="path5237"
- sodipodi:nodetypes="ccc" />
+ d="m 474.12999,941.60132 12.99001,0 0,-102.7"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
<rect
- y="881.60132"
- x="443.72"
- height="30"
- width="40"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect5239"
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ width="40"
+ height="30"
+ x="443.72"
+ y="881.60132" />
<g
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- ns0:preamble=""
- ns0:text="$\\mathbf{fu}$\n\n\n\n"
- word-spacing="normal"
- letter-spacing="normal"
- font-size-adjust="none"
- font-stretch="normal"
- font-weight="normal"
- font-variant="normal"
- font-style="normal"
- stroke-miterlimit="10.433"
- xml:space="preserve"
- transform="matrix(1,0,0,-1,235.265,1556.175)"
- id="g5241">
-<path
- id="path5243"
- d="m 224.6,661.66 h -0.75 v -0.47 h 0.75 v -3.49 h -0.69 v -0.47 c 0.35,0.01 0.8,0.03 1.26,0.03 0.37,0 1.01,0 1.37,-0.03 v 0.47 h -0.87 v 3.49 h 1.15 v 0.47 h -1.21 v 1 c 0,1.1 0.76,1.19 1.01,1.19 0.05,0 0.1,0 0.17,-0.02 -0.15,-0.11 -0.23,-0.3 -0.23,-0.49 0,-0.43 0.35,-0.62 0.61,-0.62 0.3,0 0.62,0.21 0.62,0.62 0,0.42 -0.36,0.87 -1.14,0.87 -0.98,0 -2.05,-0.42 -2.05,-1.55 z"
- style="fill:#000000;stroke-width:0" />
-<path
- id="path5245"
- d="m 231.3,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.68,0 -0.68,0.39 v 3.63 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.76,0 -0.79,0.25 -0.79,0.79 v 3.4 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
- style="fill:#000000;stroke-width:0" />
-</g> <g
- transform="matrix(1.0476464,0,0,1,-0.240681,254.76497)"
- id="g5247">
+ id="g5247"
+ transform="matrix(1.0476464,0,0,1,-0.240681,254.76497)">
<rect
- transform="translate(367.86,538.7295)"
- y="139.43002"
- x="65"
- height="30"
- width="20"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect5249"
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ width="20"
+ height="30"
+ x="65"
+ y="139.43002"
+ transform="translate(367.86,538.7295)" />
<path
- transform="translate(367.86,538.7295)"
- id="path5251"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 65,164.43002 5,-5 -5,-5"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ id="path5251"
+ transform="translate(367.86,538.7295)" />
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 463.72,911.53732 0,19.19"
+ sodipodi:nodetypes="cc"
id="path5253"
- sodipodi:nodetypes="cc" />
+ d="m 463.72,911.53732 0,19.19"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<g
- id="g8263"
- transform="matrix(-1,0,0,1,927.24023,0)">
- <g
- id="g5255"
- transform="translate(283.4,190.70953)">
- <path
- sodipodi:nodetypes="cc"
- transform="translate(388.72,664.8395)"
- id="path5257"
- d="m -225,-8.9477081 0,33.1999511"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
- <path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5259"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
- sodipodi:ry="5.4800777"
- d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,179.88726,645.77357)" />
- </g>
+ transform="matrix(-1,0,0,1,927.24023,0)"
+ id="g8263">
<g
- id="g8239">
+ transform="translate(283.4,190.70953)"
+ id="g5255">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 452.62,842.60132 0,37.2"
- id="path5261"
+ d="m -225,-8.9477081 0,33.1999511"
+ id="path5257"
+ transform="translate(388.72,664.8395)"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,468.78726,832.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,179.88726,645.77357)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path5263"
+ id="path5259"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
- id="g8243">
+ id="g8239">
<path
sodipodi:nodetypes="cc"
- id="path5265"
- d="m 458.12,838.60132 0,41.2"
+ id="path5261"
+ d="m 452.62,842.60132 0,37.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5267"
+ id="path5263"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,474.28726,828.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,468.78726,832.4831)" />
</g>
<g
- id="g8247">
+ id="g8243">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 463.62,834.60132 0,45.2"
- id="path5269"
+ d="m 458.12,838.60132 0,41.2"
+ id="path5265"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,479.78726,824.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,474.28726,828.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path5271"
+ id="path5267"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
- </g>
- <g
- id="g8338"
- transform="matrix(-1,0,0,1,927.24,0)">
<g
- id="g8311">
+ id="g8247">
<path
sodipodi:nodetypes="cc"
- id="path5273"
- d="m 469.12,830.60132 0,49.2"
+ id="path5269"
+ d="m 463.62,834.60132 0,45.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5275"
+ id="path5271"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,485.28726,820.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,479.78726,824.4831)" />
</g>
+ </g>
+ <g
+ transform="matrix(-1,0,0,1,927.24,0)"
+ id="g8338">
<g
- id="g8307">
+ id="g8311">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 474.62,826.60132 0,53.2"
- id="path5277"
+ d="m 469.12,830.60132 0,49.2"
+ id="path5273"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,490.78726,816.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,485.28726,820.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path5279"
+ id="path5275"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
- id="g8303">
+ id="g8307">
<path
sodipodi:nodetypes="cc"
- id="path5281"
- d="m 480.12,822.60132 0,57.2"
+ id="path5277"
+ d="m 474.62,826.60132 0,53.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5283"
+ id="path5279"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,496.28726,812.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,490.78726,816.4831)" />
+ </g>
+ <g
+ id="g8303">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+ d="m 480.12,822.60132 0,57.2"
+ id="path5281"
+ sodipodi:nodetypes="cc" />
+ <path
+ transform="matrix(0.31195247,0,0,0.31195247,496.28726,812.4831)"
+ d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
+ sodipodi:ry="5.4800777"
+ sodipodi:rx="5.4800777"
+ sodipodi:cy="32.435127"
+ sodipodi:cx="-51.79557"
+ id="path5283"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
</g>
</g>
<rect
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect5289"
- width="40"
- height="30"
+ y="881.60132"
x="555.71997"
- y="881.60132" />
+ height="30"
+ width="40"
+ id="rect5289"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
- id="g5291"
- transform="matrix(1,0,0,-1,347.265,1556.175)"
- xml:space="preserve"
- stroke-miterlimit="10.433"
- font-style="normal"
- font-variant="normal"
- font-weight="normal"
- font-stretch="normal"
- font-size-adjust="none"
- letter-spacing="normal"
- word-spacing="normal"
- ns0:text="$\\mathbf{fu}$\n\n\n\n"
- ns0:preamble=""
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
-<path
- style="fill:#000000;stroke-width:0"
- d="m 224.6,661.66 h -0.75 v -0.47 h 0.75 v -3.49 h -0.69 v -0.47 c 0.35,0.01 0.8,0.03 1.26,0.03 0.37,0 1.01,0 1.37,-0.03 v 0.47 h -0.87 v 3.49 h 1.15 v 0.47 h -1.21 v 1 c 0,1.1 0.76,1.19 1.01,1.19 0.05,0 0.1,0 0.17,-0.02 -0.15,-0.11 -0.23,-0.3 -0.23,-0.49 0,-0.43 0.35,-0.62 0.61,-0.62 0.3,0 0.62,0.21 0.62,0.62 0,0.42 -0.36,0.87 -1.14,0.87 -0.98,0 -2.05,-0.42 -2.05,-1.55 z"
- id="path5293" />
-<path
- style="fill:#000000;stroke-width:0"
- d="m 231.3,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.68,0 -0.68,0.39 v 3.63 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.76,0 -0.79,0.25 -0.79,0.79 v 3.4 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
- id="path5295" />
-</g> <g
- id="g5297"
- transform="matrix(1.0476464,0,0,1,111.75932,254.76497)">
+ transform="matrix(1.0476464,0,0,1,111.75932,254.76497)"
+ id="g5297">
<rect
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect5299"
- width="20"
- height="30"
- x="65"
+ transform="translate(367.86,538.7295)"
y="139.43002"
- transform="translate(367.86,538.7295)" />
+ x="65"
+ height="30"
+ width="20"
+ id="rect5299"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 65,164.43002 5,-5 -5,-5"
+ transform="translate(367.86,538.7295)"
id="path5301"
- transform="translate(367.86,538.7295)" />
+ d="m 65,164.43002 5,-5 -5,-5"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
- sodipodi:nodetypes="cc"
- id="path5303"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 575.72,911.53732 0,19.19"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+ id="path5303"
+ sodipodi:nodetypes="cc" />
<g
- id="g8360"
- transform="translate(16.4,0)">
+ transform="translate(16.4,0)"
+ id="g8360">
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 575.62,846.60132 0,33.2"
+ sodipodi:nodetypes="cc"
id="path5319"
- sodipodi:nodetypes="cc" />
+ d="m 575.62,846.60132 0,33.2"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5333"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
- sodipodi:ry="5.4800777"
+ transform="matrix(0.31195247,0,0,0.31195247,591.83726,836.43354)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,591.83726,836.43354)" />
+ sodipodi:ry="5.4800777"
+ sodipodi:rx="5.4800777"
+ sodipodi:cy="32.435127"
+ sodipodi:cx="-51.79557"
+ id="path5333"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
- d="m 530.12999,941.60132 12.99001,0 0,-98.7"
+ sodipodi:nodetypes="ccc"
id="path5337"
- sodipodi:nodetypes="ccc" />
+ d="m 530.12999,941.60132 12.99001,0 0,-98.7"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
<rect
- y="881.60132"
- x="499.72"
- height="30"
- width="40"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect5339"
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ width="40"
+ height="30"
+ x="499.72"
+ y="881.60132" />
<g
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- ns0:preamble=""
- ns0:text="$\\mathbf{fu}$\n\n\n\n"
- word-spacing="normal"
- letter-spacing="normal"
- font-size-adjust="none"
- font-stretch="normal"
- font-weight="normal"
- font-variant="normal"
- font-style="normal"
- stroke-miterlimit="10.433"
- xml:space="preserve"
- transform="matrix(1,0,0,-1,291.265,1556.175)"
- id="g5341">
-<path
- id="path5343"
- d="m 224.6,661.66 h -0.75 v -0.47 h 0.75 v -3.49 h -0.69 v -0.47 c 0.35,0.01 0.8,0.03 1.26,0.03 0.37,0 1.01,0 1.37,-0.03 v 0.47 h -0.87 v 3.49 h 1.15 v 0.47 h -1.21 v 1 c 0,1.1 0.76,1.19 1.01,1.19 0.05,0 0.1,0 0.17,-0.02 -0.15,-0.11 -0.23,-0.3 -0.23,-0.49 0,-0.43 0.35,-0.62 0.61,-0.62 0.3,0 0.62,0.21 0.62,0.62 0,0.42 -0.36,0.87 -1.14,0.87 -0.98,0 -2.05,-0.42 -2.05,-1.55 z"
- style="fill:#000000;stroke-width:0" />
-<path
- id="path5345"
- d="m 231.3,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.68,0 -0.68,0.39 v 3.63 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.76,0 -0.79,0.25 -0.79,0.79 v 3.4 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
- style="fill:#000000;stroke-width:0" />
-</g> <g
- transform="matrix(1.0476464,0,0,1,55.75932,254.76497)"
- id="g5347">
+ id="g5347"
+ transform="matrix(1.0476464,0,0,1,55.75932,254.76497)">
<rect
- transform="translate(367.86,538.7295)"
- y="139.43002"
- x="65"
- height="30"
- width="20"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect5349"
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ width="20"
+ height="30"
+ x="65"
+ y="139.43002"
+ transform="translate(367.86,538.7295)" />
<path
- transform="translate(367.86,538.7295)"
- id="path5351"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 65,164.43002 5,-5 -5,-5"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ id="path5351"
+ transform="translate(367.86,538.7295)" />
</g>
<path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 519.72,911.53732 0,19.19"
+ sodipodi:nodetypes="cc"
id="path5353"
- sodipodi:nodetypes="cc" />
+ d="m 519.72,911.53732 0,19.19"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<g
- id="g8277"
- transform="matrix(-1,0,0,1,1039.2402,0)">
+ transform="matrix(-1,0,0,1,1039.2402,0)"
+ id="g8277">
<g
- id="g5355"
- transform="translate(339.4,190.70953)">
- <path
- sodipodi:nodetypes="cc"
- transform="translate(388.72,664.8395)"
- id="path5357"
- d="m -225,-8.9477081 0,33.2000001"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
- <path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5359"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
- sodipodi:ry="5.4800777"
- d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,179.88726,645.77357)" />
- </g>
- <g
- id="g8251">
+ transform="translate(339.4,190.70953)"
+ id="g5355">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 508.62,842.60132 0,37.2"
- id="path5361"
+ d="m -225,-8.9477081 0,33.2000001"
+ id="path5357"
+ transform="translate(388.72,664.8395)"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,524.78726,832.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,179.88726,645.77357)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path5363"
+ id="path5359"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
- id="g8255">
+ id="g8251">
<path
sodipodi:nodetypes="cc"
- id="path5365"
- d="m 514.12,838.60132 0,41.2"
+ id="path5361"
+ d="m 508.62,842.60132 0,37.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5367"
+ id="path5363"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,530.28726,828.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,524.78726,832.4831)" />
</g>
<g
- id="g8259">
+ id="g8255">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 519.62,834.60132 0,45.2"
- id="path5369"
+ d="m 514.12,838.60132 0,41.2"
+ id="path5365"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,535.78726,824.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,530.28726,828.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path5371"
+ id="path5367"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
- </g>
- <g
- id="g8327"
- transform="matrix(-1,0,0,1,1039.24,0)">
<g
- id="g8291">
+ id="g8259">
<path
- sodipodi:nodetypes="cc"
- id="path5373"
- d="m 525.12,830.60132 0,49.2"
+ sodipodi:nodetypes="cc"
+ id="path5369"
+ d="m 519.62,834.60132 0,45.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5375"
+ id="path5371"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,541.28726,820.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,535.78726,824.4831)" />
</g>
+ </g>
+ <g
+ transform="matrix(-1,0,0,1,1039.24,0)"
+ id="g8327">
<g
- id="g8295">
+ id="g8291">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 530.62,826.60132 0,53.2"
- id="path5377"
+ d="m 525.12,830.60132 0,49.2"
+ id="path5373"
sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,546.78726,816.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,541.28726,820.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path5379"
+ id="path5375"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
- id="g8299">
+ id="g8295">
<path
sodipodi:nodetypes="cc"
- id="path5381"
- d="m 536.12,822.60132 0,57.19994"
+ id="path5377"
+ d="m 530.62,826.60132 0,53.2"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5383"
+ id="path5379"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,552.28726,812.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,546.78726,816.4831)" />
+ </g>
+ <g
+ id="g8299">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+ d="m 536.12,822.60132 0,57.19994"
+ id="path5381"
+ sodipodi:nodetypes="cc" />
+ <path
+ transform="matrix(0.31195247,0,0,0.31195247,552.28726,812.4831)"
+ d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
+ sodipodi:ry="5.4800777"
+ sodipodi:rx="5.4800777"
+ sodipodi:cy="32.435127"
+ sodipodi:cx="-51.79557"
+ id="path5383"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
</g>
</g>
- <path
- sodipodi:nodetypes="ccccc"
- id="path7211"
- d="m 376.72,896.60132 0,25 57.5,0 0,-25 8,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
- d="m 434.32,896.60132 0,25 56.2,0 0,-25 7.8,0"
- id="path7213"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path7215"
- d="m 490.32,896.60132 0,25 56.2,0 0,-25 7.8,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
- <path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path7217"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
- sodipodi:ry="5.4800777"
- d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,392.83726,886.23356)" />
+ d="m 598.46904,941.46097 16,0"
+ id="path7223"
+ sodipodi:nodetypes="cc" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,450.43726,911.48356)"
+ transform="matrix(0.31195247,0,0,0.31195247,614.93726,931.33355)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path7219"
+ id="path7225"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path7221"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
- sodipodi:ry="5.4800777"
+ transform="matrix(0.31195247,0,0,0.31195247,447.28726,824.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,506.43726,911.48356)" />
- <path
- sodipodi:nodetypes="cc"
- id="path7223"
- d="m 598.46904,941.46097 16,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
- <path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path7225"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
- d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,614.93726,931.33355)" />
+ sodipodi:rx="5.4800777"
+ sodipodi:cy="32.435127"
+ sodipodi:cx="-51.79557"
+ id="path8203"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path8203"
+ id="path8205"
sodipodi:cx="-51.79557"
sodipodi:cy="32.435127"
sodipodi:rx="5.4800777"
sodipodi:ry="5.4800777"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,447.28726,824.4831)" />
+ transform="matrix(0.31195247,0,0,0.31195247,503.28726,828.4831)" />
<path
- transform="matrix(0.31195247,0,0,0.31195247,503.28726,828.4831)"
+ transform="matrix(0.31195247,0,0,0.31195247,559.28726,832.4831)"
d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
sodipodi:ry="5.4800777"
sodipodi:rx="5.4800777"
sodipodi:cy="32.435127"
sodipodi:cx="-51.79557"
- id="path8205"
+ id="path8207"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<path
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="path8207"
- sodipodi:cx="-51.79557"
- sodipodi:cy="32.435127"
- sodipodi:rx="5.4800777"
- sodipodi:ry="5.4800777"
- d="m -46.315493,32.435127 c 0,3.026564 -2.453514,5.480078 -5.480077,5.480078 -3.026564,0 -5.480078,-2.453514 -5.480078,-5.480078 0,-3.026563 2.453514,-5.480077 5.480078,-5.480077 3.026563,0 5.480077,2.453514 5.480077,5.480077 z"
- transform="matrix(0.31195247,0,0,0.31195247,559.28726,832.4831)" />
- <path
- sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+ d="m 347.72,890.50081 38,0"
id="path8366"
- d="m 347.72,906.50081 38,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+ sodipodi:nodetypes="cc" />
<g
- id="content"
- transform="matrix(1,0,0,-1,129.17119,1560.3664)"
- xml:space="preserve"
- stroke-miterlimit="10.433"
- font-style="normal"
- font-variant="normal"
- font-weight="normal"
- font-stretch="normal"
- font-size-adjust="none"
- letter-spacing="normal"
- word-spacing="normal"
- ns0:text="$\\mathit{opc}$\n\n\n"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
ns0:preamble=""
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+ ns0:text="$\\mathit{opc}$\n\n\n"
+ word-spacing="normal"
+ letter-spacing="normal"
+ font-size-adjust="none"
+ font-stretch="normal"
+ font-weight="normal"
+ font-variant="normal"
+ font-style="normal"
+ stroke-miterlimit="10.433"
+ xml:space="preserve"
+ transform="matrix(1,0,0,-1,129.54646,1544.3664)"
+ id="content">
<path
- style="fill:#000000;stroke-width:0"
+ id="path8510"
d="m 228.5,660 0,0.09 0,0.09 -0.01,0.08 -0.01,0.08 -0.02,0.09 -0.02,0.07 -0.02,0.08 -0.02,0.08 -0.03,0.07 -0.03,0.07 -0.03,0.07 -0.04,0.07 -0.04,0.06 -0.04,0.06 -0.04,0.06 -0.05,0.05 -0.05,0.06 -0.05,0.05 -0.05,0.04 -0.06,0.05 -0.06,0.04 -0.06,0.04 -0.06,0.03 -0.07,0.03 -0.07,0.03 -0.06,0.03 -0.08,0.02 -0.07,0.01 -0.07,0.02 -0.08,0.01 -0.08,0 -0.08,0.01 c -1.24,0 -2.52,-1.42 -2.52,-2.87 0,-1.03 0.63,-1.65 1.45,-1.65 v 0.22 c -0.39,0 -0.75,0.31 -0.75,1.03 0,0.5 0.26,1.6 0.57,2.14 0.37,0.61 0.85,0.91 1.24,0.91 0.49,0 0.77,-0.44 0.77,-1.03 0,-0.43 -0.22,-1.45 -0.54,-2.05 -0.29,-0.55 -0.8,-1 -1.29,-1 h 0 v -0.22 c 1.24,0 2.52,1.42 2.52,2.88 z"
- id="path8510" />
+ style="fill:#000000;stroke-width:0" />
<path
- style="fill:#000000;stroke-width:0"
+ id="path8512"
d="m 229.42,655.96 -0.01,-0.03 0,-0.03 -0.01,-0.02 -0.01,-0.03 -0.01,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.03,-0.01 -0.02,0 -0.03,0 -0.03,0 -0.02,-0.01 -0.03,0 -0.04,0 -0.03,0 -0.04,0 c -0.09,0 -0.21,0 -0.21,-0.19 0,-0.07 0.05,-0.12 0.12,-0.12 0.27,0 0.56,0.03 0.84,0.03 0.32,0 0.66,-0.03 0.97,-0.03 0.06,0 0.19,0 0.19,0.19 0,0.12 -0.1,0.12 -0.24,0.12 -0.51,0 -0.51,0.06 -0.51,0.16 0,0.06 0.07,0.32 0.11,0.48 l 0.36,1.45 c 0.07,-0.17 0.32,-0.58 0.83,-0.58 l -0.01,0.22 c -0.57,0 -0.67,0.85 -0.67,0.93 0,0.03 0.01,0.06 0.03,0.14 l 0.47,1.88 c 0.08,0.34 0.69,1.13 1.24,1.13 0.45,0 0.55,-0.57 0.55,-0.89 0,-0.42 -0.27,-1.6 -0.56,-2.24 -0.12,-0.25 -0.55,-0.95 -1.06,-0.95 l 0.01,-0.22 c 1.09,0 2.28,1.48 2.28,2.96 0,1.07 -0.6,1.56 -1.2,1.56 -0.49,0 -0.92,-0.36 -1.2,-0.7 -0.12,0.58 -0.57,0.7 -0.82,0.7 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.06 0,-0.22 -0.07,-0.5 z"
- id="path8512" />
+ style="fill:#000000;stroke-width:0" />
<path
- style="fill:#000000;stroke-width:0"
+ id="path8514"
d="m 237.44,660.99 -0.02,-0.01 -0.02,0 -0.03,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.02,-0.01 -0.01,0 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.02 -0.01,-0.02 -0.02,-0.02 -0.01,-0.02 -0.01,-0.02 -0.02,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 0,-0.01 0,-0.02 0,-0.01 -0.01,-0.01 0,-0.02 0,0 0,-0.01 0,0 0,-0.01 0,0 0,0 c 0,-0.16 0.11,-0.32 0.34,-0.32 0.27,0 0.51,0.22 0.51,0.6 0,0.49 -0.43,0.86 -1.07,0.86 -1.23,0 -2.52,-1.42 -2.52,-2.87 0,-0.99 0.59,-1.65 1.47,-1.65 1.27,0 2.1,1 2.1,1.15 0,0.05 -0.08,0.16 -0.16,0.16 -0.04,0 -0.05,-0.01 -0.13,-0.11 -0.74,-0.94 -1.62,-0.98 -1.79,-0.98 -0.54,0 -0.79,0.45 -0.79,1.03 0,0.53 0.27,1.57 0.53,2.05 0.36,0.65 0.86,1 1.3,1 0.11,0 0.56,-0.02 0.71,-0.43 z"
- id="path8514" />
+ style="fill:#000000;stroke-width:0" />
</g> <g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
ns0:preamble=""
- ns0:text="$\\mathit{input}$\n\n\n"
+ ns0:text="$\\mathit{addrs}$\n\n\n"
word-spacing="normal"
letter-spacing="normal"
font-size-adjust="none"
font-style="normal"
stroke-miterlimit="10.433"
xml:space="preserve"
- transform="matrix(1,0,0,-1,125.08119,1484.4737)"
- id="g8796">
+ transform="matrix(1,0,0,-1,124.911,1624.5027)"
+ id="g9098">
+<path
+ id="path9100"
+ d="m 226.91,657.82 0.01,-0.04 0.01,-0.05 0.02,-0.04 0.01,-0.04 0.02,-0.04 0.02,-0.04 0.02,-0.03 0.02,-0.03 0.02,-0.04 0.02,-0.03 0.02,-0.03 0.03,-0.03 0.02,-0.02 0.03,-0.03 0.03,-0.02 0.02,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.01 0.03,-0.01 0.03,-0.02 0.04,-0.01 0.03,-0.01 0.03,0 0.03,-0.01 0.04,-0.01 0.03,0 0.03,0 0.03,-0.01 0.04,0 c 0.36,0 0.57,0.25 0.72,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.32,-1.19 -0.66,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.23 0.07,0.51 l 0.67,2.71 c 0.04,0.14 0.04,0.16 0.04,0.21 0,0.21 -0.16,0.26 -0.27,0.26 -0.31,0 -0.38,-0.34 -0.39,-0.39 -0.19,0.43 -0.51,0.59 -0.83,0.59 v -0.22 c 0.44,0 0.69,-0.52 0.69,-0.94 0,-0.02 -0.01,-0.07 -0.03,-0.13 h 0 l -0.47,-1.88 c -0.08,-0.32 -0.7,-1.13 -1.25,-1.13 -0.46,0 -0.54,0.59 -0.54,0.89 0,0.5 0.3,1.66 0.48,2.08 0.25,0.61 0.71,1.11 1.12,1.11 v 0.22 c -1.11,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.2,-1.55 0.36,0 0.8,0.21 1.2,0.7 z"
+ style="fill:#000000;stroke-width:0" />
<path
- id="path8798"
- d="m 226.73,658.66 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0 -0.01,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0 -0.01,0.01 0,0 0,0 0,0.01 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 0,0.01 -0.01,0 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0.01 0,0 -0.01,0 -0.01,0 -0.02,0 -0.01,0 c -0.13,0 -0.13,-0.02 -0.17,-0.17 -0.08,-0.29 -0.35,-1.25 -0.92,-1.25 -0.09,0 -0.22,0.01 -0.22,0.28 0,0.26 0.13,0.59 0.25,0.96 l 0.64,1.7 c 0.1,0.29 0.12,0.37 0.12,0.56 0,0.55 -0.38,0.8 -0.74,0.8 -0.94,0 -1.28,-1.49 -1.28,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.02 0.18,0.16 0.09,0.33 0.35,1.26 0.92,1.26 0.11,0 0.22,-0.05 0.22,-0.28 0,-0.24 -0.11,-0.53 -0.18,-0.72 l -0.29,-0.83 c -0.13,-0.32 -0.25,-0.65 -0.37,-0.98 -0.14,-0.38 -0.18,-0.49 -0.18,-0.69 0,-0.39 0.24,-0.8 0.75,-0.8 0.94,0 1.27,1.5 1.27,1.54 z"
+ id="path9102"
+ d="m 234.07,663.9 0,0 0.01,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0.01,0.01 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.12,-0.01 -0.16,-0.02 l -0.98,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.48,0 0.5,-0.07 0.5,-0.17 0,-0.03 -0.03,-0.16 -0.03,-0.17 l -0.58,-2.33 c -0.15,0.31 -0.42,0.58 -0.84,0.58 v -0.22 c 0.08,0 0.31,-0.01 0.49,-0.29 0.1,-0.16 0.2,-0.45 0.2,-0.64 0,-0.03 -0.01,-0.07 -0.03,-0.13 l -0.48,-1.91 c -0.08,-0.31 -0.69,-1.11 -1.23,-1.11 -0.47,0 -0.55,0.59 -0.55,0.89 0,0.5 0.31,1.66 0.49,2.08 0.25,0.61 0.7,1.11 1.11,1.11 v 0.22 c -1.1,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.21,-1.55 0.35,0 0.79,0.21 1.19,0.7 0.11,-0.49 0.48,-0.7 0.83,-0.7 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.29,0.96 0.29,0.98 0,0.1 -0.08,0.1 -0.14,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.22 0.06,0.46 z"
style="fill:#000000;stroke-width:0" />
<path
- id="path8800"
- d="m 226.68,663.44 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 -0.01,0.01 0,0.02 0,0.02 -0.01,0.02 -0.01,0.02 0,0.02 -0.01,0.01 -0.01,0.02 -0.01,0.01 -0.01,0.01 -0.01,0.01 -0.01,0.02 -0.01,0.01 -0.02,0.01 -0.01,0.01 -0.01,0 -0.02,0.01 -0.01,0.01 -0.01,0.01 -0.02,0 -0.01,0.01 -0.02,0 -0.01,0.01 -0.02,0 -0.01,0 -0.01,0 -0.02,0.01 -0.01,0 -0.01,0 -0.02,0 c -0.21,0 -0.48,-0.2 -0.48,-0.48 0,-0.25 0.2,-0.33 0.34,-0.33 0.2,0 0.48,0.19 0.48,0.48 z"
+ id="path9104"
+ d="m 239.17,663.9 0,0 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0.01,0.01 0,0 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0.01,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.13,-0.01 -0.16,-0.02 l -0.99,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.48,0 0.5,-0.07 0.5,-0.17 0,-0.03 -0.03,-0.16 -0.03,-0.17 l -0.58,-2.33 c -0.15,0.31 -0.42,0.58 -0.83,0.58 v -0.22 c 0.07,0 0.3,-0.01 0.48,-0.29 0.1,-0.16 0.2,-0.45 0.2,-0.64 0,-0.03 -0.01,-0.07 -0.03,-0.13 l -0.48,-1.91 c -0.08,-0.31 -0.68,-1.11 -1.23,-1.11 -0.47,0 -0.55,0.59 -0.55,0.89 0,0.5 0.31,1.66 0.49,2.08 0.25,0.61 0.71,1.11 1.12,1.11 v 0.22 c -1.11,0 -2.29,-1.52 -2.29,-2.97 0,-0.85 0.46,-1.55 1.21,-1.55 0.36,0 0.8,0.21 1.19,0.7 0.11,-0.49 0.48,-0.7 0.83,-0.7 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.22 0.06,0.46 z"
style="fill:#000000;stroke-width:0" />
<path
- id="path8802"
- d="m 228.78,658.98 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 c 0.13,0.51 0.13,0.52 0.3,0.81 0.13,0.24 0.58,0.99 1.34,0.99 0.44,0 0.46,-0.45 0.46,-0.66 0,-0.62 -0.44,-1.8 -0.58,-2.2 -0.13,-0.34 -0.16,-0.43 -0.16,-0.64 0,-0.44 0.28,-0.8 0.76,-0.8 0.92,0 1.26,1.49 1.26,1.54 0,0.1 -0.08,0.1 -0.15,0.1 -0.13,0 -0.13,-0.02 -0.17,-0.17 -0.07,-0.27 -0.34,-1.25 -0.92,-1.25 -0.21,0 -0.22,0.15 -0.22,0.29 0,0.25 0.1,0.51 0.18,0.75 0.2,0.53 0.61,1.64 0.61,2.22 0,0.82 -0.55,1.04 -1.04,1.04 -0.82,0 -1.3,-0.6 -1.43,-0.79 -0.06,0.49 -0.4,0.79 -0.83,0.79 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.02,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.08,-0.26 0.28,-0.26 0.12,0 0.29,0.07 0.36,0.26 z"
+ id="path9106"
+ d="m 241.28,660.1 0,0 0,0.01 0,0 0.01,0.01 0,0.01 0,0.01 0.01,0.01 0,0.02 0.01,0.01 0.01,0.02 0,0.02 0.01,0.01 0.02,0.05 0.02,0.04 0.02,0.05 0.03,0.05 0.02,0.05 0.03,0.06 0.04,0.06 0.03,0.06 0.04,0.06 0.04,0.06 0.04,0.06 0.05,0.06 0.05,0.06 0.05,0.06 0.05,0.05 0.05,0.06 0.06,0.05 0.06,0.05 0.06,0.04 0.07,0.04 0.03,0.02 0.03,0.01 0.04,0.02 0.03,0.01 0.04,0.01 0.04,0.02 0.03,0 0.04,0.01 0.04,0.01 0.04,0 0.04,0.01 0.04,0 c 0.05,0 0.32,0 0.52,-0.14 -0.35,-0.11 -0.38,-0.43 -0.38,-0.48 0,-0.13 0.1,-0.32 0.35,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.52 -0.65,0.63 -0.98,0.63 -0.68,0 -1.04,-0.5 -1.2,-0.72 -0.11,0.53 -0.5,0.72 -0.83,0.72 -0.36,0 -0.56,-0.23 -0.71,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.17,0.7 0.36,1.19 0.67,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.01,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.08,-0.26 0.28,-0.26 0.3,0 0.37,0.29 0.39,0.37 z"
style="fill:#000000;stroke-width:0" />
<path
- id="path8804"
- d="m 232.98,655.96 0,-0.03 -0.01,-0.03 -0.01,-0.02 -0.01,-0.03 0,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.03,-0.01 -0.02,0 -0.03,0 -0.02,0 -0.03,-0.01 -0.03,0 -0.03,0 -0.04,0 -0.03,0 c -0.09,0 -0.21,0 -0.21,-0.19 0,-0.07 0.05,-0.12 0.12,-0.12 0.27,0 0.55,0.03 0.83,0.03 0.32,0 0.66,-0.03 0.97,-0.03 0.06,0 0.19,0 0.19,0.19 0,0.12 -0.1,0.12 -0.24,0.12 -0.51,0 -0.51,0.06 -0.51,0.16 0,0.06 0.07,0.32 0.11,0.48 l 0.36,1.45 c 0.07,-0.17 0.32,-0.58 0.84,-0.58 l -0.01,0.22 c -0.58,0 -0.68,0.85 -0.68,0.93 0,0.03 0.01,0.06 0.03,0.14 l 0.47,1.88 c 0.08,0.34 0.69,1.13 1.24,1.13 0.45,0 0.55,-0.57 0.55,-0.89 0,-0.42 -0.27,-1.6 -0.56,-2.24 -0.12,-0.25 -0.54,-0.95 -1.05,-0.95 l 0.01,-0.22 c 1.08,0 2.27,1.48 2.27,2.96 0,1.07 -0.6,1.56 -1.2,1.56 -0.48,0 -0.91,-0.36 -1.2,-0.7 -0.12,0.58 -0.57,0.7 -0.82,0.7 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.06 0,-0.22 -0.07,-0.5 z"
+ id="path9108"
+ d="m 245.37,659.2 0.08,-0.02 0.08,-0.02 0.09,-0.02 0.04,-0.01 0.03,-0.02 0.04,-0.01 0.04,-0.01 0.04,-0.02 0.03,-0.01 0.04,-0.02 0.03,-0.01 0.04,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.02,-0.03 0.03,-0.02 0.02,-0.03 0.02,-0.03 0.02,-0.03 0.02,-0.04 0.01,-0.03 0.02,-0.04 0.01,-0.04 0.01,-0.04 0,-0.05 0,-0.02 0.01,-0.02 0,-0.03 0,-0.02 c 0,-0.32 -0.27,-1.12 -1.3,-1.12 -0.22,0 -0.8,0.05 -0.95,0.56 0.5,0.05 0.5,0.47 0.5,0.49 0,0.19 -0.13,0.32 -0.33,0.32 -0.23,0 -0.51,-0.17 -0.51,-0.62 0,-0.61 0.57,-0.97 1.28,-0.97 1.5,0 1.87,1.22 1.87,1.68 0,0.86 -0.77,1.04 -1.18,1.13 -0.28,0.06 -0.64,0.14 -0.64,0.57 0,0.24 0.21,0.92 1.01,0.92 0.27,0 0.64,-0.1 0.75,-0.49 -0.32,-0.04 -0.4,-0.31 -0.4,-0.41 0,-0.11 0.06,-0.28 0.3,-0.28 0.16,0 0.42,0.12 0.42,0.55 0,0.46 -0.4,0.85 -1.06,0.85 -1.17,0 -1.58,-0.96 -1.58,-1.48 0,-0.77 0.65,-0.9 0.93,-0.96 z"
style="fill:#000000;stroke-width:0" />
+</g> <g
+ id="g9419"
+ transform="matrix(1,0,0,-1,152.33474,1503.5671)"
+ xml:space="preserve"
+ stroke-miterlimit="10.433"
+ font-style="normal"
+ font-variant="normal"
+ font-weight="normal"
+ font-stretch="normal"
+ font-size-adjust="none"
+ letter-spacing="normal"
+ word-spacing="normal"
+ ns0:text="$0$\n\n\n\n"
+ ns0:preamble=""
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
<path
- id="path8806"
- d="m 242.29,661.13 0,0.01 0.01,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0.01 0,0 0.01,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0.01 c 0,0.11 -0.08,0.26 -0.28,0.26 -0.3,0 -0.37,-0.29 -0.39,-0.37 l -0.72,-2.91 c -0.05,-0.18 -0.05,-0.2 -0.14,-0.33 -0.19,-0.28 -0.48,-0.58 -0.92,-0.58 -0.45,0 -0.54,0.44 -0.54,0.77 0,0.61 0.33,1.5 0.58,2.18 0.08,0.21 0.13,0.35 0.13,0.54 0,0.5 -0.33,0.81 -0.76,0.81 -0.92,0 -1.27,-1.48 -1.27,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.02 0.18,0.16 0.07,0.31 0.34,1.26 0.92,1.26 0.11,0 0.22,-0.03 0.22,-0.29 0,-0.24 -0.1,-0.51 -0.24,-0.9 -0.26,-0.7 -0.52,-1.43 -0.52,-1.95 0,-0.87 0.58,-1.16 1.12,-1.16 0.53,0 0.87,0.3 1.11,0.6 0.17,-0.54 0.6,-0.6 0.79,-0.6 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.23 0.07,0.51 z"
+ d="m 228.01,660.42 0,0.15 0,0.15 0,0.15 -0.01,0.15 -0.01,0.15 -0.01,0.14 -0.01,0.15 -0.02,0.15 -0.03,0.15 -0.02,0.14 -0.04,0.15 -0.03,0.14 -0.05,0.14 -0.05,0.14 -0.05,0.14 -0.03,0.07 -0.03,0.07 c -0.46,0.96 -1.28,1.12 -1.7,1.12 -0.6,0 -1.32,-0.26 -1.73,-1.19 -0.32,-0.69 -0.37,-1.46 -0.37,-2.26 0,-0.75 0.04,-1.64 0.45,-2.4 0.43,-0.81 1.16,-1.01 1.64,-1.01 v 0.22 c -0.39,0 -0.97,0.25 -1.15,1.21 -0.11,0.6 -0.11,1.51 -0.11,2.1 0,0.64 0,1.3 0.08,1.83 0.19,1.19 0.93,1.28 1.18,1.28 0.33,0 0.99,-0.18 1.18,-1.17 0.1,-0.56 0.1,-1.31 0.1,-1.94 0,-0.75 0,-1.43 -0.11,-2.06 -0.15,-0.95 -0.72,-1.25 -1.17,-1.25 h 0 v -0.22 c 0.54,0 1.3,0.21 1.74,1.16 0.31,0.69 0.36,1.46 0.36,2.25 z"
+ id="path9421"
style="fill:#000000;stroke-width:0" />
+</g> <g
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ ns0:preamble=""
+ ns0:text="$1$\n\n\n\n\n"
+ word-spacing="normal"
+ letter-spacing="normal"
+ font-size-adjust="none"
+ font-stretch="normal"
+ font-weight="normal"
+ font-variant="normal"
+ font-style="normal"
+ stroke-miterlimit="10.433"
+ xml:space="preserve"
+ transform="matrix(1,0,0,-1,158.13,1503.6771)"
+ id="g9731">
<path
- id="path8808"
- d="m 245.12,661.22 h 0.84 c 0.17,0 0.28,0 0.28,0.19 0,0.12 -0.09,0.12 -0.25,0.12 h -0.79 l 0.37,1.47 c 0.04,0.14 0.04,0.16 0.04,0.21 0,0.21 -0.17,0.26 -0.27,0.26 -0.25,0 -0.35,-0.21 -0.39,-0.36 l -0.39,-1.58 h -0.85 c -0.17,0 -0.28,0 -0.28,-0.19 0,-0.12 0.09,-0.12 0.25,-0.12 h 0.8 l -0.72,-2.86 c -0.01,-0.04 -0.05,-0.2 -0.05,-0.34 0,-0.5 0.33,-0.9 0.85,-0.9 1.01,0 1.51,1.49 1.51,1.54 0,0.1 -0.08,0.1 -0.14,0.1 -0.13,0 -0.13,-0.01 -0.2,-0.19 -0.18,-0.48 -0.58,-1.23 -1.15,-1.23 -0.27,0 -0.27,0.25 -0.27,0.41 0,0.07 0,0.23 0.07,0.51 z"
+ id="path9733"
+ d="m 226.36,663.61 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0 -0.01,0.01 0,0.02 0,0.01 0,0.01 -0.01,0 0,0.01 -0.01,0.01 0,0 -0.01,0.01 -0.01,0 0,0.01 -0.01,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 c -0.62,-0.64 -1.49,-0.64 -1.81,-0.64 v -0.31 c 0.2,0 0.79,0 1.3,0.26 v -5.16 c 0,-0.36 -0.03,-0.48 -0.92,-0.48 h -0.32 v -0.31 c 0.35,0.03 1.21,0.03 1.61,0.03 0.4,0 1.27,0 1.62,-0.03 v 0.31 h -0.32 c -0.9,0 -0.93,0.11 -0.93,0.48 z"
style="fill:#000000;stroke-width:0" />
</g> <g
- id="g9098"
- transform="matrix(1,0,0,-1,124.53619,1551.9523)"
+ id="g10049"
+ transform="matrix(1,0,0,-1,256.305,1469.5703)"
xml:space="preserve"
stroke-miterlimit="10.433"
font-style="normal"
font-size-adjust="none"
letter-spacing="normal"
word-spacing="normal"
- ns0:text="$\\mathit{addrs}$\n\n\n"
+ ns0:text="$\\mathbf{cpu}$\n\n\n\n\n"
ns0:preamble=""
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
<path
style="fill:#000000;stroke-width:0"
- d="m 226.91,657.82 0.01,-0.04 0.01,-0.05 0.02,-0.04 0.01,-0.04 0.02,-0.04 0.02,-0.04 0.02,-0.03 0.02,-0.03 0.02,-0.04 0.02,-0.03 0.02,-0.03 0.03,-0.03 0.02,-0.02 0.03,-0.03 0.03,-0.02 0.02,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.01 0.03,-0.01 0.03,-0.02 0.04,-0.01 0.03,-0.01 0.03,0 0.03,-0.01 0.04,-0.01 0.03,0 0.03,0 0.03,-0.01 0.04,0 c 0.36,0 0.57,0.25 0.72,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.32,-1.19 -0.66,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.23 0.07,0.51 l 0.67,2.71 c 0.04,0.14 0.04,0.16 0.04,0.21 0,0.21 -0.16,0.26 -0.27,0.26 -0.31,0 -0.38,-0.34 -0.39,-0.39 -0.19,0.43 -0.51,0.59 -0.83,0.59 v -0.22 c 0.44,0 0.69,-0.52 0.69,-0.94 0,-0.02 -0.01,-0.07 -0.03,-0.13 h 0 l -0.47,-1.88 c -0.08,-0.32 -0.7,-1.13 -1.25,-1.13 -0.46,0 -0.54,0.59 -0.54,0.89 0,0.5 0.3,1.66 0.48,2.08 0.25,0.61 0.71,1.11 1.12,1.11 v 0.22 c -1.11,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.2,-1.55 0.36,0 0.8,0.21 1.2,0.7 z"
- id="path9100" />
+ d="m 227.02,661.29 -0.02,-0.02 -0.01,-0.01 -0.02,-0.02 -0.01,-0.01 -0.01,-0.02 -0.02,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 0,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.02 0,-0.01 -0.01,-0.02 0,-0.01 -0.01,-0.02 0,-0.01 0,-0.02 -0.01,-0.01 0,-0.02 0,-0.01 0,-0.01 -0.01,-0.02 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 c 0,-0.44 0.35,-0.63 0.62,-0.63 0.31,0 0.63,0.21 0.63,0.63 0,0.86 -1.16,0.92 -1.74,0.92 -1.78,0 -2.52,-1.15 -2.52,-2.31 0,-1.32 0.94,-2.27 2.47,-2.27 1.62,0 1.92,1.16 1.92,1.23 0,0.14 -0.15,0.14 -0.24,0.14 -0.18,0 -0.19,-0.02 -0.24,-0.15 -0.26,-0.63 -0.74,-0.82 -1.25,-0.82 -1.38,0 -1.38,1.47 -1.38,1.92 0,0.56 0,1.86 1.28,1.86 0.35,0 0.52,-0.03 0.65,-0.06 z"
+ id="path10051" />
<path
style="fill:#000000;stroke-width:0"
- d="m 234.07,663.9 0,0 0.01,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0.01,0.01 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.12,-0.01 -0.16,-0.02 l -0.98,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.48,0 0.5,-0.07 0.5,-0.17 0,-0.03 -0.03,-0.16 -0.03,-0.17 l -0.58,-2.33 c -0.15,0.31 -0.42,0.58 -0.84,0.58 v -0.22 c 0.08,0 0.31,-0.01 0.49,-0.29 0.1,-0.16 0.2,-0.45 0.2,-0.64 0,-0.03 -0.01,-0.07 -0.03,-0.13 l -0.48,-1.91 c -0.08,-0.31 -0.69,-1.11 -1.23,-1.11 -0.47,0 -0.55,0.59 -0.55,0.89 0,0.5 0.31,1.66 0.49,2.08 0.25,0.61 0.7,1.11 1.11,1.11 v 0.22 c -1.1,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.21,-1.55 0.35,0 0.79,0.21 1.19,0.7 0.11,-0.49 0.48,-0.7 0.83,-0.7 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.29,0.96 0.29,0.98 0,0.1 -0.08,0.1 -0.14,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.22 0.06,0.46 z"
- id="path9102" />
+ d="m 230.72,657.62 0.04,-0.03 0.04,-0.03 0.04,-0.03 0.04,-0.03 0.04,-0.02 0.04,-0.03 0.04,-0.02 0.04,-0.03 0.04,-0.02 0.04,-0.02 0.04,-0.02 0.04,-0.01 0.04,-0.02 0.04,-0.02 0.04,-0.01 0.04,-0.01 0.04,-0.02 0.04,-0.01 0.08,-0.02 0.08,-0.01 0.08,-0.02 0.08,-0.01 0.08,0 0.08,-0.01 0.07,0 -0.11,0.36 c -0.14,0 -0.61,0 -1.05,0.54 -0.11,0.13 -0.11,0.14 -0.11,0.33 v 2.11 c 0,0.19 0.01,0.2 0.15,0.34 0.39,0.41 0.91,0.47 1.13,0.47 0.67,0 1.23,-0.61 1.23,-1.87 0,-1.4 -0.7,-1.92 -1.35,-1.92 l 0.11,-0.36 c 1.5,0 2.51,0.9 2.51,2.28 0,1.33 -0.9,2.27 -2.34,2.27 -0.75,0 -1.27,-0.31 -1.5,-0.49 v 0.49 l -1.77,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.38 v -5.02 h -0.69 v -0.47 c 0.28,0.01 0.88,0.03 1.26,0.03 0.39,0 0.97,-0.02 1.25,-0.03 v 0.47 h -0.68 z"
+ id="path10053" />
<path
style="fill:#000000;stroke-width:0"
- d="m 239.17,663.9 0,0 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0.01,0.01 0,0 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0.01,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.13,-0.01 -0.16,-0.02 l -0.99,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.48,0 0.5,-0.07 0.5,-0.17 0,-0.03 -0.03,-0.16 -0.03,-0.17 l -0.58,-2.33 c -0.15,0.31 -0.42,0.58 -0.83,0.58 v -0.22 c 0.07,0 0.3,-0.01 0.48,-0.29 0.1,-0.16 0.2,-0.45 0.2,-0.64 0,-0.03 -0.01,-0.07 -0.03,-0.13 l -0.48,-1.91 c -0.08,-0.31 -0.68,-1.11 -1.23,-1.11 -0.47,0 -0.55,0.59 -0.55,0.89 0,0.5 0.31,1.66 0.49,2.08 0.25,0.61 0.71,1.11 1.12,1.11 v 0.22 c -1.11,0 -2.29,-1.52 -2.29,-2.97 0,-0.85 0.46,-1.55 1.21,-1.55 0.36,0 0.8,0.21 1.19,0.7 0.11,-0.49 0.48,-0.7 0.83,-0.7 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.22 0.06,0.46 z"
- id="path9104" />
+ d="m 239.26,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.69,0 -0.69,0.39 v 3.63 l -1.82,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.77,0 -0.8,0.25 -0.8,0.79 v 3.4 l -1.82,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
+ id="path10055" />
+</g> <g
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ ns0:preamble=""
+ ns0:text="$\\mathit{x}$\n\n\n\n"
+ word-spacing="normal"
+ letter-spacing="normal"
+ font-size-adjust="none"
+ font-stretch="normal"
+ font-weight="normal"
+ font-variant="normal"
+ font-style="normal"
+ stroke-miterlimit="10.433"
+ xml:space="preserve"
+ transform="matrix(1,0,0,-1,134.43146,1478.3706)"
+ id="g3125">
<path
- style="fill:#000000;stroke-width:0"
- d="m 241.28,660.1 0,0 0,0.01 0,0 0.01,0.01 0,0.01 0,0.01 0.01,0.01 0,0.02 0.01,0.01 0.01,0.02 0,0.02 0.01,0.01 0.02,0.05 0.02,0.04 0.02,0.05 0.03,0.05 0.02,0.05 0.03,0.06 0.04,0.06 0.03,0.06 0.04,0.06 0.04,0.06 0.04,0.06 0.05,0.06 0.05,0.06 0.05,0.06 0.05,0.05 0.05,0.06 0.06,0.05 0.06,0.05 0.06,0.04 0.07,0.04 0.03,0.02 0.03,0.01 0.04,0.02 0.03,0.01 0.04,0.01 0.04,0.02 0.03,0 0.04,0.01 0.04,0.01 0.04,0 0.04,0.01 0.04,0 c 0.05,0 0.32,0 0.52,-0.14 -0.35,-0.11 -0.38,-0.43 -0.38,-0.48 0,-0.13 0.1,-0.32 0.35,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.52 -0.65,0.63 -0.98,0.63 -0.68,0 -1.04,-0.5 -1.2,-0.72 -0.11,0.53 -0.5,0.72 -0.83,0.72 -0.36,0 -0.56,-0.23 -0.71,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.17,0.7 0.36,1.19 0.67,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.01,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.08,-0.26 0.28,-0.26 0.3,0 0.37,0.29 0.39,0.37 z"
- id="path9106" />
+ id="path3127"
+ d="m 228.15,661.28 -0.01,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,0 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.02 -0.02,-0.02 -0.02,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 0,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.01 0,-0.02 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,0 0,-0.01 0,0 0,0 0,0 0,0 c 0,-0.13 0.09,-0.32 0.34,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.51 -0.58,0.63 -0.86,0.63 -0.55,0 -0.88,-0.49 -0.98,-0.68 -0.22,0.6 -0.71,0.68 -0.96,0.68 -0.99,0 -1.53,-1.31 -1.53,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.13,0.01 0.18,0.17 0.27,0.86 0.79,1.25 1.18,1.25 0.29,0 0.48,-0.23 0.48,-0.63 0,-0.24 -0.12,-0.73 -0.21,-1.1 -0.11,-0.41 -0.12,-0.45 -0.23,-0.9 -0.16,-0.65 -0.36,-1.45 -0.96,-1.45 -0.03,0 -0.27,0 -0.44,0.14 0.3,0.08 0.39,0.33 0.39,0.48 0,0.26 -0.21,0.32 -0.34,0.32 -0.25,0 -0.5,-0.21 -0.5,-0.54 0,-0.39 0.42,-0.62 0.88,-0.62 0.48,0 0.8,0.38 0.97,0.68 0.2,-0.57 0.69,-0.68 0.95,-0.68 1.03,0 1.53,1.34 1.53,1.54 0,0.1 -0.08,0.1 -0.14,0.1 -0.13,0 -0.14,-0.01 -0.19,-0.17 -0.26,-0.86 -0.76,-1.25 -1.18,-1.25 -0.2,0 -0.47,0.12 -0.47,0.64 0,0.24 0.11,0.67 0.19,1.01 0.11,0.41 0.26,1.03 0.34,1.36 0.14,0.52 0.41,1.07 0.88,1.07 0.03,0 0.27,0 0.43,-0.14 z"
+ style="fill:#000000;stroke-width:0" />
+</g> <g
+ transform="translate(-1.6,-42.400203)"
+ id="g4275">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4277"
+ d="m 349.32,1015.6013 85.9,0 0,-70.99998 7,0"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
+ d="m 349.32,1017.6013 87.5,0 0,-70.99998 5.4,0"
+ id="path4279"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 438.82,948.55094 5.5,-2.89982 -5.5,-3.00018"
+ id="path4281"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <g
+ id="g4299"
+ transform="translate(55.1,-42.400203)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
+ d="m 292.72,1019.6013 142.5,0 0,-74.99998 7,0"
+ id="path4301"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4303"
+ d="m 292.72,1021.6013 144.1,0 0,-74.99998 5.4,0"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path4305"
+ d="m 438.82,948.55094 5.5,-2.89982 -5.5,-3.00018"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <g
+ transform="translate(111.1,-42.400203)"
+ id="g4307">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4309"
+ d="m 236.72,1023.6013 198.5,0 0,-78.99998 7,0"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
+ d="m 236.72,1025.6013 200.1,0 0,-78.99998 5.4,0"
+ id="path4311"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 438.82,948.55094 5.5,-2.89982 -5.5,-3.00018"
+ id="path4313"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4317"
+ d="m 347.82,969.2011 30.5,0 0,-66.99998 7,0"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
+ d="m 347.82,971.2011 32.1,0 0,-66.99998 5.4,0"
+ id="path4319"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 381.92,906.15074 5.5,-2.89982 -5.5,-3.00018"
+ id="path4321"
+ sodipodi:nodetypes="ccc" />
+ <g
+ id="g4483"
+ transform="matrix(1,0,0,-1,179.265,1556.175)"
+ xml:space="preserve"
+ stroke="black"
+ stroke-linecap="butt"
+ stroke-linejoin="miter"
+ stroke-miterlimit="10.433"
+ stroke-dasharray="none"
+ stroke-dashoffset="0"
+ stroke-opacity="1"
+ fill="none"
+ fill-rule="evenodd"
+ fill-opacity="1"
+ font-style="normal"
+ font-variant="normal"
+ font-weight="normal"
+ font-stretch="normal"
+ font-size-adjust="none"
+ letter-spacing="normal"
+ word-spacing="normal"
+ text-anchor="start"
+ ns0:text="$\\mathbf{fu_0}$\n\n\n\n\n"
+ ns0:preamble=""
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
<path
- style="fill:#000000;stroke-width:0"
- d="m 245.37,659.2 0.08,-0.02 0.08,-0.02 0.09,-0.02 0.04,-0.01 0.03,-0.02 0.04,-0.01 0.04,-0.01 0.04,-0.02 0.03,-0.01 0.04,-0.02 0.03,-0.01 0.04,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.02,-0.03 0.03,-0.02 0.02,-0.03 0.02,-0.03 0.02,-0.03 0.02,-0.04 0.01,-0.03 0.02,-0.04 0.01,-0.04 0.01,-0.04 0,-0.05 0,-0.02 0.01,-0.02 0,-0.03 0,-0.02 c 0,-0.32 -0.27,-1.12 -1.3,-1.12 -0.22,0 -0.8,0.05 -0.95,0.56 0.5,0.05 0.5,0.47 0.5,0.49 0,0.19 -0.13,0.32 -0.33,0.32 -0.23,0 -0.51,-0.17 -0.51,-0.62 0,-0.61 0.57,-0.97 1.28,-0.97 1.5,0 1.87,1.22 1.87,1.68 0,0.86 -0.77,1.04 -1.18,1.13 -0.28,0.06 -0.64,0.14 -0.64,0.57 0,0.24 0.21,0.92 1.01,0.92 0.27,0 0.64,-0.1 0.75,-0.49 -0.32,-0.04 -0.4,-0.31 -0.4,-0.41 0,-0.11 0.06,-0.28 0.3,-0.28 0.16,0 0.42,0.12 0.42,0.55 0,0.46 -0.4,0.85 -1.06,0.85 -1.17,0 -1.58,-0.96 -1.58,-1.48 0,-0.77 0.65,-0.9 0.93,-0.96 z"
- id="path9108" />
+ d="M224.6,661.66 H223.85 V661.19 H224.6 V657.7 H223.91 V657.23 C224.26,657.24,224.71,657.26,225.17,657.26 C225.54,657.26,226.18,657.26,226.54,657.23 V657.7 H225.67 V661.19 H226.82 V661.66 H225.61 V662.66 C225.61,663.76,226.37,663.85,226.62,663.85 C226.67,663.85,226.72,663.85,226.79,663.83 C226.64,663.72,226.56,663.53,226.56,663.34 C226.56,662.91,226.91,662.72,227.17,662.72 C227.47,662.72,227.79,662.93,227.79,663.34 C227.79,663.76,227.43,664.21,226.65,664.21 C225.67,664.21,224.6,663.79,224.6,662.66 Z "
+ stroke-width="0"
+ fill="black"
+ id="path4485" />
+<path
+ d="M231.3,657.95 V657.17 L233.06,657.23 V657.7 C232.44,657.7,232.38,657.7,232.38,658.09 V661.72 L230.55,661.64 V661.17 C231.17,661.17,231.24,661.17,231.24,660.78 V658.88 C231.24,658.06,230.73,657.53,230,657.53 C229.24,657.53,229.21,657.78,229.21,658.32 V661.72 L227.38,661.64 V661.17 C228,661.17,228.07,661.17,228.07,660.78 V658.46 C228.07,657.39,228.88,657.17,229.86,657.17 C230.12,657.17,230.84,657.17,231.3,657.95 Z "
+ stroke-width="0"
+ fill="black"
+ id="path4487" />
+<path
+ d="M237.42,657.96 L237.42,658.04 L237.42,658.13 L237.42,658.21 L237.42,658.31 L237.41,658.4 L237.4,658.49 L237.39,658.59 L237.38,658.69 L237.37,658.79 L237.35,658.88 L237.33,658.98 L237.3,659.08 L237.27,659.18 L237.24,659.27 L237.2,659.37 L237.15,659.46 L237.11,659.55 L237.05,659.63 L236.99,659.72 L236.93,659.8 L236.85,659.87 L236.77,659.94 L236.69,660.01 L236.64,660.04 L236.59,660.07 L236.54,660.1 L236.49,660.12 L236.44,660.15 L236.38,660.17 L236.33,660.19 L236.27,660.21 L236.2,660.23 L236.14,660.25 L236.07,660.26 L236.01,660.28 L235.94,660.29 L235.86,660.3 L235.79,660.31 L235.71,660.31 L235.63,660.31 L235.55,660.32 V659.99 C235.81,659.99,236.27,659.88,236.38,659.4 C236.45,659.07,236.45,658.49,236.45,658.05 C236.45,657.56,236.45,657.05,236.38,656.66 C236.29,656.1,235.81,655.98,235.55,655.98 H235.55 C235.32,655.98,235.12,656.05,234.95,656.2 C234.76,656.36,234.64,656.47,234.64,658.05 C234.64,658.53,234.64,659.08,234.72,659.41 C234.83,659.87,235.26,659.99,235.55,659.99 V660.32 C233.76,660.32,233.67,658.81,233.67,657.96 C233.67,657.08,233.78,655.66,235.55,655.66 C237.31,655.66,237.42,657.07,237.42,657.96 Z "
+ stroke-width="0"
+ fill="black"
+ id="path4489" />
</g> <g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
ns0:preamble=""
- ns0:text="$0$\n\n\n\n"
+ ns0:text="$\\mathbf{fu_1}$\n\n\n\n\n"
+ text-anchor="start"
word-spacing="normal"
letter-spacing="normal"
font-size-adjust="none"
font-weight="normal"
font-variant="normal"
font-style="normal"
+ fill-opacity="1"
+ fill-rule="evenodd"
+ fill="none"
+ stroke-opacity="1"
+ stroke-dashoffset="0"
+ stroke-dasharray="none"
stroke-miterlimit="10.433"
+ stroke-linejoin="miter"
+ stroke-linecap="butt"
+ stroke="black"
xml:space="preserve"
- transform="matrix(1,0,0,-1,152.33474,1503.5671)"
- id="g9419">
+ transform="matrix(1,0,0,-1,235.265,1556.175)"
+ id="g4808">
<path
- style="fill:#000000;stroke-width:0"
- id="path9421"
- d="m 228.01,660.42 0,0.15 0,0.15 0,0.15 -0.01,0.15 -0.01,0.15 -0.01,0.14 -0.01,0.15 -0.02,0.15 -0.03,0.15 -0.02,0.14 -0.04,0.15 -0.03,0.14 -0.05,0.14 -0.05,0.14 -0.05,0.14 -0.03,0.07 -0.03,0.07 c -0.46,0.96 -1.28,1.12 -1.7,1.12 -0.6,0 -1.32,-0.26 -1.73,-1.19 -0.32,-0.69 -0.37,-1.46 -0.37,-2.26 0,-0.75 0.04,-1.64 0.45,-2.4 0.43,-0.81 1.16,-1.01 1.64,-1.01 v 0.22 c -0.39,0 -0.97,0.25 -1.15,1.21 -0.11,0.6 -0.11,1.51 -0.11,2.1 0,0.64 0,1.3 0.08,1.83 0.19,1.19 0.93,1.28 1.18,1.28 0.33,0 0.99,-0.18 1.18,-1.17 0.1,-0.56 0.1,-1.31 0.1,-1.94 0,-0.75 0,-1.43 -0.11,-2.06 -0.15,-0.95 -0.72,-1.25 -1.17,-1.25 h 0 v -0.22 c 0.54,0 1.3,0.21 1.74,1.16 0.31,0.69 0.36,1.46 0.36,2.25 z" />
+ id="path4810"
+ fill="black"
+ stroke-width="0"
+ d="M224.6,661.66 H223.85 V661.19 H224.6 V657.7 H223.91 V657.23 C224.26,657.24,224.71,657.26,225.17,657.26 C225.54,657.26,226.18,657.26,226.54,657.23 V657.7 H225.67 V661.19 H226.82 V661.66 H225.61 V662.66 C225.61,663.76,226.37,663.85,226.62,663.85 C226.67,663.85,226.72,663.85,226.79,663.83 C226.64,663.72,226.56,663.53,226.56,663.34 C226.56,662.91,226.91,662.72,227.17,662.72 C227.47,662.72,227.79,662.93,227.79,663.34 C227.79,663.76,227.43,664.21,226.65,664.21 C225.67,664.21,224.6,663.79,224.6,662.66 Z " />
+<path
+ id="path4812"
+ fill="black"
+ stroke-width="0"
+ d="M231.3,657.95 V657.17 L233.06,657.23 V657.7 C232.44,657.7,232.38,657.7,232.38,658.09 V661.72 L230.55,661.64 V661.17 C231.17,661.17,231.24,661.17,231.24,660.78 V658.88 C231.24,658.06,230.73,657.53,230,657.53 C229.24,657.53,229.21,657.78,229.21,658.32 V661.72 L227.38,661.64 V661.17 C228,661.17,228.07,661.17,228.07,660.78 V658.46 C228.07,657.39,228.88,657.17,229.86,657.17 C230.12,657.17,230.84,657.17,231.3,657.95 Z " />
+<path
+ id="path4814"
+ fill="black"
+ stroke-width="0"
+ d="M236.08,660.07 L236.08,660.08 L236.08,660.09 L236.08,660.1 L236.08,660.11 L236.08,660.12 L236.08,660.13 L236.08,660.14 L236.08,660.15 L236.07,660.16 L236.07,660.17 L236.07,660.18 L236.07,660.18 L236.07,660.19 L236.07,660.2 L236.07,660.21 L236.06,660.22 L236.06,660.24 L236.05,660.25 L236.05,660.26 L236.04,660.26 L236.03,660.27 L236.03,660.28 L236.02,660.28 L236.01,660.29 L236,660.29 L235.99,660.3 L235.97,660.3 L235.96,660.31 L235.95,660.31 L235.93,660.31 L235.91,660.31 L235.9,660.31 L235.88,660.31 L235.87,660.31 L235.86,660.31 L235.85,660.31 L235.83,660.31 L235.82,660.31 L235.81,660.31 L235.8,660.31 L235.79,660.31 L235.78,660.31 L235.76,660.31 L235.75,660.32 L235.74,660.32 C235.3,659.97,234.73,659.87,234.17,659.87 H234.01 V659.48 H234.17 C234.45,659.48,234.88,659.53,235.17,659.62 V656.13 H234.07 V655.74 C234.41,655.77,235.25,655.77,235.62,655.77 C235.88,655.77,236.13,655.76,236.38,655.76 C236.59,655.76,236.95,655.75,237.15,655.74 V656.13 H236.08 Z " />
</g> <g
- id="g9731"
- transform="matrix(1,0,0,-1,158.13,1503.6771)"
+ id="g5135"
+ transform="matrix(1,0,0,-1,291.265,1556.175)"
xml:space="preserve"
+ stroke="black"
+ stroke-linecap="butt"
+ stroke-linejoin="miter"
stroke-miterlimit="10.433"
+ stroke-dasharray="none"
+ stroke-dashoffset="0"
+ stroke-opacity="1"
+ fill="none"
+ fill-rule="evenodd"
+ fill-opacity="1"
font-style="normal"
font-variant="normal"
font-weight="normal"
font-size-adjust="none"
letter-spacing="normal"
word-spacing="normal"
- ns0:text="$1$\n\n\n\n\n"
+ text-anchor="start"
+ ns0:text="$\\mathbf{fu_2}$\n\n\n\n\n"
ns0:preamble=""
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
<path
- style="fill:#000000;stroke-width:0"
- d="m 226.36,663.61 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0 -0.01,0.01 0,0.02 0,0.01 0,0.01 -0.01,0 0,0.01 -0.01,0.01 0,0 -0.01,0.01 -0.01,0 0,0.01 -0.01,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 c -0.62,-0.64 -1.49,-0.64 -1.81,-0.64 v -0.31 c 0.2,0 0.79,0 1.3,0.26 v -5.16 c 0,-0.36 -0.03,-0.48 -0.92,-0.48 h -0.32 v -0.31 c 0.35,0.03 1.21,0.03 1.61,0.03 0.4,0 1.27,0 1.62,-0.03 v 0.31 h -0.32 c -0.9,0 -0.93,0.11 -0.93,0.48 z"
- id="path9733" />
+ d="M224.6,661.66 H223.85 V661.19 H224.6 V657.7 H223.91 V657.23 C224.26,657.24,224.71,657.26,225.17,657.26 C225.54,657.26,226.18,657.26,226.54,657.23 V657.7 H225.67 V661.19 H226.82 V661.66 H225.61 V662.66 C225.61,663.76,226.37,663.85,226.62,663.85 C226.67,663.85,226.72,663.85,226.79,663.83 C226.64,663.72,226.56,663.53,226.56,663.34 C226.56,662.91,226.91,662.72,227.17,662.72 C227.47,662.72,227.79,662.93,227.79,663.34 C227.79,663.76,227.43,664.21,226.65,664.21 C225.67,664.21,224.6,663.79,224.6,662.66 Z "
+ stroke-width="0"
+ fill="black"
+ id="path5137" />
+<path
+ d="M231.3,657.95 V657.17 L233.06,657.23 V657.7 C232.44,657.7,232.38,657.7,232.38,658.09 V661.72 L230.55,661.64 V661.17 C231.17,661.17,231.24,661.17,231.24,660.78 V658.88 C231.24,658.06,230.73,657.53,230,657.53 C229.24,657.53,229.21,657.78,229.21,658.32 V661.72 L227.38,661.64 V661.17 C228,661.17,228.07,661.17,228.07,660.78 V658.46 C228.07,657.39,228.88,657.17,229.86,657.17 C230.12,657.17,230.84,657.17,231.3,657.95 Z "
+ stroke-width="0"
+ fill="black"
+ id="path5139" />
+<path
+ d="M237.33,657.33 H236.89 C236.87,657.25,236.81,656.75,236.68,656.72 C236.54,656.7,236.12,656.7,235.96,656.7 H235 C235.39,656.98,235.78,657.27,236.18,657.53 C236.75,657.89,237.33,658.26,237.33,658.96 C237.33,659.79,236.54,660.32,235.43,660.32 C234.48,660.32,233.77,659.95,233.77,659.28 C233.77,658.88,234.1,658.73,234.31,658.73 C234.56,658.73,234.85,658.91,234.85,659.28 C234.85,659.61,234.59,659.75,234.57,659.76 C234.82,659.92,235.14,659.92,235.23,659.92 C235.82,659.92,236.29,659.55,236.29,658.95 C236.29,658.41,235.92,657.97,235.52,657.61 L233.86,656.14 C233.78,656.05,233.77,656.05,233.77,655.91 V655.74 H237.09 Z "
+ stroke-width="0"
+ fill="black"
+ id="path5141" />
</g> <g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
ns0:preamble=""
- ns0:text="$\\mathbf{cpu}$\n\n\n\n\n"
+ ns0:text="$\\mathbf{fu_3}$\n\n\n\n\n"
+ text-anchor="start"
word-spacing="normal"
letter-spacing="normal"
font-size-adjust="none"
font-weight="normal"
font-variant="normal"
font-style="normal"
+ fill-opacity="1"
+ fill-rule="evenodd"
+ fill="none"
+ stroke-opacity="1"
+ stroke-dashoffset="0"
+ stroke-dasharray="none"
stroke-miterlimit="10.433"
+ stroke-linejoin="miter"
+ stroke-linecap="butt"
+ stroke="black"
xml:space="preserve"
- transform="matrix(1,0,0,-1,256.305,1469.5703)"
- id="g10049">
+ transform="matrix(1,0,0,-1,347.265,1556.175)"
+ id="g5464">
<path
- id="path10051"
- d="m 227.02,661.29 -0.02,-0.02 -0.01,-0.01 -0.02,-0.02 -0.01,-0.01 -0.01,-0.02 -0.02,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 0,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.02 0,-0.01 -0.01,-0.02 0,-0.01 -0.01,-0.02 0,-0.01 0,-0.02 -0.01,-0.01 0,-0.02 0,-0.01 0,-0.01 -0.01,-0.02 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 c 0,-0.44 0.35,-0.63 0.62,-0.63 0.31,0 0.63,0.21 0.63,0.63 0,0.86 -1.16,0.92 -1.74,0.92 -1.78,0 -2.52,-1.15 -2.52,-2.31 0,-1.32 0.94,-2.27 2.47,-2.27 1.62,0 1.92,1.16 1.92,1.23 0,0.14 -0.15,0.14 -0.24,0.14 -0.18,0 -0.19,-0.02 -0.24,-0.15 -0.26,-0.63 -0.74,-0.82 -1.25,-0.82 -1.38,0 -1.38,1.47 -1.38,1.92 0,0.56 0,1.86 1.28,1.86 0.35,0 0.52,-0.03 0.65,-0.06 z"
- style="fill:#000000;stroke-width:0" />
+ id="path5466"
+ fill="black"
+ stroke-width="0"
+ d="M224.6,661.66 H223.85 V661.19 H224.6 V657.7 H223.91 V657.23 C224.26,657.24,224.71,657.26,225.17,657.26 C225.54,657.26,226.18,657.26,226.54,657.23 V657.7 H225.67 V661.19 H226.82 V661.66 H225.61 V662.66 C225.61,663.76,226.37,663.85,226.62,663.85 C226.67,663.85,226.72,663.85,226.79,663.83 C226.64,663.72,226.56,663.53,226.56,663.34 C226.56,662.91,226.91,662.72,227.17,662.72 C227.47,662.72,227.79,662.93,227.79,663.34 C227.79,663.76,227.43,664.21,226.65,664.21 C225.67,664.21,224.6,663.79,224.6,662.66 Z " />
<path
- id="path10053"
- d="m 230.72,657.62 0.04,-0.03 0.04,-0.03 0.04,-0.03 0.04,-0.03 0.04,-0.02 0.04,-0.03 0.04,-0.02 0.04,-0.03 0.04,-0.02 0.04,-0.02 0.04,-0.02 0.04,-0.01 0.04,-0.02 0.04,-0.02 0.04,-0.01 0.04,-0.01 0.04,-0.02 0.04,-0.01 0.08,-0.02 0.08,-0.01 0.08,-0.02 0.08,-0.01 0.08,0 0.08,-0.01 0.07,0 -0.11,0.36 c -0.14,0 -0.61,0 -1.05,0.54 -0.11,0.13 -0.11,0.14 -0.11,0.33 v 2.11 c 0,0.19 0.01,0.2 0.15,0.34 0.39,0.41 0.91,0.47 1.13,0.47 0.67,0 1.23,-0.61 1.23,-1.87 0,-1.4 -0.7,-1.92 -1.35,-1.92 l 0.11,-0.36 c 1.5,0 2.51,0.9 2.51,2.28 0,1.33 -0.9,2.27 -2.34,2.27 -0.75,0 -1.27,-0.31 -1.5,-0.49 v 0.49 l -1.77,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.38 v -5.02 h -0.69 v -0.47 c 0.28,0.01 0.88,0.03 1.26,0.03 0.39,0 0.97,-0.02 1.25,-0.03 v 0.47 h -0.68 z"
- style="fill:#000000;stroke-width:0" />
+ id="path5468"
+ fill="black"
+ stroke-width="0"
+ d="M231.3,657.95 V657.17 L233.06,657.23 V657.7 C232.44,657.7,232.38,657.7,232.38,658.09 V661.72 L230.55,661.64 V661.17 C231.17,661.17,231.24,661.17,231.24,660.78 V658.88 C231.24,658.06,230.73,657.53,230,657.53 C229.24,657.53,229.21,657.78,229.21,658.32 V661.72 L227.38,661.64 V661.17 C228,661.17,228.07,661.17,228.07,660.78 V658.46 C228.07,657.39,228.88,657.17,229.86,657.17 C230.12,657.17,230.84,657.17,231.3,657.95 Z " />
<path
- id="path10055"
- d="m 239.26,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.69,0 -0.69,0.39 v 3.63 l -1.82,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.77,0 -0.8,0.25 -0.8,0.79 v 3.4 l -1.82,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
- style="fill:#000000;stroke-width:0" />
+ id="path5470"
+ fill="black"
+ stroke-width="0"
+ d="M235.4,658.01 L235.44,658.01 L235.48,658.01 L235.51,658 L235.55,658 L235.58,658 L235.61,657.99 L235.65,657.99 L235.68,657.98 L235.71,657.97 L235.73,657.96 L235.76,657.96 L235.79,657.95 L235.81,657.94 L235.84,657.93 L235.86,657.91 L235.89,657.9 L235.91,657.89 L235.93,657.88 L235.95,657.86 L235.97,657.85 L236.01,657.82 L236.04,657.79 L236.07,657.76 L236.1,657.72 L236.12,657.68 L236.14,657.65 L236.16,657.61 L236.18,657.57 L236.2,657.53 L236.21,657.49 L236.22,657.45 L236.23,657.4 L236.24,657.36 L236.25,657.32 L236.25,657.28 L236.26,657.24 L236.26,657.2 L236.26,657.16 L236.26,657.12 L236.27,657.08 L236.27,657.04 L236.27,657.01 C236.27,656.72,236.27,656.01,235.43,656.01 C235.24,656.01,234.8,656.05,234.5,656.23 C234.65,656.3,234.83,656.46,234.83,656.76 C234.83,657.08,234.6,657.32,234.26,657.32 C233.92,657.32,233.69,657.08,233.69,656.75 C233.69,656.04,234.47,655.66,235.46,655.66 C236.91,655.66,237.4,656.42,237.4,657 C237.4,657.54,236.98,658.03,236.18,658.19 C236.68,658.38,237.15,658.74,237.15,659.33 C237.15,659.87,236.59,660.32,235.48,660.32 C234.53,660.32,233.94,659.85,233.94,659.27 C233.94,658.92,234.2,658.73,234.47,658.73 C234.82,658.73,235,658.99,235,659.26 C235,659.61,234.72,659.74,234.65,659.76 C234.93,659.97,235.3,659.99,235.44,659.99 C236.13,659.99,236.13,659.54,236.13,659.34 C236.13,659.03,235.99,658.38,235.29,658.35 C235.12,658.34,234.94,658.33,234.9,658.32 C234.81,658.29,234.81,658.21,234.81,658.17 C234.81,658.01,234.9,658.01,235.03,658.01 Z " />
</g> </g>
</svg>