Inkscape

Simplification

The main use of the Simplify command
(Ctrl+L) is reducing the number of
nodes on a path while almost preserving its shape. This may be useful for paths created by
the Pencil tool, since that tool sometimes creates more nodes than necessary. Below, the left shape is as
created by the freehand tool, and the right one is a copy that was simplified. The original path has 28 nodes,
while the simplified one has 17 (which means it is much easier to work with in node tool) and is smoother.

The amount of simplification (called the threshold) depends on the size of the selection.
Therefore, if you select a path along with some larger object, it will be simplified more aggressively than if
you select that path alone. Moreover, the Simplify command is
accelerated. This means that if you press
Ctrl+L several times in quick
succession (so that the calls are within 0.5 sec from each other), the threshold is increased on each call. (If
you do another Simplify after a pause, the threshold is back to its default value.) By making use of the
acceleration, it is easy to apply the exact amount of simplification you need for each case.

Besides smoothing freehand strokes, Simplify can be used for various creative
effects. Often, a shape which is rigid and geometric benefits from some amount of simplification that creates
cool life-like generalizations of the original form — melting sharp corners and introducing very natural
distortions, sometimes stylish and sometimes plain funny. Here’s an example of a clipart shape that looks much
nicer after Simplify:

Known issues

  • 0.92.5 is not as feature-packed as Inkscape 1.0 will be!
  • 0.92.5 is not availabe for macOS. Please use the latest beta version of Inkscape 1.0, if you want a newer Inkscape that integrates better with macOS and works with high resolution screens. Catalina users must use the beta version, because Inkscape 0.92.2 will not run on macOS Catalina (Inkscape 0.92.2 is 32bit only).
  • Many of Inkscape’s old bug reports still need to be tested and migrated to the new bug and feature request reporting page. While some progress has already been made, we still need your help with that task.
  • All (migrated and new) open issues for the project are listed on GitLab. If you have some time on your hands and can help fixing them, join us in the development chat and let us tackle them together.

Duplication, alignment, distribution

One of the most common operations is duplicating an object
(Ctrl+D). The duplicate is placed
exactly on top of the original and is selected, so you can drag it away by mouse or
by arrow keys. For practice, try to add copies of this black square in a line next to each
other:

Chances are, your copies of the square are placed more or less randomly. This is where the
ObjectAlign and Distribute dialog
(Shift+Ctrl+A)
is useful. Select all the squares
(Shift+click or
drag a rubberband), open the dialog and press the “Center on horizontal axis” button, then the “Make
horizontal gaps between objects equal” button (read the button tooltips). The objects are now neatly aligned
and distributed with equal spaces in between. Here are some other alignment and distribution examples:

Crash fixes

A variety of crashes have been fixed for this current bugfix release.

Specifically, we fixed a crash …

  • … when drawing with the Calligraphy tool inside a group with the ‘Rotate copies’ live path effect (and possibly when adding items to groups with a different path effect applied to them) (Commit b62cd9, MR #2386)
  • … when duplicating a text that had lost the frame it was flowed in (Bug #1919)
  • … that happened randomly when using undo / redo (Commit 3cb09a)
  • … when importing an SVGZ file by drag-and-drop (Commit b8e782, Bug #906)
  • … that occurred sporadically when closing Inkscape (Bug #1918, Commit 275d15)
  • … when popping an object out of its current group (Commit a803b1, Bug #1770)
  • … or, actually, multiple different crashes occuring with the Selectors and CSS dialog on Redo, Undo and Clone actions, as well as on closing the document and when having a duplicate window open (Commit 12f4d6, Bugs #142, #828, #1168, #1157, #688)
  • … with the Clone LPE (Commit e3cad6)
  • … when trying to export to PDF when there are markers included in the document whose color is defined by context-stroke (like Inkscape stock markers) (Bug #1984, Commit 9b5de7)
  • … / a freeze that occured when importing a PDF file with many icc color spaces defined (Bug #1878, Commit 5c1048)
  • … when trying to import a PDF file with Poppler version 21.0.1 (Commit c30ae8, Bug #2180) 
  • … when starting Inkscape compiled with musl instead of glibc (affecting certain Linux distributions e.g. VoidLinux, Alpine, Gentoo) (Commit #a32669, Bug #2147)

Graphical Editor / User Interface

Programs which provide a graphical user interface include Inkscape extensions, which either come with Inkscape, or , as well as external or standalone programs.

Inkscape Extensions

JessyInk is an Inkscape extension, which as of version 0.91, comes installed with Inkscape. It creates a slideshow type of animation for presentations, to be viewed in web browsers, by means of embedding JavaScript in the SVG file. Their wiki contains tutorials and other documentation, and there is some info in the Inkscape manual, as well.

Sozi is a presentation application which produces translations, zooms and rotations to be viewed in web browsers, by means of embedding JavaScript in the SVG file. It’s editor started its life as an Inkscape extension (which has to be installed). However, to allow for a more flexible and user-friendly interface, Sozi developers have decided to make it a standalone program. At some point in the near future, the Sozi extension will no longer work with Inkscape, and users will need to install the standalone version. (The Sozi extension does still work in Inkscape version 0.91, but that may be the last version of Inkscape which supports Sozi as an extension.) There is a series of tutorials about the use of the extension on their website. As the standalone version is a lot more intuitive to use, the not-yet-written documentation shouldn’t be an obstacle to using it.

XIA can be installed either as an extension or a standalone program. It creates HTML5 interactive images, which consist of interactive webpages (such as for presentations), that can even contain simple games. Interactivity includes mouse click, hover, and drag and drop. On their website can be found documentation in the form of a PDF file, an instructional video, and several example files, showing each use case which XIA can create.

Websites and Web Services

AniGen is a browser-based, Free and Open Source SVG animation editor. Development is focused on Chrome, but it should work ok in Firefox, too. User interface is a bit hard to use at first, but decent results can be achieved with an Inkscape source SVG opened directly for editing.

Standalone Programs

Xia and Sozi

Both programs (see above) are also available as standalone versions. For Sozi, this is intended as a replacement for the extension, which is no longer being developed.

GIMP is a free/open source, 2D graphics editor, which can create, import and export, both raster and vector images. (It’s primarily for raster graphics, but has some minimal vector features.) It has a relatively simple and easy to use GIF animation feature, with at least 3 tutorials on their website. You can find them by looking through their Documentation page. Basically, images drawn with Inkscape need to be exported to PNG, before they are imported into GIMP (hint: in GIMP, use Import as Layers). Note that there are MANY other programs which can create GIF animations — just search!

Tupi is a free/open source program which can animate both raster and vector images. Their Documentation page provides links to their manual, tutorials, examples, faq, and more.

Synfig Studio is a free/open source 2D animation program, which can import and utilize SVG images. Starting with version 0.91, Inkscape can even export the native Synfig format, SIF. There are both a manual and tutorials in their wiki.

enve is a relatively young free/libre 2D animation software with support for both importing SVG files and creating animated SVG documents.

Blender is a free/open source 3D animation suite, which can import SVG images. There are both manual and tutorials on their Support page.

Rendering and performance

Inkscape 0.91 includes a new renderer based on the Cairo library. This work was done mainly during Google Summer of Code 2010 and 2011 projects.

  • Improved performance. The new renderer is significantly faster on most drawings. Renderings of the most complex objects are automatically cached to improve responsiveness during editing.
  • OpenMP multithreading for filters. Filters use all available processor cores for computation. This results in substantial speedups when editing drawings containing large filtered objects on multi-core systems.
  • Substantial memory savings. Inkscape now uses less memory when opening complex drawings, in some cases using only 25% of the memory used by Inkscape 0.48. Larger files can now be opened.
  • Responsiveness improvements. The rendering of the SVG drawing is now cached. This results in massive improvements in responsiveness of path highlights, object selection / deselection, and path editing in delayed update mode.
  • Rendering bug fixes. Most of the rendering glitches in our bug tracker are no longer present in Inkscape 0.91. The following things now render correctly:

    • Pattern fills (no more gaps between tiles, regardless of transformation)
    • Stroke of transformed objects in patterns
    • Patterns containing clipped objects
    • Nested clipping paths
    • Masked and clipped objects with large masks / clipping paths in Outline view
    • Paths with wide strokes and long miters
    • Fonts

Color display mode

A grayscale display color mode has been added, that shows a preview of your drawing in grayscale. Shift+numpad5 toggles the color display mode between normal and grayscale.

Преобразование клавишами

Одна из особенностей, которая отличает Inkscape от большинства других векторных редакторов, — это акцент на доступность клавиатуры. Вряд ли есть какие-либо команды или действия, которые невозможно выполнить с клавиатуры, и преобразование объектов не исключение.

Вы можете использовать клавиатуру для перемещения ( arrowклавиш), масштабирования ( <и >клавиш) и поворота ( и клавиш) объектов. Перемещения и масштаб по умолчанию — 2 пикселя; с Shift, вы переместитесь в 10 раз больше. и
масштабировать до 200% или 50% от оригинала соответственно. По умолчанию угол поворота составляет 15 градусов; с , вы поворачиваетесь на 90 градусов.
Ctrl+>Ctrl+<Ctrl

Однако, пожалуй, наиболее полезными являются преобразования размера пикселя , вызываемые с помощью Altключей преобразования. Например,

выделение переместится на 1
пиксель экрана (т.е. на пиксель на вашем мониторе). Это означает, что если вы увеличиваете масштаб, вы можете перемещать объекты с очень высокой точностью, если используете сочетание клавиш. И наоборот, когда вы уменьшаете масштаб, точность будет ниже при использовании клавиши. Используя разные уровни масштабирования, вы можете варьировать степень точности, необходимую для вашей текущей задачи.
Alt+arrowsAltAlt

Аналогичным образом , и

масштабировать выбор так ,
чтобы его видимый размер изменяется на один пиксель экрана, а
также
и

повернуть его так ,
чтобы его самые дальние от-центра-точка перемещается на один пиксель экрана.
Alt+>Alt+<Alt+Alt+

Примечание. Пользователи Linux могут не получить ожидаемых результатов с

помощью комбинации клавиш и некоторых других клавиш, если их оконный менеджер улавливает эти ключевые события до того, как они достигнут приложения Inkscape (и вместо этого использует его для таких вещей, как переключение рабочих пространств).
Одним из решений может быть соответствующее изменение конфигурации диспетчера окон.
Alt+arrow

Creating and managing documents

To create a new empty document, use
FileNew or press
Ctrl+N. To create a new document from
one of Inkscape’s many templates, use FileNew from
Template…
or press
Ctrl+Alt+N.

To open an existing SVG document, use
FileOpen
(Ctrl+O). To save, use
FileSave
(Ctrl+S), or
FileSave As
(Shift+Ctrl+S)
to save under a new name. (While Inkscape comes with its Autosave feature enabled, it is still recommended that
you follow the best practice to “save early, save often“.)

Inkscape uses the SVG (Scalable Vector Graphics) format for its files. SVG is an open standard widely supported
by graphic software. SVG files are based on XML and can be edited with any text or XML editor (apart from
Inkscape, that is). Besides SVG, Inkscape can import and export many other file formats. You can find lists of
the supported file formats in the Save and Import dialogs.

Inkscape opens a separate document window for each document. You can navigate among them using your window
manager (e.g. by Alt+Tab), or you can use
the Inkscape shortcut, Ctrl+Tab, which
will cycle through all open document windows. (Create a new document now and switch between it and this document
for practice.) Note: Inkscape treats these windows like tabs in a web browser, this means the
Ctrl+Tab shortcut only works with
documents running in the same process. If you open multiple files from a file browser or launch more than one
Inkscape process from an icon it will not work.

Improvements

Command line usage

Three new command line options controlling page size are supported when exporting in SVG format:

  • (feature requests in bug # 1597921 and bug # 1722844 )
  • while using

Text tool

Support for switching between RTL and LTR writing directions has been added.

(On narrow screens, find it by unfolding the overhang menu for the text tool’s tool controls by clicking on the triangle at the far right.)

Circle/ellipse/arc tool

New fields for setting vertical/horizontal radius (Rx/Ry) were added to the tool controls bar.
(Bug # 1181127, Ellipse control bar should include Rx, Ry, or width and height )

PDF+LaTeX export

Support for multi-line text with basic support for line-spacing attribute was added. (Bug # 771959 )

Please note:

  • Currently only the line-spacing of the top level text element is considered, i.e. all lines in one text element share the same line spacing.
  • LaTeX is much more clever with respect to line spacing, so layout might not always be exactly the same as in Inkscape.
  • Make sure to use a continuously scalable font in LaTeX, otherwise results might be unexpected .

Performance: New preferences option

A new option called «Rendering tile multiplier» was added under Rendering preferences. It can adjust the size of rendering tiles (tiles are portions of canvas area that are calculated in one go). Rendering larger areas with complex content at once requires more computational time, but modern computers come with powerful hardware and many should be up to the task.

Making this value larger can speed up drawing, if you have large areas with complex filters in your drawing or work a lot with high zoom levels on filtered objects. Making the value smaller can make zooming and panning in relevant areas faster on low-end hardware (if there are no large filtered areas on the visible part of the canvas).

The new default value makes your screen consist of about four tiles that are rendered independently if you’re not using a hidpi screen (which requires more tiles). A more detailed explanation is available .

Startup Performance

The first start of Inkscape on Windows is much faster now.

This is the result of improvements in fontconfig 2.13.0, a third party library which handles font related tasks for Inkscape. One of the tasks is creating an index of all fonts available on the system which is much faster now. If the new indexing causes any issues (i.e. fonts or glyphs not available that could be used before) make sure to let us know or report the issue directly to the fontconfig project .

Extensions

Extensions on Windows can now make use of Tkinter, without requiring users to install it themselves. Tkinter provides functionality for creating interactive graphical user interfaces. This is used, for example, by the TexText extension that renders mathematical LaTeX formulas to SVG (feature request at bug # 1735451 ).

Z-order

The term z-order refers to the stacking order of objects in a drawing, i.e. to which
objects are on top of other objects, and cover them, so the bottom objects are not (completely) visible. The two
commands in the Object menu, Raise to Top (the
Home key) and Lower to Bottom (the End key), will
move your selected objects to the very top or very bottom of the current layer’s z-order. Two more commands,
Raise (PgUp) and Lower
(PgDn), will sink or emerge the selection one step only, i.e. move it past
one non-selected object in z-order (only objects that overlap the selection count, based on their respective
bounding boxes).

Practice using these commands by reversing the z-order of the objects below, so that the leftmost ellipse is on
top and the rightmost one is at the bottom:

A very useful selection shortcut is the Tab key. If nothing is selected, it selects the
bottommost object; otherwise it selects the object above the selected object(s) in z-order.
Shift+Tab works in reverse, starting from
the topmost object and proceeding downwards. Since the objects you create are added to the top of the stack,
pressing Shift+Tab with nothing selected
will conveniently select the object you created last. Practice the Tab and
Shift+Tab keys on the stack of ellipses
above.

Интерполяция между двумя различными объектами

При интерполяции двух различных объектов программа изменяет форму контура одного объекта в форму контура другого. В результате этого вы получаете промежуточные изменения между объектами, регулярность которых определяется значением шагов интерполяции.

Например, возьмём следующие два объекта:

Теперь выделите два объекта и запустите интерполяцию. Результат должен быть примерно такой:

Как видно из приведённого выше результата, пространство между кругом и треугольником заполнено 6-ю объектами, приближающими форму одного контура к другому.

Когда расширение Интерполяция используется для двух различных объектов, важно положение начального узла каждого объекта. Чтобы найти начальный узел для объекта, выделите объект, затем выберите инструмент Узлы так, чтобы узлы появились и нажмите TAB

Первый выделенный узел является начальным узлом этого объекта.

Посмотрите на изображение ниже. Оно идентично предыдущему примеру, за исключением отображения узловых точек. Зелёный узел на каждом объекте — начальный.

Предыдущий пример (см. снова ниже) был создан, исходя из данных положений начального узла.

Теперь обратите внимание на изменение результата интерполяции, если начальный узел контура треугольника находится в другой позиции:

Ellipses

The Ellipse tool (F5) can create ellipses and circles, which you can turn into segments or
arcs. The drawing shortcuts are the same as those of the rectangle tool:

  • With Ctrl, draw a circle or an integer-ratio (2:1, 3:1, etc.) ellipse.

  • With Shift, draw around the starting point as center.

Let’s explore the handles of an ellipse. Select this one:

Once again, you see three handles initially, but in fact they are four. The rightmost handle is two overlapping
handles that let you “open” the ellipse. Drag that rightmost
handle, then drag the other handle which becomes visible under it, to get a variety of pie-chart segments or
arcs:

To get a segment (an arc plus two radii), drag outside the ellipse;
to get an arc, drag inside it. Above, there are 4 segments on the
left and 3 arcs on the right. Note that arcs are unclosed shapes, i.e. the stroke only goes along the ellipse
but does not connect the ends of the arc. You can make this obvious if you remove the fill, leaving only stroke:

Note the fan-like group of narrow segments on the left. It was easy to create using angle
snapping of the handle with Ctrl. Here are the arc/segment
handle shortcuts:

  • With Ctrl, snap the handle every 15 degrees when dragging.

  • Shift+click to
    make the ellipse whole (not arc or segment).

The snap angle can be changed in Inkscape Preferences (in
BehaviorSteps).

The other two handles of the ellipse are used for resizing it around its center. Their shortcuts are similar to
those of the rounding handles of a rectangle:

  • Drag with Ctrl to make a
    circle (make the other radius the same).

  • Ctrl+click
    to make a circle without dragging.

And, like the rectangle resize handles, these ellipse handles adjust the height and width of the ellipse in
the ellipse’s own coordinates. This means that a rotated or skewed ellipse can easily be
stretched or squeezed along its original axes while remaining rotated or skewed. Try to resize any of these
ellipses by their resize handles:

Bug fixes

General

  • Copy-Paste:

    • A long-standing, very annoying bug where, when copying an object to the clipboard while also running certain other programs on Linux desktops (mainly clipboard managers), caused multiple export extension dialogs to open, has been fixed, so you can now again use your favorite clipboard manager while also using Inkscape (Commit fe7c68, Bug #575)
    • When copy-pasting some items along with their originals/frames/paths (clones, text-on-path, text-in-a-shape, linked offsets), they are no longer displaced in relation to the pasted original (Commit b93f21, Bug #853)
  • Stroke to Path: Converting an object’s stroke to a path no longer makes its clones vanish (Bug #1120)
  • Performance: Improved rendering performance when zooming through multiple zoom levels (Commit 28e21e)
  • CSS: CSS classes that start with a letter that isn’t part of the ASCII set are no longer ignored (Bug #1094)
  • Cleanup: An outdated link that pointed to a potentially offensive website now has been removed from a branding document (Commit 88efa4)
  • User interface: Random actions should no longer cause sudden scaling of the canvas (Commit 49fc36)
  • Markers: When adding a marker to a line, it can now be removed with a single Undo action again (not two) (Commit 179fe9, Bug #2130)

macOS

  • Performance: Packaging has been updated for macOS, which removes a performance regression in Inkscape 1.0.1 (Commit 643286)
  • Icons: File system icons look correct again now (Commit 643286, Bug #1893)
  • Export: PDF export no longer produces unprintable PDF files (Bug #827, Commit 643286)

Circle Tool

  • Arcs from Inkscape files created with versions older than 1.0 are no longer rendered as slices (Bug #1900)
  • When dragging on an ellipse’s handles inside the ellipse to create an arc, Inkscape no longer renders it as a closed slice (Commit def938)

Eraser Tool

A long-standing issue with the Eraser tool painting red lines instead of erasing as soon as the user has interacted with a menu or dialog or another user interface element has been fixed (Bug #2068, Commit 2057bf)

Selectors and CSS dialog

In addition to multiple crash fixes (see below), the dialog now correctly recognizes style tags inside the documents defs section (Commit 12f4d6, Bug #905)

Text

  • A series of related bugs with text objects was fixed (MR #2434).
    All of the affected actions required a text object to behave like a path, but it behaved like a group, and the action failed. This series of bugs mostly affected new users who were following tutorials which did not work as expected.
    Specifically, the following actions now work again:

    • A text object unioned with itself results in a single path again.
    • Text objects can again be used with other objects in all Boolean operations.
    • Text objects can again be inset and outset.
    • Text objects can again be used to create a Dynamic Offset or a Linked Offset.
  • The font preview sample now contains the correct currency symbols €¢ (instead of \342\202\254\302\242). One needs to reset the preferences to see the updated font sample text (MR #2547).
  • Custom font folders are found now and taken into account, even when the installed Pango version is newer than 1.44.7 (Bug #1977, Commit 1771fa)

Создание и управление документами

Чтобы создать новый пустой документ, используйте

или нажмите
. Чтобы создать новый документ из одного из множества шаблонов Inkscape, используйте
или нажмите .
FileNewCtrl+NFileNew from
Template…
Ctrl+Alt+N

Чтобы открыть существующий документ SVG, используйте

(
). Для сохранения используйте

(
) или
( ), чтобы сохранить под новым именем. (Несмотря на то, что Inkscape поставляется с включенной функцией автосохранения, все же рекомендуется следовать передовой практике «сохранять раньше, сохранять часто».)
FileOpenCtrl+OFileSaveCtrl+SFileSave
As
Shift+Ctrl+S

Inkscape использует для своих файлов формат SVG (масштабируемая векторная графика). SVG — это открытый стандарт, широко поддерживаемый графическим программным обеспечением. Файлы SVG основаны на XML и могут редактироваться с помощью любого текстового или XML-редактора (кроме Inkscape, то есть). Помимо SVG, Inkscape может импортировать и экспортировать файлы многих других форматов. Вы можете найти списки поддерживаемых форматов файлов в
Saveи Import
диалогах.

Inkscape открывает отдельное окно для каждого документа. Вы можете перемещаться между ними, используя ваш оконный менеджер (например, с помощью ), или вы можете использовать ярлык Inkscape , который будет циклически перемещаться по всем открытым окнам документов. (Создайте новый документ и переключайтесь между ним и этим документом для практики.) Примечание. Inkscape обрабатывает эти окна как вкладки в веб-браузере, это означает, что ярлык работает только с документами, выполняемыми в одном процессе. Если вы откроете несколько файлов из файлового браузера или запустите более одного процесса Inkscape с помощью значка, это не сработает.Alt+TabCtrl+TabCtrl+Tab

Втягивание и вытягивание

Inkscape can expand and contract shapes not only by scaling, but also by offsetting an
object’s path, i.e. by displacing it perpendicular to the path in each point. The corresponding commands are
called Inset
(Ctrl+() and
Outset
(Ctrl+)). Shown below is the original
path (red) and a number of paths inset or outset from that original:

The plain Inset and Outset commands produce paths
(converting the original object to path if it’s not a path yet). Often, more convenient is the
Dynamic Offset
(Ctrl+J) which creates an object with a
draggable handle (similar to a shape’s handle) controlling the offset distance. Select the object below, switch
to the node tool, and drag its handle to get an idea:

Подобный объект с динамической втяжкой запоминает изначальный контур, так что не бойтесь — он не «поломается» от ваших смещений. Если вам больше не нужно, чтобы объект был корректируем, вы всегда можете преобразовать его обратно в контур.

Ещё одна удобная команда — это «Связанная втяжка», которая схожа с динамической, но отличается тем, что связанные контуры остаются редактируемыми. Вы можете иметь сколь угодно большое количество связанных втяжек от одного исходного контура. Ниже показан контур-источник (красный), одна из привязанных втяжек имеет чёрную обводку без заливки, другая — чёрную заливку без обводки.

Select the red object and node-edit it; watch how both linked offsets respond. Now select any of the offsets and
drag its handle to adjust the offset radius. Finally, notehow you can move or transform the offset objects independently without losing their connection with the source.

Grouping

Several objects can be combined into a group. A group behaves as a single object when you
drag or transform it. Below, the three objects on the left are independent; the same three objects on the right
are grouped. Try to drag the group.

To create a group, select one or more objects and press
Ctrl+G. To ungroup one or more groups,
select them and press Ctrl+U. These
actions are also accessible by right click, the
Object menu, or the Commands bar. Groups themselves may be grouped, just like any other
objects; such nested groups may go down to arbitrary depth. However,
Ctrl+U only ungroups the topmost level
of grouping in a selection; you’ll need to press
Ctrl+U repeatedly if you want to
completely ungroup a deep group-in-group (or use
ExtensionsArrangeDeep
Ungroup
).

You don’t necessarily have to ungroup, however, if you want to edit an object within a group. Just
Ctrl+click that
object and it will be selected and editable alone, or
Shift+Ctrl+click
several objects (inside or outside any groups) for multiple selection regardless of grouping.

You can also double-click on a group, to enter it and access all the
objects inside without ungrouping. Double-click on any empty canvas area
to leave the group again.

Try to move or transform the individual shapes in the group (above right) without ungrouping it, then deselect
and select the group normally to see that it still remains grouped.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *