[Mlir-commits] [mlir] 52fad38 - [mlir][mlir-lsp-server] Add some initial documentation on the MLIR LSP server
River Riddle
llvmlistbot at llvm.org
Wed Apr 21 14:46:48 PDT 2021
Author: River Riddle
Date: 2021-04-21T14:44:37-07:00
New Revision: 52fad38d28c19d3ed2442ae53a63d56dd8c57f71
URL: https://github.com/llvm/llvm-project/commit/52fad38d28c19d3ed2442ae53a63d56dd8c57f71
DIFF: https://github.com/llvm/llvm-project/commit/52fad38d28c19d3ed2442ae53a63d56dd8c57f71.diff
LOG: [mlir][mlir-lsp-server] Add some initial documentation on the MLIR LSP server
This covers some of the basic documentation, but is still missing some documentation/examples of features provided by the server. Feature documentation will be added in a followup.
Differential Revision: https://reviews.llvm.org/D100690
Added:
mlir/docs/Tools/MLIRLSP.md
mlir/docs/includes/img/mlir-lsp-server-server_diagram.svg
Modified:
Removed:
################################################################################
diff --git a/mlir/docs/Tools/MLIRLSP.md b/mlir/docs/Tools/MLIRLSP.md
new file mode 100644
index 0000000000000..1c241d5f0affd
--- /dev/null
+++ b/mlir/docs/Tools/MLIRLSP.md
@@ -0,0 +1,111 @@
+# MLIR : Language Server Protocol
+
+[TOC]
+
+This document describes the tools and utilities related to supporting
+[LSP](https://microsoft.github.io/language-server-protocol/) IDE language
+extensions for the MLIR textual assembly format. An LSP language extension is
+generally comprised of two components; a language client and a language server.
+A language client is a piece of code that interacts with the IDE that you are
+using, such as VSCode. A language server acts as the backend for queries that
+the client may want to perform, such as "Find Definition", "Find References",
+etc.
+
+## MLIR LSP Language Server : `mlir-lsp-server`
+
+MLIR provides an implementation of an LSP language server in the form of the
+`mlir-lsp-server` tool. This tool interacts with the MLIR C++ API to support
+rich language queries, such as "Find Definition".
+
+### Supporting custom dialects and passes
+
+`mlir-lsp-server`, like many other MLIR based tools, relies on having the
+appropriate dialects registered to be able to parse in the custom assembly
+formats used in the textual .mlir files. The `mlir-lsp-server` found within the
+main MLIR repository provides support for all of the upstream MLIR dialects and
+passes. Downstream and out-of-tree users will need to provide a custom
+`mlir-lsp-server` executable that registers the entities that they are
+interested in. The implementation of `mlir-lsp-server` is provided as a library,
+making it easy for downstream users to register their dialect/passes and simply
+call into the main implementation. A simple example is shown below:
+
+```c++
+#include "mlir/Tools/mlir-lsp-server/MlirLspServerMain.h"
+
+int main(int argc, char **argv) {
+ mlir::DialectRegistry registry;
+ registerMyDialects(registry);
+ registerMyPasses();
+ return failed(mlir::MlirLspServerMain(argc, argv, registry));
+}
+```
+
+### Design
+
+The design of `mlir-lsp-server` is largely comprised of three
diff erent
+components:
+
+* Communication and Transport (via JSON-RPC)
+* Language Server Protocol
+* MLIR Language Server
+
+![Index Map Example](/includes/img/mlir-lsp-server-server_diagram.svg)
+
+#### Communication and Transport
+
+`mlir-lsp-server` communicates with the language client via JSON-RPC over
+stdin/stdout. In the code, this is the `JSONTransport` class. This class knows
+nothing about the Language Server Protocol, it only knows that JSON-RPC messages
+are coming in and JSON-RPC messages are going out. The handling of incoming and
+outgoing LSP messages is left to the `MessageHandler` class. This class routes
+incoming messages to handlers in the `Language Server Protocol` layer for
+interpretation, and packages outgoing messages for transport. This class also
+has limited knowledge of the LSP, and only has information about the three main
+classes of messages: notifications, calls, and replies.
+
+#### Language Server Protocol
+
+`LSPServer` handles the interpretation of the finer LSP details. This class
+registers handlers for LSP messages and then forwards to the `MLIR Language
+Server` for processing. The intent of this component is to hold all of the
+necessary glue when communicating from the MLIR world to the LSP world. In most
+cases, the LSP message handlers simply forward to the `MLIR Language Server`. In
+some cases however, the impedance mismatch between the two requires more
+complicated glue code.
+
+#### MLIR Language Server
+
+`MLIRServer` provides the internal MLIR-based implementation of all of LSP
+queries. This is the class that directly interacts with the MLIR C++ API,
+including parsing .mlir text files, running passes, etc.
+
+## Editor Plugins
+
+LSP Language plugins are available for many popular editors, and in principle
+`mlir-lsp-server` should work with any of them, though feature set and interface
+may vary. Below are a set of plugins that are known to work:
+
+### Visual Studio Code
+
+Provides MLIR language IDE features for VS code.
+
+#### Setup
+
+This extension requires the `mlir-lsp-server` language server. If not found in
+your path, you must specify the path of the server in the settings of this
+extension.
+
+#### Developing in the LLVM monorepo
+
+This extension is actively developed within the LLVM monorepo, at
+`mlir/utils/vscode`. When developing or deploying this extension within the LLVM
+monorepo, a few extra steps for setup are required:
+
+* Copy `mlir/utils/textmate/mlir.json` to the extension directory and rename
+ to `grammar.json`.
+
+#### Features
+
+* Syntax highlighting for .mlir files and `mlir` markdown blocks
+* go-to-definition and cross references
+ * Definitions include the source file locations of operations in the .mlir
diff --git a/mlir/docs/includes/img/mlir-lsp-server-server_diagram.svg b/mlir/docs/includes/img/mlir-lsp-server-server_diagram.svg
new file mode 100644
index 0000000000000..457705858684d
--- /dev/null
+++ b/mlir/docs/includes/img/mlir-lsp-server-server_diagram.svg
@@ -0,0 +1 @@
+<svg version="1.1" viewBox="0.0 0.0 838.7847769028872 221.9265091863517" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l838.7848 0l0 221.92651l-838.7848 0l0 -221.92651z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l838.7848 0l0 221.92651l-838.7848 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m564.43176 0l0.78741455 223.52756" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="1.0,3.0" d="m564.43176 0l0.78741455 223.52756" fill-rule="evenodd"/><g filter="url(#shadowFilter-p.1)"><use xlink:href="#p.1" transform="matrix(1.0 0.0 0.0 1.0 0.0 2.0)"/></g><defs><filter id="shadowFilter-p.1" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="2.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="0.0"/><feFuncG type="linear" slope="0" intercept="0.0"/><feFuncB type="linear" slope="0" intercept="0.0"/><feFuncA type="linear" slope="0.5" intercept="0"/></feComponentTransfer></filter></defs><g id="p.1"><path fill="#cfe2f3" d="m593.84515 66.336006l0 0c0 -12.869511 10.4328 -23.302307 23.302307 -23.302307l158.84418 0c6.180176 0 12.107239 2.455059 16.477234 6.8250885c4.370056 4.3700294 6.8250732 10.297062 6.8250732 16.477219l0 93.20641c0 12.869507 -10.4328 23.302307 -23.302307 23.302307l-158.84418 0c-12.869507 0 -23.302307 -10.4328 -23.302307 -23.302307z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m593.84515 66.336006l0 0c0 -12.869511 10.4328 -23.302307 23.302307 -23.302307l158.84418 0c6.180176 0 12.107239 2.455059 16.477234 6.8250885c4.370056 4.3700294 6.8250732 10.297062 6.8250732 16.477219l0 93.20641c0 12.869507 -10.4328 23.302307 -23.302307 23.302307l-158.84418 0c-12.869507 0 -23.302307 -10.4328 -23.302307 -23.302307z" fill-rule="evenodd"/></g><path fill="#000000" fill-opacity="0.0" d="m637.23096 53.396324l118.677185 0l0 50.078743l-118.677185 0z" fill-rule="evenodd"/><path fill="#000000" d="m677.19305 86.716324l0 -18.125l3.65625 0l0 18.125l-3.65625 0zm7.1306763 -18.125l6.6875 0q2.265625 0 3.453125 0.34375q1.59375 0.46875 2.734375 1.671875q1.140625 1.1875 1.734375 2.9375q0.59375 1.734375 0.59375 4.28125q0 2.234375 -0.5625 3.859375q-0.671875 1.96875 -1.9375 3.203125q-0.953125 0.921875 -2.578125 1.4375q-1.203125 0.390625 -3.234375 0.390625l-6.890625 0l0 -18.125zm3.65625 3.0625l0 12.0l2.734375 0q1.53125 0 2.21875 -0.171875q0.890625 -0.21875 1.46875 -0.75q0.59375 -0.53125 0.96875 -1.75q0.375 -1.21875 0.375 -3.3125q0 -2.109375 -0.375 -3.234375q-0.375 -1.125 -1.046875 -1.75q-0.65625 -0.640625 -1.6875 -0.859375q-0.765625 -0.171875 -3.0 -0.171875l-1.65625 0zm14.650574 15.0625l0 -18.125l13.4375 0l0 3.0625l-9.78125 0l0 4.015625l9.109375 0l0 3.0625l-9.109375 0l0 4.921875l10.125 0l0 3.0625l-13.78125 0z" fill-rule="nonzero"/><path fill="#efefef" d="m639.6798 118.29937l0 0c0 -4.3139954 3.4971924 -7.81118 7.811157 -7.81118l103.05481 0c2.0716553 0 4.0584717 0.8229599 5.5233154 2.2878418c1.4649048 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971924 7.8111725 -7.811157 7.8111725l-103.05481 0l0 0c-4.313965 0 -7.811157 -3.4971771 -7.811157 -7.8111725z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m639.6798 118.29937l0 0c0 -4.3139954 3.4971924 -7.81118 7.811157 -7.81118l103.05481 0c2.0716553 0 4.0584717 0.8229599 5.5233154 2.2878418c1.4649048 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971924 7.8111725 -7.811157 7.8111725l-103.05481 0l0 0c-4.313965 0 -7.811157 -3.4971771 -7.811157 -7.8111725z" fill-rule="evenodd"/><path fill="#000000" d="m652.32697 140.84126l0 -13.359383l1.78125 0l0 11.781258l6.5625 0l0 1.578125l-8.34375 0zm9.860107 -4.296875l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.3437576q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875763 1.75 1.4062576q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm13.0373535 4.296875l0 -13.359383l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.6406326q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm25.055237 2.3125l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125076 3.25 -0.8125076q2.0 0 3.359375 1.0156326q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.6917114 4.6875l0 -13.359383l1.640625 0l0 13.359383l-1.640625 0zm4.1917114 -11.46875l0 -1.8906326l1.640625 0l0 1.8906326l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.769775 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.953857 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.9843826l0 3.3750076l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625z" fill-rule="nonzero"/><g filter="url(#shadowFilter-p.2)"><use xlink:href="#p.2" transform="matrix(1.0 0.0 0.0 1.0 0.0 2.0)"/></g><defs><filter id="shadowFilter-p.2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="2.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="0.0"/><feFuncG type="linear" slope="0" intercept="0.0"/><feFuncB type="linear" slope="0" intercept="0.0"/><feFuncA type="linear" slope="0.5" intercept="0"/></feComponentTransfer></filter></defs><g id="p.2"><path fill="#b6d7a8" d="m39.490814 66.336426l0 0c0 -12.869507 10.4327965 -23.302303 23.302303 -23.302303l449.80484 0c6.180176 0 12.107178 2.4550552 16.477234 6.8250847c4.369995 4.3700294 6.8250732 10.297062 6.8250732 16.477219l0 93.20642c0 12.869507 -10.4328 23.302292 -23.302307 23.302292l-449.80484 0c-12.869507 0 -23.302303 -10.432785 -23.302303 -23.302292z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m39.490814 66.336426l0 0c0 -12.869507 10.4327965 -23.302303 23.302303 -23.302303l449.80484 0c6.180176 0 12.107178 2.4550552 16.477234 6.8250847c4.369995 4.3700294 6.8250732 10.297062 6.8250732 16.477219l0 93.20642c0 12.869507 -10.4328 23.302292 -23.302307 23.302292l-449.80484 0c-12.869507 0 -23.302303 -10.432785 -23.302303 -23.302292z" fill-rule="evenodd"/></g><path fill="#000000" fill-opacity="0.0" d="m183.31758 53.396324l208.7559 0l0 50.078743l-208.7559 0z" fill-rule="evenodd"/><path fill="#000000" d="m201.2712 73.5757l3.203125 0l0 1.796875q1.71875 -2.09375 4.09375 -2.09375q1.25 0 2.171875 0.53125q0.9375 0.515625 1.53125 1.5625q0.875 -1.046875 1.875 -1.5625q1.0 -0.53125 2.140625 -0.53125q1.4375 0 2.4375 0.59375q1.0 0.59375 1.5 1.71875q0.359375 0.84375 0.359375 2.734375l0 8.390625l-3.46875 0l0 -7.5q0 -1.96875 -0.359375 -2.53125q-0.484375 -0.734375 -1.484375 -0.734375q-0.734375 0 -1.375 0.453125q-0.640625 0.4375 -0.9375 1.296875q-0.28125 0.859375 -0.28125 2.703125l0 6.3125l-3.46875 0l0 -7.203125q0 -1.90625 -0.1875 -2.46875q-0.1875 -0.5625 -0.578125 -0.828125q-0.390625 -0.265625 -1.046875 -0.265625q-0.8125 0 -1.453125 0.4375q-0.640625 0.421875 -0.921875 1.234375q-0.28125 0.8125 -0.28125 2.71875l0 6.375l-3.46875 0l0 -13.140625zm22.770767 13.140625l0 -18.125l3.484375 0l0 18.125l-3.484375 0zm7.036972 -14.921875l0 -3.203125l3.484375 0l0 3.203125l-3.484375 0zm0 14.921875l0 -13.140625l3.484375 0l0 13.140625l-3.484375 0zm10.365097 0l-3.46875 0l0 -13.140625l3.21875 0l0 1.875q0.828125 -1.328125 1.484375 -1.75q0.671875 -0.421875 1.515625 -0.421875q1.1875 0 2.28125 0.65625l-1.0625 3.03125q-0.890625 -0.5625 -1.640625 -0.5625q-0.734375 0 -1.25 0.40625q-0.5 0.390625 -0.796875 1.453125q-0.28125 1.046875 -0.28125 4.390625l0 4.0625zm6.1379547 -4.828125l0 -3.484375l6.828125 0l0 3.484375l-6.828125 0zm8.8250885 4.828125l0 -18.125l3.484375 0l0 18.125l-3.484375 0zm5.8182373 -3.75l3.484375 -0.53125q0.21875 1.015625 0.90625 1.546875q0.6875 0.515625 1.90625 0.515625q1.34375 0 2.03125 -0.484375q0.453125 -0.359375 0.453125 -0.9375q0 -0.390625 -0.25 -0.65625q-0.25 -0.234375 -1.15625 -0.453125q-4.203125 -0.921875 -5.328125 -1.6875q-1.5625 -1.0625 -1.5625 -2.96875q0 -1.703125 1.34375 -2.859375q1.34375 -1.171875 4.1875 -1.171875q2.6875 0 4.0 0.890625q1.3125 0.875 1.8125 2.59375l-3.28125 0.609375q-0.21875 -0.765625 -0.8125 -1.171875q-0.578125 -0.421875 -1.65625 -0.421875q-1.375 0 -1.96875 0.390625q-0.40625 0.265625 -0.40625 0.703125q0 0.375 0.359375 0.625q0.46875 0.34375 3.234375 0.984375q2.78125 0.625 3.890625 1.546875q1.078125 0.921875 1.078125 2.578125q0 1.8125 -1.515625 3.109375q-1.5 1.296875 -4.453125 1.296875q-2.6875 0 -4.25 -1.078125q-1.5625 -1.09375 -2.046875 -2.96875zm15.211304 -9.390625l3.234375 0l0 1.9375q0.640625 -0.984375 1.703125 -1.609375q1.078125 -0.625 2.390625 -0.625q2.296875 0 3.890625 1.796875q1.59375 1.796875 1.59375 5.0q0 3.296875 -1.609375 5.125q-1.609375 1.8125 -3.890625 1.8125q-1.09375 0 -1.984375 -0.421875q-0.875 -0.4375 -1.859375 -1.5l0 6.625l-3.46875 0l0 -18.140625zm3.4375 6.34375q0 2.21875 0.875 3.28125q0.875 1.046875 2.140625 1.046875q1.21875 0 2.015625 -0.96875q0.8125 -0.96875 0.8125 -3.171875q0 -2.078125 -0.828125 -3.078125q-0.828125 -1.0 -2.0625 -1.0q-1.265625 0 -2.109375 0.984375q-0.84375 0.984375 -0.84375 2.90625zm11.737061 1.96875l0 -3.484375l6.828125 0l0 3.484375l-6.828125 0zm7.6063232 1.078125l3.484375 -0.53125q0.21875 1.015625 0.90625 1.546875q0.6875 0.515625 1.90625 0.515625q1.34375 0 2.03125 -0.484375q0.453125 -0.359375 0.453125 -0.9375q0 -0.390625 -0.25 -0.65625q-0.25 -0.234375 -1.15625 -0.453125q-4.203125 -0.921875 -5.328125 -1.6875q-1.5625 -1.0625 -1.5625 -2.96875q0 -1.703125 1.34375 -2.859375q1.34375 -1.171875 4.1875 -1.171875q2.6875 0 4.0 0.890625q1.3125 0.875 1.8125 2.59375l-3.28125 0.609375q-0.21875 -0.765625 -0.8125 -1.171875q-0.578125 -0.421875 -1.65625 -0.421875q-1.375 0 -1.96875 0.390625q-0.40625 0.265625 -0.40625 0.703125q0 0.375 0.359375 0.625q0.46875 0.34375 3.234375 0.984375q2.78125 0.625 3.890625 1.546875q1.078125 0.921875 1.078125 2.578125q0 1.8125 -1.515625 3.109375q-1.5 1.296875 -4.453125 1.296875q-2.6875 0 -4.25 -1.078125q-1.5625 -1.09375 -2.046875 -2.96875zm22.914429 -0.4375l3.46875 0.59375q-0.671875 1.90625 -2.109375 2.90625q-1.4375 0.984375 -3.609375 0.984375q-3.421875 0 -5.0625 -2.234375q-1.3125 -1.796875 -1.3125 -4.53125q0 -3.265625 1.703125 -5.109375q1.71875 -1.859375 4.328125 -1.859375q2.921875 0 4.609375 1.9375q1.703125 1.9375 1.640625 5.9375l-8.71875 0q0.046875 1.546875 0.84375 2.40625q0.8125 0.859375 2.0 0.859375q0.828125 0 1.375 -0.4375q0.5625 -0.453125 0.84375 -1.453125zm0.203125 -3.5q-0.046875 -1.515625 -0.796875 -2.296875q-0.734375 -0.78125 -1.796875 -0.78125q-1.125 0 -1.875 0.828125q-0.734375 0.828125 -0.734375 2.25l5.203125 0zm9.601929 7.6875l-3.46875 0l0 -13.140625l3.21875 0l0 1.875q0.828125 -1.328125 1.484375 -1.75q0.671875 -0.421875 1.515625 -0.421875q1.1875 0 2.28125 0.65625l-1.0625 3.03125q-0.890625 -0.5625 -1.640625 -0.5625q-0.734375 0 -1.25 0.40625q-0.5 0.390625 -0.796875 1.453125q-0.28125 1.046875 -0.28125 4.390625l0 4.0625zm10.13797 0l-5.28125 -13.140625l3.640625 0l2.484375 6.703125l0.703125 2.25q0.296875 -0.859375 0.359375 -1.125q0.171875 -0.5625 0.375 -1.125l2.5 -6.703125l3.578125 0l-5.21875 13.140625l-3.140625 0zm18.086304 -4.1875l3.46875 0.59375q-0.671875 1.90625 -2.109375 2.90625q-1.4375 0.984375 -3.609375 0.984375q-3.421875 0 -5.0625 -2.234375q-1.3125 -1.796875 -1.3125 -4.53125q0 -3.265625 1.703125 -5.109375q1.71875 -1.859375 4.328125 -1.859375q2.921875 0 4.609375 1.9375q1.703125 1.9375 1.640625 5.9375l-8.71875 0q0.046875 1.546875 0.84375 2.40625q0.8125 0.859375 2.0 0.859375q0.828125 0 1.375 -0.4375q0.5625 -0.453125 0.84375 -1.453125zm0.203125 -3.5q-0.046875 -1.515625 -0.796875 -2.296875q-0.734375 -0.78125 -1.796875 -0.78125q-1.125 0 -1.875 0.828125q-0.734375 0.828125 -0.734375 2.25l5.203125 0zm9.601929 7.6875l-3.46875 0l0 -13.140625l3.21875 0l0 1.875q0.828125 -1.328125 1.484375 -1.75q0.671875 -0.421875 1.515625 -0.421875q1.1875 0 2.28125 0.65625l-1.0625 3.03125q-0.890625 -0.5625 -1.640625 -0.5625q-0.734375 0 -1.25 0.40625q-0.5 0.390625 -0.796875 1.453125q-0.28125 1.046875 -0.28125 4.390625l0 4.0625z" fill-rule="nonzero"/><path fill="#efefef" d="m400.32285 118.29937l0 0c0 -4.3139954 3.4971619 -7.81118 7.811157 -7.81118l103.05481 0c2.0716858 0 4.058441 0.8229599 5.523346 2.2878418c1.4649048 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971924 7.8111725 -7.8111877 7.8111725l-103.05481 0l0 0c-4.3139954 0 -7.811157 -3.4971771 -7.811157 -7.8111725z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m400.32285 118.29937l0 0c0 -4.3139954 3.4971619 -7.81118 7.811157 -7.81118l103.05481 0c2.0716858 0 4.058441 0.8229599 5.523346 2.2878418c1.4649048 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971924 7.8111725 -7.8111877 7.8111725l-103.05481 0l0 0c-4.3139954 0 -7.811157 -3.4971771 -7.811157 -7.8111725z" fill-rule="evenodd"/><path fill="#000000" d="m424.93372 140.84126l0 -11.78125l-4.40625 0l0 -1.5781326l10.578125 0l0 1.5781326l-4.40625 0l0 11.78125l-1.765625 0zm7.0782776 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.540802 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.203827 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm9.719482 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm9.984375 6.59375l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.281952 -0.0625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281982 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.806427 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.9843826l0 3.3750076l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625z" fill-rule="nonzero"/><path fill="#efefef" d="m228.35564 118.29937l0 0c0 -4.3139954 3.4971924 -7.81118 7.8111877 -7.81118l103.054794 0c2.0716553 0 4.0584717 0.8229599 5.523346 2.2878418c1.4648743 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971924 7.8111725 -7.8111877 7.8111725l-103.054794 0l0 0c-4.3139954 0 -7.8111877 -3.4971771 -7.8111877 -7.8111725z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m228.35564 118.29937l0 0c0 -4.3139954 3.4971924 -7.81118 7.8111877 -7.81118l103.054794 0c2.0716553 0 4.0584717 0.8229599 5.523346 2.2878418c1.4648743 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971924 7.8111725 -7.8111877 7.8111725l-103.054794 0l0 0c-4.3139954 0 -7.8111877 -3.4971771 -7.8111877 -7.8111725z" fill-rule="evenodd"/><path fill="#000000" d="m271.42218 129.84126l0 -13.359383l1.78125 0l0 11.781258l6.5625 0l0 1.578125l-8.34375 0zm9.860077 -4.2968826l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.0468826q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.29688263 1.15625 -0.8125076q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.0156326q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.5937576q-0.6875 -1.0625 -0.71875 -2.40625zm13.037323 4.2968826l0 -13.359383l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.4218826l-1.765625 0zm1.765625 -7.0000076l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125z" fill-rule="nonzero"/><path fill="#000000" d="m261.06372 147.54439l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459198 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#efefef" d="m56.391075 118.29937l0 0c0 -4.3139954 3.4971848 -7.81118 7.81118 -7.81118l103.05481 0c2.0716553 0 4.0584564 0.8229599 5.5233307 2.2878418c1.4648895 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971771 7.8111725 -7.8111725 7.8111725l-103.05481 0l0 0c-4.3139954 0 -7.81118 -3.4971771 -7.81118 -7.8111725z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m56.391075 118.29937l0 0c0 -4.3139954 3.4971848 -7.81118 7.81118 -7.81118l103.05481 0c2.0716553 0 4.0584564 0.8229599 5.5233307 2.2878418c1.4648895 1.4648819 2.2878418 3.451683 2.2878418 5.5233383l0 31.243782c0 4.3139954 -3.4971771 7.8111725 -7.8111725 7.8111725l-103.05481 0l0 0c-4.3139954 0 -7.81118 -3.4971771 -7.81118 -7.8111725z" fill-rule="evenodd"/><path fill="#000000" d="m94.8339 129.84126l0 -13.359383l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359383l-1.703125 0l0 -11.171883l-3.875 11.171883l-1.59375 0l-3.859375 -11.375008l0 11.375008l-1.703125 0zm15.509552 0l0 -13.359383l1.78125 0l0 11.781258l6.5625 0l0 1.578125l-8.34375 0zm10.750717 0l0 -13.359383l1.765625 0l0 13.359383l-1.765625 0zm4.917679 0l0 -13.359383l5.9218674 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.6406326l-2.21875 0l-1.765625 -2.7812576q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.0468674 0l0 5.9375076l-1.765625 0zm1.765625 -7.4531326l3.7968674 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.2187424 0l0 4.421875z" fill-rule="nonzero"/><path fill="#000000" d="m89.09917 147.54439l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459198 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m639.69293 133.92126l-120.69293 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m633.69293 133.92126l-108.69293 0" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m633.69293 135.573l4.538086 -1.6517334l-4.538086 -1.6517334z" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m525.0 132.26953l-4.538086 1.6517334l4.538086 1.6517334z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m400.32285 133.92126l-53.29135 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m394.32285 133.92126l-41.29135 0" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m394.32285 135.573l4.538086 -1.6517334l-4.538086 -1.6517334z" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m353.0315 132.26953l-4.538086 1.6517334l4.538086 1.6517334z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m175.06824 133.92126c13.321777 0 19.982132 0.01574707 26.64354 0.03149414c6.6614227 0.01574707 13.323898 0.03149414 26.647797 0.03149414" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m175.06824 133.92126c13.321777 0 19.982132 0.01574707 26.64354 0.03149414c6.6614227 0.01574707 13.323898 0.03149414 26.647797 0.03149414" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m175.0643 133.85826c15.218414 0 23.775406 0.01574707 30.436813 0.0315094c6.6614227 0.01574707 11.427261 0.03149414 22.854523 0.03149414" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m181.0643 133.85986l4.239258 0.0011138916c3.0463867 0.0017242432 5.7509003 0.004180908 8.188034 0.0071258545c4.874222 0.0059051514 8.678833 0.013793945 12.009537 0.02166748c3.3307037 0.007873535 6.1875153 0.01574707 9.640076 0.021652222c1.7262421 0.0029449463 3.6014557 0.0054016113 5.759308 0.0071258545l1.4551239 5.340576E-4" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m181.06474 132.20811l-4.5385437 1.6505432l4.537674 1.6529236z" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m222.35504 135.57082l4.5386963 -1.6500854l-4.537491 -1.6533813z" fill-rule="evenodd"/></g></svg>
\ No newline at end of file
More information about the Mlir-commits
mailing list